shithub: femtolisp

Download patch

ref: 3ed9ff527d835053ec068ab90b8ee373aa99e4f1
parent: 1fff9ac1ed55d980db14dcd9c57795b6c11154bd
author: Sigrid Solveig Haflínudóttir <sigrid@ftrv.se>
date: Thu Oct 24 22:26:24 EDT 2024

replace old plan 9 is*rune and to*rune with up to date logic from 9front

--- /dev/null
+++ b/3rd/utf/runeistype.c
@@ -1,0 +1,50 @@
+#include "platform.h"
+#include "runeistypedata"
+
+int
+isspacerune(Rune c)
+{
+	if(c > Runemax)
+		return 0;
+	return (mergedlkup(c) & Lspace) == Lspace;
+}
+
+int
+isalpharune(Rune c)
+{
+	if(c > Runemax)
+		return 0;
+	return (mergedlkup(c) & Lalpha) == Lalpha;
+}
+
+int
+isdigitrune(Rune c)
+{
+	if(c > Runemax)
+		return 0;
+	return (mergedlkup(c) & Ldigit) == Ldigit;
+}
+
+int
+isupperrune(Rune c)
+{
+	if(c > Runemax)
+		return 0;
+	return (mergedlkup(c) & Lupper) == Lupper;
+}
+
+int
+islowerrune(Rune c)
+{
+	if(c > Runemax)
+		return 0;
+	return (mergedlkup(c) & Llower) == Llower;
+}
+
+int
+istitlerune(Rune c)
+{
+	if(c > Runemax)
+		return 0;
+	return (mergedlkup(c) & Ltitle) == Ltitle;
+}
--- /dev/null
+++ b/3rd/utf/runeistypedata
@@ -1,0 +1,1126 @@
+static
+uchar	_mergeddata[11769] =
+{
+	0,0,0,0,0,0,0,0,0,1,1,1,1,1,0,0,
+	0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,0,
+	0,0,0,0,0,0,0,0,0,0,0,0,0,0,4,4,
+	4,4,4,4,4,4,4,4,0,0,0,0,0,0,42,42,
+	42,42,42,42,42,42,42,42,42,42,42,42,42,0,0,0,
+	0,0,18,18,18,18,18,18,18,18,18,18,18,18,18,18,
+	18,0,0,0,0,0,1,0,0,0,0,0,0,0,0,0,
+	0,0,0,0,0,0,0,1,0,0,0,0,0,0,0,0,
+	0,2,0,0,0,0,0,18,0,0,0,0,2,0,0,0,
+	0,0,42,42,42,42,42,42,42,42,42,42,42,42,42,42,
+	42,42,0,42,42,42,42,42,42,42,18,18,18,18,18,18,
+	18,18,18,18,18,18,18,18,18,18,0,18,18,18,18,18,
+	18,18,18,42,18,42,18,42,18,42,18,42,18,42,18,42,
+	18,42,18,10,18,42,18,42,18,42,18,18,42,18,42,18,
+	42,18,42,18,18,42,18,42,18,42,18,42,18,42,18,42,
+	18,42,18,42,18,42,42,18,42,18,42,18,18,42,42,18,
+	42,18,42,42,18,42,42,42,18,18,42,42,18,42,42,18,
+	42,42,42,18,18,18,42,42,18,42,18,42,18,42,42,18,
+	42,18,18,42,18,42,42,42,18,42,18,42,42,18,18,2,
+	42,18,18,18,2,2,2,2,10,34,18,10,34,18,10,34,
+	18,42,18,42,18,42,18,42,18,42,18,42,18,18,42,18,
+	42,18,42,18,42,18,42,18,42,18,42,18,42,18,10,34,
+	18,42,18,42,42,42,18,42,18,42,18,42,18,42,18,42,
+	18,42,18,42,18,18,18,18,18,18,18,42,42,18,42,42,
+	18,42,18,42,42,42,42,18,42,18,42,18,42,18,42,18,
+	18,18,18,18,18,18,18,18,18,18,18,18,18,18,18,2,
+	18,18,18,18,18,18,18,18,18,18,18,18,18,18,18,18,
+	2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,
+	0,0,0,0,2,2,2,2,2,2,2,2,2,2,0,0,
+	0,0,0,0,0,0,0,0,0,0,0,0,2,2,2,2,
+	2,0,0,0,0,0,0,0,2,0,2,0,0,0,0,0,
+	0,0,0,0,0,0,0,0,0,0,0,42,18,42,18,2,
+	0,42,18,0,0,2,18,18,18,0,42,0,0,0,0,0,
+	0,42,0,42,42,42,0,42,0,42,42,18,42,42,42,42,
+	42,42,42,42,42,42,42,42,42,42,42,0,42,42,42,42,
+	42,42,42,42,42,18,18,18,18,18,18,18,18,18,18,18,
+	18,18,18,18,18,42,18,18,10,10,10,18,18,18,42,18,
+	42,18,42,18,42,18,42,18,42,18,42,18,42,18,18,18,
+	18,10,18,0,42,18,42,42,18,18,42,42,42,42,42,42,
+	42,42,42,42,42,42,42,42,42,42,18,18,18,18,18,18,
+	18,18,18,18,18,18,18,18,18,18,42,18,42,18,42,18,
+	42,18,42,18,42,18,42,18,42,18,0,0,0,0,0,0,
+	0,0,42,18,42,18,42,18,42,18,42,18,42,18,42,18,
+	42,18,42,42,18,42,18,42,18,42,18,42,18,42,18,42,
+	18,18,42,18,42,18,42,18,42,18,42,18,42,18,42,18,
+	42,18,0,42,42,42,42,42,42,42,42,42,42,42,42,42,
+	42,42,42,0,0,2,0,0,0,0,0,0,18,18,18,18,
+	18,18,18,18,18,18,18,18,18,18,18,18,0,0,0,0,
+	0,0,0,0,0,0,0,0,0,0,0,0,2,2,2,2,
+	2,2,2,2,2,2,2,2,2,2,2,2,0,0,0,0,
+	2,2,2,0,0,0,0,0,0,0,0,0,0,0,0,0,
+	0,0,0,2,2,2,2,2,2,2,2,2,2,2,2,2,
+	2,2,2,0,0,0,0,0,0,0,0,0,0,0,0,0,
+	0,0,0,4,4,4,4,4,4,4,4,4,4,0,0,0,
+	0,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,
+	2,0,2,0,0,0,0,0,0,0,0,0,0,2,2,0,
+	0,0,0,0,0,0,2,2,4,4,4,4,4,4,4,4,
+	4,4,2,2,2,0,0,2,0,0,0,0,0,0,0,0,
+	0,0,0,0,0,0,0,0,2,0,2,2,2,2,2,2,
+	2,2,2,2,2,2,2,2,2,2,0,0,0,0,0,0,
+	0,0,0,0,0,0,0,0,0,0,2,2,2,2,2,2,
+	2,2,2,2,2,2,2,2,2,2,0,0,0,0,0,0,
+	0,0,0,0,2,0,0,0,0,0,0,0,0,0,0,0,
+	0,0,0,4,4,4,4,4,4,4,4,4,4,2,2,2,
+	2,2,2,2,2,2,2,2,2,2,2,2,2,0,0,0,
+	0,0,2,2,0,0,0,0,2,0,0,0,0,0,2,2,
+	2,2,2,2,2,2,2,2,2,2,2,2,2,2,0,0,
+	0,0,2,0,0,0,0,0,2,0,0,0,2,0,0,0,
+	0,0,0,0,0,0,0,0,0,0,0,0,0,2,2,2,
+	2,2,2,2,2,2,2,2,2,2,2,2,2,0,0,0,
+	0,0,0,0,2,2,2,2,2,2,2,2,2,2,2,0,
+	0,0,0,0,2,2,2,2,2,2,2,2,2,2,2,2,
+	2,2,2,2,0,2,2,2,2,2,2,0,0,0,0,0,
+	0,0,0,0,0,0,0,0,0,0,0,2,2,2,2,2,
+	2,2,2,2,2,2,2,2,2,2,2,0,0,0,0,0,
+	0,0,0,0,0,0,0,0,0,0,0,2,2,2,2,2,
+	2,2,2,2,2,2,2,2,2,2,2,0,0,0,2,0,
+	0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,2,
+	0,0,0,0,0,0,0,2,2,2,2,2,2,2,2,0,
+	0,0,0,4,4,4,4,4,4,4,4,4,4,0,2,2,
+	2,2,2,2,2,2,2,2,2,2,2,2,2,0,0,0,
+	0,2,2,2,2,2,2,2,2,0,0,2,2,2,2,2,
+	2,2,2,2,2,2,2,2,0,2,2,2,2,2,2,0,
+	2,0,0,0,2,2,2,2,0,0,0,2,0,0,0,0,
+	0,0,0,0,0,0,0,0,0,0,2,0,0,0,0,0,
+	0,0,0,0,0,0,0,2,2,0,2,2,0,0,0,0,
+	4,4,4,4,4,4,4,4,4,4,2,2,0,0,0,0,
+	0,0,0,0,0,0,2,0,0,0,0,0,2,2,2,2,
+	2,2,0,0,0,0,2,0,0,2,2,2,2,2,2,2,
+	2,2,2,2,2,2,0,2,2,2,2,2,2,0,2,2,
+	0,2,2,0,2,2,0,0,0,0,0,0,0,0,0,0,
+	0,0,0,0,0,0,2,2,2,2,0,2,0,0,0,0,
+	0,0,4,4,4,4,4,4,4,4,4,4,0,0,2,2,
+	2,0,0,0,0,0,0,0,0,0,0,0,2,2,2,2,
+	2,2,2,2,2,0,2,2,2,2,2,2,2,2,2,2,
+	2,2,2,0,2,2,2,2,2,2,0,2,2,0,2,2,
+	2,2,2,0,0,0,2,0,0,0,0,0,0,0,0,0,
+	0,0,0,0,0,0,0,2,0,0,0,0,0,0,0,0,
+	0,0,0,0,0,0,0,2,2,0,0,0,0,4,4,4,
+	4,4,4,4,4,4,4,0,0,0,0,0,0,0,0,0,
+	2,0,0,0,0,0,0,2,2,2,2,2,2,2,2,0,
+	0,2,2,2,2,2,2,2,2,2,2,2,2,2,0,2,
+	2,2,2,2,2,0,2,2,0,2,2,2,2,2,0,0,
+	0,2,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+	0,0,2,2,0,2,2,0,0,0,0,4,4,4,4,4,
+	4,4,4,4,4,0,2,0,0,0,0,0,0,0,0,0,
+	0,0,0,0,0,2,0,2,2,2,2,2,2,0,0,0,
+	2,2,0,2,2,2,2,0,0,0,2,2,0,2,0,2,
+	2,0,0,0,2,2,0,0,0,2,2,2,0,0,0,2,
+	2,2,2,2,2,2,2,2,2,0,0,0,0,0,0,0,
+	0,0,0,0,0,0,0,0,0,2,0,0,0,0,0,0,
+	0,0,0,0,0,0,0,0,0,4,4,4,4,4,4,4,
+	4,4,4,0,0,0,0,0,0,0,0,0,0,0,0,0,
+	0,0,0,2,2,2,2,2,2,2,2,0,2,2,2,2,
+	2,2,2,2,2,2,2,2,2,2,0,2,2,2,2,2,
+	2,2,2,2,2,0,0,0,2,0,0,0,0,0,0,0,
+	0,0,0,0,0,0,0,0,0,2,2,2,0,0,2,0,
+	0,2,2,0,0,0,0,4,4,4,4,4,4,4,4,4,
+	4,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+	0,2,0,0,0,0,2,2,2,2,2,2,2,2,0,2,
+	2,2,2,2,2,2,2,2,2,2,2,2,2,0,2,2,
+	2,2,2,2,0,2,2,2,2,2,0,0,0,2,0,0,
+	0,0,0,0,0,0,0,0,0,0,0,0,0,0,2,2,
+	0,0,0,0,4,4,4,4,4,4,4,4,4,4,0,2,
+	2,0,0,0,0,0,0,0,0,0,0,0,0,0,2,2,
+	2,2,2,2,2,2,2,0,2,2,2,2,2,2,2,2,
+	2,2,2,2,2,2,2,2,0,0,2,0,0,0,0,0,
+	0,0,0,0,0,0,0,0,0,2,0,0,0,0,2,2,
+	2,0,0,0,0,0,0,0,0,2,2,0,0,0,0,4,
+	4,4,4,4,4,4,4,4,4,0,0,0,0,0,0,0,
+	0,0,0,2,2,2,2,2,2,2,2,2,2,2,0,0,
+	0,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,
+	2,0,2,2,2,2,2,2,2,2,2,0,2,0,0,2,
+	2,2,2,2,2,2,0,0,0,0,0,0,0,0,0,0,
+	0,0,0,0,0,0,4,4,4,4,4,4,4,4,4,4,
+	0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+	2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,
+	0,2,2,0,0,0,0,0,0,0,0,0,0,0,0,2,
+	2,2,2,2,2,2,0,0,0,0,0,0,0,0,0,4,
+	4,4,4,4,4,4,4,4,4,0,0,0,0,0,0,0,
+	0,0,0,0,0,0,0,0,0,2,2,0,2,0,2,2,
+	2,2,2,0,2,2,2,2,2,2,2,2,2,2,2,2,
+	2,2,2,2,0,2,0,2,2,2,2,2,2,2,2,2,
+	0,2,2,0,0,0,0,0,0,0,0,0,2,0,0,2,
+	2,2,2,2,0,2,0,0,0,0,0,0,0,0,0,4,
+	4,4,4,4,4,4,4,4,4,0,0,2,2,2,2,0,
+	0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,2,
+	0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+	4,4,4,4,4,4,4,4,4,4,0,0,0,0,0,0,
+	0,0,0,0,0,0,0,0,0,0,2,2,2,2,2,2,
+	2,2,0,2,2,2,2,2,2,2,2,2,2,2,2,2,
+	2,2,2,0,0,0,0,0,0,0,0,0,0,0,0,0,
+	0,0,0,2,2,2,2,2,0,0,0,0,0,0,0,0,
+	0,0,0,0,0,0,0,0,2,2,2,2,2,2,2,2,
+	2,2,2,2,2,2,2,2,0,0,0,0,0,0,0,0,
+	0,0,0,0,0,0,0,2,4,4,4,4,4,4,4,4,
+	4,4,0,0,0,0,0,0,2,2,2,2,2,2,0,0,
+	0,0,2,2,2,2,0,0,2,0,0,0,2,2,0,0,
+	0,0,0,0,0,2,2,0,0,0,0,2,2,2,2,2,
+	2,2,2,2,2,2,0,0,0,0,0,0,0,0,0,0,
+	0,0,2,0,4,4,4,4,4,4,4,4,4,4,0,0,
+	0,0,0,0,42,42,42,42,42,42,42,42,42,42,42,42,
+	42,42,42,42,0,42,0,0,0,0,0,42,0,0,50,50,
+	50,50,50,50,50,50,50,50,50,50,50,50,50,50,0,2,
+	50,50,50,2,2,2,2,2,2,2,2,2,2,2,2,2,
+	2,2,2,0,2,2,2,2,0,0,2,2,2,2,2,2,
+	2,0,2,0,2,2,2,2,0,0,2,2,2,2,2,2,
+	2,2,2,2,2,2,2,2,2,2,0,2,2,2,2,0,
+	0,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,
+	2,0,2,2,2,2,0,0,2,2,2,2,2,2,2,0,
+	2,2,2,2,0,0,2,2,2,2,2,2,2,2,0,2,
+	2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,0,
+	2,2,2,2,0,0,2,2,2,2,2,2,2,2,2,2,
+	2,2,2,2,2,2,0,0,0,0,0,0,0,0,0,0,
+	0,0,0,0,0,0,2,2,2,2,2,2,2,2,2,2,
+	2,2,2,2,2,2,0,0,0,0,0,0,0,0,0,0,
+	0,0,0,0,0,0,42,42,42,42,42,42,42,42,42,42,
+	42,42,42,42,42,42,0,0,18,18,18,18,18,18,0,0,
+	2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,
+	0,0,2,2,2,2,2,2,2,2,2,2,2,2,2,2,
+	2,2,1,2,2,2,2,2,2,2,2,2,2,2,2,2,
+	2,2,0,0,0,0,0,2,2,2,2,2,2,2,2,2,
+	2,2,2,2,2,2,2,0,0,0,0,0,2,2,2,2,
+	2,2,2,2,0,0,0,0,0,0,0,2,2,2,2,2,
+	2,2,2,2,2,2,2,2,2,2,2,0,0,0,0,0,
+	0,0,0,0,0,0,0,0,2,2,2,2,2,2,2,2,
+	2,2,2,2,2,2,2,2,0,0,0,0,0,0,0,0,
+	0,0,0,0,0,0,2,2,2,2,2,2,2,2,2,2,
+	2,2,2,2,2,2,0,0,0,0,0,0,0,0,0,0,
+	0,0,0,0,2,2,2,2,2,2,2,2,2,2,2,2,
+	2,0,2,2,0,0,0,0,0,0,0,0,0,0,0,0,
+	0,0,0,2,2,2,2,2,2,2,2,2,2,2,2,2,
+	2,2,2,0,0,0,0,0,0,0,0,0,0,0,0,0,
+	0,0,0,2,0,0,0,0,2,0,0,0,4,4,4,4,
+	4,4,4,4,4,4,0,0,0,0,0,0,0,0,0,0,
+	0,0,0,0,0,0,4,4,4,4,4,4,4,4,4,4,
+	0,0,0,0,0,0,2,2,2,2,2,2,2,2,2,2,
+	2,2,2,2,2,2,0,0,0,0,0,0,0,2,2,2,
+	2,2,0,0,2,2,2,2,2,2,2,2,2,2,2,2,
+	2,2,2,2,0,2,0,0,0,0,0,2,2,2,2,2,
+	2,2,2,2,2,2,2,2,2,2,2,0,0,0,0,0,
+	0,0,0,0,0,2,2,2,2,2,2,2,2,2,2,2,
+	2,2,2,2,2,0,0,0,0,0,0,0,0,0,0,0,
+	0,0,0,0,0,4,4,4,4,4,4,4,4,4,4,2,
+	2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,0,
+	0,0,0,0,0,0,0,0,0,0,2,2,2,2,2,2,
+	2,2,2,2,2,2,2,2,2,2,0,0,0,0,2,2,
+	2,2,2,2,2,2,2,2,2,2,2,2,2,2,0,0,
+	0,0,0,0,4,4,4,4,4,4,4,4,4,4,0,0,
+	0,0,0,0,0,0,0,0,0,0,0,0,0,0,2,2,
+	2,2,2,2,2,2,2,2,2,2,2,2,2,2,0,0,
+	0,0,0,0,0,0,0,2,2,2,2,2,2,2,2,2,
+	2,2,2,2,2,2,2,0,0,0,0,0,0,0,0,0,
+	0,0,0,0,0,0,0,4,4,4,4,4,4,4,4,4,
+	4,0,0,0,0,0,0,0,2,0,0,0,0,0,0,0,
+	0,0,0,0,0,0,0,0,0,2,2,2,2,2,2,2,
+	2,2,2,2,2,2,2,2,2,0,0,0,0,0,0,0,
+	0,0,0,0,0,2,2,2,2,2,2,2,2,0,0,0,
+	4,4,4,4,4,4,4,4,4,4,0,0,0,0,0,0,
+	0,0,0,0,0,0,0,0,0,0,2,2,2,2,2,2,
+	2,2,2,2,2,2,2,2,2,2,0,0,0,0,0,0,
+	0,0,0,0,0,0,0,2,2,4,4,4,4,4,4,4,
+	4,4,4,2,2,2,2,2,2,2,2,2,2,2,2,2,
+	2,2,2,0,0,0,0,0,0,0,0,0,0,0,0,0,
+	0,0,0,2,2,2,2,2,2,2,2,2,2,2,2,2,
+	2,2,2,0,0,0,0,0,0,0,0,0,0,0,0,0,
+	0,0,0,4,4,4,4,4,4,4,4,4,4,0,0,0,
+	2,2,2,4,4,4,4,4,4,4,4,4,4,2,2,2,
+	2,2,2,2,2,2,2,2,2,2,2,2,2,0,0,18,
+	18,18,18,18,18,18,18,18,0,0,0,0,0,0,0,10,
+	10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,0,
+	0,10,10,10,0,0,0,0,0,0,0,0,0,0,0,0,
+	0,0,0,0,2,2,2,2,0,2,2,0,0,0,2,0,
+	0,0,0,0,18,18,18,18,18,18,18,18,18,18,18,18,
+	18,18,18,18,2,2,2,2,2,2,2,2,2,2,2,2,
+	2,2,2,2,18,18,18,18,18,18,18,18,2,18,18,18,
+	18,18,18,18,18,18,18,18,18,18,18,18,18,2,2,2,
+	2,2,2,2,2,2,2,2,2,2,2,2,2,0,0,0,
+	0,0,0,0,0,0,0,0,0,0,0,0,0,42,18,42,
+	18,42,18,42,18,42,18,42,18,42,18,42,18,18,18,18,
+	18,18,18,18,18,10,18,42,18,42,18,42,18,42,18,42,
+	18,42,18,42,18,42,18,18,18,18,18,18,18,18,42,42,
+	42,42,42,42,42,42,18,18,18,18,18,18,0,0,42,42,
+	42,42,42,42,0,0,18,18,18,18,18,18,18,18,42,42,
+	42,42,42,42,42,42,18,18,18,18,18,18,0,0,42,42,
+	42,42,42,42,0,0,18,18,18,18,18,18,18,18,0,42,
+	0,42,0,42,0,42,18,18,18,18,18,18,18,18,42,42,
+	42,42,42,42,42,42,18,18,18,18,18,18,18,18,18,18,
+	18,18,18,18,0,0,18,18,18,18,18,18,18,18,42,42,
+	42,42,42,42,42,42,18,18,18,18,18,0,18,18,42,42,
+	42,42,42,0,18,0,0,18,18,18,0,18,18,42,42,42,
+	42,42,0,0,0,18,18,18,18,0,0,18,18,42,42,42,
+	42,0,0,0,0,18,18,18,18,18,18,18,18,42,42,42,
+	42,42,0,0,0,18,18,18,0,18,18,42,42,42,42,42,
+	0,0,0,1,1,1,1,1,1,1,1,1,1,1,0,0,
+	0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,1,
+	0,0,0,0,0,1,0,0,0,0,0,0,0,0,0,0,
+	0,0,0,0,0,0,1,0,0,0,0,0,0,0,0,0,
+	0,0,0,0,0,0,0,2,0,0,0,0,0,0,0,0,
+	0,0,0,0,0,2,0,0,0,0,0,0,0,0,0,0,
+	0,0,0,0,0,0,2,2,2,2,2,2,2,2,2,2,
+	2,2,2,0,0,0,0,0,0,0,0,0,0,0,0,0,
+	0,0,0,10,0,0,0,0,10,0,0,18,10,10,10,18,
+	18,10,10,10,18,0,10,0,0,0,10,10,10,10,10,0,
+	0,0,0,10,0,10,0,10,0,10,10,10,10,0,18,10,
+	10,42,10,18,2,2,2,2,18,0,0,18,18,10,10,0,
+	0,0,0,0,10,18,18,18,18,0,0,0,0,18,0,0,
+	0,0,0,0,0,0,0,0,0,0,0,0,0,0,40,40,
+	40,40,40,40,40,40,40,40,40,40,40,40,40,40,16,16,
+	16,16,16,16,16,16,16,16,16,16,16,16,16,16,0,0,
+	0,42,18,0,0,0,0,0,0,0,0,0,0,0,0,0,
+	0,0,0,40,40,40,40,40,40,40,40,40,40,40,40,40,
+	40,40,40,16,16,16,16,16,16,16,16,16,16,16,16,16,
+	16,16,16,0,0,0,0,0,0,0,0,0,0,0,0,0,
+	0,0,0,42,42,42,42,42,42,42,42,42,42,42,42,42,
+	42,42,42,18,18,18,18,18,18,18,18,18,18,18,18,18,
+	18,18,18,42,18,42,42,42,18,18,42,18,42,18,42,18,
+	42,42,42,18,42,18,18,42,18,18,18,18,18,18,2,2,
+	42,42,18,42,18,42,18,42,18,42,18,42,18,42,18,42,
+	18,18,0,0,0,0,0,0,42,18,42,18,0,0,42,18,
+	0,0,0,0,0,0,0,0,0,0,0,0,18,18,18,18,
+	18,18,18,18,18,18,18,18,18,18,18,18,0,18,0,0,
+	0,0,0,18,0,0,2,2,2,2,2,2,2,2,2,2,
+	2,2,2,2,2,2,0,0,0,0,0,0,0,2,0,0,
+	0,0,0,0,0,0,0,0,0,0,0,0,0,0,2,2,
+	2,2,2,2,2,2,2,2,2,2,2,2,2,2,0,0,
+	0,0,0,0,0,0,0,2,2,2,2,2,2,2,0,2,
+	2,2,2,2,2,2,0,0,0,0,0,0,0,0,0,0,
+	0,0,0,0,0,0,2,0,0,0,0,0,0,0,0,0,
+	0,0,0,0,0,0,0,1,0,0,0,0,2,2,0,0,
+	0,0,0,0,0,0,0,0,0,0,0,0,0,0,2,2,
+	2,2,2,0,0,0,0,0,2,2,0,0,0,2,2,2,
+	2,2,2,2,2,2,2,2,2,2,2,2,2,0,0,0,
+	0,0,0,2,2,2,2,2,2,2,2,2,2,2,2,2,
+	2,2,2,0,2,2,2,2,0,0,0,0,0,2,2,2,
+	2,2,2,2,2,2,2,2,2,2,2,2,2,0,2,2,
+	2,2,2,2,2,2,2,2,2,2,2,2,2,2,0,0,
+	0,0,0,0,0,0,0,0,0,0,0,0,0,0,2,2,
+	2,2,2,2,2,2,2,2,2,2,2,2,2,2,0,0,
+	0,0,0,0,0,0,0,0,0,0,0,0,0,0,2,2,
+	2,2,2,2,2,2,2,2,2,2,2,2,2,2,0,0,
+	0,0,0,0,0,0,0,0,0,0,0,0,0,0,2,2,
+	2,2,2,2,2,2,2,2,2,2,2,2,2,2,0,0,
+	0,0,0,0,0,0,0,0,0,0,0,0,0,0,2,2,
+	2,2,2,2,2,2,2,2,2,2,2,2,2,2,0,0,
+	0,0,0,0,0,0,0,0,0,0,0,0,0,0,2,2,
+	2,2,2,2,2,2,2,2,2,2,2,2,2,2,0,0,
+	2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,
+	0,0,0,2,2,2,2,2,2,2,2,2,2,2,2,2,
+	2,2,2,4,4,4,4,4,4,4,4,4,4,2,2,0,
+	0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,42,
+	18,42,18,42,18,42,18,42,18,42,18,42,18,42,18,2,
+	0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,2,
+	42,18,42,18,42,18,42,18,42,18,42,18,42,18,42,18,
+	2,2,0,0,2,2,2,2,2,2,2,2,2,2,2,2,
+	2,2,2,2,0,0,0,0,0,0,0,0,0,0,0,0,
+	0,0,0,0,2,2,2,2,2,2,2,2,2,0,0,42,
+	18,42,18,42,18,42,18,42,18,42,18,42,18,18,42,18,
+	42,18,42,18,42,18,42,18,42,18,42,18,42,18,2,18,
+	18,18,18,18,18,18,18,42,18,42,18,42,42,18,42,18,
+	42,18,42,18,2,0,0,42,18,42,18,2,42,18,42,18,
+	18,18,42,18,42,18,42,18,42,18,42,18,42,42,42,42,
+	42,18,42,18,42,18,42,18,42,18,42,18,42,42,42,42,
+	18,42,18,0,0,0,0,0,42,18,0,18,0,18,42,18,
+	42,18,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+	0,0,2,2,2,42,18,2,2,2,18,2,2,2,2,2,
+	0,2,2,2,0,2,2,2,2,0,2,2,2,2,2,2,
+	2,2,2,2,2,2,2,2,2,2,0,0,0,0,0,0,
+	0,0,0,0,0,0,0,0,0,0,2,2,2,2,2,2,
+	2,2,2,2,2,2,2,2,2,2,0,0,0,0,0,0,
+	0,0,0,0,0,0,2,2,2,2,2,2,2,2,2,2,
+	2,2,2,2,2,2,0,0,0,0,0,0,0,0,0,0,
+	0,0,0,0,0,0,4,4,4,4,4,4,4,4,4,4,
+	0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+	2,2,2,2,2,2,0,0,0,2,0,2,2,0,4,4,
+	4,4,4,4,4,4,4,4,2,2,2,2,2,2,2,2,
+	2,2,2,2,2,2,2,2,0,0,0,0,0,0,0,0,
+	0,0,2,2,2,2,2,2,2,2,2,2,2,2,2,2,
+	2,2,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+	0,0,2,2,2,2,2,2,2,2,2,2,2,2,2,2,
+	2,2,0,0,0,0,2,2,2,2,2,2,2,2,2,2,
+	2,2,2,2,2,2,0,0,0,0,0,0,0,0,0,0,
+	0,0,0,0,0,2,4,4,4,4,4,4,4,4,4,4,
+	0,0,0,0,0,0,2,2,2,2,2,0,2,2,2,2,
+	2,2,2,2,2,2,4,4,4,4,4,4,4,4,4,4,
+	2,2,2,2,2,0,2,2,2,2,2,2,2,2,2,2,
+	2,2,2,2,2,2,0,0,0,0,0,0,0,0,0,0,
+	0,0,0,0,0,0,2,2,2,0,2,2,2,2,2,2,
+	2,2,0,0,0,0,4,4,4,4,4,4,4,4,4,4,
+	0,0,0,0,0,0,2,2,2,2,2,2,2,2,2,2,
+	2,2,2,2,2,2,0,0,0,2,0,0,0,2,2,2,
+	2,2,2,2,2,2,2,2,2,2,2,2,2,0,2,0,
+	0,0,2,2,0,0,2,2,2,2,2,0,0,2,0,2,
+	0,0,0,0,0,0,0,0,0,0,0,0,0,2,2,2,
+	0,0,2,2,2,2,2,2,2,2,2,2,2,0,0,0,
+	0,0,2,2,2,0,0,0,0,0,0,0,0,0,0,0,
+	2,2,2,2,2,2,0,0,2,2,2,2,2,2,0,0,
+	0,0,0,0,0,0,0,2,2,2,2,2,2,2,0,2,
+	2,2,2,2,2,2,0,18,18,18,18,18,18,18,18,18,
+	18,18,18,18,18,18,18,0,2,2,2,2,18,18,18,18,
+	18,18,18,18,18,2,0,0,0,0,0,0,18,18,18,18,
+	18,18,18,18,18,18,18,18,18,18,18,18,2,2,2,2,
+	2,2,2,2,2,2,2,2,2,2,2,2,0,0,0,0,
+	0,0,0,0,0,0,0,0,0,4,4,4,4,4,4,4,
+	4,4,4,0,0,0,0,0,0,2,2,2,2,2,2,2,
+	2,2,2,2,2,2,2,2,2,0,0,0,0,0,0,0,
+	0,0,0,0,0,2,2,2,2,2,2,2,2,2,2,2,
+	2,2,2,2,2,0,0,0,0,2,2,2,2,2,2,2,
+	2,2,2,2,2,2,2,2,2,0,0,0,0,0,0,0,
+	0,0,0,0,0,0,0,0,0,2,2,2,2,2,2,2,
+	2,2,2,2,2,2,2,2,2,0,0,2,2,2,2,2,
+	2,2,2,2,2,2,2,2,2,2,2,0,0,0,0,0,
+	0,0,0,0,0,0,0,0,0,0,0,18,18,18,18,18,
+	18,18,0,0,0,0,0,0,0,0,0,18,18,18,18,18,
+	0,0,0,0,0,2,0,2,2,2,2,2,2,2,2,2,
+	0,2,2,2,2,2,2,2,0,2,2,2,2,2,0,2,
+	0,2,2,0,2,2,0,2,2,2,2,2,2,2,2,2,
+	2,2,2,2,2,2,2,0,0,0,0,0,0,0,0,0,
+	0,0,0,0,0,0,0,2,2,2,2,2,2,2,2,2,
+	2,2,2,2,2,2,2,0,0,0,0,0,0,0,0,0,
+	0,0,0,0,0,0,0,2,2,2,2,2,2,2,2,2,
+	2,2,2,2,2,2,2,0,0,2,2,2,2,2,2,2,
+	2,2,2,2,2,2,2,2,2,0,0,0,0,0,0,0,
+	0,0,0,0,0,0,0,0,0,2,2,2,2,2,2,2,
+	2,2,2,2,2,0,0,0,0,0,0,0,0,0,0,0,
+	0,0,0,0,0,2,2,2,2,2,0,2,2,2,2,2,
+	2,2,2,2,2,2,2,2,2,2,2,0,0,1,0,0,
+	0,0,0,0,0,0,0,0,0,0,0,0,0,0,4,4,
+	4,4,4,4,4,4,4,4,0,0,0,0,0,0,42,42,
+	42,42,42,42,42,42,42,42,42,42,42,42,42,0,0,0,
+	0,0,18,18,18,18,18,18,18,18,18,18,18,18,18,18,
+	18,0,0,0,0,0,0,2,2,2,2,2,2,2,2,2,
+	2,2,2,2,2,2,2,0,0,2,2,2,2,2,2,0,
+	0,2,2,2,2,2,2,0,0,2,2,2,0,0,0,0,
+	0,0,0,0,0,0,0,0,0,0,0,0,2,2,2,2,
+	2,2,2,2,2,2,2,2,0,2,2,2,2,2,2,2,
+	2,2,2,2,2,2,2,2,2,0,2,2,2,2,2,2,
+	2,2,2,2,2,0,2,2,0,2,2,2,2,2,2,2,
+	2,2,2,2,2,2,2,0,0,0,0,0,0,0,0,0,
+	0,0,0,0,0,0,0,2,2,2,2,2,2,2,2,2,
+	2,2,2,2,2,2,2,0,0,0,0,0,0,0,0,0,
+	0,0,0,0,0,0,0,2,2,2,2,2,2,2,2,2,
+	2,2,2,2,2,2,2,0,0,0,2,2,2,2,2,2,
+	2,2,2,2,2,2,2,2,2,2,0,0,0,0,0,0,
+	0,0,0,0,0,0,0,0,0,0,2,2,2,2,2,2,
+	2,2,2,2,2,2,2,2,2,2,0,0,0,0,0,0,
+	0,0,0,0,0,0,0,2,2,2,2,2,2,2,2,2,
+	2,2,2,2,2,2,2,0,2,2,2,2,2,2,2,2,
+	0,0,0,0,0,0,2,2,2,2,2,2,2,2,2,2,
+	2,2,2,2,2,2,0,0,0,0,0,0,0,0,0,0,
+	2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,
+	0,0,2,2,2,2,2,2,2,2,2,2,2,2,2,2,
+	2,2,0,0,0,0,2,2,2,2,2,2,2,2,0,0,
+	0,0,0,0,0,0,0,0,0,0,0,0,0,0,42,42,
+	42,42,42,42,42,42,42,42,42,42,42,42,42,42,18,18,
+	18,18,18,18,18,18,18,18,18,18,18,18,18,18,2,2,
+	2,2,2,2,2,2,2,2,2,2,2,2,2,2,0,0,
+	4,4,4,4,4,4,4,4,4,4,0,0,0,0,0,0,
+	42,42,42,42,42,42,42,42,42,42,42,42,42,42,42,42,
+	0,0,0,0,18,18,18,18,18,18,18,18,18,18,18,18,
+	18,18,18,18,0,0,0,0,2,2,2,2,2,2,2,2,
+	2,2,2,2,2,2,2,2,0,0,0,0,0,0,0,0,
+	2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,
+	0,0,0,0,0,0,0,0,0,0,0,0,42,42,42,42,
+	42,42,42,42,42,42,42,0,42,42,42,42,0,42,42,0,
+	18,18,18,18,18,18,18,18,18,0,18,18,18,18,18,18,
+	18,18,18,18,18,18,18,0,18,18,18,18,18,18,18,0,
+	18,18,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+	0,0,2,2,2,2,2,2,2,2,2,2,2,2,2,2,
+	2,2,0,0,0,0,0,0,0,0,0,2,2,2,2,2,
+	2,2,2,2,2,2,2,2,2,2,2,0,0,0,0,0,
+	0,0,0,0,0,2,2,2,2,2,2,2,2,0,0,0,
+	0,0,0,0,0,0,0,0,0,0,0,0,0,2,2,2,
+	2,2,2,0,2,2,2,2,2,2,2,2,2,2,2,2,
+	2,2,2,2,0,2,2,2,2,2,2,2,2,2,0,0,
+	0,0,0,0,0,0,0,0,0,0,0,0,0,0,2,2,
+	2,2,2,2,0,0,2,0,2,2,2,2,2,2,2,2,
+	2,2,2,2,2,2,2,2,0,2,2,0,0,0,2,0,
+	0,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,
+	2,0,0,0,0,0,0,0,0,0,0,2,2,2,2,2,
+	2,2,2,2,2,2,2,2,2,2,2,0,0,0,0,0,
+	0,0,0,0,2,2,2,2,2,2,2,2,2,2,2,2,
+	2,2,2,2,0,0,0,0,0,0,0,0,0,0,0,0,
+	0,0,0,0,2,2,2,2,2,2,2,2,2,2,2,2,
+	2,2,2,2,0,2,2,0,0,0,0,0,0,0,0,0,
+	0,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,
+	2,0,0,0,0,0,0,0,0,0,0,2,2,2,2,2,
+	2,2,2,2,2,2,2,2,2,2,2,0,0,0,0,0,
+	0,0,0,0,0,0,0,0,0,0,0,2,2,2,2,2,
+	2,2,2,2,2,2,2,2,2,2,2,0,0,0,0,0,
+	0,2,2,0,0,0,0,0,0,0,0,0,0,0,0,0,
+	0,0,0,2,0,0,0,0,0,0,0,0,0,0,0,0,
+	0,0,0,2,2,2,2,0,2,2,2,0,2,2,2,2,
+	2,2,2,2,2,2,2,2,2,2,2,2,0,0,0,0,
+	0,0,0,0,0,0,0,0,0,0,0,0,2,2,2,2,
+	2,2,2,2,2,2,2,2,2,2,2,2,0,0,0,2,
+	2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,0,
+	0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,2,
+	2,2,2,2,2,2,2,0,2,2,2,2,2,2,2,2,
+	2,2,2,2,2,2,2,2,0,0,0,0,0,0,0,0,
+	0,0,0,0,0,0,0,0,2,2,2,2,2,2,2,2,
+	2,2,2,2,2,2,2,2,0,0,0,0,0,0,0,0,
+	0,0,2,2,2,2,2,2,2,2,2,2,2,2,2,2,
+	2,2,0,0,0,0,0,0,0,0,0,0,2,2,2,2,
+	2,2,2,2,2,2,2,2,2,2,2,2,0,0,0,0,
+	0,0,0,0,0,0,0,0,0,2,2,2,2,2,2,2,
+	2,2,2,2,2,2,2,2,2,0,0,0,0,0,0,0,
+	0,0,0,0,0,0,0,0,0,2,2,2,2,2,2,2,
+	2,2,2,2,2,2,2,2,2,0,0,0,0,0,0,0,
+	0,0,0,0,0,0,0,0,0,42,42,42,42,42,42,42,
+	42,42,42,42,42,42,42,42,42,0,0,0,0,0,0,0,
+	0,0,0,0,0,0,18,18,18,18,18,18,18,18,18,18,
+	18,18,18,18,18,18,0,0,0,0,0,0,0,0,0,0,
+	0,0,0,2,2,2,2,2,2,2,2,2,2,2,2,2,
+	2,2,2,0,0,0,0,0,0,0,0,0,0,0,0,4,
+	4,4,4,4,4,4,4,4,4,0,0,0,0,0,0,0,
+	0,0,0,0,0,0,0,0,0,2,2,2,2,2,2,2,
+	2,2,2,2,2,2,2,2,2,0,0,0,0,0,0,0,
+	0,0,0,0,0,0,0,0,0,2,2,2,2,2,2,2,
+	2,2,2,2,2,2,2,2,2,0,0,0,0,0,0,0,
+	2,0,0,0,0,0,0,0,0,2,2,2,2,2,2,2,
+	2,2,2,2,2,2,2,2,2,0,0,0,0,0,0,0,
+	0,0,0,0,0,0,0,0,0,2,2,2,2,2,2,2,
+	2,2,2,2,2,2,2,2,2,0,0,0,0,0,0,0,
+	0,0,0,0,0,0,0,0,0,2,2,2,2,2,2,2,
+	2,2,2,2,2,2,2,2,2,0,0,0,0,0,0,0,
+	0,0,0,0,0,0,0,0,0,2,2,2,2,2,2,2,
+	2,2,2,2,2,2,2,2,2,0,0,0,0,0,0,0,
+	0,0,2,2,2,2,2,2,2,2,2,2,2,2,2,2,
+	2,2,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+	0,0,4,4,4,4,4,4,4,4,4,4,0,2,2,0,
+	0,2,0,0,0,0,0,0,0,0,0,0,2,2,2,2,
+	2,2,2,2,2,2,2,2,2,2,2,2,0,0,0,0,
+	0,0,0,0,0,0,0,0,0,0,0,0,2,2,2,2,
+	2,2,2,2,2,2,2,2,2,2,2,2,0,0,0,0,
+	0,0,0,4,4,4,4,4,4,4,4,4,4,0,0,0,
+	0,0,0,2,2,2,2,2,2,2,2,2,2,2,2,2,
+	2,2,2,0,0,0,0,0,0,0,0,0,4,4,4,4,
+	4,4,4,4,4,4,0,0,0,0,2,0,0,2,0,0,
+	0,0,0,0,0,0,2,2,2,2,2,2,2,2,2,2,
+	2,2,2,2,2,2,0,0,0,2,0,0,0,0,0,0,
+	0,0,0,2,2,2,2,2,2,2,2,2,2,2,2,2,
+	2,2,2,0,0,0,0,0,0,0,0,0,0,0,0,0,
+	2,2,2,2,0,0,0,0,0,0,0,0,0,0,0,4,
+	4,4,4,4,4,4,4,4,4,2,0,2,0,0,0,0,
+	0,0,0,0,0,0,0,0,0,0,0,0,2,2,2,2,
+	2,2,2,2,2,2,2,2,2,2,2,2,0,2,2,2,
+	2,2,2,2,2,2,2,2,2,2,0,0,0,0,0,0,
+	0,0,0,0,0,0,0,0,0,2,0,0,0,0,0,0,
+	0,0,0,0,0,0,0,0,0,0,2,2,2,2,2,2,
+	2,0,2,0,2,2,2,2,0,2,2,2,2,2,2,2,
+	2,2,2,2,2,2,2,0,2,2,2,2,2,2,2,2,
+	2,0,0,0,0,0,0,0,2,2,2,2,2,2,2,2,
+	2,2,2,2,2,2,2,2,0,0,0,0,0,0,0,0,
+	0,0,0,0,0,0,0,0,4,4,4,4,4,4,4,4,
+	4,4,0,0,0,0,0,0,2,2,2,2,2,2,2,2,
+	0,0,2,2,2,2,2,2,2,2,2,2,2,2,2,0,
+	2,2,2,2,2,2,0,2,2,0,2,2,2,2,2,0,
+	0,0,2,0,0,0,0,0,0,0,0,0,0,0,0,0,
+	0,0,0,2,0,0,0,0,0,0,0,0,0,0,0,0,
+	2,2,2,0,0,0,0,0,0,0,0,0,0,0,0,0,
+	0,0,0,2,2,2,2,2,2,2,2,2,2,2,2,2,
+	2,2,2,0,0,0,0,0,0,0,0,0,0,0,2,2,
+	2,2,0,0,0,0,0,4,4,4,4,4,4,4,4,4,
+	4,0,0,0,0,0,2,2,0,0,0,0,0,0,0,0,
+	0,0,0,0,0,0,0,0,2,2,2,2,2,2,2,2,
+	2,2,2,2,2,2,2,2,0,0,0,0,0,0,0,0,
+	0,0,0,0,0,0,0,0,2,2,0,2,0,0,0,0,
+	0,0,0,0,4,4,4,4,4,4,4,4,4,4,0,0,
+	0,0,0,0,0,0,0,0,0,0,0,0,0,0,2,2,
+	2,2,2,2,2,2,2,2,2,2,2,2,2,2,0,0,
+	0,0,0,0,0,0,0,0,0,0,0,0,0,0,2,2,
+	2,2,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+	0,0,2,2,2,2,2,2,2,2,2,2,2,2,2,2,
+	2,2,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+	0,0,2,0,0,0,0,0,0,0,0,0,0,0,4,4,
+	4,4,4,4,4,4,4,4,0,0,0,0,0,0,0,0,
+	0,0,0,0,0,0,0,0,2,2,2,2,2,2,2,2,
+	2,2,2,2,2,2,2,2,0,0,0,0,0,0,0,0,
+	2,0,0,0,0,0,0,0,4,4,4,4,4,4,4,4,
+	4,4,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+	0,0,2,2,2,2,2,2,2,2,2,2,2,2,2,2,
+	2,2,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+	0,0,4,4,4,4,4,4,4,4,4,4,0,0,0,0,
+	0,0,2,2,2,2,2,2,2,0,0,0,0,0,0,0,
+	0,0,0,0,0,0,0,0,0,2,2,2,2,2,2,2,
+	2,2,2,2,2,2,2,2,2,0,0,0,0,0,0,0,
+	0,0,0,0,0,0,0,0,0,42,42,42,42,42,42,42,
+	42,42,42,42,42,42,42,42,42,18,18,18,18,18,18,18,
+	18,18,18,18,18,18,18,18,18,4,4,4,4,4,4,4,
+	4,4,4,0,0,0,0,0,0,0,0,0,0,0,0,0,
+	0,0,2,2,2,2,2,2,2,0,0,2,0,0,2,2,
+	2,2,0,2,2,0,2,2,2,2,2,2,2,2,2,2,
+	2,2,2,2,2,2,0,0,0,0,0,0,0,0,0,0,
+	0,0,0,0,0,2,0,0,0,0,0,0,0,0,0,0,
+	0,0,0,0,4,4,4,4,4,4,4,4,4,4,0,0,
+	0,0,0,0,0,0,0,0,0,0,0,0,0,0,2,2,
+	2,2,2,2,2,2,0,0,2,2,2,2,2,2,2,2,
+	2,2,2,2,2,2,2,2,0,0,0,0,0,0,0,0,
+	0,0,0,0,0,0,0,2,0,2,0,0,0,0,0,0,
+	0,0,0,0,0,0,0,0,0,0,2,0,0,0,0,0,
+	0,0,0,0,0,2,2,2,2,2,2,2,2,2,2,2,
+	2,2,2,2,2,0,0,0,0,0,0,0,2,0,0,0,
+	0,0,0,0,0,0,0,0,0,0,0,0,0,2,0,0,
+	0,0,0,0,0,0,0,0,0,2,2,2,2,2,2,2,
+	2,2,2,2,2,2,2,2,2,0,0,0,0,0,0,0,
+	0,0,0,0,0,0,2,0,0,0,0,0,0,0,0,0,
+	0,0,0,0,0,0,0,2,2,2,2,2,2,2,2,2,
+	2,2,2,2,2,2,2,0,0,0,0,0,0,0,0,0,
+	0,0,0,0,0,0,0,2,2,2,2,2,2,2,2,2,
+	0,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,
+	2,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+	0,2,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+	0,4,4,4,4,4,4,4,4,4,4,0,0,0,0,0,
+	0,0,0,0,0,0,0,0,0,0,0,2,2,2,2,2,
+	2,2,2,2,2,2,2,2,2,2,2,0,0,0,0,0,
+	0,0,0,0,0,0,0,0,0,0,0,2,2,2,2,2,
+	2,2,0,2,2,0,2,2,2,2,2,2,2,2,2,2,
+	2,2,2,2,2,2,0,0,0,0,0,0,0,0,0,0,
+	0,0,0,0,0,2,0,0,0,0,0,0,0,0,0,4,
+	4,4,4,4,4,4,4,4,4,0,0,0,0,0,0,2,
+	2,2,2,2,2,0,2,2,0,2,2,2,2,2,2,2,
+	2,2,2,2,2,2,2,2,2,0,0,0,0,0,0,0,
+	0,2,0,0,0,0,0,0,0,4,4,4,4,4,4,4,
+	4,4,4,0,0,0,0,0,0,0,0,0,0,0,0,0,
+	0,0,0,2,2,2,2,2,2,2,2,2,2,2,2,2,
+	2,2,2,0,0,0,0,0,0,0,0,0,0,0,0,0,
+	2,0,2,2,2,2,2,2,2,2,2,2,2,2,2,2,
+	2,2,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+	0,0,4,4,4,4,4,4,4,4,4,4,0,0,0,0,
+	0,0,0,0,0,0,0,0,0,0,0,0,2,0,0,0,
+	0,0,0,0,0,0,0,0,0,0,0,0,0,2,2,2,
+	2,2,2,2,2,2,2,2,2,2,2,2,2,0,0,0,
+	0,0,0,0,0,0,0,0,0,0,0,0,0,2,2,2,
+	2,2,2,2,2,2,2,2,2,2,2,2,2,0,0,0,
+	0,0,0,0,0,0,0,0,0,0,0,0,0,2,2,2,
+	2,2,2,2,2,2,2,2,2,2,2,2,2,0,0,0,
+	0,0,0,0,0,0,0,0,0,0,0,0,2,2,2,2,
+	2,2,2,2,2,2,2,2,2,2,2,2,0,0,0,0,
+	0,0,0,0,0,0,0,0,0,0,0,0,2,2,2,2,
+	2,2,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+	0,0,2,2,2,2,2,2,2,2,2,2,2,2,2,2,
+	2,2,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+	0,0,2,2,2,2,2,2,2,2,2,2,2,2,2,2,
+	2,2,0,0,0,0,0,0,0,2,2,2,2,2,2,2,
+	2,2,2,2,2,2,2,2,2,0,4,4,4,4,4,4,
+	4,4,4,4,0,0,0,0,0,0,2,2,2,2,2,2,
+	2,2,2,2,2,2,2,2,2,2,0,4,4,4,4,4,
+	4,4,4,4,4,0,0,0,0,0,0,2,2,2,2,2,
+	2,2,2,2,2,2,2,2,2,2,2,0,0,0,0,0,
+	0,0,0,0,0,0,0,0,0,0,0,2,2,2,2,2,
+	2,2,2,2,2,2,2,2,2,2,2,0,0,0,0,0,
+	0,0,0,0,0,0,0,0,0,0,0,2,2,2,2,0,
+	0,0,0,0,0,0,0,0,0,0,0,4,4,4,4,4,
+	4,4,4,4,4,0,0,0,0,0,0,2,2,2,2,2,
+	2,2,2,2,2,2,2,2,0,0,0,0,0,2,2,2,
+	2,2,2,2,2,2,2,2,2,2,2,2,2,0,0,0,
+	0,0,0,0,0,0,0,0,0,0,0,0,0,42,42,42,
+	42,42,42,42,42,42,42,42,42,42,42,42,42,18,18,18,
+	18,18,18,18,18,18,18,18,18,18,18,18,18,0,0,0,
+	0,0,0,0,0,0,0,0,0,0,0,0,0,2,2,2,
+	2,2,2,2,2,2,2,2,2,2,2,2,2,0,0,0,
+	0,0,0,0,0,0,0,0,0,0,0,0,0,2,2,2,
+	2,2,2,2,2,2,2,2,2,2,0,0,0,0,0,0,
+	0,0,0,0,0,0,0,0,0,0,2,2,0,2,0,0,
+	0,0,0,0,0,0,0,0,0,0,0,0,0,0,2,2,
+	2,2,2,2,2,2,2,2,2,2,2,2,2,2,0,0,
+	0,0,0,0,0,0,2,2,2,2,2,2,2,2,2,2,
+	2,2,2,2,2,2,0,0,0,0,0,0,0,0,0,0,
+	0,0,0,0,0,0,2,2,2,2,2,2,2,2,2,0,
+	0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,2,
+	2,2,2,0,2,2,2,2,2,2,2,0,2,2,0,2,
+	2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,0,
+	0,0,0,0,0,0,0,0,0,0,0,0,2,0,0,0,
+	0,0,0,0,0,0,0,0,0,0,0,0,0,2,2,2,
+	0,0,2,0,0,0,0,0,0,0,0,0,0,2,2,2,
+	2,0,0,0,0,0,0,0,0,2,2,2,2,2,2,2,
+	2,2,2,2,2,2,2,2,2,0,0,0,0,0,0,0,
+	0,0,0,0,0,0,0,0,0,2,2,2,2,2,2,2,
+	2,2,2,2,2,2,2,2,2,0,0,0,0,0,2,2,
+	2,2,2,2,2,2,2,2,2,2,2,0,0,0,0,0,
+	0,0,2,2,2,2,2,2,2,2,2,2,0,0,0,0,
+	0,0,0,0,0,0,0,0,0,0,0,0,10,10,10,10,
+	10,10,10,10,10,10,10,10,10,10,10,10,18,18,18,18,
+	18,18,18,18,18,18,18,18,18,18,18,18,10,10,10,10,
+	10,10,10,10,10,10,10,10,10,10,18,18,18,18,18,0,
+	18,18,18,18,18,18,18,18,18,18,10,10,10,10,10,10,
+	10,10,10,10,10,10,10,10,10,10,18,18,18,18,18,18,
+	18,18,18,18,18,18,18,18,10,0,10,10,0,0,10,0,
+	0,10,10,0,0,10,10,10,10,0,10,10,10,10,10,10,
+	18,18,18,18,0,18,0,18,18,18,18,0,18,18,18,18,
+	18,18,18,18,18,18,18,10,10,10,10,10,10,10,10,10,
+	10,10,10,10,10,10,10,18,18,18,18,18,18,18,18,18,
+	18,18,18,18,18,18,18,10,10,0,10,10,10,10,0,0,
+	10,10,10,10,10,0,10,10,10,10,10,10,10,0,18,18,
+	18,18,18,18,18,18,18,18,18,18,18,18,18,18,10,10,
+	0,10,10,10,10,0,10,10,10,10,10,0,10,0,0,0,
+	10,10,10,10,10,10,0,18,18,18,18,18,18,18,18,18,
+	18,18,18,18,18,10,10,10,10,10,10,10,10,10,10,10,
+	10,10,10,10,10,18,18,18,18,18,18,18,18,18,18,18,
+	18,18,18,18,18,10,10,10,10,10,10,10,10,10,10,10,
+	10,10,10,10,10,18,18,18,18,18,18,18,18,18,18,18,
+	18,18,18,18,18,10,10,10,10,10,10,10,10,10,10,10,
+	10,10,10,18,18,18,18,18,18,18,18,18,18,18,18,18,
+	18,18,18,10,10,10,10,10,10,10,10,10,10,10,10,10,
+	10,10,10,18,18,18,18,18,18,18,18,18,18,18,18,18,
+	18,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,
+	10,18,18,18,18,18,18,18,18,18,18,18,18,18,18,18,
+	18,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,
+	10,18,18,18,18,18,18,18,18,18,18,18,18,18,18,18,
+	18,0,0,10,10,10,10,10,10,10,10,10,10,10,10,10,
+	10,10,10,0,18,18,18,18,18,18,18,18,18,18,18,18,
+	18,18,0,18,18,18,18,10,10,10,10,10,10,10,10,10,
+	10,10,10,10,10,0,18,18,18,18,18,18,18,18,18,18,
+	18,18,18,18,18,18,0,18,18,18,18,18,18,10,10,10,
+	10,10,10,10,10,10,10,10,10,10,10,10,10,0,18,18,
+	18,18,18,18,18,18,18,18,18,18,18,18,18,0,18,18,
+	18,18,18,18,10,10,10,10,10,10,10,10,10,10,10,10,
+	10,10,10,0,18,18,18,18,18,18,18,18,18,18,18,18,
+	18,18,18,18,0,18,18,18,18,18,18,10,10,10,10,10,
+	10,10,10,10,10,10,10,10,10,10,10,0,18,18,18,18,
+	18,18,18,18,18,18,18,18,18,18,18,18,0,18,18,18,
+	18,18,18,10,18,0,0,4,4,4,4,4,4,4,4,4,
+	4,4,4,4,4,4,4,0,0,0,0,0,0,0,0,0,
+	0,0,0,0,0,0,0,18,18,18,18,18,18,18,18,18,
+	18,2,18,18,18,18,18,18,18,18,18,18,18,18,18,18,
+	18,0,0,0,0,0,18,18,18,18,18,18,0,0,0,0,
+	0,0,0,0,0,0,0,0,0,0,0,0,2,2,2,2,
+	2,2,2,2,2,2,2,2,2,2,2,2,0,0,0,0,
+	0,0,0,0,0,0,0,0,0,0,0,0,2,2,2,2,
+	2,2,2,2,2,2,2,2,2,2,2,2,0,0,0,0,
+	0,0,0,2,2,2,2,2,2,2,0,0,4,4,4,4,
+	4,4,4,4,4,4,0,0,0,0,2,0,0,0,0,0,
+	0,0,0,0,0,0,0,0,0,0,0,2,2,2,2,2,
+	2,2,2,2,2,2,2,2,2,2,2,0,0,0,0,0,
+	0,0,0,0,0,0,0,0,0,0,0,2,2,2,2,2,
+	2,2,2,2,2,2,2,2,2,2,2,0,0,0,0,4,
+	4,4,4,4,4,4,4,4,4,0,0,0,0,0,0,0,
+	0,0,0,0,0,0,0,0,0,2,2,2,2,2,2,2,
+	2,2,2,2,2,2,2,2,2,0,0,0,0,4,4,4,
+	4,4,4,4,4,4,4,0,0,0,0,0,0,0,0,0,
+	0,0,0,0,0,0,0,2,2,2,2,2,2,2,0,2,
+	2,2,2,0,2,2,0,2,2,2,2,2,2,2,2,2,
+	2,2,2,2,2,2,0,2,2,2,2,2,2,2,2,2,
+	2,2,2,2,2,2,2,0,0,0,0,0,0,0,0,0,
+	0,0,0,0,0,0,0,42,42,42,42,42,42,42,42,42,
+	42,42,42,42,42,42,42,18,18,18,18,18,18,18,18,18,
+	18,18,18,18,18,18,18,0,0,0,0,0,0,0,2,0,
+	0,0,0,4,4,4,4,4,4,4,4,4,4,0,0,0,
+	0,0,0,0,0,0,0,0,0,0,0,0,0,2,2,2,
+	2,0,2,2,2,2,2,2,2,2,2,2,2,2,2,2,
+	2,2,0,2,2,0,2,0,0,2,0,2,2,2,2,2,
+	2,2,0,2,2,2,2,0,2,0,2,0,0,0,0,2,
+	0,0,0,0,2,0,2,0,2,0,2,2,2,0,2,2,
+	0,2,0,0,2,0,2,0,2,0,2,0,2,2,0,2,
+	0,0,2,2,2,2,0,2,2,2,2,0,2,2,2,2,
+	0,2,0,2,2,2,2,2,2,2,2,2,2,0,2,2,
+	2,2,2,2,2,2,2,2,2,2,0,0,0,0,2,2,
+	2,0,2,2,2,2,2,0,2,2,2,2,2,2,2,2,
+	2,2,2,2,0,0,0,0,0,0,0,0,0,0,0,0,
+	0,0,0,0,4,4,4,4,4,4,4,4,4,4,0,0,
+	0,0,0,0,0,0,0,0,0,0,0,0,0,0,2,2,
+	2,2,2,2,2,2,2,2,2,2,2,2,2,2,0,0,
+	0,0,0,0,0,0,0,0,0,0,0,0,0,0,2,2,
+	2,2,2,2,2,2,2,2,2,2,2,2,2,2,0,0,
+	0,0,0,0,2,2,2,2,2,2,2,2,2,2,2,2,
+	2,2,2,2,0,0,2,2,2,2,2,2,2,2,2,2,
+	2,2,2,2,2,2,0,0,0,0,0,0,0,0,0,0,
+	0,0,0,0,2,2,2,2,2,2,2,2,2,2,2,2,
+	2,2,2,2,0,0,0,0,0,0,0,0,0,0,0,0,
+	0,0,0,0,2,2,2,2,2,2,2,2,2,2,2,2,
+	2,2,2,2,0,0,0,0,0,0,0,0,0,0,0,0,
+	0,0,0,0,2,2,2,2,2,2,2,2,2,2,2,2,
+	2,2,2,2,0,0,0,0,0,2,2,2,2,2,2,2,
+	2,2,2,2,2,2,2,2,2,0,0,0,0,0,0,0,
+	0,0,0,0,0,0,0,0,0,
+};
+static
+uint16_t	_mergedidx2[3755] =
+{
+	0,14,30,46,61,66,81,86,97,103,119,130,146,155,170,179,
+	195,195,195,211,219,229,229,237,252,266,279,292,308,320,334,349,
+	357,357,357,369,384,399,399,399,399,411,416,432,446,460,476,491,
+	491,491,491,491,491,491,491,507,523,539,553,565,566,582,590,605,
+	618,618,618,634,634,634,650,650,664,674,674,674,690,706,706,706,
+	706,706,706,722,723,732,748,748,755,764,764,764,764,780,785,800,
+	803,803,819,819,824,835,851,864,865,865,865,865,865,877,888,904,
+	920,936,938,954,957,970,970,970,970,970,980,995,1011,1021,1026,1038,
+	1054,1064,1076,1085,1101,1108,1124,1140,1148,1163,1179,1179,1185,1195,1195,1195,
+	1207,1211,1211,1217,1231,1247,1261,1277,1292,1304,1311,1326,1340,1355,1370,1386,
+	1399,1414,1421,1436,1446,1453,1468,1484,1495,1507,1514,1529,1543,1559,1575,1591,
+	1602,1614,1621,1636,1650,1654,1669,1685,1698,1713,1729,1743,1753,1769,1779,1795,
+	1806,1818,1825,1835,1849,1857,1873,1889,1905,1917,1924,1936,1950,1953,1966,1982,
+	1994,2006,2008,2013,2027,2042,2057,2073,2078,2087,2097,2111,2127,2134,2144,2160,
+	2175,2176,2176,2191,2207,2223,2233,2233,2248,2260,2272,2287,2303,2319,2335,2335,
+	2351,2352,2368,2378,2394,2403,2406,2419,2427,2440,2440,2440,2440,2440,2440,2440,
+	2456,2456,2461,2472,2488,2504,2519,2534,2548,2564,2580,2580,2590,2606,2606,2611,
+	2627,2627,2627,2627,2627,2627,2627,2627,2627,2627,2627,2627,2627,2627,2627,2627,
+	2627,2627,2627,2627,2634,2650,2666,2666,2673,2689,2689,2704,2718,2727,2735,2735,
+	2735,2750,2758,2758,2758,2763,2774,2774,2790,2806,2822,2822,2822,2822,2822,2832,
+	2847,2848,2848,2848,2848,2848,2848,2848,2848,2848,2848,2848,2848,2848,2848,2848,
+	2848,2848,2848,2848,2848,2848,2848,2848,2848,2848,2848,2848,2848,2848,2848,2848,
+	2848,2848,2848,2848,2848,2848,2851,2866,2882,2887,2903,2903,2903,2903,2908,2923,
+	2939,2953,2968,2982,2998,3012,3028,3043,3059,3059,3059,3071,3075,3084,3100,3110,
+	3126,3142,3142,3142,3142,3142,3149,3165,3172,3179,3195,3195,3195,3195,3205,3221,
+	3222,3237,3237,3247,3263,3265,3274,3290,3290,3294,3310,3316,3332,3342,3342,3358,
+	3367,3383,3383,3383,3394,3399,3399,3415,3415,3425,3433,3433,3433,3433,3433,3444,
+	3449,3449,3461,3472,3488,3498,3498,3511,3514,3529,3545,3555,3555,3565,3571,3587,
+	3587,3599,3603,3619,3635,3645,3647,3663,3679,3679,3684,3700,3700,3707,3716,3732,
+	3732,3736,3748,3748,3748,3753,3764,3773,3778,3789,3789,3805,3805,3805,3805,3821,
+	3821,3821,3821,3821,3821,3821,3821,3821,3831,3847,3847,3847,3847,3847,3847,3862,
+	3878,3894,3894,3910,3926,3942,3958,3974,3974,3974,3990,4005,4021,4037,4051,4067,
+	4078,4086,4102,4102,4103,4119,4134,4150,4166,4179,4179,4179,4179,4179,4179,4193,
+	4209,4223,4239,4255,4270,4286,4302,4318,4323,4323,4323,4323,4323,4323,4323,4323,
+	4323,4323,4323,4323,4323,4323,4323,4323,4323,4323,4323,4323,4323,4323,4323,4323,
+	4323,4323,4323,4323,4323,4323,4323,4323,4323,4323,4323,4323,4323,4323,4323,4333,
+	4339,4355,4361,4371,4371,4371,4371,4371,4371,4371,4371,4371,4371,4371,4371,4371,
+	4371,4371,4371,4371,4371,4371,4371,4371,4371,4371,4371,4371,4371,4371,4371,4371,
+	4371,4371,4371,4371,4371,4371,4371,4371,4371,4371,4371,4371,4371,4371,4371,4371,
+	4371,4371,4371,4371,4371,4371,4371,4371,4371,4371,4371,4371,4371,4371,4371,4371,
+	4371,4371,4371,4387,4387,4387,4403,4403,4403,4419,4434,4449,4449,4449,4449,4449,
+	4449,4461,4476,4492,4492,4502,4518,4518,4518,4526,4542,4558,4567,4583,4583,4583,
+	4583,4598,4598,4598,4598,4599,4615,4615,4615,4615,4615,4615,4615,4615,4615,4615,
+	4615,4615,4615,4615,4615,4615,4615,4615,4615,4615,4615,4615,4615,4615,4615,4615,
+	4615,4615,4615,4631,4638,4638,4653,4668,4669,4669,4669,4669,4678,4690,4691,4691,
+	4691,4691,4696,4712,4717,4717,4733,4734,4734,4734,4734,4735,4750,4766,4766,4782,
+	4782,4782,4798,4814,4814,4814,4814,4814,4814,4814,4814,4814,4814,4814,4814,4814,
+	4814,4814,4814,4814,4814,4814,4814,4814,4814,4814,4814,4814,4814,4814,4814,4814,
+	4814,4814,4814,4830,4830,4830,4830,4830,4830,4830,4830,4830,4830,4830,4830,4830,
+	4830,4830,4830,4830,4830,4830,4830,4830,4830,4830,4830,4830,4830,4830,4830,4830,
+	4830,4830,4830,4830,4830,4830,4830,4830,4830,4830,4830,4830,4830,4830,4830,4830,
+	4830,4830,4830,4830,4830,4830,4830,4830,4830,4830,4830,4830,4830,4830,4830,4830,
+	4830,4830,4830,4846,4846,4846,4846,4862,4862,4862,4862,4862,4862,4862,4862,4862,
+	4862,4862,4862,4862,4862,4862,4862,4862,4862,4862,4862,4862,4862,4862,4862,4862,
+	4862,4862,4862,4862,4862,4862,4862,4862,4862,4862,4862,4862,4862,4862,4862,4862,
+	4862,4862,4862,4862,4862,4862,4862,4862,4862,4862,4862,4862,4862,4862,4862,4862,
+	4862,4862,4862,4862,4862,4862,4862,4865,4878,4878,4878,4878,4894,4894,4896,4912,
+	4912,4912,4912,4912,4912,4912,4912,4912,4912,4912,4912,4912,4912,4912,4912,4915,
+	4931,4947,4959,4975,4975,4977,4992,5008,5012,5028,5028,5028,5028,5038,5044,5044,
+	5053,5069,5084,5086,5086,5086,5102,5116,5132,5138,5148,5160,5176,5186,5200,5214,
+	5226,5239,5242,5258,5258,5258,5270,5284,5286,5286,5298,5302,5318,5328,5342,5358,
+	5368,5378,5394,5403,5410,5426,5429,5442,5446,5446,5459,5462,5478,5494,5510,5526,
+	5526,5533,5542,5558,5574,5590,5599,5613,5613,5613,5629,5645,5650,5666,5680,5695,
+	5703,5719,5735,5735,5740,5756,5772,5772,5772,5772,5772,5788,5788,5801,5817,5833,
+	5833,5833,5833,5833,5833,5833,5833,5833,5833,5833,5833,5833,5833,5833,5833,5833,
+	5833,5833,5833,5833,5833,5833,5833,5833,5833,5833,5833,5833,5833,5833,5833,5833,
+	5833,5833,5833,5833,5833,5833,5833,5833,5833,5833,5833,5833,5833,5833,5833,5833,
+	5833,5833,5833,5833,5833,5833,5833,5833,5833,5833,5833,5833,5833,5833,5833,5845,
+	5861,5870,5881,5881,5885,5897,5897,5897,5897,5897,5897,5897,5897,5897,5897,5897,
+	5897,5897,5897,5897,5897,5897,5897,5897,5897,5897,5897,5897,5897,5897,5897,5897,
+	5897,5897,5897,5897,5897,5897,5897,5897,5897,5897,5897,5897,5897,5897,5897,5897,
+	5897,5897,5897,5897,5897,5897,5897,5897,5897,5897,5897,5897,5897,5897,5897,5897,
+	5897,5897,5897,5897,5897,5913,5913,5913,5913,5913,5913,5913,5913,5913,5913,5913,
+	5913,5913,5913,5913,5913,5913,5913,5913,5913,5913,5913,5915,5931,5931,5931,5931,
+	5931,5931,5937,5947,5947,5963,5976,5991,6001,6017,6023,6023,6023,6023,6023,6023,
+	6037,6039,6052,6055,6055,6055,6055,6055,6055,6055,6055,6055,6055,6055,6055,6055,
+	6055,6055,6055,6055,6055,6055,6057,6071,6087,6087,6087,6087,6103,6105,6105,6113,
+	6121,6121,6137,6149,6149,6149,6149,6149,6149,6149,6165,6171,6171,6171,6171,6171,
+	6171,6171,6174,6190,6206,6221,6226,6241,6246,6257,6263,6263,6263,6263,6264,6279,
+	6287,6300,6300,6316,6329,6338,6346,6361,6361,6375,6375,6391,6391,6391,6391,6391,
+	6391,6391,6396,6407,6407,6407,6407,6407,6407,6407,6407,6407,6407,6407,6407,6407,
+	6407,6407,6407,6407,6407,6407,6407,6407,6407,6407,6407,6423,6426,6442,6442,6442,
+	6457,6458,6458,6474,6474,6490,6503,6518,6534,6534,6544,6560,6562,6578,6578,6590,
+	6606,6606,6606,6622,6622,6630,6638,6638,6654,6654,6654,6654,6656,6672,6688,6688,
+	6700,6708,6712,6728,6728,6736,6752,6752,6752,6764,6780,6780,6793,6807,6821,6834,
+	6834,6834,6834,6850,6850,6850,6850,6850,6850,6850,6850,6850,6850,6850,6850,6850,
+	6850,6850,6850,6850,6850,6850,6859,6875,6885,6901,6909,6925,6932,6932,6947,6958,
+	6958,6958,6958,6974,6984,6984,6994,7009,7019,7035,7044,7060,7061,7076,7076,7076,
+	7076,7092,7105,7121,7131,7147,7153,7163,7163,7163,7163,7179,7179,7179,7187,7203,
+	7203,7203,7203,7219,7235,7244,7254,7260,7260,7276,7279,7295,7298,7311,7311,7327,
+	7336,7347,7352,7368,7368,7368,7378,7394,7404,7420,7433,7449,7463,7465,7465,7465,
+	7465,7465,7465,7481,7481,7481,7481,7488,7497,7497,7497,7513,7513,7513,7526,7542,
+	7542,7542,7555,7571,7571,7583,7599,7609,7609,7609,7609,7609,7609,7609,7609,7609,
+	7609,7609,7609,7609,7609,7609,7609,7609,7609,7609,7609,7625,7625,7631,7639,7641,
+	7641,7641,7641,7657,7660,7673,7689,7699,7705,7705,7721,7735,7737,7737,7753,7764,
+	7769,7785,7794,7807,7810,7810,7818,7826,7826,7836,7852,7865,7868,7868,7884,7884,
+	7900,7907,7923,7936,7939,7948,7958,7974,7990,7990,8003,8016,8019,8019,8032,8047,
+	8063,8076,8076,8092,8106,8110,8122,8137,8138,8138,8138,8154,8169,8184,8200,8200,
+	8201,8216,8232,8243,8255,8262,8277,8291,8307,8321,8323,8323,8323,8323,8323,8323,
+	8323,8323,8323,8339,8339,8339,8350,8359,8375,8390,8392,8408,8408,8408,8424,8436,
+	8452,8462,8462,8462,8462,8462,8462,8462,8462,8462,8462,8478,8478,8479,8494,8494,
+	8502,8514,8514,8530,8530,8530,8546,8558,8574,8584,8584,8600,8600,8605,8616,8632,
+	8642,8642,8642,8658,8663,8674,8690,8706,8713,8713,8713,8713,8713,8713,8713,8713,
+	8713,8713,8713,8729,8729,8733,8745,8745,8745,8745,8745,8745,8745,8761,8761,8777,
+	8777,8793,8803,8818,8830,8838,8854,8868,8884,8894,8894,8894,8894,8910,8920,8920,
+	8935,8950,8954,8970,8981,8981,8994,9005,9021,9033,9033,9039,9049,9063,9079,9079,
+	9079,9079,9086,9095,9095,9095,9095,9095,9095,9095,9095,9095,9095,9095,9095,9095,
+	9095,9095,9095,9111,9121,9122,9137,9153,9169,9179,9193,9195,9211,9211,9211,9211,
+	9211,9211,9211,9227,9238,9238,9253,9263,9279,9295,9305,9311,9321,9337,9347,9347,
+	9347,9347,9347,9347,9347,9347,9347,9347,9347,9347,9347,9347,9347,9347,9347,9347,
+	9347,9363,9376,9390,9392,9394,9406,9410,9426,9436,9436,9436,9436,9436,9452,9453,
+	9453,9453,9453,9469,9469,9469,9469,9469,9469,9469,9469,9469,9469,9469,9469,9469,
+	9469,9469,9469,9469,9469,9469,9469,9469,9469,9469,9469,9469,9469,9469,9469,9469,
+	9469,9469,9469,9469,9469,9469,9469,9469,9469,9469,9469,9469,9469,9469,9469,9469,
+	9469,9469,9469,9469,9469,9469,9469,9469,9469,9469,9469,9469,9475,9485,9485,9485,
+	9485,9485,9485,9485,9485,9501,9501,9501,9501,9501,9501,9501,9501,9501,9501,9501,
+	9501,9513,9517,9517,9517,9517,9517,9517,9517,9517,9517,9517,9517,9517,9517,9517,
+	9517,9517,9517,9517,9517,9517,9517,9517,9517,9517,9517,9517,9517,9517,9517,9517,
+	9517,9517,9517,9517,9517,9517,9517,9517,9517,9517,9517,9517,9517,9517,9517,9517,
+	9517,9517,9517,9517,9517,9517,9517,9517,9517,9517,9517,9517,9517,9517,9517,9517,
+	9517,9517,9533,9533,9533,9533,9533,9533,9548,9564,9564,9564,9564,9564,9564,9564,
+	9564,9564,9564,9564,9564,9564,9564,9564,9564,9564,9564,9564,9564,9564,9564,9564,
+	9564,9564,9564,9564,9564,9564,9564,9564,9564,9564,9564,9564,9564,9564,9564,9564,
+	9564,9564,9564,9564,9564,9564,9564,9564,9564,9564,9564,9564,9564,9564,9564,9564,
+	9564,9564,9564,9564,9564,9564,9564,9564,9564,9580,9595,9602,9602,9602,9602,9602,
+	9602,9602,9602,9602,9602,9602,9602,9602,9602,9602,9602,9602,9602,9602,9602,9602,
+	9602,9602,9602,9602,9602,9602,9602,9602,9602,9602,9602,9602,9602,9602,9602,9602,
+	9602,9602,9602,9602,9602,9602,9602,9602,9602,9602,9602,9602,9602,9602,9602,9602,
+	9602,9602,9602,9602,9602,9602,9602,9602,9602,9602,9602,9618,9618,9618,9618,9618,
+	9618,9618,9618,9618,9618,9618,9618,9618,9618,9618,9618,9618,9618,9618,9618,9618,
+	9618,9618,9618,9618,9618,9618,9618,9618,9618,9618,9618,9618,9618,9618,9618,9627,
+	9634,9634,9634,9634,9634,9634,9634,9634,9634,9634,9634,9634,9634,9634,9634,9634,
+	9634,9634,9634,9634,9634,9634,9634,9634,9634,9634,9634,9634,9634,9634,9634,9634,
+	9634,9634,9634,9634,9634,9634,9634,9634,9634,9634,9634,9634,9634,9634,9634,9634,
+	9634,9634,9634,9634,9634,9634,9634,9634,9634,9634,9634,9634,9634,9634,9634,9634,
+	9650,9650,9650,9650,9650,9650,9650,9650,9650,9650,9650,9650,9650,9650,9650,9650,
+	9650,9650,9650,9650,9650,9650,9650,9650,9650,9650,9650,9650,9650,9650,9650,9650,
+	9650,9650,9650,9657,9673,9674,9690,9706,9706,9706,9706,9707,9723,9739,9741,9755,
+	9771,9771,9771,9787,9803,9819,9832,9840,9853,9869,9869,9869,9869,9869,9869,9869,
+	9869,9869,9869,9869,9869,9869,9869,9869,9869,9869,9869,9869,9869,9869,9869,9869,
+	9869,9869,9869,9869,9869,9869,9869,9869,9869,9869,9869,9869,9869,9885,9885,9901,
+	9901,9917,9917,9917,9917,9917,9917,9917,9917,9933,9933,9933,9933,9938,9948,9949,
+	9949,9949,9962,9978,9978,9978,9978,9994,9998,10014,10014,10014,10014,10014,10014,10014,
+	10014,10014,10014,10014,10014,10014,10014,10014,10014,10014,10014,10014,10014,10014,10014,10014,
+	10014,10014,10014,10014,10014,10014,10014,10014,10014,10014,10014,10014,10014,10014,10014,10014,
+	10014,10014,10014,10014,10014,10014,10014,10014,10014,10014,10014,10014,10014,10014,10014,10014,
+	10014,10014,10014,10014,10014,10014,10014,10014,10014,10022,10038,10038,10038,10038,10038,10038,
+	10038,10038,10038,10038,10038,10038,10038,10038,10038,10038,10038,10038,10038,10038,10038,10038,
+	10038,10038,10038,10038,10038,10038,10038,10038,10038,10038,10038,10038,10038,10038,10038,10038,
+	10038,10038,10038,10038,10038,10038,10038,10038,10038,10038,10038,10038,10038,10038,10038,10038,
+	10038,10038,10038,10038,10038,10038,10038,10038,10038,10038,10048,10054,10054,10070,10079,10079,
+	10079,10079,10079,10079,10079,10079,10079,10079,10079,10079,10079,10079,10079,10079,10079,10079,
+	10079,10079,10079,10079,10079,10079,10079,10079,10079,10079,10079,10079,10079,10079,10079,10079,
+	10079,10079,10079,10079,10079,10079,10079,10079,10079,10079,10079,10079,10079,10079,10079,10079,
+	10079,10079,10079,10079,10079,10079,10079,10079,10079,10079,10079,10079,10079,10079,10095,10111,
+	10111,10111,10111,10111,10111,10111,10111,10111,10111,10111,10111,10111,10111,10111,10111,10111,
+	10111,10124,10138,10141,10157,10169,10185,10185,10185,10185,10185,10185,10185,10185,10185,10185,
+	10185,10185,10185,10185,10185,10185,10185,10185,10185,10185,10185,10185,10185,10185,10189,10201,
+	10201,10201,10201,10201,10201,10201,10201,10201,10201,10201,10201,10201,10201,10201,10201,10201,
+	10201,10201,10201,10201,10201,10201,10201,10201,10201,10201,10201,10201,10201,10201,10201,10201,
+	10201,10201,10201,10201,10201,10201,10201,10201,10201,10201,10201,10201,10201,10201,10201,10201,
+	10201,10201,10201,10201,10201,10201,10201,10201,10201,10201,10201,10201,10201,10201,10201,10217,
+	10217,10217,10217,10217,10217,10222,10238,10242,10258,10268,10268,10268,10268,10268,10268,10268,
+	10268,10268,10268,10268,10268,10268,10268,10268,10268,10268,10268,10268,10268,10268,10268,10268,
+	10268,10268,10268,10268,10268,10268,10268,10268,10268,10268,10268,10268,10268,10268,10268,10268,
+	10268,10268,10268,10268,10268,10268,10268,10268,10268,10268,10268,10268,10268,10268,10268,10268,
+	10268,10268,10268,10268,10268,10268,10268,10268,10268,10284,10290,10300,10312,10316,10330,10338,
+	10346,10360,10364,10380,10394,10407,10423,10429,10439,10451,10464,10478,10486,10502,10517,10521,
+	10533,10543,10549,10565,10571,10581,10593,10597,10611,10619,10627,10641,10645,10657,10667,10673,
+	10689,10695,10705,10715,10723,10738,10743,10757,10762,10774,10785,10797,10808,10814,10830,10836,
+	10852,10859,10875,10882,10892,10905,10919,10919,10919,10935,10935,10935,10935,10935,10935,10935,
+	10935,10935,10935,10935,10935,10935,10935,10935,10935,10935,10935,10935,10935,10935,10935,10935,
+	10935,10935,10935,10935,10935,10935,10935,10935,10935,10935,10935,10935,10935,10935,10935,10935,
+	10935,10935,10935,10935,10935,10935,10935,10935,10935,10935,10935,10935,10935,10935,10935,10935,
+	10935,10935,10935,10935,10935,10935,10935,10935,10935,10951,10962,10977,10988,10988,10988,10988,
+	10988,10988,10988,10988,10988,10988,10988,10988,10988,11004,11004,11004,11006,11020,11020,11020,
+	11020,11020,11020,11020,11020,11020,11036,11036,11039,11052,11068,11083,11083,11083,11083,11083,
+	11083,11083,11083,11083,11083,11083,11083,11083,11083,11083,11083,11083,11083,11083,11083,11099,
+	11101,11115,11131,11131,11135,11151,11161,11161,11161,11161,11161,11161,11161,11161,11161,11161,
+	11161,11161,11161,11161,11161,11161,11177,11181,11197,11207,11207,11207,11207,11207,11207,11207,
+	11207,11207,11207,11207,11207,11207,11207,11207,11207,11207,11207,11207,11207,11207,11207,11207,
+	11207,11207,11207,11207,11207,11207,11207,11207,11207,11207,11207,11207,11207,11207,11207,11207,
+	11207,11207,11207,11207,11207,11207,11207,11223,11239,11255,11255,11255,11255,11255,11255,11255,
+	11255,11255,11255,11255,11255,11266,11271,11271,11271,11287,11287,11301,11303,11315,11331,11341,
+	11341,11341,11341,11341,11341,11341,11341,11341,11341,11341,11341,11341,11341,11341,11341,11341,
+	11341,11341,11341,11341,11341,11341,11341,11341,11341,11341,11341,11341,11341,11341,11341,11341,
+	11341,11341,11341,11341,11341,11341,11341,11341,11341,11357,11362,11378,11391,11405,11421,11435,
+	11443,11459,11470,11485,11496,11508,11508,11508,11508,11508,11508,11508,11508,11508,11508,11508,
+	11508,11508,11508,11508,11508,11508,11508,11508,11508,11508,11508,11508,11508,11508,11508,11508,
+	11508,11508,11508,11508,11508,11508,11508,11508,11508,11508,11508,11508,11508,11508,11508,11508,
+	11508,11508,11508,11508,11508,11508,11508,11508,11508,11508,11508,11508,11508,11508,11508,11508,
+	11508,11508,11508,11508,11508,11524,11534,11534,11534,11534,11534,11534,11534,11534,11534,11534,
+	11534,11534,11534,11534,11534,11534,11534,11534,11534,11534,11534,11534,11534,11534,11534,11534,
+	11534,11534,11534,11534,11534,11534,11534,11534,11534,11534,11534,11534,11534,11534,11534,11534,
+	11534,11534,11534,11534,11534,11534,11534,11534,11534,11534,11534,11534,11534,11534,11534,11534,
+	11534,11534,11534,11534,11534,11534,11550,11550,11550,11550,11550,11550,11550,11550,11550,11550,
+	11550,11550,11550,11550,11550,11550,11550,11550,11550,11550,11550,11550,11550,11550,11550,11550,
+	11550,11550,11550,11550,11550,11550,11550,11550,11550,11550,11550,11550,11550,11550,11550,11550,
+	11550,11550,11550,11550,11550,11550,11550,11550,11550,11550,11550,11550,11550,11550,11550,11550,
+	11550,11550,11550,11550,11550,11550,11566,11566,11582,11582,11582,11582,11582,11582,11582,11582,
+	11582,11582,11582,11582,11582,11582,11582,11582,11582,11582,11582,11582,11582,11582,11582,11582,
+	11582,11582,11582,11582,11582,11582,11582,11582,11582,11582,11582,11582,11582,11582,11582,11582,
+	11582,11582,11582,11582,11582,11582,11582,11582,11582,11582,11582,11582,11582,11582,11582,11582,
+	11582,11582,11582,11582,11582,11582,11582,11582,11588,11604,11604,11604,11604,11604,11604,11604,
+	11604,11604,11604,11604,11604,11606,11622,11622,11622,11622,11622,11622,11622,11622,11622,11622,
+	11622,11622,11622,11622,11622,11622,11622,11622,11622,11622,11622,11622,11622,11622,11622,11622,
+	11622,11622,11622,11622,11622,11622,11622,11622,11622,11622,11622,11622,11622,11622,11622,11622,
+	11622,11622,11622,11622,11622,11622,11622,11622,11622,11622,11622,11622,11622,11622,11622,11622,
+	11622,11622,11622,11622,11622,11622,11636,11652,11652,11652,11652,11652,11652,11652,11652,11652,
+	11652,11652,11652,11652,11652,11652,11652,11652,11652,11652,11652,11652,11652,11652,11652,11652,
+	11652,11652,11652,11652,11652,11652,11652,11652,11652,11652,11652,11652,11652,11652,11652,11652,
+	11652,11652,11652,11652,11652,11652,11652,11652,11652,11652,11652,11652,11652,11652,11652,11652,
+	11652,11652,11652,11652,11652,11652,11652,11667,11668,11668,11668,11668,11668,11668,11668,11668,
+	11668,11668,11668,11668,11668,11668,11668,11668,11668,11668,11668,11668,11668,11668,11668,11668,
+	11668,11668,11668,11668,11668,11668,11668,11668,11668,11668,11668,11668,11668,11668,11668,11668,
+	11668,11668,11668,11668,11668,11668,11668,11668,11668,11668,11668,11668,11668,11668,11668,11668,
+	11668,11668,11668,11668,11668,11668,11668,11668,11684,11684,11684,11684,11684,11684,11684,11684,
+	11684,11684,11684,11684,11684,11684,11684,11684,11684,11684,11684,11684,11684,11684,11684,11684,
+	11684,11684,11684,11684,11684,11684,11684,11684,11684,11686,11700,11700,11700,11700,11700,11700,
+	11700,11700,11700,11700,11700,11700,11700,11700,11700,11700,11700,11700,11700,11700,11700,11700,
+	11700,11700,11700,11700,11700,11700,11700,11700,11700,11700,11700,11700,11700,11700,11700,11700,
+	11700,11700,11700,11700,11700,11700,11700,11700,11700,11700,11700,11700,11700,11700,11700,11700,
+	11700,11700,11700,11700,11700,11700,11700,11700,11700,11700,11716,11716,11716,11716,11716,11716,
+	11716,11716,11716,11716,11716,11716,11716,11716,11716,11716,11716,11716,11716,11716,11716,11716,
+	11716,11716,11716,11716,11716,11716,11716,11716,11716,11716,11716,11716,11716,11716,11716,11716,
+	11716,11716,11716,11716,11716,11716,11716,11716,11716,11716,11716,11716,11716,11716,11716,11716,
+	11716,11716,11716,11716,11716,11716,11716,11716,11716,11716,11721,11737,11737,11737,11737,11737,
+	11737,11737,11737,11737,11737,11737,11737,11737,11737,11737,11737,11737,11737,11737,11737,11737,
+	11737,11737,11737,11737,11737,11737,11737,11737,11737,11737,11737,11737,11737,11737,11737,11737,
+	11737,11737,11737,11737,11737,11737,11737,11737,11737,11737,11737,11737,11737,11737,11737,11737,
+	11737,11737,11737,11737,11737,11737,11737,11737,11737,11737,11737,11753,11753,11753,11753,11753,
+	11753,11753,11753,11753,11753,11753,11753,11753,11753,11753,11753,11753,11753,11753,11753,11753,
+	11753,11753,11753,11753,11753,11753,11753,11753,11753,11753,11753,11753,11753,11753,11753,11753,
+	11753,11753,11753,11753,11753,11753,11753,11753,11753,11753,11753,11753,11753,11753,11753,11753,
+	11753,11753,11753,11753,11753,11753,11753,11753,11753,11753,11753,
+};
+static
+uint16_t	_mergedidx1[2048] =
+{
+	0,64,128,192,256,320,383,447,511,564,579,643,707,771,771,771,
+	771,771,771,807,839,839,839,839,839,839,839,839,839,839,839,839,
+	839,839,839,839,839,839,839,839,839,895,959,1023,1023,1023,1023,1023,
+	1023,1023,1023,1023,1023,1029,1093,1093,1093,1093,1093,1093,1093,1093,1141,1203,
+	1267,1331,1395,1459,1523,1587,1651,1715,1779,1837,1858,1865,1929,1990,1995,1995,
+	1995,2059,2096,2096,2096,2096,2096,2096,2096,2096,2160,2217,2281,2281,2281,2281,
+	2281,2282,2346,2397,2414,2414,2414,2414,2414,2414,2414,2415,2479,2527,2527,2591,
+	2601,2601,2601,2601,2601,2665,2729,2745,2806,2857,2921,2953,2997,2997,2998,3062,
+	3126,3126,3126,3126,3126,3126,3126,3126,3126,3126,3126,3126,3126,3126,3126,3126,
+	3126,3126,3126,3126,3126,3126,3126,3126,3126,3126,3126,3126,3126,3126,3126,3126,
+	3126,3126,3126,3126,3126,3126,3126,3126,3126,3144,3192,3192,3192,3205,3268,3270,
+	3270,3270,3270,3292,3335,3335,3335,3335,3335,3335,3337,3400,3400,3400,3464,3498,
+	3562,3562,3562,3562,3574,3627,3627,3627,3632,3691,3691,3691,3691,3691,3691,3691,
+	3691,3691,3691,3691,3691,3691,3691,3691,3691,3691,3691,3691,3691,3691,3691,3691,
+	3691,3691,3691,3691,3691,3691,3691,3691,3691,3691,3691,3691,3691,3691,3691,3691,
+	3691,3691,3691,3691,3691,3691,3691,3691,3691,3691,3691,3691,3691,3691,3691,3691,
+	3691,3691,3691,3691,3691,3691,3691,3691,3691,3691,3691,3691,3691,3691,3691,3691,
+	3691,3691,3691,3691,3691,3691,3691,3691,3691,3691,3691,3691,3691,3691,3691,3691,
+	3691,3691,3691,3691,3691,3691,3691,3691,3691,3691,3691,3691,3691,3691,3691,3691,
+	3691,3691,3691,3691,3691,3691,3691,3691,3691,3691,3691,3691,3691,3691,3691,3691,
+	3691,3691,3691,3691,3691,3691,3691,3691,3691,3691,3691,3691,3691,3691,3691,3691,
+	3691,3691,3691,3691,3691,3691,3691,3691,3691,3691,3691,3691,3691,3691,3691,3691,
+	3691,3691,3691,3691,3691,3691,3691,3691,3691,3691,3691,3691,3691,3691,3691,3691,
+	3691,3691,3691,3691,3691,3691,3691,3691,3691,3691,3691,3691,3691,3691,3691,3691,
+	3691,3691,3691,3691,3691,3691,3691,3691,3691,3691,3691,3691,3691,3691,3691,3691,
+	3691,3691,3691,3691,3691,3691,3691,3691,3691,3691,3691,3691,3691,3691,3691,3691,
+	3691,3691,3691,3691,3691,3691,3691,3691,3691,3691,3691,3691,3691,3691,3691,3691,
+	3691,3691,3691,3691,3691,3691,3691,3691,3691,3691,3691,3691,3691,3691,3691,3691,
+	3691,3691,3691,3691,3691,3691,3691,3691,3691,3691,3691,3691,3691,3691,3691,3691,
+	3691,3691,3691,3691,3691,3691,3691,3691,3691,3691,3691,3691,3691,3691,3691,3691,
+	3691,3691,3691,3691,3691,3691,3691,3691,3691,3691,3691,3691,3691,3691,3691,3691,
+	3691,3691,3691,3691,3691,3691,3691,3691,3691,3691,3691,3691,3691,3691,3691,3691,
+	3691,3691,3691,3691,3691,3691,3691,3691,3691,3691,3691,3691,3691,3691,3691,3691,
+	3691,3691,3691,3691,3691,3691,3691,3691,3691,3691,3691,3691,3691,3691,3691,3691,
+	3691,3691,3691,3691,3691,3691,3691,3691,3691,3691,3691,3691,3691,3691,3691,3691,
+	3691,3691,3691,3691,3691,3691,3691,3691,3691,3691,3691,3691,3691,3691,3691,3691,
+	3691,3691,3691,3691,3691,3691,3691,3691,3691,3691,3691,3691,3691,3691,3691,3691,
+	3691,3691,3691,3691,3691,3691,3691,3691,3691,3691,3691,3691,3691,3691,3691,3691,
+	3691,3691,3691,3691,3691,3691,3691,3691,3691,3691,3691,3691,3691,3691,3691,3691,
+	3691,3691,3691,3691,3691,3691,3691,3691,3691,3691,3691,3691,3691,3691,3691,3691,
+	3691,3691,3691,3691,3691,3691,3691,3691,3691,3691,3691,3691,3691,3691,3691,3691,
+	3691,3691,3691,3691,3691,3691,3691,3691,3691,3691,3691,3691,3691,3691,3691,3691,
+	3691,3691,3691,3691,3691,3691,3691,3691,3691,3691,3691,3691,3691,3691,3691,3691,
+	3691,3691,3691,3691,3691,3691,3691,3691,3691,3691,3691,3691,3691,3691,3691,3691,
+	3691,3691,3691,3691,3691,3691,3691,3691,3691,3691,3691,3691,3691,3691,3691,3691,
+	3691,3691,3691,3691,3691,3691,3691,3691,3691,3691,3691,3691,3691,3691,3691,3691,
+	3691,3691,3691,3691,3691,3691,3691,3691,3691,3691,3691,3691,3691,3691,3691,3691,
+	3691,3691,3691,3691,3691,3691,3691,3691,3691,3691,3691,3691,3691,3691,3691,3691,
+	3691,3691,3691,3691,3691,3691,3691,3691,3691,3691,3691,3691,3691,3691,3691,3691,
+	3691,3691,3691,3691,3691,3691,3691,3691,3691,3691,3691,3691,3691,3691,3691,3691,
+	3691,3691,3691,3691,3691,3691,3691,3691,3691,3691,3691,3691,3691,3691,3691,3691,
+	3691,3691,3691,3691,3691,3691,3691,3691,3691,3691,3691,3691,3691,3691,3691,3691,
+	3691,3691,3691,3691,3691,3691,3691,3691,3691,3691,3691,3691,3691,3691,3691,3691,
+	3691,3691,3691,3691,3691,3691,3691,3691,3691,3691,3691,3691,3691,3691,3691,3691,
+	3691,3691,3691,3691,3691,3691,3691,3691,3691,3691,3691,3691,3691,3691,3691,3691,
+	3691,3691,3691,3691,3691,3691,3691,3691,3691,3691,3691,3691,3691,3691,3691,3691,
+	3691,3691,3691,3691,3691,3691,3691,3691,3691,3691,3691,3691,3691,3691,3691,3691,
+	3691,3691,3691,3691,3691,3691,3691,3691,3691,3691,3691,3691,3691,3691,3691,3691,
+	3691,3691,3691,3691,3691,3691,3691,3691,3691,3691,3691,3691,3691,3691,3691,3691,
+	3691,3691,3691,3691,3691,3691,3691,3691,3691,3691,3691,3691,3691,3691,3691,3691,
+	3691,3691,3691,3691,3691,3691,3691,3691,3691,3691,3691,3691,3691,3691,3691,3691,
+	3691,3691,3691,3691,3691,3691,3691,3691,3691,3691,3691,3691,3691,3691,3691,3691,
+	3691,3691,3691,3691,3691,3691,3691,3691,3691,3691,3691,3691,3691,3691,3691,3691,
+	3691,3691,3691,3691,3691,3691,3691,3691,3691,3691,3691,3691,3691,3691,3691,3691,
+	3691,3691,3691,3691,3691,3691,3691,3691,3691,3691,3691,3691,3691,3691,3691,3691,
+	3691,3691,3691,3691,3691,3691,3691,3691,3691,3691,3691,3691,3691,3691,3691,3691,
+	3691,3691,3691,3691,3691,3691,3691,3691,3691,3691,3691,3691,3691,3691,3691,3691,
+	3691,3691,3691,3691,3691,3691,3691,3691,3691,3691,3691,3691,3691,3691,3691,3691,
+	3691,3691,3691,3691,3691,3691,3691,3691,3691,3691,3691,3691,3691,3691,3691,3691,
+	3691,3691,3691,3691,3691,3691,3691,3691,3691,3691,3691,3691,3691,3691,3691,3691,
+	3691,3691,3691,3691,3691,3691,3691,3691,3691,3691,3691,3691,3691,3691,3691,3691,
+	3691,3691,3691,3691,3691,3691,3691,3691,3691,3691,3691,3691,3691,3691,3691,3691,
+	3691,3691,3691,3691,3691,3691,3691,3691,3691,3691,3691,3691,3691,3691,3691,3691,
+	3691,3691,3691,3691,3691,3691,3691,3691,3691,3691,3691,3691,3691,3691,3691,3691,
+	3691,3691,3691,3691,3691,3691,3691,3691,3691,3691,3691,3691,3691,3691,3691,3691,
+	3691,3691,3691,3691,3691,3691,3691,3691,3691,3691,3691,3691,3691,3691,3691,3691,
+	3691,3691,3691,3691,3691,3691,3691,3691,3691,3691,3691,3691,3691,3691,3691,3691,
+	3691,3691,3691,3691,3691,3691,3691,3691,3691,3691,3691,3691,3691,3691,3691,3691,
+	3691,3691,3691,3691,3691,3691,3691,3691,3691,3691,3691,3691,3691,3691,3691,3691,
+	3691,3691,3691,3691,3691,3691,3691,3691,3691,3691,3691,3691,3691,3691,3691,3691,
+	3691,3691,3691,3691,3691,3691,3691,3691,3691,3691,3691,3691,3691,3691,3691,3691,
+	3691,3691,3691,3691,3691,3691,3691,3691,3691,3691,3691,3691,3691,3691,3691,3691,
+	3691,3691,3691,3691,3691,3691,3691,3691,3691,3691,3691,3691,3691,3691,3691,3691,
+	3691,3691,3691,3691,3691,3691,3691,3691,3691,3691,3691,3691,3691,3691,3691,3691,
+	3691,3691,3691,3691,3691,3691,3691,3691,3691,3691,3691,3691,3691,3691,3691,3691,
+	3691,3691,3691,3691,3691,3691,3691,3691,3691,3691,3691,3691,3691,3691,3691,3691,
+	3691,3691,3691,3691,3691,3691,3691,3691,3691,3691,3691,3691,3691,3691,3691,3691,
+	3691,3691,3691,3691,3691,3691,3691,3691,3691,3691,3691,3691,3691,3691,3691,3691,
+	3691,3691,3691,3691,3691,3691,3691,3691,3691,3691,3691,3691,3691,3691,3691,3691,
+	3691,3691,3691,3691,3691,3691,3691,3691,3691,3691,3691,3691,3691,3691,3691,3691,
+	3691,3691,3691,3691,3691,3691,3691,3691,3691,3691,3691,3691,3691,3691,3691,3691,
+	3691,3691,3691,3691,3691,3691,3691,3691,3691,3691,3691,3691,3691,3691,3691,3691,
+	3691,3691,3691,3691,3691,3691,3691,3691,3691,3691,3691,3691,3691,3691,3691,3691,
+	3691,3691,3691,3691,3691,3691,3691,3691,3691,3691,3691,3691,3691,3691,3691,3691,
+	3691,3691,3691,3691,3691,3691,3691,3691,3691,3691,3691,3691,3691,3691,3691,3691,
+	3691,3691,3691,3691,3691,3691,3691,3691,3691,3691,3691,3691,3691,3691,3691,3691,
+	3691,3691,3691,3691,3691,3691,3691,3691,3691,3691,3691,3691,3691,3691,3691,3691,
+	3691,3691,3691,3691,3691,3691,3691,3691,3691,3691,3691,3691,3691,3691,3691,3691,
+	3691,3691,3691,3691,3691,3691,3691,3691,3691,3691,3691,3691,3691,3691,3691,3691,
+	3691,3691,3691,3691,3691,3691,3691,3691,3691,3691,3691,3691,3691,3691,3691,3691,
+	3691,3691,3691,3691,3691,3691,3691,3691,3691,3691,3691,3691,3691,3691,3691,3691,
+	3691,3691,3691,3691,3691,3691,3691,3691,3691,3691,3691,3691,3691,3691,3691,3691,
+	3691,3691,3691,3691,3691,3691,3691,3691,3691,3691,3691,3691,3691,3691,3691,3691,
+	3691,3691,3691,3691,3691,3691,3691,3691,3691,3691,3691,3691,3691,3691,3691,3691,
+	3691,3691,3691,3691,3691,3691,3691,3691,3691,3691,3691,3691,3691,3691,3691,3691,
+	3691,3691,3691,3691,3691,3691,3691,3691,3691,3691,3691,3691,3691,3691,3691,3691,
+	3691,3691,3691,3691,3691,3691,3691,3691,3691,3691,3691,3691,3691,3691,3691,3691,
+	3691,3691,3691,3691,3691,3691,3691,3691,3691,3691,3691,3691,3691,3691,3691,3691,
+	3691,3691,3691,3691,3691,3691,3691,3691,3691,3691,3691,3691,3691,3691,3691,3691,
+	3691,3691,3691,3691,3691,3691,3691,3691,3691,3691,3691,3691,3691,3691,3691,3691,
+	3691,3691,3691,3691,3691,3691,3691,3691,3691,3691,3691,3691,3691,3691,3691,3691,
+	3691,3691,3691,3691,3691,3691,3691,3691,3691,3691,3691,3691,3691,3691,3691,3691,
+	3691,3691,3691,3691,3691,3691,3691,3691,3691,3691,3691,3691,3691,3691,3691,3691,
+	3691,3691,3691,3691,3691,3691,3691,3691,3691,3691,3691,3691,3691,3691,3691,3691,
+	3691,3691,3691,3691,3691,3691,3691,3691,3691,3691,3691,3691,3691,3691,3691,3691,
+	3691,3691,3691,3691,3691,3691,3691,3691,3691,3691,3691,3691,3691,3691,3691,3691,
+	3691,3691,3691,3691,3691,3691,3691,3691,3691,3691,3691,3691,3691,3691,3691,3691,
+	3691,3691,3691,3691,3691,3691,3691,3691,3691,3691,3691,3691,3691,3691,3691,3691,
+	3691,3691,3691,3691,3691,3691,3691,3691,3691,3691,3691,3691,3691,3691,3691,3691,
+	3691,3691,3691,3691,3691,3691,3691,3691,3691,3691,3691,3691,3691,3691,3691,3691,
+	3691,3691,3691,3691,3691,3691,3691,3691,3691,3691,3691,3691,3691,3691,3691,3691,
+	3691,3691,3691,3691,3691,3691,3691,3691,3691,3691,3691,3691,3691,3691,3691,3691,
+	3691,3691,3691,3691,3691,3691,3691,3691,3691,3691,3691,3691,3691,3691,3691,3691,
+	3691,3691,3691,3691,3691,3691,3691,3691,3691,3691,3691,3691,3691,3691,3691,3691,
+	3691,3691,3691,3691,3691,3691,3691,3691,3691,3691,3691,3691,3691,3691,3691,3691,
+	3691,3691,3691,3691,3691,3691,3691,3691,3691,3691,3691,3691,3691,3691,3691,3691,
+	3691,3691,3691,3691,3691,3691,3691,3691,3691,3691,3691,3691,3691,3691,3691,3691,
+	3691,3691,3691,3691,3691,3691,3691,3691,3691,3691,3691,3691,3691,3691,3691,3691,
+	
+};
+
+#define mergedindex1(x) (((x)>>(4+6))&0x7FF)
+#define mergedindex2(x) (((x)>>4)&0x3F)
+#define mergedoffset(x) ((x)&0xF)
+#define mergedlkup(x) (_mergeddata[_mergedidx2[_mergedidx1[mergedindex1(x)] + mergedindex2(x)] + mergedoffset(x)] )
+
+enum {
+	Lspace = 1<<0,
+	Lalpha = 1<<1,
+	Ldigit = 1<<2,
+	Lupper = 1<<3,
+	Llower = 1<<4,
+	Ltitle = 1<<5,
+};
--- /dev/null
+++ b/3rd/utf/runetotype.c
@@ -1,0 +1,20 @@
+#include "platform.h"
+#include "runetotypedata"
+
+Rune
+toupperrune(Rune c)
+{
+	return c + upperlkup(c);
+}
+
+Rune
+tolowerrune(Rune c)
+{
+	return c + lowerlkup(c);
+}
+
+Rune
+totitlerune(Rune c)
+{
+	return c + titlelkup(c);
+}
--- /dev/null
+++ b/3rd/utf/runetotypedata
@@ -1,0 +1,862 @@
+static
+int	_upperdata[1756] =
+{
+	0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+	-32,-32,-32,-32,-32,-32,-32,-32,-32,-32,-32,-32,-32,-32,-32,0,
+	0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,743,
+	0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+	-32,-32,-32,-32,-32,-32,-32,-32,-32,-32,-32,-32,-32,-32,-32,-32,
+	0,-32,-32,-32,-32,-32,-32,-32,121,0,-1,0,-1,0,-1,0,
+	-1,0,-1,0,-1,0,-1,0,-1,0,-232,0,-1,0,-1,0,
+	-1,0,0,-1,0,-1,0,-1,0,-1,0,-1,0,0,-1,0,
+	-1,0,-1,0,-1,0,-1,0,-1,0,-1,0,-1,0,0,-1,
+	0,-1,0,-1,-300,195,0,0,-1,0,-1,0,0,-1,0,0,
+	0,-1,0,0,0,-1,0,0,97,0,0,0,-1,163,0,0,
+	0,130,0,-1,0,-1,0,-1,0,0,-1,0,0,0,0,-1,
+	0,0,0,-1,0,-1,0,0,-1,0,0,0,-1,0,56,0,
+	0,0,0,0,-1,-2,0,-1,-2,0,-1,-2,0,-1,0,-1,
+	0,-1,0,-1,0,-1,0,-1,0,-1,-79,0,-1,0,-1,0,
+	-1,0,-1,0,-1,0,-1,0,-1,0,-1,0,0,-1,-2,0,
+	-1,0,0,0,-1,0,-1,0,-1,0,-1,0,-1,0,-1,0,
+	-1,0,-1,0,0,0,-1,0,-1,0,-1,0,-1,0,-1,0,
+	-1,0,-1,0,0,0,0,0,0,0,0,-1,0,0,10815,0,
+	-1,0,0,0,0,-1,0,-1,0,-1,0,-1,0,-1,10783,10780,
+	10782,-210,-206,0,-205,-205,0,-202,0,-203,42319,0,0,0,-205,42315,
+	0,-207,0,42280,42308,0,-209,-211,42308,10743,42305,0,0,-211,0,10749,
+	-213,0,0,-214,0,0,0,0,0,0,0,10727,0,0,-218,0,
+	42307,-218,0,0,0,42282,-218,-69,-217,-217,-71,0,0,0,-219,0,
+	0,0,0,0,0,0,0,0,0,42261,42258,0,0,0,0,0,
+	0,0,0,0,0,0,0,0,0,0,0,84,0,0,0,0,
+	0,0,0,0,0,0,0,0,0,0,0,0,-1,0,-1,0,
+	0,0,-1,0,0,0,130,130,130,0,0,0,0,0,0,0,
+	0,0,0,0,0,0,0,0,0,-38,-37,-37,-37,0,-32,-32,
+	-32,-32,-32,-32,-32,-32,-32,-32,-32,-32,-32,-32,-32,-31,-32,-32,
+	-32,-32,-32,-32,-32,-32,-32,-64,-63,-63,0,-62,-57,0,0,0,
+	-47,-54,-8,0,-1,0,-1,0,-1,0,-1,0,-1,0,-1,0,
+	-1,0,-1,-86,-80,7,-116,0,-96,0,0,-1,0,0,-1,0,
+	0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,-32,
+	-32,-32,-32,-32,-32,-32,-32,-32,-32,-32,-32,-32,-32,-32,-32,-80,
+	-80,-80,-80,-80,-80,-80,-80,-80,-80,-80,-80,-80,-80,-80,-80,0,
+	-1,0,-1,0,-1,0,-1,0,-1,0,-1,0,-1,0,-1,0,
+	0,0,0,0,0,0,0,0,-1,0,-1,0,-1,0,-1,0,
+	-1,0,-1,0,-1,0,-1,0,0,-1,0,-1,0,-1,0,-1,
+	0,-1,0,-1,0,-1,-15,0,-1,0,-1,0,-1,0,-1,0,
+	-1,0,-1,0,-1,0,-1,0,0,0,0,0,0,0,0,0,
+	0,0,0,0,0,0,0,-48,-48,-48,-48,-48,-48,-48,-48,-48,
+	-48,-48,-48,-48,-48,-48,-48,0,0,0,0,0,0,0,0,0,
+	0,0,0,0,0,0,0,3008,3008,3008,3008,3008,3008,3008,3008,3008,
+	3008,3008,3008,3008,3008,3008,3008,0,0,3008,3008,3008,0,0,0,0,
+	0,0,0,0,0,0,0,0,0,0,0,0,-8,-8,-8,-8,
+	-8,-8,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+	0,0,-6254,-6253,-6244,-6242,-6242,-6243,-6236,-6181,35266,0,0,0,0,0,
+	0,0,0,0,0,0,0,0,0,0,0,35332,0,0,0,3814,
+	0,0,0,0,0,0,0,0,0,0,0,0,0,0,35384,0,
+	0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,-1,
+	0,-1,0,-1,0,-1,0,-1,0,-1,0,-1,0,-1,0,0,
+	0,0,0,-59,0,0,0,0,-1,0,-1,0,-1,0,-1,0,
+	-1,0,-1,0,-1,0,-1,8,8,8,8,8,8,8,8,0,
+	0,0,0,0,0,0,0,0,0,8,8,8,8,8,8,8,
+	8,0,0,0,0,0,0,0,0,0,0,8,0,8,0,8,
+	0,8,0,0,0,0,0,0,0,0,8,8,8,8,8,8,
+	8,8,0,0,0,0,0,0,0,0,74,74,86,86,86,86,
+	100,100,128,128,112,112,126,126,0,0,8,8,8,8,8,8,
+	8,8,0,0,0,0,0,0,0,0,8,8,0,9,0,0,
+	0,0,0,0,0,0,0,0,-7205,0,0,0,9,0,0,0,
+	0,0,0,0,0,0,0,0,0,8,8,0,0,0,0,0,
+	0,0,0,0,0,0,0,0,0,8,8,0,0,0,7,0,
+	0,0,0,0,0,0,0,0,0,9,0,0,0,0,0,0,
+	0,0,0,0,0,0,0,0,0,0,-28,0,0,0,0,0,
+	0,0,0,0,0,0,0,0,0,0,0,-16,-16,-16,-16,-16,
+	-16,-16,-16,-16,-16,-16,-16,-16,-16,-16,-16,0,0,0,0,-1,
+	0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+	-26,-26,-26,-26,-26,-26,-26,-26,-26,-26,-26,-26,-26,-26,-26,-26,
+	0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+	-48,-48,-48,-48,-48,-48,-48,-48,-48,-48,-48,-48,-48,-48,-48,-48,
+	0,-1,0,0,0,-10795,-10792,0,-1,0,-1,0,-1,0,0,0,
+	-1,0,0,-1,0,0,0,0,0,0,0,0,0,-1,0,-1,
+	0,-1,0,-1,0,-1,0,-1,0,-1,0,-1,0,0,0,0,
+	0,0,0,0,-1,0,-1,0,0,0,-1,0,0,0,0,0,
+	0,0,0,0,0,0,0,-7264,-7264,-7264,-7264,-7264,-7264,-7264,-7264,-7264,
+	-7264,-7264,-7264,-7264,-7264,-7264,-7264,0,-7264,0,0,0,0,0,-7264,0,
+	0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,-1,
+	0,-1,0,-1,0,-1,0,-1,0,-1,0,-1,0,-1,0,0,
+	0,0,0,0,0,0,0,0,0,0,0,0,0,0,-1,0,
+	-1,0,-1,0,-1,0,-1,0,-1,0,-1,0,-1,0,0,0,
+	0,0,0,0,0,0,0,0,0,0,0,0,0,-1,0,-1,
+	0,-1,0,-1,0,-1,0,-1,0,-1,0,-1,0,0,0,0,
+	0,0,0,0,0,0,-1,0,-1,0,0,-1,0,-1,0,-1,
+	0,-1,0,0,0,0,-1,0,0,0,-1,0,-1,48,0,0,
+	-1,0,-1,0,-1,0,-1,0,-1,0,0,0,0,0,0,-1,
+	0,-1,0,-1,0,-1,0,-1,0,-1,0,0,0,0,-1,0,
+	-1,0,0,0,0,0,-1,0,-1,0,0,0,0,0,0,0,
+	0,0,0,0,0,0,0,0,0,-1,0,0,0,0,0,0,
+	0,0,0,0,0,0,0,0,0,0,-928,0,0,0,0,0,
+	0,0,0,0,0,0,0,0,0,0,0,-38864,-38864,-38864,-38864,-38864,
+	-38864,-38864,-38864,-38864,-38864,-38864,-38864,-38864,-38864,-38864,-38864,0,0,0,0,0,
+	0,0,0,0,0,0,0,0,0,0,0,-32,-32,-32,-32,-32,
+	-32,-32,-32,-32,-32,-32,-32,-32,-32,-32,0,0,0,0,0,0,
+	0,0,0,0,0,0,0,0,0,0,-40,-40,-40,-40,-40,-40,
+	-40,-40,-40,-40,-40,-40,-40,-40,-40,-40,0,0,0,0,0,0,
+	0,0,0,0,0,0,0,0,0,0,-40,-40,-40,-40,-40,-40,
+	-40,-40,-40,-40,-40,-40,-40,-40,-40,-40,0,0,0,0,0,0,
+	0,0,0,0,0,0,0,0,0,0,-39,-39,-39,-39,-39,-39,
+	-39,-39,-39,0,-39,-39,-39,-39,-39,-39,-39,-39,-39,-39,-39,-39,
+	-39,0,-39,-39,-39,-39,-39,-39,-39,0,-39,-39,0,0,0,0,
+	0,0,0,0,0,0,0,0,0,0,0,0,-64,-64,-64,-64,
+	-64,-64,-64,-64,-64,-64,-64,-64,-64,-64,-64,-64,0,0,0,0,
+	0,0,0,0,0,0,0,0,0,0,0,0,-32,-32,-32,-32,
+	-32,-32,-32,-32,-32,-32,-32,-32,-32,-32,-32,-32,0,0,0,0,
+	0,0,0,0,0,0,0,0,0,0,0,0,-32,-32,-32,-32,
+	-32,-32,-32,-32,-32,-32,-32,-32,-32,-32,-32,-32,0,0,0,0,
+	0,0,0,0,0,0,0,0,0,0,0,0,-34,-34,-34,-34,
+	-34,-34,-34,-34,-34,-34,-34,-34,-34,-34,-34,-34,0,0,0,0,
+	0,0,0,0,0,0,0,0,0,0,0,0,
+};
+static
+uint16_t	_upperidx2[1595] =
+{
+	0,0,0,0,0,0,15,20,31,31,31,42,48,48,64,73,
+	89,89,89,105,115,125,125,133,149,163,178,191,207,221,235,251,
+	259,259,275,287,302,318,334,350,366,380,395,395,395,395,395,395,
+	395,395,395,395,406,412,412,427,441,441,445,461,475,491,499,515,
+	527,527,527,543,543,559,575,575,589,599,599,599,615,631,631,631,
+	631,631,631,647,647,647,662,663,672,679,679,679,679,679,679,679,
+	679,679,679,679,679,679,679,679,679,679,679,679,679,679,679,679,
+	679,679,679,679,679,679,679,679,679,679,679,679,679,679,679,679,
+	679,679,679,679,679,679,679,679,679,679,679,679,679,679,679,679,
+	679,679,679,679,679,679,679,679,679,679,679,679,679,679,679,679,
+	679,679,679,679,679,679,679,679,679,679,679,679,679,679,679,679,
+	679,679,679,679,679,679,679,679,679,679,679,679,679,679,679,679,
+	679,679,679,679,679,679,679,679,679,679,679,679,679,679,679,679,
+	679,679,679,679,679,679,679,679,679,695,695,700,716,716,716,716,
+	716,716,716,716,716,716,716,716,716,716,716,716,716,716,716,716,
+	716,716,716,716,716,716,716,716,716,716,716,716,716,716,716,716,
+	716,716,716,716,716,716,716,716,716,716,716,724,738,738,738,738,
+	738,738,738,738,738,738,738,738,738,738,738,738,738,738,738,738,
+	738,738,738,738,738,738,738,738,738,738,738,738,738,738,738,738,
+	738,738,738,738,738,738,738,738,738,738,738,738,738,738,738,738,
+	738,738,738,738,738,738,738,738,738,738,738,738,738,738,738,738,
+	738,738,738,738,754,763,763,763,763,763,763,763,763,763,763,763,
+	763,763,763,770,784,799,799,799,799,799,799,799,814,814,814,814,
+	814,814,814,814,814,824,839,839,839,839,839,839,855,857,873,873,
+	875,890,906,922,938,938,938,954,969,985,1001,1014,1018,1018,1018,1018,
+	1018,1018,1018,1018,1018,1018,1018,1018,1018,1018,1018,1018,1018,1018,1018,1018,
+	1020,1035,1035,1051,1067,1072,1072,1072,1072,1072,1072,1072,1072,1072,1072,1072,
+	1072,1072,1072,1072,1072,1072,1072,1072,1072,1072,1072,1072,1072,1072,1072,1072,
+	1072,1072,1072,1072,1072,1072,1072,1072,1072,1072,1072,1072,1072,1072,1072,1072,
+	1072,1072,1072,1072,1072,1072,1072,1072,1072,1088,1094,1104,1104,1104,1104,1104,
+	1104,1104,1104,1104,1104,1104,1104,1104,1104,1104,1104,1104,1104,1104,1104,1104,
+	1104,1104,1104,1104,1104,1104,1104,1104,1104,1104,1104,1104,1104,1104,1104,1104,
+	1104,1104,1104,1104,1104,1104,1104,1104,1104,1104,1104,1104,1104,1104,1104,1104,
+	1104,1104,1104,1104,1104,1104,1104,1104,1104,1104,1104,1104,1104,1104,1120,1120,
+	1120,1136,1149,1164,1164,1164,1164,1164,1164,1176,1191,1207,1207,1217,1231,1231,
+	1231,1231,1231,1231,1231,1231,1231,1231,1231,1231,1231,1231,1231,1231,1231,1231,
+	1231,1231,1231,1231,1231,1231,1231,1231,1231,1231,1231,1231,1231,1231,1231,1231,
+	1231,1231,1231,1231,1231,1231,1231,1231,1231,1231,1231,1231,1231,1231,1231,1231,
+	1231,1231,1231,1231,1231,1231,1231,1231,1231,1231,1231,1231,1231,1231,1231,1231,
+	1231,1231,1231,1231,1231,1231,1231,1231,1231,1231,1231,1231,1231,1231,1231,1231,
+	1231,1231,1231,1231,1231,1231,1231,1231,1231,1231,1231,1231,1231,1231,1231,1231,
+	1231,1231,1231,1231,1231,1231,1231,1231,1231,1231,1231,1231,1231,1231,1231,1231,
+	1231,1231,1231,1231,1231,1231,1231,1231,1231,1231,1231,1231,1231,1231,1246,1246,
+	1248,1262,1277,1281,1293,1293,1293,1293,1293,1293,1293,1293,1306,1306,1308,1308,
+	1308,1324,1338,1353,1359,1370,1382,1391,1401,1411,1418,1418,1418,1418,1418,1418,
+	1418,1418,1418,1418,1418,1418,1418,1418,1418,1418,1418,1418,1418,1418,1418,1418,
+	1418,1418,1418,1418,1418,1418,1418,1418,1418,1418,1418,1418,1418,1418,1418,1418,
+	1418,1418,1418,1418,1418,1418,1418,1418,1418,1418,1418,1418,1418,1418,1418,1431,
+	1435,1451,1451,1451,1451,1451,1467,1467,1467,1467,1467,1467,1467,1467,1467,1467,
+	1467,1467,1467,1467,1467,1467,1467,1467,1467,1467,1467,1467,1467,1467,1467,1467,
+	1467,1467,1467,1467,1467,1467,1467,1467,1467,1467,1467,1467,1467,1467,1467,1467,
+	1467,1467,1467,1467,1467,1467,1467,1467,1467,1467,1467,1467,1467,1467,1467,1467,
+	1467,1467,1467,1467,1467,1467,1467,1467,1467,1467,1467,1467,1467,1467,1467,1467,
+	1467,1467,1467,1467,1467,1467,1467,1467,1467,1467,1467,1467,1467,1467,1467,1467,
+	1467,1467,1467,1467,1467,1467,1467,1467,1467,1467,1467,1467,1467,1467,1467,1467,
+	1467,1467,1467,1467,1467,1467,1467,1467,1467,1467,1467,1467,1467,1467,1467,1467,
+	1467,1467,1467,1467,1467,1467,1482,1487,1498,1498,1498,1498,1498,1498,1498,1498,
+	1498,1498,1498,1498,1498,1498,1498,1498,1498,1498,1498,1498,1498,1498,1498,1498,
+	1498,1498,1498,1498,1498,1498,1498,1498,1498,1498,1498,1498,1498,1498,1498,1498,
+	1498,1498,1498,1498,1498,1498,1498,1498,1498,1498,1498,1498,1498,1498,1498,1498,
+	1498,1498,1498,1498,1498,1498,1498,1498,1498,1498,1506,1514,1514,1530,1530,1530,
+	1530,1530,1530,1530,1530,1538,1546,1550,1562,1562,1562,1562,1562,1562,1562,1562,
+	1562,1571,1585,1599,1612,1612,1612,1612,1612,1612,1612,1612,1612,1612,1612,1612,
+	1612,1612,1612,1612,1612,1612,1612,1612,1612,1612,1612,1612,1612,1612,1612,1612,
+	1612,1612,1612,1612,1612,1612,1612,1612,1612,1612,1612,1612,1612,1612,1612,1612,
+	1612,1612,1612,1612,1612,1612,1612,1612,1612,1612,1612,1612,1612,1612,1612,1612,
+	1612,1612,1612,1612,1612,1612,1612,1612,1612,1612,1612,1612,1612,1612,1612,1612,
+	1628,1628,1628,1641,1644,1644,1644,1644,1644,1644,1644,1644,1644,1644,1644,1644,
+	1644,1644,1644,1644,1644,1644,1644,1644,1644,1644,1644,1644,1644,1644,1644,1644,
+	1644,1644,1644,1644,1644,1644,1644,1644,1644,1644,1644,1644,1644,1644,1644,1644,
+	1644,1644,1644,1644,1644,1644,1644,1644,1644,1644,1644,1644,1644,1644,1644,1644,
+	1644,1644,1644,1644,1644,1644,1644,1644,1644,1644,1644,1644,1644,1644,1644,1644,
+	1644,1644,1644,1644,1644,1644,1644,1644,1644,1644,1644,1644,1644,1644,1644,1644,
+	1644,1644,1644,1644,1644,1644,1644,1644,1644,1644,1644,1644,1644,1644,1644,1644,
+	1644,1644,1644,1644,1644,1644,1644,1644,1644,1644,1644,1644,1644,1644,1644,1644,
+	1644,1644,1644,1644,1660,1660,1676,1676,1676,1676,1676,1676,1676,1676,1676,1676,
+	1676,1676,1676,1676,1676,1676,1676,1676,1676,1676,1676,1676,1676,1676,1676,1676,
+	1676,1676,1676,1676,1676,1676,1676,1676,1676,1676,1676,1676,1676,1676,1676,1676,
+	1676,1676,1676,1676,1676,1676,1676,1676,1676,1676,1676,1676,1676,1676,1676,1676,
+	1676,1676,1676,1676,1676,1676,1676,1676,1676,1676,1676,1676,1676,1676,1676,1676,
+	1676,1676,1676,1676,1676,1676,1676,1676,1676,1676,1676,1676,1676,1676,1676,1676,
+	1676,1676,1676,1676,1676,1676,1676,1676,1676,1676,1676,1676,1676,1676,1676,1676,
+	1676,1676,1676,1676,1676,1676,1676,1676,1676,1676,1676,1676,1676,1676,1676,1676,
+	1676,1676,1676,1676,1676,1676,1692,1692,1708,1708,1708,1708,1708,1708,1708,1708,
+	1708,1708,1708,1708,1708,1708,1708,1708,1708,1708,1708,1708,1708,1708,1708,1708,
+	1708,1708,1708,1708,1708,1708,1708,1708,1708,1708,1708,1708,1708,1708,1708,1708,
+	1708,1708,1708,1708,1708,1708,1708,1708,1708,1708,1708,1708,1708,1708,1708,1708,
+	1708,1708,1708,1708,1708,1708,1708,1708,1708,1708,1708,1708,1708,1708,1708,1708,
+	1708,1708,1708,1708,1708,1708,1708,1708,1708,1708,1708,1708,1708,1708,1708,1708,
+	1708,1708,1708,1708,1708,1708,1708,1708,1708,1708,1708,1708,1708,1708,1708,1708,
+	1708,1708,1708,1708,1708,1708,1708,1708,1708,1708,1708,1708,1708,1708,1708,1708,
+	1708,1708,1708,1708,1708,1708,1708,1708,1722,1724,1736,1740,1740,1740,1740,1740,
+	1740,1740,1740,1740,1740,1740,1740,1740,1740,1740,1740,1740,1740,1740,1740,1740,
+	1740,1740,1740,1740,1740,1740,1740,1740,1740,1740,1740,1740,1740,1740,1740,1740,
+	1740,1740,1740,1740,1740,1740,1740,1740,1740,1740,1740,1740,1740,1740,1740,1740,
+	1740,1740,1740,1740,1740,1740,1740,1740,1740,1740,1740,1740,1740,1740,1740,1740,
+	1740,1740,1740,1740,1740,1740,1740,1740,1740,1740,1740,1740,1740,1740,1740,1740,
+	1740,1740,1740,1740,1740,1740,1740,1740,1740,1740,1740,1740,1740,1740,1740,1740,
+	1740,1740,1740,1740,1740,1740,1740,1740,1740,1740,1740,1740,1740,1740,1740,1740,
+	1740,1740,1740,1740,1740,1740,1740,1740,1740,1740,1740,
+};
+static
+uint16_t	_upperidx1[1024] =
+{
+	0,89,204,268,396,475,558,558,558,558,558,558,558,558,558,558,
+	558,558,558,558,586,714,774,774,774,774,774,774,774,774,774,786,
+	904,996,1076,1192,1206,1206,1206,1206,1206,1206,1206,1206,1206,1232,1336,1336,
+	1336,1336,1336,1336,1336,1336,1336,1336,1336,1336,1336,1336,1336,1446,1467,1467,
+	1467,1467,1467,1467,1467,1467,1467,1467,1467,1467,1467,1467,1467,1467,1467,1467,
+	1467,1467,1467,1467,1467,1467,1467,1467,1467,1467,1467,1467,1467,1467,1467,1467,
+	1467,1467,1467,1467,1467,1467,1467,1467,1467,1467,1467,1467,1467,1467,1467,1467,
+	1467,1467,1467,1467,1467,1467,1467,1467,1467,1467,1467,1467,1467,1467,1467,1467,
+	1467,1467,1467,1467,1467,1467,1467,1467,1467,1467,1467,1467,1467,1467,1467,1467,
+	1467,1467,1467,1467,1467,1467,1467,1467,1467,1467,1467,1467,1467,1467,1467,1467,
+	1467,1467,1467,1467,1467,1467,1467,1467,1467,1467,1467,1467,1467,1467,1467,1467,
+	1467,1467,1467,1467,1467,1467,1467,1467,1467,1467,1467,1467,1467,1467,1467,1467,
+	1467,1467,1467,1467,1467,1467,1467,1467,1467,1467,1467,1467,1467,1467,1467,1467,
+	1467,1467,1467,1467,1467,1467,1467,1467,1467,1467,1467,1467,1467,1467,1467,1467,
+	1467,1467,1467,1467,1467,1467,1467,1467,1467,1467,1467,1467,1467,1467,1467,1467,
+	1467,1467,1467,1467,1467,1467,1467,1467,1467,1467,1467,1467,1467,1467,1467,1467,
+	1467,1467,1467,1467,1467,1467,1467,1467,1467,1467,1467,1467,1467,1467,1467,1467,
+	1467,1467,1467,1467,1467,1467,1467,1467,1467,1467,1467,1467,1467,1467,1467,1467,
+	1467,1467,1467,1467,1467,1467,1467,1467,1467,1467,1467,1467,1467,1467,1467,1467,
+	1467,1467,1467,1467,1467,1467,1467,1467,1467,1467,1467,1467,1467,1467,1467,1467,
+	1467,1467,1467,1467,1467,1467,1467,1467,1467,1467,1467,1467,1467,1467,1467,1467,
+	1467,1467,1467,1467,1467,1467,1467,1467,1467,1467,1467,1467,1467,1467,1467,1467,
+	1467,1467,1467,1467,1467,1467,1467,1467,1467,1467,1467,1467,1467,1467,1467,1467,
+	1467,1467,1467,1467,1467,1467,1467,1467,1467,1467,1467,1467,1467,1467,1467,1467,
+	1467,1467,1467,1467,1467,1467,1467,1467,1467,1467,1467,1467,1467,1467,1467,1467,
+	1467,1467,1467,1467,1467,1467,1467,1467,1467,1467,1467,1467,1467,1467,1467,1467,
+	1467,1467,1467,1467,1467,1467,1467,1467,1467,1467,1467,1467,1467,1467,1467,1467,
+	1467,1467,1467,1467,1467,1467,1467,1467,1467,1467,1467,1467,1467,1467,1467,1467,
+	1467,1467,1467,1467,1467,1467,1467,1467,1467,1467,1467,1467,1467,1467,1467,1467,
+	1467,1467,1467,1467,1467,1467,1467,1467,1467,1467,1467,1467,1467,1467,1467,1467,
+	1467,1467,1467,1467,1467,1467,1467,1467,1467,1467,1467,1467,1467,1467,1467,1467,
+	1467,1467,1467,1467,1467,1467,1467,1467,1467,1467,1467,1467,1467,1467,1467,1467,
+	1467,1467,1467,1467,1467,1467,1467,1467,1467,1467,1467,1467,1467,1467,1467,1467,
+	1467,1467,1467,1467,1467,1467,1467,1467,1467,1467,1467,1467,1467,1467,1467,1467,
+	1467,1467,1467,1467,1467,1467,1467,1467,1467,1467,1467,1467,1467,1467,1467,1467,
+	1467,1467,1467,1467,1467,1467,1467,1467,1467,1467,1467,1467,1467,1467,1467,1467,
+	1467,1467,1467,1467,1467,1467,1467,1467,1467,1467,1467,1467,1467,1467,1467,1467,
+	1467,1467,1467,1467,1467,1467,1467,1467,1467,1467,1467,1467,1467,1467,1467,1467,
+	1467,1467,1467,1467,1467,1467,1467,1467,1467,1467,1467,1467,1467,1467,1467,1467,
+	1467,1467,1467,1467,1467,1467,1467,1467,1467,1467,1467,1467,1467,1467,1467,1467,
+	1467,1467,1467,1467,1467,1467,1467,1467,1467,1467,1467,1467,1467,1467,1467,1467,
+	1467,1467,1467,1467,1467,1467,1467,1467,1467,1467,1467,1467,1467,1467,1467,1467,
+	1467,1467,1467,1467,1467,1467,1467,1467,1467,1467,1467,1467,1467,1467,1467,1467,
+	1467,1467,1467,1467,1467,1467,1467,1467,1467,1467,1467,1467,1467,1467,1467,1467,
+	1467,1467,1467,1467,1467,1467,1467,1467,1467,1467,1467,1467,1467,1467,1467,1467,
+	1467,1467,1467,1467,1467,1467,1467,1467,1467,1467,1467,1467,1467,1467,1467,1467,
+	1467,1467,1467,1467,1467,1467,1467,1467,1467,1467,1467,1467,1467,1467,1467,1467,
+	1467,1467,1467,1467,1467,1467,1467,1467,1467,1467,1467,1467,1467,1467,1467,1467,
+	1467,1467,1467,1467,1467,1467,1467,1467,1467,1467,1467,1467,1467,1467,1467,1467,
+	1467,1467,1467,1467,1467,1467,1467,1467,1467,1467,1467,1467,1467,1467,1467,1467,
+	1467,1467,1467,1467,1467,1467,1467,1467,1467,1467,1467,1467,1467,1467,1467,1467,
+	1467,1467,1467,1467,1467,1467,1467,1467,1467,1467,1467,1467,1467,1467,1467,1467,
+	1467,1467,1467,1467,1467,1467,1467,1467,1467,1467,1467,1467,1467,1467,1467,1467,
+	1467,1467,1467,1467,1467,1467,1467,1467,1467,1467,1467,1467,1467,1467,1467,1467,
+	1467,1467,1467,1467,1467,1467,1467,1467,1467,1467,1467,1467,1467,1467,1467,1467,
+	1467,1467,1467,1467,1467,1467,1467,1467,1467,1467,1467,1467,1467,1467,1467,1467,
+	1467,1467,1467,1467,1467,1467,1467,1467,1467,1467,1467,1467,1467,1467,1467,1467,
+	1467,1467,1467,1467,1467,1467,1467,1467,1467,1467,1467,1467,1467,1467,1467,1467,
+	1467,1467,1467,1467,1467,1467,1467,1467,1467,1467,1467,1467,1467,1467,1467,1467,
+	1467,1467,1467,1467,1467,1467,1467,1467,1467,1467,1467,1467,1467,1467,1467,1467,
+	1467,1467,1467,1467,1467,1467,1467,1467,1467,1467,1467,1467,1467,1467,1467,1467,
+	1467,1467,1467,1467,1467,1467,1467,1467,1467,1467,1467,1467,1467,1467,1467,1467,
+	1467,1467,1467,1467,1467,1467,1467,1467,1467,1467,1467,1467,1467,1467,1467,1467,
+	1467,1467,1467,1467,1467,1467,1467,1467,1467,1467,1467,1467,1467,1467,1467,1467,
+	
+};
+
+#define upperindex1(x) (((x)>>(4+7))&0x3FF)
+#define upperindex2(x) (((x)>>4)&0x7F)
+#define upperoffset(x) ((x)&0xF)
+#define upperlkup(x) (_upperdata[_upperidx2[_upperidx1[upperindex1(x)] + upperindex2(x)] + upperoffset(x)] )
+
+static
+int	_lowerdata[1620] =
+{
+	0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+	32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,0,
+	0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,32,
+	32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,0,
+	32,32,32,32,32,32,32,0,0,0,0,0,0,0,0,0,
+	0,0,0,0,0,0,0,1,0,1,0,1,0,1,0,1,
+	0,1,0,1,0,1,0,-199,0,1,0,1,0,1,0,0,
+	1,0,1,0,1,0,1,0,0,1,0,1,0,1,0,1,
+	0,1,0,1,0,1,0,1,0,-121,1,0,1,0,1,0,
+	0,210,1,0,1,0,206,1,0,205,205,1,0,0,79,202,
+	203,1,0,205,207,0,211,209,1,0,0,0,211,213,0,214,
+	1,0,1,0,1,0,218,1,0,218,0,0,1,0,218,1,
+	0,217,217,1,0,1,0,219,1,0,0,0,1,0,0,0,
+	0,2,1,0,2,1,0,2,1,0,1,0,1,0,1,0,
+	1,0,1,0,1,0,0,1,0,1,0,1,0,1,0,1,
+	0,1,0,1,0,1,0,2,1,0,1,0,-97,-56,1,0,
+	1,0,1,0,1,0,1,0,1,0,1,0,1,0,-130,0,
+	1,0,1,0,1,0,1,0,1,0,1,0,1,0,0,0,
+	0,0,0,0,10795,1,0,-163,10792,0,1,0,-195,69,71,1,
+	0,1,0,1,0,1,0,1,0,0,0,0,0,0,0,0,
+	0,0,0,0,0,0,0,0,1,0,1,0,0,0,1,0,
+	0,0,0,0,0,0,0,116,0,0,0,0,0,0,38,0,
+	37,37,37,0,64,0,63,63,0,32,32,32,32,32,32,32,
+	32,32,32,32,32,32,32,32,0,32,32,32,32,32,32,32,
+	32,32,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+	0,0,8,0,0,0,0,0,0,0,0,1,0,1,0,1,
+	0,1,0,1,0,1,0,1,0,1,0,0,0,0,-60,0,
+	0,1,0,-7,1,0,0,-130,-130,-130,80,80,80,80,80,80,
+	80,80,80,80,80,80,80,80,80,80,32,32,32,32,32,32,
+	32,32,32,32,32,32,32,32,32,32,0,0,0,0,0,0,
+	0,0,0,0,0,0,0,0,0,0,1,0,1,0,1,0,
+	1,0,1,0,1,0,1,0,1,0,0,0,0,0,0,0,
+	0,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,
+	1,0,15,1,0,1,0,1,0,1,0,1,0,1,0,1,
+	0,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,
+	1,0,48,48,48,48,48,48,48,48,48,48,48,48,48,48,
+	48,48,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+	0,0,7264,7264,7264,7264,7264,7264,7264,7264,7264,7264,7264,7264,7264,7264,
+	7264,7264,0,7264,0,0,0,0,0,7264,0,0,0,0,0,0,
+	0,0,0,0,0,0,0,0,0,0,38864,38864,38864,38864,38864,38864,
+	38864,38864,38864,38864,38864,38864,38864,38864,38864,38864,8,8,8,8,8,8,
+	0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+	-3008,-3008,-3008,-3008,-3008,-3008,-3008,-3008,-3008,-3008,-3008,-3008,-3008,-3008,-3008,-3008,
+	0,0,-3008,-3008,-3008,0,0,0,0,0,0,0,0,0,0,0,
+	0,0,0,0,0,1,0,1,0,1,0,1,0,1,0,1,
+	0,1,0,1,0,0,0,0,0,0,0,0,0,-7615,0,1,
+	0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,0,
+	0,0,0,0,0,0,-8,-8,-8,-8,-8,-8,-8,-8,0,0,
+	0,0,0,0,0,0,-8,-8,-8,-8,-8,-8,0,0,0,0,
+	0,0,0,0,-8,-8,-8,-8,-8,-8,-8,-8,0,0,0,0,
+	0,0,0,0,-8,-8,-8,-8,-8,-8,0,0,0,0,0,0,
+	0,0,0,-8,0,-8,0,-8,0,-8,0,0,0,0,0,0,
+	0,0,-8,-8,-8,-8,-8,-8,-8,-8,0,0,0,0,0,0,
+	0,0,0,0,0,0,0,0,0,0,-8,-8,-8,-8,-8,-8,
+	-8,-8,0,0,0,0,0,0,0,0,-8,-8,-74,-74,-9,0,
+	0,0,0,0,0,0,0,-86,-86,-86,-86,-9,0,0,0,0,
+	0,0,0,0,-8,-8,-100,-100,0,0,0,0,0,0,0,0,
+	-8,-8,-112,-112,-7,0,0,0,0,0,0,0,0,-128,-128,-126,
+	-126,-9,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+	0,0,-7517,0,0,0,-8383,-8262,0,0,0,0,28,0,0,0,
+	0,0,0,0,0,0,0,0,0,0,0,0,0,16,16,16,
+	16,16,16,16,16,16,16,16,16,16,16,16,16,0,0,0,
+	0,0,0,0,0,0,0,0,0,0,0,0,0,1,0,0,
+	0,0,0,0,0,0,0,0,0,0,0,0,0,0,26,26,
+	26,26,26,26,26,26,26,26,26,26,26,26,26,26,0,0,
+	0,0,0,0,0,0,0,0,0,0,0,0,0,0,48,48,
+	48,48,48,48,48,48,48,48,48,48,48,48,48,48,0,0,
+	0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,0,
+	-10743,-3814,-10727,0,0,1,0,1,0,1,0,-10780,-10749,-10783,-10782,0,
+	1,0,0,1,0,0,0,0,0,0,0,0,-10815,-10815,1,0,
+	1,0,1,0,1,0,1,0,1,0,1,0,1,0,0,0,
+	0,0,0,0,0,1,0,1,0,0,1,0,0,0,0,0,
+	0,0,0,0,0,0,0,0,0,0,0,1,0,1,0,1,
+	0,1,0,1,0,1,0,1,0,1,0,0,0,0,0,0,
+	0,0,0,0,0,0,0,0,0,0,1,0,1,0,1,0,
+	1,0,1,0,1,0,1,0,1,0,0,0,0,0,0,0,
+	0,0,0,0,0,0,0,0,0,1,0,1,0,1,0,1,
+	0,1,0,1,0,1,0,1,0,0,0,0,0,0,0,0,
+	0,1,0,1,0,-35332,1,0,1,0,1,0,1,0,0,0,
+	0,1,0,-42280,0,0,1,0,1,0,0,0,1,0,1,0,
+	1,0,1,0,1,0,-42308,-42319,-42315,-42305,-42308,0,-42258,-42282,-42261,928,
+	1,0,1,0,1,0,1,0,1,0,1,0,-48,-42307,-35384,1,
+	0,1,0,0,0,0,0,0,1,0,0,0,0,0,1,0,
+	1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+	0,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+	0,0,32,32,32,32,32,32,32,32,32,32,32,32,32,32,
+	32,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+	0,40,40,40,40,40,40,40,40,40,40,40,40,40,40,40,
+	40,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+	0,40,40,40,40,40,40,40,40,40,40,40,40,40,40,40,
+	40,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+	0,39,39,39,39,39,39,39,39,39,39,39,0,39,39,39,
+	39,0,39,39,0,0,0,0,0,0,0,0,0,0,0,0,
+	0,0,0,0,64,64,64,64,64,64,64,64,64,64,64,64,
+	64,64,64,64,0,0,0,0,0,0,0,0,0,0,0,0,
+	0,0,0,0,32,32,32,32,32,32,32,32,32,32,32,32,
+	32,32,32,32,0,0,0,0,0,0,0,0,0,0,0,0,
+	0,0,0,0,32,32,32,32,32,32,32,32,32,32,32,32,
+	32,32,32,32,0,0,0,0,0,0,0,0,0,0,0,0,
+	0,0,0,0,34,34,34,34,34,34,34,34,34,34,34,34,
+	34,34,34,34,0,0,0,0,0,0,0,0,0,0,0,0,
+	0,0,0,0,
+};
+static
+uint16_t	_loweridx2[1524] =
+{
+	0,0,0,0,15,20,31,31,31,31,31,31,47,56,71,71,
+	87,87,87,103,111,121,121,129,144,160,176,192,205,217,231,246,
+	254,254,270,282,297,312,312,312,312,312,312,312,312,312,312,312,
+	312,312,312,312,312,312,312,328,344,360,374,386,387,403,411,426,
+	442,458,458,474,474,474,490,490,504,514,514,514,530,546,546,546,
+	546,546,546,561,562,571,578,578,578,578,578,578,578,578,578,578,
+	578,578,578,578,578,578,578,578,578,578,578,578,578,578,578,578,
+	578,578,578,578,578,578,578,578,578,578,578,578,578,578,578,578,
+	578,578,578,578,578,578,578,578,578,578,578,578,578,578,578,578,
+	578,578,578,578,578,578,578,578,578,578,578,578,578,578,578,578,
+	578,578,578,578,578,578,578,578,578,578,578,578,578,578,578,578,
+	578,578,578,578,578,578,578,578,578,578,578,578,578,578,578,578,
+	578,578,578,578,578,578,578,578,578,578,578,578,578,578,578,578,
+	578,578,578,578,578,578,594,594,604,618,618,618,618,618,618,618,
+	618,618,618,618,618,618,618,618,618,618,618,618,618,618,618,618,
+	618,618,618,618,618,618,618,618,618,618,618,618,618,618,618,618,
+	618,618,618,618,618,618,634,634,634,634,634,650,656,656,656,656,
+	656,656,656,656,656,656,656,656,656,656,656,656,656,656,656,656,
+	656,656,656,656,656,656,656,656,656,656,656,656,656,656,656,656,
+	656,656,656,656,656,656,656,656,656,656,656,656,656,656,656,656,
+	656,656,656,656,656,656,656,656,656,656,656,656,656,656,656,656,
+	656,656,656,656,656,672,672,677,693,693,693,693,693,693,693,693,
+	693,693,693,693,693,693,693,693,693,693,693,693,709,709,709,709,
+	709,709,709,709,709,719,735,735,735,735,735,735,750,766,780,780,
+	796,810,826,842,850,850,850,866,879,892,904,917,930,930,930,930,
+	930,930,930,930,930,930,930,930,930,930,930,930,930,930,940,954,
+	957,957,973,989,1002,1006,1006,1006,1006,1006,1006,1006,1006,1006,1006,1006,
+	1006,1006,1006,1006,1006,1006,1006,1006,1006,1006,1006,1006,1006,1006,1006,1006,
+	1006,1006,1006,1006,1006,1006,1006,1006,1006,1006,1006,1006,1006,1006,1006,1006,
+	1006,1006,1006,1006,1006,1006,1006,1016,1022,1038,1038,1038,1038,1038,1038,1038,
+	1038,1038,1038,1038,1038,1038,1038,1038,1038,1038,1038,1038,1038,1038,1038,1038,
+	1038,1038,1038,1038,1038,1038,1038,1038,1038,1038,1038,1038,1038,1038,1038,1038,
+	1038,1038,1038,1038,1038,1038,1038,1038,1038,1038,1038,1038,1038,1038,1038,1038,
+	1038,1038,1038,1038,1038,1038,1038,1038,1038,1054,1054,1054,1070,1070,1070,1086,
+	1102,1118,1118,1118,1118,1118,1118,1130,1144,1147,1147,1147,1147,1147,1147,1147,
+	1147,1147,1147,1147,1147,1147,1147,1147,1147,1147,1147,1147,1147,1147,1147,1147,
+	1147,1147,1147,1147,1147,1147,1147,1147,1147,1147,1147,1147,1147,1147,1147,1147,
+	1147,1147,1147,1147,1147,1147,1147,1147,1147,1147,1147,1147,1147,1147,1147,1147,
+	1147,1147,1147,1147,1147,1147,1147,1147,1147,1147,1147,1147,1147,1147,1147,1147,
+	1147,1147,1147,1147,1147,1147,1147,1147,1147,1147,1147,1147,1147,1147,1147,1147,
+	1147,1147,1147,1147,1147,1147,1147,1147,1147,1147,1147,1147,1147,1147,1147,1147,
+	1147,1147,1147,1147,1147,1147,1147,1147,1147,1147,1147,1147,1147,1147,1147,1147,
+	1147,1147,1147,1147,1147,1147,1147,1147,1147,1163,1163,1165,1178,1194,1198,1209,
+	1209,1209,1209,1209,1209,1209,1209,1223,1223,1225,1225,1225,1240,1254,1270,1276,
+	1292,1304,1320,1329,1340,1346,1346,1346,1346,1346,1346,1346,1346,1346,1346,1346,
+	1346,1346,1346,1346,1346,1346,1346,1346,1346,1346,1346,1346,1346,1346,1346,1346,
+	1346,1346,1346,1346,1346,1346,1346,1346,1346,1346,1346,1346,1346,1346,1346,1346,
+	1346,1346,1346,1346,1346,1346,1346,1346,1346,1346,1346,1346,1346,1346,1346,1346,
+	1346,1346,1346,1346,1346,1346,1346,1346,1346,1346,1346,1346,1346,1346,1346,1346,
+	1346,1346,1346,1346,1346,1346,1346,1346,1346,1346,1346,1346,1346,1346,1346,1346,
+	1346,1346,1346,1346,1346,1346,1346,1346,1346,1346,1346,1346,1346,1346,1346,1346,
+	1346,1346,1346,1346,1346,1346,1346,1346,1346,1346,1346,1346,1346,1346,1346,1346,
+	1346,1346,1346,1346,1346,1361,1366,1377,1377,1377,1377,1377,1377,1377,1377,1377,
+	1377,1377,1377,1377,1377,1377,1377,1377,1377,1377,1377,1377,1377,1377,1377,1377,
+	1377,1377,1377,1377,1377,1377,1377,1377,1377,1377,1377,1377,1377,1377,1377,1377,
+	1377,1377,1377,1377,1377,1377,1377,1377,1377,1377,1377,1377,1377,1377,1377,1377,
+	1377,1377,1377,1377,1377,1377,1377,1393,1393,1401,1409,1409,1409,1409,1409,1409,
+	1409,1409,1425,1425,1437,1441,1441,1441,1441,1441,1441,1441,1441,1441,1457,1457,
+	1470,1476,1476,1476,1476,1476,1476,1476,1476,1476,1476,1476,1476,1476,1476,1476,
+	1476,1476,1476,1476,1476,1476,1476,1476,1476,1476,1476,1476,1476,1476,1476,1476,
+	1476,1476,1476,1476,1476,1476,1476,1476,1476,1476,1476,1476,1476,1476,1476,1476,
+	1476,1476,1476,1476,1476,1476,1476,1476,1476,1476,1476,1476,1476,1476,1476,1476,
+	1476,1476,1476,1476,1476,1476,1476,1476,1476,1492,1492,1492,1505,1508,1508,1508,
+	1508,1508,1508,1508,1508,1508,1508,1508,1508,1508,1508,1508,1508,1508,1508,1508,
+	1508,1508,1508,1508,1508,1508,1508,1508,1508,1508,1508,1508,1508,1508,1508,1508,
+	1508,1508,1508,1508,1508,1508,1508,1508,1508,1508,1508,1508,1508,1508,1508,1508,
+	1508,1508,1508,1508,1508,1508,1508,1508,1508,1508,1508,1508,1508,1508,1508,1508,
+	1508,1508,1508,1508,1508,1508,1508,1508,1508,1508,1508,1508,1508,1508,1508,1508,
+	1508,1508,1508,1508,1508,1508,1508,1508,1508,1508,1508,1508,1508,1508,1508,1508,
+	1508,1508,1508,1508,1508,1508,1508,1508,1508,1508,1508,1508,1508,1508,1508,1508,
+	1508,1508,1508,1508,1508,1508,1508,1508,1508,1508,1508,1508,1508,1524,1524,1540,
+	1540,1540,1540,1540,1540,1540,1540,1540,1540,1540,1540,1540,1540,1540,1540,1540,
+	1540,1540,1540,1540,1540,1540,1540,1540,1540,1540,1540,1540,1540,1540,1540,1540,
+	1540,1540,1540,1540,1540,1540,1540,1540,1540,1540,1540,1540,1540,1540,1540,1540,
+	1540,1540,1540,1540,1540,1540,1540,1540,1540,1540,1540,1540,1540,1540,1540,1540,
+	1540,1540,1540,1540,1540,1540,1540,1540,1540,1540,1540,1540,1540,1540,1540,1540,
+	1540,1540,1540,1540,1540,1540,1540,1540,1540,1540,1540,1540,1540,1540,1540,1540,
+	1540,1540,1540,1540,1540,1540,1540,1540,1540,1540,1540,1540,1540,1540,1540,1540,
+	1540,1540,1540,1540,1540,1540,1540,1540,1540,1540,1540,1540,1540,1540,1540,1556,
+	1556,1572,1572,1572,1572,1572,1572,1572,1572,1572,1572,1572,1572,1572,1572,1572,
+	1572,1572,1572,1572,1572,1572,1572,1572,1572,1572,1572,1572,1572,1572,1572,1572,
+	1572,1572,1572,1572,1572,1572,1572,1572,1572,1572,1572,1572,1572,1572,1572,1572,
+	1572,1572,1572,1572,1572,1572,1572,1572,1572,1572,1572,1572,1572,1572,1572,1572,
+	1572,1572,1572,1572,1572,1572,1572,1572,1572,1572,1572,1572,1572,1572,1572,1572,
+	1572,1572,1572,1572,1572,1572,1572,1572,1572,1572,1572,1572,1572,1572,1572,1572,
+	1572,1572,1572,1572,1572,1572,1572,1572,1572,1572,1572,1572,1572,1572,1572,1572,
+	1572,1572,1572,1572,1572,1572,1572,1572,1572,1572,1572,1572,1572,1572,1572,1572,
+	1572,1588,1588,1602,1604,1604,1604,1604,1604,1604,1604,1604,1604,1604,1604,1604,
+	1604,1604,1604,1604,1604,1604,1604,1604,1604,1604,1604,1604,1604,1604,1604,1604,
+	1604,1604,1604,1604,1604,1604,1604,1604,1604,1604,1604,1604,1604,1604,1604,1604,
+	1604,1604,1604,1604,1604,1604,1604,1604,1604,1604,1604,1604,1604,1604,1604,1604,
+	1604,1604,1604,1604,1604,1604,1604,1604,1604,1604,1604,1604,1604,1604,1604,1604,
+	1604,1604,1604,1604,1604,1604,1604,1604,1604,1604,1604,1604,1604,1604,1604,1604,
+	1604,1604,1604,1604,1604,1604,1604,1604,1604,1604,1604,1604,1604,1604,1604,1604,
+	1604,1604,1604,1604,1604,1604,1604,1604,1604,1604,1604,1604,1604,1604,1604,1604,
+	1604,1604,1604,1604,
+};
+static
+uint16_t	_loweridx1[1024] =
+{
+	0,86,204,268,396,473,553,553,553,553,553,553,553,553,553,553,
+	553,553,553,553,581,709,709,709,709,709,709,709,709,709,709,723,
+	839,929,1005,1123,1135,1135,1135,1135,1135,1135,1135,1135,1135,1163,1265,1265,
+	1265,1265,1265,1265,1265,1265,1265,1265,1265,1265,1265,1265,1265,1377,1396,1396,
+	1396,1396,1396,1396,1396,1396,1396,1396,1396,1396,1396,1396,1396,1396,1396,1396,
+	1396,1396,1396,1396,1396,1396,1396,1396,1396,1396,1396,1396,1396,1396,1396,1396,
+	1396,1396,1396,1396,1396,1396,1396,1396,1396,1396,1396,1396,1396,1396,1396,1396,
+	1396,1396,1396,1396,1396,1396,1396,1396,1396,1396,1396,1396,1396,1396,1396,1396,
+	1396,1396,1396,1396,1396,1396,1396,1396,1396,1396,1396,1396,1396,1396,1396,1396,
+	1396,1396,1396,1396,1396,1396,1396,1396,1396,1396,1396,1396,1396,1396,1396,1396,
+	1396,1396,1396,1396,1396,1396,1396,1396,1396,1396,1396,1396,1396,1396,1396,1396,
+	1396,1396,1396,1396,1396,1396,1396,1396,1396,1396,1396,1396,1396,1396,1396,1396,
+	1396,1396,1396,1396,1396,1396,1396,1396,1396,1396,1396,1396,1396,1396,1396,1396,
+	1396,1396,1396,1396,1396,1396,1396,1396,1396,1396,1396,1396,1396,1396,1396,1396,
+	1396,1396,1396,1396,1396,1396,1396,1396,1396,1396,1396,1396,1396,1396,1396,1396,
+	1396,1396,1396,1396,1396,1396,1396,1396,1396,1396,1396,1396,1396,1396,1396,1396,
+	1396,1396,1396,1396,1396,1396,1396,1396,1396,1396,1396,1396,1396,1396,1396,1396,
+	1396,1396,1396,1396,1396,1396,1396,1396,1396,1396,1396,1396,1396,1396,1396,1396,
+	1396,1396,1396,1396,1396,1396,1396,1396,1396,1396,1396,1396,1396,1396,1396,1396,
+	1396,1396,1396,1396,1396,1396,1396,1396,1396,1396,1396,1396,1396,1396,1396,1396,
+	1396,1396,1396,1396,1396,1396,1396,1396,1396,1396,1396,1396,1396,1396,1396,1396,
+	1396,1396,1396,1396,1396,1396,1396,1396,1396,1396,1396,1396,1396,1396,1396,1396,
+	1396,1396,1396,1396,1396,1396,1396,1396,1396,1396,1396,1396,1396,1396,1396,1396,
+	1396,1396,1396,1396,1396,1396,1396,1396,1396,1396,1396,1396,1396,1396,1396,1396,
+	1396,1396,1396,1396,1396,1396,1396,1396,1396,1396,1396,1396,1396,1396,1396,1396,
+	1396,1396,1396,1396,1396,1396,1396,1396,1396,1396,1396,1396,1396,1396,1396,1396,
+	1396,1396,1396,1396,1396,1396,1396,1396,1396,1396,1396,1396,1396,1396,1396,1396,
+	1396,1396,1396,1396,1396,1396,1396,1396,1396,1396,1396,1396,1396,1396,1396,1396,
+	1396,1396,1396,1396,1396,1396,1396,1396,1396,1396,1396,1396,1396,1396,1396,1396,
+	1396,1396,1396,1396,1396,1396,1396,1396,1396,1396,1396,1396,1396,1396,1396,1396,
+	1396,1396,1396,1396,1396,1396,1396,1396,1396,1396,1396,1396,1396,1396,1396,1396,
+	1396,1396,1396,1396,1396,1396,1396,1396,1396,1396,1396,1396,1396,1396,1396,1396,
+	1396,1396,1396,1396,1396,1396,1396,1396,1396,1396,1396,1396,1396,1396,1396,1396,
+	1396,1396,1396,1396,1396,1396,1396,1396,1396,1396,1396,1396,1396,1396,1396,1396,
+	1396,1396,1396,1396,1396,1396,1396,1396,1396,1396,1396,1396,1396,1396,1396,1396,
+	1396,1396,1396,1396,1396,1396,1396,1396,1396,1396,1396,1396,1396,1396,1396,1396,
+	1396,1396,1396,1396,1396,1396,1396,1396,1396,1396,1396,1396,1396,1396,1396,1396,
+	1396,1396,1396,1396,1396,1396,1396,1396,1396,1396,1396,1396,1396,1396,1396,1396,
+	1396,1396,1396,1396,1396,1396,1396,1396,1396,1396,1396,1396,1396,1396,1396,1396,
+	1396,1396,1396,1396,1396,1396,1396,1396,1396,1396,1396,1396,1396,1396,1396,1396,
+	1396,1396,1396,1396,1396,1396,1396,1396,1396,1396,1396,1396,1396,1396,1396,1396,
+	1396,1396,1396,1396,1396,1396,1396,1396,1396,1396,1396,1396,1396,1396,1396,1396,
+	1396,1396,1396,1396,1396,1396,1396,1396,1396,1396,1396,1396,1396,1396,1396,1396,
+	1396,1396,1396,1396,1396,1396,1396,1396,1396,1396,1396,1396,1396,1396,1396,1396,
+	1396,1396,1396,1396,1396,1396,1396,1396,1396,1396,1396,1396,1396,1396,1396,1396,
+	1396,1396,1396,1396,1396,1396,1396,1396,1396,1396,1396,1396,1396,1396,1396,1396,
+	1396,1396,1396,1396,1396,1396,1396,1396,1396,1396,1396,1396,1396,1396,1396,1396,
+	1396,1396,1396,1396,1396,1396,1396,1396,1396,1396,1396,1396,1396,1396,1396,1396,
+	1396,1396,1396,1396,1396,1396,1396,1396,1396,1396,1396,1396,1396,1396,1396,1396,
+	1396,1396,1396,1396,1396,1396,1396,1396,1396,1396,1396,1396,1396,1396,1396,1396,
+	1396,1396,1396,1396,1396,1396,1396,1396,1396,1396,1396,1396,1396,1396,1396,1396,
+	1396,1396,1396,1396,1396,1396,1396,1396,1396,1396,1396,1396,1396,1396,1396,1396,
+	1396,1396,1396,1396,1396,1396,1396,1396,1396,1396,1396,1396,1396,1396,1396,1396,
+	1396,1396,1396,1396,1396,1396,1396,1396,1396,1396,1396,1396,1396,1396,1396,1396,
+	1396,1396,1396,1396,1396,1396,1396,1396,1396,1396,1396,1396,1396,1396,1396,1396,
+	1396,1396,1396,1396,1396,1396,1396,1396,1396,1396,1396,1396,1396,1396,1396,1396,
+	1396,1396,1396,1396,1396,1396,1396,1396,1396,1396,1396,1396,1396,1396,1396,1396,
+	1396,1396,1396,1396,1396,1396,1396,1396,1396,1396,1396,1396,1396,1396,1396,1396,
+	1396,1396,1396,1396,1396,1396,1396,1396,1396,1396,1396,1396,1396,1396,1396,1396,
+	1396,1396,1396,1396,1396,1396,1396,1396,1396,1396,1396,1396,1396,1396,1396,1396,
+	1396,1396,1396,1396,1396,1396,1396,1396,1396,1396,1396,1396,1396,1396,1396,1396,
+	1396,1396,1396,1396,1396,1396,1396,1396,1396,1396,1396,1396,1396,1396,1396,1396,
+	1396,1396,1396,1396,1396,1396,1396,1396,1396,1396,1396,1396,1396,1396,1396,1396,
+	1396,1396,1396,1396,1396,1396,1396,1396,1396,1396,1396,1396,1396,1396,1396,1396,
+	
+};
+
+#define lowerindex1(x) (((x)>>(4+7))&0x3FF)
+#define lowerindex2(x) (((x)>>4)&0x7F)
+#define loweroffset(x) ((x)&0xF)
+#define lowerlkup(x) (_lowerdata[_loweridx2[_loweridx1[lowerindex1(x)] + lowerindex2(x)] + loweroffset(x)] )
+
+static
+int	_titledata[1717] =
+{
+	0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+	-32,-32,-32,-32,-32,-32,-32,-32,-32,-32,-32,-32,-32,-32,-32,0,
+	0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,743,
+	0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+	-32,-32,-32,-32,-32,-32,-32,-32,-32,-32,-32,-32,-32,-32,-32,-32,
+	0,-32,-32,-32,-32,-32,-32,-32,121,0,-1,0,-1,0,-1,0,
+	-1,0,-1,0,-1,0,-1,0,-1,0,-232,0,-1,0,-1,0,
+	-1,0,0,-1,0,-1,0,-1,0,-1,0,-1,0,0,-1,0,
+	-1,0,-1,0,-1,0,-1,0,-1,0,-1,0,-1,0,0,-1,
+	0,-1,0,-1,-300,195,0,0,-1,0,-1,0,0,-1,0,0,
+	0,-1,0,0,0,-1,0,0,97,0,0,0,-1,163,0,0,
+	0,130,0,-1,0,-1,0,-1,0,0,-1,0,0,0,0,-1,
+	0,0,0,-1,0,-1,0,0,-1,0,0,0,-1,0,56,0,
+	0,0,0,1,0,-1,1,0,-1,1,0,-1,0,-1,0,-1,
+	0,-1,0,-1,0,-1,0,-1,-79,0,-1,0,-1,0,-1,0,
+	-1,0,-1,0,-1,0,-1,0,-1,0,1,0,-1,0,-1,0,
+	0,0,-1,0,-1,0,-1,0,-1,0,-1,0,-1,0,-1,0,
+	-1,0,0,0,-1,0,-1,0,-1,0,-1,0,-1,0,-1,0,
+	-1,0,0,0,0,0,0,0,0,-1,0,0,10815,0,-1,0,
+	0,0,0,-1,0,-1,0,-1,0,-1,0,-1,10783,10780,10782,-210,
+	-206,0,-205,-205,0,-202,0,-203,42319,0,0,0,-205,42315,0,-207,
+	0,42280,42308,0,-209,-211,42308,10743,42305,0,0,-211,0,10749,-213,0,
+	0,-214,0,0,0,0,0,0,0,10727,0,0,-218,0,42307,-218,
+	0,0,0,42282,-218,-69,-217,-217,-71,0,0,0,-219,0,0,0,
+	0,0,0,0,0,0,0,42261,42258,0,0,0,0,0,0,0,
+	0,0,0,0,0,0,0,0,0,84,0,0,0,0,0,0,
+	0,0,0,0,0,0,0,0,0,0,-1,0,-1,0,0,0,
+	-1,0,0,0,130,130,130,0,0,0,0,0,0,0,0,0,
+	0,0,0,0,0,0,0,-38,-37,-37,-37,0,-32,-32,-32,-32,
+	-32,-32,-32,-32,-32,-32,-32,-32,-32,-32,-32,-31,-32,-32,-32,-32,
+	-32,-32,-32,-32,-32,-64,-63,-63,0,-62,-57,0,0,0,-47,-54,
+	-8,0,-1,0,-1,0,-1,0,-1,0,-1,0,-1,0,-1,0,
+	-1,-86,-80,7,-116,0,-96,0,0,-1,0,0,-1,0,0,0,
+	0,0,0,0,0,0,0,0,0,0,0,0,0,-32,-32,-32,
+	-32,-32,-32,-32,-32,-32,-32,-32,-32,-32,-32,-32,-32,-80,-80,-80,
+	-80,-80,-80,-80,-80,-80,-80,-80,-80,-80,-80,-80,-80,0,-1,0,
+	-1,0,-1,0,-1,0,-1,0,-1,0,-1,0,-1,0,0,0,
+	0,0,0,0,0,0,-1,0,-1,0,-1,0,-1,0,-1,0,
+	-1,0,-1,0,-1,0,0,-1,0,-1,0,-1,0,-1,0,-1,
+	0,-1,0,-1,-15,0,-1,0,-1,0,-1,0,-1,0,-1,0,
+	-1,0,-1,0,-1,0,0,0,0,0,0,0,0,0,0,0,
+	0,0,0,0,0,-48,-48,-48,-48,-48,-48,-48,-48,-48,-48,-48,
+	-48,-48,-48,-48,-48,0,0,0,0,0,0,0,0,0,0,0,
+	0,0,0,0,0,-8,-8,-8,-8,-8,-8,0,0,0,0,0,
+	0,0,0,0,0,0,0,0,0,0,0,-6254,-6253,-6244,-6242,-6242,
+	-6243,-6236,-6181,35266,0,0,0,0,0,0,0,0,0,0,0,0,
+	0,0,0,0,35332,0,0,0,3814,0,0,0,0,0,0,0,
+	0,0,0,0,0,0,0,35384,0,0,0,0,0,0,0,0,
+	0,0,0,0,0,0,0,0,-1,0,-1,0,-1,0,-1,0,
+	-1,0,-1,0,-1,0,-1,0,0,0,0,0,-59,0,0,0,
+	0,-1,0,-1,0,-1,0,-1,0,-1,0,-1,0,-1,0,-1,
+	8,8,8,8,8,8,8,8,0,0,0,0,0,0,0,0,
+	0,0,8,8,8,8,8,8,8,8,0,0,0,0,0,0,
+	0,0,0,0,8,0,8,0,8,0,8,0,0,0,0,0,
+	0,0,0,8,8,8,8,8,8,8,8,0,0,0,0,0,
+	0,0,0,74,74,86,86,86,86,100,100,128,128,112,112,126,
+	126,0,0,8,8,8,8,8,8,8,8,0,0,0,0,0,
+	0,0,0,8,8,0,9,0,0,0,0,0,0,0,0,0,
+	0,-7205,0,0,0,9,0,0,0,0,0,0,0,0,0,0,
+	0,0,8,8,0,0,0,0,0,0,0,0,0,0,0,0,
+	0,0,8,8,0,0,0,7,0,0,0,0,0,0,0,0,
+	0,0,9,0,0,0,0,0,0,0,0,0,0,0,0,0,
+	0,0,0,-28,0,0,0,0,0,0,0,0,0,0,0,0,
+	0,0,0,0,-16,-16,-16,-16,-16,-16,-16,-16,-16,-16,-16,-16,
+	-16,-16,-16,-16,0,0,0,0,-1,0,0,0,0,0,0,0,
+	0,0,0,0,0,0,0,0,0,-26,-26,-26,-26,-26,-26,-26,
+	-26,-26,-26,-26,-26,-26,-26,-26,-26,0,0,0,0,0,0,0,
+	0,0,0,0,0,0,0,0,0,-48,-48,-48,-48,-48,-48,-48,
+	-48,-48,-48,-48,-48,-48,-48,-48,-48,0,-1,0,0,0,-10795,-10792,
+	0,-1,0,-1,0,-1,0,0,0,-1,0,0,-1,0,0,0,
+	0,0,0,0,0,0,-1,0,-1,0,-1,0,-1,0,-1,0,
+	-1,0,-1,0,-1,0,0,0,0,0,0,0,0,-1,0,-1,
+	0,0,0,-1,0,0,0,0,0,0,0,0,0,0,0,0,
+	-7264,-7264,-7264,-7264,-7264,-7264,-7264,-7264,-7264,-7264,-7264,-7264,-7264,-7264,-7264,-7264,
+	0,-7264,0,0,0,0,0,-7264,0,0,0,0,0,0,0,0,
+	0,0,0,0,0,0,0,0,-1,0,-1,0,-1,0,-1,0,
+	-1,0,-1,0,-1,0,-1,0,0,0,0,0,0,0,0,0,
+	0,0,0,0,0,0,0,-1,0,-1,0,-1,0,-1,0,-1,
+	0,-1,0,-1,0,-1,0,0,0,0,0,0,0,0,0,0,
+	0,0,0,0,0,0,-1,0,-1,0,-1,0,-1,0,-1,0,
+	-1,0,-1,0,-1,0,0,0,0,0,0,0,0,0,0,-1,
+	0,-1,0,0,-1,0,-1,0,-1,0,-1,0,0,0,0,-1,
+	0,0,0,-1,0,-1,48,0,0,-1,0,-1,0,-1,0,-1,
+	0,-1,0,0,0,0,0,0,-1,0,-1,0,-1,0,-1,0,
+	-1,0,-1,0,0,0,0,-1,0,-1,0,0,0,0,0,-1,
+	0,-1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+	0,0,-1,0,0,0,0,0,0,0,0,0,0,0,0,0,
+	0,0,0,-928,0,0,0,0,0,0,0,0,0,0,0,0,
+	0,0,0,0,-38864,-38864,-38864,-38864,-38864,-38864,-38864,-38864,-38864,-38864,-38864,-38864,
+	-38864,-38864,-38864,-38864,0,0,0,0,0,0,0,0,0,0,0,0,
+	0,0,0,0,-32,-32,-32,-32,-32,-32,-32,-32,-32,-32,-32,-32,
+	-32,-32,-32,0,0,0,0,0,0,0,0,0,0,0,0,0,
+	0,0,0,-40,-40,-40,-40,-40,-40,-40,-40,-40,-40,-40,-40,-40,
+	-40,-40,-40,0,0,0,0,0,0,0,0,0,0,0,0,0,
+	0,0,0,-40,-40,-40,-40,-40,-40,-40,-40,-40,-40,-40,-40,-40,
+	-40,-40,-40,0,0,0,0,0,0,0,0,0,0,0,0,0,
+	0,0,0,-39,-39,-39,-39,-39,-39,-39,-39,-39,0,-39,-39,-39,
+	-39,-39,-39,-39,-39,-39,-39,-39,-39,-39,0,-39,-39,-39,-39,-39,
+	-39,-39,0,-39,-39,0,0,0,0,0,0,0,0,0,0,0,
+	0,0,0,0,0,-64,-64,-64,-64,-64,-64,-64,-64,-64,-64,-64,
+	-64,-64,-64,-64,-64,0,0,0,0,0,0,0,0,0,0,0,
+	0,0,0,0,0,-32,-32,-32,-32,-32,-32,-32,-32,-32,-32,-32,
+	-32,-32,-32,-32,-32,0,0,0,0,0,0,0,0,0,0,0,
+	0,0,0,0,0,-32,-32,-32,-32,-32,-32,-32,-32,-32,-32,-32,
+	-32,-32,-32,-32,-32,0,0,0,0,0,0,0,0,0,0,0,
+	0,0,0,0,0,-34,-34,-34,-34,-34,-34,-34,-34,-34,-34,-34,
+	-34,-34,-34,-34,-34,0,0,0,0,0,0,0,0,0,0,0,
+	0,0,0,0,0,
+};
+static
+uint16_t	_titleidx2[1545] =
+{
+	0,0,0,0,0,0,15,20,31,31,31,42,48,48,64,73,
+	89,89,89,105,115,125,125,133,149,163,178,191,207,219,233,249,
+	257,257,273,285,300,316,332,348,364,378,393,393,393,393,393,393,
+	393,393,393,393,404,410,410,425,439,439,443,459,473,489,497,513,
+	525,525,525,541,541,557,573,573,587,597,597,597,613,629,629,629,
+	629,629,629,645,645,645,660,661,670,677,677,677,677,677,677,677,
+	677,677,677,677,677,677,677,677,677,677,677,677,677,677,677,677,
+	677,677,677,677,677,677,677,677,677,677,677,677,677,677,677,677,
+	677,677,677,677,677,677,677,677,677,677,677,677,677,677,677,677,
+	677,677,677,677,677,677,677,677,677,677,677,677,677,677,677,677,
+	677,677,677,677,677,677,677,677,677,677,677,677,677,677,677,677,
+	677,677,677,677,677,677,677,677,677,677,677,677,677,677,677,677,
+	677,677,677,677,677,677,677,677,677,677,677,677,677,677,677,677,
+	677,677,677,677,677,677,677,677,677,685,699,699,699,699,699,699,
+	699,699,699,699,699,699,699,699,699,699,699,699,699,699,699,699,
+	699,699,699,699,699,699,699,699,699,699,699,699,699,699,699,699,
+	699,699,699,699,699,699,699,699,699,699,699,699,699,699,699,699,
+	699,699,699,699,699,699,699,699,699,699,699,699,699,699,699,699,
+	699,699,715,724,724,724,724,724,724,724,724,724,724,724,724,724,
+	724,731,745,760,760,760,760,760,760,760,775,775,775,775,775,775,
+	775,775,775,785,800,800,800,800,800,800,816,818,834,834,836,851,
+	867,883,899,899,899,915,930,946,962,975,979,979,979,979,979,979,
+	979,979,979,979,979,979,979,979,979,979,979,979,979,979,981,996,
+	996,1012,1028,1033,1033,1033,1033,1033,1033,1033,1033,1033,1033,1033,1033,1033,
+	1033,1033,1033,1033,1033,1033,1033,1033,1033,1033,1033,1033,1033,1033,1033,1033,
+	1033,1033,1033,1033,1033,1033,1033,1033,1033,1033,1033,1033,1033,1033,1033,1033,
+	1033,1033,1033,1033,1033,1033,1033,1049,1055,1065,1065,1065,1065,1065,1065,1065,
+	1065,1065,1065,1065,1065,1065,1065,1065,1065,1065,1065,1065,1065,1065,1065,1065,
+	1065,1065,1065,1065,1065,1065,1065,1065,1065,1065,1065,1065,1065,1065,1065,1065,
+	1065,1065,1065,1065,1065,1065,1065,1065,1065,1065,1065,1065,1065,1065,1065,1065,
+	1065,1065,1065,1065,1065,1065,1065,1065,1065,1065,1065,1065,1081,1081,1081,1097,
+	1110,1125,1125,1125,1125,1125,1125,1137,1152,1168,1168,1178,1192,1192,1192,1192,
+	1192,1192,1192,1192,1192,1192,1192,1192,1192,1192,1192,1192,1192,1192,1192,1192,
+	1192,1192,1192,1192,1192,1192,1192,1192,1192,1192,1192,1192,1192,1192,1192,1192,
+	1192,1192,1192,1192,1192,1192,1192,1192,1192,1192,1192,1192,1192,1192,1192,1192,
+	1192,1192,1192,1192,1192,1192,1192,1192,1192,1192,1192,1192,1192,1192,1192,1192,
+	1192,1192,1192,1192,1192,1192,1192,1192,1192,1192,1192,1192,1192,1192,1192,1192,
+	1192,1192,1192,1192,1192,1192,1192,1192,1192,1192,1192,1192,1192,1192,1192,1192,
+	1192,1192,1192,1192,1192,1192,1192,1192,1192,1192,1192,1192,1192,1192,1192,1192,
+	1192,1192,1192,1192,1192,1192,1192,1192,1192,1192,1192,1192,1207,1207,1209,1223,
+	1238,1242,1254,1254,1254,1254,1254,1254,1254,1254,1267,1267,1269,1269,1269,1285,
+	1299,1314,1320,1331,1343,1352,1362,1372,1379,1379,1379,1379,1379,1379,1379,1379,
+	1379,1379,1379,1379,1379,1379,1379,1379,1379,1379,1379,1379,1379,1379,1379,1379,
+	1379,1379,1379,1379,1379,1379,1379,1379,1379,1379,1379,1379,1379,1379,1379,1379,
+	1379,1379,1379,1379,1379,1379,1379,1379,1379,1379,1379,1379,1379,1392,1396,1412,
+	1412,1412,1412,1412,1428,1428,1428,1428,1428,1428,1428,1428,1428,1428,1428,1428,
+	1428,1428,1428,1428,1428,1428,1428,1428,1428,1428,1428,1428,1428,1428,1428,1428,
+	1428,1428,1428,1428,1428,1428,1428,1428,1428,1428,1428,1428,1428,1428,1428,1428,
+	1428,1428,1428,1428,1428,1428,1428,1428,1428,1428,1428,1428,1428,1428,1428,1428,
+	1428,1428,1428,1428,1428,1428,1428,1428,1428,1428,1428,1428,1428,1428,1428,1428,
+	1428,1428,1428,1428,1428,1428,1428,1428,1428,1428,1428,1428,1428,1428,1428,1428,
+	1428,1428,1428,1428,1428,1428,1428,1428,1428,1428,1428,1428,1428,1428,1428,1428,
+	1428,1428,1428,1428,1428,1428,1428,1428,1428,1428,1428,1428,1428,1428,1428,1428,
+	1428,1428,1428,1428,1443,1448,1459,1459,1459,1459,1459,1459,1459,1459,1459,1459,
+	1459,1459,1459,1459,1459,1459,1459,1459,1459,1459,1459,1459,1459,1459,1459,1459,
+	1459,1459,1459,1459,1459,1459,1459,1459,1459,1459,1459,1459,1459,1459,1459,1459,
+	1459,1459,1459,1459,1459,1459,1459,1459,1459,1459,1459,1459,1459,1459,1459,1459,
+	1459,1459,1459,1459,1459,1459,1459,1459,1467,1475,1475,1491,1491,1491,1491,1491,
+	1491,1491,1491,1499,1507,1511,1523,1523,1523,1523,1523,1523,1523,1523,1523,1532,
+	1546,1560,1573,1573,1573,1573,1573,1573,1573,1573,1573,1573,1573,1573,1573,1573,
+	1573,1573,1573,1573,1573,1573,1573,1573,1573,1573,1573,1573,1573,1573,1573,1573,
+	1573,1573,1573,1573,1573,1573,1573,1573,1573,1573,1573,1573,1573,1573,1573,1573,
+	1573,1573,1573,1573,1573,1573,1573,1573,1573,1573,1573,1573,1573,1573,1573,1573,
+	1573,1573,1573,1573,1573,1573,1573,1573,1573,1573,1573,1573,1573,1573,1589,1589,
+	1589,1602,1605,1605,1605,1605,1605,1605,1605,1605,1605,1605,1605,1605,1605,1605,
+	1605,1605,1605,1605,1605,1605,1605,1605,1605,1605,1605,1605,1605,1605,1605,1605,
+	1605,1605,1605,1605,1605,1605,1605,1605,1605,1605,1605,1605,1605,1605,1605,1605,
+	1605,1605,1605,1605,1605,1605,1605,1605,1605,1605,1605,1605,1605,1605,1605,1605,
+	1605,1605,1605,1605,1605,1605,1605,1605,1605,1605,1605,1605,1605,1605,1605,1605,
+	1605,1605,1605,1605,1605,1605,1605,1605,1605,1605,1605,1605,1605,1605,1605,1605,
+	1605,1605,1605,1605,1605,1605,1605,1605,1605,1605,1605,1605,1605,1605,1605,1605,
+	1605,1605,1605,1605,1605,1605,1605,1605,1605,1605,1605,1605,1605,1605,1605,1605,
+	1605,1605,1621,1621,1637,1637,1637,1637,1637,1637,1637,1637,1637,1637,1637,1637,
+	1637,1637,1637,1637,1637,1637,1637,1637,1637,1637,1637,1637,1637,1637,1637,1637,
+	1637,1637,1637,1637,1637,1637,1637,1637,1637,1637,1637,1637,1637,1637,1637,1637,
+	1637,1637,1637,1637,1637,1637,1637,1637,1637,1637,1637,1637,1637,1637,1637,1637,
+	1637,1637,1637,1637,1637,1637,1637,1637,1637,1637,1637,1637,1637,1637,1637,1637,
+	1637,1637,1637,1637,1637,1637,1637,1637,1637,1637,1637,1637,1637,1637,1637,1637,
+	1637,1637,1637,1637,1637,1637,1637,1637,1637,1637,1637,1637,1637,1637,1637,1637,
+	1637,1637,1637,1637,1637,1637,1637,1637,1637,1637,1637,1637,1637,1637,1637,1637,
+	1637,1637,1637,1637,1653,1653,1669,1669,1669,1669,1669,1669,1669,1669,1669,1669,
+	1669,1669,1669,1669,1669,1669,1669,1669,1669,1669,1669,1669,1669,1669,1669,1669,
+	1669,1669,1669,1669,1669,1669,1669,1669,1669,1669,1669,1669,1669,1669,1669,1669,
+	1669,1669,1669,1669,1669,1669,1669,1669,1669,1669,1669,1669,1669,1669,1669,1669,
+	1669,1669,1669,1669,1669,1669,1669,1669,1669,1669,1669,1669,1669,1669,1669,1669,
+	1669,1669,1669,1669,1669,1669,1669,1669,1669,1669,1669,1669,1669,1669,1669,1669,
+	1669,1669,1669,1669,1669,1669,1669,1669,1669,1669,1669,1669,1669,1669,1669,1669,
+	1669,1669,1669,1669,1669,1669,1669,1669,1669,1669,1669,1669,1669,1669,1669,1669,
+	1669,1669,1669,1669,1669,1669,1683,1685,1697,1701,1701,1701,1701,1701,1701,1701,
+	1701,1701,1701,1701,1701,1701,1701,1701,1701,1701,1701,1701,1701,1701,1701,1701,
+	1701,1701,1701,1701,1701,1701,1701,1701,1701,1701,1701,1701,1701,1701,1701,1701,
+	1701,1701,1701,1701,1701,1701,1701,1701,1701,1701,1701,1701,1701,1701,1701,1701,
+	1701,1701,1701,1701,1701,1701,1701,1701,1701,1701,1701,1701,1701,1701,1701,1701,
+	1701,1701,1701,1701,1701,1701,1701,1701,1701,1701,1701,1701,1701,1701,1701,1701,
+	1701,1701,1701,1701,1701,1701,1701,1701,1701,1701,1701,1701,1701,1701,1701,1701,
+	1701,1701,1701,1701,1701,1701,1701,1701,1701,1701,1701,1701,1701,1701,1701,1701,
+	1701,1701,1701,1701,1701,1701,1701,1701,1701,
+};
+static
+uint16_t	_titleidx1[1024] =
+{
+	0,89,154,218,346,425,508,508,508,508,508,508,508,508,508,508,
+	508,508,508,508,536,664,724,724,724,724,724,724,724,724,724,736,
+	854,946,1026,1142,1156,1156,1156,1156,1156,1156,1156,1156,1156,1182,1286,1286,
+	1286,1286,1286,1286,1286,1286,1286,1286,1286,1286,1286,1286,1286,1396,1417,1417,
+	1417,1417,1417,1417,1417,1417,1417,1417,1417,1417,1417,1417,1417,1417,1417,1417,
+	1417,1417,1417,1417,1417,1417,1417,1417,1417,1417,1417,1417,1417,1417,1417,1417,
+	1417,1417,1417,1417,1417,1417,1417,1417,1417,1417,1417,1417,1417,1417,1417,1417,
+	1417,1417,1417,1417,1417,1417,1417,1417,1417,1417,1417,1417,1417,1417,1417,1417,
+	1417,1417,1417,1417,1417,1417,1417,1417,1417,1417,1417,1417,1417,1417,1417,1417,
+	1417,1417,1417,1417,1417,1417,1417,1417,1417,1417,1417,1417,1417,1417,1417,1417,
+	1417,1417,1417,1417,1417,1417,1417,1417,1417,1417,1417,1417,1417,1417,1417,1417,
+	1417,1417,1417,1417,1417,1417,1417,1417,1417,1417,1417,1417,1417,1417,1417,1417,
+	1417,1417,1417,1417,1417,1417,1417,1417,1417,1417,1417,1417,1417,1417,1417,1417,
+	1417,1417,1417,1417,1417,1417,1417,1417,1417,1417,1417,1417,1417,1417,1417,1417,
+	1417,1417,1417,1417,1417,1417,1417,1417,1417,1417,1417,1417,1417,1417,1417,1417,
+	1417,1417,1417,1417,1417,1417,1417,1417,1417,1417,1417,1417,1417,1417,1417,1417,
+	1417,1417,1417,1417,1417,1417,1417,1417,1417,1417,1417,1417,1417,1417,1417,1417,
+	1417,1417,1417,1417,1417,1417,1417,1417,1417,1417,1417,1417,1417,1417,1417,1417,
+	1417,1417,1417,1417,1417,1417,1417,1417,1417,1417,1417,1417,1417,1417,1417,1417,
+	1417,1417,1417,1417,1417,1417,1417,1417,1417,1417,1417,1417,1417,1417,1417,1417,
+	1417,1417,1417,1417,1417,1417,1417,1417,1417,1417,1417,1417,1417,1417,1417,1417,
+	1417,1417,1417,1417,1417,1417,1417,1417,1417,1417,1417,1417,1417,1417,1417,1417,
+	1417,1417,1417,1417,1417,1417,1417,1417,1417,1417,1417,1417,1417,1417,1417,1417,
+	1417,1417,1417,1417,1417,1417,1417,1417,1417,1417,1417,1417,1417,1417,1417,1417,
+	1417,1417,1417,1417,1417,1417,1417,1417,1417,1417,1417,1417,1417,1417,1417,1417,
+	1417,1417,1417,1417,1417,1417,1417,1417,1417,1417,1417,1417,1417,1417,1417,1417,
+	1417,1417,1417,1417,1417,1417,1417,1417,1417,1417,1417,1417,1417,1417,1417,1417,
+	1417,1417,1417,1417,1417,1417,1417,1417,1417,1417,1417,1417,1417,1417,1417,1417,
+	1417,1417,1417,1417,1417,1417,1417,1417,1417,1417,1417,1417,1417,1417,1417,1417,
+	1417,1417,1417,1417,1417,1417,1417,1417,1417,1417,1417,1417,1417,1417,1417,1417,
+	1417,1417,1417,1417,1417,1417,1417,1417,1417,1417,1417,1417,1417,1417,1417,1417,
+	1417,1417,1417,1417,1417,1417,1417,1417,1417,1417,1417,1417,1417,1417,1417,1417,
+	1417,1417,1417,1417,1417,1417,1417,1417,1417,1417,1417,1417,1417,1417,1417,1417,
+	1417,1417,1417,1417,1417,1417,1417,1417,1417,1417,1417,1417,1417,1417,1417,1417,
+	1417,1417,1417,1417,1417,1417,1417,1417,1417,1417,1417,1417,1417,1417,1417,1417,
+	1417,1417,1417,1417,1417,1417,1417,1417,1417,1417,1417,1417,1417,1417,1417,1417,
+	1417,1417,1417,1417,1417,1417,1417,1417,1417,1417,1417,1417,1417,1417,1417,1417,
+	1417,1417,1417,1417,1417,1417,1417,1417,1417,1417,1417,1417,1417,1417,1417,1417,
+	1417,1417,1417,1417,1417,1417,1417,1417,1417,1417,1417,1417,1417,1417,1417,1417,
+	1417,1417,1417,1417,1417,1417,1417,1417,1417,1417,1417,1417,1417,1417,1417,1417,
+	1417,1417,1417,1417,1417,1417,1417,1417,1417,1417,1417,1417,1417,1417,1417,1417,
+	1417,1417,1417,1417,1417,1417,1417,1417,1417,1417,1417,1417,1417,1417,1417,1417,
+	1417,1417,1417,1417,1417,1417,1417,1417,1417,1417,1417,1417,1417,1417,1417,1417,
+	1417,1417,1417,1417,1417,1417,1417,1417,1417,1417,1417,1417,1417,1417,1417,1417,
+	1417,1417,1417,1417,1417,1417,1417,1417,1417,1417,1417,1417,1417,1417,1417,1417,
+	1417,1417,1417,1417,1417,1417,1417,1417,1417,1417,1417,1417,1417,1417,1417,1417,
+	1417,1417,1417,1417,1417,1417,1417,1417,1417,1417,1417,1417,1417,1417,1417,1417,
+	1417,1417,1417,1417,1417,1417,1417,1417,1417,1417,1417,1417,1417,1417,1417,1417,
+	1417,1417,1417,1417,1417,1417,1417,1417,1417,1417,1417,1417,1417,1417,1417,1417,
+	1417,1417,1417,1417,1417,1417,1417,1417,1417,1417,1417,1417,1417,1417,1417,1417,
+	1417,1417,1417,1417,1417,1417,1417,1417,1417,1417,1417,1417,1417,1417,1417,1417,
+	1417,1417,1417,1417,1417,1417,1417,1417,1417,1417,1417,1417,1417,1417,1417,1417,
+	1417,1417,1417,1417,1417,1417,1417,1417,1417,1417,1417,1417,1417,1417,1417,1417,
+	1417,1417,1417,1417,1417,1417,1417,1417,1417,1417,1417,1417,1417,1417,1417,1417,
+	1417,1417,1417,1417,1417,1417,1417,1417,1417,1417,1417,1417,1417,1417,1417,1417,
+	1417,1417,1417,1417,1417,1417,1417,1417,1417,1417,1417,1417,1417,1417,1417,1417,
+	1417,1417,1417,1417,1417,1417,1417,1417,1417,1417,1417,1417,1417,1417,1417,1417,
+	1417,1417,1417,1417,1417,1417,1417,1417,1417,1417,1417,1417,1417,1417,1417,1417,
+	1417,1417,1417,1417,1417,1417,1417,1417,1417,1417,1417,1417,1417,1417,1417,1417,
+	1417,1417,1417,1417,1417,1417,1417,1417,1417,1417,1417,1417,1417,1417,1417,1417,
+	1417,1417,1417,1417,1417,1417,1417,1417,1417,1417,1417,1417,1417,1417,1417,1417,
+	1417,1417,1417,1417,1417,1417,1417,1417,1417,1417,1417,1417,1417,1417,1417,1417,
+	1417,1417,1417,1417,1417,1417,1417,1417,1417,1417,1417,1417,1417,1417,1417,1417,
+	1417,1417,1417,1417,1417,1417,1417,1417,1417,1417,1417,1417,1417,1417,1417,1417,
+	
+};
+
+#define titleindex1(x) (((x)>>(4+7))&0x3FF)
+#define titleindex2(x) (((x)>>4)&0x7F)
+#define titleoffset(x) ((x)&0xF)
+#define titlelkup(x) (_titledata[_titleidx2[_titleidx1[titleindex1(x)] + titleindex2(x)] + titleoffset(x)] )
+
--- a/3rd/utf/runetype.c
+++ /dev/null
@@ -1,1181 +1,0 @@
-#include "platform.h"
-
-/*
- * alpha ranges -
- *	only covers ranges not in lower||upper
- */
-static
-Rune	_alpha2[] =
-{
-	0x00d8,	0x00f6,	/* Ø - ö */
-	0x00f8,	0x01f5,	/* ø - ǵ */
-	0x0250,	0x02a8,	/* ɐ - ʨ */
-	0x038e,	0x03a1,	/* Ύ - Ρ */
-	0x03a3,	0x03ce,	/* Σ - ώ */
-	0x03d0,	0x03d6,	/* ϐ - ϖ */
-	0x03e2,	0x03f3,	/* Ϣ - ϳ */
-	0x0490,	0x04c4,	/* Ґ - ӄ */
-	0x0561,	0x0587,	/* ա - և */
-	0x05d0,	0x05ea,	/* א - ת */
-	0x05f0,	0x05f2,	/* װ - ײ */
-	0x0621,	0x063a,	/* ء - غ */
-	0x0640,	0x064a,	/* ـ - ي */
-	0x0671,	0x06b7,	/* ٱ - ڷ */
-	0x06ba,	0x06be,	/* ں - ھ */
-	0x06c0,	0x06ce,	/* ۀ - ێ */
-	0x06d0,	0x06d3,	/* ې - ۓ */
-	0x0905,	0x0939,	/* अ - ह */
-	0x0958,	0x0961,	/* क़ - ॡ */
-	0x0985,	0x098c,	/* অ - ঌ */
-	0x098f,	0x0990,	/* এ - ঐ */
-	0x0993,	0x09a8,	/* ও - ন */
-	0x09aa,	0x09b0,	/* প - র */
-	0x09b6,	0x09b9,	/* শ - হ */
-	0x09dc,	0x09dd,	/* ড় - ঢ় */
-	0x09df,	0x09e1,	/* য় - ৡ */
-	0x09f0,	0x09f1,	/* ৰ - ৱ */
-	0x0a05,	0x0a0a,	/* ਅ - ਊ */
-	0x0a0f,	0x0a10,	/* ਏ - ਐ */
-	0x0a13,	0x0a28,	/* ਓ - ਨ */
-	0x0a2a,	0x0a30,	/* ਪ - ਰ */
-	0x0a32,	0x0a33,	/* ਲ - ਲ਼ */
-	0x0a35,	0x0a36,	/* ਵ - ਸ਼ */
-	0x0a38,	0x0a39,	/* ਸ - ਹ */
-	0x0a59,	0x0a5c,	/* ਖ਼ - ੜ */
-	0x0a85,	0x0a8b,	/* અ - ઋ */
-	0x0a8f,	0x0a91,	/* એ - ઑ */
-	0x0a93,	0x0aa8,	/* ઓ - ન */
-	0x0aaa,	0x0ab0,	/* પ - ર */
-	0x0ab2,	0x0ab3,	/* લ - ળ */
-	0x0ab5,	0x0ab9,	/* વ - હ */
-	0x0b05,	0x0b0c,	/* ଅ - ଌ */
-	0x0b0f,	0x0b10,	/* ଏ - ଐ */
-	0x0b13,	0x0b28,	/* ଓ - ନ */
-	0x0b2a,	0x0b30,	/* ପ - ର */
-	0x0b32,	0x0b33,	/* ଲ - ଳ */
-	0x0b36,	0x0b39,	/* ଶ - ହ */
-	0x0b5c,	0x0b5d,	/* ଡ଼ - ଢ଼ */
-	0x0b5f,	0x0b61,	/* ୟ - ୡ */
-	0x0b85,	0x0b8a,	/* அ - ஊ */
-	0x0b8e,	0x0b90,	/* எ - ஐ */
-	0x0b92,	0x0b95,	/* ஒ - க */
-	0x0b99,	0x0b9a,	/* ங - ச */
-	0x0b9e,	0x0b9f,	/* ஞ - ட */
-	0x0ba3,	0x0ba4,	/* ண - த */
-	0x0ba8,	0x0baa,	/* ந - ப */
-	0x0bae,	0x0bb5,	/* ம - வ */
-	0x0bb7,	0x0bb9,	/* ஷ - ஹ */
-	0x0c05,	0x0c0c,	/* అ - ఌ */
-	0x0c0e,	0x0c10,	/* ఎ - ఐ */
-	0x0c12,	0x0c28,	/* ఒ - న */
-	0x0c2a,	0x0c33,	/* ప - ళ */
-	0x0c35,	0x0c39,	/* వ - హ */
-	0x0c60,	0x0c61,	/* ౠ - ౡ */
-	0x0c85,	0x0c8c,	/* ಅ - ಌ */
-	0x0c8e,	0x0c90,	/* ಎ - ಐ */
-	0x0c92,	0x0ca8,	/* ಒ - ನ */
-	0x0caa,	0x0cb3,	/* ಪ - ಳ */
-	0x0cb5,	0x0cb9,	/* ವ - ಹ */
-	0x0ce0,	0x0ce1,	/* ೠ - ೡ */
-	0x0d05,	0x0d0c,	/* അ - ഌ */
-	0x0d0e,	0x0d10,	/* എ - ഐ */
-	0x0d12,	0x0d28,	/* ഒ - ന */
-	0x0d2a,	0x0d39,	/* പ - ഹ */
-	0x0d60,	0x0d61,	/* ൠ - ൡ */
-	0x0e01,	0x0e30,	/* ก - ะ */
-	0x0e32,	0x0e33,	/* า - ำ */
-	0x0e40,	0x0e46,	/* เ - ๆ */
-	0x0e5a,	0x0e5b,	/* ๚ - ๛ */
-	0x0e81,	0x0e82,	/* ກ - ຂ */
-	0x0e87,	0x0e88,	/* ງ - ຈ */
-	0x0e94,	0x0e97,	/* ດ - ທ */
-	0x0e99,	0x0e9f,	/* ນ - ຟ */
-	0x0ea1,	0x0ea3,	/* ມ - ຣ */
-	0x0eaa,	0x0eab,	/* ສ - ຫ */
-	0x0ead,	0x0eae,	/* ອ - ຮ */
-	0x0eb2,	0x0eb3,	/* າ - ຳ */
-	0x0ec0,	0x0ec4,	/* ເ - ໄ */
-	0x0edc,	0x0edd,	/* ໜ - ໝ */
-	0x0f18,	0x0f19,	/* ༘ - ༙ */
-	0x0f40,	0x0f47,	/* ཀ - ཇ */
-	0x0f49,	0x0f69,	/* ཉ - ཀྵ */
-	0x10d0,	0x10f6,	/* ა - ჶ */
-	0x1100,	0x1159,	/* ᄀ - ᅙ */
-	0x115f,	0x11a2,	/* ᅟ - ᆢ */
-	0x11a8,	0x11f9,	/* ᆨ - ᇹ */
-	0x1e00,	0x1e9b,	/* Ḁ - ẛ */
-	0x1f50,	0x1f57,	/* ὐ - ὗ */
-	0x1f80,	0x1fb4,	/* ᾀ - ᾴ */
-	0x1fb6,	0x1fbc,	/* ᾶ - ᾼ */
-	0x1fc2,	0x1fc4,	/* ῂ - ῄ */
-	0x1fc6,	0x1fcc,	/* ῆ - ῌ */
-	0x1fd0,	0x1fd3,	/* ῐ - ΐ */
-	0x1fd6,	0x1fdb,	/* ῖ - Ί */
-	0x1fe0,	0x1fec,	/* ῠ - Ῥ */
-	0x1ff2,	0x1ff4,	/* ῲ - ῴ */
-	0x1ff6,	0x1ffc,	/* ῶ - ῼ */
-	0x210a,	0x2113,	/* ℊ - ℓ */
-	0x2115,	0x211d,	/* ℕ - ℝ */
-	0x2120,	0x2122,	/* ℠ - ™ */
-	0x212a,	0x2131,	/* K - ℱ */
-	0x2133,	0x2138,	/* ℳ - ℸ */
-	0x3041,	0x3094,	/* ぁ - ゔ */
-	0x30a1,	0x30fa,	/* ァ - ヺ */
-	0x3105,	0x312c,	/* ㄅ - ㄬ */
-	0x3131,	0x318e,	/* ㄱ - ㆎ */
-	0x3192,	0x319f,	/* ㆒ - ㆟ */
-	0x3260,	0x327b,	/* ㉠ - ㉻ */
-	0x328a,	0x32b0,	/* ㊊ - ㊰ */
-	0x32d0,	0x32fe,	/* ㋐ - ㋾ */
-	0x3300,	0x3357,	/* ㌀ - ㍗ */
-	0x3371,	0x3376,	/* ㍱ - ㍶ */
-	0x337b,	0x3394,	/* ㍻ - ㎔ */
-	0x3399,	0x339e,	/* ㎙ - ㎞ */
-	0x33a9,	0x33ad,	/* ㎩ - ㎭ */
-	0x33b0,	0x33c1,	/* ㎰ - ㏁ */
-	0x33c3,	0x33c5,	/* ㏃ - ㏅ */
-	0x33c7,	0x33d7,	/* ㏇ - ㏗ */
-	0x33d9,	0x33dd,	/* ㏙ - ㏝ */
-	0x4e00,	0x9fff,	/* 一 - 鿿 */
-	0xac00,	0xd7a3,	/* 가 - 힣 */
-	0xf900,	0xfb06,	/* 豈 - st */
-	0xfb13,	0xfb17,	/* ﬓ - ﬗ */
-	0xfb1f,	0xfb28,	/* ײַ - ﬨ */
-	0xfb2a,	0xfb36,	/* שׁ - זּ */
-	0xfb38,	0xfb3c,	/* טּ - לּ */
-	0xfb40,	0xfb41,	/* נּ - סּ */
-	0xfb43,	0xfb44,	/* ףּ - פּ */
-	0xfb46,	0xfbb1,	/* צּ - ﮱ */
-	0xfbd3,	0xfd3d,	/* ﯓ - ﴽ */
-	0xfd50,	0xfd8f,	/* ﵐ - ﶏ */
-	0xfd92,	0xfdc7,	/* ﶒ - ﷇ */
-	0xfdf0,	0xfdf9,	/* ﷰ - ﷹ */
-	0xfe70,	0xfe72,	/* ﹰ - ﹲ */
-	0xfe76,	0xfefc,	/* ﹶ - ﻼ */
-	0xff66,	0xff6f,	/* ヲ - ッ */
-	0xff71,	0xff9d,	/* ア - ン */
-	0xffa0,	0xffbe,	/* ᅠ - ᄒ */
-	0xffc2,	0xffc7,	/* ᅡ - ᅦ */
-	0xffca,	0xffcf,	/* ᅧ - ᅬ */
-	0xffd2,	0xffd7,	/* ᅭ - ᅲ */
-	0xffda,	0xffdc,	/* ᅳ - ᅵ */
-};
-
-/*
- * alpha singlets -
- *	only covers ranges not in lower||upper
- */
-static
-Rune	_alpha1[] =
-{
-	0x00aa,	/* ª */
-	0x00b5,	/* µ */
-	0x00ba,	/* º */
-	0x03da,	/* Ϛ */
-	0x03dc,	/* Ϝ */
-	0x03de,	/* Ϟ */
-	0x03e0,	/* Ϡ */
-	0x06d5,	/* ە */
-	0x09b2,	/* ল */
-	0x0a5e,	/* ਫ਼ */
-	0x0a8d,	/* ઍ */
-	0x0ae0,	/* ૠ */
-	0x0b9c,	/* ஜ */
-	0x0cde,	/* ೞ */
-	0x0e4f,	/* ๏ */
-	0x0e84,	/* ຄ */
-	0x0e8a,	/* ຊ */
-	0x0e8d,	/* ຍ */
-	0x0ea5,	/* ລ */
-	0x0ea7,	/* ວ */
-	0x0eb0,	/* ະ */
-	0x0ebd,	/* ຽ */
-	0x1fbe,	/* ι */
-	0x207f,	/* ⁿ */
-	0x20a8,	/* ₨ */
-	0x2102,	/* ℂ */
-	0x2107,	/* ℇ */
-	0x2124,	/* ℤ */
-	0x2126,	/* Ω */
-	0x2128,	/* ℨ */
-	0xfb3e,	/* מּ */
-	0xfe74,	/* ﹴ */
-};
-
-/*
- * space ranges
- */
-static
-Rune	_space2[] =
-{
-	0x0009,	0x000a,	/* tab and newline */
-	0x0020,	0x0020,	/* space */
-	0x0085, 0x0085,
-	0x00a0,	0x00a0,	/*   */
-	0x1680, 0x1680,
-	0x180e, 0x180e,
-	0x2000,	0x200b,	/*   - ​ */
-	0x2028,	0x2029,	/* 
 - 
 */
-	0x202f, 0x202f,
-	0x205f, 0x205f,
-	0x3000,	0x3000,	/*   */
-	0xfeff,	0xfeff,	/*  */
-};
-
-/*
- * lower case ranges
- *	3rd col is conversion excess 500
- */
-static
-Rune	_toupper2[] =
-{
-	0x0061,	0x007a, 468,	/* a-z A-Z */
-	0x00e0,	0x00f6, 468,	/* à-ö À-Ö */
-	0x00f8,	0x00fe, 468,	/* ø-þ Ø-Þ */
-	0x0256,	0x0257, 295,	/* ɖ-ɗ Ɖ-Ɗ */
-	0x0258,	0x0259, 298,	/* ɘ-ə Ǝ-Ə */
-	0x028a,	0x028b, 283,	/* ʊ-ʋ Ʊ-Ʋ */
-	0x03ad,	0x03af, 463,	/* έ-ί Έ-Ί */
-	0x03b1,	0x03c1, 468,	/* α-ρ Α-Ρ */
-	0x03c3,	0x03cb, 468,	/* σ-ϋ Σ-Ϋ */
-	0x03cd,	0x03ce, 437,	/* ύ-ώ Ύ-Ώ */
-	0x0430,	0x044f, 468,	/* а-я А-Я */
-	0x0451,	0x045c, 420,	/* ё-ќ Ё-Ќ */
-	0x045e,	0x045f, 420,	/* ў-џ Ў-Џ */
-	0x0561,	0x0586, 452,	/* ա-ֆ Ա-Ֆ */
-	0x1f00,	0x1f07, 508,	/* ἀ-ἇ Ἀ-Ἇ */
-	0x1f10,	0x1f15, 508,	/* ἐ-ἕ Ἐ-Ἕ */
-	0x1f20,	0x1f27, 508,	/* ἠ-ἧ Ἠ-Ἧ */
-	0x1f30,	0x1f37, 508,	/* ἰ-ἷ Ἰ-Ἷ */
-	0x1f40,	0x1f45, 508,	/* ὀ-ὅ Ὀ-Ὅ */
-	0x1f60,	0x1f67, 508,	/* ὠ-ὧ Ὠ-Ὧ */
-	0x1f70,	0x1f71, 574,	/* ὰ-ά Ὰ-Ά */
-	0x1f72,	0x1f75, 586,	/* ὲ-ή Ὲ-Ή */
-	0x1f76,	0x1f77, 600,	/* ὶ-ί Ὶ-Ί */
-	0x1f78,	0x1f79, 628,	/* ὸ-ό Ὸ-Ό */
-	0x1f7a,	0x1f7b, 612,	/* ὺ-ύ Ὺ-Ύ */
-	0x1f7c,	0x1f7d, 626,	/* ὼ-ώ Ὼ-Ώ */
-	0x1f80,	0x1f87, 508,	/* ᾀ-ᾇ ᾈ-ᾏ */
-	0x1f90,	0x1f97, 508,	/* ᾐ-ᾗ ᾘ-ᾟ */
-	0x1fa0,	0x1fa7, 508,	/* ᾠ-ᾧ ᾨ-ᾯ */
-	0x1fb0,	0x1fb1, 508,	/* ᾰ-ᾱ Ᾰ-Ᾱ */
-	0x1fd0,	0x1fd1, 508,	/* ῐ-ῑ Ῐ-Ῑ */
-	0x1fe0,	0x1fe1, 508,	/* ῠ-ῡ Ῠ-Ῡ */
-	0x2170,	0x217f, 484,	/* ⅰ-ⅿ Ⅰ-Ⅿ */
-	0x24d0,	0x24e9, 474,	/* ⓐ-ⓩ Ⓐ-Ⓩ */
-	0xff41,	0xff5a, 468,	/* a-z A-Z */
-};
-
-/*
- * lower case singlets
- *	2nd col is conversion excess 500
- */
-static
-Rune	_toupper1[] =
-{
-	0x00ff, 621,	/* ÿ Ÿ */
-	0x0101, 499,	/* ā Ā */
-	0x0103, 499,	/* ă Ă */
-	0x0105, 499,	/* ą Ą */
-	0x0107, 499,	/* ć Ć */
-	0x0109, 499,	/* ĉ Ĉ */
-	0x010b, 499,	/* ċ Ċ */
-	0x010d, 499,	/* č Č */
-	0x010f, 499,	/* ď Ď */
-	0x0111, 499,	/* đ Đ */
-	0x0113, 499,	/* ē Ē */
-	0x0115, 499,	/* ĕ Ĕ */
-	0x0117, 499,	/* ė Ė */
-	0x0119, 499,	/* ę Ę */
-	0x011b, 499,	/* ě Ě */
-	0x011d, 499,	/* ĝ Ĝ */
-	0x011f, 499,	/* ğ Ğ */
-	0x0121, 499,	/* ġ Ġ */
-	0x0123, 499,	/* ģ Ģ */
-	0x0125, 499,	/* ĥ Ĥ */
-	0x0127, 499,	/* ħ Ħ */
-	0x0129, 499,	/* ĩ Ĩ */
-	0x012b, 499,	/* ī Ī */
-	0x012d, 499,	/* ĭ Ĭ */
-	0x012f, 499,	/* į Į */
-	0x0131, 268,	/* ı I */
-	0x0133, 499,	/* ij IJ */
-	0x0135, 499,	/* ĵ Ĵ */
-	0x0137, 499,	/* ķ Ķ */
-	0x013a, 499,	/* ĺ Ĺ */
-	0x013c, 499,	/* ļ Ļ */
-	0x013e, 499,	/* ľ Ľ */
-	0x0140, 499,	/* ŀ Ŀ */
-	0x0142, 499,	/* ł Ł */
-	0x0144, 499,	/* ń Ń */
-	0x0146, 499,	/* ņ Ņ */
-	0x0148, 499,	/* ň Ň */
-	0x014b, 499,	/* ŋ Ŋ */
-	0x014d, 499,	/* ō Ō */
-	0x014f, 499,	/* ŏ Ŏ */
-	0x0151, 499,	/* ő Ő */
-	0x0153, 499,	/* œ Œ */
-	0x0155, 499,	/* ŕ Ŕ */
-	0x0157, 499,	/* ŗ Ŗ */
-	0x0159, 499,	/* ř Ř */
-	0x015b, 499,	/* ś Ś */
-	0x015d, 499,	/* ŝ Ŝ */
-	0x015f, 499,	/* ş Ş */
-	0x0161, 499,	/* š Š */
-	0x0163, 499,	/* ţ Ţ */
-	0x0165, 499,	/* ť Ť */
-	0x0167, 499,	/* ŧ Ŧ */
-	0x0169, 499,	/* ũ Ũ */
-	0x016b, 499,	/* ū Ū */
-	0x016d, 499,	/* ŭ Ŭ */
-	0x016f, 499,	/* ů Ů */
-	0x0171, 499,	/* ű Ű */
-	0x0173, 499,	/* ų Ų */
-	0x0175, 499,	/* ŵ Ŵ */
-	0x0177, 499,	/* ŷ Ŷ */
-	0x017a, 499,	/* ź Ź */
-	0x017c, 499,	/* ż Ż */
-	0x017e, 499,	/* ž Ž */
-	0x017f, 200,	/* ſ S */
-	0x0183, 499,	/* ƃ Ƃ */
-	0x0185, 499,	/* ƅ Ƅ */
-	0x0188, 499,	/* ƈ Ƈ */
-	0x018c, 499,	/* ƌ Ƌ */
-	0x0192, 499,	/* ƒ Ƒ */
-	0x0199, 499,	/* ƙ Ƙ */
-	0x01a1, 499,	/* ơ Ơ */
-	0x01a3, 499,	/* ƣ Ƣ */
-	0x01a5, 499,	/* ƥ Ƥ */
-	0x01a8, 499,	/* ƨ Ƨ */
-	0x01ad, 499,	/* ƭ Ƭ */
-	0x01b0, 499,	/* ư Ư */
-	0x01b4, 499,	/* ƴ Ƴ */
-	0x01b6, 499,	/* ƶ Ƶ */
-	0x01b9, 499,	/* ƹ Ƹ */
-	0x01bd, 499,	/* ƽ Ƽ */
-	0x01c5, 499,	/* Dž DŽ */
-	0x01c6, 498,	/* dž DŽ */
-	0x01c8, 499,	/* Lj LJ */
-	0x01c9, 498,	/* lj LJ */
-	0x01cb, 499,	/* Nj NJ */
-	0x01cc, 498,	/* nj NJ */
-	0x01ce, 499,	/* ǎ Ǎ */
-	0x01d0, 499,	/* ǐ Ǐ */
-	0x01d2, 499,	/* ǒ Ǒ */
-	0x01d4, 499,	/* ǔ Ǔ */
-	0x01d6, 499,	/* ǖ Ǖ */
-	0x01d8, 499,	/* ǘ Ǘ */
-	0x01da, 499,	/* ǚ Ǚ */
-	0x01dc, 499,	/* ǜ Ǜ */
-	0x01df, 499,	/* ǟ Ǟ */
-	0x01e1, 499,	/* ǡ Ǡ */
-	0x01e3, 499,	/* ǣ Ǣ */
-	0x01e5, 499,	/* ǥ Ǥ */
-	0x01e7, 499,	/* ǧ Ǧ */
-	0x01e9, 499,	/* ǩ Ǩ */
-	0x01eb, 499,	/* ǫ Ǫ */
-	0x01ed, 499,	/* ǭ Ǭ */
-	0x01ef, 499,	/* ǯ Ǯ */
-	0x01f2, 499,	/* Dz DZ */
-	0x01f3, 498,	/* dz DZ */
-	0x01f5, 499,	/* ǵ Ǵ */
-	0x01fb, 499,	/* ǻ Ǻ */
-	0x01fd, 499,	/* ǽ Ǽ */
-	0x01ff, 499,	/* ǿ Ǿ */
-	0x0201, 499,	/* ȁ Ȁ */
-	0x0203, 499,	/* ȃ Ȃ */
-	0x0205, 499,	/* ȅ Ȅ */
-	0x0207, 499,	/* ȇ Ȇ */
-	0x0209, 499,	/* ȉ Ȉ */
-	0x020b, 499,	/* ȋ Ȋ */
-	0x020d, 499,	/* ȍ Ȍ */
-	0x020f, 499,	/* ȏ Ȏ */
-	0x0211, 499,	/* ȑ Ȑ */
-	0x0213, 499,	/* ȓ Ȓ */
-	0x0215, 499,	/* ȕ Ȕ */
-	0x0217, 499,	/* ȗ Ȗ */
-	0x0253, 290,	/* ɓ Ɓ */
-	0x0254, 294,	/* ɔ Ɔ */
-	0x025b, 297,	/* ɛ Ɛ */
-	0x0260, 295,	/* ɠ Ɠ */
-	0x0263, 293,	/* ɣ Ɣ */
-	0x0268, 291,	/* ɨ Ɨ */
-	0x0269, 289,	/* ɩ Ɩ */
-	0x026f, 289,	/* ɯ Ɯ */
-	0x0272, 287,	/* ɲ Ɲ */
-	0x0283, 282,	/* ʃ Ʃ */
-	0x0288, 282,	/* ʈ Ʈ */
-	0x0292, 281,	/* ʒ Ʒ */
-	0x03ac, 462,	/* ά Ά */
-	0x03cc, 436,	/* ό Ό */
-	0x03d0, 438,	/* ϐ Β */
-	0x03d1, 443,	/* ϑ Θ */
-	0x03d5, 453,	/* ϕ Φ */
-	0x03d6, 446,	/* ϖ Π */
-	0x03e3, 499,	/* ϣ Ϣ */
-	0x03e5, 499,	/* ϥ Ϥ */
-	0x03e7, 499,	/* ϧ Ϧ */
-	0x03e9, 499,	/* ϩ Ϩ */
-	0x03eb, 499,	/* ϫ Ϫ */
-	0x03ed, 499,	/* ϭ Ϭ */
-	0x03ef, 499,	/* ϯ Ϯ */
-	0x03f0, 414,	/* ϰ Κ */
-	0x03f1, 420,	/* ϱ Ρ */
-	0x0461, 499,	/* ѡ Ѡ */
-	0x0463, 499,	/* ѣ Ѣ */
-	0x0465, 499,	/* ѥ Ѥ */
-	0x0467, 499,	/* ѧ Ѧ */
-	0x0469, 499,	/* ѩ Ѩ */
-	0x046b, 499,	/* ѫ Ѫ */
-	0x046d, 499,	/* ѭ Ѭ */
-	0x046f, 499,	/* ѯ Ѯ */
-	0x0471, 499,	/* ѱ Ѱ */
-	0x0473, 499,	/* ѳ Ѳ */
-	0x0475, 499,	/* ѵ Ѵ */
-	0x0477, 499,	/* ѷ Ѷ */
-	0x0479, 499,	/* ѹ Ѹ */
-	0x047b, 499,	/* ѻ Ѻ */
-	0x047d, 499,	/* ѽ Ѽ */
-	0x047f, 499,	/* ѿ Ѿ */
-	0x0481, 499,	/* ҁ Ҁ */
-	0x0491, 499,	/* ґ Ґ */
-	0x0493, 499,	/* ғ Ғ */
-	0x0495, 499,	/* ҕ Ҕ */
-	0x0497, 499,	/* җ Җ */
-	0x0499, 499,	/* ҙ Ҙ */
-	0x049b, 499,	/* қ Қ */
-	0x049d, 499,	/* ҝ Ҝ */
-	0x049f, 499,	/* ҟ Ҟ */
-	0x04a1, 499,	/* ҡ Ҡ */
-	0x04a3, 499,	/* ң Ң */
-	0x04a5, 499,	/* ҥ Ҥ */
-	0x04a7, 499,	/* ҧ Ҧ */
-	0x04a9, 499,	/* ҩ Ҩ */
-	0x04ab, 499,	/* ҫ Ҫ */
-	0x04ad, 499,	/* ҭ Ҭ */
-	0x04af, 499,	/* ү Ү */
-	0x04b1, 499,	/* ұ Ұ */
-	0x04b3, 499,	/* ҳ Ҳ */
-	0x04b5, 499,	/* ҵ Ҵ */
-	0x04b7, 499,	/* ҷ Ҷ */
-	0x04b9, 499,	/* ҹ Ҹ */
-	0x04bb, 499,	/* һ Һ */
-	0x04bd, 499,	/* ҽ Ҽ */
-	0x04bf, 499,	/* ҿ Ҿ */
-	0x04c2, 499,	/* ӂ Ӂ */
-	0x04c4, 499,	/* ӄ Ӄ */
-	0x04c8, 499,	/* ӈ Ӈ */
-	0x04cc, 499,	/* ӌ Ӌ */
-	0x04d1, 499,	/* ӑ Ӑ */
-	0x04d3, 499,	/* ӓ Ӓ */
-	0x04d5, 499,	/* ӕ Ӕ */
-	0x04d7, 499,	/* ӗ Ӗ */
-	0x04d9, 499,	/* ә Ә */
-	0x04db, 499,	/* ӛ Ӛ */
-	0x04dd, 499,	/* ӝ Ӝ */
-	0x04df, 499,	/* ӟ Ӟ */
-	0x04e1, 499,	/* ӡ Ӡ */
-	0x04e3, 499,	/* ӣ Ӣ */
-	0x04e5, 499,	/* ӥ Ӥ */
-	0x04e7, 499,	/* ӧ Ӧ */
-	0x04e9, 499,	/* ө Ө */
-	0x04eb, 499,	/* ӫ Ӫ */
-	0x04ef, 499,	/* ӯ Ӯ */
-	0x04f1, 499,	/* ӱ Ӱ */
-	0x04f3, 499,	/* ӳ Ӳ */
-	0x04f5, 499,	/* ӵ Ӵ */
-	0x04f9, 499,	/* ӹ Ӹ */
-	0x1e01, 499,	/* ḁ Ḁ */
-	0x1e03, 499,	/* ḃ Ḃ */
-	0x1e05, 499,	/* ḅ Ḅ */
-	0x1e07, 499,	/* ḇ Ḇ */
-	0x1e09, 499,	/* ḉ Ḉ */
-	0x1e0b, 499,	/* ḋ Ḋ */
-	0x1e0d, 499,	/* ḍ Ḍ */
-	0x1e0f, 499,	/* ḏ Ḏ */
-	0x1e11, 499,	/* ḑ Ḑ */
-	0x1e13, 499,	/* ḓ Ḓ */
-	0x1e15, 499,	/* ḕ Ḕ */
-	0x1e17, 499,	/* ḗ Ḗ */
-	0x1e19, 499,	/* ḙ Ḙ */
-	0x1e1b, 499,	/* ḛ Ḛ */
-	0x1e1d, 499,	/* ḝ Ḝ */
-	0x1e1f, 499,	/* ḟ Ḟ */
-	0x1e21, 499,	/* ḡ Ḡ */
-	0x1e23, 499,	/* ḣ Ḣ */
-	0x1e25, 499,	/* ḥ Ḥ */
-	0x1e27, 499,	/* ḧ Ḧ */
-	0x1e29, 499,	/* ḩ Ḩ */
-	0x1e2b, 499,	/* ḫ Ḫ */
-	0x1e2d, 499,	/* ḭ Ḭ */
-	0x1e2f, 499,	/* ḯ Ḯ */
-	0x1e31, 499,	/* ḱ Ḱ */
-	0x1e33, 499,	/* ḳ Ḳ */
-	0x1e35, 499,	/* ḵ Ḵ */
-	0x1e37, 499,	/* ḷ Ḷ */
-	0x1e39, 499,	/* ḹ Ḹ */
-	0x1e3b, 499,	/* ḻ Ḻ */
-	0x1e3d, 499,	/* ḽ Ḽ */
-	0x1e3f, 499,	/* ḿ Ḿ */
-	0x1e41, 499,	/* ṁ Ṁ */
-	0x1e43, 499,	/* ṃ Ṃ */
-	0x1e45, 499,	/* ṅ Ṅ */
-	0x1e47, 499,	/* ṇ Ṇ */
-	0x1e49, 499,	/* ṉ Ṉ */
-	0x1e4b, 499,	/* ṋ Ṋ */
-	0x1e4d, 499,	/* ṍ Ṍ */
-	0x1e4f, 499,	/* ṏ Ṏ */
-	0x1e51, 499,	/* ṑ Ṑ */
-	0x1e53, 499,	/* ṓ Ṓ */
-	0x1e55, 499,	/* ṕ Ṕ */
-	0x1e57, 499,	/* ṗ Ṗ */
-	0x1e59, 499,	/* ṙ Ṙ */
-	0x1e5b, 499,	/* ṛ Ṛ */
-	0x1e5d, 499,	/* ṝ Ṝ */
-	0x1e5f, 499,	/* ṟ Ṟ */
-	0x1e61, 499,	/* ṡ Ṡ */
-	0x1e63, 499,	/* ṣ Ṣ */
-	0x1e65, 499,	/* ṥ Ṥ */
-	0x1e67, 499,	/* ṧ Ṧ */
-	0x1e69, 499,	/* ṩ Ṩ */
-	0x1e6b, 499,	/* ṫ Ṫ */
-	0x1e6d, 499,	/* ṭ Ṭ */
-	0x1e6f, 499,	/* ṯ Ṯ */
-	0x1e71, 499,	/* ṱ Ṱ */
-	0x1e73, 499,	/* ṳ Ṳ */
-	0x1e75, 499,	/* ṵ Ṵ */
-	0x1e77, 499,	/* ṷ Ṷ */
-	0x1e79, 499,	/* ṹ Ṹ */
-	0x1e7b, 499,	/* ṻ Ṻ */
-	0x1e7d, 499,	/* ṽ Ṽ */
-	0x1e7f, 499,	/* ṿ Ṿ */
-	0x1e81, 499,	/* ẁ Ẁ */
-	0x1e83, 499,	/* ẃ Ẃ */
-	0x1e85, 499,	/* ẅ Ẅ */
-	0x1e87, 499,	/* ẇ Ẇ */
-	0x1e89, 499,	/* ẉ Ẉ */
-	0x1e8b, 499,	/* ẋ Ẋ */
-	0x1e8d, 499,	/* ẍ Ẍ */
-	0x1e8f, 499,	/* ẏ Ẏ */
-	0x1e91, 499,	/* ẑ Ẑ */
-	0x1e93, 499,	/* ẓ Ẓ */
-	0x1e95, 499,	/* ẕ Ẕ */
-	0x1ea1, 499,	/* ạ Ạ */
-	0x1ea3, 499,	/* ả Ả */
-	0x1ea5, 499,	/* ấ Ấ */
-	0x1ea7, 499,	/* ầ Ầ */
-	0x1ea9, 499,	/* ẩ Ẩ */
-	0x1eab, 499,	/* ẫ Ẫ */
-	0x1ead, 499,	/* ậ Ậ */
-	0x1eaf, 499,	/* ắ Ắ */
-	0x1eb1, 499,	/* ằ Ằ */
-	0x1eb3, 499,	/* ẳ Ẳ */
-	0x1eb5, 499,	/* ẵ Ẵ */
-	0x1eb7, 499,	/* ặ Ặ */
-	0x1eb9, 499,	/* ẹ Ẹ */
-	0x1ebb, 499,	/* ẻ Ẻ */
-	0x1ebd, 499,	/* ẽ Ẽ */
-	0x1ebf, 499,	/* ế Ế */
-	0x1ec1, 499,	/* ề Ề */
-	0x1ec3, 499,	/* ể Ể */
-	0x1ec5, 499,	/* ễ Ễ */
-	0x1ec7, 499,	/* ệ Ệ */
-	0x1ec9, 499,	/* ỉ Ỉ */
-	0x1ecb, 499,	/* ị Ị */
-	0x1ecd, 499,	/* ọ Ọ */
-	0x1ecf, 499,	/* ỏ Ỏ */
-	0x1ed1, 499,	/* ố Ố */
-	0x1ed3, 499,	/* ồ Ồ */
-	0x1ed5, 499,	/* ổ Ổ */
-	0x1ed7, 499,	/* ỗ Ỗ */
-	0x1ed9, 499,	/* ộ Ộ */
-	0x1edb, 499,	/* ớ Ớ */
-	0x1edd, 499,	/* ờ Ờ */
-	0x1edf, 499,	/* ở Ở */
-	0x1ee1, 499,	/* ỡ Ỡ */
-	0x1ee3, 499,	/* ợ Ợ */
-	0x1ee5, 499,	/* ụ Ụ */
-	0x1ee7, 499,	/* ủ Ủ */
-	0x1ee9, 499,	/* ứ Ứ */
-	0x1eeb, 499,	/* ừ Ừ */
-	0x1eed, 499,	/* ử Ử */
-	0x1eef, 499,	/* ữ Ữ */
-	0x1ef1, 499,	/* ự Ự */
-	0x1ef3, 499,	/* ỳ Ỳ */
-	0x1ef5, 499,	/* ỵ Ỵ */
-	0x1ef7, 499,	/* ỷ Ỷ */
-	0x1ef9, 499,	/* ỹ Ỹ */
-	0x1f51, 508,	/* ὑ Ὑ */
-	0x1f53, 508,	/* ὓ Ὓ */
-	0x1f55, 508,	/* ὕ Ὕ */
-	0x1f57, 508,	/* ὗ Ὗ */
-	0x1fb3, 509,	/* ᾳ ᾼ */
-	0x1fc3, 509,	/* ῃ ῌ */
-	0x1fe5, 507,	/* ῥ Ῥ */
-	0x1ff3, 509,	/* ῳ ῼ */
-};
-
-static Rune __isdigitr[] = {
-	0x0030, 0x0039,
-	0x0660, 0x0669,
-	0x06f0, 0x06f9,
-	0x07c0, 0x07c9,
-	0x0966, 0x096f,
-	0x09e6, 0x09ef,
-	0x0a66, 0x0a6f,
-	0x0ae6, 0x0aef,
-	0x0b66, 0x0b6f,
-	0x0be6, 0x0bef,
-	0x0c66, 0x0c6f,
-	0x0ce6, 0x0cef,
-	0x0d66, 0x0d6f,
-	0x0e50, 0x0e59,
-	0x0ed0, 0x0ed9,
-	0x0f20, 0x0f29,
-	0x1040, 0x1049,
-	0x17e0, 0x17e9,
-	0x1810, 0x1819,
-	0x1946, 0x194f,
-	0x19d0, 0x19d9,
-	0x1b50, 0x1b59,
-	0xff10, 0xff19,
-	0x104a0, 0x104a9,
-	0x1d7ce, 0x1d7ff,
-};
-
-/*
- * upper case ranges
- *	3rd col is conversion excess 500
- */
-static
-Rune	_tolower2[] =
-{
-	0x0041,	0x005a, 532,	/* A-Z a-z */
-	0x00c0,	0x00d6, 532,	/* À-Ö à-ö */
-	0x00d8,	0x00de, 532,	/* Ø-Þ ø-þ */
-	0x0189,	0x018a, 705,	/* Ɖ-Ɗ ɖ-ɗ */
-	0x018e,	0x018f, 702,	/* Ǝ-Ə ɘ-ə */
-	0x01b1,	0x01b2, 717,	/* Ʊ-Ʋ ʊ-ʋ */
-	0x0388,	0x038a, 537,	/* Έ-Ί έ-ί */
-	0x038e,	0x038f, 563,	/* Ύ-Ώ ύ-ώ */
-	0x0391,	0x03a1, 532,	/* Α-Ρ α-ρ */
-	0x03a3,	0x03ab, 532,	/* Σ-Ϋ σ-ϋ */
-	0x0401,	0x040c, 580,	/* Ё-Ќ ё-ќ */
-	0x040e,	0x040f, 580,	/* Ў-Џ ў-џ */
-	0x0410,	0x042f, 532,	/* А-Я а-я */
-	0x0531,	0x0556, 548,	/* Ա-Ֆ ա-ֆ */
-	0x10a0,	0x10c5, 548,	/* Ⴀ-Ⴥ ა-ჵ */
-	0x1f08,	0x1f0f, 492,	/* Ἀ-Ἇ ἀ-ἇ */
-	0x1f18,	0x1f1d, 492,	/* Ἐ-Ἕ ἐ-ἕ */
-	0x1f28,	0x1f2f, 492,	/* Ἠ-Ἧ ἠ-ἧ */
-	0x1f38,	0x1f3f, 492,	/* Ἰ-Ἷ ἰ-ἷ */
-	0x1f48,	0x1f4d, 492,	/* Ὀ-Ὅ ὀ-ὅ */
-	0x1f68,	0x1f6f, 492,	/* Ὠ-Ὧ ὠ-ὧ */
-	0x1f88,	0x1f8f, 492,	/* ᾈ-ᾏ ᾀ-ᾇ */
-	0x1f98,	0x1f9f, 492,	/* ᾘ-ᾟ ᾐ-ᾗ */
-	0x1fa8,	0x1faf, 492,	/* ᾨ-ᾯ ᾠ-ᾧ */
-	0x1fb8,	0x1fb9, 492,	/* Ᾰ-Ᾱ ᾰ-ᾱ */
-	0x1fba,	0x1fbb, 426,	/* Ὰ-Ά ὰ-ά */
-	0x1fc8,	0x1fcb, 414,	/* Ὲ-Ή ὲ-ή */
-	0x1fd8,	0x1fd9, 492,	/* Ῐ-Ῑ ῐ-ῑ */
-	0x1fda,	0x1fdb, 400,	/* Ὶ-Ί ὶ-ί */
-	0x1fe8,	0x1fe9, 492,	/* Ῠ-Ῡ ῠ-ῡ */
-	0x1fea,	0x1feb, 388,	/* Ὺ-Ύ ὺ-ύ */
-	0x1ff8,	0x1ff9, 372,	/* Ὸ-Ό ὸ-ό */
-	0x1ffa,	0x1ffb, 374,	/* Ὼ-Ώ ὼ-ώ */
-	0x2160,	0x216f, 516,	/* Ⅰ-Ⅿ ⅰ-ⅿ */
-	0x24b6,	0x24cf, 526,	/* Ⓐ-Ⓩ ⓐ-ⓩ */
-	0xff21,	0xff3a, 532,	/* A-Z a-z */
-};
-
-/*
- * upper case singlets
- *	2nd col is conversion excess 500
- */
-static
-Rune	_tolower1[] =
-{
-	0x0100, 501,	/* Ā ā */
-	0x0102, 501,	/* Ă ă */
-	0x0104, 501,	/* Ą ą */
-	0x0106, 501,	/* Ć ć */
-	0x0108, 501,	/* Ĉ ĉ */
-	0x010a, 501,	/* Ċ ċ */
-	0x010c, 501,	/* Č č */
-	0x010e, 501,	/* Ď ď */
-	0x0110, 501,	/* Đ đ */
-	0x0112, 501,	/* Ē ē */
-	0x0114, 501,	/* Ĕ ĕ */
-	0x0116, 501,	/* Ė ė */
-	0x0118, 501,	/* Ę ę */
-	0x011a, 501,	/* Ě ě */
-	0x011c, 501,	/* Ĝ ĝ */
-	0x011e, 501,	/* Ğ ğ */
-	0x0120, 501,	/* Ġ ġ */
-	0x0122, 501,	/* Ģ ģ */
-	0x0124, 501,	/* Ĥ ĥ */
-	0x0126, 501,	/* Ħ ħ */
-	0x0128, 501,	/* Ĩ ĩ */
-	0x012a, 501,	/* Ī ī */
-	0x012c, 501,	/* Ĭ ĭ */
-	0x012e, 501,	/* Į į */
-	0x0130, 301,	/* İ i */
-	0x0132, 501,	/* IJ ij */
-	0x0134, 501,	/* Ĵ ĵ */
-	0x0136, 501,	/* Ķ ķ */
-	0x0139, 501,	/* Ĺ ĺ */
-	0x013b, 501,	/* Ļ ļ */
-	0x013d, 501,	/* Ľ ľ */
-	0x013f, 501,	/* Ŀ ŀ */
-	0x0141, 501,	/* Ł ł */
-	0x0143, 501,	/* Ń ń */
-	0x0145, 501,	/* Ņ ņ */
-	0x0147, 501,	/* Ň ň */
-	0x014a, 501,	/* Ŋ ŋ */
-	0x014c, 501,	/* Ō ō */
-	0x014e, 501,	/* Ŏ ŏ */
-	0x0150, 501,	/* Ő ő */
-	0x0152, 501,	/* Œ œ */
-	0x0154, 501,	/* Ŕ ŕ */
-	0x0156, 501,	/* Ŗ ŗ */
-	0x0158, 501,	/* Ř ř */
-	0x015a, 501,	/* Ś ś */
-	0x015c, 501,	/* Ŝ ŝ */
-	0x015e, 501,	/* Ş ş */
-	0x0160, 501,	/* Š š */
-	0x0162, 501,	/* Ţ ţ */
-	0x0164, 501,	/* Ť ť */
-	0x0166, 501,	/* Ŧ ŧ */
-	0x0168, 501,	/* Ũ ũ */
-	0x016a, 501,	/* Ū ū */
-	0x016c, 501,	/* Ŭ ŭ */
-	0x016e, 501,	/* Ů ů */
-	0x0170, 501,	/* Ű ű */
-	0x0172, 501,	/* Ų ų */
-	0x0174, 501,	/* Ŵ ŵ */
-	0x0176, 501,	/* Ŷ ŷ */
-	0x0178, 379,	/* Ÿ ÿ */
-	0x0179, 501,	/* Ź ź */
-	0x017b, 501,	/* Ż ż */
-	0x017d, 501,	/* Ž ž */
-	0x0181, 710,	/* Ɓ ɓ */
-	0x0182, 501,	/* Ƃ ƃ */
-	0x0184, 501,	/* Ƅ ƅ */
-	0x0186, 706,	/* Ɔ ɔ */
-	0x0187, 501,	/* Ƈ ƈ */
-	0x018b, 501,	/* Ƌ ƌ */
-	0x0190, 703,	/* Ɛ ɛ */
-	0x0191, 501,	/* Ƒ ƒ */
-	0x0193, 705,	/* Ɠ ɠ */
-	0x0194, 707,	/* Ɣ ɣ */
-	0x0196, 711,	/* Ɩ ɩ */
-	0x0197, 709,	/* Ɨ ɨ */
-	0x0198, 501,	/* Ƙ ƙ */
-	0x019c, 711,	/* Ɯ ɯ */
-	0x019d, 713,	/* Ɲ ɲ */
-	0x01a0, 501,	/* Ơ ơ */
-	0x01a2, 501,	/* Ƣ ƣ */
-	0x01a4, 501,	/* Ƥ ƥ */
-	0x01a7, 501,	/* Ƨ ƨ */
-	0x01a9, 718,	/* Ʃ ʃ */
-	0x01ac, 501,	/* Ƭ ƭ */
-	0x01ae, 718,	/* Ʈ ʈ */
-	0x01af, 501,	/* Ư ư */
-	0x01b3, 501,	/* Ƴ ƴ */
-	0x01b5, 501,	/* Ƶ ƶ */
-	0x01b7, 719,	/* Ʒ ʒ */
-	0x01b8, 501,	/* Ƹ ƹ */
-	0x01bc, 501,	/* Ƽ ƽ */
-	0x01c4, 502,	/* DŽ dž */
-	0x01c5, 501,	/* Dž dž */
-	0x01c7, 502,	/* LJ lj */
-	0x01c8, 501,	/* Lj lj */
-	0x01ca, 502,	/* NJ nj */
-	0x01cb, 501,	/* Nj nj */
-	0x01cd, 501,	/* Ǎ ǎ */
-	0x01cf, 501,	/* Ǐ ǐ */
-	0x01d1, 501,	/* Ǒ ǒ */
-	0x01d3, 501,	/* Ǔ ǔ */
-	0x01d5, 501,	/* Ǖ ǖ */
-	0x01d7, 501,	/* Ǘ ǘ */
-	0x01d9, 501,	/* Ǚ ǚ */
-	0x01db, 501,	/* Ǜ ǜ */
-	0x01de, 501,	/* Ǟ ǟ */
-	0x01e0, 501,	/* Ǡ ǡ */
-	0x01e2, 501,	/* Ǣ ǣ */
-	0x01e4, 501,	/* Ǥ ǥ */
-	0x01e6, 501,	/* Ǧ ǧ */
-	0x01e8, 501,	/* Ǩ ǩ */
-	0x01ea, 501,	/* Ǫ ǫ */
-	0x01ec, 501,	/* Ǭ ǭ */
-	0x01ee, 501,	/* Ǯ ǯ */
-	0x01f1, 502,	/* DZ dz */
-	0x01f2, 501,	/* Dz dz */
-	0x01f4, 501,	/* Ǵ ǵ */
-	0x01fa, 501,	/* Ǻ ǻ */
-	0x01fc, 501,	/* Ǽ ǽ */
-	0x01fe, 501,	/* Ǿ ǿ */
-	0x0200, 501,	/* Ȁ ȁ */
-	0x0202, 501,	/* Ȃ ȃ */
-	0x0204, 501,	/* Ȅ ȅ */
-	0x0206, 501,	/* Ȇ ȇ */
-	0x0208, 501,	/* Ȉ ȉ */
-	0x020a, 501,	/* Ȋ ȋ */
-	0x020c, 501,	/* Ȍ ȍ */
-	0x020e, 501,	/* Ȏ ȏ */
-	0x0210, 501,	/* Ȑ ȑ */
-	0x0212, 501,	/* Ȓ ȓ */
-	0x0214, 501,	/* Ȕ ȕ */
-	0x0216, 501,	/* Ȗ ȗ */
-	0x0386, 538,	/* Ά ά */
-	0x038c, 564,	/* Ό ό */
-	0x03e2, 501,	/* Ϣ ϣ */
-	0x03e4, 501,	/* Ϥ ϥ */
-	0x03e6, 501,	/* Ϧ ϧ */
-	0x03e8, 501,	/* Ϩ ϩ */
-	0x03ea, 501,	/* Ϫ ϫ */
-	0x03ec, 501,	/* Ϭ ϭ */
-	0x03ee, 501,	/* Ϯ ϯ */
-	0x0460, 501,	/* Ѡ ѡ */
-	0x0462, 501,	/* Ѣ ѣ */
-	0x0464, 501,	/* Ѥ ѥ */
-	0x0466, 501,	/* Ѧ ѧ */
-	0x0468, 501,	/* Ѩ ѩ */
-	0x046a, 501,	/* Ѫ ѫ */
-	0x046c, 501,	/* Ѭ ѭ */
-	0x046e, 501,	/* Ѯ ѯ */
-	0x0470, 501,	/* Ѱ ѱ */
-	0x0472, 501,	/* Ѳ ѳ */
-	0x0474, 501,	/* Ѵ ѵ */
-	0x0476, 501,	/* Ѷ ѷ */
-	0x0478, 501,	/* Ѹ ѹ */
-	0x047a, 501,	/* Ѻ ѻ */
-	0x047c, 501,	/* Ѽ ѽ */
-	0x047e, 501,	/* Ѿ ѿ */
-	0x0480, 501,	/* Ҁ ҁ */
-	0x0490, 501,	/* Ґ ґ */
-	0x0492, 501,	/* Ғ ғ */
-	0x0494, 501,	/* Ҕ ҕ */
-	0x0496, 501,	/* Җ җ */
-	0x0498, 501,	/* Ҙ ҙ */
-	0x049a, 501,	/* Қ қ */
-	0x049c, 501,	/* Ҝ ҝ */
-	0x049e, 501,	/* Ҟ ҟ */
-	0x04a0, 501,	/* Ҡ ҡ */
-	0x04a2, 501,	/* Ң ң */
-	0x04a4, 501,	/* Ҥ ҥ */
-	0x04a6, 501,	/* Ҧ ҧ */
-	0x04a8, 501,	/* Ҩ ҩ */
-	0x04aa, 501,	/* Ҫ ҫ */
-	0x04ac, 501,	/* Ҭ ҭ */
-	0x04ae, 501,	/* Ү ү */
-	0x04b0, 501,	/* Ұ ұ */
-	0x04b2, 501,	/* Ҳ ҳ */
-	0x04b4, 501,	/* Ҵ ҵ */
-	0x04b6, 501,	/* Ҷ ҷ */
-	0x04b8, 501,	/* Ҹ ҹ */
-	0x04ba, 501,	/* Һ һ */
-	0x04bc, 501,	/* Ҽ ҽ */
-	0x04be, 501,	/* Ҿ ҿ */
-	0x04c1, 501,	/* Ӂ ӂ */
-	0x04c3, 501,	/* Ӄ ӄ */
-	0x04c7, 501,	/* Ӈ ӈ */
-	0x04cb, 501,	/* Ӌ ӌ */
-	0x04d0, 501,	/* Ӑ ӑ */
-	0x04d2, 501,	/* Ӓ ӓ */
-	0x04d4, 501,	/* Ӕ ӕ */
-	0x04d6, 501,	/* Ӗ ӗ */
-	0x04d8, 501,	/* Ә ә */
-	0x04da, 501,	/* Ӛ ӛ */
-	0x04dc, 501,	/* Ӝ ӝ */
-	0x04de, 501,	/* Ӟ ӟ */
-	0x04e0, 501,	/* Ӡ ӡ */
-	0x04e2, 501,	/* Ӣ ӣ */
-	0x04e4, 501,	/* Ӥ ӥ */
-	0x04e6, 501,	/* Ӧ ӧ */
-	0x04e8, 501,	/* Ө ө */
-	0x04ea, 501,	/* Ӫ ӫ */
-	0x04ee, 501,	/* Ӯ ӯ */
-	0x04f0, 501,	/* Ӱ ӱ */
-	0x04f2, 501,	/* Ӳ ӳ */
-	0x04f4, 501,	/* Ӵ ӵ */
-	0x04f8, 501,	/* Ӹ ӹ */
-	0x1e00, 501,	/* Ḁ ḁ */
-	0x1e02, 501,	/* Ḃ ḃ */
-	0x1e04, 501,	/* Ḅ ḅ */
-	0x1e06, 501,	/* Ḇ ḇ */
-	0x1e08, 501,	/* Ḉ ḉ */
-	0x1e0a, 501,	/* Ḋ ḋ */
-	0x1e0c, 501,	/* Ḍ ḍ */
-	0x1e0e, 501,	/* Ḏ ḏ */
-	0x1e10, 501,	/* Ḑ ḑ */
-	0x1e12, 501,	/* Ḓ ḓ */
-	0x1e14, 501,	/* Ḕ ḕ */
-	0x1e16, 501,	/* Ḗ ḗ */
-	0x1e18, 501,	/* Ḙ ḙ */
-	0x1e1a, 501,	/* Ḛ ḛ */
-	0x1e1c, 501,	/* Ḝ ḝ */
-	0x1e1e, 501,	/* Ḟ ḟ */
-	0x1e20, 501,	/* Ḡ ḡ */
-	0x1e22, 501,	/* Ḣ ḣ */
-	0x1e24, 501,	/* Ḥ ḥ */
-	0x1e26, 501,	/* Ḧ ḧ */
-	0x1e28, 501,	/* Ḩ ḩ */
-	0x1e2a, 501,	/* Ḫ ḫ */
-	0x1e2c, 501,	/* Ḭ ḭ */
-	0x1e2e, 501,	/* Ḯ ḯ */
-	0x1e30, 501,	/* Ḱ ḱ */
-	0x1e32, 501,	/* Ḳ ḳ */
-	0x1e34, 501,	/* Ḵ ḵ */
-	0x1e36, 501,	/* Ḷ ḷ */
-	0x1e38, 501,	/* Ḹ ḹ */
-	0x1e3a, 501,	/* Ḻ ḻ */
-	0x1e3c, 501,	/* Ḽ ḽ */
-	0x1e3e, 501,	/* Ḿ ḿ */
-	0x1e40, 501,	/* Ṁ ṁ */
-	0x1e42, 501,	/* Ṃ ṃ */
-	0x1e44, 501,	/* Ṅ ṅ */
-	0x1e46, 501,	/* Ṇ ṇ */
-	0x1e48, 501,	/* Ṉ ṉ */
-	0x1e4a, 501,	/* Ṋ ṋ */
-	0x1e4c, 501,	/* Ṍ ṍ */
-	0x1e4e, 501,	/* Ṏ ṏ */
-	0x1e50, 501,	/* Ṑ ṑ */
-	0x1e52, 501,	/* Ṓ ṓ */
-	0x1e54, 501,	/* Ṕ ṕ */
-	0x1e56, 501,	/* Ṗ ṗ */
-	0x1e58, 501,	/* Ṙ ṙ */
-	0x1e5a, 501,	/* Ṛ ṛ */
-	0x1e5c, 501,	/* Ṝ ṝ */
-	0x1e5e, 501,	/* Ṟ ṟ */
-	0x1e60, 501,	/* Ṡ ṡ */
-	0x1e62, 501,	/* Ṣ ṣ */
-	0x1e64, 501,	/* Ṥ ṥ */
-	0x1e66, 501,	/* Ṧ ṧ */
-	0x1e68, 501,	/* Ṩ ṩ */
-	0x1e6a, 501,	/* Ṫ ṫ */
-	0x1e6c, 501,	/* Ṭ ṭ */
-	0x1e6e, 501,	/* Ṯ ṯ */
-	0x1e70, 501,	/* Ṱ ṱ */
-	0x1e72, 501,	/* Ṳ ṳ */
-	0x1e74, 501,	/* Ṵ ṵ */
-	0x1e76, 501,	/* Ṷ ṷ */
-	0x1e78, 501,	/* Ṹ ṹ */
-	0x1e7a, 501,	/* Ṻ ṻ */
-	0x1e7c, 501,	/* Ṽ ṽ */
-	0x1e7e, 501,	/* Ṿ ṿ */
-	0x1e80, 501,	/* Ẁ ẁ */
-	0x1e82, 501,	/* Ẃ ẃ */
-	0x1e84, 501,	/* Ẅ ẅ */
-	0x1e86, 501,	/* Ẇ ẇ */
-	0x1e88, 501,	/* Ẉ ẉ */
-	0x1e8a, 501,	/* Ẋ ẋ */
-	0x1e8c, 501,	/* Ẍ ẍ */
-	0x1e8e, 501,	/* Ẏ ẏ */
-	0x1e90, 501,	/* Ẑ ẑ */
-	0x1e92, 501,	/* Ẓ ẓ */
-	0x1e94, 501,	/* Ẕ ẕ */
-	0x1ea0, 501,	/* Ạ ạ */
-	0x1ea2, 501,	/* Ả ả */
-	0x1ea4, 501,	/* Ấ ấ */
-	0x1ea6, 501,	/* Ầ ầ */
-	0x1ea8, 501,	/* Ẩ ẩ */
-	0x1eaa, 501,	/* Ẫ ẫ */
-	0x1eac, 501,	/* Ậ ậ */
-	0x1eae, 501,	/* Ắ ắ */
-	0x1eb0, 501,	/* Ằ ằ */
-	0x1eb2, 501,	/* Ẳ ẳ */
-	0x1eb4, 501,	/* Ẵ ẵ */
-	0x1eb6, 501,	/* Ặ ặ */
-	0x1eb8, 501,	/* Ẹ ẹ */
-	0x1eba, 501,	/* Ẻ ẻ */
-	0x1ebc, 501,	/* Ẽ ẽ */
-	0x1ebe, 501,	/* Ế ế */
-	0x1ec0, 501,	/* Ề ề */
-	0x1ec2, 501,	/* Ể ể */
-	0x1ec4, 501,	/* Ễ ễ */
-	0x1ec6, 501,	/* Ệ ệ */
-	0x1ec8, 501,	/* Ỉ ỉ */
-	0x1eca, 501,	/* Ị ị */
-	0x1ecc, 501,	/* Ọ ọ */
-	0x1ece, 501,	/* Ỏ ỏ */
-	0x1ed0, 501,	/* Ố ố */
-	0x1ed2, 501,	/* Ồ ồ */
-	0x1ed4, 501,	/* Ổ ổ */
-	0x1ed6, 501,	/* Ỗ ỗ */
-	0x1ed8, 501,	/* Ộ ộ */
-	0x1eda, 501,	/* Ớ ớ */
-	0x1edc, 501,	/* Ờ ờ */
-	0x1ede, 501,	/* Ở ở */
-	0x1ee0, 501,	/* Ỡ ỡ */
-	0x1ee2, 501,	/* Ợ ợ */
-	0x1ee4, 501,	/* Ụ ụ */
-	0x1ee6, 501,	/* Ủ ủ */
-	0x1ee8, 501,	/* Ứ ứ */
-	0x1eea, 501,	/* Ừ ừ */
-	0x1eec, 501,	/* Ử ử */
-	0x1eee, 501,	/* Ữ ữ */
-	0x1ef0, 501,	/* Ự ự */
-	0x1ef2, 501,	/* Ỳ ỳ */
-	0x1ef4, 501,	/* Ỵ ỵ */
-	0x1ef6, 501,	/* Ỷ ỷ */
-	0x1ef8, 501,	/* Ỹ ỹ */
-	0x1f59, 492,	/* Ὑ ὑ */
-	0x1f5b, 492,	/* Ὓ ὓ */
-	0x1f5d, 492,	/* Ὕ ὕ */
-	0x1f5f, 492,	/* Ὗ ὗ */
-	0x1fbc, 491,	/* ᾼ ᾳ */
-	0x1fcc, 491,	/* ῌ ῃ */
-	0x1fec, 493,	/* Ῥ ῥ */
-	0x1ffc, 491,	/* ῼ ῳ */
-};
-
-/*
- * title characters are those between
- * upper and lower case. ie DZ Dz dz
- */
-static
-Rune	_totitle1[] =
-{
-	0x01c4, 501,	/* DŽ Dž */
-	0x01c6, 499,	/* dž Dž */
-	0x01c7, 501,	/* LJ Lj */
-	0x01c9, 499,	/* lj Lj */
-	0x01ca, 501,	/* NJ Nj */
-	0x01cc, 499,	/* nj Nj */
-	0x01f1, 501,	/* DZ Dz */
-	0x01f3, 499,	/* dz Dz */
-};
-
-#define bsearch xbsearch
-static
-Rune*
-bsearch(Rune c, Rune *t, int n, int ne)
-{
-	Rune *p;
-	int m;
-
-	while(n > 1) {
-		m = n/2;
-		p = t + m*ne;
-		if(c >= p[0]) {
-			t = p;
-			n = n-m;
-		} else
-			n = m;
-	}
-	if(n && c >= t[0])
-		return t;
-	return 0;
-}
-
-Rune
-tolowerrune(Rune c)
-{
-	Rune *p;
-
-	p = bsearch(c, _tolower2, nelem(_tolower2)/3, 3);
-	if(p && c >= p[0] && c <= p[1])
-		return c + p[2] - 500;
-	p = bsearch(c, _tolower1, nelem(_tolower1)/2, 2);
-	if(p && c == p[0])
-		return c + p[1] - 500;
-	return c;
-}
-
-Rune
-toupperrune(Rune c)
-{
-	Rune *p;
-
-	p = bsearch(c, _toupper2, nelem(_toupper2)/3, 3);
-	if(p && c >= p[0] && c <= p[1])
-		return c + p[2] - 500;
-	p = bsearch(c, _toupper1, nelem(_toupper1)/2, 2);
-	if(p && c == p[0])
-		return c + p[1] - 500;
-	return c;
-}
-
-Rune
-totitlerune(Rune c)
-{
-	Rune *p;
-
-	p = bsearch(c, _totitle1, nelem(_totitle1)/2, 2);
-	if(p && c == p[0])
-		return c + p[1] - 500;
-	return c;
-}
-
-int
-islowerrune(Rune c)
-{
-	Rune *p;
-
-	p = bsearch(c, _toupper2, nelem(_toupper2)/3, 3);
-	if(p && c >= p[0] && c <= p[1])
-		return 1;
-	p = bsearch(c, _toupper1, nelem(_toupper1)/2, 2);
-	if(p && c == p[0])
-		return 1;
-	return 0;
-}
-
-int
-isupperrune(Rune c)
-{
-	Rune *p;
-
-	p = bsearch(c, _tolower2, nelem(_tolower2)/3, 3);
-	if(p && c >= p[0] && c <= p[1])
-		return 1;
-	p = bsearch(c, _tolower1, nelem(_tolower1)/2, 2);
-	if(p && c == p[0])
-		return 1;
-	return 0;
-}
-
-int
-isalpharune(Rune c)
-{
-	Rune *p;
-
-	if(isupperrune(c) || islowerrune(c))
-		return 1;
-	p = bsearch(c, _alpha2, nelem(_alpha2)/2, 2);
-	if(p && c >= p[0] && c <= p[1])
-		return 1;
-	p = bsearch(c, _alpha1, nelem(_alpha1), 1);
-	if(p && c == p[0])
-		return 1;
-	return 0;
-}
-
-int
-istitlerune(Rune c)
-{
-	return isupperrune(c) && islowerrune(c);
-}
-
-int
-isspacerune(Rune c)
-{
-	Rune *p;
-
-	p = bsearch(c, _space2, nelem(_space2)/2, 2);
-	if(p && c >= p[0] && c <= p[1])
-		return 1;
-	return 0;
-}
-
-int
-isdigitrune(Rune c)
-{
-	Rune *p;
-
-	p = bsearch(c, __isdigitr, nelem(__isdigitr)/2, 2);
-	if(p && c >= p[0] && c <= p[1])
-		return 1;
-	return 0;
-}
--- a/Makefile
+++ b/Makefile
@@ -61,7 +61,8 @@
 	3rd/mp/u64.o\
 	3rd/mt19937-64.o\
 	3rd/utf/rune.o\
-	3rd/utf/runetype.o\
+	3rd/utf/runeistype.o\
+	3rd/utf/runetotype.o\
 	3rd/utf/utfnlen.o\
 
 .PHONY: all default test bootstrap clean
@@ -82,6 +83,8 @@
 
 flisp.o: flisp.c flisp.h operators.h cvalues.h maxstack.inc opcodes.h builtin_fns.h
 flmain.o: flmain.c boot.h flisp.h cvalues.h builtin_fns.h
+3rd/utf/runeistype.o: 3rd/utf/runeistypedata
+3rd/utf/runetotype.o: 3rd/utf/runetotypedata
 
 boot.h: flisp.boot
 	sed 's,\\,\\\\,g;s,",\\",g;s,^,",g;s,$$,\\n",g' flisp.boot >$@