]> git.proxmox.com Git - mirror_edk2.git/commitdiff
Rollback the patch which has error changes.
authorEric Dong <eric.dong@intel.com>
Tue, 8 Sep 2015 07:04:28 +0000 (07:04 +0000)
committerydong10 <ydong10@Edk2>
Tue, 8 Sep 2015 07:04:28 +0000 (07:04 +0000)
Contributed-under: TianoCore Contribution Agreement 1.0
Signed-off-by: Eric Dong <eric.dong@intel.com>
git-svn-id: https://svn.code.sf.net/p/edk2/code/trunk/edk2@18412 6f19259b-4bc3-4df7-8a09-765794883524

32 files changed:
MdeModulePkg/MdeModulePkg.dsc
MdeModulePkg/Universal/RegularExpressionDxe/Oniguruma/AUTHORS [deleted file]
MdeModulePkg/Universal/RegularExpressionDxe/Oniguruma/COPYING [deleted file]
MdeModulePkg/Universal/RegularExpressionDxe/Oniguruma/OnigurumaIntrinsics.c [deleted file]
MdeModulePkg/Universal/RegularExpressionDxe/Oniguruma/OnigurumaUefiPort.c [deleted file]
MdeModulePkg/Universal/RegularExpressionDxe/Oniguruma/OnigurumaUefiPort.h [deleted file]
MdeModulePkg/Universal/RegularExpressionDxe/Oniguruma/README [deleted file]
MdeModulePkg/Universal/RegularExpressionDxe/Oniguruma/enc/ascii.c [deleted file]
MdeModulePkg/Universal/RegularExpressionDxe/Oniguruma/enc/unicode.c [deleted file]
MdeModulePkg/Universal/RegularExpressionDxe/Oniguruma/enc/utf16_le.c [deleted file]
MdeModulePkg/Universal/RegularExpressionDxe/Oniguruma/oniggnu.h [deleted file]
MdeModulePkg/Universal/RegularExpressionDxe/Oniguruma/onigposix.h [deleted file]
MdeModulePkg/Universal/RegularExpressionDxe/Oniguruma/oniguruma.h [deleted file]
MdeModulePkg/Universal/RegularExpressionDxe/Oniguruma/regcomp.c [deleted file]
MdeModulePkg/Universal/RegularExpressionDxe/Oniguruma/regenc.c [deleted file]
MdeModulePkg/Universal/RegularExpressionDxe/Oniguruma/regenc.h [deleted file]
MdeModulePkg/Universal/RegularExpressionDxe/Oniguruma/regerror.c [deleted file]
MdeModulePkg/Universal/RegularExpressionDxe/Oniguruma/regexec.c [deleted file]
MdeModulePkg/Universal/RegularExpressionDxe/Oniguruma/reggnu.c [deleted file]
MdeModulePkg/Universal/RegularExpressionDxe/Oniguruma/regint.h [deleted file]
MdeModulePkg/Universal/RegularExpressionDxe/Oniguruma/regparse.c [deleted file]
MdeModulePkg/Universal/RegularExpressionDxe/Oniguruma/regparse.h [deleted file]
MdeModulePkg/Universal/RegularExpressionDxe/Oniguruma/regposerr.c [deleted file]
MdeModulePkg/Universal/RegularExpressionDxe/Oniguruma/regposix.c [deleted file]
MdeModulePkg/Universal/RegularExpressionDxe/Oniguruma/regsyntax.c [deleted file]
MdeModulePkg/Universal/RegularExpressionDxe/Oniguruma/regtrav.c [deleted file]
MdeModulePkg/Universal/RegularExpressionDxe/Oniguruma/regversion.c [deleted file]
MdeModulePkg/Universal/RegularExpressionDxe/Oniguruma/st.c [deleted file]
MdeModulePkg/Universal/RegularExpressionDxe/Oniguruma/st.h [deleted file]
MdeModulePkg/Universal/RegularExpressionDxe/RegularExpressionDxe.c [deleted file]
MdeModulePkg/Universal/RegularExpressionDxe/RegularExpressionDxe.h [deleted file]
MdeModulePkg/Universal/RegularExpressionDxe/RegularExpressionDxe.inf [deleted file]

index 8a76a4c7a3609b7bf8134c0a3c43f7495cd76cc9..3e04477318b94b9602c0a377ac0eb6119f46dbb2 100644 (file)
   MdeModulePkg/Universal/MonotonicCounterRuntimeDxe/MonotonicCounterRuntimeDxe.inf\r
   MdeModulePkg/Universal/ResetSystemRuntimeDxe/ResetSystemRuntimeDxe.inf\r
   MdeModulePkg/Universal/SmbiosDxe/SmbiosDxe.inf\r
-  MdeModulePkg/Universal/RegularExpressionDxe/RegularExpressionDxe.inf\r
 \r
   MdeModulePkg/Universal/Network/ArpDxe/ArpDxe.inf\r
   MdeModulePkg/Universal/Network/Dhcp4Dxe/Dhcp4Dxe.inf\r
diff --git a/MdeModulePkg/Universal/RegularExpressionDxe/Oniguruma/AUTHORS b/MdeModulePkg/Universal/RegularExpressionDxe/Oniguruma/AUTHORS
deleted file mode 100644 (file)
index 3b3287e..0000000
+++ /dev/null
@@ -1 +0,0 @@
-sndgk393 AT ybb DOT ne DOT jp (K.Kosako)\r
diff --git a/MdeModulePkg/Universal/RegularExpressionDxe/Oniguruma/COPYING b/MdeModulePkg/Universal/RegularExpressionDxe/Oniguruma/COPYING
deleted file mode 100644 (file)
index f3d17ae..0000000
+++ /dev/null
@@ -1,28 +0,0 @@
-Oniguruma LICENSE\r
------------------\r
-\r
-/*-\r
- * Copyright (c) 2002-2007  K.Kosako  <sndgk393 AT ybb DOT ne DOT jp>\r
- * All rights reserved.\r
- *\r
- * Redistribution and use in source and binary forms, with or without\r
- * modification, are permitted provided that the following conditions\r
- * are met:\r
- * 1. Redistributions of source code must retain the above copyright\r
- *    notice, this list of conditions and the following disclaimer.\r
- * 2. Redistributions in binary form must reproduce the above copyright\r
- *    notice, this list of conditions and the following disclaimer in the\r
- *    documentation and/or other materials provided with the distribution.\r
- *\r
- * THIS SOFTWARE IS PROVIDED BY THE AUTHOR AND CONTRIBUTORS ``AS IS'' AND\r
- * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE\r
- * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE\r
- * ARE DISCLAIMED.  IN NO EVENT SHALL THE AUTHOR OR CONTRIBUTORS BE LIABLE\r
- * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL\r
- * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS\r
- * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)\r
- * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT\r
- * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY\r
- * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF\r
- * SUCH DAMAGE.\r
- */\r
diff --git a/MdeModulePkg/Universal/RegularExpressionDxe/Oniguruma/OnigurumaIntrinsics.c b/MdeModulePkg/Universal/RegularExpressionDxe/Oniguruma/OnigurumaIntrinsics.c
deleted file mode 100644 (file)
index a60b647..0000000
+++ /dev/null
@@ -1,53 +0,0 @@
-/** @file\r
-\r
-  Provide intrinsics within Oniguruma\r
-\r
-  Copyright (c) 2015, Hewlett-Packard Development Company, L.P.<BR>\r
-\r
-  This program and the accompanying materials are licensed and made available\r
-  under the terms and conditions of the BSD License that accompanies this\r
-  distribution.  The full text of the license may be found at\r
-  http://opensource.org/licenses/bsd-license.php.\r
-\r
-  THE PROGRAM IS DISTRIBUTED UNDER THE BSD LICENSE ON AN "AS IS" BASIS, WITHOUT\r
-  WARRANTIES OR REPRESENTATIONS OF ANY KIND, EITHER EXPRESS OR IMPLIED.\r
-**/\r
-\r
-#include <Library/BaseMemoryLib.h>\r
-\r
-//\r
-// From CryptoPkg/IntrinsicLib\r
-//\r
-\r
-/* Copies bytes between buffers */\r
-#pragma function(memcpy)\r
-void * memcpy (void *dest, const void *src, unsigned int count)\r
-{\r
-  return CopyMem (dest, src, (UINTN)count);\r
-}\r
-\r
-/* Sets buffers to a specified character */\r
-#pragma function(memset)\r
-void * memset (void *dest, char ch, unsigned int count)\r
-{\r
-  //\r
-  // NOTE: Here we use one base implementation for memset, instead of the direct\r
-  //       optimized SetMem() wrapper. Because the IntrinsicLib has to be built\r
-  //       without whole program optimization option, and there will be some\r
-  //       potential register usage errors when calling other optimized codes.\r
-  //\r
-\r
-  //\r
-  // Declare the local variables that actually move the data elements as\r
-  // volatile to prevent the optimizer from replacing this function with\r
-  // the intrinsic memset()\r
-  //\r
-  volatile UINT8  *Pointer;\r
-\r
-  Pointer = (UINT8 *)dest;\r
-  while (count-- != 0) {\r
-    *(Pointer++) = ch;\r
-  }\r
-\r
-  return dest;\r
-}\r
diff --git a/MdeModulePkg/Universal/RegularExpressionDxe/Oniguruma/OnigurumaUefiPort.c b/MdeModulePkg/Universal/RegularExpressionDxe/Oniguruma/OnigurumaUefiPort.c
deleted file mode 100644 (file)
index 98822f3..0000000
+++ /dev/null
@@ -1,32 +0,0 @@
-/** @file\r
-  \r
-  Module to rewrite stdlib references within Oniguruma\r
-\r
-  Copyright (c) 2014-2015, Hewlett-Packard Development Company, L.P.<BR>\r
-\r
-  This program and the accompanying materials are licensed and made available\r
-  under the terms and conditions of the BSD License that accompanies this\r
-  distribution.  The full text of the license may be found at\r
-  http://opensource.org/licenses/bsd-license.php.\r
-\r
-  THE PROGRAM IS DISTRIBUTED UNDER THE BSD LICENSE ON AN "AS IS" BASIS, WITHOUT\r
-  WARRANTIES OR REPRESENTATIONS OF ANY KIND, EITHER EXPRESS OR IMPLIED.\r
-**/\r
-#include "OnigurumaUefiPort.h"\r
-\r
-int sprintf(char *str, char const *fmt, ...)\r
-{\r
-  VA_LIST Marker;\r
-  int   NumberOfPrinted;\r
-\r
-  VA_START (Marker, fmt);\r
-  NumberOfPrinted = (int)AsciiVSPrint (str, 1000000, fmt, Marker);\r
-  VA_END (Marker);\r
-\r
-  return NumberOfPrinted;\r
-}\r
-\r
-int OnigStrCmp (char* Str1, char* Str2)\r
-{\r
-  return (int)AsciiStrCmp (Str1, Str2);\r
-}\r
diff --git a/MdeModulePkg/Universal/RegularExpressionDxe/Oniguruma/OnigurumaUefiPort.h b/MdeModulePkg/Universal/RegularExpressionDxe/Oniguruma/OnigurumaUefiPort.h
deleted file mode 100644 (file)
index 504c9fb..0000000
+++ /dev/null
@@ -1,66 +0,0 @@
-/** @file\r
-  \r
-  Module to rewrite stdlib references within Oniguruma\r
-\r
-  Copyright (c) 2014-2015, Hewlett-Packard Development Company, L.P.<BR>\r
-\r
-  This program and the accompanying materials are licensed and made available\r
-  under the terms and conditions of the BSD License that accompanies this\r
-  distribution.  The full text of the license may be found at\r
-  http://opensource.org/licenses/bsd-license.php.\r
-\r
-  THE PROGRAM IS DISTRIBUTED UNDER THE BSD LICENSE ON AN "AS IS" BASIS, WITHOUT\r
-  WARRANTIES OR REPRESENTATIONS OF ANY KIND, EITHER EXPRESS OR IMPLIED.\r
-**/\r
-#ifndef ONIGURUMA_UEFI_PORT_H\r
-#define ONIGURUMA_UEFI_PORT_H\r
-\r
-#include <Library/MemoryAllocationLib.h>\r
-#include <Library/PrintLib.h>\r
-#include <Library/BaseMemoryLib.h>\r
-#include <Library/BaseLib.h>\r
-#include <Library/DebugLib.h>\r
-\r
-#undef _WIN32\r
-#define P_(args) args\r
-\r
-#define SIZEOF_LONG sizeof(long)\r
-#define SIZEOF_INT  sizeof(int)\r
-typedef UINTN size_t;\r
-\r
-#define malloc(n) AllocatePool(n)\r
-#define calloc(n,s) AllocateZeroPool((n)*(s))\r
-#define free(p) FreePool(p)\r
-#define realloc(OldPtr,NewSize,OldSize) ReallocatePool(OldSize,NewSize,OldPtr)\r
-#define xmemmove(Dest,Src,Length) CopyMem(Dest,Src,Length)\r
-#define xmemcpy(Dest,Src,Length) CopyMem(Dest,Src,Length)\r
-#define xmemset(Buffer,Value,Length) SetMem(Buffer,Length,Value)\r
-\r
-#define va_init_list(a,b) VA_START(a,b)\r
-#define va_list VA_LIST\r
-#define va_arg(a,b) VA_ARG(a,b)\r
-#define va_end(a) VA_END(a)\r
-\r
-#define FILE VOID\r
-#define stdout NULL\r
-#define fprintf(...)\r
-#define fputs(a,b)\r
-#define vsnprintf (int)AsciiVSPrint\r
-#define _vsnprintf vsnprintf\r
-\r
-#define setlocale(a,b)\r
-#define LC_ALL 0\r
-\r
-//#define MAX_STRING_SIZE 0x1000\r
-#define strlen_s(String,MaxSize)            AsciiStrnLenS (String, MaxSize)\r
-#define strcat_s(Dest,MaxSize,Src)          AsciiStrCatS (Dest, MaxSize, Src)\r
-#define strncpy_s(Dest,MaxSize,Src,Length)  AsciiStrnCpyS (Dest, MaxSize, Src, Length)\r
-#define strcmp                              OnigStrCmp\r
-\r
-int OnigStrCmp (char* Str1, char* Str2);\r
-\r
-int sprintf (char *str, char const *fmt, ...);\r
-\r
-#define exit(n) ASSERT(FALSE);\r
-\r
-#endif // !ONIGURUMA_UEFI_PORT_H\r
diff --git a/MdeModulePkg/Universal/RegularExpressionDxe/Oniguruma/README b/MdeModulePkg/Universal/RegularExpressionDxe/Oniguruma/README
deleted file mode 100644 (file)
index 18952ee..0000000
+++ /dev/null
@@ -1,189 +0,0 @@
-README  2007/05/31\r
-\r
-Oniguruma  ----   (C) K.Kosako <sndgk393 AT ybb DOT ne DOT jp>\r
-\r
-http://www.geocities.jp/kosako3/oniguruma/\r
-\r
-Oniguruma is a regular expressions library.\r
-The characteristics of this library is that different character encoding\r
-for every regular expression object can be specified.\r
-\r
-Supported character encodings:\r
-\r
-  ASCII, UTF-8, UTF-16BE, UTF-16LE, UTF-32BE, UTF-32LE,\r
-  EUC-JP, EUC-TW, EUC-KR, EUC-CN,\r
-  Shift_JIS, Big5, GB18030, KOI8-R, CP1251,\r
-  ISO-8859-1, ISO-8859-2, ISO-8859-3, ISO-8859-4, ISO-8859-5,\r
-  ISO-8859-6, ISO-8859-7, ISO-8859-8, ISO-8859-9, ISO-8859-10,\r
-  ISO-8859-11, ISO-8859-13, ISO-8859-14, ISO-8859-15, ISO-8859-16\r
-\r
-* GB18030: contributed by KUBO Takehiro\r
-* CP1251:  contributed by Byte\r
-------------------------------------------------------------\r
-\r
-License\r
-\r
-   BSD license.\r
-\r
-\r
-Install\r
-\r
- Case 1: Unix and Cygwin platform\r
-\r
-   1. ./configure\r
-   2. make\r
-   3. make install\r
-\r
-   * uninstall\r
-\r
-     make uninstall\r
-\r
-   * test (ASCII/EUC-JP)\r
-\r
-     make atest\r
-\r
-   * configuration check\r
-\r
-     onig-config --cflags\r
-     onig-config --libs\r
-     onig-config --prefix\r
-     onig-config --exec-prefix\r
-\r
-\r
-\r
- Case 2: Win32 platform (VC++)\r
-\r
-   1. copy win32\Makefile Makefile\r
-   2. copy win32\config.h config.h\r
-   3. nmake\r
-\r
-      onig_s.lib:  static link library\r
-      onig.dll:    dynamic link library\r
-\r
-  * test (ASCII/Shift_JIS)\r
-   4. copy win32\testc.c testc.c\r
-   5. nmake ctest\r
-\r
-\r
-\r
-Regular Expressions\r
-\r
-  See doc/RE (or doc/RE.ja for Japanese).\r
-\r
-\r
-Usage\r
-\r
-  Include oniguruma.h in your program. (Oniguruma API)\r
-  See doc/API for Oniguruma API.\r
-\r
-  If you want to disable UChar type (== unsigned char) definition\r
-  in oniguruma.h, define ONIG_ESCAPE_UCHAR_COLLISION and then \r
-  include oniguruma.h.\r
-\r
-  If you want to disable regex_t type definition in oniguruma.h,\r
-  define ONIG_ESCAPE_REGEX_T_COLLISION and then include oniguruma.h.\r
-\r
-  Example of the compiling/linking command line in Unix or Cygwin,\r
-  (prefix == /usr/local case)\r
-\r
-    cc sample.c -L/usr/local/lib -lonig\r
-\r
-\r
-  If you want to use static link library(onig_s.lib) in Win32,\r
-  add option -DONIG_EXTERN=extern to C compiler.\r
-\r
-\r
-\r
-Sample Programs\r
-\r
-  sample/simple.c    example of the minimum (Oniguruma API)\r
-  sample/names.c     example of the named group callback.\r
-  sample/encode.c    example of some encodings.\r
-  sample/listcap.c   example of the capture history.\r
-  sample/posix.c     POSIX API sample.\r
-  sample/sql.c       example of the variable meta characters.\r
-                     (SQL-like pattern matching)\r
-\r
-Test Programs\r
-  sample/syntax.c    Perl, Java and ASIS syntax test.\r
-  sample/crnl.c      --enable-crnl-as-line-terminator test\r
-\r
-\r
-Source Files\r
-\r
-  oniguruma.h        Oniguruma API header file. (public)\r
-  onig-config.in     configuration check program template.\r
-\r
-  regenc.h           character encodings framework header file.\r
-  regint.h           internal definitions\r
-  regparse.h         internal definitions for regparse.c and regcomp.c\r
-  regcomp.c          compiling and optimization functions\r
-  regenc.c           character encodings framework.\r
-  regerror.c         error message function\r
-  regext.c           extended API functions. (deluxe version API)\r
-  regexec.c          search and match functions\r
-  regparse.c         parsing functions.\r
-  regsyntax.c        pattern syntax functions and built-in syntax definitions.\r
-  regtrav.c          capture history tree data traverse functions.\r
-  regversion.c       version info function.\r
-  st.h               hash table functions header file\r
-  st.c               hash table functions\r
-\r
-  oniggnu.h          GNU regex API header file. (public)\r
-  reggnu.c           GNU regex API functions\r
-\r
-  onigposix.h        POSIX API header file. (public)\r
-  regposerr.c        POSIX error message function.\r
-  regposix.c         POSIX API functions.\r
-\r
-  enc/mktable.c      character type table generator.\r
-  enc/ascii.c        ASCII encoding.\r
-  enc/euc_jp.c       EUC-JP encoding.\r
-  enc/euc_tw.c       EUC-TW encoding.\r
-  enc/euc_kr.c       EUC-KR, EUC-CN encoding.\r
-  enc/sjis.c         Shift_JIS encoding.\r
-  enc/big5.c         Big5      encoding.\r
-  enc/gb18030.c      GB18030   encoding.\r
-  enc/koi8.c         KOI8      encoding.\r
-  enc/koi8_r.c       KOI8-R    encoding.\r
-  enc/cp1251.c       CP1251    encoding.\r
-  enc/iso8859_1.c    ISO-8859-1  encoding. (Latin-1)\r
-  enc/iso8859_2.c    ISO-8859-2  encoding. (Latin-2)\r
-  enc/iso8859_3.c    ISO-8859-3  encoding. (Latin-3)\r
-  enc/iso8859_4.c    ISO-8859-4  encoding. (Latin-4)\r
-  enc/iso8859_5.c    ISO-8859-5  encoding. (Cyrillic)\r
-  enc/iso8859_6.c    ISO-8859-6  encoding. (Arabic)\r
-  enc/iso8859_7.c    ISO-8859-7  encoding. (Greek)\r
-  enc/iso8859_8.c    ISO-8859-8  encoding. (Hebrew)\r
-  enc/iso8859_9.c    ISO-8859-9  encoding. (Latin-5 or Turkish)\r
-  enc/iso8859_10.c   ISO-8859-10 encoding. (Latin-6 or Nordic)\r
-  enc/iso8859_11.c   ISO-8859-11 encoding. (Thai)\r
-  enc/iso8859_13.c   ISO-8859-13 encoding. (Latin-7 or Baltic Rim)\r
-  enc/iso8859_14.c   ISO-8859-14 encoding. (Latin-8 or Celtic)\r
-  enc/iso8859_15.c   ISO-8859-15 encoding. (Latin-9 or West European with Euro)\r
-  enc/iso8859_16.c   ISO-8859-16 encoding.\r
-                     (Latin-10 or South-Eastern European with Euro)\r
-  enc/utf8.c         UTF-8    encoding.\r
-  enc/utf16_be.c     UTF-16BE encoding.\r
-  enc/utf16_le.c     UTF-16LE encoding.\r
-  enc/utf32_be.c     UTF-32BE encoding.\r
-  enc/utf32_le.c     UTF-32LE encoding.\r
-  enc/unicode.c      Unicode information data.\r
-\r
-  win32/Makefile     Makefile for Win32 (VC++)\r
-  win32/config.h     config.h for Win32\r
-\r
-\r
-\r
-ToDo\r
-\r
-  ? case fold flag: Katakana <-> Hiragana.\r
-  ? add ONIG_OPTION_NOTBOS/NOTEOS. (\A, \z, \Z)\r
- ?? \X (== \PM\pM*)\r
- ?? implement syntax behavior ONIG_SYN_CONTEXT_INDEP_ANCHORS.\r
- ?? transmission stopper. (return ONIG_STOP from match_at())\r
-\r
-and I'm thankful to Akinori MUSHA.\r
-\r
-\r
-Mail Address: K.Kosako <sndgk393 AT ybb DOT ne DOT jp>\r
diff --git a/MdeModulePkg/Universal/RegularExpressionDxe/Oniguruma/enc/ascii.c b/MdeModulePkg/Universal/RegularExpressionDxe/Oniguruma/enc/ascii.c
deleted file mode 100644 (file)
index 25afc98..0000000
+++ /dev/null
@@ -1,58 +0,0 @@
-/**********************************************************************\r
-  ascii.c -  Oniguruma (regular expression library)\r
-**********************************************************************/\r
-/*-\r
- * Copyright (c) 2002-2006  K.Kosako  <sndgk393 AT ybb DOT ne DOT jp>\r
- * All rights reserved.\r
- *\r
- * Redistribution and use in source and binary forms, with or without\r
- * modification, are permitted provided that the following conditions\r
- * are met:\r
- * 1. Redistributions of source code must retain the above copyright\r
- *    notice, this list of conditions and the following disclaimer.\r
- * 2. Redistributions in binary form must reproduce the above copyright\r
- *    notice, this list of conditions and the following disclaimer in the\r
- *    documentation and/or other materials provided with the distribution.\r
- *\r
- * THIS SOFTWARE IS PROVIDED BY THE AUTHOR AND CONTRIBUTORS ``AS IS'' AND\r
- * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE\r
- * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE\r
- * ARE DISCLAIMED.  IN NO EVENT SHALL THE AUTHOR OR CONTRIBUTORS BE LIABLE\r
- * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL\r
- * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS\r
- * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)\r
- * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT\r
- * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY\r
- * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF\r
- * SUCH DAMAGE.\r
- */\r
-\r
-#include "regenc.h"\r
-\r
-static int\r
-ascii_is_code_ctype(OnigCodePoint code, unsigned int ctype)\r
-{\r
-  if (code < 128)\r
-    return ONIGENC_IS_ASCII_CODE_CTYPE(code, ctype);\r
-  else\r
-    return FALSE;\r
-}\r
-\r
-OnigEncodingType OnigEncodingASCII = {\r
-  onigenc_single_byte_mbc_enc_len,\r
-  "US-ASCII",  /* name */\r
-  1,           /* max byte length */\r
-  1,           /* min byte length */\r
-  onigenc_is_mbc_newline_0x0a,\r
-  onigenc_single_byte_mbc_to_code,\r
-  onigenc_single_byte_code_to_mbclen,\r
-  onigenc_single_byte_code_to_mbc,\r
-  onigenc_ascii_mbc_case_fold,\r
-  onigenc_ascii_apply_all_case_fold,\r
-  onigenc_ascii_get_case_fold_codes_by_str,\r
-  onigenc_minimum_property_name_to_ctype,\r
-  ascii_is_code_ctype,\r
-  onigenc_not_support_get_ctype_code_range,\r
-  onigenc_single_byte_left_adjust_char_head,\r
-  onigenc_always_true_is_allowed_reverse_match\r
-};\r
diff --git a/MdeModulePkg/Universal/RegularExpressionDxe/Oniguruma/enc/unicode.c b/MdeModulePkg/Universal/RegularExpressionDxe/Oniguruma/enc/unicode.c
deleted file mode 100644 (file)
index 70a1a52..0000000
+++ /dev/null
@@ -1,11374 +0,0 @@
-/**********************************************************************\r
-  unicode.c -  Oniguruma (regular expression library)\r
-**********************************************************************/\r
-/*-\r
- * Copyright (c) 2002-2013  K.Kosako  <sndgk393 AT ybb DOT ne DOT jp>\r
- * All rights reserved.\r
- *\r
- * Redistribution and use in source and binary forms, with or without\r
- * modification, are permitted provided that the following conditions\r
- * are met:\r
- * 1. Redistributions of source code must retain the above copyright\r
- *    notice, this list of conditions and the following disclaimer.\r
- * 2. Redistributions in binary form must reproduce the above copyright\r
- *    notice, this list of conditions and the following disclaimer in the\r
- *    documentation and/or other materials provided with the distribution.\r
- *\r
- * THIS SOFTWARE IS PROVIDED BY THE AUTHOR AND CONTRIBUTORS ``AS IS'' AND\r
- * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE\r
- * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE\r
- * ARE DISCLAIMED.  IN NO EVENT SHALL THE AUTHOR OR CONTRIBUTORS BE LIABLE\r
- * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL\r
- * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS\r
- * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)\r
- * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT\r
- * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY\r
- * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF\r
- * SUCH DAMAGE.\r
- */\r
-\r
-#include "regint.h"\r
-\r
-#define ONIGENC_IS_UNICODE_ISO_8859_1_CTYPE(code,ctype) \\r
-  ((EncUNICODE_ISO_8859_1_CtypeTable[code] & CTYPE_TO_BIT(ctype)) != 0)\r
-#if 0\r
-#define ONIGENC_IS_UNICODE_ISO_8859_1_BIT_CTYPE(code,cbit) \\r
-  ((EncUNICODE_ISO_8859_1_CtypeTable[code] & (cbit)) != 0)\r
-#endif\r
-\r
-static const unsigned short EncUNICODE_ISO_8859_1_CtypeTable[256] = {\r
-  0x4008, 0x4008, 0x4008, 0x4008, 0x4008, 0x4008, 0x4008, 0x4008,\r
-  0x4008, 0x428c, 0x4289, 0x4288, 0x4288, 0x4288, 0x4008, 0x4008,\r
-  0x4008, 0x4008, 0x4008, 0x4008, 0x4008, 0x4008, 0x4008, 0x4008,\r
-  0x4008, 0x4008, 0x4008, 0x4008, 0x4008, 0x4008, 0x4008, 0x4008,\r
-  0x4284, 0x41a0, 0x41a0, 0x41a0, 0x41a0, 0x41a0, 0x41a0, 0x41a0,\r
-  0x41a0, 0x41a0, 0x41a0, 0x41a0, 0x41a0, 0x41a0, 0x41a0, 0x41a0,\r
-  0x78b0, 0x78b0, 0x78b0, 0x78b0, 0x78b0, 0x78b0, 0x78b0, 0x78b0,\r
-  0x78b0, 0x78b0, 0x41a0, 0x41a0, 0x41a0, 0x41a0, 0x41a0, 0x41a0,\r
-  0x41a0, 0x7ca2, 0x7ca2, 0x7ca2, 0x7ca2, 0x7ca2, 0x7ca2, 0x74a2,\r
-  0x74a2, 0x74a2, 0x74a2, 0x74a2, 0x74a2, 0x74a2, 0x74a2, 0x74a2,\r
-  0x74a2, 0x74a2, 0x74a2, 0x74a2, 0x74a2, 0x74a2, 0x74a2, 0x74a2,\r
-  0x74a2, 0x74a2, 0x74a2, 0x41a0, 0x41a0, 0x41a0, 0x41a0, 0x51a0,\r
-  0x41a0, 0x78e2, 0x78e2, 0x78e2, 0x78e2, 0x78e2, 0x78e2, 0x70e2,\r
-  0x70e2, 0x70e2, 0x70e2, 0x70e2, 0x70e2, 0x70e2, 0x70e2, 0x70e2,\r
-  0x70e2, 0x70e2, 0x70e2, 0x70e2, 0x70e2, 0x70e2, 0x70e2, 0x70e2,\r
-  0x70e2, 0x70e2, 0x70e2, 0x41a0, 0x41a0, 0x41a0, 0x41a0, 0x4008,\r
-  0x0008, 0x0008, 0x0008, 0x0008, 0x0008, 0x0288, 0x0008, 0x0008,\r
-  0x0008, 0x0008, 0x0008, 0x0008, 0x0008, 0x0008, 0x0008, 0x0008,\r
-  0x0008, 0x0008, 0x0008, 0x0008, 0x0008, 0x0008, 0x0008, 0x0008,\r
-  0x0008, 0x0008, 0x0008, 0x0008, 0x0008, 0x0008, 0x0008, 0x0008,\r
-  0x0284, 0x01a0, 0x00a0, 0x00a0, 0x00a0, 0x00a0, 0x00a0, 0x00a0,\r
-  0x00a0, 0x00a0, 0x30e2, 0x01a0, 0x00a0, 0x00a8, 0x00a0, 0x00a0,\r
-  0x00a0, 0x00a0, 0x10a0, 0x10a0, 0x00a0, 0x30e2, 0x00a0, 0x01a0,\r
-  0x00a0, 0x10a0, 0x30e2, 0x01a0, 0x10a0, 0x10a0, 0x10a0, 0x01a0,\r
-  0x34a2, 0x34a2, 0x34a2, 0x34a2, 0x34a2, 0x34a2, 0x34a2, 0x34a2,\r
-  0x34a2, 0x34a2, 0x34a2, 0x34a2, 0x34a2, 0x34a2, 0x34a2, 0x34a2,\r
-  0x34a2, 0x34a2, 0x34a2, 0x34a2, 0x34a2, 0x34a2, 0x34a2, 0x00a0,\r
-  0x34a2, 0x34a2, 0x34a2, 0x34a2, 0x34a2, 0x34a2, 0x34a2, 0x30e2,\r
-  0x30e2, 0x30e2, 0x30e2, 0x30e2, 0x30e2, 0x30e2, 0x30e2, 0x30e2,\r
-  0x30e2, 0x30e2, 0x30e2, 0x30e2, 0x30e2, 0x30e2, 0x30e2, 0x30e2,\r
-  0x30e2, 0x30e2, 0x30e2, 0x30e2, 0x30e2, 0x30e2, 0x30e2, 0x00a0,\r
-  0x30e2, 0x30e2, 0x30e2, 0x30e2, 0x30e2, 0x30e2, 0x30e2, 0x30e2\r
-};\r
-\r
-/* 'NEWLINE' */\r
-static const OnigCodePoint CR_NEWLINE[] = {\r
-  1,\r
-  0x000a, 0x000a\r
-}; /* CR_NEWLINE */\r
-\r
-/* 'Alpha': [[:Alpha:]] */\r
-static const OnigCodePoint CR_Alpha[] = {\r
-  418,\r
-  0x0041, 0x005a,\r
-  0x0061, 0x007a,\r
-  0x00aa, 0x00aa,\r
-  0x00b5, 0x00b5,\r
-  0x00ba, 0x00ba,\r
-  0x00c0, 0x00d6,\r
-  0x00d8, 0x00f6,\r
-  0x00f8, 0x0241,\r
-  0x0250, 0x02c1,\r
-  0x02c6, 0x02d1,\r
-  0x02e0, 0x02e4,\r
-  0x02ee, 0x02ee,\r
-  0x0300, 0x036f,\r
-  0x037a, 0x037a,\r
-  0x0386, 0x0386,\r
-  0x0388, 0x038a,\r
-  0x038c, 0x038c,\r
-  0x038e, 0x03a1,\r
-  0x03a3, 0x03ce,\r
-  0x03d0, 0x03f5,\r
-  0x03f7, 0x0481,\r
-  0x0483, 0x0486,\r
-  0x0488, 0x04ce,\r
-  0x04d0, 0x04f9,\r
-  0x0500, 0x050f,\r
-  0x0531, 0x0556,\r
-  0x0559, 0x0559,\r
-  0x0561, 0x0587,\r
-  0x0591, 0x05b9,\r
-  0x05bb, 0x05bd,\r
-  0x05bf, 0x05bf,\r
-  0x05c1, 0x05c2,\r
-  0x05c4, 0x05c5,\r
-  0x05c7, 0x05c7,\r
-  0x05d0, 0x05ea,\r
-  0x05f0, 0x05f2,\r
-  0x0610, 0x0615,\r
-  0x0621, 0x063a,\r
-  0x0640, 0x065e,\r
-  0x066e, 0x06d3,\r
-  0x06d5, 0x06dc,\r
-  0x06de, 0x06e8,\r
-  0x06ea, 0x06ef,\r
-  0x06fa, 0x06fc,\r
-  0x06ff, 0x06ff,\r
-  0x0710, 0x074a,\r
-  0x074d, 0x076d,\r
-  0x0780, 0x07b1,\r
-  0x0901, 0x0939,\r
-  0x093c, 0x094d,\r
-  0x0950, 0x0954,\r
-  0x0958, 0x0963,\r
-  0x097d, 0x097d,\r
-  0x0981, 0x0983,\r
-  0x0985, 0x098c,\r
-  0x098f, 0x0990,\r
-  0x0993, 0x09a8,\r
-  0x09aa, 0x09b0,\r
-  0x09b2, 0x09b2,\r
-  0x09b6, 0x09b9,\r
-  0x09bc, 0x09c4,\r
-  0x09c7, 0x09c8,\r
-  0x09cb, 0x09ce,\r
-  0x09d7, 0x09d7,\r
-  0x09dc, 0x09dd,\r
-  0x09df, 0x09e3,\r
-  0x09f0, 0x09f1,\r
-  0x0a01, 0x0a03,\r
-  0x0a05, 0x0a0a,\r
-  0x0a0f, 0x0a10,\r
-  0x0a13, 0x0a28,\r
-  0x0a2a, 0x0a30,\r
-  0x0a32, 0x0a33,\r
-  0x0a35, 0x0a36,\r
-  0x0a38, 0x0a39,\r
-  0x0a3c, 0x0a3c,\r
-  0x0a3e, 0x0a42,\r
-  0x0a47, 0x0a48,\r
-  0x0a4b, 0x0a4d,\r
-  0x0a59, 0x0a5c,\r
-  0x0a5e, 0x0a5e,\r
-  0x0a70, 0x0a74,\r
-  0x0a81, 0x0a83,\r
-  0x0a85, 0x0a8d,\r
-  0x0a8f, 0x0a91,\r
-  0x0a93, 0x0aa8,\r
-  0x0aaa, 0x0ab0,\r
-  0x0ab2, 0x0ab3,\r
-  0x0ab5, 0x0ab9,\r
-  0x0abc, 0x0ac5,\r
-  0x0ac7, 0x0ac9,\r
-  0x0acb, 0x0acd,\r
-  0x0ad0, 0x0ad0,\r
-  0x0ae0, 0x0ae3,\r
-  0x0b01, 0x0b03,\r
-  0x0b05, 0x0b0c,\r
-  0x0b0f, 0x0b10,\r
-  0x0b13, 0x0b28,\r
-  0x0b2a, 0x0b30,\r
-  0x0b32, 0x0b33,\r
-  0x0b35, 0x0b39,\r
-  0x0b3c, 0x0b43,\r
-  0x0b47, 0x0b48,\r
-  0x0b4b, 0x0b4d,\r
-  0x0b56, 0x0b57,\r
-  0x0b5c, 0x0b5d,\r
-  0x0b5f, 0x0b61,\r
-  0x0b71, 0x0b71,\r
-  0x0b82, 0x0b83,\r
-  0x0b85, 0x0b8a,\r
-  0x0b8e, 0x0b90,\r
-  0x0b92, 0x0b95,\r
-  0x0b99, 0x0b9a,\r
-  0x0b9c, 0x0b9c,\r
-  0x0b9e, 0x0b9f,\r
-  0x0ba3, 0x0ba4,\r
-  0x0ba8, 0x0baa,\r
-  0x0bae, 0x0bb9,\r
-  0x0bbe, 0x0bc2,\r
-  0x0bc6, 0x0bc8,\r
-  0x0bca, 0x0bcd,\r
-  0x0bd7, 0x0bd7,\r
-  0x0c01, 0x0c03,\r
-  0x0c05, 0x0c0c,\r
-  0x0c0e, 0x0c10,\r
-  0x0c12, 0x0c28,\r
-  0x0c2a, 0x0c33,\r
-  0x0c35, 0x0c39,\r
-  0x0c3e, 0x0c44,\r
-  0x0c46, 0x0c48,\r
-  0x0c4a, 0x0c4d,\r
-  0x0c55, 0x0c56,\r
-  0x0c60, 0x0c61,\r
-  0x0c82, 0x0c83,\r
-  0x0c85, 0x0c8c,\r
-  0x0c8e, 0x0c90,\r
-  0x0c92, 0x0ca8,\r
-  0x0caa, 0x0cb3,\r
-  0x0cb5, 0x0cb9,\r
-  0x0cbc, 0x0cc4,\r
-  0x0cc6, 0x0cc8,\r
-  0x0cca, 0x0ccd,\r
-  0x0cd5, 0x0cd6,\r
-  0x0cde, 0x0cde,\r
-  0x0ce0, 0x0ce1,\r
-  0x0d02, 0x0d03,\r
-  0x0d05, 0x0d0c,\r
-  0x0d0e, 0x0d10,\r
-  0x0d12, 0x0d28,\r
-  0x0d2a, 0x0d39,\r
-  0x0d3e, 0x0d43,\r
-  0x0d46, 0x0d48,\r
-  0x0d4a, 0x0d4d,\r
-  0x0d57, 0x0d57,\r
-  0x0d60, 0x0d61,\r
-  0x0d82, 0x0d83,\r
-  0x0d85, 0x0d96,\r
-  0x0d9a, 0x0db1,\r
-  0x0db3, 0x0dbb,\r
-  0x0dbd, 0x0dbd,\r
-  0x0dc0, 0x0dc6,\r
-  0x0dca, 0x0dca,\r
-  0x0dcf, 0x0dd4,\r
-  0x0dd6, 0x0dd6,\r
-  0x0dd8, 0x0ddf,\r
-  0x0df2, 0x0df3,\r
-  0x0e01, 0x0e3a,\r
-  0x0e40, 0x0e4e,\r
-  0x0e81, 0x0e82,\r
-  0x0e84, 0x0e84,\r
-  0x0e87, 0x0e88,\r
-  0x0e8a, 0x0e8a,\r
-  0x0e8d, 0x0e8d,\r
-  0x0e94, 0x0e97,\r
-  0x0e99, 0x0e9f,\r
-  0x0ea1, 0x0ea3,\r
-  0x0ea5, 0x0ea5,\r
-  0x0ea7, 0x0ea7,\r
-  0x0eaa, 0x0eab,\r
-  0x0ead, 0x0eb9,\r
-  0x0ebb, 0x0ebd,\r
-  0x0ec0, 0x0ec4,\r
-  0x0ec6, 0x0ec6,\r
-  0x0ec8, 0x0ecd,\r
-  0x0edc, 0x0edd,\r
-  0x0f00, 0x0f00,\r
-  0x0f18, 0x0f19,\r
-  0x0f35, 0x0f35,\r
-  0x0f37, 0x0f37,\r
-  0x0f39, 0x0f39,\r
-  0x0f3e, 0x0f47,\r
-  0x0f49, 0x0f6a,\r
-  0x0f71, 0x0f84,\r
-  0x0f86, 0x0f8b,\r
-  0x0f90, 0x0f97,\r
-  0x0f99, 0x0fbc,\r
-  0x0fc6, 0x0fc6,\r
-  0x1000, 0x1021,\r
-  0x1023, 0x1027,\r
-  0x1029, 0x102a,\r
-  0x102c, 0x1032,\r
-  0x1036, 0x1039,\r
-  0x1050, 0x1059,\r
-  0x10a0, 0x10c5,\r
-  0x10d0, 0x10fa,\r
-  0x10fc, 0x10fc,\r
-  0x1100, 0x1159,\r
-  0x115f, 0x11a2,\r
-  0x11a8, 0x11f9,\r
-  0x1200, 0x1248,\r
-  0x124a, 0x124d,\r
-  0x1250, 0x1256,\r
-  0x1258, 0x1258,\r
-  0x125a, 0x125d,\r
-  0x1260, 0x1288,\r
-  0x128a, 0x128d,\r
-  0x1290, 0x12b0,\r
-  0x12b2, 0x12b5,\r
-  0x12b8, 0x12be,\r
-  0x12c0, 0x12c0,\r
-  0x12c2, 0x12c5,\r
-  0x12c8, 0x12d6,\r
-  0x12d8, 0x1310,\r
-  0x1312, 0x1315,\r
-  0x1318, 0x135a,\r
-  0x135f, 0x135f,\r
-  0x1380, 0x138f,\r
-  0x13a0, 0x13f4,\r
-  0x1401, 0x166c,\r
-  0x166f, 0x1676,\r
-  0x1681, 0x169a,\r
-  0x16a0, 0x16ea,\r
-  0x1700, 0x170c,\r
-  0x170e, 0x1714,\r
-  0x1720, 0x1734,\r
-  0x1740, 0x1753,\r
-  0x1760, 0x176c,\r
-  0x176e, 0x1770,\r
-  0x1772, 0x1773,\r
-  0x1780, 0x17b3,\r
-  0x17b6, 0x17d3,\r
-  0x17d7, 0x17d7,\r
-  0x17dc, 0x17dd,\r
-  0x180b, 0x180d,\r
-  0x1820, 0x1877,\r
-  0x1880, 0x18a9,\r
-  0x1900, 0x191c,\r
-  0x1920, 0x192b,\r
-  0x1930, 0x193b,\r
-  0x1950, 0x196d,\r
-  0x1970, 0x1974,\r
-  0x1980, 0x19a9,\r
-  0x19b0, 0x19c9,\r
-  0x1a00, 0x1a1b,\r
-  0x1d00, 0x1dc3,\r
-  0x1e00, 0x1e9b,\r
-  0x1ea0, 0x1ef9,\r
-  0x1f00, 0x1f15,\r
-  0x1f18, 0x1f1d,\r
-  0x1f20, 0x1f45,\r
-  0x1f48, 0x1f4d,\r
-  0x1f50, 0x1f57,\r
-  0x1f59, 0x1f59,\r
-  0x1f5b, 0x1f5b,\r
-  0x1f5d, 0x1f5d,\r
-  0x1f5f, 0x1f7d,\r
-  0x1f80, 0x1fb4,\r
-  0x1fb6, 0x1fbc,\r
-  0x1fbe, 0x1fbe,\r
-  0x1fc2, 0x1fc4,\r
-  0x1fc6, 0x1fcc,\r
-  0x1fd0, 0x1fd3,\r
-  0x1fd6, 0x1fdb,\r
-  0x1fe0, 0x1fec,\r
-  0x1ff2, 0x1ff4,\r
-  0x1ff6, 0x1ffc,\r
-  0x2071, 0x2071,\r
-  0x207f, 0x207f,\r
-  0x2090, 0x2094,\r
-  0x20d0, 0x20eb,\r
-  0x2102, 0x2102,\r
-  0x2107, 0x2107,\r
-  0x210a, 0x2113,\r
-  0x2115, 0x2115,\r
-  0x2119, 0x211d,\r
-  0x2124, 0x2124,\r
-  0x2126, 0x2126,\r
-  0x2128, 0x2128,\r
-  0x212a, 0x212d,\r
-  0x212f, 0x2131,\r
-  0x2133, 0x2139,\r
-  0x213c, 0x213f,\r
-  0x2145, 0x2149,\r
-  0x2c00, 0x2c2e,\r
-  0x2c30, 0x2c5e,\r
-  0x2c80, 0x2ce4,\r
-  0x2d00, 0x2d25,\r
-  0x2d30, 0x2d65,\r
-  0x2d6f, 0x2d6f,\r
-  0x2d80, 0x2d96,\r
-  0x2da0, 0x2da6,\r
-  0x2da8, 0x2dae,\r
-  0x2db0, 0x2db6,\r
-  0x2db8, 0x2dbe,\r
-  0x2dc0, 0x2dc6,\r
-  0x2dc8, 0x2dce,\r
-  0x2dd0, 0x2dd6,\r
-  0x2dd8, 0x2dde,\r
-  0x3005, 0x3006,\r
-  0x302a, 0x302f,\r
-  0x3031, 0x3035,\r
-  0x303b, 0x303c,\r
-  0x3041, 0x3096,\r
-  0x3099, 0x309a,\r
-  0x309d, 0x309f,\r
-  0x30a1, 0x30fa,\r
-  0x30fc, 0x30ff,\r
-  0x3105, 0x312c,\r
-  0x3131, 0x318e,\r
-  0x31a0, 0x31b7,\r
-  0x31f0, 0x31ff,\r
-  0x3400, 0x4db5,\r
-  0x4e00, 0x9fbb,\r
-  0xa000, 0xa48c,\r
-  0xa800, 0xa827,\r
-  0xac00, 0xd7a3,\r
-  0xf900, 0xfa2d,\r
-  0xfa30, 0xfa6a,\r
-  0xfa70, 0xfad9,\r
-  0xfb00, 0xfb06,\r
-  0xfb13, 0xfb17,\r
-  0xfb1d, 0xfb28,\r
-  0xfb2a, 0xfb36,\r
-  0xfb38, 0xfb3c,\r
-  0xfb3e, 0xfb3e,\r
-  0xfb40, 0xfb41,\r
-  0xfb43, 0xfb44,\r
-  0xfb46, 0xfbb1,\r
-  0xfbd3, 0xfd3d,\r
-  0xfd50, 0xfd8f,\r
-  0xfd92, 0xfdc7,\r
-  0xfdf0, 0xfdfb,\r
-  0xfe00, 0xfe0f,\r
-  0xfe20, 0xfe23,\r
-  0xfe70, 0xfe74,\r
-  0xfe76, 0xfefc,\r
-  0xff21, 0xff3a,\r
-  0xff41, 0xff5a,\r
-  0xff66, 0xffbe,\r
-  0xffc2, 0xffc7,\r
-  0xffca, 0xffcf,\r
-  0xffd2, 0xffd7,\r
-  0xffda, 0xffdc,\r
-  0x10000, 0x1000b,\r
-  0x1000d, 0x10026,\r
-  0x10028, 0x1003a,\r
-  0x1003c, 0x1003d,\r
-  0x1003f, 0x1004d,\r
-  0x10050, 0x1005d,\r
-  0x10080, 0x100fa,\r
-  0x10300, 0x1031e,\r
-  0x10330, 0x10349,\r
-  0x10380, 0x1039d,\r
-  0x103a0, 0x103c3,\r
-  0x103c8, 0x103cf,\r
-  0x10400, 0x1049d,\r
-  0x10800, 0x10805,\r
-  0x10808, 0x10808,\r
-  0x1080a, 0x10835,\r
-  0x10837, 0x10838,\r
-  0x1083c, 0x1083c,\r
-  0x1083f, 0x1083f,\r
-  0x10a00, 0x10a03,\r
-  0x10a05, 0x10a06,\r
-  0x10a0c, 0x10a13,\r
-  0x10a15, 0x10a17,\r
-  0x10a19, 0x10a33,\r
-  0x10a38, 0x10a3a,\r
-  0x10a3f, 0x10a3f,\r
-  0x1d165, 0x1d169,\r
-  0x1d16d, 0x1d172,\r
-  0x1d17b, 0x1d182,\r
-  0x1d185, 0x1d18b,\r
-  0x1d1aa, 0x1d1ad,\r
-  0x1d242, 0x1d244,\r
-  0x1d400, 0x1d454,\r
-  0x1d456, 0x1d49c,\r
-  0x1d49e, 0x1d49f,\r
-  0x1d4a2, 0x1d4a2,\r
-  0x1d4a5, 0x1d4a6,\r
-  0x1d4a9, 0x1d4ac,\r
-  0x1d4ae, 0x1d4b9,\r
-  0x1d4bb, 0x1d4bb,\r
-  0x1d4bd, 0x1d4c3,\r
-  0x1d4c5, 0x1d505,\r
-  0x1d507, 0x1d50a,\r
-  0x1d50d, 0x1d514,\r
-  0x1d516, 0x1d51c,\r
-  0x1d51e, 0x1d539,\r
-  0x1d53b, 0x1d53e,\r
-  0x1d540, 0x1d544,\r
-  0x1d546, 0x1d546,\r
-  0x1d54a, 0x1d550,\r
-  0x1d552, 0x1d6a5,\r
-  0x1d6a8, 0x1d6c0,\r
-  0x1d6c2, 0x1d6da,\r
-  0x1d6dc, 0x1d6fa,\r
-  0x1d6fc, 0x1d714,\r
-  0x1d716, 0x1d734,\r
-  0x1d736, 0x1d74e,\r
-  0x1d750, 0x1d76e,\r
-  0x1d770, 0x1d788,\r
-  0x1d78a, 0x1d7a8,\r
-  0x1d7aa, 0x1d7c2,\r
-  0x1d7c4, 0x1d7c9,\r
-  0x20000, 0x2a6d6,\r
-  0x2f800, 0x2fa1d,\r
-  0xe0100, 0xe01ef\r
-}; /* CR_Alpha */\r
-\r
-/* 'Blank': [[:Blank:]] */\r
-static const OnigCodePoint CR_Blank[] = {\r
-  9,\r
-  0x0009, 0x0009,\r
-  0x0020, 0x0020,\r
-  0x00a0, 0x00a0,\r
-  0x1680, 0x1680,\r
-  0x180e, 0x180e,\r
-  0x2000, 0x200a,\r
-  0x202f, 0x202f,\r
-  0x205f, 0x205f,\r
-  0x3000, 0x3000\r
-}; /* CR_Blank */\r
-\r
-/* 'Cntrl': [[:Cntrl:]] */\r
-static const OnigCodePoint CR_Cntrl[] = {\r
-  19,\r
-  0x0000, 0x001f,\r
-  0x007f, 0x009f,\r
-  0x00ad, 0x00ad,\r
-  0x0600, 0x0603,\r
-  0x06dd, 0x06dd,\r
-  0x070f, 0x070f,\r
-  0x17b4, 0x17b5,\r
-  0x200b, 0x200f,\r
-  0x202a, 0x202e,\r
-  0x2060, 0x2063,\r
-  0x206a, 0x206f,\r
-  0xd800, 0xf8ff,\r
-  0xfeff, 0xfeff,\r
-  0xfff9, 0xfffb,\r
-  0x1d173, 0x1d17a,\r
-  0xe0001, 0xe0001,\r
-  0xe0020, 0xe007f,\r
-  0xf0000, 0xffffd,\r
-  0x100000, 0x10fffd\r
-}; /* CR_Cntrl */\r
-\r
-/* 'Digit': [[:Digit:]] */\r
-static const OnigCodePoint CR_Digit[] = {\r
-  23,\r
-  0x0030, 0x0039,\r
-  0x0660, 0x0669,\r
-  0x06f0, 0x06f9,\r
-  0x0966, 0x096f,\r
-  0x09e6, 0x09ef,\r
-  0x0a66, 0x0a6f,\r
-  0x0ae6, 0x0aef,\r
-  0x0b66, 0x0b6f,\r
-  0x0be6, 0x0bef,\r
-  0x0c66, 0x0c6f,\r
-  0x0ce6, 0x0cef,\r
-  0x0d66, 0x0d6f,\r
-  0x0e50, 0x0e59,\r
-  0x0ed0, 0x0ed9,\r
-  0x0f20, 0x0f29,\r
-  0x1040, 0x1049,\r
-  0x17e0, 0x17e9,\r
-  0x1810, 0x1819,\r
-  0x1946, 0x194f,\r
-  0x19d0, 0x19d9,\r
-  0xff10, 0xff19,\r
-  0x104a0, 0x104a9,\r
-  0x1d7ce, 0x1d7ff\r
-}; /* CR_Digit */\r
-\r
-/* 'Graph': [[:Graph:]] */\r
-static const OnigCodePoint CR_Graph[] = {\r
-  424,\r
-  0x0021, 0x007e,\r
-  0x00a1, 0x0241,\r
-  0x0250, 0x036f,\r
-  0x0374, 0x0375,\r
-  0x037a, 0x037a,\r
-  0x037e, 0x037e,\r
-  0x0384, 0x038a,\r
-  0x038c, 0x038c,\r
-  0x038e, 0x03a1,\r
-  0x03a3, 0x03ce,\r
-  0x03d0, 0x0486,\r
-  0x0488, 0x04ce,\r
-  0x04d0, 0x04f9,\r
-  0x0500, 0x050f,\r
-  0x0531, 0x0556,\r
-  0x0559, 0x055f,\r
-  0x0561, 0x0587,\r
-  0x0589, 0x058a,\r
-  0x0591, 0x05b9,\r
-  0x05bb, 0x05c7,\r
-  0x05d0, 0x05ea,\r
-  0x05f0, 0x05f4,\r
-  0x0600, 0x0603,\r
-  0x060b, 0x0615,\r
-  0x061b, 0x061b,\r
-  0x061e, 0x061f,\r
-  0x0621, 0x063a,\r
-  0x0640, 0x065e,\r
-  0x0660, 0x070d,\r
-  0x070f, 0x074a,\r
-  0x074d, 0x076d,\r
-  0x0780, 0x07b1,\r
-  0x0901, 0x0939,\r
-  0x093c, 0x094d,\r
-  0x0950, 0x0954,\r
-  0x0958, 0x0970,\r
-  0x097d, 0x097d,\r
-  0x0981, 0x0983,\r
-  0x0985, 0x098c,\r
-  0x098f, 0x0990,\r
-  0x0993, 0x09a8,\r
-  0x09aa, 0x09b0,\r
-  0x09b2, 0x09b2,\r
-  0x09b6, 0x09b9,\r
-  0x09bc, 0x09c4,\r
-  0x09c7, 0x09c8,\r
-  0x09cb, 0x09ce,\r
-  0x09d7, 0x09d7,\r
-  0x09dc, 0x09dd,\r
-  0x09df, 0x09e3,\r
-  0x09e6, 0x09fa,\r
-  0x0a01, 0x0a03,\r
-  0x0a05, 0x0a0a,\r
-  0x0a0f, 0x0a10,\r
-  0x0a13, 0x0a28,\r
-  0x0a2a, 0x0a30,\r
-  0x0a32, 0x0a33,\r
-  0x0a35, 0x0a36,\r
-  0x0a38, 0x0a39,\r
-  0x0a3c, 0x0a3c,\r
-  0x0a3e, 0x0a42,\r
-  0x0a47, 0x0a48,\r
-  0x0a4b, 0x0a4d,\r
-  0x0a59, 0x0a5c,\r
-  0x0a5e, 0x0a5e,\r
-  0x0a66, 0x0a74,\r
-  0x0a81, 0x0a83,\r
-  0x0a85, 0x0a8d,\r
-  0x0a8f, 0x0a91,\r
-  0x0a93, 0x0aa8,\r
-  0x0aaa, 0x0ab0,\r
-  0x0ab2, 0x0ab3,\r
-  0x0ab5, 0x0ab9,\r
-  0x0abc, 0x0ac5,\r
-  0x0ac7, 0x0ac9,\r
-  0x0acb, 0x0acd,\r
-  0x0ad0, 0x0ad0,\r
-  0x0ae0, 0x0ae3,\r
-  0x0ae6, 0x0aef,\r
-  0x0af1, 0x0af1,\r
-  0x0b01, 0x0b03,\r
-  0x0b05, 0x0b0c,\r
-  0x0b0f, 0x0b10,\r
-  0x0b13, 0x0b28,\r
-  0x0b2a, 0x0b30,\r
-  0x0b32, 0x0b33,\r
-  0x0b35, 0x0b39,\r
-  0x0b3c, 0x0b43,\r
-  0x0b47, 0x0b48,\r
-  0x0b4b, 0x0b4d,\r
-  0x0b56, 0x0b57,\r
-  0x0b5c, 0x0b5d,\r
-  0x0b5f, 0x0b61,\r
-  0x0b66, 0x0b71,\r
-  0x0b82, 0x0b83,\r
-  0x0b85, 0x0b8a,\r
-  0x0b8e, 0x0b90,\r
-  0x0b92, 0x0b95,\r
-  0x0b99, 0x0b9a,\r
-  0x0b9c, 0x0b9c,\r
-  0x0b9e, 0x0b9f,\r
-  0x0ba3, 0x0ba4,\r
-  0x0ba8, 0x0baa,\r
-  0x0bae, 0x0bb9,\r
-  0x0bbe, 0x0bc2,\r
-  0x0bc6, 0x0bc8,\r
-  0x0bca, 0x0bcd,\r
-  0x0bd7, 0x0bd7,\r
-  0x0be6, 0x0bfa,\r
-  0x0c01, 0x0c03,\r
-  0x0c05, 0x0c0c,\r
-  0x0c0e, 0x0c10,\r
-  0x0c12, 0x0c28,\r
-  0x0c2a, 0x0c33,\r
-  0x0c35, 0x0c39,\r
-  0x0c3e, 0x0c44,\r
-  0x0c46, 0x0c48,\r
-  0x0c4a, 0x0c4d,\r
-  0x0c55, 0x0c56,\r
-  0x0c60, 0x0c61,\r
-  0x0c66, 0x0c6f,\r
-  0x0c82, 0x0c83,\r
-  0x0c85, 0x0c8c,\r
-  0x0c8e, 0x0c90,\r
-  0x0c92, 0x0ca8,\r
-  0x0caa, 0x0cb3,\r
-  0x0cb5, 0x0cb9,\r
-  0x0cbc, 0x0cc4,\r
-  0x0cc6, 0x0cc8,\r
-  0x0cca, 0x0ccd,\r
-  0x0cd5, 0x0cd6,\r
-  0x0cde, 0x0cde,\r
-  0x0ce0, 0x0ce1,\r
-  0x0ce6, 0x0cef,\r
-  0x0d02, 0x0d03,\r
-  0x0d05, 0x0d0c,\r
-  0x0d0e, 0x0d10,\r
-  0x0d12, 0x0d28,\r
-  0x0d2a, 0x0d39,\r
-  0x0d3e, 0x0d43,\r
-  0x0d46, 0x0d48,\r
-  0x0d4a, 0x0d4d,\r
-  0x0d57, 0x0d57,\r
-  0x0d60, 0x0d61,\r
-  0x0d66, 0x0d6f,\r
-  0x0d82, 0x0d83,\r
-  0x0d85, 0x0d96,\r
-  0x0d9a, 0x0db1,\r
-  0x0db3, 0x0dbb,\r
-  0x0dbd, 0x0dbd,\r
-  0x0dc0, 0x0dc6,\r
-  0x0dca, 0x0dca,\r
-  0x0dcf, 0x0dd4,\r
-  0x0dd6, 0x0dd6,\r
-  0x0dd8, 0x0ddf,\r
-  0x0df2, 0x0df4,\r
-  0x0e01, 0x0e3a,\r
-  0x0e3f, 0x0e5b,\r
-  0x0e81, 0x0e82,\r
-  0x0e84, 0x0e84,\r
-  0x0e87, 0x0e88,\r
-  0x0e8a, 0x0e8a,\r
-  0x0e8d, 0x0e8d,\r
-  0x0e94, 0x0e97,\r
-  0x0e99, 0x0e9f,\r
-  0x0ea1, 0x0ea3,\r
-  0x0ea5, 0x0ea5,\r
-  0x0ea7, 0x0ea7,\r
-  0x0eaa, 0x0eab,\r
-  0x0ead, 0x0eb9,\r
-  0x0ebb, 0x0ebd,\r
-  0x0ec0, 0x0ec4,\r
-  0x0ec6, 0x0ec6,\r
-  0x0ec8, 0x0ecd,\r
-  0x0ed0, 0x0ed9,\r
-  0x0edc, 0x0edd,\r
-  0x0f00, 0x0f47,\r
-  0x0f49, 0x0f6a,\r
-  0x0f71, 0x0f8b,\r
-  0x0f90, 0x0f97,\r
-  0x0f99, 0x0fbc,\r
-  0x0fbe, 0x0fcc,\r
-  0x0fcf, 0x0fd1,\r
-  0x1000, 0x1021,\r
-  0x1023, 0x1027,\r
-  0x1029, 0x102a,\r
-  0x102c, 0x1032,\r
-  0x1036, 0x1039,\r
-  0x1040, 0x1059,\r
-  0x10a0, 0x10c5,\r
-  0x10d0, 0x10fc,\r
-  0x1100, 0x1159,\r
-  0x115f, 0x11a2,\r
-  0x11a8, 0x11f9,\r
-  0x1200, 0x1248,\r
-  0x124a, 0x124d,\r
-  0x1250, 0x1256,\r
-  0x1258, 0x1258,\r
-  0x125a, 0x125d,\r
-  0x1260, 0x1288,\r
-  0x128a, 0x128d,\r
-  0x1290, 0x12b0,\r
-  0x12b2, 0x12b5,\r
-  0x12b8, 0x12be,\r
-  0x12c0, 0x12c0,\r
-  0x12c2, 0x12c5,\r
-  0x12c8, 0x12d6,\r
-  0x12d8, 0x1310,\r
-  0x1312, 0x1315,\r
-  0x1318, 0x135a,\r
-  0x135f, 0x137c,\r
-  0x1380, 0x1399,\r
-  0x13a0, 0x13f4,\r
-  0x1401, 0x1676,\r
-  0x1681, 0x169c,\r
-  0x16a0, 0x16f0,\r
-  0x1700, 0x170c,\r
-  0x170e, 0x1714,\r
-  0x1720, 0x1736,\r
-  0x1740, 0x1753,\r
-  0x1760, 0x176c,\r
-  0x176e, 0x1770,\r
-  0x1772, 0x1773,\r
-  0x1780, 0x17dd,\r
-  0x17e0, 0x17e9,\r
-  0x17f0, 0x17f9,\r
-  0x1800, 0x180d,\r
-  0x1810, 0x1819,\r
-  0x1820, 0x1877,\r
-  0x1880, 0x18a9,\r
-  0x1900, 0x191c,\r
-  0x1920, 0x192b,\r
-  0x1930, 0x193b,\r
-  0x1940, 0x1940,\r
-  0x1944, 0x196d,\r
-  0x1970, 0x1974,\r
-  0x1980, 0x19a9,\r
-  0x19b0, 0x19c9,\r
-  0x19d0, 0x19d9,\r
-  0x19de, 0x1a1b,\r
-  0x1a1e, 0x1a1f,\r
-  0x1d00, 0x1dc3,\r
-  0x1e00, 0x1e9b,\r
-  0x1ea0, 0x1ef9,\r
-  0x1f00, 0x1f15,\r
-  0x1f18, 0x1f1d,\r
-  0x1f20, 0x1f45,\r
-  0x1f48, 0x1f4d,\r
-  0x1f50, 0x1f57,\r
-  0x1f59, 0x1f59,\r
-  0x1f5b, 0x1f5b,\r
-  0x1f5d, 0x1f5d,\r
-  0x1f5f, 0x1f7d,\r
-  0x1f80, 0x1fb4,\r
-  0x1fb6, 0x1fc4,\r
-  0x1fc6, 0x1fd3,\r
-  0x1fd6, 0x1fdb,\r
-  0x1fdd, 0x1fef,\r
-  0x1ff2, 0x1ff4,\r
-  0x1ff6, 0x1ffe,\r
-  0x200b, 0x2027,\r
-  0x202a, 0x202e,\r
-  0x2030, 0x205e,\r
-  0x2060, 0x2063,\r
-  0x206a, 0x2071,\r
-  0x2074, 0x208e,\r
-  0x2090, 0x2094,\r
-  0x20a0, 0x20b5,\r
-  0x20d0, 0x20eb,\r
-  0x2100, 0x214c,\r
-  0x2153, 0x2183,\r
-  0x2190, 0x23db,\r
-  0x2400, 0x2426,\r
-  0x2440, 0x244a,\r
-  0x2460, 0x269c,\r
-  0x26a0, 0x26b1,\r
-  0x2701, 0x2704,\r
-  0x2706, 0x2709,\r
-  0x270c, 0x2727,\r
-  0x2729, 0x274b,\r
-  0x274d, 0x274d,\r
-  0x274f, 0x2752,\r
-  0x2756, 0x2756,\r
-  0x2758, 0x275e,\r
-  0x2761, 0x2794,\r
-  0x2798, 0x27af,\r
-  0x27b1, 0x27be,\r
-  0x27c0, 0x27c6,\r
-  0x27d0, 0x27eb,\r
-  0x27f0, 0x2b13,\r
-  0x2c00, 0x2c2e,\r
-  0x2c30, 0x2c5e,\r
-  0x2c80, 0x2cea,\r
-  0x2cf9, 0x2d25,\r
-  0x2d30, 0x2d65,\r
-  0x2d6f, 0x2d6f,\r
-  0x2d80, 0x2d96,\r
-  0x2da0, 0x2da6,\r
-  0x2da8, 0x2dae,\r
-  0x2db0, 0x2db6,\r
-  0x2db8, 0x2dbe,\r
-  0x2dc0, 0x2dc6,\r
-  0x2dc8, 0x2dce,\r
-  0x2dd0, 0x2dd6,\r
-  0x2dd8, 0x2dde,\r
-  0x2e00, 0x2e17,\r
-  0x2e1c, 0x2e1d,\r
-  0x2e80, 0x2e99,\r
-  0x2e9b, 0x2ef3,\r
-  0x2f00, 0x2fd5,\r
-  0x2ff0, 0x2ffb,\r
-  0x3001, 0x303f,\r
-  0x3041, 0x3096,\r
-  0x3099, 0x30ff,\r
-  0x3105, 0x312c,\r
-  0x3131, 0x318e,\r
-  0x3190, 0x31b7,\r
-  0x31c0, 0x31cf,\r
-  0x31f0, 0x321e,\r
-  0x3220, 0x3243,\r
-  0x3250, 0x32fe,\r
-  0x3300, 0x4db5,\r
-  0x4dc0, 0x9fbb,\r
-  0xa000, 0xa48c,\r
-  0xa490, 0xa4c6,\r
-  0xa700, 0xa716,\r
-  0xa800, 0xa82b,\r
-  0xac00, 0xd7a3,\r
-  0xe000, 0xfa2d,\r
-  0xfa30, 0xfa6a,\r
-  0xfa70, 0xfad9,\r
-  0xfb00, 0xfb06,\r
-  0xfb13, 0xfb17,\r
-  0xfb1d, 0xfb36,\r
-  0xfb38, 0xfb3c,\r
-  0xfb3e, 0xfb3e,\r
-  0xfb40, 0xfb41,\r
-  0xfb43, 0xfb44,\r
-  0xfb46, 0xfbb1,\r
-  0xfbd3, 0xfd3f,\r
-  0xfd50, 0xfd8f,\r
-  0xfd92, 0xfdc7,\r
-  0xfdf0, 0xfdfd,\r
-  0xfe00, 0xfe19,\r
-  0xfe20, 0xfe23,\r
-  0xfe30, 0xfe52,\r
-  0xfe54, 0xfe66,\r
-  0xfe68, 0xfe6b,\r
-  0xfe70, 0xfe74,\r
-  0xfe76, 0xfefc,\r
-  0xfeff, 0xfeff,\r
-  0xff01, 0xffbe,\r
-  0xffc2, 0xffc7,\r
-  0xffca, 0xffcf,\r
-  0xffd2, 0xffd7,\r
-  0xffda, 0xffdc,\r
-  0xffe0, 0xffe6,\r
-  0xffe8, 0xffee,\r
-  0xfff9, 0xfffd,\r
-  0x10000, 0x1000b,\r
-  0x1000d, 0x10026,\r
-  0x10028, 0x1003a,\r
-  0x1003c, 0x1003d,\r
-  0x1003f, 0x1004d,\r
-  0x10050, 0x1005d,\r
-  0x10080, 0x100fa,\r
-  0x10100, 0x10102,\r
-  0x10107, 0x10133,\r
-  0x10137, 0x1018a,\r
-  0x10300, 0x1031e,\r
-  0x10320, 0x10323,\r
-  0x10330, 0x1034a,\r
-  0x10380, 0x1039d,\r
-  0x1039f, 0x103c3,\r
-  0x103c8, 0x103d5,\r
-  0x10400, 0x1049d,\r
-  0x104a0, 0x104a9,\r
-  0x10800, 0x10805,\r
-  0x10808, 0x10808,\r
-  0x1080a, 0x10835,\r
-  0x10837, 0x10838,\r
-  0x1083c, 0x1083c,\r
-  0x1083f, 0x1083f,\r
-  0x10a00, 0x10a03,\r
-  0x10a05, 0x10a06,\r
-  0x10a0c, 0x10a13,\r
-  0x10a15, 0x10a17,\r
-  0x10a19, 0x10a33,\r
-  0x10a38, 0x10a3a,\r
-  0x10a3f, 0x10a47,\r
-  0x10a50, 0x10a58,\r
-  0x1d000, 0x1d0f5,\r
-  0x1d100, 0x1d126,\r
-  0x1d12a, 0x1d1dd,\r
-  0x1d200, 0x1d245,\r
-  0x1d300, 0x1d356,\r
-  0x1d400, 0x1d454,\r
-  0x1d456, 0x1d49c,\r
-  0x1d49e, 0x1d49f,\r
-  0x1d4a2, 0x1d4a2,\r
-  0x1d4a5, 0x1d4a6,\r
-  0x1d4a9, 0x1d4ac,\r
-  0x1d4ae, 0x1d4b9,\r
-  0x1d4bb, 0x1d4bb,\r
-  0x1d4bd, 0x1d4c3,\r
-  0x1d4c5, 0x1d505,\r
-  0x1d507, 0x1d50a,\r
-  0x1d50d, 0x1d514,\r
-  0x1d516, 0x1d51c,\r
-  0x1d51e, 0x1d539,\r
-  0x1d53b, 0x1d53e,\r
-  0x1d540, 0x1d544,\r
-  0x1d546, 0x1d546,\r
-  0x1d54a, 0x1d550,\r
-  0x1d552, 0x1d6a5,\r
-  0x1d6a8, 0x1d7c9,\r
-  0x1d7ce, 0x1d7ff,\r
-  0x20000, 0x2a6d6,\r
-  0x2f800, 0x2fa1d,\r
-  0xe0001, 0xe0001,\r
-  0xe0020, 0xe007f,\r
-  0xe0100, 0xe01ef,\r
-  0xf0000, 0xffffd,\r
-  0x100000, 0x10fffd\r
-}; /* CR_Graph */\r
-\r
-/* 'Lower': [[:Lower:]] */\r
-static const OnigCodePoint CR_Lower[] = {\r
-  480,\r
-  0x0061, 0x007a,\r
-  0x00aa, 0x00aa,\r
-  0x00b5, 0x00b5,\r
-  0x00ba, 0x00ba,\r
-  0x00df, 0x00f6,\r
-  0x00f8, 0x00ff,\r
-  0x0101, 0x0101,\r
-  0x0103, 0x0103,\r
-  0x0105, 0x0105,\r
-  0x0107, 0x0107,\r
-  0x0109, 0x0109,\r
-  0x010b, 0x010b,\r
-  0x010d, 0x010d,\r
-  0x010f, 0x010f,\r
-  0x0111, 0x0111,\r
-  0x0113, 0x0113,\r
-  0x0115, 0x0115,\r
-  0x0117, 0x0117,\r
-  0x0119, 0x0119,\r
-  0x011b, 0x011b,\r
-  0x011d, 0x011d,\r
-  0x011f, 0x011f,\r
-  0x0121, 0x0121,\r
-  0x0123, 0x0123,\r
-  0x0125, 0x0125,\r
-  0x0127, 0x0127,\r
-  0x0129, 0x0129,\r
-  0x012b, 0x012b,\r
-  0x012d, 0x012d,\r
-  0x012f, 0x012f,\r
-  0x0131, 0x0131,\r
-  0x0133, 0x0133,\r
-  0x0135, 0x0135,\r
-  0x0137, 0x0138,\r
-  0x013a, 0x013a,\r
-  0x013c, 0x013c,\r
-  0x013e, 0x013e,\r
-  0x0140, 0x0140,\r
-  0x0142, 0x0142,\r
-  0x0144, 0x0144,\r
-  0x0146, 0x0146,\r
-  0x0148, 0x0149,\r
-  0x014b, 0x014b,\r
-  0x014d, 0x014d,\r
-  0x014f, 0x014f,\r
-  0x0151, 0x0151,\r
-  0x0153, 0x0153,\r
-  0x0155, 0x0155,\r
-  0x0157, 0x0157,\r
-  0x0159, 0x0159,\r
-  0x015b, 0x015b,\r
-  0x015d, 0x015d,\r
-  0x015f, 0x015f,\r
-  0x0161, 0x0161,\r
-  0x0163, 0x0163,\r
-  0x0165, 0x0165,\r
-  0x0167, 0x0167,\r
-  0x0169, 0x0169,\r
-  0x016b, 0x016b,\r
-  0x016d, 0x016d,\r
-  0x016f, 0x016f,\r
-  0x0171, 0x0171,\r
-  0x0173, 0x0173,\r
-  0x0175, 0x0175,\r
-  0x0177, 0x0177,\r
-  0x017a, 0x017a,\r
-  0x017c, 0x017c,\r
-  0x017e, 0x0180,\r
-  0x0183, 0x0183,\r
-  0x0185, 0x0185,\r
-  0x0188, 0x0188,\r
-  0x018c, 0x018d,\r
-  0x0192, 0x0192,\r
-  0x0195, 0x0195,\r
-  0x0199, 0x019b,\r
-  0x019e, 0x019e,\r
-  0x01a1, 0x01a1,\r
-  0x01a3, 0x01a3,\r
-  0x01a5, 0x01a5,\r
-  0x01a8, 0x01a8,\r
-  0x01aa, 0x01ab,\r
-  0x01ad, 0x01ad,\r
-  0x01b0, 0x01b0,\r
-  0x01b4, 0x01b4,\r
-  0x01b6, 0x01b6,\r
-  0x01b9, 0x01ba,\r
-  0x01bd, 0x01bf,\r
-  0x01c6, 0x01c6,\r
-  0x01c9, 0x01c9,\r
-  0x01cc, 0x01cc,\r
-  0x01ce, 0x01ce,\r
-  0x01d0, 0x01d0,\r
-  0x01d2, 0x01d2,\r
-  0x01d4, 0x01d4,\r
-  0x01d6, 0x01d6,\r
-  0x01d8, 0x01d8,\r
-  0x01da, 0x01da,\r
-  0x01dc, 0x01dd,\r
-  0x01df, 0x01df,\r
-  0x01e1, 0x01e1,\r
-  0x01e3, 0x01e3,\r
-  0x01e5, 0x01e5,\r
-  0x01e7, 0x01e7,\r
-  0x01e9, 0x01e9,\r
-  0x01eb, 0x01eb,\r
-  0x01ed, 0x01ed,\r
-  0x01ef, 0x01f0,\r
-  0x01f3, 0x01f3,\r
-  0x01f5, 0x01f5,\r
-  0x01f9, 0x01f9,\r
-  0x01fb, 0x01fb,\r
-  0x01fd, 0x01fd,\r
-  0x01ff, 0x01ff,\r
-  0x0201, 0x0201,\r
-  0x0203, 0x0203,\r
-  0x0205, 0x0205,\r
-  0x0207, 0x0207,\r
-  0x0209, 0x0209,\r
-  0x020b, 0x020b,\r
-  0x020d, 0x020d,\r
-  0x020f, 0x020f,\r
-  0x0211, 0x0211,\r
-  0x0213, 0x0213,\r
-  0x0215, 0x0215,\r
-  0x0217, 0x0217,\r
-  0x0219, 0x0219,\r
-  0x021b, 0x021b,\r
-  0x021d, 0x021d,\r
-  0x021f, 0x021f,\r
-  0x0221, 0x0221,\r
-  0x0223, 0x0223,\r
-  0x0225, 0x0225,\r
-  0x0227, 0x0227,\r
-  0x0229, 0x0229,\r
-  0x022b, 0x022b,\r
-  0x022d, 0x022d,\r
-  0x022f, 0x022f,\r
-  0x0231, 0x0231,\r
-  0x0233, 0x0239,\r
-  0x023c, 0x023c,\r
-  0x023f, 0x0240,\r
-  0x0250, 0x02af,\r
-  0x0390, 0x0390,\r
-  0x03ac, 0x03ce,\r
-  0x03d0, 0x03d1,\r
-  0x03d5, 0x03d7,\r
-  0x03d9, 0x03d9,\r
-  0x03db, 0x03db,\r
-  0x03dd, 0x03dd,\r
-  0x03df, 0x03df,\r
-  0x03e1, 0x03e1,\r
-  0x03e3, 0x03e3,\r
-  0x03e5, 0x03e5,\r
-  0x03e7, 0x03e7,\r
-  0x03e9, 0x03e9,\r
-  0x03eb, 0x03eb,\r
-  0x03ed, 0x03ed,\r
-  0x03ef, 0x03f3,\r
-  0x03f5, 0x03f5,\r
-  0x03f8, 0x03f8,\r
-  0x03fb, 0x03fc,\r
-  0x0430, 0x045f,\r
-  0x0461, 0x0461,\r
-  0x0463, 0x0463,\r
-  0x0465, 0x0465,\r
-  0x0467, 0x0467,\r
-  0x0469, 0x0469,\r
-  0x046b, 0x046b,\r
-  0x046d, 0x046d,\r
-  0x046f, 0x046f,\r
-  0x0471, 0x0471,\r
-  0x0473, 0x0473,\r
-  0x0475, 0x0475,\r
-  0x0477, 0x0477,\r
-  0x0479, 0x0479,\r
-  0x047b, 0x047b,\r
-  0x047d, 0x047d,\r
-  0x047f, 0x047f,\r
-  0x0481, 0x0481,\r
-  0x048b, 0x048b,\r
-  0x048d, 0x048d,\r
-  0x048f, 0x048f,\r
-  0x0491, 0x0491,\r
-  0x0493, 0x0493,\r
-  0x0495, 0x0495,\r
-  0x0497, 0x0497,\r
-  0x0499, 0x0499,\r
-  0x049b, 0x049b,\r
-  0x049d, 0x049d,\r
-  0x049f, 0x049f,\r
-  0x04a1, 0x04a1,\r
-  0x04a3, 0x04a3,\r
-  0x04a5, 0x04a5,\r
-  0x04a7, 0x04a7,\r
-  0x04a9, 0x04a9,\r
-  0x04ab, 0x04ab,\r
-  0x04ad, 0x04ad,\r
-  0x04af, 0x04af,\r
-  0x04b1, 0x04b1,\r
-  0x04b3, 0x04b3,\r
-  0x04b5, 0x04b5,\r
-  0x04b7, 0x04b7,\r
-  0x04b9, 0x04b9,\r
-  0x04bb, 0x04bb,\r
-  0x04bd, 0x04bd,\r
-  0x04bf, 0x04bf,\r
-  0x04c2, 0x04c2,\r
-  0x04c4, 0x04c4,\r
-  0x04c6, 0x04c6,\r
-  0x04c8, 0x04c8,\r
-  0x04ca, 0x04ca,\r
-  0x04cc, 0x04cc,\r
-  0x04ce, 0x04ce,\r
-  0x04d1, 0x04d1,\r
-  0x04d3, 0x04d3,\r
-  0x04d5, 0x04d5,\r
-  0x04d7, 0x04d7,\r
-  0x04d9, 0x04d9,\r
-  0x04db, 0x04db,\r
-  0x04dd, 0x04dd,\r
-  0x04df, 0x04df,\r
-  0x04e1, 0x04e1,\r
-  0x04e3, 0x04e3,\r
-  0x04e5, 0x04e5,\r
-  0x04e7, 0x04e7,\r
-  0x04e9, 0x04e9,\r
-  0x04eb, 0x04eb,\r
-  0x04ed, 0x04ed,\r
-  0x04ef, 0x04ef,\r
-  0x04f1, 0x04f1,\r
-  0x04f3, 0x04f3,\r
-  0x04f5, 0x04f5,\r
-  0x04f7, 0x04f7,\r
-  0x04f9, 0x04f9,\r
-  0x0501, 0x0501,\r
-  0x0503, 0x0503,\r
-  0x0505, 0x0505,\r
-  0x0507, 0x0507,\r
-  0x0509, 0x0509,\r
-  0x050b, 0x050b,\r
-  0x050d, 0x050d,\r
-  0x050f, 0x050f,\r
-  0x0561, 0x0587,\r
-  0x1d00, 0x1d2b,\r
-  0x1d62, 0x1d77,\r
-  0x1d79, 0x1d9a,\r
-  0x1e01, 0x1e01,\r
-  0x1e03, 0x1e03,\r
-  0x1e05, 0x1e05,\r
-  0x1e07, 0x1e07,\r
-  0x1e09, 0x1e09,\r
-  0x1e0b, 0x1e0b,\r
-  0x1e0d, 0x1e0d,\r
-  0x1e0f, 0x1e0f,\r
-  0x1e11, 0x1e11,\r
-  0x1e13, 0x1e13,\r
-  0x1e15, 0x1e15,\r
-  0x1e17, 0x1e17,\r
-  0x1e19, 0x1e19,\r
-  0x1e1b, 0x1e1b,\r
-  0x1e1d, 0x1e1d,\r
-  0x1e1f, 0x1e1f,\r
-  0x1e21, 0x1e21,\r
-  0x1e23, 0x1e23,\r
-  0x1e25, 0x1e25,\r
-  0x1e27, 0x1e27,\r
-  0x1e29, 0x1e29,\r
-  0x1e2b, 0x1e2b,\r
-  0x1e2d, 0x1e2d,\r
-  0x1e2f, 0x1e2f,\r
-  0x1e31, 0x1e31,\r
-  0x1e33, 0x1e33,\r
-  0x1e35, 0x1e35,\r
-  0x1e37, 0x1e37,\r
-  0x1e39, 0x1e39,\r
-  0x1e3b, 0x1e3b,\r
-  0x1e3d, 0x1e3d,\r
-  0x1e3f, 0x1e3f,\r
-  0x1e41, 0x1e41,\r
-  0x1e43, 0x1e43,\r
-  0x1e45, 0x1e45,\r
-  0x1e47, 0x1e47,\r
-  0x1e49, 0x1e49,\r
-  0x1e4b, 0x1e4b,\r
-  0x1e4d, 0x1e4d,\r
-  0x1e4f, 0x1e4f,\r
-  0x1e51, 0x1e51,\r
-  0x1e53, 0x1e53,\r
-  0x1e55, 0x1e55,\r
-  0x1e57, 0x1e57,\r
-  0x1e59, 0x1e59,\r
-  0x1e5b, 0x1e5b,\r
-  0x1e5d, 0x1e5d,\r
-  0x1e5f, 0x1e5f,\r
-  0x1e61, 0x1e61,\r
-  0x1e63, 0x1e63,\r
-  0x1e65, 0x1e65,\r
-  0x1e67, 0x1e67,\r
-  0x1e69, 0x1e69,\r
-  0x1e6b, 0x1e6b,\r
-  0x1e6d, 0x1e6d,\r
-  0x1e6f, 0x1e6f,\r
-  0x1e71, 0x1e71,\r
-  0x1e73, 0x1e73,\r
-  0x1e75, 0x1e75,\r
-  0x1e77, 0x1e77,\r
-  0x1e79, 0x1e79,\r
-  0x1e7b, 0x1e7b,\r
-  0x1e7d, 0x1e7d,\r
-  0x1e7f, 0x1e7f,\r
-  0x1e81, 0x1e81,\r
-  0x1e83, 0x1e83,\r
-  0x1e85, 0x1e85,\r
-  0x1e87, 0x1e87,\r
-  0x1e89, 0x1e89,\r
-  0x1e8b, 0x1e8b,\r
-  0x1e8d, 0x1e8d,\r
-  0x1e8f, 0x1e8f,\r
-  0x1e91, 0x1e91,\r
-  0x1e93, 0x1e93,\r
-  0x1e95, 0x1e9b,\r
-  0x1ea1, 0x1ea1,\r
-  0x1ea3, 0x1ea3,\r
-  0x1ea5, 0x1ea5,\r
-  0x1ea7, 0x1ea7,\r
-  0x1ea9, 0x1ea9,\r
-  0x1eab, 0x1eab,\r
-  0x1ead, 0x1ead,\r
-  0x1eaf, 0x1eaf,\r
-  0x1eb1, 0x1eb1,\r
-  0x1eb3, 0x1eb3,\r
-  0x1eb5, 0x1eb5,\r
-  0x1eb7, 0x1eb7,\r
-  0x1eb9, 0x1eb9,\r
-  0x1ebb, 0x1ebb,\r
-  0x1ebd, 0x1ebd,\r
-  0x1ebf, 0x1ebf,\r
-  0x1ec1, 0x1ec1,\r
-  0x1ec3, 0x1ec3,\r
-  0x1ec5, 0x1ec5,\r
-  0x1ec7, 0x1ec7,\r
-  0x1ec9, 0x1ec9,\r
-  0x1ecb, 0x1ecb,\r
-  0x1ecd, 0x1ecd,\r
-  0x1ecf, 0x1ecf,\r
-  0x1ed1, 0x1ed1,\r
-  0x1ed3, 0x1ed3,\r
-  0x1ed5, 0x1ed5,\r
-  0x1ed7, 0x1ed7,\r
-  0x1ed9, 0x1ed9,\r
-  0x1edb, 0x1edb,\r
-  0x1edd, 0x1edd,\r
-  0x1edf, 0x1edf,\r
-  0x1ee1, 0x1ee1,\r
-  0x1ee3, 0x1ee3,\r
-  0x1ee5, 0x1ee5,\r
-  0x1ee7, 0x1ee7,\r
-  0x1ee9, 0x1ee9,\r
-  0x1eeb, 0x1eeb,\r
-  0x1eed, 0x1eed,\r
-  0x1eef, 0x1eef,\r
-  0x1ef1, 0x1ef1,\r
-  0x1ef3, 0x1ef3,\r
-  0x1ef5, 0x1ef5,\r
-  0x1ef7, 0x1ef7,\r
-  0x1ef9, 0x1ef9,\r
-  0x1f00, 0x1f07,\r
-  0x1f10, 0x1f15,\r
-  0x1f20, 0x1f27,\r
-  0x1f30, 0x1f37,\r
-  0x1f40, 0x1f45,\r
-  0x1f50, 0x1f57,\r
-  0x1f60, 0x1f67,\r
-  0x1f70, 0x1f7d,\r
-  0x1f80, 0x1f87,\r
-  0x1f90, 0x1f97,\r
-  0x1fa0, 0x1fa7,\r
-  0x1fb0, 0x1fb4,\r
-  0x1fb6, 0x1fb7,\r
-  0x1fbe, 0x1fbe,\r
-  0x1fc2, 0x1fc4,\r
-  0x1fc6, 0x1fc7,\r
-  0x1fd0, 0x1fd3,\r
-  0x1fd6, 0x1fd7,\r
-  0x1fe0, 0x1fe7,\r
-  0x1ff2, 0x1ff4,\r
-  0x1ff6, 0x1ff7,\r
-  0x2071, 0x2071,\r
-  0x207f, 0x207f,\r
-  0x210a, 0x210a,\r
-  0x210e, 0x210f,\r
-  0x2113, 0x2113,\r
-  0x212f, 0x212f,\r
-  0x2134, 0x2134,\r
-  0x2139, 0x2139,\r
-  0x213c, 0x213d,\r
-  0x2146, 0x2149,\r
-  0x2c30, 0x2c5e,\r
-  0x2c81, 0x2c81,\r
-  0x2c83, 0x2c83,\r
-  0x2c85, 0x2c85,\r
-  0x2c87, 0x2c87,\r
-  0x2c89, 0x2c89,\r
-  0x2c8b, 0x2c8b,\r
-  0x2c8d, 0x2c8d,\r
-  0x2c8f, 0x2c8f,\r
-  0x2c91, 0x2c91,\r
-  0x2c93, 0x2c93,\r
-  0x2c95, 0x2c95,\r
-  0x2c97, 0x2c97,\r
-  0x2c99, 0x2c99,\r
-  0x2c9b, 0x2c9b,\r
-  0x2c9d, 0x2c9d,\r
-  0x2c9f, 0x2c9f,\r
-  0x2ca1, 0x2ca1,\r
-  0x2ca3, 0x2ca3,\r
-  0x2ca5, 0x2ca5,\r
-  0x2ca7, 0x2ca7,\r
-  0x2ca9, 0x2ca9,\r
-  0x2cab, 0x2cab,\r
-  0x2cad, 0x2cad,\r
-  0x2caf, 0x2caf,\r
-  0x2cb1, 0x2cb1,\r
-  0x2cb3, 0x2cb3,\r
-  0x2cb5, 0x2cb5,\r
-  0x2cb7, 0x2cb7,\r
-  0x2cb9, 0x2cb9,\r
-  0x2cbb, 0x2cbb,\r
-  0x2cbd, 0x2cbd,\r
-  0x2cbf, 0x2cbf,\r
-  0x2cc1, 0x2cc1,\r
-  0x2cc3, 0x2cc3,\r
-  0x2cc5, 0x2cc5,\r
-  0x2cc7, 0x2cc7,\r
-  0x2cc9, 0x2cc9,\r
-  0x2ccb, 0x2ccb,\r
-  0x2ccd, 0x2ccd,\r
-  0x2ccf, 0x2ccf,\r
-  0x2cd1, 0x2cd1,\r
-  0x2cd3, 0x2cd3,\r
-  0x2cd5, 0x2cd5,\r
-  0x2cd7, 0x2cd7,\r
-  0x2cd9, 0x2cd9,\r
-  0x2cdb, 0x2cdb,\r
-  0x2cdd, 0x2cdd,\r
-  0x2cdf, 0x2cdf,\r
-  0x2ce1, 0x2ce1,\r
-  0x2ce3, 0x2ce4,\r
-  0x2d00, 0x2d25,\r
-  0xfb00, 0xfb06,\r
-  0xfb13, 0xfb17,\r
-  0xff41, 0xff5a,\r
-  0x10428, 0x1044f,\r
-  0x1d41a, 0x1d433,\r
-  0x1d44e, 0x1d454,\r
-  0x1d456, 0x1d467,\r
-  0x1d482, 0x1d49b,\r
-  0x1d4b6, 0x1d4b9,\r
-  0x1d4bb, 0x1d4bb,\r
-  0x1d4bd, 0x1d4c3,\r
-  0x1d4c5, 0x1d4cf,\r
-  0x1d4ea, 0x1d503,\r
-  0x1d51e, 0x1d537,\r
-  0x1d552, 0x1d56b,\r
-  0x1d586, 0x1d59f,\r
-  0x1d5ba, 0x1d5d3,\r
-  0x1d5ee, 0x1d607,\r
-  0x1d622, 0x1d63b,\r
-  0x1d656, 0x1d66f,\r
-  0x1d68a, 0x1d6a5,\r
-  0x1d6c2, 0x1d6da,\r
-  0x1d6dc, 0x1d6e1,\r
-  0x1d6fc, 0x1d714,\r
-  0x1d716, 0x1d71b,\r
-  0x1d736, 0x1d74e,\r
-  0x1d750, 0x1d755,\r
-  0x1d770, 0x1d788,\r
-  0x1d78a, 0x1d78f,\r
-  0x1d7aa, 0x1d7c2,\r
-  0x1d7c4, 0x1d7c9\r
-}; /* CR_Lower */\r
-\r
-/* 'Print': [[:Print:]] */\r
-static const OnigCodePoint CR_Print[] = {\r
-  423,\r
-  0x0009, 0x000d,\r
-  0x0020, 0x007e,\r
-  0x0085, 0x0085,\r
-  0x00a0, 0x0241,\r
-  0x0250, 0x036f,\r
-  0x0374, 0x0375,\r
-  0x037a, 0x037a,\r
-  0x037e, 0x037e,\r
-  0x0384, 0x038a,\r
-  0x038c, 0x038c,\r
-  0x038e, 0x03a1,\r
-  0x03a3, 0x03ce,\r
-  0x03d0, 0x0486,\r
-  0x0488, 0x04ce,\r
-  0x04d0, 0x04f9,\r
-  0x0500, 0x050f,\r
-  0x0531, 0x0556,\r
-  0x0559, 0x055f,\r
-  0x0561, 0x0587,\r
-  0x0589, 0x058a,\r
-  0x0591, 0x05b9,\r
-  0x05bb, 0x05c7,\r
-  0x05d0, 0x05ea,\r
-  0x05f0, 0x05f4,\r
-  0x0600, 0x0603,\r
-  0x060b, 0x0615,\r
-  0x061b, 0x061b,\r
-  0x061e, 0x061f,\r
-  0x0621, 0x063a,\r
-  0x0640, 0x065e,\r
-  0x0660, 0x070d,\r
-  0x070f, 0x074a,\r
-  0x074d, 0x076d,\r
-  0x0780, 0x07b1,\r
-  0x0901, 0x0939,\r
-  0x093c, 0x094d,\r
-  0x0950, 0x0954,\r
-  0x0958, 0x0970,\r
-  0x097d, 0x097d,\r
-  0x0981, 0x0983,\r
-  0x0985, 0x098c,\r
-  0x098f, 0x0990,\r
-  0x0993, 0x09a8,\r
-  0x09aa, 0x09b0,\r
-  0x09b2, 0x09b2,\r
-  0x09b6, 0x09b9,\r
-  0x09bc, 0x09c4,\r
-  0x09c7, 0x09c8,\r
-  0x09cb, 0x09ce,\r
-  0x09d7, 0x09d7,\r
-  0x09dc, 0x09dd,\r
-  0x09df, 0x09e3,\r
-  0x09e6, 0x09fa,\r
-  0x0a01, 0x0a03,\r
-  0x0a05, 0x0a0a,\r
-  0x0a0f, 0x0a10,\r
-  0x0a13, 0x0a28,\r
-  0x0a2a, 0x0a30,\r
-  0x0a32, 0x0a33,\r
-  0x0a35, 0x0a36,\r
-  0x0a38, 0x0a39,\r
-  0x0a3c, 0x0a3c,\r
-  0x0a3e, 0x0a42,\r
-  0x0a47, 0x0a48,\r
-  0x0a4b, 0x0a4d,\r
-  0x0a59, 0x0a5c,\r
-  0x0a5e, 0x0a5e,\r
-  0x0a66, 0x0a74,\r
-  0x0a81, 0x0a83,\r
-  0x0a85, 0x0a8d,\r
-  0x0a8f, 0x0a91,\r
-  0x0a93, 0x0aa8,\r
-  0x0aaa, 0x0ab0,\r
-  0x0ab2, 0x0ab3,\r
-  0x0ab5, 0x0ab9,\r
-  0x0abc, 0x0ac5,\r
-  0x0ac7, 0x0ac9,\r
-  0x0acb, 0x0acd,\r
-  0x0ad0, 0x0ad0,\r
-  0x0ae0, 0x0ae3,\r
-  0x0ae6, 0x0aef,\r
-  0x0af1, 0x0af1,\r
-  0x0b01, 0x0b03,\r
-  0x0b05, 0x0b0c,\r
-  0x0b0f, 0x0b10,\r
-  0x0b13, 0x0b28,\r
-  0x0b2a, 0x0b30,\r
-  0x0b32, 0x0b33,\r
-  0x0b35, 0x0b39,\r
-  0x0b3c, 0x0b43,\r
-  0x0b47, 0x0b48,\r
-  0x0b4b, 0x0b4d,\r
-  0x0b56, 0x0b57,\r
-  0x0b5c, 0x0b5d,\r
-  0x0b5f, 0x0b61,\r
-  0x0b66, 0x0b71,\r
-  0x0b82, 0x0b83,\r
-  0x0b85, 0x0b8a,\r
-  0x0b8e, 0x0b90,\r
-  0x0b92, 0x0b95,\r
-  0x0b99, 0x0b9a,\r
-  0x0b9c, 0x0b9c,\r
-  0x0b9e, 0x0b9f,\r
-  0x0ba3, 0x0ba4,\r
-  0x0ba8, 0x0baa,\r
-  0x0bae, 0x0bb9,\r
-  0x0bbe, 0x0bc2,\r
-  0x0bc6, 0x0bc8,\r
-  0x0bca, 0x0bcd,\r
-  0x0bd7, 0x0bd7,\r
-  0x0be6, 0x0bfa,\r
-  0x0c01, 0x0c03,\r
-  0x0c05, 0x0c0c,\r
-  0x0c0e, 0x0c10,\r
-  0x0c12, 0x0c28,\r
-  0x0c2a, 0x0c33,\r
-  0x0c35, 0x0c39,\r
-  0x0c3e, 0x0c44,\r
-  0x0c46, 0x0c48,\r
-  0x0c4a, 0x0c4d,\r
-  0x0c55, 0x0c56,\r
-  0x0c60, 0x0c61,\r
-  0x0c66, 0x0c6f,\r
-  0x0c82, 0x0c83,\r
-  0x0c85, 0x0c8c,\r
-  0x0c8e, 0x0c90,\r
-  0x0c92, 0x0ca8,\r
-  0x0caa, 0x0cb3,\r
-  0x0cb5, 0x0cb9,\r
-  0x0cbc, 0x0cc4,\r
-  0x0cc6, 0x0cc8,\r
-  0x0cca, 0x0ccd,\r
-  0x0cd5, 0x0cd6,\r
-  0x0cde, 0x0cde,\r
-  0x0ce0, 0x0ce1,\r
-  0x0ce6, 0x0cef,\r
-  0x0d02, 0x0d03,\r
-  0x0d05, 0x0d0c,\r
-  0x0d0e, 0x0d10,\r
-  0x0d12, 0x0d28,\r
-  0x0d2a, 0x0d39,\r
-  0x0d3e, 0x0d43,\r
-  0x0d46, 0x0d48,\r
-  0x0d4a, 0x0d4d,\r
-  0x0d57, 0x0d57,\r
-  0x0d60, 0x0d61,\r
-  0x0d66, 0x0d6f,\r
-  0x0d82, 0x0d83,\r
-  0x0d85, 0x0d96,\r
-  0x0d9a, 0x0db1,\r
-  0x0db3, 0x0dbb,\r
-  0x0dbd, 0x0dbd,\r
-  0x0dc0, 0x0dc6,\r
-  0x0dca, 0x0dca,\r
-  0x0dcf, 0x0dd4,\r
-  0x0dd6, 0x0dd6,\r
-  0x0dd8, 0x0ddf,\r
-  0x0df2, 0x0df4,\r
-  0x0e01, 0x0e3a,\r
-  0x0e3f, 0x0e5b,\r
-  0x0e81, 0x0e82,\r
-  0x0e84, 0x0e84,\r
-  0x0e87, 0x0e88,\r
-  0x0e8a, 0x0e8a,\r
-  0x0e8d, 0x0e8d,\r
-  0x0e94, 0x0e97,\r
-  0x0e99, 0x0e9f,\r
-  0x0ea1, 0x0ea3,\r
-  0x0ea5, 0x0ea5,\r
-  0x0ea7, 0x0ea7,\r
-  0x0eaa, 0x0eab,\r
-  0x0ead, 0x0eb9,\r
-  0x0ebb, 0x0ebd,\r
-  0x0ec0, 0x0ec4,\r
-  0x0ec6, 0x0ec6,\r
-  0x0ec8, 0x0ecd,\r
-  0x0ed0, 0x0ed9,\r
-  0x0edc, 0x0edd,\r
-  0x0f00, 0x0f47,\r
-  0x0f49, 0x0f6a,\r
-  0x0f71, 0x0f8b,\r
-  0x0f90, 0x0f97,\r
-  0x0f99, 0x0fbc,\r
-  0x0fbe, 0x0fcc,\r
-  0x0fcf, 0x0fd1,\r
-  0x1000, 0x1021,\r
-  0x1023, 0x1027,\r
-  0x1029, 0x102a,\r
-  0x102c, 0x1032,\r
-  0x1036, 0x1039,\r
-  0x1040, 0x1059,\r
-  0x10a0, 0x10c5,\r
-  0x10d0, 0x10fc,\r
-  0x1100, 0x1159,\r
-  0x115f, 0x11a2,\r
-  0x11a8, 0x11f9,\r
-  0x1200, 0x1248,\r
-  0x124a, 0x124d,\r
-  0x1250, 0x1256,\r
-  0x1258, 0x1258,\r
-  0x125a, 0x125d,\r
-  0x1260, 0x1288,\r
-  0x128a, 0x128d,\r
-  0x1290, 0x12b0,\r
-  0x12b2, 0x12b5,\r
-  0x12b8, 0x12be,\r
-  0x12c0, 0x12c0,\r
-  0x12c2, 0x12c5,\r
-  0x12c8, 0x12d6,\r
-  0x12d8, 0x1310,\r
-  0x1312, 0x1315,\r
-  0x1318, 0x135a,\r
-  0x135f, 0x137c,\r
-  0x1380, 0x1399,\r
-  0x13a0, 0x13f4,\r
-  0x1401, 0x1676,\r
-  0x1680, 0x169c,\r
-  0x16a0, 0x16f0,\r
-  0x1700, 0x170c,\r
-  0x170e, 0x1714,\r
-  0x1720, 0x1736,\r
-  0x1740, 0x1753,\r
-  0x1760, 0x176c,\r
-  0x176e, 0x1770,\r
-  0x1772, 0x1773,\r
-  0x1780, 0x17dd,\r
-  0x17e0, 0x17e9,\r
-  0x17f0, 0x17f9,\r
-  0x1800, 0x180e,\r
-  0x1810, 0x1819,\r
-  0x1820, 0x1877,\r
-  0x1880, 0x18a9,\r
-  0x1900, 0x191c,\r
-  0x1920, 0x192b,\r
-  0x1930, 0x193b,\r
-  0x1940, 0x1940,\r
-  0x1944, 0x196d,\r
-  0x1970, 0x1974,\r
-  0x1980, 0x19a9,\r
-  0x19b0, 0x19c9,\r
-  0x19d0, 0x19d9,\r
-  0x19de, 0x1a1b,\r
-  0x1a1e, 0x1a1f,\r
-  0x1d00, 0x1dc3,\r
-  0x1e00, 0x1e9b,\r
-  0x1ea0, 0x1ef9,\r
-  0x1f00, 0x1f15,\r
-  0x1f18, 0x1f1d,\r
-  0x1f20, 0x1f45,\r
-  0x1f48, 0x1f4d,\r
-  0x1f50, 0x1f57,\r
-  0x1f59, 0x1f59,\r
-  0x1f5b, 0x1f5b,\r
-  0x1f5d, 0x1f5d,\r
-  0x1f5f, 0x1f7d,\r
-  0x1f80, 0x1fb4,\r
-  0x1fb6, 0x1fc4,\r
-  0x1fc6, 0x1fd3,\r
-  0x1fd6, 0x1fdb,\r
-  0x1fdd, 0x1fef,\r
-  0x1ff2, 0x1ff4,\r
-  0x1ff6, 0x1ffe,\r
-  0x2000, 0x2063,\r
-  0x206a, 0x2071,\r
-  0x2074, 0x208e,\r
-  0x2090, 0x2094,\r
-  0x20a0, 0x20b5,\r
-  0x20d0, 0x20eb,\r
-  0x2100, 0x214c,\r
-  0x2153, 0x2183,\r
-  0x2190, 0x23db,\r
-  0x2400, 0x2426,\r
-  0x2440, 0x244a,\r
-  0x2460, 0x269c,\r
-  0x26a0, 0x26b1,\r
-  0x2701, 0x2704,\r
-  0x2706, 0x2709,\r
-  0x270c, 0x2727,\r
-  0x2729, 0x274b,\r
-  0x274d, 0x274d,\r
-  0x274f, 0x2752,\r
-  0x2756, 0x2756,\r
-  0x2758, 0x275e,\r
-  0x2761, 0x2794,\r
-  0x2798, 0x27af,\r
-  0x27b1, 0x27be,\r
-  0x27c0, 0x27c6,\r
-  0x27d0, 0x27eb,\r
-  0x27f0, 0x2b13,\r
-  0x2c00, 0x2c2e,\r
-  0x2c30, 0x2c5e,\r
-  0x2c80, 0x2cea,\r
-  0x2cf9, 0x2d25,\r
-  0x2d30, 0x2d65,\r
-  0x2d6f, 0x2d6f,\r
-  0x2d80, 0x2d96,\r
-  0x2da0, 0x2da6,\r
-  0x2da8, 0x2dae,\r
-  0x2db0, 0x2db6,\r
-  0x2db8, 0x2dbe,\r
-  0x2dc0, 0x2dc6,\r
-  0x2dc8, 0x2dce,\r
-  0x2dd0, 0x2dd6,\r
-  0x2dd8, 0x2dde,\r
-  0x2e00, 0x2e17,\r
-  0x2e1c, 0x2e1d,\r
-  0x2e80, 0x2e99,\r
-  0x2e9b, 0x2ef3,\r
-  0x2f00, 0x2fd5,\r
-  0x2ff0, 0x2ffb,\r
-  0x3000, 0x303f,\r
-  0x3041, 0x3096,\r
-  0x3099, 0x30ff,\r
-  0x3105, 0x312c,\r
-  0x3131, 0x318e,\r
-  0x3190, 0x31b7,\r
-  0x31c0, 0x31cf,\r
-  0x31f0, 0x321e,\r
-  0x3220, 0x3243,\r
-  0x3250, 0x32fe,\r
-  0x3300, 0x4db5,\r
-  0x4dc0, 0x9fbb,\r
-  0xa000, 0xa48c,\r
-  0xa490, 0xa4c6,\r
-  0xa700, 0xa716,\r
-  0xa800, 0xa82b,\r
-  0xac00, 0xd7a3,\r
-  0xe000, 0xfa2d,\r
-  0xfa30, 0xfa6a,\r
-  0xfa70, 0xfad9,\r
-  0xfb00, 0xfb06,\r
-  0xfb13, 0xfb17,\r
-  0xfb1d, 0xfb36,\r
-  0xfb38, 0xfb3c,\r
-  0xfb3e, 0xfb3e,\r
-  0xfb40, 0xfb41,\r
-  0xfb43, 0xfb44,\r
-  0xfb46, 0xfbb1,\r
-  0xfbd3, 0xfd3f,\r
-  0xfd50, 0xfd8f,\r
-  0xfd92, 0xfdc7,\r
-  0xfdf0, 0xfdfd,\r
-  0xfe00, 0xfe19,\r
-  0xfe20, 0xfe23,\r
-  0xfe30, 0xfe52,\r
-  0xfe54, 0xfe66,\r
-  0xfe68, 0xfe6b,\r
-  0xfe70, 0xfe74,\r
-  0xfe76, 0xfefc,\r
-  0xfeff, 0xfeff,\r
-  0xff01, 0xffbe,\r
-  0xffc2, 0xffc7,\r
-  0xffca, 0xffcf,\r
-  0xffd2, 0xffd7,\r
-  0xffda, 0xffdc,\r
-  0xffe0, 0xffe6,\r
-  0xffe8, 0xffee,\r
-  0xfff9, 0xfffd,\r
-  0x10000, 0x1000b,\r
-  0x1000d, 0x10026,\r
-  0x10028, 0x1003a,\r
-  0x1003c, 0x1003d,\r
-  0x1003f, 0x1004d,\r
-  0x10050, 0x1005d,\r
-  0x10080, 0x100fa,\r
-  0x10100, 0x10102,\r
-  0x10107, 0x10133,\r
-  0x10137, 0x1018a,\r
-  0x10300, 0x1031e,\r
-  0x10320, 0x10323,\r
-  0x10330, 0x1034a,\r
-  0x10380, 0x1039d,\r
-  0x1039f, 0x103c3,\r
-  0x103c8, 0x103d5,\r
-  0x10400, 0x1049d,\r
-  0x104a0, 0x104a9,\r
-  0x10800, 0x10805,\r
-  0x10808, 0x10808,\r
-  0x1080a, 0x10835,\r
-  0x10837, 0x10838,\r
-  0x1083c, 0x1083c,\r
-  0x1083f, 0x1083f,\r
-  0x10a00, 0x10a03,\r
-  0x10a05, 0x10a06,\r
-  0x10a0c, 0x10a13,\r
-  0x10a15, 0x10a17,\r
-  0x10a19, 0x10a33,\r
-  0x10a38, 0x10a3a,\r
-  0x10a3f, 0x10a47,\r
-  0x10a50, 0x10a58,\r
-  0x1d000, 0x1d0f5,\r
-  0x1d100, 0x1d126,\r
-  0x1d12a, 0x1d1dd,\r
-  0x1d200, 0x1d245,\r
-  0x1d300, 0x1d356,\r
-  0x1d400, 0x1d454,\r
-  0x1d456, 0x1d49c,\r
-  0x1d49e, 0x1d49f,\r
-  0x1d4a2, 0x1d4a2,\r
-  0x1d4a5, 0x1d4a6,\r
-  0x1d4a9, 0x1d4ac,\r
-  0x1d4ae, 0x1d4b9,\r
-  0x1d4bb, 0x1d4bb,\r
-  0x1d4bd, 0x1d4c3,\r
-  0x1d4c5, 0x1d505,\r
-  0x1d507, 0x1d50a,\r
-  0x1d50d, 0x1d514,\r
-  0x1d516, 0x1d51c,\r
-  0x1d51e, 0x1d539,\r
-  0x1d53b, 0x1d53e,\r
-  0x1d540, 0x1d544,\r
-  0x1d546, 0x1d546,\r
-  0x1d54a, 0x1d550,\r
-  0x1d552, 0x1d6a5,\r
-  0x1d6a8, 0x1d7c9,\r
-  0x1d7ce, 0x1d7ff,\r
-  0x20000, 0x2a6d6,\r
-  0x2f800, 0x2fa1d,\r
-  0xe0001, 0xe0001,\r
-  0xe0020, 0xe007f,\r
-  0xe0100, 0xe01ef,\r
-  0xf0000, 0xffffd,\r
-  0x100000, 0x10fffd\r
-}; /* CR_Print */\r
-\r
-/* 'Punct': [[:Punct:]] */\r
-static const OnigCodePoint CR_Punct[] = {\r
-  96,\r
-  0x0021, 0x0023,\r
-  0x0025, 0x002a,\r
-  0x002c, 0x002f,\r
-  0x003a, 0x003b,\r
-  0x003f, 0x0040,\r
-  0x005b, 0x005d,\r
-  0x005f, 0x005f,\r
-  0x007b, 0x007b,\r
-  0x007d, 0x007d,\r
-  0x00a1, 0x00a1,\r
-  0x00ab, 0x00ab,\r
-  0x00b7, 0x00b7,\r
-  0x00bb, 0x00bb,\r
-  0x00bf, 0x00bf,\r
-  0x037e, 0x037e,\r
-  0x0387, 0x0387,\r
-  0x055a, 0x055f,\r
-  0x0589, 0x058a,\r
-  0x05be, 0x05be,\r
-  0x05c0, 0x05c0,\r
-  0x05c3, 0x05c3,\r
-  0x05c6, 0x05c6,\r
-  0x05f3, 0x05f4,\r
-  0x060c, 0x060d,\r
-  0x061b, 0x061b,\r
-  0x061e, 0x061f,\r
-  0x066a, 0x066d,\r
-  0x06d4, 0x06d4,\r
-  0x0700, 0x070d,\r
-  0x0964, 0x0965,\r
-  0x0970, 0x0970,\r
-  0x0df4, 0x0df4,\r
-  0x0e4f, 0x0e4f,\r
-  0x0e5a, 0x0e5b,\r
-  0x0f04, 0x0f12,\r
-  0x0f3a, 0x0f3d,\r
-  0x0f85, 0x0f85,\r
-  0x0fd0, 0x0fd1,\r
-  0x104a, 0x104f,\r
-  0x10fb, 0x10fb,\r
-  0x1361, 0x1368,\r
-  0x166d, 0x166e,\r
-  0x169b, 0x169c,\r
-  0x16eb, 0x16ed,\r
-  0x1735, 0x1736,\r
-  0x17d4, 0x17d6,\r
-  0x17d8, 0x17da,\r
-  0x1800, 0x180a,\r
-  0x1944, 0x1945,\r
-  0x19de, 0x19df,\r
-  0x1a1e, 0x1a1f,\r
-  0x2010, 0x2027,\r
-  0x2030, 0x2043,\r
-  0x2045, 0x2051,\r
-  0x2053, 0x205e,\r
-  0x207d, 0x207e,\r
-  0x208d, 0x208e,\r
-  0x2329, 0x232a,\r
-  0x23b4, 0x23b6,\r
-  0x2768, 0x2775,\r
-  0x27c5, 0x27c6,\r
-  0x27e6, 0x27eb,\r
-  0x2983, 0x2998,\r
-  0x29d8, 0x29db,\r
-  0x29fc, 0x29fd,\r
-  0x2cf9, 0x2cfc,\r
-  0x2cfe, 0x2cff,\r
-  0x2e00, 0x2e17,\r
-  0x2e1c, 0x2e1d,\r
-  0x3001, 0x3003,\r
-  0x3008, 0x3011,\r
-  0x3014, 0x301f,\r
-  0x3030, 0x3030,\r
-  0x303d, 0x303d,\r
-  0x30a0, 0x30a0,\r
-  0x30fb, 0x30fb,\r
-  0xfd3e, 0xfd3f,\r
-  0xfe10, 0xfe19,\r
-  0xfe30, 0xfe52,\r
-  0xfe54, 0xfe61,\r
-  0xfe63, 0xfe63,\r
-  0xfe68, 0xfe68,\r
-  0xfe6a, 0xfe6b,\r
-  0xff01, 0xff03,\r
-  0xff05, 0xff0a,\r
-  0xff0c, 0xff0f,\r
-  0xff1a, 0xff1b,\r
-  0xff1f, 0xff20,\r
-  0xff3b, 0xff3d,\r
-  0xff3f, 0xff3f,\r
-  0xff5b, 0xff5b,\r
-  0xff5d, 0xff5d,\r
-  0xff5f, 0xff65,\r
-  0x10100, 0x10101,\r
-  0x1039f, 0x1039f,\r
-  0x10a50, 0x10a58\r
-}; /* CR_Punct */\r
-\r
-/* 'Space': [[:Space:]] */\r
-static const OnigCodePoint CR_Space[] = {\r
-  11,\r
-  0x0009, 0x000d,\r
-  0x0020, 0x0020,\r
-  0x0085, 0x0085,\r
-  0x00a0, 0x00a0,\r
-  0x1680, 0x1680,\r
-  0x180e, 0x180e,\r
-  0x2000, 0x200a,\r
-  0x2028, 0x2029,\r
-  0x202f, 0x202f,\r
-  0x205f, 0x205f,\r
-  0x3000, 0x3000\r
-}; /* CR_Space */\r
-\r
-/* 'Upper': [[:Upper:]] */\r
-static const OnigCodePoint CR_Upper[] = {\r
-  476,\r
-  0x0041, 0x005a,\r
-  0x00c0, 0x00d6,\r
-  0x00d8, 0x00de,\r
-  0x0100, 0x0100,\r
-  0x0102, 0x0102,\r
-  0x0104, 0x0104,\r
-  0x0106, 0x0106,\r
-  0x0108, 0x0108,\r
-  0x010a, 0x010a,\r
-  0x010c, 0x010c,\r
-  0x010e, 0x010e,\r
-  0x0110, 0x0110,\r
-  0x0112, 0x0112,\r
-  0x0114, 0x0114,\r
-  0x0116, 0x0116,\r
-  0x0118, 0x0118,\r
-  0x011a, 0x011a,\r
-  0x011c, 0x011c,\r
-  0x011e, 0x011e,\r
-  0x0120, 0x0120,\r
-  0x0122, 0x0122,\r
-  0x0124, 0x0124,\r
-  0x0126, 0x0126,\r
-  0x0128, 0x0128,\r
-  0x012a, 0x012a,\r
-  0x012c, 0x012c,\r
-  0x012e, 0x012e,\r
-  0x0130, 0x0130,\r
-  0x0132, 0x0132,\r
-  0x0134, 0x0134,\r
-  0x0136, 0x0136,\r
-  0x0139, 0x0139,\r
-  0x013b, 0x013b,\r
-  0x013d, 0x013d,\r
-  0x013f, 0x013f,\r
-  0x0141, 0x0141,\r
-  0x0143, 0x0143,\r
-  0x0145, 0x0145,\r
-  0x0147, 0x0147,\r
-  0x014a, 0x014a,\r
-  0x014c, 0x014c,\r
-  0x014e, 0x014e,\r
-  0x0150, 0x0150,\r
-  0x0152, 0x0152,\r
-  0x0154, 0x0154,\r
-  0x0156, 0x0156,\r
-  0x0158, 0x0158,\r
-  0x015a, 0x015a,\r
-  0x015c, 0x015c,\r
-  0x015e, 0x015e,\r
-  0x0160, 0x0160,\r
-  0x0162, 0x0162,\r
-  0x0164, 0x0164,\r
-  0x0166, 0x0166,\r
-  0x0168, 0x0168,\r
-  0x016a, 0x016a,\r
-  0x016c, 0x016c,\r
-  0x016e, 0x016e,\r
-  0x0170, 0x0170,\r
-  0x0172, 0x0172,\r
-  0x0174, 0x0174,\r
-  0x0176, 0x0176,\r
-  0x0178, 0x0179,\r
-  0x017b, 0x017b,\r
-  0x017d, 0x017d,\r
-  0x0181, 0x0182,\r
-  0x0184, 0x0184,\r
-  0x0186, 0x0187,\r
-  0x0189, 0x018b,\r
-  0x018e, 0x0191,\r
-  0x0193, 0x0194,\r
-  0x0196, 0x0198,\r
-  0x019c, 0x019d,\r
-  0x019f, 0x01a0,\r
-  0x01a2, 0x01a2,\r
-  0x01a4, 0x01a4,\r
-  0x01a6, 0x01a7,\r
-  0x01a9, 0x01a9,\r
-  0x01ac, 0x01ac,\r
-  0x01ae, 0x01af,\r
-  0x01b1, 0x01b3,\r
-  0x01b5, 0x01b5,\r
-  0x01b7, 0x01b8,\r
-  0x01bc, 0x01bc,\r
-  0x01c4, 0x01c4,\r
-  0x01c7, 0x01c7,\r
-  0x01ca, 0x01ca,\r
-  0x01cd, 0x01cd,\r
-  0x01cf, 0x01cf,\r
-  0x01d1, 0x01d1,\r
-  0x01d3, 0x01d3,\r
-  0x01d5, 0x01d5,\r
-  0x01d7, 0x01d7,\r
-  0x01d9, 0x01d9,\r
-  0x01db, 0x01db,\r
-  0x01de, 0x01de,\r
-  0x01e0, 0x01e0,\r
-  0x01e2, 0x01e2,\r
-  0x01e4, 0x01e4,\r
-  0x01e6, 0x01e6,\r
-  0x01e8, 0x01e8,\r
-  0x01ea, 0x01ea,\r
-  0x01ec, 0x01ec,\r
-  0x01ee, 0x01ee,\r
-  0x01f1, 0x01f1,\r
-  0x01f4, 0x01f4,\r
-  0x01f6, 0x01f8,\r
-  0x01fa, 0x01fa,\r
-  0x01fc, 0x01fc,\r
-  0x01fe, 0x01fe,\r
-  0x0200, 0x0200,\r
-  0x0202, 0x0202,\r
-  0x0204, 0x0204,\r
-  0x0206, 0x0206,\r
-  0x0208, 0x0208,\r
-  0x020a, 0x020a,\r
-  0x020c, 0x020c,\r
-  0x020e, 0x020e,\r
-  0x0210, 0x0210,\r
-  0x0212, 0x0212,\r
-  0x0214, 0x0214,\r
-  0x0216, 0x0216,\r
-  0x0218, 0x0218,\r
-  0x021a, 0x021a,\r
-  0x021c, 0x021c,\r
-  0x021e, 0x021e,\r
-  0x0220, 0x0220,\r
-  0x0222, 0x0222,\r
-  0x0224, 0x0224,\r
-  0x0226, 0x0226,\r
-  0x0228, 0x0228,\r
-  0x022a, 0x022a,\r
-  0x022c, 0x022c,\r
-  0x022e, 0x022e,\r
-  0x0230, 0x0230,\r
-  0x0232, 0x0232,\r
-  0x023a, 0x023b,\r
-  0x023d, 0x023e,\r
-  0x0241, 0x0241,\r
-  0x0386, 0x0386,\r
-  0x0388, 0x038a,\r
-  0x038c, 0x038c,\r
-  0x038e, 0x038f,\r
-  0x0391, 0x03a1,\r
-  0x03a3, 0x03ab,\r
-  0x03d2, 0x03d4,\r
-  0x03d8, 0x03d8,\r
-  0x03da, 0x03da,\r
-  0x03dc, 0x03dc,\r
-  0x03de, 0x03de,\r
-  0x03e0, 0x03e0,\r
-  0x03e2, 0x03e2,\r
-  0x03e4, 0x03e4,\r
-  0x03e6, 0x03e6,\r
-  0x03e8, 0x03e8,\r
-  0x03ea, 0x03ea,\r
-  0x03ec, 0x03ec,\r
-  0x03ee, 0x03ee,\r
-  0x03f4, 0x03f4,\r
-  0x03f7, 0x03f7,\r
-  0x03f9, 0x03fa,\r
-  0x03fd, 0x042f,\r
-  0x0460, 0x0460,\r
-  0x0462, 0x0462,\r
-  0x0464, 0x0464,\r
-  0x0466, 0x0466,\r
-  0x0468, 0x0468,\r
-  0x046a, 0x046a,\r
-  0x046c, 0x046c,\r
-  0x046e, 0x046e,\r
-  0x0470, 0x0470,\r
-  0x0472, 0x0472,\r
-  0x0474, 0x0474,\r
-  0x0476, 0x0476,\r
-  0x0478, 0x0478,\r
-  0x047a, 0x047a,\r
-  0x047c, 0x047c,\r
-  0x047e, 0x047e,\r
-  0x0480, 0x0480,\r
-  0x048a, 0x048a,\r
-  0x048c, 0x048c,\r
-  0x048e, 0x048e,\r
-  0x0490, 0x0490,\r
-  0x0492, 0x0492,\r
-  0x0494, 0x0494,\r
-  0x0496, 0x0496,\r
-  0x0498, 0x0498,\r
-  0x049a, 0x049a,\r
-  0x049c, 0x049c,\r
-  0x049e, 0x049e,\r
-  0x04a0, 0x04a0,\r
-  0x04a2, 0x04a2,\r
-  0x04a4, 0x04a4,\r
-  0x04a6, 0x04a6,\r
-  0x04a8, 0x04a8,\r
-  0x04aa, 0x04aa,\r
-  0x04ac, 0x04ac,\r
-  0x04ae, 0x04ae,\r
-  0x04b0, 0x04b0,\r
-  0x04b2, 0x04b2,\r
-  0x04b4, 0x04b4,\r
-  0x04b6, 0x04b6,\r
-  0x04b8, 0x04b8,\r
-  0x04ba, 0x04ba,\r
-  0x04bc, 0x04bc,\r
-  0x04be, 0x04be,\r
-  0x04c0, 0x04c1,\r
-  0x04c3, 0x04c3,\r
-  0x04c5, 0x04c5,\r
-  0x04c7, 0x04c7,\r
-  0x04c9, 0x04c9,\r
-  0x04cb, 0x04cb,\r
-  0x04cd, 0x04cd,\r
-  0x04d0, 0x04d0,\r
-  0x04d2, 0x04d2,\r
-  0x04d4, 0x04d4,\r
-  0x04d6, 0x04d6,\r
-  0x04d8, 0x04d8,\r
-  0x04da, 0x04da,\r
-  0x04dc, 0x04dc,\r
-  0x04de, 0x04de,\r
-  0x04e0, 0x04e0,\r
-  0x04e2, 0x04e2,\r
-  0x04e4, 0x04e4,\r
-  0x04e6, 0x04e6,\r
-  0x04e8, 0x04e8,\r
-  0x04ea, 0x04ea,\r
-  0x04ec, 0x04ec,\r
-  0x04ee, 0x04ee,\r
-  0x04f0, 0x04f0,\r
-  0x04f2, 0x04f2,\r
-  0x04f4, 0x04f4,\r
-  0x04f6, 0x04f6,\r
-  0x04f8, 0x04f8,\r
-  0x0500, 0x0500,\r
-  0x0502, 0x0502,\r
-  0x0504, 0x0504,\r
-  0x0506, 0x0506,\r
-  0x0508, 0x0508,\r
-  0x050a, 0x050a,\r
-  0x050c, 0x050c,\r
-  0x050e, 0x050e,\r
-  0x0531, 0x0556,\r
-  0x10a0, 0x10c5,\r
-  0x1e00, 0x1e00,\r
-  0x1e02, 0x1e02,\r
-  0x1e04, 0x1e04,\r
-  0x1e06, 0x1e06,\r
-  0x1e08, 0x1e08,\r
-  0x1e0a, 0x1e0a,\r
-  0x1e0c, 0x1e0c,\r
-  0x1e0e, 0x1e0e,\r
-  0x1e10, 0x1e10,\r
-  0x1e12, 0x1e12,\r
-  0x1e14, 0x1e14,\r
-  0x1e16, 0x1e16,\r
-  0x1e18, 0x1e18,\r
-  0x1e1a, 0x1e1a,\r
-  0x1e1c, 0x1e1c,\r
-  0x1e1e, 0x1e1e,\r
-  0x1e20, 0x1e20,\r
-  0x1e22, 0x1e22,\r
-  0x1e24, 0x1e24,\r
-  0x1e26, 0x1e26,\r
-  0x1e28, 0x1e28,\r
-  0x1e2a, 0x1e2a,\r
-  0x1e2c, 0x1e2c,\r
-  0x1e2e, 0x1e2e,\r
-  0x1e30, 0x1e30,\r
-  0x1e32, 0x1e32,\r
-  0x1e34, 0x1e34,\r
-  0x1e36, 0x1e36,\r
-  0x1e38, 0x1e38,\r
-  0x1e3a, 0x1e3a,\r
-  0x1e3c, 0x1e3c,\r
-  0x1e3e, 0x1e3e,\r
-  0x1e40, 0x1e40,\r
-  0x1e42, 0x1e42,\r
-  0x1e44, 0x1e44,\r
-  0x1e46, 0x1e46,\r
-  0x1e48, 0x1e48,\r
-  0x1e4a, 0x1e4a,\r
-  0x1e4c, 0x1e4c,\r
-  0x1e4e, 0x1e4e,\r
-  0x1e50, 0x1e50,\r
-  0x1e52, 0x1e52,\r
-  0x1e54, 0x1e54,\r
-  0x1e56, 0x1e56,\r
-  0x1e58, 0x1e58,\r
-  0x1e5a, 0x1e5a,\r
-  0x1e5c, 0x1e5c,\r
-  0x1e5e, 0x1e5e,\r
-  0x1e60, 0x1e60,\r
-  0x1e62, 0x1e62,\r
-  0x1e64, 0x1e64,\r
-  0x1e66, 0x1e66,\r
-  0x1e68, 0x1e68,\r
-  0x1e6a, 0x1e6a,\r
-  0x1e6c, 0x1e6c,\r
-  0x1e6e, 0x1e6e,\r
-  0x1e70, 0x1e70,\r
-  0x1e72, 0x1e72,\r
-  0x1e74, 0x1e74,\r
-  0x1e76, 0x1e76,\r
-  0x1e78, 0x1e78,\r
-  0x1e7a, 0x1e7a,\r
-  0x1e7c, 0x1e7c,\r
-  0x1e7e, 0x1e7e,\r
-  0x1e80, 0x1e80,\r
-  0x1e82, 0x1e82,\r
-  0x1e84, 0x1e84,\r
-  0x1e86, 0x1e86,\r
-  0x1e88, 0x1e88,\r
-  0x1e8a, 0x1e8a,\r
-  0x1e8c, 0x1e8c,\r
-  0x1e8e, 0x1e8e,\r
-  0x1e90, 0x1e90,\r
-  0x1e92, 0x1e92,\r
-  0x1e94, 0x1e94,\r
-  0x1ea0, 0x1ea0,\r
-  0x1ea2, 0x1ea2,\r
-  0x1ea4, 0x1ea4,\r
-  0x1ea6, 0x1ea6,\r
-  0x1ea8, 0x1ea8,\r
-  0x1eaa, 0x1eaa,\r
-  0x1eac, 0x1eac,\r
-  0x1eae, 0x1eae,\r
-  0x1eb0, 0x1eb0,\r
-  0x1eb2, 0x1eb2,\r
-  0x1eb4, 0x1eb4,\r
-  0x1eb6, 0x1eb6,\r
-  0x1eb8, 0x1eb8,\r
-  0x1eba, 0x1eba,\r
-  0x1ebc, 0x1ebc,\r
-  0x1ebe, 0x1ebe,\r
-  0x1ec0, 0x1ec0,\r
-  0x1ec2, 0x1ec2,\r
-  0x1ec4, 0x1ec4,\r
-  0x1ec6, 0x1ec6,\r
-  0x1ec8, 0x1ec8,\r
-  0x1eca, 0x1eca,\r
-  0x1ecc, 0x1ecc,\r
-  0x1ece, 0x1ece,\r
-  0x1ed0, 0x1ed0,\r
-  0x1ed2, 0x1ed2,\r
-  0x1ed4, 0x1ed4,\r
-  0x1ed6, 0x1ed6,\r
-  0x1ed8, 0x1ed8,\r
-  0x1eda, 0x1eda,\r
-  0x1edc, 0x1edc,\r
-  0x1ede, 0x1ede,\r
-  0x1ee0, 0x1ee0,\r
-  0x1ee2, 0x1ee2,\r
-  0x1ee4, 0x1ee4,\r
-  0x1ee6, 0x1ee6,\r
-  0x1ee8, 0x1ee8,\r
-  0x1eea, 0x1eea,\r
-  0x1eec, 0x1eec,\r
-  0x1eee, 0x1eee,\r
-  0x1ef0, 0x1ef0,\r
-  0x1ef2, 0x1ef2,\r
-  0x1ef4, 0x1ef4,\r
-  0x1ef6, 0x1ef6,\r
-  0x1ef8, 0x1ef8,\r
-  0x1f08, 0x1f0f,\r
-  0x1f18, 0x1f1d,\r
-  0x1f28, 0x1f2f,\r
-  0x1f38, 0x1f3f,\r
-  0x1f48, 0x1f4d,\r
-  0x1f59, 0x1f59,\r
-  0x1f5b, 0x1f5b,\r
-  0x1f5d, 0x1f5d,\r
-  0x1f5f, 0x1f5f,\r
-  0x1f68, 0x1f6f,\r
-  0x1fb8, 0x1fbb,\r
-  0x1fc8, 0x1fcb,\r
-  0x1fd8, 0x1fdb,\r
-  0x1fe8, 0x1fec,\r
-  0x1ff8, 0x1ffb,\r
-  0x2102, 0x2102,\r
-  0x2107, 0x2107,\r
-  0x210b, 0x210d,\r
-  0x2110, 0x2112,\r
-  0x2115, 0x2115,\r
-  0x2119, 0x211d,\r
-  0x2124, 0x2124,\r
-  0x2126, 0x2126,\r
-  0x2128, 0x2128,\r
-  0x212a, 0x212d,\r
-  0x2130, 0x2131,\r
-  0x2133, 0x2133,\r
-  0x213e, 0x213f,\r
-  0x2145, 0x2145,\r
-  0x2c00, 0x2c2e,\r
-  0x2c80, 0x2c80,\r
-  0x2c82, 0x2c82,\r
-  0x2c84, 0x2c84,\r
-  0x2c86, 0x2c86,\r
-  0x2c88, 0x2c88,\r
-  0x2c8a, 0x2c8a,\r
-  0x2c8c, 0x2c8c,\r
-  0x2c8e, 0x2c8e,\r
-  0x2c90, 0x2c90,\r
-  0x2c92, 0x2c92,\r
-  0x2c94, 0x2c94,\r
-  0x2c96, 0x2c96,\r
-  0x2c98, 0x2c98,\r
-  0x2c9a, 0x2c9a,\r
-  0x2c9c, 0x2c9c,\r
-  0x2c9e, 0x2c9e,\r
-  0x2ca0, 0x2ca0,\r
-  0x2ca2, 0x2ca2,\r
-  0x2ca4, 0x2ca4,\r
-  0x2ca6, 0x2ca6,\r
-  0x2ca8, 0x2ca8,\r
-  0x2caa, 0x2caa,\r
-  0x2cac, 0x2cac,\r
-  0x2cae, 0x2cae,\r
-  0x2cb0, 0x2cb0,\r
-  0x2cb2, 0x2cb2,\r
-  0x2cb4, 0x2cb4,\r
-  0x2cb6, 0x2cb6,\r
-  0x2cb8, 0x2cb8,\r
-  0x2cba, 0x2cba,\r
-  0x2cbc, 0x2cbc,\r
-  0x2cbe, 0x2cbe,\r
-  0x2cc0, 0x2cc0,\r
-  0x2cc2, 0x2cc2,\r
-  0x2cc4, 0x2cc4,\r
-  0x2cc6, 0x2cc6,\r
-  0x2cc8, 0x2cc8,\r
-  0x2cca, 0x2cca,\r
-  0x2ccc, 0x2ccc,\r
-  0x2cce, 0x2cce,\r
-  0x2cd0, 0x2cd0,\r
-  0x2cd2, 0x2cd2,\r
-  0x2cd4, 0x2cd4,\r
-  0x2cd6, 0x2cd6,\r
-  0x2cd8, 0x2cd8,\r
-  0x2cda, 0x2cda,\r
-  0x2cdc, 0x2cdc,\r
-  0x2cde, 0x2cde,\r
-  0x2ce0, 0x2ce0,\r
-  0x2ce2, 0x2ce2,\r
-  0xff21, 0xff3a,\r
-  0x10400, 0x10427,\r
-  0x1d400, 0x1d419,\r
-  0x1d434, 0x1d44d,\r
-  0x1d468, 0x1d481,\r
-  0x1d49c, 0x1d49c,\r
-  0x1d49e, 0x1d49f,\r
-  0x1d4a2, 0x1d4a2,\r
-  0x1d4a5, 0x1d4a6,\r
-  0x1d4a9, 0x1d4ac,\r
-  0x1d4ae, 0x1d4b5,\r
-  0x1d4d0, 0x1d4e9,\r
-  0x1d504, 0x1d505,\r
-  0x1d507, 0x1d50a,\r
-  0x1d50d, 0x1d514,\r
-  0x1d516, 0x1d51c,\r
-  0x1d538, 0x1d539,\r
-  0x1d53b, 0x1d53e,\r
-  0x1d540, 0x1d544,\r
-  0x1d546, 0x1d546,\r
-  0x1d54a, 0x1d550,\r
-  0x1d56c, 0x1d585,\r
-  0x1d5a0, 0x1d5b9,\r
-  0x1d5d4, 0x1d5ed,\r
-  0x1d608, 0x1d621,\r
-  0x1d63c, 0x1d655,\r
-  0x1d670, 0x1d689,\r
-  0x1d6a8, 0x1d6c0,\r
-  0x1d6e2, 0x1d6fa,\r
-  0x1d71c, 0x1d734,\r
-  0x1d756, 0x1d76e,\r
-  0x1d790, 0x1d7a8\r
-}; /* CR_Upper */\r
-\r
-/* 'XDigit': [[:XDigit:]] */\r
-static const OnigCodePoint CR_XDigit[] = {\r
-  3,\r
-  0x0030, 0x0039,\r
-  0x0041, 0x0046,\r
-  0x0061, 0x0066\r
-}; /* CR_XDigit */\r
-\r
-/* 'Word': [[:Word:]] */\r
-static const OnigCodePoint CR_Word[] = {\r
-  464,\r
-  0x0030, 0x0039,\r
-  0x0041, 0x005a,\r
-  0x005f, 0x005f,\r
-  0x0061, 0x007a,\r
-  0x00aa, 0x00aa,\r
-  0x00b2, 0x00b3,\r
-  0x00b5, 0x00b5,\r
-  0x00b9, 0x00ba,\r
-  0x00bc, 0x00be,\r
-  0x00c0, 0x00d6,\r
-  0x00d8, 0x00f6,\r
-  0x00f8, 0x0241,\r
-  0x0250, 0x02c1,\r
-  0x02c6, 0x02d1,\r
-  0x02e0, 0x02e4,\r
-  0x02ee, 0x02ee,\r
-  0x0300, 0x036f,\r
-  0x037a, 0x037a,\r
-  0x0386, 0x0386,\r
-  0x0388, 0x038a,\r
-  0x038c, 0x038c,\r
-  0x038e, 0x03a1,\r
-  0x03a3, 0x03ce,\r
-  0x03d0, 0x03f5,\r
-  0x03f7, 0x0481,\r
-  0x0483, 0x0486,\r
-  0x0488, 0x04ce,\r
-  0x04d0, 0x04f9,\r
-  0x0500, 0x050f,\r
-  0x0531, 0x0556,\r
-  0x0559, 0x0559,\r
-  0x0561, 0x0587,\r
-  0x0591, 0x05b9,\r
-  0x05bb, 0x05bd,\r
-  0x05bf, 0x05bf,\r
-  0x05c1, 0x05c2,\r
-  0x05c4, 0x05c5,\r
-  0x05c7, 0x05c7,\r
-  0x05d0, 0x05ea,\r
-  0x05f0, 0x05f2,\r
-  0x0610, 0x0615,\r
-  0x0621, 0x063a,\r
-  0x0640, 0x065e,\r
-  0x0660, 0x0669,\r
-  0x066e, 0x06d3,\r
-  0x06d5, 0x06dc,\r
-  0x06de, 0x06e8,\r
-  0x06ea, 0x06fc,\r
-  0x06ff, 0x06ff,\r
-  0x0710, 0x074a,\r
-  0x074d, 0x076d,\r
-  0x0780, 0x07b1,\r
-  0x0901, 0x0939,\r
-  0x093c, 0x094d,\r
-  0x0950, 0x0954,\r
-  0x0958, 0x0963,\r
-  0x0966, 0x096f,\r
-  0x097d, 0x097d,\r
-  0x0981, 0x0983,\r
-  0x0985, 0x098c,\r
-  0x098f, 0x0990,\r
-  0x0993, 0x09a8,\r
-  0x09aa, 0x09b0,\r
-  0x09b2, 0x09b2,\r
-  0x09b6, 0x09b9,\r
-  0x09bc, 0x09c4,\r
-  0x09c7, 0x09c8,\r
-  0x09cb, 0x09ce,\r
-  0x09d7, 0x09d7,\r
-  0x09dc, 0x09dd,\r
-  0x09df, 0x09e3,\r
-  0x09e6, 0x09f1,\r
-  0x09f4, 0x09f9,\r
-  0x0a01, 0x0a03,\r
-  0x0a05, 0x0a0a,\r
-  0x0a0f, 0x0a10,\r
-  0x0a13, 0x0a28,\r
-  0x0a2a, 0x0a30,\r
-  0x0a32, 0x0a33,\r
-  0x0a35, 0x0a36,\r
-  0x0a38, 0x0a39,\r
-  0x0a3c, 0x0a3c,\r
-  0x0a3e, 0x0a42,\r
-  0x0a47, 0x0a48,\r
-  0x0a4b, 0x0a4d,\r
-  0x0a59, 0x0a5c,\r
-  0x0a5e, 0x0a5e,\r
-  0x0a66, 0x0a74,\r
-  0x0a81, 0x0a83,\r
-  0x0a85, 0x0a8d,\r
-  0x0a8f, 0x0a91,\r
-  0x0a93, 0x0aa8,\r
-  0x0aaa, 0x0ab0,\r
-  0x0ab2, 0x0ab3,\r
-  0x0ab5, 0x0ab9,\r
-  0x0abc, 0x0ac5,\r
-  0x0ac7, 0x0ac9,\r
-  0x0acb, 0x0acd,\r
-  0x0ad0, 0x0ad0,\r
-  0x0ae0, 0x0ae3,\r
-  0x0ae6, 0x0aef,\r
-  0x0b01, 0x0b03,\r
-  0x0b05, 0x0b0c,\r
-  0x0b0f, 0x0b10,\r
-  0x0b13, 0x0b28,\r
-  0x0b2a, 0x0b30,\r
-  0x0b32, 0x0b33,\r
-  0x0b35, 0x0b39,\r
-  0x0b3c, 0x0b43,\r
-  0x0b47, 0x0b48,\r
-  0x0b4b, 0x0b4d,\r
-  0x0b56, 0x0b57,\r
-  0x0b5c, 0x0b5d,\r
-  0x0b5f, 0x0b61,\r
-  0x0b66, 0x0b6f,\r
-  0x0b71, 0x0b71,\r
-  0x0b82, 0x0b83,\r
-  0x0b85, 0x0b8a,\r
-  0x0b8e, 0x0b90,\r
-  0x0b92, 0x0b95,\r
-  0x0b99, 0x0b9a,\r
-  0x0b9c, 0x0b9c,\r
-  0x0b9e, 0x0b9f,\r
-  0x0ba3, 0x0ba4,\r
-  0x0ba8, 0x0baa,\r
-  0x0bae, 0x0bb9,\r
-  0x0bbe, 0x0bc2,\r
-  0x0bc6, 0x0bc8,\r
-  0x0bca, 0x0bcd,\r
-  0x0bd7, 0x0bd7,\r
-  0x0be6, 0x0bf2,\r
-  0x0c01, 0x0c03,\r
-  0x0c05, 0x0c0c,\r
-  0x0c0e, 0x0c10,\r
-  0x0c12, 0x0c28,\r
-  0x0c2a, 0x0c33,\r
-  0x0c35, 0x0c39,\r
-  0x0c3e, 0x0c44,\r
-  0x0c46, 0x0c48,\r
-  0x0c4a, 0x0c4d,\r
-  0x0c55, 0x0c56,\r
-  0x0c60, 0x0c61,\r
-  0x0c66, 0x0c6f,\r
-  0x0c82, 0x0c83,\r
-  0x0c85, 0x0c8c,\r
-  0x0c8e, 0x0c90,\r
-  0x0c92, 0x0ca8,\r
-  0x0caa, 0x0cb3,\r
-  0x0cb5, 0x0cb9,\r
-  0x0cbc, 0x0cc4,\r
-  0x0cc6, 0x0cc8,\r
-  0x0cca, 0x0ccd,\r
-  0x0cd5, 0x0cd6,\r
-  0x0cde, 0x0cde,\r
-  0x0ce0, 0x0ce1,\r
-  0x0ce6, 0x0cef,\r
-  0x0d02, 0x0d03,\r
-  0x0d05, 0x0d0c,\r
-  0x0d0e, 0x0d10,\r
-  0x0d12, 0x0d28,\r
-  0x0d2a, 0x0d39,\r
-  0x0d3e, 0x0d43,\r
-  0x0d46, 0x0d48,\r
-  0x0d4a, 0x0d4d,\r
-  0x0d57, 0x0d57,\r
-  0x0d60, 0x0d61,\r
-  0x0d66, 0x0d6f,\r
-  0x0d82, 0x0d83,\r
-  0x0d85, 0x0d96,\r
-  0x0d9a, 0x0db1,\r
-  0x0db3, 0x0dbb,\r
-  0x0dbd, 0x0dbd,\r
-  0x0dc0, 0x0dc6,\r
-  0x0dca, 0x0dca,\r
-  0x0dcf, 0x0dd4,\r
-  0x0dd6, 0x0dd6,\r
-  0x0dd8, 0x0ddf,\r
-  0x0df2, 0x0df3,\r
-  0x0e01, 0x0e3a,\r
-  0x0e40, 0x0e4e,\r
-  0x0e50, 0x0e59,\r
-  0x0e81, 0x0e82,\r
-  0x0e84, 0x0e84,\r
-  0x0e87, 0x0e88,\r
-  0x0e8a, 0x0e8a,\r
-  0x0e8d, 0x0e8d,\r
-  0x0e94, 0x0e97,\r
-  0x0e99, 0x0e9f,\r
-  0x0ea1, 0x0ea3,\r
-  0x0ea5, 0x0ea5,\r
-  0x0ea7, 0x0ea7,\r
-  0x0eaa, 0x0eab,\r
-  0x0ead, 0x0eb9,\r
-  0x0ebb, 0x0ebd,\r
-  0x0ec0, 0x0ec4,\r
-  0x0ec6, 0x0ec6,\r
-  0x0ec8, 0x0ecd,\r
-  0x0ed0, 0x0ed9,\r
-  0x0edc, 0x0edd,\r
-  0x0f00, 0x0f00,\r
-  0x0f18, 0x0f19,\r
-  0x0f20, 0x0f33,\r
-  0x0f35, 0x0f35,\r
-  0x0f37, 0x0f37,\r
-  0x0f39, 0x0f39,\r
-  0x0f3e, 0x0f47,\r
-  0x0f49, 0x0f6a,\r
-  0x0f71, 0x0f84,\r
-  0x0f86, 0x0f8b,\r
-  0x0f90, 0x0f97,\r
-  0x0f99, 0x0fbc,\r
-  0x0fc6, 0x0fc6,\r
-  0x1000, 0x1021,\r
-  0x1023, 0x1027,\r
-  0x1029, 0x102a,\r
-  0x102c, 0x1032,\r
-  0x1036, 0x1039,\r
-  0x1040, 0x1049,\r
-  0x1050, 0x1059,\r
-  0x10a0, 0x10c5,\r
-  0x10d0, 0x10fa,\r
-  0x10fc, 0x10fc,\r
-  0x1100, 0x1159,\r
-  0x115f, 0x11a2,\r
-  0x11a8, 0x11f9,\r
-  0x1200, 0x1248,\r
-  0x124a, 0x124d,\r
-  0x1250, 0x1256,\r
-  0x1258, 0x1258,\r
-  0x125a, 0x125d,\r
-  0x1260, 0x1288,\r
-  0x128a, 0x128d,\r
-  0x1290, 0x12b0,\r
-  0x12b2, 0x12b5,\r
-  0x12b8, 0x12be,\r
-  0x12c0, 0x12c0,\r
-  0x12c2, 0x12c5,\r
-  0x12c8, 0x12d6,\r
-  0x12d8, 0x1310,\r
-  0x1312, 0x1315,\r
-  0x1318, 0x135a,\r
-  0x135f, 0x135f,\r
-  0x1369, 0x137c,\r
-  0x1380, 0x138f,\r
-  0x13a0, 0x13f4,\r
-  0x1401, 0x166c,\r
-  0x166f, 0x1676,\r
-  0x1681, 0x169a,\r
-  0x16a0, 0x16ea,\r
-  0x16ee, 0x16f0,\r
-  0x1700, 0x170c,\r
-  0x170e, 0x1714,\r
-  0x1720, 0x1734,\r
-  0x1740, 0x1753,\r
-  0x1760, 0x176c,\r
-  0x176e, 0x1770,\r
-  0x1772, 0x1773,\r
-  0x1780, 0x17b3,\r
-  0x17b6, 0x17d3,\r
-  0x17d7, 0x17d7,\r
-  0x17dc, 0x17dd,\r
-  0x17e0, 0x17e9,\r
-  0x17f0, 0x17f9,\r
-  0x180b, 0x180d,\r
-  0x1810, 0x1819,\r
-  0x1820, 0x1877,\r
-  0x1880, 0x18a9,\r
-  0x1900, 0x191c,\r
-  0x1920, 0x192b,\r
-  0x1930, 0x193b,\r
-  0x1946, 0x196d,\r
-  0x1970, 0x1974,\r
-  0x1980, 0x19a9,\r
-  0x19b0, 0x19c9,\r
-  0x19d0, 0x19d9,\r
-  0x1a00, 0x1a1b,\r
-  0x1d00, 0x1dc3,\r
-  0x1e00, 0x1e9b,\r
-  0x1ea0, 0x1ef9,\r
-  0x1f00, 0x1f15,\r
-  0x1f18, 0x1f1d,\r
-  0x1f20, 0x1f45,\r
-  0x1f48, 0x1f4d,\r
-  0x1f50, 0x1f57,\r
-  0x1f59, 0x1f59,\r
-  0x1f5b, 0x1f5b,\r
-  0x1f5d, 0x1f5d,\r
-  0x1f5f, 0x1f7d,\r
-  0x1f80, 0x1fb4,\r
-  0x1fb6, 0x1fbc,\r
-  0x1fbe, 0x1fbe,\r
-  0x1fc2, 0x1fc4,\r
-  0x1fc6, 0x1fcc,\r
-  0x1fd0, 0x1fd3,\r
-  0x1fd6, 0x1fdb,\r
-  0x1fe0, 0x1fec,\r
-  0x1ff2, 0x1ff4,\r
-  0x1ff6, 0x1ffc,\r
-  0x203f, 0x2040,\r
-  0x2054, 0x2054,\r
-  0x2070, 0x2071,\r
-  0x2074, 0x2079,\r
-  0x207f, 0x2089,\r
-  0x2090, 0x2094,\r
-  0x20d0, 0x20eb,\r
-  0x2102, 0x2102,\r
-  0x2107, 0x2107,\r
-  0x210a, 0x2113,\r
-  0x2115, 0x2115,\r
-  0x2119, 0x211d,\r
-  0x2124, 0x2124,\r
-  0x2126, 0x2126,\r
-  0x2128, 0x2128,\r
-  0x212a, 0x212d,\r
-  0x212f, 0x2131,\r
-  0x2133, 0x2139,\r
-  0x213c, 0x213f,\r
-  0x2145, 0x2149,\r
-  0x2153, 0x2183,\r
-  0x2460, 0x249b,\r
-  0x24ea, 0x24ff,\r
-  0x2776, 0x2793,\r
-  0x2c00, 0x2c2e,\r
-  0x2c30, 0x2c5e,\r
-  0x2c80, 0x2ce4,\r
-  0x2cfd, 0x2cfd,\r
-  0x2d00, 0x2d25,\r
-  0x2d30, 0x2d65,\r
-  0x2d6f, 0x2d6f,\r
-  0x2d80, 0x2d96,\r
-  0x2da0, 0x2da6,\r
-  0x2da8, 0x2dae,\r
-  0x2db0, 0x2db6,\r
-  0x2db8, 0x2dbe,\r
-  0x2dc0, 0x2dc6,\r
-  0x2dc8, 0x2dce,\r
-  0x2dd0, 0x2dd6,\r
-  0x2dd8, 0x2dde,\r
-  0x3005, 0x3007,\r
-  0x3021, 0x302f,\r
-  0x3031, 0x3035,\r
-  0x3038, 0x303c,\r
-  0x3041, 0x3096,\r
-  0x3099, 0x309a,\r
-  0x309d, 0x309f,\r
-  0x30a1, 0x30fa,\r
-  0x30fc, 0x30ff,\r
-  0x3105, 0x312c,\r
-  0x3131, 0x318e,\r
-  0x3192, 0x3195,\r
-  0x31a0, 0x31b7,\r
-  0x31f0, 0x31ff,\r
-  0x3220, 0x3229,\r
-  0x3251, 0x325f,\r
-  0x3280, 0x3289,\r
-  0x32b1, 0x32bf,\r
-  0x3400, 0x4db5,\r
-  0x4e00, 0x9fbb,\r
-  0xa000, 0xa48c,\r
-  0xa800, 0xa827,\r
-  0xac00, 0xd7a3,\r
-  0xf900, 0xfa2d,\r
-  0xfa30, 0xfa6a,\r
-  0xfa70, 0xfad9,\r
-  0xfb00, 0xfb06,\r
-  0xfb13, 0xfb17,\r
-  0xfb1d, 0xfb28,\r
-  0xfb2a, 0xfb36,\r
-  0xfb38, 0xfb3c,\r
-  0xfb3e, 0xfb3e,\r
-  0xfb40, 0xfb41,\r
-  0xfb43, 0xfb44,\r
-  0xfb46, 0xfbb1,\r
-  0xfbd3, 0xfd3d,\r
-  0xfd50, 0xfd8f,\r
-  0xfd92, 0xfdc7,\r
-  0xfdf0, 0xfdfb,\r
-  0xfe00, 0xfe0f,\r
-  0xfe20, 0xfe23,\r
-  0xfe33, 0xfe34,\r
-  0xfe4d, 0xfe4f,\r
-  0xfe70, 0xfe74,\r
-  0xfe76, 0xfefc,\r
-  0xff10, 0xff19,\r
-  0xff21, 0xff3a,\r
-  0xff3f, 0xff3f,\r
-  0xff41, 0xff5a,\r
-  0xff66, 0xffbe,\r
-  0xffc2, 0xffc7,\r
-  0xffca, 0xffcf,\r
-  0xffd2, 0xffd7,\r
-  0xffda, 0xffdc,\r
-  0x10000, 0x1000b,\r
-  0x1000d, 0x10026,\r
-  0x10028, 0x1003a,\r
-  0x1003c, 0x1003d,\r
-  0x1003f, 0x1004d,\r
-  0x10050, 0x1005d,\r
-  0x10080, 0x100fa,\r
-  0x10107, 0x10133,\r
-  0x10140, 0x10178,\r
-  0x1018a, 0x1018a,\r
-  0x10300, 0x1031e,\r
-  0x10320, 0x10323,\r
-  0x10330, 0x1034a,\r
-  0x10380, 0x1039d,\r
-  0x103a0, 0x103c3,\r
-  0x103c8, 0x103cf,\r
-  0x103d1, 0x103d5,\r
-  0x10400, 0x1049d,\r
-  0x104a0, 0x104a9,\r
-  0x10800, 0x10805,\r
-  0x10808, 0x10808,\r
-  0x1080a, 0x10835,\r
-  0x10837, 0x10838,\r
-  0x1083c, 0x1083c,\r
-  0x1083f, 0x1083f,\r
-  0x10a00, 0x10a03,\r
-  0x10a05, 0x10a06,\r
-  0x10a0c, 0x10a13,\r
-  0x10a15, 0x10a17,\r
-  0x10a19, 0x10a33,\r
-  0x10a38, 0x10a3a,\r
-  0x10a3f, 0x10a47,\r
-  0x1d165, 0x1d169,\r
-  0x1d16d, 0x1d172,\r
-  0x1d17b, 0x1d182,\r
-  0x1d185, 0x1d18b,\r
-  0x1d1aa, 0x1d1ad,\r
-  0x1d242, 0x1d244,\r
-  0x1d400, 0x1d454,\r
-  0x1d456, 0x1d49c,\r
-  0x1d49e, 0x1d49f,\r
-  0x1d4a2, 0x1d4a2,\r
-  0x1d4a5, 0x1d4a6,\r
-  0x1d4a9, 0x1d4ac,\r
-  0x1d4ae, 0x1d4b9,\r
-  0x1d4bb, 0x1d4bb,\r
-  0x1d4bd, 0x1d4c3,\r
-  0x1d4c5, 0x1d505,\r
-  0x1d507, 0x1d50a,\r
-  0x1d50d, 0x1d514,\r
-  0x1d516, 0x1d51c,\r
-  0x1d51e, 0x1d539,\r
-  0x1d53b, 0x1d53e,\r
-  0x1d540, 0x1d544,\r
-  0x1d546, 0x1d546,\r
-  0x1d54a, 0x1d550,\r
-  0x1d552, 0x1d6a5,\r
-  0x1d6a8, 0x1d6c0,\r
-  0x1d6c2, 0x1d6da,\r
-  0x1d6dc, 0x1d6fa,\r
-  0x1d6fc, 0x1d714,\r
-  0x1d716, 0x1d734,\r
-  0x1d736, 0x1d74e,\r
-  0x1d750, 0x1d76e,\r
-  0x1d770, 0x1d788,\r
-  0x1d78a, 0x1d7a8,\r
-  0x1d7aa, 0x1d7c2,\r
-  0x1d7c4, 0x1d7c9,\r
-  0x1d7ce, 0x1d7ff,\r
-  0x20000, 0x2a6d6,\r
-  0x2f800, 0x2fa1d,\r
-  0xe0100, 0xe01ef\r
-}; /* CR_Word */\r
-\r
-/* 'Alnum': [[:Alnum:]] */\r
-static const OnigCodePoint CR_Alnum[] = {\r
-  436,\r
-  0x0030, 0x0039,\r
-  0x0041, 0x005a,\r
-  0x0061, 0x007a,\r
-  0x00aa, 0x00aa,\r
-  0x00b5, 0x00b5,\r
-  0x00ba, 0x00ba,\r
-  0x00c0, 0x00d6,\r
-  0x00d8, 0x00f6,\r
-  0x00f8, 0x0241,\r
-  0x0250, 0x02c1,\r
-  0x02c6, 0x02d1,\r
-  0x02e0, 0x02e4,\r
-  0x02ee, 0x02ee,\r
-  0x0300, 0x036f,\r
-  0x037a, 0x037a,\r
-  0x0386, 0x0386,\r
-  0x0388, 0x038a,\r
-  0x038c, 0x038c,\r
-  0x038e, 0x03a1,\r
-  0x03a3, 0x03ce,\r
-  0x03d0, 0x03f5,\r
-  0x03f7, 0x0481,\r
-  0x0483, 0x0486,\r
-  0x0488, 0x04ce,\r
-  0x04d0, 0x04f9,\r
-  0x0500, 0x050f,\r
-  0x0531, 0x0556,\r
-  0x0559, 0x0559,\r
-  0x0561, 0x0587,\r
-  0x0591, 0x05b9,\r
-  0x05bb, 0x05bd,\r
-  0x05bf, 0x05bf,\r
-  0x05c1, 0x05c2,\r
-  0x05c4, 0x05c5,\r
-  0x05c7, 0x05c7,\r
-  0x05d0, 0x05ea,\r
-  0x05f0, 0x05f2,\r
-  0x0610, 0x0615,\r
-  0x0621, 0x063a,\r
-  0x0640, 0x065e,\r
-  0x0660, 0x0669,\r
-  0x066e, 0x06d3,\r
-  0x06d5, 0x06dc,\r
-  0x06de, 0x06e8,\r
-  0x06ea, 0x06fc,\r
-  0x06ff, 0x06ff,\r
-  0x0710, 0x074a,\r
-  0x074d, 0x076d,\r
-  0x0780, 0x07b1,\r
-  0x0901, 0x0939,\r
-  0x093c, 0x094d,\r
-  0x0950, 0x0954,\r
-  0x0958, 0x0963,\r
-  0x0966, 0x096f,\r
-  0x097d, 0x097d,\r
-  0x0981, 0x0983,\r
-  0x0985, 0x098c,\r
-  0x098f, 0x0990,\r
-  0x0993, 0x09a8,\r
-  0x09aa, 0x09b0,\r
-  0x09b2, 0x09b2,\r
-  0x09b6, 0x09b9,\r
-  0x09bc, 0x09c4,\r
-  0x09c7, 0x09c8,\r
-  0x09cb, 0x09ce,\r
-  0x09d7, 0x09d7,\r
-  0x09dc, 0x09dd,\r
-  0x09df, 0x09e3,\r
-  0x09e6, 0x09f1,\r
-  0x0a01, 0x0a03,\r
-  0x0a05, 0x0a0a,\r
-  0x0a0f, 0x0a10,\r
-  0x0a13, 0x0a28,\r
-  0x0a2a, 0x0a30,\r
-  0x0a32, 0x0a33,\r
-  0x0a35, 0x0a36,\r
-  0x0a38, 0x0a39,\r
-  0x0a3c, 0x0a3c,\r
-  0x0a3e, 0x0a42,\r
-  0x0a47, 0x0a48,\r
-  0x0a4b, 0x0a4d,\r
-  0x0a59, 0x0a5c,\r
-  0x0a5e, 0x0a5e,\r
-  0x0a66, 0x0a74,\r
-  0x0a81, 0x0a83,\r
-  0x0a85, 0x0a8d,\r
-  0x0a8f, 0x0a91,\r
-  0x0a93, 0x0aa8,\r
-  0x0aaa, 0x0ab0,\r
-  0x0ab2, 0x0ab3,\r
-  0x0ab5, 0x0ab9,\r
-  0x0abc, 0x0ac5,\r
-  0x0ac7, 0x0ac9,\r
-  0x0acb, 0x0acd,\r
-  0x0ad0, 0x0ad0,\r
-  0x0ae0, 0x0ae3,\r
-  0x0ae6, 0x0aef,\r
-  0x0b01, 0x0b03,\r
-  0x0b05, 0x0b0c,\r
-  0x0b0f, 0x0b10,\r
-  0x0b13, 0x0b28,\r
-  0x0b2a, 0x0b30,\r
-  0x0b32, 0x0b33,\r
-  0x0b35, 0x0b39,\r
-  0x0b3c, 0x0b43,\r
-  0x0b47, 0x0b48,\r
-  0x0b4b, 0x0b4d,\r
-  0x0b56, 0x0b57,\r
-  0x0b5c, 0x0b5d,\r
-  0x0b5f, 0x0b61,\r
-  0x0b66, 0x0b6f,\r
-  0x0b71, 0x0b71,\r
-  0x0b82, 0x0b83,\r
-  0x0b85, 0x0b8a,\r
-  0x0b8e, 0x0b90,\r
-  0x0b92, 0x0b95,\r
-  0x0b99, 0x0b9a,\r
-  0x0b9c, 0x0b9c,\r
-  0x0b9e, 0x0b9f,\r
-  0x0ba3, 0x0ba4,\r
-  0x0ba8, 0x0baa,\r
-  0x0bae, 0x0bb9,\r
-  0x0bbe, 0x0bc2,\r
-  0x0bc6, 0x0bc8,\r
-  0x0bca, 0x0bcd,\r
-  0x0bd7, 0x0bd7,\r
-  0x0be6, 0x0bef,\r
-  0x0c01, 0x0c03,\r
-  0x0c05, 0x0c0c,\r
-  0x0c0e, 0x0c10,\r
-  0x0c12, 0x0c28,\r
-  0x0c2a, 0x0c33,\r
-  0x0c35, 0x0c39,\r
-  0x0c3e, 0x0c44,\r
-  0x0c46, 0x0c48,\r
-  0x0c4a, 0x0c4d,\r
-  0x0c55, 0x0c56,\r
-  0x0c60, 0x0c61,\r
-  0x0c66, 0x0c6f,\r
-  0x0c82, 0x0c83,\r
-  0x0c85, 0x0c8c,\r
-  0x0c8e, 0x0c90,\r
-  0x0c92, 0x0ca8,\r
-  0x0caa, 0x0cb3,\r
-  0x0cb5, 0x0cb9,\r
-  0x0cbc, 0x0cc4,\r
-  0x0cc6, 0x0cc8,\r
-  0x0cca, 0x0ccd,\r
-  0x0cd5, 0x0cd6,\r
-  0x0cde, 0x0cde,\r
-  0x0ce0, 0x0ce1,\r
-  0x0ce6, 0x0cef,\r
-  0x0d02, 0x0d03,\r
-  0x0d05, 0x0d0c,\r
-  0x0d0e, 0x0d10,\r
-  0x0d12, 0x0d28,\r
-  0x0d2a, 0x0d39,\r
-  0x0d3e, 0x0d43,\r
-  0x0d46, 0x0d48,\r
-  0x0d4a, 0x0d4d,\r
-  0x0d57, 0x0d57,\r
-  0x0d60, 0x0d61,\r
-  0x0d66, 0x0d6f,\r
-  0x0d82, 0x0d83,\r
-  0x0d85, 0x0d96,\r
-  0x0d9a, 0x0db1,\r
-  0x0db3, 0x0dbb,\r
-  0x0dbd, 0x0dbd,\r
-  0x0dc0, 0x0dc6,\r
-  0x0dca, 0x0dca,\r
-  0x0dcf, 0x0dd4,\r
-  0x0dd6, 0x0dd6,\r
-  0x0dd8, 0x0ddf,\r
-  0x0df2, 0x0df3,\r
-  0x0e01, 0x0e3a,\r
-  0x0e40, 0x0e4e,\r
-  0x0e50, 0x0e59,\r
-  0x0e81, 0x0e82,\r
-  0x0e84, 0x0e84,\r
-  0x0e87, 0x0e88,\r
-  0x0e8a, 0x0e8a,\r
-  0x0e8d, 0x0e8d,\r
-  0x0e94, 0x0e97,\r
-  0x0e99, 0x0e9f,\r
-  0x0ea1, 0x0ea3,\r
-  0x0ea5, 0x0ea5,\r
-  0x0ea7, 0x0ea7,\r
-  0x0eaa, 0x0eab,\r
-  0x0ead, 0x0eb9,\r
-  0x0ebb, 0x0ebd,\r
-  0x0ec0, 0x0ec4,\r
-  0x0ec6, 0x0ec6,\r
-  0x0ec8, 0x0ecd,\r
-  0x0ed0, 0x0ed9,\r
-  0x0edc, 0x0edd,\r
-  0x0f00, 0x0f00,\r
-  0x0f18, 0x0f19,\r
-  0x0f20, 0x0f29,\r
-  0x0f35, 0x0f35,\r
-  0x0f37, 0x0f37,\r
-  0x0f39, 0x0f39,\r
-  0x0f3e, 0x0f47,\r
-  0x0f49, 0x0f6a,\r
-  0x0f71, 0x0f84,\r
-  0x0f86, 0x0f8b,\r
-  0x0f90, 0x0f97,\r
-  0x0f99, 0x0fbc,\r
-  0x0fc6, 0x0fc6,\r
-  0x1000, 0x1021,\r
-  0x1023, 0x1027,\r
-  0x1029, 0x102a,\r
-  0x102c, 0x1032,\r
-  0x1036, 0x1039,\r
-  0x1040, 0x1049,\r
-  0x1050, 0x1059,\r
-  0x10a0, 0x10c5,\r
-  0x10d0, 0x10fa,\r
-  0x10fc, 0x10fc,\r
-  0x1100, 0x1159,\r
-  0x115f, 0x11a2,\r
-  0x11a8, 0x11f9,\r
-  0x1200, 0x1248,\r
-  0x124a, 0x124d,\r
-  0x1250, 0x1256,\r
-  0x1258, 0x1258,\r
-  0x125a, 0x125d,\r
-  0x1260, 0x1288,\r
-  0x128a, 0x128d,\r
-  0x1290, 0x12b0,\r
-  0x12b2, 0x12b5,\r
-  0x12b8, 0x12be,\r
-  0x12c0, 0x12c0,\r
-  0x12c2, 0x12c5,\r
-  0x12c8, 0x12d6,\r
-  0x12d8, 0x1310,\r
-  0x1312, 0x1315,\r
-  0x1318, 0x135a,\r
-  0x135f, 0x135f,\r
-  0x1380, 0x138f,\r
-  0x13a0, 0x13f4,\r
-  0x1401, 0x166c,\r
-  0x166f, 0x1676,\r
-  0x1681, 0x169a,\r
-  0x16a0, 0x16ea,\r
-  0x1700, 0x170c,\r
-  0x170e, 0x1714,\r
-  0x1720, 0x1734,\r
-  0x1740, 0x1753,\r
-  0x1760, 0x176c,\r
-  0x176e, 0x1770,\r
-  0x1772, 0x1773,\r
-  0x1780, 0x17b3,\r
-  0x17b6, 0x17d3,\r
-  0x17d7, 0x17d7,\r
-  0x17dc, 0x17dd,\r
-  0x17e0, 0x17e9,\r
-  0x180b, 0x180d,\r
-  0x1810, 0x1819,\r
-  0x1820, 0x1877,\r
-  0x1880, 0x18a9,\r
-  0x1900, 0x191c,\r
-  0x1920, 0x192b,\r
-  0x1930, 0x193b,\r
-  0x1946, 0x196d,\r
-  0x1970, 0x1974,\r
-  0x1980, 0x19a9,\r
-  0x19b0, 0x19c9,\r
-  0x19d0, 0x19d9,\r
-  0x1a00, 0x1a1b,\r
-  0x1d00, 0x1dc3,\r
-  0x1e00, 0x1e9b,\r
-  0x1ea0, 0x1ef9,\r
-  0x1f00, 0x1f15,\r
-  0x1f18, 0x1f1d,\r
-  0x1f20, 0x1f45,\r
-  0x1f48, 0x1f4d,\r
-  0x1f50, 0x1f57,\r
-  0x1f59, 0x1f59,\r
-  0x1f5b, 0x1f5b,\r
-  0x1f5d, 0x1f5d,\r
-  0x1f5f, 0x1f7d,\r
-  0x1f80, 0x1fb4,\r
-  0x1fb6, 0x1fbc,\r
-  0x1fbe, 0x1fbe,\r
-  0x1fc2, 0x1fc4,\r
-  0x1fc6, 0x1fcc,\r
-  0x1fd0, 0x1fd3,\r
-  0x1fd6, 0x1fdb,\r
-  0x1fe0, 0x1fec,\r
-  0x1ff2, 0x1ff4,\r
-  0x1ff6, 0x1ffc,\r
-  0x2071, 0x2071,\r
-  0x207f, 0x207f,\r
-  0x2090, 0x2094,\r
-  0x20d0, 0x20eb,\r
-  0x2102, 0x2102,\r
-  0x2107, 0x2107,\r
-  0x210a, 0x2113,\r
-  0x2115, 0x2115,\r
-  0x2119, 0x211d,\r
-  0x2124, 0x2124,\r
-  0x2126, 0x2126,\r
-  0x2128, 0x2128,\r
-  0x212a, 0x212d,\r
-  0x212f, 0x2131,\r
-  0x2133, 0x2139,\r
-  0x213c, 0x213f,\r
-  0x2145, 0x2149,\r
-  0x2c00, 0x2c2e,\r
-  0x2c30, 0x2c5e,\r
-  0x2c80, 0x2ce4,\r
-  0x2d00, 0x2d25,\r
-  0x2d30, 0x2d65,\r
-  0x2d6f, 0x2d6f,\r
-  0x2d80, 0x2d96,\r
-  0x2da0, 0x2da6,\r
-  0x2da8, 0x2dae,\r
-  0x2db0, 0x2db6,\r
-  0x2db8, 0x2dbe,\r
-  0x2dc0, 0x2dc6,\r
-  0x2dc8, 0x2dce,\r
-  0x2dd0, 0x2dd6,\r
-  0x2dd8, 0x2dde,\r
-  0x3005, 0x3006,\r
-  0x302a, 0x302f,\r
-  0x3031, 0x3035,\r
-  0x303b, 0x303c,\r
-  0x3041, 0x3096,\r
-  0x3099, 0x309a,\r
-  0x309d, 0x309f,\r
-  0x30a1, 0x30fa,\r
-  0x30fc, 0x30ff,\r
-  0x3105, 0x312c,\r
-  0x3131, 0x318e,\r
-  0x31a0, 0x31b7,\r
-  0x31f0, 0x31ff,\r
-  0x3400, 0x4db5,\r
-  0x4e00, 0x9fbb,\r
-  0xa000, 0xa48c,\r
-  0xa800, 0xa827,\r
-  0xac00, 0xd7a3,\r
-  0xf900, 0xfa2d,\r
-  0xfa30, 0xfa6a,\r
-  0xfa70, 0xfad9,\r
-  0xfb00, 0xfb06,\r
-  0xfb13, 0xfb17,\r
-  0xfb1d, 0xfb28,\r
-  0xfb2a, 0xfb36,\r
-  0xfb38, 0xfb3c,\r
-  0xfb3e, 0xfb3e,\r
-  0xfb40, 0xfb41,\r
-  0xfb43, 0xfb44,\r
-  0xfb46, 0xfbb1,\r
-  0xfbd3, 0xfd3d,\r
-  0xfd50, 0xfd8f,\r
-  0xfd92, 0xfdc7,\r
-  0xfdf0, 0xfdfb,\r
-  0xfe00, 0xfe0f,\r
-  0xfe20, 0xfe23,\r
-  0xfe70, 0xfe74,\r
-  0xfe76, 0xfefc,\r
-  0xff10, 0xff19,\r
-  0xff21, 0xff3a,\r
-  0xff41, 0xff5a,\r
-  0xff66, 0xffbe,\r
-  0xffc2, 0xffc7,\r
-  0xffca, 0xffcf,\r
-  0xffd2, 0xffd7,\r
-  0xffda, 0xffdc,\r
-  0x10000, 0x1000b,\r
-  0x1000d, 0x10026,\r
-  0x10028, 0x1003a,\r
-  0x1003c, 0x1003d,\r
-  0x1003f, 0x1004d,\r
-  0x10050, 0x1005d,\r
-  0x10080, 0x100fa,\r
-  0x10300, 0x1031e,\r
-  0x10330, 0x10349,\r
-  0x10380, 0x1039d,\r
-  0x103a0, 0x103c3,\r
-  0x103c8, 0x103cf,\r
-  0x10400, 0x1049d,\r
-  0x104a0, 0x104a9,\r
-  0x10800, 0x10805,\r
-  0x10808, 0x10808,\r
-  0x1080a, 0x10835,\r
-  0x10837, 0x10838,\r
-  0x1083c, 0x1083c,\r
-  0x1083f, 0x1083f,\r
-  0x10a00, 0x10a03,\r
-  0x10a05, 0x10a06,\r
-  0x10a0c, 0x10a13,\r
-  0x10a15, 0x10a17,\r
-  0x10a19, 0x10a33,\r
-  0x10a38, 0x10a3a,\r
-  0x10a3f, 0x10a3f,\r
-  0x1d165, 0x1d169,\r
-  0x1d16d, 0x1d172,\r
-  0x1d17b, 0x1d182,\r
-  0x1d185, 0x1d18b,\r
-  0x1d1aa, 0x1d1ad,\r
-  0x1d242, 0x1d244,\r
-  0x1d400, 0x1d454,\r
-  0x1d456, 0x1d49c,\r
-  0x1d49e, 0x1d49f,\r
-  0x1d4a2, 0x1d4a2,\r
-  0x1d4a5, 0x1d4a6,\r
-  0x1d4a9, 0x1d4ac,\r
-  0x1d4ae, 0x1d4b9,\r
-  0x1d4bb, 0x1d4bb,\r
-  0x1d4bd, 0x1d4c3,\r
-  0x1d4c5, 0x1d505,\r
-  0x1d507, 0x1d50a,\r
-  0x1d50d, 0x1d514,\r
-  0x1d516, 0x1d51c,\r
-  0x1d51e, 0x1d539,\r
-  0x1d53b, 0x1d53e,\r
-  0x1d540, 0x1d544,\r
-  0x1d546, 0x1d546,\r
-  0x1d54a, 0x1d550,\r
-  0x1d552, 0x1d6a5,\r
-  0x1d6a8, 0x1d6c0,\r
-  0x1d6c2, 0x1d6da,\r
-  0x1d6dc, 0x1d6fa,\r
-  0x1d6fc, 0x1d714,\r
-  0x1d716, 0x1d734,\r
-  0x1d736, 0x1d74e,\r
-  0x1d750, 0x1d76e,\r
-  0x1d770, 0x1d788,\r
-  0x1d78a, 0x1d7a8,\r
-  0x1d7aa, 0x1d7c2,\r
-  0x1d7c4, 0x1d7c9,\r
-  0x1d7ce, 0x1d7ff,\r
-  0x20000, 0x2a6d6,\r
-  0x2f800, 0x2fa1d,\r
-  0xe0100, 0xe01ef\r
-}; /* CR_Alnum */\r
-\r
-/* 'ASCII': [[:ASCII:]] */\r
-static const OnigCodePoint CR_ASCII[] = {\r
-  1,\r
-  0x0000, 0x007f\r
-}; /* CR_ASCII */\r
-\r
-#ifdef USE_UNICODE_PROPERTIES\r
-\r
-/* 'Any': - */\r
-static const OnigCodePoint CR_Any[] = {\r
-  1,\r
-  0x0000, 0x10ffff\r
-}; /* CR_Any */\r
-\r
-/* 'Assigned': - */\r
-static const OnigCodePoint CR_Assigned[] = {\r
-  420,\r
-  0x0000, 0x0241,\r
-  0x0250, 0x036f,\r
-  0x0374, 0x0375,\r
-  0x037a, 0x037a,\r
-  0x037e, 0x037e,\r
-  0x0384, 0x038a,\r
-  0x038c, 0x038c,\r
-  0x038e, 0x03a1,\r
-  0x03a3, 0x03ce,\r
-  0x03d0, 0x0486,\r
-  0x0488, 0x04ce,\r
-  0x04d0, 0x04f9,\r
-  0x0500, 0x050f,\r
-  0x0531, 0x0556,\r
-  0x0559, 0x055f,\r
-  0x0561, 0x0587,\r
-  0x0589, 0x058a,\r
-  0x0591, 0x05b9,\r
-  0x05bb, 0x05c7,\r
-  0x05d0, 0x05ea,\r
-  0x05f0, 0x05f4,\r
-  0x0600, 0x0603,\r
-  0x060b, 0x0615,\r
-  0x061b, 0x061b,\r
-  0x061e, 0x061f,\r
-  0x0621, 0x063a,\r
-  0x0640, 0x065e,\r
-  0x0660, 0x070d,\r
-  0x070f, 0x074a,\r
-  0x074d, 0x076d,\r
-  0x0780, 0x07b1,\r
-  0x0901, 0x0939,\r
-  0x093c, 0x094d,\r
-  0x0950, 0x0954,\r
-  0x0958, 0x0970,\r
-  0x097d, 0x097d,\r
-  0x0981, 0x0983,\r
-  0x0985, 0x098c,\r
-  0x098f, 0x0990,\r
-  0x0993, 0x09a8,\r
-  0x09aa, 0x09b0,\r
-  0x09b2, 0x09b2,\r
-  0x09b6, 0x09b9,\r
-  0x09bc, 0x09c4,\r
-  0x09c7, 0x09c8,\r
-  0x09cb, 0x09ce,\r
-  0x09d7, 0x09d7,\r
-  0x09dc, 0x09dd,\r
-  0x09df, 0x09e3,\r
-  0x09e6, 0x09fa,\r
-  0x0a01, 0x0a03,\r
-  0x0a05, 0x0a0a,\r
-  0x0a0f, 0x0a10,\r
-  0x0a13, 0x0a28,\r
-  0x0a2a, 0x0a30,\r
-  0x0a32, 0x0a33,\r
-  0x0a35, 0x0a36,\r
-  0x0a38, 0x0a39,\r
-  0x0a3c, 0x0a3c,\r
-  0x0a3e, 0x0a42,\r
-  0x0a47, 0x0a48,\r
-  0x0a4b, 0x0a4d,\r
-  0x0a59, 0x0a5c,\r
-  0x0a5e, 0x0a5e,\r
-  0x0a66, 0x0a74,\r
-  0x0a81, 0x0a83,\r
-  0x0a85, 0x0a8d,\r
-  0x0a8f, 0x0a91,\r
-  0x0a93, 0x0aa8,\r
-  0x0aaa, 0x0ab0,\r
-  0x0ab2, 0x0ab3,\r
-  0x0ab5, 0x0ab9,\r
-  0x0abc, 0x0ac5,\r
-  0x0ac7, 0x0ac9,\r
-  0x0acb, 0x0acd,\r
-  0x0ad0, 0x0ad0,\r
-  0x0ae0, 0x0ae3,\r
-  0x0ae6, 0x0aef,\r
-  0x0af1, 0x0af1,\r
-  0x0b01, 0x0b03,\r
-  0x0b05, 0x0b0c,\r
-  0x0b0f, 0x0b10,\r
-  0x0b13, 0x0b28,\r
-  0x0b2a, 0x0b30,\r
-  0x0b32, 0x0b33,\r
-  0x0b35, 0x0b39,\r
-  0x0b3c, 0x0b43,\r
-  0x0b47, 0x0b48,\r
-  0x0b4b, 0x0b4d,\r
-  0x0b56, 0x0b57,\r
-  0x0b5c, 0x0b5d,\r
-  0x0b5f, 0x0b61,\r
-  0x0b66, 0x0b71,\r
-  0x0b82, 0x0b83,\r
-  0x0b85, 0x0b8a,\r
-  0x0b8e, 0x0b90,\r
-  0x0b92, 0x0b95,\r
-  0x0b99, 0x0b9a,\r
-  0x0b9c, 0x0b9c,\r
-  0x0b9e, 0x0b9f,\r
-  0x0ba3, 0x0ba4,\r
-  0x0ba8, 0x0baa,\r
-  0x0bae, 0x0bb9,\r
-  0x0bbe, 0x0bc2,\r
-  0x0bc6, 0x0bc8,\r
-  0x0bca, 0x0bcd,\r
-  0x0bd7, 0x0bd7,\r
-  0x0be6, 0x0bfa,\r
-  0x0c01, 0x0c03,\r
-  0x0c05, 0x0c0c,\r
-  0x0c0e, 0x0c10,\r
-  0x0c12, 0x0c28,\r
-  0x0c2a, 0x0c33,\r
-  0x0c35, 0x0c39,\r
-  0x0c3e, 0x0c44,\r
-  0x0c46, 0x0c48,\r
-  0x0c4a, 0x0c4d,\r
-  0x0c55, 0x0c56,\r
-  0x0c60, 0x0c61,\r
-  0x0c66, 0x0c6f,\r
-  0x0c82, 0x0c83,\r
-  0x0c85, 0x0c8c,\r
-  0x0c8e, 0x0c90,\r
-  0x0c92, 0x0ca8,\r
-  0x0caa, 0x0cb3,\r
-  0x0cb5, 0x0cb9,\r
-  0x0cbc, 0x0cc4,\r
-  0x0cc6, 0x0cc8,\r
-  0x0cca, 0x0ccd,\r
-  0x0cd5, 0x0cd6,\r
-  0x0cde, 0x0cde,\r
-  0x0ce0, 0x0ce1,\r
-  0x0ce6, 0x0cef,\r
-  0x0d02, 0x0d03,\r
-  0x0d05, 0x0d0c,\r
-  0x0d0e, 0x0d10,\r
-  0x0d12, 0x0d28,\r
-  0x0d2a, 0x0d39,\r
-  0x0d3e, 0x0d43,\r
-  0x0d46, 0x0d48,\r
-  0x0d4a, 0x0d4d,\r
-  0x0d57, 0x0d57,\r
-  0x0d60, 0x0d61,\r
-  0x0d66, 0x0d6f,\r
-  0x0d82, 0x0d83,\r
-  0x0d85, 0x0d96,\r
-  0x0d9a, 0x0db1,\r
-  0x0db3, 0x0dbb,\r
-  0x0dbd, 0x0dbd,\r
-  0x0dc0, 0x0dc6,\r
-  0x0dca, 0x0dca,\r
-  0x0dcf, 0x0dd4,\r
-  0x0dd6, 0x0dd6,\r
-  0x0dd8, 0x0ddf,\r
-  0x0df2, 0x0df4,\r
-  0x0e01, 0x0e3a,\r
-  0x0e3f, 0x0e5b,\r
-  0x0e81, 0x0e82,\r
-  0x0e84, 0x0e84,\r
-  0x0e87, 0x0e88,\r
-  0x0e8a, 0x0e8a,\r
-  0x0e8d, 0x0e8d,\r
-  0x0e94, 0x0e97,\r
-  0x0e99, 0x0e9f,\r
-  0x0ea1, 0x0ea3,\r
-  0x0ea5, 0x0ea5,\r
-  0x0ea7, 0x0ea7,\r
-  0x0eaa, 0x0eab,\r
-  0x0ead, 0x0eb9,\r
-  0x0ebb, 0x0ebd,\r
-  0x0ec0, 0x0ec4,\r
-  0x0ec6, 0x0ec6,\r
-  0x0ec8, 0x0ecd,\r
-  0x0ed0, 0x0ed9,\r
-  0x0edc, 0x0edd,\r
-  0x0f00, 0x0f47,\r
-  0x0f49, 0x0f6a,\r
-  0x0f71, 0x0f8b,\r
-  0x0f90, 0x0f97,\r
-  0x0f99, 0x0fbc,\r
-  0x0fbe, 0x0fcc,\r
-  0x0fcf, 0x0fd1,\r
-  0x1000, 0x1021,\r
-  0x1023, 0x1027,\r
-  0x1029, 0x102a,\r
-  0x102c, 0x1032,\r
-  0x1036, 0x1039,\r
-  0x1040, 0x1059,\r
-  0x10a0, 0x10c5,\r
-  0x10d0, 0x10fc,\r
-  0x1100, 0x1159,\r
-  0x115f, 0x11a2,\r
-  0x11a8, 0x11f9,\r
-  0x1200, 0x1248,\r
-  0x124a, 0x124d,\r
-  0x1250, 0x1256,\r
-  0x1258, 0x1258,\r
-  0x125a, 0x125d,\r
-  0x1260, 0x1288,\r
-  0x128a, 0x128d,\r
-  0x1290, 0x12b0,\r
-  0x12b2, 0x12b5,\r
-  0x12b8, 0x12be,\r
-  0x12c0, 0x12c0,\r
-  0x12c2, 0x12c5,\r
-  0x12c8, 0x12d6,\r
-  0x12d8, 0x1310,\r
-  0x1312, 0x1315,\r
-  0x1318, 0x135a,\r
-  0x135f, 0x137c,\r
-  0x1380, 0x1399,\r
-  0x13a0, 0x13f4,\r
-  0x1401, 0x1676,\r
-  0x1680, 0x169c,\r
-  0x16a0, 0x16f0,\r
-  0x1700, 0x170c,\r
-  0x170e, 0x1714,\r
-  0x1720, 0x1736,\r
-  0x1740, 0x1753,\r
-  0x1760, 0x176c,\r
-  0x176e, 0x1770,\r
-  0x1772, 0x1773,\r
-  0x1780, 0x17dd,\r
-  0x17e0, 0x17e9,\r
-  0x17f0, 0x17f9,\r
-  0x1800, 0x180e,\r
-  0x1810, 0x1819,\r
-  0x1820, 0x1877,\r
-  0x1880, 0x18a9,\r
-  0x1900, 0x191c,\r
-  0x1920, 0x192b,\r
-  0x1930, 0x193b,\r
-  0x1940, 0x1940,\r
-  0x1944, 0x196d,\r
-  0x1970, 0x1974,\r
-  0x1980, 0x19a9,\r
-  0x19b0, 0x19c9,\r
-  0x19d0, 0x19d9,\r
-  0x19de, 0x1a1b,\r
-  0x1a1e, 0x1a1f,\r
-  0x1d00, 0x1dc3,\r
-  0x1e00, 0x1e9b,\r
-  0x1ea0, 0x1ef9,\r
-  0x1f00, 0x1f15,\r
-  0x1f18, 0x1f1d,\r
-  0x1f20, 0x1f45,\r
-  0x1f48, 0x1f4d,\r
-  0x1f50, 0x1f57,\r
-  0x1f59, 0x1f59,\r
-  0x1f5b, 0x1f5b,\r
-  0x1f5d, 0x1f5d,\r
-  0x1f5f, 0x1f7d,\r
-  0x1f80, 0x1fb4,\r
-  0x1fb6, 0x1fc4,\r
-  0x1fc6, 0x1fd3,\r
-  0x1fd6, 0x1fdb,\r
-  0x1fdd, 0x1fef,\r
-  0x1ff2, 0x1ff4,\r
-  0x1ff6, 0x1ffe,\r
-  0x2000, 0x2063,\r
-  0x206a, 0x2071,\r
-  0x2074, 0x208e,\r
-  0x2090, 0x2094,\r
-  0x20a0, 0x20b5,\r
-  0x20d0, 0x20eb,\r
-  0x2100, 0x214c,\r
-  0x2153, 0x2183,\r
-  0x2190, 0x23db,\r
-  0x2400, 0x2426,\r
-  0x2440, 0x244a,\r
-  0x2460, 0x269c,\r
-  0x26a0, 0x26b1,\r
-  0x2701, 0x2704,\r
-  0x2706, 0x2709,\r
-  0x270c, 0x2727,\r
-  0x2729, 0x274b,\r
-  0x274d, 0x274d,\r
-  0x274f, 0x2752,\r
-  0x2756, 0x2756,\r
-  0x2758, 0x275e,\r
-  0x2761, 0x2794,\r
-  0x2798, 0x27af,\r
-  0x27b1, 0x27be,\r
-  0x27c0, 0x27c6,\r
-  0x27d0, 0x27eb,\r
-  0x27f0, 0x2b13,\r
-  0x2c00, 0x2c2e,\r
-  0x2c30, 0x2c5e,\r
-  0x2c80, 0x2cea,\r
-  0x2cf9, 0x2d25,\r
-  0x2d30, 0x2d65,\r
-  0x2d6f, 0x2d6f,\r
-  0x2d80, 0x2d96,\r
-  0x2da0, 0x2da6,\r
-  0x2da8, 0x2dae,\r
-  0x2db0, 0x2db6,\r
-  0x2db8, 0x2dbe,\r
-  0x2dc0, 0x2dc6,\r
-  0x2dc8, 0x2dce,\r
-  0x2dd0, 0x2dd6,\r
-  0x2dd8, 0x2dde,\r
-  0x2e00, 0x2e17,\r
-  0x2e1c, 0x2e1d,\r
-  0x2e80, 0x2e99,\r
-  0x2e9b, 0x2ef3,\r
-  0x2f00, 0x2fd5,\r
-  0x2ff0, 0x2ffb,\r
-  0x3000, 0x303f,\r
-  0x3041, 0x3096,\r
-  0x3099, 0x30ff,\r
-  0x3105, 0x312c,\r
-  0x3131, 0x318e,\r
-  0x3190, 0x31b7,\r
-  0x31c0, 0x31cf,\r
-  0x31f0, 0x321e,\r
-  0x3220, 0x3243,\r
-  0x3250, 0x32fe,\r
-  0x3300, 0x4db5,\r
-  0x4dc0, 0x9fbb,\r
-  0xa000, 0xa48c,\r
-  0xa490, 0xa4c6,\r
-  0xa700, 0xa716,\r
-  0xa800, 0xa82b,\r
-  0xac00, 0xd7a3,\r
-  0xd800, 0xfa2d,\r
-  0xfa30, 0xfa6a,\r
-  0xfa70, 0xfad9,\r
-  0xfb00, 0xfb06,\r
-  0xfb13, 0xfb17,\r
-  0xfb1d, 0xfb36,\r
-  0xfb38, 0xfb3c,\r
-  0xfb3e, 0xfb3e,\r
-  0xfb40, 0xfb41,\r
-  0xfb43, 0xfb44,\r
-  0xfb46, 0xfbb1,\r
-  0xfbd3, 0xfd3f,\r
-  0xfd50, 0xfd8f,\r
-  0xfd92, 0xfdc7,\r
-  0xfdf0, 0xfdfd,\r
-  0xfe00, 0xfe19,\r
-  0xfe20, 0xfe23,\r
-  0xfe30, 0xfe52,\r
-  0xfe54, 0xfe66,\r
-  0xfe68, 0xfe6b,\r
-  0xfe70, 0xfe74,\r
-  0xfe76, 0xfefc,\r
-  0xfeff, 0xfeff,\r
-  0xff01, 0xffbe,\r
-  0xffc2, 0xffc7,\r
-  0xffca, 0xffcf,\r
-  0xffd2, 0xffd7,\r
-  0xffda, 0xffdc,\r
-  0xffe0, 0xffe6,\r
-  0xffe8, 0xffee,\r
-  0xfff9, 0xfffd,\r
-  0x10000, 0x1000b,\r
-  0x1000d, 0x10026,\r
-  0x10028, 0x1003a,\r
-  0x1003c, 0x1003d,\r
-  0x1003f, 0x1004d,\r
-  0x10050, 0x1005d,\r
-  0x10080, 0x100fa,\r
-  0x10100, 0x10102,\r
-  0x10107, 0x10133,\r
-  0x10137, 0x1018a,\r
-  0x10300, 0x1031e,\r
-  0x10320, 0x10323,\r
-  0x10330, 0x1034a,\r
-  0x10380, 0x1039d,\r
-  0x1039f, 0x103c3,\r
-  0x103c8, 0x103d5,\r
-  0x10400, 0x1049d,\r
-  0x104a0, 0x104a9,\r
-  0x10800, 0x10805,\r
-  0x10808, 0x10808,\r
-  0x1080a, 0x10835,\r
-  0x10837, 0x10838,\r
-  0x1083c, 0x1083c,\r
-  0x1083f, 0x1083f,\r
-  0x10a00, 0x10a03,\r
-  0x10a05, 0x10a06,\r
-  0x10a0c, 0x10a13,\r
-  0x10a15, 0x10a17,\r
-  0x10a19, 0x10a33,\r
-  0x10a38, 0x10a3a,\r
-  0x10a3f, 0x10a47,\r
-  0x10a50, 0x10a58,\r
-  0x1d000, 0x1d0f5,\r
-  0x1d100, 0x1d126,\r
-  0x1d12a, 0x1d1dd,\r
-  0x1d200, 0x1d245,\r
-  0x1d300, 0x1d356,\r
-  0x1d400, 0x1d454,\r
-  0x1d456, 0x1d49c,\r
-  0x1d49e, 0x1d49f,\r
-  0x1d4a2, 0x1d4a2,\r
-  0x1d4a5, 0x1d4a6,\r
-  0x1d4a9, 0x1d4ac,\r
-  0x1d4ae, 0x1d4b9,\r
-  0x1d4bb, 0x1d4bb,\r
-  0x1d4bd, 0x1d4c3,\r
-  0x1d4c5, 0x1d505,\r
-  0x1d507, 0x1d50a,\r
-  0x1d50d, 0x1d514,\r
-  0x1d516, 0x1d51c,\r
-  0x1d51e, 0x1d539,\r
-  0x1d53b, 0x1d53e,\r
-  0x1d540, 0x1d544,\r
-  0x1d546, 0x1d546,\r
-  0x1d54a, 0x1d550,\r
-  0x1d552, 0x1d6a5,\r
-  0x1d6a8, 0x1d7c9,\r
-  0x1d7ce, 0x1d7ff,\r
-  0x20000, 0x2a6d6,\r
-  0x2f800, 0x2fa1d,\r
-  0xe0001, 0xe0001,\r
-  0xe0020, 0xe007f,\r
-  0xe0100, 0xe01ef,\r
-  0xf0000, 0xffffd,\r
-  0x100000, 0x10fffd\r
-}; /* CR_Assigned */\r
-\r
-/* 'C': Major Category */\r
-static const OnigCodePoint CR_C[] = {\r
-  422,\r
-  0x0000, 0x001f,\r
-  0x007f, 0x009f,\r
-  0x00ad, 0x00ad,\r
-  0x0242, 0x024f,\r
-  0x0370, 0x0373,\r
-  0x0376, 0x0379,\r
-  0x037b, 0x037d,\r
-  0x037f, 0x0383,\r
-  0x038b, 0x038b,\r
-  0x038d, 0x038d,\r
-  0x03a2, 0x03a2,\r
-  0x03cf, 0x03cf,\r
-  0x0487, 0x0487,\r
-  0x04cf, 0x04cf,\r
-  0x04fa, 0x04ff,\r
-  0x0510, 0x0530,\r
-  0x0557, 0x0558,\r
-  0x0560, 0x0560,\r
-  0x0588, 0x0588,\r
-  0x058b, 0x0590,\r
-  0x05ba, 0x05ba,\r
-  0x05c8, 0x05cf,\r
-  0x05eb, 0x05ef,\r
-  0x05f5, 0x060a,\r
-  0x0616, 0x061a,\r
-  0x061c, 0x061d,\r
-  0x0620, 0x0620,\r
-  0x063b, 0x063f,\r
-  0x065f, 0x065f,\r
-  0x06dd, 0x06dd,\r
-  0x070e, 0x070f,\r
-  0x074b, 0x074c,\r
-  0x076e, 0x077f,\r
-  0x07b2, 0x0900,\r
-  0x093a, 0x093b,\r
-  0x094e, 0x094f,\r
-  0x0955, 0x0957,\r
-  0x0971, 0x097c,\r
-  0x097e, 0x0980,\r
-  0x0984, 0x0984,\r
-  0x098d, 0x098e,\r
-  0x0991, 0x0992,\r
-  0x09a9, 0x09a9,\r
-  0x09b1, 0x09b1,\r
-  0x09b3, 0x09b5,\r
-  0x09ba, 0x09bb,\r
-  0x09c5, 0x09c6,\r
-  0x09c9, 0x09ca,\r
-  0x09cf, 0x09d6,\r
-  0x09d8, 0x09db,\r
-  0x09de, 0x09de,\r
-  0x09e4, 0x09e5,\r
-  0x09fb, 0x0a00,\r
-  0x0a04, 0x0a04,\r
-  0x0a0b, 0x0a0e,\r
-  0x0a11, 0x0a12,\r
-  0x0a29, 0x0a29,\r
-  0x0a31, 0x0a31,\r
-  0x0a34, 0x0a34,\r
-  0x0a37, 0x0a37,\r
-  0x0a3a, 0x0a3b,\r
-  0x0a3d, 0x0a3d,\r
-  0x0a43, 0x0a46,\r
-  0x0a49, 0x0a4a,\r
-  0x0a4e, 0x0a58,\r
-  0x0a5d, 0x0a5d,\r
-  0x0a5f, 0x0a65,\r
-  0x0a75, 0x0a80,\r
-  0x0a84, 0x0a84,\r
-  0x0a8e, 0x0a8e,\r
-  0x0a92, 0x0a92,\r
-  0x0aa9, 0x0aa9,\r
-  0x0ab1, 0x0ab1,\r
-  0x0ab4, 0x0ab4,\r
-  0x0aba, 0x0abb,\r
-  0x0ac6, 0x0ac6,\r
-  0x0aca, 0x0aca,\r
-  0x0ace, 0x0acf,\r
-  0x0ad1, 0x0adf,\r
-  0x0ae4, 0x0ae5,\r
-  0x0af0, 0x0af0,\r
-  0x0af2, 0x0b00,\r
-  0x0b04, 0x0b04,\r
-  0x0b0d, 0x0b0e,\r
-  0x0b11, 0x0b12,\r
-  0x0b29, 0x0b29,\r
-  0x0b31, 0x0b31,\r
-  0x0b34, 0x0b34,\r
-  0x0b3a, 0x0b3b,\r
-  0x0b44, 0x0b46,\r
-  0x0b49, 0x0b4a,\r
-  0x0b4e, 0x0b55,\r
-  0x0b58, 0x0b5b,\r
-  0x0b5e, 0x0b5e,\r
-  0x0b62, 0x0b65,\r
-  0x0b72, 0x0b81,\r
-  0x0b84, 0x0b84,\r
-  0x0b8b, 0x0b8d,\r
-  0x0b91, 0x0b91,\r
-  0x0b96, 0x0b98,\r
-  0x0b9b, 0x0b9b,\r
-  0x0b9d, 0x0b9d,\r
-  0x0ba0, 0x0ba2,\r
-  0x0ba5, 0x0ba7,\r
-  0x0bab, 0x0bad,\r
-  0x0bba, 0x0bbd,\r
-  0x0bc3, 0x0bc5,\r
-  0x0bc9, 0x0bc9,\r
-  0x0bce, 0x0bd6,\r
-  0x0bd8, 0x0be5,\r
-  0x0bfb, 0x0c00,\r
-  0x0c04, 0x0c04,\r
-  0x0c0d, 0x0c0d,\r
-  0x0c11, 0x0c11,\r
-  0x0c29, 0x0c29,\r
-  0x0c34, 0x0c34,\r
-  0x0c3a, 0x0c3d,\r
-  0x0c45, 0x0c45,\r
-  0x0c49, 0x0c49,\r
-  0x0c4e, 0x0c54,\r
-  0x0c57, 0x0c5f,\r
-  0x0c62, 0x0c65,\r
-  0x0c70, 0x0c81,\r
-  0x0c84, 0x0c84,\r
-  0x0c8d, 0x0c8d,\r
-  0x0c91, 0x0c91,\r
-  0x0ca9, 0x0ca9,\r
-  0x0cb4, 0x0cb4,\r
-  0x0cba, 0x0cbb,\r
-  0x0cc5, 0x0cc5,\r
-  0x0cc9, 0x0cc9,\r
-  0x0cce, 0x0cd4,\r
-  0x0cd7, 0x0cdd,\r
-  0x0cdf, 0x0cdf,\r
-  0x0ce2, 0x0ce5,\r
-  0x0cf0, 0x0d01,\r
-  0x0d04, 0x0d04,\r
-  0x0d0d, 0x0d0d,\r
-  0x0d11, 0x0d11,\r
-  0x0d29, 0x0d29,\r
-  0x0d3a, 0x0d3d,\r
-  0x0d44, 0x0d45,\r
-  0x0d49, 0x0d49,\r
-  0x0d4e, 0x0d56,\r
-  0x0d58, 0x0d5f,\r
-  0x0d62, 0x0d65,\r
-  0x0d70, 0x0d81,\r
-  0x0d84, 0x0d84,\r
-  0x0d97, 0x0d99,\r
-  0x0db2, 0x0db2,\r
-  0x0dbc, 0x0dbc,\r
-  0x0dbe, 0x0dbf,\r
-  0x0dc7, 0x0dc9,\r
-  0x0dcb, 0x0dce,\r
-  0x0dd5, 0x0dd5,\r
-  0x0dd7, 0x0dd7,\r
-  0x0de0, 0x0df1,\r
-  0x0df5, 0x0e00,\r
-  0x0e3b, 0x0e3e,\r
-  0x0e5c, 0x0e80,\r
-  0x0e83, 0x0e83,\r
-  0x0e85, 0x0e86,\r
-  0x0e89, 0x0e89,\r
-  0x0e8b, 0x0e8c,\r
-  0x0e8e, 0x0e93,\r
-  0x0e98, 0x0e98,\r
-  0x0ea0, 0x0ea0,\r
-  0x0ea4, 0x0ea4,\r
-  0x0ea6, 0x0ea6,\r
-  0x0ea8, 0x0ea9,\r
-  0x0eac, 0x0eac,\r
-  0x0eba, 0x0eba,\r
-  0x0ebe, 0x0ebf,\r
-  0x0ec5, 0x0ec5,\r
-  0x0ec7, 0x0ec7,\r
-  0x0ece, 0x0ecf,\r
-  0x0eda, 0x0edb,\r
-  0x0ede, 0x0eff,\r
-  0x0f48, 0x0f48,\r
-  0x0f6b, 0x0f70,\r
-  0x0f8c, 0x0f8f,\r
-  0x0f98, 0x0f98,\r
-  0x0fbd, 0x0fbd,\r
-  0x0fcd, 0x0fce,\r
-  0x0fd2, 0x0fff,\r
-  0x1022, 0x1022,\r
-  0x1028, 0x1028,\r
-  0x102b, 0x102b,\r
-  0x1033, 0x1035,\r
-  0x103a, 0x103f,\r
-  0x105a, 0x109f,\r
-  0x10c6, 0x10cf,\r
-  0x10fd, 0x10ff,\r
-  0x115a, 0x115e,\r
-  0x11a3, 0x11a7,\r
-  0x11fa, 0x11ff,\r
-  0x1249, 0x1249,\r
-  0x124e, 0x124f,\r
-  0x1257, 0x1257,\r
-  0x1259, 0x1259,\r
-  0x125e, 0x125f,\r
-  0x1289, 0x1289,\r
-  0x128e, 0x128f,\r
-  0x12b1, 0x12b1,\r
-  0x12b6, 0x12b7,\r
-  0x12bf, 0x12bf,\r
-  0x12c1, 0x12c1,\r
-  0x12c6, 0x12c7,\r
-  0x12d7, 0x12d7,\r
-  0x1311, 0x1311,\r
-  0x1316, 0x1317,\r
-  0x135b, 0x135e,\r
-  0x137d, 0x137f,\r
-  0x139a, 0x139f,\r
-  0x13f5, 0x1400,\r
-  0x1677, 0x167f,\r
-  0x169d, 0x169f,\r
-  0x16f1, 0x16ff,\r
-  0x170d, 0x170d,\r
-  0x1715, 0x171f,\r
-  0x1737, 0x173f,\r
-  0x1754, 0x175f,\r
-  0x176d, 0x176d,\r
-  0x1771, 0x1771,\r
-  0x1774, 0x177f,\r
-  0x17b4, 0x17b5,\r
-  0x17de, 0x17df,\r
-  0x17ea, 0x17ef,\r
-  0x17fa, 0x17ff,\r
-  0x180f, 0x180f,\r
-  0x181a, 0x181f,\r
-  0x1878, 0x187f,\r
-  0x18aa, 0x18ff,\r
-  0x191d, 0x191f,\r
-  0x192c, 0x192f,\r
-  0x193c, 0x193f,\r
-  0x1941, 0x1943,\r
-  0x196e, 0x196f,\r
-  0x1975, 0x197f,\r
-  0x19aa, 0x19af,\r
-  0x19ca, 0x19cf,\r
-  0x19da, 0x19dd,\r
-  0x1a1c, 0x1a1d,\r
-  0x1a20, 0x1cff,\r
-  0x1dc4, 0x1dff,\r
-  0x1e9c, 0x1e9f,\r
-  0x1efa, 0x1eff,\r
-  0x1f16, 0x1f17,\r
-  0x1f1e, 0x1f1f,\r
-  0x1f46, 0x1f47,\r
-  0x1f4e, 0x1f4f,\r
-  0x1f58, 0x1f58,\r
-  0x1f5a, 0x1f5a,\r
-  0x1f5c, 0x1f5c,\r
-  0x1f5e, 0x1f5e,\r
-  0x1f7e, 0x1f7f,\r
-  0x1fb5, 0x1fb5,\r
-  0x1fc5, 0x1fc5,\r
-  0x1fd4, 0x1fd5,\r
-  0x1fdc, 0x1fdc,\r
-  0x1ff0, 0x1ff1,\r
-  0x1ff5, 0x1ff5,\r
-  0x1fff, 0x1fff,\r
-  0x200b, 0x200f,\r
-  0x202a, 0x202e,\r
-  0x2060, 0x206f,\r
-  0x2072, 0x2073,\r
-  0x208f, 0x208f,\r
-  0x2095, 0x209f,\r
-  0x20b6, 0x20cf,\r
-  0x20ec, 0x20ff,\r
-  0x214d, 0x2152,\r
-  0x2184, 0x218f,\r
-  0x23dc, 0x23ff,\r
-  0x2427, 0x243f,\r
-  0x244b, 0x245f,\r
-  0x269d, 0x269f,\r
-  0x26b2, 0x2700,\r
-  0x2705, 0x2705,\r
-  0x270a, 0x270b,\r
-  0x2728, 0x2728,\r
-  0x274c, 0x274c,\r
-  0x274e, 0x274e,\r
-  0x2753, 0x2755,\r
-  0x2757, 0x2757,\r
-  0x275f, 0x2760,\r
-  0x2795, 0x2797,\r
-  0x27b0, 0x27b0,\r
-  0x27bf, 0x27bf,\r
-  0x27c7, 0x27cf,\r
-  0x27ec, 0x27ef,\r
-  0x2b14, 0x2bff,\r
-  0x2c2f, 0x2c2f,\r
-  0x2c5f, 0x2c7f,\r
-  0x2ceb, 0x2cf8,\r
-  0x2d26, 0x2d2f,\r
-  0x2d66, 0x2d6e,\r
-  0x2d70, 0x2d7f,\r
-  0x2d97, 0x2d9f,\r
-  0x2da7, 0x2da7,\r
-  0x2daf, 0x2daf,\r
-  0x2db7, 0x2db7,\r
-  0x2dbf, 0x2dbf,\r
-  0x2dc7, 0x2dc7,\r
-  0x2dcf, 0x2dcf,\r
-  0x2dd7, 0x2dd7,\r
-  0x2ddf, 0x2dff,\r
-  0x2e18, 0x2e1b,\r
-  0x2e1e, 0x2e7f,\r
-  0x2e9a, 0x2e9a,\r
-  0x2ef4, 0x2eff,\r
-  0x2fd6, 0x2fef,\r
-  0x2ffc, 0x2fff,\r
-  0x3040, 0x3040,\r
-  0x3097, 0x3098,\r
-  0x3100, 0x3104,\r
-  0x312d, 0x3130,\r
-  0x318f, 0x318f,\r
-  0x31b8, 0x31bf,\r
-  0x31d0, 0x31ef,\r
-  0x321f, 0x321f,\r
-  0x3244, 0x324f,\r
-  0x32ff, 0x32ff,\r
-  0x4db6, 0x4dbf,\r
-  0x9fbc, 0x9fff,\r
-  0xa48d, 0xa48f,\r
-  0xa4c7, 0xa6ff,\r
-  0xa717, 0xa7ff,\r
-  0xa82c, 0xabff,\r
-  0xd7a4, 0xf8ff,\r
-  0xfa2e, 0xfa2f,\r
-  0xfa6b, 0xfa6f,\r
-  0xfada, 0xfaff,\r
-  0xfb07, 0xfb12,\r
-  0xfb18, 0xfb1c,\r
-  0xfb37, 0xfb37,\r
-  0xfb3d, 0xfb3d,\r
-  0xfb3f, 0xfb3f,\r
-  0xfb42, 0xfb42,\r
-  0xfb45, 0xfb45,\r
-  0xfbb2, 0xfbd2,\r
-  0xfd40, 0xfd4f,\r
-  0xfd90, 0xfd91,\r
-  0xfdc8, 0xfdef,\r
-  0xfdfe, 0xfdff,\r
-  0xfe1a, 0xfe1f,\r
-  0xfe24, 0xfe2f,\r
-  0xfe53, 0xfe53,\r
-  0xfe67, 0xfe67,\r
-  0xfe6c, 0xfe6f,\r
-  0xfe75, 0xfe75,\r
-  0xfefd, 0xff00,\r
-  0xffbf, 0xffc1,\r
-  0xffc8, 0xffc9,\r
-  0xffd0, 0xffd1,\r
-  0xffd8, 0xffd9,\r
-  0xffdd, 0xffdf,\r
-  0xffe7, 0xffe7,\r
-  0xffef, 0xfffb,\r
-  0xfffe, 0xffff,\r
-  0x1000c, 0x1000c,\r
-  0x10027, 0x10027,\r
-  0x1003b, 0x1003b,\r
-  0x1003e, 0x1003e,\r
-  0x1004e, 0x1004f,\r
-  0x1005e, 0x1007f,\r
-  0x100fb, 0x100ff,\r
-  0x10103, 0x10106,\r
-  0x10134, 0x10136,\r
-  0x1018b, 0x102ff,\r
-  0x1031f, 0x1031f,\r
-  0x10324, 0x1032f,\r
-  0x1034b, 0x1037f,\r
-  0x1039e, 0x1039e,\r
-  0x103c4, 0x103c7,\r
-  0x103d6, 0x103ff,\r
-  0x1049e, 0x1049f,\r
-  0x104aa, 0x107ff,\r
-  0x10806, 0x10807,\r
-  0x10809, 0x10809,\r
-  0x10836, 0x10836,\r
-  0x10839, 0x1083b,\r
-  0x1083d, 0x1083e,\r
-  0x10840, 0x109ff,\r
-  0x10a04, 0x10a04,\r
-  0x10a07, 0x10a0b,\r
-  0x10a14, 0x10a14,\r
-  0x10a18, 0x10a18,\r
-  0x10a34, 0x10a37,\r
-  0x10a3b, 0x10a3e,\r
-  0x10a48, 0x10a4f,\r
-  0x10a59, 0x1cfff,\r
-  0x1d0f6, 0x1d0ff,\r
-  0x1d127, 0x1d129,\r
-  0x1d173, 0x1d17a,\r
-  0x1d1de, 0x1d1ff,\r
-  0x1d246, 0x1d2ff,\r
-  0x1d357, 0x1d3ff,\r
-  0x1d455, 0x1d455,\r
-  0x1d49d, 0x1d49d,\r
-  0x1d4a0, 0x1d4a1,\r
-  0x1d4a3, 0x1d4a4,\r
-  0x1d4a7, 0x1d4a8,\r
-  0x1d4ad, 0x1d4ad,\r
-  0x1d4ba, 0x1d4ba,\r
-  0x1d4bc, 0x1d4bc,\r
-  0x1d4c4, 0x1d4c4,\r
-  0x1d506, 0x1d506,\r
-  0x1d50b, 0x1d50c,\r
-  0x1d515, 0x1d515,\r
-  0x1d51d, 0x1d51d,\r
-  0x1d53a, 0x1d53a,\r
-  0x1d53f, 0x1d53f,\r
-  0x1d545, 0x1d545,\r
-  0x1d547, 0x1d549,\r
-  0x1d551, 0x1d551,\r
-  0x1d6a6, 0x1d6a7,\r
-  0x1d7ca, 0x1d7cd,\r
-  0x1d800, 0x1ffff,\r
-  0x2a6d7, 0x2f7ff,\r
-  0x2fa1e, 0xe00ff,\r
-  0xe01f0, 0x10ffff\r
-}; /* CR_C */\r
-\r
-/* 'Cc': General Category */\r
-static const OnigCodePoint CR_Cc[] = {\r
-  2,\r
-  0x0000, 0x001f,\r
-  0x007f, 0x009f\r
-}; /* CR_Cc */\r
-\r
-/* 'Cf': General Category */\r
-static const OnigCodePoint CR_Cf[] = {\r
-  14,\r
-  0x00ad, 0x00ad,\r
-  0x0600, 0x0603,\r
-  0x06dd, 0x06dd,\r
-  0x070f, 0x070f,\r
-  0x17b4, 0x17b5,\r
-  0x200b, 0x200f,\r
-  0x202a, 0x202e,\r
-  0x2060, 0x2063,\r
-  0x206a, 0x206f,\r
-  0xfeff, 0xfeff,\r
-  0xfff9, 0xfffb,\r
-  0x1d173, 0x1d17a,\r
-  0xe0001, 0xe0001,\r
-  0xe0020, 0xe007f\r
-}; /* CR_Cf */\r
-\r
-/* 'Cn': General Category */\r
-static const OnigCodePoint CR_Cn[] = {\r
-  420,\r
-  0x0242, 0x024f,\r
-  0x0370, 0x0373,\r
-  0x0376, 0x0379,\r
-  0x037b, 0x037d,\r
-  0x037f, 0x0383,\r
-  0x038b, 0x038b,\r
-  0x038d, 0x038d,\r
-  0x03a2, 0x03a2,\r
-  0x03cf, 0x03cf,\r
-  0x0487, 0x0487,\r
-  0x04cf, 0x04cf,\r
-  0x04fa, 0x04ff,\r
-  0x0510, 0x0530,\r
-  0x0557, 0x0558,\r
-  0x0560, 0x0560,\r
-  0x0588, 0x0588,\r
-  0x058b, 0x0590,\r
-  0x05ba, 0x05ba,\r
-  0x05c8, 0x05cf,\r
-  0x05eb, 0x05ef,\r
-  0x05f5, 0x05ff,\r
-  0x0604, 0x060a,\r
-  0x0616, 0x061a,\r
-  0x061c, 0x061d,\r
-  0x0620, 0x0620,\r
-  0x063b, 0x063f,\r
-  0x065f, 0x065f,\r
-  0x070e, 0x070e,\r
-  0x074b, 0x074c,\r
-  0x076e, 0x077f,\r
-  0x07b2, 0x0900,\r
-  0x093a, 0x093b,\r
-  0x094e, 0x094f,\r
-  0x0955, 0x0957,\r
-  0x0971, 0x097c,\r
-  0x097e, 0x0980,\r
-  0x0984, 0x0984,\r
-  0x098d, 0x098e,\r
-  0x0991, 0x0992,\r
-  0x09a9, 0x09a9,\r
-  0x09b1, 0x09b1,\r
-  0x09b3, 0x09b5,\r
-  0x09ba, 0x09bb,\r
-  0x09c5, 0x09c6,\r
-  0x09c9, 0x09ca,\r
-  0x09cf, 0x09d6,\r
-  0x09d8, 0x09db,\r
-  0x09de, 0x09de,\r
-  0x09e4, 0x09e5,\r
-  0x09fb, 0x0a00,\r
-  0x0a04, 0x0a04,\r
-  0x0a0b, 0x0a0e,\r
-  0x0a11, 0x0a12,\r
-  0x0a29, 0x0a29,\r
-  0x0a31, 0x0a31,\r
-  0x0a34, 0x0a34,\r
-  0x0a37, 0x0a37,\r
-  0x0a3a, 0x0a3b,\r
-  0x0a3d, 0x0a3d,\r
-  0x0a43, 0x0a46,\r
-  0x0a49, 0x0a4a,\r
-  0x0a4e, 0x0a58,\r
-  0x0a5d, 0x0a5d,\r
-  0x0a5f, 0x0a65,\r
-  0x0a75, 0x0a80,\r
-  0x0a84, 0x0a84,\r
-  0x0a8e, 0x0a8e,\r
-  0x0a92, 0x0a92,\r
-  0x0aa9, 0x0aa9,\r
-  0x0ab1, 0x0ab1,\r
-  0x0ab4, 0x0ab4,\r
-  0x0aba, 0x0abb,\r
-  0x0ac6, 0x0ac6,\r
-  0x0aca, 0x0aca,\r
-  0x0ace, 0x0acf,\r
-  0x0ad1, 0x0adf,\r
-  0x0ae4, 0x0ae5,\r
-  0x0af0, 0x0af0,\r
-  0x0af2, 0x0b00,\r
-  0x0b04, 0x0b04,\r
-  0x0b0d, 0x0b0e,\r
-  0x0b11, 0x0b12,\r
-  0x0b29, 0x0b29,\r
-  0x0b31, 0x0b31,\r
-  0x0b34, 0x0b34,\r
-  0x0b3a, 0x0b3b,\r
-  0x0b44, 0x0b46,\r
-  0x0b49, 0x0b4a,\r
-  0x0b4e, 0x0b55,\r
-  0x0b58, 0x0b5b,\r
-  0x0b5e, 0x0b5e,\r
-  0x0b62, 0x0b65,\r
-  0x0b72, 0x0b81,\r
-  0x0b84, 0x0b84,\r
-  0x0b8b, 0x0b8d,\r
-  0x0b91, 0x0b91,\r
-  0x0b96, 0x0b98,\r
-  0x0b9b, 0x0b9b,\r
-  0x0b9d, 0x0b9d,\r
-  0x0ba0, 0x0ba2,\r
-  0x0ba5, 0x0ba7,\r
-  0x0bab, 0x0bad,\r
-  0x0bba, 0x0bbd,\r
-  0x0bc3, 0x0bc5,\r
-  0x0bc9, 0x0bc9,\r
-  0x0bce, 0x0bd6,\r
-  0x0bd8, 0x0be5,\r
-  0x0bfb, 0x0c00,\r
-  0x0c04, 0x0c04,\r
-  0x0c0d, 0x0c0d,\r
-  0x0c11, 0x0c11,\r
-  0x0c29, 0x0c29,\r
-  0x0c34, 0x0c34,\r
-  0x0c3a, 0x0c3d,\r
-  0x0c45, 0x0c45,\r
-  0x0c49, 0x0c49,\r
-  0x0c4e, 0x0c54,\r
-  0x0c57, 0x0c5f,\r
-  0x0c62, 0x0c65,\r
-  0x0c70, 0x0c81,\r
-  0x0c84, 0x0c84,\r
-  0x0c8d, 0x0c8d,\r
-  0x0c91, 0x0c91,\r
-  0x0ca9, 0x0ca9,\r
-  0x0cb4, 0x0cb4,\r
-  0x0cba, 0x0cbb,\r
-  0x0cc5, 0x0cc5,\r
-  0x0cc9, 0x0cc9,\r
-  0x0cce, 0x0cd4,\r
-  0x0cd7, 0x0cdd,\r
-  0x0cdf, 0x0cdf,\r
-  0x0ce2, 0x0ce5,\r
-  0x0cf0, 0x0d01,\r
-  0x0d04, 0x0d04,\r
-  0x0d0d, 0x0d0d,\r
-  0x0d11, 0x0d11,\r
-  0x0d29, 0x0d29,\r
-  0x0d3a, 0x0d3d,\r
-  0x0d44, 0x0d45,\r
-  0x0d49, 0x0d49,\r
-  0x0d4e, 0x0d56,\r
-  0x0d58, 0x0d5f,\r
-  0x0d62, 0x0d65,\r
-  0x0d70, 0x0d81,\r
-  0x0d84, 0x0d84,\r
-  0x0d97, 0x0d99,\r
-  0x0db2, 0x0db2,\r
-  0x0dbc, 0x0dbc,\r
-  0x0dbe, 0x0dbf,\r
-  0x0dc7, 0x0dc9,\r
-  0x0dcb, 0x0dce,\r
-  0x0dd5, 0x0dd5,\r
-  0x0dd7, 0x0dd7,\r
-  0x0de0, 0x0df1,\r
-  0x0df5, 0x0e00,\r
-  0x0e3b, 0x0e3e,\r
-  0x0e5c, 0x0e80,\r
-  0x0e83, 0x0e83,\r
-  0x0e85, 0x0e86,\r
-  0x0e89, 0x0e89,\r
-  0x0e8b, 0x0e8c,\r
-  0x0e8e, 0x0e93,\r
-  0x0e98, 0x0e98,\r
-  0x0ea0, 0x0ea0,\r
-  0x0ea4, 0x0ea4,\r
-  0x0ea6, 0x0ea6,\r
-  0x0ea8, 0x0ea9,\r
-  0x0eac, 0x0eac,\r
-  0x0eba, 0x0eba,\r
-  0x0ebe, 0x0ebf,\r
-  0x0ec5, 0x0ec5,\r
-  0x0ec7, 0x0ec7,\r
-  0x0ece, 0x0ecf,\r
-  0x0eda, 0x0edb,\r
-  0x0ede, 0x0eff,\r
-  0x0f48, 0x0f48,\r
-  0x0f6b, 0x0f70,\r
-  0x0f8c, 0x0f8f,\r
-  0x0f98, 0x0f98,\r
-  0x0fbd, 0x0fbd,\r
-  0x0fcd, 0x0fce,\r
-  0x0fd2, 0x0fff,\r
-  0x1022, 0x1022,\r
-  0x1028, 0x1028,\r
-  0x102b, 0x102b,\r
-  0x1033, 0x1035,\r
-  0x103a, 0x103f,\r
-  0x105a, 0x109f,\r
-  0x10c6, 0x10cf,\r
-  0x10fd, 0x10ff,\r
-  0x115a, 0x115e,\r
-  0x11a3, 0x11a7,\r
-  0x11fa, 0x11ff,\r
-  0x1249, 0x1249,\r
-  0x124e, 0x124f,\r
-  0x1257, 0x1257,\r
-  0x1259, 0x1259,\r
-  0x125e, 0x125f,\r
-  0x1289, 0x1289,\r
-  0x128e, 0x128f,\r
-  0x12b1, 0x12b1,\r
-  0x12b6, 0x12b7,\r
-  0x12bf, 0x12bf,\r
-  0x12c1, 0x12c1,\r
-  0x12c6, 0x12c7,\r
-  0x12d7, 0x12d7,\r
-  0x1311, 0x1311,\r
-  0x1316, 0x1317,\r
-  0x135b, 0x135e,\r
-  0x137d, 0x137f,\r
-  0x139a, 0x139f,\r
-  0x13f5, 0x1400,\r
-  0x1677, 0x167f,\r
-  0x169d, 0x169f,\r
-  0x16f1, 0x16ff,\r
-  0x170d, 0x170d,\r
-  0x1715, 0x171f,\r
-  0x1737, 0x173f,\r
-  0x1754, 0x175f,\r
-  0x176d, 0x176d,\r
-  0x1771, 0x1771,\r
-  0x1774, 0x177f,\r
-  0x17de, 0x17df,\r
-  0x17ea, 0x17ef,\r
-  0x17fa, 0x17ff,\r
-  0x180f, 0x180f,\r
-  0x181a, 0x181f,\r
-  0x1878, 0x187f,\r
-  0x18aa, 0x18ff,\r
-  0x191d, 0x191f,\r
-  0x192c, 0x192f,\r
-  0x193c, 0x193f,\r
-  0x1941, 0x1943,\r
-  0x196e, 0x196f,\r
-  0x1975, 0x197f,\r
-  0x19aa, 0x19af,\r
-  0x19ca, 0x19cf,\r
-  0x19da, 0x19dd,\r
-  0x1a1c, 0x1a1d,\r
-  0x1a20, 0x1cff,\r
-  0x1dc4, 0x1dff,\r
-  0x1e9c, 0x1e9f,\r
-  0x1efa, 0x1eff,\r
-  0x1f16, 0x1f17,\r
-  0x1f1e, 0x1f1f,\r
-  0x1f46, 0x1f47,\r
-  0x1f4e, 0x1f4f,\r
-  0x1f58, 0x1f58,\r
-  0x1f5a, 0x1f5a,\r
-  0x1f5c, 0x1f5c,\r
-  0x1f5e, 0x1f5e,\r
-  0x1f7e, 0x1f7f,\r
-  0x1fb5, 0x1fb5,\r
-  0x1fc5, 0x1fc5,\r
-  0x1fd4, 0x1fd5,\r
-  0x1fdc, 0x1fdc,\r
-  0x1ff0, 0x1ff1,\r
-  0x1ff5, 0x1ff5,\r
-  0x1fff, 0x1fff,\r
-  0x2064, 0x2069,\r
-  0x2072, 0x2073,\r
-  0x208f, 0x208f,\r
-  0x2095, 0x209f,\r
-  0x20b6, 0x20cf,\r
-  0x20ec, 0x20ff,\r
-  0x214d, 0x2152,\r
-  0x2184, 0x218f,\r
-  0x23dc, 0x23ff,\r
-  0x2427, 0x243f,\r
-  0x244b, 0x245f,\r
-  0x269d, 0x269f,\r
-  0x26b2, 0x2700,\r
-  0x2705, 0x2705,\r
-  0x270a, 0x270b,\r
-  0x2728, 0x2728,\r
-  0x274c, 0x274c,\r
-  0x274e, 0x274e,\r
-  0x2753, 0x2755,\r
-  0x2757, 0x2757,\r
-  0x275f, 0x2760,\r
-  0x2795, 0x2797,\r
-  0x27b0, 0x27b0,\r
-  0x27bf, 0x27bf,\r
-  0x27c7, 0x27cf,\r
-  0x27ec, 0x27ef,\r
-  0x2b14, 0x2bff,\r
-  0x2c2f, 0x2c2f,\r
-  0x2c5f, 0x2c7f,\r
-  0x2ceb, 0x2cf8,\r
-  0x2d26, 0x2d2f,\r
-  0x2d66, 0x2d6e,\r
-  0x2d70, 0x2d7f,\r
-  0x2d97, 0x2d9f,\r
-  0x2da7, 0x2da7,\r
-  0x2daf, 0x2daf,\r
-  0x2db7, 0x2db7,\r
-  0x2dbf, 0x2dbf,\r
-  0x2dc7, 0x2dc7,\r
-  0x2dcf, 0x2dcf,\r
-  0x2dd7, 0x2dd7,\r
-  0x2ddf, 0x2dff,\r
-  0x2e18, 0x2e1b,\r
-  0x2e1e, 0x2e7f,\r
-  0x2e9a, 0x2e9a,\r
-  0x2ef4, 0x2eff,\r
-  0x2fd6, 0x2fef,\r
-  0x2ffc, 0x2fff,\r
-  0x3040, 0x3040,\r
-  0x3097, 0x3098,\r
-  0x3100, 0x3104,\r
-  0x312d, 0x3130,\r
-  0x318f, 0x318f,\r
-  0x31b8, 0x31bf,\r
-  0x31d0, 0x31ef,\r
-  0x321f, 0x321f,\r
-  0x3244, 0x324f,\r
-  0x32ff, 0x32ff,\r
-  0x4db6, 0x4dbf,\r
-  0x9fbc, 0x9fff,\r
-  0xa48d, 0xa48f,\r
-  0xa4c7, 0xa6ff,\r
-  0xa717, 0xa7ff,\r
-  0xa82c, 0xabff,\r
-  0xd7a4, 0xd7ff,\r
-  0xfa2e, 0xfa2f,\r
-  0xfa6b, 0xfa6f,\r
-  0xfada, 0xfaff,\r
-  0xfb07, 0xfb12,\r
-  0xfb18, 0xfb1c,\r
-  0xfb37, 0xfb37,\r
-  0xfb3d, 0xfb3d,\r
-  0xfb3f, 0xfb3f,\r
-  0xfb42, 0xfb42,\r
-  0xfb45, 0xfb45,\r
-  0xfbb2, 0xfbd2,\r
-  0xfd40, 0xfd4f,\r
-  0xfd90, 0xfd91,\r
-  0xfdc8, 0xfdef,\r
-  0xfdfe, 0xfdff,\r
-  0xfe1a, 0xfe1f,\r
-  0xfe24, 0xfe2f,\r
-  0xfe53, 0xfe53,\r
-  0xfe67, 0xfe67,\r
-  0xfe6c, 0xfe6f,\r
-  0xfe75, 0xfe75,\r
-  0xfefd, 0xfefe,\r
-  0xff00, 0xff00,\r
-  0xffbf, 0xffc1,\r
-  0xffc8, 0xffc9,\r
-  0xffd0, 0xffd1,\r
-  0xffd8, 0xffd9,\r
-  0xffdd, 0xffdf,\r
-  0xffe7, 0xffe7,\r
-  0xffef, 0xfff8,\r
-  0xfffe, 0xffff,\r
-  0x1000c, 0x1000c,\r
-  0x10027, 0x10027,\r
-  0x1003b, 0x1003b,\r
-  0x1003e, 0x1003e,\r
-  0x1004e, 0x1004f,\r
-  0x1005e, 0x1007f,\r
-  0x100fb, 0x100ff,\r
-  0x10103, 0x10106,\r
-  0x10134, 0x10136,\r
-  0x1018b, 0x102ff,\r
-  0x1031f, 0x1031f,\r
-  0x10324, 0x1032f,\r
-  0x1034b, 0x1037f,\r
-  0x1039e, 0x1039e,\r
-  0x103c4, 0x103c7,\r
-  0x103d6, 0x103ff,\r
-  0x1049e, 0x1049f,\r
-  0x104aa, 0x107ff,\r
-  0x10806, 0x10807,\r
-  0x10809, 0x10809,\r
-  0x10836, 0x10836,\r
-  0x10839, 0x1083b,\r
-  0x1083d, 0x1083e,\r
-  0x10840, 0x109ff,\r
-  0x10a04, 0x10a04,\r
-  0x10a07, 0x10a0b,\r
-  0x10a14, 0x10a14,\r
-  0x10a18, 0x10a18,\r
-  0x10a34, 0x10a37,\r
-  0x10a3b, 0x10a3e,\r
-  0x10a48, 0x10a4f,\r
-  0x10a59, 0x1cfff,\r
-  0x1d0f6, 0x1d0ff,\r
-  0x1d127, 0x1d129,\r
-  0x1d1de, 0x1d1ff,\r
-  0x1d246, 0x1d2ff,\r
-  0x1d357, 0x1d3ff,\r
-  0x1d455, 0x1d455,\r
-  0x1d49d, 0x1d49d,\r
-  0x1d4a0, 0x1d4a1,\r
-  0x1d4a3, 0x1d4a4,\r
-  0x1d4a7, 0x1d4a8,\r
-  0x1d4ad, 0x1d4ad,\r
-  0x1d4ba, 0x1d4ba,\r
-  0x1d4bc, 0x1d4bc,\r
-  0x1d4c4, 0x1d4c4,\r
-  0x1d506, 0x1d506,\r
-  0x1d50b, 0x1d50c,\r
-  0x1d515, 0x1d515,\r
-  0x1d51d, 0x1d51d,\r
-  0x1d53a, 0x1d53a,\r
-  0x1d53f, 0x1d53f,\r
-  0x1d545, 0x1d545,\r
-  0x1d547, 0x1d549,\r
-  0x1d551, 0x1d551,\r
-  0x1d6a6, 0x1d6a7,\r
-  0x1d7ca, 0x1d7cd,\r
-  0x1d800, 0x1ffff,\r
-  0x2a6d7, 0x2f7ff,\r
-  0x2fa1e, 0xe0000,\r
-  0xe0002, 0xe001f,\r
-  0xe0080, 0xe00ff,\r
-  0xe01f0, 0xeffff,\r
-  0xffffe, 0xfffff,\r
-  0x10fffe, 0x10ffff\r
-}; /* CR_Cn */\r
-\r
-/* 'Co': General Category */\r
-static const OnigCodePoint CR_Co[] = {\r
-  3,\r
-  0xe000, 0xf8ff,\r
-  0xf0000, 0xffffd,\r
-  0x100000, 0x10fffd\r
-}; /* CR_Co */\r
-\r
-/* 'Cs': General Category */\r
-static const OnigCodePoint CR_Cs[] = {\r
-  1,\r
-  0xd800, 0xdfff\r
-}; /* CR_Cs */\r
-\r
-/* 'L': Major Category */\r
-static const OnigCodePoint CR_L[] = {\r
-  347,\r
-  0x0041, 0x005a,\r
-  0x0061, 0x007a,\r
-  0x00aa, 0x00aa,\r
-  0x00b5, 0x00b5,\r
-  0x00ba, 0x00ba,\r
-  0x00c0, 0x00d6,\r
-  0x00d8, 0x00f6,\r
-  0x00f8, 0x0241,\r
-  0x0250, 0x02c1,\r
-  0x02c6, 0x02d1,\r
-  0x02e0, 0x02e4,\r
-  0x02ee, 0x02ee,\r
-  0x037a, 0x037a,\r
-  0x0386, 0x0386,\r
-  0x0388, 0x038a,\r
-  0x038c, 0x038c,\r
-  0x038e, 0x03a1,\r
-  0x03a3, 0x03ce,\r
-  0x03d0, 0x03f5,\r
-  0x03f7, 0x0481,\r
-  0x048a, 0x04ce,\r
-  0x04d0, 0x04f9,\r
-  0x0500, 0x050f,\r
-  0x0531, 0x0556,\r
-  0x0559, 0x0559,\r
-  0x0561, 0x0587,\r
-  0x05d0, 0x05ea,\r
-  0x05f0, 0x05f2,\r
-  0x0621, 0x063a,\r
-  0x0640, 0x064a,\r
-  0x066e, 0x066f,\r
-  0x0671, 0x06d3,\r
-  0x06d5, 0x06d5,\r
-  0x06e5, 0x06e6,\r
-  0x06ee, 0x06ef,\r
-  0x06fa, 0x06fc,\r
-  0x06ff, 0x06ff,\r
-  0x0710, 0x0710,\r
-  0x0712, 0x072f,\r
-  0x074d, 0x076d,\r
-  0x0780, 0x07a5,\r
-  0x07b1, 0x07b1,\r
-  0x0904, 0x0939,\r
-  0x093d, 0x093d,\r
-  0x0950, 0x0950,\r
-  0x0958, 0x0961,\r
-  0x097d, 0x097d,\r
-  0x0985, 0x098c,\r
-  0x098f, 0x0990,\r
-  0x0993, 0x09a8,\r
-  0x09aa, 0x09b0,\r
-  0x09b2, 0x09b2,\r
-  0x09b6, 0x09b9,\r
-  0x09bd, 0x09bd,\r
-  0x09ce, 0x09ce,\r
-  0x09dc, 0x09dd,\r
-  0x09df, 0x09e1,\r
-  0x09f0, 0x09f1,\r
-  0x0a05, 0x0a0a,\r
-  0x0a0f, 0x0a10,\r
-  0x0a13, 0x0a28,\r
-  0x0a2a, 0x0a30,\r
-  0x0a32, 0x0a33,\r
-  0x0a35, 0x0a36,\r
-  0x0a38, 0x0a39,\r
-  0x0a59, 0x0a5c,\r
-  0x0a5e, 0x0a5e,\r
-  0x0a72, 0x0a74,\r
-  0x0a85, 0x0a8d,\r
-  0x0a8f, 0x0a91,\r
-  0x0a93, 0x0aa8,\r
-  0x0aaa, 0x0ab0,\r
-  0x0ab2, 0x0ab3,\r
-  0x0ab5, 0x0ab9,\r
-  0x0abd, 0x0abd,\r
-  0x0ad0, 0x0ad0,\r
-  0x0ae0, 0x0ae1,\r
-  0x0b05, 0x0b0c,\r
-  0x0b0f, 0x0b10,\r
-  0x0b13, 0x0b28,\r
-  0x0b2a, 0x0b30,\r
-  0x0b32, 0x0b33,\r
-  0x0b35, 0x0b39,\r
-  0x0b3d, 0x0b3d,\r
-  0x0b5c, 0x0b5d,\r
-  0x0b5f, 0x0b61,\r
-  0x0b71, 0x0b71,\r
-  0x0b83, 0x0b83,\r
-  0x0b85, 0x0b8a,\r
-  0x0b8e, 0x0b90,\r
-  0x0b92, 0x0b95,\r
-  0x0b99, 0x0b9a,\r
-  0x0b9c, 0x0b9c,\r
-  0x0b9e, 0x0b9f,\r
-  0x0ba3, 0x0ba4,\r
-  0x0ba8, 0x0baa,\r
-  0x0bae, 0x0bb9,\r
-  0x0c05, 0x0c0c,\r
-  0x0c0e, 0x0c10,\r
-  0x0c12, 0x0c28,\r
-  0x0c2a, 0x0c33,\r
-  0x0c35, 0x0c39,\r
-  0x0c60, 0x0c61,\r
-  0x0c85, 0x0c8c,\r
-  0x0c8e, 0x0c90,\r
-  0x0c92, 0x0ca8,\r
-  0x0caa, 0x0cb3,\r
-  0x0cb5, 0x0cb9,\r
-  0x0cbd, 0x0cbd,\r
-  0x0cde, 0x0cde,\r
-  0x0ce0, 0x0ce1,\r
-  0x0d05, 0x0d0c,\r
-  0x0d0e, 0x0d10,\r
-  0x0d12, 0x0d28,\r
-  0x0d2a, 0x0d39,\r
-  0x0d60, 0x0d61,\r
-  0x0d85, 0x0d96,\r
-  0x0d9a, 0x0db1,\r
-  0x0db3, 0x0dbb,\r
-  0x0dbd, 0x0dbd,\r
-  0x0dc0, 0x0dc6,\r
-  0x0e01, 0x0e30,\r
-  0x0e32, 0x0e33,\r
-  0x0e40, 0x0e46,\r
-  0x0e81, 0x0e82,\r
-  0x0e84, 0x0e84,\r
-  0x0e87, 0x0e88,\r
-  0x0e8a, 0x0e8a,\r
-  0x0e8d, 0x0e8d,\r
-  0x0e94, 0x0e97,\r
-  0x0e99, 0x0e9f,\r
-  0x0ea1, 0x0ea3,\r
-  0x0ea5, 0x0ea5,\r
-  0x0ea7, 0x0ea7,\r
-  0x0eaa, 0x0eab,\r
-  0x0ead, 0x0eb0,\r
-  0x0eb2, 0x0eb3,\r
-  0x0ebd, 0x0ebd,\r
-  0x0ec0, 0x0ec4,\r
-  0x0ec6, 0x0ec6,\r
-  0x0edc, 0x0edd,\r
-  0x0f00, 0x0f00,\r
-  0x0f40, 0x0f47,\r
-  0x0f49, 0x0f6a,\r
-  0x0f88, 0x0f8b,\r
-  0x1000, 0x1021,\r
-  0x1023, 0x1027,\r
-  0x1029, 0x102a,\r
-  0x1050, 0x1055,\r
-  0x10a0, 0x10c5,\r
-  0x10d0, 0x10fa,\r
-  0x10fc, 0x10fc,\r
-  0x1100, 0x1159,\r
-  0x115f, 0x11a2,\r
-  0x11a8, 0x11f9,\r
-  0x1200, 0x1248,\r
-  0x124a, 0x124d,\r
-  0x1250, 0x1256,\r
-  0x1258, 0x1258,\r
-  0x125a, 0x125d,\r
-  0x1260, 0x1288,\r
-  0x128a, 0x128d,\r
-  0x1290, 0x12b0,\r
-  0x12b2, 0x12b5,\r
-  0x12b8, 0x12be,\r
-  0x12c0, 0x12c0,\r
-  0x12c2, 0x12c5,\r
-  0x12c8, 0x12d6,\r
-  0x12d8, 0x1310,\r
-  0x1312, 0x1315,\r
-  0x1318, 0x135a,\r
-  0x1380, 0x138f,\r
-  0x13a0, 0x13f4,\r
-  0x1401, 0x166c,\r
-  0x166f, 0x1676,\r
-  0x1681, 0x169a,\r
-  0x16a0, 0x16ea,\r
-  0x1700, 0x170c,\r
-  0x170e, 0x1711,\r
-  0x1720, 0x1731,\r
-  0x1740, 0x1751,\r
-  0x1760, 0x176c,\r
-  0x176e, 0x1770,\r
-  0x1780, 0x17b3,\r
-  0x17d7, 0x17d7,\r
-  0x17dc, 0x17dc,\r
-  0x1820, 0x1877,\r
-  0x1880, 0x18a8,\r
-  0x1900, 0x191c,\r
-  0x1950, 0x196d,\r
-  0x1970, 0x1974,\r
-  0x1980, 0x19a9,\r
-  0x19c1, 0x19c7,\r
-  0x1a00, 0x1a16,\r
-  0x1d00, 0x1dbf,\r
-  0x1e00, 0x1e9b,\r
-  0x1ea0, 0x1ef9,\r
-  0x1f00, 0x1f15,\r
-  0x1f18, 0x1f1d,\r
-  0x1f20, 0x1f45,\r
-  0x1f48, 0x1f4d,\r
-  0x1f50, 0x1f57,\r
-  0x1f59, 0x1f59,\r
-  0x1f5b, 0x1f5b,\r
-  0x1f5d, 0x1f5d,\r
-  0x1f5f, 0x1f7d,\r
-  0x1f80, 0x1fb4,\r
-  0x1fb6, 0x1fbc,\r
-  0x1fbe, 0x1fbe,\r
-  0x1fc2, 0x1fc4,\r
-  0x1fc6, 0x1fcc,\r
-  0x1fd0, 0x1fd3,\r
-  0x1fd6, 0x1fdb,\r
-  0x1fe0, 0x1fec,\r
-  0x1ff2, 0x1ff4,\r
-  0x1ff6, 0x1ffc,\r
-  0x2071, 0x2071,\r
-  0x207f, 0x207f,\r
-  0x2090, 0x2094,\r
-  0x2102, 0x2102,\r
-  0x2107, 0x2107,\r
-  0x210a, 0x2113,\r
-  0x2115, 0x2115,\r
-  0x2119, 0x211d,\r
-  0x2124, 0x2124,\r
-  0x2126, 0x2126,\r
-  0x2128, 0x2128,\r
-  0x212a, 0x212d,\r
-  0x212f, 0x2131,\r
-  0x2133, 0x2139,\r
-  0x213c, 0x213f,\r
-  0x2145, 0x2149,\r
-  0x2c00, 0x2c2e,\r
-  0x2c30, 0x2c5e,\r
-  0x2c80, 0x2ce4,\r
-  0x2d00, 0x2d25,\r
-  0x2d30, 0x2d65,\r
-  0x2d6f, 0x2d6f,\r
-  0x2d80, 0x2d96,\r
-  0x2da0, 0x2da6,\r
-  0x2da8, 0x2dae,\r
-  0x2db0, 0x2db6,\r
-  0x2db8, 0x2dbe,\r
-  0x2dc0, 0x2dc6,\r
-  0x2dc8, 0x2dce,\r
-  0x2dd0, 0x2dd6,\r
-  0x2dd8, 0x2dde,\r
-  0x3005, 0x3006,\r
-  0x3031, 0x3035,\r
-  0x303b, 0x303c,\r
-  0x3041, 0x3096,\r
-  0x309d, 0x309f,\r
-  0x30a1, 0x30fa,\r
-  0x30fc, 0x30ff,\r
-  0x3105, 0x312c,\r
-  0x3131, 0x318e,\r
-  0x31a0, 0x31b7,\r
-  0x31f0, 0x31ff,\r
-  0x3400, 0x4db5,\r
-  0x4e00, 0x9fbb,\r
-  0xa000, 0xa48c,\r
-  0xa800, 0xa801,\r
-  0xa803, 0xa805,\r
-  0xa807, 0xa80a,\r
-  0xa80c, 0xa822,\r
-  0xac00, 0xd7a3,\r
-  0xf900, 0xfa2d,\r
-  0xfa30, 0xfa6a,\r
-  0xfa70, 0xfad9,\r
-  0xfb00, 0xfb06,\r
-  0xfb13, 0xfb17,\r
-  0xfb1d, 0xfb1d,\r
-  0xfb1f, 0xfb28,\r
-  0xfb2a, 0xfb36,\r
-  0xfb38, 0xfb3c,\r
-  0xfb3e, 0xfb3e,\r
-  0xfb40, 0xfb41,\r
-  0xfb43, 0xfb44,\r
-  0xfb46, 0xfbb1,\r
-  0xfbd3, 0xfd3d,\r
-  0xfd50, 0xfd8f,\r
-  0xfd92, 0xfdc7,\r
-  0xfdf0, 0xfdfb,\r
-  0xfe70, 0xfe74,\r
-  0xfe76, 0xfefc,\r
-  0xff21, 0xff3a,\r
-  0xff41, 0xff5a,\r
-  0xff66, 0xffbe,\r
-  0xffc2, 0xffc7,\r
-  0xffca, 0xffcf,\r
-  0xffd2, 0xffd7,\r
-  0xffda, 0xffdc,\r
-  0x10000, 0x1000b,\r
-  0x1000d, 0x10026,\r
-  0x10028, 0x1003a,\r
-  0x1003c, 0x1003d,\r
-  0x1003f, 0x1004d,\r
-  0x10050, 0x1005d,\r
-  0x10080, 0x100fa,\r
-  0x10300, 0x1031e,\r
-  0x10330, 0x10349,\r
-  0x10380, 0x1039d,\r
-  0x103a0, 0x103c3,\r
-  0x103c8, 0x103cf,\r
-  0x10400, 0x1049d,\r
-  0x10800, 0x10805,\r
-  0x10808, 0x10808,\r
-  0x1080a, 0x10835,\r
-  0x10837, 0x10838,\r
-  0x1083c, 0x1083c,\r
-  0x1083f, 0x1083f,\r
-  0x10a00, 0x10a00,\r
-  0x10a10, 0x10a13,\r
-  0x10a15, 0x10a17,\r
-  0x10a19, 0x10a33,\r
-  0x1d400, 0x1d454,\r
-  0x1d456, 0x1d49c,\r
-  0x1d49e, 0x1d49f,\r
-  0x1d4a2, 0x1d4a2,\r
-  0x1d4a5, 0x1d4a6,\r
-  0x1d4a9, 0x1d4ac,\r
-  0x1d4ae, 0x1d4b9,\r
-  0x1d4bb, 0x1d4bb,\r
-  0x1d4bd, 0x1d4c3,\r
-  0x1d4c5, 0x1d505,\r
-  0x1d507, 0x1d50a,\r
-  0x1d50d, 0x1d514,\r
-  0x1d516, 0x1d51c,\r
-  0x1d51e, 0x1d539,\r
-  0x1d53b, 0x1d53e,\r
-  0x1d540, 0x1d544,\r
-  0x1d546, 0x1d546,\r
-  0x1d54a, 0x1d550,\r
-  0x1d552, 0x1d6a5,\r
-  0x1d6a8, 0x1d6c0,\r
-  0x1d6c2, 0x1d6da,\r
-  0x1d6dc, 0x1d6fa,\r
-  0x1d6fc, 0x1d714,\r
-  0x1d716, 0x1d734,\r
-  0x1d736, 0x1d74e,\r
-  0x1d750, 0x1d76e,\r
-  0x1d770, 0x1d788,\r
-  0x1d78a, 0x1d7a8,\r
-  0x1d7aa, 0x1d7c2,\r
-  0x1d7c4, 0x1d7c9,\r
-  0x20000, 0x2a6d6,\r
-  0x2f800, 0x2fa1d\r
-}; /* CR_L */\r
-\r
-/* 'Ll': General Category */\r
-static const OnigCodePoint CR_Ll[] = {\r
-  480,\r
-  0x0061, 0x007a,\r
-  0x00aa, 0x00aa,\r
-  0x00b5, 0x00b5,\r
-  0x00ba, 0x00ba,\r
-  0x00df, 0x00f6,\r
-  0x00f8, 0x00ff,\r
-  0x0101, 0x0101,\r
-  0x0103, 0x0103,\r
-  0x0105, 0x0105,\r
-  0x0107, 0x0107,\r
-  0x0109, 0x0109,\r
-  0x010b, 0x010b,\r
-  0x010d, 0x010d,\r
-  0x010f, 0x010f,\r
-  0x0111, 0x0111,\r
-  0x0113, 0x0113,\r
-  0x0115, 0x0115,\r
-  0x0117, 0x0117,\r
-  0x0119, 0x0119,\r
-  0x011b, 0x011b,\r
-  0x011d, 0x011d,\r
-  0x011f, 0x011f,\r
-  0x0121, 0x0121,\r
-  0x0123, 0x0123,\r
-  0x0125, 0x0125,\r
-  0x0127, 0x0127,\r
-  0x0129, 0x0129,\r
-  0x012b, 0x012b,\r
-  0x012d, 0x012d,\r
-  0x012f, 0x012f,\r
-  0x0131, 0x0131,\r
-  0x0133, 0x0133,\r
-  0x0135, 0x0135,\r
-  0x0137, 0x0138,\r
-  0x013a, 0x013a,\r
-  0x013c, 0x013c,\r
-  0x013e, 0x013e,\r
-  0x0140, 0x0140,\r
-  0x0142, 0x0142,\r
-  0x0144, 0x0144,\r
-  0x0146, 0x0146,\r
-  0x0148, 0x0149,\r
-  0x014b, 0x014b,\r
-  0x014d, 0x014d,\r
-  0x014f, 0x014f,\r
-  0x0151, 0x0151,\r
-  0x0153, 0x0153,\r
-  0x0155, 0x0155,\r
-  0x0157, 0x0157,\r
-  0x0159, 0x0159,\r
-  0x015b, 0x015b,\r
-  0x015d, 0x015d,\r
-  0x015f, 0x015f,\r
-  0x0161, 0x0161,\r
-  0x0163, 0x0163,\r
-  0x0165, 0x0165,\r
-  0x0167, 0x0167,\r
-  0x0169, 0x0169,\r
-  0x016b, 0x016b,\r
-  0x016d, 0x016d,\r
-  0x016f, 0x016f,\r
-  0x0171, 0x0171,\r
-  0x0173, 0x0173,\r
-  0x0175, 0x0175,\r
-  0x0177, 0x0177,\r
-  0x017a, 0x017a,\r
-  0x017c, 0x017c,\r
-  0x017e, 0x0180,\r
-  0x0183, 0x0183,\r
-  0x0185, 0x0185,\r
-  0x0188, 0x0188,\r
-  0x018c, 0x018d,\r
-  0x0192, 0x0192,\r
-  0x0195, 0x0195,\r
-  0x0199, 0x019b,\r
-  0x019e, 0x019e,\r
-  0x01a1, 0x01a1,\r
-  0x01a3, 0x01a3,\r
-  0x01a5, 0x01a5,\r
-  0x01a8, 0x01a8,\r
-  0x01aa, 0x01ab,\r
-  0x01ad, 0x01ad,\r
-  0x01b0, 0x01b0,\r
-  0x01b4, 0x01b4,\r
-  0x01b6, 0x01b6,\r
-  0x01b9, 0x01ba,\r
-  0x01bd, 0x01bf,\r
-  0x01c6, 0x01c6,\r
-  0x01c9, 0x01c9,\r
-  0x01cc, 0x01cc,\r
-  0x01ce, 0x01ce,\r
-  0x01d0, 0x01d0,\r
-  0x01d2, 0x01d2,\r
-  0x01d4, 0x01d4,\r
-  0x01d6, 0x01d6,\r
-  0x01d8, 0x01d8,\r
-  0x01da, 0x01da,\r
-  0x01dc, 0x01dd,\r
-  0x01df, 0x01df,\r
-  0x01e1, 0x01e1,\r
-  0x01e3, 0x01e3,\r
-  0x01e5, 0x01e5,\r
-  0x01e7, 0x01e7,\r
-  0x01e9, 0x01e9,\r
-  0x01eb, 0x01eb,\r
-  0x01ed, 0x01ed,\r
-  0x01ef, 0x01f0,\r
-  0x01f3, 0x01f3,\r
-  0x01f5, 0x01f5,\r
-  0x01f9, 0x01f9,\r
-  0x01fb, 0x01fb,\r
-  0x01fd, 0x01fd,\r
-  0x01ff, 0x01ff,\r
-  0x0201, 0x0201,\r
-  0x0203, 0x0203,\r
-  0x0205, 0x0205,\r
-  0x0207, 0x0207,\r
-  0x0209, 0x0209,\r
-  0x020b, 0x020b,\r
-  0x020d, 0x020d,\r
-  0x020f, 0x020f,\r
-  0x0211, 0x0211,\r
-  0x0213, 0x0213,\r
-  0x0215, 0x0215,\r
-  0x0217, 0x0217,\r
-  0x0219, 0x0219,\r
-  0x021b, 0x021b,\r
-  0x021d, 0x021d,\r
-  0x021f, 0x021f,\r
-  0x0221, 0x0221,\r
-  0x0223, 0x0223,\r
-  0x0225, 0x0225,\r
-  0x0227, 0x0227,\r
-  0x0229, 0x0229,\r
-  0x022b, 0x022b,\r
-  0x022d, 0x022d,\r
-  0x022f, 0x022f,\r
-  0x0231, 0x0231,\r
-  0x0233, 0x0239,\r
-  0x023c, 0x023c,\r
-  0x023f, 0x0240,\r
-  0x0250, 0x02af,\r
-  0x0390, 0x0390,\r
-  0x03ac, 0x03ce,\r
-  0x03d0, 0x03d1,\r
-  0x03d5, 0x03d7,\r
-  0x03d9, 0x03d9,\r
-  0x03db, 0x03db,\r
-  0x03dd, 0x03dd,\r
-  0x03df, 0x03df,\r
-  0x03e1, 0x03e1,\r
-  0x03e3, 0x03e3,\r
-  0x03e5, 0x03e5,\r
-  0x03e7, 0x03e7,\r
-  0x03e9, 0x03e9,\r
-  0x03eb, 0x03eb,\r
-  0x03ed, 0x03ed,\r
-  0x03ef, 0x03f3,\r
-  0x03f5, 0x03f5,\r
-  0x03f8, 0x03f8,\r
-  0x03fb, 0x03fc,\r
-  0x0430, 0x045f,\r
-  0x0461, 0x0461,\r
-  0x0463, 0x0463,\r
-  0x0465, 0x0465,\r
-  0x0467, 0x0467,\r
-  0x0469, 0x0469,\r
-  0x046b, 0x046b,\r
-  0x046d, 0x046d,\r
-  0x046f, 0x046f,\r
-  0x0471, 0x0471,\r
-  0x0473, 0x0473,\r
-  0x0475, 0x0475,\r
-  0x0477, 0x0477,\r
-  0x0479, 0x0479,\r
-  0x047b, 0x047b,\r
-  0x047d, 0x047d,\r
-  0x047f, 0x047f,\r
-  0x0481, 0x0481,\r
-  0x048b, 0x048b,\r
-  0x048d, 0x048d,\r
-  0x048f, 0x048f,\r
-  0x0491, 0x0491,\r
-  0x0493, 0x0493,\r
-  0x0495, 0x0495,\r
-  0x0497, 0x0497,\r
-  0x0499, 0x0499,\r
-  0x049b, 0x049b,\r
-  0x049d, 0x049d,\r
-  0x049f, 0x049f,\r
-  0x04a1, 0x04a1,\r
-  0x04a3, 0x04a3,\r
-  0x04a5, 0x04a5,\r
-  0x04a7, 0x04a7,\r
-  0x04a9, 0x04a9,\r
-  0x04ab, 0x04ab,\r
-  0x04ad, 0x04ad,\r
-  0x04af, 0x04af,\r
-  0x04b1, 0x04b1,\r
-  0x04b3, 0x04b3,\r
-  0x04b5, 0x04b5,\r
-  0x04b7, 0x04b7,\r
-  0x04b9, 0x04b9,\r
-  0x04bb, 0x04bb,\r
-  0x04bd, 0x04bd,\r
-  0x04bf, 0x04bf,\r
-  0x04c2, 0x04c2,\r
-  0x04c4, 0x04c4,\r
-  0x04c6, 0x04c6,\r
-  0x04c8, 0x04c8,\r
-  0x04ca, 0x04ca,\r
-  0x04cc, 0x04cc,\r
-  0x04ce, 0x04ce,\r
-  0x04d1, 0x04d1,\r
-  0x04d3, 0x04d3,\r
-  0x04d5, 0x04d5,\r
-  0x04d7, 0x04d7,\r
-  0x04d9, 0x04d9,\r
-  0x04db, 0x04db,\r
-  0x04dd, 0x04dd,\r
-  0x04df, 0x04df,\r
-  0x04e1, 0x04e1,\r
-  0x04e3, 0x04e3,\r
-  0x04e5, 0x04e5,\r
-  0x04e7, 0x04e7,\r
-  0x04e9, 0x04e9,\r
-  0x04eb, 0x04eb,\r
-  0x04ed, 0x04ed,\r
-  0x04ef, 0x04ef,\r
-  0x04f1, 0x04f1,\r
-  0x04f3, 0x04f3,\r
-  0x04f5, 0x04f5,\r
-  0x04f7, 0x04f7,\r
-  0x04f9, 0x04f9,\r
-  0x0501, 0x0501,\r
-  0x0503, 0x0503,\r
-  0x0505, 0x0505,\r
-  0x0507, 0x0507,\r
-  0x0509, 0x0509,\r
-  0x050b, 0x050b,\r
-  0x050d, 0x050d,\r
-  0x050f, 0x050f,\r
-  0x0561, 0x0587,\r
-  0x1d00, 0x1d2b,\r
-  0x1d62, 0x1d77,\r
-  0x1d79, 0x1d9a,\r
-  0x1e01, 0x1e01,\r
-  0x1e03, 0x1e03,\r
-  0x1e05, 0x1e05,\r
-  0x1e07, 0x1e07,\r
-  0x1e09, 0x1e09,\r
-  0x1e0b, 0x1e0b,\r
-  0x1e0d, 0x1e0d,\r
-  0x1e0f, 0x1e0f,\r
-  0x1e11, 0x1e11,\r
-  0x1e13, 0x1e13,\r
-  0x1e15, 0x1e15,\r
-  0x1e17, 0x1e17,\r
-  0x1e19, 0x1e19,\r
-  0x1e1b, 0x1e1b,\r
-  0x1e1d, 0x1e1d,\r
-  0x1e1f, 0x1e1f,\r
-  0x1e21, 0x1e21,\r
-  0x1e23, 0x1e23,\r
-  0x1e25, 0x1e25,\r
-  0x1e27, 0x1e27,\r
-  0x1e29, 0x1e29,\r
-  0x1e2b, 0x1e2b,\r
-  0x1e2d, 0x1e2d,\r
-  0x1e2f, 0x1e2f,\r
-  0x1e31, 0x1e31,\r
-  0x1e33, 0x1e33,\r
-  0x1e35, 0x1e35,\r
-  0x1e37, 0x1e37,\r
-  0x1e39, 0x1e39,\r
-  0x1e3b, 0x1e3b,\r
-  0x1e3d, 0x1e3d,\r
-  0x1e3f, 0x1e3f,\r
-  0x1e41, 0x1e41,\r
-  0x1e43, 0x1e43,\r
-  0x1e45, 0x1e45,\r
-  0x1e47, 0x1e47,\r
-  0x1e49, 0x1e49,\r
-  0x1e4b, 0x1e4b,\r
-  0x1e4d, 0x1e4d,\r
-  0x1e4f, 0x1e4f,\r
-  0x1e51, 0x1e51,\r
-  0x1e53, 0x1e53,\r
-  0x1e55, 0x1e55,\r
-  0x1e57, 0x1e57,\r
-  0x1e59, 0x1e59,\r
-  0x1e5b, 0x1e5b,\r
-  0x1e5d, 0x1e5d,\r
-  0x1e5f, 0x1e5f,\r
-  0x1e61, 0x1e61,\r
-  0x1e63, 0x1e63,\r
-  0x1e65, 0x1e65,\r
-  0x1e67, 0x1e67,\r
-  0x1e69, 0x1e69,\r
-  0x1e6b, 0x1e6b,\r
-  0x1e6d, 0x1e6d,\r
-  0x1e6f, 0x1e6f,\r
-  0x1e71, 0x1e71,\r
-  0x1e73, 0x1e73,\r
-  0x1e75, 0x1e75,\r
-  0x1e77, 0x1e77,\r
-  0x1e79, 0x1e79,\r
-  0x1e7b, 0x1e7b,\r
-  0x1e7d, 0x1e7d,\r
-  0x1e7f, 0x1e7f,\r
-  0x1e81, 0x1e81,\r
-  0x1e83, 0x1e83,\r
-  0x1e85, 0x1e85,\r
-  0x1e87, 0x1e87,\r
-  0x1e89, 0x1e89,\r
-  0x1e8b, 0x1e8b,\r
-  0x1e8d, 0x1e8d,\r
-  0x1e8f, 0x1e8f,\r
-  0x1e91, 0x1e91,\r
-  0x1e93, 0x1e93,\r
-  0x1e95, 0x1e9b,\r
-  0x1ea1, 0x1ea1,\r
-  0x1ea3, 0x1ea3,\r
-  0x1ea5, 0x1ea5,\r
-  0x1ea7, 0x1ea7,\r
-  0x1ea9, 0x1ea9,\r
-  0x1eab, 0x1eab,\r
-  0x1ead, 0x1ead,\r
-  0x1eaf, 0x1eaf,\r
-  0x1eb1, 0x1eb1,\r
-  0x1eb3, 0x1eb3,\r
-  0x1eb5, 0x1eb5,\r
-  0x1eb7, 0x1eb7,\r
-  0x1eb9, 0x1eb9,\r
-  0x1ebb, 0x1ebb,\r
-  0x1ebd, 0x1ebd,\r
-  0x1ebf, 0x1ebf,\r
-  0x1ec1, 0x1ec1,\r
-  0x1ec3, 0x1ec3,\r
-  0x1ec5, 0x1ec5,\r
-  0x1ec7, 0x1ec7,\r
-  0x1ec9, 0x1ec9,\r
-  0x1ecb, 0x1ecb,\r
-  0x1ecd, 0x1ecd,\r
-  0x1ecf, 0x1ecf,\r
-  0x1ed1, 0x1ed1,\r
-  0x1ed3, 0x1ed3,\r
-  0x1ed5, 0x1ed5,\r
-  0x1ed7, 0x1ed7,\r
-  0x1ed9, 0x1ed9,\r
-  0x1edb, 0x1edb,\r
-  0x1edd, 0x1edd,\r
-  0x1edf, 0x1edf,\r
-  0x1ee1, 0x1ee1,\r
-  0x1ee3, 0x1ee3,\r
-  0x1ee5, 0x1ee5,\r
-  0x1ee7, 0x1ee7,\r
-  0x1ee9, 0x1ee9,\r
-  0x1eeb, 0x1eeb,\r
-  0x1eed, 0x1eed,\r
-  0x1eef, 0x1eef,\r
-  0x1ef1, 0x1ef1,\r
-  0x1ef3, 0x1ef3,\r
-  0x1ef5, 0x1ef5,\r
-  0x1ef7, 0x1ef7,\r
-  0x1ef9, 0x1ef9,\r
-  0x1f00, 0x1f07,\r
-  0x1f10, 0x1f15,\r
-  0x1f20, 0x1f27,\r
-  0x1f30, 0x1f37,\r
-  0x1f40, 0x1f45,\r
-  0x1f50, 0x1f57,\r
-  0x1f60, 0x1f67,\r
-  0x1f70, 0x1f7d,\r
-  0x1f80, 0x1f87,\r
-  0x1f90, 0x1f97,\r
-  0x1fa0, 0x1fa7,\r
-  0x1fb0, 0x1fb4,\r
-  0x1fb6, 0x1fb7,\r
-  0x1fbe, 0x1fbe,\r
-  0x1fc2, 0x1fc4,\r
-  0x1fc6, 0x1fc7,\r
-  0x1fd0, 0x1fd3,\r
-  0x1fd6, 0x1fd7,\r
-  0x1fe0, 0x1fe7,\r
-  0x1ff2, 0x1ff4,\r
-  0x1ff6, 0x1ff7,\r
-  0x2071, 0x2071,\r
-  0x207f, 0x207f,\r
-  0x210a, 0x210a,\r
-  0x210e, 0x210f,\r
-  0x2113, 0x2113,\r
-  0x212f, 0x212f,\r
-  0x2134, 0x2134,\r
-  0x2139, 0x2139,\r
-  0x213c, 0x213d,\r
-  0x2146, 0x2149,\r
-  0x2c30, 0x2c5e,\r
-  0x2c81, 0x2c81,\r
-  0x2c83, 0x2c83,\r
-  0x2c85, 0x2c85,\r
-  0x2c87, 0x2c87,\r
-  0x2c89, 0x2c89,\r
-  0x2c8b, 0x2c8b,\r
-  0x2c8d, 0x2c8d,\r
-  0x2c8f, 0x2c8f,\r
-  0x2c91, 0x2c91,\r
-  0x2c93, 0x2c93,\r
-  0x2c95, 0x2c95,\r
-  0x2c97, 0x2c97,\r
-  0x2c99, 0x2c99,\r
-  0x2c9b, 0x2c9b,\r
-  0x2c9d, 0x2c9d,\r
-  0x2c9f, 0x2c9f,\r
-  0x2ca1, 0x2ca1,\r
-  0x2ca3, 0x2ca3,\r
-  0x2ca5, 0x2ca5,\r
-  0x2ca7, 0x2ca7,\r
-  0x2ca9, 0x2ca9,\r
-  0x2cab, 0x2cab,\r
-  0x2cad, 0x2cad,\r
-  0x2caf, 0x2caf,\r
-  0x2cb1, 0x2cb1,\r
-  0x2cb3, 0x2cb3,\r
-  0x2cb5, 0x2cb5,\r
-  0x2cb7, 0x2cb7,\r
-  0x2cb9, 0x2cb9,\r
-  0x2cbb, 0x2cbb,\r
-  0x2cbd, 0x2cbd,\r
-  0x2cbf, 0x2cbf,\r
-  0x2cc1, 0x2cc1,\r
-  0x2cc3, 0x2cc3,\r
-  0x2cc5, 0x2cc5,\r
-  0x2cc7, 0x2cc7,\r
-  0x2cc9, 0x2cc9,\r
-  0x2ccb, 0x2ccb,\r
-  0x2ccd, 0x2ccd,\r
-  0x2ccf, 0x2ccf,\r
-  0x2cd1, 0x2cd1,\r
-  0x2cd3, 0x2cd3,\r
-  0x2cd5, 0x2cd5,\r
-  0x2cd7, 0x2cd7,\r
-  0x2cd9, 0x2cd9,\r
-  0x2cdb, 0x2cdb,\r
-  0x2cdd, 0x2cdd,\r
-  0x2cdf, 0x2cdf,\r
-  0x2ce1, 0x2ce1,\r
-  0x2ce3, 0x2ce4,\r
-  0x2d00, 0x2d25,\r
-  0xfb00, 0xfb06,\r
-  0xfb13, 0xfb17,\r
-  0xff41, 0xff5a,\r
-  0x10428, 0x1044f,\r
-  0x1d41a, 0x1d433,\r
-  0x1d44e, 0x1d454,\r
-  0x1d456, 0x1d467,\r
-  0x1d482, 0x1d49b,\r
-  0x1d4b6, 0x1d4b9,\r
-  0x1d4bb, 0x1d4bb,\r
-  0x1d4bd, 0x1d4c3,\r
-  0x1d4c5, 0x1d4cf,\r
-  0x1d4ea, 0x1d503,\r
-  0x1d51e, 0x1d537,\r
-  0x1d552, 0x1d56b,\r
-  0x1d586, 0x1d59f,\r
-  0x1d5ba, 0x1d5d3,\r
-  0x1d5ee, 0x1d607,\r
-  0x1d622, 0x1d63b,\r
-  0x1d656, 0x1d66f,\r
-  0x1d68a, 0x1d6a5,\r
-  0x1d6c2, 0x1d6da,\r
-  0x1d6dc, 0x1d6e1,\r
-  0x1d6fc, 0x1d714,\r
-  0x1d716, 0x1d71b,\r
-  0x1d736, 0x1d74e,\r
-  0x1d750, 0x1d755,\r
-  0x1d770, 0x1d788,\r
-  0x1d78a, 0x1d78f,\r
-  0x1d7aa, 0x1d7c2,\r
-  0x1d7c4, 0x1d7c9\r
-}; /* CR_Ll */\r
-\r
-/* 'Lm': General Category */\r
-static const OnigCodePoint CR_Lm[] = {\r
-  26,\r
-  0x02b0, 0x02c1,\r
-  0x02c6, 0x02d1,\r
-  0x02e0, 0x02e4,\r
-  0x02ee, 0x02ee,\r
-  0x037a, 0x037a,\r
-  0x0559, 0x0559,\r
-  0x0640, 0x0640,\r
-  0x06e5, 0x06e6,\r
-  0x0e46, 0x0e46,\r
-  0x0ec6, 0x0ec6,\r
-  0x10fc, 0x10fc,\r
-  0x17d7, 0x17d7,\r
-  0x1843, 0x1843,\r
-  0x1d2c, 0x1d61,\r
-  0x1d78, 0x1d78,\r
-  0x1d9b, 0x1dbf,\r
-  0x2090, 0x2094,\r
-  0x2d6f, 0x2d6f,\r
-  0x3005, 0x3005,\r
-  0x3031, 0x3035,\r
-  0x303b, 0x303b,\r
-  0x309d, 0x309e,\r
-  0x30fc, 0x30fe,\r
-  0xa015, 0xa015,\r
-  0xff70, 0xff70,\r
-  0xff9e, 0xff9f\r
-}; /* CR_Lm */\r
-\r
-/* 'Lo': General Category */\r
-static const OnigCodePoint CR_Lo[] = {\r
-  245,\r
-  0x01bb, 0x01bb,\r
-  0x01c0, 0x01c3,\r
-  0x05d0, 0x05ea,\r
-  0x05f0, 0x05f2,\r
-  0x0621, 0x063a,\r
-  0x0641, 0x064a,\r
-  0x066e, 0x066f,\r
-  0x0671, 0x06d3,\r
-  0x06d5, 0x06d5,\r
-  0x06ee, 0x06ef,\r
-  0x06fa, 0x06fc,\r
-  0x06ff, 0x06ff,\r
-  0x0710, 0x0710,\r
-  0x0712, 0x072f,\r
-  0x074d, 0x076d,\r
-  0x0780, 0x07a5,\r
-  0x07b1, 0x07b1,\r
-  0x0904, 0x0939,\r
-  0x093d, 0x093d,\r
-  0x0950, 0x0950,\r
-  0x0958, 0x0961,\r
-  0x097d, 0x097d,\r
-  0x0985, 0x098c,\r
-  0x098f, 0x0990,\r
-  0x0993, 0x09a8,\r
-  0x09aa, 0x09b0,\r
-  0x09b2, 0x09b2,\r
-  0x09b6, 0x09b9,\r
-  0x09bd, 0x09bd,\r
-  0x09ce, 0x09ce,\r
-  0x09dc, 0x09dd,\r
-  0x09df, 0x09e1,\r
-  0x09f0, 0x09f1,\r
-  0x0a05, 0x0a0a,\r
-  0x0a0f, 0x0a10,\r
-  0x0a13, 0x0a28,\r
-  0x0a2a, 0x0a30,\r
-  0x0a32, 0x0a33,\r
-  0x0a35, 0x0a36,\r
-  0x0a38, 0x0a39,\r
-  0x0a59, 0x0a5c,\r
-  0x0a5e, 0x0a5e,\r
-  0x0a72, 0x0a74,\r
-  0x0a85, 0x0a8d,\r
-  0x0a8f, 0x0a91,\r
-  0x0a93, 0x0aa8,\r
-  0x0aaa, 0x0ab0,\r
-  0x0ab2, 0x0ab3,\r
-  0x0ab5, 0x0ab9,\r
-  0x0abd, 0x0abd,\r
-  0x0ad0, 0x0ad0,\r
-  0x0ae0, 0x0ae1,\r
-  0x0b05, 0x0b0c,\r
-  0x0b0f, 0x0b10,\r
-  0x0b13, 0x0b28,\r
-  0x0b2a, 0x0b30,\r
-  0x0b32, 0x0b33,\r
-  0x0b35, 0x0b39,\r
-  0x0b3d, 0x0b3d,\r
-  0x0b5c, 0x0b5d,\r
-  0x0b5f, 0x0b61,\r
-  0x0b71, 0x0b71,\r
-  0x0b83, 0x0b83,\r
-  0x0b85, 0x0b8a,\r
-  0x0b8e, 0x0b90,\r
-  0x0b92, 0x0b95,\r
-  0x0b99, 0x0b9a,\r
-  0x0b9c, 0x0b9c,\r
-  0x0b9e, 0x0b9f,\r
-  0x0ba3, 0x0ba4,\r
-  0x0ba8, 0x0baa,\r
-  0x0bae, 0x0bb9,\r
-  0x0c05, 0x0c0c,\r
-  0x0c0e, 0x0c10,\r
-  0x0c12, 0x0c28,\r
-  0x0c2a, 0x0c33,\r
-  0x0c35, 0x0c39,\r
-  0x0c60, 0x0c61,\r
-  0x0c85, 0x0c8c,\r
-  0x0c8e, 0x0c90,\r
-  0x0c92, 0x0ca8,\r
-  0x0caa, 0x0cb3,\r
-  0x0cb5, 0x0cb9,\r
-  0x0cbd, 0x0cbd,\r
-  0x0cde, 0x0cde,\r
-  0x0ce0, 0x0ce1,\r
-  0x0d05, 0x0d0c,\r
-  0x0d0e, 0x0d10,\r
-  0x0d12, 0x0d28,\r
-  0x0d2a, 0x0d39,\r
-  0x0d60, 0x0d61,\r
-  0x0d85, 0x0d96,\r
-  0x0d9a, 0x0db1,\r
-  0x0db3, 0x0dbb,\r
-  0x0dbd, 0x0dbd,\r
-  0x0dc0, 0x0dc6,\r
-  0x0e01, 0x0e30,\r
-  0x0e32, 0x0e33,\r
-  0x0e40, 0x0e45,\r
-  0x0e81, 0x0e82,\r
-  0x0e84, 0x0e84,\r
-  0x0e87, 0x0e88,\r
-  0x0e8a, 0x0e8a,\r
-  0x0e8d, 0x0e8d,\r
-  0x0e94, 0x0e97,\r
-  0x0e99, 0x0e9f,\r
-  0x0ea1, 0x0ea3,\r
-  0x0ea5, 0x0ea5,\r
-  0x0ea7, 0x0ea7,\r
-  0x0eaa, 0x0eab,\r
-  0x0ead, 0x0eb0,\r
-  0x0eb2, 0x0eb3,\r
-  0x0ebd, 0x0ebd,\r
-  0x0ec0, 0x0ec4,\r
-  0x0edc, 0x0edd,\r
-  0x0f00, 0x0f00,\r
-  0x0f40, 0x0f47,\r
-  0x0f49, 0x0f6a,\r
-  0x0f88, 0x0f8b,\r
-  0x1000, 0x1021,\r
-  0x1023, 0x1027,\r
-  0x1029, 0x102a,\r
-  0x1050, 0x1055,\r
-  0x10d0, 0x10fa,\r
-  0x1100, 0x1159,\r
-  0x115f, 0x11a2,\r
-  0x11a8, 0x11f9,\r
-  0x1200, 0x1248,\r
-  0x124a, 0x124d,\r
-  0x1250, 0x1256,\r
-  0x1258, 0x1258,\r
-  0x125a, 0x125d,\r
-  0x1260, 0x1288,\r
-  0x128a, 0x128d,\r
-  0x1290, 0x12b0,\r
-  0x12b2, 0x12b5,\r
-  0x12b8, 0x12be,\r
-  0x12c0, 0x12c0,\r
-  0x12c2, 0x12c5,\r
-  0x12c8, 0x12d6,\r
-  0x12d8, 0x1310,\r
-  0x1312, 0x1315,\r
-  0x1318, 0x135a,\r
-  0x1380, 0x138f,\r
-  0x13a0, 0x13f4,\r
-  0x1401, 0x166c,\r
-  0x166f, 0x1676,\r
-  0x1681, 0x169a,\r
-  0x16a0, 0x16ea,\r
-  0x1700, 0x170c,\r
-  0x170e, 0x1711,\r
-  0x1720, 0x1731,\r
-  0x1740, 0x1751,\r
-  0x1760, 0x176c,\r
-  0x176e, 0x1770,\r
-  0x1780, 0x17b3,\r
-  0x17dc, 0x17dc,\r
-  0x1820, 0x1842,\r
-  0x1844, 0x1877,\r
-  0x1880, 0x18a8,\r
-  0x1900, 0x191c,\r
-  0x1950, 0x196d,\r
-  0x1970, 0x1974,\r
-  0x1980, 0x19a9,\r
-  0x19c1, 0x19c7,\r
-  0x1a00, 0x1a16,\r
-  0x2135, 0x2138,\r
-  0x2d30, 0x2d65,\r
-  0x2d80, 0x2d96,\r
-  0x2da0, 0x2da6,\r
-  0x2da8, 0x2dae,\r
-  0x2db0, 0x2db6,\r
-  0x2db8, 0x2dbe,\r
-  0x2dc0, 0x2dc6,\r
-  0x2dc8, 0x2dce,\r
-  0x2dd0, 0x2dd6,\r
-  0x2dd8, 0x2dde,\r
-  0x3006, 0x3006,\r
-  0x303c, 0x303c,\r
-  0x3041, 0x3096,\r
-  0x309f, 0x309f,\r
-  0x30a1, 0x30fa,\r
-  0x30ff, 0x30ff,\r
-  0x3105, 0x312c,\r
-  0x3131, 0x318e,\r
-  0x31a0, 0x31b7,\r
-  0x31f0, 0x31ff,\r
-  0x3400, 0x4db5,\r
-  0x4e00, 0x9fbb,\r
-  0xa000, 0xa014,\r
-  0xa016, 0xa48c,\r
-  0xa800, 0xa801,\r
-  0xa803, 0xa805,\r
-  0xa807, 0xa80a,\r
-  0xa80c, 0xa822,\r
-  0xac00, 0xd7a3,\r
-  0xf900, 0xfa2d,\r
-  0xfa30, 0xfa6a,\r
-  0xfa70, 0xfad9,\r
-  0xfb1d, 0xfb1d,\r
-  0xfb1f, 0xfb28,\r
-  0xfb2a, 0xfb36,\r
-  0xfb38, 0xfb3c,\r
-  0xfb3e, 0xfb3e,\r
-  0xfb40, 0xfb41,\r
-  0xfb43, 0xfb44,\r
-  0xfb46, 0xfbb1,\r
-  0xfbd3, 0xfd3d,\r
-  0xfd50, 0xfd8f,\r
-  0xfd92, 0xfdc7,\r
-  0xfdf0, 0xfdfb,\r
-  0xfe70, 0xfe74,\r
-  0xfe76, 0xfefc,\r
-  0xff66, 0xff6f,\r
-  0xff71, 0xff9d,\r
-  0xffa0, 0xffbe,\r
-  0xffc2, 0xffc7,\r
-  0xffca, 0xffcf,\r
-  0xffd2, 0xffd7,\r
-  0xffda, 0xffdc,\r
-  0x10000, 0x1000b,\r
-  0x1000d, 0x10026,\r
-  0x10028, 0x1003a,\r
-  0x1003c, 0x1003d,\r
-  0x1003f, 0x1004d,\r
-  0x10050, 0x1005d,\r
-  0x10080, 0x100fa,\r
-  0x10300, 0x1031e,\r
-  0x10330, 0x10349,\r
-  0x10380, 0x1039d,\r
-  0x103a0, 0x103c3,\r
-  0x103c8, 0x103cf,\r
-  0x10450, 0x1049d,\r
-  0x10800, 0x10805,\r
-  0x10808, 0x10808,\r
-  0x1080a, 0x10835,\r
-  0x10837, 0x10838,\r
-  0x1083c, 0x1083c,\r
-  0x1083f, 0x1083f,\r
-  0x10a00, 0x10a00,\r
-  0x10a10, 0x10a13,\r
-  0x10a15, 0x10a17,\r
-  0x10a19, 0x10a33,\r
-  0x20000, 0x2a6d6,\r
-  0x2f800, 0x2fa1d\r
-}; /* CR_Lo */\r
-\r
-/* 'Lt': General Category */\r
-static const OnigCodePoint CR_Lt[] = {\r
-  10,\r
-  0x01c5, 0x01c5,\r
-  0x01c8, 0x01c8,\r
-  0x01cb, 0x01cb,\r
-  0x01f2, 0x01f2,\r
-  0x1f88, 0x1f8f,\r
-  0x1f98, 0x1f9f,\r
-  0x1fa8, 0x1faf,\r
-  0x1fbc, 0x1fbc,\r
-  0x1fcc, 0x1fcc,\r
-  0x1ffc, 0x1ffc\r
-}; /* CR_Lt */\r
-\r
-/* 'Lu': General Category */\r
-static const OnigCodePoint CR_Lu[] = {\r
-  476,\r
-  0x0041, 0x005a,\r
-  0x00c0, 0x00d6,\r
-  0x00d8, 0x00de,\r
-  0x0100, 0x0100,\r
-  0x0102, 0x0102,\r
-  0x0104, 0x0104,\r
-  0x0106, 0x0106,\r
-  0x0108, 0x0108,\r
-  0x010a, 0x010a,\r
-  0x010c, 0x010c,\r
-  0x010e, 0x010e,\r
-  0x0110, 0x0110,\r
-  0x0112, 0x0112,\r
-  0x0114, 0x0114,\r
-  0x0116, 0x0116,\r
-  0x0118, 0x0118,\r
-  0x011a, 0x011a,\r
-  0x011c, 0x011c,\r
-  0x011e, 0x011e,\r
-  0x0120, 0x0120,\r
-  0x0122, 0x0122,\r
-  0x0124, 0x0124,\r
-  0x0126, 0x0126,\r
-  0x0128, 0x0128,\r
-  0x012a, 0x012a,\r
-  0x012c, 0x012c,\r
-  0x012e, 0x012e,\r
-  0x0130, 0x0130,\r
-  0x0132, 0x0132,\r
-  0x0134, 0x0134,\r
-  0x0136, 0x0136,\r
-  0x0139, 0x0139,\r
-  0x013b, 0x013b,\r
-  0x013d, 0x013d,\r
-  0x013f, 0x013f,\r
-  0x0141, 0x0141,\r
-  0x0143, 0x0143,\r
-  0x0145, 0x0145,\r
-  0x0147, 0x0147,\r
-  0x014a, 0x014a,\r
-  0x014c, 0x014c,\r
-  0x014e, 0x014e,\r
-  0x0150, 0x0150,\r
-  0x0152, 0x0152,\r
-  0x0154, 0x0154,\r
-  0x0156, 0x0156,\r
-  0x0158, 0x0158,\r
-  0x015a, 0x015a,\r
-  0x015c, 0x015c,\r
-  0x015e, 0x015e,\r
-  0x0160, 0x0160,\r
-  0x0162, 0x0162,\r
-  0x0164, 0x0164,\r
-  0x0166, 0x0166,\r
-  0x0168, 0x0168,\r
-  0x016a, 0x016a,\r
-  0x016c, 0x016c,\r
-  0x016e, 0x016e,\r
-  0x0170, 0x0170,\r
-  0x0172, 0x0172,\r
-  0x0174, 0x0174,\r
-  0x0176, 0x0176,\r
-  0x0178, 0x0179,\r
-  0x017b, 0x017b,\r
-  0x017d, 0x017d,\r
-  0x0181, 0x0182,\r
-  0x0184, 0x0184,\r
-  0x0186, 0x0187,\r
-  0x0189, 0x018b,\r
-  0x018e, 0x0191,\r
-  0x0193, 0x0194,\r
-  0x0196, 0x0198,\r
-  0x019c, 0x019d,\r
-  0x019f, 0x01a0,\r
-  0x01a2, 0x01a2,\r
-  0x01a4, 0x01a4,\r
-  0x01a6, 0x01a7,\r
-  0x01a9, 0x01a9,\r
-  0x01ac, 0x01ac,\r
-  0x01ae, 0x01af,\r
-  0x01b1, 0x01b3,\r
-  0x01b5, 0x01b5,\r
-  0x01b7, 0x01b8,\r
-  0x01bc, 0x01bc,\r
-  0x01c4, 0x01c4,\r
-  0x01c7, 0x01c7,\r
-  0x01ca, 0x01ca,\r
-  0x01cd, 0x01cd,\r
-  0x01cf, 0x01cf,\r
-  0x01d1, 0x01d1,\r
-  0x01d3, 0x01d3,\r
-  0x01d5, 0x01d5,\r
-  0x01d7, 0x01d7,\r
-  0x01d9, 0x01d9,\r
-  0x01db, 0x01db,\r
-  0x01de, 0x01de,\r
-  0x01e0, 0x01e0,\r
-  0x01e2, 0x01e2,\r
-  0x01e4, 0x01e4,\r
-  0x01e6, 0x01e6,\r
-  0x01e8, 0x01e8,\r
-  0x01ea, 0x01ea,\r
-  0x01ec, 0x01ec,\r
-  0x01ee, 0x01ee,\r
-  0x01f1, 0x01f1,\r
-  0x01f4, 0x01f4,\r
-  0x01f6, 0x01f8,\r
-  0x01fa, 0x01fa,\r
-  0x01fc, 0x01fc,\r
-  0x01fe, 0x01fe,\r
-  0x0200, 0x0200,\r
-  0x0202, 0x0202,\r
-  0x0204, 0x0204,\r
-  0x0206, 0x0206,\r
-  0x0208, 0x0208,\r
-  0x020a, 0x020a,\r
-  0x020c, 0x020c,\r
-  0x020e, 0x020e,\r
-  0x0210, 0x0210,\r
-  0x0212, 0x0212,\r
-  0x0214, 0x0214,\r
-  0x0216, 0x0216,\r
-  0x0218, 0x0218,\r
-  0x021a, 0x021a,\r
-  0x021c, 0x021c,\r
-  0x021e, 0x021e,\r
-  0x0220, 0x0220,\r
-  0x0222, 0x0222,\r
-  0x0224, 0x0224,\r
-  0x0226, 0x0226,\r
-  0x0228, 0x0228,\r
-  0x022a, 0x022a,\r
-  0x022c, 0x022c,\r
-  0x022e, 0x022e,\r
-  0x0230, 0x0230,\r
-  0x0232, 0x0232,\r
-  0x023a, 0x023b,\r
-  0x023d, 0x023e,\r
-  0x0241, 0x0241,\r
-  0x0386, 0x0386,\r
-  0x0388, 0x038a,\r
-  0x038c, 0x038c,\r
-  0x038e, 0x038f,\r
-  0x0391, 0x03a1,\r
-  0x03a3, 0x03ab,\r
-  0x03d2, 0x03d4,\r
-  0x03d8, 0x03d8,\r
-  0x03da, 0x03da,\r
-  0x03dc, 0x03dc,\r
-  0x03de, 0x03de,\r
-  0x03e0, 0x03e0,\r
-  0x03e2, 0x03e2,\r
-  0x03e4, 0x03e4,\r
-  0x03e6, 0x03e6,\r
-  0x03e8, 0x03e8,\r
-  0x03ea, 0x03ea,\r
-  0x03ec, 0x03ec,\r
-  0x03ee, 0x03ee,\r
-  0x03f4, 0x03f4,\r
-  0x03f7, 0x03f7,\r
-  0x03f9, 0x03fa,\r
-  0x03fd, 0x042f,\r
-  0x0460, 0x0460,\r
-  0x0462, 0x0462,\r
-  0x0464, 0x0464,\r
-  0x0466, 0x0466,\r
-  0x0468, 0x0468,\r
-  0x046a, 0x046a,\r
-  0x046c, 0x046c,\r
-  0x046e, 0x046e,\r
-  0x0470, 0x0470,\r
-  0x0472, 0x0472,\r
-  0x0474, 0x0474,\r
-  0x0476, 0x0476,\r
-  0x0478, 0x0478,\r
-  0x047a, 0x047a,\r
-  0x047c, 0x047c,\r
-  0x047e, 0x047e,\r
-  0x0480, 0x0480,\r
-  0x048a, 0x048a,\r
-  0x048c, 0x048c,\r
-  0x048e, 0x048e,\r
-  0x0490, 0x0490,\r
-  0x0492, 0x0492,\r
-  0x0494, 0x0494,\r
-  0x0496, 0x0496,\r
-  0x0498, 0x0498,\r
-  0x049a, 0x049a,\r
-  0x049c, 0x049c,\r
-  0x049e, 0x049e,\r
-  0x04a0, 0x04a0,\r
-  0x04a2, 0x04a2,\r
-  0x04a4, 0x04a4,\r
-  0x04a6, 0x04a6,\r
-  0x04a8, 0x04a8,\r
-  0x04aa, 0x04aa,\r
-  0x04ac, 0x04ac,\r
-  0x04ae, 0x04ae,\r
-  0x04b0, 0x04b0,\r
-  0x04b2, 0x04b2,\r
-  0x04b4, 0x04b4,\r
-  0x04b6, 0x04b6,\r
-  0x04b8, 0x04b8,\r
-  0x04ba, 0x04ba,\r
-  0x04bc, 0x04bc,\r
-  0x04be, 0x04be,\r
-  0x04c0, 0x04c1,\r
-  0x04c3, 0x04c3,\r
-  0x04c5, 0x04c5,\r
-  0x04c7, 0x04c7,\r
-  0x04c9, 0x04c9,\r
-  0x04cb, 0x04cb,\r
-  0x04cd, 0x04cd,\r
-  0x04d0, 0x04d0,\r
-  0x04d2, 0x04d2,\r
-  0x04d4, 0x04d4,\r
-  0x04d6, 0x04d6,\r
-  0x04d8, 0x04d8,\r
-  0x04da, 0x04da,\r
-  0x04dc, 0x04dc,\r
-  0x04de, 0x04de,\r
-  0x04e0, 0x04e0,\r
-  0x04e2, 0x04e2,\r
-  0x04e4, 0x04e4,\r
-  0x04e6, 0x04e6,\r
-  0x04e8, 0x04e8,\r
-  0x04ea, 0x04ea,\r
-  0x04ec, 0x04ec,\r
-  0x04ee, 0x04ee,\r
-  0x04f0, 0x04f0,\r
-  0x04f2, 0x04f2,\r
-  0x04f4, 0x04f4,\r
-  0x04f6, 0x04f6,\r
-  0x04f8, 0x04f8,\r
-  0x0500, 0x0500,\r
-  0x0502, 0x0502,\r
-  0x0504, 0x0504,\r
-  0x0506, 0x0506,\r
-  0x0508, 0x0508,\r
-  0x050a, 0x050a,\r
-  0x050c, 0x050c,\r
-  0x050e, 0x050e,\r
-  0x0531, 0x0556,\r
-  0x10a0, 0x10c5,\r
-  0x1e00, 0x1e00,\r
-  0x1e02, 0x1e02,\r
-  0x1e04, 0x1e04,\r
-  0x1e06, 0x1e06,\r
-  0x1e08, 0x1e08,\r
-  0x1e0a, 0x1e0a,\r
-  0x1e0c, 0x1e0c,\r
-  0x1e0e, 0x1e0e,\r
-  0x1e10, 0x1e10,\r
-  0x1e12, 0x1e12,\r
-  0x1e14, 0x1e14,\r
-  0x1e16, 0x1e16,\r
-  0x1e18, 0x1e18,\r
-  0x1e1a, 0x1e1a,\r
-  0x1e1c, 0x1e1c,\r
-  0x1e1e, 0x1e1e,\r
-  0x1e20, 0x1e20,\r
-  0x1e22, 0x1e22,\r
-  0x1e24, 0x1e24,\r
-  0x1e26, 0x1e26,\r
-  0x1e28, 0x1e28,\r
-  0x1e2a, 0x1e2a,\r
-  0x1e2c, 0x1e2c,\r
-  0x1e2e, 0x1e2e,\r
-  0x1e30, 0x1e30,\r
-  0x1e32, 0x1e32,\r
-  0x1e34, 0x1e34,\r
-  0x1e36, 0x1e36,\r
-  0x1e38, 0x1e38,\r
-  0x1e3a, 0x1e3a,\r
-  0x1e3c, 0x1e3c,\r
-  0x1e3e, 0x1e3e,\r
-  0x1e40, 0x1e40,\r
-  0x1e42, 0x1e42,\r
-  0x1e44, 0x1e44,\r
-  0x1e46, 0x1e46,\r
-  0x1e48, 0x1e48,\r
-  0x1e4a, 0x1e4a,\r
-  0x1e4c, 0x1e4c,\r
-  0x1e4e, 0x1e4e,\r
-  0x1e50, 0x1e50,\r
-  0x1e52, 0x1e52,\r
-  0x1e54, 0x1e54,\r
-  0x1e56, 0x1e56,\r
-  0x1e58, 0x1e58,\r
-  0x1e5a, 0x1e5a,\r
-  0x1e5c, 0x1e5c,\r
-  0x1e5e, 0x1e5e,\r
-  0x1e60, 0x1e60,\r
-  0x1e62, 0x1e62,\r
-  0x1e64, 0x1e64,\r
-  0x1e66, 0x1e66,\r
-  0x1e68, 0x1e68,\r
-  0x1e6a, 0x1e6a,\r
-  0x1e6c, 0x1e6c,\r
-  0x1e6e, 0x1e6e,\r
-  0x1e70, 0x1e70,\r
-  0x1e72, 0x1e72,\r
-  0x1e74, 0x1e74,\r
-  0x1e76, 0x1e76,\r
-  0x1e78, 0x1e78,\r
-  0x1e7a, 0x1e7a,\r
-  0x1e7c, 0x1e7c,\r
-  0x1e7e, 0x1e7e,\r
-  0x1e80, 0x1e80,\r
-  0x1e82, 0x1e82,\r
-  0x1e84, 0x1e84,\r
-  0x1e86, 0x1e86,\r
-  0x1e88, 0x1e88,\r
-  0x1e8a, 0x1e8a,\r
-  0x1e8c, 0x1e8c,\r
-  0x1e8e, 0x1e8e,\r
-  0x1e90, 0x1e90,\r
-  0x1e92, 0x1e92,\r
-  0x1e94, 0x1e94,\r
-  0x1ea0, 0x1ea0,\r
-  0x1ea2, 0x1ea2,\r
-  0x1ea4, 0x1ea4,\r
-  0x1ea6, 0x1ea6,\r
-  0x1ea8, 0x1ea8,\r
-  0x1eaa, 0x1eaa,\r
-  0x1eac, 0x1eac,\r
-  0x1eae, 0x1eae,\r
-  0x1eb0, 0x1eb0,\r
-  0x1eb2, 0x1eb2,\r
-  0x1eb4, 0x1eb4,\r
-  0x1eb6, 0x1eb6,\r
-  0x1eb8, 0x1eb8,\r
-  0x1eba, 0x1eba,\r
-  0x1ebc, 0x1ebc,\r
-  0x1ebe, 0x1ebe,\r
-  0x1ec0, 0x1ec0,\r
-  0x1ec2, 0x1ec2,\r
-  0x1ec4, 0x1ec4,\r
-  0x1ec6, 0x1ec6,\r
-  0x1ec8, 0x1ec8,\r
-  0x1eca, 0x1eca,\r
-  0x1ecc, 0x1ecc,\r
-  0x1ece, 0x1ece,\r
-  0x1ed0, 0x1ed0,\r
-  0x1ed2, 0x1ed2,\r
-  0x1ed4, 0x1ed4,\r
-  0x1ed6, 0x1ed6,\r
-  0x1ed8, 0x1ed8,\r
-  0x1eda, 0x1eda,\r
-  0x1edc, 0x1edc,\r
-  0x1ede, 0x1ede,\r
-  0x1ee0, 0x1ee0,\r
-  0x1ee2, 0x1ee2,\r
-  0x1ee4, 0x1ee4,\r
-  0x1ee6, 0x1ee6,\r
-  0x1ee8, 0x1ee8,\r
-  0x1eea, 0x1eea,\r
-  0x1eec, 0x1eec,\r
-  0x1eee, 0x1eee,\r
-  0x1ef0, 0x1ef0,\r
-  0x1ef2, 0x1ef2,\r
-  0x1ef4, 0x1ef4,\r
-  0x1ef6, 0x1ef6,\r
-  0x1ef8, 0x1ef8,\r
-  0x1f08, 0x1f0f,\r
-  0x1f18, 0x1f1d,\r
-  0x1f28, 0x1f2f,\r
-  0x1f38, 0x1f3f,\r
-  0x1f48, 0x1f4d,\r
-  0x1f59, 0x1f59,\r
-  0x1f5b, 0x1f5b,\r
-  0x1f5d, 0x1f5d,\r
-  0x1f5f, 0x1f5f,\r
-  0x1f68, 0x1f6f,\r
-  0x1fb8, 0x1fbb,\r
-  0x1fc8, 0x1fcb,\r
-  0x1fd8, 0x1fdb,\r
-  0x1fe8, 0x1fec,\r
-  0x1ff8, 0x1ffb,\r
-  0x2102, 0x2102,\r
-  0x2107, 0x2107,\r
-  0x210b, 0x210d,\r
-  0x2110, 0x2112,\r
-  0x2115, 0x2115,\r
-  0x2119, 0x211d,\r
-  0x2124, 0x2124,\r
-  0x2126, 0x2126,\r
-  0x2128, 0x2128,\r
-  0x212a, 0x212d,\r
-  0x2130, 0x2131,\r
-  0x2133, 0x2133,\r
-  0x213e, 0x213f,\r
-  0x2145, 0x2145,\r
-  0x2c00, 0x2c2e,\r
-  0x2c80, 0x2c80,\r
-  0x2c82, 0x2c82,\r
-  0x2c84, 0x2c84,\r
-  0x2c86, 0x2c86,\r
-  0x2c88, 0x2c88,\r
-  0x2c8a, 0x2c8a,\r
-  0x2c8c, 0x2c8c,\r
-  0x2c8e, 0x2c8e,\r
-  0x2c90, 0x2c90,\r
-  0x2c92, 0x2c92,\r
-  0x2c94, 0x2c94,\r
-  0x2c96, 0x2c96,\r
-  0x2c98, 0x2c98,\r
-  0x2c9a, 0x2c9a,\r
-  0x2c9c, 0x2c9c,\r
-  0x2c9e, 0x2c9e,\r
-  0x2ca0, 0x2ca0,\r
-  0x2ca2, 0x2ca2,\r
-  0x2ca4, 0x2ca4,\r
-  0x2ca6, 0x2ca6,\r
-  0x2ca8, 0x2ca8,\r
-  0x2caa, 0x2caa,\r
-  0x2cac, 0x2cac,\r
-  0x2cae, 0x2cae,\r
-  0x2cb0, 0x2cb0,\r
-  0x2cb2, 0x2cb2,\r
-  0x2cb4, 0x2cb4,\r
-  0x2cb6, 0x2cb6,\r
-  0x2cb8, 0x2cb8,\r
-  0x2cba, 0x2cba,\r
-  0x2cbc, 0x2cbc,\r
-  0x2cbe, 0x2cbe,\r
-  0x2cc0, 0x2cc0,\r
-  0x2cc2, 0x2cc2,\r
-  0x2cc4, 0x2cc4,\r
-  0x2cc6, 0x2cc6,\r
-  0x2cc8, 0x2cc8,\r
-  0x2cca, 0x2cca,\r
-  0x2ccc, 0x2ccc,\r
-  0x2cce, 0x2cce,\r
-  0x2cd0, 0x2cd0,\r
-  0x2cd2, 0x2cd2,\r
-  0x2cd4, 0x2cd4,\r
-  0x2cd6, 0x2cd6,\r
-  0x2cd8, 0x2cd8,\r
-  0x2cda, 0x2cda,\r
-  0x2cdc, 0x2cdc,\r
-  0x2cde, 0x2cde,\r
-  0x2ce0, 0x2ce0,\r
-  0x2ce2, 0x2ce2,\r
-  0xff21, 0xff3a,\r
-  0x10400, 0x10427,\r
-  0x1d400, 0x1d419,\r
-  0x1d434, 0x1d44d,\r
-  0x1d468, 0x1d481,\r
-  0x1d49c, 0x1d49c,\r
-  0x1d49e, 0x1d49f,\r
-  0x1d4a2, 0x1d4a2,\r
-  0x1d4a5, 0x1d4a6,\r
-  0x1d4a9, 0x1d4ac,\r
-  0x1d4ae, 0x1d4b5,\r
-  0x1d4d0, 0x1d4e9,\r
-  0x1d504, 0x1d505,\r
-  0x1d507, 0x1d50a,\r
-  0x1d50d, 0x1d514,\r
-  0x1d516, 0x1d51c,\r
-  0x1d538, 0x1d539,\r
-  0x1d53b, 0x1d53e,\r
-  0x1d540, 0x1d544,\r
-  0x1d546, 0x1d546,\r
-  0x1d54a, 0x1d550,\r
-  0x1d56c, 0x1d585,\r
-  0x1d5a0, 0x1d5b9,\r
-  0x1d5d4, 0x1d5ed,\r
-  0x1d608, 0x1d621,\r
-  0x1d63c, 0x1d655,\r
-  0x1d670, 0x1d689,\r
-  0x1d6a8, 0x1d6c0,\r
-  0x1d6e2, 0x1d6fa,\r
-  0x1d71c, 0x1d734,\r
-  0x1d756, 0x1d76e,\r
-  0x1d790, 0x1d7a8\r
-}; /* CR_Lu */\r
-\r
-/* 'M': Major Category */\r
-static const OnigCodePoint CR_M[] = {\r
-  133,\r
-  0x0300, 0x036f,\r
-  0x0483, 0x0486,\r
-  0x0488, 0x0489,\r
-  0x0591, 0x05b9,\r
-  0x05bb, 0x05bd,\r
-  0x05bf, 0x05bf,\r
-  0x05c1, 0x05c2,\r
-  0x05c4, 0x05c5,\r
-  0x05c7, 0x05c7,\r
-  0x0610, 0x0615,\r
-  0x064b, 0x065e,\r
-  0x0670, 0x0670,\r
-  0x06d6, 0x06dc,\r
-  0x06de, 0x06e4,\r
-  0x06e7, 0x06e8,\r
-  0x06ea, 0x06ed,\r
-  0x0711, 0x0711,\r
-  0x0730, 0x074a,\r
-  0x07a6, 0x07b0,\r
-  0x0901, 0x0903,\r
-  0x093c, 0x093c,\r
-  0x093e, 0x094d,\r
-  0x0951, 0x0954,\r
-  0x0962, 0x0963,\r
-  0x0981, 0x0983,\r
-  0x09bc, 0x09bc,\r
-  0x09be, 0x09c4,\r
-  0x09c7, 0x09c8,\r
-  0x09cb, 0x09cd,\r
-  0x09d7, 0x09d7,\r
-  0x09e2, 0x09e3,\r
-  0x0a01, 0x0a03,\r
-  0x0a3c, 0x0a3c,\r
-  0x0a3e, 0x0a42,\r
-  0x0a47, 0x0a48,\r
-  0x0a4b, 0x0a4d,\r
-  0x0a70, 0x0a71,\r
-  0x0a81, 0x0a83,\r
-  0x0abc, 0x0abc,\r
-  0x0abe, 0x0ac5,\r
-  0x0ac7, 0x0ac9,\r
-  0x0acb, 0x0acd,\r
-  0x0ae2, 0x0ae3,\r
-  0x0b01, 0x0b03,\r
-  0x0b3c, 0x0b3c,\r
-  0x0b3e, 0x0b43,\r
-  0x0b47, 0x0b48,\r
-  0x0b4b, 0x0b4d,\r
-  0x0b56, 0x0b57,\r
-  0x0b82, 0x0b82,\r
-  0x0bbe, 0x0bc2,\r
-  0x0bc6, 0x0bc8,\r
-  0x0bca, 0x0bcd,\r
-  0x0bd7, 0x0bd7,\r
-  0x0c01, 0x0c03,\r
-  0x0c3e, 0x0c44,\r
-  0x0c46, 0x0c48,\r
-  0x0c4a, 0x0c4d,\r
-  0x0c55, 0x0c56,\r
-  0x0c82, 0x0c83,\r
-  0x0cbc, 0x0cbc,\r
-  0x0cbe, 0x0cc4,\r
-  0x0cc6, 0x0cc8,\r
-  0x0cca, 0x0ccd,\r
-  0x0cd5, 0x0cd6,\r
-  0x0d02, 0x0d03,\r
-  0x0d3e, 0x0d43,\r
-  0x0d46, 0x0d48,\r
-  0x0d4a, 0x0d4d,\r
-  0x0d57, 0x0d57,\r
-  0x0d82, 0x0d83,\r
-  0x0dca, 0x0dca,\r
-  0x0dcf, 0x0dd4,\r
-  0x0dd6, 0x0dd6,\r
-  0x0dd8, 0x0ddf,\r
-  0x0df2, 0x0df3,\r
-  0x0e31, 0x0e31,\r
-  0x0e34, 0x0e3a,\r
-  0x0e47, 0x0e4e,\r
-  0x0eb1, 0x0eb1,\r
-  0x0eb4, 0x0eb9,\r
-  0x0ebb, 0x0ebc,\r
-  0x0ec8, 0x0ecd,\r
-  0x0f18, 0x0f19,\r
-  0x0f35, 0x0f35,\r
-  0x0f37, 0x0f37,\r
-  0x0f39, 0x0f39,\r
-  0x0f3e, 0x0f3f,\r
-  0x0f71, 0x0f84,\r
-  0x0f86, 0x0f87,\r
-  0x0f90, 0x0f97,\r
-  0x0f99, 0x0fbc,\r
-  0x0fc6, 0x0fc6,\r
-  0x102c, 0x1032,\r
-  0x1036, 0x1039,\r
-  0x1056, 0x1059,\r
-  0x135f, 0x135f,\r
-  0x1712, 0x1714,\r
-  0x1732, 0x1734,\r
-  0x1752, 0x1753,\r
-  0x1772, 0x1773,\r
-  0x17b6, 0x17d3,\r
-  0x17dd, 0x17dd,\r
-  0x180b, 0x180d,\r
-  0x18a9, 0x18a9,\r
-  0x1920, 0x192b,\r
-  0x1930, 0x193b,\r
-  0x19b0, 0x19c0,\r
-  0x19c8, 0x19c9,\r
-  0x1a17, 0x1a1b,\r
-  0x1dc0, 0x1dc3,\r
-  0x20d0, 0x20eb,\r
-  0x302a, 0x302f,\r
-  0x3099, 0x309a,\r
-  0xa802, 0xa802,\r
-  0xa806, 0xa806,\r
-  0xa80b, 0xa80b,\r
-  0xa823, 0xa827,\r
-  0xfb1e, 0xfb1e,\r
-  0xfe00, 0xfe0f,\r
-  0xfe20, 0xfe23,\r
-  0x10a01, 0x10a03,\r
-  0x10a05, 0x10a06,\r
-  0x10a0c, 0x10a0f,\r
-  0x10a38, 0x10a3a,\r
-  0x10a3f, 0x10a3f,\r
-  0x1d165, 0x1d169,\r
-  0x1d16d, 0x1d172,\r
-  0x1d17b, 0x1d182,\r
-  0x1d185, 0x1d18b,\r
-  0x1d1aa, 0x1d1ad,\r
-  0x1d242, 0x1d244,\r
-  0xe0100, 0xe01ef\r
-}; /* CR_M */\r
-\r
-/* 'Mc': General Category */\r
-static const OnigCodePoint CR_Mc[] = {\r
-  63,\r
-  0x0903, 0x0903,\r
-  0x093e, 0x0940,\r
-  0x0949, 0x094c,\r
-  0x0982, 0x0983,\r
-  0x09be, 0x09c0,\r
-  0x09c7, 0x09c8,\r
-  0x09cb, 0x09cc,\r
-  0x09d7, 0x09d7,\r
-  0x0a03, 0x0a03,\r
-  0x0a3e, 0x0a40,\r
-  0x0a83, 0x0a83,\r
-  0x0abe, 0x0ac0,\r
-  0x0ac9, 0x0ac9,\r
-  0x0acb, 0x0acc,\r
-  0x0b02, 0x0b03,\r
-  0x0b3e, 0x0b3e,\r
-  0x0b40, 0x0b40,\r
-  0x0b47, 0x0b48,\r
-  0x0b4b, 0x0b4c,\r
-  0x0b57, 0x0b57,\r
-  0x0bbe, 0x0bbf,\r
-  0x0bc1, 0x0bc2,\r
-  0x0bc6, 0x0bc8,\r
-  0x0bca, 0x0bcc,\r
-  0x0bd7, 0x0bd7,\r
-  0x0c01, 0x0c03,\r
-  0x0c41, 0x0c44,\r
-  0x0c82, 0x0c83,\r
-  0x0cbe, 0x0cbe,\r
-  0x0cc0, 0x0cc4,\r
-  0x0cc7, 0x0cc8,\r
-  0x0cca, 0x0ccb,\r
-  0x0cd5, 0x0cd6,\r
-  0x0d02, 0x0d03,\r
-  0x0d3e, 0x0d40,\r
-  0x0d46, 0x0d48,\r
-  0x0d4a, 0x0d4c,\r
-  0x0d57, 0x0d57,\r
-  0x0d82, 0x0d83,\r
-  0x0dcf, 0x0dd1,\r
-  0x0dd8, 0x0ddf,\r
-  0x0df2, 0x0df3,\r
-  0x0f3e, 0x0f3f,\r
-  0x0f7f, 0x0f7f,\r
-  0x102c, 0x102c,\r
-  0x1031, 0x1031,\r
-  0x1038, 0x1038,\r
-  0x1056, 0x1057,\r
-  0x17b6, 0x17b6,\r
-  0x17be, 0x17c5,\r
-  0x17c7, 0x17c8,\r
-  0x1923, 0x1926,\r
-  0x1929, 0x192b,\r
-  0x1930, 0x1931,\r
-  0x1933, 0x1938,\r
-  0x19b0, 0x19c0,\r
-  0x19c8, 0x19c9,\r
-  0x1a19, 0x1a1b,\r
-  0xa802, 0xa802,\r
-  0xa823, 0xa824,\r
-  0xa827, 0xa827,\r
-  0x1d165, 0x1d166,\r
-  0x1d16d, 0x1d172\r
-}; /* CR_Mc */\r
-\r
-/* 'Me': General Category */\r
-static const OnigCodePoint CR_Me[] = {\r
-  4,\r
-  0x0488, 0x0489,\r
-  0x06de, 0x06de,\r
-  0x20dd, 0x20e0,\r
-  0x20e2, 0x20e4\r
-}; /* CR_Me */\r
-\r
-/* 'Mn': General Category */\r
-static const OnigCodePoint CR_Mn[] = {\r
-  124,\r
-  0x0300, 0x036f,\r
-  0x0483, 0x0486,\r
-  0x0591, 0x05b9,\r
-  0x05bb, 0x05bd,\r
-  0x05bf, 0x05bf,\r
-  0x05c1, 0x05c2,\r
-  0x05c4, 0x05c5,\r
-  0x05c7, 0x05c7,\r
-  0x0610, 0x0615,\r
-  0x064b, 0x065e,\r
-  0x0670, 0x0670,\r
-  0x06d6, 0x06dc,\r
-  0x06df, 0x06e4,\r
-  0x06e7, 0x06e8,\r
-  0x06ea, 0x06ed,\r
-  0x0711, 0x0711,\r
-  0x0730, 0x074a,\r
-  0x07a6, 0x07b0,\r
-  0x0901, 0x0902,\r
-  0x093c, 0x093c,\r
-  0x0941, 0x0948,\r
-  0x094d, 0x094d,\r
-  0x0951, 0x0954,\r
-  0x0962, 0x0963,\r
-  0x0981, 0x0981,\r
-  0x09bc, 0x09bc,\r
-  0x09c1, 0x09c4,\r
-  0x09cd, 0x09cd,\r
-  0x09e2, 0x09e3,\r
-  0x0a01, 0x0a02,\r
-  0x0a3c, 0x0a3c,\r
-  0x0a41, 0x0a42,\r
-  0x0a47, 0x0a48,\r
-  0x0a4b, 0x0a4d,\r
-  0x0a70, 0x0a71,\r
-  0x0a81, 0x0a82,\r
-  0x0abc, 0x0abc,\r
-  0x0ac1, 0x0ac5,\r
-  0x0ac7, 0x0ac8,\r
-  0x0acd, 0x0acd,\r
-  0x0ae2, 0x0ae3,\r
-  0x0b01, 0x0b01,\r
-  0x0b3c, 0x0b3c,\r
-  0x0b3f, 0x0b3f,\r
-  0x0b41, 0x0b43,\r
-  0x0b4d, 0x0b4d,\r
-  0x0b56, 0x0b56,\r
-  0x0b82, 0x0b82,\r
-  0x0bc0, 0x0bc0,\r
-  0x0bcd, 0x0bcd,\r
-  0x0c3e, 0x0c40,\r
-  0x0c46, 0x0c48,\r
-  0x0c4a, 0x0c4d,\r
-  0x0c55, 0x0c56,\r
-  0x0cbc, 0x0cbc,\r
-  0x0cbf, 0x0cbf,\r
-  0x0cc6, 0x0cc6,\r
-  0x0ccc, 0x0ccd,\r
-  0x0d41, 0x0d43,\r
-  0x0d4d, 0x0d4d,\r
-  0x0dca, 0x0dca,\r
-  0x0dd2, 0x0dd4,\r
-  0x0dd6, 0x0dd6,\r
-  0x0e31, 0x0e31,\r
-  0x0e34, 0x0e3a,\r
-  0x0e47, 0x0e4e,\r
-  0x0eb1, 0x0eb1,\r
-  0x0eb4, 0x0eb9,\r
-  0x0ebb, 0x0ebc,\r
-  0x0ec8, 0x0ecd,\r
-  0x0f18, 0x0f19,\r
-  0x0f35, 0x0f35,\r
-  0x0f37, 0x0f37,\r
-  0x0f39, 0x0f39,\r
-  0x0f71, 0x0f7e,\r
-  0x0f80, 0x0f84,\r
-  0x0f86, 0x0f87,\r
-  0x0f90, 0x0f97,\r
-  0x0f99, 0x0fbc,\r
-  0x0fc6, 0x0fc6,\r
-  0x102d, 0x1030,\r
-  0x1032, 0x1032,\r
-  0x1036, 0x1037,\r
-  0x1039, 0x1039,\r
-  0x1058, 0x1059,\r
-  0x135f, 0x135f,\r
-  0x1712, 0x1714,\r
-  0x1732, 0x1734,\r
-  0x1752, 0x1753,\r
-  0x1772, 0x1773,\r
-  0x17b7, 0x17bd,\r
-  0x17c6, 0x17c6,\r
-  0x17c9, 0x17d3,\r
-  0x17dd, 0x17dd,\r
-  0x180b, 0x180d,\r
-  0x18a9, 0x18a9,\r
-  0x1920, 0x1922,\r
-  0x1927, 0x1928,\r
-  0x1932, 0x1932,\r
-  0x1939, 0x193b,\r
-  0x1a17, 0x1a18,\r
-  0x1dc0, 0x1dc3,\r
-  0x20d0, 0x20dc,\r
-  0x20e1, 0x20e1,\r
-  0x20e5, 0x20eb,\r
-  0x302a, 0x302f,\r
-  0x3099, 0x309a,\r
-  0xa806, 0xa806,\r
-  0xa80b, 0xa80b,\r
-  0xa825, 0xa826,\r
-  0xfb1e, 0xfb1e,\r
-  0xfe00, 0xfe0f,\r
-  0xfe20, 0xfe23,\r
-  0x10a01, 0x10a03,\r
-  0x10a05, 0x10a06,\r
-  0x10a0c, 0x10a0f,\r
-  0x10a38, 0x10a3a,\r
-  0x10a3f, 0x10a3f,\r
-  0x1d167, 0x1d169,\r
-  0x1d17b, 0x1d182,\r
-  0x1d185, 0x1d18b,\r
-  0x1d1aa, 0x1d1ad,\r
-  0x1d242, 0x1d244,\r
-  0xe0100, 0xe01ef\r
-}; /* CR_Mn */\r
-\r
-/* 'N': Major Category */\r
-static const OnigCodePoint CR_N[] = {\r
-  53,\r
-  0x0030, 0x0039,\r
-  0x00b2, 0x00b3,\r
-  0x00b9, 0x00b9,\r
-  0x00bc, 0x00be,\r
-  0x0660, 0x0669,\r
-  0x06f0, 0x06f9,\r
-  0x0966, 0x096f,\r
-  0x09e6, 0x09ef,\r
-  0x09f4, 0x09f9,\r
-  0x0a66, 0x0a6f,\r
-  0x0ae6, 0x0aef,\r
-  0x0b66, 0x0b6f,\r
-  0x0be6, 0x0bf2,\r
-  0x0c66, 0x0c6f,\r
-  0x0ce6, 0x0cef,\r
-  0x0d66, 0x0d6f,\r
-  0x0e50, 0x0e59,\r
-  0x0ed0, 0x0ed9,\r
-  0x0f20, 0x0f33,\r
-  0x1040, 0x1049,\r
-  0x1369, 0x137c,\r
-  0x16ee, 0x16f0,\r
-  0x17e0, 0x17e9,\r
-  0x17f0, 0x17f9,\r
-  0x1810, 0x1819,\r
-  0x1946, 0x194f,\r
-  0x19d0, 0x19d9,\r
-  0x2070, 0x2070,\r
-  0x2074, 0x2079,\r
-  0x2080, 0x2089,\r
-  0x2153, 0x2183,\r
-  0x2460, 0x249b,\r
-  0x24ea, 0x24ff,\r
-  0x2776, 0x2793,\r
-  0x2cfd, 0x2cfd,\r
-  0x3007, 0x3007,\r
-  0x3021, 0x3029,\r
-  0x3038, 0x303a,\r
-  0x3192, 0x3195,\r
-  0x3220, 0x3229,\r
-  0x3251, 0x325f,\r
-  0x3280, 0x3289,\r
-  0x32b1, 0x32bf,\r
-  0xff10, 0xff19,\r
-  0x10107, 0x10133,\r
-  0x10140, 0x10178,\r
-  0x1018a, 0x1018a,\r
-  0x10320, 0x10323,\r
-  0x1034a, 0x1034a,\r
-  0x103d1, 0x103d5,\r
-  0x104a0, 0x104a9,\r
-  0x10a40, 0x10a47,\r
-  0x1d7ce, 0x1d7ff\r
-}; /* CR_N */\r
-\r
-/* 'Nd': General Category */\r
-static const OnigCodePoint CR_Nd[] = {\r
-  23,\r
-  0x0030, 0x0039,\r
-  0x0660, 0x0669,\r
-  0x06f0, 0x06f9,\r
-  0x0966, 0x096f,\r
-  0x09e6, 0x09ef,\r
-  0x0a66, 0x0a6f,\r
-  0x0ae6, 0x0aef,\r
-  0x0b66, 0x0b6f,\r
-  0x0be6, 0x0bef,\r
-  0x0c66, 0x0c6f,\r
-  0x0ce6, 0x0cef,\r
-  0x0d66, 0x0d6f,\r
-  0x0e50, 0x0e59,\r
-  0x0ed0, 0x0ed9,\r
-  0x0f20, 0x0f29,\r
-  0x1040, 0x1049,\r
-  0x17e0, 0x17e9,\r
-  0x1810, 0x1819,\r
-  0x1946, 0x194f,\r
-  0x19d0, 0x19d9,\r
-  0xff10, 0xff19,\r
-  0x104a0, 0x104a9,\r
-  0x1d7ce, 0x1d7ff\r
-}; /* CR_Nd */\r
-\r
-/* 'Nl': General Category */\r
-static const OnigCodePoint CR_Nl[] = {\r
-  8,\r
-  0x16ee, 0x16f0,\r
-  0x2160, 0x2183,\r
-  0x3007, 0x3007,\r
-  0x3021, 0x3029,\r
-  0x3038, 0x303a,\r
-  0x10140, 0x10174,\r
-  0x1034a, 0x1034a,\r
-  0x103d1, 0x103d5\r
-}; /* CR_Nl */\r
-\r
-/* 'No': General Category */\r
-static const OnigCodePoint CR_No[] = {\r
-  26,\r
-  0x00b2, 0x00b3,\r
-  0x00b9, 0x00b9,\r
-  0x00bc, 0x00be,\r
-  0x09f4, 0x09f9,\r
-  0x0bf0, 0x0bf2,\r
-  0x0f2a, 0x0f33,\r
-  0x1369, 0x137c,\r
-  0x17f0, 0x17f9,\r
-  0x2070, 0x2070,\r
-  0x2074, 0x2079,\r
-  0x2080, 0x2089,\r
-  0x2153, 0x215f,\r
-  0x2460, 0x249b,\r
-  0x24ea, 0x24ff,\r
-  0x2776, 0x2793,\r
-  0x2cfd, 0x2cfd,\r
-  0x3192, 0x3195,\r
-  0x3220, 0x3229,\r
-  0x3251, 0x325f,\r
-  0x3280, 0x3289,\r
-  0x32b1, 0x32bf,\r
-  0x10107, 0x10133,\r
-  0x10175, 0x10178,\r
-  0x1018a, 0x1018a,\r
-  0x10320, 0x10323,\r
-  0x10a40, 0x10a47\r
-}; /* CR_No */\r
-\r
-/* 'P': Major Category */\r
-static const OnigCodePoint CR_P[] = {\r
-  96,\r
-  0x0021, 0x0023,\r
-  0x0025, 0x002a,\r
-  0x002c, 0x002f,\r
-  0x003a, 0x003b,\r
-  0x003f, 0x0040,\r
-  0x005b, 0x005d,\r
-  0x005f, 0x005f,\r
-  0x007b, 0x007b,\r
-  0x007d, 0x007d,\r
-  0x00a1, 0x00a1,\r
-  0x00ab, 0x00ab,\r
-  0x00b7, 0x00b7,\r
-  0x00bb, 0x00bb,\r
-  0x00bf, 0x00bf,\r
-  0x037e, 0x037e,\r
-  0x0387, 0x0387,\r
-  0x055a, 0x055f,\r
-  0x0589, 0x058a,\r
-  0x05be, 0x05be,\r
-  0x05c0, 0x05c0,\r
-  0x05c3, 0x05c3,\r
-  0x05c6, 0x05c6,\r
-  0x05f3, 0x05f4,\r
-  0x060c, 0x060d,\r
-  0x061b, 0x061b,\r
-  0x061e, 0x061f,\r
-  0x066a, 0x066d,\r
-  0x06d4, 0x06d4,\r
-  0x0700, 0x070d,\r
-  0x0964, 0x0965,\r
-  0x0970, 0x0970,\r
-  0x0df4, 0x0df4,\r
-  0x0e4f, 0x0e4f,\r
-  0x0e5a, 0x0e5b,\r
-  0x0f04, 0x0f12,\r
-  0x0f3a, 0x0f3d,\r
-  0x0f85, 0x0f85,\r
-  0x0fd0, 0x0fd1,\r
-  0x104a, 0x104f,\r
-  0x10fb, 0x10fb,\r
-  0x1361, 0x1368,\r
-  0x166d, 0x166e,\r
-  0x169b, 0x169c,\r
-  0x16eb, 0x16ed,\r
-  0x1735, 0x1736,\r
-  0x17d4, 0x17d6,\r
-  0x17d8, 0x17da,\r
-  0x1800, 0x180a,\r
-  0x1944, 0x1945,\r
-  0x19de, 0x19df,\r
-  0x1a1e, 0x1a1f,\r
-  0x2010, 0x2027,\r
-  0x2030, 0x2043,\r
-  0x2045, 0x2051,\r
-  0x2053, 0x205e,\r
-  0x207d, 0x207e,\r
-  0x208d, 0x208e,\r
-  0x2329, 0x232a,\r
-  0x23b4, 0x23b6,\r
-  0x2768, 0x2775,\r
-  0x27c5, 0x27c6,\r
-  0x27e6, 0x27eb,\r
-  0x2983, 0x2998,\r
-  0x29d8, 0x29db,\r
-  0x29fc, 0x29fd,\r
-  0x2cf9, 0x2cfc,\r
-  0x2cfe, 0x2cff,\r
-  0x2e00, 0x2e17,\r
-  0x2e1c, 0x2e1d,\r
-  0x3001, 0x3003,\r
-  0x3008, 0x3011,\r
-  0x3014, 0x301f,\r
-  0x3030, 0x3030,\r
-  0x303d, 0x303d,\r
-  0x30a0, 0x30a0,\r
-  0x30fb, 0x30fb,\r
-  0xfd3e, 0xfd3f,\r
-  0xfe10, 0xfe19,\r
-  0xfe30, 0xfe52,\r
-  0xfe54, 0xfe61,\r
-  0xfe63, 0xfe63,\r
-  0xfe68, 0xfe68,\r
-  0xfe6a, 0xfe6b,\r
-  0xff01, 0xff03,\r
-  0xff05, 0xff0a,\r
-  0xff0c, 0xff0f,\r
-  0xff1a, 0xff1b,\r
-  0xff1f, 0xff20,\r
-  0xff3b, 0xff3d,\r
-  0xff3f, 0xff3f,\r
-  0xff5b, 0xff5b,\r
-  0xff5d, 0xff5d,\r
-  0xff5f, 0xff65,\r
-  0x10100, 0x10101,\r
-  0x1039f, 0x1039f,\r
-  0x10a50, 0x10a58\r
-}; /* CR_P */\r
-\r
-/* 'Pc': General Category */\r
-static const OnigCodePoint CR_Pc[] = {\r
-  6,\r
-  0x005f, 0x005f,\r
-  0x203f, 0x2040,\r
-  0x2054, 0x2054,\r
-  0xfe33, 0xfe34,\r
-  0xfe4d, 0xfe4f,\r
-  0xff3f, 0xff3f\r
-}; /* CR_Pc */\r
-\r
-/* 'Pd': General Category */\r
-static const OnigCodePoint CR_Pd[] = {\r
-  12,\r
-  0x002d, 0x002d,\r
-  0x058a, 0x058a,\r
-  0x1806, 0x1806,\r
-  0x2010, 0x2015,\r
-  0x2e17, 0x2e17,\r
-  0x301c, 0x301c,\r
-  0x3030, 0x3030,\r
-  0x30a0, 0x30a0,\r
-  0xfe31, 0xfe32,\r
-  0xfe58, 0xfe58,\r
-  0xfe63, 0xfe63,\r
-  0xff0d, 0xff0d\r
-}; /* CR_Pd */\r
-\r
-/* 'Pe': General Category */\r
-static const OnigCodePoint CR_Pe[] = {\r
-  65,\r
-  0x0029, 0x0029,\r
-  0x005d, 0x005d,\r
-  0x007d, 0x007d,\r
-  0x0f3b, 0x0f3b,\r
-  0x0f3d, 0x0f3d,\r
-  0x169c, 0x169c,\r
-  0x2046, 0x2046,\r
-  0x207e, 0x207e,\r
-  0x208e, 0x208e,\r
-  0x232a, 0x232a,\r
-  0x23b5, 0x23b5,\r
-  0x2769, 0x2769,\r
-  0x276b, 0x276b,\r
-  0x276d, 0x276d,\r
-  0x276f, 0x276f,\r
-  0x2771, 0x2771,\r
-  0x2773, 0x2773,\r
-  0x2775, 0x2775,\r
-  0x27c6, 0x27c6,\r
-  0x27e7, 0x27e7,\r
-  0x27e9, 0x27e9,\r
-  0x27eb, 0x27eb,\r
-  0x2984, 0x2984,\r
-  0x2986, 0x2986,\r
-  0x2988, 0x2988,\r
-  0x298a, 0x298a,\r
-  0x298c, 0x298c,\r
-  0x298e, 0x298e,\r
-  0x2990, 0x2990,\r
-  0x2992, 0x2992,\r
-  0x2994, 0x2994,\r
-  0x2996, 0x2996,\r
-  0x2998, 0x2998,\r
-  0x29d9, 0x29d9,\r
-  0x29db, 0x29db,\r
-  0x29fd, 0x29fd,\r
-  0x3009, 0x3009,\r
-  0x300b, 0x300b,\r
-  0x300d, 0x300d,\r
-  0x300f, 0x300f,\r
-  0x3011, 0x3011,\r
-  0x3015, 0x3015,\r
-  0x3017, 0x3017,\r
-  0x3019, 0x3019,\r
-  0x301b, 0x301b,\r
-  0x301e, 0x301f,\r
-  0xfd3f, 0xfd3f,\r
-  0xfe18, 0xfe18,\r
-  0xfe36, 0xfe36,\r
-  0xfe38, 0xfe38,\r
-  0xfe3a, 0xfe3a,\r
-  0xfe3c, 0xfe3c,\r
-  0xfe3e, 0xfe3e,\r
-  0xfe40, 0xfe40,\r
-  0xfe42, 0xfe42,\r
-  0xfe44, 0xfe44,\r
-  0xfe48, 0xfe48,\r
-  0xfe5a, 0xfe5a,\r
-  0xfe5c, 0xfe5c,\r
-  0xfe5e, 0xfe5e,\r
-  0xff09, 0xff09,\r
-  0xff3d, 0xff3d,\r
-  0xff5d, 0xff5d,\r
-  0xff60, 0xff60,\r
-  0xff63, 0xff63\r
-}; /* CR_Pe */\r
-\r
-/* 'Pf': General Category */\r
-static const OnigCodePoint CR_Pf[] = {\r
-  9,\r
-  0x00bb, 0x00bb,\r
-  0x2019, 0x2019,\r
-  0x201d, 0x201d,\r
-  0x203a, 0x203a,\r
-  0x2e03, 0x2e03,\r
-  0x2e05, 0x2e05,\r
-  0x2e0a, 0x2e0a,\r
-  0x2e0d, 0x2e0d,\r
-  0x2e1d, 0x2e1d\r
-}; /* CR_Pf */\r
-\r
-/* 'Pi': General Category */\r
-static const OnigCodePoint CR_Pi[] = {\r
-  10,\r
-  0x00ab, 0x00ab,\r
-  0x2018, 0x2018,\r
-  0x201b, 0x201c,\r
-  0x201f, 0x201f,\r
-  0x2039, 0x2039,\r
-  0x2e02, 0x2e02,\r
-  0x2e04, 0x2e04,\r
-  0x2e09, 0x2e09,\r
-  0x2e0c, 0x2e0c,\r
-  0x2e1c, 0x2e1c\r
-}; /* CR_Pi */\r
-\r
-/* 'Po': General Category */\r
-static const OnigCodePoint CR_Po[] = {\r
-  88,\r
-  0x0021, 0x0023,\r
-  0x0025, 0x0027,\r
-  0x002a, 0x002a,\r
-  0x002c, 0x002c,\r
-  0x002e, 0x002f,\r
-  0x003a, 0x003b,\r
-  0x003f, 0x0040,\r
-  0x005c, 0x005c,\r
-  0x00a1, 0x00a1,\r
-  0x00b7, 0x00b7,\r
-  0x00bf, 0x00bf,\r
-  0x037e, 0x037e,\r
-  0x0387, 0x0387,\r
-  0x055a, 0x055f,\r
-  0x0589, 0x0589,\r
-  0x05be, 0x05be,\r
-  0x05c0, 0x05c0,\r
-  0x05c3, 0x05c3,\r
-  0x05c6, 0x05c6,\r
-  0x05f3, 0x05f4,\r
-  0x060c, 0x060d,\r
-  0x061b, 0x061b,\r
-  0x061e, 0x061f,\r
-  0x066a, 0x066d,\r
-  0x06d4, 0x06d4,\r
-  0x0700, 0x070d,\r
-  0x0964, 0x0965,\r
-  0x0970, 0x0970,\r
-  0x0df4, 0x0df4,\r
-  0x0e4f, 0x0e4f,\r
-  0x0e5a, 0x0e5b,\r
-  0x0f04, 0x0f12,\r
-  0x0f85, 0x0f85,\r
-  0x0fd0, 0x0fd1,\r
-  0x104a, 0x104f,\r
-  0x10fb, 0x10fb,\r
-  0x1361, 0x1368,\r
-  0x166d, 0x166e,\r
-  0x16eb, 0x16ed,\r
-  0x1735, 0x1736,\r
-  0x17d4, 0x17d6,\r
-  0x17d8, 0x17da,\r
-  0x1800, 0x1805,\r
-  0x1807, 0x180a,\r
-  0x1944, 0x1945,\r
-  0x19de, 0x19df,\r
-  0x1a1e, 0x1a1f,\r
-  0x2016, 0x2017,\r
-  0x2020, 0x2027,\r
-  0x2030, 0x2038,\r
-  0x203b, 0x203e,\r
-  0x2041, 0x2043,\r
-  0x2047, 0x2051,\r
-  0x2053, 0x2053,\r
-  0x2055, 0x205e,\r
-  0x23b6, 0x23b6,\r
-  0x2cf9, 0x2cfc,\r
-  0x2cfe, 0x2cff,\r
-  0x2e00, 0x2e01,\r
-  0x2e06, 0x2e08,\r
-  0x2e0b, 0x2e0b,\r
-  0x2e0e, 0x2e16,\r
-  0x3001, 0x3003,\r
-  0x303d, 0x303d,\r
-  0x30fb, 0x30fb,\r
-  0xfe10, 0xfe16,\r
-  0xfe19, 0xfe19,\r
-  0xfe30, 0xfe30,\r
-  0xfe45, 0xfe46,\r
-  0xfe49, 0xfe4c,\r
-  0xfe50, 0xfe52,\r
-  0xfe54, 0xfe57,\r
-  0xfe5f, 0xfe61,\r
-  0xfe68, 0xfe68,\r
-  0xfe6a, 0xfe6b,\r
-  0xff01, 0xff03,\r
-  0xff05, 0xff07,\r
-  0xff0a, 0xff0a,\r
-  0xff0c, 0xff0c,\r
-  0xff0e, 0xff0f,\r
-  0xff1a, 0xff1b,\r
-  0xff1f, 0xff20,\r
-  0xff3c, 0xff3c,\r
-  0xff61, 0xff61,\r
-  0xff64, 0xff65,\r
-  0x10100, 0x10101,\r
-  0x1039f, 0x1039f,\r
-  0x10a50, 0x10a58\r
-}; /* CR_Po */\r
-\r
-/* 'Ps': General Category */\r
-static const OnigCodePoint CR_Ps[] = {\r
-  67,\r
-  0x0028, 0x0028,\r
-  0x005b, 0x005b,\r
-  0x007b, 0x007b,\r
-  0x0f3a, 0x0f3a,\r
-  0x0f3c, 0x0f3c,\r
-  0x169b, 0x169b,\r
-  0x201a, 0x201a,\r
-  0x201e, 0x201e,\r
-  0x2045, 0x2045,\r
-  0x207d, 0x207d,\r
-  0x208d, 0x208d,\r
-  0x2329, 0x2329,\r
-  0x23b4, 0x23b4,\r
-  0x2768, 0x2768,\r
-  0x276a, 0x276a,\r
-  0x276c, 0x276c,\r
-  0x276e, 0x276e,\r
-  0x2770, 0x2770,\r
-  0x2772, 0x2772,\r
-  0x2774, 0x2774,\r
-  0x27c5, 0x27c5,\r
-  0x27e6, 0x27e6,\r
-  0x27e8, 0x27e8,\r
-  0x27ea, 0x27ea,\r
-  0x2983, 0x2983,\r
-  0x2985, 0x2985,\r
-  0x2987, 0x2987,\r
-  0x2989, 0x2989,\r
-  0x298b, 0x298b,\r
-  0x298d, 0x298d,\r
-  0x298f, 0x298f,\r
-  0x2991, 0x2991,\r
-  0x2993, 0x2993,\r
-  0x2995, 0x2995,\r
-  0x2997, 0x2997,\r
-  0x29d8, 0x29d8,\r
-  0x29da, 0x29da,\r
-  0x29fc, 0x29fc,\r
-  0x3008, 0x3008,\r
-  0x300a, 0x300a,\r
-  0x300c, 0x300c,\r
-  0x300e, 0x300e,\r
-  0x3010, 0x3010,\r
-  0x3014, 0x3014,\r
-  0x3016, 0x3016,\r
-  0x3018, 0x3018,\r
-  0x301a, 0x301a,\r
-  0x301d, 0x301d,\r
-  0xfd3e, 0xfd3e,\r
-  0xfe17, 0xfe17,\r
-  0xfe35, 0xfe35,\r
-  0xfe37, 0xfe37,\r
-  0xfe39, 0xfe39,\r
-  0xfe3b, 0xfe3b,\r
-  0xfe3d, 0xfe3d,\r
-  0xfe3f, 0xfe3f,\r
-  0xfe41, 0xfe41,\r
-  0xfe43, 0xfe43,\r
-  0xfe47, 0xfe47,\r
-  0xfe59, 0xfe59,\r
-  0xfe5b, 0xfe5b,\r
-  0xfe5d, 0xfe5d,\r
-  0xff08, 0xff08,\r
-  0xff3b, 0xff3b,\r
-  0xff5b, 0xff5b,\r
-  0xff5f, 0xff5f,\r
-  0xff62, 0xff62\r
-}; /* CR_Ps */\r
-\r
-/* 'S': Major Category */\r
-static const OnigCodePoint CR_S[] = {\r
-  162,\r
-  0x0024, 0x0024,\r
-  0x002b, 0x002b,\r
-  0x003c, 0x003e,\r
-  0x005e, 0x005e,\r
-  0x0060, 0x0060,\r
-  0x007c, 0x007c,\r
-  0x007e, 0x007e,\r
-  0x00a2, 0x00a9,\r
-  0x00ac, 0x00ac,\r
-  0x00ae, 0x00b1,\r
-  0x00b4, 0x00b4,\r
-  0x00b6, 0x00b6,\r
-  0x00b8, 0x00b8,\r
-  0x00d7, 0x00d7,\r
-  0x00f7, 0x00f7,\r
-  0x02c2, 0x02c5,\r
-  0x02d2, 0x02df,\r
-  0x02e5, 0x02ed,\r
-  0x02ef, 0x02ff,\r
-  0x0374, 0x0375,\r
-  0x0384, 0x0385,\r
-  0x03f6, 0x03f6,\r
-  0x0482, 0x0482,\r
-  0x060b, 0x060b,\r
-  0x060e, 0x060f,\r
-  0x06e9, 0x06e9,\r
-  0x06fd, 0x06fe,\r
-  0x09f2, 0x09f3,\r
-  0x09fa, 0x09fa,\r
-  0x0af1, 0x0af1,\r
-  0x0b70, 0x0b70,\r
-  0x0bf3, 0x0bfa,\r
-  0x0e3f, 0x0e3f,\r
-  0x0f01, 0x0f03,\r
-  0x0f13, 0x0f17,\r
-  0x0f1a, 0x0f1f,\r
-  0x0f34, 0x0f34,\r
-  0x0f36, 0x0f36,\r
-  0x0f38, 0x0f38,\r
-  0x0fbe, 0x0fc5,\r
-  0x0fc7, 0x0fcc,\r
-  0x0fcf, 0x0fcf,\r
-  0x1360, 0x1360,\r
-  0x1390, 0x1399,\r
-  0x17db, 0x17db,\r
-  0x1940, 0x1940,\r
-  0x19e0, 0x19ff,\r
-  0x1fbd, 0x1fbd,\r
-  0x1fbf, 0x1fc1,\r
-  0x1fcd, 0x1fcf,\r
-  0x1fdd, 0x1fdf,\r
-  0x1fed, 0x1fef,\r
-  0x1ffd, 0x1ffe,\r
-  0x2044, 0x2044,\r
-  0x2052, 0x2052,\r
-  0x207a, 0x207c,\r
-  0x208a, 0x208c,\r
-  0x20a0, 0x20b5,\r
-  0x2100, 0x2101,\r
-  0x2103, 0x2106,\r
-  0x2108, 0x2109,\r
-  0x2114, 0x2114,\r
-  0x2116, 0x2118,\r
-  0x211e, 0x2123,\r
-  0x2125, 0x2125,\r
-  0x2127, 0x2127,\r
-  0x2129, 0x2129,\r
-  0x212e, 0x212e,\r
-  0x2132, 0x2132,\r
-  0x213a, 0x213b,\r
-  0x2140, 0x2144,\r
-  0x214a, 0x214c,\r
-  0x2190, 0x2328,\r
-  0x232b, 0x23b3,\r
-  0x23b7, 0x23db,\r
-  0x2400, 0x2426,\r
-  0x2440, 0x244a,\r
-  0x249c, 0x24e9,\r
-  0x2500, 0x269c,\r
-  0x26a0, 0x26b1,\r
-  0x2701, 0x2704,\r
-  0x2706, 0x2709,\r
-  0x270c, 0x2727,\r
-  0x2729, 0x274b,\r
-  0x274d, 0x274d,\r
-  0x274f, 0x2752,\r
-  0x2756, 0x2756,\r
-  0x2758, 0x275e,\r
-  0x2761, 0x2767,\r
-  0x2794, 0x2794,\r
-  0x2798, 0x27af,\r
-  0x27b1, 0x27be,\r
-  0x27c0, 0x27c4,\r
-  0x27d0, 0x27e5,\r
-  0x27f0, 0x2982,\r
-  0x2999, 0x29d7,\r
-  0x29dc, 0x29fb,\r
-  0x29fe, 0x2b13,\r
-  0x2ce5, 0x2cea,\r
-  0x2e80, 0x2e99,\r
-  0x2e9b, 0x2ef3,\r
-  0x2f00, 0x2fd5,\r
-  0x2ff0, 0x2ffb,\r
-  0x3004, 0x3004,\r
-  0x3012, 0x3013,\r
-  0x3020, 0x3020,\r
-  0x3036, 0x3037,\r
-  0x303e, 0x303f,\r
-  0x309b, 0x309c,\r
-  0x3190, 0x3191,\r
-  0x3196, 0x319f,\r
-  0x31c0, 0x31cf,\r
-  0x3200, 0x321e,\r
-  0x322a, 0x3243,\r
-  0x3250, 0x3250,\r
-  0x3260, 0x327f,\r
-  0x328a, 0x32b0,\r
-  0x32c0, 0x32fe,\r
-  0x3300, 0x33ff,\r
-  0x4dc0, 0x4dff,\r
-  0xa490, 0xa4c6,\r
-  0xa700, 0xa716,\r
-  0xa828, 0xa82b,\r
-  0xfb29, 0xfb29,\r
-  0xfdfc, 0xfdfd,\r
-  0xfe62, 0xfe62,\r
-  0xfe64, 0xfe66,\r
-  0xfe69, 0xfe69,\r
-  0xff04, 0xff04,\r
-  0xff0b, 0xff0b,\r
-  0xff1c, 0xff1e,\r
-  0xff3e, 0xff3e,\r
-  0xff40, 0xff40,\r
-  0xff5c, 0xff5c,\r
-  0xff5e, 0xff5e,\r
-  0xffe0, 0xffe6,\r
-  0xffe8, 0xffee,\r
-  0xfffc, 0xfffd,\r
-  0x10102, 0x10102,\r
-  0x10137, 0x1013f,\r
-  0x10179, 0x10189,\r
-  0x103d0, 0x103d0,\r
-  0x1d000, 0x1d0f5,\r
-  0x1d100, 0x1d126,\r
-  0x1d12a, 0x1d164,\r
-  0x1d16a, 0x1d16c,\r
-  0x1d183, 0x1d184,\r
-  0x1d18c, 0x1d1a9,\r
-  0x1d1ae, 0x1d1dd,\r
-  0x1d200, 0x1d241,\r
-  0x1d245, 0x1d245,\r
-  0x1d300, 0x1d356,\r
-  0x1d6c1, 0x1d6c1,\r
-  0x1d6db, 0x1d6db,\r
-  0x1d6fb, 0x1d6fb,\r
-  0x1d715, 0x1d715,\r
-  0x1d735, 0x1d735,\r
-  0x1d74f, 0x1d74f,\r
-  0x1d76f, 0x1d76f,\r
-  0x1d789, 0x1d789,\r
-  0x1d7a9, 0x1d7a9,\r
-  0x1d7c3, 0x1d7c3\r
-}; /* CR_S */\r
-\r
-/* 'Sc': General Category */\r
-static const OnigCodePoint CR_Sc[] = {\r
-  14,\r
-  0x0024, 0x0024,\r
-  0x00a2, 0x00a5,\r
-  0x060b, 0x060b,\r
-  0x09f2, 0x09f3,\r
-  0x0af1, 0x0af1,\r
-  0x0bf9, 0x0bf9,\r
-  0x0e3f, 0x0e3f,\r
-  0x17db, 0x17db,\r
-  0x20a0, 0x20b5,\r
-  0xfdfc, 0xfdfc,\r
-  0xfe69, 0xfe69,\r
-  0xff04, 0xff04,\r
-  0xffe0, 0xffe1,\r
-  0xffe5, 0xffe6\r
-}; /* CR_Sc */\r
-\r
-/* 'Sk': General Category */\r
-static const OnigCodePoint CR_Sk[] = {\r
-  23,\r
-  0x005e, 0x005e,\r
-  0x0060, 0x0060,\r
-  0x00a8, 0x00a8,\r
-  0x00af, 0x00af,\r
-  0x00b4, 0x00b4,\r
-  0x00b8, 0x00b8,\r
-  0x02c2, 0x02c5,\r
-  0x02d2, 0x02df,\r
-  0x02e5, 0x02ed,\r
-  0x02ef, 0x02ff,\r
-  0x0374, 0x0375,\r
-  0x0384, 0x0385,\r
-  0x1fbd, 0x1fbd,\r
-  0x1fbf, 0x1fc1,\r
-  0x1fcd, 0x1fcf,\r
-  0x1fdd, 0x1fdf,\r
-  0x1fed, 0x1fef,\r
-  0x1ffd, 0x1ffe,\r
-  0x309b, 0x309c,\r
-  0xa700, 0xa716,\r
-  0xff3e, 0xff3e,\r
-  0xff40, 0xff40,\r
-  0xffe3, 0xffe3\r
-}; /* CR_Sk */\r
-\r
-/* 'Sm': General Category */\r
-static const OnigCodePoint CR_Sm[] = {\r
-  59,\r
-  0x002b, 0x002b,\r
-  0x003c, 0x003e,\r
-  0x007c, 0x007c,\r
-  0x007e, 0x007e,\r
-  0x00ac, 0x00ac,\r
-  0x00b1, 0x00b1,\r
-  0x00d7, 0x00d7,\r
-  0x00f7, 0x00f7,\r
-  0x03f6, 0x03f6,\r
-  0x2044, 0x2044,\r
-  0x2052, 0x2052,\r
-  0x207a, 0x207c,\r
-  0x208a, 0x208c,\r
-  0x2140, 0x2144,\r
-  0x214b, 0x214b,\r
-  0x2190, 0x2194,\r
-  0x219a, 0x219b,\r
-  0x21a0, 0x21a0,\r
-  0x21a3, 0x21a3,\r
-  0x21a6, 0x21a6,\r
-  0x21ae, 0x21ae,\r
-  0x21ce, 0x21cf,\r
-  0x21d2, 0x21d2,\r
-  0x21d4, 0x21d4,\r
-  0x21f4, 0x22ff,\r
-  0x2308, 0x230b,\r
-  0x2320, 0x2321,\r
-  0x237c, 0x237c,\r
-  0x239b, 0x23b3,\r
-  0x25b7, 0x25b7,\r
-  0x25c1, 0x25c1,\r
-  0x25f8, 0x25ff,\r
-  0x266f, 0x266f,\r
-  0x27c0, 0x27c4,\r
-  0x27d0, 0x27e5,\r
-  0x27f0, 0x27ff,\r
-  0x2900, 0x2982,\r
-  0x2999, 0x29d7,\r
-  0x29dc, 0x29fb,\r
-  0x29fe, 0x2aff,\r
-  0xfb29, 0xfb29,\r
-  0xfe62, 0xfe62,\r
-  0xfe64, 0xfe66,\r
-  0xff0b, 0xff0b,\r
-  0xff1c, 0xff1e,\r
-  0xff5c, 0xff5c,\r
-  0xff5e, 0xff5e,\r
-  0xffe2, 0xffe2,\r
-  0xffe9, 0xffec,\r
-  0x1d6c1, 0x1d6c1,\r
-  0x1d6db, 0x1d6db,\r
-  0x1d6fb, 0x1d6fb,\r
-  0x1d715, 0x1d715,\r
-  0x1d735, 0x1d735,\r
-  0x1d74f, 0x1d74f,\r
-  0x1d76f, 0x1d76f,\r
-  0x1d789, 0x1d789,\r
-  0x1d7a9, 0x1d7a9,\r
-  0x1d7c3, 0x1d7c3\r
-}; /* CR_Sm */\r
-\r
-/* 'So': General Category */\r
-static const OnigCodePoint CR_So[] = {\r
-  120,\r
-  0x00a6, 0x00a7,\r
-  0x00a9, 0x00a9,\r
-  0x00ae, 0x00ae,\r
-  0x00b0, 0x00b0,\r
-  0x00b6, 0x00b6,\r
-  0x0482, 0x0482,\r
-  0x060e, 0x060f,\r
-  0x06e9, 0x06e9,\r
-  0x06fd, 0x06fe,\r
-  0x09fa, 0x09fa,\r
-  0x0b70, 0x0b70,\r
-  0x0bf3, 0x0bf8,\r
-  0x0bfa, 0x0bfa,\r
-  0x0f01, 0x0f03,\r
-  0x0f13, 0x0f17,\r
-  0x0f1a, 0x0f1f,\r
-  0x0f34, 0x0f34,\r
-  0x0f36, 0x0f36,\r
-  0x0f38, 0x0f38,\r
-  0x0fbe, 0x0fc5,\r
-  0x0fc7, 0x0fcc,\r
-  0x0fcf, 0x0fcf,\r
-  0x1360, 0x1360,\r
-  0x1390, 0x1399,\r
-  0x1940, 0x1940,\r
-  0x19e0, 0x19ff,\r
-  0x2100, 0x2101,\r
-  0x2103, 0x2106,\r
-  0x2108, 0x2109,\r
-  0x2114, 0x2114,\r
-  0x2116, 0x2118,\r
-  0x211e, 0x2123,\r
-  0x2125, 0x2125,\r
-  0x2127, 0x2127,\r
-  0x2129, 0x2129,\r
-  0x212e, 0x212e,\r
-  0x2132, 0x2132,\r
-  0x213a, 0x213b,\r
-  0x214a, 0x214a,\r
-  0x214c, 0x214c,\r
-  0x2195, 0x2199,\r
-  0x219c, 0x219f,\r
-  0x21a1, 0x21a2,\r
-  0x21a4, 0x21a5,\r
-  0x21a7, 0x21ad,\r
-  0x21af, 0x21cd,\r
-  0x21d0, 0x21d1,\r
-  0x21d3, 0x21d3,\r
-  0x21d5, 0x21f3,\r
-  0x2300, 0x2307,\r
-  0x230c, 0x231f,\r
-  0x2322, 0x2328,\r
-  0x232b, 0x237b,\r
-  0x237d, 0x239a,\r
-  0x23b7, 0x23db,\r
-  0x2400, 0x2426,\r
-  0x2440, 0x244a,\r
-  0x249c, 0x24e9,\r
-  0x2500, 0x25b6,\r
-  0x25b8, 0x25c0,\r
-  0x25c2, 0x25f7,\r
-  0x2600, 0x266e,\r
-  0x2670, 0x269c,\r
-  0x26a0, 0x26b1,\r
-  0x2701, 0x2704,\r
-  0x2706, 0x2709,\r
-  0x270c, 0x2727,\r
-  0x2729, 0x274b,\r
-  0x274d, 0x274d,\r
-  0x274f, 0x2752,\r
-  0x2756, 0x2756,\r
-  0x2758, 0x275e,\r
-  0x2761, 0x2767,\r
-  0x2794, 0x2794,\r
-  0x2798, 0x27af,\r
-  0x27b1, 0x27be,\r
-  0x2800, 0x28ff,\r
-  0x2b00, 0x2b13,\r
-  0x2ce5, 0x2cea,\r
-  0x2e80, 0x2e99,\r
-  0x2e9b, 0x2ef3,\r
-  0x2f00, 0x2fd5,\r
-  0x2ff0, 0x2ffb,\r
-  0x3004, 0x3004,\r
-  0x3012, 0x3013,\r
-  0x3020, 0x3020,\r
-  0x3036, 0x3037,\r
-  0x303e, 0x303f,\r
-  0x3190, 0x3191,\r
-  0x3196, 0x319f,\r
-  0x31c0, 0x31cf,\r
-  0x3200, 0x321e,\r
-  0x322a, 0x3243,\r
-  0x3250, 0x3250,\r
-  0x3260, 0x327f,\r
-  0x328a, 0x32b0,\r
-  0x32c0, 0x32fe,\r
-  0x3300, 0x33ff,\r
-  0x4dc0, 0x4dff,\r
-  0xa490, 0xa4c6,\r
-  0xa828, 0xa82b,\r
-  0xfdfd, 0xfdfd,\r
-  0xffe4, 0xffe4,\r
-  0xffe8, 0xffe8,\r
-  0xffed, 0xffee,\r
-  0xfffc, 0xfffd,\r
-  0x10102, 0x10102,\r
-  0x10137, 0x1013f,\r
-  0x10179, 0x10189,\r
-  0x103d0, 0x103d0,\r
-  0x1d000, 0x1d0f5,\r
-  0x1d100, 0x1d126,\r
-  0x1d12a, 0x1d164,\r
-  0x1d16a, 0x1d16c,\r
-  0x1d183, 0x1d184,\r
-  0x1d18c, 0x1d1a9,\r
-  0x1d1ae, 0x1d1dd,\r
-  0x1d200, 0x1d241,\r
-  0x1d245, 0x1d245,\r
-  0x1d300, 0x1d356\r
-}; /* CR_So */\r
-\r
-/* 'Z': Major Category */\r
-static const OnigCodePoint CR_Z[] = {\r
-  9,\r
-  0x0020, 0x0020,\r
-  0x00a0, 0x00a0,\r
-  0x1680, 0x1680,\r
-  0x180e, 0x180e,\r
-  0x2000, 0x200a,\r
-  0x2028, 0x2029,\r
-  0x202f, 0x202f,\r
-  0x205f, 0x205f,\r
-  0x3000, 0x3000\r
-}; /* CR_Z */\r
-\r
-/* 'Zl': General Category */\r
-static const OnigCodePoint CR_Zl[] = {\r
-  1,\r
-  0x2028, 0x2028\r
-}; /* CR_Zl */\r
-\r
-/* 'Zp': General Category */\r
-static const OnigCodePoint CR_Zp[] = {\r
-  1,\r
-  0x2029, 0x2029\r
-}; /* CR_Zp */\r
-\r
-/* 'Zs': General Category */\r
-static const OnigCodePoint CR_Zs[] = {\r
-  8,\r
-  0x0020, 0x0020,\r
-  0x00a0, 0x00a0,\r
-  0x1680, 0x1680,\r
-  0x180e, 0x180e,\r
-  0x2000, 0x200a,\r
-  0x202f, 0x202f,\r
-  0x205f, 0x205f,\r
-  0x3000, 0x3000\r
-}; /* CR_Zs */\r
-\r
-/* 'Arabic': Script */\r
-static const OnigCodePoint CR_Arabic[] = {\r
-  17,\r
-  0x060b, 0x060b,\r
-  0x060d, 0x0615,\r
-  0x061e, 0x061e,\r
-  0x0621, 0x063a,\r
-  0x0641, 0x064a,\r
-  0x0656, 0x065e,\r
-  0x066a, 0x066f,\r
-  0x0671, 0x06dc,\r
-  0x06de, 0x06ff,\r
-  0x0750, 0x076d,\r
-  0xfb50, 0xfbb1,\r
-  0xfbd3, 0xfd3d,\r
-  0xfd50, 0xfd8f,\r
-  0xfd92, 0xfdc7,\r
-  0xfdf0, 0xfdfc,\r
-  0xfe70, 0xfe74,\r
-  0xfe76, 0xfefc\r
-}; /* CR_Arabic */\r
-\r
-/* 'Armenian': Script */\r
-static const OnigCodePoint CR_Armenian[] = {\r
-  5,\r
-  0x0531, 0x0556,\r
-  0x0559, 0x055f,\r
-  0x0561, 0x0587,\r
-  0x058a, 0x058a,\r
-  0xfb13, 0xfb17\r
-}; /* CR_Armenian */\r
-\r
-/* 'Bengali': Script */\r
-static const OnigCodePoint CR_Bengali[] = {\r
-  14,\r
-  0x0981, 0x0983,\r
-  0x0985, 0x098c,\r
-  0x098f, 0x0990,\r
-  0x0993, 0x09a8,\r
-  0x09aa, 0x09b0,\r
-  0x09b2, 0x09b2,\r
-  0x09b6, 0x09b9,\r
-  0x09bc, 0x09c4,\r
-  0x09c7, 0x09c8,\r
-  0x09cb, 0x09ce,\r
-  0x09d7, 0x09d7,\r
-  0x09dc, 0x09dd,\r
-  0x09df, 0x09e3,\r
-  0x09e6, 0x09fa\r
-}; /* CR_Bengali */\r
-\r
-/* 'Bopomofo': Script */\r
-static const OnigCodePoint CR_Bopomofo[] = {\r
-  2,\r
-  0x3105, 0x312c,\r
-  0x31a0, 0x31b7\r
-}; /* CR_Bopomofo */\r
-\r
-/* 'Braille': Script */\r
-static const OnigCodePoint CR_Braille[] = {\r
-  1,\r
-  0x2800, 0x28ff\r
-}; /* CR_Braille */\r
-\r
-/* 'Buginese': Script */\r
-static const OnigCodePoint CR_Buginese[] = {\r
-  2,\r
-  0x1a00, 0x1a1b,\r
-  0x1a1e, 0x1a1f\r
-}; /* CR_Buginese */\r
-\r
-/* 'Buhid': Script */\r
-static const OnigCodePoint CR_Buhid[] = {\r
-  1,\r
-  0x1740, 0x1753\r
-}; /* CR_Buhid */\r
-\r
-/* 'Canadian_Aboriginal': Script */\r
-static const OnigCodePoint CR_Canadian_Aboriginal[] = {\r
-  1,\r
-  0x1401, 0x1676\r
-}; /* CR_Canadian_Aboriginal */\r
-\r
-/* 'Cherokee': Script */\r
-static const OnigCodePoint CR_Cherokee[] = {\r
-  1,\r
-  0x13a0, 0x13f4\r
-}; /* CR_Cherokee */\r
-\r
-/* 'Common': Script */\r
-static const OnigCodePoint CR_Common[] = {\r
-  126,\r
-  0x0000, 0x0040,\r
-  0x005b, 0x0060,\r
-  0x007b, 0x00a9,\r
-  0x00ab, 0x00b9,\r
-  0x00bb, 0x00bf,\r
-  0x00d7, 0x00d7,\r
-  0x00f7, 0x00f7,\r
-  0x02b9, 0x02df,\r
-  0x02e5, 0x02ff,\r
-  0x037e, 0x037e,\r
-  0x0387, 0x0387,\r
-  0x0589, 0x0589,\r
-  0x0600, 0x0603,\r
-  0x060c, 0x060c,\r
-  0x061b, 0x061b,\r
-  0x061f, 0x061f,\r
-  0x0640, 0x0640,\r
-  0x0660, 0x0669,\r
-  0x06dd, 0x06dd,\r
-  0x0964, 0x0965,\r
-  0x0970, 0x0970,\r
-  0x0e3f, 0x0e3f,\r
-  0x10fb, 0x10fb,\r
-  0x16eb, 0x16ed,\r
-  0x1735, 0x1736,\r
-  0x2000, 0x200b,\r
-  0x200e, 0x2063,\r
-  0x206a, 0x2070,\r
-  0x2074, 0x207e,\r
-  0x2080, 0x208e,\r
-  0x20a0, 0x20b5,\r
-  0x2100, 0x2125,\r
-  0x2127, 0x2129,\r
-  0x212c, 0x214c,\r
-  0x2153, 0x2183,\r
-  0x2190, 0x23db,\r
-  0x2400, 0x2426,\r
-  0x2440, 0x244a,\r
-  0x2460, 0x269c,\r
-  0x26a0, 0x26b1,\r
-  0x2701, 0x2704,\r
-  0x2706, 0x2709,\r
-  0x270c, 0x2727,\r
-  0x2729, 0x274b,\r
-  0x274d, 0x274d,\r
-  0x274f, 0x2752,\r
-  0x2756, 0x2756,\r
-  0x2758, 0x275e,\r
-  0x2761, 0x2794,\r
-  0x2798, 0x27af,\r
-  0x27b1, 0x27be,\r
-  0x27c0, 0x27c6,\r
-  0x27d0, 0x27eb,\r
-  0x27f0, 0x27ff,\r
-  0x2900, 0x2b13,\r
-  0x2e00, 0x2e17,\r
-  0x2e1c, 0x2e1d,\r
-  0x2ff0, 0x2ffb,\r
-  0x3000, 0x3004,\r
-  0x3006, 0x3006,\r
-  0x3008, 0x3020,\r
-  0x3030, 0x3037,\r
-  0x303c, 0x303f,\r
-  0x309b, 0x309c,\r
-  0x30a0, 0x30a0,\r
-  0x30fb, 0x30fc,\r
-  0x3190, 0x319f,\r
-  0x31c0, 0x31cf,\r
-  0x3220, 0x3243,\r
-  0x3250, 0x325f,\r
-  0x327e, 0x32fe,\r
-  0x3300, 0x33ff,\r
-  0x4dc0, 0x4dff,\r
-  0xa700, 0xa716,\r
-  0xe000, 0xf8ff,\r
-  0xfd3e, 0xfd3f,\r
-  0xfdfd, 0xfdfd,\r
-  0xfe10, 0xfe19,\r
-  0xfe30, 0xfe52,\r
-  0xfe54, 0xfe66,\r
-  0xfe68, 0xfe6b,\r
-  0xfeff, 0xfeff,\r
-  0xff01, 0xff20,\r
-  0xff3b, 0xff40,\r
-  0xff5b, 0xff65,\r
-  0xff70, 0xff70,\r
-  0xff9e, 0xff9f,\r
-  0xffe0, 0xffe6,\r
-  0xffe8, 0xffee,\r
-  0xfff9, 0xfffd,\r
-  0x10100, 0x10102,\r
-  0x10107, 0x10133,\r
-  0x10137, 0x1013f,\r
-  0x1d000, 0x1d0f5,\r
-  0x1d100, 0x1d126,\r
-  0x1d12a, 0x1d166,\r
-  0x1d16a, 0x1d17a,\r
-  0x1d183, 0x1d184,\r
-  0x1d18c, 0x1d1a9,\r
-  0x1d1ae, 0x1d1dd,\r
-  0x1d300, 0x1d356,\r
-  0x1d400, 0x1d454,\r
-  0x1d456, 0x1d49c,\r
-  0x1d49e, 0x1d49f,\r
-  0x1d4a2, 0x1d4a2,\r
-  0x1d4a5, 0x1d4a6,\r
-  0x1d4a9, 0x1d4ac,\r
-  0x1d4ae, 0x1d4b9,\r
-  0x1d4bb, 0x1d4bb,\r
-  0x1d4bd, 0x1d4c3,\r
-  0x1d4c5, 0x1d505,\r
-  0x1d507, 0x1d50a,\r
-  0x1d50d, 0x1d514,\r
-  0x1d516, 0x1d51c,\r
-  0x1d51e, 0x1d539,\r
-  0x1d53b, 0x1d53e,\r
-  0x1d540, 0x1d544,\r
-  0x1d546, 0x1d546,\r
-  0x1d54a, 0x1d550,\r
-  0x1d552, 0x1d6a5,\r
-  0x1d6a8, 0x1d7c9,\r
-  0x1d7ce, 0x1d7ff,\r
-  0xe0001, 0xe0001,\r
-  0xe0020, 0xe007f,\r
-  0xf0000, 0xffffd,\r
-  0x100000, 0x10fffd\r
-}; /* CR_Common */\r
-\r
-/* 'Coptic': Script */\r
-static const OnigCodePoint CR_Coptic[] = {\r
-  3,\r
-  0x03e2, 0x03ef,\r
-  0x2c80, 0x2cea,\r
-  0x2cf9, 0x2cff\r
-}; /* CR_Coptic */\r
-\r
-/* 'Cypriot': Script */\r
-static const OnigCodePoint CR_Cypriot[] = {\r
-  6,\r
-  0x10800, 0x10805,\r
-  0x10808, 0x10808,\r
-  0x1080a, 0x10835,\r
-  0x10837, 0x10838,\r
-  0x1083c, 0x1083c,\r
-  0x1083f, 0x1083f\r
-}; /* CR_Cypriot */\r
-\r
-/* 'Cyrillic': Script */\r
-static const OnigCodePoint CR_Cyrillic[] = {\r
-  6,\r
-  0x0400, 0x0486,\r
-  0x0488, 0x04ce,\r
-  0x04d0, 0x04f9,\r
-  0x0500, 0x050f,\r
-  0x1d2b, 0x1d2b,\r
-  0x1d78, 0x1d78\r
-}; /* CR_Cyrillic */\r
-\r
-/* 'Deseret': Script */\r
-static const OnigCodePoint CR_Deseret[] = {\r
-  1,\r
-  0x10400, 0x1044f\r
-}; /* CR_Deseret */\r
-\r
-/* 'Devanagari': Script */\r
-static const OnigCodePoint CR_Devanagari[] = {\r
-  6,\r
-  0x0901, 0x0939,\r
-  0x093c, 0x094d,\r
-  0x0950, 0x0954,\r
-  0x0958, 0x0963,\r
-  0x0966, 0x096f,\r
-  0x097d, 0x097d\r
-}; /* CR_Devanagari */\r
-\r
-/* 'Ethiopic': Script */\r
-static const OnigCodePoint CR_Ethiopic[] = {\r
-  27,\r
-  0x1200, 0x1248,\r
-  0x124a, 0x124d,\r
-  0x1250, 0x1256,\r
-  0x1258, 0x1258,\r
-  0x125a, 0x125d,\r
-  0x1260, 0x1288,\r
-  0x128a, 0x128d,\r
-  0x1290, 0x12b0,\r
-  0x12b2, 0x12b5,\r
-  0x12b8, 0x12be,\r
-  0x12c0, 0x12c0,\r
-  0x12c2, 0x12c5,\r
-  0x12c8, 0x12d6,\r
-  0x12d8, 0x1310,\r
-  0x1312, 0x1315,\r
-  0x1318, 0x135a,\r
-  0x135f, 0x137c,\r
-  0x1380, 0x1399,\r
-  0x2d80, 0x2d96,\r
-  0x2da0, 0x2da6,\r
-  0x2da8, 0x2dae,\r
-  0x2db0, 0x2db6,\r
-  0x2db8, 0x2dbe,\r
-  0x2dc0, 0x2dc6,\r
-  0x2dc8, 0x2dce,\r
-  0x2dd0, 0x2dd6,\r
-  0x2dd8, 0x2dde\r
-}; /* CR_Ethiopic */\r
-\r
-/* 'Georgian': Script */\r
-static const OnigCodePoint CR_Georgian[] = {\r
-  4,\r
-  0x10a0, 0x10c5,\r
-  0x10d0, 0x10fa,\r
-  0x10fc, 0x10fc,\r
-  0x2d00, 0x2d25\r
-}; /* CR_Georgian */\r
-\r
-/* 'Glagolitic': Script */\r
-static const OnigCodePoint CR_Glagolitic[] = {\r
-  2,\r
-  0x2c00, 0x2c2e,\r
-  0x2c30, 0x2c5e\r
-}; /* CR_Glagolitic */\r
-\r
-/* 'Gothic': Script */\r
-static const OnigCodePoint CR_Gothic[] = {\r
-  1,\r
-  0x10330, 0x1034a\r
-}; /* CR_Gothic */\r
-\r
-/* 'Greek': Script */\r
-static const OnigCodePoint CR_Greek[] = {\r
-  31,\r
-  0x0374, 0x0375,\r
-  0x037a, 0x037a,\r
-  0x0384, 0x0386,\r
-  0x0388, 0x038a,\r
-  0x038c, 0x038c,\r
-  0x038e, 0x03a1,\r
-  0x03a3, 0x03ce,\r
-  0x03d0, 0x03e1,\r
-  0x03f0, 0x03ff,\r
-  0x1d26, 0x1d2a,\r
-  0x1d5d, 0x1d61,\r
-  0x1d66, 0x1d6a,\r
-  0x1f00, 0x1f15,\r
-  0x1f18, 0x1f1d,\r
-  0x1f20, 0x1f45,\r
-  0x1f48, 0x1f4d,\r
-  0x1f50, 0x1f57,\r
-  0x1f59, 0x1f59,\r
-  0x1f5b, 0x1f5b,\r
-  0x1f5d, 0x1f5d,\r
-  0x1f5f, 0x1f7d,\r
-  0x1f80, 0x1fb4,\r
-  0x1fb6, 0x1fc4,\r
-  0x1fc6, 0x1fd3,\r
-  0x1fd6, 0x1fdb,\r
-  0x1fdd, 0x1fef,\r
-  0x1ff2, 0x1ff4,\r
-  0x1ff6, 0x1ffe,\r
-  0x2126, 0x2126,\r
-  0x10140, 0x1018a,\r
-  0x1d200, 0x1d245\r
-}; /* CR_Greek */\r
-\r
-/* 'Gujarati': Script */\r
-static const OnigCodePoint CR_Gujarati[] = {\r
-  14,\r
-  0x0a81, 0x0a83,\r
-  0x0a85, 0x0a8d,\r
-  0x0a8f, 0x0a91,\r
-  0x0a93, 0x0aa8,\r
-  0x0aaa, 0x0ab0,\r
-  0x0ab2, 0x0ab3,\r
-  0x0ab5, 0x0ab9,\r
-  0x0abc, 0x0ac5,\r
-  0x0ac7, 0x0ac9,\r
-  0x0acb, 0x0acd,\r
-  0x0ad0, 0x0ad0,\r
-  0x0ae0, 0x0ae3,\r
-  0x0ae6, 0x0aef,\r
-  0x0af1, 0x0af1\r
-}; /* CR_Gujarati */\r
-\r
-/* 'Gurmukhi': Script */\r
-static const OnigCodePoint CR_Gurmukhi[] = {\r
-  15,\r
-  0x0a01, 0x0a03,\r
-  0x0a05, 0x0a0a,\r
-  0x0a0f, 0x0a10,\r
-  0x0a13, 0x0a28,\r
-  0x0a2a, 0x0a30,\r
-  0x0a32, 0x0a33,\r
-  0x0a35, 0x0a36,\r
-  0x0a38, 0x0a39,\r
-  0x0a3c, 0x0a3c,\r
-  0x0a3e, 0x0a42,\r
-  0x0a47, 0x0a48,\r
-  0x0a4b, 0x0a4d,\r
-  0x0a59, 0x0a5c,\r
-  0x0a5e, 0x0a5e,\r
-  0x0a66, 0x0a74\r
-}; /* CR_Gurmukhi */\r
-\r
-/* 'Han': Script */\r
-static const OnigCodePoint CR_Han[] = {\r
-  14,\r
-  0x2e80, 0x2e99,\r
-  0x2e9b, 0x2ef3,\r
-  0x2f00, 0x2fd5,\r
-  0x3005, 0x3005,\r
-  0x3007, 0x3007,\r
-  0x3021, 0x3029,\r
-  0x3038, 0x303b,\r
-  0x3400, 0x4db5,\r
-  0x4e00, 0x9fbb,\r
-  0xf900, 0xfa2d,\r
-  0xfa30, 0xfa6a,\r
-  0xfa70, 0xfad9,\r
-  0x20000, 0x2a6d6,\r
-  0x2f800, 0x2fa1d\r
-}; /* CR_Han */\r
-\r
-/* 'Hangul': Script */\r
-static const OnigCodePoint CR_Hangul[] = {\r
-  12,\r
-  0x1100, 0x1159,\r
-  0x115f, 0x11a2,\r
-  0x11a8, 0x11f9,\r
-  0x3131, 0x318e,\r
-  0x3200, 0x321e,\r
-  0x3260, 0x327d,\r
-  0xac00, 0xd7a3,\r
-  0xffa0, 0xffbe,\r
-  0xffc2, 0xffc7,\r
-  0xffca, 0xffcf,\r
-  0xffd2, 0xffd7,\r
-  0xffda, 0xffdc\r
-}; /* CR_Hangul */\r
-\r
-/* 'Hanunoo': Script */\r
-static const OnigCodePoint CR_Hanunoo[] = {\r
-  1,\r
-  0x1720, 0x1734\r
-}; /* CR_Hanunoo */\r
-\r
-/* 'Hebrew': Script */\r
-static const OnigCodePoint CR_Hebrew[] = {\r
-  10,\r
-  0x0591, 0x05b9,\r
-  0x05bb, 0x05c7,\r
-  0x05d0, 0x05ea,\r
-  0x05f0, 0x05f4,\r
-  0xfb1d, 0xfb36,\r
-  0xfb38, 0xfb3c,\r
-  0xfb3e, 0xfb3e,\r
-  0xfb40, 0xfb41,\r
-  0xfb43, 0xfb44,\r
-  0xfb46, 0xfb4f\r
-}; /* CR_Hebrew */\r
-\r
-/* 'Hiragana': Script */\r
-static const OnigCodePoint CR_Hiragana[] = {\r
-  2,\r
-  0x3041, 0x3096,\r
-  0x309d, 0x309f\r
-}; /* CR_Hiragana */\r
-\r
-/* 'Inherited': Script */\r
-static const OnigCodePoint CR_Inherited[] = {\r
-  15,\r
-  0x0300, 0x036f,\r
-  0x064b, 0x0655,\r
-  0x0670, 0x0670,\r
-  0x1dc0, 0x1dc3,\r
-  0x200c, 0x200d,\r
-  0x20d0, 0x20eb,\r
-  0x302a, 0x302f,\r
-  0x3099, 0x309a,\r
-  0xfe00, 0xfe0f,\r
-  0xfe20, 0xfe23,\r
-  0x1d167, 0x1d169,\r
-  0x1d17b, 0x1d182,\r
-  0x1d185, 0x1d18b,\r
-  0x1d1aa, 0x1d1ad,\r
-  0xe0100, 0xe01ef\r
-}; /* CR_Inherited */\r
-\r
-/* 'Kannada': Script */\r
-static const OnigCodePoint CR_Kannada[] = {\r
-  13,\r
-  0x0c82, 0x0c83,\r
-  0x0c85, 0x0c8c,\r
-  0x0c8e, 0x0c90,\r
-  0x0c92, 0x0ca8,\r
-  0x0caa, 0x0cb3,\r
-  0x0cb5, 0x0cb9,\r
-  0x0cbc, 0x0cc4,\r
-  0x0cc6, 0x0cc8,\r
-  0x0cca, 0x0ccd,\r
-  0x0cd5, 0x0cd6,\r
-  0x0cde, 0x0cde,\r
-  0x0ce0, 0x0ce1,\r
-  0x0ce6, 0x0cef\r
-}; /* CR_Kannada */\r
-\r
-/* 'Katakana': Script */\r
-static const OnigCodePoint CR_Katakana[] = {\r
-  5,\r
-  0x30a1, 0x30fa,\r
-  0x30fd, 0x30ff,\r
-  0x31f0, 0x31ff,\r
-  0xff66, 0xff6f,\r
-  0xff71, 0xff9d\r
-}; /* CR_Katakana */\r
-\r
-/* 'Kharoshthi': Script */\r
-static const OnigCodePoint CR_Kharoshthi[] = {\r
-  8,\r
-  0x10a00, 0x10a03,\r
-  0x10a05, 0x10a06,\r
-  0x10a0c, 0x10a13,\r
-  0x10a15, 0x10a17,\r
-  0x10a19, 0x10a33,\r
-  0x10a38, 0x10a3a,\r
-  0x10a3f, 0x10a47,\r
-  0x10a50, 0x10a58\r
-}; /* CR_Kharoshthi */\r
-\r
-/* 'Khmer': Script */\r
-static const OnigCodePoint CR_Khmer[] = {\r
-  4,\r
-  0x1780, 0x17dd,\r
-  0x17e0, 0x17e9,\r
-  0x17f0, 0x17f9,\r
-  0x19e0, 0x19ff\r
-}; /* CR_Khmer */\r
-\r
-/* 'Lao': Script */\r
-static const OnigCodePoint CR_Lao[] = {\r
-  18,\r
-  0x0e81, 0x0e82,\r
-  0x0e84, 0x0e84,\r
-  0x0e87, 0x0e88,\r
-  0x0e8a, 0x0e8a,\r
-  0x0e8d, 0x0e8d,\r
-  0x0e94, 0x0e97,\r
-  0x0e99, 0x0e9f,\r
-  0x0ea1, 0x0ea3,\r
-  0x0ea5, 0x0ea5,\r
-  0x0ea7, 0x0ea7,\r
-  0x0eaa, 0x0eab,\r
-  0x0ead, 0x0eb9,\r
-  0x0ebb, 0x0ebd,\r
-  0x0ec0, 0x0ec4,\r
-  0x0ec6, 0x0ec6,\r
-  0x0ec8, 0x0ecd,\r
-  0x0ed0, 0x0ed9,\r
-  0x0edc, 0x0edd\r
-}; /* CR_Lao */\r
-\r
-/* 'Latin': Script */\r
-static const OnigCodePoint CR_Latin[] = {\r
-  23,\r
-  0x0041, 0x005a,\r
-  0x0061, 0x007a,\r
-  0x00aa, 0x00aa,\r
-  0x00ba, 0x00ba,\r
-  0x00c0, 0x00d6,\r
-  0x00d8, 0x00f6,\r
-  0x00f8, 0x0241,\r
-  0x0250, 0x02b8,\r
-  0x02e0, 0x02e4,\r
-  0x1d00, 0x1d25,\r
-  0x1d2c, 0x1d5c,\r
-  0x1d62, 0x1d65,\r
-  0x1d6b, 0x1d77,\r
-  0x1d79, 0x1dbf,\r
-  0x1e00, 0x1e9b,\r
-  0x1ea0, 0x1ef9,\r
-  0x2071, 0x2071,\r
-  0x207f, 0x207f,\r
-  0x2090, 0x2094,\r
-  0x212a, 0x212b,\r
-  0xfb00, 0xfb06,\r
-  0xff21, 0xff3a,\r
-  0xff41, 0xff5a\r
-}; /* CR_Latin */\r
-\r
-/* 'Limbu': Script */\r
-static const OnigCodePoint CR_Limbu[] = {\r
-  5,\r
-  0x1900, 0x191c,\r
-  0x1920, 0x192b,\r
-  0x1930, 0x193b,\r
-  0x1940, 0x1940,\r
-  0x1944, 0x194f\r
-}; /* CR_Limbu */\r
-\r
-/* 'Linear_B': Script */\r
-static const OnigCodePoint CR_Linear_B[] = {\r
-  7,\r
-  0x10000, 0x1000b,\r
-  0x1000d, 0x10026,\r
-  0x10028, 0x1003a,\r
-  0x1003c, 0x1003d,\r
-  0x1003f, 0x1004d,\r
-  0x10050, 0x1005d,\r
-  0x10080, 0x100fa\r
-}; /* CR_Linear_B */\r
-\r
-/* 'Malayalam': Script */\r
-static const OnigCodePoint CR_Malayalam[] = {\r
-  11,\r
-  0x0d02, 0x0d03,\r
-  0x0d05, 0x0d0c,\r
-  0x0d0e, 0x0d10,\r
-  0x0d12, 0x0d28,\r
-  0x0d2a, 0x0d39,\r
-  0x0d3e, 0x0d43,\r
-  0x0d46, 0x0d48,\r
-  0x0d4a, 0x0d4d,\r
-  0x0d57, 0x0d57,\r
-  0x0d60, 0x0d61,\r
-  0x0d66, 0x0d6f\r
-}; /* CR_Malayalam */\r
-\r
-/* 'Mongolian': Script */\r
-static const OnigCodePoint CR_Mongolian[] = {\r
-  4,\r
-  0x1800, 0x180e,\r
-  0x1810, 0x1819,\r
-  0x1820, 0x1877,\r
-  0x1880, 0x18a9\r
-}; /* CR_Mongolian */\r
-\r
-/* 'Myanmar': Script */\r
-static const OnigCodePoint CR_Myanmar[] = {\r
-  6,\r
-  0x1000, 0x1021,\r
-  0x1023, 0x1027,\r
-  0x1029, 0x102a,\r
-  0x102c, 0x1032,\r
-  0x1036, 0x1039,\r
-  0x1040, 0x1059\r
-}; /* CR_Myanmar */\r
-\r
-/* 'New_Tai_Lue': Script */\r
-static const OnigCodePoint CR_New_Tai_Lue[] = {\r
-  4,\r
-  0x1980, 0x19a9,\r
-  0x19b0, 0x19c9,\r
-  0x19d0, 0x19d9,\r
-  0x19de, 0x19df\r
-}; /* CR_New_Tai_Lue */\r
-\r
-/* 'Ogham': Script */\r
-static const OnigCodePoint CR_Ogham[] = {\r
-  1,\r
-  0x1680, 0x169c\r
-}; /* CR_Ogham */\r
-\r
-/* 'Old_Italic': Script */\r
-static const OnigCodePoint CR_Old_Italic[] = {\r
-  2,\r
-  0x10300, 0x1031e,\r
-  0x10320, 0x10323\r
-}; /* CR_Old_Italic */\r
-\r
-/* 'Old_Persian': Script */\r
-static const OnigCodePoint CR_Old_Persian[] = {\r
-  2,\r
-  0x103a0, 0x103c3,\r
-  0x103c8, 0x103d5\r
-}; /* CR_Old_Persian */\r
-\r
-/* 'Oriya': Script */\r
-static const OnigCodePoint CR_Oriya[] = {\r
-  14,\r
-  0x0b01, 0x0b03,\r
-  0x0b05, 0x0b0c,\r
-  0x0b0f, 0x0b10,\r
-  0x0b13, 0x0b28,\r
-  0x0b2a, 0x0b30,\r
-  0x0b32, 0x0b33,\r
-  0x0b35, 0x0b39,\r
-  0x0b3c, 0x0b43,\r
-  0x0b47, 0x0b48,\r
-  0x0b4b, 0x0b4d,\r
-  0x0b56, 0x0b57,\r
-  0x0b5c, 0x0b5d,\r
-  0x0b5f, 0x0b61,\r
-  0x0b66, 0x0b71\r
-}; /* CR_Oriya */\r
-\r
-/* 'Osmanya': Script */\r
-static const OnigCodePoint CR_Osmanya[] = {\r
-  2,\r
-  0x10480, 0x1049d,\r
-  0x104a0, 0x104a9\r
-}; /* CR_Osmanya */\r
-\r
-/* 'Runic': Script */\r
-static const OnigCodePoint CR_Runic[] = {\r
-  2,\r
-  0x16a0, 0x16ea,\r
-  0x16ee, 0x16f0\r
-}; /* CR_Runic */\r
-\r
-/* 'Shavian': Script */\r
-static const OnigCodePoint CR_Shavian[] = {\r
-  1,\r
-  0x10450, 0x1047f\r
-}; /* CR_Shavian */\r
-\r
-/* 'Sinhala': Script */\r
-static const OnigCodePoint CR_Sinhala[] = {\r
-  11,\r
-  0x0d82, 0x0d83,\r
-  0x0d85, 0x0d96,\r
-  0x0d9a, 0x0db1,\r
-  0x0db3, 0x0dbb,\r
-  0x0dbd, 0x0dbd,\r
-  0x0dc0, 0x0dc6,\r
-  0x0dca, 0x0dca,\r
-  0x0dcf, 0x0dd4,\r
-  0x0dd6, 0x0dd6,\r
-  0x0dd8, 0x0ddf,\r
-  0x0df2, 0x0df4\r
-}; /* CR_Sinhala */\r
-\r
-/* 'Syloti_Nagri': Script */\r
-static const OnigCodePoint CR_Syloti_Nagri[] = {\r
-  1,\r
-  0xa800, 0xa82b\r
-}; /* CR_Syloti_Nagri */\r
-\r
-/* 'Syriac': Script */\r
-static const OnigCodePoint CR_Syriac[] = {\r
-  3,\r
-  0x0700, 0x070d,\r
-  0x070f, 0x074a,\r
-  0x074d, 0x074f\r
-}; /* CR_Syriac */\r
-\r
-/* 'Tagalog': Script */\r
-static const OnigCodePoint CR_Tagalog[] = {\r
-  2,\r
-  0x1700, 0x170c,\r
-  0x170e, 0x1714\r
-}; /* CR_Tagalog */\r
-\r
-/* 'Tagbanwa': Script */\r
-static const OnigCodePoint CR_Tagbanwa[] = {\r
-  3,\r
-  0x1760, 0x176c,\r
-  0x176e, 0x1770,\r
-  0x1772, 0x1773\r
-}; /* CR_Tagbanwa */\r
-\r
-/* 'Tai_Le': Script */\r
-static const OnigCodePoint CR_Tai_Le[] = {\r
-  2,\r
-  0x1950, 0x196d,\r
-  0x1970, 0x1974\r
-}; /* CR_Tai_Le */\r
-\r
-/* 'Tamil': Script */\r
-static const OnigCodePoint CR_Tamil[] = {\r
-  15,\r
-  0x0b82, 0x0b83,\r
-  0x0b85, 0x0b8a,\r
-  0x0b8e, 0x0b90,\r
-  0x0b92, 0x0b95,\r
-  0x0b99, 0x0b9a,\r
-  0x0b9c, 0x0b9c,\r
-  0x0b9e, 0x0b9f,\r
-  0x0ba3, 0x0ba4,\r
-  0x0ba8, 0x0baa,\r
-  0x0bae, 0x0bb9,\r
-  0x0bbe, 0x0bc2,\r
-  0x0bc6, 0x0bc8,\r
-  0x0bca, 0x0bcd,\r
-  0x0bd7, 0x0bd7,\r
-  0x0be6, 0x0bfa\r
-}; /* CR_Tamil */\r
-\r
-/* 'Telugu': Script */\r
-static const OnigCodePoint CR_Telugu[] = {\r
-  12,\r
-  0x0c01, 0x0c03,\r
-  0x0c05, 0x0c0c,\r
-  0x0c0e, 0x0c10,\r
-  0x0c12, 0x0c28,\r
-  0x0c2a, 0x0c33,\r
-  0x0c35, 0x0c39,\r
-  0x0c3e, 0x0c44,\r
-  0x0c46, 0x0c48,\r
-  0x0c4a, 0x0c4d,\r
-  0x0c55, 0x0c56,\r
-  0x0c60, 0x0c61,\r
-  0x0c66, 0x0c6f\r
-}; /* CR_Telugu */\r
-\r
-/* 'Thaana': Script */\r
-static const OnigCodePoint CR_Thaana[] = {\r
-  1,\r
-  0x0780, 0x07b1\r
-}; /* CR_Thaana */\r
-\r
-/* 'Thai': Script */\r
-static const OnigCodePoint CR_Thai[] = {\r
-  2,\r
-  0x0e01, 0x0e3a,\r
-  0x0e40, 0x0e5b\r
-}; /* CR_Thai */\r
-\r
-/* 'Tibetan': Script */\r
-static const OnigCodePoint CR_Tibetan[] = {\r
-  7,\r
-  0x0f00, 0x0f47,\r
-  0x0f49, 0x0f6a,\r
-  0x0f71, 0x0f8b,\r
-  0x0f90, 0x0f97,\r
-  0x0f99, 0x0fbc,\r
-  0x0fbe, 0x0fcc,\r
-  0x0fcf, 0x0fd1\r
-}; /* CR_Tibetan */\r
-\r
-/* 'Tifinagh': Script */\r
-static const OnigCodePoint CR_Tifinagh[] = {\r
-  2,\r
-  0x2d30, 0x2d65,\r
-  0x2d6f, 0x2d6f\r
-}; /* CR_Tifinagh */\r
-\r
-/* 'Ugaritic': Script */\r
-static const OnigCodePoint CR_Ugaritic[] = {\r
-  2,\r
-  0x10380, 0x1039d,\r
-  0x1039f, 0x1039f\r
-}; /* CR_Ugaritic */\r
-\r
-/* 'Yi': Script */\r
-static const OnigCodePoint CR_Yi[] = {\r
-  2,\r
-  0xa000, 0xa48c,\r
-  0xa490, 0xa4c6\r
-}; /* CR_Yi */\r
-\r
-\r
-#endif /* USE_UNICODE_PROPERTIES */\r
-\r
-\r
-typedef struct {\r
-  int n;\r
-  OnigCodePoint code[3];\r
-} CodePointList3;\r
-\r
-typedef struct {\r
-  OnigCodePoint  from;\r
-  CodePointList3 to;\r
-} CaseFold_11_Type;\r
-\r
-typedef struct {\r
-  OnigCodePoint  from;\r
-  CodePointList3 to;\r
-} CaseUnfold_11_Type;\r
-\r
-typedef struct {\r
-  int n;\r
-  OnigCodePoint code[2];\r
-} CodePointList2;\r
-\r
-typedef struct {\r
-  OnigCodePoint  from[2];\r
-  CodePointList2 to;\r
-} CaseUnfold_12_Type;\r
-\r
-typedef struct {\r
-  OnigCodePoint  from[3];\r
-  CodePointList2 to;\r
-} CaseUnfold_13_Type;\r
-\r
-static const CaseFold_11_Type CaseFold[] = {\r
- { 0x0041, {1, {0x0061}}},\r
- { 0x0042, {1, {0x0062}}},\r
- { 0x0043, {1, {0x0063}}},\r
- { 0x0044, {1, {0x0064}}},\r
- { 0x0045, {1, {0x0065}}},\r
- { 0x0046, {1, {0x0066}}},\r
- { 0x0047, {1, {0x0067}}},\r
- { 0x0048, {1, {0x0068}}},\r
- { 0x004a, {1, {0x006a}}},\r
- { 0x004b, {1, {0x006b}}},\r
- { 0x004c, {1, {0x006c}}},\r
- { 0x004d, {1, {0x006d}}},\r
- { 0x004e, {1, {0x006e}}},\r
- { 0x004f, {1, {0x006f}}},\r
- { 0x0050, {1, {0x0070}}},\r
- { 0x0051, {1, {0x0071}}},\r
- { 0x0052, {1, {0x0072}}},\r
- { 0x0053, {1, {0x0073}}},\r
- { 0x0054, {1, {0x0074}}},\r
- { 0x0055, {1, {0x0075}}},\r
- { 0x0056, {1, {0x0076}}},\r
- { 0x0057, {1, {0x0077}}},\r
- { 0x0058, {1, {0x0078}}},\r
- { 0x0059, {1, {0x0079}}},\r
- { 0x005a, {1, {0x007a}}},\r
- { 0x00b5, {1, {0x03bc}}},\r
- { 0x00c0, {1, {0x00e0}}},\r
- { 0x00c1, {1, {0x00e1}}},\r
- { 0x00c2, {1, {0x00e2}}},\r
- { 0x00c3, {1, {0x00e3}}},\r
- { 0x00c4, {1, {0x00e4}}},\r
- { 0x00c5, {1, {0x00e5}}},\r
- { 0x00c6, {1, {0x00e6}}},\r
- { 0x00c7, {1, {0x00e7}}},\r
- { 0x00c8, {1, {0x00e8}}},\r
- { 0x00c9, {1, {0x00e9}}},\r
- { 0x00ca, {1, {0x00ea}}},\r
- { 0x00cb, {1, {0x00eb}}},\r
- { 0x00cc, {1, {0x00ec}}},\r
- { 0x00cd, {1, {0x00ed}}},\r
- { 0x00ce, {1, {0x00ee}}},\r
- { 0x00cf, {1, {0x00ef}}},\r
- { 0x00d0, {1, {0x00f0}}},\r
- { 0x00d1, {1, {0x00f1}}},\r
- { 0x00d2, {1, {0x00f2}}},\r
- { 0x00d3, {1, {0x00f3}}},\r
- { 0x00d4, {1, {0x00f4}}},\r
- { 0x00d5, {1, {0x00f5}}},\r
- { 0x00d6, {1, {0x00f6}}},\r
- { 0x00d8, {1, {0x00f8}}},\r
- { 0x00d9, {1, {0x00f9}}},\r
- { 0x00da, {1, {0x00fa}}},\r
- { 0x00db, {1, {0x00fb}}},\r
- { 0x00dc, {1, {0x00fc}}},\r
- { 0x00dd, {1, {0x00fd}}},\r
- { 0x00de, {1, {0x00fe}}},\r
- { 0x00df, {2, {0x0073, 0x0073}}},\r
- { 0x0100, {1, {0x0101}}},\r
- { 0x0102, {1, {0x0103}}},\r
- { 0x0104, {1, {0x0105}}},\r
- { 0x0106, {1, {0x0107}}},\r
- { 0x0108, {1, {0x0109}}},\r
- { 0x010a, {1, {0x010b}}},\r
- { 0x010c, {1, {0x010d}}},\r
- { 0x010e, {1, {0x010f}}},\r
- { 0x0110, {1, {0x0111}}},\r
- { 0x0112, {1, {0x0113}}},\r
- { 0x0114, {1, {0x0115}}},\r
- { 0x0116, {1, {0x0117}}},\r
- { 0x0118, {1, {0x0119}}},\r
- { 0x011a, {1, {0x011b}}},\r
- { 0x011c, {1, {0x011d}}},\r
- { 0x011e, {1, {0x011f}}},\r
- { 0x0120, {1, {0x0121}}},\r
- { 0x0122, {1, {0x0123}}},\r
- { 0x0124, {1, {0x0125}}},\r
- { 0x0126, {1, {0x0127}}},\r
- { 0x0128, {1, {0x0129}}},\r
- { 0x012a, {1, {0x012b}}},\r
- { 0x012c, {1, {0x012d}}},\r
- { 0x012e, {1, {0x012f}}},\r
- { 0x0132, {1, {0x0133}}},\r
- { 0x0134, {1, {0x0135}}},\r
- { 0x0136, {1, {0x0137}}},\r
- { 0x0139, {1, {0x013a}}},\r
- { 0x013b, {1, {0x013c}}},\r
- { 0x013d, {1, {0x013e}}},\r
- { 0x013f, {1, {0x0140}}},\r
- { 0x0141, {1, {0x0142}}},\r
- { 0x0143, {1, {0x0144}}},\r
- { 0x0145, {1, {0x0146}}},\r
- { 0x0147, {1, {0x0148}}},\r
- { 0x0149, {2, {0x02bc, 0x006e}}},\r
- { 0x014a, {1, {0x014b}}},\r
- { 0x014c, {1, {0x014d}}},\r
- { 0x014e, {1, {0x014f}}},\r
- { 0x0150, {1, {0x0151}}},\r
- { 0x0152, {1, {0x0153}}},\r
- { 0x0154, {1, {0x0155}}},\r
- { 0x0156, {1, {0x0157}}},\r
- { 0x0158, {1, {0x0159}}},\r
- { 0x015a, {1, {0x015b}}},\r
- { 0x015c, {1, {0x015d}}},\r
- { 0x015e, {1, {0x015f}}},\r
- { 0x0160, {1, {0x0161}}},\r
- { 0x0162, {1, {0x0163}}},\r
- { 0x0164, {1, {0x0165}}},\r
- { 0x0166, {1, {0x0167}}},\r
- { 0x0168, {1, {0x0169}}},\r
- { 0x016a, {1, {0x016b}}},\r
- { 0x016c, {1, {0x016d}}},\r
- { 0x016e, {1, {0x016f}}},\r
- { 0x0170, {1, {0x0171}}},\r
- { 0x0172, {1, {0x0173}}},\r
- { 0x0174, {1, {0x0175}}},\r
- { 0x0176, {1, {0x0177}}},\r
- { 0x0178, {1, {0x00ff}}},\r
- { 0x0179, {1, {0x017a}}},\r
- { 0x017b, {1, {0x017c}}},\r
- { 0x017d, {1, {0x017e}}},\r
- { 0x017f, {1, {0x0073}}},\r
- { 0x0181, {1, {0x0253}}},\r
- { 0x0182, {1, {0x0183}}},\r
- { 0x0184, {1, {0x0185}}},\r
- { 0x0186, {1, {0x0254}}},\r
- { 0x0187, {1, {0x0188}}},\r
- { 0x0189, {1, {0x0256}}},\r
- { 0x018a, {1, {0x0257}}},\r
- { 0x018b, {1, {0x018c}}},\r
- { 0x018e, {1, {0x01dd}}},\r
- { 0x018f, {1, {0x0259}}},\r
- { 0x0190, {1, {0x025b}}},\r
- { 0x0191, {1, {0x0192}}},\r
- { 0x0193, {1, {0x0260}}},\r
- { 0x0194, {1, {0x0263}}},\r
- { 0x0196, {1, {0x0269}}},\r
- { 0x0197, {1, {0x0268}}},\r
- { 0x0198, {1, {0x0199}}},\r
- { 0x019c, {1, {0x026f}}},\r
- { 0x019d, {1, {0x0272}}},\r
- { 0x019f, {1, {0x0275}}},\r
- { 0x01a0, {1, {0x01a1}}},\r
- { 0x01a2, {1, {0x01a3}}},\r
- { 0x01a4, {1, {0x01a5}}},\r
- { 0x01a6, {1, {0x0280}}},\r
- { 0x01a7, {1, {0x01a8}}},\r
- { 0x01a9, {1, {0x0283}}},\r
- { 0x01ac, {1, {0x01ad}}},\r
- { 0x01ae, {1, {0x0288}}},\r
- { 0x01af, {1, {0x01b0}}},\r
- { 0x01b1, {1, {0x028a}}},\r
- { 0x01b2, {1, {0x028b}}},\r
- { 0x01b3, {1, {0x01b4}}},\r
- { 0x01b5, {1, {0x01b6}}},\r
- { 0x01b7, {1, {0x0292}}},\r
- { 0x01b8, {1, {0x01b9}}},\r
- { 0x01bc, {1, {0x01bd}}},\r
- { 0x01c4, {1, {0x01c6}}},\r
- { 0x01c5, {1, {0x01c6}}},\r
- { 0x01c7, {1, {0x01c9}}},\r
- { 0x01c8, {1, {0x01c9}}},\r
- { 0x01ca, {1, {0x01cc}}},\r
- { 0x01cb, {1, {0x01cc}}},\r
- { 0x01cd, {1, {0x01ce}}},\r
- { 0x01cf, {1, {0x01d0}}},\r
- { 0x01d1, {1, {0x01d2}}},\r
- { 0x01d3, {1, {0x01d4}}},\r
- { 0x01d5, {1, {0x01d6}}},\r
- { 0x01d7, {1, {0x01d8}}},\r
- { 0x01d9, {1, {0x01da}}},\r
- { 0x01db, {1, {0x01dc}}},\r
- { 0x01de, {1, {0x01df}}},\r
- { 0x01e0, {1, {0x01e1}}},\r
- { 0x01e2, {1, {0x01e3}}},\r
- { 0x01e4, {1, {0x01e5}}},\r
- { 0x01e6, {1, {0x01e7}}},\r
- { 0x01e8, {1, {0x01e9}}},\r
- { 0x01ea, {1, {0x01eb}}},\r
- { 0x01ec, {1, {0x01ed}}},\r
- { 0x01ee, {1, {0x01ef}}},\r
- { 0x01f0, {2, {0x006a, 0x030c}}},\r
- { 0x01f1, {1, {0x01f3}}},\r
- { 0x01f2, {1, {0x01f3}}},\r
- { 0x01f4, {1, {0x01f5}}},\r
- { 0x01f6, {1, {0x0195}}},\r
- { 0x01f7, {1, {0x01bf}}},\r
- { 0x01f8, {1, {0x01f9}}},\r
- { 0x01fa, {1, {0x01fb}}},\r
- { 0x01fc, {1, {0x01fd}}},\r
- { 0x01fe, {1, {0x01ff}}},\r
- { 0x0200, {1, {0x0201}}},\r
- { 0x0202, {1, {0x0203}}},\r
- { 0x0204, {1, {0x0205}}},\r
- { 0x0206, {1, {0x0207}}},\r
- { 0x0208, {1, {0x0209}}},\r
- { 0x020a, {1, {0x020b}}},\r
- { 0x020c, {1, {0x020d}}},\r
- { 0x020e, {1, {0x020f}}},\r
- { 0x0210, {1, {0x0211}}},\r
- { 0x0212, {1, {0x0213}}},\r
- { 0x0214, {1, {0x0215}}},\r
- { 0x0216, {1, {0x0217}}},\r
- { 0x0218, {1, {0x0219}}},\r
- { 0x021a, {1, {0x021b}}},\r
- { 0x021c, {1, {0x021d}}},\r
- { 0x021e, {1, {0x021f}}},\r
- { 0x0220, {1, {0x019e}}},\r
- { 0x0222, {1, {0x0223}}},\r
- { 0x0224, {1, {0x0225}}},\r
- { 0x0226, {1, {0x0227}}},\r
- { 0x0228, {1, {0x0229}}},\r
- { 0x022a, {1, {0x022b}}},\r
- { 0x022c, {1, {0x022d}}},\r
- { 0x022e, {1, {0x022f}}},\r
- { 0x0230, {1, {0x0231}}},\r
- { 0x0232, {1, {0x0233}}},\r
- { 0x023b, {1, {0x023c}}},\r
- { 0x023d, {1, {0x019a}}},\r
- { 0x0241, {1, {0x0294}}},\r
- { 0x0345, {1, {0x03b9}}},\r
- { 0x0386, {1, {0x03ac}}},\r
- { 0x0388, {1, {0x03ad}}},\r
- { 0x0389, {1, {0x03ae}}},\r
- { 0x038a, {1, {0x03af}}},\r
- { 0x038c, {1, {0x03cc}}},\r
- { 0x038e, {1, {0x03cd}}},\r
- { 0x038f, {1, {0x03ce}}},\r
- { 0x0390, {3, {0x03b9, 0x0308, 0x0301}}},\r
- { 0x0391, {1, {0x03b1}}},\r
- { 0x0392, {1, {0x03b2}}},\r
- { 0x0393, {1, {0x03b3}}},\r
- { 0x0394, {1, {0x03b4}}},\r
- { 0x0395, {1, {0x03b5}}},\r
- { 0x0396, {1, {0x03b6}}},\r
- { 0x0397, {1, {0x03b7}}},\r
- { 0x0398, {1, {0x03b8}}},\r
- { 0x0399, {1, {0x03b9}}},\r
- { 0x039a, {1, {0x03ba}}},\r
- { 0x039b, {1, {0x03bb}}},\r
- { 0x039c, {1, {0x03bc}}},\r
- { 0x039d, {1, {0x03bd}}},\r
- { 0x039e, {1, {0x03be}}},\r
- { 0x039f, {1, {0x03bf}}},\r
- { 0x03a0, {1, {0x03c0}}},\r
- { 0x03a1, {1, {0x03c1}}},\r
- { 0x03a3, {1, {0x03c3}}},\r
- { 0x03a4, {1, {0x03c4}}},\r
- { 0x03a5, {1, {0x03c5}}},\r
- { 0x03a6, {1, {0x03c6}}},\r
- { 0x03a7, {1, {0x03c7}}},\r
- { 0x03a8, {1, {0x03c8}}},\r
- { 0x03a9, {1, {0x03c9}}},\r
- { 0x03aa, {1, {0x03ca}}},\r
- { 0x03ab, {1, {0x03cb}}},\r
- { 0x03b0, {3, {0x03c5, 0x0308, 0x0301}}},\r
- { 0x03c2, {1, {0x03c3}}},\r
- { 0x03d0, {1, {0x03b2}}},\r
- { 0x03d1, {1, {0x03b8}}},\r
- { 0x03d5, {1, {0x03c6}}},\r
- { 0x03d6, {1, {0x03c0}}},\r
- { 0x03d8, {1, {0x03d9}}},\r
- { 0x03da, {1, {0x03db}}},\r
- { 0x03dc, {1, {0x03dd}}},\r
- { 0x03de, {1, {0x03df}}},\r
- { 0x03e0, {1, {0x03e1}}},\r
- { 0x03e2, {1, {0x03e3}}},\r
- { 0x03e4, {1, {0x03e5}}},\r
- { 0x03e6, {1, {0x03e7}}},\r
- { 0x03e8, {1, {0x03e9}}},\r
- { 0x03ea, {1, {0x03eb}}},\r
- { 0x03ec, {1, {0x03ed}}},\r
- { 0x03ee, {1, {0x03ef}}},\r
- { 0x03f0, {1, {0x03ba}}},\r
- { 0x03f1, {1, {0x03c1}}},\r
- { 0x03f4, {1, {0x03b8}}},\r
- { 0x03f5, {1, {0x03b5}}},\r
- { 0x03f7, {1, {0x03f8}}},\r
- { 0x03f9, {1, {0x03f2}}},\r
- { 0x03fa, {1, {0x03fb}}},\r
- { 0x0400, {1, {0x0450}}},\r
- { 0x0401, {1, {0x0451}}},\r
- { 0x0402, {1, {0x0452}}},\r
- { 0x0403, {1, {0x0453}}},\r
- { 0x0404, {1, {0x0454}}},\r
- { 0x0405, {1, {0x0455}}},\r
- { 0x0406, {1, {0x0456}}},\r
- { 0x0407, {1, {0x0457}}},\r
- { 0x0408, {1, {0x0458}}},\r
- { 0x0409, {1, {0x0459}}},\r
- { 0x040a, {1, {0x045a}}},\r
- { 0x040b, {1, {0x045b}}},\r
- { 0x040c, {1, {0x045c}}},\r
- { 0x040d, {1, {0x045d}}},\r
- { 0x040e, {1, {0x045e}}},\r
- { 0x040f, {1, {0x045f}}},\r
- { 0x0410, {1, {0x0430}}},\r
- { 0x0411, {1, {0x0431}}},\r
- { 0x0412, {1, {0x0432}}},\r
- { 0x0413, {1, {0x0433}}},\r
- { 0x0414, {1, {0x0434}}},\r
- { 0x0415, {1, {0x0435}}},\r
- { 0x0416, {1, {0x0436}}},\r
- { 0x0417, {1, {0x0437}}},\r
- { 0x0418, {1, {0x0438}}},\r
- { 0x0419, {1, {0x0439}}},\r
- { 0x041a, {1, {0x043a}}},\r
- { 0x041b, {1, {0x043b}}},\r
- { 0x041c, {1, {0x043c}}},\r
- { 0x041d, {1, {0x043d}}},\r
- { 0x041e, {1, {0x043e}}},\r
- { 0x041f, {1, {0x043f}}},\r
- { 0x0420, {1, {0x0440}}},\r
- { 0x0421, {1, {0x0441}}},\r
- { 0x0422, {1, {0x0442}}},\r
- { 0x0423, {1, {0x0443}}},\r
- { 0x0424, {1, {0x0444}}},\r
- { 0x0425, {1, {0x0445}}},\r
- { 0x0426, {1, {0x0446}}},\r
- { 0x0427, {1, {0x0447}}},\r
- { 0x0428, {1, {0x0448}}},\r
- { 0x0429, {1, {0x0449}}},\r
- { 0x042a, {1, {0x044a}}},\r
- { 0x042b, {1, {0x044b}}},\r
- { 0x042c, {1, {0x044c}}},\r
- { 0x042d, {1, {0x044d}}},\r
- { 0x042e, {1, {0x044e}}},\r
- { 0x042f, {1, {0x044f}}},\r
- { 0x0460, {1, {0x0461}}},\r
- { 0x0462, {1, {0x0463}}},\r
- { 0x0464, {1, {0x0465}}},\r
- { 0x0466, {1, {0x0467}}},\r
- { 0x0468, {1, {0x0469}}},\r
- { 0x046a, {1, {0x046b}}},\r
- { 0x046c, {1, {0x046d}}},\r
- { 0x046e, {1, {0x046f}}},\r
- { 0x0470, {1, {0x0471}}},\r
- { 0x0472, {1, {0x0473}}},\r
- { 0x0474, {1, {0x0475}}},\r
- { 0x0476, {1, {0x0477}}},\r
- { 0x0478, {1, {0x0479}}},\r
- { 0x047a, {1, {0x047b}}},\r
- { 0x047c, {1, {0x047d}}},\r
- { 0x047e, {1, {0x047f}}},\r
- { 0x0480, {1, {0x0481}}},\r
- { 0x048a, {1, {0x048b}}},\r
- { 0x048c, {1, {0x048d}}},\r
- { 0x048e, {1, {0x048f}}},\r
- { 0x0490, {1, {0x0491}}},\r
- { 0x0492, {1, {0x0493}}},\r
- { 0x0494, {1, {0x0495}}},\r
- { 0x0496, {1, {0x0497}}},\r
- { 0x0498, {1, {0x0499}}},\r
- { 0x049a, {1, {0x049b}}},\r
- { 0x049c, {1, {0x049d}}},\r
- { 0x049e, {1, {0x049f}}},\r
- { 0x04a0, {1, {0x04a1}}},\r
- { 0x04a2, {1, {0x04a3}}},\r
- { 0x04a4, {1, {0x04a5}}},\r
- { 0x04a6, {1, {0x04a7}}},\r
- { 0x04a8, {1, {0x04a9}}},\r
- { 0x04aa, {1, {0x04ab}}},\r
- { 0x04ac, {1, {0x04ad}}},\r
- { 0x04ae, {1, {0x04af}}},\r
- { 0x04b0, {1, {0x04b1}}},\r
- { 0x04b2, {1, {0x04b3}}},\r
- { 0x04b4, {1, {0x04b5}}},\r
- { 0x04b6, {1, {0x04b7}}},\r
- { 0x04b8, {1, {0x04b9}}},\r
- { 0x04ba, {1, {0x04bb}}},\r
- { 0x04bc, {1, {0x04bd}}},\r
- { 0x04be, {1, {0x04bf}}},\r
- { 0x04c1, {1, {0x04c2}}},\r
- { 0x04c3, {1, {0x04c4}}},\r
- { 0x04c5, {1, {0x04c6}}},\r
- { 0x04c7, {1, {0x04c8}}},\r
- { 0x04c9, {1, {0x04ca}}},\r
- { 0x04cb, {1, {0x04cc}}},\r
- { 0x04cd, {1, {0x04ce}}},\r
- { 0x04d0, {1, {0x04d1}}},\r
- { 0x04d2, {1, {0x04d3}}},\r
- { 0x04d4, {1, {0x04d5}}},\r
- { 0x04d6, {1, {0x04d7}}},\r
- { 0x04d8, {1, {0x04d9}}},\r
- { 0x04da, {1, {0x04db}}},\r
- { 0x04dc, {1, {0x04dd}}},\r
- { 0x04de, {1, {0x04df}}},\r
- { 0x04e0, {1, {0x04e1}}},\r
- { 0x04e2, {1, {0x04e3}}},\r
- { 0x04e4, {1, {0x04e5}}},\r
- { 0x04e6, {1, {0x04e7}}},\r
- { 0x04e8, {1, {0x04e9}}},\r
- { 0x04ea, {1, {0x04eb}}},\r
- { 0x04ec, {1, {0x04ed}}},\r
- { 0x04ee, {1, {0x04ef}}},\r
- { 0x04f0, {1, {0x04f1}}},\r
- { 0x04f2, {1, {0x04f3}}},\r
- { 0x04f4, {1, {0x04f5}}},\r
- { 0x04f6, {1, {0x04f7}}},\r
- { 0x04f8, {1, {0x04f9}}},\r
- { 0x0500, {1, {0x0501}}},\r
- { 0x0502, {1, {0x0503}}},\r
- { 0x0504, {1, {0x0505}}},\r
- { 0x0506, {1, {0x0507}}},\r
- { 0x0508, {1, {0x0509}}},\r
- { 0x050a, {1, {0x050b}}},\r
- { 0x050c, {1, {0x050d}}},\r
- { 0x050e, {1, {0x050f}}},\r
- { 0x0531, {1, {0x0561}}},\r
- { 0x0532, {1, {0x0562}}},\r
- { 0x0533, {1, {0x0563}}},\r
- { 0x0534, {1, {0x0564}}},\r
- { 0x0535, {1, {0x0565}}},\r
- { 0x0536, {1, {0x0566}}},\r
- { 0x0537, {1, {0x0567}}},\r
- { 0x0538, {1, {0x0568}}},\r
- { 0x0539, {1, {0x0569}}},\r
- { 0x053a, {1, {0x056a}}},\r
- { 0x053b, {1, {0x056b}}},\r
- { 0x053c, {1, {0x056c}}},\r
- { 0x053d, {1, {0x056d}}},\r
- { 0x053e, {1, {0x056e}}},\r
- { 0x053f, {1, {0x056f}}},\r
- { 0x0540, {1, {0x0570}}},\r
- { 0x0541, {1, {0x0571}}},\r
- { 0x0542, {1, {0x0572}}},\r
- { 0x0543, {1, {0x0573}}},\r
- { 0x0544, {1, {0x0574}}},\r
- { 0x0545, {1, {0x0575}}},\r
- { 0x0546, {1, {0x0576}}},\r
- { 0x0547, {1, {0x0577}}},\r
- { 0x0548, {1, {0x0578}}},\r
- { 0x0549, {1, {0x0579}}},\r
- { 0x054a, {1, {0x057a}}},\r
- { 0x054b, {1, {0x057b}}},\r
- { 0x054c, {1, {0x057c}}},\r
- { 0x054d, {1, {0x057d}}},\r
- { 0x054e, {1, {0x057e}}},\r
- { 0x054f, {1, {0x057f}}},\r
- { 0x0550, {1, {0x0580}}},\r
- { 0x0551, {1, {0x0581}}},\r
- { 0x0552, {1, {0x0582}}},\r
- { 0x0553, {1, {0x0583}}},\r
- { 0x0554, {1, {0x0584}}},\r
- { 0x0555, {1, {0x0585}}},\r
- { 0x0556, {1, {0x0586}}},\r
- { 0x0587, {2, {0x0565, 0x0582}}},\r
- { 0x10a0, {1, {0x2d00}}},\r
- { 0x10a1, {1, {0x2d01}}},\r
- { 0x10a2, {1, {0x2d02}}},\r
- { 0x10a3, {1, {0x2d03}}},\r
- { 0x10a4, {1, {0x2d04}}},\r
- { 0x10a5, {1, {0x2d05}}},\r
- { 0x10a6, {1, {0x2d06}}},\r
- { 0x10a7, {1, {0x2d07}}},\r
- { 0x10a8, {1, {0x2d08}}},\r
- { 0x10a9, {1, {0x2d09}}},\r
- { 0x10aa, {1, {0x2d0a}}},\r
- { 0x10ab, {1, {0x2d0b}}},\r
- { 0x10ac, {1, {0x2d0c}}},\r
- { 0x10ad, {1, {0x2d0d}}},\r
- { 0x10ae, {1, {0x2d0e}}},\r
- { 0x10af, {1, {0x2d0f}}},\r
- { 0x10b0, {1, {0x2d10}}},\r
- { 0x10b1, {1, {0x2d11}}},\r
- { 0x10b2, {1, {0x2d12}}},\r
- { 0x10b3, {1, {0x2d13}}},\r
- { 0x10b4, {1, {0x2d14}}},\r
- { 0x10b5, {1, {0x2d15}}},\r
- { 0x10b6, {1, {0x2d16}}},\r
- { 0x10b7, {1, {0x2d17}}},\r
- { 0x10b8, {1, {0x2d18}}},\r
- { 0x10b9, {1, {0x2d19}}},\r
- { 0x10ba, {1, {0x2d1a}}},\r
- { 0x10bb, {1, {0x2d1b}}},\r
- { 0x10bc, {1, {0x2d1c}}},\r
- { 0x10bd, {1, {0x2d1d}}},\r
- { 0x10be, {1, {0x2d1e}}},\r
- { 0x10bf, {1, {0x2d1f}}},\r
- { 0x10c0, {1, {0x2d20}}},\r
- { 0x10c1, {1, {0x2d21}}},\r
- { 0x10c2, {1, {0x2d22}}},\r
- { 0x10c3, {1, {0x2d23}}},\r
- { 0x10c4, {1, {0x2d24}}},\r
- { 0x10c5, {1, {0x2d25}}},\r
- { 0x1e00, {1, {0x1e01}}},\r
- { 0x1e02, {1, {0x1e03}}},\r
- { 0x1e04, {1, {0x1e05}}},\r
- { 0x1e06, {1, {0x1e07}}},\r
- { 0x1e08, {1, {0x1e09}}},\r
- { 0x1e0a, {1, {0x1e0b}}},\r
- { 0x1e0c, {1, {0x1e0d}}},\r
- { 0x1e0e, {1, {0x1e0f}}},\r
- { 0x1e10, {1, {0x1e11}}},\r
- { 0x1e12, {1, {0x1e13}}},\r
- { 0x1e14, {1, {0x1e15}}},\r
- { 0x1e16, {1, {0x1e17}}},\r
- { 0x1e18, {1, {0x1e19}}},\r
- { 0x1e1a, {1, {0x1e1b}}},\r
- { 0x1e1c, {1, {0x1e1d}}},\r
- { 0x1e1e, {1, {0x1e1f}}},\r
- { 0x1e20, {1, {0x1e21}}},\r
- { 0x1e22, {1, {0x1e23}}},\r
- { 0x1e24, {1, {0x1e25}}},\r
- { 0x1e26, {1, {0x1e27}}},\r
- { 0x1e28, {1, {0x1e29}}},\r
- { 0x1e2a, {1, {0x1e2b}}},\r
- { 0x1e2c, {1, {0x1e2d}}},\r
- { 0x1e2e, {1, {0x1e2f}}},\r
- { 0x1e30, {1, {0x1e31}}},\r
- { 0x1e32, {1, {0x1e33}}},\r
- { 0x1e34, {1, {0x1e35}}},\r
- { 0x1e36, {1, {0x1e37}}},\r
- { 0x1e38, {1, {0x1e39}}},\r
- { 0x1e3a, {1, {0x1e3b}}},\r
- { 0x1e3c, {1, {0x1e3d}}},\r
- { 0x1e3e, {1, {0x1e3f}}},\r
- { 0x1e40, {1, {0x1e41}}},\r
- { 0x1e42, {1, {0x1e43}}},\r
- { 0x1e44, {1, {0x1e45}}},\r
- { 0x1e46, {1, {0x1e47}}},\r
- { 0x1e48, {1, {0x1e49}}},\r
- { 0x1e4a, {1, {0x1e4b}}},\r
- { 0x1e4c, {1, {0x1e4d}}},\r
- { 0x1e4e, {1, {0x1e4f}}},\r
- { 0x1e50, {1, {0x1e51}}},\r
- { 0x1e52, {1, {0x1e53}}},\r
- { 0x1e54, {1, {0x1e55}}},\r
- { 0x1e56, {1, {0x1e57}}},\r
- { 0x1e58, {1, {0x1e59}}},\r
- { 0x1e5a, {1, {0x1e5b}}},\r
- { 0x1e5c, {1, {0x1e5d}}},\r
- { 0x1e5e, {1, {0x1e5f}}},\r
- { 0x1e60, {1, {0x1e61}}},\r
- { 0x1e62, {1, {0x1e63}}},\r
- { 0x1e64, {1, {0x1e65}}},\r
- { 0x1e66, {1, {0x1e67}}},\r
- { 0x1e68, {1, {0x1e69}}},\r
- { 0x1e6a, {1, {0x1e6b}}},\r
- { 0x1e6c, {1, {0x1e6d}}},\r
- { 0x1e6e, {1, {0x1e6f}}},\r
- { 0x1e70, {1, {0x1e71}}},\r
- { 0x1e72, {1, {0x1e73}}},\r
- { 0x1e74, {1, {0x1e75}}},\r
- { 0x1e76, {1, {0x1e77}}},\r
- { 0x1e78, {1, {0x1e79}}},\r
- { 0x1e7a, {1, {0x1e7b}}},\r
- { 0x1e7c, {1, {0x1e7d}}},\r
- { 0x1e7e, {1, {0x1e7f}}},\r
- { 0x1e80, {1, {0x1e81}}},\r
- { 0x1e82, {1, {0x1e83}}},\r
- { 0x1e84, {1, {0x1e85}}},\r
- { 0x1e86, {1, {0x1e87}}},\r
- { 0x1e88, {1, {0x1e89}}},\r
- { 0x1e8a, {1, {0x1e8b}}},\r
- { 0x1e8c, {1, {0x1e8d}}},\r
- { 0x1e8e, {1, {0x1e8f}}},\r
- { 0x1e90, {1, {0x1e91}}},\r
- { 0x1e92, {1, {0x1e93}}},\r
- { 0x1e94, {1, {0x1e95}}},\r
- { 0x1e96, {2, {0x0068, 0x0331}}},\r
- { 0x1e97, {2, {0x0074, 0x0308}}},\r
- { 0x1e98, {2, {0x0077, 0x030a}}},\r
- { 0x1e99, {2, {0x0079, 0x030a}}},\r
- { 0x1e9a, {2, {0x0061, 0x02be}}},\r
- { 0x1e9b, {1, {0x1e61}}},\r
- { 0x1ea0, {1, {0x1ea1}}},\r
- { 0x1ea2, {1, {0x1ea3}}},\r
- { 0x1ea4, {1, {0x1ea5}}},\r
- { 0x1ea6, {1, {0x1ea7}}},\r
- { 0x1ea8, {1, {0x1ea9}}},\r
- { 0x1eaa, {1, {0x1eab}}},\r
- { 0x1eac, {1, {0x1ead}}},\r
- { 0x1eae, {1, {0x1eaf}}},\r
- { 0x1eb0, {1, {0x1eb1}}},\r
- { 0x1eb2, {1, {0x1eb3}}},\r
- { 0x1eb4, {1, {0x1eb5}}},\r
- { 0x1eb6, {1, {0x1eb7}}},\r
- { 0x1eb8, {1, {0x1eb9}}},\r
- { 0x1eba, {1, {0x1ebb}}},\r
- { 0x1ebc, {1, {0x1ebd}}},\r
- { 0x1ebe, {1, {0x1ebf}}},\r
- { 0x1ec0, {1, {0x1ec1}}},\r
- { 0x1ec2, {1, {0x1ec3}}},\r
- { 0x1ec4, {1, {0x1ec5}}},\r
- { 0x1ec6, {1, {0x1ec7}}},\r
- { 0x1ec8, {1, {0x1ec9}}},\r
- { 0x1eca, {1, {0x1ecb}}},\r
- { 0x1ecc, {1, {0x1ecd}}},\r
- { 0x1ece, {1, {0x1ecf}}},\r
- { 0x1ed0, {1, {0x1ed1}}},\r
- { 0x1ed2, {1, {0x1ed3}}},\r
- { 0x1ed4, {1, {0x1ed5}}},\r
- { 0x1ed6, {1, {0x1ed7}}},\r
- { 0x1ed8, {1, {0x1ed9}}},\r
- { 0x1eda, {1, {0x1edb}}},\r
- { 0x1edc, {1, {0x1edd}}},\r
- { 0x1ede, {1, {0x1edf}}},\r
- { 0x1ee0, {1, {0x1ee1}}},\r
- { 0x1ee2, {1, {0x1ee3}}},\r
- { 0x1ee4, {1, {0x1ee5}}},\r
- { 0x1ee6, {1, {0x1ee7}}},\r
- { 0x1ee8, {1, {0x1ee9}}},\r
- { 0x1eea, {1, {0x1eeb}}},\r
- { 0x1eec, {1, {0x1eed}}},\r
- { 0x1eee, {1, {0x1eef}}},\r
- { 0x1ef0, {1, {0x1ef1}}},\r
- { 0x1ef2, {1, {0x1ef3}}},\r
- { 0x1ef4, {1, {0x1ef5}}},\r
- { 0x1ef6, {1, {0x1ef7}}},\r
- { 0x1ef8, {1, {0x1ef9}}},\r
- { 0x1f08, {1, {0x1f00}}},\r
- { 0x1f09, {1, {0x1f01}}},\r
- { 0x1f0a, {1, {0x1f02}}},\r
- { 0x1f0b, {1, {0x1f03}}},\r
- { 0x1f0c, {1, {0x1f04}}},\r
- { 0x1f0d, {1, {0x1f05}}},\r
- { 0x1f0e, {1, {0x1f06}}},\r
- { 0x1f0f, {1, {0x1f07}}},\r
- { 0x1f18, {1, {0x1f10}}},\r
- { 0x1f19, {1, {0x1f11}}},\r
- { 0x1f1a, {1, {0x1f12}}},\r
- { 0x1f1b, {1, {0x1f13}}},\r
- { 0x1f1c, {1, {0x1f14}}},\r
- { 0x1f1d, {1, {0x1f15}}},\r
- { 0x1f28, {1, {0x1f20}}},\r
- { 0x1f29, {1, {0x1f21}}},\r
- { 0x1f2a, {1, {0x1f22}}},\r
- { 0x1f2b, {1, {0x1f23}}},\r
- { 0x1f2c, {1, {0x1f24}}},\r
- { 0x1f2d, {1, {0x1f25}}},\r
- { 0x1f2e, {1, {0x1f26}}},\r
- { 0x1f2f, {1, {0x1f27}}},\r
- { 0x1f38, {1, {0x1f30}}},\r
- { 0x1f39, {1, {0x1f31}}},\r
- { 0x1f3a, {1, {0x1f32}}},\r
- { 0x1f3b, {1, {0x1f33}}},\r
- { 0x1f3c, {1, {0x1f34}}},\r
- { 0x1f3d, {1, {0x1f35}}},\r
- { 0x1f3e, {1, {0x1f36}}},\r
- { 0x1f3f, {1, {0x1f37}}},\r
- { 0x1f48, {1, {0x1f40}}},\r
- { 0x1f49, {1, {0x1f41}}},\r
- { 0x1f4a, {1, {0x1f42}}},\r
- { 0x1f4b, {1, {0x1f43}}},\r
- { 0x1f4c, {1, {0x1f44}}},\r
- { 0x1f4d, {1, {0x1f45}}},\r
- { 0x1f50, {2, {0x03c5, 0x0313}}},\r
- { 0x1f52, {3, {0x03c5, 0x0313, 0x0300}}},\r
- { 0x1f54, {3, {0x03c5, 0x0313, 0x0301}}},\r
- { 0x1f56, {3, {0x03c5, 0x0313, 0x0342}}},\r
- { 0x1f59, {1, {0x1f51}}},\r
- { 0x1f5b, {1, {0x1f53}}},\r
- { 0x1f5d, {1, {0x1f55}}},\r
- { 0x1f5f, {1, {0x1f57}}},\r
- { 0x1f68, {1, {0x1f60}}},\r
- { 0x1f69, {1, {0x1f61}}},\r
- { 0x1f6a, {1, {0x1f62}}},\r
- { 0x1f6b, {1, {0x1f63}}},\r
- { 0x1f6c, {1, {0x1f64}}},\r
- { 0x1f6d, {1, {0x1f65}}},\r
- { 0x1f6e, {1, {0x1f66}}},\r
- { 0x1f6f, {1, {0x1f67}}},\r
- { 0x1f80, {2, {0x1f00, 0x03b9}}},\r
- { 0x1f81, {2, {0x1f01, 0x03b9}}},\r
- { 0x1f82, {2, {0x1f02, 0x03b9}}},\r
- { 0x1f83, {2, {0x1f03, 0x03b9}}},\r
- { 0x1f84, {2, {0x1f04, 0x03b9}}},\r
- { 0x1f85, {2, {0x1f05, 0x03b9}}},\r
- { 0x1f86, {2, {0x1f06, 0x03b9}}},\r
- { 0x1f87, {2, {0x1f07, 0x03b9}}},\r
- { 0x1f88, {2, {0x1f00, 0x03b9}}},\r
- { 0x1f89, {2, {0x1f01, 0x03b9}}},\r
- { 0x1f8a, {2, {0x1f02, 0x03b9}}},\r
- { 0x1f8b, {2, {0x1f03, 0x03b9}}},\r
- { 0x1f8c, {2, {0x1f04, 0x03b9}}},\r
- { 0x1f8d, {2, {0x1f05, 0x03b9}}},\r
- { 0x1f8e, {2, {0x1f06, 0x03b9}}},\r
- { 0x1f8f, {2, {0x1f07, 0x03b9}}},\r
- { 0x1f90, {2, {0x1f20, 0x03b9}}},\r
- { 0x1f91, {2, {0x1f21, 0x03b9}}},\r
- { 0x1f92, {2, {0x1f22, 0x03b9}}},\r
- { 0x1f93, {2, {0x1f23, 0x03b9}}},\r
- { 0x1f94, {2, {0x1f24, 0x03b9}}},\r
- { 0x1f95, {2, {0x1f25, 0x03b9}}},\r
- { 0x1f96, {2, {0x1f26, 0x03b9}}},\r
- { 0x1f97, {2, {0x1f27, 0x03b9}}},\r
- { 0x1f98, {2, {0x1f20, 0x03b9}}},\r
- { 0x1f99, {2, {0x1f21, 0x03b9}}},\r
- { 0x1f9a, {2, {0x1f22, 0x03b9}}},\r
- { 0x1f9b, {2, {0x1f23, 0x03b9}}},\r
- { 0x1f9c, {2, {0x1f24, 0x03b9}}},\r
- { 0x1f9d, {2, {0x1f25, 0x03b9}}},\r
- { 0x1f9e, {2, {0x1f26, 0x03b9}}},\r
- { 0x1f9f, {2, {0x1f27, 0x03b9}}},\r
- { 0x1fa0, {2, {0x1f60, 0x03b9}}},\r
- { 0x1fa1, {2, {0x1f61, 0x03b9}}},\r
- { 0x1fa2, {2, {0x1f62, 0x03b9}}},\r
- { 0x1fa3, {2, {0x1f63, 0x03b9}}},\r
- { 0x1fa4, {2, {0x1f64, 0x03b9}}},\r
- { 0x1fa5, {2, {0x1f65, 0x03b9}}},\r
- { 0x1fa6, {2, {0x1f66, 0x03b9}}},\r
- { 0x1fa7, {2, {0x1f67, 0x03b9}}},\r
- { 0x1fa8, {2, {0x1f60, 0x03b9}}},\r
- { 0x1fa9, {2, {0x1f61, 0x03b9}}},\r
- { 0x1faa, {2, {0x1f62, 0x03b9}}},\r
- { 0x1fab, {2, {0x1f63, 0x03b9}}},\r
- { 0x1fac, {2, {0x1f64, 0x03b9}}},\r
- { 0x1fad, {2, {0x1f65, 0x03b9}}},\r
- { 0x1fae, {2, {0x1f66, 0x03b9}}},\r
- { 0x1faf, {2, {0x1f67, 0x03b9}}},\r
- { 0x1fb2, {2, {0x1f70, 0x03b9}}},\r
- { 0x1fb3, {2, {0x03b1, 0x03b9}}},\r
- { 0x1fb4, {2, {0x03ac, 0x03b9}}},\r
- { 0x1fb6, {2, {0x03b1, 0x0342}}},\r
- { 0x1fb7, {3, {0x03b1, 0x0342, 0x03b9}}},\r
- { 0x1fb8, {1, {0x1fb0}}},\r
- { 0x1fb9, {1, {0x1fb1}}},\r
- { 0x1fba, {1, {0x1f70}}},\r
- { 0x1fbb, {1, {0x1f71}}},\r
- { 0x1fbc, {2, {0x03b1, 0x03b9}}},\r
- { 0x1fbe, {1, {0x03b9}}},\r
- { 0x1fc2, {2, {0x1f74, 0x03b9}}},\r
- { 0x1fc3, {2, {0x03b7, 0x03b9}}},\r
- { 0x1fc4, {2, {0x03ae, 0x03b9}}},\r
- { 0x1fc6, {2, {0x03b7, 0x0342}}},\r
- { 0x1fc7, {3, {0x03b7, 0x0342, 0x03b9}}},\r
- { 0x1fc8, {1, {0x1f72}}},\r
- { 0x1fc9, {1, {0x1f73}}},\r
- { 0x1fca, {1, {0x1f74}}},\r
- { 0x1fcb, {1, {0x1f75}}},\r
- { 0x1fcc, {2, {0x03b7, 0x03b9}}},\r
- { 0x1fd2, {3, {0x03b9, 0x0308, 0x0300}}},\r
- { 0x1fd3, {3, {0x03b9, 0x0308, 0x0301}}},\r
- { 0x1fd6, {2, {0x03b9, 0x0342}}},\r
- { 0x1fd7, {3, {0x03b9, 0x0308, 0x0342}}},\r
- { 0x1fd8, {1, {0x1fd0}}},\r
- { 0x1fd9, {1, {0x1fd1}}},\r
- { 0x1fda, {1, {0x1f76}}},\r
- { 0x1fdb, {1, {0x1f77}}},\r
- { 0x1fe2, {3, {0x03c5, 0x0308, 0x0300}}},\r
- { 0x1fe3, {3, {0x03c5, 0x0308, 0x0301}}},\r
- { 0x1fe4, {2, {0x03c1, 0x0313}}},\r
- { 0x1fe6, {2, {0x03c5, 0x0342}}},\r
- { 0x1fe7, {3, {0x03c5, 0x0308, 0x0342}}},\r
- { 0x1fe8, {1, {0x1fe0}}},\r
- { 0x1fe9, {1, {0x1fe1}}},\r
- { 0x1fea, {1, {0x1f7a}}},\r
- { 0x1feb, {1, {0x1f7b}}},\r
- { 0x1fec, {1, {0x1fe5}}},\r
- { 0x1ff2, {2, {0x1f7c, 0x03b9}}},\r
- { 0x1ff3, {2, {0x03c9, 0x03b9}}},\r
- { 0x1ff4, {2, {0x03ce, 0x03b9}}},\r
- { 0x1ff6, {2, {0x03c9, 0x0342}}},\r
- { 0x1ff7, {3, {0x03c9, 0x0342, 0x03b9}}},\r
- { 0x1ff8, {1, {0x1f78}}},\r
- { 0x1ff9, {1, {0x1f79}}},\r
- { 0x1ffa, {1, {0x1f7c}}},\r
- { 0x1ffb, {1, {0x1f7d}}},\r
- { 0x1ffc, {2, {0x03c9, 0x03b9}}},\r
- { 0x2126, {1, {0x03c9}}},\r
- { 0x212a, {1, {0x006b}}},\r
- { 0x212b, {1, {0x00e5}}},\r
- { 0x2160, {1, {0x2170}}},\r
- { 0x2161, {1, {0x2171}}},\r
- { 0x2162, {1, {0x2172}}},\r
- { 0x2163, {1, {0x2173}}},\r
- { 0x2164, {1, {0x2174}}},\r
- { 0x2165, {1, {0x2175}}},\r
- { 0x2166, {1, {0x2176}}},\r
- { 0x2167, {1, {0x2177}}},\r
- { 0x2168, {1, {0x2178}}},\r
- { 0x2169, {1, {0x2179}}},\r
- { 0x216a, {1, {0x217a}}},\r
- { 0x216b, {1, {0x217b}}},\r
- { 0x216c, {1, {0x217c}}},\r
- { 0x216d, {1, {0x217d}}},\r
- { 0x216e, {1, {0x217e}}},\r
- { 0x216f, {1, {0x217f}}},\r
- { 0x24b6, {1, {0x24d0}}},\r
- { 0x24b7, {1, {0x24d1}}},\r
- { 0x24b8, {1, {0x24d2}}},\r
- { 0x24b9, {1, {0x24d3}}},\r
- { 0x24ba, {1, {0x24d4}}},\r
- { 0x24bb, {1, {0x24d5}}},\r
- { 0x24bc, {1, {0x24d6}}},\r
- { 0x24bd, {1, {0x24d7}}},\r
- { 0x24be, {1, {0x24d8}}},\r
- { 0x24bf, {1, {0x24d9}}},\r
- { 0x24c0, {1, {0x24da}}},\r
- { 0x24c1, {1, {0x24db}}},\r
- { 0x24c2, {1, {0x24dc}}},\r
- { 0x24c3, {1, {0x24dd}}},\r
- { 0x24c4, {1, {0x24de}}},\r
- { 0x24c5, {1, {0x24df}}},\r
- { 0x24c6, {1, {0x24e0}}},\r
- { 0x24c7, {1, {0x24e1}}},\r
- { 0x24c8, {1, {0x24e2}}},\r
- { 0x24c9, {1, {0x24e3}}},\r
- { 0x24ca, {1, {0x24e4}}},\r
- { 0x24cb, {1, {0x24e5}}},\r
- { 0x24cc, {1, {0x24e6}}},\r
- { 0x24cd, {1, {0x24e7}}},\r
- { 0x24ce, {1, {0x24e8}}},\r
- { 0x24cf, {1, {0x24e9}}},\r
- { 0x2c00, {1, {0x2c30}}},\r
- { 0x2c01, {1, {0x2c31}}},\r
- { 0x2c02, {1, {0x2c32}}},\r
- { 0x2c03, {1, {0x2c33}}},\r
- { 0x2c04, {1, {0x2c34}}},\r
- { 0x2c05, {1, {0x2c35}}},\r
- { 0x2c06, {1, {0x2c36}}},\r
- { 0x2c07, {1, {0x2c37}}},\r
- { 0x2c08, {1, {0x2c38}}},\r
- { 0x2c09, {1, {0x2c39}}},\r
- { 0x2c0a, {1, {0x2c3a}}},\r
- { 0x2c0b, {1, {0x2c3b}}},\r
- { 0x2c0c, {1, {0x2c3c}}},\r
- { 0x2c0d, {1, {0x2c3d}}},\r
- { 0x2c0e, {1, {0x2c3e}}},\r
- { 0x2c0f, {1, {0x2c3f}}},\r
- { 0x2c10, {1, {0x2c40}}},\r
- { 0x2c11, {1, {0x2c41}}},\r
- { 0x2c12, {1, {0x2c42}}},\r
- { 0x2c13, {1, {0x2c43}}},\r
- { 0x2c14, {1, {0x2c44}}},\r
- { 0x2c15, {1, {0x2c45}}},\r
- { 0x2c16, {1, {0x2c46}}},\r
- { 0x2c17, {1, {0x2c47}}},\r
- { 0x2c18, {1, {0x2c48}}},\r
- { 0x2c19, {1, {0x2c49}}},\r
- { 0x2c1a, {1, {0x2c4a}}},\r
- { 0x2c1b, {1, {0x2c4b}}},\r
- { 0x2c1c, {1, {0x2c4c}}},\r
- { 0x2c1d, {1, {0x2c4d}}},\r
- { 0x2c1e, {1, {0x2c4e}}},\r
- { 0x2c1f, {1, {0x2c4f}}},\r
- { 0x2c20, {1, {0x2c50}}},\r
- { 0x2c21, {1, {0x2c51}}},\r
- { 0x2c22, {1, {0x2c52}}},\r
- { 0x2c23, {1, {0x2c53}}},\r
- { 0x2c24, {1, {0x2c54}}},\r
- { 0x2c25, {1, {0x2c55}}},\r
- { 0x2c26, {1, {0x2c56}}},\r
- { 0x2c27, {1, {0x2c57}}},\r
- { 0x2c28, {1, {0x2c58}}},\r
- { 0x2c29, {1, {0x2c59}}},\r
- { 0x2c2a, {1, {0x2c5a}}},\r
- { 0x2c2b, {1, {0x2c5b}}},\r
- { 0x2c2c, {1, {0x2c5c}}},\r
- { 0x2c2d, {1, {0x2c5d}}},\r
- { 0x2c2e, {1, {0x2c5e}}},\r
- { 0x2c80, {1, {0x2c81}}},\r
- { 0x2c82, {1, {0x2c83}}},\r
- { 0x2c84, {1, {0x2c85}}},\r
- { 0x2c86, {1, {0x2c87}}},\r
- { 0x2c88, {1, {0x2c89}}},\r
- { 0x2c8a, {1, {0x2c8b}}},\r
- { 0x2c8c, {1, {0x2c8d}}},\r
- { 0x2c8e, {1, {0x2c8f}}},\r
- { 0x2c90, {1, {0x2c91}}},\r
- { 0x2c92, {1, {0x2c93}}},\r
- { 0x2c94, {1, {0x2c95}}},\r
- { 0x2c96, {1, {0x2c97}}},\r
- { 0x2c98, {1, {0x2c99}}},\r
- { 0x2c9a, {1, {0x2c9b}}},\r
- { 0x2c9c, {1, {0x2c9d}}},\r
- { 0x2c9e, {1, {0x2c9f}}},\r
- { 0x2ca0, {1, {0x2ca1}}},\r
- { 0x2ca2, {1, {0x2ca3}}},\r
- { 0x2ca4, {1, {0x2ca5}}},\r
- { 0x2ca6, {1, {0x2ca7}}},\r
- { 0x2ca8, {1, {0x2ca9}}},\r
- { 0x2caa, {1, {0x2cab}}},\r
- { 0x2cac, {1, {0x2cad}}},\r
- { 0x2cae, {1, {0x2caf}}},\r
- { 0x2cb0, {1, {0x2cb1}}},\r
- { 0x2cb2, {1, {0x2cb3}}},\r
- { 0x2cb4, {1, {0x2cb5}}},\r
- { 0x2cb6, {1, {0x2cb7}}},\r
- { 0x2cb8, {1, {0x2cb9}}},\r
- { 0x2cba, {1, {0x2cbb}}},\r
- { 0x2cbc, {1, {0x2cbd}}},\r
- { 0x2cbe, {1, {0x2cbf}}},\r
- { 0x2cc0, {1, {0x2cc1}}},\r
- { 0x2cc2, {1, {0x2cc3}}},\r
- { 0x2cc4, {1, {0x2cc5}}},\r
- { 0x2cc6, {1, {0x2cc7}}},\r
- { 0x2cc8, {1, {0x2cc9}}},\r
- { 0x2cca, {1, {0x2ccb}}},\r
- { 0x2ccc, {1, {0x2ccd}}},\r
- { 0x2cce, {1, {0x2ccf}}},\r
- { 0x2cd0, {1, {0x2cd1}}},\r
- { 0x2cd2, {1, {0x2cd3}}},\r
- { 0x2cd4, {1, {0x2cd5}}},\r
- { 0x2cd6, {1, {0x2cd7}}},\r
- { 0x2cd8, {1, {0x2cd9}}},\r
- { 0x2cda, {1, {0x2cdb}}},\r
- { 0x2cdc, {1, {0x2cdd}}},\r
- { 0x2cde, {1, {0x2cdf}}},\r
- { 0x2ce0, {1, {0x2ce1}}},\r
- { 0x2ce2, {1, {0x2ce3}}},\r
- { 0xfb00, {2, {0x0066, 0x0066}}},\r
- { 0xfb01, {2, {0x0066, 0x0069}}},\r
- { 0xfb02, {2, {0x0066, 0x006c}}},\r
- { 0xfb03, {3, {0x0066, 0x0066, 0x0069}}},\r
- { 0xfb04, {3, {0x0066, 0x0066, 0x006c}}},\r
- { 0xfb05, {2, {0x0073, 0x0074}}},\r
- { 0xfb06, {2, {0x0073, 0x0074}}},\r
- { 0xfb13, {2, {0x0574, 0x0576}}},\r
- { 0xfb14, {2, {0x0574, 0x0565}}},\r
- { 0xfb15, {2, {0x0574, 0x056b}}},\r
- { 0xfb16, {2, {0x057e, 0x0576}}},\r
- { 0xfb17, {2, {0x0574, 0x056d}}},\r
- { 0xff21, {1, {0xff41}}},\r
- { 0xff22, {1, {0xff42}}},\r
- { 0xff23, {1, {0xff43}}},\r
- { 0xff24, {1, {0xff44}}},\r
- { 0xff25, {1, {0xff45}}},\r
- { 0xff26, {1, {0xff46}}},\r
- { 0xff27, {1, {0xff47}}},\r
- { 0xff28, {1, {0xff48}}},\r
- { 0xff29, {1, {0xff49}}},\r
- { 0xff2a, {1, {0xff4a}}},\r
- { 0xff2b, {1, {0xff4b}}},\r
- { 0xff2c, {1, {0xff4c}}},\r
- { 0xff2d, {1, {0xff4d}}},\r
- { 0xff2e, {1, {0xff4e}}},\r
- { 0xff2f, {1, {0xff4f}}},\r
- { 0xff30, {1, {0xff50}}},\r
- { 0xff31, {1, {0xff51}}},\r
- { 0xff32, {1, {0xff52}}},\r
- { 0xff33, {1, {0xff53}}},\r
- { 0xff34, {1, {0xff54}}},\r
- { 0xff35, {1, {0xff55}}},\r
- { 0xff36, {1, {0xff56}}},\r
- { 0xff37, {1, {0xff57}}},\r
- { 0xff38, {1, {0xff58}}},\r
- { 0xff39, {1, {0xff59}}},\r
- { 0xff3a, {1, {0xff5a}}},\r
- { 0x10400, {1, {0x10428}}},\r
- { 0x10401, {1, {0x10429}}},\r
- { 0x10402, {1, {0x1042a}}},\r
- { 0x10403, {1, {0x1042b}}},\r
- { 0x10404, {1, {0x1042c}}},\r
- { 0x10405, {1, {0x1042d}}},\r
- { 0x10406, {1, {0x1042e}}},\r
- { 0x10407, {1, {0x1042f}}},\r
- { 0x10408, {1, {0x10430}}},\r
- { 0x10409, {1, {0x10431}}},\r
- { 0x1040a, {1, {0x10432}}},\r
- { 0x1040b, {1, {0x10433}}},\r
- { 0x1040c, {1, {0x10434}}},\r
- { 0x1040d, {1, {0x10435}}},\r
- { 0x1040e, {1, {0x10436}}},\r
- { 0x1040f, {1, {0x10437}}},\r
- { 0x10410, {1, {0x10438}}},\r
- { 0x10411, {1, {0x10439}}},\r
- { 0x10412, {1, {0x1043a}}},\r
- { 0x10413, {1, {0x1043b}}},\r
- { 0x10414, {1, {0x1043c}}},\r
- { 0x10415, {1, {0x1043d}}},\r
- { 0x10416, {1, {0x1043e}}},\r
- { 0x10417, {1, {0x1043f}}},\r
- { 0x10418, {1, {0x10440}}},\r
- { 0x10419, {1, {0x10441}}},\r
- { 0x1041a, {1, {0x10442}}},\r
- { 0x1041b, {1, {0x10443}}},\r
- { 0x1041c, {1, {0x10444}}},\r
- { 0x1041d, {1, {0x10445}}},\r
- { 0x1041e, {1, {0x10446}}},\r
- { 0x1041f, {1, {0x10447}}},\r
- { 0x10420, {1, {0x10448}}},\r
- { 0x10421, {1, {0x10449}}},\r
- { 0x10422, {1, {0x1044a}}},\r
- { 0x10423, {1, {0x1044b}}},\r
- { 0x10424, {1, {0x1044c}}},\r
- { 0x10425, {1, {0x1044d}}},\r
- { 0x10426, {1, {0x1044e}}},\r
- { 0x10427, {1, {0x1044f}}}\r
-};\r
-\r
-static const CaseFold_11_Type CaseFold_Locale[] = {\r
- { 0x0049, {1, {0x0069}}},\r
- { 0x0130, {2, {0x0069, 0x0307}}}\r
-};\r
-\r
-static const CaseUnfold_11_Type CaseUnfold_11[] = {\r
- { 0x0061, {1, {0x0041 }}},\r
- { 0x0062, {1, {0x0042 }}},\r
- { 0x0063, {1, {0x0043 }}},\r
- { 0x0064, {1, {0x0044 }}},\r
- { 0x0065, {1, {0x0045 }}},\r
- { 0x0066, {1, {0x0046 }}},\r
- { 0x0067, {1, {0x0047 }}},\r
- { 0x0068, {1, {0x0048 }}},\r
- { 0x006a, {1, {0x004a }}},\r
- { 0x006b, {2, {0x212a, 0x004b }}},\r
- { 0x006c, {1, {0x004c }}},\r
- { 0x006d, {1, {0x004d }}},\r
- { 0x006e, {1, {0x004e }}},\r
- { 0x006f, {1, {0x004f }}},\r
- { 0x0070, {1, {0x0050 }}},\r
- { 0x0071, {1, {0x0051 }}},\r
- { 0x0072, {1, {0x0052 }}},\r
- { 0x0073, {2, {0x0053, 0x017f }}},\r
- { 0x0074, {1, {0x0054 }}},\r
- { 0x0075, {1, {0x0055 }}},\r
- { 0x0076, {1, {0x0056 }}},\r
- { 0x0077, {1, {0x0057 }}},\r
- { 0x0078, {1, {0x0058 }}},\r
- { 0x0079, {1, {0x0059 }}},\r
- { 0x007a, {1, {0x005a }}},\r
- { 0x00e0, {1, {0x00c0 }}},\r
- { 0x00e1, {1, {0x00c1 }}},\r
- { 0x00e2, {1, {0x00c2 }}},\r
- { 0x00e3, {1, {0x00c3 }}},\r
- { 0x00e4, {1, {0x00c4 }}},\r
- { 0x00e5, {2, {0x212b, 0x00c5 }}},\r
- { 0x00e6, {1, {0x00c6 }}},\r
- { 0x00e7, {1, {0x00c7 }}},\r
- { 0x00e8, {1, {0x00c8 }}},\r
- { 0x00e9, {1, {0x00c9 }}},\r
- { 0x00ea, {1, {0x00ca }}},\r
- { 0x00eb, {1, {0x00cb }}},\r
- { 0x00ec, {1, {0x00cc }}},\r
- { 0x00ed, {1, {0x00cd }}},\r
- { 0x00ee, {1, {0x00ce }}},\r
- { 0x00ef, {1, {0x00cf }}},\r
- { 0x00f0, {1, {0x00d0 }}},\r
- { 0x00f1, {1, {0x00d1 }}},\r
- { 0x00f2, {1, {0x00d2 }}},\r
- { 0x00f3, {1, {0x00d3 }}},\r
- { 0x00f4, {1, {0x00d4 }}},\r
- { 0x00f5, {1, {0x00d5 }}},\r
- { 0x00f6, {1, {0x00d6 }}},\r
- { 0x00f8, {1, {0x00d8 }}},\r
- { 0x00f9, {1, {0x00d9 }}},\r
- { 0x00fa, {1, {0x00da }}},\r
- { 0x00fb, {1, {0x00db }}},\r
- { 0x00fc, {1, {0x00dc }}},\r
- { 0x00fd, {1, {0x00dd }}},\r
- { 0x00fe, {1, {0x00de }}},\r
- { 0x00ff, {1, {0x0178 }}},\r
- { 0x0101, {1, {0x0100 }}},\r
- { 0x0103, {1, {0x0102 }}},\r
- { 0x0105, {1, {0x0104 }}},\r
- { 0x0107, {1, {0x0106 }}},\r
- { 0x0109, {1, {0x0108 }}},\r
- { 0x010b, {1, {0x010a }}},\r
- { 0x010d, {1, {0x010c }}},\r
- { 0x010f, {1, {0x010e }}},\r
- { 0x0111, {1, {0x0110 }}},\r
- { 0x0113, {1, {0x0112 }}},\r
- { 0x0115, {1, {0x0114 }}},\r
- { 0x0117, {1, {0x0116 }}},\r
- { 0x0119, {1, {0x0118 }}},\r
- { 0x011b, {1, {0x011a }}},\r
- { 0x011d, {1, {0x011c }}},\r
- { 0x011f, {1, {0x011e }}},\r
- { 0x0121, {1, {0x0120 }}},\r
- { 0x0123, {1, {0x0122 }}},\r
- { 0x0125, {1, {0x0124 }}},\r
- { 0x0127, {1, {0x0126 }}},\r
- { 0x0129, {1, {0x0128 }}},\r
- { 0x012b, {1, {0x012a }}},\r
- { 0x012d, {1, {0x012c }}},\r
- { 0x012f, {1, {0x012e }}},\r
- { 0x0133, {1, {0x0132 }}},\r
- { 0x0135, {1, {0x0134 }}},\r
- { 0x0137, {1, {0x0136 }}},\r
- { 0x013a, {1, {0x0139 }}},\r
- { 0x013c, {1, {0x013b }}},\r
- { 0x013e, {1, {0x013d }}},\r
- { 0x0140, {1, {0x013f }}},\r
- { 0x0142, {1, {0x0141 }}},\r
- { 0x0144, {1, {0x0143 }}},\r
- { 0x0146, {1, {0x0145 }}},\r
- { 0x0148, {1, {0x0147 }}},\r
- { 0x014b, {1, {0x014a }}},\r
- { 0x014d, {1, {0x014c }}},\r
- { 0x014f, {1, {0x014e }}},\r
- { 0x0151, {1, {0x0150 }}},\r
- { 0x0153, {1, {0x0152 }}},\r
- { 0x0155, {1, {0x0154 }}},\r
- { 0x0157, {1, {0x0156 }}},\r
- { 0x0159, {1, {0x0158 }}},\r
- { 0x015b, {1, {0x015a }}},\r
- { 0x015d, {1, {0x015c }}},\r
- { 0x015f, {1, {0x015e }}},\r
- { 0x0161, {1, {0x0160 }}},\r
- { 0x0163, {1, {0x0162 }}},\r
- { 0x0165, {1, {0x0164 }}},\r
- { 0x0167, {1, {0x0166 }}},\r
- { 0x0169, {1, {0x0168 }}},\r
- { 0x016b, {1, {0x016a }}},\r
- { 0x016d, {1, {0x016c }}},\r
- { 0x016f, {1, {0x016e }}},\r
- { 0x0171, {1, {0x0170 }}},\r
- { 0x0173, {1, {0x0172 }}},\r
- { 0x0175, {1, {0x0174 }}},\r
- { 0x0177, {1, {0x0176 }}},\r
- { 0x017a, {1, {0x0179 }}},\r
- { 0x017c, {1, {0x017b }}},\r
- { 0x017e, {1, {0x017d }}},\r
- { 0x0183, {1, {0x0182 }}},\r
- { 0x0185, {1, {0x0184 }}},\r
- { 0x0188, {1, {0x0187 }}},\r
- { 0x018c, {1, {0x018b }}},\r
- { 0x0192, {1, {0x0191 }}},\r
- { 0x0195, {1, {0x01f6 }}},\r
- { 0x0199, {1, {0x0198 }}},\r
- { 0x019a, {1, {0x023d }}},\r
- { 0x019e, {1, {0x0220 }}},\r
- { 0x01a1, {1, {0x01a0 }}},\r
- { 0x01a3, {1, {0x01a2 }}},\r
- { 0x01a5, {1, {0x01a4 }}},\r
- { 0x01a8, {1, {0x01a7 }}},\r
- { 0x01ad, {1, {0x01ac }}},\r
- { 0x01b0, {1, {0x01af }}},\r
- { 0x01b4, {1, {0x01b3 }}},\r
- { 0x01b6, {1, {0x01b5 }}},\r
- { 0x01b9, {1, {0x01b8 }}},\r
- { 0x01bd, {1, {0x01bc }}},\r
- { 0x01bf, {1, {0x01f7 }}},\r
- { 0x01c6, {2, {0x01c4, 0x01c5 }}},\r
- { 0x01c9, {2, {0x01c7, 0x01c8 }}},\r
- { 0x01cc, {2, {0x01ca, 0x01cb }}},\r
- { 0x01ce, {1, {0x01cd }}},\r
- { 0x01d0, {1, {0x01cf }}},\r
- { 0x01d2, {1, {0x01d1 }}},\r
- { 0x01d4, {1, {0x01d3 }}},\r
- { 0x01d6, {1, {0x01d5 }}},\r
- { 0x01d8, {1, {0x01d7 }}},\r
- { 0x01da, {1, {0x01d9 }}},\r
- { 0x01dc, {1, {0x01db }}},\r
- { 0x01dd, {1, {0x018e }}},\r
- { 0x01df, {1, {0x01de }}},\r
- { 0x01e1, {1, {0x01e0 }}},\r
- { 0x01e3, {1, {0x01e2 }}},\r
- { 0x01e5, {1, {0x01e4 }}},\r
- { 0x01e7, {1, {0x01e6 }}},\r
- { 0x01e9, {1, {0x01e8 }}},\r
- { 0x01eb, {1, {0x01ea }}},\r
- { 0x01ed, {1, {0x01ec }}},\r
- { 0x01ef, {1, {0x01ee }}},\r
- { 0x01f3, {2, {0x01f1, 0x01f2 }}},\r
- { 0x01f5, {1, {0x01f4 }}},\r
- { 0x01f9, {1, {0x01f8 }}},\r
- { 0x01fb, {1, {0x01fa }}},\r
- { 0x01fd, {1, {0x01fc }}},\r
- { 0x01ff, {1, {0x01fe }}},\r
- { 0x0201, {1, {0x0200 }}},\r
- { 0x0203, {1, {0x0202 }}},\r
- { 0x0205, {1, {0x0204 }}},\r
- { 0x0207, {1, {0x0206 }}},\r
- { 0x0209, {1, {0x0208 }}},\r
- { 0x020b, {1, {0x020a }}},\r
- { 0x020d, {1, {0x020c }}},\r
- { 0x020f, {1, {0x020e }}},\r
- { 0x0211, {1, {0x0210 }}},\r
- { 0x0213, {1, {0x0212 }}},\r
- { 0x0215, {1, {0x0214 }}},\r
- { 0x0217, {1, {0x0216 }}},\r
- { 0x0219, {1, {0x0218 }}},\r
- { 0x021b, {1, {0x021a }}},\r
- { 0x021d, {1, {0x021c }}},\r
- { 0x021f, {1, {0x021e }}},\r
- { 0x0223, {1, {0x0222 }}},\r
- { 0x0225, {1, {0x0224 }}},\r
- { 0x0227, {1, {0x0226 }}},\r
- { 0x0229, {1, {0x0228 }}},\r
- { 0x022b, {1, {0x022a }}},\r
- { 0x022d, {1, {0x022c }}},\r
- { 0x022f, {1, {0x022e }}},\r
- { 0x0231, {1, {0x0230 }}},\r
- { 0x0233, {1, {0x0232 }}},\r
- { 0x023c, {1, {0x023b }}},\r
- { 0x0253, {1, {0x0181 }}},\r
- { 0x0254, {1, {0x0186 }}},\r
- { 0x0256, {1, {0x0189 }}},\r
- { 0x0257, {1, {0x018a }}},\r
- { 0x0259, {1, {0x018f }}},\r
- { 0x025b, {1, {0x0190 }}},\r
- { 0x0260, {1, {0x0193 }}},\r
- { 0x0263, {1, {0x0194 }}},\r
- { 0x0268, {1, {0x0197 }}},\r
- { 0x0269, {1, {0x0196 }}},\r
- { 0x026f, {1, {0x019c }}},\r
- { 0x0272, {1, {0x019d }}},\r
- { 0x0275, {1, {0x019f }}},\r
- { 0x0280, {1, {0x01a6 }}},\r
- { 0x0283, {1, {0x01a9 }}},\r
- { 0x0288, {1, {0x01ae }}},\r
- { 0x028a, {1, {0x01b1 }}},\r
- { 0x028b, {1, {0x01b2 }}},\r
- { 0x0292, {1, {0x01b7 }}},\r
- { 0x0294, {1, {0x0241 }}},\r
- { 0x03ac, {1, {0x0386 }}},\r
- { 0x03ad, {1, {0x0388 }}},\r
- { 0x03ae, {1, {0x0389 }}},\r
- { 0x03af, {1, {0x038a }}},\r
- { 0x03b1, {1, {0x0391 }}},\r
- { 0x03b2, {2, {0x0392, 0x03d0 }}},\r
- { 0x03b3, {1, {0x0393 }}},\r
- { 0x03b4, {1, {0x0394 }}},\r
- { 0x03b5, {2, {0x03f5, 0x0395 }}},\r
- { 0x03b6, {1, {0x0396 }}},\r
- { 0x03b7, {1, {0x0397 }}},\r
- { 0x03b8, {3, {0x03f4, 0x0398, 0x03d1 }}},\r
- { 0x03b9, {3, {0x1fbe, 0x0399, 0x0345 }}},\r
- { 0x03ba, {2, {0x03f0, 0x039a }}},\r
- { 0x03bb, {1, {0x039b }}},\r
- { 0x03bc, {2, {0x00b5, 0x039c }}},\r
- { 0x03bd, {1, {0x039d }}},\r
- { 0x03be, {1, {0x039e }}},\r
- { 0x03bf, {1, {0x039f }}},\r
- { 0x03c0, {2, {0x03a0, 0x03d6 }}},\r
- { 0x03c1, {2, {0x03f1, 0x03a1 }}},\r
- { 0x03c3, {2, {0x03a3, 0x03c2 }}},\r
- { 0x03c4, {1, {0x03a4 }}},\r
- { 0x03c5, {1, {0x03a5 }}},\r
- { 0x03c6, {2, {0x03a6, 0x03d5 }}},\r
- { 0x03c7, {1, {0x03a7 }}},\r
- { 0x03c8, {1, {0x03a8 }}},\r
- { 0x03c9, {2, {0x03a9, 0x2126 }}},\r
- { 0x03ca, {1, {0x03aa }}},\r
- { 0x03cb, {1, {0x03ab }}},\r
- { 0x03cc, {1, {0x038c }}},\r
- { 0x03cd, {1, {0x038e }}},\r
- { 0x03ce, {1, {0x038f }}},\r
- { 0x03d9, {1, {0x03d8 }}},\r
- { 0x03db, {1, {0x03da }}},\r
- { 0x03dd, {1, {0x03dc }}},\r
- { 0x03df, {1, {0x03de }}},\r
- { 0x03e1, {1, {0x03e0 }}},\r
- { 0x03e3, {1, {0x03e2 }}},\r
- { 0x03e5, {1, {0x03e4 }}},\r
- { 0x03e7, {1, {0x03e6 }}},\r
- { 0x03e9, {1, {0x03e8 }}},\r
- { 0x03eb, {1, {0x03ea }}},\r
- { 0x03ed, {1, {0x03ec }}},\r
- { 0x03ef, {1, {0x03ee }}},\r
- { 0x03f2, {1, {0x03f9 }}},\r
- { 0x03f8, {1, {0x03f7 }}},\r
- { 0x03fb, {1, {0x03fa }}},\r
- { 0x0430, {1, {0x0410 }}},\r
- { 0x0431, {1, {0x0411 }}},\r
- { 0x0432, {1, {0x0412 }}},\r
- { 0x0433, {1, {0x0413 }}},\r
- { 0x0434, {1, {0x0414 }}},\r
- { 0x0435, {1, {0x0415 }}},\r
- { 0x0436, {1, {0x0416 }}},\r
- { 0x0437, {1, {0x0417 }}},\r
- { 0x0438, {1, {0x0418 }}},\r
- { 0x0439, {1, {0x0419 }}},\r
- { 0x043a, {1, {0x041a }}},\r
- { 0x043b, {1, {0x041b }}},\r
- { 0x043c, {1, {0x041c }}},\r
- { 0x043d, {1, {0x041d }}},\r
- { 0x043e, {1, {0x041e }}},\r
- { 0x043f, {1, {0x041f }}},\r
- { 0x0440, {1, {0x0420 }}},\r
- { 0x0441, {1, {0x0421 }}},\r
- { 0x0442, {1, {0x0422 }}},\r
- { 0x0443, {1, {0x0423 }}},\r
- { 0x0444, {1, {0x0424 }}},\r
- { 0x0445, {1, {0x0425 }}},\r
- { 0x0446, {1, {0x0426 }}},\r
- { 0x0447, {1, {0x0427 }}},\r
- { 0x0448, {1, {0x0428 }}},\r
- { 0x0449, {1, {0x0429 }}},\r
- { 0x044a, {1, {0x042a }}},\r
- { 0x044b, {1, {0x042b }}},\r
- { 0x044c, {1, {0x042c }}},\r
- { 0x044d, {1, {0x042d }}},\r
- { 0x044e, {1, {0x042e }}},\r
- { 0x044f, {1, {0x042f }}},\r
- { 0x0450, {1, {0x0400 }}},\r
- { 0x0451, {1, {0x0401 }}},\r
- { 0x0452, {1, {0x0402 }}},\r
- { 0x0453, {1, {0x0403 }}},\r
- { 0x0454, {1, {0x0404 }}},\r
- { 0x0455, {1, {0x0405 }}},\r
- { 0x0456, {1, {0x0406 }}},\r
- { 0x0457, {1, {0x0407 }}},\r
- { 0x0458, {1, {0x0408 }}},\r
- { 0x0459, {1, {0x0409 }}},\r
- { 0x045a, {1, {0x040a }}},\r
- { 0x045b, {1, {0x040b }}},\r
- { 0x045c, {1, {0x040c }}},\r
- { 0x045d, {1, {0x040d }}},\r
- { 0x045e, {1, {0x040e }}},\r
- { 0x045f, {1, {0x040f }}},\r
- { 0x0461, {1, {0x0460 }}},\r
- { 0x0463, {1, {0x0462 }}},\r
- { 0x0465, {1, {0x0464 }}},\r
- { 0x0467, {1, {0x0466 }}},\r
- { 0x0469, {1, {0x0468 }}},\r
- { 0x046b, {1, {0x046a }}},\r
- { 0x046d, {1, {0x046c }}},\r
- { 0x046f, {1, {0x046e }}},\r
- { 0x0471, {1, {0x0470 }}},\r
- { 0x0473, {1, {0x0472 }}},\r
- { 0x0475, {1, {0x0474 }}},\r
- { 0x0477, {1, {0x0476 }}},\r
- { 0x0479, {1, {0x0478 }}},\r
- { 0x047b, {1, {0x047a }}},\r
- { 0x047d, {1, {0x047c }}},\r
- { 0x047f, {1, {0x047e }}},\r
- { 0x0481, {1, {0x0480 }}},\r
- { 0x048b, {1, {0x048a }}},\r
- { 0x048d, {1, {0x048c }}},\r
- { 0x048f, {1, {0x048e }}},\r
- { 0x0491, {1, {0x0490 }}},\r
- { 0x0493, {1, {0x0492 }}},\r
- { 0x0495, {1, {0x0494 }}},\r
- { 0x0497, {1, {0x0496 }}},\r
- { 0x0499, {1, {0x0498 }}},\r
- { 0x049b, {1, {0x049a }}},\r
- { 0x049d, {1, {0x049c }}},\r
- { 0x049f, {1, {0x049e }}},\r
- { 0x04a1, {1, {0x04a0 }}},\r
- { 0x04a3, {1, {0x04a2 }}},\r
- { 0x04a5, {1, {0x04a4 }}},\r
- { 0x04a7, {1, {0x04a6 }}},\r
- { 0x04a9, {1, {0x04a8 }}},\r
- { 0x04ab, {1, {0x04aa }}},\r
- { 0x04ad, {1, {0x04ac }}},\r
- { 0x04af, {1, {0x04ae }}},\r
- { 0x04b1, {1, {0x04b0 }}},\r
- { 0x04b3, {1, {0x04b2 }}},\r
- { 0x04b5, {1, {0x04b4 }}},\r
- { 0x04b7, {1, {0x04b6 }}},\r
- { 0x04b9, {1, {0x04b8 }}},\r
- { 0x04bb, {1, {0x04ba }}},\r
- { 0x04bd, {1, {0x04bc }}},\r
- { 0x04bf, {1, {0x04be }}},\r
- { 0x04c2, {1, {0x04c1 }}},\r
- { 0x04c4, {1, {0x04c3 }}},\r
- { 0x04c6, {1, {0x04c5 }}},\r
- { 0x04c8, {1, {0x04c7 }}},\r
- { 0x04ca, {1, {0x04c9 }}},\r
- { 0x04cc, {1, {0x04cb }}},\r
- { 0x04ce, {1, {0x04cd }}},\r
- { 0x04d1, {1, {0x04d0 }}},\r
- { 0x04d3, {1, {0x04d2 }}},\r
- { 0x04d5, {1, {0x04d4 }}},\r
- { 0x04d7, {1, {0x04d6 }}},\r
- { 0x04d9, {1, {0x04d8 }}},\r
- { 0x04db, {1, {0x04da }}},\r
- { 0x04dd, {1, {0x04dc }}},\r
- { 0x04df, {1, {0x04de }}},\r
- { 0x04e1, {1, {0x04e0 }}},\r
- { 0x04e3, {1, {0x04e2 }}},\r
- { 0x04e5, {1, {0x04e4 }}},\r
- { 0x04e7, {1, {0x04e6 }}},\r
- { 0x04e9, {1, {0x04e8 }}},\r
- { 0x04eb, {1, {0x04ea }}},\r
- { 0x04ed, {1, {0x04ec }}},\r
- { 0x04ef, {1, {0x04ee }}},\r
- { 0x04f1, {1, {0x04f0 }}},\r
- { 0x04f3, {1, {0x04f2 }}},\r
- { 0x04f5, {1, {0x04f4 }}},\r
- { 0x04f7, {1, {0x04f6 }}},\r
- { 0x04f9, {1, {0x04f8 }}},\r
- { 0x0501, {1, {0x0500 }}},\r
- { 0x0503, {1, {0x0502 }}},\r
- { 0x0505, {1, {0x0504 }}},\r
- { 0x0507, {1, {0x0506 }}},\r
- { 0x0509, {1, {0x0508 }}},\r
- { 0x050b, {1, {0x050a }}},\r
- { 0x050d, {1, {0x050c }}},\r
- { 0x050f, {1, {0x050e }}},\r
- { 0x0561, {1, {0x0531 }}},\r
- { 0x0562, {1, {0x0532 }}},\r
- { 0x0563, {1, {0x0533 }}},\r
- { 0x0564, {1, {0x0534 }}},\r
- { 0x0565, {1, {0x0535 }}},\r
- { 0x0566, {1, {0x0536 }}},\r
- { 0x0567, {1, {0x0537 }}},\r
- { 0x0568, {1, {0x0538 }}},\r
- { 0x0569, {1, {0x0539 }}},\r
- { 0x056a, {1, {0x053a }}},\r
- { 0x056b, {1, {0x053b }}},\r
- { 0x056c, {1, {0x053c }}},\r
- { 0x056d, {1, {0x053d }}},\r
- { 0x056e, {1, {0x053e }}},\r
- { 0x056f, {1, {0x053f }}},\r
- { 0x0570, {1, {0x0540 }}},\r
- { 0x0571, {1, {0x0541 }}},\r
- { 0x0572, {1, {0x0542 }}},\r
- { 0x0573, {1, {0x0543 }}},\r
- { 0x0574, {1, {0x0544 }}},\r
- { 0x0575, {1, {0x0545 }}},\r
- { 0x0576, {1, {0x0546 }}},\r
- { 0x0577, {1, {0x0547 }}},\r
- { 0x0578, {1, {0x0548 }}},\r
- { 0x0579, {1, {0x0549 }}},\r
- { 0x057a, {1, {0x054a }}},\r
- { 0x057b, {1, {0x054b }}},\r
- { 0x057c, {1, {0x054c }}},\r
- { 0x057d, {1, {0x054d }}},\r
- { 0x057e, {1, {0x054e }}},\r
- { 0x057f, {1, {0x054f }}},\r
- { 0x0580, {1, {0x0550 }}},\r
- { 0x0581, {1, {0x0551 }}},\r
- { 0x0582, {1, {0x0552 }}},\r
- { 0x0583, {1, {0x0553 }}},\r
- { 0x0584, {1, {0x0554 }}},\r
- { 0x0585, {1, {0x0555 }}},\r
- { 0x0586, {1, {0x0556 }}},\r
- { 0x1e01, {1, {0x1e00 }}},\r
- { 0x1e03, {1, {0x1e02 }}},\r
- { 0x1e05, {1, {0x1e04 }}},\r
- { 0x1e07, {1, {0x1e06 }}},\r
- { 0x1e09, {1, {0x1e08 }}},\r
- { 0x1e0b, {1, {0x1e0a }}},\r
- { 0x1e0d, {1, {0x1e0c }}},\r
- { 0x1e0f, {1, {0x1e0e }}},\r
- { 0x1e11, {1, {0x1e10 }}},\r
- { 0x1e13, {1, {0x1e12 }}},\r
- { 0x1e15, {1, {0x1e14 }}},\r
- { 0x1e17, {1, {0x1e16 }}},\r
- { 0x1e19, {1, {0x1e18 }}},\r
- { 0x1e1b, {1, {0x1e1a }}},\r
- { 0x1e1d, {1, {0x1e1c }}},\r
- { 0x1e1f, {1, {0x1e1e }}},\r
- { 0x1e21, {1, {0x1e20 }}},\r
- { 0x1e23, {1, {0x1e22 }}},\r
- { 0x1e25, {1, {0x1e24 }}},\r
- { 0x1e27, {1, {0x1e26 }}},\r
- { 0x1e29, {1, {0x1e28 }}},\r
- { 0x1e2b, {1, {0x1e2a }}},\r
- { 0x1e2d, {1, {0x1e2c }}},\r
- { 0x1e2f, {1, {0x1e2e }}},\r
- { 0x1e31, {1, {0x1e30 }}},\r
- { 0x1e33, {1, {0x1e32 }}},\r
- { 0x1e35, {1, {0x1e34 }}},\r
- { 0x1e37, {1, {0x1e36 }}},\r
- { 0x1e39, {1, {0x1e38 }}},\r
- { 0x1e3b, {1, {0x1e3a }}},\r
- { 0x1e3d, {1, {0x1e3c }}},\r
- { 0x1e3f, {1, {0x1e3e }}},\r
- { 0x1e41, {1, {0x1e40 }}},\r
- { 0x1e43, {1, {0x1e42 }}},\r
- { 0x1e45, {1, {0x1e44 }}},\r
- { 0x1e47, {1, {0x1e46 }}},\r
- { 0x1e49, {1, {0x1e48 }}},\r
- { 0x1e4b, {1, {0x1e4a }}},\r
- { 0x1e4d, {1, {0x1e4c }}},\r
- { 0x1e4f, {1, {0x1e4e }}},\r
- { 0x1e51, {1, {0x1e50 }}},\r
- { 0x1e53, {1, {0x1e52 }}},\r
- { 0x1e55, {1, {0x1e54 }}},\r
- { 0x1e57, {1, {0x1e56 }}},\r
- { 0x1e59, {1, {0x1e58 }}},\r
- { 0x1e5b, {1, {0x1e5a }}},\r
- { 0x1e5d, {1, {0x1e5c }}},\r
- { 0x1e5f, {1, {0x1e5e }}},\r
- { 0x1e61, {2, {0x1e9b, 0x1e60 }}},\r
- { 0x1e63, {1, {0x1e62 }}},\r
- { 0x1e65, {1, {0x1e64 }}},\r
- { 0x1e67, {1, {0x1e66 }}},\r
- { 0x1e69, {1, {0x1e68 }}},\r
- { 0x1e6b, {1, {0x1e6a }}},\r
- { 0x1e6d, {1, {0x1e6c }}},\r
- { 0x1e6f, {1, {0x1e6e }}},\r
- { 0x1e71, {1, {0x1e70 }}},\r
- { 0x1e73, {1, {0x1e72 }}},\r
- { 0x1e75, {1, {0x1e74 }}},\r
- { 0x1e77, {1, {0x1e76 }}},\r
- { 0x1e79, {1, {0x1e78 }}},\r
- { 0x1e7b, {1, {0x1e7a }}},\r
- { 0x1e7d, {1, {0x1e7c }}},\r
- { 0x1e7f, {1, {0x1e7e }}},\r
- { 0x1e81, {1, {0x1e80 }}},\r
- { 0x1e83, {1, {0x1e82 }}},\r
- { 0x1e85, {1, {0x1e84 }}},\r
- { 0x1e87, {1, {0x1e86 }}},\r
- { 0x1e89, {1, {0x1e88 }}},\r
- { 0x1e8b, {1, {0x1e8a }}},\r
- { 0x1e8d, {1, {0x1e8c }}},\r
- { 0x1e8f, {1, {0x1e8e }}},\r
- { 0x1e91, {1, {0x1e90 }}},\r
- { 0x1e93, {1, {0x1e92 }}},\r
- { 0x1e95, {1, {0x1e94 }}},\r
- { 0x1ea1, {1, {0x1ea0 }}},\r
- { 0x1ea3, {1, {0x1ea2 }}},\r
- { 0x1ea5, {1, {0x1ea4 }}},\r
- { 0x1ea7, {1, {0x1ea6 }}},\r
- { 0x1ea9, {1, {0x1ea8 }}},\r
- { 0x1eab, {1, {0x1eaa }}},\r
- { 0x1ead, {1, {0x1eac }}},\r
- { 0x1eaf, {1, {0x1eae }}},\r
- { 0x1eb1, {1, {0x1eb0 }}},\r
- { 0x1eb3, {1, {0x1eb2 }}},\r
- { 0x1eb5, {1, {0x1eb4 }}},\r
- { 0x1eb7, {1, {0x1eb6 }}},\r
- { 0x1eb9, {1, {0x1eb8 }}},\r
- { 0x1ebb, {1, {0x1eba }}},\r
- { 0x1ebd, {1, {0x1ebc }}},\r
- { 0x1ebf, {1, {0x1ebe }}},\r
- { 0x1ec1, {1, {0x1ec0 }}},\r
- { 0x1ec3, {1, {0x1ec2 }}},\r
- { 0x1ec5, {1, {0x1ec4 }}},\r
- { 0x1ec7, {1, {0x1ec6 }}},\r
- { 0x1ec9, {1, {0x1ec8 }}},\r
- { 0x1ecb, {1, {0x1eca }}},\r
- { 0x1ecd, {1, {0x1ecc }}},\r
- { 0x1ecf, {1, {0x1ece }}},\r
- { 0x1ed1, {1, {0x1ed0 }}},\r
- { 0x1ed3, {1, {0x1ed2 }}},\r
- { 0x1ed5, {1, {0x1ed4 }}},\r
- { 0x1ed7, {1, {0x1ed6 }}},\r
- { 0x1ed9, {1, {0x1ed8 }}},\r
- { 0x1edb, {1, {0x1eda }}},\r
- { 0x1edd, {1, {0x1edc }}},\r
- { 0x1edf, {1, {0x1ede }}},\r
- { 0x1ee1, {1, {0x1ee0 }}},\r
- { 0x1ee3, {1, {0x1ee2 }}},\r
- { 0x1ee5, {1, {0x1ee4 }}},\r
- { 0x1ee7, {1, {0x1ee6 }}},\r
- { 0x1ee9, {1, {0x1ee8 }}},\r
- { 0x1eeb, {1, {0x1eea }}},\r
- { 0x1eed, {1, {0x1eec }}},\r
- { 0x1eef, {1, {0x1eee }}},\r
- { 0x1ef1, {1, {0x1ef0 }}},\r
- { 0x1ef3, {1, {0x1ef2 }}},\r
- { 0x1ef5, {1, {0x1ef4 }}},\r
- { 0x1ef7, {1, {0x1ef6 }}},\r
- { 0x1ef9, {1, {0x1ef8 }}},\r
- { 0x1f00, {1, {0x1f08 }}},\r
- { 0x1f01, {1, {0x1f09 }}},\r
- { 0x1f02, {1, {0x1f0a }}},\r
- { 0x1f03, {1, {0x1f0b }}},\r
- { 0x1f04, {1, {0x1f0c }}},\r
- { 0x1f05, {1, {0x1f0d }}},\r
- { 0x1f06, {1, {0x1f0e }}},\r
- { 0x1f07, {1, {0x1f0f }}},\r
- { 0x1f10, {1, {0x1f18 }}},\r
- { 0x1f11, {1, {0x1f19 }}},\r
- { 0x1f12, {1, {0x1f1a }}},\r
- { 0x1f13, {1, {0x1f1b }}},\r
- { 0x1f14, {1, {0x1f1c }}},\r
- { 0x1f15, {1, {0x1f1d }}},\r
- { 0x1f20, {1, {0x1f28 }}},\r
- { 0x1f21, {1, {0x1f29 }}},\r
- { 0x1f22, {1, {0x1f2a }}},\r
- { 0x1f23, {1, {0x1f2b }}},\r
- { 0x1f24, {1, {0x1f2c }}},\r
- { 0x1f25, {1, {0x1f2d }}},\r
- { 0x1f26, {1, {0x1f2e }}},\r
- { 0x1f27, {1, {0x1f2f }}},\r
- { 0x1f30, {1, {0x1f38 }}},\r
- { 0x1f31, {1, {0x1f39 }}},\r
- { 0x1f32, {1, {0x1f3a }}},\r
- { 0x1f33, {1, {0x1f3b }}},\r
- { 0x1f34, {1, {0x1f3c }}},\r
- { 0x1f35, {1, {0x1f3d }}},\r
- { 0x1f36, {1, {0x1f3e }}},\r
- { 0x1f37, {1, {0x1f3f }}},\r
- { 0x1f40, {1, {0x1f48 }}},\r
- { 0x1f41, {1, {0x1f49 }}},\r
- { 0x1f42, {1, {0x1f4a }}},\r
- { 0x1f43, {1, {0x1f4b }}},\r
- { 0x1f44, {1, {0x1f4c }}},\r
- { 0x1f45, {1, {0x1f4d }}},\r
- { 0x1f51, {1, {0x1f59 }}},\r
- { 0x1f53, {1, {0x1f5b }}},\r
- { 0x1f55, {1, {0x1f5d }}},\r
- { 0x1f57, {1, {0x1f5f }}},\r
- { 0x1f60, {1, {0x1f68 }}},\r
- { 0x1f61, {1, {0x1f69 }}},\r
- { 0x1f62, {1, {0x1f6a }}},\r
- { 0x1f63, {1, {0x1f6b }}},\r
- { 0x1f64, {1, {0x1f6c }}},\r
- { 0x1f65, {1, {0x1f6d }}},\r
- { 0x1f66, {1, {0x1f6e }}},\r
- { 0x1f67, {1, {0x1f6f }}},\r
- { 0x1f70, {1, {0x1fba }}},\r
- { 0x1f71, {1, {0x1fbb }}},\r
- { 0x1f72, {1, {0x1fc8 }}},\r
- { 0x1f73, {1, {0x1fc9 }}},\r
- { 0x1f74, {1, {0x1fca }}},\r
- { 0x1f75, {1, {0x1fcb }}},\r
- { 0x1f76, {1, {0x1fda }}},\r
- { 0x1f77, {1, {0x1fdb }}},\r
- { 0x1f78, {1, {0x1ff8 }}},\r
- { 0x1f79, {1, {0x1ff9 }}},\r
- { 0x1f7a, {1, {0x1fea }}},\r
- { 0x1f7b, {1, {0x1feb }}},\r
- { 0x1f7c, {1, {0x1ffa }}},\r
- { 0x1f7d, {1, {0x1ffb }}},\r
- { 0x1fb0, {1, {0x1fb8 }}},\r
- { 0x1fb1, {1, {0x1fb9 }}},\r
- { 0x1fd0, {1, {0x1fd8 }}},\r
- { 0x1fd1, {1, {0x1fd9 }}},\r
- { 0x1fe0, {1, {0x1fe8 }}},\r
- { 0x1fe1, {1, {0x1fe9 }}},\r
- { 0x1fe5, {1, {0x1fec }}},\r
- { 0x2170, {1, {0x2160 }}},\r
- { 0x2171, {1, {0x2161 }}},\r
- { 0x2172, {1, {0x2162 }}},\r
- { 0x2173, {1, {0x2163 }}},\r
- { 0x2174, {1, {0x2164 }}},\r
- { 0x2175, {1, {0x2165 }}},\r
- { 0x2176, {1, {0x2166 }}},\r
- { 0x2177, {1, {0x2167 }}},\r
- { 0x2178, {1, {0x2168 }}},\r
- { 0x2179, {1, {0x2169 }}},\r
- { 0x217a, {1, {0x216a }}},\r
- { 0x217b, {1, {0x216b }}},\r
- { 0x217c, {1, {0x216c }}},\r
- { 0x217d, {1, {0x216d }}},\r
- { 0x217e, {1, {0x216e }}},\r
- { 0x217f, {1, {0x216f }}},\r
- { 0x24d0, {1, {0x24b6 }}},\r
- { 0x24d1, {1, {0x24b7 }}},\r
- { 0x24d2, {1, {0x24b8 }}},\r
- { 0x24d3, {1, {0x24b9 }}},\r
- { 0x24d4, {1, {0x24ba }}},\r
- { 0x24d5, {1, {0x24bb }}},\r
- { 0x24d6, {1, {0x24bc }}},\r
- { 0x24d7, {1, {0x24bd }}},\r
- { 0x24d8, {1, {0x24be }}},\r
- { 0x24d9, {1, {0x24bf }}},\r
- { 0x24da, {1, {0x24c0 }}},\r
- { 0x24db, {1, {0x24c1 }}},\r
- { 0x24dc, {1, {0x24c2 }}},\r
- { 0x24dd, {1, {0x24c3 }}},\r
- { 0x24de, {1, {0x24c4 }}},\r
- { 0x24df, {1, {0x24c5 }}},\r
- { 0x24e0, {1, {0x24c6 }}},\r
- { 0x24e1, {1, {0x24c7 }}},\r
- { 0x24e2, {1, {0x24c8 }}},\r
- { 0x24e3, {1, {0x24c9 }}},\r
- { 0x24e4, {1, {0x24ca }}},\r
- { 0x24e5, {1, {0x24cb }}},\r
- { 0x24e6, {1, {0x24cc }}},\r
- { 0x24e7, {1, {0x24cd }}},\r
- { 0x24e8, {1, {0x24ce }}},\r
- { 0x24e9, {1, {0x24cf }}},\r
- { 0x2c30, {1, {0x2c00 }}},\r
- { 0x2c31, {1, {0x2c01 }}},\r
- { 0x2c32, {1, {0x2c02 }}},\r
- { 0x2c33, {1, {0x2c03 }}},\r
- { 0x2c34, {1, {0x2c04 }}},\r
- { 0x2c35, {1, {0x2c05 }}},\r
- { 0x2c36, {1, {0x2c06 }}},\r
- { 0x2c37, {1, {0x2c07 }}},\r
- { 0x2c38, {1, {0x2c08 }}},\r
- { 0x2c39, {1, {0x2c09 }}},\r
- { 0x2c3a, {1, {0x2c0a }}},\r
- { 0x2c3b, {1, {0x2c0b }}},\r
- { 0x2c3c, {1, {0x2c0c }}},\r
- { 0x2c3d, {1, {0x2c0d }}},\r
- { 0x2c3e, {1, {0x2c0e }}},\r
- { 0x2c3f, {1, {0x2c0f }}},\r
- { 0x2c40, {1, {0x2c10 }}},\r
- { 0x2c41, {1, {0x2c11 }}},\r
- { 0x2c42, {1, {0x2c12 }}},\r
- { 0x2c43, {1, {0x2c13 }}},\r
- { 0x2c44, {1, {0x2c14 }}},\r
- { 0x2c45, {1, {0x2c15 }}},\r
- { 0x2c46, {1, {0x2c16 }}},\r
- { 0x2c47, {1, {0x2c17 }}},\r
- { 0x2c48, {1, {0x2c18 }}},\r
- { 0x2c49, {1, {0x2c19 }}},\r
- { 0x2c4a, {1, {0x2c1a }}},\r
- { 0x2c4b, {1, {0x2c1b }}},\r
- { 0x2c4c, {1, {0x2c1c }}},\r
- { 0x2c4d, {1, {0x2c1d }}},\r
- { 0x2c4e, {1, {0x2c1e }}},\r
- { 0x2c4f, {1, {0x2c1f }}},\r
- { 0x2c50, {1, {0x2c20 }}},\r
- { 0x2c51, {1, {0x2c21 }}},\r
- { 0x2c52, {1, {0x2c22 }}},\r
- { 0x2c53, {1, {0x2c23 }}},\r
- { 0x2c54, {1, {0x2c24 }}},\r
- { 0x2c55, {1, {0x2c25 }}},\r
- { 0x2c56, {1, {0x2c26 }}},\r
- { 0x2c57, {1, {0x2c27 }}},\r
- { 0x2c58, {1, {0x2c28 }}},\r
- { 0x2c59, {1, {0x2c29 }}},\r
- { 0x2c5a, {1, {0x2c2a }}},\r
- { 0x2c5b, {1, {0x2c2b }}},\r
- { 0x2c5c, {1, {0x2c2c }}},\r
- { 0x2c5d, {1, {0x2c2d }}},\r
- { 0x2c5e, {1, {0x2c2e }}},\r
- { 0x2c81, {1, {0x2c80 }}},\r
- { 0x2c83, {1, {0x2c82 }}},\r
- { 0x2c85, {1, {0x2c84 }}},\r
- { 0x2c87, {1, {0x2c86 }}},\r
- { 0x2c89, {1, {0x2c88 }}},\r
- { 0x2c8b, {1, {0x2c8a }}},\r
- { 0x2c8d, {1, {0x2c8c }}},\r
- { 0x2c8f, {1, {0x2c8e }}},\r
- { 0x2c91, {1, {0x2c90 }}},\r
- { 0x2c93, {1, {0x2c92 }}},\r
- { 0x2c95, {1, {0x2c94 }}},\r
- { 0x2c97, {1, {0x2c96 }}},\r
- { 0x2c99, {1, {0x2c98 }}},\r
- { 0x2c9b, {1, {0x2c9a }}},\r
- { 0x2c9d, {1, {0x2c9c }}},\r
- { 0x2c9f, {1, {0x2c9e }}},\r
- { 0x2ca1, {1, {0x2ca0 }}},\r
- { 0x2ca3, {1, {0x2ca2 }}},\r
- { 0x2ca5, {1, {0x2ca4 }}},\r
- { 0x2ca7, {1, {0x2ca6 }}},\r
- { 0x2ca9, {1, {0x2ca8 }}},\r
- { 0x2cab, {1, {0x2caa }}},\r
- { 0x2cad, {1, {0x2cac }}},\r
- { 0x2caf, {1, {0x2cae }}},\r
- { 0x2cb1, {1, {0x2cb0 }}},\r
- { 0x2cb3, {1, {0x2cb2 }}},\r
- { 0x2cb5, {1, {0x2cb4 }}},\r
- { 0x2cb7, {1, {0x2cb6 }}},\r
- { 0x2cb9, {1, {0x2cb8 }}},\r
- { 0x2cbb, {1, {0x2cba }}},\r
- { 0x2cbd, {1, {0x2cbc }}},\r
- { 0x2cbf, {1, {0x2cbe }}},\r
- { 0x2cc1, {1, {0x2cc0 }}},\r
- { 0x2cc3, {1, {0x2cc2 }}},\r
- { 0x2cc5, {1, {0x2cc4 }}},\r
- { 0x2cc7, {1, {0x2cc6 }}},\r
- { 0x2cc9, {1, {0x2cc8 }}},\r
- { 0x2ccb, {1, {0x2cca }}},\r
- { 0x2ccd, {1, {0x2ccc }}},\r
- { 0x2ccf, {1, {0x2cce }}},\r
- { 0x2cd1, {1, {0x2cd0 }}},\r
- { 0x2cd3, {1, {0x2cd2 }}},\r
- { 0x2cd5, {1, {0x2cd4 }}},\r
- { 0x2cd7, {1, {0x2cd6 }}},\r
- { 0x2cd9, {1, {0x2cd8 }}},\r
- { 0x2cdb, {1, {0x2cda }}},\r
- { 0x2cdd, {1, {0x2cdc }}},\r
- { 0x2cdf, {1, {0x2cde }}},\r
- { 0x2ce1, {1, {0x2ce0 }}},\r
- { 0x2ce3, {1, {0x2ce2 }}},\r
- { 0x2d00, {1, {0x10a0 }}},\r
- { 0x2d01, {1, {0x10a1 }}},\r
- { 0x2d02, {1, {0x10a2 }}},\r
- { 0x2d03, {1, {0x10a3 }}},\r
- { 0x2d04, {1, {0x10a4 }}},\r
- { 0x2d05, {1, {0x10a5 }}},\r
- { 0x2d06, {1, {0x10a6 }}},\r
- { 0x2d07, {1, {0x10a7 }}},\r
- { 0x2d08, {1, {0x10a8 }}},\r
- { 0x2d09, {1, {0x10a9 }}},\r
- { 0x2d0a, {1, {0x10aa }}},\r
- { 0x2d0b, {1, {0x10ab }}},\r
- { 0x2d0c, {1, {0x10ac }}},\r
- { 0x2d0d, {1, {0x10ad }}},\r
- { 0x2d0e, {1, {0x10ae }}},\r
- { 0x2d0f, {1, {0x10af }}},\r
- { 0x2d10, {1, {0x10b0 }}},\r
- { 0x2d11, {1, {0x10b1 }}},\r
- { 0x2d12, {1, {0x10b2 }}},\r
- { 0x2d13, {1, {0x10b3 }}},\r
- { 0x2d14, {1, {0x10b4 }}},\r
- { 0x2d15, {1, {0x10b5 }}},\r
- { 0x2d16, {1, {0x10b6 }}},\r
- { 0x2d17, {1, {0x10b7 }}},\r
- { 0x2d18, {1, {0x10b8 }}},\r
- { 0x2d19, {1, {0x10b9 }}},\r
- { 0x2d1a, {1, {0x10ba }}},\r
- { 0x2d1b, {1, {0x10bb }}},\r
- { 0x2d1c, {1, {0x10bc }}},\r
- { 0x2d1d, {1, {0x10bd }}},\r
- { 0x2d1e, {1, {0x10be }}},\r
- { 0x2d1f, {1, {0x10bf }}},\r
- { 0x2d20, {1, {0x10c0 }}},\r
- { 0x2d21, {1, {0x10c1 }}},\r
- { 0x2d22, {1, {0x10c2 }}},\r
- { 0x2d23, {1, {0x10c3 }}},\r
- { 0x2d24, {1, {0x10c4 }}},\r
- { 0x2d25, {1, {0x10c5 }}},\r
- { 0xff41, {1, {0xff21 }}},\r
- { 0xff42, {1, {0xff22 }}},\r
- { 0xff43, {1, {0xff23 }}},\r
- { 0xff44, {1, {0xff24 }}},\r
- { 0xff45, {1, {0xff25 }}},\r
- { 0xff46, {1, {0xff26 }}},\r
- { 0xff47, {1, {0xff27 }}},\r
- { 0xff48, {1, {0xff28 }}},\r
- { 0xff49, {1, {0xff29 }}},\r
- { 0xff4a, {1, {0xff2a }}},\r
- { 0xff4b, {1, {0xff2b }}},\r
- { 0xff4c, {1, {0xff2c }}},\r
- { 0xff4d, {1, {0xff2d }}},\r
- { 0xff4e, {1, {0xff2e }}},\r
- { 0xff4f, {1, {0xff2f }}},\r
- { 0xff50, {1, {0xff30 }}},\r
- { 0xff51, {1, {0xff31 }}},\r
- { 0xff52, {1, {0xff32 }}},\r
- { 0xff53, {1, {0xff33 }}},\r
- { 0xff54, {1, {0xff34 }}},\r
- { 0xff55, {1, {0xff35 }}},\r
- { 0xff56, {1, {0xff36 }}},\r
- { 0xff57, {1, {0xff37 }}},\r
- { 0xff58, {1, {0xff38 }}},\r
- { 0xff59, {1, {0xff39 }}},\r
- { 0xff5a, {1, {0xff3a }}},\r
- { 0x10428, {1, {0x10400 }}},\r
- { 0x10429, {1, {0x10401 }}},\r
- { 0x1042a, {1, {0x10402 }}},\r
- { 0x1042b, {1, {0x10403 }}},\r
- { 0x1042c, {1, {0x10404 }}},\r
- { 0x1042d, {1, {0x10405 }}},\r
- { 0x1042e, {1, {0x10406 }}},\r
- { 0x1042f, {1, {0x10407 }}},\r
- { 0x10430, {1, {0x10408 }}},\r
- { 0x10431, {1, {0x10409 }}},\r
- { 0x10432, {1, {0x1040a }}},\r
- { 0x10433, {1, {0x1040b }}},\r
- { 0x10434, {1, {0x1040c }}},\r
- { 0x10435, {1, {0x1040d }}},\r
- { 0x10436, {1, {0x1040e }}},\r
- { 0x10437, {1, {0x1040f }}},\r
- { 0x10438, {1, {0x10410 }}},\r
- { 0x10439, {1, {0x10411 }}},\r
- { 0x1043a, {1, {0x10412 }}},\r
- { 0x1043b, {1, {0x10413 }}},\r
- { 0x1043c, {1, {0x10414 }}},\r
- { 0x1043d, {1, {0x10415 }}},\r
- { 0x1043e, {1, {0x10416 }}},\r
- { 0x1043f, {1, {0x10417 }}},\r
- { 0x10440, {1, {0x10418 }}},\r
- { 0x10441, {1, {0x10419 }}},\r
- { 0x10442, {1, {0x1041a }}},\r
- { 0x10443, {1, {0x1041b }}},\r
- { 0x10444, {1, {0x1041c }}},\r
- { 0x10445, {1, {0x1041d }}},\r
- { 0x10446, {1, {0x1041e }}},\r
- { 0x10447, {1, {0x1041f }}},\r
- { 0x10448, {1, {0x10420 }}},\r
- { 0x10449, {1, {0x10421 }}},\r
- { 0x1044a, {1, {0x10422 }}},\r
- { 0x1044b, {1, {0x10423 }}},\r
- { 0x1044c, {1, {0x10424 }}},\r
- { 0x1044d, {1, {0x10425 }}},\r
- { 0x1044e, {1, {0x10426 }}},\r
- { 0x1044f, {1, {0x10427 }}}\r
-};\r
-\r
-static const CaseUnfold_11_Type CaseUnfold_11_Locale[] = {\r
- { 0x0069, {1, {0x0049 }}}\r
-};\r
-\r
-static const CaseUnfold_12_Type CaseUnfold_12[] = {\r
- { {0x0061, 0x02be}, {1, {0x1e9a }}},\r
- { {0x0066, 0x0066}, {1, {0xfb00 }}},\r
- { {0x0066, 0x0069}, {1, {0xfb01 }}},\r
- { {0x0066, 0x006c}, {1, {0xfb02 }}},\r
- { {0x0068, 0x0331}, {1, {0x1e96 }}},\r
- { {0x006a, 0x030c}, {1, {0x01f0 }}},\r
- { {0x0073, 0x0073}, {1, {0x00df }}},\r
- { {0x0073, 0x0074}, {2, {0xfb05, 0xfb06 }}},\r
- { {0x0074, 0x0308}, {1, {0x1e97 }}},\r
- { {0x0077, 0x030a}, {1, {0x1e98 }}},\r
- { {0x0079, 0x030a}, {1, {0x1e99 }}},\r
- { {0x02bc, 0x006e}, {1, {0x0149 }}},\r
- { {0x03ac, 0x03b9}, {1, {0x1fb4 }}},\r
- { {0x03ae, 0x03b9}, {1, {0x1fc4 }}},\r
- { {0x03b1, 0x0342}, {1, {0x1fb6 }}},\r
- { {0x03b1, 0x03b9}, {2, {0x1fb3, 0x1fbc }}},\r
- { {0x03b7, 0x0342}, {1, {0x1fc6 }}},\r
- { {0x03b7, 0x03b9}, {2, {0x1fc3, 0x1fcc }}},\r
- { {0x03b9, 0x0342}, {1, {0x1fd6 }}},\r
- { {0x03c1, 0x0313}, {1, {0x1fe4 }}},\r
- { {0x03c5, 0x0313}, {1, {0x1f50 }}},\r
- { {0x03c5, 0x0342}, {1, {0x1fe6 }}},\r
- { {0x03c9, 0x0342}, {1, {0x1ff6 }}},\r
- { {0x03c9, 0x03b9}, {2, {0x1ff3, 0x1ffc }}},\r
- { {0x03ce, 0x03b9}, {1, {0x1ff4 }}},\r
- { {0x0565, 0x0582}, {1, {0x0587 }}},\r
- { {0x0574, 0x0565}, {1, {0xfb14 }}},\r
- { {0x0574, 0x056b}, {1, {0xfb15 }}},\r
- { {0x0574, 0x056d}, {1, {0xfb17 }}},\r
- { {0x0574, 0x0576}, {1, {0xfb13 }}},\r
- { {0x057e, 0x0576}, {1, {0xfb16 }}},\r
- { {0x1f00, 0x03b9}, {2, {0x1f88, 0x1f80 }}},\r
- { {0x1f01, 0x03b9}, {2, {0x1f81, 0x1f89 }}},\r
- { {0x1f02, 0x03b9}, {2, {0x1f82, 0x1f8a }}},\r
- { {0x1f03, 0x03b9}, {2, {0x1f83, 0x1f8b }}},\r
- { {0x1f04, 0x03b9}, {2, {0x1f84, 0x1f8c }}},\r
- { {0x1f05, 0x03b9}, {2, {0x1f85, 0x1f8d }}},\r
- { {0x1f06, 0x03b9}, {2, {0x1f86, 0x1f8e }}},\r
- { {0x1f07, 0x03b9}, {2, {0x1f87, 0x1f8f }}},\r
- { {0x1f20, 0x03b9}, {2, {0x1f90, 0x1f98 }}},\r
- { {0x1f21, 0x03b9}, {2, {0x1f91, 0x1f99 }}},\r
- { {0x1f22, 0x03b9}, {2, {0x1f92, 0x1f9a }}},\r
- { {0x1f23, 0x03b9}, {2, {0x1f93, 0x1f9b }}},\r
- { {0x1f24, 0x03b9}, {2, {0x1f94, 0x1f9c }}},\r
- { {0x1f25, 0x03b9}, {2, {0x1f95, 0x1f9d }}},\r
- { {0x1f26, 0x03b9}, {2, {0x1f96, 0x1f9e }}},\r
- { {0x1f27, 0x03b9}, {2, {0x1f97, 0x1f9f }}},\r
- { {0x1f60, 0x03b9}, {2, {0x1fa0, 0x1fa8 }}},\r
- { {0x1f61, 0x03b9}, {2, {0x1fa1, 0x1fa9 }}},\r
- { {0x1f62, 0x03b9}, {2, {0x1fa2, 0x1faa }}},\r
- { {0x1f63, 0x03b9}, {2, {0x1fa3, 0x1fab }}},\r
- { {0x1f64, 0x03b9}, {2, {0x1fa4, 0x1fac }}},\r
- { {0x1f65, 0x03b9}, {2, {0x1fa5, 0x1fad }}},\r
- { {0x1f66, 0x03b9}, {2, {0x1fa6, 0x1fae }}},\r
- { {0x1f67, 0x03b9}, {2, {0x1fa7, 0x1faf }}},\r
- { {0x1f70, 0x03b9}, {1, {0x1fb2 }}},\r
- { {0x1f74, 0x03b9}, {1, {0x1fc2 }}},\r
- { {0x1f7c, 0x03b9}, {1, {0x1ff2 }}}\r
-};\r
-\r
-static const CaseUnfold_12_Type CaseUnfold_12_Locale[] = {\r
- { {0x0069, 0x0307}, {1, {0x0130 }}}\r
-};\r
-\r
-static const CaseUnfold_13_Type CaseUnfold_13[] = {\r
- { {0x0066, 0x0066, 0x0069}, {1, {0xfb03 }}},\r
- { {0x0066, 0x0066, 0x006c}, {1, {0xfb04 }}},\r
- { {0x03b1, 0x0342, 0x03b9}, {1, {0x1fb7 }}},\r
- { {0x03b7, 0x0342, 0x03b9}, {1, {0x1fc7 }}},\r
- { {0x03b9, 0x0308, 0x0300}, {1, {0x1fd2 }}},\r
- { {0x03b9, 0x0308, 0x0301}, {2, {0x0390, 0x1fd3 }}},\r
- { {0x03b9, 0x0308, 0x0342}, {1, {0x1fd7 }}},\r
- { {0x03c5, 0x0308, 0x0300}, {1, {0x1fe2 }}},\r
- { {0x03c5, 0x0308, 0x0301}, {2, {0x03b0, 0x1fe3 }}},\r
- { {0x03c5, 0x0308, 0x0342}, {1, {0x1fe7 }}},\r
- { {0x03c5, 0x0313, 0x0300}, {1, {0x1f52 }}},\r
- { {0x03c5, 0x0313, 0x0301}, {1, {0x1f54 }}},\r
- { {0x03c5, 0x0313, 0x0342}, {1, {0x1f56 }}},\r
- { {0x03c9, 0x0342, 0x03b9}, {1, {0x1ff7 }}}\r
-};\r
-\r
-\r
-static PosixBracketEntryType HashEntryData[] = {\r
-  { (UChar* )"NEWLINE",                0,  7 },\r
-  { (UChar* )"Alpha",                  1,  5 },\r
-  { (UChar* )"Blank",                  2,  5 },\r
-  { (UChar* )"Cntrl",                  3,  5 },\r
-  { (UChar* )"Digit",                  4,  5 },\r
-  { (UChar* )"Graph",                  5,  5 },\r
-  { (UChar* )"Lower",                  6,  5 },\r
-  { (UChar* )"Print",                  7,  5 },\r
-  { (UChar* )"Punct",                  8,  5 },\r
-  { (UChar* )"Space",                  9,  5 },\r
-  { (UChar* )"Upper",                 10,  5 },\r
-  { (UChar* )"XDigit",                11,  6 },\r
-  { (UChar* )"Word",                  12,  4 },\r
-  { (UChar* )"Alnum",                 13,  5 },\r
-  { (UChar* )"ASCII",                 14,  5 },\r
-\r
-#ifdef USE_UNICODE_PROPERTIES\r
-  { (UChar* )"Any",                   15,  3 },\r
-  { (UChar* )"Assigned",              16,  8 },\r
-  { (UChar* )"C",                     17,  1 },\r
-  { (UChar* )"Cc",                    18,  2 },\r
-  { (UChar* )"Cf",                    19,  2 },\r
-  { (UChar* )"Cn",                    20,  2 },\r
-  { (UChar* )"Co",                    21,  2 },\r
-  { (UChar* )"Cs",                    22,  2 },\r
-  { (UChar* )"L",                     23,  1 },\r
-  { (UChar* )"Ll",                    24,  2 },\r
-  { (UChar* )"Lm",                    25,  2 },\r
-  { (UChar* )"Lo",                    26,  2 },\r
-  { (UChar* )"Lt",                    27,  2 },\r
-  { (UChar* )"Lu",                    28,  2 },\r
-  { (UChar* )"M",                     29,  1 },\r
-  { (UChar* )"Mc",                    30,  2 },\r
-  { (UChar* )"Me",                    31,  2 },\r
-  { (UChar* )"Mn",                    32,  2 },\r
-  { (UChar* )"N",                     33,  1 },\r
-  { (UChar* )"Nd",                    34,  2 },\r
-  { (UChar* )"Nl",                    35,  2 },\r
-  { (UChar* )"No",                    36,  2 },\r
-  { (UChar* )"P",                     37,  1 },\r
-  { (UChar* )"Pc",                    38,  2 },\r
-  { (UChar* )"Pd",                    39,  2 },\r
-  { (UChar* )"Pe",                    40,  2 },\r
-  { (UChar* )"Pf",                    41,  2 },\r
-  { (UChar* )"Pi",                    42,  2 },\r
-  { (UChar* )"Po",                    43,  2 },\r
-  { (UChar* )"Ps",                    44,  2 },\r
-  { (UChar* )"S",                     45,  1 },\r
-  { (UChar* )"Sc",                    46,  2 },\r
-  { (UChar* )"Sk",                    47,  2 },\r
-  { (UChar* )"Sm",                    48,  2 },\r
-  { (UChar* )"So",                    49,  2 },\r
-  { (UChar* )"Z",                     50,  1 },\r
-  { (UChar* )"Zl",                    51,  2 },\r
-  { (UChar* )"Zp",                    52,  2 },\r
-  { (UChar* )"Zs",                    53,  2 },\r
-  { (UChar* )"Arabic",                54,  6 },\r
-  { (UChar* )"Armenian",              55,  8 },\r
-  { (UChar* )"Bengali",               56,  7 },\r
-  { (UChar* )"Bopomofo",              57,  8 },\r
-  { (UChar* )"Braille",               58,  7 },\r
-  { (UChar* )"Buginese",              59,  8 },\r
-  { (UChar* )"Buhid",                 60,  5 },\r
-  { (UChar* )"Canadian_Aboriginal",   61, 19 },\r
-  { (UChar* )"Cherokee",              62,  8 },\r
-  { (UChar* )"Common",                63,  6 },\r
-  { (UChar* )"Coptic",                64,  6 },\r
-  { (UChar* )"Cypriot",               65,  7 },\r
-  { (UChar* )"Cyrillic",              66,  8 },\r
-  { (UChar* )"Deseret",               67,  7 },\r
-  { (UChar* )"Devanagari",            68, 10 },\r
-  { (UChar* )"Ethiopic",              69,  8 },\r
-  { (UChar* )"Georgian",              70,  8 },\r
-  { (UChar* )"Glagolitic",            71, 10 },\r
-  { (UChar* )"Gothic",                72,  6 },\r
-  { (UChar* )"Greek",                 73,  5 },\r
-  { (UChar* )"Gujarati",              74,  8 },\r
-  { (UChar* )"Gurmukhi",              75,  8 },\r
-  { (UChar* )"Han",                   76,  3 },\r
-  { (UChar* )"Hangul",                77,  6 },\r
-  { (UChar* )"Hanunoo",               78,  7 },\r
-  { (UChar* )"Hebrew",                79,  6 },\r
-  { (UChar* )"Hiragana",              80,  8 },\r
-  { (UChar* )"Inherited",             81,  9 },\r
-  { (UChar* )"Kannada",               82,  7 },\r
-  { (UChar* )"Katakana",              83,  8 },\r
-  { (UChar* )"Kharoshthi",            84, 10 },\r
-  { (UChar* )"Khmer",                 85,  5 },\r
-  { (UChar* )"Lao",                   86,  3 },\r
-  { (UChar* )"Latin",                 87,  5 },\r
-  { (UChar* )"Limbu",                 88,  5 },\r
-  { (UChar* )"Linear_B",              89,  8 },\r
-  { (UChar* )"Malayalam",             90,  9 },\r
-  { (UChar* )"Mongolian",             91,  9 },\r
-  { (UChar* )"Myanmar",               92,  7 },\r
-  { (UChar* )"New_Tai_Lue",           93, 11 },\r
-  { (UChar* )"Ogham",                 94,  5 },\r
-  { (UChar* )"Old_Italic",            95, 10 },\r
-  { (UChar* )"Old_Persian",           96, 11 },\r
-  { (UChar* )"Oriya",                 97,  5 },\r
-  { (UChar* )"Osmanya",               98,  7 },\r
-  { (UChar* )"Runic",                 99,  5 },\r
-  { (UChar* )"Shavian",              100,  7 },\r
-  { (UChar* )"Sinhala",              101,  7 },\r
-  { (UChar* )"Syloti_Nagri",         102, 12 },\r
-  { (UChar* )"Syriac",               103,  6 },\r
-  { (UChar* )"Tagalog",              104,  7 },\r
-  { (UChar* )"Tagbanwa",             105,  8 },\r
-  { (UChar* )"Tai_Le",               106,  6 },\r
-  { (UChar* )"Tamil",                107,  5 },\r
-  { (UChar* )"Telugu",               108,  6 },\r
-  { (UChar* )"Thaana",               109,  6 },\r
-  { (UChar* )"Thai",                 110,  4 },\r
-  { (UChar* )"Tibetan",              111,  7 },\r
-  { (UChar* )"Tifinagh",             112,  8 },\r
-  { (UChar* )"Ugaritic",             113,  8 },\r
-  { (UChar* )"Yi",                   114,  2 },\r
-#endif /* USE_UNICODE_PROPERTIES */\r
-  { (UChar* )NULL,                    -1,  0 }\r
-};\r
-\r
-#ifdef USE_UNICODE_PROPERTIES\r
-#define CODE_RANGES_NUM     115\r
-#else\r
-#define CODE_RANGES_NUM      15\r
-#endif\r
-\r
-static const OnigCodePoint* CodeRanges[CODE_RANGES_NUM];\r
-static int CodeRangeTableInited = 0;\r
-\r
-static void init_code_range_array(void) {\r
-  THREAD_ATOMIC_START;\r
-\r
-  CodeRanges[0] = CR_NEWLINE;\r
-  CodeRanges[1] = CR_Alpha;\r
-  CodeRanges[2] = CR_Blank;\r
-  CodeRanges[3] = CR_Cntrl;\r
-  CodeRanges[4] = CR_Digit;\r
-  CodeRanges[5] = CR_Graph;\r
-  CodeRanges[6] = CR_Lower;\r
-  CodeRanges[7] = CR_Print;\r
-  CodeRanges[8] = CR_Punct;\r
-  CodeRanges[9] = CR_Space;\r
-  CodeRanges[10] = CR_Upper;\r
-  CodeRanges[11] = CR_XDigit;\r
-  CodeRanges[12] = CR_Word;\r
-  CodeRanges[13] = CR_Alnum;\r
-  CodeRanges[14] = CR_ASCII;\r
-\r
-#ifdef USE_UNICODE_PROPERTIES\r
-  CodeRanges[15] = CR_Any;\r
-  CodeRanges[16] = CR_Assigned;\r
-  CodeRanges[17] = CR_C;\r
-  CodeRanges[18] = CR_Cc;\r
-  CodeRanges[19] = CR_Cf;\r
-  CodeRanges[20] = CR_Cn;\r
-  CodeRanges[21] = CR_Co;\r
-  CodeRanges[22] = CR_Cs;\r
-  CodeRanges[23] = CR_L;\r
-  CodeRanges[24] = CR_Ll;\r
-  CodeRanges[25] = CR_Lm;\r
-  CodeRanges[26] = CR_Lo;\r
-  CodeRanges[27] = CR_Lt;\r
-  CodeRanges[28] = CR_Lu;\r
-  CodeRanges[29] = CR_M;\r
-  CodeRanges[30] = CR_Mc;\r
-  CodeRanges[31] = CR_Me;\r
-  CodeRanges[32] = CR_Mn;\r
-  CodeRanges[33] = CR_N;\r
-  CodeRanges[34] = CR_Nd;\r
-  CodeRanges[35] = CR_Nl;\r
-  CodeRanges[36] = CR_No;\r
-  CodeRanges[37] = CR_P;\r
-  CodeRanges[38] = CR_Pc;\r
-  CodeRanges[39] = CR_Pd;\r
-  CodeRanges[40] = CR_Pe;\r
-  CodeRanges[41] = CR_Pf;\r
-  CodeRanges[42] = CR_Pi;\r
-  CodeRanges[43] = CR_Po;\r
-  CodeRanges[44] = CR_Ps;\r
-  CodeRanges[45] = CR_S;\r
-  CodeRanges[46] = CR_Sc;\r
-  CodeRanges[47] = CR_Sk;\r
-  CodeRanges[48] = CR_Sm;\r
-  CodeRanges[49] = CR_So;\r
-  CodeRanges[50] = CR_Z;\r
-  CodeRanges[51] = CR_Zl;\r
-  CodeRanges[52] = CR_Zp;\r
-  CodeRanges[53] = CR_Zs;\r
-  CodeRanges[54] = CR_Arabic;\r
-  CodeRanges[55] = CR_Armenian;\r
-  CodeRanges[56] = CR_Bengali;\r
-  CodeRanges[57] = CR_Bopomofo;\r
-  CodeRanges[58] = CR_Braille;\r
-  CodeRanges[59] = CR_Buginese;\r
-  CodeRanges[60] = CR_Buhid;\r
-  CodeRanges[61] = CR_Canadian_Aboriginal;\r
-  CodeRanges[62] = CR_Cherokee;\r
-  CodeRanges[63] = CR_Common;\r
-  CodeRanges[64] = CR_Coptic;\r
-  CodeRanges[65] = CR_Cypriot;\r
-  CodeRanges[66] = CR_Cyrillic;\r
-  CodeRanges[67] = CR_Deseret;\r
-  CodeRanges[68] = CR_Devanagari;\r
-  CodeRanges[69] = CR_Ethiopic;\r
-  CodeRanges[70] = CR_Georgian;\r
-  CodeRanges[71] = CR_Glagolitic;\r
-  CodeRanges[72] = CR_Gothic;\r
-  CodeRanges[73] = CR_Greek;\r
-  CodeRanges[74] = CR_Gujarati;\r
-  CodeRanges[75] = CR_Gurmukhi;\r
-  CodeRanges[76] = CR_Han;\r
-  CodeRanges[77] = CR_Hangul;\r
-  CodeRanges[78] = CR_Hanunoo;\r
-  CodeRanges[79] = CR_Hebrew;\r
-  CodeRanges[80] = CR_Hiragana;\r
-  CodeRanges[81] = CR_Inherited;\r
-  CodeRanges[82] = CR_Kannada;\r
-  CodeRanges[83] = CR_Katakana;\r
-  CodeRanges[84] = CR_Kharoshthi;\r
-  CodeRanges[85] = CR_Khmer;\r
-  CodeRanges[86] = CR_Lao;\r
-  CodeRanges[87] = CR_Latin;\r
-  CodeRanges[88] = CR_Limbu;\r
-  CodeRanges[89] = CR_Linear_B;\r
-  CodeRanges[90] = CR_Malayalam;\r
-  CodeRanges[91] = CR_Mongolian;\r
-  CodeRanges[92] = CR_Myanmar;\r
-  CodeRanges[93] = CR_New_Tai_Lue;\r
-  CodeRanges[94] = CR_Ogham;\r
-  CodeRanges[95] = CR_Old_Italic;\r
-  CodeRanges[96] = CR_Old_Persian;\r
-  CodeRanges[97] = CR_Oriya;\r
-  CodeRanges[98] = CR_Osmanya;\r
-  CodeRanges[99] = CR_Runic;\r
-  CodeRanges[100] = CR_Shavian;\r
-  CodeRanges[101] = CR_Sinhala;\r
-  CodeRanges[102] = CR_Syloti_Nagri;\r
-  CodeRanges[103] = CR_Syriac;\r
-  CodeRanges[104] = CR_Tagalog;\r
-  CodeRanges[105] = CR_Tagbanwa;\r
-  CodeRanges[106] = CR_Tai_Le;\r
-  CodeRanges[107] = CR_Tamil;\r
-  CodeRanges[108] = CR_Telugu;\r
-  CodeRanges[109] = CR_Thaana;\r
-  CodeRanges[110] = CR_Thai;\r
-  CodeRanges[111] = CR_Tibetan;\r
-  CodeRanges[112] = CR_Tifinagh;\r
-  CodeRanges[113] = CR_Ugaritic;\r
-  CodeRanges[114] = CR_Yi;\r
-#endif /* USE_UNICODE_PROPERTIES */\r
-\r
-  CodeRangeTableInited = 1;\r
-  THREAD_ATOMIC_END;\r
-}\r
-\r
-extern int\r
-onigenc_unicode_is_code_ctype(OnigCodePoint code, unsigned int ctype)\r
-{\r
-  if (\r
-#ifdef USE_UNICODE_PROPERTIES\r
-      ctype <= ONIGENC_MAX_STD_CTYPE &&\r
-#endif\r
-      code < 256) {\r
-    return ONIGENC_IS_UNICODE_ISO_8859_1_CTYPE(code, ctype);\r
-  }\r
-\r
-  if (ctype >= CODE_RANGES_NUM) {\r
-    return ONIGERR_TYPE_BUG;\r
-  }\r
-\r
-  if (CodeRangeTableInited == 0) init_code_range_array();\r
-\r
-  return onig_is_in_code_range((UChar* )CodeRanges[ctype], code);\r
-}\r
-\r
-\r
-extern int\r
-onigenc_unicode_ctype_code_range(int ctype, const OnigCodePoint* ranges[])\r
-{\r
-  if (ctype >= CODE_RANGES_NUM) {\r
-    return ONIGERR_TYPE_BUG;\r
-  }\r
-\r
-  if (CodeRangeTableInited == 0) init_code_range_array();\r
-\r
-  *ranges = CodeRanges[ctype];\r
-\r
-  return 0;\r
-}\r
-\r
-extern int\r
-onigenc_utf16_32_get_ctype_code_range(OnigCtype ctype, OnigCodePoint* sb_out,\r
-                                      const OnigCodePoint* ranges[])\r
-{\r
-  *sb_out = 0x00;\r
-  return onigenc_unicode_ctype_code_range(ctype, ranges);\r
-}\r
-\r
-#include "st.h"\r
-\r
-#define PROPERTY_NAME_MAX_SIZE    20\r
-\r
-static st_table* NameCtypeTable;\r
-static int NameTableInited = 0;\r
-\r
-static int init_name_ctype_table(void)\r
-{\r
-  PosixBracketEntryType *pb;\r
-\r
-  THREAD_ATOMIC_START;\r
-\r
-  NameCtypeTable = onig_st_init_strend_table_with_size(100);\r
-  if (ONIG_IS_NULL(NameCtypeTable)) return ONIGERR_MEMORY;\r
-\r
-  for (pb = HashEntryData; ONIG_IS_NOT_NULL(pb->name); pb++) {\r
-    onig_st_insert_strend(NameCtypeTable, pb->name, pb->name + pb->len,\r
-                         (st_data_t )pb->ctype);\r
-  }\r
-\r
-  NameTableInited = 1;\r
-  THREAD_ATOMIC_END;\r
-  return 0;\r
-}\r
-\r
-extern int\r
-onigenc_unicode_property_name_to_ctype(OnigEncoding enc, UChar* name, UChar* end)\r
-{\r
-  int len;\r
-  hash_data_type ctype;\r
-  UChar buf[PROPERTY_NAME_MAX_SIZE];\r
-  UChar *p;\r
-  OnigCodePoint code;\r
-\r
-  p = name;\r
-  len = 0;\r
-  while (p < end) {\r
-    code = ONIGENC_MBC_TO_CODE(enc, p, end);\r
-    if (code >= 0x80)\r
-      return ONIGERR_INVALID_CHAR_PROPERTY_NAME;\r
-\r
-    buf[len++] = (UChar )code;\r
-    if (len >= PROPERTY_NAME_MAX_SIZE)\r
-      return ONIGERR_INVALID_CHAR_PROPERTY_NAME;\r
-\r
-    p += enclen(enc, p);\r
-  }\r
-\r
-  buf[len] = 0;\r
-\r
-  if (NameTableInited == 0)  init_name_ctype_table();\r
-\r
-  if (onig_st_lookup_strend(NameCtypeTable, buf, buf + len, &ctype) == 0) {\r
-    return ONIGERR_INVALID_CHAR_PROPERTY_NAME;\r
-  }\r
-\r
-  return (int )ctype;\r
-}\r
-\r
-\r
-static int\r
-code2_cmp(OnigCodePoint* x, OnigCodePoint* y)\r
-{\r
-  if (x[0] == y[0] && x[1] == y[1]) return 0;\r
-  return 1;\r
-}\r
-\r
-static int\r
-code2_hash(OnigCodePoint* x)\r
-{\r
-  return (int )(x[0] + x[1]);\r
-}\r
-\r
-static struct st_hash_type type_code2_hash = {\r
-  code2_cmp,\r
-  code2_hash,\r
-};\r
-\r
-static int\r
-code3_cmp(OnigCodePoint* x, OnigCodePoint* y)\r
-{\r
-  if (x[0] == y[0] && x[1] == y[1] && x[2] == y[2]) return 0;\r
-  return 1;\r
-}\r
-\r
-static int\r
-code3_hash(OnigCodePoint* x)\r
-{\r
-  return (int )(x[0] + x[1] + x[2]);\r
-}\r
-\r
-static struct st_hash_type type_code3_hash = {\r
-  code3_cmp,\r
-  code3_hash,\r
-};\r
-\r
-\r
-static st_table* FoldTable;    /* fold-1, fold-2, fold-3 */\r
-static st_table* Unfold1Table;\r
-static st_table* Unfold2Table;\r
-static st_table* Unfold3Table;\r
-static int CaseFoldInited = 0;\r
-\r
-\r
-extern void onigenc_end_unicode(void)\r
-{\r
-  THREAD_ATOMIC_START;\r
-\r
-  if (FoldTable    != 0) st_free_table(FoldTable);\r
-  if (Unfold1Table != 0) st_free_table(Unfold1Table);\r
-  if (Unfold2Table != 0) st_free_table(Unfold2Table);\r
-  if (Unfold3Table != 0) st_free_table(Unfold3Table);\r
-\r
-  CaseFoldInited = 0;\r
-\r
-  THREAD_ATOMIC_END;\r
-}\r
-\r
-static int init_case_fold_table(void)\r
-{\r
-  const CaseFold_11_Type   *p;\r
-  const CaseUnfold_11_Type *p1;\r
-  const CaseUnfold_12_Type *p2;\r
-  const CaseUnfold_13_Type *p3;\r
-  int i;\r
-\r
-  THREAD_ATOMIC_START;\r
-\r
-  FoldTable = st_init_numtable_with_size(1200);\r
-  if (ONIG_IS_NULL(FoldTable)) return ONIGERR_MEMORY;\r
-  for (i = 0; i < (int )(sizeof(CaseFold)/sizeof(CaseFold_11_Type)); i++) {\r
-    p = &CaseFold[i];\r
-    st_add_direct(FoldTable, (st_data_t )p->from, (st_data_t )&(p->to));\r
-  }\r
-  for (i = 0; i < (int )(sizeof(CaseFold_Locale)/sizeof(CaseFold_11_Type));\r
-       i++) {\r
-    p = &CaseFold_Locale[i];\r
-    st_add_direct(FoldTable, (st_data_t )p->from, (st_data_t )&(p->to));\r
-  }\r
-\r
-  Unfold1Table = st_init_numtable_with_size(1000);\r
-  if (ONIG_IS_NULL(Unfold1Table)) return ONIGERR_MEMORY;\r
-\r
-  for (i = 0; i < (int )(sizeof(CaseUnfold_11)/sizeof(CaseUnfold_11_Type));\r
-       i++) {\r
-    p1 = &CaseUnfold_11[i];\r
-    st_add_direct(Unfold1Table, (st_data_t )p1->from, (st_data_t )&(p1->to));\r
-  }\r
-  for (i = 0;\r
-       i < (int )(sizeof(CaseUnfold_11_Locale)/sizeof(CaseUnfold_11_Type));\r
-       i++) {\r
-    p1 = &CaseUnfold_11_Locale[i];\r
-    st_add_direct(Unfold1Table, (st_data_t )p1->from, (st_data_t )&(p1->to));\r
-  }\r
-\r
-  Unfold2Table = st_init_table_with_size(&type_code2_hash, 200);\r
-  if (ONIG_IS_NULL(Unfold2Table)) return ONIGERR_MEMORY;\r
-\r
-  for (i = 0; i < (int )(sizeof(CaseUnfold_12)/sizeof(CaseUnfold_12_Type));\r
-       i++) {\r
-    p2 = &CaseUnfold_12[i];\r
-    st_add_direct(Unfold2Table, (st_data_t )p2->from, (st_data_t )(&p2->to));\r
-  }\r
-  for (i = 0;\r
-       i < (int )(sizeof(CaseUnfold_12_Locale)/sizeof(CaseUnfold_12_Type));\r
-       i++) {\r
-    p2 = &CaseUnfold_12_Locale[i];\r
-    st_add_direct(Unfold2Table, (st_data_t )p2->from, (st_data_t )(&p2->to));\r
-  }\r
-\r
-  Unfold3Table = st_init_table_with_size(&type_code3_hash, 30);\r
-  if (ONIG_IS_NULL(Unfold3Table)) return ONIGERR_MEMORY;\r
-\r
-  for (i = 0; i < (int )(sizeof(CaseUnfold_13)/sizeof(CaseUnfold_13_Type));\r
-       i++) {\r
-    p3 = &CaseUnfold_13[i];\r
-    st_add_direct(Unfold3Table, (st_data_t )p3->from, (st_data_t )(&p3->to));\r
-  }\r
-\r
-\r
-  onig_add_end_call(onigenc_end_unicode);\r
-\r
-  CaseFoldInited = 1;\r
-  THREAD_ATOMIC_END;\r
-  return 0;\r
-}\r
-\r
-extern int\r
-onigenc_unicode_mbc_case_fold(OnigEncoding enc,\r
-    OnigCaseFoldType flag ARG_UNUSED, const UChar** pp, const UChar* end,\r
-    UChar* fold)\r
-{\r
-  CodePointList3 *to;\r
-  OnigCodePoint code;\r
-  int i, len, rlen;\r
-  const UChar *p = *pp;\r
-\r
-  if (CaseFoldInited == 0) init_case_fold_table();\r
-\r
-  code = ONIGENC_MBC_TO_CODE(enc, p, end);\r
-  len = enclen(enc, p);\r
-  *pp += len;\r
-\r
-#ifdef USE_UNICODE_CASE_FOLD_TURKISH_AZERI\r
-  if ((flag & ONIGENC_CASE_FOLD_TURKISH_AZERI) != 0) {\r
-    if (code == 0x0049) {\r
-      return ONIGENC_CODE_TO_MBC(enc, 0x0131, fold);\r
-    }\r
-    else if (code == 0x0130) {\r
-      return ONIGENC_CODE_TO_MBC(enc, 0x0069, fold);\r
-    }\r
-  }\r
-#endif\r
-\r
-  if (onig_st_lookup(FoldTable, (st_data_t )code, (void* )&to) != 0) {\r
-    if (to->n == 1) {\r
-      return ONIGENC_CODE_TO_MBC(enc, to->code[0], fold);      \r
-    }\r
-#if 0\r
-    /* NO NEEDS TO CHECK */\r
-    else if ((flag & INTERNAL_ONIGENC_CASE_FOLD_MULTI_CHAR) != 0) {\r
-#else\r
-    else {\r
-#endif\r
-      rlen = 0;\r
-      for (i = 0; i < to->n; i++) {\r
-       len = ONIGENC_CODE_TO_MBC(enc, to->code[i], fold);\r
-       fold += len;\r
-       rlen += len;\r
-      }\r
-      return rlen;\r
-    }\r
-  }\r
-\r
-  for (i = 0; i < len; i++) {\r
-    *fold++ = *p++;\r
-  }\r
-  return len;\r
-}\r
-\r
-extern int\r
-onigenc_unicode_apply_all_case_fold(OnigCaseFoldType flag,\r
-                                   OnigApplyAllCaseFoldFunc f, void* arg)\r
-{\r
-  const CaseUnfold_11_Type* p11;\r
-  OnigCodePoint code;\r
-  int i, j, k, r;\r
-\r
-  /* if (CaseFoldInited == 0) init_case_fold_table(); */\r
-\r
-  for (i = 0; i < (int )(sizeof(CaseUnfold_11)/sizeof(CaseUnfold_11_Type));\r
-       i++) {\r
-    p11 = &CaseUnfold_11[i];\r
-    for (j = 0; j < p11->to.n; j++) {\r
-      code = p11->from;\r
-      r = (*f)(p11->to.code[j], &code, 1, arg);\r
-      if (r != 0) return r;\r
-\r
-      code = p11->to.code[j];\r
-      r = (*f)(p11->from, &code, 1, arg);\r
-      if (r != 0) return r;\r
-\r
-      for (k = 0; k < j; k++) {\r
-       r = (*f)(p11->to.code[j], (OnigCodePoint* )(&p11->to.code[k]), 1, arg);\r
-       if (r != 0) return r;\r
-\r
-       r = (*f)(p11->to.code[k], (OnigCodePoint* )(&p11->to.code[j]), 1, arg);\r
-       if (r != 0) return r;\r
-      }\r
-    }\r
-  }\r
-\r
-#ifdef USE_UNICODE_CASE_FOLD_TURKISH_AZERI\r
-  if ((flag & ONIGENC_CASE_FOLD_TURKISH_AZERI) != 0) {\r
-    code = 0x0131;\r
-    r = (*f)(0x0049, &code, 1, arg);\r
-    if (r != 0) return r;\r
-    code = 0x0049;\r
-    r = (*f)(0x0131, &code, 1, arg);\r
-    if (r != 0) return r;\r
-\r
-    code = 0x0130;\r
-    r = (*f)(0x0069, &code, 1, arg);\r
-    if (r != 0) return r;\r
-    code = 0x0069;\r
-    r = (*f)(0x0130, &code, 1, arg);\r
-    if (r != 0) return r;\r
-  }\r
-  else {\r
-#endif\r
-    for (i = 0;\r
-        i < (int )(sizeof(CaseUnfold_11_Locale)/sizeof(CaseUnfold_11_Type));\r
-        i++) {\r
-      p11 = &CaseUnfold_11_Locale[i];\r
-      for (j = 0; j < p11->to.n; j++) {\r
-       code = p11->from;\r
-       r = (*f)(p11->to.code[j], &code, 1, arg);\r
-       if (r != 0) return r;\r
-\r
-       code = p11->to.code[j];\r
-       r = (*f)(p11->from, &code, 1, arg);\r
-       if (r != 0) return r;\r
-\r
-       for (k = 0; k < j; k++) {\r
-         r = (*f)(p11->to.code[j], (OnigCodePoint* )(&p11->to.code[k]),\r
-                  1, arg);\r
-         if (r != 0) return r;\r
-\r
-         r = (*f)(p11->to.code[k], (OnigCodePoint* )(&p11->to.code[j]),\r
-                  1, arg);\r
-         if (r != 0) return r;\r
-       }\r
-      }\r
-    }\r
-#ifdef USE_UNICODE_CASE_FOLD_TURKISH_AZERI\r
-  }\r
-#endif\r
-\r
-  if ((flag & INTERNAL_ONIGENC_CASE_FOLD_MULTI_CHAR) != 0) {\r
-    for (i = 0; i < (int )(sizeof(CaseUnfold_12)/sizeof(CaseUnfold_12_Type));\r
-        i++) {\r
-      for (j = 0; j < CaseUnfold_12[i].to.n; j++) {\r
-       r = (*f)(CaseUnfold_12[i].to.code[j],\r
-                (OnigCodePoint* )CaseUnfold_12[i].from, 2, arg);\r
-       if (r != 0) return r;   \r
-\r
-       for (k = 0; k < CaseUnfold_12[i].to.n; k++) {\r
-         if (k == j) continue;\r
-\r
-         r = (*f)(CaseUnfold_12[i].to.code[j],\r
-                  (OnigCodePoint* )(&CaseUnfold_12[i].to.code[k]), 1, arg);\r
-         if (r != 0) return r;\r
-       }\r
-      }\r
-    }\r
-\r
-#ifdef USE_UNICODE_CASE_FOLD_TURKISH_AZERI\r
-    if ((flag & ONIGENC_CASE_FOLD_TURKISH_AZERI) == 0) {\r
-#endif\r
-      for (i = 0;\r
-          i < (int )(sizeof(CaseUnfold_12_Locale)/sizeof(CaseUnfold_12_Type));\r
-          i++) {\r
-       for (j = 0; j < CaseUnfold_12_Locale[i].to.n; j++) {\r
-         r = (*f)(CaseUnfold_12_Locale[i].to.code[j],\r
-                  (OnigCodePoint* )CaseUnfold_12_Locale[i].from, 2, arg);\r
-         if (r != 0) return r; \r
-\r
-         for (k = 0; k < CaseUnfold_12_Locale[i].to.n; k++) {\r
-           if (k == j) continue;\r
-\r
-           r = (*f)(CaseUnfold_12_Locale[i].to.code[j],\r
-                    (OnigCodePoint* )(&CaseUnfold_12_Locale[i].to.code[k]),\r
-                    1, arg);\r
-           if (r != 0) return r;\r
-         }\r
-       }\r
-      }\r
-#ifdef USE_UNICODE_CASE_FOLD_TURKISH_AZERI\r
-    }\r
-#endif\r
-\r
-    for (i = 0; i < (int )(sizeof(CaseUnfold_13)/sizeof(CaseUnfold_13_Type));\r
-        i++) {\r
-      for (j = 0; j < CaseUnfold_13[i].to.n; j++) {\r
-       r = (*f)(CaseUnfold_13[i].to.code[j],\r
-                (OnigCodePoint* )CaseUnfold_13[i].from, 3, arg);\r
-       if (r != 0) return r;   \r
-\r
-       for (k = 0; k < CaseUnfold_13[i].to.n; k++) {\r
-         if (k == j) continue;\r
-\r
-         r = (*f)(CaseUnfold_13[i].to.code[j],\r
-                  (OnigCodePoint* )(&CaseUnfold_13[i].to.code[k]), 1, arg);\r
-         if (r != 0) return r;\r
-       }\r
-      }\r
-    }\r
-  }\r
-\r
-  return 0;\r
-}\r
-\r
-extern int\r
-onigenc_unicode_get_case_fold_codes_by_str(OnigEncoding enc,\r
-    OnigCaseFoldType flag, const OnigUChar* p, const OnigUChar* end,\r
-    OnigCaseFoldCodeItem items[])\r
-{\r
-  int n, i, j, k, len;\r
-  OnigCodePoint code, codes[3];\r
-  CodePointList3 *to, *z3;\r
-  CodePointList2 *z2;\r
-\r
-  if (CaseFoldInited == 0) init_case_fold_table();\r
-\r
-  n = 0;\r
-\r
-  code = ONIGENC_MBC_TO_CODE(enc, p, end);\r
-  len = enclen(enc, p);\r
-\r
-#ifdef USE_UNICODE_CASE_FOLD_TURKISH_AZERI\r
-  if ((flag & ONIGENC_CASE_FOLD_TURKISH_AZERI) != 0) {\r
-    if (code == 0x0049) {\r
-      items[0].byte_len = len;\r
-      items[0].code_len = 1;\r
-      items[0].code[0]  = 0x0131;\r
-      return 1;\r
-    }\r
-    else if (code == 0x0130) {\r
-      items[0].byte_len = len;\r
-      items[0].code_len = 1;\r
-      items[0].code[0]  = 0x0069;\r
-      return 1;\r
-    }\r
-    else if (code == 0x0131) {\r
-      items[0].byte_len = len;\r
-      items[0].code_len = 1;\r
-      items[0].code[0]  = 0x0049;\r
-      return 1;\r
-    }\r
-    else if (code == 0x0069) {\r
-      items[0].byte_len = len;\r
-      items[0].code_len = 1;\r
-      items[0].code[0]  = 0x0130;\r
-      return 1;\r
-    }\r
-  }\r
-#endif\r
-\r
-  if (onig_st_lookup(FoldTable, (st_data_t )code, (void* )&to) != 0) {\r
-    if (to->n == 1) {\r
-      OnigCodePoint orig_code = code;\r
-\r
-      items[0].byte_len = len;\r
-      items[0].code_len = 1;\r
-      items[0].code[0]  = to->code[0];\r
-      n++;\r
-\r
-      code = to->code[0];\r
-      if (onig_st_lookup(Unfold1Table, (st_data_t )code, (void* )&to) != 0) {\r
-       for (i = 0; i < to->n; i++) {\r
-         if (to->code[i] != orig_code) {\r
-           items[n].byte_len = len;\r
-           items[n].code_len = 1;\r
-           items[n].code[0]  = to->code[i];\r
-           n++;\r
-         }\r
-       }\r
-      }\r
-    }\r
-    else if ((flag & INTERNAL_ONIGENC_CASE_FOLD_MULTI_CHAR) != 0) {\r
-      OnigCodePoint cs[3][4];\r
-      int fn, ncs[3];\r
-\r
-      for (fn = 0; fn < to->n; fn++) {\r
-       cs[fn][0] = to->code[fn];\r
-       if (onig_st_lookup(Unfold1Table, (st_data_t )cs[fn][0],\r
-                          (void* )&z3) != 0) {\r
-         for (i = 0; i < z3->n; i++) {\r
-           cs[fn][i+1] = z3->code[i];\r
-         }\r
-         ncs[fn] = z3->n + 1;\r
-       }\r
-       else\r
-         ncs[fn] = 1;\r
-      }\r
-\r
-      if (fn == 2) {\r
-       for (i = 0; i < ncs[0]; i++) {\r
-         for (j = 0; j < ncs[1]; j++) {\r
-           items[n].byte_len = len;\r
-           items[n].code_len = 2;\r
-           items[n].code[0]  = cs[0][i];\r
-           items[n].code[1]  = cs[1][j];\r
-           n++;\r
-         }\r
-       }\r
-\r
-       if (onig_st_lookup(Unfold2Table, (st_data_t )to->code,\r
-                          (void* )&z2) != 0) {\r
-         for (i = 0; i < z2->n; i++) {\r
-           if (z2->code[i] == code) continue;\r
-\r
-           items[n].byte_len = len;\r
-           items[n].code_len = 1;\r
-           items[n].code[0]  = z2->code[i];\r
-           n++;\r
-         }\r
-       }\r
-      }\r
-      else {\r
-       for (i = 0; i < ncs[0]; i++) {\r
-         for (j = 0; j < ncs[1]; j++) {\r
-           for (k = 0; k < ncs[2]; k++) {\r
-             items[n].byte_len = len;\r
-             items[n].code_len = 3;\r
-             items[n].code[0]  = cs[0][i];\r
-             items[n].code[1]  = cs[1][j];\r
-             items[n].code[2]  = cs[2][k];\r
-             n++;\r
-           }\r
-         }\r
-       }\r
-\r
-       if (onig_st_lookup(Unfold3Table, (st_data_t )to->code,\r
-                          (void* )&z2) != 0) {\r
-         for (i = 0; i < z2->n; i++) {\r
-           if (z2->code[i] == code) continue;\r
-\r
-           items[n].byte_len = len;\r
-           items[n].code_len = 1;\r
-           items[n].code[0]  = z2->code[i];\r
-           n++;\r
-         }\r
-       }\r
-      }\r
-\r
-      /* multi char folded code is not head of another folded multi char */\r
-      flag = 0; /* DISABLE_CASE_FOLD_MULTI_CHAR(flag); */\r
-    }\r
-  }\r
-  else {\r
-    if (onig_st_lookup(Unfold1Table, (st_data_t )code, (void* )&to) != 0) {\r
-      for (i = 0; i < to->n; i++) {\r
-       items[n].byte_len = len;\r
-       items[n].code_len = 1;\r
-       items[n].code[0]  = to->code[i];\r
-       n++;\r
-      }\r
-    }\r
-  }\r
-\r
-\r
-  if ((flag & INTERNAL_ONIGENC_CASE_FOLD_MULTI_CHAR) != 0) {\r
-    p += len;\r
-    if (p < end) {\r
-      int clen;\r
-\r
-      codes[0] = code;\r
-      code = ONIGENC_MBC_TO_CODE(enc, p, end);\r
-      if (onig_st_lookup(FoldTable, (st_data_t )code, (void* )&to) != 0\r
-         && to->n == 1) {\r
-       codes[1] = to->code[0];\r
-      }\r
-      else\r
-       codes[1] = code;\r
-\r
-      clen = enclen(enc, p);\r
-      len += clen;\r
-      if (onig_st_lookup(Unfold2Table, (st_data_t )codes, (void* )&z2) != 0) {\r
-       for (i = 0; i < z2->n; i++) {\r
-         items[n].byte_len = len;\r
-         items[n].code_len = 1;\r
-         items[n].code[0]  = z2->code[i];\r
-         n++;\r
-       }\r
-      }\r
-\r
-      p += clen;\r
-      if (p < end) {\r
-       code = ONIGENC_MBC_TO_CODE(enc, p, end);\r
-       if (onig_st_lookup(FoldTable, (st_data_t )code, (void* )&to) != 0\r
-           && to->n == 1) {\r
-         codes[2] = to->code[0];\r
-       }\r
-       else\r
-         codes[2] = code;\r
-\r
-       clen = enclen(enc, p);\r
-       len += clen;\r
-       if (onig_st_lookup(Unfold3Table, (st_data_t )codes,\r
-                          (void* )&z2) != 0) {\r
-         for (i = 0; i < z2->n; i++) {\r
-           items[n].byte_len = len;\r
-           items[n].code_len = 1;\r
-           items[n].code[0]  = z2->code[i];\r
-           n++;\r
-         }\r
-       }\r
-      }\r
-    }\r
-  }\r
-\r
-  return n;\r
-}\r
diff --git a/MdeModulePkg/Universal/RegularExpressionDxe/Oniguruma/enc/utf16_le.c b/MdeModulePkg/Universal/RegularExpressionDxe/Oniguruma/enc/utf16_le.c
deleted file mode 100644 (file)
index b8685c4..0000000
+++ /dev/null
@@ -1,226 +0,0 @@
-/**********************************************************************\r
-  utf16_le.c -  Oniguruma (regular expression library)\r
-**********************************************************************/\r
-/*-\r
- * Copyright (c) 2002-2008  K.Kosako  <sndgk393 AT ybb DOT ne DOT jp>\r
- * All rights reserved.\r
- *\r
- * Redistribution and use in source and binary forms, with or without\r
- * modification, are permitted provided that the following conditions\r
- * are met:\r
- * 1. Redistributions of source code must retain the above copyright\r
- *    notice, this list of conditions and the following disclaimer.\r
- * 2. Redistributions in binary form must reproduce the above copyright\r
- *    notice, this list of conditions and the following disclaimer in the\r
- *    documentation and/or other materials provided with the distribution.\r
- *\r
- * THIS SOFTWARE IS PROVIDED BY THE AUTHOR AND CONTRIBUTORS ``AS IS'' AND\r
- * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE\r
- * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE\r
- * ARE DISCLAIMED.  IN NO EVENT SHALL THE AUTHOR OR CONTRIBUTORS BE LIABLE\r
- * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL\r
- * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS\r
- * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)\r
- * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT\r
- * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY\r
- * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF\r
- * SUCH DAMAGE.\r
- */\r
-\r
-#include "regenc.h"\r
-\r
-static const int EncLen_UTF16[] = {\r
-  2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,\r
-  2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,\r
-  2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,\r
-  2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,\r
-  2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,\r
-  2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,\r
-  2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,\r
-  2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,\r
-  2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,\r
-  2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,\r
-  2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,\r
-  2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,\r
-  2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,\r
-  2, 2, 2, 2, 2, 2, 2, 2, 4, 4, 4, 4, 2, 2, 2, 2,\r
-  2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,\r
-  2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2\r
-};\r
-\r
-static int\r
-utf16le_code_to_mbclen(OnigCodePoint code)\r
-{\r
-  return (code > 0xffff ? 4 : 2);\r
-}\r
-\r
-static int\r
-utf16le_mbc_enc_len(const UChar* p)\r
-{\r
-  return EncLen_UTF16[*(p+1)];\r
-}\r
-\r
-static int\r
-utf16le_is_mbc_newline(const UChar* p, const UChar* end)\r
-{\r
-  if (p + 1 < end) {\r
-    if (*p == 0x0a && *(p+1) == 0x00)\r
-      return 1;\r
-#ifdef USE_UNICODE_ALL_LINE_TERMINATORS\r
-    if ((\r
-#ifndef USE_CRNL_AS_LINE_TERMINATOR\r
-        *p == 0x0d ||\r
-#endif\r
-        *p == 0x85) && *(p+1) == 0x00)\r
-      return 1;\r
-    if (*(p+1) == 0x20 && (*p == 0x29 || *p == 0x28))\r
-      return 1;\r
-#endif\r
-  }\r
-  return 0;\r
-}\r
-\r
-static OnigCodePoint\r
-utf16le_mbc_to_code(const UChar* p, const UChar* end ARG_UNUSED)\r
-{\r
-  OnigCodePoint code;\r
-  UChar c0 = *p;\r
-  UChar c1 = *(p+1);\r
-\r
-  if (UTF16_IS_SURROGATE_FIRST(c1)) {\r
-    code = ((((c1 - 0xd8) << 2) + ((c0  & 0xc0) >> 6) + 1) << 16)\r
-         + ((((c0 & 0x3f) << 2) + (p[3] - 0xdc)) << 8)\r
-         + p[2];\r
-  }\r
-  else {\r
-    code = c1 * 256 + p[0];\r
-  }\r
-  return code;\r
-}\r
-\r
-static int\r
-utf16le_code_to_mbc(OnigCodePoint code, UChar *buf)\r
-{\r
-  UChar* p = buf;\r
-\r
-  if (code > 0xffff) {\r
-    unsigned int plane, high;\r
-\r
-    plane = (code >> 16) - 1;\r
-    high = (code & 0xff00) >> 8;\r
-\r
-    *p++ = (UChar)(((plane & 0x03) << 6) + (high >> 2));\r
-    *p++ = (UChar)((plane >> 2) + 0xd8);\r
-    *p++ = (UChar )(code & 0xff);\r
-    *p   = (high & 0x03) + 0xdc;\r
-    return 4;\r
-  }\r
-  else {\r
-    *p++ = (UChar )(code & 0xff);\r
-    *p++ = (UChar )((code & 0xff00) >> 8);\r
-    return 2;\r
-  }\r
-}\r
-\r
-static int\r
-utf16le_mbc_case_fold(OnigCaseFoldType flag,\r
-                     const UChar** pp, const UChar* end, UChar* fold)\r
-{\r
-  const UChar* p = *pp;\r
-\r
-  if (ONIGENC_IS_ASCII_CODE(*p) && *(p+1) == 0) {\r
-#ifdef USE_UNICODE_CASE_FOLD_TURKISH_AZERI\r
-    if ((flag & ONIGENC_CASE_FOLD_TURKISH_AZERI) != 0) {\r
-      if (*p == 0x49) {\r
-       *fold++ = 0x31;\r
-       *fold   = 0x01;\r
-       (*pp) += 2;\r
-       return 2;\r
-      }\r
-    }\r
-#endif\r
-\r
-    *fold++ = ONIGENC_ASCII_CODE_TO_LOWER_CASE(*p);\r
-    *fold   = 0;\r
-    *pp += 2;\r
-    return 2;\r
-  }\r
-  else\r
-    return onigenc_unicode_mbc_case_fold(ONIG_ENCODING_UTF16_LE, flag, pp, end,\r
-                                        fold);\r
-}\r
-\r
-#if 0\r
-static int\r
-utf16le_is_mbc_ambiguous(OnigCaseFoldType flag, const UChar** pp,\r
-                        const UChar* end)\r
-{\r
-  const UChar* p = *pp;\r
-\r
-  (*pp) += EncLen_UTF16[*(p+1)];\r
-\r
-  if (*(p+1) == 0) {\r
-    int c, v;\r
-\r
-    if (*p == 0xdf && (flag & INTERNAL_ONIGENC_CASE_FOLD_MULTI_CHAR) != 0) {\r
-      return TRUE;\r
-    }\r
-\r
-    c = *p;\r
-    v = ONIGENC_IS_UNICODE_ISO_8859_1_BIT_CTYPE(c,\r
-                       (BIT_CTYPE_UPPER | BIT_CTYPE_LOWER));\r
-    if ((v | BIT_CTYPE_LOWER) != 0) {\r
-      /* 0xaa, 0xb5, 0xba are lower case letter, but can't convert. */\r
-      if (c >= 0xaa && c <= 0xba)\r
-       return FALSE;\r
-      else\r
-       return TRUE;\r
-    }\r
-    return (v != 0 ? TRUE : FALSE);\r
-  }\r
-\r
-  return FALSE;\r
-}\r
-#endif\r
-\r
-static UChar*\r
-utf16le_left_adjust_char_head(const UChar* start, const UChar* s)\r
-{\r
-  if (s <= start) return (UChar* )s;\r
-\r
-  if ((s - start) % 2 == 1) {\r
-    s--;\r
-  }\r
-\r
-  if (UTF16_IS_SURROGATE_SECOND(*(s+1)) && s > start + 1)\r
-    s -= 2;\r
-\r
-  return (UChar* )s;\r
-}\r
-\r
-static int\r
-utf16le_get_case_fold_codes_by_str(OnigCaseFoldType flag,\r
-    const OnigUChar* p, const OnigUChar* end, OnigCaseFoldCodeItem items[])\r
-{\r
-  return onigenc_unicode_get_case_fold_codes_by_str(ONIG_ENCODING_UTF16_LE,\r
-                                                   flag, p, end, items);\r
-}\r
-\r
-OnigEncodingType OnigEncodingUTF16_LE = {\r
-  utf16le_mbc_enc_len,\r
-  "UTF-16LE",   /* name */\r
-  4,            /* max byte length */\r
-  2,            /* min byte length */\r
-  utf16le_is_mbc_newline,\r
-  utf16le_mbc_to_code,\r
-  utf16le_code_to_mbclen,\r
-  utf16le_code_to_mbc,\r
-  utf16le_mbc_case_fold,\r
-  onigenc_unicode_apply_all_case_fold,\r
-  utf16le_get_case_fold_codes_by_str,\r
-  onigenc_unicode_property_name_to_ctype,\r
-  onigenc_unicode_is_code_ctype,\r
-  onigenc_utf16_32_get_ctype_code_range,\r
-  utf16le_left_adjust_char_head,\r
-  onigenc_always_false_is_allowed_reverse_match\r
-};\r
diff --git a/MdeModulePkg/Universal/RegularExpressionDxe/Oniguruma/oniggnu.h b/MdeModulePkg/Universal/RegularExpressionDxe/Oniguruma/oniggnu.h
deleted file mode 100644 (file)
index 7ec8e2e..0000000
+++ /dev/null
@@ -1,85 +0,0 @@
-#ifndef ONIGGNU_H\r
-#define ONIGGNU_H\r
-/**********************************************************************\r
-  oniggnu.h - Oniguruma (regular expression library)\r
-**********************************************************************/\r
-/*-\r
- * Copyright (c) 2002-2005  K.Kosako  <sndgk393 AT ybb DOT ne DOT jp>\r
- * All rights reserved.\r
- *\r
- * Redistribution and use in source and binary forms, with or without\r
- * modification, are permitted provided that the following conditions\r
- * are met:\r
- * 1. Redistributions of source code must retain the above copyright\r
- *    notice, this list of conditions and the following disclaimer.\r
- * 2. Redistributions in binary form must reproduce the above copyright\r
- *    notice, this list of conditions and the following disclaimer in the\r
- *    documentation and/or other materials provided with the distribution.\r
- *\r
- * THIS SOFTWARE IS PROVIDED BY THE AUTHOR AND CONTRIBUTORS ``AS IS'' AND\r
- * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE\r
- * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE\r
- * ARE DISCLAIMED.  IN NO EVENT SHALL THE AUTHOR OR CONTRIBUTORS BE LIABLE\r
- * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL\r
- * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS\r
- * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)\r
- * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT\r
- * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY\r
- * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF\r
- * SUCH DAMAGE.\r
- */\r
-\r
-#include "oniguruma.h"\r
-\r
-#ifdef __cplusplus\r
-extern "C" {\r
-#endif\r
-\r
-#define RE_MBCTYPE_ASCII         0\r
-#define RE_MBCTYPE_EUC           1\r
-#define RE_MBCTYPE_SJIS          2\r
-#define RE_MBCTYPE_UTF8          3\r
-\r
-/* GNU regex options */\r
-#ifndef RE_NREGS\r
-#define RE_NREGS                ONIG_NREGION\r
-#endif\r
-\r
-#define RE_OPTION_IGNORECASE         ONIG_OPTION_IGNORECASE\r
-#define RE_OPTION_EXTENDED           ONIG_OPTION_EXTEND\r
-#define RE_OPTION_MULTILINE          ONIG_OPTION_MULTILINE\r
-#define RE_OPTION_SINGLELINE         ONIG_OPTION_SINGLELINE\r
-#define RE_OPTION_LONGEST            ONIG_OPTION_FIND_LONGEST\r
-#define RE_OPTION_POSIXLINE         (RE_OPTION_MULTILINE|RE_OPTION_SINGLELINE)\r
-#define RE_OPTION_FIND_NOT_EMPTY     ONIG_OPTION_FIND_NOT_EMPTY\r
-#define RE_OPTION_NEGATE_SINGLELINE  ONIG_OPTION_NEGATE_SINGLELINE\r
-#define RE_OPTION_DONT_CAPTURE_GROUP ONIG_OPTION_DONT_CAPTURE_GROUP\r
-#define RE_OPTION_CAPTURE_GROUP      ONIG_OPTION_CAPTURE_GROUP\r
-\r
-\r
-ONIG_EXTERN\r
-void re_mbcinit P_((int));\r
-ONIG_EXTERN\r
-int re_compile_pattern P_((const char*, int, struct re_pattern_buffer*, char* err_buf));\r
-ONIG_EXTERN\r
-int re_recompile_pattern P_((const char*, int, struct re_pattern_buffer*, char* err_buf));\r
-ONIG_EXTERN\r
-void re_free_pattern P_((struct re_pattern_buffer*));\r
-ONIG_EXTERN\r
-int re_adjust_startpos P_((struct re_pattern_buffer*, const char*, int, int, int));\r
-ONIG_EXTERN\r
-int re_search P_((struct re_pattern_buffer*, const char*, int, int, int, struct re_registers*));\r
-ONIG_EXTERN\r
-int re_match P_((struct re_pattern_buffer*, const char *, int, int, struct re_registers*));\r
-ONIG_EXTERN\r
-void re_set_casetable P_((const char*));\r
-ONIG_EXTERN\r
-void re_free_registers P_((struct re_registers*));\r
-ONIG_EXTERN\r
-int re_alloc_pattern P_((struct re_pattern_buffer**));  /* added */\r
-\r
-#ifdef __cplusplus\r
-}\r
-#endif\r
-\r
-#endif /* ONIGGNU_H */\r
diff --git a/MdeModulePkg/Universal/RegularExpressionDxe/Oniguruma/onigposix.h b/MdeModulePkg/Universal/RegularExpressionDxe/Oniguruma/onigposix.h
deleted file mode 100644 (file)
index 7c2cad1..0000000
+++ /dev/null
@@ -1,169 +0,0 @@
-#ifndef ONIGPOSIX_H\r
-#define ONIGPOSIX_H\r
-/**********************************************************************\r
-  onigposix.h - Oniguruma (regular expression library)\r
-**********************************************************************/\r
-/*-\r
- * Copyright (c) 2002-2005  K.Kosako  <sndgk393 AT ybb DOT ne DOT jp>\r
- * All rights reserved.\r
- *\r
- * Redistribution and use in source and binary forms, with or without\r
- * modification, are permitted provided that the following conditions\r
- * are met:\r
- * 1. Redistributions of source code must retain the above copyright\r
- *    notice, this list of conditions and the following disclaimer.\r
- * 2. Redistributions in binary form must reproduce the above copyright\r
- *    notice, this list of conditions and the following disclaimer in the\r
- *    documentation and/or other materials provided with the distribution.\r
- *\r
- * THIS SOFTWARE IS PROVIDED BY THE AUTHOR AND CONTRIBUTORS ``AS IS'' AND\r
- * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE\r
- * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE\r
- * ARE DISCLAIMED.  IN NO EVENT SHALL THE AUTHOR OR CONTRIBUTORS BE LIABLE\r
- * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL\r
- * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS\r
- * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)\r
- * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT\r
- * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY\r
- * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF\r
- * SUCH DAMAGE.\r
- */\r
-#include "OnigurumaUefiPort.h"\r
-\r
-#ifdef __cplusplus\r
-extern "C" {\r
-#endif\r
-\r
-/* options */\r
-#define REG_ICASE          (1<<0)\r
-#define REG_NEWLINE        (1<<1)\r
-#define REG_NOTBOL         (1<<2)\r
-#define REG_NOTEOL         (1<<3)\r
-#define REG_EXTENDED       (1<<4) /* if not setted, Basic Onigular Expression */\r
-#define REG_NOSUB          (1<<5)\r
-\r
-/* POSIX error codes */\r
-#define REG_NOMATCH          1\r
-#define REG_BADPAT           2\r
-#define REG_ECOLLATE         3\r
-#define REG_ECTYPE           4\r
-#define REG_EESCAPE          5\r
-#define REG_ESUBREG          6\r
-#define REG_EBRACK           7\r
-#define REG_EPAREN           8\r
-#define REG_EBRACE           9\r
-#define REG_BADBR           10\r
-#define REG_ERANGE          11\r
-#define REG_ESPACE          12\r
-#define REG_BADRPT          13\r
-\r
-/* extended error codes */\r
-#define REG_EONIG_INTERNAL  14\r
-#define REG_EONIG_BADWC     15\r
-#define REG_EONIG_BADARG    16\r
-#define REG_EONIG_THREAD    17\r
-\r
-/* character encodings (for reg_set_encoding()) */\r
-#define REG_POSIX_ENCODING_ASCII     0\r
-#define REG_POSIX_ENCODING_EUC_JP    1\r
-#define REG_POSIX_ENCODING_SJIS      2\r
-#define REG_POSIX_ENCODING_UTF8      3\r
-#define REG_POSIX_ENCODING_UTF16_BE  4\r
-#define REG_POSIX_ENCODING_UTF16_LE  5\r
-\r
-\r
-typedef int regoff_t;\r
-\r
-typedef struct {\r
-  regoff_t  rm_so;\r
-  regoff_t  rm_eo;\r
-} regmatch_t;\r
-\r
-/* POSIX regex_t */\r
-typedef struct {\r
-  void*   onig;          /* Oniguruma regex_t*  */\r
-  size_t  re_nsub;\r
-  int     comp_options;\r
-} regex_t;\r
-\r
-\r
-#ifndef P_\r
-#if defined(__STDC__) || defined(_WIN32)\r
-# define P_(args) args\r
-#else\r
-# define P_(args) ()\r
-#endif\r
-#endif\r
-\r
-#ifndef ONIG_EXTERN\r
-#if defined(_WIN32) && !defined(__GNUC__)\r
-#if defined(EXPORT)\r
-#define ONIG_EXTERN   extern __declspec(dllexport)\r
-#else\r
-#define ONIG_EXTERN   extern __declspec(dllimport)\r
-#endif\r
-#endif\r
-#endif\r
-\r
-#ifndef ONIG_EXTERN\r
-#define ONIG_EXTERN   extern\r
-#endif\r
-\r
-#ifndef ONIGURUMA_H\r
-typedef unsigned int        OnigOptionType;\r
-\r
-/* syntax */\r
-typedef struct {\r
-  unsigned int op;\r
-  unsigned int op2;\r
-  unsigned int behavior;\r
-  OnigOptionType options;    /* default option */\r
-} OnigSyntaxType;\r
-\r
-ONIG_EXTERN OnigSyntaxType OnigSyntaxPosixBasic;\r
-ONIG_EXTERN OnigSyntaxType OnigSyntaxPosixExtended;\r
-ONIG_EXTERN OnigSyntaxType OnigSyntaxEmacs;\r
-ONIG_EXTERN OnigSyntaxType OnigSyntaxGrep;\r
-ONIG_EXTERN OnigSyntaxType OnigSyntaxGnuRegex;\r
-ONIG_EXTERN OnigSyntaxType OnigSyntaxJava;\r
-ONIG_EXTERN OnigSyntaxType OnigSyntaxPerl;\r
-ONIG_EXTERN OnigSyntaxType OnigSyntaxRuby;\r
-\r
-/* predefined syntaxes (see regsyntax.c) */\r
-#define ONIG_SYNTAX_POSIX_BASIC        (&OnigSyntaxPosixBasic)\r
-#define ONIG_SYNTAX_POSIX_EXTENDED     (&OnigSyntaxPosixExtended)\r
-#define ONIG_SYNTAX_EMACS              (&OnigSyntaxEmacs)\r
-#define ONIG_SYNTAX_GREP               (&OnigSyntaxGrep)\r
-#define ONIG_SYNTAX_GNU_REGEX          (&OnigSyntaxGnuRegex)\r
-#define ONIG_SYNTAX_JAVA               (&OnigSyntaxJava)\r
-#define ONIG_SYNTAX_PERL               (&OnigSyntaxPerl)\r
-#define ONIG_SYNTAX_RUBY               (&OnigSyntaxRuby)\r
-/* default syntax */\r
-#define ONIG_SYNTAX_DEFAULT             OnigDefaultSyntax\r
-\r
-ONIG_EXTERN OnigSyntaxType*  OnigDefaultSyntax;\r
-\r
-ONIG_EXTERN int  onig_set_default_syntax P_((OnigSyntaxType* syntax));\r
-ONIG_EXTERN void onig_copy_syntax P_((OnigSyntaxType* to, OnigSyntaxType* from));\r
-ONIG_EXTERN const char* onig_version P_((void));\r
-ONIG_EXTERN const char* onig_copyright P_((void));\r
-\r
-#endif /* ONIGURUMA_H */\r
-\r
-\r
-ONIG_EXTERN int    regcomp P_((regex_t* reg, const char* pat, int options));\r
-ONIG_EXTERN int    regexec P_((regex_t* reg, const char* str, size_t nmatch, regmatch_t* matches, int options));\r
-ONIG_EXTERN void   regfree P_((regex_t* reg));\r
-ONIG_EXTERN size_t regerror P_((int code, const regex_t* reg, char* buf, size_t size));\r
-\r
-/* extended API */\r
-ONIG_EXTERN void reg_set_encoding P_((int enc));\r
-ONIG_EXTERN int  reg_name_to_group_numbers P_((regex_t* reg, const unsigned char* name, const unsigned char* name_end, int** nums));\r
-ONIG_EXTERN int  reg_foreach_name P_((regex_t* reg, int (*func)(const unsigned char*, const unsigned char*,int,int*,regex_t*,void*), void* arg));\r
-ONIG_EXTERN int  reg_number_of_names P_((regex_t* reg));\r
-\r
-#ifdef __cplusplus\r
-}\r
-#endif\r
-\r
-#endif /* ONIGPOSIX_H */\r
diff --git a/MdeModulePkg/Universal/RegularExpressionDxe/Oniguruma/oniguruma.h b/MdeModulePkg/Universal/RegularExpressionDxe/Oniguruma/oniguruma.h
deleted file mode 100644 (file)
index 034a2cc..0000000
+++ /dev/null
@@ -1,829 +0,0 @@
-#ifndef ONIGURUMA_H\r
-#define ONIGURUMA_H\r
-/**********************************************************************\r
-  oniguruma.h - Oniguruma (regular expression library)\r
-**********************************************************************/\r
-/*-\r
- * Copyright (c) 2002-2009  K.Kosako  <sndgk393 AT ybb DOT ne DOT jp>\r
- * All rights reserved.\r
- *\r
- * Redistribution and use in source and binary forms, with or without\r
- * modification, are permitted provided that the following conditions\r
- * are met:\r
- * 1. Redistributions of source code must retain the above copyright\r
- *    notice, this list of conditions and the following disclaimer.\r
- * 2. Redistributions in binary form must reproduce the above copyright\r
- *    notice, this list of conditions and the following disclaimer in the\r
- *    documentation and/or other materials provided with the distribution.\r
- *\r
- * THIS SOFTWARE IS PROVIDED BY THE AUTHOR AND CONTRIBUTORS ``AS IS'' AND\r
- * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE\r
- * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE\r
- * ARE DISCLAIMED.  IN NO EVENT SHALL THE AUTHOR OR CONTRIBUTORS BE LIABLE\r
- * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL\r
- * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS\r
- * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)\r
- * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT\r
- * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY\r
- * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF\r
- * SUCH DAMAGE.\r
- */\r
-\r
-#include "OnigurumaUefiPort.h"\r
-\r
-#ifdef __cplusplus\r
-extern "C" {\r
-#endif\r
-\r
-#define ONIGURUMA\r
-#define ONIGURUMA_VERSION_MAJOR   5\r
-#define ONIGURUMA_VERSION_MINOR   9\r
-#define ONIGURUMA_VERSION_TEENY   6\r
-\r
-#ifdef __cplusplus\r
-# ifndef  HAVE_PROTOTYPES\r
-#  define HAVE_PROTOTYPES 1\r
-# endif\r
-# ifndef  HAVE_STDARG_PROTOTYPES\r
-#  define HAVE_STDARG_PROTOTYPES 1\r
-# endif\r
-#endif\r
-\r
-/* escape Mac OS X/Xcode 2.4/gcc 4.0.1 problem */\r
-#if defined(__APPLE__) && defined(__GNUC__) && __GNUC__ >= 4\r
-# ifndef  HAVE_STDARG_PROTOTYPES\r
-#  define HAVE_STDARG_PROTOTYPES 1\r
-# endif\r
-#endif\r
-\r
-#ifdef HAVE_STDARG_H\r
-# ifndef  HAVE_STDARG_PROTOTYPES\r
-#  define HAVE_STDARG_PROTOTYPES 1\r
-# endif\r
-#endif\r
-\r
-#ifndef P_\r
-#if defined(__STDC__) || defined(_WIN32)\r
-# define P_(args) args\r
-#else\r
-# define P_(args) ()\r
-#endif\r
-#endif\r
-\r
-#ifndef PV_\r
-#ifdef HAVE_STDARG_PROTOTYPES\r
-# define PV_(args) args\r
-#else\r
-# define PV_(args) ()\r
-#endif\r
-#endif\r
-\r
-#ifndef ONIG_EXTERN\r
-#if defined(_WIN32) && !defined(__GNUC__)\r
-#if defined(EXPORT) || defined(RUBY_EXPORT)\r
-#define ONIG_EXTERN   extern __declspec(dllexport)\r
-#else\r
-#define ONIG_EXTERN   extern __declspec(dllimport)\r
-#endif\r
-#endif\r
-#endif\r
-\r
-#ifndef ONIG_EXTERN\r
-#define ONIG_EXTERN   extern\r
-#endif\r
-\r
-/* PART: character encoding */\r
-\r
-#ifndef ONIG_ESCAPE_UCHAR_COLLISION\r
-#define UChar OnigUChar\r
-#endif\r
-\r
-#ifdef _WIN32\r
-# include <windows.h>\r
-typedef ULONG_PTR OnigCodePoint;\r
-#else\r
-typedef unsigned long  OnigCodePoint;\r
-#endif\r
-typedef unsigned char  OnigUChar;\r
-typedef unsigned int   OnigCtype;\r
-typedef unsigned int   OnigDistance;\r
-\r
-#define ONIG_INFINITE_DISTANCE  ~((OnigDistance )0)\r
-\r
-typedef unsigned int OnigCaseFoldType; /* case fold flag */\r
-\r
-ONIG_EXTERN OnigCaseFoldType OnigDefaultCaseFoldFlag;\r
-\r
-/* #define ONIGENC_CASE_FOLD_HIRAGANA_KATAKANA  (1<<1) */\r
-/* #define ONIGENC_CASE_FOLD_KATAKANA_WIDTH     (1<<2) */\r
-#define ONIGENC_CASE_FOLD_TURKISH_AZERI         (1<<20)\r
-#define INTERNAL_ONIGENC_CASE_FOLD_MULTI_CHAR   (1<<30)\r
-\r
-#define ONIGENC_CASE_FOLD_MIN      INTERNAL_ONIGENC_CASE_FOLD_MULTI_CHAR\r
-#define ONIGENC_CASE_FOLD_DEFAULT  OnigDefaultCaseFoldFlag\r
-\r
-\r
-#define ONIGENC_MAX_COMP_CASE_FOLD_CODE_LEN       3\r
-#define ONIGENC_GET_CASE_FOLD_CODES_MAX_NUM      13\r
-/* 13 => Unicode:0x1ffc */\r
-\r
-/* code range */\r
-#define ONIGENC_CODE_RANGE_NUM(range)     ((int )range[0])\r
-#define ONIGENC_CODE_RANGE_FROM(range,i)  range[((i)*2) + 1]\r
-#define ONIGENC_CODE_RANGE_TO(range,i)    range[((i)*2) + 2]\r
-\r
-typedef struct {\r
-  int byte_len;  /* argument(original) character(s) byte length */\r
-  int code_len;  /* number of code */\r
-  OnigCodePoint code[ONIGENC_MAX_COMP_CASE_FOLD_CODE_LEN];\r
-} OnigCaseFoldCodeItem;\r
-\r
-typedef struct {\r
-  OnigCodePoint esc;\r
-  OnigCodePoint anychar;\r
-  OnigCodePoint anytime;\r
-  OnigCodePoint zero_or_one_time;\r
-  OnigCodePoint one_or_more_time;\r
-  OnigCodePoint anychar_anytime;\r
-} OnigMetaCharTableType;\r
-  \r
-typedef int (*OnigApplyAllCaseFoldFunc)(OnigCodePoint from, OnigCodePoint* to, int to_len, void* arg);\r
-\r
-typedef struct OnigEncodingTypeST {\r
-  int    (*mbc_enc_len)(const OnigUChar* p);\r
-  const char*   name;\r
-  int           max_enc_len;\r
-  int           min_enc_len;\r
-  int    (*is_mbc_newline)(const OnigUChar* p, const OnigUChar* end);\r
-  OnigCodePoint (*mbc_to_code)(const OnigUChar* p, const OnigUChar* end);\r
-  int    (*code_to_mbclen)(OnigCodePoint code);\r
-  int    (*code_to_mbc)(OnigCodePoint code, OnigUChar *buf);\r
-  int    (*mbc_case_fold)(OnigCaseFoldType flag, const OnigUChar** pp, const OnigUChar* end, OnigUChar* to);\r
-  int    (*apply_all_case_fold)(OnigCaseFoldType flag, OnigApplyAllCaseFoldFunc f, void* arg);\r
-  int    (*get_case_fold_codes_by_str)(OnigCaseFoldType flag, const OnigUChar* p, const OnigUChar* end, OnigCaseFoldCodeItem acs[]);\r
-  int    (*property_name_to_ctype)(struct OnigEncodingTypeST* enc, OnigUChar* p, OnigUChar* end);\r
-  int    (*is_code_ctype)(OnigCodePoint code, OnigCtype ctype);\r
-  int    (*get_ctype_code_range)(OnigCtype ctype, OnigCodePoint* sb_out, const OnigCodePoint* ranges[]);\r
-  OnigUChar* (*left_adjust_char_head)(const OnigUChar* start, const OnigUChar* p);\r
-  int    (*is_allowed_reverse_match)(const OnigUChar* p, const OnigUChar* end);\r
-} OnigEncodingType;\r
-\r
-typedef OnigEncodingType* OnigEncoding;\r
-\r
-ONIG_EXTERN OnigEncodingType OnigEncodingASCII;\r
-ONIG_EXTERN OnigEncodingType OnigEncodingISO_8859_1;\r
-ONIG_EXTERN OnigEncodingType OnigEncodingISO_8859_2;\r
-ONIG_EXTERN OnigEncodingType OnigEncodingISO_8859_3;\r
-ONIG_EXTERN OnigEncodingType OnigEncodingISO_8859_4;\r
-ONIG_EXTERN OnigEncodingType OnigEncodingISO_8859_5;\r
-ONIG_EXTERN OnigEncodingType OnigEncodingISO_8859_6;\r
-ONIG_EXTERN OnigEncodingType OnigEncodingISO_8859_7;\r
-ONIG_EXTERN OnigEncodingType OnigEncodingISO_8859_8;\r
-ONIG_EXTERN OnigEncodingType OnigEncodingISO_8859_9;\r
-ONIG_EXTERN OnigEncodingType OnigEncodingISO_8859_10;\r
-ONIG_EXTERN OnigEncodingType OnigEncodingISO_8859_11;\r
-ONIG_EXTERN OnigEncodingType OnigEncodingISO_8859_13;\r
-ONIG_EXTERN OnigEncodingType OnigEncodingISO_8859_14;\r
-ONIG_EXTERN OnigEncodingType OnigEncodingISO_8859_15;\r
-ONIG_EXTERN OnigEncodingType OnigEncodingISO_8859_16;\r
-ONIG_EXTERN OnigEncodingType OnigEncodingUTF8;\r
-ONIG_EXTERN OnigEncodingType OnigEncodingUTF16_BE;\r
-ONIG_EXTERN OnigEncodingType OnigEncodingUTF16_LE;\r
-ONIG_EXTERN OnigEncodingType OnigEncodingUTF32_BE;\r
-ONIG_EXTERN OnigEncodingType OnigEncodingUTF32_LE;\r
-ONIG_EXTERN OnigEncodingType OnigEncodingEUC_JP;\r
-ONIG_EXTERN OnigEncodingType OnigEncodingEUC_TW;\r
-ONIG_EXTERN OnigEncodingType OnigEncodingEUC_KR;\r
-ONIG_EXTERN OnigEncodingType OnigEncodingEUC_CN;\r
-ONIG_EXTERN OnigEncodingType OnigEncodingSJIS;\r
-ONIG_EXTERN OnigEncodingType OnigEncodingKOI8;\r
-ONIG_EXTERN OnigEncodingType OnigEncodingKOI8_R;\r
-ONIG_EXTERN OnigEncodingType OnigEncodingCP1251;\r
-ONIG_EXTERN OnigEncodingType OnigEncodingBIG5;\r
-ONIG_EXTERN OnigEncodingType OnigEncodingGB18030;\r
-\r
-#define ONIG_ENCODING_ASCII        (&OnigEncodingASCII)\r
-#define ONIG_ENCODING_ISO_8859_1   (&OnigEncodingISO_8859_1)\r
-#define ONIG_ENCODING_ISO_8859_2   (&OnigEncodingISO_8859_2)\r
-#define ONIG_ENCODING_ISO_8859_3   (&OnigEncodingISO_8859_3)\r
-#define ONIG_ENCODING_ISO_8859_4   (&OnigEncodingISO_8859_4)\r
-#define ONIG_ENCODING_ISO_8859_5   (&OnigEncodingISO_8859_5)\r
-#define ONIG_ENCODING_ISO_8859_6   (&OnigEncodingISO_8859_6)\r
-#define ONIG_ENCODING_ISO_8859_7   (&OnigEncodingISO_8859_7)\r
-#define ONIG_ENCODING_ISO_8859_8   (&OnigEncodingISO_8859_8)\r
-#define ONIG_ENCODING_ISO_8859_9   (&OnigEncodingISO_8859_9)\r
-#define ONIG_ENCODING_ISO_8859_10  (&OnigEncodingISO_8859_10)\r
-#define ONIG_ENCODING_ISO_8859_11  (&OnigEncodingISO_8859_11)\r
-#define ONIG_ENCODING_ISO_8859_13  (&OnigEncodingISO_8859_13)\r
-#define ONIG_ENCODING_ISO_8859_14  (&OnigEncodingISO_8859_14)\r
-#define ONIG_ENCODING_ISO_8859_15  (&OnigEncodingISO_8859_15)\r
-#define ONIG_ENCODING_ISO_8859_16  (&OnigEncodingISO_8859_16)\r
-#define ONIG_ENCODING_UTF8         (&OnigEncodingUTF8)\r
-#define ONIG_ENCODING_UTF16_BE     (&OnigEncodingUTF16_BE)\r
-#define ONIG_ENCODING_UTF16_LE     (&OnigEncodingUTF16_LE)\r
-#define ONIG_ENCODING_UTF32_BE     (&OnigEncodingUTF32_BE)\r
-#define ONIG_ENCODING_UTF32_LE     (&OnigEncodingUTF32_LE)\r
-#define ONIG_ENCODING_EUC_JP       (&OnigEncodingEUC_JP)\r
-#define ONIG_ENCODING_EUC_TW       (&OnigEncodingEUC_TW)\r
-#define ONIG_ENCODING_EUC_KR       (&OnigEncodingEUC_KR)\r
-#define ONIG_ENCODING_EUC_CN       (&OnigEncodingEUC_CN)\r
-#define ONIG_ENCODING_SJIS         (&OnigEncodingSJIS)\r
-#define ONIG_ENCODING_KOI8         (&OnigEncodingKOI8)\r
-#define ONIG_ENCODING_KOI8_R       (&OnigEncodingKOI8_R)\r
-#define ONIG_ENCODING_CP1251       (&OnigEncodingCP1251)\r
-#define ONIG_ENCODING_BIG5         (&OnigEncodingBIG5)\r
-#define ONIG_ENCODING_GB18030      (&OnigEncodingGB18030)\r
-\r
-#define ONIG_ENCODING_UNDEF    ((OnigEncoding )0)\r
-\r
-\r
-/* work size */\r
-#define ONIGENC_CODE_TO_MBC_MAXLEN       7\r
-#define ONIGENC_MBC_CASE_FOLD_MAXLEN    18\r
-/* 18: 6(max-byte) * 3(case-fold chars) */\r
-\r
-/* character types */\r
-#define ONIGENC_CTYPE_NEWLINE   0\r
-#define ONIGENC_CTYPE_ALPHA     1\r
-#define ONIGENC_CTYPE_BLANK     2\r
-#define ONIGENC_CTYPE_CNTRL     3\r
-#define ONIGENC_CTYPE_DIGIT     4\r
-#define ONIGENC_CTYPE_GRAPH     5\r
-#define ONIGENC_CTYPE_LOWER     6\r
-#define ONIGENC_CTYPE_PRINT     7\r
-#define ONIGENC_CTYPE_PUNCT     8\r
-#define ONIGENC_CTYPE_SPACE     9\r
-#define ONIGENC_CTYPE_UPPER    10\r
-#define ONIGENC_CTYPE_XDIGIT   11\r
-#define ONIGENC_CTYPE_WORD     12\r
-#define ONIGENC_CTYPE_ALNUM    13  /* alpha || digit */\r
-#define ONIGENC_CTYPE_ASCII    14\r
-#define ONIGENC_MAX_STD_CTYPE  ONIGENC_CTYPE_ASCII\r
-\r
-\r
-#define onig_enc_len(enc,p,end)        ONIGENC_MBC_ENC_LEN(enc,p)\r
-\r
-#define ONIGENC_IS_UNDEF(enc)          ((enc) == ONIG_ENCODING_UNDEF)\r
-#define ONIGENC_IS_SINGLEBYTE(enc)     (ONIGENC_MBC_MAXLEN(enc) == 1)\r
-#define ONIGENC_IS_MBC_HEAD(enc,p)     (ONIGENC_MBC_ENC_LEN(enc,p) != 1)\r
-#define ONIGENC_IS_MBC_ASCII(p)           (*(p)   < 128)\r
-#define ONIGENC_IS_CODE_ASCII(code)       ((code) < 128)\r
-#define ONIGENC_IS_MBC_WORD(enc,s,end) \\r
-   ONIGENC_IS_CODE_WORD(enc,ONIGENC_MBC_TO_CODE(enc,s,end))\r
-\r
-\r
-#define ONIGENC_NAME(enc)                      ((enc)->name)\r
-\r
-#define ONIGENC_MBC_CASE_FOLD(enc,flag,pp,end,buf) \\r
-  (enc)->mbc_case_fold(flag,(const OnigUChar** )pp,end,buf)\r
-#define ONIGENC_IS_ALLOWED_REVERSE_MATCH(enc,s,end) \\r
-        (enc)->is_allowed_reverse_match(s,end)\r
-#define ONIGENC_LEFT_ADJUST_CHAR_HEAD(enc,start,s) \\r
-        (enc)->left_adjust_char_head(start, s)\r
-#define ONIGENC_APPLY_ALL_CASE_FOLD(enc,case_fold_flag,f,arg) \\r
-        (enc)->apply_all_case_fold(case_fold_flag,f,arg)\r
-#define ONIGENC_GET_CASE_FOLD_CODES_BY_STR(enc,case_fold_flag,p,end,acs) \\r
-       (enc)->get_case_fold_codes_by_str(case_fold_flag,p,end,acs)\r
-#define ONIGENC_STEP_BACK(enc,start,s,n) \\r
-        onigenc_step_back((enc),(start),(s),(n))\r
-\r
-#define ONIGENC_MBC_ENC_LEN(enc,p)             (enc)->mbc_enc_len(p)\r
-#define ONIGENC_MBC_MAXLEN(enc)               ((enc)->max_enc_len)\r
-#define ONIGENC_MBC_MAXLEN_DIST(enc)           ONIGENC_MBC_MAXLEN(enc)\r
-#define ONIGENC_MBC_MINLEN(enc)               ((enc)->min_enc_len)\r
-#define ONIGENC_IS_MBC_NEWLINE(enc,p,end)      (enc)->is_mbc_newline((p),(end))\r
-#define ONIGENC_MBC_TO_CODE(enc,p,end)         (enc)->mbc_to_code((p),(end))\r
-#define ONIGENC_CODE_TO_MBCLEN(enc,code)       (enc)->code_to_mbclen(code)\r
-#define ONIGENC_CODE_TO_MBC(enc,code,buf)      (enc)->code_to_mbc(code,buf)\r
-#define ONIGENC_PROPERTY_NAME_TO_CTYPE(enc,p,end) \\r
-  (enc)->property_name_to_ctype(enc,p,end)\r
-\r
-#define ONIGENC_IS_CODE_CTYPE(enc,code,ctype)  (enc)->is_code_ctype(code,ctype)\r
-\r
-#define ONIGENC_IS_CODE_NEWLINE(enc,code) \\r
-        ONIGENC_IS_CODE_CTYPE(enc,code,ONIGENC_CTYPE_NEWLINE)\r
-#define ONIGENC_IS_CODE_GRAPH(enc,code) \\r
-        ONIGENC_IS_CODE_CTYPE(enc,code,ONIGENC_CTYPE_GRAPH)\r
-#define ONIGENC_IS_CODE_PRINT(enc,code) \\r
-        ONIGENC_IS_CODE_CTYPE(enc,code,ONIGENC_CTYPE_PRINT)\r
-#define ONIGENC_IS_CODE_ALNUM(enc,code) \\r
-        ONIGENC_IS_CODE_CTYPE(enc,code,ONIGENC_CTYPE_ALNUM)\r
-#define ONIGENC_IS_CODE_ALPHA(enc,code) \\r
-        ONIGENC_IS_CODE_CTYPE(enc,code,ONIGENC_CTYPE_ALPHA)\r
-#define ONIGENC_IS_CODE_LOWER(enc,code) \\r
-        ONIGENC_IS_CODE_CTYPE(enc,code,ONIGENC_CTYPE_LOWER)\r
-#define ONIGENC_IS_CODE_UPPER(enc,code) \\r
-        ONIGENC_IS_CODE_CTYPE(enc,code,ONIGENC_CTYPE_UPPER)\r
-#define ONIGENC_IS_CODE_CNTRL(enc,code) \\r
-        ONIGENC_IS_CODE_CTYPE(enc,code,ONIGENC_CTYPE_CNTRL)\r
-#define ONIGENC_IS_CODE_PUNCT(enc,code) \\r
-        ONIGENC_IS_CODE_CTYPE(enc,code,ONIGENC_CTYPE_PUNCT)\r
-#define ONIGENC_IS_CODE_SPACE(enc,code) \\r
-        ONIGENC_IS_CODE_CTYPE(enc,code,ONIGENC_CTYPE_SPACE)\r
-#define ONIGENC_IS_CODE_BLANK(enc,code) \\r
-        ONIGENC_IS_CODE_CTYPE(enc,code,ONIGENC_CTYPE_BLANK)\r
-#define ONIGENC_IS_CODE_DIGIT(enc,code) \\r
-        ONIGENC_IS_CODE_CTYPE(enc,code,ONIGENC_CTYPE_DIGIT)\r
-#define ONIGENC_IS_CODE_XDIGIT(enc,code) \\r
-        ONIGENC_IS_CODE_CTYPE(enc,code,ONIGENC_CTYPE_XDIGIT)\r
-#define ONIGENC_IS_CODE_WORD(enc,code) \\r
-        ONIGENC_IS_CODE_CTYPE(enc,code,ONIGENC_CTYPE_WORD)\r
-\r
-#define ONIGENC_GET_CTYPE_CODE_RANGE(enc,ctype,sbout,ranges) \\r
-        (enc)->get_ctype_code_range(ctype,sbout,ranges)\r
-\r
-ONIG_EXTERN\r
-OnigUChar* onigenc_step_back P_((OnigEncoding enc, const OnigUChar* start, const OnigUChar* s, int n));\r
-\r
-\r
-/* encoding API */\r
-ONIG_EXTERN\r
-int onigenc_init P_((void));\r
-ONIG_EXTERN\r
-int onigenc_set_default_encoding P_((OnigEncoding enc));\r
-ONIG_EXTERN\r
-OnigEncoding onigenc_get_default_encoding P_((void));\r
-ONIG_EXTERN\r
-void  onigenc_set_default_caseconv_table P_((const OnigUChar* table));\r
-ONIG_EXTERN\r
-OnigUChar* onigenc_get_right_adjust_char_head_with_prev P_((OnigEncoding enc, const OnigUChar* start, const OnigUChar* s, const OnigUChar** prev));\r
-ONIG_EXTERN\r
-OnigUChar* onigenc_get_prev_char_head P_((OnigEncoding enc, const OnigUChar* start, const OnigUChar* s));\r
-ONIG_EXTERN\r
-OnigUChar* onigenc_get_left_adjust_char_head P_((OnigEncoding enc, const OnigUChar* start, const OnigUChar* s));\r
-ONIG_EXTERN\r
-OnigUChar* onigenc_get_right_adjust_char_head P_((OnigEncoding enc, const OnigUChar* start, const OnigUChar* s));\r
-ONIG_EXTERN\r
-int onigenc_strlen P_((OnigEncoding enc, const OnigUChar* p, const OnigUChar* end));\r
-ONIG_EXTERN\r
-int onigenc_strlen_null P_((OnigEncoding enc, const OnigUChar* p));\r
-ONIG_EXTERN\r
-int onigenc_str_bytelen_null P_((OnigEncoding enc, const OnigUChar* p));\r
-\r
-\r
-\r
-/* PART: regular expression */\r
-\r
-/* config parameters */\r
-#define ONIG_NREGION                          10\r
-#define ONIG_MAX_BACKREF_NUM                1000\r
-#define ONIG_MAX_REPEAT_NUM               100000\r
-#define ONIG_MAX_MULTI_BYTE_RANGES_NUM     10000\r
-/* constants */\r
-#define ONIG_MAX_ERROR_MESSAGE_LEN            90\r
-\r
-typedef unsigned int        OnigOptionType;\r
-\r
-#define ONIG_OPTION_DEFAULT            ONIG_OPTION_NONE\r
-\r
-/* options */\r
-#define ONIG_OPTION_NONE                 0U\r
-#define ONIG_OPTION_IGNORECASE           1U\r
-#define ONIG_OPTION_EXTEND               (ONIG_OPTION_IGNORECASE         << 1)\r
-#define ONIG_OPTION_MULTILINE            (ONIG_OPTION_EXTEND             << 1)\r
-#define ONIG_OPTION_SINGLELINE           (ONIG_OPTION_MULTILINE          << 1)\r
-#define ONIG_OPTION_FIND_LONGEST         (ONIG_OPTION_SINGLELINE         << 1)\r
-#define ONIG_OPTION_FIND_NOT_EMPTY       (ONIG_OPTION_FIND_LONGEST       << 1)\r
-#define ONIG_OPTION_NEGATE_SINGLELINE    (ONIG_OPTION_FIND_NOT_EMPTY     << 1)\r
-#define ONIG_OPTION_DONT_CAPTURE_GROUP   (ONIG_OPTION_NEGATE_SINGLELINE  << 1)\r
-#define ONIG_OPTION_CAPTURE_GROUP        (ONIG_OPTION_DONT_CAPTURE_GROUP << 1)\r
-/* options (search time) */\r
-#define ONIG_OPTION_NOTBOL               (ONIG_OPTION_CAPTURE_GROUP << 1)\r
-#define ONIG_OPTION_NOTEOL               (ONIG_OPTION_NOTBOL << 1)\r
-#define ONIG_OPTION_POSIX_REGION         (ONIG_OPTION_NOTEOL << 1)\r
-#define ONIG_OPTION_MAXBIT               ONIG_OPTION_POSIX_REGION  /* limit */\r
-\r
-#define ONIG_OPTION_ON(options,regopt)      ((options) |= (regopt))\r
-#define ONIG_OPTION_OFF(options,regopt)     ((options) &= ~(regopt))\r
-#define ONIG_IS_OPTION_ON(options,option)   ((options) & (option))\r
-\r
-/* syntax */\r
-typedef struct {\r
-  unsigned int   op;\r
-  unsigned int   op2;\r
-  unsigned int   behavior;\r
-  OnigOptionType options;   /* default option */\r
-  OnigMetaCharTableType meta_char_table;\r
-} OnigSyntaxType;\r
-\r
-ONIG_EXTERN OnigSyntaxType OnigSyntaxASIS;\r
-ONIG_EXTERN OnigSyntaxType OnigSyntaxPosixBasic;\r
-ONIG_EXTERN OnigSyntaxType OnigSyntaxPosixExtended;\r
-ONIG_EXTERN OnigSyntaxType OnigSyntaxEmacs;\r
-ONIG_EXTERN OnigSyntaxType OnigSyntaxGrep;\r
-ONIG_EXTERN OnigSyntaxType OnigSyntaxGnuRegex;\r
-ONIG_EXTERN OnigSyntaxType OnigSyntaxJava;\r
-ONIG_EXTERN OnigSyntaxType OnigSyntaxPerl;\r
-ONIG_EXTERN OnigSyntaxType OnigSyntaxPerl_NG;\r
-ONIG_EXTERN OnigSyntaxType OnigSyntaxRuby;\r
-\r
-/* predefined syntaxes (see regsyntax.c) */\r
-#define ONIG_SYNTAX_ASIS               (&OnigSyntaxASIS)\r
-#define ONIG_SYNTAX_POSIX_BASIC        (&OnigSyntaxPosixBasic)\r
-#define ONIG_SYNTAX_POSIX_EXTENDED     (&OnigSyntaxPosixExtended)\r
-#define ONIG_SYNTAX_EMACS              (&OnigSyntaxEmacs)\r
-#define ONIG_SYNTAX_GREP               (&OnigSyntaxGrep)\r
-#define ONIG_SYNTAX_GNU_REGEX          (&OnigSyntaxGnuRegex)\r
-#define ONIG_SYNTAX_JAVA               (&OnigSyntaxJava)\r
-#define ONIG_SYNTAX_PERL               (&OnigSyntaxPerl)\r
-#define ONIG_SYNTAX_PERL_NG            (&OnigSyntaxPerl_NG)\r
-#define ONIG_SYNTAX_RUBY               (&OnigSyntaxRuby)\r
-\r
-/* default syntax */\r
-ONIG_EXTERN OnigSyntaxType*   OnigDefaultSyntax;\r
-#define ONIG_SYNTAX_DEFAULT   OnigDefaultSyntax\r
-\r
-/* syntax (operators) */\r
-#define ONIG_SYN_OP_VARIABLE_META_CHARACTERS    (1U<<0)\r
-#define ONIG_SYN_OP_DOT_ANYCHAR                 (1U<<1)   /* . */\r
-#define ONIG_SYN_OP_ASTERISK_ZERO_INF           (1U<<2)   /* * */\r
-#define ONIG_SYN_OP_ESC_ASTERISK_ZERO_INF       (1U<<3)\r
-#define ONIG_SYN_OP_PLUS_ONE_INF                (1U<<4)   /* + */\r
-#define ONIG_SYN_OP_ESC_PLUS_ONE_INF            (1U<<5)\r
-#define ONIG_SYN_OP_QMARK_ZERO_ONE              (1U<<6)   /* ? */\r
-#define ONIG_SYN_OP_ESC_QMARK_ZERO_ONE          (1U<<7)\r
-#define ONIG_SYN_OP_BRACE_INTERVAL              (1U<<8)   /* {lower,upper} */\r
-#define ONIG_SYN_OP_ESC_BRACE_INTERVAL          (1U<<9)   /* \{lower,upper\} */\r
-#define ONIG_SYN_OP_VBAR_ALT                    (1U<<10)   /* | */\r
-#define ONIG_SYN_OP_ESC_VBAR_ALT                (1U<<11)  /* \| */\r
-#define ONIG_SYN_OP_LPAREN_SUBEXP               (1U<<12)  /* (...)   */\r
-#define ONIG_SYN_OP_ESC_LPAREN_SUBEXP           (1U<<13)  /* \(...\) */\r
-#define ONIG_SYN_OP_ESC_AZ_BUF_ANCHOR           (1U<<14)  /* \A, \Z, \z */\r
-#define ONIG_SYN_OP_ESC_CAPITAL_G_BEGIN_ANCHOR  (1U<<15)  /* \G     */\r
-#define ONIG_SYN_OP_DECIMAL_BACKREF             (1U<<16)  /* \num   */\r
-#define ONIG_SYN_OP_BRACKET_CC                  (1U<<17)  /* [...]  */\r
-#define ONIG_SYN_OP_ESC_W_WORD                  (1U<<18)  /* \w, \W */\r
-#define ONIG_SYN_OP_ESC_LTGT_WORD_BEGIN_END     (1U<<19)  /* \<. \> */\r
-#define ONIG_SYN_OP_ESC_B_WORD_BOUND            (1U<<20)  /* \b, \B */\r
-#define ONIG_SYN_OP_ESC_S_WHITE_SPACE           (1U<<21)  /* \s, \S */\r
-#define ONIG_SYN_OP_ESC_D_DIGIT                 (1U<<22)  /* \d, \D */\r
-#define ONIG_SYN_OP_LINE_ANCHOR                 (1U<<23)  /* ^, $   */\r
-#define ONIG_SYN_OP_POSIX_BRACKET               (1U<<24)  /* [:xxxx:] */\r
-#define ONIG_SYN_OP_QMARK_NON_GREEDY            (1U<<25)  /* ??,*?,+?,{n,m}? */\r
-#define ONIG_SYN_OP_ESC_CONTROL_CHARS           (1U<<26)  /* \n,\r,\t,\a ... */\r
-#define ONIG_SYN_OP_ESC_C_CONTROL               (1U<<27)  /* \cx  */\r
-#define ONIG_SYN_OP_ESC_OCTAL3                  (1U<<28)  /* \OOO */\r
-#define ONIG_SYN_OP_ESC_X_HEX2                  (1U<<29)  /* \xHH */\r
-#define ONIG_SYN_OP_ESC_X_BRACE_HEX8            (1U<<30)  /* \x{7HHHHHHH} */\r
-\r
-#define ONIG_SYN_OP2_ESC_CAPITAL_Q_QUOTE        (1U<<0)  /* \Q...\E */\r
-#define ONIG_SYN_OP2_QMARK_GROUP_EFFECT         (1U<<1)  /* (?...) */\r
-#define ONIG_SYN_OP2_OPTION_PERL                (1U<<2)  /* (?imsx),(?-imsx) */\r
-#define ONIG_SYN_OP2_OPTION_RUBY                (1U<<3)  /* (?imx), (?-imx)  */\r
-#define ONIG_SYN_OP2_PLUS_POSSESSIVE_REPEAT     (1U<<4)  /* ?+,*+,++ */\r
-#define ONIG_SYN_OP2_PLUS_POSSESSIVE_INTERVAL   (1U<<5)  /* {n,m}+   */\r
-#define ONIG_SYN_OP2_CCLASS_SET_OP              (1U<<6)  /* [...&&..[..]..] */\r
-#define ONIG_SYN_OP2_QMARK_LT_NAMED_GROUP       (1U<<7)  /* (?<name>...) */\r
-#define ONIG_SYN_OP2_ESC_K_NAMED_BACKREF        (1U<<8)  /* \k<name> */\r
-#define ONIG_SYN_OP2_ESC_G_SUBEXP_CALL          (1U<<9)  /* \g<name>, \g<n> */\r
-#define ONIG_SYN_OP2_ATMARK_CAPTURE_HISTORY     (1U<<10) /* (?@..),(?@<x>..) */\r
-#define ONIG_SYN_OP2_ESC_CAPITAL_C_BAR_CONTROL  (1U<<11) /* \C-x */\r
-#define ONIG_SYN_OP2_ESC_CAPITAL_M_BAR_META     (1U<<12) /* \M-x */\r
-#define ONIG_SYN_OP2_ESC_V_VTAB                 (1U<<13) /* \v as VTAB */\r
-#define ONIG_SYN_OP2_ESC_U_HEX4                 (1U<<14) /* \uHHHH */\r
-#define ONIG_SYN_OP2_ESC_GNU_BUF_ANCHOR         (1U<<15) /* \`, \' */\r
-#define ONIG_SYN_OP2_ESC_P_BRACE_CHAR_PROPERTY  (1U<<16) /* \p{...}, \P{...} */\r
-#define ONIG_SYN_OP2_ESC_P_BRACE_CIRCUMFLEX_NOT (1U<<17) /* \p{^..}, \P{^..} */\r
-/* #define ONIG_SYN_OP2_CHAR_PROPERTY_PREFIX_IS (1U<<18) */\r
-#define ONIG_SYN_OP2_ESC_H_XDIGIT               (1U<<19) /* \h, \H */\r
-#define ONIG_SYN_OP2_INEFFECTIVE_ESCAPE         (1U<<20) /* \ */\r
-\r
-/* syntax (behavior) */\r
-#define ONIG_SYN_CONTEXT_INDEP_ANCHORS           (1U<<31) /* not implemented */\r
-#define ONIG_SYN_CONTEXT_INDEP_REPEAT_OPS        (1U<<0)  /* ?, *, +, {n,m} */\r
-#define ONIG_SYN_CONTEXT_INVALID_REPEAT_OPS      (1U<<1)  /* error or ignore */\r
-#define ONIG_SYN_ALLOW_UNMATCHED_CLOSE_SUBEXP    (1U<<2)  /* ...)... */\r
-#define ONIG_SYN_ALLOW_INVALID_INTERVAL          (1U<<3)  /* {??? */\r
-#define ONIG_SYN_ALLOW_INTERVAL_LOW_ABBREV       (1U<<4)  /* {,n} => {0,n} */\r
-#define ONIG_SYN_STRICT_CHECK_BACKREF            (1U<<5)  /* /(\1)/,/\1()/ ..*/\r
-#define ONIG_SYN_DIFFERENT_LEN_ALT_LOOK_BEHIND   (1U<<6)  /* (?<=a|bc) */\r
-#define ONIG_SYN_CAPTURE_ONLY_NAMED_GROUP        (1U<<7)  /* see doc/RE */\r
-#define ONIG_SYN_ALLOW_MULTIPLEX_DEFINITION_NAME (1U<<8)  /* (?<x>)(?<x>) */\r
-#define ONIG_SYN_FIXED_INTERVAL_IS_GREEDY_ONLY   (1U<<9)  /* a{n}?=(?:a{n})? */\r
-\r
-/* syntax (behavior) in char class [...] */\r
-#define ONIG_SYN_NOT_NEWLINE_IN_NEGATIVE_CC      (1U<<20) /* [^...] */\r
-#define ONIG_SYN_BACKSLASH_ESCAPE_IN_CC          (1U<<21) /* [..\w..] etc.. */\r
-#define ONIG_SYN_ALLOW_EMPTY_RANGE_IN_CC         (1U<<22)\r
-#define ONIG_SYN_ALLOW_DOUBLE_RANGE_OP_IN_CC     (1U<<23) /* [0-9-a]=[0-9\-a] */\r
-/* syntax (behavior) warning */\r
-#define ONIG_SYN_WARN_CC_OP_NOT_ESCAPED          (1U<<24) /* [,-,] */\r
-#define ONIG_SYN_WARN_REDUNDANT_NESTED_REPEAT    (1U<<25) /* (?:a*)+ */\r
-\r
-/* meta character specifiers (onig_set_meta_char()) */\r
-#define ONIG_META_CHAR_ESCAPE               0\r
-#define ONIG_META_CHAR_ANYCHAR              1\r
-#define ONIG_META_CHAR_ANYTIME              2\r
-#define ONIG_META_CHAR_ZERO_OR_ONE_TIME     3\r
-#define ONIG_META_CHAR_ONE_OR_MORE_TIME     4\r
-#define ONIG_META_CHAR_ANYCHAR_ANYTIME      5\r
-\r
-#define ONIG_INEFFECTIVE_META_CHAR          0\r
-\r
-/* error codes */\r
-#define ONIG_IS_PATTERN_ERROR(ecode)   ((ecode) <= -100 && (ecode) > -1000)\r
-/* normal return */\r
-#define ONIG_NORMAL                                            0\r
-#define ONIG_MISMATCH                                         -1\r
-#define ONIG_NO_SUPPORT_CONFIG                                -2\r
-\r
-/* internal error */\r
-#define ONIGERR_MEMORY                                         -5\r
-#define ONIGERR_TYPE_BUG                                       -6\r
-#define ONIGERR_PARSER_BUG                                    -11\r
-#define ONIGERR_STACK_BUG                                     -12\r
-#define ONIGERR_UNDEFINED_BYTECODE                            -13\r
-#define ONIGERR_UNEXPECTED_BYTECODE                           -14\r
-#define ONIGERR_MATCH_STACK_LIMIT_OVER                        -15\r
-#define ONIGERR_DEFAULT_ENCODING_IS_NOT_SETTED                -21\r
-#define ONIGERR_SPECIFIED_ENCODING_CANT_CONVERT_TO_WIDE_CHAR  -22\r
-/* general error */\r
-#define ONIGERR_INVALID_ARGUMENT                              -30 \r
-/* syntax error */\r
-#define ONIGERR_END_PATTERN_AT_LEFT_BRACE                    -100\r
-#define ONIGERR_END_PATTERN_AT_LEFT_BRACKET                  -101\r
-#define ONIGERR_EMPTY_CHAR_CLASS                             -102\r
-#define ONIGERR_PREMATURE_END_OF_CHAR_CLASS                  -103\r
-#define ONIGERR_END_PATTERN_AT_ESCAPE                        -104\r
-#define ONIGERR_END_PATTERN_AT_META                          -105\r
-#define ONIGERR_END_PATTERN_AT_CONTROL                       -106\r
-#define ONIGERR_META_CODE_SYNTAX                             -108\r
-#define ONIGERR_CONTROL_CODE_SYNTAX                          -109\r
-#define ONIGERR_CHAR_CLASS_VALUE_AT_END_OF_RANGE             -110\r
-#define ONIGERR_CHAR_CLASS_VALUE_AT_START_OF_RANGE           -111\r
-#define ONIGERR_UNMATCHED_RANGE_SPECIFIER_IN_CHAR_CLASS      -112\r
-#define ONIGERR_TARGET_OF_REPEAT_OPERATOR_NOT_SPECIFIED      -113\r
-#define ONIGERR_TARGET_OF_REPEAT_OPERATOR_INVALID            -114\r
-#define ONIGERR_NESTED_REPEAT_OPERATOR                       -115\r
-#define ONIGERR_UNMATCHED_CLOSE_PARENTHESIS                  -116\r
-#define ONIGERR_END_PATTERN_WITH_UNMATCHED_PARENTHESIS       -117\r
-#define ONIGERR_END_PATTERN_IN_GROUP                         -118\r
-#define ONIGERR_UNDEFINED_GROUP_OPTION                       -119\r
-#define ONIGERR_INVALID_POSIX_BRACKET_TYPE                   -121\r
-#define ONIGERR_INVALID_LOOK_BEHIND_PATTERN                  -122\r
-#define ONIGERR_INVALID_REPEAT_RANGE_PATTERN                 -123\r
-/* values error (syntax error) */\r
-#define ONIGERR_TOO_BIG_NUMBER                               -200\r
-#define ONIGERR_TOO_BIG_NUMBER_FOR_REPEAT_RANGE              -201\r
-#define ONIGERR_UPPER_SMALLER_THAN_LOWER_IN_REPEAT_RANGE     -202\r
-#define ONIGERR_EMPTY_RANGE_IN_CHAR_CLASS                    -203\r
-#define ONIGERR_MISMATCH_CODE_LENGTH_IN_CLASS_RANGE          -204\r
-#define ONIGERR_TOO_MANY_MULTI_BYTE_RANGES                   -205\r
-#define ONIGERR_TOO_SHORT_MULTI_BYTE_STRING                  -206\r
-#define ONIGERR_TOO_BIG_BACKREF_NUMBER                       -207\r
-#define ONIGERR_INVALID_BACKREF                              -208\r
-#define ONIGERR_NUMBERED_BACKREF_OR_CALL_NOT_ALLOWED         -209\r
-#define ONIGERR_TOO_LONG_WIDE_CHAR_VALUE                     -212\r
-#define ONIGERR_EMPTY_GROUP_NAME                             -214\r
-#define ONIGERR_INVALID_GROUP_NAME                           -215\r
-#define ONIGERR_INVALID_CHAR_IN_GROUP_NAME                   -216\r
-#define ONIGERR_UNDEFINED_NAME_REFERENCE                     -217\r
-#define ONIGERR_UNDEFINED_GROUP_REFERENCE                    -218\r
-#define ONIGERR_MULTIPLEX_DEFINED_NAME                       -219\r
-#define ONIGERR_MULTIPLEX_DEFINITION_NAME_CALL               -220\r
-#define ONIGERR_NEVER_ENDING_RECURSION                       -221\r
-#define ONIGERR_GROUP_NUMBER_OVER_FOR_CAPTURE_HISTORY        -222\r
-#define ONIGERR_INVALID_CHAR_PROPERTY_NAME                   -223\r
-#define ONIGERR_INVALID_CODE_POINT_VALUE                     -400\r
-#define ONIGERR_INVALID_WIDE_CHAR_VALUE                      -400\r
-#define ONIGERR_TOO_BIG_WIDE_CHAR_VALUE                      -401\r
-#define ONIGERR_NOT_SUPPORTED_ENCODING_COMBINATION           -402\r
-#define ONIGERR_INVALID_COMBINATION_OF_OPTIONS               -403\r
-\r
-/* errors related to thread */\r
-#define ONIGERR_OVER_THREAD_PASS_LIMIT_COUNT                -1001\r
-\r
-\r
-/* must be smaller than BIT_STATUS_BITS_NUM (unsigned int * 8) */\r
-#define ONIG_MAX_CAPTURE_HISTORY_GROUP   31\r
-#define ONIG_IS_CAPTURE_HISTORY_GROUP(r, i) \\r
-  ((i) <= ONIG_MAX_CAPTURE_HISTORY_GROUP && (r)->list && (r)->list[i])\r
-\r
-typedef struct OnigCaptureTreeNodeStruct {\r
-  int group;   /* group number */\r
-  int beg;\r
-  int end;\r
-  int allocated;\r
-  int num_childs;\r
-  struct OnigCaptureTreeNodeStruct** childs;\r
-} OnigCaptureTreeNode;\r
-\r
-/* match result region type */\r
-struct re_registers {\r
-  int  allocated;\r
-  int  num_regs;\r
-  int* beg;\r
-  int* end;\r
-  /* extended */\r
-  OnigCaptureTreeNode* history_root;  /* capture history tree root */\r
-};\r
-\r
-/* capture tree traverse */\r
-#define ONIG_TRAVERSE_CALLBACK_AT_FIRST   1\r
-#define ONIG_TRAVERSE_CALLBACK_AT_LAST    2\r
-#define ONIG_TRAVERSE_CALLBACK_AT_BOTH \\r
-  ( ONIG_TRAVERSE_CALLBACK_AT_FIRST | ONIG_TRAVERSE_CALLBACK_AT_LAST )\r
-\r
-\r
-#define ONIG_REGION_NOTPOS            -1\r
-\r
-typedef struct re_registers   OnigRegion;\r
-\r
-typedef struct {\r
-  OnigEncoding enc;\r
-  OnigUChar* par;\r
-  OnigUChar* par_end;\r
-} OnigErrorInfo;\r
-\r
-typedef struct {\r
-  int lower;\r
-  int upper;\r
-} OnigRepeatRange;\r
-\r
-typedef void (*OnigWarnFunc) P_((const char* s));\r
-extern void onig_null_warn P_((const char* s));\r
-#define ONIG_NULL_WARN       onig_null_warn\r
-\r
-#define ONIG_CHAR_TABLE_SIZE   256\r
-\r
-/* regex_t state */\r
-#define ONIG_STATE_NORMAL              0\r
-#define ONIG_STATE_SEARCHING           1\r
-#define ONIG_STATE_COMPILING          -1\r
-#define ONIG_STATE_MODIFY             -2\r
-\r
-#define ONIG_STATE(reg) \\r
-  ((reg)->state > 0 ? ONIG_STATE_SEARCHING : (reg)->state)\r
-\r
-typedef struct re_pattern_buffer {\r
-  /* common members of BBuf(bytes-buffer) */\r
-  unsigned char* p;         /* compiled pattern */\r
-  unsigned int used;        /* used space for p */\r
-  unsigned int alloc;       /* allocated space for p */\r
-\r
-  int state;                     /* normal, searching, compiling */\r
-  int num_mem;                   /* used memory(...) num counted from 1 */\r
-  int num_repeat;                /* OP_REPEAT/OP_REPEAT_NG id-counter */\r
-  int num_null_check;            /* OP_NULL_CHECK_START/END id counter */\r
-  int num_comb_exp_check;        /* combination explosion check */\r
-  int num_call;                  /* number of subexp call */\r
-  unsigned int capture_history;  /* (?@...) flag (1-31) */\r
-  unsigned int bt_mem_start;     /* need backtrack flag */\r
-  unsigned int bt_mem_end;       /* need backtrack flag */\r
-  int stack_pop_level;\r
-  int repeat_range_alloc;\r
-  OnigRepeatRange* repeat_range;\r
-\r
-  OnigEncoding      enc;\r
-  OnigOptionType    options;\r
-  OnigSyntaxType*   syntax;\r
-  OnigCaseFoldType  case_fold_flag;\r
-  void*             name_table;\r
-\r
-  /* optimization info (string search, char-map and anchors) */\r
-  int            optimize;          /* optimize flag */\r
-  int            threshold_len;     /* search str-length for apply optimize */\r
-  int            anchor;            /* BEGIN_BUF, BEGIN_POS, (SEMI_)END_BUF */\r
-  OnigDistance   anchor_dmin;       /* (SEMI_)END_BUF anchor distance */\r
-  OnigDistance   anchor_dmax;       /* (SEMI_)END_BUF anchor distance */\r
-  int            sub_anchor;        /* start-anchor for exact or map */\r
-  unsigned char *exact;\r
-  unsigned char *exact_end;\r
-  unsigned char  map[ONIG_CHAR_TABLE_SIZE]; /* used as BM skip or char-map */\r
-  int           *int_map;                   /* BM skip for exact_len > 255 */\r
-  int           *int_map_backward;          /* BM skip for backward search */\r
-  OnigDistance   dmin;                      /* min-distance of exact or map */\r
-  OnigDistance   dmax;                      /* max-distance of exact or map */\r
-\r
-  /* regex_t link chain */\r
-  struct re_pattern_buffer* chain;  /* escape compile-conflict */\r
-} OnigRegexType;\r
-\r
-typedef OnigRegexType*  OnigRegex;\r
-\r
-#ifndef ONIG_ESCAPE_REGEX_T_COLLISION\r
-  typedef OnigRegexType  regex_t;\r
-#endif\r
-\r
-\r
-typedef struct {\r
-  int             num_of_elements;\r
-  OnigEncoding    pattern_enc;\r
-  OnigEncoding    target_enc;\r
-  OnigSyntaxType* syntax;\r
-  OnigOptionType  option;\r
-  OnigCaseFoldType   case_fold_flag;\r
-} OnigCompileInfo;\r
-\r
-/* Oniguruma Native API */\r
-ONIG_EXTERN\r
-int onig_init P_((void));\r
-ONIG_EXTERN\r
-int onig_error_code_to_str PV_((OnigUChar* s, int err_code, ...));\r
-ONIG_EXTERN\r
-void onig_set_warn_func P_((OnigWarnFunc f));\r
-ONIG_EXTERN\r
-void onig_set_verb_warn_func P_((OnigWarnFunc f));\r
-ONIG_EXTERN\r
-int onig_new P_((OnigRegex*, const OnigUChar* pattern, const OnigUChar* pattern_end, OnigOptionType option, OnigEncoding enc, OnigSyntaxType* syntax, OnigErrorInfo* einfo));\r
-ONIG_EXTERN\r
-int  onig_reg_init P_((regex_t* reg, OnigOptionType option, OnigCaseFoldType case_fold_flag, OnigEncoding enc, OnigSyntaxType* syntax));\r
-int onig_new_without_alloc P_((OnigRegex, const OnigUChar* pattern, const OnigUChar* pattern_end, OnigOptionType option, OnigEncoding enc, OnigSyntaxType* syntax, OnigErrorInfo* einfo));\r
-ONIG_EXTERN\r
-int onig_new_deluxe P_((OnigRegex* reg, const OnigUChar* pattern, const OnigUChar* pattern_end, OnigCompileInfo* ci, OnigErrorInfo* einfo));\r
-ONIG_EXTERN\r
-void onig_free P_((OnigRegex));\r
-ONIG_EXTERN\r
-void onig_free_body P_((OnigRegex));\r
-ONIG_EXTERN\r
-int onig_recompile P_((OnigRegex, const OnigUChar* pattern, const OnigUChar* pattern_end, OnigOptionType option, OnigEncoding enc, OnigSyntaxType* syntax, OnigErrorInfo* einfo));\r
-ONIG_EXTERN\r
-int onig_recompile_deluxe P_((OnigRegex reg, const OnigUChar* pattern, const OnigUChar* pattern_end, OnigCompileInfo* ci, OnigErrorInfo* einfo));\r
-ONIG_EXTERN\r
-int onig_search P_((OnigRegex, const OnigUChar* str, const OnigUChar* end, const OnigUChar* start, const OnigUChar* range, OnigRegion* region, OnigOptionType option));\r
-ONIG_EXTERN\r
-int onig_match P_((OnigRegex, const OnigUChar* str, const OnigUChar* end, const OnigUChar* at, OnigRegion* region, OnigOptionType option));\r
-ONIG_EXTERN\r
-OnigRegion* onig_region_new P_((void));\r
-ONIG_EXTERN\r
-void onig_region_init P_((OnigRegion* region));\r
-ONIG_EXTERN\r
-void onig_region_free P_((OnigRegion* region, int free_self));\r
-ONIG_EXTERN\r
-void onig_region_copy P_((OnigRegion* to, OnigRegion* from));\r
-ONIG_EXTERN\r
-void onig_region_clear P_((OnigRegion* region));\r
-ONIG_EXTERN\r
-int onig_region_resize P_((OnigRegion* region, int n));\r
-ONIG_EXTERN\r
-int onig_region_set P_((OnigRegion* region, int at, int beg, int end));\r
-ONIG_EXTERN\r
-int onig_name_to_group_numbers P_((OnigRegex reg, const OnigUChar* name, const OnigUChar* name_end, int** nums));\r
-ONIG_EXTERN\r
-int onig_name_to_backref_number P_((OnigRegex reg, const OnigUChar* name, const OnigUChar* name_end, OnigRegion *region));\r
-ONIG_EXTERN\r
-int onig_foreach_name P_((OnigRegex reg, int (*func)(const OnigUChar*, const OnigUChar*,int,int*,OnigRegex,void*), void* arg));\r
-ONIG_EXTERN\r
-int onig_number_of_names P_((OnigRegex reg));\r
-ONIG_EXTERN\r
-int onig_number_of_captures P_((OnigRegex reg));\r
-ONIG_EXTERN\r
-int onig_number_of_capture_histories P_((OnigRegex reg));\r
-ONIG_EXTERN\r
-OnigCaptureTreeNode* onig_get_capture_tree P_((OnigRegion* region));\r
-ONIG_EXTERN\r
-int onig_capture_tree_traverse P_((OnigRegion* region, int at, int(*callback_func)(int,int,int,int,int,void*), void* arg));\r
-ONIG_EXTERN\r
-int onig_noname_group_capture_is_active P_((OnigRegex reg));\r
-ONIG_EXTERN\r
-OnigEncoding onig_get_encoding P_((OnigRegex reg));\r
-ONIG_EXTERN\r
-OnigOptionType onig_get_options P_((OnigRegex reg));\r
-ONIG_EXTERN\r
-OnigCaseFoldType onig_get_case_fold_flag P_((OnigRegex reg));\r
-ONIG_EXTERN\r
-OnigSyntaxType* onig_get_syntax P_((OnigRegex reg));\r
-ONIG_EXTERN\r
-int onig_set_default_syntax P_((OnigSyntaxType* syntax));\r
-ONIG_EXTERN\r
-void onig_copy_syntax P_((OnigSyntaxType* to, OnigSyntaxType* from));\r
-ONIG_EXTERN\r
-unsigned int onig_get_syntax_op P_((OnigSyntaxType* syntax));\r
-ONIG_EXTERN\r
-unsigned int onig_get_syntax_op2 P_((OnigSyntaxType* syntax));\r
-ONIG_EXTERN\r
-unsigned int onig_get_syntax_behavior P_((OnigSyntaxType* syntax));\r
-ONIG_EXTERN\r
-OnigOptionType onig_get_syntax_options P_((OnigSyntaxType* syntax));\r
-ONIG_EXTERN\r
-void onig_set_syntax_op P_((OnigSyntaxType* syntax, unsigned int op));\r
-ONIG_EXTERN\r
-void onig_set_syntax_op2 P_((OnigSyntaxType* syntax, unsigned int op2));\r
-ONIG_EXTERN\r
-void onig_set_syntax_behavior P_((OnigSyntaxType* syntax, unsigned int behavior));\r
-ONIG_EXTERN\r
-void onig_set_syntax_options P_((OnigSyntaxType* syntax, OnigOptionType options));\r
-ONIG_EXTERN\r
-int onig_set_meta_char P_((OnigSyntaxType* syntax, unsigned int what, OnigCodePoint code));\r
-ONIG_EXTERN\r
-void onig_copy_encoding P_((OnigEncoding to, OnigEncoding from));\r
-ONIG_EXTERN\r
-OnigCaseFoldType onig_get_default_case_fold_flag P_((void));\r
-ONIG_EXTERN\r
-int onig_set_default_case_fold_flag P_((OnigCaseFoldType case_fold_flag));\r
-ONIG_EXTERN\r
-unsigned int onig_get_match_stack_limit_size P_((void));\r
-ONIG_EXTERN\r
-int onig_set_match_stack_limit_size P_((unsigned int size));\r
-ONIG_EXTERN\r
-int onig_end P_((void));\r
-ONIG_EXTERN\r
-const char* onig_version P_((void));\r
-ONIG_EXTERN\r
-const char* onig_copyright P_((void));\r
-\r
-#ifdef __cplusplus\r
-}\r
-#endif\r
-\r
-#endif /* ONIGURUMA_H */\r
diff --git a/MdeModulePkg/Universal/RegularExpressionDxe/Oniguruma/regcomp.c b/MdeModulePkg/Universal/RegularExpressionDxe/Oniguruma/regcomp.c
deleted file mode 100644 (file)
index 6dc6c28..0000000
+++ /dev/null
@@ -1,6291 +0,0 @@
-/**********************************************************************\r
-  regcomp.c -  Oniguruma (regular expression library)\r
-**********************************************************************/\r
-/*-\r
- * Copyright (c) 2002-2013  K.Kosako  <sndgk393 AT ybb DOT ne DOT jp>\r
- * All rights reserved.\r
- *\r
- * Copyright (c) 2015, Hewlett Packard Enterprise Development, L.P.<BR>\r
- *\r
- * Redistribution and use in source and binary forms, with or without\r
- * modification, are permitted provided that the following conditions\r
- * are met:\r
- * 1. Redistributions of source code must retain the above copyright\r
- *    notice, this list of conditions and the following disclaimer.\r
- * 2. Redistributions in binary form must reproduce the above copyright\r
- *    notice, this list of conditions and the following disclaimer in the\r
- *    documentation and/or other materials provided with the distribution.\r
- *\r
- * THIS SOFTWARE IS PROVIDED BY THE AUTHOR AND CONTRIBUTORS ``AS IS'' AND\r
- * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE\r
- * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE\r
- * ARE DISCLAIMED.  IN NO EVENT SHALL THE AUTHOR OR CONTRIBUTORS BE LIABLE\r
- * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL\r
- * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS\r
- * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)\r
- * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT\r
- * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY\r
- * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF\r
- * SUCH DAMAGE.\r
- */\r
-\r
-#include "regparse.h"\r
-\r
-OnigCaseFoldType OnigDefaultCaseFoldFlag = ONIGENC_CASE_FOLD_MIN;\r
-\r
-extern OnigCaseFoldType\r
-onig_get_default_case_fold_flag(void)\r
-{\r
-  return OnigDefaultCaseFoldFlag;\r
-}\r
-\r
-extern int\r
-onig_set_default_case_fold_flag(OnigCaseFoldType case_fold_flag)\r
-{\r
-  OnigDefaultCaseFoldFlag = case_fold_flag;\r
-  return 0;\r
-}\r
-\r
-\r
-#ifndef PLATFORM_UNALIGNED_WORD_ACCESS\r
-static unsigned char PadBuf[WORD_ALIGNMENT_SIZE];\r
-#endif\r
-\r
-static UChar*\r
-str_dup(UChar* s, UChar* end)\r
-{\r
-  int len = (int)(end - s);\r
-\r
-  if (len > 0) {\r
-    UChar* r = (UChar* )xmalloc(len + 1);\r
-    CHECK_NULL_RETURN(r);\r
-    xmemcpy(r, s, len);\r
-    r[len] = (UChar )0;\r
-    return r;\r
-  }\r
-  else return NULL;\r
-}\r
-\r
-static void\r
-swap_node(Node* a, Node* b)\r
-{\r
-  Node c;\r
-  c = *a; *a = *b; *b = c;\r
-\r
-  if (NTYPE(a) == NT_STR) {\r
-    StrNode* sn = NSTR(a);\r
-    if (sn->capa == 0) {\r
-      int len = (int)(sn->end - sn->s);\r
-      sn->s   = sn->buf;\r
-      sn->end = sn->s + len;\r
-    }\r
-  }\r
-\r
-  if (NTYPE(b) == NT_STR) {\r
-    StrNode* sn = NSTR(b);\r
-    if (sn->capa == 0) {\r
-      int len = (int)(sn->end - sn->s);\r
-      sn->s   = sn->buf;\r
-      sn->end = sn->s + len;\r
-    }\r
-  }\r
-}\r
-\r
-static OnigDistance\r
-distance_add(OnigDistance d1, OnigDistance d2)\r
-{\r
-  if (d1 == ONIG_INFINITE_DISTANCE || d2 == ONIG_INFINITE_DISTANCE)\r
-    return ONIG_INFINITE_DISTANCE;\r
-  else {\r
-    if (d1 <= ONIG_INFINITE_DISTANCE - d2) return d1 + d2;\r
-    else return ONIG_INFINITE_DISTANCE;\r
-  }\r
-}\r
-\r
-static OnigDistance\r
-distance_multiply(OnigDistance d, int m)\r
-{\r
-  if (m == 0) return 0;\r
-\r
-  if (d < ONIG_INFINITE_DISTANCE / m)\r
-    return d * m;\r
-  else\r
-    return ONIG_INFINITE_DISTANCE;\r
-}\r
-\r
-static int\r
-bitset_is_empty(BitSetRef bs)\r
-{\r
-  int i;\r
-  for (i = 0; i < (int )BITSET_SIZE; i++) {\r
-    if (bs[i] != 0) return 0;\r
-  }\r
-  return 1;\r
-}\r
-\r
-#ifdef ONIG_DEBUG\r
-static int\r
-bitset_on_num(BitSetRef bs)\r
-{\r
-  int i, n;\r
-\r
-  n = 0;\r
-  for (i = 0; i < SINGLE_BYTE_SIZE; i++) {\r
-    if (BITSET_AT(bs, i)) n++;\r
-  }\r
-  return n;\r
-}\r
-#endif\r
-\r
-extern int\r
-onig_bbuf_init(BBuf* buf, int size)\r
-{\r
-  if (size <= 0) {\r
-    size   = 0;\r
-    buf->p = NULL;\r
-  }\r
-  else {\r
-    buf->p = (UChar* )xmalloc(size);\r
-    if (IS_NULL(buf->p)) return(ONIGERR_MEMORY);\r
-  }\r
-\r
-  buf->alloc = size;\r
-  buf->used  = 0;\r
-  return 0;\r
-}\r
-\r
-\r
-#ifdef USE_SUBEXP_CALL\r
-\r
-static int\r
-unset_addr_list_init(UnsetAddrList* uslist, int size)\r
-{\r
-  UnsetAddr* p;\r
-\r
-  p = (UnsetAddr* )xmalloc(sizeof(UnsetAddr)* size);\r
-  CHECK_NULL_RETURN_MEMERR(p);\r
-  uslist->num   = 0;\r
-  uslist->alloc = size;\r
-  uslist->us    = p;\r
-  return 0;\r
-}\r
-\r
-static void\r
-unset_addr_list_end(UnsetAddrList* uslist)\r
-{\r
-  if (IS_NOT_NULL(uslist->us))\r
-    xfree(uslist->us);\r
-}\r
-\r
-static int\r
-unset_addr_list_add(UnsetAddrList* uslist, int offset, struct _Node* node)\r
-{\r
-  UnsetAddr* p;\r
-  int size;\r
-\r
-  if (uslist->num >= uslist->alloc) {\r
-    size = uslist->alloc * 2;\r
-    p = (UnsetAddr* )xrealloc(uslist->us, sizeof(UnsetAddr) * size, sizeof(UnsetAddr) * uslist->alloc);\r
-    CHECK_NULL_RETURN_MEMERR(p);\r
-    uslist->alloc = size;\r
-    uslist->us    = p;\r
-  }\r
-\r
-  uslist->us[uslist->num].offset = offset;\r
-  uslist->us[uslist->num].target = node;\r
-  uslist->num++;\r
-  return 0;\r
-}\r
-#endif /* USE_SUBEXP_CALL */\r
-\r
-\r
-static int\r
-add_opcode(regex_t* reg, int opcode)\r
-{\r
-  BBUF_ADD1(reg, ((unsigned char)opcode));\r
-  return 0;\r
-}\r
-\r
-#ifdef USE_COMBINATION_EXPLOSION_CHECK\r
-static int\r
-add_state_check_num(regex_t* reg, int num)\r
-{\r
-  StateCheckNumType n = (StateCheckNumType )num;\r
-\r
-  BBUF_ADD(reg, &n, SIZE_STATE_CHECK_NUM);\r
-  return 0;\r
-}\r
-#endif\r
-\r
-static int\r
-add_rel_addr(regex_t* reg, int addr)\r
-{\r
-  RelAddrType ra = (RelAddrType )addr;\r
-\r
-  BBUF_ADD(reg, &ra, SIZE_RELADDR);\r
-  return 0;\r
-}\r
-\r
-static int\r
-add_abs_addr(regex_t* reg, int addr)\r
-{\r
-  AbsAddrType ra = (AbsAddrType )addr;\r
-\r
-  BBUF_ADD(reg, &ra, SIZE_ABSADDR);\r
-  return 0;\r
-}\r
-\r
-static int\r
-add_length(regex_t* reg, int len)\r
-{\r
-  LengthType l = (LengthType )len;\r
-\r
-  BBUF_ADD(reg, &l, SIZE_LENGTH);\r
-  return 0;\r
-}\r
-\r
-static int\r
-add_mem_num(regex_t* reg, int num)\r
-{\r
-  MemNumType n = (MemNumType )num;\r
-\r
-  BBUF_ADD(reg, &n, SIZE_MEMNUM);\r
-  return 0;\r
-}\r
-\r
-static int\r
-add_pointer(regex_t* reg, void* addr)\r
-{\r
-  PointerType ptr = (PointerType )addr;\r
-\r
-  BBUF_ADD(reg, &ptr, SIZE_POINTER);\r
-  return 0;\r
-}\r
-\r
-static int\r
-add_option(regex_t* reg, OnigOptionType option)\r
-{\r
-  BBUF_ADD(reg, &option, SIZE_OPTION);\r
-  return 0;\r
-}\r
-\r
-static int\r
-add_opcode_rel_addr(regex_t* reg, int opcode, int addr)\r
-{\r
-  int r;\r
-\r
-  r = add_opcode(reg, opcode);\r
-  if (r) return r;\r
-  r = add_rel_addr(reg, addr);\r
-  return r;\r
-}\r
-\r
-static int\r
-add_bytes(regex_t* reg, UChar* bytes, int len)\r
-{\r
-  BBUF_ADD(reg, bytes, len);\r
-  return 0;\r
-}\r
-\r
-static int\r
-add_bitset(regex_t* reg, BitSetRef bs)\r
-{\r
-  BBUF_ADD(reg, bs, SIZE_BITSET);\r
-  return 0;\r
-}\r
-\r
-static int\r
-add_opcode_option(regex_t* reg, int opcode, OnigOptionType option)\r
-{\r
-  int r;\r
-\r
-  r = add_opcode(reg, opcode);\r
-  if (r) return r;\r
-  r = add_option(reg, option);\r
-  return r;\r
-}\r
-\r
-static int compile_length_tree(Node* node, regex_t* reg);\r
-static int compile_tree(Node* node, regex_t* reg);\r
-\r
-\r
-#define IS_NEED_STR_LEN_OP_EXACT(op) \\r
-   ((op) == OP_EXACTN    || (op) == OP_EXACTMB2N ||\\r
-    (op) == OP_EXACTMB3N || (op) == OP_EXACTMBN  || (op) == OP_EXACTN_IC)\r
-\r
-static int\r
-select_str_opcode(int mb_len, int str_len, int ignore_case)\r
-{\r
-  int op;\r
-\r
-  if (ignore_case) {\r
-    switch (str_len) {\r
-    case 1:  op = OP_EXACT1_IC; break;\r
-    default: op = OP_EXACTN_IC; break;\r
-    }\r
-  }\r
-  else {\r
-    switch (mb_len) {\r
-    case 1:\r
-      switch (str_len) {\r
-      case 1:  op = OP_EXACT1; break;\r
-      case 2:  op = OP_EXACT2; break;\r
-      case 3:  op = OP_EXACT3; break;\r
-      case 4:  op = OP_EXACT4; break;\r
-      case 5:  op = OP_EXACT5; break;\r
-      default: op = OP_EXACTN; break;\r
-      }\r
-      break;\r
-\r
-    case 2:\r
-      switch (str_len) {\r
-      case 1:  op = OP_EXACTMB2N1; break;\r
-      case 2:  op = OP_EXACTMB2N2; break;\r
-      case 3:  op = OP_EXACTMB2N3; break;\r
-      default: op = OP_EXACTMB2N;  break;\r
-      }\r
-      break;\r
-\r
-    case 3:\r
-      op = OP_EXACTMB3N;\r
-      break;\r
-\r
-    default:\r
-      op = OP_EXACTMBN;\r
-      break;\r
-    }\r
-  }\r
-  return op;\r
-}\r
-\r
-static int\r
-compile_tree_empty_check(Node* node, regex_t* reg, int empty_info)\r
-{\r
-  int r;\r
-  int saved_num_null_check = reg->num_null_check;\r
-\r
-  if (empty_info != 0) {\r
-    r = add_opcode(reg, OP_NULL_CHECK_START);\r
-    if (r) return r;\r
-    r = add_mem_num(reg, reg->num_null_check); /* NULL CHECK ID */\r
-    if (r) return r;\r
-    reg->num_null_check++;\r
-  }\r
-\r
-  r = compile_tree(node, reg);\r
-  if (r) return r;\r
-\r
-  if (empty_info != 0) {\r
-    if (empty_info == NQ_TARGET_IS_EMPTY)\r
-      r = add_opcode(reg, OP_NULL_CHECK_END);\r
-    else if (empty_info == NQ_TARGET_IS_EMPTY_MEM)\r
-      r = add_opcode(reg, OP_NULL_CHECK_END_MEMST);\r
-    else if (empty_info == NQ_TARGET_IS_EMPTY_REC)\r
-      r = add_opcode(reg, OP_NULL_CHECK_END_MEMST_PUSH);\r
-\r
-    if (r) return r;\r
-    r = add_mem_num(reg, saved_num_null_check); /* NULL CHECK ID */\r
-  }\r
-  return r;\r
-}\r
-\r
-#ifdef USE_SUBEXP_CALL\r
-static int\r
-compile_call(CallNode* node, regex_t* reg)\r
-{\r
-  int r;\r
-\r
-  r = add_opcode(reg, OP_CALL);\r
-  if (r) return r;\r
-  r = unset_addr_list_add(node->unset_addr_list, BBUF_GET_OFFSET_POS(reg),\r
-                          node->target);\r
-  if (r) return r;\r
-  r = add_abs_addr(reg, 0 /*dummy addr.*/);\r
-  return r;\r
-}\r
-#endif\r
-\r
-static int\r
-compile_tree_n_times(Node* node, int n, regex_t* reg)\r
-{\r
-  int i, r;\r
-\r
-  for (i = 0; i < n; i++) {\r
-    r = compile_tree(node, reg);\r
-    if (r) return r;\r
-  }\r
-  return 0;\r
-}\r
-\r
-static int\r
-add_compile_string_length(UChar* s ARG_UNUSED, int mb_len, int str_len,\r
-                          regex_t* reg ARG_UNUSED, int ignore_case)\r
-{\r
-  int len;\r
-  int op = select_str_opcode(mb_len, str_len, ignore_case);\r
-\r
-  len = SIZE_OPCODE;\r
-\r
-  if (op == OP_EXACTMBN)  len += SIZE_LENGTH;\r
-  if (IS_NEED_STR_LEN_OP_EXACT(op))\r
-    len += SIZE_LENGTH;\r
-\r
-  len += mb_len * str_len;\r
-  return len;\r
-}\r
-\r
-static int\r
-add_compile_string(UChar* s, int mb_len, int str_len,\r
-                   regex_t* reg, int ignore_case)\r
-{\r
-  int op = select_str_opcode(mb_len, str_len, ignore_case);\r
-  add_opcode(reg, op);\r
-\r
-  if (op == OP_EXACTMBN)\r
-    add_length(reg, mb_len);\r
-\r
-  if (IS_NEED_STR_LEN_OP_EXACT(op)) {\r
-    if (op == OP_EXACTN_IC)\r
-      add_length(reg, mb_len * str_len);\r
-    else\r
-      add_length(reg, str_len);\r
-  }\r
-\r
-  add_bytes(reg, s, mb_len * str_len);\r
-  return 0;\r
-}\r
-\r
-\r
-static int\r
-compile_length_string_node(Node* node, regex_t* reg)\r
-{\r
-  int rlen, r, len, prev_len, slen, ambig;\r
-  OnigEncoding enc = reg->enc;\r
-  UChar *p, *prev;\r
-  StrNode* sn;\r
-\r
-  sn = NSTR(node);\r
-  if (sn->end <= sn->s)\r
-    return 0;\r
-\r
-  ambig = NSTRING_IS_AMBIG(node);\r
-\r
-  p = prev = sn->s;\r
-  prev_len = enclen(enc, p);\r
-  p += prev_len;\r
-  slen = 1;\r
-  rlen = 0;\r
-\r
-  for (; p < sn->end; ) {\r
-    len = enclen(enc, p);\r
-    if (len == prev_len) {\r
-      slen++;\r
-    }\r
-    else {\r
-      r = add_compile_string_length(prev, prev_len, slen, reg, ambig);\r
-      rlen += r;\r
-      prev = p;\r
-      slen = 1;\r
-      prev_len = len;\r
-    }\r
-    p += len;\r
-  }\r
-  r = add_compile_string_length(prev, prev_len, slen, reg, ambig);\r
-  rlen += r;\r
-  return rlen;\r
-}\r
-\r
-static int\r
-compile_length_string_raw_node(StrNode* sn, regex_t* reg)\r
-{\r
-  if (sn->end <= sn->s)\r
-    return 0;\r
-\r
-  return add_compile_string_length(sn->s, 1 /* sb */, (int)(sn->end - sn->s), reg, 0);\r
-}\r
-\r
-static int\r
-compile_string_node(Node* node, regex_t* reg)\r
-{\r
-  int r, len, prev_len, slen, ambig;\r
-  OnigEncoding enc = reg->enc;\r
-  UChar *p, *prev, *end;\r
-  StrNode* sn;\r
-\r
-  sn = NSTR(node);\r
-  if (sn->end <= sn->s)\r
-    return 0;\r
-\r
-  end = sn->end;\r
-  ambig = NSTRING_IS_AMBIG(node);\r
-\r
-  p = prev = sn->s;\r
-  prev_len = enclen(enc, p);\r
-  p += prev_len;\r
-  slen = 1;\r
-\r
-  for (; p < end; ) {\r
-    len = enclen(enc, p);\r
-    if (len == prev_len) {\r
-      slen++;\r
-    }\r
-    else {\r
-      r = add_compile_string(prev, prev_len, slen, reg, ambig);\r
-      if (r) return r;\r
-\r
-      prev  = p;\r
-      slen  = 1;\r
-      prev_len = len;\r
-    }\r
-\r
-    p += len;\r
-  }\r
-  return add_compile_string(prev, prev_len, slen, reg, ambig);\r
-}\r
-\r
-static int\r
-compile_string_raw_node(StrNode* sn, regex_t* reg)\r
-{\r
-  if (sn->end <= sn->s)\r
-    return 0;\r
-\r
-  return add_compile_string(sn->s, 1 /* sb */, (int)(sn->end - sn->s), reg, 0);\r
-}\r
-\r
-static int\r
-add_multi_byte_cclass(BBuf* mbuf, regex_t* reg)\r
-{\r
-#ifdef PLATFORM_UNALIGNED_WORD_ACCESS\r
-  add_length(reg, mbuf->used);\r
-  return add_bytes(reg, mbuf->p, mbuf->used);\r
-#else\r
-  int r, pad_size;\r
-  UChar* p = BBUF_GET_ADD_ADDRESS(reg) + SIZE_LENGTH;\r
-\r
-  GET_ALIGNMENT_PAD_SIZE(p, pad_size);\r
-  add_length(reg, mbuf->used + (WORD_ALIGNMENT_SIZE - 1));\r
-  if (pad_size != 0) add_bytes(reg, PadBuf, pad_size);\r
-\r
-  r = add_bytes(reg, mbuf->p, mbuf->used);\r
-\r
-  /* padding for return value from compile_length_cclass_node() to be fix. */\r
-  pad_size = (WORD_ALIGNMENT_SIZE - 1) - pad_size;\r
-  if (pad_size != 0) add_bytes(reg, PadBuf, pad_size);\r
-  return r;\r
-#endif\r
-}\r
-\r
-static int\r
-compile_length_cclass_node(CClassNode* cc, regex_t* reg)\r
-{\r
-  int len;\r
-\r
-  if (IS_NCCLASS_SHARE(cc)) {\r
-    len = SIZE_OPCODE + SIZE_POINTER;\r
-    return len;\r
-  }\r
-\r
-  if (IS_NULL(cc->mbuf)) {\r
-    len = SIZE_OPCODE + SIZE_BITSET;\r
-  }\r
-  else {\r
-    if (ONIGENC_MBC_MINLEN(reg->enc) > 1 || bitset_is_empty(cc->bs)) {\r
-      len = SIZE_OPCODE;\r
-    }\r
-    else {\r
-      len = SIZE_OPCODE + SIZE_BITSET;\r
-    }\r
-#ifdef PLATFORM_UNALIGNED_WORD_ACCESS\r
-    len += SIZE_LENGTH + cc->mbuf->used;\r
-#else\r
-    len += SIZE_LENGTH + cc->mbuf->used + (WORD_ALIGNMENT_SIZE - 1);\r
-#endif\r
-  }\r
-\r
-  return len;\r
-}\r
-\r
-static int\r
-compile_cclass_node(CClassNode* cc, regex_t* reg)\r
-{\r
-  int r;\r
-\r
-  if (IS_NCCLASS_SHARE(cc)) {\r
-    add_opcode(reg, OP_CCLASS_NODE);\r
-    r = add_pointer(reg, cc);\r
-    return r;\r
-  }\r
-\r
-  if (IS_NULL(cc->mbuf)) {\r
-    if (IS_NCCLASS_NOT(cc))\r
-      add_opcode(reg, OP_CCLASS_NOT);\r
-    else\r
-      add_opcode(reg, OP_CCLASS);\r
-\r
-    r = add_bitset(reg, cc->bs);\r
-  }\r
-  else {\r
-    if (ONIGENC_MBC_MINLEN(reg->enc) > 1 || bitset_is_empty(cc->bs)) {\r
-      if (IS_NCCLASS_NOT(cc))\r
-        add_opcode(reg, OP_CCLASS_MB_NOT);\r
-      else\r
-        add_opcode(reg, OP_CCLASS_MB);\r
-\r
-      r = add_multi_byte_cclass(cc->mbuf, reg);\r
-    }\r
-    else {\r
-      if (IS_NCCLASS_NOT(cc))\r
-        add_opcode(reg, OP_CCLASS_MIX_NOT);\r
-      else\r
-        add_opcode(reg, OP_CCLASS_MIX);\r
-\r
-      r = add_bitset(reg, cc->bs);\r
-      if (r) return r;\r
-      r = add_multi_byte_cclass(cc->mbuf, reg);\r
-    }\r
-  }\r
-\r
-  return r;\r
-}\r
-\r
-static int\r
-entry_repeat_range(regex_t* reg, int id, int lower, int upper)\r
-{\r
-#define REPEAT_RANGE_ALLOC  4\r
-\r
-  OnigRepeatRange* p;\r
-\r
-  if (reg->repeat_range_alloc == 0) {\r
-    p = (OnigRepeatRange* )xmalloc(sizeof(OnigRepeatRange) * REPEAT_RANGE_ALLOC);\r
-    CHECK_NULL_RETURN_MEMERR(p);\r
-    reg->repeat_range = p;\r
-    reg->repeat_range_alloc = REPEAT_RANGE_ALLOC;\r
-  }\r
-  else if (reg->repeat_range_alloc <= id) {\r
-    int n;\r
-    n = reg->repeat_range_alloc + REPEAT_RANGE_ALLOC;\r
-    p = (OnigRepeatRange* )xrealloc(reg->repeat_range,\r
-                                    sizeof(OnigRepeatRange) * n,\r
-                                    sizeof(OnigRepeatRange) * reg->repeat_range_alloc);\r
-    CHECK_NULL_RETURN_MEMERR(p);\r
-    reg->repeat_range = p;\r
-    reg->repeat_range_alloc = n;\r
-  }\r
-  else {\r
-    p = reg->repeat_range;\r
-  }\r
-\r
-  p[id].lower = lower;\r
-  p[id].upper = (IS_REPEAT_INFINITE(upper) ? 0x7fffffff : upper);\r
-  return 0;\r
-}\r
-\r
-static int\r
-compile_range_repeat_node(QtfrNode* qn, int target_len, int empty_info,\r
-                          regex_t* reg)\r
-{\r
-  int r;\r
-  int num_repeat = reg->num_repeat;\r
-\r
-  r = add_opcode(reg, qn->greedy ? OP_REPEAT : OP_REPEAT_NG);\r
-  if (r) return r;\r
-  r = add_mem_num(reg, num_repeat); /* OP_REPEAT ID */\r
-  reg->num_repeat++;\r
-  if (r) return r;\r
-  r = add_rel_addr(reg, target_len + SIZE_OP_REPEAT_INC);\r
-  if (r) return r;\r
-\r
-  r = entry_repeat_range(reg, num_repeat, qn->lower, qn->upper);\r
-  if (r) return r;\r
-\r
-  r = compile_tree_empty_check(qn->target, reg, empty_info);\r
-  if (r) return r;\r
-\r
-  if (\r
-#ifdef USE_SUBEXP_CALL\r
-      reg->num_call > 0 ||\r
-#endif\r
-      IS_QUANTIFIER_IN_REPEAT(qn)) {\r
-    r = add_opcode(reg, qn->greedy ? OP_REPEAT_INC_SG : OP_REPEAT_INC_NG_SG);\r
-  }\r
-  else {\r
-    r = add_opcode(reg, qn->greedy ? OP_REPEAT_INC : OP_REPEAT_INC_NG);\r
-  }\r
-  if (r) return r;\r
-  r = add_mem_num(reg, num_repeat); /* OP_REPEAT ID */\r
-  return r;\r
-}\r
-\r
-static int\r
-is_anychar_star_quantifier(QtfrNode* qn)\r
-{\r
-  if (qn->greedy && IS_REPEAT_INFINITE(qn->upper) &&\r
-      NTYPE(qn->target) == NT_CANY)\r
-    return 1;\r
-  else\r
-    return 0;\r
-}\r
-\r
-#define QUANTIFIER_EXPAND_LIMIT_SIZE   50\r
-#define CKN_ON   (ckn > 0)\r
-\r
-#ifdef USE_COMBINATION_EXPLOSION_CHECK\r
-\r
-static int\r
-compile_length_quantifier_node(QtfrNode* qn, regex_t* reg)\r
-{\r
-  int len, mod_tlen, cklen;\r
-  int ckn;\r
-  int infinite = IS_REPEAT_INFINITE(qn->upper);\r
-  int empty_info = qn->target_empty_info;\r
-  int tlen = compile_length_tree(qn->target, reg);\r
-\r
-  if (tlen < 0) return tlen;\r
-\r
-  ckn = ((reg->num_comb_exp_check > 0) ? qn->comb_exp_check_num : 0);\r
-\r
-  cklen = (CKN_ON ? SIZE_STATE_CHECK_NUM: 0);\r
-\r
-  /* anychar repeat */\r
-  if (NTYPE(qn->target) == NT_CANY) {\r
-    if (qn->greedy && infinite) {\r
-      if (IS_NOT_NULL(qn->next_head_exact) && !CKN_ON)\r
-        return SIZE_OP_ANYCHAR_STAR_PEEK_NEXT + tlen * qn->lower + cklen;\r
-      else\r
-        return SIZE_OP_ANYCHAR_STAR + tlen * qn->lower + cklen;\r
-    }\r
-  }\r
-\r
-  if (empty_info != 0)\r
-    mod_tlen = tlen + (SIZE_OP_NULL_CHECK_START + SIZE_OP_NULL_CHECK_END);\r
-  else\r
-    mod_tlen = tlen;\r
-\r
-  if (infinite && qn->lower <= 1) {\r
-    if (qn->greedy) {\r
-      if (qn->lower == 1)\r
-       len = SIZE_OP_JUMP;\r
-      else\r
-       len = 0;\r
-\r
-      len += SIZE_OP_PUSH + cklen + mod_tlen + SIZE_OP_JUMP;\r
-    }\r
-    else {\r
-      if (qn->lower == 0)\r
-       len = SIZE_OP_JUMP;\r
-      else\r
-       len = 0;\r
-\r
-      len += mod_tlen + SIZE_OP_PUSH + cklen;\r
-    }\r
-  }\r
-  else if (qn->upper == 0) {\r
-    if (qn->is_refered != 0) /* /(?<n>..){0}/ */\r
-      len = SIZE_OP_JUMP + tlen;\r
-    else\r
-      len = 0;\r
-  }\r
-  else if (qn->upper == 1 && qn->greedy) {\r
-    if (qn->lower == 0) {\r
-      if (CKN_ON) {\r
-       len = SIZE_OP_STATE_CHECK_PUSH + tlen;\r
-      }\r
-      else {\r
-       len = SIZE_OP_PUSH + tlen;\r
-      }\r
-    }\r
-    else {\r
-      len = tlen;\r
-    }\r
-  }\r
-  else if (!qn->greedy && qn->upper == 1 && qn->lower == 0) { /* '??' */\r
-    len = SIZE_OP_PUSH + cklen + SIZE_OP_JUMP + tlen;\r
-  }\r
-  else {\r
-    len = SIZE_OP_REPEAT_INC\r
-        + mod_tlen + SIZE_OPCODE + SIZE_RELADDR + SIZE_MEMNUM;\r
-    if (CKN_ON)\r
-      len += SIZE_OP_STATE_CHECK;\r
-  }\r
-\r
-  return len;\r
-}\r
-\r
-static int\r
-compile_quantifier_node(QtfrNode* qn, regex_t* reg)\r
-{\r
-  int r, mod_tlen;\r
-  int ckn;\r
-  int infinite = IS_REPEAT_INFINITE(qn->upper);\r
-  int empty_info = qn->target_empty_info;\r
-  int tlen = compile_length_tree(qn->target, reg);\r
-\r
-  if (tlen < 0) return tlen;\r
-\r
-  ckn = ((reg->num_comb_exp_check > 0) ? qn->comb_exp_check_num : 0);\r
-\r
-  if (is_anychar_star_quantifier(qn)) {\r
-    r = compile_tree_n_times(qn->target, qn->lower, reg);\r
-    if (r) return r;\r
-    if (IS_NOT_NULL(qn->next_head_exact) && !CKN_ON) {\r
-      if (IS_MULTILINE(reg->options))\r
-       r = add_opcode(reg, OP_ANYCHAR_ML_STAR_PEEK_NEXT);\r
-      else\r
-       r = add_opcode(reg, OP_ANYCHAR_STAR_PEEK_NEXT);\r
-      if (r) return r;\r
-      if (CKN_ON) {\r
-       r = add_state_check_num(reg, ckn);\r
-       if (r) return r;\r
-      }\r
-\r
-      return add_bytes(reg, NSTR(qn->next_head_exact)->s, 1);\r
-    }\r
-    else {\r
-      if (IS_MULTILINE(reg->options)) {\r
-       r = add_opcode(reg, (CKN_ON ?\r
-                              OP_STATE_CHECK_ANYCHAR_ML_STAR\r
-                            : OP_ANYCHAR_ML_STAR));\r
-      }\r
-      else {\r
-       r = add_opcode(reg, (CKN_ON ?\r
-                              OP_STATE_CHECK_ANYCHAR_STAR\r
-                            : OP_ANYCHAR_STAR));\r
-      }\r
-      if (r) return r;\r
-      if (CKN_ON)\r
-       r = add_state_check_num(reg, ckn);\r
-\r
-      return r;\r
-    }\r
-  }\r
-\r
-  if (empty_info != 0)\r
-    mod_tlen = tlen + (SIZE_OP_NULL_CHECK_START + SIZE_OP_NULL_CHECK_END);\r
-  else\r
-    mod_tlen = tlen;\r
-\r
-  if (infinite && qn->lower <= 1) {\r
-    if (qn->greedy) {\r
-      if (qn->lower == 1) {\r
-       r = add_opcode_rel_addr(reg, OP_JUMP,\r
-                       (CKN_ON ? SIZE_OP_STATE_CHECK_PUSH : SIZE_OP_PUSH));\r
-       if (r) return r;\r
-      }\r
-\r
-      if (CKN_ON) {\r
-       r = add_opcode(reg, OP_STATE_CHECK_PUSH);\r
-       if (r) return r;\r
-       r = add_state_check_num(reg, ckn);\r
-       if (r) return r;\r
-       r = add_rel_addr(reg, mod_tlen + SIZE_OP_JUMP);\r
-      }\r
-      else {\r
-       r = add_opcode_rel_addr(reg, OP_PUSH, mod_tlen + SIZE_OP_JUMP);\r
-      }\r
-      if (r) return r;\r
-      r = compile_tree_empty_check(qn->target, reg, empty_info);\r
-      if (r) return r;\r
-      r = add_opcode_rel_addr(reg, OP_JUMP,\r
-             -(mod_tlen + (int )SIZE_OP_JUMP\r
-               + (int )(CKN_ON ? SIZE_OP_STATE_CHECK_PUSH : SIZE_OP_PUSH)));\r
-    }\r
-    else {\r
-      if (qn->lower == 0) {\r
-       r = add_opcode_rel_addr(reg, OP_JUMP, mod_tlen);\r
-       if (r) return r;\r
-      }\r
-      r = compile_tree_empty_check(qn->target, reg, empty_info);\r
-      if (r) return r;\r
-      if (CKN_ON) {\r
-       r = add_opcode(reg, OP_STATE_CHECK_PUSH_OR_JUMP);\r
-       if (r) return r;\r
-       r = add_state_check_num(reg, ckn);\r
-       if (r) return r;\r
-       r = add_rel_addr(reg,\r
-                -(mod_tlen + (int )SIZE_OP_STATE_CHECK_PUSH_OR_JUMP));\r
-      }\r
-      else\r
-       r = add_opcode_rel_addr(reg, OP_PUSH, -(mod_tlen + (int )SIZE_OP_PUSH));\r
-    }\r
-  }\r
-  else if (qn->upper == 0) {\r
-    if (qn->is_refered != 0) { /* /(?<n>..){0}/ */\r
-      r = add_opcode_rel_addr(reg, OP_JUMP, tlen);\r
-      if (r) return r;\r
-      r = compile_tree(qn->target, reg);\r
-    }\r
-    else\r
-      r = 0;\r
-  }\r
-  else if (qn->upper == 1 && qn->greedy) {\r
-    if (qn->lower == 0) {\r
-      if (CKN_ON) {\r
-       r = add_opcode(reg, OP_STATE_CHECK_PUSH);\r
-       if (r) return r;\r
-       r = add_state_check_num(reg, ckn);\r
-       if (r) return r;\r
-       r = add_rel_addr(reg, tlen);\r
-      }\r
-      else {\r
-       r = add_opcode_rel_addr(reg, OP_PUSH, tlen);\r
-      }\r
-      if (r) return r;\r
-    }\r
-\r
-    r = compile_tree(qn->target, reg);\r
-  }\r
-  else if (!qn->greedy && qn->upper == 1 && qn->lower == 0) { /* '??' */\r
-    if (CKN_ON) {\r
-      r = add_opcode(reg, OP_STATE_CHECK_PUSH);\r
-      if (r) return r;\r
-      r = add_state_check_num(reg, ckn);\r
-      if (r) return r;\r
-      r = add_rel_addr(reg, SIZE_OP_JUMP);\r
-    }\r
-    else {\r
-      r = add_opcode_rel_addr(reg, OP_PUSH, SIZE_OP_JUMP);\r
-    }\r
-\r
-    if (r) return r;\r
-    r = add_opcode_rel_addr(reg, OP_JUMP, tlen);\r
-    if (r) return r;\r
-    r = compile_tree(qn->target, reg);\r
-  }\r
-  else {\r
-    r = compile_range_repeat_node(qn, mod_tlen, empty_info, reg);\r
-    if (CKN_ON) {\r
-      if (r) return r;\r
-      r = add_opcode(reg, OP_STATE_CHECK);\r
-      if (r) return r;\r
-      r = add_state_check_num(reg, ckn);\r
-    }\r
-  }\r
-  return r;\r
-}\r
-\r
-#else /* USE_COMBINATION_EXPLOSION_CHECK */\r
-\r
-static int\r
-compile_length_quantifier_node(QtfrNode* qn, regex_t* reg)\r
-{\r
-  int len, mod_tlen;\r
-  int infinite = IS_REPEAT_INFINITE(qn->upper);\r
-  int empty_info = qn->target_empty_info;\r
-  int tlen = compile_length_tree(qn->target, reg);\r
-\r
-  if (tlen < 0) return tlen;\r
-\r
-  /* anychar repeat */\r
-  if (NTYPE(qn->target) == NT_CANY) {\r
-    if (qn->greedy && infinite) {\r
-      if (IS_NOT_NULL(qn->next_head_exact))\r
-        return SIZE_OP_ANYCHAR_STAR_PEEK_NEXT + tlen * qn->lower;\r
-      else\r
-        return SIZE_OP_ANYCHAR_STAR + tlen * qn->lower;\r
-    }\r
-  }\r
-\r
-  if (empty_info != 0)\r
-    mod_tlen = tlen + (SIZE_OP_NULL_CHECK_START + SIZE_OP_NULL_CHECK_END);\r
-  else\r
-    mod_tlen = tlen;\r
-\r
-  if (infinite &&\r
-      (qn->lower <= 1 || tlen * qn->lower <= QUANTIFIER_EXPAND_LIMIT_SIZE)) {\r
-    if (qn->lower == 1 && tlen > QUANTIFIER_EXPAND_LIMIT_SIZE) {\r
-      len = SIZE_OP_JUMP;\r
-    }\r
-    else {\r
-      len = tlen * qn->lower;\r
-    }\r
-\r
-    if (qn->greedy) {\r
-      if (IS_NOT_NULL(qn->head_exact))\r
-       len += SIZE_OP_PUSH_OR_JUMP_EXACT1 + mod_tlen + SIZE_OP_JUMP;\r
-      else if (IS_NOT_NULL(qn->next_head_exact))\r
-       len += SIZE_OP_PUSH_IF_PEEK_NEXT + mod_tlen + SIZE_OP_JUMP;\r
-      else\r
-       len += SIZE_OP_PUSH + mod_tlen + SIZE_OP_JUMP;\r
-    }\r
-    else\r
-      len += SIZE_OP_JUMP + mod_tlen + SIZE_OP_PUSH;\r
-  }\r
-  else if (qn->upper == 0 && qn->is_refered != 0) { /* /(?<n>..){0}/ */\r
-    len = SIZE_OP_JUMP + tlen;\r
-  }\r
-  else if (!infinite && qn->greedy &&\r
-           (qn->upper == 1 || (tlen + SIZE_OP_PUSH) * qn->upper\r
-                                      <= QUANTIFIER_EXPAND_LIMIT_SIZE)) {\r
-    len = tlen * qn->lower;\r
-    len += (SIZE_OP_PUSH + tlen) * (qn->upper - qn->lower);\r
-  }\r
-  else if (!qn->greedy && qn->upper == 1 && qn->lower == 0) { /* '??' */\r
-    len = SIZE_OP_PUSH + SIZE_OP_JUMP + tlen;\r
-  }\r
-  else {\r
-    len = SIZE_OP_REPEAT_INC\r
-        + mod_tlen + SIZE_OPCODE + SIZE_RELADDR + SIZE_MEMNUM;\r
-  }\r
-\r
-  return len;\r
-}\r
-\r
-static int\r
-compile_quantifier_node(QtfrNode* qn, regex_t* reg)\r
-{\r
-  int i, r, mod_tlen;\r
-  int infinite = IS_REPEAT_INFINITE(qn->upper);\r
-  int empty_info = qn->target_empty_info;\r
-  int tlen = compile_length_tree(qn->target, reg);\r
-\r
-  if (tlen < 0) return tlen;\r
-\r
-  if (is_anychar_star_quantifier(qn)) {\r
-    r = compile_tree_n_times(qn->target, qn->lower, reg);\r
-    if (r) return r;\r
-    if (IS_NOT_NULL(qn->next_head_exact)) {\r
-      if (IS_MULTILINE(reg->options))\r
-       r = add_opcode(reg, OP_ANYCHAR_ML_STAR_PEEK_NEXT);\r
-      else\r
-       r = add_opcode(reg, OP_ANYCHAR_STAR_PEEK_NEXT);\r
-      if (r) return r;\r
-      return add_bytes(reg, NSTR(qn->next_head_exact)->s, 1);\r
-    }\r
-    else {\r
-      if (IS_MULTILINE(reg->options))\r
-       return add_opcode(reg, OP_ANYCHAR_ML_STAR);\r
-      else\r
-       return add_opcode(reg, OP_ANYCHAR_STAR);\r
-    }\r
-  }\r
-\r
-  if (empty_info != 0)\r
-    mod_tlen = tlen + (SIZE_OP_NULL_CHECK_START + SIZE_OP_NULL_CHECK_END);\r
-  else\r
-    mod_tlen = tlen;\r
-\r
-  if (infinite &&\r
-      (qn->lower <= 1 || tlen * qn->lower <= QUANTIFIER_EXPAND_LIMIT_SIZE)) {\r
-    if (qn->lower == 1 && tlen > QUANTIFIER_EXPAND_LIMIT_SIZE) {\r
-      if (qn->greedy) {\r
-       if (IS_NOT_NULL(qn->head_exact))\r
-         r = add_opcode_rel_addr(reg, OP_JUMP, SIZE_OP_PUSH_OR_JUMP_EXACT1);\r
-       else if (IS_NOT_NULL(qn->next_head_exact))\r
-         r = add_opcode_rel_addr(reg, OP_JUMP, SIZE_OP_PUSH_IF_PEEK_NEXT);\r
-       else\r
-         r = add_opcode_rel_addr(reg, OP_JUMP, SIZE_OP_PUSH);\r
-      }\r
-      else {\r
-       r = add_opcode_rel_addr(reg, OP_JUMP, SIZE_OP_JUMP);\r
-      }\r
-      if (r) return r;\r
-    }\r
-    else {\r
-      r = compile_tree_n_times(qn->target, qn->lower, reg);\r
-      if (r) return r;\r
-    }\r
-\r
-    if (qn->greedy) {\r
-      if (IS_NOT_NULL(qn->head_exact)) {\r
-       r = add_opcode_rel_addr(reg, OP_PUSH_OR_JUMP_EXACT1,\r
-                            mod_tlen + SIZE_OP_JUMP);\r
-       if (r) return r;\r
-       add_bytes(reg, NSTR(qn->head_exact)->s, 1);\r
-       r = compile_tree_empty_check(qn->target, reg, empty_info);\r
-       if (r) return r;\r
-       r = add_opcode_rel_addr(reg, OP_JUMP,\r
-       -(mod_tlen + (int )SIZE_OP_JUMP + (int )SIZE_OP_PUSH_OR_JUMP_EXACT1));\r
-      }\r
-      else if (IS_NOT_NULL(qn->next_head_exact)) {\r
-       r = add_opcode_rel_addr(reg, OP_PUSH_IF_PEEK_NEXT,\r
-                               mod_tlen + SIZE_OP_JUMP);\r
-       if (r) return r;\r
-       add_bytes(reg, NSTR(qn->next_head_exact)->s, 1);\r
-       r = compile_tree_empty_check(qn->target, reg, empty_info);\r
-       if (r) return r;\r
-       r = add_opcode_rel_addr(reg, OP_JUMP,\r
-          -(mod_tlen + (int )SIZE_OP_JUMP + (int )SIZE_OP_PUSH_IF_PEEK_NEXT));\r
-      }\r
-      else {\r
-       r = add_opcode_rel_addr(reg, OP_PUSH, mod_tlen + SIZE_OP_JUMP);\r
-       if (r) return r;\r
-       r = compile_tree_empty_check(qn->target, reg, empty_info);\r
-       if (r) return r;\r
-       r = add_opcode_rel_addr(reg, OP_JUMP,\r
-                    -(mod_tlen + (int )SIZE_OP_JUMP + (int )SIZE_OP_PUSH));\r
-      }\r
-    }\r
-    else {\r
-      r = add_opcode_rel_addr(reg, OP_JUMP, mod_tlen);\r
-      if (r) return r;\r
-      r = compile_tree_empty_check(qn->target, reg, empty_info);\r
-      if (r) return r;\r
-      r = add_opcode_rel_addr(reg, OP_PUSH, -(mod_tlen + (int )SIZE_OP_PUSH));\r
-    }\r
-  }\r
-  else if (qn->upper == 0 && qn->is_refered != 0) { /* /(?<n>..){0}/ */\r
-    r = add_opcode_rel_addr(reg, OP_JUMP, tlen);\r
-    if (r) return r;\r
-    r = compile_tree(qn->target, reg);\r
-  }\r
-  else if (!infinite && qn->greedy &&\r
-           (qn->upper == 1 || (tlen + SIZE_OP_PUSH) * qn->upper\r
-                                  <= QUANTIFIER_EXPAND_LIMIT_SIZE)) {\r
-    int n = qn->upper - qn->lower;\r
-\r
-    r = compile_tree_n_times(qn->target, qn->lower, reg);\r
-    if (r) return r;\r
-\r
-    for (i = 0; i < n; i++) {\r
-      r = add_opcode_rel_addr(reg, OP_PUSH,\r
-                          (n - i) * tlen + (n - i - 1) * SIZE_OP_PUSH);\r
-      if (r) return r;\r
-      r = compile_tree(qn->target, reg);\r
-      if (r) return r;\r
-    }\r
-  }\r
-  else if (!qn->greedy && qn->upper == 1 && qn->lower == 0) { /* '??' */\r
-    r = add_opcode_rel_addr(reg, OP_PUSH, SIZE_OP_JUMP);\r
-    if (r) return r;\r
-    r = add_opcode_rel_addr(reg, OP_JUMP, tlen);\r
-    if (r) return r;\r
-    r = compile_tree(qn->target, reg);\r
-  }\r
-  else {\r
-    r = compile_range_repeat_node(qn, mod_tlen, empty_info, reg);\r
-  }\r
-  return r;\r
-}\r
-#endif /* USE_COMBINATION_EXPLOSION_CHECK */\r
-\r
-static int\r
-compile_length_option_node(EncloseNode* node, regex_t* reg)\r
-{\r
-  int tlen;\r
-  OnigOptionType prev = reg->options;\r
-\r
-  reg->options = node->option;\r
-  tlen = compile_length_tree(node->target, reg);\r
-  reg->options = prev;\r
-\r
-  if (tlen < 0) return tlen;\r
-\r
-  if (IS_DYNAMIC_OPTION(prev ^ node->option)) {\r
-    return SIZE_OP_SET_OPTION_PUSH + SIZE_OP_SET_OPTION + SIZE_OP_FAIL\r
-           + tlen + SIZE_OP_SET_OPTION;\r
-  }\r
-  else\r
-    return tlen;\r
-}\r
-\r
-static int\r
-compile_option_node(EncloseNode* node, regex_t* reg)\r
-{\r
-  int r;\r
-  OnigOptionType prev = reg->options;\r
-\r
-  if (IS_DYNAMIC_OPTION(prev ^ node->option)) {\r
-    r = add_opcode_option(reg, OP_SET_OPTION_PUSH, node->option);\r
-    if (r) return r;\r
-    r = add_opcode_option(reg, OP_SET_OPTION, prev);\r
-    if (r) return r;\r
-    r = add_opcode(reg, OP_FAIL);\r
-    if (r) return r;\r
-  }\r
-\r
-  reg->options = node->option;\r
-  r = compile_tree(node->target, reg);\r
-  reg->options = prev;\r
-\r
-  if (IS_DYNAMIC_OPTION(prev ^ node->option)) {\r
-    if (r) return r;\r
-    r = add_opcode_option(reg, OP_SET_OPTION, prev);\r
-  }\r
-  return r;\r
-}\r
-\r
-static int\r
-compile_length_enclose_node(EncloseNode* node, regex_t* reg)\r
-{\r
-  int len;\r
-  int tlen;\r
-\r
-  if (node->type == ENCLOSE_OPTION)\r
-    return compile_length_option_node(node, reg);\r
-\r
-  if (node->target) {\r
-    tlen = compile_length_tree(node->target, reg);\r
-    if (tlen < 0) return tlen;\r
-  }\r
-  else\r
-    tlen = 0;\r
-\r
-  switch (node->type) {\r
-  case ENCLOSE_MEMORY:\r
-#ifdef USE_SUBEXP_CALL\r
-    if (IS_ENCLOSE_CALLED(node)) {\r
-      len = SIZE_OP_MEMORY_START_PUSH + tlen\r
-         + SIZE_OP_CALL + SIZE_OP_JUMP + SIZE_OP_RETURN;\r
-      if (BIT_STATUS_AT(reg->bt_mem_end, node->regnum))\r
-       len += (IS_ENCLOSE_RECURSION(node)\r
-               ? SIZE_OP_MEMORY_END_PUSH_REC : SIZE_OP_MEMORY_END_PUSH);\r
-      else\r
-       len += (IS_ENCLOSE_RECURSION(node)\r
-               ? SIZE_OP_MEMORY_END_REC : SIZE_OP_MEMORY_END);\r
-    }\r
-    else\r
-#endif\r
-    {\r
-      if (BIT_STATUS_AT(reg->bt_mem_start, node->regnum))\r
-       len = SIZE_OP_MEMORY_START_PUSH;\r
-      else\r
-       len = SIZE_OP_MEMORY_START;\r
-\r
-      len += tlen + (BIT_STATUS_AT(reg->bt_mem_end, node->regnum)\r
-                    ? SIZE_OP_MEMORY_END_PUSH : SIZE_OP_MEMORY_END);\r
-    }\r
-    break;\r
-\r
-  case ENCLOSE_STOP_BACKTRACK:\r
-    if (IS_ENCLOSE_STOP_BT_SIMPLE_REPEAT(node)) {\r
-      QtfrNode* qn = NQTFR(node->target);\r
-      tlen = compile_length_tree(qn->target, reg);\r
-      if (tlen < 0) return tlen;\r
-\r
-      len = tlen * qn->lower\r
-         + SIZE_OP_PUSH + tlen + SIZE_OP_POP + SIZE_OP_JUMP;\r
-    }\r
-    else {\r
-      len = SIZE_OP_PUSH_STOP_BT + tlen + SIZE_OP_POP_STOP_BT;\r
-    }\r
-    break;\r
-\r
-  default:\r
-    return ONIGERR_TYPE_BUG;\r
-    break;\r
-  }\r
-\r
-  return len;\r
-}\r
-\r
-static int get_char_length_tree(Node* node, regex_t* reg, int* len);\r
-\r
-static int\r
-compile_enclose_node(EncloseNode* node, regex_t* reg)\r
-{\r
-  int r, len;\r
-\r
-  if (node->type == ENCLOSE_OPTION)\r
-    return compile_option_node(node, reg);\r
-\r
-  switch (node->type) {\r
-  case ENCLOSE_MEMORY:\r
-#ifdef USE_SUBEXP_CALL\r
-    if (IS_ENCLOSE_CALLED(node)) {\r
-      r = add_opcode(reg, OP_CALL);\r
-      if (r) return r;\r
-      node->call_addr = BBUF_GET_OFFSET_POS(reg) + SIZE_ABSADDR + SIZE_OP_JUMP;\r
-      node->state |= NST_ADDR_FIXED;\r
-      r = add_abs_addr(reg, (int )node->call_addr);\r
-      if (r) return r;\r
-      len = compile_length_tree(node->target, reg);\r
-      len += (SIZE_OP_MEMORY_START_PUSH + SIZE_OP_RETURN);\r
-      if (BIT_STATUS_AT(reg->bt_mem_end, node->regnum))\r
-       len += (IS_ENCLOSE_RECURSION(node)\r
-               ? SIZE_OP_MEMORY_END_PUSH_REC : SIZE_OP_MEMORY_END_PUSH);\r
-      else\r
-       len += (IS_ENCLOSE_RECURSION(node)\r
-               ? SIZE_OP_MEMORY_END_REC : SIZE_OP_MEMORY_END);\r
-\r
-      r = add_opcode_rel_addr(reg, OP_JUMP, len);\r
-      if (r) return r;\r
-    }\r
-#endif\r
-    if (BIT_STATUS_AT(reg->bt_mem_start, node->regnum))\r
-      r = add_opcode(reg, OP_MEMORY_START_PUSH);\r
-    else\r
-      r = add_opcode(reg, OP_MEMORY_START);\r
-    if (r) return r;\r
-    r = add_mem_num(reg, node->regnum);\r
-    if (r) return r;\r
-    r = compile_tree(node->target, reg);\r
-    if (r) return r;\r
-#ifdef USE_SUBEXP_CALL\r
-    if (IS_ENCLOSE_CALLED(node)) {\r
-      if (BIT_STATUS_AT(reg->bt_mem_end, node->regnum))\r
-       r = add_opcode(reg, (IS_ENCLOSE_RECURSION(node)\r
-                            ? OP_MEMORY_END_PUSH_REC : OP_MEMORY_END_PUSH));\r
-      else\r
-       r = add_opcode(reg, (IS_ENCLOSE_RECURSION(node)\r
-                            ? OP_MEMORY_END_REC : OP_MEMORY_END));\r
-\r
-      if (r) return r;\r
-      r = add_mem_num(reg, node->regnum);\r
-      if (r) return r;\r
-      r = add_opcode(reg, OP_RETURN);\r
-    }\r
-    else\r
-#endif\r
-    {\r
-      if (BIT_STATUS_AT(reg->bt_mem_end, node->regnum))\r
-       r = add_opcode(reg, OP_MEMORY_END_PUSH);\r
-      else\r
-       r = add_opcode(reg, OP_MEMORY_END);\r
-      if (r) return r;\r
-      r = add_mem_num(reg, node->regnum);\r
-    }\r
-    break;\r
-\r
-  case ENCLOSE_STOP_BACKTRACK:\r
-    if (IS_ENCLOSE_STOP_BT_SIMPLE_REPEAT(node)) {\r
-      QtfrNode* qn = NQTFR(node->target);\r
-      r = compile_tree_n_times(qn->target, qn->lower, reg);\r
-      if (r) return r;\r
-\r
-      len = compile_length_tree(qn->target, reg);\r
-      if (len < 0) return len;\r
-\r
-      r = add_opcode_rel_addr(reg, OP_PUSH, len + SIZE_OP_POP + SIZE_OP_JUMP);\r
-      if (r) return r;\r
-      r = compile_tree(qn->target, reg);\r
-      if (r) return r;\r
-      r = add_opcode(reg, OP_POP);\r
-      if (r) return r;\r
-      r = add_opcode_rel_addr(reg, OP_JUMP,\r
-        -((int )SIZE_OP_PUSH + len + (int )SIZE_OP_POP + (int )SIZE_OP_JUMP));\r
-    }\r
-    else {\r
-      r = add_opcode(reg, OP_PUSH_STOP_BT);\r
-      if (r) return r;\r
-      r = compile_tree(node->target, reg);\r
-      if (r) return r;\r
-      r = add_opcode(reg, OP_POP_STOP_BT);\r
-    }\r
-    break;\r
-\r
-  default:\r
-    return ONIGERR_TYPE_BUG;\r
-    break;\r
-  }\r
-\r
-  return r;\r
-}\r
-\r
-static int\r
-compile_length_anchor_node(AnchorNode* node, regex_t* reg)\r
-{\r
-  int len;\r
-  int tlen = 0;\r
-\r
-  if (node->target) {\r
-    tlen = compile_length_tree(node->target, reg);\r
-    if (tlen < 0) return tlen;\r
-  }\r
-\r
-  switch (node->type) {\r
-  case ANCHOR_PREC_READ:\r
-    len = SIZE_OP_PUSH_POS + tlen + SIZE_OP_POP_POS;\r
-    break;\r
-  case ANCHOR_PREC_READ_NOT:\r
-    len = SIZE_OP_PUSH_POS_NOT + tlen + SIZE_OP_FAIL_POS;\r
-    break;\r
-  case ANCHOR_LOOK_BEHIND:\r
-    len = SIZE_OP_LOOK_BEHIND + tlen;\r
-    break;\r
-  case ANCHOR_LOOK_BEHIND_NOT:\r
-    len = SIZE_OP_PUSH_LOOK_BEHIND_NOT + tlen + SIZE_OP_FAIL_LOOK_BEHIND_NOT;\r
-    break;\r
-\r
-  default:\r
-    len = SIZE_OPCODE;\r
-    break;\r
-  }\r
-\r
-  return len;\r
-}\r
-\r
-static int\r
-compile_anchor_node(AnchorNode* node, regex_t* reg)\r
-{\r
-  int r, len;\r
-\r
-  switch (node->type) {\r
-  case ANCHOR_BEGIN_BUF:      r = add_opcode(reg, OP_BEGIN_BUF);      break;\r
-  case ANCHOR_END_BUF:        r = add_opcode(reg, OP_END_BUF);        break;\r
-  case ANCHOR_BEGIN_LINE:     r = add_opcode(reg, OP_BEGIN_LINE);     break;\r
-  case ANCHOR_END_LINE:       r = add_opcode(reg, OP_END_LINE);       break;\r
-  case ANCHOR_SEMI_END_BUF:   r = add_opcode(reg, OP_SEMI_END_BUF);   break;\r
-  case ANCHOR_BEGIN_POSITION: r = add_opcode(reg, OP_BEGIN_POSITION); break;\r
-\r
-  case ANCHOR_WORD_BOUND:     r = add_opcode(reg, OP_WORD_BOUND);     break;\r
-  case ANCHOR_NOT_WORD_BOUND: r = add_opcode(reg, OP_NOT_WORD_BOUND); break;\r
-#ifdef USE_WORD_BEGIN_END\r
-  case ANCHOR_WORD_BEGIN:     r = add_opcode(reg, OP_WORD_BEGIN);     break;\r
-  case ANCHOR_WORD_END:       r = add_opcode(reg, OP_WORD_END);       break;\r
-#endif\r
-\r
-  case ANCHOR_PREC_READ:\r
-    r = add_opcode(reg, OP_PUSH_POS);\r
-    if (r) return r;\r
-    r = compile_tree(node->target, reg);\r
-    if (r) return r;\r
-    r = add_opcode(reg, OP_POP_POS);\r
-    break;\r
-\r
-  case ANCHOR_PREC_READ_NOT:\r
-    len = compile_length_tree(node->target, reg);\r
-    if (len < 0) return len;\r
-    r = add_opcode_rel_addr(reg, OP_PUSH_POS_NOT, len + SIZE_OP_FAIL_POS);\r
-    if (r) return r;\r
-    r = compile_tree(node->target, reg);\r
-    if (r) return r;\r
-    r = add_opcode(reg, OP_FAIL_POS);\r
-    break;\r
-\r
-  case ANCHOR_LOOK_BEHIND:\r
-    {\r
-      int n;\r
-      r = add_opcode(reg, OP_LOOK_BEHIND);\r
-      if (r) return r;\r
-      if (node->char_len < 0) {\r
-       r = get_char_length_tree(node->target, reg, &n);\r
-       if (r) return ONIGERR_INVALID_LOOK_BEHIND_PATTERN;\r
-      }\r
-      else\r
-       n = node->char_len;\r
-      r = add_length(reg, n);\r
-      if (r) return r;\r
-      r = compile_tree(node->target, reg);\r
-    }\r
-    break;\r
-\r
-  case ANCHOR_LOOK_BEHIND_NOT:\r
-    {\r
-      int n;\r
-      len = compile_length_tree(node->target, reg);\r
-      r = add_opcode_rel_addr(reg, OP_PUSH_LOOK_BEHIND_NOT,\r
-                          len + SIZE_OP_FAIL_LOOK_BEHIND_NOT);\r
-      if (r) return r;\r
-      if (node->char_len < 0) {\r
-       r = get_char_length_tree(node->target, reg, &n);\r
-       if (r) return ONIGERR_INVALID_LOOK_BEHIND_PATTERN;\r
-      }\r
-      else\r
-       n = node->char_len;\r
-      r = add_length(reg, n);\r
-      if (r) return r;\r
-      r = compile_tree(node->target, reg);\r
-      if (r) return r;\r
-      r = add_opcode(reg, OP_FAIL_LOOK_BEHIND_NOT);\r
-    }\r
-    break;\r
-\r
-  default:\r
-    return ONIGERR_TYPE_BUG;\r
-    break;\r
-  }\r
-\r
-  return r;\r
-}\r
-\r
-static int\r
-compile_length_tree(Node* node, regex_t* reg)\r
-{\r
-  int len, type, r;\r
-\r
-  type = NTYPE(node);\r
-  switch (type) {\r
-  case NT_LIST:\r
-    len = 0;\r
-    do {\r
-      r = compile_length_tree(NCAR(node), reg);\r
-      if (r < 0) return r;\r
-      len += r;\r
-    } while (IS_NOT_NULL(node = NCDR(node)));\r
-    r = len;\r
-    break;\r
-\r
-  case NT_ALT:\r
-    {\r
-      int n;\r
-\r
-      n = r = 0;\r
-      do {\r
-       r += compile_length_tree(NCAR(node), reg);\r
-       n++;\r
-      } while (IS_NOT_NULL(node = NCDR(node)));\r
-      r += (SIZE_OP_PUSH + SIZE_OP_JUMP) * (n - 1);\r
-    }\r
-    break;\r
-\r
-  case NT_STR:\r
-    if (NSTRING_IS_RAW(node))\r
-      r = compile_length_string_raw_node(NSTR(node), reg);\r
-    else\r
-      r = compile_length_string_node(node, reg);\r
-    break;\r
-\r
-  case NT_CCLASS:\r
-    r = compile_length_cclass_node(NCCLASS(node), reg);\r
-    break;\r
-\r
-  case NT_CTYPE:\r
-  case NT_CANY:\r
-    r = SIZE_OPCODE;\r
-    break;\r
-\r
-  case NT_BREF:\r
-    {\r
-      BRefNode* br = NBREF(node);\r
-\r
-#ifdef USE_BACKREF_WITH_LEVEL\r
-      if (IS_BACKREF_NEST_LEVEL(br)) {\r
-        r = SIZE_OPCODE + SIZE_OPTION + SIZE_LENGTH +\r
-            SIZE_LENGTH + (SIZE_MEMNUM * br->back_num);\r
-      }\r
-      else\r
-#endif\r
-      if (br->back_num == 1) {\r
-       r = ((!IS_IGNORECASE(reg->options) && br->back_static[0] <= 2)\r
-            ? SIZE_OPCODE : (SIZE_OPCODE + SIZE_MEMNUM));\r
-      }\r
-      else {\r
-       r = SIZE_OPCODE + SIZE_LENGTH + (SIZE_MEMNUM * br->back_num);\r
-      }\r
-    }\r
-    break;\r
-\r
-#ifdef USE_SUBEXP_CALL\r
-  case NT_CALL:\r
-    r = SIZE_OP_CALL;\r
-    break;\r
-#endif\r
-\r
-  case NT_QTFR:\r
-    r = compile_length_quantifier_node(NQTFR(node), reg);\r
-    break;\r
-\r
-  case NT_ENCLOSE:\r
-    r = compile_length_enclose_node(NENCLOSE(node), reg);\r
-    break;\r
-\r
-  case NT_ANCHOR:\r
-    r = compile_length_anchor_node(NANCHOR(node), reg);\r
-    break;\r
-\r
-  default:\r
-    return ONIGERR_TYPE_BUG;\r
-    break;\r
-  }\r
-\r
-  return r;\r
-}\r
-\r
-static int\r
-compile_tree(Node* node, regex_t* reg)\r
-{\r
-  int n, type, len, pos, r = 0;\r
-\r
-  type = NTYPE(node);\r
-  switch (type) {\r
-  case NT_LIST:\r
-    do {\r
-      r = compile_tree(NCAR(node), reg);\r
-    } while (r == 0 && IS_NOT_NULL(node = NCDR(node)));\r
-    break;\r
-\r
-  case NT_ALT:\r
-    {\r
-      Node* x = node;\r
-      len = 0;\r
-      do {\r
-       len += compile_length_tree(NCAR(x), reg);\r
-       if (NCDR(x) != NULL) {\r
-         len += SIZE_OP_PUSH + SIZE_OP_JUMP;\r
-       }\r
-      } while (IS_NOT_NULL(x = NCDR(x)));\r
-      pos = reg->used + len;  /* goal position */\r
-\r
-      do {\r
-       len = compile_length_tree(NCAR(node), reg);\r
-       if (IS_NOT_NULL(NCDR(node))) {\r
-         r = add_opcode_rel_addr(reg, OP_PUSH, len + SIZE_OP_JUMP);\r
-         if (r) break;\r
-       }\r
-       r = compile_tree(NCAR(node), reg);\r
-       if (r) break;\r
-       if (IS_NOT_NULL(NCDR(node))) {\r
-         len = pos - (reg->used + SIZE_OP_JUMP);\r
-         r = add_opcode_rel_addr(reg, OP_JUMP, len);\r
-         if (r) break;\r
-       }\r
-      } while (IS_NOT_NULL(node = NCDR(node)));\r
-    }\r
-    break;\r
-\r
-  case NT_STR:\r
-    if (NSTRING_IS_RAW(node))\r
-      r = compile_string_raw_node(NSTR(node), reg);\r
-    else\r
-      r = compile_string_node(node, reg);\r
-    break;\r
-\r
-  case NT_CCLASS:\r
-    r = compile_cclass_node(NCCLASS(node), reg);\r
-    break;\r
-\r
-  case NT_CTYPE:\r
-    {\r
-      int op;\r
-\r
-      switch (NCTYPE(node)->ctype) {\r
-      case ONIGENC_CTYPE_WORD:\r
-       if (NCTYPE(node)->not != 0)  op = OP_NOT_WORD;\r
-       else                         op = OP_WORD;\r
-       break;\r
-      default:\r
-       return ONIGERR_TYPE_BUG;\r
-       break;\r
-      }\r
-      r = add_opcode(reg, op);\r
-    }\r
-    break;\r
-\r
-  case NT_CANY:\r
-    if (IS_MULTILINE(reg->options))\r
-      r = add_opcode(reg, OP_ANYCHAR_ML);\r
-    else\r
-      r = add_opcode(reg, OP_ANYCHAR);\r
-    break;\r
-\r
-  case NT_BREF:\r
-    {\r
-      BRefNode* br = NBREF(node);\r
-\r
-#ifdef USE_BACKREF_WITH_LEVEL\r
-      if (IS_BACKREF_NEST_LEVEL(br)) {\r
-       r = add_opcode(reg, OP_BACKREF_WITH_LEVEL);\r
-       if (r) return r;\r
-       r = add_option(reg, (reg->options & ONIG_OPTION_IGNORECASE));\r
-       if (r) return r;\r
-       r = add_length(reg, br->nest_level);\r
-       if (r) return r;\r
-\r
-       goto add_bacref_mems;\r
-      }\r
-      else\r
-#endif\r
-      if (br->back_num == 1) {\r
-       n = br->back_static[0];\r
-       if (IS_IGNORECASE(reg->options)) {\r
-         r = add_opcode(reg, OP_BACKREFN_IC);\r
-         if (r) return r;\r
-         r = add_mem_num(reg, n);\r
-       }\r
-       else {\r
-         switch (n) {\r
-         case 1:  r = add_opcode(reg, OP_BACKREF1); break;\r
-         case 2:  r = add_opcode(reg, OP_BACKREF2); break;\r
-         default:\r
-           r = add_opcode(reg, OP_BACKREFN);\r
-           if (r) return r;\r
-           r = add_mem_num(reg, n);\r
-           break;\r
-         }\r
-       }\r
-      }\r
-      else {\r
-       int i;\r
-       int* p;\r
-\r
-        if (IS_IGNORECASE(reg->options)) {\r
-          r = add_opcode(reg, OP_BACKREF_MULTI_IC);\r
-        }\r
-        else {\r
-          r = add_opcode(reg, OP_BACKREF_MULTI);\r
-        }\r
-       if (r) return r;\r
-\r
-#ifdef USE_BACKREF_WITH_LEVEL\r
-      add_bacref_mems:\r
-#endif\r
-       r = add_length(reg, br->back_num);\r
-       if (r) return r;\r
-       p = BACKREFS_P(br);\r
-       for (i = br->back_num - 1; i >= 0; i--) {\r
-         r = add_mem_num(reg, p[i]);\r
-         if (r) return r;\r
-       }\r
-      }\r
-    }\r
-    break;\r
-\r
-#ifdef USE_SUBEXP_CALL\r
-  case NT_CALL:\r
-    r = compile_call(NCALL(node), reg);\r
-    break;\r
-#endif\r
-\r
-  case NT_QTFR:\r
-    r = compile_quantifier_node(NQTFR(node), reg);\r
-    break;\r
-\r
-  case NT_ENCLOSE:\r
-    r = compile_enclose_node(NENCLOSE(node), reg);\r
-    break;\r
-\r
-  case NT_ANCHOR:\r
-    r = compile_anchor_node(NANCHOR(node), reg);\r
-    break;\r
-\r
-  default:\r
-#ifdef ONIG_DEBUG\r
-    fprintf(stderr, "compile_tree: undefined node type %d\n", NTYPE(node));\r
-#endif\r
-    break;\r
-  }\r
-\r
-  return r;\r
-}\r
-\r
-#ifdef USE_NAMED_GROUP\r
-\r
-static int\r
-noname_disable_map(Node** plink, GroupNumRemap* map, int* counter)\r
-{\r
-  int r = 0;\r
-  Node* node = *plink;\r
-\r
-  switch (NTYPE(node)) {\r
-  case NT_LIST:\r
-  case NT_ALT:\r
-    do {\r
-      r = noname_disable_map(&(NCAR(node)), map, counter);\r
-    } while (r == 0 && IS_NOT_NULL(node = NCDR(node)));\r
-    break;\r
-\r
-  case NT_QTFR:\r
-    {\r
-      Node** ptarget = &(NQTFR(node)->target);\r
-      Node*  old = *ptarget;\r
-      r = noname_disable_map(ptarget, map, counter);\r
-      if (*ptarget != old && NTYPE(*ptarget) == NT_QTFR) {\r
-       onig_reduce_nested_quantifier(node, *ptarget);\r
-      }\r
-    }\r
-    break;\r
-\r
-  case NT_ENCLOSE:\r
-    {\r
-      EncloseNode* en = NENCLOSE(node);\r
-      if (en->type == ENCLOSE_MEMORY) {\r
-       if (IS_ENCLOSE_NAMED_GROUP(en)) {\r
-         (*counter)++;\r
-         map[en->regnum].new_val = *counter;\r
-         en->regnum = *counter;\r
-         r = noname_disable_map(&(en->target), map, counter);\r
-       }\r
-       else {\r
-         *plink = en->target;\r
-         en->target = NULL_NODE;\r
-         onig_node_free(node);\r
-         r = noname_disable_map(plink, map, counter);\r
-       }\r
-      }\r
-      else\r
-       r = noname_disable_map(&(en->target), map, counter);\r
-    }\r
-    break;\r
-\r
-  default:\r
-    break;\r
-  }\r
-\r
-  return r;\r
-}\r
-\r
-static int\r
-renumber_node_backref(Node* node, GroupNumRemap* map)\r
-{\r
-  int i, pos, n, old_num;\r
-  int *backs;\r
-  BRefNode* bn = NBREF(node);\r
-\r
-  if (! IS_BACKREF_NAME_REF(bn))\r
-    return ONIGERR_NUMBERED_BACKREF_OR_CALL_NOT_ALLOWED;\r
-\r
-  old_num = bn->back_num;\r
-  if (IS_NULL(bn->back_dynamic))\r
-    backs = bn->back_static;\r
-  else\r
-    backs = bn->back_dynamic;\r
-\r
-  for (i = 0, pos = 0; i < old_num; i++) {\r
-    n = map[backs[i]].new_val;\r
-    if (n > 0) {\r
-      backs[pos] = n;\r
-      pos++;\r
-    }\r
-  }\r
-\r
-  bn->back_num = pos;\r
-  return 0;\r
-}\r
-\r
-static int\r
-renumber_by_map(Node* node, GroupNumRemap* map)\r
-{\r
-  int r = 0;\r
-\r
-  switch (NTYPE(node)) {\r
-  case NT_LIST:\r
-  case NT_ALT:\r
-    do {\r
-      r = renumber_by_map(NCAR(node), map);\r
-    } while (r == 0 && IS_NOT_NULL(node = NCDR(node)));\r
-    break;\r
-  case NT_QTFR:\r
-    r = renumber_by_map(NQTFR(node)->target, map);\r
-    break;\r
-  case NT_ENCLOSE:\r
-    r = renumber_by_map(NENCLOSE(node)->target, map);\r
-    break;\r
-\r
-  case NT_BREF:\r
-    r = renumber_node_backref(node, map);\r
-    break;\r
-\r
-  default:\r
-    break;\r
-  }\r
-\r
-  return r;\r
-}\r
-\r
-static int\r
-numbered_ref_check(Node* node)\r
-{\r
-  int r = 0;\r
-\r
-  switch (NTYPE(node)) {\r
-  case NT_LIST:\r
-  case NT_ALT:\r
-    do {\r
-      r = numbered_ref_check(NCAR(node));\r
-    } while (r == 0 && IS_NOT_NULL(node = NCDR(node)));\r
-    break;\r
-  case NT_QTFR:\r
-    r = numbered_ref_check(NQTFR(node)->target);\r
-    break;\r
-  case NT_ENCLOSE:\r
-    r = numbered_ref_check(NENCLOSE(node)->target);\r
-    break;\r
-\r
-  case NT_BREF:\r
-    if (! IS_BACKREF_NAME_REF(NBREF(node)))\r
-      return ONIGERR_NUMBERED_BACKREF_OR_CALL_NOT_ALLOWED;\r
-    break;\r
-\r
-  default:\r
-    break;\r
-  }\r
-\r
-  return r;\r
-}\r
-\r
-static int\r
-disable_noname_group_capture(Node** root, regex_t* reg, ScanEnv* env)\r
-{\r
-  int r, i, pos, counter;\r
-  int Result;\r
-  BitStatusType loc;\r
-  GroupNumRemap* map;\r
-\r
-  map = (GroupNumRemap* )xmalloc(sizeof(GroupNumRemap) * (env->num_mem + 1));\r
-  CHECK_NULL_RETURN_MEMERR(map);\r
-  for (i = 1; i <= env->num_mem; i++) {\r
-    map[i].new_val = 0;\r
-  }\r
-  counter = 0;\r
-  r = noname_disable_map(root, map, &counter);\r
-  if (r != 0) return r;\r
-\r
-  r = renumber_by_map(*root, map);\r
-  if (r != 0) return r;\r
-\r
-  for (i = 1, pos = 1; i <= env->num_mem; i++) {\r
-    if (map[i].new_val > 0) {\r
-      SCANENV_MEM_NODES(env)[pos] = SCANENV_MEM_NODES(env)[i];\r
-      pos++;\r
-    }\r
-  }\r
-\r
-  loc = env->capture_history;\r
-  BIT_STATUS_CLEAR(env->capture_history);\r
-  for (i = 1; i <= ONIG_MAX_CAPTURE_HISTORY_GROUP; i++) {\r
-    if (BIT_STATUS_AT(loc, i)) {\r
-      BIT_STATUS_ON_AT_SIMPLE(env->capture_history, map[i].new_val);\r
-    }\r
-  }\r
-\r
-  env->num_mem = env->num_named;\r
-  reg->num_mem = env->num_named;\r
-\r
-  Result = onig_renumber_name_table(reg, map);\r
-  xfree(map);\r
-  return Result;\r
-}\r
-#endif /* USE_NAMED_GROUP */\r
-\r
-#ifdef USE_SUBEXP_CALL\r
-static int\r
-unset_addr_list_fix(UnsetAddrList* uslist, regex_t* reg)\r
-{\r
-  int i, offset;\r
-  EncloseNode* en;\r
-  AbsAddrType addr;\r
-\r
-  for (i = 0; i < uslist->num; i++) {\r
-    en = NENCLOSE(uslist->us[i].target);\r
-    if (! IS_ENCLOSE_ADDR_FIXED(en)) return ONIGERR_PARSER_BUG;\r
-    addr = en->call_addr;\r
-    offset = uslist->us[i].offset;\r
-\r
-    BBUF_WRITE(reg, offset, &addr, SIZE_ABSADDR);\r
-  }\r
-  return 0;\r
-}\r
-#endif\r
-\r
-#ifdef USE_MONOMANIAC_CHECK_CAPTURES_IN_ENDLESS_REPEAT\r
-static int\r
-quantifiers_memory_node_info(Node* node)\r
-{\r
-  int r = 0;\r
-\r
-  switch (NTYPE(node)) {\r
-  case NT_LIST:\r
-  case NT_ALT:\r
-    {\r
-      int v;\r
-      do {\r
-       v = quantifiers_memory_node_info(NCAR(node));\r
-       if (v > r) r = v;\r
-      } while (v >= 0 && IS_NOT_NULL(node = NCDR(node)));\r
-    }\r
-    break;\r
-\r
-#ifdef USE_SUBEXP_CALL\r
-  case NT_CALL:\r
-    if (IS_CALL_RECURSION(NCALL(node))) {\r
-      return NQ_TARGET_IS_EMPTY_REC; /* tiny version */\r
-    }\r
-    else\r
-      r = quantifiers_memory_node_info(NCALL(node)->target);\r
-    break;\r
-#endif\r
-\r
-  case NT_QTFR:\r
-    {\r
-      QtfrNode* qn = NQTFR(node);\r
-      if (qn->upper != 0) {\r
-       r = quantifiers_memory_node_info(qn->target);\r
-      }\r
-    }\r
-    break;\r
-\r
-  case NT_ENCLOSE:\r
-    {\r
-      EncloseNode* en = NENCLOSE(node);\r
-      switch (en->type) {\r
-      case ENCLOSE_MEMORY:\r
-       return NQ_TARGET_IS_EMPTY_MEM;\r
-       break;\r
-\r
-      case ENCLOSE_OPTION:\r
-      case ENCLOSE_STOP_BACKTRACK:\r
-       r = quantifiers_memory_node_info(en->target);\r
-       break;\r
-      default:\r
-       break;\r
-      }\r
-    }\r
-    break;\r
-\r
-  case NT_BREF:\r
-  case NT_STR:\r
-  case NT_CTYPE:\r
-  case NT_CCLASS:\r
-  case NT_CANY:\r
-  case NT_ANCHOR:\r
-  default:\r
-    break;\r
-  }\r
-\r
-  return r;\r
-}\r
-#endif /* USE_MONOMANIAC_CHECK_CAPTURES_IN_ENDLESS_REPEAT */\r
-\r
-static int\r
-get_min_match_length(Node* node, OnigDistance *min, ScanEnv* env)\r
-{\r
-  OnigDistance tmin;\r
-  int r = 0;\r
-\r
-  *min = 0;\r
-  switch (NTYPE(node)) {\r
-  case NT_BREF:\r
-    {\r
-      int i;\r
-      int* backs;\r
-      Node** nodes = SCANENV_MEM_NODES(env);\r
-      BRefNode* br = NBREF(node);\r
-      if (br->state & NST_RECURSION) break;\r
-\r
-      backs = BACKREFS_P(br);\r
-      if (backs[0] > env->num_mem)  return ONIGERR_INVALID_BACKREF;\r
-      r = get_min_match_length(nodes[backs[0]], min, env);\r
-      if (r != 0) break;\r
-      for (i = 1; i < br->back_num; i++) {\r
-       if (backs[i] > env->num_mem)  return ONIGERR_INVALID_BACKREF;\r
-       r = get_min_match_length(nodes[backs[i]], &tmin, env);\r
-       if (r != 0) break;\r
-       if (*min > tmin) *min = tmin;\r
-      }\r
-    }\r
-    break;\r
-\r
-#ifdef USE_SUBEXP_CALL\r
-  case NT_CALL:\r
-    if (IS_CALL_RECURSION(NCALL(node))) {\r
-      EncloseNode* en = NENCLOSE(NCALL(node)->target);\r
-      if (IS_ENCLOSE_MIN_FIXED(en))\r
-       *min = en->min_len;\r
-    }\r
-    else\r
-      r = get_min_match_length(NCALL(node)->target, min, env);\r
-    break;\r
-#endif\r
-\r
-  case NT_LIST:\r
-    do {\r
-      r = get_min_match_length(NCAR(node), &tmin, env);\r
-      if (r == 0) *min += tmin;\r
-    } while (r == 0 && IS_NOT_NULL(node = NCDR(node)));\r
-    break;\r
-\r
-  case NT_ALT:\r
-    {\r
-      Node *x, *y;\r
-      y = node;\r
-      do {\r
-       x = NCAR(y);\r
-       r = get_min_match_length(x, &tmin, env);\r
-       if (r != 0) break;\r
-       if (y == node) *min = tmin;\r
-       else if (*min > tmin) *min = tmin;\r
-      } while (r == 0 && IS_NOT_NULL(y = NCDR(y)));\r
-    }\r
-    break;\r
-\r
-  case NT_STR:\r
-    {\r
-      StrNode* sn = NSTR(node);\r
-      *min = (OnigDistance)(sn->end - sn->s);\r
-    }\r
-    break;\r
-\r
-  case NT_CTYPE:\r
-    *min = 1;\r
-    break;\r
-\r
-  case NT_CCLASS:\r
-  case NT_CANY:\r
-    *min = 1;\r
-    break;\r
-\r
-  case NT_QTFR:\r
-    {\r
-      QtfrNode* qn = NQTFR(node);\r
-\r
-      if (qn->lower > 0) {\r
-       r = get_min_match_length(qn->target, min, env);\r
-       if (r == 0)\r
-         *min = distance_multiply(*min, qn->lower);\r
-      }\r
-    }\r
-    break;\r
-\r
-  case NT_ENCLOSE:\r
-    {\r
-      EncloseNode* en = NENCLOSE(node);\r
-      switch (en->type) {\r
-      case ENCLOSE_MEMORY:\r
-#ifdef USE_SUBEXP_CALL\r
-       if (IS_ENCLOSE_MIN_FIXED(en))\r
-         *min = en->min_len;\r
-       else {\r
-         r = get_min_match_length(en->target, min, env);\r
-         if (r == 0) {\r
-           en->min_len = *min;\r
-           SET_ENCLOSE_STATUS(node, NST_MIN_FIXED);\r
-         }\r
-       }\r
-       break;\r
-#endif\r
-      case ENCLOSE_OPTION:\r
-      case ENCLOSE_STOP_BACKTRACK:\r
-       r = get_min_match_length(en->target, min, env);\r
-       break;\r
-      }\r
-    }\r
-    break;\r
-\r
-  case NT_ANCHOR:\r
-  default:\r
-    break;\r
-  }\r
-\r
-  return r;\r
-}\r
-\r
-static int\r
-get_max_match_length(Node* node, OnigDistance *max, ScanEnv* env)\r
-{\r
-  OnigDistance tmax;\r
-  int r = 0;\r
-\r
-  *max = 0;\r
-  switch (NTYPE(node)) {\r
-  case NT_LIST:\r
-    do {\r
-      r = get_max_match_length(NCAR(node), &tmax, env);\r
-      if (r == 0)\r
-       *max = distance_add(*max, tmax);\r
-    } while (r == 0 && IS_NOT_NULL(node = NCDR(node)));\r
-    break;\r
-\r
-  case NT_ALT:\r
-    do {\r
-      r = get_max_match_length(NCAR(node), &tmax, env);\r
-      if (r == 0 && *max < tmax) *max = tmax;\r
-    } while (r == 0 && IS_NOT_NULL(node = NCDR(node)));\r
-    break;\r
-\r
-  case NT_STR:\r
-    {\r
-      StrNode* sn = NSTR(node);\r
-      *max = (OnigDistance)(sn->end - sn->s);\r
-    }\r
-    break;\r
-\r
-  case NT_CTYPE:\r
-    *max = ONIGENC_MBC_MAXLEN_DIST(env->enc);\r
-    break;\r
-\r
-  case NT_CCLASS:\r
-  case NT_CANY:\r
-    *max = ONIGENC_MBC_MAXLEN_DIST(env->enc);\r
-    break;\r
-\r
-  case NT_BREF:\r
-    {\r
-      int i;\r
-      int* backs;\r
-      Node** nodes = SCANENV_MEM_NODES(env);\r
-      BRefNode* br = NBREF(node);\r
-      if (br->state & NST_RECURSION) {\r
-       *max = ONIG_INFINITE_DISTANCE;\r
-       break;\r
-      }\r
-      backs = BACKREFS_P(br);\r
-      for (i = 0; i < br->back_num; i++) {\r
-       if (backs[i] > env->num_mem)  return ONIGERR_INVALID_BACKREF;\r
-       r = get_max_match_length(nodes[backs[i]], &tmax, env);\r
-       if (r != 0) break;\r
-       if (*max < tmax) *max = tmax;\r
-      }\r
-    }\r
-    break;\r
-\r
-#ifdef USE_SUBEXP_CALL\r
-  case NT_CALL:\r
-    if (! IS_CALL_RECURSION(NCALL(node)))\r
-      r = get_max_match_length(NCALL(node)->target, max, env);\r
-    else\r
-      *max = ONIG_INFINITE_DISTANCE;\r
-    break;\r
-#endif\r
-\r
-  case NT_QTFR:\r
-    {\r
-      QtfrNode* qn = NQTFR(node);\r
-\r
-      if (qn->upper != 0) {\r
-       r = get_max_match_length(qn->target, max, env);\r
-       if (r == 0 && *max != 0) {\r
-         if (! IS_REPEAT_INFINITE(qn->upper))\r
-           *max = distance_multiply(*max, qn->upper);\r
-         else\r
-           *max = ONIG_INFINITE_DISTANCE;\r
-       }\r
-      }\r
-    }\r
-    break;\r
-\r
-  case NT_ENCLOSE:\r
-    {\r
-      EncloseNode* en = NENCLOSE(node);\r
-      switch (en->type) {\r
-      case ENCLOSE_MEMORY:\r
-#ifdef USE_SUBEXP_CALL\r
-       if (IS_ENCLOSE_MAX_FIXED(en))\r
-         *max = en->max_len;\r
-       else {\r
-         r = get_max_match_length(en->target, max, env);\r
-         if (r == 0) {\r
-           en->max_len = *max;\r
-           SET_ENCLOSE_STATUS(node, NST_MAX_FIXED);\r
-         }\r
-       }\r
-       break;\r
-#endif\r
-      case ENCLOSE_OPTION:\r
-      case ENCLOSE_STOP_BACKTRACK:\r
-       r = get_max_match_length(en->target, max, env);\r
-       break;\r
-      }\r
-    }\r
-    break;\r
-\r
-  case NT_ANCHOR:\r
-  default:\r
-    break;\r
-  }\r
-\r
-  return r;\r
-}\r
-\r
-#define GET_CHAR_LEN_VARLEN           -1\r
-#define GET_CHAR_LEN_TOP_ALT_VARLEN   -2\r
-\r
-/* fixed size pattern node only */\r
-static int\r
-get_char_length_tree1(Node* node, regex_t* reg, int* len, int level)\r
-{\r
-  int tlen;\r
-  int r = 0;\r
-\r
-  level++;\r
-  *len = 0;\r
-  switch (NTYPE(node)) {\r
-  case NT_LIST:\r
-    do {\r
-      r = get_char_length_tree1(NCAR(node), reg, &tlen, level);\r
-      if (r == 0)\r
-       *len = distance_add(*len, tlen);\r
-    } while (r == 0 && IS_NOT_NULL(node = NCDR(node)));\r
-    break;\r
-\r
-  case NT_ALT:\r
-    {\r
-      int tlen2;\r
-      int varlen = 0;\r
-\r
-      r = get_char_length_tree1(NCAR(node), reg, &tlen, level);\r
-      while (r == 0 && IS_NOT_NULL(node = NCDR(node))) {\r
-       r = get_char_length_tree1(NCAR(node), reg, &tlen2, level);\r
-       if (r == 0) {\r
-         if (tlen != tlen2)\r
-           varlen = 1;\r
-       }\r
-      }\r
-      if (r == 0) {\r
-       if (varlen != 0) {\r
-         if (level == 1)\r
-           r = GET_CHAR_LEN_TOP_ALT_VARLEN;\r
-         else\r
-           r = GET_CHAR_LEN_VARLEN;\r
-       }\r
-       else\r
-         *len = tlen;\r
-      }\r
-    }\r
-    break;\r
-\r
-  case NT_STR:\r
-    {\r
-      StrNode* sn = NSTR(node);\r
-      UChar *s = sn->s;\r
-      while (s < sn->end) {\r
-       s += enclen(reg->enc, s);\r
-       (*len)++;\r
-      }\r
-    }\r
-    break;\r
-\r
-  case NT_QTFR:\r
-    {\r
-      QtfrNode* qn = NQTFR(node);\r
-      if (qn->lower == qn->upper) {\r
-       r = get_char_length_tree1(qn->target, reg, &tlen, level);\r
-       if (r == 0)\r
-         *len = distance_multiply(tlen, qn->lower);\r
-      }\r
-      else\r
-       r = GET_CHAR_LEN_VARLEN;\r
-    }\r
-    break;\r
-\r
-#ifdef USE_SUBEXP_CALL\r
-  case NT_CALL:\r
-    if (! IS_CALL_RECURSION(NCALL(node)))\r
-      r = get_char_length_tree1(NCALL(node)->target, reg, len, level);\r
-    else\r
-      r = GET_CHAR_LEN_VARLEN;\r
-    break;\r
-#endif\r
-\r
-  case NT_CTYPE:\r
-    *len = 1;\r
-    break;\r
-\r
-  case NT_CCLASS:\r
-  case NT_CANY:\r
-    *len = 1;\r
-    break;\r
-\r
-  case NT_ENCLOSE:\r
-    {\r
-      EncloseNode* en = NENCLOSE(node);\r
-      switch (en->type) {\r
-      case ENCLOSE_MEMORY:\r
-#ifdef USE_SUBEXP_CALL\r
-       if (IS_ENCLOSE_CLEN_FIXED(en))\r
-         *len = en->char_len;\r
-       else {\r
-         r = get_char_length_tree1(en->target, reg, len, level);\r
-         if (r == 0) {\r
-           en->char_len = *len;\r
-           SET_ENCLOSE_STATUS(node, NST_CLEN_FIXED);\r
-         }\r
-       }\r
-       break;\r
-#endif\r
-      case ENCLOSE_OPTION:\r
-      case ENCLOSE_STOP_BACKTRACK:\r
-       r = get_char_length_tree1(en->target, reg, len, level);\r
-       break;\r
-      default:\r
-       break;\r
-      }\r
-    }\r
-    break;\r
-\r
-  case NT_ANCHOR:\r
-    break;\r
-\r
-  default:\r
-    r = GET_CHAR_LEN_VARLEN;\r
-    break;\r
-  }\r
-\r
-  return r;\r
-}\r
-\r
-static int\r
-get_char_length_tree(Node* node, regex_t* reg, int* len)\r
-{\r
-  return get_char_length_tree1(node, reg, len, 0);\r
-}\r
-\r
-/* x is not included y ==>  1 : 0 */\r
-static int\r
-is_not_included(Node* x, Node* y, regex_t* reg)\r
-{\r
-  int i, len;\r
-  OnigCodePoint code;\r
-  UChar *p;\r
-  int ytype;\r
-\r
- retry:\r
-  ytype = NTYPE(y);\r
-  switch (NTYPE(x)) {\r
-  case NT_CTYPE:\r
-    {\r
-      switch (ytype) {\r
-      case NT_CTYPE:\r
-       if (NCTYPE(y)->ctype == NCTYPE(x)->ctype &&\r
-           NCTYPE(y)->not   != NCTYPE(x)->not)\r
-         return 1;\r
-       else\r
-         return 0;\r
-       break;\r
-\r
-      case NT_CCLASS:\r
-      swap:\r
-       {\r
-         Node* tmp;\r
-         tmp = x; x = y; y = tmp;\r
-         goto retry;\r
-       }\r
-       break;\r
-\r
-      case NT_STR:\r
-       goto swap;\r
-       break;\r
-\r
-      default:\r
-       break;\r
-      }\r
-    }\r
-    break;\r
-\r
-  case NT_CCLASS:\r
-    {\r
-      CClassNode* xc = NCCLASS(x);\r
-      switch (ytype) {\r
-      case NT_CTYPE:\r
-       switch (NCTYPE(y)->ctype) {\r
-       case ONIGENC_CTYPE_WORD:\r
-         if (NCTYPE(y)->not == 0) {\r
-           if (IS_NULL(xc->mbuf) && !IS_NCCLASS_NOT(xc)) {\r
-             for (i = 0; i < SINGLE_BYTE_SIZE; i++) {\r
-               if (BITSET_AT(xc->bs, i)) {\r
-                 if (IS_CODE_SB_WORD(reg->enc, i)) return 0;\r
-               }\r
-             }\r
-             return 1;\r
-           }\r
-           return 0;\r
-         }\r
-         else {\r
-           for (i = 0; i < SINGLE_BYTE_SIZE; i++) {\r
-             if (! IS_CODE_SB_WORD(reg->enc, i)) {\r
-               if (!IS_NCCLASS_NOT(xc)) {\r
-                 if (BITSET_AT(xc->bs, i))\r
-                   return 0;\r
-               }\r
-               else {\r
-                 if (! BITSET_AT(xc->bs, i))\r
-                   return 0;\r
-               }\r
-             }\r
-           }\r
-           return 1;\r
-         }\r
-         break;\r
-\r
-       default:\r
-         break;\r
-       }\r
-       break;\r
-\r
-      case NT_CCLASS:\r
-       {\r
-         int v;\r
-         CClassNode* yc = NCCLASS(y);\r
-\r
-         for (i = 0; i < SINGLE_BYTE_SIZE; i++) {\r
-           v = BITSET_AT(xc->bs, i);\r
-           if ((v != 0 && !IS_NCCLASS_NOT(xc)) ||\r
-                (v == 0 && IS_NCCLASS_NOT(xc))) {\r
-             v = BITSET_AT(yc->bs, i);\r
-             if ((v != 0 && !IS_NCCLASS_NOT(yc)) ||\r
-                  (v == 0 && IS_NCCLASS_NOT(yc)))\r
-               return 0;\r
-           }\r
-         }\r
-         if ((IS_NULL(xc->mbuf) && !IS_NCCLASS_NOT(xc)) ||\r
-             (IS_NULL(yc->mbuf) && !IS_NCCLASS_NOT(yc)))\r
-           return 1;\r
-         return 0;\r
-       }\r
-       break;\r
-\r
-      case NT_STR:\r
-       goto swap;\r
-       break;\r
-\r
-      default:\r
-       break;\r
-      }\r
-    }\r
-    break;\r
-\r
-  case NT_STR:\r
-    {\r
-      StrNode* xs = NSTR(x);\r
-      if (NSTRING_LEN(x) == 0)\r
-       break;\r
-\r
-      //c = *(xs->s);\r
-      switch (ytype) {\r
-      case NT_CTYPE:\r
-        switch (NCTYPE(y)->ctype) {\r
-        case ONIGENC_CTYPE_WORD:\r
-          if (ONIGENC_IS_MBC_WORD(reg->enc, xs->s, xs->end))\r
-            return NCTYPE(y)->not;\r
-          else\r
-            return !(NCTYPE(y)->not);\r
-          break;\r
-        default:\r
-          break;\r
-        }\r
-        break;\r
-\r
-      case NT_CCLASS:\r
-        {\r
-          CClassNode* cc = NCCLASS(y);\r
-\r
-          code = ONIGENC_MBC_TO_CODE(reg->enc, xs->s,\r
-                                     xs->s + ONIGENC_MBC_MAXLEN(reg->enc));\r
-          return (onig_is_code_in_cc(reg->enc, code, cc) != 0 ? 0 : 1);\r
-        }\r
-        break;\r
-\r
-      case NT_STR:\r
-        {\r
-          UChar *q;\r
-          StrNode* ys = NSTR(y);\r
-          len = NSTRING_LEN(x);\r
-          if (len > NSTRING_LEN(y)) len = NSTRING_LEN(y);\r
-          if (NSTRING_IS_AMBIG(x) || NSTRING_IS_AMBIG(y)) {\r
-            /* tiny version */\r
-            return 0;\r
-          }\r
-          else {\r
-            for (i = 0, p = ys->s, q = xs->s; i < len; i++, p++, q++) {\r
-              if (*p != *q) return 1;\r
-            }\r
-          }\r
-        }\r
-        break;\r
-       \r
-      default:\r
-        break;\r
-      }\r
-    }\r
-    break;\r
-\r
-  default:\r
-    break;\r
-  }\r
-\r
-  return 0;\r
-}\r
-\r
-static Node*\r
-get_head_value_node(Node* node, int exact, regex_t* reg)\r
-{\r
-  Node* n = NULL_NODE;\r
-\r
-  switch (NTYPE(node)) {\r
-  case NT_BREF:\r
-  case NT_ALT:\r
-  case NT_CANY:\r
-#ifdef USE_SUBEXP_CALL\r
-  case NT_CALL:\r
-#endif\r
-    break;\r
-\r
-  case NT_CTYPE:\r
-  case NT_CCLASS:\r
-    if (exact == 0) {\r
-      n = node;\r
-    }\r
-    break;\r
-\r
-  case NT_LIST:\r
-    n = get_head_value_node(NCAR(node), exact, reg);\r
-    break;\r
-\r
-  case NT_STR:\r
-    {\r
-      StrNode* sn = NSTR(node);\r
-\r
-      if (sn->end <= sn->s)\r
-       break;\r
-\r
-      if (exact != 0 &&\r
-         !NSTRING_IS_RAW(node) && IS_IGNORECASE(reg->options)) {\r
-      }\r
-      else {\r
-       n = node;\r
-      }\r
-    }\r
-    break;\r
-\r
-  case NT_QTFR:\r
-    {\r
-      QtfrNode* qn = NQTFR(node);\r
-      if (qn->lower > 0) {\r
-       if (IS_NOT_NULL(qn->head_exact))\r
-         n = qn->head_exact;\r
-       else\r
-         n = get_head_value_node(qn->target, exact, reg);\r
-      }\r
-    }\r
-    break;\r
-\r
-  case NT_ENCLOSE:\r
-    {\r
-      EncloseNode* en = NENCLOSE(node);\r
-      switch (en->type) {\r
-      case ENCLOSE_OPTION:\r
-       {\r
-         OnigOptionType options = reg->options;\r
-\r
-         reg->options = NENCLOSE(node)->option;\r
-         n = get_head_value_node(NENCLOSE(node)->target, exact, reg);\r
-         reg->options = options;\r
-       }\r
-       break;\r
-\r
-      case ENCLOSE_MEMORY:\r
-      case ENCLOSE_STOP_BACKTRACK:\r
-       n = get_head_value_node(en->target, exact, reg);\r
-       break;\r
-      }\r
-    }\r
-    break;\r
-\r
-  case NT_ANCHOR:\r
-    if (NANCHOR(node)->type == ANCHOR_PREC_READ)\r
-      n = get_head_value_node(NANCHOR(node)->target, exact, reg);\r
-    break;\r
-\r
-  default:\r
-    break;\r
-  }\r
-\r
-  return n;\r
-}\r
-\r
-static int\r
-check_type_tree(Node* node, int type_mask, int enclose_mask, int anchor_mask)\r
-{\r
-  int type, r = 0;\r
-\r
-  type = NTYPE(node);\r
-  if ((NTYPE2BIT(type) & type_mask) == 0)\r
-    return 1;\r
-\r
-  switch (type) {\r
-  case NT_LIST:\r
-  case NT_ALT:\r
-    do {\r
-      r = check_type_tree(NCAR(node), type_mask, enclose_mask,\r
-                         anchor_mask);\r
-    } while (r == 0 && IS_NOT_NULL(node = NCDR(node)));\r
-    break;\r
-\r
-  case NT_QTFR:\r
-    r = check_type_tree(NQTFR(node)->target, type_mask, enclose_mask,\r
-                       anchor_mask);\r
-    break;\r
-\r
-  case NT_ENCLOSE:\r
-    {\r
-      EncloseNode* en = NENCLOSE(node);\r
-      if ((en->type & enclose_mask) == 0)\r
-       return 1;\r
-\r
-      r = check_type_tree(en->target, type_mask, enclose_mask, anchor_mask);\r
-    }\r
-    break;\r
-\r
-  case NT_ANCHOR:\r
-    type = NANCHOR(node)->type;\r
-    if ((type & anchor_mask) == 0)\r
-      return 1;\r
-\r
-    if (NANCHOR(node)->target)\r
-      r = check_type_tree(NANCHOR(node)->target,\r
-                         type_mask, enclose_mask, anchor_mask);\r
-    break;\r
-\r
-  default:\r
-    break;\r
-  }\r
-  return r;\r
-}\r
-\r
-#ifdef USE_SUBEXP_CALL\r
-\r
-#define RECURSION_EXIST       1\r
-#define RECURSION_INFINITE    2\r
-\r
-static int\r
-subexp_inf_recursive_check(Node* node, ScanEnv* env, int head)\r
-{\r
-  int type;\r
-  int r = 0;\r
-\r
-  type = NTYPE(node);\r
-  switch (type) {\r
-  case NT_LIST:\r
-    {\r
-      Node *x;\r
-      OnigDistance min;\r
-      int ret;\r
-\r
-      x = node;\r
-      do {\r
-       ret = subexp_inf_recursive_check(NCAR(x), env, head);\r
-       if (ret < 0 || ret == RECURSION_INFINITE) return ret;\r
-       r |= ret;\r
-       if (head) {\r
-         ret = get_min_match_length(NCAR(x), &min, env);\r
-         if (ret != 0) return ret;\r
-         if (min != 0) head = 0;\r
-       }\r
-      } while (IS_NOT_NULL(x = NCDR(x)));\r
-    }\r
-    break;\r
-\r
-  case NT_ALT:\r
-    {\r
-      int ret;\r
-      r = RECURSION_EXIST;\r
-      do {\r
-       ret = subexp_inf_recursive_check(NCAR(node), env, head);\r
-       if (ret < 0 || ret == RECURSION_INFINITE) return ret;\r
-       r &= ret;\r
-      } while (IS_NOT_NULL(node = NCDR(node)));\r
-    }\r
-    break;\r
-\r
-  case NT_QTFR:\r
-    r = subexp_inf_recursive_check(NQTFR(node)->target, env, head);\r
-    if (r == RECURSION_EXIST) {\r
-      if (NQTFR(node)->lower == 0) r = 0;\r
-    }\r
-    break;\r
-\r
-  case NT_ANCHOR:\r
-    {\r
-      AnchorNode* an = NANCHOR(node);\r
-      switch (an->type) {\r
-      case ANCHOR_PREC_READ:\r
-      case ANCHOR_PREC_READ_NOT:\r
-      case ANCHOR_LOOK_BEHIND:\r
-      case ANCHOR_LOOK_BEHIND_NOT:\r
-       r = subexp_inf_recursive_check(an->target, env, head);\r
-       break;\r
-      }\r
-    }\r
-    break;\r
-\r
-  case NT_CALL:\r
-    r = subexp_inf_recursive_check(NCALL(node)->target, env, head);\r
-    break;\r
-\r
-  case NT_ENCLOSE:\r
-    if (IS_ENCLOSE_MARK2(NENCLOSE(node)))\r
-      return 0;\r
-    else if (IS_ENCLOSE_MARK1(NENCLOSE(node)))\r
-      return (head == 0 ? RECURSION_EXIST : RECURSION_INFINITE);\r
-    else {\r
-      SET_ENCLOSE_STATUS(node, NST_MARK2);\r
-      r = subexp_inf_recursive_check(NENCLOSE(node)->target, env, head);\r
-      CLEAR_ENCLOSE_STATUS(node, NST_MARK2);\r
-    }\r
-    break;\r
-\r
-  default:\r
-    break;\r
-  }\r
-\r
-  return r;\r
-}\r
-\r
-static int\r
-subexp_inf_recursive_check_trav(Node* node, ScanEnv* env)\r
-{\r
-  int type;\r
-  int r = 0;\r
-\r
-  type = NTYPE(node);\r
-  switch (type) {\r
-  case NT_LIST:\r
-  case NT_ALT:\r
-    do {\r
-      r = subexp_inf_recursive_check_trav(NCAR(node), env);\r
-    } while (r == 0 && IS_NOT_NULL(node = NCDR(node)));\r
-    break;\r
-\r
-  case NT_QTFR:\r
-    r = subexp_inf_recursive_check_trav(NQTFR(node)->target, env);\r
-    break;\r
-\r
-  case NT_ANCHOR:\r
-    {\r
-      AnchorNode* an = NANCHOR(node);\r
-      switch (an->type) {\r
-      case ANCHOR_PREC_READ:\r
-      case ANCHOR_PREC_READ_NOT:\r
-      case ANCHOR_LOOK_BEHIND:\r
-      case ANCHOR_LOOK_BEHIND_NOT:\r
-       r = subexp_inf_recursive_check_trav(an->target, env);\r
-       break;\r
-      }\r
-    }\r
-    break;\r
-\r
-  case NT_ENCLOSE:\r
-    {\r
-      EncloseNode* en = NENCLOSE(node);\r
-\r
-      if (IS_ENCLOSE_RECURSION(en)) {\r
-       SET_ENCLOSE_STATUS(node, NST_MARK1);\r
-       r = subexp_inf_recursive_check(en->target, env, 1);\r
-       if (r > 0) return ONIGERR_NEVER_ENDING_RECURSION;\r
-       CLEAR_ENCLOSE_STATUS(node, NST_MARK1);\r
-      }\r
-      r = subexp_inf_recursive_check_trav(en->target, env);\r
-    }\r
-\r
-    break;\r
-\r
-  default:\r
-    break;\r
-  }\r
-\r
-  return r;\r
-}\r
-\r
-static int\r
-subexp_recursive_check(Node* node)\r
-{\r
-  int r = 0;\r
-\r
-  switch (NTYPE(node)) {\r
-  case NT_LIST:\r
-  case NT_ALT:\r
-    do {\r
-      r |= subexp_recursive_check(NCAR(node));\r
-    } while (IS_NOT_NULL(node = NCDR(node)));\r
-    break;\r
-\r
-  case NT_QTFR:\r
-    r = subexp_recursive_check(NQTFR(node)->target);\r
-    break;\r
-\r
-  case NT_ANCHOR:\r
-    {\r
-      AnchorNode* an = NANCHOR(node);\r
-      switch (an->type) {\r
-      case ANCHOR_PREC_READ:\r
-      case ANCHOR_PREC_READ_NOT:\r
-      case ANCHOR_LOOK_BEHIND:\r
-      case ANCHOR_LOOK_BEHIND_NOT:\r
-       r = subexp_recursive_check(an->target);\r
-       break;\r
-      }\r
-    }\r
-    break;\r
-\r
-  case NT_CALL:\r
-    r = subexp_recursive_check(NCALL(node)->target);\r
-    if (r != 0) SET_CALL_RECURSION(node);\r
-    break;\r
-\r
-  case NT_ENCLOSE:\r
-    if (IS_ENCLOSE_MARK2(NENCLOSE(node)))\r
-      return 0;\r
-    else if (IS_ENCLOSE_MARK1(NENCLOSE(node)))\r
-      return 1; /* recursion */\r
-    else {\r
-      SET_ENCLOSE_STATUS(node, NST_MARK2);\r
-      r = subexp_recursive_check(NENCLOSE(node)->target);\r
-      CLEAR_ENCLOSE_STATUS(node, NST_MARK2);\r
-    }\r
-    break;\r
-\r
-  default:\r
-    break;\r
-  }\r
-\r
-  return r;\r
-}\r
-\r
-\r
-static int\r
-subexp_recursive_check_trav(Node* node, ScanEnv* env)\r
-{\r
-#define FOUND_CALLED_NODE    1\r
-\r
-  int type;\r
-  int r = 0;\r
-\r
-  type = NTYPE(node);\r
-  switch (type) {\r
-  case NT_LIST:\r
-  case NT_ALT:\r
-    {\r
-      int ret;\r
-      do {\r
-       ret = subexp_recursive_check_trav(NCAR(node), env);\r
-       if (ret == FOUND_CALLED_NODE) r = FOUND_CALLED_NODE;\r
-       else if (ret < 0) return ret;\r
-      } while (IS_NOT_NULL(node = NCDR(node)));\r
-    }\r
-    break;\r
-\r
-  case NT_QTFR:\r
-    r = subexp_recursive_check_trav(NQTFR(node)->target, env);\r
-    if (NQTFR(node)->upper == 0) {\r
-      if (r == FOUND_CALLED_NODE)\r
-       NQTFR(node)->is_refered = 1;\r
-    }\r
-    break;\r
-\r
-  case NT_ANCHOR:\r
-    {\r
-      AnchorNode* an = NANCHOR(node);\r
-      switch (an->type) {\r
-      case ANCHOR_PREC_READ:\r
-      case ANCHOR_PREC_READ_NOT:\r
-      case ANCHOR_LOOK_BEHIND:\r
-      case ANCHOR_LOOK_BEHIND_NOT:\r
-       r = subexp_recursive_check_trav(an->target, env);\r
-       break;\r
-      }\r
-    }\r
-    break;\r
-\r
-  case NT_ENCLOSE:\r
-    {\r
-      EncloseNode* en = NENCLOSE(node);\r
-\r
-      if (! IS_ENCLOSE_RECURSION(en)) {\r
-       if (IS_ENCLOSE_CALLED(en)) {\r
-         SET_ENCLOSE_STATUS(node, NST_MARK1);\r
-         r = subexp_recursive_check(en->target);\r
-         if (r != 0) SET_ENCLOSE_STATUS(node, NST_RECURSION);\r
-         CLEAR_ENCLOSE_STATUS(node, NST_MARK1);\r
-       }\r
-      }\r
-      r = subexp_recursive_check_trav(en->target, env);\r
-      if (IS_ENCLOSE_CALLED(en))\r
-       r |= FOUND_CALLED_NODE;\r
-    }\r
-    break;\r
-\r
-  default:\r
-    break;\r
-  }\r
-\r
-  return r;\r
-}\r
-\r
-static int\r
-setup_subexp_call(Node* node, ScanEnv* env)\r
-{\r
-  int type;\r
-  int r = 0;\r
-\r
-  type = NTYPE(node);\r
-  switch (type) {\r
-  case NT_LIST:\r
-    do {\r
-      r = setup_subexp_call(NCAR(node), env);\r
-    } while (r == 0 && IS_NOT_NULL(node = NCDR(node)));\r
-    break;\r
-\r
-  case NT_ALT:\r
-    do {\r
-      r = setup_subexp_call(NCAR(node), env);\r
-    } while (r == 0 && IS_NOT_NULL(node = NCDR(node)));\r
-    break;\r
-\r
-  case NT_QTFR:\r
-    r = setup_subexp_call(NQTFR(node)->target, env);\r
-    break;\r
-  case NT_ENCLOSE:\r
-    r = setup_subexp_call(NENCLOSE(node)->target, env);\r
-    break;\r
-\r
-  case NT_CALL:\r
-    {\r
-      CallNode* cn = NCALL(node);\r
-      Node** nodes = SCANENV_MEM_NODES(env);\r
-\r
-      if (cn->group_num != 0) {\r
-       int gnum = cn->group_num;\r
-\r
-#ifdef USE_NAMED_GROUP\r
-       if (env->num_named > 0 &&\r
-           IS_SYNTAX_BV(env->syntax, ONIG_SYN_CAPTURE_ONLY_NAMED_GROUP) &&\r
-           !ONIG_IS_OPTION_ON(env->option, ONIG_OPTION_CAPTURE_GROUP)) {\r
-         return ONIGERR_NUMBERED_BACKREF_OR_CALL_NOT_ALLOWED;\r
-       }\r
-#endif\r
-       if (gnum > env->num_mem) {\r
-         onig_scan_env_set_error_string(env,\r
-                ONIGERR_UNDEFINED_GROUP_REFERENCE, cn->name, cn->name_end);\r
-         return ONIGERR_UNDEFINED_GROUP_REFERENCE;\r
-       }\r
-\r
-#ifdef USE_NAMED_GROUP\r
-      set_call_attr:\r
-#endif\r
-       cn->target = nodes[cn->group_num];\r
-       if (IS_NULL(cn->target)) {\r
-         onig_scan_env_set_error_string(env,\r
-                ONIGERR_UNDEFINED_NAME_REFERENCE, cn->name, cn->name_end);\r
-         return ONIGERR_UNDEFINED_NAME_REFERENCE;\r
-       }\r
-       SET_ENCLOSE_STATUS(cn->target, NST_CALLED);\r
-       BIT_STATUS_ON_AT(env->bt_mem_start, cn->group_num);\r
-       cn->unset_addr_list = env->unset_addr_list;\r
-      }\r
-#ifdef USE_NAMED_GROUP\r
-      else {\r
-       int *refs;\r
-\r
-       int n = onig_name_to_group_numbers(env->reg, cn->name, cn->name_end,\r
-                                          &refs);\r
-       if (n <= 0) {\r
-         onig_scan_env_set_error_string(env,\r
-                ONIGERR_UNDEFINED_NAME_REFERENCE, cn->name, cn->name_end);\r
-         return ONIGERR_UNDEFINED_NAME_REFERENCE;\r
-       }\r
-       else if (n > 1) {\r
-         onig_scan_env_set_error_string(env,\r
-           ONIGERR_MULTIPLEX_DEFINITION_NAME_CALL, cn->name, cn->name_end);\r
-         return ONIGERR_MULTIPLEX_DEFINITION_NAME_CALL;\r
-       }\r
-       else {\r
-         cn->group_num = refs[0];\r
-         goto set_call_attr;\r
-       }\r
-      }\r
-#endif\r
-    }\r
-    break;\r
-\r
-  case NT_ANCHOR:\r
-    {\r
-      AnchorNode* an = NANCHOR(node);\r
-\r
-      switch (an->type) {\r
-      case ANCHOR_PREC_READ:\r
-      case ANCHOR_PREC_READ_NOT:\r
-      case ANCHOR_LOOK_BEHIND:\r
-      case ANCHOR_LOOK_BEHIND_NOT:\r
-       r = setup_subexp_call(an->target, env);\r
-       break;\r
-      }\r
-    }\r
-    break;\r
-\r
-  default:\r
-    break;\r
-  }\r
-\r
-  return r;\r
-}\r
-#endif\r
-\r
-/* divide different length alternatives in look-behind.\r
-  (?<=A|B) ==> (?<=A)|(?<=B)\r
-  (?<!A|B) ==> (?<!A)(?<!B)\r
-*/\r
-static int\r
-divide_look_behind_alternatives(Node* node)\r
-{\r
-  Node *head, *np, *insert_node;\r
-  AnchorNode* an = NANCHOR(node);\r
-  int anc_type = an->type;\r
-\r
-  head = an->target;\r
-  np = NCAR(head);\r
-  swap_node(node, head);\r
-  NCAR(node) = head;\r
-  NANCHOR(head)->target = np;\r
-\r
-  np = node;\r
-  while ((np = NCDR(np)) != NULL_NODE) {\r
-    insert_node = onig_node_new_anchor(anc_type);\r
-    CHECK_NULL_RETURN_MEMERR(insert_node);\r
-    NANCHOR(insert_node)->target = NCAR(np);\r
-    NCAR(np) = insert_node;\r
-  }\r
-\r
-  if (anc_type == ANCHOR_LOOK_BEHIND_NOT) {\r
-    np = node;\r
-    do {\r
-      SET_NTYPE(np, NT_LIST);  /* alt -> list */\r
-    } while ((np = NCDR(np)) != NULL_NODE);\r
-  }\r
-  return 0;\r
-}\r
-\r
-static int\r
-setup_look_behind(Node* node, regex_t* reg, ScanEnv* env)\r
-{\r
-  int r, len;\r
-  AnchorNode* an = NANCHOR(node);\r
-\r
-  r = get_char_length_tree(an->target, reg, &len);\r
-  if (r == 0)\r
-    an->char_len = len;\r
-  else if (r == GET_CHAR_LEN_VARLEN)\r
-    r = ONIGERR_INVALID_LOOK_BEHIND_PATTERN;\r
-  else if (r == GET_CHAR_LEN_TOP_ALT_VARLEN) {\r
-    if (IS_SYNTAX_BV(env->syntax, ONIG_SYN_DIFFERENT_LEN_ALT_LOOK_BEHIND))\r
-      r = divide_look_behind_alternatives(node);\r
-    else\r
-      r = ONIGERR_INVALID_LOOK_BEHIND_PATTERN;\r
-  }\r
-\r
-  return r;\r
-}\r
-\r
-static int\r
-next_setup(Node* node, Node* next_node, regex_t* reg)\r
-{\r
-  int type;\r
-\r
- retry:\r
-  type = NTYPE(node);\r
-  if (type == NT_QTFR) {\r
-    QtfrNode* qn = NQTFR(node);\r
-    if (qn->greedy && IS_REPEAT_INFINITE(qn->upper)) {\r
-#ifdef USE_QTFR_PEEK_NEXT\r
-      Node* n = get_head_value_node(next_node, 1, reg);\r
-      /* '\0': for UTF-16BE etc... */\r
-      if (IS_NOT_NULL(n) && NSTR(n)->s[0] != '\0') {\r
-       qn->next_head_exact = n;\r
-      }\r
-#endif\r
-      /* automatic posseivation a*b ==> (?>a*)b */\r
-      if (qn->lower <= 1) {\r
-       int ttype = NTYPE(qn->target);\r
-       if (IS_NODE_TYPE_SIMPLE(ttype)) {\r
-         Node *x, *y;\r
-         x = get_head_value_node(qn->target, 0, reg);\r
-         if (IS_NOT_NULL(x)) {\r
-           y = get_head_value_node(next_node,  0, reg);\r
-           if (IS_NOT_NULL(y) && is_not_included(x, y, reg)) {\r
-             Node* en = onig_node_new_enclose(ENCLOSE_STOP_BACKTRACK);\r
-             CHECK_NULL_RETURN_MEMERR(en);\r
-             SET_ENCLOSE_STATUS(en, NST_STOP_BT_SIMPLE_REPEAT);\r
-             swap_node(node, en);\r
-             NENCLOSE(node)->target = en;\r
-           }\r
-         }\r
-       }\r
-      }\r
-    }\r
-  }\r
-  else if (type == NT_ENCLOSE) {\r
-    EncloseNode* en = NENCLOSE(node);\r
-    if (en->type == ENCLOSE_MEMORY) {\r
-      node = en->target;\r
-      goto retry;\r
-    }\r
-  }\r
-  return 0;\r
-}\r
-\r
-\r
-static int\r
-update_string_node_case_fold(regex_t* reg, Node *node)\r
-{\r
-  UChar *p, *end, buf[ONIGENC_MBC_CASE_FOLD_MAXLEN];\r
-  UChar *sbuf, *ebuf, *sp;\r
-  int r, i, len, sbuf_size;\r
-  StrNode* sn = NSTR(node);\r
-\r
-  end = sn->end;\r
-  sbuf_size = (int)(end - sn->s) * 2;\r
-  sbuf = (UChar* )xmalloc(sbuf_size);\r
-  CHECK_NULL_RETURN_MEMERR(sbuf);\r
-  ebuf = sbuf + sbuf_size;\r
-\r
-  sp = sbuf;\r
-  p = sn->s;\r
-  while (p < end) {\r
-    len = ONIGENC_MBC_CASE_FOLD(reg->enc, reg->case_fold_flag, &p, end, buf);\r
-    for (i = 0; i < len; i++) {\r
-      if (sp >= ebuf) {\r
-        sbuf = (UChar* )xrealloc(sbuf, sbuf_size * 2, sbuf_size);\r
-        CHECK_NULL_RETURN_MEMERR(sbuf);\r
-        sp = sbuf + sbuf_size;\r
-        sbuf_size *= 2;\r
-        ebuf = sbuf + sbuf_size;\r
-      }\r
-\r
-      *sp++ = buf[i];\r
-    }\r
-  }\r
-\r
-  r = onig_node_str_set(node, sbuf, sp);\r
-  if (r != 0) {\r
-    xfree(sbuf);\r
-    return r;\r
-  }\r
-\r
-  xfree(sbuf);\r
-  return 0;\r
-}\r
-\r
-static int\r
-expand_case_fold_make_rem_string(Node** rnode, UChar *s, UChar *end,\r
-                                regex_t* reg)\r
-{\r
-  int r;\r
-  Node *node;\r
-\r
-  node = onig_node_new_str(s, end);\r
-  if (IS_NULL(node)) return ONIGERR_MEMORY;\r
-\r
-  r = update_string_node_case_fold(reg, node);\r
-  if (r != 0) {\r
-    onig_node_free(node);\r
-    return r;\r
-  }\r
-\r
-  NSTRING_SET_AMBIG(node);\r
-  NSTRING_SET_DONT_GET_OPT_INFO(node);\r
-  *rnode = node;\r
-  return 0;\r
-}\r
-\r
-static int\r
-expand_case_fold_string_alt(int item_num, OnigCaseFoldCodeItem items[],\r
-                           UChar *p, int slen, UChar *end,\r
-                           regex_t* reg, Node **rnode)\r
-{\r
-  int r, i, j, len, varlen;\r
-  Node *anode, *var_anode, *snode, *xnode, *an;\r
-  UChar buf[ONIGENC_CODE_TO_MBC_MAXLEN];\r
-\r
-  *rnode = var_anode = NULL_NODE;\r
-\r
-  varlen = 0;\r
-  for (i = 0; i < item_num; i++) {\r
-    if (items[i].byte_len != slen) {\r
-      varlen = 1;\r
-      break;\r
-    }\r
-  }\r
-\r
-  if (varlen != 0) {\r
-    *rnode = var_anode = onig_node_new_alt(NULL_NODE, NULL_NODE);\r
-    if (IS_NULL(var_anode)) return ONIGERR_MEMORY;\r
-\r
-    xnode = onig_node_new_list(NULL, NULL);\r
-    if (IS_NULL(xnode)) goto mem_err;\r
-    NCAR(var_anode) = xnode;\r
-\r
-    anode = onig_node_new_alt(NULL_NODE, NULL_NODE);\r
-    if (IS_NULL(anode)) goto mem_err;\r
-    NCAR(xnode) = anode;\r
-  }\r
-  else {\r
-    *rnode = anode = onig_node_new_alt(NULL_NODE, NULL_NODE);\r
-    if (IS_NULL(anode)) return ONIGERR_MEMORY;\r
-  }\r
-\r
-  snode = onig_node_new_str(p, p + slen);\r
-  if (IS_NULL(snode)) goto mem_err;\r
-\r
-  NCAR(anode) = snode;\r
-\r
-  for (i = 0; i < item_num; i++) {\r
-    snode = onig_node_new_str(NULL, NULL);\r
-    if (IS_NULL(snode)) goto mem_err;\r
-    \r
-    for (j = 0; j < items[i].code_len; j++) {\r
-      len = ONIGENC_CODE_TO_MBC(reg->enc, items[i].code[j], buf);\r
-      if (len < 0) {\r
-       r = len;\r
-       goto mem_err2;\r
-      }\r
-\r
-      r = onig_node_str_cat(snode, buf, buf + len);\r
-      if (r != 0) goto mem_err2;\r
-    }\r
-\r
-    an = onig_node_new_alt(NULL_NODE, NULL_NODE);\r
-    if (IS_NULL(an)) {\r
-      goto mem_err2;\r
-    }\r
-\r
-    if (items[i].byte_len != slen) {\r
-      Node *rem;\r
-      UChar *q = p + items[i].byte_len;\r
-\r
-      if (q < end) {\r
-        r = expand_case_fold_make_rem_string(&rem, q, end, reg);\r
-        if (r != 0) {\r
-          onig_node_free(an);\r
-          goto mem_err2;\r
-        }\r
-\r
-        xnode = onig_node_list_add(NULL_NODE, snode);\r
-        if (IS_NULL(xnode)) {\r
-          onig_node_free(an);\r
-          onig_node_free(rem);\r
-          goto mem_err2;\r
-        }\r
-        if (IS_NULL(onig_node_list_add(xnode, rem))) {\r
-          onig_node_free(an);\r
-          onig_node_free(xnode);\r
-          onig_node_free(rem);\r
-          goto mem_err;\r
-        }\r
-\r
-        NCAR(an) = xnode;\r
-      }\r
-      else {\r
-        NCAR(an) = snode;\r
-      }\r
-\r
-      NCDR(var_anode) = an;\r
-      var_anode = an;\r
-    }\r
-    else {\r
-      NCAR(an)     = snode;\r
-      NCDR(anode) = an;\r
-      anode = an;\r
-    }\r
-  }\r
-\r
-  return varlen;\r
-\r
- mem_err2:\r
-  onig_node_free(snode);\r
-\r
- mem_err:\r
-  onig_node_free(*rnode);\r
-\r
-  return ONIGERR_MEMORY;\r
-}\r
-\r
-static int\r
-expand_case_fold_string(Node* node, regex_t* reg)\r
-{\r
-#define THRESHOLD_CASE_FOLD_ALT_FOR_EXPANSION  8\r
-\r
-  int r, n, len, alt_num;\r
-  UChar *start, *end, *p;\r
-  Node *top_root, *root, *snode, *prev_node;\r
-  OnigCaseFoldCodeItem items[ONIGENC_GET_CASE_FOLD_CODES_MAX_NUM];\r
-  StrNode* sn = NSTR(node);\r
-\r
-  if (NSTRING_IS_AMBIG(node)) return 0;\r
-\r
-  start = sn->s;\r
-  end   = sn->end;\r
-  if (start >= end) return 0;\r
-\r
-  r = 0;\r
-  top_root = root = prev_node = snode = NULL_NODE;\r
-  alt_num = 1;\r
-  p = start;\r
-  while (p < end) {\r
-    n = ONIGENC_GET_CASE_FOLD_CODES_BY_STR(reg->enc, reg->case_fold_flag,\r
-                                          p, end, items);\r
-    if (n < 0) {\r
-      r = n;\r
-      goto err;\r
-    }\r
-\r
-    len = enclen(reg->enc, p);\r
-\r
-    if (n == 0) {\r
-      if (IS_NULL(snode)) {\r
-       if (IS_NULL(root) && IS_NOT_NULL(prev_node)) {\r
-         top_root = root = onig_node_list_add(NULL_NODE, prev_node);\r
-         if (IS_NULL(root)) {\r
-           onig_node_free(prev_node);\r
-           goto mem_err;\r
-         }\r
-       }\r
-\r
-       prev_node = snode = onig_node_new_str(NULL, NULL);\r
-       if (IS_NULL(snode)) goto mem_err;\r
-       if (IS_NOT_NULL(root)) {\r
-         if (IS_NULL(onig_node_list_add(root, snode))) {\r
-           onig_node_free(snode);\r
-           goto mem_err;\r
-         }\r
-       }\r
-      }\r
-\r
-      r = onig_node_str_cat(snode, p, p + len);\r
-      if (r != 0) goto err;\r
-    }\r
-    else {\r
-      alt_num *= (n + 1);\r
-      if (alt_num > THRESHOLD_CASE_FOLD_ALT_FOR_EXPANSION) break;\r
-\r
-      if (IS_NULL(root) && IS_NOT_NULL(prev_node)) {\r
-       top_root = root = onig_node_list_add(NULL_NODE, prev_node);\r
-       if (IS_NULL(root)) {\r
-         onig_node_free(prev_node);\r
-         goto mem_err;\r
-       }\r
-      }\r
-\r
-      r = expand_case_fold_string_alt(n, items, p, len, end, reg, &prev_node);\r
-      if (r < 0) goto mem_err;\r
-      if (r == 1) {\r
-       if (IS_NULL(root)) {\r
-         top_root = prev_node;\r
-       }\r
-       else {\r
-         if (IS_NULL(onig_node_list_add(root, prev_node))) {\r
-           onig_node_free(prev_node);\r
-           goto mem_err;\r
-         }\r
-       }\r
-\r
-       root = NCAR(prev_node);\r
-      }\r
-      else { /* r == 0 */\r
-       if (IS_NOT_NULL(root)) {\r
-         if (IS_NULL(onig_node_list_add(root, prev_node))) {\r
-           onig_node_free(prev_node);\r
-           goto mem_err;\r
-         }\r
-       }\r
-      }\r
-\r
-      snode = NULL_NODE;\r
-    }\r
-\r
-    p += len;\r
-  }\r
-\r
-  if (p < end) {\r
-    Node *srem;\r
-\r
-    r = expand_case_fold_make_rem_string(&srem, p, end, reg);\r
-    if (r != 0) goto mem_err;\r
-\r
-    if (IS_NOT_NULL(prev_node) && IS_NULL(root)) {\r
-      top_root = root = onig_node_list_add(NULL_NODE, prev_node);\r
-      if (IS_NULL(root)) {\r
-       onig_node_free(srem);\r
-       onig_node_free(prev_node);\r
-       goto mem_err;\r
-      }\r
-    }\r
-\r
-    if (IS_NULL(root)) {\r
-      prev_node = srem;\r
-    }\r
-    else {\r
-      if (IS_NULL(onig_node_list_add(root, srem))) {\r
-       onig_node_free(srem);\r
-       goto mem_err;\r
-      }\r
-    }\r
-  }\r
-\r
-  /* ending */\r
-  top_root = (IS_NOT_NULL(top_root) ? top_root : prev_node);\r
-  swap_node(node, top_root);\r
-  onig_node_free(top_root);\r
-  return 0;\r
-\r
- mem_err:\r
-  r = ONIGERR_MEMORY;\r
-\r
- err:\r
-  onig_node_free(top_root);\r
-  return r;\r
-}\r
-\r
-\r
-#ifdef USE_COMBINATION_EXPLOSION_CHECK\r
-\r
-#define CEC_THRES_NUM_BIG_REPEAT         512\r
-#define CEC_INFINITE_NUM          0x7fffffff\r
-\r
-#define CEC_IN_INFINITE_REPEAT    (1<<0)\r
-#define CEC_IN_FINITE_REPEAT      (1<<1)\r
-#define CEC_CONT_BIG_REPEAT       (1<<2)\r
-\r
-static int\r
-setup_comb_exp_check(Node* node, int state, ScanEnv* env)\r
-{\r
-  int type;\r
-  int r = state;\r
-\r
-  type = NTYPE(node);\r
-  switch (type) {\r
-  case NT_LIST:\r
-    {\r
-      Node* prev = NULL_NODE;\r
-      do {\r
-       r = setup_comb_exp_check(NCAR(node), r, env);\r
-       prev = NCAR(node);\r
-      } while (r >= 0 && IS_NOT_NULL(node = NCDR(node)));\r
-    }\r
-    break;\r
-\r
-  case NT_ALT:\r
-    {\r
-      int ret;\r
-      do {\r
-       ret = setup_comb_exp_check(NCAR(node), state, env);\r
-       r |= ret;\r
-      } while (ret >= 0 && IS_NOT_NULL(node = NCDR(node)));\r
-    }\r
-    break;\r
-\r
-  case NT_QTFR:\r
-    {\r
-      int child_state = state;\r
-      int add_state = 0;\r
-      QtfrNode* qn = NQTFR(node);\r
-      Node* target = qn->target;\r
-      int var_num;\r
-\r
-      if (! IS_REPEAT_INFINITE(qn->upper)) {\r
-       if (qn->upper > 1) {\r
-         /* {0,1}, {1,1} are allowed */\r
-         child_state |= CEC_IN_FINITE_REPEAT;\r
-\r
-         /* check (a*){n,m}, (a+){n,m} => (a*){n,n}, (a+){n,n} */\r
-         if (env->backrefed_mem == 0) {\r
-           if (NTYPE(qn->target) == NT_ENCLOSE) {\r
-             EncloseNode* en = NENCLOSE(qn->target);\r
-             if (en->type == ENCLOSE_MEMORY) {\r
-               if (NTYPE(en->target) == NT_QTFR) {\r
-                 QtfrNode* q = NQTFR(en->target);\r
-                 if (IS_REPEAT_INFINITE(q->upper)\r
-                     && q->greedy == qn->greedy) {\r
-                   qn->upper = (qn->lower == 0 ? 1 : qn->lower);\r
-                   if (qn->upper == 1)\r
-                     child_state = state;\r
-                 }\r
-               }\r
-             }\r
-           }\r
-         }\r
-       }\r
-      }\r
-\r
-      if (state & CEC_IN_FINITE_REPEAT) {\r
-       qn->comb_exp_check_num = -1;\r
-      }\r
-      else {\r
-       if (IS_REPEAT_INFINITE(qn->upper)) {\r
-         var_num = CEC_INFINITE_NUM;\r
-         child_state |= CEC_IN_INFINITE_REPEAT;\r
-       }\r
-       else {\r
-         var_num = qn->upper - qn->lower;\r
-       }\r
-\r
-       if (var_num >= CEC_THRES_NUM_BIG_REPEAT)\r
-         add_state |= CEC_CONT_BIG_REPEAT;\r
-\r
-       if (((state & CEC_IN_INFINITE_REPEAT) != 0 && var_num != 0) ||\r
-           ((state & CEC_CONT_BIG_REPEAT) != 0 &&\r
-            var_num >= CEC_THRES_NUM_BIG_REPEAT)) {\r
-         if (qn->comb_exp_check_num == 0) {\r
-           env->num_comb_exp_check++;\r
-           qn->comb_exp_check_num = env->num_comb_exp_check;\r
-           if (env->curr_max_regnum > env->comb_exp_max_regnum)\r
-             env->comb_exp_max_regnum = env->curr_max_regnum;\r
-         }\r
-       }\r
-      }\r
-\r
-      r = setup_comb_exp_check(target, child_state, env);\r
-      r |= add_state;\r
-    }\r
-    break;\r
-\r
-  case NT_ENCLOSE:\r
-    {\r
-      EncloseNode* en = NENCLOSE(node);\r
-\r
-      switch (en->type) {\r
-      case ENCLOSE_MEMORY:\r
-       {\r
-         if (env->curr_max_regnum < en->regnum)\r
-           env->curr_max_regnum = en->regnum;\r
-\r
-         r = setup_comb_exp_check(en->target, state, env);\r
-       }\r
-       break;\r
-\r
-      default:\r
-       r = setup_comb_exp_check(en->target, state, env);\r
-       break;\r
-      }\r
-    }\r
-    break;\r
-\r
-#ifdef USE_SUBEXP_CALL\r
-  case NT_CALL:\r
-    if (IS_CALL_RECURSION(NCALL(node)))\r
-      env->has_recursion = 1;\r
-    else\r
-      r = setup_comb_exp_check(NCALL(node)->target, state, env);\r
-    break;\r
-#endif\r
-\r
-  default:\r
-    break;\r
-  }\r
-\r
-  return r;\r
-}\r
-#endif\r
-\r
-#define IN_ALT        (1<<0)\r
-#define IN_NOT        (1<<1)\r
-#define IN_REPEAT     (1<<2)\r
-#define IN_VAR_REPEAT (1<<3)\r
-\r
-/* setup_tree does the following work.\r
- 1. check empty loop. (set qn->target_empty_info)\r
- 2. expand ignore-case in char class.\r
- 3. set memory status bit flags. (reg->mem_stats)\r
- 4. set qn->head_exact for [push, exact] -> [push_or_jump_exact1, exact].\r
- 5. find invalid patterns in look-behind.\r
- 6. expand repeated string.\r
- */\r
-static int\r
-setup_tree(Node* node, regex_t* reg, int state, ScanEnv* env)\r
-{\r
-  int type;\r
-  int r = 0;\r
-\r
-  type = NTYPE(node);\r
-  switch (type) {\r
-  case NT_LIST:\r
-    {\r
-      Node* prev = NULL_NODE;\r
-      do {\r
-       r = setup_tree(NCAR(node), reg, state, env);\r
-       if (IS_NOT_NULL(prev) && r == 0) {\r
-         r = next_setup(prev, NCAR(node), reg);\r
-       }\r
-       prev = NCAR(node);\r
-      } while (r == 0 && IS_NOT_NULL(node = NCDR(node)));\r
-    }\r
-    break;\r
-\r
-  case NT_ALT:\r
-    do {\r
-      r = setup_tree(NCAR(node), reg, (state | IN_ALT), env);\r
-    } while (r == 0 && IS_NOT_NULL(node = NCDR(node)));\r
-    break;\r
-\r
-  case NT_CCLASS:\r
-    break;\r
-\r
-  case NT_STR:\r
-    if (IS_IGNORECASE(reg->options) && !NSTRING_IS_RAW(node)) {\r
-      r = expand_case_fold_string(node, reg);\r
-    }\r
-    break;\r
-\r
-  case NT_CTYPE:\r
-  case NT_CANY:\r
-    break;\r
-\r
-#ifdef USE_SUBEXP_CALL\r
-  case NT_CALL:\r
-    break;\r
-#endif\r
-\r
-  case NT_BREF:\r
-    {\r
-      int i;\r
-      int* p;\r
-      Node** nodes = SCANENV_MEM_NODES(env);\r
-      BRefNode* br = NBREF(node);\r
-      p = BACKREFS_P(br);\r
-      for (i = 0; i < br->back_num; i++) {\r
-       if (p[i] > env->num_mem)  return ONIGERR_INVALID_BACKREF;\r
-       BIT_STATUS_ON_AT(env->backrefed_mem, p[i]);\r
-       BIT_STATUS_ON_AT(env->bt_mem_start, p[i]);\r
-#ifdef USE_BACKREF_WITH_LEVEL\r
-       if (IS_BACKREF_NEST_LEVEL(br)) {\r
-         BIT_STATUS_ON_AT(env->bt_mem_end, p[i]);\r
-       }\r
-#endif\r
-       SET_ENCLOSE_STATUS(nodes[p[i]], NST_MEM_BACKREFED);\r
-      }\r
-    }\r
-    break;\r
-\r
-  case NT_QTFR:\r
-    {\r
-      OnigDistance d;\r
-      QtfrNode* qn = NQTFR(node);\r
-      Node* target = qn->target;\r
-\r
-      if ((state & IN_REPEAT) != 0) {\r
-        qn->state |= NST_IN_REPEAT;\r
-      }\r
-\r
-      if (IS_REPEAT_INFINITE(qn->upper) || qn->upper >= 1) {\r
-       r = get_min_match_length(target, &d, env);\r
-       if (r) break;\r
-       if (d == 0) {\r
-         qn->target_empty_info = NQ_TARGET_IS_EMPTY;\r
-#ifdef USE_MONOMANIAC_CHECK_CAPTURES_IN_ENDLESS_REPEAT\r
-         r = quantifiers_memory_node_info(target);\r
-         if (r < 0) break;\r
-         if (r > 0) {\r
-           qn->target_empty_info = r;\r
-         }\r
-#endif\r
-#if 0\r
-         r = get_max_match_length(target, &d, env);\r
-         if (r == 0 && d == 0) {\r
-           /*  ()* ==> ()?, ()+ ==> ()  */\r
-           qn->upper = 1;\r
-           if (qn->lower > 1) qn->lower = 1;\r
-           if (NTYPE(target) == NT_STR) {\r
-             qn->upper = qn->lower = 0;  /* /(?:)+/ ==> // */\r
-           }\r
-         }\r
-#endif\r
-       }\r
-      }\r
-\r
-      state |= IN_REPEAT;\r
-      if (qn->lower != qn->upper)\r
-       state |= IN_VAR_REPEAT;\r
-      r = setup_tree(target, reg, state, env);\r
-      if (r) break;\r
-\r
-      /* expand string */\r
-#define EXPAND_STRING_MAX_LENGTH  100\r
-      if (NTYPE(target) == NT_STR) {\r
-       if (!IS_REPEAT_INFINITE(qn->lower) && qn->lower == qn->upper &&\r
-           qn->lower > 1 && qn->lower <= EXPAND_STRING_MAX_LENGTH) {\r
-         int len = NSTRING_LEN(target);\r
-         StrNode* sn = NSTR(target);\r
-\r
-         if (len * qn->lower <= EXPAND_STRING_MAX_LENGTH) {\r
-           int i, n = qn->lower;\r
-           onig_node_conv_to_str_node(node, NSTR(target)->flag);\r
-           for (i = 0; i < n; i++) {\r
-             r = onig_node_str_cat(node, sn->s, sn->end);\r
-             if (r) break;\r
-           }\r
-           onig_node_free(target);\r
-           break; /* break case NT_QTFR: */\r
-         }\r
-       }\r
-      }\r
-\r
-#ifdef USE_OP_PUSH_OR_JUMP_EXACT\r
-      if (qn->greedy && (qn->target_empty_info != 0)) {\r
-       if (NTYPE(target) == NT_QTFR) {\r
-         QtfrNode* tqn = NQTFR(target);\r
-         if (IS_NOT_NULL(tqn->head_exact)) {\r
-           qn->head_exact  = tqn->head_exact;\r
-           tqn->head_exact = NULL;\r
-         }\r
-       }\r
-       else {\r
-         qn->head_exact = get_head_value_node(qn->target, 1, reg);\r
-       }\r
-      }\r
-#endif\r
-    }\r
-    break;\r
-\r
-  case NT_ENCLOSE:\r
-    {\r
-      EncloseNode* en = NENCLOSE(node);\r
-\r
-      switch (en->type) {\r
-      case ENCLOSE_OPTION:\r
-       {\r
-         OnigOptionType options = reg->options;\r
-         reg->options = NENCLOSE(node)->option;\r
-         r = setup_tree(NENCLOSE(node)->target, reg, state, env);\r
-         reg->options = options;\r
-       }\r
-       break;\r
-\r
-      case ENCLOSE_MEMORY:\r
-       if ((state & (IN_ALT | IN_NOT | IN_VAR_REPEAT)) != 0) {\r
-         BIT_STATUS_ON_AT(env->bt_mem_start, en->regnum);\r
-         /* SET_ENCLOSE_STATUS(node, NST_MEM_IN_ALT_NOT); */\r
-       }\r
-        r = setup_tree(en->target, reg, state, env);\r
-        break;\r
-\r
-      case ENCLOSE_STOP_BACKTRACK:\r
-       {\r
-         Node* target = en->target;\r
-         r = setup_tree(target, reg, state, env);\r
-         if (NTYPE(target) == NT_QTFR) {\r
-           QtfrNode* tqn = NQTFR(target);\r
-           if (IS_REPEAT_INFINITE(tqn->upper) && tqn->lower <= 1 &&\r
-               tqn->greedy != 0) {  /* (?>a*), a*+ etc... */\r
-             int qtype = NTYPE(tqn->target);\r
-             if (IS_NODE_TYPE_SIMPLE(qtype))\r
-               SET_ENCLOSE_STATUS(node, NST_STOP_BT_SIMPLE_REPEAT);\r
-           }\r
-         }\r
-       }\r
-       break;\r
-      }\r
-    }\r
-    break;\r
-\r
-  case NT_ANCHOR:\r
-    {\r
-      AnchorNode* an = NANCHOR(node);\r
-\r
-      switch (an->type) {\r
-      case ANCHOR_PREC_READ:\r
-       r = setup_tree(an->target, reg, state, env);\r
-       break;\r
-      case ANCHOR_PREC_READ_NOT:\r
-       r = setup_tree(an->target, reg, (state | IN_NOT), env);\r
-       break;\r
-\r
-/* allowed node types in look-behind */\r
-#define ALLOWED_TYPE_IN_LB  \\r
-  ( BIT_NT_LIST | BIT_NT_ALT | BIT_NT_STR | BIT_NT_CCLASS | BIT_NT_CTYPE | \\r
-    BIT_NT_CANY | BIT_NT_ANCHOR | BIT_NT_ENCLOSE | BIT_NT_QTFR | BIT_NT_CALL )\r
-\r
-#define ALLOWED_ENCLOSE_IN_LB       ( ENCLOSE_MEMORY )\r
-#define ALLOWED_ENCLOSE_IN_LB_NOT   0\r
-\r
-#define ALLOWED_ANCHOR_IN_LB \\r
-( ANCHOR_LOOK_BEHIND | ANCHOR_BEGIN_LINE | ANCHOR_END_LINE | ANCHOR_BEGIN_BUF | ANCHOR_BEGIN_POSITION )\r
-#define ALLOWED_ANCHOR_IN_LB_NOT \\r
-( ANCHOR_LOOK_BEHIND | ANCHOR_LOOK_BEHIND_NOT | ANCHOR_BEGIN_LINE | ANCHOR_END_LINE | ANCHOR_BEGIN_BUF | ANCHOR_BEGIN_POSITION )\r
-\r
-      case ANCHOR_LOOK_BEHIND:\r
-       {\r
-         r = check_type_tree(an->target, ALLOWED_TYPE_IN_LB,\r
-                             ALLOWED_ENCLOSE_IN_LB, ALLOWED_ANCHOR_IN_LB);\r
-         if (r < 0) return r;\r
-         if (r > 0) return ONIGERR_INVALID_LOOK_BEHIND_PATTERN;\r
-         r = setup_look_behind(node, reg, env);\r
-         if (r != 0) return r;\r
-         r = setup_tree(an->target, reg, state, env);\r
-       }\r
-       break;\r
-\r
-      case ANCHOR_LOOK_BEHIND_NOT:\r
-       {\r
-         r = check_type_tree(an->target, ALLOWED_TYPE_IN_LB,\r
-                     ALLOWED_ENCLOSE_IN_LB_NOT, ALLOWED_ANCHOR_IN_LB_NOT);\r
-         if (r < 0) return r;\r
-         if (r > 0) return ONIGERR_INVALID_LOOK_BEHIND_PATTERN;\r
-         r = setup_look_behind(node, reg, env);\r
-         if (r != 0) return r;\r
-         r = setup_tree(an->target, reg, (state | IN_NOT), env);\r
-       }\r
-       break;\r
-      }\r
-    }\r
-    break;\r
-\r
-  default:\r
-    break;\r
-  }\r
-\r
-  return r;\r
-}\r
-\r
-/* set skip map for Boyer-Moor search */\r
-static int\r
-set_bm_skip(UChar* s, UChar* end, OnigEncoding enc ARG_UNUSED,\r
-           UChar skip[], int** int_skip)\r
-{\r
-  int i, len;\r
-\r
-  len = (int)(end - s);\r
-  if (len < ONIG_CHAR_TABLE_SIZE) {\r
-    for (i = 0; i < ONIG_CHAR_TABLE_SIZE; i++) skip[i] = (UChar)len;\r
-\r
-    for (i = 0; i < len - 1; i++)\r
-      skip[s[i]] = (UChar)(len - 1 - i);\r
-  }\r
-  else {\r
-    if (IS_NULL(*int_skip)) {\r
-      *int_skip = (int* )xmalloc(sizeof(int) * ONIG_CHAR_TABLE_SIZE);\r
-      if (IS_NULL(*int_skip)) return ONIGERR_MEMORY;\r
-    }\r
-    for (i = 0; i < ONIG_CHAR_TABLE_SIZE; i++) (*int_skip)[i] = len;\r
-\r
-    for (i = 0; i < len - 1; i++)\r
-      (*int_skip)[s[i]] = len - 1 - i;\r
-  }\r
-  return 0;\r
-}\r
-\r
-#define OPT_EXACT_MAXLEN   24\r
-\r
-typedef struct {\r
-  OnigDistance min;  /* min byte length */\r
-  OnigDistance max;  /* max byte length */\r
-} MinMaxLen;\r
-\r
-typedef struct {\r
-  MinMaxLen        mmd;\r
-  OnigEncoding     enc;\r
-  OnigOptionType   options;\r
-  OnigCaseFoldType case_fold_flag;\r
-  ScanEnv*         scan_env;\r
-} OptEnv;\r
-\r
-typedef struct {\r
-  int left_anchor;\r
-  int right_anchor;\r
-} OptAncInfo;\r
-\r
-typedef struct {\r
-  MinMaxLen  mmd; /* info position */\r
-  OptAncInfo anc;\r
-\r
-  int   reach_end;\r
-  int   ignore_case;\r
-  int   len;\r
-  UChar s[OPT_EXACT_MAXLEN];\r
-} OptExactInfo;\r
-\r
-typedef struct {\r
-  MinMaxLen mmd; /* info position */\r
-  OptAncInfo anc;\r
-\r
-  int   value;      /* weighted value */\r
-  UChar map[ONIG_CHAR_TABLE_SIZE];\r
-} OptMapInfo;\r
-\r
-typedef struct {\r
-  MinMaxLen    len;\r
-\r
-  OptAncInfo   anc;\r
-  OptExactInfo exb;    /* boundary */\r
-  OptExactInfo exm;    /* middle */\r
-  OptExactInfo expr;   /* prec read (?=...) */\r
-\r
-  OptMapInfo   map;   /* boundary */\r
-} NodeOptInfo;\r
-\r
-\r
-static int\r
-map_position_value(OnigEncoding enc, int i)\r
-{\r
-  static const short int ByteValTable[] = {\r
-     5,  1,  1,  1,  1,  1,  1,  1,  1, 10, 10,  1,  1, 10,  1,  1,\r
-     1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  1,\r
-    12,  4,  7,  4,  4,  4,  4,  4,  4,  5,  5,  5,  5,  5,  5,  5,\r
-     6,  6,  6,  6,  6,  6,  6,  6,  6,  6,  5,  5,  5,  5,  5,  5,\r
-     5,  6,  6,  6,  6,  7,  6,  6,  6,  6,  6,  6,  6,  6,  6,  6,\r
-     6,  6,  6,  6,  6,  6,  6,  6,  6,  6,  6,  5,  6,  5,  5,  5,\r
-     5,  6,  6,  6,  6,  7,  6,  6,  6,  6,  6,  6,  6,  6,  6,  6,\r
-     6,  6,  6,  6,  6,  6,  6,  6,  6,  6,  6,  5,  5,  5,  5,  1\r
-  };\r
-\r
-  if (i < (int )(sizeof(ByteValTable)/sizeof(ByteValTable[0]))) {\r
-    if (i == 0 && ONIGENC_MBC_MINLEN(enc) > 1)\r
-      return 20;\r
-    else\r
-      return (int )ByteValTable[i];\r
-  }\r
-  else\r
-    return 4;   /* Take it easy. */\r
-}\r
-\r
-static int\r
-distance_value(MinMaxLen* mm)\r
-{\r
-  /* 1000 / (min-max-dist + 1) */\r
-  static const short int dist_vals[] = {\r
-    1000,  500,  333,  250,  200,  167,  143,  125,  111,  100, \r
-      91,   83,   77,   71,   67,   63,   59,   56,   53,   50, \r
-      48,   45,   43,   42,   40,   38,   37,   36,   34,   33, \r
-      32,   31,   30,   29,   29,   28,   27,   26,   26,   25, \r
-      24,   24,   23,   23,   22,   22,   21,   21,   20,   20, \r
-      20,   19,   19,   19,   18,   18,   18,   17,   17,   17, \r
-      16,   16,   16,   16,   15,   15,   15,   15,   14,   14, \r
-      14,   14,   14,   14,   13,   13,   13,   13,   13,   13, \r
-      12,   12,   12,   12,   12,   12,   11,   11,   11,   11, \r
-      11,   11,   11,   11,   11,   10,   10,   10,   10,   10\r
-  };\r
-\r
-  int d;\r
-\r
-  if (mm->max == ONIG_INFINITE_DISTANCE) return 0;\r
-\r
-  d = mm->max - mm->min;\r
-  if (d < (int )(sizeof(dist_vals)/sizeof(dist_vals[0])))\r
-    /* return dist_vals[d] * 16 / (mm->min + 12); */\r
-    return (int )dist_vals[d];\r
-  else\r
-    return 1;\r
-}\r
-\r
-static int\r
-comp_distance_value(MinMaxLen* d1, MinMaxLen* d2, int v1, int v2)\r
-{\r
-  if (v2 <= 0) return -1;\r
-  if (v1 <= 0) return  1;\r
-\r
-  v1 *= distance_value(d1);\r
-  v2 *= distance_value(d2);\r
-\r
-  if (v2 > v1) return  1;\r
-  if (v2 < v1) return -1;\r
-\r
-  if (d2->min < d1->min) return  1;\r
-  if (d2->min > d1->min) return -1;\r
-  return 0;\r
-}\r
-\r
-static int\r
-is_equal_mml(MinMaxLen* a, MinMaxLen* b)\r
-{\r
-  return (a->min == b->min && a->max == b->max) ? 1 : 0;\r
-}\r
-\r
-\r
-static void\r
-set_mml(MinMaxLen* mml, OnigDistance min, OnigDistance max)\r
-{\r
-  mml->min = min;\r
-  mml->max = max;\r
-}\r
-\r
-static void\r
-clear_mml(MinMaxLen* mml)\r
-{\r
-  mml->min = mml->max = 0;\r
-}\r
-\r
-static void\r
-copy_mml(MinMaxLen* to, MinMaxLen* from)\r
-{\r
-  to->min = from->min;\r
-  to->max = from->max;\r
-}\r
-\r
-static void\r
-add_mml(MinMaxLen* to, MinMaxLen* from)\r
-{\r
-  to->min = distance_add(to->min, from->min);\r
-  to->max = distance_add(to->max, from->max);\r
-}\r
-\r
-#if 0\r
-static void\r
-add_len_mml(MinMaxLen* to, OnigDistance len)\r
-{\r
-  to->min = distance_add(to->min, len);\r
-  to->max = distance_add(to->max, len);\r
-}\r
-#endif\r
-\r
-static void\r
-alt_merge_mml(MinMaxLen* to, MinMaxLen* from)\r
-{\r
-  if (to->min > from->min) to->min = from->min;\r
-  if (to->max < from->max) to->max = from->max;\r
-}\r
-\r
-static void\r
-copy_opt_env(OptEnv* to, OptEnv* from)\r
-{\r
-  *to = *from;\r
-}\r
-\r
-static void\r
-clear_opt_anc_info(OptAncInfo* anc)\r
-{\r
-  anc->left_anchor  = 0;\r
-  anc->right_anchor = 0;\r
-}\r
-\r
-static void\r
-copy_opt_anc_info(OptAncInfo* to, OptAncInfo* from)\r
-{\r
-  *to = *from;\r
-}\r
-\r
-static void\r
-concat_opt_anc_info(OptAncInfo* to, OptAncInfo* left, OptAncInfo* right,\r
-                   OnigDistance left_len, OnigDistance right_len)\r
-{\r
-  clear_opt_anc_info(to);\r
-\r
-  to->left_anchor = left->left_anchor;\r
-  if (left_len == 0) {\r
-    to->left_anchor |= right->left_anchor;\r
-  }\r
-\r
-  to->right_anchor = right->right_anchor;\r
-  if (right_len == 0) {\r
-    to->right_anchor |= left->right_anchor;\r
-  }\r
-}\r
-\r
-static int\r
-is_left_anchor(int anc)\r
-{\r
-  if (anc == ANCHOR_END_BUF || anc == ANCHOR_SEMI_END_BUF ||\r
-      anc == ANCHOR_END_LINE || anc == ANCHOR_PREC_READ ||\r
-      anc == ANCHOR_PREC_READ_NOT)\r
-    return 0;\r
-\r
-  return 1;\r
-}\r
-\r
-static int\r
-is_set_opt_anc_info(OptAncInfo* to, int anc)\r
-{\r
-  if ((to->left_anchor & anc) != 0) return 1;\r
-\r
-  return ((to->right_anchor & anc) != 0 ? 1 : 0);\r
-}\r
-\r
-static void\r
-add_opt_anc_info(OptAncInfo* to, int anc)\r
-{\r
-  if (is_left_anchor(anc))\r
-    to->left_anchor |= anc;\r
-  else\r
-    to->right_anchor |= anc;\r
-}\r
-\r
-static void\r
-remove_opt_anc_info(OptAncInfo* to, int anc)\r
-{\r
-  if (is_left_anchor(anc))\r
-    to->left_anchor &= ~anc;\r
-  else\r
-    to->right_anchor &= ~anc;\r
-}\r
-\r
-static void\r
-alt_merge_opt_anc_info(OptAncInfo* to, OptAncInfo* add)\r
-{\r
-  to->left_anchor  &= add->left_anchor;\r
-  to->right_anchor &= add->right_anchor;\r
-}\r
-\r
-static int\r
-is_full_opt_exact_info(OptExactInfo* ex)\r
-{\r
-  return (ex->len >= OPT_EXACT_MAXLEN ? 1 : 0);\r
-}\r
-\r
-static void\r
-clear_opt_exact_info(OptExactInfo* ex)\r
-{\r
-  clear_mml(&ex->mmd);\r
-  clear_opt_anc_info(&ex->anc);\r
-  ex->reach_end   = 0;\r
-  ex->ignore_case = 0;\r
-  ex->len         = 0;\r
-  ex->s[0]        = '\0';\r
-}\r
-\r
-static void\r
-copy_opt_exact_info(OptExactInfo* to, OptExactInfo* from)\r
-{\r
-  *to = *from;\r
-}\r
-\r
-static void\r
-concat_opt_exact_info(OptExactInfo* to, OptExactInfo* add, OnigEncoding enc)\r
-{\r
-  int i, j, len;\r
-  UChar *p, *end;\r
-  OptAncInfo tanc;\r
-\r
-  if (! to->ignore_case && add->ignore_case) {\r
-    if (to->len >= add->len) return ;  /* avoid */\r
-\r
-    to->ignore_case = 1;\r
-  }\r
-\r
-  p = add->s;\r
-  end = p + add->len;\r
-  for (i = to->len; p < end; ) {\r
-    len = enclen(enc, p);\r
-    if (i + len > OPT_EXACT_MAXLEN) break;\r
-    for (j = 0; j < len && p < end; j++)\r
-      to->s[i++] = *p++;\r
-  }\r
-\r
-  to->len = i;\r
-  to->reach_end = (p == end ? add->reach_end : 0);\r
-\r
-  concat_opt_anc_info(&tanc, &to->anc, &add->anc, 1, 1);\r
-  if (! to->reach_end) tanc.right_anchor = 0;\r
-  copy_opt_anc_info(&to->anc, &tanc);\r
-}\r
-\r
-static void\r
-concat_opt_exact_info_str(OptExactInfo* to, UChar* s, UChar* end,\r
-                         int raw ARG_UNUSED, OnigEncoding enc)\r
-{\r
-  int i, j, len;\r
-  UChar *p;\r
-\r
-  for (i = to->len, p = s; p < end && i < OPT_EXACT_MAXLEN; ) {\r
-    len = enclen(enc, p);\r
-    if (i + len > OPT_EXACT_MAXLEN) break;\r
-    for (j = 0; j < len && p < end; j++)\r
-      to->s[i++] = *p++;\r
-  }\r
-\r
-  to->len = i;\r
-}\r
-\r
-static void\r
-alt_merge_opt_exact_info(OptExactInfo* to, OptExactInfo* add, OptEnv* env)\r
-{\r
-  int i, j, len;\r
-\r
-  if (add->len == 0 || to->len == 0) {\r
-    clear_opt_exact_info(to);\r
-    return ;\r
-  }\r
-\r
-  if (! is_equal_mml(&to->mmd, &add->mmd)) {\r
-    clear_opt_exact_info(to);\r
-    return ;\r
-  }\r
-\r
-  for (i = 0; i < to->len && i < add->len; ) {\r
-    if (to->s[i] != add->s[i]) break;\r
-    len = enclen(env->enc, to->s + i);\r
-\r
-    for (j = 1; j < len; j++) {\r
-      if (to->s[i+j] != add->s[i+j]) break;\r
-    }\r
-    if (j < len) break;\r
-    i += len;\r
-  }\r
-\r
-  if (! add->reach_end || i < add->len || i < to->len) {\r
-    to->reach_end = 0;\r
-  }\r
-  to->len = i;\r
-  to->ignore_case |= add->ignore_case;\r
-\r
-  alt_merge_opt_anc_info(&to->anc, &add->anc);\r
-  if (! to->reach_end) to->anc.right_anchor = 0;\r
-}\r
-\r
-static void\r
-select_opt_exact_info(OnigEncoding enc, OptExactInfo* now, OptExactInfo* alt)\r
-{\r
-  int v1, v2;\r
-\r
-  v1 = now->len;\r
-  v2 = alt->len;\r
-\r
-  if (v2 == 0) {\r
-    return ;\r
-  }\r
-  else if (v1 == 0) {\r
-    copy_opt_exact_info(now, alt);\r
-    return ;\r
-  }\r
-  else if (v1 <= 2 && v2 <= 2) {\r
-    /* ByteValTable[x] is big value --> low price */\r
-    v2 = map_position_value(enc, now->s[0]);\r
-    v1 = map_position_value(enc, alt->s[0]);\r
-\r
-    if (now->len > 1) v1 += 5;\r
-    if (alt->len > 1) v2 += 5;\r
-  }\r
-\r
-  if (now->ignore_case == 0) v1 *= 2;\r
-  if (alt->ignore_case == 0) v2 *= 2;\r
-\r
-  if (comp_distance_value(&now->mmd, &alt->mmd, v1, v2) > 0)\r
-    copy_opt_exact_info(now, alt);\r
-}\r
-\r
-static void\r
-clear_opt_map_info(OptMapInfo* map)\r
-{\r
-  static const OptMapInfo clean_info = {\r
-    {0, 0}, {0, 0}, 0,\r
-    {\r
-      0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,\r
-      0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,\r
-      0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,\r
-      0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,\r
-      0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,\r
-      0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,\r
-      0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,\r
-      0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,\r
-      0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,\r
-      0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,\r
-      0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,\r
-      0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,\r
-      0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,\r
-      0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,\r
-      0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,\r
-      0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0\r
-    }\r
-  };\r
-\r
-  xmemcpy(map, &clean_info, sizeof(OptMapInfo));\r
-}\r
-\r
-static void\r
-copy_opt_map_info(OptMapInfo* to, OptMapInfo* from)\r
-{\r
-  *to = *from;\r
-}\r
-\r
-static void\r
-add_char_opt_map_info(OptMapInfo* map, UChar c, OnigEncoding enc)\r
-{\r
-  if (map->map[c] == 0) {\r
-    map->map[c] = 1;\r
-    map->value += map_position_value(enc, c);\r
-  }\r
-}\r
-\r
-static int\r
-add_char_amb_opt_map_info(OptMapInfo* map, UChar* p, UChar* end,\r
-                          OnigEncoding enc, OnigCaseFoldType case_fold_flag)\r
-{\r
-  OnigCaseFoldCodeItem items[ONIGENC_GET_CASE_FOLD_CODES_MAX_NUM];\r
-  UChar buf[ONIGENC_CODE_TO_MBC_MAXLEN];\r
-  int i, n;\r
-\r
-  add_char_opt_map_info(map, p[0], enc);\r
-\r
-  case_fold_flag = DISABLE_CASE_FOLD_MULTI_CHAR(case_fold_flag);\r
-  n = ONIGENC_GET_CASE_FOLD_CODES_BY_STR(enc, case_fold_flag, p, end, items);\r
-  if (n < 0) return n;\r
-\r
-  for (i = 0; i < n; i++) {\r
-    ONIGENC_CODE_TO_MBC(enc, items[i].code[0], buf);\r
-    add_char_opt_map_info(map, buf[0], enc);\r
-  }\r
-\r
-  return 0;\r
-}\r
-\r
-static void\r
-select_opt_map_info(OptMapInfo* now, OptMapInfo* alt)\r
-{\r
-  static int z = 1<<15; /* 32768: something big value */\r
-\r
-  int v1, v2;\r
-\r
-  if (alt->value == 0) return ;\r
-  if (now->value == 0) {\r
-    copy_opt_map_info(now, alt);\r
-    return ;\r
-  }\r
-\r
-  v1 = z / now->value;\r
-  v2 = z / alt->value;\r
-  if (comp_distance_value(&now->mmd, &alt->mmd, v1, v2) > 0)\r
-    copy_opt_map_info(now, alt);\r
-}\r
-\r
-static int\r
-comp_opt_exact_or_map_info(OptExactInfo* e, OptMapInfo* m)\r
-{\r
-#define COMP_EM_BASE  20\r
-  int ve, vm;\r
-\r
-  if (m->value <= 0) return -1;\r
-\r
-  ve = COMP_EM_BASE * e->len * (e->ignore_case ? 1 : 2);\r
-  vm = COMP_EM_BASE * 5 * 2 / m->value;\r
-  return comp_distance_value(&e->mmd, &m->mmd, ve, vm);\r
-}\r
-\r
-static void\r
-alt_merge_opt_map_info(OnigEncoding enc, OptMapInfo* to, OptMapInfo* add)\r
-{\r
-  int i, val;\r
-\r
-  /* if (! is_equal_mml(&to->mmd, &add->mmd)) return ; */\r
-  if (to->value == 0) return ;\r
-  if (add->value == 0 || to->mmd.max < add->mmd.min) {\r
-    clear_opt_map_info(to);\r
-    return ;\r
-  }\r
-\r
-  alt_merge_mml(&to->mmd, &add->mmd);\r
-\r
-  val = 0;\r
-  for (i = 0; i < ONIG_CHAR_TABLE_SIZE; i++) {\r
-    if (add->map[i])\r
-      to->map[i] = 1;\r
-\r
-    if (to->map[i])\r
-      val += map_position_value(enc, i);\r
-  }\r
-  to->value = val;\r
-\r
-  alt_merge_opt_anc_info(&to->anc, &add->anc);\r
-}\r
-\r
-static void\r
-set_bound_node_opt_info(NodeOptInfo* opt, MinMaxLen* mmd)\r
-{\r
-  copy_mml(&(opt->exb.mmd),  mmd);\r
-  copy_mml(&(opt->expr.mmd), mmd);\r
-  copy_mml(&(opt->map.mmd),  mmd);\r
-}\r
-\r
-static void\r
-clear_node_opt_info(NodeOptInfo* opt)\r
-{\r
-  clear_mml(&opt->len);\r
-  clear_opt_anc_info(&opt->anc);\r
-  clear_opt_exact_info(&opt->exb);\r
-  clear_opt_exact_info(&opt->exm);\r
-  clear_opt_exact_info(&opt->expr);\r
-  clear_opt_map_info(&opt->map);\r
-}\r
-\r
-static void\r
-copy_node_opt_info(NodeOptInfo* to, NodeOptInfo* from)\r
-{\r
-  *to = *from;\r
-}\r
-\r
-static void\r
-concat_left_node_opt_info(OnigEncoding enc, NodeOptInfo* to, NodeOptInfo* add)\r
-{\r
-  int exb_reach, exm_reach;\r
-  OptAncInfo tanc;\r
-\r
-  concat_opt_anc_info(&tanc, &to->anc, &add->anc, to->len.max, add->len.max);\r
-  copy_opt_anc_info(&to->anc, &tanc);\r
-\r
-  if (add->exb.len > 0 && to->len.max == 0) {\r
-    concat_opt_anc_info(&tanc, &to->anc, &add->exb.anc,\r
-                       to->len.max, add->len.max);\r
-    copy_opt_anc_info(&add->exb.anc, &tanc);\r
-  }\r
-\r
-  if (add->map.value > 0 && to->len.max == 0) {\r
-    if (add->map.mmd.max == 0)\r
-      add->map.anc.left_anchor |= to->anc.left_anchor;\r
-  }\r
-\r
-  exb_reach = to->exb.reach_end;\r
-  exm_reach = to->exm.reach_end;\r
-\r
-  if (add->len.max != 0)\r
-    to->exb.reach_end = to->exm.reach_end = 0;\r
-\r
-  if (add->exb.len > 0) {\r
-    if (exb_reach) {\r
-      concat_opt_exact_info(&to->exb, &add->exb, enc);\r
-      clear_opt_exact_info(&add->exb);\r
-    }\r
-    else if (exm_reach) {\r
-      concat_opt_exact_info(&to->exm, &add->exb, enc);\r
-      clear_opt_exact_info(&add->exb);\r
-    }\r
-  }\r
-  select_opt_exact_info(enc, &to->exm, &add->exb);\r
-  select_opt_exact_info(enc, &to->exm, &add->exm);\r
-\r
-  if (to->expr.len > 0) {\r
-    if (add->len.max > 0) {\r
-      if (to->expr.len > (int )add->len.max)\r
-       to->expr.len = add->len.max;\r
-\r
-      if (to->expr.mmd.max == 0)\r
-       select_opt_exact_info(enc, &to->exb, &to->expr);\r
-      else\r
-       select_opt_exact_info(enc, &to->exm, &to->expr);\r
-    }\r
-  }\r
-  else if (add->expr.len > 0) {\r
-    copy_opt_exact_info(&to->expr, &add->expr);\r
-  }\r
-\r
-  select_opt_map_info(&to->map, &add->map);\r
-\r
-  add_mml(&to->len, &add->len);\r
-}\r
-\r
-static void\r
-alt_merge_node_opt_info(NodeOptInfo* to, NodeOptInfo* add, OptEnv* env)\r
-{\r
-  alt_merge_opt_anc_info  (&to->anc,  &add->anc);\r
-  alt_merge_opt_exact_info(&to->exb,  &add->exb, env);\r
-  alt_merge_opt_exact_info(&to->exm,  &add->exm, env);\r
-  alt_merge_opt_exact_info(&to->expr, &add->expr, env);\r
-  alt_merge_opt_map_info(env->enc, &to->map,  &add->map);\r
-\r
-  alt_merge_mml(&to->len, &add->len);\r
-}\r
-\r
-\r
-#define MAX_NODE_OPT_INFO_REF_COUNT    5\r
-\r
-static int\r
-optimize_node_left(Node* node, NodeOptInfo* opt, OptEnv* env)\r
-{\r
-  int type;\r
-  int r = 0;\r
-\r
-  clear_node_opt_info(opt);\r
-  set_bound_node_opt_info(opt, &env->mmd);\r
-\r
-  type = NTYPE(node);\r
-  switch (type) {\r
-  case NT_LIST:\r
-    {\r
-      OptEnv nenv;\r
-      NodeOptInfo nopt;\r
-      Node* nd = node;\r
-\r
-      copy_opt_env(&nenv, env);\r
-      do {\r
-       r = optimize_node_left(NCAR(nd), &nopt, &nenv);\r
-       if (r == 0) {\r
-         add_mml(&nenv.mmd, &nopt.len);\r
-         concat_left_node_opt_info(env->enc, opt, &nopt);\r
-       }\r
-      } while (r == 0 && IS_NOT_NULL(nd = NCDR(nd)));\r
-    }\r
-    break;\r
-\r
-  case NT_ALT:\r
-    {\r
-      NodeOptInfo nopt;\r
-      Node* nd = node;\r
-\r
-      do {\r
-       r = optimize_node_left(NCAR(nd), &nopt, env);\r
-       if (r == 0) {\r
-         if (nd == node) copy_node_opt_info(opt, &nopt);\r
-         else            alt_merge_node_opt_info(opt, &nopt, env);\r
-       }\r
-      } while ((r == 0) && IS_NOT_NULL(nd = NCDR(nd)));\r
-    }\r
-    break;\r
-\r
-  case NT_STR:\r
-    {\r
-      StrNode* sn = NSTR(node);\r
-      int slen = (int)(sn->end - sn->s);\r
-      int is_raw = NSTRING_IS_RAW(node);\r
-\r
-      if (! NSTRING_IS_AMBIG(node)) {\r
-       concat_opt_exact_info_str(&opt->exb, sn->s, sn->end,\r
-                                 NSTRING_IS_RAW(node), env->enc);\r
-       if (slen > 0) {\r
-         add_char_opt_map_info(&opt->map, *(sn->s), env->enc);\r
-       }\r
-        set_mml(&opt->len, slen, slen);\r
-      }\r
-      else {\r
-        int max;\r
-\r
-       if (NSTRING_IS_DONT_GET_OPT_INFO(node)) {\r
-          int n = onigenc_strlen(env->enc, sn->s, sn->end);\r
-          max = ONIGENC_MBC_MAXLEN_DIST(env->enc) * n;\r
-       }\r
-       else {\r
-         concat_opt_exact_info_str(&opt->exb, sn->s, sn->end,\r
-                                   is_raw, env->enc);\r
-         opt->exb.ignore_case = 1;\r
-\r
-         if (slen > 0) {\r
-           r = add_char_amb_opt_map_info(&opt->map, sn->s, sn->end,\r
-                                         env->enc, env->case_fold_flag);\r
-           if (r != 0) break;\r
-         }\r
-\r
-         max = slen;\r
-       }\r
-\r
-        set_mml(&opt->len, slen, max);\r
-      }\r
-\r
-      if (opt->exb.len == slen)\r
-       opt->exb.reach_end = 1;\r
-    }\r
-    break;\r
-\r
-  case NT_CCLASS:\r
-    {\r
-      int i, z;\r
-      CClassNode* cc = NCCLASS(node);\r
-\r
-      /* no need to check ignore case. (setted in setup_tree()) */\r
-\r
-      if (IS_NOT_NULL(cc->mbuf) || IS_NCCLASS_NOT(cc)) {\r
-        OnigDistance min = ONIGENC_MBC_MINLEN(env->enc);\r
-       OnigDistance max = ONIGENC_MBC_MAXLEN_DIST(env->enc);\r
-\r
-       set_mml(&opt->len, min, max);\r
-      }\r
-      else {\r
-        for (i = 0; i < SINGLE_BYTE_SIZE; i++) {\r
-          z = BITSET_AT(cc->bs, i);\r
-          if ((z && !IS_NCCLASS_NOT(cc)) || (!z && IS_NCCLASS_NOT(cc))) {\r
-            add_char_opt_map_info(&opt->map, (UChar )i, env->enc);\r
-          }\r
-        }\r
-       set_mml(&opt->len, 1, 1);\r
-      }\r
-    }\r
-    break;\r
-\r
-  case NT_CTYPE:\r
-    {\r
-      int i, min, max;\r
-\r
-      max = ONIGENC_MBC_MAXLEN_DIST(env->enc);\r
-\r
-      if (max == 1) {\r
-        min = 1;\r
-\r
-       switch (NCTYPE(node)->ctype) {\r
-       case ONIGENC_CTYPE_WORD:\r
-         if (NCTYPE(node)->not != 0) {\r
-           for (i = 0; i < SINGLE_BYTE_SIZE; i++) {\r
-             if (! ONIGENC_IS_CODE_WORD(env->enc, i)) {\r
-               add_char_opt_map_info(&opt->map, (UChar )i, env->enc);\r
-             }\r
-           }\r
-         }\r
-         else {\r
-           for (i = 0; i < SINGLE_BYTE_SIZE; i++) {\r
-             if (ONIGENC_IS_CODE_WORD(env->enc, i)) {\r
-               add_char_opt_map_info(&opt->map, (UChar )i, env->enc);\r
-             }\r
-           }\r
-         }\r
-         break;\r
-       }\r
-      }\r
-      else {\r
-        min = ONIGENC_MBC_MINLEN(env->enc);\r
-      }\r
-      set_mml(&opt->len, min, max);\r
-    }\r
-    break;\r
-\r
-  case NT_CANY:\r
-    {\r
-      OnigDistance min = ONIGENC_MBC_MINLEN(env->enc);\r
-      OnigDistance max = ONIGENC_MBC_MAXLEN_DIST(env->enc);\r
-      set_mml(&opt->len, min, max);\r
-    }\r
-    break;\r
-\r
-  case NT_ANCHOR:\r
-    switch (NANCHOR(node)->type) {\r
-    case ANCHOR_BEGIN_BUF:\r
-    case ANCHOR_BEGIN_POSITION:\r
-    case ANCHOR_BEGIN_LINE:\r
-    case ANCHOR_END_BUF:\r
-    case ANCHOR_SEMI_END_BUF:\r
-    case ANCHOR_END_LINE:\r
-      add_opt_anc_info(&opt->anc, NANCHOR(node)->type);\r
-      break;\r
-\r
-    case ANCHOR_PREC_READ:\r
-      {\r
-       NodeOptInfo nopt;\r
-\r
-       r = optimize_node_left(NANCHOR(node)->target, &nopt, env);\r
-       if (r == 0) {\r
-         if (nopt.exb.len > 0)\r
-           copy_opt_exact_info(&opt->expr, &nopt.exb);\r
-         else if (nopt.exm.len > 0)\r
-           copy_opt_exact_info(&opt->expr, &nopt.exm);\r
-\r
-         opt->expr.reach_end = 0;\r
-\r
-         if (nopt.map.value > 0)\r
-           copy_opt_map_info(&opt->map, &nopt.map);\r
-       }\r
-      }\r
-      break;\r
-\r
-    case ANCHOR_PREC_READ_NOT:\r
-    case ANCHOR_LOOK_BEHIND: /* Sorry, I can't make use of it. */\r
-    case ANCHOR_LOOK_BEHIND_NOT:\r
-      break;\r
-    }\r
-    break;\r
-\r
-  case NT_BREF:\r
-    {\r
-      int i;\r
-      int* backs;\r
-      OnigDistance min, max, tmin, tmax;\r
-      Node** nodes = SCANENV_MEM_NODES(env->scan_env);\r
-      BRefNode* br = NBREF(node);\r
-\r
-      if (br->state & NST_RECURSION) {\r
-       set_mml(&opt->len, 0, ONIG_INFINITE_DISTANCE);\r
-       break;\r
-      }\r
-      backs = BACKREFS_P(br);\r
-      r = get_min_match_length(nodes[backs[0]], &min, env->scan_env);\r
-      if (r != 0) break;\r
-      r = get_max_match_length(nodes[backs[0]], &max, env->scan_env);\r
-      if (r != 0) break;\r
-      for (i = 1; i < br->back_num; i++) {\r
-       r = get_min_match_length(nodes[backs[i]], &tmin, env->scan_env);\r
-       if (r != 0) break;\r
-       r = get_max_match_length(nodes[backs[i]], &tmax, env->scan_env);\r
-       if (r != 0) break;\r
-       if (min > tmin) min = tmin;\r
-       if (max < tmax) max = tmax;\r
-      }\r
-      if (r == 0) set_mml(&opt->len, min, max);\r
-    }\r
-    break;\r
-\r
-#ifdef USE_SUBEXP_CALL\r
-  case NT_CALL:\r
-    if (IS_CALL_RECURSION(NCALL(node)))\r
-      set_mml(&opt->len, 0, ONIG_INFINITE_DISTANCE);\r
-    else {\r
-      OnigOptionType save = env->options;\r
-      env->options = NENCLOSE(NCALL(node)->target)->option;\r
-      r = optimize_node_left(NCALL(node)->target, opt, env);\r
-      env->options = save;\r
-    }\r
-    break;\r
-#endif\r
-\r
-  case NT_QTFR:\r
-    {\r
-      int i;\r
-      OnigDistance min, max;\r
-      NodeOptInfo nopt;\r
-      QtfrNode* qn = NQTFR(node);\r
-\r
-      r = optimize_node_left(qn->target, &nopt, env);\r
-      if (r) break;\r
-\r
-      if (qn->lower == 0 && IS_REPEAT_INFINITE(qn->upper)) {\r
-       if (env->mmd.max == 0 &&\r
-           NTYPE(qn->target) == NT_CANY && qn->greedy) {\r
-         if (IS_MULTILINE(env->options))\r
-           add_opt_anc_info(&opt->anc, ANCHOR_ANYCHAR_STAR_ML);\r
-         else\r
-           add_opt_anc_info(&opt->anc, ANCHOR_ANYCHAR_STAR);\r
-       }\r
-      }\r
-      else {\r
-       if (qn->lower > 0) {\r
-         copy_node_opt_info(opt, &nopt);\r
-         if (nopt.exb.len > 0) {\r
-           if (nopt.exb.reach_end) {\r
-             for (i = 2; i <= qn->lower &&\r
-                         ! is_full_opt_exact_info(&opt->exb); i++) {\r
-               concat_opt_exact_info(&opt->exb, &nopt.exb, env->enc);\r
-             }\r
-             if (i < qn->lower) {\r
-               opt->exb.reach_end = 0;\r
-             }\r
-           }\r
-         }\r
-\r
-         if (qn->lower != qn->upper) {\r
-           opt->exb.reach_end = 0;\r
-           opt->exm.reach_end = 0;\r
-         }\r
-         if (qn->lower > 1)\r
-           opt->exm.reach_end = 0;\r
-       }\r
-      }\r
-\r
-      min = distance_multiply(nopt.len.min, qn->lower);\r
-      if (IS_REPEAT_INFINITE(qn->upper))\r
-       max = (nopt.len.max > 0 ? ONIG_INFINITE_DISTANCE : 0);\r
-      else\r
-       max = distance_multiply(nopt.len.max, qn->upper);\r
-\r
-      set_mml(&opt->len, min, max);\r
-    }\r
-    break;\r
-\r
-  case NT_ENCLOSE:\r
-    {\r
-      EncloseNode* en = NENCLOSE(node);\r
-\r
-      switch (en->type) {\r
-      case ENCLOSE_OPTION:\r
-       {\r
-         OnigOptionType save = env->options;\r
-\r
-         env->options = en->option;\r
-         r = optimize_node_left(en->target, opt, env);\r
-         env->options = save;\r
-       }\r
-       break;\r
-\r
-      case ENCLOSE_MEMORY:\r
-#ifdef USE_SUBEXP_CALL\r
-       en->opt_count++;\r
-       if (en->opt_count > MAX_NODE_OPT_INFO_REF_COUNT) {\r
-         OnigDistance min, max;\r
-\r
-         min = 0;\r
-         max = ONIG_INFINITE_DISTANCE;\r
-         if (IS_ENCLOSE_MIN_FIXED(en)) min = en->min_len;\r
-         if (IS_ENCLOSE_MAX_FIXED(en)) max = en->max_len;\r
-         set_mml(&opt->len, min, max);\r
-       }\r
-       else\r
-#endif\r
-       {\r
-         r = optimize_node_left(en->target, opt, env);\r
-\r
-         if (is_set_opt_anc_info(&opt->anc, ANCHOR_ANYCHAR_STAR_MASK)) {\r
-           if (BIT_STATUS_AT(env->scan_env->backrefed_mem, en->regnum))\r
-             remove_opt_anc_info(&opt->anc, ANCHOR_ANYCHAR_STAR_MASK);\r
-         }\r
-       }\r
-       break;\r
-\r
-      case ENCLOSE_STOP_BACKTRACK:\r
-       r = optimize_node_left(en->target, opt, env);\r
-       break;\r
-      }\r
-    }\r
-    break;\r
-\r
-  default:\r
-#ifdef ONIG_DEBUG\r
-    fprintf(stderr, "optimize_node_left: undefined node type %d\n",\r
-           NTYPE(node));\r
-#endif\r
-    r = ONIGERR_TYPE_BUG;\r
-    break;\r
-  }\r
-\r
-  return r;\r
-}\r
-\r
-static int\r
-set_optimize_exact_info(regex_t* reg, OptExactInfo* e)\r
-{\r
-  int r;\r
-\r
-  if (e->len == 0) return 0;\r
-\r
-  if (e->ignore_case) {\r
-    reg->exact = (UChar* )xmalloc(e->len);\r
-    CHECK_NULL_RETURN_MEMERR(reg->exact);\r
-    xmemcpy(reg->exact, e->s, e->len);\r
-    reg->exact_end = reg->exact + e->len;\r
-    reg->optimize = ONIG_OPTIMIZE_EXACT_IC;\r
-  }\r
-  else {\r
-    int allow_reverse;\r
-\r
-    reg->exact = str_dup(e->s, e->s + e->len);\r
-    CHECK_NULL_RETURN_MEMERR(reg->exact);\r
-    reg->exact_end = reg->exact + e->len;\r
\r
-    allow_reverse =\r
-       ONIGENC_IS_ALLOWED_REVERSE_MATCH(reg->enc, reg->exact, reg->exact_end);\r
-\r
-    if (e->len >= 3 || (e->len >= 2 && allow_reverse)) {\r
-      r = set_bm_skip(reg->exact, reg->exact_end, reg->enc,\r
-                     reg->map, &(reg->int_map));\r
-      if (r) return r;\r
-\r
-      reg->optimize = (allow_reverse != 0\r
-                      ? ONIG_OPTIMIZE_EXACT_BM : ONIG_OPTIMIZE_EXACT_BM_NOT_REV);\r
-    }\r
-    else {\r
-      reg->optimize = ONIG_OPTIMIZE_EXACT;\r
-    }\r
-  }\r
-\r
-  reg->dmin = e->mmd.min;\r
-  reg->dmax = e->mmd.max;\r
-\r
-  if (reg->dmin != ONIG_INFINITE_DISTANCE) {\r
-    reg->threshold_len = reg->dmin + (int)(reg->exact_end - reg->exact);\r
-  }\r
-\r
-  return 0;\r
-}\r
-\r
-static void\r
-set_optimize_map_info(regex_t* reg, OptMapInfo* m)\r
-{\r
-  int i;\r
-\r
-  for (i = 0; i < ONIG_CHAR_TABLE_SIZE; i++)\r
-    reg->map[i] = m->map[i];\r
-\r
-  reg->optimize   = ONIG_OPTIMIZE_MAP;\r
-  reg->dmin       = m->mmd.min;\r
-  reg->dmax       = m->mmd.max;\r
-\r
-  if (reg->dmin != ONIG_INFINITE_DISTANCE) {\r
-    reg->threshold_len = reg->dmin + 1;\r
-  }\r
-}\r
-\r
-static void\r
-set_sub_anchor(regex_t* reg, OptAncInfo* anc)\r
-{\r
-  reg->sub_anchor |= anc->left_anchor  & ANCHOR_BEGIN_LINE;\r
-  reg->sub_anchor |= anc->right_anchor & ANCHOR_END_LINE;\r
-}\r
-\r
-#ifdef ONIG_DEBUG\r
-static void print_optimize_info(FILE* f, regex_t* reg);\r
-#endif\r
-\r
-static int\r
-set_optimize_info_from_tree(Node* node, regex_t* reg, ScanEnv* scan_env)\r
-{\r
-\r
-  int r;\r
-  NodeOptInfo opt;\r
-  OptEnv env;\r
-\r
-  env.enc            = reg->enc;\r
-  env.options        = reg->options;\r
-  env.case_fold_flag = reg->case_fold_flag;\r
-  env.scan_env   = scan_env;\r
-  clear_mml(&env.mmd);\r
-\r
-  r = optimize_node_left(node, &opt, &env);\r
-  if (r) return r;\r
-\r
-  reg->anchor = opt.anc.left_anchor & (ANCHOR_BEGIN_BUF |\r
-        ANCHOR_BEGIN_POSITION | ANCHOR_ANYCHAR_STAR | ANCHOR_ANYCHAR_STAR_ML);\r
-\r
-  reg->anchor |= opt.anc.right_anchor & (ANCHOR_END_BUF | ANCHOR_SEMI_END_BUF);\r
-\r
-  if (reg->anchor & (ANCHOR_END_BUF | ANCHOR_SEMI_END_BUF)) {\r
-    reg->anchor_dmin = opt.len.min;\r
-    reg->anchor_dmax = opt.len.max;\r
-  }\r
-\r
-  if (opt.exb.len > 0 || opt.exm.len > 0) {\r
-    select_opt_exact_info(reg->enc, &opt.exb, &opt.exm);\r
-    if (opt.map.value > 0 &&\r
-       comp_opt_exact_or_map_info(&opt.exb, &opt.map) > 0) {\r
-      goto set_map;\r
-    }\r
-    else {\r
-      r = set_optimize_exact_info(reg, &opt.exb);\r
-      set_sub_anchor(reg, &opt.exb.anc);\r
-    }\r
-  }\r
-  else if (opt.map.value > 0) {\r
-  set_map:\r
-    set_optimize_map_info(reg, &opt.map);\r
-    set_sub_anchor(reg, &opt.map.anc);\r
-  }\r
-  else {\r
-    reg->sub_anchor |= opt.anc.left_anchor & ANCHOR_BEGIN_LINE;\r
-    if (opt.len.max == 0)\r
-      reg->sub_anchor |= opt.anc.right_anchor & ANCHOR_END_LINE;\r
-  }\r
-\r
-#if defined(ONIG_DEBUG_COMPILE) || defined(ONIG_DEBUG_MATCH)\r
-  print_optimize_info(stderr, reg);\r
-#endif\r
-  return r;\r
-}\r
-\r
-static void\r
-clear_optimize_info(regex_t* reg)\r
-{\r
-  reg->optimize      = ONIG_OPTIMIZE_NONE;\r
-  reg->anchor        = 0;\r
-  reg->anchor_dmin   = 0;\r
-  reg->anchor_dmax   = 0;\r
-  reg->sub_anchor    = 0;\r
-  reg->exact_end     = (UChar* )NULL;\r
-  reg->threshold_len = 0;\r
-  if (IS_NOT_NULL(reg->exact)) {\r
-    xfree(reg->exact);\r
-    reg->exact = (UChar* )NULL;\r
-  }\r
-}\r
-\r
-#ifdef ONIG_DEBUG\r
-\r
-static void print_enc_string(FILE* fp, OnigEncoding enc,\r
-                            const UChar *s, const UChar *end)\r
-{\r
-  fprintf(fp, "\nPATTERN: /");\r
-\r
-  if (ONIGENC_MBC_MINLEN(enc) > 1) {\r
-    const UChar *p;\r
-    OnigCodePoint code;\r
-\r
-    p = s;\r
-    while (p < end) {\r
-      code = ONIGENC_MBC_TO_CODE(enc, p, end);\r
-      if (code >= 0x80) {\r
-       fprintf(fp, " 0x%04x ", (int )code);\r
-      }\r
-      else {\r
-       fputc((int )code, fp);\r
-      }\r
-\r
-      p += enclen(enc, p);\r
-    }\r
-  }\r
-  else {\r
-    while (s < end) {\r
-      fputc((int )*s, fp);\r
-      s++;\r
-    }\r
-  }\r
-\r
-  fprintf(fp, "/\n");\r
-}\r
-\r
-static void\r
-print_distance_range(FILE* f, OnigDistance a, OnigDistance b)\r
-{\r
-  if (a == ONIG_INFINITE_DISTANCE)\r
-    fputs("inf", f);\r
-  else\r
-    fprintf(f, "(%u)", a);\r
-\r
-  fputs("-", f);\r
-\r
-  if (b == ONIG_INFINITE_DISTANCE)\r
-    fputs("inf", f);\r
-  else\r
-    fprintf(f, "(%u)", b);\r
-}\r
-\r
-static void\r
-print_anchor(FILE* f, int anchor)\r
-{\r
-  int q = 0;\r
-\r
-  fprintf(f, "[");\r
-\r
-  if (anchor & ANCHOR_BEGIN_BUF) {\r
-    fprintf(f, "begin-buf");\r
-    q = 1;\r
-  }\r
-  if (anchor & ANCHOR_BEGIN_LINE) {\r
-    if (q) fprintf(f, ", ");\r
-    q = 1;\r
-    fprintf(f, "begin-line");\r
-  }\r
-  if (anchor & ANCHOR_BEGIN_POSITION) {\r
-    if (q) fprintf(f, ", ");\r
-    q = 1;\r
-    fprintf(f, "begin-pos");\r
-  }\r
-  if (anchor & ANCHOR_END_BUF) {\r
-    if (q) fprintf(f, ", ");\r
-    q = 1;\r
-    fprintf(f, "end-buf");\r
-  }\r
-  if (anchor & ANCHOR_SEMI_END_BUF) {\r
-    if (q) fprintf(f, ", ");\r
-    q = 1;\r
-    fprintf(f, "semi-end-buf");\r
-  }\r
-  if (anchor & ANCHOR_END_LINE) {\r
-    if (q) fprintf(f, ", ");\r
-    q = 1;\r
-    fprintf(f, "end-line");\r
-  }\r
-  if (anchor & ANCHOR_ANYCHAR_STAR) {\r
-    if (q) fprintf(f, ", ");\r
-    q = 1;\r
-    fprintf(f, "anychar-star");\r
-  }\r
-  if (anchor & ANCHOR_ANYCHAR_STAR_ML) {\r
-    if (q) fprintf(f, ", ");\r
-    fprintf(f, "anychar-star-pl");\r
-  }\r
-\r
-  fprintf(f, "]");\r
-}\r
-\r
-static void\r
-print_optimize_info(FILE* f, regex_t* reg)\r
-{\r
-  static const char* on[] = { "NONE", "EXACT", "EXACT_BM", "EXACT_BM_NOT_REV",\r
-                              "EXACT_IC", "MAP" };\r
-\r
-  fprintf(f, "optimize: %s\n", on[reg->optimize]);\r
-  fprintf(f, "  anchor: "); print_anchor(f, reg->anchor);\r
-  if ((reg->anchor & ANCHOR_END_BUF_MASK) != 0)\r
-    print_distance_range(f, reg->anchor_dmin, reg->anchor_dmax);\r
-  fprintf(f, "\n");\r
-\r
-  if (reg->optimize) {\r
-    fprintf(f, "  sub anchor: "); print_anchor(f, reg->sub_anchor);\r
-    fprintf(f, "\n");\r
-  }\r
-  fprintf(f, "\n");\r
-\r
-  if (reg->exact) {\r
-    UChar *p;\r
-    fprintf(f, "exact: [");\r
-    for (p = reg->exact; p < reg->exact_end; p++) {\r
-      fputc(*p, f);\r
-    }\r
-    fprintf(f, "]: length: %d\n", (reg->exact_end - reg->exact));\r
-  }\r
-  else if (reg->optimize & ONIG_OPTIMIZE_MAP) {\r
-    int c, i, n = 0;\r
-\r
-    for (i = 0; i < ONIG_CHAR_TABLE_SIZE; i++)\r
-      if (reg->map[i]) n++;\r
-\r
-    fprintf(f, "map: n=%d\n", n);\r
-    if (n > 0) {\r
-      c = 0;\r
-      fputc('[', f);\r
-      for (i = 0; i < ONIG_CHAR_TABLE_SIZE; i++) {\r
-       if (reg->map[i] != 0) {\r
-          if (c > 0)  fputs(", ", f);\r
-          c++;\r
-          if (ONIGENC_MBC_MAXLEN(reg->enc) == 1 &&\r
-              ONIGENC_IS_CODE_PRINT(reg->enc, (OnigCodePoint )i))\r
-            fputc(i, f);\r
-          else\r
-            fprintf(f, "%d", i);\r
-        }\r
-      }\r
-      fprintf(f, "]\n");\r
-    }\r
-  }\r
-}\r
-#endif /* ONIG_DEBUG */\r
-\r
-\r
-extern void\r
-onig_free_body(regex_t* reg)\r
-{\r
-  if (IS_NOT_NULL(reg)) {\r
-    if (IS_NOT_NULL(reg->p))                xfree(reg->p);\r
-    if (IS_NOT_NULL(reg->exact))            xfree(reg->exact);\r
-    if (IS_NOT_NULL(reg->int_map))          xfree(reg->int_map);\r
-    if (IS_NOT_NULL(reg->int_map_backward)) xfree(reg->int_map_backward);\r
-    if (IS_NOT_NULL(reg->repeat_range))     xfree(reg->repeat_range);\r
-    if (IS_NOT_NULL(reg->chain))            onig_free(reg->chain);\r
-\r
-#ifdef USE_NAMED_GROUP\r
-    onig_names_free(reg);\r
-#endif\r
-  }\r
-}\r
-\r
-extern void\r
-onig_free(regex_t* reg)\r
-{\r
-  if (IS_NOT_NULL(reg)) {\r
-    onig_free_body(reg);\r
-    xfree(reg);\r
-  }\r
-}\r
-\r
-#define REGEX_TRANSFER(to,from) do {\\r
-  (to)->state = ONIG_STATE_MODIFY;\\r
-  onig_free_body(to);\\r
-  xmemcpy(to, from, sizeof(regex_t));\\r
-  xfree(from);\\r
-} while (0)\r
-\r
-extern void\r
-onig_transfer(regex_t* to, regex_t* from)\r
-{\r
-  THREAD_ATOMIC_START;\r
-  REGEX_TRANSFER(to, from);\r
-  THREAD_ATOMIC_END;\r
-}\r
-\r
-#define REGEX_CHAIN_HEAD(reg) do {\\r
-  while (IS_NOT_NULL((reg)->chain)) {\\r
-    (reg) = (reg)->chain;\\r
-  }\\r
-} while (0)\r
-\r
-extern void\r
-onig_chain_link_add(regex_t* to, regex_t* add)\r
-{\r
-  THREAD_ATOMIC_START;\r
-  REGEX_CHAIN_HEAD(to);\r
-  to->chain = add;\r
-  THREAD_ATOMIC_END;\r
-}\r
-\r
-extern void\r
-onig_chain_reduce(regex_t* reg)\r
-{\r
-  regex_t *head, *prev;\r
-\r
-  prev = reg;\r
-  head = prev->chain;\r
-  if (IS_NOT_NULL(head)) {\r
-    reg->state = ONIG_STATE_MODIFY;\r
-    while (IS_NOT_NULL(head->chain)) {\r
-      prev = head;\r
-      head = head->chain;\r
-    }\r
-    prev->chain = (regex_t* )NULL;\r
-    REGEX_TRANSFER(reg, head);\r
-  }\r
-}\r
-\r
-#ifdef ONIG_DEBUG\r
-static void print_compiled_byte_code_list P_((FILE* f, regex_t* reg));\r
-#endif\r
-#ifdef ONIG_DEBUG_PARSE_TREE\r
-static void print_tree P_((FILE* f, Node* node));\r
-#endif\r
-\r
-extern int\r
-onig_compile(regex_t* reg, const UChar* pattern, const UChar* pattern_end,\r
-             OnigErrorInfo* einfo)\r
-{\r
-#define COMPILE_INIT_SIZE  20\r
-\r
-  int r, init_size;\r
-  Node*  root;\r
-  ScanEnv  scan_env;\r
-#ifdef USE_SUBEXP_CALL\r
-  UnsetAddrList  uslist;\r
-#endif\r
-\r
-  if (IS_NOT_NULL(einfo)) einfo->par = (UChar* )NULL;\r
-\r
-  reg->state = ONIG_STATE_COMPILING;\r
-\r
-#ifdef ONIG_DEBUG\r
-  print_enc_string(stderr, reg->enc, pattern, pattern_end);\r
-#endif\r
-\r
-  if (reg->alloc == 0) {\r
-    init_size = ((int)(pattern_end - pattern)) * 2;\r
-    if (init_size <= 0) init_size = COMPILE_INIT_SIZE;\r
-    r = BBUF_INIT(reg, init_size);\r
-    if (r != 0) goto end;\r
-  }\r
-  else\r
-    reg->used = 0;\r
-\r
-  reg->num_mem            = 0;\r
-  reg->num_repeat         = 0;\r
-  reg->num_null_check     = 0;\r
-  reg->repeat_range_alloc = 0;\r
-  reg->repeat_range       = (OnigRepeatRange* )NULL;\r
-#ifdef USE_COMBINATION_EXPLOSION_CHECK\r
-  reg->num_comb_exp_check = 0;\r
-#endif\r
-\r
-  r = onig_parse_make_tree(&root, pattern, pattern_end, reg, &scan_env);\r
-  if (r != 0) goto err;\r
-\r
-#ifdef USE_NAMED_GROUP\r
-  /* mixed use named group and no-named group */\r
-  if (scan_env.num_named > 0 &&\r
-      IS_SYNTAX_BV(scan_env.syntax, ONIG_SYN_CAPTURE_ONLY_NAMED_GROUP) &&\r
-      !ONIG_IS_OPTION_ON(reg->options, ONIG_OPTION_CAPTURE_GROUP)) {\r
-    if (scan_env.num_named != scan_env.num_mem)\r
-      r = disable_noname_group_capture(&root, reg, &scan_env);\r
-    else\r
-      r = numbered_ref_check(root);\r
-\r
-    if (r != 0) goto err;\r
-  }\r
-#endif\r
-\r
-#ifdef USE_SUBEXP_CALL\r
-  if (scan_env.num_call > 0) {\r
-    r = unset_addr_list_init(&uslist, scan_env.num_call);\r
-    if (r != 0) goto err;\r
-    scan_env.unset_addr_list = &uslist;\r
-    r = setup_subexp_call(root, &scan_env);\r
-    if (r != 0) goto err_unset;\r
-    r = subexp_recursive_check_trav(root, &scan_env);\r
-    if (r  < 0) goto err_unset;\r
-    r = subexp_inf_recursive_check_trav(root, &scan_env);\r
-    if (r != 0) goto err_unset;\r
-\r
-    reg->num_call = scan_env.num_call;\r
-  }\r
-  else\r
-    reg->num_call = 0;\r
-#endif\r
-\r
-  r = setup_tree(root, reg, 0, &scan_env);\r
-  if (r != 0) goto err_unset;\r
-\r
-#ifdef ONIG_DEBUG_PARSE_TREE\r
-  print_tree(stderr, root);\r
-#endif\r
-\r
-  reg->capture_history  = scan_env.capture_history;\r
-  reg->bt_mem_start     = scan_env.bt_mem_start;\r
-  reg->bt_mem_start    |= reg->capture_history;\r
-  if (IS_FIND_CONDITION(reg->options))\r
-    BIT_STATUS_ON_ALL(reg->bt_mem_end);\r
-  else {\r
-    reg->bt_mem_end  = scan_env.bt_mem_end;\r
-    reg->bt_mem_end |= reg->capture_history;\r
-  }\r
-\r
-#ifdef USE_COMBINATION_EXPLOSION_CHECK\r
-  if (scan_env.backrefed_mem == 0\r
-#ifdef USE_SUBEXP_CALL\r
-      || scan_env.num_call == 0\r
-#endif\r
-      ) {\r
-    setup_comb_exp_check(root, 0, &scan_env);\r
-#ifdef USE_SUBEXP_CALL\r
-    if (scan_env.has_recursion != 0) {\r
-      scan_env.num_comb_exp_check = 0;\r
-    }\r
-    else\r
-#endif\r
-    if (scan_env.comb_exp_max_regnum > 0) {\r
-      int i;\r
-      for (i = 1; i <= scan_env.comb_exp_max_regnum; i++) {\r
-       if (BIT_STATUS_AT(scan_env.backrefed_mem, i) != 0) {\r
-         scan_env.num_comb_exp_check = 0;\r
-         break;\r
-       }\r
-      }\r
-    }\r
-  }\r
-\r
-  reg->num_comb_exp_check = scan_env.num_comb_exp_check;\r
-#endif\r
-\r
-  clear_optimize_info(reg);\r
-#ifndef ONIG_DONT_OPTIMIZE\r
-  r = set_optimize_info_from_tree(root, reg, &scan_env);\r
-  if (r != 0) goto err_unset;\r
-#endif\r
-\r
-  if (IS_NOT_NULL(scan_env.mem_nodes_dynamic)) {\r
-    xfree(scan_env.mem_nodes_dynamic);\r
-    scan_env.mem_nodes_dynamic = (Node** )NULL;\r
-  }\r
-\r
-  r = compile_tree(root, reg);\r
-  if (r == 0) {\r
-    r = add_opcode(reg, OP_END);\r
-#ifdef USE_SUBEXP_CALL\r
-    if (scan_env.num_call > 0) {\r
-      r = unset_addr_list_fix(&uslist, reg);\r
-      unset_addr_list_end(&uslist);\r
-      if (r) goto err;\r
-    }\r
-#endif\r
-\r
-    if ((reg->num_repeat != 0) || (reg->bt_mem_end != 0))\r
-      reg->stack_pop_level = STACK_POP_LEVEL_ALL;\r
-    else {\r
-      if (reg->bt_mem_start != 0)\r
-       reg->stack_pop_level = STACK_POP_LEVEL_MEM_START;\r
-      else\r
-       reg->stack_pop_level = STACK_POP_LEVEL_FREE;\r
-    }\r
-  }\r
-#ifdef USE_SUBEXP_CALL\r
-  else if (scan_env.num_call > 0) {\r
-    unset_addr_list_end(&uslist);\r
-  }\r
-#endif\r
-  onig_node_free(root);\r
-\r
-#ifdef ONIG_DEBUG_COMPILE\r
-#ifdef USE_NAMED_GROUP\r
-  onig_print_names(stderr, reg);\r
-#endif\r
-  print_compiled_byte_code_list(stderr, reg);\r
-#endif\r
-\r
- end:\r
-  reg->state = ONIG_STATE_NORMAL;\r
-  return r;\r
-\r
- err_unset:\r
-#ifdef USE_SUBEXP_CALL\r
-  if (scan_env.num_call > 0) {\r
-    unset_addr_list_end(&uslist);\r
-  }\r
-#endif\r
- err:\r
-  if (IS_NOT_NULL(scan_env.error)) {\r
-    if (IS_NOT_NULL(einfo)) {\r
-      einfo->enc     = scan_env.enc;\r
-      einfo->par     = scan_env.error;\r
-      einfo->par_end = scan_env.error_end;\r
-    }\r
-  }\r
-\r
-  onig_node_free(root);\r
-  if (IS_NOT_NULL(scan_env.mem_nodes_dynamic))\r
-      xfree(scan_env.mem_nodes_dynamic);\r
-  return r;\r
-}\r
-\r
-#ifdef USE_RECOMPILE_API\r
-extern int\r
-onig_recompile(regex_t* reg, const UChar* pattern, const UChar* pattern_end,\r
-           OnigOptionType option, OnigEncoding enc, OnigSyntaxType* syntax,\r
-           OnigErrorInfo* einfo)\r
-{\r
-  int r;\r
-  regex_t *new_reg;\r
-\r
-  r = onig_new(&new_reg, pattern, pattern_end, option, enc, syntax, einfo);\r
-  if (r) return r;\r
-  if (ONIG_STATE(reg) == ONIG_STATE_NORMAL) {\r
-    onig_transfer(reg, new_reg);\r
-  }\r
-  else {\r
-    onig_chain_link_add(reg, new_reg);\r
-  }\r
-  return 0;\r
-}\r
-#endif\r
-\r
-static int onig_inited = 0;\r
-\r
-extern int\r
-onig_reg_init(regex_t* reg, OnigOptionType option,\r
-             OnigCaseFoldType case_fold_flag,\r
-             OnigEncoding enc, OnigSyntaxType* syntax)\r
-{\r
-  if (! onig_inited)\r
-    onig_init();\r
-\r
-  if (IS_NULL(reg))\r
-    return ONIGERR_INVALID_ARGUMENT;\r
-\r
-  if (ONIGENC_IS_UNDEF(enc))\r
-    return ONIGERR_DEFAULT_ENCODING_IS_NOT_SETTED;\r
-\r
-  if ((option & (ONIG_OPTION_DONT_CAPTURE_GROUP|ONIG_OPTION_CAPTURE_GROUP))\r
-      == (ONIG_OPTION_DONT_CAPTURE_GROUP|ONIG_OPTION_CAPTURE_GROUP)) {\r
-    return ONIGERR_INVALID_COMBINATION_OF_OPTIONS;\r
-  }\r
-\r
-  (reg)->state = ONIG_STATE_MODIFY;\r
-\r
-  if ((option & ONIG_OPTION_NEGATE_SINGLELINE) != 0) {\r
-    option |= syntax->options;\r
-    option &= ~ONIG_OPTION_SINGLELINE;\r
-  }\r
-  else\r
-    option |= syntax->options;\r
-\r
-  (reg)->enc              = enc;\r
-  (reg)->options          = option;\r
-  (reg)->syntax           = syntax;\r
-  (reg)->optimize         = 0;\r
-  (reg)->exact            = (UChar* )NULL;\r
-  (reg)->int_map          = (int* )NULL;\r
-  (reg)->int_map_backward = (int* )NULL;\r
-  (reg)->chain            = (regex_t* )NULL;\r
-\r
-  (reg)->p                = (UChar* )NULL;\r
-  (reg)->alloc            = 0;\r
-  (reg)->used             = 0;\r
-  (reg)->name_table       = (void* )NULL;\r
-\r
-  (reg)->case_fold_flag   = case_fold_flag;\r
-  return 0;\r
-}\r
-\r
-extern int\r
-onig_new_without_alloc(regex_t* reg, const UChar* pattern,\r
-          const UChar* pattern_end, OnigOptionType option, OnigEncoding enc,\r
-          OnigSyntaxType* syntax, OnigErrorInfo* einfo)\r
-{\r
-  int r;\r
-\r
-  r = onig_reg_init(reg, option, ONIGENC_CASE_FOLD_DEFAULT, enc, syntax);\r
-  if (r) return r;\r
-\r
-  r = onig_compile(reg, pattern, pattern_end, einfo);\r
-  return r;\r
-}\r
-\r
-extern int\r
-onig_new(regex_t** reg, const UChar* pattern, const UChar* pattern_end,\r
-         OnigOptionType option, OnigEncoding enc, OnigSyntaxType* syntax,\r
-         OnigErrorInfo* einfo)\r
-{\r
-  int r;\r
-\r
-  *reg = (regex_t* )xmalloc(sizeof(regex_t));\r
-  if (IS_NULL(*reg)) return ONIGERR_MEMORY;\r
-\r
-  r = onig_reg_init(*reg, option, ONIGENC_CASE_FOLD_DEFAULT, enc, syntax);\r
-  if (r) goto err;\r
-\r
-  r = onig_compile(*reg, pattern, pattern_end, einfo);\r
-  if (r) {\r
-  err:\r
-    onig_free(*reg);\r
-    *reg = NULL;\r
-  }\r
-  return r;\r
-}\r
-\r
-\r
-extern int\r
-onig_init(void)\r
-{\r
-  if (onig_inited != 0)\r
-    return 0;\r
-\r
-  THREAD_SYSTEM_INIT;\r
-  THREAD_ATOMIC_START;\r
-\r
-  onig_inited = 1;\r
-\r
-  onigenc_init();\r
-  /* onigenc_set_default_caseconv_table((UChar* )0); */\r
-\r
-#ifdef ONIG_DEBUG_STATISTICS\r
-  onig_statistics_init();\r
-#endif\r
-\r
-  THREAD_ATOMIC_END;\r
-  return 0;\r
-}\r
-\r
-\r
-static OnigEndCallListItemType* EndCallTop;\r
-\r
-extern void onig_add_end_call(void (*func)(void))\r
-{\r
-  OnigEndCallListItemType* item;\r
-\r
-  item = (OnigEndCallListItemType* )xmalloc(sizeof(*item));\r
-  if (item == 0) return ;\r
-\r
-  item->next = EndCallTop;\r
-  item->func = func;\r
-\r
-  EndCallTop = item;\r
-}\r
-\r
-static void\r
-exec_end_call_list(void)\r
-{\r
-  OnigEndCallListItemType* prev;\r
-  void (*func)(void);\r
-\r
-  while (EndCallTop != 0) {\r
-    func = EndCallTop->func;\r
-    (*func)();\r
-\r
-    prev = EndCallTop;\r
-    EndCallTop = EndCallTop->next;\r
-    xfree(prev);\r
-  }\r
-}\r
-\r
-extern int\r
-onig_end(void)\r
-{\r
-  THREAD_ATOMIC_START;\r
-\r
-  exec_end_call_list();\r
-\r
-#ifdef ONIG_DEBUG_STATISTICS\r
-  onig_print_statistics(stderr);\r
-#endif\r
-\r
-#ifdef USE_SHARED_CCLASS_TABLE\r
-  onig_free_shared_cclass_table();\r
-#endif\r
-\r
-#ifdef USE_PARSE_TREE_NODE_RECYCLE\r
-  onig_free_node_list();\r
-#endif\r
-\r
-  onig_inited = 0;\r
-\r
-  THREAD_ATOMIC_END;\r
-  THREAD_SYSTEM_END;\r
-  return 0;\r
-}\r
-\r
-extern int\r
-onig_is_in_code_range(const UChar* p, OnigCodePoint code)\r
-{\r
-  OnigCodePoint n, *data;\r
-  OnigCodePoint low, high, x;\r
-\r
-  GET_CODE_POINT(n, p);\r
-  data = (OnigCodePoint* )p;\r
-  data++;\r
-\r
-  for (low = 0, high = n; low < high; ) {\r
-    x = (low + high) >> 1;\r
-    if (code > data[x * 2 + 1])\r
-      low = x + 1;\r
-    else\r
-      high = x;\r
-  }\r
-\r
-  return ((low < n && code >= data[low * 2]) ? 1 : 0);\r
-}\r
-\r
-extern int\r
-onig_is_code_in_cc_len(int elen, OnigCodePoint code, CClassNode* cc)\r
-{\r
-  int found;\r
-\r
-  if (elen > 1 || (code >= SINGLE_BYTE_SIZE)) {\r
-    if (IS_NULL(cc->mbuf)) {\r
-      found = 0;\r
-    }\r
-    else {\r
-      found = (onig_is_in_code_range(cc->mbuf->p, code) != 0 ? 1 : 0);\r
-    }\r
-  }\r
-  else {\r
-    found = (BITSET_AT(cc->bs, code) == 0 ? 0 : 1);\r
-  }\r
-\r
-  if (IS_NCCLASS_NOT(cc))\r
-    return !found;\r
-  else\r
-    return found;\r
-}\r
-\r
-extern int\r
-onig_is_code_in_cc(OnigEncoding enc, OnigCodePoint code, CClassNode* cc)\r
-{\r
-  int len;\r
-\r
-  if (ONIGENC_MBC_MINLEN(enc) > 1) {\r
-    len = 2;\r
-  }\r
-  else {\r
-    len = ONIGENC_CODE_TO_MBCLEN(enc, code);\r
-  }\r
-  return onig_is_code_in_cc_len(len, code, cc);\r
-}\r
-\r
-\r
-#ifdef ONIG_DEBUG\r
-\r
-/* arguments type */\r
-#define ARG_SPECIAL     -1\r
-#define ARG_NON          0\r
-#define ARG_RELADDR      1\r
-#define ARG_ABSADDR      2\r
-#define ARG_LENGTH       3\r
-#define ARG_MEMNUM       4\r
-#define ARG_OPTION       5\r
-#define ARG_STATE_CHECK  6\r
-\r
-OnigOpInfoType OnigOpInfo[] = {\r
-  { OP_FINISH,            "finish",          ARG_NON },\r
-  { OP_END,               "end",             ARG_NON },\r
-  { OP_EXACT1,            "exact1",          ARG_SPECIAL },\r
-  { OP_EXACT2,            "exact2",          ARG_SPECIAL },\r
-  { OP_EXACT3,            "exact3",          ARG_SPECIAL },\r
-  { OP_EXACT4,            "exact4",          ARG_SPECIAL },\r
-  { OP_EXACT5,            "exact5",          ARG_SPECIAL },\r
-  { OP_EXACTN,            "exactn",          ARG_SPECIAL },\r
-  { OP_EXACTMB2N1,        "exactmb2-n1",     ARG_SPECIAL },\r
-  { OP_EXACTMB2N2,        "exactmb2-n2",     ARG_SPECIAL },\r
-  { OP_EXACTMB2N3,        "exactmb2-n3",     ARG_SPECIAL },\r
-  { OP_EXACTMB2N,         "exactmb2-n",      ARG_SPECIAL },\r
-  { OP_EXACTMB3N,         "exactmb3n"  ,     ARG_SPECIAL },\r
-  { OP_EXACTMBN,          "exactmbn",        ARG_SPECIAL },\r
-  { OP_EXACT1_IC,         "exact1-ic",       ARG_SPECIAL },\r
-  { OP_EXACTN_IC,         "exactn-ic",       ARG_SPECIAL },\r
-  { OP_CCLASS,            "cclass",          ARG_SPECIAL },\r
-  { OP_CCLASS_MB,         "cclass-mb",       ARG_SPECIAL },\r
-  { OP_CCLASS_MIX,        "cclass-mix",      ARG_SPECIAL },\r
-  { OP_CCLASS_NOT,        "cclass-not",      ARG_SPECIAL },\r
-  { OP_CCLASS_MB_NOT,     "cclass-mb-not",   ARG_SPECIAL },\r
-  { OP_CCLASS_MIX_NOT,    "cclass-mix-not",  ARG_SPECIAL },\r
-  { OP_CCLASS_NODE,       "cclass-node",     ARG_SPECIAL },\r
-  { OP_ANYCHAR,           "anychar",         ARG_NON },\r
-  { OP_ANYCHAR_ML,        "anychar-ml",      ARG_NON },\r
-  { OP_ANYCHAR_STAR,      "anychar*",        ARG_NON },\r
-  { OP_ANYCHAR_ML_STAR,   "anychar-ml*",     ARG_NON },\r
-  { OP_ANYCHAR_STAR_PEEK_NEXT, "anychar*-peek-next", ARG_SPECIAL },\r
-  { OP_ANYCHAR_ML_STAR_PEEK_NEXT, "anychar-ml*-peek-next", ARG_SPECIAL },\r
-  { OP_WORD,                "word",            ARG_NON },\r
-  { OP_NOT_WORD,            "not-word",        ARG_NON },\r
-  { OP_WORD_BOUND,          "word-bound",      ARG_NON },\r
-  { OP_NOT_WORD_BOUND,      "not-word-bound",  ARG_NON },\r
-  { OP_WORD_BEGIN,          "word-begin",      ARG_NON },\r
-  { OP_WORD_END,            "word-end",        ARG_NON },\r
-  { OP_BEGIN_BUF,           "begin-buf",       ARG_NON },\r
-  { OP_END_BUF,             "end-buf",         ARG_NON },\r
-  { OP_BEGIN_LINE,          "begin-line",      ARG_NON },\r
-  { OP_END_LINE,            "end-line",        ARG_NON },\r
-  { OP_SEMI_END_BUF,        "semi-end-buf",    ARG_NON },\r
-  { OP_BEGIN_POSITION,      "begin-position",  ARG_NON },\r
-  { OP_BACKREF1,            "backref1",             ARG_NON },\r
-  { OP_BACKREF2,            "backref2",             ARG_NON },\r
-  { OP_BACKREFN,            "backrefn",             ARG_MEMNUM  },\r
-  { OP_BACKREFN_IC,         "backrefn-ic",          ARG_SPECIAL },\r
-  { OP_BACKREF_MULTI,       "backref_multi",        ARG_SPECIAL },\r
-  { OP_BACKREF_MULTI_IC,    "backref_multi-ic",     ARG_SPECIAL },\r
-  { OP_BACKREF_WITH_LEVEL,    "backref_at_level",     ARG_SPECIAL },\r
-  { OP_MEMORY_START_PUSH,   "mem-start-push",       ARG_MEMNUM  },\r
-  { OP_MEMORY_START,        "mem-start",            ARG_MEMNUM  },\r
-  { OP_MEMORY_END_PUSH,     "mem-end-push",         ARG_MEMNUM  },\r
-  { OP_MEMORY_END_PUSH_REC, "mem-end-push-rec",     ARG_MEMNUM  },\r
-  { OP_MEMORY_END,          "mem-end",              ARG_MEMNUM  },\r
-  { OP_MEMORY_END_REC,      "mem-end-rec",          ARG_MEMNUM  },\r
-  { OP_SET_OPTION_PUSH,     "set-option-push",      ARG_OPTION  },\r
-  { OP_SET_OPTION,          "set-option",           ARG_OPTION  },\r
-  { OP_FAIL,                "fail",                 ARG_NON },\r
-  { OP_JUMP,                "jump",                 ARG_RELADDR },\r
-  { OP_PUSH,                "push",                 ARG_RELADDR },\r
-  { OP_POP,                 "pop",                  ARG_NON },\r
-  { OP_PUSH_OR_JUMP_EXACT1, "push-or-jump-e1",      ARG_SPECIAL },\r
-  { OP_PUSH_IF_PEEK_NEXT,   "push-if-peek-next",    ARG_SPECIAL },\r
-  { OP_REPEAT,              "repeat",               ARG_SPECIAL },\r
-  { OP_REPEAT_NG,           "repeat-ng",            ARG_SPECIAL },\r
-  { OP_REPEAT_INC,          "repeat-inc",           ARG_MEMNUM  },\r
-  { OP_REPEAT_INC_NG,       "repeat-inc-ng",        ARG_MEMNUM  },\r
-  { OP_REPEAT_INC_SG,       "repeat-inc-sg",        ARG_MEMNUM  },\r
-  { OP_REPEAT_INC_NG_SG,    "repeat-inc-ng-sg",     ARG_MEMNUM  },\r
-  { OP_NULL_CHECK_START,    "null-check-start",     ARG_MEMNUM  },\r
-  { OP_NULL_CHECK_END,      "null-check-end",       ARG_MEMNUM  },\r
-  { OP_NULL_CHECK_END_MEMST,"null-check-end-memst", ARG_MEMNUM  },\r
-  { OP_NULL_CHECK_END_MEMST_PUSH,"null-check-end-memst-push", ARG_MEMNUM  },\r
-  { OP_PUSH_POS,             "push-pos",             ARG_NON },\r
-  { OP_POP_POS,              "pop-pos",              ARG_NON },\r
-  { OP_PUSH_POS_NOT,         "push-pos-not",         ARG_RELADDR },\r
-  { OP_FAIL_POS,             "fail-pos",             ARG_NON },\r
-  { OP_PUSH_STOP_BT,         "push-stop-bt",         ARG_NON },\r
-  { OP_POP_STOP_BT,          "pop-stop-bt",          ARG_NON },\r
-  { OP_LOOK_BEHIND,          "look-behind",          ARG_SPECIAL },\r
-  { OP_PUSH_LOOK_BEHIND_NOT, "push-look-behind-not", ARG_SPECIAL },\r
-  { OP_FAIL_LOOK_BEHIND_NOT, "fail-look-behind-not", ARG_NON },\r
-  { OP_CALL,                 "call",                 ARG_ABSADDR },\r
-  { OP_RETURN,               "return",               ARG_NON },\r
-  { OP_STATE_CHECK_PUSH,         "state-check-push",         ARG_SPECIAL },\r
-  { OP_STATE_CHECK_PUSH_OR_JUMP, "state-check-push-or-jump", ARG_SPECIAL },\r
-  { OP_STATE_CHECK,              "state-check",              ARG_STATE_CHECK },\r
-  { OP_STATE_CHECK_ANYCHAR_STAR, "state-check-anychar*",     ARG_STATE_CHECK },\r
-  { OP_STATE_CHECK_ANYCHAR_ML_STAR,\r
-    "state-check-anychar-ml*", ARG_STATE_CHECK },\r
-  { -1, "", ARG_NON }\r
-};\r
-\r
-static char*\r
-op2name(int opcode)\r
-{\r
-  int i;\r
-\r
-  for (i = 0; OnigOpInfo[i].opcode >= 0; i++) {\r
-    if (opcode == OnigOpInfo[i].opcode)\r
-      return OnigOpInfo[i].name;\r
-  }\r
-  return "";\r
-}\r
-\r
-static int\r
-op2arg_type(int opcode)\r
-{\r
-  int i;\r
-\r
-  for (i = 0; OnigOpInfo[i].opcode >= 0; i++) {\r
-    if (opcode == OnigOpInfo[i].opcode)\r
-      return OnigOpInfo[i].arg_type;\r
-  }\r
-  return ARG_SPECIAL;\r
-}\r
-\r
-static void\r
-Indent(FILE* f, int indent)\r
-{\r
-  int i;\r
-  for (i = 0; i < indent; i++) putc(' ', f);\r
-}\r
-\r
-static void\r
-p_string(FILE* f, int len, UChar* s)\r
-{\r
-  fputs(":", f);\r
-  while (len-- > 0) { fputc(*s++, f); }\r
-}\r
-\r
-static void\r
-p_len_string(FILE* f, LengthType len, int mb_len, UChar* s)\r
-{\r
-  int x = len * mb_len;\r
-\r
-  fprintf(f, ":%d:", len);\r
-  while (x-- > 0) { fputc(*s++, f); }\r
-}\r
-\r
-extern void\r
-onig_print_compiled_byte_code(FILE* f, UChar* bp, UChar** nextp,\r
-                              OnigEncoding enc)\r
-{\r
-  int i, n, arg_type;\r
-  RelAddrType addr;\r
-  LengthType len;\r
-  MemNumType mem;\r
-  StateCheckNumType scn;\r
-  OnigCodePoint code;\r
-  UChar *q;\r
-\r
-  fprintf(f, "[%s", op2name(*bp));\r
-  arg_type = op2arg_type(*bp);\r
-  if (arg_type != ARG_SPECIAL) {\r
-    bp++;\r
-    switch (arg_type) {\r
-    case ARG_NON:\r
-      break;\r
-    case ARG_RELADDR:\r
-      GET_RELADDR_INC(addr, bp);\r
-      fprintf(f, ":(%d)", addr);\r
-      break;\r
-    case ARG_ABSADDR:\r
-      GET_ABSADDR_INC(addr, bp);\r
-      fprintf(f, ":(%d)", addr);\r
-      break;\r
-    case ARG_LENGTH:\r
-      GET_LENGTH_INC(len, bp);\r
-      fprintf(f, ":%d", len);\r
-      break;\r
-    case ARG_MEMNUM:\r
-      mem = *((MemNumType* )bp);\r
-      bp += SIZE_MEMNUM;\r
-      fprintf(f, ":%d", mem);\r
-      break;\r
-    case ARG_OPTION:\r
-      {\r
-       OnigOptionType option = *((OnigOptionType* )bp);\r
-       bp += SIZE_OPTION;\r
-       fprintf(f, ":%d", option);\r
-      }\r
-      break;\r
-\r
-    case ARG_STATE_CHECK:\r
-      scn = *((StateCheckNumType* )bp);\r
-      bp += SIZE_STATE_CHECK_NUM;\r
-      fprintf(f, ":%d", scn);\r
-      break;\r
-    }\r
-  }\r
-  else {\r
-    switch (*bp++) {\r
-    case OP_EXACT1:\r
-    case OP_ANYCHAR_STAR_PEEK_NEXT:\r
-    case OP_ANYCHAR_ML_STAR_PEEK_NEXT:\r
-      p_string(f, 1, bp++); break;\r
-    case OP_EXACT2:\r
-      p_string(f, 2, bp); bp += 2; break;\r
-    case OP_EXACT3:\r
-      p_string(f, 3, bp); bp += 3; break;\r
-    case OP_EXACT4:\r
-      p_string(f, 4, bp); bp += 4; break;\r
-    case OP_EXACT5:\r
-      p_string(f, 5, bp); bp += 5; break;\r
-    case OP_EXACTN:\r
-      GET_LENGTH_INC(len, bp);\r
-      p_len_string(f, len, 1, bp);\r
-      bp += len;\r
-      break;\r
-    \r
-    case OP_EXACTMB2N1:\r
-      p_string(f, 2, bp); bp += 2; break;\r
-    case OP_EXACTMB2N2:\r
-      p_string(f, 4, bp); bp += 4; break;\r
-    case OP_EXACTMB2N3:\r
-      p_string(f, 6, bp); bp += 6; break;\r
-    case OP_EXACTMB2N:\r
-      GET_LENGTH_INC(len, bp);\r
-      p_len_string(f, len, 2, bp);\r
-      bp += len * 2;\r
-      break;\r
-    case OP_EXACTMB3N:\r
-      GET_LENGTH_INC(len, bp);\r
-      p_len_string(f, len, 3, bp);\r
-      bp += len * 3;\r
-      break;\r
-    case OP_EXACTMBN:\r
-      {\r
-       int mb_len;\r
-      \r
-       GET_LENGTH_INC(mb_len, bp);\r
-       GET_LENGTH_INC(len, bp);\r
-       fprintf(f, ":%d:%d:", mb_len, len);\r
-       n = len * mb_len;\r
-       while (n-- > 0) { fputc(*bp++, f); }\r
-      }\r
-      break;\r
-\r
-    case OP_EXACT1_IC:\r
-      len = enclen(enc, bp);\r
-      p_string(f, len, bp);\r
-      bp += len;\r
-      break;\r
-    case OP_EXACTN_IC:\r
-      GET_LENGTH_INC(len, bp);\r
-      p_len_string(f, len, 1, bp);\r
-      bp += len;\r
-      break;\r
-\r
-    case OP_CCLASS:\r
-      n = bitset_on_num((BitSetRef )bp);\r
-      bp += SIZE_BITSET;\r
-      fprintf(f, ":%d", n);\r
-      break;\r
-\r
-    case OP_CCLASS_NOT:\r
-      n = bitset_on_num((BitSetRef )bp);\r
-      bp += SIZE_BITSET;\r
-      fprintf(f, ":%d", n);\r
-      break;\r
-\r
-    case OP_CCLASS_MB:\r
-    case OP_CCLASS_MB_NOT:\r
-      GET_LENGTH_INC(len, bp);\r
-      q = bp;\r
-#ifndef PLATFORM_UNALIGNED_WORD_ACCESS\r
-      ALIGNMENT_RIGHT(q);\r
-#endif\r
-      GET_CODE_POINT(code, q);\r
-      bp += len;\r
-      fprintf(f, ":%d:%d", (int )code, len);\r
-      break;\r
-\r
-    case OP_CCLASS_MIX:\r
-    case OP_CCLASS_MIX_NOT:\r
-      n = bitset_on_num((BitSetRef )bp);\r
-      bp += SIZE_BITSET;\r
-      GET_LENGTH_INC(len, bp);\r
-      q = bp;\r
-#ifndef PLATFORM_UNALIGNED_WORD_ACCESS\r
-      ALIGNMENT_RIGHT(q);\r
-#endif\r
-      GET_CODE_POINT(code, q);\r
-      bp += len;\r
-      fprintf(f, ":%d:%d:%d", n, (int )code, len);\r
-      break;\r
-\r
-    case OP_CCLASS_NODE:\r
-      {\r
-        CClassNode *cc;\r
-\r
-        GET_POINTER_INC(cc, bp);\r
-        n = bitset_on_num(cc->bs);\r
-        fprintf(f, ":%u:%d", (unsigned int )cc, n);\r
-      }\r
-      break;\r
-\r
-    case OP_BACKREFN_IC:\r
-      mem = *((MemNumType* )bp);\r
-      bp += SIZE_MEMNUM;\r
-      fprintf(f, ":%d", mem);\r
-      break;\r
-\r
-    case OP_BACKREF_MULTI_IC:\r
-    case OP_BACKREF_MULTI:\r
-      fputs(" ", f);\r
-      GET_LENGTH_INC(len, bp);\r
-      for (i = 0; i < len; i++) {\r
-       GET_MEMNUM_INC(mem, bp);\r
-       if (i > 0) fputs(", ", f);\r
-       fprintf(f, "%d", mem);\r
-      }\r
-      break;\r
-\r
-    case OP_BACKREF_WITH_LEVEL:\r
-      {\r
-       OnigOptionType option;\r
-       LengthType level;\r
-\r
-       GET_OPTION_INC(option, bp);\r
-       fprintf(f, ":%d", option);\r
-       GET_LENGTH_INC(level, bp);\r
-       fprintf(f, ":%d", level);\r
-\r
-       fputs(" ", f);\r
-       GET_LENGTH_INC(len, bp);\r
-       for (i = 0; i < len; i++) {\r
-         GET_MEMNUM_INC(mem, bp);\r
-         if (i > 0) fputs(", ", f);\r
-         fprintf(f, "%d", mem);\r
-       }\r
-      }\r
-      break;\r
-\r
-    case OP_REPEAT:\r
-    case OP_REPEAT_NG:\r
-      {\r
-       mem = *((MemNumType* )bp);\r
-       bp += SIZE_MEMNUM;\r
-       addr = *((RelAddrType* )bp);\r
-       bp += SIZE_RELADDR;\r
-       fprintf(f, ":%d:%d", mem, addr);\r
-      }\r
-      break;\r
-\r
-    case OP_PUSH_OR_JUMP_EXACT1:\r
-    case OP_PUSH_IF_PEEK_NEXT:\r
-      addr = *((RelAddrType* )bp);\r
-      bp += SIZE_RELADDR;\r
-      fprintf(f, ":(%d)", addr);\r
-      p_string(f, 1, bp);\r
-      bp += 1;\r
-      break;\r
-\r
-    case OP_LOOK_BEHIND:\r
-      GET_LENGTH_INC(len, bp);\r
-      fprintf(f, ":%d", len);\r
-      break;\r
-\r
-    case OP_PUSH_LOOK_BEHIND_NOT:\r
-      GET_RELADDR_INC(addr, bp);\r
-      GET_LENGTH_INC(len, bp);\r
-      fprintf(f, ":%d:(%d)", len, addr);\r
-      break;\r
-\r
-    case OP_STATE_CHECK_PUSH:\r
-    case OP_STATE_CHECK_PUSH_OR_JUMP:\r
-      scn = *((StateCheckNumType* )bp);\r
-      bp += SIZE_STATE_CHECK_NUM;\r
-      addr = *((RelAddrType* )bp);\r
-      bp += SIZE_RELADDR;\r
-      fprintf(f, ":%d:(%d)", scn, addr);\r
-      break;\r
-\r
-    default:\r
-      fprintf(stderr, "onig_print_compiled_byte_code: undefined code %d\n",\r
-             *--bp);\r
-    }\r
-  }\r
-  fputs("]", f);\r
-  if (nextp) *nextp = bp;\r
-}\r
-\r
-static void\r
-print_compiled_byte_code_list(FILE* f, regex_t* reg)\r
-{\r
-  int ncode;\r
-  UChar* bp = reg->p;\r
-  UChar* end = reg->p + reg->used;\r
-\r
-  fprintf(f, "code length: %d\n", reg->used);\r
-\r
-  ncode = 0;\r
-  while (bp < end) {\r
-    ncode++;\r
-    if (bp > reg->p) {\r
-      if (ncode % 5 == 0)\r
-       fprintf(f, "\n");\r
-      else\r
-       fputs(" ", f);\r
-    }\r
-    onig_print_compiled_byte_code(f, bp, &bp, reg->enc);\r
-  }\r
-\r
-  fprintf(f, "\n");\r
-}\r
-\r
-static void\r
-print_indent_tree(FILE* f, Node* node, int indent)\r
-{\r
-  int i, type;\r
-  int add = 3;\r
-  UChar* p;\r
-\r
-  Indent(f, indent);\r
-  if (IS_NULL(node)) {\r
-    fprintf(f, "ERROR: null node!!!\n");\r
-    exit (0);\r
-  }\r
-\r
-  type = NTYPE(node);\r
-  switch (type) {\r
-  case NT_LIST:\r
-  case NT_ALT:\r
-    if (NTYPE(node) == NT_LIST)\r
-      fprintf(f, "<list:%x>\n", (int )node);\r
-    else\r
-      fprintf(f, "<alt:%x>\n", (int )node);\r
-\r
-    print_indent_tree(f, NCAR(node), indent + add);\r
-    while (IS_NOT_NULL(node = NCDR(node))) {\r
-      if (NTYPE(node) != type) {\r
-       fprintf(f, "ERROR: list/alt right is not a cons. %d\n", NTYPE(node));\r
-       exit(0);\r
-      }\r
-      print_indent_tree(f, NCAR(node), indent + add);\r
-    }\r
-    break;\r
-\r
-  case NT_STR:\r
-    fprintf(f, "<string%s:%x>",\r
-           (NSTRING_IS_RAW(node) ? "-raw" : ""), (int )node);\r
-    for (p = NSTR(node)->s; p < NSTR(node)->end; p++) {\r
-      if (*p >= 0x20 && *p < 0x7f)\r
-       fputc(*p, f);\r
-      else {\r
-       fprintf(f, " 0x%02x", *p);\r
-      }\r
-    }\r
-    break;\r
-\r
-  case NT_CCLASS:\r
-    fprintf(f, "<cclass:%x>", (int )node);\r
-    if (IS_NCCLASS_NOT(NCCLASS(node))) fputs(" not", f);\r
-    if (NCCLASS(node)->mbuf) {\r
-      BBuf* bbuf = NCCLASS(node)->mbuf;\r
-      for (i = 0; i < bbuf->used; i++) {\r
-       if (i > 0) fprintf(f, ",");\r
-       fprintf(f, "%0x", bbuf->p[i]);\r
-      }\r
-    }\r
-    break;\r
-\r
-  case NT_CTYPE:\r
-    fprintf(f, "<ctype:%x> ", (int )node);\r
-    switch (NCTYPE(node)->ctype) {\r
-    case ONIGENC_CTYPE_WORD:\r
-      if (NCTYPE(node)->not != 0)\r
-       fputs("not word",       f);\r
-      else\r
-       fputs("word",           f);\r
-      break;\r
-\r
-    default:\r
-      fprintf(f, "ERROR: undefined ctype.\n");\r
-      exit(0);\r
-    }\r
-    break;\r
-\r
-  case NT_CANY:\r
-    fprintf(f, "<anychar:%x>", (int )node);\r
-    break;\r
-\r
-  case NT_ANCHOR:\r
-    fprintf(f, "<anchor:%x> ", (int )node);\r
-    switch (NANCHOR(node)->type) {\r
-    case ANCHOR_BEGIN_BUF:      fputs("begin buf",      f); break;\r
-    case ANCHOR_END_BUF:        fputs("end buf",        f); break;\r
-    case ANCHOR_BEGIN_LINE:     fputs("begin line",     f); break;\r
-    case ANCHOR_END_LINE:       fputs("end line",       f); break;\r
-    case ANCHOR_SEMI_END_BUF:   fputs("semi end buf",   f); break;\r
-    case ANCHOR_BEGIN_POSITION: fputs("begin position", f); break;\r
-\r
-    case ANCHOR_WORD_BOUND:      fputs("word bound",     f); break;\r
-    case ANCHOR_NOT_WORD_BOUND:  fputs("not word bound", f); break;\r
-#ifdef USE_WORD_BEGIN_END\r
-    case ANCHOR_WORD_BEGIN:      fputs("word begin", f);     break;\r
-    case ANCHOR_WORD_END:        fputs("word end", f);       break;\r
-#endif\r
-    case ANCHOR_PREC_READ:       fputs("prec read",      f); break;\r
-    case ANCHOR_PREC_READ_NOT:   fputs("prec read not",  f); break;\r
-    case ANCHOR_LOOK_BEHIND:     fputs("look_behind",    f); break;\r
-    case ANCHOR_LOOK_BEHIND_NOT: fputs("look_behind_not",f); break;\r
-\r
-    default:\r
-      fprintf(f, "ERROR: undefined anchor type.\n");\r
-      break;\r
-    }\r
-    break;\r
-\r
-  case NT_BREF:\r
-    {\r
-      int* p;\r
-      BRefNode* br = NBREF(node);\r
-      p = BACKREFS_P(br);\r
-      fprintf(f, "<backref:%x>", (int )node);\r
-      for (i = 0; i < br->back_num; i++) {\r
-       if (i > 0) fputs(", ", f);\r
-       fprintf(f, "%d", p[i]);\r
-      }\r
-    }\r
-    break;\r
-\r
-#ifdef USE_SUBEXP_CALL\r
-  case NT_CALL:\r
-    {\r
-      CallNode* cn = NCALL(node);\r
-      fprintf(f, "<call:%x>", (int )node);\r
-      p_string(f, cn->name_end - cn->name, cn->name);\r
-    }\r
-    break;\r
-#endif\r
-\r
-  case NT_QTFR:\r
-    fprintf(f, "<quantifier:%x>{%d,%d}%s\n", (int )node,\r
-           NQTFR(node)->lower, NQTFR(node)->upper,\r
-           (NQTFR(node)->greedy ? "" : "?"));\r
-    print_indent_tree(f, NQTFR(node)->target, indent + add);\r
-    break;\r
-\r
-  case NT_ENCLOSE:\r
-    fprintf(f, "<enclose:%x> ", (int )node);\r
-    switch (NENCLOSE(node)->type) {\r
-    case ENCLOSE_OPTION:\r
-      fprintf(f, "option:%d", NENCLOSE(node)->option);\r
-      break;\r
-    case ENCLOSE_MEMORY:\r
-      fprintf(f, "memory:%d", NENCLOSE(node)->regnum);\r
-      break;\r
-    case ENCLOSE_STOP_BACKTRACK:\r
-      fprintf(f, "stop-bt");\r
-      break;\r
-\r
-    default:\r
-      break;\r
-    }\r
-    fprintf(f, "\n");\r
-    print_indent_tree(f, NENCLOSE(node)->target, indent + add);\r
-    break;\r
-\r
-  default:\r
-    fprintf(f, "print_indent_tree: undefined node type %d\n", NTYPE(node));\r
-    break;\r
-  }\r
-\r
-  if (type != NT_LIST && type != NT_ALT && type != NT_QTFR &&\r
-      type != NT_ENCLOSE)\r
-    fprintf(f, "\n");\r
-  fflush(f);\r
-}\r
-#endif /* ONIG_DEBUG */\r
-\r
-#ifdef ONIG_DEBUG_PARSE_TREE\r
-static void\r
-print_tree(FILE* f, Node* node)\r
-{\r
-  print_indent_tree(f, node, 0);\r
-}\r
-#endif\r
diff --git a/MdeModulePkg/Universal/RegularExpressionDxe/Oniguruma/regenc.c b/MdeModulePkg/Universal/RegularExpressionDxe/Oniguruma/regenc.c
deleted file mode 100644 (file)
index 9e0f001..0000000
+++ /dev/null
@@ -1,904 +0,0 @@
-/**********************************************************************\r
-  regenc.c -  Oniguruma (regular expression library)\r
-**********************************************************************/\r
-/*-\r
- * Copyright (c) 2002-2007  K.Kosako  <sndgk393 AT ybb DOT ne DOT jp>\r
- * All rights reserved.\r
- * \r
- * Copyright (c) 2015, Hewlett Packard Enterprise Development, L.P.<BR>\r
- *\r
- * Redistribution and use in source and binary forms, with or without\r
- * modification, are permitted provided that the following conditions\r
- * are met:\r
- * 1. Redistributions of source code must retain the above copyright\r
- *    notice, this list of conditions and the following disclaimer.\r
- * 2. Redistributions in binary form must reproduce the above copyright\r
- *    notice, this list of conditions and the following disclaimer in the\r
- *    documentation and/or other materials provided with the distribution.\r
- *\r
- * THIS SOFTWARE IS PROVIDED BY THE AUTHOR AND CONTRIBUTORS ``AS IS'' AND\r
- * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE\r
- * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE\r
- * ARE DISCLAIMED.  IN NO EVENT SHALL THE AUTHOR OR CONTRIBUTORS BE LIABLE\r
- * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL\r
- * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS\r
- * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)\r
- * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT\r
- * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY\r
- * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF\r
- * SUCH DAMAGE.\r
- */\r
-\r
-#include "regint.h"\r
-\r
-OnigEncoding OnigEncDefaultCharEncoding = ONIG_ENCODING_INIT_DEFAULT;\r
-\r
-extern int\r
-onigenc_init(void)\r
-{\r
-  return 0;\r
-}\r
-\r
-extern OnigEncoding\r
-onigenc_get_default_encoding(void)\r
-{\r
-  return OnigEncDefaultCharEncoding;\r
-}\r
-\r
-extern int\r
-onigenc_set_default_encoding(OnigEncoding enc)\r
-{\r
-  OnigEncDefaultCharEncoding = enc;\r
-  return 0;\r
-}\r
-\r
-extern UChar*\r
-onigenc_get_right_adjust_char_head(OnigEncoding enc, const UChar* start, const UChar* s)\r
-{\r
-  UChar* p = ONIGENC_LEFT_ADJUST_CHAR_HEAD(enc, start, s);\r
-  if (p < s) {\r
-    p += enclen(enc, p);\r
-  }\r
-  return p;\r
-}\r
-\r
-extern UChar*\r
-onigenc_get_right_adjust_char_head_with_prev(OnigEncoding enc,\r
-                                  const UChar* start, const UChar* s, const UChar** prev)\r
-{\r
-  UChar* p = ONIGENC_LEFT_ADJUST_CHAR_HEAD(enc, start, s);\r
-\r
-  if (p < s) {\r
-    if (prev) *prev = (const UChar* )p;\r
-    p += enclen(enc, p);\r
-  }\r
-  else {\r
-    if (prev) *prev = (const UChar* )NULL; /* Sorry */\r
-  }\r
-  return p;\r
-}\r
-\r
-extern UChar*\r
-onigenc_get_prev_char_head(OnigEncoding enc, const UChar* start, const UChar* s)\r
-{\r
-  if (s <= start)\r
-    return (UChar* )NULL;\r
-\r
-  return ONIGENC_LEFT_ADJUST_CHAR_HEAD(enc, start, s - 1);\r
-}\r
-\r
-extern UChar*\r
-onigenc_step_back(OnigEncoding enc, const UChar* start, const UChar* s, int n)\r
-{\r
-  while (ONIG_IS_NOT_NULL(s) && n-- > 0) {\r
-    if (s <= start)\r
-      return (UChar* )NULL;\r
-\r
-    s = ONIGENC_LEFT_ADJUST_CHAR_HEAD(enc, start, s - 1);\r
-  }\r
-  return (UChar* )s;\r
-}\r
-\r
-extern UChar*\r
-onigenc_step(OnigEncoding enc, const UChar* p, const UChar* end, int n)\r
-{\r
-  UChar* q = (UChar* )p;\r
-  while (n-- > 0) {\r
-    q += ONIGENC_MBC_ENC_LEN(enc, q);\r
-  }\r
-  return (q <= end ? q : NULL);\r
-}\r
-\r
-extern int\r
-onigenc_strlen(OnigEncoding enc, const UChar* p, const UChar* end)\r
-{\r
-  int n = 0;\r
-  UChar* q = (UChar* )p;\r
-  \r
-  while (q < end) {\r
-    q += ONIGENC_MBC_ENC_LEN(enc, q);\r
-    n++;\r
-  }\r
-  return n;\r
-}\r
-\r
-extern int\r
-onigenc_strlen_null(OnigEncoding enc, const UChar* s)\r
-{\r
-  int n = 0;\r
-  UChar* p = (UChar* )s;\r
-  \r
-  while (1) {\r
-    if (*p == '\0') {\r
-      UChar* q;\r
-      int len = ONIGENC_MBC_MINLEN(enc);\r
-\r
-      if (len == 1) return n;\r
-      q = p + 1;\r
-      while (len > 1) {\r
-        if (*q != '\0') break;\r
-        q++;\r
-        len--;\r
-      }\r
-      if (len == 1) return n;\r
-    }\r
-    p += ONIGENC_MBC_ENC_LEN(enc, p);\r
-    n++;\r
-  }\r
-}\r
-\r
-extern int\r
-onigenc_str_bytelen_null(OnigEncoding enc, const UChar* s)\r
-{\r
-  UChar* start = (UChar* )s;\r
-  UChar* p = (UChar* )s;\r
-\r
-  while (1) {\r
-    if (*p == '\0') {\r
-      UChar* q;\r
-      int len = ONIGENC_MBC_MINLEN(enc);\r
-\r
-      if (len == 1) return (int )(p - start);\r
-      q = p + 1;\r
-      while (len > 1) {\r
-        if (*q != '\0') break;\r
-        q++;\r
-        len--;\r
-      }\r
-      if (len == 1) return (int )(p - start);\r
-    }\r
-    p += ONIGENC_MBC_ENC_LEN(enc, p);\r
-  }\r
-}\r
-\r
-const UChar OnigEncAsciiToLowerCaseTable[] = {\r
-    0u,   1u,   2u,   3u,   4u,   5u,   6u,   7u,\r
-   10u,  11u,  12u,  13u,  14u,  15u,  16u,  17u,\r
-   20u,  21u,  22u,  23u,  24u,  25u,  26u,  27u,\r
-   30u,  31u,  32u,  33u,  34u,  35u,  36u,  37u,\r
-   40u,  41u,  42u,  43u,  44u,  45u,  46u,  47u,\r
-   50u,  51u,  52u,  53u,  54u,  55u,  56u,  57u,\r
-   60u,  61u,  62u,  63u,  64u,  65u,  66u,  67u,\r
-   70u,  71u,  72u,  73u,  74u,  75u,  76u,  77u,\r
-  100u, 141u, 142u, 143u, 144u, 145u, 146u, 147u,\r
-  150u, 151u, 152u, 153u, 154u, 155u, 156u, 157u,\r
-  160u, 161u, 162u, 163u, 164u, 165u, 166u, 167u,\r
-  170u, 171u, 172u, 133u, 134u, 135u, 136u, 137u,\r
-  140u, 141u, 142u, 143u, 144u, 145u, 146u, 147u,\r
-  150u, 151u, 152u, 153u, 154u, 155u, 156u, 157u,\r
-  160u, 161u, 162u, 163u, 164u, 165u, 166u, 167u,\r
-  170u, 171u, 172u, 173u, 174u, 175u, 176u, 177u,\r
-  200u, 201u, 202u, 203u, 204u, 205u, 206u, 207u,\r
-  210u, 211u, 212u, 213u, 214u, 215u, 216u, 217u,\r
-  220u, 221u, 222u, 223u, 224u, 225u, 226u, 227u,\r
-  230u, 231u, 232u, 233u, 234u, 235u, 236u, 237u,\r
-  240u, 241u, 242u, 243u, 244u, 245u, 246u, 247u,\r
-  250u, 251u, 252u, 253u, 254u, 255u, 256u, 257u,\r
-  260u, 261u, 262u, 263u, 264u, 265u, 266u, 267u,\r
-  270u, 271u, 272u, 273u, 274u, 275u, 276u, 277u,\r
-  300u, 301u, 302u, 303u, 304u, 305u, 306u, 307u,\r
-  310u, 311u, 312u, 313u, 314u, 315u, 316u, 317u,\r
-  320u, 321u, 322u, 323u, 324u, 325u, 326u, 327u,\r
-  330u, 331u, 332u, 333u, 334u, 335u, 336u, 337u,\r
-  340u, 341u, 342u, 343u, 344u, 345u, 346u, 347u,\r
-  350u, 351u, 352u, 353u, 354u, 355u, 356u, 357u,\r
-  360u, 361u, 362u, 363u, 364u, 365u, 366u, 367u,\r
-  370u, 371u, 372u, 373u, 374u, 375u, 376u, 377u,\r
-};\r
-\r
-#ifdef USE_UPPER_CASE_TABLE\r
-const UChar OnigEncAsciiToUpperCaseTable[256] = {\r
-    0u,   1u,   2u,   3u,   4u,   5u,   6u,   7u,\r
-   10u,  11u,  12u,  13u,  14u,  15u,  16u,  17u,\r
-   20u,  21u,  22u,  23u,  24u,  25u,  26u,  27u,\r
-   30u,  31u,  32u,  33u,  34u,  35u,  36u,  37u,\r
-   40u,  41u,  42u,  43u,  44u,  45u,  46u,  47u,\r
-   50u,  51u,  52u,  53u,  54u,  55u,  56u,  57u,\r
-   60u,  61u,  62u,  63u,  64u,  65u,  66u,  67u,\r
-   70u,  71u,  72u,  73u,  74u,  75u,  76u,  77u,\r
-  100u, 101u, 102u, 103u, 104u, 105u, 106u, 107u,\r
-  110u, 111u, 112u, 113u, 114u, 115u, 116u, 117u,\r
-  120u, 121u, 122u, 123u, 124u, 125u, 126u, 127u,\r
-  130u, 131u, 132u, 133u, 134u, 135u, 136u, 137u,\r
-  140u, 101u, 102u, 103u, 104u, 105u, 106u, 107u,\r
-  110u, 111u, 112u, 113u, 114u, 115u, 116u, 117u,\r
-  120u, 121u, 122u, 123u, 124u, 125u, 126u, 127u,\r
-  130u, 131u, 132u, 173u, 174u, 175u, 176u, 177u,\r
-  200u, 201u, 202u, 203u, 204u, 205u, 206u, 207u,\r
-  210u, 211u, 212u, 213u, 214u, 215u, 216u, 217u,\r
-  220u, 221u, 222u, 223u, 224u, 225u, 226u, 227u,\r
-  230u, 231u, 232u, 233u, 234u, 235u, 236u, 237u,\r
-  240u, 241u, 242u, 243u, 244u, 245u, 246u, 247u,\r
-  250u, 251u, 252u, 253u, 254u, 255u, 256u, 257u,\r
-  260u, 261u, 262u, 263u, 264u, 265u, 266u, 267u,\r
-  270u, 271u, 272u, 273u, 274u, 275u, 276u, 277u,\r
-  300u, 301u, 302u, 303u, 304u, 305u, 306u, 307u,\r
-  310u, 311u, 312u, 313u, 314u, 315u, 316u, 317u,\r
-  320u, 321u, 322u, 323u, 324u, 325u, 326u, 327u,\r
-  330u, 331u, 332u, 333u, 334u, 335u, 336u, 337u,\r
-  340u, 341u, 342u, 343u, 344u, 345u, 346u, 347u,\r
-  350u, 351u, 352u, 353u, 354u, 355u, 356u, 357u,\r
-  360u, 361u, 362u, 363u, 364u, 365u, 366u, 367u,\r
-  370u, 371u, 372u, 373u, 374u, 375u, 376u, 377u,\r
-};\r
-#endif\r
-\r
-const unsigned short OnigEncAsciiCtypeTable[256] = {\r
-  0x4008, 0x4008, 0x4008, 0x4008, 0x4008, 0x4008, 0x4008, 0x4008,\r
-  0x4008, 0x420c, 0x4209, 0x4208, 0x4208, 0x4208, 0x4008, 0x4008,\r
-  0x4008, 0x4008, 0x4008, 0x4008, 0x4008, 0x4008, 0x4008, 0x4008,\r
-  0x4008, 0x4008, 0x4008, 0x4008, 0x4008, 0x4008, 0x4008, 0x4008,\r
-  0x4284, 0x41a0, 0x41a0, 0x41a0, 0x41a0, 0x41a0, 0x41a0, 0x41a0,\r
-  0x41a0, 0x41a0, 0x41a0, 0x41a0, 0x41a0, 0x41a0, 0x41a0, 0x41a0,\r
-  0x78b0, 0x78b0, 0x78b0, 0x78b0, 0x78b0, 0x78b0, 0x78b0, 0x78b0,\r
-  0x78b0, 0x78b0, 0x41a0, 0x41a0, 0x41a0, 0x41a0, 0x41a0, 0x41a0,\r
-  0x41a0, 0x7ca2, 0x7ca2, 0x7ca2, 0x7ca2, 0x7ca2, 0x7ca2, 0x74a2,\r
-  0x74a2, 0x74a2, 0x74a2, 0x74a2, 0x74a2, 0x74a2, 0x74a2, 0x74a2,\r
-  0x74a2, 0x74a2, 0x74a2, 0x74a2, 0x74a2, 0x74a2, 0x74a2, 0x74a2,\r
-  0x74a2, 0x74a2, 0x74a2, 0x41a0, 0x41a0, 0x41a0, 0x41a0, 0x51a0,\r
-  0x41a0, 0x78e2, 0x78e2, 0x78e2, 0x78e2, 0x78e2, 0x78e2, 0x70e2,\r
-  0x70e2, 0x70e2, 0x70e2, 0x70e2, 0x70e2, 0x70e2, 0x70e2, 0x70e2,\r
-  0x70e2, 0x70e2, 0x70e2, 0x70e2, 0x70e2, 0x70e2, 0x70e2, 0x70e2,\r
-  0x70e2, 0x70e2, 0x70e2, 0x41a0, 0x41a0, 0x41a0, 0x41a0, 0x4008,\r
-  0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,\r
-  0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,\r
-  0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,\r
-  0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,\r
-  0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,\r
-  0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,\r
-  0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,\r
-  0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,\r
-  0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,\r
-  0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,\r
-  0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,\r
-  0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,\r
-  0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,\r
-  0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,\r
-  0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,\r
-  0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000\r
-};\r
-\r
-const UChar OnigEncISO_8859_1_ToLowerCaseTable[256] = {\r
-    0u,   1u,   2u,   3u,   4u,   5u,   6u,   7u,\r
-   10u,  11u,  12u,  13u,  14u,  15u,  16u,  17u,\r
-   20u,  21u,  22u,  23u,  24u,  25u,  26u,  27u,\r
-   30u,  31u,  32u,  33u,  34u,  35u,  36u,  37u,\r
-   40u,  41u,  42u,  43u,  44u,  45u,  46u,  47u,\r
-   50u,  51u,  52u,  53u,  54u,  55u,  56u,  57u,\r
-   60u,  61u,  62u,  63u,  64u,  65u,  66u,  67u,\r
-   70u,  71u,  72u,  73u,  74u,  75u,  76u,  77u,\r
-  100u, 141u, 142u, 143u, 144u, 145u, 146u, 147u,\r
-  150u, 151u, 152u, 153u, 154u, 155u, 156u, 157u,\r
-  160u, 161u, 162u, 163u, 164u, 165u, 166u, 167u,\r
-  170u, 171u, 172u, 133u, 134u, 135u, 136u, 137u,\r
-  140u, 141u, 142u, 143u, 144u, 145u, 146u, 147u,\r
-  150u, 151u, 152u, 153u, 154u, 155u, 156u, 157u,\r
-  160u, 161u, 162u, 163u, 164u, 165u, 166u, 167u,\r
-  170u, 171u, 172u, 173u, 174u, 175u, 176u, 177u,\r
-  200u, 201u, 202u, 203u, 204u, 205u, 206u, 207u,\r
-  210u, 211u, 212u, 213u, 214u, 215u, 216u, 217u,\r
-  220u, 221u, 222u, 223u, 224u, 225u, 226u, 227u,\r
-  230u, 231u, 232u, 233u, 234u, 235u, 236u, 237u,\r
-  240u, 241u, 242u, 243u, 244u, 245u, 246u, 247u,\r
-  250u, 251u, 252u, 253u, 254u, 255u, 256u, 257u,\r
-  260u, 261u, 262u, 263u, 264u, 265u, 266u, 267u,\r
-  270u, 271u, 272u, 273u, 274u, 275u, 276u, 277u,\r
-  340u, 341u, 342u, 343u, 344u, 345u, 346u, 347u,\r
-  350u, 351u, 352u, 353u, 354u, 355u, 356u, 357u,\r
-  360u, 361u, 362u, 363u, 364u, 365u, 366u, 327u,\r
-  370u, 371u, 372u, 373u, 374u, 375u, 376u, 337u,\r
-  340u, 341u, 342u, 343u, 344u, 345u, 346u, 347u,\r
-  350u, 351u, 352u, 353u, 354u, 355u, 356u, 357u,\r
-  360u, 361u, 362u, 363u, 364u, 365u, 366u, 367u,\r
-  370u, 371u, 372u, 373u, 374u, 375u, 376u, 377u,\r
-};\r
-\r
-#ifdef USE_UPPER_CASE_TABLE\r
-const UChar OnigEncISO_8859_1_ToUpperCaseTable[256] = {\r
-    0u,   1u,   2u,   3u,   4u,   5u,   6u,   7u,\r
-   10u,  11u,  12u,  13u,  14u,  15u,  16u,  17u,\r
-   20u,  21u,  22u,  23u,  24u,  25u,  26u,  27u,\r
-   30u,  31u,  32u,  33u,  34u,  35u,  36u,  37u,\r
-   40u,  41u,  42u,  43u,  44u,  45u,  46u,  47u,\r
-   50u,  51u,  52u,  53u,  54u,  55u,  56u,  57u,\r
-   60u,  61u,  62u,  63u,  64u,  65u,  66u,  67u,\r
-   70u,  71u,  72u,  73u,  74u,  75u,  76u,  77u,\r
-  100u, 101u, 102u, 103u, 104u, 105u, 106u, 107u,\r
-  110u, 111u, 112u, 113u, 114u, 115u, 116u, 117u,\r
-  120u, 121u, 122u, 123u, 124u, 125u, 126u, 127u,\r
-  130u, 131u, 132u, 133u, 134u, 135u, 136u, 137u,\r
-  140u, 101u, 102u, 103u, 104u, 105u, 106u, 107u,\r
-  110u, 111u, 112u, 113u, 114u, 115u, 116u, 117u,\r
-  120u, 121u, 122u, 123u, 124u, 125u, 126u, 127u,\r
-  130u, 131u, 132u, 173u, 174u, 175u, 176u, 177u,\r
-  200u, 201u, 202u, 203u, 204u, 205u, 206u, 207u,\r
-  210u, 211u, 212u, 213u, 214u, 215u, 216u, 217u,\r
-  220u, 221u, 222u, 223u, 224u, 225u, 226u, 227u,\r
-  230u, 231u, 232u, 233u, 234u, 235u, 236u, 237u,\r
-  240u, 241u, 242u, 243u, 244u, 245u, 246u, 247u,\r
-  250u, 251u, 252u, 253u, 254u, 255u, 256u, 257u,\r
-  260u, 261u, 262u, 263u, 264u, 265u, 266u, 267u,\r
-  270u, 271u, 272u, 273u, 274u, 275u, 276u, 277u,\r
-  300u, 301u, 302u, 303u, 304u, 305u, 306u, 307u,\r
-  310u, 311u, 312u, 313u, 314u, 315u, 316u, 317u,\r
-  320u, 321u, 322u, 323u, 324u, 325u, 326u, 327u,\r
-  330u, 331u, 332u, 333u, 334u, 335u, 336u, 337u,\r
-  300u, 301u, 302u, 303u, 304u, 305u, 306u, 307u,\r
-  310u, 311u, 312u, 313u, 314u, 315u, 316u, 317u,\r
-  320u, 321u, 322u, 323u, 324u, 325u, 326u, 367u,\r
-  330u, 331u, 332u, 333u, 334u, 335u, 336u, 377u,\r
-};\r
-#endif\r
-\r
-extern void\r
-onigenc_set_default_caseconv_table(const UChar* table ARG_UNUSED)\r
-{\r
-  /* nothing */\r
-  /* obsoleted. */\r
-}\r
-\r
-extern UChar*\r
-onigenc_get_left_adjust_char_head(OnigEncoding enc, const UChar* start, const UChar* s)\r
-{\r
-  return ONIGENC_LEFT_ADJUST_CHAR_HEAD(enc, start, s);\r
-}\r
-\r
-const OnigPairCaseFoldCodes OnigAsciiLowerMap[] = {\r
-  { 0x41, 0x61 },\r
-  { 0x42, 0x62 },\r
-  { 0x43, 0x63 },\r
-  { 0x44, 0x64 },\r
-  { 0x45, 0x65 },\r
-  { 0x46, 0x66 },\r
-  { 0x47, 0x67 },\r
-  { 0x48, 0x68 },\r
-  { 0x49, 0x69 },\r
-  { 0x4a, 0x6a },\r
-  { 0x4b, 0x6b },\r
-  { 0x4c, 0x6c },\r
-  { 0x4d, 0x6d },\r
-  { 0x4e, 0x6e },\r
-  { 0x4f, 0x6f },\r
-  { 0x50, 0x70 },\r
-  { 0x51, 0x71 },\r
-  { 0x52, 0x72 },\r
-  { 0x53, 0x73 },\r
-  { 0x54, 0x74 },\r
-  { 0x55, 0x75 },\r
-  { 0x56, 0x76 },\r
-  { 0x57, 0x77 },\r
-  { 0x58, 0x78 },\r
-  { 0x59, 0x79 },\r
-  { 0x5a, 0x7a }\r
-};\r
-\r
-extern int\r
-onigenc_ascii_apply_all_case_fold(OnigCaseFoldType flag ARG_UNUSED,\r
-                                 OnigApplyAllCaseFoldFunc f, void* arg)\r
-{\r
-  OnigCodePoint code;\r
-  int i, r;\r
-\r
-  for (i = 0;\r
-       i < (int )(sizeof(OnigAsciiLowerMap)/sizeof(OnigPairCaseFoldCodes));\r
-       i++) {\r
-    code = OnigAsciiLowerMap[i].to;\r
-    r = (*f)(OnigAsciiLowerMap[i].from, &code, 1, arg);\r
-    if (r != 0) return r;\r
-\r
-    code = OnigAsciiLowerMap[i].from;\r
-    r = (*f)(OnigAsciiLowerMap[i].to, &code, 1, arg);\r
-    if (r != 0) return r;\r
-  }\r
-\r
-  return 0;\r
-}\r
-\r
-extern int\r
-onigenc_ascii_get_case_fold_codes_by_str(OnigCaseFoldType flag ARG_UNUSED,\r
-        const OnigUChar* p, const OnigUChar* end ARG_UNUSED,\r
-        OnigCaseFoldCodeItem items[])\r
-{\r
-  if (0x41 <= *p && *p <= 0x5a) {\r
-    items[0].byte_len = 1;\r
-    items[0].code_len = 1;\r
-    items[0].code[0] = (OnigCodePoint )(*p + 0x20);\r
-    return 1;\r
-  }\r
-  else if (0x61 <= *p && *p <= 0x7a) {\r
-    items[0].byte_len = 1;\r
-    items[0].code_len = 1;\r
-    items[0].code[0] = (OnigCodePoint )(*p - 0x20);\r
-    return 1;\r
-  }\r
-  else\r
-    return 0;\r
-}\r
-\r
-static int\r
-ss_apply_all_case_fold(OnigCaseFoldType flag ARG_UNUSED,\r
-                      OnigApplyAllCaseFoldFunc f, void* arg)\r
-{\r
-  static OnigCodePoint ss[] = { 0x73, 0x73 };\r
-\r
-  return (*f)((OnigCodePoint )0xdf, ss, 2, arg);\r
-}\r
-\r
-extern int\r
-onigenc_apply_all_case_fold_with_map(int map_size,\r
-    const OnigPairCaseFoldCodes map[],\r
-    int ess_tsett_flag, OnigCaseFoldType flag,\r
-    OnigApplyAllCaseFoldFunc f, void* arg)\r
-{\r
-  OnigCodePoint code;\r
-  int i, r;\r
-\r
-  r = onigenc_ascii_apply_all_case_fold(flag, f, arg);\r
-  if (r != 0) return r;\r
-\r
-  for (i = 0; i < map_size; i++) {\r
-    code = map[i].to;\r
-    r = (*f)(map[i].from, &code, 1, arg);\r
-    if (r != 0) return r;\r
-\r
-    code = map[i].from;\r
-    r = (*f)(map[i].to, &code, 1, arg);\r
-    if (r != 0) return r;\r
-  }\r
-\r
-  if (ess_tsett_flag != 0)\r
-    return ss_apply_all_case_fold(flag, f, arg);\r
-\r
-  return 0;\r
-}\r
-\r
-extern int\r
-onigenc_get_case_fold_codes_by_str_with_map(int map_size,\r
-    const OnigPairCaseFoldCodes map[],\r
-    int ess_tsett_flag, OnigCaseFoldType flag ARG_UNUSED,\r
-    const OnigUChar* p, const OnigUChar* end, OnigCaseFoldCodeItem items[])\r
-{\r
-  if (0x41 <= *p && *p <= 0x5a) {\r
-    items[0].byte_len = 1;\r
-    items[0].code_len = 1;\r
-    items[0].code[0] = (OnigCodePoint )(*p + 0x20);\r
-    if (*p == 0x53 && ess_tsett_flag != 0 && end > p + 1\r
-       && (*(p+1) == 0x53 || *(p+1) == 0x73)) {\r
-      /* SS */\r
-      items[1].byte_len = 2;\r
-      items[1].code_len = 1;\r
-      items[1].code[0] = (OnigCodePoint )0xdf;\r
-      return 2;\r
-    }\r
-    else\r
-      return 1;\r
-  }\r
-  else if (0x61 <= *p && *p <= 0x7a) {\r
-    items[0].byte_len = 1;\r
-    items[0].code_len = 1;\r
-    items[0].code[0] = (OnigCodePoint )(*p - 0x20);\r
-    if (*p == 0x73 && ess_tsett_flag != 0 && end > p + 1\r
-       && (*(p+1) == 0x73 || *(p+1) == 0x53)) {\r
-      /* ss */\r
-      items[1].byte_len = 2;\r
-      items[1].code_len = 1;\r
-      items[1].code[0] = (OnigCodePoint )0xdf;\r
-      return 2;\r
-    }\r
-    else\r
-      return 1;\r
-  }\r
-  else if (*p == 0xdf && ess_tsett_flag != 0) {\r
-    items[0].byte_len = 1;\r
-    items[0].code_len = 2;\r
-    items[0].code[0] = (OnigCodePoint )'s';\r
-    items[0].code[1] = (OnigCodePoint )'s';\r
-\r
-    items[1].byte_len = 1;\r
-    items[1].code_len = 2;\r
-    items[1].code[0] = (OnigCodePoint )'S';\r
-    items[1].code[1] = (OnigCodePoint )'S';\r
-\r
-    items[2].byte_len = 1;\r
-    items[2].code_len = 2;\r
-    items[2].code[0] = (OnigCodePoint )'s';\r
-    items[2].code[1] = (OnigCodePoint )'S';\r
-\r
-    items[3].byte_len = 1;\r
-    items[3].code_len = 2;\r
-    items[3].code[0] = (OnigCodePoint )'S';\r
-    items[3].code[1] = (OnigCodePoint )'s';\r
-\r
-    return 4;\r
-  }\r
-  else {\r
-    int i;\r
-\r
-    for (i = 0; i < map_size; i++) {\r
-      if (*p == map[i].from) {\r
-       items[0].byte_len = 1;\r
-       items[0].code_len = 1;\r
-       items[0].code[0] = map[i].to;\r
-       return 1;\r
-      }\r
-      else if (*p == map[i].to) {\r
-       items[0].byte_len = 1;\r
-       items[0].code_len = 1;\r
-       items[0].code[0] = map[i].from;\r
-       return 1;\r
-      }\r
-    }\r
-  }\r
-\r
-  return 0;\r
-}\r
-\r
-\r
-extern int\r
-onigenc_not_support_get_ctype_code_range(OnigCtype ctype ARG_UNUSED,\r
-        OnigCodePoint* sb_out ARG_UNUSED,\r
-        const OnigCodePoint* ranges[] ARG_UNUSED)\r
-{\r
-  return ONIG_NO_SUPPORT_CONFIG;\r
-}\r
-\r
-extern int\r
-onigenc_is_mbc_newline_0x0a(const UChar* p, const UChar* end)\r
-{\r
-  if (p < end) {\r
-    if (*p == 0x0a) return 1;\r
-  }\r
-  return 0;\r
-}\r
-\r
-/* for single byte encodings */\r
-extern int\r
-onigenc_ascii_mbc_case_fold(OnigCaseFoldType flag ARG_UNUSED, const UChar** p,\r
-           const UChar*end ARG_UNUSED, UChar* lower)\r
-{\r
-  *lower = ONIGENC_ASCII_CODE_TO_LOWER_CASE(**p);\r
-\r
-  (*p)++;\r
-  return 1; /* return byte length of converted char to lower */\r
-}\r
-\r
-#if 0\r
-extern int\r
-onigenc_ascii_is_mbc_ambiguous(OnigCaseFoldType flag,\r
-                              const UChar** pp, const UChar* end)\r
-{\r
-  const UChar* p = *pp;\r
-\r
-  (*pp)++;\r
-  return ONIGENC_IS_ASCII_CODE_CASE_AMBIG(*p);\r
-}\r
-#endif\r
-\r
-extern int\r
-onigenc_single_byte_mbc_enc_len(const UChar* p ARG_UNUSED)\r
-{\r
-  return 1;\r
-}\r
-\r
-extern OnigCodePoint\r
-onigenc_single_byte_mbc_to_code(const UChar* p, const UChar* end ARG_UNUSED)\r
-{\r
-  return (OnigCodePoint )(*p);\r
-}\r
-\r
-extern int\r
-onigenc_single_byte_code_to_mbclen(OnigCodePoint code ARG_UNUSED)\r
-{\r
-  return (code < 0x100 ? 1 : ONIGERR_INVALID_CODE_POINT_VALUE);\r
-}\r
-\r
-extern int\r
-onigenc_single_byte_code_to_mbc(OnigCodePoint code, UChar *buf)\r
-{\r
-  *buf = (UChar )(code & 0xff);\r
-  return 1;\r
-}\r
-\r
-extern UChar*\r
-onigenc_single_byte_left_adjust_char_head(const UChar* start ARG_UNUSED,\r
-                                         const UChar* s)\r
-{\r
-  return (UChar* )s;\r
-}\r
-\r
-extern int\r
-onigenc_always_true_is_allowed_reverse_match(const UChar* s   ARG_UNUSED,\r
-                                            const UChar* end ARG_UNUSED)\r
-{\r
-  return TRUE;\r
-}\r
-\r
-extern int\r
-onigenc_always_false_is_allowed_reverse_match(const UChar* s   ARG_UNUSED,\r
-                                             const UChar* end ARG_UNUSED)\r
-{\r
-  return FALSE;\r
-}\r
-\r
-extern OnigCodePoint\r
-onigenc_mbn_mbc_to_code(OnigEncoding enc, const UChar* p, const UChar* end)\r
-{\r
-  int c, i, len;\r
-  OnigCodePoint n;\r
-\r
-  len = enclen(enc, p);\r
-  n = (OnigCodePoint )(*p++);\r
-  if (len == 1) return n;\r
-\r
-  for (i = 1; i < len; i++) {\r
-    if (p >= end) break;\r
-    c = *p++;\r
-    n <<= 8;  n += c;\r
-  }\r
-  return n;\r
-}\r
-\r
-extern int\r
-onigenc_mbn_mbc_case_fold(OnigEncoding enc, OnigCaseFoldType flag ARG_UNUSED,\r
-                          const UChar** pp, const UChar* end ARG_UNUSED,\r
-                         UChar* lower)\r
-{\r
-  int len;\r
-  const UChar *p = *pp;\r
-\r
-  if (ONIGENC_IS_MBC_ASCII(p)) {\r
-    *lower = ONIGENC_ASCII_CODE_TO_LOWER_CASE(*p);\r
-    (*pp)++;\r
-    return 1;\r
-  }\r
-  else {\r
-    int i;\r
-\r
-    len = enclen(enc, p);\r
-    for (i = 0; i < len; i++) {\r
-      *lower++ = *p++;\r
-    }\r
-    (*pp) += len;\r
-    return len; /* return byte length of converted to lower char */\r
-  }\r
-}\r
-\r
-#if 0\r
-extern int\r
-onigenc_mbn_is_mbc_ambiguous(OnigEncoding enc, OnigCaseFoldType flag,\r
-                             const UChar** pp, const UChar* end)\r
-{\r
-  const UChar* p = *pp;\r
-\r
-  if (ONIGENC_IS_MBC_ASCII(p)) {\r
-    (*pp)++;\r
-    return ONIGENC_IS_ASCII_CODE_CASE_AMBIG(*p);\r
-  }\r
-\r
-  (*pp) += enclen(enc, p);\r
-  return FALSE;\r
-}\r
-#endif\r
-\r
-extern int\r
-onigenc_mb2_code_to_mbclen(OnigCodePoint code)\r
-{\r
-  if ((code & 0xff00) != 0) return 2;\r
-  else return 1;\r
-}\r
-\r
-extern int\r
-onigenc_mb4_code_to_mbclen(OnigCodePoint code)\r
-{\r
-       if ((code & 0xff000000) != 0) return 4;\r
-  else if ((code & 0xff0000) != 0) return 3;\r
-  else if ((code & 0xff00) != 0) return 2;\r
-  else return 1;\r
-}\r
-\r
-extern int\r
-onigenc_mb2_code_to_mbc(OnigEncoding enc, OnigCodePoint code, UChar *buf)\r
-{\r
-  UChar *p = buf;\r
-\r
-  if ((code & 0xff00) != 0) {\r
-    *p++ = (UChar )((code >>  8) & 0xff);\r
-  }\r
-  *p++ = (UChar )(code & 0xff);\r
-\r
-#if 1\r
-  if (enclen(enc, buf) != (p - buf))\r
-    return ONIGERR_INVALID_CODE_POINT_VALUE;\r
-#endif\r
-  return (int)(p - buf);\r
-}\r
-\r
-extern int\r
-onigenc_mb4_code_to_mbc(OnigEncoding enc, OnigCodePoint code, UChar *buf)\r
-{\r
-  UChar *p = buf;\r
-\r
-  if ((code & 0xff000000) != 0) {\r
-    *p++ = (UChar )((code >> 24) & 0xff);\r
-  }\r
-  if ((code & 0xff0000) != 0 || p != buf) {\r
-    *p++ = (UChar )((code >> 16) & 0xff);\r
-  }\r
-  if ((code & 0xff00) != 0 || p != buf) {\r
-    *p++ = (UChar )((code >> 8) & 0xff);\r
-  }\r
-  *p++ = (UChar )(code & 0xff);\r
-\r
-#if 1\r
-  if (enclen(enc, buf) != (p - buf))\r
-    return ONIGERR_INVALID_CODE_POINT_VALUE;\r
-#endif\r
-  return (int)(p - buf);\r
-}\r
-\r
-extern int\r
-onigenc_minimum_property_name_to_ctype(OnigEncoding enc, UChar* p, UChar* end)\r
-{\r
-  static PosixBracketEntryType PBS[] = {\r
-    { (UChar* )"Alnum",  ONIGENC_CTYPE_ALNUM,  5 },\r
-    { (UChar* )"Alpha",  ONIGENC_CTYPE_ALPHA,  5 },\r
-    { (UChar* )"Blank",  ONIGENC_CTYPE_BLANK,  5 },\r
-    { (UChar* )"Cntrl",  ONIGENC_CTYPE_CNTRL,  5 },\r
-    { (UChar* )"Digit",  ONIGENC_CTYPE_DIGIT,  5 },\r
-    { (UChar* )"Graph",  ONIGENC_CTYPE_GRAPH,  5 },\r
-    { (UChar* )"Lower",  ONIGENC_CTYPE_LOWER,  5 },\r
-    { (UChar* )"Print",  ONIGENC_CTYPE_PRINT,  5 },\r
-    { (UChar* )"Punct",  ONIGENC_CTYPE_PUNCT,  5 },\r
-    { (UChar* )"Space",  ONIGENC_CTYPE_SPACE,  5 },\r
-    { (UChar* )"Upper",  ONIGENC_CTYPE_UPPER,  5 },\r
-    { (UChar* )"XDigit", ONIGENC_CTYPE_XDIGIT, 6 },\r
-    { (UChar* )"ASCII",  ONIGENC_CTYPE_ASCII,  5 },\r
-    { (UChar* )"Word",   ONIGENC_CTYPE_WORD,   4 },\r
-    { (UChar* )NULL, -1, 0 }\r
-  };\r
-\r
-  PosixBracketEntryType *pb;\r
-  int len;\r
-\r
-  len = onigenc_strlen(enc, p, end);\r
-  for (pb = PBS; IS_NOT_NULL(pb->name); pb++) {\r
-    if (len == pb->len &&\r
-        onigenc_with_ascii_strncmp(enc, p, end, pb->name, pb->len) == 0)\r
-      return pb->ctype;\r
-  }\r
-\r
-  return ONIGERR_INVALID_CHAR_PROPERTY_NAME;\r
-}\r
-\r
-extern int\r
-onigenc_mb2_is_code_ctype(OnigEncoding enc, OnigCodePoint code,\r
-                         unsigned int ctype)\r
-{\r
-  if (code < 128)\r
-    return ONIGENC_IS_ASCII_CODE_CTYPE(code, ctype);\r
-  else {\r
-    if (CTYPE_IS_WORD_GRAPH_PRINT(ctype)) {\r
-      return (ONIGENC_CODE_TO_MBCLEN(enc, code) > 1 ? TRUE : FALSE);\r
-    }\r
-  }\r
-\r
-  return FALSE;\r
-}\r
-\r
-extern int\r
-onigenc_mb4_is_code_ctype(OnigEncoding enc, OnigCodePoint code,\r
-                         unsigned int ctype)\r
-{\r
-  if (code < 128)\r
-    return ONIGENC_IS_ASCII_CODE_CTYPE(code, ctype);\r
-  else {\r
-    if (CTYPE_IS_WORD_GRAPH_PRINT(ctype)) {\r
-      return (ONIGENC_CODE_TO_MBCLEN(enc, code) > 1 ? TRUE : FALSE);\r
-    }\r
-  }\r
-\r
-  return FALSE;\r
-}\r
-\r
-extern int\r
-onigenc_with_ascii_strncmp(OnigEncoding enc, const UChar* p, const UChar* end,\r
-                           const UChar* sascii /* ascii */, int n)\r
-{\r
-  int x, c;\r
-\r
-  while (n-- > 0) {\r
-    if (p >= end) return (int )(*sascii);\r
-\r
-    c = (int )ONIGENC_MBC_TO_CODE(enc, p, end);\r
-    x = *sascii - c;\r
-    if (x) return x;\r
-\r
-    sascii++;\r
-    p += enclen(enc, p);\r
-  }\r
-  return 0;\r
-}\r
-\r
-/* Property management */\r
-static int\r
-resize_property_list(int new_size, const OnigCodePoint*** plist, int* psize)\r
-{\r
-  int size;\r
-  const OnigCodePoint **list = *plist;\r
-\r
-  size = sizeof(OnigCodePoint*) * new_size;\r
-  if (IS_NULL(list)) {\r
-    list = (const OnigCodePoint** )xmalloc(size);\r
-  }\r
-  else {\r
-    list = (const OnigCodePoint** )xrealloc((void* )list, size, *psize * sizeof(OnigCodePoint*));\r
-  }\r
-\r
-  if (IS_NULL(list)) return ONIGERR_MEMORY;\r
-\r
-  *plist = list;\r
-  *psize = new_size;\r
-\r
-  return 0;\r
-}\r
-\r
-extern int\r
-onigenc_property_list_add_property(UChar* name, const OnigCodePoint* prop,\r
-     hash_table_type **table, const OnigCodePoint*** plist, int *pnum,\r
-     int *psize)\r
-{\r
-#define PROP_INIT_SIZE     16\r
-\r
-  int r;\r
-\r
-  if (*psize <= *pnum) {\r
-    int new_size = (*psize == 0 ? PROP_INIT_SIZE : *psize * 2);\r
-    r = resize_property_list(new_size, plist, psize);\r
-    if (r != 0) return r;\r
-  }\r
-\r
-  (*plist)[*pnum] = prop;\r
-\r
-  if (ONIG_IS_NULL(*table)) {\r
-    *table = onig_st_init_strend_table_with_size(PROP_INIT_SIZE);\r
-    if (ONIG_IS_NULL(*table)) return ONIGERR_MEMORY;\r
-  }\r
-\r
-  *pnum = *pnum + 1;\r
-  onig_st_insert_strend(*table, name, name + strlen_s((char* )name, MAX_STRING_SIZE),\r
-                       (hash_data_type )(*pnum + ONIGENC_MAX_STD_CTYPE));\r
-  return 0;\r
-}\r
-\r
-extern int\r
-onigenc_property_list_init(int (*f)(void))\r
-{\r
-  int r;\r
-\r
-  THREAD_ATOMIC_START;\r
-\r
-  r = f();\r
-\r
-  THREAD_ATOMIC_END;\r
-  return r;\r
-}\r
diff --git a/MdeModulePkg/Universal/RegularExpressionDxe/Oniguruma/regenc.h b/MdeModulePkg/Universal/RegularExpressionDxe/Oniguruma/regenc.h
deleted file mode 100644 (file)
index 1d39f9c..0000000
+++ /dev/null
@@ -1,189 +0,0 @@
-#ifndef REGENC_H\r
-#define REGENC_H\r
-/**********************************************************************\r
-  regenc.h -  Oniguruma (regular expression library)\r
-**********************************************************************/\r
-/*-\r
- * Copyright (c) 2002-2008  K.Kosako  <sndgk393 AT ybb DOT ne DOT jp>\r
- * All rights reserved.\r
- *\r
- * Redistribution and use in source and binary forms, with or without\r
- * modification, are permitted provided that the following conditions\r
- * are met:\r
- * 1. Redistributions of source code must retain the above copyright\r
- *    notice, this list of conditions and the following disclaimer.\r
- * 2. Redistributions in binary form must reproduce the above copyright\r
- *    notice, this list of conditions and the following disclaimer in the\r
- *    documentation and/or other materials provided with the distribution.\r
- *\r
- * THIS SOFTWARE IS PROVIDED BY THE AUTHOR AND CONTRIBUTORS ``AS IS'' AND\r
- * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE\r
- * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE\r
- * ARE DISCLAIMED.  IN NO EVENT SHALL THE AUTHOR OR CONTRIBUTORS BE LIABLE\r
- * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL\r
- * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS\r
- * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)\r
- * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT\r
- * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY\r
- * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF\r
- * SUCH DAMAGE.\r
- */\r
-\r
-#ifndef PACKAGE\r
-/* PACKAGE is defined in config.h */\r
-//#include "config.h"\r
-#endif\r
-\r
-#ifdef ONIG_ESCAPE_UCHAR_COLLISION\r
-#undef ONIG_ESCAPE_UCHAR_COLLISION\r
-#endif\r
-\r
-#include "oniguruma.h"\r
-\r
-typedef struct {\r
-  OnigCodePoint from;\r
-  OnigCodePoint to;\r
-} OnigPairCaseFoldCodes;\r
-\r
-\r
-#ifndef NULL\r
-#define NULL   ((void* )0)\r
-#endif\r
-\r
-#ifndef TRUE\r
-#define TRUE    1\r
-#endif\r
-\r
-#ifndef FALSE\r
-#define FALSE   0\r
-#endif\r
-\r
-#ifndef ARG_UNUSED\r
-#if defined(__GNUC__)\r
-#  define ARG_UNUSED  __attribute__ ((unused))\r
-#else\r
-#  define ARG_UNUSED\r
-#endif\r
-#endif\r
-\r
-#define ONIG_IS_NULL(p)                    (((void*)(p)) == (void*)0)\r
-#define ONIG_IS_NOT_NULL(p)                (((void*)(p)) != (void*)0)\r
-#define ONIG_CHECK_NULL_RETURN(p)          if (ONIG_IS_NULL(p)) return NULL\r
-#define ONIG_CHECK_NULL_RETURN_VAL(p,val)  if (ONIG_IS_NULL(p)) return (val)\r
-\r
-#define enclen(enc,p)      ONIGENC_MBC_ENC_LEN(enc,p)\r
-\r
-/* character types bit flag */\r
-#define BIT_CTYPE_NEWLINE  (1<< ONIGENC_CTYPE_NEWLINE)\r
-#define BIT_CTYPE_ALPHA    (1<< ONIGENC_CTYPE_ALPHA)\r
-#define BIT_CTYPE_BLANK    (1<< ONIGENC_CTYPE_BLANK)\r
-#define BIT_CTYPE_CNTRL    (1<< ONIGENC_CTYPE_CNTRL)\r
-#define BIT_CTYPE_DIGIT    (1<< ONIGENC_CTYPE_DIGIT)\r
-#define BIT_CTYPE_GRAPH    (1<< ONIGENC_CTYPE_GRAPH)\r
-#define BIT_CTYPE_LOWER    (1<< ONIGENC_CTYPE_LOWER)\r
-#define BIT_CTYPE_PRINT    (1<< ONIGENC_CTYPE_PRINT)\r
-#define BIT_CTYPE_PUNCT    (1<< ONIGENC_CTYPE_PUNCT)\r
-#define BIT_CTYPE_SPACE    (1<< ONIGENC_CTYPE_SPACE)\r
-#define BIT_CTYPE_UPPER    (1<< ONIGENC_CTYPE_UPPER)\r
-#define BIT_CTYPE_XDIGIT   (1<< ONIGENC_CTYPE_XDIGIT)\r
-#define BIT_CTYPE_WORD     (1<< ONIGENC_CTYPE_WORD)\r
-#define BIT_CTYPE_ALNUM    (1<< ONIGENC_CTYPE_ALNUM)\r
-#define BIT_CTYPE_ASCII    (1<< ONIGENC_CTYPE_ASCII)\r
-\r
-#define CTYPE_TO_BIT(ctype)  (1<<(ctype))\r
-#define CTYPE_IS_WORD_GRAPH_PRINT(ctype) \\r
-  ((ctype) == ONIGENC_CTYPE_WORD || (ctype) == ONIGENC_CTYPE_GRAPH ||\\r
-   (ctype) == ONIGENC_CTYPE_PRINT)\r
-\r
-\r
-typedef struct {\r
-  UChar    *name;\r
-  int       ctype;\r
-  short int len;\r
-} PosixBracketEntryType;\r
-\r
-\r
-/* #define USE_CRNL_AS_LINE_TERMINATOR */\r
-#define USE_UNICODE_PROPERTIES\r
-/* #define USE_UNICODE_CASE_FOLD_TURKISH_AZERI */\r
-/* #define USE_UNICODE_ALL_LINE_TERMINATORS */  /* see Unicode.org UTF#18 */\r
-\r
-\r
-#define ONIG_ENCODING_INIT_DEFAULT           ONIG_ENCODING_ASCII\r
-\r
-/* for encoding system implementation (internal) */\r
-ONIG_EXTERN int onigenc_ascii_apply_all_case_fold P_((OnigCaseFoldType flag, OnigApplyAllCaseFoldFunc f, void* arg));\r
-ONIG_EXTERN int onigenc_ascii_get_case_fold_codes_by_str P_((OnigCaseFoldType flag, const OnigUChar* p, const OnigUChar* end, OnigCaseFoldCodeItem items[]));\r
-ONIG_EXTERN int onigenc_apply_all_case_fold_with_map P_((int map_size, const OnigPairCaseFoldCodes map[], int ess_tsett_flag, OnigCaseFoldType flag, OnigApplyAllCaseFoldFunc f, void* arg));\r
-ONIG_EXTERN int onigenc_get_case_fold_codes_by_str_with_map P_((int map_size, const OnigPairCaseFoldCodes map[], int ess_tsett_flag, OnigCaseFoldType flag, const OnigUChar* p, const OnigUChar* end, OnigCaseFoldCodeItem items[]));\r
-ONIG_EXTERN int onigenc_not_support_get_ctype_code_range P_((OnigCtype ctype, OnigCodePoint* sb_out, const OnigCodePoint* ranges[]));\r
-ONIG_EXTERN int onigenc_is_mbc_newline_0x0a P_((const UChar* p, const UChar* end));\r
-\r
-\r
-/* methods for single byte encoding */\r
-ONIG_EXTERN int onigenc_ascii_mbc_case_fold P_((OnigCaseFoldType flag, const UChar** p, const UChar* end, UChar* lower));\r
-ONIG_EXTERN int onigenc_single_byte_mbc_enc_len P_((const UChar* p));\r
-ONIG_EXTERN OnigCodePoint onigenc_single_byte_mbc_to_code P_((const UChar* p, const UChar* end));\r
-ONIG_EXTERN int onigenc_single_byte_code_to_mbclen P_((OnigCodePoint code));\r
-ONIG_EXTERN int onigenc_single_byte_code_to_mbc P_((OnigCodePoint code, UChar *buf));\r
-ONIG_EXTERN UChar* onigenc_single_byte_left_adjust_char_head P_((const UChar* start, const UChar* s));\r
-ONIG_EXTERN int onigenc_always_true_is_allowed_reverse_match P_((const UChar* s, const UChar* end));\r
-ONIG_EXTERN int onigenc_always_false_is_allowed_reverse_match P_((const UChar* s, const UChar* end));\r
-\r
-/* methods for multi byte encoding */\r
-ONIG_EXTERN OnigCodePoint onigenc_mbn_mbc_to_code P_((OnigEncoding enc, const UChar* p, const UChar* end));\r
-ONIG_EXTERN int onigenc_mbn_mbc_case_fold P_((OnigEncoding enc, OnigCaseFoldType flag, const UChar** p, const UChar* end, UChar* lower));\r
-ONIG_EXTERN int onigenc_mb2_code_to_mbclen P_((OnigCodePoint code));\r
-ONIG_EXTERN int onigenc_mb2_code_to_mbc P_((OnigEncoding enc, OnigCodePoint code, UChar *buf));\r
-ONIG_EXTERN int onigenc_minimum_property_name_to_ctype P_((OnigEncoding enc, UChar* p, UChar* end));\r
-ONIG_EXTERN int onigenc_unicode_property_name_to_ctype P_((OnigEncoding enc, UChar* p, UChar* end));\r
-ONIG_EXTERN int onigenc_mb2_is_code_ctype P_((OnigEncoding enc, OnigCodePoint code, unsigned int ctype));\r
-ONIG_EXTERN int onigenc_mb4_code_to_mbclen P_((OnigCodePoint code));\r
-ONIG_EXTERN int onigenc_mb4_code_to_mbc P_((OnigEncoding enc, OnigCodePoint code, UChar *buf));\r
-ONIG_EXTERN int onigenc_mb4_is_code_ctype P_((OnigEncoding enc, OnigCodePoint code, unsigned int ctype));\r
-\r
-\r
-/* in enc/unicode.c */\r
-ONIG_EXTERN int onigenc_unicode_is_code_ctype P_((OnigCodePoint code, unsigned int ctype));\r
-ONIG_EXTERN int onigenc_utf16_32_get_ctype_code_range P_((OnigCtype ctype, OnigCodePoint *sb_out, const OnigCodePoint* ranges[]));\r
-ONIG_EXTERN int onigenc_unicode_ctype_code_range P_((int ctype, const OnigCodePoint* ranges[]));\r
-ONIG_EXTERN int onigenc_unicode_get_case_fold_codes_by_str P_((OnigEncoding enc, OnigCaseFoldType flag, const OnigUChar* p, const OnigUChar* end, OnigCaseFoldCodeItem items[]));\r
-ONIG_EXTERN int onigenc_unicode_mbc_case_fold P_((OnigEncoding enc, OnigCaseFoldType flag, const UChar** pp, const UChar* end, UChar* fold));\r
-ONIG_EXTERN int onigenc_unicode_apply_all_case_fold P_((OnigCaseFoldType flag, OnigApplyAllCaseFoldFunc f, void* arg));\r
-\r
-\r
-#define UTF16_IS_SURROGATE_FIRST(c)    (((c) & 0xfc) == 0xd8)\r
-#define UTF16_IS_SURROGATE_SECOND(c)   (((c) & 0xfc) == 0xdc)\r
-\r
-#define ONIGENC_ISO_8859_1_TO_LOWER_CASE(c) \\r
-  OnigEncISO_8859_1_ToLowerCaseTable[c]\r
-#define ONIGENC_ISO_8859_1_TO_UPPER_CASE(c) \\r
-  OnigEncISO_8859_1_ToUpperCaseTable[c]\r
-\r
-ONIG_EXTERN const UChar OnigEncISO_8859_1_ToLowerCaseTable[];\r
-ONIG_EXTERN const UChar OnigEncISO_8859_1_ToUpperCaseTable[];\r
-\r
-ONIG_EXTERN int\r
-onigenc_with_ascii_strncmp P_((OnigEncoding enc, const UChar* p, const UChar* end, const UChar* sascii /* ascii */, int n));\r
-ONIG_EXTERN UChar*\r
-onigenc_step P_((OnigEncoding enc, const UChar* p, const UChar* end, int n));\r
-\r
-/* defined in regexec.c, but used in enc/xxx.c */\r
-extern int  onig_is_in_code_range P_((const UChar* p, OnigCodePoint code));\r
-\r
-ONIG_EXTERN OnigEncoding  OnigEncDefaultCharEncoding;\r
-ONIG_EXTERN const UChar  OnigEncAsciiToLowerCaseTable[];\r
-ONIG_EXTERN const UChar  OnigEncAsciiToUpperCaseTable[];\r
-ONIG_EXTERN const unsigned short OnigEncAsciiCtypeTable[];\r
-\r
-#define ONIGENC_IS_ASCII_CODE(code)  ((code) < 0x80)\r
-#define ONIGENC_ASCII_CODE_TO_LOWER_CASE(c) OnigEncAsciiToLowerCaseTable[c]\r
-#define ONIGENC_ASCII_CODE_TO_UPPER_CASE(c) OnigEncAsciiToUpperCaseTable[c]\r
-#define ONIGENC_IS_ASCII_CODE_CTYPE(code,ctype) \\r
-  ((OnigEncAsciiCtypeTable[code] & CTYPE_TO_BIT(ctype)) != 0)\r
-#define ONIGENC_IS_ASCII_CODE_CASE_AMBIG(code) \\r
- (ONIGENC_IS_ASCII_CODE_CTYPE(code, ONIGENC_CTYPE_UPPER) ||\\r
-  ONIGENC_IS_ASCII_CODE_CTYPE(code, ONIGENC_CTYPE_LOWER))\r
-   \r
-\r
-#endif /* REGENC_H */\r
diff --git a/MdeModulePkg/Universal/RegularExpressionDxe/Oniguruma/regerror.c b/MdeModulePkg/Universal/RegularExpressionDxe/Oniguruma/regerror.c
deleted file mode 100644 (file)
index 7bbcd02..0000000
+++ /dev/null
@@ -1,394 +0,0 @@
-/**********************************************************************\r
-  regerror.c -  Oniguruma (regular expression library)\r
-**********************************************************************/\r
-/*-\r
- * Copyright (c) 2002-2007  K.Kosako  <sndgk393 AT ybb DOT ne DOT jp>\r
- * All rights reserved.\r
- *\r
- * Copyright (c) 2015, Hewlett Packard Enterprise Development, L.P.<BR>\r
- *\r
- * Redistribution and use in source and binary forms, with or without\r
- * modification, are permitted provided that the following conditions\r
- * are met:\r
- * 1. Redistributions of source code must retain the above copyright\r
- *    notice, this list of conditions and the following disclaimer.\r
- * 2. Redistributions in binary form must reproduce the above copyright\r
- *    notice, this list of conditions and the following disclaimer in the\r
- *    documentation and/or other materials provided with the distribution.\r
- *\r
- * THIS SOFTWARE IS PROVIDED BY THE AUTHOR AND CONTRIBUTORS ``AS IS'' AND\r
- * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE\r
- * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE\r
- * ARE DISCLAIMED.  IN NO EVENT SHALL THE AUTHOR OR CONTRIBUTORS BE LIABLE\r
- * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL\r
- * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS\r
- * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)\r
- * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT\r
- * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY\r
- * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF\r
- * SUCH DAMAGE.\r
- */\r
-\r
-#define HAVE_STDARG_PROTOTYPES\r
-\r
-#include "regint.h"\r
-\r
-#if 0\r
-#include <stdio.h> /* for vsnprintf() */\r
-\r
-#ifdef HAVE_STDARG_PROTOTYPES\r
-#include <stdarg.h>\r
-#define va_init_list(a,b) va_start(a,b)\r
-#else\r
-#include <varargs.h>\r
-#define va_init_list(a,b) va_start(a)\r
-#endif\r
-#endif\r
-\r
-extern UChar*\r
-onig_error_code_to_format(int code)\r
-{\r
-  char *p;\r
-\r
-  if (code >= 0) return (UChar* )0;\r
-\r
-  switch (code) {\r
-  case ONIG_MISMATCH:\r
-    p = "mismatch"; break;\r
-  case ONIG_NO_SUPPORT_CONFIG:\r
-    p = "no support in this configuration"; break;\r
-  case ONIGERR_MEMORY:\r
-    p = "fail to memory allocation"; break;\r
-  case ONIGERR_MATCH_STACK_LIMIT_OVER:\r
-    p = "match-stack limit over"; break;\r
-  case ONIGERR_TYPE_BUG:\r
-    p = "undefined type (bug)"; break;\r
-  case ONIGERR_PARSER_BUG:\r
-    p = "internal parser error (bug)"; break;\r
-  case ONIGERR_STACK_BUG:\r
-    p = "stack error (bug)"; break;\r
-  case ONIGERR_UNDEFINED_BYTECODE:\r
-    p = "undefined bytecode (bug)"; break;\r
-  case ONIGERR_UNEXPECTED_BYTECODE:\r
-    p = "unexpected bytecode (bug)"; break;\r
-  case ONIGERR_DEFAULT_ENCODING_IS_NOT_SETTED:\r
-    p = "default multibyte-encoding is not setted"; break;\r
-  case ONIGERR_SPECIFIED_ENCODING_CANT_CONVERT_TO_WIDE_CHAR:\r
-    p = "can't convert to wide-char on specified multibyte-encoding"; break;\r
-  case ONIGERR_INVALID_ARGUMENT:\r
-    p = "invalid argument"; break;\r
-  case ONIGERR_END_PATTERN_AT_LEFT_BRACE:\r
-    p = "end pattern at left brace"; break;\r
-  case ONIGERR_END_PATTERN_AT_LEFT_BRACKET:\r
-    p = "end pattern at left bracket"; break;\r
-  case ONIGERR_EMPTY_CHAR_CLASS:\r
-    p = "empty char-class"; break;\r
-  case ONIGERR_PREMATURE_END_OF_CHAR_CLASS:\r
-    p = "premature end of char-class"; break;\r
-  case ONIGERR_END_PATTERN_AT_ESCAPE:\r
-    p = "end pattern at escape"; break;\r
-  case ONIGERR_END_PATTERN_AT_META:\r
-    p = "end pattern at meta"; break;\r
-  case ONIGERR_END_PATTERN_AT_CONTROL:\r
-    p = "end pattern at control"; break;\r
-  case ONIGERR_META_CODE_SYNTAX:\r
-    p = "invalid meta-code syntax"; break;\r
-  case ONIGERR_CONTROL_CODE_SYNTAX:\r
-    p = "invalid control-code syntax"; break;\r
-  case ONIGERR_CHAR_CLASS_VALUE_AT_END_OF_RANGE:\r
-    p = "char-class value at end of range"; break;\r
-  case ONIGERR_CHAR_CLASS_VALUE_AT_START_OF_RANGE:\r
-    p = "char-class value at start of range"; break;\r
-  case ONIGERR_UNMATCHED_RANGE_SPECIFIER_IN_CHAR_CLASS:\r
-    p = "unmatched range specifier in char-class"; break;\r
-  case ONIGERR_TARGET_OF_REPEAT_OPERATOR_NOT_SPECIFIED:\r
-    p = "target of repeat operator is not specified"; break;\r
-  case ONIGERR_TARGET_OF_REPEAT_OPERATOR_INVALID:\r
-    p = "target of repeat operator is invalid"; break;\r
-  case ONIGERR_NESTED_REPEAT_OPERATOR:\r
-    p = "nested repeat operator"; break;\r
-  case ONIGERR_UNMATCHED_CLOSE_PARENTHESIS:\r
-    p = "unmatched close parenthesis"; break;\r
-  case ONIGERR_END_PATTERN_WITH_UNMATCHED_PARENTHESIS:\r
-    p = "end pattern with unmatched parenthesis"; break;\r
-  case ONIGERR_END_PATTERN_IN_GROUP:\r
-    p = "end pattern in group"; break;\r
-  case ONIGERR_UNDEFINED_GROUP_OPTION:\r
-    p = "undefined group option"; break;\r
-  case ONIGERR_INVALID_POSIX_BRACKET_TYPE:\r
-    p = "invalid POSIX bracket type"; break;\r
-  case ONIGERR_INVALID_LOOK_BEHIND_PATTERN:\r
-    p = "invalid pattern in look-behind"; break;\r
-  case ONIGERR_INVALID_REPEAT_RANGE_PATTERN:\r
-    p = "invalid repeat range {lower,upper}"; break;\r
-  case ONIGERR_TOO_BIG_NUMBER:\r
-    p = "too big number"; break;\r
-  case ONIGERR_TOO_BIG_NUMBER_FOR_REPEAT_RANGE:\r
-    p = "too big number for repeat range"; break;\r
-  case ONIGERR_UPPER_SMALLER_THAN_LOWER_IN_REPEAT_RANGE:\r
-    p = "upper is smaller than lower in repeat range"; break;\r
-  case ONIGERR_EMPTY_RANGE_IN_CHAR_CLASS:\r
-    p = "empty range in char class"; break;\r
-  case ONIGERR_MISMATCH_CODE_LENGTH_IN_CLASS_RANGE:\r
-    p = "mismatch multibyte code length in char-class range"; break;\r
-  case ONIGERR_TOO_MANY_MULTI_BYTE_RANGES:\r
-    p = "too many multibyte code ranges are specified"; break;\r
-  case ONIGERR_TOO_SHORT_MULTI_BYTE_STRING:\r
-    p = "too short multibyte code string"; break;\r
-  case ONIGERR_TOO_BIG_BACKREF_NUMBER:\r
-    p = "too big backref number"; break;\r
-  case ONIGERR_INVALID_BACKREF:\r
-#ifdef USE_NAMED_GROUP\r
-    p = "invalid backref number/name"; break;\r
-#else\r
-    p = "invalid backref number"; break;\r
-#endif\r
-  case ONIGERR_NUMBERED_BACKREF_OR_CALL_NOT_ALLOWED:\r
-    p = "numbered backref/call is not allowed. (use name)"; break;\r
-  case ONIGERR_TOO_BIG_WIDE_CHAR_VALUE:\r
-    p = "too big wide-char value"; break;\r
-  case ONIGERR_TOO_LONG_WIDE_CHAR_VALUE:\r
-    p = "too long wide-char value"; break;\r
-  case ONIGERR_INVALID_CODE_POINT_VALUE:\r
-    p = "invalid code point value"; break;\r
-  case ONIGERR_EMPTY_GROUP_NAME:\r
-    p = "group name is empty"; break;\r
-  case ONIGERR_INVALID_GROUP_NAME:\r
-    p = "invalid group name <%n>"; break;\r
-  case ONIGERR_INVALID_CHAR_IN_GROUP_NAME:\r
-#ifdef USE_NAMED_GROUP\r
-    p = "invalid char in group name <%n>"; break;\r
-#else\r
-    p = "invalid char in group number <%n>"; break;\r
-#endif\r
-  case ONIGERR_UNDEFINED_NAME_REFERENCE:\r
-    p = "undefined name <%n> reference"; break;\r
-  case ONIGERR_UNDEFINED_GROUP_REFERENCE:\r
-    p = "undefined group <%n> reference"; break;\r
-  case ONIGERR_MULTIPLEX_DEFINED_NAME:\r
-    p = "multiplex defined name <%n>"; break;\r
-  case ONIGERR_MULTIPLEX_DEFINITION_NAME_CALL:\r
-    p = "multiplex definition name <%n> call"; break;\r
-  case ONIGERR_NEVER_ENDING_RECURSION:\r
-    p = "never ending recursion"; break;\r
-  case ONIGERR_GROUP_NUMBER_OVER_FOR_CAPTURE_HISTORY:\r
-    p = "group number is too big for capture history"; break;\r
-  case ONIGERR_INVALID_CHAR_PROPERTY_NAME:\r
-    p = "invalid character property name {%n}"; break;\r
-  case ONIGERR_NOT_SUPPORTED_ENCODING_COMBINATION:\r
-    p = "not supported encoding combination"; break;\r
-  case ONIGERR_INVALID_COMBINATION_OF_OPTIONS:\r
-    p = "invalid combination of options"; break;\r
-  case ONIGERR_OVER_THREAD_PASS_LIMIT_COUNT:\r
-    p = "over thread pass limit count"; break;\r
-\r
-  default:\r
-    p = "undefined error code"; break;\r
-  }\r
-\r
-  return (UChar* )p;\r
-}\r
-\r
-static void sprint_byte(char* s, unsigned int v)\r
-{\r
-  sprintf(s, "%02x", (v & 0377));\r
-}\r
-\r
-static void sprint_byte_with_x(char* s, unsigned int v)\r
-{\r
-  sprintf(s, "\\x%02x", (v & 0377));\r
-}\r
-\r
-static int to_ascii(OnigEncoding enc, UChar *s, UChar *end,\r
-                   UChar buf[], int buf_size, int *is_over)\r
-{\r
-  int len;\r
-  UChar *p;\r
-  OnigCodePoint code;\r
-\r
-  if (ONIGENC_MBC_MINLEN(enc) > 1) {\r
-    p = s;\r
-    len = 0;\r
-    while (p < end) {\r
-      code = ONIGENC_MBC_TO_CODE(enc, p, end);\r
-      if (code >= 0x80) {\r
-       if (code > 0xffff && len + 10 <= buf_size) {\r
-         sprint_byte_with_x((char*)(&(buf[len])), (unsigned int)(code >> 24));\r
-         sprint_byte((char*)(&(buf[len+4])),      (unsigned int)(code >> 16));\r
-         sprint_byte((char*)(&(buf[len+6])),      (unsigned int)(code >>  8));\r
-         sprint_byte((char*)(&(buf[len+8])),      (unsigned int)code);\r
-         len += 10;\r
-       }\r
-       else if (len + 6 <= buf_size) {\r
-         sprint_byte_with_x((char*)(&(buf[len])), (unsigned int)(code >> 8));\r
-         sprint_byte((char*)(&(buf[len+4])),      (unsigned int)code);\r
-         len += 6;\r
-       }\r
-       else {\r
-         break;\r
-       }\r
-      }\r
-      else {\r
-       buf[len++] = (UChar )code;\r
-      }\r
-\r
-      p += enclen(enc, p);\r
-      if (len >= buf_size) break;\r
-    }\r
-\r
-    *is_over = ((p < end) ? 1 : 0);\r
-  }\r
-  else {\r
-    len = MIN((int)(end - s), buf_size);\r
-    xmemcpy(buf, s, (size_t )len);\r
-    *is_over = ((buf_size < (end - s)) ? 1 : 0);\r
-  }\r
-\r
-  return len;\r
-}\r
-\r
-\r
-/* for ONIG_MAX_ERROR_MESSAGE_LEN */\r
-#define MAX_ERROR_PAR_LEN   30\r
-\r
-extern int\r
-#ifdef HAVE_STDARG_PROTOTYPES\r
-onig_error_code_to_str(UChar* s, int code, ...)\r
-#else\r
-onig_error_code_to_str(s, code, va_alist)\r
-  UChar* s;\r
-  int code;\r
-  va_dcl \r
-#endif\r
-{\r
-  UChar *p, *q;\r
-  OnigErrorInfo* einfo;\r
-  int len, is_over;\r
-  UChar parbuf[MAX_ERROR_PAR_LEN];\r
-  va_list vargs;\r
-\r
-  va_init_list(vargs, code);\r
-\r
-  switch (code) {\r
-  case ONIGERR_UNDEFINED_NAME_REFERENCE:\r
-  case ONIGERR_UNDEFINED_GROUP_REFERENCE:\r
-  case ONIGERR_MULTIPLEX_DEFINED_NAME:\r
-  case ONIGERR_MULTIPLEX_DEFINITION_NAME_CALL:\r
-  case ONIGERR_INVALID_GROUP_NAME:\r
-  case ONIGERR_INVALID_CHAR_IN_GROUP_NAME:\r
-  case ONIGERR_INVALID_CHAR_PROPERTY_NAME:\r
-    einfo = va_arg(vargs, OnigErrorInfo*);\r
-    len = to_ascii(einfo->enc, einfo->par, einfo->par_end,\r
-                  parbuf, MAX_ERROR_PAR_LEN - 3, &is_over);\r
-    q = onig_error_code_to_format(code);\r
-    p = s;\r
-    while (*q != '\0') {\r
-      if (*q == '%') {\r
-       q++;\r
-       if (*q == 'n') { /* '%n': name */\r
-         xmemcpy(p, parbuf, len);\r
-         p += len;\r
-         if (is_over != 0) {\r
-           xmemcpy(p, "...", 3);\r
-           p += 3;\r
-         }\r
-         q++;\r
-       }\r
-       else\r
-         goto normal_char;\r
-      }\r
-      else {\r
-      normal_char:\r
-       *p++ = *q++;\r
-      }\r
-    }\r
-    *p = '\0';\r
-    len = (int)(p - s);\r
-    break;\r
-\r
-  default:\r
-    q = onig_error_code_to_format(code);\r
-    len = onigenc_str_bytelen_null(ONIG_ENCODING_ASCII, q);\r
-    xmemcpy(s, q, len);\r
-    s[len] = '\0';\r
-    break;\r
-  }\r
-\r
-  va_end(vargs);\r
-  return len;\r
-}\r
-\r
-\r
-void\r
-#ifdef HAVE_STDARG_PROTOTYPES\r
-onig_snprintf_with_pattern(UChar buf[], int bufsize, OnigEncoding enc,\r
-                           UChar* pat, UChar* pat_end, const UChar *fmt, ...)\r
-#else\r
-onig_snprintf_with_pattern(buf, bufsize, enc, pat, pat_end, fmt, va_alist)\r
-    UChar buf[];\r
-    int bufsize;\r
-    OnigEncoding enc;\r
-    UChar* pat;\r
-    UChar* pat_end;\r
-    const UChar *fmt;\r
-    va_dcl\r
-#endif\r
-{\r
-  int n, need, len;\r
-  UChar *p, *s, *bp;\r
-  UChar bs[6];\r
-  va_list args;\r
-\r
-  va_init_list(args, fmt);\r
-  n = xvsnprintf((char* )buf, bufsize, (const char* )fmt, args);\r
-  va_end(args);\r
-\r
-  need = (int)(pat_end - pat) * 4 + 4;\r
-\r
-  if (n + need < bufsize) {\r
-    strcat_s((char* )buf, bufsize, ": /");\r
-    s = buf + onigenc_str_bytelen_null(ONIG_ENCODING_ASCII, buf);\r
-\r
-    p = pat;\r
-    while (p < pat_end) {\r
-      if (*p == '\\') {\r
-       *s++ = *p++;\r
-       len = enclen(enc, p);\r
-       while (len-- > 0) *s++ = *p++;\r
-      }\r
-      else if (*p == '/') {\r
-       *s++ = (unsigned char )'\\';\r
-       *s++ = *p++;\r
-      }\r
-      else if (ONIGENC_IS_MBC_HEAD(enc, p)) {\r
-        len = enclen(enc, p);\r
-        if (ONIGENC_MBC_MINLEN(enc) == 1) {\r
-          while (len-- > 0) *s++ = *p++;\r
-        }\r
-        else { /* for UTF16 */\r
-          int blen;\r
-\r
-          while (len-- > 0) {\r
-           sprint_byte_with_x((char* )bs, (unsigned int )(*p++));\r
-            blen = onigenc_str_bytelen_null(ONIG_ENCODING_ASCII, bs);\r
-            bp = bs;\r
-            while (blen-- > 0) *s++ = *bp++;\r
-          }\r
-        }\r
-      }\r
-      else if (!ONIGENC_IS_CODE_PRINT(enc, *p) &&\r
-              !ONIGENC_IS_CODE_SPACE(enc, *p)) {\r
-       sprint_byte_with_x((char* )bs, (unsigned int )(*p++));\r
-       len = onigenc_str_bytelen_null(ONIG_ENCODING_ASCII, bs);\r
-        bp = bs;\r
-       while (len-- > 0) *s++ = *bp++;\r
-      }\r
-      else {\r
-       *s++ = *p++;\r
-      }\r
-    }\r
-\r
-    *s++ = '/';\r
-    *s   = '\0';\r
-  }\r
-}\r
diff --git a/MdeModulePkg/Universal/RegularExpressionDxe/Oniguruma/regexec.c b/MdeModulePkg/Universal/RegularExpressionDxe/Oniguruma/regexec.c
deleted file mode 100644 (file)
index 4bfea0b..0000000
+++ /dev/null
@@ -1,3810 +0,0 @@
-/**********************************************************************\r
-  regexec.c -  Oniguruma (regular expression library)\r
-**********************************************************************/\r
-/*-\r
- * Copyright (c) 2002-2008  K.Kosako  <sndgk393 AT ybb DOT ne DOT jp>\r
- * All rights reserved.\r
- *\r
- * Copyright (c) 2015, Hewlett Packard Enterprise Development, L.P.<BR>\r
- *\r
- * Redistribution and use in source and binary forms, with or without\r
- * modification, are permitted provided that the following conditions\r
- * are met:\r
- * 1. Redistributions of source code must retain the above copyright\r
- *    notice, this list of conditions and the following disclaimer.\r
- * 2. Redistributions in binary form must reproduce the above copyright\r
- *    notice, this list of conditions and the following disclaimer in the\r
- *    documentation and/or other materials provided with the distribution.\r
- *\r
- * THIS SOFTWARE IS PROVIDED BY THE AUTHOR AND CONTRIBUTORS ``AS IS'' AND\r
- * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE\r
- * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE\r
- * ARE DISCLAIMED.  IN NO EVENT SHALL THE AUTHOR OR CONTRIBUTORS BE LIABLE\r
- * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL\r
- * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS\r
- * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)\r
- * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT\r
- * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY\r
- * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF\r
- * SUCH DAMAGE.\r
- */\r
-\r
-#include "regint.h"\r
-\r
-#define USE_MATCH_RANGE_MUST_BE_INSIDE_OF_SPECIFIED_RANGE\r
-\r
-#ifdef USE_CRNL_AS_LINE_TERMINATOR\r
-#define ONIGENC_IS_MBC_CRNL(enc,p,end) \\r
-  (ONIGENC_MBC_TO_CODE(enc,p,end) == 13 && \\r
-   ONIGENC_IS_MBC_NEWLINE(enc,(p+enclen(enc,p)),end))\r
-#endif\r
-\r
-#ifdef USE_CAPTURE_HISTORY\r
-static void history_tree_free(OnigCaptureTreeNode* node);\r
-\r
-static void\r
-history_tree_clear(OnigCaptureTreeNode* node)\r
-{\r
-  int i;\r
-\r
-  if (IS_NOT_NULL(node)) {\r
-    for (i = 0; i < node->num_childs; i++) {\r
-      if (IS_NOT_NULL(node->childs[i])) {\r
-        history_tree_free(node->childs[i]);\r
-      }\r
-    }\r
-    for (i = 0; i < node->allocated; i++) {\r
-      node->childs[i] = (OnigCaptureTreeNode* )0;\r
-    }\r
-    node->num_childs = 0;\r
-    node->beg = ONIG_REGION_NOTPOS;\r
-    node->end = ONIG_REGION_NOTPOS;\r
-    node->group = -1;\r
-  }\r
-}\r
-\r
-static void\r
-history_tree_free(OnigCaptureTreeNode* node)\r
-{\r
-  history_tree_clear(node);\r
-  xfree(node);\r
-}\r
-\r
-static void\r
-history_root_free(OnigRegion* r)\r
-{\r
-  if (IS_NOT_NULL(r->history_root)) {\r
-    history_tree_free(r->history_root);\r
-    r->history_root = (OnigCaptureTreeNode* )0;\r
-  }\r
-}\r
-\r
-static OnigCaptureTreeNode*\r
-history_node_new(void)\r
-{\r
-  OnigCaptureTreeNode* node;\r
-\r
-  node = (OnigCaptureTreeNode* )xmalloc(sizeof(OnigCaptureTreeNode));\r
-  CHECK_NULL_RETURN(node);\r
-  node->childs     = (OnigCaptureTreeNode** )0;\r
-  node->allocated  = 0;\r
-  node->num_childs = 0;\r
-  node->group      = -1;\r
-  node->beg        = ONIG_REGION_NOTPOS;\r
-  node->end        = ONIG_REGION_NOTPOS;\r
-\r
-  return node;\r
-}\r
-\r
-static int\r
-history_tree_add_child(OnigCaptureTreeNode* parent, OnigCaptureTreeNode* child)\r
-{\r
-#define HISTORY_TREE_INIT_ALLOC_SIZE  8\r
-\r
-  if (parent->num_childs >= parent->allocated) {\r
-    int n, i;\r
-\r
-    if (IS_NULL(parent->childs)) {\r
-      n = HISTORY_TREE_INIT_ALLOC_SIZE;\r
-      parent->childs =\r
-        (OnigCaptureTreeNode** )xmalloc(sizeof(OnigCaptureTreeNode*) * n);\r
-    }\r
-    else {\r
-      n = parent->allocated * 2;\r
-      parent->childs =\r
-        (OnigCaptureTreeNode** )xrealloc(parent->childs,\r
-                                         sizeof(OnigCaptureTreeNode*) * n,\r
-                                         sizeof(OnigCaptureTreeNode*) * parent->allocated);\r
-    }\r
-    CHECK_NULL_RETURN_MEMERR(parent->childs);\r
-    for (i = parent->allocated; i < n; i++) {\r
-      parent->childs[i] = (OnigCaptureTreeNode* )0;\r
-    }\r
-    parent->allocated = n;\r
-  }\r
-\r
-  parent->childs[parent->num_childs] = child;\r
-  parent->num_childs++;\r
-  return 0;\r
-}\r
-\r
-static OnigCaptureTreeNode*\r
-history_tree_clone(OnigCaptureTreeNode* node)\r
-{\r
-  int i;\r
-  OnigCaptureTreeNode *clone, *child;\r
-\r
-  clone = history_node_new();\r
-  CHECK_NULL_RETURN(clone);\r
-\r
-  clone->beg = node->beg;\r
-  clone->end = node->end;\r
-  for (i = 0; i < node->num_childs; i++) {\r
-    child = history_tree_clone(node->childs[i]);\r
-    if (IS_NULL(child)) {\r
-      history_tree_free(clone);\r
-      return (OnigCaptureTreeNode* )0;\r
-    }\r
-    history_tree_add_child(clone, child);\r
-  }\r
-\r
-  return clone;\r
-}\r
-\r
-extern  OnigCaptureTreeNode*\r
-onig_get_capture_tree(OnigRegion* region)\r
-{\r
-  return region->history_root;\r
-}\r
-#endif /* USE_CAPTURE_HISTORY */\r
-\r
-extern void\r
-onig_region_clear(OnigRegion* region)\r
-{\r
-  int i;\r
-\r
-  for (i = 0; i < region->num_regs; i++) {\r
-    region->beg[i] = region->end[i] = ONIG_REGION_NOTPOS;\r
-  }\r
-#ifdef USE_CAPTURE_HISTORY\r
-  history_root_free(region);\r
-#endif\r
-}\r
-\r
-extern int\r
-onig_region_resize(OnigRegion* region, int n)\r
-{\r
-  region->num_regs = n;\r
-\r
-  if (n < ONIG_NREGION)\r
-    n = ONIG_NREGION;\r
-\r
-  if (region->allocated == 0) {\r
-    region->beg = (int* )xmalloc(n * sizeof(int));\r
-    region->end = (int* )xmalloc(n * sizeof(int));\r
-\r
-    if (region->beg == 0 || region->end == 0)\r
-      return ONIGERR_MEMORY;\r
-\r
-    region->allocated = n;\r
-  }\r
-  else if (region->allocated < n) {\r
-    region->beg = (int* )xrealloc(region->beg, n * sizeof(int), region->allocated * sizeof(int));\r
-    region->end = (int* )xrealloc(region->end, n * sizeof(int), region->allocated * sizeof(int));\r
-\r
-    if (region->beg == 0 || region->end == 0)\r
-      return ONIGERR_MEMORY;\r
-\r
-    region->allocated = n;\r
-  }\r
-\r
-  return 0;\r
-}\r
-\r
-static int\r
-onig_region_resize_clear(OnigRegion* region, int n)\r
-{\r
-  int r;\r
-  \r
-  r = onig_region_resize(region, n);\r
-  if (r != 0) return r;\r
-  onig_region_clear(region);\r
-  return 0;\r
-}\r
-    \r
-extern int\r
-onig_region_set(OnigRegion* region, int at, int beg, int end)\r
-{\r
-  if (at < 0) return ONIGERR_INVALID_ARGUMENT;\r
-\r
-  if (at >= region->allocated) {\r
-    int r = onig_region_resize(region, at + 1);\r
-    if (r < 0) return r;\r
-  }\r
-  \r
-  region->beg[at] = beg;\r
-  region->end[at] = end;\r
-  return 0;\r
-}\r
-\r
-extern void\r
-onig_region_init(OnigRegion* region)\r
-{\r
-  region->num_regs     = 0;\r
-  region->allocated    = 0;\r
-  region->beg          = (int* )0;\r
-  region->end          = (int* )0;\r
-  region->history_root = (OnigCaptureTreeNode* )0;\r
-}\r
-\r
-extern OnigRegion*\r
-onig_region_new(void)\r
-{\r
-  OnigRegion* r;\r
-\r
-  r = (OnigRegion* )xmalloc(sizeof(OnigRegion));\r
-  onig_region_init(r);\r
-  return r;\r
-}\r
-\r
-extern void\r
-onig_region_free(OnigRegion* r, int free_self)\r
-{\r
-  if (r) {\r
-    if (r->allocated > 0) {\r
-      if (r->beg) xfree(r->beg);\r
-      if (r->end) xfree(r->end);\r
-      r->allocated = 0;\r
-    }\r
-#ifdef USE_CAPTURE_HISTORY\r
-    history_root_free(r);\r
-#endif\r
-    if (free_self) xfree(r);\r
-  }\r
-}\r
-\r
-extern void\r
-onig_region_copy(OnigRegion* to, OnigRegion* from)\r
-{\r
-#define RREGC_SIZE   (sizeof(int) * from->num_regs)\r
-  int i;\r
-\r
-  if (to == from) return;\r
-\r
-  if (to->allocated == 0) {\r
-    if (from->num_regs > 0) {\r
-      to->beg = (int* )xmalloc(RREGC_SIZE);\r
-      to->end = (int* )xmalloc(RREGC_SIZE);\r
-      to->allocated = from->num_regs;\r
-    }\r
-  }\r
-  else if (to->allocated < from->num_regs) {\r
-    to->beg = (int* )xrealloc(to->beg, RREGC_SIZE, sizeof(int) * to->allocated);\r
-    to->end = (int* )xrealloc(to->end, RREGC_SIZE, sizeof(int) * to->allocated);\r
-    to->allocated = from->num_regs;\r
-  }\r
-\r
-  for (i = 0; i < from->num_regs; i++) {\r
-    to->beg[i] = from->beg[i];\r
-    to->end[i] = from->end[i];\r
-  }\r
-  to->num_regs = from->num_regs;\r
-\r
-#ifdef USE_CAPTURE_HISTORY\r
-  history_root_free(to);\r
-\r
-  if (IS_NOT_NULL(from->history_root)) {\r
-    to->history_root = history_tree_clone(from->history_root);\r
-  }\r
-#endif\r
-}\r
-\r
-\r
-/** stack **/\r
-#define INVALID_STACK_INDEX   -1\r
-\r
-/* stack type */\r
-/* used by normal-POP */\r
-#define STK_ALT                    0x0001\r
-#define STK_LOOK_BEHIND_NOT        0x0002\r
-#define STK_POS_NOT                0x0003\r
-/* handled by normal-POP */\r
-#define STK_MEM_START              0x0100\r
-#define STK_MEM_END                0x8200\r
-#define STK_REPEAT_INC             0x0300\r
-#define STK_STATE_CHECK_MARK       0x1000\r
-/* avoided by normal-POP */\r
-#define STK_NULL_CHECK_START       0x3000\r
-#define STK_NULL_CHECK_END         0x5000  /* for recursive call */\r
-#define STK_MEM_END_MARK           0x8400\r
-#define STK_POS                    0x0500  /* used when POP-POS */\r
-#define STK_STOP_BT                0x0600  /* mark for "(?>...)" */\r
-#define STK_REPEAT                 0x0700\r
-#define STK_CALL_FRAME             0x0800\r
-#define STK_RETURN                 0x0900\r
-#define STK_VOID                   0x0a00  /* for fill a blank */\r
-\r
-/* stack type check mask */\r
-#define STK_MASK_POP_USED          0x00ff\r
-#define STK_MASK_TO_VOID_TARGET    0x10ff\r
-#define STK_MASK_MEM_END_OR_MARK   0x8000  /* MEM_END or MEM_END_MARK */\r
-\r
-#ifdef USE_FIND_LONGEST_SEARCH_ALL_OF_RANGE\r
-#define MATCH_ARG_INIT(msa, arg_option, arg_region, arg_start) do {\\r
-  (msa).stack_p  = (void* )0;\\r
-  (msa).options  = (arg_option);\\r
-  (msa).region   = (arg_region);\\r
-  (msa).start    = (arg_start);\\r
-  (msa).best_len = ONIG_MISMATCH;\\r
-} while(0)\r
-#else\r
-#define MATCH_ARG_INIT(msa, arg_option, arg_region, arg_start) do {\\r
-  (msa).stack_p  = (void* )0;\\r
-  (msa).options  = (arg_option);\\r
-  (msa).region   = (arg_region);\\r
-  (msa).start    = (arg_start);\\r
-} while(0)\r
-#endif\r
-\r
-#ifdef USE_COMBINATION_EXPLOSION_CHECK\r
-\r
-#define STATE_CHECK_BUFF_MALLOC_THRESHOLD_SIZE  16\r
-\r
-#define STATE_CHECK_BUFF_INIT(msa, str_len, offset, state_num) do {    \\r
-  if ((state_num) > 0 && str_len >= STATE_CHECK_STRING_THRESHOLD_LEN) {\\r
-    unsigned int size = (unsigned int )(((str_len) + 1) * (state_num) + 7) >> 3;\\r
-    offset = ((offset) * (state_num)) >> 3;\\r
-    if (size > 0 && offset < size && size < STATE_CHECK_BUFF_MAX_SIZE) {\\r
-      if (size >= STATE_CHECK_BUFF_MALLOC_THRESHOLD_SIZE) \\r
-        (msa).state_check_buff = (void* )xmalloc(size);\\r
-      else \\r
-        (msa).state_check_buff = (void* )xalloca(size);\\r
-      xmemset(((char* )((msa).state_check_buff)+(offset)), 0, \\r
-              (size_t )(size - (offset))); \\r
-      (msa).state_check_buff_size = size;\\r
-    }\\r
-    else {\\r
-      (msa).state_check_buff = (void* )0;\\r
-      (msa).state_check_buff_size = 0;\\r
-    }\\r
-  }\\r
-  else {\\r
-    (msa).state_check_buff = (void* )0;\\r
-    (msa).state_check_buff_size = 0;\\r
-  }\\r
-  } while(0)\r
-\r
-#define MATCH_ARG_FREE(msa) do {\\r
-  if ((msa).stack_p) xfree((msa).stack_p);\\r
-  if ((msa).state_check_buff_size >= STATE_CHECK_BUFF_MALLOC_THRESHOLD_SIZE) { \\r
-    if ((msa).state_check_buff) xfree((msa).state_check_buff);\\r
-  }\\r
-} while(0)\r
-#else\r
-#define STATE_CHECK_BUFF_INIT(msa, str_len, offset, state_num)\r
-#define MATCH_ARG_FREE(msa)  if ((msa).stack_p) xfree((msa).stack_p)\r
-#endif\r
-\r
-\r
-\r
-#define STACK_INIT(alloc_addr, ptr_num, stack_num)  do {\\r
-  if (msa->stack_p) {\\r
-    alloc_addr = (char* )xmalloc(sizeof(char*) * (ptr_num));\\r
-    stk_alloc  = (OnigStackType* )(msa->stack_p);\\r
-    stk_base   = stk_alloc;\\r
-    stk        = stk_base;\\r
-    stk_end    = stk_base + msa->stack_n;\\r
-  }\\r
-  else {\\r
-    alloc_addr = (char* )xmalloc(sizeof(char*) * (ptr_num)\\r
-                      + sizeof(OnigStackType) * (stack_num));\\r
-    stk_alloc  = (OnigStackType* )(alloc_addr + sizeof(char*) * (ptr_num));\\r
-    stk_base   = stk_alloc;\\r
-    stk        = stk_base;\\r
-    stk_end    = stk_base + (stack_num);\\r
-  }\\r
-} while(0)\r
-\r
-#define STACK_SAVE do{\\r
-  if (stk_base != stk_alloc) {\\r
-    msa->stack_p = stk_base;\\r
-    msa->stack_n = (int)(stk_end - stk_base);\\r
-  };\\r
-} while(0)\r
-\r
-static unsigned int MatchStackLimitSize = DEFAULT_MATCH_STACK_LIMIT_SIZE;\r
-\r
-extern unsigned int\r
-onig_get_match_stack_limit_size(void)\r
-{\r
-  return MatchStackLimitSize;\r
-}\r
-\r
-extern int\r
-onig_set_match_stack_limit_size(unsigned int size)\r
-{\r
-  MatchStackLimitSize = size;\r
-  return 0;\r
-}\r
-\r
-static int\r
-stack_double(OnigStackType** arg_stk_base, OnigStackType** arg_stk_end,\r
-            OnigStackType** arg_stk, OnigStackType* stk_alloc, OnigMatchArg* msa)\r
-{\r
-  unsigned int n;\r
-  OnigStackType *x, *stk_base, *stk_end, *stk;\r
-\r
-  stk_base = *arg_stk_base;\r
-  stk_end  = *arg_stk_end;\r
-  stk      = *arg_stk;\r
-\r
-  n = (unsigned int)(stk_end - stk_base);\r
-  if (stk_base == stk_alloc && IS_NULL(msa->stack_p)) {\r
-    x = (OnigStackType* )xmalloc(sizeof(OnigStackType) * n * 2);\r
-    if (IS_NULL(x)) {\r
-      STACK_SAVE;\r
-      return ONIGERR_MEMORY;\r
-    }\r
-    xmemcpy(x, stk_base, n * sizeof(OnigStackType));\r
-    n *= 2;\r
-  }\r
-  else {\r
-    n *= 2;\r
-    if (MatchStackLimitSize != 0 && n > MatchStackLimitSize) {\r
-      if ((unsigned int )(stk_end - stk_base) == MatchStackLimitSize)\r
-        return ONIGERR_MATCH_STACK_LIMIT_OVER;\r
-      else\r
-        n = MatchStackLimitSize;\r
-    }\r
-    x = (OnigStackType* )xrealloc(stk_base, sizeof(OnigStackType) * n, sizeof(OnigStackType) * (stk_end - stk_base));\r
-    if (IS_NULL(x)) {\r
-      STACK_SAVE;\r
-      return ONIGERR_MEMORY;\r
-    }\r
-  }\r
-  *arg_stk      = x + (stk - stk_base);\r
-  *arg_stk_base = x;\r
-  *arg_stk_end  = x + n;\r
-  return 0;\r
-}\r
-\r
-#define STACK_ENSURE(n)        do {\\r
-  if (stk_end - stk < (n)) {\\r
-    int r = stack_double(&stk_base, &stk_end, &stk, stk_alloc, msa);\\r
-    if (r != 0) { STACK_SAVE; return r; } \\r
-  }\\r
-} while(0)\r
-\r
-#define STACK_AT(index)        (stk_base + (index))\r
-#define GET_STACK_INDEX(stk)   ((OnigStackIndex)((stk) - stk_base))\r
-\r
-#define STACK_PUSH_TYPE(stack_type) do {\\r
-  STACK_ENSURE(1);\\r
-  stk->type = (stack_type);\\r
-  STACK_INC;\\r
-} while(0)\r
-\r
-#define IS_TO_VOID_TARGET(stk) (((stk)->type & STK_MASK_TO_VOID_TARGET) != 0)\r
-\r
-#ifdef USE_COMBINATION_EXPLOSION_CHECK\r
-#define STATE_CHECK_POS(s,snum) \\r
-  (((s) - str) * num_comb_exp_check + ((snum) - 1))\r
-#define STATE_CHECK_VAL(v,snum) do {\\r
-  if (state_check_buff != NULL) {\\r
-    int x = STATE_CHECK_POS(s,snum);\\r
-    (v) = state_check_buff[x/8] & (1<<(x%8));\\r
-  }\\r
-  else (v) = 0;\\r
-} while(0)\r
-\r
-\r
-#define ELSE_IF_STATE_CHECK_MARK(stk) \\r
-  else if ((stk)->type == STK_STATE_CHECK_MARK) { \\r
-    int x = STATE_CHECK_POS(stk->u.state.pstr, stk->u.state.state_check);\\r
-    state_check_buff[x/8] |= (1<<(x%8));                               \\r
-  }\r
-\r
-#define STACK_PUSH(stack_type,pat,s,sprev) do {\\r
-  STACK_ENSURE(1);\\r
-  stk->type = (stack_type);\\r
-  stk->u.state.pcode     = (pat);\\r
-  stk->u.state.pstr      = (s);\\r
-  stk->u.state.pstr_prev = (sprev);\\r
-  stk->u.state.state_check = 0;\\r
-  STACK_INC;\\r
-} while(0)\r
-\r
-#define STACK_PUSH_ENSURED(stack_type,pat) do {\\r
-  stk->type = (stack_type);\\r
-  stk->u.state.pcode = (pat);\\r
-  stk->u.state.state_check = 0;\\r
-  STACK_INC;\\r
-} while(0)\r
-\r
-#define STACK_PUSH_ALT_WITH_STATE_CHECK(pat,s,sprev,snum) do {\\r
-  STACK_ENSURE(1);\\r
-  stk->type = STK_ALT;\\r
-  stk->u.state.pcode     = (pat);\\r
-  stk->u.state.pstr      = (s);\\r
-  stk->u.state.pstr_prev = (sprev);\\r
-  stk->u.state.state_check = ((state_check_buff != NULL) ? (snum) : 0);\\r
-  STACK_INC;\\r
-} while(0)\r
-\r
-#define STACK_PUSH_STATE_CHECK(s,snum) do {\\r
-  if (state_check_buff != NULL) {\\r
-    STACK_ENSURE(1);\\r
-    stk->type = STK_STATE_CHECK_MARK;\\r
-    stk->u.state.pstr = (s);\\r
-    stk->u.state.state_check = (snum);\\r
-    STACK_INC;\\r
-  }\\r
-} while(0)\r
-\r
-#else /* USE_COMBINATION_EXPLOSION_CHECK */\r
-\r
-#define ELSE_IF_STATE_CHECK_MARK(stk)\r
-\r
-#define STACK_PUSH(stack_type,pat,s,sprev) do {\\r
-  STACK_ENSURE(1);\\r
-  stk->type = (stack_type);\\r
-  stk->u.state.pcode     = (pat);\\r
-  stk->u.state.pstr      = (s);\\r
-  stk->u.state.pstr_prev = (sprev);\\r
-  STACK_INC;\\r
-} while(0)\r
-\r
-#define STACK_PUSH_ENSURED(stack_type,pat) do {\\r
-  stk->type = (stack_type);\\r
-  stk->u.state.pcode = (pat);\\r
-  STACK_INC;\\r
-} while(0)\r
-#endif /* USE_COMBINATION_EXPLOSION_CHECK */\r
-\r
-#define STACK_PUSH_ALT(pat,s,sprev)     STACK_PUSH(STK_ALT,pat,s,sprev)\r
-#define STACK_PUSH_POS(s,sprev)         STACK_PUSH(STK_POS,NULL_UCHARP,s,sprev)\r
-#define STACK_PUSH_POS_NOT(pat,s,sprev) STACK_PUSH(STK_POS_NOT,pat,s,sprev)\r
-#define STACK_PUSH_STOP_BT              STACK_PUSH_TYPE(STK_STOP_BT)\r
-#define STACK_PUSH_LOOK_BEHIND_NOT(pat,s,sprev) \\r
-        STACK_PUSH(STK_LOOK_BEHIND_NOT,pat,s,sprev)\r
-\r
-#define STACK_PUSH_REPEAT(id, pat) do {\\r
-  STACK_ENSURE(1);\\r
-  stk->type = STK_REPEAT;\\r
-  stk->u.repeat.num    = (id);\\r
-  stk->u.repeat.pcode  = (pat);\\r
-  stk->u.repeat.count  = 0;\\r
-  STACK_INC;\\r
-} while(0)\r
-\r
-#define STACK_PUSH_REPEAT_INC(sindex) do {\\r
-  STACK_ENSURE(1);\\r
-  stk->type = STK_REPEAT_INC;\\r
-  stk->u.repeat_inc.si  = (sindex);\\r
-  STACK_INC;\\r
-} while(0)\r
-\r
-#define STACK_PUSH_MEM_START(mnum, s) do {\\r
-  STACK_ENSURE(1);\\r
-  stk->type = STK_MEM_START;\\r
-  stk->u.mem.num      = (int)(mnum);\\r
-  stk->u.mem.pstr     = (s);\\r
-  stk->u.mem.start    = mem_start_stk[mnum];\\r
-  stk->u.mem.end      = mem_end_stk[mnum];\\r
-  mem_start_stk[mnum] = GET_STACK_INDEX(stk);\\r
-  mem_end_stk[mnum]   = INVALID_STACK_INDEX;\\r
-  STACK_INC;\\r
-} while(0)\r
-\r
-#define STACK_PUSH_MEM_END(mnum, s) do {\\r
-  STACK_ENSURE(1);\\r
-  stk->type = STK_MEM_END;\\r
-  stk->u.mem.num    = (mnum);\\r
-  stk->u.mem.pstr   = (s);\\r
-  stk->u.mem.start  = mem_start_stk[mnum];\\r
-  stk->u.mem.end    = mem_end_stk[mnum];\\r
-  mem_end_stk[mnum] = GET_STACK_INDEX(stk);\\r
-  STACK_INC;\\r
-} while(0)\r
-\r
-#define STACK_PUSH_MEM_END_MARK(mnum) do {\\r
-  STACK_ENSURE(1);\\r
-  stk->type = STK_MEM_END_MARK;\\r
-  stk->u.mem.num = (mnum);\\r
-  STACK_INC;\\r
-} while(0)\r
-\r
-#define STACK_GET_MEM_START(mnum, k) do {\\r
-  int level = 0;\\r
-  k = stk;\\r
-  while (k > stk_base) {\\r
-    k--;\\r
-    if ((k->type & STK_MASK_MEM_END_OR_MARK) != 0 \\r
-      && k->u.mem.num == (mnum)) {\\r
-      level++;\\r
-    }\\r
-    else if (k->type == STK_MEM_START && k->u.mem.num == (mnum)) {\\r
-      if (level == 0) break;\\r
-      level--;\\r
-    }\\r
-  }\\r
-} while(0)\r
-\r
-#define STACK_GET_MEM_RANGE(k, mnum, start, end) do {\\r
-  int level = 0;\\r
-  while (k < stk) {\\r
-    if (k->type == STK_MEM_START && k->u.mem.num == (mnum)) {\\r
-      if (level == 0) (start) = k->u.mem.pstr;\\r
-      level++;\\r
-    }\\r
-    else if (k->type == STK_MEM_END && k->u.mem.num == (mnum)) {\\r
-      level--;\\r
-      if (level == 0) {\\r
-        (end) = k->u.mem.pstr;\\r
-        break;\\r
-      }\\r
-    }\\r
-    k++;\\r
-  }\\r
-} while(0)\r
-\r
-#define STACK_PUSH_NULL_CHECK_START(cnum, s) do {\\r
-  STACK_ENSURE(1);\\r
-  stk->type = STK_NULL_CHECK_START;\\r
-  stk->u.null_check.num  = (cnum);\\r
-  stk->u.null_check.pstr = (s);\\r
-  STACK_INC;\\r
-} while(0)\r
-\r
-#define STACK_PUSH_NULL_CHECK_END(cnum) do {\\r
-  STACK_ENSURE(1);\\r
-  stk->type = STK_NULL_CHECK_END;\\r
-  stk->u.null_check.num  = (cnum);\\r
-  STACK_INC;\\r
-} while(0)\r
-\r
-#define STACK_PUSH_CALL_FRAME(pat) do {\\r
-  STACK_ENSURE(1);\\r
-  stk->type = STK_CALL_FRAME;\\r
-  stk->u.call_frame.ret_addr = (pat);\\r
-  STACK_INC;\\r
-} while(0)\r
-\r
-#define STACK_PUSH_RETURN do {\\r
-  STACK_ENSURE(1);\\r
-  stk->type = STK_RETURN;\\r
-  STACK_INC;\\r
-} while(0)\r
-\r
-\r
-#ifdef ONIG_DEBUG\r
-#define STACK_BASE_CHECK(p, at) \\r
-  if ((p) < stk_base) {\\r
-    fprintf(stderr, "at %s\n", at);\\r
-    goto stack_error;\\r
-  }\r
-#else\r
-#define STACK_BASE_CHECK(p, at)\r
-#endif\r
-\r
-#define STACK_POP_ONE do {\\r
-  stk--;\\r
-  STACK_BASE_CHECK(stk, "STACK_POP_ONE"); \\r
-} while(0)\r
-\r
-#define STACK_POP  do {\\r
-  switch (pop_level) {\\r
-  case STACK_POP_LEVEL_FREE:\\r
-    while (1) {\\r
-      stk--;\\r
-      STACK_BASE_CHECK(stk, "STACK_POP"); \\r
-      if ((stk->type & STK_MASK_POP_USED) != 0)  break;\\r
-      ELSE_IF_STATE_CHECK_MARK(stk);\\r
-    }\\r
-    break;\\r
-  case STACK_POP_LEVEL_MEM_START:\\r
-    while (1) {\\r
-      stk--;\\r
-      STACK_BASE_CHECK(stk, "STACK_POP 2"); \\r
-      if ((stk->type & STK_MASK_POP_USED) != 0)  break;\\r
-      else if (stk->type == STK_MEM_START) {\\r
-        mem_start_stk[stk->u.mem.num] = stk->u.mem.start;\\r
-        mem_end_stk[stk->u.mem.num]   = stk->u.mem.end;\\r
-      }\\r
-      ELSE_IF_STATE_CHECK_MARK(stk);\\r
-    }\\r
-    break;\\r
-  default:\\r
-    while (1) {\\r
-      stk--;\\r
-      STACK_BASE_CHECK(stk, "STACK_POP 3"); \\r
-      if ((stk->type & STK_MASK_POP_USED) != 0)  break;\\r
-      else if (stk->type == STK_MEM_START) {\\r
-        mem_start_stk[stk->u.mem.num] = stk->u.mem.start;\\r
-        mem_end_stk[stk->u.mem.num]   = stk->u.mem.end;\\r
-      }\\r
-      else if (stk->type == STK_REPEAT_INC) {\\r
-        STACK_AT(stk->u.repeat_inc.si)->u.repeat.count--;\\r
-      }\\r
-      else if (stk->type == STK_MEM_END) {\\r
-        mem_start_stk[stk->u.mem.num] = stk->u.mem.start;\\r
-        mem_end_stk[stk->u.mem.num]   = stk->u.mem.end;\\r
-      }\\r
-      ELSE_IF_STATE_CHECK_MARK(stk);\\r
-    }\\r
-    break;\\r
-  }\\r
-} while(0)\r
-\r
-#define STACK_POP_TIL_POS_NOT  do {\\r
-  while (1) {\\r
-    stk--;\\r
-    STACK_BASE_CHECK(stk, "STACK_POP_TIL_POS_NOT"); \\r
-    if (stk->type == STK_POS_NOT) break;\\r
-    else if (stk->type == STK_MEM_START) {\\r
-      mem_start_stk[stk->u.mem.num] = stk->u.mem.start;\\r
-      mem_end_stk[stk->u.mem.num]   = stk->u.mem.end;\\r
-    }\\r
-    else if (stk->type == STK_REPEAT_INC) {\\r
-      STACK_AT(stk->u.repeat_inc.si)->u.repeat.count--;\\r
-    }\\r
-    else if (stk->type == STK_MEM_END) {\\r
-      mem_start_stk[stk->u.mem.num] = stk->u.mem.start;\\r
-      mem_end_stk[stk->u.mem.num]   = stk->u.mem.end;\\r
-    }\\r
-    ELSE_IF_STATE_CHECK_MARK(stk);\\r
-  }\\r
-} while(0)\r
-\r
-#define STACK_POP_TIL_LOOK_BEHIND_NOT  do {\\r
-  while (1) {\\r
-    stk--;\\r
-    STACK_BASE_CHECK(stk, "STACK_POP_TIL_LOOK_BEHIND_NOT"); \\r
-    if (stk->type == STK_LOOK_BEHIND_NOT) break;\\r
-    else if (stk->type == STK_MEM_START) {\\r
-      mem_start_stk[stk->u.mem.num] = stk->u.mem.start;\\r
-      mem_end_stk[stk->u.mem.num]   = stk->u.mem.end;\\r
-    }\\r
-    else if (stk->type == STK_REPEAT_INC) {\\r
-      STACK_AT(stk->u.repeat_inc.si)->u.repeat.count--;\\r
-    }\\r
-    else if (stk->type == STK_MEM_END) {\\r
-      mem_start_stk[stk->u.mem.num] = stk->u.mem.start;\\r
-      mem_end_stk[stk->u.mem.num]   = stk->u.mem.end;\\r
-    }\\r
-    ELSE_IF_STATE_CHECK_MARK(stk);\\r
-  }\\r
-} while(0)\r
-\r
-#define STACK_POS_END(k) do {\\r
-  k = stk;\\r
-  while (1) {\\r
-    k--;\\r
-    STACK_BASE_CHECK(k, "STACK_POS_END"); \\r
-    if (IS_TO_VOID_TARGET(k)) {\\r
-      k->type = STK_VOID;\\r
-    }\\r
-    else if (k->type == STK_POS) {\\r
-      k->type = STK_VOID;\\r
-      break;\\r
-    }\\r
-  }\\r
-} while(0)\r
-\r
-#define STACK_STOP_BT_END do {\\r
-  OnigStackType *k = stk;\\r
-  while (1) {\\r
-    k--;\\r
-    STACK_BASE_CHECK(k, "STACK_STOP_BT_END"); \\r
-    if (IS_TO_VOID_TARGET(k)) {\\r
-      k->type = STK_VOID;\\r
-    }\\r
-    else if (k->type == STK_STOP_BT) {\\r
-      k->type = STK_VOID;\\r
-      break;\\r
-    }\\r
-  }\\r
-} while(0)\r
-\r
-#define STACK_NULL_CHECK(isnull,id,s) do {\\r
-  OnigStackType* k = stk;\\r
-  while (1) {\\r
-    k--;\\r
-    STACK_BASE_CHECK(k, "STACK_NULL_CHECK"); \\r
-    if (k->type == STK_NULL_CHECK_START) {\\r
-      if (k->u.null_check.num == (id)) {\\r
-        (isnull) = (k->u.null_check.pstr == (s));\\r
-        break;\\r
-      }\\r
-    }\\r
-  }\\r
-} while(0)\r
-\r
-#define STACK_NULL_CHECK_REC(isnull,id,s) do {\\r
-  int level = 0;\\r
-  OnigStackType* k = stk;\\r
-  while (1) {\\r
-    k--;\\r
-    STACK_BASE_CHECK(k, "STACK_NULL_CHECK_REC"); \\r
-    if (k->type == STK_NULL_CHECK_START) {\\r
-      if (k->u.null_check.num == (id)) {\\r
-        if (level == 0) {\\r
-          (isnull) = (k->u.null_check.pstr == (s));\\r
-          break;\\r
-        }\\r
-        else level--;\\r
-      }\\r
-    }\\r
-    else if (k->type == STK_NULL_CHECK_END) {\\r
-      level++;\\r
-    }\\r
-  }\\r
-} while(0)\r
-\r
-#define STACK_NULL_CHECK_MEMST(isnull,id,s,reg) do {\\r
-  OnigStackType* k = stk;\\r
-  while (1) {\\r
-    k--;\\r
-    STACK_BASE_CHECK(k, "STACK_NULL_CHECK_MEMST"); \\r
-    if (k->type == STK_NULL_CHECK_START) {\\r
-      if (k->u.null_check.num == (id)) {\\r
-        if (k->u.null_check.pstr != (s)) {\\r
-          (isnull) = 0;\\r
-          break;\\r
-        }\\r
-        else {\\r
-          UChar* endp;\\r
-          (isnull) = 1;\\r
-          while (k < stk) {\\r
-            if (k->type == STK_MEM_START) {\\r
-              if (k->u.mem.end == INVALID_STACK_INDEX) {\\r
-                (isnull) = 0; break;\\r
-              }\\r
-              if (BIT_STATUS_AT(reg->bt_mem_end, k->u.mem.num))\\r
-                endp = STACK_AT(k->u.mem.end)->u.mem.pstr;\\r
-              else\\r
-                endp = (UChar* )k->u.mem.end;\\r
-              if (STACK_AT(k->u.mem.start)->u.mem.pstr != endp) {\\r
-                (isnull) = 0; break;\\r
-              }\\r
-              else if (endp != s) {\\r
-                (isnull) = -1; /* empty, but position changed */ \\r
-              }\\r
-            }\\r
-            k++;\\r
-          }\\r
-         break;\\r
-        }\\r
-      }\\r
-    }\\r
-  }\\r
-} while(0)\r
-\r
-#define STACK_NULL_CHECK_MEMST_REC(isnull,id,s,reg) do {\\r
-  int level = 0;\\r
-  OnigStackType* k = stk;\\r
-  while (1) {\\r
-    k--;\\r
-    STACK_BASE_CHECK(k, "STACK_NULL_CHECK_MEMST_REC"); \\r
-    if (k->type == STK_NULL_CHECK_START) {\\r
-      if (k->u.null_check.num == (id)) {\\r
-        if (level == 0) {\\r
-          if (k->u.null_check.pstr != (s)) {\\r
-            (isnull) = 0;\\r
-            break;\\r
-          }\\r
-          else {\\r
-            UChar* endp;\\r
-            (isnull) = 1;\\r
-            while (k < stk) {\\r
-              if (k->type == STK_MEM_START) {\\r
-                if (k->u.mem.end == INVALID_STACK_INDEX) {\\r
-                  (isnull) = 0; break;\\r
-                }\\r
-                if (BIT_STATUS_AT(reg->bt_mem_end, k->u.mem.num))\\r
-                  endp = STACK_AT(k->u.mem.end)->u.mem.pstr;\\r
-                else\\r
-                  endp = (UChar* )k->u.mem.end;\\r
-                if (STACK_AT(k->u.mem.start)->u.mem.pstr != endp) {\\r
-                  (isnull) = 0; break;\\r
-                }\\r
-                else if (endp != s) {\\r
-                  (isnull) = -1; /* empty, but position changed */ \\r
-                }\\r
-              }\\r
-              k++;\\r
-            }\\r
-           break;\\r
-          }\\r
-        }\\r
-        else {\\r
-          level--;\\r
-        }\\r
-      }\\r
-    }\\r
-    else if (k->type == STK_NULL_CHECK_END) {\\r
-      if (k->u.null_check.num == (id)) level++;\\r
-    }\\r
-  }\\r
-} while(0)\r
-\r
-#define STACK_GET_REPEAT(id, k) do {\\r
-  int level = 0;\\r
-  k = stk;\\r
-  while (1) {\\r
-    k--;\\r
-    STACK_BASE_CHECK(k, "STACK_GET_REPEAT"); \\r
-    if (k->type == STK_REPEAT) {\\r
-      if (level == 0) {\\r
-        if (k->u.repeat.num == (id)) {\\r
-          break;\\r
-        }\\r
-      }\\r
-    }\\r
-    else if (k->type == STK_CALL_FRAME) level--;\\r
-    else if (k->type == STK_RETURN)     level++;\\r
-  }\\r
-} while(0)\r
-\r
-#define STACK_RETURN(addr)  do {\\r
-  int level = 0;\\r
-  OnigStackType* k = stk;\\r
-  while (1) {\\r
-    k--;\\r
-    STACK_BASE_CHECK(k, "STACK_RETURN"); \\r
-    if (k->type == STK_CALL_FRAME) {\\r
-      if (level == 0) {\\r
-        (addr) = k->u.call_frame.ret_addr;\\r
-        break;\\r
-      }\\r
-      else level--;\\r
-    }\\r
-    else if (k->type == STK_RETURN)\\r
-      level++;\\r
-  }\\r
-} while(0)\r
-\r
-\r
-#define STRING_CMP(s1,s2,len) do {\\r
-  while (len-- > 0) {\\r
-    if (*s1++ != *s2++) goto fail;\\r
-  }\\r
-} while(0)\r
-\r
-#define STRING_CMP_IC(case_fold_flag,s1,ps2,len) do {\\r
-  if (string_cmp_ic(encode, case_fold_flag, s1, ps2, len) == 0) \\r
-    goto fail; \\r
-} while(0)\r
-\r
-static int string_cmp_ic(OnigEncoding enc, int case_fold_flag,\r
-                        UChar* s1, UChar** ps2, int mblen)\r
-{\r
-  UChar buf1[ONIGENC_MBC_CASE_FOLD_MAXLEN];\r
-  UChar buf2[ONIGENC_MBC_CASE_FOLD_MAXLEN];\r
-  UChar *p1, *p2, *end1, *s2, *end2;\r
-  int len1, len2;\r
-\r
-  s2   = *ps2;\r
-  end1 = s1 + mblen;\r
-  end2 = s2 + mblen;\r
-  while (s1 < end1) {\r
-    len1 = ONIGENC_MBC_CASE_FOLD(enc, case_fold_flag, &s1, end1, buf1);\r
-    len2 = ONIGENC_MBC_CASE_FOLD(enc, case_fold_flag, &s2, end2, buf2);\r
-    if (len1 != len2) return 0;\r
-    p1 = buf1;\r
-    p2 = buf2;\r
-    while (len1-- > 0) {\r
-      if (*p1 != *p2) return 0;\r
-      p1++;\r
-      p2++;\r
-    }\r
-  }\r
-\r
-  *ps2 = s2;\r
-  return 1;\r
-}\r
-\r
-#define STRING_CMP_VALUE(s1,s2,len,is_fail) do {\\r
-  is_fail = 0;\\r
-  while (len-- > 0) {\\r
-    if (*s1++ != *s2++) {\\r
-      is_fail = 1; break;\\r
-    }\\r
-  }\\r
-} while(0)\r
-\r
-#define STRING_CMP_VALUE_IC(case_fold_flag,s1,ps2,len,is_fail) do {\\r
-  if (string_cmp_ic(encode, case_fold_flag, s1, ps2, len) == 0) \\r
-    is_fail = 1; \\r
-  else \\r
-    is_fail = 0; \\r
-} while(0)\r
-\r
-\r
-#define IS_EMPTY_STR           (str == end)\r
-#define ON_STR_BEGIN(s)       ((s) == str)\r
-#define ON_STR_END(s)         ((s) == end)\r
-#ifdef USE_MATCH_RANGE_MUST_BE_INSIDE_OF_SPECIFIED_RANGE\r
-#define DATA_ENSURE_CHECK1     (s < right_range)\r
-#define DATA_ENSURE_CHECK(n)   (s + (n) <= right_range)\r
-#define DATA_ENSURE(n)         if (s + (n) > right_range) goto fail\r
-#else\r
-#define DATA_ENSURE_CHECK1     (s < end)\r
-#define DATA_ENSURE_CHECK(n)   (s + (n) <= end)\r
-#define DATA_ENSURE(n)         if (s + (n) > end) goto fail\r
-#endif /* USE_MATCH_RANGE_MUST_BE_INSIDE_OF_SPECIFIED_RANGE */\r
-\r
-\r
-#ifdef USE_CAPTURE_HISTORY\r
-static int\r
-make_capture_history_tree(OnigCaptureTreeNode* node, OnigStackType** kp,\r
-                          OnigStackType* stk_top, UChar* str, regex_t* reg)\r
-{\r
-  int n, r;\r
-  OnigCaptureTreeNode* child;\r
-  OnigStackType* k = *kp;\r
-\r
-  while (k < stk_top) {\r
-    if (k->type == STK_MEM_START) {\r
-      n = k->u.mem.num;\r
-      if (n <= ONIG_MAX_CAPTURE_HISTORY_GROUP &&\r
-          BIT_STATUS_AT(reg->capture_history, n) != 0) {\r
-        child = history_node_new();\r
-        CHECK_NULL_RETURN_MEMERR(child);\r
-        child->group = n;\r
-        child->beg = (int )(k->u.mem.pstr - str);\r
-        r = history_tree_add_child(node, child);\r
-        if (r != 0) return r;\r
-        *kp = (k + 1);\r
-        r = make_capture_history_tree(child, kp, stk_top, str, reg);\r
-        if (r != 0) return r;\r
-\r
-        k = *kp;\r
-        child->end = (int )(k->u.mem.pstr - str);\r
-      }\r
-    }\r
-    else if (k->type == STK_MEM_END) {\r
-      if (k->u.mem.num == node->group) {\r
-        node->end = (int )(k->u.mem.pstr - str);\r
-        *kp = k;\r
-        return 0;\r
-      }\r
-    }\r
-    k++;\r
-  }\r
-\r
-  return 1; /* 1: root node ending. */\r
-}\r
-#endif\r
-\r
-#ifdef USE_BACKREF_WITH_LEVEL\r
-static int mem_is_in_memp(int mem, int num, UChar* memp)\r
-{\r
-  int i;\r
-  MemNumType m;\r
-\r
-  for (i = 0; i < num; i++) {\r
-    GET_MEMNUM_INC(m, memp);\r
-    if (mem == (int )m) return 1;\r
-  }\r
-  return 0;\r
-}\r
-\r
-static int backref_match_at_nested_level(regex_t* reg\r
-        , OnigStackType* top, OnigStackType* stk_base\r
-        , int ignore_case, int case_fold_flag\r
-        , int nest, int mem_num, UChar* memp, UChar** s, const UChar* send)\r
-{\r
-  UChar *ss, *p, *pstart, *pend = NULL_UCHARP;\r
-  int level;\r
-  OnigStackType* k;\r
-\r
-  level = 0;\r
-  k = top;\r
-  k--;\r
-  while (k >= stk_base) {\r
-    if (k->type == STK_CALL_FRAME) {\r
-      level--;\r
-    }\r
-    else if (k->type == STK_RETURN) {\r
-      level++;\r
-    }\r
-    else if (level == nest) {\r
-      if (k->type == STK_MEM_START) {\r
-       if (mem_is_in_memp(k->u.mem.num, mem_num, memp)) {\r
-         pstart = k->u.mem.pstr;\r
-         if (pend != NULL_UCHARP) {\r
-           if (pend - pstart > send - *s) return 0; /* or goto next_mem; */\r
-           p  = pstart;\r
-           ss = *s;\r
-\r
-           if (ignore_case != 0) {\r
-             if (string_cmp_ic(reg->enc, case_fold_flag,\r
-                               pstart, &ss, (int )(pend - pstart)) == 0)\r
-               return 0; /* or goto next_mem; */\r
-           }\r
-           else {\r
-             while (p < pend) {\r
-               if (*p++ != *ss++) return 0; /* or goto next_mem; */\r
-             }\r
-           }\r
-\r
-           *s = ss;\r
-           return 1;\r
-         }\r
-       }\r
-      }\r
-      else if (k->type == STK_MEM_END) {\r
-       if (mem_is_in_memp(k->u.mem.num, mem_num, memp)) {\r
-         pend = k->u.mem.pstr;\r
-       }\r
-      }\r
-    }\r
-    k--;\r
-  }\r
-\r
-  return 0;\r
-}\r
-#endif /* USE_BACKREF_WITH_LEVEL */\r
-\r
-\r
-#ifdef ONIG_DEBUG_STATISTICS\r
-\r
-#define USE_TIMEOFDAY\r
-\r
-#ifdef USE_TIMEOFDAY\r
-#ifdef HAVE_SYS_TIME_H\r
-#include <sys/time.h>\r
-#endif\r
-#ifdef HAVE_UNISTD_H\r
-#include <unistd.h>\r
-#endif\r
-static struct timeval ts, te;\r
-#define GETTIME(t)        gettimeofday(&(t), (struct timezone* )0)\r
-#define TIMEDIFF(te,ts)   (((te).tv_usec - (ts).tv_usec) + \\r
-                           (((te).tv_sec - (ts).tv_sec)*1000000))\r
-#else\r
-#ifdef HAVE_SYS_TIMES_H\r
-#include <sys/times.h>\r
-#endif\r
-static struct tms ts, te;\r
-#define GETTIME(t)         times(&(t))\r
-#define TIMEDIFF(te,ts)   ((te).tms_utime - (ts).tms_utime)\r
-#endif\r
-\r
-static int OpCounter[256];\r
-static int OpPrevCounter[256];\r
-static unsigned long OpTime[256];\r
-static int OpCurr = OP_FINISH;\r
-static int OpPrevTarget = OP_FAIL;\r
-static int MaxStackDepth = 0;\r
-\r
-#define MOP_IN(opcode) do {\\r
-  if (opcode == OpPrevTarget) OpPrevCounter[OpCurr]++;\\r
-  OpCurr = opcode;\\r
-  OpCounter[opcode]++;\\r
-  GETTIME(ts);\\r
-} while(0)\r
-\r
-#define MOP_OUT do {\\r
-  GETTIME(te);\\r
-  OpTime[OpCurr] += TIMEDIFF(te, ts);\\r
-} while(0)\r
-\r
-extern void\r
-onig_statistics_init(void)\r
-{\r
-  int i;\r
-  for (i = 0; i < 256; i++) {\r
-    OpCounter[i] = OpPrevCounter[i] = 0; OpTime[i] = 0;\r
-  }\r
-  MaxStackDepth = 0;\r
-}\r
-\r
-extern void\r
-onig_print_statistics(FILE* f)\r
-{\r
-  int i;\r
-  fprintf(f, "   count      prev        time\n");\r
-  for (i = 0; OnigOpInfo[i].opcode >= 0; i++) {\r
-    fprintf(f, "%8d: %8d: %10ld: %s\n",\r
-           OpCounter[i], OpPrevCounter[i], OpTime[i], OnigOpInfo[i].name);\r
-  }\r
-  fprintf(f, "\nmax stack depth: %d\n", MaxStackDepth);\r
-}\r
-\r
-#define STACK_INC do {\\r
-  stk++;\\r
-  if (stk - stk_base > MaxStackDepth) \\r
-    MaxStackDepth = stk - stk_base;\\r
-} while(0)\r
-\r
-#else\r
-#define STACK_INC     stk++\r
-\r
-#define MOP_IN(opcode)\r
-#define MOP_OUT\r
-#endif\r
-\r
-\r
-/* matching region of POSIX API */\r
-typedef int regoff_t;\r
-\r
-typedef struct {\r
-  regoff_t  rm_so;\r
-  regoff_t  rm_eo;\r
-} posix_regmatch_t;\r
-\r
-/* match data(str - end) from position (sstart). */\r
-/* if sstart == str then set sprev to NULL. */\r
-static int\r
-match_at(regex_t* reg, const UChar* str, const UChar* end,\r
-#ifdef USE_MATCH_RANGE_MUST_BE_INSIDE_OF_SPECIFIED_RANGE\r
-        const UChar* right_range,\r
-#endif\r
-        const UChar* sstart, UChar* sprev, OnigMatchArg* msa)\r
-{\r
-  static UChar FinishCode[] = { OP_FINISH };\r
-\r
-  int i, n, num_mem, best_len, pop_level;\r
-  LengthType tlen, tlen2;\r
-  MemNumType mem;\r
-  RelAddrType addr;\r
-  OnigOptionType option = reg->options;\r
-  OnigEncoding encode = reg->enc;\r
-  OnigCaseFoldType case_fold_flag = reg->case_fold_flag;\r
-  UChar *s, *q, *sbegin;\r
-  UChar *p = reg->p;\r
-  char *alloca_base;\r
-  OnigStackType *stk_alloc, *stk_base, *stk, *stk_end;\r
-  OnigStackType *stkp; /* used as any purpose. */\r
-  OnigStackIndex si;\r
-  OnigStackIndex *repeat_stk;\r
-  OnigStackIndex *mem_start_stk, *mem_end_stk;\r
-#ifdef USE_COMBINATION_EXPLOSION_CHECK\r
-  int scv;\r
-  unsigned char* state_check_buff = msa->state_check_buff;\r
-  int num_comb_exp_check = reg->num_comb_exp_check;\r
-#endif\r
-  n = reg->num_repeat + reg->num_mem * 2;\r
-\r
-  STACK_INIT(alloca_base, n, INIT_MATCH_STACK_SIZE);\r
-  pop_level = reg->stack_pop_level;\r
-  num_mem = reg->num_mem;\r
-  repeat_stk = (OnigStackIndex* )alloca_base;\r
-\r
-  mem_start_stk = (OnigStackIndex* )(repeat_stk + reg->num_repeat);\r
-  mem_end_stk   = mem_start_stk + num_mem;\r
-  mem_start_stk--; /* for index start from 1,\r
-                     mem_start_stk[1]..mem_start_stk[num_mem] */\r
-  mem_end_stk--;   /* for index start from 1,\r
-                     mem_end_stk[1]..mem_end_stk[num_mem] */\r
-  for (i = 1; i <= num_mem; i++) {\r
-    mem_start_stk[i] = mem_end_stk[i] = INVALID_STACK_INDEX;\r
-  }\r
-\r
-#ifdef ONIG_DEBUG_MATCH\r
-  fprintf(stderr, "match_at: str: %d, end: %d, start: %d, sprev: %d\n",\r
-         (int )str, (int )end, (int )sstart, (int )sprev);\r
-  fprintf(stderr, "size: %d, start offset: %d\n",\r
-         (int )(end - str), (int )(sstart - str));\r
-#endif\r
-\r
-  STACK_PUSH_ENSURED(STK_ALT, FinishCode);  /* bottom stack */\r
-  best_len = ONIG_MISMATCH;\r
-  s = (UChar* )sstart;\r
-  while (1) {\r
-#ifdef ONIG_DEBUG_MATCH\r
-    {\r
-      UChar *q, *bp, buf[50];\r
-      int len;\r
-      fprintf(stderr, "%4d> \"", (int )(s - str));\r
-      bp = buf;\r
-      for (i = 0, q = s; i < 7 && q < end; i++) {\r
-       len = enclen(encode, q);\r
-       while (len-- > 0) *bp++ = *q++;\r
-      }\r
-      if (q < end) { xmemcpy(bp, "...\"", 4); bp += 4; }\r
-      else         { xmemcpy(bp, "\"",    1); bp += 1; }\r
-      *bp = 0;\r
-      fputs((char* )buf, stderr);\r
-      for (i = 0; i < 20 - (bp - buf); i++) fputc(' ', stderr);\r
-      onig_print_compiled_byte_code(stderr, p, NULL, encode);\r
-      fprintf(stderr, "\n");\r
-    }\r
-#endif\r
-\r
-    sbegin = s;\r
-    switch (*p++) {\r
-    case OP_END:  MOP_IN(OP_END);\r
-      n = (int)(s - sstart);\r
-      if (n > best_len) {\r
-       OnigRegion* region;\r
-#ifdef USE_FIND_LONGEST_SEARCH_ALL_OF_RANGE\r
-       if (IS_FIND_LONGEST(option)) {\r
-         if (n > msa->best_len) {\r
-           msa->best_len = n;\r
-           msa->best_s   = (UChar* )sstart;\r
-         }\r
-         else\r
-           goto end_best_len;\r
-        }\r
-#endif\r
-       best_len = n;\r
-       region = msa->region;\r
-       if (region) {\r
-#ifdef USE_POSIX_API_REGION_OPTION\r
-         if (IS_POSIX_REGION(msa->options)) {\r
-           posix_regmatch_t* rmt = (posix_regmatch_t* )region;\r
-\r
-           rmt[0].rm_so = (regoff_t)(sstart - str);\r
-           rmt[0].rm_eo = (regoff_t)(s      - str);\r
-           for (i = 1; i <= num_mem; i++) {\r
-             if (mem_end_stk[i] != INVALID_STACK_INDEX) {\r
-               if (BIT_STATUS_AT(reg->bt_mem_start, i))\r
-                 rmt[i].rm_so = (regoff_t)(STACK_AT(mem_start_stk[i])->u.mem.pstr - str);\r
-               else\r
-                 rmt[i].rm_so = (regoff_t)((UChar* )((void* )(mem_start_stk[i])) - str);\r
-\r
-               rmt[i].rm_eo = (regoff_t)((BIT_STATUS_AT(reg->bt_mem_end, i)\r
-                               ? STACK_AT(mem_end_stk[i])->u.mem.pstr\r
-                               : (UChar* )((void* )mem_end_stk[i])) - str);\r
-             }\r
-             else {\r
-               rmt[i].rm_so = rmt[i].rm_eo = ONIG_REGION_NOTPOS;\r
-             }\r
-           }\r
-         }\r
-         else {\r
-#endif /* USE_POSIX_API_REGION_OPTION */\r
-           region->beg[0] = (int)(sstart - str);\r
-           region->end[0] = (int)(s      - str);\r
-           for (i = 1; i <= num_mem; i++) {\r
-             if (mem_end_stk[i] != INVALID_STACK_INDEX) {\r
-               if (BIT_STATUS_AT(reg->bt_mem_start, i))\r
-                 region->beg[i] = (int)(STACK_AT(mem_start_stk[i])->u.mem.pstr - str);\r
-               else\r
-                 region->beg[i] = (int)((UChar* )((void* )mem_start_stk[i]) - str);\r
-\r
-               region->end[i] = (int)((BIT_STATUS_AT(reg->bt_mem_end, i)\r
-                                 ? STACK_AT(mem_end_stk[i])->u.mem.pstr\r
-                                 : (UChar* )((void* )mem_end_stk[i])) - str);\r
-             }\r
-             else {\r
-               region->beg[i] = region->end[i] = ONIG_REGION_NOTPOS;\r
-             }\r
-           }\r
-\r
-#ifdef USE_CAPTURE_HISTORY\r
-           if (reg->capture_history != 0) {\r
-              int r;\r
-              OnigCaptureTreeNode* node;\r
-\r
-              if (IS_NULL(region->history_root)) {\r
-                region->history_root = node = history_node_new();\r
-                CHECK_NULL_RETURN_MEMERR(node);\r
-              }\r
-              else {\r
-                node = region->history_root;\r
-                history_tree_clear(node);\r
-              }\r
-\r
-              node->group = 0;\r
-              node->beg   = (int)(sstart - str);\r
-              node->end   = (int)(s      - str);\r
-\r
-              stkp = stk_base;\r
-              r = make_capture_history_tree(region->history_root, &stkp,\r
-                                            stk, (UChar* )str, reg);\r
-              if (r < 0) {\r
-                best_len = r; /* error code */\r
-                goto finish;\r
-              }\r
-           }\r
-#endif /* USE_CAPTURE_HISTORY */\r
-#ifdef USE_POSIX_API_REGION_OPTION\r
-         } /* else IS_POSIX_REGION() */\r
-#endif\r
-       } /* if (region) */\r
-      } /* n > best_len */\r
-\r
-#ifdef USE_FIND_LONGEST_SEARCH_ALL_OF_RANGE\r
-    end_best_len:\r
-#endif\r
-      MOP_OUT;\r
-\r
-      if (IS_FIND_CONDITION(option)) {\r
-       if (IS_FIND_NOT_EMPTY(option) && s == sstart) {\r
-         best_len = ONIG_MISMATCH;\r
-         goto fail; /* for retry */\r
-       }\r
-       if (IS_FIND_LONGEST(option) && DATA_ENSURE_CHECK1) {\r
-         goto fail; /* for retry */\r
-       }\r
-      }\r
-\r
-      /* default behavior: return first-matching result. */\r
-      goto finish;\r
-      break;\r
-\r
-    case OP_EXACT1:  MOP_IN(OP_EXACT1);\r
-#if 0\r
-      DATA_ENSURE(1);\r
-      if (*p != *s) goto fail;\r
-      p++; s++;\r
-#endif\r
-      if (*p != *s++) goto fail;\r
-      DATA_ENSURE(0);\r
-      p++;\r
-      MOP_OUT;\r
-      break;\r
-\r
-    case OP_EXACT1_IC:  MOP_IN(OP_EXACT1_IC);\r
-      {\r
-       int len;\r
-       UChar *q, lowbuf[ONIGENC_MBC_CASE_FOLD_MAXLEN];\r
-\r
-       DATA_ENSURE(1);\r
-       len = ONIGENC_MBC_CASE_FOLD(encode,\r
-                   /* DISABLE_CASE_FOLD_MULTI_CHAR(case_fold_flag), */\r
-                   case_fold_flag,\r
-                   &s, end, lowbuf);\r
-       DATA_ENSURE(0);\r
-       q = lowbuf;\r
-       while (len-- > 0) {\r
-         if (*p != *q) {\r
-            goto fail;\r
-          }\r
-         p++; q++;\r
-       }\r
-      }\r
-      MOP_OUT;\r
-      break;\r
-\r
-    case OP_EXACT2:  MOP_IN(OP_EXACT2);\r
-      DATA_ENSURE(2);\r
-      if (*p != *s) goto fail;\r
-      p++; s++;\r
-      if (*p != *s) goto fail;\r
-      sprev = s;\r
-      p++; s++;\r
-      MOP_OUT;\r
-      continue;\r
-      break;\r
-\r
-    case OP_EXACT3:  MOP_IN(OP_EXACT3);\r
-      DATA_ENSURE(3);\r
-      if (*p != *s) goto fail;\r
-      p++; s++;\r
-      if (*p != *s) goto fail;\r
-      p++; s++;\r
-      if (*p != *s) goto fail;\r
-      sprev = s;\r
-      p++; s++;\r
-      MOP_OUT;\r
-      continue;\r
-      break;\r
-\r
-    case OP_EXACT4:  MOP_IN(OP_EXACT4);\r
-      DATA_ENSURE(4);\r
-      if (*p != *s) goto fail;\r
-      p++; s++;\r
-      if (*p != *s) goto fail;\r
-      p++; s++;\r
-      if (*p != *s) goto fail;\r
-      p++; s++;\r
-      if (*p != *s) goto fail;\r
-      sprev = s;\r
-      p++; s++;\r
-      MOP_OUT;\r
-      continue;\r
-      break;\r
-\r
-    case OP_EXACT5:  MOP_IN(OP_EXACT5);\r
-      DATA_ENSURE(5);\r
-      if (*p != *s) goto fail;\r
-      p++; s++;\r
-      if (*p != *s) goto fail;\r
-      p++; s++;\r
-      if (*p != *s) goto fail;\r
-      p++; s++;\r
-      if (*p != *s) goto fail;\r
-      p++; s++;\r
-      if (*p != *s) goto fail;\r
-      sprev = s;\r
-      p++; s++;\r
-      MOP_OUT;\r
-      continue;\r
-      break;\r
-\r
-    case OP_EXACTN:  MOP_IN(OP_EXACTN);\r
-      GET_LENGTH_INC(tlen, p);\r
-      DATA_ENSURE(tlen);\r
-      while (tlen-- > 0) {\r
-       if (*p++ != *s++) goto fail;\r
-      }\r
-      sprev = s - 1;\r
-      MOP_OUT;\r
-      continue;\r
-      break;\r
-\r
-    case OP_EXACTN_IC:  MOP_IN(OP_EXACTN_IC);\r
-      {\r
-       int len;\r
-       UChar *q, *endp, lowbuf[ONIGENC_MBC_CASE_FOLD_MAXLEN];\r
-\r
-       GET_LENGTH_INC(tlen, p);\r
-       endp = p + tlen;\r
-\r
-       while (p < endp) {\r
-         sprev = s;\r
-         DATA_ENSURE(1);\r
-         len = ONIGENC_MBC_CASE_FOLD(encode,\r
-                     /* DISABLE_CASE_FOLD_MULTI_CHAR(case_fold_flag), */\r
-                     case_fold_flag,\r
-                     &s, end, lowbuf);\r
-         DATA_ENSURE(0);\r
-         q = lowbuf;\r
-         while (len-- > 0) {\r
-           if (*p != *q) goto fail;\r
-           p++; q++;\r
-         }\r
-       }\r
-      }\r
-\r
-      MOP_OUT;\r
-      continue;\r
-      break;\r
-\r
-    case OP_EXACTMB2N1:  MOP_IN(OP_EXACTMB2N1);\r
-      DATA_ENSURE(2);\r
-      if (*p != *s) goto fail;\r
-      p++; s++;\r
-      if (*p != *s) goto fail;\r
-      p++; s++;\r
-      MOP_OUT;\r
-      break;\r
-\r
-    case OP_EXACTMB2N2:  MOP_IN(OP_EXACTMB2N2);\r
-      DATA_ENSURE(4);\r
-      if (*p != *s) goto fail;\r
-      p++; s++;\r
-      if (*p != *s) goto fail;\r
-      p++; s++;\r
-      sprev = s;\r
-      if (*p != *s) goto fail;\r
-      p++; s++;\r
-      if (*p != *s) goto fail;\r
-      p++; s++;\r
-      MOP_OUT;\r
-      continue;\r
-      break;\r
-\r
-    case OP_EXACTMB2N3:  MOP_IN(OP_EXACTMB2N3);\r
-      DATA_ENSURE(6);\r
-      if (*p != *s) goto fail;\r
-      p++; s++;\r
-      if (*p != *s) goto fail;\r
-      p++; s++;\r
-      if (*p != *s) goto fail;\r
-      p++; s++;\r
-      if (*p != *s) goto fail;\r
-      p++; s++;\r
-      sprev = s;\r
-      if (*p != *s) goto fail;\r
-      p++; s++;\r
-      if (*p != *s) goto fail;\r
-      p++; s++;\r
-      MOP_OUT;\r
-      continue;\r
-      break;\r
-\r
-    case OP_EXACTMB2N:  MOP_IN(OP_EXACTMB2N);\r
-      GET_LENGTH_INC(tlen, p);\r
-      DATA_ENSURE(tlen * 2);\r
-      while (tlen-- > 0) {\r
-       if (*p != *s) goto fail;\r
-       p++; s++;\r
-       if (*p != *s) goto fail;\r
-       p++; s++;\r
-      }\r
-      sprev = s - 2;\r
-      MOP_OUT;\r
-      continue;\r
-      break;\r
-\r
-    case OP_EXACTMB3N:  MOP_IN(OP_EXACTMB3N);\r
-      GET_LENGTH_INC(tlen, p);\r
-      DATA_ENSURE(tlen * 3);\r
-      while (tlen-- > 0) {\r
-       if (*p != *s) goto fail;\r
-       p++; s++;\r
-       if (*p != *s) goto fail;\r
-       p++; s++;\r
-       if (*p != *s) goto fail;\r
-       p++; s++;\r
-      }\r
-      sprev = s - 3;\r
-      MOP_OUT;\r
-      continue;\r
-      break;\r
-\r
-    case OP_EXACTMBN:  MOP_IN(OP_EXACTMBN);\r
-      GET_LENGTH_INC(tlen,  p);  /* mb-len */\r
-      GET_LENGTH_INC(tlen2, p);  /* string len */\r
-      tlen2 *= tlen;\r
-      DATA_ENSURE(tlen2);\r
-      while (tlen2-- > 0) {\r
-       if (*p != *s) goto fail;\r
-       p++; s++;\r
-      }\r
-      sprev = s - tlen;\r
-      MOP_OUT;\r
-      continue;\r
-      break;\r
-\r
-    case OP_CCLASS:  MOP_IN(OP_CCLASS);\r
-      DATA_ENSURE(1);\r
-      if (BITSET_AT(((BitSetRef )p), *s) == 0) goto fail;\r
-      p += SIZE_BITSET;\r
-      s += enclen(encode, s);   /* OP_CCLASS can match mb-code. \D, \S */\r
-      MOP_OUT;\r
-      break;\r
-\r
-    case OP_CCLASS_MB:  MOP_IN(OP_CCLASS_MB);\r
-      if (! ONIGENC_IS_MBC_HEAD(encode, s)) goto fail;\r
-\r
-    cclass_mb:\r
-      GET_LENGTH_INC(tlen, p);\r
-      {\r
-       OnigCodePoint code;\r
-       UChar *ss;\r
-       int mb_len;\r
-\r
-       DATA_ENSURE(1);\r
-       mb_len = enclen(encode, s);\r
-       DATA_ENSURE(mb_len);\r
-       ss = s;\r
-       s += mb_len;\r
-       code = ONIGENC_MBC_TO_CODE(encode, ss, s);\r
-\r
-#ifdef PLATFORM_UNALIGNED_WORD_ACCESS\r
-       if (! onig_is_in_code_range(p, code)) goto fail;\r
-#else\r
-       q = p;\r
-       ALIGNMENT_RIGHT(q);\r
-       if (! onig_is_in_code_range(q, code)) goto fail;\r
-#endif\r
-      }\r
-      p += tlen;\r
-      MOP_OUT;\r
-      break;\r
-\r
-    case OP_CCLASS_MIX:  MOP_IN(OP_CCLASS_MIX);\r
-      DATA_ENSURE(1);\r
-      if (ONIGENC_IS_MBC_HEAD(encode, s)) {\r
-       p += SIZE_BITSET;\r
-       goto cclass_mb;\r
-      }\r
-      else {\r
-       if (BITSET_AT(((BitSetRef )p), *s) == 0)\r
-         goto fail;\r
-\r
-       p += SIZE_BITSET;\r
-       GET_LENGTH_INC(tlen, p);\r
-       p += tlen;\r
-       s++;\r
-      }\r
-      MOP_OUT;\r
-      break;\r
-\r
-    case OP_CCLASS_NOT:  MOP_IN(OP_CCLASS_NOT);\r
-      DATA_ENSURE(1);\r
-      if (BITSET_AT(((BitSetRef )p), *s) != 0) goto fail;\r
-      p += SIZE_BITSET;\r
-      s += enclen(encode, s);\r
-      MOP_OUT;\r
-      break;\r
-\r
-    case OP_CCLASS_MB_NOT:  MOP_IN(OP_CCLASS_MB_NOT);\r
-      DATA_ENSURE(1);\r
-      if (! ONIGENC_IS_MBC_HEAD(encode, s)) {\r
-       s++;\r
-       GET_LENGTH_INC(tlen, p);\r
-       p += tlen;\r
-       goto cc_mb_not_success;\r
-      }\r
-\r
-    cclass_mb_not:\r
-      GET_LENGTH_INC(tlen, p);\r
-      {\r
-       OnigCodePoint code;\r
-       UChar *ss;\r
-       int mb_len = enclen(encode, s);\r
-\r
-       if (! DATA_ENSURE_CHECK(mb_len)) {\r
-          DATA_ENSURE(1);\r
-         s = (UChar* )end;\r
-         p += tlen;\r
-         goto cc_mb_not_success;\r
-       }\r
-\r
-       ss = s;\r
-       s += mb_len;\r
-       code = ONIGENC_MBC_TO_CODE(encode, ss, s);\r
-\r
-#ifdef PLATFORM_UNALIGNED_WORD_ACCESS\r
-       if (onig_is_in_code_range(p, code)) goto fail;\r
-#else\r
-       q = p;\r
-       ALIGNMENT_RIGHT(q);\r
-       if (onig_is_in_code_range(q, code)) goto fail;\r
-#endif\r
-      }\r
-      p += tlen;\r
-\r
-    cc_mb_not_success:\r
-      MOP_OUT;\r
-      break;\r
-\r
-    case OP_CCLASS_MIX_NOT:  MOP_IN(OP_CCLASS_MIX_NOT);\r
-      DATA_ENSURE(1);\r
-      if (ONIGENC_IS_MBC_HEAD(encode, s)) {\r
-       p += SIZE_BITSET;\r
-       goto cclass_mb_not;\r
-      }\r
-      else {\r
-       if (BITSET_AT(((BitSetRef )p), *s) != 0)\r
-         goto fail;\r
-\r
-       p += SIZE_BITSET;\r
-       GET_LENGTH_INC(tlen, p);\r
-       p += tlen;\r
-       s++;\r
-      }\r
-      MOP_OUT;\r
-      break;\r
-\r
-    case OP_CCLASS_NODE:  MOP_IN(OP_CCLASS_NODE);\r
-      {\r
-       OnigCodePoint code;\r
-        void *node;\r
-        int mb_len;\r
-        UChar *ss;\r
-\r
-        DATA_ENSURE(1);\r
-        GET_POINTER_INC(node, p);\r
-       mb_len = enclen(encode, s);\r
-       ss = s;\r
-       s += mb_len;\r
-       DATA_ENSURE(0);\r
-       code = ONIGENC_MBC_TO_CODE(encode, ss, s);\r
-       if (onig_is_code_in_cc_len(mb_len, code, node) == 0) goto fail;\r
-      }\r
-      MOP_OUT;\r
-      break;\r
-\r
-    case OP_ANYCHAR:  MOP_IN(OP_ANYCHAR);\r
-      DATA_ENSURE(1);\r
-      n = enclen(encode, s);\r
-      DATA_ENSURE(n);\r
-      if (ONIGENC_IS_MBC_NEWLINE(encode, s, end)) goto fail;\r
-      s += n;\r
-      MOP_OUT;\r
-      break;\r
-\r
-    case OP_ANYCHAR_ML:  MOP_IN(OP_ANYCHAR_ML);\r
-      DATA_ENSURE(1);\r
-      n = enclen(encode, s);\r
-      DATA_ENSURE(n);\r
-      s += n;\r
-      MOP_OUT;\r
-      break;\r
-\r
-    case OP_ANYCHAR_STAR:  MOP_IN(OP_ANYCHAR_STAR);\r
-      while (DATA_ENSURE_CHECK1) {\r
-       STACK_PUSH_ALT(p, s, sprev);\r
-       n = enclen(encode, s);\r
-        DATA_ENSURE(n);\r
-        if (ONIGENC_IS_MBC_NEWLINE(encode, s, end))  goto fail;\r
-        sprev = s;\r
-        s += n;\r
-      }\r
-      MOP_OUT;\r
-      break;\r
-\r
-    case OP_ANYCHAR_ML_STAR:  MOP_IN(OP_ANYCHAR_ML_STAR);\r
-      while (DATA_ENSURE_CHECK1) {\r
-       STACK_PUSH_ALT(p, s, sprev);\r
-       n = enclen(encode, s);\r
-       if (n > 1) {\r
-         DATA_ENSURE(n);\r
-         sprev = s;\r
-         s += n;\r
-       }\r
-       else {\r
-         sprev = s;\r
-         s++;\r
-       }\r
-      }\r
-      MOP_OUT;\r
-      break;\r
-\r
-    case OP_ANYCHAR_STAR_PEEK_NEXT:  MOP_IN(OP_ANYCHAR_STAR_PEEK_NEXT);\r
-      while (DATA_ENSURE_CHECK1) {\r
-       if (*p == *s) {\r
-         STACK_PUSH_ALT(p + 1, s, sprev);\r
-       }\r
-       n = enclen(encode, s);\r
-        DATA_ENSURE(n);\r
-        if (ONIGENC_IS_MBC_NEWLINE(encode, s, end))  goto fail;\r
-        sprev = s;\r
-        s += n;\r
-      }\r
-      p++;\r
-      MOP_OUT;\r
-      break;\r
-\r
-    case OP_ANYCHAR_ML_STAR_PEEK_NEXT:MOP_IN(OP_ANYCHAR_ML_STAR_PEEK_NEXT);\r
-      while (DATA_ENSURE_CHECK1) {\r
-       if (*p == *s) {\r
-         STACK_PUSH_ALT(p + 1, s, sprev);\r
-       }\r
-       n = enclen(encode, s);\r
-       if (n > 1) {\r
-         DATA_ENSURE(n);\r
-         sprev = s;\r
-         s += n;\r
-       }\r
-       else {\r
-         sprev = s;\r
-         s++;\r
-       }\r
-      }\r
-      p++;\r
-      MOP_OUT;\r
-      break;\r
-\r
-#ifdef USE_COMBINATION_EXPLOSION_CHECK\r
-    case OP_STATE_CHECK_ANYCHAR_STAR:  MOP_IN(OP_STATE_CHECK_ANYCHAR_STAR);\r
-      GET_STATE_CHECK_NUM_INC(mem, p);\r
-      while (DATA_ENSURE_CHECK1) {\r
-       STATE_CHECK_VAL(scv, mem);\r
-       if (scv) goto fail;\r
-\r
-       STACK_PUSH_ALT_WITH_STATE_CHECK(p, s, sprev, mem);\r
-       n = enclen(encode, s);\r
-        DATA_ENSURE(n);\r
-        if (ONIGENC_IS_MBC_NEWLINE(encode, s, end))  goto fail;\r
-        sprev = s;\r
-        s += n;\r
-      }\r
-      MOP_OUT;\r
-      break;\r
-\r
-    case OP_STATE_CHECK_ANYCHAR_ML_STAR:\r
-      MOP_IN(OP_STATE_CHECK_ANYCHAR_ML_STAR);\r
-\r
-      GET_STATE_CHECK_NUM_INC(mem, p);\r
-      while (DATA_ENSURE_CHECK1) {\r
-       STATE_CHECK_VAL(scv, mem);\r
-       if (scv) goto fail;\r
-\r
-       STACK_PUSH_ALT_WITH_STATE_CHECK(p, s, sprev, mem);\r
-       n = enclen(encode, s);\r
-       if (n > 1) {\r
-         DATA_ENSURE(n);\r
-         sprev = s;\r
-         s += n;\r
-       }\r
-       else {\r
-         sprev = s;\r
-         s++;\r
-       }\r
-      }\r
-      MOP_OUT;\r
-      break;\r
-#endif /* USE_COMBINATION_EXPLOSION_CHECK */\r
-\r
-    case OP_WORD:  MOP_IN(OP_WORD);\r
-      DATA_ENSURE(1);\r
-      if (! ONIGENC_IS_MBC_WORD(encode, s, end))\r
-       goto fail;\r
-\r
-      s += enclen(encode, s);\r
-      MOP_OUT;\r
-      break;\r
-\r
-    case OP_NOT_WORD:  MOP_IN(OP_NOT_WORD);\r
-      DATA_ENSURE(1);\r
-      if (ONIGENC_IS_MBC_WORD(encode, s, end))\r
-       goto fail;\r
-\r
-      s += enclen(encode, s);\r
-      MOP_OUT;\r
-      break;\r
-\r
-    case OP_WORD_BOUND:  MOP_IN(OP_WORD_BOUND);\r
-      if (ON_STR_BEGIN(s)) {\r
-       DATA_ENSURE(1);\r
-       if (! ONIGENC_IS_MBC_WORD(encode, s, end))\r
-         goto fail;\r
-      }\r
-      else if (ON_STR_END(s)) {\r
-       if (! ONIGENC_IS_MBC_WORD(encode, sprev, end))\r
-         goto fail;\r
-      }\r
-      else {\r
-       if (ONIGENC_IS_MBC_WORD(encode, s, end)\r
-           == ONIGENC_IS_MBC_WORD(encode, sprev, end))\r
-         goto fail;\r
-      }\r
-      MOP_OUT;\r
-      continue;\r
-      break;\r
-\r
-    case OP_NOT_WORD_BOUND:  MOP_IN(OP_NOT_WORD_BOUND);\r
-      if (ON_STR_BEGIN(s)) {\r
-       if (DATA_ENSURE_CHECK1 && ONIGENC_IS_MBC_WORD(encode, s, end))\r
-         goto fail;\r
-      }\r
-      else if (ON_STR_END(s)) {\r
-       if (ONIGENC_IS_MBC_WORD(encode, sprev, end))\r
-         goto fail;\r
-      }\r
-      else {\r
-       if (ONIGENC_IS_MBC_WORD(encode, s, end)\r
-           != ONIGENC_IS_MBC_WORD(encode, sprev, end))\r
-         goto fail;\r
-      }\r
-      MOP_OUT;\r
-      continue;\r
-      break;\r
-\r
-#ifdef USE_WORD_BEGIN_END\r
-    case OP_WORD_BEGIN:  MOP_IN(OP_WORD_BEGIN);\r
-      if (DATA_ENSURE_CHECK1 && ONIGENC_IS_MBC_WORD(encode, s, end)) {\r
-       if (ON_STR_BEGIN(s) || !ONIGENC_IS_MBC_WORD(encode, sprev, end)) {\r
-         MOP_OUT;\r
-         continue;\r
-       }\r
-      }\r
-      goto fail;\r
-      break;\r
-\r
-    case OP_WORD_END:  MOP_IN(OP_WORD_END);\r
-      if (!ON_STR_BEGIN(s) && ONIGENC_IS_MBC_WORD(encode, sprev, end)) {\r
-       if (ON_STR_END(s) || !ONIGENC_IS_MBC_WORD(encode, s, end)) {\r
-         MOP_OUT;\r
-         continue;\r
-       }\r
-      }\r
-      goto fail;\r
-      break;\r
-#endif\r
-\r
-    case OP_BEGIN_BUF:  MOP_IN(OP_BEGIN_BUF);\r
-      if (! ON_STR_BEGIN(s)) goto fail;\r
-\r
-      MOP_OUT;\r
-      continue;\r
-      break;\r
-\r
-    case OP_END_BUF:  MOP_IN(OP_END_BUF);\r
-      if (! ON_STR_END(s)) goto fail;\r
-\r
-      MOP_OUT;\r
-      continue;\r
-      break;\r
-\r
-    case OP_BEGIN_LINE:  MOP_IN(OP_BEGIN_LINE);\r
-      if (ON_STR_BEGIN(s)) {\r
-       if (IS_NOTBOL(msa->options)) goto fail;\r
-       MOP_OUT;\r
-       continue;\r
-      }\r
-      else if (ONIGENC_IS_MBC_NEWLINE(encode, sprev, end) && !ON_STR_END(s)) {\r
-       MOP_OUT;\r
-       continue;\r
-      }\r
-      goto fail;\r
-      break;\r
-\r
-    case OP_END_LINE:  MOP_IN(OP_END_LINE);\r
-      if (ON_STR_END(s)) {\r
-#ifndef USE_NEWLINE_AT_END_OF_STRING_HAS_EMPTY_LINE\r
-       if (IS_EMPTY_STR || !ONIGENC_IS_MBC_NEWLINE(encode, sprev, end)) {\r
-#endif\r
-         if (IS_NOTEOL(msa->options)) goto fail;\r
-         MOP_OUT;\r
-         continue;\r
-#ifndef USE_NEWLINE_AT_END_OF_STRING_HAS_EMPTY_LINE\r
-       }\r
-#endif\r
-      }\r
-      else if (ONIGENC_IS_MBC_NEWLINE(encode, s, end)) {\r
-       MOP_OUT;\r
-       continue;\r
-      }\r
-#ifdef USE_CRNL_AS_LINE_TERMINATOR\r
-      else if (ONIGENC_IS_MBC_CRNL(encode, s, end)) {\r
-       MOP_OUT;\r
-       continue;\r
-      }\r
-#endif\r
-      goto fail;\r
-      break;\r
-\r
-    case OP_SEMI_END_BUF:  MOP_IN(OP_SEMI_END_BUF);\r
-      if (ON_STR_END(s)) {\r
-#ifndef USE_NEWLINE_AT_END_OF_STRING_HAS_EMPTY_LINE\r
-       if (IS_EMPTY_STR || !ONIGENC_IS_MBC_NEWLINE(encode, sprev, end)) {\r
-#endif\r
-         if (IS_NOTEOL(msa->options)) goto fail;\r
-         MOP_OUT;\r
-         continue;\r
-#ifndef USE_NEWLINE_AT_END_OF_STRING_HAS_EMPTY_LINE\r
-       }\r
-#endif\r
-      }\r
-      else if (ONIGENC_IS_MBC_NEWLINE(encode, s, end) &&\r
-              ON_STR_END(s + enclen(encode, s))) {\r
-       MOP_OUT;\r
-       continue;\r
-      }\r
-#ifdef USE_CRNL_AS_LINE_TERMINATOR\r
-      else if (ONIGENC_IS_MBC_CRNL(encode, s, end)) {\r
-        UChar* ss = s + enclen(encode, s);\r
-       ss += enclen(encode, ss);\r
-        if (ON_STR_END(ss)) {\r
-          MOP_OUT;\r
-          continue;\r
-        }\r
-      }\r
-#endif\r
-      goto fail;\r
-      break;\r
-\r
-    case OP_BEGIN_POSITION:  MOP_IN(OP_BEGIN_POSITION);\r
-      if (s != msa->start)\r
-       goto fail;\r
-\r
-      MOP_OUT;\r
-      continue;\r
-      break;\r
-\r
-    case OP_MEMORY_START_PUSH:  MOP_IN(OP_MEMORY_START_PUSH);\r
-      GET_MEMNUM_INC(mem, p);\r
-      STACK_PUSH_MEM_START(mem, s);\r
-      MOP_OUT;\r
-      continue;\r
-      break;\r
-\r
-    case OP_MEMORY_START:  MOP_IN(OP_MEMORY_START);\r
-      GET_MEMNUM_INC(mem, p);\r
-      mem_start_stk[mem] = (OnigStackIndex )((void* )s);\r
-      MOP_OUT;\r
-      continue;\r
-      break;\r
-\r
-    case OP_MEMORY_END_PUSH:  MOP_IN(OP_MEMORY_END_PUSH);\r
-      GET_MEMNUM_INC(mem, p);\r
-      STACK_PUSH_MEM_END(mem, s);\r
-      MOP_OUT;\r
-      continue;\r
-      break;\r
-\r
-    case OP_MEMORY_END:  MOP_IN(OP_MEMORY_END);\r
-      GET_MEMNUM_INC(mem, p);\r
-      mem_end_stk[mem] = (OnigStackIndex )((void* )s);\r
-      MOP_OUT;\r
-      continue;\r
-      break;\r
-\r
-#ifdef USE_SUBEXP_CALL\r
-    case OP_MEMORY_END_PUSH_REC:  MOP_IN(OP_MEMORY_END_PUSH_REC);\r
-      GET_MEMNUM_INC(mem, p);\r
-      STACK_GET_MEM_START(mem, stkp); /* should be before push mem-end. */\r
-      STACK_PUSH_MEM_END(mem, s);\r
-      mem_start_stk[mem] = GET_STACK_INDEX(stkp);\r
-      MOP_OUT;\r
-      continue;\r
-      break;\r
-\r
-    case OP_MEMORY_END_REC:  MOP_IN(OP_MEMORY_END_REC);\r
-      GET_MEMNUM_INC(mem, p);\r
-      mem_end_stk[mem] = (OnigStackIndex )((void* )s);\r
-      STACK_GET_MEM_START(mem, stkp);\r
-\r
-      if (BIT_STATUS_AT(reg->bt_mem_start, mem))\r
-       mem_start_stk[mem] = GET_STACK_INDEX(stkp);\r
-      else\r
-       mem_start_stk[mem] = (OnigStackIndex )((void* )stkp->u.mem.pstr);\r
-\r
-      STACK_PUSH_MEM_END_MARK(mem);\r
-      MOP_OUT;\r
-      continue;\r
-      break;\r
-#endif\r
-\r
-    case OP_BACKREF1:  MOP_IN(OP_BACKREF1);\r
-      mem = 1;\r
-      goto backref;\r
-      break;\r
-\r
-    case OP_BACKREF2:  MOP_IN(OP_BACKREF2);\r
-      mem = 2;\r
-      goto backref;\r
-      break;\r
-\r
-    case OP_BACKREFN:  MOP_IN(OP_BACKREFN);\r
-      GET_MEMNUM_INC(mem, p);\r
-    backref:\r
-      {\r
-       int len;\r
-       UChar *pstart, *pend;\r
-\r
-       /* if you want to remove following line, \r
-          you should check in parse and compile time. */\r
-       if (mem > num_mem) goto fail;\r
-       if (mem_end_stk[mem]   == INVALID_STACK_INDEX) goto fail;\r
-       if (mem_start_stk[mem] == INVALID_STACK_INDEX) goto fail;\r
-\r
-       if (BIT_STATUS_AT(reg->bt_mem_start, mem))\r
-         pstart = STACK_AT(mem_start_stk[mem])->u.mem.pstr;\r
-       else\r
-         pstart = (UChar* )((void* )mem_start_stk[mem]);\r
-\r
-       pend = (BIT_STATUS_AT(reg->bt_mem_end, mem)\r
-               ? STACK_AT(mem_end_stk[mem])->u.mem.pstr\r
-               : (UChar* )((void* )mem_end_stk[mem]));\r
-       n = (int)(pend - pstart);\r
-       DATA_ENSURE(n);\r
-       sprev = s;\r
-       STRING_CMP(pstart, s, n);\r
-       while (sprev + (len = enclen(encode, sprev)) < s)\r
-         sprev += len;\r
-\r
-       MOP_OUT;\r
-       continue;\r
-      }\r
-      break;\r
-\r
-    case OP_BACKREFN_IC:  MOP_IN(OP_BACKREFN_IC);\r
-      GET_MEMNUM_INC(mem, p);\r
-      {\r
-       int len;\r
-       UChar *pstart, *pend;\r
-\r
-       /* if you want to remove following line, \r
-          you should check in parse and compile time. */\r
-       if (mem > num_mem) goto fail;\r
-       if (mem_end_stk[mem]   == INVALID_STACK_INDEX) goto fail;\r
-       if (mem_start_stk[mem] == INVALID_STACK_INDEX) goto fail;\r
-\r
-       if (BIT_STATUS_AT(reg->bt_mem_start, mem))\r
-         pstart = STACK_AT(mem_start_stk[mem])->u.mem.pstr;\r
-       else\r
-         pstart = (UChar* )((void* )mem_start_stk[mem]);\r
-\r
-       pend = (BIT_STATUS_AT(reg->bt_mem_end, mem)\r
-               ? STACK_AT(mem_end_stk[mem])->u.mem.pstr\r
-               : (UChar* )((void* )mem_end_stk[mem]));\r
-       n = (int)(pend - pstart);\r
-       DATA_ENSURE(n);\r
-       sprev = s;\r
-       STRING_CMP_IC(case_fold_flag, pstart, &s, n);\r
-       while (sprev + (len = enclen(encode, sprev)) < s)\r
-         sprev += len;\r
-\r
-       MOP_OUT;\r
-       continue;\r
-      }\r
-      break;\r
-\r
-    case OP_BACKREF_MULTI:  MOP_IN(OP_BACKREF_MULTI);\r
-      {\r
-       int len, is_fail;\r
-       UChar *pstart, *pend, *swork;\r
-\r
-       GET_LENGTH_INC(tlen, p);\r
-       for (i = 0; i < tlen; i++) {\r
-         GET_MEMNUM_INC(mem, p);\r
-\r
-         if (mem_end_stk[mem]   == INVALID_STACK_INDEX) continue;\r
-         if (mem_start_stk[mem] == INVALID_STACK_INDEX) continue;\r
-\r
-         if (BIT_STATUS_AT(reg->bt_mem_start, mem))\r
-           pstart = STACK_AT(mem_start_stk[mem])->u.mem.pstr;\r
-         else\r
-           pstart = (UChar* )((void* )mem_start_stk[mem]);\r
-\r
-         pend = (BIT_STATUS_AT(reg->bt_mem_end, mem)\r
-                 ? STACK_AT(mem_end_stk[mem])->u.mem.pstr\r
-                 : (UChar* )((void* )mem_end_stk[mem]));\r
-         n = (int)(pend - pstart);\r
-         DATA_ENSURE(n);\r
-         sprev = s;\r
-         swork = s;\r
-         STRING_CMP_VALUE(pstart, swork, n, is_fail);\r
-         if (is_fail) continue;\r
-         s = swork;\r
-         while (sprev + (len = enclen(encode, sprev)) < s)\r
-           sprev += len;\r
-\r
-         p += (SIZE_MEMNUM * (tlen - i - 1));\r
-         break; /* success */\r
-       }\r
-       if (i == tlen) goto fail;\r
-       MOP_OUT;\r
-       continue;\r
-      }\r
-      break;\r
-\r
-    case OP_BACKREF_MULTI_IC:  MOP_IN(OP_BACKREF_MULTI_IC);\r
-      {\r
-       int len, is_fail;\r
-       UChar *pstart, *pend, *swork;\r
-\r
-       GET_LENGTH_INC(tlen, p);\r
-       for (i = 0; i < tlen; i++) {\r
-         GET_MEMNUM_INC(mem, p);\r
-\r
-         if (mem_end_stk[mem]   == INVALID_STACK_INDEX) continue;\r
-         if (mem_start_stk[mem] == INVALID_STACK_INDEX) continue;\r
-\r
-         if (BIT_STATUS_AT(reg->bt_mem_start, mem))\r
-           pstart = STACK_AT(mem_start_stk[mem])->u.mem.pstr;\r
-         else\r
-           pstart = (UChar* )((void* )mem_start_stk[mem]);\r
-\r
-         pend = (BIT_STATUS_AT(reg->bt_mem_end, mem)\r
-                 ? STACK_AT(mem_end_stk[mem])->u.mem.pstr\r
-                 : (UChar* )((void* )mem_end_stk[mem]));\r
-         n = (int)(pend - pstart);\r
-         DATA_ENSURE(n);\r
-         sprev = s;\r
-         swork = s;\r
-         STRING_CMP_VALUE_IC(case_fold_flag, pstart, &swork, n, is_fail);\r
-         if (is_fail) continue;\r
-         s = swork;\r
-         while (sprev + (len = enclen(encode, sprev)) < s)\r
-           sprev += len;\r
-\r
-         p += (SIZE_MEMNUM * (tlen - i - 1));\r
-         break; /* success */\r
-       }\r
-       if (i == tlen) goto fail;\r
-       MOP_OUT;\r
-       continue;\r
-      }\r
-      break;\r
-\r
-#ifdef USE_BACKREF_WITH_LEVEL\r
-    case OP_BACKREF_WITH_LEVEL:\r
-      {\r
-       int len;\r
-       OnigOptionType ic;\r
-       LengthType level;\r
-\r
-       GET_OPTION_INC(ic,    p);\r
-       GET_LENGTH_INC(level, p);\r
-       GET_LENGTH_INC(tlen,  p);\r
-\r
-       sprev = s;\r
-       if (backref_match_at_nested_level(reg, stk, stk_base, ic\r
-                 , case_fold_flag, (int )level, (int )tlen, p, &s, end)) {\r
-         while (sprev + (len = enclen(encode, sprev)) < s)\r
-           sprev += len;\r
-\r
-         p += (SIZE_MEMNUM * tlen);\r
-       }\r
-       else\r
-         goto fail;\r
-\r
-       MOP_OUT;\r
-       continue;\r
-      }\r
-      \r
-      break;\r
-#endif\r
-\r
-#if 0   /* no need: IS_DYNAMIC_OPTION() == 0 */\r
-    case OP_SET_OPTION_PUSH:  MOP_IN(OP_SET_OPTION_PUSH);\r
-      GET_OPTION_INC(option, p);\r
-      STACK_PUSH_ALT(p, s, sprev);\r
-      p += SIZE_OP_SET_OPTION + SIZE_OP_FAIL;\r
-      MOP_OUT;\r
-      continue;\r
-      break;\r
-\r
-    case OP_SET_OPTION:  MOP_IN(OP_SET_OPTION);\r
-      GET_OPTION_INC(option, p);\r
-      MOP_OUT;\r
-      continue;\r
-      break;\r
-#endif\r
-\r
-    case OP_NULL_CHECK_START:  MOP_IN(OP_NULL_CHECK_START);\r
-      GET_MEMNUM_INC(mem, p);    /* mem: null check id */\r
-      STACK_PUSH_NULL_CHECK_START(mem, s);\r
-      MOP_OUT;\r
-      continue;\r
-      break;\r
-\r
-    case OP_NULL_CHECK_END:  MOP_IN(OP_NULL_CHECK_END);\r
-      {\r
-       int isnull;\r
-\r
-       GET_MEMNUM_INC(mem, p); /* mem: null check id */\r
-       STACK_NULL_CHECK(isnull, mem, s);\r
-       if (isnull) {\r
-#ifdef ONIG_DEBUG_MATCH\r
-         fprintf(stderr, "NULL_CHECK_END: skip  id:%d, s:%d\n",\r
-                 (int )mem, (int )s);\r
-#endif\r
-       null_check_found:\r
-         /* empty loop founded, skip next instruction */\r
-         switch (*p++) {\r
-         case OP_JUMP:\r
-         case OP_PUSH:\r
-           p += SIZE_RELADDR;\r
-           break;\r
-         case OP_REPEAT_INC:\r
-         case OP_REPEAT_INC_NG:\r
-         case OP_REPEAT_INC_SG:\r
-         case OP_REPEAT_INC_NG_SG:\r
-           p += SIZE_MEMNUM;\r
-           break;\r
-         default:\r
-           goto unexpected_bytecode_error;\r
-           break;\r
-         }\r
-       }\r
-      }\r
-      MOP_OUT;\r
-      continue;\r
-      break;\r
-\r
-#ifdef USE_MONOMANIAC_CHECK_CAPTURES_IN_ENDLESS_REPEAT\r
-    case OP_NULL_CHECK_END_MEMST:  MOP_IN(OP_NULL_CHECK_END_MEMST);\r
-      {\r
-       int isnull;\r
-\r
-       GET_MEMNUM_INC(mem, p); /* mem: null check id */\r
-       STACK_NULL_CHECK_MEMST(isnull, mem, s, reg);\r
-       if (isnull) {\r
-#ifdef ONIG_DEBUG_MATCH\r
-         fprintf(stderr, "NULL_CHECK_END_MEMST: skip  id:%d, s:%d\n",\r
-                 (int )mem, (int )s);\r
-#endif\r
-         if (isnull == -1) goto fail;\r
-         goto  null_check_found;\r
-       }\r
-      }\r
-      MOP_OUT;\r
-      continue;\r
-      break;\r
-#endif\r
-\r
-#ifdef USE_SUBEXP_CALL\r
-    case OP_NULL_CHECK_END_MEMST_PUSH:\r
-      MOP_IN(OP_NULL_CHECK_END_MEMST_PUSH);\r
-      {\r
-       int isnull;\r
-\r
-       GET_MEMNUM_INC(mem, p); /* mem: null check id */\r
-#ifdef USE_MONOMANIAC_CHECK_CAPTURES_IN_ENDLESS_REPEAT\r
-       STACK_NULL_CHECK_MEMST_REC(isnull, mem, s, reg);\r
-#else\r
-       STACK_NULL_CHECK_REC(isnull, mem, s);\r
-#endif\r
-       if (isnull) {\r
-#ifdef ONIG_DEBUG_MATCH\r
-         fprintf(stderr, "NULL_CHECK_END_MEMST_PUSH: skip  id:%d, s:%d\n",\r
-                 (int )mem, (int )s);\r
-#endif\r
-         if (isnull == -1) goto fail;\r
-         goto  null_check_found;\r
-       }\r
-       else {\r
-         STACK_PUSH_NULL_CHECK_END(mem);\r
-       }\r
-      }\r
-      MOP_OUT;\r
-      continue;\r
-      break;\r
-#endif\r
-\r
-    case OP_JUMP:  MOP_IN(OP_JUMP);\r
-      GET_RELADDR_INC(addr, p);\r
-      p += addr;\r
-      MOP_OUT;\r
-      CHECK_INTERRUPT_IN_MATCH_AT;\r
-      continue;\r
-      break;\r
-\r
-    case OP_PUSH:  MOP_IN(OP_PUSH);\r
-      GET_RELADDR_INC(addr, p);\r
-      STACK_PUSH_ALT(p + addr, s, sprev);\r
-      MOP_OUT;\r
-      continue;\r
-      break;\r
-\r
-#ifdef USE_COMBINATION_EXPLOSION_CHECK\r
-    case OP_STATE_CHECK_PUSH:  MOP_IN(OP_STATE_CHECK_PUSH);\r
-      GET_STATE_CHECK_NUM_INC(mem, p);\r
-      STATE_CHECK_VAL(scv, mem);\r
-      if (scv) goto fail;\r
-\r
-      GET_RELADDR_INC(addr, p);\r
-      STACK_PUSH_ALT_WITH_STATE_CHECK(p + addr, s, sprev, mem);\r
-      MOP_OUT;\r
-      continue;\r
-      break;\r
-\r
-    case OP_STATE_CHECK_PUSH_OR_JUMP:  MOP_IN(OP_STATE_CHECK_PUSH_OR_JUMP);\r
-      GET_STATE_CHECK_NUM_INC(mem, p);\r
-      GET_RELADDR_INC(addr, p);\r
-      STATE_CHECK_VAL(scv, mem);\r
-      if (scv) {\r
-       p += addr;\r
-      }\r
-      else {\r
-       STACK_PUSH_ALT_WITH_STATE_CHECK(p + addr, s, sprev, mem);\r
-      }\r
-      MOP_OUT;\r
-      continue;\r
-      break;\r
-\r
-    case OP_STATE_CHECK:  MOP_IN(OP_STATE_CHECK);\r
-      GET_STATE_CHECK_NUM_INC(mem, p);\r
-      STATE_CHECK_VAL(scv, mem);\r
-      if (scv) goto fail;\r
-\r
-      STACK_PUSH_STATE_CHECK(s, mem);\r
-      MOP_OUT;\r
-      continue;\r
-      break;\r
-#endif /* USE_COMBINATION_EXPLOSION_CHECK */\r
-\r
-    case OP_POP:  MOP_IN(OP_POP);\r
-      STACK_POP_ONE;\r
-      MOP_OUT;\r
-      continue;\r
-      break;\r
-\r
-    case OP_PUSH_OR_JUMP_EXACT1:  MOP_IN(OP_PUSH_OR_JUMP_EXACT1);\r
-      GET_RELADDR_INC(addr, p);\r
-      if (*p == *s && DATA_ENSURE_CHECK1) {\r
-       p++;\r
-       STACK_PUSH_ALT(p + addr, s, sprev);\r
-       MOP_OUT;\r
-       continue;\r
-      }\r
-      p += (addr + 1);\r
-      MOP_OUT;\r
-      continue;\r
-      break;\r
-\r
-    case OP_PUSH_IF_PEEK_NEXT:  MOP_IN(OP_PUSH_IF_PEEK_NEXT);\r
-      GET_RELADDR_INC(addr, p);\r
-      if (*p == *s) {\r
-       p++;\r
-       STACK_PUSH_ALT(p + addr, s, sprev);\r
-       MOP_OUT;\r
-       continue;\r
-      }\r
-      p++;\r
-      MOP_OUT;\r
-      continue;\r
-      break;\r
-\r
-    case OP_REPEAT:  MOP_IN(OP_REPEAT);\r
-      {\r
-       GET_MEMNUM_INC(mem, p);    /* mem: OP_REPEAT ID */\r
-       GET_RELADDR_INC(addr, p);\r
-\r
-       STACK_ENSURE(1);\r
-       repeat_stk[mem] = GET_STACK_INDEX(stk);\r
-       STACK_PUSH_REPEAT(mem, p);\r
-\r
-       if (reg->repeat_range[mem].lower == 0) {\r
-         STACK_PUSH_ALT(p + addr, s, sprev);\r
-       }\r
-      }\r
-      MOP_OUT;\r
-      continue;\r
-      break;\r
-\r
-    case OP_REPEAT_NG:  MOP_IN(OP_REPEAT_NG);\r
-      {\r
-       GET_MEMNUM_INC(mem, p);    /* mem: OP_REPEAT ID */\r
-       GET_RELADDR_INC(addr, p);\r
-\r
-       STACK_ENSURE(1);\r
-       repeat_stk[mem] = GET_STACK_INDEX(stk);\r
-       STACK_PUSH_REPEAT(mem, p);\r
-\r
-       if (reg->repeat_range[mem].lower == 0) {\r
-         STACK_PUSH_ALT(p, s, sprev);\r
-         p += addr;\r
-       }\r
-      }\r
-      MOP_OUT;\r
-      continue;\r
-      break;\r
-\r
-    case OP_REPEAT_INC:  MOP_IN(OP_REPEAT_INC);\r
-      GET_MEMNUM_INC(mem, p); /* mem: OP_REPEAT ID */\r
-      si = repeat_stk[mem];\r
-      stkp = STACK_AT(si);\r
-\r
-    repeat_inc:\r
-      stkp->u.repeat.count++;\r
-      if (stkp->u.repeat.count >= reg->repeat_range[mem].upper) {\r
-        /* end of repeat. Nothing to do. */\r
-      }\r
-      else if (stkp->u.repeat.count >= reg->repeat_range[mem].lower) {\r
-        STACK_PUSH_ALT(p, s, sprev);\r
-        p = STACK_AT(si)->u.repeat.pcode; /* Don't use stkp after PUSH. */\r
-      }\r
-      else {\r
-        p = stkp->u.repeat.pcode;\r
-      }\r
-      STACK_PUSH_REPEAT_INC(si);\r
-      MOP_OUT;\r
-      CHECK_INTERRUPT_IN_MATCH_AT;\r
-      continue;\r
-      break;\r
-\r
-    case OP_REPEAT_INC_SG:  MOP_IN(OP_REPEAT_INC_SG);\r
-      GET_MEMNUM_INC(mem, p); /* mem: OP_REPEAT ID */\r
-      STACK_GET_REPEAT(mem, stkp);\r
-      si = GET_STACK_INDEX(stkp);\r
-      goto repeat_inc;\r
-      break;\r
-\r
-    case OP_REPEAT_INC_NG:  MOP_IN(OP_REPEAT_INC_NG);\r
-      GET_MEMNUM_INC(mem, p); /* mem: OP_REPEAT ID */\r
-      si = repeat_stk[mem];\r
-      stkp = STACK_AT(si);\r
-\r
-    repeat_inc_ng:\r
-      stkp->u.repeat.count++;\r
-      if (stkp->u.repeat.count < reg->repeat_range[mem].upper) {\r
-        if (stkp->u.repeat.count >= reg->repeat_range[mem].lower) {\r
-          UChar* pcode = stkp->u.repeat.pcode;\r
-\r
-          STACK_PUSH_REPEAT_INC(si);\r
-          STACK_PUSH_ALT(pcode, s, sprev);\r
-        }\r
-        else {\r
-          p = stkp->u.repeat.pcode;\r
-          STACK_PUSH_REPEAT_INC(si);\r
-        }\r
-      }\r
-      else if (stkp->u.repeat.count == reg->repeat_range[mem].upper) {\r
-        STACK_PUSH_REPEAT_INC(si);\r
-      }\r
-      MOP_OUT;\r
-      CHECK_INTERRUPT_IN_MATCH_AT;\r
-      continue;\r
-      break;\r
-\r
-    case OP_REPEAT_INC_NG_SG:  MOP_IN(OP_REPEAT_INC_NG_SG);\r
-      GET_MEMNUM_INC(mem, p); /* mem: OP_REPEAT ID */\r
-      STACK_GET_REPEAT(mem, stkp);\r
-      si = GET_STACK_INDEX(stkp);\r
-      goto repeat_inc_ng;\r
-      break;\r
-\r
-    case OP_PUSH_POS:  MOP_IN(OP_PUSH_POS);\r
-      STACK_PUSH_POS(s, sprev);\r
-      MOP_OUT;\r
-      continue;\r
-      break;\r
-\r
-    case OP_POP_POS:  MOP_IN(OP_POP_POS);\r
-      {\r
-       STACK_POS_END(stkp);\r
-       s     = stkp->u.state.pstr;\r
-       sprev = stkp->u.state.pstr_prev;\r
-      }\r
-      MOP_OUT;\r
-      continue;\r
-      break;\r
-\r
-    case OP_PUSH_POS_NOT:  MOP_IN(OP_PUSH_POS_NOT);\r
-      GET_RELADDR_INC(addr, p);\r
-      STACK_PUSH_POS_NOT(p + addr, s, sprev);\r
-      MOP_OUT;\r
-      continue;\r
-      break;\r
-\r
-    case OP_FAIL_POS:  MOP_IN(OP_FAIL_POS);\r
-      STACK_POP_TIL_POS_NOT;\r
-      goto fail;\r
-      break;\r
-\r
-    case OP_PUSH_STOP_BT:  MOP_IN(OP_PUSH_STOP_BT);\r
-      STACK_PUSH_STOP_BT;\r
-      MOP_OUT;\r
-      continue;\r
-      break;\r
-\r
-    case OP_POP_STOP_BT:  MOP_IN(OP_POP_STOP_BT);\r
-      STACK_STOP_BT_END;\r
-      MOP_OUT;\r
-      continue;\r
-      break;\r
-\r
-    case OP_LOOK_BEHIND:  MOP_IN(OP_LOOK_BEHIND);\r
-      GET_LENGTH_INC(tlen, p);\r
-      s = (UChar* )ONIGENC_STEP_BACK(encode, str, s, (int )tlen);\r
-      if (IS_NULL(s)) goto fail;\r
-      sprev = (UChar* )onigenc_get_prev_char_head(encode, str, s);\r
-      MOP_OUT;\r
-      continue;\r
-      break;\r
-\r
-    case OP_PUSH_LOOK_BEHIND_NOT:  MOP_IN(OP_PUSH_LOOK_BEHIND_NOT);\r
-      GET_RELADDR_INC(addr, p);\r
-      GET_LENGTH_INC(tlen, p);\r
-      q = (UChar* )ONIGENC_STEP_BACK(encode, str, s, (int )tlen);\r
-      if (IS_NULL(q)) {\r
-       /* too short case -> success. ex. /(?<!XXX)a/.match("a")\r
-          If you want to change to fail, replace following line. */\r
-       p += addr;\r
-       /* goto fail; */\r
-      }\r
-      else {\r
-       STACK_PUSH_LOOK_BEHIND_NOT(p + addr, s, sprev);\r
-       s = q;\r
-       sprev = (UChar* )onigenc_get_prev_char_head(encode, str, s);\r
-      }\r
-      MOP_OUT;\r
-      continue;\r
-      break;\r
-\r
-    case OP_FAIL_LOOK_BEHIND_NOT:  MOP_IN(OP_FAIL_LOOK_BEHIND_NOT);\r
-      STACK_POP_TIL_LOOK_BEHIND_NOT;\r
-      goto fail;\r
-      break;\r
-\r
-#ifdef USE_SUBEXP_CALL\r
-    case OP_CALL:  MOP_IN(OP_CALL);\r
-      GET_ABSADDR_INC(addr, p);\r
-      STACK_PUSH_CALL_FRAME(p);\r
-      p = reg->p + addr;\r
-      MOP_OUT;\r
-      continue;\r
-      break;\r
-\r
-    case OP_RETURN:  MOP_IN(OP_RETURN);\r
-      STACK_RETURN(p);\r
-      STACK_PUSH_RETURN;\r
-      MOP_OUT;\r
-      continue;\r
-      break;\r
-#endif\r
-\r
-    case OP_FINISH:\r
-      goto finish;\r
-      break;\r
-\r
-    fail:\r
-      MOP_OUT;\r
-      /* fall */\r
-    case OP_FAIL:  MOP_IN(OP_FAIL);\r
-      STACK_POP;\r
-      p     = stk->u.state.pcode;\r
-      s     = stk->u.state.pstr;\r
-      sprev = stk->u.state.pstr_prev;\r
-\r
-#ifdef USE_COMBINATION_EXPLOSION_CHECK\r
-      if (stk->u.state.state_check != 0) {\r
-        stk->type = STK_STATE_CHECK_MARK;\r
-        stk++;\r
-      }\r
-#endif\r
-\r
-      MOP_OUT;\r
-      continue;\r
-      break;\r
-\r
-    default:\r
-      goto bytecode_error;\r
-\r
-    } /* end of switch */\r
-    sprev = sbegin;\r
-  } /* end of while(1) */\r
-\r
- finish:\r
-  STACK_SAVE;\r
-  xfree(alloca_base);\r
-  return best_len;\r
-\r
-#ifdef ONIG_DEBUG\r
- stack_error:\r
-  STACK_SAVE;\r
-  xfree(alloca_base);\r
-  return ONIGERR_STACK_BUG;\r
-#endif\r
-\r
- bytecode_error:\r
-  STACK_SAVE;\r
-  xfree(alloca_base);\r
-  return ONIGERR_UNDEFINED_BYTECODE;\r
-\r
- unexpected_bytecode_error:\r
-  STACK_SAVE;\r
-  xfree(alloca_base);\r
-  return ONIGERR_UNEXPECTED_BYTECODE;\r
-}\r
-\r
-\r
-static UChar*\r
-slow_search(OnigEncoding enc, UChar* target, UChar* target_end,\r
-           const UChar* text, const UChar* text_end, UChar* text_range)\r
-{\r
-  UChar *t, *p, *s, *end;\r
-\r
-  end = (UChar* )text_end;\r
-  end -= target_end - target - 1;\r
-  if (end > text_range)\r
-    end = text_range;\r
-\r
-  s = (UChar* )text;\r
-\r
-  while (s < end) {\r
-    if (*s == *target) {\r
-      p = s + 1;\r
-      t = target + 1;\r
-      while (t < target_end) {\r
-       if (*t != *p++)\r
-         break;\r
-       t++;\r
-      }\r
-      if (t == target_end)\r
-       return s;\r
-    }\r
-    s += enclen(enc, s);\r
-  }\r
-\r
-  return (UChar* )NULL;\r
-}\r
-\r
-static int\r
-str_lower_case_match(OnigEncoding enc, int case_fold_flag,\r
-                     const UChar* t, const UChar* tend,\r
-                    const UChar* p, const UChar* end)\r
-{\r
-  int lowlen;\r
-  UChar *q, lowbuf[ONIGENC_MBC_CASE_FOLD_MAXLEN];\r
-\r
-  while (t < tend) {\r
-    lowlen = ONIGENC_MBC_CASE_FOLD(enc, case_fold_flag, &p, end, lowbuf);\r
-    q = lowbuf;\r
-    while (lowlen > 0) {\r
-      if (*t++ != *q++)        return 0;\r
-      lowlen--;\r
-    }\r
-  }\r
-\r
-  return 1;\r
-}\r
-\r
-static UChar*\r
-slow_search_ic(OnigEncoding enc, int case_fold_flag,\r
-              UChar* target, UChar* target_end,\r
-              const UChar* text, const UChar* text_end, UChar* text_range)\r
-{\r
-  UChar *s, *end;\r
-\r
-  end = (UChar* )text_end;\r
-  end -= target_end - target - 1;\r
-  if (end > text_range)\r
-    end = text_range;\r
-\r
-  s = (UChar* )text;\r
-\r
-  while (s < end) {\r
-    if (str_lower_case_match(enc, case_fold_flag, target, target_end,\r
-                            s, text_end))\r
-      return s;\r
-\r
-    s += enclen(enc, s);\r
-  }\r
-\r
-  return (UChar* )NULL;\r
-}\r
-\r
-static UChar*\r
-slow_search_backward(OnigEncoding enc, UChar* target, UChar* target_end,\r
-                    const UChar* text, const UChar* adjust_text,\r
-                    const UChar* text_end, const UChar* text_start)\r
-{\r
-  UChar *t, *p, *s;\r
-\r
-  s = (UChar* )text_end;\r
-  s -= (target_end - target);\r
-  if (s > text_start)\r
-    s = (UChar* )text_start;\r
-  else\r
-    s = ONIGENC_LEFT_ADJUST_CHAR_HEAD(enc, adjust_text, s);\r
-\r
-  while (s >= text) {\r
-    if (*s == *target) {\r
-      p = s + 1;\r
-      t = target + 1;\r
-      while (t < target_end) {\r
-       if (*t != *p++)\r
-         break;\r
-       t++;\r
-      }\r
-      if (t == target_end)\r
-       return s;\r
-    }\r
-    s = (UChar* )onigenc_get_prev_char_head(enc, adjust_text, s);\r
-  }\r
-\r
-  return (UChar* )NULL;\r
-}\r
-\r
-static UChar*\r
-slow_search_backward_ic(OnigEncoding enc, int case_fold_flag,\r
-                       UChar* target, UChar* target_end,\r
-                       const UChar* text, const UChar* adjust_text,\r
-                       const UChar* text_end, const UChar* text_start)\r
-{\r
-  UChar *s;\r
-\r
-  s = (UChar* )text_end;\r
-  s -= (target_end - target);\r
-  if (s > text_start)\r
-    s = (UChar* )text_start;\r
-  else\r
-    s = ONIGENC_LEFT_ADJUST_CHAR_HEAD(enc, adjust_text, s);\r
-\r
-  while (s >= text) {\r
-    if (str_lower_case_match(enc, case_fold_flag,\r
-                             target, target_end, s, text_end))\r
-      return s;\r
-\r
-    s = (UChar* )onigenc_get_prev_char_head(enc, adjust_text, s);\r
-  }\r
-\r
-  return (UChar* )NULL;\r
-}\r
-\r
-static UChar*\r
-bm_search_notrev(regex_t* reg, const UChar* target, const UChar* target_end,\r
-                const UChar* text, const UChar* text_end,\r
-                const UChar* text_range)\r
-{\r
-  const UChar *s, *se, *t, *p, *end;\r
-  const UChar *tail;\r
-  int skip, tlen1;\r
-\r
-#ifdef ONIG_DEBUG_SEARCH\r
-  fprintf(stderr, "bm_search_notrev: text: %d, text_end: %d, text_range: %d\n",\r
-         (int )text, (int )text_end, (int )text_range);\r
-#endif\r
-\r
-  tail = target_end - 1;\r
-  tlen1 = (int)(tail - target);\r
-  end = text_range;\r
-  if (end + tlen1 > text_end)\r
-    end = text_end - tlen1;\r
-\r
-  s = text;\r
-\r
-  if (IS_NULL(reg->int_map)) {\r
-    while (s < end) {\r
-      p = se = s + tlen1;\r
-      t = tail;\r
-      while (*p == *t) {\r
-       if (t == target) return (UChar* )s;\r
-       p--; t--;\r
-      }\r
-      skip = reg->map[*se];\r
-      t = s;\r
-      do {\r
-        s += enclen(reg->enc, s);\r
-      } while ((s - t) < skip && s < end);\r
-    }\r
-  }\r
-  else {\r
-    while (s < end) {\r
-      p = se = s + tlen1;\r
-      t = tail;\r
-      while (*p == *t) {\r
-       if (t == target) return (UChar* )s;\r
-       p--; t--;\r
-      }\r
-      skip = reg->int_map[*se];\r
-      t = s;\r
-      do {\r
-        s += enclen(reg->enc, s);\r
-      } while ((s - t) < skip && s < end);\r
-    }\r
-  }\r
-\r
-  return (UChar* )NULL;\r
-}\r
-\r
-static UChar*\r
-bm_search(regex_t* reg, const UChar* target, const UChar* target_end,\r
-         const UChar* text, const UChar* text_end, const UChar* text_range)\r
-{\r
-  const UChar *s, *t, *p, *end;\r
-  const UChar *tail;\r
-\r
-  end = text_range + (target_end - target) - 1;\r
-  if (end > text_end)\r
-    end = text_end;\r
-\r
-  tail = target_end - 1;\r
-  s = text + (target_end - target) - 1;\r
-  if (IS_NULL(reg->int_map)) {\r
-    while (s < end) {\r
-      p = s;\r
-      t = tail;\r
-      while (*p == *t) {\r
-       if (t == target) return (UChar* )p;\r
-       p--; t--;\r
-      }\r
-      s += reg->map[*s];\r
-    }\r
-  }\r
-  else { /* see int_map[] */\r
-    while (s < end) {\r
-      p = s;\r
-      t = tail;\r
-      while (*p == *t) {\r
-       if (t == target) return (UChar* )p;\r
-       p--; t--;\r
-      }\r
-      s += reg->int_map[*s];\r
-    }\r
-  }\r
-  return (UChar* )NULL;\r
-}\r
-\r
-static int\r
-set_bm_backward_skip(UChar* s, UChar* end, OnigEncoding enc ARG_UNUSED,\r
-                    int** skip)\r
-                    \r
-{\r
-  int i, len;\r
-\r
-  if (IS_NULL(*skip)) {\r
-    *skip = (int* )xmalloc(sizeof(int) * ONIG_CHAR_TABLE_SIZE);\r
-    if (IS_NULL(*skip)) return ONIGERR_MEMORY;\r
-  }\r
-\r
-  len = (int)(end - s);\r
-  for (i = 0; i < ONIG_CHAR_TABLE_SIZE; i++)\r
-    (*skip)[i] = len;\r
-\r
-  for (i = len - 1; i > 0; i--)\r
-    (*skip)[s[i]] = i;\r
-\r
-  return 0;\r
-}\r
-\r
-static UChar*\r
-bm_search_backward(regex_t* reg, const UChar* target, const UChar* target_end,\r
-                  const UChar* text, const UChar* adjust_text,\r
-                  const UChar* text_end, const UChar* text_start)\r
-{\r
-  const UChar *s, *t, *p;\r
-\r
-  s = text_end - (target_end - target);\r
-  if (text_start < s)\r
-    s = text_start;\r
-  else\r
-    s = ONIGENC_LEFT_ADJUST_CHAR_HEAD(reg->enc, adjust_text, s);\r
-\r
-  while (s >= text) {\r
-    p = s;\r
-    t = target;\r
-    while (t < target_end && *p == *t) {\r
-      p++; t++;\r
-    }\r
-    if (t == target_end)\r
-      return (UChar* )s;\r
-\r
-    s -= reg->int_map_backward[*s];\r
-    s = ONIGENC_LEFT_ADJUST_CHAR_HEAD(reg->enc, adjust_text, s);\r
-  }\r
-\r
-  return (UChar* )NULL;\r
-}\r
-\r
-static UChar*\r
-map_search(OnigEncoding enc, UChar map[],\r
-          const UChar* text, const UChar* text_range)\r
-{\r
-  const UChar *s = text;\r
-\r
-  while (s < text_range) {\r
-    if (map[*s]) return (UChar* )s;\r
-\r
-    s += enclen(enc, s);\r
-  }\r
-  return (UChar* )NULL;\r
-}\r
-\r
-static UChar*\r
-map_search_backward(OnigEncoding enc, UChar map[],\r
-                   const UChar* text, const UChar* adjust_text,\r
-                   const UChar* text_start)\r
-{\r
-  const UChar *s = text_start;\r
-\r
-  while (s >= text) {\r
-    if (map[*s]) return (UChar* )s;\r
-\r
-    s = onigenc_get_prev_char_head(enc, adjust_text, s);\r
-  }\r
-  return (UChar* )NULL;\r
-}\r
-\r
-extern int\r
-onig_match(regex_t* reg, const UChar* str, const UChar* end, const UChar* at, OnigRegion* region,\r
-           OnigOptionType option)\r
-{\r
-  int r;\r
-  UChar *prev;\r
-  OnigMatchArg msa;\r
-\r
-#if defined(USE_RECOMPILE_API) && defined(USE_MULTI_THREAD_SYSTEM)\r
- start:\r
-  THREAD_ATOMIC_START;\r
-  if (ONIG_STATE(reg) >= ONIG_STATE_NORMAL) {\r
-    ONIG_STATE_INC(reg);\r
-    if (IS_NOT_NULL(reg->chain) && ONIG_STATE(reg) == ONIG_STATE_NORMAL) {\r
-      onig_chain_reduce(reg);\r
-      ONIG_STATE_INC(reg);\r
-    }\r
-  }\r
-  else {\r
-    int n;\r
-\r
-    THREAD_ATOMIC_END;\r
-    n = 0;\r
-    while (ONIG_STATE(reg) < ONIG_STATE_NORMAL) {\r
-      if (++n > THREAD_PASS_LIMIT_COUNT)\r
-       return ONIGERR_OVER_THREAD_PASS_LIMIT_COUNT;\r
-      THREAD_PASS;\r
-    }\r
-    goto start;\r
-  }\r
-  THREAD_ATOMIC_END;\r
-#endif /* USE_RECOMPILE_API && USE_MULTI_THREAD_SYSTEM */\r
-\r
-  MATCH_ARG_INIT(msa, option, region, at);\r
-#ifdef USE_COMBINATION_EXPLOSION_CHECK\r
-  {\r
-    int offset = at - str;\r
-    STATE_CHECK_BUFF_INIT(msa, end - str, offset, reg->num_comb_exp_check);\r
-  }\r
-#endif\r
-\r
-  if (region\r
-#ifdef USE_POSIX_API_REGION_OPTION\r
-      && !IS_POSIX_REGION(option)\r
-#endif\r
-      ) {\r
-    r = onig_region_resize_clear(region, reg->num_mem + 1);\r
-  }\r
-  else\r
-    r = 0;\r
-\r
-  if (r == 0) {\r
-    prev = (UChar* )onigenc_get_prev_char_head(reg->enc, str, at);\r
-    r = match_at(reg, str, end,\r
-#ifdef USE_MATCH_RANGE_MUST_BE_INSIDE_OF_SPECIFIED_RANGE\r
-                end,\r
-#endif\r
-                at, prev, &msa);\r
-  }\r
-\r
-  MATCH_ARG_FREE(msa);\r
-  ONIG_STATE_DEC_THREAD(reg);\r
-  return r;\r
-}\r
-\r
-static int\r
-forward_search_range(regex_t* reg, const UChar* str, const UChar* end, UChar* s,\r
-                    UChar* range, UChar** low, UChar** high, UChar** low_prev)\r
-{\r
-  UChar *p, *pprev = (UChar* )NULL;\r
-\r
-#ifdef ONIG_DEBUG_SEARCH\r
-  fprintf(stderr, "forward_search_range: str: %d, end: %d, s: %d, range: %d\n",\r
-         (int )str, (int )end, (int )s, (int )range);\r
-#endif\r
-\r
-  p = s;\r
-  if (reg->dmin > 0) {\r
-    if (ONIGENC_IS_SINGLEBYTE(reg->enc)) {\r
-      p += reg->dmin;\r
-    }\r
-    else {\r
-      UChar *q = p + reg->dmin;\r
-      while (p < q) p += enclen(reg->enc, p);\r
-    }\r
-  }\r
-\r
- retry:\r
-  switch (reg->optimize) {\r
-  case ONIG_OPTIMIZE_EXACT:\r
-    p = slow_search(reg->enc, reg->exact, reg->exact_end, p, end, range);\r
-    break;\r
-  case ONIG_OPTIMIZE_EXACT_IC:\r
-    p = slow_search_ic(reg->enc, reg->case_fold_flag,\r
-                       reg->exact, reg->exact_end, p, end, range);\r
-    break;\r
-\r
-  case ONIG_OPTIMIZE_EXACT_BM:\r
-    p = bm_search(reg, reg->exact, reg->exact_end, p, end, range);\r
-    break;\r
-\r
-  case ONIG_OPTIMIZE_EXACT_BM_NOT_REV:\r
-    p = bm_search_notrev(reg, reg->exact, reg->exact_end, p, end, range);\r
-    break;\r
-\r
-  case ONIG_OPTIMIZE_MAP:\r
-    p = map_search(reg->enc, reg->map, p, range);\r
-    break;\r
-  }\r
-\r
-  if (p && p < range) {\r
-    if (p - reg->dmin < s) {\r
-    retry_gate:\r
-      pprev = p;\r
-      p += enclen(reg->enc, p);\r
-      goto retry;\r
-    }\r
-\r
-    if (reg->sub_anchor) {\r
-      UChar* prev;\r
-\r
-      switch (reg->sub_anchor) {\r
-      case ANCHOR_BEGIN_LINE:\r
-       if (!ON_STR_BEGIN(p)) {\r
-         prev = onigenc_get_prev_char_head(reg->enc,\r
-                                           (pprev ? pprev : str), p);\r
-         if (!ONIGENC_IS_MBC_NEWLINE(reg->enc, prev, end))\r
-           goto retry_gate;\r
-       }\r
-       break;\r
-\r
-      case ANCHOR_END_LINE:\r
-       if (ON_STR_END(p)) {\r
-#ifndef USE_NEWLINE_AT_END_OF_STRING_HAS_EMPTY_LINE\r
-         prev = (UChar* )onigenc_get_prev_char_head(reg->enc,\r
-                                           (pprev ? pprev : str), p);\r
-         if (prev && ONIGENC_IS_MBC_NEWLINE(reg->enc, prev, end))\r
-           goto retry_gate;\r
-#endif\r
-       }\r
-       else if (! ONIGENC_IS_MBC_NEWLINE(reg->enc, p, end)\r
-#ifdef USE_CRNL_AS_LINE_TERMINATOR\r
-              && ! ONIGENC_IS_MBC_CRNL(reg->enc, p, end)\r
-#endif\r
-                )\r
-         goto retry_gate;\r
-       break;\r
-      }\r
-    }\r
-\r
-    if (reg->dmax == 0) {\r
-      *low = p;\r
-      if (low_prev) {\r
-       if (*low > s)\r
-         *low_prev = onigenc_get_prev_char_head(reg->enc, s, p);\r
-       else\r
-         *low_prev = onigenc_get_prev_char_head(reg->enc,\r
-                                                (pprev ? pprev : str), p);\r
-      }\r
-    }\r
-    else {\r
-      if (reg->dmax != ONIG_INFINITE_DISTANCE) {\r
-       *low = p - reg->dmax;\r
-       if (*low > s) {\r
-         *low = onigenc_get_right_adjust_char_head_with_prev(reg->enc, s,\r
-                                                             *low, (const UChar** )low_prev);\r
-         if (low_prev && IS_NULL(*low_prev))\r
-           *low_prev = onigenc_get_prev_char_head(reg->enc,\r
-                                                  (pprev ? pprev : s), *low);\r
-       }\r
-       else {\r
-         if (low_prev)\r
-           *low_prev = onigenc_get_prev_char_head(reg->enc,\r
-                                              (pprev ? pprev : str), *low);\r
-       }\r
-      }\r
-    }\r
-    /* no needs to adjust *high, *high is used as range check only */\r
-    *high = p - reg->dmin;\r
-\r
-#ifdef ONIG_DEBUG_SEARCH\r
-    fprintf(stderr,\r
-    "forward_search_range success: low: %d, high: %d, dmin: %d, dmax: %d\n",\r
-           (int )(*low - str), (int )(*high - str), reg->dmin, reg->dmax);\r
-#endif\r
-    return 1; /* success */\r
-  }\r
-\r
-  return 0; /* fail */\r
-}\r
-\r
-static int set_bm_backward_skip P_((UChar* s, UChar* end, OnigEncoding enc,\r
-                                   int** skip));\r
-\r
-#define BM_BACKWARD_SEARCH_LENGTH_THRESHOLD   100\r
-\r
-static int\r
-backward_search_range(regex_t* reg, const UChar* str, const UChar* end,\r
-                     UChar* s, const UChar* range, UChar* adjrange,\r
-                     UChar** low, UChar** high)\r
-{\r
-  int r;\r
-  UChar *p;\r
-\r
-  range += reg->dmin;\r
-  p = s;\r
-\r
- retry:\r
-  switch (reg->optimize) {\r
-  case ONIG_OPTIMIZE_EXACT:\r
-  exact_method:\r
-    p = slow_search_backward(reg->enc, reg->exact, reg->exact_end,\r
-                            range, adjrange, end, p);\r
-    break;\r
-\r
-  case ONIG_OPTIMIZE_EXACT_IC:\r
-    p = slow_search_backward_ic(reg->enc, reg->case_fold_flag,\r
-                                reg->exact, reg->exact_end,\r
-                                range, adjrange, end, p);\r
-    break;\r
-\r
-  case ONIG_OPTIMIZE_EXACT_BM:\r
-  case ONIG_OPTIMIZE_EXACT_BM_NOT_REV:\r
-    if (IS_NULL(reg->int_map_backward)) {\r
-      if (s - range < BM_BACKWARD_SEARCH_LENGTH_THRESHOLD)\r
-       goto exact_method;\r
-\r
-      r = set_bm_backward_skip(reg->exact, reg->exact_end, reg->enc,\r
-                              &(reg->int_map_backward));\r
-      if (r) return r;\r
-    }\r
-    p = bm_search_backward(reg, reg->exact, reg->exact_end, range, adjrange,\r
-                          end, p);\r
-    break;\r
-\r
-  case ONIG_OPTIMIZE_MAP:\r
-    p = map_search_backward(reg->enc, reg->map, range, adjrange, p);\r
-    break;\r
-  }\r
-\r
-  if (p) {\r
-    if (reg->sub_anchor) {\r
-      UChar* prev;\r
-\r
-      switch (reg->sub_anchor) {\r
-      case ANCHOR_BEGIN_LINE:\r
-       if (!ON_STR_BEGIN(p)) {\r
-         prev = onigenc_get_prev_char_head(reg->enc, str, p);\r
-         if (!ONIGENC_IS_MBC_NEWLINE(reg->enc, prev, end)) {\r
-           p = prev;\r
-           goto retry;\r
-         }\r
-       }\r
-       break;\r
-\r
-      case ANCHOR_END_LINE:\r
-       if (ON_STR_END(p)) {\r
-#ifndef USE_NEWLINE_AT_END_OF_STRING_HAS_EMPTY_LINE\r
-         prev = onigenc_get_prev_char_head(reg->enc, adjrange, p);\r
-         if (IS_NULL(prev)) goto fail;\r
-         if (ONIGENC_IS_MBC_NEWLINE(reg->enc, prev, end)) {\r
-           p = prev;\r
-           goto retry;\r
-         }\r
-#endif\r
-       }\r
-       else if (! ONIGENC_IS_MBC_NEWLINE(reg->enc, p, end)\r
-#ifdef USE_CRNL_AS_LINE_TERMINATOR\r
-              && ! ONIGENC_IS_MBC_CRNL(reg->enc, p, end)\r
-#endif\r
-                ) {\r
-         p = onigenc_get_prev_char_head(reg->enc, adjrange, p);\r
-         if (IS_NULL(p)) goto fail;\r
-         goto retry;\r
-       }\r
-       break;\r
-      }\r
-    }\r
-\r
-    /* no needs to adjust *high, *high is used as range check only */\r
-    if (reg->dmax != ONIG_INFINITE_DISTANCE) {\r
-      *low  = p - reg->dmax;\r
-      *high = p - reg->dmin;\r
-      *high = onigenc_get_right_adjust_char_head(reg->enc, adjrange, *high);\r
-    }\r
-\r
-#ifdef ONIG_DEBUG_SEARCH\r
-    fprintf(stderr, "backward_search_range: low: %d, high: %d\n",\r
-           (int )(*low - str), (int )(*high - str));\r
-#endif\r
-    return 1; /* success */\r
-  }\r
-\r
- fail:\r
-#ifdef ONIG_DEBUG_SEARCH\r
-  fprintf(stderr, "backward_search_range: fail.\n");\r
-#endif\r
-  return 0; /* fail */\r
-}\r
-\r
-\r
-extern int\r
-onig_search(regex_t* reg, const UChar* str, const UChar* end,\r
-           const UChar* start, const UChar* range, OnigRegion* region, OnigOptionType option)\r
-{\r
-  int r;\r
-  UChar *s, *prev;\r
-  OnigMatchArg msa;\r
-  const UChar *orig_start = start;\r
-#ifdef USE_MATCH_RANGE_MUST_BE_INSIDE_OF_SPECIFIED_RANGE\r
-  const UChar *orig_range = range;\r
-#endif\r
-\r
-#if defined(USE_RECOMPILE_API) && defined(USE_MULTI_THREAD_SYSTEM)\r
- start:\r
-  THREAD_ATOMIC_START;\r
-  if (ONIG_STATE(reg) >= ONIG_STATE_NORMAL) {\r
-    ONIG_STATE_INC(reg);\r
-    if (IS_NOT_NULL(reg->chain) && ONIG_STATE(reg) == ONIG_STATE_NORMAL) {\r
-      onig_chain_reduce(reg);\r
-      ONIG_STATE_INC(reg);\r
-    }\r
-  }\r
-  else {\r
-    int n;\r
-\r
-    THREAD_ATOMIC_END;\r
-    n = 0;\r
-    while (ONIG_STATE(reg) < ONIG_STATE_NORMAL) {\r
-      if (++n > THREAD_PASS_LIMIT_COUNT)\r
-       return ONIGERR_OVER_THREAD_PASS_LIMIT_COUNT;\r
-      THREAD_PASS;\r
-    }\r
-    goto start;\r
-  }\r
-  THREAD_ATOMIC_END;\r
-#endif /* USE_RECOMPILE_API && USE_MULTI_THREAD_SYSTEM */\r
-\r
-#ifdef ONIG_DEBUG_SEARCH\r
-  fprintf(stderr,\r
-     "onig_search (entry point): str: %d, end: %d, start: %d, range: %d\n",\r
-     (int )str, (int )(end - str), (int )(start - str), (int )(range - str));\r
-#endif\r
-\r
-  if (region\r
-#ifdef USE_POSIX_API_REGION_OPTION\r
-      && !IS_POSIX_REGION(option)\r
-#endif\r
-      ) {\r
-    r = onig_region_resize_clear(region, reg->num_mem + 1);\r
-    if (r) goto finish_no_msa;\r
-  }\r
-\r
-  if (start > end || start < str) goto mismatch_no_msa;\r
-\r
-\r
-#ifdef USE_MATCH_RANGE_MUST_BE_INSIDE_OF_SPECIFIED_RANGE\r
-#ifdef USE_FIND_LONGEST_SEARCH_ALL_OF_RANGE\r
-#define MATCH_AND_RETURN_CHECK(upper_range) \\r
-  r = match_at(reg, str, end, (upper_range), s, prev, &msa); \\r
-  if (r != ONIG_MISMATCH) {\\r
-    if (r >= 0) {\\r
-      if (! IS_FIND_LONGEST(reg->options)) {\\r
-        goto match;\\r
-      }\\r
-    }\\r
-    else goto finish; /* error */ \\r
-  }\r
-#else\r
-#define MATCH_AND_RETURN_CHECK(upper_range) \\r
-  r = match_at(reg, str, end, (upper_range), s, prev, &msa); \\r
-  if (r != ONIG_MISMATCH) {\\r
-    if (r >= 0) {\\r
-      goto match;\\r
-    }\\r
-    else goto finish; /* error */ \\r
-  }\r
-#endif /* USE_FIND_LONGEST_SEARCH_ALL_OF_RANGE */\r
-#else\r
-#ifdef USE_FIND_LONGEST_SEARCH_ALL_OF_RANGE\r
-#define MATCH_AND_RETURN_CHECK(none) \\r
-  r = match_at(reg, str, end, s, prev, &msa);\\r
-  if (r != ONIG_MISMATCH) {\\r
-    if (r >= 0) {\\r
-      if (! IS_FIND_LONGEST(reg->options)) {\\r
-        goto match;\\r
-      }\\r
-    }\\r
-    else goto finish; /* error */ \\r
-  }\r
-#else\r
-#define MATCH_AND_RETURN_CHECK(none) \\r
-  r = match_at(reg, str, end, s, prev, &msa);\\r
-  if (r != ONIG_MISMATCH) {\\r
-    if (r >= 0) {\\r
-      goto match;\\r
-    }\\r
-    else goto finish; /* error */ \\r
-  }\r
-#endif /* USE_FIND_LONGEST_SEARCH_ALL_OF_RANGE */\r
-#endif /* USE_MATCH_RANGE_MUST_BE_INSIDE_OF_SPECIFIED_RANGE */\r
-\r
-\r
-  /* anchor optimize: resume search range */\r
-  if (reg->anchor != 0 && str < end) {\r
-    UChar *min_semi_end, *max_semi_end;\r
-\r
-    if (reg->anchor & ANCHOR_BEGIN_POSITION) {\r
-      /* search start-position only */\r
-    begin_position:\r
-      if (range > start)\r
-       range = start + 1;\r
-      else\r
-       range = start;\r
-    }\r
-    else if (reg->anchor & ANCHOR_BEGIN_BUF) {\r
-      /* search str-position only */\r
-      if (range > start) {\r
-       if (start != str) goto mismatch_no_msa;\r
-       range = str + 1;\r
-      }\r
-      else {\r
-       if (range <= str) {\r
-         start = str;\r
-         range = str;\r
-       }\r
-       else\r
-         goto mismatch_no_msa;\r
-      }\r
-    }\r
-    else if (reg->anchor & ANCHOR_END_BUF) {\r
-      min_semi_end = max_semi_end = (UChar* )end;\r
-\r
-    end_buf:\r
-      if ((OnigDistance )(max_semi_end - str) < reg->anchor_dmin)\r
-       goto mismatch_no_msa;\r
-\r
-      if (range > start) {\r
-       if ((OnigDistance )(min_semi_end - start) > reg->anchor_dmax) {\r
-         start = min_semi_end - reg->anchor_dmax;\r
-         if (start < end)\r
-           start = onigenc_get_right_adjust_char_head(reg->enc, str, start);\r
-         else { /* match with empty at end */\r
-           start = onigenc_get_prev_char_head(reg->enc, str, end);\r
-         }\r
-       }\r
-       if ((OnigDistance )(max_semi_end - (range - 1)) < reg->anchor_dmin) {\r
-         range = max_semi_end - reg->anchor_dmin + 1;\r
-       }\r
-\r
-       if (start >= range) goto mismatch_no_msa;\r
-      }\r
-      else {\r
-       if ((OnigDistance )(min_semi_end - range) > reg->anchor_dmax) {\r
-         range = min_semi_end - reg->anchor_dmax;\r
-       }\r
-       if ((OnigDistance )(max_semi_end - start) < reg->anchor_dmin) {\r
-         start = max_semi_end - reg->anchor_dmin;\r
-         start = ONIGENC_LEFT_ADJUST_CHAR_HEAD(reg->enc, str, start);\r
-       }\r
-       if (range > start) goto mismatch_no_msa;\r
-      }\r
-    }\r
-    else if (reg->anchor & ANCHOR_SEMI_END_BUF) {\r
-      UChar* pre_end = ONIGENC_STEP_BACK(reg->enc, str, end, 1);\r
-\r
-      max_semi_end = (UChar* )end;\r
-      if (ONIGENC_IS_MBC_NEWLINE(reg->enc, pre_end, end)) {\r
-       min_semi_end = pre_end;\r
-\r
-#ifdef USE_CRNL_AS_LINE_TERMINATOR\r
-       pre_end = ONIGENC_STEP_BACK(reg->enc, str, pre_end, 1);\r
-       if (IS_NOT_NULL(pre_end) &&\r
-           ONIGENC_IS_MBC_CRNL(reg->enc, pre_end, end)) {\r
-         min_semi_end = pre_end;\r
-       }\r
-#endif\r
-       if (min_semi_end > str && start <= min_semi_end) {\r
-         goto end_buf;\r
-       }\r
-      }\r
-      else {\r
-       min_semi_end = (UChar* )end;\r
-       goto end_buf;\r
-      }\r
-    }\r
-    else if ((reg->anchor & ANCHOR_ANYCHAR_STAR_ML)) {\r
-      goto begin_position;\r
-    }\r
-  }\r
-  else if (str == end) { /* empty string */\r
-    static const UChar* address_for_empty_string = (UChar* )"";\r
-\r
-#ifdef ONIG_DEBUG_SEARCH\r
-    fprintf(stderr, "onig_search: empty string.\n");\r
-#endif\r
-\r
-    if (reg->threshold_len == 0) {\r
-      start = end = str = address_for_empty_string;\r
-      s = (UChar* )start;\r
-      prev = (UChar* )NULL;\r
-\r
-      MATCH_ARG_INIT(msa, option, region, start);\r
-#ifdef USE_COMBINATION_EXPLOSION_CHECK\r
-      msa.state_check_buff = (void* )0;\r
-      msa.state_check_buff_size = 0;   /* NO NEED, for valgrind */\r
-#endif\r
-      MATCH_AND_RETURN_CHECK(end);\r
-      goto mismatch;\r
-    }\r
-    goto mismatch_no_msa;\r
-  }\r
-\r
-#ifdef ONIG_DEBUG_SEARCH\r
-  fprintf(stderr, "onig_search(apply anchor): end: %d, start: %d, range: %d\n",\r
-         (int )(end - str), (int )(start - str), (int )(range - str));\r
-#endif\r
-\r
-  MATCH_ARG_INIT(msa, option, region, orig_start);\r
-#ifdef USE_COMBINATION_EXPLOSION_CHECK\r
-  {\r
-    int offset = (MIN(start, range) - str);\r
-    STATE_CHECK_BUFF_INIT(msa, end - str, offset, reg->num_comb_exp_check);\r
-  }\r
-#endif\r
-\r
-  s = (UChar* )start;\r
-  if (range > start) {   /* forward search */\r
-    if (s > str)\r
-      prev = onigenc_get_prev_char_head(reg->enc, str, s);\r
-    else\r
-      prev = (UChar* )NULL;\r
-\r
-    if (reg->optimize != ONIG_OPTIMIZE_NONE) {\r
-      UChar *sch_range, *low, *high, *low_prev;\r
-\r
-      sch_range = (UChar* )range;\r
-      if (reg->dmax != 0) {\r
-       if (reg->dmax == ONIG_INFINITE_DISTANCE)\r
-         sch_range = (UChar* )end;\r
-       else {\r
-         sch_range += reg->dmax;\r
-         if (sch_range > end) sch_range = (UChar* )end;\r
-       }\r
-      }\r
-\r
-      if ((end - start) < reg->threshold_len)\r
-        goto mismatch;\r
-\r
-      if (reg->dmax != ONIG_INFINITE_DISTANCE) {\r
-       do {\r
-         if (! forward_search_range(reg, str, end, s, sch_range,\r
-                                    &low, &high, &low_prev)) goto mismatch;\r
-         if (s < low) {\r
-           s    = low;\r
-           prev = low_prev;\r
-         }\r
-         while (s <= high) {\r
-           MATCH_AND_RETURN_CHECK(orig_range);\r
-           prev = s;\r
-           s += enclen(reg->enc, s);\r
-         }\r
-       } while (s < range);\r
-       goto mismatch;\r
-      }\r
-      else { /* check only. */\r
-       if (! forward_search_range(reg, str, end, s, sch_range,\r
-                                  &low, &high, (UChar** )NULL)) goto mismatch;\r
-\r
-        if ((reg->anchor & ANCHOR_ANYCHAR_STAR) != 0) {\r
-          do {\r
-            MATCH_AND_RETURN_CHECK(orig_range);\r
-            prev = s;\r
-            s += enclen(reg->enc, s);\r
-\r
-            while (!ONIGENC_IS_MBC_NEWLINE(reg->enc, prev, end) && s < range) {\r
-              prev = s;\r
-              s += enclen(reg->enc, s);\r
-            }\r
-          } while (s < range);\r
-          goto mismatch;\r
-        }\r
-      }\r
-    }\r
-\r
-    do {\r
-      MATCH_AND_RETURN_CHECK(orig_range);\r
-      prev = s;\r
-      s += enclen(reg->enc, s);\r
-    } while (s < range);\r
-\r
-    if (s == range) { /* because empty match with /$/. */\r
-      MATCH_AND_RETURN_CHECK(orig_range);\r
-    }\r
-  }\r
-  else {  /* backward search */\r
-#ifdef USE_MATCH_RANGE_MUST_BE_INSIDE_OF_SPECIFIED_RANGE\r
-    if (orig_start < end)\r
-      orig_start += enclen(reg->enc, orig_start); /* is upper range */\r
-#endif\r
-\r
-    if (reg->optimize != ONIG_OPTIMIZE_NONE) {\r
-      UChar *low, *high, *adjrange, *sch_start;\r
-\r
-      if (range < end)\r
-       adjrange = ONIGENC_LEFT_ADJUST_CHAR_HEAD(reg->enc, str, range);\r
-      else\r
-       adjrange = (UChar* )end;\r
-\r
-      if (reg->dmax != ONIG_INFINITE_DISTANCE &&\r
-         (end - range) >= reg->threshold_len) {\r
-       do {\r
-         sch_start = s + reg->dmax;\r
-         if (sch_start > end) sch_start = (UChar* )end;\r
-         if (backward_search_range(reg, str, end, sch_start, range, adjrange,\r
-                                   &low, &high) <= 0)\r
-           goto mismatch;\r
-\r
-         if (s > high)\r
-           s = high;\r
-\r
-         while (s >= low) {\r
-           prev = onigenc_get_prev_char_head(reg->enc, str, s);\r
-           MATCH_AND_RETURN_CHECK(orig_start);\r
-           s = prev;\r
-         }\r
-       } while (s >= range);\r
-       goto mismatch;\r
-      }\r
-      else { /* check only. */\r
-       if ((end - range) < reg->threshold_len) goto mismatch;\r
-\r
-       sch_start = s;\r
-       if (reg->dmax != 0) {\r
-         if (reg->dmax == ONIG_INFINITE_DISTANCE)\r
-           sch_start = (UChar* )end;\r
-         else {\r
-           sch_start += reg->dmax;\r
-           if (sch_start > end) sch_start = (UChar* )end;\r
-           else\r
-             sch_start = ONIGENC_LEFT_ADJUST_CHAR_HEAD(reg->enc,\r
-                                                   start, sch_start);\r
-         }\r
-       }\r
-       if (backward_search_range(reg, str, end, sch_start, range, adjrange,\r
-                                 &low, &high) <= 0) goto mismatch;\r
-      }\r
-    }\r
-\r
-    do {\r
-      prev = onigenc_get_prev_char_head(reg->enc, str, s);\r
-      MATCH_AND_RETURN_CHECK(orig_start);\r
-      s = prev;\r
-    } while (s >= range);\r
-  }\r
-\r
- mismatch:\r
-#ifdef USE_FIND_LONGEST_SEARCH_ALL_OF_RANGE\r
-  if (IS_FIND_LONGEST(reg->options)) {\r
-    if (msa.best_len >= 0) {\r
-      s = msa.best_s;\r
-      goto match;\r
-    }\r
-  }\r
-#endif\r
-  r = ONIG_MISMATCH;\r
-\r
- finish:\r
-  MATCH_ARG_FREE(msa);\r
-  ONIG_STATE_DEC_THREAD(reg);\r
-\r
-  /* If result is mismatch and no FIND_NOT_EMPTY option,\r
-     then the region is not setted in match_at(). */\r
-  if (IS_FIND_NOT_EMPTY(reg->options) && region\r
-#ifdef USE_POSIX_API_REGION_OPTION\r
-      && !IS_POSIX_REGION(option)\r
-#endif\r
-      ) {\r
-    onig_region_clear(region);\r
-  }\r
-\r
-#ifdef ONIG_DEBUG\r
-  if (r != ONIG_MISMATCH)\r
-    fprintf(stderr, "onig_search: error %d\n", r);\r
-#endif\r
-  return r;\r
-\r
- mismatch_no_msa:\r
-  r = ONIG_MISMATCH;\r
- finish_no_msa:\r
-  ONIG_STATE_DEC_THREAD(reg);\r
-#ifdef ONIG_DEBUG\r
-  if (r != ONIG_MISMATCH)\r
-    fprintf(stderr, "onig_search: error %d\n", r);\r
-#endif\r
-  return r;\r
-\r
- match:\r
-  ONIG_STATE_DEC_THREAD(reg);\r
-  MATCH_ARG_FREE(msa);\r
-  return (int)(s - str);\r
-}\r
-\r
-extern OnigEncoding\r
-onig_get_encoding(regex_t* reg)\r
-{\r
-  return reg->enc;\r
-}\r
-\r
-extern OnigOptionType\r
-onig_get_options(regex_t* reg)\r
-{\r
-  return reg->options;\r
-}\r
-\r
-extern  OnigCaseFoldType\r
-onig_get_case_fold_flag(regex_t* reg)\r
-{\r
-  return reg->case_fold_flag;\r
-}\r
-\r
-extern OnigSyntaxType*\r
-onig_get_syntax(regex_t* reg)\r
-{\r
-  return reg->syntax;\r
-}\r
-\r
-extern int\r
-onig_number_of_captures(regex_t* reg)\r
-{\r
-  return reg->num_mem;\r
-}\r
-\r
-extern int\r
-onig_number_of_capture_histories(regex_t* reg)\r
-{\r
-#ifdef USE_CAPTURE_HISTORY\r
-  int i, n;\r
-\r
-  n = 0;\r
-  for (i = 0; i <= ONIG_MAX_CAPTURE_HISTORY_GROUP; i++) {\r
-    if (BIT_STATUS_AT(reg->capture_history, i) != 0)\r
-      n++;\r
-  }\r
-  return n;\r
-#else\r
-  return 0;\r
-#endif\r
-}\r
-\r
-extern void\r
-onig_copy_encoding(OnigEncoding to, OnigEncoding from)\r
-{\r
-  *to = *from;\r
-}\r
-\r
diff --git a/MdeModulePkg/Universal/RegularExpressionDxe/Oniguruma/reggnu.c b/MdeModulePkg/Universal/RegularExpressionDxe/Oniguruma/reggnu.c
deleted file mode 100644 (file)
index 89cb4d6..0000000
+++ /dev/null
@@ -1,169 +0,0 @@
-/**********************************************************************\r
-  reggnu.c -  Oniguruma (regular expression library)\r
-**********************************************************************/\r
-/*-\r
- * Copyright (c) 2002-2008  K.Kosako  <sndgk393 AT ybb DOT ne DOT jp>\r
- * All rights reserved.\r
- *\r
- * Copyright (c) 2015, Hewlett Packard Enterprise Development, L.P.<BR>\r
- *\r
- * Redistribution and use in source and binary forms, with or without\r
- * modification, are permitted provided that the following conditions\r
- * are met:\r
- * 1. Redistributions of source code must retain the above copyright\r
- *    notice, this list of conditions and the following disclaimer.\r
- * 2. Redistributions in binary form must reproduce the above copyright\r
- *    notice, this list of conditions and the following disclaimer in the\r
- *    documentation and/or other materials provided with the distribution.\r
- *\r
- * THIS SOFTWARE IS PROVIDED BY THE AUTHOR AND CONTRIBUTORS ``AS IS'' AND\r
- * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE\r
- * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE\r
- * ARE DISCLAIMED.  IN NO EVENT SHALL THE AUTHOR OR CONTRIBUTORS BE LIABLE\r
- * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL\r
- * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS\r
- * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)\r
- * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT\r
- * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY\r
- * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF\r
- * SUCH DAMAGE.\r
- */\r
-\r
-#include "regint.h"\r
-\r
-#ifndef ONIGGNU_H\r
-#include "oniggnu.h"\r
-#endif\r
-\r
-extern void\r
-re_free_registers(OnigRegion* r)\r
-{\r
-  /* 0: don't free self */\r
-  onig_region_free(r, 0);\r
-}\r
-\r
-extern int\r
-re_adjust_startpos(regex_t* reg, const char* string, int size,\r
-                  int startpos, int range)\r
-{\r
-  if (startpos > 0 && ONIGENC_MBC_MAXLEN(reg->enc) != 1 && startpos < size) {\r
-    UChar *p;\r
-    UChar *s = (UChar* )string + startpos;\r
-\r
-    if (range > 0) {\r
-      p = onigenc_get_right_adjust_char_head(reg->enc, (UChar* )string, s);\r
-    }\r
-    else {\r
-      p = ONIGENC_LEFT_ADJUST_CHAR_HEAD(reg->enc, (UChar* )string, s);\r
-    }\r
-    return (int)(p - (UChar* )string);\r
-  }\r
-\r
-  return startpos;\r
-}\r
-\r
-extern int\r
-re_match(regex_t* reg, const char* str, int size, int pos,\r
-        struct re_registers* regs)\r
-{\r
-  return onig_match(reg, (UChar* )str, (UChar* )(str + size),\r
-                   (UChar* )(str + pos), regs, ONIG_OPTION_NONE);\r
-}\r
-\r
-extern int\r
-re_search(regex_t* bufp, const char* string, int size, int startpos, int range,\r
-         struct re_registers* regs)\r
-{\r
-  return onig_search(bufp, (UChar* )string, (UChar* )(string + size),\r
-                    (UChar* )(string + startpos),\r
-                    (UChar* )(string + startpos + range),\r
-                    regs, ONIG_OPTION_NONE);\r
-}\r
-\r
-extern int\r
-re_compile_pattern(const char* pattern, int size, regex_t* reg, char* ebuf)\r
-{\r
-  int r;\r
-  OnigErrorInfo einfo;\r
-\r
-  r = onig_compile(reg, (UChar* )pattern, (UChar* )(pattern + size), &einfo);\r
-  if (r != ONIG_NORMAL) {\r
-    if (IS_NOT_NULL(ebuf))\r
-      (void )onig_error_code_to_str((UChar* )ebuf, r, &einfo);\r
-  }\r
-\r
-  return r;\r
-}\r
-\r
-#ifdef USE_RECOMPILE_API\r
-extern int\r
-re_recompile_pattern(const char* pattern, int size, regex_t* reg, char* ebuf)\r
-{\r
-  int r;\r
-  OnigErrorInfo einfo;\r
-  OnigEncoding enc;\r
-\r
-  /* I think encoding and options should be arguments of this function.\r
-     But this is adapted to present re.c. (2002/11/29)\r
-   */\r
-  enc = OnigEncDefaultCharEncoding;\r
-\r
-  r = onig_recompile(reg, (UChar* )pattern, (UChar* )(pattern + size),\r
-                    reg->options, enc, OnigDefaultSyntax, &einfo);\r
-  if (r != ONIG_NORMAL) {\r
-    if (IS_NOT_NULL(ebuf))\r
-      (void )onig_error_code_to_str((UChar* )ebuf, r, &einfo);\r
-  }\r
-  return r;\r
-}\r
-#endif\r
-\r
-extern void\r
-re_free_pattern(regex_t* reg)\r
-{\r
-  onig_free(reg);\r
-}\r
-\r
-extern int\r
-re_alloc_pattern(regex_t** reg)\r
-{\r
-  *reg = (regex_t* )xmalloc(sizeof(regex_t));\r
-  if (IS_NULL(*reg)) return ONIGERR_MEMORY;\r
-\r
-  return onig_reg_init(*reg, ONIG_OPTION_DEFAULT,\r
-                      ONIGENC_CASE_FOLD_DEFAULT,\r
-                      OnigEncDefaultCharEncoding,\r
-                      OnigDefaultSyntax);\r
-}\r
-\r
-extern void\r
-re_set_casetable(const char* table)\r
-{\r
-  onigenc_set_default_caseconv_table((UChar* )table);\r
-}\r
-\r
-extern void\r
-re_mbcinit(int mb_code)\r
-{\r
-  OnigEncoding enc;\r
-\r
-  switch (mb_code) {\r
-  case RE_MBCTYPE_ASCII:\r
-    enc = ONIG_ENCODING_ASCII;\r
-    break;\r
-  case RE_MBCTYPE_EUC:\r
-    enc = ONIG_ENCODING_EUC_JP;\r
-    break;\r
-  case RE_MBCTYPE_SJIS:\r
-    enc = ONIG_ENCODING_SJIS;\r
-    break;\r
-  case RE_MBCTYPE_UTF8:\r
-    enc = ONIG_ENCODING_UTF8;\r
-    break;\r
-  default:\r
-    return ;\r
-    break;\r
-  }\r
-\r
-  onigenc_set_default_encoding(enc);\r
-}\r
diff --git a/MdeModulePkg/Universal/RegularExpressionDxe/Oniguruma/regint.h b/MdeModulePkg/Universal/RegularExpressionDxe/Oniguruma/regint.h
deleted file mode 100644 (file)
index 2db3b70..0000000
+++ /dev/null
@@ -1,820 +0,0 @@
-#ifndef REGINT_H\r
-#define REGINT_H\r
-/**********************************************************************\r
-  regint.h -  Oniguruma (regular expression library)\r
-**********************************************************************/\r
-/*-\r
- * Copyright (c) 2002-2013  K.Kosako  <sndgk393 AT ybb DOT ne DOT jp>\r
- * All rights reserved.\r
- *\r
- * Redistribution and use in source and binary forms, with or without\r
- * modification, are permitted provided that the following conditions\r
- * are met:\r
- * 1. Redistributions of source code must retain the above copyright\r
- *    notice, this list of conditions and the following disclaimer.\r
- * 2. Redistributions in binary form must reproduce the above copyright\r
- *    notice, this list of conditions and the following disclaimer in the\r
- *    documentation and/or other materials provided with the distribution.\r
- *\r
- * THIS SOFTWARE IS PROVIDED BY THE AUTHOR AND CONTRIBUTORS ``AS IS'' AND\r
- * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE\r
- * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE\r
- * ARE DISCLAIMED.  IN NO EVENT SHALL THE AUTHOR OR CONTRIBUTORS BE LIABLE\r
- * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL\r
- * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS\r
- * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)\r
- * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT\r
- * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY\r
- * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF\r
- * SUCH DAMAGE.\r
- */\r
-\r
-/* for debug */\r
-/* #define ONIG_DEBUG_PARSE_TREE */\r
-/* #define ONIG_DEBUG_COMPILE */\r
-/* #define ONIG_DEBUG_SEARCH */\r
-/* #define ONIG_DEBUG_MATCH */\r
-/* #define ONIG_DONT_OPTIMIZE */\r
-\r
-/* for byte-code statistical data. */\r
-/* #define ONIG_DEBUG_STATISTICS */\r
-\r
-#if defined(ONIG_DEBUG_PARSE_TREE) || defined(ONIG_DEBUG_MATCH) || \\r
-    defined(ONIG_DEBUG_SEARCH) || defined(ONIG_DEBUG_COMPILE) || \\r
-    defined(ONIG_DEBUG_STATISTICS)\r
-#ifndef ONIG_DEBUG\r
-#define ONIG_DEBUG\r
-#endif\r
-#endif\r
-\r
-#if defined(__i386) || defined(__i386__) || defined(_M_IX86) || \\r
-    (defined(__ppc__) && defined(__APPLE__)) || \\r
-    defined(__x86_64) || defined(__x86_64__) || \\r
-    defined(__mc68020__)\r
-#define PLATFORM_UNALIGNED_WORD_ACCESS\r
-#endif\r
-\r
-/* config */\r
-/* spec. config */\r
-#define USE_NAMED_GROUP\r
-#define USE_SUBEXP_CALL\r
-#define USE_BACKREF_WITH_LEVEL        /* \k<name+n>, \k<name-n> */\r
-#define USE_MONOMANIAC_CHECK_CAPTURES_IN_ENDLESS_REPEAT  /* /(?:()|())*\2/ */\r
-#define USE_NEWLINE_AT_END_OF_STRING_HAS_EMPTY_LINE     /* /\n$/ =~ "\n" */\r
-#define USE_WARNING_REDUNDANT_NESTED_REPEAT_OPERATOR\r
-/* #define USE_RECOMPILE_API */\r
-/* !!! moved to regenc.h. */ /* #define USE_CRNL_AS_LINE_TERMINATOR */\r
-\r
-/* internal config */\r
-#define USE_PARSE_TREE_NODE_RECYCLE\r
-#define USE_OP_PUSH_OR_JUMP_EXACT\r
-#define USE_QTFR_PEEK_NEXT\r
-#define USE_ST_LIBRARY\r
-#define USE_SHARED_CCLASS_TABLE\r
-\r
-#define INIT_MATCH_STACK_SIZE                     160\r
-#define DEFAULT_MATCH_STACK_LIMIT_SIZE              0 /* unlimited */\r
-\r
-#if defined(__GNUC__)\r
-#  define ARG_UNUSED  __attribute__ ((unused))\r
-#else\r
-#  define ARG_UNUSED\r
-#endif\r
-\r
-/* */\r
-/* escape other system UChar definition */\r
-//#include "config.h"\r
-#ifdef ONIG_ESCAPE_UCHAR_COLLISION\r
-#undef ONIG_ESCAPE_UCHAR_COLLISION\r
-#endif\r
-\r
-#define USE_WORD_BEGIN_END        /* "\<", "\>" */\r
-#define USE_CAPTURE_HISTORY\r
-#define USE_VARIABLE_META_CHARS\r
-#define USE_POSIX_API_REGION_OPTION\r
-#define USE_FIND_LONGEST_SEARCH_ALL_OF_RANGE\r
-/* #define USE_COMBINATION_EXPLOSION_CHECK */     /* (X*)* */\r
-\r
-/* #define USE_MULTI_THREAD_SYSTEM */\r
-#define THREAD_SYSTEM_INIT      /* depend on thread system */\r
-#define THREAD_SYSTEM_END       /* depend on thread system */\r
-#define THREAD_ATOMIC_START     /* depend on thread system */\r
-#define THREAD_ATOMIC_END       /* depend on thread system */\r
-#define THREAD_PASS             /* depend on thread system */\r
-#define xmalloc     malloc\r
-#define xrealloc    realloc\r
-#define xcalloc     calloc\r
-#define xfree       free\r
-\r
-#define CHECK_INTERRUPT_IN_MATCH_AT\r
-\r
-#define st_init_table                  onig_st_init_table\r
-#define st_init_table_with_size        onig_st_init_table_with_size\r
-#define st_init_numtable               onig_st_init_numtable\r
-#define st_init_numtable_with_size     onig_st_init_numtable_with_size\r
-#define st_init_strtable               onig_st_init_strtable\r
-#define st_init_strtable_with_size     onig_st_init_strtable_with_size\r
-#define st_delete                      onig_st_delete\r
-#define st_delete_safe                 onig_st_delete_safe\r
-#define st_insert                      onig_st_insert\r
-#define st_lookup                      onig_st_lookup\r
-#define st_foreach                     onig_st_foreach\r
-#define st_add_direct                  onig_st_add_direct\r
-#define st_free_table                  onig_st_free_table\r
-#define st_cleanup_safe                onig_st_cleanup_safe\r
-#define st_copy                        onig_st_copy\r
-#define st_nothing_key_clone           onig_st_nothing_key_clone\r
-#define st_nothing_key_free            onig_st_nothing_key_free\r
-/* */\r
-#define onig_st_is_member              st_is_member\r
-\r
-#define STATE_CHECK_STRING_THRESHOLD_LEN             7\r
-#define STATE_CHECK_BUFF_MAX_SIZE               0x4000\r
-\r
-#define THREAD_PASS_LIMIT_COUNT     8\r
-//#define xmemset     memset\r
-//#define xmemcpy     memcpy\r
-//#define xmemmove    memmove\r
-\r
-#if defined(_WIN32) && !defined(__GNUC__)\r
-#define xalloca     _alloca\r
-#define xvsnprintf  _vsnprintf\r
-#else\r
-#define xalloca     alloca\r
-#define xvsnprintf  vsnprintf\r
-#endif\r
-\r
-\r
-#if defined(USE_RECOMPILE_API) && defined(USE_MULTI_THREAD_SYSTEM)\r
-#define ONIG_STATE_INC(reg) (reg)->state++\r
-#define ONIG_STATE_DEC(reg) (reg)->state--\r
-\r
-#define ONIG_STATE_INC_THREAD(reg) do {\\r
-  THREAD_ATOMIC_START;\\r
-  (reg)->state++;\\r
-  THREAD_ATOMIC_END;\\r
-} while(0)\r
-#define ONIG_STATE_DEC_THREAD(reg) do {\\r
-  THREAD_ATOMIC_START;\\r
-  (reg)->state--;\\r
-  THREAD_ATOMIC_END;\\r
-} while(0)\r
-#else\r
-#define ONIG_STATE_INC(reg)         /* Nothing */\r
-#define ONIG_STATE_DEC(reg)         /* Nothing */\r
-#define ONIG_STATE_INC_THREAD(reg)  /* Nothing */\r
-#define ONIG_STATE_DEC_THREAD(reg)  /* Nothing */\r
-#endif /* USE_RECOMPILE_API && USE_MULTI_THREAD_SYSTEM */\r
-\r
-#if 0\r
-#ifdef HAVE_STDLIB_H\r
-#include <stdlib.h>\r
-#endif\r
-\r
-#if defined(HAVE_ALLOCA_H) && !defined(__GNUC__)\r
-#include <alloca.h>\r
-#endif\r
-\r
-#ifdef HAVE_STRING_H\r
-# include <string.h>\r
-#else\r
-# include <strings.h>\r
-#endif\r
-\r
-#include <ctype.h>\r
-#ifdef HAVE_SYS_TYPES_H\r
-#ifndef __BORLANDC__\r
-#include <sys/types.h>\r
-#endif\r
-#endif\r
-\r
-#ifdef __BORLANDC__\r
-#include <malloc.h>\r
-#endif\r
-\r
-#ifdef ONIG_DEBUG\r
-# include <stdio.h>\r
-#endif\r
-#endif\r
-\r
-#include "regenc.h"\r
-\r
-#ifdef MIN\r
-#undef MIN\r
-#endif\r
-#ifdef MAX\r
-#undef MAX\r
-#endif\r
-#define MIN(a,b) (((a)>(b))?(b):(a))\r
-#define MAX(a,b) (((a)<(b))?(b):(a))\r
-\r
-#define IS_NULL(p)                    (((void*)(p)) == (void*)0)\r
-#define IS_NOT_NULL(p)                (((void*)(p)) != (void*)0)\r
-#define CHECK_NULL_RETURN(p)          if (IS_NULL(p)) return NULL\r
-#define CHECK_NULL_RETURN_MEMERR(p)   if (IS_NULL(p)) return ONIGERR_MEMORY\r
-#define NULL_UCHARP                   ((UChar* )0)\r
-\r
-#ifdef PLATFORM_UNALIGNED_WORD_ACCESS\r
-\r
-#define PLATFORM_GET_INC(val,p,type) do{\\r
-  val  = *(type* )p;\\r
-  (p) += sizeof(type);\\r
-} while(0)\r
-\r
-#else\r
-\r
-#define PLATFORM_GET_INC(val,p,type) do{\\r
-  xmemcpy(&val, (p), sizeof(type));\\r
-  (p) += sizeof(type);\\r
-} while(0)\r
-\r
-/* sizeof(OnigCodePoint) */\r
-#define WORD_ALIGNMENT_SIZE     SIZEOF_LONG\r
-\r
-#define GET_ALIGNMENT_PAD_SIZE(addr,pad_size) do {\\r
-  (pad_size) = WORD_ALIGNMENT_SIZE \\r
-               - ((unsigned int )(addr) % WORD_ALIGNMENT_SIZE);\\r
-  if ((pad_size) == WORD_ALIGNMENT_SIZE) (pad_size) = 0;\\r
-} while (0)\r
-\r
-#define ALIGNMENT_RIGHT(addr) do {\\r
-  (addr) += (WORD_ALIGNMENT_SIZE - 1);\\r
-  (addr) -= ((unsigned int )(addr) % WORD_ALIGNMENT_SIZE);\\r
-} while (0)\r
-\r
-#endif /* PLATFORM_UNALIGNED_WORD_ACCESS */\r
-\r
-/* stack pop level */\r
-#define STACK_POP_LEVEL_FREE        0\r
-#define STACK_POP_LEVEL_MEM_START   1\r
-#define STACK_POP_LEVEL_ALL         2\r
-\r
-/* optimize flags */\r
-#define ONIG_OPTIMIZE_NONE              0\r
-#define ONIG_OPTIMIZE_EXACT             1   /* Slow Search */\r
-#define ONIG_OPTIMIZE_EXACT_BM          2   /* Boyer Moore Search */\r
-#define ONIG_OPTIMIZE_EXACT_BM_NOT_REV  3   /* BM   (but not simple match) */\r
-#define ONIG_OPTIMIZE_EXACT_IC          4   /* Slow Search (ignore case) */\r
-#define ONIG_OPTIMIZE_MAP               5   /* char map */\r
-\r
-/* bit status */\r
-typedef unsigned int  BitStatusType;\r
-\r
-#define BIT_STATUS_BITS_NUM          (sizeof(BitStatusType) * 8)\r
-#define BIT_STATUS_CLEAR(stats)      (stats) = 0\r
-#define BIT_STATUS_ON_ALL(stats)     (stats) = ~((BitStatusType )0)\r
-#define BIT_STATUS_AT(stats,n) \\r
-  ((n) < (int )BIT_STATUS_BITS_NUM  ?  ((stats) & (1 << n)) : ((stats) & 1))\r
-\r
-#define BIT_STATUS_ON_AT(stats,n) do {\\r
-    if ((n) < (int )BIT_STATUS_BITS_NUM)       \\r
-    (stats) |= (1 << (n));\\r
-  else\\r
-    (stats) |= 1;\\r
-} while (0)\r
-\r
-#define BIT_STATUS_ON_AT_SIMPLE(stats,n) do {\\r
-    if ((n) < (int )BIT_STATUS_BITS_NUM)\\r
-    (stats) |= (1 << (n));\\r
-} while (0)\r
-\r
-\r
-#define INT_MAX_LIMIT           ((1UL << (SIZEOF_INT * 8 - 1)) - 1)\r
-\r
-#define DIGITVAL(code)    ((code) - '0')\r
-#define ODIGITVAL(code)   DIGITVAL(code)\r
-#define XDIGITVAL(enc,code) \\r
-  (ONIGENC_IS_CODE_DIGIT(enc,code) ? DIGITVAL(code) \\r
-   : (ONIGENC_IS_CODE_UPPER(enc,code) ? (code) - 'A' + 10 : (code) - 'a' + 10))\r
-\r
-#define IS_SINGLELINE(option)     ((option) & ONIG_OPTION_SINGLELINE)\r
-#define IS_MULTILINE(option)      ((option) & ONIG_OPTION_MULTILINE)\r
-#define IS_IGNORECASE(option)     ((option) & ONIG_OPTION_IGNORECASE)\r
-#define IS_EXTEND(option)         ((option) & ONIG_OPTION_EXTEND)\r
-#define IS_FIND_LONGEST(option)   ((option) & ONIG_OPTION_FIND_LONGEST)\r
-#define IS_FIND_NOT_EMPTY(option) ((option) & ONIG_OPTION_FIND_NOT_EMPTY)\r
-#define IS_FIND_CONDITION(option) ((option) & \\r
-          (ONIG_OPTION_FIND_LONGEST | ONIG_OPTION_FIND_NOT_EMPTY))\r
-#define IS_NOTBOL(option)         ((option) & ONIG_OPTION_NOTBOL)\r
-#define IS_NOTEOL(option)         ((option) & ONIG_OPTION_NOTEOL)\r
-#define IS_POSIX_REGION(option)   ((option) & ONIG_OPTION_POSIX_REGION)\r
-\r
-/* OP_SET_OPTION is required for these options.\r
-#define IS_DYNAMIC_OPTION(option) \\r
-  (((option) & (ONIG_OPTION_MULTILINE | ONIG_OPTION_IGNORECASE)) != 0)\r
-*/\r
-/* ignore-case and multibyte status are included in compiled code. */\r
-#define IS_DYNAMIC_OPTION(option)  0\r
-\r
-#define DISABLE_CASE_FOLD_MULTI_CHAR(case_fold_flag) \\r
-  ((case_fold_flag) & ~INTERNAL_ONIGENC_CASE_FOLD_MULTI_CHAR)\r
-\r
-#define REPEAT_INFINITE         -1\r
-#define IS_REPEAT_INFINITE(n)   ((n) == REPEAT_INFINITE)\r
-\r
-/* bitset */\r
-#define BITS_PER_BYTE      8\r
-#define SINGLE_BYTE_SIZE   (1 << BITS_PER_BYTE)\r
-#define BITS_IN_ROOM       (sizeof(Bits) * BITS_PER_BYTE)\r
-#define BITSET_SIZE        (SINGLE_BYTE_SIZE / BITS_IN_ROOM)\r
-\r
-#ifdef PLATFORM_UNALIGNED_WORD_ACCESS\r
-typedef unsigned int   Bits;\r
-#else\r
-typedef unsigned char  Bits;\r
-#endif\r
-typedef Bits           BitSet[BITSET_SIZE];\r
-typedef Bits*          BitSetRef;\r
-\r
-#define SIZE_BITSET        sizeof(BitSet)\r
-\r
-#define BITSET_CLEAR(bs) do {\\r
-  int i;\\r
-  for (i = 0; i < (int )BITSET_SIZE; i++) { (bs)[i] = 0; }     \\r
-} while (0)\r
-\r
-#define BS_ROOM(bs,pos)            (bs)[pos / BITS_IN_ROOM]\r
-#define BS_BIT(pos)                (1 << (pos % BITS_IN_ROOM))\r
-\r
-#define BITSET_AT(bs, pos)         (BS_ROOM(bs,pos) & BS_BIT(pos))\r
-#define BITSET_SET_BIT(bs, pos)     BS_ROOM(bs,pos) |= BS_BIT(pos)\r
-#define BITSET_CLEAR_BIT(bs, pos)   BS_ROOM(bs,pos) &= ~(BS_BIT(pos))\r
-#define BITSET_INVERT_BIT(bs, pos)  BS_ROOM(bs,pos) ^= BS_BIT(pos)\r
-\r
-/* bytes buffer */\r
-typedef struct _BBuf {\r
-  UChar* p;\r
-  unsigned int used;\r
-  unsigned int alloc;\r
-} BBuf;\r
-\r
-#define BBUF_INIT(buf,size)    onig_bbuf_init((BBuf* )(buf), (size))\r
-\r
-#define BBUF_SIZE_INC(buf,inc) do{\\r
-  (buf)->alloc += (inc);\\r
-  (buf)->p = (UChar* )xrealloc((buf)->p, (buf)->alloc);\\r
-  if (IS_NULL((buf)->p)) return(ONIGERR_MEMORY);\\r
-} while (0)\r
-\r
-#define BBUF_EXPAND(buf,low) do{\\r
-  unsigned int OldSize_ = (buf)->alloc * sizeof((buf)->p[0]);\\r
-  do { (buf)->alloc *= 2; } while ((buf)->alloc < (unsigned int )low);\\r
-  (buf)->p = (UChar* )xrealloc((buf)->p, (buf)->alloc, OldSize_);\\r
-  if (IS_NULL((buf)->p)) return(ONIGERR_MEMORY);\\r
-} while (0)\r
-\r
-#define BBUF_ENSURE_SIZE(buf,size) do{\\r
-  unsigned int new_alloc = (buf)->alloc;\\r
-  while (new_alloc < (unsigned int )(size)) { new_alloc *= 2; }\\r
-  if ((buf)->alloc != new_alloc) {\\r
-    (buf)->p = (UChar* )xrealloc((buf)->p, new_alloc, (buf)->alloc);\\r
-    if (IS_NULL((buf)->p)) return(ONIGERR_MEMORY);\\r
-    (buf)->alloc = new_alloc;\\r
-  }\\r
-} while (0)\r
-\r
-#define BBUF_WRITE(buf,pos,bytes,n) do{\\r
-  int used = (pos) + (n);\\r
-  if ((buf)->alloc < (unsigned int )used) BBUF_EXPAND((buf),used);\\r
-  xmemcpy((buf)->p + (pos), (bytes), (n));\\r
-  if ((buf)->used < (unsigned int )used) (buf)->used = used;\\r
-} while (0)\r
-\r
-#define BBUF_WRITE1(buf,pos,byte) do{\\r
-  int used = (pos) + 1;\\r
-  if ((buf)->alloc < (unsigned int )used) BBUF_EXPAND((buf),used);\\r
-  (buf)->p[(pos)] = (byte);\\r
-  if ((buf)->used < (unsigned int )used) (buf)->used = used;\\r
-} while (0)\r
-\r
-#define BBUF_ADD(buf,bytes,n)       BBUF_WRITE((buf),(buf)->used,(bytes),(n))\r
-#define BBUF_ADD1(buf,byte)         BBUF_WRITE1((buf),(buf)->used,(byte))\r
-#define BBUF_GET_ADD_ADDRESS(buf)   ((buf)->p + (buf)->used)\r
-#define BBUF_GET_OFFSET_POS(buf)    ((buf)->used)\r
-\r
-/* from < to */\r
-#define BBUF_MOVE_RIGHT(buf,from,to,n) do {\\r
-  if ((unsigned int )((to)+(n)) > (buf)->alloc) BBUF_EXPAND((buf),(to) + (n));\\r
-  xmemmove((buf)->p + (to), (buf)->p + (from), (n));\\r
-  if ((unsigned int )((to)+(n)) > (buf)->used) (buf)->used = (to) + (n);\\r
-} while (0)\r
-\r
-/* from > to */\r
-#define BBUF_MOVE_LEFT(buf,from,to,n) do {\\r
-  xmemmove((buf)->p + (to), (buf)->p + (from), (n));\\r
-} while (0)\r
-\r
-/* from > to */\r
-#define BBUF_MOVE_LEFT_REDUCE(buf,from,to) do {\\r
-  xmemmove((buf)->p + (to), (buf)->p + (from), (buf)->used - (from));\\r
-  (buf)->used -= (from - to);\\r
-} while (0)\r
-\r
-#define BBUF_INSERT(buf,pos,bytes,n) do {\\r
-  if (pos >= (buf)->used) {\\r
-    BBUF_WRITE(buf,pos,bytes,n);\\r
-  }\\r
-  else {\\r
-    BBUF_MOVE_RIGHT((buf),(pos),(pos) + (n),((buf)->used - (pos)));\\r
-    xmemcpy((buf)->p + (pos), (bytes), (n));\\r
-  }\\r
-} while (0)\r
-\r
-#define BBUF_GET_BYTE(buf, pos) (buf)->p[(pos)]\r
-\r
-\r
-#define ANCHOR_BEGIN_BUF        (1<<0)\r
-#define ANCHOR_BEGIN_LINE       (1<<1)\r
-#define ANCHOR_BEGIN_POSITION   (1<<2)\r
-#define ANCHOR_END_BUF          (1<<3)\r
-#define ANCHOR_SEMI_END_BUF     (1<<4)\r
-#define ANCHOR_END_LINE         (1<<5)\r
-\r
-#define ANCHOR_WORD_BOUND       (1<<6)\r
-#define ANCHOR_NOT_WORD_BOUND   (1<<7)\r
-#define ANCHOR_WORD_BEGIN       (1<<8)\r
-#define ANCHOR_WORD_END         (1<<9)\r
-#define ANCHOR_PREC_READ        (1<<10)\r
-#define ANCHOR_PREC_READ_NOT    (1<<11)\r
-#define ANCHOR_LOOK_BEHIND      (1<<12)\r
-#define ANCHOR_LOOK_BEHIND_NOT  (1<<13)\r
-\r
-#define ANCHOR_ANYCHAR_STAR     (1<<14)   /* ".*" optimize info */\r
-#define ANCHOR_ANYCHAR_STAR_ML  (1<<15)   /* ".*" optimize info (multi-line) */\r
-\r
-/* operation code */\r
-enum OpCode {\r
-  OP_FINISH = 0,        /* matching process terminator (no more alternative) */\r
-  OP_END    = 1,        /* pattern code terminator (success end) */\r
-\r
-  OP_EXACT1 = 2,        /* single byte, N = 1 */\r
-  OP_EXACT2,            /* single byte, N = 2 */\r
-  OP_EXACT3,            /* single byte, N = 3 */\r
-  OP_EXACT4,            /* single byte, N = 4 */\r
-  OP_EXACT5,            /* single byte, N = 5 */\r
-  OP_EXACTN,            /* single byte */\r
-  OP_EXACTMB2N1,        /* mb-length = 2 N = 1 */\r
-  OP_EXACTMB2N2,        /* mb-length = 2 N = 2 */\r
-  OP_EXACTMB2N3,        /* mb-length = 2 N = 3 */\r
-  OP_EXACTMB2N,         /* mb-length = 2 */\r
-  OP_EXACTMB3N,         /* mb-length = 3 */\r
-  OP_EXACTMBN,          /* other length */\r
-\r
-  OP_EXACT1_IC,         /* single byte, N = 1, ignore case */\r
-  OP_EXACTN_IC,         /* single byte,        ignore case */\r
-\r
-  OP_CCLASS,\r
-  OP_CCLASS_MB,\r
-  OP_CCLASS_MIX,\r
-  OP_CCLASS_NOT,\r
-  OP_CCLASS_MB_NOT,\r
-  OP_CCLASS_MIX_NOT,\r
-  OP_CCLASS_NODE,       /* pointer to CClassNode node */\r
-\r
-  OP_ANYCHAR,                 /* "."  */\r
-  OP_ANYCHAR_ML,              /* "."  multi-line */\r
-  OP_ANYCHAR_STAR,            /* ".*" */\r
-  OP_ANYCHAR_ML_STAR,         /* ".*" multi-line */\r
-  OP_ANYCHAR_STAR_PEEK_NEXT,\r
-  OP_ANYCHAR_ML_STAR_PEEK_NEXT,\r
-\r
-  OP_WORD,\r
-  OP_NOT_WORD,\r
-  OP_WORD_BOUND,\r
-  OP_NOT_WORD_BOUND,\r
-  OP_WORD_BEGIN,\r
-  OP_WORD_END,\r
-\r
-  OP_BEGIN_BUF,\r
-  OP_END_BUF,\r
-  OP_BEGIN_LINE,\r
-  OP_END_LINE,\r
-  OP_SEMI_END_BUF,\r
-  OP_BEGIN_POSITION,\r
-\r
-  OP_BACKREF1,\r
-  OP_BACKREF2,\r
-  OP_BACKREFN,\r
-  OP_BACKREFN_IC,\r
-  OP_BACKREF_MULTI,\r
-  OP_BACKREF_MULTI_IC,\r
-  OP_BACKREF_WITH_LEVEL,    /* \k<xxx+n>, \k<xxx-n> */\r
-\r
-  OP_MEMORY_START,\r
-  OP_MEMORY_START_PUSH,   /* push back-tracker to stack */\r
-  OP_MEMORY_END_PUSH,     /* push back-tracker to stack */\r
-  OP_MEMORY_END_PUSH_REC, /* push back-tracker to stack */\r
-  OP_MEMORY_END,\r
-  OP_MEMORY_END_REC,      /* push marker to stack */\r
-\r
-  OP_FAIL,               /* pop stack and move */\r
-  OP_JUMP,\r
-  OP_PUSH,\r
-  OP_POP,\r
-  OP_PUSH_OR_JUMP_EXACT1,  /* if match exact then push, else jump. */\r
-  OP_PUSH_IF_PEEK_NEXT,    /* if match exact then push, else none. */\r
-  OP_REPEAT,               /* {n,m} */\r
-  OP_REPEAT_NG,            /* {n,m}? (non greedy) */\r
-  OP_REPEAT_INC,\r
-  OP_REPEAT_INC_NG,        /* non greedy */\r
-  OP_REPEAT_INC_SG,        /* search and get in stack */\r
-  OP_REPEAT_INC_NG_SG,     /* search and get in stack (non greedy) */\r
-  OP_NULL_CHECK_START,     /* null loop checker start */\r
-  OP_NULL_CHECK_END,       /* null loop checker end   */\r
-  OP_NULL_CHECK_END_MEMST, /* null loop checker end (with capture status) */\r
-  OP_NULL_CHECK_END_MEMST_PUSH, /* with capture status and push check-end */\r
-\r
-  OP_PUSH_POS,             /* (?=...)  start */\r
-  OP_POP_POS,              /* (?=...)  end   */\r
-  OP_PUSH_POS_NOT,         /* (?!...)  start */\r
-  OP_FAIL_POS,             /* (?!...)  end   */\r
-  OP_PUSH_STOP_BT,         /* (?>...)  start */\r
-  OP_POP_STOP_BT,          /* (?>...)  end   */\r
-  OP_LOOK_BEHIND,          /* (?<=...) start (no needs end opcode) */\r
-  OP_PUSH_LOOK_BEHIND_NOT, /* (?<!...) start */\r
-  OP_FAIL_LOOK_BEHIND_NOT, /* (?<!...) end   */\r
-\r
-  OP_CALL,                 /* \g<name> */\r
-  OP_RETURN,\r
-\r
-  OP_STATE_CHECK_PUSH,         /* combination explosion check and push */\r
-  OP_STATE_CHECK_PUSH_OR_JUMP, /* check ok -> push, else jump  */\r
-  OP_STATE_CHECK,              /* check only */\r
-  OP_STATE_CHECK_ANYCHAR_STAR,\r
-  OP_STATE_CHECK_ANYCHAR_ML_STAR,\r
-\r
-  /* no need: IS_DYNAMIC_OPTION() == 0 */\r
-  OP_SET_OPTION_PUSH,    /* set option and push recover option */\r
-  OP_SET_OPTION          /* set option */\r
-};\r
-\r
-typedef int RelAddrType;\r
-typedef int AbsAddrType;\r
-typedef int LengthType;\r
-typedef int RepeatNumType;\r
-typedef short int MemNumType;\r
-typedef short int StateCheckNumType;\r
-typedef void* PointerType;\r
-\r
-#define SIZE_OPCODE           1\r
-#define SIZE_RELADDR          sizeof(RelAddrType)\r
-#define SIZE_ABSADDR          sizeof(AbsAddrType)\r
-#define SIZE_LENGTH           sizeof(LengthType)\r
-#define SIZE_MEMNUM           sizeof(MemNumType)\r
-#define SIZE_STATE_CHECK_NUM  sizeof(StateCheckNumType)\r
-#define SIZE_REPEATNUM        sizeof(RepeatNumType)\r
-#define SIZE_OPTION           sizeof(OnigOptionType)\r
-#define SIZE_CODE_POINT       sizeof(OnigCodePoint)\r
-#define SIZE_POINTER          sizeof(PointerType)\r
-\r
-\r
-#define GET_RELADDR_INC(addr,p)    PLATFORM_GET_INC(addr,   p, RelAddrType)\r
-#define GET_ABSADDR_INC(addr,p)    PLATFORM_GET_INC(addr,   p, AbsAddrType)\r
-#define GET_LENGTH_INC(len,p)      PLATFORM_GET_INC(len,    p, LengthType)\r
-#define GET_MEMNUM_INC(num,p)      PLATFORM_GET_INC(num,    p, MemNumType)\r
-#define GET_REPEATNUM_INC(num,p)   PLATFORM_GET_INC(num,    p, RepeatNumType)\r
-#define GET_OPTION_INC(option,p)   PLATFORM_GET_INC(option, p, OnigOptionType)\r
-#define GET_POINTER_INC(ptr,p)     PLATFORM_GET_INC(ptr,    p, PointerType)\r
-#define GET_STATE_CHECK_NUM_INC(num,p)  PLATFORM_GET_INC(num, p, StateCheckNumType)\r
-\r
-/* code point's address must be aligned address. */\r
-#define GET_CODE_POINT(code,p)   code = *((OnigCodePoint* )(p))\r
-#define GET_BYTE_INC(byte,p) do{\\r
-  byte = *(p);\\r
-  (p)++;\\r
-} while(0)\r
-\r
-\r
-/* op-code + arg size */\r
-#define SIZE_OP_ANYCHAR_STAR            SIZE_OPCODE\r
-#define SIZE_OP_ANYCHAR_STAR_PEEK_NEXT (SIZE_OPCODE + 1)\r
-#define SIZE_OP_JUMP                   (SIZE_OPCODE + SIZE_RELADDR)\r
-#define SIZE_OP_PUSH                   (SIZE_OPCODE + SIZE_RELADDR)\r
-#define SIZE_OP_POP                     SIZE_OPCODE\r
-#define SIZE_OP_PUSH_OR_JUMP_EXACT1    (SIZE_OPCODE + SIZE_RELADDR + 1)\r
-#define SIZE_OP_PUSH_IF_PEEK_NEXT      (SIZE_OPCODE + SIZE_RELADDR + 1)\r
-#define SIZE_OP_REPEAT_INC             (SIZE_OPCODE + SIZE_MEMNUM)\r
-#define SIZE_OP_REPEAT_INC_NG          (SIZE_OPCODE + SIZE_MEMNUM)\r
-#define SIZE_OP_PUSH_POS                SIZE_OPCODE\r
-#define SIZE_OP_PUSH_POS_NOT           (SIZE_OPCODE + SIZE_RELADDR)\r
-#define SIZE_OP_POP_POS                 SIZE_OPCODE\r
-#define SIZE_OP_FAIL_POS                SIZE_OPCODE\r
-#define SIZE_OP_SET_OPTION             (SIZE_OPCODE + SIZE_OPTION)\r
-#define SIZE_OP_SET_OPTION_PUSH        (SIZE_OPCODE + SIZE_OPTION)\r
-#define SIZE_OP_FAIL                    SIZE_OPCODE\r
-#define SIZE_OP_MEMORY_START           (SIZE_OPCODE + SIZE_MEMNUM)\r
-#define SIZE_OP_MEMORY_START_PUSH      (SIZE_OPCODE + SIZE_MEMNUM)\r
-#define SIZE_OP_MEMORY_END_PUSH        (SIZE_OPCODE + SIZE_MEMNUM)\r
-#define SIZE_OP_MEMORY_END_PUSH_REC    (SIZE_OPCODE + SIZE_MEMNUM)\r
-#define SIZE_OP_MEMORY_END             (SIZE_OPCODE + SIZE_MEMNUM)\r
-#define SIZE_OP_MEMORY_END_REC         (SIZE_OPCODE + SIZE_MEMNUM)\r
-#define SIZE_OP_PUSH_STOP_BT            SIZE_OPCODE\r
-#define SIZE_OP_POP_STOP_BT             SIZE_OPCODE\r
-#define SIZE_OP_NULL_CHECK_START       (SIZE_OPCODE + SIZE_MEMNUM)\r
-#define SIZE_OP_NULL_CHECK_END         (SIZE_OPCODE + SIZE_MEMNUM)\r
-#define SIZE_OP_LOOK_BEHIND            (SIZE_OPCODE + SIZE_LENGTH)\r
-#define SIZE_OP_PUSH_LOOK_BEHIND_NOT   (SIZE_OPCODE + SIZE_RELADDR + SIZE_LENGTH)\r
-#define SIZE_OP_FAIL_LOOK_BEHIND_NOT    SIZE_OPCODE\r
-#define SIZE_OP_CALL                   (SIZE_OPCODE + SIZE_ABSADDR)\r
-#define SIZE_OP_RETURN                  SIZE_OPCODE\r
-\r
-#ifdef USE_COMBINATION_EXPLOSION_CHECK\r
-#define SIZE_OP_STATE_CHECK            (SIZE_OPCODE + SIZE_STATE_CHECK_NUM)\r
-#define SIZE_OP_STATE_CHECK_PUSH       (SIZE_OPCODE + SIZE_STATE_CHECK_NUM + SIZE_RELADDR)\r
-#define SIZE_OP_STATE_CHECK_PUSH_OR_JUMP (SIZE_OPCODE + SIZE_STATE_CHECK_NUM + SIZE_RELADDR)\r
-#define SIZE_OP_STATE_CHECK_ANYCHAR_STAR (SIZE_OPCODE + SIZE_STATE_CHECK_NUM)\r
-#endif\r
-\r
-#define MC_ESC(syn)               (syn)->meta_char_table.esc\r
-#define MC_ANYCHAR(syn)           (syn)->meta_char_table.anychar\r
-#define MC_ANYTIME(syn)           (syn)->meta_char_table.anytime\r
-#define MC_ZERO_OR_ONE_TIME(syn)  (syn)->meta_char_table.zero_or_one_time\r
-#define MC_ONE_OR_MORE_TIME(syn)  (syn)->meta_char_table.one_or_more_time\r
-#define MC_ANYCHAR_ANYTIME(syn)   (syn)->meta_char_table.anychar_anytime\r
-\r
-#define IS_MC_ESC_CODE(code, syn) \\r
-  ((code) == MC_ESC(syn) && \\r
-   !IS_SYNTAX_OP2((syn), ONIG_SYN_OP2_INEFFECTIVE_ESCAPE))\r
-\r
-\r
-#define SYN_POSIX_COMMON_OP \\r
- ( ONIG_SYN_OP_DOT_ANYCHAR | ONIG_SYN_OP_POSIX_BRACKET | \\r
-   ONIG_SYN_OP_DECIMAL_BACKREF | \\r
-   ONIG_SYN_OP_BRACKET_CC | ONIG_SYN_OP_ASTERISK_ZERO_INF | \\r
-   ONIG_SYN_OP_LINE_ANCHOR | \\r
-   ONIG_SYN_OP_ESC_CONTROL_CHARS )\r
-\r
-#define SYN_GNU_REGEX_OP \\r
-  ( ONIG_SYN_OP_DOT_ANYCHAR | ONIG_SYN_OP_BRACKET_CC | \\r
-    ONIG_SYN_OP_POSIX_BRACKET | ONIG_SYN_OP_DECIMAL_BACKREF | \\r
-    ONIG_SYN_OP_BRACE_INTERVAL | ONIG_SYN_OP_LPAREN_SUBEXP | \\r
-    ONIG_SYN_OP_VBAR_ALT | \\r
-    ONIG_SYN_OP_ASTERISK_ZERO_INF | ONIG_SYN_OP_PLUS_ONE_INF | \\r
-    ONIG_SYN_OP_QMARK_ZERO_ONE | \\r
-    ONIG_SYN_OP_ESC_AZ_BUF_ANCHOR | ONIG_SYN_OP_ESC_CAPITAL_G_BEGIN_ANCHOR | \\r
-    ONIG_SYN_OP_ESC_W_WORD | \\r
-    ONIG_SYN_OP_ESC_B_WORD_BOUND | ONIG_SYN_OP_ESC_LTGT_WORD_BEGIN_END | \\r
-    ONIG_SYN_OP_ESC_S_WHITE_SPACE | ONIG_SYN_OP_ESC_D_DIGIT | \\r
-    ONIG_SYN_OP_LINE_ANCHOR )\r
-\r
-#define SYN_GNU_REGEX_BV \\r
-  ( ONIG_SYN_CONTEXT_INDEP_ANCHORS | ONIG_SYN_CONTEXT_INDEP_REPEAT_OPS | \\r
-    ONIG_SYN_CONTEXT_INVALID_REPEAT_OPS | ONIG_SYN_ALLOW_INVALID_INTERVAL | \\r
-    ONIG_SYN_BACKSLASH_ESCAPE_IN_CC | ONIG_SYN_ALLOW_DOUBLE_RANGE_OP_IN_CC )\r
-\r
-\r
-#define NCCLASS_FLAGS(cc)           ((cc)->flags)\r
-#define NCCLASS_FLAG_SET(cc,flag)    (NCCLASS_FLAGS(cc) |= (flag))\r
-#define NCCLASS_FLAG_CLEAR(cc,flag)  (NCCLASS_FLAGS(cc) &= ~(flag))\r
-#define IS_NCCLASS_FLAG_ON(cc,flag) ((NCCLASS_FLAGS(cc) & (flag)) != 0)\r
-\r
-/* cclass node */\r
-#define FLAG_NCCLASS_NOT           (1<<0)\r
-#define FLAG_NCCLASS_SHARE         (1<<1)\r
-\r
-#define NCCLASS_SET_NOT(nd)     NCCLASS_FLAG_SET(nd, FLAG_NCCLASS_NOT)\r
-#define NCCLASS_SET_SHARE(nd)   NCCLASS_FLAG_SET(nd, FLAG_NCCLASS_SHARE)\r
-#define NCCLASS_CLEAR_NOT(nd)   NCCLASS_FLAG_CLEAR(nd, FLAG_NCCLASS_NOT)\r
-#define IS_NCCLASS_NOT(nd)      IS_NCCLASS_FLAG_ON(nd, FLAG_NCCLASS_NOT)\r
-#define IS_NCCLASS_SHARE(nd)    IS_NCCLASS_FLAG_ON(nd, FLAG_NCCLASS_SHARE)\r
-\r
-typedef struct {\r
-  int type;\r
-  /* struct _Node* next; */\r
-  /* unsigned int flags; */\r
-} NodeBase;\r
-\r
-typedef struct {\r
-  NodeBase base;\r
-  unsigned int flags;\r
-  BitSet bs;\r
-  BBuf*  mbuf;   /* multi-byte info or NULL */\r
-} CClassNode;\r
-\r
-typedef long OnigStackIndex;\r
-\r
-typedef struct _OnigStackType {\r
-  unsigned int type;\r
-  union {\r
-    struct {\r
-      UChar *pcode;      /* byte code position */\r
-      UChar *pstr;       /* string position */\r
-      UChar *pstr_prev;  /* previous char position of pstr */\r
-#ifdef USE_COMBINATION_EXPLOSION_CHECK\r
-      unsigned int state_check;\r
-#endif\r
-    } state;\r
-    struct {\r
-      int   count;       /* for OP_REPEAT_INC, OP_REPEAT_INC_NG */\r
-      UChar *pcode;      /* byte code position (head of repeated target) */\r
-      int   num;         /* repeat id */\r
-    } repeat;\r
-    struct {\r
-      OnigStackIndex si;     /* index of stack */\r
-    } repeat_inc;\r
-    struct {\r
-      int num;           /* memory num */\r
-      UChar *pstr;       /* start/end position */\r
-      /* Following information is setted, if this stack type is MEM-START */\r
-      OnigStackIndex start;  /* prev. info (for backtrack  "(...)*" ) */\r
-      OnigStackIndex end;    /* prev. info (for backtrack  "(...)*" ) */\r
-    } mem;\r
-    struct {\r
-      int num;           /* null check id */\r
-      UChar *pstr;       /* start position */\r
-    } null_check;\r
-#ifdef USE_SUBEXP_CALL\r
-    struct {\r
-      UChar *ret_addr;   /* byte code position */\r
-      int    num;        /* null check id */\r
-      UChar *pstr;       /* string position */\r
-    } call_frame;\r
-#endif\r
-  } u;\r
-} OnigStackType;\r
-\r
-typedef struct {\r
-  void* stack_p;\r
-  int   stack_n;\r
-  OnigOptionType options;\r
-  OnigRegion*    region;\r
-  const UChar* start;   /* search start position (for \G: BEGIN_POSITION) */\r
-#ifdef USE_FIND_LONGEST_SEARCH_ALL_OF_RANGE\r
-  int    best_len;      /* for ONIG_OPTION_FIND_LONGEST */\r
-  UChar* best_s;\r
-#endif\r
-#ifdef USE_COMBINATION_EXPLOSION_CHECK\r
-  void* state_check_buff;\r
-  int   state_check_buff_size;\r
-#endif\r
-} OnigMatchArg;\r
-\r
-\r
-#define IS_CODE_SB_WORD(enc,code) \\r
-  (ONIGENC_IS_CODE_ASCII(code) && ONIGENC_IS_CODE_WORD(enc,code))\r
-\r
-typedef struct OnigEndCallListItem {\r
-  struct OnigEndCallListItem* next;\r
-  void (*func)(void);\r
-} OnigEndCallListItemType;\r
-\r
-extern void onig_add_end_call(void (*func)(void));\r
-\r
-\r
-#ifdef ONIG_DEBUG\r
-\r
-typedef struct {\r
-  short int opcode;\r
-  char*     name;\r
-  short int arg_type;\r
-} OnigOpInfoType;\r
-\r
-extern OnigOpInfoType OnigOpInfo[];\r
-\r
-\r
-extern void onig_print_compiled_byte_code P_((FILE* f, UChar* bp, UChar** nextp, OnigEncoding enc));\r
-\r
-#ifdef ONIG_DEBUG_STATISTICS\r
-extern void onig_statistics_init P_((void));\r
-extern void onig_print_statistics P_((FILE* f));\r
-#endif\r
-#endif\r
-\r
-extern UChar* onig_error_code_to_format P_((int code));\r
-extern void  onig_snprintf_with_pattern PV_((UChar buf[], int bufsize, OnigEncoding enc, UChar* pat, UChar* pat_end, const UChar *fmt, ...));\r
-extern int  onig_bbuf_init P_((BBuf* buf, int size));\r
-extern int  onig_compile P_((regex_t* reg, const UChar* pattern, const UChar* pattern_end, OnigErrorInfo* einfo));\r
-extern void onig_chain_reduce P_((regex_t* reg));\r
-extern void onig_chain_link_add P_((regex_t* to, regex_t* add));\r
-extern void onig_transfer P_((regex_t* to, regex_t* from));\r
-extern int  onig_is_code_in_cc P_((OnigEncoding enc, OnigCodePoint code, CClassNode* cc));\r
-extern int  onig_is_code_in_cc_len P_((int enclen, OnigCodePoint code, CClassNode* cc));\r
-\r
-/* strend hash */\r
-typedef void hash_table_type;\r
-typedef unsigned long hash_data_type;\r
-\r
-extern hash_table_type* onig_st_init_strend_table_with_size P_((int size));\r
-extern int onig_st_lookup_strend P_((hash_table_type* table, const UChar* str_key, const UChar* end_key, hash_data_type *value));\r
-extern int onig_st_insert_strend P_((hash_table_type* table, const UChar* str_key, const UChar* end_key, hash_data_type value));\r
-\r
-/* encoding property management */\r
-#define PROPERTY_LIST_ADD_PROP(Name, CR) \\r
-  r = onigenc_property_list_add_property((UChar* )Name, CR,\\r
-             &PropertyNameTable, &PropertyList, &PropertyListNum,\\r
-             &PropertyListSize);\\r
-  if (r != 0) goto end\r
-\r
-#define PROPERTY_LIST_INIT_CHECK \\r
-  if (PropertyInited == 0) {\\r
-    int r = onigenc_property_list_init(init_property_list);\\r
-    if (r != 0) return r;\\r
-  }\r
-\r
-extern int onigenc_property_list_add_property P_((UChar* name, const OnigCodePoint* prop, hash_table_type **table, const OnigCodePoint*** plist, int *pnum, int *psize));\r
-\r
-typedef int (*ONIGENC_INIT_PROPERTY_LIST_FUNC_TYPE)(void);\r
-\r
-extern int onigenc_property_list_init P_((ONIGENC_INIT_PROPERTY_LIST_FUNC_TYPE));\r
-\r
-#endif /* REGINT_H */\r
diff --git a/MdeModulePkg/Universal/RegularExpressionDxe/Oniguruma/regparse.c b/MdeModulePkg/Universal/RegularExpressionDxe/Oniguruma/regparse.c
deleted file mode 100644 (file)
index d7e645b..0000000
+++ /dev/null
@@ -1,5556 +0,0 @@
-/**********************************************************************\r
-  regparse.c -  Oniguruma (regular expression library)\r
-**********************************************************************/\r
-/*-\r
- * Copyright (c) 2002-2008  K.Kosako  <sndgk393 AT ybb DOT ne DOT jp>\r
- * All rights reserved.\r
- *\r
- * Copyright (c) 2015, Hewlett Packard Enterprise Development, L.P.<BR>\r
- *\r
- * Redistribution and use in source and binary forms, with or without\r
- * modification, are permitted provided that the following conditions\r
- * are met:\r
- * 1. Redistributions of source code must retain the above copyright\r
- *    notice, this list of conditions and the following disclaimer.\r
- * 2. Redistributions in binary form must reproduce the above copyright\r
- *    notice, this list of conditions and the following disclaimer in the\r
- *    documentation and/or other materials provided with the distribution.\r
- *\r
- * THIS SOFTWARE IS PROVIDED BY THE AUTHOR AND CONTRIBUTORS ``AS IS'' AND\r
- * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE\r
- * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE\r
- * ARE DISCLAIMED.  IN NO EVENT SHALL THE AUTHOR OR CONTRIBUTORS BE LIABLE\r
- * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL\r
- * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS\r
- * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)\r
- * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT\r
- * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY\r
- * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF\r
- * SUCH DAMAGE.\r
- */\r
-\r
-#include "regparse.h"\r
-#include "st.h"\r
-\r
-#define WARN_BUFSIZE    256\r
-\r
-#define CASE_FOLD_IS_APPLIED_INSIDE_NEGATIVE_CCLASS\r
-\r
-\r
-OnigSyntaxType OnigSyntaxRuby = {\r
-  (( SYN_GNU_REGEX_OP | ONIG_SYN_OP_QMARK_NON_GREEDY |\r
-     ONIG_SYN_OP_ESC_OCTAL3 | ONIG_SYN_OP_ESC_X_HEX2 |\r
-     ONIG_SYN_OP_ESC_X_BRACE_HEX8 | ONIG_SYN_OP_ESC_CONTROL_CHARS |\r
-     ONIG_SYN_OP_ESC_C_CONTROL )\r
-   & ~ONIG_SYN_OP_ESC_LTGT_WORD_BEGIN_END )\r
-  , ( ONIG_SYN_OP2_QMARK_GROUP_EFFECT |\r
-      ONIG_SYN_OP2_OPTION_RUBY |\r
-      ONIG_SYN_OP2_QMARK_LT_NAMED_GROUP | ONIG_SYN_OP2_ESC_K_NAMED_BACKREF |\r
-      ONIG_SYN_OP2_ESC_G_SUBEXP_CALL |\r
-      ONIG_SYN_OP2_ESC_P_BRACE_CHAR_PROPERTY  |\r
-      ONIG_SYN_OP2_ESC_P_BRACE_CIRCUMFLEX_NOT |\r
-      ONIG_SYN_OP2_PLUS_POSSESSIVE_REPEAT |\r
-      ONIG_SYN_OP2_CCLASS_SET_OP | ONIG_SYN_OP2_ESC_CAPITAL_C_BAR_CONTROL |\r
-      ONIG_SYN_OP2_ESC_CAPITAL_M_BAR_META | ONIG_SYN_OP2_ESC_V_VTAB |\r
-      ONIG_SYN_OP2_ESC_H_XDIGIT )\r
-  , ( SYN_GNU_REGEX_BV | \r
-      ONIG_SYN_ALLOW_INTERVAL_LOW_ABBREV |\r
-      ONIG_SYN_DIFFERENT_LEN_ALT_LOOK_BEHIND |\r
-      ONIG_SYN_CAPTURE_ONLY_NAMED_GROUP |\r
-      ONIG_SYN_ALLOW_MULTIPLEX_DEFINITION_NAME |\r
-      ONIG_SYN_FIXED_INTERVAL_IS_GREEDY_ONLY |\r
-      ONIG_SYN_WARN_CC_OP_NOT_ESCAPED |\r
-      ONIG_SYN_WARN_REDUNDANT_NESTED_REPEAT )\r
-  , ONIG_OPTION_NONE\r
-  ,\r
-  {\r
-      (OnigCodePoint )'\\'                       /* esc */\r
-    , (OnigCodePoint )ONIG_INEFFECTIVE_META_CHAR /* anychar '.'  */\r
-    , (OnigCodePoint )ONIG_INEFFECTIVE_META_CHAR /* anytime '*'  */\r
-    , (OnigCodePoint )ONIG_INEFFECTIVE_META_CHAR /* zero or one time '?' */\r
-    , (OnigCodePoint )ONIG_INEFFECTIVE_META_CHAR /* one or more time '+' */\r
-    , (OnigCodePoint )ONIG_INEFFECTIVE_META_CHAR /* anychar anytime */\r
-  }\r
-};\r
-\r
-OnigSyntaxType*  OnigDefaultSyntax = ONIG_SYNTAX_RUBY;\r
-\r
-extern void onig_null_warn(const char* s ARG_UNUSED) { }\r
-\r
-#ifdef DEFAULT_WARN_FUNCTION\r
-static OnigWarnFunc onig_warn = (OnigWarnFunc )DEFAULT_WARN_FUNCTION;\r
-#else\r
-static OnigWarnFunc onig_warn = onig_null_warn;\r
-#endif\r
-\r
-#ifdef DEFAULT_VERB_WARN_FUNCTION\r
-static OnigWarnFunc onig_verb_warn = (OnigWarnFunc )DEFAULT_VERB_WARN_FUNCTION;\r
-#else\r
-static OnigWarnFunc onig_verb_warn = onig_null_warn;\r
-#endif\r
-\r
-extern void onig_set_warn_func(OnigWarnFunc f)\r
-{\r
-  onig_warn = f;\r
-}\r
-\r
-extern void onig_set_verb_warn_func(OnigWarnFunc f)\r
-{\r
-  onig_verb_warn = f;\r
-}\r
-\r
-static void\r
-bbuf_free(BBuf* bbuf)\r
-{\r
-  if (IS_NOT_NULL(bbuf)) {\r
-    if (IS_NOT_NULL(bbuf->p)) xfree(bbuf->p);\r
-    xfree(bbuf);\r
-  }\r
-}\r
-\r
-static int\r
-bbuf_clone(BBuf** rto, BBuf* from)\r
-{\r
-  int r;\r
-  BBuf *to;\r
-\r
-  *rto = to = (BBuf* )xmalloc(sizeof(BBuf));\r
-  CHECK_NULL_RETURN_MEMERR(to);\r
-  r = BBUF_INIT(to, from->alloc);\r
-  if (r != 0) return r;\r
-  to->used = from->used;\r
-  xmemcpy(to->p, from->p, from->used);\r
-  return 0;\r
-}\r
-\r
-#define BACKREF_REL_TO_ABS(rel_no, env) \\r
-  ((env)->num_mem + 1 + (rel_no))\r
-\r
-#define ONOFF(v,f,negative)    (negative) ? ((v) &= ~(f)) : ((v) |= (f))\r
-\r
-#define MBCODE_START_POS(enc) \\r
-  (OnigCodePoint )(ONIGENC_MBC_MINLEN(enc) > 1 ? 0 : 0x80)\r
-\r
-#define SET_ALL_MULTI_BYTE_RANGE(enc, pbuf) \\r
-  add_code_range_to_buf(pbuf, MBCODE_START_POS(enc), ~((OnigCodePoint )0))\r
-\r
-#define ADD_ALL_MULTI_BYTE_RANGE(enc, mbuf) do {\\r
-  if (! ONIGENC_IS_SINGLEBYTE(enc)) {\\r
-    r = SET_ALL_MULTI_BYTE_RANGE(enc, &(mbuf));\\r
-    if (r) return r;\\r
-  }\\r
-} while (0)\r
-\r
-\r
-#define BITSET_IS_EMPTY(bs,empty) do {\\r
-  int i;\\r
-  empty = 1;\\r
-  for (i = 0; i < (int )BITSET_SIZE; i++) {\\r
-    if ((bs)[i] != 0) {\\r
-      empty = 0; break;\\r
-    }\\r
-  }\\r
-} while (0)\r
-\r
-static void\r
-bitset_set_range(BitSetRef bs, int from, int to)\r
-{\r
-  int i;\r
-  for (i = from; i <= to && i < SINGLE_BYTE_SIZE; i++) {\r
-    BITSET_SET_BIT(bs, i);\r
-  }\r
-}\r
-\r
-#if 0\r
-static void\r
-bitset_set_all(BitSetRef bs)\r
-{\r
-  int i;\r
-  for (i = 0; i < BITSET_SIZE; i++) { bs[i] = ~((Bits )0); }\r
-}\r
-#endif\r
-\r
-static void\r
-bitset_invert(BitSetRef bs)\r
-{\r
-  int i;\r
-  for (i = 0; i < (int )BITSET_SIZE; i++) { bs[i] = ~(bs[i]); }\r
-}\r
-\r
-static void\r
-bitset_invert_to(BitSetRef from, BitSetRef to)\r
-{\r
-  int i;\r
-  for (i = 0; i < (int )BITSET_SIZE; i++) { to[i] = ~(from[i]); }\r
-}\r
-\r
-static void\r
-bitset_and(BitSetRef dest, BitSetRef bs)\r
-{\r
-  int i;\r
-  for (i = 0; i < (int )BITSET_SIZE; i++) { dest[i] &= bs[i]; }\r
-}\r
-\r
-static void\r
-bitset_or(BitSetRef dest, BitSetRef bs)\r
-{\r
-  int i;\r
-  for (i = 0; i < (int )BITSET_SIZE; i++) { dest[i] |= bs[i]; }\r
-}\r
-\r
-static void\r
-bitset_copy(BitSetRef dest, BitSetRef bs)\r
-{\r
-  int i;\r
-  for (i = 0; i < (int )BITSET_SIZE; i++) { dest[i] = bs[i]; }\r
-}\r
-\r
-extern int\r
-onig_strncmp(const UChar* s1, const UChar* s2, int n)\r
-{\r
-  int x;\r
-\r
-  while (n-- > 0) {\r
-    x = *s2++ - *s1++;\r
-    if (x) return x;\r
-  }\r
-  return 0;\r
-}\r
-\r
-extern void\r
-onig_strcpy(UChar* dest, const UChar* src, const UChar* end)\r
-{\r
-  int len = (int)(end - src);\r
-  if (len > 0) {\r
-    xmemcpy(dest, src, len);\r
-    dest[len] = (UChar )0;\r
-  }\r
-}\r
-\r
-#ifdef USE_NAMED_GROUP\r
-static UChar*\r
-strdup_with_null(OnigEncoding enc, UChar* s, UChar* end)\r
-{\r
-  int slen, term_len, i;\r
-  UChar *r;\r
-\r
-  slen = (int)(end - s);\r
-  term_len = ONIGENC_MBC_MINLEN(enc);\r
-\r
-  r = (UChar* )xmalloc(slen + term_len);\r
-  CHECK_NULL_RETURN(r);\r
-  xmemcpy(r, s, slen);\r
-\r
-  for (i = 0; i < term_len; i++)\r
-    r[slen + i] = (UChar )0;\r
-\r
-  return r;\r
-}\r
-#endif\r
-\r
-/* scan pattern methods */\r
-#define PEND_VALUE   0\r
-\r
-#define PFETCH_READY  UChar* pfetch_prev\r
-#define PEND         (p < end ?  0 : 1)\r
-#define PUNFETCH     p = pfetch_prev\r
-#define PINC       do { \\r
-  pfetch_prev = p; \\r
-  p += ONIGENC_MBC_ENC_LEN(enc, p); \\r
-} while (0)\r
-#define PFETCH(c)  do { \\r
-  c = ONIGENC_MBC_TO_CODE(enc, p, end); \\r
-  pfetch_prev = p; \\r
-  p += ONIGENC_MBC_ENC_LEN(enc, p); \\r
-} while (0)\r
-\r
-#define PINC_S     do { \\r
-  p += ONIGENC_MBC_ENC_LEN(enc, p); \\r
-} while (0)\r
-#define PFETCH_S(c) do { \\r
-  c = ONIGENC_MBC_TO_CODE(enc, p, end); \\r
-  p += ONIGENC_MBC_ENC_LEN(enc, p); \\r
-} while (0)\r
-\r
-#define PPEEK        (p < end ? ONIGENC_MBC_TO_CODE(enc, p, end) : PEND_VALUE)\r
-#define PPEEK_IS(c)  (PPEEK == (OnigCodePoint )c)\r
-\r
-static UChar*\r
-strcat_capa(UChar* dest, UChar* dest_end, const UChar* src, const UChar* src_end,\r
-             int capa, int oldCapa)\r
-{\r
-  UChar* r;\r
-\r
-  if (dest)\r
-    r = (UChar* )xrealloc(dest, capa + 1, oldCapa);\r
-  else\r
-    r = (UChar* )xmalloc(capa + 1);\r
-\r
-  CHECK_NULL_RETURN(r);\r
-  onig_strcpy(r + (dest_end - dest), src, src_end);\r
-  return r;\r
-}\r
-\r
-/* dest on static area */\r
-static UChar*\r
-strcat_capa_from_static(UChar* dest, UChar* dest_end,\r
-                       const UChar* src, const UChar* src_end, int capa)\r
-{\r
-  UChar* r;\r
-\r
-  r = (UChar* )xmalloc(capa + 1);\r
-  CHECK_NULL_RETURN(r);\r
-  onig_strcpy(r, dest, dest_end);\r
-  onig_strcpy(r + (dest_end - dest), src, src_end);\r
-  return r;\r
-}\r
-\r
-\r
-#ifdef USE_ST_LIBRARY\r
-\r
-typedef struct {\r
-  UChar* s;\r
-  UChar* end;\r
-} st_str_end_key;\r
-\r
-static int\r
-str_end_cmp(st_str_end_key* x, st_str_end_key* y)\r
-{\r
-  UChar *p, *q;\r
-  int c;\r
-\r
-  if ((x->end - x->s) != (y->end - y->s))\r
-    return 1;\r
-\r
-  p = x->s;\r
-  q = y->s;\r
-  while (p < x->end) {\r
-    c = (int )*p - (int )*q;\r
-    if (c != 0) return c;\r
-\r
-    p++; q++;\r
-  }\r
-\r
-  return 0;\r
-}\r
-\r
-static int\r
-str_end_hash(st_str_end_key* x)\r
-{\r
-  UChar *p;\r
-  int val = 0;\r
-\r
-  p = x->s;\r
-  while (p < x->end) {\r
-    val = val * 997 + (int )*p++;\r
-  }\r
-\r
-  return val + (val >> 5);\r
-}\r
-\r
-extern hash_table_type*\r
-onig_st_init_strend_table_with_size(int size)\r
-{\r
-  static struct st_hash_type hashType = {\r
-    str_end_cmp,\r
-    str_end_hash,\r
-  };\r
-\r
-  return (hash_table_type* )\r
-           onig_st_init_table_with_size(&hashType, size);\r
-}\r
-\r
-extern int\r
-onig_st_lookup_strend(hash_table_type* table, const UChar* str_key,\r
-                     const UChar* end_key, hash_data_type *value)\r
-{\r
-  st_str_end_key key;\r
-\r
-  key.s   = (UChar* )str_key;\r
-  key.end = (UChar* )end_key;\r
-\r
-  return onig_st_lookup(table, (st_data_t )(&key), value);\r
-}\r
-\r
-extern int\r
-onig_st_insert_strend(hash_table_type* table, const UChar* str_key,\r
-                     const UChar* end_key, hash_data_type value)\r
-{\r
-  st_str_end_key* key;\r
-  int result;\r
-\r
-  key = (st_str_end_key* )xmalloc(sizeof(st_str_end_key));\r
-  key->s   = (UChar* )str_key;\r
-  key->end = (UChar* )end_key;\r
-  result = onig_st_insert(table, (st_data_t )key, value);\r
-  if (result) {\r
-    xfree(key);\r
-  }\r
-  return result;\r
-}\r
-\r
-#endif /* USE_ST_LIBRARY */\r
-\r
-\r
-#ifdef USE_NAMED_GROUP\r
-\r
-#define INIT_NAME_BACKREFS_ALLOC_NUM   8\r
-\r
-typedef struct {\r
-  UChar* name;\r
-  int    name_len;   /* byte length */\r
-  int    back_num;   /* number of backrefs */\r
-  int    back_alloc;\r
-  int    back_ref1;\r
-  int*   back_refs;\r
-} NameEntry;\r
-\r
-#ifdef USE_ST_LIBRARY\r
-\r
-typedef st_table  NameTable;\r
-typedef st_data_t HashDataType;   /* 1.6 st.h doesn't define st_data_t type */\r
-\r
-#define NAMEBUF_SIZE    24\r
-#define NAMEBUF_SIZE_1  25\r
-\r
-#ifdef ONIG_DEBUG\r
-static int\r
-i_print_name_entry(UChar* key, NameEntry* e, void* arg)\r
-{\r
-  int i;\r
-  FILE* fp = (FILE* )arg;\r
-\r
-  fprintf(fp, "%s: ", e->name);\r
-  if (e->back_num == 0)\r
-    fputs("-", fp);\r
-  else if (e->back_num == 1)\r
-    fprintf(fp, "%d", e->back_ref1);\r
-  else {\r
-    for (i = 0; i < e->back_num; i++) {\r
-      if (i > 0) fprintf(fp, ", ");\r
-      fprintf(fp, "%d", e->back_refs[i]);\r
-    }\r
-  }\r
-  fputs("\n", fp);\r
-  return ST_CONTINUE;\r
-}\r
-\r
-extern int\r
-onig_print_names(FILE* fp, regex_t* reg)\r
-{\r
-  NameTable* t = (NameTable* )reg->name_table;\r
-\r
-  if (IS_NOT_NULL(t)) {\r
-    fprintf(fp, "name table\n");\r
-    onig_st_foreach(t, i_print_name_entry, (HashDataType )fp);\r
-    fputs("\n", fp);\r
-  }\r
-  return 0;\r
-}\r
-#endif /* ONIG_DEBUG */\r
-\r
-static int\r
-i_free_name_entry(UChar* key, NameEntry* e, void* arg ARG_UNUSED)\r
-{\r
-  xfree(e->name);\r
-  if (IS_NOT_NULL(e->back_refs)) xfree(e->back_refs);\r
-  xfree(key);\r
-  xfree(e);\r
-  return ST_DELETE;\r
-}\r
-\r
-static int\r
-names_clear(regex_t* reg)\r
-{\r
-  NameTable* t = (NameTable* )reg->name_table;\r
-\r
-  if (IS_NOT_NULL(t)) {\r
-    onig_st_foreach(t, i_free_name_entry, 0);\r
-  }\r
-  return 0;\r
-}\r
-\r
-extern int\r
-onig_names_free(regex_t* reg)\r
-{\r
-  int r;\r
-  NameTable* t;\r
-\r
-  r = names_clear(reg);\r
-  if (r) return r;\r
-\r
-  t = (NameTable* )reg->name_table;\r
-  if (IS_NOT_NULL(t)) onig_st_free_table(t);\r
-  reg->name_table = (void* )NULL;\r
-  return 0;\r
-}\r
-\r
-static NameEntry*\r
-name_find(regex_t* reg, const UChar* name, const UChar* name_end)\r
-{\r
-  NameEntry* e;\r
-  NameTable* t = (NameTable* )reg->name_table;\r
-\r
-  e = (NameEntry* )NULL;\r
-  if (IS_NOT_NULL(t)) {\r
-    onig_st_lookup_strend(t, name, name_end, (HashDataType* )((void* )(&e)));\r
-  }\r
-  return e;\r
-}\r
-\r
-typedef struct {\r
-  int (*func)(const UChar*, const UChar*,int,int*,regex_t*,void*);\r
-  regex_t* reg;\r
-  void* arg;\r
-  int ret;\r
-  OnigEncoding enc;\r
-} INamesArg;\r
-\r
-static int\r
-i_names(UChar* key ARG_UNUSED, NameEntry* e, INamesArg* arg)\r
-{\r
-  int r = (*(arg->func))(e->name,\r
-                         e->name + e->name_len,\r
-                         e->back_num,\r
-                        (e->back_num > 1 ? e->back_refs : &(e->back_ref1)),\r
-                        arg->reg, arg->arg);\r
-  if (r != 0) {\r
-    arg->ret = r;\r
-    return ST_STOP;\r
-  }\r
-  return ST_CONTINUE;\r
-}\r
-\r
-extern int\r
-onig_foreach_name(regex_t* reg,\r
-  int (*func)(const UChar*, const UChar*,int,int*,regex_t*,void*), void* arg)\r
-{\r
-  INamesArg narg;\r
-  NameTable* t = (NameTable* )reg->name_table;\r
-\r
-  narg.ret = 0;\r
-  if (IS_NOT_NULL(t)) {\r
-    narg.func = func;\r
-    narg.reg  = reg;\r
-    narg.arg  = arg;\r
-    narg.enc  = reg->enc; /* should be pattern encoding. */\r
-    onig_st_foreach(t, i_names, (HashDataType )&narg);\r
-  }\r
-  return narg.ret;\r
-}\r
-\r
-static int\r
-i_renumber_name(UChar* key ARG_UNUSED, NameEntry* e, GroupNumRemap* map)\r
-{\r
-  int i;\r
-\r
-  if (e->back_num > 1) {\r
-    for (i = 0; i < e->back_num; i++) {\r
-      e->back_refs[i] = map[e->back_refs[i]].new_val;\r
-    }\r
-  }\r
-  else if (e->back_num == 1) {\r
-    e->back_ref1 = map[e->back_ref1].new_val;\r
-  }\r
-\r
-  return ST_CONTINUE;\r
-}\r
-\r
-extern int\r
-onig_renumber_name_table(regex_t* reg, GroupNumRemap* map)\r
-{\r
-  NameTable* t = (NameTable* )reg->name_table;\r
-\r
-  if (IS_NOT_NULL(t)) {\r
-    onig_st_foreach(t, i_renumber_name, (HashDataType )map);\r
-  }\r
-  return 0;\r
-}\r
-\r
-\r
-extern int\r
-onig_number_of_names(regex_t* reg)\r
-{\r
-  NameTable* t = (NameTable* )reg->name_table;\r
-\r
-  if (IS_NOT_NULL(t))\r
-    return t->num_entries;\r
-  else\r
-    return 0;\r
-}\r
-\r
-#else  /* USE_ST_LIBRARY */\r
-\r
-#define INIT_NAMES_ALLOC_NUM    8\r
-\r
-typedef struct {\r
-  NameEntry* e;\r
-  int        num;\r
-  int        alloc;\r
-} NameTable;\r
-\r
-#ifdef ONIG_DEBUG\r
-extern int\r
-onig_print_names(FILE* fp, regex_t* reg)\r
-{\r
-  int i, j;\r
-  NameEntry* e;\r
-  NameTable* t = (NameTable* )reg->name_table;\r
-\r
-  if (IS_NOT_NULL(t) && t->num > 0) {\r
-    fprintf(fp, "name table\n");\r
-    for (i = 0; i < t->num; i++) {\r
-      e = &(t->e[i]);\r
-      fprintf(fp, "%s: ", e->name);\r
-      if (e->back_num == 0) {\r
-       fputs("-", fp);\r
-      }\r
-      else if (e->back_num == 1) {\r
-       fprintf(fp, "%d", e->back_ref1);\r
-      }\r
-      else {\r
-       for (j = 0; j < e->back_num; j++) {\r
-         if (j > 0) fprintf(fp, ", ");\r
-         fprintf(fp, "%d", e->back_refs[j]);\r
-       }\r
-      }\r
-      fputs("\n", fp);\r
-    }\r
-    fputs("\n", fp);\r
-  }\r
-  return 0;\r
-}\r
-#endif\r
-\r
-static int\r
-names_clear(regex_t* reg)\r
-{\r
-  int i;\r
-  NameEntry* e;\r
-  NameTable* t = (NameTable* )reg->name_table;\r
-\r
-  if (IS_NOT_NULL(t)) {\r
-    for (i = 0; i < t->num; i++) {\r
-      e = &(t->e[i]);\r
-      if (IS_NOT_NULL(e->name)) {\r
-       xfree(e->name);\r
-       e->name       = NULL;\r
-       e->name_len   = 0;\r
-       e->back_num   = 0;\r
-       e->back_alloc = 0;\r
-       if (IS_NOT_NULL(e->back_refs)) xfree(e->back_refs);\r
-       e->back_refs = (int* )NULL;\r
-      }\r
-    }\r
-    if (IS_NOT_NULL(t->e)) {\r
-      xfree(t->e);\r
-      t->e = NULL;\r
-    }\r
-    t->num = 0;\r
-  }\r
-  return 0;\r
-}\r
-\r
-extern int\r
-onig_names_free(regex_t* reg)\r
-{\r
-  int r;\r
-  NameTable* t;\r
-\r
-  r = names_clear(reg);\r
-  if (r) return r;\r
-\r
-  t = (NameTable* )reg->name_table;\r
-  if (IS_NOT_NULL(t)) xfree(t);\r
-  reg->name_table = NULL;\r
-  return 0;\r
-}\r
-\r
-static NameEntry*\r
-name_find(regex_t* reg, UChar* name, UChar* name_end)\r
-{\r
-  int i, len;\r
-  NameEntry* e;\r
-  NameTable* t = (NameTable* )reg->name_table;\r
-\r
-  if (IS_NOT_NULL(t)) {\r
-    len = name_end - name;\r
-    for (i = 0; i < t->num; i++) {\r
-      e = &(t->e[i]);\r
-      if (len == e->name_len && onig_strncmp(name, e->name, len) == 0)\r
-       return e;\r
-    }\r
-  }\r
-  return (NameEntry* )NULL;\r
-}\r
-\r
-extern int\r
-onig_foreach_name(regex_t* reg,\r
-  int (*func)(const UChar*, const UChar*,int,int*,regex_t*,void*), void* arg)\r
-{\r
-  int i, r;\r
-  NameEntry* e;\r
-  NameTable* t = (NameTable* )reg->name_table;\r
-\r
-  if (IS_NOT_NULL(t)) {\r
-    for (i = 0; i < t->num; i++) {\r
-      e = &(t->e[i]);\r
-      r = (*func)(e->name, e->name + e->name_len, e->back_num,\r
-                 (e->back_num > 1 ? e->back_refs : &(e->back_ref1)),\r
-                 reg, arg);\r
-      if (r != 0) return r;\r
-    }\r
-  }\r
-  return 0;\r
-}\r
-\r
-extern int\r
-onig_number_of_names(regex_t* reg)\r
-{\r
-  NameTable* t = (NameTable* )reg->name_table;\r
-\r
-  if (IS_NOT_NULL(t))\r
-    return t->num;\r
-  else\r
-    return 0;\r
-}\r
-\r
-#endif /* else USE_ST_LIBRARY */\r
-\r
-static int\r
-name_add(regex_t* reg, UChar* name, UChar* name_end, int backref, ScanEnv* env)\r
-{\r
-  int alloc;\r
-  NameEntry* e;\r
-  NameTable* t = (NameTable* )reg->name_table;\r
-\r
-  if (name_end - name <= 0)\r
-    return ONIGERR_EMPTY_GROUP_NAME;\r
-\r
-  e = name_find(reg, name, name_end);\r
-  if (IS_NULL(e)) {\r
-#ifdef USE_ST_LIBRARY\r
-    if (IS_NULL(t)) {\r
-      t = onig_st_init_strend_table_with_size(5);\r
-      reg->name_table = (void* )t;\r
-    }\r
-    e = (NameEntry* )xmalloc(sizeof(NameEntry));\r
-    CHECK_NULL_RETURN_MEMERR(e);\r
-\r
-    e->name = strdup_with_null(reg->enc, name, name_end);\r
-    if (IS_NULL(e->name)) {\r
-      xfree(e);  return ONIGERR_MEMORY;\r
-    }\r
-    onig_st_insert_strend(t, e->name, (e->name + (name_end - name)),\r
-                          (HashDataType )e);\r
-\r
-    e->name_len   = (int)(name_end - name);\r
-    e->back_num   = 0;\r
-    e->back_alloc = 0;\r
-    e->back_refs  = (int* )NULL;\r
-\r
-#else\r
-\r
-    if (IS_NULL(t)) {\r
-      alloc = INIT_NAMES_ALLOC_NUM;\r
-      t = (NameTable* )xmalloc(sizeof(NameTable));\r
-      CHECK_NULL_RETURN_MEMERR(t);\r
-      t->e     = NULL;\r
-      t->alloc = 0;\r
-      t->num   = 0;\r
-\r
-      t->e = (NameEntry* )xmalloc(sizeof(NameEntry) * alloc);\r
-      if (IS_NULL(t->e)) {\r
-       xfree(t);\r
-       return ONIGERR_MEMORY;\r
-      }\r
-      t->alloc = alloc;\r
-      reg->name_table = t;\r
-      goto clear;\r
-    }\r
-    else if (t->num == t->alloc) {\r
-      int i;\r
-\r
-      alloc = t->alloc * 2;\r
-      t->e = (NameEntry* )xrealloc(t->e, sizeof(NameEntry) * alloc);\r
-      CHECK_NULL_RETURN_MEMERR(t->e);\r
-      t->alloc = alloc;\r
-\r
-    clear:\r
-      for (i = t->num; i < t->alloc; i++) {\r
-       t->e[i].name       = NULL;\r
-       t->e[i].name_len   = 0;\r
-       t->e[i].back_num   = 0;\r
-       t->e[i].back_alloc = 0;\r
-       t->e[i].back_refs  = (int* )NULL;\r
-      }\r
-    }\r
-    e = &(t->e[t->num]);\r
-    t->num++;\r
-    e->name = strdup_with_null(reg->enc, name, name_end);\r
-    if (IS_NULL(e->name)) return ONIGERR_MEMORY;\r
-    e->name_len = name_end - name;\r
-#endif\r
-  }\r
-\r
-  if (e->back_num >= 1 &&\r
-      ! IS_SYNTAX_BV(env->syntax, ONIG_SYN_ALLOW_MULTIPLEX_DEFINITION_NAME)) {\r
-    onig_scan_env_set_error_string(env, ONIGERR_MULTIPLEX_DEFINED_NAME,\r
-                                   name, name_end);\r
-    return ONIGERR_MULTIPLEX_DEFINED_NAME;\r
-  }\r
-\r
-  e->back_num++;\r
-  if (e->back_num == 1) {\r
-    e->back_ref1 = backref;\r
-  }\r
-  else {\r
-    if (e->back_num == 2) {\r
-      alloc = INIT_NAME_BACKREFS_ALLOC_NUM;\r
-      e->back_refs = (int* )xmalloc(sizeof(int) * alloc);\r
-      CHECK_NULL_RETURN_MEMERR(e->back_refs);\r
-      e->back_alloc = alloc;\r
-      e->back_refs[0] = e->back_ref1;\r
-      e->back_refs[1] = backref;\r
-    }\r
-    else {\r
-      if (e->back_num > e->back_alloc) {\r
-       alloc = e->back_alloc * 2;\r
-       e->back_refs = (int* )xrealloc(e->back_refs, sizeof(int) * alloc, sizeof(int) * e->back_alloc);\r
-       CHECK_NULL_RETURN_MEMERR(e->back_refs);\r
-       e->back_alloc = alloc;\r
-      }\r
-      e->back_refs[e->back_num - 1] = backref;\r
-    }\r
-  }\r
-\r
-  return 0;\r
-}\r
-\r
-extern int\r
-onig_name_to_group_numbers(regex_t* reg, const UChar* name,\r
-                          const UChar* name_end, int** nums)\r
-{\r
-  NameEntry* e = name_find(reg, name, name_end);\r
-\r
-  if (IS_NULL(e)) return ONIGERR_UNDEFINED_NAME_REFERENCE;\r
-\r
-  switch (e->back_num) {\r
-  case 0:\r
-    break;\r
-  case 1:\r
-    *nums = &(e->back_ref1);\r
-    break;\r
-  default:\r
-    *nums = e->back_refs;\r
-    break;\r
-  }\r
-  return e->back_num;\r
-}\r
-\r
-extern int\r
-onig_name_to_backref_number(regex_t* reg, const UChar* name,\r
-                           const UChar* name_end, OnigRegion *region)\r
-{\r
-  int i, n, *nums;\r
-\r
-  n = onig_name_to_group_numbers(reg, name, name_end, &nums);\r
-  if (n < 0)\r
-    return n;\r
-  else if (n == 0)\r
-    return ONIGERR_PARSER_BUG;\r
-  else if (n == 1)\r
-    return nums[0];\r
-  else {\r
-    if (IS_NOT_NULL(region)) {\r
-      for (i = n - 1; i >= 0; i--) {\r
-       if (region->beg[nums[i]] != ONIG_REGION_NOTPOS)\r
-         return nums[i];\r
-      }\r
-    }\r
-    return nums[n - 1];\r
-  }\r
-}\r
-\r
-#else /* USE_NAMED_GROUP */\r
-\r
-extern int\r
-onig_name_to_group_numbers(regex_t* reg, const UChar* name,\r
-                          const UChar* name_end, int** nums)\r
-{\r
-  return ONIG_NO_SUPPORT_CONFIG;\r
-}\r
-\r
-extern int\r
-onig_name_to_backref_number(regex_t* reg, const UChar* name,\r
-                           const UChar* name_end, OnigRegion* region)\r
-{\r
-  return ONIG_NO_SUPPORT_CONFIG;\r
-}\r
-\r
-extern int\r
-onig_foreach_name(regex_t* reg,\r
-  int (*func)(const UChar*, const UChar*,int,int*,regex_t*,void*), void* arg)\r
-{\r
-  return ONIG_NO_SUPPORT_CONFIG;\r
-}\r
-\r
-extern int\r
-onig_number_of_names(regex_t* reg)\r
-{\r
-  return 0;\r
-}\r
-#endif /* else USE_NAMED_GROUP */\r
-\r
-extern int\r
-onig_noname_group_capture_is_active(regex_t* reg)\r
-{\r
-  if (ONIG_IS_OPTION_ON(reg->options, ONIG_OPTION_DONT_CAPTURE_GROUP))\r
-    return 0;\r
-\r
-#ifdef USE_NAMED_GROUP\r
-  if (onig_number_of_names(reg) > 0 &&\r
-      IS_SYNTAX_BV(reg->syntax, ONIG_SYN_CAPTURE_ONLY_NAMED_GROUP) &&\r
-      !ONIG_IS_OPTION_ON(reg->options, ONIG_OPTION_CAPTURE_GROUP)) {\r
-    return 0;\r
-  }\r
-#endif\r
-\r
-  return 1;\r
-}\r
-\r
-\r
-#define INIT_SCANENV_MEMNODES_ALLOC_SIZE   16\r
-\r
-static void\r
-scan_env_clear(ScanEnv* env)\r
-{\r
-  int i;\r
-\r
-  BIT_STATUS_CLEAR(env->capture_history);\r
-  BIT_STATUS_CLEAR(env->bt_mem_start);\r
-  BIT_STATUS_CLEAR(env->bt_mem_end);\r
-  BIT_STATUS_CLEAR(env->backrefed_mem);\r
-  env->error      = (UChar* )NULL;\r
-  env->error_end  = (UChar* )NULL;\r
-  env->num_call   = 0;\r
-  env->num_mem    = 0;\r
-#ifdef USE_NAMED_GROUP\r
-  env->num_named  = 0;\r
-#endif\r
-  env->mem_alloc         = 0;\r
-  env->mem_nodes_dynamic = (Node** )NULL;\r
-\r
-  for (i = 0; i < SCANENV_MEMNODES_SIZE; i++)\r
-    env->mem_nodes_static[i] = NULL_NODE;\r
-\r
-#ifdef USE_COMBINATION_EXPLOSION_CHECK\r
-  env->num_comb_exp_check  = 0;\r
-  env->comb_exp_max_regnum = 0;\r
-  env->curr_max_regnum     = 0;\r
-  env->has_recursion       = 0;\r
-#endif\r
-}\r
-\r
-static int\r
-scan_env_add_mem_entry(ScanEnv* env)\r
-{\r
-  int i, need, alloc;\r
-  Node** p;\r
-\r
-  need = env->num_mem + 1;\r
-  if (need >= SCANENV_MEMNODES_SIZE) {\r
-    if (env->mem_alloc <= need) {\r
-      if (IS_NULL(env->mem_nodes_dynamic)) {\r
-       alloc = INIT_SCANENV_MEMNODES_ALLOC_SIZE;\r
-       p = (Node** )xmalloc(sizeof(Node*) * alloc);\r
-       xmemcpy(p, env->mem_nodes_static,\r
-               sizeof(Node*) * SCANENV_MEMNODES_SIZE);\r
-      }\r
-      else {\r
-       alloc = env->mem_alloc * 2;\r
-       p = (Node** )xrealloc(env->mem_nodes_dynamic, sizeof(Node*) * alloc, sizeof(Node*) * env->mem_alloc);\r
-      }\r
-      CHECK_NULL_RETURN_MEMERR(p);\r
-\r
-      for (i = env->num_mem + 1; i < alloc; i++)\r
-       p[i] = NULL_NODE;\r
-\r
-      env->mem_nodes_dynamic = p;\r
-      env->mem_alloc = alloc;\r
-    }\r
-  }\r
-\r
-  env->num_mem++;\r
-  return env->num_mem;\r
-}\r
-\r
-static int\r
-scan_env_set_mem_node(ScanEnv* env, int num, Node* node)\r
-{\r
-  if (env->num_mem >= num)\r
-    SCANENV_MEM_NODES(env)[num] = node;\r
-  else\r
-    return ONIGERR_PARSER_BUG;\r
-  return 0;\r
-}\r
-\r
-\r
-#ifdef USE_PARSE_TREE_NODE_RECYCLE\r
-typedef struct _FreeNode {\r
-  struct _FreeNode* next;\r
-} FreeNode;\r
-\r
-static FreeNode* FreeNodeList = (FreeNode* )NULL;\r
-#endif\r
-\r
-extern void\r
-onig_node_free(Node* node)\r
-{\r
- start:\r
-  if (IS_NULL(node)) return ;\r
-\r
-  switch (NTYPE(node)) {\r
-  case NT_STR:\r
-    if (NSTR(node)->capa != 0 &&\r
-       IS_NOT_NULL(NSTR(node)->s) && NSTR(node)->s != NSTR(node)->buf) {\r
-      xfree(NSTR(node)->s);\r
-    }\r
-    break;\r
-\r
-  case NT_LIST:\r
-  case NT_ALT:\r
-    onig_node_free(NCAR(node));\r
-    {\r
-      Node* next_node = NCDR(node);\r
-\r
-#ifdef USE_PARSE_TREE_NODE_RECYCLE\r
-      {\r
-       FreeNode* n = (FreeNode* )node;\r
-\r
-        THREAD_ATOMIC_START;\r
-       n->next = FreeNodeList;\r
-       FreeNodeList = n;\r
-        THREAD_ATOMIC_END;\r
-      }\r
-#else\r
-      xfree(node);\r
-#endif\r
-      node = next_node;\r
-      goto start;\r
-    }\r
-    break;\r
-\r
-  case NT_CCLASS:\r
-    {\r
-      CClassNode* cc = NCCLASS(node);\r
-\r
-      if (IS_NCCLASS_SHARE(cc)) return ;\r
-      if (cc->mbuf)\r
-        bbuf_free(cc->mbuf);\r
-    }\r
-    break;\r
-\r
-  case NT_QTFR:\r
-    if (NQTFR(node)->target)\r
-      onig_node_free(NQTFR(node)->target);\r
-    break;\r
-\r
-  case NT_ENCLOSE:\r
-    if (NENCLOSE(node)->target)\r
-      onig_node_free(NENCLOSE(node)->target);\r
-    break;\r
-\r
-  case NT_BREF:\r
-    if (IS_NOT_NULL(NBREF(node)->back_dynamic))\r
-      xfree(NBREF(node)->back_dynamic);\r
-    break;\r
-\r
-  case NT_ANCHOR:\r
-    if (NANCHOR(node)->target)\r
-      onig_node_free(NANCHOR(node)->target);\r
-    break;\r
-  }\r
-\r
-#ifdef USE_PARSE_TREE_NODE_RECYCLE\r
-  {\r
-    FreeNode* n = (FreeNode* )node;\r
-\r
-    THREAD_ATOMIC_START;\r
-    n->next = FreeNodeList;\r
-    FreeNodeList = n;\r
-    THREAD_ATOMIC_END;\r
-  }\r
-#else\r
-  xfree(node);\r
-#endif\r
-}\r
-\r
-#ifdef USE_PARSE_TREE_NODE_RECYCLE\r
-extern int\r
-onig_free_node_list(void)\r
-{\r
-  FreeNode* n;\r
-\r
-  /* THREAD_ATOMIC_START; */\r
-  while (IS_NOT_NULL(FreeNodeList)) {\r
-    n = FreeNodeList;\r
-    FreeNodeList = FreeNodeList->next;\r
-    xfree(n);\r
-  }\r
-  /* THREAD_ATOMIC_END; */\r
-  return 0;\r
-}\r
-#endif\r
-\r
-static Node*\r
-node_new(void)\r
-{\r
-  Node* node;\r
-\r
-#ifdef USE_PARSE_TREE_NODE_RECYCLE\r
-  THREAD_ATOMIC_START;\r
-  if (IS_NOT_NULL(FreeNodeList)) {\r
-    node = (Node* )FreeNodeList;\r
-    FreeNodeList = FreeNodeList->next;\r
-    THREAD_ATOMIC_END;\r
-    return node;\r
-  }\r
-  THREAD_ATOMIC_END;\r
-#endif\r
-\r
-  node = (Node* )xmalloc(sizeof(Node));\r
-  /* xmemset(node, 0, sizeof(Node)); */\r
-  return node;\r
-}\r
-\r
-\r
-static void\r
-initialize_cclass(CClassNode* cc)\r
-{\r
-  BITSET_CLEAR(cc->bs);\r
-  /* cc->base.flags = 0; */\r
-  cc->flags = 0;\r
-  cc->mbuf  = NULL;\r
-}\r
-\r
-static Node*\r
-node_new_cclass(void)\r
-{\r
-  Node* node = node_new();\r
-  CHECK_NULL_RETURN(node);\r
-\r
-  SET_NTYPE(node, NT_CCLASS);\r
-  initialize_cclass(NCCLASS(node));\r
-  return node;\r
-}\r
-\r
-static Node*\r
-node_new_cclass_by_codepoint_range(int not, OnigCodePoint sb_out,\r
-                                  const OnigCodePoint ranges[])\r
-{\r
-  int n, i;\r
-  CClassNode* cc;\r
-  OnigCodePoint j;\r
-\r
-  Node* node = node_new_cclass();\r
-  CHECK_NULL_RETURN(node);\r
-\r
-  cc = NCCLASS(node);\r
-  if (not != 0) NCCLASS_SET_NOT(cc);\r
-\r
-  BITSET_CLEAR(cc->bs);\r
-  if (sb_out > 0 && IS_NOT_NULL(ranges)) {\r
-    n = ONIGENC_CODE_RANGE_NUM(ranges);\r
-    for (i = 0; i < n; i++) {\r
-      for (j  = ONIGENC_CODE_RANGE_FROM(ranges, i);\r
-           j <= (OnigCodePoint )ONIGENC_CODE_RANGE_TO(ranges, i); j++) {\r
-       if (j >= sb_out) goto sb_end;\r
-\r
-        BITSET_SET_BIT(cc->bs, j);\r
-      }\r
-    }\r
-  }\r
-\r
- sb_end:\r
-  if (IS_NULL(ranges)) {\r
-  is_null:\r
-    cc->mbuf = NULL;\r
-  }\r
-  else {\r
-    BBuf* bbuf;\r
-\r
-    n = ONIGENC_CODE_RANGE_NUM(ranges);\r
-    if (n == 0) goto is_null;\r
-\r
-    bbuf = (BBuf* )xmalloc(sizeof(BBuf));\r
-    CHECK_NULL_RETURN(bbuf);\r
-    bbuf->alloc = n + 1;\r
-    bbuf->used  = n + 1;\r
-    bbuf->p     = (UChar* )((void* )ranges);\r
-\r
-    cc->mbuf = bbuf;\r
-  }\r
-\r
-  return node;\r
-}\r
-\r
-static Node*\r
-node_new_ctype(int type, int not)\r
-{\r
-  Node* node = node_new();\r
-  CHECK_NULL_RETURN(node);\r
-\r
-  SET_NTYPE(node, NT_CTYPE);\r
-  NCTYPE(node)->ctype = type;\r
-  NCTYPE(node)->not   = not;\r
-  return node;\r
-}\r
-\r
-static Node*\r
-node_new_anychar(void)\r
-{\r
-  Node* node = node_new();\r
-  CHECK_NULL_RETURN(node);\r
-\r
-  SET_NTYPE(node, NT_CANY);\r
-  return node;\r
-}\r
-\r
-static Node*\r
-node_new_list(Node* left, Node* right)\r
-{\r
-  Node* node = node_new();\r
-  CHECK_NULL_RETURN(node);\r
-\r
-  SET_NTYPE(node, NT_LIST);\r
-  NCAR(node)  = left;\r
-  NCDR(node) = right;\r
-  return node;\r
-}\r
-\r
-extern Node*\r
-onig_node_new_list(Node* left, Node* right)\r
-{\r
-  return node_new_list(left, right);\r
-}\r
-\r
-extern Node*\r
-onig_node_list_add(Node* list, Node* x)\r
-{\r
-  Node *n;\r
-\r
-  n = onig_node_new_list(x, NULL);\r
-  if (IS_NULL(n)) return NULL_NODE;\r
-\r
-  if (IS_NOT_NULL(list)) {\r
-    while (IS_NOT_NULL(NCDR(list)))\r
-      list = NCDR(list);\r
-\r
-    NCDR(list) = n;\r
-  }\r
-\r
-  return n;\r
-}\r
-\r
-extern Node*\r
-onig_node_new_alt(Node* left, Node* right)\r
-{\r
-  Node* node = node_new();\r
-  CHECK_NULL_RETURN(node);\r
-\r
-  SET_NTYPE(node, NT_ALT);\r
-  NCAR(node)  = left;\r
-  NCDR(node) = right;\r
-  return node;\r
-}\r
-\r
-extern Node*\r
-onig_node_new_anchor(int type)\r
-{\r
-  Node* node = node_new();\r
-  CHECK_NULL_RETURN(node);\r
-\r
-  SET_NTYPE(node, NT_ANCHOR);\r
-  NANCHOR(node)->type     = type;\r
-  NANCHOR(node)->target   = NULL;\r
-  NANCHOR(node)->char_len = -1;\r
-  return node;\r
-}\r
-\r
-static Node*\r
-node_new_backref(int back_num, int* backrefs, int by_name,\r
-#ifdef USE_BACKREF_WITH_LEVEL\r
-                int exist_level, int nest_level,\r
-#endif\r
-                ScanEnv* env)\r
-{\r
-  int i;\r
-  Node* node = node_new();\r
-\r
-  CHECK_NULL_RETURN(node);\r
-\r
-  SET_NTYPE(node, NT_BREF);\r
-  NBREF(node)->state    = 0;\r
-  NBREF(node)->back_num = back_num;\r
-  NBREF(node)->back_dynamic = (int* )NULL;\r
-  if (by_name != 0)\r
-    NBREF(node)->state |= NST_NAME_REF;\r
-\r
-#ifdef USE_BACKREF_WITH_LEVEL\r
-  if (exist_level != 0) {\r
-    NBREF(node)->state |= NST_NEST_LEVEL;\r
-    NBREF(node)->nest_level  = nest_level;\r
-  }\r
-#endif\r
-\r
-  for (i = 0; i < back_num; i++) {\r
-    if (backrefs[i] <= env->num_mem &&\r
-       IS_NULL(SCANENV_MEM_NODES(env)[backrefs[i]])) {\r
-      NBREF(node)->state |= NST_RECURSION;   /* /...(\1).../ */\r
-      break;\r
-    }\r
-  }\r
-\r
-  if (back_num <= NODE_BACKREFS_SIZE) {\r
-    for (i = 0; i < back_num; i++)\r
-      NBREF(node)->back_static[i] = backrefs[i];\r
-  }\r
-  else {\r
-    int* p = (int* )xmalloc(sizeof(int) * back_num);\r
-    if (IS_NULL(p)) {\r
-      onig_node_free(node);\r
-      return NULL;\r
-    }\r
-    NBREF(node)->back_dynamic = p;\r
-    for (i = 0; i < back_num; i++)\r
-      p[i] = backrefs[i];\r
-  }\r
-  return node;\r
-}\r
-\r
-#ifdef USE_SUBEXP_CALL\r
-static Node*\r
-node_new_call(UChar* name, UChar* name_end, int gnum)\r
-{\r
-  Node* node = node_new();\r
-  CHECK_NULL_RETURN(node);\r
-\r
-  SET_NTYPE(node, NT_CALL);\r
-  NCALL(node)->state     = 0;\r
-  NCALL(node)->target    = NULL_NODE;\r
-  NCALL(node)->name      = name;\r
-  NCALL(node)->name_end  = name_end;\r
-  NCALL(node)->group_num = gnum;  /* call by number if gnum != 0 */\r
-  return node;\r
-}\r
-#endif\r
-\r
-static Node*\r
-node_new_quantifier(int lower, int upper, int by_number)\r
-{\r
-  Node* node = node_new();\r
-  CHECK_NULL_RETURN(node);\r
-\r
-  SET_NTYPE(node, NT_QTFR);\r
-  NQTFR(node)->state  = 0;\r
-  NQTFR(node)->target = NULL;\r
-  NQTFR(node)->lower  = lower;\r
-  NQTFR(node)->upper  = upper;\r
-  NQTFR(node)->greedy = 1;\r
-  NQTFR(node)->target_empty_info = NQ_TARGET_ISNOT_EMPTY;\r
-  NQTFR(node)->head_exact        = NULL_NODE;\r
-  NQTFR(node)->next_head_exact   = NULL_NODE;\r
-  NQTFR(node)->is_refered        = 0;\r
-  if (by_number != 0)\r
-    NQTFR(node)->state |= NST_BY_NUMBER;\r
-\r
-#ifdef USE_COMBINATION_EXPLOSION_CHECK\r
-  NQTFR(node)->comb_exp_check_num = 0;\r
-#endif\r
-\r
-  return node;\r
-}\r
-\r
-static Node*\r
-node_new_enclose(int type)\r
-{\r
-  Node* node = node_new();\r
-  CHECK_NULL_RETURN(node);\r
-\r
-  SET_NTYPE(node, NT_ENCLOSE);\r
-  NENCLOSE(node)->type      = type;\r
-  NENCLOSE(node)->state     =  0;\r
-  NENCLOSE(node)->regnum    =  0;\r
-  NENCLOSE(node)->option    =  0;\r
-  NENCLOSE(node)->target    = NULL;\r
-  NENCLOSE(node)->call_addr = -1;\r
-  NENCLOSE(node)->opt_count =  0;\r
-  return node;\r
-}\r
-\r
-extern Node*\r
-onig_node_new_enclose(int type)\r
-{\r
-  return node_new_enclose(type);\r
-}\r
-\r
-static Node*\r
-node_new_enclose_memory(OnigOptionType option, int is_named)\r
-{\r
-  Node* node = node_new_enclose(ENCLOSE_MEMORY);\r
-  CHECK_NULL_RETURN(node);\r
-  if (is_named != 0)\r
-    SET_ENCLOSE_STATUS(node, NST_NAMED_GROUP);\r
-\r
-#ifdef USE_SUBEXP_CALL\r
-  NENCLOSE(node)->option = option;\r
-#endif\r
-  return node;\r
-}\r
-\r
-static Node*\r
-node_new_option(OnigOptionType option)\r
-{\r
-  Node* node = node_new_enclose(ENCLOSE_OPTION);\r
-  CHECK_NULL_RETURN(node);\r
-  NENCLOSE(node)->option = option;\r
-  return node;\r
-}\r
-\r
-extern int\r
-onig_node_str_cat(Node* node, const UChar* s, const UChar* end)\r
-{\r
-  int addlen = (int)(end - s);\r
-\r
-  if (addlen > 0) {\r
-    int len  = (int)(NSTR(node)->end - NSTR(node)->s);\r
-\r
-    if (NSTR(node)->capa > 0 || (len + addlen > NODE_STR_BUF_SIZE - 1)) {\r
-      UChar* p;\r
-      int capa = len + addlen + NODE_STR_MARGIN;\r
-\r
-      if (capa <= NSTR(node)->capa) {\r
-       onig_strcpy(NSTR(node)->s + len, s, end);\r
-      }\r
-      else {\r
-       if (NSTR(node)->s == NSTR(node)->buf)\r
-         p = strcat_capa_from_static(NSTR(node)->s, NSTR(node)->end,\r
-                                     s, end, capa);\r
-       else\r
-         p = strcat_capa(NSTR(node)->s, NSTR(node)->end, s, end, capa, NSTR(node)->capa);\r
-\r
-       CHECK_NULL_RETURN_MEMERR(p);\r
-       NSTR(node)->s    = p;\r
-       NSTR(node)->capa = capa;\r
-      }\r
-    }\r
-    else {\r
-      onig_strcpy(NSTR(node)->s + len, s, end);\r
-    }\r
-    NSTR(node)->end = NSTR(node)->s + len + addlen;\r
-  }\r
-\r
-  return 0;\r
-}\r
-\r
-extern int\r
-onig_node_str_set(Node* node, const UChar* s, const UChar* end)\r
-{\r
-  onig_node_str_clear(node);\r
-  return onig_node_str_cat(node, s, end);\r
-}\r
-\r
-static int\r
-node_str_cat_char(Node* node, UChar c)\r
-{\r
-  UChar s[1];\r
-\r
-  s[0] = c;\r
-  return onig_node_str_cat(node, s, s + 1);\r
-}\r
-\r
-extern void\r
-onig_node_conv_to_str_node(Node* node, int flag)\r
-{\r
-  SET_NTYPE(node, NT_STR);\r
-  NSTR(node)->flag = flag;\r
-  NSTR(node)->capa = 0;\r
-  NSTR(node)->s    = NSTR(node)->buf;\r
-  NSTR(node)->end  = NSTR(node)->buf;\r
-}\r
-\r
-extern void\r
-onig_node_str_clear(Node* node)\r
-{\r
-  if (NSTR(node)->capa != 0 &&\r
-      IS_NOT_NULL(NSTR(node)->s) && NSTR(node)->s != NSTR(node)->buf) {\r
-    xfree(NSTR(node)->s);\r
-  }\r
-\r
-  NSTR(node)->capa = 0;\r
-  NSTR(node)->flag = 0;\r
-  NSTR(node)->s    = NSTR(node)->buf;\r
-  NSTR(node)->end  = NSTR(node)->buf;\r
-}\r
-\r
-static Node*\r
-node_new_str(const UChar* s, const UChar* end)\r
-{\r
-  Node* node = node_new();\r
-  CHECK_NULL_RETURN(node);\r
-\r
-  SET_NTYPE(node, NT_STR);\r
-  NSTR(node)->capa = 0;\r
-  NSTR(node)->flag = 0;\r
-  NSTR(node)->s    = NSTR(node)->buf;\r
-  NSTR(node)->end  = NSTR(node)->buf;\r
-  if (onig_node_str_cat(node, s, end)) {\r
-    onig_node_free(node);\r
-    return NULL;\r
-  }\r
-  return node;\r
-}\r
-\r
-extern Node*\r
-onig_node_new_str(const UChar* s, const UChar* end)\r
-{\r
-  return node_new_str(s, end);\r
-}\r
-\r
-static Node*\r
-node_new_str_raw(UChar* s, UChar* end)\r
-{\r
-  Node* node = node_new_str(s, end);\r
-  NSTRING_SET_RAW(node);\r
-  return node;\r
-}\r
-\r
-static Node*\r
-node_new_empty(void)\r
-{\r
-  return node_new_str(NULL, NULL);\r
-}\r
-\r
-static Node*\r
-node_new_str_raw_char(UChar c)\r
-{\r
-  UChar p[1];\r
-\r
-  p[0] = c;\r
-  return node_new_str_raw(p, p + 1);\r
-}\r
-\r
-static Node*\r
-str_node_split_last_char(StrNode* sn, OnigEncoding enc)\r
-{\r
-  const UChar *p;\r
-  Node* n = NULL_NODE;\r
-\r
-  if (sn->end > sn->s) {\r
-    p = onigenc_get_prev_char_head(enc, sn->s, sn->end);\r
-    if (p && p > sn->s) { /* can be splitted. */\r
-      n = node_new_str(p, sn->end);\r
-      if ((sn->flag & NSTR_RAW) != 0)\r
-       NSTRING_SET_RAW(n);\r
-      sn->end = (UChar* )p;\r
-    }\r
-  }\r
-  return n;\r
-}\r
-\r
-static int\r
-str_node_can_be_split(StrNode* sn, OnigEncoding enc)\r
-{\r
-  if (sn->end > sn->s) {\r
-    return ((enclen(enc, sn->s) < sn->end - sn->s)  ?  1 : 0);\r
-  }\r
-  return 0;\r
-}\r
-\r
-#ifdef USE_PAD_TO_SHORT_BYTE_CHAR\r
-static int\r
-node_str_head_pad(StrNode* sn, int num, UChar val)\r
-{\r
-  UChar buf[NODE_STR_BUF_SIZE];\r
-  int i, len;\r
-\r
-  len = sn->end - sn->s;\r
-  onig_strcpy(buf, sn->s, sn->end);\r
-  onig_strcpy(&(sn->s[num]), buf, buf + len);\r
-  sn->end += num;\r
-\r
-  for (i = 0; i < num; i++) {\r
-    sn->s[i] = val;\r
-  }\r
-}\r
-#endif\r
-\r
-extern int\r
-onig_scan_unsigned_number(UChar** src, const UChar* end, OnigEncoding enc)\r
-{\r
-  unsigned int num, val;\r
-  OnigCodePoint c;\r
-  UChar* p = *src;\r
-  PFETCH_READY;\r
-\r
-  num = 0;\r
-  while (!PEND) {\r
-    PFETCH(c);\r
-    if (ONIGENC_IS_CODE_DIGIT(enc, c)) {\r
-      val = (unsigned int )DIGITVAL(c);\r
-      if ((INT_MAX_LIMIT - val) / 10UL < num)\r
-       return -1;  /* overflow */\r
-\r
-      num = num * 10 + val;\r
-    }\r
-    else {\r
-      PUNFETCH;\r
-      break;\r
-    }\r
-  }\r
-  *src = p;\r
-  return num;\r
-}\r
-\r
-static int\r
-scan_unsigned_hexadecimal_number(UChar** src, UChar* end, int maxlen,\r
-                                OnigEncoding enc)\r
-{\r
-  OnigCodePoint c;\r
-  unsigned int num, val;\r
-  UChar* p = *src;\r
-  PFETCH_READY;\r
-\r
-  num = 0;\r
-  while (!PEND && maxlen-- != 0) {\r
-    PFETCH(c);\r
-    if (ONIGENC_IS_CODE_XDIGIT(enc, c)) {\r
-      val = (unsigned int )XDIGITVAL(enc,c);\r
-      if ((INT_MAX_LIMIT - val) / 16UL < num)\r
-       return -1;  /* overflow */\r
-\r
-      num = (num << 4) + XDIGITVAL(enc,c);\r
-    }\r
-    else {\r
-      PUNFETCH;\r
-      break;\r
-    }\r
-  }\r
-  *src = p;\r
-  return num;\r
-}\r
-\r
-static int\r
-scan_unsigned_octal_number(UChar** src, UChar* end, int maxlen,\r
-                          OnigEncoding enc)\r
-{\r
-  OnigCodePoint c;\r
-  unsigned int num, val;\r
-  UChar* p = *src;\r
-  PFETCH_READY;\r
-\r
-  num = 0;\r
-  while (!PEND && maxlen-- != 0) {\r
-    PFETCH(c);\r
-    if (ONIGENC_IS_CODE_DIGIT(enc, c) && c < '8') {\r
-      val = ODIGITVAL(c);\r
-      if ((INT_MAX_LIMIT - val) / 8UL < num)\r
-       return -1;  /* overflow */\r
-\r
-      num = (num << 3) + val;\r
-    }\r
-    else {\r
-      PUNFETCH;\r
-      break;\r
-    }\r
-  }\r
-  *src = p;\r
-  return num;\r
-}\r
-\r
-\r
-#define BBUF_WRITE_CODE_POINT(bbuf,pos,code) \\r
-    BBUF_WRITE(bbuf, pos, &(code), SIZE_CODE_POINT)\r
-\r
-/* data format:\r
-     [n][from-1][to-1][from-2][to-2] ... [from-n][to-n]\r
-     (all data size is OnigCodePoint)\r
- */\r
-static int\r
-new_code_range(BBuf** pbuf)\r
-{\r
-#define INIT_MULTI_BYTE_RANGE_SIZE  (SIZE_CODE_POINT * 5)\r
-  int r;\r
-  OnigCodePoint n;\r
-  BBuf* bbuf;\r
-\r
-  bbuf = *pbuf = (BBuf* )xmalloc(sizeof(BBuf));\r
-  CHECK_NULL_RETURN_MEMERR(*pbuf);\r
-  r = BBUF_INIT(*pbuf, INIT_MULTI_BYTE_RANGE_SIZE);\r
-  if (r) return r;\r
-\r
-  n = 0;\r
-  BBUF_WRITE_CODE_POINT(bbuf, 0, n);\r
-  return 0;\r
-}\r
-\r
-static int\r
-add_code_range_to_buf(BBuf** pbuf, OnigCodePoint from, OnigCodePoint to)\r
-{\r
-  int r, inc_n, pos;\r
-  int low, high, bound, x;\r
-  OnigCodePoint n, *data;\r
-  BBuf* bbuf;\r
-\r
-  if (from > to) {\r
-    n = from; from = to; to = n;\r
-  }\r
-\r
-  if (IS_NULL(*pbuf)) {\r
-    r = new_code_range(pbuf);\r
-    if (r) return r;\r
-    bbuf = *pbuf;\r
-    n = 0;\r
-  }\r
-  else {\r
-    bbuf = *pbuf;\r
-    GET_CODE_POINT(n, bbuf->p);\r
-  }\r
-  data = (OnigCodePoint* )(bbuf->p);\r
-  data++;\r
-\r
-  for (low = 0, bound = n; low < bound; ) {\r
-    x = (low + bound) >> 1;\r
-    if (from > data[x*2 + 1])\r
-      low = x + 1;\r
-    else\r
-      bound = x;\r
-  }\r
-\r
-  for (high = low, bound = n; high < bound; ) {\r
-    x = (high + bound) >> 1;\r
-    if (to >= data[x*2] - 1)\r
-      high = x + 1;\r
-    else\r
-      bound = x;\r
-  }\r
-\r
-  inc_n = low + 1 - high;\r
-  if (n + inc_n > ONIG_MAX_MULTI_BYTE_RANGES_NUM)\r
-    return ONIGERR_TOO_MANY_MULTI_BYTE_RANGES;\r
-\r
-  if (inc_n != 1) {\r
-    if (from > data[low*2])\r
-      from = data[low*2];\r
-    if (to < data[(high - 1)*2 + 1])\r
-      to = data[(high - 1)*2 + 1];\r
-  }\r
-\r
-  if (inc_n != 0 && (OnigCodePoint )high < n) {\r
-    int from_pos = SIZE_CODE_POINT * (1 + high * 2);\r
-    int to_pos   = SIZE_CODE_POINT * (1 + (low + 1) * 2);\r
-    int size = (n - high) * 2 * SIZE_CODE_POINT;\r
-\r
-    if (inc_n > 0) {\r
-      BBUF_MOVE_RIGHT(bbuf, from_pos, to_pos, size);\r
-    }\r
-    else {\r
-      BBUF_MOVE_LEFT_REDUCE(bbuf, from_pos, to_pos);\r
-    }\r
-  }\r
-\r
-  pos = SIZE_CODE_POINT * (1 + low * 2);\r
-  BBUF_ENSURE_SIZE(bbuf, pos + SIZE_CODE_POINT * 2);\r
-  BBUF_WRITE_CODE_POINT(bbuf, pos, from);\r
-  BBUF_WRITE_CODE_POINT(bbuf, pos + SIZE_CODE_POINT, to);\r
-  n += inc_n;\r
-  BBUF_WRITE_CODE_POINT(bbuf, 0, n);\r
-\r
-  return 0;\r
-}\r
-\r
-static int\r
-add_code_range(BBuf** pbuf, ScanEnv* env, OnigCodePoint from, OnigCodePoint to)\r
-{\r
-  if (from > to) {\r
-    if (IS_SYNTAX_BV(env->syntax, ONIG_SYN_ALLOW_EMPTY_RANGE_IN_CC))\r
-      return 0;\r
-    else\r
-      return ONIGERR_EMPTY_RANGE_IN_CHAR_CLASS;\r
-  }\r
-\r
-  return add_code_range_to_buf(pbuf, from, to);\r
-}\r
-\r
-static int\r
-not_code_range_buf(OnigEncoding enc, BBuf* bbuf, BBuf** pbuf)\r
-{\r
-  int r, i, n;\r
-  OnigCodePoint pre, from, *data, to = 0;\r
-\r
-  *pbuf = (BBuf* )NULL;\r
-  if (IS_NULL(bbuf)) {\r
-  set_all:\r
-    return SET_ALL_MULTI_BYTE_RANGE(enc, pbuf);\r
-  }\r
-\r
-  data = (OnigCodePoint* )(bbuf->p);\r
-  GET_CODE_POINT(n, data);\r
-  data++;\r
-  if (n <= 0) goto set_all;\r
-\r
-  r = 0;\r
-  pre = MBCODE_START_POS(enc);\r
-  for (i = 0; i < n; i++) {\r
-    from = data[i*2];\r
-    to   = data[i*2+1];\r
-    if (pre <= from - 1) {\r
-      r = add_code_range_to_buf(pbuf, pre, from - 1);\r
-      if (r != 0) return r;\r
-    }\r
-    if (to == ~((OnigCodePoint )0)) break;\r
-    pre = to + 1;\r
-  }\r
-  if (to < ~((OnigCodePoint )0)) {\r
-    r = add_code_range_to_buf(pbuf, to + 1, ~((OnigCodePoint )0));\r
-  }\r
-  return r;\r
-}\r
-\r
-#define SWAP_BBUF_NOT(bbuf1, not1, bbuf2, not2) do {\\r
-  BBuf *tbuf; \\r
-  int  tnot; \\r
-  tnot = not1;  not1  = not2;  not2  = tnot; \\r
-  tbuf = bbuf1; bbuf1 = bbuf2; bbuf2 = tbuf; \\r
-} while (0)\r
-\r
-static int\r
-or_code_range_buf(OnigEncoding enc, BBuf* bbuf1, int not1,\r
-                  BBuf* bbuf2, int not2, BBuf** pbuf)\r
-{\r
-  int r;\r
-  OnigCodePoint i, n1, *data1;\r
-  OnigCodePoint from, to;\r
-\r
-  *pbuf = (BBuf* )NULL;\r
-  if (IS_NULL(bbuf1) && IS_NULL(bbuf2)) {\r
-    if (not1 != 0 || not2 != 0)\r
-      return SET_ALL_MULTI_BYTE_RANGE(enc, pbuf);\r
-    return 0;\r
-  }\r
-\r
-  r = 0;\r
-  if (IS_NULL(bbuf2))\r
-    SWAP_BBUF_NOT(bbuf1, not1, bbuf2, not2);\r
-\r
-  if (IS_NULL(bbuf1)) {\r
-    if (not1 != 0) {\r
-      return SET_ALL_MULTI_BYTE_RANGE(enc, pbuf);\r
-    }\r
-    else {\r
-      if (not2 == 0) {\r
-       return bbuf_clone(pbuf, bbuf2);\r
-      }\r
-      else {\r
-       return not_code_range_buf(enc, bbuf2, pbuf);\r
-      }\r
-    }\r
-  }\r
-\r
-  if (not1 != 0)\r
-    SWAP_BBUF_NOT(bbuf1, not1, bbuf2, not2);\r
-\r
-  data1 = (OnigCodePoint* )(bbuf1->p);\r
-  GET_CODE_POINT(n1, data1);\r
-  data1++;\r
-\r
-  if (not2 == 0 && not1 == 0) { /* 1 OR 2 */\r
-    r = bbuf_clone(pbuf, bbuf2);\r
-  }\r
-  else if (not1 == 0) { /* 1 OR (not 2) */\r
-    r = not_code_range_buf(enc, bbuf2, pbuf);\r
-  }\r
-  if (r != 0) return r;\r
-\r
-  for (i = 0; i < n1; i++) {\r
-    from = data1[i*2];\r
-    to   = data1[i*2+1];\r
-    r = add_code_range_to_buf(pbuf, from, to);\r
-    if (r != 0) return r;\r
-  }\r
-  return 0;\r
-}\r
-\r
-static int\r
-and_code_range1(BBuf** pbuf, OnigCodePoint from1, OnigCodePoint to1,\r
-               OnigCodePoint* data, int n)\r
-{\r
-  int i, r;\r
-  OnigCodePoint from2, to2;\r
-\r
-  for (i = 0; i < n; i++) {\r
-    from2 = data[i*2];\r
-    to2   = data[i*2+1];\r
-    if (from2 < from1) {\r
-      if (to2 < from1) continue;\r
-      else {\r
-       from1 = to2 + 1;\r
-      }\r
-    }\r
-    else if (from2 <= to1) {\r
-      if (to2 < to1) {\r
-       if (from1 <= from2 - 1) {\r
-         r = add_code_range_to_buf(pbuf, from1, from2-1);\r
-         if (r != 0) return r;\r
-       }\r
-       from1 = to2 + 1;\r
-      }\r
-      else {\r
-       to1 = from2 - 1;\r
-      }\r
-    }\r
-    else {\r
-      from1 = from2;\r
-    }\r
-    if (from1 > to1) break;\r
-  }\r
-  if (from1 <= to1) {\r
-    r = add_code_range_to_buf(pbuf, from1, to1);\r
-    if (r != 0) return r;\r
-  }\r
-  return 0;\r
-}\r
-\r
-static int\r
-and_code_range_buf(BBuf* bbuf1, int not1, BBuf* bbuf2, int not2, BBuf** pbuf)\r
-{\r
-  int r;\r
-  OnigCodePoint i, j, n1, n2, *data1, *data2;\r
-  OnigCodePoint from, to, from1, to1, from2, to2;\r
-\r
-  *pbuf = (BBuf* )NULL;\r
-  if (IS_NULL(bbuf1)) {\r
-    if (not1 != 0 && IS_NOT_NULL(bbuf2)) /* not1 != 0 -> not2 == 0 */\r
-      return bbuf_clone(pbuf, bbuf2);\r
-    return 0;\r
-  }\r
-  else if (IS_NULL(bbuf2)) {\r
-    if (not2 != 0)\r
-      return bbuf_clone(pbuf, bbuf1);\r
-    return 0;\r
-  }\r
-\r
-  if (not1 != 0)\r
-    SWAP_BBUF_NOT(bbuf1, not1, bbuf2, not2);\r
-\r
-  data1 = (OnigCodePoint* )(bbuf1->p);\r
-  data2 = (OnigCodePoint* )(bbuf2->p);\r
-  GET_CODE_POINT(n1, data1);\r
-  GET_CODE_POINT(n2, data2);\r
-  data1++;\r
-  data2++;\r
-\r
-  if (not2 == 0 && not1 == 0) { /* 1 AND 2 */\r
-    for (i = 0; i < n1; i++) {\r
-      from1 = data1[i*2];\r
-      to1   = data1[i*2+1];\r
-      for (j = 0; j < n2; j++) {\r
-       from2 = data2[j*2];\r
-       to2   = data2[j*2+1];\r
-       if (from2 > to1) break;\r
-       if (to2 < from1) continue;\r
-       from = MAX(from1, from2);\r
-       to   = MIN(to1, to2);\r
-       r = add_code_range_to_buf(pbuf, from, to);\r
-       if (r != 0) return r;\r
-      }\r
-    }\r
-  }\r
-  else if (not1 == 0) { /* 1 AND (not 2) */\r
-    for (i = 0; i < n1; i++) {\r
-      from1 = data1[i*2];\r
-      to1   = data1[i*2+1];\r
-      r = and_code_range1(pbuf, from1, to1, data2, n2);\r
-      if (r != 0) return r;\r
-    }\r
-  }\r
-\r
-  return 0;\r
-}\r
-\r
-static int\r
-and_cclass(CClassNode* dest, CClassNode* cc, OnigEncoding enc)\r
-{\r
-  int r, not1, not2;\r
-  BBuf *buf1, *buf2, *pbuf;\r
-  BitSetRef bsr1, bsr2;\r
-  BitSet bs1, bs2;\r
-\r
-  not1 = IS_NCCLASS_NOT(dest);\r
-  bsr1 = dest->bs;\r
-  buf1 = dest->mbuf;\r
-  not2 = IS_NCCLASS_NOT(cc);\r
-  bsr2 = cc->bs;\r
-  buf2 = cc->mbuf;\r
-\r
-  if (not1 != 0) {\r
-    bitset_invert_to(bsr1, bs1);\r
-    bsr1 = bs1;\r
-  }\r
-  if (not2 != 0) {\r
-    bitset_invert_to(bsr2, bs2);\r
-    bsr2 = bs2;\r
-  }\r
-  bitset_and(bsr1, bsr2);\r
-  if (bsr1 != dest->bs) {\r
-    bitset_copy(dest->bs, bsr1);\r
-    bsr1 = dest->bs;\r
-  }\r
-  if (not1 != 0) {\r
-    bitset_invert(dest->bs);\r
-  }\r
-\r
-  if (! ONIGENC_IS_SINGLEBYTE(enc)) {\r
-    if (not1 != 0 && not2 != 0) {\r
-      r = or_code_range_buf(enc, buf1, 0, buf2, 0, &pbuf);\r
-    }\r
-    else {\r
-      r = and_code_range_buf(buf1, not1, buf2, not2, &pbuf);\r
-      if (r == 0 && not1 != 0) {\r
-       BBuf *tbuf;\r
-       r = not_code_range_buf(enc, pbuf, &tbuf);\r
-       if (r != 0) {\r
-         bbuf_free(pbuf);\r
-         return r;\r
-       }\r
-       bbuf_free(pbuf);\r
-       pbuf = tbuf;\r
-      }\r
-    }\r
-    if (r != 0) return r;\r
-\r
-    dest->mbuf = pbuf;\r
-    bbuf_free(buf1);\r
-    return r;\r
-  }\r
-  return 0;\r
-}\r
-\r
-static int\r
-or_cclass(CClassNode* dest, CClassNode* cc, OnigEncoding enc)\r
-{\r
-  int r, not1, not2;\r
-  BBuf *buf1, *buf2, *pbuf;\r
-  BitSetRef bsr1, bsr2;\r
-  BitSet bs1, bs2;\r
-\r
-  not1 = IS_NCCLASS_NOT(dest);\r
-  bsr1 = dest->bs;\r
-  buf1 = dest->mbuf;\r
-  not2 = IS_NCCLASS_NOT(cc);\r
-  bsr2 = cc->bs;\r
-  buf2 = cc->mbuf;\r
-\r
-  if (not1 != 0) {\r
-    bitset_invert_to(bsr1, bs1);\r
-    bsr1 = bs1;\r
-  }\r
-  if (not2 != 0) {\r
-    bitset_invert_to(bsr2, bs2);\r
-    bsr2 = bs2;\r
-  }\r
-  bitset_or(bsr1, bsr2);\r
-  if (bsr1 != dest->bs) {\r
-    bitset_copy(dest->bs, bsr1);\r
-    bsr1 = dest->bs;\r
-  }\r
-  if (not1 != 0) {\r
-    bitset_invert(dest->bs);\r
-  }\r
-\r
-  if (! ONIGENC_IS_SINGLEBYTE(enc)) {\r
-    if (not1 != 0 && not2 != 0) {\r
-      r = and_code_range_buf(buf1, 0, buf2, 0, &pbuf);\r
-    }\r
-    else {\r
-      r = or_code_range_buf(enc, buf1, not1, buf2, not2, &pbuf);\r
-      if (r == 0 && not1 != 0) {\r
-       BBuf *tbuf;\r
-       r = not_code_range_buf(enc, pbuf, &tbuf);\r
-       if (r != 0) {\r
-         bbuf_free(pbuf);\r
-         return r;\r
-       }\r
-       bbuf_free(pbuf);\r
-       pbuf = tbuf;\r
-      }\r
-    }\r
-    if (r != 0) return r;\r
-\r
-    dest->mbuf = pbuf;\r
-    bbuf_free(buf1);\r
-    return r;\r
-  }\r
-  else\r
-    return 0;\r
-}\r
-\r
-static int\r
-conv_backslash_value(int c, ScanEnv* env)\r
-{\r
-  if (IS_SYNTAX_OP(env->syntax, ONIG_SYN_OP_ESC_CONTROL_CHARS)) {\r
-    switch (c) {\r
-    case 'n': return '\n';\r
-    case 't': return '\t';\r
-    case 'r': return '\r';\r
-    case 'f': return '\f';\r
-    case 'a': return '\007';\r
-    case 'b': return '\010';\r
-    case 'e': return '\033';\r
-    case 'v':\r
-      if (IS_SYNTAX_OP2(env->syntax, ONIG_SYN_OP2_ESC_V_VTAB))\r
-       return '\v';\r
-      break;\r
-\r
-    default:\r
-      break;\r
-    }\r
-  }\r
-  return c;\r
-}\r
-\r
-static int\r
-is_invalid_quantifier_target(Node* node)\r
-{\r
-  switch (NTYPE(node)) {\r
-  case NT_ANCHOR:\r
-    return 1;\r
-    break;\r
-\r
-  case NT_ENCLOSE:\r
-    /* allow enclosed elements */\r
-    /* return is_invalid_quantifier_target(NENCLOSE(node)->target); */\r
-    break;\r
-\r
-  case NT_LIST:\r
-    do {\r
-      if (! is_invalid_quantifier_target(NCAR(node))) return 0;\r
-    } while (IS_NOT_NULL(node = NCDR(node)));\r
-    return 0;\r
-    break;\r
-\r
-  case NT_ALT:\r
-    do {\r
-      if (is_invalid_quantifier_target(NCAR(node))) return 1;\r
-    } while (IS_NOT_NULL(node = NCDR(node)));\r
-    break;\r
-\r
-  default:\r
-    break;\r
-  }\r
-  return 0;\r
-}\r
-\r
-/* ?:0, *:1, +:2, ??:3, *?:4, +?:5 */\r
-static int\r
-popular_quantifier_num(QtfrNode* q)\r
-{\r
-  if (q->greedy) {\r
-    if (q->lower == 0) {\r
-      if (q->upper == 1) return 0;\r
-      else if (IS_REPEAT_INFINITE(q->upper)) return 1;\r
-    }\r
-    else if (q->lower == 1) {\r
-      if (IS_REPEAT_INFINITE(q->upper)) return 2;\r
-    }\r
-  }\r
-  else {\r
-    if (q->lower == 0) {\r
-      if (q->upper == 1) return 3;\r
-      else if (IS_REPEAT_INFINITE(q->upper)) return 4;\r
-    }\r
-    else if (q->lower == 1) {\r
-      if (IS_REPEAT_INFINITE(q->upper)) return 5;\r
-    }\r
-  }\r
-  return -1;\r
-}\r
-\r
-\r
-enum ReduceType {\r
-  RQ_ASIS = 0, /* as is */\r
-  RQ_DEL  = 1, /* delete parent */\r
-  RQ_A,        /* to '*'    */\r
-  RQ_AQ,       /* to '*?'   */\r
-  RQ_QQ,       /* to '??'   */\r
-  RQ_P_QQ,     /* to '+)??' */\r
-  RQ_PQ_Q      /* to '+?)?' */\r
-};\r
-\r
-static enum ReduceType ReduceTypeTable[6][6] = {\r
-  {RQ_DEL,  RQ_A,    RQ_A,   RQ_QQ,   RQ_AQ,   RQ_ASIS}, /* '?'  */\r
-  {RQ_DEL,  RQ_DEL,  RQ_DEL, RQ_P_QQ, RQ_P_QQ, RQ_DEL},  /* '*'  */\r
-  {RQ_A,    RQ_A,    RQ_DEL, RQ_ASIS, RQ_P_QQ, RQ_DEL},  /* '+'  */\r
-  {RQ_DEL,  RQ_AQ,   RQ_AQ,  RQ_DEL,  RQ_AQ,   RQ_AQ},   /* '??' */\r
-  {RQ_DEL,  RQ_DEL,  RQ_DEL, RQ_DEL,  RQ_DEL,  RQ_DEL},  /* '*?' */\r
-  {RQ_ASIS, RQ_PQ_Q, RQ_DEL, RQ_AQ,   RQ_AQ,   RQ_DEL}   /* '+?' */\r
-};\r
-\r
-extern void\r
-onig_reduce_nested_quantifier(Node* pnode, Node* cnode)\r
-{\r
-  int pnum, cnum;\r
-  QtfrNode *p, *c;\r
-\r
-  p = NQTFR(pnode);\r
-  c = NQTFR(cnode);\r
-  pnum = popular_quantifier_num(p);\r
-  cnum = popular_quantifier_num(c);\r
-  if (pnum < 0 || cnum < 0) return ;\r
-\r
-  switch(ReduceTypeTable[cnum][pnum]) {\r
-  case RQ_DEL:\r
-    *pnode = *cnode;\r
-    break;\r
-  case RQ_A:\r
-    p->target = c->target;\r
-    p->lower  = 0;  p->upper = REPEAT_INFINITE;  p->greedy = 1;\r
-    break;\r
-  case RQ_AQ:\r
-    p->target = c->target;\r
-    p->lower  = 0;  p->upper = REPEAT_INFINITE;  p->greedy = 0;\r
-    break;\r
-  case RQ_QQ:\r
-    p->target = c->target;\r
-    p->lower  = 0;  p->upper = 1;  p->greedy = 0;\r
-    break;\r
-  case RQ_P_QQ:\r
-    p->target = cnode;\r
-    p->lower  = 0;  p->upper = 1;  p->greedy = 0;\r
-    c->lower  = 1;  c->upper = REPEAT_INFINITE;  c->greedy = 1;\r
-    return ;\r
-    break;\r
-  case RQ_PQ_Q:\r
-    p->target = cnode;\r
-    p->lower  = 0;  p->upper = 1;  p->greedy = 1;\r
-    c->lower  = 1;  c->upper = REPEAT_INFINITE;  c->greedy = 0;\r
-    return ;\r
-    break;\r
-  case RQ_ASIS:\r
-    p->target = cnode;\r
-    return ;\r
-    break;\r
-  }\r
-\r
-  c->target = NULL_NODE;\r
-  onig_node_free(cnode);\r
-}\r
-\r
-\r
-enum TokenSyms {\r
-  TK_EOT      = 0,   /* end of token */\r
-  TK_RAW_BYTE = 1,\r
-  TK_CHAR,\r
-  TK_STRING,\r
-  TK_CODE_POINT,\r
-  TK_ANYCHAR,\r
-  TK_CHAR_TYPE,\r
-  TK_BACKREF,\r
-  TK_CALL,\r
-  TK_ANCHOR,\r
-  TK_OP_REPEAT,\r
-  TK_INTERVAL,\r
-  TK_ANYCHAR_ANYTIME,  /* SQL '%' == .* */\r
-  TK_ALT,\r
-  TK_SUBEXP_OPEN,\r
-  TK_SUBEXP_CLOSE,\r
-  TK_CC_OPEN,\r
-  TK_QUOTE_OPEN,\r
-  TK_CHAR_PROPERTY,    /* \p{...}, \P{...} */\r
-  /* in cc */\r
-  TK_CC_CLOSE,\r
-  TK_CC_RANGE,\r
-  TK_POSIX_BRACKET_OPEN,\r
-  TK_CC_AND,             /* && */\r
-  TK_CC_CC_OPEN          /* [ */\r
-};\r
-\r
-typedef struct {\r
-  enum TokenSyms type;\r
-  int escaped;\r
-  int base;   /* is number: 8, 16 (used in [....]) */\r
-  UChar* backp;\r
-  union {\r
-    UChar* s;\r
-    int   c;\r
-    OnigCodePoint code;\r
-    int   anchor;\r
-    int   subtype;\r
-    struct {\r
-      int lower;\r
-      int upper;\r
-      int greedy;\r
-      int possessive;\r
-    } repeat;\r
-    struct {\r
-      int  num;\r
-      int  ref1;\r
-      int* refs;\r
-      int  by_name;\r
-#ifdef USE_BACKREF_WITH_LEVEL\r
-      int  exist_level;\r
-      int  level;   /* \k<name+n> */\r
-#endif\r
-    } backref;\r
-    struct {\r
-      UChar* name;\r
-      UChar* name_end;\r
-      int    gnum;\r
-    } call;\r
-    struct {\r
-      int ctype;\r
-      int not;\r
-    } prop;\r
-  } u;\r
-} OnigToken;\r
-\r
-\r
-static int\r
-fetch_range_quantifier(UChar** src, UChar* end, OnigToken* tok, ScanEnv* env)\r
-{\r
-  int low, up, syn_allow, non_low = 0;\r
-  int r = 0;\r
-  OnigCodePoint c;\r
-  OnigEncoding enc = env->enc;\r
-  UChar* p = *src;\r
-  PFETCH_READY;\r
-\r
-  syn_allow = IS_SYNTAX_BV(env->syntax, ONIG_SYN_ALLOW_INVALID_INTERVAL);\r
-\r
-  if (PEND) {\r
-    if (syn_allow)\r
-      return 1;  /* "....{" : OK! */\r
-    else\r
-      return ONIGERR_END_PATTERN_AT_LEFT_BRACE;  /* "....{" syntax error */\r
-  }\r
-\r
-  if (! syn_allow) {\r
-    c = PPEEK;\r
-    if (c == ')' || c == '(' || c == '|') {\r
-      return ONIGERR_END_PATTERN_AT_LEFT_BRACE;\r
-    }\r
-  }\r
-\r
-  low = onig_scan_unsigned_number(&p, end, env->enc);\r
-  if (low < 0) return ONIGERR_TOO_BIG_NUMBER_FOR_REPEAT_RANGE;\r
-  if (low > ONIG_MAX_REPEAT_NUM)\r
-    return ONIGERR_TOO_BIG_NUMBER_FOR_REPEAT_RANGE;\r
-\r
-  if (p == *src) { /* can't read low */\r
-    if (IS_SYNTAX_BV(env->syntax, ONIG_SYN_ALLOW_INTERVAL_LOW_ABBREV)) {\r
-      /* allow {,n} as {0,n} */\r
-      low = 0;\r
-      non_low = 1;\r
-    }\r
-    else\r
-      goto invalid;\r
-  }\r
-\r
-  if (PEND) goto invalid;\r
-  PFETCH(c);\r
-  if (c == ',') {\r
-    UChar* prev = p;\r
-    up = onig_scan_unsigned_number(&p, end, env->enc);\r
-    if (up < 0) return ONIGERR_TOO_BIG_NUMBER_FOR_REPEAT_RANGE;\r
-    if (up > ONIG_MAX_REPEAT_NUM)\r
-      return ONIGERR_TOO_BIG_NUMBER_FOR_REPEAT_RANGE;\r
-\r
-    if (p == prev) {\r
-      if (non_low != 0)\r
-       goto invalid;\r
-      up = REPEAT_INFINITE;  /* {n,} : {n,infinite} */\r
-    }\r
-  }\r
-  else {\r
-    if (non_low != 0)\r
-      goto invalid;\r
-\r
-    PUNFETCH;\r
-    up = low;  /* {n} : exact n times */\r
-    r = 2;     /* fixed */\r
-  }\r
-\r
-  if (PEND) goto invalid;\r
-  PFETCH(c);\r
-  if (IS_SYNTAX_OP(env->syntax, ONIG_SYN_OP_ESC_BRACE_INTERVAL)) {\r
-    if (c != MC_ESC(env->syntax)) goto invalid;\r
-    PFETCH(c);\r
-  }\r
-  if (c != '}') goto invalid;\r
-\r
-  if (!IS_REPEAT_INFINITE(up) && low > up) {\r
-    return ONIGERR_UPPER_SMALLER_THAN_LOWER_IN_REPEAT_RANGE;\r
-  }\r
-\r
-  tok->type = TK_INTERVAL;\r
-  tok->u.repeat.lower = low;\r
-  tok->u.repeat.upper = up;\r
-  *src = p;\r
-  return r; /* 0: normal {n,m}, 2: fixed {n} */\r
-\r
- invalid:\r
-  if (syn_allow)\r
-    return 1;  /* OK */\r
-  else\r
-    return ONIGERR_INVALID_REPEAT_RANGE_PATTERN;\r
-}\r
-\r
-/* \M-, \C-, \c, or \... */\r
-static int\r
-fetch_escaped_value(UChar** src, UChar* end, ScanEnv* env)\r
-{\r
-  int v;\r
-  OnigCodePoint c;\r
-  OnigEncoding enc = env->enc;\r
-  UChar* p = *src;\r
-\r
-  if (PEND) return ONIGERR_END_PATTERN_AT_ESCAPE;\r
-\r
-  PFETCH_S(c);\r
-  switch (c) {\r
-  case 'M':\r
-    if (IS_SYNTAX_OP2(env->syntax, ONIG_SYN_OP2_ESC_CAPITAL_M_BAR_META)) {\r
-      if (PEND) return ONIGERR_END_PATTERN_AT_META;\r
-      PFETCH_S(c);\r
-      if (c != '-') return ONIGERR_META_CODE_SYNTAX;\r
-      if (PEND) return ONIGERR_END_PATTERN_AT_META;\r
-      PFETCH_S(c);\r
-      if (c == MC_ESC(env->syntax)) {\r
-        v = fetch_escaped_value(&p, end, env);\r
-        if (v < 0) return v;\r
-        c = (OnigCodePoint )v;\r
-      }\r
-      c = ((c & 0xff) | 0x80);\r
-    }\r
-    else\r
-      goto backslash;\r
-    break;\r
-\r
-  case 'C':\r
-    if (IS_SYNTAX_OP2(env->syntax, ONIG_SYN_OP2_ESC_CAPITAL_C_BAR_CONTROL)) {\r
-      if (PEND) return ONIGERR_END_PATTERN_AT_CONTROL;\r
-      PFETCH_S(c);\r
-      if (c != '-') return ONIGERR_CONTROL_CODE_SYNTAX;\r
-      goto control;\r
-    }\r
-    else\r
-      goto backslash;\r
-\r
-  case 'c':\r
-    if (IS_SYNTAX_OP(env->syntax, ONIG_SYN_OP_ESC_C_CONTROL)) {\r
-    control:\r
-      if (PEND) return ONIGERR_END_PATTERN_AT_CONTROL;\r
-      PFETCH_S(c);\r
-      if (c == '?') {\r
-        c = 0177;\r
-      }\r
-      else {\r
-        if (c == MC_ESC(env->syntax)) {\r
-          v = fetch_escaped_value(&p, end, env);\r
-          if (v < 0) return v;\r
-          c = (OnigCodePoint )v;\r
-        }\r
-        c &= 0x9f;\r
-      }\r
-      break;\r
-    }\r
-    /* fall through */\r
-\r
-  default:\r
-    {\r
-    backslash:\r
-      c = conv_backslash_value(c, env);\r
-    }\r
-    break;\r
-  }\r
-\r
-  *src = p;\r
-  return c;\r
-}\r
-\r
-static int fetch_token(OnigToken* tok, UChar** src, UChar* end, ScanEnv* env);\r
-\r
-static OnigCodePoint\r
-get_name_end_code_point(OnigCodePoint start)\r
-{\r
-  switch (start) {\r
-  case '<':  return (OnigCodePoint )'>'; break;\r
-  case '\'': return (OnigCodePoint )'\''; break;\r
-  default:\r
-    break;\r
-  }\r
-\r
-  return (OnigCodePoint )0;\r
-}\r
-\r
-#ifdef USE_NAMED_GROUP\r
-#ifdef USE_BACKREF_WITH_LEVEL\r
-/*\r
-   \k<name+n>, \k<name-n>\r
-   \k<num+n>,  \k<num-n>\r
-   \k<-num+n>, \k<-num-n>\r
-*/\r
-static int\r
-fetch_name_with_level(OnigCodePoint start_code, UChar** src, UChar* end,\r
-                     UChar** rname_end, ScanEnv* env,\r
-                     int* rback_num, int* rlevel)\r
-{\r
-  int r, sign, is_num, exist_level;\r
-  OnigCodePoint end_code;\r
-  OnigCodePoint c = 0;\r
-  OnigEncoding enc = env->enc;\r
-  UChar *name_end;\r
-  UChar *pnum_head;\r
-  UChar *p = *src;\r
-  PFETCH_READY;\r
-\r
-  *rback_num = 0;\r
-  is_num = exist_level = 0;\r
-  sign = 1;\r
-  pnum_head = *src;\r
-\r
-  end_code = get_name_end_code_point(start_code);\r
-\r
-  name_end = end;\r
-  r = 0;\r
-  if (PEND) {\r
-    return ONIGERR_EMPTY_GROUP_NAME;\r
-  }\r
-  else {\r
-    PFETCH(c);\r
-    if (c == end_code)\r
-      return ONIGERR_EMPTY_GROUP_NAME;\r
-\r
-    if (ONIGENC_IS_CODE_DIGIT(enc, c)) {\r
-      is_num = 1;\r
-    }\r
-    else if (c == '-') {\r
-      is_num = 2;\r
-      sign = -1;\r
-      pnum_head = p;\r
-    }\r
-    else if (!ONIGENC_IS_CODE_WORD(enc, c)) {\r
-      r = ONIGERR_INVALID_CHAR_IN_GROUP_NAME;\r
-    }\r
-  }\r
-\r
-  while (!PEND) {\r
-    name_end = p;\r
-    PFETCH(c);\r
-    if (c == end_code || c == ')' || c == '+' || c == '-') {\r
-      if (is_num == 2)         r = ONIGERR_INVALID_GROUP_NAME;\r
-      break;\r
-    }\r
-\r
-    if (is_num != 0) {\r
-      if (ONIGENC_IS_CODE_DIGIT(enc, c)) {\r
-        is_num = 1;\r
-      }\r
-      else {\r
-        r = ONIGERR_INVALID_GROUP_NAME;\r
-        is_num = 0;\r
-      }\r
-    }\r
-    else if (!ONIGENC_IS_CODE_WORD(enc, c)) {\r
-      r = ONIGERR_INVALID_CHAR_IN_GROUP_NAME;\r
-    }\r
-  }\r
-\r
-  if (r == 0 && c != end_code) {\r
-    if (c == '+' || c == '-') {\r
-      int level;\r
-      int flag = (c == '-' ? -1 : 1);\r
-\r
-      PFETCH(c);\r
-      if (! ONIGENC_IS_CODE_DIGIT(enc, c)) goto err;\r
-      PUNFETCH;\r
-      level = onig_scan_unsigned_number(&p, end, enc);\r
-      if (level < 0) return ONIGERR_TOO_BIG_NUMBER;\r
-      *rlevel = (level * flag);\r
-      exist_level = 1;\r
-\r
-      PFETCH(c);\r
-      if (c == end_code)\r
-       goto end;\r
-    }\r
-\r
-  err:\r
-    r = ONIGERR_INVALID_GROUP_NAME;\r
-    name_end = end;\r
-  }\r
-\r
- end:\r
-  if (r == 0) {\r
-    if (is_num != 0) {\r
-      *rback_num = onig_scan_unsigned_number(&pnum_head, name_end, enc);\r
-      if (*rback_num < 0) return ONIGERR_TOO_BIG_NUMBER;\r
-      else if (*rback_num == 0) goto err;\r
-\r
-      *rback_num *= sign;\r
-    }\r
-\r
-    *rname_end = name_end;\r
-    *src = p;\r
-    return (exist_level ? 1 : 0);\r
-  }\r
-  else {\r
-    onig_scan_env_set_error_string(env, r, *src, name_end);\r
-    return r;\r
-  }\r
-}\r
-#endif /* USE_BACKREF_WITH_LEVEL */\r
-\r
-/*\r
-  def: 0 -> define name    (don't allow number name)\r
-       1 -> reference name (allow number name)\r
-*/\r
-static int\r
-fetch_name(OnigCodePoint start_code, UChar** src, UChar* end,\r
-          UChar** rname_end, ScanEnv* env, int* rback_num, int ref)\r
-{\r
-  int r, is_num, sign;\r
-  OnigCodePoint end_code;\r
-  OnigCodePoint c = 0;\r
-  OnigEncoding enc = env->enc;\r
-  UChar *name_end;\r
-  UChar *pnum_head;\r
-  UChar *p = *src;\r
-\r
-  *rback_num = 0;\r
-\r
-  end_code = get_name_end_code_point(start_code);\r
-\r
-  name_end = end;\r
-  pnum_head = *src;\r
-  r = 0;\r
-  is_num = 0;\r
-  sign = 1;\r
-  if (PEND) {\r
-    return ONIGERR_EMPTY_GROUP_NAME;\r
-  }\r
-  else {\r
-    PFETCH_S(c);\r
-    if (c == end_code)\r
-      return ONIGERR_EMPTY_GROUP_NAME;\r
-\r
-    if (ONIGENC_IS_CODE_DIGIT(enc, c)) {\r
-      if (ref == 1)\r
-        is_num = 1;\r
-      else {\r
-        r = ONIGERR_INVALID_GROUP_NAME;\r
-        is_num = 0;\r
-      }\r
-    }\r
-    else if (c == '-') {\r
-      if (ref == 1) {\r
-        is_num = 2;\r
-        sign = -1;\r
-        pnum_head = p;\r
-      }\r
-      else {\r
-        r = ONIGERR_INVALID_GROUP_NAME;\r
-        is_num = 0;\r
-      }\r
-    }\r
-    else if (!ONIGENC_IS_CODE_WORD(enc, c)) {\r
-      r = ONIGERR_INVALID_CHAR_IN_GROUP_NAME;\r
-    }\r
-  }\r
-\r
-  if (r == 0) {\r
-    while (!PEND) {\r
-      name_end = p;\r
-      PFETCH_S(c);\r
-      if (c == end_code || c == ')') {\r
-        if (is_num == 2)       r = ONIGERR_INVALID_GROUP_NAME;\r
-        break;\r
-      }\r
-\r
-      if (is_num != 0) {\r
-        if (ONIGENC_IS_CODE_DIGIT(enc, c)) {\r
-          is_num = 1;\r
-        }\r
-        else {\r
-          if (!ONIGENC_IS_CODE_WORD(enc, c))\r
-            r = ONIGERR_INVALID_CHAR_IN_GROUP_NAME;\r
-          else\r
-            r = ONIGERR_INVALID_GROUP_NAME;\r
-          is_num = 0;\r
-        }\r
-      }\r
-      else {\r
-        if (!ONIGENC_IS_CODE_WORD(enc, c)) {\r
-          r = ONIGERR_INVALID_CHAR_IN_GROUP_NAME;\r
-        }\r
-      }\r
-    }\r
-\r
-    if (c != end_code) {\r
-      r = ONIGERR_INVALID_GROUP_NAME;\r
-      name_end = end;\r
-    }\r
-\r
-    if (is_num != 0) {\r
-      *rback_num = onig_scan_unsigned_number(&pnum_head, name_end, enc);\r
-      if (*rback_num < 0) return ONIGERR_TOO_BIG_NUMBER;\r
-      else if (*rback_num == 0) {\r
-        r = ONIGERR_INVALID_GROUP_NAME;\r
-        goto err;\r
-      }\r
-\r
-      *rback_num *= sign;\r
-    }\r
-\r
-    *rname_end = name_end;\r
-    *src = p;\r
-    return 0;\r
-  }\r
-  else {\r
-    while (!PEND) {\r
-      name_end = p;\r
-      PFETCH_S(c);\r
-      if (c == end_code || c == ')')\r
-        break;\r
-    }\r
-    if (PEND)\r
-      name_end = end;\r
-\r
-  err:\r
-    onig_scan_env_set_error_string(env, r, *src, name_end);\r
-    return r;\r
-  }\r
-}\r
-#else\r
-static int\r
-fetch_name(OnigCodePoint start_code, UChar** src, UChar* end,\r
-          UChar** rname_end, ScanEnv* env, int* rback_num, int ref)\r
-{\r
-  int r, is_num, sign;\r
-  OnigCodePoint end_code;\r
-  OnigCodePoint c = 0;\r
-  UChar *name_end;\r
-  OnigEncoding enc = env->enc;\r
-  UChar *pnum_head;\r
-  UChar *p = *src;\r
-  PFETCH_READY;\r
-\r
-  *rback_num = 0;\r
-\r
-  end_code = get_name_end_code_point(start_code);\r
-\r
-  *rname_end = name_end = end;\r
-  r = 0;\r
-  pnum_head = *src;\r
-  is_num = 0;\r
-  sign = 1;\r
-\r
-  if (PEND) {\r
-    return ONIGERR_EMPTY_GROUP_NAME;\r
-  }\r
-  else {\r
-    PFETCH(c);\r
-    if (c == end_code)\r
-      return ONIGERR_EMPTY_GROUP_NAME;\r
-\r
-    if (ONIGENC_IS_CODE_DIGIT(enc, c)) {\r
-      is_num = 1;\r
-    }\r
-    else if (c == '-') {\r
-      is_num = 2;\r
-      sign = -1;\r
-      pnum_head = p;\r
-    }\r
-    else {\r
-      r = ONIGERR_INVALID_CHAR_IN_GROUP_NAME;\r
-    }\r
-  }\r
-\r
-  while (!PEND) {\r
-    name_end = p;\r
-\r
-    PFETCH(c);\r
-    if (c == end_code || c == ')') break;\r
-    if (! ONIGENC_IS_CODE_DIGIT(enc, c))\r
-      r = ONIGERR_INVALID_CHAR_IN_GROUP_NAME;\r
-  }\r
-  if (r == 0 && c != end_code) {\r
-    r = ONIGERR_INVALID_GROUP_NAME;\r
-    name_end = end;\r
-  }\r
-\r
-  if (r == 0) {\r
-    *rback_num = onig_scan_unsigned_number(&pnum_head, name_end, enc);\r
-    if (*rback_num < 0) return ONIGERR_TOO_BIG_NUMBER;\r
-    else if (*rback_num == 0) {\r
-      r = ONIGERR_INVALID_GROUP_NAME;\r
-      goto err;\r
-    }\r
-    *rback_num *= sign;\r
-\r
-    *rname_end = name_end;\r
-    *src = p;\r
-    return 0;\r
-  }\r
-  else {\r
-  err:\r
-    onig_scan_env_set_error_string(env, r, *src, name_end);\r
-    return r;\r
-  }\r
-}\r
-#endif /* USE_NAMED_GROUP */\r
-\r
-static void\r
-CC_ESC_WARN(ScanEnv* env, UChar *c)\r
-{\r
-  if (onig_warn == onig_null_warn) return ;\r
-\r
-  if (IS_SYNTAX_BV(env->syntax, ONIG_SYN_WARN_CC_OP_NOT_ESCAPED) &&\r
-      IS_SYNTAX_BV(env->syntax, ONIG_SYN_BACKSLASH_ESCAPE_IN_CC)) {\r
-    UChar buf[WARN_BUFSIZE];\r
-    onig_snprintf_with_pattern(buf, WARN_BUFSIZE, env->enc,\r
-               env->pattern, env->pattern_end,\r
-                (UChar* )"character class has '%s' without escape", c);\r
-    (*onig_warn)((char* )buf);\r
-  }\r
-}\r
-\r
-static void\r
-CLOSE_BRACKET_WITHOUT_ESC_WARN(ScanEnv* env, UChar* c)\r
-{\r
-  if (onig_warn == onig_null_warn) return ;\r
-\r
-  if (IS_SYNTAX_BV((env)->syntax, ONIG_SYN_WARN_CC_OP_NOT_ESCAPED)) {\r
-    UChar buf[WARN_BUFSIZE];\r
-    onig_snprintf_with_pattern(buf, WARN_BUFSIZE, (env)->enc,\r
-               (env)->pattern, (env)->pattern_end,\r
-               (UChar* )"regular expression has '%s' without escape", c);\r
-    (*onig_warn)((char* )buf);\r
-  }\r
-}\r
-\r
-static UChar*\r
-find_str_position(OnigCodePoint s[], int n, UChar* from, UChar* to,\r
-                 UChar **next, OnigEncoding enc)\r
-{\r
-  int i;\r
-  OnigCodePoint x;\r
-  UChar *q;\r
-  UChar *p = from;\r
-  \r
-  while (p < to) {\r
-    x = ONIGENC_MBC_TO_CODE(enc, p, to);\r
-    q = p + enclen(enc, p);\r
-    if (x == s[0]) {\r
-      for (i = 1; i < n && q < to; i++) {\r
-       x = ONIGENC_MBC_TO_CODE(enc, q, to);\r
-       if (x != s[i]) break;\r
-       q += enclen(enc, q);\r
-      }\r
-      if (i >= n) {\r
-       if (IS_NOT_NULL(next))\r
-         *next = q;\r
-       return p;\r
-      }\r
-    }\r
-    p = q;\r
-  }\r
-  return NULL_UCHARP;\r
-}\r
-\r
-static int\r
-str_exist_check_with_esc(OnigCodePoint s[], int n, UChar* from, UChar* to,\r
-                OnigCodePoint bad, OnigEncoding enc, OnigSyntaxType* syn)\r
-{\r
-  int i, in_esc;\r
-  OnigCodePoint x;\r
-  UChar *q;\r
-  UChar *p = from;\r
-\r
-  in_esc = 0;\r
-  while (p < to) {\r
-    if (in_esc) {\r
-      in_esc = 0;\r
-      p += enclen(enc, p);\r
-    }\r
-    else {\r
-      x = ONIGENC_MBC_TO_CODE(enc, p, to);\r
-      q = p + enclen(enc, p);\r
-      if (x == s[0]) {\r
-       for (i = 1; i < n && q < to; i++) {\r
-         x = ONIGENC_MBC_TO_CODE(enc, q, to);\r
-         if (x != s[i]) break;\r
-         q += enclen(enc, q);\r
-       }\r
-       if (i >= n) return 1;\r
-       p += enclen(enc, p);\r
-      }\r
-      else {\r
-       x = ONIGENC_MBC_TO_CODE(enc, p, to);\r
-       if (x == bad) return 0;\r
-       else if (x == MC_ESC(syn)) in_esc = 1;\r
-       p = q;\r
-      }\r
-    }\r
-  }\r
-  return 0;\r
-}\r
-\r
-static int\r
-fetch_token_in_cc(OnigToken* tok, UChar** src, UChar* end, ScanEnv* env)\r
-{\r
-  int num;\r
-  OnigCodePoint c, c2;\r
-  OnigSyntaxType* syn = env->syntax;\r
-  OnigEncoding enc = env->enc;\r
-  UChar* prev;\r
-  UChar* p = *src;\r
-  PFETCH_READY;\r
-\r
-  if (PEND) {\r
-    tok->type = TK_EOT;\r
-    return tok->type;\r
-  }\r
-\r
-  PFETCH(c);\r
-  tok->type = TK_CHAR;\r
-  tok->base = 0;\r
-  tok->u.c  = c;\r
-  tok->escaped = 0;\r
-\r
-  if (c == ']') {\r
-    tok->type = TK_CC_CLOSE;\r
-  }\r
-  else if (c == '-') {\r
-    tok->type = TK_CC_RANGE;\r
-  }\r
-  else if (c == MC_ESC(syn)) {\r
-    if (! IS_SYNTAX_BV(syn, ONIG_SYN_BACKSLASH_ESCAPE_IN_CC))\r
-      goto end;\r
-\r
-    if (PEND) return ONIGERR_END_PATTERN_AT_ESCAPE;\r
-\r
-    PFETCH(c);\r
-    tok->escaped = 1;\r
-    tok->u.c = c;\r
-    switch (c) {\r
-    case 'w':\r
-      tok->type = TK_CHAR_TYPE;\r
-      tok->u.prop.ctype = ONIGENC_CTYPE_WORD;\r
-      tok->u.prop.not   = 0;\r
-      break;\r
-    case 'W':\r
-      tok->type = TK_CHAR_TYPE;\r
-      tok->u.prop.ctype = ONIGENC_CTYPE_WORD;\r
-      tok->u.prop.not   = 1;\r
-      break;\r
-    case 'd':\r
-      tok->type = TK_CHAR_TYPE;\r
-      tok->u.prop.ctype = ONIGENC_CTYPE_DIGIT;\r
-      tok->u.prop.not   = 0;\r
-      break;\r
-    case 'D':\r
-      tok->type = TK_CHAR_TYPE;\r
-      tok->u.prop.ctype = ONIGENC_CTYPE_DIGIT;\r
-      tok->u.prop.not   = 1;\r
-      break;\r
-    case 's':\r
-      tok->type = TK_CHAR_TYPE;\r
-      tok->u.prop.ctype = ONIGENC_CTYPE_SPACE;\r
-      tok->u.prop.not   = 0;\r
-      break;\r
-    case 'S':\r
-      tok->type = TK_CHAR_TYPE;\r
-      tok->u.prop.ctype = ONIGENC_CTYPE_SPACE;\r
-      tok->u.prop.not   = 1;\r
-      break;\r
-    case 'h':\r
-      if (! IS_SYNTAX_OP2(syn, ONIG_SYN_OP2_ESC_H_XDIGIT)) break;\r
-      tok->type = TK_CHAR_TYPE;\r
-      tok->u.prop.ctype = ONIGENC_CTYPE_XDIGIT;\r
-      tok->u.prop.not   = 0;\r
-      break;\r
-    case 'H':\r
-      if (! IS_SYNTAX_OP2(syn, ONIG_SYN_OP2_ESC_H_XDIGIT)) break;\r
-      tok->type = TK_CHAR_TYPE;\r
-      tok->u.prop.ctype = ONIGENC_CTYPE_XDIGIT;\r
-      tok->u.prop.not   = 1;\r
-      break;\r
-\r
-    case 'p':\r
-    case 'P':\r
-      c2 = PPEEK;\r
-      if (c2 == '{' &&\r
-         IS_SYNTAX_OP2(syn, ONIG_SYN_OP2_ESC_P_BRACE_CHAR_PROPERTY)) {\r
-       PINC;\r
-       tok->type = TK_CHAR_PROPERTY;\r
-       tok->u.prop.not = (c == 'P' ? 1 : 0);\r
-\r
-       if (IS_SYNTAX_OP2(syn, ONIG_SYN_OP2_ESC_P_BRACE_CIRCUMFLEX_NOT)) {\r
-         PFETCH(c2);\r
-         if (c2 == '^') {\r
-           tok->u.prop.not = (tok->u.prop.not == 0 ? 1 : 0);\r
-         }\r
-         else\r
-           PUNFETCH;\r
-       }\r
-      }\r
-      break;\r
-\r
-    case 'x':\r
-      if (PEND) break;\r
-\r
-      prev = p;\r
-      if (PPEEK_IS('{') && IS_SYNTAX_OP(syn, ONIG_SYN_OP_ESC_X_BRACE_HEX8)) {\r
-       PINC;\r
-       num = scan_unsigned_hexadecimal_number(&p, end, 8, enc);\r
-       if (num < 0) return ONIGERR_TOO_BIG_WIDE_CHAR_VALUE;\r
-       if (!PEND) {\r
-          c2 = PPEEK;\r
-          if (ONIGENC_IS_CODE_XDIGIT(enc, c2))\r
-            return ONIGERR_TOO_LONG_WIDE_CHAR_VALUE;\r
-        }\r
-\r
-       if (p > prev + enclen(enc, prev) && !PEND && (PPEEK_IS('}'))) {\r
-         PINC;\r
-         tok->type   = TK_CODE_POINT;\r
-         tok->base   = 16;\r
-         tok->u.code = (OnigCodePoint )num;\r
-       }\r
-       else {\r
-         /* can't read nothing or invalid format */\r
-         p = prev;\r
-       }\r
-      }\r
-      else if (IS_SYNTAX_OP(syn, ONIG_SYN_OP_ESC_X_HEX2)) {\r
-       num = scan_unsigned_hexadecimal_number(&p, end, 2, enc);\r
-       if (num < 0) return ONIGERR_TOO_BIG_NUMBER;\r
-       if (p == prev) {  /* can't read nothing. */\r
-         num = 0; /* but, it's not error */\r
-       }\r
-       tok->type = TK_RAW_BYTE;\r
-       tok->base = 16;\r
-       tok->u.c  = num;\r
-      }\r
-      break;\r
-\r
-    case 'u':\r
-      if (PEND) break;\r
-\r
-      prev = p;\r
-      if (IS_SYNTAX_OP2(syn, ONIG_SYN_OP2_ESC_U_HEX4)) {\r
-       num = scan_unsigned_hexadecimal_number(&p, end, 4, enc);\r
-       if (num < 0) return ONIGERR_TOO_BIG_NUMBER;\r
-       if (p == prev) {  /* can't read nothing. */\r
-         num = 0; /* but, it's not error */\r
-       }\r
-       tok->type   = TK_CODE_POINT;\r
-       tok->base   = 16;\r
-       tok->u.code = (OnigCodePoint )num;\r
-      }\r
-      break;\r
-\r
-    case '0':\r
-    case '1': case '2': case '3': case '4': case '5': case '6': case '7':\r
-      if (IS_SYNTAX_OP(syn, ONIG_SYN_OP_ESC_OCTAL3)) {\r
-       PUNFETCH;\r
-       prev = p;\r
-       num = scan_unsigned_octal_number(&p, end, 3, enc);\r
-       if (num < 0) return ONIGERR_TOO_BIG_NUMBER;\r
-       if (p == prev) {  /* can't read nothing. */\r
-         num = 0; /* but, it's not error */\r
-       }\r
-       tok->type = TK_RAW_BYTE;\r
-       tok->base = 8;\r
-       tok->u.c  = num;\r
-      }\r
-      break;\r
-\r
-    default:\r
-      PUNFETCH;\r
-      num = fetch_escaped_value(&p, end, env);\r
-      if (num < 0) return num;\r
-      if (tok->u.c != num) {\r
-       tok->u.code = (OnigCodePoint )num;\r
-       tok->type   = TK_CODE_POINT;\r
-      }\r
-      break;\r
-    }\r
-  }\r
-  else if (c == '[') {\r
-    if (IS_SYNTAX_OP(syn, ONIG_SYN_OP_POSIX_BRACKET) && (PPEEK_IS(':'))) {\r
-      OnigCodePoint send[] = { (OnigCodePoint )':', (OnigCodePoint )']' };\r
-      tok->backp = p; /* point at '[' is readed */\r
-      PINC;\r
-      if (str_exist_check_with_esc(send, 2, p, end,\r
-                                   (OnigCodePoint )']', enc, syn)) {\r
-       tok->type = TK_POSIX_BRACKET_OPEN;\r
-      }\r
-      else {\r
-       PUNFETCH;\r
-       goto cc_in_cc;\r
-      }\r
-    }\r
-    else {\r
-    cc_in_cc:\r
-      if (IS_SYNTAX_OP2(syn, ONIG_SYN_OP2_CCLASS_SET_OP)) {\r
-       tok->type = TK_CC_CC_OPEN;\r
-      }\r
-      else {\r
-       CC_ESC_WARN(env, (UChar* )"[");\r
-      }\r
-    }\r
-  }\r
-  else if (c == '&') {\r
-    if (IS_SYNTAX_OP2(syn, ONIG_SYN_OP2_CCLASS_SET_OP) &&\r
-       !PEND && (PPEEK_IS('&'))) {\r
-      PINC;\r
-      tok->type = TK_CC_AND;\r
-    }\r
-  }\r
-\r
- end:\r
-  *src = p;\r
-  return tok->type;\r
-}\r
-\r
-static int\r
-fetch_token(OnigToken* tok, UChar** src, UChar* end, ScanEnv* env)\r
-{\r
-  int r, num;\r
-  OnigCodePoint c;\r
-  OnigEncoding enc = env->enc;\r
-  OnigSyntaxType* syn = env->syntax;\r
-  UChar* prev;\r
-  UChar* p = *src;\r
-  PFETCH_READY;\r
-\r
- start:\r
-  if (PEND) {\r
-    tok->type = TK_EOT;\r
-    return tok->type;\r
-  }\r
-\r
-  tok->type  = TK_STRING;\r
-  tok->base  = 0;\r
-  tok->backp = p;\r
-\r
-  PFETCH(c);\r
-  if (IS_MC_ESC_CODE(c, syn)) {\r
-    if (PEND) return ONIGERR_END_PATTERN_AT_ESCAPE;\r
-\r
-    tok->backp = p;\r
-    PFETCH(c);\r
-\r
-    tok->u.c = c;\r
-    tok->escaped = 1;\r
-    switch (c) {\r
-    case '*':\r
-      if (! IS_SYNTAX_OP(syn, ONIG_SYN_OP_ESC_ASTERISK_ZERO_INF)) break;\r
-      tok->type = TK_OP_REPEAT;\r
-      tok->u.repeat.lower = 0;\r
-      tok->u.repeat.upper = REPEAT_INFINITE;\r
-      goto greedy_check;\r
-      break;\r
-\r
-    case '+':\r
-      if (! IS_SYNTAX_OP(syn, ONIG_SYN_OP_ESC_PLUS_ONE_INF)) break;\r
-      tok->type = TK_OP_REPEAT;\r
-      tok->u.repeat.lower = 1;\r
-      tok->u.repeat.upper = REPEAT_INFINITE;\r
-      goto greedy_check;\r
-      break;\r
-\r
-    case '?':\r
-      if (! IS_SYNTAX_OP(syn, ONIG_SYN_OP_ESC_QMARK_ZERO_ONE)) break;\r
-      tok->type = TK_OP_REPEAT;\r
-      tok->u.repeat.lower = 0;\r
-      tok->u.repeat.upper = 1;\r
-    greedy_check:\r
-      if (!PEND && PPEEK_IS('?') &&\r
-         IS_SYNTAX_OP(syn, ONIG_SYN_OP_QMARK_NON_GREEDY)) {\r
-       PFETCH(c);\r
-       tok->u.repeat.greedy     = 0;\r
-       tok->u.repeat.possessive = 0;\r
-      }\r
-      else {\r
-      possessive_check:\r
-       if (!PEND && PPEEK_IS('+') &&\r
-           ((IS_SYNTAX_OP2(syn, ONIG_SYN_OP2_PLUS_POSSESSIVE_REPEAT) &&\r
-             tok->type != TK_INTERVAL)  ||\r
-            (IS_SYNTAX_OP2(syn, ONIG_SYN_OP2_PLUS_POSSESSIVE_INTERVAL) &&\r
-             tok->type == TK_INTERVAL))) {\r
-         PFETCH(c);\r
-         tok->u.repeat.greedy     = 1;\r
-         tok->u.repeat.possessive = 1;\r
-       }\r
-       else {\r
-         tok->u.repeat.greedy     = 1;\r
-         tok->u.repeat.possessive = 0;\r
-       }\r
-      }\r
-      break;\r
-\r
-    case '{':\r
-      if (! IS_SYNTAX_OP(syn, ONIG_SYN_OP_ESC_BRACE_INTERVAL)) break;\r
-      r = fetch_range_quantifier(&p, end, tok, env);\r
-      if (r < 0) return r;  /* error */\r
-      if (r == 0) goto greedy_check;\r
-      else if (r == 2) { /* {n} */\r
-       if (IS_SYNTAX_BV(syn, ONIG_SYN_FIXED_INTERVAL_IS_GREEDY_ONLY))\r
-         goto possessive_check;\r
-\r
-       goto greedy_check;\r
-      }\r
-      /* r == 1 : normal char */\r
-      break;\r
-\r
-    case '|':\r
-      if (! IS_SYNTAX_OP(syn, ONIG_SYN_OP_ESC_VBAR_ALT)) break;\r
-      tok->type = TK_ALT;\r
-      break;\r
-\r
-    case '(':\r
-      if (! IS_SYNTAX_OP(syn, ONIG_SYN_OP_ESC_LPAREN_SUBEXP)) break;\r
-      tok->type = TK_SUBEXP_OPEN;\r
-      break;\r
-\r
-    case ')':\r
-      if (! IS_SYNTAX_OP(syn, ONIG_SYN_OP_ESC_LPAREN_SUBEXP)) break;\r
-      tok->type = TK_SUBEXP_CLOSE;\r
-      break;\r
-\r
-    case 'w':\r
-      if (! IS_SYNTAX_OP(syn, ONIG_SYN_OP_ESC_W_WORD)) break;\r
-      tok->type = TK_CHAR_TYPE;\r
-      tok->u.prop.ctype = ONIGENC_CTYPE_WORD;\r
-      tok->u.prop.not   = 0;\r
-      break;\r
-\r
-    case 'W':\r
-      if (! IS_SYNTAX_OP(syn, ONIG_SYN_OP_ESC_W_WORD)) break;\r
-      tok->type = TK_CHAR_TYPE;\r
-      tok->u.prop.ctype = ONIGENC_CTYPE_WORD;\r
-      tok->u.prop.not   = 1;\r
-      break;\r
-\r
-    case 'b':\r
-      if (! IS_SYNTAX_OP(syn, ONIG_SYN_OP_ESC_B_WORD_BOUND)) break;\r
-      tok->type = TK_ANCHOR;\r
-      tok->u.anchor = ANCHOR_WORD_BOUND;\r
-      break;\r
-\r
-    case 'B':\r
-      if (! IS_SYNTAX_OP(syn, ONIG_SYN_OP_ESC_B_WORD_BOUND)) break;\r
-      tok->type = TK_ANCHOR;\r
-      tok->u.anchor = ANCHOR_NOT_WORD_BOUND;\r
-      break;\r
-\r
-#ifdef USE_WORD_BEGIN_END\r
-    case '<':\r
-      if (! IS_SYNTAX_OP(syn, ONIG_SYN_OP_ESC_LTGT_WORD_BEGIN_END)) break;\r
-      tok->type = TK_ANCHOR;\r
-      tok->u.anchor = ANCHOR_WORD_BEGIN;\r
-      break;\r
-\r
-    case '>':\r
-      if (! IS_SYNTAX_OP(syn, ONIG_SYN_OP_ESC_LTGT_WORD_BEGIN_END)) break;\r
-      tok->type = TK_ANCHOR;\r
-      tok->u.anchor = ANCHOR_WORD_END;\r
-      break;\r
-#endif\r
-\r
-    case 's':\r
-      if (! IS_SYNTAX_OP(syn, ONIG_SYN_OP_ESC_S_WHITE_SPACE)) break;\r
-      tok->type = TK_CHAR_TYPE;\r
-      tok->u.prop.ctype = ONIGENC_CTYPE_SPACE;\r
-      tok->u.prop.not   = 0;\r
-      break;\r
-\r
-    case 'S':\r
-      if (! IS_SYNTAX_OP(syn, ONIG_SYN_OP_ESC_S_WHITE_SPACE)) break;\r
-      tok->type = TK_CHAR_TYPE;\r
-      tok->u.prop.ctype = ONIGENC_CTYPE_SPACE;\r
-      tok->u.prop.not   = 1;\r
-      break;\r
-\r
-    case 'd':\r
-      if (! IS_SYNTAX_OP(syn, ONIG_SYN_OP_ESC_D_DIGIT)) break;\r
-      tok->type = TK_CHAR_TYPE;\r
-      tok->u.prop.ctype = ONIGENC_CTYPE_DIGIT;\r
-      tok->u.prop.not   = 0;\r
-      break;\r
-\r
-    case 'D':\r
-      if (! IS_SYNTAX_OP(syn, ONIG_SYN_OP_ESC_D_DIGIT)) break;\r
-      tok->type = TK_CHAR_TYPE;\r
-      tok->u.prop.ctype = ONIGENC_CTYPE_DIGIT;\r
-      tok->u.prop.not   = 1;\r
-      break;\r
-\r
-    case 'h':\r
-      if (! IS_SYNTAX_OP2(syn, ONIG_SYN_OP2_ESC_H_XDIGIT)) break;\r
-      tok->type = TK_CHAR_TYPE;\r
-      tok->u.prop.ctype = ONIGENC_CTYPE_XDIGIT;\r
-      tok->u.prop.not   = 0;\r
-      break;\r
-\r
-    case 'H':\r
-      if (! IS_SYNTAX_OP2(syn, ONIG_SYN_OP2_ESC_H_XDIGIT)) break;\r
-      tok->type = TK_CHAR_TYPE;\r
-      tok->u.prop.ctype = ONIGENC_CTYPE_XDIGIT;\r
-      tok->u.prop.not   = 1;\r
-      break;\r
-\r
-    case 'A':\r
-      if (! IS_SYNTAX_OP(syn, ONIG_SYN_OP_ESC_AZ_BUF_ANCHOR)) break;\r
-    begin_buf:\r
-      tok->type = TK_ANCHOR;\r
-      tok->u.subtype = ANCHOR_BEGIN_BUF;\r
-      break;\r
-\r
-    case 'Z':\r
-      if (! IS_SYNTAX_OP(syn, ONIG_SYN_OP_ESC_AZ_BUF_ANCHOR)) break;\r
-      tok->type = TK_ANCHOR;\r
-      tok->u.subtype = ANCHOR_SEMI_END_BUF;\r
-      break;\r
-\r
-    case 'z':\r
-      if (! IS_SYNTAX_OP(syn, ONIG_SYN_OP_ESC_AZ_BUF_ANCHOR)) break;\r
-    end_buf:\r
-      tok->type = TK_ANCHOR;\r
-      tok->u.subtype = ANCHOR_END_BUF;\r
-      break;\r
-\r
-    case 'G':\r
-      if (! IS_SYNTAX_OP(syn, ONIG_SYN_OP_ESC_CAPITAL_G_BEGIN_ANCHOR)) break;\r
-      tok->type = TK_ANCHOR;\r
-      tok->u.subtype = ANCHOR_BEGIN_POSITION;\r
-      break;\r
-\r
-    case '`':\r
-      if (! IS_SYNTAX_OP2(syn, ONIG_SYN_OP2_ESC_GNU_BUF_ANCHOR)) break;\r
-      goto begin_buf;\r
-      break;\r
-\r
-    case '\'':\r
-      if (! IS_SYNTAX_OP2(syn, ONIG_SYN_OP2_ESC_GNU_BUF_ANCHOR)) break;\r
-      goto end_buf;\r
-      break;\r
-\r
-    case 'x':\r
-      if (PEND) break;\r
-\r
-      prev = p;\r
-      if (PPEEK_IS('{') && IS_SYNTAX_OP(syn, ONIG_SYN_OP_ESC_X_BRACE_HEX8)) {\r
-       PINC;\r
-       num = scan_unsigned_hexadecimal_number(&p, end, 8, enc);\r
-       if (num < 0) return ONIGERR_TOO_BIG_WIDE_CHAR_VALUE;\r
-       if (!PEND) {\r
-          if (ONIGENC_IS_CODE_XDIGIT(enc, PPEEK))\r
-            return ONIGERR_TOO_LONG_WIDE_CHAR_VALUE;\r
-        }\r
-\r
-       if ((p > prev + enclen(enc, prev)) && !PEND && PPEEK_IS('}')) {\r
-         PINC;\r
-         tok->type   = TK_CODE_POINT;\r
-         tok->u.code = (OnigCodePoint )num;\r
-       }\r
-       else {\r
-         /* can't read nothing or invalid format */\r
-         p = prev;\r
-       }\r
-      }\r
-      else if (IS_SYNTAX_OP(syn, ONIG_SYN_OP_ESC_X_HEX2)) {\r
-       num = scan_unsigned_hexadecimal_number(&p, end, 2, enc);\r
-       if (num < 0) return ONIGERR_TOO_BIG_NUMBER;\r
-       if (p == prev) {  /* can't read nothing. */\r
-         num = 0; /* but, it's not error */\r
-       }\r
-       tok->type = TK_RAW_BYTE;\r
-       tok->base = 16;\r
-       tok->u.c  = num;\r
-      }\r
-      break;\r
-\r
-    case 'u':\r
-      if (PEND) break;\r
-\r
-      prev = p;\r
-      if (IS_SYNTAX_OP2(syn, ONIG_SYN_OP2_ESC_U_HEX4)) {\r
-       num = scan_unsigned_hexadecimal_number(&p, end, 4, enc);\r
-       if (num < 0) return ONIGERR_TOO_BIG_NUMBER;\r
-       if (p == prev) {  /* can't read nothing. */\r
-         num = 0; /* but, it's not error */\r
-       }\r
-       tok->type   = TK_CODE_POINT;\r
-       tok->base   = 16;\r
-       tok->u.code = (OnigCodePoint )num;\r
-      }\r
-      break;\r
-\r
-    case '1': case '2': case '3': case '4':\r
-    case '5': case '6': case '7': case '8': case '9':\r
-      PUNFETCH;\r
-      prev = p;\r
-      num = onig_scan_unsigned_number(&p, end, enc);\r
-      if (num < 0 || num > ONIG_MAX_BACKREF_NUM) {\r
-        goto skip_backref;\r
-      }\r
-\r
-      if (IS_SYNTAX_OP(syn, ONIG_SYN_OP_DECIMAL_BACKREF) && \r
-         (num <= env->num_mem || num <= 9)) { /* This spec. from GNU regex */\r
-       if (IS_SYNTAX_BV(syn, ONIG_SYN_STRICT_CHECK_BACKREF)) {\r
-         if (num > env->num_mem || IS_NULL(SCANENV_MEM_NODES(env)[num]))\r
-           return ONIGERR_INVALID_BACKREF;\r
-       }\r
-\r
-       tok->type = TK_BACKREF;\r
-       tok->u.backref.num     = 1;\r
-       tok->u.backref.ref1    = num;\r
-       tok->u.backref.by_name = 0;\r
-#ifdef USE_BACKREF_WITH_LEVEL\r
-       tok->u.backref.exist_level = 0;\r
-#endif\r
-       break;\r
-      }\r
-\r
-    skip_backref:\r
-      if (c == '8' || c == '9') {\r
-       /* normal char */\r
-       p = prev; PINC;\r
-       break;\r
-      }\r
-\r
-      p = prev;\r
-      /* fall through */\r
-    case '0':\r
-      if (IS_SYNTAX_OP(syn, ONIG_SYN_OP_ESC_OCTAL3)) {\r
-       prev = p;\r
-       num = scan_unsigned_octal_number(&p, end, (c == '0' ? 2:3), enc);\r
-       if (num < 0) return ONIGERR_TOO_BIG_NUMBER;\r
-       if (p == prev) {  /* can't read nothing. */\r
-         num = 0; /* but, it's not error */\r
-       }\r
-       tok->type = TK_RAW_BYTE;\r
-       tok->base = 8;\r
-       tok->u.c  = num;\r
-      }\r
-      else if (c != '0') {\r
-       PINC;\r
-      }\r
-      break;\r
-\r
-#ifdef USE_NAMED_GROUP\r
-    case 'k':\r
-      if (IS_SYNTAX_OP2(syn, ONIG_SYN_OP2_ESC_K_NAMED_BACKREF)) {\r
-       PFETCH(c);\r
-       if (c == '<' || c == '\'') {\r
-         UChar* name_end;\r
-         int* backs;\r
-         int back_num;\r
-\r
-         prev = p;\r
-\r
-#ifdef USE_BACKREF_WITH_LEVEL\r
-         name_end = NULL_UCHARP; /* no need. escape gcc warning. */\r
-         r = fetch_name_with_level((OnigCodePoint )c, &p, end, &name_end,\r
-                                   env, &back_num, &tok->u.backref.level);\r
-         if (r == 1) tok->u.backref.exist_level = 1;\r
-         else        tok->u.backref.exist_level = 0;\r
-#else\r
-         r = fetch_name(&p, end, &name_end, env, &back_num, 1);\r
-#endif\r
-         if (r < 0) return r;\r
-\r
-         if (back_num != 0) {\r
-           if (back_num < 0) {\r
-             back_num = BACKREF_REL_TO_ABS(back_num, env);\r
-             if (back_num <= 0)\r
-               return ONIGERR_INVALID_BACKREF;\r
-           }\r
-\r
-           if (IS_SYNTAX_BV(syn, ONIG_SYN_STRICT_CHECK_BACKREF)) {\r
-             if (back_num > env->num_mem ||\r
-                 IS_NULL(SCANENV_MEM_NODES(env)[back_num]))\r
-               return ONIGERR_INVALID_BACKREF;\r
-           }\r
-           tok->type = TK_BACKREF;\r
-           tok->u.backref.by_name = 0;\r
-           tok->u.backref.num  = 1;\r
-           tok->u.backref.ref1 = back_num;\r
-         }\r
-         else {\r
-           num = onig_name_to_group_numbers(env->reg, prev, name_end, &backs);\r
-           if (num <= 0) {\r
-             onig_scan_env_set_error_string(env,\r
-                            ONIGERR_UNDEFINED_NAME_REFERENCE, prev, name_end);\r
-             return ONIGERR_UNDEFINED_NAME_REFERENCE;\r
-           }\r
-           if (IS_SYNTAX_BV(syn, ONIG_SYN_STRICT_CHECK_BACKREF)) {\r
-             int i;\r
-             for (i = 0; i < num; i++) {\r
-               if (backs[i] > env->num_mem ||\r
-                   IS_NULL(SCANENV_MEM_NODES(env)[backs[i]]))\r
-                 return ONIGERR_INVALID_BACKREF;\r
-             }\r
-           }\r
-\r
-           tok->type = TK_BACKREF;\r
-           tok->u.backref.by_name = 1;\r
-           if (num == 1) {\r
-             tok->u.backref.num  = 1;\r
-             tok->u.backref.ref1 = backs[0];\r
-           }\r
-           else {\r
-             tok->u.backref.num  = num;\r
-             tok->u.backref.refs = backs;\r
-           }\r
-         }\r
-       }\r
-       else\r
-         PUNFETCH;\r
-      }\r
-      break;\r
-#endif\r
-\r
-#ifdef USE_SUBEXP_CALL\r
-    case 'g':\r
-      if (IS_SYNTAX_OP2(syn, ONIG_SYN_OP2_ESC_G_SUBEXP_CALL)) {\r
-       PFETCH(c);\r
-       if (c == '<' || c == '\'') {\r
-         int gnum;\r
-         UChar* name_end;\r
-\r
-         prev = p;\r
-         r = fetch_name((OnigCodePoint )c, &p, end, &name_end, env, &gnum, 1);\r
-         if (r < 0) return r;\r
-\r
-         tok->type = TK_CALL;\r
-         tok->u.call.name     = prev;\r
-         tok->u.call.name_end = name_end;\r
-         tok->u.call.gnum     = gnum;\r
-       }\r
-       else\r
-         PUNFETCH;\r
-      }\r
-      break;\r
-#endif\r
-\r
-    case 'Q':\r
-      if (IS_SYNTAX_OP2(syn, ONIG_SYN_OP2_ESC_CAPITAL_Q_QUOTE)) {\r
-       tok->type = TK_QUOTE_OPEN;\r
-      }\r
-      break;\r
-\r
-    case 'p':\r
-    case 'P':\r
-      if (PPEEK_IS('{') &&\r
-         IS_SYNTAX_OP2(syn, ONIG_SYN_OP2_ESC_P_BRACE_CHAR_PROPERTY)) {\r
-       PINC;\r
-       tok->type = TK_CHAR_PROPERTY;\r
-       tok->u.prop.not = (c == 'P' ? 1 : 0);\r
-\r
-       if (IS_SYNTAX_OP2(syn, ONIG_SYN_OP2_ESC_P_BRACE_CIRCUMFLEX_NOT)) {\r
-         PFETCH(c);\r
-         if (c == '^') {\r
-           tok->u.prop.not = (tok->u.prop.not == 0 ? 1 : 0);\r
-         }\r
-         else\r
-           PUNFETCH;\r
-       }\r
-      }\r
-      break;\r
-\r
-    default:\r
-      PUNFETCH;\r
-      num = fetch_escaped_value(&p, end, env);\r
-      if (num < 0) return num;\r
-      /* set_raw: */\r
-      if (tok->u.c != num) {\r
-       tok->type = TK_CODE_POINT;\r
-       tok->u.code = (OnigCodePoint )num;\r
-      }\r
-      else { /* string */\r
-       p = tok->backp + enclen(enc, tok->backp);\r
-      }\r
-      break;\r
-    }\r
-  }\r
-  else {\r
-    tok->u.c = c;\r
-    tok->escaped = 0;\r
-\r
-#ifdef USE_VARIABLE_META_CHARS\r
-    if ((c != ONIG_INEFFECTIVE_META_CHAR) &&\r
-       IS_SYNTAX_OP(syn, ONIG_SYN_OP_VARIABLE_META_CHARACTERS)) {\r
-      if (c == MC_ANYCHAR(syn))\r
-       goto any_char;\r
-      else if (c == MC_ANYTIME(syn))\r
-       goto anytime;\r
-      else if (c == MC_ZERO_OR_ONE_TIME(syn))\r
-       goto zero_or_one_time;\r
-      else if (c == MC_ONE_OR_MORE_TIME(syn))\r
-       goto one_or_more_time;\r
-      else if (c == MC_ANYCHAR_ANYTIME(syn)) {\r
-       tok->type = TK_ANYCHAR_ANYTIME;\r
-       goto out;\r
-      }\r
-    }\r
-#endif\r
-\r
-    switch (c) {\r
-    case '.':\r
-      if (! IS_SYNTAX_OP(syn, ONIG_SYN_OP_DOT_ANYCHAR)) break;\r
-#ifdef USE_VARIABLE_META_CHARS\r
-    any_char:\r
-#endif\r
-      tok->type = TK_ANYCHAR;\r
-      break;\r
-\r
-    case '*':\r
-      if (! IS_SYNTAX_OP(syn, ONIG_SYN_OP_ASTERISK_ZERO_INF)) break;\r
-#ifdef USE_VARIABLE_META_CHARS\r
-    anytime:\r
-#endif\r
-      tok->type = TK_OP_REPEAT;\r
-      tok->u.repeat.lower = 0;\r
-      tok->u.repeat.upper = REPEAT_INFINITE;\r
-      goto greedy_check;\r
-      break;\r
-\r
-    case '+':\r
-      if (! IS_SYNTAX_OP(syn, ONIG_SYN_OP_PLUS_ONE_INF)) break;\r
-#ifdef USE_VARIABLE_META_CHARS\r
-    one_or_more_time:\r
-#endif\r
-      tok->type = TK_OP_REPEAT;\r
-      tok->u.repeat.lower = 1;\r
-      tok->u.repeat.upper = REPEAT_INFINITE;\r
-      goto greedy_check;\r
-      break;\r
-\r
-    case '?':\r
-      if (! IS_SYNTAX_OP(syn, ONIG_SYN_OP_QMARK_ZERO_ONE)) break;\r
-#ifdef USE_VARIABLE_META_CHARS\r
-    zero_or_one_time:\r
-#endif\r
-      tok->type = TK_OP_REPEAT;\r
-      tok->u.repeat.lower = 0;\r
-      tok->u.repeat.upper = 1;\r
-      goto greedy_check;\r
-      break;\r
-\r
-    case '{':\r
-      if (! IS_SYNTAX_OP(syn, ONIG_SYN_OP_BRACE_INTERVAL)) break;\r
-      r = fetch_range_quantifier(&p, end, tok, env);\r
-      if (r < 0) return r;  /* error */\r
-      if (r == 0) goto greedy_check;\r
-      else if (r == 2) { /* {n} */\r
-       if (IS_SYNTAX_BV(syn, ONIG_SYN_FIXED_INTERVAL_IS_GREEDY_ONLY))\r
-         goto possessive_check;\r
-\r
-       goto greedy_check;\r
-      }\r
-      /* r == 1 : normal char */\r
-      break;\r
-\r
-    case '|':\r
-      if (! IS_SYNTAX_OP(syn, ONIG_SYN_OP_VBAR_ALT)) break;\r
-      tok->type = TK_ALT;\r
-      break;\r
-\r
-    case '(':\r
-      if (PPEEK_IS('?') &&\r
-          IS_SYNTAX_OP2(syn, ONIG_SYN_OP2_QMARK_GROUP_EFFECT)) {\r
-        PINC;\r
-        if (PPEEK_IS('#')) {\r
-          PFETCH(c);\r
-          while (1) {\r
-            if (PEND) return ONIGERR_END_PATTERN_IN_GROUP;\r
-            PFETCH(c);\r
-            if (c == MC_ESC(syn)) {\r
-              if (!PEND) PFETCH(c);\r
-            }\r
-            else {\r
-              if (c == ')') break;\r
-            }\r
-          }\r
-          goto start;\r
-        }\r
-        PUNFETCH;\r
-      }\r
-\r
-      if (! IS_SYNTAX_OP(syn, ONIG_SYN_OP_LPAREN_SUBEXP)) break;\r
-      tok->type = TK_SUBEXP_OPEN;\r
-      break;\r
-\r
-    case ')':\r
-      if (! IS_SYNTAX_OP(syn, ONIG_SYN_OP_LPAREN_SUBEXP)) break;\r
-      tok->type = TK_SUBEXP_CLOSE;\r
-      break;\r
-\r
-    case '^':\r
-      if (! IS_SYNTAX_OP(syn, ONIG_SYN_OP_LINE_ANCHOR)) break;\r
-      tok->type = TK_ANCHOR;\r
-      tok->u.subtype = (IS_SINGLELINE(env->option)\r
-                       ? ANCHOR_BEGIN_BUF : ANCHOR_BEGIN_LINE);\r
-      break;\r
-\r
-    case '$':\r
-      if (! IS_SYNTAX_OP(syn, ONIG_SYN_OP_LINE_ANCHOR)) break;\r
-      tok->type = TK_ANCHOR;\r
-      tok->u.subtype = (IS_SINGLELINE(env->option)\r
-                       ? ANCHOR_SEMI_END_BUF : ANCHOR_END_LINE);\r
-      break;\r
-\r
-    case '[':\r
-      if (! IS_SYNTAX_OP(syn, ONIG_SYN_OP_BRACKET_CC)) break;\r
-      tok->type = TK_CC_OPEN;\r
-      break;\r
-\r
-    case ']':\r
-      if (*src > env->pattern)   /* /].../ is allowed. */\r
-       CLOSE_BRACKET_WITHOUT_ESC_WARN(env, (UChar* )"]");\r
-      break;\r
-\r
-    case '#':\r
-      if (IS_EXTEND(env->option)) {\r
-       while (!PEND) {\r
-         PFETCH(c);\r
-         if (ONIGENC_IS_CODE_NEWLINE(enc, c))\r
-           break;\r
-       }\r
-       goto start;\r
-       break;\r
-      }\r
-      break;\r
-\r
-    case ' ': case '\t': case '\n': case '\r': case '\f':\r
-      if (IS_EXTEND(env->option))\r
-       goto start;\r
-      break;\r
-\r
-    default:\r
-      /* string */\r
-      break;\r
-    }\r
-  }\r
-\r
-#ifdef USE_VARIABLE_META_CHARS\r
- out:\r
-#endif\r
-  *src = p;\r
-  return tok->type;\r
-}\r
-\r
-static int\r
-add_ctype_to_cc_by_range(CClassNode* cc, int ctype ARG_UNUSED, int not,\r
-                        OnigEncoding enc ARG_UNUSED,\r
-                         OnigCodePoint sb_out, const OnigCodePoint mbr[])\r
-{\r
-  int i, r;\r
-  OnigCodePoint j;\r
-\r
-  int n = ONIGENC_CODE_RANGE_NUM(mbr);\r
-\r
-  if (not == 0) {\r
-    for (i = 0; i < n; i++) {\r
-      for (j  = ONIGENC_CODE_RANGE_FROM(mbr, i);\r
-           j <= ONIGENC_CODE_RANGE_TO(mbr, i); j++) {\r
-       if (j >= sb_out) {\r
-         if (j == ONIGENC_CODE_RANGE_TO(mbr, i)) i++;\r
-         else if (j > ONIGENC_CODE_RANGE_FROM(mbr, i)) {\r
-           r = add_code_range_to_buf(&(cc->mbuf), j,\r
-                                     ONIGENC_CODE_RANGE_TO(mbr, i));\r
-           if (r != 0) return r;\r
-           i++;\r
-         }\r
-\r
-         goto sb_end;\r
-       }\r
-        BITSET_SET_BIT(cc->bs, j);\r
-      }\r
-    }\r
-\r
-  sb_end:\r
-    for ( ; i < n; i++) {\r
-      r = add_code_range_to_buf(&(cc->mbuf),\r
-                                ONIGENC_CODE_RANGE_FROM(mbr, i),\r
-                                ONIGENC_CODE_RANGE_TO(mbr, i));\r
-      if (r != 0) return r;\r
-    }\r
-  }\r
-  else {\r
-    OnigCodePoint prev = 0;\r
-\r
-    for (i = 0; i < n; i++) {\r
-      for (j = prev;\r
-          j < ONIGENC_CODE_RANGE_FROM(mbr, i); j++) {\r
-       if (j >= sb_out) {\r
-         goto sb_end2;\r
-       }\r
-       BITSET_SET_BIT(cc->bs, j);\r
-      }\r
-      prev = ONIGENC_CODE_RANGE_TO(mbr, i) + 1;\r
-    }\r
-    for (j = prev; j < sb_out; j++) {\r
-      BITSET_SET_BIT(cc->bs, j);\r
-    }\r
-\r
-  sb_end2:\r
-    prev = sb_out;\r
-\r
-    for (i = 0; i < n; i++) {\r
-      if (prev < ONIGENC_CODE_RANGE_FROM(mbr, i)) {\r
-       r = add_code_range_to_buf(&(cc->mbuf), prev,\r
-                                  ONIGENC_CODE_RANGE_FROM(mbr, i) - 1);\r
-       if (r != 0) return r;\r
-      }\r
-      prev = ONIGENC_CODE_RANGE_TO(mbr, i) + 1;\r
-    }\r
-    if (prev < 0x7fffffff) {\r
-      r = add_code_range_to_buf(&(cc->mbuf), prev, 0x7fffffff);\r
-      if (r != 0) return r;\r
-    }\r
-  }\r
-\r
-  return 0;\r
-}\r
-\r
-static int\r
-add_ctype_to_cc(CClassNode* cc, int ctype, int not, ScanEnv* env)\r
-{\r
-  int c, r;\r
-  const OnigCodePoint *ranges;\r
-  OnigCodePoint sb_out;\r
-  OnigEncoding enc = env->enc;\r
-\r
-  r = ONIGENC_GET_CTYPE_CODE_RANGE(enc, ctype, &sb_out, &ranges);\r
-  if (r == 0) {\r
-    return add_ctype_to_cc_by_range(cc, ctype, not, env->enc, sb_out, ranges);\r
-  }\r
-  else if (r != ONIG_NO_SUPPORT_CONFIG) {\r
-    return r;\r
-  }\r
-\r
-  r = 0;\r
-  switch (ctype) {\r
-  case ONIGENC_CTYPE_ALPHA:\r
-  case ONIGENC_CTYPE_BLANK:\r
-  case ONIGENC_CTYPE_CNTRL:\r
-  case ONIGENC_CTYPE_DIGIT:\r
-  case ONIGENC_CTYPE_LOWER:\r
-  case ONIGENC_CTYPE_PUNCT:\r
-  case ONIGENC_CTYPE_SPACE:\r
-  case ONIGENC_CTYPE_UPPER:\r
-  case ONIGENC_CTYPE_XDIGIT:\r
-  case ONIGENC_CTYPE_ASCII:\r
-  case ONIGENC_CTYPE_ALNUM:\r
-    if (not != 0) {\r
-      for (c = 0; c < SINGLE_BYTE_SIZE; c++) {\r
-       if (! ONIGENC_IS_CODE_CTYPE(enc, (OnigCodePoint )c, ctype))\r
-         BITSET_SET_BIT(cc->bs, c);\r
-      }\r
-      ADD_ALL_MULTI_BYTE_RANGE(enc, cc->mbuf);\r
-    }\r
-    else {\r
-      for (c = 0; c < SINGLE_BYTE_SIZE; c++) {\r
-       if (ONIGENC_IS_CODE_CTYPE(enc, (OnigCodePoint )c, ctype))\r
-         BITSET_SET_BIT(cc->bs, c);\r
-      }\r
-    }\r
-    break;\r
-\r
-  case ONIGENC_CTYPE_GRAPH:\r
-  case ONIGENC_CTYPE_PRINT:\r
-    if (not != 0) {\r
-      for (c = 0; c < SINGLE_BYTE_SIZE; c++) {\r
-       if (! ONIGENC_IS_CODE_CTYPE(enc, (OnigCodePoint )c, ctype))\r
-         BITSET_SET_BIT(cc->bs, c);\r
-      }\r
-    }\r
-    else {\r
-      for (c = 0; c < SINGLE_BYTE_SIZE; c++) {\r
-       if (ONIGENC_IS_CODE_CTYPE(enc, (OnigCodePoint )c, ctype))\r
-         BITSET_SET_BIT(cc->bs, c);\r
-      }\r
-      ADD_ALL_MULTI_BYTE_RANGE(enc, cc->mbuf);\r
-    }\r
-    break;\r
-\r
-  case ONIGENC_CTYPE_WORD:\r
-    if (not == 0) {\r
-      for (c = 0; c < SINGLE_BYTE_SIZE; c++) {\r
-       if (IS_CODE_SB_WORD(enc, c)) BITSET_SET_BIT(cc->bs, c);\r
-      }\r
-      ADD_ALL_MULTI_BYTE_RANGE(enc, cc->mbuf);\r
-    }\r
-    else {\r
-      for (c = 0; c < SINGLE_BYTE_SIZE; c++) {\r
-        if ((ONIGENC_CODE_TO_MBCLEN(enc, c) > 0) /* check invalid code point */\r
-           && ! ONIGENC_IS_CODE_WORD(enc, c))\r
-         BITSET_SET_BIT(cc->bs, c);\r
-      }\r
-    }\r
-    break;\r
-\r
-  default:\r
-    return ONIGERR_PARSER_BUG;\r
-    break;\r
-  }\r
-\r
-  return r;\r
-}\r
-\r
-static int\r
-parse_posix_bracket(CClassNode* cc, UChar** src, UChar* end, ScanEnv* env)\r
-{\r
-#define POSIX_BRACKET_CHECK_LIMIT_LENGTH  20\r
-#define POSIX_BRACKET_NAME_MIN_LEN         4\r
-\r
-  static PosixBracketEntryType PBS[] = {\r
-    { (UChar* )"alnum",  ONIGENC_CTYPE_ALNUM,  5 },\r
-    { (UChar* )"alpha",  ONIGENC_CTYPE_ALPHA,  5 },\r
-    { (UChar* )"blank",  ONIGENC_CTYPE_BLANK,  5 },\r
-    { (UChar* )"cntrl",  ONIGENC_CTYPE_CNTRL,  5 },\r
-    { (UChar* )"digit",  ONIGENC_CTYPE_DIGIT,  5 },\r
-    { (UChar* )"graph",  ONIGENC_CTYPE_GRAPH,  5 },\r
-    { (UChar* )"lower",  ONIGENC_CTYPE_LOWER,  5 },\r
-    { (UChar* )"print",  ONIGENC_CTYPE_PRINT,  5 },\r
-    { (UChar* )"punct",  ONIGENC_CTYPE_PUNCT,  5 },\r
-    { (UChar* )"space",  ONIGENC_CTYPE_SPACE,  5 },\r
-    { (UChar* )"upper",  ONIGENC_CTYPE_UPPER,  5 },\r
-    { (UChar* )"xdigit", ONIGENC_CTYPE_XDIGIT, 6 },\r
-    { (UChar* )"ascii",  ONIGENC_CTYPE_ASCII,  5 },\r
-    { (UChar* )"word",   ONIGENC_CTYPE_WORD,   4 },\r
-    { (UChar* )NULL,     -1, 0 }\r
-  };\r
-\r
-  PosixBracketEntryType *pb;\r
-  int not, i, r;\r
-  OnigCodePoint c;\r
-  OnigEncoding enc = env->enc;\r
-  UChar *p = *src;\r
-\r
-  if (PPEEK_IS('^')) {\r
-    PINC_S;\r
-    not = 1;\r
-  }\r
-  else\r
-    not = 0;\r
-\r
-  if (onigenc_strlen(enc, p, end) < POSIX_BRACKET_NAME_MIN_LEN + 3)\r
-    goto not_posix_bracket;\r
-\r
-  for (pb = PBS; IS_NOT_NULL(pb->name); pb++) {\r
-    if (onigenc_with_ascii_strncmp(enc, p, end, pb->name, pb->len) == 0) {\r
-      p = (UChar* )onigenc_step(enc, p, end, pb->len);\r
-      if (onigenc_with_ascii_strncmp(enc, p, end, (UChar* )":]", 2) != 0)\r
-        return ONIGERR_INVALID_POSIX_BRACKET_TYPE;\r
-\r
-      r = add_ctype_to_cc(cc, pb->ctype, not, env);\r
-      if (r != 0) return r;\r
-\r
-      PINC_S; PINC_S;\r
-      *src = p;\r
-      return 0;\r
-    }\r
-  }\r
-\r
- not_posix_bracket:\r
-  c = 0;\r
-  i = 0;\r
-  while (!PEND && ((c = PPEEK) != ':') && c != ']') {\r
-    PINC_S;\r
-    if (++i > POSIX_BRACKET_CHECK_LIMIT_LENGTH) break;\r
-  }\r
-  if (c == ':' && ! PEND) {\r
-    PINC_S;\r
-    if (! PEND) {\r
-      PFETCH_S(c);\r
-      if (c == ']')\r
-        return ONIGERR_INVALID_POSIX_BRACKET_TYPE;\r
-    }\r
-  }\r
-\r
-  return 1;  /* 1: is not POSIX bracket, but no error. */\r
-}\r
-\r
-static int\r
-fetch_char_property_to_ctype(UChar** src, UChar* end, ScanEnv* env)\r
-{\r
-  int r;\r
-  OnigCodePoint c;\r
-  OnigEncoding enc = env->enc;\r
-  UChar *prev, *start, *p = *src;\r
-\r
-  r = 0;\r
-  start = prev = p;\r
-\r
-  while (!PEND) {\r
-    prev = p;\r
-    PFETCH_S(c);\r
-    if (c == '}') {\r
-      r = ONIGENC_PROPERTY_NAME_TO_CTYPE(enc, start, prev);\r
-      if (r < 0) break;\r
-\r
-      *src = p;\r
-      return r;\r
-    }\r
-    else if (c == '(' || c == ')' || c == '{' || c == '|') {\r
-      r = ONIGERR_INVALID_CHAR_PROPERTY_NAME;\r
-      break;\r
-    }\r
-  }\r
-\r
-  onig_scan_env_set_error_string(env, r, *src, prev);\r
-  return r;\r
-}\r
-\r
-static int\r
-parse_char_property(Node** np, OnigToken* tok, UChar** src, UChar* end,\r
-                   ScanEnv* env)\r
-{\r
-  int r, ctype;\r
-  CClassNode* cc;\r
-\r
-  ctype = fetch_char_property_to_ctype(src, end, env);\r
-  if (ctype < 0) return ctype;\r
-\r
-  *np = node_new_cclass();\r
-  CHECK_NULL_RETURN_MEMERR(*np);\r
-  cc = NCCLASS(*np);\r
-  r = add_ctype_to_cc(cc, ctype, 0, env);\r
-  if (r != 0) return r;\r
-  if (tok->u.prop.not != 0) NCCLASS_SET_NOT(cc);\r
-\r
-  return 0;\r
-}\r
-\r
-\r
-enum CCSTATE {\r
-  CCS_VALUE,\r
-  CCS_RANGE,\r
-  CCS_COMPLETE,\r
-  CCS_START\r
-};\r
-\r
-enum CCVALTYPE {\r
-  CCV_SB,\r
-  CCV_CODE_POINT,\r
-  CCV_CLASS\r
-};\r
-\r
-static int\r
-next_state_class(CClassNode* cc, OnigCodePoint* vs, enum CCVALTYPE* type,\r
-                enum CCSTATE* state, ScanEnv* env)\r
-{\r
-  int r;\r
-\r
-  if (*state == CCS_RANGE)\r
-    return ONIGERR_CHAR_CLASS_VALUE_AT_END_OF_RANGE;\r
-\r
-  if (*state == CCS_VALUE && *type != CCV_CLASS) {\r
-    if (*type == CCV_SB)\r
-      BITSET_SET_BIT(cc->bs, (int )(*vs));\r
-    else if (*type == CCV_CODE_POINT) {\r
-      r = add_code_range(&(cc->mbuf), env, *vs, *vs);\r
-      if (r < 0) return r;\r
-    }\r
-  }\r
-\r
-  *state = CCS_VALUE;\r
-  *type  = CCV_CLASS;\r
-  return 0;\r
-}\r
-\r
-static int\r
-next_state_val(CClassNode* cc, OnigCodePoint *vs, OnigCodePoint v,\r
-              int* vs_israw, int v_israw,\r
-              enum CCVALTYPE intype, enum CCVALTYPE* type,\r
-              enum CCSTATE* state, ScanEnv* env)\r
-{\r
-  int r;\r
-\r
-  switch (*state) {\r
-  case CCS_VALUE:\r
-    if (*type == CCV_SB)\r
-      BITSET_SET_BIT(cc->bs, (int )(*vs));\r
-    else if (*type == CCV_CODE_POINT) {\r
-      r = add_code_range(&(cc->mbuf), env, *vs, *vs);\r
-      if (r < 0) return r;\r
-    }\r
-    break;\r
-\r
-  case CCS_RANGE:\r
-    if (intype == *type) {\r
-      if (intype == CCV_SB) {\r
-        if (*vs > 0xff || v > 0xff)\r
-          return ONIGERR_INVALID_CODE_POINT_VALUE;\r
-\r
-       if (*vs > v) {\r
-         if (IS_SYNTAX_BV(env->syntax, ONIG_SYN_ALLOW_EMPTY_RANGE_IN_CC))\r
-           goto ccs_range_end;\r
-         else\r
-           return ONIGERR_EMPTY_RANGE_IN_CHAR_CLASS;\r
-       }\r
-       bitset_set_range(cc->bs, (int )*vs, (int )v);\r
-      }\r
-      else {\r
-       r = add_code_range(&(cc->mbuf), env, *vs, v);\r
-       if (r < 0) return r;\r
-      }\r
-    }\r
-    else {\r
-#if 0\r
-      if (intype == CCV_CODE_POINT && *type == CCV_SB) {\r
-#endif\r
-       if (*vs > v) {\r
-         if (IS_SYNTAX_BV(env->syntax, ONIG_SYN_ALLOW_EMPTY_RANGE_IN_CC))\r
-           goto ccs_range_end;\r
-         else\r
-           return ONIGERR_EMPTY_RANGE_IN_CHAR_CLASS;\r
-       }\r
-       bitset_set_range(cc->bs, (int )*vs, (int )(v < 0xff ? v : 0xff));\r
-       r = add_code_range(&(cc->mbuf), env, (OnigCodePoint )*vs, v);\r
-       if (r < 0) return r;\r
-#if 0\r
-      }\r
-      else\r
-       return ONIGERR_MISMATCH_CODE_LENGTH_IN_CLASS_RANGE;\r
-#endif\r
-    }\r
-  ccs_range_end:\r
-    *state = CCS_COMPLETE;\r
-    break;\r
-\r
-  case CCS_COMPLETE:\r
-  case CCS_START:\r
-    *state = CCS_VALUE;\r
-    break;\r
-\r
-  default:\r
-    break;\r
-  }\r
-\r
-  *vs_israw = v_israw;\r
-  *vs       = v;\r
-  *type     = intype;\r
-  return 0;\r
-}\r
-\r
-static int\r
-code_exist_check(OnigCodePoint c, UChar* from, UChar* end, int ignore_escaped,\r
-                ScanEnv* env)\r
-{\r
-  int in_esc;\r
-  OnigCodePoint code;\r
-  OnigEncoding enc = env->enc;\r
-  UChar* p = from;\r
-\r
-  in_esc = 0;\r
-  while (! PEND) {\r
-    if (ignore_escaped && in_esc) {\r
-      in_esc = 0;\r
-    }\r
-    else {\r
-      PFETCH_S(code);\r
-      if (code == c) return 1;\r
-      if (code == MC_ESC(env->syntax)) in_esc = 1;\r
-    }\r
-  }\r
-  return 0;\r
-}\r
-\r
-static int\r
-parse_char_class(Node** np, OnigToken* tok, UChar** src, UChar* end,\r
-                ScanEnv* env)\r
-{\r
-  int r, neg, len, fetched, and_start;\r
-  OnigCodePoint v, vs;\r
-  UChar *p;\r
-  Node* node;\r
-  CClassNode *cc, *prev_cc;\r
-  CClassNode work_cc;\r
-\r
-  enum CCSTATE state;\r
-  enum CCVALTYPE val_type, in_type;\r
-  int val_israw, in_israw;\r
-\r
-  prev_cc = (CClassNode* )NULL;\r
-  *np = NULL_NODE;\r
-  r = fetch_token_in_cc(tok, src, end, env);\r
-  if (r == TK_CHAR && tok->u.c == '^' && tok->escaped == 0) {\r
-    neg = 1;\r
-    r = fetch_token_in_cc(tok, src, end, env);\r
-  }\r
-  else {\r
-    neg = 0;\r
-  }\r
-\r
-  if (r < 0) return r;\r
-  if (r == TK_CC_CLOSE) {\r
-    if (! code_exist_check((OnigCodePoint )']',\r
-                           *src, env->pattern_end, 1, env))\r
-      return ONIGERR_EMPTY_CHAR_CLASS;\r
-\r
-    CC_ESC_WARN(env, (UChar* )"]");\r
-    r = tok->type = TK_CHAR;  /* allow []...] */\r
-  }\r
-\r
-  *np = node = node_new_cclass();\r
-  CHECK_NULL_RETURN_MEMERR(node);\r
-  cc = NCCLASS(node);\r
-\r
-  and_start = 0;\r
-  state = CCS_START;\r
-  p = *src;\r
-  while (r != TK_CC_CLOSE) {\r
-    fetched = 0;\r
-    switch (r) {\r
-    case TK_CHAR:\r
-      len = ONIGENC_CODE_TO_MBCLEN(env->enc, tok->u.c);\r
-      if (len > 1) {\r
-       in_type = CCV_CODE_POINT;\r
-      }\r
-      else if (len < 0) {\r
-       r = len;\r
-       goto err;\r
-      }\r
-      else {\r
-      sb_char:\r
-       in_type = CCV_SB;\r
-      }\r
-      v = (OnigCodePoint )tok->u.c;\r
-      in_israw = 0;\r
-      goto val_entry2;\r
-      break;\r
-\r
-    case TK_RAW_BYTE:\r
-      /* tok->base != 0 : octal or hexadec. */\r
-      if (! ONIGENC_IS_SINGLEBYTE(env->enc) && tok->base != 0) {\r
-       UChar buf[ONIGENC_CODE_TO_MBC_MAXLEN];\r
-       UChar* bufe = buf + ONIGENC_CODE_TO_MBC_MAXLEN;\r
-       UChar* psave = p;\r
-       int i, base = tok->base;\r
-\r
-       buf[0] = (UChar)tok->u.c;\r
-       for (i = 1; i < ONIGENC_MBC_MAXLEN(env->enc); i++) {\r
-         r = fetch_token_in_cc(tok, &p, end, env);\r
-         if (r < 0) goto err;\r
-         if (r != TK_RAW_BYTE || tok->base != base) {\r
-           fetched = 1;\r
-           break;\r
-         }\r
-         buf[i] = (UChar)tok->u.c;\r
-       }\r
-\r
-       if (i < ONIGENC_MBC_MINLEN(env->enc)) {\r
-         r = ONIGERR_TOO_SHORT_MULTI_BYTE_STRING;\r
-         goto err;\r
-       }\r
-\r
-       len = enclen(env->enc, buf);\r
-       if (i < len) {\r
-         r = ONIGERR_TOO_SHORT_MULTI_BYTE_STRING;\r
-         goto err;\r
-       }\r
-       else if (i > len) { /* fetch back */\r
-         p = psave;\r
-         for (i = 1; i < len; i++) {\r
-           r = fetch_token_in_cc(tok, &p, end, env);\r
-         }\r
-         fetched = 0;\r
-       }\r
-\r
-       if (i == 1) {\r
-         v = (OnigCodePoint )buf[0];\r
-         goto raw_single;\r
-       }\r
-       else {\r
-         v = ONIGENC_MBC_TO_CODE(env->enc, buf, bufe);\r
-         in_type = CCV_CODE_POINT;\r
-       }\r
-      }\r
-      else {\r
-       v = (OnigCodePoint )tok->u.c;\r
-      raw_single:\r
-       in_type = CCV_SB;\r
-      }\r
-      in_israw = 1;\r
-      goto val_entry2;\r
-      break;\r
-\r
-    case TK_CODE_POINT:\r
-      v = tok->u.code;\r
-      in_israw = 1;\r
-    val_entry:\r
-      len = ONIGENC_CODE_TO_MBCLEN(env->enc, v);\r
-      if (len < 0) {\r
-       r = len;\r
-       goto err;\r
-      }\r
-      in_type = (len == 1 ? CCV_SB : CCV_CODE_POINT);\r
-    val_entry2:\r
-      r = next_state_val(cc, &vs, v, &val_israw, in_israw, in_type, &val_type,\r
-                        &state, env);\r
-      if (r != 0) goto err;\r
-      break;\r
-\r
-    case TK_POSIX_BRACKET_OPEN:\r
-      r = parse_posix_bracket(cc, &p, end, env);\r
-      if (r < 0) goto err;\r
-      if (r == 1) {  /* is not POSIX bracket */\r
-       CC_ESC_WARN(env, (UChar* )"[");\r
-       p = tok->backp;\r
-       v = (OnigCodePoint )tok->u.c;\r
-       in_israw = 0;\r
-       goto val_entry;\r
-      }\r
-      goto next_class;\r
-      break;\r
-\r
-    case TK_CHAR_TYPE:\r
-      r = add_ctype_to_cc(cc, tok->u.prop.ctype, tok->u.prop.not, env);\r
-      if (r != 0) return r;\r
-\r
-    next_class:\r
-      r = next_state_class(cc, &vs, &val_type, &state, env);\r
-      if (r != 0) goto err;\r
-      break;\r
-\r
-    case TK_CHAR_PROPERTY:\r
-      {\r
-       int ctype;\r
-\r
-       ctype = fetch_char_property_to_ctype(&p, end, env);\r
-       if (ctype < 0) return ctype;\r
-       r = add_ctype_to_cc(cc, ctype, tok->u.prop.not, env);\r
-       if (r != 0) return r;\r
-       goto next_class;\r
-      }\r
-      break;\r
-\r
-    case TK_CC_RANGE:\r
-      if (state == CCS_VALUE) {\r
-       r = fetch_token_in_cc(tok, &p, end, env);\r
-       if (r < 0) goto err;\r
-       fetched = 1;\r
-       if (r == TK_CC_CLOSE) { /* allow [x-] */\r
-       range_end_val:\r
-         v = (OnigCodePoint )'-';\r
-         in_israw = 0;\r
-         goto val_entry;\r
-       }\r
-       else if (r == TK_CC_AND) {\r
-         CC_ESC_WARN(env, (UChar* )"-");\r
-         goto range_end_val;\r
-       }\r
-       state = CCS_RANGE;\r
-      }\r
-      else if (state == CCS_START) {\r
-       /* [-xa] is allowed */\r
-       v = (OnigCodePoint )tok->u.c;\r
-       in_israw = 0;\r
-\r
-       r = fetch_token_in_cc(tok, &p, end, env);\r
-       if (r < 0) goto err;\r
-       fetched = 1;\r
-       /* [--x] or [a&&-x] is warned. */\r
-       if (r == TK_CC_RANGE || and_start != 0)\r
-         CC_ESC_WARN(env, (UChar* )"-");\r
-\r
-       goto val_entry;\r
-      }\r
-      else if (state == CCS_RANGE) {\r
-       CC_ESC_WARN(env, (UChar* )"-");\r
-       goto sb_char;  /* [!--x] is allowed */\r
-      }\r
-      else { /* CCS_COMPLETE */\r
-       r = fetch_token_in_cc(tok, &p, end, env);\r
-       if (r < 0) goto err;\r
-       fetched = 1;\r
-       if (r == TK_CC_CLOSE) goto range_end_val; /* allow [a-b-] */\r
-       else if (r == TK_CC_AND) {\r
-         CC_ESC_WARN(env, (UChar* )"-");\r
-         goto range_end_val;\r
-       }\r
-       \r
-       if (IS_SYNTAX_BV(env->syntax, ONIG_SYN_ALLOW_DOUBLE_RANGE_OP_IN_CC)) {\r
-         CC_ESC_WARN(env, (UChar* )"-");\r
-         goto sb_char;   /* [0-9-a] is allowed as [0-9\-a] */\r
-       }\r
-       r = ONIGERR_UNMATCHED_RANGE_SPECIFIER_IN_CHAR_CLASS;\r
-       goto err;\r
-      }\r
-      break;\r
-\r
-    case TK_CC_CC_OPEN: /* [ */\r
-      {\r
-       Node *anode;\r
-       CClassNode* acc;\r
-\r
-       r = parse_char_class(&anode, tok, &p, end, env);\r
-       if (r != 0) goto cc_open_err;\r
-       acc = NCCLASS(anode);\r
-       r = or_cclass(cc, acc, env->enc);\r
-\r
-       onig_node_free(anode);\r
-      cc_open_err:\r
-       if (r != 0) goto err;\r
-      }\r
-      break;\r
-\r
-    case TK_CC_AND: /* && */\r
-      {\r
-       if (state == CCS_VALUE) {\r
-         r = next_state_val(cc, &vs, 0, &val_israw, 0, val_type,\r
-                            &val_type, &state, env);\r
-         if (r != 0) goto err;\r
-       }\r
-       /* initialize local variables */\r
-       and_start = 1;\r
-       state = CCS_START;\r
-\r
-       if (IS_NOT_NULL(prev_cc)) {\r
-         r = and_cclass(prev_cc, cc, env->enc);\r
-         if (r != 0) goto err;\r
-         bbuf_free(cc->mbuf);\r
-       }\r
-       else {\r
-         prev_cc = cc;\r
-         cc = &work_cc;\r
-       }\r
-       initialize_cclass(cc);\r
-      }\r
-      break;\r
-\r
-    case TK_EOT:\r
-      r = ONIGERR_PREMATURE_END_OF_CHAR_CLASS;\r
-      goto err;\r
-      break;\r
-    default:\r
-      r = ONIGERR_PARSER_BUG;\r
-      goto err;\r
-      break;\r
-    }\r
-\r
-    if (fetched)\r
-      r = tok->type;\r
-    else {\r
-      r = fetch_token_in_cc(tok, &p, end, env);\r
-      if (r < 0) goto err;\r
-    }\r
-  }\r
-\r
-  if (state == CCS_VALUE) {\r
-    r = next_state_val(cc, &vs, 0, &val_israw, 0, val_type,\r
-                      &val_type, &state, env);\r
-    if (r != 0) goto err;\r
-  }\r
-\r
-  if (IS_NOT_NULL(prev_cc)) {\r
-    r = and_cclass(prev_cc, cc, env->enc);\r
-    if (r != 0) goto err;\r
-    bbuf_free(cc->mbuf);\r
-    cc = prev_cc;\r
-  }\r
-\r
-  if (neg != 0)\r
-    NCCLASS_SET_NOT(cc);\r
-  else\r
-    NCCLASS_CLEAR_NOT(cc);\r
-  if (IS_NCCLASS_NOT(cc) &&\r
-      IS_SYNTAX_BV(env->syntax, ONIG_SYN_NOT_NEWLINE_IN_NEGATIVE_CC)) {\r
-    int is_empty;\r
-\r
-    is_empty = (IS_NULL(cc->mbuf) ? 1 : 0);\r
-    if (is_empty != 0)\r
-      BITSET_IS_EMPTY(cc->bs, is_empty);\r
-\r
-    if (is_empty == 0) {\r
-#define NEWLINE_CODE    0x0a\r
-\r
-      if (ONIGENC_IS_CODE_NEWLINE(env->enc, NEWLINE_CODE)) {\r
-        if (ONIGENC_CODE_TO_MBCLEN(env->enc, NEWLINE_CODE) == 1)\r
-          BITSET_SET_BIT(cc->bs, NEWLINE_CODE);\r
-        else\r
-          add_code_range(&(cc->mbuf), env, NEWLINE_CODE, NEWLINE_CODE);\r
-      }\r
-    }\r
-  }\r
-  *src = p;\r
-  return 0;\r
-\r
- err:\r
-  if (cc != NCCLASS(*np))\r
-    bbuf_free(cc->mbuf);\r
-  onig_node_free(*np);\r
-  return r;\r
-}\r
-\r
-static int parse_subexp(Node** top, OnigToken* tok, int term,\r
-                       UChar** src, UChar* end, ScanEnv* env);\r
-\r
-static int\r
-parse_enclose(Node** np, OnigToken* tok, int term, UChar** src, UChar* end,\r
-             ScanEnv* env)\r
-{\r
-  int r, num;\r
-  Node *target;\r
-  OnigOptionType option;\r
-  OnigCodePoint c;\r
-  OnigEncoding enc = env->enc;\r
-\r
-#ifdef USE_NAMED_GROUP\r
-  int list_capture;\r
-#endif\r
-\r
-  UChar* p = *src;\r
-  PFETCH_READY;\r
-\r
-  *np = NULL;\r
-  if (PEND) return ONIGERR_END_PATTERN_WITH_UNMATCHED_PARENTHESIS;\r
-\r
-  option = env->option;\r
-  if (PPEEK_IS('?') &&\r
-      IS_SYNTAX_OP2(env->syntax, ONIG_SYN_OP2_QMARK_GROUP_EFFECT)) {\r
-    PINC;\r
-    if (PEND) return ONIGERR_END_PATTERN_IN_GROUP;\r
-\r
-    PFETCH(c);\r
-    switch (c) {\r
-    case ':':   /* (?:...) grouping only */\r
-    group:\r
-      r = fetch_token(tok, &p, end, env);\r
-      if (r < 0) return r;\r
-      r = parse_subexp(np, tok, term, &p, end, env);\r
-      if (r < 0) return r;\r
-      *src = p;\r
-      return 1; /* group */\r
-      break;\r
-\r
-    case '=':\r
-      *np = onig_node_new_anchor(ANCHOR_PREC_READ);\r
-      break;\r
-    case '!':  /*         preceding read */\r
-      *np = onig_node_new_anchor(ANCHOR_PREC_READ_NOT);\r
-      break;\r
-    case '>':            /* (?>...) stop backtrack */\r
-      *np = node_new_enclose(ENCLOSE_STOP_BACKTRACK);\r
-      break;\r
-\r
-#ifdef USE_NAMED_GROUP\r
-    case '\'':\r
-      if (IS_SYNTAX_OP2(env->syntax, ONIG_SYN_OP2_QMARK_LT_NAMED_GROUP)) {\r
-       goto named_group1;\r
-      }\r
-      else\r
-       return ONIGERR_UNDEFINED_GROUP_OPTION;\r
-      break;\r
-#endif\r
-\r
-    case '<':   /* look behind (?<=...), (?<!...) */\r
-      PFETCH(c);\r
-      if (c == '=')\r
-       *np = onig_node_new_anchor(ANCHOR_LOOK_BEHIND);\r
-      else if (c == '!')\r
-       *np = onig_node_new_anchor(ANCHOR_LOOK_BEHIND_NOT);\r
-#ifdef USE_NAMED_GROUP\r
-      else {\r
-       if (IS_SYNTAX_OP2(env->syntax, ONIG_SYN_OP2_QMARK_LT_NAMED_GROUP)) {\r
-         UChar *name;\r
-         UChar *name_end;\r
-\r
-         PUNFETCH;\r
-         c = '<';\r
-\r
-       named_group1:\r
-         list_capture = 0;\r
-\r
-       named_group2:\r
-         name = p;\r
-         r = fetch_name((OnigCodePoint )c, &p, end, &name_end, env, &num, 0);\r
-         if (r < 0) return r;\r
-\r
-         num = scan_env_add_mem_entry(env);\r
-         if (num < 0) return num;\r
-         if (list_capture != 0 && num >= (int )BIT_STATUS_BITS_NUM)\r
-           return ONIGERR_GROUP_NUMBER_OVER_FOR_CAPTURE_HISTORY;\r
-\r
-         r = name_add(env->reg, name, name_end, num, env);\r
-         if (r != 0) return r;\r
-         *np = node_new_enclose_memory(env->option, 1);\r
-         CHECK_NULL_RETURN_MEMERR(*np);\r
-         NENCLOSE(*np)->regnum = num;\r
-         if (list_capture != 0)\r
-           BIT_STATUS_ON_AT_SIMPLE(env->capture_history, num);\r
-         env->num_named++;\r
-       }\r
-       else {\r
-         return ONIGERR_UNDEFINED_GROUP_OPTION;\r
-       }\r
-      }\r
-#else\r
-      else {\r
-       return ONIGERR_UNDEFINED_GROUP_OPTION;\r
-      }\r
-#endif\r
-      break;\r
-\r
-    case '@':\r
-      if (IS_SYNTAX_OP2(env->syntax, ONIG_SYN_OP2_ATMARK_CAPTURE_HISTORY)) {\r
-#ifdef USE_NAMED_GROUP\r
-       if (IS_SYNTAX_OP2(env->syntax, ONIG_SYN_OP2_QMARK_LT_NAMED_GROUP)) {\r
-         PFETCH(c);\r
-         if (c == '<' || c == '\'') {\r
-           list_capture = 1;\r
-           goto named_group2; /* (?@<name>...) */\r
-         }\r
-         PUNFETCH;\r
-       }\r
-#endif\r
-       *np = node_new_enclose_memory(env->option, 0);\r
-       CHECK_NULL_RETURN_MEMERR(*np);\r
-       num = scan_env_add_mem_entry(env);\r
-       if (num < 0) {\r
-         onig_node_free(*np);\r
-         return num;\r
-       }\r
-       else if (num >= (int )BIT_STATUS_BITS_NUM) {\r
-         onig_node_free(*np);\r
-         return ONIGERR_GROUP_NUMBER_OVER_FOR_CAPTURE_HISTORY;\r
-       }\r
-       NENCLOSE(*np)->regnum = num;\r
-       BIT_STATUS_ON_AT_SIMPLE(env->capture_history, num);\r
-      }\r
-      else {\r
-       return ONIGERR_UNDEFINED_GROUP_OPTION;\r
-      }\r
-      break;\r
-\r
-#ifdef USE_POSIXLINE_OPTION\r
-    case 'p':\r
-#endif\r
-    case '-': case 'i': case 'm': case 's': case 'x':\r
-      {\r
-       int neg = 0;\r
-\r
-       while (1) {\r
-         switch (c) {\r
-         case ':':\r
-         case ')':\r
-         break;\r
-\r
-         case '-':  neg = 1; break;\r
-         case 'x':  ONOFF(option, ONIG_OPTION_EXTEND,     neg); break;\r
-         case 'i':  ONOFF(option, ONIG_OPTION_IGNORECASE, neg); break;\r
-         case 's':\r
-           if (IS_SYNTAX_OP2(env->syntax, ONIG_SYN_OP2_OPTION_PERL)) {\r
-             ONOFF(option, ONIG_OPTION_MULTILINE,  neg);\r
-           }\r
-           else\r
-             return ONIGERR_UNDEFINED_GROUP_OPTION;\r
-           break;\r
-\r
-         case 'm':\r
-           if (IS_SYNTAX_OP2(env->syntax, ONIG_SYN_OP2_OPTION_PERL)) {\r
-             ONOFF(option, ONIG_OPTION_SINGLELINE, (neg == 0 ? 1 : 0));\r
-           }\r
-           else if (IS_SYNTAX_OP2(env->syntax, ONIG_SYN_OP2_OPTION_RUBY)) {\r
-             ONOFF(option, ONIG_OPTION_MULTILINE,  neg);\r
-           }\r
-           else\r
-             return ONIGERR_UNDEFINED_GROUP_OPTION;\r
-           break;\r
-#ifdef USE_POSIXLINE_OPTION\r
-         case 'p':\r
-           ONOFF(option, ONIG_OPTION_MULTILINE|ONIG_OPTION_SINGLELINE, neg);\r
-           break;\r
-#endif\r
-         default:\r
-           return ONIGERR_UNDEFINED_GROUP_OPTION;\r
-         }\r
-\r
-         if (c == ')') {\r
-           *np = node_new_option(option);\r
-           CHECK_NULL_RETURN_MEMERR(*np);\r
-           *src = p;\r
-           return 2; /* option only */\r
-         }\r
-         else if (c == ':') {\r
-           OnigOptionType prev = env->option;\r
-\r
-           env->option     = option;\r
-           r = fetch_token(tok, &p, end, env);\r
-           if (r < 0) return r;\r
-           r = parse_subexp(&target, tok, term, &p, end, env);\r
-           env->option = prev;\r
-           if (r < 0) return r;\r
-           *np = node_new_option(option);\r
-           CHECK_NULL_RETURN_MEMERR(*np);\r
-           NENCLOSE(*np)->target = target;\r
-           *src = p;\r
-           return 0;\r
-         }\r
-\r
-         if (PEND) return ONIGERR_END_PATTERN_IN_GROUP;\r
-         PFETCH(c);\r
-       }\r
-      }\r
-      break;\r
-\r
-    default:\r
-      return ONIGERR_UNDEFINED_GROUP_OPTION;\r
-    }\r
-  }\r
-  else {\r
-    if (ONIG_IS_OPTION_ON(env->option, ONIG_OPTION_DONT_CAPTURE_GROUP))\r
-      goto group;\r
-\r
-    *np = node_new_enclose_memory(env->option, 0);\r
-    CHECK_NULL_RETURN_MEMERR(*np);\r
-    num = scan_env_add_mem_entry(env);\r
-    if (num < 0) return num;\r
-    NENCLOSE(*np)->regnum = num;\r
-  }\r
-\r
-  CHECK_NULL_RETURN_MEMERR(*np);\r
-  r = fetch_token(tok, &p, end, env);\r
-  if (r < 0) return r;\r
-  r = parse_subexp(&target, tok, term, &p, end, env);\r
-  if (r < 0) return r;\r
-\r
-  if (NTYPE(*np) == NT_ANCHOR)\r
-    NANCHOR(*np)->target = target;\r
-  else {\r
-    NENCLOSE(*np)->target = target;\r
-    if (NENCLOSE(*np)->type == ENCLOSE_MEMORY) {\r
-      /* Don't move this to previous of parse_subexp() */\r
-      r = scan_env_set_mem_node(env, NENCLOSE(*np)->regnum, *np);\r
-      if (r != 0) return r;\r
-    }\r
-  }\r
-\r
-  *src = p;\r
-  return 0;\r
-}\r
-\r
-static const char* PopularQStr[] = {\r
-  "?", "*", "+", "??", "*?", "+?"\r
-};\r
-\r
-static const char* ReduceQStr[] = {\r
-  "", "", "*", "*?", "??", "+ and ??", "+? and ?"\r
-};\r
-\r
-static int\r
-set_quantifier(Node* qnode, Node* target, int group, ScanEnv* env)\r
-{\r
-  QtfrNode* qn;\r
-\r
-  qn = NQTFR(qnode);\r
-  if (qn->lower == 1 && qn->upper == 1) {\r
-    return 1;\r
-  }\r
-\r
-  switch (NTYPE(target)) {\r
-  case NT_STR:\r
-    if (! group) {\r
-      StrNode* sn = NSTR(target);\r
-      if (str_node_can_be_split(sn, env->enc)) {\r
-       Node* n = str_node_split_last_char(sn, env->enc);\r
-       if (IS_NOT_NULL(n)) {\r
-         qn->target = n;\r
-         return 2;\r
-       }\r
-      }\r
-    }\r
-    break;\r
-\r
-  case NT_QTFR:\r
-    { /* check redundant double repeat. */\r
-      /* verbose warn (?:.?)? etc... but not warn (.?)? etc... */\r
-      QtfrNode* qnt   = NQTFR(target);\r
-      int nestq_num   = popular_quantifier_num(qn);\r
-      int targetq_num = popular_quantifier_num(qnt);\r
-\r
-#ifdef USE_WARNING_REDUNDANT_NESTED_REPEAT_OPERATOR\r
-      if (!IS_QUANTIFIER_BY_NUMBER(qn) && !IS_QUANTIFIER_BY_NUMBER(qnt) &&\r
-         IS_SYNTAX_BV(env->syntax, ONIG_SYN_WARN_REDUNDANT_NESTED_REPEAT)) {\r
-        UChar buf[WARN_BUFSIZE];\r
-\r
-        switch(ReduceTypeTable[targetq_num][nestq_num]) {\r
-        case RQ_ASIS:\r
-          break;\r
-\r
-        case RQ_DEL:\r
-          if (onig_verb_warn != onig_null_warn) {\r
-            onig_snprintf_with_pattern(buf, WARN_BUFSIZE, env->enc,\r
-                                 env->pattern, env->pattern_end,\r
-                                 (UChar* )"redundant nested repeat operator");\r
-            (*onig_verb_warn)((char* )buf);\r
-          }\r
-          goto warn_exit;\r
-          break;\r
-\r
-        default:\r
-          if (onig_verb_warn != onig_null_warn) {\r
-            onig_snprintf_with_pattern(buf, WARN_BUFSIZE, env->enc,\r
-                                       env->pattern, env->pattern_end,\r
-            (UChar* )"nested repeat operator %s and %s was replaced with '%s'",\r
-            PopularQStr[targetq_num], PopularQStr[nestq_num],\r
-            ReduceQStr[ReduceTypeTable[targetq_num][nestq_num]]);\r
-            (*onig_verb_warn)((char* )buf);\r
-          }\r
-          goto warn_exit;\r
-          break;\r
-        }\r
-      }\r
-\r
-    warn_exit:\r
-#endif\r
-      if (targetq_num >= 0) {\r
-       if (nestq_num >= 0) {\r
-         onig_reduce_nested_quantifier(qnode, target);\r
-         goto q_exit;\r
-       }\r
-       else if (targetq_num == 1 || targetq_num == 2) { /* * or + */\r
-         /* (?:a*){n,m}, (?:a+){n,m} => (?:a*){n,n}, (?:a+){n,n} */\r
-         if (! IS_REPEAT_INFINITE(qn->upper) && qn->upper > 1 && qn->greedy) {\r
-           qn->upper = (qn->lower == 0 ? 1 : qn->lower);\r
-         }\r
-       }\r
-      }\r
-    }\r
-    break;\r
-\r
-  default:\r
-    break;\r
-  }\r
-\r
-  qn->target = target;\r
- q_exit:\r
-  return 0;\r
-}\r
-\r
-\r
-#ifdef USE_SHARED_CCLASS_TABLE\r
-\r
-#define THRESHOLD_RANGE_NUM_FOR_SHARE_CCLASS     8\r
-\r
-/* for ctype node hash table */\r
-\r
-typedef struct {\r
-  OnigEncoding enc;\r
-  int not;\r
-  int type;\r
-} type_cclass_key;\r
-\r
-static int type_cclass_cmp(type_cclass_key* x, type_cclass_key* y)\r
-{\r
-  if (x->type != y->type) return 1;\r
-  if (x->enc  != y->enc)  return 1;\r
-  if (x->not  != y->not)  return 1;\r
-  return 0;\r
-}\r
-\r
-static int type_cclass_hash(type_cclass_key* key)\r
-{\r
-  int i, val;\r
-  UChar *p;\r
-\r
-  val = 0;\r
-\r
-  p = (UChar* )&(key->enc);\r
-  for (i = 0; i < (int )sizeof(key->enc); i++) {\r
-    val = val * 997 + (int )*p++;\r
-  }\r
-\r
-  p = (UChar* )(&key->type);\r
-  for (i = 0; i < (int )sizeof(key->type); i++) {\r
-    val = val * 997 + (int )*p++;\r
-  }\r
-\r
-  val += key->not;\r
-  return val + (val >> 5);\r
-}\r
-\r
-static struct st_hash_type type_type_cclass_hash = {\r
-    type_cclass_cmp,\r
-    type_cclass_hash,\r
-};\r
-\r
-static st_table* OnigTypeCClassTable;\r
-\r
-\r
-static int\r
-i_free_shared_class(type_cclass_key* key, Node* node, void* arg ARG_UNUSED)\r
-{\r
-  if (IS_NOT_NULL(node)) {\r
-    CClassNode* cc = NCCLASS(node);\r
-    if (IS_NOT_NULL(cc->mbuf)) xfree(cc->mbuf);\r
-    xfree(node);\r
-  }\r
-\r
-  if (IS_NOT_NULL(key)) xfree(key);\r
-  return ST_DELETE;\r
-}\r
-\r
-extern int\r
-onig_free_shared_cclass_table(void)\r
-{\r
-  if (IS_NOT_NULL(OnigTypeCClassTable)) {\r
-    onig_st_foreach(OnigTypeCClassTable, i_free_shared_class, 0);\r
-    onig_st_free_table(OnigTypeCClassTable);\r
-    OnigTypeCClassTable = NULL;\r
-  }\r
-\r
-  return 0;\r
-}\r
-\r
-#endif /* USE_SHARED_CCLASS_TABLE */\r
-\r
-\r
-#ifndef CASE_FOLD_IS_APPLIED_INSIDE_NEGATIVE_CCLASS\r
-static int\r
-clear_not_flag_cclass(CClassNode* cc, OnigEncoding enc)\r
-{\r
-  BBuf *tbuf;\r
-  int r;\r
-\r
-  if (IS_NCCLASS_NOT(cc)) {\r
-    bitset_invert(cc->bs);\r
-\r
-    if (! ONIGENC_IS_SINGLEBYTE(enc)) {\r
-      r = not_code_range_buf(enc, cc->mbuf, &tbuf);\r
-      if (r != 0) return r;\r
-\r
-      bbuf_free(cc->mbuf);\r
-      cc->mbuf = tbuf;\r
-    }\r
-\r
-    NCCLASS_CLEAR_NOT(cc);\r
-  }\r
-\r
-  return 0;\r
-}\r
-#endif /* CASE_FOLD_IS_APPLIED_INSIDE_NEGATIVE_CCLASS */\r
-\r
-typedef struct {\r
-  ScanEnv*    env;\r
-  CClassNode* cc;\r
-  Node*       alt_root;\r
-  Node**      ptail;\r
-} IApplyCaseFoldArg;\r
-\r
-static int\r
-i_apply_case_fold(OnigCodePoint from, OnigCodePoint to[],\r
-                 int to_len, void* arg)\r
-{\r
-  IApplyCaseFoldArg* iarg;\r
-  ScanEnv* env;\r
-  CClassNode* cc;\r
-  BitSetRef bs;\r
-\r
-  iarg = (IApplyCaseFoldArg* )arg;\r
-  env = iarg->env;\r
-  cc  = iarg->cc;\r
-  bs = cc->bs;\r
-\r
-  if (to_len == 1) {\r
-    int is_in = onig_is_code_in_cc(env->enc, from, cc);\r
-#ifdef CASE_FOLD_IS_APPLIED_INSIDE_NEGATIVE_CCLASS\r
-    if ((is_in != 0 && !IS_NCCLASS_NOT(cc)) ||\r
-       (is_in == 0 &&  IS_NCCLASS_NOT(cc))) {\r
-      if (ONIGENC_MBC_MINLEN(env->enc) > 1 || *to >= SINGLE_BYTE_SIZE) {\r
-       add_code_range(&(cc->mbuf), env, *to, *to);\r
-      }\r
-      else {\r
-       BITSET_SET_BIT(bs, *to);\r
-      }\r
-    }\r
-#else\r
-    if (is_in != 0) {\r
-      if (ONIGENC_MBC_MINLEN(env->enc) > 1 || *to >= SINGLE_BYTE_SIZE) {\r
-       if (IS_NCCLASS_NOT(cc)) clear_not_flag_cclass(cc, env->enc);\r
-       add_code_range(&(cc->mbuf), env, *to, *to);\r
-      }\r
-      else {\r
-       if (IS_NCCLASS_NOT(cc)) {\r
-         BITSET_CLEAR_BIT(bs, *to);\r
-       }\r
-       else\r
-         BITSET_SET_BIT(bs, *to);\r
-      }\r
-    }\r
-#endif /* CASE_FOLD_IS_APPLIED_INSIDE_NEGATIVE_CCLASS */\r
-  }\r
-  else {\r
-    int r, i, len;\r
-    UChar buf[ONIGENC_CODE_TO_MBC_MAXLEN];\r
-    Node *snode = NULL_NODE;\r
-\r
-    if (onig_is_code_in_cc(env->enc, from, cc)\r
-#ifdef CASE_FOLD_IS_APPLIED_INSIDE_NEGATIVE_CCLASS\r
-       && !IS_NCCLASS_NOT(cc)\r
-#endif\r
-       ) {\r
-      for (i = 0; i < to_len; i++) {\r
-       len = ONIGENC_CODE_TO_MBC(env->enc, to[i], buf);\r
-       if (i == 0) {\r
-         snode = onig_node_new_str(buf, buf + len);\r
-         CHECK_NULL_RETURN_MEMERR(snode);\r
-\r
-         /* char-class expanded multi-char only\r
-            compare with string folded at match time. */\r
-         NSTRING_SET_AMBIG(snode);\r
-       }\r
-       else {\r
-         r = onig_node_str_cat(snode, buf, buf + len);\r
-         if (r < 0) {\r
-           onig_node_free(snode);\r
-           return r;\r
-         }\r
-       }\r
-      }\r
-\r
-      *(iarg->ptail) = onig_node_new_alt(snode, NULL_NODE);\r
-      CHECK_NULL_RETURN_MEMERR(*(iarg->ptail));\r
-      iarg->ptail = &(NCDR((*(iarg->ptail))));\r
-    }\r
-  }\r
-\r
-  return 0;\r
-}\r
-\r
-static int\r
-parse_exp(Node** np, OnigToken* tok, int term,\r
-         UChar** src, UChar* end, ScanEnv* env)\r
-{\r
-  int r, len, group = 0;\r
-  Node* qn;\r
-  Node** targetp;\r
-\r
-  *np = NULL;\r
-  if (tok->type == (enum TokenSyms )term)\r
-    goto end_of_token;\r
-\r
-  switch (tok->type) {\r
-  case TK_ALT:\r
-  case TK_EOT:\r
-  end_of_token:\r
-  *np = node_new_empty();\r
-  return tok->type;\r
-  break;\r
-\r
-  case TK_SUBEXP_OPEN:\r
-    r = parse_enclose(np, tok, TK_SUBEXP_CLOSE, src, end, env);\r
-    if (r < 0) return r;\r
-    if (r == 1) group = 1;\r
-    else if (r == 2) { /* option only */\r
-      Node* target;\r
-      OnigOptionType prev = env->option;\r
-\r
-      env->option = NENCLOSE(*np)->option;\r
-      r = fetch_token(tok, src, end, env);\r
-      if (r < 0) return r;\r
-      r = parse_subexp(&target, tok, term, src, end, env);\r
-      env->option = prev;\r
-      if (r < 0) return r;\r
-      NENCLOSE(*np)->target = target;  \r
-      return tok->type;\r
-    }\r
-    break;\r
-\r
-  case TK_SUBEXP_CLOSE:\r
-    if (! IS_SYNTAX_BV(env->syntax, ONIG_SYN_ALLOW_UNMATCHED_CLOSE_SUBEXP))\r
-      return ONIGERR_UNMATCHED_CLOSE_PARENTHESIS;\r
-\r
-    if (tok->escaped) goto tk_raw_byte;\r
-    else goto tk_byte;\r
-    break;\r
-\r
-  case TK_STRING:\r
-  tk_byte:\r
-    {\r
-      *np = node_new_str(tok->backp, *src);\r
-      CHECK_NULL_RETURN_MEMERR(*np);\r
-\r
-      while (1) {\r
-       r = fetch_token(tok, src, end, env);\r
-       if (r < 0) return r;\r
-       if (r != TK_STRING) break;\r
-\r
-       r = onig_node_str_cat(*np, tok->backp, *src);\r
-       if (r < 0) return r;\r
-      }\r
-\r
-    string_end:\r
-      targetp = np;\r
-      goto repeat;\r
-    }\r
-    break;\r
-\r
-  case TK_RAW_BYTE:\r
-  tk_raw_byte:\r
-    {\r
-      *np = node_new_str_raw_char((UChar )tok->u.c);\r
-      CHECK_NULL_RETURN_MEMERR(*np);\r
-      len = 1;\r
-      while (1) {\r
-       if (len >= ONIGENC_MBC_MINLEN(env->enc)) {\r
-         if (len == enclen(env->enc, NSTR(*np)->s)) {\r
-           r = fetch_token(tok, src, end, env);\r
-           NSTRING_CLEAR_RAW(*np);\r
-           goto string_end;\r
-         }\r
-       }\r
-\r
-       r = fetch_token(tok, src, end, env);\r
-       if (r < 0) return r;\r
-       if (r != TK_RAW_BYTE) {\r
-         /* Don't use this, it is wrong for little endian encodings. */\r
-#ifdef USE_PAD_TO_SHORT_BYTE_CHAR\r
-         int rem;\r
-         if (len < ONIGENC_MBC_MINLEN(env->enc)) {\r
-           rem = ONIGENC_MBC_MINLEN(env->enc) - len;\r
-           (void )node_str_head_pad(NSTR(*np), rem, (UChar )0);\r
-           if (len + rem == enclen(env->enc, NSTR(*np)->s)) {\r
-             NSTRING_CLEAR_RAW(*np);\r
-             goto string_end;\r
-           }\r
-         }\r
-#endif\r
-         return ONIGERR_TOO_SHORT_MULTI_BYTE_STRING;\r
-       }\r
-\r
-       r = node_str_cat_char(*np, (UChar )tok->u.c);\r
-       if (r < 0) return r;\r
-\r
-       len++;\r
-      }\r
-    }\r
-    break;\r
-\r
-  case TK_CODE_POINT:\r
-    {\r
-      UChar buf[ONIGENC_CODE_TO_MBC_MAXLEN];\r
-      int num = ONIGENC_CODE_TO_MBC(env->enc, tok->u.code, buf);\r
-      if (num < 0) return num;\r
-#ifdef NUMBERED_CHAR_IS_NOT_CASE_AMBIG\r
-      *np = node_new_str_raw(buf, buf + num);\r
-#else\r
-      *np = node_new_str(buf, buf + num);\r
-#endif\r
-      CHECK_NULL_RETURN_MEMERR(*np);\r
-    }\r
-    break;\r
-\r
-  case TK_QUOTE_OPEN:\r
-    {\r
-      OnigCodePoint end_op[2];\r
-      UChar *qstart, *qend, *nextp;\r
-\r
-      end_op[0] = (OnigCodePoint )MC_ESC(env->syntax);\r
-      end_op[1] = (OnigCodePoint )'E';\r
-      qstart = *src;\r
-      qend = find_str_position(end_op, 2, qstart, end, &nextp, env->enc);\r
-      if (IS_NULL(qend)) {\r
-       nextp = qend = end;\r
-      }\r
-      *np = node_new_str(qstart, qend);\r
-      CHECK_NULL_RETURN_MEMERR(*np);\r
-      *src = nextp;\r
-    }\r
-    break;\r
-\r
-  case TK_CHAR_TYPE:\r
-    {\r
-      switch (tok->u.prop.ctype) {\r
-      case ONIGENC_CTYPE_WORD:\r
-       *np = node_new_ctype(tok->u.prop.ctype, tok->u.prop.not);\r
-       CHECK_NULL_RETURN_MEMERR(*np);\r
-       break;\r
-\r
-      case ONIGENC_CTYPE_SPACE:\r
-      case ONIGENC_CTYPE_DIGIT:\r
-      case ONIGENC_CTYPE_XDIGIT:\r
-       {\r
-         CClassNode* cc;\r
-\r
-#ifdef USE_SHARED_CCLASS_TABLE\r
-          const OnigCodePoint *mbr;\r
-         OnigCodePoint sb_out;\r
-\r
-          r = ONIGENC_GET_CTYPE_CODE_RANGE(env->enc, tok->u.prop.ctype,\r
-                                          &sb_out, &mbr);\r
-          if (r == 0 &&\r
-              ONIGENC_CODE_RANGE_NUM(mbr)\r
-              >= THRESHOLD_RANGE_NUM_FOR_SHARE_CCLASS) {\r
-            type_cclass_key  key;\r
-            type_cclass_key* new_key;\r
-\r
-            key.enc  = env->enc;\r
-            key.not  = tok->u.prop.not;\r
-            key.type = tok->u.prop.ctype;\r
-\r
-            THREAD_ATOMIC_START;\r
-\r
-            if (IS_NULL(OnigTypeCClassTable)) {\r
-              OnigTypeCClassTable\r
-                = onig_st_init_table_with_size(&type_type_cclass_hash, 10);\r
-              if (IS_NULL(OnigTypeCClassTable)) {\r
-                THREAD_ATOMIC_END;\r
-                return ONIGERR_MEMORY;\r
-              }\r
-            }\r
-            else {\r
-              if (onig_st_lookup(OnigTypeCClassTable, (st_data_t )&key,\r
-                                 (st_data_t* )np)) {\r
-                THREAD_ATOMIC_END;\r
-                break;\r
-              }\r
-            }\r
-\r
-            *np = node_new_cclass_by_codepoint_range(tok->u.prop.not,\r
-                                                    sb_out, mbr);\r
-            if (IS_NULL(*np)) {\r
-              THREAD_ATOMIC_END;\r
-              return ONIGERR_MEMORY;\r
-            }\r
-\r
-            cc = NCCLASS(*np);\r
-            NCCLASS_SET_SHARE(cc);\r
-            new_key = (type_cclass_key* )xmalloc(sizeof(type_cclass_key));\r
-           xmemcpy(new_key, &key, sizeof(type_cclass_key));\r
-            onig_st_add_direct(OnigTypeCClassTable, (st_data_t )new_key,\r
-                               (st_data_t )*np);\r
-            \r
-            THREAD_ATOMIC_END;\r
-          }\r
-          else {\r
-#endif\r
-            *np = node_new_cclass();\r
-            CHECK_NULL_RETURN_MEMERR(*np);\r
-            cc = NCCLASS(*np);\r
-            add_ctype_to_cc(cc, tok->u.prop.ctype, 0, env);\r
-            if (tok->u.prop.not != 0) NCCLASS_SET_NOT(cc);\r
-#ifdef USE_SHARED_CCLASS_TABLE\r
-          }\r
-#endif\r
-       }\r
-       break;\r
-\r
-      default:\r
-       return ONIGERR_PARSER_BUG;\r
-       break;\r
-      }\r
-    }\r
-    break;\r
-\r
-  case TK_CHAR_PROPERTY:\r
-    r = parse_char_property(np, tok, src, end, env);\r
-    if (r != 0) return r;\r
-    break;\r
-\r
-  case TK_CC_OPEN:\r
-    {\r
-      CClassNode* cc;\r
-\r
-      r = parse_char_class(np, tok, src, end, env);\r
-      if (r != 0) return r;\r
-\r
-      cc = NCCLASS(*np);\r
-      if (IS_IGNORECASE(env->option)) {\r
-       IApplyCaseFoldArg iarg;\r
-\r
-       iarg.env      = env;\r
-       iarg.cc       = cc;\r
-       iarg.alt_root = NULL_NODE;\r
-       iarg.ptail    = &(iarg.alt_root);\r
-\r
-       r = ONIGENC_APPLY_ALL_CASE_FOLD(env->enc, env->case_fold_flag,\r
-                                       i_apply_case_fold, &iarg);\r
-       if (r != 0) {\r
-         onig_node_free(iarg.alt_root);\r
-         return r;\r
-       }\r
-       if (IS_NOT_NULL(iarg.alt_root)) {\r
-          Node* work = onig_node_new_alt(*np, iarg.alt_root);\r
-          if (IS_NULL(work)) {\r
-            onig_node_free(iarg.alt_root);\r
-            return ONIGERR_MEMORY;\r
-          }\r
-          *np = work;\r
-       }\r
-      }\r
-    }\r
-    break;\r
-\r
-  case TK_ANYCHAR:\r
-    *np = node_new_anychar();\r
-    CHECK_NULL_RETURN_MEMERR(*np);\r
-    break;\r
-\r
-  case TK_ANYCHAR_ANYTIME:\r
-    *np = node_new_anychar();\r
-    CHECK_NULL_RETURN_MEMERR(*np);\r
-    qn = node_new_quantifier(0, REPEAT_INFINITE, 0);\r
-    CHECK_NULL_RETURN_MEMERR(qn);\r
-    NQTFR(qn)->target = *np;\r
-    *np = qn;\r
-    break;\r
-\r
-  case TK_BACKREF:\r
-    len = tok->u.backref.num;\r
-    *np = node_new_backref(len,\r
-                  (len > 1 ? tok->u.backref.refs : &(tok->u.backref.ref1)),\r
-                          tok->u.backref.by_name,\r
-#ifdef USE_BACKREF_WITH_LEVEL\r
-                          tok->u.backref.exist_level,\r
-                          tok->u.backref.level,\r
-#endif\r
-                          env);\r
-    CHECK_NULL_RETURN_MEMERR(*np);\r
-    break;\r
-\r
-#ifdef USE_SUBEXP_CALL\r
-  case TK_CALL:\r
-    {\r
-      int gnum = tok->u.call.gnum;\r
-\r
-      if (gnum < 0) {\r
-       gnum = BACKREF_REL_TO_ABS(gnum, env);\r
-       if (gnum <= 0)\r
-         return ONIGERR_INVALID_BACKREF;\r
-      }\r
-      *np = node_new_call(tok->u.call.name, tok->u.call.name_end, gnum);\r
-      CHECK_NULL_RETURN_MEMERR(*np);\r
-      env->num_call++;\r
-    }\r
-    break;\r
-#endif\r
-\r
-  case TK_ANCHOR:\r
-    *np = onig_node_new_anchor(tok->u.anchor);\r
-    break;\r
-\r
-  case TK_OP_REPEAT:\r
-  case TK_INTERVAL:\r
-    if (IS_SYNTAX_BV(env->syntax, ONIG_SYN_CONTEXT_INDEP_REPEAT_OPS)) {\r
-      if (IS_SYNTAX_BV(env->syntax, ONIG_SYN_CONTEXT_INVALID_REPEAT_OPS))\r
-       return ONIGERR_TARGET_OF_REPEAT_OPERATOR_NOT_SPECIFIED;\r
-      else\r
-       *np = node_new_empty();\r
-    }\r
-    else {\r
-      goto tk_byte;\r
-    }\r
-    break;\r
-\r
-  default:\r
-    return ONIGERR_PARSER_BUG;\r
-    break;\r
-  }\r
-\r
-  {\r
-    targetp = np;\r
-\r
-  re_entry:\r
-    r = fetch_token(tok, src, end, env);\r
-    if (r < 0) return r;\r
-\r
-  repeat:\r
-    if (r == TK_OP_REPEAT || r == TK_INTERVAL) {\r
-      if (is_invalid_quantifier_target(*targetp))\r
-       return ONIGERR_TARGET_OF_REPEAT_OPERATOR_INVALID;\r
-\r
-      qn = node_new_quantifier(tok->u.repeat.lower, tok->u.repeat.upper,\r
-                              (r == TK_INTERVAL ? 1 : 0));\r
-      CHECK_NULL_RETURN_MEMERR(qn);\r
-      NQTFR(qn)->greedy = tok->u.repeat.greedy;\r
-      r = set_quantifier(qn, *targetp, group, env);\r
-      if (r < 0) {\r
-       onig_node_free(qn);\r
-       return r;\r
-      }\r
-\r
-      if (tok->u.repeat.possessive != 0) {\r
-       Node* en;\r
-       en = node_new_enclose(ENCLOSE_STOP_BACKTRACK);\r
-       if (IS_NULL(en)) {\r
-         onig_node_free(qn);\r
-         return ONIGERR_MEMORY;\r
-       }\r
-       NENCLOSE(en)->target = qn;\r
-       qn = en;\r
-      }\r
-\r
-      if (r == 0) {\r
-       *targetp = qn;\r
-      }\r
-      else if (r == 1) {\r
-       onig_node_free(qn);\r
-      }\r
-      else if (r == 2) { /* split case: /abc+/ */\r
-       Node *tmp;\r
-\r
-       *targetp = node_new_list(*targetp, NULL);\r
-       if (IS_NULL(*targetp)) {\r
-         onig_node_free(qn);\r
-         return ONIGERR_MEMORY;\r
-       }\r
-       tmp = NCDR(*targetp) = node_new_list(qn, NULL);\r
-       if (IS_NULL(tmp)) {\r
-         onig_node_free(qn);\r
-         return ONIGERR_MEMORY;\r
-       }\r
-       targetp = &(NCAR(tmp));\r
-      }\r
-      goto re_entry;\r
-    }\r
-  }\r
-\r
-  return r;\r
-}\r
-\r
-static int\r
-parse_branch(Node** top, OnigToken* tok, int term,\r
-            UChar** src, UChar* end, ScanEnv* env)\r
-{\r
-  int r;\r
-  Node *node, **headp;\r
-\r
-  *top = NULL;\r
-  r = parse_exp(&node, tok, term, src, end, env);\r
-  if (r < 0) return r;\r
-\r
-  if (r == TK_EOT || r == term || r == TK_ALT) {\r
-    *top = node;\r
-  }\r
-  else {\r
-    *top  = node_new_list(node, NULL);\r
-    headp = &(NCDR(*top));\r
-    while (r != TK_EOT && r != term && r != TK_ALT) {\r
-      r = parse_exp(&node, tok, term, src, end, env);\r
-      if (r < 0) return r;\r
-\r
-      if (NTYPE(node) == NT_LIST) {\r
-       *headp = node;\r
-       while (IS_NOT_NULL(NCDR(node))) node = NCDR(node);\r
-       headp = &(NCDR(node));\r
-      }\r
-      else {\r
-       *headp = node_new_list(node, NULL);\r
-       headp = &(NCDR(*headp));\r
-      }\r
-    }\r
-  }\r
-\r
-  return r;\r
-}\r
-\r
-/* term_tok: TK_EOT or TK_SUBEXP_CLOSE */\r
-static int\r
-parse_subexp(Node** top, OnigToken* tok, int term,\r
-            UChar** src, UChar* end, ScanEnv* env)\r
-{\r
-  int r;\r
-  Node *node, **headp;\r
-\r
-  *top = NULL;\r
-  r = parse_branch(&node, tok, term, src, end, env);\r
-  if (r < 0) {\r
-    onig_node_free(node);\r
-    return r;\r
-  }\r
-\r
-  if (r == term) {\r
-    *top = node;\r
-  }\r
-  else if (r == TK_ALT) {\r
-    *top  = onig_node_new_alt(node, NULL);\r
-    headp = &(NCDR(*top));\r
-    while (r == TK_ALT) {\r
-      r = fetch_token(tok, src, end, env);\r
-      if (r < 0) return r;\r
-      r = parse_branch(&node, tok, term, src, end, env);\r
-      if (r < 0) return r;\r
-\r
-      *headp = onig_node_new_alt(node, NULL);\r
-      headp = &(NCDR(*headp));\r
-    }\r
-\r
-    if (tok->type != (enum TokenSyms )term)\r
-      goto err;\r
-  }\r
-  else {\r
-  err:\r
-    if (term == TK_SUBEXP_CLOSE)\r
-      return ONIGERR_END_PATTERN_WITH_UNMATCHED_PARENTHESIS;\r
-    else\r
-      return ONIGERR_PARSER_BUG;\r
-  }\r
-\r
-  return r;\r
-}\r
-\r
-static int\r
-parse_regexp(Node** top, UChar** src, UChar* end, ScanEnv* env)\r
-{\r
-  int r;\r
-  OnigToken tok;\r
-\r
-  r = fetch_token(&tok, src, end, env);\r
-  if (r < 0) return r;\r
-  r = parse_subexp(top, &tok, TK_EOT, src, end, env);\r
-  if (r < 0) return r;\r
-  return 0;\r
-}\r
-\r
-extern int\r
-onig_parse_make_tree(Node** root, const UChar* pattern, const UChar* end,\r
-                    regex_t* reg, ScanEnv* env)\r
-{\r
-  int r;\r
-  UChar* p;\r
-\r
-#ifdef USE_NAMED_GROUP\r
-  names_clear(reg);\r
-#endif\r
-\r
-  scan_env_clear(env);\r
-  env->option         = reg->options;\r
-  env->case_fold_flag = reg->case_fold_flag;\r
-  env->enc            = reg->enc;\r
-  env->syntax         = reg->syntax;\r
-  env->pattern        = (UChar* )pattern;\r
-  env->pattern_end    = (UChar* )end;\r
-  env->reg            = reg;\r
-\r
-  *root = NULL;\r
-  p = (UChar* )pattern;\r
-  r = parse_regexp(root, &p, (UChar* )end, env);\r
-  reg->num_mem = env->num_mem;\r
-  return r;\r
-}\r
-\r
-extern void\r
-onig_scan_env_set_error_string(ScanEnv* env, int ecode ARG_UNUSED,\r
-                               UChar* arg, UChar* arg_end)\r
-{\r
-  env->error     = arg;\r
-  env->error_end = arg_end;\r
-}\r
diff --git a/MdeModulePkg/Universal/RegularExpressionDxe/Oniguruma/regparse.h b/MdeModulePkg/Universal/RegularExpressionDxe/Oniguruma/regparse.h
deleted file mode 100644 (file)
index d5edd6e..0000000
+++ /dev/null
@@ -1,353 +0,0 @@
-#ifndef REGPARSE_H\r
-#define REGPARSE_H\r
-/**********************************************************************\r
-  regparse.h -  Oniguruma (regular expression library)\r
-**********************************************************************/\r
-/*-\r
- * Copyright (c) 2002-2007  K.Kosako  <sndgk393 AT ybb DOT ne DOT jp>\r
- * All rights reserved.\r
- * \r
- * Copyright (c) 2015, Hewlett Packard Enterprise Development, L.P.<BR>\r
- *\r
- * Redistribution and use in source and binary forms, with or without\r
- * modification, are permitted provided that the following conditions\r
- * are met:\r
- * 1. Redistributions of source code must retain the above copyright\r
- *    notice, this list of conditions and the following disclaimer.\r
- * 2. Redistributions in binary form must reproduce the above copyright\r
- *    notice, this list of conditions and the following disclaimer in the\r
- *    documentation and/or other materials provided with the distribution.\r
- *\r
- * THIS SOFTWARE IS PROVIDED BY THE AUTHOR AND CONTRIBUTORS ``AS IS'' AND\r
- * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE\r
- * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE\r
- * ARE DISCLAIMED.  IN NO EVENT SHALL THE AUTHOR OR CONTRIBUTORS BE LIABLE\r
- * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL\r
- * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS\r
- * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)\r
- * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT\r
- * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY\r
- * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF\r
- * SUCH DAMAGE.\r
- */\r
-\r
-#include "regint.h"\r
-\r
-/* node type */\r
-#define NT_STR         0\r
-#define NT_CCLASS      1\r
-#define NT_CTYPE       2\r
-#define NT_CANY        3\r
-#define NT_BREF        4\r
-#define NT_QTFR        5\r
-#define NT_ENCLOSE     6\r
-#define NT_ANCHOR      7\r
-#define NT_LIST        8\r
-#define NT_ALT         9\r
-#define NT_CALL       10\r
-\r
-/* node type bit */\r
-#define NTYPE2BIT(type)      (1<<(type))\r
-\r
-#define BIT_NT_STR        NTYPE2BIT(NT_STR)\r
-#define BIT_NT_CCLASS     NTYPE2BIT(NT_CCLASS)\r
-#define BIT_NT_CTYPE      NTYPE2BIT(NT_CTYPE)\r
-#define BIT_NT_CANY       NTYPE2BIT(NT_CANY)\r
-#define BIT_NT_BREF       NTYPE2BIT(NT_BREF)\r
-#define BIT_NT_QTFR       NTYPE2BIT(NT_QTFR)\r
-#define BIT_NT_ENCLOSE    NTYPE2BIT(NT_ENCLOSE)\r
-#define BIT_NT_ANCHOR     NTYPE2BIT(NT_ANCHOR)\r
-#define BIT_NT_LIST       NTYPE2BIT(NT_LIST)\r
-#define BIT_NT_ALT        NTYPE2BIT(NT_ALT)\r
-#define BIT_NT_CALL       NTYPE2BIT(NT_CALL)\r
-\r
-#define IS_NODE_TYPE_SIMPLE(type) \\r
-  ((NTYPE2BIT(type) & (BIT_NT_STR | BIT_NT_CCLASS | BIT_NT_CTYPE |\\r
-                       BIT_NT_CANY | BIT_NT_BREF)) != 0)\r
-\r
-#define NTYPE(node)             ((node)->u.base.type)\r
-#define SET_NTYPE(node, ntype)   (node)->u.base.type = (ntype)\r
-\r
-#define NSTR(node)         (&((node)->u.str))\r
-#define NCCLASS(node)      (&((node)->u.cclass))\r
-#define NCTYPE(node)       (&((node)->u.ctype))\r
-#define NBREF(node)        (&((node)->u.bref))\r
-#define NQTFR(node)        (&((node)->u.qtfr))\r
-#define NENCLOSE(node)     (&((node)->u.enclose))\r
-#define NANCHOR(node)      (&((node)->u.anchor))\r
-#define NCONS(node)        (&((node)->u.cons))\r
-#define NCALL(node)        (&((node)->u.call))\r
-\r
-#define NCAR(node)         (NCONS(node)->car)\r
-#define NCDR(node)         (NCONS(node)->cdr)\r
-\r
-\r
-\r
-#define ANCHOR_ANYCHAR_STAR_MASK (ANCHOR_ANYCHAR_STAR | ANCHOR_ANYCHAR_STAR_ML)\r
-#define ANCHOR_END_BUF_MASK      (ANCHOR_END_BUF | ANCHOR_SEMI_END_BUF)\r
-\r
-#define ENCLOSE_MEMORY           (1<<0)\r
-#define ENCLOSE_OPTION           (1<<1)\r
-#define ENCLOSE_STOP_BACKTRACK   (1<<2)\r
-\r
-#define NODE_STR_MARGIN         16\r
-#define NODE_STR_BUF_SIZE       24  /* sizeof(CClassNode) - sizeof(int)*4 */\r
-#define NODE_BACKREFS_SIZE       6\r
-\r
-#define NSTR_RAW                (1<<0) /* by backslashed number */\r
-#define NSTR_AMBIG              (1<<1)\r
-#define NSTR_DONT_GET_OPT_INFO  (1<<2)\r
-\r
-#define NSTRING_LEN(node)             ((int)((node)->u.str.end - (node)->u.str.s))\r
-#define NSTRING_SET_RAW(node)          (node)->u.str.flag |= NSTR_RAW\r
-#define NSTRING_CLEAR_RAW(node)        (node)->u.str.flag &= ~NSTR_RAW\r
-#define NSTRING_SET_AMBIG(node)        (node)->u.str.flag |= NSTR_AMBIG\r
-#define NSTRING_SET_DONT_GET_OPT_INFO(node) \\r
-  (node)->u.str.flag |= NSTR_DONT_GET_OPT_INFO\r
-#define NSTRING_IS_RAW(node)          (((node)->u.str.flag & NSTR_RAW)   != 0)\r
-#define NSTRING_IS_AMBIG(node)        (((node)->u.str.flag & NSTR_AMBIG) != 0)\r
-#define NSTRING_IS_DONT_GET_OPT_INFO(node) \\r
-  (((node)->u.str.flag & NSTR_DONT_GET_OPT_INFO) != 0)\r
-\r
-#define BACKREFS_P(br) \\r
-  (IS_NOT_NULL((br)->back_dynamic) ? (br)->back_dynamic : (br)->back_static);\r
-\r
-#define NQ_TARGET_ISNOT_EMPTY     0\r
-#define NQ_TARGET_IS_EMPTY        1\r
-#define NQ_TARGET_IS_EMPTY_MEM    2\r
-#define NQ_TARGET_IS_EMPTY_REC    3\r
-\r
-/* status bits */\r
-#define NST_MIN_FIXED             (1<<0)\r
-#define NST_MAX_FIXED             (1<<1)\r
-#define NST_CLEN_FIXED            (1<<2)\r
-#define NST_MARK1                 (1<<3)\r
-#define NST_MARK2                 (1<<4)\r
-#define NST_MEM_BACKREFED         (1<<5)\r
-#define NST_STOP_BT_SIMPLE_REPEAT (1<<6)\r
-#define NST_RECURSION             (1<<7)\r
-#define NST_CALLED                (1<<8)\r
-#define NST_ADDR_FIXED            (1<<9)\r
-#define NST_NAMED_GROUP           (1<<10)\r
-#define NST_NAME_REF              (1<<11)\r
-#define NST_IN_REPEAT             (1<<12) /* STK_REPEAT is nested in stack. */\r
-#define NST_NEST_LEVEL            (1<<13)\r
-#define NST_BY_NUMBER             (1<<14) /* {n,m} */\r
-\r
-#define SET_ENCLOSE_STATUS(node,f)      (node)->u.enclose.state |=  (f)\r
-#define CLEAR_ENCLOSE_STATUS(node,f)    (node)->u.enclose.state &= ~(f)\r
-\r
-#define IS_ENCLOSE_CALLED(en)          (((en)->state & NST_CALLED)        != 0)\r
-#define IS_ENCLOSE_ADDR_FIXED(en)      (((en)->state & NST_ADDR_FIXED)    != 0)\r
-#define IS_ENCLOSE_RECURSION(en)       (((en)->state & NST_RECURSION)     != 0)\r
-#define IS_ENCLOSE_MARK1(en)           (((en)->state & NST_MARK1)         != 0)\r
-#define IS_ENCLOSE_MARK2(en)           (((en)->state & NST_MARK2)         != 0)\r
-#define IS_ENCLOSE_MIN_FIXED(en)       (((en)->state & NST_MIN_FIXED)     != 0)\r
-#define IS_ENCLOSE_MAX_FIXED(en)       (((en)->state & NST_MAX_FIXED)     != 0)\r
-#define IS_ENCLOSE_CLEN_FIXED(en)      (((en)->state & NST_CLEN_FIXED)    != 0)\r
-#define IS_ENCLOSE_STOP_BT_SIMPLE_REPEAT(en) \\r
-    (((en)->state & NST_STOP_BT_SIMPLE_REPEAT) != 0)\r
-#define IS_ENCLOSE_NAMED_GROUP(en)     (((en)->state & NST_NAMED_GROUP)   != 0)\r
-\r
-#define SET_CALL_RECURSION(node)       (node)->u.call.state |= NST_RECURSION\r
-#define IS_CALL_RECURSION(cn)          (((cn)->state & NST_RECURSION)  != 0)\r
-#define IS_CALL_NAME_REF(cn)           (((cn)->state & NST_NAME_REF)   != 0)\r
-#define IS_BACKREF_NAME_REF(bn)        (((bn)->state & NST_NAME_REF)   != 0)\r
-#define IS_BACKREF_NEST_LEVEL(bn)      (((bn)->state & NST_NEST_LEVEL) != 0)\r
-#define IS_QUANTIFIER_IN_REPEAT(qn)    (((qn)->state & NST_IN_REPEAT)  != 0)\r
-#define IS_QUANTIFIER_BY_NUMBER(qn)    (((qn)->state & NST_BY_NUMBER)  != 0)\r
-\r
-#define CALLNODE_REFNUM_UNDEF  -1\r
-\r
-typedef struct {\r
-  NodeBase base;\r
-  UChar* s;\r
-  UChar* end;\r
-  unsigned int flag;\r
-  int    capa;    /* (allocated size - 1) or 0: use buf[] */\r
-  UChar  buf[NODE_STR_BUF_SIZE];\r
-} StrNode;\r
-\r
-typedef struct {\r
-  NodeBase base;\r
-  int state;\r
-  struct _Node* target;\r
-  int lower;\r
-  int upper;\r
-  int greedy;\r
-  int target_empty_info;\r
-  struct _Node* head_exact;\r
-  struct _Node* next_head_exact;\r
-  int is_refered;     /* include called node. don't eliminate even if {0} */\r
-#ifdef USE_COMBINATION_EXPLOSION_CHECK\r
-  int comb_exp_check_num;  /* 1,2,3...: check,  0: no check  */\r
-#endif\r
-} QtfrNode;\r
-\r
-typedef struct {\r
-  NodeBase base;\r
-  int state;\r
-  int type;\r
-  int regnum;\r
-  OnigOptionType option;\r
-  struct _Node*  target;\r
-  AbsAddrType    call_addr;\r
-  /* for multiple call reference */\r
-  OnigDistance min_len; /* min length (byte) */\r
-  OnigDistance max_len; /* max length (byte) */ \r
-  int char_len;         /* character length  */\r
-  int opt_count;        /* referenced count in optimize_node_left() */\r
-} EncloseNode;\r
-\r
-#ifdef USE_SUBEXP_CALL\r
-\r
-typedef struct {\r
-  int           offset;\r
-  struct _Node* target;\r
-} UnsetAddr;\r
-\r
-typedef struct {\r
-  int        num;\r
-  int        alloc;\r
-  UnsetAddr* us;\r
-} UnsetAddrList;\r
-\r
-typedef struct {\r
-  NodeBase base;\r
-  int     state;\r
-  int     group_num;\r
-  UChar*  name;\r
-  UChar*  name_end;\r
-  struct _Node*  target;  /* EncloseNode : ENCLOSE_MEMORY */\r
-  UnsetAddrList* unset_addr_list;\r
-} CallNode;\r
-\r
-#endif\r
-\r
-typedef struct {\r
-  NodeBase base;\r
-  int  state;\r
-  int  back_num;\r
-  int  back_static[NODE_BACKREFS_SIZE];\r
-  int* back_dynamic;\r
-  int  nest_level;\r
-} BRefNode;\r
-\r
-typedef struct {\r
-  NodeBase base;\r
-  int type;\r
-  struct _Node* target;\r
-  int char_len;\r
-} AnchorNode;\r
-\r
-typedef struct {\r
-  NodeBase base;\r
-  struct _Node* car;\r
-  struct _Node* cdr;\r
-} ConsAltNode;\r
-\r
-typedef struct {\r
-  NodeBase base;\r
-  int ctype;\r
-  int not;\r
-} CtypeNode;\r
-\r
-typedef struct _Node {\r
-  union {\r
-    NodeBase     base;\r
-    StrNode      str;\r
-    CClassNode   cclass;\r
-    QtfrNode     qtfr;\r
-    EncloseNode  enclose;\r
-    BRefNode     bref;\r
-    AnchorNode   anchor;\r
-    ConsAltNode  cons;\r
-    CtypeNode    ctype;\r
-#ifdef USE_SUBEXP_CALL\r
-    CallNode     call;\r
-#endif\r
-  } u;\r
-} Node;\r
-\r
-\r
-#define NULL_NODE  ((Node* )0)\r
-\r
-#define SCANENV_MEMNODES_SIZE               8\r
-#define SCANENV_MEM_NODES(senv)   \\r
- (IS_NOT_NULL((senv)->mem_nodes_dynamic) ? \\r
-    (senv)->mem_nodes_dynamic : (senv)->mem_nodes_static)\r
-\r
-typedef struct {\r
-  OnigOptionType   option;\r
-  OnigCaseFoldType case_fold_flag;\r
-  OnigEncoding     enc;\r
-  OnigSyntaxType*  syntax;\r
-  BitStatusType    capture_history;\r
-  BitStatusType    bt_mem_start;\r
-  BitStatusType    bt_mem_end;\r
-  BitStatusType    backrefed_mem;\r
-  UChar*           pattern;\r
-  UChar*           pattern_end;\r
-  UChar*           error;\r
-  UChar*           error_end;\r
-  regex_t*         reg;       /* for reg->names only */\r
-  int              num_call;\r
-#ifdef USE_SUBEXP_CALL\r
-  UnsetAddrList*   unset_addr_list;\r
-#endif\r
-  int              num_mem;\r
-#ifdef USE_NAMED_GROUP\r
-  int              num_named;\r
-#endif\r
-  int              mem_alloc;\r
-  Node*            mem_nodes_static[SCANENV_MEMNODES_SIZE];\r
-  Node**           mem_nodes_dynamic;\r
-#ifdef USE_COMBINATION_EXPLOSION_CHECK\r
-  int num_comb_exp_check;\r
-  int comb_exp_max_regnum;\r
-  int curr_max_regnum;\r
-  int has_recursion;\r
-#endif\r
-} ScanEnv;\r
-\r
-\r
-#define IS_SYNTAX_OP(syn, opm)    (((syn)->op  & (opm)) != 0)\r
-#define IS_SYNTAX_OP2(syn, opm)   (((syn)->op2 & (opm)) != 0)\r
-#define IS_SYNTAX_BV(syn, bvm)    (((syn)->behavior & (bvm)) != 0)\r
-\r
-#ifdef USE_NAMED_GROUP\r
-typedef struct {\r
-  int new_val;\r
-} GroupNumRemap;\r
-\r
-extern int    onig_renumber_name_table P_((regex_t* reg, GroupNumRemap* map));\r
-#endif\r
-\r
-extern int    onig_strncmp P_((const UChar* s1, const UChar* s2, int n));\r
-extern void   onig_strcpy P_((UChar* dest, const UChar* src, const UChar* end));\r
-extern void   onig_scan_env_set_error_string P_((ScanEnv* env, int ecode, UChar* arg, UChar* arg_end));\r
-extern int    onig_scan_unsigned_number P_((UChar** src, const UChar* end, OnigEncoding enc));\r
-extern void   onig_reduce_nested_quantifier P_((Node* pnode, Node* cnode));\r
-extern void   onig_node_conv_to_str_node P_((Node* node, int raw));\r
-extern int    onig_node_str_cat P_((Node* node, const UChar* s, const UChar* end));\r
-extern int    onig_node_str_set P_((Node* node, const UChar* s, const UChar* end));\r
-extern void   onig_node_free P_((Node* node));\r
-extern Node*  onig_node_new_enclose P_((int type));\r
-extern Node*  onig_node_new_anchor P_((int type));\r
-extern Node*  onig_node_new_str P_((const UChar* s, const UChar* end));\r
-extern Node*  onig_node_new_list P_((Node* left, Node* right));\r
-extern Node*  onig_node_list_add P_((Node* list, Node* x));\r
-extern Node*  onig_node_new_alt P_((Node* left, Node* right));\r
-extern void   onig_node_str_clear P_((Node* node));\r
-extern int    onig_free_node_list P_((void));\r
-extern int    onig_names_free P_((regex_t* reg));\r
-extern int    onig_parse_make_tree P_((Node** root, const UChar* pattern, const UChar* end, regex_t* reg, ScanEnv* env));\r
-extern int    onig_free_shared_cclass_table P_((void));\r
-\r
-#ifdef ONIG_DEBUG\r
-#ifdef USE_NAMED_GROUP\r
-extern int onig_print_names(FILE*, regex_t*);\r
-#endif\r
-#endif\r
-\r
-#endif /* REGPARSE_H */\r
diff --git a/MdeModulePkg/Universal/RegularExpressionDxe/Oniguruma/regposerr.c b/MdeModulePkg/Universal/RegularExpressionDxe/Oniguruma/regposerr.c
deleted file mode 100644 (file)
index e5ff3f5..0000000
+++ /dev/null
@@ -1,102 +0,0 @@
-/**********************************************************************\r
-  regposerr.c - Oniguruma (regular expression library)\r
-**********************************************************************/\r
-/*-\r
- * Copyright (c) 2002-2007  K.Kosako  <sndgk393 AT ybb DOT ne DOT jp>\r
- * All rights reserved.\r
- *\r
- * Copyright (c) 2015, Hewlett Packard Enterprise Development, L.P.<BR> \r
- *\r
- * Redistribution and use in source and binary forms, with or without\r
- * modification, are permitted provided that the following conditions\r
- * are met:\r
- * 1. Redistributions of source code must retain the above copyright\r
- *    notice, this list of conditions and the following disclaimer.\r
- * 2. Redistributions in binary form must reproduce the above copyright\r
- *    notice, this list of conditions and the following disclaimer in the\r
- *    documentation and/or other materials provided with the distribution.\r
- *\r
- * THIS SOFTWARE IS PROVIDED BY THE AUTHOR AND CONTRIBUTORS ``AS IS'' AND\r
- * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE\r
- * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE\r
- * ARE DISCLAIMED.  IN NO EVENT SHALL THE AUTHOR OR CONTRIBUTORS BE LIABLE\r
- * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL\r
- * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS\r
- * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)\r
- * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT\r
- * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY\r
- * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF\r
- * SUCH DAMAGE.\r
- */\r
-\r
-/*#include "config.h"*/\r
-#include "onigposix.h"\r
-\r
-#if 0\r
-#ifdef HAVE_STRING_H\r
-# include <string.h>\r
-#else\r
-# include <strings.h>\r
-#endif\r
-#endif\r
-\r
-#if defined(__GNUC__)\r
-#  define ARG_UNUSED  __attribute__ ((unused))\r
-#else\r
-#  define ARG_UNUSED\r
-#endif\r
-\r
-static char* ESTRING[] = {\r
-  NULL,\r
-  "failed to match",                         /* REG_NOMATCH    */\r
-  "Invalid regular expression",              /* REG_BADPAT     */\r
-  "invalid collating element referenced",    /* REG_ECOLLATE   */\r
-  "invalid character class type referenced", /* REG_ECTYPE     */\r
-  "bad backslash-escape sequence",           /* REG_EESCAPE    */\r
-  "invalid back reference number",           /* REG_ESUBREG    */\r
-  "imbalanced [ and ]",                      /* REG_EBRACK     */\r
-  "imbalanced ( and )",                      /* REG_EPAREN     */\r
-  "imbalanced { and }",                      /* REG_EBRACE     */\r
-  "invalid repeat range {n,m}",              /* REG_BADBR      */\r
-  "invalid range",                           /* REG_ERANGE     */\r
-  "Out of memory",                           /* REG_ESPACE     */\r
-  "? * + not preceded by valid regular expression", /* REG_BADRPT   */\r
-\r
-  /* Extended errors */\r
-  "internal error",                          /* REG_EONIG_INTERNAL */\r
-  "invalid wide char value",                 /* REG_EONIG_BADWC    */\r
-  "invalid argument",                        /* REG_EONIG_BADARG   */\r
-  "multi-thread error"                       /* REG_EONIG_THREAD   */\r
-};\r
-\r
-//#include <stdio.h>\r
-\r
-\r
-extern size_t\r
-regerror(int posix_ecode, const regex_t* reg ARG_UNUSED, char* buf,\r
-        size_t size)\r
-{\r
-  char* s;\r
-  char tbuf[35];\r
-  size_t len;\r
-\r
-  if (posix_ecode > 0\r
-      && posix_ecode < (int )(sizeof(ESTRING) / sizeof(ESTRING[0]))) {\r
-    s = ESTRING[posix_ecode];\r
-  }\r
-  else if (posix_ecode == 0) {\r
-    s = "";\r
-  }\r
-  else {\r
-    sprintf(tbuf, "undefined error code (%d)", posix_ecode);\r
-    s = tbuf;\r
-  }\r
-\r
-  len = strlen_s(s, MAX_STRING_SIZE) + 1; /* use strlen() because s is ascii encoding. */\r
-\r
-  if (buf != NULL && size > 0) {\r
-    strncpy_s(buf, size, s, size - 1);\r
-    buf[size - 1] = '\0';\r
-  }\r
-  return len;\r
-}\r
diff --git a/MdeModulePkg/Universal/RegularExpressionDxe/Oniguruma/regposix.c b/MdeModulePkg/Universal/RegularExpressionDxe/Oniguruma/regposix.c
deleted file mode 100644 (file)
index adc9b0a..0000000
+++ /dev/null
@@ -1,305 +0,0 @@
-/**********************************************************************\r
-  regposix.c - Oniguruma (regular expression library)\r
-**********************************************************************/\r
-/*-\r
- * Copyright (c) 2002-2008  K.Kosako  <sndgk393 AT ybb DOT ne DOT jp>\r
- * All rights reserved.\r
- *\r
- * Copyright (c) 2015, Hewlett Packard Enterprise Development, L.P.<BR>\r
- *\r
- * Redistribution and use in source and binary forms, with or without\r
- * modification, are permitted provided that the following conditions\r
- * are met:\r
- * 1. Redistributions of source code must retain the above copyright\r
- *    notice, this list of conditions and the following disclaimer.\r
- * 2. Redistributions in binary form must reproduce the above copyright\r
- *    notice, this list of conditions and the following disclaimer in the\r
- *    documentation and/or other materials provided with the distribution.\r
- *\r
- * THIS SOFTWARE IS PROVIDED BY THE AUTHOR AND CONTRIBUTORS ``AS IS'' AND\r
- * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE\r
- * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE\r
- * ARE DISCLAIMED.  IN NO EVENT SHALL THE AUTHOR OR CONTRIBUTORS BE LIABLE\r
- * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL\r
- * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS\r
- * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)\r
- * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT\r
- * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY\r
- * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF\r
- * SUCH DAMAGE.\r
- */\r
-\r
-#define regex_t   onig_regex_t\r
-#include "regint.h"\r
-#undef regex_t\r
-#include "onigposix.h"\r
-\r
-#define ONIG_C(reg)    ((onig_regex_t* )((reg)->onig))\r
-#define PONIG_C(reg)   ((onig_regex_t** )(&(reg)->onig))\r
-\r
-/* #define ENC_STRING_LEN(enc,s,len)    len = strlen(s) */\r
-#define ENC_STRING_LEN(enc,s,len) do { \\r
-  if (ONIGENC_MBC_MINLEN(enc) == 1) { \\r
-    UChar* tmps = (UChar* )(s); \\r
-    while (*tmps != 0) tmps++; \\r
-    len = (int)(tmps - (UChar* )(s)); \\r
-  } \\r
-  else { \\r
-    len = onigenc_str_bytelen_null(enc, (UChar* )s); \\r
-  } \\r
-} while(0)\r
-\r
-typedef struct {\r
-  int onig_err;\r
-  int posix_err;\r
-} O2PERR;\r
-\r
-static int\r
-onig2posix_error_code(int code)\r
-{\r
-  static const O2PERR o2p[] = {\r
-    { ONIG_MISMATCH,                                      REG_NOMATCH },\r
-    { ONIG_NO_SUPPORT_CONFIG,                             REG_EONIG_INTERNAL },\r
-    { ONIGERR_MEMORY,                                     REG_ESPACE  },\r
-    { ONIGERR_MATCH_STACK_LIMIT_OVER,                     REG_EONIG_INTERNAL },\r
-    { ONIGERR_TYPE_BUG,                                   REG_EONIG_INTERNAL },\r
-    { ONIGERR_PARSER_BUG,                                 REG_EONIG_INTERNAL },\r
-    { ONIGERR_STACK_BUG,                                  REG_EONIG_INTERNAL },\r
-    { ONIGERR_UNDEFINED_BYTECODE,                         REG_EONIG_INTERNAL },\r
-    { ONIGERR_UNEXPECTED_BYTECODE,                        REG_EONIG_INTERNAL },\r
-    { ONIGERR_DEFAULT_ENCODING_IS_NOT_SETTED,             REG_EONIG_BADARG },\r
-    { ONIGERR_SPECIFIED_ENCODING_CANT_CONVERT_TO_WIDE_CHAR, REG_EONIG_BADARG },\r
-    { ONIGERR_INVALID_ARGUMENT,                           REG_EONIG_BADARG },\r
-    { ONIGERR_END_PATTERN_AT_LEFT_BRACE,                  REG_EBRACE  },\r
-    { ONIGERR_END_PATTERN_AT_LEFT_BRACKET,                REG_EBRACK  },\r
-    { ONIGERR_EMPTY_CHAR_CLASS,                           REG_ECTYPE  },\r
-    { ONIGERR_PREMATURE_END_OF_CHAR_CLASS,                REG_ECTYPE  },\r
-    { ONIGERR_END_PATTERN_AT_ESCAPE,                      REG_EESCAPE },\r
-    { ONIGERR_END_PATTERN_AT_META,                        REG_EESCAPE },\r
-    { ONIGERR_END_PATTERN_AT_CONTROL,                     REG_EESCAPE },\r
-    { ONIGERR_META_CODE_SYNTAX,                           REG_BADPAT  },\r
-    { ONIGERR_CONTROL_CODE_SYNTAX,                        REG_BADPAT  },\r
-    { ONIGERR_CHAR_CLASS_VALUE_AT_END_OF_RANGE,           REG_ECTYPE  },\r
-    { ONIGERR_CHAR_CLASS_VALUE_AT_START_OF_RANGE,         REG_ECTYPE  },\r
-    { ONIGERR_UNMATCHED_RANGE_SPECIFIER_IN_CHAR_CLASS,    REG_ECTYPE  },\r
-    { ONIGERR_TARGET_OF_REPEAT_OPERATOR_NOT_SPECIFIED,    REG_BADRPT  },\r
-    { ONIGERR_TARGET_OF_REPEAT_OPERATOR_INVALID,          REG_BADRPT  },\r
-    { ONIGERR_NESTED_REPEAT_OPERATOR,                     REG_BADRPT  },\r
-    { ONIGERR_UNMATCHED_CLOSE_PARENTHESIS,                REG_EPAREN  },\r
-    { ONIGERR_END_PATTERN_WITH_UNMATCHED_PARENTHESIS,     REG_EPAREN  },\r
-    { ONIGERR_END_PATTERN_IN_GROUP,                       REG_BADPAT  },\r
-    { ONIGERR_UNDEFINED_GROUP_OPTION,                     REG_BADPAT  },\r
-    { ONIGERR_INVALID_POSIX_BRACKET_TYPE,                 REG_BADPAT  },\r
-    { ONIGERR_INVALID_LOOK_BEHIND_PATTERN,                REG_BADPAT  },\r
-    { ONIGERR_INVALID_REPEAT_RANGE_PATTERN,               REG_BADPAT  },\r
-    { ONIGERR_TOO_BIG_NUMBER,                             REG_BADPAT  },\r
-    { ONIGERR_TOO_BIG_NUMBER_FOR_REPEAT_RANGE,            REG_BADBR   },\r
-    { ONIGERR_UPPER_SMALLER_THAN_LOWER_IN_REPEAT_RANGE,   REG_BADBR   },\r
-    { ONIGERR_EMPTY_RANGE_IN_CHAR_CLASS,                  REG_ECTYPE  },\r
-    { ONIGERR_MISMATCH_CODE_LENGTH_IN_CLASS_RANGE,        REG_ECTYPE  },\r
-    { ONIGERR_TOO_MANY_MULTI_BYTE_RANGES,                 REG_ECTYPE  },\r
-    { ONIGERR_TOO_SHORT_MULTI_BYTE_STRING,                REG_BADPAT  },\r
-    { ONIGERR_TOO_BIG_BACKREF_NUMBER,                     REG_ESUBREG },\r
-    { ONIGERR_INVALID_BACKREF,                            REG_ESUBREG },\r
-    { ONIGERR_NUMBERED_BACKREF_OR_CALL_NOT_ALLOWED,       REG_BADPAT  },\r
-    { ONIGERR_TOO_BIG_WIDE_CHAR_VALUE,                    REG_EONIG_BADWC },\r
-    { ONIGERR_TOO_LONG_WIDE_CHAR_VALUE,                   REG_EONIG_BADWC },\r
-    { ONIGERR_INVALID_CODE_POINT_VALUE,                   REG_EONIG_BADWC },\r
-    { ONIGERR_EMPTY_GROUP_NAME,                           REG_BADPAT },\r
-    { ONIGERR_INVALID_GROUP_NAME,                         REG_BADPAT },\r
-    { ONIGERR_INVALID_CHAR_IN_GROUP_NAME,                 REG_BADPAT },\r
-    { ONIGERR_UNDEFINED_NAME_REFERENCE,                   REG_BADPAT },\r
-    { ONIGERR_UNDEFINED_GROUP_REFERENCE,                  REG_BADPAT },\r
-    { ONIGERR_MULTIPLEX_DEFINED_NAME,                     REG_BADPAT },\r
-    { ONIGERR_MULTIPLEX_DEFINITION_NAME_CALL,             REG_BADPAT },\r
-    { ONIGERR_NEVER_ENDING_RECURSION,                     REG_BADPAT },\r
-    { ONIGERR_GROUP_NUMBER_OVER_FOR_CAPTURE_HISTORY,      REG_BADPAT },\r
-    { ONIGERR_INVALID_CHAR_PROPERTY_NAME,                 REG_BADPAT },\r
-    { ONIGERR_NOT_SUPPORTED_ENCODING_COMBINATION,         REG_EONIG_BADARG },\r
-    { ONIGERR_OVER_THREAD_PASS_LIMIT_COUNT,               REG_EONIG_THREAD }\r
-\r
-  };\r
-\r
-  int i;\r
-\r
-  if (code >= 0) return 0;\r
-\r
-  for (i = 0; i < (int )(sizeof(o2p) / sizeof(o2p[0])); i++) {\r
-    if (code == o2p[i].onig_err)\r
-      return o2p[i].posix_err;\r
-  }\r
-\r
-  return REG_EONIG_INTERNAL;  /* but, unknown error code */\r
-}\r
-\r
-extern int\r
-regcomp(regex_t* reg, const char* pattern, int posix_options)\r
-{\r
-  int r, len;\r
-  OnigSyntaxType* syntax = OnigDefaultSyntax;\r
-  OnigOptionType options;\r
-\r
-  if ((posix_options & REG_EXTENDED) == 0)\r
-    syntax = ONIG_SYNTAX_POSIX_BASIC;\r
-\r
-  options = syntax->options;\r
-  if ((posix_options & REG_ICASE)   != 0)\r
-    ONIG_OPTION_ON(options, ONIG_OPTION_IGNORECASE);\r
-  if ((posix_options & REG_NEWLINE) != 0) {\r
-    ONIG_OPTION_ON( options, ONIG_OPTION_NEGATE_SINGLELINE);\r
-    ONIG_OPTION_OFF(options, ONIG_OPTION_SINGLELINE);\r
-  }\r
-\r
-  reg->comp_options = posix_options;\r
-\r
-  ENC_STRING_LEN(OnigEncDefaultCharEncoding, pattern, len);\r
-  r = onig_new(PONIG_C(reg), (UChar* )pattern, (UChar* )(pattern + len),\r
-              options, OnigEncDefaultCharEncoding, syntax,\r
-              (OnigErrorInfo* )NULL);\r
-  if (r != ONIG_NORMAL) {\r
-    return onig2posix_error_code(r);\r
-  }\r
-\r
-  reg->re_nsub = ONIG_C(reg)->num_mem;\r
-  return 0;\r
-}\r
-\r
-extern int\r
-regexec(regex_t* reg, const char* str, size_t nmatch,\r
-       regmatch_t pmatch[], int posix_options)\r
-{\r
-  int r, i, len;\r
-  UChar* end;\r
-  regmatch_t* pm;\r
-  OnigOptionType options;\r
-\r
-  options = ONIG_OPTION_POSIX_REGION;\r
-  if ((posix_options & REG_NOTBOL) != 0) options |= ONIG_OPTION_NOTBOL;\r
-  if ((posix_options & REG_NOTEOL) != 0) options |= ONIG_OPTION_NOTEOL;\r
-\r
-  if (nmatch == 0 || (reg->comp_options & REG_NOSUB) != 0) {\r
-    pm = (regmatch_t* )NULL;\r
-    nmatch = 0;\r
-  }\r
-  else if ((int )nmatch < ONIG_C(reg)->num_mem + 1) {\r
-    pm = (regmatch_t* )xmalloc(sizeof(regmatch_t)\r
-                               * (ONIG_C(reg)->num_mem + 1));\r
-    if (pm == NULL)\r
-      return REG_ESPACE;\r
-  }\r
-  else {\r
-    pm = pmatch;\r
-  }\r
-\r
-  ENC_STRING_LEN(ONIG_C(reg)->enc, str, len);\r
-  end = (UChar* )(str + len);\r
-  r = onig_search(ONIG_C(reg), (UChar* )str, end, (UChar* )str, end,\r
-                 (OnigRegion* )pm, options);\r
-\r
-  if (r >= 0) {\r
-    r = 0; /* Match */\r
-    if (pm != pmatch && pm != NULL) {\r
-      xmemcpy(pmatch, pm, sizeof(regmatch_t) * nmatch);\r
-    }\r
-  }\r
-  else if (r == ONIG_MISMATCH) {\r
-    r = REG_NOMATCH;\r
-    for (i = 0; i < (int )nmatch; i++)\r
-      pmatch[i].rm_so = pmatch[i].rm_eo = ONIG_REGION_NOTPOS;\r
-  }\r
-  else {\r
-    r = onig2posix_error_code(r);\r
-  }\r
-\r
-  if (pm != pmatch && pm != NULL)\r
-    xfree(pm);\r
-\r
-#if 0\r
-  if (reg->re_nsub > nmatch - 1)\r
-    reg->re_nsub = (nmatch <= 1 ? 0 : nmatch - 1);\r
-#endif\r
-\r
-  return r;\r
-}\r
-\r
-extern void\r
-regfree(regex_t* reg)\r
-{\r
-  onig_free(ONIG_C(reg));\r
-}\r
-\r
-\r
-extern void\r
-reg_set_encoding(int mb_code)\r
-{\r
-  OnigEncoding enc;\r
-\r
-  switch (mb_code) {\r
-  case REG_POSIX_ENCODING_ASCII:\r
-    enc = ONIG_ENCODING_ASCII;\r
-    break;\r
-  case REG_POSIX_ENCODING_EUC_JP:\r
-    enc = ONIG_ENCODING_EUC_JP;\r
-    break;\r
-  case REG_POSIX_ENCODING_SJIS:\r
-    enc = ONIG_ENCODING_SJIS;\r
-    break;\r
-  case REG_POSIX_ENCODING_UTF8:\r
-    enc = ONIG_ENCODING_UTF8;\r
-    break;\r
-  case REG_POSIX_ENCODING_UTF16_BE:\r
-    enc = ONIG_ENCODING_UTF16_BE;\r
-    break;\r
-  case REG_POSIX_ENCODING_UTF16_LE:\r
-    enc = ONIG_ENCODING_UTF16_LE;\r
-    break;\r
-\r
-  default:\r
-    return ;\r
-    break;\r
-  }\r
-\r
-  onigenc_set_default_encoding(enc);\r
-}\r
-\r
-extern int\r
-reg_name_to_group_numbers(regex_t* reg,\r
-  const unsigned char* name, const unsigned char* name_end, int** nums)\r
-{\r
-  return onig_name_to_group_numbers(ONIG_C(reg), name, name_end, nums);\r
-}\r
-\r
-typedef struct {\r
-  int (*func)(const unsigned char*, const unsigned char*,int,int*,regex_t*,void*);\r
-  regex_t* reg;\r
-  void* arg;\r
-} i_wrap;\r
-\r
-static int\r
-i_wrapper(const UChar* name, const UChar* name_end, int ng, int* gs,\r
-         onig_regex_t* reg ARG_UNUSED, void* arg)\r
-{\r
-  i_wrap* warg = (i_wrap* )arg;\r
-\r
-  return (*warg->func)(name, name_end, ng, gs, warg->reg, warg->arg);\r
-}\r
-\r
-extern int\r
-reg_foreach_name(regex_t* reg,\r
- int (*func)(const unsigned char*, const unsigned char*,int,int*,regex_t*,void*),\r
- void* arg)\r
-{\r
-  i_wrap warg;\r
-\r
-  warg.func = func;\r
-  warg.reg  = reg;\r
-  warg.arg  = arg;\r
-\r
-  return onig_foreach_name(ONIG_C(reg), i_wrapper, &warg);\r
-}\r
-\r
-extern int\r
-reg_number_of_names(regex_t* reg)\r
-{\r
-  return onig_number_of_names(ONIG_C(reg));\r
-}\r
diff --git a/MdeModulePkg/Universal/RegularExpressionDxe/Oniguruma/regsyntax.c b/MdeModulePkg/Universal/RegularExpressionDxe/Oniguruma/regsyntax.c
deleted file mode 100644 (file)
index dc4d681..0000000
+++ /dev/null
@@ -1,315 +0,0 @@
-/**********************************************************************\r
-  regsyntax.c -  Oniguruma (regular expression library)\r
-**********************************************************************/\r
-/*-\r
- * Copyright (c) 2002-2006  K.Kosako  <sndgk393 AT ybb DOT ne DOT jp>\r
- * All rights reserved.\r
- *\r
- * Redistribution and use in source and binary forms, with or without\r
- * modification, are permitted provided that the following conditions\r
- * are met:\r
- * 1. Redistributions of source code must retain the above copyright\r
- *    notice, this list of conditions and the following disclaimer.\r
- * 2. Redistributions in binary form must reproduce the above copyright\r
- *    notice, this list of conditions and the following disclaimer in the\r
- *    documentation and/or other materials provided with the distribution.\r
- *\r
- * THIS SOFTWARE IS PROVIDED BY THE AUTHOR AND CONTRIBUTORS ``AS IS'' AND\r
- * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE\r
- * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE\r
- * ARE DISCLAIMED.  IN NO EVENT SHALL THE AUTHOR OR CONTRIBUTORS BE LIABLE\r
- * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL\r
- * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS\r
- * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)\r
- * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT\r
- * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY\r
- * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF\r
- * SUCH DAMAGE.\r
- */\r
-\r
-#include "regint.h"\r
-\r
-OnigSyntaxType OnigSyntaxASIS = {\r
-    0\r
-  , ONIG_SYN_OP2_INEFFECTIVE_ESCAPE\r
-  , 0\r
-  , ONIG_OPTION_NONE\r
-  ,\r
-  {\r
-      (OnigCodePoint )'\\'                       /* esc */\r
-    , (OnigCodePoint )ONIG_INEFFECTIVE_META_CHAR /* anychar '.'  */\r
-    , (OnigCodePoint )ONIG_INEFFECTIVE_META_CHAR /* anytime '*'  */\r
-    , (OnigCodePoint )ONIG_INEFFECTIVE_META_CHAR /* zero or one time '?' */\r
-    , (OnigCodePoint )ONIG_INEFFECTIVE_META_CHAR /* one or more time '+' */\r
-    , (OnigCodePoint )ONIG_INEFFECTIVE_META_CHAR /* anychar anytime */\r
-  }\r
-};\r
-\r
-OnigSyntaxType OnigSyntaxPosixBasic = {\r
-  ( SYN_POSIX_COMMON_OP | ONIG_SYN_OP_ESC_LPAREN_SUBEXP |\r
-    ONIG_SYN_OP_ESC_BRACE_INTERVAL )\r
-  , 0\r
-  , 0\r
-  , ( ONIG_OPTION_SINGLELINE | ONIG_OPTION_MULTILINE )\r
-  ,\r
-  {\r
-      (OnigCodePoint )'\\'                       /* esc */\r
-    , (OnigCodePoint )ONIG_INEFFECTIVE_META_CHAR /* anychar '.'  */\r
-    , (OnigCodePoint )ONIG_INEFFECTIVE_META_CHAR /* anytime '*'  */\r
-    , (OnigCodePoint )ONIG_INEFFECTIVE_META_CHAR /* zero or one time '?' */\r
-    , (OnigCodePoint )ONIG_INEFFECTIVE_META_CHAR /* one or more time '+' */\r
-    , (OnigCodePoint )ONIG_INEFFECTIVE_META_CHAR /* anychar anytime */\r
-  }\r
-};\r
-\r
-OnigSyntaxType OnigSyntaxPosixExtended = {\r
-  ( SYN_POSIX_COMMON_OP | ONIG_SYN_OP_LPAREN_SUBEXP |\r
-    ONIG_SYN_OP_BRACE_INTERVAL |\r
-    ONIG_SYN_OP_PLUS_ONE_INF | ONIG_SYN_OP_QMARK_ZERO_ONE | ONIG_SYN_OP_VBAR_ALT )\r
-  , 0\r
-  , ( ONIG_SYN_CONTEXT_INDEP_ANCHORS | \r
-      ONIG_SYN_CONTEXT_INDEP_REPEAT_OPS | ONIG_SYN_CONTEXT_INVALID_REPEAT_OPS | \r
-      ONIG_SYN_ALLOW_UNMATCHED_CLOSE_SUBEXP |\r
-      ONIG_SYN_ALLOW_DOUBLE_RANGE_OP_IN_CC )\r
-  , ( ONIG_OPTION_SINGLELINE | ONIG_OPTION_MULTILINE )\r
-  ,\r
-  {\r
-      (OnigCodePoint )'\\'                       /* esc */\r
-    , (OnigCodePoint )ONIG_INEFFECTIVE_META_CHAR /* anychar '.'  */\r
-    , (OnigCodePoint )ONIG_INEFFECTIVE_META_CHAR /* anytime '*'  */\r
-    , (OnigCodePoint )ONIG_INEFFECTIVE_META_CHAR /* zero or one time '?' */\r
-    , (OnigCodePoint )ONIG_INEFFECTIVE_META_CHAR /* one or more time '+' */\r
-    , (OnigCodePoint )ONIG_INEFFECTIVE_META_CHAR /* anychar anytime */\r
-  }\r
-};\r
-\r
-OnigSyntaxType OnigSyntaxEmacs = {\r
-  ( ONIG_SYN_OP_DOT_ANYCHAR | ONIG_SYN_OP_BRACKET_CC |\r
-    ONIG_SYN_OP_ESC_BRACE_INTERVAL |\r
-    ONIG_SYN_OP_ESC_LPAREN_SUBEXP | ONIG_SYN_OP_ESC_VBAR_ALT |\r
-    ONIG_SYN_OP_ASTERISK_ZERO_INF | ONIG_SYN_OP_PLUS_ONE_INF |\r
-    ONIG_SYN_OP_QMARK_ZERO_ONE | ONIG_SYN_OP_DECIMAL_BACKREF |\r
-    ONIG_SYN_OP_LINE_ANCHOR | ONIG_SYN_OP_ESC_CONTROL_CHARS )\r
-  , ONIG_SYN_OP2_ESC_GNU_BUF_ANCHOR\r
-  , ONIG_SYN_ALLOW_EMPTY_RANGE_IN_CC\r
-  , ONIG_OPTION_NONE\r
-  ,\r
-  {\r
-      (OnigCodePoint )'\\'                       /* esc */\r
-    , (OnigCodePoint )ONIG_INEFFECTIVE_META_CHAR /* anychar '.'  */\r
-    , (OnigCodePoint )ONIG_INEFFECTIVE_META_CHAR /* anytime '*'  */\r
-    , (OnigCodePoint )ONIG_INEFFECTIVE_META_CHAR /* zero or one time '?' */\r
-    , (OnigCodePoint )ONIG_INEFFECTIVE_META_CHAR /* one or more time '+' */\r
-    , (OnigCodePoint )ONIG_INEFFECTIVE_META_CHAR /* anychar anytime */\r
-  }\r
-};\r
-\r
-OnigSyntaxType OnigSyntaxGrep = {\r
-  ( ONIG_SYN_OP_DOT_ANYCHAR | ONIG_SYN_OP_BRACKET_CC | ONIG_SYN_OP_POSIX_BRACKET |\r
-    ONIG_SYN_OP_ESC_BRACE_INTERVAL | ONIG_SYN_OP_ESC_LPAREN_SUBEXP |\r
-    ONIG_SYN_OP_ESC_VBAR_ALT |\r
-    ONIG_SYN_OP_ASTERISK_ZERO_INF | ONIG_SYN_OP_ESC_PLUS_ONE_INF |\r
-    ONIG_SYN_OP_ESC_QMARK_ZERO_ONE | ONIG_SYN_OP_LINE_ANCHOR |\r
-    ONIG_SYN_OP_ESC_W_WORD | ONIG_SYN_OP_ESC_B_WORD_BOUND |\r
-    ONIG_SYN_OP_ESC_LTGT_WORD_BEGIN_END | ONIG_SYN_OP_DECIMAL_BACKREF )\r
-  , 0\r
-  , ( ONIG_SYN_ALLOW_EMPTY_RANGE_IN_CC | ONIG_SYN_NOT_NEWLINE_IN_NEGATIVE_CC )\r
-  , ONIG_OPTION_NONE\r
-  ,\r
-  {\r
-      (OnigCodePoint )'\\'                       /* esc */\r
-    , (OnigCodePoint )ONIG_INEFFECTIVE_META_CHAR /* anychar '.'  */\r
-    , (OnigCodePoint )ONIG_INEFFECTIVE_META_CHAR /* anytime '*'  */\r
-    , (OnigCodePoint )ONIG_INEFFECTIVE_META_CHAR /* zero or one time '?' */\r
-    , (OnigCodePoint )ONIG_INEFFECTIVE_META_CHAR /* one or more time '+' */\r
-    , (OnigCodePoint )ONIG_INEFFECTIVE_META_CHAR /* anychar anytime */\r
-  }\r
-};\r
-\r
-OnigSyntaxType OnigSyntaxGnuRegex = {\r
-  SYN_GNU_REGEX_OP\r
-  , 0\r
-  , SYN_GNU_REGEX_BV\r
-  , ONIG_OPTION_NONE\r
-  ,\r
-  {\r
-      (OnigCodePoint )'\\'                       /* esc */\r
-    , (OnigCodePoint )ONIG_INEFFECTIVE_META_CHAR /* anychar '.'  */\r
-    , (OnigCodePoint )ONIG_INEFFECTIVE_META_CHAR /* anytime '*'  */\r
-    , (OnigCodePoint )ONIG_INEFFECTIVE_META_CHAR /* zero or one time '?' */\r
-    , (OnigCodePoint )ONIG_INEFFECTIVE_META_CHAR /* one or more time '+' */\r
-    , (OnigCodePoint )ONIG_INEFFECTIVE_META_CHAR /* anychar anytime */\r
-  }\r
-};\r
-\r
-OnigSyntaxType OnigSyntaxJava = {\r
-  (( SYN_GNU_REGEX_OP | ONIG_SYN_OP_QMARK_NON_GREEDY |\r
-     ONIG_SYN_OP_ESC_CONTROL_CHARS | ONIG_SYN_OP_ESC_C_CONTROL |\r
-     ONIG_SYN_OP_ESC_OCTAL3 | ONIG_SYN_OP_ESC_X_HEX2 )\r
-   & ~ONIG_SYN_OP_ESC_LTGT_WORD_BEGIN_END )\r
-  , ( ONIG_SYN_OP2_ESC_CAPITAL_Q_QUOTE | ONIG_SYN_OP2_QMARK_GROUP_EFFECT |\r
-      ONIG_SYN_OP2_OPTION_PERL | ONIG_SYN_OP2_PLUS_POSSESSIVE_REPEAT |\r
-      ONIG_SYN_OP2_PLUS_POSSESSIVE_INTERVAL | ONIG_SYN_OP2_CCLASS_SET_OP |\r
-      ONIG_SYN_OP2_ESC_V_VTAB | ONIG_SYN_OP2_ESC_U_HEX4 |\r
-      ONIG_SYN_OP2_ESC_P_BRACE_CHAR_PROPERTY )\r
-  , ( SYN_GNU_REGEX_BV | ONIG_SYN_DIFFERENT_LEN_ALT_LOOK_BEHIND )\r
-  , ONIG_OPTION_SINGLELINE\r
-  ,\r
-  {\r
-      (OnigCodePoint )'\\'                       /* esc */\r
-    , (OnigCodePoint )ONIG_INEFFECTIVE_META_CHAR /* anychar '.'  */\r
-    , (OnigCodePoint )ONIG_INEFFECTIVE_META_CHAR /* anytime '*'  */\r
-    , (OnigCodePoint )ONIG_INEFFECTIVE_META_CHAR /* zero or one time '?' */\r
-    , (OnigCodePoint )ONIG_INEFFECTIVE_META_CHAR /* one or more time '+' */\r
-    , (OnigCodePoint )ONIG_INEFFECTIVE_META_CHAR /* anychar anytime */\r
-  }\r
-};\r
-\r
-OnigSyntaxType OnigSyntaxPerl = {\r
-  (( SYN_GNU_REGEX_OP | ONIG_SYN_OP_QMARK_NON_GREEDY |\r
-     ONIG_SYN_OP_ESC_OCTAL3 | ONIG_SYN_OP_ESC_X_HEX2 |\r
-     ONIG_SYN_OP_ESC_X_BRACE_HEX8 | ONIG_SYN_OP_ESC_CONTROL_CHARS |\r
-     ONIG_SYN_OP_ESC_C_CONTROL )\r
-   & ~ONIG_SYN_OP_ESC_LTGT_WORD_BEGIN_END )\r
-  , ( ONIG_SYN_OP2_ESC_CAPITAL_Q_QUOTE |\r
-      ONIG_SYN_OP2_QMARK_GROUP_EFFECT | ONIG_SYN_OP2_OPTION_PERL |\r
-      ONIG_SYN_OP2_ESC_P_BRACE_CHAR_PROPERTY |\r
-      ONIG_SYN_OP2_ESC_P_BRACE_CIRCUMFLEX_NOT )\r
-  , SYN_GNU_REGEX_BV\r
-  , ONIG_OPTION_SINGLELINE\r
-  ,\r
-  {\r
-      (OnigCodePoint )'\\'                       /* esc */\r
-    , (OnigCodePoint )ONIG_INEFFECTIVE_META_CHAR /* anychar '.'  */\r
-    , (OnigCodePoint )ONIG_INEFFECTIVE_META_CHAR /* anytime '*'  */\r
-    , (OnigCodePoint )ONIG_INEFFECTIVE_META_CHAR /* zero or one time '?' */\r
-    , (OnigCodePoint )ONIG_INEFFECTIVE_META_CHAR /* one or more time '+' */\r
-    , (OnigCodePoint )ONIG_INEFFECTIVE_META_CHAR /* anychar anytime */\r
-  }\r
-};\r
-\r
-/* Perl + named group */\r
-OnigSyntaxType OnigSyntaxPerl_NG = {\r
-  (( SYN_GNU_REGEX_OP | ONIG_SYN_OP_QMARK_NON_GREEDY |\r
-     ONIG_SYN_OP_ESC_OCTAL3 | ONIG_SYN_OP_ESC_X_HEX2 |\r
-     ONIG_SYN_OP_ESC_X_BRACE_HEX8 | ONIG_SYN_OP_ESC_CONTROL_CHARS |\r
-     ONIG_SYN_OP_ESC_C_CONTROL )\r
-   & ~ONIG_SYN_OP_ESC_LTGT_WORD_BEGIN_END )\r
-  , ( ONIG_SYN_OP2_ESC_CAPITAL_Q_QUOTE |\r
-      ONIG_SYN_OP2_QMARK_GROUP_EFFECT | ONIG_SYN_OP2_OPTION_PERL |\r
-      ONIG_SYN_OP2_ESC_P_BRACE_CHAR_PROPERTY  |\r
-      ONIG_SYN_OP2_ESC_P_BRACE_CIRCUMFLEX_NOT |\r
-      ONIG_SYN_OP2_QMARK_LT_NAMED_GROUP       |\r
-      ONIG_SYN_OP2_ESC_K_NAMED_BACKREF        |\r
-      ONIG_SYN_OP2_ESC_G_SUBEXP_CALL )\r
-  , ( SYN_GNU_REGEX_BV |\r
-      ONIG_SYN_CAPTURE_ONLY_NAMED_GROUP |\r
-      ONIG_SYN_ALLOW_MULTIPLEX_DEFINITION_NAME )\r
-  , ONIG_OPTION_SINGLELINE\r
-  ,\r
-  {\r
-      (OnigCodePoint )'\\'                       /* esc */\r
-    , (OnigCodePoint )ONIG_INEFFECTIVE_META_CHAR /* anychar '.'  */\r
-    , (OnigCodePoint )ONIG_INEFFECTIVE_META_CHAR /* anytime '*'  */\r
-    , (OnigCodePoint )ONIG_INEFFECTIVE_META_CHAR /* zero or one time '?' */\r
-    , (OnigCodePoint )ONIG_INEFFECTIVE_META_CHAR /* one or more time '+' */\r
-    , (OnigCodePoint )ONIG_INEFFECTIVE_META_CHAR /* anychar anytime */\r
-  }\r
-};\r
-\r
-\r
-\r
-extern int\r
-onig_set_default_syntax(OnigSyntaxType* syntax)\r
-{\r
-  if (IS_NULL(syntax))\r
-    syntax = ONIG_SYNTAX_RUBY;\r
-\r
-  OnigDefaultSyntax = syntax;\r
-  return 0;\r
-}\r
-\r
-extern void\r
-onig_copy_syntax(OnigSyntaxType* to, OnigSyntaxType* from)\r
-{\r
-  *to = *from;\r
-}\r
-\r
-extern void\r
-onig_set_syntax_op(OnigSyntaxType* syntax, unsigned int op)\r
-{\r
-  syntax->op = op;\r
-}\r
-\r
-extern void\r
-onig_set_syntax_op2(OnigSyntaxType* syntax, unsigned int op2)\r
-{\r
-  syntax->op2 = op2;\r
-}\r
-\r
-extern void\r
-onig_set_syntax_behavior(OnigSyntaxType* syntax, unsigned int behavior)\r
-{\r
-  syntax->behavior = behavior;\r
-}\r
-\r
-extern void\r
-onig_set_syntax_options(OnigSyntaxType* syntax, OnigOptionType options)\r
-{\r
-  syntax->options = options;\r
-}\r
-\r
-extern unsigned int\r
-onig_get_syntax_op(OnigSyntaxType* syntax)\r
-{\r
-  return syntax->op;\r
-}\r
-\r
-extern unsigned int\r
-onig_get_syntax_op2(OnigSyntaxType* syntax)\r
-{\r
-  return syntax->op2;\r
-}\r
-\r
-extern unsigned int\r
-onig_get_syntax_behavior(OnigSyntaxType* syntax)\r
-{\r
-  return syntax->behavior;\r
-}\r
-\r
-extern OnigOptionType\r
-onig_get_syntax_options(OnigSyntaxType* syntax)\r
-{\r
-  return syntax->options;\r
-}\r
-\r
-#ifdef USE_VARIABLE_META_CHARS\r
-extern int onig_set_meta_char(OnigSyntaxType* enc,\r
-                              unsigned int what, OnigCodePoint code)\r
-{\r
-  switch (what) {\r
-  case ONIG_META_CHAR_ESCAPE:\r
-    enc->meta_char_table.esc = code;\r
-    break;\r
-  case ONIG_META_CHAR_ANYCHAR:\r
-    enc->meta_char_table.anychar = code;\r
-    break;\r
-  case ONIG_META_CHAR_ANYTIME:\r
-    enc->meta_char_table.anytime = code;\r
-    break;\r
-  case ONIG_META_CHAR_ZERO_OR_ONE_TIME:\r
-    enc->meta_char_table.zero_or_one_time = code;\r
-    break;\r
-  case ONIG_META_CHAR_ONE_OR_MORE_TIME:\r
-    enc->meta_char_table.one_or_more_time = code;\r
-    break;\r
-  case ONIG_META_CHAR_ANYCHAR_ANYTIME:\r
-    enc->meta_char_table.anychar_anytime = code;\r
-    break;\r
-  default:\r
-    return ONIGERR_INVALID_ARGUMENT;\r
-    break;\r
-  }\r
-  return 0;\r
-}\r
-#endif /* USE_VARIABLE_META_CHARS */\r
diff --git a/MdeModulePkg/Universal/RegularExpressionDxe/Oniguruma/regtrav.c b/MdeModulePkg/Universal/RegularExpressionDxe/Oniguruma/regtrav.c
deleted file mode 100644 (file)
index fbc71d8..0000000
+++ /dev/null
@@ -1,76 +0,0 @@
-/**********************************************************************\r
-  regtrav.c -  Oniguruma (regular expression library)\r
-**********************************************************************/\r
-/*-\r
- * Copyright (c) 2002-2004  K.Kosako  <sndgk393 AT ybb DOT ne DOT jp>\r
- * All rights reserved.\r
- *\r
- * Redistribution and use in source and binary forms, with or without\r
- * modification, are permitted provided that the following conditions\r
- * are met:\r
- * 1. Redistributions of source code must retain the above copyright\r
- *    notice, this list of conditions and the following disclaimer.\r
- * 2. Redistributions in binary form must reproduce the above copyright\r
- *    notice, this list of conditions and the following disclaimer in the\r
- *    documentation and/or other materials provided with the distribution.\r
- *\r
- * THIS SOFTWARE IS PROVIDED BY THE AUTHOR AND CONTRIBUTORS ``AS IS'' AND\r
- * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE\r
- * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE\r
- * ARE DISCLAIMED.  IN NO EVENT SHALL THE AUTHOR OR CONTRIBUTORS BE LIABLE\r
- * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL\r
- * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS\r
- * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)\r
- * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT\r
- * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY\r
- * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF\r
- * SUCH DAMAGE.\r
- */\r
-\r
-#include "regint.h"\r
-\r
-#ifdef USE_CAPTURE_HISTORY\r
-\r
-static int\r
-capture_tree_traverse(OnigCaptureTreeNode* node, int at,\r
-                      int(*callback_func)(int,int,int,int,int,void*),\r
-                      int level, void* arg)\r
-{\r
-  int r, i;\r
-\r
-  if (node == (OnigCaptureTreeNode* )0)\r
-    return 0;\r
-\r
-  if ((at & ONIG_TRAVERSE_CALLBACK_AT_FIRST) != 0) {\r
-    r = (*callback_func)(node->group, node->beg, node->end,\r
-                         level, ONIG_TRAVERSE_CALLBACK_AT_FIRST, arg);\r
-    if (r != 0) return r;\r
-  }\r
-\r
-  for (i = 0; i < node->num_childs; i++) {\r
-    r = capture_tree_traverse(node->childs[i], at,\r
-                              callback_func, level + 1, arg);\r
-    if (r != 0) return r;\r
-  }\r
-\r
-  if ((at & ONIG_TRAVERSE_CALLBACK_AT_LAST) != 0) {\r
-    r = (*callback_func)(node->group, node->beg, node->end,\r
-                         level, ONIG_TRAVERSE_CALLBACK_AT_LAST, arg);\r
-    if (r != 0) return r;\r
-  }\r
-\r
-  return 0;\r
-}\r
-#endif /* USE_CAPTURE_HISTORY */\r
-\r
-extern int\r
-onig_capture_tree_traverse(OnigRegion* region, int at,\r
-                  int(*callback_func)(int,int,int,int,int,void*), void* arg)\r
-{\r
-#ifdef USE_CAPTURE_HISTORY\r
-  return capture_tree_traverse(region->history_root, at,\r
-                               callback_func, 0, arg);\r
-#else\r
-  return ONIG_NO_SUPPORT_CONFIG;\r
-#endif\r
-}\r
diff --git a/MdeModulePkg/Universal/RegularExpressionDxe/Oniguruma/regversion.c b/MdeModulePkg/Universal/RegularExpressionDxe/Oniguruma/regversion.c
deleted file mode 100644 (file)
index 087c6ad..0000000
+++ /dev/null
@@ -1,56 +0,0 @@
-/**********************************************************************\r
-  regversion.c -  Oniguruma (regular expression library)\r
-**********************************************************************/\r
-/*-\r
- * Copyright (c) 2002-2008  K.Kosako  <sndgk393 AT ybb DOT ne DOT jp>\r
- * All rights reserved.\r
- *\r
- * Redistribution and use in source and binary forms, with or without\r
- * modification, are permitted provided that the following conditions\r
- * are met:\r
- * 1. Redistributions of source code must retain the above copyright\r
- *    notice, this list of conditions and the following disclaimer.\r
- * 2. Redistributions in binary form must reproduce the above copyright\r
- *    notice, this list of conditions and the following disclaimer in the\r
- *    documentation and/or other materials provided with the distribution.\r
- *\r
- * THIS SOFTWARE IS PROVIDED BY THE AUTHOR AND CONTRIBUTORS ``AS IS'' AND\r
- * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE\r
- * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE\r
- * ARE DISCLAIMED.  IN NO EVENT SHALL THE AUTHOR OR CONTRIBUTORS BE LIABLE\r
- * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL\r
- * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS\r
- * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)\r
- * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT\r
- * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY\r
- * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF\r
- * SUCH DAMAGE.\r
- */\r
-\r
-//#include "config.h"\r
-#include "oniguruma.h"\r
-//#include <stdio.h>\r
-\r
-extern const char*\r
-onig_version(void)\r
-{\r
-  static char s[12];\r
-\r
-  sprintf(s, "%d.%d.%d",\r
-          ONIGURUMA_VERSION_MAJOR,\r
-          ONIGURUMA_VERSION_MINOR,\r
-          ONIGURUMA_VERSION_TEENY);\r
-  return s;\r
-}\r
-\r
-extern const char*\r
-onig_copyright(void)\r
-{\r
-  static char s[58];\r
-\r
-  sprintf(s, "Oniguruma %d.%d.%d : Copyright (C) 2002-2008 K.Kosako",\r
-          ONIGURUMA_VERSION_MAJOR,\r
-          ONIGURUMA_VERSION_MINOR,\r
-          ONIGURUMA_VERSION_TEENY);\r
-  return s;\r
-}\r
diff --git a/MdeModulePkg/Universal/RegularExpressionDxe/Oniguruma/st.c b/MdeModulePkg/Universal/RegularExpressionDxe/Oniguruma/st.c
deleted file mode 100644 (file)
index 1527fcc..0000000
+++ /dev/null
@@ -1,579 +0,0 @@
-/* This is a public domain general purpose hash table package written by Peter Moore @ UCB. */\r
-\r
-/* static      char    sccsid[] = "@(#) st.c 5.1 89/12/14 Crucible"; */\r
-\r
-//#include <stdio.h>\r
-//#include <stdlib.h>\r
-//#include <string.h>\r
-#include "OnigurumaUefiPort.h"\r
-\r
-#ifdef _WIN32\r
-#include <malloc.h>\r
-#endif\r
-\r
-#include "regint.h"\r
-#include "st.h"\r
-\r
-typedef struct st_table_entry st_table_entry;\r
-\r
-struct st_table_entry {\r
-    unsigned int hash;\r
-    st_data_t key;\r
-    st_data_t record;\r
-    st_table_entry *next;\r
-};\r
-\r
-#define ST_DEFAULT_MAX_DENSITY 5\r
-#define ST_DEFAULT_INIT_TABLE_SIZE 11\r
-\r
-    /*\r
-     * DEFAULT_MAX_DENSITY is the default for the largest we allow the\r
-     * average number of items per bin before increasing the number of\r
-     * bins\r
-     *\r
-     * DEFAULT_INIT_TABLE_SIZE is the default for the number of bins\r
-     * allocated initially\r
-     *\r
-     */\r
-\r
-static int numcmp(long, long);\r
-static int numhash(long);\r
-static struct st_hash_type type_numhash = {\r
-    numcmp,\r
-    numhash,\r
-};\r
-\r
-/* extern int strcmp(const char *, const char *); */\r
-static int strhash(const char *);\r
-static struct st_hash_type type_strhash = {\r
-    strcmp,\r
-    strhash,\r
-};\r
-\r
-static void rehash(st_table *);\r
-\r
-#define alloc(type) (type*)xmalloc((unsigned)sizeof(type))\r
-#define Calloc(n,s) (char*)xcalloc((n),(s))\r
-\r
-#define EQUAL(table,x,y) ((x)==(y) || (*table->type->compare)((x),(y)) == 0)\r
-\r
-#define do_hash(key,table) (unsigned int)(*(table)->type->hash)((key))\r
-#define do_hash_bin(key,table) (do_hash(key, table)%(table)->num_bins)\r
-\r
-/*\r
- * MINSIZE is the minimum size of a dictionary.\r
- */\r
-\r
-#define MINSIZE 8\r
-\r
-/*\r
-Table of prime numbers 2^n+a, 2<=n<=30.\r
-*/\r
-static const long primes[] = {\r
-       8 + 3,\r
-       16 + 3,\r
-       32 + 5,\r
-       64 + 3,\r
-       128 + 3,\r
-       256 + 27,\r
-       512 + 9,\r
-       1024 + 9,\r
-       2048 + 5,\r
-       4096 + 3,\r
-       8192 + 27,\r
-       16384 + 43,\r
-       32768 + 3,\r
-       65536 + 45,\r
-       131072 + 29,\r
-       262144 + 3,\r
-       524288 + 21,\r
-       1048576 + 7,\r
-       2097152 + 17,\r
-       4194304 + 15,\r
-       8388608 + 9,\r
-       16777216 + 43,\r
-       33554432 + 35,\r
-       67108864 + 15,\r
-       134217728 + 29,\r
-       268435456 + 3,\r
-       536870912 + 11,\r
-       1073741824 + 85,\r
-       0\r
-};\r
-\r
-static int\r
-new_size(size)\r
-    int size;\r
-{\r
-    int i;\r
-\r
-#if 0\r
-    for (i=3; i<31; i++) {\r
-       if ((1<<i) > size) return 1<<i;\r
-    }\r
-    return -1;\r
-#else\r
-    int newsize;\r
-\r
-    for (i = 0, newsize = MINSIZE;\r
-        i < (int )(sizeof(primes)/sizeof(primes[0]));\r
-        i++, newsize <<= 1)\r
-    {\r
-       if (newsize > size) return primes[i];\r
-    }\r
-    /* Ran out of polynomials */\r
-    return -1;                 /* should raise exception */\r
-#endif\r
-}\r
-\r
-#ifdef HASH_LOG\r
-static int collision = 0;\r
-static int init_st = 0;\r
-\r
-static void\r
-stat_col()\r
-{\r
-    FILE *f = fopen("/tmp/col", "w");\r
-    fprintf(f, "collision: %d\n", collision);\r
-    fclose(f);\r
-}\r
-#endif\r
-\r
-st_table*\r
-st_init_table_with_size(type, size)\r
-    struct st_hash_type *type;\r
-    int size;\r
-{\r
-    st_table *tbl;\r
-\r
-#ifdef HASH_LOG\r
-    if (init_st == 0) {\r
-       init_st = 1;\r
-       atexit(stat_col);\r
-    }\r
-#endif\r
-\r
-    size = new_size(size);     /* round up to prime number */\r
-\r
-    tbl = alloc(st_table);\r
-    tbl->type = type;\r
-    tbl->num_entries = 0;\r
-    tbl->num_bins = size;\r
-    tbl->bins = (st_table_entry **)Calloc(size, sizeof(st_table_entry*));\r
-\r
-    return tbl;\r
-}\r
-\r
-st_table*\r
-st_init_table(type)\r
-    struct st_hash_type *type;\r
-{\r
-    return st_init_table_with_size(type, 0);\r
-}\r
-\r
-st_table*\r
-st_init_numtable(void)\r
-{\r
-    return st_init_table(&type_numhash);\r
-}\r
-\r
-st_table*\r
-st_init_numtable_with_size(size)\r
-    int size;\r
-{\r
-    return st_init_table_with_size(&type_numhash, size);\r
-}\r
-\r
-st_table*\r
-st_init_strtable(void)\r
-{\r
-    return st_init_table(&type_strhash);\r
-}\r
-\r
-st_table*\r
-st_init_strtable_with_size(size)\r
-    int size;\r
-{\r
-    return st_init_table_with_size(&type_strhash, size);\r
-}\r
-\r
-void\r
-st_free_table(table)\r
-    st_table *table;\r
-{\r
-    register st_table_entry *ptr, *next;\r
-    int i;\r
-\r
-    for(i = 0; i < table->num_bins; i++) {\r
-       ptr = table->bins[i];\r
-       while (ptr != 0) {\r
-           next = ptr->next;\r
-           free(ptr);\r
-           ptr = next;\r
-       }\r
-    }\r
-    free(table->bins);\r
-    free(table);\r
-}\r
-\r
-#define PTR_NOT_EQUAL(table, ptr, hash_val, key) \\r
-((ptr) != 0 && (ptr->hash != (hash_val) || !EQUAL((table), (key), (ptr)->key)))\r
-\r
-#ifdef HASH_LOG\r
-#define COLLISION collision++\r
-#else\r
-#define COLLISION\r
-#endif\r
-\r
-#define FIND_ENTRY(table, ptr, hash_val, bin_pos) do {\\r
-    bin_pos = hash_val%(table)->num_bins;\\r
-    ptr = (table)->bins[bin_pos];\\r
-    if (PTR_NOT_EQUAL(table, ptr, hash_val, key)) {\\r
-       COLLISION;\\r
-       while (PTR_NOT_EQUAL(table, ptr->next, hash_val, key)) {\\r
-           ptr = ptr->next;\\r
-       }\\r
-       ptr = ptr->next;\\r
-    }\\r
-} while (0)\r
-\r
-int\r
-st_lookup(table, key, value)\r
-    st_table *table;\r
-    register st_data_t key;\r
-    st_data_t *value;\r
-{\r
-    unsigned int hash_val, bin_pos;\r
-    register st_table_entry *ptr;\r
-\r
-    hash_val = do_hash(key, table);\r
-    FIND_ENTRY(table, ptr, hash_val, bin_pos);\r
-\r
-    if (ptr == 0) {\r
-       return 0;\r
-    }\r
-    else {\r
-       if (value != 0)  *value = ptr->record;\r
-       return 1;\r
-    }\r
-}\r
-\r
-#define ADD_DIRECT(table, key, value, hash_val, bin_pos)\\r
-do {\\r
-    st_table_entry *entry;\\r
-    if (table->num_entries/(table->num_bins) > ST_DEFAULT_MAX_DENSITY) {\\r
-       rehash(table);\\r
-        bin_pos = hash_val % table->num_bins;\\r
-    }\\r
-    \\r
-    entry = alloc(st_table_entry);\\r
-    \\r
-    entry->hash = hash_val;\\r
-    entry->key = key;\\r
-    entry->record = value;\\r
-    entry->next = table->bins[bin_pos];\\r
-    table->bins[bin_pos] = entry;\\r
-    table->num_entries++;\\r
-} while (0)\r
-\r
-int\r
-st_insert(table, key, value)\r
-    register st_table *table;\r
-    register st_data_t key;\r
-    st_data_t value;\r
-{\r
-    unsigned int hash_val, bin_pos;\r
-    register st_table_entry *ptr;\r
-\r
-    hash_val = do_hash(key, table);\r
-    FIND_ENTRY(table, ptr, hash_val, bin_pos);\r
-\r
-    if (ptr == 0) {\r
-       ADD_DIRECT(table, key, value, hash_val, bin_pos);\r
-       return 0;\r
-    }\r
-    else {\r
-       ptr->record = value;\r
-       return 1;\r
-    }\r
-}\r
-\r
-void\r
-st_add_direct(table, key, value)\r
-    st_table *table;\r
-    st_data_t key;\r
-    st_data_t value;\r
-{\r
-    unsigned int hash_val, bin_pos;\r
-\r
-    hash_val = do_hash(key, table);\r
-    bin_pos = hash_val % table->num_bins;\r
-    ADD_DIRECT(table, key, value, hash_val, bin_pos);\r
-}\r
-\r
-static void\r
-rehash(table)\r
-    register st_table *table;\r
-{\r
-    register st_table_entry *ptr, *next, **new_bins;\r
-    int i, old_num_bins = table->num_bins, new_num_bins;\r
-    unsigned int hash_val;\r
-\r
-    new_num_bins = new_size(old_num_bins+1);\r
-    new_bins = (st_table_entry**)Calloc(new_num_bins, sizeof(st_table_entry*));\r
-\r
-    for(i = 0; i < old_num_bins; i++) {\r
-       ptr = table->bins[i];\r
-       while (ptr != 0) {\r
-           next = ptr->next;\r
-           hash_val = ptr->hash % new_num_bins;\r
-           ptr->next = new_bins[hash_val];\r
-           new_bins[hash_val] = ptr;\r
-           ptr = next;\r
-       }\r
-    }\r
-    free(table->bins);\r
-    table->num_bins = new_num_bins;\r
-    table->bins = new_bins;\r
-}\r
-\r
-st_table*\r
-st_copy(old_table)\r
-    st_table *old_table;\r
-{\r
-    st_table *new_table;\r
-    st_table_entry *ptr, *entry;\r
-    int i, num_bins = old_table->num_bins;\r
-\r
-    new_table = alloc(st_table);\r
-    if (new_table == 0) {\r
-       return 0;\r
-    }\r
-\r
-    *new_table = *old_table;\r
-    new_table->bins = (st_table_entry**)\r
-       Calloc((unsigned)num_bins, sizeof(st_table_entry*));\r
-\r
-    if (new_table->bins == 0) {\r
-       free(new_table);\r
-       return 0;\r
-    }\r
-\r
-    for(i = 0; i < num_bins; i++) {\r
-       new_table->bins[i] = 0;\r
-       ptr = old_table->bins[i];\r
-       while (ptr != 0) {\r
-           entry = alloc(st_table_entry);\r
-           if (entry == 0) {\r
-               free(new_table->bins);\r
-               free(new_table);\r
-               return 0;\r
-           }\r
-           *entry = *ptr;\r
-           entry->next = new_table->bins[i];\r
-           new_table->bins[i] = entry;\r
-           ptr = ptr->next;\r
-       }\r
-    }\r
-    return new_table;\r
-}\r
-\r
-int\r
-st_delete(table, key, value)\r
-    register st_table *table;\r
-    register st_data_t *key;\r
-    st_data_t *value;\r
-{\r
-    unsigned int hash_val;\r
-    st_table_entry *tmp;\r
-    register st_table_entry *ptr;\r
-\r
-    hash_val = do_hash_bin(*key, table);\r
-    ptr = table->bins[hash_val];\r
-\r
-    if (ptr == 0) {\r
-       if (value != 0) *value = 0;\r
-       return 0;\r
-    }\r
-\r
-    if (EQUAL(table, *key, ptr->key)) {\r
-       table->bins[hash_val] = ptr->next;\r
-       table->num_entries--;\r
-       if (value != 0) *value = ptr->record;\r
-       *key = ptr->key;\r
-       free(ptr);\r
-       return 1;\r
-    }\r
-\r
-    for(; ptr->next != 0; ptr = ptr->next) {\r
-       if (EQUAL(table, ptr->next->key, *key)) {\r
-           tmp = ptr->next;\r
-           ptr->next = ptr->next->next;\r
-           table->num_entries--;\r
-           if (value != 0) *value = tmp->record;\r
-           *key = tmp->key;\r
-           free(tmp);\r
-           return 1;\r
-       }\r
-    }\r
-\r
-    return 0;\r
-}\r
-\r
-int\r
-st_delete_safe(table, key, value, never)\r
-    register st_table *table;\r
-    register st_data_t *key;\r
-    st_data_t *value;\r
-    st_data_t never;\r
-{\r
-    unsigned int hash_val;\r
-    register st_table_entry *ptr;\r
-\r
-    hash_val = do_hash_bin(*key, table);\r
-    ptr = table->bins[hash_val];\r
-\r
-    if (ptr == 0) {\r
-       if (value != 0) *value = 0;\r
-       return 0;\r
-    }\r
-\r
-    for(; ptr != 0; ptr = ptr->next) {\r
-       if ((ptr->key != never) && EQUAL(table, ptr->key, *key)) {\r
-           table->num_entries--;\r
-           *key = ptr->key;\r
-           if (value != 0) *value = ptr->record;\r
-           ptr->key = ptr->record = never;\r
-           return 1;\r
-       }\r
-    }\r
-\r
-    return 0;\r
-}\r
-\r
-static int\r
-#if defined(__GNUC__)\r
-delete_never(st_data_t key __attribute__ ((unused)), st_data_t value,\r
-            st_data_t never)\r
-#else\r
-delete_never(key, value, never)\r
-    st_data_t key, value, never;\r
-#endif\r
-{\r
-    if (value == never) return ST_DELETE;\r
-    return ST_CONTINUE;\r
-}\r
-\r
-void\r
-st_cleanup_safe(table, never)\r
-    st_table *table;\r
-    st_data_t never;\r
-{\r
-    int num_entries = table->num_entries;\r
-\r
-    st_foreach(table, delete_never, never);\r
-    table->num_entries = num_entries;\r
-}\r
-\r
-int\r
-st_foreach(table, func, arg)\r
-    st_table *table;\r
-    int (*func)();\r
-    st_data_t arg;\r
-{\r
-    st_table_entry *ptr, *last, *tmp;\r
-    enum st_retval retval;\r
-    int i;\r
-\r
-    for(i = 0; i < table->num_bins; i++) {\r
-       last = 0;\r
-       for(ptr = table->bins[i]; ptr != 0;) {\r
-           retval = (*func)(ptr->key, ptr->record, arg);\r
-           switch (retval) {\r
-           case ST_CHECK:      /* check if hash is modified during iteration */\r
-               tmp = 0;\r
-               if (i < table->num_bins) {\r
-                   for (tmp = table->bins[i]; tmp; tmp=tmp->next) {\r
-                       if (tmp == ptr) break;\r
-                   }\r
-               }\r
-               if (!tmp) {\r
-                   /* call func with error notice */\r
-                   return 1;\r
-               }\r
-               /* fall through */\r
-           case ST_CONTINUE:\r
-               last = ptr;\r
-               ptr = ptr->next;\r
-               break;\r
-           case ST_STOP:\r
-               return 0;\r
-           case ST_DELETE:\r
-               tmp = ptr;\r
-               if (last == 0) {\r
-                   table->bins[i] = ptr->next;\r
-               }\r
-               else {\r
-                   last->next = ptr->next;\r
-               }\r
-               ptr = ptr->next;\r
-               free(tmp);\r
-               table->num_entries--;\r
-           }\r
-       }\r
-    }\r
-    return 0;\r
-}\r
-\r
-static int\r
-strhash(string)\r
-    register const char *string;\r
-{\r
-    register int c;\r
-\r
-#ifdef HASH_ELFHASH\r
-    register unsigned int h = 0, g;\r
-\r
-    while ((c = *string++) != '\0') {\r
-       h = ( h << 4 ) + c;\r
-       if ( g = h & 0xF0000000 )\r
-           h ^= g >> 24;\r
-       h &= ~g;\r
-    }\r
-    return h;\r
-#elif HASH_PERL\r
-    register int val = 0;\r
-\r
-    while ((c = *string++) != '\0') {\r
-       val += c;\r
-       val += (val << 10);\r
-       val ^= (val >> 6);\r
-    }\r
-    val += (val << 3);\r
-    val ^= (val >> 11);\r
-\r
-    return val + (val << 15);\r
-#else\r
-    register int val = 0;\r
-\r
-    while ((c = *string++) != '\0') {\r
-       val = val*997 + c;\r
-    }\r
-\r
-    return val + (val>>5);\r
-#endif\r
-}\r
-\r
-static int\r
-numcmp(x, y)\r
-    long x, y;\r
-{\r
-    return x != y;\r
-}\r
-\r
-static int\r
-numhash(n)\r
-    long n;\r
-{\r
-    return n;\r
-}\r
diff --git a/MdeModulePkg/Universal/RegularExpressionDxe/Oniguruma/st.h b/MdeModulePkg/Universal/RegularExpressionDxe/Oniguruma/st.h
deleted file mode 100644 (file)
index a620002..0000000
+++ /dev/null
@@ -1,68 +0,0 @@
-/* This is a public domain general purpose hash table package written by Peter Moore @ UCB. */\r
-\r
-/* @(#) st.h 5.1 89/12/14 */\r
-\r
-#ifndef ST_INCLUDED\r
-\r
-#define ST_INCLUDED\r
-\r
-#ifdef _WIN32\r
-# include <windows.h>\r
-typedef ULONG_PTR st_data_t;\r
-#else\r
-typedef unsigned long st_data_t;\r
-#endif\r
-#define ST_DATA_T_DEFINED\r
-\r
-typedef struct st_table st_table;\r
-\r
-struct st_hash_type {\r
-    int (*compare)();\r
-    int (*hash)();\r
-};\r
-\r
-struct st_table {\r
-    struct st_hash_type *type;\r
-    int num_bins;\r
-    int num_entries;\r
-    struct st_table_entry **bins;\r
-};\r
-\r
-#define st_is_member(table,key) st_lookup(table,key,(st_data_t *)0)\r
-\r
-enum st_retval {ST_CONTINUE, ST_STOP, ST_DELETE, ST_CHECK};\r
-\r
-#ifndef _\r
-# define _(args) args\r
-#endif\r
-#ifndef ANYARGS\r
-# ifdef __cplusplus\r
-#   define ANYARGS ...\r
-# else\r
-#   define ANYARGS\r
-# endif\r
-#endif\r
-\r
-st_table *st_init_table _((struct st_hash_type *));\r
-st_table *st_init_table_with_size _((struct st_hash_type *, int));\r
-st_table *st_init_numtable _((void));\r
-st_table *st_init_numtable_with_size _((int));\r
-st_table *st_init_strtable _((void));\r
-st_table *st_init_strtable_with_size _((int));\r
-int st_delete _((st_table *, st_data_t *, st_data_t *));\r
-int st_delete_safe _((st_table *, st_data_t *, st_data_t *, st_data_t));\r
-int st_insert _((st_table *, st_data_t, st_data_t));\r
-int st_lookup _((st_table *, st_data_t, st_data_t *));\r
-int st_foreach _((st_table *, int (*)(ANYARGS), st_data_t));\r
-void st_add_direct _((st_table *, st_data_t, st_data_t));\r
-void st_free_table _((st_table *));\r
-void st_cleanup_safe _((st_table *, st_data_t));\r
-st_table *st_copy _((st_table *));\r
-\r
-#define ST_NUMCMP      ((int (*)()) 0)\r
-#define ST_NUMHASH     ((int (*)()) -2)\r
-\r
-#define st_numcmp      ST_NUMCMP\r
-#define st_numhash     ST_NUMHASH\r
-\r
-#endif /* ST_INCLUDED */\r
diff --git a/MdeModulePkg/Universal/RegularExpressionDxe/RegularExpressionDxe.c b/MdeModulePkg/Universal/RegularExpressionDxe/RegularExpressionDxe.c
deleted file mode 100644 (file)
index 6c62957..0000000
+++ /dev/null
@@ -1,321 +0,0 @@
-/**\r
-  @file\r
-\r
-  EFI_REGULAR_EXPRESSION_PROTOCOL Implementation\r
-\r
-  Copyright (c) 2015, Hewlett Packard Enterprise Development, L.P.<BR>\r
-\r
-  This program and the accompanying materials are licensed and made available\r
-  under the terms and conditions of the BSD License that accompanies this\r
-  distribution.  The full text of the license may be found at\r
-  http://opensource.org/licenses/bsd-license.php.\r
-\r
-  THE PROGRAM IS DISTRIBUTED UNDER THE BSD LICENSE ON AN "AS IS" BASIS, WITHOUT\r
-  WARRANTIES OR REPRESENTATIONS OF ANY KIND, EITHER EXPRESS OR IMPLIED.\r
-**/\r
-\r
-#include "RegularExpressionDxe.h"\r
-\r
-STATIC\r
-EFI_REGEX_SYNTAX_TYPE * CONST mSupportedSyntaxes[] = {\r
-  &gEfiRegexSyntaxTypePosixExtendedGuid,\r
-  &gEfiRegexSyntaxTypePerlGuid\r
-};\r
-\r
-STATIC\r
-EFI_REGULAR_EXPRESSION_PROTOCOL mProtocolInstance = {\r
-  RegularExpressionMatch,\r
-  RegularExpressionGetInfo\r
-};\r
-\r
-\r
-\r
-#define CHAR16_ENCODING ONIG_ENCODING_UTF16_LE\r
-\r
-/**\r
-  Call the Oniguruma regex match API.\r
-\r
-  Same parameters as RegularExpressionMatch, except SyntaxType is required.\r
-\r
-  @retval EFI_SUCCESS       Regex compilation and match completed successfully.\r
-  @retval EFI_DEVICE_ERROR  Regex compilation failed.\r
-**/\r
-STATIC\r
-EFI_STATUS\r
-OnigurumaMatch (\r
-  IN  CHAR16                *String,\r
-  IN  CHAR16                *Pattern,\r
-  IN  EFI_REGEX_SYNTAX_TYPE *SyntaxType,\r
-  OUT BOOLEAN               *Result,\r
-  OUT EFI_REGEX_CAPTURE     **Captures,     OPTIONAL\r
-  OUT UINTN                 *CapturesCount\r
-  )\r
-{\r
-  regex_t         *OnigRegex;\r
-  OnigSyntaxType  *OnigSyntax;\r
-  OnigRegion      *Region;\r
-  INT32           OnigResult;\r
-  OnigErrorInfo   ErrorInfo;\r
-  CHAR8           ErrorMessage[ONIG_MAX_ERROR_MESSAGE_LEN];\r
-  UINT32          Index;\r
-  OnigUChar       *Start;\r
-\r
-  //\r
-  // Detemine the internal syntax type\r
-  //\r
-  OnigSyntax = ONIG_SYNTAX_DEFAULT;\r
-  if (CompareGuid (SyntaxType, &gEfiRegexSyntaxTypePosixExtendedGuid)) {\r
-    OnigSyntax = ONIG_SYNTAX_POSIX_EXTENDED;\r
-  } else if (CompareGuid (SyntaxType, &gEfiRegexSyntaxTypePerlGuid)) {\r
-    OnigSyntax = ONIG_SYNTAX_PERL;\r
-  } else {\r
-    DEBUG ((DEBUG_ERROR, "Unsupported regex syntax - using default\n"));\r
-    ASSERT (FALSE);\r
-  }\r
-\r
-  //\r
-  // Compile pattern\r
-  //\r
-  Start = (OnigUChar*)Pattern;\r
-  OnigResult = onig_new (\r
-                 &OnigRegex,\r
-                 Start,\r
-                 Start + onigenc_str_bytelen_null (CHAR16_ENCODING, Start),\r
-                 ONIG_OPTION_DEFAULT,\r
-                 CHAR16_ENCODING,\r
-                 OnigSyntax,\r
-                 &ErrorInfo\r
-                 );\r
-\r
-  if (OnigResult != ONIG_NORMAL) {\r
-    onig_error_code_to_str (ErrorMessage, OnigResult, &ErrorInfo);\r
-    DEBUG ((DEBUG_ERROR, "Regex compilation failed: %a\n", ErrorMessage));\r
-    return EFI_DEVICE_ERROR;\r
-  }\r
-\r
-  //\r
-  // Try to match\r
-  //\r
-  Start = (OnigUChar*)String;\r
-  Region = onig_region_new ();\r
-  OnigResult = onig_search (\r
-                 OnigRegex,\r
-                 Start,\r
-                 Start + onigenc_str_bytelen_null (CHAR16_ENCODING, Start),\r
-                 Start,\r
-                 Start + onigenc_str_bytelen_null (CHAR16_ENCODING, Start),\r
-                 Region,\r
-                 ONIG_OPTION_NONE\r
-                 );\r
-  if (OnigResult >= 0) {\r
-    *Result = TRUE;\r
-  } else {\r
-    *Result = FALSE;\r
-    if (OnigResult != ONIG_MISMATCH) {\r
-      onig_error_code_to_str (ErrorMessage, OnigResult);\r
-      DEBUG ((DEBUG_ERROR, "Regex match failed: %a\n", ErrorMessage));\r
-    }\r
-  }\r
-\r
-  //\r
-  // If successful, copy out the region (capture) information\r
-  //\r
-  if (*Result && Captures != NULL) {\r
-    *CapturesCount = Region->num_regs;\r
-    *Captures = AllocatePool (*CapturesCount * sizeof(**Captures));\r
-    if (*Captures != NULL) {\r
-      for (Index = 0; Index < *CapturesCount; ++Index) {\r
-        //\r
-        // Region beg/end values represent bytes, not characters\r
-        //\r
-        (*Captures)[Index].CapturePtr = (CHAR16*)((UINTN)String + Region->beg[Index]);\r
-        (*Captures)[Index].Length = (Region->end[Index] - Region->beg[Index]) / sizeof(CHAR16);\r
-      }\r
-    }\r
-  }\r
-\r
-  onig_region_free (Region, 1);\r
-  onig_free (OnigRegex);\r
-\r
-  return EFI_SUCCESS;\r
-}\r
-\r
-/**\r
-  Returns information about the regular expression syntax types supported\r
-  by the implementation.\r
-\r
-  This                     A pointer to the EFI_REGULAR_EXPRESSION_PROTOCOL\r
-                           instance.\r
-\r
-  RegExSyntaxTypeListSize  On input, the size in bytes of RegExSyntaxTypeList.\r
-                           On output with a return code of EFI_SUCCESS, the\r
-                           size in bytes of the data returned in\r
-                           RegExSyntaxTypeList. On output with a return code\r
-                           of EFI_BUFFER_TOO_SMALL, the size of\r
-                           RegExSyntaxTypeList required to obtain the list.\r
-\r
-  RegExSyntaxTypeList      A caller-allocated memory buffer filled by the\r
-                           driver with one EFI_REGEX_SYNTAX_TYPE element\r
-                           for each supported Regular expression syntax\r
-                           type. The list must not change across multiple\r
-                           calls to the same driver. The first syntax\r
-                           type in the list is the default type for the\r
-                           driver.\r
-\r
-  @retval EFI_SUCCESS            The regular expression syntax types list\r
-                                 was returned successfully.\r
-  @retval EFI_UNSUPPORTED        The service is not supported by this driver.\r
-  @retval EFI_DEVICE_ERROR       The list of syntax types could not be\r
-                                 retrieved due to a hardware or firmware error.\r
-  @retval EFI_BUFFER_TOO_SMALL   The buffer RegExSyntaxTypeList is too small\r
-                                 to hold the result.\r
-  @retval EFI_INVALID_PARAMETER  RegExSyntaxTypeListSize is NULL\r
-\r
-**/\r
-EFI_STATUS\r
-EFIAPI\r
-RegularExpressionGetInfo (\r
-  IN     EFI_REGULAR_EXPRESSION_PROTOCOL *This,\r
-  IN OUT UINTN                           *RegExSyntaxTypeListSize,\r
-  OUT    EFI_REGEX_SYNTAX_TYPE           *RegExSyntaxTypeList\r
-  )\r
-{\r
-  UINTN SyntaxSize;\r
-  UINTN Index;\r
-\r
-  if (This == NULL || RegExSyntaxTypeListSize == NULL) {\r
-    return EFI_INVALID_PARAMETER;\r
-  }\r
-\r
-  if (*RegExSyntaxTypeListSize != 0 && RegExSyntaxTypeList == NULL) {\r
-    return EFI_INVALID_PARAMETER;\r
-  }\r
-\r
-  SyntaxSize = ARRAY_SIZE (mSupportedSyntaxes) * sizeof(**mSupportedSyntaxes);\r
-\r
-  if (*RegExSyntaxTypeListSize < SyntaxSize) {\r
-    *RegExSyntaxTypeListSize = SyntaxSize;\r
-    return EFI_BUFFER_TOO_SMALL;\r
-  }\r
-\r
-  for (Index = 0; Index < ARRAY_SIZE (mSupportedSyntaxes); ++Index) {\r
-    CopyMem (&RegExSyntaxTypeList[Index], mSupportedSyntaxes[Index], sizeof(**mSupportedSyntaxes));\r
-  }\r
-  *RegExSyntaxTypeListSize = SyntaxSize;\r
-\r
-  return EFI_SUCCESS;\r
-}\r
-\r
-/**\r
-  Checks if the input string matches to the regular expression pattern.\r
-\r
-  This          A pointer to the EFI_REGULAR_EXPRESSION_PROTOCOL instance.\r
-                Type EFI_REGULAR_EXPRESSION_PROTOCOL is defined in Section\r
-                XYZ.\r
-\r
-  String        A pointer to a NULL terminated string to match against the\r
-                regular expression string specified by Pattern.\r
-\r
-  Pattern       A pointer to a NULL terminated string that represents the\r
-                regular expression.\r
-\r
-  SyntaxType    A pointer to the EFI_REGEX_SYNTAX_TYPE that identifies the\r
-                regular expression syntax type to use. May be NULL in which\r
-                case the function will use its default regular expression\r
-                syntax type.\r
-\r
-  Result        On return, points to TRUE if String fully matches against\r
-                the regular expression Pattern using the regular expression\r
-                SyntaxType. Otherwise, points to FALSE.\r
-\r
-  Captures      A Pointer to an array of EFI_REGEX_CAPTURE objects to receive\r
-                the captured groups in the event of a match. The full\r
-                sub-string match is put in Captures[0], and the results of N\r
-                capturing groups are put in Captures[1:N]. If Captures is\r
-                NULL, then this function doesn't allocate the memory for the\r
-                array and does not build up the elements. It only returns the\r
-                number of matching patterns in CapturesCount. If Captures is\r
-                not NULL, this function returns a pointer to an array and\r
-                builds up the elements in the array. CapturesCount is also\r
-                updated to the number of matching patterns found. It is the\r
-                caller's responsibility to free the memory pool in Captures\r
-                and in each CapturePtr in the array elements.\r
-\r
-  CapturesCount On output, CapturesCount is the number of matching patterns\r
-                found in String. Zero means no matching patterns were found\r
-                in the string.\r
-\r
-  @retval EFI_SUCCESS            The regular expression string matching\r
-                                 completed successfully.\r
-  @retval EFI_UNSUPPORTED        The regular expression syntax specified by\r
-                                 SyntaxType is not supported by this driver.\r
-  @retval EFI_DEVICE_ERROR       The regular expression string matching\r
-                                 failed due to a hardware or firmware error.\r
-  @retval EFI_INVALID_PARAMETER  String, Pattern, Result, or CapturesCountis\r
-                                 NULL.\r
-\r
-**/\r
-EFI_STATUS\r
-EFIAPI\r
-RegularExpressionMatch (\r
-  IN  EFI_REGULAR_EXPRESSION_PROTOCOL *This,\r
-  IN  CHAR16                          *String,\r
-  IN  CHAR16                          *Pattern,\r
-  IN  EFI_REGEX_SYNTAX_TYPE           *SyntaxType, OPTIONAL\r
-  OUT BOOLEAN                         *Result,\r
-  OUT EFI_REGEX_CAPTURE               **Captures, OPTIONAL\r
-  OUT UINTN                           *CapturesCount\r
-  )\r
-{\r
-  EFI_STATUS  Status;\r
-  UINT32      Index;\r
-  BOOLEAN     Supported;\r
-\r
-  if (This == NULL || String == NULL || Pattern == NULL || Result == NULL || CapturesCount == NULL) {\r
-    return EFI_INVALID_PARAMETER;\r
-  }\r
-\r
-  //\r
-  // Figure out which syntax to use\r
-  //\r
-  if (SyntaxType == NULL) {\r
-    SyntaxType = mSupportedSyntaxes[0];\r
-  } else {\r
-    Supported = FALSE;\r
-    for (Index = 0; Index < ARRAY_SIZE (mSupportedSyntaxes); ++Index) {\r
-      if (CompareGuid (SyntaxType, mSupportedSyntaxes[Index])) {\r
-        Supported = TRUE;\r
-        break;\r
-      }\r
-    }\r
-    if (!Supported) {\r
-      return EFI_UNSUPPORTED;\r
-    }\r
-  }\r
-\r
-  Status = OnigurumaMatch (String, Pattern, SyntaxType, Result, Captures, CapturesCount);\r
-\r
-  return Status;\r
-}\r
-\r
-/**\r
-  Entry point for RegularExpressionDxe.\r
-**/\r
-EFI_STATUS\r
-EFIAPI\r
-RegularExpressionDxeEntry (\r
-  IN  EFI_HANDLE        ImageHandle,\r
-  IN  EFI_SYSTEM_TABLE  *SystemTable\r
-  )\r
-{\r
-  EFI_STATUS  Status;\r
-\r
-  Status = gBS->InstallMultipleProtocolInterfaces (\r
-                  &ImageHandle,\r
-                  &gEfiRegularExpressionProtocolGuid,\r
-                  &mProtocolInstance,\r
-                  NULL\r
-                  );\r
-\r
-  return Status;\r
-}\r
diff --git a/MdeModulePkg/Universal/RegularExpressionDxe/RegularExpressionDxe.h b/MdeModulePkg/Universal/RegularExpressionDxe/RegularExpressionDxe.h
deleted file mode 100644 (file)
index 4673471..0000000
+++ /dev/null
@@ -1,130 +0,0 @@
-/**\r
-  @file\r
-\r
-  EFI_REGULAR_EXPRESSION_PROTOCOL Header File.\r
-\r
-  Copyright (c) 2015, Hewlett Packard Enterprise Development, L.P.<BR>\r
-  \r
-  This program and the accompanying materials are licensed and made available\r
-  under the terms and conditions of the BSD License that accompanies this\r
-  distribution.  The full text of the license may be found at\r
-  http://opensource.org/licenses/bsd-license.php.\r
-\r
-  THE PROGRAM IS DISTRIBUTED UNDER THE BSD LICENSE ON AN "AS IS" BASIS, WITHOUT\r
-  WARRANTIES OR REPRESENTATIONS OF ANY KIND, EITHER EXPRESS OR IMPLIED.\r
-**/\r
-\r
-#include "Oniguruma/oniguruma.h"\r
-\r
-#include <Uefi.h>\r
-#include <Protocol/RegularExpressionProtocol.h>\r
-#include <Library/UefiBootServicesTableLib.h>\r
-#include <Library/BaseMemoryLib.h>\r
-#include <Library/MemoryAllocationLib.h>\r
-#include <Library/DebugLib.h>\r
-#include <Library/BaseLib.h>\r
-\r
-#define ARRAY_SIZE(Array) (sizeof(Array) / sizeof(*Array))\r
-\r
-/**\r
-  Checks if the input string matches to the regular expression pattern.\r
-\r
-  This          A pointer to the EFI_REGULAR_EXPRESSION_PROTOCOL instance.\r
-                Type EFI_REGULAR_EXPRESSION_PROTOCOL is defined in Section\r
-                XYZ.\r
-\r
-  String        A pointer to a NULL terminated string to match against the\r
-                regular expression string specified by Pattern.\r
-\r
-  Pattern       A pointer to a NULL terminated string that represents the\r
-                regular expression.\r
-\r
-  SyntaxType    A pointer to the EFI_REGEX_SYNTAX_TYPE that identifies the\r
-                regular expression syntax type to use. May be NULL in which\r
-                case the function will use its default regular expression\r
-                syntax type.\r
-\r
-  Result        On return, points to TRUE if String fully matches against\r
-                the regular expression Pattern using the regular expression\r
-                SyntaxType. Otherwise, points to FALSE.\r
-\r
-  Captures      A Pointer to an array of EFI_REGEX_CAPTURE objects to receive\r
-                the captured groups in the event of a match. The full\r
-                sub-string match is put in Captures[0], and the results of N\r
-                capturing groups are put in Captures[1:N]. If Captures is\r
-                NULL, then this function doesn't allocate the memory for the\r
-                array and does not build up the elements. It only returns the\r
-                number of matching patterns in CapturesCount. If Captures is\r
-                not NULL, this function returns a pointer to an array and\r
-                builds up the elements in the array. CapturesCount is also\r
-                updated to the number of matching patterns found. It is the\r
-                caller's responsibility to free the memory pool in Captures\r
-                and in each CapturePtr in the array elements.\r
-\r
-  CapturesCount On output, CapturesCount is the number of matching patterns\r
-                found in String. Zero means no matching patterns were found\r
-                in the string.\r
-\r
-  @retval EFI_SUCCESS            The regular expression string matching\r
-                                 completed successfully.\r
-  @retval EFI_UNSUPPORTED        The regular expression syntax specified by\r
-                                 SyntaxType is not supported by this driver.\r
-  @retval EFI_DEVICE_ERROR       The regular expression string matching\r
-                                 failed due to a hardware or firmware error.\r
-  @retval EFI_INVALID_PARAMETER  String, Pattern, Result, or CapturesCountis\r
-                                 NULL.\r
-\r
-**/\r
-EFI_STATUS\r
-EFIAPI\r
-RegularExpressionMatch (\r
-  IN  EFI_REGULAR_EXPRESSION_PROTOCOL *This,\r
-  IN  CHAR16                          *String,\r
-  IN  CHAR16                          *Pattern,\r
-  IN  EFI_REGEX_SYNTAX_TYPE           *SyntaxType, OPTIONAL\r
-  OUT BOOLEAN                         *Result,\r
-  OUT EFI_REGEX_CAPTURE               **Captures, OPTIONAL\r
-  OUT UINTN                           *CapturesCount\r
-  );\r
-\r
-/**\r
-  Returns information about the regular expression syntax types supported\r
-  by the implementation.\r
-\r
-  This                     A pointer to the EFI_REGULAR_EXPRESSION_PROTOCOL\r
-                           instance.\r
-\r
-  RegExSyntaxTypeListSize  On input, the size in bytes of RegExSyntaxTypeList.\r
-                           On output with a return code of EFI_SUCCESS, the\r
-                           size in bytes of the data returned in\r
-                           RegExSyntaxTypeList. On output with a return code\r
-                           of EFI_BUFFER_TOO_SMALL, the size of\r
-                           RegExSyntaxTypeList required to obtain the list.\r
-\r
-  RegExSyntaxTypeList      A caller-allocated memory buffer filled by the\r
-                           driver with one EFI_REGEX_SYNTAX_TYPE element\r
-                           for each supported Regular expression syntax\r
-                           type. The list must not change across multiple\r
-                           calls to the same driver. The first syntax\r
-                           type in the list is the default type for the\r
-                           driver.\r
-\r
-  @retval EFI_SUCCESS            The regular expression syntax types list\r
-                                 was returned successfully.\r
-  @retval EFI_UNSUPPORTED        The service is not supported by this driver.\r
-  @retval EFI_DEVICE_ERROR       The list of syntax types could not be\r
-                                 retrieved due to a hardware or firmware error.\r
-  @retval EFI_BUFFER_TOO_SMALL   The buffer RegExSyntaxTypeList is too small\r
-                                 to hold the result.\r
-  @retval EFI_INVALID_PARAMETER  RegExSyntaxTypeListSize is NULL\r
-\r
-**/\r
-EFI_STATUS\r
-EFIAPI\r
-RegularExpressionGetInfo (\r
-  IN     EFI_REGULAR_EXPRESSION_PROTOCOL *This,\r
-  IN OUT UINTN                           *RegExSyntaxTypeListSize,\r
-  OUT    EFI_REGEX_SYNTAX_TYPE           *RegExSyntaxTypeList\r
-  );\r
-\r
-\r
diff --git a/MdeModulePkg/Universal/RegularExpressionDxe/RegularExpressionDxe.inf b/MdeModulePkg/Universal/RegularExpressionDxe/RegularExpressionDxe.inf
deleted file mode 100644 (file)
index 7f1023e..0000000
+++ /dev/null
@@ -1,98 +0,0 @@
-##\r
-#  @file\r
-#\r
-#  EFI_REGULAR_EXPRESSION_PROTOCOL Implementation\r
-#\r
-#  Copyright (c) 2015, Hewlett Packard Enterprise Development, L.P.<BR>\r
-#\r
-#  This program and the accompanying materials are licensed and made available\r
-#  under the terms and conditions of the BSD License that accompanies this\r
-#  distribution.  The full text of the license may be found at\r
-#  http://opensource.org/licenses/bsd-license.php.\r
-#\r
-#  THE PROGRAM IS DISTRIBUTED UNDER THE BSD LICENSE ON AN "AS IS" BASIS, WITHOUT\r
-#  WARRANTIES OR REPRESENTATIONS OF ANY KIND, EITHER EXPRESS OR IMPLIED.\r
-##\r
-\r
-[Defines]\r
-  INF_VERSION     = 0x00010018\r
-  BASE_NAME       = RegularExpressionDxe\r
-  FILE_GUID       = 3E197E9C-D8DC-42D3-89CE-B04FA9833756\r
-  MODULE_TYPE     = UEFI_DRIVER\r
-  VERSION_STRING  = 1.0\r
-  ENTRY_POINT     = RegularExpressionDxeEntry\r
-\r
-[Sources]\r
-  RegularExpressionDxe.c\r
-  RegularExpressionDxe.h\r
-  Oniguruma/OnigurumaUefiPort.h\r
-  Oniguruma/OnigurumaUefiPort.c\r
-  Oniguruma/OnigurumaIntrinsics.c | MSFT\r
-\r
-# Upstream Oniguruma code\r
-  Oniguruma/oniguruma.h\r
-  Oniguruma/regcomp.c\r
-  Oniguruma/regenc.c\r
-  Oniguruma/regenc.h\r
-  Oniguruma/regerror.c\r
-  Oniguruma/regexec.c\r
-  Oniguruma/oniggnu.h\r
-  Oniguruma/reggnu.c\r
-  Oniguruma/regint.h\r
-  Oniguruma/regparse.c\r
-  Oniguruma/regparse.h\r
-  Oniguruma/regposerr.c\r
-  Oniguruma/onigposix.h\r
-  Oniguruma/regposix.c\r
-  Oniguruma/regsyntax.c\r
-  Oniguruma/regtrav.c\r
-  Oniguruma/regversion.c\r
-  Oniguruma/st.c\r
-  Oniguruma/st.h\r
-\r
-# Supported Character Encodings\r
-  Oniguruma/enc/ascii.c\r
-  Oniguruma/enc/unicode.c\r
-  Oniguruma/enc/utf16_le.c\r
-\r
-[Packages]\r
-  MdePkg/MdePkg.dec\r
-  MdeModulePkg/MdeModulePkg.dec\r
-\r
-[LibraryClasses]\r
-  UefiBootServicesTableLib\r
-  UefiDriverEntryPoint\r
-  MemoryAllocationLib\r
-  BaseMemoryLib\r
-  DebugLib\r
-\r
-[Guids]\r
-  gEfiRegexSyntaxTypePosixExtendedGuid\r
-  gEfiRegexSyntaxTypePerlGuid\r
-\r
-[Protocols]\r
-  gEfiRegularExpressionProtocolGuid\r
-\r
-[BuildOptions]\r
-  # Override MSFT build option to remove /Oi and /GL\r
-  MSFT:DEBUG_*_IA32_CC_FLAGS   == /nologo /c /WX /GS- /W4 /Gs32768 /D UNICODE /O1b2  /FIAutoGen.h /EHs-c- /GR- /GF /Gy /Zi /Gm \r
-  MSFT:RELEASE_*_IA32_CC_FLAGS == /nologo /c /WX /GS- /W4 /Gs32768 /D UNICODE /O1b2  /FIAutoGen.h /EHs-c- /GR- /GF \r
-  MSFT:DEBUG_*_X64_CC_FLAGS    == /nologo /c /WX /GS- /W4 /Gs32768 /D UNICODE /O1b2s /FIAutoGen.h /EHs-c- /GR- /GF /Gy /Zi /Gm /X \r
-  MSFT:RELEASE_*_X64_CC_FLAGS  == /nologo /c /WX /GS- /W4 /Gs32768 /D UNICODE /O1b2s /FIAutoGen.h /EHs-c- /GR- /GF /Gy /X \r
-  MSFT:DEBUG_*_IPF_CC_FLAGS    == /nologo /c /WX /GS- /W4 /EHs-c- /GR- /Gy /Os /FIAutoGen.h /QIPF_fr32 /Zi /X \r
-  MSFT:RELEASE_*_IPF_CC_FLAGS  == /nologo /c /WX /GS- /W4 /EHs-c- /GR- /Gy /Os /FIAutoGen.h /QIPF_fr32 /X \r
-  INTEL:*_*_*_CC_FLAGS         =  /Oi-\r
-  GCC:*_*_*_CC_FLAGS           =  -fno-builtin\r
-\r
-  # Oniguruma: potentially uninitialized local variable used\r
-  MSFT:*_*_*_CC_FLAGS = /wd4701\r
-\r
-  # Oniguruma: intrinsic function not declared\r
-  MSFT:*_*_*_CC_FLAGS = /wd4164\r
-\r
-  # Oniguruma: old style declaration in st.c\r
-  MSFT:*_*_*_CC_FLAGS = /wd4131\r
-\r
-  # Oniguruma: 'type cast' : truncation from 'OnigUChar *' to 'unsigned int' \r
-  MSFT:*_*_*_CC_FLAGS = /wd4305 /wd4306\r
-\r