From c994573a77343794a2a3ddf57f4d5f51bf624698 Mon Sep 17 00:00:00 2001 From: Ilya Matveev Date: Fri, 16 Jun 2017 19:24:07 +0700 Subject: [PATCH] regex: Fix warnings and TODOs --- .../RegexTest/harmony/AllCodePointsTest.kt | 17 + runtime/src/main/cpp/Regex.cpp | 610 +++++++++--------- .../main/kotlin/kotlin/text/MatchResult.kt | 20 +- .../kotlin/kotlin/text/regex/CharClass.kt | 17 - .../main/kotlin/kotlin/text/regex/Lexer.kt | 16 +- .../main/kotlin/kotlin/text/regex/Pattern.kt | 1 - .../text/regex/sets/BackReferenceSet.kt | 3 +- .../kotlin/kotlin/text/regex/sets/CharSet.kt | 2 +- .../kotlin/kotlin/text/regex/sets/EOLSet.kt | 1 - .../kotlin/text/regex/sets/SequenceSet.kt | 2 +- .../kotlin/text/regex/sets/SingleSet.kt | 10 +- .../text/regex/sets/SupplementaryRangeSet.kt | 15 - 12 files changed, 341 insertions(+), 373 deletions(-) diff --git a/backend.native/tests/external/stdlib/text/RegexTest/harmony/AllCodePointsTest.kt b/backend.native/tests/external/stdlib/text/RegexTest/harmony/AllCodePointsTest.kt index 84e8ba0ff9c..c30df1c5f45 100644 --- a/backend.native/tests/external/stdlib/text/RegexTest/harmony/AllCodePointsTest.kt +++ b/backend.native/tests/external/stdlib/text/RegexTest/harmony/AllCodePointsTest.kt @@ -1,3 +1,20 @@ +/* + * Licensed to the Apache Software Foundation (ASF) under one or more + * contributor license agreements. See the NOTICE file distributed with + * this work for additional information regarding copyright ownership. + * The ASF licenses this file to You 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. + */ + import kotlin.text.* import kotlin.test.* diff --git a/runtime/src/main/cpp/Regex.cpp b/runtime/src/main/cpp/Regex.cpp index 4ae4a72c794..1d5d31a9d04 100644 --- a/runtime/src/main/cpp/Regex.cpp +++ b/runtime/src/main/cpp/Regex.cpp @@ -230,317 +230,317 @@ constexpr KInt decompositionKeys[] = { }; struct Decomposition { - const KByte length; const KInt array[4]; + const KByte length; }; constexpr Decomposition decompositionValues[] = { - {2, {65, 768}}, {2, {65, 769}}, {2, {65, 770}}, {2, {65, 771}}, {2, {65, 776}}, {2, {65, 778}}, {2, {67, 807}}, - {2, {69, 768}}, {2, {69, 769}}, {2, {69, 770}}, {2, {69, 776}}, {2, {73, 768}}, {2, {73, 769}}, {2, {73, 770}}, - {2, {73, 776}}, {2, {78, 771}}, {2, {79, 768}}, {2, {79, 769}}, {2, {79, 770}}, {2, {79, 771}}, {2, {79, 776}}, - {2, {85, 768}}, {2, {85, 769}}, {2, {85, 770}}, {2, {85, 776}}, {2, {89, 769}}, {2, {97, 768}}, {2, {97, 769}}, - {2, {97, 770}}, {2, {97, 771}}, {2, {97, 776}}, {2, {97, 778}}, {2, {99, 807}}, {2, {101, 768}}, {2, {101, 769}}, - {2, {101, 770}}, {2, {101, 776}}, {2, {105, 768}}, {2, {105, 769}}, {2, {105, 770}}, {2, {105, 776}}, {2, {110, 771}}, - {2, {111, 768}}, {2, {111, 769}}, {2, {111, 770}}, {2, {111, 771}}, {2, {111, 776}}, {2, {117, 768}}, {2, {117, 769}}, - {2, {117, 770}}, {2, {117, 776}}, {2, {121, 769}}, {2, {121, 776}}, {2, {65, 772}}, {2, {97, 772}}, {2, {65, 774}}, - {2, {97, 774}}, {2, {65, 808}}, {2, {97, 808}}, {2, {67, 769}}, {2, {99, 769}}, {2, {67, 770}}, {2, {99, 770}}, - {2, {67, 775}}, {2, {99, 775}}, {2, {67, 780}}, {2, {99, 780}}, {2, {68, 780}}, {2, {100, 780}}, {2, {69, 772}}, - {2, {101, 772}}, {2, {69, 774}}, {2, {101, 774}}, {2, {69, 775}}, {2, {101, 775}}, {2, {69, 808}}, {2, {101, 808}}, - {2, {69, 780}}, {2, {101, 780}}, {2, {71, 770}}, {2, {103, 770}}, {2, {71, 774}}, {2, {103, 774}}, {2, {71, 775}}, - {2, {103, 775}}, {2, {71, 807}}, {2, {103, 807}}, {2, {72, 770}}, {2, {104, 770}}, {2, {73, 771}}, {2, {105, 771}}, - {2, {73, 772}}, {2, {105, 772}}, {2, {73, 774}}, {2, {105, 774}}, {2, {73, 808}}, {2, {105, 808}}, {2, {73, 775}}, - {2, {74, 770}}, {2, {106, 770}}, {2, {75, 807}}, {2, {107, 807}}, {2, {76, 769}}, {2, {108, 769}}, {2, {76, 807}}, - {2, {108, 807}}, {2, {76, 780}}, {2, {108, 780}}, {2, {78, 769}}, {2, {110, 769}}, {2, {78, 807}}, {2, {110, 807}}, - {2, {78, 780}}, {2, {110, 780}}, {2, {79, 772}}, {2, {111, 772}}, {2, {79, 774}}, {2, {111, 774}}, {2, {79, 779}}, - {2, {111, 779}}, {2, {82, 769}}, {2, {114, 769}}, {2, {82, 807}}, {2, {114, 807}}, {2, {82, 780}}, {2, {114, 780}}, - {2, {83, 769}}, {2, {115, 769}}, {2, {83, 770}}, {2, {115, 770}}, {2, {83, 807}}, {2, {115, 807}}, {2, {83, 780}}, - {2, {115, 780}}, {2, {84, 807}}, {2, {116, 807}}, {2, {84, 780}}, {2, {116, 780}}, {2, {85, 771}}, {2, {117, 771}}, - {2, {85, 772}}, {2, {117, 772}}, {2, {85, 774}}, {2, {117, 774}}, {2, {85, 778}}, {2, {117, 778}}, {2, {85, 779}}, - {2, {117, 779}}, {2, {85, 808}}, {2, {117, 808}}, {2, {87, 770}}, {2, {119, 770}}, {2, {89, 770}}, {2, {121, 770}}, - {2, {89, 776}}, {2, {90, 769}}, {2, {122, 769}}, {2, {90, 775}}, {2, {122, 775}}, {2, {90, 780}}, {2, {122, 780}}, - {2, {79, 795}}, {2, {111, 795}}, {2, {85, 795}}, {2, {117, 795}}, {2, {65, 780}}, {2, {97, 780}}, {2, {73, 780}}, - {2, {105, 780}}, {2, {79, 780}}, {2, {111, 780}}, {2, {85, 780}}, {2, {117, 780}}, {3, {85, 776, 772}}, - {3, {117, 776, 772}}, {3, {85, 776, 769}}, {3, {117, 776, 769}}, {3, {85, 776, 780}}, {3, {117, 776, 780}}, - {3, {85, 776, 768}}, {3, {117, 776, 768}}, {3, {65, 776, 772}}, {3, {97, 776, 772}}, {3, {65, 775, 772}}, - {3, {97, 775, 772}}, {2, {198, 772}}, {2, {230, 772}}, {2, {71, 780}}, {2, {103, 780}}, {2, {75, 780}}, - {2, {107, 780}}, {2, {79, 808}}, {2, {111, 808}}, {3, {79, 808, 772}}, {3, {111, 808, 772}}, {2, {439, 780}}, - {2, {658, 780}}, {2, {106, 780}}, {2, {71, 769}}, {2, {103, 769}}, {2, {78, 768}}, {2, {110, 768}}, - {3, {65, 778, 769}}, {3, {97, 778, 769}}, {2, {198, 769}}, {2, {230, 769}}, {2, {216, 769}}, {2, {248, 769}}, - {2, {65, 783}}, {2, {97, 783}}, {2, {65, 785}}, {2, {97, 785}}, {2, {69, 783}}, {2, {101, 783}}, {2, {69, 785}}, - {2, {101, 785}}, {2, {73, 783}}, {2, {105, 783}}, {2, {73, 785}}, {2, {105, 785}}, {2, {79, 783}}, {2, {111, 783}}, - {2, {79, 785}}, {2, {111, 785}}, {2, {82, 783}}, {2, {114, 783}}, {2, {82, 785}}, {2, {114, 785}}, {2, {85, 783}}, - {2, {117, 783}}, {2, {85, 785}}, {2, {117, 785}}, {2, {83, 806}}, {2, {115, 806}}, {2, {84, 806}}, {2, {116, 806}}, - {2, {72, 780}}, {2, {104, 780}}, {2, {65, 775}}, {2, {97, 775}}, {2, {69, 807}}, {2, {101, 807}}, {3, {79, 776, 772}}, - {3, {111, 776, 772}}, {3, {79, 771, 772}}, {3, {111, 771, 772}}, {2, {79, 775}}, {2, {111, 775}}, {3, {79, 775, 772}}, - {3, {111, 775, 772}}, {2, {89, 772}}, {2, {121, 772}}, {1, {768}}, {1, {769}}, {1, {787}}, {2, {776, 769}}, - {1, {697}}, {1, {59}}, {2, {168, 769}}, {2, {913, 769}}, {1, {183}}, {2, {917, 769}}, {2, {919, 769}}, - {2, {921, 769}}, {2, {927, 769}}, {2, {933, 769}}, {2, {937, 769}}, {3, {953, 776, 769}}, {2, {921, 776}}, - {2, {933, 776}}, {2, {945, 769}}, {2, {949, 769}}, {2, {951, 769}}, {2, {953, 769}}, {3, {965, 776, 769}}, - {2, {953, 776}}, {2, {965, 776}}, {2, {959, 769}}, {2, {965, 769}}, {2, {969, 769}}, {2, {978, 769}}, {2, {978, 776}}, - {2, {1045, 768}}, {2, {1045, 776}}, {2, {1043, 769}}, {2, {1030, 776}}, {2, {1050, 769}}, {2, {1048, 768}}, - {2, {1059, 774}}, {2, {1048, 774}}, {2, {1080, 774}}, {2, {1077, 768}}, {2, {1077, 776}}, {2, {1075, 769}}, - {2, {1110, 776}}, {2, {1082, 769}}, {2, {1080, 768}}, {2, {1091, 774}}, {2, {1140, 783}}, {2, {1141, 783}}, - {2, {1046, 774}}, {2, {1078, 774}}, {2, {1040, 774}}, {2, {1072, 774}}, {2, {1040, 776}}, {2, {1072, 776}}, - {2, {1045, 774}}, {2, {1077, 774}}, {2, {1240, 776}}, {2, {1241, 776}}, {2, {1046, 776}}, {2, {1078, 776}}, - {2, {1047, 776}}, {2, {1079, 776}}, {2, {1048, 772}}, {2, {1080, 772}}, {2, {1048, 776}}, {2, {1080, 776}}, - {2, {1054, 776}}, {2, {1086, 776}}, {2, {1256, 776}}, {2, {1257, 776}}, {2, {1069, 776}}, {2, {1101, 776}}, - {2, {1059, 772}}, {2, {1091, 772}}, {2, {1059, 776}}, {2, {1091, 776}}, {2, {1059, 779}}, {2, {1091, 779}}, - {2, {1063, 776}}, {2, {1095, 776}}, {2, {1067, 776}}, {2, {1099, 776}}, {2, {1575, 1619}}, {2, {1575, 1620}}, - {2, {1608, 1620}}, {2, {1575, 1621}}, {2, {1610, 1620}}, {2, {1749, 1620}}, {2, {1729, 1620}}, {2, {1746, 1620}}, - {2, {2344, 2364}}, {2, {2352, 2364}}, {2, {2355, 2364}}, {2, {2325, 2364}}, {2, {2326, 2364}}, {2, {2327, 2364}}, - {2, {2332, 2364}}, {2, {2337, 2364}}, {2, {2338, 2364}}, {2, {2347, 2364}}, {2, {2351, 2364}}, {2, {2503, 2494}}, - {2, {2503, 2519}}, {2, {2465, 2492}}, {2, {2466, 2492}}, {2, {2479, 2492}}, {2, {2610, 2620}}, {2, {2616, 2620}}, - {2, {2582, 2620}}, {2, {2583, 2620}}, {2, {2588, 2620}}, {2, {2603, 2620}}, {2, {2887, 2902}}, {2, {2887, 2878}}, - {2, {2887, 2903}}, {2, {2849, 2876}}, {2, {2850, 2876}}, {2, {2962, 3031}}, {2, {3014, 3006}}, {2, {3015, 3006}}, - {2, {3014, 3031}}, {2, {3142, 3158}}, {2, {3263, 3285}}, {2, {3270, 3285}}, {2, {3270, 3286}}, {2, {3270, 3266}}, - {3, {3270, 3266, 3285}}, {2, {3398, 3390}}, {2, {3399, 3390}}, {2, {3398, 3415}}, {2, {3545, 3530}}, - {2, {3545, 3535}}, {3, {3545, 3535, 3530}}, {2, {3545, 3551}}, {2, {3906, 4023}}, {2, {3916, 4023}}, - {2, {3921, 4023}}, {2, {3926, 4023}}, {2, {3931, 4023}}, {2, {3904, 4021}}, {2, {3953, 3954}}, {2, {3953, 3956}}, - {2, {4018, 3968}}, {2, {4019, 3968}}, {2, {3953, 3968}}, {2, {3986, 4023}}, {2, {3996, 4023}}, {2, {4001, 4023}}, - {2, {4006, 4023}}, {2, {4011, 4023}}, {2, {3984, 4021}}, {2, {4133, 4142}}, {2, {65, 805}}, {2, {97, 805}}, - {2, {66, 775}}, {2, {98, 775}}, {2, {66, 803}}, {2, {98, 803}}, {2, {66, 817}}, {2, {98, 817}}, {3, {67, 807, 769}}, - {3, {99, 807, 769}}, {2, {68, 775}}, {2, {100, 775}}, {2, {68, 803}}, {2, {100, 803}}, {2, {68, 817}}, - {2, {100, 817}}, {2, {68, 807}}, {2, {100, 807}}, {2, {68, 813}}, {2, {100, 813}}, {3, {69, 772, 768}}, - {3, {101, 772, 768}}, {3, {69, 772, 769}}, {3, {101, 772, 769}}, {2, {69, 813}}, {2, {101, 813}}, {2, {69, 816}}, - {2, {101, 816}}, {3, {69, 807, 774}}, {3, {101, 807, 774}}, {2, {70, 775}}, {2, {102, 775}}, {2, {71, 772}}, - {2, {103, 772}}, {2, {72, 775}}, {2, {104, 775}}, {2, {72, 803}}, {2, {104, 803}}, {2, {72, 776}}, {2, {104, 776}}, - {2, {72, 807}}, {2, {104, 807}}, {2, {72, 814}}, {2, {104, 814}}, {2, {73, 816}}, {2, {105, 816}}, - {3, {73, 776, 769}}, {3, {105, 776, 769}}, {2, {75, 769}}, {2, {107, 769}}, {2, {75, 803}}, {2, {107, 803}}, - {2, {75, 817}}, {2, {107, 817}}, {2, {76, 803}}, {2, {108, 803}}, {3, {76, 803, 772}}, {3, {108, 803, 772}}, - {2, {76, 817}}, {2, {108, 817}}, {2, {76, 813}}, {2, {108, 813}}, {2, {77, 769}}, {2, {109, 769}}, {2, {77, 775}}, - {2, {109, 775}}, {2, {77, 803}}, {2, {109, 803}}, {2, {78, 775}}, {2, {110, 775}}, {2, {78, 803}}, {2, {110, 803}}, - {2, {78, 817}}, {2, {110, 817}}, {2, {78, 813}}, {2, {110, 813}}, {3, {79, 771, 769}}, {3, {111, 771, 769}}, - {3, {79, 771, 776}}, {3, {111, 771, 776}}, {3, {79, 772, 768}}, {3, {111, 772, 768}}, {3, {79, 772, 769}}, - {3, {111, 772, 769}}, {2, {80, 769}}, {2, {112, 769}}, {2, {80, 775}}, {2, {112, 775}}, {2, {82, 775}}, - {2, {114, 775}}, {2, {82, 803}}, {2, {114, 803}}, {3, {82, 803, 772}}, {3, {114, 803, 772}}, {2, {82, 817}}, - {2, {114, 817}}, {2, {83, 775}}, {2, {115, 775}}, {2, {83, 803}}, {2, {115, 803}}, {3, {83, 769, 775}}, - {3, {115, 769, 775}}, {3, {83, 780, 775}}, {3, {115, 780, 775}}, {3, {83, 803, 775}}, {3, {115, 803, 775}}, - {2, {84, 775}}, {2, {116, 775}}, {2, {84, 803}}, {2, {116, 803}}, {2, {84, 817}}, {2, {116, 817}}, {2, {84, 813}}, - {2, {116, 813}}, {2, {85, 804}}, {2, {117, 804}}, {2, {85, 816}}, {2, {117, 816}}, {2, {85, 813}}, {2, {117, 813}}, - {3, {85, 771, 769}}, {3, {117, 771, 769}}, {3, {85, 772, 776}}, {3, {117, 772, 776}}, {2, {86, 771}}, {2, {118, 771}}, - {2, {86, 803}}, {2, {118, 803}}, {2, {87, 768}}, {2, {119, 768}}, {2, {87, 769}}, {2, {119, 769}}, {2, {87, 776}}, - {2, {119, 776}}, {2, {87, 775}}, {2, {119, 775}}, {2, {87, 803}}, {2, {119, 803}}, {2, {88, 775}}, {2, {120, 775}}, - {2, {88, 776}}, {2, {120, 776}}, {2, {89, 775}}, {2, {121, 775}}, {2, {90, 770}}, {2, {122, 770}}, {2, {90, 803}}, - {2, {122, 803}}, {2, {90, 817}}, {2, {122, 817}}, {2, {104, 817}}, {2, {116, 776}}, {2, {119, 778}}, {2, {121, 778}}, - {2, {383, 775}}, {2, {65, 803}}, {2, {97, 803}}, {2, {65, 777}}, {2, {97, 777}}, {3, {65, 770, 769}}, - {3, {97, 770, 769}}, {3, {65, 770, 768}}, {3, {97, 770, 768}}, {3, {65, 770, 777}}, {3, {97, 770, 777}}, - {3, {65, 770, 771}}, {3, {97, 770, 771}}, {3, {65, 803, 770}}, {3, {97, 803, 770}}, {3, {65, 774, 769}}, - {3, {97, 774, 769}}, {3, {65, 774, 768}}, {3, {97, 774, 768}}, {3, {65, 774, 777}}, {3, {97, 774, 777}}, - {3, {65, 774, 771}}, {3, {97, 774, 771}}, {3, {65, 803, 774}}, {3, {97, 803, 774}}, {2, {69, 803}}, {2, {101, 803}}, - {2, {69, 777}}, {2, {101, 777}}, {2, {69, 771}}, {2, {101, 771}}, {3, {69, 770, 769}}, {3, {101, 770, 769}}, - {3, {69, 770, 768}}, {3, {101, 770, 768}}, {3, {69, 770, 777}}, {3, {101, 770, 777}}, {3, {69, 770, 771}}, - {3, {101, 770, 771}}, {3, {69, 803, 770}}, {3, {101, 803, 770}}, {2, {73, 777}}, {2, {105, 777}}, {2, {73, 803}}, - {2, {105, 803}}, {2, {79, 803}}, {2, {111, 803}}, {2, {79, 777}}, {2, {111, 777}}, {3, {79, 770, 769}}, - {3, {111, 770, 769}}, {3, {79, 770, 768}}, {3, {111, 770, 768}}, {3, {79, 770, 777}}, {3, {111, 770, 777}}, - {3, {79, 770, 771}}, {3, {111, 770, 771}}, {3, {79, 803, 770}}, {3, {111, 803, 770}}, {3, {79, 795, 769}}, - {3, {111, 795, 769}}, {3, {79, 795, 768}}, {3, {111, 795, 768}}, {3, {79, 795, 777}}, {3, {111, 795, 777}}, - {3, {79, 795, 771}}, {3, {111, 795, 771}}, {3, {79, 795, 803}}, {3, {111, 795, 803}}, {2, {85, 803}}, {2, {117, 803}}, - {2, {85, 777}}, {2, {117, 777}}, {3, {85, 795, 769}}, {3, {117, 795, 769}}, {3, {85, 795, 768}}, {3, {117, 795, 768}}, - {3, {85, 795, 777}}, {3, {117, 795, 777}}, {3, {85, 795, 771}}, {3, {117, 795, 771}}, {3, {85, 795, 803}}, - {3, {117, 795, 803}}, {2, {89, 768}}, {2, {121, 768}}, {2, {89, 803}}, {2, {121, 803}}, {2, {89, 777}}, - {2, {121, 777}}, {2, {89, 771}}, {2, {121, 771}}, {2, {945, 787}}, {2, {945, 788}}, {3, {945, 787, 768}}, - {3, {945, 788, 768}}, {3, {945, 787, 769}}, {3, {945, 788, 769}}, {3, {945, 787, 834}}, {3, {945, 788, 834}}, - {2, {913, 787}}, {2, {913, 788}}, {3, {913, 787, 768}}, {3, {913, 788, 768}}, {3, {913, 787, 769}}, - {3, {913, 788, 769}}, {3, {913, 787, 834}}, {3, {913, 788, 834}}, {2, {949, 787}}, {2, {949, 788}}, - {3, {949, 787, 768}}, {3, {949, 788, 768}}, {3, {949, 787, 769}}, {3, {949, 788, 769}}, {2, {917, 787}}, - {2, {917, 788}}, {3, {917, 787, 768}}, {3, {917, 788, 768}}, {3, {917, 787, 769}}, {3, {917, 788, 769}}, - {2, {951, 787}}, {2, {951, 788}}, {3, {951, 787, 768}}, {3, {951, 788, 768}}, {3, {951, 787, 769}}, - {3, {951, 788, 769}}, {3, {951, 787, 834}}, {3, {951, 788, 834}}, {2, {919, 787}}, {2, {919, 788}}, - {3, {919, 787, 768}}, {3, {919, 788, 768}}, {3, {919, 787, 769}}, {3, {919, 788, 769}}, {3, {919, 787, 834}}, - {3, {919, 788, 834}}, {2, {953, 787}}, {2, {953, 788}}, {3, {953, 787, 768}}, {3, {953, 788, 768}}, - {3, {953, 787, 769}}, {3, {953, 788, 769}}, {3, {953, 787, 834}}, {3, {953, 788, 834}}, {2, {921, 787}}, - {2, {921, 788}}, {3, {921, 787, 768}}, {3, {921, 788, 768}}, {3, {921, 787, 769}}, {3, {921, 788, 769}}, - {3, {921, 787, 834}}, {3, {921, 788, 834}}, {2, {959, 787}}, {2, {959, 788}}, {3, {959, 787, 768}}, - {3, {959, 788, 768}}, {3, {959, 787, 769}}, {3, {959, 788, 769}}, {2, {927, 787}}, {2, {927, 788}}, - {3, {927, 787, 768}}, {3, {927, 788, 768}}, {3, {927, 787, 769}}, {3, {927, 788, 769}}, {2, {965, 787}}, - {2, {965, 788}}, {3, {965, 787, 768}}, {3, {965, 788, 768}}, {3, {965, 787, 769}}, {3, {965, 788, 769}}, - {3, {965, 787, 834}}, {3, {965, 788, 834}}, {2, {933, 788}}, {3, {933, 788, 768}}, {3, {933, 788, 769}}, - {3, {933, 788, 834}}, {2, {969, 787}}, {2, {969, 788}}, {3, {969, 787, 768}}, {3, {969, 788, 768}}, - {3, {969, 787, 769}}, {3, {969, 788, 769}}, {3, {969, 787, 834}}, {3, {969, 788, 834}}, {2, {937, 787}}, - {2, {937, 788}}, {3, {937, 787, 768}}, {3, {937, 788, 768}}, {3, {937, 787, 769}}, {3, {937, 788, 769}}, - {3, {937, 787, 834}}, {3, {937, 788, 834}}, {2, {945, 768}}, {2, {945, 769}}, {2, {949, 768}}, {2, {949, 769}}, - {2, {951, 768}}, {2, {951, 769}}, {2, {953, 768}}, {2, {953, 769}}, {2, {959, 768}}, {2, {959, 769}}, {2, {965, 768}}, - {2, {965, 769}}, {2, {969, 768}}, {2, {969, 769}}, {3, {945, 787, 837}}, {3, {945, 788, 837}}, - {4, {945, 787, 768, 837}}, {4, {945, 788, 768, 837}}, {4, {945, 787, 769, 837}}, {4, {945, 788, 769, 837}}, - {4, {945, 787, 834, 837}}, {4, {945, 788, 834, 837}}, {3, {913, 787, 837}}, {3, {913, 788, 837}}, - {4, {913, 787, 768, 837}}, {4, {913, 788, 768, 837}}, {4, {913, 787, 769, 837}}, {4, {913, 788, 769, 837}}, - {4, {913, 787, 834, 837}}, {4, {913, 788, 834, 837}}, {3, {951, 787, 837}}, {3, {951, 788, 837}}, - {4, {951, 787, 768, 837}}, {4, {951, 788, 768, 837}}, {4, {951, 787, 769, 837}}, {4, {951, 788, 769, 837}}, - {4, {951, 787, 834, 837}}, {4, {951, 788, 834, 837}}, {3, {919, 787, 837}}, {3, {919, 788, 837}}, - {4, {919, 787, 768, 837}}, {4, {919, 788, 768, 837}}, {4, {919, 787, 769, 837}}, {4, {919, 788, 769, 837}}, - {4, {919, 787, 834, 837}}, {4, {919, 788, 834, 837}}, {3, {969, 787, 837}}, {3, {969, 788, 837}}, - {4, {969, 787, 768, 837}}, {4, {969, 788, 768, 837}}, {4, {969, 787, 769, 837}}, {4, {969, 788, 769, 837}}, - {4, {969, 787, 834, 837}}, {4, {969, 788, 834, 837}}, {3, {937, 787, 837}}, {3, {937, 788, 837}}, - {4, {937, 787, 768, 837}}, {4, {937, 788, 768, 837}}, {4, {937, 787, 769, 837}}, {4, {937, 788, 769, 837}}, - {4, {937, 787, 834, 837}}, {4, {937, 788, 834, 837}}, {2, {945, 774}}, {2, {945, 772}}, {3, {945, 768, 837}}, - {2, {945, 837}}, {3, {945, 769, 837}}, {2, {945, 834}}, {3, {945, 834, 837}}, {2, {913, 774}}, {2, {913, 772}}, - {2, {913, 768}}, {2, {913, 769}}, {2, {913, 837}}, {1, {953}}, {2, {168, 834}}, {3, {951, 768, 837}}, {2, {951, 837}}, - {3, {951, 769, 837}}, {2, {951, 834}}, {3, {951, 834, 837}}, {2, {917, 768}}, {2, {917, 769}}, {2, {919, 768}}, - {2, {919, 769}}, {2, {919, 837}}, {2, {8127, 768}}, {2, {8127, 769}}, {2, {8127, 834}}, {2, {953, 774}}, - {2, {953, 772}}, {3, {953, 776, 768}}, {3, {953, 776, 769}}, {2, {953, 834}}, {3, {953, 776, 834}}, {2, {921, 774}}, - {2, {921, 772}}, {2, {921, 768}}, {2, {921, 769}}, {2, {8190, 768}}, {2, {8190, 769}}, {2, {8190, 834}}, - {2, {965, 774}}, {2, {965, 772}}, {3, {965, 776, 768}}, {3, {965, 776, 769}}, {2, {961, 787}}, {2, {961, 788}}, - {2, {965, 834}}, {3, {965, 776, 834}}, {2, {933, 774}}, {2, {933, 772}}, {2, {933, 768}}, {2, {933, 769}}, - {2, {929, 788}}, {2, {168, 768}}, {2, {168, 769}}, {1, {96}}, {3, {969, 768, 837}}, {2, {969, 837}}, - {3, {969, 769, 837}}, {2, {969, 834}}, {3, {969, 834, 837}}, {2, {927, 768}}, {2, {927, 769}}, {2, {937, 768}}, - {2, {937, 769}}, {2, {937, 837}}, {1, {180}}, {1, {8194}}, {1, {8195}}, {1, {937}}, {1, {75}}, {2, {65, 778}}, - {2, {8592, 824}}, {2, {8594, 824}}, {2, {8596, 824}}, {2, {8656, 824}}, {2, {8660, 824}}, {2, {8658, 824}}, - {2, {8707, 824}}, {2, {8712, 824}}, {2, {8715, 824}}, {2, {8739, 824}}, {2, {8741, 824}}, {2, {8764, 824}}, - {2, {8771, 824}}, {2, {8773, 824}}, {2, {8776, 824}}, {2, {61, 824}}, {2, {8801, 824}}, {2, {8781, 824}}, - {2, {60, 824}}, {2, {62, 824}}, {2, {8804, 824}}, {2, {8805, 824}}, {2, {8818, 824}}, {2, {8819, 824}}, - {2, {8822, 824}}, {2, {8823, 824}}, {2, {8826, 824}}, {2, {8827, 824}}, {2, {8834, 824}}, {2, {8835, 824}}, - {2, {8838, 824}}, {2, {8839, 824}}, {2, {8866, 824}}, {2, {8872, 824}}, {2, {8873, 824}}, {2, {8875, 824}}, - {2, {8828, 824}}, {2, {8829, 824}}, {2, {8849, 824}}, {2, {8850, 824}}, {2, {8882, 824}}, {2, {8883, 824}}, - {2, {8884, 824}}, {2, {8885, 824}}, {1, {12296}}, {1, {12297}}, {2, {10973, 824}}, {2, {12363, 12441}}, - {2, {12365, 12441}}, {2, {12367, 12441}}, {2, {12369, 12441}}, {2, {12371, 12441}}, {2, {12373, 12441}}, - {2, {12375, 12441}}, {2, {12377, 12441}}, {2, {12379, 12441}}, {2, {12381, 12441}}, {2, {12383, 12441}}, - {2, {12385, 12441}}, {2, {12388, 12441}}, {2, {12390, 12441}}, {2, {12392, 12441}}, {2, {12399, 12441}}, - {2, {12399, 12442}}, {2, {12402, 12441}}, {2, {12402, 12442}}, {2, {12405, 12441}}, {2, {12405, 12442}}, - {2, {12408, 12441}}, {2, {12408, 12442}}, {2, {12411, 12441}}, {2, {12411, 12442}}, {2, {12358, 12441}}, - {2, {12445, 12441}}, {2, {12459, 12441}}, {2, {12461, 12441}}, {2, {12463, 12441}}, {2, {12465, 12441}}, - {2, {12467, 12441}}, {2, {12469, 12441}}, {2, {12471, 12441}}, {2, {12473, 12441}}, {2, {12475, 12441}}, - {2, {12477, 12441}}, {2, {12479, 12441}}, {2, {12481, 12441}}, {2, {12484, 12441}}, {2, {12486, 12441}}, - {2, {12488, 12441}}, {2, {12495, 12441}}, {2, {12495, 12442}}, {2, {12498, 12441}}, {2, {12498, 12442}}, - {2, {12501, 12441}}, {2, {12501, 12442}}, {2, {12504, 12441}}, {2, {12504, 12442}}, {2, {12507, 12441}}, - {2, {12507, 12442}}, {2, {12454, 12441}}, {2, {12527, 12441}}, {2, {12528, 12441}}, {2, {12529, 12441}}, - {2, {12530, 12441}}, {2, {12541, 12441}}, {1, {35912}}, {1, {26356}}, {1, {36554}}, {1, {36040}}, {1, {28369}}, - {1, {20018}}, {1, {21477}}, {1, {40860}}, {1, {40860}}, {1, {22865}}, {1, {37329}}, {1, {21895}}, {1, {22856}}, - {1, {25078}}, {1, {30313}}, {1, {32645}}, {1, {34367}}, {1, {34746}}, {1, {35064}}, {1, {37007}}, {1, {27138}}, - {1, {27931}}, {1, {28889}}, {1, {29662}}, {1, {33853}}, {1, {37226}}, {1, {39409}}, {1, {20098}}, {1, {21365}}, - {1, {27396}}, {1, {29211}}, {1, {34349}}, {1, {40478}}, {1, {23888}}, {1, {28651}}, {1, {34253}}, {1, {35172}}, - {1, {25289}}, {1, {33240}}, {1, {34847}}, {1, {24266}}, {1, {26391}}, {1, {28010}}, {1, {29436}}, {1, {37070}}, - {1, {20358}}, {1, {20919}}, {1, {21214}}, {1, {25796}}, {1, {27347}}, {1, {29200}}, {1, {30439}}, {1, {32769}}, - {1, {34310}}, {1, {34396}}, {1, {36335}}, {1, {38706}}, {1, {39791}}, {1, {40442}}, {1, {30860}}, {1, {31103}}, - {1, {32160}}, {1, {33737}}, {1, {37636}}, {1, {40575}}, {1, {35542}}, {1, {22751}}, {1, {24324}}, {1, {31840}}, - {1, {32894}}, {1, {29282}}, {1, {30922}}, {1, {36034}}, {1, {38647}}, {1, {22744}}, {1, {23650}}, {1, {27155}}, - {1, {28122}}, {1, {28431}}, {1, {32047}}, {1, {32311}}, {1, {38475}}, {1, {21202}}, {1, {32907}}, {1, {20956}}, - {1, {20940}}, {1, {31260}}, {1, {32190}}, {1, {33777}}, {1, {38517}}, {1, {35712}}, {1, {25295}}, {1, {27138}}, - {1, {35582}}, {1, {20025}}, {1, {23527}}, {1, {24594}}, {1, {29575}}, {1, {30064}}, {1, {21271}}, {1, {30971}}, - {1, {20415}}, {1, {24489}}, {1, {19981}}, {1, {27852}}, {1, {25976}}, {1, {32034}}, {1, {21443}}, {1, {22622}}, - {1, {30465}}, {1, {33865}}, {1, {35498}}, {1, {27578}}, {1, {36784}}, {1, {27784}}, {1, {25342}}, {1, {33509}}, - {1, {25504}}, {1, {30053}}, {1, {20142}}, {1, {20841}}, {1, {20937}}, {1, {26753}}, {1, {31975}}, {1, {33391}}, - {1, {35538}}, {1, {37327}}, {1, {21237}}, {1, {21570}}, {1, {22899}}, {1, {24300}}, {1, {26053}}, {1, {28670}}, - {1, {31018}}, {1, {38317}}, {1, {39530}}, {1, {40599}}, {1, {40654}}, {1, {21147}}, {1, {26310}}, {1, {27511}}, - {1, {36706}}, {1, {24180}}, {1, {24976}}, {1, {25088}}, {1, {25754}}, {1, {28451}}, {1, {29001}}, {1, {29833}}, - {1, {31178}}, {1, {32244}}, {1, {32879}}, {1, {36646}}, {1, {34030}}, {1, {36899}}, {1, {37706}}, {1, {21015}}, - {1, {21155}}, {1, {21693}}, {1, {28872}}, {1, {35010}}, {1, {35498}}, {1, {24265}}, {1, {24565}}, {1, {25467}}, - {1, {27566}}, {1, {31806}}, {1, {29557}}, {1, {20196}}, {1, {22265}}, {1, {23527}}, {1, {23994}}, {1, {24604}}, - {1, {29618}}, {1, {29801}}, {1, {32666}}, {1, {32838}}, {1, {37428}}, {1, {38646}}, {1, {38728}}, {1, {38936}}, - {1, {20363}}, {1, {31150}}, {1, {37300}}, {1, {38584}}, {1, {24801}}, {1, {20102}}, {1, {20698}}, {1, {23534}}, - {1, {23615}}, {1, {26009}}, {1, {27138}}, {1, {29134}}, {1, {30274}}, {1, {34044}}, {1, {36988}}, {1, {40845}}, - {1, {26248}}, {1, {38446}}, {1, {21129}}, {1, {26491}}, {1, {26611}}, {1, {27969}}, {1, {28316}}, {1, {29705}}, - {1, {30041}}, {1, {30827}}, {1, {32016}}, {1, {39006}}, {1, {20845}}, {1, {25134}}, {1, {38520}}, {1, {20523}}, - {1, {23833}}, {1, {28138}}, {1, {36650}}, {1, {24459}}, {1, {24900}}, {1, {26647}}, {1, {29575}}, {1, {38534}}, - {1, {21033}}, {1, {21519}}, {1, {23653}}, {1, {26131}}, {1, {26446}}, {1, {26792}}, {1, {27877}}, {1, {29702}}, - {1, {30178}}, {1, {32633}}, {1, {35023}}, {1, {35041}}, {1, {37324}}, {1, {38626}}, {1, {21311}}, {1, {28346}}, - {1, {21533}}, {1, {29136}}, {1, {29848}}, {1, {34298}}, {1, {38563}}, {1, {40023}}, {1, {40607}}, {1, {26519}}, - {1, {28107}}, {1, {33256}}, {1, {31435}}, {1, {31520}}, {1, {31890}}, {1, {29376}}, {1, {28825}}, {1, {35672}}, - {1, {20160}}, {1, {33590}}, {1, {21050}}, {1, {20999}}, {1, {24230}}, {1, {25299}}, {1, {31958}}, {1, {23429}}, - {1, {27934}}, {1, {26292}}, {1, {36667}}, {1, {34892}}, {1, {38477}}, {1, {35211}}, {1, {24275}}, {1, {20800}}, - {1, {21952}}, {1, {22618}}, {1, {26228}}, {1, {20958}}, {1, {29482}}, {1, {30410}}, {1, {31036}}, {1, {31070}}, - {1, {31077}}, {1, {31119}}, {1, {38742}}, {1, {31934}}, {1, {32701}}, {1, {34322}}, {1, {35576}}, {1, {36920}}, - {1, {37117}}, {1, {39151}}, {1, {39164}}, {1, {39208}}, {1, {40372}}, {1, {20398}}, {1, {20711}}, {1, {20813}}, - {1, {21193}}, {1, {21220}}, {1, {21329}}, {1, {21917}}, {1, {22022}}, {1, {22120}}, {1, {22592}}, {1, {22696}}, - {1, {23652}}, {1, {23662}}, {1, {24724}}, {1, {24936}}, {1, {24974}}, {1, {25074}}, {1, {25935}}, {1, {26082}}, - {1, {26257}}, {1, {26757}}, {1, {28023}}, {1, {28186}}, {1, {28450}}, {1, {29038}}, {1, {29227}}, {1, {29730}}, - {1, {30865}}, {1, {31038}}, {1, {31049}}, {1, {31048}}, {1, {31056}}, {1, {31062}}, {1, {31069}}, {1, {31117}}, - {1, {31118}}, {1, {31296}}, {1, {31361}}, {1, {31680}}, {1, {32244}}, {1, {32265}}, {1, {32321}}, {1, {32626}}, - {1, {32773}}, {1, {33261}}, {1, {33401}}, {1, {33401}}, {1, {33879}}, {1, {35088}}, {1, {35222}}, {1, {35585}}, - {1, {35641}}, {1, {36051}}, {1, {36104}}, {1, {36790}}, {1, {36920}}, {1, {38627}}, {1, {38911}}, {1, {38971}}, - {1, {20006}}, {1, {20917}}, {1, {20840}}, {1, {20352}}, {1, {20805}}, {1, {20864}}, {1, {21191}}, {1, {21242}}, - {1, {21917}}, {1, {21845}}, {1, {21913}}, {1, {21986}}, {1, {22618}}, {1, {22707}}, {1, {22852}}, {1, {22868}}, - {1, {23138}}, {1, {23336}}, {1, {24274}}, {1, {24281}}, {1, {24425}}, {1, {24493}}, {1, {24792}}, {1, {24910}}, - {1, {24840}}, {1, {24974}}, {1, {24928}}, {1, {25074}}, {1, {25140}}, {1, {25540}}, {1, {25628}}, {1, {25682}}, - {1, {25942}}, {1, {26228}}, {1, {26391}}, {1, {26395}}, {1, {26454}}, {1, {27513}}, {1, {27578}}, {1, {27969}}, - {1, {28379}}, {1, {28363}}, {1, {28450}}, {1, {28702}}, {1, {29038}}, {1, {30631}}, {1, {29237}}, {1, {29359}}, - {1, {29482}}, {1, {29809}}, {1, {29958}}, {1, {30011}}, {1, {30237}}, {1, {30239}}, {1, {30410}}, {1, {30427}}, - {1, {30452}}, {1, {30538}}, {1, {30528}}, {1, {30924}}, {1, {31409}}, {1, {31680}}, {1, {31867}}, {1, {32091}}, - {1, {32244}}, {1, {32574}}, {1, {32773}}, {1, {33618}}, {1, {33775}}, {1, {34681}}, {1, {35137}}, {1, {35206}}, - {1, {35222}}, {1, {35519}}, {1, {35576}}, {1, {35531}}, {1, {35585}}, {1, {35582}}, {1, {35565}}, {1, {35641}}, - {1, {35722}}, {1, {36104}}, {1, {36664}}, {1, {36978}}, {1, {37273}}, {1, {37494}}, {1, {38524}}, {1, {38627}}, - {1, {38742}}, {1, {38875}}, {1, {38911}}, {1, {38923}}, {1, {38971}}, {1, {39698}}, {1, {40860}}, {1, {141386}}, - {1, {141380}}, {1, {144341}}, {1, {15261}}, {1, {16408}}, {1, {16441}}, {1, {152137}}, {1, {154832}}, {1, {163539}}, - {1, {40771}}, {1, {40846}}, {2, {1497, 1460}}, {2, {1522, 1463}}, {2, {1513, 1473}}, {2, {1513, 1474}}, - {3, {1513, 1468, 1473}}, {3, {1513, 1468, 1474}}, {2, {1488, 1463}}, {2, {1488, 1464}}, {2, {1488, 1468}}, - {2, {1489, 1468}}, {2, {1490, 1468}}, {2, {1491, 1468}}, {2, {1492, 1468}}, {2, {1493, 1468}}, {2, {1494, 1468}}, - {2, {1496, 1468}}, {2, {1497, 1468}}, {2, {1498, 1468}}, {2, {1499, 1468}}, {2, {1500, 1468}}, {2, {1502, 1468}}, - {2, {1504, 1468}}, {2, {1505, 1468}}, {2, {1507, 1468}}, {2, {1508, 1468}}, {2, {1510, 1468}}, {2, {1511, 1468}}, - {2, {1512, 1468}}, {2, {1513, 1468}}, {2, {1514, 1468}}, {2, {1493, 1465}}, {2, {1489, 1471}}, {2, {1499, 1471}}, - {2, {1508, 1471}}, {2, {119127, 119141}}, {2, {119128, 119141}}, {3, {119128, 119141, 119150}}, - {3, {119128, 119141, 119151}}, {3, {119128, 119141, 119152}}, {3, {119128, 119141, 119153}}, - {3, {119128, 119141, 119154}}, {2, {119225, 119141}}, {2, {119226, 119141}}, {3, {119225, 119141, 119150}}, - {3, {119226, 119141, 119150}}, {3, {119225, 119141, 119151}}, {3, {119226, 119141, 119151}}, {1, {20029}}, - {1, {20024}}, {1, {20033}}, {1, {131362}}, {1, {20320}}, {1, {20398}}, {1, {20411}}, {1, {20482}}, {1, {20602}}, - {1, {20633}}, {1, {20711}}, {1, {20687}}, {1, {13470}}, {1, {132666}}, {1, {20813}}, {1, {20820}}, {1, {20836}}, - {1, {20855}}, {1, {132380}}, {1, {13497}}, {1, {20839}}, {1, {20877}}, {1, {132427}}, {1, {20887}}, {1, {20900}}, - {1, {20172}}, {1, {20908}}, {1, {20917}}, {1, {168415}}, {1, {20981}}, {1, {20995}}, {1, {13535}}, {1, {21051}}, - {1, {21062}}, {1, {21106}}, {1, {21111}}, {1, {13589}}, {1, {21191}}, {1, {21193}}, {1, {21220}}, {1, {21242}}, - {1, {21253}}, {1, {21254}}, {1, {21271}}, {1, {21321}}, {1, {21329}}, {1, {21338}}, {1, {21363}}, {1, {21373}}, - {1, {21375}}, {1, {21375}}, {1, {21375}}, {1, {133676}}, {1, {28784}}, {1, {21450}}, {1, {21471}}, {1, {133987}}, - {1, {21483}}, {1, {21489}}, {1, {21510}}, {1, {21662}}, {1, {21560}}, {1, {21576}}, {1, {21608}}, {1, {21666}}, - {1, {21750}}, {1, {21776}}, {1, {21843}}, {1, {21859}}, {1, {21892}}, {1, {21892}}, {1, {21913}}, {1, {21931}}, - {1, {21939}}, {1, {21954}}, {1, {22294}}, {1, {22022}}, {1, {22295}}, {1, {22097}}, {1, {22132}}, {1, {20999}}, - {1, {22766}}, {1, {22478}}, {1, {22516}}, {1, {22541}}, {1, {22411}}, {1, {22578}}, {1, {22577}}, {1, {22700}}, - {1, {136420}}, {1, {22770}}, {1, {22775}}, {1, {22790}}, {1, {22810}}, {1, {22818}}, {1, {22882}}, {1, {136872}}, - {1, {136938}}, {1, {23020}}, {1, {23067}}, {1, {23079}}, {1, {23000}}, {1, {23142}}, {1, {14062}}, {1, {14076}}, - {1, {23304}}, {1, {23358}}, {1, {23358}}, {1, {137672}}, {1, {23491}}, {1, {23512}}, {1, {23527}}, {1, {23539}}, - {1, {138008}}, {1, {23551}}, {1, {23558}}, {1, {24403}}, {1, {23586}}, {1, {14209}}, {1, {23648}}, {1, {23662}}, - {1, {23744}}, {1, {23693}}, {1, {138724}}, {1, {23875}}, {1, {138726}}, {1, {23918}}, {1, {23915}}, {1, {23932}}, - {1, {24033}}, {1, {24034}}, {1, {14383}}, {1, {24061}}, {1, {24104}}, {1, {24125}}, {1, {24169}}, {1, {14434}}, - {1, {139651}}, {1, {14460}}, {1, {24240}}, {1, {24243}}, {1, {24246}}, {1, {24266}}, {1, {172946}}, {1, {24318}}, - {1, {140081}}, {1, {140081}}, {1, {33281}}, {1, {24354}}, {1, {24354}}, {1, {14535}}, {1, {144056}}, {1, {156122}}, - {1, {24418}}, {1, {24427}}, {1, {14563}}, {1, {24474}}, {1, {24525}}, {1, {24535}}, {1, {24569}}, {1, {24705}}, - {1, {14650}}, {1, {14620}}, {1, {24724}}, {1, {141012}}, {1, {24775}}, {1, {24904}}, {1, {24908}}, {1, {24910}}, - {1, {24908}}, {1, {24954}}, {1, {24974}}, {1, {25010}}, {1, {24996}}, {1, {25007}}, {1, {25054}}, {1, {25074}}, - {1, {25078}}, {1, {25104}}, {1, {25115}}, {1, {25181}}, {1, {25265}}, {1, {25300}}, {1, {25424}}, {1, {142092}}, - {1, {25405}}, {1, {25340}}, {1, {25448}}, {1, {25475}}, {1, {25572}}, {1, {142321}}, {1, {25634}}, {1, {25541}}, - {1, {25513}}, {1, {14894}}, {1, {25705}}, {1, {25726}}, {1, {25757}}, {1, {25719}}, {1, {14956}}, {1, {25935}}, - {1, {25964}}, {1, {143370}}, {1, {26083}}, {1, {26360}}, {1, {26185}}, {1, {15129}}, {1, {26257}}, {1, {15112}}, - {1, {15076}}, {1, {20882}}, {1, {20885}}, {1, {26368}}, {1, {26268}}, {1, {32941}}, {1, {17369}}, {1, {26391}}, - {1, {26395}}, {1, {26401}}, {1, {26462}}, {1, {26451}}, {1, {144323}}, {1, {15177}}, {1, {26618}}, {1, {26501}}, - {1, {26706}}, {1, {26757}}, {1, {144493}}, {1, {26766}}, {1, {26655}}, {1, {26900}}, {1, {15261}}, {1, {26946}}, - {1, {27043}}, {1, {27114}}, {1, {27304}}, {1, {145059}}, {1, {27355}}, {1, {15384}}, {1, {27425}}, {1, {145575}}, - {1, {27476}}, {1, {15438}}, {1, {27506}}, {1, {27551}}, {1, {27578}}, {1, {27579}}, {1, {146061}}, {1, {138507}}, - {1, {146170}}, {1, {27726}}, {1, {146620}}, {1, {27839}}, {1, {27853}}, {1, {27751}}, {1, {27926}}, {1, {27966}}, - {1, {28023}}, {1, {27969}}, {1, {28009}}, {1, {28024}}, {1, {28037}}, {1, {146718}}, {1, {27956}}, {1, {28207}}, - {1, {28270}}, {1, {15667}}, {1, {28363}}, {1, {28359}}, {1, {147153}}, {1, {28153}}, {1, {28526}}, {1, {147294}}, - {1, {147342}}, {1, {28614}}, {1, {28729}}, {1, {28702}}, {1, {28699}}, {1, {15766}}, {1, {28746}}, {1, {28797}}, - {1, {28791}}, {1, {28845}}, {1, {132389}}, {1, {28997}}, {1, {148067}}, {1, {29084}}, {1, {148395}}, {1, {29224}}, - {1, {29237}}, {1, {29264}}, {1, {149000}}, {1, {29312}}, {1, {29333}}, {1, {149301}}, {1, {149524}}, {1, {29562}}, - {1, {29579}}, {1, {16044}}, {1, {29605}}, {1, {16056}}, {1, {16056}}, {1, {29767}}, {1, {29788}}, {1, {29809}}, - {1, {29829}}, {1, {29898}}, {1, {16155}}, {1, {29988}}, {1, {150582}}, {1, {30014}}, {1, {150674}}, {1, {30064}}, - {1, {139679}}, {1, {30224}}, {1, {151457}}, {1, {151480}}, {1, {151620}}, {1, {16380}}, {1, {16392}}, {1, {30452}}, - {1, {151795}}, {1, {151794}}, {1, {151833}}, {1, {151859}}, {1, {30494}}, {1, {30495}}, {1, {30495}}, {1, {30538}}, - {1, {16441}}, {1, {30603}}, {1, {16454}}, {1, {16534}}, {1, {152605}}, {1, {30798}}, {1, {30860}}, {1, {30924}}, - {1, {16611}}, {1, {153126}}, {1, {31062}}, {1, {153242}}, {1, {153285}}, {1, {31119}}, {1, {31211}}, {1, {16687}}, - {1, {31296}}, {1, {31306}}, {1, {31311}}, {1, {153980}}, {1, {154279}}, {1, {154279}}, {1, {31470}}, {1, {16898}}, - {1, {154539}}, {1, {31686}}, {1, {31689}}, {1, {16935}}, {1, {154752}}, {1, {31954}}, {1, {17056}}, {1, {31976}}, - {1, {31971}}, {1, {32000}}, {1, {155526}}, {1, {32099}}, {1, {17153}}, {1, {32199}}, {1, {32258}}, {1, {32325}}, - {1, {17204}}, {1, {156200}}, {1, {156231}}, {1, {17241}}, {1, {156377}}, {1, {32634}}, {1, {156478}}, {1, {32661}}, - {1, {32762}}, {1, {32773}}, {1, {156890}}, {1, {156963}}, {1, {32864}}, {1, {157096}}, {1, {32880}}, {1, {144223}}, - {1, {17365}}, {1, {32946}}, {1, {33027}}, {1, {17419}}, {1, {33086}}, {1, {23221}}, {1, {157607}}, {1, {157621}}, - {1, {144275}}, {1, {144284}}, {1, {33281}}, {1, {33284}}, {1, {36766}}, {1, {17515}}, {1, {33425}}, {1, {33419}}, - {1, {33437}}, {1, {21171}}, {1, {33457}}, {1, {33459}}, {1, {33469}}, {1, {33510}}, {1, {158524}}, {1, {33509}}, - {1, {33565}}, {1, {33635}}, {1, {33709}}, {1, {33571}}, {1, {33725}}, {1, {33767}}, {1, {33879}}, {1, {33619}}, - {1, {33738}}, {1, {33740}}, {1, {33756}}, {1, {158774}}, {1, {159083}}, {1, {158933}}, {1, {17707}}, {1, {34033}}, - {1, {34035}}, {1, {34070}}, {1, {160714}}, {1, {34148}}, {1, {159532}}, {1, {17757}}, {1, {17761}}, {1, {159665}}, - {1, {159954}}, {1, {17771}}, {1, {34384}}, {1, {34396}}, {1, {34407}}, {1, {34409}}, {1, {34473}}, {1, {34440}}, - {1, {34574}}, {1, {34530}}, {1, {34681}}, {1, {34600}}, {1, {34667}}, {1, {34694}}, {1, {17879}}, {1, {34785}}, - {1, {34817}}, {1, {17913}}, {1, {34912}}, {1, {34915}}, {1, {161383}}, {1, {35031}}, {1, {35038}}, {1, {17973}}, - {1, {35066}}, {1, {13499}}, {1, {161966}}, {1, {162150}}, {1, {18110}}, {1, {18119}}, {1, {35488}}, {1, {35565}}, - {1, {35722}}, {1, {35925}}, {1, {162984}}, {1, {36011}}, {1, {36033}}, {1, {36123}}, {1, {36215}}, {1, {163631}}, - {1, {133124}}, {1, {36299}}, {1, {36284}}, {1, {36336}}, {1, {133342}}, {1, {36564}}, {1, {36664}}, {1, {165330}}, - {1, {165357}}, {1, {37012}}, {1, {37105}}, {1, {37137}}, {1, {165678}}, {1, {37147}}, {1, {37432}}, {1, {37591}}, - {1, {37592}}, {1, {37500}}, {1, {37881}}, {1, {37909}}, {1, {166906}}, {1, {38283}}, {1, {18837}}, {1, {38327}}, - {1, {167287}}, {1, {18918}}, {1, {38595}}, {1, {23986}}, {1, {38691}}, {1, {168261}}, {1, {168474}}, {1, {19054}}, - {1, {19062}}, {1, {38880}}, {1, {168970}}, {1, {19122}}, {1, {169110}}, {1, {38923}}, {1, {38923}}, {1, {38953}}, - {1, {169398}}, {1, {39138}}, {1, {19251}}, {1, {39209}}, {1, {39335}}, {1, {39362}}, {1, {39422}}, {1, {19406}}, - {1, {170800}}, {1, {39698}}, {1, {40000}}, {1, {40189}}, {1, {19662}}, {1, {19693}}, {1, {40295}}, {1, {172238}}, - {1, {19704}}, {1, {172293}}, {1, {172558}}, {1, {172689}}, {1, {40635}}, {1, {19798}}, {1, {40697}}, {1, {40702}}, - {1, {40709}}, {1, {40719}}, {1, {40726}}, {1, {40763}}, {1, {173568}}, + {{65, 768}, 2}, {{65, 769}, 2}, {{65, 770}, 2}, {{65, 771}, 2}, {{65, 776}, 2}, {{65, 778}, 2}, {{67, 807}, 2}, + {{69, 768}, 2}, {{69, 769}, 2}, {{69, 770}, 2}, {{69, 776}, 2}, {{73, 768}, 2}, {{73, 769}, 2}, {{73, 770}, 2}, + {{73, 776}, 2}, {{78, 771}, 2}, {{79, 768}, 2}, {{79, 769}, 2}, {{79, 770}, 2}, {{79, 771}, 2}, {{79, 776}, 2}, + {{85, 768}, 2}, {{85, 769}, 2}, {{85, 770}, 2}, {{85, 776}, 2}, {{89, 769}, 2}, {{97, 768}, 2}, {{97, 769}, 2}, + {{97, 770}, 2}, {{97, 771}, 2}, {{97, 776}, 2}, {{97, 778}, 2}, {{99, 807}, 2}, {{101, 768}, 2}, {{101, 769}, 2}, + {{101, 770}, 2}, {{101, 776}, 2}, {{105, 768}, 2}, {{105, 769}, 2}, {{105, 770}, 2}, {{105, 776}, 2}, {{110, 771}, 2}, + {{111, 768}, 2}, {{111, 769}, 2}, {{111, 770}, 2}, {{111, 771}, 2}, {{111, 776}, 2}, {{117, 768}, 2}, {{117, 769}, 2}, + {{117, 770}, 2}, {{117, 776}, 2}, {{121, 769}, 2}, {{121, 776}, 2}, {{65, 772}, 2}, {{97, 772}, 2}, {{65, 774}, 2}, + {{97, 774}, 2}, {{65, 808}, 2}, {{97, 808}, 2}, {{67, 769}, 2}, {{99, 769}, 2}, {{67, 770}, 2}, {{99, 770}, 2}, + {{67, 775}, 2}, {{99, 775}, 2}, {{67, 780}, 2}, {{99, 780}, 2}, {{68, 780}, 2}, {{100, 780}, 2}, {{69, 772}, 2}, + {{101, 772}, 2}, {{69, 774}, 2}, {{101, 774}, 2}, {{69, 775}, 2}, {{101, 775}, 2}, {{69, 808}, 2}, {{101, 808}, 2}, + {{69, 780}, 2}, {{101, 780}, 2}, {{71, 770}, 2}, {{103, 770}, 2}, {{71, 774}, 2}, {{103, 774}, 2}, {{71, 775}, 2}, + {{103, 775}, 2}, {{71, 807}, 2}, {{103, 807}, 2}, {{72, 770}, 2}, {{104, 770}, 2}, {{73, 771}, 2}, {{105, 771}, 2}, + {{73, 772}, 2}, {{105, 772}, 2}, {{73, 774}, 2}, {{105, 774}, 2}, {{73, 808}, 2}, {{105, 808}, 2}, {{73, 775}, 2}, + {{74, 770}, 2}, {{106, 770}, 2}, {{75, 807}, 2}, {{107, 807}, 2}, {{76, 769}, 2}, {{108, 769}, 2}, {{76, 807}, 2}, + {{108, 807}, 2}, {{76, 780}, 2}, {{108, 780}, 2}, {{78, 769}, 2}, {{110, 769}, 2}, {{78, 807}, 2}, {{110, 807}, 2}, + {{78, 780}, 2}, {{110, 780}, 2}, {{79, 772}, 2}, {{111, 772}, 2}, {{79, 774}, 2}, {{111, 774}, 2}, {{79, 779}, 2}, + {{111, 779}, 2}, {{82, 769}, 2}, {{114, 769}, 2}, {{82, 807}, 2}, {{114, 807}, 2}, {{82, 780}, 2}, {{114, 780}, 2}, + {{83, 769}, 2}, {{115, 769}, 2}, {{83, 770}, 2}, {{115, 770}, 2}, {{83, 807}, 2}, {{115, 807}, 2}, {{83, 780}, 2}, + {{115, 780}, 2}, {{84, 807}, 2}, {{116, 807}, 2}, {{84, 780}, 2}, {{116, 780}, 2}, {{85, 771}, 2}, {{117, 771}, 2}, + {{85, 772}, 2}, {{117, 772}, 2}, {{85, 774}, 2}, {{117, 774}, 2}, {{85, 778}, 2}, {{117, 778}, 2}, {{85, 779}, 2}, + {{117, 779}, 2}, {{85, 808}, 2}, {{117, 808}, 2}, {{87, 770}, 2}, {{119, 770}, 2}, {{89, 770}, 2}, {{121, 770}, 2}, + {{89, 776}, 2}, {{90, 769}, 2}, {{122, 769}, 2}, {{90, 775}, 2}, {{122, 775}, 2}, {{90, 780}, 2}, {{122, 780}, 2}, + {{79, 795}, 2}, {{111, 795}, 2}, {{85, 795}, 2}, {{117, 795}, 2}, {{65, 780}, 2}, {{97, 780}, 2}, {{73, 780}, 2}, + {{105, 780}, 2}, {{79, 780}, 2}, {{111, 780}, 2}, {{85, 780}, 2}, {{117, 780}, 2}, {{85, 776, 772}, 3}, + {{117, 776, 772}, 3}, {{85, 776, 769}, 3}, {{117, 776, 769}, 3}, {{85, 776, 780}, 3}, {{117, 776, 780}, 3}, + {{85, 776, 768}, 3}, {{117, 776, 768}, 3}, {{65, 776, 772}, 3}, {{97, 776, 772}, 3}, {{65, 775, 772}, 3}, + {{97, 775, 772}, 3}, {{198, 772}, 2}, {{230, 772}, 2}, {{71, 780}, 2}, {{103, 780}, 2}, {{75, 780}, 2}, + {{107, 780}, 2}, {{79, 808}, 2}, {{111, 808}, 2}, {{79, 808, 772}, 3}, {{111, 808, 772}, 3}, {{439, 780}, 2}, + {{658, 780}, 2}, {{106, 780}, 2}, {{71, 769}, 2}, {{103, 769}, 2}, {{78, 768}, 2}, {{110, 768}, 2}, + {{65, 778, 769}, 3}, {{97, 778, 769}, 3}, {{198, 769}, 2}, {{230, 769}, 2}, {{216, 769}, 2}, {{248, 769}, 2}, + {{65, 783}, 2}, {{97, 783}, 2}, {{65, 785}, 2}, {{97, 785}, 2}, {{69, 783}, 2}, {{101, 783}, 2}, {{69, 785}, 2}, + {{101, 785}, 2}, {{73, 783}, 2}, {{105, 783}, 2}, {{73, 785}, 2}, {{105, 785}, 2}, {{79, 783}, 2}, {{111, 783}, 2}, + {{79, 785}, 2}, {{111, 785}, 2}, {{82, 783}, 2}, {{114, 783}, 2}, {{82, 785}, 2}, {{114, 785}, 2}, {{85, 783}, 2}, + {{117, 783}, 2}, {{85, 785}, 2}, {{117, 785}, 2}, {{83, 806}, 2}, {{115, 806}, 2}, {{84, 806}, 2}, {{116, 806}, 2}, + {{72, 780}, 2}, {{104, 780}, 2}, {{65, 775}, 2}, {{97, 775}, 2}, {{69, 807}, 2}, {{101, 807}, 2}, {{79, 776, 772}, 3}, + {{111, 776, 772}, 3}, {{79, 771, 772}, 3}, {{111, 771, 772}, 3}, {{79, 775}, 2}, {{111, 775}, 2}, {{79, 775, 772}, 3}, + {{111, 775, 772}, 3}, {{89, 772}, 2}, {{121, 772}, 2}, {{768}, 1}, {{769}, 1}, {{787}, 1}, {{776, 769}, 2}, + {{697}, 1}, {{59}, 1}, {{168, 769}, 2}, {{913, 769}, 2}, {{183}, 1}, {{917, 769}, 2}, {{919, 769}, 2}, + {{921, 769}, 2}, {{927, 769}, 2}, {{933, 769}, 2}, {{937, 769}, 2}, {{953, 776, 769}, 3}, {{921, 776}, 2}, + {{933, 776}, 2}, {{945, 769}, 2}, {{949, 769}, 2}, {{951, 769}, 2}, {{953, 769}, 2}, {{965, 776, 769}, 3}, + {{953, 776}, 2}, {{965, 776}, 2}, {{959, 769}, 2}, {{965, 769}, 2}, {{969, 769}, 2}, {{978, 769}, 2}, {{978, 776}, 2}, + {{1045, 768}, 2}, {{1045, 776}, 2}, {{1043, 769}, 2}, {{1030, 776}, 2}, {{1050, 769}, 2}, {{1048, 768}, 2}, + {{1059, 774}, 2}, {{1048, 774}, 2}, {{1080, 774}, 2}, {{1077, 768}, 2}, {{1077, 776}, 2}, {{1075, 769}, 2}, + {{1110, 776}, 2}, {{1082, 769}, 2}, {{1080, 768}, 2}, {{1091, 774}, 2}, {{1140, 783}, 2}, {{1141, 783}, 2}, + {{1046, 774}, 2}, {{1078, 774}, 2}, {{1040, 774}, 2}, {{1072, 774}, 2}, {{1040, 776}, 2}, {{1072, 776}, 2}, + {{1045, 774}, 2}, {{1077, 774}, 2}, {{1240, 776}, 2}, {{1241, 776}, 2}, {{1046, 776}, 2}, {{1078, 776}, 2}, + {{1047, 776}, 2}, {{1079, 776}, 2}, {{1048, 772}, 2}, {{1080, 772}, 2}, {{1048, 776}, 2}, {{1080, 776}, 2}, + {{1054, 776}, 2}, {{1086, 776}, 2}, {{1256, 776}, 2}, {{1257, 776}, 2}, {{1069, 776}, 2}, {{1101, 776}, 2}, + {{1059, 772}, 2}, {{1091, 772}, 2}, {{1059, 776}, 2}, {{1091, 776}, 2}, {{1059, 779}, 2}, {{1091, 779}, 2}, + {{1063, 776}, 2}, {{1095, 776}, 2}, {{1067, 776}, 2}, {{1099, 776}, 2}, {{1575, 1619}, 2}, {{1575, 1620}, 2}, + {{1608, 1620}, 2}, {{1575, 1621}, 2}, {{1610, 1620}, 2}, {{1749, 1620}, 2}, {{1729, 1620}, 2}, {{1746, 1620}, 2}, + {{2344, 2364}, 2}, {{2352, 2364}, 2}, {{2355, 2364}, 2}, {{2325, 2364}, 2}, {{2326, 2364}, 2}, {{2327, 2364}, 2}, + {{2332, 2364}, 2}, {{2337, 2364}, 2}, {{2338, 2364}, 2}, {{2347, 2364}, 2}, {{2351, 2364}, 2}, {{2503, 2494}, 2}, + {{2503, 2519}, 2}, {{2465, 2492}, 2}, {{2466, 2492}, 2}, {{2479, 2492}, 2}, {{2610, 2620}, 2}, {{2616, 2620}, 2}, + {{2582, 2620}, 2}, {{2583, 2620}, 2}, {{2588, 2620}, 2}, {{2603, 2620}, 2}, {{2887, 2902}, 2}, {{2887, 2878}, 2}, + {{2887, 2903}, 2}, {{2849, 2876}, 2}, {{2850, 2876}, 2}, {{2962, 3031}, 2}, {{3014, 3006}, 2}, {{3015, 3006}, 2}, + {{3014, 3031}, 2}, {{3142, 3158}, 2}, {{3263, 3285}, 2}, {{3270, 3285}, 2}, {{3270, 3286}, 2}, {{3270, 3266}, 2}, + {{3270, 3266, 3285}, 3}, {{3398, 3390}, 2}, {{3399, 3390}, 2}, {{3398, 3415}, 2}, {{3545, 3530}, 2}, + {{3545, 3535}, 2}, {{3545, 3535, 3530}, 3}, {{3545, 3551}, 2}, {{3906, 4023}, 2}, {{3916, 4023}, 2}, + {{3921, 4023}, 2}, {{3926, 4023}, 2}, {{3931, 4023}, 2}, {{3904, 4021}, 2}, {{3953, 3954}, 2}, {{3953, 3956}, 2}, + {{4018, 3968}, 2}, {{4019, 3968}, 2}, {{3953, 3968}, 2}, {{3986, 4023}, 2}, {{3996, 4023}, 2}, {{4001, 4023}, 2}, + {{4006, 4023}, 2}, {{4011, 4023}, 2}, {{3984, 4021}, 2}, {{4133, 4142}, 2}, {{65, 805}, 2}, {{97, 805}, 2}, + {{66, 775}, 2}, {{98, 775}, 2}, {{66, 803}, 2}, {{98, 803}, 2}, {{66, 817}, 2}, {{98, 817}, 2}, {{67, 807, 769}, 3}, + {{99, 807, 769}, 3}, {{68, 775}, 2}, {{100, 775}, 2}, {{68, 803}, 2}, {{100, 803}, 2}, {{68, 817}, 2}, + {{100, 817}, 2}, {{68, 807}, 2}, {{100, 807}, 2}, {{68, 813}, 2}, {{100, 813}, 2}, {{69, 772, 768}, 3}, + {{101, 772, 768}, 3}, {{69, 772, 769}, 3}, {{101, 772, 769}, 3}, {{69, 813}, 2}, {{101, 813}, 2}, {{69, 816}, 2}, + {{101, 816}, 2}, {{69, 807, 774}, 3}, {{101, 807, 774}, 3}, {{70, 775}, 2}, {{102, 775}, 2}, {{71, 772}, 2}, + {{103, 772}, 2}, {{72, 775}, 2}, {{104, 775}, 2}, {{72, 803}, 2}, {{104, 803}, 2}, {{72, 776}, 2}, {{104, 776}, 2}, + {{72, 807}, 2}, {{104, 807}, 2}, {{72, 814}, 2}, {{104, 814}, 2}, {{73, 816}, 2}, {{105, 816}, 2}, + {{73, 776, 769}, 3}, {{105, 776, 769}, 3}, {{75, 769}, 2}, {{107, 769}, 2}, {{75, 803}, 2}, {{107, 803}, 2}, + {{75, 817}, 2}, {{107, 817}, 2}, {{76, 803}, 2}, {{108, 803}, 2}, {{76, 803, 772}, 3}, {{108, 803, 772}, 3}, + {{76, 817}, 2}, {{108, 817}, 2}, {{76, 813}, 2}, {{108, 813}, 2}, {{77, 769}, 2}, {{109, 769}, 2}, {{77, 775}, 2}, + {{109, 775}, 2}, {{77, 803}, 2}, {{109, 803}, 2}, {{78, 775}, 2}, {{110, 775}, 2}, {{78, 803}, 2}, {{110, 803}, 2}, + {{78, 817}, 2}, {{110, 817}, 2}, {{78, 813}, 2}, {{110, 813}, 2}, {{79, 771, 769}, 3}, {{111, 771, 769}, 3}, + {{79, 771, 776}, 3}, {{111, 771, 776}, 3}, {{79, 772, 768}, 3}, {{111, 772, 768}, 3}, {{79, 772, 769}, 3}, + {{111, 772, 769}, 3}, {{80, 769}, 2}, {{112, 769}, 2}, {{80, 775}, 2}, {{112, 775}, 2}, {{82, 775}, 2}, + {{114, 775}, 2}, {{82, 803}, 2}, {{114, 803}, 2}, {{82, 803, 772}, 3}, {{114, 803, 772}, 3}, {{82, 817}, 2}, + {{114, 817}, 2}, {{83, 775}, 2}, {{115, 775}, 2}, {{83, 803}, 2}, {{115, 803}, 2}, {{83, 769, 775}, 3}, + {{115, 769, 775}, 3}, {{83, 780, 775}, 3}, {{115, 780, 775}, 3}, {{83, 803, 775}, 3}, {{115, 803, 775}, 3}, + {{84, 775}, 2}, {{116, 775}, 2}, {{84, 803}, 2}, {{116, 803}, 2}, {{84, 817}, 2}, {{116, 817}, 2}, {{84, 813}, 2}, + {{116, 813}, 2}, {{85, 804}, 2}, {{117, 804}, 2}, {{85, 816}, 2}, {{117, 816}, 2}, {{85, 813}, 2}, {{117, 813}, 2}, + {{85, 771, 769}, 3}, {{117, 771, 769}, 3}, {{85, 772, 776}, 3}, {{117, 772, 776}, 3}, {{86, 771}, 2}, {{118, 771}, 2}, + {{86, 803}, 2}, {{118, 803}, 2}, {{87, 768}, 2}, {{119, 768}, 2}, {{87, 769}, 2}, {{119, 769}, 2}, {{87, 776}, 2}, + {{119, 776}, 2}, {{87, 775}, 2}, {{119, 775}, 2}, {{87, 803}, 2}, {{119, 803}, 2}, {{88, 775}, 2}, {{120, 775}, 2}, + {{88, 776}, 2}, {{120, 776}, 2}, {{89, 775}, 2}, {{121, 775}, 2}, {{90, 770}, 2}, {{122, 770}, 2}, {{90, 803}, 2}, + {{122, 803}, 2}, {{90, 817}, 2}, {{122, 817}, 2}, {{104, 817}, 2}, {{116, 776}, 2}, {{119, 778}, 2}, {{121, 778}, 2}, + {{383, 775}, 2}, {{65, 803}, 2}, {{97, 803}, 2}, {{65, 777}, 2}, {{97, 777}, 2}, {{65, 770, 769}, 3}, + {{97, 770, 769}, 3}, {{65, 770, 768}, 3}, {{97, 770, 768}, 3}, {{65, 770, 777}, 3}, {{97, 770, 777}, 3}, + {{65, 770, 771}, 3}, {{97, 770, 771}, 3}, {{65, 803, 770}, 3}, {{97, 803, 770}, 3}, {{65, 774, 769}, 3}, + {{97, 774, 769}, 3}, {{65, 774, 768}, 3}, {{97, 774, 768}, 3}, {{65, 774, 777}, 3}, {{97, 774, 777}, 3}, + {{65, 774, 771}, 3}, {{97, 774, 771}, 3}, {{65, 803, 774}, 3}, {{97, 803, 774}, 3}, {{69, 803}, 2}, {{101, 803}, 2}, + {{69, 777}, 2}, {{101, 777}, 2}, {{69, 771}, 2}, {{101, 771}, 2}, {{69, 770, 769}, 3}, {{101, 770, 769}, 3}, + {{69, 770, 768}, 3}, {{101, 770, 768}, 3}, {{69, 770, 777}, 3}, {{101, 770, 777}, 3}, {{69, 770, 771}, 3}, + {{101, 770, 771}, 3}, {{69, 803, 770}, 3}, {{101, 803, 770}, 3}, {{73, 777}, 2}, {{105, 777}, 2}, {{73, 803}, 2}, + {{105, 803}, 2}, {{79, 803}, 2}, {{111, 803}, 2}, {{79, 777}, 2}, {{111, 777}, 2}, {{79, 770, 769}, 3}, + {{111, 770, 769}, 3}, {{79, 770, 768}, 3}, {{111, 770, 768}, 3}, {{79, 770, 777}, 3}, {{111, 770, 777}, 3}, + {{79, 770, 771}, 3}, {{111, 770, 771}, 3}, {{79, 803, 770}, 3}, {{111, 803, 770}, 3}, {{79, 795, 769}, 3}, + {{111, 795, 769}, 3}, {{79, 795, 768}, 3}, {{111, 795, 768}, 3}, {{79, 795, 777}, 3}, {{111, 795, 777}, 3}, + {{79, 795, 771}, 3}, {{111, 795, 771}, 3}, {{79, 795, 803}, 3}, {{111, 795, 803}, 3}, {{85, 803}, 2}, {{117, 803}, 2}, + {{85, 777}, 2}, {{117, 777}, 2}, {{85, 795, 769}, 3}, {{117, 795, 769}, 3}, {{85, 795, 768}, 3}, {{117, 795, 768}, 3}, + {{85, 795, 777}, 3}, {{117, 795, 777}, 3}, {{85, 795, 771}, 3}, {{117, 795, 771}, 3}, {{85, 795, 803}, 3}, + {{117, 795, 803}, 3}, {{89, 768}, 2}, {{121, 768}, 2}, {{89, 803}, 2}, {{121, 803}, 2}, {{89, 777}, 2}, + {{121, 777}, 2}, {{89, 771}, 2}, {{121, 771}, 2}, {{945, 787}, 2}, {{945, 788}, 2}, {{945, 787, 768}, 3}, + {{945, 788, 768}, 3}, {{945, 787, 769}, 3}, {{945, 788, 769}, 3}, {{945, 787, 834}, 3}, {{945, 788, 834}, 3}, + {{913, 787}, 2}, {{913, 788}, 2}, {{913, 787, 768}, 3}, {{913, 788, 768}, 3}, {{913, 787, 769}, 3}, + {{913, 788, 769}, 3}, {{913, 787, 834}, 3}, {{913, 788, 834}, 3}, {{949, 787}, 2}, {{949, 788}, 2}, + {{949, 787, 768}, 3}, {{949, 788, 768}, 3}, {{949, 787, 769}, 3}, {{949, 788, 769}, 3}, {{917, 787}, 2}, + {{917, 788}, 2}, {{917, 787, 768}, 3}, {{917, 788, 768}, 3}, {{917, 787, 769}, 3}, {{917, 788, 769}, 3}, + {{951, 787}, 2}, {{951, 788}, 2}, {{951, 787, 768}, 3}, {{951, 788, 768}, 3}, {{951, 787, 769}, 3}, + {{951, 788, 769}, 3}, {{951, 787, 834}, 3}, {{951, 788, 834}, 3}, {{919, 787}, 2}, {{919, 788}, 2}, + {{919, 787, 768}, 3}, {{919, 788, 768}, 3}, {{919, 787, 769}, 3}, {{919, 788, 769}, 3}, {{919, 787, 834}, 3}, + {{919, 788, 834}, 3}, {{953, 787}, 2}, {{953, 788}, 2}, {{953, 787, 768}, 3}, {{953, 788, 768}, 3}, + {{953, 787, 769}, 3}, {{953, 788, 769}, 3}, {{953, 787, 834}, 3}, {{953, 788, 834}, 3}, {{921, 787}, 2}, + {{921, 788}, 2}, {{921, 787, 768}, 3}, {{921, 788, 768}, 3}, {{921, 787, 769}, 3}, {{921, 788, 769}, 3}, + {{921, 787, 834}, 3}, {{921, 788, 834}, 3}, {{959, 787}, 2}, {{959, 788}, 2}, {{959, 787, 768}, 3}, + {{959, 788, 768}, 3}, {{959, 787, 769}, 3}, {{959, 788, 769}, 3}, {{927, 787}, 2}, {{927, 788}, 2}, + {{927, 787, 768}, 3}, {{927, 788, 768}, 3}, {{927, 787, 769}, 3}, {{927, 788, 769}, 3}, {{965, 787}, 2}, + {{965, 788}, 2}, {{965, 787, 768}, 3}, {{965, 788, 768}, 3}, {{965, 787, 769}, 3}, {{965, 788, 769}, 3}, + {{965, 787, 834}, 3}, {{965, 788, 834}, 3}, {{933, 788}, 2}, {{933, 788, 768}, 3}, {{933, 788, 769}, 3}, + {{933, 788, 834}, 3}, {{969, 787}, 2}, {{969, 788}, 2}, {{969, 787, 768}, 3}, {{969, 788, 768}, 3}, + {{969, 787, 769}, 3}, {{969, 788, 769}, 3}, {{969, 787, 834}, 3}, {{969, 788, 834}, 3}, {{937, 787}, 2}, + {{937, 788}, 2}, {{937, 787, 768}, 3}, {{937, 788, 768}, 3}, {{937, 787, 769}, 3}, {{937, 788, 769}, 3}, + {{937, 787, 834}, 3}, {{937, 788, 834}, 3}, {{945, 768}, 2}, {{945, 769}, 2}, {{949, 768}, 2}, {{949, 769}, 2}, + {{951, 768}, 2}, {{951, 769}, 2}, {{953, 768}, 2}, {{953, 769}, 2}, {{959, 768}, 2}, {{959, 769}, 2}, {{965, 768}, 2}, + {{965, 769}, 2}, {{969, 768}, 2}, {{969, 769}, 2}, {{945, 787, 837}, 3}, {{945, 788, 837}, 3}, + {{945, 787, 768, 837}, 4}, {{945, 788, 768, 837}, 4}, {{945, 787, 769, 837}, 4}, {{945, 788, 769, 837}, 4}, + {{945, 787, 834, 837}, 4}, {{945, 788, 834, 837}, 4}, {{913, 787, 837}, 3}, {{913, 788, 837}, 3}, + {{913, 787, 768, 837}, 4}, {{913, 788, 768, 837}, 4}, {{913, 787, 769, 837}, 4}, {{913, 788, 769, 837}, 4}, + {{913, 787, 834, 837}, 4}, {{913, 788, 834, 837}, 4}, {{951, 787, 837}, 3}, {{951, 788, 837}, 3}, + {{951, 787, 768, 837}, 4}, {{951, 788, 768, 837}, 4}, {{951, 787, 769, 837}, 4}, {{951, 788, 769, 837}, 4}, + {{951, 787, 834, 837}, 4}, {{951, 788, 834, 837}, 4}, {{919, 787, 837}, 3}, {{919, 788, 837}, 3}, + {{919, 787, 768, 837}, 4}, {{919, 788, 768, 837}, 4}, {{919, 787, 769, 837}, 4}, {{919, 788, 769, 837}, 4}, + {{919, 787, 834, 837}, 4}, {{919, 788, 834, 837}, 4}, {{969, 787, 837}, 3}, {{969, 788, 837}, 3}, + {{969, 787, 768, 837}, 4}, {{969, 788, 768, 837}, 4}, {{969, 787, 769, 837}, 4}, {{969, 788, 769, 837}, 4}, + {{969, 787, 834, 837}, 4}, {{969, 788, 834, 837}, 4}, {{937, 787, 837}, 3}, {{937, 788, 837}, 3}, + {{937, 787, 768, 837}, 4}, {{937, 788, 768, 837}, 4}, {{937, 787, 769, 837}, 4}, {{937, 788, 769, 837}, 4}, + {{937, 787, 834, 837}, 4}, {{937, 788, 834, 837}, 4}, {{945, 774}, 2}, {{945, 772}, 2}, {{945, 768, 837}, 3}, + {{945, 837}, 2}, {{945, 769, 837}, 3}, {{945, 834}, 2}, {{945, 834, 837}, 3}, {{913, 774}, 2}, {{913, 772}, 2}, + {{913, 768}, 2}, {{913, 769}, 2}, {{913, 837}, 2}, {{953}, 1}, {{168, 834}, 2}, {{951, 768, 837}, 3}, {{951, 837}, 2}, + {{951, 769, 837}, 3}, {{951, 834}, 2}, {{951, 834, 837}, 3}, {{917, 768}, 2}, {{917, 769}, 2}, {{919, 768}, 2}, + {{919, 769}, 2}, {{919, 837}, 2}, {{8127, 768}, 2}, {{8127, 769}, 2}, {{8127, 834}, 2}, {{953, 774}, 2}, + {{953, 772}, 2}, {{953, 776, 768}, 3}, {{953, 776, 769}, 3}, {{953, 834}, 2}, {{953, 776, 834}, 3}, {{921, 774}, 2}, + {{921, 772}, 2}, {{921, 768}, 2}, {{921, 769}, 2}, {{8190, 768}, 2}, {{8190, 769}, 2}, {{8190, 834}, 2}, + {{965, 774}, 2}, {{965, 772}, 2}, {{965, 776, 768}, 3}, {{965, 776, 769}, 3}, {{961, 787}, 2}, {{961, 788}, 2}, + {{965, 834}, 2}, {{965, 776, 834}, 3}, {{933, 774}, 2}, {{933, 772}, 2}, {{933, 768}, 2}, {{933, 769}, 2}, + {{929, 788}, 2}, {{168, 768}, 2}, {{168, 769}, 2}, {{96}, 1}, {{969, 768, 837}, 3}, {{969, 837}, 2}, + {{969, 769, 837}, 3}, {{969, 834}, 2}, {{969, 834, 837}, 3}, {{927, 768}, 2}, {{927, 769}, 2}, {{937, 768}, 2}, + {{937, 769}, 2}, {{937, 837}, 2}, {{180}, 1}, {{8194}, 1}, {{8195}, 1}, {{937}, 1}, {{75}, 1}, {{65, 778}, 2}, + {{8592, 824}, 2}, {{8594, 824}, 2}, {{8596, 824}, 2}, {{8656, 824}, 2}, {{8660, 824}, 2}, {{8658, 824}, 2}, + {{8707, 824}, 2}, {{8712, 824}, 2}, {{8715, 824}, 2}, {{8739, 824}, 2}, {{8741, 824}, 2}, {{8764, 824}, 2}, + {{8771, 824}, 2}, {{8773, 824}, 2}, {{8776, 824}, 2}, {{61, 824}, 2}, {{8801, 824}, 2}, {{8781, 824}, 2}, + {{60, 824}, 2}, {{62, 824}, 2}, {{8804, 824}, 2}, {{8805, 824}, 2}, {{8818, 824}, 2}, {{8819, 824}, 2}, + {{8822, 824}, 2}, {{8823, 824}, 2}, {{8826, 824}, 2}, {{8827, 824}, 2}, {{8834, 824}, 2}, {{8835, 824}, 2}, + {{8838, 824}, 2}, {{8839, 824}, 2}, {{8866, 824}, 2}, {{8872, 824}, 2}, {{8873, 824}, 2}, {{8875, 824}, 2}, + {{8828, 824}, 2}, {{8829, 824}, 2}, {{8849, 824}, 2}, {{8850, 824}, 2}, {{8882, 824}, 2}, {{8883, 824}, 2}, + {{8884, 824}, 2}, {{8885, 824}, 2}, {{12296}, 1}, {{12297}, 1}, {{10973, 824}, 2}, {{12363, 12441}, 2}, + {{12365, 12441}, 2}, {{12367, 12441}, 2}, {{12369, 12441}, 2}, {{12371, 12441}, 2}, {{12373, 12441}, 2}, + {{12375, 12441}, 2}, {{12377, 12441}, 2}, {{12379, 12441}, 2}, {{12381, 12441}, 2}, {{12383, 12441}, 2}, + {{12385, 12441}, 2}, {{12388, 12441}, 2}, {{12390, 12441}, 2}, {{12392, 12441}, 2}, {{12399, 12441}, 2}, + {{12399, 12442}, 2}, {{12402, 12441}, 2}, {{12402, 12442}, 2}, {{12405, 12441}, 2}, {{12405, 12442}, 2}, + {{12408, 12441}, 2}, {{12408, 12442}, 2}, {{12411, 12441}, 2}, {{12411, 12442}, 2}, {{12358, 12441}, 2}, + {{12445, 12441}, 2}, {{12459, 12441}, 2}, {{12461, 12441}, 2}, {{12463, 12441}, 2}, {{12465, 12441}, 2}, + {{12467, 12441}, 2}, {{12469, 12441}, 2}, {{12471, 12441}, 2}, {{12473, 12441}, 2}, {{12475, 12441}, 2}, + {{12477, 12441}, 2}, {{12479, 12441}, 2}, {{12481, 12441}, 2}, {{12484, 12441}, 2}, {{12486, 12441}, 2}, + {{12488, 12441}, 2}, {{12495, 12441}, 2}, {{12495, 12442}, 2}, {{12498, 12441}, 2}, {{12498, 12442}, 2}, + {{12501, 12441}, 2}, {{12501, 12442}, 2}, {{12504, 12441}, 2}, {{12504, 12442}, 2}, {{12507, 12441}, 2}, + {{12507, 12442}, 2}, {{12454, 12441}, 2}, {{12527, 12441}, 2}, {{12528, 12441}, 2}, {{12529, 12441}, 2}, + {{12530, 12441}, 2}, {{12541, 12441}, 2}, {{35912}, 1}, {{26356}, 1}, {{36554}, 1}, {{36040}, 1}, {{28369}, 1}, + {{20018}, 1}, {{21477}, 1}, {{40860}, 1}, {{40860}, 1}, {{22865}, 1}, {{37329}, 1}, {{21895}, 1}, {{22856}, 1}, + {{25078}, 1}, {{30313}, 1}, {{32645}, 1}, {{34367}, 1}, {{34746}, 1}, {{35064}, 1}, {{37007}, 1}, {{27138}, 1}, + {{27931}, 1}, {{28889}, 1}, {{29662}, 1}, {{33853}, 1}, {{37226}, 1}, {{39409}, 1}, {{20098}, 1}, {{21365}, 1}, + {{27396}, 1}, {{29211}, 1}, {{34349}, 1}, {{40478}, 1}, {{23888}, 1}, {{28651}, 1}, {{34253}, 1}, {{35172}, 1}, + {{25289}, 1}, {{33240}, 1}, {{34847}, 1}, {{24266}, 1}, {{26391}, 1}, {{28010}, 1}, {{29436}, 1}, {{37070}, 1}, + {{20358}, 1}, {{20919}, 1}, {{21214}, 1}, {{25796}, 1}, {{27347}, 1}, {{29200}, 1}, {{30439}, 1}, {{32769}, 1}, + {{34310}, 1}, {{34396}, 1}, {{36335}, 1}, {{38706}, 1}, {{39791}, 1}, {{40442}, 1}, {{30860}, 1}, {{31103}, 1}, + {{32160}, 1}, {{33737}, 1}, {{37636}, 1}, {{40575}, 1}, {{35542}, 1}, {{22751}, 1}, {{24324}, 1}, {{31840}, 1}, + {{32894}, 1}, {{29282}, 1}, {{30922}, 1}, {{36034}, 1}, {{38647}, 1}, {{22744}, 1}, {{23650}, 1}, {{27155}, 1}, + {{28122}, 1}, {{28431}, 1}, {{32047}, 1}, {{32311}, 1}, {{38475}, 1}, {{21202}, 1}, {{32907}, 1}, {{20956}, 1}, + {{20940}, 1}, {{31260}, 1}, {{32190}, 1}, {{33777}, 1}, {{38517}, 1}, {{35712}, 1}, {{25295}, 1}, {{27138}, 1}, + {{35582}, 1}, {{20025}, 1}, {{23527}, 1}, {{24594}, 1}, {{29575}, 1}, {{30064}, 1}, {{21271}, 1}, {{30971}, 1}, + {{20415}, 1}, {{24489}, 1}, {{19981}, 1}, {{27852}, 1}, {{25976}, 1}, {{32034}, 1}, {{21443}, 1}, {{22622}, 1}, + {{30465}, 1}, {{33865}, 1}, {{35498}, 1}, {{27578}, 1}, {{36784}, 1}, {{27784}, 1}, {{25342}, 1}, {{33509}, 1}, + {{25504}, 1}, {{30053}, 1}, {{20142}, 1}, {{20841}, 1}, {{20937}, 1}, {{26753}, 1}, {{31975}, 1}, {{33391}, 1}, + {{35538}, 1}, {{37327}, 1}, {{21237}, 1}, {{21570}, 1}, {{22899}, 1}, {{24300}, 1}, {{26053}, 1}, {{28670}, 1}, + {{31018}, 1}, {{38317}, 1}, {{39530}, 1}, {{40599}, 1}, {{40654}, 1}, {{21147}, 1}, {{26310}, 1}, {{27511}, 1}, + {{36706}, 1}, {{24180}, 1}, {{24976}, 1}, {{25088}, 1}, {{25754}, 1}, {{28451}, 1}, {{29001}, 1}, {{29833}, 1}, + {{31178}, 1}, {{32244}, 1}, {{32879}, 1}, {{36646}, 1}, {{34030}, 1}, {{36899}, 1}, {{37706}, 1}, {{21015}, 1}, + {{21155}, 1}, {{21693}, 1}, {{28872}, 1}, {{35010}, 1}, {{35498}, 1}, {{24265}, 1}, {{24565}, 1}, {{25467}, 1}, + {{27566}, 1}, {{31806}, 1}, {{29557}, 1}, {{20196}, 1}, {{22265}, 1}, {{23527}, 1}, {{23994}, 1}, {{24604}, 1}, + {{29618}, 1}, {{29801}, 1}, {{32666}, 1}, {{32838}, 1}, {{37428}, 1}, {{38646}, 1}, {{38728}, 1}, {{38936}, 1}, + {{20363}, 1}, {{31150}, 1}, {{37300}, 1}, {{38584}, 1}, {{24801}, 1}, {{20102}, 1}, {{20698}, 1}, {{23534}, 1}, + {{23615}, 1}, {{26009}, 1}, {{27138}, 1}, {{29134}, 1}, {{30274}, 1}, {{34044}, 1}, {{36988}, 1}, {{40845}, 1}, + {{26248}, 1}, {{38446}, 1}, {{21129}, 1}, {{26491}, 1}, {{26611}, 1}, {{27969}, 1}, {{28316}, 1}, {{29705}, 1}, + {{30041}, 1}, {{30827}, 1}, {{32016}, 1}, {{39006}, 1}, {{20845}, 1}, {{25134}, 1}, {{38520}, 1}, {{20523}, 1}, + {{23833}, 1}, {{28138}, 1}, {{36650}, 1}, {{24459}, 1}, {{24900}, 1}, {{26647}, 1}, {{29575}, 1}, {{38534}, 1}, + {{21033}, 1}, {{21519}, 1}, {{23653}, 1}, {{26131}, 1}, {{26446}, 1}, {{26792}, 1}, {{27877}, 1}, {{29702}, 1}, + {{30178}, 1}, {{32633}, 1}, {{35023}, 1}, {{35041}, 1}, {{37324}, 1}, {{38626}, 1}, {{21311}, 1}, {{28346}, 1}, + {{21533}, 1}, {{29136}, 1}, {{29848}, 1}, {{34298}, 1}, {{38563}, 1}, {{40023}, 1}, {{40607}, 1}, {{26519}, 1}, + {{28107}, 1}, {{33256}, 1}, {{31435}, 1}, {{31520}, 1}, {{31890}, 1}, {{29376}, 1}, {{28825}, 1}, {{35672}, 1}, + {{20160}, 1}, {{33590}, 1}, {{21050}, 1}, {{20999}, 1}, {{24230}, 1}, {{25299}, 1}, {{31958}, 1}, {{23429}, 1}, + {{27934}, 1}, {{26292}, 1}, {{36667}, 1}, {{34892}, 1}, {{38477}, 1}, {{35211}, 1}, {{24275}, 1}, {{20800}, 1}, + {{21952}, 1}, {{22618}, 1}, {{26228}, 1}, {{20958}, 1}, {{29482}, 1}, {{30410}, 1}, {{31036}, 1}, {{31070}, 1}, + {{31077}, 1}, {{31119}, 1}, {{38742}, 1}, {{31934}, 1}, {{32701}, 1}, {{34322}, 1}, {{35576}, 1}, {{36920}, 1}, + {{37117}, 1}, {{39151}, 1}, {{39164}, 1}, {{39208}, 1}, {{40372}, 1}, {{20398}, 1}, {{20711}, 1}, {{20813}, 1}, + {{21193}, 1}, {{21220}, 1}, {{21329}, 1}, {{21917}, 1}, {{22022}, 1}, {{22120}, 1}, {{22592}, 1}, {{22696}, 1}, + {{23652}, 1}, {{23662}, 1}, {{24724}, 1}, {{24936}, 1}, {{24974}, 1}, {{25074}, 1}, {{25935}, 1}, {{26082}, 1}, + {{26257}, 1}, {{26757}, 1}, {{28023}, 1}, {{28186}, 1}, {{28450}, 1}, {{29038}, 1}, {{29227}, 1}, {{29730}, 1}, + {{30865}, 1}, {{31038}, 1}, {{31049}, 1}, {{31048}, 1}, {{31056}, 1}, {{31062}, 1}, {{31069}, 1}, {{31117}, 1}, + {{31118}, 1}, {{31296}, 1}, {{31361}, 1}, {{31680}, 1}, {{32244}, 1}, {{32265}, 1}, {{32321}, 1}, {{32626}, 1}, + {{32773}, 1}, {{33261}, 1}, {{33401}, 1}, {{33401}, 1}, {{33879}, 1}, {{35088}, 1}, {{35222}, 1}, {{35585}, 1}, + {{35641}, 1}, {{36051}, 1}, {{36104}, 1}, {{36790}, 1}, {{36920}, 1}, {{38627}, 1}, {{38911}, 1}, {{38971}, 1}, + {{20006}, 1}, {{20917}, 1}, {{20840}, 1}, {{20352}, 1}, {{20805}, 1}, {{20864}, 1}, {{21191}, 1}, {{21242}, 1}, + {{21917}, 1}, {{21845}, 1}, {{21913}, 1}, {{21986}, 1}, {{22618}, 1}, {{22707}, 1}, {{22852}, 1}, {{22868}, 1}, + {{23138}, 1}, {{23336}, 1}, {{24274}, 1}, {{24281}, 1}, {{24425}, 1}, {{24493}, 1}, {{24792}, 1}, {{24910}, 1}, + {{24840}, 1}, {{24974}, 1}, {{24928}, 1}, {{25074}, 1}, {{25140}, 1}, {{25540}, 1}, {{25628}, 1}, {{25682}, 1}, + {{25942}, 1}, {{26228}, 1}, {{26391}, 1}, {{26395}, 1}, {{26454}, 1}, {{27513}, 1}, {{27578}, 1}, {{27969}, 1}, + {{28379}, 1}, {{28363}, 1}, {{28450}, 1}, {{28702}, 1}, {{29038}, 1}, {{30631}, 1}, {{29237}, 1}, {{29359}, 1}, + {{29482}, 1}, {{29809}, 1}, {{29958}, 1}, {{30011}, 1}, {{30237}, 1}, {{30239}, 1}, {{30410}, 1}, {{30427}, 1}, + {{30452}, 1}, {{30538}, 1}, {{30528}, 1}, {{30924}, 1}, {{31409}, 1}, {{31680}, 1}, {{31867}, 1}, {{32091}, 1}, + {{32244}, 1}, {{32574}, 1}, {{32773}, 1}, {{33618}, 1}, {{33775}, 1}, {{34681}, 1}, {{35137}, 1}, {{35206}, 1}, + {{35222}, 1}, {{35519}, 1}, {{35576}, 1}, {{35531}, 1}, {{35585}, 1}, {{35582}, 1}, {{35565}, 1}, {{35641}, 1}, + {{35722}, 1}, {{36104}, 1}, {{36664}, 1}, {{36978}, 1}, {{37273}, 1}, {{37494}, 1}, {{38524}, 1}, {{38627}, 1}, + {{38742}, 1}, {{38875}, 1}, {{38911}, 1}, {{38923}, 1}, {{38971}, 1}, {{39698}, 1}, {{40860}, 1}, {{141386}, 1}, + {{141380}, 1}, {{144341}, 1}, {{15261}, 1}, {{16408}, 1}, {{16441}, 1}, {{152137}, 1}, {{154832}, 1}, {{163539}, 1}, + {{40771}, 1}, {{40846}, 1}, {{1497, 1460}, 2}, {{1522, 1463}, 2}, {{1513, 1473}, 2}, {{1513, 1474}, 2}, + {{1513, 1468, 1473}, 3}, {{1513, 1468, 1474}, 3}, {{1488, 1463}, 2}, {{1488, 1464}, 2}, {{1488, 1468}, 2}, + {{1489, 1468}, 2}, {{1490, 1468}, 2}, {{1491, 1468}, 2}, {{1492, 1468}, 2}, {{1493, 1468}, 2}, {{1494, 1468}, 2}, + {{1496, 1468}, 2}, {{1497, 1468}, 2}, {{1498, 1468}, 2}, {{1499, 1468}, 2}, {{1500, 1468}, 2}, {{1502, 1468}, 2}, + {{1504, 1468}, 2}, {{1505, 1468}, 2}, {{1507, 1468}, 2}, {{1508, 1468}, 2}, {{1510, 1468}, 2}, {{1511, 1468}, 2}, + {{1512, 1468}, 2}, {{1513, 1468}, 2}, {{1514, 1468}, 2}, {{1493, 1465}, 2}, {{1489, 1471}, 2}, {{1499, 1471}, 2}, + {{1508, 1471}, 2}, {{119127, 119141}, 2}, {{119128, 119141}, 2}, {{119128, 119141, 119150}, 3}, + {{119128, 119141, 119151}, 3}, {{119128, 119141, 119152}, 3}, {{119128, 119141, 119153}, 3}, + {{119128, 119141, 119154}, 3}, {{119225, 119141}, 2}, {{119226, 119141}, 2}, {{119225, 119141, 119150}, 3}, + {{119226, 119141, 119150}, 3}, {{119225, 119141, 119151}, 3}, {{119226, 119141, 119151}, 3}, {{20029}, 1}, + {{20024}, 1}, {{20033}, 1}, {{131362}, 1}, {{20320}, 1}, {{20398}, 1}, {{20411}, 1}, {{20482}, 1}, {{20602}, 1}, + {{20633}, 1}, {{20711}, 1}, {{20687}, 1}, {{13470}, 1}, {{132666}, 1}, {{20813}, 1}, {{20820}, 1}, {{20836}, 1}, + {{20855}, 1}, {{132380}, 1}, {{13497}, 1}, {{20839}, 1}, {{20877}, 1}, {{132427}, 1}, {{20887}, 1}, {{20900}, 1}, + {{20172}, 1}, {{20908}, 1}, {{20917}, 1}, {{168415}, 1}, {{20981}, 1}, {{20995}, 1}, {{13535}, 1}, {{21051}, 1}, + {{21062}, 1}, {{21106}, 1}, {{21111}, 1}, {{13589}, 1}, {{21191}, 1}, {{21193}, 1}, {{21220}, 1}, {{21242}, 1}, + {{21253}, 1}, {{21254}, 1}, {{21271}, 1}, {{21321}, 1}, {{21329}, 1}, {{21338}, 1}, {{21363}, 1}, {{21373}, 1}, + {{21375}, 1}, {{21375}, 1}, {{21375}, 1}, {{133676}, 1}, {{28784}, 1}, {{21450}, 1}, {{21471}, 1}, {{133987}, 1}, + {{21483}, 1}, {{21489}, 1}, {{21510}, 1}, {{21662}, 1}, {{21560}, 1}, {{21576}, 1}, {{21608}, 1}, {{21666}, 1}, + {{21750}, 1}, {{21776}, 1}, {{21843}, 1}, {{21859}, 1}, {{21892}, 1}, {{21892}, 1}, {{21913}, 1}, {{21931}, 1}, + {{21939}, 1}, {{21954}, 1}, {{22294}, 1}, {{22022}, 1}, {{22295}, 1}, {{22097}, 1}, {{22132}, 1}, {{20999}, 1}, + {{22766}, 1}, {{22478}, 1}, {{22516}, 1}, {{22541}, 1}, {{22411}, 1}, {{22578}, 1}, {{22577}, 1}, {{22700}, 1}, + {{136420}, 1}, {{22770}, 1}, {{22775}, 1}, {{22790}, 1}, {{22810}, 1}, {{22818}, 1}, {{22882}, 1}, {{136872}, 1}, + {{136938}, 1}, {{23020}, 1}, {{23067}, 1}, {{23079}, 1}, {{23000}, 1}, {{23142}, 1}, {{14062}, 1}, {{14076}, 1}, + {{23304}, 1}, {{23358}, 1}, {{23358}, 1}, {{137672}, 1}, {{23491}, 1}, {{23512}, 1}, {{23527}, 1}, {{23539}, 1}, + {{138008}, 1}, {{23551}, 1}, {{23558}, 1}, {{24403}, 1}, {{23586}, 1}, {{14209}, 1}, {{23648}, 1}, {{23662}, 1}, + {{23744}, 1}, {{23693}, 1}, {{138724}, 1}, {{23875}, 1}, {{138726}, 1}, {{23918}, 1}, {{23915}, 1}, {{23932}, 1}, + {{24033}, 1}, {{24034}, 1}, {{14383}, 1}, {{24061}, 1}, {{24104}, 1}, {{24125}, 1}, {{24169}, 1}, {{14434}, 1}, + {{139651}, 1}, {{14460}, 1}, {{24240}, 1}, {{24243}, 1}, {{24246}, 1}, {{24266}, 1}, {{172946}, 1}, {{24318}, 1}, + {{140081}, 1}, {{140081}, 1}, {{33281}, 1}, {{24354}, 1}, {{24354}, 1}, {{14535}, 1}, {{144056}, 1}, {{156122}, 1}, + {{24418}, 1}, {{24427}, 1}, {{14563}, 1}, {{24474}, 1}, {{24525}, 1}, {{24535}, 1}, {{24569}, 1}, {{24705}, 1}, + {{14650}, 1}, {{14620}, 1}, {{24724}, 1}, {{141012}, 1}, {{24775}, 1}, {{24904}, 1}, {{24908}, 1}, {{24910}, 1}, + {{24908}, 1}, {{24954}, 1}, {{24974}, 1}, {{25010}, 1}, {{24996}, 1}, {{25007}, 1}, {{25054}, 1}, {{25074}, 1}, + {{25078}, 1}, {{25104}, 1}, {{25115}, 1}, {{25181}, 1}, {{25265}, 1}, {{25300}, 1}, {{25424}, 1}, {{142092}, 1}, + {{25405}, 1}, {{25340}, 1}, {{25448}, 1}, {{25475}, 1}, {{25572}, 1}, {{142321}, 1}, {{25634}, 1}, {{25541}, 1}, + {{25513}, 1}, {{14894}, 1}, {{25705}, 1}, {{25726}, 1}, {{25757}, 1}, {{25719}, 1}, {{14956}, 1}, {{25935}, 1}, + {{25964}, 1}, {{143370}, 1}, {{26083}, 1}, {{26360}, 1}, {{26185}, 1}, {{15129}, 1}, {{26257}, 1}, {{15112}, 1}, + {{15076}, 1}, {{20882}, 1}, {{20885}, 1}, {{26368}, 1}, {{26268}, 1}, {{32941}, 1}, {{17369}, 1}, {{26391}, 1}, + {{26395}, 1}, {{26401}, 1}, {{26462}, 1}, {{26451}, 1}, {{144323}, 1}, {{15177}, 1}, {{26618}, 1}, {{26501}, 1}, + {{26706}, 1}, {{26757}, 1}, {{144493}, 1}, {{26766}, 1}, {{26655}, 1}, {{26900}, 1}, {{15261}, 1}, {{26946}, 1}, + {{27043}, 1}, {{27114}, 1}, {{27304}, 1}, {{145059}, 1}, {{27355}, 1}, {{15384}, 1}, {{27425}, 1}, {{145575}, 1}, + {{27476}, 1}, {{15438}, 1}, {{27506}, 1}, {{27551}, 1}, {{27578}, 1}, {{27579}, 1}, {{146061}, 1}, {{138507}, 1}, + {{146170}, 1}, {{27726}, 1}, {{146620}, 1}, {{27839}, 1}, {{27853}, 1}, {{27751}, 1}, {{27926}, 1}, {{27966}, 1}, + {{28023}, 1}, {{27969}, 1}, {{28009}, 1}, {{28024}, 1}, {{28037}, 1}, {{146718}, 1}, {{27956}, 1}, {{28207}, 1}, + {{28270}, 1}, {{15667}, 1}, {{28363}, 1}, {{28359}, 1}, {{147153}, 1}, {{28153}, 1}, {{28526}, 1}, {{147294}, 1}, + {{147342}, 1}, {{28614}, 1}, {{28729}, 1}, {{28702}, 1}, {{28699}, 1}, {{15766}, 1}, {{28746}, 1}, {{28797}, 1}, + {{28791}, 1}, {{28845}, 1}, {{132389}, 1}, {{28997}, 1}, {{148067}, 1}, {{29084}, 1}, {{148395}, 1}, {{29224}, 1}, + {{29237}, 1}, {{29264}, 1}, {{149000}, 1}, {{29312}, 1}, {{29333}, 1}, {{149301}, 1}, {{149524}, 1}, {{29562}, 1}, + {{29579}, 1}, {{16044}, 1}, {{29605}, 1}, {{16056}, 1}, {{16056}, 1}, {{29767}, 1}, {{29788}, 1}, {{29809}, 1}, + {{29829}, 1}, {{29898}, 1}, {{16155}, 1}, {{29988}, 1}, {{150582}, 1}, {{30014}, 1}, {{150674}, 1}, {{30064}, 1}, + {{139679}, 1}, {{30224}, 1}, {{151457}, 1}, {{151480}, 1}, {{151620}, 1}, {{16380}, 1}, {{16392}, 1}, {{30452}, 1}, + {{151795}, 1}, {{151794}, 1}, {{151833}, 1}, {{151859}, 1}, {{30494}, 1}, {{30495}, 1}, {{30495}, 1}, {{30538}, 1}, + {{16441}, 1}, {{30603}, 1}, {{16454}, 1}, {{16534}, 1}, {{152605}, 1}, {{30798}, 1}, {{30860}, 1}, {{30924}, 1}, + {{16611}, 1}, {{153126}, 1}, {{31062}, 1}, {{153242}, 1}, {{153285}, 1}, {{31119}, 1}, {{31211}, 1}, {{16687}, 1}, + {{31296}, 1}, {{31306}, 1}, {{31311}, 1}, {{153980}, 1}, {{154279}, 1}, {{154279}, 1}, {{31470}, 1}, {{16898}, 1}, + {{154539}, 1}, {{31686}, 1}, {{31689}, 1}, {{16935}, 1}, {{154752}, 1}, {{31954}, 1}, {{17056}, 1}, {{31976}, 1}, + {{31971}, 1}, {{32000}, 1}, {{155526}, 1}, {{32099}, 1}, {{17153}, 1}, {{32199}, 1}, {{32258}, 1}, {{32325}, 1}, + {{17204}, 1}, {{156200}, 1}, {{156231}, 1}, {{17241}, 1}, {{156377}, 1}, {{32634}, 1}, {{156478}, 1}, {{32661}, 1}, + {{32762}, 1}, {{32773}, 1}, {{156890}, 1}, {{156963}, 1}, {{32864}, 1}, {{157096}, 1}, {{32880}, 1}, {{144223}, 1}, + {{17365}, 1}, {{32946}, 1}, {{33027}, 1}, {{17419}, 1}, {{33086}, 1}, {{23221}, 1}, {{157607}, 1}, {{157621}, 1}, + {{144275}, 1}, {{144284}, 1}, {{33281}, 1}, {{33284}, 1}, {{36766}, 1}, {{17515}, 1}, {{33425}, 1}, {{33419}, 1}, + {{33437}, 1}, {{21171}, 1}, {{33457}, 1}, {{33459}, 1}, {{33469}, 1}, {{33510}, 1}, {{158524}, 1}, {{33509}, 1}, + {{33565}, 1}, {{33635}, 1}, {{33709}, 1}, {{33571}, 1}, {{33725}, 1}, {{33767}, 1}, {{33879}, 1}, {{33619}, 1}, + {{33738}, 1}, {{33740}, 1}, {{33756}, 1}, {{158774}, 1}, {{159083}, 1}, {{158933}, 1}, {{17707}, 1}, {{34033}, 1}, + {{34035}, 1}, {{34070}, 1}, {{160714}, 1}, {{34148}, 1}, {{159532}, 1}, {{17757}, 1}, {{17761}, 1}, {{159665}, 1}, + {{159954}, 1}, {{17771}, 1}, {{34384}, 1}, {{34396}, 1}, {{34407}, 1}, {{34409}, 1}, {{34473}, 1}, {{34440}, 1}, + {{34574}, 1}, {{34530}, 1}, {{34681}, 1}, {{34600}, 1}, {{34667}, 1}, {{34694}, 1}, {{17879}, 1}, {{34785}, 1}, + {{34817}, 1}, {{17913}, 1}, {{34912}, 1}, {{34915}, 1}, {{161383}, 1}, {{35031}, 1}, {{35038}, 1}, {{17973}, 1}, + {{35066}, 1}, {{13499}, 1}, {{161966}, 1}, {{162150}, 1}, {{18110}, 1}, {{18119}, 1}, {{35488}, 1}, {{35565}, 1}, + {{35722}, 1}, {{35925}, 1}, {{162984}, 1}, {{36011}, 1}, {{36033}, 1}, {{36123}, 1}, {{36215}, 1}, {{163631}, 1}, + {{133124}, 1}, {{36299}, 1}, {{36284}, 1}, {{36336}, 1}, {{133342}, 1}, {{36564}, 1}, {{36664}, 1}, {{165330}, 1}, + {{165357}, 1}, {{37012}, 1}, {{37105}, 1}, {{37137}, 1}, {{165678}, 1}, {{37147}, 1}, {{37432}, 1}, {{37591}, 1}, + {{37592}, 1}, {{37500}, 1}, {{37881}, 1}, {{37909}, 1}, {{166906}, 1}, {{38283}, 1}, {{18837}, 1}, {{38327}, 1}, + {{167287}, 1}, {{18918}, 1}, {{38595}, 1}, {{23986}, 1}, {{38691}, 1}, {{168261}, 1}, {{168474}, 1}, {{19054}, 1}, + {{19062}, 1}, {{38880}, 1}, {{168970}, 1}, {{19122}, 1}, {{169110}, 1}, {{38923}, 1}, {{38923}, 1}, {{38953}, 1}, + {{169398}, 1}, {{39138}, 1}, {{19251}, 1}, {{39209}, 1}, {{39335}, 1}, {{39362}, 1}, {{39422}, 1}, {{19406}, 1}, + {{170800}, 1}, {{39698}, 1}, {{40000}, 1}, {{40189}, 1}, {{19662}, 1}, {{19693}, 1}, {{40295}, 1}, {{172238}, 1}, + {{19704}, 1}, {{172293}, 1}, {{172558}, 1}, {{172689}, 1}, {{40635}, 1}, {{19798}, 1}, {{40697}, 1}, {{40702}, 1}, + {{40709}, 1}, {{40719}, 1}, {{40726}, 1}, {{40763}, 1}, {{173568}, 1} }; - KInt getCanonicalClass(KInt ch) { +KInt getCanonicalClass(KInt ch) { int index = binarySearchRange(canonicalClassesKeys, ARRAY_SIZE(canonicalClassesKeys), ch); if (canonicalClassesKeys[index] != ch) { return 0; diff --git a/runtime/src/main/kotlin/kotlin/text/MatchResult.kt b/runtime/src/main/kotlin/kotlin/text/MatchResult.kt index d5c17b2b441..b43f4bb36ec 100644 --- a/runtime/src/main/kotlin/kotlin/text/MatchResult.kt +++ b/runtime/src/main/kotlin/kotlin/text/MatchResult.kt @@ -106,16 +106,16 @@ interface MatchResult { */ class Destructured internal constructor(val match: MatchResult) { - operator inline fun component1(): String = match.groupValues[1] - operator inline fun component2(): String = match.groupValues[2] - operator inline fun component3(): String = match.groupValues[3] - operator inline fun component4(): String = match.groupValues[4] - operator inline fun component5(): String = match.groupValues[5] - operator inline fun component6(): String = match.groupValues[6] - operator inline fun component7(): String = match.groupValues[7] - operator inline fun component8(): String = match.groupValues[8] - operator inline fun component9(): String = match.groupValues[9] - operator inline fun component10(): String = match.groupValues[10] + @kotlin.internal.InlineOnly operator inline fun component1(): String = match.groupValues[1] + @kotlin.internal.InlineOnly operator inline fun component2(): String = match.groupValues[2] + @kotlin.internal.InlineOnly operator inline fun component3(): String = match.groupValues[3] + @kotlin.internal.InlineOnly operator inline fun component4(): String = match.groupValues[4] + @kotlin.internal.InlineOnly operator inline fun component5(): String = match.groupValues[5] + @kotlin.internal.InlineOnly operator inline fun component6(): String = match.groupValues[6] + @kotlin.internal.InlineOnly operator inline fun component7(): String = match.groupValues[7] + @kotlin.internal.InlineOnly operator inline fun component8(): String = match.groupValues[8] + @kotlin.internal.InlineOnly operator inline fun component9(): String = match.groupValues[9] + @kotlin.internal.InlineOnly operator inline fun component10(): String = match.groupValues[10] /** * Returns destructured group values as a list of strings. * First value in the returned list corresponds to the value of the first group, and so on. diff --git a/runtime/src/main/kotlin/kotlin/text/regex/CharClass.kt b/runtime/src/main/kotlin/kotlin/text/regex/CharClass.kt index 88f6bac8c6b..242410330fc 100644 --- a/runtime/src/main/kotlin/kotlin/text/regex/CharClass.kt +++ b/runtime/src/main/kotlin/kotlin/text/regex/CharClass.kt @@ -163,7 +163,6 @@ internal class CharClass(val ignoreCase: Boolean = false, negative: Boolean = fa return another.contains(ch) } } - //alt = true; } else { /* @@ -177,14 +176,12 @@ internal class CharClass(val ignoreCase: Boolean = false, negative: Boolean = fa return !(curAlt xor bits_.get(ch) || curAlt xor inverted xor another.contains(ch)) } } - //alt = true } else { nonBitSet = object : AbstractCharClass() { override operator fun contains(ch: Int): Boolean { return curAlt xor bits_.get(ch) || curAlt xor inverted xor another.contains(ch) } } - //alt = false } } @@ -198,14 +195,12 @@ internal class CharClass(val ignoreCase: Boolean = false, negative: Boolean = fa return !(curAlt xor (nb!!.contains(ch) || another.contains(ch))) } } - //alt = true } else { nonBitSet = object : AbstractCharClass() { override operator fun contains(ch: Int): Boolean { return curAlt xor (nb!!.contains(ch) || another.contains(ch)) } } - //alt = false } } } @@ -314,14 +309,12 @@ internal class CharClass(val ignoreCase: Boolean = false, negative: Boolean = fa return !another.contains(ch) } } - //alt = true } else { nonBitSet = object : AbstractCharClass() { override operator fun contains(ch: Int): Boolean { return another.contains(ch) } } - //alt = false } } else { @@ -331,14 +324,12 @@ internal class CharClass(val ignoreCase: Boolean = false, negative: Boolean = fa return !(another.contains(ch) || curAlt xor bits_.get(ch)) } } - //alt = true } else { nonBitSet = object : AbstractCharClass() { override operator fun contains(ch: Int): Boolean { return another.contains(ch) || curAlt xor bits_.get(ch) } } - //alt = false } } hideBits = true @@ -351,14 +342,12 @@ internal class CharClass(val ignoreCase: Boolean = false, negative: Boolean = fa return !(curAlt xor nb!!.contains(ch) || another.contains(ch)) } } - //alt = true } else { nonBitSet = object : AbstractCharClass() { override operator fun contains(ch: Int): Boolean { return curAlt xor nb!!.contains(ch) || another.contains(ch) } } - //alt = false } } } @@ -432,14 +421,12 @@ internal class CharClass(val ignoreCase: Boolean = false, negative: Boolean = fa return !another.contains(ch) } } - //alt = true } else { nonBitSet = object : AbstractCharClass() { override operator fun contains(ch: Int): Boolean { return another.contains(ch) } } - //alt = false } } else { @@ -449,14 +436,12 @@ internal class CharClass(val ignoreCase: Boolean = false, negative: Boolean = fa return !(another.contains(ch) && curAlt xor bits_.get(ch)) } } - //alt = true } else { nonBitSet = object : AbstractCharClass() { override operator fun contains(ch: Int): Boolean { return another.contains(ch) && curAlt xor bits_.get(ch) } } - //alt = false } } hideBits = true @@ -469,14 +454,12 @@ internal class CharClass(val ignoreCase: Boolean = false, negative: Boolean = fa return !(curAlt xor nb!!.contains(ch) && another.contains(ch)) } } - //alt = true } else { nonBitSet = object : AbstractCharClass() { override operator fun contains(ch: Int): Boolean { return curAlt xor nb!!.contains(ch) && another.contains(ch) } } - //alt = false } } } diff --git a/runtime/src/main/kotlin/kotlin/text/regex/Lexer.kt b/runtime/src/main/kotlin/kotlin/text/regex/Lexer.kt index 25c383a3838..6996b555271 100644 --- a/runtime/src/main/kotlin/kotlin/text/regex/Lexer.kt +++ b/runtime/src/main/kotlin/kotlin/text/regex/Lexer.kt @@ -39,14 +39,6 @@ external private fun getDecompositionInternal(ch: Int): IntArray? external private fun decomposeString(inputCodePoints: IntArray, inputLength: Int, outputCodePoints: IntArray): Int // ============================================================================================================= -/** - * The purpose of this class is to break given pattern into RE tokens; - * @author Nikolay A. Kuznetsov - */ -// TODO: Move in C++. -typealias IntArrHash = HashMap -typealias IntHash = HashMap - /** * This is base class for special tokens like character classes and quantifiers. * @@ -519,8 +511,6 @@ internal class Lexer(val patternString: String, flags: Int) { var max = -1 // Obtain a min value. - //var lookAheadChar: Char = lookAhead.toChar() - // TODO: Check {} case var char: Char = if (index < pattern.size) pattern[nextIndex()] else throw PatternSyntaxException() while (char != '}') { @@ -803,7 +793,6 @@ internal class Lexer(val patternString: String, flags: Int) { fun normalize(input: String): String { val inputChars = input.toCharArray() val inputLength = inputChars.size - var resCodePointsIndex = 0 var inputCodePointsIndex = 0 var decompHangulIndex = 0 @@ -833,7 +822,7 @@ internal class Lexer(val patternString: String, flags: Int) { } // Canonical decomposition based on mappings in decomposition table. - resCodePointsIndex = decomposeString(inputCodePoints, inputCodePointsIndex, resCodePoints) + var resCodePointsIndex = decomposeString(inputCodePoints, inputCodePointsIndex, resCodePoints) // Canonical ordering. // See http://www.unicode.org/reports/tr15/#Decomposition for details @@ -842,7 +831,7 @@ internal class Lexer(val patternString: String, flags: Int) { // Decomposition for Hangul syllables. // See http://www.unicode.org/reports/tr15/#Hangul for details decompHangul = IntArray(resCodePoints.size) - + @Suppress("NAME_SHADOWING") for (i in 0..resCodePointsIndex - 1) { val curSymb = resCodePoints[i] @@ -860,6 +849,7 @@ internal class Lexer(val patternString: String, flags: Int) { } // Translating into UTF-16 encoding + @Suppress("NAME_SHADOWING") for (i in 0..decompHangulIndex - 1) { result.append(Char.toChars(decompHangul[i])) } diff --git a/runtime/src/main/kotlin/kotlin/text/regex/Pattern.kt b/runtime/src/main/kotlin/kotlin/text/regex/Pattern.kt index 8d8067dd390..51c5a92b8a3 100644 --- a/runtime/src/main/kotlin/kotlin/text/regex/Pattern.kt +++ b/runtime/src/main/kotlin/kotlin/text/regex/Pattern.kt @@ -851,7 +851,6 @@ internal class Pattern(val pattern: String, flags: Int = 0) { * Quotes a given string using "\Q" and "\E", so that all other meta-characters lose their special meaning. * If the string is used for a `Pattern` afterwards, it can only be matched literally. */ - // TODO: Replace with other functions. fun quote(s: String): String { return StringBuilder() .append("\\Q") diff --git a/runtime/src/main/kotlin/kotlin/text/regex/sets/BackReferenceSet.kt b/runtime/src/main/kotlin/kotlin/text/regex/sets/BackReferenceSet.kt index bd6a3f013a2..8796c578456 100644 --- a/runtime/src/main/kotlin/kotlin/text/regex/sets/BackReferenceSet.kt +++ b/runtime/src/main/kotlin/kotlin/text/regex/sets/BackReferenceSet.kt @@ -18,11 +18,10 @@ package kotlin.text.regex /** - * Case Insensitive back reference node; + * Back reference node; * * @author Nikolay A. Kuznetsov */ -// TODO: rename the properties open internal class BackReferenceSet(val referencedGroup: Int, val consCounter: Int, val ignoreCase: Boolean = false) : SimpleSet() { diff --git a/runtime/src/main/kotlin/kotlin/text/regex/sets/CharSet.kt b/runtime/src/main/kotlin/kotlin/text/regex/sets/CharSet.kt index 12e327b1f32..2386a0cf150 100644 --- a/runtime/src/main/kotlin/kotlin/text/regex/sets/CharSet.kt +++ b/runtime/src/main/kotlin/kotlin/text/regex/sets/CharSet.kt @@ -72,7 +72,7 @@ open internal class CharSet(char: Char, val ignoreCase: Boolean = false) : LeafS override fun first(set: AbstractSet): Boolean { if (ignoreCase) { - return super.first(set) // TODO: Add correct checks here. + return super.first(set) } return when (set) { is CharSet -> set.char == char diff --git a/runtime/src/main/kotlin/kotlin/text/regex/sets/EOLSet.kt b/runtime/src/main/kotlin/kotlin/text/regex/sets/EOLSet.kt index 18b6826abff..72c86f24449 100644 --- a/runtime/src/main/kotlin/kotlin/text/regex/sets/EOLSet.kt +++ b/runtime/src/main/kotlin/kotlin/text/regex/sets/EOLSet.kt @@ -24,7 +24,6 @@ package kotlin.text.regex * * @author Nikolay A. Kuznetsov */ -// TODO: rename consCounter? internal class EOLSet(val consCounter: Int, val lt: AbstractLineTerminator, val multiline: Boolean = false) : SimpleSet() { override fun matches(startIndex: Int, testString: CharSequence, matchResult: MatchResultImpl): Int { diff --git a/runtime/src/main/kotlin/kotlin/text/regex/sets/SequenceSet.kt b/runtime/src/main/kotlin/kotlin/text/regex/sets/SequenceSet.kt index c1cf3bf136a..889470c9ff6 100644 --- a/runtime/src/main/kotlin/kotlin/text/regex/sets/SequenceSet.kt +++ b/runtime/src/main/kotlin/kotlin/text/regex/sets/SequenceSet.kt @@ -88,7 +88,7 @@ open internal class SequenceSet(substring: CharSequence, val ignoreCase: Boolean override fun first(set: AbstractSet): Boolean { if (ignoreCase) { - return super.first(set) // TODO: Add correct checks for this case. + return super.first(set) } return when (set) { is CharSet -> set.char == patternString[0] diff --git a/runtime/src/main/kotlin/kotlin/text/regex/sets/SingleSet.kt b/runtime/src/main/kotlin/kotlin/text/regex/sets/SingleSet.kt index 845b110fc66..cbd47e3fc77 100644 --- a/runtime/src/main/kotlin/kotlin/text/regex/sets/SingleSet.kt +++ b/runtime/src/main/kotlin/kotlin/text/regex/sets/SingleSet.kt @@ -71,10 +71,7 @@ open internal class SingleSet(var kid: AbstractSet, fSet: FSet) : JointSet(listO } override fun processSecondPassInternal(): AbstractSet { - val fSet = this.fSet - if (fSet != null) { - this.fSet = fSet.processSecondPass() - } + fSet = fSet.processSecondPass() kid = kid.processSecondPass() return processBackRefReplacement() ?: this } @@ -84,8 +81,7 @@ open internal class SingleSet(var kid: AbstractSet, fSet: FSet) : JointSet(listO */ override fun processSecondPass(): AbstractSet { if (secondPassVisited) { - val fSet = this.fSet - if (fSet is FSet && fSet.isBackReferenced) { + if (fSet.isBackReferenced) { assert(backReferencedSet != null) // secondPassVisited return backReferencedSet!! } @@ -100,7 +96,7 @@ open internal class SingleSet(var kid: AbstractSet, fSet: FSet) : JointSet(listO * Group node over subexpression without alternations. * This node is used if current group is referenced via a backreference. */ - internal class BackReferencedSingleSet(node: SingleSet) : SingleSet(node.kid, node.fSet as FSet) { + internal class BackReferencedSingleSet(node: SingleSet) : SingleSet(node.kid, node.fSet) { /* * This class is needed only for overwriting find() and findBack() methods of SingleSet class, which is being diff --git a/runtime/src/main/kotlin/kotlin/text/regex/sets/SupplementaryRangeSet.kt b/runtime/src/main/kotlin/kotlin/text/regex/sets/SupplementaryRangeSet.kt index 9f79bc26315..9470e030b2c 100644 --- a/runtime/src/main/kotlin/kotlin/text/regex/sets/SupplementaryRangeSet.kt +++ b/runtime/src/main/kotlin/kotlin/text/regex/sets/SupplementaryRangeSet.kt @@ -145,18 +145,3 @@ open internal class SupplementaryRangeSet(charClass: AbstractCharClass, val igno override fun hasConsumed(matchResult: MatchResultImpl): Boolean = true } - - - - - - - - - - - - - - -