// Copyright 2026 International Digital Economy Academy
//
// Licensed under the Apache License, Version 2.0 (the "License");
// you may not use this file except in compliance with the License.
// You may obtain a copy of the License at
//
//     http://www.apache.org/licenses/LICENSE-2.0
//
// Unless required by applicable law or agreed to in writing, software
// distributed under the License is distributed on an "AS IS" BASIS,
// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
// See the License for the specific language governing permissions and
// limitations under the License.

///|
/// Generated from refs/harfbuzz/src/hb-ot-shaper-myanmar-machine.hh.
///
let myanmar_syllable_type_consonant : Int = 0
let myanmar_syllable_type_broken : Int = 1
let myanmar_syllable_type_non_myanmar : Int = 2

let myanmar_machine_start : Int = 0

let myanmar_machine_trans_keys : Array[Int] = [
  1, 57, 3, 57, 5, 57, 5, 57, 3, 57, 5, 57, 3, 57, 3, 57, 3, 57, 3, 57, 3, 57, 5, 57, 1, 15, 3, 57,
  3, 57, 3, 57, 3, 57, 3, 57, 3, 57, 3, 57, 3, 57, 3, 57, 3, 57, 3, 57, 3, 57, 5, 57, 5, 57, 3, 57,
  5, 57, 3, 57, 3, 57, 3, 57, 3, 57, 3, 57, 5, 57, 1, 15, 3, 57, 3, 57, 3, 57, 3, 57, 3, 57, 3, 57,
  3, 57, 3, 57, 3, 57, 3, 57, 3, 57, 3, 57, 3, 57, 3, 57, 3, 57, 1, 57, 1, 15, 0,
]

let myanmar_machine_key_spans : Array[Int] = [
  57, 55, 53, 53, 55, 53, 55, 55, 55, 55, 55, 53, 15, 55, 55, 55, 55, 55, 55, 55, 55, 55, 55, 55,
  55, 53, 53, 55, 53, 55, 55, 55, 55, 55, 53, 15, 55, 55, 55, 55, 55, 55, 55, 55, 55, 55, 55, 55,
  55, 55, 55, 57, 15,
]

let myanmar_machine_index_offsets : Array[Int] = [
  0, 58, 114, 168, 222, 278, 332, 388, 444, 500, 556, 612, 666, 682, 738, 794, 850, 906, 962, 1018,
  1074, 1130, 1186, 1242, 1298, 1354, 1408, 1462, 1518, 1572, 1628, 1684, 1740, 1796, 1852, 1906,
  1922, 1978, 2034, 2090, 2146, 2202, 2258, 2314, 2370, 2426, 2482, 2538, 2594, 2650, 2706, 2762,
  2820,
]

let myanmar_machine_indicies : Array[Int] = [
  1, 1, 2, 3, 4, 4, 0, 5, 6, 1, 1, 0, 0, 0, 7, 0, 0, 8, 0, 9, 10, 11, 12, 0, 0, 0, 0, 0, 0, 0, 0,
  13, 0, 0, 14, 15, 16, 17, 18, 19, 20, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 21, 0, 23, 24,
  25, 25, 22, 26, 27, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 28, 29, 30, 31, 22, 22, 22, 22, 22,
  22, 22, 22, 32, 22, 22, 33, 34, 35, 36, 37, 38, 39, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22,
  22, 22, 22, 22, 26, 22, 25, 25, 22, 26, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22,
  31, 22, 22, 22, 22, 22, 22, 22, 22, 40, 22, 22, 22, 22, 22, 22, 37, 22, 22, 22, 22, 22, 22, 22,
  22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 26, 22, 25, 25, 22, 26, 22, 22, 22, 22, 22, 22, 22, 22,
  22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 37, 22,
  22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 26, 22, 41, 22, 25, 25, 22, 26,
  37, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 26,
  22, 22, 22, 22, 22, 22, 37, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22,
  26, 22, 25, 25, 22, 26, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22,
  22, 22, 22, 22, 22, 26, 22, 22, 22, 22, 22, 22, 37, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22,
  22, 22, 22, 22, 22, 22, 26, 22, 23, 22, 25, 25, 22, 26, 27, 22, 22, 22, 22, 22, 22, 22, 22, 22,
  22, 42, 22, 22, 31, 22, 22, 22, 22, 22, 22, 22, 22, 43, 22, 22, 44, 22, 22, 22, 37, 22, 43, 22,
  22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 26, 22, 23, 22, 25, 25, 22, 26, 27, 22,
  22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 31, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22,
  22, 22, 22, 22, 37, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 26, 22,
  23, 22, 25, 25, 22, 26, 27, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 42, 22, 22, 31, 22, 22, 22,
  22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 37, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22,
  22, 22, 22, 22, 22, 22, 26, 22, 23, 22, 25, 25, 22, 26, 27, 22, 22, 22, 22, 22, 22, 22, 22, 22,
  22, 42, 22, 22, 31, 22, 22, 22, 22, 22, 22, 22, 22, 43, 22, 22, 22, 22, 22, 22, 37, 22, 22, 22,
  22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 26, 22, 23, 22, 25, 25, 22, 26, 27, 22,
  22, 22, 22, 22, 22, 22, 22, 22, 22, 42, 22, 22, 31, 22, 22, 22, 22, 22, 22, 22, 22, 43, 22, 22,
  22, 22, 22, 22, 37, 22, 43, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 26, 22,
  25, 25, 22, 26, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 31, 22, 22, 22, 22, 22,
  22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 37, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22,
  22, 22, 22, 22, 26, 22, 1, 1, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 1, 22, 23, 22, 25,
  25, 22, 26, 27, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 28, 29, 22, 31, 22, 22, 22, 22, 22, 22,
  22, 22, 22, 22, 22, 22, 22, 22, 22, 37, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22,
  22, 22, 22, 26, 22, 23, 22, 25, 25, 22, 26, 27, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 29,
  22, 31, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 37, 22, 22, 22, 22, 22, 22,
  22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 26, 22, 23, 22, 25, 25, 22, 26, 27, 22, 22, 22, 22,
  22, 22, 22, 22, 22, 22, 28, 29, 30, 31, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22,
  22, 37, 45, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 26, 22, 23, 22, 25,
  25, 22, 26, 27, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 28, 29, 30, 31, 22, 22, 22, 22, 22, 22,
  22, 22, 22, 22, 22, 22, 22, 22, 22, 37, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22,
  22, 22, 22, 26, 22, 23, 22, 25, 25, 22, 26, 27, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 28, 29,
  30, 31, 22, 22, 22, 22, 22, 22, 22, 22, 32, 22, 22, 33, 34, 35, 36, 37, 22, 39, 22, 22, 22, 22,
  22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 26, 22, 23, 22, 25, 25, 22, 26, 27, 22, 22, 22, 22,
  22, 22, 22, 22, 22, 22, 28, 29, 30, 31, 22, 22, 22, 22, 22, 22, 22, 22, 45, 22, 22, 22, 22, 22,
  22, 37, 22, 39, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 26, 22, 23, 22, 25,
  25, 22, 26, 27, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 28, 29, 30, 31, 22, 22, 22, 22, 22, 22,
  22, 22, 45, 22, 22, 22, 22, 22, 22, 37, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22,
  22, 22, 22, 26, 22, 23, 22, 25, 25, 22, 26, 27, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 28, 29,
  30, 31, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 33, 22, 35, 22, 37, 22, 39, 22, 22, 22, 22,
  22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 26, 22, 23, 22, 25, 25, 22, 26, 27, 22, 22, 22, 22,
  22, 22, 22, 22, 22, 22, 28, 29, 30, 31, 22, 22, 22, 22, 22, 22, 22, 22, 45, 22, 22, 33, 22, 22,
  22, 37, 22, 39, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 26, 22, 23, 22, 25,
  25, 22, 26, 27, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 28, 29, 30, 31, 22, 22, 22, 22, 22, 22,
  22, 22, 46, 22, 22, 33, 34, 35, 22, 37, 22, 39, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22,
  22, 22, 22, 26, 22, 23, 22, 25, 25, 22, 26, 27, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 28, 29,
  30, 31, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 33, 34, 35, 22, 37, 22, 39, 22, 22, 22, 22,
  22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 26, 22, 23, 24, 25, 25, 22, 26, 27, 22, 22, 22, 22,
  22, 22, 22, 22, 22, 22, 28, 29, 30, 31, 22, 22, 22, 22, 22, 22, 22, 22, 32, 22, 22, 33, 34, 35,
  36, 37, 22, 39, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 26, 22, 48, 48, 47,
  5, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 12, 47, 47, 47, 47, 47, 47, 47, 47,
  49, 47, 47, 47, 47, 47, 47, 18, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47,
  47, 5, 47, 48, 48, 50, 5, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50,
  50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 18, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50,
  50, 50, 50, 50, 50, 50, 5, 50, 51, 47, 48, 48, 47, 5, 18, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47,
  47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 5, 47, 47, 47, 47, 47, 47, 18, 47, 47, 47, 47,
  47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 5, 47, 48, 48, 47, 5, 47, 47, 47, 47, 47, 47,
  47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 5, 47, 47, 47, 47, 47, 47,
  18, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 5, 47, 2, 47, 48, 48, 47,
  5, 6, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 52, 47, 47, 12, 47, 47, 47, 47, 47, 47, 47, 47, 53,
  47, 47, 54, 47, 47, 47, 18, 47, 53, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47,
  5, 47, 2, 47, 48, 48, 47, 5, 6, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 12, 47, 47,
  47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 18, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47,
  47, 47, 47, 47, 47, 47, 47, 5, 47, 2, 47, 48, 48, 47, 5, 6, 47, 47, 47, 47, 47, 47, 47, 47, 47,
  47, 52, 47, 47, 12, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 18, 47, 47, 47,
  47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 5, 47, 2, 47, 48, 48, 47, 5, 6, 47, 47,
  47, 47, 47, 47, 47, 47, 47, 47, 52, 47, 47, 12, 47, 47, 47, 47, 47, 47, 47, 47, 53, 47, 47, 47,
  47, 47, 47, 18, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 5, 47, 2, 47,
  48, 48, 47, 5, 6, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 52, 47, 47, 12, 47, 47, 47, 47, 47, 47,
  47, 47, 53, 47, 47, 47, 47, 47, 47, 18, 47, 53, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47,
  47, 47, 47, 5, 47, 48, 48, 47, 5, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 12, 47,
  47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 18, 47, 47, 47, 47, 47, 47, 47, 47, 47,
  47, 47, 47, 47, 47, 47, 47, 47, 5, 47, 55, 55, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47,
  55, 47, 2, 3, 48, 48, 47, 5, 6, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 9, 10, 11, 12, 47, 47,
  47, 47, 47, 47, 47, 47, 13, 47, 47, 14, 15, 16, 17, 18, 19, 20, 47, 47, 47, 47, 47, 47, 47, 47,
  47, 47, 47, 47, 47, 47, 47, 5, 47, 2, 47, 48, 48, 47, 5, 6, 47, 47, 47, 47, 47, 47, 47, 47, 47,
  47, 9, 10, 47, 12, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 18, 47, 47, 47,
  47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 5, 47, 2, 47, 48, 48, 47, 5, 6, 47, 47,
  47, 47, 47, 47, 47, 47, 47, 47, 47, 10, 47, 12, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47,
  47, 47, 47, 18, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 5, 47, 2, 47,
  48, 48, 47, 5, 6, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 9, 10, 11, 12, 47, 47, 47, 47, 47, 47,
  47, 47, 47, 47, 47, 47, 47, 47, 47, 18, 56, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47,
  47, 47, 47, 5, 47, 2, 47, 48, 48, 47, 5, 6, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 9, 10, 11,
  12, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 18, 47, 47, 47, 47, 47, 47, 47,
  47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 5, 47, 2, 47, 48, 48, 47, 5, 6, 47, 47, 47, 47, 47, 47,
  47, 47, 47, 47, 9, 10, 11, 12, 47, 47, 47, 47, 47, 47, 47, 47, 13, 47, 47, 14, 15, 16, 17, 18,
  47, 20, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 5, 47, 2, 47, 48, 48, 47, 5,
  6, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 9, 10, 11, 12, 47, 47, 47, 47, 47, 47, 47, 47, 56, 47,
  47, 47, 47, 47, 47, 18, 47, 20, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 5,
  47, 2, 47, 48, 48, 47, 5, 6, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 9, 10, 11, 12, 47, 47, 47,
  47, 47, 47, 47, 47, 56, 47, 47, 47, 47, 47, 47, 18, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47,
  47, 47, 47, 47, 47, 47, 5, 47, 2, 47, 48, 48, 47, 5, 6, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47,
  9, 10, 11, 12, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 14, 47, 16, 47, 18, 47, 20, 47, 47,
  47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 5, 47, 2, 47, 48, 48, 47, 5, 6, 47, 47, 47,
  47, 47, 47, 47, 47, 47, 47, 9, 10, 11, 12, 47, 47, 47, 47, 47, 47, 47, 47, 56, 47, 47, 14, 47,
  47, 47, 18, 47, 20, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 5, 47, 2, 47, 48,
  48, 47, 5, 6, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 9, 10, 11, 12, 47, 47, 47, 47, 47, 47, 47,
  47, 57, 47, 47, 14, 15, 16, 47, 18, 47, 20, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47,
  47, 47, 5, 47, 2, 47, 48, 48, 47, 5, 6, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 9, 10, 11, 12,
  47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 14, 15, 16, 47, 18, 47, 20, 47, 47, 47, 47, 47, 47,
  47, 47, 47, 47, 47, 47, 47, 47, 47, 5, 47, 2, 3, 48, 48, 47, 5, 6, 47, 47, 47, 47, 47, 47, 47,
  47, 47, 47, 9, 10, 11, 12, 47, 47, 47, 47, 47, 47, 47, 47, 13, 47, 47, 14, 15, 16, 17, 18, 47,
  20, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 5, 47, 23, 24, 25, 25, 22, 26,
  27, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 28, 29, 30, 31, 22, 22, 22, 22, 22, 22, 22, 22, 58,
  22, 22, 33, 34, 35, 36, 37, 38, 39, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22,
  26, 22, 23, 59, 25, 25, 22, 26, 27, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 28, 29, 30, 31, 22,
  22, 22, 22, 22, 22, 22, 22, 32, 22, 22, 33, 34, 35, 36, 37, 22, 39, 22, 22, 22, 22, 22, 22, 22,
  22, 22, 22, 22, 22, 22, 22, 22, 26, 22, 1, 1, 2, 3, 48, 48, 47, 5, 6, 1, 1, 47, 47, 47, 1, 47,
  47, 47, 47, 9, 10, 11, 12, 47, 47, 47, 47, 47, 47, 47, 47, 13, 47, 47, 14, 15, 16, 17, 18, 19,
  20, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 5, 47, 1, 1, 60, 60, 60, 60, 60,
  60, 60, 1, 1, 60, 60, 60, 1, 60, 0,
]

let myanmar_machine_trans_targs : Array[Int] = [
  0, 1, 25, 35, 0, 26, 30, 49, 52, 37, 38, 39, 29, 41, 42, 44, 45, 46, 27, 48, 43, 26, 0, 2, 12, 0,
  3, 7, 13, 14, 15, 6, 17, 18, 20, 21, 22, 4, 24, 19, 11, 5, 8, 9, 10, 16, 23, 0, 0, 34, 0, 28, 31,
  32, 33, 36, 40, 47, 50, 51, 0,
]

let myanmar_machine_trans_actions : Array[Int] = [
  3, 0, 0, 0, 4, 5, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 6, 7, 0, 0, 8, 0, 0, 0, 0, 0, 0,
  0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 9, 10, 0, 11, 0, 0, 0, 0, 0, 0, 0, 0, 0, 12,
]

let myanmar_machine_to_state_actions : Array[Int] = [
  1, 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,
]

let myanmar_machine_from_state_actions : Array[Int] = [
  2, 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,
]

let myanmar_machine_eof_trans : Array[Int] = [
  0, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23,
  23, 48, 51, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48,
  48, 23, 23, 48, 61,
]

fn find_syllables_myanmar(categories : Array[UInt]) -> Array[Int] {
  let len = categories.length()
  let syllables : Array[Int] = Array::make(len, 0)
  let mut cs = myanmar_machine_start
  let mut ts = 0
  let mut te = 0
  let mut act = 0
  let mut p = 0
  let pe = len
  let eof = len
  let mut syllable_serial = 1
  fn found_syllable(start : Int, end : Int, syllable_type : Int) -> Unit {
    if start < 0 || end > len || start >= end {
      return ()
    }
    for i in start.. 0 && myanmar_machine_trans_keys[keys_index] <= category && category <= myanmar_machine_trans_keys[keys_index + 1] {
      trans = myanmar_machine_indicies[inds_index + (category - myanmar_machine_trans_keys[keys_index])]
    } else {
      trans = myanmar_machine_indicies[inds_index + slen]
    }
    cs = myanmar_machine_trans_targs[trans]
    let action = myanmar_machine_trans_actions[trans]
    if action != 0 {
      match action {
        8 => { te = p + 1; found_syllable(ts, te, myanmar_syllable_type_consonant) }
        4 => { te = p + 1; found_syllable(ts, te, myanmar_syllable_type_non_myanmar) }
        10 => { te = p + 1; found_syllable(ts, te, myanmar_syllable_type_broken) }
        3 => { te = p + 1; found_syllable(ts, te, myanmar_syllable_type_non_myanmar) }
        7 => { te = p; p = p - 1; found_syllable(ts, te, myanmar_syllable_type_consonant) }
        9 => { te = p; p = p - 1; found_syllable(ts, te, myanmar_syllable_type_broken) }
        12 => { te = p; p = p - 1; found_syllable(ts, te, myanmar_syllable_type_non_myanmar) }
        11 => {
          match act {
            2 => { p = te - 1; found_syllable(ts, te, myanmar_syllable_type_non_myanmar) }
            3 => { p = te - 1; found_syllable(ts, te, myanmar_syllable_type_broken) }
            _ => ()
          }
        }
        6 => { te = p + 1; act = 2 }
        5 => { te = p + 1; act = 3 }
        _ => ()
      }
    }
    if myanmar_machine_to_state_actions[cs] == 1 {
      ts = 0
    }
    p = p + 1
  }
  if p == eof {
    let eof_trans = myanmar_machine_eof_trans[cs]
    if eof_trans > 0 {
      let trans = eof_trans - 1
      cs = myanmar_machine_trans_targs[trans]
      let action = myanmar_machine_trans_actions[trans]
      if action != 0 {
        match action {
          8 => { te = p + 1; found_syllable(ts, te, myanmar_syllable_type_consonant) }
          4 => { te = p + 1; found_syllable(ts, te, myanmar_syllable_type_non_myanmar) }
          10 => { te = p + 1; found_syllable(ts, te, myanmar_syllable_type_broken) }
          3 => { te = p + 1; found_syllable(ts, te, myanmar_syllable_type_non_myanmar) }
          7 => { te = p; p = p - 1; found_syllable(ts, te, myanmar_syllable_type_consonant) }
          9 => { te = p; p = p - 1; found_syllable(ts, te, myanmar_syllable_type_broken) }
          12 => { te = p; p = p - 1; found_syllable(ts, te, myanmar_syllable_type_non_myanmar) }
          11 => {
            match act {
              2 => { p = te - 1; found_syllable(ts, te, myanmar_syllable_type_non_myanmar) }
              3 => { p = te - 1; found_syllable(ts, te, myanmar_syllable_type_broken) }
              _ => ()
            }
          }
          6 => { te = p + 1; act = 2 }
          5 => { te = p + 1; act = 3 }
          _ => ()
        }
      }
      if myanmar_machine_to_state_actions[cs] == 1 {
        ts = 0
      }
    }
  }
  syllables
}