From b5b63552ff48ceb440a8dac590628ffe4e5e5751 Mon Sep 17 00:00:00 2001 From: Thomas Voss Date: Sat, 6 Apr 2024 13:06:21 +0200 Subject: Add uprop_get_nv() --- gen/data-files | 1 + gen/prop/nv | 63 ++ include/__bsearch.h | 55 +- include/unicode/prop.h | 1 + lib/unicode/prop/uprop_get_nv.c | 1963 +++++++++++++++++++++++++++++++++++++++ 5 files changed, 2046 insertions(+), 37 deletions(-) create mode 100755 gen/prop/nv create mode 100644 lib/unicode/prop/uprop_get_nv.c diff --git a/gen/data-files b/gen/data-files index 3c0d9e3..a3df9f3 100755 --- a/gen/data-files +++ b/gen/data-files @@ -12,6 +12,7 @@ DerivedCoreProperties.txt DerivedNormalizationProps.txt emoji/emoji-data.txt extracted/DerivedBinaryProperties.txt +extracted/DerivedNumericValues.txt PropList.txt UnicodeData.txt ' diff --git a/gen/prop/nv b/gen/prop/nv new file mode 100755 index 0000000..713ea40 --- /dev/null +++ b/gen/prop/nv @@ -0,0 +1,63 @@ +#!/bin/sh + +set -e +cd "${0%/*}/../.." +exec >lib/unicode/prop/uprop_get_nv.c + +gawk ' +BEGIN { + FS = "( *#.*| +; +)" + + print "/* This file is autogenerated by gen/prop/nv; DO NOT EDIT. */" + print "" + print "#include " + print "" + print "#include \"__bsearch.h\"" + print "#include \"macros.h\"" + print "#include \"rune.h\"" + print "#include \"unicode/prop.h\"" + print "" +} + +/^[^#]/ { + n = split($1, a, /\.\./) + lo = strtonum("0X" a[1]) + hi = strtonum("0X" a[n]) + + for (i = lo; i <= hi; i++) { + gsub(/^; /, "", $3) + props[i] = $3 + } +} + +END { + print "static constexpr double lookup_lat1[] = {" + for (i = 0; i < 0x100; i++) { + if (i % 8 == 0) + printf "\t" + printf "%3s,%s", props[i] ? props[i] : "NAN", i % 8 == 7 ? "\n" : " " + } + print "};" + print "" + print "static const struct {" + print "\trune k;" + print "\tdouble v;" + print "} lookup[] = {" + + for (i = 0x100; i <= 0x10FFFF; i++) { + if (!props[i]) + continue + printf "\t{RUNE_C(0x%06X), %s},\n", i, props[i] + } + + print "};" + print "" + print "__MLIB_DEFINE_BSEARCH_KV(double, lookup, NAN)" + print "" + print "double" + print "uprop_get_nv(rune ch)" + print "{" + print "\treturn ch < lengthof(lookup_lat1) ? lookup_lat1[ch] : mlib_lookup_kv(ch);" + print "}" +} +' data/DerivedNumericValues.txt diff --git a/include/__bsearch.h b/include/__bsearch.h index 36dc6f3..6abcff6 100644 --- a/include/__bsearch.h +++ b/include/__bsearch.h @@ -40,40 +40,21 @@ return false; \ } -// [[gnu::always_inline]] static TYPE -// lookup(rune ch) -// { -// ptrdiff_t i, lo, hi; -// -// #ifdef LATIN1_TABLE -// if (ch <= LATIN1_MAX) -// return LATIN1_TABLE[ch]; -// #endif -// if (ch >= lengthof(TABLE)) -// return DEFAULT; -// -// lo = 0; -// hi = lengthof(TABLE) - 1; -// -// #ifdef INITIAL_INDEX -// i = INITIAL_INDEX; -// #else -// i = (lo + hi) / 2; -// #endif -// -// do { -// if (ch < TABLE[i].LO) -// hi = i - 1; -// else if (ch > TABLE[i].HI) -// lo = i + 1; -// else -// #if HAS_VALUE -// return TABLE[i].val; -// #else -// return true; -// #endif -// i = (lo + hi) / 2; -// } while (lo <= hi); -// -// return DEFAULT; -// } +#define __MLIB_DEFINE_BSEARCH_KV(TYPE, TABLE, DEFAULT) \ + static TYPE mlib_lookup_kv(rune ch) \ + { \ + ptrdiff_t i, lo, hi; \ + lo = 0; \ + hi = lengthof(TABLE) - 1; \ + i = (lo + hi) / 2; \ + do { \ + if (ch < TABLE[i].k) \ + hi = i - 1; \ + else if (ch > TABLE[i].k) \ + lo = i + 1; \ + else \ + return TABLE[i].v; \ + i = (lo + hi) / 2; \ + } while (lo <= hi); \ + return DEFAULT; \ + } diff --git a/include/unicode/prop.h b/include/unicode/prop.h index 74ffdf9..25bffe7 100644 --- a/include/unicode/prop.h +++ b/include/unicode/prop.h @@ -48,6 +48,7 @@ enum [[clang::flag_enum]] uprop_gc : uint_fast32_t { GC_Z = GC_ZL | GC_ZP | GC_ZS, /* Separator */ }; +[[__nodiscard__, __unsequenced__]] double uprop_get_nv(rune); [[__nodiscard__, __unsequenced__]] enum uprop_gc uprop_get_gc(rune); /* PROP PREDICATES START */ diff --git a/lib/unicode/prop/uprop_get_nv.c b/lib/unicode/prop/uprop_get_nv.c new file mode 100644 index 0000000..240ea1c --- /dev/null +++ b/lib/unicode/prop/uprop_get_nv.c @@ -0,0 +1,1963 @@ +/* This file is autogenerated by gen/prop/nv; DO NOT EDIT. */ + +#include + +#include "__bsearch.h" +#include "macros.h" +#include "rune.h" +#include "unicode/prop.h" + +static constexpr double lookup_lat1[] = { + NAN, NAN, NAN, NAN, NAN, NAN, NAN, NAN, + NAN, NAN, NAN, NAN, NAN, NAN, NAN, NAN, + NAN, NAN, NAN, NAN, NAN, NAN, NAN, NAN, + NAN, NAN, NAN, NAN, NAN, NAN, NAN, NAN, + NAN, NAN, NAN, NAN, NAN, NAN, NAN, NAN, + NAN, NAN, NAN, NAN, NAN, NAN, NAN, NAN, + 0, 1, 2, 3, 4, 5, 6, 7, + 8, 9, NAN, NAN, NAN, NAN, NAN, NAN, + NAN, NAN, NAN, NAN, NAN, NAN, NAN, NAN, + NAN, NAN, NAN, NAN, NAN, NAN, NAN, NAN, + NAN, NAN, NAN, NAN, NAN, NAN, NAN, NAN, + NAN, NAN, NAN, NAN, NAN, NAN, NAN, NAN, + NAN, NAN, NAN, NAN, NAN, NAN, NAN, NAN, + NAN, NAN, NAN, NAN, NAN, NAN, NAN, NAN, + NAN, NAN, NAN, NAN, NAN, NAN, NAN, NAN, + NAN, NAN, NAN, NAN, NAN, NAN, NAN, NAN, + NAN, NAN, NAN, NAN, NAN, NAN, NAN, NAN, + NAN, NAN, NAN, NAN, NAN, NAN, NAN, NAN, + NAN, NAN, NAN, NAN, NAN, NAN, NAN, NAN, + NAN, NAN, NAN, NAN, NAN, NAN, NAN, NAN, + NAN, NAN, NAN, NAN, NAN, NAN, NAN, NAN, + NAN, NAN, NAN, NAN, NAN, NAN, NAN, NAN, + NAN, NAN, 2, 3, NAN, NAN, NAN, NAN, + NAN, 1, NAN, NAN, 1/4, 1/2, 3/4, NAN, + NAN, NAN, NAN, NAN, NAN, NAN, NAN, NAN, + NAN, NAN, NAN, NAN, NAN, NAN, NAN, NAN, + NAN, NAN, NAN, NAN, NAN, NAN, NAN, NAN, + NAN, NAN, NAN, NAN, NAN, NAN, NAN, NAN, + NAN, NAN, NAN, NAN, NAN, NAN, NAN, NAN, + NAN, NAN, NAN, NAN, NAN, NAN, NAN, NAN, + NAN, NAN, NAN, NAN, NAN, NAN, NAN, NAN, + NAN, NAN, NAN, NAN, NAN, NAN, NAN, NAN, +}; + +static const struct { + rune k; + double v; +} lookup[] = { + {RUNE_C(0x000660), 0}, + {RUNE_C(0x000661), 1}, + {RUNE_C(0x000662), 2}, + {RUNE_C(0x000663), 3}, + {RUNE_C(0x000664), 4}, + {RUNE_C(0x000665), 5}, + {RUNE_C(0x000666), 6}, + {RUNE_C(0x000667), 7}, + {RUNE_C(0x000668), 8}, + {RUNE_C(0x000669), 9}, + {RUNE_C(0x0006F0), 0}, + {RUNE_C(0x0006F1), 1}, + {RUNE_C(0x0006F2), 2}, + {RUNE_C(0x0006F3), 3}, + {RUNE_C(0x0006F4), 4}, + {RUNE_C(0x0006F5), 5}, + {RUNE_C(0x0006F6), 6}, + {RUNE_C(0x0006F7), 7}, + {RUNE_C(0x0006F8), 8}, + {RUNE_C(0x0006F9), 9}, + {RUNE_C(0x0007C0), 0}, + {RUNE_C(0x0007C1), 1}, + {RUNE_C(0x0007C2), 2}, + {RUNE_C(0x0007C3), 3}, + {RUNE_C(0x0007C4), 4}, + {RUNE_C(0x0007C5), 5}, + {RUNE_C(0x0007C6), 6}, + {RUNE_C(0x0007C7), 7}, + {RUNE_C(0x0007C8), 8}, + {RUNE_C(0x0007C9), 9}, + {RUNE_C(0x000966), 0}, + {RUNE_C(0x000967), 1}, + {RUNE_C(0x000968), 2}, + {RUNE_C(0x000969), 3}, + {RUNE_C(0x00096A), 4}, + {RUNE_C(0x00096B), 5}, + {RUNE_C(0x00096C), 6}, + {RUNE_C(0x00096D), 7}, + {RUNE_C(0x00096E), 8}, + {RUNE_C(0x00096F), 9}, + {RUNE_C(0x0009E6), 0}, + {RUNE_C(0x0009E7), 1}, + {RUNE_C(0x0009E8), 2}, + {RUNE_C(0x0009E9), 3}, + {RUNE_C(0x0009EA), 4}, + {RUNE_C(0x0009EB), 5}, + {RUNE_C(0x0009EC), 6}, + {RUNE_C(0x0009ED), 7}, + {RUNE_C(0x0009EE), 8}, + {RUNE_C(0x0009EF), 9}, + {RUNE_C(0x0009F4), 1/16}, + {RUNE_C(0x0009F5), 1/8}, + {RUNE_C(0x0009F6), 3/16}, + {RUNE_C(0x0009F7), 1/4}, + {RUNE_C(0x0009F8), 3/4}, + {RUNE_C(0x0009F9), 16}, + {RUNE_C(0x000A66), 0}, + {RUNE_C(0x000A67), 1}, + {RUNE_C(0x000A68), 2}, + {RUNE_C(0x000A69), 3}, + {RUNE_C(0x000A6A), 4}, + {RUNE_C(0x000A6B), 5}, + {RUNE_C(0x000A6C), 6}, + {RUNE_C(0x000A6D), 7}, + {RUNE_C(0x000A6E), 8}, + {RUNE_C(0x000A6F), 9}, + {RUNE_C(0x000AE6), 0}, + {RUNE_C(0x000AE7), 1}, + {RUNE_C(0x000AE8), 2}, + {RUNE_C(0x000AE9), 3}, + {RUNE_C(0x000AEA), 4}, + {RUNE_C(0x000AEB), 5}, + {RUNE_C(0x000AEC), 6}, + {RUNE_C(0x000AED), 7}, + {RUNE_C(0x000AEE), 8}, + {RUNE_C(0x000AEF), 9}, + {RUNE_C(0x000B66), 0}, + {RUNE_C(0x000B67), 1}, + {RUNE_C(0x000B68), 2}, + {RUNE_C(0x000B69), 3}, + {RUNE_C(0x000B6A), 4}, + {RUNE_C(0x000B6B), 5}, + {RUNE_C(0x000B6C), 6}, + {RUNE_C(0x000B6D), 7}, + {RUNE_C(0x000B6E), 8}, + {RUNE_C(0x000B6F), 9}, + {RUNE_C(0x000B72), 1/4}, + {RUNE_C(0x000B73), 1/2}, + {RUNE_C(0x000B74), 3/4}, + {RUNE_C(0x000B75), 1/16}, + {RUNE_C(0x000B76), 1/8}, + {RUNE_C(0x000B77), 3/16}, + {RUNE_C(0x000BE6), 0}, + {RUNE_C(0x000BE7), 1}, + {RUNE_C(0x000BE8), 2}, + {RUNE_C(0x000BE9), 3}, + {RUNE_C(0x000BEA), 4}, + {RUNE_C(0x000BEB), 5}, + {RUNE_C(0x000BEC), 6}, + {RUNE_C(0x000BED), 7}, + {RUNE_C(0x000BEE), 8}, + {RUNE_C(0x000BEF), 9}, + {RUNE_C(0x000BF0), 10}, + {RUNE_C(0x000BF1), 100}, + {RUNE_C(0x000BF2), 1000}, + {RUNE_C(0x000C66), 0}, + {RUNE_C(0x000C67), 1}, + {RUNE_C(0x000C68), 2}, + {RUNE_C(0x000C69), 3}, + {RUNE_C(0x000C6A), 4}, + {RUNE_C(0x000C6B), 5}, + {RUNE_C(0x000C6C), 6}, + {RUNE_C(0x000C6D), 7}, + {RUNE_C(0x000C6E), 8}, + {RUNE_C(0x000C6F), 9}, + {RUNE_C(0x000C78), 0}, + {RUNE_C(0x000C79), 1}, + {RUNE_C(0x000C7A), 2}, + {RUNE_C(0x000C7B), 3}, + {RUNE_C(0x000C7C), 1}, + {RUNE_C(0x000C7D), 2}, + {RUNE_C(0x000C7E), 3}, + {RUNE_C(0x000CE6), 0}, + {RUNE_C(0x000CE7), 1}, + {RUNE_C(0x000CE8), 2}, + {RUNE_C(0x000CE9), 3}, + {RUNE_C(0x000CEA), 4}, + {RUNE_C(0x000CEB), 5}, + {RUNE_C(0x000CEC), 6}, + {RUNE_C(0x000CED), 7}, + {RUNE_C(0x000CEE), 8}, + {RUNE_C(0x000CEF), 9}, + {RUNE_C(0x000D58), 1/160}, + {RUNE_C(0x000D59), 1/40}, + {RUNE_C(0x000D5A), 3/80}, + {RUNE_C(0x000D5B), 1/20}, + {RUNE_C(0x000D5C), 1/10}, + {RUNE_C(0x000D5D), 3/20}, + {RUNE_C(0x000D5E), 1/5}, + {RUNE_C(0x000D66), 0}, + {RUNE_C(0x000D67), 1}, + {RUNE_C(0x000D68), 2}, + {RUNE_C(0x000D69), 3}, + {RUNE_C(0x000D6A), 4}, + {RUNE_C(0x000D6B), 5}, + {RUNE_C(0x000D6C), 6}, + {RUNE_C(0x000D6D), 7}, + {RUNE_C(0x000D6E), 8}, + {RUNE_C(0x000D6F), 9}, + {RUNE_C(0x000D70), 10}, + {RUNE_C(0x000D71), 100}, + {RUNE_C(0x000D72), 1000}, + {RUNE_C(0x000D73), 1/4}, + {RUNE_C(0x000D74), 1/2}, + {RUNE_C(0x000D75), 3/4}, + {RUNE_C(0x000D76), 1/16}, + {RUNE_C(0x000D77), 1/8}, + {RUNE_C(0x000D78), 3/16}, + {RUNE_C(0x000DE6), 0}, + {RUNE_C(0x000DE7), 1}, + {RUNE_C(0x000DE8), 2}, + {RUNE_C(0x000DE9), 3}, + {RUNE_C(0x000DEA), 4}, + {RUNE_C(0x000DEB), 5}, + {RUNE_C(0x000DEC), 6}, + {RUNE_C(0x000DED), 7}, + {RUNE_C(0x000DEE), 8}, + {RUNE_C(0x000DEF), 9}, + {RUNE_C(0x000E50), 0}, + {RUNE_C(0x000E51), 1}, + {RUNE_C(0x000E52), 2}, + {RUNE_C(0x000E53), 3}, + {RUNE_C(0x000E54), 4}, + {RUNE_C(0x000E55), 5}, + {RUNE_C(0x000E56), 6}, + {RUNE_C(0x000E57), 7}, + {RUNE_C(0x000E58), 8}, + {RUNE_C(0x000E59), 9}, + {RUNE_C(0x000ED0), 0}, + {RUNE_C(0x000ED1), 1}, + {RUNE_C(0x000ED2), 2}, + {RUNE_C(0x000ED3), 3}, + {RUNE_C(0x000ED4), 4}, + {RUNE_C(0x000ED5), 5}, + {RUNE_C(0x000ED6), 6}, + {RUNE_C(0x000ED7), 7}, + {RUNE_C(0x000ED8), 8}, + {RUNE_C(0x000ED9), 9}, + {RUNE_C(0x000F20), 0}, + {RUNE_C(0x000F21), 1}, + {RUNE_C(0x000F22), 2}, + {RUNE_C(0x000F23), 3}, + {RUNE_C(0x000F24), 4}, + {RUNE_C(0x000F25), 5}, + {RUNE_C(0x000F26), 6}, + {RUNE_C(0x000F27), 7}, + {RUNE_C(0x000F28), 8}, + {RUNE_C(0x000F29), 9}, + {RUNE_C(0x000F2A), 1/2}, + {RUNE_C(0x000F2B), 3/2}, + {RUNE_C(0x000F2C), 5/2}, + {RUNE_C(0x000F2D), 7/2}, + {RUNE_C(0x000F2E), 9/2}, + {RUNE_C(0x000F2F), 11/2}, + {RUNE_C(0x000F30), 13/2}, + {RUNE_C(0x000F31), 15/2}, + {RUNE_C(0x000F32), 17/2}, + {RUNE_C(0x000F33), -1/2}, + {RUNE_C(0x001040), 0}, + {RUNE_C(0x001041), 1}, + {RUNE_C(0x001042), 2}, + {RUNE_C(0x001043), 3}, + {RUNE_C(0x001044), 4}, + {RUNE_C(0x001045), 5}, + {RUNE_C(0x001046), 6}, + {RUNE_C(0x001047), 7}, + {RUNE_C(0x001048), 8}, + {RUNE_C(0x001049), 9}, + {RUNE_C(0x001090), 0}, + {RUNE_C(0x001091), 1}, + {RUNE_C(0x001092), 2}, + {RUNE_C(0x001093), 3}, + {RUNE_C(0x001094), 4}, + {RUNE_C(0x001095), 5}, + {RUNE_C(0x001096), 6}, + {RUNE_C(0x001097), 7}, + {RUNE_C(0x001098), 8}, + {RUNE_C(0x001099), 9}, + {RUNE_C(0x001369), 1}, + {RUNE_C(0x00136A), 2}, + {RUNE_C(0x00136B), 3}, + {RUNE_C(0x00136C), 4}, + {RUNE_C(0x00136D), 5}, + {RUNE_C(0x00136E), 6}, + {RUNE_C(0x00136F), 7}, + {RUNE_C(0x001370), 8}, + {RUNE_C(0x001371), 9}, + {RUNE_C(0x001372), 10}, + {RUNE_C(0x001373), 20}, + {RUNE_C(0x001374), 30}, + {RUNE_C(0x001375), 40}, + {RUNE_C(0x001376), 50}, + {RUNE_C(0x001377), 60}, + {RUNE_C(0x001378), 70}, + {RUNE_C(0x001379), 80}, + {RUNE_C(0x00137A), 90}, + {RUNE_C(0x00137B), 100}, + {RUNE_C(0x00137C), 10000}, + {RUNE_C(0x0016EE), 17}, + {RUNE_C(0x0016EF), 18}, + {RUNE_C(0x0016F0), 19}, + {RUNE_C(0x0017E0), 0}, + {RUNE_C(0x0017E1), 1}, + {RUNE_C(0x0017E2), 2}, + {RUNE_C(0x0017E3), 3}, + {RUNE_C(0x0017E4), 4}, + {RUNE_C(0x0017E5), 5}, + {RUNE_C(0x0017E6), 6}, + {RUNE_C(0x0017E7), 7}, + {RUNE_C(0x0017E8), 8}, + {RUNE_C(0x0017E9), 9}, + {RUNE_C(0x0017F0), 0}, + {RUNE_C(0x0017F1), 1}, + {RUNE_C(0x0017F2), 2}, + {RUNE_C(0x0017F3), 3}, + {RUNE_C(0x0017F4), 4}, + {RUNE_C(0x0017F5), 5}, + {RUNE_C(0x0017F6), 6}, + {RUNE_C(0x0017F7), 7}, + {RUNE_C(0x0017F8), 8}, + {RUNE_C(0x0017F9), 9}, + {RUNE_C(0x001810), 0}, + {RUNE_C(0x001811), 1}, + {RUNE_C(0x001812), 2}, + {RUNE_C(0x001813), 3}, + {RUNE_C(0x001814), 4}, + {RUNE_C(0x001815), 5}, + {RUNE_C(0x001816), 6}, + {RUNE_C(0x001817), 7}, + {RUNE_C(0x001818), 8}, + {RUNE_C(0x001819), 9}, + {RUNE_C(0x001946), 0}, + {RUNE_C(0x001947), 1}, + {RUNE_C(0x001948), 2}, + {RUNE_C(0x001949), 3}, + {RUNE_C(0x00194A), 4}, + {RUNE_C(0x00194B), 5}, + {RUNE_C(0x00194C), 6}, + {RUNE_C(0x00194D), 7}, + {RUNE_C(0x00194E), 8}, + {RUNE_C(0x00194F), 9}, + {RUNE_C(0x0019D0), 0}, + {RUNE_C(0x0019D1), 1}, + {RUNE_C(0x0019D2), 2}, + {RUNE_C(0x0019D3), 3}, + {RUNE_C(0x0019D4), 4}, + {RUNE_C(0x0019D5), 5}, + {RUNE_C(0x0019D6), 6}, + {RUNE_C(0x0019D7), 7}, + {RUNE_C(0x0019D8), 8}, + {RUNE_C(0x0019D9), 9}, + {RUNE_C(0x0019DA), 1}, + {RUNE_C(0x001A80), 0}, + {RUNE_C(0x001A81), 1}, + {RUNE_C(0x001A82), 2}, + {RUNE_C(0x001A83), 3}, + {RUNE_C(0x001A84), 4}, + {RUNE_C(0x001A85), 5}, + {RUNE_C(0x001A86), 6}, + {RUNE_C(0x001A87), 7}, + {RUNE_C(0x001A88), 8}, + {RUNE_C(0x001A89), 9}, + {RUNE_C(0x001A90), 0}, + {RUNE_C(0x001A91), 1}, + {RUNE_C(0x001A92), 2}, + {RUNE_C(0x001A93), 3}, + {RUNE_C(0x001A94), 4}, + {RUNE_C(0x001A95), 5}, + {RUNE_C(0x001A96), 6}, + {RUNE_C(0x001A97), 7}, + {RUNE_C(0x001A98), 8}, + {RUNE_C(0x001A99), 9}, + {RUNE_C(0x001B50), 0}, + {RUNE_C(0x001B51), 1}, + {RUNE_C(0x001B52), 2}, + {RUNE_C(0x001B53), 3}, + {RUNE_C(0x001B54), 4}, + {RUNE_C(0x001B55), 5}, + {RUNE_C(0x001B56), 6}, + {RUNE_C(0x001B57), 7}, + {RUNE_C(0x001B58), 8}, + {RUNE_C(0x001B59), 9}, + {RUNE_C(0x001BB0), 0}, + {RUNE_C(0x001BB1), 1}, + {RUNE_C(0x001BB2), 2}, + {RUNE_C(0x001BB3), 3}, + {RUNE_C(0x001BB4), 4}, + {RUNE_C(0x001BB5), 5}, + {RUNE_C(0x001BB6), 6}, + {RUNE_C(0x001BB7), 7}, + {RUNE_C(0x001BB8), 8}, + {RUNE_C(0x001BB9), 9}, + {RUNE_C(0x001C40), 0}, + {RUNE_C(0x001C41), 1}, + {RUNE_C(0x001C42), 2}, + {RUNE_C(0x001C43), 3}, + {RUNE_C(0x001C44), 4}, + {RUNE_C(0x001C45), 5}, + {RUNE_C(0x001C46), 6}, + {RUNE_C(0x001C47), 7}, + {RUNE_C(0x001C48), 8}, + {RUNE_C(0x001C49), 9}, + {RUNE_C(0x001C50), 0}, + {RUNE_C(0x001C51), 1}, + {RUNE_C(0x001C52), 2}, + {RUNE_C(0x001C53), 3}, + {RUNE_C(0x001C54), 4}, + {RUNE_C(0x001C55), 5}, + {RUNE_C(0x001C56), 6}, + {RUNE_C(0x001C57), 7}, + {RUNE_C(0x001C58), 8}, + {RUNE_C(0x001C59), 9}, + {RUNE_C(0x002070), 0}, + {RUNE_C(0x002074), 4}, + {RUNE_C(0x002075), 5}, + {RUNE_C(0x002076), 6}, + {RUNE_C(0x002077), 7}, + {RUNE_C(0x002078), 8}, + {RUNE_C(0x002079), 9}, + {RUNE_C(0x002080), 0}, + {RUNE_C(0x002081), 1}, + {RUNE_C(0x002082), 2}, + {RUNE_C(0x002083), 3}, + {RUNE_C(0x002084), 4}, + {RUNE_C(0x002085), 5}, + {RUNE_C(0x002086), 6}, + {RUNE_C(0x002087), 7}, + {RUNE_C(0x002088), 8}, + {RUNE_C(0x002089), 9}, + {RUNE_C(0x002150), 1/7}, + {RUNE_C(0x002151), 1/9}, + {RUNE_C(0x002152), 1/10}, + {RUNE_C(0x002153), 1/3}, + {RUNE_C(0x002154), 2/3}, + {RUNE_C(0x002155), 1/5}, + {RUNE_C(0x002156), 2/5}, + {RUNE_C(0x002157), 3/5}, + {RUNE_C(0x002158), 4/5}, + {RUNE_C(0x002159), 1/6}, + {RUNE_C(0x00215A), 5/6}, + {RUNE_C(0x00215B), 1/8}, + {RUNE_C(0x00215C), 3/8}, + {RUNE_C(0x00215D), 5/8}, + {RUNE_C(0x00215E), 7/8}, + {RUNE_C(0x00215F), 1}, + {RUNE_C(0x002160), 1}, + {RUNE_C(0x002161), 2}, + {RUNE_C(0x002162), 3}, + {RUNE_C(0x002163), 4}, + {RUNE_C(0x002164), 5}, + {RUNE_C(0x002165), 6}, + {RUNE_C(0x002166), 7}, + {RUNE_C(0x002167), 8}, + {RUNE_C(0x002168), 9}, + {RUNE_C(0x002169), 10}, + {RUNE_C(0x00216A), 11}, + {RUNE_C(0x00216B), 12}, + {RUNE_C(0x00216C), 50}, + {RUNE_C(0x00216D), 100}, + {RUNE_C(0x00216E), 500}, + {RUNE_C(0x00216F), 1000}, + {RUNE_C(0x002170), 1}, + {RUNE_C(0x002171), 2}, + {RUNE_C(0x002172), 3}, + {RUNE_C(0x002173), 4}, + {RUNE_C(0x002174), 5}, + {RUNE_C(0x002175), 6}, + {RUNE_C(0x002176), 7}, + {RUNE_C(0x002177), 8}, + {RUNE_C(0x002178), 9}, + {RUNE_C(0x002179), 10}, + {RUNE_C(0x00217A), 11}, + {RUNE_C(0x00217B), 12}, + {RUNE_C(0x00217C), 50}, + {RUNE_C(0x00217D), 100}, + {RUNE_C(0x00217E), 500}, + {RUNE_C(0x00217F), 1000}, + {RUNE_C(0x002180), 1000}, + {RUNE_C(0x002181), 5000}, + {RUNE_C(0x002182), 10000}, + {RUNE_C(0x002185), 6}, + {RUNE_C(0x002186), 50}, + {RUNE_C(0x002187), 50000}, + {RUNE_C(0x002188), 100000}, + {RUNE_C(0x002189), 0}, + {RUNE_C(0x002460), 1}, + {RUNE_C(0x002461), 2}, + {RUNE_C(0x002462), 3}, + {RUNE_C(0x002463), 4}, + {RUNE_C(0x002464), 5}, + {RUNE_C(0x002465), 6}, + {RUNE_C(0x002466), 7}, + {RUNE_C(0x002467), 8}, + {RUNE_C(0x002468), 9}, + {RUNE_C(0x002469), 10}, + {RUNE_C(0x00246A), 11}, + {RUNE_C(0x00246B), 12}, + {RUNE_C(0x00246C), 13}, + {RUNE_C(0x00246D), 14}, + {RUNE_C(0x00246E), 15}, + {RUNE_C(0x00246F), 16}, + {RUNE_C(0x002470), 17}, + {RUNE_C(0x002471), 18}, + {RUNE_C(0x002472), 19}, + {RUNE_C(0x002473), 20}, + {RUNE_C(0x002474), 1}, + {RUNE_C(0x002475), 2}, + {RUNE_C(0x002476), 3}, + {RUNE_C(0x002477), 4}, + {RUNE_C(0x002478), 5}, + {RUNE_C(0x002479), 6}, + {RUNE_C(0x00247A), 7}, + {RUNE_C(0x00247B), 8}, + {RUNE_C(0x00247C), 9}, + {RUNE_C(0x00247D), 10}, + {RUNE_C(0x00247E), 11}, + {RUNE_C(0x00247F), 12}, + {RUNE_C(0x002480), 13}, + {RUNE_C(0x002481), 14}, + {RUNE_C(0x002482), 15}, + {RUNE_C(0x002483), 16}, + {RUNE_C(0x002484), 17}, + {RUNE_C(0x002485), 18}, + {RUNE_C(0x002486), 19}, + {RUNE_C(0x002487), 20}, + {RUNE_C(0x002488), 1}, + {RUNE_C(0x002489), 2}, + {RUNE_C(0x00248A), 3}, + {RUNE_C(0x00248B), 4}, + {RUNE_C(0x00248C), 5}, + {RUNE_C(0x00248D), 6}, + {RUNE_C(0x00248E), 7}, + {RUNE_C(0x00248F), 8}, + {RUNE_C(0x002490), 9}, + {RUNE_C(0x002491), 10}, + {RUNE_C(0x002492), 11}, + {RUNE_C(0x002493), 12}, + {RUNE_C(0x002494), 13}, + {RUNE_C(0x002495), 14}, + {RUNE_C(0x002496), 15}, + {RUNE_C(0x002497), 16}, + {RUNE_C(0x002498), 17}, + {RUNE_C(0x002499), 18}, + {RUNE_C(0x00249A), 19}, + {RUNE_C(0x00249B), 20}, + {RUNE_C(0x0024EA), 0}, + {RUNE_C(0x0024EB), 11}, + {RUNE_C(0x0024EC), 12}, + {RUNE_C(0x0024ED), 13}, + {RUNE_C(0x0024EE), 14}, + {RUNE_C(0x0024EF), 15}, + {RUNE_C(0x0024F0), 16}, + {RUNE_C(0x0024F1), 17}, + {RUNE_C(0x0024F2), 18}, + {RUNE_C(0x0024F3), 19}, + {RUNE_C(0x0024F4), 20}, + {RUNE_C(0x0024F5), 1}, + {RUNE_C(0x0024F6), 2}, + {RUNE_C(0x0024F7), 3}, + {RUNE_C(0x0024F8), 4}, + {RUNE_C(0x0024F9), 5}, + {RUNE_C(0x0024FA), 6}, + {RUNE_C(0x0024FB), 7}, + {RUNE_C(0x0024FC), 8}, + {RUNE_C(0x0024FD), 9}, + {RUNE_C(0x0024FE), 10}, + {RUNE_C(0x0024FF), 0}, + {RUNE_C(0x002776), 1}, + {RUNE_C(0x002777), 2}, + {RUNE_C(0x002778), 3}, + {RUNE_C(0x002779), 4}, + {RUNE_C(0x00277A), 5}, + {RUNE_C(0x00277B), 6}, + {RUNE_C(0x00277C), 7}, + {RUNE_C(0x00277D), 8}, + {RUNE_C(0x00277E), 9}, + {RUNE_C(0x00277F), 10}, + {RUNE_C(0x002780), 1}, + {RUNE_C(0x002781), 2}, + {RUNE_C(0x002782), 3}, + {RUNE_C(0x002783), 4}, + {RUNE_C(0x002784), 5}, + {RUNE_C(0x002785), 6}, + {RUNE_C(0x002786), 7}, + {RUNE_C(0x002787), 8}, + {RUNE_C(0x002788), 9}, + {RUNE_C(0x002789), 10}, + {RUNE_C(0x00278A), 1}, + {RUNE_C(0x00278B), 2}, + {RUNE_C(0x00278C), 3}, + {RUNE_C(0x00278D), 4}, + {RUNE_C(0x00278E), 5}, + {RUNE_C(0x00278F), 6}, + {RUNE_C(0x002790), 7}, + {RUNE_C(0x002791), 8}, + {RUNE_C(0x002792), 9}, + {RUNE_C(0x002793), 10}, + {RUNE_C(0x002CFD), 1/2}, + {RUNE_C(0x003007), 0}, + {RUNE_C(0x003021), 1}, + {RUNE_C(0x003022), 2}, + {RUNE_C(0x003023), 3}, + {RUNE_C(0x003024), 4}, + {RUNE_C(0x003025), 5}, + {RUNE_C(0x003026), 6}, + {RUNE_C(0x003027), 7}, + {RUNE_C(0x003028), 8}, + {RUNE_C(0x003029), 9}, + {RUNE_C(0x003038), 10}, + {RUNE_C(0x003039), 20}, + {RUNE_C(0x00303A), 30}, + {RUNE_C(0x003192), 1}, + {RUNE_C(0x003193), 2}, + {RUNE_C(0x003194), 3}, + {RUNE_C(0x003195), 4}, + {RUNE_C(0x003220), 1}, + {RUNE_C(0x003221), 2}, + {RUNE_C(0x003222), 3}, + {RUNE_C(0x003223), 4}, + {RUNE_C(0x003224), 5}, + {RUNE_C(0x003225), 6}, + {RUNE_C(0x003226), 7}, + {RUNE_C(0x003227), 8}, + {RUNE_C(0x003228), 9}, + {RUNE_C(0x003229), 10}, + {RUNE_C(0x003248), 10}, + {RUNE_C(0x003249), 20}, + {RUNE_C(0x00324A), 30}, + {RUNE_C(0x00324B), 40}, + {RUNE_C(0x00324C), 50}, + {RUNE_C(0x00324D), 60}, + {RUNE_C(0x00324E), 70}, + {RUNE_C(0x00324F), 80}, + {RUNE_C(0x003251), 21}, + {RUNE_C(0x003252), 22}, + {RUNE_C(0x003253), 23}, + {RUNE_C(0x003254), 24}, + {RUNE_C(0x003255), 25}, + {RUNE_C(0x003256), 26}, + {RUNE_C(0x003257), 27}, + {RUNE_C(0x003258), 28}, + {RUNE_C(0x003259), 29}, + {RUNE_C(0x00325A), 30}, + {RUNE_C(0x00325B), 31}, + {RUNE_C(0x00325C), 32}, + {RUNE_C(0x00325D), 33}, + {RUNE_C(0x00325E), 34}, + {RUNE_C(0x00325F), 35}, + {RUNE_C(0x003280), 1}, + {RUNE_C(0x003281), 2}, + {RUNE_C(0x003282), 3}, + {RUNE_C(0x003283), 4}, + {RUNE_C(0x003284), 5}, + {RUNE_C(0x003285), 6}, + {RUNE_C(0x003286), 7}, + {RUNE_C(0x003287), 8}, + {RUNE_C(0x003288), 9}, + {RUNE_C(0x003289), 10}, + {RUNE_C(0x0032B1), 36}, + {RUNE_C(0x0032B2), 37}, + {RUNE_C(0x0032B3), 38}, + {RUNE_C(0x0032B4), 39}, + {RUNE_C(0x0032B5), 40}, + {RUNE_C(0x0032B6), 41}, + {RUNE_C(0x0032B7), 42}, + {RUNE_C(0x0032B8), 43}, + {RUNE_C(0x0032B9), 44}, + {RUNE_C(0x0032BA), 45}, + {RUNE_C(0x0032BB), 46}, + {RUNE_C(0x0032BC), 47}, + {RUNE_C(0x0032BD), 48}, + {RUNE_C(0x0032BE), 49}, + {RUNE_C(0x0032BF), 50}, + {RUNE_C(0x003405), 5}, + {RUNE_C(0x003483), 2}, + {RUNE_C(0x00382A), 5}, + {RUNE_C(0x003B4D), 7}, + {RUNE_C(0x004E00), 1}, + {RUNE_C(0x004E03), 7}, + {RUNE_C(0x004E07), 10000}, + {RUNE_C(0x004E09), 3}, + {RUNE_C(0x004E24), 2}, + {RUNE_C(0x004E5D), 9}, + {RUNE_C(0x004E8C), 2}, + {RUNE_C(0x004E94), 5}, + {RUNE_C(0x004E96), 4}, + {RUNE_C(0x004EAC), 10000000000000000}, + {RUNE_C(0x004EBF), 100000000}, + {RUNE_C(0x004EC0), 10}, + {RUNE_C(0x004EDF), 1000}, + {RUNE_C(0x004EE8), 3}, + {RUNE_C(0x004F0D), 5}, + {RUNE_C(0x004F70), 100}, + {RUNE_C(0x004FE9), 2}, + {RUNE_C(0x005006), 2}, + {RUNE_C(0x005104), 100000000}, + {RUNE_C(0x005146), 1000000}, + {RUNE_C(0x005169), 2}, + {RUNE_C(0x00516B), 8}, + {RUNE_C(0x00516D), 6}, + {RUNE_C(0x005341), 10}, + {RUNE_C(0x005343), 1000}, + {RUNE_C(0x005344), 20}, + {RUNE_C(0x005345), 30}, + {RUNE_C(0x00534C), 40}, + {RUNE_C(0x0053C1), 3}, + {RUNE_C(0x0053C2), 3}, + {RUNE_C(0x0053C3), 3}, + {RUNE_C(0x0053C4), 3}, + {RUNE_C(0x0056DB), 4}, + {RUNE_C(0x0058F1), 1}, + {RUNE_C(0x0058F9), 1}, + {RUNE_C(0x005E7A), 1}, + {RUNE_C(0x005EFE), 9}, + {RUNE_C(0x005EFF), 20}, + {RUNE_C(0x005F0C), 1}, + {RUNE_C(0x005F0D), 2}, + {RUNE_C(0x005F0E), 3}, + {RUNE_C(0x005F10), 2}, + {RUNE_C(0x0062D0), 7}, + {RUNE_C(0x0062FE), 10}, + {RUNE_C(0x00634C), 8}, + {RUNE_C(0x0067D2), 7}, + {RUNE_C(0x006D1E), 0}, + {RUNE_C(0x006F06), 7}, + {RUNE_C(0x007396), 9}, + {RUNE_C(0x00767E), 100}, + {RUNE_C(0x007695), 200}, + {RUNE_C(0x0079ED), 1000000000}, + {RUNE_C(0x008086), 4}, + {RUNE_C(0x00842C), 10000}, + {RUNE_C(0x008CAE), 2}, + {RUNE_C(0x008CB3), 2}, + {RUNE_C(0x008D30), 2}, + {RUNE_C(0x00920E), 9}, + {RUNE_C(0x0094A9), 9}, + {RUNE_C(0x009621), 1000}, + {RUNE_C(0x009646), 6}, + {RUNE_C(0x00964C), 100}, + {RUNE_C(0x009678), 6}, + {RUNE_C(0x0096F6), 0}, + {RUNE_C(0x00A620), 0}, + {RUNE_C(0x00A621), 1}, + {RUNE_C(0x00A622), 2}, + {RUNE_C(0x00A623), 3}, + {RUNE_C(0x00A624), 4}, + {RUNE_C(0x00A625), 5}, + {RUNE_C(0x00A626), 6}, + {RUNE_C(0x00A627), 7}, + {RUNE_C(0x00A628), 8}, + {RUNE_C(0x00A629), 9}, + {RUNE_C(0x00A6E6), 1}, + {RUNE_C(0x00A6E7), 2}, + {RUNE_C(0x00A6E8), 3}, + {RUNE_C(0x00A6E9), 4}, + {RUNE_C(0x00A6EA), 5}, + {RUNE_C(0x00A6EB), 6}, + {RUNE_C(0x00A6EC), 7}, + {RUNE_C(0x00A6ED), 8}, + {RUNE_C(0x00A6EE), 9}, + {RUNE_C(0x00A6EF), 0}, + {RUNE_C(0x00A830), 1/4}, + {RUNE_C(0x00A831), 1/2}, + {RUNE_C(0x00A832), 3/4}, + {RUNE_C(0x00A833), 1/16}, + {RUNE_C(0x00A834), 1/8}, + {RUNE_C(0x00A835), 3/16}, + {RUNE_C(0x00A8D0), 0}, + {RUNE_C(0x00A8D1), 1}, + {RUNE_C(0x00A8D2), 2}, + {RUNE_C(0x00A8D3), 3}, + {RUNE_C(0x00A8D4), 4}, + {RUNE_C(0x00A8D5), 5}, + {RUNE_C(0x00A8D6), 6}, + {RUNE_C(0x00A8D7), 7}, + {RUNE_C(0x00A8D8), 8}, + {RUNE_C(0x00A8D9), 9}, + {RUNE_C(0x00A900), 0}, + {RUNE_C(0x00A901), 1}, + {RUNE_C(0x00A902), 2}, + {RUNE_C(0x00A903), 3}, + {RUNE_C(0x00A904), 4}, + {RUNE_C(0x00A905), 5}, + {RUNE_C(0x00A906), 6}, + {RUNE_C(0x00A907), 7}, + {RUNE_C(0x00A908), 8}, + {RUNE_C(0x00A909), 9}, + {RUNE_C(0x00A9D0), 0}, + {RUNE_C(0x00A9D1), 1}, + {RUNE_C(0x00A9D2), 2}, + {RUNE_C(0x00A9D3), 3}, + {RUNE_C(0x00A9D4), 4}, + {RUNE_C(0x00A9D5), 5}, + {RUNE_C(0x00A9D6), 6}, + {RUNE_C(0x00A9D7), 7}, + {RUNE_C(0x00A9D8), 8}, + {RUNE_C(0x00A9D9), 9}, + {RUNE_C(0x00A9F0), 0}, + {RUNE_C(0x00A9F1), 1}, + {RUNE_C(0x00A9F2), 2}, + {RUNE_C(0x00A9F3), 3}, + {RUNE_C(0x00A9F4), 4}, + {RUNE_C(0x00A9F5), 5}, + {RUNE_C(0x00A9F6), 6}, + {RUNE_C(0x00A9F7), 7}, + {RUNE_C(0x00A9F8), 8}, + {RUNE_C(0x00A9F9), 9}, + {RUNE_C(0x00AA50), 0}, + {RUNE_C(0x00AA51), 1}, + {RUNE_C(0x00AA52), 2}, + {RUNE_C(0x00AA53), 3}, + {RUNE_C(0x00AA54), 4}, + {RUNE_C(0x00AA55), 5}, + {RUNE_C(0x00AA56), 6}, + {RUNE_C(0x00AA57), 7}, + {RUNE_C(0x00AA58), 8}, + {RUNE_C(0x00AA59), 9}, + {RUNE_C(0x00ABF0), 0}, + {RUNE_C(0x00ABF1), 1}, + {RUNE_C(0x00ABF2), 2}, + {RUNE_C(0x00ABF3), 3}, + {RUNE_C(0x00ABF4), 4}, + {RUNE_C(0x00ABF5), 5}, + {RUNE_C(0x00ABF6), 6}, + {RUNE_C(0x00ABF7), 7}, + {RUNE_C(0x00ABF8), 8}, + {RUNE_C(0x00ABF9), 9}, + {RUNE_C(0x00F96B), 3}, + {RUNE_C(0x00F973), 10}, + {RUNE_C(0x00F978), 2}, + {RUNE_C(0x00F9B2), 0}, + {RUNE_C(0x00F9D1), 6}, + {RUNE_C(0x00F9D3), 6}, + {RUNE_C(0x00F9FD), 10}, + {RUNE_C(0x00FF10), 0}, + {RUNE_C(0x00FF11), 1}, + {RUNE_C(0x00FF12), 2}, + {RUNE_C(0x00FF13), 3}, + {RUNE_C(0x00FF14), 4}, + {RUNE_C(0x00FF15), 5}, + {RUNE_C(0x00FF16), 6}, + {RUNE_C(0x00FF17), 7}, + {RUNE_C(0x00FF18), 8}, + {RUNE_C(0x00FF19), 9}, + {RUNE_C(0x010107), 1}, + {RUNE_C(0x010108), 2}, + {RUNE_C(0x010109), 3}, + {RUNE_C(0x01010A), 4}, + {RUNE_C(0x01010B), 5}, + {RUNE_C(0x01010C), 6}, + {RUNE_C(0x01010D), 7}, + {RUNE_C(0x01010E), 8}, + {RUNE_C(0x01010F), 9}, + {RUNE_C(0x010110), 10}, + {RUNE_C(0x010111), 20}, + {RUNE_C(0x010112), 30}, + {RUNE_C(0x010113), 40}, + {RUNE_C(0x010114), 50}, + {RUNE_C(0x010115), 60}, + {RUNE_C(0x010116), 70}, + {RUNE_C(0x010117), 80}, + {RUNE_C(0x010118), 90}, + {RUNE_C(0x010119), 100}, + {RUNE_C(0x01011A), 200}, + {RUNE_C(0x01011B), 300}, + {RUNE_C(0x01011C), 400}, + {RUNE_C(0x01011D), 500}, + {RUNE_C(0x01011E), 600}, + {RUNE_C(0x01011F), 700}, + {RUNE_C(0x010120), 800}, + {RUNE_C(0x010121), 900}, + {RUNE_C(0x010122), 1000}, + {RUNE_C(0x010123), 2000}, + {RUNE_C(0x010124), 3000}, + {RUNE_C(0x010125), 4000}, + {RUNE_C(0x010126), 5000}, + {RUNE_C(0x010127), 6000}, + {RUNE_C(0x010128), 7000}, + {RUNE_C(0x010129), 8000}, + {RUNE_C(0x01012A), 9000}, + {RUNE_C(0x01012B), 10000}, + {RUNE_C(0x01012C), 20000}, + {RUNE_C(0x01012D), 30000}, + {RUNE_C(0x01012E), 40000}, + {RUNE_C(0x01012F), 50000}, + {RUNE_C(0x010130), 60000}, + {RUNE_C(0x010131), 70000}, + {RUNE_C(0x010132), 80000}, + {RUNE_C(0x010133), 90000}, + {RUNE_C(0x010140), 1/4}, + {RUNE_C(0x010141), 1/2}, + {RUNE_C(0x010142), 1}, + {RUNE_C(0x010143), 5}, + {RUNE_C(0x010144), 50}, + {RUNE_C(0x010145), 500}, + {RUNE_C(0x010146), 5000}, + {RUNE_C(0x010147), 50000}, + {RUNE_C(0x010148), 5}, + {RUNE_C(0x010149), 10}, + {RUNE_C(0x01014A), 50}, + {RUNE_C(0x01014B), 100}, + {RUNE_C(0x01014C), 500}, + {RUNE_C(0x01014D), 1000}, + {RUNE_C(0x01014E), 5000}, + {RUNE_C(0x01014F), 5}, + {RUNE_C(0x010150), 10}, + {RUNE_C(0x010151), 50}, + {RUNE_C(0x010152), 100}, + {RUNE_C(0x010153), 500}, + {RUNE_C(0x010154), 1000}, + {RUNE_C(0x010155), 10000}, + {RUNE_C(0x010156), 50000}, + {RUNE_C(0x010157), 10}, + {RUNE_C(0x010158), 1}, + {RUNE_C(0x010159), 1}, + {RUNE_C(0x01015A), 1}, + {RUNE_C(0x01015B), 2}, + {RUNE_C(0x01015C), 2}, + {RUNE_C(0x01015D), 2}, + {RUNE_C(0x01015E), 2}, + {RUNE_C(0x01015F), 5}, + {RUNE_C(0x010160), 10}, + {RUNE_C(0x010161), 10}, + {RUNE_C(0x010162), 10}, + {RUNE_C(0x010163), 10}, + {RUNE_C(0x010164), 10}, + {RUNE_C(0x010165), 30}, + {RUNE_C(0x010166), 50}, + {RUNE_C(0x010167), 50}, + {RUNE_C(0x010168), 50}, + {RUNE_C(0x010169), 50}, + {RUNE_C(0x01016A), 100}, + {RUNE_C(0x01016B), 300}, + {RUNE_C(0x01016C), 500}, + {RUNE_C(0x01016D), 500}, + {RUNE_C(0x01016E), 500}, + {RUNE_C(0x01016F), 500}, + {RUNE_C(0x010170), 500}, + {RUNE_C(0x010171), 1000}, + {RUNE_C(0x010172), 5000}, + {RUNE_C(0x010173), 5}, + {RUNE_C(0x010174), 50}, + {RUNE_C(0x010175), 1/2}, + {RUNE_C(0x010176), 1/2}, + {RUNE_C(0x010177), 2/3}, + {RUNE_C(0x010178), 3/4}, + {RUNE_C(0x01018A), 0}, + {RUNE_C(0x01018B), 1/4}, + {RUNE_C(0x0102E1), 1}, + {RUNE_C(0x0102E2), 2}, + {RUNE_C(0x0102E3), 3}, + {RUNE_C(0x0102E4), 4}, + {RUNE_C(0x0102E5), 5}, + {RUNE_C(0x0102E6), 6}, + {RUNE_C(0x0102E7), 7}, + {RUNE_C(0x0102E8), 8}, + {RUNE_C(0x0102E9), 9}, + {RUNE_C(0x0102EA), 10}, + {RUNE_C(0x0102EB), 20}, + {RUNE_C(0x0102EC), 30}, + {RUNE_C(0x0102ED), 40}, + {RUNE_C(0x0102EE), 50}, + {RUNE_C(0x0102EF), 60}, + {RUNE_C(0x0102F0), 70}, + {RUNE_C(0x0102F1), 80}, + {RUNE_C(0x0102F2), 90}, + {RUNE_C(0x0102F3), 100}, + {RUNE_C(0x0102F4), 200}, + {RUNE_C(0x0102F5), 300}, + {RUNE_C(0x0102F6), 400}, + {RUNE_C(0x0102F7), 500}, + {RUNE_C(0x0102F8), 600}, + {RUNE_C(0x0102F9), 700}, + {RUNE_C(0x0102FA), 800}, + {RUNE_C(0x0102FB), 900}, + {RUNE_C(0x010320), 1}, + {RUNE_C(0x010321), 5}, + {RUNE_C(0x010322), 10}, + {RUNE_C(0x010323), 50}, + {RUNE_C(0x010341), 90}, + {RUNE_C(0x01034A), 900}, + {RUNE_C(0x0103D1), 1}, + {RUNE_C(0x0103D2), 2}, + {RUNE_C(0x0103D3), 10}, + {RUNE_C(0x0103D4), 20}, + {RUNE_C(0x0103D5), 100}, + {RUNE_C(0x0104A0), 0}, + {RUNE_C(0x0104A1), 1}, + {RUNE_C(0x0104A2), 2}, + {RUNE_C(0x0104A3), 3}, + {RUNE_C(0x0104A4), 4}, + {RUNE_C(0x0104A5), 5}, + {RUNE_C(0x0104A6), 6}, + {RUNE_C(0x0104A7), 7}, + {RUNE_C(0x0104A8), 8}, + {RUNE_C(0x0104A9), 9}, + {RUNE_C(0x010858), 1}, + {RUNE_C(0x010859), 2}, + {RUNE_C(0x01085A), 3}, + {RUNE_C(0x01085B), 10}, + {RUNE_C(0x01085C), 20}, + {RUNE_C(0x01085D), 100}, + {RUNE_C(0x01085E), 1000}, + {RUNE_C(0x01085F), 10000}, + {RUNE_C(0x010879), 1}, + {RUNE_C(0x01087A), 2}, + {RUNE_C(0x01087B), 3}, + {RUNE_C(0x01087C), 4}, + {RUNE_C(0x01087D), 5}, + {RUNE_C(0x01087E), 10}, + {RUNE_C(0x01087F), 20}, + {RUNE_C(0x0108A7), 1}, + {RUNE_C(0x0108A8), 2}, + {RUNE_C(0x0108A9), 3}, + {RUNE_C(0x0108AA), 4}, + {RUNE_C(0x0108AB), 4}, + {RUNE_C(0x0108AC), 5}, + {RUNE_C(0x0108AD), 10}, + {RUNE_C(0x0108AE), 20}, + {RUNE_C(0x0108AF), 100}, + {RUNE_C(0x0108FB), 1}, + {RUNE_C(0x0108FC), 5}, + {RUNE_C(0x0108FD), 10}, + {RUNE_C(0x0108FE), 20}, + {RUNE_C(0x0108FF), 100}, + {RUNE_C(0x010916), 1}, + {RUNE_C(0x010917), 10}, + {RUNE_C(0x010918), 20}, + {RUNE_C(0x010919), 100}, + {RUNE_C(0x01091A), 2}, + {RUNE_C(0x01091B), 3}, + {RUNE_C(0x0109BC), 11/12}, + {RUNE_C(0x0109BD), 1/2}, + {RUNE_C(0x0109C0), 1}, + {RUNE_C(0x0109C1), 2}, + {RUNE_C(0x0109C2), 3}, + {RUNE_C(0x0109C3), 4}, + {RUNE_C(0x0109C4), 5}, + {RUNE_C(0x0109C5), 6}, + {RUNE_C(0x0109C6), 7}, + {RUNE_C(0x0109C7), 8}, + {RUNE_C(0x0109C8), 9}, + {RUNE_C(0x0109C9), 10}, + {RUNE_C(0x0109CA), 20}, + {RUNE_C(0x0109CB), 30}, + {RUNE_C(0x0109CC), 40}, + {RUNE_C(0x0109CD), 50}, + {RUNE_C(0x0109CE), 60}, + {RUNE_C(0x0109CF), 70}, + {RUNE_C(0x0109D2), 100}, + {RUNE_C(0x0109D3), 200}, + {RUNE_C(0x0109D4), 300}, + {RUNE_C(0x0109D5), 400}, + {RUNE_C(0x0109D6), 500}, + {RUNE_C(0x0109D7), 600}, + {RUNE_C(0x0109D8), 700}, + {RUNE_C(0x0109D9), 800}, + {RUNE_C(0x0109DA), 900}, + {RUNE_C(0x0109DB), 1000}, + {RUNE_C(0x0109DC), 2000}, + {RUNE_C(0x0109DD), 3000}, + {RUNE_C(0x0109DE), 4000}, + {RUNE_C(0x0109DF), 5000}, + {RUNE_C(0x0109E0), 6000}, + {RUNE_C(0x0109E1), 7000}, + {RUNE_C(0x0109E2), 8000}, + {RUNE_C(0x0109E3), 9000}, + {RUNE_C(0x0109E4), 10000}, + {RUNE_C(0x0109E5), 20000}, + {RUNE_C(0x0109E6), 30000}, + {RUNE_C(0x0109E7), 40000}, + {RUNE_C(0x0109E8), 50000}, + {RUNE_C(0x0109E9), 60000}, + {RUNE_C(0x0109EA), 70000}, + {RUNE_C(0x0109EB), 80000}, + {RUNE_C(0x0109EC), 90000}, + {RUNE_C(0x0109ED), 100000}, + {RUNE_C(0x0109EE), 200000}, + {RUNE_C(0x0109EF), 300000}, + {RUNE_C(0x0109F0), 400000}, + {RUNE_C(0x0109F1), 500000}, + {RUNE_C(0x0109F2), 600000}, + {RUNE_C(0x0109F3), 700000}, + {RUNE_C(0x0109F4), 800000}, + {RUNE_C(0x0109F5), 900000}, + {RUNE_C(0x0109F6), 1/12}, + {RUNE_C(0x0109F7), 1/6}, + {RUNE_C(0x0109F8), 1/4}, + {RUNE_C(0x0109F9), 1/3}, + {RUNE_C(0x0109FA), 5/12}, + {RUNE_C(0x0109FB), 1/2}, + {RUNE_C(0x0109FC), 7/12}, + {RUNE_C(0x0109FD), 2/3}, + {RUNE_C(0x0109FE), 3/4}, + {RUNE_C(0x0109FF), 5/6}, + {RUNE_C(0x010A40), 1}, + {RUNE_C(0x010A41), 2}, + {RUNE_C(0x010A42), 3}, + {RUNE_C(0x010A43), 4}, + {RUNE_C(0x010A44), 10}, + {RUNE_C(0x010A45), 20}, + {RUNE_C(0x010A46), 100}, + {RUNE_C(0x010A47), 1000}, + {RUNE_C(0x010A48), 1/2}, + {RUNE_C(0x010A7D), 1}, + {RUNE_C(0x010A7E), 50}, + {RUNE_C(0x010A9D), 1}, + {RUNE_C(0x010A9E), 10}, + {RUNE_C(0x010A9F), 20}, + {RUNE_C(0x010AEB), 1}, + {RUNE_C(0x010AEC), 5}, + {RUNE_C(0x010AED), 10}, + {RUNE_C(0x010AEE), 20}, + {RUNE_C(0x010AEF), 100}, + {RUNE_C(0x010B58), 1}, + {RUNE_C(0x010B59), 2}, + {RUNE_C(0x010B5A), 3}, + {RUNE_C(0x010B5B), 4}, + {RUNE_C(0x010B5C), 10}, + {RUNE_C(0x010B5D), 20}, + {RUNE_C(0x010B5E), 100}, + {RUNE_C(0x010B5F), 1000}, + {RUNE_C(0x010B78), 1}, + {RUNE_C(0x010B79), 2}, + {RUNE_C(0x010B7A), 3}, + {RUNE_C(0x010B7B), 4}, + {RUNE_C(0x010B7C), 10}, + {RUNE_C(0x010B7D), 20}, + {RUNE_C(0x010B7E), 100}, + {RUNE_C(0x010B7F), 1000}, + {RUNE_C(0x010BA9), 1}, + {RUNE_C(0x010BAA), 2}, + {RUNE_C(0x010BAB), 3}, + {RUNE_C(0x010BAC), 4}, + {RUNE_C(0x010BAD), 10}, + {RUNE_C(0x010BAE), 20}, + {RUNE_C(0x010BAF), 100}, + {RUNE_C(0x010CFA), 1}, + {RUNE_C(0x010CFB), 5}, + {RUNE_C(0x010CFC), 10}, + {RUNE_C(0x010CFD), 50}, + {RUNE_C(0x010CFE), 100}, + {RUNE_C(0x010CFF), 1000}, + {RUNE_C(0x010D30), 0}, + {RUNE_C(0x010D31), 1}, + {RUNE_C(0x010D32), 2}, + {RUNE_C(0x010D33), 3}, + {RUNE_C(0x010D34), 4}, + {RUNE_C(0x010D35), 5}, + {RUNE_C(0x010D36), 6}, + {RUNE_C(0x010D37), 7}, + {RUNE_C(0x010D38), 8}, + {RUNE_C(0x010D39), 9}, + {RUNE_C(0x010E60), 1}, + {RUNE_C(0x010E61), 2}, + {RUNE_C(0x010E62), 3}, + {RUNE_C(0x010E63), 4}, + {RUNE_C(0x010E64), 5}, + {RUNE_C(0x010E65), 6}, + {RUNE_C(0x010E66), 7}, + {RUNE_C(0x010E67), 8}, + {RUNE_C(0x010E68), 9}, + {RUNE_C(0x010E69), 10}, + {RUNE_C(0x010E6A), 20}, + {RUNE_C(0x010E6B), 30}, + {RUNE_C(0x010E6C), 40}, + {RUNE_C(0x010E6D), 50}, + {RUNE_C(0x010E6E), 60}, + {RUNE_C(0x010E6F), 70}, + {RUNE_C(0x010E70), 80}, + {RUNE_C(0x010E71), 90}, + {RUNE_C(0x010E72), 100}, + {RUNE_C(0x010E73), 200}, + {RUNE_C(0x010E74), 300}, + {RUNE_C(0x010E75), 400}, + {RUNE_C(0x010E76), 500}, + {RUNE_C(0x010E77), 600}, + {RUNE_C(0x010E78), 700}, + {RUNE_C(0x010E79), 800}, + {RUNE_C(0x010E7A), 900}, + {RUNE_C(0x010E7B), 1/2}, + {RUNE_C(0x010E7C), 1/4}, + {RUNE_C(0x010E7D), 1/3}, + {RUNE_C(0x010E7E), 2/3}, + {RUNE_C(0x010F1D), 1}, + {RUNE_C(0x010F1E), 2}, + {RUNE_C(0x010F1F), 3}, + {RUNE_C(0x010F20), 4}, + {RUNE_C(0x010F21), 5}, + {RUNE_C(0x010F22), 10}, + {RUNE_C(0x010F23), 20}, + {RUNE_C(0x010F24), 30}, + {RUNE_C(0x010F25), 100}, + {RUNE_C(0x010F26), 1/2}, + {RUNE_C(0x010F51), 1}, + {RUNE_C(0x010F52), 10}, + {RUNE_C(0x010F53), 20}, + {RUNE_C(0x010F54), 100}, + {RUNE_C(0x010FC5), 1}, + {RUNE_C(0x010FC6), 2}, + {RUNE_C(0x010FC7), 3}, + {RUNE_C(0x010FC8), 4}, + {RUNE_C(0x010FC9), 10}, + {RUNE_C(0x010FCA), 20}, + {RUNE_C(0x010FCB), 100}, + {RUNE_C(0x011052), 1}, + {RUNE_C(0x011053), 2}, + {RUNE_C(0x011054), 3}, + {RUNE_C(0x011055), 4}, + {RUNE_C(0x011056), 5}, + {RUNE_C(0x011057), 6}, + {RUNE_C(0x011058), 7}, + {RUNE_C(0x011059), 8}, + {RUNE_C(0x01105A), 9}, + {RUNE_C(0x01105B), 10}, + {RUNE_C(0x01105C), 20}, + {RUNE_C(0x01105D), 30}, + {RUNE_C(0x01105E), 40}, + {RUNE_C(0x01105F), 50}, + {RUNE_C(0x011060), 60}, + {RUNE_C(0x011061), 70}, + {RUNE_C(0x011062), 80}, + {RUNE_C(0x011063), 90}, + {RUNE_C(0x011064), 100}, + {RUNE_C(0x011065), 1000}, + {RUNE_C(0x011066), 0}, + {RUNE_C(0x011067), 1}, + {RUNE_C(0x011068), 2}, + {RUNE_C(0x011069), 3}, + {RUNE_C(0x01106A), 4}, + {RUNE_C(0x01106B), 5}, + {RUNE_C(0x01106C), 6}, + {RUNE_C(0x01106D), 7}, + {RUNE_C(0x01106E), 8}, + {RUNE_C(0x01106F), 9}, + {RUNE_C(0x0110F0), 0}, + {RUNE_C(0x0110F1), 1}, + {RUNE_C(0x0110F2), 2}, + {RUNE_C(0x0110F3), 3}, + {RUNE_C(0x0110F4), 4}, + {RUNE_C(0x0110F5), 5}, + {RUNE_C(0x0110F6), 6}, + {RUNE_C(0x0110F7), 7}, + {RUNE_C(0x0110F8), 8}, + {RUNE_C(0x0110F9), 9}, + {RUNE_C(0x011136), 0}, + {RUNE_C(0x011137), 1}, + {RUNE_C(0x011138), 2}, + {RUNE_C(0x011139), 3}, + {RUNE_C(0x01113A), 4}, + {RUNE_C(0x01113B), 5}, + {RUNE_C(0x01113C), 6}, + {RUNE_C(0x01113D), 7}, + {RUNE_C(0x01113E), 8}, + {RUNE_C(0x01113F), 9}, + {RUNE_C(0x0111D0), 0}, + {RUNE_C(0x0111D1), 1}, + {RUNE_C(0x0111D2), 2}, + {RUNE_C(0x0111D3), 3}, + {RUNE_C(0x0111D4), 4}, + {RUNE_C(0x0111D5), 5}, + {RUNE_C(0x0111D6), 6}, + {RUNE_C(0x0111D7), 7}, + {RUNE_C(0x0111D8), 8}, + {RUNE_C(0x0111D9), 9}, + {RUNE_C(0x0111E1), 1}, + {RUNE_C(0x0111E2), 2}, + {RUNE_C(0x0111E3), 3}, + {RUNE_C(0x0111E4), 4}, + {RUNE_C(0x0111E5), 5}, + {RUNE_C(0x0111E6), 6}, + {RUNE_C(0x0111E7), 7}, + {RUNE_C(0x0111E8), 8}, + {RUNE_C(0x0111E9), 9}, + {RUNE_C(0x0111EA), 10}, + {RUNE_C(0x0111EB), 20}, + {RUNE_C(0x0111EC), 30}, + {RUNE_C(0x0111ED), 40}, + {RUNE_C(0x0111EE), 50}, + {RUNE_C(0x0111EF), 60}, + {RUNE_C(0x0111F0), 70}, + {RUNE_C(0x0111F1), 80}, + {RUNE_C(0x0111F2), 90}, + {RUNE_C(0x0111F3), 100}, + {RUNE_C(0x0111F4), 1000}, + {RUNE_C(0x0112F0), 0}, + {RUNE_C(0x0112F1), 1}, + {RUNE_C(0x0112F2), 2}, + {RUNE_C(0x0112F3), 3}, + {RUNE_C(0x0112F4), 4}, + {RUNE_C(0x0112F5), 5}, + {RUNE_C(0x0112F6), 6}, + {RUNE_C(0x0112F7), 7}, + {RUNE_C(0x0112F8), 8}, + {RUNE_C(0x0112F9), 9}, + {RUNE_C(0x011450), 0}, + {RUNE_C(0x011451), 1}, + {RUNE_C(0x011452), 2}, + {RUNE_C(0x011453), 3}, + {RUNE_C(0x011454), 4}, + {RUNE_C(0x011455), 5}, + {RUNE_C(0x011456), 6}, + {RUNE_C(0x011457), 7}, + {RUNE_C(0x011458), 8}, + {RUNE_C(0x011459), 9}, + {RUNE_C(0x0114D0), 0}, + {RUNE_C(0x0114D1), 1}, + {RUNE_C(0x0114D2), 2}, + {RUNE_C(0x0114D3), 3}, + {RUNE_C(0x0114D4), 4}, + {RUNE_C(0x0114D5), 5}, + {RUNE_C(0x0114D6), 6}, + {RUNE_C(0x0114D7), 7}, + {RUNE_C(0x0114D8), 8}, + {RUNE_C(0x0114D9), 9}, + {RUNE_C(0x011650), 0}, + {RUNE_C(0x011651), 1}, + {RUNE_C(0x011652), 2}, + {RUNE_C(0x011653), 3}, + {RUNE_C(0x011654), 4}, + {RUNE_C(0x011655), 5}, + {RUNE_C(0x011656), 6}, + {RUNE_C(0x011657), 7}, + {RUNE_C(0x011658), 8}, + {RUNE_C(0x011659), 9}, + {RUNE_C(0x0116C0), 0}, + {RUNE_C(0x0116C1), 1}, + {RUNE_C(0x0116C2), 2}, + {RUNE_C(0x0116C3), 3}, + {RUNE_C(0x0116C4), 4}, + {RUNE_C(0x0116C5), 5}, + {RUNE_C(0x0116C6), 6}, + {RUNE_C(0x0116C7), 7}, + {RUNE_C(0x0116C8), 8}, + {RUNE_C(0x0116C9), 9}, + {RUNE_C(0x011730), 0}, + {RUNE_C(0x011731), 1}, + {RUNE_C(0x011732), 2}, + {RUNE_C(0x011733), 3}, + {RUNE_C(0x011734), 4}, + {RUNE_C(0x011735), 5}, + {RUNE_C(0x011736), 6}, + {RUNE_C(0x011737), 7}, + {RUNE_C(0x011738), 8}, + {RUNE_C(0x011739), 9}, + {RUNE_C(0x01173A), 10}, + {RUNE_C(0x01173B), 20}, + {RUNE_C(0x0118E0), 0}, + {RUNE_C(0x0118E1), 1}, + {RUNE_C(0x0118E2), 2}, + {RUNE_C(0x0118E3), 3}, + {RUNE_C(0x0118E4), 4}, + {RUNE_C(0x0118E5), 5}, + {RUNE_C(0x0118E6), 6}, + {RUNE_C(0x0118E7), 7}, + {RUNE_C(0x0118E8), 8}, + {RUNE_C(0x0118E9), 9}, + {RUNE_C(0x0118EA), 10}, + {RUNE_C(0x0118EB), 20}, + {RUNE_C(0x0118EC), 30}, + {RUNE_C(0x0118ED), 40}, + {RUNE_C(0x0118EE), 50}, + {RUNE_C(0x0118EF), 60}, + {RUNE_C(0x0118F0), 70}, + {RUNE_C(0x0118F1), 80}, + {RUNE_C(0x0118F2), 90}, + {RUNE_C(0x011950), 0}, + {RUNE_C(0x011951), 1}, + {RUNE_C(0x011952), 2}, + {RUNE_C(0x011953), 3}, + {RUNE_C(0x011954), 4}, + {RUNE_C(0x011955), 5}, + {RUNE_C(0x011956), 6}, + {RUNE_C(0x011957), 7}, + {RUNE_C(0x011958), 8}, + {RUNE_C(0x011959), 9}, + {RUNE_C(0x011C50), 0}, + {RUNE_C(0x011C51), 1}, + {RUNE_C(0x011C52), 2}, + {RUNE_C(0x011C53), 3}, + {RUNE_C(0x011C54), 4}, + {RUNE_C(0x011C55), 5}, + {RUNE_C(0x011C56), 6}, + {RUNE_C(0x011C57), 7}, + {RUNE_C(0x011C58), 8}, + {RUNE_C(0x011C59), 9}, + {RUNE_C(0x011C5A), 1}, + {RUNE_C(0x011C5B), 2}, + {RUNE_C(0x011C5C), 3}, + {RUNE_C(0x011C5D), 4}, + {RUNE_C(0x011C5E), 5}, + {RUNE_C(0x011C5F), 6}, + {RUNE_C(0x011C60), 7}, + {RUNE_C(0x011C61), 8}, + {RUNE_C(0x011C62), 9}, + {RUNE_C(0x011C63), 10}, + {RUNE_C(0x011C64), 20}, + {RUNE_C(0x011C65), 30}, + {RUNE_C(0x011C66), 40}, + {RUNE_C(0x011C67), 50}, + {RUNE_C(0x011C68), 60}, + {RUNE_C(0x011C69), 70}, + {RUNE_C(0x011C6A), 80}, + {RUNE_C(0x011C6B), 90}, + {RUNE_C(0x011C6C), 100}, + {RUNE_C(0x011D50), 0}, + {RUNE_C(0x011D51), 1}, + {RUNE_C(0x011D52), 2}, + {RUNE_C(0x011D53), 3}, + {RUNE_C(0x011D54), 4}, + {RUNE_C(0x011D55), 5}, + {RUNE_C(0x011D56), 6}, + {RUNE_C(0x011D57), 7}, + {RUNE_C(0x011D58), 8}, + {RUNE_C(0x011D59), 9}, + {RUNE_C(0x011DA0), 0}, + {RUNE_C(0x011DA1), 1}, + {RUNE_C(0x011DA2), 2}, + {RUNE_C(0x011DA3), 3}, + {RUNE_C(0x011DA4), 4}, + {RUNE_C(0x011DA5), 5}, + {RUNE_C(0x011DA6), 6}, + {RUNE_C(0x011DA7), 7}, + {RUNE_C(0x011DA8), 8}, + {RUNE_C(0x011DA9), 9}, + {RUNE_C(0x011F50), 0}, + {RUNE_C(0x011F51), 1}, + {RUNE_C(0x011F52), 2}, + {RUNE_C(0x011F53), 3}, + {RUNE_C(0x011F54), 4}, + {RUNE_C(0x011F55), 5}, + {RUNE_C(0x011F56), 6}, + {RUNE_C(0x011F57), 7}, + {RUNE_C(0x011F58), 8}, + {RUNE_C(0x011F59), 9}, + {RUNE_C(0x011FC0), 1/320}, + {RUNE_C(0x011FC1), 1/160}, + {RUNE_C(0x011FC2), 1/80}, + {RUNE_C(0x011FC3), 1/64}, + {RUNE_C(0x011FC4), 1/40}, + {RUNE_C(0x011FC5), 1/32}, + {RUNE_C(0x011FC6), 3/80}, + {RUNE_C(0x011FC7), 3/64}, + {RUNE_C(0x011FC8), 1/20}, + {RUNE_C(0x011FC9), 1/16}, + {RUNE_C(0x011FCA), 1/16}, + {RUNE_C(0x011FCB), 1/10}, + {RUNE_C(0x011FCC), 1/8}, + {RUNE_C(0x011FCD), 3/20}, + {RUNE_C(0x011FCE), 3/16}, + {RUNE_C(0x011FCF), 1/5}, + {RUNE_C(0x011FD0), 1/4}, + {RUNE_C(0x011FD1), 1/2}, + {RUNE_C(0x011FD2), 1/2}, + {RUNE_C(0x011FD3), 3/4}, + {RUNE_C(0x011FD4), 1/320}, + {RUNE_C(0x012400), 2}, + {RUNE_C(0x012401), 3}, + {RUNE_C(0x012402), 4}, + {RUNE_C(0x012403), 5}, + {RUNE_C(0x012404), 6}, + {RUNE_C(0x012405), 7}, + {RUNE_C(0x012406), 8}, + {RUNE_C(0x012407), 9}, + {RUNE_C(0x012408), 3}, + {RUNE_C(0x012409), 4}, + {RUNE_C(0x01240A), 5}, + {RUNE_C(0x01240B), 6}, + {RUNE_C(0x01240C), 7}, + {RUNE_C(0x01240D), 8}, + {RUNE_C(0x01240E), 9}, + {RUNE_C(0x01240F), 4}, + {RUNE_C(0x012410), 5}, + {RUNE_C(0x012411), 6}, + {RUNE_C(0x012412), 7}, + {RUNE_C(0x012413), 8}, + {RUNE_C(0x012414), 9}, + {RUNE_C(0x012415), 1}, + {RUNE_C(0x012416), 2}, + {RUNE_C(0x012417), 3}, + {RUNE_C(0x012418), 4}, + {RUNE_C(0x012419), 5}, + {RUNE_C(0x01241A), 6}, + {RUNE_C(0x01241B), 7}, + {RUNE_C(0x01241C), 8}, + {RUNE_C(0x01241D), 9}, + {RUNE_C(0x01241E), 1}, + {RUNE_C(0x01241F), 2}, + {RUNE_C(0x012420), 3}, + {RUNE_C(0x012421), 4}, + {RUNE_C(0x012422), 5}, + {RUNE_C(0x012423), 2}, + {RUNE_C(0x012424), 3}, + {RUNE_C(0x012425), 3}, + {RUNE_C(0x012426), 4}, + {RUNE_C(0x012427), 5}, + {RUNE_C(0x012428), 6}, + {RUNE_C(0x012429), 7}, + {RUNE_C(0x01242A), 8}, + {RUNE_C(0x01242B), 9}, + {RUNE_C(0x01242C), 1}, + {RUNE_C(0x01242D), 2}, + {RUNE_C(0x01242E), 3}, + {RUNE_C(0x01242F), 3}, + {RUNE_C(0x012430), 4}, + {RUNE_C(0x012431), 5}, + {RUNE_C(0x012432), 216000}, + {RUNE_C(0x012433), 432000}, + {RUNE_C(0x012434), 1}, + {RUNE_C(0x012435), 2}, + {RUNE_C(0x012436), 3}, + {RUNE_C(0x012437), 3}, + {RUNE_C(0x012438), 4}, + {RUNE_C(0x012439), 5}, + {RUNE_C(0x01243A), 3}, + {RUNE_C(0x01243B), 3}, + {RUNE_C(0x01243C), 4}, + {RUNE_C(0x01243D), 4}, + {RUNE_C(0x01243E), 4}, + {RUNE_C(0x01243F), 4}, + {RUNE_C(0x012440), 6}, + {RUNE_C(0x012441), 7}, + {RUNE_C(0x012442), 7}, + {RUNE_C(0x012443), 7}, + {RUNE_C(0x012444), 8}, + {RUNE_C(0x012445), 8}, + {RUNE_C(0x012446), 9}, + {RUNE_C(0x012447), 9}, + {RUNE_C(0x012448), 9}, + {RUNE_C(0x012449), 9}, + {RUNE_C(0x01244A), 2}, + {RUNE_C(0x01244B), 3}, + {RUNE_C(0x01244C), 4}, + {RUNE_C(0x01244D), 5}, + {RUNE_C(0x01244E), 6}, + {RUNE_C(0x01244F), 1}, + {RUNE_C(0x012450), 2}, + {RUNE_C(0x012451), 3}, + {RUNE_C(0x012452), 4}, + {RUNE_C(0x012453), 4}, + {RUNE_C(0x012454), 5}, + {RUNE_C(0x012455), 5}, + {RUNE_C(0x012456), 2}, + {RUNE_C(0x012457), 3}, + {RUNE_C(0x012458), 1}, + {RUNE_C(0x012459), 2}, + {RUNE_C(0x01245A), 1/3}, + {RUNE_C(0x01245B), 2/3}, + {RUNE_C(0x01245C), 5/6}, + {RUNE_C(0x01245D), 1/3}, + {RUNE_C(0x01245E), 2/3}, + {RUNE_C(0x01245F), 1/8}, + {RUNE_C(0x012460), 1/4}, + {RUNE_C(0x012461), 1/6}, + {RUNE_C(0x012462), 1/4}, + {RUNE_C(0x012463), 1/4}, + {RUNE_C(0x012464), 1/2}, + {RUNE_C(0x012465), 1/3}, + {RUNE_C(0x012466), 2/3}, + {RUNE_C(0x012467), 40}, + {RUNE_C(0x012468), 50}, + {RUNE_C(0x012469), 4}, + {RUNE_C(0x01246A), 5}, + {RUNE_C(0x01246B), 6}, + {RUNE_C(0x01246C), 7}, + {RUNE_C(0x01246D), 8}, + {RUNE_C(0x01246E), 9}, + {RUNE_C(0x016A60), 0}, + {RUNE_C(0x016A61), 1}, + {RUNE_C(0x016A62), 2}, + {RUNE_C(0x016A63), 3}, + {RUNE_C(0x016A64), 4}, + {RUNE_C(0x016A65), 5}, + {RUNE_C(0x016A66), 6}, + {RUNE_C(0x016A67), 7}, + {RUNE_C(0x016A68), 8}, + {RUNE_C(0x016A69), 9}, + {RUNE_C(0x016AC0), 0}, + {RUNE_C(0x016AC1), 1}, + {RUNE_C(0x016AC2), 2}, + {RUNE_C(0x016AC3), 3}, + {RUNE_C(0x016AC4), 4}, + {RUNE_C(0x016AC5), 5}, + {RUNE_C(0x016AC6), 6}, + {RUNE_C(0x016AC7), 7}, + {RUNE_C(0x016AC8), 8}, + {RUNE_C(0x016AC9), 9}, + {RUNE_C(0x016B50), 0}, + {RUNE_C(0x016B51), 1}, + {RUNE_C(0x016B52), 2}, + {RUNE_C(0x016B53), 3}, + {RUNE_C(0x016B54), 4}, + {RUNE_C(0x016B55), 5}, + {RUNE_C(0x016B56), 6}, + {RUNE_C(0x016B57), 7}, + {RUNE_C(0x016B58), 8}, + {RUNE_C(0x016B59), 9}, + {RUNE_C(0x016B5B), 10}, + {RUNE_C(0x016B5C), 100}, + {RUNE_C(0x016B5D), 10000}, + {RUNE_C(0x016B5E), 1000000}, + {RUNE_C(0x016B5F), 100000000}, + {RUNE_C(0x016B60), 10000000000}, + {RUNE_C(0x016B61), 1000000000000}, + {RUNE_C(0x016E80), 0}, + {RUNE_C(0x016E81), 1}, + {RUNE_C(0x016E82), 2}, + {RUNE_C(0x016E83), 3}, + {RUNE_C(0x016E84), 4}, + {RUNE_C(0x016E85), 5}, + {RUNE_C(0x016E86), 6}, + {RUNE_C(0x016E87), 7}, + {RUNE_C(0x016E88), 8}, + {RUNE_C(0x016E89), 9}, + {RUNE_C(0x016E8A), 10}, + {RUNE_C(0x016E8B), 11}, + {RUNE_C(0x016E8C), 12}, + {RUNE_C(0x016E8D), 13}, + {RUNE_C(0x016E8E), 14}, + {RUNE_C(0x016E8F), 15}, + {RUNE_C(0x016E90), 16}, + {RUNE_C(0x016E91), 17}, + {RUNE_C(0x016E92), 18}, + {RUNE_C(0x016E93), 19}, + {RUNE_C(0x016E94), 1}, + {RUNE_C(0x016E95), 2}, + {RUNE_C(0x016E96), 3}, + {RUNE_C(0x01D2C0), 0}, + {RUNE_C(0x01D2C1), 1}, + {RUNE_C(0x01D2C2), 2}, + {RUNE_C(0x01D2C3), 3}, + {RUNE_C(0x01D2C4), 4}, + {RUNE_C(0x01D2C5), 5}, + {RUNE_C(0x01D2C6), 6}, + {RUNE_C(0x01D2C7), 7}, + {RUNE_C(0x01D2C8), 8}, + {RUNE_C(0x01D2C9), 9}, + {RUNE_C(0x01D2CA), 10}, + {RUNE_C(0x01D2CB), 11}, + {RUNE_C(0x01D2CC), 12}, + {RUNE_C(0x01D2CD), 13}, + {RUNE_C(0x01D2CE), 14}, + {RUNE_C(0x01D2CF), 15}, + {RUNE_C(0x01D2D0), 16}, + {RUNE_C(0x01D2D1), 17}, + {RUNE_C(0x01D2D2), 18}, + {RUNE_C(0x01D2D3), 19}, + {RUNE_C(0x01D2E0), 0}, + {RUNE_C(0x01D2E1), 1}, + {RUNE_C(0x01D2E2), 2}, + {RUNE_C(0x01D2E3), 3}, + {RUNE_C(0x01D2E4), 4}, + {RUNE_C(0x01D2E5), 5}, + {RUNE_C(0x01D2E6), 6}, + {RUNE_C(0x01D2E7), 7}, + {RUNE_C(0x01D2E8), 8}, + {RUNE_C(0x01D2E9), 9}, + {RUNE_C(0x01D2EA), 10}, + {RUNE_C(0x01D2EB), 11}, + {RUNE_C(0x01D2EC), 12}, + {RUNE_C(0x01D2ED), 13}, + {RUNE_C(0x01D2EE), 14}, + {RUNE_C(0x01D2EF), 15}, + {RUNE_C(0x01D2F0), 16}, + {RUNE_C(0x01D2F1), 17}, + {RUNE_C(0x01D2F2), 18}, + {RUNE_C(0x01D2F3), 19}, + {RUNE_C(0x01D360), 1}, + {RUNE_C(0x01D361), 2}, + {RUNE_C(0x01D362), 3}, + {RUNE_C(0x01D363), 4}, + {RUNE_C(0x01D364), 5}, + {RUNE_C(0x01D365), 6}, + {RUNE_C(0x01D366), 7}, + {RUNE_C(0x01D367), 8}, + {RUNE_C(0x01D368), 9}, + {RUNE_C(0x01D369), 10}, + {RUNE_C(0x01D36A), 20}, + {RUNE_C(0x01D36B), 30}, + {RUNE_C(0x01D36C), 40}, + {RUNE_C(0x01D36D), 50}, + {RUNE_C(0x01D36E), 60}, + {RUNE_C(0x01D36F), 70}, + {RUNE_C(0x01D370), 80}, + {RUNE_C(0x01D371), 90}, + {RUNE_C(0x01D372), 1}, + {RUNE_C(0x01D373), 2}, + {RUNE_C(0x01D374), 3}, + {RUNE_C(0x01D375), 4}, + {RUNE_C(0x01D376), 5}, + {RUNE_C(0x01D377), 1}, + {RUNE_C(0x01D378), 5}, + {RUNE_C(0x01D7CE), 0}, + {RUNE_C(0x01D7CF), 1}, + {RUNE_C(0x01D7D0), 2}, + {RUNE_C(0x01D7D1), 3}, + {RUNE_C(0x01D7D2), 4}, + {RUNE_C(0x01D7D3), 5}, + {RUNE_C(0x01D7D4), 6}, + {RUNE_C(0x01D7D5), 7}, + {RUNE_C(0x01D7D6), 8}, + {RUNE_C(0x01D7D7), 9}, + {RUNE_C(0x01D7D8), 0}, + {RUNE_C(0x01D7D9), 1}, + {RUNE_C(0x01D7DA), 2}, + {RUNE_C(0x01D7DB), 3}, + {RUNE_C(0x01D7DC), 4}, + {RUNE_C(0x01D7DD), 5}, + {RUNE_C(0x01D7DE), 6}, + {RUNE_C(0x01D7DF), 7}, + {RUNE_C(0x01D7E0), 8}, + {RUNE_C(0x01D7E1), 9}, + {RUNE_C(0x01D7E2), 0}, + {RUNE_C(0x01D7E3), 1}, + {RUNE_C(0x01D7E4), 2}, + {RUNE_C(0x01D7E5), 3}, + {RUNE_C(0x01D7E6), 4}, + {RUNE_C(0x01D7E7), 5}, + {RUNE_C(0x01D7E8), 6}, + {RUNE_C(0x01D7E9), 7}, + {RUNE_C(0x01D7EA), 8}, + {RUNE_C(0x01D7EB), 9}, + {RUNE_C(0x01D7EC), 0}, + {RUNE_C(0x01D7ED), 1}, + {RUNE_C(0x01D7EE), 2}, + {RUNE_C(0x01D7EF), 3}, + {RUNE_C(0x01D7F0), 4}, + {RUNE_C(0x01D7F1), 5}, + {RUNE_C(0x01D7F2), 6}, + {RUNE_C(0x01D7F3), 7}, + {RUNE_C(0x01D7F4), 8}, + {RUNE_C(0x01D7F5), 9}, + {RUNE_C(0x01D7F6), 0}, + {RUNE_C(0x01D7F7), 1}, + {RUNE_C(0x01D7F8), 2}, + {RUNE_C(0x01D7F9), 3}, + {RUNE_C(0x01D7FA), 4}, + {RUNE_C(0x01D7FB), 5}, + {RUNE_C(0x01D7FC), 6}, + {RUNE_C(0x01D7FD), 7}, + {RUNE_C(0x01D7FE), 8}, + {RUNE_C(0x01D7FF), 9}, + {RUNE_C(0x01E140), 0}, + {RUNE_C(0x01E141), 1}, + {RUNE_C(0x01E142), 2}, + {RUNE_C(0x01E143), 3}, + {RUNE_C(0x01E144), 4}, + {RUNE_C(0x01E145), 5}, + {RUNE_C(0x01E146), 6}, + {RUNE_C(0x01E147), 7}, + {RUNE_C(0x01E148), 8}, + {RUNE_C(0x01E149), 9}, + {RUNE_C(0x01E2F0), 0}, + {RUNE_C(0x01E2F1), 1}, + {RUNE_C(0x01E2F2), 2}, + {RUNE_C(0x01E2F3), 3}, + {RUNE_C(0x01E2F4), 4}, + {RUNE_C(0x01E2F5), 5}, + {RUNE_C(0x01E2F6), 6}, + {RUNE_C(0x01E2F7), 7}, + {RUNE_C(0x01E2F8), 8}, + {RUNE_C(0x01E2F9), 9}, + {RUNE_C(0x01E4F0), 0}, + {RUNE_C(0x01E4F1), 1}, + {RUNE_C(0x01E4F2), 2}, + {RUNE_C(0x01E4F3), 3}, + {RUNE_C(0x01E4F4), 4}, + {RUNE_C(0x01E4F5), 5}, + {RUNE_C(0x01E4F6), 6}, + {RUNE_C(0x01E4F7), 7}, + {RUNE_C(0x01E4F8), 8}, + {RUNE_C(0x01E4F9), 9}, + {RUNE_C(0x01E8C7), 1}, + {RUNE_C(0x01E8C8), 2}, + {RUNE_C(0x01E8C9), 3}, + {RUNE_C(0x01E8CA), 4}, + {RUNE_C(0x01E8CB), 5}, + {RUNE_C(0x01E8CC), 6}, + {RUNE_C(0x01E8CD), 7}, + {RUNE_C(0x01E8CE), 8}, + {RUNE_C(0x01E8CF), 9}, + {RUNE_C(0x01E950), 0}, + {RUNE_C(0x01E951), 1}, + {RUNE_C(0x01E952), 2}, + {RUNE_C(0x01E953), 3}, + {RUNE_C(0x01E954), 4}, + {RUNE_C(0x01E955), 5}, + {RUNE_C(0x01E956), 6}, + {RUNE_C(0x01E957), 7}, + {RUNE_C(0x01E958), 8}, + {RUNE_C(0x01E959), 9}, + {RUNE_C(0x01EC71), 1}, + {RUNE_C(0x01EC72), 2}, + {RUNE_C(0x01EC73), 3}, + {RUNE_C(0x01EC74), 4}, + {RUNE_C(0x01EC75), 5}, + {RUNE_C(0x01EC76), 6}, + {RUNE_C(0x01EC77), 7}, + {RUNE_C(0x01EC78), 8}, + {RUNE_C(0x01EC79), 9}, + {RUNE_C(0x01EC7A), 10}, + {RUNE_C(0x01EC7B), 20}, + {RUNE_C(0x01EC7C), 30}, + {RUNE_C(0x01EC7D), 40}, + {RUNE_C(0x01EC7E), 50}, + {RUNE_C(0x01EC7F), 60}, + {RUNE_C(0x01EC80), 70}, + {RUNE_C(0x01EC81), 80}, + {RUNE_C(0x01EC82), 90}, + {RUNE_C(0x01EC83), 100}, + {RUNE_C(0x01EC84), 200}, + {RUNE_C(0x01EC85), 300}, + {RUNE_C(0x01EC86), 400}, + {RUNE_C(0x01EC87), 500}, + {RUNE_C(0x01EC88), 600}, + {RUNE_C(0x01EC89), 700}, + {RUNE_C(0x01EC8A), 800}, + {RUNE_C(0x01EC8B), 900}, + {RUNE_C(0x01EC8C), 1000}, + {RUNE_C(0x01EC8D), 2000}, + {RUNE_C(0x01EC8E), 3000}, + {RUNE_C(0x01EC8F), 4000}, + {RUNE_C(0x01EC90), 5000}, + {RUNE_C(0x01EC91), 6000}, + {RUNE_C(0x01EC92), 7000}, + {RUNE_C(0x01EC93), 8000}, + {RUNE_C(0x01EC94), 9000}, + {RUNE_C(0x01EC95), 10000}, + {RUNE_C(0x01EC96), 20000}, + {RUNE_C(0x01EC97), 30000}, + {RUNE_C(0x01EC98), 40000}, + {RUNE_C(0x01EC99), 50000}, + {RUNE_C(0x01EC9A), 60000}, + {RUNE_C(0x01EC9B), 70000}, + {RUNE_C(0x01EC9C), 80000}, + {RUNE_C(0x01EC9D), 90000}, + {RUNE_C(0x01EC9E), 100000}, + {RUNE_C(0x01EC9F), 200000}, + {RUNE_C(0x01ECA0), 100000}, + {RUNE_C(0x01ECA1), 10000000}, + {RUNE_C(0x01ECA2), 20000000}, + {RUNE_C(0x01ECA3), 1}, + {RUNE_C(0x01ECA4), 2}, + {RUNE_C(0x01ECA5), 3}, + {RUNE_C(0x01ECA6), 4}, + {RUNE_C(0x01ECA7), 5}, + {RUNE_C(0x01ECA8), 6}, + {RUNE_C(0x01ECA9), 7}, + {RUNE_C(0x01ECAA), 8}, + {RUNE_C(0x01ECAB), 9}, + {RUNE_C(0x01ECAD), 1/4}, + {RUNE_C(0x01ECAE), 1/2}, + {RUNE_C(0x01ECAF), 3/4}, + {RUNE_C(0x01ECB1), 1}, + {RUNE_C(0x01ECB2), 2}, + {RUNE_C(0x01ECB3), 10000}, + {RUNE_C(0x01ECB4), 100000}, + {RUNE_C(0x01ED01), 1}, + {RUNE_C(0x01ED02), 2}, + {RUNE_C(0x01ED03), 3}, + {RUNE_C(0x01ED04), 4}, + {RUNE_C(0x01ED05), 5}, + {RUNE_C(0x01ED06), 6}, + {RUNE_C(0x01ED07), 7}, + {RUNE_C(0x01ED08), 8}, + {RUNE_C(0x01ED09), 9}, + {RUNE_C(0x01ED0A), 10}, + {RUNE_C(0x01ED0B), 20}, + {RUNE_C(0x01ED0C), 30}, + {RUNE_C(0x01ED0D), 40}, + {RUNE_C(0x01ED0E), 50}, + {RUNE_C(0x01ED0F), 60}, + {RUNE_C(0x01ED10), 70}, + {RUNE_C(0x01ED11), 80}, + {RUNE_C(0x01ED12), 90}, + {RUNE_C(0x01ED13), 100}, + {RUNE_C(0x01ED14), 200}, + {RUNE_C(0x01ED15), 300}, + {RUNE_C(0x01ED16), 400}, + {RUNE_C(0x01ED17), 500}, + {RUNE_C(0x01ED18), 600}, + {RUNE_C(0x01ED19), 700}, + {RUNE_C(0x01ED1A), 800}, + {RUNE_C(0x01ED1B), 900}, + {RUNE_C(0x01ED1C), 1000}, + {RUNE_C(0x01ED1D), 2000}, + {RUNE_C(0x01ED1E), 3000}, + {RUNE_C(0x01ED1F), 4000}, + {RUNE_C(0x01ED20), 5000}, + {RUNE_C(0x01ED21), 6000}, + {RUNE_C(0x01ED22), 7000}, + {RUNE_C(0x01ED23), 8000}, + {RUNE_C(0x01ED24), 9000}, + {RUNE_C(0x01ED25), 10000}, + {RUNE_C(0x01ED26), 20000}, + {RUNE_C(0x01ED27), 30000}, + {RUNE_C(0x01ED28), 40000}, + {RUNE_C(0x01ED29), 50000}, + {RUNE_C(0x01ED2A), 60000}, + {RUNE_C(0x01ED2B), 70000}, + {RUNE_C(0x01ED2C), 80000}, + {RUNE_C(0x01ED2D), 90000}, + {RUNE_C(0x01ED2F), 2}, + {RUNE_C(0x01ED30), 3}, + {RUNE_C(0x01ED31), 4}, + {RUNE_C(0x01ED32), 5}, + {RUNE_C(0x01ED33), 6}, + {RUNE_C(0x01ED34), 7}, + {RUNE_C(0x01ED35), 8}, + {RUNE_C(0x01ED36), 9}, + {RUNE_C(0x01ED37), 10}, + {RUNE_C(0x01ED38), 400}, + {RUNE_C(0x01ED39), 600}, + {RUNE_C(0x01ED3A), 2000}, + {RUNE_C(0x01ED3B), 10000}, + {RUNE_C(0x01ED3C), 1/2}, + {RUNE_C(0x01ED3D), 1/6}, + {RUNE_C(0x01F100), 0}, + {RUNE_C(0x01F101), 0}, + {RUNE_C(0x01F102), 1}, + {RUNE_C(0x01F103), 2}, + {RUNE_C(0x01F104), 3}, + {RUNE_C(0x01F105), 4}, + {RUNE_C(0x01F106), 5}, + {RUNE_C(0x01F107), 6}, + {RUNE_C(0x01F108), 7}, + {RUNE_C(0x01F109), 8}, + {RUNE_C(0x01F10A), 9}, + {RUNE_C(0x01F10B), 0}, + {RUNE_C(0x01F10C), 0}, + {RUNE_C(0x01FBF0), 0}, + {RUNE_C(0x01FBF1), 1}, + {RUNE_C(0x01FBF2), 2}, + {RUNE_C(0x01FBF3), 3}, + {RUNE_C(0x01FBF4), 4}, + {RUNE_C(0x01FBF5), 5}, + {RUNE_C(0x01FBF6), 6}, + {RUNE_C(0x01FBF7), 7}, + {RUNE_C(0x01FBF8), 8}, + {RUNE_C(0x01FBF9), 9}, + {RUNE_C(0x020001), 7}, + {RUNE_C(0x020064), 4}, + {RUNE_C(0x0200E2), 4}, + {RUNE_C(0x020121), 5}, + {RUNE_C(0x02092A), 1}, + {RUNE_C(0x020983), 30}, + {RUNE_C(0x02098C), 40}, + {RUNE_C(0x02099C), 40}, + {RUNE_C(0x020AEA), 6}, + {RUNE_C(0x020AFD), 3}, + {RUNE_C(0x020B19), 3}, + {RUNE_C(0x022390), 2}, + {RUNE_C(0x022998), 3}, + {RUNE_C(0x023B1B), 3}, + {RUNE_C(0x02626D), 4}, + {RUNE_C(0x02F890), 9}, +}; + +__MLIB_DEFINE_BSEARCH_KV(double, lookup, NAN) + +double +uprop_get_nv(rune ch) +{ + return ch < lengthof(lookup_lat1) ? lookup_lat1[ch] : mlib_lookup_kv(ch); +} -- cgit v1.2.3