harfrust 0.5.2

A complete HarfBuzz shaping algorithm port to Rust.
Documentation
/* == Start of generated table == */
/*
 * The following table is generated by running:
 *
 *   gen-use-table.py IndicSyllabicCategory.txt IndicPositionalCategory.txt ArabicShaping.txt DerivedCoreProperties.txt UnicodeData.txt Blocks.txt Scripts.txt IndicSyllabicCategory-Additional.txt IndicPositionalCategory-Additional.txt
 *
 * on files with these headers:
 *
 * # IndicSyllabicCategory-17.0.0.txt
 * # Date: 2025-08-01, 04:02:23 GMT
 * # IndicPositionalCategory-17.0.0.txt
 * # Date: 2025-07-29, 13:35:52 GMT
 * # ArabicShaping-17.0.0.txt
 * # Date: 2025-08-14
 * # DerivedCoreProperties-17.0.0.txt
 * # Date: 2025-07-30, 23:55:08 GMT
 * # Blocks-17.0.0.txt
 * # Date: 2025-08-01
 * # Scripts-17.0.0.txt
 * # Date: 2025-07-24, 13:28:55 GMT
 * # Override values For Indic_Syllabic_Category
 * # Not derivable
 * # Initial version based on Unicode 7.0 by Andrew Glass 2014-03-17
 * # Updated for Unicode 10.0 by Andrew Glass 2017-07-25
 * # Updated for Unicode 12.1 by Andrew Glass 2019-05-24
 * # Updated for Unicode 13.0 by Andrew Glass 2020-07-28
 * # Updated for Unicode 14.0 by Andrew Glass 2021-09-25
 * # Updated for Unicode 15.0 by Andrew Glass 2022-09-16
 * # Updated for Unicode 15.1 by Andrew Glass 2023-09-14
 * # Updated for Unicode 16.0 by Andrew Glass 2024-09-11
 * # Override values For Indic_Positional_Category
 * # Not derivable
 * # Initial version based on Unicode 7.0 by Andrew Glass 2014-03-17
 * # Updated for Unicode 10.0 by Andrew Glass 2017-07-25
 * # Ammended for Unicode 10.0 by Andrew Glass 2018-09-21
 * # Updated for L2/19-083    by Andrew Glass 2019-05-06
 * # Updated for Unicode 12.1 by Andrew Glass 2019-05-30
 * # Updated for Unicode 13.0 by Andrew Glass 2020-07-28
 * # Updated for Unicode 14.0 by Andrew Glass 2021-09-28
 * # Updated for Unicode 15.0 by Andrew Glass 2022-09-16
 * # Updated for Unicode 15.1 by Andrew Glass 2023-09-14
 * # Updated for Unicode 16.0 by Andrew Glass 2024-09-11
 * UnicodeData.txt does not have a header.
 */


#![allow(unused_parens)]
#![allow(clippy::unnecessary_cast, clippy::unreadable_literal, clippy::double_parens)]

use super::ot_shaper_use::category::*;


pub(crate) static hb_use_u8: [u8; 3343]=
[
     33,    3,    0,    0,    0,    4,    0,   80,  118,  128,    9,   10,   11,  192,  208,   14,
      0,    0,    0,    0,    0,    0,    0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
      0,    0,    0,    0,    0,    0,    0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
      0,    0,    0,    0,    0,    0,    0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
      0,    0,    0,    0,    0,    0,    0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
      0,    0,    0,    0,    0,    0,    0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
      0,    0,    0,    0,    0,    0,    0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
     15,    0,    0,    0,    0,    0,    0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
      0,    0,    0,    0,    0,    0,    0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
      0,    4,    5,    0,    0,    0,    0,    6,    0,    0,    0,    0,    0,    7,    0,    0,
      8,    9,    0,   10,   11,   12,   13,   14,   15,   16,   17,   18,   19,    0,    0,   20,
     21,   22,   23,    0,    0,    0,    0,    0,    0,    0,    0,    0,    0,    0,    0,   24,
     25,   26,   27,   28,   29,   30,   31,   32,   33,   34,   35,    0,   36,    0,    0,    0,
      0,   37,   38,    0,    0,    0,    0,    0,    0,    0,    0,    0,   39,    0,    0,    0,
     40,    0,    0,    0,    0,    0,    0,    0,    0,    0,    0,   41,    0,   42,    0,    0,
      0,    0,    0,    0,    0,    0,    0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
      0,   43,   44,   45,   46,   47,   48,    0,   49,    0,    0,    0,    0,    0,    0,    0,
      0,    0,    0,    0,    0,    0,    0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
      0,    0,    0,    0,    0,    0,    0,    0,    0,    0,    0,    0,    0,   50,   51,    0,
     52,    0,    0,    0,    0,    0,    0,    0,    0,    0,    0,   53,   54,    0,    0,    0,
      0,    0,    0,    0,    0,   55,   56,    0,   57,    0,    0,   58,   59,    0,   60,   61,
     62,   63,   64,   65,   66,   67,   68,   69,   70,   71,   72,    0,   73,   74,   75,   76,
      0,   77,    0,   78,   79,   80,   81,   82,    0,   83,   84,   85,   86,    0,   87,   88,
      0,    1,    1,    1,    1,    1,    1,    1,    1,   89,    1,    1,    1,    1,    1,    1,
      1,    1,    1,    1,    1,    1,    1,    1,    1,    1,    1,    1,    1,    1,    1,    1,
      1,    1,    1,    1,    1,    1,    1,    1,   90,    0,    0,    0,    0,    0,    0,    0,
      0,    0,    0,    0,    0,    0,    0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
      0,    0,    0,   91,    0,    0,    0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
      0,    0,    0,    0,    0,    0,   92,   93,    0,    0,    0,   94,    0,    0,    0,   95,
     96,    0,    0,    0,    0,    0,    0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
      0,    0,    0,    0,    0,    0,    0,    3,    3,    3,   97,    0,    0,    0,    0,    0,
      0,    0,    0,    0,    0,    0,    0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
      0,    0,    0,    0,    0,    0,    0,    0,    0,   98,   99,    0,    0,    0,    0,    0,
      0,    0,    0,  100,    0,    0,    0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
      0,    0,    0,    0,    0,    0,    0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
      0,    0,    0,  101,    0,    0,  102,    0,    0,    0,  103,    0,  104,    0,    0,    0,
      0,    0,    0,  105,    0,    0,    0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
      0,    2,    2,  106,  107,    2,    2,    2,    2,    2,    2,    2,    2,    2,    2,    2,
      2,    2,    2,    2,    2,    2,    2,    2,    2,    2,    2,    2,    2,    2,    2,    2,
      2,    0,    0,    0,    0,    0,    0,    0,    0,    1,    1,    1,    1,    1,    1,    1,
      1,    3,    3,    3,    3,    3,    3,    3,    3,    2,    2,    2,    2,    2,    2,    2,
      2,    2,    2,    2,    2,    2,    0,    0,    0,    4,    4,    4,    4,    4,    4,    4,
      4,    2,    2,    2,    2,    5,    2,    2,    2,    2,    6,    0,    2,    2,    2,    2,
      2,    5,    8,    2,    2,    2,    2,    2,    2,    0,    0,    0,    2,    2,    2,    2,
      2,    5,    2,    2,    2,    2,    2,    2,    2,    2,    2,    2,    2,    2,    2,    5,
      0,    2,    2,    2,    2,    5,    0,    0,    0,    2,    2,    2,    2,    2,    5,    0,
      0,    2,    8,    2,    2,    2,    2,    2,    2,    0,    0,    0,    0,    0,   74,   75,
      0,    5,    0,    0,    0,    0,    0,    0,    0,    0,    0,    0,    0,    0,    2,    2,
      2,    0,    2,    2,    2,    2,    2,    2,    2,   17,    6,   13,   29,   33,   29,   45,
      0,   15,   11,   27,    7,   38,    7,   68,    0,    2,    2,    2,    2,    8,    2,    2,
      2,   10,   10,   10,   10,   80,   10,   10,   10,    2,    2,    2,    2,    2,    2,    2,
      5,    2,    2,    5,    0,    0,    0,    0,    0,    2,    2,    2,    2,    2,    2,    0,
      0,    2,    2,    0,    0,    0,    0,    0,    0,    2,    2,    2,    2,    2,    5,    2,
      2,    2,    0,    0,    0,    0,    0,    0,    0,    2,    2,    2,    0,    0,    0,    0,
      0,    9,   41,    2,    2,    2,    2,    2,    2,    8,    2,    2,    2,    2,    2,    2,
      2,    2,    2,    2,    2,    2,    2,    2,   23,    6,    6,    6,    6,    6,    6,    6,
      6,    0,    0,    0,    0,    0,    0,   48,    0,   44,    0,    0,    0,    0,    0,   49,
      0,    0,   76,    0,    0,    0,    0,    0,    0,    0,    0,    0,   48,    0,    0,    0,
      0,    0,    0,    0,    0,    0,    0,    0,  103,    2,    2,    2,    2,    2,   36,    9,
      9,    9,    9,    0,    0,    0,    5,   31,    0,    2,    2,    2,    2,   50,   51,    0,
      0,    9,   24,    2,    2,    2,    2,    2,    2,    2,    2,    2,    2,    2,   15,   32,
     19,   17,    6,   18,    7,   15,   11,   67,   22,   31,   52,   25,    6,    2,    2,    2,
      2,  104,   14,    8,    2,    2,    2,    5,    8,    5,    5,    0,    2,    2,    0,   32,
     19,    0,    0,    0,   34,    0,    0,    2,    8,    2,    0,    0,    0,    0,    0,    5,
    105,   31,   24,    8,    2,    2,    5,    0,    8,    5,    2,    8,    5,    2,    0,   35,
     19,   17,   13,    0,   25,   38,   25,   68,    0,   53,    0,    0,    0,    8,    2,    5,
      5,   54,   39,   77,    0,    0,    0,    0,    0,   31,   24,    8,    2,    2,    2,    2,
      8,    5,    2,    8,    2,    2,    0,   32,   19,   17,    6,   18,   25,    7,   34,   67,
      0,    0,    0,    0,    0,    8,   54,   54,   46,   31,   14,    8,    2,    2,    2,    5,
      8,    5,    2,    8,    2,    2,    0,   32,   20,    0,    0,   25,    7,    0,    0,    2,
      8,    8,    0,    0,    0,    0,    0,    0,    0,    0,   26,    8,    2,    2,    5,    0,
      2,    5,    2,    2,    0,    8,    5,    5,    2,    0,    8,    5,    0,    2,    5,    0,
      2,    2,    2,    2,    2,    2,    0,    0,   11,   15,   27,    0,   12,   33,   12,   45,
      0,    0,    0,    0,   34,    0,    0,    0,    0,   24,   14,   55,    2,    2,    2,    5,
      2,    2,    2,    2,    2,    2,    0,   32,    7,    0,    0,   25,   13,    2,    5,    0,
      0,   36,   14,    8,    2,    2,    2,    5,    2,    2,    2,    8,    2,    2,    0,   32,
     20,    0,    0,   34,   27,    0,    0,    0,    5,  106,   78,    0,    0,    0,    0,    0,
      0,    9,   14,    2,    2,    2,    2,    5,    2,    2,    2,    2,    2,    2,   30,   40,
     11,   17,    6,   13,   12,   33,   12,   45,  107,    0,    0,    0,   34,    0,    0,    0,
      8,   31,   14,    8,    2,    2,    2,    2,    2,    2,    2,    2,    5,    0,    2,    2,
      2,    2,    8,    2,    2,    2,    2,    8,    0,    2,    2,    2,    5,    0,  108,    0,
     34,   11,    7,   13,   13,   19,   12,   12,   22,    0,   11,    0,    0,    0,    0,    0,
      0,    2,    0,    2,    5,    0,    0,    0,    0,    0,    0,    0,    0,    6,    0,    0,
      0,    2,    2,   69,   69,  109,    0,    0,   19,   56,   18,   21,    7,    7,    6,    6,
     26,   18,    9,   13,    9,    2,    2,   79,   10,   10,   10,   10,   10,   10,   10,   10,
     10,   10,   10,   10,   10,   10,   10,   81,    0,    0,    0,    0,  110,    0,    0,    0,
      0,    2,    2,    2,    2,    2,   23,   20,   21,   57,    7,    7,  111,   82,  112,  113,
     83,    2,    2,    2,    2,    2,   48,    0,   44,    2,    2,    2,   11,    6,    2,    2,
    114,   83,   84,   41,   23,   84,   14,   14,    2,   30,    7,   40,    2,    2,    2,    2,
      2,    2,  115,   58,  116,   14,   14,  117,   85,    2,    2,    2,    2,    2,   14,   20,
      0,    2,   21,   59,    0,    0,    0,    0,    8,    2,   21,   27,    0,    0,    0,    0,
      0,    2,   21,    0,    0,    0,    0,    0,    0,    2,    2,    2,    2,    2,    2,    5,
      2,    5,   21,    0,    0,    0,    0,    0,    0,    2,    2,    4,   20,    7,   21,    6,
     12,   12,   12,   12,   24,   60,  118,  119,  120,  121,  122,    0,    0,    0,    0,  123,
      0,    5,    0,    0,    8,    0,  124,    4,  125,   39,   39,  126,   86,    2,    2,    2,
      2,    2,    2,    2,    2,   50,    5,    0,    0,    7,   59,   20,    7,  127,   10,    0,
      0,   70,  128,   70,   70,  129,  130,    0,    0,    2,    2,    2,    2,    2,    2,    2,
      0,    2,    2,    2,    2,   14,    0,    0,    0,    2,    2,    2,   30,   71,   20,    0,
      0,    2,    2,  131,  132,   42,  133,   10,   81,  134,   15,   20,    7,   21,   18,   59,
     12,   12,   58,    9,    9,    9,   87,   26,   53,    9,   88,   41,    2,    2,    2,    2,
      2,    2,    2,   89,    7,    6,    6,    7,   12,   12,    7,   61,    2,    2,    2,    5,
      0,    0,    0,    0,    0,    0,  135,   62,   62,   62,   62,    0,    0,    0,    0,    0,
      0,   88,   41,    2,    2,    2,    2,    2,    2,   79,   10,   21,   22,    7,  136,   10,
      2,    2,    2,    2,   89,    7,   11,   20,   20,   42,  137,    0,    0,    0,    0,    0,
      0,    2,    2,   10,   19,   12,   11,   90,   42,   42,   42,  138,  139,    0,    0,    0,
      0,    2,    2,    2,    2,    2,    0,    8,    2,    9,   26,   16,   16,   16,    9,   16,
     16,   24,   16,   16,   16,   52,    0,   53,    0,    0,    0,  140,   78,    9,   44,    0,
      0,    0,    0,    0,    0,    0,  141,    0,    0,    0,    0,    0,    0,    0,   49,  142,
      3,   39,   39,   44,    0,    0,    0,    0,    0,    0,    0,    0,    0,    0,    3,    3,
     72,    0,    0,   91,    0,    0,    0,    0,    0,    0,   76,   91,    0,    0,    0,    0,
      0,   26,    0,    0,    0,    0,    0,    0,    0,    0,    0,    0,    0,    0,    0,    5,
      0,    0,    0,    0,   63,   63,    0,    0,    0,    2,    2,    2,    2,    0,    0,    0,
      8,    0,    0,    0,    0,    0,    0,    0,  143,    0,   63,   63,    0,    0,    0,    0,
      0,    2,   40,    2,   61,    2,   36,    2,    2,    2,   23,   17,   15,    0,    0,   13,
      0,   14,    2,    2,    2,    2,    2,    2,    2,    2,    2,  144,   11,   11,   11,   11,
     11,   11,   11,   92,    0,    0,    0,    0,    0,    9,    9,    9,    9,    9,    9,    9,
      9,    9,    2,    0,    0,    0,    0,    0,   30,    2,    2,    2,    7,    7,  145,   16,
      0,    2,    2,    2,   47,    6,   21,    6,   90,   42,  146,    0,    0,    0,    0,    0,
      0,    9,  147,    2,    2,    2,    2,    2,    2,    2,  148,   11,    7,    6,   12,  149,
    150,   93,    0,    0,    0,    0,    0,    0,    0,    2,    2,   30,    8,    2,    2,    2,
      2,    2,    2,    2,    2,   36,    7,   21,   71,   58,  151,   94,  152,    0,    0,    0,
      0,    2,  153,    2,    2,    2,    2,  154,    0,    8,    2,   39,   44,    0,   85,   24,
      2,   73,    6,   40,   47,   73,    2,    2,   95,   36,    5,    0,    0,    0,    0,    0,
      0,    2,    2,    2,    2,    2,  155,   18,   22,    0,    0,  156,   96,    0,    0,    0,
      0,    2,   23,   20,   11,   59,   27,  157,    0,    0,    0,    0,    0,    0,    0,    0,
     49,    3,    3,    3,    3,   72,    0,    0,    0,    2,    5,    2,    8,    2,    2,    2,
      2,    2,    8,    2,    2,    2,    8,    5,    0,   47,    6,   25,   13,    0,    0,  158,
    159,    2,    2,    8,    2,    8,    2,    2,    2,    2,    2,    2,    0,   51,   35,    0,
     97,    2,    2,   50,   35,    0,    8,    2,    2,    0,    0,    0,    0,    8,    2,    2,
      5,    2,    2,    9,   54,    0,    0,    0,    0,    2,    2,    2,    0,   25,    7,    7,
      8,    2,    2,    2,    2,    2,   25,   38,    0,    2,    2,    2,   16,   16,   16,   16,
     16,  160,    2,    5,    0,    0,    0,    0,    0,    2,   51,   51,    0,    0,    0,    0,
      0,    5,    2,    2,    5,    2,    2,    2,    2,    8,    2,    5,    0,    8,    2,    0,
      0,  161,  162,  163,    2,    2,    2,    2,    2,    2,    2,    2,    2,    7,    7,    6,
      6,    6,    7,    7,   93,    0,    0,    0,    0,    0,   28,   28,   28,   28,   28,   28,
     28,   28,   28,   28,    2,    2,    2,    2,    2,   40,   30,   40,    0,    0,    0,    0,
    164,   19,   17,   18,   15,   67,   35,    0,    0,    0,   13,    0,    0,    0,    0,    0,
      0,    9,   55,    2,    2,    2,    2,    2,    2,    2,    2,    2,   47,    6,    7,  165,
      7,   18,  166,   98,    2,    2,    2,    2,    2,    0,    0,   23,  167,    0,    0,    0,
      0,    2,   50,    0,    0,    0,    0,    0,    0,    2,   23,   22,    6,    6,    6,    7,
      7,   61,   64,    0,    0,   69,   99,   13,  100,    2,    2,    2,    2,    2,    2,   11,
     17,    7,    7,  168,   46,    0,    0,    0,   55,   47,    0,    0,    0,    0,    0,    0,
      0,    2,    2,    2,    5,    5,    2,    2,    8,    2,    2,    2,    2,    2,    2,    2,
      8,    2,    2,    2,    2,    2,    2,    2,   36,   19,   17,   18,    7,  169,   13,    0,
      0,    9,    9,    8,    2,    2,    2,    5,    8,    5,    2,    8,    2,    2,   56,   32,
     11,   15,   11,   27,   29,   33,   29,   45,    0,    0,    0,    0,   34,    0,    0,    0,
      2,    2,   11,    0,    9,    9,    9,   26,    0,    9,    9,   26,    0,    0,    0,    0,
      0,    2,    2,    2,    2,    2,    8,    0,    5,    2,    2,    2,    8,   20,   21,    6,
      6,   13,   33,   29,   29,   22,  170,   14,  171,  101,   35,    0,    0,    0,    0,    0,
      0,   31,   52,    0,    0,    0,    0,    0,    0,    2,    2,   23,   22,    6,    6,    6,
      7,   11,   92,   24,   32,    0,    0,    0,    0,    2,    2,    2,    2,    2,    0,    0,
    172,  173,    0,    0,    0,    0,    0,    0,    0,   19,   17,    6,    6,   57,   71,   22,
    100,    9,  102,    5,    0,    0,    0,    0,    0,   22,    6,    6,    0,   12,   12,    9,
     65,   35,    0,    0,    0,    0,    0,    0,    0,    0,    0,    0,    0,    2,    2,    6,
      0,   11,   17,    6,    6,   18,   15,   60,   65,   38,    0,    0,    0,    0,    0,    0,
      0,    2,    2,    2,    2,    2,   36,  174,   22,    6,    7,    7,  102,    5,    0,    0,
      0,    2,    2,    2,    2,    2,    5,   77,   94,   11,    7,    6,   58,   18,    7,    0,
      0,    2,    2,    2,    5,    0,    0,    0,    0,    2,    2,    2,    2,    2,    2,   19,
     17,    6,   18,    7,   87,   65,   35,    0,    0,    2,    2,    2,    5,    8,    0,    2,
      2,    2,    2,    8,    5,    2,    2,    2,    2,   11,   11,   19,   29,   33,   31,  175,
    101,  176,  177,    0,    0,    0,    0,    0,    0,    2,    2,    2,    2,    0,    2,    2,
      2,   23,   22,    6,    6,    0,    7,   11,   14,   61,    0,   33,    0,    0,    0,    0,
      0,   30,    6,    7,    7,    7,   73,    2,    2,    2,  178,   95,    9,   24,  179,   10,
    180,    0,    0,   48,   97,    0,    0,    0,    0,   30,    6,    7,   15,   17,    6,    2,
      2,    2,    2,   64,   64,   64,   43,   43,   43,   43,   43,   43,   24,  181,    0,    8,
      0,   15,    6,   15,   15,    0,    0,    0,    0,    7,    6,    6,   13,    7,    7,    9,
     65,    0,   10,   10,   10,   10,   10,   10,   10,   57,   18,   60,   26,    0,    0,    0,
      0,    2,    2,    2,    5,    2,    8,    2,    2,   30,    7,    7,   13,    0,   38,    7,
     25,    9,   99,  182,  183,    0,    0,    0,    0,    2,    2,    2,    8,    5,    2,    2,
      2,    2,    2,    2,    2,    2,   11,   11,   27,    7,   34,   60,   82,    0,    0,    0,
      0,    2,  184,   57,   27,    0,    0,    0,    0,    9,  185,    2,    2,    2,    2,    2,
      2,    2,    2,   11,    7,    6,   13,    0,   12,   15,   96,    0,    0,    0,    0,    0,
      0,    2,    2,    2,    2,    2,   98,    0,    0,   66,   66,   66,  186,  187,   66,    1,
      1,  188,    1,    1,  189,   37,   37,   37,   37,   37,   37,   37,    0,    0,    0,    0,
      0,    1,    1,    1,    1,    1,  190,    0,    0,    2,    2,    2,    2,    2,    2,    2,
      7,    7,    7,    7,    7,    7,  191,  192,  193,    9,    9,    9,   26,    0,    0,    0,
      0,   14,   41,    2,    2,    2,    2,    2,    2,    2,    2,    2,    2,    2,   23,   27,
      0,    2,    2,    2,    2,    2,    5,    0,   56,  194,    6,    6,    6,    6,    6,    6,
      6,    6,    6,    6,    6,    0,    0,    0,   53,   16,   52,    0,    0,    0,    0,    0,
      0,    0,    0,    5,    0,    0,    0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
      8,    2,    2,    2,    2,    2,    0,   56,   35,    0,   49,    3,    3,    3,   72,    0,
      0,    9,    9,    9,   55,    2,    2,    2,    0,    2,    2,    2,    2,    2,    0,    0,
      2,    2,    2,    2,    2,    2,    2,    2,   26,    2,    2,    2,    2,    2,    2,    9,
      9,    2,    2,    2,    2,    2,    2,    7,    7,    2,    2,    2,    2,    2,    2,    2,
      6,    2,    2,   46,   46,   46,   86,    0,    0,    O,    O,    G,    G,    B,    B,   WJ,
     WJ,  CGJ,  CGJ,    B,    O, VBlw, VBlw, VAbv, VAbv,    O,    B,VMAbv,VMAbv,  SUB,  SUB, VPst,
   VPst, VPre, VPre, VBlw,    O,VMPst,VMPst, VAbv, VPst,VMBlw,VMBlw, VPst, VBlw, VBlw, VAbv, VPst,
   VPre, VPst, VAbv, VAbv, VBlw, VPre, VPst,    B, VPst,VMAbv,VMPst,    O, VAbv,VMAbv,    O, VPst,
      O,    N,    N,    O, VPre,    B, VAbv,    O,VMAbv,CMBlw,    B, VPre,    O,    O, VPst,CMBlw,
      O,    B,VMAbv,   HM,   HM, VAbv,    O,   GB,   GB, VAbv,    B,VMPst,    B, FAbv, FAbv, FBlw,
   FBlw,   GB,    O, VPre,    H,CMAbv,CMAbv,    B, VBlw,    O,   GB,    O,   WJ,    B,CMBlw,CMBlw,
  CMBlw,VMBlw,    O,    O,VMBlw,VMAbv,CMAbv,VMAbv,    B,    O,CMBlw, VBlw, VPre, VPre, VAbv, VBlw,
   VPst, VPst,VMAbv,    H,    B,SMAbv,SMAbv,   SB,   SE,    R,    R,VMPst,    H,    J,    J, VPst,
      H, VAbv,    H,    O,FMBlw, FPst, FPst, VAbv, VPre,   WJ,    O, VBlw,    B,    O,   SB,    O,
     SE,FMPst,FMPst,    O, MBlw,   CS,VMPst,    B,  SUB,    O,  SUB,  SUB,    O,VMPst,   IS, MBlw,
      B, VPst,VMPst,    B,VMPst,CMAbv,    B, VAbv,VMAbv,VMAbv, FAbv,CMAbv, VPst, VBlw, FAbv,FMPst,
      O,    H,VMAbv,    H,    O, MPre, MAbv, VBlw,VMAbv,   IS,    O,    O,   IS,CMAbv,    O,CMBlw,
   VAbv, VPre,VMAbv,   IS,    R,    H,CMBlw,    O,  CGJ,   GB,VMAbv,FMAbv,    O,    O,   CS,    R,
      O,  HVM,    O,    O,CMAbv,FMBlw,    O,VMAbv,VMBlw, VAbv, MPst, MPre, MBlw, MBlw, MBlw, MBlw,
   VPst, VAbv,VMPst,VMPst,VMBlw,VMAbv,FMAbv, FAbv,CMAbv,FMAbv,VMAbv,FMAbv, VAbv,   IS,FMAbv,    B,
  FMAbv,    B,  CGJ,   WJ,  CGJ,   GB,CMAbv, VAbv,  SUB,VMBlw, FPst, FPst, FBlw,VMAbv,FMBlw,    B,
   MPre, MBlw,  SUB, MAbv,  SUB,   Sk, VPst,    O,SMAbv, VPst,   IS,   RK,   RK,VMPre,VMPre,FMAbv,
  CMBlw,VMAbv,   CS,    O,FMAbv, ZWNJ,  CGJ,    O,    H, MPst, VPst, VAbv,VMBlw, FPst, VPst, FAbv,
  VMPst,    B,CMAbv, VAbv, MBlw, MPst, MBlw, VBlw, MPst, MBlw,    O,    B, FAbv, FAbv, FPst,    B,
   VPre,    O,VMPst,VMPst, VBlw, VPst,VMBlw,VMBlw,VMAbv,VMBlw,    B,VMPst,VMAbv,VMPst,   CS,   CS,
      B,    O,   HN, VPre, VBlw, VAbv,   IS, VPst,    B,VMAbv,    H, VAbv,CMBlw,VMPst,    O,VMAbv,
  CMBlw,FMAbv,    B,   CS,   CS,VMPst, VAbv,VMAbv, VPst, MPst,    R, MPst,CMBlw,    B,FMBlw,   CS,
    SUB,  SUB,   GB,CMAbv,   IS, VBlw,   IS,    R, MBlw,   GB, VAbv,    R,VMPst,    J,   SB,   SE,
      J,   HR,    G,    G,   HM,    G,    O, MPre, MPre, MPst,VMAbv, MBlw, VBlw,    O, VBlw,
];
pub(crate) static hb_use_u16: [u16; 864]=
[
     0,   0,   0,   0,   0,   0,   0,   0,   8,   8,   8,   8,   8,   8,   8,   8,
    16,  16,  16,  16,  16,  16,  16,  16,  24,  24,  24,  24,  24,  24,  24,  24,
     0,   0, 272,  32,   0, 120,   0, 120,   0,   0, 280, 288,   0, 296,   0,   0,
     0,   0,   0,   0, 304,   0,   0,   0,   0,   0,   0,   0, 128,   0,   0,   0,
     0,   0,   0,   0, 136,  24, 312, 320,   0,   0,   0,   0,  24, 328,   0,   0,
   336,  24,  24, 344, 352, 360,  56, 144, 368,  64,  48, 376, 152, 384,  56, 392,
   400,  64,  48, 408, 416, 424,  72, 432, 440, 112,  48, 448, 456,   0,  56, 464,
   472,  64,  48, 480, 152, 488,  56, 496, 504, 512, 520, 528, 536, 544,  72,   0,
   552,  80,  48, 560, 160, 568,  56,   0, 576,  80,  48, 584, 160, 592,  56, 600,
   608,  80,  24, 616, 624, 632,  56,   0, 640, 648,  24, 656, 664, 672,  72, 680,
   688, 696,  24, 704, 168,  24,  88, 712, 720, 176, 728, 736, 744,   0,   0,   0,
    24,  24, 752, 760, 768, 776, 784, 792, 800, 808,   0,   0,   0,   0,   0,   0,
    24, 816,  24, 824,  24, 832, 840, 848,  24,  24,  24, 856, 864, 872,  32,   0,
   880,   0,  24,  24,  24,  24,  24,  96, 888,  24, 896,   0,   0,   0,   0,   0,
    24, 184, 904, 912,  72,  24, 920, 192,  24,  24, 200,  24, 928, 104,   0,   0,
    24, 936,  24,  24,  24, 944, 952, 960,  32,  32,   0,   0,   0,   0,   0,   0,
   968,  24,  24, 976, 984,  32, 992,1000,1008,  24,1016,  24,  24,  24,1024,1032,
    24,  24,1040,1048,1056,   0,   0,   0,   0,   0,   0,   0,   0,1064,1072,1080,
     0,   0,   0,   0,   0,   0,   0,1088,1096,1104,1112,   0,   0,   0,  16,1120,
  1128,   0,   0,   0,   0,   0,   0,1136,   0,   0,   0,   0,1144,   0,   0,   0,
     0,   0,   0,   0,   0,   0,1152,   0,   0,   0,   0,  24,  24,  24,1160,1168,
     0,   0,1176,   0,   0,   0,   0,   0,1184,  24,1192,   0,  24,  24,  24, 208,
  1200,  24,  24,1208,1216,  32,1224,1232,  24,  24,1240,  24,1248,1256,   0,   0,
  1264,  24,  24,1272,1280,  32,1288, 184,  24,  24,1296,1304,1312,  32,  24,1320,
    24,  24,  24,1328,1336,   0,1344,1352,   0,   0,   0,   0,  24,  24,1360,  32,
    40,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,1368,
     0,   0,   0,   0,   0,   0,   0,1376,   0,   0,   0,   0,   0,   0,   0, 216,
   216,1384, 112,1392,   0,   0,   0,   0,1400,1408,  24,1416,  96,   0,   0,   0,
     0,   0,   0,   0, 168,  24,1424,   0,  24, 224,1432,   0,   0,   0,   0,   0,
    24,  24,1440,  32, 136,  24,1448,  24, 232,   0,   0,   0,   0,   0,   0,   0,
    24,  24,1456, 224,   0,   0,   0,   0,   0,   0,   0,  24,1464,1472,   0,  24,
  1480,   0,   0,1488,1496,   0,   0,   0,1504,  24,  24,1512,1520,1528,1536,1544,
   240,  24,  24,1552,1560,   0,   0,   0,1568,  24,1576,1584,1592,  24,  24,1600,
   240,  24,  24,1608,1616, 104, 248, 192,  24, 112,1624,1632,1640,   0,   0,   0,
  1648,1656,  96,  24,  24,1664,1672,  32,1680,  64,  48,1688,1696,1704,1712,1720,
  1728,  24,  24,1736,1744,1752,1760,   0,  24,  24,  24,1768,1776,1784,1792,   0,
   248,  24,  24,1800,1808,  32,   0,   0,  24,  24, 256,1816,1824,1832,   0,   0,
    24,  24,  24,1840,1848,  32,   0,   0,  24,  24,1856,1864,  32,  24, 208,   0,
    24,1872,1880, 200,1888,   0,   0,   0,  24,  24,1896,1904,   0,   0,   0,   0,
  1912,1920,  24,1928,1936,  32,   0,   0,   0,   0,1944,  24,  24,1952,1960,   0,
  1968,  24,  24,1976,1984,1992,  24,  24,2000,2008,   0,   0,   0,   0,   0,   0,
     0,   0,   0,   0,   0,   0,2016,   0,  48,  24, 256,2024, 128,  24,  88, 144,
    24,2032, 176,2040,   0,   0,   0,   0,2048,  24,  24,2056,2064,  32,2072,  24,
  2080,2088,  32,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,  24,2096,
  2104,  80,  24,2112,2120,2128,   0,   0,   8,   8,   8,2136,2144,2152,   8,   8,
     8,   8,   8,   8,   8,   8,   8,2160,  24,2168,2176,  32,   0,   0,   0,   0,
     0,   0,   0,   0,  32,   0,   0,   0,  24,  24,  24,2184,   0,   0,   0,   0,
     0,   0,   0,   0,2192,  24,2200,  32,  24,  24,  24,  24,2208,2216, 264, 264,
  2224,2232,   0,   0,   0,   0,2240,   0,  24,  24,  24,  24,  24, 232,   0,2248,
    24,  24,  24,  24,  24,  24, 104,  88,  96,2256,   0,   0,   0,   0,   0,   0,
     0,   0,   0,   0,   0,   0,   0,2264,  24,  24,  88,2272,2280,   0,   0,   0,
     0,  24,2288,   0,  24,  24,2296,  32,   0,   0,   0,   0,   0,  24,2304,  32,
     0,   0,   0,   0,   0,  24,2312, 104,  24,  24,  24,  24,2320,  32,   0,   0,
    40,  40,  40,  40,  40,  40,  40,  40,  40,  40,  40,  40,  40,  40,  40,  16,
];

#[inline(always)]
fn hb_use_b4 (a: &[u8], i: usize) -> u8
{
  (a[i>>1]>>((i&1)<<2))&15
}
#[inline]
pub(crate) fn hb_use_get_category (u: usize) -> u8
{
  /* packtab: [2^4,2^5,2^3,2^3,2^1] */
  if u<921600usize { (hb_use_u8[2953usize+((((hb_use_u8[625usize+(((hb_use_u16[(((hb_use_u8[113usize+((((hb_use_b4(&hb_use_u8,(((((((((u)>>1))>>3))>>3))>>5) as usize) as usize)) as usize)<<5) as usize+((((((((u)>>1))>>3))>>3))&31) as usize) as usize]) as usize)<<3) as usize+((((((u)>>1))>>3))&7) as usize]) as usize) as usize+((((u)>>1))&7) as usize) as usize]) as usize)<<1) as usize+((u)&1) as usize) as usize]) as u8 } else { O }
}

/* == End of generated table == */