/* Generated by re2c */
#line 1 "encodings/unicode_group_Lm_x_encoding_policy_ignore.re"
// re2c $INPUT -o $OUTPUT -x --encoding-policy ignore
#include <stdio.h>
#include "utf16.h"
#define YYCTYPE unsigned short
bool scan(const YYCTYPE * start, const YYCTYPE * const limit)
{
	__attribute__((unused)) const YYCTYPE * YYMARKER; // silence compiler warnings when YYMARKER is not used
#	define YYCURSOR start
Lm:
	
#line 14 "encodings/unicode_group_Lm_x_encoding_policy_ignore.c"
{
	YYCTYPE yych;
	yych = *YYCURSOR;
	if (yych <= 0x209C) {
		if (yych <= 0x0827) {
			if (yych <= 0x037A) {
				if (yych <= 0x02EB) {
					if (yych <= 0x02C5) {
						if (yych <= 0x02AF) goto yy1;
						if (yych <= 0x02C1) goto yy3;
					} else {
						if (yych <= 0x02D1) goto yy3;
						if (yych <= 0x02DF) goto yy1;
						if (yych <= 0x02E4) goto yy3;
					}
				} else {
					if (yych <= 0x02EE) {
						if (yych != 0x02ED) goto yy3;
					} else {
						if (yych == 0x0374) goto yy3;
						if (yych >= 0x037A) goto yy3;
					}
				}
			} else {
				if (yych <= 0x07F3) {
					if (yych <= 0x063F) {
						if (yych == 0x0559) goto yy3;
					} else {
						if (yych <= 0x0640) goto yy3;
						if (yych <= 0x06E4) goto yy1;
						if (yych <= 0x06E6) goto yy3;
					}
				} else {
					if (yych <= 0x0819) {
						if (yych <= 0x07F5) goto yy3;
						if (yych == 0x07FA) goto yy3;
					} else {
						if (yych <= 0x081A) goto yy3;
						if (yych == 0x0824) goto yy3;
					}
				}
			}
		} else {
			if (yych <= 0x1AA6) {
				if (yych <= 0x0EC6) {
					if (yych <= 0x0971) {
						if (yych <= 0x0828) goto yy3;
						if (yych >= 0x0971) goto yy3;
					} else {
						if (yych == 0x0E46) goto yy3;
						if (yych >= 0x0EC6) goto yy3;
					}
				} else {
					if (yych <= 0x17D6) {
						if (yych == 0x10FC) goto yy3;
					} else {
						if (yych <= 0x17D7) goto yy3;
						if (yych == 0x1843) goto yy3;
					}
				}
			} else {
				if (yych <= 0x1D78) {
					if (yych <= 0x1C7D) {
						if (yych <= 0x1AA7) goto yy3;
						if (yych >= 0x1C78) goto yy3;
					} else {
						if (yych <= 0x1D2B) goto yy1;
						if (yych <= 0x1D6A) goto yy3;
						if (yych >= 0x1D78) goto yy3;
					}
				} else {
					if (yych <= 0x2071) {
						if (yych <= 0x1D9A) goto yy1;
						if (yych <= 0x1DBF) goto yy3;
						if (yych >= 0x2071) goto yy3;
					} else {
						if (yych == 0x207F) goto yy3;
						if (yych >= 0x2090) goto yy3;
					}
				}
			}
		}
	} else {
		if (yych <= 0xA76F) {
			if (yych <= 0x309E) {
				if (yych <= 0x3004) {
					if (yych <= 0x2D6E) {
						if (yych <= 0x2C7B) goto yy1;
						if (yych <= 0x2C7D) goto yy3;
					} else {
						if (yych <= 0x2D6F) goto yy3;
						if (yych == 0x2E2F) goto yy3;
					}
				} else {
					if (yych <= 0x3035) {
						if (yych <= 0x3005) goto yy3;
						if (yych >= 0x3031) goto yy3;
					} else {
						if (yych == 0x303B) goto yy3;
						if (yych >= 0x309D) goto yy3;
					}
				}
			} else {
				if (yych <= 0xA60B) {
					if (yych <= 0xA014) {
						if (yych <= 0x30FB) goto yy1;
						if (yych <= 0x30FE) goto yy3;
					} else {
						if (yych <= 0xA015) goto yy3;
						if (yych <= 0xA4F7) goto yy1;
						if (yych <= 0xA4FD) goto yy3;
					}
				} else {
					if (yych <= 0xA69B) {
						if (yych <= 0xA60C) goto yy3;
						if (yych == 0xA67F) goto yy3;
					} else {
						if (yych <= 0xA69D) goto yy3;
						if (yych <= 0xA716) goto yy1;
						if (yych <= 0xA71F) goto yy3;
					}
				}
			}
		} else {
			if (yych <= 0xAAF2) {
				if (yych <= 0xA9CF) {
					if (yych <= 0xA788) {
						if (yych <= 0xA770) goto yy3;
						if (yych >= 0xA788) goto yy3;
					} else {
						if (yych <= 0xA7F7) goto yy1;
						if (yych <= 0xA7F9) goto yy3;
						if (yych >= 0xA9CF) goto yy3;
					}
				} else {
					if (yych <= 0xAA6F) {
						if (yych == 0xA9E6) goto yy3;
					} else {
						if (yych <= 0xAA70) goto yy3;
						if (yych == 0xAADD) goto yy3;
					}
				}
			} else {
				if (yych <= 0xD837) {
					if (yych <= 0xAB5F) {
						if (yych <= 0xAAF4) goto yy3;
						if (yych >= 0xAB5C) goto yy3;
					} else {
						if (yych <= 0xD819) goto yy1;
						if (yych <= 0xD81A) goto yy4;
						if (yych <= 0xD81B) goto yy5;
					}
				} else {
					if (yych <= 0xFF6F) {
						if (yych <= 0xD838) goto yy6;
						if (yych == 0xD83A) goto yy7;
					} else {
						if (yych <= 0xFF70) goto yy3;
						if (yych <= 0xFF9D) goto yy1;
						if (yych <= 0xFF9F) goto yy3;
					}
				}
			}
		}
	}
yy1:
	++YYCURSOR;
yy2:
#line 14 "encodings/unicode_group_Lm_x_encoding_policy_ignore.re"
	{ return YYCURSOR == limit; }
#line 185 "encodings/unicode_group_Lm_x_encoding_policy_ignore.c"
yy3:
	++YYCURSOR;
#line 13 "encodings/unicode_group_Lm_x_encoding_policy_ignore.re"
	{ goto Lm; }
#line 190 "encodings/unicode_group_Lm_x_encoding_policy_ignore.c"
yy4:
	yych = *++YYCURSOR;
	if (yych <= 0xDF3F) goto yy2;
	if (yych <= 0xDF43) goto yy3;
	goto yy2;
yy5:
	yych = *++YYCURSOR;
	if (yych <= 0xDFDF) {
		if (yych <= 0xDF92) goto yy2;
		if (yych <= 0xDF9F) goto yy3;
		goto yy2;
	} else {
		if (yych == 0xDFE2) goto yy2;
		if (yych <= 0xDFE3) goto yy3;
		goto yy2;
	}
yy6:
	yych = *++YYCURSOR;
	if (yych <= 0xDD36) goto yy2;
	if (yych <= 0xDD3D) goto yy3;
	goto yy2;
yy7:
	yych = *++YYCURSOR;
	if (yych == 0xDD4B) goto yy3;
	goto yy2;
}
#line 15 "encodings/unicode_group_Lm_x_encoding_policy_ignore.re"

}
static const unsigned int chars_Lm [] = {0x2b0,0x2c1,  0x2c6,0x2d1,  0x2e0,0x2e4,  0x2ec,0x2ec,  0x2ee,0x2ee,  0x374,0x374,  0x37a,0x37a,  0x559,0x559,  0x640,0x640,  0x6e5,0x6e6,  0x7f4,0x7f5,  0x7fa,0x7fa,  0x81a,0x81a,  0x824,0x824,  0x828,0x828,  0x971,0x971,  0xe46,0xe46,  0xec6,0xec6,  0x10fc,0x10fc,  0x17d7,0x17d7,  0x1843,0x1843,  0x1aa7,0x1aa7,  0x1c78,0x1c7d,  0x1d2c,0x1d6a,  0x1d78,0x1d78,  0x1d9b,0x1dbf,  0x2071,0x2071,  0x207f,0x207f,  0x2090,0x209c,  0x2c7c,0x2c7d,  0x2d6f,0x2d6f,  0x2e2f,0x2e2f,  0x3005,0x3005,  0x3031,0x3035,  0x303b,0x303b,  0x309d,0x309e,  0x30fc,0x30fe,  0xa015,0xa015,  0xa4f8,0xa4fd,  0xa60c,0xa60c,  0xa67f,0xa67f,  0xa69c,0xa69d,  0xa717,0xa71f,  0xa770,0xa770,  0xa788,0xa788,  0xa7f8,0xa7f9,  0xa9cf,0xa9cf,  0xa9e6,0xa9e6,  0xaa70,0xaa70,  0xaadd,0xaadd,  0xaaf3,0xaaf4,  0xab5c,0xab5f,  0xff70,0xff70,  0xff9e,0xff9f,  0x16b40,0x16b43,  0x16f93,0x16f9f,  0x16fe0,0x16fe1,  0x16fe3,0x16fe3,  0x1e137,0x1e13d,  0x1e94b,0x1e94b,  0x0,0x0};
static unsigned int encode_utf16 (const unsigned int * ranges, unsigned int ranges_count, unsigned int * s)
{
	unsigned int * const s_start = s;
	for (unsigned int i = 0; i < ranges_count; i += 2)
		for (unsigned int j = ranges[i]; j <= ranges[i + 1]; ++j)
		{
			if (j <= re2c::utf16::MAX_1WORD_RUNE)
				*s++ = j;
			else
			{
				*s++ = re2c::utf16::lead_surr(j);
				*s++ = re2c::utf16::trail_surr(j);
			}
		}
	return s - s_start;
}

int main ()
{
	unsigned int * buffer_Lm = new unsigned int [520];
	YYCTYPE * s = (YYCTYPE *) buffer_Lm;
	unsigned int buffer_len = encode_utf16 (chars_Lm, sizeof (chars_Lm) / sizeof (unsigned int), buffer_Lm);
	/* convert 32-bit code units to YYCTYPE; reuse the same buffer */
	for (unsigned int i = 0; i < buffer_len; ++i) s[i] = buffer_Lm[i];
	if (!scan (s, s + buffer_len))
		printf("test 'Lm' failed\n");
	delete [] buffer_Lm;
	return 0;
}
