diff --git a/.github/workflows/commit-grammar.yml b/.github/workflows/commit-grammar.yml index 52e72b3..47760e6 100644 --- a/.github/workflows/commit-grammar.yml +++ b/.github/workflows/commit-grammar.yml @@ -14,14 +14,14 @@ jobs: uses: actions/setup-java@v1 with: java-version: 1.8 - - name: Download ANTLR 4.6 + - name: Download ANTLR 4.9.2 working-directory: /tmp run: | - wget https://www.antlr.org/download/antlr-4.6-complete.jar + wget https://www.antlr.org/download/antlr-4.9.2-complete.jar - name: Update grammar working-directory: kin/grammar run: | - java -jar /tmp/antlr-4.6-complete.jar PBXProj.g4 -Dlanguage=Python2 + java -jar /tmp/antlr-4.9.2-complete.jar PBXProj.g4 -Dlanguage=Python3 - name: Commit changes run: | git add kin/grammar diff --git a/.github/workflows/python-package.yml b/.github/workflows/python-package.yml index 3491f44..a54915d 100644 --- a/.github/workflows/python-package.yml +++ b/.github/workflows/python-package.yml @@ -20,14 +20,14 @@ jobs: uses: actions/setup-java@v1 with: java-version: 1.8 - - name: Download ANTLR 4.6 + - name: Download ANTLR 4.9.2 working-directory: /tmp run: | - wget https://www.antlr.org/download/antlr-4.6-complete.jar + wget https://www.antlr.org/download/antlr-4.9.2-complete.jar - name: Generate grammar working-directory: kin/grammar run: | - java -jar /tmp/antlr-4.6-complete.jar PBXProj.g4 -Dlanguage=Python2 + java -jar /tmp/antlr-4.9.2-complete.jar PBXProj.g4 -Dlanguage=Python3 - name: Upload grammar uses: actions/upload-artifact@master with: @@ -40,7 +40,7 @@ jobs: runs-on: ubuntu-latest strategy: matrix: - python-version: [2.7] + python-version: ['3.x'] steps: - uses: actions/checkout@v2 diff --git a/.github/workflows/python-publish.yml b/.github/workflows/python-publish.yml index 358da37..1a03a7b 100644 --- a/.github/workflows/python-publish.yml +++ b/.github/workflows/python-publish.yml @@ -17,7 +17,7 @@ jobs: - name: Set up Python uses: actions/setup-python@v2 with: - python-version: '2.x' + python-version: '3.x' - name: Install dependencies run: | python -m pip install --upgrade pip diff --git a/README.md b/README.md index a1b0afb..733a769 100644 --- a/README.md +++ b/README.md @@ -65,19 +65,17 @@ Do you want to contribute? Feel free to add any useful feature to Kin, we will be glad to improve it with your help. -If you modify the grammar file (`PBXProj.g4`), make sure you compile it using [ANTLR](https://www.antlr.org/). ANLTR version 4.6 can be installed with the following commands (the current version is 4.8 but is not compatible): +If you modify the grammar file (`PBXProj.g4`), make sure you compile it using [ANTLR](https://www.antlr.org/). ANLTR can be installed with the following command: ```bash -curl -O https://raw.githubusercontent.com/Homebrew/homebrew-core/92cd4dbae4ae77853e3693b4eb3c24d71855103f/Formula/antlr.rb -sed -i -e 's/EOS.undent/EOS/g' antlr.rb -brew install antlr.rb +brew install antlr ``` After changes have been made to the `PBXProj.g4` file it can be compiled with: ```bash cd kin/grammar -bash /usr/local/Cellar/antlr/4.6/bin/antlr4 PBXProj.g4 -Dlanguage=Python2 +antlr4 PBXProj.g4 -Dlanguage=Python3 ``` The updated files can optionally be copied with this command for testing: diff --git a/kin/grammar/PBXProj.interp b/kin/grammar/PBXProj.interp new file mode 100644 index 0000000..3721870 --- /dev/null +++ b/kin/grammar/PBXProj.interp @@ -0,0 +1,434 @@ +token literal names: +null +'{' +'}' +'archiveVersion' +'=' +';' +'objectVersion' +'PBXAggregateTarget' +'PBXBuildFile' +'PBXContainerItemProxy' +'PBXCopyFilesBuildPhase' +'PBXFileReference' +'PBXFrameworksBuildPhase' +'PBXGroup' +'PBXHeadersBuildPhase' +'PBXNativeTarget' +'PBXProject' +'PBXReferenceProxy' +'PBXResourcesBuildPhase' +'PBXShellScriptBuildPhase' +'PBXSourcesBuildPhase' +'PBXTargetDependency' +'PBXVariantGroup' +'XCBuildConfiguration' +'XCConfigurationList' +'XCRemoteSwiftPackageReference' +'XCSwiftPackageProductDependency' +'XCVersionGroup' +'fileRef' +'productRef' +'containerPortal' +'proxyType' +'remoteGlobalIDString' +'remoteInfo' +'fileEncoding' +'explicitFileType' +'lastKnownFileType' +'includeInIndex' +'indentWidth' +'tabWidth' +'usesTabs' +'children' +'productInstallPath' +'repositoryURL' +'requirement' +'package' +'packageProductDependencies' +'name' +'path' +'sourceTree' +'buildActionMask' +'files' +'runOnlyForDeploymentPostprocessing' +'(' +',' +')' +'buildConfigurationList' +'buildPhases' +'buildRules' +'dependencies' +'productName' +'productReference' +'productType' +'lineEnding' +'xcLanguageSpecificationIdentifier' +'plistStructureDefinitionIdentifier' +'attributes' +'LastSwiftMigration' +'DefaultBuildSystemTypeForWorkspace' +'LastSwiftUpdateCheck' +'BuildIndependentTargetsInParallel' +'LastUpgradeCheck' +'LastTestingUpgradeCheck' +'ORGANIZATIONNAME' +'TargetAttributes' +'CreatedOnToolsVersion' +'TestTargetID' +'DevelopmentTeam' +'ProvisioningStyle' +'compatibilityVersion' +'developmentRegion' +'hasScannedForEncodings' +'knownRegions' +'mainGroup' +'productRefGroup' +'packageReferences' +'projectDirPath' +'projectReferences' +'projectRoot' +'targets' +'inputFileListPaths' +'inputPaths' +'outputFileListPaths' +'outputPaths' +'shellPath' +'shellScript' +'showEnvVarsInLog' +'target' +'targetProxy' +'fileType' +'remoteRef' +'baseConfigurationReference' +'buildSettings' +'dstPath' +'dstSubfolderSpec' +'ProductGroup' +'ProjectRef' +'buildConfigurations' +'defaultConfigurationIsVisible' +'defaultConfigurationName' +'settings' +'SystemCapabilities' +'currentVersion' +'versionGroupType' +'CLASSPREFIX' +'classes' +'isa' +'objects' +'rootObject' +null +'.' +null +null +'-' +'_' +'/' +null +null +null +null +null +null +null + +token symbolic names: +null +null +null +null +null +null +null +null +null +null +null +null +null +null +null +null +null +null +null +null +null +null +null +null +null +null +null +null +null +null +null +null +null +null +null +null +null +null +null +null +null +null +null +null +null +null +null +null +null +null +null +null +null +null +null +null +null +null +null +null +null +null +null +null +null +null +null +null +null +null +null +null +null +null +null +null +null +null +null +null +null +null +null +null +null +null +null +null +null +null +null +null +null +null +null +null +null +null +null +null +null +null +null +null +null +null +null +null +null +null +null +null +null +null +null +CLASSES +ISA +OBJECTS +ROOT_OBJECT +NUMBER +DOT +ALPHA_NUMERIC +ALPHA_NUMERIC_CAP +DASH +UNDERSCORE +SLASH +REFERENCE +QUOTED_STRING +NON_QUOTED_STRING +VARIABLE +WS +COMMENT +LINE_COMMENT + +rule names: +start +root_element +archive_version +classes +object_version +objects +root_object +pbx_aggregate_target_section +pbx_build_file_section +pbx_container_item_proxy_section +pbx_copy_files_build_phase_section +pbx_file_reference_section +pbx_frameworks_build_phase_section +pbx_group_section +pbx_headers_build_phase_section +pbx_native_target_section +pbx_project_section +pbx_reference_proxy_section +pbx_resources_build_phase_section +pbx_shell_script_build_phase_section +pbx_sources_build_phase_section +pbx_target_dependency_section +pbx_variant_group_section +xc_build_configuration_section +xc_configuration_list_section +xc_remote_swift_package_reference_section +xc_swift_package_product_dependency_section +xc_version_group_section +pbx_aggregate_target +pbx_build_file +pbx_container_item_proxy +pbx_copy_files_build_phase +pbx_file_reference +pbx_frameworks_build_phase +pbx_group +pbx_headers_build_phase +pbx_native_target +pbx_project +pbx_reference_proxy +pbx_resources_build_phase +pbx_shell_script_build_phase +pbx_sources_build_phase +pbx_target_dependency +pbx_variant_group +xc_build_configuration +xc_configuration_list +xc_remote_swift_package_reference +xc_swift_package_product_dependency +xc_version_group +isa_pbx_aggregate_target +isa_pbx_build_file +isa_pbx_container_item_proxy +isa_pbx_copy_files_build_phase +isa_pbx_file_reference +isa_pbx_frameworks_build_phase +isa_pbx_group +isa_pbx_header_build_phase +isa_pbx_native_target +isa_pbx_project +isa_pbx_reference_proxy +isa_pbx_resources_build_phase +isa_pbx_shell_script_build_phase +isa_pbx_sources_build_phase +isa_pbx_target_dependency +isa_pbx_variant_group +isa_xc_build_configuration +isa_xc_configuration_list +isa_xc_remote_swift_package_reference +isa_xc_swift_package_product_dependency +isa_xc_version_group +file_ref +container_portal +proxy_type +remote_global_id_string +remote_info +file_encoding +explicit_file_type +last_known_file_type +include_in_index +indent_width +tab_width +uses_tabs +children +product_install_path +repository_url +requirement +xc_package +package_product_dependencies +name +path +source_tree +build_action_mask +files +run_only_for_deployment_postprocessing +reference_list +any_string_list +non_quoted_strings_list +build_configuration_list +build_phases +build_rules +dependencies +product_name +product_reference +product_type +line_ending +xc_language_specification_identifier +plist_structure_definition_identifier +attributes +last_swift_migration +default_build_system_type_for_workspace +last_swift_update_check +build_targets_in_parallel +last_upgrade_check +last_testing_upgrade_check +organization_name +target_attributes +target_attribute +created_on_tools_version +test_target_id +development_team +provisioning_style +compatibility_version +development_region +has_scanned_for_encodings +known_regions +main_group +product_ref_group +package_references +project_dir_path +project_references +project_root +targets +input_file_list_paths +input_paths +output_file_list_paths +output_paths +shell_path +shell_script +show_env_vars_in_log +target +target_proxy +file_type +remote_ref +base_configuration_reference +build_settings +dst_path +dst_subfolder_spec +project_references_list +project_references_list_element +key_value +build_configurations +default_configuration_is_visible +default_configuration_name +settings +system_capabilities +current_version +version_group_type +class_prefix +any_string + + +atn: +[3, 24715, 42794, 33075, 47597, 16764, 15335, 30598, 22884, 3, 134, 1531, 4, 2, 9, 2, 4, 3, 9, 3, 4, 4, 9, 4, 4, 5, 9, 5, 4, 6, 9, 6, 4, 7, 9, 7, 4, 8, 9, 8, 4, 9, 9, 9, 4, 10, 9, 10, 4, 11, 9, 11, 4, 12, 9, 12, 4, 13, 9, 13, 4, 14, 9, 14, 4, 15, 9, 15, 4, 16, 9, 16, 4, 17, 9, 17, 4, 18, 9, 18, 4, 19, 9, 19, 4, 20, 9, 20, 4, 21, 9, 21, 4, 22, 9, 22, 4, 23, 9, 23, 4, 24, 9, 24, 4, 25, 9, 25, 4, 26, 9, 26, 4, 27, 9, 27, 4, 28, 9, 28, 4, 29, 9, 29, 4, 30, 9, 30, 4, 31, 9, 31, 4, 32, 9, 32, 4, 33, 9, 33, 4, 34, 9, 34, 4, 35, 9, 35, 4, 36, 9, 36, 4, 37, 9, 37, 4, 38, 9, 38, 4, 39, 9, 39, 4, 40, 9, 40, 4, 41, 9, 41, 4, 42, 9, 42, 4, 43, 9, 43, 4, 44, 9, 44, 4, 45, 9, 45, 4, 46, 9, 46, 4, 47, 9, 47, 4, 48, 9, 48, 4, 49, 9, 49, 4, 50, 9, 50, 4, 51, 9, 51, 4, 52, 9, 52, 4, 53, 9, 53, 4, 54, 9, 54, 4, 55, 9, 55, 4, 56, 9, 56, 4, 57, 9, 57, 4, 58, 9, 58, 4, 59, 9, 59, 4, 60, 9, 60, 4, 61, 9, 61, 4, 62, 9, 62, 4, 63, 9, 63, 4, 64, 9, 64, 4, 65, 9, 65, 4, 66, 9, 66, 4, 67, 9, 67, 4, 68, 9, 68, 4, 69, 9, 69, 4, 70, 9, 70, 4, 71, 9, 71, 4, 72, 9, 72, 4, 73, 9, 73, 4, 74, 9, 74, 4, 75, 9, 75, 4, 76, 9, 76, 4, 77, 9, 77, 4, 78, 9, 78, 4, 79, 9, 79, 4, 80, 9, 80, 4, 81, 9, 81, 4, 82, 9, 82, 4, 83, 9, 83, 4, 84, 9, 84, 4, 85, 9, 85, 4, 86, 9, 86, 4, 87, 9, 87, 4, 88, 9, 88, 4, 89, 9, 89, 4, 90, 9, 90, 4, 91, 9, 91, 4, 92, 9, 92, 4, 93, 9, 93, 4, 94, 9, 94, 4, 95, 9, 95, 4, 96, 9, 96, 4, 97, 9, 97, 4, 98, 9, 98, 4, 99, 9, 99, 4, 100, 9, 100, 4, 101, 9, 101, 4, 102, 9, 102, 4, 103, 9, 103, 4, 104, 9, 104, 4, 105, 9, 105, 4, 106, 9, 106, 4, 107, 9, 107, 4, 108, 9, 108, 4, 109, 9, 109, 4, 110, 9, 110, 4, 111, 9, 111, 4, 112, 9, 112, 4, 113, 9, 113, 4, 114, 9, 114, 4, 115, 9, 115, 4, 116, 9, 116, 4, 117, 9, 117, 4, 118, 9, 118, 4, 119, 9, 119, 4, 120, 9, 120, 4, 121, 9, 121, 4, 122, 9, 122, 4, 123, 9, 123, 4, 124, 9, 124, 4, 125, 9, 125, 4, 126, 9, 126, 4, 127, 9, 127, 4, 128, 9, 128, 4, 129, 9, 129, 4, 130, 9, 130, 4, 131, 9, 131, 4, 132, 9, 132, 4, 133, 9, 133, 4, 134, 9, 134, 4, 135, 9, 135, 4, 136, 9, 136, 4, 137, 9, 137, 4, 138, 9, 138, 4, 139, 9, 139, 4, 140, 9, 140, 4, 141, 9, 141, 4, 142, 9, 142, 4, 143, 9, 143, 4, 144, 9, 144, 4, 145, 9, 145, 4, 146, 9, 146, 4, 147, 9, 147, 4, 148, 9, 148, 4, 149, 9, 149, 4, 150, 9, 150, 4, 151, 9, 151, 4, 152, 9, 152, 4, 153, 9, 153, 4, 154, 9, 154, 4, 155, 9, 155, 4, 156, 9, 156, 4, 157, 9, 157, 4, 158, 9, 158, 4, 159, 9, 159, 4, 160, 9, 160, 3, 2, 3, 2, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 5, 3, 5, 3, 5, 3, 5, 3, 5, 3, 5, 3, 6, 3, 6, 3, 6, 3, 6, 3, 6, 3, 7, 3, 7, 3, 7, 3, 7, 5, 7, 351, 10, 7, 3, 7, 3, 7, 5, 7, 355, 10, 7, 3, 7, 5, 7, 358, 10, 7, 3, 7, 3, 7, 3, 7, 3, 7, 5, 7, 364, 10, 7, 3, 7, 5, 7, 367, 10, 7, 3, 7, 3, 7, 5, 7, 371, 10, 7, 3, 7, 5, 7, 374, 10, 7, 3, 7, 5, 7, 377, 10, 7, 3, 7, 3, 7, 5, 7, 381, 10, 7, 3, 7, 5, 7, 384, 10, 7, 3, 7, 3, 7, 3, 7, 5, 7, 389, 10, 7, 3, 7, 5, 7, 392, 10, 7, 3, 7, 5, 7, 395, 10, 7, 3, 7, 3, 7, 3, 7, 3, 8, 3, 8, 3, 8, 3, 8, 3, 8, 3, 9, 6, 9, 406, 10, 9, 13, 9, 14, 9, 407, 3, 10, 6, 10, 411, 10, 10, 13, 10, 14, 10, 412, 3, 11, 6, 11, 416, 10, 11, 13, 11, 14, 11, 417, 3, 12, 6, 12, 421, 10, 12, 13, 12, 14, 12, 422, 3, 13, 6, 13, 426, 10, 13, 13, 13, 14, 13, 427, 3, 14, 6, 14, 431, 10, 14, 13, 14, 14, 14, 432, 3, 15, 6, 15, 436, 10, 15, 13, 15, 14, 15, 437, 3, 16, 6, 16, 441, 10, 16, 13, 16, 14, 16, 442, 3, 17, 6, 17, 446, 10, 17, 13, 17, 14, 17, 447, 3, 18, 6, 18, 451, 10, 18, 13, 18, 14, 18, 452, 3, 19, 6, 19, 456, 10, 19, 13, 19, 14, 19, 457, 3, 20, 6, 20, 461, 10, 20, 13, 20, 14, 20, 462, 3, 21, 6, 21, 466, 10, 21, 13, 21, 14, 21, 467, 3, 22, 6, 22, 471, 10, 22, 13, 22, 14, 22, 472, 3, 23, 6, 23, 476, 10, 23, 13, 23, 14, 23, 477, 3, 24, 6, 24, 481, 10, 24, 13, 24, 14, 24, 482, 3, 25, 6, 25, 486, 10, 25, 13, 25, 14, 25, 487, 3, 26, 6, 26, 491, 10, 26, 13, 26, 14, 26, 492, 3, 27, 6, 27, 496, 10, 27, 13, 27, 14, 27, 497, 3, 28, 6, 28, 501, 10, 28, 13, 28, 14, 28, 502, 3, 29, 6, 29, 506, 10, 29, 13, 29, 14, 29, 507, 3, 30, 3, 30, 3, 30, 3, 30, 3, 30, 3, 30, 3, 30, 3, 30, 3, 30, 3, 30, 3, 30, 3, 30, 3, 31, 3, 31, 3, 31, 3, 31, 3, 31, 3, 31, 5, 31, 528, 10, 31, 3, 31, 3, 31, 3, 31, 3, 32, 3, 32, 3, 32, 3, 32, 3, 32, 3, 32, 3, 32, 3, 32, 3, 32, 3, 32, 3, 32, 3, 33, 3, 33, 3, 33, 3, 33, 3, 33, 3, 33, 3, 33, 3, 33, 3, 33, 5, 33, 553, 10, 33, 3, 33, 3, 33, 3, 33, 3, 33, 3, 34, 3, 34, 3, 34, 3, 34, 3, 34, 5, 34, 564, 10, 34, 3, 34, 5, 34, 567, 10, 34, 3, 34, 5, 34, 570, 10, 34, 3, 34, 5, 34, 573, 10, 34, 3, 34, 5, 34, 576, 10, 34, 3, 34, 5, 34, 579, 10, 34, 3, 34, 5, 34, 582, 10, 34, 3, 34, 5, 34, 585, 10, 34, 3, 34, 5, 34, 588, 10, 34, 3, 34, 5, 34, 591, 10, 34, 3, 34, 5, 34, 594, 10, 34, 3, 34, 3, 34, 3, 34, 3, 35, 3, 35, 3, 35, 3, 35, 3, 35, 3, 35, 3, 35, 3, 35, 3, 35, 3, 35, 3, 36, 3, 36, 3, 36, 3, 36, 3, 36, 3, 36, 5, 36, 615, 10, 36, 3, 36, 5, 36, 618, 10, 36, 3, 36, 5, 36, 621, 10, 36, 3, 36, 3, 36, 5, 36, 625, 10, 36, 3, 36, 5, 36, 628, 10, 36, 3, 36, 3, 36, 3, 36, 3, 37, 3, 37, 3, 37, 3, 37, 3, 37, 3, 37, 3, 37, 3, 37, 3, 37, 3, 37, 3, 38, 3, 38, 3, 38, 3, 38, 3, 38, 3, 38, 3, 38, 3, 38, 3, 38, 3, 38, 5, 38, 653, 10, 38, 3, 38, 5, 38, 656, 10, 38, 3, 38, 3, 38, 3, 38, 3, 38, 3, 38, 3, 38, 3, 39, 3, 39, 3, 39, 3, 39, 3, 39, 3, 39, 3, 39, 3, 39, 3, 39, 3, 39, 3, 39, 3, 39, 5, 39, 676, 10, 39, 3, 39, 5, 39, 679, 10, 39, 3, 39, 3, 39, 5, 39, 683, 10, 39, 3, 39, 3, 39, 3, 39, 3, 39, 3, 39, 3, 40, 3, 40, 3, 40, 3, 40, 3, 40, 3, 40, 3, 40, 3, 40, 3, 40, 3, 40, 3, 40, 3, 41, 3, 41, 3, 41, 3, 41, 3, 41, 3, 41, 3, 41, 3, 41, 3, 41, 3, 41, 3, 42, 3, 42, 3, 42, 3, 42, 3, 42, 3, 42, 3, 42, 5, 42, 718, 10, 42, 3, 42, 3, 42, 5, 42, 722, 10, 42, 3, 42, 5, 42, 725, 10, 42, 3, 42, 3, 42, 3, 42, 3, 42, 3, 42, 5, 42, 732, 10, 42, 3, 42, 3, 42, 3, 42, 3, 43, 3, 43, 3, 43, 3, 43, 3, 43, 3, 43, 3, 43, 3, 43, 3, 43, 3, 43, 3, 44, 3, 44, 3, 44, 3, 44, 3, 44, 5, 44, 752, 10, 44, 3, 44, 5, 44, 755, 10, 44, 3, 44, 3, 44, 3, 44, 3, 44, 3, 45, 3, 45, 3, 45, 3, 45, 3, 45, 3, 45, 3, 45, 5, 45, 768, 10, 45, 3, 45, 3, 45, 3, 45, 3, 45, 3, 46, 3, 46, 3, 46, 3, 46, 3, 46, 5, 46, 779, 10, 46, 3, 46, 3, 46, 3, 46, 3, 46, 3, 46, 3, 47, 3, 47, 3, 47, 3, 47, 3, 47, 3, 47, 3, 47, 5, 47, 793, 10, 47, 3, 47, 3, 47, 3, 47, 3, 48, 3, 48, 3, 48, 3, 48, 3, 48, 3, 48, 3, 48, 3, 48, 3, 48, 3, 49, 3, 49, 3, 49, 3, 49, 3, 49, 3, 49, 3, 49, 3, 49, 3, 49, 3, 50, 3, 50, 3, 50, 3, 50, 3, 50, 3, 50, 3, 50, 3, 50, 3, 50, 3, 50, 3, 50, 3, 50, 3, 51, 3, 51, 3, 51, 3, 51, 3, 51, 3, 52, 3, 52, 3, 52, 3, 52, 3, 52, 3, 53, 3, 53, 3, 53, 3, 53, 3, 53, 3, 54, 3, 54, 3, 54, 3, 54, 3, 54, 3, 55, 3, 55, 3, 55, 3, 55, 3, 55, 3, 56, 3, 56, 3, 56, 3, 56, 3, 56, 3, 57, 3, 57, 3, 57, 3, 57, 3, 57, 3, 58, 3, 58, 3, 58, 3, 58, 3, 58, 3, 59, 3, 59, 3, 59, 3, 59, 3, 59, 3, 60, 3, 60, 3, 60, 3, 60, 3, 60, 3, 61, 3, 61, 3, 61, 3, 61, 3, 61, 3, 62, 3, 62, 3, 62, 3, 62, 3, 62, 3, 63, 3, 63, 3, 63, 3, 63, 3, 63, 3, 64, 3, 64, 3, 64, 3, 64, 3, 64, 3, 65, 3, 65, 3, 65, 3, 65, 3, 65, 3, 66, 3, 66, 3, 66, 3, 66, 3, 66, 3, 67, 3, 67, 3, 67, 3, 67, 3, 67, 3, 68, 3, 68, 3, 68, 3, 68, 3, 68, 3, 69, 3, 69, 3, 69, 3, 69, 3, 69, 3, 70, 3, 70, 3, 70, 3, 70, 3, 70, 3, 71, 3, 71, 3, 71, 3, 71, 3, 71, 3, 72, 3, 72, 3, 72, 3, 72, 3, 72, 3, 72, 3, 72, 3, 72, 5, 72, 941, 10, 72, 3, 73, 3, 73, 3, 73, 3, 73, 3, 73, 3, 74, 3, 74, 3, 74, 3, 74, 3, 74, 3, 75, 3, 75, 3, 75, 3, 75, 3, 75, 3, 76, 3, 76, 3, 76, 3, 76, 3, 76, 3, 77, 3, 77, 3, 77, 3, 77, 3, 77, 3, 78, 3, 78, 3, 78, 3, 78, 3, 78, 3, 79, 3, 79, 3, 79, 3, 79, 3, 79, 3, 80, 3, 80, 3, 80, 3, 80, 3, 80, 3, 81, 3, 81, 3, 81, 3, 81, 3, 81, 3, 82, 3, 82, 3, 82, 3, 82, 3, 82, 3, 83, 3, 83, 3, 83, 3, 83, 3, 83, 3, 84, 3, 84, 3, 84, 3, 84, 3, 84, 3, 85, 3, 85, 3, 85, 3, 85, 3, 85, 3, 86, 3, 86, 3, 86, 3, 86, 3, 86, 3, 87, 3, 87, 3, 87, 3, 87, 7, 87, 1017, 10, 87, 12, 87, 14, 87, 1020, 11, 87, 3, 87, 3, 87, 3, 87, 3, 88, 3, 88, 3, 88, 3, 88, 3, 88, 3, 89, 3, 89, 3, 89, 3, 89, 3, 89, 3, 90, 3, 90, 3, 90, 3, 90, 3, 90, 3, 91, 3, 91, 3, 91, 3, 91, 3, 91, 3, 92, 3, 92, 3, 92, 3, 92, 3, 92, 3, 93, 3, 93, 3, 93, 3, 93, 3, 93, 3, 94, 3, 94, 3, 94, 3, 94, 3, 94, 3, 95, 3, 95, 3, 95, 3, 95, 3, 95, 3, 96, 3, 96, 3, 96, 7, 96, 1068, 10, 96, 12, 96, 14, 96, 1071, 11, 96, 3, 96, 3, 96, 3, 97, 3, 97, 3, 97, 3, 97, 7, 97, 1079, 10, 97, 12, 97, 14, 97, 1082, 11, 97, 3, 97, 3, 97, 3, 98, 3, 98, 3, 98, 7, 98, 1089, 10, 98, 12, 98, 14, 98, 1092, 11, 98, 3, 98, 3, 98, 3, 99, 3, 99, 3, 99, 3, 99, 3, 99, 3, 100, 3, 100, 3, 100, 3, 100, 3, 100, 3, 101, 3, 101, 3, 101, 3, 101, 3, 101, 3, 102, 3, 102, 3, 102, 3, 102, 3, 102, 3, 103, 3, 103, 3, 103, 3, 103, 3, 103, 3, 104, 3, 104, 3, 104, 3, 104, 3, 104, 3, 105, 3, 105, 3, 105, 3, 105, 3, 105, 3, 106, 3, 106, 3, 106, 3, 106, 3, 106, 3, 107, 3, 107, 3, 107, 3, 107, 3, 107, 3, 108, 3, 108, 3, 108, 3, 108, 3, 108, 3, 109, 3, 109, 3, 109, 3, 109, 5, 109, 1150, 10, 109, 3, 109, 5, 109, 1153, 10, 109, 3, 109, 5, 109, 1156, 10, 109, 3, 109, 5, 109, 1159, 10, 109, 3, 109, 5, 109, 1162, 10, 109, 3, 109, 5, 109, 1165, 10, 109, 3, 109, 5, 109, 1168, 10, 109, 3, 109, 5, 109, 1171, 10, 109, 3, 109, 5, 109, 1174, 10, 109, 3, 109, 3, 109, 3, 109, 3, 110, 3, 110, 3, 110, 3, 110, 3, 110, 3, 111, 3, 111, 3, 111, 3, 111, 3, 111, 3, 112, 3, 112, 3, 112, 3, 112, 3, 112, 3, 113, 3, 113, 3, 113, 3, 113, 3, 113, 3, 114, 3, 114, 3, 114, 3, 114, 3, 114, 3, 115, 3, 115, 3, 115, 3, 115, 3, 115, 3, 116, 3, 116, 3, 116, 3, 116, 3, 116, 3, 117, 3, 117, 3, 117, 3, 117, 7, 117, 1218, 10, 117, 12, 117, 14, 117, 1221, 11, 117, 3, 117, 3, 117, 3, 117, 3, 118, 3, 118, 3, 118, 3, 118, 5, 118, 1230, 10, 118, 3, 118, 5, 118, 1233, 10, 118, 3, 118, 5, 118, 1236, 10, 118, 3, 118, 5, 118, 1239, 10, 118, 3, 118, 5, 118, 1242, 10, 118, 3, 118, 5, 118, 1245, 10, 118, 3, 118, 5, 118, 1248, 10, 118, 3, 118, 3, 118, 3, 118, 3, 119, 3, 119, 3, 119, 3, 119, 3, 119, 3, 120, 3, 120, 3, 120, 3, 120, 3, 120, 3, 121, 3, 121, 3, 121, 3, 121, 3, 121, 3, 122, 3, 122, 3, 122, 3, 122, 3, 122, 3, 123, 3, 123, 3, 123, 3, 123, 3, 123, 3, 124, 3, 124, 3, 124, 3, 124, 3, 124, 3, 125, 3, 125, 3, 125, 3, 125, 3, 125, 3, 126, 3, 126, 3, 126, 3, 126, 3, 126, 3, 127, 3, 127, 3, 127, 3, 127, 3, 127, 3, 128, 3, 128, 3, 128, 3, 128, 3, 128, 3, 129, 3, 129, 3, 129, 3, 129, 3, 129, 3, 130, 3, 130, 3, 130, 3, 130, 3, 130, 3, 131, 3, 131, 3, 131, 3, 131, 3, 131, 3, 131, 3, 131, 3, 131, 3, 131, 3, 131, 3, 131, 3, 131, 5, 131, 1325, 10, 131, 3, 132, 3, 132, 3, 132, 3, 132, 3, 132, 3, 133, 3, 133, 3, 133, 3, 133, 3, 133, 3, 134, 3, 134, 3, 134, 3, 134, 3, 134, 3, 135, 3, 135, 3, 135, 3, 135, 3, 135, 3, 136, 3, 136, 3, 136, 3, 136, 3, 136, 3, 137, 3, 137, 3, 137, 3, 137, 3, 137, 3, 138, 3, 138, 3, 138, 3, 138, 3, 138, 3, 139, 3, 139, 3, 139, 3, 139, 3, 139, 3, 140, 3, 140, 3, 140, 3, 140, 3, 140, 3, 141, 3, 141, 3, 141, 3, 141, 3, 141, 3, 142, 3, 142, 3, 142, 3, 142, 3, 142, 3, 143, 3, 143, 3, 143, 3, 143, 3, 143, 3, 144, 3, 144, 3, 144, 3, 144, 3, 144, 3, 145, 3, 145, 3, 145, 3, 145, 3, 145, 3, 146, 3, 146, 3, 146, 3, 146, 7, 146, 1401, 10, 146, 12, 146, 14, 146, 1404, 11, 146, 3, 146, 3, 146, 3, 146, 3, 147, 3, 147, 3, 147, 3, 147, 3, 147, 3, 148, 3, 148, 3, 148, 3, 148, 3, 148, 3, 149, 7, 149, 1420, 10, 149, 12, 149, 14, 149, 1423, 11, 149, 3, 150, 3, 150, 3, 150, 3, 150, 3, 150, 3, 150, 3, 150, 3, 150, 3, 150, 3, 150, 3, 150, 3, 150, 3, 151, 3, 151, 3, 151, 3, 151, 3, 151, 3, 151, 3, 151, 3, 151, 3, 151, 3, 151, 3, 151, 3, 151, 3, 151, 3, 151, 3, 151, 3, 151, 3, 151, 3, 151, 3, 151, 3, 151, 3, 151, 3, 151, 3, 151, 3, 151, 3, 151, 3, 151, 3, 151, 3, 151, 7, 151, 1465, 10, 151, 12, 151, 14, 151, 1468, 11, 151, 3, 151, 3, 151, 3, 151, 5, 151, 1473, 10, 151, 3, 152, 3, 152, 3, 152, 3, 152, 3, 152, 3, 153, 3, 153, 3, 153, 3, 153, 3, 153, 3, 154, 3, 154, 3, 154, 3, 154, 3, 154, 3, 155, 3, 155, 3, 155, 3, 155, 7, 155, 1494, 10, 155, 12, 155, 14, 155, 1497, 11, 155, 3, 155, 3, 155, 3, 155, 3, 156, 3, 156, 3, 156, 3, 156, 7, 156, 1506, 10, 156, 12, 156, 14, 156, 1509, 11, 156, 3, 156, 3, 156, 3, 156, 3, 157, 3, 157, 3, 157, 3, 157, 3, 157, 3, 158, 3, 158, 3, 158, 3, 158, 3, 158, 3, 159, 3, 159, 3, 159, 3, 159, 3, 159, 3, 160, 3, 160, 3, 160, 2, 2, 161, 2, 4, 6, 8, 10, 12, 14, 16, 18, 20, 22, 24, 26, 28, 30, 32, 34, 36, 38, 40, 42, 44, 46, 48, 50, 52, 54, 56, 58, 60, 62, 64, 66, 68, 70, 72, 74, 76, 78, 80, 82, 84, 86, 88, 90, 92, 94, 96, 98, 100, 102, 104, 106, 108, 110, 112, 114, 116, 118, 120, 122, 124, 126, 128, 130, 132, 134, 136, 138, 140, 142, 144, 146, 148, 150, 152, 154, 156, 158, 160, 162, 164, 166, 168, 170, 172, 174, 176, 178, 180, 182, 184, 186, 188, 190, 192, 194, 196, 198, 200, 202, 204, 206, 208, 210, 212, 214, 216, 218, 220, 222, 224, 226, 228, 230, 232, 234, 236, 238, 240, 242, 244, 246, 248, 250, 252, 254, 256, 258, 260, 262, 264, 266, 268, 270, 272, 274, 276, 278, 280, 282, 284, 286, 288, 290, 292, 294, 296, 298, 300, 302, 304, 306, 308, 310, 312, 314, 316, 318, 2, 4, 3, 2, 129, 130, 4, 2, 121, 121, 129, 131, 2, 1469, 2, 320, 3, 2, 2, 2, 4, 322, 3, 2, 2, 2, 6, 330, 3, 2, 2, 2, 8, 335, 3, 2, 2, 2, 10, 341, 3, 2, 2, 2, 12, 346, 3, 2, 2, 2, 14, 399, 3, 2, 2, 2, 16, 405, 3, 2, 2, 2, 18, 410, 3, 2, 2, 2, 20, 415, 3, 2, 2, 2, 22, 420, 3, 2, 2, 2, 24, 425, 3, 2, 2, 2, 26, 430, 3, 2, 2, 2, 28, 435, 3, 2, 2, 2, 30, 440, 3, 2, 2, 2, 32, 445, 3, 2, 2, 2, 34, 450, 3, 2, 2, 2, 36, 455, 3, 2, 2, 2, 38, 460, 3, 2, 2, 2, 40, 465, 3, 2, 2, 2, 42, 470, 3, 2, 2, 2, 44, 475, 3, 2, 2, 2, 46, 480, 3, 2, 2, 2, 48, 485, 3, 2, 2, 2, 50, 490, 3, 2, 2, 2, 52, 495, 3, 2, 2, 2, 54, 500, 3, 2, 2, 2, 56, 505, 3, 2, 2, 2, 58, 509, 3, 2, 2, 2, 60, 521, 3, 2, 2, 2, 62, 532, 3, 2, 2, 2, 64, 543, 3, 2, 2, 2, 66, 558, 3, 2, 2, 2, 68, 598, 3, 2, 2, 2, 70, 608, 3, 2, 2, 2, 72, 632, 3, 2, 2, 2, 74, 642, 3, 2, 2, 2, 76, 663, 3, 2, 2, 2, 78, 689, 3, 2, 2, 2, 80, 700, 3, 2, 2, 2, 82, 710, 3, 2, 2, 2, 84, 736, 3, 2, 2, 2, 86, 746, 3, 2, 2, 2, 88, 760, 3, 2, 2, 2, 90, 773, 3, 2, 2, 2, 92, 785, 3, 2, 2, 2, 94, 797, 3, 2, 2, 2, 96, 806, 3, 2, 2, 2, 98, 815, 3, 2, 2, 2, 100, 827, 3, 2, 2, 2, 102, 832, 3, 2, 2, 2, 104, 837, 3, 2, 2, 2, 106, 842, 3, 2, 2, 2, 108, 847, 3, 2, 2, 2, 110, 852, 3, 2, 2, 2, 112, 857, 3, 2, 2, 2, 114, 862, 3, 2, 2, 2, 116, 867, 3, 2, 2, 2, 118, 872, 3, 2, 2, 2, 120, 877, 3, 2, 2, 2, 122, 882, 3, 2, 2, 2, 124, 887, 3, 2, 2, 2, 126, 892, 3, 2, 2, 2, 128, 897, 3, 2, 2, 2, 130, 902, 3, 2, 2, 2, 132, 907, 3, 2, 2, 2, 134, 912, 3, 2, 2, 2, 136, 917, 3, 2, 2, 2, 138, 922, 3, 2, 2, 2, 140, 927, 3, 2, 2, 2, 142, 940, 3, 2, 2, 2, 144, 942, 3, 2, 2, 2, 146, 947, 3, 2, 2, 2, 148, 952, 3, 2, 2, 2, 150, 957, 3, 2, 2, 2, 152, 962, 3, 2, 2, 2, 154, 967, 3, 2, 2, 2, 156, 972, 3, 2, 2, 2, 158, 977, 3, 2, 2, 2, 160, 982, 3, 2, 2, 2, 162, 987, 3, 2, 2, 2, 164, 992, 3, 2, 2, 2, 166, 997, 3, 2, 2, 2, 168, 1002, 3, 2, 2, 2, 170, 1007, 3, 2, 2, 2, 172, 1012, 3, 2, 2, 2, 174, 1024, 3, 2, 2, 2, 176, 1029, 3, 2, 2, 2, 178, 1034, 3, 2, 2, 2, 180, 1039, 3, 2, 2, 2, 182, 1044, 3, 2, 2, 2, 184, 1049, 3, 2, 2, 2, 186, 1054, 3, 2, 2, 2, 188, 1059, 3, 2, 2, 2, 190, 1064, 3, 2, 2, 2, 192, 1074, 3, 2, 2, 2, 194, 1085, 3, 2, 2, 2, 196, 1095, 3, 2, 2, 2, 198, 1100, 3, 2, 2, 2, 200, 1105, 3, 2, 2, 2, 202, 1110, 3, 2, 2, 2, 204, 1115, 3, 2, 2, 2, 206, 1120, 3, 2, 2, 2, 208, 1125, 3, 2, 2, 2, 210, 1130, 3, 2, 2, 2, 212, 1135, 3, 2, 2, 2, 214, 1140, 3, 2, 2, 2, 216, 1145, 3, 2, 2, 2, 218, 1178, 3, 2, 2, 2, 220, 1183, 3, 2, 2, 2, 222, 1188, 3, 2, 2, 2, 224, 1193, 3, 2, 2, 2, 226, 1198, 3, 2, 2, 2, 228, 1203, 3, 2, 2, 2, 230, 1208, 3, 2, 2, 2, 232, 1213, 3, 2, 2, 2, 234, 1225, 3, 2, 2, 2, 236, 1252, 3, 2, 2, 2, 238, 1257, 3, 2, 2, 2, 240, 1262, 3, 2, 2, 2, 242, 1267, 3, 2, 2, 2, 244, 1272, 3, 2, 2, 2, 246, 1277, 3, 2, 2, 2, 248, 1282, 3, 2, 2, 2, 250, 1287, 3, 2, 2, 2, 252, 1292, 3, 2, 2, 2, 254, 1297, 3, 2, 2, 2, 256, 1302, 3, 2, 2, 2, 258, 1307, 3, 2, 2, 2, 260, 1324, 3, 2, 2, 2, 262, 1326, 3, 2, 2, 2, 264, 1331, 3, 2, 2, 2, 266, 1336, 3, 2, 2, 2, 268, 1341, 3, 2, 2, 2, 270, 1346, 3, 2, 2, 2, 272, 1351, 3, 2, 2, 2, 274, 1356, 3, 2, 2, 2, 276, 1361, 3, 2, 2, 2, 278, 1366, 3, 2, 2, 2, 280, 1371, 3, 2, 2, 2, 282, 1376, 3, 2, 2, 2, 284, 1381, 3, 2, 2, 2, 286, 1386, 3, 2, 2, 2, 288, 1391, 3, 2, 2, 2, 290, 1396, 3, 2, 2, 2, 292, 1408, 3, 2, 2, 2, 294, 1413, 3, 2, 2, 2, 296, 1421, 3, 2, 2, 2, 298, 1424, 3, 2, 2, 2, 300, 1472, 3, 2, 2, 2, 302, 1474, 3, 2, 2, 2, 304, 1479, 3, 2, 2, 2, 306, 1484, 3, 2, 2, 2, 308, 1489, 3, 2, 2, 2, 310, 1501, 3, 2, 2, 2, 312, 1513, 3, 2, 2, 2, 314, 1518, 3, 2, 2, 2, 316, 1523, 3, 2, 2, 2, 318, 1528, 3, 2, 2, 2, 320, 321, 5, 4, 3, 2, 321, 3, 3, 2, 2, 2, 322, 323, 7, 3, 2, 2, 323, 324, 5, 6, 4, 2, 324, 325, 5, 8, 5, 2, 325, 326, 5, 10, 6, 2, 326, 327, 5, 12, 7, 2, 327, 328, 5, 14, 8, 2, 328, 329, 7, 4, 2, 2, 329, 5, 3, 2, 2, 2, 330, 331, 7, 5, 2, 2, 331, 332, 7, 6, 2, 2, 332, 333, 7, 121, 2, 2, 333, 334, 7, 7, 2, 2, 334, 7, 3, 2, 2, 2, 335, 336, 7, 117, 2, 2, 336, 337, 7, 6, 2, 2, 337, 338, 7, 3, 2, 2, 338, 339, 7, 4, 2, 2, 339, 340, 7, 7, 2, 2, 340, 9, 3, 2, 2, 2, 341, 342, 7, 8, 2, 2, 342, 343, 7, 6, 2, 2, 343, 344, 7, 121, 2, 2, 344, 345, 7, 7, 2, 2, 345, 11, 3, 2, 2, 2, 346, 347, 7, 119, 2, 2, 347, 348, 7, 6, 2, 2, 348, 350, 7, 3, 2, 2, 349, 351, 5, 16, 9, 2, 350, 349, 3, 2, 2, 2, 350, 351, 3, 2, 2, 2, 351, 352, 3, 2, 2, 2, 352, 354, 5, 18, 10, 2, 353, 355, 5, 20, 11, 2, 354, 353, 3, 2, 2, 2, 354, 355, 3, 2, 2, 2, 355, 357, 3, 2, 2, 2, 356, 358, 5, 22, 12, 2, 357, 356, 3, 2, 2, 2, 357, 358, 3, 2, 2, 2, 358, 359, 3, 2, 2, 2, 359, 360, 5, 24, 13, 2, 360, 361, 5, 26, 14, 2, 361, 363, 5, 28, 15, 2, 362, 364, 5, 30, 16, 2, 363, 362, 3, 2, 2, 2, 363, 364, 3, 2, 2, 2, 364, 366, 3, 2, 2, 2, 365, 367, 5, 32, 17, 2, 366, 365, 3, 2, 2, 2, 366, 367, 3, 2, 2, 2, 367, 368, 3, 2, 2, 2, 368, 370, 5, 34, 18, 2, 369, 371, 5, 36, 19, 2, 370, 369, 3, 2, 2, 2, 370, 371, 3, 2, 2, 2, 371, 373, 3, 2, 2, 2, 372, 374, 5, 38, 20, 2, 373, 372, 3, 2, 2, 2, 373, 374, 3, 2, 2, 2, 374, 376, 3, 2, 2, 2, 375, 377, 5, 40, 21, 2, 376, 375, 3, 2, 2, 2, 376, 377, 3, 2, 2, 2, 377, 378, 3, 2, 2, 2, 378, 380, 5, 42, 22, 2, 379, 381, 5, 44, 23, 2, 380, 379, 3, 2, 2, 2, 380, 381, 3, 2, 2, 2, 381, 383, 3, 2, 2, 2, 382, 384, 5, 46, 24, 2, 383, 382, 3, 2, 2, 2, 383, 384, 3, 2, 2, 2, 384, 385, 3, 2, 2, 2, 385, 386, 5, 48, 25, 2, 386, 388, 5, 50, 26, 2, 387, 389, 5, 52, 27, 2, 388, 387, 3, 2, 2, 2, 388, 389, 3, 2, 2, 2, 389, 391, 3, 2, 2, 2, 390, 392, 5, 54, 28, 2, 391, 390, 3, 2, 2, 2, 391, 392, 3, 2, 2, 2, 392, 394, 3, 2, 2, 2, 393, 395, 5, 56, 29, 2, 394, 393, 3, 2, 2, 2, 394, 395, 3, 2, 2, 2, 395, 396, 3, 2, 2, 2, 396, 397, 7, 4, 2, 2, 397, 398, 7, 7, 2, 2, 398, 13, 3, 2, 2, 2, 399, 400, 7, 120, 2, 2, 400, 401, 7, 6, 2, 2, 401, 402, 7, 128, 2, 2, 402, 403, 7, 7, 2, 2, 403, 15, 3, 2, 2, 2, 404, 406, 5, 58, 30, 2, 405, 404, 3, 2, 2, 2, 406, 407, 3, 2, 2, 2, 407, 405, 3, 2, 2, 2, 407, 408, 3, 2, 2, 2, 408, 17, 3, 2, 2, 2, 409, 411, 5, 60, 31, 2, 410, 409, 3, 2, 2, 2, 411, 412, 3, 2, 2, 2, 412, 410, 3, 2, 2, 2, 412, 413, 3, 2, 2, 2, 413, 19, 3, 2, 2, 2, 414, 416, 5, 62, 32, 2, 415, 414, 3, 2, 2, 2, 416, 417, 3, 2, 2, 2, 417, 415, 3, 2, 2, 2, 417, 418, 3, 2, 2, 2, 418, 21, 3, 2, 2, 2, 419, 421, 5, 64, 33, 2, 420, 419, 3, 2, 2, 2, 421, 422, 3, 2, 2, 2, 422, 420, 3, 2, 2, 2, 422, 423, 3, 2, 2, 2, 423, 23, 3, 2, 2, 2, 424, 426, 5, 66, 34, 2, 425, 424, 3, 2, 2, 2, 426, 427, 3, 2, 2, 2, 427, 425, 3, 2, 2, 2, 427, 428, 3, 2, 2, 2, 428, 25, 3, 2, 2, 2, 429, 431, 5, 68, 35, 2, 430, 429, 3, 2, 2, 2, 431, 432, 3, 2, 2, 2, 432, 430, 3, 2, 2, 2, 432, 433, 3, 2, 2, 2, 433, 27, 3, 2, 2, 2, 434, 436, 5, 70, 36, 2, 435, 434, 3, 2, 2, 2, 436, 437, 3, 2, 2, 2, 437, 435, 3, 2, 2, 2, 437, 438, 3, 2, 2, 2, 438, 29, 3, 2, 2, 2, 439, 441, 5, 72, 37, 2, 440, 439, 3, 2, 2, 2, 441, 442, 3, 2, 2, 2, 442, 440, 3, 2, 2, 2, 442, 443, 3, 2, 2, 2, 443, 31, 3, 2, 2, 2, 444, 446, 5, 74, 38, 2, 445, 444, 3, 2, 2, 2, 446, 447, 3, 2, 2, 2, 447, 445, 3, 2, 2, 2, 447, 448, 3, 2, 2, 2, 448, 33, 3, 2, 2, 2, 449, 451, 5, 76, 39, 2, 450, 449, 3, 2, 2, 2, 451, 452, 3, 2, 2, 2, 452, 450, 3, 2, 2, 2, 452, 453, 3, 2, 2, 2, 453, 35, 3, 2, 2, 2, 454, 456, 5, 78, 40, 2, 455, 454, 3, 2, 2, 2, 456, 457, 3, 2, 2, 2, 457, 455, 3, 2, 2, 2, 457, 458, 3, 2, 2, 2, 458, 37, 3, 2, 2, 2, 459, 461, 5, 80, 41, 2, 460, 459, 3, 2, 2, 2, 461, 462, 3, 2, 2, 2, 462, 460, 3, 2, 2, 2, 462, 463, 3, 2, 2, 2, 463, 39, 3, 2, 2, 2, 464, 466, 5, 82, 42, 2, 465, 464, 3, 2, 2, 2, 466, 467, 3, 2, 2, 2, 467, 465, 3, 2, 2, 2, 467, 468, 3, 2, 2, 2, 468, 41, 3, 2, 2, 2, 469, 471, 5, 84, 43, 2, 470, 469, 3, 2, 2, 2, 471, 472, 3, 2, 2, 2, 472, 470, 3, 2, 2, 2, 472, 473, 3, 2, 2, 2, 473, 43, 3, 2, 2, 2, 474, 476, 5, 86, 44, 2, 475, 474, 3, 2, 2, 2, 476, 477, 3, 2, 2, 2, 477, 475, 3, 2, 2, 2, 477, 478, 3, 2, 2, 2, 478, 45, 3, 2, 2, 2, 479, 481, 5, 88, 45, 2, 480, 479, 3, 2, 2, 2, 481, 482, 3, 2, 2, 2, 482, 480, 3, 2, 2, 2, 482, 483, 3, 2, 2, 2, 483, 47, 3, 2, 2, 2, 484, 486, 5, 90, 46, 2, 485, 484, 3, 2, 2, 2, 486, 487, 3, 2, 2, 2, 487, 485, 3, 2, 2, 2, 487, 488, 3, 2, 2, 2, 488, 49, 3, 2, 2, 2, 489, 491, 5, 92, 47, 2, 490, 489, 3, 2, 2, 2, 491, 492, 3, 2, 2, 2, 492, 490, 3, 2, 2, 2, 492, 493, 3, 2, 2, 2, 493, 51, 3, 2, 2, 2, 494, 496, 5, 94, 48, 2, 495, 494, 3, 2, 2, 2, 496, 497, 3, 2, 2, 2, 497, 495, 3, 2, 2, 2, 497, 498, 3, 2, 2, 2, 498, 53, 3, 2, 2, 2, 499, 501, 5, 96, 49, 2, 500, 499, 3, 2, 2, 2, 501, 502, 3, 2, 2, 2, 502, 500, 3, 2, 2, 2, 502, 503, 3, 2, 2, 2, 503, 55, 3, 2, 2, 2, 504, 506, 5, 98, 50, 2, 505, 504, 3, 2, 2, 2, 506, 507, 3, 2, 2, 2, 507, 505, 3, 2, 2, 2, 507, 508, 3, 2, 2, 2, 508, 57, 3, 2, 2, 2, 509, 510, 7, 128, 2, 2, 510, 511, 7, 6, 2, 2, 511, 512, 7, 3, 2, 2, 512, 513, 5, 100, 51, 2, 513, 514, 5, 196, 99, 2, 514, 515, 5, 198, 100, 2, 515, 516, 5, 202, 102, 2, 516, 517, 5, 178, 90, 2, 517, 518, 5, 204, 103, 2, 518, 519, 7, 4, 2, 2, 519, 520, 7, 7, 2, 2, 520, 59, 3, 2, 2, 2, 521, 522, 7, 128, 2, 2, 522, 523, 7, 6, 2, 2, 523, 524, 7, 3, 2, 2, 524, 525, 5, 102, 52, 2, 525, 527, 5, 142, 72, 2, 526, 528, 5, 308, 155, 2, 527, 526, 3, 2, 2, 2, 527, 528, 3, 2, 2, 2, 528, 529, 3, 2, 2, 2, 529, 530, 7, 4, 2, 2, 530, 531, 7, 7, 2, 2, 531, 61, 3, 2, 2, 2, 532, 533, 7, 128, 2, 2, 533, 534, 7, 6, 2, 2, 534, 535, 7, 3, 2, 2, 535, 536, 5, 104, 53, 2, 536, 537, 5, 144, 73, 2, 537, 538, 5, 146, 74, 2, 538, 539, 5, 148, 75, 2, 539, 540, 5, 150, 76, 2, 540, 541, 7, 4, 2, 2, 541, 542, 7, 7, 2, 2, 542, 63, 3, 2, 2, 2, 543, 544, 7, 128, 2, 2, 544, 545, 7, 6, 2, 2, 545, 546, 7, 3, 2, 2, 546, 547, 5, 106, 54, 2, 547, 548, 5, 184, 93, 2, 548, 549, 5, 292, 147, 2, 549, 550, 5, 294, 148, 2, 550, 552, 5, 186, 94, 2, 551, 553, 5, 178, 90, 2, 552, 551, 3, 2, 2, 2, 552, 553, 3, 2, 2, 2, 553, 554, 3, 2, 2, 2, 554, 555, 5, 188, 95, 2, 555, 556, 7, 4, 2, 2, 556, 557, 7, 7, 2, 2, 557, 65, 3, 2, 2, 2, 558, 559, 7, 128, 2, 2, 559, 560, 7, 6, 2, 2, 560, 561, 7, 3, 2, 2, 561, 563, 5, 108, 55, 2, 562, 564, 5, 154, 78, 2, 563, 562, 3, 2, 2, 2, 563, 564, 3, 2, 2, 2, 564, 566, 3, 2, 2, 2, 565, 567, 5, 152, 77, 2, 566, 565, 3, 2, 2, 2, 566, 567, 3, 2, 2, 2, 567, 569, 3, 2, 2, 2, 568, 570, 5, 158, 80, 2, 569, 568, 3, 2, 2, 2, 569, 570, 3, 2, 2, 2, 570, 572, 3, 2, 2, 2, 571, 573, 5, 156, 79, 2, 572, 571, 3, 2, 2, 2, 572, 573, 3, 2, 2, 2, 573, 575, 3, 2, 2, 2, 574, 576, 5, 210, 106, 2, 575, 574, 3, 2, 2, 2, 575, 576, 3, 2, 2, 2, 576, 578, 3, 2, 2, 2, 577, 579, 5, 178, 90, 2, 578, 577, 3, 2, 2, 2, 578, 579, 3, 2, 2, 2, 579, 581, 3, 2, 2, 2, 580, 582, 5, 180, 91, 2, 581, 580, 3, 2, 2, 2, 581, 582, 3, 2, 2, 2, 582, 584, 3, 2, 2, 2, 583, 585, 5, 214, 108, 2, 584, 583, 3, 2, 2, 2, 584, 585, 3, 2, 2, 2, 585, 587, 3, 2, 2, 2, 586, 588, 5, 182, 92, 2, 587, 586, 3, 2, 2, 2, 587, 588, 3, 2, 2, 2, 588, 590, 3, 2, 2, 2, 589, 591, 5, 212, 107, 2, 590, 589, 3, 2, 2, 2, 590, 591, 3, 2, 2, 2, 591, 593, 3, 2, 2, 2, 592, 594, 5, 164, 83, 2, 593, 592, 3, 2, 2, 2, 593, 594, 3, 2, 2, 2, 594, 595, 3, 2, 2, 2, 595, 596, 7, 4, 2, 2, 596, 597, 7, 7, 2, 2, 597, 67, 3, 2, 2, 2, 598, 599, 7, 128, 2, 2, 599, 600, 7, 6, 2, 2, 600, 601, 7, 3, 2, 2, 601, 602, 5, 110, 56, 2, 602, 603, 5, 184, 93, 2, 603, 604, 5, 186, 94, 2, 604, 605, 5, 188, 95, 2, 605, 606, 7, 4, 2, 2, 606, 607, 7, 7, 2, 2, 607, 69, 3, 2, 2, 2, 608, 609, 7, 128, 2, 2, 609, 610, 7, 6, 2, 2, 610, 611, 7, 3, 2, 2, 611, 612, 5, 112, 57, 2, 612, 614, 5, 166, 84, 2, 613, 615, 5, 160, 81, 2, 614, 613, 3, 2, 2, 2, 614, 615, 3, 2, 2, 2, 615, 617, 3, 2, 2, 2, 616, 618, 5, 178, 90, 2, 617, 616, 3, 2, 2, 2, 617, 618, 3, 2, 2, 2, 618, 620, 3, 2, 2, 2, 619, 621, 5, 180, 91, 2, 620, 619, 3, 2, 2, 2, 620, 621, 3, 2, 2, 2, 621, 622, 3, 2, 2, 2, 622, 624, 5, 182, 92, 2, 623, 625, 5, 162, 82, 2, 624, 623, 3, 2, 2, 2, 624, 625, 3, 2, 2, 2, 625, 627, 3, 2, 2, 2, 626, 628, 5, 164, 83, 2, 627, 626, 3, 2, 2, 2, 627, 628, 3, 2, 2, 2, 628, 629, 3, 2, 2, 2, 629, 630, 7, 4, 2, 2, 630, 631, 7, 7, 2, 2, 631, 71, 3, 2, 2, 2, 632, 633, 7, 128, 2, 2, 633, 634, 7, 6, 2, 2, 634, 635, 7, 3, 2, 2, 635, 636, 5, 114, 58, 2, 636, 637, 5, 184, 93, 2, 637, 638, 5, 186, 94, 2, 638, 639, 5, 188, 95, 2, 639, 640, 7, 4, 2, 2, 640, 641, 7, 7, 2, 2, 641, 73, 3, 2, 2, 2, 642, 643, 7, 128, 2, 2, 643, 644, 7, 6, 2, 2, 644, 645, 7, 3, 2, 2, 645, 646, 5, 116, 59, 2, 646, 647, 5, 196, 99, 2, 647, 648, 5, 198, 100, 2, 648, 649, 5, 200, 101, 2, 649, 650, 5, 202, 102, 2, 650, 652, 5, 178, 90, 2, 651, 653, 5, 168, 85, 2, 652, 651, 3, 2, 2, 2, 652, 653, 3, 2, 2, 2, 653, 655, 3, 2, 2, 2, 654, 656, 5, 176, 89, 2, 655, 654, 3, 2, 2, 2, 655, 656, 3, 2, 2, 2, 656, 657, 3, 2, 2, 2, 657, 658, 5, 204, 103, 2, 658, 659, 5, 206, 104, 2, 659, 660, 5, 208, 105, 2, 660, 661, 7, 4, 2, 2, 661, 662, 7, 7, 2, 2, 662, 75, 3, 2, 2, 2, 663, 664, 7, 128, 2, 2, 664, 665, 7, 6, 2, 2, 665, 666, 7, 3, 2, 2, 666, 667, 5, 118, 60, 2, 667, 668, 5, 216, 109, 2, 668, 669, 5, 196, 99, 2, 669, 670, 5, 244, 123, 2, 670, 671, 5, 246, 124, 2, 671, 672, 5, 248, 125, 2, 672, 673, 5, 250, 126, 2, 673, 675, 5, 252, 127, 2, 674, 676, 5, 256, 129, 2, 675, 674, 3, 2, 2, 2, 675, 676, 3, 2, 2, 2, 676, 678, 3, 2, 2, 2, 677, 679, 5, 254, 128, 2, 678, 677, 3, 2, 2, 2, 678, 679, 3, 2, 2, 2, 679, 680, 3, 2, 2, 2, 680, 682, 5, 258, 130, 2, 681, 683, 5, 260, 131, 2, 682, 681, 3, 2, 2, 2, 682, 683, 3, 2, 2, 2, 683, 684, 3, 2, 2, 2, 684, 685, 5, 262, 132, 2, 685, 686, 5, 264, 133, 2, 686, 687, 7, 4, 2, 2, 687, 688, 7, 7, 2, 2, 688, 77, 3, 2, 2, 2, 689, 690, 7, 128, 2, 2, 690, 691, 7, 6, 2, 2, 691, 692, 7, 3, 2, 2, 692, 693, 5, 120, 61, 2, 693, 694, 5, 284, 143, 2, 694, 695, 5, 180, 91, 2, 695, 696, 5, 286, 144, 2, 696, 697, 5, 182, 92, 2, 697, 698, 7, 4, 2, 2, 698, 699, 7, 7, 2, 2, 699, 79, 3, 2, 2, 2, 700, 701, 7, 128, 2, 2, 701, 702, 7, 6, 2, 2, 702, 703, 7, 3, 2, 2, 703, 704, 5, 122, 62, 2, 704, 705, 5, 184, 93, 2, 705, 706, 5, 186, 94, 2, 706, 707, 5, 188, 95, 2, 707, 708, 7, 4, 2, 2, 708, 709, 7, 7, 2, 2, 709, 81, 3, 2, 2, 2, 710, 711, 7, 128, 2, 2, 711, 712, 7, 6, 2, 2, 712, 713, 7, 3, 2, 2, 713, 714, 5, 124, 63, 2, 714, 715, 5, 184, 93, 2, 715, 717, 5, 186, 94, 2, 716, 718, 5, 266, 134, 2, 717, 716, 3, 2, 2, 2, 717, 718, 3, 2, 2, 2, 718, 719, 3, 2, 2, 2, 719, 721, 5, 268, 135, 2, 720, 722, 5, 178, 90, 2, 721, 720, 3, 2, 2, 2, 721, 722, 3, 2, 2, 2, 722, 724, 3, 2, 2, 2, 723, 725, 5, 270, 136, 2, 724, 723, 3, 2, 2, 2, 724, 725, 3, 2, 2, 2, 725, 726, 3, 2, 2, 2, 726, 727, 5, 272, 137, 2, 727, 728, 5, 188, 95, 2, 728, 729, 5, 274, 138, 2, 729, 731, 5, 276, 139, 2, 730, 732, 5, 278, 140, 2, 731, 730, 3, 2, 2, 2, 731, 732, 3, 2, 2, 2, 732, 733, 3, 2, 2, 2, 733, 734, 7, 4, 2, 2, 734, 735, 7, 7, 2, 2, 735, 83, 3, 2, 2, 2, 736, 737, 7, 128, 2, 2, 737, 738, 7, 6, 2, 2, 738, 739, 7, 3, 2, 2, 739, 740, 5, 126, 64, 2, 740, 741, 5, 184, 93, 2, 741, 742, 5, 186, 94, 2, 742, 743, 5, 188, 95, 2, 743, 744, 7, 4, 2, 2, 744, 745, 7, 7, 2, 2, 745, 85, 3, 2, 2, 2, 746, 747, 7, 128, 2, 2, 747, 748, 7, 6, 2, 2, 748, 749, 7, 3, 2, 2, 749, 751, 5, 128, 65, 2, 750, 752, 5, 178, 90, 2, 751, 750, 3, 2, 2, 2, 751, 752, 3, 2, 2, 2, 752, 754, 3, 2, 2, 2, 753, 755, 5, 280, 141, 2, 754, 753, 3, 2, 2, 2, 754, 755, 3, 2, 2, 2, 755, 756, 3, 2, 2, 2, 756, 757, 5, 282, 142, 2, 757, 758, 7, 4, 2, 2, 758, 759, 7, 7, 2, 2, 759, 87, 3, 2, 2, 2, 760, 761, 7, 128, 2, 2, 761, 762, 7, 6, 2, 2, 762, 763, 7, 3, 2, 2, 763, 764, 5, 130, 66, 2, 764, 765, 5, 166, 84, 2, 765, 767, 5, 178, 90, 2, 766, 768, 5, 180, 91, 2, 767, 766, 3, 2, 2, 2, 767, 768, 3, 2, 2, 2, 768, 769, 3, 2, 2, 2, 769, 770, 5, 182, 92, 2, 770, 771, 7, 4, 2, 2, 771, 772, 7, 7, 2, 2, 772, 89, 3, 2, 2, 2, 773, 774, 7, 128, 2, 2, 774, 775, 7, 6, 2, 2, 775, 776, 7, 3, 2, 2, 776, 778, 5, 132, 67, 2, 777, 779, 5, 288, 145, 2, 778, 777, 3, 2, 2, 2, 778, 779, 3, 2, 2, 2, 779, 780, 3, 2, 2, 2, 780, 781, 5, 290, 146, 2, 781, 782, 5, 178, 90, 2, 782, 783, 7, 4, 2, 2, 783, 784, 7, 7, 2, 2, 784, 91, 3, 2, 2, 2, 785, 786, 7, 128, 2, 2, 786, 787, 7, 6, 2, 2, 787, 788, 7, 3, 2, 2, 788, 789, 5, 134, 68, 2, 789, 790, 5, 302, 152, 2, 790, 792, 5, 304, 153, 2, 791, 793, 5, 306, 154, 2, 792, 791, 3, 2, 2, 2, 792, 793, 3, 2, 2, 2, 793, 794, 3, 2, 2, 2, 794, 795, 7, 4, 2, 2, 795, 796, 7, 7, 2, 2, 796, 93, 3, 2, 2, 2, 797, 798, 7, 128, 2, 2, 798, 799, 7, 6, 2, 2, 799, 800, 7, 3, 2, 2, 800, 801, 5, 136, 69, 2, 801, 802, 5, 170, 86, 2, 802, 803, 5, 172, 87, 2, 803, 804, 7, 4, 2, 2, 804, 805, 7, 7, 2, 2, 805, 95, 3, 2, 2, 2, 806, 807, 7, 128, 2, 2, 807, 808, 7, 6, 2, 2, 808, 809, 7, 3, 2, 2, 809, 810, 5, 138, 70, 2, 810, 811, 5, 174, 88, 2, 811, 812, 5, 204, 103, 2, 812, 813, 7, 4, 2, 2, 813, 814, 7, 7, 2, 2, 814, 97, 3, 2, 2, 2, 815, 816, 7, 128, 2, 2, 816, 817, 7, 6, 2, 2, 817, 818, 7, 3, 2, 2, 818, 819, 5, 140, 71, 2, 819, 820, 5, 166, 84, 2, 820, 821, 5, 312, 157, 2, 821, 822, 5, 180, 91, 2, 822, 823, 5, 182, 92, 2, 823, 824, 5, 314, 158, 2, 824, 825, 7, 4, 2, 2, 825, 826, 7, 7, 2, 2, 826, 99, 3, 2, 2, 2, 827, 828, 7, 118, 2, 2, 828, 829, 7, 6, 2, 2, 829, 830, 7, 9, 2, 2, 830, 831, 7, 7, 2, 2, 831, 101, 3, 2, 2, 2, 832, 833, 7, 118, 2, 2, 833, 834, 7, 6, 2, 2, 834, 835, 7, 10, 2, 2, 835, 836, 7, 7, 2, 2, 836, 103, 3, 2, 2, 2, 837, 838, 7, 118, 2, 2, 838, 839, 7, 6, 2, 2, 839, 840, 7, 11, 2, 2, 840, 841, 7, 7, 2, 2, 841, 105, 3, 2, 2, 2, 842, 843, 7, 118, 2, 2, 843, 844, 7, 6, 2, 2, 844, 845, 7, 12, 2, 2, 845, 846, 7, 7, 2, 2, 846, 107, 3, 2, 2, 2, 847, 848, 7, 118, 2, 2, 848, 849, 7, 6, 2, 2, 849, 850, 7, 13, 2, 2, 850, 851, 7, 7, 2, 2, 851, 109, 3, 2, 2, 2, 852, 853, 7, 118, 2, 2, 853, 854, 7, 6, 2, 2, 854, 855, 7, 14, 2, 2, 855, 856, 7, 7, 2, 2, 856, 111, 3, 2, 2, 2, 857, 858, 7, 118, 2, 2, 858, 859, 7, 6, 2, 2, 859, 860, 7, 15, 2, 2, 860, 861, 7, 7, 2, 2, 861, 113, 3, 2, 2, 2, 862, 863, 7, 118, 2, 2, 863, 864, 7, 6, 2, 2, 864, 865, 7, 16, 2, 2, 865, 866, 7, 7, 2, 2, 866, 115, 3, 2, 2, 2, 867, 868, 7, 118, 2, 2, 868, 869, 7, 6, 2, 2, 869, 870, 7, 17, 2, 2, 870, 871, 7, 7, 2, 2, 871, 117, 3, 2, 2, 2, 872, 873, 7, 118, 2, 2, 873, 874, 7, 6, 2, 2, 874, 875, 7, 18, 2, 2, 875, 876, 7, 7, 2, 2, 876, 119, 3, 2, 2, 2, 877, 878, 7, 118, 2, 2, 878, 879, 7, 6, 2, 2, 879, 880, 7, 19, 2, 2, 880, 881, 7, 7, 2, 2, 881, 121, 3, 2, 2, 2, 882, 883, 7, 118, 2, 2, 883, 884, 7, 6, 2, 2, 884, 885, 7, 20, 2, 2, 885, 886, 7, 7, 2, 2, 886, 123, 3, 2, 2, 2, 887, 888, 7, 118, 2, 2, 888, 889, 7, 6, 2, 2, 889, 890, 7, 21, 2, 2, 890, 891, 7, 7, 2, 2, 891, 125, 3, 2, 2, 2, 892, 893, 7, 118, 2, 2, 893, 894, 7, 6, 2, 2, 894, 895, 7, 22, 2, 2, 895, 896, 7, 7, 2, 2, 896, 127, 3, 2, 2, 2, 897, 898, 7, 118, 2, 2, 898, 899, 7, 6, 2, 2, 899, 900, 7, 23, 2, 2, 900, 901, 7, 7, 2, 2, 901, 129, 3, 2, 2, 2, 902, 903, 7, 118, 2, 2, 903, 904, 7, 6, 2, 2, 904, 905, 7, 24, 2, 2, 905, 906, 7, 7, 2, 2, 906, 131, 3, 2, 2, 2, 907, 908, 7, 118, 2, 2, 908, 909, 7, 6, 2, 2, 909, 910, 7, 25, 2, 2, 910, 911, 7, 7, 2, 2, 911, 133, 3, 2, 2, 2, 912, 913, 7, 118, 2, 2, 913, 914, 7, 6, 2, 2, 914, 915, 7, 26, 2, 2, 915, 916, 7, 7, 2, 2, 916, 135, 3, 2, 2, 2, 917, 918, 7, 118, 2, 2, 918, 919, 7, 6, 2, 2, 919, 920, 7, 27, 2, 2, 920, 921, 7, 7, 2, 2, 921, 137, 3, 2, 2, 2, 922, 923, 7, 118, 2, 2, 923, 924, 7, 6, 2, 2, 924, 925, 7, 28, 2, 2, 925, 926, 7, 7, 2, 2, 926, 139, 3, 2, 2, 2, 927, 928, 7, 118, 2, 2, 928, 929, 7, 6, 2, 2, 929, 930, 7, 29, 2, 2, 930, 931, 7, 7, 2, 2, 931, 141, 3, 2, 2, 2, 932, 933, 7, 30, 2, 2, 933, 934, 7, 6, 2, 2, 934, 935, 7, 128, 2, 2, 935, 941, 7, 7, 2, 2, 936, 937, 7, 31, 2, 2, 937, 938, 7, 6, 2, 2, 938, 939, 7, 128, 2, 2, 939, 941, 7, 7, 2, 2, 940, 932, 3, 2, 2, 2, 940, 936, 3, 2, 2, 2, 941, 143, 3, 2, 2, 2, 942, 943, 7, 32, 2, 2, 943, 944, 7, 6, 2, 2, 944, 945, 7, 128, 2, 2, 945, 946, 7, 7, 2, 2, 946, 145, 3, 2, 2, 2, 947, 948, 7, 33, 2, 2, 948, 949, 7, 6, 2, 2, 949, 950, 7, 121, 2, 2, 950, 951, 7, 7, 2, 2, 951, 147, 3, 2, 2, 2, 952, 953, 7, 34, 2, 2, 953, 954, 7, 6, 2, 2, 954, 955, 7, 128, 2, 2, 955, 956, 7, 7, 2, 2, 956, 149, 3, 2, 2, 2, 957, 958, 7, 35, 2, 2, 958, 959, 7, 6, 2, 2, 959, 960, 5, 318, 160, 2, 960, 961, 7, 7, 2, 2, 961, 151, 3, 2, 2, 2, 962, 963, 7, 36, 2, 2, 963, 964, 7, 6, 2, 2, 964, 965, 7, 121, 2, 2, 965, 966, 7, 7, 2, 2, 966, 153, 3, 2, 2, 2, 967, 968, 7, 37, 2, 2, 968, 969, 7, 6, 2, 2, 969, 970, 5, 318, 160, 2, 970, 971, 7, 7, 2, 2, 971, 155, 3, 2, 2, 2, 972, 973, 7, 38, 2, 2, 973, 974, 7, 6, 2, 2, 974, 975, 5, 318, 160, 2, 975, 976, 7, 7, 2, 2, 976, 157, 3, 2, 2, 2, 977, 978, 7, 39, 2, 2, 978, 979, 7, 6, 2, 2, 979, 980, 7, 121, 2, 2, 980, 981, 7, 7, 2, 2, 981, 159, 3, 2, 2, 2, 982, 983, 7, 40, 2, 2, 983, 984, 7, 6, 2, 2, 984, 985, 7, 121, 2, 2, 985, 986, 7, 7, 2, 2, 986, 161, 3, 2, 2, 2, 987, 988, 7, 41, 2, 2, 988, 989, 7, 6, 2, 2, 989, 990, 7, 121, 2, 2, 990, 991, 7, 7, 2, 2, 991, 163, 3, 2, 2, 2, 992, 993, 7, 42, 2, 2, 993, 994, 7, 6, 2, 2, 994, 995, 7, 121, 2, 2, 995, 996, 7, 7, 2, 2, 996, 165, 3, 2, 2, 2, 997, 998, 7, 43, 2, 2, 998, 999, 7, 6, 2, 2, 999, 1000, 5, 190, 96, 2, 1000, 1001, 7, 7, 2, 2, 1001, 167, 3, 2, 2, 2, 1002, 1003, 7, 44, 2, 2, 1003, 1004, 7, 6, 2, 2, 1004, 1005, 7, 129, 2, 2, 1005, 1006, 7, 7, 2, 2, 1006, 169, 3, 2, 2, 2, 1007, 1008, 7, 45, 2, 2, 1008, 1009, 7, 6, 2, 2, 1009, 1010, 7, 129, 2, 2, 1010, 1011, 7, 7, 2, 2, 1011, 171, 3, 2, 2, 2, 1012, 1013, 7, 46, 2, 2, 1013, 1014, 7, 6, 2, 2, 1014, 1018, 7, 3, 2, 2, 1015, 1017, 5, 300, 151, 2, 1016, 1015, 3, 2, 2, 2, 1017, 1020, 3, 2, 2, 2, 1018, 1016, 3, 2, 2, 2, 1018, 1019, 3, 2, 2, 2, 1019, 1021, 3, 2, 2, 2, 1020, 1018, 3, 2, 2, 2, 1021, 1022, 7, 4, 2, 2, 1022, 1023, 7, 7, 2, 2, 1023, 173, 3, 2, 2, 2, 1024, 1025, 7, 47, 2, 2, 1025, 1026, 7, 6, 2, 2, 1026, 1027, 7, 128, 2, 2, 1027, 1028, 7, 7, 2, 2, 1028, 175, 3, 2, 2, 2, 1029, 1030, 7, 48, 2, 2, 1030, 1031, 7, 6, 2, 2, 1031, 1032, 5, 190, 96, 2, 1032, 1033, 7, 7, 2, 2, 1033, 177, 3, 2, 2, 2, 1034, 1035, 7, 49, 2, 2, 1035, 1036, 7, 6, 2, 2, 1036, 1037, 9, 2, 2, 2, 1037, 1038, 7, 7, 2, 2, 1038, 179, 3, 2, 2, 2, 1039, 1040, 7, 50, 2, 2, 1040, 1041, 7, 6, 2, 2, 1041, 1042, 9, 2, 2, 2, 1042, 1043, 7, 7, 2, 2, 1043, 181, 3, 2, 2, 2, 1044, 1045, 7, 51, 2, 2, 1045, 1046, 7, 6, 2, 2, 1046, 1047, 9, 2, 2, 2, 1047, 1048, 7, 7, 2, 2, 1048, 183, 3, 2, 2, 2, 1049, 1050, 7, 52, 2, 2, 1050, 1051, 7, 6, 2, 2, 1051, 1052, 7, 121, 2, 2, 1052, 1053, 7, 7, 2, 2, 1053, 185, 3, 2, 2, 2, 1054, 1055, 7, 53, 2, 2, 1055, 1056, 7, 6, 2, 2, 1056, 1057, 5, 190, 96, 2, 1057, 1058, 7, 7, 2, 2, 1058, 187, 3, 2, 2, 2, 1059, 1060, 7, 54, 2, 2, 1060, 1061, 7, 6, 2, 2, 1061, 1062, 7, 121, 2, 2, 1062, 1063, 7, 7, 2, 2, 1063, 189, 3, 2, 2, 2, 1064, 1069, 7, 55, 2, 2, 1065, 1066, 7, 128, 2, 2, 1066, 1068, 7, 56, 2, 2, 1067, 1065, 3, 2, 2, 2, 1068, 1071, 3, 2, 2, 2, 1069, 1067, 3, 2, 2, 2, 1069, 1070, 3, 2, 2, 2, 1070, 1072, 3, 2, 2, 2, 1071, 1069, 3, 2, 2, 2, 1072, 1073, 7, 57, 2, 2, 1073, 191, 3, 2, 2, 2, 1074, 1080, 7, 55, 2, 2, 1075, 1076, 5, 318, 160, 2, 1076, 1077, 7, 56, 2, 2, 1077, 1079, 3, 2, 2, 2, 1078, 1075, 3, 2, 2, 2, 1079, 1082, 3, 2, 2, 2, 1080, 1078, 3, 2, 2, 2, 1080, 1081, 3, 2, 2, 2, 1081, 1083, 3, 2, 2, 2, 1082, 1080, 3, 2, 2, 2, 1083, 1084, 7, 57, 2, 2, 1084, 193, 3, 2, 2, 2, 1085, 1090, 7, 55, 2, 2, 1086, 1087, 7, 130, 2, 2, 1087, 1089, 7, 56, 2, 2, 1088, 1086, 3, 2, 2, 2, 1089, 1092, 3, 2, 2, 2, 1090, 1088, 3, 2, 2, 2, 1090, 1091, 3, 2, 2, 2, 1091, 1093, 3, 2, 2, 2, 1092, 1090, 3, 2, 2, 2, 1093, 1094, 7, 57, 2, 2, 1094, 195, 3, 2, 2, 2, 1095, 1096, 7, 58, 2, 2, 1096, 1097, 7, 6, 2, 2, 1097, 1098, 7, 128, 2, 2, 1098, 1099, 7, 7, 2, 2, 1099, 197, 3, 2, 2, 2, 1100, 1101, 7, 59, 2, 2, 1101, 1102, 7, 6, 2, 2, 1102, 1103, 5, 190, 96, 2, 1103, 1104, 7, 7, 2, 2, 1104, 199, 3, 2, 2, 2, 1105, 1106, 7, 60, 2, 2, 1106, 1107, 7, 6, 2, 2, 1107, 1108, 5, 190, 96, 2, 1108, 1109, 7, 7, 2, 2, 1109, 201, 3, 2, 2, 2, 1110, 1111, 7, 61, 2, 2, 1111, 1112, 7, 6, 2, 2, 1112, 1113, 5, 190, 96, 2, 1113, 1114, 7, 7, 2, 2, 1114, 203, 3, 2, 2, 2, 1115, 1116, 7, 62, 2, 2, 1116, 1117, 7, 6, 2, 2, 1117, 1118, 5, 318, 160, 2, 1118, 1119, 7, 7, 2, 2, 1119, 205, 3, 2, 2, 2, 1120, 1121, 7, 63, 2, 2, 1121, 1122, 7, 6, 2, 2, 1122, 1123, 7, 128, 2, 2, 1123, 1124, 7, 7, 2, 2, 1124, 207, 3, 2, 2, 2, 1125, 1126, 7, 64, 2, 2, 1126, 1127, 7, 6, 2, 2, 1127, 1128, 7, 129, 2, 2, 1128, 1129, 7, 7, 2, 2, 1129, 209, 3, 2, 2, 2, 1130, 1131, 7, 65, 2, 2, 1131, 1132, 7, 6, 2, 2, 1132, 1133, 7, 121, 2, 2, 1133, 1134, 7, 7, 2, 2, 1134, 211, 3, 2, 2, 2, 1135, 1136, 7, 66, 2, 2, 1136, 1137, 7, 6, 2, 2, 1137, 1138, 5, 318, 160, 2, 1138, 1139, 7, 7, 2, 2, 1139, 213, 3, 2, 2, 2, 1140, 1141, 7, 67, 2, 2, 1141, 1142, 7, 6, 2, 2, 1142, 1143, 5, 318, 160, 2, 1143, 1144, 7, 7, 2, 2, 1144, 215, 3, 2, 2, 2, 1145, 1146, 7, 68, 2, 2, 1146, 1147, 7, 6, 2, 2, 1147, 1149, 7, 3, 2, 2, 1148, 1150, 5, 316, 159, 2, 1149, 1148, 3, 2, 2, 2, 1149, 1150, 3, 2, 2, 2, 1150, 1152, 3, 2, 2, 2, 1151, 1153, 5, 220, 111, 2, 1152, 1151, 3, 2, 2, 2, 1152, 1153, 3, 2, 2, 2, 1153, 1155, 3, 2, 2, 2, 1154, 1156, 5, 218, 110, 2, 1155, 1154, 3, 2, 2, 2, 1155, 1156, 3, 2, 2, 2, 1156, 1158, 3, 2, 2, 2, 1157, 1159, 5, 222, 112, 2, 1158, 1157, 3, 2, 2, 2, 1158, 1159, 3, 2, 2, 2, 1159, 1161, 3, 2, 2, 2, 1160, 1162, 5, 224, 113, 2, 1161, 1160, 3, 2, 2, 2, 1161, 1162, 3, 2, 2, 2, 1162, 1164, 3, 2, 2, 2, 1163, 1165, 5, 226, 114, 2, 1164, 1163, 3, 2, 2, 2, 1164, 1165, 3, 2, 2, 2, 1165, 1167, 3, 2, 2, 2, 1166, 1168, 5, 228, 115, 2, 1167, 1166, 3, 2, 2, 2, 1167, 1168, 3, 2, 2, 2, 1168, 1170, 3, 2, 2, 2, 1169, 1171, 5, 230, 116, 2, 1170, 1169, 3, 2, 2, 2, 1170, 1171, 3, 2, 2, 2, 1171, 1173, 3, 2, 2, 2, 1172, 1174, 5, 232, 117, 2, 1173, 1172, 3, 2, 2, 2, 1173, 1174, 3, 2, 2, 2, 1174, 1175, 3, 2, 2, 2, 1175, 1176, 7, 4, 2, 2, 1176, 1177, 7, 7, 2, 2, 1177, 217, 3, 2, 2, 2, 1178, 1179, 7, 69, 2, 2, 1179, 1180, 7, 6, 2, 2, 1180, 1181, 7, 121, 2, 2, 1181, 1182, 7, 7, 2, 2, 1182, 219, 3, 2, 2, 2, 1183, 1184, 7, 70, 2, 2, 1184, 1185, 7, 6, 2, 2, 1185, 1186, 7, 130, 2, 2, 1186, 1187, 7, 7, 2, 2, 1187, 221, 3, 2, 2, 2, 1188, 1189, 7, 71, 2, 2, 1189, 1190, 7, 6, 2, 2, 1190, 1191, 7, 121, 2, 2, 1191, 1192, 7, 7, 2, 2, 1192, 223, 3, 2, 2, 2, 1193, 1194, 7, 72, 2, 2, 1194, 1195, 7, 6, 2, 2, 1195, 1196, 7, 130, 2, 2, 1196, 1197, 7, 7, 2, 2, 1197, 225, 3, 2, 2, 2, 1198, 1199, 7, 73, 2, 2, 1199, 1200, 7, 6, 2, 2, 1200, 1201, 7, 121, 2, 2, 1201, 1202, 7, 7, 2, 2, 1202, 227, 3, 2, 2, 2, 1203, 1204, 7, 74, 2, 2, 1204, 1205, 7, 6, 2, 2, 1205, 1206, 7, 130, 2, 2, 1206, 1207, 7, 7, 2, 2, 1207, 229, 3, 2, 2, 2, 1208, 1209, 7, 75, 2, 2, 1209, 1210, 7, 6, 2, 2, 1210, 1211, 5, 318, 160, 2, 1211, 1212, 7, 7, 2, 2, 1212, 231, 3, 2, 2, 2, 1213, 1214, 7, 76, 2, 2, 1214, 1215, 7, 6, 2, 2, 1215, 1219, 7, 3, 2, 2, 1216, 1218, 5, 234, 118, 2, 1217, 1216, 3, 2, 2, 2, 1218, 1221, 3, 2, 2, 2, 1219, 1217, 3, 2, 2, 2, 1219, 1220, 3, 2, 2, 2, 1220, 1222, 3, 2, 2, 2, 1221, 1219, 3, 2, 2, 2, 1222, 1223, 7, 4, 2, 2, 1223, 1224, 7, 7, 2, 2, 1224, 233, 3, 2, 2, 2, 1225, 1226, 7, 128, 2, 2, 1226, 1227, 7, 6, 2, 2, 1227, 1229, 7, 3, 2, 2, 1228, 1230, 5, 236, 119, 2, 1229, 1228, 3, 2, 2, 2, 1229, 1230, 3, 2, 2, 2, 1230, 1232, 3, 2, 2, 2, 1231, 1233, 5, 238, 120, 2, 1232, 1231, 3, 2, 2, 2, 1232, 1233, 3, 2, 2, 2, 1233, 1235, 3, 2, 2, 2, 1234, 1236, 5, 240, 121, 2, 1235, 1234, 3, 2, 2, 2, 1235, 1236, 3, 2, 2, 2, 1236, 1238, 3, 2, 2, 2, 1237, 1239, 5, 218, 110, 2, 1238, 1237, 3, 2, 2, 2, 1238, 1239, 3, 2, 2, 2, 1239, 1241, 3, 2, 2, 2, 1240, 1242, 5, 242, 122, 2, 1241, 1240, 3, 2, 2, 2, 1241, 1242, 3, 2, 2, 2, 1242, 1244, 3, 2, 2, 2, 1243, 1245, 5, 310, 156, 2, 1244, 1243, 3, 2, 2, 2, 1244, 1245, 3, 2, 2, 2, 1245, 1247, 3, 2, 2, 2, 1246, 1248, 5, 238, 120, 2, 1247, 1246, 3, 2, 2, 2, 1247, 1248, 3, 2, 2, 2, 1248, 1249, 3, 2, 2, 2, 1249, 1250, 7, 4, 2, 2, 1250, 1251, 7, 7, 2, 2, 1251, 235, 3, 2, 2, 2, 1252, 1253, 7, 77, 2, 2, 1253, 1254, 7, 6, 2, 2, 1254, 1255, 7, 130, 2, 2, 1255, 1256, 7, 7, 2, 2, 1256, 237, 3, 2, 2, 2, 1257, 1258, 7, 78, 2, 2, 1258, 1259, 7, 6, 2, 2, 1259, 1260, 7, 128, 2, 2, 1260, 1261, 7, 7, 2, 2, 1261, 239, 3, 2, 2, 2, 1262, 1263, 7, 79, 2, 2, 1263, 1264, 7, 6, 2, 2, 1264, 1265, 7, 130, 2, 2, 1265, 1266, 7, 7, 2, 2, 1266, 241, 3, 2, 2, 2, 1267, 1268, 7, 80, 2, 2, 1268, 1269, 7, 6, 2, 2, 1269, 1270, 7, 130, 2, 2, 1270, 1271, 7, 7, 2, 2, 1271, 243, 3, 2, 2, 2, 1272, 1273, 7, 81, 2, 2, 1273, 1274, 7, 6, 2, 2, 1274, 1275, 7, 129, 2, 2, 1275, 1276, 7, 7, 2, 2, 1276, 245, 3, 2, 2, 2, 1277, 1278, 7, 82, 2, 2, 1278, 1279, 7, 6, 2, 2, 1279, 1280, 7, 130, 2, 2, 1280, 1281, 7, 7, 2, 2, 1281, 247, 3, 2, 2, 2, 1282, 1283, 7, 83, 2, 2, 1283, 1284, 7, 6, 2, 2, 1284, 1285, 7, 121, 2, 2, 1285, 1286, 7, 7, 2, 2, 1286, 249, 3, 2, 2, 2, 1287, 1288, 7, 84, 2, 2, 1288, 1289, 7, 6, 2, 2, 1289, 1290, 5, 192, 97, 2, 1290, 1291, 7, 7, 2, 2, 1291, 251, 3, 2, 2, 2, 1292, 1293, 7, 85, 2, 2, 1293, 1294, 7, 6, 2, 2, 1294, 1295, 7, 128, 2, 2, 1295, 1296, 7, 7, 2, 2, 1296, 253, 3, 2, 2, 2, 1297, 1298, 7, 86, 2, 2, 1298, 1299, 7, 6, 2, 2, 1299, 1300, 7, 128, 2, 2, 1300, 1301, 7, 7, 2, 2, 1301, 255, 3, 2, 2, 2, 1302, 1303, 7, 87, 2, 2, 1303, 1304, 7, 6, 2, 2, 1304, 1305, 5, 190, 96, 2, 1305, 1306, 7, 7, 2, 2, 1306, 257, 3, 2, 2, 2, 1307, 1308, 7, 88, 2, 2, 1308, 1309, 7, 6, 2, 2, 1309, 1310, 9, 2, 2, 2, 1310, 1311, 7, 7, 2, 2, 1311, 259, 3, 2, 2, 2, 1312, 1313, 7, 89, 2, 2, 1313, 1314, 7, 6, 2, 2, 1314, 1315, 5, 318, 160, 2, 1315, 1316, 7, 7, 2, 2, 1316, 1325, 3, 2, 2, 2, 1317, 1318, 7, 89, 2, 2, 1318, 1319, 7, 6, 2, 2, 1319, 1320, 7, 55, 2, 2, 1320, 1321, 5, 296, 149, 2, 1321, 1322, 7, 57, 2, 2, 1322, 1323, 7, 7, 2, 2, 1323, 1325, 3, 2, 2, 2, 1324, 1312, 3, 2, 2, 2, 1324, 1317, 3, 2, 2, 2, 1325, 261, 3, 2, 2, 2, 1326, 1327, 7, 90, 2, 2, 1327, 1328, 7, 6, 2, 2, 1328, 1329, 9, 2, 2, 2, 1329, 1330, 7, 7, 2, 2, 1330, 263, 3, 2, 2, 2, 1331, 1332, 7, 91, 2, 2, 1332, 1333, 7, 6, 2, 2, 1333, 1334, 5, 190, 96, 2, 1334, 1335, 7, 7, 2, 2, 1335, 265, 3, 2, 2, 2, 1336, 1337, 7, 92, 2, 2, 1337, 1338, 7, 6, 2, 2, 1338, 1339, 5, 192, 97, 2, 1339, 1340, 7, 7, 2, 2, 1340, 267, 3, 2, 2, 2, 1341, 1342, 7, 93, 2, 2, 1342, 1343, 7, 6, 2, 2, 1343, 1344, 5, 192, 97, 2, 1344, 1345, 7, 7, 2, 2, 1345, 269, 3, 2, 2, 2, 1346, 1347, 7, 94, 2, 2, 1347, 1348, 7, 6, 2, 2, 1348, 1349, 5, 192, 97, 2, 1349, 1350, 7, 7, 2, 2, 1350, 271, 3, 2, 2, 2, 1351, 1352, 7, 95, 2, 2, 1352, 1353, 7, 6, 2, 2, 1353, 1354, 5, 192, 97, 2, 1354, 1355, 7, 7, 2, 2, 1355, 273, 3, 2, 2, 2, 1356, 1357, 7, 96, 2, 2, 1357, 1358, 7, 6, 2, 2, 1358, 1359, 7, 130, 2, 2, 1359, 1360, 7, 7, 2, 2, 1360, 275, 3, 2, 2, 2, 1361, 1362, 7, 97, 2, 2, 1362, 1363, 7, 6, 2, 2, 1363, 1364, 9, 2, 2, 2, 1364, 1365, 7, 7, 2, 2, 1365, 277, 3, 2, 2, 2, 1366, 1367, 7, 98, 2, 2, 1367, 1368, 7, 6, 2, 2, 1368, 1369, 7, 121, 2, 2, 1369, 1370, 7, 7, 2, 2, 1370, 279, 3, 2, 2, 2, 1371, 1372, 7, 99, 2, 2, 1372, 1373, 7, 6, 2, 2, 1373, 1374, 7, 128, 2, 2, 1374, 1375, 7, 7, 2, 2, 1375, 281, 3, 2, 2, 2, 1376, 1377, 7, 100, 2, 2, 1377, 1378, 7, 6, 2, 2, 1378, 1379, 7, 128, 2, 2, 1379, 1380, 7, 7, 2, 2, 1380, 283, 3, 2, 2, 2, 1381, 1382, 7, 101, 2, 2, 1382, 1383, 7, 6, 2, 2, 1383, 1384, 5, 318, 160, 2, 1384, 1385, 7, 7, 2, 2, 1385, 285, 3, 2, 2, 2, 1386, 1387, 7, 102, 2, 2, 1387, 1388, 7, 6, 2, 2, 1388, 1389, 7, 128, 2, 2, 1389, 1390, 7, 7, 2, 2, 1390, 287, 3, 2, 2, 2, 1391, 1392, 7, 103, 2, 2, 1392, 1393, 7, 6, 2, 2, 1393, 1394, 7, 128, 2, 2, 1394, 1395, 7, 7, 2, 2, 1395, 289, 3, 2, 2, 2, 1396, 1397, 7, 104, 2, 2, 1397, 1398, 7, 6, 2, 2, 1398, 1402, 7, 3, 2, 2, 1399, 1401, 5, 300, 151, 2, 1400, 1399, 3, 2, 2, 2, 1401, 1404, 3, 2, 2, 2, 1402, 1400, 3, 2, 2, 2, 1402, 1403, 3, 2, 2, 2, 1403, 1405, 3, 2, 2, 2, 1404, 1402, 3, 2, 2, 2, 1405, 1406, 7, 4, 2, 2, 1406, 1407, 7, 7, 2, 2, 1407, 291, 3, 2, 2, 2, 1408, 1409, 7, 105, 2, 2, 1409, 1410, 7, 6, 2, 2, 1410, 1411, 9, 2, 2, 2, 1411, 1412, 7, 7, 2, 2, 1412, 293, 3, 2, 2, 2, 1413, 1414, 7, 106, 2, 2, 1414, 1415, 7, 6, 2, 2, 1415, 1416, 7, 121, 2, 2, 1416, 1417, 7, 7, 2, 2, 1417, 295, 3, 2, 2, 2, 1418, 1420, 5, 298, 150, 2, 1419, 1418, 3, 2, 2, 2, 1420, 1423, 3, 2, 2, 2, 1421, 1419, 3, 2, 2, 2, 1421, 1422, 3, 2, 2, 2, 1422, 297, 3, 2, 2, 2, 1423, 1421, 3, 2, 2, 2, 1424, 1425, 7, 3, 2, 2, 1425, 1426, 7, 107, 2, 2, 1426, 1427, 7, 6, 2, 2, 1427, 1428, 7, 128, 2, 2, 1428, 1429, 7, 7, 2, 2, 1429, 1430, 7, 108, 2, 2, 1430, 1431, 7, 6, 2, 2, 1431, 1432, 7, 128, 2, 2, 1432, 1433, 7, 7, 2, 2, 1433, 1434, 7, 4, 2, 2, 1434, 1435, 7, 56, 2, 2, 1435, 299, 3, 2, 2, 2, 1436, 1437, 5, 318, 160, 2, 1437, 1438, 7, 6, 2, 2, 1438, 1439, 5, 318, 160, 2, 1439, 1440, 7, 7, 2, 2, 1440, 1473, 3, 2, 2, 2, 1441, 1442, 5, 318, 160, 2, 1442, 1443, 7, 6, 2, 2, 1443, 1444, 7, 121, 2, 2, 1444, 1445, 7, 7, 2, 2, 1445, 1473, 3, 2, 2, 2, 1446, 1447, 5, 318, 160, 2, 1447, 1448, 7, 6, 2, 2, 1448, 1449, 7, 123, 2, 2, 1449, 1450, 7, 7, 2, 2, 1450, 1473, 3, 2, 2, 2, 1451, 1452, 5, 318, 160, 2, 1452, 1453, 7, 6, 2, 2, 1453, 1454, 7, 3, 2, 2, 1454, 1455, 5, 300, 151, 2, 1455, 1456, 7, 4, 2, 2, 1456, 1457, 7, 7, 2, 2, 1457, 1473, 3, 2, 2, 2, 1458, 1459, 5, 318, 160, 2, 1459, 1460, 7, 6, 2, 2, 1460, 1466, 7, 55, 2, 2, 1461, 1462, 5, 318, 160, 2, 1462, 1463, 7, 56, 2, 2, 1463, 1465, 3, 2, 2, 2, 1464, 1461, 3, 2, 2, 2, 1465, 1468, 3, 2, 2, 2, 1466, 1464, 3, 2, 2, 2, 1466, 1467, 3, 2, 2, 2, 1467, 1469, 3, 2, 2, 2, 1468, 1466, 3, 2, 2, 2, 1469, 1470, 7, 57, 2, 2, 1470, 1471, 7, 7, 2, 2, 1471, 1473, 3, 2, 2, 2, 1472, 1436, 3, 2, 2, 2, 1472, 1441, 3, 2, 2, 2, 1472, 1446, 3, 2, 2, 2, 1472, 1451, 3, 2, 2, 2, 1472, 1458, 3, 2, 2, 2, 1473, 301, 3, 2, 2, 2, 1474, 1475, 7, 109, 2, 2, 1475, 1476, 7, 6, 2, 2, 1476, 1477, 5, 190, 96, 2, 1477, 1478, 7, 7, 2, 2, 1478, 303, 3, 2, 2, 2, 1479, 1480, 7, 110, 2, 2, 1480, 1481, 7, 6, 2, 2, 1481, 1482, 7, 121, 2, 2, 1482, 1483, 7, 7, 2, 2, 1483, 305, 3, 2, 2, 2, 1484, 1485, 7, 111, 2, 2, 1485, 1486, 7, 6, 2, 2, 1486, 1487, 9, 2, 2, 2, 1487, 1488, 7, 7, 2, 2, 1488, 307, 3, 2, 2, 2, 1489, 1490, 7, 112, 2, 2, 1490, 1491, 7, 6, 2, 2, 1491, 1495, 7, 3, 2, 2, 1492, 1494, 5, 300, 151, 2, 1493, 1492, 3, 2, 2, 2, 1494, 1497, 3, 2, 2, 2, 1495, 1493, 3, 2, 2, 2, 1495, 1496, 3, 2, 2, 2, 1496, 1498, 3, 2, 2, 2, 1497, 1495, 3, 2, 2, 2, 1498, 1499, 7, 4, 2, 2, 1499, 1500, 7, 7, 2, 2, 1500, 309, 3, 2, 2, 2, 1501, 1502, 7, 113, 2, 2, 1502, 1503, 7, 6, 2, 2, 1503, 1507, 7, 3, 2, 2, 1504, 1506, 5, 300, 151, 2, 1505, 1504, 3, 2, 2, 2, 1506, 1509, 3, 2, 2, 2, 1507, 1505, 3, 2, 2, 2, 1507, 1508, 3, 2, 2, 2, 1508, 1510, 3, 2, 2, 2, 1509, 1507, 3, 2, 2, 2, 1510, 1511, 7, 4, 2, 2, 1511, 1512, 7, 7, 2, 2, 1512, 311, 3, 2, 2, 2, 1513, 1514, 7, 114, 2, 2, 1514, 1515, 7, 6, 2, 2, 1515, 1516, 7, 128, 2, 2, 1516, 1517, 7, 7, 2, 2, 1517, 313, 3, 2, 2, 2, 1518, 1519, 7, 115, 2, 2, 1519, 1520, 7, 6, 2, 2, 1520, 1521, 7, 130, 2, 2, 1521, 1522, 7, 7, 2, 2, 1522, 315, 3, 2, 2, 2, 1523, 1524, 7, 116, 2, 2, 1524, 1525, 7, 6, 2, 2, 1525, 1526, 5, 318, 160, 2, 1526, 1527, 7, 7, 2, 2, 1527, 317, 3, 2, 2, 2, 1528, 1529, 9, 3, 2, 2, 1529, 319, 3, 2, 2, 2, 97, 350, 354, 357, 363, 366, 370, 373, 376, 380, 383, 388, 391, 394, 407, 412, 417, 422, 427, 432, 437, 442, 447, 452, 457, 462, 467, 472, 477, 482, 487, 492, 497, 502, 507, 527, 552, 563, 566, 569, 572, 575, 578, 581, 584, 587, 590, 593, 614, 617, 620, 624, 627, 652, 655, 675, 678, 682, 717, 721, 724, 731, 751, 754, 767, 778, 792, 940, 1018, 1069, 1080, 1090, 1149, 1152, 1155, 1158, 1161, 1164, 1167, 1170, 1173, 1219, 1229, 1232, 1235, 1238, 1241, 1244, 1247, 1324, 1402, 1421, 1466, 1472, 1495, 1507] \ No newline at end of file diff --git a/kin/grammar/PBXProjLexer.interp b/kin/grammar/PBXProjLexer.interp new file mode 100644 index 0000000..a1e147c --- /dev/null +++ b/kin/grammar/PBXProjLexer.interp @@ -0,0 +1,415 @@ +token literal names: +null +'{' +'}' +'archiveVersion' +'=' +';' +'objectVersion' +'PBXAggregateTarget' +'PBXBuildFile' +'PBXContainerItemProxy' +'PBXCopyFilesBuildPhase' +'PBXFileReference' +'PBXFrameworksBuildPhase' +'PBXGroup' +'PBXHeadersBuildPhase' +'PBXNativeTarget' +'PBXProject' +'PBXReferenceProxy' +'PBXResourcesBuildPhase' +'PBXShellScriptBuildPhase' +'PBXSourcesBuildPhase' +'PBXTargetDependency' +'PBXVariantGroup' +'XCBuildConfiguration' +'XCConfigurationList' +'XCRemoteSwiftPackageReference' +'XCSwiftPackageProductDependency' +'XCVersionGroup' +'fileRef' +'productRef' +'containerPortal' +'proxyType' +'remoteGlobalIDString' +'remoteInfo' +'fileEncoding' +'explicitFileType' +'lastKnownFileType' +'includeInIndex' +'indentWidth' +'tabWidth' +'usesTabs' +'children' +'productInstallPath' +'repositoryURL' +'requirement' +'package' +'packageProductDependencies' +'name' +'path' +'sourceTree' +'buildActionMask' +'files' +'runOnlyForDeploymentPostprocessing' +'(' +',' +')' +'buildConfigurationList' +'buildPhases' +'buildRules' +'dependencies' +'productName' +'productReference' +'productType' +'lineEnding' +'xcLanguageSpecificationIdentifier' +'plistStructureDefinitionIdentifier' +'attributes' +'LastSwiftMigration' +'DefaultBuildSystemTypeForWorkspace' +'LastSwiftUpdateCheck' +'BuildIndependentTargetsInParallel' +'LastUpgradeCheck' +'LastTestingUpgradeCheck' +'ORGANIZATIONNAME' +'TargetAttributes' +'CreatedOnToolsVersion' +'TestTargetID' +'DevelopmentTeam' +'ProvisioningStyle' +'compatibilityVersion' +'developmentRegion' +'hasScannedForEncodings' +'knownRegions' +'mainGroup' +'productRefGroup' +'packageReferences' +'projectDirPath' +'projectReferences' +'projectRoot' +'targets' +'inputFileListPaths' +'inputPaths' +'outputFileListPaths' +'outputPaths' +'shellPath' +'shellScript' +'showEnvVarsInLog' +'target' +'targetProxy' +'fileType' +'remoteRef' +'baseConfigurationReference' +'buildSettings' +'dstPath' +'dstSubfolderSpec' +'ProductGroup' +'ProjectRef' +'buildConfigurations' +'defaultConfigurationIsVisible' +'defaultConfigurationName' +'settings' +'SystemCapabilities' +'currentVersion' +'versionGroupType' +'CLASSPREFIX' +'classes' +'isa' +'objects' +'rootObject' +null +'.' +null +null +'-' +'_' +'/' +null +null +null +null +null +null +null + +token symbolic names: +null +null +null +null +null +null +null +null +null +null +null +null +null +null +null +null +null +null +null +null +null +null +null +null +null +null +null +null +null +null +null +null +null +null +null +null +null +null +null +null +null +null +null +null +null +null +null +null +null +null +null +null +null +null +null +null +null +null +null +null +null +null +null +null +null +null +null +null +null +null +null +null +null +null +null +null +null +null +null +null +null +null +null +null +null +null +null +null +null +null +null +null +null +null +null +null +null +null +null +null +null +null +null +null +null +null +null +null +null +null +null +null +null +null +null +CLASSES +ISA +OBJECTS +ROOT_OBJECT +NUMBER +DOT +ALPHA_NUMERIC +ALPHA_NUMERIC_CAP +DASH +UNDERSCORE +SLASH +REFERENCE +QUOTED_STRING +NON_QUOTED_STRING +VARIABLE +WS +COMMENT +LINE_COMMENT + +rule names: +T__0 +T__1 +T__2 +T__3 +T__4 +T__5 +T__6 +T__7 +T__8 +T__9 +T__10 +T__11 +T__12 +T__13 +T__14 +T__15 +T__16 +T__17 +T__18 +T__19 +T__20 +T__21 +T__22 +T__23 +T__24 +T__25 +T__26 +T__27 +T__28 +T__29 +T__30 +T__31 +T__32 +T__33 +T__34 +T__35 +T__36 +T__37 +T__38 +T__39 +T__40 +T__41 +T__42 +T__43 +T__44 +T__45 +T__46 +T__47 +T__48 +T__49 +T__50 +T__51 +T__52 +T__53 +T__54 +T__55 +T__56 +T__57 +T__58 +T__59 +T__60 +T__61 +T__62 +T__63 +T__64 +T__65 +T__66 +T__67 +T__68 +T__69 +T__70 +T__71 +T__72 +T__73 +T__74 +T__75 +T__76 +T__77 +T__78 +T__79 +T__80 +T__81 +T__82 +T__83 +T__84 +T__85 +T__86 +T__87 +T__88 +T__89 +T__90 +T__91 +T__92 +T__93 +T__94 +T__95 +T__96 +T__97 +T__98 +T__99 +T__100 +T__101 +T__102 +T__103 +T__104 +T__105 +T__106 +T__107 +T__108 +T__109 +T__110 +T__111 +T__112 +T__113 +CLASSES +ISA +OBJECTS +ROOT_OBJECT +NUMBER +DOT +ALPHA_NUMERIC +ALPHA_NUMERIC_CAP +DASH +UNDERSCORE +SLASH +REFERENCE +QUOTED_STRING +NON_QUOTED_STRING +VARIABLE +HEX +QUOTED_STRING_CHARACTER +WS +COMMENT +LINE_COMMENT + +channel names: +DEFAULT_TOKEN_CHANNEL +HIDDEN + +mode names: +DEFAULT_MODE + +atn: +[3, 24715, 42794, 33075, 47597, 16764, 15335, 30598, 22884, 2, 134, 2234, 8, 1, 4, 2, 9, 2, 4, 3, 9, 3, 4, 4, 9, 4, 4, 5, 9, 5, 4, 6, 9, 6, 4, 7, 9, 7, 4, 8, 9, 8, 4, 9, 9, 9, 4, 10, 9, 10, 4, 11, 9, 11, 4, 12, 9, 12, 4, 13, 9, 13, 4, 14, 9, 14, 4, 15, 9, 15, 4, 16, 9, 16, 4, 17, 9, 17, 4, 18, 9, 18, 4, 19, 9, 19, 4, 20, 9, 20, 4, 21, 9, 21, 4, 22, 9, 22, 4, 23, 9, 23, 4, 24, 9, 24, 4, 25, 9, 25, 4, 26, 9, 26, 4, 27, 9, 27, 4, 28, 9, 28, 4, 29, 9, 29, 4, 30, 9, 30, 4, 31, 9, 31, 4, 32, 9, 32, 4, 33, 9, 33, 4, 34, 9, 34, 4, 35, 9, 35, 4, 36, 9, 36, 4, 37, 9, 37, 4, 38, 9, 38, 4, 39, 9, 39, 4, 40, 9, 40, 4, 41, 9, 41, 4, 42, 9, 42, 4, 43, 9, 43, 4, 44, 9, 44, 4, 45, 9, 45, 4, 46, 9, 46, 4, 47, 9, 47, 4, 48, 9, 48, 4, 49, 9, 49, 4, 50, 9, 50, 4, 51, 9, 51, 4, 52, 9, 52, 4, 53, 9, 53, 4, 54, 9, 54, 4, 55, 9, 55, 4, 56, 9, 56, 4, 57, 9, 57, 4, 58, 9, 58, 4, 59, 9, 59, 4, 60, 9, 60, 4, 61, 9, 61, 4, 62, 9, 62, 4, 63, 9, 63, 4, 64, 9, 64, 4, 65, 9, 65, 4, 66, 9, 66, 4, 67, 9, 67, 4, 68, 9, 68, 4, 69, 9, 69, 4, 70, 9, 70, 4, 71, 9, 71, 4, 72, 9, 72, 4, 73, 9, 73, 4, 74, 9, 74, 4, 75, 9, 75, 4, 76, 9, 76, 4, 77, 9, 77, 4, 78, 9, 78, 4, 79, 9, 79, 4, 80, 9, 80, 4, 81, 9, 81, 4, 82, 9, 82, 4, 83, 9, 83, 4, 84, 9, 84, 4, 85, 9, 85, 4, 86, 9, 86, 4, 87, 9, 87, 4, 88, 9, 88, 4, 89, 9, 89, 4, 90, 9, 90, 4, 91, 9, 91, 4, 92, 9, 92, 4, 93, 9, 93, 4, 94, 9, 94, 4, 95, 9, 95, 4, 96, 9, 96, 4, 97, 9, 97, 4, 98, 9, 98, 4, 99, 9, 99, 4, 100, 9, 100, 4, 101, 9, 101, 4, 102, 9, 102, 4, 103, 9, 103, 4, 104, 9, 104, 4, 105, 9, 105, 4, 106, 9, 106, 4, 107, 9, 107, 4, 108, 9, 108, 4, 109, 9, 109, 4, 110, 9, 110, 4, 111, 9, 111, 4, 112, 9, 112, 4, 113, 9, 113, 4, 114, 9, 114, 4, 115, 9, 115, 4, 116, 9, 116, 4, 117, 9, 117, 4, 118, 9, 118, 4, 119, 9, 119, 4, 120, 9, 120, 4, 121, 9, 121, 4, 122, 9, 122, 4, 123, 9, 123, 4, 124, 9, 124, 4, 125, 9, 125, 4, 126, 9, 126, 4, 127, 9, 127, 4, 128, 9, 128, 4, 129, 9, 129, 4, 130, 9, 130, 4, 131, 9, 131, 4, 132, 9, 132, 4, 133, 9, 133, 4, 134, 9, 134, 4, 135, 9, 135, 3, 2, 3, 2, 3, 3, 3, 3, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 3, 5, 3, 5, 3, 6, 3, 6, 3, 7, 3, 7, 3, 7, 3, 7, 3, 7, 3, 7, 3, 7, 3, 7, 3, 7, 3, 7, 3, 7, 3, 7, 3, 7, 3, 7, 3, 8, 3, 8, 3, 8, 3, 8, 3, 8, 3, 8, 3, 8, 3, 8, 3, 8, 3, 8, 3, 8, 3, 8, 3, 8, 3, 8, 3, 8, 3, 8, 3, 8, 3, 8, 3, 8, 3, 9, 3, 9, 3, 9, 3, 9, 3, 9, 3, 9, 3, 9, 3, 9, 3, 9, 3, 9, 3, 9, 3, 9, 3, 9, 3, 10, 3, 10, 3, 10, 3, 10, 3, 10, 3, 10, 3, 10, 3, 10, 3, 10, 3, 10, 3, 10, 3, 10, 3, 10, 3, 10, 3, 10, 3, 10, 3, 10, 3, 10, 3, 10, 3, 10, 3, 10, 3, 10, 3, 11, 3, 11, 3, 11, 3, 11, 3, 11, 3, 11, 3, 11, 3, 11, 3, 11, 3, 11, 3, 11, 3, 11, 3, 11, 3, 11, 3, 11, 3, 11, 3, 11, 3, 11, 3, 11, 3, 11, 3, 11, 3, 11, 3, 11, 3, 12, 3, 12, 3, 12, 3, 12, 3, 12, 3, 12, 3, 12, 3, 12, 3, 12, 3, 12, 3, 12, 3, 12, 3, 12, 3, 12, 3, 12, 3, 12, 3, 12, 3, 13, 3, 13, 3, 13, 3, 13, 3, 13, 3, 13, 3, 13, 3, 13, 3, 13, 3, 13, 3, 13, 3, 13, 3, 13, 3, 13, 3, 13, 3, 13, 3, 13, 3, 13, 3, 13, 3, 13, 3, 13, 3, 13, 3, 13, 3, 13, 3, 14, 3, 14, 3, 14, 3, 14, 3, 14, 3, 14, 3, 14, 3, 14, 3, 14, 3, 15, 3, 15, 3, 15, 3, 15, 3, 15, 3, 15, 3, 15, 3, 15, 3, 15, 3, 15, 3, 15, 3, 15, 3, 15, 3, 15, 3, 15, 3, 15, 3, 15, 3, 15, 3, 15, 3, 15, 3, 15, 3, 16, 3, 16, 3, 16, 3, 16, 3, 16, 3, 16, 3, 16, 3, 16, 3, 16, 3, 16, 3, 16, 3, 16, 3, 16, 3, 16, 3, 16, 3, 16, 3, 17, 3, 17, 3, 17, 3, 17, 3, 17, 3, 17, 3, 17, 3, 17, 3, 17, 3, 17, 3, 17, 3, 18, 3, 18, 3, 18, 3, 18, 3, 18, 3, 18, 3, 18, 3, 18, 3, 18, 3, 18, 3, 18, 3, 18, 3, 18, 3, 18, 3, 18, 3, 18, 3, 18, 3, 18, 3, 19, 3, 19, 3, 19, 3, 19, 3, 19, 3, 19, 3, 19, 3, 19, 3, 19, 3, 19, 3, 19, 3, 19, 3, 19, 3, 19, 3, 19, 3, 19, 3, 19, 3, 19, 3, 19, 3, 19, 3, 19, 3, 19, 3, 19, 3, 20, 3, 20, 3, 20, 3, 20, 3, 20, 3, 20, 3, 20, 3, 20, 3, 20, 3, 20, 3, 20, 3, 20, 3, 20, 3, 20, 3, 20, 3, 20, 3, 20, 3, 20, 3, 20, 3, 20, 3, 20, 3, 20, 3, 20, 3, 20, 3, 20, 3, 21, 3, 21, 3, 21, 3, 21, 3, 21, 3, 21, 3, 21, 3, 21, 3, 21, 3, 21, 3, 21, 3, 21, 3, 21, 3, 21, 3, 21, 3, 21, 3, 21, 3, 21, 3, 21, 3, 21, 3, 21, 3, 22, 3, 22, 3, 22, 3, 22, 3, 22, 3, 22, 3, 22, 3, 22, 3, 22, 3, 22, 3, 22, 3, 22, 3, 22, 3, 22, 3, 22, 3, 22, 3, 22, 3, 22, 3, 22, 3, 22, 3, 23, 3, 23, 3, 23, 3, 23, 3, 23, 3, 23, 3, 23, 3, 23, 3, 23, 3, 23, 3, 23, 3, 23, 3, 23, 3, 23, 3, 23, 3, 23, 3, 24, 3, 24, 3, 24, 3, 24, 3, 24, 3, 24, 3, 24, 3, 24, 3, 24, 3, 24, 3, 24, 3, 24, 3, 24, 3, 24, 3, 24, 3, 24, 3, 24, 3, 24, 3, 24, 3, 24, 3, 24, 3, 25, 3, 25, 3, 25, 3, 25, 3, 25, 3, 25, 3, 25, 3, 25, 3, 25, 3, 25, 3, 25, 3, 25, 3, 25, 3, 25, 3, 25, 3, 25, 3, 25, 3, 25, 3, 25, 3, 25, 3, 26, 3, 26, 3, 26, 3, 26, 3, 26, 3, 26, 3, 26, 3, 26, 3, 26, 3, 26, 3, 26, 3, 26, 3, 26, 3, 26, 3, 26, 3, 26, 3, 26, 3, 26, 3, 26, 3, 26, 3, 26, 3, 26, 3, 26, 3, 26, 3, 26, 3, 26, 3, 26, 3, 26, 3, 26, 3, 26, 3, 27, 3, 27, 3, 27, 3, 27, 3, 27, 3, 27, 3, 27, 3, 27, 3, 27, 3, 27, 3, 27, 3, 27, 3, 27, 3, 27, 3, 27, 3, 27, 3, 27, 3, 27, 3, 27, 3, 27, 3, 27, 3, 27, 3, 27, 3, 27, 3, 27, 3, 27, 3, 27, 3, 27, 3, 27, 3, 27, 3, 27, 3, 27, 3, 28, 3, 28, 3, 28, 3, 28, 3, 28, 3, 28, 3, 28, 3, 28, 3, 28, 3, 28, 3, 28, 3, 28, 3, 28, 3, 28, 3, 28, 3, 29, 3, 29, 3, 29, 3, 29, 3, 29, 3, 29, 3, 29, 3, 29, 3, 30, 3, 30, 3, 30, 3, 30, 3, 30, 3, 30, 3, 30, 3, 30, 3, 30, 3, 30, 3, 30, 3, 31, 3, 31, 3, 31, 3, 31, 3, 31, 3, 31, 3, 31, 3, 31, 3, 31, 3, 31, 3, 31, 3, 31, 3, 31, 3, 31, 3, 31, 3, 31, 3, 32, 3, 32, 3, 32, 3, 32, 3, 32, 3, 32, 3, 32, 3, 32, 3, 32, 3, 32, 3, 33, 3, 33, 3, 33, 3, 33, 3, 33, 3, 33, 3, 33, 3, 33, 3, 33, 3, 33, 3, 33, 3, 33, 3, 33, 3, 33, 3, 33, 3, 33, 3, 33, 3, 33, 3, 33, 3, 33, 3, 33, 3, 34, 3, 34, 3, 34, 3, 34, 3, 34, 3, 34, 3, 34, 3, 34, 3, 34, 3, 34, 3, 34, 3, 35, 3, 35, 3, 35, 3, 35, 3, 35, 3, 35, 3, 35, 3, 35, 3, 35, 3, 35, 3, 35, 3, 35, 3, 35, 3, 36, 3, 36, 3, 36, 3, 36, 3, 36, 3, 36, 3, 36, 3, 36, 3, 36, 3, 36, 3, 36, 3, 36, 3, 36, 3, 36, 3, 36, 3, 36, 3, 36, 3, 37, 3, 37, 3, 37, 3, 37, 3, 37, 3, 37, 3, 37, 3, 37, 3, 37, 3, 37, 3, 37, 3, 37, 3, 37, 3, 37, 3, 37, 3, 37, 3, 37, 3, 37, 3, 38, 3, 38, 3, 38, 3, 38, 3, 38, 3, 38, 3, 38, 3, 38, 3, 38, 3, 38, 3, 38, 3, 38, 3, 38, 3, 38, 3, 38, 3, 39, 3, 39, 3, 39, 3, 39, 3, 39, 3, 39, 3, 39, 3, 39, 3, 39, 3, 39, 3, 39, 3, 39, 3, 40, 3, 40, 3, 40, 3, 40, 3, 40, 3, 40, 3, 40, 3, 40, 3, 40, 3, 41, 3, 41, 3, 41, 3, 41, 3, 41, 3, 41, 3, 41, 3, 41, 3, 41, 3, 42, 3, 42, 3, 42, 3, 42, 3, 42, 3, 42, 3, 42, 3, 42, 3, 42, 3, 43, 3, 43, 3, 43, 3, 43, 3, 43, 3, 43, 3, 43, 3, 43, 3, 43, 3, 43, 3, 43, 3, 43, 3, 43, 3, 43, 3, 43, 3, 43, 3, 43, 3, 43, 3, 43, 3, 44, 3, 44, 3, 44, 3, 44, 3, 44, 3, 44, 3, 44, 3, 44, 3, 44, 3, 44, 3, 44, 3, 44, 3, 44, 3, 44, 3, 45, 3, 45, 3, 45, 3, 45, 3, 45, 3, 45, 3, 45, 3, 45, 3, 45, 3, 45, 3, 45, 3, 45, 3, 46, 3, 46, 3, 46, 3, 46, 3, 46, 3, 46, 3, 46, 3, 46, 3, 47, 3, 47, 3, 47, 3, 47, 3, 47, 3, 47, 3, 47, 3, 47, 3, 47, 3, 47, 3, 47, 3, 47, 3, 47, 3, 47, 3, 47, 3, 47, 3, 47, 3, 47, 3, 47, 3, 47, 3, 47, 3, 47, 3, 47, 3, 47, 3, 47, 3, 47, 3, 47, 3, 48, 3, 48, 3, 48, 3, 48, 3, 48, 3, 49, 3, 49, 3, 49, 3, 49, 3, 49, 3, 50, 3, 50, 3, 50, 3, 50, 3, 50, 3, 50, 3, 50, 3, 50, 3, 50, 3, 50, 3, 50, 3, 51, 3, 51, 3, 51, 3, 51, 3, 51, 3, 51, 3, 51, 3, 51, 3, 51, 3, 51, 3, 51, 3, 51, 3, 51, 3, 51, 3, 51, 3, 51, 3, 52, 3, 52, 3, 52, 3, 52, 3, 52, 3, 52, 3, 53, 3, 53, 3, 53, 3, 53, 3, 53, 3, 53, 3, 53, 3, 53, 3, 53, 3, 53, 3, 53, 3, 53, 3, 53, 3, 53, 3, 53, 3, 53, 3, 53, 3, 53, 3, 53, 3, 53, 3, 53, 3, 53, 3, 53, 3, 53, 3, 53, 3, 53, 3, 53, 3, 53, 3, 53, 3, 53, 3, 53, 3, 53, 3, 53, 3, 53, 3, 53, 3, 54, 3, 54, 3, 55, 3, 55, 3, 56, 3, 56, 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, 3, 57, 3, 57, 3, 57, 3, 57, 3, 57, 3, 57, 3, 57, 3, 57, 3, 58, 3, 58, 3, 58, 3, 58, 3, 58, 3, 58, 3, 58, 3, 58, 3, 58, 3, 58, 3, 58, 3, 58, 3, 59, 3, 59, 3, 59, 3, 59, 3, 59, 3, 59, 3, 59, 3, 59, 3, 59, 3, 59, 3, 59, 3, 60, 3, 60, 3, 60, 3, 60, 3, 60, 3, 60, 3, 60, 3, 60, 3, 60, 3, 60, 3, 60, 3, 60, 3, 60, 3, 61, 3, 61, 3, 61, 3, 61, 3, 61, 3, 61, 3, 61, 3, 61, 3, 61, 3, 61, 3, 61, 3, 61, 3, 62, 3, 62, 3, 62, 3, 62, 3, 62, 3, 62, 3, 62, 3, 62, 3, 62, 3, 62, 3, 62, 3, 62, 3, 62, 3, 62, 3, 62, 3, 62, 3, 62, 3, 63, 3, 63, 3, 63, 3, 63, 3, 63, 3, 63, 3, 63, 3, 63, 3, 63, 3, 63, 3, 63, 3, 63, 3, 64, 3, 64, 3, 64, 3, 64, 3, 64, 3, 64, 3, 64, 3, 64, 3, 64, 3, 64, 3, 64, 3, 65, 3, 65, 3, 65, 3, 65, 3, 65, 3, 65, 3, 65, 3, 65, 3, 65, 3, 65, 3, 65, 3, 65, 3, 65, 3, 65, 3, 65, 3, 65, 3, 65, 3, 65, 3, 65, 3, 65, 3, 65, 3, 65, 3, 65, 3, 65, 3, 65, 3, 65, 3, 65, 3, 65, 3, 65, 3, 65, 3, 65, 3, 65, 3, 65, 3, 65, 3, 66, 3, 66, 3, 66, 3, 66, 3, 66, 3, 66, 3, 66, 3, 66, 3, 66, 3, 66, 3, 66, 3, 66, 3, 66, 3, 66, 3, 66, 3, 66, 3, 66, 3, 66, 3, 66, 3, 66, 3, 66, 3, 66, 3, 66, 3, 66, 3, 66, 3, 66, 3, 66, 3, 66, 3, 66, 3, 66, 3, 66, 3, 66, 3, 66, 3, 66, 3, 66, 3, 67, 3, 67, 3, 67, 3, 67, 3, 67, 3, 67, 3, 67, 3, 67, 3, 67, 3, 67, 3, 67, 3, 68, 3, 68, 3, 68, 3, 68, 3, 68, 3, 68, 3, 68, 3, 68, 3, 68, 3, 68, 3, 68, 3, 68, 3, 68, 3, 68, 3, 68, 3, 68, 3, 68, 3, 68, 3, 68, 3, 69, 3, 69, 3, 69, 3, 69, 3, 69, 3, 69, 3, 69, 3, 69, 3, 69, 3, 69, 3, 69, 3, 69, 3, 69, 3, 69, 3, 69, 3, 69, 3, 69, 3, 69, 3, 69, 3, 69, 3, 69, 3, 69, 3, 69, 3, 69, 3, 69, 3, 69, 3, 69, 3, 69, 3, 69, 3, 69, 3, 69, 3, 69, 3, 69, 3, 69, 3, 69, 3, 70, 3, 70, 3, 70, 3, 70, 3, 70, 3, 70, 3, 70, 3, 70, 3, 70, 3, 70, 3, 70, 3, 70, 3, 70, 3, 70, 3, 70, 3, 70, 3, 70, 3, 70, 3, 70, 3, 70, 3, 70, 3, 71, 3, 71, 3, 71, 3, 71, 3, 71, 3, 71, 3, 71, 3, 71, 3, 71, 3, 71, 3, 71, 3, 71, 3, 71, 3, 71, 3, 71, 3, 71, 3, 71, 3, 71, 3, 71, 3, 71, 3, 71, 3, 71, 3, 71, 3, 71, 3, 71, 3, 71, 3, 71, 3, 71, 3, 71, 3, 71, 3, 71, 3, 71, 3, 71, 3, 71, 3, 72, 3, 72, 3, 72, 3, 72, 3, 72, 3, 72, 3, 72, 3, 72, 3, 72, 3, 72, 3, 72, 3, 72, 3, 72, 3, 72, 3, 72, 3, 72, 3, 72, 3, 73, 3, 73, 3, 73, 3, 73, 3, 73, 3, 73, 3, 73, 3, 73, 3, 73, 3, 73, 3, 73, 3, 73, 3, 73, 3, 73, 3, 73, 3, 73, 3, 73, 3, 73, 3, 73, 3, 73, 3, 73, 3, 73, 3, 73, 3, 73, 3, 74, 3, 74, 3, 74, 3, 74, 3, 74, 3, 74, 3, 74, 3, 74, 3, 74, 3, 74, 3, 74, 3, 74, 3, 74, 3, 74, 3, 74, 3, 74, 3, 74, 3, 75, 3, 75, 3, 75, 3, 75, 3, 75, 3, 75, 3, 75, 3, 75, 3, 75, 3, 75, 3, 75, 3, 75, 3, 75, 3, 75, 3, 75, 3, 75, 3, 75, 3, 76, 3, 76, 3, 76, 3, 76, 3, 76, 3, 76, 3, 76, 3, 76, 3, 76, 3, 76, 3, 76, 3, 76, 3, 76, 3, 76, 3, 76, 3, 76, 3, 76, 3, 76, 3, 76, 3, 76, 3, 76, 3, 76, 3, 77, 3, 77, 3, 77, 3, 77, 3, 77, 3, 77, 3, 77, 3, 77, 3, 77, 3, 77, 3, 77, 3, 77, 3, 77, 3, 78, 3, 78, 3, 78, 3, 78, 3, 78, 3, 78, 3, 78, 3, 78, 3, 78, 3, 78, 3, 78, 3, 78, 3, 78, 3, 78, 3, 78, 3, 78, 3, 79, 3, 79, 3, 79, 3, 79, 3, 79, 3, 79, 3, 79, 3, 79, 3, 79, 3, 79, 3, 79, 3, 79, 3, 79, 3, 79, 3, 79, 3, 79, 3, 79, 3, 79, 3, 80, 3, 80, 3, 80, 3, 80, 3, 80, 3, 80, 3, 80, 3, 80, 3, 80, 3, 80, 3, 80, 3, 80, 3, 80, 3, 80, 3, 80, 3, 80, 3, 80, 3, 80, 3, 80, 3, 80, 3, 80, 3, 81, 3, 81, 3, 81, 3, 81, 3, 81, 3, 81, 3, 81, 3, 81, 3, 81, 3, 81, 3, 81, 3, 81, 3, 81, 3, 81, 3, 81, 3, 81, 3, 81, 3, 81, 3, 82, 3, 82, 3, 82, 3, 82, 3, 82, 3, 82, 3, 82, 3, 82, 3, 82, 3, 82, 3, 82, 3, 82, 3, 82, 3, 82, 3, 82, 3, 82, 3, 82, 3, 82, 3, 82, 3, 82, 3, 82, 3, 82, 3, 82, 3, 83, 3, 83, 3, 83, 3, 83, 3, 83, 3, 83, 3, 83, 3, 83, 3, 83, 3, 83, 3, 83, 3, 83, 3, 83, 3, 84, 3, 84, 3, 84, 3, 84, 3, 84, 3, 84, 3, 84, 3, 84, 3, 84, 3, 84, 3, 85, 3, 85, 3, 85, 3, 85, 3, 85, 3, 85, 3, 85, 3, 85, 3, 85, 3, 85, 3, 85, 3, 85, 3, 85, 3, 85, 3, 85, 3, 85, 3, 86, 3, 86, 3, 86, 3, 86, 3, 86, 3, 86, 3, 86, 3, 86, 3, 86, 3, 86, 3, 86, 3, 86, 3, 86, 3, 86, 3, 86, 3, 86, 3, 86, 3, 86, 3, 87, 3, 87, 3, 87, 3, 87, 3, 87, 3, 87, 3, 87, 3, 87, 3, 87, 3, 87, 3, 87, 3, 87, 3, 87, 3, 87, 3, 87, 3, 88, 3, 88, 3, 88, 3, 88, 3, 88, 3, 88, 3, 88, 3, 88, 3, 88, 3, 88, 3, 88, 3, 88, 3, 88, 3, 88, 3, 88, 3, 88, 3, 88, 3, 88, 3, 89, 3, 89, 3, 89, 3, 89, 3, 89, 3, 89, 3, 89, 3, 89, 3, 89, 3, 89, 3, 89, 3, 89, 3, 90, 3, 90, 3, 90, 3, 90, 3, 90, 3, 90, 3, 90, 3, 90, 3, 91, 3, 91, 3, 91, 3, 91, 3, 91, 3, 91, 3, 91, 3, 91, 3, 91, 3, 91, 3, 91, 3, 91, 3, 91, 3, 91, 3, 91, 3, 91, 3, 91, 3, 91, 3, 91, 3, 92, 3, 92, 3, 92, 3, 92, 3, 92, 3, 92, 3, 92, 3, 92, 3, 92, 3, 92, 3, 92, 3, 93, 3, 93, 3, 93, 3, 93, 3, 93, 3, 93, 3, 93, 3, 93, 3, 93, 3, 93, 3, 93, 3, 93, 3, 93, 3, 93, 3, 93, 3, 93, 3, 93, 3, 93, 3, 93, 3, 93, 3, 94, 3, 94, 3, 94, 3, 94, 3, 94, 3, 94, 3, 94, 3, 94, 3, 94, 3, 94, 3, 94, 3, 94, 3, 95, 3, 95, 3, 95, 3, 95, 3, 95, 3, 95, 3, 95, 3, 95, 3, 95, 3, 95, 3, 96, 3, 96, 3, 96, 3, 96, 3, 96, 3, 96, 3, 96, 3, 96, 3, 96, 3, 96, 3, 96, 3, 96, 3, 97, 3, 97, 3, 97, 3, 97, 3, 97, 3, 97, 3, 97, 3, 97, 3, 97, 3, 97, 3, 97, 3, 97, 3, 97, 3, 97, 3, 97, 3, 97, 3, 97, 3, 98, 3, 98, 3, 98, 3, 98, 3, 98, 3, 98, 3, 98, 3, 99, 3, 99, 3, 99, 3, 99, 3, 99, 3, 99, 3, 99, 3, 99, 3, 99, 3, 99, 3, 99, 3, 99, 3, 100, 3, 100, 3, 100, 3, 100, 3, 100, 3, 100, 3, 100, 3, 100, 3, 100, 3, 101, 3, 101, 3, 101, 3, 101, 3, 101, 3, 101, 3, 101, 3, 101, 3, 101, 3, 101, 3, 102, 3, 102, 3, 102, 3, 102, 3, 102, 3, 102, 3, 102, 3, 102, 3, 102, 3, 102, 3, 102, 3, 102, 3, 102, 3, 102, 3, 102, 3, 102, 3, 102, 3, 102, 3, 102, 3, 102, 3, 102, 3, 102, 3, 102, 3, 102, 3, 102, 3, 102, 3, 102, 3, 103, 3, 103, 3, 103, 3, 103, 3, 103, 3, 103, 3, 103, 3, 103, 3, 103, 3, 103, 3, 103, 3, 103, 3, 103, 3, 103, 3, 104, 3, 104, 3, 104, 3, 104, 3, 104, 3, 104, 3, 104, 3, 104, 3, 105, 3, 105, 3, 105, 3, 105, 3, 105, 3, 105, 3, 105, 3, 105, 3, 105, 3, 105, 3, 105, 3, 105, 3, 105, 3, 105, 3, 105, 3, 105, 3, 105, 3, 106, 3, 106, 3, 106, 3, 106, 3, 106, 3, 106, 3, 106, 3, 106, 3, 106, 3, 106, 3, 106, 3, 106, 3, 106, 3, 107, 3, 107, 3, 107, 3, 107, 3, 107, 3, 107, 3, 107, 3, 107, 3, 107, 3, 107, 3, 107, 3, 108, 3, 108, 3, 108, 3, 108, 3, 108, 3, 108, 3, 108, 3, 108, 3, 108, 3, 108, 3, 108, 3, 108, 3, 108, 3, 108, 3, 108, 3, 108, 3, 108, 3, 108, 3, 108, 3, 108, 3, 109, 3, 109, 3, 109, 3, 109, 3, 109, 3, 109, 3, 109, 3, 109, 3, 109, 3, 109, 3, 109, 3, 109, 3, 109, 3, 109, 3, 109, 3, 109, 3, 109, 3, 109, 3, 109, 3, 109, 3, 109, 3, 109, 3, 109, 3, 109, 3, 109, 3, 109, 3, 109, 3, 109, 3, 109, 3, 109, 3, 110, 3, 110, 3, 110, 3, 110, 3, 110, 3, 110, 3, 110, 3, 110, 3, 110, 3, 110, 3, 110, 3, 110, 3, 110, 3, 110, 3, 110, 3, 110, 3, 110, 3, 110, 3, 110, 3, 110, 3, 110, 3, 110, 3, 110, 3, 110, 3, 110, 3, 111, 3, 111, 3, 111, 3, 111, 3, 111, 3, 111, 3, 111, 3, 111, 3, 111, 3, 112, 3, 112, 3, 112, 3, 112, 3, 112, 3, 112, 3, 112, 3, 112, 3, 112, 3, 112, 3, 112, 3, 112, 3, 112, 3, 112, 3, 112, 3, 112, 3, 112, 3, 112, 3, 112, 3, 113, 3, 113, 3, 113, 3, 113, 3, 113, 3, 113, 3, 113, 3, 113, 3, 113, 3, 113, 3, 113, 3, 113, 3, 113, 3, 113, 3, 113, 3, 114, 3, 114, 3, 114, 3, 114, 3, 114, 3, 114, 3, 114, 3, 114, 3, 114, 3, 114, 3, 114, 3, 114, 3, 114, 3, 114, 3, 114, 3, 114, 3, 114, 3, 115, 3, 115, 3, 115, 3, 115, 3, 115, 3, 115, 3, 115, 3, 115, 3, 115, 3, 115, 3, 115, 3, 115, 3, 116, 3, 116, 3, 116, 3, 116, 3, 116, 3, 116, 3, 116, 3, 116, 3, 117, 3, 117, 3, 117, 3, 117, 3, 118, 3, 118, 3, 118, 3, 118, 3, 118, 3, 118, 3, 118, 3, 118, 3, 119, 3, 119, 3, 119, 3, 119, 3, 119, 3, 119, 3, 119, 3, 119, 3, 119, 3, 119, 3, 119, 3, 120, 6, 120, 2092, 10, 120, 13, 120, 14, 120, 2093, 3, 121, 3, 121, 3, 122, 3, 122, 3, 123, 3, 123, 3, 124, 3, 124, 3, 125, 3, 125, 3, 126, 3, 126, 3, 127, 3, 127, 3, 127, 3, 127, 3, 127, 3, 127, 3, 127, 3, 127, 3, 127, 3, 127, 3, 127, 3, 127, 3, 127, 3, 127, 3, 127, 3, 127, 3, 127, 3, 127, 3, 127, 3, 127, 3, 127, 3, 127, 3, 127, 3, 127, 3, 127, 3, 127, 3, 127, 3, 127, 3, 127, 3, 127, 5, 127, 2138, 10, 127, 3, 127, 6, 127, 2141, 10, 127, 13, 127, 14, 127, 2142, 3, 127, 3, 127, 3, 127, 3, 127, 3, 127, 3, 127, 3, 127, 3, 127, 3, 127, 3, 127, 3, 127, 3, 127, 3, 127, 3, 127, 3, 127, 3, 127, 3, 127, 3, 127, 3, 127, 3, 127, 3, 127, 3, 127, 3, 127, 3, 127, 3, 127, 5, 127, 2170, 10, 127, 3, 128, 3, 128, 6, 128, 2174, 10, 128, 13, 128, 14, 128, 2175, 3, 128, 3, 128, 3, 128, 3, 128, 5, 128, 2182, 10, 128, 3, 129, 3, 129, 3, 129, 3, 129, 3, 129, 6, 129, 2189, 10, 129, 13, 129, 14, 129, 2190, 3, 130, 3, 130, 3, 130, 3, 131, 3, 131, 3, 132, 3, 132, 3, 132, 5, 132, 2201, 10, 132, 3, 133, 6, 133, 2204, 10, 133, 13, 133, 14, 133, 2205, 3, 133, 3, 133, 3, 134, 3, 134, 3, 134, 3, 134, 7, 134, 2214, 10, 134, 12, 134, 14, 134, 2217, 11, 134, 3, 134, 3, 134, 3, 134, 3, 134, 3, 134, 3, 135, 3, 135, 3, 135, 3, 135, 7, 135, 2228, 10, 135, 12, 135, 14, 135, 2231, 11, 135, 3, 135, 3, 135, 3, 2215, 2, 136, 3, 3, 5, 4, 7, 5, 9, 6, 11, 7, 13, 8, 15, 9, 17, 10, 19, 11, 21, 12, 23, 13, 25, 14, 27, 15, 29, 16, 31, 17, 33, 18, 35, 19, 37, 20, 39, 21, 41, 22, 43, 23, 45, 24, 47, 25, 49, 26, 51, 27, 53, 28, 55, 29, 57, 30, 59, 31, 61, 32, 63, 33, 65, 34, 67, 35, 69, 36, 71, 37, 73, 38, 75, 39, 77, 40, 79, 41, 81, 42, 83, 43, 85, 44, 87, 45, 89, 46, 91, 47, 93, 48, 95, 49, 97, 50, 99, 51, 101, 52, 103, 53, 105, 54, 107, 55, 109, 56, 111, 57, 113, 58, 115, 59, 117, 60, 119, 61, 121, 62, 123, 63, 125, 64, 127, 65, 129, 66, 131, 67, 133, 68, 135, 69, 137, 70, 139, 71, 141, 72, 143, 73, 145, 74, 147, 75, 149, 76, 151, 77, 153, 78, 155, 79, 157, 80, 159, 81, 161, 82, 163, 83, 165, 84, 167, 85, 169, 86, 171, 87, 173, 88, 175, 89, 177, 90, 179, 91, 181, 92, 183, 93, 185, 94, 187, 95, 189, 96, 191, 97, 193, 98, 195, 99, 197, 100, 199, 101, 201, 102, 203, 103, 205, 104, 207, 105, 209, 106, 211, 107, 213, 108, 215, 109, 217, 110, 219, 111, 221, 112, 223, 113, 225, 114, 227, 115, 229, 116, 231, 117, 233, 118, 235, 119, 237, 120, 239, 121, 241, 122, 243, 123, 245, 124, 247, 125, 249, 126, 251, 127, 253, 128, 255, 129, 257, 130, 259, 131, 261, 2, 263, 2, 265, 132, 267, 133, 269, 134, 3, 2, 8, 5, 2, 50, 59, 67, 92, 99, 124, 4, 2, 50, 59, 67, 92, 5, 2, 50, 59, 67, 72, 99, 104, 3, 2, 36, 36, 5, 2, 11, 12, 14, 15, 34, 34, 4, 2, 12, 12, 15, 15, 2, 2247, 2, 3, 3, 2, 2, 2, 2, 5, 3, 2, 2, 2, 2, 7, 3, 2, 2, 2, 2, 9, 3, 2, 2, 2, 2, 11, 3, 2, 2, 2, 2, 13, 3, 2, 2, 2, 2, 15, 3, 2, 2, 2, 2, 17, 3, 2, 2, 2, 2, 19, 3, 2, 2, 2, 2, 21, 3, 2, 2, 2, 2, 23, 3, 2, 2, 2, 2, 25, 3, 2, 2, 2, 2, 27, 3, 2, 2, 2, 2, 29, 3, 2, 2, 2, 2, 31, 3, 2, 2, 2, 2, 33, 3, 2, 2, 2, 2, 35, 3, 2, 2, 2, 2, 37, 3, 2, 2, 2, 2, 39, 3, 2, 2, 2, 2, 41, 3, 2, 2, 2, 2, 43, 3, 2, 2, 2, 2, 45, 3, 2, 2, 2, 2, 47, 3, 2, 2, 2, 2, 49, 3, 2, 2, 2, 2, 51, 3, 2, 2, 2, 2, 53, 3, 2, 2, 2, 2, 55, 3, 2, 2, 2, 2, 57, 3, 2, 2, 2, 2, 59, 3, 2, 2, 2, 2, 61, 3, 2, 2, 2, 2, 63, 3, 2, 2, 2, 2, 65, 3, 2, 2, 2, 2, 67, 3, 2, 2, 2, 2, 69, 3, 2, 2, 2, 2, 71, 3, 2, 2, 2, 2, 73, 3, 2, 2, 2, 2, 75, 3, 2, 2, 2, 2, 77, 3, 2, 2, 2, 2, 79, 3, 2, 2, 2, 2, 81, 3, 2, 2, 2, 2, 83, 3, 2, 2, 2, 2, 85, 3, 2, 2, 2, 2, 87, 3, 2, 2, 2, 2, 89, 3, 2, 2, 2, 2, 91, 3, 2, 2, 2, 2, 93, 3, 2, 2, 2, 2, 95, 3, 2, 2, 2, 2, 97, 3, 2, 2, 2, 2, 99, 3, 2, 2, 2, 2, 101, 3, 2, 2, 2, 2, 103, 3, 2, 2, 2, 2, 105, 3, 2, 2, 2, 2, 107, 3, 2, 2, 2, 2, 109, 3, 2, 2, 2, 2, 111, 3, 2, 2, 2, 2, 113, 3, 2, 2, 2, 2, 115, 3, 2, 2, 2, 2, 117, 3, 2, 2, 2, 2, 119, 3, 2, 2, 2, 2, 121, 3, 2, 2, 2, 2, 123, 3, 2, 2, 2, 2, 125, 3, 2, 2, 2, 2, 127, 3, 2, 2, 2, 2, 129, 3, 2, 2, 2, 2, 131, 3, 2, 2, 2, 2, 133, 3, 2, 2, 2, 2, 135, 3, 2, 2, 2, 2, 137, 3, 2, 2, 2, 2, 139, 3, 2, 2, 2, 2, 141, 3, 2, 2, 2, 2, 143, 3, 2, 2, 2, 2, 145, 3, 2, 2, 2, 2, 147, 3, 2, 2, 2, 2, 149, 3, 2, 2, 2, 2, 151, 3, 2, 2, 2, 2, 153, 3, 2, 2, 2, 2, 155, 3, 2, 2, 2, 2, 157, 3, 2, 2, 2, 2, 159, 3, 2, 2, 2, 2, 161, 3, 2, 2, 2, 2, 163, 3, 2, 2, 2, 2, 165, 3, 2, 2, 2, 2, 167, 3, 2, 2, 2, 2, 169, 3, 2, 2, 2, 2, 171, 3, 2, 2, 2, 2, 173, 3, 2, 2, 2, 2, 175, 3, 2, 2, 2, 2, 177, 3, 2, 2, 2, 2, 179, 3, 2, 2, 2, 2, 181, 3, 2, 2, 2, 2, 183, 3, 2, 2, 2, 2, 185, 3, 2, 2, 2, 2, 187, 3, 2, 2, 2, 2, 189, 3, 2, 2, 2, 2, 191, 3, 2, 2, 2, 2, 193, 3, 2, 2, 2, 2, 195, 3, 2, 2, 2, 2, 197, 3, 2, 2, 2, 2, 199, 3, 2, 2, 2, 2, 201, 3, 2, 2, 2, 2, 203, 3, 2, 2, 2, 2, 205, 3, 2, 2, 2, 2, 207, 3, 2, 2, 2, 2, 209, 3, 2, 2, 2, 2, 211, 3, 2, 2, 2, 2, 213, 3, 2, 2, 2, 2, 215, 3, 2, 2, 2, 2, 217, 3, 2, 2, 2, 2, 219, 3, 2, 2, 2, 2, 221, 3, 2, 2, 2, 2, 223, 3, 2, 2, 2, 2, 225, 3, 2, 2, 2, 2, 227, 3, 2, 2, 2, 2, 229, 3, 2, 2, 2, 2, 231, 3, 2, 2, 2, 2, 233, 3, 2, 2, 2, 2, 235, 3, 2, 2, 2, 2, 237, 3, 2, 2, 2, 2, 239, 3, 2, 2, 2, 2, 241, 3, 2, 2, 2, 2, 243, 3, 2, 2, 2, 2, 245, 3, 2, 2, 2, 2, 247, 3, 2, 2, 2, 2, 249, 3, 2, 2, 2, 2, 251, 3, 2, 2, 2, 2, 253, 3, 2, 2, 2, 2, 255, 3, 2, 2, 2, 2, 257, 3, 2, 2, 2, 2, 259, 3, 2, 2, 2, 2, 265, 3, 2, 2, 2, 2, 267, 3, 2, 2, 2, 2, 269, 3, 2, 2, 2, 3, 271, 3, 2, 2, 2, 5, 273, 3, 2, 2, 2, 7, 275, 3, 2, 2, 2, 9, 290, 3, 2, 2, 2, 11, 292, 3, 2, 2, 2, 13, 294, 3, 2, 2, 2, 15, 308, 3, 2, 2, 2, 17, 327, 3, 2, 2, 2, 19, 340, 3, 2, 2, 2, 21, 362, 3, 2, 2, 2, 23, 385, 3, 2, 2, 2, 25, 402, 3, 2, 2, 2, 27, 426, 3, 2, 2, 2, 29, 435, 3, 2, 2, 2, 31, 456, 3, 2, 2, 2, 33, 472, 3, 2, 2, 2, 35, 483, 3, 2, 2, 2, 37, 501, 3, 2, 2, 2, 39, 524, 3, 2, 2, 2, 41, 549, 3, 2, 2, 2, 43, 570, 3, 2, 2, 2, 45, 590, 3, 2, 2, 2, 47, 606, 3, 2, 2, 2, 49, 627, 3, 2, 2, 2, 51, 647, 3, 2, 2, 2, 53, 677, 3, 2, 2, 2, 55, 709, 3, 2, 2, 2, 57, 724, 3, 2, 2, 2, 59, 732, 3, 2, 2, 2, 61, 743, 3, 2, 2, 2, 63, 759, 3, 2, 2, 2, 65, 769, 3, 2, 2, 2, 67, 790, 3, 2, 2, 2, 69, 801, 3, 2, 2, 2, 71, 814, 3, 2, 2, 2, 73, 831, 3, 2, 2, 2, 75, 849, 3, 2, 2, 2, 77, 864, 3, 2, 2, 2, 79, 876, 3, 2, 2, 2, 81, 885, 3, 2, 2, 2, 83, 894, 3, 2, 2, 2, 85, 903, 3, 2, 2, 2, 87, 922, 3, 2, 2, 2, 89, 936, 3, 2, 2, 2, 91, 948, 3, 2, 2, 2, 93, 956, 3, 2, 2, 2, 95, 983, 3, 2, 2, 2, 97, 988, 3, 2, 2, 2, 99, 993, 3, 2, 2, 2, 101, 1004, 3, 2, 2, 2, 103, 1020, 3, 2, 2, 2, 105, 1026, 3, 2, 2, 2, 107, 1061, 3, 2, 2, 2, 109, 1063, 3, 2, 2, 2, 111, 1065, 3, 2, 2, 2, 113, 1067, 3, 2, 2, 2, 115, 1090, 3, 2, 2, 2, 117, 1102, 3, 2, 2, 2, 119, 1113, 3, 2, 2, 2, 121, 1126, 3, 2, 2, 2, 123, 1138, 3, 2, 2, 2, 125, 1155, 3, 2, 2, 2, 127, 1167, 3, 2, 2, 2, 129, 1178, 3, 2, 2, 2, 131, 1212, 3, 2, 2, 2, 133, 1247, 3, 2, 2, 2, 135, 1258, 3, 2, 2, 2, 137, 1277, 3, 2, 2, 2, 139, 1312, 3, 2, 2, 2, 141, 1333, 3, 2, 2, 2, 143, 1367, 3, 2, 2, 2, 145, 1384, 3, 2, 2, 2, 147, 1408, 3, 2, 2, 2, 149, 1425, 3, 2, 2, 2, 151, 1442, 3, 2, 2, 2, 153, 1464, 3, 2, 2, 2, 155, 1477, 3, 2, 2, 2, 157, 1493, 3, 2, 2, 2, 159, 1511, 3, 2, 2, 2, 161, 1532, 3, 2, 2, 2, 163, 1550, 3, 2, 2, 2, 165, 1573, 3, 2, 2, 2, 167, 1586, 3, 2, 2, 2, 169, 1596, 3, 2, 2, 2, 171, 1612, 3, 2, 2, 2, 173, 1630, 3, 2, 2, 2, 175, 1645, 3, 2, 2, 2, 177, 1663, 3, 2, 2, 2, 179, 1675, 3, 2, 2, 2, 181, 1683, 3, 2, 2, 2, 183, 1702, 3, 2, 2, 2, 185, 1713, 3, 2, 2, 2, 187, 1733, 3, 2, 2, 2, 189, 1745, 3, 2, 2, 2, 191, 1755, 3, 2, 2, 2, 193, 1767, 3, 2, 2, 2, 195, 1784, 3, 2, 2, 2, 197, 1791, 3, 2, 2, 2, 199, 1803, 3, 2, 2, 2, 201, 1812, 3, 2, 2, 2, 203, 1822, 3, 2, 2, 2, 205, 1849, 3, 2, 2, 2, 207, 1863, 3, 2, 2, 2, 209, 1871, 3, 2, 2, 2, 211, 1888, 3, 2, 2, 2, 213, 1901, 3, 2, 2, 2, 215, 1912, 3, 2, 2, 2, 217, 1932, 3, 2, 2, 2, 219, 1962, 3, 2, 2, 2, 221, 1987, 3, 2, 2, 2, 223, 1996, 3, 2, 2, 2, 225, 2015, 3, 2, 2, 2, 227, 2030, 3, 2, 2, 2, 229, 2047, 3, 2, 2, 2, 231, 2059, 3, 2, 2, 2, 233, 2067, 3, 2, 2, 2, 235, 2071, 3, 2, 2, 2, 237, 2079, 3, 2, 2, 2, 239, 2091, 3, 2, 2, 2, 241, 2095, 3, 2, 2, 2, 243, 2097, 3, 2, 2, 2, 245, 2099, 3, 2, 2, 2, 247, 2101, 3, 2, 2, 2, 249, 2103, 3, 2, 2, 2, 251, 2105, 3, 2, 2, 2, 253, 2169, 3, 2, 2, 2, 255, 2181, 3, 2, 2, 2, 257, 2188, 3, 2, 2, 2, 259, 2192, 3, 2, 2, 2, 261, 2195, 3, 2, 2, 2, 263, 2200, 3, 2, 2, 2, 265, 2203, 3, 2, 2, 2, 267, 2209, 3, 2, 2, 2, 269, 2223, 3, 2, 2, 2, 271, 272, 7, 125, 2, 2, 272, 4, 3, 2, 2, 2, 273, 274, 7, 127, 2, 2, 274, 6, 3, 2, 2, 2, 275, 276, 7, 99, 2, 2, 276, 277, 7, 116, 2, 2, 277, 278, 7, 101, 2, 2, 278, 279, 7, 106, 2, 2, 279, 280, 7, 107, 2, 2, 280, 281, 7, 120, 2, 2, 281, 282, 7, 103, 2, 2, 282, 283, 7, 88, 2, 2, 283, 284, 7, 103, 2, 2, 284, 285, 7, 116, 2, 2, 285, 286, 7, 117, 2, 2, 286, 287, 7, 107, 2, 2, 287, 288, 7, 113, 2, 2, 288, 289, 7, 112, 2, 2, 289, 8, 3, 2, 2, 2, 290, 291, 7, 63, 2, 2, 291, 10, 3, 2, 2, 2, 292, 293, 7, 61, 2, 2, 293, 12, 3, 2, 2, 2, 294, 295, 7, 113, 2, 2, 295, 296, 7, 100, 2, 2, 296, 297, 7, 108, 2, 2, 297, 298, 7, 103, 2, 2, 298, 299, 7, 101, 2, 2, 299, 300, 7, 118, 2, 2, 300, 301, 7, 88, 2, 2, 301, 302, 7, 103, 2, 2, 302, 303, 7, 116, 2, 2, 303, 304, 7, 117, 2, 2, 304, 305, 7, 107, 2, 2, 305, 306, 7, 113, 2, 2, 306, 307, 7, 112, 2, 2, 307, 14, 3, 2, 2, 2, 308, 309, 7, 82, 2, 2, 309, 310, 7, 68, 2, 2, 310, 311, 7, 90, 2, 2, 311, 312, 7, 67, 2, 2, 312, 313, 7, 105, 2, 2, 313, 314, 7, 105, 2, 2, 314, 315, 7, 116, 2, 2, 315, 316, 7, 103, 2, 2, 316, 317, 7, 105, 2, 2, 317, 318, 7, 99, 2, 2, 318, 319, 7, 118, 2, 2, 319, 320, 7, 103, 2, 2, 320, 321, 7, 86, 2, 2, 321, 322, 7, 99, 2, 2, 322, 323, 7, 116, 2, 2, 323, 324, 7, 105, 2, 2, 324, 325, 7, 103, 2, 2, 325, 326, 7, 118, 2, 2, 326, 16, 3, 2, 2, 2, 327, 328, 7, 82, 2, 2, 328, 329, 7, 68, 2, 2, 329, 330, 7, 90, 2, 2, 330, 331, 7, 68, 2, 2, 331, 332, 7, 119, 2, 2, 332, 333, 7, 107, 2, 2, 333, 334, 7, 110, 2, 2, 334, 335, 7, 102, 2, 2, 335, 336, 7, 72, 2, 2, 336, 337, 7, 107, 2, 2, 337, 338, 7, 110, 2, 2, 338, 339, 7, 103, 2, 2, 339, 18, 3, 2, 2, 2, 340, 341, 7, 82, 2, 2, 341, 342, 7, 68, 2, 2, 342, 343, 7, 90, 2, 2, 343, 344, 7, 69, 2, 2, 344, 345, 7, 113, 2, 2, 345, 346, 7, 112, 2, 2, 346, 347, 7, 118, 2, 2, 347, 348, 7, 99, 2, 2, 348, 349, 7, 107, 2, 2, 349, 350, 7, 112, 2, 2, 350, 351, 7, 103, 2, 2, 351, 352, 7, 116, 2, 2, 352, 353, 7, 75, 2, 2, 353, 354, 7, 118, 2, 2, 354, 355, 7, 103, 2, 2, 355, 356, 7, 111, 2, 2, 356, 357, 7, 82, 2, 2, 357, 358, 7, 116, 2, 2, 358, 359, 7, 113, 2, 2, 359, 360, 7, 122, 2, 2, 360, 361, 7, 123, 2, 2, 361, 20, 3, 2, 2, 2, 362, 363, 7, 82, 2, 2, 363, 364, 7, 68, 2, 2, 364, 365, 7, 90, 2, 2, 365, 366, 7, 69, 2, 2, 366, 367, 7, 113, 2, 2, 367, 368, 7, 114, 2, 2, 368, 369, 7, 123, 2, 2, 369, 370, 7, 72, 2, 2, 370, 371, 7, 107, 2, 2, 371, 372, 7, 110, 2, 2, 372, 373, 7, 103, 2, 2, 373, 374, 7, 117, 2, 2, 374, 375, 7, 68, 2, 2, 375, 376, 7, 119, 2, 2, 376, 377, 7, 107, 2, 2, 377, 378, 7, 110, 2, 2, 378, 379, 7, 102, 2, 2, 379, 380, 7, 82, 2, 2, 380, 381, 7, 106, 2, 2, 381, 382, 7, 99, 2, 2, 382, 383, 7, 117, 2, 2, 383, 384, 7, 103, 2, 2, 384, 22, 3, 2, 2, 2, 385, 386, 7, 82, 2, 2, 386, 387, 7, 68, 2, 2, 387, 388, 7, 90, 2, 2, 388, 389, 7, 72, 2, 2, 389, 390, 7, 107, 2, 2, 390, 391, 7, 110, 2, 2, 391, 392, 7, 103, 2, 2, 392, 393, 7, 84, 2, 2, 393, 394, 7, 103, 2, 2, 394, 395, 7, 104, 2, 2, 395, 396, 7, 103, 2, 2, 396, 397, 7, 116, 2, 2, 397, 398, 7, 103, 2, 2, 398, 399, 7, 112, 2, 2, 399, 400, 7, 101, 2, 2, 400, 401, 7, 103, 2, 2, 401, 24, 3, 2, 2, 2, 402, 403, 7, 82, 2, 2, 403, 404, 7, 68, 2, 2, 404, 405, 7, 90, 2, 2, 405, 406, 7, 72, 2, 2, 406, 407, 7, 116, 2, 2, 407, 408, 7, 99, 2, 2, 408, 409, 7, 111, 2, 2, 409, 410, 7, 103, 2, 2, 410, 411, 7, 121, 2, 2, 411, 412, 7, 113, 2, 2, 412, 413, 7, 116, 2, 2, 413, 414, 7, 109, 2, 2, 414, 415, 7, 117, 2, 2, 415, 416, 7, 68, 2, 2, 416, 417, 7, 119, 2, 2, 417, 418, 7, 107, 2, 2, 418, 419, 7, 110, 2, 2, 419, 420, 7, 102, 2, 2, 420, 421, 7, 82, 2, 2, 421, 422, 7, 106, 2, 2, 422, 423, 7, 99, 2, 2, 423, 424, 7, 117, 2, 2, 424, 425, 7, 103, 2, 2, 425, 26, 3, 2, 2, 2, 426, 427, 7, 82, 2, 2, 427, 428, 7, 68, 2, 2, 428, 429, 7, 90, 2, 2, 429, 430, 7, 73, 2, 2, 430, 431, 7, 116, 2, 2, 431, 432, 7, 113, 2, 2, 432, 433, 7, 119, 2, 2, 433, 434, 7, 114, 2, 2, 434, 28, 3, 2, 2, 2, 435, 436, 7, 82, 2, 2, 436, 437, 7, 68, 2, 2, 437, 438, 7, 90, 2, 2, 438, 439, 7, 74, 2, 2, 439, 440, 7, 103, 2, 2, 440, 441, 7, 99, 2, 2, 441, 442, 7, 102, 2, 2, 442, 443, 7, 103, 2, 2, 443, 444, 7, 116, 2, 2, 444, 445, 7, 117, 2, 2, 445, 446, 7, 68, 2, 2, 446, 447, 7, 119, 2, 2, 447, 448, 7, 107, 2, 2, 448, 449, 7, 110, 2, 2, 449, 450, 7, 102, 2, 2, 450, 451, 7, 82, 2, 2, 451, 452, 7, 106, 2, 2, 452, 453, 7, 99, 2, 2, 453, 454, 7, 117, 2, 2, 454, 455, 7, 103, 2, 2, 455, 30, 3, 2, 2, 2, 456, 457, 7, 82, 2, 2, 457, 458, 7, 68, 2, 2, 458, 459, 7, 90, 2, 2, 459, 460, 7, 80, 2, 2, 460, 461, 7, 99, 2, 2, 461, 462, 7, 118, 2, 2, 462, 463, 7, 107, 2, 2, 463, 464, 7, 120, 2, 2, 464, 465, 7, 103, 2, 2, 465, 466, 7, 86, 2, 2, 466, 467, 7, 99, 2, 2, 467, 468, 7, 116, 2, 2, 468, 469, 7, 105, 2, 2, 469, 470, 7, 103, 2, 2, 470, 471, 7, 118, 2, 2, 471, 32, 3, 2, 2, 2, 472, 473, 7, 82, 2, 2, 473, 474, 7, 68, 2, 2, 474, 475, 7, 90, 2, 2, 475, 476, 7, 82, 2, 2, 476, 477, 7, 116, 2, 2, 477, 478, 7, 113, 2, 2, 478, 479, 7, 108, 2, 2, 479, 480, 7, 103, 2, 2, 480, 481, 7, 101, 2, 2, 481, 482, 7, 118, 2, 2, 482, 34, 3, 2, 2, 2, 483, 484, 7, 82, 2, 2, 484, 485, 7, 68, 2, 2, 485, 486, 7, 90, 2, 2, 486, 487, 7, 84, 2, 2, 487, 488, 7, 103, 2, 2, 488, 489, 7, 104, 2, 2, 489, 490, 7, 103, 2, 2, 490, 491, 7, 116, 2, 2, 491, 492, 7, 103, 2, 2, 492, 493, 7, 112, 2, 2, 493, 494, 7, 101, 2, 2, 494, 495, 7, 103, 2, 2, 495, 496, 7, 82, 2, 2, 496, 497, 7, 116, 2, 2, 497, 498, 7, 113, 2, 2, 498, 499, 7, 122, 2, 2, 499, 500, 7, 123, 2, 2, 500, 36, 3, 2, 2, 2, 501, 502, 7, 82, 2, 2, 502, 503, 7, 68, 2, 2, 503, 504, 7, 90, 2, 2, 504, 505, 7, 84, 2, 2, 505, 506, 7, 103, 2, 2, 506, 507, 7, 117, 2, 2, 507, 508, 7, 113, 2, 2, 508, 509, 7, 119, 2, 2, 509, 510, 7, 116, 2, 2, 510, 511, 7, 101, 2, 2, 511, 512, 7, 103, 2, 2, 512, 513, 7, 117, 2, 2, 513, 514, 7, 68, 2, 2, 514, 515, 7, 119, 2, 2, 515, 516, 7, 107, 2, 2, 516, 517, 7, 110, 2, 2, 517, 518, 7, 102, 2, 2, 518, 519, 7, 82, 2, 2, 519, 520, 7, 106, 2, 2, 520, 521, 7, 99, 2, 2, 521, 522, 7, 117, 2, 2, 522, 523, 7, 103, 2, 2, 523, 38, 3, 2, 2, 2, 524, 525, 7, 82, 2, 2, 525, 526, 7, 68, 2, 2, 526, 527, 7, 90, 2, 2, 527, 528, 7, 85, 2, 2, 528, 529, 7, 106, 2, 2, 529, 530, 7, 103, 2, 2, 530, 531, 7, 110, 2, 2, 531, 532, 7, 110, 2, 2, 532, 533, 7, 85, 2, 2, 533, 534, 7, 101, 2, 2, 534, 535, 7, 116, 2, 2, 535, 536, 7, 107, 2, 2, 536, 537, 7, 114, 2, 2, 537, 538, 7, 118, 2, 2, 538, 539, 7, 68, 2, 2, 539, 540, 7, 119, 2, 2, 540, 541, 7, 107, 2, 2, 541, 542, 7, 110, 2, 2, 542, 543, 7, 102, 2, 2, 543, 544, 7, 82, 2, 2, 544, 545, 7, 106, 2, 2, 545, 546, 7, 99, 2, 2, 546, 547, 7, 117, 2, 2, 547, 548, 7, 103, 2, 2, 548, 40, 3, 2, 2, 2, 549, 550, 7, 82, 2, 2, 550, 551, 7, 68, 2, 2, 551, 552, 7, 90, 2, 2, 552, 553, 7, 85, 2, 2, 553, 554, 7, 113, 2, 2, 554, 555, 7, 119, 2, 2, 555, 556, 7, 116, 2, 2, 556, 557, 7, 101, 2, 2, 557, 558, 7, 103, 2, 2, 558, 559, 7, 117, 2, 2, 559, 560, 7, 68, 2, 2, 560, 561, 7, 119, 2, 2, 561, 562, 7, 107, 2, 2, 562, 563, 7, 110, 2, 2, 563, 564, 7, 102, 2, 2, 564, 565, 7, 82, 2, 2, 565, 566, 7, 106, 2, 2, 566, 567, 7, 99, 2, 2, 567, 568, 7, 117, 2, 2, 568, 569, 7, 103, 2, 2, 569, 42, 3, 2, 2, 2, 570, 571, 7, 82, 2, 2, 571, 572, 7, 68, 2, 2, 572, 573, 7, 90, 2, 2, 573, 574, 7, 86, 2, 2, 574, 575, 7, 99, 2, 2, 575, 576, 7, 116, 2, 2, 576, 577, 7, 105, 2, 2, 577, 578, 7, 103, 2, 2, 578, 579, 7, 118, 2, 2, 579, 580, 7, 70, 2, 2, 580, 581, 7, 103, 2, 2, 581, 582, 7, 114, 2, 2, 582, 583, 7, 103, 2, 2, 583, 584, 7, 112, 2, 2, 584, 585, 7, 102, 2, 2, 585, 586, 7, 103, 2, 2, 586, 587, 7, 112, 2, 2, 587, 588, 7, 101, 2, 2, 588, 589, 7, 123, 2, 2, 589, 44, 3, 2, 2, 2, 590, 591, 7, 82, 2, 2, 591, 592, 7, 68, 2, 2, 592, 593, 7, 90, 2, 2, 593, 594, 7, 88, 2, 2, 594, 595, 7, 99, 2, 2, 595, 596, 7, 116, 2, 2, 596, 597, 7, 107, 2, 2, 597, 598, 7, 99, 2, 2, 598, 599, 7, 112, 2, 2, 599, 600, 7, 118, 2, 2, 600, 601, 7, 73, 2, 2, 601, 602, 7, 116, 2, 2, 602, 603, 7, 113, 2, 2, 603, 604, 7, 119, 2, 2, 604, 605, 7, 114, 2, 2, 605, 46, 3, 2, 2, 2, 606, 607, 7, 90, 2, 2, 607, 608, 7, 69, 2, 2, 608, 609, 7, 68, 2, 2, 609, 610, 7, 119, 2, 2, 610, 611, 7, 107, 2, 2, 611, 612, 7, 110, 2, 2, 612, 613, 7, 102, 2, 2, 613, 614, 7, 69, 2, 2, 614, 615, 7, 113, 2, 2, 615, 616, 7, 112, 2, 2, 616, 617, 7, 104, 2, 2, 617, 618, 7, 107, 2, 2, 618, 619, 7, 105, 2, 2, 619, 620, 7, 119, 2, 2, 620, 621, 7, 116, 2, 2, 621, 622, 7, 99, 2, 2, 622, 623, 7, 118, 2, 2, 623, 624, 7, 107, 2, 2, 624, 625, 7, 113, 2, 2, 625, 626, 7, 112, 2, 2, 626, 48, 3, 2, 2, 2, 627, 628, 7, 90, 2, 2, 628, 629, 7, 69, 2, 2, 629, 630, 7, 69, 2, 2, 630, 631, 7, 113, 2, 2, 631, 632, 7, 112, 2, 2, 632, 633, 7, 104, 2, 2, 633, 634, 7, 107, 2, 2, 634, 635, 7, 105, 2, 2, 635, 636, 7, 119, 2, 2, 636, 637, 7, 116, 2, 2, 637, 638, 7, 99, 2, 2, 638, 639, 7, 118, 2, 2, 639, 640, 7, 107, 2, 2, 640, 641, 7, 113, 2, 2, 641, 642, 7, 112, 2, 2, 642, 643, 7, 78, 2, 2, 643, 644, 7, 107, 2, 2, 644, 645, 7, 117, 2, 2, 645, 646, 7, 118, 2, 2, 646, 50, 3, 2, 2, 2, 647, 648, 7, 90, 2, 2, 648, 649, 7, 69, 2, 2, 649, 650, 7, 84, 2, 2, 650, 651, 7, 103, 2, 2, 651, 652, 7, 111, 2, 2, 652, 653, 7, 113, 2, 2, 653, 654, 7, 118, 2, 2, 654, 655, 7, 103, 2, 2, 655, 656, 7, 85, 2, 2, 656, 657, 7, 121, 2, 2, 657, 658, 7, 107, 2, 2, 658, 659, 7, 104, 2, 2, 659, 660, 7, 118, 2, 2, 660, 661, 7, 82, 2, 2, 661, 662, 7, 99, 2, 2, 662, 663, 7, 101, 2, 2, 663, 664, 7, 109, 2, 2, 664, 665, 7, 99, 2, 2, 665, 666, 7, 105, 2, 2, 666, 667, 7, 103, 2, 2, 667, 668, 7, 84, 2, 2, 668, 669, 7, 103, 2, 2, 669, 670, 7, 104, 2, 2, 670, 671, 7, 103, 2, 2, 671, 672, 7, 116, 2, 2, 672, 673, 7, 103, 2, 2, 673, 674, 7, 112, 2, 2, 674, 675, 7, 101, 2, 2, 675, 676, 7, 103, 2, 2, 676, 52, 3, 2, 2, 2, 677, 678, 7, 90, 2, 2, 678, 679, 7, 69, 2, 2, 679, 680, 7, 85, 2, 2, 680, 681, 7, 121, 2, 2, 681, 682, 7, 107, 2, 2, 682, 683, 7, 104, 2, 2, 683, 684, 7, 118, 2, 2, 684, 685, 7, 82, 2, 2, 685, 686, 7, 99, 2, 2, 686, 687, 7, 101, 2, 2, 687, 688, 7, 109, 2, 2, 688, 689, 7, 99, 2, 2, 689, 690, 7, 105, 2, 2, 690, 691, 7, 103, 2, 2, 691, 692, 7, 82, 2, 2, 692, 693, 7, 116, 2, 2, 693, 694, 7, 113, 2, 2, 694, 695, 7, 102, 2, 2, 695, 696, 7, 119, 2, 2, 696, 697, 7, 101, 2, 2, 697, 698, 7, 118, 2, 2, 698, 699, 7, 70, 2, 2, 699, 700, 7, 103, 2, 2, 700, 701, 7, 114, 2, 2, 701, 702, 7, 103, 2, 2, 702, 703, 7, 112, 2, 2, 703, 704, 7, 102, 2, 2, 704, 705, 7, 103, 2, 2, 705, 706, 7, 112, 2, 2, 706, 707, 7, 101, 2, 2, 707, 708, 7, 123, 2, 2, 708, 54, 3, 2, 2, 2, 709, 710, 7, 90, 2, 2, 710, 711, 7, 69, 2, 2, 711, 712, 7, 88, 2, 2, 712, 713, 7, 103, 2, 2, 713, 714, 7, 116, 2, 2, 714, 715, 7, 117, 2, 2, 715, 716, 7, 107, 2, 2, 716, 717, 7, 113, 2, 2, 717, 718, 7, 112, 2, 2, 718, 719, 7, 73, 2, 2, 719, 720, 7, 116, 2, 2, 720, 721, 7, 113, 2, 2, 721, 722, 7, 119, 2, 2, 722, 723, 7, 114, 2, 2, 723, 56, 3, 2, 2, 2, 724, 725, 7, 104, 2, 2, 725, 726, 7, 107, 2, 2, 726, 727, 7, 110, 2, 2, 727, 728, 7, 103, 2, 2, 728, 729, 7, 84, 2, 2, 729, 730, 7, 103, 2, 2, 730, 731, 7, 104, 2, 2, 731, 58, 3, 2, 2, 2, 732, 733, 7, 114, 2, 2, 733, 734, 7, 116, 2, 2, 734, 735, 7, 113, 2, 2, 735, 736, 7, 102, 2, 2, 736, 737, 7, 119, 2, 2, 737, 738, 7, 101, 2, 2, 738, 739, 7, 118, 2, 2, 739, 740, 7, 84, 2, 2, 740, 741, 7, 103, 2, 2, 741, 742, 7, 104, 2, 2, 742, 60, 3, 2, 2, 2, 743, 744, 7, 101, 2, 2, 744, 745, 7, 113, 2, 2, 745, 746, 7, 112, 2, 2, 746, 747, 7, 118, 2, 2, 747, 748, 7, 99, 2, 2, 748, 749, 7, 107, 2, 2, 749, 750, 7, 112, 2, 2, 750, 751, 7, 103, 2, 2, 751, 752, 7, 116, 2, 2, 752, 753, 7, 82, 2, 2, 753, 754, 7, 113, 2, 2, 754, 755, 7, 116, 2, 2, 755, 756, 7, 118, 2, 2, 756, 757, 7, 99, 2, 2, 757, 758, 7, 110, 2, 2, 758, 62, 3, 2, 2, 2, 759, 760, 7, 114, 2, 2, 760, 761, 7, 116, 2, 2, 761, 762, 7, 113, 2, 2, 762, 763, 7, 122, 2, 2, 763, 764, 7, 123, 2, 2, 764, 765, 7, 86, 2, 2, 765, 766, 7, 123, 2, 2, 766, 767, 7, 114, 2, 2, 767, 768, 7, 103, 2, 2, 768, 64, 3, 2, 2, 2, 769, 770, 7, 116, 2, 2, 770, 771, 7, 103, 2, 2, 771, 772, 7, 111, 2, 2, 772, 773, 7, 113, 2, 2, 773, 774, 7, 118, 2, 2, 774, 775, 7, 103, 2, 2, 775, 776, 7, 73, 2, 2, 776, 777, 7, 110, 2, 2, 777, 778, 7, 113, 2, 2, 778, 779, 7, 100, 2, 2, 779, 780, 7, 99, 2, 2, 780, 781, 7, 110, 2, 2, 781, 782, 7, 75, 2, 2, 782, 783, 7, 70, 2, 2, 783, 784, 7, 85, 2, 2, 784, 785, 7, 118, 2, 2, 785, 786, 7, 116, 2, 2, 786, 787, 7, 107, 2, 2, 787, 788, 7, 112, 2, 2, 788, 789, 7, 105, 2, 2, 789, 66, 3, 2, 2, 2, 790, 791, 7, 116, 2, 2, 791, 792, 7, 103, 2, 2, 792, 793, 7, 111, 2, 2, 793, 794, 7, 113, 2, 2, 794, 795, 7, 118, 2, 2, 795, 796, 7, 103, 2, 2, 796, 797, 7, 75, 2, 2, 797, 798, 7, 112, 2, 2, 798, 799, 7, 104, 2, 2, 799, 800, 7, 113, 2, 2, 800, 68, 3, 2, 2, 2, 801, 802, 7, 104, 2, 2, 802, 803, 7, 107, 2, 2, 803, 804, 7, 110, 2, 2, 804, 805, 7, 103, 2, 2, 805, 806, 7, 71, 2, 2, 806, 807, 7, 112, 2, 2, 807, 808, 7, 101, 2, 2, 808, 809, 7, 113, 2, 2, 809, 810, 7, 102, 2, 2, 810, 811, 7, 107, 2, 2, 811, 812, 7, 112, 2, 2, 812, 813, 7, 105, 2, 2, 813, 70, 3, 2, 2, 2, 814, 815, 7, 103, 2, 2, 815, 816, 7, 122, 2, 2, 816, 817, 7, 114, 2, 2, 817, 818, 7, 110, 2, 2, 818, 819, 7, 107, 2, 2, 819, 820, 7, 101, 2, 2, 820, 821, 7, 107, 2, 2, 821, 822, 7, 118, 2, 2, 822, 823, 7, 72, 2, 2, 823, 824, 7, 107, 2, 2, 824, 825, 7, 110, 2, 2, 825, 826, 7, 103, 2, 2, 826, 827, 7, 86, 2, 2, 827, 828, 7, 123, 2, 2, 828, 829, 7, 114, 2, 2, 829, 830, 7, 103, 2, 2, 830, 72, 3, 2, 2, 2, 831, 832, 7, 110, 2, 2, 832, 833, 7, 99, 2, 2, 833, 834, 7, 117, 2, 2, 834, 835, 7, 118, 2, 2, 835, 836, 7, 77, 2, 2, 836, 837, 7, 112, 2, 2, 837, 838, 7, 113, 2, 2, 838, 839, 7, 121, 2, 2, 839, 840, 7, 112, 2, 2, 840, 841, 7, 72, 2, 2, 841, 842, 7, 107, 2, 2, 842, 843, 7, 110, 2, 2, 843, 844, 7, 103, 2, 2, 844, 845, 7, 86, 2, 2, 845, 846, 7, 123, 2, 2, 846, 847, 7, 114, 2, 2, 847, 848, 7, 103, 2, 2, 848, 74, 3, 2, 2, 2, 849, 850, 7, 107, 2, 2, 850, 851, 7, 112, 2, 2, 851, 852, 7, 101, 2, 2, 852, 853, 7, 110, 2, 2, 853, 854, 7, 119, 2, 2, 854, 855, 7, 102, 2, 2, 855, 856, 7, 103, 2, 2, 856, 857, 7, 75, 2, 2, 857, 858, 7, 112, 2, 2, 858, 859, 7, 75, 2, 2, 859, 860, 7, 112, 2, 2, 860, 861, 7, 102, 2, 2, 861, 862, 7, 103, 2, 2, 862, 863, 7, 122, 2, 2, 863, 76, 3, 2, 2, 2, 864, 865, 7, 107, 2, 2, 865, 866, 7, 112, 2, 2, 866, 867, 7, 102, 2, 2, 867, 868, 7, 103, 2, 2, 868, 869, 7, 112, 2, 2, 869, 870, 7, 118, 2, 2, 870, 871, 7, 89, 2, 2, 871, 872, 7, 107, 2, 2, 872, 873, 7, 102, 2, 2, 873, 874, 7, 118, 2, 2, 874, 875, 7, 106, 2, 2, 875, 78, 3, 2, 2, 2, 876, 877, 7, 118, 2, 2, 877, 878, 7, 99, 2, 2, 878, 879, 7, 100, 2, 2, 879, 880, 7, 89, 2, 2, 880, 881, 7, 107, 2, 2, 881, 882, 7, 102, 2, 2, 882, 883, 7, 118, 2, 2, 883, 884, 7, 106, 2, 2, 884, 80, 3, 2, 2, 2, 885, 886, 7, 119, 2, 2, 886, 887, 7, 117, 2, 2, 887, 888, 7, 103, 2, 2, 888, 889, 7, 117, 2, 2, 889, 890, 7, 86, 2, 2, 890, 891, 7, 99, 2, 2, 891, 892, 7, 100, 2, 2, 892, 893, 7, 117, 2, 2, 893, 82, 3, 2, 2, 2, 894, 895, 7, 101, 2, 2, 895, 896, 7, 106, 2, 2, 896, 897, 7, 107, 2, 2, 897, 898, 7, 110, 2, 2, 898, 899, 7, 102, 2, 2, 899, 900, 7, 116, 2, 2, 900, 901, 7, 103, 2, 2, 901, 902, 7, 112, 2, 2, 902, 84, 3, 2, 2, 2, 903, 904, 7, 114, 2, 2, 904, 905, 7, 116, 2, 2, 905, 906, 7, 113, 2, 2, 906, 907, 7, 102, 2, 2, 907, 908, 7, 119, 2, 2, 908, 909, 7, 101, 2, 2, 909, 910, 7, 118, 2, 2, 910, 911, 7, 75, 2, 2, 911, 912, 7, 112, 2, 2, 912, 913, 7, 117, 2, 2, 913, 914, 7, 118, 2, 2, 914, 915, 7, 99, 2, 2, 915, 916, 7, 110, 2, 2, 916, 917, 7, 110, 2, 2, 917, 918, 7, 82, 2, 2, 918, 919, 7, 99, 2, 2, 919, 920, 7, 118, 2, 2, 920, 921, 7, 106, 2, 2, 921, 86, 3, 2, 2, 2, 922, 923, 7, 116, 2, 2, 923, 924, 7, 103, 2, 2, 924, 925, 7, 114, 2, 2, 925, 926, 7, 113, 2, 2, 926, 927, 7, 117, 2, 2, 927, 928, 7, 107, 2, 2, 928, 929, 7, 118, 2, 2, 929, 930, 7, 113, 2, 2, 930, 931, 7, 116, 2, 2, 931, 932, 7, 123, 2, 2, 932, 933, 7, 87, 2, 2, 933, 934, 7, 84, 2, 2, 934, 935, 7, 78, 2, 2, 935, 88, 3, 2, 2, 2, 936, 937, 7, 116, 2, 2, 937, 938, 7, 103, 2, 2, 938, 939, 7, 115, 2, 2, 939, 940, 7, 119, 2, 2, 940, 941, 7, 107, 2, 2, 941, 942, 7, 116, 2, 2, 942, 943, 7, 103, 2, 2, 943, 944, 7, 111, 2, 2, 944, 945, 7, 103, 2, 2, 945, 946, 7, 112, 2, 2, 946, 947, 7, 118, 2, 2, 947, 90, 3, 2, 2, 2, 948, 949, 7, 114, 2, 2, 949, 950, 7, 99, 2, 2, 950, 951, 7, 101, 2, 2, 951, 952, 7, 109, 2, 2, 952, 953, 7, 99, 2, 2, 953, 954, 7, 105, 2, 2, 954, 955, 7, 103, 2, 2, 955, 92, 3, 2, 2, 2, 956, 957, 7, 114, 2, 2, 957, 958, 7, 99, 2, 2, 958, 959, 7, 101, 2, 2, 959, 960, 7, 109, 2, 2, 960, 961, 7, 99, 2, 2, 961, 962, 7, 105, 2, 2, 962, 963, 7, 103, 2, 2, 963, 964, 7, 82, 2, 2, 964, 965, 7, 116, 2, 2, 965, 966, 7, 113, 2, 2, 966, 967, 7, 102, 2, 2, 967, 968, 7, 119, 2, 2, 968, 969, 7, 101, 2, 2, 969, 970, 7, 118, 2, 2, 970, 971, 7, 70, 2, 2, 971, 972, 7, 103, 2, 2, 972, 973, 7, 114, 2, 2, 973, 974, 7, 103, 2, 2, 974, 975, 7, 112, 2, 2, 975, 976, 7, 102, 2, 2, 976, 977, 7, 103, 2, 2, 977, 978, 7, 112, 2, 2, 978, 979, 7, 101, 2, 2, 979, 980, 7, 107, 2, 2, 980, 981, 7, 103, 2, 2, 981, 982, 7, 117, 2, 2, 982, 94, 3, 2, 2, 2, 983, 984, 7, 112, 2, 2, 984, 985, 7, 99, 2, 2, 985, 986, 7, 111, 2, 2, 986, 987, 7, 103, 2, 2, 987, 96, 3, 2, 2, 2, 988, 989, 7, 114, 2, 2, 989, 990, 7, 99, 2, 2, 990, 991, 7, 118, 2, 2, 991, 992, 7, 106, 2, 2, 992, 98, 3, 2, 2, 2, 993, 994, 7, 117, 2, 2, 994, 995, 7, 113, 2, 2, 995, 996, 7, 119, 2, 2, 996, 997, 7, 116, 2, 2, 997, 998, 7, 101, 2, 2, 998, 999, 7, 103, 2, 2, 999, 1000, 7, 86, 2, 2, 1000, 1001, 7, 116, 2, 2, 1001, 1002, 7, 103, 2, 2, 1002, 1003, 7, 103, 2, 2, 1003, 100, 3, 2, 2, 2, 1004, 1005, 7, 100, 2, 2, 1005, 1006, 7, 119, 2, 2, 1006, 1007, 7, 107, 2, 2, 1007, 1008, 7, 110, 2, 2, 1008, 1009, 7, 102, 2, 2, 1009, 1010, 7, 67, 2, 2, 1010, 1011, 7, 101, 2, 2, 1011, 1012, 7, 118, 2, 2, 1012, 1013, 7, 107, 2, 2, 1013, 1014, 7, 113, 2, 2, 1014, 1015, 7, 112, 2, 2, 1015, 1016, 7, 79, 2, 2, 1016, 1017, 7, 99, 2, 2, 1017, 1018, 7, 117, 2, 2, 1018, 1019, 7, 109, 2, 2, 1019, 102, 3, 2, 2, 2, 1020, 1021, 7, 104, 2, 2, 1021, 1022, 7, 107, 2, 2, 1022, 1023, 7, 110, 2, 2, 1023, 1024, 7, 103, 2, 2, 1024, 1025, 7, 117, 2, 2, 1025, 104, 3, 2, 2, 2, 1026, 1027, 7, 116, 2, 2, 1027, 1028, 7, 119, 2, 2, 1028, 1029, 7, 112, 2, 2, 1029, 1030, 7, 81, 2, 2, 1030, 1031, 7, 112, 2, 2, 1031, 1032, 7, 110, 2, 2, 1032, 1033, 7, 123, 2, 2, 1033, 1034, 7, 72, 2, 2, 1034, 1035, 7, 113, 2, 2, 1035, 1036, 7, 116, 2, 2, 1036, 1037, 7, 70, 2, 2, 1037, 1038, 7, 103, 2, 2, 1038, 1039, 7, 114, 2, 2, 1039, 1040, 7, 110, 2, 2, 1040, 1041, 7, 113, 2, 2, 1041, 1042, 7, 123, 2, 2, 1042, 1043, 7, 111, 2, 2, 1043, 1044, 7, 103, 2, 2, 1044, 1045, 7, 112, 2, 2, 1045, 1046, 7, 118, 2, 2, 1046, 1047, 7, 82, 2, 2, 1047, 1048, 7, 113, 2, 2, 1048, 1049, 7, 117, 2, 2, 1049, 1050, 7, 118, 2, 2, 1050, 1051, 7, 114, 2, 2, 1051, 1052, 7, 116, 2, 2, 1052, 1053, 7, 113, 2, 2, 1053, 1054, 7, 101, 2, 2, 1054, 1055, 7, 103, 2, 2, 1055, 1056, 7, 117, 2, 2, 1056, 1057, 7, 117, 2, 2, 1057, 1058, 7, 107, 2, 2, 1058, 1059, 7, 112, 2, 2, 1059, 1060, 7, 105, 2, 2, 1060, 106, 3, 2, 2, 2, 1061, 1062, 7, 42, 2, 2, 1062, 108, 3, 2, 2, 2, 1063, 1064, 7, 46, 2, 2, 1064, 110, 3, 2, 2, 2, 1065, 1066, 7, 43, 2, 2, 1066, 112, 3, 2, 2, 2, 1067, 1068, 7, 100, 2, 2, 1068, 1069, 7, 119, 2, 2, 1069, 1070, 7, 107, 2, 2, 1070, 1071, 7, 110, 2, 2, 1071, 1072, 7, 102, 2, 2, 1072, 1073, 7, 69, 2, 2, 1073, 1074, 7, 113, 2, 2, 1074, 1075, 7, 112, 2, 2, 1075, 1076, 7, 104, 2, 2, 1076, 1077, 7, 107, 2, 2, 1077, 1078, 7, 105, 2, 2, 1078, 1079, 7, 119, 2, 2, 1079, 1080, 7, 116, 2, 2, 1080, 1081, 7, 99, 2, 2, 1081, 1082, 7, 118, 2, 2, 1082, 1083, 7, 107, 2, 2, 1083, 1084, 7, 113, 2, 2, 1084, 1085, 7, 112, 2, 2, 1085, 1086, 7, 78, 2, 2, 1086, 1087, 7, 107, 2, 2, 1087, 1088, 7, 117, 2, 2, 1088, 1089, 7, 118, 2, 2, 1089, 114, 3, 2, 2, 2, 1090, 1091, 7, 100, 2, 2, 1091, 1092, 7, 119, 2, 2, 1092, 1093, 7, 107, 2, 2, 1093, 1094, 7, 110, 2, 2, 1094, 1095, 7, 102, 2, 2, 1095, 1096, 7, 82, 2, 2, 1096, 1097, 7, 106, 2, 2, 1097, 1098, 7, 99, 2, 2, 1098, 1099, 7, 117, 2, 2, 1099, 1100, 7, 103, 2, 2, 1100, 1101, 7, 117, 2, 2, 1101, 116, 3, 2, 2, 2, 1102, 1103, 7, 100, 2, 2, 1103, 1104, 7, 119, 2, 2, 1104, 1105, 7, 107, 2, 2, 1105, 1106, 7, 110, 2, 2, 1106, 1107, 7, 102, 2, 2, 1107, 1108, 7, 84, 2, 2, 1108, 1109, 7, 119, 2, 2, 1109, 1110, 7, 110, 2, 2, 1110, 1111, 7, 103, 2, 2, 1111, 1112, 7, 117, 2, 2, 1112, 118, 3, 2, 2, 2, 1113, 1114, 7, 102, 2, 2, 1114, 1115, 7, 103, 2, 2, 1115, 1116, 7, 114, 2, 2, 1116, 1117, 7, 103, 2, 2, 1117, 1118, 7, 112, 2, 2, 1118, 1119, 7, 102, 2, 2, 1119, 1120, 7, 103, 2, 2, 1120, 1121, 7, 112, 2, 2, 1121, 1122, 7, 101, 2, 2, 1122, 1123, 7, 107, 2, 2, 1123, 1124, 7, 103, 2, 2, 1124, 1125, 7, 117, 2, 2, 1125, 120, 3, 2, 2, 2, 1126, 1127, 7, 114, 2, 2, 1127, 1128, 7, 116, 2, 2, 1128, 1129, 7, 113, 2, 2, 1129, 1130, 7, 102, 2, 2, 1130, 1131, 7, 119, 2, 2, 1131, 1132, 7, 101, 2, 2, 1132, 1133, 7, 118, 2, 2, 1133, 1134, 7, 80, 2, 2, 1134, 1135, 7, 99, 2, 2, 1135, 1136, 7, 111, 2, 2, 1136, 1137, 7, 103, 2, 2, 1137, 122, 3, 2, 2, 2, 1138, 1139, 7, 114, 2, 2, 1139, 1140, 7, 116, 2, 2, 1140, 1141, 7, 113, 2, 2, 1141, 1142, 7, 102, 2, 2, 1142, 1143, 7, 119, 2, 2, 1143, 1144, 7, 101, 2, 2, 1144, 1145, 7, 118, 2, 2, 1145, 1146, 7, 84, 2, 2, 1146, 1147, 7, 103, 2, 2, 1147, 1148, 7, 104, 2, 2, 1148, 1149, 7, 103, 2, 2, 1149, 1150, 7, 116, 2, 2, 1150, 1151, 7, 103, 2, 2, 1151, 1152, 7, 112, 2, 2, 1152, 1153, 7, 101, 2, 2, 1153, 1154, 7, 103, 2, 2, 1154, 124, 3, 2, 2, 2, 1155, 1156, 7, 114, 2, 2, 1156, 1157, 7, 116, 2, 2, 1157, 1158, 7, 113, 2, 2, 1158, 1159, 7, 102, 2, 2, 1159, 1160, 7, 119, 2, 2, 1160, 1161, 7, 101, 2, 2, 1161, 1162, 7, 118, 2, 2, 1162, 1163, 7, 86, 2, 2, 1163, 1164, 7, 123, 2, 2, 1164, 1165, 7, 114, 2, 2, 1165, 1166, 7, 103, 2, 2, 1166, 126, 3, 2, 2, 2, 1167, 1168, 7, 110, 2, 2, 1168, 1169, 7, 107, 2, 2, 1169, 1170, 7, 112, 2, 2, 1170, 1171, 7, 103, 2, 2, 1171, 1172, 7, 71, 2, 2, 1172, 1173, 7, 112, 2, 2, 1173, 1174, 7, 102, 2, 2, 1174, 1175, 7, 107, 2, 2, 1175, 1176, 7, 112, 2, 2, 1176, 1177, 7, 105, 2, 2, 1177, 128, 3, 2, 2, 2, 1178, 1179, 7, 122, 2, 2, 1179, 1180, 7, 101, 2, 2, 1180, 1181, 7, 78, 2, 2, 1181, 1182, 7, 99, 2, 2, 1182, 1183, 7, 112, 2, 2, 1183, 1184, 7, 105, 2, 2, 1184, 1185, 7, 119, 2, 2, 1185, 1186, 7, 99, 2, 2, 1186, 1187, 7, 105, 2, 2, 1187, 1188, 7, 103, 2, 2, 1188, 1189, 7, 85, 2, 2, 1189, 1190, 7, 114, 2, 2, 1190, 1191, 7, 103, 2, 2, 1191, 1192, 7, 101, 2, 2, 1192, 1193, 7, 107, 2, 2, 1193, 1194, 7, 104, 2, 2, 1194, 1195, 7, 107, 2, 2, 1195, 1196, 7, 101, 2, 2, 1196, 1197, 7, 99, 2, 2, 1197, 1198, 7, 118, 2, 2, 1198, 1199, 7, 107, 2, 2, 1199, 1200, 7, 113, 2, 2, 1200, 1201, 7, 112, 2, 2, 1201, 1202, 7, 75, 2, 2, 1202, 1203, 7, 102, 2, 2, 1203, 1204, 7, 103, 2, 2, 1204, 1205, 7, 112, 2, 2, 1205, 1206, 7, 118, 2, 2, 1206, 1207, 7, 107, 2, 2, 1207, 1208, 7, 104, 2, 2, 1208, 1209, 7, 107, 2, 2, 1209, 1210, 7, 103, 2, 2, 1210, 1211, 7, 116, 2, 2, 1211, 130, 3, 2, 2, 2, 1212, 1213, 7, 114, 2, 2, 1213, 1214, 7, 110, 2, 2, 1214, 1215, 7, 107, 2, 2, 1215, 1216, 7, 117, 2, 2, 1216, 1217, 7, 118, 2, 2, 1217, 1218, 7, 85, 2, 2, 1218, 1219, 7, 118, 2, 2, 1219, 1220, 7, 116, 2, 2, 1220, 1221, 7, 119, 2, 2, 1221, 1222, 7, 101, 2, 2, 1222, 1223, 7, 118, 2, 2, 1223, 1224, 7, 119, 2, 2, 1224, 1225, 7, 116, 2, 2, 1225, 1226, 7, 103, 2, 2, 1226, 1227, 7, 70, 2, 2, 1227, 1228, 7, 103, 2, 2, 1228, 1229, 7, 104, 2, 2, 1229, 1230, 7, 107, 2, 2, 1230, 1231, 7, 112, 2, 2, 1231, 1232, 7, 107, 2, 2, 1232, 1233, 7, 118, 2, 2, 1233, 1234, 7, 107, 2, 2, 1234, 1235, 7, 113, 2, 2, 1235, 1236, 7, 112, 2, 2, 1236, 1237, 7, 75, 2, 2, 1237, 1238, 7, 102, 2, 2, 1238, 1239, 7, 103, 2, 2, 1239, 1240, 7, 112, 2, 2, 1240, 1241, 7, 118, 2, 2, 1241, 1242, 7, 107, 2, 2, 1242, 1243, 7, 104, 2, 2, 1243, 1244, 7, 107, 2, 2, 1244, 1245, 7, 103, 2, 2, 1245, 1246, 7, 116, 2, 2, 1246, 132, 3, 2, 2, 2, 1247, 1248, 7, 99, 2, 2, 1248, 1249, 7, 118, 2, 2, 1249, 1250, 7, 118, 2, 2, 1250, 1251, 7, 116, 2, 2, 1251, 1252, 7, 107, 2, 2, 1252, 1253, 7, 100, 2, 2, 1253, 1254, 7, 119, 2, 2, 1254, 1255, 7, 118, 2, 2, 1255, 1256, 7, 103, 2, 2, 1256, 1257, 7, 117, 2, 2, 1257, 134, 3, 2, 2, 2, 1258, 1259, 7, 78, 2, 2, 1259, 1260, 7, 99, 2, 2, 1260, 1261, 7, 117, 2, 2, 1261, 1262, 7, 118, 2, 2, 1262, 1263, 7, 85, 2, 2, 1263, 1264, 7, 121, 2, 2, 1264, 1265, 7, 107, 2, 2, 1265, 1266, 7, 104, 2, 2, 1266, 1267, 7, 118, 2, 2, 1267, 1268, 7, 79, 2, 2, 1268, 1269, 7, 107, 2, 2, 1269, 1270, 7, 105, 2, 2, 1270, 1271, 7, 116, 2, 2, 1271, 1272, 7, 99, 2, 2, 1272, 1273, 7, 118, 2, 2, 1273, 1274, 7, 107, 2, 2, 1274, 1275, 7, 113, 2, 2, 1275, 1276, 7, 112, 2, 2, 1276, 136, 3, 2, 2, 2, 1277, 1278, 7, 70, 2, 2, 1278, 1279, 7, 103, 2, 2, 1279, 1280, 7, 104, 2, 2, 1280, 1281, 7, 99, 2, 2, 1281, 1282, 7, 119, 2, 2, 1282, 1283, 7, 110, 2, 2, 1283, 1284, 7, 118, 2, 2, 1284, 1285, 7, 68, 2, 2, 1285, 1286, 7, 119, 2, 2, 1286, 1287, 7, 107, 2, 2, 1287, 1288, 7, 110, 2, 2, 1288, 1289, 7, 102, 2, 2, 1289, 1290, 7, 85, 2, 2, 1290, 1291, 7, 123, 2, 2, 1291, 1292, 7, 117, 2, 2, 1292, 1293, 7, 118, 2, 2, 1293, 1294, 7, 103, 2, 2, 1294, 1295, 7, 111, 2, 2, 1295, 1296, 7, 86, 2, 2, 1296, 1297, 7, 123, 2, 2, 1297, 1298, 7, 114, 2, 2, 1298, 1299, 7, 103, 2, 2, 1299, 1300, 7, 72, 2, 2, 1300, 1301, 7, 113, 2, 2, 1301, 1302, 7, 116, 2, 2, 1302, 1303, 7, 89, 2, 2, 1303, 1304, 7, 113, 2, 2, 1304, 1305, 7, 116, 2, 2, 1305, 1306, 7, 109, 2, 2, 1306, 1307, 7, 117, 2, 2, 1307, 1308, 7, 114, 2, 2, 1308, 1309, 7, 99, 2, 2, 1309, 1310, 7, 101, 2, 2, 1310, 1311, 7, 103, 2, 2, 1311, 138, 3, 2, 2, 2, 1312, 1313, 7, 78, 2, 2, 1313, 1314, 7, 99, 2, 2, 1314, 1315, 7, 117, 2, 2, 1315, 1316, 7, 118, 2, 2, 1316, 1317, 7, 85, 2, 2, 1317, 1318, 7, 121, 2, 2, 1318, 1319, 7, 107, 2, 2, 1319, 1320, 7, 104, 2, 2, 1320, 1321, 7, 118, 2, 2, 1321, 1322, 7, 87, 2, 2, 1322, 1323, 7, 114, 2, 2, 1323, 1324, 7, 102, 2, 2, 1324, 1325, 7, 99, 2, 2, 1325, 1326, 7, 118, 2, 2, 1326, 1327, 7, 103, 2, 2, 1327, 1328, 7, 69, 2, 2, 1328, 1329, 7, 106, 2, 2, 1329, 1330, 7, 103, 2, 2, 1330, 1331, 7, 101, 2, 2, 1331, 1332, 7, 109, 2, 2, 1332, 140, 3, 2, 2, 2, 1333, 1334, 7, 68, 2, 2, 1334, 1335, 7, 119, 2, 2, 1335, 1336, 7, 107, 2, 2, 1336, 1337, 7, 110, 2, 2, 1337, 1338, 7, 102, 2, 2, 1338, 1339, 7, 75, 2, 2, 1339, 1340, 7, 112, 2, 2, 1340, 1341, 7, 102, 2, 2, 1341, 1342, 7, 103, 2, 2, 1342, 1343, 7, 114, 2, 2, 1343, 1344, 7, 103, 2, 2, 1344, 1345, 7, 112, 2, 2, 1345, 1346, 7, 102, 2, 2, 1346, 1347, 7, 103, 2, 2, 1347, 1348, 7, 112, 2, 2, 1348, 1349, 7, 118, 2, 2, 1349, 1350, 7, 86, 2, 2, 1350, 1351, 7, 99, 2, 2, 1351, 1352, 7, 116, 2, 2, 1352, 1353, 7, 105, 2, 2, 1353, 1354, 7, 103, 2, 2, 1354, 1355, 7, 118, 2, 2, 1355, 1356, 7, 117, 2, 2, 1356, 1357, 7, 75, 2, 2, 1357, 1358, 7, 112, 2, 2, 1358, 1359, 7, 82, 2, 2, 1359, 1360, 7, 99, 2, 2, 1360, 1361, 7, 116, 2, 2, 1361, 1362, 7, 99, 2, 2, 1362, 1363, 7, 110, 2, 2, 1363, 1364, 7, 110, 2, 2, 1364, 1365, 7, 103, 2, 2, 1365, 1366, 7, 110, 2, 2, 1366, 142, 3, 2, 2, 2, 1367, 1368, 7, 78, 2, 2, 1368, 1369, 7, 99, 2, 2, 1369, 1370, 7, 117, 2, 2, 1370, 1371, 7, 118, 2, 2, 1371, 1372, 7, 87, 2, 2, 1372, 1373, 7, 114, 2, 2, 1373, 1374, 7, 105, 2, 2, 1374, 1375, 7, 116, 2, 2, 1375, 1376, 7, 99, 2, 2, 1376, 1377, 7, 102, 2, 2, 1377, 1378, 7, 103, 2, 2, 1378, 1379, 7, 69, 2, 2, 1379, 1380, 7, 106, 2, 2, 1380, 1381, 7, 103, 2, 2, 1381, 1382, 7, 101, 2, 2, 1382, 1383, 7, 109, 2, 2, 1383, 144, 3, 2, 2, 2, 1384, 1385, 7, 78, 2, 2, 1385, 1386, 7, 99, 2, 2, 1386, 1387, 7, 117, 2, 2, 1387, 1388, 7, 118, 2, 2, 1388, 1389, 7, 86, 2, 2, 1389, 1390, 7, 103, 2, 2, 1390, 1391, 7, 117, 2, 2, 1391, 1392, 7, 118, 2, 2, 1392, 1393, 7, 107, 2, 2, 1393, 1394, 7, 112, 2, 2, 1394, 1395, 7, 105, 2, 2, 1395, 1396, 7, 87, 2, 2, 1396, 1397, 7, 114, 2, 2, 1397, 1398, 7, 105, 2, 2, 1398, 1399, 7, 116, 2, 2, 1399, 1400, 7, 99, 2, 2, 1400, 1401, 7, 102, 2, 2, 1401, 1402, 7, 103, 2, 2, 1402, 1403, 7, 69, 2, 2, 1403, 1404, 7, 106, 2, 2, 1404, 1405, 7, 103, 2, 2, 1405, 1406, 7, 101, 2, 2, 1406, 1407, 7, 109, 2, 2, 1407, 146, 3, 2, 2, 2, 1408, 1409, 7, 81, 2, 2, 1409, 1410, 7, 84, 2, 2, 1410, 1411, 7, 73, 2, 2, 1411, 1412, 7, 67, 2, 2, 1412, 1413, 7, 80, 2, 2, 1413, 1414, 7, 75, 2, 2, 1414, 1415, 7, 92, 2, 2, 1415, 1416, 7, 67, 2, 2, 1416, 1417, 7, 86, 2, 2, 1417, 1418, 7, 75, 2, 2, 1418, 1419, 7, 81, 2, 2, 1419, 1420, 7, 80, 2, 2, 1420, 1421, 7, 80, 2, 2, 1421, 1422, 7, 67, 2, 2, 1422, 1423, 7, 79, 2, 2, 1423, 1424, 7, 71, 2, 2, 1424, 148, 3, 2, 2, 2, 1425, 1426, 7, 86, 2, 2, 1426, 1427, 7, 99, 2, 2, 1427, 1428, 7, 116, 2, 2, 1428, 1429, 7, 105, 2, 2, 1429, 1430, 7, 103, 2, 2, 1430, 1431, 7, 118, 2, 2, 1431, 1432, 7, 67, 2, 2, 1432, 1433, 7, 118, 2, 2, 1433, 1434, 7, 118, 2, 2, 1434, 1435, 7, 116, 2, 2, 1435, 1436, 7, 107, 2, 2, 1436, 1437, 7, 100, 2, 2, 1437, 1438, 7, 119, 2, 2, 1438, 1439, 7, 118, 2, 2, 1439, 1440, 7, 103, 2, 2, 1440, 1441, 7, 117, 2, 2, 1441, 150, 3, 2, 2, 2, 1442, 1443, 7, 69, 2, 2, 1443, 1444, 7, 116, 2, 2, 1444, 1445, 7, 103, 2, 2, 1445, 1446, 7, 99, 2, 2, 1446, 1447, 7, 118, 2, 2, 1447, 1448, 7, 103, 2, 2, 1448, 1449, 7, 102, 2, 2, 1449, 1450, 7, 81, 2, 2, 1450, 1451, 7, 112, 2, 2, 1451, 1452, 7, 86, 2, 2, 1452, 1453, 7, 113, 2, 2, 1453, 1454, 7, 113, 2, 2, 1454, 1455, 7, 110, 2, 2, 1455, 1456, 7, 117, 2, 2, 1456, 1457, 7, 88, 2, 2, 1457, 1458, 7, 103, 2, 2, 1458, 1459, 7, 116, 2, 2, 1459, 1460, 7, 117, 2, 2, 1460, 1461, 7, 107, 2, 2, 1461, 1462, 7, 113, 2, 2, 1462, 1463, 7, 112, 2, 2, 1463, 152, 3, 2, 2, 2, 1464, 1465, 7, 86, 2, 2, 1465, 1466, 7, 103, 2, 2, 1466, 1467, 7, 117, 2, 2, 1467, 1468, 7, 118, 2, 2, 1468, 1469, 7, 86, 2, 2, 1469, 1470, 7, 99, 2, 2, 1470, 1471, 7, 116, 2, 2, 1471, 1472, 7, 105, 2, 2, 1472, 1473, 7, 103, 2, 2, 1473, 1474, 7, 118, 2, 2, 1474, 1475, 7, 75, 2, 2, 1475, 1476, 7, 70, 2, 2, 1476, 154, 3, 2, 2, 2, 1477, 1478, 7, 70, 2, 2, 1478, 1479, 7, 103, 2, 2, 1479, 1480, 7, 120, 2, 2, 1480, 1481, 7, 103, 2, 2, 1481, 1482, 7, 110, 2, 2, 1482, 1483, 7, 113, 2, 2, 1483, 1484, 7, 114, 2, 2, 1484, 1485, 7, 111, 2, 2, 1485, 1486, 7, 103, 2, 2, 1486, 1487, 7, 112, 2, 2, 1487, 1488, 7, 118, 2, 2, 1488, 1489, 7, 86, 2, 2, 1489, 1490, 7, 103, 2, 2, 1490, 1491, 7, 99, 2, 2, 1491, 1492, 7, 111, 2, 2, 1492, 156, 3, 2, 2, 2, 1493, 1494, 7, 82, 2, 2, 1494, 1495, 7, 116, 2, 2, 1495, 1496, 7, 113, 2, 2, 1496, 1497, 7, 120, 2, 2, 1497, 1498, 7, 107, 2, 2, 1498, 1499, 7, 117, 2, 2, 1499, 1500, 7, 107, 2, 2, 1500, 1501, 7, 113, 2, 2, 1501, 1502, 7, 112, 2, 2, 1502, 1503, 7, 107, 2, 2, 1503, 1504, 7, 112, 2, 2, 1504, 1505, 7, 105, 2, 2, 1505, 1506, 7, 85, 2, 2, 1506, 1507, 7, 118, 2, 2, 1507, 1508, 7, 123, 2, 2, 1508, 1509, 7, 110, 2, 2, 1509, 1510, 7, 103, 2, 2, 1510, 158, 3, 2, 2, 2, 1511, 1512, 7, 101, 2, 2, 1512, 1513, 7, 113, 2, 2, 1513, 1514, 7, 111, 2, 2, 1514, 1515, 7, 114, 2, 2, 1515, 1516, 7, 99, 2, 2, 1516, 1517, 7, 118, 2, 2, 1517, 1518, 7, 107, 2, 2, 1518, 1519, 7, 100, 2, 2, 1519, 1520, 7, 107, 2, 2, 1520, 1521, 7, 110, 2, 2, 1521, 1522, 7, 107, 2, 2, 1522, 1523, 7, 118, 2, 2, 1523, 1524, 7, 123, 2, 2, 1524, 1525, 7, 88, 2, 2, 1525, 1526, 7, 103, 2, 2, 1526, 1527, 7, 116, 2, 2, 1527, 1528, 7, 117, 2, 2, 1528, 1529, 7, 107, 2, 2, 1529, 1530, 7, 113, 2, 2, 1530, 1531, 7, 112, 2, 2, 1531, 160, 3, 2, 2, 2, 1532, 1533, 7, 102, 2, 2, 1533, 1534, 7, 103, 2, 2, 1534, 1535, 7, 120, 2, 2, 1535, 1536, 7, 103, 2, 2, 1536, 1537, 7, 110, 2, 2, 1537, 1538, 7, 113, 2, 2, 1538, 1539, 7, 114, 2, 2, 1539, 1540, 7, 111, 2, 2, 1540, 1541, 7, 103, 2, 2, 1541, 1542, 7, 112, 2, 2, 1542, 1543, 7, 118, 2, 2, 1543, 1544, 7, 84, 2, 2, 1544, 1545, 7, 103, 2, 2, 1545, 1546, 7, 105, 2, 2, 1546, 1547, 7, 107, 2, 2, 1547, 1548, 7, 113, 2, 2, 1548, 1549, 7, 112, 2, 2, 1549, 162, 3, 2, 2, 2, 1550, 1551, 7, 106, 2, 2, 1551, 1552, 7, 99, 2, 2, 1552, 1553, 7, 117, 2, 2, 1553, 1554, 7, 85, 2, 2, 1554, 1555, 7, 101, 2, 2, 1555, 1556, 7, 99, 2, 2, 1556, 1557, 7, 112, 2, 2, 1557, 1558, 7, 112, 2, 2, 1558, 1559, 7, 103, 2, 2, 1559, 1560, 7, 102, 2, 2, 1560, 1561, 7, 72, 2, 2, 1561, 1562, 7, 113, 2, 2, 1562, 1563, 7, 116, 2, 2, 1563, 1564, 7, 71, 2, 2, 1564, 1565, 7, 112, 2, 2, 1565, 1566, 7, 101, 2, 2, 1566, 1567, 7, 113, 2, 2, 1567, 1568, 7, 102, 2, 2, 1568, 1569, 7, 107, 2, 2, 1569, 1570, 7, 112, 2, 2, 1570, 1571, 7, 105, 2, 2, 1571, 1572, 7, 117, 2, 2, 1572, 164, 3, 2, 2, 2, 1573, 1574, 7, 109, 2, 2, 1574, 1575, 7, 112, 2, 2, 1575, 1576, 7, 113, 2, 2, 1576, 1577, 7, 121, 2, 2, 1577, 1578, 7, 112, 2, 2, 1578, 1579, 7, 84, 2, 2, 1579, 1580, 7, 103, 2, 2, 1580, 1581, 7, 105, 2, 2, 1581, 1582, 7, 107, 2, 2, 1582, 1583, 7, 113, 2, 2, 1583, 1584, 7, 112, 2, 2, 1584, 1585, 7, 117, 2, 2, 1585, 166, 3, 2, 2, 2, 1586, 1587, 7, 111, 2, 2, 1587, 1588, 7, 99, 2, 2, 1588, 1589, 7, 107, 2, 2, 1589, 1590, 7, 112, 2, 2, 1590, 1591, 7, 73, 2, 2, 1591, 1592, 7, 116, 2, 2, 1592, 1593, 7, 113, 2, 2, 1593, 1594, 7, 119, 2, 2, 1594, 1595, 7, 114, 2, 2, 1595, 168, 3, 2, 2, 2, 1596, 1597, 7, 114, 2, 2, 1597, 1598, 7, 116, 2, 2, 1598, 1599, 7, 113, 2, 2, 1599, 1600, 7, 102, 2, 2, 1600, 1601, 7, 119, 2, 2, 1601, 1602, 7, 101, 2, 2, 1602, 1603, 7, 118, 2, 2, 1603, 1604, 7, 84, 2, 2, 1604, 1605, 7, 103, 2, 2, 1605, 1606, 7, 104, 2, 2, 1606, 1607, 7, 73, 2, 2, 1607, 1608, 7, 116, 2, 2, 1608, 1609, 7, 113, 2, 2, 1609, 1610, 7, 119, 2, 2, 1610, 1611, 7, 114, 2, 2, 1611, 170, 3, 2, 2, 2, 1612, 1613, 7, 114, 2, 2, 1613, 1614, 7, 99, 2, 2, 1614, 1615, 7, 101, 2, 2, 1615, 1616, 7, 109, 2, 2, 1616, 1617, 7, 99, 2, 2, 1617, 1618, 7, 105, 2, 2, 1618, 1619, 7, 103, 2, 2, 1619, 1620, 7, 84, 2, 2, 1620, 1621, 7, 103, 2, 2, 1621, 1622, 7, 104, 2, 2, 1622, 1623, 7, 103, 2, 2, 1623, 1624, 7, 116, 2, 2, 1624, 1625, 7, 103, 2, 2, 1625, 1626, 7, 112, 2, 2, 1626, 1627, 7, 101, 2, 2, 1627, 1628, 7, 103, 2, 2, 1628, 1629, 7, 117, 2, 2, 1629, 172, 3, 2, 2, 2, 1630, 1631, 7, 114, 2, 2, 1631, 1632, 7, 116, 2, 2, 1632, 1633, 7, 113, 2, 2, 1633, 1634, 7, 108, 2, 2, 1634, 1635, 7, 103, 2, 2, 1635, 1636, 7, 101, 2, 2, 1636, 1637, 7, 118, 2, 2, 1637, 1638, 7, 70, 2, 2, 1638, 1639, 7, 107, 2, 2, 1639, 1640, 7, 116, 2, 2, 1640, 1641, 7, 82, 2, 2, 1641, 1642, 7, 99, 2, 2, 1642, 1643, 7, 118, 2, 2, 1643, 1644, 7, 106, 2, 2, 1644, 174, 3, 2, 2, 2, 1645, 1646, 7, 114, 2, 2, 1646, 1647, 7, 116, 2, 2, 1647, 1648, 7, 113, 2, 2, 1648, 1649, 7, 108, 2, 2, 1649, 1650, 7, 103, 2, 2, 1650, 1651, 7, 101, 2, 2, 1651, 1652, 7, 118, 2, 2, 1652, 1653, 7, 84, 2, 2, 1653, 1654, 7, 103, 2, 2, 1654, 1655, 7, 104, 2, 2, 1655, 1656, 7, 103, 2, 2, 1656, 1657, 7, 116, 2, 2, 1657, 1658, 7, 103, 2, 2, 1658, 1659, 7, 112, 2, 2, 1659, 1660, 7, 101, 2, 2, 1660, 1661, 7, 103, 2, 2, 1661, 1662, 7, 117, 2, 2, 1662, 176, 3, 2, 2, 2, 1663, 1664, 7, 114, 2, 2, 1664, 1665, 7, 116, 2, 2, 1665, 1666, 7, 113, 2, 2, 1666, 1667, 7, 108, 2, 2, 1667, 1668, 7, 103, 2, 2, 1668, 1669, 7, 101, 2, 2, 1669, 1670, 7, 118, 2, 2, 1670, 1671, 7, 84, 2, 2, 1671, 1672, 7, 113, 2, 2, 1672, 1673, 7, 113, 2, 2, 1673, 1674, 7, 118, 2, 2, 1674, 178, 3, 2, 2, 2, 1675, 1676, 7, 118, 2, 2, 1676, 1677, 7, 99, 2, 2, 1677, 1678, 7, 116, 2, 2, 1678, 1679, 7, 105, 2, 2, 1679, 1680, 7, 103, 2, 2, 1680, 1681, 7, 118, 2, 2, 1681, 1682, 7, 117, 2, 2, 1682, 180, 3, 2, 2, 2, 1683, 1684, 7, 107, 2, 2, 1684, 1685, 7, 112, 2, 2, 1685, 1686, 7, 114, 2, 2, 1686, 1687, 7, 119, 2, 2, 1687, 1688, 7, 118, 2, 2, 1688, 1689, 7, 72, 2, 2, 1689, 1690, 7, 107, 2, 2, 1690, 1691, 7, 110, 2, 2, 1691, 1692, 7, 103, 2, 2, 1692, 1693, 7, 78, 2, 2, 1693, 1694, 7, 107, 2, 2, 1694, 1695, 7, 117, 2, 2, 1695, 1696, 7, 118, 2, 2, 1696, 1697, 7, 82, 2, 2, 1697, 1698, 7, 99, 2, 2, 1698, 1699, 7, 118, 2, 2, 1699, 1700, 7, 106, 2, 2, 1700, 1701, 7, 117, 2, 2, 1701, 182, 3, 2, 2, 2, 1702, 1703, 7, 107, 2, 2, 1703, 1704, 7, 112, 2, 2, 1704, 1705, 7, 114, 2, 2, 1705, 1706, 7, 119, 2, 2, 1706, 1707, 7, 118, 2, 2, 1707, 1708, 7, 82, 2, 2, 1708, 1709, 7, 99, 2, 2, 1709, 1710, 7, 118, 2, 2, 1710, 1711, 7, 106, 2, 2, 1711, 1712, 7, 117, 2, 2, 1712, 184, 3, 2, 2, 2, 1713, 1714, 7, 113, 2, 2, 1714, 1715, 7, 119, 2, 2, 1715, 1716, 7, 118, 2, 2, 1716, 1717, 7, 114, 2, 2, 1717, 1718, 7, 119, 2, 2, 1718, 1719, 7, 118, 2, 2, 1719, 1720, 7, 72, 2, 2, 1720, 1721, 7, 107, 2, 2, 1721, 1722, 7, 110, 2, 2, 1722, 1723, 7, 103, 2, 2, 1723, 1724, 7, 78, 2, 2, 1724, 1725, 7, 107, 2, 2, 1725, 1726, 7, 117, 2, 2, 1726, 1727, 7, 118, 2, 2, 1727, 1728, 7, 82, 2, 2, 1728, 1729, 7, 99, 2, 2, 1729, 1730, 7, 118, 2, 2, 1730, 1731, 7, 106, 2, 2, 1731, 1732, 7, 117, 2, 2, 1732, 186, 3, 2, 2, 2, 1733, 1734, 7, 113, 2, 2, 1734, 1735, 7, 119, 2, 2, 1735, 1736, 7, 118, 2, 2, 1736, 1737, 7, 114, 2, 2, 1737, 1738, 7, 119, 2, 2, 1738, 1739, 7, 118, 2, 2, 1739, 1740, 7, 82, 2, 2, 1740, 1741, 7, 99, 2, 2, 1741, 1742, 7, 118, 2, 2, 1742, 1743, 7, 106, 2, 2, 1743, 1744, 7, 117, 2, 2, 1744, 188, 3, 2, 2, 2, 1745, 1746, 7, 117, 2, 2, 1746, 1747, 7, 106, 2, 2, 1747, 1748, 7, 103, 2, 2, 1748, 1749, 7, 110, 2, 2, 1749, 1750, 7, 110, 2, 2, 1750, 1751, 7, 82, 2, 2, 1751, 1752, 7, 99, 2, 2, 1752, 1753, 7, 118, 2, 2, 1753, 1754, 7, 106, 2, 2, 1754, 190, 3, 2, 2, 2, 1755, 1756, 7, 117, 2, 2, 1756, 1757, 7, 106, 2, 2, 1757, 1758, 7, 103, 2, 2, 1758, 1759, 7, 110, 2, 2, 1759, 1760, 7, 110, 2, 2, 1760, 1761, 7, 85, 2, 2, 1761, 1762, 7, 101, 2, 2, 1762, 1763, 7, 116, 2, 2, 1763, 1764, 7, 107, 2, 2, 1764, 1765, 7, 114, 2, 2, 1765, 1766, 7, 118, 2, 2, 1766, 192, 3, 2, 2, 2, 1767, 1768, 7, 117, 2, 2, 1768, 1769, 7, 106, 2, 2, 1769, 1770, 7, 113, 2, 2, 1770, 1771, 7, 121, 2, 2, 1771, 1772, 7, 71, 2, 2, 1772, 1773, 7, 112, 2, 2, 1773, 1774, 7, 120, 2, 2, 1774, 1775, 7, 88, 2, 2, 1775, 1776, 7, 99, 2, 2, 1776, 1777, 7, 116, 2, 2, 1777, 1778, 7, 117, 2, 2, 1778, 1779, 7, 75, 2, 2, 1779, 1780, 7, 112, 2, 2, 1780, 1781, 7, 78, 2, 2, 1781, 1782, 7, 113, 2, 2, 1782, 1783, 7, 105, 2, 2, 1783, 194, 3, 2, 2, 2, 1784, 1785, 7, 118, 2, 2, 1785, 1786, 7, 99, 2, 2, 1786, 1787, 7, 116, 2, 2, 1787, 1788, 7, 105, 2, 2, 1788, 1789, 7, 103, 2, 2, 1789, 1790, 7, 118, 2, 2, 1790, 196, 3, 2, 2, 2, 1791, 1792, 7, 118, 2, 2, 1792, 1793, 7, 99, 2, 2, 1793, 1794, 7, 116, 2, 2, 1794, 1795, 7, 105, 2, 2, 1795, 1796, 7, 103, 2, 2, 1796, 1797, 7, 118, 2, 2, 1797, 1798, 7, 82, 2, 2, 1798, 1799, 7, 116, 2, 2, 1799, 1800, 7, 113, 2, 2, 1800, 1801, 7, 122, 2, 2, 1801, 1802, 7, 123, 2, 2, 1802, 198, 3, 2, 2, 2, 1803, 1804, 7, 104, 2, 2, 1804, 1805, 7, 107, 2, 2, 1805, 1806, 7, 110, 2, 2, 1806, 1807, 7, 103, 2, 2, 1807, 1808, 7, 86, 2, 2, 1808, 1809, 7, 123, 2, 2, 1809, 1810, 7, 114, 2, 2, 1810, 1811, 7, 103, 2, 2, 1811, 200, 3, 2, 2, 2, 1812, 1813, 7, 116, 2, 2, 1813, 1814, 7, 103, 2, 2, 1814, 1815, 7, 111, 2, 2, 1815, 1816, 7, 113, 2, 2, 1816, 1817, 7, 118, 2, 2, 1817, 1818, 7, 103, 2, 2, 1818, 1819, 7, 84, 2, 2, 1819, 1820, 7, 103, 2, 2, 1820, 1821, 7, 104, 2, 2, 1821, 202, 3, 2, 2, 2, 1822, 1823, 7, 100, 2, 2, 1823, 1824, 7, 99, 2, 2, 1824, 1825, 7, 117, 2, 2, 1825, 1826, 7, 103, 2, 2, 1826, 1827, 7, 69, 2, 2, 1827, 1828, 7, 113, 2, 2, 1828, 1829, 7, 112, 2, 2, 1829, 1830, 7, 104, 2, 2, 1830, 1831, 7, 107, 2, 2, 1831, 1832, 7, 105, 2, 2, 1832, 1833, 7, 119, 2, 2, 1833, 1834, 7, 116, 2, 2, 1834, 1835, 7, 99, 2, 2, 1835, 1836, 7, 118, 2, 2, 1836, 1837, 7, 107, 2, 2, 1837, 1838, 7, 113, 2, 2, 1838, 1839, 7, 112, 2, 2, 1839, 1840, 7, 84, 2, 2, 1840, 1841, 7, 103, 2, 2, 1841, 1842, 7, 104, 2, 2, 1842, 1843, 7, 103, 2, 2, 1843, 1844, 7, 116, 2, 2, 1844, 1845, 7, 103, 2, 2, 1845, 1846, 7, 112, 2, 2, 1846, 1847, 7, 101, 2, 2, 1847, 1848, 7, 103, 2, 2, 1848, 204, 3, 2, 2, 2, 1849, 1850, 7, 100, 2, 2, 1850, 1851, 7, 119, 2, 2, 1851, 1852, 7, 107, 2, 2, 1852, 1853, 7, 110, 2, 2, 1853, 1854, 7, 102, 2, 2, 1854, 1855, 7, 85, 2, 2, 1855, 1856, 7, 103, 2, 2, 1856, 1857, 7, 118, 2, 2, 1857, 1858, 7, 118, 2, 2, 1858, 1859, 7, 107, 2, 2, 1859, 1860, 7, 112, 2, 2, 1860, 1861, 7, 105, 2, 2, 1861, 1862, 7, 117, 2, 2, 1862, 206, 3, 2, 2, 2, 1863, 1864, 7, 102, 2, 2, 1864, 1865, 7, 117, 2, 2, 1865, 1866, 7, 118, 2, 2, 1866, 1867, 7, 82, 2, 2, 1867, 1868, 7, 99, 2, 2, 1868, 1869, 7, 118, 2, 2, 1869, 1870, 7, 106, 2, 2, 1870, 208, 3, 2, 2, 2, 1871, 1872, 7, 102, 2, 2, 1872, 1873, 7, 117, 2, 2, 1873, 1874, 7, 118, 2, 2, 1874, 1875, 7, 85, 2, 2, 1875, 1876, 7, 119, 2, 2, 1876, 1877, 7, 100, 2, 2, 1877, 1878, 7, 104, 2, 2, 1878, 1879, 7, 113, 2, 2, 1879, 1880, 7, 110, 2, 2, 1880, 1881, 7, 102, 2, 2, 1881, 1882, 7, 103, 2, 2, 1882, 1883, 7, 116, 2, 2, 1883, 1884, 7, 85, 2, 2, 1884, 1885, 7, 114, 2, 2, 1885, 1886, 7, 103, 2, 2, 1886, 1887, 7, 101, 2, 2, 1887, 210, 3, 2, 2, 2, 1888, 1889, 7, 82, 2, 2, 1889, 1890, 7, 116, 2, 2, 1890, 1891, 7, 113, 2, 2, 1891, 1892, 7, 102, 2, 2, 1892, 1893, 7, 119, 2, 2, 1893, 1894, 7, 101, 2, 2, 1894, 1895, 7, 118, 2, 2, 1895, 1896, 7, 73, 2, 2, 1896, 1897, 7, 116, 2, 2, 1897, 1898, 7, 113, 2, 2, 1898, 1899, 7, 119, 2, 2, 1899, 1900, 7, 114, 2, 2, 1900, 212, 3, 2, 2, 2, 1901, 1902, 7, 82, 2, 2, 1902, 1903, 7, 116, 2, 2, 1903, 1904, 7, 113, 2, 2, 1904, 1905, 7, 108, 2, 2, 1905, 1906, 7, 103, 2, 2, 1906, 1907, 7, 101, 2, 2, 1907, 1908, 7, 118, 2, 2, 1908, 1909, 7, 84, 2, 2, 1909, 1910, 7, 103, 2, 2, 1910, 1911, 7, 104, 2, 2, 1911, 214, 3, 2, 2, 2, 1912, 1913, 7, 100, 2, 2, 1913, 1914, 7, 119, 2, 2, 1914, 1915, 7, 107, 2, 2, 1915, 1916, 7, 110, 2, 2, 1916, 1917, 7, 102, 2, 2, 1917, 1918, 7, 69, 2, 2, 1918, 1919, 7, 113, 2, 2, 1919, 1920, 7, 112, 2, 2, 1920, 1921, 7, 104, 2, 2, 1921, 1922, 7, 107, 2, 2, 1922, 1923, 7, 105, 2, 2, 1923, 1924, 7, 119, 2, 2, 1924, 1925, 7, 116, 2, 2, 1925, 1926, 7, 99, 2, 2, 1926, 1927, 7, 118, 2, 2, 1927, 1928, 7, 107, 2, 2, 1928, 1929, 7, 113, 2, 2, 1929, 1930, 7, 112, 2, 2, 1930, 1931, 7, 117, 2, 2, 1931, 216, 3, 2, 2, 2, 1932, 1933, 7, 102, 2, 2, 1933, 1934, 7, 103, 2, 2, 1934, 1935, 7, 104, 2, 2, 1935, 1936, 7, 99, 2, 2, 1936, 1937, 7, 119, 2, 2, 1937, 1938, 7, 110, 2, 2, 1938, 1939, 7, 118, 2, 2, 1939, 1940, 7, 69, 2, 2, 1940, 1941, 7, 113, 2, 2, 1941, 1942, 7, 112, 2, 2, 1942, 1943, 7, 104, 2, 2, 1943, 1944, 7, 107, 2, 2, 1944, 1945, 7, 105, 2, 2, 1945, 1946, 7, 119, 2, 2, 1946, 1947, 7, 116, 2, 2, 1947, 1948, 7, 99, 2, 2, 1948, 1949, 7, 118, 2, 2, 1949, 1950, 7, 107, 2, 2, 1950, 1951, 7, 113, 2, 2, 1951, 1952, 7, 112, 2, 2, 1952, 1953, 7, 75, 2, 2, 1953, 1954, 7, 117, 2, 2, 1954, 1955, 7, 88, 2, 2, 1955, 1956, 7, 107, 2, 2, 1956, 1957, 7, 117, 2, 2, 1957, 1958, 7, 107, 2, 2, 1958, 1959, 7, 100, 2, 2, 1959, 1960, 7, 110, 2, 2, 1960, 1961, 7, 103, 2, 2, 1961, 218, 3, 2, 2, 2, 1962, 1963, 7, 102, 2, 2, 1963, 1964, 7, 103, 2, 2, 1964, 1965, 7, 104, 2, 2, 1965, 1966, 7, 99, 2, 2, 1966, 1967, 7, 119, 2, 2, 1967, 1968, 7, 110, 2, 2, 1968, 1969, 7, 118, 2, 2, 1969, 1970, 7, 69, 2, 2, 1970, 1971, 7, 113, 2, 2, 1971, 1972, 7, 112, 2, 2, 1972, 1973, 7, 104, 2, 2, 1973, 1974, 7, 107, 2, 2, 1974, 1975, 7, 105, 2, 2, 1975, 1976, 7, 119, 2, 2, 1976, 1977, 7, 116, 2, 2, 1977, 1978, 7, 99, 2, 2, 1978, 1979, 7, 118, 2, 2, 1979, 1980, 7, 107, 2, 2, 1980, 1981, 7, 113, 2, 2, 1981, 1982, 7, 112, 2, 2, 1982, 1983, 7, 80, 2, 2, 1983, 1984, 7, 99, 2, 2, 1984, 1985, 7, 111, 2, 2, 1985, 1986, 7, 103, 2, 2, 1986, 220, 3, 2, 2, 2, 1987, 1988, 7, 117, 2, 2, 1988, 1989, 7, 103, 2, 2, 1989, 1990, 7, 118, 2, 2, 1990, 1991, 7, 118, 2, 2, 1991, 1992, 7, 107, 2, 2, 1992, 1993, 7, 112, 2, 2, 1993, 1994, 7, 105, 2, 2, 1994, 1995, 7, 117, 2, 2, 1995, 222, 3, 2, 2, 2, 1996, 1997, 7, 85, 2, 2, 1997, 1998, 7, 123, 2, 2, 1998, 1999, 7, 117, 2, 2, 1999, 2000, 7, 118, 2, 2, 2000, 2001, 7, 103, 2, 2, 2001, 2002, 7, 111, 2, 2, 2002, 2003, 7, 69, 2, 2, 2003, 2004, 7, 99, 2, 2, 2004, 2005, 7, 114, 2, 2, 2005, 2006, 7, 99, 2, 2, 2006, 2007, 7, 100, 2, 2, 2007, 2008, 7, 107, 2, 2, 2008, 2009, 7, 110, 2, 2, 2009, 2010, 7, 107, 2, 2, 2010, 2011, 7, 118, 2, 2, 2011, 2012, 7, 107, 2, 2, 2012, 2013, 7, 103, 2, 2, 2013, 2014, 7, 117, 2, 2, 2014, 224, 3, 2, 2, 2, 2015, 2016, 7, 101, 2, 2, 2016, 2017, 7, 119, 2, 2, 2017, 2018, 7, 116, 2, 2, 2018, 2019, 7, 116, 2, 2, 2019, 2020, 7, 103, 2, 2, 2020, 2021, 7, 112, 2, 2, 2021, 2022, 7, 118, 2, 2, 2022, 2023, 7, 88, 2, 2, 2023, 2024, 7, 103, 2, 2, 2024, 2025, 7, 116, 2, 2, 2025, 2026, 7, 117, 2, 2, 2026, 2027, 7, 107, 2, 2, 2027, 2028, 7, 113, 2, 2, 2028, 2029, 7, 112, 2, 2, 2029, 226, 3, 2, 2, 2, 2030, 2031, 7, 120, 2, 2, 2031, 2032, 7, 103, 2, 2, 2032, 2033, 7, 116, 2, 2, 2033, 2034, 7, 117, 2, 2, 2034, 2035, 7, 107, 2, 2, 2035, 2036, 7, 113, 2, 2, 2036, 2037, 7, 112, 2, 2, 2037, 2038, 7, 73, 2, 2, 2038, 2039, 7, 116, 2, 2, 2039, 2040, 7, 113, 2, 2, 2040, 2041, 7, 119, 2, 2, 2041, 2042, 7, 114, 2, 2, 2042, 2043, 7, 86, 2, 2, 2043, 2044, 7, 123, 2, 2, 2044, 2045, 7, 114, 2, 2, 2045, 2046, 7, 103, 2, 2, 2046, 228, 3, 2, 2, 2, 2047, 2048, 7, 69, 2, 2, 2048, 2049, 7, 78, 2, 2, 2049, 2050, 7, 67, 2, 2, 2050, 2051, 7, 85, 2, 2, 2051, 2052, 7, 85, 2, 2, 2052, 2053, 7, 82, 2, 2, 2053, 2054, 7, 84, 2, 2, 2054, 2055, 7, 71, 2, 2, 2055, 2056, 7, 72, 2, 2, 2056, 2057, 7, 75, 2, 2, 2057, 2058, 7, 90, 2, 2, 2058, 230, 3, 2, 2, 2, 2059, 2060, 7, 101, 2, 2, 2060, 2061, 7, 110, 2, 2, 2061, 2062, 7, 99, 2, 2, 2062, 2063, 7, 117, 2, 2, 2063, 2064, 7, 117, 2, 2, 2064, 2065, 7, 103, 2, 2, 2065, 2066, 7, 117, 2, 2, 2066, 232, 3, 2, 2, 2, 2067, 2068, 7, 107, 2, 2, 2068, 2069, 7, 117, 2, 2, 2069, 2070, 7, 99, 2, 2, 2070, 234, 3, 2, 2, 2, 2071, 2072, 7, 113, 2, 2, 2072, 2073, 7, 100, 2, 2, 2073, 2074, 7, 108, 2, 2, 2074, 2075, 7, 103, 2, 2, 2075, 2076, 7, 101, 2, 2, 2076, 2077, 7, 118, 2, 2, 2077, 2078, 7, 117, 2, 2, 2078, 236, 3, 2, 2, 2, 2079, 2080, 7, 116, 2, 2, 2080, 2081, 7, 113, 2, 2, 2081, 2082, 7, 113, 2, 2, 2082, 2083, 7, 118, 2, 2, 2083, 2084, 7, 81, 2, 2, 2084, 2085, 7, 100, 2, 2, 2085, 2086, 7, 108, 2, 2, 2086, 2087, 7, 103, 2, 2, 2087, 2088, 7, 101, 2, 2, 2088, 2089, 7, 118, 2, 2, 2089, 238, 3, 2, 2, 2, 2090, 2092, 4, 50, 59, 2, 2091, 2090, 3, 2, 2, 2, 2092, 2093, 3, 2, 2, 2, 2093, 2091, 3, 2, 2, 2, 2093, 2094, 3, 2, 2, 2, 2094, 240, 3, 2, 2, 2, 2095, 2096, 7, 48, 2, 2, 2096, 242, 3, 2, 2, 2, 2097, 2098, 9, 2, 2, 2, 2098, 244, 3, 2, 2, 2, 2099, 2100, 9, 3, 2, 2, 2100, 246, 3, 2, 2, 2, 2101, 2102, 7, 47, 2, 2, 2102, 248, 3, 2, 2, 2, 2103, 2104, 7, 97, 2, 2, 2104, 250, 3, 2, 2, 2, 2105, 2106, 7, 49, 2, 2, 2106, 252, 3, 2, 2, 2, 2107, 2108, 5, 261, 131, 2, 2108, 2109, 5, 261, 131, 2, 2109, 2110, 5, 261, 131, 2, 2110, 2111, 5, 261, 131, 2, 2111, 2112, 5, 261, 131, 2, 2112, 2113, 5, 261, 131, 2, 2113, 2114, 5, 261, 131, 2, 2114, 2115, 5, 261, 131, 2, 2115, 2116, 5, 261, 131, 2, 2116, 2117, 5, 261, 131, 2, 2117, 2118, 5, 261, 131, 2, 2118, 2119, 5, 261, 131, 2, 2119, 2120, 5, 261, 131, 2, 2120, 2121, 5, 261, 131, 2, 2121, 2122, 5, 261, 131, 2, 2122, 2123, 5, 261, 131, 2, 2123, 2124, 5, 261, 131, 2, 2124, 2125, 5, 261, 131, 2, 2125, 2126, 5, 261, 131, 2, 2126, 2127, 5, 261, 131, 2, 2127, 2128, 5, 261, 131, 2, 2128, 2129, 5, 261, 131, 2, 2129, 2130, 5, 261, 131, 2, 2130, 2131, 5, 261, 131, 2, 2131, 2170, 3, 2, 2, 2, 2132, 2133, 7, 72, 2, 2, 2133, 2134, 7, 84, 2, 2, 2134, 2138, 7, 97, 2, 2, 2135, 2136, 7, 73, 2, 2, 2136, 2138, 7, 97, 2, 2, 2137, 2132, 3, 2, 2, 2, 2137, 2135, 3, 2, 2, 2, 2138, 2140, 3, 2, 2, 2, 2139, 2141, 5, 261, 131, 2, 2140, 2139, 3, 2, 2, 2, 2141, 2142, 3, 2, 2, 2, 2142, 2140, 3, 2, 2, 2, 2142, 2143, 3, 2, 2, 2, 2143, 2170, 3, 2, 2, 2, 2144, 2145, 5, 245, 123, 2, 2145, 2146, 5, 245, 123, 2, 2146, 2147, 5, 245, 123, 2, 2147, 2148, 5, 245, 123, 2, 2148, 2149, 5, 245, 123, 2, 2149, 2150, 5, 245, 123, 2, 2150, 2151, 5, 245, 123, 2, 2151, 2152, 5, 245, 123, 2, 2152, 2153, 5, 245, 123, 2, 2153, 2154, 5, 245, 123, 2, 2154, 2155, 5, 245, 123, 2, 2155, 2156, 5, 245, 123, 2, 2156, 2157, 5, 245, 123, 2, 2157, 2158, 5, 245, 123, 2, 2158, 2159, 5, 245, 123, 2, 2159, 2160, 5, 245, 123, 2, 2160, 2161, 5, 245, 123, 2, 2161, 2162, 5, 245, 123, 2, 2162, 2163, 5, 245, 123, 2, 2163, 2164, 5, 245, 123, 2, 2164, 2165, 5, 245, 123, 2, 2165, 2166, 5, 245, 123, 2, 2166, 2167, 5, 245, 123, 2, 2167, 2168, 5, 245, 123, 2, 2168, 2170, 3, 2, 2, 2, 2169, 2107, 3, 2, 2, 2, 2169, 2137, 3, 2, 2, 2, 2169, 2144, 3, 2, 2, 2, 2170, 254, 3, 2, 2, 2, 2171, 2173, 7, 36, 2, 2, 2172, 2174, 5, 263, 132, 2, 2173, 2172, 3, 2, 2, 2, 2174, 2175, 3, 2, 2, 2, 2175, 2173, 3, 2, 2, 2, 2175, 2176, 3, 2, 2, 2, 2176, 2177, 3, 2, 2, 2, 2177, 2178, 7, 36, 2, 2, 2178, 2182, 3, 2, 2, 2, 2179, 2180, 7, 36, 2, 2, 2180, 2182, 7, 36, 2, 2, 2181, 2171, 3, 2, 2, 2, 2181, 2179, 3, 2, 2, 2, 2182, 256, 3, 2, 2, 2, 2183, 2189, 5, 243, 122, 2, 2184, 2189, 5, 249, 125, 2, 2185, 2189, 5, 247, 124, 2, 2186, 2189, 5, 251, 126, 2, 2187, 2189, 5, 241, 121, 2, 2188, 2183, 3, 2, 2, 2, 2188, 2184, 3, 2, 2, 2, 2188, 2185, 3, 2, 2, 2, 2188, 2186, 3, 2, 2, 2, 2188, 2187, 3, 2, 2, 2, 2189, 2190, 3, 2, 2, 2, 2190, 2188, 3, 2, 2, 2, 2190, 2191, 3, 2, 2, 2, 2191, 258, 3, 2, 2, 2, 2192, 2193, 7, 38, 2, 2, 2193, 2194, 5, 257, 129, 2, 2194, 260, 3, 2, 2, 2, 2195, 2196, 9, 4, 2, 2, 2196, 262, 3, 2, 2, 2, 2197, 2201, 10, 5, 2, 2, 2198, 2199, 7, 94, 2, 2, 2199, 2201, 7, 36, 2, 2, 2200, 2197, 3, 2, 2, 2, 2200, 2198, 3, 2, 2, 2, 2201, 264, 3, 2, 2, 2, 2202, 2204, 9, 6, 2, 2, 2203, 2202, 3, 2, 2, 2, 2204, 2205, 3, 2, 2, 2, 2205, 2203, 3, 2, 2, 2, 2205, 2206, 3, 2, 2, 2, 2206, 2207, 3, 2, 2, 2, 2207, 2208, 8, 133, 2, 2, 2208, 266, 3, 2, 2, 2, 2209, 2210, 7, 49, 2, 2, 2210, 2211, 7, 44, 2, 2, 2211, 2215, 3, 2, 2, 2, 2212, 2214, 11, 2, 2, 2, 2213, 2212, 3, 2, 2, 2, 2214, 2217, 3, 2, 2, 2, 2215, 2216, 3, 2, 2, 2, 2215, 2213, 3, 2, 2, 2, 2216, 2218, 3, 2, 2, 2, 2217, 2215, 3, 2, 2, 2, 2218, 2219, 7, 44, 2, 2, 2219, 2220, 7, 49, 2, 2, 2220, 2221, 3, 2, 2, 2, 2221, 2222, 8, 134, 2, 2, 2222, 268, 3, 2, 2, 2, 2223, 2224, 7, 49, 2, 2, 2224, 2225, 7, 49, 2, 2, 2225, 2229, 3, 2, 2, 2, 2226, 2228, 10, 7, 2, 2, 2227, 2226, 3, 2, 2, 2, 2228, 2231, 3, 2, 2, 2, 2229, 2227, 3, 2, 2, 2, 2229, 2230, 3, 2, 2, 2, 2230, 2232, 3, 2, 2, 2, 2231, 2229, 3, 2, 2, 2, 2232, 2233, 8, 135, 2, 2, 2233, 270, 3, 2, 2, 2, 15, 2, 2093, 2137, 2142, 2169, 2175, 2181, 2188, 2190, 2200, 2205, 2215, 2229, 3, 8, 2, 2] \ No newline at end of file diff --git a/kin/grammar/PBXProjLexer.py b/kin/grammar/PBXProjLexer.py index ac45623..6d13a00 100644 --- a/kin/grammar/PBXProjLexer.py +++ b/kin/grammar/PBXProjLexer.py @@ -1,954 +1,941 @@ -# Generated from PBXProj.g4 by ANTLR 4.6 -# encoding: utf-8 -from __future__ import print_function +# Generated from kin/grammar/PBXProj.g4 by ANTLR 4.9.2 from antlr4 import * from io import StringIO +import sys +if sys.version_info[1] > 5: + from typing import TextIO +else: + from typing.io import TextIO + def serializedATN(): with StringIO() as buf: - buf.write(u"\3\u0430\ud6d1\u8206\uad2d\u4417\uaef1\u8d80\uaadd\2") - buf.write(u"\u0086\u08ba\b\1\4\2\t\2\4\3\t\3\4\4\t\4\4\5\t\5\4\6") - buf.write(u"\t\6\4\7\t\7\4\b\t\b\4\t\t\t\4\n\t\n\4\13\t\13\4\f\t") - buf.write(u"\f\4\r\t\r\4\16\t\16\4\17\t\17\4\20\t\20\4\21\t\21\4") - buf.write(u"\22\t\22\4\23\t\23\4\24\t\24\4\25\t\25\4\26\t\26\4\27") - buf.write(u"\t\27\4\30\t\30\4\31\t\31\4\32\t\32\4\33\t\33\4\34\t") - buf.write(u"\34\4\35\t\35\4\36\t\36\4\37\t\37\4 \t \4!\t!\4\"\t\"") - buf.write(u"\4#\t#\4$\t$\4%\t%\4&\t&\4\'\t\'\4(\t(\4)\t)\4*\t*\4") - buf.write(u"+\t+\4,\t,\4-\t-\4.\t.\4/\t/\4\60\t\60\4\61\t\61\4\62") - buf.write(u"\t\62\4\63\t\63\4\64\t\64\4\65\t\65\4\66\t\66\4\67\t") - buf.write(u"\67\48\t8\49\t9\4:\t:\4;\t;\4<\t<\4=\t=\4>\t>\4?\t?\4") - buf.write(u"@\t@\4A\tA\4B\tB\4C\tC\4D\tD\4E\tE\4F\tF\4G\tG\4H\tH") - buf.write(u"\4I\tI\4J\tJ\4K\tK\4L\tL\4M\tM\4N\tN\4O\tO\4P\tP\4Q\t") - buf.write(u"Q\4R\tR\4S\tS\4T\tT\4U\tU\4V\tV\4W\tW\4X\tX\4Y\tY\4Z") - buf.write(u"\tZ\4[\t[\4\\\t\\\4]\t]\4^\t^\4_\t_\4`\t`\4a\ta\4b\t") - buf.write(u"b\4c\tc\4d\td\4e\te\4f\tf\4g\tg\4h\th\4i\ti\4j\tj\4k") - buf.write(u"\tk\4l\tl\4m\tm\4n\tn\4o\to\4p\tp\4q\tq\4r\tr\4s\ts\4") - buf.write(u"t\tt\4u\tu\4v\tv\4w\tw\4x\tx\4y\ty\4z\tz\4{\t{\4|\t|") - buf.write(u"\4}\t}\4~\t~\4\177\t\177\4\u0080\t\u0080\4\u0081\t\u0081") - buf.write(u"\4\u0082\t\u0082\4\u0083\t\u0083\4\u0084\t\u0084\4\u0085") - buf.write(u"\t\u0085\4\u0086\t\u0086\4\u0087\t\u0087\3\2\3\2\3\3") - buf.write(u"\3\3\3\4\3\4\3\4\3\4\3\4\3\4\3\4\3\4\3\4\3\4\3\4\3\4") - buf.write(u"\3\4\3\4\3\4\3\5\3\5\3\6\3\6\3\7\3\7\3\7\3\7\3\7\3\7") - buf.write(u"\3\7\3\7\3\7\3\7\3\7\3\7\3\7\3\7\3\b\3\b\3\b\3\b\3\b") - buf.write(u"\3\b\3\b\3\b\3\b\3\b\3\b\3\b\3\b\3\b\3\b\3\b\3\b\3\b") - buf.write(u"\3\b\3\t\3\t\3\t\3\t\3\t\3\t\3\t\3\t\3\t\3\t\3\t\3\t") - buf.write(u"\3\t\3\n\3\n\3\n\3\n\3\n\3\n\3\n\3\n\3\n\3\n\3\n\3\n") - buf.write(u"\3\n\3\n\3\n\3\n\3\n\3\n\3\n\3\n\3\n\3\n\3\13\3\13\3") - buf.write(u"\13\3\13\3\13\3\13\3\13\3\13\3\13\3\13\3\13\3\13\3\13") - buf.write(u"\3\13\3\13\3\13\3\13\3\13\3\13\3\13\3\13\3\13\3\13\3") - buf.write(u"\f\3\f\3\f\3\f\3\f\3\f\3\f\3\f\3\f\3\f\3\f\3\f\3\f\3") - buf.write(u"\f\3\f\3\f\3\f\3\r\3\r\3\r\3\r\3\r\3\r\3\r\3\r\3\r\3") - buf.write(u"\r\3\r\3\r\3\r\3\r\3\r\3\r\3\r\3\r\3\r\3\r\3\r\3\r\3") - buf.write(u"\r\3\r\3\16\3\16\3\16\3\16\3\16\3\16\3\16\3\16\3\16\3") - buf.write(u"\17\3\17\3\17\3\17\3\17\3\17\3\17\3\17\3\17\3\17\3\17") - buf.write(u"\3\17\3\17\3\17\3\17\3\17\3\17\3\17\3\17\3\17\3\17\3") - buf.write(u"\20\3\20\3\20\3\20\3\20\3\20\3\20\3\20\3\20\3\20\3\20") - buf.write(u"\3\20\3\20\3\20\3\20\3\20\3\21\3\21\3\21\3\21\3\21\3") - buf.write(u"\21\3\21\3\21\3\21\3\21\3\21\3\22\3\22\3\22\3\22\3\22") - buf.write(u"\3\22\3\22\3\22\3\22\3\22\3\22\3\22\3\22\3\22\3\22\3") - buf.write(u"\22\3\22\3\22\3\23\3\23\3\23\3\23\3\23\3\23\3\23\3\23") - buf.write(u"\3\23\3\23\3\23\3\23\3\23\3\23\3\23\3\23\3\23\3\23\3") - buf.write(u"\23\3\23\3\23\3\23\3\23\3\24\3\24\3\24\3\24\3\24\3\24") - buf.write(u"\3\24\3\24\3\24\3\24\3\24\3\24\3\24\3\24\3\24\3\24\3") - buf.write(u"\24\3\24\3\24\3\24\3\24\3\24\3\24\3\24\3\24\3\25\3\25") - buf.write(u"\3\25\3\25\3\25\3\25\3\25\3\25\3\25\3\25\3\25\3\25\3") - buf.write(u"\25\3\25\3\25\3\25\3\25\3\25\3\25\3\25\3\25\3\26\3\26") - buf.write(u"\3\26\3\26\3\26\3\26\3\26\3\26\3\26\3\26\3\26\3\26\3") - buf.write(u"\26\3\26\3\26\3\26\3\26\3\26\3\26\3\26\3\27\3\27\3\27") - buf.write(u"\3\27\3\27\3\27\3\27\3\27\3\27\3\27\3\27\3\27\3\27\3") - buf.write(u"\27\3\27\3\27\3\30\3\30\3\30\3\30\3\30\3\30\3\30\3\30") - buf.write(u"\3\30\3\30\3\30\3\30\3\30\3\30\3\30\3\30\3\30\3\30\3") - buf.write(u"\30\3\30\3\30\3\31\3\31\3\31\3\31\3\31\3\31\3\31\3\31") - buf.write(u"\3\31\3\31\3\31\3\31\3\31\3\31\3\31\3\31\3\31\3\31\3") - buf.write(u"\31\3\31\3\32\3\32\3\32\3\32\3\32\3\32\3\32\3\32\3\32") - buf.write(u"\3\32\3\32\3\32\3\32\3\32\3\32\3\32\3\32\3\32\3\32\3") - buf.write(u"\32\3\32\3\32\3\32\3\32\3\32\3\32\3\32\3\32\3\32\3\32") - buf.write(u"\3\33\3\33\3\33\3\33\3\33\3\33\3\33\3\33\3\33\3\33\3") - buf.write(u"\33\3\33\3\33\3\33\3\33\3\33\3\33\3\33\3\33\3\33\3\33") - buf.write(u"\3\33\3\33\3\33\3\33\3\33\3\33\3\33\3\33\3\33\3\33\3") - buf.write(u"\33\3\34\3\34\3\34\3\34\3\34\3\34\3\34\3\34\3\34\3\34") - buf.write(u"\3\34\3\34\3\34\3\34\3\34\3\35\3\35\3\35\3\35\3\35\3") - buf.write(u"\35\3\35\3\35\3\36\3\36\3\36\3\36\3\36\3\36\3\36\3\36") - buf.write(u"\3\36\3\36\3\36\3\37\3\37\3\37\3\37\3\37\3\37\3\37\3") - buf.write(u"\37\3\37\3\37\3\37\3\37\3\37\3\37\3\37\3\37\3 \3 \3 ") - buf.write(u"\3 \3 \3 \3 \3 \3 \3 \3!\3!\3!\3!\3!\3!\3!\3!\3!\3!\3") - buf.write(u"!\3!\3!\3!\3!\3!\3!\3!\3!\3!\3!\3\"\3\"\3\"\3\"\3\"\3") - buf.write(u"\"\3\"\3\"\3\"\3\"\3\"\3#\3#\3#\3#\3#\3#\3#\3#\3#\3#") - buf.write(u"\3#\3#\3#\3$\3$\3$\3$\3$\3$\3$\3$\3$\3$\3$\3$\3$\3$\3") - buf.write(u"$\3$\3$\3%\3%\3%\3%\3%\3%\3%\3%\3%\3%\3%\3%\3%\3%\3%") - buf.write(u"\3%\3%\3%\3&\3&\3&\3&\3&\3&\3&\3&\3&\3&\3&\3&\3&\3&\3") - buf.write(u"&\3\'\3\'\3\'\3\'\3\'\3\'\3\'\3\'\3\'\3\'\3\'\3\'\3(") - buf.write(u"\3(\3(\3(\3(\3(\3(\3(\3(\3)\3)\3)\3)\3)\3)\3)\3)\3)\3") - buf.write(u"*\3*\3*\3*\3*\3*\3*\3*\3*\3+\3+\3+\3+\3+\3+\3+\3+\3+") - buf.write(u"\3+\3+\3+\3+\3+\3+\3+\3+\3+\3+\3,\3,\3,\3,\3,\3,\3,\3") - buf.write(u",\3,\3,\3,\3,\3,\3,\3-\3-\3-\3-\3-\3-\3-\3-\3-\3-\3-") - buf.write(u"\3-\3.\3.\3.\3.\3.\3.\3.\3.\3/\3/\3/\3/\3/\3/\3/\3/\3") - buf.write(u"/\3/\3/\3/\3/\3/\3/\3/\3/\3/\3/\3/\3/\3/\3/\3/\3/\3/") - buf.write(u"\3/\3\60\3\60\3\60\3\60\3\60\3\61\3\61\3\61\3\61\3\61") - buf.write(u"\3\62\3\62\3\62\3\62\3\62\3\62\3\62\3\62\3\62\3\62\3") - buf.write(u"\62\3\63\3\63\3\63\3\63\3\63\3\63\3\63\3\63\3\63\3\63") - buf.write(u"\3\63\3\63\3\63\3\63\3\63\3\63\3\64\3\64\3\64\3\64\3") - buf.write(u"\64\3\64\3\65\3\65\3\65\3\65\3\65\3\65\3\65\3\65\3\65") - buf.write(u"\3\65\3\65\3\65\3\65\3\65\3\65\3\65\3\65\3\65\3\65\3") - buf.write(u"\65\3\65\3\65\3\65\3\65\3\65\3\65\3\65\3\65\3\65\3\65") - buf.write(u"\3\65\3\65\3\65\3\65\3\65\3\66\3\66\3\67\3\67\38\38\3") - buf.write(u"9\39\39\39\39\39\39\39\39\39\39\39\39\39\39\39\39\39") - buf.write(u"\39\39\39\39\39\3:\3:\3:\3:\3:\3:\3:\3:\3:\3:\3:\3:\3") - buf.write(u";\3;\3;\3;\3;\3;\3;\3;\3;\3;\3;\3<\3<\3<\3<\3<\3<\3<") - buf.write(u"\3<\3<\3<\3<\3<\3<\3=\3=\3=\3=\3=\3=\3=\3=\3=\3=\3=\3") - buf.write(u"=\3>\3>\3>\3>\3>\3>\3>\3>\3>\3>\3>\3>\3>\3>\3>\3>\3>") - buf.write(u"\3?\3?\3?\3?\3?\3?\3?\3?\3?\3?\3?\3?\3@\3@\3@\3@\3@\3") - buf.write(u"@\3@\3@\3@\3@\3@\3A\3A\3A\3A\3A\3A\3A\3A\3A\3A\3A\3A") - buf.write(u"\3A\3A\3A\3A\3A\3A\3A\3A\3A\3A\3A\3A\3A\3A\3A\3A\3A\3") - buf.write(u"A\3A\3A\3A\3A\3B\3B\3B\3B\3B\3B\3B\3B\3B\3B\3B\3B\3B") - buf.write(u"\3B\3B\3B\3B\3B\3B\3B\3B\3B\3B\3B\3B\3B\3B\3B\3B\3B\3") - buf.write(u"B\3B\3B\3B\3B\3C\3C\3C\3C\3C\3C\3C\3C\3C\3C\3C\3D\3D") - buf.write(u"\3D\3D\3D\3D\3D\3D\3D\3D\3D\3D\3D\3D\3D\3D\3D\3D\3D\3") - buf.write(u"E\3E\3E\3E\3E\3E\3E\3E\3E\3E\3E\3E\3E\3E\3E\3E\3E\3E") - buf.write(u"\3E\3E\3E\3E\3E\3E\3E\3E\3E\3E\3E\3E\3E\3E\3E\3E\3E\3") - buf.write(u"F\3F\3F\3F\3F\3F\3F\3F\3F\3F\3F\3F\3F\3F\3F\3F\3F\3F") - buf.write(u"\3F\3F\3F\3G\3G\3G\3G\3G\3G\3G\3G\3G\3G\3G\3G\3G\3G\3") - buf.write(u"G\3G\3G\3G\3G\3G\3G\3G\3G\3G\3G\3G\3G\3G\3G\3G\3G\3G") - buf.write(u"\3G\3G\3H\3H\3H\3H\3H\3H\3H\3H\3H\3H\3H\3H\3H\3H\3H\3") - buf.write(u"H\3H\3I\3I\3I\3I\3I\3I\3I\3I\3I\3I\3I\3I\3I\3I\3I\3I") - buf.write(u"\3I\3I\3I\3I\3I\3I\3I\3I\3J\3J\3J\3J\3J\3J\3J\3J\3J\3") - buf.write(u"J\3J\3J\3J\3J\3J\3J\3J\3K\3K\3K\3K\3K\3K\3K\3K\3K\3K") - buf.write(u"\3K\3K\3K\3K\3K\3K\3K\3L\3L\3L\3L\3L\3L\3L\3L\3L\3L\3") - buf.write(u"L\3L\3L\3L\3L\3L\3L\3L\3L\3L\3L\3L\3M\3M\3M\3M\3M\3M") - buf.write(u"\3M\3M\3M\3M\3M\3M\3M\3N\3N\3N\3N\3N\3N\3N\3N\3N\3N\3") - buf.write(u"N\3N\3N\3N\3N\3N\3O\3O\3O\3O\3O\3O\3O\3O\3O\3O\3O\3O") - buf.write(u"\3O\3O\3O\3O\3O\3O\3P\3P\3P\3P\3P\3P\3P\3P\3P\3P\3P\3") - buf.write(u"P\3P\3P\3P\3P\3P\3P\3P\3P\3P\3Q\3Q\3Q\3Q\3Q\3Q\3Q\3Q") - buf.write(u"\3Q\3Q\3Q\3Q\3Q\3Q\3Q\3Q\3Q\3Q\3R\3R\3R\3R\3R\3R\3R\3") - buf.write(u"R\3R\3R\3R\3R\3R\3R\3R\3R\3R\3R\3R\3R\3R\3R\3R\3S\3S") - buf.write(u"\3S\3S\3S\3S\3S\3S\3S\3S\3S\3S\3S\3T\3T\3T\3T\3T\3T\3") - buf.write(u"T\3T\3T\3T\3U\3U\3U\3U\3U\3U\3U\3U\3U\3U\3U\3U\3U\3U") - buf.write(u"\3U\3U\3V\3V\3V\3V\3V\3V\3V\3V\3V\3V\3V\3V\3V\3V\3V\3") - buf.write(u"V\3V\3V\3W\3W\3W\3W\3W\3W\3W\3W\3W\3W\3W\3W\3W\3W\3W") - buf.write(u"\3X\3X\3X\3X\3X\3X\3X\3X\3X\3X\3X\3X\3X\3X\3X\3X\3X\3") - buf.write(u"X\3Y\3Y\3Y\3Y\3Y\3Y\3Y\3Y\3Y\3Y\3Y\3Y\3Z\3Z\3Z\3Z\3Z") - buf.write(u"\3Z\3Z\3Z\3[\3[\3[\3[\3[\3[\3[\3[\3[\3[\3[\3[\3[\3[\3") - buf.write(u"[\3[\3[\3[\3[\3\\\3\\\3\\\3\\\3\\\3\\\3\\\3\\\3\\\3\\") - buf.write(u"\3\\\3]\3]\3]\3]\3]\3]\3]\3]\3]\3]\3]\3]\3]\3]\3]\3]") - buf.write(u"\3]\3]\3]\3]\3^\3^\3^\3^\3^\3^\3^\3^\3^\3^\3^\3^\3_\3") - buf.write(u"_\3_\3_\3_\3_\3_\3_\3_\3_\3`\3`\3`\3`\3`\3`\3`\3`\3`") - buf.write(u"\3`\3`\3`\3a\3a\3a\3a\3a\3a\3a\3a\3a\3a\3a\3a\3a\3a\3") - buf.write(u"a\3a\3a\3b\3b\3b\3b\3b\3b\3b\3c\3c\3c\3c\3c\3c\3c\3c") - buf.write(u"\3c\3c\3c\3c\3d\3d\3d\3d\3d\3d\3d\3d\3d\3e\3e\3e\3e\3") - buf.write(u"e\3e\3e\3e\3e\3e\3f\3f\3f\3f\3f\3f\3f\3f\3f\3f\3f\3f") - buf.write(u"\3f\3f\3f\3f\3f\3f\3f\3f\3f\3f\3f\3f\3f\3f\3f\3g\3g\3") - buf.write(u"g\3g\3g\3g\3g\3g\3g\3g\3g\3g\3g\3g\3h\3h\3h\3h\3h\3h") - buf.write(u"\3h\3h\3i\3i\3i\3i\3i\3i\3i\3i\3i\3i\3i\3i\3i\3i\3i\3") - buf.write(u"i\3i\3j\3j\3j\3j\3j\3j\3j\3j\3j\3j\3j\3j\3j\3k\3k\3k") - buf.write(u"\3k\3k\3k\3k\3k\3k\3k\3k\3l\3l\3l\3l\3l\3l\3l\3l\3l\3") - buf.write(u"l\3l\3l\3l\3l\3l\3l\3l\3l\3l\3l\3m\3m\3m\3m\3m\3m\3m") - buf.write(u"\3m\3m\3m\3m\3m\3m\3m\3m\3m\3m\3m\3m\3m\3m\3m\3m\3m\3") - buf.write(u"m\3m\3m\3m\3m\3m\3n\3n\3n\3n\3n\3n\3n\3n\3n\3n\3n\3n") - buf.write(u"\3n\3n\3n\3n\3n\3n\3n\3n\3n\3n\3n\3n\3n\3o\3o\3o\3o\3") - buf.write(u"o\3o\3o\3o\3o\3p\3p\3p\3p\3p\3p\3p\3p\3p\3p\3p\3p\3p") - buf.write(u"\3p\3p\3p\3p\3p\3p\3q\3q\3q\3q\3q\3q\3q\3q\3q\3q\3q\3") - buf.write(u"q\3q\3q\3q\3r\3r\3r\3r\3r\3r\3r\3r\3r\3r\3r\3r\3r\3r") - buf.write(u"\3r\3r\3r\3s\3s\3s\3s\3s\3s\3s\3s\3s\3s\3s\3s\3t\3t\3") - buf.write(u"t\3t\3t\3t\3t\3t\3u\3u\3u\3u\3v\3v\3v\3v\3v\3v\3v\3v") - buf.write(u"\3w\3w\3w\3w\3w\3w\3w\3w\3w\3w\3w\3x\6x\u082c\nx\rx\16") - buf.write(u"x\u082d\3y\3y\3z\3z\3{\3{\3|\3|\3}\3}\3~\3~\3\177\3\177") - buf.write(u"\3\177\3\177\3\177\3\177\3\177\3\177\3\177\3\177\3\177") - buf.write(u"\3\177\3\177\3\177\3\177\3\177\3\177\3\177\3\177\3\177") - buf.write(u"\3\177\3\177\3\177\3\177\3\177\3\177\3\177\3\177\3\177") - buf.write(u"\3\177\5\177\u085a\n\177\3\177\6\177\u085d\n\177\r\177") - buf.write(u"\16\177\u085e\3\177\3\177\3\177\3\177\3\177\3\177\3\177") - buf.write(u"\3\177\3\177\3\177\3\177\3\177\3\177\3\177\3\177\3\177") - buf.write(u"\3\177\3\177\3\177\3\177\3\177\3\177\3\177\3\177\3\177") - buf.write(u"\5\177\u087a\n\177\3\u0080\3\u0080\6\u0080\u087e\n\u0080") - buf.write(u"\r\u0080\16\u0080\u087f\3\u0080\3\u0080\3\u0080\3\u0080") - buf.write(u"\5\u0080\u0886\n\u0080\3\u0081\3\u0081\3\u0081\3\u0081") - buf.write(u"\3\u0081\6\u0081\u088d\n\u0081\r\u0081\16\u0081\u088e") - buf.write(u"\3\u0082\3\u0082\3\u0082\3\u0083\3\u0083\3\u0084\3\u0084") - buf.write(u"\3\u0084\5\u0084\u0899\n\u0084\3\u0085\6\u0085\u089c") - buf.write(u"\n\u0085\r\u0085\16\u0085\u089d\3\u0085\3\u0085\3\u0086") - buf.write(u"\3\u0086\3\u0086\3\u0086\7\u0086\u08a6\n\u0086\f\u0086") - buf.write(u"\16\u0086\u08a9\13\u0086\3\u0086\3\u0086\3\u0086\3\u0086") - buf.write(u"\3\u0086\3\u0087\3\u0087\3\u0087\3\u0087\7\u0087\u08b4") - buf.write(u"\n\u0087\f\u0087\16\u0087\u08b7\13\u0087\3\u0087\3\u0087") - buf.write(u"\3\u08a7\2\u0088\3\3\5\4\7\5\t\6\13\7\r\b\17\t\21\n\23") - buf.write(u"\13\25\f\27\r\31\16\33\17\35\20\37\21!\22#\23%\24\'\25") - buf.write(u")\26+\27-\30/\31\61\32\63\33\65\34\67\359\36;\37= ?!") - buf.write(u"A\"C#E$G%I&K\'M(O)Q*S+U,W-Y.[/]\60_\61a\62c\63e\64g\65") - buf.write(u"i\66k\67m8o9q:s;u{?}@\177A\u0081B\u0083C\u0085D") - buf.write(u"\u0087E\u0089F\u008bG\u008dH\u008fI\u0091J\u0093K\u0095") - buf.write(u"L\u0097M\u0099N\u009bO\u009dP\u009fQ\u00a1R\u00a3S\u00a5") - buf.write(u"T\u00a7U\u00a9V\u00abW\u00adX\u00afY\u00b1Z\u00b3[\u00b5") - buf.write(u"\\\u00b7]\u00b9^\u00bb_\u00bd`\u00bfa\u00c1b\u00c3c\u00c5") - buf.write(u"d\u00c7e\u00c9f\u00cbg\u00cdh\u00cfi\u00d1j\u00d3k\u00d5") - buf.write(u"l\u00d7m\u00d9n\u00dbo\u00ddp\u00dfq\u00e1r\u00e3s\u00e5") - buf.write(u"t\u00e7u\u00e9v\u00ebw\u00edx\u00efy\u00f1z\u00f3{\u00f5") - buf.write(u"|\u00f7}\u00f9~\u00fb\177\u00fd\u0080\u00ff\u0081\u0101") - buf.write(u"\u0082\u0103\u0083\u0105\2\u0107\2\u0109\u0084\u010b") - buf.write(u"\u0085\u010d\u0086\3\2\b\5\2\62;C\\c|\4\2\62;C\\\5\2") - buf.write(u"\62;CHch\3\2$$\5\2\13\f\16\17\"\"\4\2\f\f\17\17\u08c7") - buf.write(u"\2\3\3\2\2\2\2\5\3\2\2\2\2\7\3\2\2\2\2\t\3\2\2\2\2\13") - buf.write(u"\3\2\2\2\2\r\3\2\2\2\2\17\3\2\2\2\2\21\3\2\2\2\2\23\3") - buf.write(u"\2\2\2\2\25\3\2\2\2\2\27\3\2\2\2\2\31\3\2\2\2\2\33\3") - buf.write(u"\2\2\2\2\35\3\2\2\2\2\37\3\2\2\2\2!\3\2\2\2\2#\3\2\2") - buf.write(u"\2\2%\3\2\2\2\2\'\3\2\2\2\2)\3\2\2\2\2+\3\2\2\2\2-\3") - buf.write(u"\2\2\2\2/\3\2\2\2\2\61\3\2\2\2\2\63\3\2\2\2\2\65\3\2") - buf.write(u"\2\2\2\67\3\2\2\2\29\3\2\2\2\2;\3\2\2\2\2=\3\2\2\2\2") - buf.write(u"?\3\2\2\2\2A\3\2\2\2\2C\3\2\2\2\2E\3\2\2\2\2G\3\2\2\2") - buf.write(u"\2I\3\2\2\2\2K\3\2\2\2\2M\3\2\2\2\2O\3\2\2\2\2Q\3\2\2") - buf.write(u"\2\2S\3\2\2\2\2U\3\2\2\2\2W\3\2\2\2\2Y\3\2\2\2\2[\3\2") - buf.write(u"\2\2\2]\3\2\2\2\2_\3\2\2\2\2a\3\2\2\2\2c\3\2\2\2\2e\3") - buf.write(u"\2\2\2\2g\3\2\2\2\2i\3\2\2\2\2k\3\2\2\2\2m\3\2\2\2\2") - buf.write(u"o\3\2\2\2\2q\3\2\2\2\2s\3\2\2\2\2u\3\2\2\2\2w\3\2\2\2") - buf.write(u"\2y\3\2\2\2\2{\3\2\2\2\2}\3\2\2\2\2\177\3\2\2\2\2\u0081") - buf.write(u"\3\2\2\2\2\u0083\3\2\2\2\2\u0085\3\2\2\2\2\u0087\3\2") - buf.write(u"\2\2\2\u0089\3\2\2\2\2\u008b\3\2\2\2\2\u008d\3\2\2\2") - buf.write(u"\2\u008f\3\2\2\2\2\u0091\3\2\2\2\2\u0093\3\2\2\2\2\u0095") - buf.write(u"\3\2\2\2\2\u0097\3\2\2\2\2\u0099\3\2\2\2\2\u009b\3\2") - buf.write(u"\2\2\2\u009d\3\2\2\2\2\u009f\3\2\2\2\2\u00a1\3\2\2\2") - buf.write(u"\2\u00a3\3\2\2\2\2\u00a5\3\2\2\2\2\u00a7\3\2\2\2\2\u00a9") - buf.write(u"\3\2\2\2\2\u00ab\3\2\2\2\2\u00ad\3\2\2\2\2\u00af\3\2") - buf.write(u"\2\2\2\u00b1\3\2\2\2\2\u00b3\3\2\2\2\2\u00b5\3\2\2\2") - buf.write(u"\2\u00b7\3\2\2\2\2\u00b9\3\2\2\2\2\u00bb\3\2\2\2\2\u00bd") - buf.write(u"\3\2\2\2\2\u00bf\3\2\2\2\2\u00c1\3\2\2\2\2\u00c3\3\2") - buf.write(u"\2\2\2\u00c5\3\2\2\2\2\u00c7\3\2\2\2\2\u00c9\3\2\2\2") - buf.write(u"\2\u00cb\3\2\2\2\2\u00cd\3\2\2\2\2\u00cf\3\2\2\2\2\u00d1") - buf.write(u"\3\2\2\2\2\u00d3\3\2\2\2\2\u00d5\3\2\2\2\2\u00d7\3\2") - buf.write(u"\2\2\2\u00d9\3\2\2\2\2\u00db\3\2\2\2\2\u00dd\3\2\2\2") - buf.write(u"\2\u00df\3\2\2\2\2\u00e1\3\2\2\2\2\u00e3\3\2\2\2\2\u00e5") - buf.write(u"\3\2\2\2\2\u00e7\3\2\2\2\2\u00e9\3\2\2\2\2\u00eb\3\2") - buf.write(u"\2\2\2\u00ed\3\2\2\2\2\u00ef\3\2\2\2\2\u00f1\3\2\2\2") - buf.write(u"\2\u00f3\3\2\2\2\2\u00f5\3\2\2\2\2\u00f7\3\2\2\2\2\u00f9") - buf.write(u"\3\2\2\2\2\u00fb\3\2\2\2\2\u00fd\3\2\2\2\2\u00ff\3\2") - buf.write(u"\2\2\2\u0101\3\2\2\2\2\u0103\3\2\2\2\2\u0109\3\2\2\2") - buf.write(u"\2\u010b\3\2\2\2\2\u010d\3\2\2\2\3\u010f\3\2\2\2\5\u0111") - buf.write(u"\3\2\2\2\7\u0113\3\2\2\2\t\u0122\3\2\2\2\13\u0124\3\2") - buf.write(u"\2\2\r\u0126\3\2\2\2\17\u0134\3\2\2\2\21\u0147\3\2\2") - buf.write(u"\2\23\u0154\3\2\2\2\25\u016a\3\2\2\2\27\u0181\3\2\2\2") - buf.write(u"\31\u0192\3\2\2\2\33\u01aa\3\2\2\2\35\u01b3\3\2\2\2\37") - buf.write(u"\u01c8\3\2\2\2!\u01d8\3\2\2\2#\u01e3\3\2\2\2%\u01f5\3") - buf.write(u"\2\2\2\'\u020c\3\2\2\2)\u0225\3\2\2\2+\u023a\3\2\2\2") - buf.write(u"-\u024e\3\2\2\2/\u025e\3\2\2\2\61\u0273\3\2\2\2\63\u0287") - buf.write(u"\3\2\2\2\65\u02a5\3\2\2\2\67\u02c5\3\2\2\29\u02d4\3\2") - buf.write(u"\2\2;\u02dc\3\2\2\2=\u02e7\3\2\2\2?\u02f7\3\2\2\2A\u0301") - buf.write(u"\3\2\2\2C\u0316\3\2\2\2E\u0321\3\2\2\2G\u032e\3\2\2\2") - buf.write(u"I\u033f\3\2\2\2K\u0351\3\2\2\2M\u0360\3\2\2\2O\u036c") - buf.write(u"\3\2\2\2Q\u0375\3\2\2\2S\u037e\3\2\2\2U\u0387\3\2\2\2") - buf.write(u"W\u039a\3\2\2\2Y\u03a8\3\2\2\2[\u03b4\3\2\2\2]\u03bc") - buf.write(u"\3\2\2\2_\u03d7\3\2\2\2a\u03dc\3\2\2\2c\u03e1\3\2\2\2") - buf.write(u"e\u03ec\3\2\2\2g\u03fc\3\2\2\2i\u0402\3\2\2\2k\u0425") - buf.write(u"\3\2\2\2m\u0427\3\2\2\2o\u0429\3\2\2\2q\u042b\3\2\2\2") - buf.write(u"s\u0442\3\2\2\2u\u044e\3\2\2\2w\u0459\3\2\2\2y\u0466") - buf.write(u"\3\2\2\2{\u0472\3\2\2\2}\u0483\3\2\2\2\177\u048f\3\2") - buf.write(u"\2\2\u0081\u049a\3\2\2\2\u0083\u04bc\3\2\2\2\u0085\u04df") - buf.write(u"\3\2\2\2\u0087\u04ea\3\2\2\2\u0089\u04fd\3\2\2\2\u008b") - buf.write(u"\u0520\3\2\2\2\u008d\u0535\3\2\2\2\u008f\u0557\3\2\2") - buf.write(u"\2\u0091\u0568\3\2\2\2\u0093\u0580\3\2\2\2\u0095\u0591") - buf.write(u"\3\2\2\2\u0097\u05a2\3\2\2\2\u0099\u05b8\3\2\2\2\u009b") - buf.write(u"\u05c5\3\2\2\2\u009d\u05d5\3\2\2\2\u009f\u05e7\3\2\2") - buf.write(u"\2\u00a1\u05fc\3\2\2\2\u00a3\u060e\3\2\2\2\u00a5\u0625") - buf.write(u"\3\2\2\2\u00a7\u0632\3\2\2\2\u00a9\u063c\3\2\2\2\u00ab") - buf.write(u"\u064c\3\2\2\2\u00ad\u065e\3\2\2\2\u00af\u066d\3\2\2") - buf.write(u"\2\u00b1\u067f\3\2\2\2\u00b3\u068b\3\2\2\2\u00b5\u0693") - buf.write(u"\3\2\2\2\u00b7\u06a6\3\2\2\2\u00b9\u06b1\3\2\2\2\u00bb") - buf.write(u"\u06c5\3\2\2\2\u00bd\u06d1\3\2\2\2\u00bf\u06db\3\2\2") - buf.write(u"\2\u00c1\u06e7\3\2\2\2\u00c3\u06f8\3\2\2\2\u00c5\u06ff") - buf.write(u"\3\2\2\2\u00c7\u070b\3\2\2\2\u00c9\u0714\3\2\2\2\u00cb") - buf.write(u"\u071e\3\2\2\2\u00cd\u0739\3\2\2\2\u00cf\u0747\3\2\2") - buf.write(u"\2\u00d1\u074f\3\2\2\2\u00d3\u0760\3\2\2\2\u00d5\u076d") - buf.write(u"\3\2\2\2\u00d7\u0778\3\2\2\2\u00d9\u078c\3\2\2\2\u00db") - buf.write(u"\u07aa\3\2\2\2\u00dd\u07c3\3\2\2\2\u00df\u07cc\3\2\2") - buf.write(u"\2\u00e1\u07df\3\2\2\2\u00e3\u07ee\3\2\2\2\u00e5\u07ff") - buf.write(u"\3\2\2\2\u00e7\u080b\3\2\2\2\u00e9\u0813\3\2\2\2\u00eb") - buf.write(u"\u0817\3\2\2\2\u00ed\u081f\3\2\2\2\u00ef\u082b\3\2\2") - buf.write(u"\2\u00f1\u082f\3\2\2\2\u00f3\u0831\3\2\2\2\u00f5\u0833") - buf.write(u"\3\2\2\2\u00f7\u0835\3\2\2\2\u00f9\u0837\3\2\2\2\u00fb") - buf.write(u"\u0839\3\2\2\2\u00fd\u0879\3\2\2\2\u00ff\u0885\3\2\2") - buf.write(u"\2\u0101\u088c\3\2\2\2\u0103\u0890\3\2\2\2\u0105\u0893") - buf.write(u"\3\2\2\2\u0107\u0898\3\2\2\2\u0109\u089b\3\2\2\2\u010b") - buf.write(u"\u08a1\3\2\2\2\u010d\u08af\3\2\2\2\u010f\u0110\7}\2\2") - buf.write(u"\u0110\4\3\2\2\2\u0111\u0112\7\177\2\2\u0112\6\3\2\2") - buf.write(u"\2\u0113\u0114\7c\2\2\u0114\u0115\7t\2\2\u0115\u0116") - buf.write(u"\7e\2\2\u0116\u0117\7j\2\2\u0117\u0118\7k\2\2\u0118\u0119") - buf.write(u"\7x\2\2\u0119\u011a\7g\2\2\u011a\u011b\7X\2\2\u011b\u011c") - buf.write(u"\7g\2\2\u011c\u011d\7t\2\2\u011d\u011e\7u\2\2\u011e\u011f") - buf.write(u"\7k\2\2\u011f\u0120\7q\2\2\u0120\u0121\7p\2\2\u0121\b") - buf.write(u"\3\2\2\2\u0122\u0123\7?\2\2\u0123\n\3\2\2\2\u0124\u0125") - buf.write(u"\7=\2\2\u0125\f\3\2\2\2\u0126\u0127\7q\2\2\u0127\u0128") - buf.write(u"\7d\2\2\u0128\u0129\7l\2\2\u0129\u012a\7g\2\2\u012a\u012b") - buf.write(u"\7e\2\2\u012b\u012c\7v\2\2\u012c\u012d\7X\2\2\u012d\u012e") - buf.write(u"\7g\2\2\u012e\u012f\7t\2\2\u012f\u0130\7u\2\2\u0130\u0131") - buf.write(u"\7k\2\2\u0131\u0132\7q\2\2\u0132\u0133\7p\2\2\u0133\16") - buf.write(u"\3\2\2\2\u0134\u0135\7R\2\2\u0135\u0136\7D\2\2\u0136") - buf.write(u"\u0137\7Z\2\2\u0137\u0138\7C\2\2\u0138\u0139\7i\2\2\u0139") - buf.write(u"\u013a\7i\2\2\u013a\u013b\7t\2\2\u013b\u013c\7g\2\2\u013c") - buf.write(u"\u013d\7i\2\2\u013d\u013e\7c\2\2\u013e\u013f\7v\2\2\u013f") - buf.write(u"\u0140\7g\2\2\u0140\u0141\7V\2\2\u0141\u0142\7c\2\2\u0142") - buf.write(u"\u0143\7t\2\2\u0143\u0144\7i\2\2\u0144\u0145\7g\2\2\u0145") - buf.write(u"\u0146\7v\2\2\u0146\20\3\2\2\2\u0147\u0148\7R\2\2\u0148") - buf.write(u"\u0149\7D\2\2\u0149\u014a\7Z\2\2\u014a\u014b\7D\2\2\u014b") - buf.write(u"\u014c\7w\2\2\u014c\u014d\7k\2\2\u014d\u014e\7n\2\2\u014e") - buf.write(u"\u014f\7f\2\2\u014f\u0150\7H\2\2\u0150\u0151\7k\2\2\u0151") - buf.write(u"\u0152\7n\2\2\u0152\u0153\7g\2\2\u0153\22\3\2\2\2\u0154") - buf.write(u"\u0155\7R\2\2\u0155\u0156\7D\2\2\u0156\u0157\7Z\2\2\u0157") - buf.write(u"\u0158\7E\2\2\u0158\u0159\7q\2\2\u0159\u015a\7p\2\2\u015a") - buf.write(u"\u015b\7v\2\2\u015b\u015c\7c\2\2\u015c\u015d\7k\2\2\u015d") - buf.write(u"\u015e\7p\2\2\u015e\u015f\7g\2\2\u015f\u0160\7t\2\2\u0160") - buf.write(u"\u0161\7K\2\2\u0161\u0162\7v\2\2\u0162\u0163\7g\2\2\u0163") - buf.write(u"\u0164\7o\2\2\u0164\u0165\7R\2\2\u0165\u0166\7t\2\2\u0166") - buf.write(u"\u0167\7q\2\2\u0167\u0168\7z\2\2\u0168\u0169\7{\2\2\u0169") - buf.write(u"\24\3\2\2\2\u016a\u016b\7R\2\2\u016b\u016c\7D\2\2\u016c") - buf.write(u"\u016d\7Z\2\2\u016d\u016e\7E\2\2\u016e\u016f\7q\2\2\u016f") - buf.write(u"\u0170\7r\2\2\u0170\u0171\7{\2\2\u0171\u0172\7H\2\2\u0172") - buf.write(u"\u0173\7k\2\2\u0173\u0174\7n\2\2\u0174\u0175\7g\2\2\u0175") - buf.write(u"\u0176\7u\2\2\u0176\u0177\7D\2\2\u0177\u0178\7w\2\2\u0178") - buf.write(u"\u0179\7k\2\2\u0179\u017a\7n\2\2\u017a\u017b\7f\2\2\u017b") - buf.write(u"\u017c\7R\2\2\u017c\u017d\7j\2\2\u017d\u017e\7c\2\2\u017e") - buf.write(u"\u017f\7u\2\2\u017f\u0180\7g\2\2\u0180\26\3\2\2\2\u0181") - buf.write(u"\u0182\7R\2\2\u0182\u0183\7D\2\2\u0183\u0184\7Z\2\2\u0184") - buf.write(u"\u0185\7H\2\2\u0185\u0186\7k\2\2\u0186\u0187\7n\2\2\u0187") - buf.write(u"\u0188\7g\2\2\u0188\u0189\7T\2\2\u0189\u018a\7g\2\2\u018a") - buf.write(u"\u018b\7h\2\2\u018b\u018c\7g\2\2\u018c\u018d\7t\2\2\u018d") - buf.write(u"\u018e\7g\2\2\u018e\u018f\7p\2\2\u018f\u0190\7e\2\2\u0190") - buf.write(u"\u0191\7g\2\2\u0191\30\3\2\2\2\u0192\u0193\7R\2\2\u0193") - buf.write(u"\u0194\7D\2\2\u0194\u0195\7Z\2\2\u0195\u0196\7H\2\2\u0196") - buf.write(u"\u0197\7t\2\2\u0197\u0198\7c\2\2\u0198\u0199\7o\2\2\u0199") - buf.write(u"\u019a\7g\2\2\u019a\u019b\7y\2\2\u019b\u019c\7q\2\2\u019c") - buf.write(u"\u019d\7t\2\2\u019d\u019e\7m\2\2\u019e\u019f\7u\2\2\u019f") - buf.write(u"\u01a0\7D\2\2\u01a0\u01a1\7w\2\2\u01a1\u01a2\7k\2\2\u01a2") - buf.write(u"\u01a3\7n\2\2\u01a3\u01a4\7f\2\2\u01a4\u01a5\7R\2\2\u01a5") - buf.write(u"\u01a6\7j\2\2\u01a6\u01a7\7c\2\2\u01a7\u01a8\7u\2\2\u01a8") - buf.write(u"\u01a9\7g\2\2\u01a9\32\3\2\2\2\u01aa\u01ab\7R\2\2\u01ab") - buf.write(u"\u01ac\7D\2\2\u01ac\u01ad\7Z\2\2\u01ad\u01ae\7I\2\2\u01ae") - buf.write(u"\u01af\7t\2\2\u01af\u01b0\7q\2\2\u01b0\u01b1\7w\2\2\u01b1") - buf.write(u"\u01b2\7r\2\2\u01b2\34\3\2\2\2\u01b3\u01b4\7R\2\2\u01b4") - buf.write(u"\u01b5\7D\2\2\u01b5\u01b6\7Z\2\2\u01b6\u01b7\7J\2\2\u01b7") - buf.write(u"\u01b8\7g\2\2\u01b8\u01b9\7c\2\2\u01b9\u01ba\7f\2\2\u01ba") - buf.write(u"\u01bb\7g\2\2\u01bb\u01bc\7t\2\2\u01bc\u01bd\7u\2\2\u01bd") - buf.write(u"\u01be\7D\2\2\u01be\u01bf\7w\2\2\u01bf\u01c0\7k\2\2\u01c0") - buf.write(u"\u01c1\7n\2\2\u01c1\u01c2\7f\2\2\u01c2\u01c3\7R\2\2\u01c3") - buf.write(u"\u01c4\7j\2\2\u01c4\u01c5\7c\2\2\u01c5\u01c6\7u\2\2\u01c6") - buf.write(u"\u01c7\7g\2\2\u01c7\36\3\2\2\2\u01c8\u01c9\7R\2\2\u01c9") - buf.write(u"\u01ca\7D\2\2\u01ca\u01cb\7Z\2\2\u01cb\u01cc\7P\2\2\u01cc") - buf.write(u"\u01cd\7c\2\2\u01cd\u01ce\7v\2\2\u01ce\u01cf\7k\2\2\u01cf") - buf.write(u"\u01d0\7x\2\2\u01d0\u01d1\7g\2\2\u01d1\u01d2\7V\2\2\u01d2") - buf.write(u"\u01d3\7c\2\2\u01d3\u01d4\7t\2\2\u01d4\u01d5\7i\2\2\u01d5") - buf.write(u"\u01d6\7g\2\2\u01d6\u01d7\7v\2\2\u01d7 \3\2\2\2\u01d8") - buf.write(u"\u01d9\7R\2\2\u01d9\u01da\7D\2\2\u01da\u01db\7Z\2\2\u01db") - buf.write(u"\u01dc\7R\2\2\u01dc\u01dd\7t\2\2\u01dd\u01de\7q\2\2\u01de") - buf.write(u"\u01df\7l\2\2\u01df\u01e0\7g\2\2\u01e0\u01e1\7e\2\2\u01e1") - buf.write(u"\u01e2\7v\2\2\u01e2\"\3\2\2\2\u01e3\u01e4\7R\2\2\u01e4") - buf.write(u"\u01e5\7D\2\2\u01e5\u01e6\7Z\2\2\u01e6\u01e7\7T\2\2\u01e7") - buf.write(u"\u01e8\7g\2\2\u01e8\u01e9\7h\2\2\u01e9\u01ea\7g\2\2\u01ea") - buf.write(u"\u01eb\7t\2\2\u01eb\u01ec\7g\2\2\u01ec\u01ed\7p\2\2\u01ed") - buf.write(u"\u01ee\7e\2\2\u01ee\u01ef\7g\2\2\u01ef\u01f0\7R\2\2\u01f0") - buf.write(u"\u01f1\7t\2\2\u01f1\u01f2\7q\2\2\u01f2\u01f3\7z\2\2\u01f3") - buf.write(u"\u01f4\7{\2\2\u01f4$\3\2\2\2\u01f5\u01f6\7R\2\2\u01f6") - buf.write(u"\u01f7\7D\2\2\u01f7\u01f8\7Z\2\2\u01f8\u01f9\7T\2\2\u01f9") - buf.write(u"\u01fa\7g\2\2\u01fa\u01fb\7u\2\2\u01fb\u01fc\7q\2\2\u01fc") - buf.write(u"\u01fd\7w\2\2\u01fd\u01fe\7t\2\2\u01fe\u01ff\7e\2\2\u01ff") - buf.write(u"\u0200\7g\2\2\u0200\u0201\7u\2\2\u0201\u0202\7D\2\2\u0202") - buf.write(u"\u0203\7w\2\2\u0203\u0204\7k\2\2\u0204\u0205\7n\2\2\u0205") - buf.write(u"\u0206\7f\2\2\u0206\u0207\7R\2\2\u0207\u0208\7j\2\2\u0208") - buf.write(u"\u0209\7c\2\2\u0209\u020a\7u\2\2\u020a\u020b\7g\2\2\u020b") - buf.write(u"&\3\2\2\2\u020c\u020d\7R\2\2\u020d\u020e\7D\2\2\u020e") - buf.write(u"\u020f\7Z\2\2\u020f\u0210\7U\2\2\u0210\u0211\7j\2\2\u0211") - buf.write(u"\u0212\7g\2\2\u0212\u0213\7n\2\2\u0213\u0214\7n\2\2\u0214") - buf.write(u"\u0215\7U\2\2\u0215\u0216\7e\2\2\u0216\u0217\7t\2\2\u0217") - buf.write(u"\u0218\7k\2\2\u0218\u0219\7r\2\2\u0219\u021a\7v\2\2\u021a") - buf.write(u"\u021b\7D\2\2\u021b\u021c\7w\2\2\u021c\u021d\7k\2\2\u021d") - buf.write(u"\u021e\7n\2\2\u021e\u021f\7f\2\2\u021f\u0220\7R\2\2\u0220") - buf.write(u"\u0221\7j\2\2\u0221\u0222\7c\2\2\u0222\u0223\7u\2\2\u0223") - buf.write(u"\u0224\7g\2\2\u0224(\3\2\2\2\u0225\u0226\7R\2\2\u0226") - buf.write(u"\u0227\7D\2\2\u0227\u0228\7Z\2\2\u0228\u0229\7U\2\2\u0229") - buf.write(u"\u022a\7q\2\2\u022a\u022b\7w\2\2\u022b\u022c\7t\2\2\u022c") - buf.write(u"\u022d\7e\2\2\u022d\u022e\7g\2\2\u022e\u022f\7u\2\2\u022f") - buf.write(u"\u0230\7D\2\2\u0230\u0231\7w\2\2\u0231\u0232\7k\2\2\u0232") - buf.write(u"\u0233\7n\2\2\u0233\u0234\7f\2\2\u0234\u0235\7R\2\2\u0235") - buf.write(u"\u0236\7j\2\2\u0236\u0237\7c\2\2\u0237\u0238\7u\2\2\u0238") - buf.write(u"\u0239\7g\2\2\u0239*\3\2\2\2\u023a\u023b\7R\2\2\u023b") - buf.write(u"\u023c\7D\2\2\u023c\u023d\7Z\2\2\u023d\u023e\7V\2\2\u023e") - buf.write(u"\u023f\7c\2\2\u023f\u0240\7t\2\2\u0240\u0241\7i\2\2\u0241") - buf.write(u"\u0242\7g\2\2\u0242\u0243\7v\2\2\u0243\u0244\7F\2\2\u0244") - buf.write(u"\u0245\7g\2\2\u0245\u0246\7r\2\2\u0246\u0247\7g\2\2\u0247") - buf.write(u"\u0248\7p\2\2\u0248\u0249\7f\2\2\u0249\u024a\7g\2\2\u024a") - buf.write(u"\u024b\7p\2\2\u024b\u024c\7e\2\2\u024c\u024d\7{\2\2\u024d") - buf.write(u",\3\2\2\2\u024e\u024f\7R\2\2\u024f\u0250\7D\2\2\u0250") - buf.write(u"\u0251\7Z\2\2\u0251\u0252\7X\2\2\u0252\u0253\7c\2\2\u0253") - buf.write(u"\u0254\7t\2\2\u0254\u0255\7k\2\2\u0255\u0256\7c\2\2\u0256") - buf.write(u"\u0257\7p\2\2\u0257\u0258\7v\2\2\u0258\u0259\7I\2\2\u0259") - buf.write(u"\u025a\7t\2\2\u025a\u025b\7q\2\2\u025b\u025c\7w\2\2\u025c") - buf.write(u"\u025d\7r\2\2\u025d.\3\2\2\2\u025e\u025f\7Z\2\2\u025f") - buf.write(u"\u0260\7E\2\2\u0260\u0261\7D\2\2\u0261\u0262\7w\2\2\u0262") - buf.write(u"\u0263\7k\2\2\u0263\u0264\7n\2\2\u0264\u0265\7f\2\2\u0265") - buf.write(u"\u0266\7E\2\2\u0266\u0267\7q\2\2\u0267\u0268\7p\2\2\u0268") - buf.write(u"\u0269\7h\2\2\u0269\u026a\7k\2\2\u026a\u026b\7i\2\2\u026b") - buf.write(u"\u026c\7w\2\2\u026c\u026d\7t\2\2\u026d\u026e\7c\2\2\u026e") - buf.write(u"\u026f\7v\2\2\u026f\u0270\7k\2\2\u0270\u0271\7q\2\2\u0271") - buf.write(u"\u0272\7p\2\2\u0272\60\3\2\2\2\u0273\u0274\7Z\2\2\u0274") - buf.write(u"\u0275\7E\2\2\u0275\u0276\7E\2\2\u0276\u0277\7q\2\2\u0277") - buf.write(u"\u0278\7p\2\2\u0278\u0279\7h\2\2\u0279\u027a\7k\2\2\u027a") - buf.write(u"\u027b\7i\2\2\u027b\u027c\7w\2\2\u027c\u027d\7t\2\2\u027d") - buf.write(u"\u027e\7c\2\2\u027e\u027f\7v\2\2\u027f\u0280\7k\2\2\u0280") - buf.write(u"\u0281\7q\2\2\u0281\u0282\7p\2\2\u0282\u0283\7N\2\2\u0283") - buf.write(u"\u0284\7k\2\2\u0284\u0285\7u\2\2\u0285\u0286\7v\2\2\u0286") - buf.write(u"\62\3\2\2\2\u0287\u0288\7Z\2\2\u0288\u0289\7E\2\2\u0289") - buf.write(u"\u028a\7T\2\2\u028a\u028b\7g\2\2\u028b\u028c\7o\2\2\u028c") - buf.write(u"\u028d\7q\2\2\u028d\u028e\7v\2\2\u028e\u028f\7g\2\2\u028f") - buf.write(u"\u0290\7U\2\2\u0290\u0291\7y\2\2\u0291\u0292\7k\2\2\u0292") - buf.write(u"\u0293\7h\2\2\u0293\u0294\7v\2\2\u0294\u0295\7R\2\2\u0295") - buf.write(u"\u0296\7c\2\2\u0296\u0297\7e\2\2\u0297\u0298\7m\2\2\u0298") - buf.write(u"\u0299\7c\2\2\u0299\u029a\7i\2\2\u029a\u029b\7g\2\2\u029b") - buf.write(u"\u029c\7T\2\2\u029c\u029d\7g\2\2\u029d\u029e\7h\2\2\u029e") - buf.write(u"\u029f\7g\2\2\u029f\u02a0\7t\2\2\u02a0\u02a1\7g\2\2\u02a1") - buf.write(u"\u02a2\7p\2\2\u02a2\u02a3\7e\2\2\u02a3\u02a4\7g\2\2\u02a4") - buf.write(u"\64\3\2\2\2\u02a5\u02a6\7Z\2\2\u02a6\u02a7\7E\2\2\u02a7") - buf.write(u"\u02a8\7U\2\2\u02a8\u02a9\7y\2\2\u02a9\u02aa\7k\2\2\u02aa") - buf.write(u"\u02ab\7h\2\2\u02ab\u02ac\7v\2\2\u02ac\u02ad\7R\2\2\u02ad") - buf.write(u"\u02ae\7c\2\2\u02ae\u02af\7e\2\2\u02af\u02b0\7m\2\2\u02b0") - buf.write(u"\u02b1\7c\2\2\u02b1\u02b2\7i\2\2\u02b2\u02b3\7g\2\2\u02b3") - buf.write(u"\u02b4\7R\2\2\u02b4\u02b5\7t\2\2\u02b5\u02b6\7q\2\2\u02b6") - buf.write(u"\u02b7\7f\2\2\u02b7\u02b8\7w\2\2\u02b8\u02b9\7e\2\2\u02b9") - buf.write(u"\u02ba\7v\2\2\u02ba\u02bb\7F\2\2\u02bb\u02bc\7g\2\2\u02bc") - buf.write(u"\u02bd\7r\2\2\u02bd\u02be\7g\2\2\u02be\u02bf\7p\2\2\u02bf") - buf.write(u"\u02c0\7f\2\2\u02c0\u02c1\7g\2\2\u02c1\u02c2\7p\2\2\u02c2") - buf.write(u"\u02c3\7e\2\2\u02c3\u02c4\7{\2\2\u02c4\66\3\2\2\2\u02c5") - buf.write(u"\u02c6\7Z\2\2\u02c6\u02c7\7E\2\2\u02c7\u02c8\7X\2\2\u02c8") - buf.write(u"\u02c9\7g\2\2\u02c9\u02ca\7t\2\2\u02ca\u02cb\7u\2\2\u02cb") - buf.write(u"\u02cc\7k\2\2\u02cc\u02cd\7q\2\2\u02cd\u02ce\7p\2\2\u02ce") - buf.write(u"\u02cf\7I\2\2\u02cf\u02d0\7t\2\2\u02d0\u02d1\7q\2\2\u02d1") - buf.write(u"\u02d2\7w\2\2\u02d2\u02d3\7r\2\2\u02d38\3\2\2\2\u02d4") - buf.write(u"\u02d5\7h\2\2\u02d5\u02d6\7k\2\2\u02d6\u02d7\7n\2\2\u02d7") - buf.write(u"\u02d8\7g\2\2\u02d8\u02d9\7T\2\2\u02d9\u02da\7g\2\2\u02da") - buf.write(u"\u02db\7h\2\2\u02db:\3\2\2\2\u02dc\u02dd\7r\2\2\u02dd") - buf.write(u"\u02de\7t\2\2\u02de\u02df\7q\2\2\u02df\u02e0\7f\2\2\u02e0") - buf.write(u"\u02e1\7w\2\2\u02e1\u02e2\7e\2\2\u02e2\u02e3\7v\2\2\u02e3") - buf.write(u"\u02e4\7T\2\2\u02e4\u02e5\7g\2\2\u02e5\u02e6\7h\2\2\u02e6") - buf.write(u"<\3\2\2\2\u02e7\u02e8\7e\2\2\u02e8\u02e9\7q\2\2\u02e9") - buf.write(u"\u02ea\7p\2\2\u02ea\u02eb\7v\2\2\u02eb\u02ec\7c\2\2\u02ec") - buf.write(u"\u02ed\7k\2\2\u02ed\u02ee\7p\2\2\u02ee\u02ef\7g\2\2\u02ef") - buf.write(u"\u02f0\7t\2\2\u02f0\u02f1\7R\2\2\u02f1\u02f2\7q\2\2\u02f2") - buf.write(u"\u02f3\7t\2\2\u02f3\u02f4\7v\2\2\u02f4\u02f5\7c\2\2\u02f5") - buf.write(u"\u02f6\7n\2\2\u02f6>\3\2\2\2\u02f7\u02f8\7r\2\2\u02f8") - buf.write(u"\u02f9\7t\2\2\u02f9\u02fa\7q\2\2\u02fa\u02fb\7z\2\2\u02fb") - buf.write(u"\u02fc\7{\2\2\u02fc\u02fd\7V\2\2\u02fd\u02fe\7{\2\2\u02fe") - buf.write(u"\u02ff\7r\2\2\u02ff\u0300\7g\2\2\u0300@\3\2\2\2\u0301") - buf.write(u"\u0302\7t\2\2\u0302\u0303\7g\2\2\u0303\u0304\7o\2\2\u0304") - buf.write(u"\u0305\7q\2\2\u0305\u0306\7v\2\2\u0306\u0307\7g\2\2\u0307") - buf.write(u"\u0308\7I\2\2\u0308\u0309\7n\2\2\u0309\u030a\7q\2\2\u030a") - buf.write(u"\u030b\7d\2\2\u030b\u030c\7c\2\2\u030c\u030d\7n\2\2\u030d") - buf.write(u"\u030e\7K\2\2\u030e\u030f\7F\2\2\u030f\u0310\7U\2\2\u0310") - buf.write(u"\u0311\7v\2\2\u0311\u0312\7t\2\2\u0312\u0313\7k\2\2\u0313") - buf.write(u"\u0314\7p\2\2\u0314\u0315\7i\2\2\u0315B\3\2\2\2\u0316") - buf.write(u"\u0317\7t\2\2\u0317\u0318\7g\2\2\u0318\u0319\7o\2\2\u0319") - buf.write(u"\u031a\7q\2\2\u031a\u031b\7v\2\2\u031b\u031c\7g\2\2\u031c") - buf.write(u"\u031d\7K\2\2\u031d\u031e\7p\2\2\u031e\u031f\7h\2\2\u031f") - buf.write(u"\u0320\7q\2\2\u0320D\3\2\2\2\u0321\u0322\7h\2\2\u0322") - buf.write(u"\u0323\7k\2\2\u0323\u0324\7n\2\2\u0324\u0325\7g\2\2\u0325") - buf.write(u"\u0326\7G\2\2\u0326\u0327\7p\2\2\u0327\u0328\7e\2\2\u0328") - buf.write(u"\u0329\7q\2\2\u0329\u032a\7f\2\2\u032a\u032b\7k\2\2\u032b") - buf.write(u"\u032c\7p\2\2\u032c\u032d\7i\2\2\u032dF\3\2\2\2\u032e") - buf.write(u"\u032f\7g\2\2\u032f\u0330\7z\2\2\u0330\u0331\7r\2\2\u0331") - buf.write(u"\u0332\7n\2\2\u0332\u0333\7k\2\2\u0333\u0334\7e\2\2\u0334") - buf.write(u"\u0335\7k\2\2\u0335\u0336\7v\2\2\u0336\u0337\7H\2\2\u0337") - buf.write(u"\u0338\7k\2\2\u0338\u0339\7n\2\2\u0339\u033a\7g\2\2\u033a") - buf.write(u"\u033b\7V\2\2\u033b\u033c\7{\2\2\u033c\u033d\7r\2\2\u033d") - buf.write(u"\u033e\7g\2\2\u033eH\3\2\2\2\u033f\u0340\7n\2\2\u0340") - buf.write(u"\u0341\7c\2\2\u0341\u0342\7u\2\2\u0342\u0343\7v\2\2\u0343") - buf.write(u"\u0344\7M\2\2\u0344\u0345\7p\2\2\u0345\u0346\7q\2\2\u0346") - buf.write(u"\u0347\7y\2\2\u0347\u0348\7p\2\2\u0348\u0349\7H\2\2\u0349") - buf.write(u"\u034a\7k\2\2\u034a\u034b\7n\2\2\u034b\u034c\7g\2\2\u034c") - buf.write(u"\u034d\7V\2\2\u034d\u034e\7{\2\2\u034e\u034f\7r\2\2\u034f") - buf.write(u"\u0350\7g\2\2\u0350J\3\2\2\2\u0351\u0352\7k\2\2\u0352") - buf.write(u"\u0353\7p\2\2\u0353\u0354\7e\2\2\u0354\u0355\7n\2\2\u0355") - buf.write(u"\u0356\7w\2\2\u0356\u0357\7f\2\2\u0357\u0358\7g\2\2\u0358") - buf.write(u"\u0359\7K\2\2\u0359\u035a\7p\2\2\u035a\u035b\7K\2\2\u035b") - buf.write(u"\u035c\7p\2\2\u035c\u035d\7f\2\2\u035d\u035e\7g\2\2\u035e") - buf.write(u"\u035f\7z\2\2\u035fL\3\2\2\2\u0360\u0361\7k\2\2\u0361") - buf.write(u"\u0362\7p\2\2\u0362\u0363\7f\2\2\u0363\u0364\7g\2\2\u0364") - buf.write(u"\u0365\7p\2\2\u0365\u0366\7v\2\2\u0366\u0367\7Y\2\2\u0367") - buf.write(u"\u0368\7k\2\2\u0368\u0369\7f\2\2\u0369\u036a\7v\2\2\u036a") - buf.write(u"\u036b\7j\2\2\u036bN\3\2\2\2\u036c\u036d\7v\2\2\u036d") - buf.write(u"\u036e\7c\2\2\u036e\u036f\7d\2\2\u036f\u0370\7Y\2\2\u0370") - buf.write(u"\u0371\7k\2\2\u0371\u0372\7f\2\2\u0372\u0373\7v\2\2\u0373") - buf.write(u"\u0374\7j\2\2\u0374P\3\2\2\2\u0375\u0376\7w\2\2\u0376") - buf.write(u"\u0377\7u\2\2\u0377\u0378\7g\2\2\u0378\u0379\7u\2\2\u0379") - buf.write(u"\u037a\7V\2\2\u037a\u037b\7c\2\2\u037b\u037c\7d\2\2\u037c") - buf.write(u"\u037d\7u\2\2\u037dR\3\2\2\2\u037e\u037f\7e\2\2\u037f") - buf.write(u"\u0380\7j\2\2\u0380\u0381\7k\2\2\u0381\u0382\7n\2\2\u0382") - buf.write(u"\u0383\7f\2\2\u0383\u0384\7t\2\2\u0384\u0385\7g\2\2\u0385") - buf.write(u"\u0386\7p\2\2\u0386T\3\2\2\2\u0387\u0388\7r\2\2\u0388") - buf.write(u"\u0389\7t\2\2\u0389\u038a\7q\2\2\u038a\u038b\7f\2\2\u038b") - buf.write(u"\u038c\7w\2\2\u038c\u038d\7e\2\2\u038d\u038e\7v\2\2\u038e") - buf.write(u"\u038f\7K\2\2\u038f\u0390\7p\2\2\u0390\u0391\7u\2\2\u0391") - buf.write(u"\u0392\7v\2\2\u0392\u0393\7c\2\2\u0393\u0394\7n\2\2\u0394") - buf.write(u"\u0395\7n\2\2\u0395\u0396\7R\2\2\u0396\u0397\7c\2\2\u0397") - buf.write(u"\u0398\7v\2\2\u0398\u0399\7j\2\2\u0399V\3\2\2\2\u039a") - buf.write(u"\u039b\7t\2\2\u039b\u039c\7g\2\2\u039c\u039d\7r\2\2\u039d") - buf.write(u"\u039e\7q\2\2\u039e\u039f\7u\2\2\u039f\u03a0\7k\2\2\u03a0") - buf.write(u"\u03a1\7v\2\2\u03a1\u03a2\7q\2\2\u03a2\u03a3\7t\2\2\u03a3") - buf.write(u"\u03a4\7{\2\2\u03a4\u03a5\7W\2\2\u03a5\u03a6\7T\2\2\u03a6") - buf.write(u"\u03a7\7N\2\2\u03a7X\3\2\2\2\u03a8\u03a9\7t\2\2\u03a9") - buf.write(u"\u03aa\7g\2\2\u03aa\u03ab\7s\2\2\u03ab\u03ac\7w\2\2\u03ac") - buf.write(u"\u03ad\7k\2\2\u03ad\u03ae\7t\2\2\u03ae\u03af\7g\2\2\u03af") - buf.write(u"\u03b0\7o\2\2\u03b0\u03b1\7g\2\2\u03b1\u03b2\7p\2\2\u03b2") - buf.write(u"\u03b3\7v\2\2\u03b3Z\3\2\2\2\u03b4\u03b5\7r\2\2\u03b5") - buf.write(u"\u03b6\7c\2\2\u03b6\u03b7\7e\2\2\u03b7\u03b8\7m\2\2\u03b8") - buf.write(u"\u03b9\7c\2\2\u03b9\u03ba\7i\2\2\u03ba\u03bb\7g\2\2\u03bb") - buf.write(u"\\\3\2\2\2\u03bc\u03bd\7r\2\2\u03bd\u03be\7c\2\2\u03be") - buf.write(u"\u03bf\7e\2\2\u03bf\u03c0\7m\2\2\u03c0\u03c1\7c\2\2\u03c1") - buf.write(u"\u03c2\7i\2\2\u03c2\u03c3\7g\2\2\u03c3\u03c4\7R\2\2\u03c4") - buf.write(u"\u03c5\7t\2\2\u03c5\u03c6\7q\2\2\u03c6\u03c7\7f\2\2\u03c7") - buf.write(u"\u03c8\7w\2\2\u03c8\u03c9\7e\2\2\u03c9\u03ca\7v\2\2\u03ca") - buf.write(u"\u03cb\7F\2\2\u03cb\u03cc\7g\2\2\u03cc\u03cd\7r\2\2\u03cd") - buf.write(u"\u03ce\7g\2\2\u03ce\u03cf\7p\2\2\u03cf\u03d0\7f\2\2\u03d0") - buf.write(u"\u03d1\7g\2\2\u03d1\u03d2\7p\2\2\u03d2\u03d3\7e\2\2\u03d3") - buf.write(u"\u03d4\7k\2\2\u03d4\u03d5\7g\2\2\u03d5\u03d6\7u\2\2\u03d6") - buf.write(u"^\3\2\2\2\u03d7\u03d8\7p\2\2\u03d8\u03d9\7c\2\2\u03d9") - buf.write(u"\u03da\7o\2\2\u03da\u03db\7g\2\2\u03db`\3\2\2\2\u03dc") - buf.write(u"\u03dd\7r\2\2\u03dd\u03de\7c\2\2\u03de\u03df\7v\2\2\u03df") - buf.write(u"\u03e0\7j\2\2\u03e0b\3\2\2\2\u03e1\u03e2\7u\2\2\u03e2") - buf.write(u"\u03e3\7q\2\2\u03e3\u03e4\7w\2\2\u03e4\u03e5\7t\2\2\u03e5") - buf.write(u"\u03e6\7e\2\2\u03e6\u03e7\7g\2\2\u03e7\u03e8\7V\2\2\u03e8") - buf.write(u"\u03e9\7t\2\2\u03e9\u03ea\7g\2\2\u03ea\u03eb\7g\2\2\u03eb") - buf.write(u"d\3\2\2\2\u03ec\u03ed\7d\2\2\u03ed\u03ee\7w\2\2\u03ee") - buf.write(u"\u03ef\7k\2\2\u03ef\u03f0\7n\2\2\u03f0\u03f1\7f\2\2\u03f1") - buf.write(u"\u03f2\7C\2\2\u03f2\u03f3\7e\2\2\u03f3\u03f4\7v\2\2\u03f4") - buf.write(u"\u03f5\7k\2\2\u03f5\u03f6\7q\2\2\u03f6\u03f7\7p\2\2\u03f7") - buf.write(u"\u03f8\7O\2\2\u03f8\u03f9\7c\2\2\u03f9\u03fa\7u\2\2\u03fa") - buf.write(u"\u03fb\7m\2\2\u03fbf\3\2\2\2\u03fc\u03fd\7h\2\2\u03fd") - buf.write(u"\u03fe\7k\2\2\u03fe\u03ff\7n\2\2\u03ff\u0400\7g\2\2\u0400") - buf.write(u"\u0401\7u\2\2\u0401h\3\2\2\2\u0402\u0403\7t\2\2\u0403") - buf.write(u"\u0404\7w\2\2\u0404\u0405\7p\2\2\u0405\u0406\7Q\2\2\u0406") - buf.write(u"\u0407\7p\2\2\u0407\u0408\7n\2\2\u0408\u0409\7{\2\2\u0409") - buf.write(u"\u040a\7H\2\2\u040a\u040b\7q\2\2\u040b\u040c\7t\2\2\u040c") - buf.write(u"\u040d\7F\2\2\u040d\u040e\7g\2\2\u040e\u040f\7r\2\2\u040f") - buf.write(u"\u0410\7n\2\2\u0410\u0411\7q\2\2\u0411\u0412\7{\2\2\u0412") - buf.write(u"\u0413\7o\2\2\u0413\u0414\7g\2\2\u0414\u0415\7p\2\2\u0415") - buf.write(u"\u0416\7v\2\2\u0416\u0417\7R\2\2\u0417\u0418\7q\2\2\u0418") - buf.write(u"\u0419\7u\2\2\u0419\u041a\7v\2\2\u041a\u041b\7r\2\2\u041b") - buf.write(u"\u041c\7t\2\2\u041c\u041d\7q\2\2\u041d\u041e\7e\2\2\u041e") - buf.write(u"\u041f\7g\2\2\u041f\u0420\7u\2\2\u0420\u0421\7u\2\2\u0421") - buf.write(u"\u0422\7k\2\2\u0422\u0423\7p\2\2\u0423\u0424\7i\2\2\u0424") - buf.write(u"j\3\2\2\2\u0425\u0426\7*\2\2\u0426l\3\2\2\2\u0427\u0428") - buf.write(u"\7.\2\2\u0428n\3\2\2\2\u0429\u042a\7+\2\2\u042ap\3\2") - buf.write(u"\2\2\u042b\u042c\7d\2\2\u042c\u042d\7w\2\2\u042d\u042e") - buf.write(u"\7k\2\2\u042e\u042f\7n\2\2\u042f\u0430\7f\2\2\u0430\u0431") - buf.write(u"\7E\2\2\u0431\u0432\7q\2\2\u0432\u0433\7p\2\2\u0433\u0434") - buf.write(u"\7h\2\2\u0434\u0435\7k\2\2\u0435\u0436\7i\2\2\u0436\u0437") - buf.write(u"\7w\2\2\u0437\u0438\7t\2\2\u0438\u0439\7c\2\2\u0439\u043a") - buf.write(u"\7v\2\2\u043a\u043b\7k\2\2\u043b\u043c\7q\2\2\u043c\u043d") - buf.write(u"\7p\2\2\u043d\u043e\7N\2\2\u043e\u043f\7k\2\2\u043f\u0440") - buf.write(u"\7u\2\2\u0440\u0441\7v\2\2\u0441r\3\2\2\2\u0442\u0443") - buf.write(u"\7d\2\2\u0443\u0444\7w\2\2\u0444\u0445\7k\2\2\u0445\u0446") - buf.write(u"\7n\2\2\u0446\u0447\7f\2\2\u0447\u0448\7R\2\2\u0448\u0449") - buf.write(u"\7j\2\2\u0449\u044a\7c\2\2\u044a\u044b\7u\2\2\u044b\u044c") - buf.write(u"\7g\2\2\u044c\u044d\7u\2\2\u044dt\3\2\2\2\u044e\u044f") - buf.write(u"\7d\2\2\u044f\u0450\7w\2\2\u0450\u0451\7k\2\2\u0451\u0452") - buf.write(u"\7n\2\2\u0452\u0453\7f\2\2\u0453\u0454\7T\2\2\u0454\u0455") - buf.write(u"\7w\2\2\u0455\u0456\7n\2\2\u0456\u0457\7g\2\2\u0457\u0458") - buf.write(u"\7u\2\2\u0458v\3\2\2\2\u0459\u045a\7f\2\2\u045a\u045b") - buf.write(u"\7g\2\2\u045b\u045c\7r\2\2\u045c\u045d\7g\2\2\u045d\u045e") - buf.write(u"\7p\2\2\u045e\u045f\7f\2\2\u045f\u0460\7g\2\2\u0460\u0461") - buf.write(u"\7p\2\2\u0461\u0462\7e\2\2\u0462\u0463\7k\2\2\u0463\u0464") - buf.write(u"\7g\2\2\u0464\u0465\7u\2\2\u0465x\3\2\2\2\u0466\u0467") - buf.write(u"\7r\2\2\u0467\u0468\7t\2\2\u0468\u0469\7q\2\2\u0469\u046a") - buf.write(u"\7f\2\2\u046a\u046b\7w\2\2\u046b\u046c\7e\2\2\u046c\u046d") - buf.write(u"\7v\2\2\u046d\u046e\7P\2\2\u046e\u046f\7c\2\2\u046f\u0470") - buf.write(u"\7o\2\2\u0470\u0471\7g\2\2\u0471z\3\2\2\2\u0472\u0473") - buf.write(u"\7r\2\2\u0473\u0474\7t\2\2\u0474\u0475\7q\2\2\u0475\u0476") - buf.write(u"\7f\2\2\u0476\u0477\7w\2\2\u0477\u0478\7e\2\2\u0478\u0479") - buf.write(u"\7v\2\2\u0479\u047a\7T\2\2\u047a\u047b\7g\2\2\u047b\u047c") - buf.write(u"\7h\2\2\u047c\u047d\7g\2\2\u047d\u047e\7t\2\2\u047e\u047f") - buf.write(u"\7g\2\2\u047f\u0480\7p\2\2\u0480\u0481\7e\2\2\u0481\u0482") - buf.write(u"\7g\2\2\u0482|\3\2\2\2\u0483\u0484\7r\2\2\u0484\u0485") - buf.write(u"\7t\2\2\u0485\u0486\7q\2\2\u0486\u0487\7f\2\2\u0487\u0488") - buf.write(u"\7w\2\2\u0488\u0489\7e\2\2\u0489\u048a\7v\2\2\u048a\u048b") - buf.write(u"\7V\2\2\u048b\u048c\7{\2\2\u048c\u048d\7r\2\2\u048d\u048e") - buf.write(u"\7g\2\2\u048e~\3\2\2\2\u048f\u0490\7n\2\2\u0490\u0491") - buf.write(u"\7k\2\2\u0491\u0492\7p\2\2\u0492\u0493\7g\2\2\u0493\u0494") - buf.write(u"\7G\2\2\u0494\u0495\7p\2\2\u0495\u0496\7f\2\2\u0496\u0497") - buf.write(u"\7k\2\2\u0497\u0498\7p\2\2\u0498\u0499\7i\2\2\u0499\u0080") - buf.write(u"\3\2\2\2\u049a\u049b\7z\2\2\u049b\u049c\7e\2\2\u049c") - buf.write(u"\u049d\7N\2\2\u049d\u049e\7c\2\2\u049e\u049f\7p\2\2\u049f") - buf.write(u"\u04a0\7i\2\2\u04a0\u04a1\7w\2\2\u04a1\u04a2\7c\2\2\u04a2") - buf.write(u"\u04a3\7i\2\2\u04a3\u04a4\7g\2\2\u04a4\u04a5\7U\2\2\u04a5") - buf.write(u"\u04a6\7r\2\2\u04a6\u04a7\7g\2\2\u04a7\u04a8\7e\2\2\u04a8") - buf.write(u"\u04a9\7k\2\2\u04a9\u04aa\7h\2\2\u04aa\u04ab\7k\2\2\u04ab") - buf.write(u"\u04ac\7e\2\2\u04ac\u04ad\7c\2\2\u04ad\u04ae\7v\2\2\u04ae") - buf.write(u"\u04af\7k\2\2\u04af\u04b0\7q\2\2\u04b0\u04b1\7p\2\2\u04b1") - buf.write(u"\u04b2\7K\2\2\u04b2\u04b3\7f\2\2\u04b3\u04b4\7g\2\2\u04b4") - buf.write(u"\u04b5\7p\2\2\u04b5\u04b6\7v\2\2\u04b6\u04b7\7k\2\2\u04b7") - buf.write(u"\u04b8\7h\2\2\u04b8\u04b9\7k\2\2\u04b9\u04ba\7g\2\2\u04ba") - buf.write(u"\u04bb\7t\2\2\u04bb\u0082\3\2\2\2\u04bc\u04bd\7r\2\2") - buf.write(u"\u04bd\u04be\7n\2\2\u04be\u04bf\7k\2\2\u04bf\u04c0\7") - buf.write(u"u\2\2\u04c0\u04c1\7v\2\2\u04c1\u04c2\7U\2\2\u04c2\u04c3") - buf.write(u"\7v\2\2\u04c3\u04c4\7t\2\2\u04c4\u04c5\7w\2\2\u04c5\u04c6") - buf.write(u"\7e\2\2\u04c6\u04c7\7v\2\2\u04c7\u04c8\7w\2\2\u04c8\u04c9") - buf.write(u"\7t\2\2\u04c9\u04ca\7g\2\2\u04ca\u04cb\7F\2\2\u04cb\u04cc") - buf.write(u"\7g\2\2\u04cc\u04cd\7h\2\2\u04cd\u04ce\7k\2\2\u04ce\u04cf") - buf.write(u"\7p\2\2\u04cf\u04d0\7k\2\2\u04d0\u04d1\7v\2\2\u04d1\u04d2") - buf.write(u"\7k\2\2\u04d2\u04d3\7q\2\2\u04d3\u04d4\7p\2\2\u04d4\u04d5") - buf.write(u"\7K\2\2\u04d5\u04d6\7f\2\2\u04d6\u04d7\7g\2\2\u04d7\u04d8") - buf.write(u"\7p\2\2\u04d8\u04d9\7v\2\2\u04d9\u04da\7k\2\2\u04da\u04db") - buf.write(u"\7h\2\2\u04db\u04dc\7k\2\2\u04dc\u04dd\7g\2\2\u04dd\u04de") - buf.write(u"\7t\2\2\u04de\u0084\3\2\2\2\u04df\u04e0\7c\2\2\u04e0") - buf.write(u"\u04e1\7v\2\2\u04e1\u04e2\7v\2\2\u04e2\u04e3\7t\2\2\u04e3") - buf.write(u"\u04e4\7k\2\2\u04e4\u04e5\7d\2\2\u04e5\u04e6\7w\2\2\u04e6") - buf.write(u"\u04e7\7v\2\2\u04e7\u04e8\7g\2\2\u04e8\u04e9\7u\2\2\u04e9") - buf.write(u"\u0086\3\2\2\2\u04ea\u04eb\7N\2\2\u04eb\u04ec\7c\2\2") - buf.write(u"\u04ec\u04ed\7u\2\2\u04ed\u04ee\7v\2\2\u04ee\u04ef\7") - buf.write(u"U\2\2\u04ef\u04f0\7y\2\2\u04f0\u04f1\7k\2\2\u04f1\u04f2") - buf.write(u"\7h\2\2\u04f2\u04f3\7v\2\2\u04f3\u04f4\7O\2\2\u04f4\u04f5") - buf.write(u"\7k\2\2\u04f5\u04f6\7i\2\2\u04f6\u04f7\7t\2\2\u04f7\u04f8") - buf.write(u"\7c\2\2\u04f8\u04f9\7v\2\2\u04f9\u04fa\7k\2\2\u04fa\u04fb") - buf.write(u"\7q\2\2\u04fb\u04fc\7p\2\2\u04fc\u0088\3\2\2\2\u04fd") - buf.write(u"\u04fe\7F\2\2\u04fe\u04ff\7g\2\2\u04ff\u0500\7h\2\2\u0500") - buf.write(u"\u0501\7c\2\2\u0501\u0502\7w\2\2\u0502\u0503\7n\2\2\u0503") - buf.write(u"\u0504\7v\2\2\u0504\u0505\7D\2\2\u0505\u0506\7w\2\2\u0506") - buf.write(u"\u0507\7k\2\2\u0507\u0508\7n\2\2\u0508\u0509\7f\2\2\u0509") - buf.write(u"\u050a\7U\2\2\u050a\u050b\7{\2\2\u050b\u050c\7u\2\2\u050c") - buf.write(u"\u050d\7v\2\2\u050d\u050e\7g\2\2\u050e\u050f\7o\2\2\u050f") - buf.write(u"\u0510\7V\2\2\u0510\u0511\7{\2\2\u0511\u0512\7r\2\2\u0512") - buf.write(u"\u0513\7g\2\2\u0513\u0514\7H\2\2\u0514\u0515\7q\2\2\u0515") - buf.write(u"\u0516\7t\2\2\u0516\u0517\7Y\2\2\u0517\u0518\7q\2\2\u0518") - buf.write(u"\u0519\7t\2\2\u0519\u051a\7m\2\2\u051a\u051b\7u\2\2\u051b") - buf.write(u"\u051c\7r\2\2\u051c\u051d\7c\2\2\u051d\u051e\7e\2\2\u051e") - buf.write(u"\u051f\7g\2\2\u051f\u008a\3\2\2\2\u0520\u0521\7N\2\2") - buf.write(u"\u0521\u0522\7c\2\2\u0522\u0523\7u\2\2\u0523\u0524\7") - buf.write(u"v\2\2\u0524\u0525\7U\2\2\u0525\u0526\7y\2\2\u0526\u0527") - buf.write(u"\7k\2\2\u0527\u0528\7h\2\2\u0528\u0529\7v\2\2\u0529\u052a") - buf.write(u"\7W\2\2\u052a\u052b\7r\2\2\u052b\u052c\7f\2\2\u052c\u052d") - buf.write(u"\7c\2\2\u052d\u052e\7v\2\2\u052e\u052f\7g\2\2\u052f\u0530") - buf.write(u"\7E\2\2\u0530\u0531\7j\2\2\u0531\u0532\7g\2\2\u0532\u0533") - buf.write(u"\7e\2\2\u0533\u0534\7m\2\2\u0534\u008c\3\2\2\2\u0535") - buf.write(u"\u0536\7D\2\2\u0536\u0537\7w\2\2\u0537\u0538\7k\2\2\u0538") - buf.write(u"\u0539\7n\2\2\u0539\u053a\7f\2\2\u053a\u053b\7K\2\2\u053b") - buf.write(u"\u053c\7p\2\2\u053c\u053d\7f\2\2\u053d\u053e\7g\2\2\u053e") - buf.write(u"\u053f\7r\2\2\u053f\u0540\7g\2\2\u0540\u0541\7p\2\2\u0541") - buf.write(u"\u0542\7f\2\2\u0542\u0543\7g\2\2\u0543\u0544\7p\2\2\u0544") - buf.write(u"\u0545\7v\2\2\u0545\u0546\7V\2\2\u0546\u0547\7c\2\2\u0547") - buf.write(u"\u0548\7t\2\2\u0548\u0549\7i\2\2\u0549\u054a\7g\2\2\u054a") - buf.write(u"\u054b\7v\2\2\u054b\u054c\7u\2\2\u054c\u054d\7K\2\2\u054d") - buf.write(u"\u054e\7p\2\2\u054e\u054f\7R\2\2\u054f\u0550\7c\2\2\u0550") - buf.write(u"\u0551\7t\2\2\u0551\u0552\7c\2\2\u0552\u0553\7n\2\2\u0553") - buf.write(u"\u0554\7n\2\2\u0554\u0555\7g\2\2\u0555\u0556\7n\2\2\u0556") - buf.write(u"\u008e\3\2\2\2\u0557\u0558\7N\2\2\u0558\u0559\7c\2\2") - buf.write(u"\u0559\u055a\7u\2\2\u055a\u055b\7v\2\2\u055b\u055c\7") - buf.write(u"W\2\2\u055c\u055d\7r\2\2\u055d\u055e\7i\2\2\u055e\u055f") - buf.write(u"\7t\2\2\u055f\u0560\7c\2\2\u0560\u0561\7f\2\2\u0561\u0562") - buf.write(u"\7g\2\2\u0562\u0563\7E\2\2\u0563\u0564\7j\2\2\u0564\u0565") - buf.write(u"\7g\2\2\u0565\u0566\7e\2\2\u0566\u0567\7m\2\2\u0567\u0090") - buf.write(u"\3\2\2\2\u0568\u0569\7N\2\2\u0569\u056a\7c\2\2\u056a") - buf.write(u"\u056b\7u\2\2\u056b\u056c\7v\2\2\u056c\u056d\7V\2\2\u056d") - buf.write(u"\u056e\7g\2\2\u056e\u056f\7u\2\2\u056f\u0570\7v\2\2\u0570") - buf.write(u"\u0571\7k\2\2\u0571\u0572\7p\2\2\u0572\u0573\7i\2\2\u0573") - buf.write(u"\u0574\7W\2\2\u0574\u0575\7r\2\2\u0575\u0576\7i\2\2\u0576") - buf.write(u"\u0577\7t\2\2\u0577\u0578\7c\2\2\u0578\u0579\7f\2\2\u0579") - buf.write(u"\u057a\7g\2\2\u057a\u057b\7E\2\2\u057b\u057c\7j\2\2\u057c") - buf.write(u"\u057d\7g\2\2\u057d\u057e\7e\2\2\u057e\u057f\7m\2\2\u057f") - buf.write(u"\u0092\3\2\2\2\u0580\u0581\7Q\2\2\u0581\u0582\7T\2\2") - buf.write(u"\u0582\u0583\7I\2\2\u0583\u0584\7C\2\2\u0584\u0585\7") - buf.write(u"P\2\2\u0585\u0586\7K\2\2\u0586\u0587\7\\\2\2\u0587\u0588") - buf.write(u"\7C\2\2\u0588\u0589\7V\2\2\u0589\u058a\7K\2\2\u058a\u058b") - buf.write(u"\7Q\2\2\u058b\u058c\7P\2\2\u058c\u058d\7P\2\2\u058d\u058e") - buf.write(u"\7C\2\2\u058e\u058f\7O\2\2\u058f\u0590\7G\2\2\u0590\u0094") - buf.write(u"\3\2\2\2\u0591\u0592\7V\2\2\u0592\u0593\7c\2\2\u0593") - buf.write(u"\u0594\7t\2\2\u0594\u0595\7i\2\2\u0595\u0596\7g\2\2\u0596") - buf.write(u"\u0597\7v\2\2\u0597\u0598\7C\2\2\u0598\u0599\7v\2\2\u0599") - buf.write(u"\u059a\7v\2\2\u059a\u059b\7t\2\2\u059b\u059c\7k\2\2\u059c") - buf.write(u"\u059d\7d\2\2\u059d\u059e\7w\2\2\u059e\u059f\7v\2\2\u059f") - buf.write(u"\u05a0\7g\2\2\u05a0\u05a1\7u\2\2\u05a1\u0096\3\2\2\2") - buf.write(u"\u05a2\u05a3\7E\2\2\u05a3\u05a4\7t\2\2\u05a4\u05a5\7") - buf.write(u"g\2\2\u05a5\u05a6\7c\2\2\u05a6\u05a7\7v\2\2\u05a7\u05a8") - buf.write(u"\7g\2\2\u05a8\u05a9\7f\2\2\u05a9\u05aa\7Q\2\2\u05aa\u05ab") - buf.write(u"\7p\2\2\u05ab\u05ac\7V\2\2\u05ac\u05ad\7q\2\2\u05ad\u05ae") - buf.write(u"\7q\2\2\u05ae\u05af\7n\2\2\u05af\u05b0\7u\2\2\u05b0\u05b1") - buf.write(u"\7X\2\2\u05b1\u05b2\7g\2\2\u05b2\u05b3\7t\2\2\u05b3\u05b4") - buf.write(u"\7u\2\2\u05b4\u05b5\7k\2\2\u05b5\u05b6\7q\2\2\u05b6\u05b7") - buf.write(u"\7p\2\2\u05b7\u0098\3\2\2\2\u05b8\u05b9\7V\2\2\u05b9") - buf.write(u"\u05ba\7g\2\2\u05ba\u05bb\7u\2\2\u05bb\u05bc\7v\2\2\u05bc") - buf.write(u"\u05bd\7V\2\2\u05bd\u05be\7c\2\2\u05be\u05bf\7t\2\2\u05bf") - buf.write(u"\u05c0\7i\2\2\u05c0\u05c1\7g\2\2\u05c1\u05c2\7v\2\2\u05c2") - buf.write(u"\u05c3\7K\2\2\u05c3\u05c4\7F\2\2\u05c4\u009a\3\2\2\2") - buf.write(u"\u05c5\u05c6\7F\2\2\u05c6\u05c7\7g\2\2\u05c7\u05c8\7") - buf.write(u"x\2\2\u05c8\u05c9\7g\2\2\u05c9\u05ca\7n\2\2\u05ca\u05cb") - buf.write(u"\7q\2\2\u05cb\u05cc\7r\2\2\u05cc\u05cd\7o\2\2\u05cd\u05ce") - buf.write(u"\7g\2\2\u05ce\u05cf\7p\2\2\u05cf\u05d0\7v\2\2\u05d0\u05d1") - buf.write(u"\7V\2\2\u05d1\u05d2\7g\2\2\u05d2\u05d3\7c\2\2\u05d3\u05d4") - buf.write(u"\7o\2\2\u05d4\u009c\3\2\2\2\u05d5\u05d6\7R\2\2\u05d6") - buf.write(u"\u05d7\7t\2\2\u05d7\u05d8\7q\2\2\u05d8\u05d9\7x\2\2\u05d9") - buf.write(u"\u05da\7k\2\2\u05da\u05db\7u\2\2\u05db\u05dc\7k\2\2\u05dc") - buf.write(u"\u05dd\7q\2\2\u05dd\u05de\7p\2\2\u05de\u05df\7k\2\2\u05df") - buf.write(u"\u05e0\7p\2\2\u05e0\u05e1\7i\2\2\u05e1\u05e2\7U\2\2\u05e2") - buf.write(u"\u05e3\7v\2\2\u05e3\u05e4\7{\2\2\u05e4\u05e5\7n\2\2\u05e5") - buf.write(u"\u05e6\7g\2\2\u05e6\u009e\3\2\2\2\u05e7\u05e8\7e\2\2") - buf.write(u"\u05e8\u05e9\7q\2\2\u05e9\u05ea\7o\2\2\u05ea\u05eb\7") - buf.write(u"r\2\2\u05eb\u05ec\7c\2\2\u05ec\u05ed\7v\2\2\u05ed\u05ee") - buf.write(u"\7k\2\2\u05ee\u05ef\7d\2\2\u05ef\u05f0\7k\2\2\u05f0\u05f1") - buf.write(u"\7n\2\2\u05f1\u05f2\7k\2\2\u05f2\u05f3\7v\2\2\u05f3\u05f4") - buf.write(u"\7{\2\2\u05f4\u05f5\7X\2\2\u05f5\u05f6\7g\2\2\u05f6\u05f7") - buf.write(u"\7t\2\2\u05f7\u05f8\7u\2\2\u05f8\u05f9\7k\2\2\u05f9\u05fa") - buf.write(u"\7q\2\2\u05fa\u05fb\7p\2\2\u05fb\u00a0\3\2\2\2\u05fc") - buf.write(u"\u05fd\7f\2\2\u05fd\u05fe\7g\2\2\u05fe\u05ff\7x\2\2\u05ff") - buf.write(u"\u0600\7g\2\2\u0600\u0601\7n\2\2\u0601\u0602\7q\2\2\u0602") - buf.write(u"\u0603\7r\2\2\u0603\u0604\7o\2\2\u0604\u0605\7g\2\2\u0605") - buf.write(u"\u0606\7p\2\2\u0606\u0607\7v\2\2\u0607\u0608\7T\2\2\u0608") - buf.write(u"\u0609\7g\2\2\u0609\u060a\7i\2\2\u060a\u060b\7k\2\2\u060b") - buf.write(u"\u060c\7q\2\2\u060c\u060d\7p\2\2\u060d\u00a2\3\2\2\2") - buf.write(u"\u060e\u060f\7j\2\2\u060f\u0610\7c\2\2\u0610\u0611\7") - buf.write(u"u\2\2\u0611\u0612\7U\2\2\u0612\u0613\7e\2\2\u0613\u0614") - buf.write(u"\7c\2\2\u0614\u0615\7p\2\2\u0615\u0616\7p\2\2\u0616\u0617") - buf.write(u"\7g\2\2\u0617\u0618\7f\2\2\u0618\u0619\7H\2\2\u0619\u061a") - buf.write(u"\7q\2\2\u061a\u061b\7t\2\2\u061b\u061c\7G\2\2\u061c\u061d") - buf.write(u"\7p\2\2\u061d\u061e\7e\2\2\u061e\u061f\7q\2\2\u061f\u0620") - buf.write(u"\7f\2\2\u0620\u0621\7k\2\2\u0621\u0622\7p\2\2\u0622\u0623") - buf.write(u"\7i\2\2\u0623\u0624\7u\2\2\u0624\u00a4\3\2\2\2\u0625") - buf.write(u"\u0626\7m\2\2\u0626\u0627\7p\2\2\u0627\u0628\7q\2\2\u0628") - buf.write(u"\u0629\7y\2\2\u0629\u062a\7p\2\2\u062a\u062b\7T\2\2\u062b") - buf.write(u"\u062c\7g\2\2\u062c\u062d\7i\2\2\u062d\u062e\7k\2\2\u062e") - buf.write(u"\u062f\7q\2\2\u062f\u0630\7p\2\2\u0630\u0631\7u\2\2\u0631") - buf.write(u"\u00a6\3\2\2\2\u0632\u0633\7o\2\2\u0633\u0634\7c\2\2") - buf.write(u"\u0634\u0635\7k\2\2\u0635\u0636\7p\2\2\u0636\u0637\7") - buf.write(u"I\2\2\u0637\u0638\7t\2\2\u0638\u0639\7q\2\2\u0639\u063a") - buf.write(u"\7w\2\2\u063a\u063b\7r\2\2\u063b\u00a8\3\2\2\2\u063c") - buf.write(u"\u063d\7r\2\2\u063d\u063e\7t\2\2\u063e\u063f\7q\2\2\u063f") - buf.write(u"\u0640\7f\2\2\u0640\u0641\7w\2\2\u0641\u0642\7e\2\2\u0642") - buf.write(u"\u0643\7v\2\2\u0643\u0644\7T\2\2\u0644\u0645\7g\2\2\u0645") - buf.write(u"\u0646\7h\2\2\u0646\u0647\7I\2\2\u0647\u0648\7t\2\2\u0648") - buf.write(u"\u0649\7q\2\2\u0649\u064a\7w\2\2\u064a\u064b\7r\2\2\u064b") - buf.write(u"\u00aa\3\2\2\2\u064c\u064d\7r\2\2\u064d\u064e\7c\2\2") - buf.write(u"\u064e\u064f\7e\2\2\u064f\u0650\7m\2\2\u0650\u0651\7") - buf.write(u"c\2\2\u0651\u0652\7i\2\2\u0652\u0653\7g\2\2\u0653\u0654") - buf.write(u"\7T\2\2\u0654\u0655\7g\2\2\u0655\u0656\7h\2\2\u0656\u0657") - buf.write(u"\7g\2\2\u0657\u0658\7t\2\2\u0658\u0659\7g\2\2\u0659\u065a") - buf.write(u"\7p\2\2\u065a\u065b\7e\2\2\u065b\u065c\7g\2\2\u065c\u065d") - buf.write(u"\7u\2\2\u065d\u00ac\3\2\2\2\u065e\u065f\7r\2\2\u065f") - buf.write(u"\u0660\7t\2\2\u0660\u0661\7q\2\2\u0661\u0662\7l\2\2\u0662") - buf.write(u"\u0663\7g\2\2\u0663\u0664\7e\2\2\u0664\u0665\7v\2\2\u0665") - buf.write(u"\u0666\7F\2\2\u0666\u0667\7k\2\2\u0667\u0668\7t\2\2\u0668") - buf.write(u"\u0669\7R\2\2\u0669\u066a\7c\2\2\u066a\u066b\7v\2\2\u066b") - buf.write(u"\u066c\7j\2\2\u066c\u00ae\3\2\2\2\u066d\u066e\7r\2\2") - buf.write(u"\u066e\u066f\7t\2\2\u066f\u0670\7q\2\2\u0670\u0671\7") - buf.write(u"l\2\2\u0671\u0672\7g\2\2\u0672\u0673\7e\2\2\u0673\u0674") - buf.write(u"\7v\2\2\u0674\u0675\7T\2\2\u0675\u0676\7g\2\2\u0676\u0677") - buf.write(u"\7h\2\2\u0677\u0678\7g\2\2\u0678\u0679\7t\2\2\u0679\u067a") - buf.write(u"\7g\2\2\u067a\u067b\7p\2\2\u067b\u067c\7e\2\2\u067c\u067d") - buf.write(u"\7g\2\2\u067d\u067e\7u\2\2\u067e\u00b0\3\2\2\2\u067f") - buf.write(u"\u0680\7r\2\2\u0680\u0681\7t\2\2\u0681\u0682\7q\2\2\u0682") - buf.write(u"\u0683\7l\2\2\u0683\u0684\7g\2\2\u0684\u0685\7e\2\2\u0685") - buf.write(u"\u0686\7v\2\2\u0686\u0687\7T\2\2\u0687\u0688\7q\2\2\u0688") - buf.write(u"\u0689\7q\2\2\u0689\u068a\7v\2\2\u068a\u00b2\3\2\2\2") - buf.write(u"\u068b\u068c\7v\2\2\u068c\u068d\7c\2\2\u068d\u068e\7") - buf.write(u"t\2\2\u068e\u068f\7i\2\2\u068f\u0690\7g\2\2\u0690\u0691") - buf.write(u"\7v\2\2\u0691\u0692\7u\2\2\u0692\u00b4\3\2\2\2\u0693") - buf.write(u"\u0694\7k\2\2\u0694\u0695\7p\2\2\u0695\u0696\7r\2\2\u0696") - buf.write(u"\u0697\7w\2\2\u0697\u0698\7v\2\2\u0698\u0699\7H\2\2\u0699") - buf.write(u"\u069a\7k\2\2\u069a\u069b\7n\2\2\u069b\u069c\7g\2\2\u069c") - buf.write(u"\u069d\7N\2\2\u069d\u069e\7k\2\2\u069e\u069f\7u\2\2\u069f") - buf.write(u"\u06a0\7v\2\2\u06a0\u06a1\7R\2\2\u06a1\u06a2\7c\2\2\u06a2") - buf.write(u"\u06a3\7v\2\2\u06a3\u06a4\7j\2\2\u06a4\u06a5\7u\2\2\u06a5") - buf.write(u"\u00b6\3\2\2\2\u06a6\u06a7\7k\2\2\u06a7\u06a8\7p\2\2") - buf.write(u"\u06a8\u06a9\7r\2\2\u06a9\u06aa\7w\2\2\u06aa\u06ab\7") - buf.write(u"v\2\2\u06ab\u06ac\7R\2\2\u06ac\u06ad\7c\2\2\u06ad\u06ae") - buf.write(u"\7v\2\2\u06ae\u06af\7j\2\2\u06af\u06b0\7u\2\2\u06b0\u00b8") - buf.write(u"\3\2\2\2\u06b1\u06b2\7q\2\2\u06b2\u06b3\7w\2\2\u06b3") - buf.write(u"\u06b4\7v\2\2\u06b4\u06b5\7r\2\2\u06b5\u06b6\7w\2\2\u06b6") - buf.write(u"\u06b7\7v\2\2\u06b7\u06b8\7H\2\2\u06b8\u06b9\7k\2\2\u06b9") - buf.write(u"\u06ba\7n\2\2\u06ba\u06bb\7g\2\2\u06bb\u06bc\7N\2\2\u06bc") - buf.write(u"\u06bd\7k\2\2\u06bd\u06be\7u\2\2\u06be\u06bf\7v\2\2\u06bf") - buf.write(u"\u06c0\7R\2\2\u06c0\u06c1\7c\2\2\u06c1\u06c2\7v\2\2\u06c2") - buf.write(u"\u06c3\7j\2\2\u06c3\u06c4\7u\2\2\u06c4\u00ba\3\2\2\2") - buf.write(u"\u06c5\u06c6\7q\2\2\u06c6\u06c7\7w\2\2\u06c7\u06c8\7") - buf.write(u"v\2\2\u06c8\u06c9\7r\2\2\u06c9\u06ca\7w\2\2\u06ca\u06cb") - buf.write(u"\7v\2\2\u06cb\u06cc\7R\2\2\u06cc\u06cd\7c\2\2\u06cd\u06ce") - buf.write(u"\7v\2\2\u06ce\u06cf\7j\2\2\u06cf\u06d0\7u\2\2\u06d0\u00bc") - buf.write(u"\3\2\2\2\u06d1\u06d2\7u\2\2\u06d2\u06d3\7j\2\2\u06d3") - buf.write(u"\u06d4\7g\2\2\u06d4\u06d5\7n\2\2\u06d5\u06d6\7n\2\2\u06d6") - buf.write(u"\u06d7\7R\2\2\u06d7\u06d8\7c\2\2\u06d8\u06d9\7v\2\2\u06d9") - buf.write(u"\u06da\7j\2\2\u06da\u00be\3\2\2\2\u06db\u06dc\7u\2\2") - buf.write(u"\u06dc\u06dd\7j\2\2\u06dd\u06de\7g\2\2\u06de\u06df\7") - buf.write(u"n\2\2\u06df\u06e0\7n\2\2\u06e0\u06e1\7U\2\2\u06e1\u06e2") - buf.write(u"\7e\2\2\u06e2\u06e3\7t\2\2\u06e3\u06e4\7k\2\2\u06e4\u06e5") - buf.write(u"\7r\2\2\u06e5\u06e6\7v\2\2\u06e6\u00c0\3\2\2\2\u06e7") - buf.write(u"\u06e8\7u\2\2\u06e8\u06e9\7j\2\2\u06e9\u06ea\7q\2\2\u06ea") - buf.write(u"\u06eb\7y\2\2\u06eb\u06ec\7G\2\2\u06ec\u06ed\7p\2\2\u06ed") - buf.write(u"\u06ee\7x\2\2\u06ee\u06ef\7X\2\2\u06ef\u06f0\7c\2\2\u06f0") - buf.write(u"\u06f1\7t\2\2\u06f1\u06f2\7u\2\2\u06f2\u06f3\7K\2\2\u06f3") - buf.write(u"\u06f4\7p\2\2\u06f4\u06f5\7N\2\2\u06f5\u06f6\7q\2\2\u06f6") - buf.write(u"\u06f7\7i\2\2\u06f7\u00c2\3\2\2\2\u06f8\u06f9\7v\2\2") - buf.write(u"\u06f9\u06fa\7c\2\2\u06fa\u06fb\7t\2\2\u06fb\u06fc\7") - buf.write(u"i\2\2\u06fc\u06fd\7g\2\2\u06fd\u06fe\7v\2\2\u06fe\u00c4") - buf.write(u"\3\2\2\2\u06ff\u0700\7v\2\2\u0700\u0701\7c\2\2\u0701") - buf.write(u"\u0702\7t\2\2\u0702\u0703\7i\2\2\u0703\u0704\7g\2\2\u0704") - buf.write(u"\u0705\7v\2\2\u0705\u0706\7R\2\2\u0706\u0707\7t\2\2\u0707") - buf.write(u"\u0708\7q\2\2\u0708\u0709\7z\2\2\u0709\u070a\7{\2\2\u070a") - buf.write(u"\u00c6\3\2\2\2\u070b\u070c\7h\2\2\u070c\u070d\7k\2\2") - buf.write(u"\u070d\u070e\7n\2\2\u070e\u070f\7g\2\2\u070f\u0710\7") - buf.write(u"V\2\2\u0710\u0711\7{\2\2\u0711\u0712\7r\2\2\u0712\u0713") - buf.write(u"\7g\2\2\u0713\u00c8\3\2\2\2\u0714\u0715\7t\2\2\u0715") - buf.write(u"\u0716\7g\2\2\u0716\u0717\7o\2\2\u0717\u0718\7q\2\2\u0718") - buf.write(u"\u0719\7v\2\2\u0719\u071a\7g\2\2\u071a\u071b\7T\2\2\u071b") - buf.write(u"\u071c\7g\2\2\u071c\u071d\7h\2\2\u071d\u00ca\3\2\2\2") - buf.write(u"\u071e\u071f\7d\2\2\u071f\u0720\7c\2\2\u0720\u0721\7") - buf.write(u"u\2\2\u0721\u0722\7g\2\2\u0722\u0723\7E\2\2\u0723\u0724") - buf.write(u"\7q\2\2\u0724\u0725\7p\2\2\u0725\u0726\7h\2\2\u0726\u0727") - buf.write(u"\7k\2\2\u0727\u0728\7i\2\2\u0728\u0729\7w\2\2\u0729\u072a") - buf.write(u"\7t\2\2\u072a\u072b\7c\2\2\u072b\u072c\7v\2\2\u072c\u072d") - buf.write(u"\7k\2\2\u072d\u072e\7q\2\2\u072e\u072f\7p\2\2\u072f\u0730") - buf.write(u"\7T\2\2\u0730\u0731\7g\2\2\u0731\u0732\7h\2\2\u0732\u0733") - buf.write(u"\7g\2\2\u0733\u0734\7t\2\2\u0734\u0735\7g\2\2\u0735\u0736") - buf.write(u"\7p\2\2\u0736\u0737\7e\2\2\u0737\u0738\7g\2\2\u0738\u00cc") - buf.write(u"\3\2\2\2\u0739\u073a\7d\2\2\u073a\u073b\7w\2\2\u073b") - buf.write(u"\u073c\7k\2\2\u073c\u073d\7n\2\2\u073d\u073e\7f\2\2\u073e") - buf.write(u"\u073f\7U\2\2\u073f\u0740\7g\2\2\u0740\u0741\7v\2\2\u0741") - buf.write(u"\u0742\7v\2\2\u0742\u0743\7k\2\2\u0743\u0744\7p\2\2\u0744") - buf.write(u"\u0745\7i\2\2\u0745\u0746\7u\2\2\u0746\u00ce\3\2\2\2") - buf.write(u"\u0747\u0748\7f\2\2\u0748\u0749\7u\2\2\u0749\u074a\7") - buf.write(u"v\2\2\u074a\u074b\7R\2\2\u074b\u074c\7c\2\2\u074c\u074d") - buf.write(u"\7v\2\2\u074d\u074e\7j\2\2\u074e\u00d0\3\2\2\2\u074f") - buf.write(u"\u0750\7f\2\2\u0750\u0751\7u\2\2\u0751\u0752\7v\2\2\u0752") - buf.write(u"\u0753\7U\2\2\u0753\u0754\7w\2\2\u0754\u0755\7d\2\2\u0755") - buf.write(u"\u0756\7h\2\2\u0756\u0757\7q\2\2\u0757\u0758\7n\2\2\u0758") - buf.write(u"\u0759\7f\2\2\u0759\u075a\7g\2\2\u075a\u075b\7t\2\2\u075b") - buf.write(u"\u075c\7U\2\2\u075c\u075d\7r\2\2\u075d\u075e\7g\2\2\u075e") - buf.write(u"\u075f\7e\2\2\u075f\u00d2\3\2\2\2\u0760\u0761\7R\2\2") - buf.write(u"\u0761\u0762\7t\2\2\u0762\u0763\7q\2\2\u0763\u0764\7") - buf.write(u"f\2\2\u0764\u0765\7w\2\2\u0765\u0766\7e\2\2\u0766\u0767") - buf.write(u"\7v\2\2\u0767\u0768\7I\2\2\u0768\u0769\7t\2\2\u0769\u076a") - buf.write(u"\7q\2\2\u076a\u076b\7w\2\2\u076b\u076c\7r\2\2\u076c\u00d4") - buf.write(u"\3\2\2\2\u076d\u076e\7R\2\2\u076e\u076f\7t\2\2\u076f") - buf.write(u"\u0770\7q\2\2\u0770\u0771\7l\2\2\u0771\u0772\7g\2\2\u0772") - buf.write(u"\u0773\7e\2\2\u0773\u0774\7v\2\2\u0774\u0775\7T\2\2\u0775") - buf.write(u"\u0776\7g\2\2\u0776\u0777\7h\2\2\u0777\u00d6\3\2\2\2") - buf.write(u"\u0778\u0779\7d\2\2\u0779\u077a\7w\2\2\u077a\u077b\7") - buf.write(u"k\2\2\u077b\u077c\7n\2\2\u077c\u077d\7f\2\2\u077d\u077e") - buf.write(u"\7E\2\2\u077e\u077f\7q\2\2\u077f\u0780\7p\2\2\u0780\u0781") - buf.write(u"\7h\2\2\u0781\u0782\7k\2\2\u0782\u0783\7i\2\2\u0783\u0784") - buf.write(u"\7w\2\2\u0784\u0785\7t\2\2\u0785\u0786\7c\2\2\u0786\u0787") - buf.write(u"\7v\2\2\u0787\u0788\7k\2\2\u0788\u0789\7q\2\2\u0789\u078a") - buf.write(u"\7p\2\2\u078a\u078b\7u\2\2\u078b\u00d8\3\2\2\2\u078c") - buf.write(u"\u078d\7f\2\2\u078d\u078e\7g\2\2\u078e\u078f\7h\2\2\u078f") - buf.write(u"\u0790\7c\2\2\u0790\u0791\7w\2\2\u0791\u0792\7n\2\2\u0792") - buf.write(u"\u0793\7v\2\2\u0793\u0794\7E\2\2\u0794\u0795\7q\2\2\u0795") - buf.write(u"\u0796\7p\2\2\u0796\u0797\7h\2\2\u0797\u0798\7k\2\2\u0798") - buf.write(u"\u0799\7i\2\2\u0799\u079a\7w\2\2\u079a\u079b\7t\2\2\u079b") - buf.write(u"\u079c\7c\2\2\u079c\u079d\7v\2\2\u079d\u079e\7k\2\2\u079e") - buf.write(u"\u079f\7q\2\2\u079f\u07a0\7p\2\2\u07a0\u07a1\7K\2\2\u07a1") - buf.write(u"\u07a2\7u\2\2\u07a2\u07a3\7X\2\2\u07a3\u07a4\7k\2\2\u07a4") - buf.write(u"\u07a5\7u\2\2\u07a5\u07a6\7k\2\2\u07a6\u07a7\7d\2\2\u07a7") - buf.write(u"\u07a8\7n\2\2\u07a8\u07a9\7g\2\2\u07a9\u00da\3\2\2\2") - buf.write(u"\u07aa\u07ab\7f\2\2\u07ab\u07ac\7g\2\2\u07ac\u07ad\7") - buf.write(u"h\2\2\u07ad\u07ae\7c\2\2\u07ae\u07af\7w\2\2\u07af\u07b0") - buf.write(u"\7n\2\2\u07b0\u07b1\7v\2\2\u07b1\u07b2\7E\2\2\u07b2\u07b3") - buf.write(u"\7q\2\2\u07b3\u07b4\7p\2\2\u07b4\u07b5\7h\2\2\u07b5\u07b6") - buf.write(u"\7k\2\2\u07b6\u07b7\7i\2\2\u07b7\u07b8\7w\2\2\u07b8\u07b9") - buf.write(u"\7t\2\2\u07b9\u07ba\7c\2\2\u07ba\u07bb\7v\2\2\u07bb\u07bc") - buf.write(u"\7k\2\2\u07bc\u07bd\7q\2\2\u07bd\u07be\7p\2\2\u07be\u07bf") - buf.write(u"\7P\2\2\u07bf\u07c0\7c\2\2\u07c0\u07c1\7o\2\2\u07c1\u07c2") - buf.write(u"\7g\2\2\u07c2\u00dc\3\2\2\2\u07c3\u07c4\7u\2\2\u07c4") - buf.write(u"\u07c5\7g\2\2\u07c5\u07c6\7v\2\2\u07c6\u07c7\7v\2\2\u07c7") - buf.write(u"\u07c8\7k\2\2\u07c8\u07c9\7p\2\2\u07c9\u07ca\7i\2\2\u07ca") - buf.write(u"\u07cb\7u\2\2\u07cb\u00de\3\2\2\2\u07cc\u07cd\7U\2\2") - buf.write(u"\u07cd\u07ce\7{\2\2\u07ce\u07cf\7u\2\2\u07cf\u07d0\7") - buf.write(u"v\2\2\u07d0\u07d1\7g\2\2\u07d1\u07d2\7o\2\2\u07d2\u07d3") - buf.write(u"\7E\2\2\u07d3\u07d4\7c\2\2\u07d4\u07d5\7r\2\2\u07d5\u07d6") - buf.write(u"\7c\2\2\u07d6\u07d7\7d\2\2\u07d7\u07d8\7k\2\2\u07d8\u07d9") - buf.write(u"\7n\2\2\u07d9\u07da\7k\2\2\u07da\u07db\7v\2\2\u07db\u07dc") - buf.write(u"\7k\2\2\u07dc\u07dd\7g\2\2\u07dd\u07de\7u\2\2\u07de\u00e0") - buf.write(u"\3\2\2\2\u07df\u07e0\7e\2\2\u07e0\u07e1\7w\2\2\u07e1") - buf.write(u"\u07e2\7t\2\2\u07e2\u07e3\7t\2\2\u07e3\u07e4\7g\2\2\u07e4") - buf.write(u"\u07e5\7p\2\2\u07e5\u07e6\7v\2\2\u07e6\u07e7\7X\2\2\u07e7") - buf.write(u"\u07e8\7g\2\2\u07e8\u07e9\7t\2\2\u07e9\u07ea\7u\2\2\u07ea") - buf.write(u"\u07eb\7k\2\2\u07eb\u07ec\7q\2\2\u07ec\u07ed\7p\2\2\u07ed") - buf.write(u"\u00e2\3\2\2\2\u07ee\u07ef\7x\2\2\u07ef\u07f0\7g\2\2") - buf.write(u"\u07f0\u07f1\7t\2\2\u07f1\u07f2\7u\2\2\u07f2\u07f3\7") - buf.write(u"k\2\2\u07f3\u07f4\7q\2\2\u07f4\u07f5\7p\2\2\u07f5\u07f6") - buf.write(u"\7I\2\2\u07f6\u07f7\7t\2\2\u07f7\u07f8\7q\2\2\u07f8\u07f9") - buf.write(u"\7w\2\2\u07f9\u07fa\7r\2\2\u07fa\u07fb\7V\2\2\u07fb\u07fc") - buf.write(u"\7{\2\2\u07fc\u07fd\7r\2\2\u07fd\u07fe\7g\2\2\u07fe\u00e4") - buf.write(u"\3\2\2\2\u07ff\u0800\7E\2\2\u0800\u0801\7N\2\2\u0801") - buf.write(u"\u0802\7C\2\2\u0802\u0803\7U\2\2\u0803\u0804\7U\2\2\u0804") - buf.write(u"\u0805\7R\2\2\u0805\u0806\7T\2\2\u0806\u0807\7G\2\2\u0807") - buf.write(u"\u0808\7H\2\2\u0808\u0809\7K\2\2\u0809\u080a\7Z\2\2\u080a") - buf.write(u"\u00e6\3\2\2\2\u080b\u080c\7e\2\2\u080c\u080d\7n\2\2") - buf.write(u"\u080d\u080e\7c\2\2\u080e\u080f\7u\2\2\u080f\u0810\7") - buf.write(u"u\2\2\u0810\u0811\7g\2\2\u0811\u0812\7u\2\2\u0812\u00e8") - buf.write(u"\3\2\2\2\u0813\u0814\7k\2\2\u0814\u0815\7u\2\2\u0815") - buf.write(u"\u0816\7c\2\2\u0816\u00ea\3\2\2\2\u0817\u0818\7q\2\2") - buf.write(u"\u0818\u0819\7d\2\2\u0819\u081a\7l\2\2\u081a\u081b\7") - buf.write(u"g\2\2\u081b\u081c\7e\2\2\u081c\u081d\7v\2\2\u081d\u081e") - buf.write(u"\7u\2\2\u081e\u00ec\3\2\2\2\u081f\u0820\7t\2\2\u0820") - buf.write(u"\u0821\7q\2\2\u0821\u0822\7q\2\2\u0822\u0823\7v\2\2\u0823") - buf.write(u"\u0824\7Q\2\2\u0824\u0825\7d\2\2\u0825\u0826\7l\2\2\u0826") - buf.write(u"\u0827\7g\2\2\u0827\u0828\7e\2\2\u0828\u0829\7v\2\2\u0829") - buf.write(u"\u00ee\3\2\2\2\u082a\u082c\4\62;\2\u082b\u082a\3\2\2") - buf.write(u"\2\u082c\u082d\3\2\2\2\u082d\u082b\3\2\2\2\u082d\u082e") - buf.write(u"\3\2\2\2\u082e\u00f0\3\2\2\2\u082f\u0830\7\60\2\2\u0830") - buf.write(u"\u00f2\3\2\2\2\u0831\u0832\t\2\2\2\u0832\u00f4\3\2\2") - buf.write(u"\2\u0833\u0834\t\3\2\2\u0834\u00f6\3\2\2\2\u0835\u0836") - buf.write(u"\7/\2\2\u0836\u00f8\3\2\2\2\u0837\u0838\7a\2\2\u0838") - buf.write(u"\u00fa\3\2\2\2\u0839\u083a\7\61\2\2\u083a\u00fc\3\2\2") - buf.write(u"\2\u083b\u083c\5\u0105\u0083\2\u083c\u083d\5\u0105\u0083") - buf.write(u"\2\u083d\u083e\5\u0105\u0083\2\u083e\u083f\5\u0105\u0083") - buf.write(u"\2\u083f\u0840\5\u0105\u0083\2\u0840\u0841\5\u0105\u0083") - buf.write(u"\2\u0841\u0842\5\u0105\u0083\2\u0842\u0843\5\u0105\u0083") - buf.write(u"\2\u0843\u0844\5\u0105\u0083\2\u0844\u0845\5\u0105\u0083") - buf.write(u"\2\u0845\u0846\5\u0105\u0083\2\u0846\u0847\5\u0105\u0083") - buf.write(u"\2\u0847\u0848\5\u0105\u0083\2\u0848\u0849\5\u0105\u0083") - buf.write(u"\2\u0849\u084a\5\u0105\u0083\2\u084a\u084b\5\u0105\u0083") - buf.write(u"\2\u084b\u084c\5\u0105\u0083\2\u084c\u084d\5\u0105\u0083") - buf.write(u"\2\u084d\u084e\5\u0105\u0083\2\u084e\u084f\5\u0105\u0083") - buf.write(u"\2\u084f\u0850\5\u0105\u0083\2\u0850\u0851\5\u0105\u0083") - buf.write(u"\2\u0851\u0852\5\u0105\u0083\2\u0852\u0853\5\u0105\u0083") - buf.write(u"\2\u0853\u087a\3\2\2\2\u0854\u0855\7H\2\2\u0855\u0856") - buf.write(u"\7T\2\2\u0856\u085a\7a\2\2\u0857\u0858\7I\2\2\u0858\u085a") - buf.write(u"\7a\2\2\u0859\u0854\3\2\2\2\u0859\u0857\3\2\2\2\u085a") - buf.write(u"\u085c\3\2\2\2\u085b\u085d\5\u0105\u0083\2\u085c\u085b") - buf.write(u"\3\2\2\2\u085d\u085e\3\2\2\2\u085e\u085c\3\2\2\2\u085e") - buf.write(u"\u085f\3\2\2\2\u085f\u087a\3\2\2\2\u0860\u0861\5\u00f5") - buf.write(u"{\2\u0861\u0862\5\u00f5{\2\u0862\u0863\5\u00f5{\2\u0863") - buf.write(u"\u0864\5\u00f5{\2\u0864\u0865\5\u00f5{\2\u0865\u0866") - buf.write(u"\5\u00f5{\2\u0866\u0867\5\u00f5{\2\u0867\u0868\5\u00f5") - buf.write(u"{\2\u0868\u0869\5\u00f5{\2\u0869\u086a\5\u00f5{\2\u086a") - buf.write(u"\u086b\5\u00f5{\2\u086b\u086c\5\u00f5{\2\u086c\u086d") - buf.write(u"\5\u00f5{\2\u086d\u086e\5\u00f5{\2\u086e\u086f\5\u00f5") - buf.write(u"{\2\u086f\u0870\5\u00f5{\2\u0870\u0871\5\u00f5{\2\u0871") - buf.write(u"\u0872\5\u00f5{\2\u0872\u0873\5\u00f5{\2\u0873\u0874") - buf.write(u"\5\u00f5{\2\u0874\u0875\5\u00f5{\2\u0875\u0876\5\u00f5") - buf.write(u"{\2\u0876\u0877\5\u00f5{\2\u0877\u0878\5\u00f5{\2\u0878") - buf.write(u"\u087a\3\2\2\2\u0879\u083b\3\2\2\2\u0879\u0859\3\2\2") - buf.write(u"\2\u0879\u0860\3\2\2\2\u087a\u00fe\3\2\2\2\u087b\u087d") - buf.write(u"\7$\2\2\u087c\u087e\5\u0107\u0084\2\u087d\u087c\3\2\2") - buf.write(u"\2\u087e\u087f\3\2\2\2\u087f\u087d\3\2\2\2\u087f\u0880") - buf.write(u"\3\2\2\2\u0880\u0881\3\2\2\2\u0881\u0882\7$\2\2\u0882") - buf.write(u"\u0886\3\2\2\2\u0883\u0884\7$\2\2\u0884\u0886\7$\2\2") - buf.write(u"\u0885\u087b\3\2\2\2\u0885\u0883\3\2\2\2\u0886\u0100") - buf.write(u"\3\2\2\2\u0887\u088d\5\u00f3z\2\u0888\u088d\5\u00f9}") - buf.write(u"\2\u0889\u088d\5\u00f7|\2\u088a\u088d\5\u00fb~\2\u088b") - buf.write(u"\u088d\5\u00f1y\2\u088c\u0887\3\2\2\2\u088c\u0888\3\2") - buf.write(u"\2\2\u088c\u0889\3\2\2\2\u088c\u088a\3\2\2\2\u088c\u088b") - buf.write(u"\3\2\2\2\u088d\u088e\3\2\2\2\u088e\u088c\3\2\2\2\u088e") - buf.write(u"\u088f\3\2\2\2\u088f\u0102\3\2\2\2\u0890\u0891\7&\2\2") - buf.write(u"\u0891\u0892\5\u0101\u0081\2\u0892\u0104\3\2\2\2\u0893") - buf.write(u"\u0894\t\4\2\2\u0894\u0106\3\2\2\2\u0895\u0899\n\5\2") - buf.write(u"\2\u0896\u0897\7^\2\2\u0897\u0899\7$\2\2\u0898\u0895") - buf.write(u"\3\2\2\2\u0898\u0896\3\2\2\2\u0899\u0108\3\2\2\2\u089a") - buf.write(u"\u089c\t\6\2\2\u089b\u089a\3\2\2\2\u089c\u089d\3\2\2") - buf.write(u"\2\u089d\u089b\3\2\2\2\u089d\u089e\3\2\2\2\u089e\u089f") - buf.write(u"\3\2\2\2\u089f\u08a0\b\u0085\2\2\u08a0\u010a\3\2\2\2") - buf.write(u"\u08a1\u08a2\7\61\2\2\u08a2\u08a3\7,\2\2\u08a3\u08a7") - buf.write(u"\3\2\2\2\u08a4\u08a6\13\2\2\2\u08a5\u08a4\3\2\2\2\u08a6") - buf.write(u"\u08a9\3\2\2\2\u08a7\u08a8\3\2\2\2\u08a7\u08a5\3\2\2") - buf.write(u"\2\u08a8\u08aa\3\2\2\2\u08a9\u08a7\3\2\2\2\u08aa\u08ab") - buf.write(u"\7,\2\2\u08ab\u08ac\7\61\2\2\u08ac\u08ad\3\2\2\2\u08ad") - buf.write(u"\u08ae\b\u0086\2\2\u08ae\u010c\3\2\2\2\u08af\u08b0\7") - buf.write(u"\61\2\2\u08b0\u08b1\7\61\2\2\u08b1\u08b5\3\2\2\2\u08b2") - buf.write(u"\u08b4\n\7\2\2\u08b3\u08b2\3\2\2\2\u08b4\u08b7\3\2\2") - buf.write(u"\2\u08b5\u08b3\3\2\2\2\u08b5\u08b6\3\2\2\2\u08b6\u08b8") - buf.write(u"\3\2\2\2\u08b7\u08b5\3\2\2\2\u08b8\u08b9\b\u0087\2\2") - buf.write(u"\u08b9\u010e\3\2\2\2\17\2\u082d\u0859\u085e\u0879\u087f") - buf.write(u"\u0885\u088c\u088e\u0898\u089d\u08a7\u08b5\3\b\2\2") + buf.write("\3\u608b\ua72a\u8133\ub9ed\u417c\u3be7\u7786\u5964\2\u0086") + buf.write("\u08ba\b\1\4\2\t\2\4\3\t\3\4\4\t\4\4\5\t\5\4\6\t\6\4\7") + buf.write("\t\7\4\b\t\b\4\t\t\t\4\n\t\n\4\13\t\13\4\f\t\f\4\r\t\r") + buf.write("\4\16\t\16\4\17\t\17\4\20\t\20\4\21\t\21\4\22\t\22\4\23") + buf.write("\t\23\4\24\t\24\4\25\t\25\4\26\t\26\4\27\t\27\4\30\t\30") + buf.write("\4\31\t\31\4\32\t\32\4\33\t\33\4\34\t\34\4\35\t\35\4\36") + buf.write("\t\36\4\37\t\37\4 \t \4!\t!\4\"\t\"\4#\t#\4$\t$\4%\t%") + buf.write("\4&\t&\4\'\t\'\4(\t(\4)\t)\4*\t*\4+\t+\4,\t,\4-\t-\4.") + buf.write("\t.\4/\t/\4\60\t\60\4\61\t\61\4\62\t\62\4\63\t\63\4\64") + buf.write("\t\64\4\65\t\65\4\66\t\66\4\67\t\67\48\t8\49\t9\4:\t:") + buf.write("\4;\t;\4<\t<\4=\t=\4>\t>\4?\t?\4@\t@\4A\tA\4B\tB\4C\t") + buf.write("C\4D\tD\4E\tE\4F\tF\4G\tG\4H\tH\4I\tI\4J\tJ\4K\tK\4L\t") + buf.write("L\4M\tM\4N\tN\4O\tO\4P\tP\4Q\tQ\4R\tR\4S\tS\4T\tT\4U\t") + buf.write("U\4V\tV\4W\tW\4X\tX\4Y\tY\4Z\tZ\4[\t[\4\\\t\\\4]\t]\4") + buf.write("^\t^\4_\t_\4`\t`\4a\ta\4b\tb\4c\tc\4d\td\4e\te\4f\tf\4") + buf.write("g\tg\4h\th\4i\ti\4j\tj\4k\tk\4l\tl\4m\tm\4n\tn\4o\to\4") + buf.write("p\tp\4q\tq\4r\tr\4s\ts\4t\tt\4u\tu\4v\tv\4w\tw\4x\tx\4") + buf.write("y\ty\4z\tz\4{\t{\4|\t|\4}\t}\4~\t~\4\177\t\177\4\u0080") + buf.write("\t\u0080\4\u0081\t\u0081\4\u0082\t\u0082\4\u0083\t\u0083") + buf.write("\4\u0084\t\u0084\4\u0085\t\u0085\4\u0086\t\u0086\4\u0087") + buf.write("\t\u0087\3\2\3\2\3\3\3\3\3\4\3\4\3\4\3\4\3\4\3\4\3\4\3") + buf.write("\4\3\4\3\4\3\4\3\4\3\4\3\4\3\4\3\5\3\5\3\6\3\6\3\7\3\7") + buf.write("\3\7\3\7\3\7\3\7\3\7\3\7\3\7\3\7\3\7\3\7\3\7\3\7\3\b\3") + buf.write("\b\3\b\3\b\3\b\3\b\3\b\3\b\3\b\3\b\3\b\3\b\3\b\3\b\3\b") + buf.write("\3\b\3\b\3\b\3\b\3\t\3\t\3\t\3\t\3\t\3\t\3\t\3\t\3\t\3") + buf.write("\t\3\t\3\t\3\t\3\n\3\n\3\n\3\n\3\n\3\n\3\n\3\n\3\n\3\n") + buf.write("\3\n\3\n\3\n\3\n\3\n\3\n\3\n\3\n\3\n\3\n\3\n\3\n\3\13") + buf.write("\3\13\3\13\3\13\3\13\3\13\3\13\3\13\3\13\3\13\3\13\3\13") + buf.write("\3\13\3\13\3\13\3\13\3\13\3\13\3\13\3\13\3\13\3\13\3\13") + buf.write("\3\f\3\f\3\f\3\f\3\f\3\f\3\f\3\f\3\f\3\f\3\f\3\f\3\f\3") + buf.write("\f\3\f\3\f\3\f\3\r\3\r\3\r\3\r\3\r\3\r\3\r\3\r\3\r\3\r") + buf.write("\3\r\3\r\3\r\3\r\3\r\3\r\3\r\3\r\3\r\3\r\3\r\3\r\3\r\3") + buf.write("\r\3\16\3\16\3\16\3\16\3\16\3\16\3\16\3\16\3\16\3\17\3") + buf.write("\17\3\17\3\17\3\17\3\17\3\17\3\17\3\17\3\17\3\17\3\17") + buf.write("\3\17\3\17\3\17\3\17\3\17\3\17\3\17\3\17\3\17\3\20\3\20") + buf.write("\3\20\3\20\3\20\3\20\3\20\3\20\3\20\3\20\3\20\3\20\3\20") + buf.write("\3\20\3\20\3\20\3\21\3\21\3\21\3\21\3\21\3\21\3\21\3\21") + buf.write("\3\21\3\21\3\21\3\22\3\22\3\22\3\22\3\22\3\22\3\22\3\22") + buf.write("\3\22\3\22\3\22\3\22\3\22\3\22\3\22\3\22\3\22\3\22\3\23") + buf.write("\3\23\3\23\3\23\3\23\3\23\3\23\3\23\3\23\3\23\3\23\3\23") + buf.write("\3\23\3\23\3\23\3\23\3\23\3\23\3\23\3\23\3\23\3\23\3\23") + buf.write("\3\24\3\24\3\24\3\24\3\24\3\24\3\24\3\24\3\24\3\24\3\24") + buf.write("\3\24\3\24\3\24\3\24\3\24\3\24\3\24\3\24\3\24\3\24\3\24") + buf.write("\3\24\3\24\3\24\3\25\3\25\3\25\3\25\3\25\3\25\3\25\3\25") + buf.write("\3\25\3\25\3\25\3\25\3\25\3\25\3\25\3\25\3\25\3\25\3\25") + buf.write("\3\25\3\25\3\26\3\26\3\26\3\26\3\26\3\26\3\26\3\26\3\26") + buf.write("\3\26\3\26\3\26\3\26\3\26\3\26\3\26\3\26\3\26\3\26\3\26") + buf.write("\3\27\3\27\3\27\3\27\3\27\3\27\3\27\3\27\3\27\3\27\3\27") + buf.write("\3\27\3\27\3\27\3\27\3\27\3\30\3\30\3\30\3\30\3\30\3\30") + buf.write("\3\30\3\30\3\30\3\30\3\30\3\30\3\30\3\30\3\30\3\30\3\30") + buf.write("\3\30\3\30\3\30\3\30\3\31\3\31\3\31\3\31\3\31\3\31\3\31") + buf.write("\3\31\3\31\3\31\3\31\3\31\3\31\3\31\3\31\3\31\3\31\3\31") + buf.write("\3\31\3\31\3\32\3\32\3\32\3\32\3\32\3\32\3\32\3\32\3\32") + buf.write("\3\32\3\32\3\32\3\32\3\32\3\32\3\32\3\32\3\32\3\32\3\32") + buf.write("\3\32\3\32\3\32\3\32\3\32\3\32\3\32\3\32\3\32\3\32\3\33") + buf.write("\3\33\3\33\3\33\3\33\3\33\3\33\3\33\3\33\3\33\3\33\3\33") + buf.write("\3\33\3\33\3\33\3\33\3\33\3\33\3\33\3\33\3\33\3\33\3\33") + buf.write("\3\33\3\33\3\33\3\33\3\33\3\33\3\33\3\33\3\33\3\34\3\34") + buf.write("\3\34\3\34\3\34\3\34\3\34\3\34\3\34\3\34\3\34\3\34\3\34") + buf.write("\3\34\3\34\3\35\3\35\3\35\3\35\3\35\3\35\3\35\3\35\3\36") + buf.write("\3\36\3\36\3\36\3\36\3\36\3\36\3\36\3\36\3\36\3\36\3\37") + buf.write("\3\37\3\37\3\37\3\37\3\37\3\37\3\37\3\37\3\37\3\37\3\37") + buf.write("\3\37\3\37\3\37\3\37\3 \3 \3 \3 \3 \3 \3 \3 \3 \3 \3!") + buf.write("\3!\3!\3!\3!\3!\3!\3!\3!\3!\3!\3!\3!\3!\3!\3!\3!\3!\3") + buf.write("!\3!\3!\3\"\3\"\3\"\3\"\3\"\3\"\3\"\3\"\3\"\3\"\3\"\3") + buf.write("#\3#\3#\3#\3#\3#\3#\3#\3#\3#\3#\3#\3#\3$\3$\3$\3$\3$\3") + buf.write("$\3$\3$\3$\3$\3$\3$\3$\3$\3$\3$\3$\3%\3%\3%\3%\3%\3%\3") + buf.write("%\3%\3%\3%\3%\3%\3%\3%\3%\3%\3%\3%\3&\3&\3&\3&\3&\3&\3") + buf.write("&\3&\3&\3&\3&\3&\3&\3&\3&\3\'\3\'\3\'\3\'\3\'\3\'\3\'") + buf.write("\3\'\3\'\3\'\3\'\3\'\3(\3(\3(\3(\3(\3(\3(\3(\3(\3)\3)") + buf.write("\3)\3)\3)\3)\3)\3)\3)\3*\3*\3*\3*\3*\3*\3*\3*\3*\3+\3") + buf.write("+\3+\3+\3+\3+\3+\3+\3+\3+\3+\3+\3+\3+\3+\3+\3+\3+\3+\3") + buf.write(",\3,\3,\3,\3,\3,\3,\3,\3,\3,\3,\3,\3,\3,\3-\3-\3-\3-\3") + buf.write("-\3-\3-\3-\3-\3-\3-\3-\3.\3.\3.\3.\3.\3.\3.\3.\3/\3/\3") + buf.write("/\3/\3/\3/\3/\3/\3/\3/\3/\3/\3/\3/\3/\3/\3/\3/\3/\3/\3") + buf.write("/\3/\3/\3/\3/\3/\3/\3\60\3\60\3\60\3\60\3\60\3\61\3\61") + buf.write("\3\61\3\61\3\61\3\62\3\62\3\62\3\62\3\62\3\62\3\62\3\62") + buf.write("\3\62\3\62\3\62\3\63\3\63\3\63\3\63\3\63\3\63\3\63\3\63") + buf.write("\3\63\3\63\3\63\3\63\3\63\3\63\3\63\3\63\3\64\3\64\3\64") + buf.write("\3\64\3\64\3\64\3\65\3\65\3\65\3\65\3\65\3\65\3\65\3\65") + buf.write("\3\65\3\65\3\65\3\65\3\65\3\65\3\65\3\65\3\65\3\65\3\65") + buf.write("\3\65\3\65\3\65\3\65\3\65\3\65\3\65\3\65\3\65\3\65\3\65") + buf.write("\3\65\3\65\3\65\3\65\3\65\3\66\3\66\3\67\3\67\38\38\3") + buf.write("9\39\39\39\39\39\39\39\39\39\39\39\39\39\39\39\39\39\3") + buf.write("9\39\39\39\39\3:\3:\3:\3:\3:\3:\3:\3:\3:\3:\3:\3:\3;\3") + buf.write(";\3;\3;\3;\3;\3;\3;\3;\3;\3;\3<\3<\3<\3<\3<\3<\3<\3<\3") + buf.write("<\3<\3<\3<\3<\3=\3=\3=\3=\3=\3=\3=\3=\3=\3=\3=\3=\3>\3") + buf.write(">\3>\3>\3>\3>\3>\3>\3>\3>\3>\3>\3>\3>\3>\3>\3>\3?\3?\3") + buf.write("?\3?\3?\3?\3?\3?\3?\3?\3?\3?\3@\3@\3@\3@\3@\3@\3@\3@\3") + buf.write("@\3@\3@\3A\3A\3A\3A\3A\3A\3A\3A\3A\3A\3A\3A\3A\3A\3A\3") + buf.write("A\3A\3A\3A\3A\3A\3A\3A\3A\3A\3A\3A\3A\3A\3A\3A\3A\3A\3") + buf.write("A\3B\3B\3B\3B\3B\3B\3B\3B\3B\3B\3B\3B\3B\3B\3B\3B\3B\3") + buf.write("B\3B\3B\3B\3B\3B\3B\3B\3B\3B\3B\3B\3B\3B\3B\3B\3B\3B\3") + buf.write("C\3C\3C\3C\3C\3C\3C\3C\3C\3C\3C\3D\3D\3D\3D\3D\3D\3D\3") + buf.write("D\3D\3D\3D\3D\3D\3D\3D\3D\3D\3D\3D\3E\3E\3E\3E\3E\3E\3") + buf.write("E\3E\3E\3E\3E\3E\3E\3E\3E\3E\3E\3E\3E\3E\3E\3E\3E\3E\3") + buf.write("E\3E\3E\3E\3E\3E\3E\3E\3E\3E\3E\3F\3F\3F\3F\3F\3F\3F\3") + buf.write("F\3F\3F\3F\3F\3F\3F\3F\3F\3F\3F\3F\3F\3F\3G\3G\3G\3G\3") + buf.write("G\3G\3G\3G\3G\3G\3G\3G\3G\3G\3G\3G\3G\3G\3G\3G\3G\3G\3") + buf.write("G\3G\3G\3G\3G\3G\3G\3G\3G\3G\3G\3G\3H\3H\3H\3H\3H\3H\3") + buf.write("H\3H\3H\3H\3H\3H\3H\3H\3H\3H\3H\3I\3I\3I\3I\3I\3I\3I\3") + buf.write("I\3I\3I\3I\3I\3I\3I\3I\3I\3I\3I\3I\3I\3I\3I\3I\3I\3J\3") + buf.write("J\3J\3J\3J\3J\3J\3J\3J\3J\3J\3J\3J\3J\3J\3J\3J\3K\3K\3") + buf.write("K\3K\3K\3K\3K\3K\3K\3K\3K\3K\3K\3K\3K\3K\3K\3L\3L\3L\3") + buf.write("L\3L\3L\3L\3L\3L\3L\3L\3L\3L\3L\3L\3L\3L\3L\3L\3L\3L\3") + buf.write("L\3M\3M\3M\3M\3M\3M\3M\3M\3M\3M\3M\3M\3M\3N\3N\3N\3N\3") + buf.write("N\3N\3N\3N\3N\3N\3N\3N\3N\3N\3N\3N\3O\3O\3O\3O\3O\3O\3") + buf.write("O\3O\3O\3O\3O\3O\3O\3O\3O\3O\3O\3O\3P\3P\3P\3P\3P\3P\3") + buf.write("P\3P\3P\3P\3P\3P\3P\3P\3P\3P\3P\3P\3P\3P\3P\3Q\3Q\3Q\3") + buf.write("Q\3Q\3Q\3Q\3Q\3Q\3Q\3Q\3Q\3Q\3Q\3Q\3Q\3Q\3Q\3R\3R\3R\3") + buf.write("R\3R\3R\3R\3R\3R\3R\3R\3R\3R\3R\3R\3R\3R\3R\3R\3R\3R\3") + buf.write("R\3R\3S\3S\3S\3S\3S\3S\3S\3S\3S\3S\3S\3S\3S\3T\3T\3T\3") + buf.write("T\3T\3T\3T\3T\3T\3T\3U\3U\3U\3U\3U\3U\3U\3U\3U\3U\3U\3") + buf.write("U\3U\3U\3U\3U\3V\3V\3V\3V\3V\3V\3V\3V\3V\3V\3V\3V\3V\3") + buf.write("V\3V\3V\3V\3V\3W\3W\3W\3W\3W\3W\3W\3W\3W\3W\3W\3W\3W\3") + buf.write("W\3W\3X\3X\3X\3X\3X\3X\3X\3X\3X\3X\3X\3X\3X\3X\3X\3X\3") + buf.write("X\3X\3Y\3Y\3Y\3Y\3Y\3Y\3Y\3Y\3Y\3Y\3Y\3Y\3Z\3Z\3Z\3Z\3") + buf.write("Z\3Z\3Z\3Z\3[\3[\3[\3[\3[\3[\3[\3[\3[\3[\3[\3[\3[\3[\3") + buf.write("[\3[\3[\3[\3[\3\\\3\\\3\\\3\\\3\\\3\\\3\\\3\\\3\\\3\\") + buf.write("\3\\\3]\3]\3]\3]\3]\3]\3]\3]\3]\3]\3]\3]\3]\3]\3]\3]\3") + buf.write("]\3]\3]\3]\3^\3^\3^\3^\3^\3^\3^\3^\3^\3^\3^\3^\3_\3_\3") + buf.write("_\3_\3_\3_\3_\3_\3_\3_\3`\3`\3`\3`\3`\3`\3`\3`\3`\3`\3") + buf.write("`\3`\3a\3a\3a\3a\3a\3a\3a\3a\3a\3a\3a\3a\3a\3a\3a\3a\3") + buf.write("a\3b\3b\3b\3b\3b\3b\3b\3c\3c\3c\3c\3c\3c\3c\3c\3c\3c\3") + buf.write("c\3c\3d\3d\3d\3d\3d\3d\3d\3d\3d\3e\3e\3e\3e\3e\3e\3e\3") + buf.write("e\3e\3e\3f\3f\3f\3f\3f\3f\3f\3f\3f\3f\3f\3f\3f\3f\3f\3") + buf.write("f\3f\3f\3f\3f\3f\3f\3f\3f\3f\3f\3f\3g\3g\3g\3g\3g\3g\3") + buf.write("g\3g\3g\3g\3g\3g\3g\3g\3h\3h\3h\3h\3h\3h\3h\3h\3i\3i\3") + buf.write("i\3i\3i\3i\3i\3i\3i\3i\3i\3i\3i\3i\3i\3i\3i\3j\3j\3j\3") + buf.write("j\3j\3j\3j\3j\3j\3j\3j\3j\3j\3k\3k\3k\3k\3k\3k\3k\3k\3") + buf.write("k\3k\3k\3l\3l\3l\3l\3l\3l\3l\3l\3l\3l\3l\3l\3l\3l\3l\3") + buf.write("l\3l\3l\3l\3l\3m\3m\3m\3m\3m\3m\3m\3m\3m\3m\3m\3m\3m\3") + buf.write("m\3m\3m\3m\3m\3m\3m\3m\3m\3m\3m\3m\3m\3m\3m\3m\3m\3n\3") + buf.write("n\3n\3n\3n\3n\3n\3n\3n\3n\3n\3n\3n\3n\3n\3n\3n\3n\3n\3") + buf.write("n\3n\3n\3n\3n\3n\3o\3o\3o\3o\3o\3o\3o\3o\3o\3p\3p\3p\3") + buf.write("p\3p\3p\3p\3p\3p\3p\3p\3p\3p\3p\3p\3p\3p\3p\3p\3q\3q\3") + buf.write("q\3q\3q\3q\3q\3q\3q\3q\3q\3q\3q\3q\3q\3r\3r\3r\3r\3r\3") + buf.write("r\3r\3r\3r\3r\3r\3r\3r\3r\3r\3r\3r\3s\3s\3s\3s\3s\3s\3") + buf.write("s\3s\3s\3s\3s\3s\3t\3t\3t\3t\3t\3t\3t\3t\3u\3u\3u\3u\3") + buf.write("v\3v\3v\3v\3v\3v\3v\3v\3w\3w\3w\3w\3w\3w\3w\3w\3w\3w\3") + buf.write("w\3x\6x\u082c\nx\rx\16x\u082d\3y\3y\3z\3z\3{\3{\3|\3|") + buf.write("\3}\3}\3~\3~\3\177\3\177\3\177\3\177\3\177\3\177\3\177") + buf.write("\3\177\3\177\3\177\3\177\3\177\3\177\3\177\3\177\3\177") + buf.write("\3\177\3\177\3\177\3\177\3\177\3\177\3\177\3\177\3\177") + buf.write("\3\177\3\177\3\177\3\177\3\177\5\177\u085a\n\177\3\177") + buf.write("\6\177\u085d\n\177\r\177\16\177\u085e\3\177\3\177\3\177") + buf.write("\3\177\3\177\3\177\3\177\3\177\3\177\3\177\3\177\3\177") + buf.write("\3\177\3\177\3\177\3\177\3\177\3\177\3\177\3\177\3\177") + buf.write("\3\177\3\177\3\177\3\177\5\177\u087a\n\177\3\u0080\3\u0080") + buf.write("\6\u0080\u087e\n\u0080\r\u0080\16\u0080\u087f\3\u0080") + buf.write("\3\u0080\3\u0080\3\u0080\5\u0080\u0886\n\u0080\3\u0081") + buf.write("\3\u0081\3\u0081\3\u0081\3\u0081\6\u0081\u088d\n\u0081") + buf.write("\r\u0081\16\u0081\u088e\3\u0082\3\u0082\3\u0082\3\u0083") + buf.write("\3\u0083\3\u0084\3\u0084\3\u0084\5\u0084\u0899\n\u0084") + buf.write("\3\u0085\6\u0085\u089c\n\u0085\r\u0085\16\u0085\u089d") + buf.write("\3\u0085\3\u0085\3\u0086\3\u0086\3\u0086\3\u0086\7\u0086") + buf.write("\u08a6\n\u0086\f\u0086\16\u0086\u08a9\13\u0086\3\u0086") + buf.write("\3\u0086\3\u0086\3\u0086\3\u0086\3\u0087\3\u0087\3\u0087") + buf.write("\3\u0087\7\u0087\u08b4\n\u0087\f\u0087\16\u0087\u08b7") + buf.write("\13\u0087\3\u0087\3\u0087\3\u08a7\2\u0088\3\3\5\4\7\5") + buf.write("\t\6\13\7\r\b\17\t\21\n\23\13\25\f\27\r\31\16\33\17\35") + buf.write("\20\37\21!\22#\23%\24\'\25)\26+\27-\30/\31\61\32\63\33") + buf.write("\65\34\67\359\36;\37= ?!A\"C#E$G%I&K\'M(O)Q*S+U,W-Y.[") + buf.write("/]\60_\61a\62c\63e\64g\65i\66k\67m8o9q:s;u{?}@\177") + buf.write("A\u0081B\u0083C\u0085D\u0087E\u0089F\u008bG\u008dH\u008f") + buf.write("I\u0091J\u0093K\u0095L\u0097M\u0099N\u009bO\u009dP\u009f") + buf.write("Q\u00a1R\u00a3S\u00a5T\u00a7U\u00a9V\u00abW\u00adX\u00af") + buf.write("Y\u00b1Z\u00b3[\u00b5\\\u00b7]\u00b9^\u00bb_\u00bd`\u00bf") + buf.write("a\u00c1b\u00c3c\u00c5d\u00c7e\u00c9f\u00cbg\u00cdh\u00cf") + buf.write("i\u00d1j\u00d3k\u00d5l\u00d7m\u00d9n\u00dbo\u00ddp\u00df") + buf.write("q\u00e1r\u00e3s\u00e5t\u00e7u\u00e9v\u00ebw\u00edx\u00ef") + buf.write("y\u00f1z\u00f3{\u00f5|\u00f7}\u00f9~\u00fb\177\u00fd\u0080") + buf.write("\u00ff\u0081\u0101\u0082\u0103\u0083\u0105\2\u0107\2\u0109") + buf.write("\u0084\u010b\u0085\u010d\u0086\3\2\b\5\2\62;C\\c|\4\2") + buf.write("\62;C\\\5\2\62;CHch\3\2$$\5\2\13\f\16\17\"\"\4\2\f\f\17") + buf.write("\17\2\u08c7\2\3\3\2\2\2\2\5\3\2\2\2\2\7\3\2\2\2\2\t\3") + buf.write("\2\2\2\2\13\3\2\2\2\2\r\3\2\2\2\2\17\3\2\2\2\2\21\3\2") + buf.write("\2\2\2\23\3\2\2\2\2\25\3\2\2\2\2\27\3\2\2\2\2\31\3\2\2") + buf.write("\2\2\33\3\2\2\2\2\35\3\2\2\2\2\37\3\2\2\2\2!\3\2\2\2\2") + buf.write("#\3\2\2\2\2%\3\2\2\2\2\'\3\2\2\2\2)\3\2\2\2\2+\3\2\2\2") + buf.write("\2-\3\2\2\2\2/\3\2\2\2\2\61\3\2\2\2\2\63\3\2\2\2\2\65") + buf.write("\3\2\2\2\2\67\3\2\2\2\29\3\2\2\2\2;\3\2\2\2\2=\3\2\2\2") + buf.write("\2?\3\2\2\2\2A\3\2\2\2\2C\3\2\2\2\2E\3\2\2\2\2G\3\2\2") + buf.write("\2\2I\3\2\2\2\2K\3\2\2\2\2M\3\2\2\2\2O\3\2\2\2\2Q\3\2") + buf.write("\2\2\2S\3\2\2\2\2U\3\2\2\2\2W\3\2\2\2\2Y\3\2\2\2\2[\3") + buf.write("\2\2\2\2]\3\2\2\2\2_\3\2\2\2\2a\3\2\2\2\2c\3\2\2\2\2e") + buf.write("\3\2\2\2\2g\3\2\2\2\2i\3\2\2\2\2k\3\2\2\2\2m\3\2\2\2\2") + buf.write("o\3\2\2\2\2q\3\2\2\2\2s\3\2\2\2\2u\3\2\2\2\2w\3\2\2\2") + buf.write("\2y\3\2\2\2\2{\3\2\2\2\2}\3\2\2\2\2\177\3\2\2\2\2\u0081") + buf.write("\3\2\2\2\2\u0083\3\2\2\2\2\u0085\3\2\2\2\2\u0087\3\2\2") + buf.write("\2\2\u0089\3\2\2\2\2\u008b\3\2\2\2\2\u008d\3\2\2\2\2\u008f") + buf.write("\3\2\2\2\2\u0091\3\2\2\2\2\u0093\3\2\2\2\2\u0095\3\2\2") + buf.write("\2\2\u0097\3\2\2\2\2\u0099\3\2\2\2\2\u009b\3\2\2\2\2\u009d") + buf.write("\3\2\2\2\2\u009f\3\2\2\2\2\u00a1\3\2\2\2\2\u00a3\3\2\2") + buf.write("\2\2\u00a5\3\2\2\2\2\u00a7\3\2\2\2\2\u00a9\3\2\2\2\2\u00ab") + buf.write("\3\2\2\2\2\u00ad\3\2\2\2\2\u00af\3\2\2\2\2\u00b1\3\2\2") + buf.write("\2\2\u00b3\3\2\2\2\2\u00b5\3\2\2\2\2\u00b7\3\2\2\2\2\u00b9") + buf.write("\3\2\2\2\2\u00bb\3\2\2\2\2\u00bd\3\2\2\2\2\u00bf\3\2\2") + buf.write("\2\2\u00c1\3\2\2\2\2\u00c3\3\2\2\2\2\u00c5\3\2\2\2\2\u00c7") + buf.write("\3\2\2\2\2\u00c9\3\2\2\2\2\u00cb\3\2\2\2\2\u00cd\3\2\2") + buf.write("\2\2\u00cf\3\2\2\2\2\u00d1\3\2\2\2\2\u00d3\3\2\2\2\2\u00d5") + buf.write("\3\2\2\2\2\u00d7\3\2\2\2\2\u00d9\3\2\2\2\2\u00db\3\2\2") + buf.write("\2\2\u00dd\3\2\2\2\2\u00df\3\2\2\2\2\u00e1\3\2\2\2\2\u00e3") + buf.write("\3\2\2\2\2\u00e5\3\2\2\2\2\u00e7\3\2\2\2\2\u00e9\3\2\2") + buf.write("\2\2\u00eb\3\2\2\2\2\u00ed\3\2\2\2\2\u00ef\3\2\2\2\2\u00f1") + buf.write("\3\2\2\2\2\u00f3\3\2\2\2\2\u00f5\3\2\2\2\2\u00f7\3\2\2") + buf.write("\2\2\u00f9\3\2\2\2\2\u00fb\3\2\2\2\2\u00fd\3\2\2\2\2\u00ff") + buf.write("\3\2\2\2\2\u0101\3\2\2\2\2\u0103\3\2\2\2\2\u0109\3\2\2") + buf.write("\2\2\u010b\3\2\2\2\2\u010d\3\2\2\2\3\u010f\3\2\2\2\5\u0111") + buf.write("\3\2\2\2\7\u0113\3\2\2\2\t\u0122\3\2\2\2\13\u0124\3\2") + buf.write("\2\2\r\u0126\3\2\2\2\17\u0134\3\2\2\2\21\u0147\3\2\2\2") + buf.write("\23\u0154\3\2\2\2\25\u016a\3\2\2\2\27\u0181\3\2\2\2\31") + buf.write("\u0192\3\2\2\2\33\u01aa\3\2\2\2\35\u01b3\3\2\2\2\37\u01c8") + buf.write("\3\2\2\2!\u01d8\3\2\2\2#\u01e3\3\2\2\2%\u01f5\3\2\2\2") + buf.write("\'\u020c\3\2\2\2)\u0225\3\2\2\2+\u023a\3\2\2\2-\u024e") + buf.write("\3\2\2\2/\u025e\3\2\2\2\61\u0273\3\2\2\2\63\u0287\3\2") + buf.write("\2\2\65\u02a5\3\2\2\2\67\u02c5\3\2\2\29\u02d4\3\2\2\2") + buf.write(";\u02dc\3\2\2\2=\u02e7\3\2\2\2?\u02f7\3\2\2\2A\u0301\3") + buf.write("\2\2\2C\u0316\3\2\2\2E\u0321\3\2\2\2G\u032e\3\2\2\2I\u033f") + buf.write("\3\2\2\2K\u0351\3\2\2\2M\u0360\3\2\2\2O\u036c\3\2\2\2") + buf.write("Q\u0375\3\2\2\2S\u037e\3\2\2\2U\u0387\3\2\2\2W\u039a\3") + buf.write("\2\2\2Y\u03a8\3\2\2\2[\u03b4\3\2\2\2]\u03bc\3\2\2\2_\u03d7") + buf.write("\3\2\2\2a\u03dc\3\2\2\2c\u03e1\3\2\2\2e\u03ec\3\2\2\2") + buf.write("g\u03fc\3\2\2\2i\u0402\3\2\2\2k\u0425\3\2\2\2m\u0427\3") + buf.write("\2\2\2o\u0429\3\2\2\2q\u042b\3\2\2\2s\u0442\3\2\2\2u\u044e") + buf.write("\3\2\2\2w\u0459\3\2\2\2y\u0466\3\2\2\2{\u0472\3\2\2\2") + buf.write("}\u0483\3\2\2\2\177\u048f\3\2\2\2\u0081\u049a\3\2\2\2") + buf.write("\u0083\u04bc\3\2\2\2\u0085\u04df\3\2\2\2\u0087\u04ea\3") + buf.write("\2\2\2\u0089\u04fd\3\2\2\2\u008b\u0520\3\2\2\2\u008d\u0535") + buf.write("\3\2\2\2\u008f\u0557\3\2\2\2\u0091\u0568\3\2\2\2\u0093") + buf.write("\u0580\3\2\2\2\u0095\u0591\3\2\2\2\u0097\u05a2\3\2\2\2") + buf.write("\u0099\u05b8\3\2\2\2\u009b\u05c5\3\2\2\2\u009d\u05d5\3") + buf.write("\2\2\2\u009f\u05e7\3\2\2\2\u00a1\u05fc\3\2\2\2\u00a3\u060e") + buf.write("\3\2\2\2\u00a5\u0625\3\2\2\2\u00a7\u0632\3\2\2\2\u00a9") + buf.write("\u063c\3\2\2\2\u00ab\u064c\3\2\2\2\u00ad\u065e\3\2\2\2") + buf.write("\u00af\u066d\3\2\2\2\u00b1\u067f\3\2\2\2\u00b3\u068b\3") + buf.write("\2\2\2\u00b5\u0693\3\2\2\2\u00b7\u06a6\3\2\2\2\u00b9\u06b1") + buf.write("\3\2\2\2\u00bb\u06c5\3\2\2\2\u00bd\u06d1\3\2\2\2\u00bf") + buf.write("\u06db\3\2\2\2\u00c1\u06e7\3\2\2\2\u00c3\u06f8\3\2\2\2") + buf.write("\u00c5\u06ff\3\2\2\2\u00c7\u070b\3\2\2\2\u00c9\u0714\3") + buf.write("\2\2\2\u00cb\u071e\3\2\2\2\u00cd\u0739\3\2\2\2\u00cf\u0747") + buf.write("\3\2\2\2\u00d1\u074f\3\2\2\2\u00d3\u0760\3\2\2\2\u00d5") + buf.write("\u076d\3\2\2\2\u00d7\u0778\3\2\2\2\u00d9\u078c\3\2\2\2") + buf.write("\u00db\u07aa\3\2\2\2\u00dd\u07c3\3\2\2\2\u00df\u07cc\3") + buf.write("\2\2\2\u00e1\u07df\3\2\2\2\u00e3\u07ee\3\2\2\2\u00e5\u07ff") + buf.write("\3\2\2\2\u00e7\u080b\3\2\2\2\u00e9\u0813\3\2\2\2\u00eb") + buf.write("\u0817\3\2\2\2\u00ed\u081f\3\2\2\2\u00ef\u082b\3\2\2\2") + buf.write("\u00f1\u082f\3\2\2\2\u00f3\u0831\3\2\2\2\u00f5\u0833\3") + buf.write("\2\2\2\u00f7\u0835\3\2\2\2\u00f9\u0837\3\2\2\2\u00fb\u0839") + buf.write("\3\2\2\2\u00fd\u0879\3\2\2\2\u00ff\u0885\3\2\2\2\u0101") + buf.write("\u088c\3\2\2\2\u0103\u0890\3\2\2\2\u0105\u0893\3\2\2\2") + buf.write("\u0107\u0898\3\2\2\2\u0109\u089b\3\2\2\2\u010b\u08a1\3") + buf.write("\2\2\2\u010d\u08af\3\2\2\2\u010f\u0110\7}\2\2\u0110\4") + buf.write("\3\2\2\2\u0111\u0112\7\177\2\2\u0112\6\3\2\2\2\u0113\u0114") + buf.write("\7c\2\2\u0114\u0115\7t\2\2\u0115\u0116\7e\2\2\u0116\u0117") + buf.write("\7j\2\2\u0117\u0118\7k\2\2\u0118\u0119\7x\2\2\u0119\u011a") + buf.write("\7g\2\2\u011a\u011b\7X\2\2\u011b\u011c\7g\2\2\u011c\u011d") + buf.write("\7t\2\2\u011d\u011e\7u\2\2\u011e\u011f\7k\2\2\u011f\u0120") + buf.write("\7q\2\2\u0120\u0121\7p\2\2\u0121\b\3\2\2\2\u0122\u0123") + buf.write("\7?\2\2\u0123\n\3\2\2\2\u0124\u0125\7=\2\2\u0125\f\3\2") + buf.write("\2\2\u0126\u0127\7q\2\2\u0127\u0128\7d\2\2\u0128\u0129") + buf.write("\7l\2\2\u0129\u012a\7g\2\2\u012a\u012b\7e\2\2\u012b\u012c") + buf.write("\7v\2\2\u012c\u012d\7X\2\2\u012d\u012e\7g\2\2\u012e\u012f") + buf.write("\7t\2\2\u012f\u0130\7u\2\2\u0130\u0131\7k\2\2\u0131\u0132") + buf.write("\7q\2\2\u0132\u0133\7p\2\2\u0133\16\3\2\2\2\u0134\u0135") + buf.write("\7R\2\2\u0135\u0136\7D\2\2\u0136\u0137\7Z\2\2\u0137\u0138") + buf.write("\7C\2\2\u0138\u0139\7i\2\2\u0139\u013a\7i\2\2\u013a\u013b") + buf.write("\7t\2\2\u013b\u013c\7g\2\2\u013c\u013d\7i\2\2\u013d\u013e") + buf.write("\7c\2\2\u013e\u013f\7v\2\2\u013f\u0140\7g\2\2\u0140\u0141") + buf.write("\7V\2\2\u0141\u0142\7c\2\2\u0142\u0143\7t\2\2\u0143\u0144") + buf.write("\7i\2\2\u0144\u0145\7g\2\2\u0145\u0146\7v\2\2\u0146\20") + buf.write("\3\2\2\2\u0147\u0148\7R\2\2\u0148\u0149\7D\2\2\u0149\u014a") + buf.write("\7Z\2\2\u014a\u014b\7D\2\2\u014b\u014c\7w\2\2\u014c\u014d") + buf.write("\7k\2\2\u014d\u014e\7n\2\2\u014e\u014f\7f\2\2\u014f\u0150") + buf.write("\7H\2\2\u0150\u0151\7k\2\2\u0151\u0152\7n\2\2\u0152\u0153") + buf.write("\7g\2\2\u0153\22\3\2\2\2\u0154\u0155\7R\2\2\u0155\u0156") + buf.write("\7D\2\2\u0156\u0157\7Z\2\2\u0157\u0158\7E\2\2\u0158\u0159") + buf.write("\7q\2\2\u0159\u015a\7p\2\2\u015a\u015b\7v\2\2\u015b\u015c") + buf.write("\7c\2\2\u015c\u015d\7k\2\2\u015d\u015e\7p\2\2\u015e\u015f") + buf.write("\7g\2\2\u015f\u0160\7t\2\2\u0160\u0161\7K\2\2\u0161\u0162") + buf.write("\7v\2\2\u0162\u0163\7g\2\2\u0163\u0164\7o\2\2\u0164\u0165") + buf.write("\7R\2\2\u0165\u0166\7t\2\2\u0166\u0167\7q\2\2\u0167\u0168") + buf.write("\7z\2\2\u0168\u0169\7{\2\2\u0169\24\3\2\2\2\u016a\u016b") + buf.write("\7R\2\2\u016b\u016c\7D\2\2\u016c\u016d\7Z\2\2\u016d\u016e") + buf.write("\7E\2\2\u016e\u016f\7q\2\2\u016f\u0170\7r\2\2\u0170\u0171") + buf.write("\7{\2\2\u0171\u0172\7H\2\2\u0172\u0173\7k\2\2\u0173\u0174") + buf.write("\7n\2\2\u0174\u0175\7g\2\2\u0175\u0176\7u\2\2\u0176\u0177") + buf.write("\7D\2\2\u0177\u0178\7w\2\2\u0178\u0179\7k\2\2\u0179\u017a") + buf.write("\7n\2\2\u017a\u017b\7f\2\2\u017b\u017c\7R\2\2\u017c\u017d") + buf.write("\7j\2\2\u017d\u017e\7c\2\2\u017e\u017f\7u\2\2\u017f\u0180") + buf.write("\7g\2\2\u0180\26\3\2\2\2\u0181\u0182\7R\2\2\u0182\u0183") + buf.write("\7D\2\2\u0183\u0184\7Z\2\2\u0184\u0185\7H\2\2\u0185\u0186") + buf.write("\7k\2\2\u0186\u0187\7n\2\2\u0187\u0188\7g\2\2\u0188\u0189") + buf.write("\7T\2\2\u0189\u018a\7g\2\2\u018a\u018b\7h\2\2\u018b\u018c") + buf.write("\7g\2\2\u018c\u018d\7t\2\2\u018d\u018e\7g\2\2\u018e\u018f") + buf.write("\7p\2\2\u018f\u0190\7e\2\2\u0190\u0191\7g\2\2\u0191\30") + buf.write("\3\2\2\2\u0192\u0193\7R\2\2\u0193\u0194\7D\2\2\u0194\u0195") + buf.write("\7Z\2\2\u0195\u0196\7H\2\2\u0196\u0197\7t\2\2\u0197\u0198") + buf.write("\7c\2\2\u0198\u0199\7o\2\2\u0199\u019a\7g\2\2\u019a\u019b") + buf.write("\7y\2\2\u019b\u019c\7q\2\2\u019c\u019d\7t\2\2\u019d\u019e") + buf.write("\7m\2\2\u019e\u019f\7u\2\2\u019f\u01a0\7D\2\2\u01a0\u01a1") + buf.write("\7w\2\2\u01a1\u01a2\7k\2\2\u01a2\u01a3\7n\2\2\u01a3\u01a4") + buf.write("\7f\2\2\u01a4\u01a5\7R\2\2\u01a5\u01a6\7j\2\2\u01a6\u01a7") + buf.write("\7c\2\2\u01a7\u01a8\7u\2\2\u01a8\u01a9\7g\2\2\u01a9\32") + buf.write("\3\2\2\2\u01aa\u01ab\7R\2\2\u01ab\u01ac\7D\2\2\u01ac\u01ad") + buf.write("\7Z\2\2\u01ad\u01ae\7I\2\2\u01ae\u01af\7t\2\2\u01af\u01b0") + buf.write("\7q\2\2\u01b0\u01b1\7w\2\2\u01b1\u01b2\7r\2\2\u01b2\34") + buf.write("\3\2\2\2\u01b3\u01b4\7R\2\2\u01b4\u01b5\7D\2\2\u01b5\u01b6") + buf.write("\7Z\2\2\u01b6\u01b7\7J\2\2\u01b7\u01b8\7g\2\2\u01b8\u01b9") + buf.write("\7c\2\2\u01b9\u01ba\7f\2\2\u01ba\u01bb\7g\2\2\u01bb\u01bc") + buf.write("\7t\2\2\u01bc\u01bd\7u\2\2\u01bd\u01be\7D\2\2\u01be\u01bf") + buf.write("\7w\2\2\u01bf\u01c0\7k\2\2\u01c0\u01c1\7n\2\2\u01c1\u01c2") + buf.write("\7f\2\2\u01c2\u01c3\7R\2\2\u01c3\u01c4\7j\2\2\u01c4\u01c5") + buf.write("\7c\2\2\u01c5\u01c6\7u\2\2\u01c6\u01c7\7g\2\2\u01c7\36") + buf.write("\3\2\2\2\u01c8\u01c9\7R\2\2\u01c9\u01ca\7D\2\2\u01ca\u01cb") + buf.write("\7Z\2\2\u01cb\u01cc\7P\2\2\u01cc\u01cd\7c\2\2\u01cd\u01ce") + buf.write("\7v\2\2\u01ce\u01cf\7k\2\2\u01cf\u01d0\7x\2\2\u01d0\u01d1") + buf.write("\7g\2\2\u01d1\u01d2\7V\2\2\u01d2\u01d3\7c\2\2\u01d3\u01d4") + buf.write("\7t\2\2\u01d4\u01d5\7i\2\2\u01d5\u01d6\7g\2\2\u01d6\u01d7") + buf.write("\7v\2\2\u01d7 \3\2\2\2\u01d8\u01d9\7R\2\2\u01d9\u01da") + buf.write("\7D\2\2\u01da\u01db\7Z\2\2\u01db\u01dc\7R\2\2\u01dc\u01dd") + buf.write("\7t\2\2\u01dd\u01de\7q\2\2\u01de\u01df\7l\2\2\u01df\u01e0") + buf.write("\7g\2\2\u01e0\u01e1\7e\2\2\u01e1\u01e2\7v\2\2\u01e2\"") + buf.write("\3\2\2\2\u01e3\u01e4\7R\2\2\u01e4\u01e5\7D\2\2\u01e5\u01e6") + buf.write("\7Z\2\2\u01e6\u01e7\7T\2\2\u01e7\u01e8\7g\2\2\u01e8\u01e9") + buf.write("\7h\2\2\u01e9\u01ea\7g\2\2\u01ea\u01eb\7t\2\2\u01eb\u01ec") + buf.write("\7g\2\2\u01ec\u01ed\7p\2\2\u01ed\u01ee\7e\2\2\u01ee\u01ef") + buf.write("\7g\2\2\u01ef\u01f0\7R\2\2\u01f0\u01f1\7t\2\2\u01f1\u01f2") + buf.write("\7q\2\2\u01f2\u01f3\7z\2\2\u01f3\u01f4\7{\2\2\u01f4$\3") + buf.write("\2\2\2\u01f5\u01f6\7R\2\2\u01f6\u01f7\7D\2\2\u01f7\u01f8") + buf.write("\7Z\2\2\u01f8\u01f9\7T\2\2\u01f9\u01fa\7g\2\2\u01fa\u01fb") + buf.write("\7u\2\2\u01fb\u01fc\7q\2\2\u01fc\u01fd\7w\2\2\u01fd\u01fe") + buf.write("\7t\2\2\u01fe\u01ff\7e\2\2\u01ff\u0200\7g\2\2\u0200\u0201") + buf.write("\7u\2\2\u0201\u0202\7D\2\2\u0202\u0203\7w\2\2\u0203\u0204") + buf.write("\7k\2\2\u0204\u0205\7n\2\2\u0205\u0206\7f\2\2\u0206\u0207") + buf.write("\7R\2\2\u0207\u0208\7j\2\2\u0208\u0209\7c\2\2\u0209\u020a") + buf.write("\7u\2\2\u020a\u020b\7g\2\2\u020b&\3\2\2\2\u020c\u020d") + buf.write("\7R\2\2\u020d\u020e\7D\2\2\u020e\u020f\7Z\2\2\u020f\u0210") + buf.write("\7U\2\2\u0210\u0211\7j\2\2\u0211\u0212\7g\2\2\u0212\u0213") + buf.write("\7n\2\2\u0213\u0214\7n\2\2\u0214\u0215\7U\2\2\u0215\u0216") + buf.write("\7e\2\2\u0216\u0217\7t\2\2\u0217\u0218\7k\2\2\u0218\u0219") + buf.write("\7r\2\2\u0219\u021a\7v\2\2\u021a\u021b\7D\2\2\u021b\u021c") + buf.write("\7w\2\2\u021c\u021d\7k\2\2\u021d\u021e\7n\2\2\u021e\u021f") + buf.write("\7f\2\2\u021f\u0220\7R\2\2\u0220\u0221\7j\2\2\u0221\u0222") + buf.write("\7c\2\2\u0222\u0223\7u\2\2\u0223\u0224\7g\2\2\u0224(\3") + buf.write("\2\2\2\u0225\u0226\7R\2\2\u0226\u0227\7D\2\2\u0227\u0228") + buf.write("\7Z\2\2\u0228\u0229\7U\2\2\u0229\u022a\7q\2\2\u022a\u022b") + buf.write("\7w\2\2\u022b\u022c\7t\2\2\u022c\u022d\7e\2\2\u022d\u022e") + buf.write("\7g\2\2\u022e\u022f\7u\2\2\u022f\u0230\7D\2\2\u0230\u0231") + buf.write("\7w\2\2\u0231\u0232\7k\2\2\u0232\u0233\7n\2\2\u0233\u0234") + buf.write("\7f\2\2\u0234\u0235\7R\2\2\u0235\u0236\7j\2\2\u0236\u0237") + buf.write("\7c\2\2\u0237\u0238\7u\2\2\u0238\u0239\7g\2\2\u0239*\3") + buf.write("\2\2\2\u023a\u023b\7R\2\2\u023b\u023c\7D\2\2\u023c\u023d") + buf.write("\7Z\2\2\u023d\u023e\7V\2\2\u023e\u023f\7c\2\2\u023f\u0240") + buf.write("\7t\2\2\u0240\u0241\7i\2\2\u0241\u0242\7g\2\2\u0242\u0243") + buf.write("\7v\2\2\u0243\u0244\7F\2\2\u0244\u0245\7g\2\2\u0245\u0246") + buf.write("\7r\2\2\u0246\u0247\7g\2\2\u0247\u0248\7p\2\2\u0248\u0249") + buf.write("\7f\2\2\u0249\u024a\7g\2\2\u024a\u024b\7p\2\2\u024b\u024c") + buf.write("\7e\2\2\u024c\u024d\7{\2\2\u024d,\3\2\2\2\u024e\u024f") + buf.write("\7R\2\2\u024f\u0250\7D\2\2\u0250\u0251\7Z\2\2\u0251\u0252") + buf.write("\7X\2\2\u0252\u0253\7c\2\2\u0253\u0254\7t\2\2\u0254\u0255") + buf.write("\7k\2\2\u0255\u0256\7c\2\2\u0256\u0257\7p\2\2\u0257\u0258") + buf.write("\7v\2\2\u0258\u0259\7I\2\2\u0259\u025a\7t\2\2\u025a\u025b") + buf.write("\7q\2\2\u025b\u025c\7w\2\2\u025c\u025d\7r\2\2\u025d.\3") + buf.write("\2\2\2\u025e\u025f\7Z\2\2\u025f\u0260\7E\2\2\u0260\u0261") + buf.write("\7D\2\2\u0261\u0262\7w\2\2\u0262\u0263\7k\2\2\u0263\u0264") + buf.write("\7n\2\2\u0264\u0265\7f\2\2\u0265\u0266\7E\2\2\u0266\u0267") + buf.write("\7q\2\2\u0267\u0268\7p\2\2\u0268\u0269\7h\2\2\u0269\u026a") + buf.write("\7k\2\2\u026a\u026b\7i\2\2\u026b\u026c\7w\2\2\u026c\u026d") + buf.write("\7t\2\2\u026d\u026e\7c\2\2\u026e\u026f\7v\2\2\u026f\u0270") + buf.write("\7k\2\2\u0270\u0271\7q\2\2\u0271\u0272\7p\2\2\u0272\60") + buf.write("\3\2\2\2\u0273\u0274\7Z\2\2\u0274\u0275\7E\2\2\u0275\u0276") + buf.write("\7E\2\2\u0276\u0277\7q\2\2\u0277\u0278\7p\2\2\u0278\u0279") + buf.write("\7h\2\2\u0279\u027a\7k\2\2\u027a\u027b\7i\2\2\u027b\u027c") + buf.write("\7w\2\2\u027c\u027d\7t\2\2\u027d\u027e\7c\2\2\u027e\u027f") + buf.write("\7v\2\2\u027f\u0280\7k\2\2\u0280\u0281\7q\2\2\u0281\u0282") + buf.write("\7p\2\2\u0282\u0283\7N\2\2\u0283\u0284\7k\2\2\u0284\u0285") + buf.write("\7u\2\2\u0285\u0286\7v\2\2\u0286\62\3\2\2\2\u0287\u0288") + buf.write("\7Z\2\2\u0288\u0289\7E\2\2\u0289\u028a\7T\2\2\u028a\u028b") + buf.write("\7g\2\2\u028b\u028c\7o\2\2\u028c\u028d\7q\2\2\u028d\u028e") + buf.write("\7v\2\2\u028e\u028f\7g\2\2\u028f\u0290\7U\2\2\u0290\u0291") + buf.write("\7y\2\2\u0291\u0292\7k\2\2\u0292\u0293\7h\2\2\u0293\u0294") + buf.write("\7v\2\2\u0294\u0295\7R\2\2\u0295\u0296\7c\2\2\u0296\u0297") + buf.write("\7e\2\2\u0297\u0298\7m\2\2\u0298\u0299\7c\2\2\u0299\u029a") + buf.write("\7i\2\2\u029a\u029b\7g\2\2\u029b\u029c\7T\2\2\u029c\u029d") + buf.write("\7g\2\2\u029d\u029e\7h\2\2\u029e\u029f\7g\2\2\u029f\u02a0") + buf.write("\7t\2\2\u02a0\u02a1\7g\2\2\u02a1\u02a2\7p\2\2\u02a2\u02a3") + buf.write("\7e\2\2\u02a3\u02a4\7g\2\2\u02a4\64\3\2\2\2\u02a5\u02a6") + buf.write("\7Z\2\2\u02a6\u02a7\7E\2\2\u02a7\u02a8\7U\2\2\u02a8\u02a9") + buf.write("\7y\2\2\u02a9\u02aa\7k\2\2\u02aa\u02ab\7h\2\2\u02ab\u02ac") + buf.write("\7v\2\2\u02ac\u02ad\7R\2\2\u02ad\u02ae\7c\2\2\u02ae\u02af") + buf.write("\7e\2\2\u02af\u02b0\7m\2\2\u02b0\u02b1\7c\2\2\u02b1\u02b2") + buf.write("\7i\2\2\u02b2\u02b3\7g\2\2\u02b3\u02b4\7R\2\2\u02b4\u02b5") + buf.write("\7t\2\2\u02b5\u02b6\7q\2\2\u02b6\u02b7\7f\2\2\u02b7\u02b8") + buf.write("\7w\2\2\u02b8\u02b9\7e\2\2\u02b9\u02ba\7v\2\2\u02ba\u02bb") + buf.write("\7F\2\2\u02bb\u02bc\7g\2\2\u02bc\u02bd\7r\2\2\u02bd\u02be") + buf.write("\7g\2\2\u02be\u02bf\7p\2\2\u02bf\u02c0\7f\2\2\u02c0\u02c1") + buf.write("\7g\2\2\u02c1\u02c2\7p\2\2\u02c2\u02c3\7e\2\2\u02c3\u02c4") + buf.write("\7{\2\2\u02c4\66\3\2\2\2\u02c5\u02c6\7Z\2\2\u02c6\u02c7") + buf.write("\7E\2\2\u02c7\u02c8\7X\2\2\u02c8\u02c9\7g\2\2\u02c9\u02ca") + buf.write("\7t\2\2\u02ca\u02cb\7u\2\2\u02cb\u02cc\7k\2\2\u02cc\u02cd") + buf.write("\7q\2\2\u02cd\u02ce\7p\2\2\u02ce\u02cf\7I\2\2\u02cf\u02d0") + buf.write("\7t\2\2\u02d0\u02d1\7q\2\2\u02d1\u02d2\7w\2\2\u02d2\u02d3") + buf.write("\7r\2\2\u02d38\3\2\2\2\u02d4\u02d5\7h\2\2\u02d5\u02d6") + buf.write("\7k\2\2\u02d6\u02d7\7n\2\2\u02d7\u02d8\7g\2\2\u02d8\u02d9") + buf.write("\7T\2\2\u02d9\u02da\7g\2\2\u02da\u02db\7h\2\2\u02db:\3") + buf.write("\2\2\2\u02dc\u02dd\7r\2\2\u02dd\u02de\7t\2\2\u02de\u02df") + buf.write("\7q\2\2\u02df\u02e0\7f\2\2\u02e0\u02e1\7w\2\2\u02e1\u02e2") + buf.write("\7e\2\2\u02e2\u02e3\7v\2\2\u02e3\u02e4\7T\2\2\u02e4\u02e5") + buf.write("\7g\2\2\u02e5\u02e6\7h\2\2\u02e6<\3\2\2\2\u02e7\u02e8") + buf.write("\7e\2\2\u02e8\u02e9\7q\2\2\u02e9\u02ea\7p\2\2\u02ea\u02eb") + buf.write("\7v\2\2\u02eb\u02ec\7c\2\2\u02ec\u02ed\7k\2\2\u02ed\u02ee") + buf.write("\7p\2\2\u02ee\u02ef\7g\2\2\u02ef\u02f0\7t\2\2\u02f0\u02f1") + buf.write("\7R\2\2\u02f1\u02f2\7q\2\2\u02f2\u02f3\7t\2\2\u02f3\u02f4") + buf.write("\7v\2\2\u02f4\u02f5\7c\2\2\u02f5\u02f6\7n\2\2\u02f6>\3") + buf.write("\2\2\2\u02f7\u02f8\7r\2\2\u02f8\u02f9\7t\2\2\u02f9\u02fa") + buf.write("\7q\2\2\u02fa\u02fb\7z\2\2\u02fb\u02fc\7{\2\2\u02fc\u02fd") + buf.write("\7V\2\2\u02fd\u02fe\7{\2\2\u02fe\u02ff\7r\2\2\u02ff\u0300") + buf.write("\7g\2\2\u0300@\3\2\2\2\u0301\u0302\7t\2\2\u0302\u0303") + buf.write("\7g\2\2\u0303\u0304\7o\2\2\u0304\u0305\7q\2\2\u0305\u0306") + buf.write("\7v\2\2\u0306\u0307\7g\2\2\u0307\u0308\7I\2\2\u0308\u0309") + buf.write("\7n\2\2\u0309\u030a\7q\2\2\u030a\u030b\7d\2\2\u030b\u030c") + buf.write("\7c\2\2\u030c\u030d\7n\2\2\u030d\u030e\7K\2\2\u030e\u030f") + buf.write("\7F\2\2\u030f\u0310\7U\2\2\u0310\u0311\7v\2\2\u0311\u0312") + buf.write("\7t\2\2\u0312\u0313\7k\2\2\u0313\u0314\7p\2\2\u0314\u0315") + buf.write("\7i\2\2\u0315B\3\2\2\2\u0316\u0317\7t\2\2\u0317\u0318") + buf.write("\7g\2\2\u0318\u0319\7o\2\2\u0319\u031a\7q\2\2\u031a\u031b") + buf.write("\7v\2\2\u031b\u031c\7g\2\2\u031c\u031d\7K\2\2\u031d\u031e") + buf.write("\7p\2\2\u031e\u031f\7h\2\2\u031f\u0320\7q\2\2\u0320D\3") + buf.write("\2\2\2\u0321\u0322\7h\2\2\u0322\u0323\7k\2\2\u0323\u0324") + buf.write("\7n\2\2\u0324\u0325\7g\2\2\u0325\u0326\7G\2\2\u0326\u0327") + buf.write("\7p\2\2\u0327\u0328\7e\2\2\u0328\u0329\7q\2\2\u0329\u032a") + buf.write("\7f\2\2\u032a\u032b\7k\2\2\u032b\u032c\7p\2\2\u032c\u032d") + buf.write("\7i\2\2\u032dF\3\2\2\2\u032e\u032f\7g\2\2\u032f\u0330") + buf.write("\7z\2\2\u0330\u0331\7r\2\2\u0331\u0332\7n\2\2\u0332\u0333") + buf.write("\7k\2\2\u0333\u0334\7e\2\2\u0334\u0335\7k\2\2\u0335\u0336") + buf.write("\7v\2\2\u0336\u0337\7H\2\2\u0337\u0338\7k\2\2\u0338\u0339") + buf.write("\7n\2\2\u0339\u033a\7g\2\2\u033a\u033b\7V\2\2\u033b\u033c") + buf.write("\7{\2\2\u033c\u033d\7r\2\2\u033d\u033e\7g\2\2\u033eH\3") + buf.write("\2\2\2\u033f\u0340\7n\2\2\u0340\u0341\7c\2\2\u0341\u0342") + buf.write("\7u\2\2\u0342\u0343\7v\2\2\u0343\u0344\7M\2\2\u0344\u0345") + buf.write("\7p\2\2\u0345\u0346\7q\2\2\u0346\u0347\7y\2\2\u0347\u0348") + buf.write("\7p\2\2\u0348\u0349\7H\2\2\u0349\u034a\7k\2\2\u034a\u034b") + buf.write("\7n\2\2\u034b\u034c\7g\2\2\u034c\u034d\7V\2\2\u034d\u034e") + buf.write("\7{\2\2\u034e\u034f\7r\2\2\u034f\u0350\7g\2\2\u0350J\3") + buf.write("\2\2\2\u0351\u0352\7k\2\2\u0352\u0353\7p\2\2\u0353\u0354") + buf.write("\7e\2\2\u0354\u0355\7n\2\2\u0355\u0356\7w\2\2\u0356\u0357") + buf.write("\7f\2\2\u0357\u0358\7g\2\2\u0358\u0359\7K\2\2\u0359\u035a") + buf.write("\7p\2\2\u035a\u035b\7K\2\2\u035b\u035c\7p\2\2\u035c\u035d") + buf.write("\7f\2\2\u035d\u035e\7g\2\2\u035e\u035f\7z\2\2\u035fL\3") + buf.write("\2\2\2\u0360\u0361\7k\2\2\u0361\u0362\7p\2\2\u0362\u0363") + buf.write("\7f\2\2\u0363\u0364\7g\2\2\u0364\u0365\7p\2\2\u0365\u0366") + buf.write("\7v\2\2\u0366\u0367\7Y\2\2\u0367\u0368\7k\2\2\u0368\u0369") + buf.write("\7f\2\2\u0369\u036a\7v\2\2\u036a\u036b\7j\2\2\u036bN\3") + buf.write("\2\2\2\u036c\u036d\7v\2\2\u036d\u036e\7c\2\2\u036e\u036f") + buf.write("\7d\2\2\u036f\u0370\7Y\2\2\u0370\u0371\7k\2\2\u0371\u0372") + buf.write("\7f\2\2\u0372\u0373\7v\2\2\u0373\u0374\7j\2\2\u0374P\3") + buf.write("\2\2\2\u0375\u0376\7w\2\2\u0376\u0377\7u\2\2\u0377\u0378") + buf.write("\7g\2\2\u0378\u0379\7u\2\2\u0379\u037a\7V\2\2\u037a\u037b") + buf.write("\7c\2\2\u037b\u037c\7d\2\2\u037c\u037d\7u\2\2\u037dR\3") + buf.write("\2\2\2\u037e\u037f\7e\2\2\u037f\u0380\7j\2\2\u0380\u0381") + buf.write("\7k\2\2\u0381\u0382\7n\2\2\u0382\u0383\7f\2\2\u0383\u0384") + buf.write("\7t\2\2\u0384\u0385\7g\2\2\u0385\u0386\7p\2\2\u0386T\3") + buf.write("\2\2\2\u0387\u0388\7r\2\2\u0388\u0389\7t\2\2\u0389\u038a") + buf.write("\7q\2\2\u038a\u038b\7f\2\2\u038b\u038c\7w\2\2\u038c\u038d") + buf.write("\7e\2\2\u038d\u038e\7v\2\2\u038e\u038f\7K\2\2\u038f\u0390") + buf.write("\7p\2\2\u0390\u0391\7u\2\2\u0391\u0392\7v\2\2\u0392\u0393") + buf.write("\7c\2\2\u0393\u0394\7n\2\2\u0394\u0395\7n\2\2\u0395\u0396") + buf.write("\7R\2\2\u0396\u0397\7c\2\2\u0397\u0398\7v\2\2\u0398\u0399") + buf.write("\7j\2\2\u0399V\3\2\2\2\u039a\u039b\7t\2\2\u039b\u039c") + buf.write("\7g\2\2\u039c\u039d\7r\2\2\u039d\u039e\7q\2\2\u039e\u039f") + buf.write("\7u\2\2\u039f\u03a0\7k\2\2\u03a0\u03a1\7v\2\2\u03a1\u03a2") + buf.write("\7q\2\2\u03a2\u03a3\7t\2\2\u03a3\u03a4\7{\2\2\u03a4\u03a5") + buf.write("\7W\2\2\u03a5\u03a6\7T\2\2\u03a6\u03a7\7N\2\2\u03a7X\3") + buf.write("\2\2\2\u03a8\u03a9\7t\2\2\u03a9\u03aa\7g\2\2\u03aa\u03ab") + buf.write("\7s\2\2\u03ab\u03ac\7w\2\2\u03ac\u03ad\7k\2\2\u03ad\u03ae") + buf.write("\7t\2\2\u03ae\u03af\7g\2\2\u03af\u03b0\7o\2\2\u03b0\u03b1") + buf.write("\7g\2\2\u03b1\u03b2\7p\2\2\u03b2\u03b3\7v\2\2\u03b3Z\3") + buf.write("\2\2\2\u03b4\u03b5\7r\2\2\u03b5\u03b6\7c\2\2\u03b6\u03b7") + buf.write("\7e\2\2\u03b7\u03b8\7m\2\2\u03b8\u03b9\7c\2\2\u03b9\u03ba") + buf.write("\7i\2\2\u03ba\u03bb\7g\2\2\u03bb\\\3\2\2\2\u03bc\u03bd") + buf.write("\7r\2\2\u03bd\u03be\7c\2\2\u03be\u03bf\7e\2\2\u03bf\u03c0") + buf.write("\7m\2\2\u03c0\u03c1\7c\2\2\u03c1\u03c2\7i\2\2\u03c2\u03c3") + buf.write("\7g\2\2\u03c3\u03c4\7R\2\2\u03c4\u03c5\7t\2\2\u03c5\u03c6") + buf.write("\7q\2\2\u03c6\u03c7\7f\2\2\u03c7\u03c8\7w\2\2\u03c8\u03c9") + buf.write("\7e\2\2\u03c9\u03ca\7v\2\2\u03ca\u03cb\7F\2\2\u03cb\u03cc") + buf.write("\7g\2\2\u03cc\u03cd\7r\2\2\u03cd\u03ce\7g\2\2\u03ce\u03cf") + buf.write("\7p\2\2\u03cf\u03d0\7f\2\2\u03d0\u03d1\7g\2\2\u03d1\u03d2") + buf.write("\7p\2\2\u03d2\u03d3\7e\2\2\u03d3\u03d4\7k\2\2\u03d4\u03d5") + buf.write("\7g\2\2\u03d5\u03d6\7u\2\2\u03d6^\3\2\2\2\u03d7\u03d8") + buf.write("\7p\2\2\u03d8\u03d9\7c\2\2\u03d9\u03da\7o\2\2\u03da\u03db") + buf.write("\7g\2\2\u03db`\3\2\2\2\u03dc\u03dd\7r\2\2\u03dd\u03de") + buf.write("\7c\2\2\u03de\u03df\7v\2\2\u03df\u03e0\7j\2\2\u03e0b\3") + buf.write("\2\2\2\u03e1\u03e2\7u\2\2\u03e2\u03e3\7q\2\2\u03e3\u03e4") + buf.write("\7w\2\2\u03e4\u03e5\7t\2\2\u03e5\u03e6\7e\2\2\u03e6\u03e7") + buf.write("\7g\2\2\u03e7\u03e8\7V\2\2\u03e8\u03e9\7t\2\2\u03e9\u03ea") + buf.write("\7g\2\2\u03ea\u03eb\7g\2\2\u03ebd\3\2\2\2\u03ec\u03ed") + buf.write("\7d\2\2\u03ed\u03ee\7w\2\2\u03ee\u03ef\7k\2\2\u03ef\u03f0") + buf.write("\7n\2\2\u03f0\u03f1\7f\2\2\u03f1\u03f2\7C\2\2\u03f2\u03f3") + buf.write("\7e\2\2\u03f3\u03f4\7v\2\2\u03f4\u03f5\7k\2\2\u03f5\u03f6") + buf.write("\7q\2\2\u03f6\u03f7\7p\2\2\u03f7\u03f8\7O\2\2\u03f8\u03f9") + buf.write("\7c\2\2\u03f9\u03fa\7u\2\2\u03fa\u03fb\7m\2\2\u03fbf\3") + buf.write("\2\2\2\u03fc\u03fd\7h\2\2\u03fd\u03fe\7k\2\2\u03fe\u03ff") + buf.write("\7n\2\2\u03ff\u0400\7g\2\2\u0400\u0401\7u\2\2\u0401h\3") + buf.write("\2\2\2\u0402\u0403\7t\2\2\u0403\u0404\7w\2\2\u0404\u0405") + buf.write("\7p\2\2\u0405\u0406\7Q\2\2\u0406\u0407\7p\2\2\u0407\u0408") + buf.write("\7n\2\2\u0408\u0409\7{\2\2\u0409\u040a\7H\2\2\u040a\u040b") + buf.write("\7q\2\2\u040b\u040c\7t\2\2\u040c\u040d\7F\2\2\u040d\u040e") + buf.write("\7g\2\2\u040e\u040f\7r\2\2\u040f\u0410\7n\2\2\u0410\u0411") + buf.write("\7q\2\2\u0411\u0412\7{\2\2\u0412\u0413\7o\2\2\u0413\u0414") + buf.write("\7g\2\2\u0414\u0415\7p\2\2\u0415\u0416\7v\2\2\u0416\u0417") + buf.write("\7R\2\2\u0417\u0418\7q\2\2\u0418\u0419\7u\2\2\u0419\u041a") + buf.write("\7v\2\2\u041a\u041b\7r\2\2\u041b\u041c\7t\2\2\u041c\u041d") + buf.write("\7q\2\2\u041d\u041e\7e\2\2\u041e\u041f\7g\2\2\u041f\u0420") + buf.write("\7u\2\2\u0420\u0421\7u\2\2\u0421\u0422\7k\2\2\u0422\u0423") + buf.write("\7p\2\2\u0423\u0424\7i\2\2\u0424j\3\2\2\2\u0425\u0426") + buf.write("\7*\2\2\u0426l\3\2\2\2\u0427\u0428\7.\2\2\u0428n\3\2\2") + buf.write("\2\u0429\u042a\7+\2\2\u042ap\3\2\2\2\u042b\u042c\7d\2") + buf.write("\2\u042c\u042d\7w\2\2\u042d\u042e\7k\2\2\u042e\u042f\7") + buf.write("n\2\2\u042f\u0430\7f\2\2\u0430\u0431\7E\2\2\u0431\u0432") + buf.write("\7q\2\2\u0432\u0433\7p\2\2\u0433\u0434\7h\2\2\u0434\u0435") + buf.write("\7k\2\2\u0435\u0436\7i\2\2\u0436\u0437\7w\2\2\u0437\u0438") + buf.write("\7t\2\2\u0438\u0439\7c\2\2\u0439\u043a\7v\2\2\u043a\u043b") + buf.write("\7k\2\2\u043b\u043c\7q\2\2\u043c\u043d\7p\2\2\u043d\u043e") + buf.write("\7N\2\2\u043e\u043f\7k\2\2\u043f\u0440\7u\2\2\u0440\u0441") + buf.write("\7v\2\2\u0441r\3\2\2\2\u0442\u0443\7d\2\2\u0443\u0444") + buf.write("\7w\2\2\u0444\u0445\7k\2\2\u0445\u0446\7n\2\2\u0446\u0447") + buf.write("\7f\2\2\u0447\u0448\7R\2\2\u0448\u0449\7j\2\2\u0449\u044a") + buf.write("\7c\2\2\u044a\u044b\7u\2\2\u044b\u044c\7g\2\2\u044c\u044d") + buf.write("\7u\2\2\u044dt\3\2\2\2\u044e\u044f\7d\2\2\u044f\u0450") + buf.write("\7w\2\2\u0450\u0451\7k\2\2\u0451\u0452\7n\2\2\u0452\u0453") + buf.write("\7f\2\2\u0453\u0454\7T\2\2\u0454\u0455\7w\2\2\u0455\u0456") + buf.write("\7n\2\2\u0456\u0457\7g\2\2\u0457\u0458\7u\2\2\u0458v\3") + buf.write("\2\2\2\u0459\u045a\7f\2\2\u045a\u045b\7g\2\2\u045b\u045c") + buf.write("\7r\2\2\u045c\u045d\7g\2\2\u045d\u045e\7p\2\2\u045e\u045f") + buf.write("\7f\2\2\u045f\u0460\7g\2\2\u0460\u0461\7p\2\2\u0461\u0462") + buf.write("\7e\2\2\u0462\u0463\7k\2\2\u0463\u0464\7g\2\2\u0464\u0465") + buf.write("\7u\2\2\u0465x\3\2\2\2\u0466\u0467\7r\2\2\u0467\u0468") + buf.write("\7t\2\2\u0468\u0469\7q\2\2\u0469\u046a\7f\2\2\u046a\u046b") + buf.write("\7w\2\2\u046b\u046c\7e\2\2\u046c\u046d\7v\2\2\u046d\u046e") + buf.write("\7P\2\2\u046e\u046f\7c\2\2\u046f\u0470\7o\2\2\u0470\u0471") + buf.write("\7g\2\2\u0471z\3\2\2\2\u0472\u0473\7r\2\2\u0473\u0474") + buf.write("\7t\2\2\u0474\u0475\7q\2\2\u0475\u0476\7f\2\2\u0476\u0477") + buf.write("\7w\2\2\u0477\u0478\7e\2\2\u0478\u0479\7v\2\2\u0479\u047a") + buf.write("\7T\2\2\u047a\u047b\7g\2\2\u047b\u047c\7h\2\2\u047c\u047d") + buf.write("\7g\2\2\u047d\u047e\7t\2\2\u047e\u047f\7g\2\2\u047f\u0480") + buf.write("\7p\2\2\u0480\u0481\7e\2\2\u0481\u0482\7g\2\2\u0482|\3") + buf.write("\2\2\2\u0483\u0484\7r\2\2\u0484\u0485\7t\2\2\u0485\u0486") + buf.write("\7q\2\2\u0486\u0487\7f\2\2\u0487\u0488\7w\2\2\u0488\u0489") + buf.write("\7e\2\2\u0489\u048a\7v\2\2\u048a\u048b\7V\2\2\u048b\u048c") + buf.write("\7{\2\2\u048c\u048d\7r\2\2\u048d\u048e\7g\2\2\u048e~\3") + buf.write("\2\2\2\u048f\u0490\7n\2\2\u0490\u0491\7k\2\2\u0491\u0492") + buf.write("\7p\2\2\u0492\u0493\7g\2\2\u0493\u0494\7G\2\2\u0494\u0495") + buf.write("\7p\2\2\u0495\u0496\7f\2\2\u0496\u0497\7k\2\2\u0497\u0498") + buf.write("\7p\2\2\u0498\u0499\7i\2\2\u0499\u0080\3\2\2\2\u049a\u049b") + buf.write("\7z\2\2\u049b\u049c\7e\2\2\u049c\u049d\7N\2\2\u049d\u049e") + buf.write("\7c\2\2\u049e\u049f\7p\2\2\u049f\u04a0\7i\2\2\u04a0\u04a1") + buf.write("\7w\2\2\u04a1\u04a2\7c\2\2\u04a2\u04a3\7i\2\2\u04a3\u04a4") + buf.write("\7g\2\2\u04a4\u04a5\7U\2\2\u04a5\u04a6\7r\2\2\u04a6\u04a7") + buf.write("\7g\2\2\u04a7\u04a8\7e\2\2\u04a8\u04a9\7k\2\2\u04a9\u04aa") + buf.write("\7h\2\2\u04aa\u04ab\7k\2\2\u04ab\u04ac\7e\2\2\u04ac\u04ad") + buf.write("\7c\2\2\u04ad\u04ae\7v\2\2\u04ae\u04af\7k\2\2\u04af\u04b0") + buf.write("\7q\2\2\u04b0\u04b1\7p\2\2\u04b1\u04b2\7K\2\2\u04b2\u04b3") + buf.write("\7f\2\2\u04b3\u04b4\7g\2\2\u04b4\u04b5\7p\2\2\u04b5\u04b6") + buf.write("\7v\2\2\u04b6\u04b7\7k\2\2\u04b7\u04b8\7h\2\2\u04b8\u04b9") + buf.write("\7k\2\2\u04b9\u04ba\7g\2\2\u04ba\u04bb\7t\2\2\u04bb\u0082") + buf.write("\3\2\2\2\u04bc\u04bd\7r\2\2\u04bd\u04be\7n\2\2\u04be\u04bf") + buf.write("\7k\2\2\u04bf\u04c0\7u\2\2\u04c0\u04c1\7v\2\2\u04c1\u04c2") + buf.write("\7U\2\2\u04c2\u04c3\7v\2\2\u04c3\u04c4\7t\2\2\u04c4\u04c5") + buf.write("\7w\2\2\u04c5\u04c6\7e\2\2\u04c6\u04c7\7v\2\2\u04c7\u04c8") + buf.write("\7w\2\2\u04c8\u04c9\7t\2\2\u04c9\u04ca\7g\2\2\u04ca\u04cb") + buf.write("\7F\2\2\u04cb\u04cc\7g\2\2\u04cc\u04cd\7h\2\2\u04cd\u04ce") + buf.write("\7k\2\2\u04ce\u04cf\7p\2\2\u04cf\u04d0\7k\2\2\u04d0\u04d1") + buf.write("\7v\2\2\u04d1\u04d2\7k\2\2\u04d2\u04d3\7q\2\2\u04d3\u04d4") + buf.write("\7p\2\2\u04d4\u04d5\7K\2\2\u04d5\u04d6\7f\2\2\u04d6\u04d7") + buf.write("\7g\2\2\u04d7\u04d8\7p\2\2\u04d8\u04d9\7v\2\2\u04d9\u04da") + buf.write("\7k\2\2\u04da\u04db\7h\2\2\u04db\u04dc\7k\2\2\u04dc\u04dd") + buf.write("\7g\2\2\u04dd\u04de\7t\2\2\u04de\u0084\3\2\2\2\u04df\u04e0") + buf.write("\7c\2\2\u04e0\u04e1\7v\2\2\u04e1\u04e2\7v\2\2\u04e2\u04e3") + buf.write("\7t\2\2\u04e3\u04e4\7k\2\2\u04e4\u04e5\7d\2\2\u04e5\u04e6") + buf.write("\7w\2\2\u04e6\u04e7\7v\2\2\u04e7\u04e8\7g\2\2\u04e8\u04e9") + buf.write("\7u\2\2\u04e9\u0086\3\2\2\2\u04ea\u04eb\7N\2\2\u04eb\u04ec") + buf.write("\7c\2\2\u04ec\u04ed\7u\2\2\u04ed\u04ee\7v\2\2\u04ee\u04ef") + buf.write("\7U\2\2\u04ef\u04f0\7y\2\2\u04f0\u04f1\7k\2\2\u04f1\u04f2") + buf.write("\7h\2\2\u04f2\u04f3\7v\2\2\u04f3\u04f4\7O\2\2\u04f4\u04f5") + buf.write("\7k\2\2\u04f5\u04f6\7i\2\2\u04f6\u04f7\7t\2\2\u04f7\u04f8") + buf.write("\7c\2\2\u04f8\u04f9\7v\2\2\u04f9\u04fa\7k\2\2\u04fa\u04fb") + buf.write("\7q\2\2\u04fb\u04fc\7p\2\2\u04fc\u0088\3\2\2\2\u04fd\u04fe") + buf.write("\7F\2\2\u04fe\u04ff\7g\2\2\u04ff\u0500\7h\2\2\u0500\u0501") + buf.write("\7c\2\2\u0501\u0502\7w\2\2\u0502\u0503\7n\2\2\u0503\u0504") + buf.write("\7v\2\2\u0504\u0505\7D\2\2\u0505\u0506\7w\2\2\u0506\u0507") + buf.write("\7k\2\2\u0507\u0508\7n\2\2\u0508\u0509\7f\2\2\u0509\u050a") + buf.write("\7U\2\2\u050a\u050b\7{\2\2\u050b\u050c\7u\2\2\u050c\u050d") + buf.write("\7v\2\2\u050d\u050e\7g\2\2\u050e\u050f\7o\2\2\u050f\u0510") + buf.write("\7V\2\2\u0510\u0511\7{\2\2\u0511\u0512\7r\2\2\u0512\u0513") + buf.write("\7g\2\2\u0513\u0514\7H\2\2\u0514\u0515\7q\2\2\u0515\u0516") + buf.write("\7t\2\2\u0516\u0517\7Y\2\2\u0517\u0518\7q\2\2\u0518\u0519") + buf.write("\7t\2\2\u0519\u051a\7m\2\2\u051a\u051b\7u\2\2\u051b\u051c") + buf.write("\7r\2\2\u051c\u051d\7c\2\2\u051d\u051e\7e\2\2\u051e\u051f") + buf.write("\7g\2\2\u051f\u008a\3\2\2\2\u0520\u0521\7N\2\2\u0521\u0522") + buf.write("\7c\2\2\u0522\u0523\7u\2\2\u0523\u0524\7v\2\2\u0524\u0525") + buf.write("\7U\2\2\u0525\u0526\7y\2\2\u0526\u0527\7k\2\2\u0527\u0528") + buf.write("\7h\2\2\u0528\u0529\7v\2\2\u0529\u052a\7W\2\2\u052a\u052b") + buf.write("\7r\2\2\u052b\u052c\7f\2\2\u052c\u052d\7c\2\2\u052d\u052e") + buf.write("\7v\2\2\u052e\u052f\7g\2\2\u052f\u0530\7E\2\2\u0530\u0531") + buf.write("\7j\2\2\u0531\u0532\7g\2\2\u0532\u0533\7e\2\2\u0533\u0534") + buf.write("\7m\2\2\u0534\u008c\3\2\2\2\u0535\u0536\7D\2\2\u0536\u0537") + buf.write("\7w\2\2\u0537\u0538\7k\2\2\u0538\u0539\7n\2\2\u0539\u053a") + buf.write("\7f\2\2\u053a\u053b\7K\2\2\u053b\u053c\7p\2\2\u053c\u053d") + buf.write("\7f\2\2\u053d\u053e\7g\2\2\u053e\u053f\7r\2\2\u053f\u0540") + buf.write("\7g\2\2\u0540\u0541\7p\2\2\u0541\u0542\7f\2\2\u0542\u0543") + buf.write("\7g\2\2\u0543\u0544\7p\2\2\u0544\u0545\7v\2\2\u0545\u0546") + buf.write("\7V\2\2\u0546\u0547\7c\2\2\u0547\u0548\7t\2\2\u0548\u0549") + buf.write("\7i\2\2\u0549\u054a\7g\2\2\u054a\u054b\7v\2\2\u054b\u054c") + buf.write("\7u\2\2\u054c\u054d\7K\2\2\u054d\u054e\7p\2\2\u054e\u054f") + buf.write("\7R\2\2\u054f\u0550\7c\2\2\u0550\u0551\7t\2\2\u0551\u0552") + buf.write("\7c\2\2\u0552\u0553\7n\2\2\u0553\u0554\7n\2\2\u0554\u0555") + buf.write("\7g\2\2\u0555\u0556\7n\2\2\u0556\u008e\3\2\2\2\u0557\u0558") + buf.write("\7N\2\2\u0558\u0559\7c\2\2\u0559\u055a\7u\2\2\u055a\u055b") + buf.write("\7v\2\2\u055b\u055c\7W\2\2\u055c\u055d\7r\2\2\u055d\u055e") + buf.write("\7i\2\2\u055e\u055f\7t\2\2\u055f\u0560\7c\2\2\u0560\u0561") + buf.write("\7f\2\2\u0561\u0562\7g\2\2\u0562\u0563\7E\2\2\u0563\u0564") + buf.write("\7j\2\2\u0564\u0565\7g\2\2\u0565\u0566\7e\2\2\u0566\u0567") + buf.write("\7m\2\2\u0567\u0090\3\2\2\2\u0568\u0569\7N\2\2\u0569\u056a") + buf.write("\7c\2\2\u056a\u056b\7u\2\2\u056b\u056c\7v\2\2\u056c\u056d") + buf.write("\7V\2\2\u056d\u056e\7g\2\2\u056e\u056f\7u\2\2\u056f\u0570") + buf.write("\7v\2\2\u0570\u0571\7k\2\2\u0571\u0572\7p\2\2\u0572\u0573") + buf.write("\7i\2\2\u0573\u0574\7W\2\2\u0574\u0575\7r\2\2\u0575\u0576") + buf.write("\7i\2\2\u0576\u0577\7t\2\2\u0577\u0578\7c\2\2\u0578\u0579") + buf.write("\7f\2\2\u0579\u057a\7g\2\2\u057a\u057b\7E\2\2\u057b\u057c") + buf.write("\7j\2\2\u057c\u057d\7g\2\2\u057d\u057e\7e\2\2\u057e\u057f") + buf.write("\7m\2\2\u057f\u0092\3\2\2\2\u0580\u0581\7Q\2\2\u0581\u0582") + buf.write("\7T\2\2\u0582\u0583\7I\2\2\u0583\u0584\7C\2\2\u0584\u0585") + buf.write("\7P\2\2\u0585\u0586\7K\2\2\u0586\u0587\7\\\2\2\u0587\u0588") + buf.write("\7C\2\2\u0588\u0589\7V\2\2\u0589\u058a\7K\2\2\u058a\u058b") + buf.write("\7Q\2\2\u058b\u058c\7P\2\2\u058c\u058d\7P\2\2\u058d\u058e") + buf.write("\7C\2\2\u058e\u058f\7O\2\2\u058f\u0590\7G\2\2\u0590\u0094") + buf.write("\3\2\2\2\u0591\u0592\7V\2\2\u0592\u0593\7c\2\2\u0593\u0594") + buf.write("\7t\2\2\u0594\u0595\7i\2\2\u0595\u0596\7g\2\2\u0596\u0597") + buf.write("\7v\2\2\u0597\u0598\7C\2\2\u0598\u0599\7v\2\2\u0599\u059a") + buf.write("\7v\2\2\u059a\u059b\7t\2\2\u059b\u059c\7k\2\2\u059c\u059d") + buf.write("\7d\2\2\u059d\u059e\7w\2\2\u059e\u059f\7v\2\2\u059f\u05a0") + buf.write("\7g\2\2\u05a0\u05a1\7u\2\2\u05a1\u0096\3\2\2\2\u05a2\u05a3") + buf.write("\7E\2\2\u05a3\u05a4\7t\2\2\u05a4\u05a5\7g\2\2\u05a5\u05a6") + buf.write("\7c\2\2\u05a6\u05a7\7v\2\2\u05a7\u05a8\7g\2\2\u05a8\u05a9") + buf.write("\7f\2\2\u05a9\u05aa\7Q\2\2\u05aa\u05ab\7p\2\2\u05ab\u05ac") + buf.write("\7V\2\2\u05ac\u05ad\7q\2\2\u05ad\u05ae\7q\2\2\u05ae\u05af") + buf.write("\7n\2\2\u05af\u05b0\7u\2\2\u05b0\u05b1\7X\2\2\u05b1\u05b2") + buf.write("\7g\2\2\u05b2\u05b3\7t\2\2\u05b3\u05b4\7u\2\2\u05b4\u05b5") + buf.write("\7k\2\2\u05b5\u05b6\7q\2\2\u05b6\u05b7\7p\2\2\u05b7\u0098") + buf.write("\3\2\2\2\u05b8\u05b9\7V\2\2\u05b9\u05ba\7g\2\2\u05ba\u05bb") + buf.write("\7u\2\2\u05bb\u05bc\7v\2\2\u05bc\u05bd\7V\2\2\u05bd\u05be") + buf.write("\7c\2\2\u05be\u05bf\7t\2\2\u05bf\u05c0\7i\2\2\u05c0\u05c1") + buf.write("\7g\2\2\u05c1\u05c2\7v\2\2\u05c2\u05c3\7K\2\2\u05c3\u05c4") + buf.write("\7F\2\2\u05c4\u009a\3\2\2\2\u05c5\u05c6\7F\2\2\u05c6\u05c7") + buf.write("\7g\2\2\u05c7\u05c8\7x\2\2\u05c8\u05c9\7g\2\2\u05c9\u05ca") + buf.write("\7n\2\2\u05ca\u05cb\7q\2\2\u05cb\u05cc\7r\2\2\u05cc\u05cd") + buf.write("\7o\2\2\u05cd\u05ce\7g\2\2\u05ce\u05cf\7p\2\2\u05cf\u05d0") + buf.write("\7v\2\2\u05d0\u05d1\7V\2\2\u05d1\u05d2\7g\2\2\u05d2\u05d3") + buf.write("\7c\2\2\u05d3\u05d4\7o\2\2\u05d4\u009c\3\2\2\2\u05d5\u05d6") + buf.write("\7R\2\2\u05d6\u05d7\7t\2\2\u05d7\u05d8\7q\2\2\u05d8\u05d9") + buf.write("\7x\2\2\u05d9\u05da\7k\2\2\u05da\u05db\7u\2\2\u05db\u05dc") + buf.write("\7k\2\2\u05dc\u05dd\7q\2\2\u05dd\u05de\7p\2\2\u05de\u05df") + buf.write("\7k\2\2\u05df\u05e0\7p\2\2\u05e0\u05e1\7i\2\2\u05e1\u05e2") + buf.write("\7U\2\2\u05e2\u05e3\7v\2\2\u05e3\u05e4\7{\2\2\u05e4\u05e5") + buf.write("\7n\2\2\u05e5\u05e6\7g\2\2\u05e6\u009e\3\2\2\2\u05e7\u05e8") + buf.write("\7e\2\2\u05e8\u05e9\7q\2\2\u05e9\u05ea\7o\2\2\u05ea\u05eb") + buf.write("\7r\2\2\u05eb\u05ec\7c\2\2\u05ec\u05ed\7v\2\2\u05ed\u05ee") + buf.write("\7k\2\2\u05ee\u05ef\7d\2\2\u05ef\u05f0\7k\2\2\u05f0\u05f1") + buf.write("\7n\2\2\u05f1\u05f2\7k\2\2\u05f2\u05f3\7v\2\2\u05f3\u05f4") + buf.write("\7{\2\2\u05f4\u05f5\7X\2\2\u05f5\u05f6\7g\2\2\u05f6\u05f7") + buf.write("\7t\2\2\u05f7\u05f8\7u\2\2\u05f8\u05f9\7k\2\2\u05f9\u05fa") + buf.write("\7q\2\2\u05fa\u05fb\7p\2\2\u05fb\u00a0\3\2\2\2\u05fc\u05fd") + buf.write("\7f\2\2\u05fd\u05fe\7g\2\2\u05fe\u05ff\7x\2\2\u05ff\u0600") + buf.write("\7g\2\2\u0600\u0601\7n\2\2\u0601\u0602\7q\2\2\u0602\u0603") + buf.write("\7r\2\2\u0603\u0604\7o\2\2\u0604\u0605\7g\2\2\u0605\u0606") + buf.write("\7p\2\2\u0606\u0607\7v\2\2\u0607\u0608\7T\2\2\u0608\u0609") + buf.write("\7g\2\2\u0609\u060a\7i\2\2\u060a\u060b\7k\2\2\u060b\u060c") + buf.write("\7q\2\2\u060c\u060d\7p\2\2\u060d\u00a2\3\2\2\2\u060e\u060f") + buf.write("\7j\2\2\u060f\u0610\7c\2\2\u0610\u0611\7u\2\2\u0611\u0612") + buf.write("\7U\2\2\u0612\u0613\7e\2\2\u0613\u0614\7c\2\2\u0614\u0615") + buf.write("\7p\2\2\u0615\u0616\7p\2\2\u0616\u0617\7g\2\2\u0617\u0618") + buf.write("\7f\2\2\u0618\u0619\7H\2\2\u0619\u061a\7q\2\2\u061a\u061b") + buf.write("\7t\2\2\u061b\u061c\7G\2\2\u061c\u061d\7p\2\2\u061d\u061e") + buf.write("\7e\2\2\u061e\u061f\7q\2\2\u061f\u0620\7f\2\2\u0620\u0621") + buf.write("\7k\2\2\u0621\u0622\7p\2\2\u0622\u0623\7i\2\2\u0623\u0624") + buf.write("\7u\2\2\u0624\u00a4\3\2\2\2\u0625\u0626\7m\2\2\u0626\u0627") + buf.write("\7p\2\2\u0627\u0628\7q\2\2\u0628\u0629\7y\2\2\u0629\u062a") + buf.write("\7p\2\2\u062a\u062b\7T\2\2\u062b\u062c\7g\2\2\u062c\u062d") + buf.write("\7i\2\2\u062d\u062e\7k\2\2\u062e\u062f\7q\2\2\u062f\u0630") + buf.write("\7p\2\2\u0630\u0631\7u\2\2\u0631\u00a6\3\2\2\2\u0632\u0633") + buf.write("\7o\2\2\u0633\u0634\7c\2\2\u0634\u0635\7k\2\2\u0635\u0636") + buf.write("\7p\2\2\u0636\u0637\7I\2\2\u0637\u0638\7t\2\2\u0638\u0639") + buf.write("\7q\2\2\u0639\u063a\7w\2\2\u063a\u063b\7r\2\2\u063b\u00a8") + buf.write("\3\2\2\2\u063c\u063d\7r\2\2\u063d\u063e\7t\2\2\u063e\u063f") + buf.write("\7q\2\2\u063f\u0640\7f\2\2\u0640\u0641\7w\2\2\u0641\u0642") + buf.write("\7e\2\2\u0642\u0643\7v\2\2\u0643\u0644\7T\2\2\u0644\u0645") + buf.write("\7g\2\2\u0645\u0646\7h\2\2\u0646\u0647\7I\2\2\u0647\u0648") + buf.write("\7t\2\2\u0648\u0649\7q\2\2\u0649\u064a\7w\2\2\u064a\u064b") + buf.write("\7r\2\2\u064b\u00aa\3\2\2\2\u064c\u064d\7r\2\2\u064d\u064e") + buf.write("\7c\2\2\u064e\u064f\7e\2\2\u064f\u0650\7m\2\2\u0650\u0651") + buf.write("\7c\2\2\u0651\u0652\7i\2\2\u0652\u0653\7g\2\2\u0653\u0654") + buf.write("\7T\2\2\u0654\u0655\7g\2\2\u0655\u0656\7h\2\2\u0656\u0657") + buf.write("\7g\2\2\u0657\u0658\7t\2\2\u0658\u0659\7g\2\2\u0659\u065a") + buf.write("\7p\2\2\u065a\u065b\7e\2\2\u065b\u065c\7g\2\2\u065c\u065d") + buf.write("\7u\2\2\u065d\u00ac\3\2\2\2\u065e\u065f\7r\2\2\u065f\u0660") + buf.write("\7t\2\2\u0660\u0661\7q\2\2\u0661\u0662\7l\2\2\u0662\u0663") + buf.write("\7g\2\2\u0663\u0664\7e\2\2\u0664\u0665\7v\2\2\u0665\u0666") + buf.write("\7F\2\2\u0666\u0667\7k\2\2\u0667\u0668\7t\2\2\u0668\u0669") + buf.write("\7R\2\2\u0669\u066a\7c\2\2\u066a\u066b\7v\2\2\u066b\u066c") + buf.write("\7j\2\2\u066c\u00ae\3\2\2\2\u066d\u066e\7r\2\2\u066e\u066f") + buf.write("\7t\2\2\u066f\u0670\7q\2\2\u0670\u0671\7l\2\2\u0671\u0672") + buf.write("\7g\2\2\u0672\u0673\7e\2\2\u0673\u0674\7v\2\2\u0674\u0675") + buf.write("\7T\2\2\u0675\u0676\7g\2\2\u0676\u0677\7h\2\2\u0677\u0678") + buf.write("\7g\2\2\u0678\u0679\7t\2\2\u0679\u067a\7g\2\2\u067a\u067b") + buf.write("\7p\2\2\u067b\u067c\7e\2\2\u067c\u067d\7g\2\2\u067d\u067e") + buf.write("\7u\2\2\u067e\u00b0\3\2\2\2\u067f\u0680\7r\2\2\u0680\u0681") + buf.write("\7t\2\2\u0681\u0682\7q\2\2\u0682\u0683\7l\2\2\u0683\u0684") + buf.write("\7g\2\2\u0684\u0685\7e\2\2\u0685\u0686\7v\2\2\u0686\u0687") + buf.write("\7T\2\2\u0687\u0688\7q\2\2\u0688\u0689\7q\2\2\u0689\u068a") + buf.write("\7v\2\2\u068a\u00b2\3\2\2\2\u068b\u068c\7v\2\2\u068c\u068d") + buf.write("\7c\2\2\u068d\u068e\7t\2\2\u068e\u068f\7i\2\2\u068f\u0690") + buf.write("\7g\2\2\u0690\u0691\7v\2\2\u0691\u0692\7u\2\2\u0692\u00b4") + buf.write("\3\2\2\2\u0693\u0694\7k\2\2\u0694\u0695\7p\2\2\u0695\u0696") + buf.write("\7r\2\2\u0696\u0697\7w\2\2\u0697\u0698\7v\2\2\u0698\u0699") + buf.write("\7H\2\2\u0699\u069a\7k\2\2\u069a\u069b\7n\2\2\u069b\u069c") + buf.write("\7g\2\2\u069c\u069d\7N\2\2\u069d\u069e\7k\2\2\u069e\u069f") + buf.write("\7u\2\2\u069f\u06a0\7v\2\2\u06a0\u06a1\7R\2\2\u06a1\u06a2") + buf.write("\7c\2\2\u06a2\u06a3\7v\2\2\u06a3\u06a4\7j\2\2\u06a4\u06a5") + buf.write("\7u\2\2\u06a5\u00b6\3\2\2\2\u06a6\u06a7\7k\2\2\u06a7\u06a8") + buf.write("\7p\2\2\u06a8\u06a9\7r\2\2\u06a9\u06aa\7w\2\2\u06aa\u06ab") + buf.write("\7v\2\2\u06ab\u06ac\7R\2\2\u06ac\u06ad\7c\2\2\u06ad\u06ae") + buf.write("\7v\2\2\u06ae\u06af\7j\2\2\u06af\u06b0\7u\2\2\u06b0\u00b8") + buf.write("\3\2\2\2\u06b1\u06b2\7q\2\2\u06b2\u06b3\7w\2\2\u06b3\u06b4") + buf.write("\7v\2\2\u06b4\u06b5\7r\2\2\u06b5\u06b6\7w\2\2\u06b6\u06b7") + buf.write("\7v\2\2\u06b7\u06b8\7H\2\2\u06b8\u06b9\7k\2\2\u06b9\u06ba") + buf.write("\7n\2\2\u06ba\u06bb\7g\2\2\u06bb\u06bc\7N\2\2\u06bc\u06bd") + buf.write("\7k\2\2\u06bd\u06be\7u\2\2\u06be\u06bf\7v\2\2\u06bf\u06c0") + buf.write("\7R\2\2\u06c0\u06c1\7c\2\2\u06c1\u06c2\7v\2\2\u06c2\u06c3") + buf.write("\7j\2\2\u06c3\u06c4\7u\2\2\u06c4\u00ba\3\2\2\2\u06c5\u06c6") + buf.write("\7q\2\2\u06c6\u06c7\7w\2\2\u06c7\u06c8\7v\2\2\u06c8\u06c9") + buf.write("\7r\2\2\u06c9\u06ca\7w\2\2\u06ca\u06cb\7v\2\2\u06cb\u06cc") + buf.write("\7R\2\2\u06cc\u06cd\7c\2\2\u06cd\u06ce\7v\2\2\u06ce\u06cf") + buf.write("\7j\2\2\u06cf\u06d0\7u\2\2\u06d0\u00bc\3\2\2\2\u06d1\u06d2") + buf.write("\7u\2\2\u06d2\u06d3\7j\2\2\u06d3\u06d4\7g\2\2\u06d4\u06d5") + buf.write("\7n\2\2\u06d5\u06d6\7n\2\2\u06d6\u06d7\7R\2\2\u06d7\u06d8") + buf.write("\7c\2\2\u06d8\u06d9\7v\2\2\u06d9\u06da\7j\2\2\u06da\u00be") + buf.write("\3\2\2\2\u06db\u06dc\7u\2\2\u06dc\u06dd\7j\2\2\u06dd\u06de") + buf.write("\7g\2\2\u06de\u06df\7n\2\2\u06df\u06e0\7n\2\2\u06e0\u06e1") + buf.write("\7U\2\2\u06e1\u06e2\7e\2\2\u06e2\u06e3\7t\2\2\u06e3\u06e4") + buf.write("\7k\2\2\u06e4\u06e5\7r\2\2\u06e5\u06e6\7v\2\2\u06e6\u00c0") + buf.write("\3\2\2\2\u06e7\u06e8\7u\2\2\u06e8\u06e9\7j\2\2\u06e9\u06ea") + buf.write("\7q\2\2\u06ea\u06eb\7y\2\2\u06eb\u06ec\7G\2\2\u06ec\u06ed") + buf.write("\7p\2\2\u06ed\u06ee\7x\2\2\u06ee\u06ef\7X\2\2\u06ef\u06f0") + buf.write("\7c\2\2\u06f0\u06f1\7t\2\2\u06f1\u06f2\7u\2\2\u06f2\u06f3") + buf.write("\7K\2\2\u06f3\u06f4\7p\2\2\u06f4\u06f5\7N\2\2\u06f5\u06f6") + buf.write("\7q\2\2\u06f6\u06f7\7i\2\2\u06f7\u00c2\3\2\2\2\u06f8\u06f9") + buf.write("\7v\2\2\u06f9\u06fa\7c\2\2\u06fa\u06fb\7t\2\2\u06fb\u06fc") + buf.write("\7i\2\2\u06fc\u06fd\7g\2\2\u06fd\u06fe\7v\2\2\u06fe\u00c4") + buf.write("\3\2\2\2\u06ff\u0700\7v\2\2\u0700\u0701\7c\2\2\u0701\u0702") + buf.write("\7t\2\2\u0702\u0703\7i\2\2\u0703\u0704\7g\2\2\u0704\u0705") + buf.write("\7v\2\2\u0705\u0706\7R\2\2\u0706\u0707\7t\2\2\u0707\u0708") + buf.write("\7q\2\2\u0708\u0709\7z\2\2\u0709\u070a\7{\2\2\u070a\u00c6") + buf.write("\3\2\2\2\u070b\u070c\7h\2\2\u070c\u070d\7k\2\2\u070d\u070e") + buf.write("\7n\2\2\u070e\u070f\7g\2\2\u070f\u0710\7V\2\2\u0710\u0711") + buf.write("\7{\2\2\u0711\u0712\7r\2\2\u0712\u0713\7g\2\2\u0713\u00c8") + buf.write("\3\2\2\2\u0714\u0715\7t\2\2\u0715\u0716\7g\2\2\u0716\u0717") + buf.write("\7o\2\2\u0717\u0718\7q\2\2\u0718\u0719\7v\2\2\u0719\u071a") + buf.write("\7g\2\2\u071a\u071b\7T\2\2\u071b\u071c\7g\2\2\u071c\u071d") + buf.write("\7h\2\2\u071d\u00ca\3\2\2\2\u071e\u071f\7d\2\2\u071f\u0720") + buf.write("\7c\2\2\u0720\u0721\7u\2\2\u0721\u0722\7g\2\2\u0722\u0723") + buf.write("\7E\2\2\u0723\u0724\7q\2\2\u0724\u0725\7p\2\2\u0725\u0726") + buf.write("\7h\2\2\u0726\u0727\7k\2\2\u0727\u0728\7i\2\2\u0728\u0729") + buf.write("\7w\2\2\u0729\u072a\7t\2\2\u072a\u072b\7c\2\2\u072b\u072c") + buf.write("\7v\2\2\u072c\u072d\7k\2\2\u072d\u072e\7q\2\2\u072e\u072f") + buf.write("\7p\2\2\u072f\u0730\7T\2\2\u0730\u0731\7g\2\2\u0731\u0732") + buf.write("\7h\2\2\u0732\u0733\7g\2\2\u0733\u0734\7t\2\2\u0734\u0735") + buf.write("\7g\2\2\u0735\u0736\7p\2\2\u0736\u0737\7e\2\2\u0737\u0738") + buf.write("\7g\2\2\u0738\u00cc\3\2\2\2\u0739\u073a\7d\2\2\u073a\u073b") + buf.write("\7w\2\2\u073b\u073c\7k\2\2\u073c\u073d\7n\2\2\u073d\u073e") + buf.write("\7f\2\2\u073e\u073f\7U\2\2\u073f\u0740\7g\2\2\u0740\u0741") + buf.write("\7v\2\2\u0741\u0742\7v\2\2\u0742\u0743\7k\2\2\u0743\u0744") + buf.write("\7p\2\2\u0744\u0745\7i\2\2\u0745\u0746\7u\2\2\u0746\u00ce") + buf.write("\3\2\2\2\u0747\u0748\7f\2\2\u0748\u0749\7u\2\2\u0749\u074a") + buf.write("\7v\2\2\u074a\u074b\7R\2\2\u074b\u074c\7c\2\2\u074c\u074d") + buf.write("\7v\2\2\u074d\u074e\7j\2\2\u074e\u00d0\3\2\2\2\u074f\u0750") + buf.write("\7f\2\2\u0750\u0751\7u\2\2\u0751\u0752\7v\2\2\u0752\u0753") + buf.write("\7U\2\2\u0753\u0754\7w\2\2\u0754\u0755\7d\2\2\u0755\u0756") + buf.write("\7h\2\2\u0756\u0757\7q\2\2\u0757\u0758\7n\2\2\u0758\u0759") + buf.write("\7f\2\2\u0759\u075a\7g\2\2\u075a\u075b\7t\2\2\u075b\u075c") + buf.write("\7U\2\2\u075c\u075d\7r\2\2\u075d\u075e\7g\2\2\u075e\u075f") + buf.write("\7e\2\2\u075f\u00d2\3\2\2\2\u0760\u0761\7R\2\2\u0761\u0762") + buf.write("\7t\2\2\u0762\u0763\7q\2\2\u0763\u0764\7f\2\2\u0764\u0765") + buf.write("\7w\2\2\u0765\u0766\7e\2\2\u0766\u0767\7v\2\2\u0767\u0768") + buf.write("\7I\2\2\u0768\u0769\7t\2\2\u0769\u076a\7q\2\2\u076a\u076b") + buf.write("\7w\2\2\u076b\u076c\7r\2\2\u076c\u00d4\3\2\2\2\u076d\u076e") + buf.write("\7R\2\2\u076e\u076f\7t\2\2\u076f\u0770\7q\2\2\u0770\u0771") + buf.write("\7l\2\2\u0771\u0772\7g\2\2\u0772\u0773\7e\2\2\u0773\u0774") + buf.write("\7v\2\2\u0774\u0775\7T\2\2\u0775\u0776\7g\2\2\u0776\u0777") + buf.write("\7h\2\2\u0777\u00d6\3\2\2\2\u0778\u0779\7d\2\2\u0779\u077a") + buf.write("\7w\2\2\u077a\u077b\7k\2\2\u077b\u077c\7n\2\2\u077c\u077d") + buf.write("\7f\2\2\u077d\u077e\7E\2\2\u077e\u077f\7q\2\2\u077f\u0780") + buf.write("\7p\2\2\u0780\u0781\7h\2\2\u0781\u0782\7k\2\2\u0782\u0783") + buf.write("\7i\2\2\u0783\u0784\7w\2\2\u0784\u0785\7t\2\2\u0785\u0786") + buf.write("\7c\2\2\u0786\u0787\7v\2\2\u0787\u0788\7k\2\2\u0788\u0789") + buf.write("\7q\2\2\u0789\u078a\7p\2\2\u078a\u078b\7u\2\2\u078b\u00d8") + buf.write("\3\2\2\2\u078c\u078d\7f\2\2\u078d\u078e\7g\2\2\u078e\u078f") + buf.write("\7h\2\2\u078f\u0790\7c\2\2\u0790\u0791\7w\2\2\u0791\u0792") + buf.write("\7n\2\2\u0792\u0793\7v\2\2\u0793\u0794\7E\2\2\u0794\u0795") + buf.write("\7q\2\2\u0795\u0796\7p\2\2\u0796\u0797\7h\2\2\u0797\u0798") + buf.write("\7k\2\2\u0798\u0799\7i\2\2\u0799\u079a\7w\2\2\u079a\u079b") + buf.write("\7t\2\2\u079b\u079c\7c\2\2\u079c\u079d\7v\2\2\u079d\u079e") + buf.write("\7k\2\2\u079e\u079f\7q\2\2\u079f\u07a0\7p\2\2\u07a0\u07a1") + buf.write("\7K\2\2\u07a1\u07a2\7u\2\2\u07a2\u07a3\7X\2\2\u07a3\u07a4") + buf.write("\7k\2\2\u07a4\u07a5\7u\2\2\u07a5\u07a6\7k\2\2\u07a6\u07a7") + buf.write("\7d\2\2\u07a7\u07a8\7n\2\2\u07a8\u07a9\7g\2\2\u07a9\u00da") + buf.write("\3\2\2\2\u07aa\u07ab\7f\2\2\u07ab\u07ac\7g\2\2\u07ac\u07ad") + buf.write("\7h\2\2\u07ad\u07ae\7c\2\2\u07ae\u07af\7w\2\2\u07af\u07b0") + buf.write("\7n\2\2\u07b0\u07b1\7v\2\2\u07b1\u07b2\7E\2\2\u07b2\u07b3") + buf.write("\7q\2\2\u07b3\u07b4\7p\2\2\u07b4\u07b5\7h\2\2\u07b5\u07b6") + buf.write("\7k\2\2\u07b6\u07b7\7i\2\2\u07b7\u07b8\7w\2\2\u07b8\u07b9") + buf.write("\7t\2\2\u07b9\u07ba\7c\2\2\u07ba\u07bb\7v\2\2\u07bb\u07bc") + buf.write("\7k\2\2\u07bc\u07bd\7q\2\2\u07bd\u07be\7p\2\2\u07be\u07bf") + buf.write("\7P\2\2\u07bf\u07c0\7c\2\2\u07c0\u07c1\7o\2\2\u07c1\u07c2") + buf.write("\7g\2\2\u07c2\u00dc\3\2\2\2\u07c3\u07c4\7u\2\2\u07c4\u07c5") + buf.write("\7g\2\2\u07c5\u07c6\7v\2\2\u07c6\u07c7\7v\2\2\u07c7\u07c8") + buf.write("\7k\2\2\u07c8\u07c9\7p\2\2\u07c9\u07ca\7i\2\2\u07ca\u07cb") + buf.write("\7u\2\2\u07cb\u00de\3\2\2\2\u07cc\u07cd\7U\2\2\u07cd\u07ce") + buf.write("\7{\2\2\u07ce\u07cf\7u\2\2\u07cf\u07d0\7v\2\2\u07d0\u07d1") + buf.write("\7g\2\2\u07d1\u07d2\7o\2\2\u07d2\u07d3\7E\2\2\u07d3\u07d4") + buf.write("\7c\2\2\u07d4\u07d5\7r\2\2\u07d5\u07d6\7c\2\2\u07d6\u07d7") + buf.write("\7d\2\2\u07d7\u07d8\7k\2\2\u07d8\u07d9\7n\2\2\u07d9\u07da") + buf.write("\7k\2\2\u07da\u07db\7v\2\2\u07db\u07dc\7k\2\2\u07dc\u07dd") + buf.write("\7g\2\2\u07dd\u07de\7u\2\2\u07de\u00e0\3\2\2\2\u07df\u07e0") + buf.write("\7e\2\2\u07e0\u07e1\7w\2\2\u07e1\u07e2\7t\2\2\u07e2\u07e3") + buf.write("\7t\2\2\u07e3\u07e4\7g\2\2\u07e4\u07e5\7p\2\2\u07e5\u07e6") + buf.write("\7v\2\2\u07e6\u07e7\7X\2\2\u07e7\u07e8\7g\2\2\u07e8\u07e9") + buf.write("\7t\2\2\u07e9\u07ea\7u\2\2\u07ea\u07eb\7k\2\2\u07eb\u07ec") + buf.write("\7q\2\2\u07ec\u07ed\7p\2\2\u07ed\u00e2\3\2\2\2\u07ee\u07ef") + buf.write("\7x\2\2\u07ef\u07f0\7g\2\2\u07f0\u07f1\7t\2\2\u07f1\u07f2") + buf.write("\7u\2\2\u07f2\u07f3\7k\2\2\u07f3\u07f4\7q\2\2\u07f4\u07f5") + buf.write("\7p\2\2\u07f5\u07f6\7I\2\2\u07f6\u07f7\7t\2\2\u07f7\u07f8") + buf.write("\7q\2\2\u07f8\u07f9\7w\2\2\u07f9\u07fa\7r\2\2\u07fa\u07fb") + buf.write("\7V\2\2\u07fb\u07fc\7{\2\2\u07fc\u07fd\7r\2\2\u07fd\u07fe") + buf.write("\7g\2\2\u07fe\u00e4\3\2\2\2\u07ff\u0800\7E\2\2\u0800\u0801") + buf.write("\7N\2\2\u0801\u0802\7C\2\2\u0802\u0803\7U\2\2\u0803\u0804") + buf.write("\7U\2\2\u0804\u0805\7R\2\2\u0805\u0806\7T\2\2\u0806\u0807") + buf.write("\7G\2\2\u0807\u0808\7H\2\2\u0808\u0809\7K\2\2\u0809\u080a") + buf.write("\7Z\2\2\u080a\u00e6\3\2\2\2\u080b\u080c\7e\2\2\u080c\u080d") + buf.write("\7n\2\2\u080d\u080e\7c\2\2\u080e\u080f\7u\2\2\u080f\u0810") + buf.write("\7u\2\2\u0810\u0811\7g\2\2\u0811\u0812\7u\2\2\u0812\u00e8") + buf.write("\3\2\2\2\u0813\u0814\7k\2\2\u0814\u0815\7u\2\2\u0815\u0816") + buf.write("\7c\2\2\u0816\u00ea\3\2\2\2\u0817\u0818\7q\2\2\u0818\u0819") + buf.write("\7d\2\2\u0819\u081a\7l\2\2\u081a\u081b\7g\2\2\u081b\u081c") + buf.write("\7e\2\2\u081c\u081d\7v\2\2\u081d\u081e\7u\2\2\u081e\u00ec") + buf.write("\3\2\2\2\u081f\u0820\7t\2\2\u0820\u0821\7q\2\2\u0821\u0822") + buf.write("\7q\2\2\u0822\u0823\7v\2\2\u0823\u0824\7Q\2\2\u0824\u0825") + buf.write("\7d\2\2\u0825\u0826\7l\2\2\u0826\u0827\7g\2\2\u0827\u0828") + buf.write("\7e\2\2\u0828\u0829\7v\2\2\u0829\u00ee\3\2\2\2\u082a\u082c") + buf.write("\4\62;\2\u082b\u082a\3\2\2\2\u082c\u082d\3\2\2\2\u082d") + buf.write("\u082b\3\2\2\2\u082d\u082e\3\2\2\2\u082e\u00f0\3\2\2\2") + buf.write("\u082f\u0830\7\60\2\2\u0830\u00f2\3\2\2\2\u0831\u0832") + buf.write("\t\2\2\2\u0832\u00f4\3\2\2\2\u0833\u0834\t\3\2\2\u0834") + buf.write("\u00f6\3\2\2\2\u0835\u0836\7/\2\2\u0836\u00f8\3\2\2\2") + buf.write("\u0837\u0838\7a\2\2\u0838\u00fa\3\2\2\2\u0839\u083a\7") + buf.write("\61\2\2\u083a\u00fc\3\2\2\2\u083b\u083c\5\u0105\u0083") + buf.write("\2\u083c\u083d\5\u0105\u0083\2\u083d\u083e\5\u0105\u0083") + buf.write("\2\u083e\u083f\5\u0105\u0083\2\u083f\u0840\5\u0105\u0083") + buf.write("\2\u0840\u0841\5\u0105\u0083\2\u0841\u0842\5\u0105\u0083") + buf.write("\2\u0842\u0843\5\u0105\u0083\2\u0843\u0844\5\u0105\u0083") + buf.write("\2\u0844\u0845\5\u0105\u0083\2\u0845\u0846\5\u0105\u0083") + buf.write("\2\u0846\u0847\5\u0105\u0083\2\u0847\u0848\5\u0105\u0083") + buf.write("\2\u0848\u0849\5\u0105\u0083\2\u0849\u084a\5\u0105\u0083") + buf.write("\2\u084a\u084b\5\u0105\u0083\2\u084b\u084c\5\u0105\u0083") + buf.write("\2\u084c\u084d\5\u0105\u0083\2\u084d\u084e\5\u0105\u0083") + buf.write("\2\u084e\u084f\5\u0105\u0083\2\u084f\u0850\5\u0105\u0083") + buf.write("\2\u0850\u0851\5\u0105\u0083\2\u0851\u0852\5\u0105\u0083") + buf.write("\2\u0852\u0853\5\u0105\u0083\2\u0853\u087a\3\2\2\2\u0854") + buf.write("\u0855\7H\2\2\u0855\u0856\7T\2\2\u0856\u085a\7a\2\2\u0857") + buf.write("\u0858\7I\2\2\u0858\u085a\7a\2\2\u0859\u0854\3\2\2\2\u0859") + buf.write("\u0857\3\2\2\2\u085a\u085c\3\2\2\2\u085b\u085d\5\u0105") + buf.write("\u0083\2\u085c\u085b\3\2\2\2\u085d\u085e\3\2\2\2\u085e") + buf.write("\u085c\3\2\2\2\u085e\u085f\3\2\2\2\u085f\u087a\3\2\2\2") + buf.write("\u0860\u0861\5\u00f5{\2\u0861\u0862\5\u00f5{\2\u0862\u0863") + buf.write("\5\u00f5{\2\u0863\u0864\5\u00f5{\2\u0864\u0865\5\u00f5") + buf.write("{\2\u0865\u0866\5\u00f5{\2\u0866\u0867\5\u00f5{\2\u0867") + buf.write("\u0868\5\u00f5{\2\u0868\u0869\5\u00f5{\2\u0869\u086a\5") + buf.write("\u00f5{\2\u086a\u086b\5\u00f5{\2\u086b\u086c\5\u00f5{") + buf.write("\2\u086c\u086d\5\u00f5{\2\u086d\u086e\5\u00f5{\2\u086e") + buf.write("\u086f\5\u00f5{\2\u086f\u0870\5\u00f5{\2\u0870\u0871\5") + buf.write("\u00f5{\2\u0871\u0872\5\u00f5{\2\u0872\u0873\5\u00f5{") + buf.write("\2\u0873\u0874\5\u00f5{\2\u0874\u0875\5\u00f5{\2\u0875") + buf.write("\u0876\5\u00f5{\2\u0876\u0877\5\u00f5{\2\u0877\u0878\5") + buf.write("\u00f5{\2\u0878\u087a\3\2\2\2\u0879\u083b\3\2\2\2\u0879") + buf.write("\u0859\3\2\2\2\u0879\u0860\3\2\2\2\u087a\u00fe\3\2\2\2") + buf.write("\u087b\u087d\7$\2\2\u087c\u087e\5\u0107\u0084\2\u087d") + buf.write("\u087c\3\2\2\2\u087e\u087f\3\2\2\2\u087f\u087d\3\2\2\2") + buf.write("\u087f\u0880\3\2\2\2\u0880\u0881\3\2\2\2\u0881\u0882\7") + buf.write("$\2\2\u0882\u0886\3\2\2\2\u0883\u0884\7$\2\2\u0884\u0886") + buf.write("\7$\2\2\u0885\u087b\3\2\2\2\u0885\u0883\3\2\2\2\u0886") + buf.write("\u0100\3\2\2\2\u0887\u088d\5\u00f3z\2\u0888\u088d\5\u00f9") + buf.write("}\2\u0889\u088d\5\u00f7|\2\u088a\u088d\5\u00fb~\2\u088b") + buf.write("\u088d\5\u00f1y\2\u088c\u0887\3\2\2\2\u088c\u0888\3\2") + buf.write("\2\2\u088c\u0889\3\2\2\2\u088c\u088a\3\2\2\2\u088c\u088b") + buf.write("\3\2\2\2\u088d\u088e\3\2\2\2\u088e\u088c\3\2\2\2\u088e") + buf.write("\u088f\3\2\2\2\u088f\u0102\3\2\2\2\u0890\u0891\7&\2\2") + buf.write("\u0891\u0892\5\u0101\u0081\2\u0892\u0104\3\2\2\2\u0893") + buf.write("\u0894\t\4\2\2\u0894\u0106\3\2\2\2\u0895\u0899\n\5\2\2") + buf.write("\u0896\u0897\7^\2\2\u0897\u0899\7$\2\2\u0898\u0895\3\2") + buf.write("\2\2\u0898\u0896\3\2\2\2\u0899\u0108\3\2\2\2\u089a\u089c") + buf.write("\t\6\2\2\u089b\u089a\3\2\2\2\u089c\u089d\3\2\2\2\u089d") + buf.write("\u089b\3\2\2\2\u089d\u089e\3\2\2\2\u089e\u089f\3\2\2\2") + buf.write("\u089f\u08a0\b\u0085\2\2\u08a0\u010a\3\2\2\2\u08a1\u08a2") + buf.write("\7\61\2\2\u08a2\u08a3\7,\2\2\u08a3\u08a7\3\2\2\2\u08a4") + buf.write("\u08a6\13\2\2\2\u08a5\u08a4\3\2\2\2\u08a6\u08a9\3\2\2") + buf.write("\2\u08a7\u08a8\3\2\2\2\u08a7\u08a5\3\2\2\2\u08a8\u08aa") + buf.write("\3\2\2\2\u08a9\u08a7\3\2\2\2\u08aa\u08ab\7,\2\2\u08ab") + buf.write("\u08ac\7\61\2\2\u08ac\u08ad\3\2\2\2\u08ad\u08ae\b\u0086") + buf.write("\2\2\u08ae\u010c\3\2\2\2\u08af\u08b0\7\61\2\2\u08b0\u08b1") + buf.write("\7\61\2\2\u08b1\u08b5\3\2\2\2\u08b2\u08b4\n\7\2\2\u08b3") + buf.write("\u08b2\3\2\2\2\u08b4\u08b7\3\2\2\2\u08b5\u08b3\3\2\2\2") + buf.write("\u08b5\u08b6\3\2\2\2\u08b6\u08b8\3\2\2\2\u08b7\u08b5\3") + buf.write("\2\2\2\u08b8\u08b9\b\u0087\2\2\u08b9\u010e\3\2\2\2\17") + buf.write("\2\u082d\u0859\u085e\u0879\u087f\u0885\u088c\u088e\u0898") + buf.write("\u089d\u08a7\u08b5\3\b\2\2") return buf.getvalue() @@ -958,7 +945,6 @@ class PBXProjLexer(Lexer): decisionsToDFA = [ DFA(ds, i) for i, ds in enumerate(atn.decisionToState) ] - T__0 = 1 T__1 = 2 T__2 = 3 @@ -1092,83 +1078,81 @@ class PBXProjLexer(Lexer): COMMENT = 131 LINE_COMMENT = 132 - modeNames = [ u"DEFAULT_MODE" ] + channelNames = [ u"DEFAULT_TOKEN_CHANNEL", u"HIDDEN" ] + + modeNames = [ "DEFAULT_MODE" ] - literalNames = [ u"", - u"'{'", u"'}'", u"'archiveVersion'", u"'='", u"';'", u"'objectVersion'", - u"'PBXAggregateTarget'", u"'PBXBuildFile'", u"'PBXContainerItemProxy'", - u"'PBXCopyFilesBuildPhase'", u"'PBXFileReference'", u"'PBXFrameworksBuildPhase'", - u"'PBXGroup'", u"'PBXHeadersBuildPhase'", u"'PBXNativeTarget'", - u"'PBXProject'", u"'PBXReferenceProxy'", u"'PBXResourcesBuildPhase'", - u"'PBXShellScriptBuildPhase'", u"'PBXSourcesBuildPhase'", u"'PBXTargetDependency'", - u"'PBXVariantGroup'", u"'XCBuildConfiguration'", u"'XCConfigurationList'", - u"'XCRemoteSwiftPackageReference'", u"'XCSwiftPackageProductDependency'", - u"'XCVersionGroup'", u"'fileRef'", u"'productRef'", u"'containerPortal'", - u"'proxyType'", u"'remoteGlobalIDString'", u"'remoteInfo'", - u"'fileEncoding'", u"'explicitFileType'", u"'lastKnownFileType'", - u"'includeInIndex'", u"'indentWidth'", u"'tabWidth'", u"'usesTabs'", - u"'children'", u"'productInstallPath'", u"'repositoryURL'", - u"'requirement'", u"'package'", u"'packageProductDependencies'", - u"'name'", u"'path'", u"'sourceTree'", u"'buildActionMask'", - u"'files'", u"'runOnlyForDeploymentPostprocessing'", u"'('", - u"','", u"')'", u"'buildConfigurationList'", u"'buildPhases'", - u"'buildRules'", u"'dependencies'", u"'productName'", u"'productReference'", - u"'productType'", u"'lineEnding'", u"'xcLanguageSpecificationIdentifier'", - u"'plistStructureDefinitionIdentifier'", u"'attributes'", u"'LastSwiftMigration'", - u"'DefaultBuildSystemTypeForWorkspace'", u"'LastSwiftUpdateCheck'", - u"'BuildIndependentTargetsInParallel'", u"'LastUpgradeCheck'", - u"'LastTestingUpgradeCheck'", u"'ORGANIZATIONNAME'", u"'TargetAttributes'", - u"'CreatedOnToolsVersion'", u"'TestTargetID'", u"'DevelopmentTeam'", - u"'ProvisioningStyle'", u"'compatibilityVersion'", u"'developmentRegion'", - u"'hasScannedForEncodings'", u"'knownRegions'", u"'mainGroup'", - u"'productRefGroup'", u"'packageReferences'", u"'projectDirPath'", - u"'projectReferences'", u"'projectRoot'", u"'targets'", u"'inputFileListPaths'", - u"'inputPaths'", u"'outputFileListPaths'", u"'outputPaths'", - u"'shellPath'", u"'shellScript'", u"'showEnvVarsInLog'", u"'target'", - u"'targetProxy'", u"'fileType'", u"'remoteRef'", u"'baseConfigurationReference'", - u"'buildSettings'", u"'dstPath'", u"'dstSubfolderSpec'", u"'ProductGroup'", - u"'ProjectRef'", u"'buildConfigurations'", u"'defaultConfigurationIsVisible'", - u"'defaultConfigurationName'", u"'settings'", u"'SystemCapabilities'", - u"'currentVersion'", u"'versionGroupType'", u"'CLASSPREFIX'", - u"'classes'", u"'isa'", u"'objects'", u"'rootObject'", u"'.'", - u"'-'", u"'_'", u"'/'" ] + literalNames = [ "", + "'{'", "'}'", "'archiveVersion'", "'='", "';'", "'objectVersion'", + "'PBXAggregateTarget'", "'PBXBuildFile'", "'PBXContainerItemProxy'", + "'PBXCopyFilesBuildPhase'", "'PBXFileReference'", "'PBXFrameworksBuildPhase'", + "'PBXGroup'", "'PBXHeadersBuildPhase'", "'PBXNativeTarget'", + "'PBXProject'", "'PBXReferenceProxy'", "'PBXResourcesBuildPhase'", + "'PBXShellScriptBuildPhase'", "'PBXSourcesBuildPhase'", "'PBXTargetDependency'", + "'PBXVariantGroup'", "'XCBuildConfiguration'", "'XCConfigurationList'", + "'XCRemoteSwiftPackageReference'", "'XCSwiftPackageProductDependency'", + "'XCVersionGroup'", "'fileRef'", "'productRef'", "'containerPortal'", + "'proxyType'", "'remoteGlobalIDString'", "'remoteInfo'", "'fileEncoding'", + "'explicitFileType'", "'lastKnownFileType'", "'includeInIndex'", + "'indentWidth'", "'tabWidth'", "'usesTabs'", "'children'", "'productInstallPath'", + "'repositoryURL'", "'requirement'", "'package'", "'packageProductDependencies'", + "'name'", "'path'", "'sourceTree'", "'buildActionMask'", "'files'", + "'runOnlyForDeploymentPostprocessing'", "'('", "','", "')'", + "'buildConfigurationList'", "'buildPhases'", "'buildRules'", + "'dependencies'", "'productName'", "'productReference'", "'productType'", + "'lineEnding'", "'xcLanguageSpecificationIdentifier'", "'plistStructureDefinitionIdentifier'", + "'attributes'", "'LastSwiftMigration'", "'DefaultBuildSystemTypeForWorkspace'", + "'LastSwiftUpdateCheck'", "'BuildIndependentTargetsInParallel'", + "'LastUpgradeCheck'", "'LastTestingUpgradeCheck'", "'ORGANIZATIONNAME'", + "'TargetAttributes'", "'CreatedOnToolsVersion'", "'TestTargetID'", + "'DevelopmentTeam'", "'ProvisioningStyle'", "'compatibilityVersion'", + "'developmentRegion'", "'hasScannedForEncodings'", "'knownRegions'", + "'mainGroup'", "'productRefGroup'", "'packageReferences'", "'projectDirPath'", + "'projectReferences'", "'projectRoot'", "'targets'", "'inputFileListPaths'", + "'inputPaths'", "'outputFileListPaths'", "'outputPaths'", "'shellPath'", + "'shellScript'", "'showEnvVarsInLog'", "'target'", "'targetProxy'", + "'fileType'", "'remoteRef'", "'baseConfigurationReference'", + "'buildSettings'", "'dstPath'", "'dstSubfolderSpec'", "'ProductGroup'", + "'ProjectRef'", "'buildConfigurations'", "'defaultConfigurationIsVisible'", + "'defaultConfigurationName'", "'settings'", "'SystemCapabilities'", + "'currentVersion'", "'versionGroupType'", "'CLASSPREFIX'", "'classes'", + "'isa'", "'objects'", "'rootObject'", "'.'", "'-'", "'_'", "'/'" ] - symbolicNames = [ u"", - u"CLASSES", u"ISA", u"OBJECTS", u"ROOT_OBJECT", u"NUMBER", u"DOT", - u"ALPHA_NUMERIC", u"ALPHA_NUMERIC_CAP", u"DASH", u"UNDERSCORE", - u"SLASH", u"REFERENCE", u"QUOTED_STRING", u"NON_QUOTED_STRING", - u"VARIABLE", u"WS", u"COMMENT", u"LINE_COMMENT" ] + symbolicNames = [ "", + "CLASSES", "ISA", "OBJECTS", "ROOT_OBJECT", "NUMBER", "DOT", + "ALPHA_NUMERIC", "ALPHA_NUMERIC_CAP", "DASH", "UNDERSCORE", + "SLASH", "REFERENCE", "QUOTED_STRING", "NON_QUOTED_STRING", + "VARIABLE", "WS", "COMMENT", "LINE_COMMENT" ] - ruleNames = [ u"T__0", u"T__1", u"T__2", u"T__3", u"T__4", u"T__5", - u"T__6", u"T__7", u"T__8", u"T__9", u"T__10", u"T__11", - u"T__12", u"T__13", u"T__14", u"T__15", u"T__16", u"T__17", - u"T__18", u"T__19", u"T__20", u"T__21", u"T__22", u"T__23", - u"T__24", u"T__25", u"T__26", u"T__27", u"T__28", u"T__29", - u"T__30", u"T__31", u"T__32", u"T__33", u"T__34", u"T__35", - u"T__36", u"T__37", u"T__38", u"T__39", u"T__40", u"T__41", - u"T__42", u"T__43", u"T__44", u"T__45", u"T__46", u"T__47", - u"T__48", u"T__49", u"T__50", u"T__51", u"T__52", u"T__53", - u"T__54", u"T__55", u"T__56", u"T__57", u"T__58", u"T__59", - u"T__60", u"T__61", u"T__62", u"T__63", u"T__64", u"T__65", - u"T__66", u"T__67", u"T__68", u"T__69", u"T__70", u"T__71", - u"T__72", u"T__73", u"T__74", u"T__75", u"T__76", u"T__77", - u"T__78", u"T__79", u"T__80", u"T__81", u"T__82", u"T__83", - u"T__84", u"T__85", u"T__86", u"T__87", u"T__88", u"T__89", - u"T__90", u"T__91", u"T__92", u"T__93", u"T__94", u"T__95", - u"T__96", u"T__97", u"T__98", u"T__99", u"T__100", u"T__101", - u"T__102", u"T__103", u"T__104", u"T__105", u"T__106", - u"T__107", u"T__108", u"T__109", u"T__110", u"T__111", - u"T__112", u"T__113", u"CLASSES", u"ISA", u"OBJECTS", - u"ROOT_OBJECT", u"NUMBER", u"DOT", u"ALPHA_NUMERIC", u"ALPHA_NUMERIC_CAP", - u"DASH", u"UNDERSCORE", u"SLASH", u"REFERENCE", u"QUOTED_STRING", - u"NON_QUOTED_STRING", u"VARIABLE", u"HEX", u"QUOTED_STRING_CHARACTER", - u"WS", u"COMMENT", u"LINE_COMMENT" ] + ruleNames = [ "T__0", "T__1", "T__2", "T__3", "T__4", "T__5", "T__6", + "T__7", "T__8", "T__9", "T__10", "T__11", "T__12", "T__13", + "T__14", "T__15", "T__16", "T__17", "T__18", "T__19", + "T__20", "T__21", "T__22", "T__23", "T__24", "T__25", + "T__26", "T__27", "T__28", "T__29", "T__30", "T__31", + "T__32", "T__33", "T__34", "T__35", "T__36", "T__37", + "T__38", "T__39", "T__40", "T__41", "T__42", "T__43", + "T__44", "T__45", "T__46", "T__47", "T__48", "T__49", + "T__50", "T__51", "T__52", "T__53", "T__54", "T__55", + "T__56", "T__57", "T__58", "T__59", "T__60", "T__61", + "T__62", "T__63", "T__64", "T__65", "T__66", "T__67", + "T__68", "T__69", "T__70", "T__71", "T__72", "T__73", + "T__74", "T__75", "T__76", "T__77", "T__78", "T__79", + "T__80", "T__81", "T__82", "T__83", "T__84", "T__85", + "T__86", "T__87", "T__88", "T__89", "T__90", "T__91", + "T__92", "T__93", "T__94", "T__95", "T__96", "T__97", + "T__98", "T__99", "T__100", "T__101", "T__102", "T__103", + "T__104", "T__105", "T__106", "T__107", "T__108", "T__109", + "T__110", "T__111", "T__112", "T__113", "CLASSES", "ISA", + "OBJECTS", "ROOT_OBJECT", "NUMBER", "DOT", "ALPHA_NUMERIC", + "ALPHA_NUMERIC_CAP", "DASH", "UNDERSCORE", "SLASH", "REFERENCE", + "QUOTED_STRING", "NON_QUOTED_STRING", "VARIABLE", "HEX", + "QUOTED_STRING_CHARACTER", "WS", "COMMENT", "LINE_COMMENT" ] - grammarFileName = u"PBXProj.g4" + grammarFileName = "PBXProj.g4" - def __init__(self, input=None): - super(PBXProjLexer, self).__init__(input) - self.checkVersion("4.6") + def __init__(self, input=None, output:TextIO = sys.stdout): + super().__init__(input, output) + self.checkVersion("4.9.2") self._interp = LexerATNSimulator(self, self.atn, self.decisionsToDFA, PredictionContextCache()) self._actions = None self._predicates = None diff --git a/kin/grammar/PBXProjListener.py b/kin/grammar/PBXProjListener.py index ab56bab..2777dff 100644 --- a/kin/grammar/PBXProjListener.py +++ b/kin/grammar/PBXProjListener.py @@ -1,1437 +1,1443 @@ -# Generated from PBXProj.g4 by ANTLR 4.6 +# Generated from kin/grammar/PBXProj.g4 by ANTLR 4.9.2 from antlr4 import * +if __name__ is not None and "." in __name__: + from .PBXProjParser import PBXProjParser +else: + from PBXProjParser import PBXProjParser # This class defines a complete listener for a parse tree produced by PBXProjParser. class PBXProjListener(ParseTreeListener): # Enter a parse tree produced by PBXProjParser#start. - def enterStart(self, ctx): + def enterStart(self, ctx:PBXProjParser.StartContext): pass # Exit a parse tree produced by PBXProjParser#start. - def exitStart(self, ctx): + def exitStart(self, ctx:PBXProjParser.StartContext): pass # Enter a parse tree produced by PBXProjParser#root_element. - def enterRoot_element(self, ctx): + def enterRoot_element(self, ctx:PBXProjParser.Root_elementContext): pass # Exit a parse tree produced by PBXProjParser#root_element. - def exitRoot_element(self, ctx): + def exitRoot_element(self, ctx:PBXProjParser.Root_elementContext): pass # Enter a parse tree produced by PBXProjParser#archive_version. - def enterArchive_version(self, ctx): + def enterArchive_version(self, ctx:PBXProjParser.Archive_versionContext): pass # Exit a parse tree produced by PBXProjParser#archive_version. - def exitArchive_version(self, ctx): + def exitArchive_version(self, ctx:PBXProjParser.Archive_versionContext): pass # Enter a parse tree produced by PBXProjParser#classes. - def enterClasses(self, ctx): + def enterClasses(self, ctx:PBXProjParser.ClassesContext): pass # Exit a parse tree produced by PBXProjParser#classes. - def exitClasses(self, ctx): + def exitClasses(self, ctx:PBXProjParser.ClassesContext): pass # Enter a parse tree produced by PBXProjParser#object_version. - def enterObject_version(self, ctx): + def enterObject_version(self, ctx:PBXProjParser.Object_versionContext): pass # Exit a parse tree produced by PBXProjParser#object_version. - def exitObject_version(self, ctx): + def exitObject_version(self, ctx:PBXProjParser.Object_versionContext): pass # Enter a parse tree produced by PBXProjParser#objects. - def enterObjects(self, ctx): + def enterObjects(self, ctx:PBXProjParser.ObjectsContext): pass # Exit a parse tree produced by PBXProjParser#objects. - def exitObjects(self, ctx): + def exitObjects(self, ctx:PBXProjParser.ObjectsContext): pass # Enter a parse tree produced by PBXProjParser#root_object. - def enterRoot_object(self, ctx): + def enterRoot_object(self, ctx:PBXProjParser.Root_objectContext): pass # Exit a parse tree produced by PBXProjParser#root_object. - def exitRoot_object(self, ctx): + def exitRoot_object(self, ctx:PBXProjParser.Root_objectContext): pass # Enter a parse tree produced by PBXProjParser#pbx_aggregate_target_section. - def enterPbx_aggregate_target_section(self, ctx): + def enterPbx_aggregate_target_section(self, ctx:PBXProjParser.Pbx_aggregate_target_sectionContext): pass # Exit a parse tree produced by PBXProjParser#pbx_aggregate_target_section. - def exitPbx_aggregate_target_section(self, ctx): + def exitPbx_aggregate_target_section(self, ctx:PBXProjParser.Pbx_aggregate_target_sectionContext): pass # Enter a parse tree produced by PBXProjParser#pbx_build_file_section. - def enterPbx_build_file_section(self, ctx): + def enterPbx_build_file_section(self, ctx:PBXProjParser.Pbx_build_file_sectionContext): pass # Exit a parse tree produced by PBXProjParser#pbx_build_file_section. - def exitPbx_build_file_section(self, ctx): + def exitPbx_build_file_section(self, ctx:PBXProjParser.Pbx_build_file_sectionContext): pass # Enter a parse tree produced by PBXProjParser#pbx_container_item_proxy_section. - def enterPbx_container_item_proxy_section(self, ctx): + def enterPbx_container_item_proxy_section(self, ctx:PBXProjParser.Pbx_container_item_proxy_sectionContext): pass # Exit a parse tree produced by PBXProjParser#pbx_container_item_proxy_section. - def exitPbx_container_item_proxy_section(self, ctx): + def exitPbx_container_item_proxy_section(self, ctx:PBXProjParser.Pbx_container_item_proxy_sectionContext): pass # Enter a parse tree produced by PBXProjParser#pbx_copy_files_build_phase_section. - def enterPbx_copy_files_build_phase_section(self, ctx): + def enterPbx_copy_files_build_phase_section(self, ctx:PBXProjParser.Pbx_copy_files_build_phase_sectionContext): pass # Exit a parse tree produced by PBXProjParser#pbx_copy_files_build_phase_section. - def exitPbx_copy_files_build_phase_section(self, ctx): + def exitPbx_copy_files_build_phase_section(self, ctx:PBXProjParser.Pbx_copy_files_build_phase_sectionContext): pass # Enter a parse tree produced by PBXProjParser#pbx_file_reference_section. - def enterPbx_file_reference_section(self, ctx): + def enterPbx_file_reference_section(self, ctx:PBXProjParser.Pbx_file_reference_sectionContext): pass # Exit a parse tree produced by PBXProjParser#pbx_file_reference_section. - def exitPbx_file_reference_section(self, ctx): + def exitPbx_file_reference_section(self, ctx:PBXProjParser.Pbx_file_reference_sectionContext): pass # Enter a parse tree produced by PBXProjParser#pbx_frameworks_build_phase_section. - def enterPbx_frameworks_build_phase_section(self, ctx): + def enterPbx_frameworks_build_phase_section(self, ctx:PBXProjParser.Pbx_frameworks_build_phase_sectionContext): pass # Exit a parse tree produced by PBXProjParser#pbx_frameworks_build_phase_section. - def exitPbx_frameworks_build_phase_section(self, ctx): + def exitPbx_frameworks_build_phase_section(self, ctx:PBXProjParser.Pbx_frameworks_build_phase_sectionContext): pass # Enter a parse tree produced by PBXProjParser#pbx_group_section. - def enterPbx_group_section(self, ctx): + def enterPbx_group_section(self, ctx:PBXProjParser.Pbx_group_sectionContext): pass # Exit a parse tree produced by PBXProjParser#pbx_group_section. - def exitPbx_group_section(self, ctx): + def exitPbx_group_section(self, ctx:PBXProjParser.Pbx_group_sectionContext): pass # Enter a parse tree produced by PBXProjParser#pbx_headers_build_phase_section. - def enterPbx_headers_build_phase_section(self, ctx): + def enterPbx_headers_build_phase_section(self, ctx:PBXProjParser.Pbx_headers_build_phase_sectionContext): pass # Exit a parse tree produced by PBXProjParser#pbx_headers_build_phase_section. - def exitPbx_headers_build_phase_section(self, ctx): + def exitPbx_headers_build_phase_section(self, ctx:PBXProjParser.Pbx_headers_build_phase_sectionContext): pass # Enter a parse tree produced by PBXProjParser#pbx_native_target_section. - def enterPbx_native_target_section(self, ctx): + def enterPbx_native_target_section(self, ctx:PBXProjParser.Pbx_native_target_sectionContext): pass # Exit a parse tree produced by PBXProjParser#pbx_native_target_section. - def exitPbx_native_target_section(self, ctx): + def exitPbx_native_target_section(self, ctx:PBXProjParser.Pbx_native_target_sectionContext): pass # Enter a parse tree produced by PBXProjParser#pbx_project_section. - def enterPbx_project_section(self, ctx): + def enterPbx_project_section(self, ctx:PBXProjParser.Pbx_project_sectionContext): pass # Exit a parse tree produced by PBXProjParser#pbx_project_section. - def exitPbx_project_section(self, ctx): + def exitPbx_project_section(self, ctx:PBXProjParser.Pbx_project_sectionContext): pass # Enter a parse tree produced by PBXProjParser#pbx_reference_proxy_section. - def enterPbx_reference_proxy_section(self, ctx): + def enterPbx_reference_proxy_section(self, ctx:PBXProjParser.Pbx_reference_proxy_sectionContext): pass # Exit a parse tree produced by PBXProjParser#pbx_reference_proxy_section. - def exitPbx_reference_proxy_section(self, ctx): + def exitPbx_reference_proxy_section(self, ctx:PBXProjParser.Pbx_reference_proxy_sectionContext): pass # Enter a parse tree produced by PBXProjParser#pbx_resources_build_phase_section. - def enterPbx_resources_build_phase_section(self, ctx): + def enterPbx_resources_build_phase_section(self, ctx:PBXProjParser.Pbx_resources_build_phase_sectionContext): pass # Exit a parse tree produced by PBXProjParser#pbx_resources_build_phase_section. - def exitPbx_resources_build_phase_section(self, ctx): + def exitPbx_resources_build_phase_section(self, ctx:PBXProjParser.Pbx_resources_build_phase_sectionContext): pass # Enter a parse tree produced by PBXProjParser#pbx_shell_script_build_phase_section. - def enterPbx_shell_script_build_phase_section(self, ctx): + def enterPbx_shell_script_build_phase_section(self, ctx:PBXProjParser.Pbx_shell_script_build_phase_sectionContext): pass # Exit a parse tree produced by PBXProjParser#pbx_shell_script_build_phase_section. - def exitPbx_shell_script_build_phase_section(self, ctx): + def exitPbx_shell_script_build_phase_section(self, ctx:PBXProjParser.Pbx_shell_script_build_phase_sectionContext): pass # Enter a parse tree produced by PBXProjParser#pbx_sources_build_phase_section. - def enterPbx_sources_build_phase_section(self, ctx): + def enterPbx_sources_build_phase_section(self, ctx:PBXProjParser.Pbx_sources_build_phase_sectionContext): pass # Exit a parse tree produced by PBXProjParser#pbx_sources_build_phase_section. - def exitPbx_sources_build_phase_section(self, ctx): + def exitPbx_sources_build_phase_section(self, ctx:PBXProjParser.Pbx_sources_build_phase_sectionContext): pass # Enter a parse tree produced by PBXProjParser#pbx_target_dependency_section. - def enterPbx_target_dependency_section(self, ctx): + def enterPbx_target_dependency_section(self, ctx:PBXProjParser.Pbx_target_dependency_sectionContext): pass # Exit a parse tree produced by PBXProjParser#pbx_target_dependency_section. - def exitPbx_target_dependency_section(self, ctx): + def exitPbx_target_dependency_section(self, ctx:PBXProjParser.Pbx_target_dependency_sectionContext): pass # Enter a parse tree produced by PBXProjParser#pbx_variant_group_section. - def enterPbx_variant_group_section(self, ctx): + def enterPbx_variant_group_section(self, ctx:PBXProjParser.Pbx_variant_group_sectionContext): pass # Exit a parse tree produced by PBXProjParser#pbx_variant_group_section. - def exitPbx_variant_group_section(self, ctx): + def exitPbx_variant_group_section(self, ctx:PBXProjParser.Pbx_variant_group_sectionContext): pass # Enter a parse tree produced by PBXProjParser#xc_build_configuration_section. - def enterXc_build_configuration_section(self, ctx): + def enterXc_build_configuration_section(self, ctx:PBXProjParser.Xc_build_configuration_sectionContext): pass # Exit a parse tree produced by PBXProjParser#xc_build_configuration_section. - def exitXc_build_configuration_section(self, ctx): + def exitXc_build_configuration_section(self, ctx:PBXProjParser.Xc_build_configuration_sectionContext): pass # Enter a parse tree produced by PBXProjParser#xc_configuration_list_section. - def enterXc_configuration_list_section(self, ctx): + def enterXc_configuration_list_section(self, ctx:PBXProjParser.Xc_configuration_list_sectionContext): pass # Exit a parse tree produced by PBXProjParser#xc_configuration_list_section. - def exitXc_configuration_list_section(self, ctx): + def exitXc_configuration_list_section(self, ctx:PBXProjParser.Xc_configuration_list_sectionContext): pass # Enter a parse tree produced by PBXProjParser#xc_remote_swift_package_reference_section. - def enterXc_remote_swift_package_reference_section(self, ctx): + def enterXc_remote_swift_package_reference_section(self, ctx:PBXProjParser.Xc_remote_swift_package_reference_sectionContext): pass # Exit a parse tree produced by PBXProjParser#xc_remote_swift_package_reference_section. - def exitXc_remote_swift_package_reference_section(self, ctx): + def exitXc_remote_swift_package_reference_section(self, ctx:PBXProjParser.Xc_remote_swift_package_reference_sectionContext): pass # Enter a parse tree produced by PBXProjParser#xc_swift_package_product_dependency_section. - def enterXc_swift_package_product_dependency_section(self, ctx): + def enterXc_swift_package_product_dependency_section(self, ctx:PBXProjParser.Xc_swift_package_product_dependency_sectionContext): pass # Exit a parse tree produced by PBXProjParser#xc_swift_package_product_dependency_section. - def exitXc_swift_package_product_dependency_section(self, ctx): + def exitXc_swift_package_product_dependency_section(self, ctx:PBXProjParser.Xc_swift_package_product_dependency_sectionContext): pass # Enter a parse tree produced by PBXProjParser#xc_version_group_section. - def enterXc_version_group_section(self, ctx): + def enterXc_version_group_section(self, ctx:PBXProjParser.Xc_version_group_sectionContext): pass # Exit a parse tree produced by PBXProjParser#xc_version_group_section. - def exitXc_version_group_section(self, ctx): + def exitXc_version_group_section(self, ctx:PBXProjParser.Xc_version_group_sectionContext): pass # Enter a parse tree produced by PBXProjParser#pbx_aggregate_target. - def enterPbx_aggregate_target(self, ctx): + def enterPbx_aggregate_target(self, ctx:PBXProjParser.Pbx_aggregate_targetContext): pass # Exit a parse tree produced by PBXProjParser#pbx_aggregate_target. - def exitPbx_aggregate_target(self, ctx): + def exitPbx_aggregate_target(self, ctx:PBXProjParser.Pbx_aggregate_targetContext): pass # Enter a parse tree produced by PBXProjParser#pbx_build_file. - def enterPbx_build_file(self, ctx): + def enterPbx_build_file(self, ctx:PBXProjParser.Pbx_build_fileContext): pass # Exit a parse tree produced by PBXProjParser#pbx_build_file. - def exitPbx_build_file(self, ctx): + def exitPbx_build_file(self, ctx:PBXProjParser.Pbx_build_fileContext): pass # Enter a parse tree produced by PBXProjParser#pbx_container_item_proxy. - def enterPbx_container_item_proxy(self, ctx): + def enterPbx_container_item_proxy(self, ctx:PBXProjParser.Pbx_container_item_proxyContext): pass # Exit a parse tree produced by PBXProjParser#pbx_container_item_proxy. - def exitPbx_container_item_proxy(self, ctx): + def exitPbx_container_item_proxy(self, ctx:PBXProjParser.Pbx_container_item_proxyContext): pass # Enter a parse tree produced by PBXProjParser#pbx_copy_files_build_phase. - def enterPbx_copy_files_build_phase(self, ctx): + def enterPbx_copy_files_build_phase(self, ctx:PBXProjParser.Pbx_copy_files_build_phaseContext): pass # Exit a parse tree produced by PBXProjParser#pbx_copy_files_build_phase. - def exitPbx_copy_files_build_phase(self, ctx): + def exitPbx_copy_files_build_phase(self, ctx:PBXProjParser.Pbx_copy_files_build_phaseContext): pass # Enter a parse tree produced by PBXProjParser#pbx_file_reference. - def enterPbx_file_reference(self, ctx): + def enterPbx_file_reference(self, ctx:PBXProjParser.Pbx_file_referenceContext): pass # Exit a parse tree produced by PBXProjParser#pbx_file_reference. - def exitPbx_file_reference(self, ctx): + def exitPbx_file_reference(self, ctx:PBXProjParser.Pbx_file_referenceContext): pass # Enter a parse tree produced by PBXProjParser#pbx_frameworks_build_phase. - def enterPbx_frameworks_build_phase(self, ctx): + def enterPbx_frameworks_build_phase(self, ctx:PBXProjParser.Pbx_frameworks_build_phaseContext): pass # Exit a parse tree produced by PBXProjParser#pbx_frameworks_build_phase. - def exitPbx_frameworks_build_phase(self, ctx): + def exitPbx_frameworks_build_phase(self, ctx:PBXProjParser.Pbx_frameworks_build_phaseContext): pass # Enter a parse tree produced by PBXProjParser#pbx_group. - def enterPbx_group(self, ctx): + def enterPbx_group(self, ctx:PBXProjParser.Pbx_groupContext): pass # Exit a parse tree produced by PBXProjParser#pbx_group. - def exitPbx_group(self, ctx): + def exitPbx_group(self, ctx:PBXProjParser.Pbx_groupContext): pass # Enter a parse tree produced by PBXProjParser#pbx_headers_build_phase. - def enterPbx_headers_build_phase(self, ctx): + def enterPbx_headers_build_phase(self, ctx:PBXProjParser.Pbx_headers_build_phaseContext): pass # Exit a parse tree produced by PBXProjParser#pbx_headers_build_phase. - def exitPbx_headers_build_phase(self, ctx): + def exitPbx_headers_build_phase(self, ctx:PBXProjParser.Pbx_headers_build_phaseContext): pass # Enter a parse tree produced by PBXProjParser#pbx_native_target. - def enterPbx_native_target(self, ctx): + def enterPbx_native_target(self, ctx:PBXProjParser.Pbx_native_targetContext): pass # Exit a parse tree produced by PBXProjParser#pbx_native_target. - def exitPbx_native_target(self, ctx): + def exitPbx_native_target(self, ctx:PBXProjParser.Pbx_native_targetContext): pass # Enter a parse tree produced by PBXProjParser#pbx_project. - def enterPbx_project(self, ctx): + def enterPbx_project(self, ctx:PBXProjParser.Pbx_projectContext): pass # Exit a parse tree produced by PBXProjParser#pbx_project. - def exitPbx_project(self, ctx): + def exitPbx_project(self, ctx:PBXProjParser.Pbx_projectContext): pass # Enter a parse tree produced by PBXProjParser#pbx_reference_proxy. - def enterPbx_reference_proxy(self, ctx): + def enterPbx_reference_proxy(self, ctx:PBXProjParser.Pbx_reference_proxyContext): pass # Exit a parse tree produced by PBXProjParser#pbx_reference_proxy. - def exitPbx_reference_proxy(self, ctx): + def exitPbx_reference_proxy(self, ctx:PBXProjParser.Pbx_reference_proxyContext): pass # Enter a parse tree produced by PBXProjParser#pbx_resources_build_phase. - def enterPbx_resources_build_phase(self, ctx): + def enterPbx_resources_build_phase(self, ctx:PBXProjParser.Pbx_resources_build_phaseContext): pass # Exit a parse tree produced by PBXProjParser#pbx_resources_build_phase. - def exitPbx_resources_build_phase(self, ctx): + def exitPbx_resources_build_phase(self, ctx:PBXProjParser.Pbx_resources_build_phaseContext): pass # Enter a parse tree produced by PBXProjParser#pbx_shell_script_build_phase. - def enterPbx_shell_script_build_phase(self, ctx): + def enterPbx_shell_script_build_phase(self, ctx:PBXProjParser.Pbx_shell_script_build_phaseContext): pass # Exit a parse tree produced by PBXProjParser#pbx_shell_script_build_phase. - def exitPbx_shell_script_build_phase(self, ctx): + def exitPbx_shell_script_build_phase(self, ctx:PBXProjParser.Pbx_shell_script_build_phaseContext): pass # Enter a parse tree produced by PBXProjParser#pbx_sources_build_phase. - def enterPbx_sources_build_phase(self, ctx): + def enterPbx_sources_build_phase(self, ctx:PBXProjParser.Pbx_sources_build_phaseContext): pass # Exit a parse tree produced by PBXProjParser#pbx_sources_build_phase. - def exitPbx_sources_build_phase(self, ctx): + def exitPbx_sources_build_phase(self, ctx:PBXProjParser.Pbx_sources_build_phaseContext): pass # Enter a parse tree produced by PBXProjParser#pbx_target_dependency. - def enterPbx_target_dependency(self, ctx): + def enterPbx_target_dependency(self, ctx:PBXProjParser.Pbx_target_dependencyContext): pass # Exit a parse tree produced by PBXProjParser#pbx_target_dependency. - def exitPbx_target_dependency(self, ctx): + def exitPbx_target_dependency(self, ctx:PBXProjParser.Pbx_target_dependencyContext): pass # Enter a parse tree produced by PBXProjParser#pbx_variant_group. - def enterPbx_variant_group(self, ctx): + def enterPbx_variant_group(self, ctx:PBXProjParser.Pbx_variant_groupContext): pass # Exit a parse tree produced by PBXProjParser#pbx_variant_group. - def exitPbx_variant_group(self, ctx): + def exitPbx_variant_group(self, ctx:PBXProjParser.Pbx_variant_groupContext): pass # Enter a parse tree produced by PBXProjParser#xc_build_configuration. - def enterXc_build_configuration(self, ctx): + def enterXc_build_configuration(self, ctx:PBXProjParser.Xc_build_configurationContext): pass # Exit a parse tree produced by PBXProjParser#xc_build_configuration. - def exitXc_build_configuration(self, ctx): + def exitXc_build_configuration(self, ctx:PBXProjParser.Xc_build_configurationContext): pass # Enter a parse tree produced by PBXProjParser#xc_configuration_list. - def enterXc_configuration_list(self, ctx): + def enterXc_configuration_list(self, ctx:PBXProjParser.Xc_configuration_listContext): pass # Exit a parse tree produced by PBXProjParser#xc_configuration_list. - def exitXc_configuration_list(self, ctx): + def exitXc_configuration_list(self, ctx:PBXProjParser.Xc_configuration_listContext): pass # Enter a parse tree produced by PBXProjParser#xc_remote_swift_package_reference. - def enterXc_remote_swift_package_reference(self, ctx): + def enterXc_remote_swift_package_reference(self, ctx:PBXProjParser.Xc_remote_swift_package_referenceContext): pass # Exit a parse tree produced by PBXProjParser#xc_remote_swift_package_reference. - def exitXc_remote_swift_package_reference(self, ctx): + def exitXc_remote_swift_package_reference(self, ctx:PBXProjParser.Xc_remote_swift_package_referenceContext): pass # Enter a parse tree produced by PBXProjParser#xc_swift_package_product_dependency. - def enterXc_swift_package_product_dependency(self, ctx): + def enterXc_swift_package_product_dependency(self, ctx:PBXProjParser.Xc_swift_package_product_dependencyContext): pass # Exit a parse tree produced by PBXProjParser#xc_swift_package_product_dependency. - def exitXc_swift_package_product_dependency(self, ctx): + def exitXc_swift_package_product_dependency(self, ctx:PBXProjParser.Xc_swift_package_product_dependencyContext): pass # Enter a parse tree produced by PBXProjParser#xc_version_group. - def enterXc_version_group(self, ctx): + def enterXc_version_group(self, ctx:PBXProjParser.Xc_version_groupContext): pass # Exit a parse tree produced by PBXProjParser#xc_version_group. - def exitXc_version_group(self, ctx): + def exitXc_version_group(self, ctx:PBXProjParser.Xc_version_groupContext): pass # Enter a parse tree produced by PBXProjParser#isa_pbx_aggregate_target. - def enterIsa_pbx_aggregate_target(self, ctx): + def enterIsa_pbx_aggregate_target(self, ctx:PBXProjParser.Isa_pbx_aggregate_targetContext): pass # Exit a parse tree produced by PBXProjParser#isa_pbx_aggregate_target. - def exitIsa_pbx_aggregate_target(self, ctx): + def exitIsa_pbx_aggregate_target(self, ctx:PBXProjParser.Isa_pbx_aggregate_targetContext): pass # Enter a parse tree produced by PBXProjParser#isa_pbx_build_file. - def enterIsa_pbx_build_file(self, ctx): + def enterIsa_pbx_build_file(self, ctx:PBXProjParser.Isa_pbx_build_fileContext): pass # Exit a parse tree produced by PBXProjParser#isa_pbx_build_file. - def exitIsa_pbx_build_file(self, ctx): + def exitIsa_pbx_build_file(self, ctx:PBXProjParser.Isa_pbx_build_fileContext): pass # Enter a parse tree produced by PBXProjParser#isa_pbx_container_item_proxy. - def enterIsa_pbx_container_item_proxy(self, ctx): + def enterIsa_pbx_container_item_proxy(self, ctx:PBXProjParser.Isa_pbx_container_item_proxyContext): pass # Exit a parse tree produced by PBXProjParser#isa_pbx_container_item_proxy. - def exitIsa_pbx_container_item_proxy(self, ctx): + def exitIsa_pbx_container_item_proxy(self, ctx:PBXProjParser.Isa_pbx_container_item_proxyContext): pass # Enter a parse tree produced by PBXProjParser#isa_pbx_copy_files_build_phase. - def enterIsa_pbx_copy_files_build_phase(self, ctx): + def enterIsa_pbx_copy_files_build_phase(self, ctx:PBXProjParser.Isa_pbx_copy_files_build_phaseContext): pass # Exit a parse tree produced by PBXProjParser#isa_pbx_copy_files_build_phase. - def exitIsa_pbx_copy_files_build_phase(self, ctx): + def exitIsa_pbx_copy_files_build_phase(self, ctx:PBXProjParser.Isa_pbx_copy_files_build_phaseContext): pass # Enter a parse tree produced by PBXProjParser#isa_pbx_file_reference. - def enterIsa_pbx_file_reference(self, ctx): + def enterIsa_pbx_file_reference(self, ctx:PBXProjParser.Isa_pbx_file_referenceContext): pass # Exit a parse tree produced by PBXProjParser#isa_pbx_file_reference. - def exitIsa_pbx_file_reference(self, ctx): + def exitIsa_pbx_file_reference(self, ctx:PBXProjParser.Isa_pbx_file_referenceContext): pass # Enter a parse tree produced by PBXProjParser#isa_pbx_frameworks_build_phase. - def enterIsa_pbx_frameworks_build_phase(self, ctx): + def enterIsa_pbx_frameworks_build_phase(self, ctx:PBXProjParser.Isa_pbx_frameworks_build_phaseContext): pass # Exit a parse tree produced by PBXProjParser#isa_pbx_frameworks_build_phase. - def exitIsa_pbx_frameworks_build_phase(self, ctx): + def exitIsa_pbx_frameworks_build_phase(self, ctx:PBXProjParser.Isa_pbx_frameworks_build_phaseContext): pass # Enter a parse tree produced by PBXProjParser#isa_pbx_group. - def enterIsa_pbx_group(self, ctx): + def enterIsa_pbx_group(self, ctx:PBXProjParser.Isa_pbx_groupContext): pass # Exit a parse tree produced by PBXProjParser#isa_pbx_group. - def exitIsa_pbx_group(self, ctx): + def exitIsa_pbx_group(self, ctx:PBXProjParser.Isa_pbx_groupContext): pass # Enter a parse tree produced by PBXProjParser#isa_pbx_header_build_phase. - def enterIsa_pbx_header_build_phase(self, ctx): + def enterIsa_pbx_header_build_phase(self, ctx:PBXProjParser.Isa_pbx_header_build_phaseContext): pass # Exit a parse tree produced by PBXProjParser#isa_pbx_header_build_phase. - def exitIsa_pbx_header_build_phase(self, ctx): + def exitIsa_pbx_header_build_phase(self, ctx:PBXProjParser.Isa_pbx_header_build_phaseContext): pass # Enter a parse tree produced by PBXProjParser#isa_pbx_native_target. - def enterIsa_pbx_native_target(self, ctx): + def enterIsa_pbx_native_target(self, ctx:PBXProjParser.Isa_pbx_native_targetContext): pass # Exit a parse tree produced by PBXProjParser#isa_pbx_native_target. - def exitIsa_pbx_native_target(self, ctx): + def exitIsa_pbx_native_target(self, ctx:PBXProjParser.Isa_pbx_native_targetContext): pass # Enter a parse tree produced by PBXProjParser#isa_pbx_project. - def enterIsa_pbx_project(self, ctx): + def enterIsa_pbx_project(self, ctx:PBXProjParser.Isa_pbx_projectContext): pass # Exit a parse tree produced by PBXProjParser#isa_pbx_project. - def exitIsa_pbx_project(self, ctx): + def exitIsa_pbx_project(self, ctx:PBXProjParser.Isa_pbx_projectContext): pass # Enter a parse tree produced by PBXProjParser#isa_pbx_reference_proxy. - def enterIsa_pbx_reference_proxy(self, ctx): + def enterIsa_pbx_reference_proxy(self, ctx:PBXProjParser.Isa_pbx_reference_proxyContext): pass # Exit a parse tree produced by PBXProjParser#isa_pbx_reference_proxy. - def exitIsa_pbx_reference_proxy(self, ctx): + def exitIsa_pbx_reference_proxy(self, ctx:PBXProjParser.Isa_pbx_reference_proxyContext): pass # Enter a parse tree produced by PBXProjParser#isa_pbx_resources_build_phase. - def enterIsa_pbx_resources_build_phase(self, ctx): + def enterIsa_pbx_resources_build_phase(self, ctx:PBXProjParser.Isa_pbx_resources_build_phaseContext): pass # Exit a parse tree produced by PBXProjParser#isa_pbx_resources_build_phase. - def exitIsa_pbx_resources_build_phase(self, ctx): + def exitIsa_pbx_resources_build_phase(self, ctx:PBXProjParser.Isa_pbx_resources_build_phaseContext): pass # Enter a parse tree produced by PBXProjParser#isa_pbx_shell_script_build_phase. - def enterIsa_pbx_shell_script_build_phase(self, ctx): + def enterIsa_pbx_shell_script_build_phase(self, ctx:PBXProjParser.Isa_pbx_shell_script_build_phaseContext): pass # Exit a parse tree produced by PBXProjParser#isa_pbx_shell_script_build_phase. - def exitIsa_pbx_shell_script_build_phase(self, ctx): + def exitIsa_pbx_shell_script_build_phase(self, ctx:PBXProjParser.Isa_pbx_shell_script_build_phaseContext): pass # Enter a parse tree produced by PBXProjParser#isa_pbx_sources_build_phase. - def enterIsa_pbx_sources_build_phase(self, ctx): + def enterIsa_pbx_sources_build_phase(self, ctx:PBXProjParser.Isa_pbx_sources_build_phaseContext): pass # Exit a parse tree produced by PBXProjParser#isa_pbx_sources_build_phase. - def exitIsa_pbx_sources_build_phase(self, ctx): + def exitIsa_pbx_sources_build_phase(self, ctx:PBXProjParser.Isa_pbx_sources_build_phaseContext): pass # Enter a parse tree produced by PBXProjParser#isa_pbx_target_dependency. - def enterIsa_pbx_target_dependency(self, ctx): + def enterIsa_pbx_target_dependency(self, ctx:PBXProjParser.Isa_pbx_target_dependencyContext): pass # Exit a parse tree produced by PBXProjParser#isa_pbx_target_dependency. - def exitIsa_pbx_target_dependency(self, ctx): + def exitIsa_pbx_target_dependency(self, ctx:PBXProjParser.Isa_pbx_target_dependencyContext): pass # Enter a parse tree produced by PBXProjParser#isa_pbx_variant_group. - def enterIsa_pbx_variant_group(self, ctx): + def enterIsa_pbx_variant_group(self, ctx:PBXProjParser.Isa_pbx_variant_groupContext): pass # Exit a parse tree produced by PBXProjParser#isa_pbx_variant_group. - def exitIsa_pbx_variant_group(self, ctx): + def exitIsa_pbx_variant_group(self, ctx:PBXProjParser.Isa_pbx_variant_groupContext): pass # Enter a parse tree produced by PBXProjParser#isa_xc_build_configuration. - def enterIsa_xc_build_configuration(self, ctx): + def enterIsa_xc_build_configuration(self, ctx:PBXProjParser.Isa_xc_build_configurationContext): pass # Exit a parse tree produced by PBXProjParser#isa_xc_build_configuration. - def exitIsa_xc_build_configuration(self, ctx): + def exitIsa_xc_build_configuration(self, ctx:PBXProjParser.Isa_xc_build_configurationContext): pass # Enter a parse tree produced by PBXProjParser#isa_xc_configuration_list. - def enterIsa_xc_configuration_list(self, ctx): + def enterIsa_xc_configuration_list(self, ctx:PBXProjParser.Isa_xc_configuration_listContext): pass # Exit a parse tree produced by PBXProjParser#isa_xc_configuration_list. - def exitIsa_xc_configuration_list(self, ctx): + def exitIsa_xc_configuration_list(self, ctx:PBXProjParser.Isa_xc_configuration_listContext): pass # Enter a parse tree produced by PBXProjParser#isa_xc_remote_swift_package_reference. - def enterIsa_xc_remote_swift_package_reference(self, ctx): + def enterIsa_xc_remote_swift_package_reference(self, ctx:PBXProjParser.Isa_xc_remote_swift_package_referenceContext): pass # Exit a parse tree produced by PBXProjParser#isa_xc_remote_swift_package_reference. - def exitIsa_xc_remote_swift_package_reference(self, ctx): + def exitIsa_xc_remote_swift_package_reference(self, ctx:PBXProjParser.Isa_xc_remote_swift_package_referenceContext): pass # Enter a parse tree produced by PBXProjParser#isa_xc_swift_package_product_dependency. - def enterIsa_xc_swift_package_product_dependency(self, ctx): + def enterIsa_xc_swift_package_product_dependency(self, ctx:PBXProjParser.Isa_xc_swift_package_product_dependencyContext): pass # Exit a parse tree produced by PBXProjParser#isa_xc_swift_package_product_dependency. - def exitIsa_xc_swift_package_product_dependency(self, ctx): + def exitIsa_xc_swift_package_product_dependency(self, ctx:PBXProjParser.Isa_xc_swift_package_product_dependencyContext): pass # Enter a parse tree produced by PBXProjParser#isa_xc_version_group. - def enterIsa_xc_version_group(self, ctx): + def enterIsa_xc_version_group(self, ctx:PBXProjParser.Isa_xc_version_groupContext): pass # Exit a parse tree produced by PBXProjParser#isa_xc_version_group. - def exitIsa_xc_version_group(self, ctx): + def exitIsa_xc_version_group(self, ctx:PBXProjParser.Isa_xc_version_groupContext): pass # Enter a parse tree produced by PBXProjParser#file_ref. - def enterFile_ref(self, ctx): + def enterFile_ref(self, ctx:PBXProjParser.File_refContext): pass # Exit a parse tree produced by PBXProjParser#file_ref. - def exitFile_ref(self, ctx): + def exitFile_ref(self, ctx:PBXProjParser.File_refContext): pass # Enter a parse tree produced by PBXProjParser#container_portal. - def enterContainer_portal(self, ctx): + def enterContainer_portal(self, ctx:PBXProjParser.Container_portalContext): pass # Exit a parse tree produced by PBXProjParser#container_portal. - def exitContainer_portal(self, ctx): + def exitContainer_portal(self, ctx:PBXProjParser.Container_portalContext): pass # Enter a parse tree produced by PBXProjParser#proxy_type. - def enterProxy_type(self, ctx): + def enterProxy_type(self, ctx:PBXProjParser.Proxy_typeContext): pass # Exit a parse tree produced by PBXProjParser#proxy_type. - def exitProxy_type(self, ctx): + def exitProxy_type(self, ctx:PBXProjParser.Proxy_typeContext): pass # Enter a parse tree produced by PBXProjParser#remote_global_id_string. - def enterRemote_global_id_string(self, ctx): + def enterRemote_global_id_string(self, ctx:PBXProjParser.Remote_global_id_stringContext): pass # Exit a parse tree produced by PBXProjParser#remote_global_id_string. - def exitRemote_global_id_string(self, ctx): + def exitRemote_global_id_string(self, ctx:PBXProjParser.Remote_global_id_stringContext): pass # Enter a parse tree produced by PBXProjParser#remote_info. - def enterRemote_info(self, ctx): + def enterRemote_info(self, ctx:PBXProjParser.Remote_infoContext): pass # Exit a parse tree produced by PBXProjParser#remote_info. - def exitRemote_info(self, ctx): + def exitRemote_info(self, ctx:PBXProjParser.Remote_infoContext): pass # Enter a parse tree produced by PBXProjParser#file_encoding. - def enterFile_encoding(self, ctx): + def enterFile_encoding(self, ctx:PBXProjParser.File_encodingContext): pass # Exit a parse tree produced by PBXProjParser#file_encoding. - def exitFile_encoding(self, ctx): + def exitFile_encoding(self, ctx:PBXProjParser.File_encodingContext): pass # Enter a parse tree produced by PBXProjParser#explicit_file_type. - def enterExplicit_file_type(self, ctx): + def enterExplicit_file_type(self, ctx:PBXProjParser.Explicit_file_typeContext): pass # Exit a parse tree produced by PBXProjParser#explicit_file_type. - def exitExplicit_file_type(self, ctx): + def exitExplicit_file_type(self, ctx:PBXProjParser.Explicit_file_typeContext): pass # Enter a parse tree produced by PBXProjParser#last_known_file_type. - def enterLast_known_file_type(self, ctx): + def enterLast_known_file_type(self, ctx:PBXProjParser.Last_known_file_typeContext): pass # Exit a parse tree produced by PBXProjParser#last_known_file_type. - def exitLast_known_file_type(self, ctx): + def exitLast_known_file_type(self, ctx:PBXProjParser.Last_known_file_typeContext): pass # Enter a parse tree produced by PBXProjParser#include_in_index. - def enterInclude_in_index(self, ctx): + def enterInclude_in_index(self, ctx:PBXProjParser.Include_in_indexContext): pass # Exit a parse tree produced by PBXProjParser#include_in_index. - def exitInclude_in_index(self, ctx): + def exitInclude_in_index(self, ctx:PBXProjParser.Include_in_indexContext): pass # Enter a parse tree produced by PBXProjParser#indent_width. - def enterIndent_width(self, ctx): + def enterIndent_width(self, ctx:PBXProjParser.Indent_widthContext): pass # Exit a parse tree produced by PBXProjParser#indent_width. - def exitIndent_width(self, ctx): + def exitIndent_width(self, ctx:PBXProjParser.Indent_widthContext): pass # Enter a parse tree produced by PBXProjParser#tab_width. - def enterTab_width(self, ctx): + def enterTab_width(self, ctx:PBXProjParser.Tab_widthContext): pass # Exit a parse tree produced by PBXProjParser#tab_width. - def exitTab_width(self, ctx): + def exitTab_width(self, ctx:PBXProjParser.Tab_widthContext): pass # Enter a parse tree produced by PBXProjParser#uses_tabs. - def enterUses_tabs(self, ctx): + def enterUses_tabs(self, ctx:PBXProjParser.Uses_tabsContext): pass # Exit a parse tree produced by PBXProjParser#uses_tabs. - def exitUses_tabs(self, ctx): + def exitUses_tabs(self, ctx:PBXProjParser.Uses_tabsContext): pass # Enter a parse tree produced by PBXProjParser#children. - def enterChildren(self, ctx): + def enterChildren(self, ctx:PBXProjParser.ChildrenContext): pass # Exit a parse tree produced by PBXProjParser#children. - def exitChildren(self, ctx): + def exitChildren(self, ctx:PBXProjParser.ChildrenContext): pass # Enter a parse tree produced by PBXProjParser#product_install_path. - def enterProduct_install_path(self, ctx): + def enterProduct_install_path(self, ctx:PBXProjParser.Product_install_pathContext): pass # Exit a parse tree produced by PBXProjParser#product_install_path. - def exitProduct_install_path(self, ctx): + def exitProduct_install_path(self, ctx:PBXProjParser.Product_install_pathContext): pass # Enter a parse tree produced by PBXProjParser#repository_url. - def enterRepository_url(self, ctx): + def enterRepository_url(self, ctx:PBXProjParser.Repository_urlContext): pass # Exit a parse tree produced by PBXProjParser#repository_url. - def exitRepository_url(self, ctx): + def exitRepository_url(self, ctx:PBXProjParser.Repository_urlContext): pass # Enter a parse tree produced by PBXProjParser#requirement. - def enterRequirement(self, ctx): + def enterRequirement(self, ctx:PBXProjParser.RequirementContext): pass # Exit a parse tree produced by PBXProjParser#requirement. - def exitRequirement(self, ctx): + def exitRequirement(self, ctx:PBXProjParser.RequirementContext): pass # Enter a parse tree produced by PBXProjParser#xc_package. - def enterXc_package(self, ctx): + def enterXc_package(self, ctx:PBXProjParser.Xc_packageContext): pass # Exit a parse tree produced by PBXProjParser#xc_package. - def exitXc_package(self, ctx): + def exitXc_package(self, ctx:PBXProjParser.Xc_packageContext): pass # Enter a parse tree produced by PBXProjParser#package_product_dependencies. - def enterPackage_product_dependencies(self, ctx): + def enterPackage_product_dependencies(self, ctx:PBXProjParser.Package_product_dependenciesContext): pass # Exit a parse tree produced by PBXProjParser#package_product_dependencies. - def exitPackage_product_dependencies(self, ctx): + def exitPackage_product_dependencies(self, ctx:PBXProjParser.Package_product_dependenciesContext): pass # Enter a parse tree produced by PBXProjParser#name. - def enterName(self, ctx): + def enterName(self, ctx:PBXProjParser.NameContext): pass # Exit a parse tree produced by PBXProjParser#name. - def exitName(self, ctx): + def exitName(self, ctx:PBXProjParser.NameContext): pass # Enter a parse tree produced by PBXProjParser#path. - def enterPath(self, ctx): + def enterPath(self, ctx:PBXProjParser.PathContext): pass # Exit a parse tree produced by PBXProjParser#path. - def exitPath(self, ctx): + def exitPath(self, ctx:PBXProjParser.PathContext): pass # Enter a parse tree produced by PBXProjParser#source_tree. - def enterSource_tree(self, ctx): + def enterSource_tree(self, ctx:PBXProjParser.Source_treeContext): pass # Exit a parse tree produced by PBXProjParser#source_tree. - def exitSource_tree(self, ctx): + def exitSource_tree(self, ctx:PBXProjParser.Source_treeContext): pass # Enter a parse tree produced by PBXProjParser#build_action_mask. - def enterBuild_action_mask(self, ctx): + def enterBuild_action_mask(self, ctx:PBXProjParser.Build_action_maskContext): pass # Exit a parse tree produced by PBXProjParser#build_action_mask. - def exitBuild_action_mask(self, ctx): + def exitBuild_action_mask(self, ctx:PBXProjParser.Build_action_maskContext): pass # Enter a parse tree produced by PBXProjParser#files. - def enterFiles(self, ctx): + def enterFiles(self, ctx:PBXProjParser.FilesContext): pass # Exit a parse tree produced by PBXProjParser#files. - def exitFiles(self, ctx): + def exitFiles(self, ctx:PBXProjParser.FilesContext): pass # Enter a parse tree produced by PBXProjParser#run_only_for_deployment_postprocessing. - def enterRun_only_for_deployment_postprocessing(self, ctx): + def enterRun_only_for_deployment_postprocessing(self, ctx:PBXProjParser.Run_only_for_deployment_postprocessingContext): pass # Exit a parse tree produced by PBXProjParser#run_only_for_deployment_postprocessing. - def exitRun_only_for_deployment_postprocessing(self, ctx): + def exitRun_only_for_deployment_postprocessing(self, ctx:PBXProjParser.Run_only_for_deployment_postprocessingContext): pass # Enter a parse tree produced by PBXProjParser#reference_list. - def enterReference_list(self, ctx): + def enterReference_list(self, ctx:PBXProjParser.Reference_listContext): pass # Exit a parse tree produced by PBXProjParser#reference_list. - def exitReference_list(self, ctx): + def exitReference_list(self, ctx:PBXProjParser.Reference_listContext): pass # Enter a parse tree produced by PBXProjParser#any_string_list. - def enterAny_string_list(self, ctx): + def enterAny_string_list(self, ctx:PBXProjParser.Any_string_listContext): pass # Exit a parse tree produced by PBXProjParser#any_string_list. - def exitAny_string_list(self, ctx): + def exitAny_string_list(self, ctx:PBXProjParser.Any_string_listContext): pass # Enter a parse tree produced by PBXProjParser#non_quoted_strings_list. - def enterNon_quoted_strings_list(self, ctx): + def enterNon_quoted_strings_list(self, ctx:PBXProjParser.Non_quoted_strings_listContext): pass # Exit a parse tree produced by PBXProjParser#non_quoted_strings_list. - def exitNon_quoted_strings_list(self, ctx): + def exitNon_quoted_strings_list(self, ctx:PBXProjParser.Non_quoted_strings_listContext): pass # Enter a parse tree produced by PBXProjParser#build_configuration_list. - def enterBuild_configuration_list(self, ctx): + def enterBuild_configuration_list(self, ctx:PBXProjParser.Build_configuration_listContext): pass # Exit a parse tree produced by PBXProjParser#build_configuration_list. - def exitBuild_configuration_list(self, ctx): + def exitBuild_configuration_list(self, ctx:PBXProjParser.Build_configuration_listContext): pass # Enter a parse tree produced by PBXProjParser#build_phases. - def enterBuild_phases(self, ctx): + def enterBuild_phases(self, ctx:PBXProjParser.Build_phasesContext): pass # Exit a parse tree produced by PBXProjParser#build_phases. - def exitBuild_phases(self, ctx): + def exitBuild_phases(self, ctx:PBXProjParser.Build_phasesContext): pass # Enter a parse tree produced by PBXProjParser#build_rules. - def enterBuild_rules(self, ctx): + def enterBuild_rules(self, ctx:PBXProjParser.Build_rulesContext): pass # Exit a parse tree produced by PBXProjParser#build_rules. - def exitBuild_rules(self, ctx): + def exitBuild_rules(self, ctx:PBXProjParser.Build_rulesContext): pass # Enter a parse tree produced by PBXProjParser#dependencies. - def enterDependencies(self, ctx): + def enterDependencies(self, ctx:PBXProjParser.DependenciesContext): pass # Exit a parse tree produced by PBXProjParser#dependencies. - def exitDependencies(self, ctx): + def exitDependencies(self, ctx:PBXProjParser.DependenciesContext): pass # Enter a parse tree produced by PBXProjParser#product_name. - def enterProduct_name(self, ctx): + def enterProduct_name(self, ctx:PBXProjParser.Product_nameContext): pass # Exit a parse tree produced by PBXProjParser#product_name. - def exitProduct_name(self, ctx): + def exitProduct_name(self, ctx:PBXProjParser.Product_nameContext): pass # Enter a parse tree produced by PBXProjParser#product_reference. - def enterProduct_reference(self, ctx): + def enterProduct_reference(self, ctx:PBXProjParser.Product_referenceContext): pass # Exit a parse tree produced by PBXProjParser#product_reference. - def exitProduct_reference(self, ctx): + def exitProduct_reference(self, ctx:PBXProjParser.Product_referenceContext): pass # Enter a parse tree produced by PBXProjParser#product_type. - def enterProduct_type(self, ctx): + def enterProduct_type(self, ctx:PBXProjParser.Product_typeContext): pass # Exit a parse tree produced by PBXProjParser#product_type. - def exitProduct_type(self, ctx): + def exitProduct_type(self, ctx:PBXProjParser.Product_typeContext): pass # Enter a parse tree produced by PBXProjParser#line_ending. - def enterLine_ending(self, ctx): + def enterLine_ending(self, ctx:PBXProjParser.Line_endingContext): pass # Exit a parse tree produced by PBXProjParser#line_ending. - def exitLine_ending(self, ctx): + def exitLine_ending(self, ctx:PBXProjParser.Line_endingContext): pass # Enter a parse tree produced by PBXProjParser#xc_language_specification_identifier. - def enterXc_language_specification_identifier(self, ctx): + def enterXc_language_specification_identifier(self, ctx:PBXProjParser.Xc_language_specification_identifierContext): pass # Exit a parse tree produced by PBXProjParser#xc_language_specification_identifier. - def exitXc_language_specification_identifier(self, ctx): + def exitXc_language_specification_identifier(self, ctx:PBXProjParser.Xc_language_specification_identifierContext): pass # Enter a parse tree produced by PBXProjParser#plist_structure_definition_identifier. - def enterPlist_structure_definition_identifier(self, ctx): + def enterPlist_structure_definition_identifier(self, ctx:PBXProjParser.Plist_structure_definition_identifierContext): pass # Exit a parse tree produced by PBXProjParser#plist_structure_definition_identifier. - def exitPlist_structure_definition_identifier(self, ctx): + def exitPlist_structure_definition_identifier(self, ctx:PBXProjParser.Plist_structure_definition_identifierContext): pass # Enter a parse tree produced by PBXProjParser#attributes. - def enterAttributes(self, ctx): + def enterAttributes(self, ctx:PBXProjParser.AttributesContext): pass # Exit a parse tree produced by PBXProjParser#attributes. - def exitAttributes(self, ctx): + def exitAttributes(self, ctx:PBXProjParser.AttributesContext): pass # Enter a parse tree produced by PBXProjParser#last_swift_migration. - def enterLast_swift_migration(self, ctx): + def enterLast_swift_migration(self, ctx:PBXProjParser.Last_swift_migrationContext): pass # Exit a parse tree produced by PBXProjParser#last_swift_migration. - def exitLast_swift_migration(self, ctx): + def exitLast_swift_migration(self, ctx:PBXProjParser.Last_swift_migrationContext): pass # Enter a parse tree produced by PBXProjParser#default_build_system_type_for_workspace. - def enterDefault_build_system_type_for_workspace(self, ctx): + def enterDefault_build_system_type_for_workspace(self, ctx:PBXProjParser.Default_build_system_type_for_workspaceContext): pass # Exit a parse tree produced by PBXProjParser#default_build_system_type_for_workspace. - def exitDefault_build_system_type_for_workspace(self, ctx): + def exitDefault_build_system_type_for_workspace(self, ctx:PBXProjParser.Default_build_system_type_for_workspaceContext): pass # Enter a parse tree produced by PBXProjParser#last_swift_update_check. - def enterLast_swift_update_check(self, ctx): + def enterLast_swift_update_check(self, ctx:PBXProjParser.Last_swift_update_checkContext): pass # Exit a parse tree produced by PBXProjParser#last_swift_update_check. - def exitLast_swift_update_check(self, ctx): + def exitLast_swift_update_check(self, ctx:PBXProjParser.Last_swift_update_checkContext): pass # Enter a parse tree produced by PBXProjParser#build_targets_in_parallel. - def enterBuild_targets_in_parallel(self, ctx): + def enterBuild_targets_in_parallel(self, ctx:PBXProjParser.Build_targets_in_parallelContext): pass # Exit a parse tree produced by PBXProjParser#build_targets_in_parallel. - def exitBuild_targets_in_parallel(self, ctx): + def exitBuild_targets_in_parallel(self, ctx:PBXProjParser.Build_targets_in_parallelContext): pass # Enter a parse tree produced by PBXProjParser#last_upgrade_check. - def enterLast_upgrade_check(self, ctx): + def enterLast_upgrade_check(self, ctx:PBXProjParser.Last_upgrade_checkContext): pass # Exit a parse tree produced by PBXProjParser#last_upgrade_check. - def exitLast_upgrade_check(self, ctx): + def exitLast_upgrade_check(self, ctx:PBXProjParser.Last_upgrade_checkContext): pass # Enter a parse tree produced by PBXProjParser#last_testing_upgrade_check. - def enterLast_testing_upgrade_check(self, ctx): + def enterLast_testing_upgrade_check(self, ctx:PBXProjParser.Last_testing_upgrade_checkContext): pass # Exit a parse tree produced by PBXProjParser#last_testing_upgrade_check. - def exitLast_testing_upgrade_check(self, ctx): + def exitLast_testing_upgrade_check(self, ctx:PBXProjParser.Last_testing_upgrade_checkContext): pass # Enter a parse tree produced by PBXProjParser#organization_name. - def enterOrganization_name(self, ctx): + def enterOrganization_name(self, ctx:PBXProjParser.Organization_nameContext): pass # Exit a parse tree produced by PBXProjParser#organization_name. - def exitOrganization_name(self, ctx): + def exitOrganization_name(self, ctx:PBXProjParser.Organization_nameContext): pass # Enter a parse tree produced by PBXProjParser#target_attributes. - def enterTarget_attributes(self, ctx): + def enterTarget_attributes(self, ctx:PBXProjParser.Target_attributesContext): pass # Exit a parse tree produced by PBXProjParser#target_attributes. - def exitTarget_attributes(self, ctx): + def exitTarget_attributes(self, ctx:PBXProjParser.Target_attributesContext): pass # Enter a parse tree produced by PBXProjParser#target_attribute. - def enterTarget_attribute(self, ctx): + def enterTarget_attribute(self, ctx:PBXProjParser.Target_attributeContext): pass # Exit a parse tree produced by PBXProjParser#target_attribute. - def exitTarget_attribute(self, ctx): + def exitTarget_attribute(self, ctx:PBXProjParser.Target_attributeContext): pass # Enter a parse tree produced by PBXProjParser#created_on_tools_version. - def enterCreated_on_tools_version(self, ctx): + def enterCreated_on_tools_version(self, ctx:PBXProjParser.Created_on_tools_versionContext): pass # Exit a parse tree produced by PBXProjParser#created_on_tools_version. - def exitCreated_on_tools_version(self, ctx): + def exitCreated_on_tools_version(self, ctx:PBXProjParser.Created_on_tools_versionContext): pass # Enter a parse tree produced by PBXProjParser#test_target_id. - def enterTest_target_id(self, ctx): + def enterTest_target_id(self, ctx:PBXProjParser.Test_target_idContext): pass # Exit a parse tree produced by PBXProjParser#test_target_id. - def exitTest_target_id(self, ctx): + def exitTest_target_id(self, ctx:PBXProjParser.Test_target_idContext): pass # Enter a parse tree produced by PBXProjParser#development_team. - def enterDevelopment_team(self, ctx): + def enterDevelopment_team(self, ctx:PBXProjParser.Development_teamContext): pass # Exit a parse tree produced by PBXProjParser#development_team. - def exitDevelopment_team(self, ctx): + def exitDevelopment_team(self, ctx:PBXProjParser.Development_teamContext): pass # Enter a parse tree produced by PBXProjParser#provisioning_style. - def enterProvisioning_style(self, ctx): + def enterProvisioning_style(self, ctx:PBXProjParser.Provisioning_styleContext): pass # Exit a parse tree produced by PBXProjParser#provisioning_style. - def exitProvisioning_style(self, ctx): + def exitProvisioning_style(self, ctx:PBXProjParser.Provisioning_styleContext): pass # Enter a parse tree produced by PBXProjParser#compatibility_version. - def enterCompatibility_version(self, ctx): + def enterCompatibility_version(self, ctx:PBXProjParser.Compatibility_versionContext): pass # Exit a parse tree produced by PBXProjParser#compatibility_version. - def exitCompatibility_version(self, ctx): + def exitCompatibility_version(self, ctx:PBXProjParser.Compatibility_versionContext): pass # Enter a parse tree produced by PBXProjParser#development_region. - def enterDevelopment_region(self, ctx): + def enterDevelopment_region(self, ctx:PBXProjParser.Development_regionContext): pass # Exit a parse tree produced by PBXProjParser#development_region. - def exitDevelopment_region(self, ctx): + def exitDevelopment_region(self, ctx:PBXProjParser.Development_regionContext): pass # Enter a parse tree produced by PBXProjParser#has_scanned_for_encodings. - def enterHas_scanned_for_encodings(self, ctx): + def enterHas_scanned_for_encodings(self, ctx:PBXProjParser.Has_scanned_for_encodingsContext): pass # Exit a parse tree produced by PBXProjParser#has_scanned_for_encodings. - def exitHas_scanned_for_encodings(self, ctx): + def exitHas_scanned_for_encodings(self, ctx:PBXProjParser.Has_scanned_for_encodingsContext): pass # Enter a parse tree produced by PBXProjParser#known_regions. - def enterKnown_regions(self, ctx): + def enterKnown_regions(self, ctx:PBXProjParser.Known_regionsContext): pass # Exit a parse tree produced by PBXProjParser#known_regions. - def exitKnown_regions(self, ctx): + def exitKnown_regions(self, ctx:PBXProjParser.Known_regionsContext): pass # Enter a parse tree produced by PBXProjParser#main_group. - def enterMain_group(self, ctx): + def enterMain_group(self, ctx:PBXProjParser.Main_groupContext): pass # Exit a parse tree produced by PBXProjParser#main_group. - def exitMain_group(self, ctx): + def exitMain_group(self, ctx:PBXProjParser.Main_groupContext): pass # Enter a parse tree produced by PBXProjParser#product_ref_group. - def enterProduct_ref_group(self, ctx): + def enterProduct_ref_group(self, ctx:PBXProjParser.Product_ref_groupContext): pass # Exit a parse tree produced by PBXProjParser#product_ref_group. - def exitProduct_ref_group(self, ctx): + def exitProduct_ref_group(self, ctx:PBXProjParser.Product_ref_groupContext): pass # Enter a parse tree produced by PBXProjParser#package_references. - def enterPackage_references(self, ctx): + def enterPackage_references(self, ctx:PBXProjParser.Package_referencesContext): pass # Exit a parse tree produced by PBXProjParser#package_references. - def exitPackage_references(self, ctx): + def exitPackage_references(self, ctx:PBXProjParser.Package_referencesContext): pass # Enter a parse tree produced by PBXProjParser#project_dir_path. - def enterProject_dir_path(self, ctx): + def enterProject_dir_path(self, ctx:PBXProjParser.Project_dir_pathContext): pass # Exit a parse tree produced by PBXProjParser#project_dir_path. - def exitProject_dir_path(self, ctx): + def exitProject_dir_path(self, ctx:PBXProjParser.Project_dir_pathContext): pass # Enter a parse tree produced by PBXProjParser#project_references. - def enterProject_references(self, ctx): + def enterProject_references(self, ctx:PBXProjParser.Project_referencesContext): pass # Exit a parse tree produced by PBXProjParser#project_references. - def exitProject_references(self, ctx): + def exitProject_references(self, ctx:PBXProjParser.Project_referencesContext): pass # Enter a parse tree produced by PBXProjParser#project_root. - def enterProject_root(self, ctx): + def enterProject_root(self, ctx:PBXProjParser.Project_rootContext): pass # Exit a parse tree produced by PBXProjParser#project_root. - def exitProject_root(self, ctx): + def exitProject_root(self, ctx:PBXProjParser.Project_rootContext): pass # Enter a parse tree produced by PBXProjParser#targets. - def enterTargets(self, ctx): + def enterTargets(self, ctx:PBXProjParser.TargetsContext): pass # Exit a parse tree produced by PBXProjParser#targets. - def exitTargets(self, ctx): + def exitTargets(self, ctx:PBXProjParser.TargetsContext): pass # Enter a parse tree produced by PBXProjParser#input_file_list_paths. - def enterInput_file_list_paths(self, ctx): + def enterInput_file_list_paths(self, ctx:PBXProjParser.Input_file_list_pathsContext): pass # Exit a parse tree produced by PBXProjParser#input_file_list_paths. - def exitInput_file_list_paths(self, ctx): + def exitInput_file_list_paths(self, ctx:PBXProjParser.Input_file_list_pathsContext): pass # Enter a parse tree produced by PBXProjParser#input_paths. - def enterInput_paths(self, ctx): + def enterInput_paths(self, ctx:PBXProjParser.Input_pathsContext): pass # Exit a parse tree produced by PBXProjParser#input_paths. - def exitInput_paths(self, ctx): + def exitInput_paths(self, ctx:PBXProjParser.Input_pathsContext): pass # Enter a parse tree produced by PBXProjParser#output_file_list_paths. - def enterOutput_file_list_paths(self, ctx): + def enterOutput_file_list_paths(self, ctx:PBXProjParser.Output_file_list_pathsContext): pass # Exit a parse tree produced by PBXProjParser#output_file_list_paths. - def exitOutput_file_list_paths(self, ctx): + def exitOutput_file_list_paths(self, ctx:PBXProjParser.Output_file_list_pathsContext): pass # Enter a parse tree produced by PBXProjParser#output_paths. - def enterOutput_paths(self, ctx): + def enterOutput_paths(self, ctx:PBXProjParser.Output_pathsContext): pass # Exit a parse tree produced by PBXProjParser#output_paths. - def exitOutput_paths(self, ctx): + def exitOutput_paths(self, ctx:PBXProjParser.Output_pathsContext): pass # Enter a parse tree produced by PBXProjParser#shell_path. - def enterShell_path(self, ctx): + def enterShell_path(self, ctx:PBXProjParser.Shell_pathContext): pass # Exit a parse tree produced by PBXProjParser#shell_path. - def exitShell_path(self, ctx): + def exitShell_path(self, ctx:PBXProjParser.Shell_pathContext): pass # Enter a parse tree produced by PBXProjParser#shell_script. - def enterShell_script(self, ctx): + def enterShell_script(self, ctx:PBXProjParser.Shell_scriptContext): pass # Exit a parse tree produced by PBXProjParser#shell_script. - def exitShell_script(self, ctx): + def exitShell_script(self, ctx:PBXProjParser.Shell_scriptContext): pass # Enter a parse tree produced by PBXProjParser#show_env_vars_in_log. - def enterShow_env_vars_in_log(self, ctx): + def enterShow_env_vars_in_log(self, ctx:PBXProjParser.Show_env_vars_in_logContext): pass # Exit a parse tree produced by PBXProjParser#show_env_vars_in_log. - def exitShow_env_vars_in_log(self, ctx): + def exitShow_env_vars_in_log(self, ctx:PBXProjParser.Show_env_vars_in_logContext): pass # Enter a parse tree produced by PBXProjParser#target. - def enterTarget(self, ctx): + def enterTarget(self, ctx:PBXProjParser.TargetContext): pass # Exit a parse tree produced by PBXProjParser#target. - def exitTarget(self, ctx): + def exitTarget(self, ctx:PBXProjParser.TargetContext): pass # Enter a parse tree produced by PBXProjParser#target_proxy. - def enterTarget_proxy(self, ctx): + def enterTarget_proxy(self, ctx:PBXProjParser.Target_proxyContext): pass # Exit a parse tree produced by PBXProjParser#target_proxy. - def exitTarget_proxy(self, ctx): + def exitTarget_proxy(self, ctx:PBXProjParser.Target_proxyContext): pass # Enter a parse tree produced by PBXProjParser#file_type. - def enterFile_type(self, ctx): + def enterFile_type(self, ctx:PBXProjParser.File_typeContext): pass # Exit a parse tree produced by PBXProjParser#file_type. - def exitFile_type(self, ctx): + def exitFile_type(self, ctx:PBXProjParser.File_typeContext): pass # Enter a parse tree produced by PBXProjParser#remote_ref. - def enterRemote_ref(self, ctx): + def enterRemote_ref(self, ctx:PBXProjParser.Remote_refContext): pass # Exit a parse tree produced by PBXProjParser#remote_ref. - def exitRemote_ref(self, ctx): + def exitRemote_ref(self, ctx:PBXProjParser.Remote_refContext): pass # Enter a parse tree produced by PBXProjParser#base_configuration_reference. - def enterBase_configuration_reference(self, ctx): + def enterBase_configuration_reference(self, ctx:PBXProjParser.Base_configuration_referenceContext): pass # Exit a parse tree produced by PBXProjParser#base_configuration_reference. - def exitBase_configuration_reference(self, ctx): + def exitBase_configuration_reference(self, ctx:PBXProjParser.Base_configuration_referenceContext): pass # Enter a parse tree produced by PBXProjParser#build_settings. - def enterBuild_settings(self, ctx): + def enterBuild_settings(self, ctx:PBXProjParser.Build_settingsContext): pass # Exit a parse tree produced by PBXProjParser#build_settings. - def exitBuild_settings(self, ctx): + def exitBuild_settings(self, ctx:PBXProjParser.Build_settingsContext): pass # Enter a parse tree produced by PBXProjParser#dst_path. - def enterDst_path(self, ctx): + def enterDst_path(self, ctx:PBXProjParser.Dst_pathContext): pass # Exit a parse tree produced by PBXProjParser#dst_path. - def exitDst_path(self, ctx): + def exitDst_path(self, ctx:PBXProjParser.Dst_pathContext): pass # Enter a parse tree produced by PBXProjParser#dst_subfolder_spec. - def enterDst_subfolder_spec(self, ctx): + def enterDst_subfolder_spec(self, ctx:PBXProjParser.Dst_subfolder_specContext): pass # Exit a parse tree produced by PBXProjParser#dst_subfolder_spec. - def exitDst_subfolder_spec(self, ctx): + def exitDst_subfolder_spec(self, ctx:PBXProjParser.Dst_subfolder_specContext): pass # Enter a parse tree produced by PBXProjParser#project_references_list. - def enterProject_references_list(self, ctx): + def enterProject_references_list(self, ctx:PBXProjParser.Project_references_listContext): pass # Exit a parse tree produced by PBXProjParser#project_references_list. - def exitProject_references_list(self, ctx): + def exitProject_references_list(self, ctx:PBXProjParser.Project_references_listContext): pass # Enter a parse tree produced by PBXProjParser#project_references_list_element. - def enterProject_references_list_element(self, ctx): + def enterProject_references_list_element(self, ctx:PBXProjParser.Project_references_list_elementContext): pass # Exit a parse tree produced by PBXProjParser#project_references_list_element. - def exitProject_references_list_element(self, ctx): + def exitProject_references_list_element(self, ctx:PBXProjParser.Project_references_list_elementContext): pass # Enter a parse tree produced by PBXProjParser#key_value. - def enterKey_value(self, ctx): + def enterKey_value(self, ctx:PBXProjParser.Key_valueContext): pass # Exit a parse tree produced by PBXProjParser#key_value. - def exitKey_value(self, ctx): + def exitKey_value(self, ctx:PBXProjParser.Key_valueContext): pass # Enter a parse tree produced by PBXProjParser#build_configurations. - def enterBuild_configurations(self, ctx): + def enterBuild_configurations(self, ctx:PBXProjParser.Build_configurationsContext): pass # Exit a parse tree produced by PBXProjParser#build_configurations. - def exitBuild_configurations(self, ctx): + def exitBuild_configurations(self, ctx:PBXProjParser.Build_configurationsContext): pass # Enter a parse tree produced by PBXProjParser#default_configuration_is_visible. - def enterDefault_configuration_is_visible(self, ctx): + def enterDefault_configuration_is_visible(self, ctx:PBXProjParser.Default_configuration_is_visibleContext): pass # Exit a parse tree produced by PBXProjParser#default_configuration_is_visible. - def exitDefault_configuration_is_visible(self, ctx): + def exitDefault_configuration_is_visible(self, ctx:PBXProjParser.Default_configuration_is_visibleContext): pass # Enter a parse tree produced by PBXProjParser#default_configuration_name. - def enterDefault_configuration_name(self, ctx): + def enterDefault_configuration_name(self, ctx:PBXProjParser.Default_configuration_nameContext): pass # Exit a parse tree produced by PBXProjParser#default_configuration_name. - def exitDefault_configuration_name(self, ctx): + def exitDefault_configuration_name(self, ctx:PBXProjParser.Default_configuration_nameContext): pass # Enter a parse tree produced by PBXProjParser#settings. - def enterSettings(self, ctx): + def enterSettings(self, ctx:PBXProjParser.SettingsContext): pass # Exit a parse tree produced by PBXProjParser#settings. - def exitSettings(self, ctx): + def exitSettings(self, ctx:PBXProjParser.SettingsContext): pass # Enter a parse tree produced by PBXProjParser#system_capabilities. - def enterSystem_capabilities(self, ctx): + def enterSystem_capabilities(self, ctx:PBXProjParser.System_capabilitiesContext): pass # Exit a parse tree produced by PBXProjParser#system_capabilities. - def exitSystem_capabilities(self, ctx): + def exitSystem_capabilities(self, ctx:PBXProjParser.System_capabilitiesContext): pass # Enter a parse tree produced by PBXProjParser#current_version. - def enterCurrent_version(self, ctx): + def enterCurrent_version(self, ctx:PBXProjParser.Current_versionContext): pass # Exit a parse tree produced by PBXProjParser#current_version. - def exitCurrent_version(self, ctx): + def exitCurrent_version(self, ctx:PBXProjParser.Current_versionContext): pass # Enter a parse tree produced by PBXProjParser#version_group_type. - def enterVersion_group_type(self, ctx): + def enterVersion_group_type(self, ctx:PBXProjParser.Version_group_typeContext): pass # Exit a parse tree produced by PBXProjParser#version_group_type. - def exitVersion_group_type(self, ctx): + def exitVersion_group_type(self, ctx:PBXProjParser.Version_group_typeContext): pass # Enter a parse tree produced by PBXProjParser#class_prefix. - def enterClass_prefix(self, ctx): + def enterClass_prefix(self, ctx:PBXProjParser.Class_prefixContext): pass # Exit a parse tree produced by PBXProjParser#class_prefix. - def exitClass_prefix(self, ctx): + def exitClass_prefix(self, ctx:PBXProjParser.Class_prefixContext): pass # Enter a parse tree produced by PBXProjParser#any_string. - def enterAny_string(self, ctx): + def enterAny_string(self, ctx:PBXProjParser.Any_stringContext): pass # Exit a parse tree produced by PBXProjParser#any_string. - def exitAny_string(self, ctx): + def exitAny_string(self, ctx:PBXProjParser.Any_stringContext): pass + +del PBXProjParser \ No newline at end of file diff --git a/kin/grammar/PBXProjParser.py b/kin/grammar/PBXProjParser.py index e10cc21..06d759a 100644 --- a/kin/grammar/PBXProjParser.py +++ b/kin/grammar/PBXProjParser.py @@ -1,728 +1,723 @@ -# Generated from PBXProj.g4 by ANTLR 4.6 +# Generated from kin/grammar/PBXProj.g4 by ANTLR 4.9.2 # encoding: utf-8 -from __future__ import print_function from antlr4 import * from io import StringIO +import sys +if sys.version_info[1] > 5: + from typing import TextIO +else: + from typing.io import TextIO + def serializedATN(): with StringIO() as buf: - buf.write(u"\3\u0430\ud6d1\u8206\uad2d\u4417\uaef1\u8d80\uaadd\3") - buf.write(u"\u0086\u05fb\4\2\t\2\4\3\t\3\4\4\t\4\4\5\t\5\4\6\t\6") - buf.write(u"\4\7\t\7\4\b\t\b\4\t\t\t\4\n\t\n\4\13\t\13\4\f\t\f\4") - buf.write(u"\r\t\r\4\16\t\16\4\17\t\17\4\20\t\20\4\21\t\21\4\22\t") - buf.write(u"\22\4\23\t\23\4\24\t\24\4\25\t\25\4\26\t\26\4\27\t\27") - buf.write(u"\4\30\t\30\4\31\t\31\4\32\t\32\4\33\t\33\4\34\t\34\4") - buf.write(u"\35\t\35\4\36\t\36\4\37\t\37\4 \t \4!\t!\4\"\t\"\4#\t") - buf.write(u"#\4$\t$\4%\t%\4&\t&\4\'\t\'\4(\t(\4)\t)\4*\t*\4+\t+\4") - buf.write(u",\t,\4-\t-\4.\t.\4/\t/\4\60\t\60\4\61\t\61\4\62\t\62") - buf.write(u"\4\63\t\63\4\64\t\64\4\65\t\65\4\66\t\66\4\67\t\67\4") - buf.write(u"8\t8\49\t9\4:\t:\4;\t;\4<\t<\4=\t=\4>\t>\4?\t?\4@\t@") - buf.write(u"\4A\tA\4B\tB\4C\tC\4D\tD\4E\tE\4F\tF\4G\tG\4H\tH\4I\t") - buf.write(u"I\4J\tJ\4K\tK\4L\tL\4M\tM\4N\tN\4O\tO\4P\tP\4Q\tQ\4R") - buf.write(u"\tR\4S\tS\4T\tT\4U\tU\4V\tV\4W\tW\4X\tX\4Y\tY\4Z\tZ\4") - buf.write(u"[\t[\4\\\t\\\4]\t]\4^\t^\4_\t_\4`\t`\4a\ta\4b\tb\4c\t") - buf.write(u"c\4d\td\4e\te\4f\tf\4g\tg\4h\th\4i\ti\4j\tj\4k\tk\4l") - buf.write(u"\tl\4m\tm\4n\tn\4o\to\4p\tp\4q\tq\4r\tr\4s\ts\4t\tt\4") - buf.write(u"u\tu\4v\tv\4w\tw\4x\tx\4y\ty\4z\tz\4{\t{\4|\t|\4}\t}") - buf.write(u"\4~\t~\4\177\t\177\4\u0080\t\u0080\4\u0081\t\u0081\4") - buf.write(u"\u0082\t\u0082\4\u0083\t\u0083\4\u0084\t\u0084\4\u0085") - buf.write(u"\t\u0085\4\u0086\t\u0086\4\u0087\t\u0087\4\u0088\t\u0088") - buf.write(u"\4\u0089\t\u0089\4\u008a\t\u008a\4\u008b\t\u008b\4\u008c") - buf.write(u"\t\u008c\4\u008d\t\u008d\4\u008e\t\u008e\4\u008f\t\u008f") - buf.write(u"\4\u0090\t\u0090\4\u0091\t\u0091\4\u0092\t\u0092\4\u0093") - buf.write(u"\t\u0093\4\u0094\t\u0094\4\u0095\t\u0095\4\u0096\t\u0096") - buf.write(u"\4\u0097\t\u0097\4\u0098\t\u0098\4\u0099\t\u0099\4\u009a") - buf.write(u"\t\u009a\4\u009b\t\u009b\4\u009c\t\u009c\4\u009d\t\u009d") - buf.write(u"\4\u009e\t\u009e\4\u009f\t\u009f\4\u00a0\t\u00a0\3\2") - buf.write(u"\3\2\3\3\3\3\3\3\3\3\3\3\3\3\3\3\3\3\3\4\3\4\3\4\3\4") - buf.write(u"\3\4\3\5\3\5\3\5\3\5\3\5\3\5\3\6\3\6\3\6\3\6\3\6\3\7") - buf.write(u"\3\7\3\7\3\7\5\7\u015f\n\7\3\7\3\7\5\7\u0163\n\7\3\7") - buf.write(u"\5\7\u0166\n\7\3\7\3\7\3\7\3\7\5\7\u016c\n\7\3\7\5\7") - buf.write(u"\u016f\n\7\3\7\3\7\5\7\u0173\n\7\3\7\5\7\u0176\n\7\3") - buf.write(u"\7\5\7\u0179\n\7\3\7\3\7\5\7\u017d\n\7\3\7\5\7\u0180") - buf.write(u"\n\7\3\7\3\7\3\7\5\7\u0185\n\7\3\7\5\7\u0188\n\7\3\7") - buf.write(u"\5\7\u018b\n\7\3\7\3\7\3\7\3\b\3\b\3\b\3\b\3\b\3\t\6") - buf.write(u"\t\u0196\n\t\r\t\16\t\u0197\3\n\6\n\u019b\n\n\r\n\16") - buf.write(u"\n\u019c\3\13\6\13\u01a0\n\13\r\13\16\13\u01a1\3\f\6") - buf.write(u"\f\u01a5\n\f\r\f\16\f\u01a6\3\r\6\r\u01aa\n\r\r\r\16") - buf.write(u"\r\u01ab\3\16\6\16\u01af\n\16\r\16\16\16\u01b0\3\17\6") - buf.write(u"\17\u01b4\n\17\r\17\16\17\u01b5\3\20\6\20\u01b9\n\20") - buf.write(u"\r\20\16\20\u01ba\3\21\6\21\u01be\n\21\r\21\16\21\u01bf") - buf.write(u"\3\22\6\22\u01c3\n\22\r\22\16\22\u01c4\3\23\6\23\u01c8") - buf.write(u"\n\23\r\23\16\23\u01c9\3\24\6\24\u01cd\n\24\r\24\16\24") - buf.write(u"\u01ce\3\25\6\25\u01d2\n\25\r\25\16\25\u01d3\3\26\6\26") - buf.write(u"\u01d7\n\26\r\26\16\26\u01d8\3\27\6\27\u01dc\n\27\r\27") - buf.write(u"\16\27\u01dd\3\30\6\30\u01e1\n\30\r\30\16\30\u01e2\3") - buf.write(u"\31\6\31\u01e6\n\31\r\31\16\31\u01e7\3\32\6\32\u01eb") - buf.write(u"\n\32\r\32\16\32\u01ec\3\33\6\33\u01f0\n\33\r\33\16\33") - buf.write(u"\u01f1\3\34\6\34\u01f5\n\34\r\34\16\34\u01f6\3\35\6\35") - buf.write(u"\u01fa\n\35\r\35\16\35\u01fb\3\36\3\36\3\36\3\36\3\36") - buf.write(u"\3\36\3\36\3\36\3\36\3\36\3\36\3\36\3\37\3\37\3\37\3") - buf.write(u"\37\3\37\3\37\5\37\u0210\n\37\3\37\3\37\3\37\3 \3 \3") - buf.write(u" \3 \3 \3 \3 \3 \3 \3 \3 \3!\3!\3!\3!\3!\3!\3!\3!\3!") - buf.write(u"\5!\u0229\n!\3!\3!\3!\3!\3\"\3\"\3\"\3\"\3\"\5\"\u0234") - buf.write(u"\n\"\3\"\5\"\u0237\n\"\3\"\5\"\u023a\n\"\3\"\5\"\u023d") - buf.write(u"\n\"\3\"\5\"\u0240\n\"\3\"\5\"\u0243\n\"\3\"\5\"\u0246") - buf.write(u"\n\"\3\"\5\"\u0249\n\"\3\"\5\"\u024c\n\"\3\"\5\"\u024f") - buf.write(u"\n\"\3\"\5\"\u0252\n\"\3\"\3\"\3\"\3#\3#\3#\3#\3#\3#") - buf.write(u"\3#\3#\3#\3#\3$\3$\3$\3$\3$\3$\5$\u0267\n$\3$\5$\u026a") - buf.write(u"\n$\3$\5$\u026d\n$\3$\3$\5$\u0271\n$\3$\5$\u0274\n$\3") - buf.write(u"$\3$\3$\3%\3%\3%\3%\3%\3%\3%\3%\3%\3%\3&\3&\3&\3&\3&") - buf.write(u"\3&\3&\3&\3&\3&\5&\u028d\n&\3&\5&\u0290\n&\3&\3&\3&\3") - buf.write(u"&\3&\3&\3\'\3\'\3\'\3\'\3\'\3\'\3\'\3\'\3\'\3\'\3\'\3") - buf.write(u"\'\5\'\u02a4\n\'\3\'\5\'\u02a7\n\'\3\'\3\'\5\'\u02ab") - buf.write(u"\n\'\3\'\3\'\3\'\3\'\3\'\3(\3(\3(\3(\3(\3(\3(\3(\3(\3") - buf.write(u"(\3(\3)\3)\3)\3)\3)\3)\3)\3)\3)\3)\3*\3*\3*\3*\3*\3*") - buf.write(u"\3*\5*\u02ce\n*\3*\3*\5*\u02d2\n*\3*\5*\u02d5\n*\3*\3") - buf.write(u"*\3*\3*\3*\5*\u02dc\n*\3*\3*\3*\3+\3+\3+\3+\3+\3+\3+") - buf.write(u"\3+\3+\3+\3,\3,\3,\3,\3,\5,\u02f0\n,\3,\5,\u02f3\n,\3") - buf.write(u",\3,\3,\3,\3-\3-\3-\3-\3-\3-\3-\5-\u0300\n-\3-\3-\3-") - buf.write(u"\3-\3.\3.\3.\3.\3.\5.\u030b\n.\3.\3.\3.\3.\3.\3/\3/\3") - buf.write(u"/\3/\3/\3/\3/\5/\u0319\n/\3/\3/\3/\3\60\3\60\3\60\3\60") - buf.write(u"\3\60\3\60\3\60\3\60\3\60\3\61\3\61\3\61\3\61\3\61\3") - buf.write(u"\61\3\61\3\61\3\61\3\62\3\62\3\62\3\62\3\62\3\62\3\62") - buf.write(u"\3\62\3\62\3\62\3\62\3\62\3\63\3\63\3\63\3\63\3\63\3") - buf.write(u"\64\3\64\3\64\3\64\3\64\3\65\3\65\3\65\3\65\3\65\3\66") - buf.write(u"\3\66\3\66\3\66\3\66\3\67\3\67\3\67\3\67\3\67\38\38\3") - buf.write(u"8\38\38\39\39\39\39\39\3:\3:\3:\3:\3:\3;\3;\3;\3;\3;") - buf.write(u"\3<\3<\3<\3<\3<\3=\3=\3=\3=\3=\3>\3>\3>\3>\3>\3?\3?\3") - buf.write(u"?\3?\3?\3@\3@\3@\3@\3@\3A\3A\3A\3A\3A\3B\3B\3B\3B\3B") - buf.write(u"\3C\3C\3C\3C\3C\3D\3D\3D\3D\3D\3E\3E\3E\3E\3E\3F\3F\3") - buf.write(u"F\3F\3F\3G\3G\3G\3G\3G\3H\3H\3H\3H\3H\3H\3H\3H\5H\u03ad") - buf.write(u"\nH\3I\3I\3I\3I\3I\3J\3J\3J\3J\3J\3K\3K\3K\3K\3K\3L\3") - buf.write(u"L\3L\3L\3L\3M\3M\3M\3M\3M\3N\3N\3N\3N\3N\3O\3O\3O\3O") - buf.write(u"\3O\3P\3P\3P\3P\3P\3Q\3Q\3Q\3Q\3Q\3R\3R\3R\3R\3R\3S\3") - buf.write(u"S\3S\3S\3S\3T\3T\3T\3T\3T\3U\3U\3U\3U\3U\3V\3V\3V\3V") - buf.write(u"\3V\3W\3W\3W\3W\7W\u03f9\nW\fW\16W\u03fc\13W\3W\3W\3") - buf.write(u"W\3X\3X\3X\3X\3X\3Y\3Y\3Y\3Y\3Y\3Z\3Z\3Z\3Z\3Z\3[\3[") - buf.write(u"\3[\3[\3[\3\\\3\\\3\\\3\\\3\\\3]\3]\3]\3]\3]\3^\3^\3") - buf.write(u"^\3^\3^\3_\3_\3_\3_\3_\3`\3`\3`\7`\u042c\n`\f`\16`\u042f") - buf.write(u"\13`\3`\3`\3a\3a\3a\3a\7a\u0437\na\fa\16a\u043a\13a\3") - buf.write(u"a\3a\3b\3b\3b\7b\u0441\nb\fb\16b\u0444\13b\3b\3b\3c\3") - buf.write(u"c\3c\3c\3c\3d\3d\3d\3d\3d\3e\3e\3e\3e\3e\3f\3f\3f\3f") - buf.write(u"\3f\3g\3g\3g\3g\3g\3h\3h\3h\3h\3h\3i\3i\3i\3i\3i\3j\3") - buf.write(u"j\3j\3j\3j\3k\3k\3k\3k\3k\3l\3l\3l\3l\3l\3m\3m\3m\3m") - buf.write(u"\5m\u047e\nm\3m\5m\u0481\nm\3m\5m\u0484\nm\3m\5m\u0487") - buf.write(u"\nm\3m\5m\u048a\nm\3m\5m\u048d\nm\3m\5m\u0490\nm\3m\5") - buf.write(u"m\u0493\nm\3m\5m\u0496\nm\3m\3m\3m\3n\3n\3n\3n\3n\3o") - buf.write(u"\3o\3o\3o\3o\3p\3p\3p\3p\3p\3q\3q\3q\3q\3q\3r\3r\3r\3") - buf.write(u"r\3r\3s\3s\3s\3s\3s\3t\3t\3t\3t\3t\3u\3u\3u\3u\7u\u04c2") - buf.write(u"\nu\fu\16u\u04c5\13u\3u\3u\3u\3v\3v\3v\3v\5v\u04ce\n") - buf.write(u"v\3v\5v\u04d1\nv\3v\5v\u04d4\nv\3v\5v\u04d7\nv\3v\5v") - buf.write(u"\u04da\nv\3v\5v\u04dd\nv\3v\5v\u04e0\nv\3v\3v\3v\3w\3") - buf.write(u"w\3w\3w\3w\3x\3x\3x\3x\3x\3y\3y\3y\3y\3y\3z\3z\3z\3z") - buf.write(u"\3z\3{\3{\3{\3{\3{\3|\3|\3|\3|\3|\3}\3}\3}\3}\3}\3~\3") - buf.write(u"~\3~\3~\3~\3\177\3\177\3\177\3\177\3\177\3\u0080\3\u0080") - buf.write(u"\3\u0080\3\u0080\3\u0080\3\u0081\3\u0081\3\u0081\3\u0081") - buf.write(u"\3\u0081\3\u0082\3\u0082\3\u0082\3\u0082\3\u0082\3\u0083") - buf.write(u"\3\u0083\3\u0083\3\u0083\3\u0083\3\u0083\3\u0083\3\u0083") - buf.write(u"\3\u0083\3\u0083\3\u0083\3\u0083\5\u0083\u052d\n\u0083") - buf.write(u"\3\u0084\3\u0084\3\u0084\3\u0084\3\u0084\3\u0085\3\u0085") - buf.write(u"\3\u0085\3\u0085\3\u0085\3\u0086\3\u0086\3\u0086\3\u0086") - buf.write(u"\3\u0086\3\u0087\3\u0087\3\u0087\3\u0087\3\u0087\3\u0088") - buf.write(u"\3\u0088\3\u0088\3\u0088\3\u0088\3\u0089\3\u0089\3\u0089") - buf.write(u"\3\u0089\3\u0089\3\u008a\3\u008a\3\u008a\3\u008a\3\u008a") - buf.write(u"\3\u008b\3\u008b\3\u008b\3\u008b\3\u008b\3\u008c\3\u008c") - buf.write(u"\3\u008c\3\u008c\3\u008c\3\u008d\3\u008d\3\u008d\3\u008d") - buf.write(u"\3\u008d\3\u008e\3\u008e\3\u008e\3\u008e\3\u008e\3\u008f") - buf.write(u"\3\u008f\3\u008f\3\u008f\3\u008f\3\u0090\3\u0090\3\u0090") - buf.write(u"\3\u0090\3\u0090\3\u0091\3\u0091\3\u0091\3\u0091\3\u0091") - buf.write(u"\3\u0092\3\u0092\3\u0092\3\u0092\7\u0092\u0579\n\u0092") - buf.write(u"\f\u0092\16\u0092\u057c\13\u0092\3\u0092\3\u0092\3\u0092") - buf.write(u"\3\u0093\3\u0093\3\u0093\3\u0093\3\u0093\3\u0094\3\u0094") - buf.write(u"\3\u0094\3\u0094\3\u0094\3\u0095\7\u0095\u058c\n\u0095") - buf.write(u"\f\u0095\16\u0095\u058f\13\u0095\3\u0096\3\u0096\3\u0096") - buf.write(u"\3\u0096\3\u0096\3\u0096\3\u0096\3\u0096\3\u0096\3\u0096") - buf.write(u"\3\u0096\3\u0096\3\u0097\3\u0097\3\u0097\3\u0097\3\u0097") - buf.write(u"\3\u0097\3\u0097\3\u0097\3\u0097\3\u0097\3\u0097\3\u0097") - buf.write(u"\3\u0097\3\u0097\3\u0097\3\u0097\3\u0097\3\u0097\3\u0097") - buf.write(u"\3\u0097\3\u0097\3\u0097\3\u0097\3\u0097\3\u0097\3\u0097") - buf.write(u"\3\u0097\3\u0097\7\u0097\u05b9\n\u0097\f\u0097\16\u0097") - buf.write(u"\u05bc\13\u0097\3\u0097\3\u0097\3\u0097\5\u0097\u05c1") - buf.write(u"\n\u0097\3\u0098\3\u0098\3\u0098\3\u0098\3\u0098\3\u0099") - buf.write(u"\3\u0099\3\u0099\3\u0099\3\u0099\3\u009a\3\u009a\3\u009a") - buf.write(u"\3\u009a\3\u009a\3\u009b\3\u009b\3\u009b\3\u009b\7\u009b") - buf.write(u"\u05d6\n\u009b\f\u009b\16\u009b\u05d9\13\u009b\3\u009b") - buf.write(u"\3\u009b\3\u009b\3\u009c\3\u009c\3\u009c\3\u009c\7\u009c") - buf.write(u"\u05e2\n\u009c\f\u009c\16\u009c\u05e5\13\u009c\3\u009c") - buf.write(u"\3\u009c\3\u009c\3\u009d\3\u009d\3\u009d\3\u009d\3\u009d") - buf.write(u"\3\u009e\3\u009e\3\u009e\3\u009e\3\u009e\3\u009f\3\u009f") - buf.write(u"\3\u009f\3\u009f\3\u009f\3\u00a0\3\u00a0\3\u00a0\2\2") - buf.write(u"\u00a1\2\4\6\b\n\f\16\20\22\24\26\30\32\34\36 \"$&(*") - buf.write(u",.\60\62\64\668:<>@BDFHJLNPRTVXZ\\^`bdfhjlnprtvxz|~\u0080") - buf.write(u"\u0082\u0084\u0086\u0088\u008a\u008c\u008e\u0090\u0092") - buf.write(u"\u0094\u0096\u0098\u009a\u009c\u009e\u00a0\u00a2\u00a4") - buf.write(u"\u00a6\u00a8\u00aa\u00ac\u00ae\u00b0\u00b2\u00b4\u00b6") - buf.write(u"\u00b8\u00ba\u00bc\u00be\u00c0\u00c2\u00c4\u00c6\u00c8") - buf.write(u"\u00ca\u00cc\u00ce\u00d0\u00d2\u00d4\u00d6\u00d8\u00da") - buf.write(u"\u00dc\u00de\u00e0\u00e2\u00e4\u00e6\u00e8\u00ea\u00ec") - buf.write(u"\u00ee\u00f0\u00f2\u00f4\u00f6\u00f8\u00fa\u00fc\u00fe") - buf.write(u"\u0100\u0102\u0104\u0106\u0108\u010a\u010c\u010e\u0110") - buf.write(u"\u0112\u0114\u0116\u0118\u011a\u011c\u011e\u0120\u0122") - buf.write(u"\u0124\u0126\u0128\u012a\u012c\u012e\u0130\u0132\u0134") - buf.write(u"\u0136\u0138\u013a\u013c\u013e\2\4\3\2\u0081\u0082\4") - buf.write(u"\2yy\u0081\u0083\u05bd\2\u0140\3\2\2\2\4\u0142\3\2\2") - buf.write(u"\2\6\u014a\3\2\2\2\b\u014f\3\2\2\2\n\u0155\3\2\2\2\f") - buf.write(u"\u015a\3\2\2\2\16\u018f\3\2\2\2\20\u0195\3\2\2\2\22\u019a") - buf.write(u"\3\2\2\2\24\u019f\3\2\2\2\26\u01a4\3\2\2\2\30\u01a9\3") - buf.write(u"\2\2\2\32\u01ae\3\2\2\2\34\u01b3\3\2\2\2\36\u01b8\3\2") - buf.write(u"\2\2 \u01bd\3\2\2\2\"\u01c2\3\2\2\2$\u01c7\3\2\2\2&\u01cc") - buf.write(u"\3\2\2\2(\u01d1\3\2\2\2*\u01d6\3\2\2\2,\u01db\3\2\2\2") - buf.write(u".\u01e0\3\2\2\2\60\u01e5\3\2\2\2\62\u01ea\3\2\2\2\64") - buf.write(u"\u01ef\3\2\2\2\66\u01f4\3\2\2\28\u01f9\3\2\2\2:\u01fd") - buf.write(u"\3\2\2\2<\u0209\3\2\2\2>\u0214\3\2\2\2@\u021f\3\2\2\2") - buf.write(u"B\u022e\3\2\2\2D\u0256\3\2\2\2F\u0260\3\2\2\2H\u0278") - buf.write(u"\3\2\2\2J\u0282\3\2\2\2L\u0297\3\2\2\2N\u02b1\3\2\2\2") - buf.write(u"P\u02bc\3\2\2\2R\u02c6\3\2\2\2T\u02e0\3\2\2\2V\u02ea") - buf.write(u"\3\2\2\2X\u02f8\3\2\2\2Z\u0305\3\2\2\2\\\u0311\3\2\2") - buf.write(u"\2^\u031d\3\2\2\2`\u0326\3\2\2\2b\u032f\3\2\2\2d\u033b") - buf.write(u"\3\2\2\2f\u0340\3\2\2\2h\u0345\3\2\2\2j\u034a\3\2\2\2") - buf.write(u"l\u034f\3\2\2\2n\u0354\3\2\2\2p\u0359\3\2\2\2r\u035e") - buf.write(u"\3\2\2\2t\u0363\3\2\2\2v\u0368\3\2\2\2x\u036d\3\2\2\2") - buf.write(u"z\u0372\3\2\2\2|\u0377\3\2\2\2~\u037c\3\2\2\2\u0080\u0381") - buf.write(u"\3\2\2\2\u0082\u0386\3\2\2\2\u0084\u038b\3\2\2\2\u0086") - buf.write(u"\u0390\3\2\2\2\u0088\u0395\3\2\2\2\u008a\u039a\3\2\2") - buf.write(u"\2\u008c\u039f\3\2\2\2\u008e\u03ac\3\2\2\2\u0090\u03ae") - buf.write(u"\3\2\2\2\u0092\u03b3\3\2\2\2\u0094\u03b8\3\2\2\2\u0096") - buf.write(u"\u03bd\3\2\2\2\u0098\u03c2\3\2\2\2\u009a\u03c7\3\2\2") - buf.write(u"\2\u009c\u03cc\3\2\2\2\u009e\u03d1\3\2\2\2\u00a0\u03d6") - buf.write(u"\3\2\2\2\u00a2\u03db\3\2\2\2\u00a4\u03e0\3\2\2\2\u00a6") - buf.write(u"\u03e5\3\2\2\2\u00a8\u03ea\3\2\2\2\u00aa\u03ef\3\2\2") - buf.write(u"\2\u00ac\u03f4\3\2\2\2\u00ae\u0400\3\2\2\2\u00b0\u0405") - buf.write(u"\3\2\2\2\u00b2\u040a\3\2\2\2\u00b4\u040f\3\2\2\2\u00b6") - buf.write(u"\u0414\3\2\2\2\u00b8\u0419\3\2\2\2\u00ba\u041e\3\2\2") - buf.write(u"\2\u00bc\u0423\3\2\2\2\u00be\u0428\3\2\2\2\u00c0\u0432") - buf.write(u"\3\2\2\2\u00c2\u043d\3\2\2\2\u00c4\u0447\3\2\2\2\u00c6") - buf.write(u"\u044c\3\2\2\2\u00c8\u0451\3\2\2\2\u00ca\u0456\3\2\2") - buf.write(u"\2\u00cc\u045b\3\2\2\2\u00ce\u0460\3\2\2\2\u00d0\u0465") - buf.write(u"\3\2\2\2\u00d2\u046a\3\2\2\2\u00d4\u046f\3\2\2\2\u00d6") - buf.write(u"\u0474\3\2\2\2\u00d8\u0479\3\2\2\2\u00da\u049a\3\2\2") - buf.write(u"\2\u00dc\u049f\3\2\2\2\u00de\u04a4\3\2\2\2\u00e0\u04a9") - buf.write(u"\3\2\2\2\u00e2\u04ae\3\2\2\2\u00e4\u04b3\3\2\2\2\u00e6") - buf.write(u"\u04b8\3\2\2\2\u00e8\u04bd\3\2\2\2\u00ea\u04c9\3\2\2") - buf.write(u"\2\u00ec\u04e4\3\2\2\2\u00ee\u04e9\3\2\2\2\u00f0\u04ee") - buf.write(u"\3\2\2\2\u00f2\u04f3\3\2\2\2\u00f4\u04f8\3\2\2\2\u00f6") - buf.write(u"\u04fd\3\2\2\2\u00f8\u0502\3\2\2\2\u00fa\u0507\3\2\2") - buf.write(u"\2\u00fc\u050c\3\2\2\2\u00fe\u0511\3\2\2\2\u0100\u0516") - buf.write(u"\3\2\2\2\u0102\u051b\3\2\2\2\u0104\u052c\3\2\2\2\u0106") - buf.write(u"\u052e\3\2\2\2\u0108\u0533\3\2\2\2\u010a\u0538\3\2\2") - buf.write(u"\2\u010c\u053d\3\2\2\2\u010e\u0542\3\2\2\2\u0110\u0547") - buf.write(u"\3\2\2\2\u0112\u054c\3\2\2\2\u0114\u0551\3\2\2\2\u0116") - buf.write(u"\u0556\3\2\2\2\u0118\u055b\3\2\2\2\u011a\u0560\3\2\2") - buf.write(u"\2\u011c\u0565\3\2\2\2\u011e\u056a\3\2\2\2\u0120\u056f") - buf.write(u"\3\2\2\2\u0122\u0574\3\2\2\2\u0124\u0580\3\2\2\2\u0126") - buf.write(u"\u0585\3\2\2\2\u0128\u058d\3\2\2\2\u012a\u0590\3\2\2") - buf.write(u"\2\u012c\u05c0\3\2\2\2\u012e\u05c2\3\2\2\2\u0130\u05c7") - buf.write(u"\3\2\2\2\u0132\u05cc\3\2\2\2\u0134\u05d1\3\2\2\2\u0136") - buf.write(u"\u05dd\3\2\2\2\u0138\u05e9\3\2\2\2\u013a\u05ee\3\2\2") - buf.write(u"\2\u013c\u05f3\3\2\2\2\u013e\u05f8\3\2\2\2\u0140\u0141") - buf.write(u"\5\4\3\2\u0141\3\3\2\2\2\u0142\u0143\7\3\2\2\u0143\u0144") - buf.write(u"\5\6\4\2\u0144\u0145\5\b\5\2\u0145\u0146\5\n\6\2\u0146") - buf.write(u"\u0147\5\f\7\2\u0147\u0148\5\16\b\2\u0148\u0149\7\4\2") - buf.write(u"\2\u0149\5\3\2\2\2\u014a\u014b\7\5\2\2\u014b\u014c\7") - buf.write(u"\6\2\2\u014c\u014d\7y\2\2\u014d\u014e\7\7\2\2\u014e\7") - buf.write(u"\3\2\2\2\u014f\u0150\7u\2\2\u0150\u0151\7\6\2\2\u0151") - buf.write(u"\u0152\7\3\2\2\u0152\u0153\7\4\2\2\u0153\u0154\7\7\2") - buf.write(u"\2\u0154\t\3\2\2\2\u0155\u0156\7\b\2\2\u0156\u0157\7") - buf.write(u"\6\2\2\u0157\u0158\7y\2\2\u0158\u0159\7\7\2\2\u0159\13") - buf.write(u"\3\2\2\2\u015a\u015b\7w\2\2\u015b\u015c\7\6\2\2\u015c") - buf.write(u"\u015e\7\3\2\2\u015d\u015f\5\20\t\2\u015e\u015d\3\2\2") - buf.write(u"\2\u015e\u015f\3\2\2\2\u015f\u0160\3\2\2\2\u0160\u0162") - buf.write(u"\5\22\n\2\u0161\u0163\5\24\13\2\u0162\u0161\3\2\2\2\u0162") - buf.write(u"\u0163\3\2\2\2\u0163\u0165\3\2\2\2\u0164\u0166\5\26\f") - buf.write(u"\2\u0165\u0164\3\2\2\2\u0165\u0166\3\2\2\2\u0166\u0167") - buf.write(u"\3\2\2\2\u0167\u0168\5\30\r\2\u0168\u0169\5\32\16\2\u0169") - buf.write(u"\u016b\5\34\17\2\u016a\u016c\5\36\20\2\u016b\u016a\3") - buf.write(u"\2\2\2\u016b\u016c\3\2\2\2\u016c\u016e\3\2\2\2\u016d") - buf.write(u"\u016f\5 \21\2\u016e\u016d\3\2\2\2\u016e\u016f\3\2\2") - buf.write(u"\2\u016f\u0170\3\2\2\2\u0170\u0172\5\"\22\2\u0171\u0173") - buf.write(u"\5$\23\2\u0172\u0171\3\2\2\2\u0172\u0173\3\2\2\2\u0173") - buf.write(u"\u0175\3\2\2\2\u0174\u0176\5&\24\2\u0175\u0174\3\2\2") - buf.write(u"\2\u0175\u0176\3\2\2\2\u0176\u0178\3\2\2\2\u0177\u0179") - buf.write(u"\5(\25\2\u0178\u0177\3\2\2\2\u0178\u0179\3\2\2\2\u0179") - buf.write(u"\u017a\3\2\2\2\u017a\u017c\5*\26\2\u017b\u017d\5,\27") - buf.write(u"\2\u017c\u017b\3\2\2\2\u017c\u017d\3\2\2\2\u017d\u017f") - buf.write(u"\3\2\2\2\u017e\u0180\5.\30\2\u017f\u017e\3\2\2\2\u017f") - buf.write(u"\u0180\3\2\2\2\u0180\u0181\3\2\2\2\u0181\u0182\5\60\31") - buf.write(u"\2\u0182\u0184\5\62\32\2\u0183\u0185\5\64\33\2\u0184") - buf.write(u"\u0183\3\2\2\2\u0184\u0185\3\2\2\2\u0185\u0187\3\2\2") - buf.write(u"\2\u0186\u0188\5\66\34\2\u0187\u0186\3\2\2\2\u0187\u0188") - buf.write(u"\3\2\2\2\u0188\u018a\3\2\2\2\u0189\u018b\58\35\2\u018a") - buf.write(u"\u0189\3\2\2\2\u018a\u018b\3\2\2\2\u018b\u018c\3\2\2") - buf.write(u"\2\u018c\u018d\7\4\2\2\u018d\u018e\7\7\2\2\u018e\r\3") - buf.write(u"\2\2\2\u018f\u0190\7x\2\2\u0190\u0191\7\6\2\2\u0191\u0192") - buf.write(u"\7\u0080\2\2\u0192\u0193\7\7\2\2\u0193\17\3\2\2\2\u0194") - buf.write(u"\u0196\5:\36\2\u0195\u0194\3\2\2\2\u0196\u0197\3\2\2") - buf.write(u"\2\u0197\u0195\3\2\2\2\u0197\u0198\3\2\2\2\u0198\21\3") - buf.write(u"\2\2\2\u0199\u019b\5<\37\2\u019a\u0199\3\2\2\2\u019b") - buf.write(u"\u019c\3\2\2\2\u019c\u019a\3\2\2\2\u019c\u019d\3\2\2") - buf.write(u"\2\u019d\23\3\2\2\2\u019e\u01a0\5> \2\u019f\u019e\3\2") - buf.write(u"\2\2\u01a0\u01a1\3\2\2\2\u01a1\u019f\3\2\2\2\u01a1\u01a2") - buf.write(u"\3\2\2\2\u01a2\25\3\2\2\2\u01a3\u01a5\5@!\2\u01a4\u01a3") - buf.write(u"\3\2\2\2\u01a5\u01a6\3\2\2\2\u01a6\u01a4\3\2\2\2\u01a6") - buf.write(u"\u01a7\3\2\2\2\u01a7\27\3\2\2\2\u01a8\u01aa\5B\"\2\u01a9") - buf.write(u"\u01a8\3\2\2\2\u01aa\u01ab\3\2\2\2\u01ab\u01a9\3\2\2") - buf.write(u"\2\u01ab\u01ac\3\2\2\2\u01ac\31\3\2\2\2\u01ad\u01af\5") - buf.write(u"D#\2\u01ae\u01ad\3\2\2\2\u01af\u01b0\3\2\2\2\u01b0\u01ae") - buf.write(u"\3\2\2\2\u01b0\u01b1\3\2\2\2\u01b1\33\3\2\2\2\u01b2\u01b4") - buf.write(u"\5F$\2\u01b3\u01b2\3\2\2\2\u01b4\u01b5\3\2\2\2\u01b5") - buf.write(u"\u01b3\3\2\2\2\u01b5\u01b6\3\2\2\2\u01b6\35\3\2\2\2\u01b7") - buf.write(u"\u01b9\5H%\2\u01b8\u01b7\3\2\2\2\u01b9\u01ba\3\2\2\2") - buf.write(u"\u01ba\u01b8\3\2\2\2\u01ba\u01bb\3\2\2\2\u01bb\37\3\2") - buf.write(u"\2\2\u01bc\u01be\5J&\2\u01bd\u01bc\3\2\2\2\u01be\u01bf") - buf.write(u"\3\2\2\2\u01bf\u01bd\3\2\2\2\u01bf\u01c0\3\2\2\2\u01c0") - buf.write(u"!\3\2\2\2\u01c1\u01c3\5L\'\2\u01c2\u01c1\3\2\2\2\u01c3") - buf.write(u"\u01c4\3\2\2\2\u01c4\u01c2\3\2\2\2\u01c4\u01c5\3\2\2") - buf.write(u"\2\u01c5#\3\2\2\2\u01c6\u01c8\5N(\2\u01c7\u01c6\3\2\2") - buf.write(u"\2\u01c8\u01c9\3\2\2\2\u01c9\u01c7\3\2\2\2\u01c9\u01ca") - buf.write(u"\3\2\2\2\u01ca%\3\2\2\2\u01cb\u01cd\5P)\2\u01cc\u01cb") - buf.write(u"\3\2\2\2\u01cd\u01ce\3\2\2\2\u01ce\u01cc\3\2\2\2\u01ce") - buf.write(u"\u01cf\3\2\2\2\u01cf\'\3\2\2\2\u01d0\u01d2\5R*\2\u01d1") - buf.write(u"\u01d0\3\2\2\2\u01d2\u01d3\3\2\2\2\u01d3\u01d1\3\2\2") - buf.write(u"\2\u01d3\u01d4\3\2\2\2\u01d4)\3\2\2\2\u01d5\u01d7\5T") - buf.write(u"+\2\u01d6\u01d5\3\2\2\2\u01d7\u01d8\3\2\2\2\u01d8\u01d6") - buf.write(u"\3\2\2\2\u01d8\u01d9\3\2\2\2\u01d9+\3\2\2\2\u01da\u01dc") - buf.write(u"\5V,\2\u01db\u01da\3\2\2\2\u01dc\u01dd\3\2\2\2\u01dd") - buf.write(u"\u01db\3\2\2\2\u01dd\u01de\3\2\2\2\u01de-\3\2\2\2\u01df") - buf.write(u"\u01e1\5X-\2\u01e0\u01df\3\2\2\2\u01e1\u01e2\3\2\2\2") - buf.write(u"\u01e2\u01e0\3\2\2\2\u01e2\u01e3\3\2\2\2\u01e3/\3\2\2") - buf.write(u"\2\u01e4\u01e6\5Z.\2\u01e5\u01e4\3\2\2\2\u01e6\u01e7") - buf.write(u"\3\2\2\2\u01e7\u01e5\3\2\2\2\u01e7\u01e8\3\2\2\2\u01e8") - buf.write(u"\61\3\2\2\2\u01e9\u01eb\5\\/\2\u01ea\u01e9\3\2\2\2\u01eb") - buf.write(u"\u01ec\3\2\2\2\u01ec\u01ea\3\2\2\2\u01ec\u01ed\3\2\2") - buf.write(u"\2\u01ed\63\3\2\2\2\u01ee\u01f0\5^\60\2\u01ef\u01ee\3") - buf.write(u"\2\2\2\u01f0\u01f1\3\2\2\2\u01f1\u01ef\3\2\2\2\u01f1") - buf.write(u"\u01f2\3\2\2\2\u01f2\65\3\2\2\2\u01f3\u01f5\5`\61\2\u01f4") - buf.write(u"\u01f3\3\2\2\2\u01f5\u01f6\3\2\2\2\u01f6\u01f4\3\2\2") - buf.write(u"\2\u01f6\u01f7\3\2\2\2\u01f7\67\3\2\2\2\u01f8\u01fa\5") - buf.write(u"b\62\2\u01f9\u01f8\3\2\2\2\u01fa\u01fb\3\2\2\2\u01fb") - buf.write(u"\u01f9\3\2\2\2\u01fb\u01fc\3\2\2\2\u01fc9\3\2\2\2\u01fd") - buf.write(u"\u01fe\7\u0080\2\2\u01fe\u01ff\7\6\2\2\u01ff\u0200\7") - buf.write(u"\3\2\2\u0200\u0201\5d\63\2\u0201\u0202\5\u00c4c\2\u0202") - buf.write(u"\u0203\5\u00c6d\2\u0203\u0204\5\u00caf\2\u0204\u0205") - buf.write(u"\5\u00b2Z\2\u0205\u0206\5\u00ccg\2\u0206\u0207\7\4\2") - buf.write(u"\2\u0207\u0208\7\7\2\2\u0208;\3\2\2\2\u0209\u020a\7\u0080") - buf.write(u"\2\2\u020a\u020b\7\6\2\2\u020b\u020c\7\3\2\2\u020c\u020d") - buf.write(u"\5f\64\2\u020d\u020f\5\u008eH\2\u020e\u0210\5\u0134\u009b") - buf.write(u"\2\u020f\u020e\3\2\2\2\u020f\u0210\3\2\2\2\u0210\u0211") - buf.write(u"\3\2\2\2\u0211\u0212\7\4\2\2\u0212\u0213\7\7\2\2\u0213") - buf.write(u"=\3\2\2\2\u0214\u0215\7\u0080\2\2\u0215\u0216\7\6\2\2") - buf.write(u"\u0216\u0217\7\3\2\2\u0217\u0218\5h\65\2\u0218\u0219") - buf.write(u"\5\u0090I\2\u0219\u021a\5\u0092J\2\u021a\u021b\5\u0094") - buf.write(u"K\2\u021b\u021c\5\u0096L\2\u021c\u021d\7\4\2\2\u021d") - buf.write(u"\u021e\7\7\2\2\u021e?\3\2\2\2\u021f\u0220\7\u0080\2\2") - buf.write(u"\u0220\u0221\7\6\2\2\u0221\u0222\7\3\2\2\u0222\u0223") - buf.write(u"\5j\66\2\u0223\u0224\5\u00b8]\2\u0224\u0225\5\u0124\u0093") - buf.write(u"\2\u0225\u0226\5\u0126\u0094\2\u0226\u0228\5\u00ba^\2") - buf.write(u"\u0227\u0229\5\u00b2Z\2\u0228\u0227\3\2\2\2\u0228\u0229") - buf.write(u"\3\2\2\2\u0229\u022a\3\2\2\2\u022a\u022b\5\u00bc_\2\u022b") - buf.write(u"\u022c\7\4\2\2\u022c\u022d\7\7\2\2\u022dA\3\2\2\2\u022e") - buf.write(u"\u022f\7\u0080\2\2\u022f\u0230\7\6\2\2\u0230\u0231\7") - buf.write(u"\3\2\2\u0231\u0233\5l\67\2\u0232\u0234\5\u009aN\2\u0233") - buf.write(u"\u0232\3\2\2\2\u0233\u0234\3\2\2\2\u0234\u0236\3\2\2") - buf.write(u"\2\u0235\u0237\5\u0098M\2\u0236\u0235\3\2\2\2\u0236\u0237") - buf.write(u"\3\2\2\2\u0237\u0239\3\2\2\2\u0238\u023a\5\u009eP\2\u0239") - buf.write(u"\u0238\3\2\2\2\u0239\u023a\3\2\2\2\u023a\u023c\3\2\2") - buf.write(u"\2\u023b\u023d\5\u009cO\2\u023c\u023b\3\2\2\2\u023c\u023d") - buf.write(u"\3\2\2\2\u023d\u023f\3\2\2\2\u023e\u0240\5\u00d2j\2\u023f") - buf.write(u"\u023e\3\2\2\2\u023f\u0240\3\2\2\2\u0240\u0242\3\2\2") - buf.write(u"\2\u0241\u0243\5\u00b2Z\2\u0242\u0241\3\2\2\2\u0242\u0243") - buf.write(u"\3\2\2\2\u0243\u0245\3\2\2\2\u0244\u0246\5\u00b4[\2\u0245") - buf.write(u"\u0244\3\2\2\2\u0245\u0246\3\2\2\2\u0246\u0248\3\2\2") - buf.write(u"\2\u0247\u0249\5\u00d6l\2\u0248\u0247\3\2\2\2\u0248\u0249") - buf.write(u"\3\2\2\2\u0249\u024b\3\2\2\2\u024a\u024c\5\u00b6\\\2") - buf.write(u"\u024b\u024a\3\2\2\2\u024b\u024c\3\2\2\2\u024c\u024e") - buf.write(u"\3\2\2\2\u024d\u024f\5\u00d4k\2\u024e\u024d\3\2\2\2\u024e") - buf.write(u"\u024f\3\2\2\2\u024f\u0251\3\2\2\2\u0250\u0252\5\u00a4") - buf.write(u"S\2\u0251\u0250\3\2\2\2\u0251\u0252\3\2\2\2\u0252\u0253") - buf.write(u"\3\2\2\2\u0253\u0254\7\4\2\2\u0254\u0255\7\7\2\2\u0255") - buf.write(u"C\3\2\2\2\u0256\u0257\7\u0080\2\2\u0257\u0258\7\6\2\2") - buf.write(u"\u0258\u0259\7\3\2\2\u0259\u025a\5n8\2\u025a\u025b\5") - buf.write(u"\u00b8]\2\u025b\u025c\5\u00ba^\2\u025c\u025d\5\u00bc") - buf.write(u"_\2\u025d\u025e\7\4\2\2\u025e\u025f\7\7\2\2\u025fE\3") - buf.write(u"\2\2\2\u0260\u0261\7\u0080\2\2\u0261\u0262\7\6\2\2\u0262") - buf.write(u"\u0263\7\3\2\2\u0263\u0264\5p9\2\u0264\u0266\5\u00a6") - buf.write(u"T\2\u0265\u0267\5\u00a0Q\2\u0266\u0265\3\2\2\2\u0266") - buf.write(u"\u0267\3\2\2\2\u0267\u0269\3\2\2\2\u0268\u026a\5\u00b2") - buf.write(u"Z\2\u0269\u0268\3\2\2\2\u0269\u026a\3\2\2\2\u026a\u026c") - buf.write(u"\3\2\2\2\u026b\u026d\5\u00b4[\2\u026c\u026b\3\2\2\2\u026c") - buf.write(u"\u026d\3\2\2\2\u026d\u026e\3\2\2\2\u026e\u0270\5\u00b6") - buf.write(u"\\\2\u026f\u0271\5\u00a2R\2\u0270\u026f\3\2\2\2\u0270") - buf.write(u"\u0271\3\2\2\2\u0271\u0273\3\2\2\2\u0272\u0274\5\u00a4") - buf.write(u"S\2\u0273\u0272\3\2\2\2\u0273\u0274\3\2\2\2\u0274\u0275") - buf.write(u"\3\2\2\2\u0275\u0276\7\4\2\2\u0276\u0277\7\7\2\2\u0277") - buf.write(u"G\3\2\2\2\u0278\u0279\7\u0080\2\2\u0279\u027a\7\6\2\2") - buf.write(u"\u027a\u027b\7\3\2\2\u027b\u027c\5r:\2\u027c\u027d\5") - buf.write(u"\u00b8]\2\u027d\u027e\5\u00ba^\2\u027e\u027f\5\u00bc") - buf.write(u"_\2\u027f\u0280\7\4\2\2\u0280\u0281\7\7\2\2\u0281I\3") - buf.write(u"\2\2\2\u0282\u0283\7\u0080\2\2\u0283\u0284\7\6\2\2\u0284") - buf.write(u"\u0285\7\3\2\2\u0285\u0286\5t;\2\u0286\u0287\5\u00c4") - buf.write(u"c\2\u0287\u0288\5\u00c6d\2\u0288\u0289\5\u00c8e\2\u0289") - buf.write(u"\u028a\5\u00caf\2\u028a\u028c\5\u00b2Z\2\u028b\u028d") - buf.write(u"\5\u00a8U\2\u028c\u028b\3\2\2\2\u028c\u028d\3\2\2\2\u028d") - buf.write(u"\u028f\3\2\2\2\u028e\u0290\5\u00b0Y\2\u028f\u028e\3\2") - buf.write(u"\2\2\u028f\u0290\3\2\2\2\u0290\u0291\3\2\2\2\u0291\u0292") - buf.write(u"\5\u00ccg\2\u0292\u0293\5\u00ceh\2\u0293\u0294\5\u00d0") - buf.write(u"i\2\u0294\u0295\7\4\2\2\u0295\u0296\7\7\2\2\u0296K\3") - buf.write(u"\2\2\2\u0297\u0298\7\u0080\2\2\u0298\u0299\7\6\2\2\u0299") - buf.write(u"\u029a\7\3\2\2\u029a\u029b\5v<\2\u029b\u029c\5\u00d8") - buf.write(u"m\2\u029c\u029d\5\u00c4c\2\u029d\u029e\5\u00f4{\2\u029e") - buf.write(u"\u029f\5\u00f6|\2\u029f\u02a0\5\u00f8}\2\u02a0\u02a1") - buf.write(u"\5\u00fa~\2\u02a1\u02a3\5\u00fc\177\2\u02a2\u02a4\5\u0100") - buf.write(u"\u0081\2\u02a3\u02a2\3\2\2\2\u02a3\u02a4\3\2\2\2\u02a4") - buf.write(u"\u02a6\3\2\2\2\u02a5\u02a7\5\u00fe\u0080\2\u02a6\u02a5") - buf.write(u"\3\2\2\2\u02a6\u02a7\3\2\2\2\u02a7\u02a8\3\2\2\2\u02a8") - buf.write(u"\u02aa\5\u0102\u0082\2\u02a9\u02ab\5\u0104\u0083\2\u02aa") - buf.write(u"\u02a9\3\2\2\2\u02aa\u02ab\3\2\2\2\u02ab\u02ac\3\2\2") - buf.write(u"\2\u02ac\u02ad\5\u0106\u0084\2\u02ad\u02ae\5\u0108\u0085") - buf.write(u"\2\u02ae\u02af\7\4\2\2\u02af\u02b0\7\7\2\2\u02b0M\3\2") - buf.write(u"\2\2\u02b1\u02b2\7\u0080\2\2\u02b2\u02b3\7\6\2\2\u02b3") - buf.write(u"\u02b4\7\3\2\2\u02b4\u02b5\5x=\2\u02b5\u02b6\5\u011c") - buf.write(u"\u008f\2\u02b6\u02b7\5\u00b4[\2\u02b7\u02b8\5\u011e\u0090") - buf.write(u"\2\u02b8\u02b9\5\u00b6\\\2\u02b9\u02ba\7\4\2\2\u02ba") - buf.write(u"\u02bb\7\7\2\2\u02bbO\3\2\2\2\u02bc\u02bd\7\u0080\2\2") - buf.write(u"\u02bd\u02be\7\6\2\2\u02be\u02bf\7\3\2\2\u02bf\u02c0") - buf.write(u"\5z>\2\u02c0\u02c1\5\u00b8]\2\u02c1\u02c2\5\u00ba^\2") - buf.write(u"\u02c2\u02c3\5\u00bc_\2\u02c3\u02c4\7\4\2\2\u02c4\u02c5") - buf.write(u"\7\7\2\2\u02c5Q\3\2\2\2\u02c6\u02c7\7\u0080\2\2\u02c7") - buf.write(u"\u02c8\7\6\2\2\u02c8\u02c9\7\3\2\2\u02c9\u02ca\5|?\2") - buf.write(u"\u02ca\u02cb\5\u00b8]\2\u02cb\u02cd\5\u00ba^\2\u02cc") - buf.write(u"\u02ce\5\u010a\u0086\2\u02cd\u02cc\3\2\2\2\u02cd\u02ce") - buf.write(u"\3\2\2\2\u02ce\u02cf\3\2\2\2\u02cf\u02d1\5\u010c\u0087") - buf.write(u"\2\u02d0\u02d2\5\u00b2Z\2\u02d1\u02d0\3\2\2\2\u02d1\u02d2") - buf.write(u"\3\2\2\2\u02d2\u02d4\3\2\2\2\u02d3\u02d5\5\u010e\u0088") - buf.write(u"\2\u02d4\u02d3\3\2\2\2\u02d4\u02d5\3\2\2\2\u02d5\u02d6") - buf.write(u"\3\2\2\2\u02d6\u02d7\5\u0110\u0089\2\u02d7\u02d8\5\u00bc") - buf.write(u"_\2\u02d8\u02d9\5\u0112\u008a\2\u02d9\u02db\5\u0114\u008b") - buf.write(u"\2\u02da\u02dc\5\u0116\u008c\2\u02db\u02da\3\2\2\2\u02db") - buf.write(u"\u02dc\3\2\2\2\u02dc\u02dd\3\2\2\2\u02dd\u02de\7\4\2") - buf.write(u"\2\u02de\u02df\7\7\2\2\u02dfS\3\2\2\2\u02e0\u02e1\7\u0080") - buf.write(u"\2\2\u02e1\u02e2\7\6\2\2\u02e2\u02e3\7\3\2\2\u02e3\u02e4") - buf.write(u"\5~@\2\u02e4\u02e5\5\u00b8]\2\u02e5\u02e6\5\u00ba^\2") - buf.write(u"\u02e6\u02e7\5\u00bc_\2\u02e7\u02e8\7\4\2\2\u02e8\u02e9") - buf.write(u"\7\7\2\2\u02e9U\3\2\2\2\u02ea\u02eb\7\u0080\2\2\u02eb") - buf.write(u"\u02ec\7\6\2\2\u02ec\u02ed\7\3\2\2\u02ed\u02ef\5\u0080") - buf.write(u"A\2\u02ee\u02f0\5\u00b2Z\2\u02ef\u02ee\3\2\2\2\u02ef") - buf.write(u"\u02f0\3\2\2\2\u02f0\u02f2\3\2\2\2\u02f1\u02f3\5\u0118") - buf.write(u"\u008d\2\u02f2\u02f1\3\2\2\2\u02f2\u02f3\3\2\2\2\u02f3") - buf.write(u"\u02f4\3\2\2\2\u02f4\u02f5\5\u011a\u008e\2\u02f5\u02f6") - buf.write(u"\7\4\2\2\u02f6\u02f7\7\7\2\2\u02f7W\3\2\2\2\u02f8\u02f9") - buf.write(u"\7\u0080\2\2\u02f9\u02fa\7\6\2\2\u02fa\u02fb\7\3\2\2") - buf.write(u"\u02fb\u02fc\5\u0082B\2\u02fc\u02fd\5\u00a6T\2\u02fd") - buf.write(u"\u02ff\5\u00b2Z\2\u02fe\u0300\5\u00b4[\2\u02ff\u02fe") - buf.write(u"\3\2\2\2\u02ff\u0300\3\2\2\2\u0300\u0301\3\2\2\2\u0301") - buf.write(u"\u0302\5\u00b6\\\2\u0302\u0303\7\4\2\2\u0303\u0304\7") - buf.write(u"\7\2\2\u0304Y\3\2\2\2\u0305\u0306\7\u0080\2\2\u0306\u0307") - buf.write(u"\7\6\2\2\u0307\u0308\7\3\2\2\u0308\u030a\5\u0084C\2\u0309") - buf.write(u"\u030b\5\u0120\u0091\2\u030a\u0309\3\2\2\2\u030a\u030b") - buf.write(u"\3\2\2\2\u030b\u030c\3\2\2\2\u030c\u030d\5\u0122\u0092") - buf.write(u"\2\u030d\u030e\5\u00b2Z\2\u030e\u030f\7\4\2\2\u030f\u0310") - buf.write(u"\7\7\2\2\u0310[\3\2\2\2\u0311\u0312\7\u0080\2\2\u0312") - buf.write(u"\u0313\7\6\2\2\u0313\u0314\7\3\2\2\u0314\u0315\5\u0086") - buf.write(u"D\2\u0315\u0316\5\u012e\u0098\2\u0316\u0318\5\u0130\u0099") - buf.write(u"\2\u0317\u0319\5\u0132\u009a\2\u0318\u0317\3\2\2\2\u0318") - buf.write(u"\u0319\3\2\2\2\u0319\u031a\3\2\2\2\u031a\u031b\7\4\2") - buf.write(u"\2\u031b\u031c\7\7\2\2\u031c]\3\2\2\2\u031d\u031e\7\u0080") - buf.write(u"\2\2\u031e\u031f\7\6\2\2\u031f\u0320\7\3\2\2\u0320\u0321") - buf.write(u"\5\u0088E\2\u0321\u0322\5\u00aaV\2\u0322\u0323\5\u00ac") - buf.write(u"W\2\u0323\u0324\7\4\2\2\u0324\u0325\7\7\2\2\u0325_\3") - buf.write(u"\2\2\2\u0326\u0327\7\u0080\2\2\u0327\u0328\7\6\2\2\u0328") - buf.write(u"\u0329\7\3\2\2\u0329\u032a\5\u008aF\2\u032a\u032b\5\u00ae") - buf.write(u"X\2\u032b\u032c\5\u00ccg\2\u032c\u032d\7\4\2\2\u032d") - buf.write(u"\u032e\7\7\2\2\u032ea\3\2\2\2\u032f\u0330\7\u0080\2\2") - buf.write(u"\u0330\u0331\7\6\2\2\u0331\u0332\7\3\2\2\u0332\u0333") - buf.write(u"\5\u008cG\2\u0333\u0334\5\u00a6T\2\u0334\u0335\5\u0138") - buf.write(u"\u009d\2\u0335\u0336\5\u00b4[\2\u0336\u0337\5\u00b6\\") - buf.write(u"\2\u0337\u0338\5\u013a\u009e\2\u0338\u0339\7\4\2\2\u0339") - buf.write(u"\u033a\7\7\2\2\u033ac\3\2\2\2\u033b\u033c\7v\2\2\u033c") - buf.write(u"\u033d\7\6\2\2\u033d\u033e\7\t\2\2\u033e\u033f\7\7\2") - buf.write(u"\2\u033fe\3\2\2\2\u0340\u0341\7v\2\2\u0341\u0342\7\6") - buf.write(u"\2\2\u0342\u0343\7\n\2\2\u0343\u0344\7\7\2\2\u0344g\3") - buf.write(u"\2\2\2\u0345\u0346\7v\2\2\u0346\u0347\7\6\2\2\u0347\u0348") - buf.write(u"\7\13\2\2\u0348\u0349\7\7\2\2\u0349i\3\2\2\2\u034a\u034b") - buf.write(u"\7v\2\2\u034b\u034c\7\6\2\2\u034c\u034d\7\f\2\2\u034d") - buf.write(u"\u034e\7\7\2\2\u034ek\3\2\2\2\u034f\u0350\7v\2\2\u0350") - buf.write(u"\u0351\7\6\2\2\u0351\u0352\7\r\2\2\u0352\u0353\7\7\2") - buf.write(u"\2\u0353m\3\2\2\2\u0354\u0355\7v\2\2\u0355\u0356\7\6") - buf.write(u"\2\2\u0356\u0357\7\16\2\2\u0357\u0358\7\7\2\2\u0358o") - buf.write(u"\3\2\2\2\u0359\u035a\7v\2\2\u035a\u035b\7\6\2\2\u035b") - buf.write(u"\u035c\7\17\2\2\u035c\u035d\7\7\2\2\u035dq\3\2\2\2\u035e") - buf.write(u"\u035f\7v\2\2\u035f\u0360\7\6\2\2\u0360\u0361\7\20\2") - buf.write(u"\2\u0361\u0362\7\7\2\2\u0362s\3\2\2\2\u0363\u0364\7v") - buf.write(u"\2\2\u0364\u0365\7\6\2\2\u0365\u0366\7\21\2\2\u0366\u0367") - buf.write(u"\7\7\2\2\u0367u\3\2\2\2\u0368\u0369\7v\2\2\u0369\u036a") - buf.write(u"\7\6\2\2\u036a\u036b\7\22\2\2\u036b\u036c\7\7\2\2\u036c") - buf.write(u"w\3\2\2\2\u036d\u036e\7v\2\2\u036e\u036f\7\6\2\2\u036f") - buf.write(u"\u0370\7\23\2\2\u0370\u0371\7\7\2\2\u0371y\3\2\2\2\u0372") - buf.write(u"\u0373\7v\2\2\u0373\u0374\7\6\2\2\u0374\u0375\7\24\2") - buf.write(u"\2\u0375\u0376\7\7\2\2\u0376{\3\2\2\2\u0377\u0378\7v") - buf.write(u"\2\2\u0378\u0379\7\6\2\2\u0379\u037a\7\25\2\2\u037a\u037b") - buf.write(u"\7\7\2\2\u037b}\3\2\2\2\u037c\u037d\7v\2\2\u037d\u037e") - buf.write(u"\7\6\2\2\u037e\u037f\7\26\2\2\u037f\u0380\7\7\2\2\u0380") - buf.write(u"\177\3\2\2\2\u0381\u0382\7v\2\2\u0382\u0383\7\6\2\2\u0383") - buf.write(u"\u0384\7\27\2\2\u0384\u0385\7\7\2\2\u0385\u0081\3\2\2") - buf.write(u"\2\u0386\u0387\7v\2\2\u0387\u0388\7\6\2\2\u0388\u0389") - buf.write(u"\7\30\2\2\u0389\u038a\7\7\2\2\u038a\u0083\3\2\2\2\u038b") - buf.write(u"\u038c\7v\2\2\u038c\u038d\7\6\2\2\u038d\u038e\7\31\2") - buf.write(u"\2\u038e\u038f\7\7\2\2\u038f\u0085\3\2\2\2\u0390\u0391") - buf.write(u"\7v\2\2\u0391\u0392\7\6\2\2\u0392\u0393\7\32\2\2\u0393") - buf.write(u"\u0394\7\7\2\2\u0394\u0087\3\2\2\2\u0395\u0396\7v\2\2") - buf.write(u"\u0396\u0397\7\6\2\2\u0397\u0398\7\33\2\2\u0398\u0399") - buf.write(u"\7\7\2\2\u0399\u0089\3\2\2\2\u039a\u039b\7v\2\2\u039b") - buf.write(u"\u039c\7\6\2\2\u039c\u039d\7\34\2\2\u039d\u039e\7\7\2") - buf.write(u"\2\u039e\u008b\3\2\2\2\u039f\u03a0\7v\2\2\u03a0\u03a1") - buf.write(u"\7\6\2\2\u03a1\u03a2\7\35\2\2\u03a2\u03a3\7\7\2\2\u03a3") - buf.write(u"\u008d\3\2\2\2\u03a4\u03a5\7\36\2\2\u03a5\u03a6\7\6\2") - buf.write(u"\2\u03a6\u03a7\7\u0080\2\2\u03a7\u03ad\7\7\2\2\u03a8") - buf.write(u"\u03a9\7\37\2\2\u03a9\u03aa\7\6\2\2\u03aa\u03ab\7\u0080") - buf.write(u"\2\2\u03ab\u03ad\7\7\2\2\u03ac\u03a4\3\2\2\2\u03ac\u03a8") - buf.write(u"\3\2\2\2\u03ad\u008f\3\2\2\2\u03ae\u03af\7 \2\2\u03af") - buf.write(u"\u03b0\7\6\2\2\u03b0\u03b1\7\u0080\2\2\u03b1\u03b2\7") - buf.write(u"\7\2\2\u03b2\u0091\3\2\2\2\u03b3\u03b4\7!\2\2\u03b4\u03b5") - buf.write(u"\7\6\2\2\u03b5\u03b6\7y\2\2\u03b6\u03b7\7\7\2\2\u03b7") - buf.write(u"\u0093\3\2\2\2\u03b8\u03b9\7\"\2\2\u03b9\u03ba\7\6\2") - buf.write(u"\2\u03ba\u03bb\7\u0080\2\2\u03bb\u03bc\7\7\2\2\u03bc") - buf.write(u"\u0095\3\2\2\2\u03bd\u03be\7#\2\2\u03be\u03bf\7\6\2\2") - buf.write(u"\u03bf\u03c0\5\u013e\u00a0\2\u03c0\u03c1\7\7\2\2\u03c1") - buf.write(u"\u0097\3\2\2\2\u03c2\u03c3\7$\2\2\u03c3\u03c4\7\6\2\2") - buf.write(u"\u03c4\u03c5\7y\2\2\u03c5\u03c6\7\7\2\2\u03c6\u0099\3") - buf.write(u"\2\2\2\u03c7\u03c8\7%\2\2\u03c8\u03c9\7\6\2\2\u03c9\u03ca") - buf.write(u"\5\u013e\u00a0\2\u03ca\u03cb\7\7\2\2\u03cb\u009b\3\2") - buf.write(u"\2\2\u03cc\u03cd\7&\2\2\u03cd\u03ce\7\6\2\2\u03ce\u03cf") - buf.write(u"\5\u013e\u00a0\2\u03cf\u03d0\7\7\2\2\u03d0\u009d\3\2") - buf.write(u"\2\2\u03d1\u03d2\7\'\2\2\u03d2\u03d3\7\6\2\2\u03d3\u03d4") - buf.write(u"\7y\2\2\u03d4\u03d5\7\7\2\2\u03d5\u009f\3\2\2\2\u03d6") - buf.write(u"\u03d7\7(\2\2\u03d7\u03d8\7\6\2\2\u03d8\u03d9\7y\2\2") - buf.write(u"\u03d9\u03da\7\7\2\2\u03da\u00a1\3\2\2\2\u03db\u03dc") - buf.write(u"\7)\2\2\u03dc\u03dd\7\6\2\2\u03dd\u03de\7y\2\2\u03de") - buf.write(u"\u03df\7\7\2\2\u03df\u00a3\3\2\2\2\u03e0\u03e1\7*\2\2") - buf.write(u"\u03e1\u03e2\7\6\2\2\u03e2\u03e3\7y\2\2\u03e3\u03e4\7") - buf.write(u"\7\2\2\u03e4\u00a5\3\2\2\2\u03e5\u03e6\7+\2\2\u03e6\u03e7") - buf.write(u"\7\6\2\2\u03e7\u03e8\5\u00be`\2\u03e8\u03e9\7\7\2\2\u03e9") - buf.write(u"\u00a7\3\2\2\2\u03ea\u03eb\7,\2\2\u03eb\u03ec\7\6\2\2") - buf.write(u"\u03ec\u03ed\7\u0081\2\2\u03ed\u03ee\7\7\2\2\u03ee\u00a9") - buf.write(u"\3\2\2\2\u03ef\u03f0\7-\2\2\u03f0\u03f1\7\6\2\2\u03f1") - buf.write(u"\u03f2\7\u0081\2\2\u03f2\u03f3\7\7\2\2\u03f3\u00ab\3") - buf.write(u"\2\2\2\u03f4\u03f5\7.\2\2\u03f5\u03f6\7\6\2\2\u03f6\u03fa") - buf.write(u"\7\3\2\2\u03f7\u03f9\5\u012c\u0097\2\u03f8\u03f7\3\2") - buf.write(u"\2\2\u03f9\u03fc\3\2\2\2\u03fa\u03f8\3\2\2\2\u03fa\u03fb") - buf.write(u"\3\2\2\2\u03fb\u03fd\3\2\2\2\u03fc\u03fa\3\2\2\2\u03fd") - buf.write(u"\u03fe\7\4\2\2\u03fe\u03ff\7\7\2\2\u03ff\u00ad\3\2\2") - buf.write(u"\2\u0400\u0401\7/\2\2\u0401\u0402\7\6\2\2\u0402\u0403") - buf.write(u"\7\u0080\2\2\u0403\u0404\7\7\2\2\u0404\u00af\3\2\2\2") - buf.write(u"\u0405\u0406\7\60\2\2\u0406\u0407\7\6\2\2\u0407\u0408") - buf.write(u"\5\u00be`\2\u0408\u0409\7\7\2\2\u0409\u00b1\3\2\2\2\u040a") - buf.write(u"\u040b\7\61\2\2\u040b\u040c\7\6\2\2\u040c\u040d\t\2\2") - buf.write(u"\2\u040d\u040e\7\7\2\2\u040e\u00b3\3\2\2\2\u040f\u0410") - buf.write(u"\7\62\2\2\u0410\u0411\7\6\2\2\u0411\u0412\t\2\2\2\u0412") - buf.write(u"\u0413\7\7\2\2\u0413\u00b5\3\2\2\2\u0414\u0415\7\63\2") - buf.write(u"\2\u0415\u0416\7\6\2\2\u0416\u0417\t\2\2\2\u0417\u0418") - buf.write(u"\7\7\2\2\u0418\u00b7\3\2\2\2\u0419\u041a\7\64\2\2\u041a") - buf.write(u"\u041b\7\6\2\2\u041b\u041c\7y\2\2\u041c\u041d\7\7\2\2") - buf.write(u"\u041d\u00b9\3\2\2\2\u041e\u041f\7\65\2\2\u041f\u0420") - buf.write(u"\7\6\2\2\u0420\u0421\5\u00be`\2\u0421\u0422\7\7\2\2\u0422") - buf.write(u"\u00bb\3\2\2\2\u0423\u0424\7\66\2\2\u0424\u0425\7\6\2") - buf.write(u"\2\u0425\u0426\7y\2\2\u0426\u0427\7\7\2\2\u0427\u00bd") - buf.write(u"\3\2\2\2\u0428\u042d\7\67\2\2\u0429\u042a\7\u0080\2\2") - buf.write(u"\u042a\u042c\78\2\2\u042b\u0429\3\2\2\2\u042c\u042f\3") - buf.write(u"\2\2\2\u042d\u042b\3\2\2\2\u042d\u042e\3\2\2\2\u042e") - buf.write(u"\u0430\3\2\2\2\u042f\u042d\3\2\2\2\u0430\u0431\79\2\2") - buf.write(u"\u0431\u00bf\3\2\2\2\u0432\u0438\7\67\2\2\u0433\u0434") - buf.write(u"\5\u013e\u00a0\2\u0434\u0435\78\2\2\u0435\u0437\3\2\2") - buf.write(u"\2\u0436\u0433\3\2\2\2\u0437\u043a\3\2\2\2\u0438\u0436") - buf.write(u"\3\2\2\2\u0438\u0439\3\2\2\2\u0439\u043b\3\2\2\2\u043a") - buf.write(u"\u0438\3\2\2\2\u043b\u043c\79\2\2\u043c\u00c1\3\2\2\2") - buf.write(u"\u043d\u0442\7\67\2\2\u043e\u043f\7\u0082\2\2\u043f\u0441") - buf.write(u"\78\2\2\u0440\u043e\3\2\2\2\u0441\u0444\3\2\2\2\u0442") - buf.write(u"\u0440\3\2\2\2\u0442\u0443\3\2\2\2\u0443\u0445\3\2\2") - buf.write(u"\2\u0444\u0442\3\2\2\2\u0445\u0446\79\2\2\u0446\u00c3") - buf.write(u"\3\2\2\2\u0447\u0448\7:\2\2\u0448\u0449\7\6\2\2\u0449") - buf.write(u"\u044a\7\u0080\2\2\u044a\u044b\7\7\2\2\u044b\u00c5\3") - buf.write(u"\2\2\2\u044c\u044d\7;\2\2\u044d\u044e\7\6\2\2\u044e\u044f") - buf.write(u"\5\u00be`\2\u044f\u0450\7\7\2\2\u0450\u00c7\3\2\2\2\u0451") - buf.write(u"\u0452\7<\2\2\u0452\u0453\7\6\2\2\u0453\u0454\5\u00be") - buf.write(u"`\2\u0454\u0455\7\7\2\2\u0455\u00c9\3\2\2\2\u0456\u0457") - buf.write(u"\7=\2\2\u0457\u0458\7\6\2\2\u0458\u0459\5\u00be`\2\u0459") - buf.write(u"\u045a\7\7\2\2\u045a\u00cb\3\2\2\2\u045b\u045c\7>\2\2") - buf.write(u"\u045c\u045d\7\6\2\2\u045d\u045e\5\u013e\u00a0\2\u045e") - buf.write(u"\u045f\7\7\2\2\u045f\u00cd\3\2\2\2\u0460\u0461\7?\2\2") - buf.write(u"\u0461\u0462\7\6\2\2\u0462\u0463\7\u0080\2\2\u0463\u0464") - buf.write(u"\7\7\2\2\u0464\u00cf\3\2\2\2\u0465\u0466\7@\2\2\u0466") - buf.write(u"\u0467\7\6\2\2\u0467\u0468\7\u0081\2\2\u0468\u0469\7") - buf.write(u"\7\2\2\u0469\u00d1\3\2\2\2\u046a\u046b\7A\2\2\u046b\u046c") - buf.write(u"\7\6\2\2\u046c\u046d\7y\2\2\u046d\u046e\7\7\2\2\u046e") - buf.write(u"\u00d3\3\2\2\2\u046f\u0470\7B\2\2\u0470\u0471\7\6\2\2") - buf.write(u"\u0471\u0472\5\u013e\u00a0\2\u0472\u0473\7\7\2\2\u0473") - buf.write(u"\u00d5\3\2\2\2\u0474\u0475\7C\2\2\u0475\u0476\7\6\2\2") - buf.write(u"\u0476\u0477\5\u013e\u00a0\2\u0477\u0478\7\7\2\2\u0478") - buf.write(u"\u00d7\3\2\2\2\u0479\u047a\7D\2\2\u047a\u047b\7\6\2\2") - buf.write(u"\u047b\u047d\7\3\2\2\u047c\u047e\5\u013c\u009f\2\u047d") - buf.write(u"\u047c\3\2\2\2\u047d\u047e\3\2\2\2\u047e\u0480\3\2\2") - buf.write(u"\2\u047f\u0481\5\u00dco\2\u0480\u047f\3\2\2\2\u0480\u0481") - buf.write(u"\3\2\2\2\u0481\u0483\3\2\2\2\u0482\u0484\5\u00dan\2\u0483") - buf.write(u"\u0482\3\2\2\2\u0483\u0484\3\2\2\2\u0484\u0486\3\2\2") - buf.write(u"\2\u0485\u0487\5\u00dep\2\u0486\u0485\3\2\2\2\u0486\u0487") - buf.write(u"\3\2\2\2\u0487\u0489\3\2\2\2\u0488\u048a\5\u00e0q\2\u0489") - buf.write(u"\u0488\3\2\2\2\u0489\u048a\3\2\2\2\u048a\u048c\3\2\2") - buf.write(u"\2\u048b\u048d\5\u00e2r\2\u048c\u048b\3\2\2\2\u048c\u048d") - buf.write(u"\3\2\2\2\u048d\u048f\3\2\2\2\u048e\u0490\5\u00e4s\2\u048f") - buf.write(u"\u048e\3\2\2\2\u048f\u0490\3\2\2\2\u0490\u0492\3\2\2") - buf.write(u"\2\u0491\u0493\5\u00e6t\2\u0492\u0491\3\2\2\2\u0492\u0493") - buf.write(u"\3\2\2\2\u0493\u0495\3\2\2\2\u0494\u0496\5\u00e8u\2\u0495") - buf.write(u"\u0494\3\2\2\2\u0495\u0496\3\2\2\2\u0496\u0497\3\2\2") - buf.write(u"\2\u0497\u0498\7\4\2\2\u0498\u0499\7\7\2\2\u0499\u00d9") - buf.write(u"\3\2\2\2\u049a\u049b\7E\2\2\u049b\u049c\7\6\2\2\u049c") - buf.write(u"\u049d\7y\2\2\u049d\u049e\7\7\2\2\u049e\u00db\3\2\2\2") - buf.write(u"\u049f\u04a0\7F\2\2\u04a0\u04a1\7\6\2\2\u04a1\u04a2\7") - buf.write(u"\u0082\2\2\u04a2\u04a3\7\7\2\2\u04a3\u00dd\3\2\2\2\u04a4") - buf.write(u"\u04a5\7G\2\2\u04a5\u04a6\7\6\2\2\u04a6\u04a7\7y\2\2") - buf.write(u"\u04a7\u04a8\7\7\2\2\u04a8\u00df\3\2\2\2\u04a9\u04aa") - buf.write(u"\7H\2\2\u04aa\u04ab\7\6\2\2\u04ab\u04ac\7\u0082\2\2\u04ac") - buf.write(u"\u04ad\7\7\2\2\u04ad\u00e1\3\2\2\2\u04ae\u04af\7I\2\2") - buf.write(u"\u04af\u04b0\7\6\2\2\u04b0\u04b1\7y\2\2\u04b1\u04b2\7") - buf.write(u"\7\2\2\u04b2\u00e3\3\2\2\2\u04b3\u04b4\7J\2\2\u04b4\u04b5") - buf.write(u"\7\6\2\2\u04b5\u04b6\7\u0082\2\2\u04b6\u04b7\7\7\2\2") - buf.write(u"\u04b7\u00e5\3\2\2\2\u04b8\u04b9\7K\2\2\u04b9\u04ba\7") - buf.write(u"\6\2\2\u04ba\u04bb\5\u013e\u00a0\2\u04bb\u04bc\7\7\2") - buf.write(u"\2\u04bc\u00e7\3\2\2\2\u04bd\u04be\7L\2\2\u04be\u04bf") - buf.write(u"\7\6\2\2\u04bf\u04c3\7\3\2\2\u04c0\u04c2\5\u00eav\2\u04c1") - buf.write(u"\u04c0\3\2\2\2\u04c2\u04c5\3\2\2\2\u04c3\u04c1\3\2\2") - buf.write(u"\2\u04c3\u04c4\3\2\2\2\u04c4\u04c6\3\2\2\2\u04c5\u04c3") - buf.write(u"\3\2\2\2\u04c6\u04c7\7\4\2\2\u04c7\u04c8\7\7\2\2\u04c8") - buf.write(u"\u00e9\3\2\2\2\u04c9\u04ca\7\u0080\2\2\u04ca\u04cb\7") - buf.write(u"\6\2\2\u04cb\u04cd\7\3\2\2\u04cc\u04ce\5\u00ecw\2\u04cd") - buf.write(u"\u04cc\3\2\2\2\u04cd\u04ce\3\2\2\2\u04ce\u04d0\3\2\2") - buf.write(u"\2\u04cf\u04d1\5\u00eex\2\u04d0\u04cf\3\2\2\2\u04d0\u04d1") - buf.write(u"\3\2\2\2\u04d1\u04d3\3\2\2\2\u04d2\u04d4\5\u00f0y\2\u04d3") - buf.write(u"\u04d2\3\2\2\2\u04d3\u04d4\3\2\2\2\u04d4\u04d6\3\2\2") - buf.write(u"\2\u04d5\u04d7\5\u00dan\2\u04d6\u04d5\3\2\2\2\u04d6\u04d7") - buf.write(u"\3\2\2\2\u04d7\u04d9\3\2\2\2\u04d8\u04da\5\u00f2z\2\u04d9") - buf.write(u"\u04d8\3\2\2\2\u04d9\u04da\3\2\2\2\u04da\u04dc\3\2\2") - buf.write(u"\2\u04db\u04dd\5\u0136\u009c\2\u04dc\u04db\3\2\2\2\u04dc") - buf.write(u"\u04dd\3\2\2\2\u04dd\u04df\3\2\2\2\u04de\u04e0\5\u00ee") - buf.write(u"x\2\u04df\u04de\3\2\2\2\u04df\u04e0\3\2\2\2\u04e0\u04e1") - buf.write(u"\3\2\2\2\u04e1\u04e2\7\4\2\2\u04e2\u04e3\7\7\2\2\u04e3") - buf.write(u"\u00eb\3\2\2\2\u04e4\u04e5\7M\2\2\u04e5\u04e6\7\6\2\2") - buf.write(u"\u04e6\u04e7\7\u0082\2\2\u04e7\u04e8\7\7\2\2\u04e8\u00ed") - buf.write(u"\3\2\2\2\u04e9\u04ea\7N\2\2\u04ea\u04eb\7\6\2\2\u04eb") - buf.write(u"\u04ec\7\u0080\2\2\u04ec\u04ed\7\7\2\2\u04ed\u00ef\3") - buf.write(u"\2\2\2\u04ee\u04ef\7O\2\2\u04ef\u04f0\7\6\2\2\u04f0\u04f1") - buf.write(u"\7\u0082\2\2\u04f1\u04f2\7\7\2\2\u04f2\u00f1\3\2\2\2") - buf.write(u"\u04f3\u04f4\7P\2\2\u04f4\u04f5\7\6\2\2\u04f5\u04f6\7") - buf.write(u"\u0082\2\2\u04f6\u04f7\7\7\2\2\u04f7\u00f3\3\2\2\2\u04f8") - buf.write(u"\u04f9\7Q\2\2\u04f9\u04fa\7\6\2\2\u04fa\u04fb\7\u0081") - buf.write(u"\2\2\u04fb\u04fc\7\7\2\2\u04fc\u00f5\3\2\2\2\u04fd\u04fe") - buf.write(u"\7R\2\2\u04fe\u04ff\7\6\2\2\u04ff\u0500\7\u0082\2\2\u0500") - buf.write(u"\u0501\7\7\2\2\u0501\u00f7\3\2\2\2\u0502\u0503\7S\2\2") - buf.write(u"\u0503\u0504\7\6\2\2\u0504\u0505\7y\2\2\u0505\u0506\7") - buf.write(u"\7\2\2\u0506\u00f9\3\2\2\2\u0507\u0508\7T\2\2\u0508\u0509") - buf.write(u"\7\6\2\2\u0509\u050a\5\u00c0a\2\u050a\u050b\7\7\2\2\u050b") - buf.write(u"\u00fb\3\2\2\2\u050c\u050d\7U\2\2\u050d\u050e\7\6\2\2") - buf.write(u"\u050e\u050f\7\u0080\2\2\u050f\u0510\7\7\2\2\u0510\u00fd") - buf.write(u"\3\2\2\2\u0511\u0512\7V\2\2\u0512\u0513\7\6\2\2\u0513") - buf.write(u"\u0514\7\u0080\2\2\u0514\u0515\7\7\2\2\u0515\u00ff\3") - buf.write(u"\2\2\2\u0516\u0517\7W\2\2\u0517\u0518\7\6\2\2\u0518\u0519") - buf.write(u"\5\u00be`\2\u0519\u051a\7\7\2\2\u051a\u0101\3\2\2\2\u051b") - buf.write(u"\u051c\7X\2\2\u051c\u051d\7\6\2\2\u051d\u051e\t\2\2\2") - buf.write(u"\u051e\u051f\7\7\2\2\u051f\u0103\3\2\2\2\u0520\u0521") - buf.write(u"\7Y\2\2\u0521\u0522\7\6\2\2\u0522\u0523\5\u013e\u00a0") - buf.write(u"\2\u0523\u0524\7\7\2\2\u0524\u052d\3\2\2\2\u0525\u0526") - buf.write(u"\7Y\2\2\u0526\u0527\7\6\2\2\u0527\u0528\7\67\2\2\u0528") - buf.write(u"\u0529\5\u0128\u0095\2\u0529\u052a\79\2\2\u052a\u052b") - buf.write(u"\7\7\2\2\u052b\u052d\3\2\2\2\u052c\u0520\3\2\2\2\u052c") - buf.write(u"\u0525\3\2\2\2\u052d\u0105\3\2\2\2\u052e\u052f\7Z\2\2") - buf.write(u"\u052f\u0530\7\6\2\2\u0530\u0531\t\2\2\2\u0531\u0532") - buf.write(u"\7\7\2\2\u0532\u0107\3\2\2\2\u0533\u0534\7[\2\2\u0534") - buf.write(u"\u0535\7\6\2\2\u0535\u0536\5\u00be`\2\u0536\u0537\7\7") - buf.write(u"\2\2\u0537\u0109\3\2\2\2\u0538\u0539\7\\\2\2\u0539\u053a") - buf.write(u"\7\6\2\2\u053a\u053b\5\u00c0a\2\u053b\u053c\7\7\2\2\u053c") - buf.write(u"\u010b\3\2\2\2\u053d\u053e\7]\2\2\u053e\u053f\7\6\2\2") - buf.write(u"\u053f\u0540\5\u00c0a\2\u0540\u0541\7\7\2\2\u0541\u010d") - buf.write(u"\3\2\2\2\u0542\u0543\7^\2\2\u0543\u0544\7\6\2\2\u0544") - buf.write(u"\u0545\5\u00c0a\2\u0545\u0546\7\7\2\2\u0546\u010f\3\2") - buf.write(u"\2\2\u0547\u0548\7_\2\2\u0548\u0549\7\6\2\2\u0549\u054a") - buf.write(u"\5\u00c0a\2\u054a\u054b\7\7\2\2\u054b\u0111\3\2\2\2\u054c") - buf.write(u"\u054d\7`\2\2\u054d\u054e\7\6\2\2\u054e\u054f\7\u0082") - buf.write(u"\2\2\u054f\u0550\7\7\2\2\u0550\u0113\3\2\2\2\u0551\u0552") - buf.write(u"\7a\2\2\u0552\u0553\7\6\2\2\u0553\u0554\t\2\2\2\u0554") - buf.write(u"\u0555\7\7\2\2\u0555\u0115\3\2\2\2\u0556\u0557\7b\2\2") - buf.write(u"\u0557\u0558\7\6\2\2\u0558\u0559\7y\2\2\u0559\u055a\7") - buf.write(u"\7\2\2\u055a\u0117\3\2\2\2\u055b\u055c\7c\2\2\u055c\u055d") - buf.write(u"\7\6\2\2\u055d\u055e\7\u0080\2\2\u055e\u055f\7\7\2\2") - buf.write(u"\u055f\u0119\3\2\2\2\u0560\u0561\7d\2\2\u0561\u0562\7") - buf.write(u"\6\2\2\u0562\u0563\7\u0080\2\2\u0563\u0564\7\7\2\2\u0564") - buf.write(u"\u011b\3\2\2\2\u0565\u0566\7e\2\2\u0566\u0567\7\6\2\2") - buf.write(u"\u0567\u0568\5\u013e\u00a0\2\u0568\u0569\7\7\2\2\u0569") - buf.write(u"\u011d\3\2\2\2\u056a\u056b\7f\2\2\u056b\u056c\7\6\2\2") - buf.write(u"\u056c\u056d\7\u0080\2\2\u056d\u056e\7\7\2\2\u056e\u011f") - buf.write(u"\3\2\2\2\u056f\u0570\7g\2\2\u0570\u0571\7\6\2\2\u0571") - buf.write(u"\u0572\7\u0080\2\2\u0572\u0573\7\7\2\2\u0573\u0121\3") - buf.write(u"\2\2\2\u0574\u0575\7h\2\2\u0575\u0576\7\6\2\2\u0576\u057a") - buf.write(u"\7\3\2\2\u0577\u0579\5\u012c\u0097\2\u0578\u0577\3\2") - buf.write(u"\2\2\u0579\u057c\3\2\2\2\u057a\u0578\3\2\2\2\u057a\u057b") - buf.write(u"\3\2\2\2\u057b\u057d\3\2\2\2\u057c\u057a\3\2\2\2\u057d") - buf.write(u"\u057e\7\4\2\2\u057e\u057f\7\7\2\2\u057f\u0123\3\2\2") - buf.write(u"\2\u0580\u0581\7i\2\2\u0581\u0582\7\6\2\2\u0582\u0583") - buf.write(u"\t\2\2\2\u0583\u0584\7\7\2\2\u0584\u0125\3\2\2\2\u0585") - buf.write(u"\u0586\7j\2\2\u0586\u0587\7\6\2\2\u0587\u0588\7y\2\2") - buf.write(u"\u0588\u0589\7\7\2\2\u0589\u0127\3\2\2\2\u058a\u058c") - buf.write(u"\5\u012a\u0096\2\u058b\u058a\3\2\2\2\u058c\u058f\3\2") - buf.write(u"\2\2\u058d\u058b\3\2\2\2\u058d\u058e\3\2\2\2\u058e\u0129") - buf.write(u"\3\2\2\2\u058f\u058d\3\2\2\2\u0590\u0591\7\3\2\2\u0591") - buf.write(u"\u0592\7k\2\2\u0592\u0593\7\6\2\2\u0593\u0594\7\u0080") - buf.write(u"\2\2\u0594\u0595\7\7\2\2\u0595\u0596\7l\2\2\u0596\u0597") - buf.write(u"\7\6\2\2\u0597\u0598\7\u0080\2\2\u0598\u0599\7\7\2\2") - buf.write(u"\u0599\u059a\7\4\2\2\u059a\u059b\78\2\2\u059b\u012b\3") - buf.write(u"\2\2\2\u059c\u059d\5\u013e\u00a0\2\u059d\u059e\7\6\2") - buf.write(u"\2\u059e\u059f\5\u013e\u00a0\2\u059f\u05a0\7\7\2\2\u05a0") - buf.write(u"\u05c1\3\2\2\2\u05a1\u05a2\5\u013e\u00a0\2\u05a2\u05a3") - buf.write(u"\7\6\2\2\u05a3\u05a4\7y\2\2\u05a4\u05a5\7\7\2\2\u05a5") - buf.write(u"\u05c1\3\2\2\2\u05a6\u05a7\5\u013e\u00a0\2\u05a7\u05a8") - buf.write(u"\7\6\2\2\u05a8\u05a9\7{\2\2\u05a9\u05aa\7\7\2\2\u05aa") - buf.write(u"\u05c1\3\2\2\2\u05ab\u05ac\5\u013e\u00a0\2\u05ac\u05ad") - buf.write(u"\7\6\2\2\u05ad\u05ae\7\3\2\2\u05ae\u05af\5\u012c\u0097") - buf.write(u"\2\u05af\u05b0\7\4\2\2\u05b0\u05b1\7\7\2\2\u05b1\u05c1") - buf.write(u"\3\2\2\2\u05b2\u05b3\5\u013e\u00a0\2\u05b3\u05b4\7\6") - buf.write(u"\2\2\u05b4\u05ba\7\67\2\2\u05b5\u05b6\5\u013e\u00a0\2") - buf.write(u"\u05b6\u05b7\78\2\2\u05b7\u05b9\3\2\2\2\u05b8\u05b5\3") - buf.write(u"\2\2\2\u05b9\u05bc\3\2\2\2\u05ba\u05b8\3\2\2\2\u05ba") - buf.write(u"\u05bb\3\2\2\2\u05bb\u05bd\3\2\2\2\u05bc\u05ba\3\2\2") - buf.write(u"\2\u05bd\u05be\79\2\2\u05be\u05bf\7\7\2\2\u05bf\u05c1") - buf.write(u"\3\2\2\2\u05c0\u059c\3\2\2\2\u05c0\u05a1\3\2\2\2\u05c0") - buf.write(u"\u05a6\3\2\2\2\u05c0\u05ab\3\2\2\2\u05c0\u05b2\3\2\2") - buf.write(u"\2\u05c1\u012d\3\2\2\2\u05c2\u05c3\7m\2\2\u05c3\u05c4") - buf.write(u"\7\6\2\2\u05c4\u05c5\5\u00be`\2\u05c5\u05c6\7\7\2\2\u05c6") - buf.write(u"\u012f\3\2\2\2\u05c7\u05c8\7n\2\2\u05c8\u05c9\7\6\2\2") - buf.write(u"\u05c9\u05ca\7y\2\2\u05ca\u05cb\7\7\2\2\u05cb\u0131\3") - buf.write(u"\2\2\2\u05cc\u05cd\7o\2\2\u05cd\u05ce\7\6\2\2\u05ce\u05cf") - buf.write(u"\t\2\2\2\u05cf\u05d0\7\7\2\2\u05d0\u0133\3\2\2\2\u05d1") - buf.write(u"\u05d2\7p\2\2\u05d2\u05d3\7\6\2\2\u05d3\u05d7\7\3\2\2") - buf.write(u"\u05d4\u05d6\5\u012c\u0097\2\u05d5\u05d4\3\2\2\2\u05d6") - buf.write(u"\u05d9\3\2\2\2\u05d7\u05d5\3\2\2\2\u05d7\u05d8\3\2\2") - buf.write(u"\2\u05d8\u05da\3\2\2\2\u05d9\u05d7\3\2\2\2\u05da\u05db") - buf.write(u"\7\4\2\2\u05db\u05dc\7\7\2\2\u05dc\u0135\3\2\2\2\u05dd") - buf.write(u"\u05de\7q\2\2\u05de\u05df\7\6\2\2\u05df\u05e3\7\3\2\2") - buf.write(u"\u05e0\u05e2\5\u012c\u0097\2\u05e1\u05e0\3\2\2\2\u05e2") - buf.write(u"\u05e5\3\2\2\2\u05e3\u05e1\3\2\2\2\u05e3\u05e4\3\2\2") - buf.write(u"\2\u05e4\u05e6\3\2\2\2\u05e5\u05e3\3\2\2\2\u05e6\u05e7") - buf.write(u"\7\4\2\2\u05e7\u05e8\7\7\2\2\u05e8\u0137\3\2\2\2\u05e9") - buf.write(u"\u05ea\7r\2\2\u05ea\u05eb\7\6\2\2\u05eb\u05ec\7\u0080") - buf.write(u"\2\2\u05ec\u05ed\7\7\2\2\u05ed\u0139\3\2\2\2\u05ee\u05ef") - buf.write(u"\7s\2\2\u05ef\u05f0\7\6\2\2\u05f0\u05f1\7\u0082\2\2\u05f1") - buf.write(u"\u05f2\7\7\2\2\u05f2\u013b\3\2\2\2\u05f3\u05f4\7t\2\2") - buf.write(u"\u05f4\u05f5\7\6\2\2\u05f5\u05f6\5\u013e\u00a0\2\u05f6") - buf.write(u"\u05f7\7\7\2\2\u05f7\u013d\3\2\2\2\u05f8\u05f9\t\3\2") - buf.write(u"\2\u05f9\u013f\3\2\2\2a\u015e\u0162\u0165\u016b\u016e") - buf.write(u"\u0172\u0175\u0178\u017c\u017f\u0184\u0187\u018a\u0197") - buf.write(u"\u019c\u01a1\u01a6\u01ab\u01b0\u01b5\u01ba\u01bf\u01c4") - buf.write(u"\u01c9\u01ce\u01d3\u01d8\u01dd\u01e2\u01e7\u01ec\u01f1") - buf.write(u"\u01f6\u01fb\u020f\u0228\u0233\u0236\u0239\u023c\u023f") - buf.write(u"\u0242\u0245\u0248\u024b\u024e\u0251\u0266\u0269\u026c") - buf.write(u"\u0270\u0273\u028c\u028f\u02a3\u02a6\u02aa\u02cd\u02d1") - buf.write(u"\u02d4\u02db\u02ef\u02f2\u02ff\u030a\u0318\u03ac\u03fa") - buf.write(u"\u042d\u0438\u0442\u047d\u0480\u0483\u0486\u0489\u048c") - buf.write(u"\u048f\u0492\u0495\u04c3\u04cd\u04d0\u04d3\u04d6\u04d9") - buf.write(u"\u04dc\u04df\u052c\u057a\u058d\u05ba\u05c0\u05d7\u05e3") + buf.write("\3\u608b\ua72a\u8133\ub9ed\u417c\u3be7\u7786\u5964\3\u0086") + buf.write("\u05fb\4\2\t\2\4\3\t\3\4\4\t\4\4\5\t\5\4\6\t\6\4\7\t\7") + buf.write("\4\b\t\b\4\t\t\t\4\n\t\n\4\13\t\13\4\f\t\f\4\r\t\r\4\16") + buf.write("\t\16\4\17\t\17\4\20\t\20\4\21\t\21\4\22\t\22\4\23\t\23") + buf.write("\4\24\t\24\4\25\t\25\4\26\t\26\4\27\t\27\4\30\t\30\4\31") + buf.write("\t\31\4\32\t\32\4\33\t\33\4\34\t\34\4\35\t\35\4\36\t\36") + buf.write("\4\37\t\37\4 \t \4!\t!\4\"\t\"\4#\t#\4$\t$\4%\t%\4&\t") + buf.write("&\4\'\t\'\4(\t(\4)\t)\4*\t*\4+\t+\4,\t,\4-\t-\4.\t.\4") + buf.write("/\t/\4\60\t\60\4\61\t\61\4\62\t\62\4\63\t\63\4\64\t\64") + buf.write("\4\65\t\65\4\66\t\66\4\67\t\67\48\t8\49\t9\4:\t:\4;\t") + buf.write(";\4<\t<\4=\t=\4>\t>\4?\t?\4@\t@\4A\tA\4B\tB\4C\tC\4D\t") + buf.write("D\4E\tE\4F\tF\4G\tG\4H\tH\4I\tI\4J\tJ\4K\tK\4L\tL\4M\t") + buf.write("M\4N\tN\4O\tO\4P\tP\4Q\tQ\4R\tR\4S\tS\4T\tT\4U\tU\4V\t") + buf.write("V\4W\tW\4X\tX\4Y\tY\4Z\tZ\4[\t[\4\\\t\\\4]\t]\4^\t^\4") + buf.write("_\t_\4`\t`\4a\ta\4b\tb\4c\tc\4d\td\4e\te\4f\tf\4g\tg\4") + buf.write("h\th\4i\ti\4j\tj\4k\tk\4l\tl\4m\tm\4n\tn\4o\to\4p\tp\4") + buf.write("q\tq\4r\tr\4s\ts\4t\tt\4u\tu\4v\tv\4w\tw\4x\tx\4y\ty\4") + buf.write("z\tz\4{\t{\4|\t|\4}\t}\4~\t~\4\177\t\177\4\u0080\t\u0080") + buf.write("\4\u0081\t\u0081\4\u0082\t\u0082\4\u0083\t\u0083\4\u0084") + buf.write("\t\u0084\4\u0085\t\u0085\4\u0086\t\u0086\4\u0087\t\u0087") + buf.write("\4\u0088\t\u0088\4\u0089\t\u0089\4\u008a\t\u008a\4\u008b") + buf.write("\t\u008b\4\u008c\t\u008c\4\u008d\t\u008d\4\u008e\t\u008e") + buf.write("\4\u008f\t\u008f\4\u0090\t\u0090\4\u0091\t\u0091\4\u0092") + buf.write("\t\u0092\4\u0093\t\u0093\4\u0094\t\u0094\4\u0095\t\u0095") + buf.write("\4\u0096\t\u0096\4\u0097\t\u0097\4\u0098\t\u0098\4\u0099") + buf.write("\t\u0099\4\u009a\t\u009a\4\u009b\t\u009b\4\u009c\t\u009c") + buf.write("\4\u009d\t\u009d\4\u009e\t\u009e\4\u009f\t\u009f\4\u00a0") + buf.write("\t\u00a0\3\2\3\2\3\3\3\3\3\3\3\3\3\3\3\3\3\3\3\3\3\4\3") + buf.write("\4\3\4\3\4\3\4\3\5\3\5\3\5\3\5\3\5\3\5\3\6\3\6\3\6\3\6") + buf.write("\3\6\3\7\3\7\3\7\3\7\5\7\u015f\n\7\3\7\3\7\5\7\u0163\n") + buf.write("\7\3\7\5\7\u0166\n\7\3\7\3\7\3\7\3\7\5\7\u016c\n\7\3\7") + buf.write("\5\7\u016f\n\7\3\7\3\7\5\7\u0173\n\7\3\7\5\7\u0176\n\7") + buf.write("\3\7\5\7\u0179\n\7\3\7\3\7\5\7\u017d\n\7\3\7\5\7\u0180") + buf.write("\n\7\3\7\3\7\3\7\5\7\u0185\n\7\3\7\5\7\u0188\n\7\3\7\5") + buf.write("\7\u018b\n\7\3\7\3\7\3\7\3\b\3\b\3\b\3\b\3\b\3\t\6\t\u0196") + buf.write("\n\t\r\t\16\t\u0197\3\n\6\n\u019b\n\n\r\n\16\n\u019c\3") + buf.write("\13\6\13\u01a0\n\13\r\13\16\13\u01a1\3\f\6\f\u01a5\n\f") + buf.write("\r\f\16\f\u01a6\3\r\6\r\u01aa\n\r\r\r\16\r\u01ab\3\16") + buf.write("\6\16\u01af\n\16\r\16\16\16\u01b0\3\17\6\17\u01b4\n\17") + buf.write("\r\17\16\17\u01b5\3\20\6\20\u01b9\n\20\r\20\16\20\u01ba") + buf.write("\3\21\6\21\u01be\n\21\r\21\16\21\u01bf\3\22\6\22\u01c3") + buf.write("\n\22\r\22\16\22\u01c4\3\23\6\23\u01c8\n\23\r\23\16\23") + buf.write("\u01c9\3\24\6\24\u01cd\n\24\r\24\16\24\u01ce\3\25\6\25") + buf.write("\u01d2\n\25\r\25\16\25\u01d3\3\26\6\26\u01d7\n\26\r\26") + buf.write("\16\26\u01d8\3\27\6\27\u01dc\n\27\r\27\16\27\u01dd\3\30") + buf.write("\6\30\u01e1\n\30\r\30\16\30\u01e2\3\31\6\31\u01e6\n\31") + buf.write("\r\31\16\31\u01e7\3\32\6\32\u01eb\n\32\r\32\16\32\u01ec") + buf.write("\3\33\6\33\u01f0\n\33\r\33\16\33\u01f1\3\34\6\34\u01f5") + buf.write("\n\34\r\34\16\34\u01f6\3\35\6\35\u01fa\n\35\r\35\16\35") + buf.write("\u01fb\3\36\3\36\3\36\3\36\3\36\3\36\3\36\3\36\3\36\3") + buf.write("\36\3\36\3\36\3\37\3\37\3\37\3\37\3\37\3\37\5\37\u0210") + buf.write("\n\37\3\37\3\37\3\37\3 \3 \3 \3 \3 \3 \3 \3 \3 \3 \3 ") + buf.write("\3!\3!\3!\3!\3!\3!\3!\3!\3!\5!\u0229\n!\3!\3!\3!\3!\3") + buf.write("\"\3\"\3\"\3\"\3\"\5\"\u0234\n\"\3\"\5\"\u0237\n\"\3\"") + buf.write("\5\"\u023a\n\"\3\"\5\"\u023d\n\"\3\"\5\"\u0240\n\"\3\"") + buf.write("\5\"\u0243\n\"\3\"\5\"\u0246\n\"\3\"\5\"\u0249\n\"\3\"") + buf.write("\5\"\u024c\n\"\3\"\5\"\u024f\n\"\3\"\5\"\u0252\n\"\3\"") + buf.write("\3\"\3\"\3#\3#\3#\3#\3#\3#\3#\3#\3#\3#\3$\3$\3$\3$\3$") + buf.write("\3$\5$\u0267\n$\3$\5$\u026a\n$\3$\5$\u026d\n$\3$\3$\5") + buf.write("$\u0271\n$\3$\5$\u0274\n$\3$\3$\3$\3%\3%\3%\3%\3%\3%\3") + buf.write("%\3%\3%\3%\3&\3&\3&\3&\3&\3&\3&\3&\3&\3&\5&\u028d\n&\3") + buf.write("&\5&\u0290\n&\3&\3&\3&\3&\3&\3&\3\'\3\'\3\'\3\'\3\'\3") + buf.write("\'\3\'\3\'\3\'\3\'\3\'\3\'\5\'\u02a4\n\'\3\'\5\'\u02a7") + buf.write("\n\'\3\'\3\'\5\'\u02ab\n\'\3\'\3\'\3\'\3\'\3\'\3(\3(\3") + buf.write("(\3(\3(\3(\3(\3(\3(\3(\3(\3)\3)\3)\3)\3)\3)\3)\3)\3)\3") + buf.write(")\3*\3*\3*\3*\3*\3*\3*\5*\u02ce\n*\3*\3*\5*\u02d2\n*\3") + buf.write("*\5*\u02d5\n*\3*\3*\3*\3*\3*\5*\u02dc\n*\3*\3*\3*\3+\3") + buf.write("+\3+\3+\3+\3+\3+\3+\3+\3+\3,\3,\3,\3,\3,\5,\u02f0\n,\3") + buf.write(",\5,\u02f3\n,\3,\3,\3,\3,\3-\3-\3-\3-\3-\3-\3-\5-\u0300") + buf.write("\n-\3-\3-\3-\3-\3.\3.\3.\3.\3.\5.\u030b\n.\3.\3.\3.\3") + buf.write(".\3.\3/\3/\3/\3/\3/\3/\3/\5/\u0319\n/\3/\3/\3/\3\60\3") + buf.write("\60\3\60\3\60\3\60\3\60\3\60\3\60\3\60\3\61\3\61\3\61") + buf.write("\3\61\3\61\3\61\3\61\3\61\3\61\3\62\3\62\3\62\3\62\3\62") + buf.write("\3\62\3\62\3\62\3\62\3\62\3\62\3\62\3\63\3\63\3\63\3\63") + buf.write("\3\63\3\64\3\64\3\64\3\64\3\64\3\65\3\65\3\65\3\65\3\65") + buf.write("\3\66\3\66\3\66\3\66\3\66\3\67\3\67\3\67\3\67\3\67\38") + buf.write("\38\38\38\38\39\39\39\39\39\3:\3:\3:\3:\3:\3;\3;\3;\3") + buf.write(";\3;\3<\3<\3<\3<\3<\3=\3=\3=\3=\3=\3>\3>\3>\3>\3>\3?\3") + buf.write("?\3?\3?\3?\3@\3@\3@\3@\3@\3A\3A\3A\3A\3A\3B\3B\3B\3B\3") + buf.write("B\3C\3C\3C\3C\3C\3D\3D\3D\3D\3D\3E\3E\3E\3E\3E\3F\3F\3") + buf.write("F\3F\3F\3G\3G\3G\3G\3G\3H\3H\3H\3H\3H\3H\3H\3H\5H\u03ad") + buf.write("\nH\3I\3I\3I\3I\3I\3J\3J\3J\3J\3J\3K\3K\3K\3K\3K\3L\3") + buf.write("L\3L\3L\3L\3M\3M\3M\3M\3M\3N\3N\3N\3N\3N\3O\3O\3O\3O\3") + buf.write("O\3P\3P\3P\3P\3P\3Q\3Q\3Q\3Q\3Q\3R\3R\3R\3R\3R\3S\3S\3") + buf.write("S\3S\3S\3T\3T\3T\3T\3T\3U\3U\3U\3U\3U\3V\3V\3V\3V\3V\3") + buf.write("W\3W\3W\3W\7W\u03f9\nW\fW\16W\u03fc\13W\3W\3W\3W\3X\3") + buf.write("X\3X\3X\3X\3Y\3Y\3Y\3Y\3Y\3Z\3Z\3Z\3Z\3Z\3[\3[\3[\3[\3") + buf.write("[\3\\\3\\\3\\\3\\\3\\\3]\3]\3]\3]\3]\3^\3^\3^\3^\3^\3") + buf.write("_\3_\3_\3_\3_\3`\3`\3`\7`\u042c\n`\f`\16`\u042f\13`\3") + buf.write("`\3`\3a\3a\3a\3a\7a\u0437\na\fa\16a\u043a\13a\3a\3a\3") + buf.write("b\3b\3b\7b\u0441\nb\fb\16b\u0444\13b\3b\3b\3c\3c\3c\3") + buf.write("c\3c\3d\3d\3d\3d\3d\3e\3e\3e\3e\3e\3f\3f\3f\3f\3f\3g\3") + buf.write("g\3g\3g\3g\3h\3h\3h\3h\3h\3i\3i\3i\3i\3i\3j\3j\3j\3j\3") + buf.write("j\3k\3k\3k\3k\3k\3l\3l\3l\3l\3l\3m\3m\3m\3m\5m\u047e\n") + buf.write("m\3m\5m\u0481\nm\3m\5m\u0484\nm\3m\5m\u0487\nm\3m\5m\u048a") + buf.write("\nm\3m\5m\u048d\nm\3m\5m\u0490\nm\3m\5m\u0493\nm\3m\5") + buf.write("m\u0496\nm\3m\3m\3m\3n\3n\3n\3n\3n\3o\3o\3o\3o\3o\3p\3") + buf.write("p\3p\3p\3p\3q\3q\3q\3q\3q\3r\3r\3r\3r\3r\3s\3s\3s\3s\3") + buf.write("s\3t\3t\3t\3t\3t\3u\3u\3u\3u\7u\u04c2\nu\fu\16u\u04c5") + buf.write("\13u\3u\3u\3u\3v\3v\3v\3v\5v\u04ce\nv\3v\5v\u04d1\nv\3") + buf.write("v\5v\u04d4\nv\3v\5v\u04d7\nv\3v\5v\u04da\nv\3v\5v\u04dd") + buf.write("\nv\3v\5v\u04e0\nv\3v\3v\3v\3w\3w\3w\3w\3w\3x\3x\3x\3") + buf.write("x\3x\3y\3y\3y\3y\3y\3z\3z\3z\3z\3z\3{\3{\3{\3{\3{\3|\3") + buf.write("|\3|\3|\3|\3}\3}\3}\3}\3}\3~\3~\3~\3~\3~\3\177\3\177\3") + buf.write("\177\3\177\3\177\3\u0080\3\u0080\3\u0080\3\u0080\3\u0080") + buf.write("\3\u0081\3\u0081\3\u0081\3\u0081\3\u0081\3\u0082\3\u0082") + buf.write("\3\u0082\3\u0082\3\u0082\3\u0083\3\u0083\3\u0083\3\u0083") + buf.write("\3\u0083\3\u0083\3\u0083\3\u0083\3\u0083\3\u0083\3\u0083") + buf.write("\3\u0083\5\u0083\u052d\n\u0083\3\u0084\3\u0084\3\u0084") + buf.write("\3\u0084\3\u0084\3\u0085\3\u0085\3\u0085\3\u0085\3\u0085") + buf.write("\3\u0086\3\u0086\3\u0086\3\u0086\3\u0086\3\u0087\3\u0087") + buf.write("\3\u0087\3\u0087\3\u0087\3\u0088\3\u0088\3\u0088\3\u0088") + buf.write("\3\u0088\3\u0089\3\u0089\3\u0089\3\u0089\3\u0089\3\u008a") + buf.write("\3\u008a\3\u008a\3\u008a\3\u008a\3\u008b\3\u008b\3\u008b") + buf.write("\3\u008b\3\u008b\3\u008c\3\u008c\3\u008c\3\u008c\3\u008c") + buf.write("\3\u008d\3\u008d\3\u008d\3\u008d\3\u008d\3\u008e\3\u008e") + buf.write("\3\u008e\3\u008e\3\u008e\3\u008f\3\u008f\3\u008f\3\u008f") + buf.write("\3\u008f\3\u0090\3\u0090\3\u0090\3\u0090\3\u0090\3\u0091") + buf.write("\3\u0091\3\u0091\3\u0091\3\u0091\3\u0092\3\u0092\3\u0092") + buf.write("\3\u0092\7\u0092\u0579\n\u0092\f\u0092\16\u0092\u057c") + buf.write("\13\u0092\3\u0092\3\u0092\3\u0092\3\u0093\3\u0093\3\u0093") + buf.write("\3\u0093\3\u0093\3\u0094\3\u0094\3\u0094\3\u0094\3\u0094") + buf.write("\3\u0095\7\u0095\u058c\n\u0095\f\u0095\16\u0095\u058f") + buf.write("\13\u0095\3\u0096\3\u0096\3\u0096\3\u0096\3\u0096\3\u0096") + buf.write("\3\u0096\3\u0096\3\u0096\3\u0096\3\u0096\3\u0096\3\u0097") + buf.write("\3\u0097\3\u0097\3\u0097\3\u0097\3\u0097\3\u0097\3\u0097") + buf.write("\3\u0097\3\u0097\3\u0097\3\u0097\3\u0097\3\u0097\3\u0097") + buf.write("\3\u0097\3\u0097\3\u0097\3\u0097\3\u0097\3\u0097\3\u0097") + buf.write("\3\u0097\3\u0097\3\u0097\3\u0097\3\u0097\3\u0097\7\u0097") + buf.write("\u05b9\n\u0097\f\u0097\16\u0097\u05bc\13\u0097\3\u0097") + buf.write("\3\u0097\3\u0097\5\u0097\u05c1\n\u0097\3\u0098\3\u0098") + buf.write("\3\u0098\3\u0098\3\u0098\3\u0099\3\u0099\3\u0099\3\u0099") + buf.write("\3\u0099\3\u009a\3\u009a\3\u009a\3\u009a\3\u009a\3\u009b") + buf.write("\3\u009b\3\u009b\3\u009b\7\u009b\u05d6\n\u009b\f\u009b") + buf.write("\16\u009b\u05d9\13\u009b\3\u009b\3\u009b\3\u009b\3\u009c") + buf.write("\3\u009c\3\u009c\3\u009c\7\u009c\u05e2\n\u009c\f\u009c") + buf.write("\16\u009c\u05e5\13\u009c\3\u009c\3\u009c\3\u009c\3\u009d") + buf.write("\3\u009d\3\u009d\3\u009d\3\u009d\3\u009e\3\u009e\3\u009e") + buf.write("\3\u009e\3\u009e\3\u009f\3\u009f\3\u009f\3\u009f\3\u009f") + buf.write("\3\u00a0\3\u00a0\3\u00a0\2\2\u00a1\2\4\6\b\n\f\16\20\22") + buf.write("\24\26\30\32\34\36 \"$&(*,.\60\62\64\668:<>@BDFHJLNPR") + buf.write("TVXZ\\^`bdfhjlnprtvxz|~\u0080\u0082\u0084\u0086\u0088") + buf.write("\u008a\u008c\u008e\u0090\u0092\u0094\u0096\u0098\u009a") + buf.write("\u009c\u009e\u00a0\u00a2\u00a4\u00a6\u00a8\u00aa\u00ac") + buf.write("\u00ae\u00b0\u00b2\u00b4\u00b6\u00b8\u00ba\u00bc\u00be") + buf.write("\u00c0\u00c2\u00c4\u00c6\u00c8\u00ca\u00cc\u00ce\u00d0") + buf.write("\u00d2\u00d4\u00d6\u00d8\u00da\u00dc\u00de\u00e0\u00e2") + buf.write("\u00e4\u00e6\u00e8\u00ea\u00ec\u00ee\u00f0\u00f2\u00f4") + buf.write("\u00f6\u00f8\u00fa\u00fc\u00fe\u0100\u0102\u0104\u0106") + buf.write("\u0108\u010a\u010c\u010e\u0110\u0112\u0114\u0116\u0118") + buf.write("\u011a\u011c\u011e\u0120\u0122\u0124\u0126\u0128\u012a") + buf.write("\u012c\u012e\u0130\u0132\u0134\u0136\u0138\u013a\u013c") + buf.write("\u013e\2\4\3\2\u0081\u0082\4\2yy\u0081\u0083\2\u05bd\2") + buf.write("\u0140\3\2\2\2\4\u0142\3\2\2\2\6\u014a\3\2\2\2\b\u014f") + buf.write("\3\2\2\2\n\u0155\3\2\2\2\f\u015a\3\2\2\2\16\u018f\3\2") + buf.write("\2\2\20\u0195\3\2\2\2\22\u019a\3\2\2\2\24\u019f\3\2\2") + buf.write("\2\26\u01a4\3\2\2\2\30\u01a9\3\2\2\2\32\u01ae\3\2\2\2") + buf.write("\34\u01b3\3\2\2\2\36\u01b8\3\2\2\2 \u01bd\3\2\2\2\"\u01c2") + buf.write("\3\2\2\2$\u01c7\3\2\2\2&\u01cc\3\2\2\2(\u01d1\3\2\2\2") + buf.write("*\u01d6\3\2\2\2,\u01db\3\2\2\2.\u01e0\3\2\2\2\60\u01e5") + buf.write("\3\2\2\2\62\u01ea\3\2\2\2\64\u01ef\3\2\2\2\66\u01f4\3") + buf.write("\2\2\28\u01f9\3\2\2\2:\u01fd\3\2\2\2<\u0209\3\2\2\2>\u0214") + buf.write("\3\2\2\2@\u021f\3\2\2\2B\u022e\3\2\2\2D\u0256\3\2\2\2") + buf.write("F\u0260\3\2\2\2H\u0278\3\2\2\2J\u0282\3\2\2\2L\u0297\3") + buf.write("\2\2\2N\u02b1\3\2\2\2P\u02bc\3\2\2\2R\u02c6\3\2\2\2T\u02e0") + buf.write("\3\2\2\2V\u02ea\3\2\2\2X\u02f8\3\2\2\2Z\u0305\3\2\2\2") + buf.write("\\\u0311\3\2\2\2^\u031d\3\2\2\2`\u0326\3\2\2\2b\u032f") + buf.write("\3\2\2\2d\u033b\3\2\2\2f\u0340\3\2\2\2h\u0345\3\2\2\2") + buf.write("j\u034a\3\2\2\2l\u034f\3\2\2\2n\u0354\3\2\2\2p\u0359\3") + buf.write("\2\2\2r\u035e\3\2\2\2t\u0363\3\2\2\2v\u0368\3\2\2\2x\u036d") + buf.write("\3\2\2\2z\u0372\3\2\2\2|\u0377\3\2\2\2~\u037c\3\2\2\2") + buf.write("\u0080\u0381\3\2\2\2\u0082\u0386\3\2\2\2\u0084\u038b\3") + buf.write("\2\2\2\u0086\u0390\3\2\2\2\u0088\u0395\3\2\2\2\u008a\u039a") + buf.write("\3\2\2\2\u008c\u039f\3\2\2\2\u008e\u03ac\3\2\2\2\u0090") + buf.write("\u03ae\3\2\2\2\u0092\u03b3\3\2\2\2\u0094\u03b8\3\2\2\2") + buf.write("\u0096\u03bd\3\2\2\2\u0098\u03c2\3\2\2\2\u009a\u03c7\3") + buf.write("\2\2\2\u009c\u03cc\3\2\2\2\u009e\u03d1\3\2\2\2\u00a0\u03d6") + buf.write("\3\2\2\2\u00a2\u03db\3\2\2\2\u00a4\u03e0\3\2\2\2\u00a6") + buf.write("\u03e5\3\2\2\2\u00a8\u03ea\3\2\2\2\u00aa\u03ef\3\2\2\2") + buf.write("\u00ac\u03f4\3\2\2\2\u00ae\u0400\3\2\2\2\u00b0\u0405\3") + buf.write("\2\2\2\u00b2\u040a\3\2\2\2\u00b4\u040f\3\2\2\2\u00b6\u0414") + buf.write("\3\2\2\2\u00b8\u0419\3\2\2\2\u00ba\u041e\3\2\2\2\u00bc") + buf.write("\u0423\3\2\2\2\u00be\u0428\3\2\2\2\u00c0\u0432\3\2\2\2") + buf.write("\u00c2\u043d\3\2\2\2\u00c4\u0447\3\2\2\2\u00c6\u044c\3") + buf.write("\2\2\2\u00c8\u0451\3\2\2\2\u00ca\u0456\3\2\2\2\u00cc\u045b") + buf.write("\3\2\2\2\u00ce\u0460\3\2\2\2\u00d0\u0465\3\2\2\2\u00d2") + buf.write("\u046a\3\2\2\2\u00d4\u046f\3\2\2\2\u00d6\u0474\3\2\2\2") + buf.write("\u00d8\u0479\3\2\2\2\u00da\u049a\3\2\2\2\u00dc\u049f\3") + buf.write("\2\2\2\u00de\u04a4\3\2\2\2\u00e0\u04a9\3\2\2\2\u00e2\u04ae") + buf.write("\3\2\2\2\u00e4\u04b3\3\2\2\2\u00e6\u04b8\3\2\2\2\u00e8") + buf.write("\u04bd\3\2\2\2\u00ea\u04c9\3\2\2\2\u00ec\u04e4\3\2\2\2") + buf.write("\u00ee\u04e9\3\2\2\2\u00f0\u04ee\3\2\2\2\u00f2\u04f3\3") + buf.write("\2\2\2\u00f4\u04f8\3\2\2\2\u00f6\u04fd\3\2\2\2\u00f8\u0502") + buf.write("\3\2\2\2\u00fa\u0507\3\2\2\2\u00fc\u050c\3\2\2\2\u00fe") + buf.write("\u0511\3\2\2\2\u0100\u0516\3\2\2\2\u0102\u051b\3\2\2\2") + buf.write("\u0104\u052c\3\2\2\2\u0106\u052e\3\2\2\2\u0108\u0533\3") + buf.write("\2\2\2\u010a\u0538\3\2\2\2\u010c\u053d\3\2\2\2\u010e\u0542") + buf.write("\3\2\2\2\u0110\u0547\3\2\2\2\u0112\u054c\3\2\2\2\u0114") + buf.write("\u0551\3\2\2\2\u0116\u0556\3\2\2\2\u0118\u055b\3\2\2\2") + buf.write("\u011a\u0560\3\2\2\2\u011c\u0565\3\2\2\2\u011e\u056a\3") + buf.write("\2\2\2\u0120\u056f\3\2\2\2\u0122\u0574\3\2\2\2\u0124\u0580") + buf.write("\3\2\2\2\u0126\u0585\3\2\2\2\u0128\u058d\3\2\2\2\u012a") + buf.write("\u0590\3\2\2\2\u012c\u05c0\3\2\2\2\u012e\u05c2\3\2\2\2") + buf.write("\u0130\u05c7\3\2\2\2\u0132\u05cc\3\2\2\2\u0134\u05d1\3") + buf.write("\2\2\2\u0136\u05dd\3\2\2\2\u0138\u05e9\3\2\2\2\u013a\u05ee") + buf.write("\3\2\2\2\u013c\u05f3\3\2\2\2\u013e\u05f8\3\2\2\2\u0140") + buf.write("\u0141\5\4\3\2\u0141\3\3\2\2\2\u0142\u0143\7\3\2\2\u0143") + buf.write("\u0144\5\6\4\2\u0144\u0145\5\b\5\2\u0145\u0146\5\n\6\2") + buf.write("\u0146\u0147\5\f\7\2\u0147\u0148\5\16\b\2\u0148\u0149") + buf.write("\7\4\2\2\u0149\5\3\2\2\2\u014a\u014b\7\5\2\2\u014b\u014c") + buf.write("\7\6\2\2\u014c\u014d\7y\2\2\u014d\u014e\7\7\2\2\u014e") + buf.write("\7\3\2\2\2\u014f\u0150\7u\2\2\u0150\u0151\7\6\2\2\u0151") + buf.write("\u0152\7\3\2\2\u0152\u0153\7\4\2\2\u0153\u0154\7\7\2\2") + buf.write("\u0154\t\3\2\2\2\u0155\u0156\7\b\2\2\u0156\u0157\7\6\2") + buf.write("\2\u0157\u0158\7y\2\2\u0158\u0159\7\7\2\2\u0159\13\3\2") + buf.write("\2\2\u015a\u015b\7w\2\2\u015b\u015c\7\6\2\2\u015c\u015e") + buf.write("\7\3\2\2\u015d\u015f\5\20\t\2\u015e\u015d\3\2\2\2\u015e") + buf.write("\u015f\3\2\2\2\u015f\u0160\3\2\2\2\u0160\u0162\5\22\n") + buf.write("\2\u0161\u0163\5\24\13\2\u0162\u0161\3\2\2\2\u0162\u0163") + buf.write("\3\2\2\2\u0163\u0165\3\2\2\2\u0164\u0166\5\26\f\2\u0165") + buf.write("\u0164\3\2\2\2\u0165\u0166\3\2\2\2\u0166\u0167\3\2\2\2") + buf.write("\u0167\u0168\5\30\r\2\u0168\u0169\5\32\16\2\u0169\u016b") + buf.write("\5\34\17\2\u016a\u016c\5\36\20\2\u016b\u016a\3\2\2\2\u016b") + buf.write("\u016c\3\2\2\2\u016c\u016e\3\2\2\2\u016d\u016f\5 \21\2") + buf.write("\u016e\u016d\3\2\2\2\u016e\u016f\3\2\2\2\u016f\u0170\3") + buf.write("\2\2\2\u0170\u0172\5\"\22\2\u0171\u0173\5$\23\2\u0172") + buf.write("\u0171\3\2\2\2\u0172\u0173\3\2\2\2\u0173\u0175\3\2\2\2") + buf.write("\u0174\u0176\5&\24\2\u0175\u0174\3\2\2\2\u0175\u0176\3") + buf.write("\2\2\2\u0176\u0178\3\2\2\2\u0177\u0179\5(\25\2\u0178\u0177") + buf.write("\3\2\2\2\u0178\u0179\3\2\2\2\u0179\u017a\3\2\2\2\u017a") + buf.write("\u017c\5*\26\2\u017b\u017d\5,\27\2\u017c\u017b\3\2\2\2") + buf.write("\u017c\u017d\3\2\2\2\u017d\u017f\3\2\2\2\u017e\u0180\5") + buf.write(".\30\2\u017f\u017e\3\2\2\2\u017f\u0180\3\2\2\2\u0180\u0181") + buf.write("\3\2\2\2\u0181\u0182\5\60\31\2\u0182\u0184\5\62\32\2\u0183") + buf.write("\u0185\5\64\33\2\u0184\u0183\3\2\2\2\u0184\u0185\3\2\2") + buf.write("\2\u0185\u0187\3\2\2\2\u0186\u0188\5\66\34\2\u0187\u0186") + buf.write("\3\2\2\2\u0187\u0188\3\2\2\2\u0188\u018a\3\2\2\2\u0189") + buf.write("\u018b\58\35\2\u018a\u0189\3\2\2\2\u018a\u018b\3\2\2\2") + buf.write("\u018b\u018c\3\2\2\2\u018c\u018d\7\4\2\2\u018d\u018e\7") + buf.write("\7\2\2\u018e\r\3\2\2\2\u018f\u0190\7x\2\2\u0190\u0191") + buf.write("\7\6\2\2\u0191\u0192\7\u0080\2\2\u0192\u0193\7\7\2\2\u0193") + buf.write("\17\3\2\2\2\u0194\u0196\5:\36\2\u0195\u0194\3\2\2\2\u0196") + buf.write("\u0197\3\2\2\2\u0197\u0195\3\2\2\2\u0197\u0198\3\2\2\2") + buf.write("\u0198\21\3\2\2\2\u0199\u019b\5<\37\2\u019a\u0199\3\2") + buf.write("\2\2\u019b\u019c\3\2\2\2\u019c\u019a\3\2\2\2\u019c\u019d") + buf.write("\3\2\2\2\u019d\23\3\2\2\2\u019e\u01a0\5> \2\u019f\u019e") + buf.write("\3\2\2\2\u01a0\u01a1\3\2\2\2\u01a1\u019f\3\2\2\2\u01a1") + buf.write("\u01a2\3\2\2\2\u01a2\25\3\2\2\2\u01a3\u01a5\5@!\2\u01a4") + buf.write("\u01a3\3\2\2\2\u01a5\u01a6\3\2\2\2\u01a6\u01a4\3\2\2\2") + buf.write("\u01a6\u01a7\3\2\2\2\u01a7\27\3\2\2\2\u01a8\u01aa\5B\"") + buf.write("\2\u01a9\u01a8\3\2\2\2\u01aa\u01ab\3\2\2\2\u01ab\u01a9") + buf.write("\3\2\2\2\u01ab\u01ac\3\2\2\2\u01ac\31\3\2\2\2\u01ad\u01af") + buf.write("\5D#\2\u01ae\u01ad\3\2\2\2\u01af\u01b0\3\2\2\2\u01b0\u01ae") + buf.write("\3\2\2\2\u01b0\u01b1\3\2\2\2\u01b1\33\3\2\2\2\u01b2\u01b4") + buf.write("\5F$\2\u01b3\u01b2\3\2\2\2\u01b4\u01b5\3\2\2\2\u01b5\u01b3") + buf.write("\3\2\2\2\u01b5\u01b6\3\2\2\2\u01b6\35\3\2\2\2\u01b7\u01b9") + buf.write("\5H%\2\u01b8\u01b7\3\2\2\2\u01b9\u01ba\3\2\2\2\u01ba\u01b8") + buf.write("\3\2\2\2\u01ba\u01bb\3\2\2\2\u01bb\37\3\2\2\2\u01bc\u01be") + buf.write("\5J&\2\u01bd\u01bc\3\2\2\2\u01be\u01bf\3\2\2\2\u01bf\u01bd") + buf.write("\3\2\2\2\u01bf\u01c0\3\2\2\2\u01c0!\3\2\2\2\u01c1\u01c3") + buf.write("\5L\'\2\u01c2\u01c1\3\2\2\2\u01c3\u01c4\3\2\2\2\u01c4") + buf.write("\u01c2\3\2\2\2\u01c4\u01c5\3\2\2\2\u01c5#\3\2\2\2\u01c6") + buf.write("\u01c8\5N(\2\u01c7\u01c6\3\2\2\2\u01c8\u01c9\3\2\2\2\u01c9") + buf.write("\u01c7\3\2\2\2\u01c9\u01ca\3\2\2\2\u01ca%\3\2\2\2\u01cb") + buf.write("\u01cd\5P)\2\u01cc\u01cb\3\2\2\2\u01cd\u01ce\3\2\2\2\u01ce") + buf.write("\u01cc\3\2\2\2\u01ce\u01cf\3\2\2\2\u01cf\'\3\2\2\2\u01d0") + buf.write("\u01d2\5R*\2\u01d1\u01d0\3\2\2\2\u01d2\u01d3\3\2\2\2\u01d3") + buf.write("\u01d1\3\2\2\2\u01d3\u01d4\3\2\2\2\u01d4)\3\2\2\2\u01d5") + buf.write("\u01d7\5T+\2\u01d6\u01d5\3\2\2\2\u01d7\u01d8\3\2\2\2\u01d8") + buf.write("\u01d6\3\2\2\2\u01d8\u01d9\3\2\2\2\u01d9+\3\2\2\2\u01da") + buf.write("\u01dc\5V,\2\u01db\u01da\3\2\2\2\u01dc\u01dd\3\2\2\2\u01dd") + buf.write("\u01db\3\2\2\2\u01dd\u01de\3\2\2\2\u01de-\3\2\2\2\u01df") + buf.write("\u01e1\5X-\2\u01e0\u01df\3\2\2\2\u01e1\u01e2\3\2\2\2\u01e2") + buf.write("\u01e0\3\2\2\2\u01e2\u01e3\3\2\2\2\u01e3/\3\2\2\2\u01e4") + buf.write("\u01e6\5Z.\2\u01e5\u01e4\3\2\2\2\u01e6\u01e7\3\2\2\2\u01e7") + buf.write("\u01e5\3\2\2\2\u01e7\u01e8\3\2\2\2\u01e8\61\3\2\2\2\u01e9") + buf.write("\u01eb\5\\/\2\u01ea\u01e9\3\2\2\2\u01eb\u01ec\3\2\2\2") + buf.write("\u01ec\u01ea\3\2\2\2\u01ec\u01ed\3\2\2\2\u01ed\63\3\2") + buf.write("\2\2\u01ee\u01f0\5^\60\2\u01ef\u01ee\3\2\2\2\u01f0\u01f1") + buf.write("\3\2\2\2\u01f1\u01ef\3\2\2\2\u01f1\u01f2\3\2\2\2\u01f2") + buf.write("\65\3\2\2\2\u01f3\u01f5\5`\61\2\u01f4\u01f3\3\2\2\2\u01f5") + buf.write("\u01f6\3\2\2\2\u01f6\u01f4\3\2\2\2\u01f6\u01f7\3\2\2\2") + buf.write("\u01f7\67\3\2\2\2\u01f8\u01fa\5b\62\2\u01f9\u01f8\3\2") + buf.write("\2\2\u01fa\u01fb\3\2\2\2\u01fb\u01f9\3\2\2\2\u01fb\u01fc") + buf.write("\3\2\2\2\u01fc9\3\2\2\2\u01fd\u01fe\7\u0080\2\2\u01fe") + buf.write("\u01ff\7\6\2\2\u01ff\u0200\7\3\2\2\u0200\u0201\5d\63\2") + buf.write("\u0201\u0202\5\u00c4c\2\u0202\u0203\5\u00c6d\2\u0203\u0204") + buf.write("\5\u00caf\2\u0204\u0205\5\u00b2Z\2\u0205\u0206\5\u00cc") + buf.write("g\2\u0206\u0207\7\4\2\2\u0207\u0208\7\7\2\2\u0208;\3\2") + buf.write("\2\2\u0209\u020a\7\u0080\2\2\u020a\u020b\7\6\2\2\u020b") + buf.write("\u020c\7\3\2\2\u020c\u020d\5f\64\2\u020d\u020f\5\u008e") + buf.write("H\2\u020e\u0210\5\u0134\u009b\2\u020f\u020e\3\2\2\2\u020f") + buf.write("\u0210\3\2\2\2\u0210\u0211\3\2\2\2\u0211\u0212\7\4\2\2") + buf.write("\u0212\u0213\7\7\2\2\u0213=\3\2\2\2\u0214\u0215\7\u0080") + buf.write("\2\2\u0215\u0216\7\6\2\2\u0216\u0217\7\3\2\2\u0217\u0218") + buf.write("\5h\65\2\u0218\u0219\5\u0090I\2\u0219\u021a\5\u0092J\2") + buf.write("\u021a\u021b\5\u0094K\2\u021b\u021c\5\u0096L\2\u021c\u021d") + buf.write("\7\4\2\2\u021d\u021e\7\7\2\2\u021e?\3\2\2\2\u021f\u0220") + buf.write("\7\u0080\2\2\u0220\u0221\7\6\2\2\u0221\u0222\7\3\2\2\u0222") + buf.write("\u0223\5j\66\2\u0223\u0224\5\u00b8]\2\u0224\u0225\5\u0124") + buf.write("\u0093\2\u0225\u0226\5\u0126\u0094\2\u0226\u0228\5\u00ba") + buf.write("^\2\u0227\u0229\5\u00b2Z\2\u0228\u0227\3\2\2\2\u0228\u0229") + buf.write("\3\2\2\2\u0229\u022a\3\2\2\2\u022a\u022b\5\u00bc_\2\u022b") + buf.write("\u022c\7\4\2\2\u022c\u022d\7\7\2\2\u022dA\3\2\2\2\u022e") + buf.write("\u022f\7\u0080\2\2\u022f\u0230\7\6\2\2\u0230\u0231\7\3") + buf.write("\2\2\u0231\u0233\5l\67\2\u0232\u0234\5\u009aN\2\u0233") + buf.write("\u0232\3\2\2\2\u0233\u0234\3\2\2\2\u0234\u0236\3\2\2\2") + buf.write("\u0235\u0237\5\u0098M\2\u0236\u0235\3\2\2\2\u0236\u0237") + buf.write("\3\2\2\2\u0237\u0239\3\2\2\2\u0238\u023a\5\u009eP\2\u0239") + buf.write("\u0238\3\2\2\2\u0239\u023a\3\2\2\2\u023a\u023c\3\2\2\2") + buf.write("\u023b\u023d\5\u009cO\2\u023c\u023b\3\2\2\2\u023c\u023d") + buf.write("\3\2\2\2\u023d\u023f\3\2\2\2\u023e\u0240\5\u00d2j\2\u023f") + buf.write("\u023e\3\2\2\2\u023f\u0240\3\2\2\2\u0240\u0242\3\2\2\2") + buf.write("\u0241\u0243\5\u00b2Z\2\u0242\u0241\3\2\2\2\u0242\u0243") + buf.write("\3\2\2\2\u0243\u0245\3\2\2\2\u0244\u0246\5\u00b4[\2\u0245") + buf.write("\u0244\3\2\2\2\u0245\u0246\3\2\2\2\u0246\u0248\3\2\2\2") + buf.write("\u0247\u0249\5\u00d6l\2\u0248\u0247\3\2\2\2\u0248\u0249") + buf.write("\3\2\2\2\u0249\u024b\3\2\2\2\u024a\u024c\5\u00b6\\\2\u024b") + buf.write("\u024a\3\2\2\2\u024b\u024c\3\2\2\2\u024c\u024e\3\2\2\2") + buf.write("\u024d\u024f\5\u00d4k\2\u024e\u024d\3\2\2\2\u024e\u024f") + buf.write("\3\2\2\2\u024f\u0251\3\2\2\2\u0250\u0252\5\u00a4S\2\u0251") + buf.write("\u0250\3\2\2\2\u0251\u0252\3\2\2\2\u0252\u0253\3\2\2\2") + buf.write("\u0253\u0254\7\4\2\2\u0254\u0255\7\7\2\2\u0255C\3\2\2") + buf.write("\2\u0256\u0257\7\u0080\2\2\u0257\u0258\7\6\2\2\u0258\u0259") + buf.write("\7\3\2\2\u0259\u025a\5n8\2\u025a\u025b\5\u00b8]\2\u025b") + buf.write("\u025c\5\u00ba^\2\u025c\u025d\5\u00bc_\2\u025d\u025e\7") + buf.write("\4\2\2\u025e\u025f\7\7\2\2\u025fE\3\2\2\2\u0260\u0261") + buf.write("\7\u0080\2\2\u0261\u0262\7\6\2\2\u0262\u0263\7\3\2\2\u0263") + buf.write("\u0264\5p9\2\u0264\u0266\5\u00a6T\2\u0265\u0267\5\u00a0") + buf.write("Q\2\u0266\u0265\3\2\2\2\u0266\u0267\3\2\2\2\u0267\u0269") + buf.write("\3\2\2\2\u0268\u026a\5\u00b2Z\2\u0269\u0268\3\2\2\2\u0269") + buf.write("\u026a\3\2\2\2\u026a\u026c\3\2\2\2\u026b\u026d\5\u00b4") + buf.write("[\2\u026c\u026b\3\2\2\2\u026c\u026d\3\2\2\2\u026d\u026e") + buf.write("\3\2\2\2\u026e\u0270\5\u00b6\\\2\u026f\u0271\5\u00a2R") + buf.write("\2\u0270\u026f\3\2\2\2\u0270\u0271\3\2\2\2\u0271\u0273") + buf.write("\3\2\2\2\u0272\u0274\5\u00a4S\2\u0273\u0272\3\2\2\2\u0273") + buf.write("\u0274\3\2\2\2\u0274\u0275\3\2\2\2\u0275\u0276\7\4\2\2") + buf.write("\u0276\u0277\7\7\2\2\u0277G\3\2\2\2\u0278\u0279\7\u0080") + buf.write("\2\2\u0279\u027a\7\6\2\2\u027a\u027b\7\3\2\2\u027b\u027c") + buf.write("\5r:\2\u027c\u027d\5\u00b8]\2\u027d\u027e\5\u00ba^\2\u027e") + buf.write("\u027f\5\u00bc_\2\u027f\u0280\7\4\2\2\u0280\u0281\7\7") + buf.write("\2\2\u0281I\3\2\2\2\u0282\u0283\7\u0080\2\2\u0283\u0284") + buf.write("\7\6\2\2\u0284\u0285\7\3\2\2\u0285\u0286\5t;\2\u0286\u0287") + buf.write("\5\u00c4c\2\u0287\u0288\5\u00c6d\2\u0288\u0289\5\u00c8") + buf.write("e\2\u0289\u028a\5\u00caf\2\u028a\u028c\5\u00b2Z\2\u028b") + buf.write("\u028d\5\u00a8U\2\u028c\u028b\3\2\2\2\u028c\u028d\3\2") + buf.write("\2\2\u028d\u028f\3\2\2\2\u028e\u0290\5\u00b0Y\2\u028f") + buf.write("\u028e\3\2\2\2\u028f\u0290\3\2\2\2\u0290\u0291\3\2\2\2") + buf.write("\u0291\u0292\5\u00ccg\2\u0292\u0293\5\u00ceh\2\u0293\u0294") + buf.write("\5\u00d0i\2\u0294\u0295\7\4\2\2\u0295\u0296\7\7\2\2\u0296") + buf.write("K\3\2\2\2\u0297\u0298\7\u0080\2\2\u0298\u0299\7\6\2\2") + buf.write("\u0299\u029a\7\3\2\2\u029a\u029b\5v<\2\u029b\u029c\5\u00d8") + buf.write("m\2\u029c\u029d\5\u00c4c\2\u029d\u029e\5\u00f4{\2\u029e") + buf.write("\u029f\5\u00f6|\2\u029f\u02a0\5\u00f8}\2\u02a0\u02a1\5") + buf.write("\u00fa~\2\u02a1\u02a3\5\u00fc\177\2\u02a2\u02a4\5\u0100") + buf.write("\u0081\2\u02a3\u02a2\3\2\2\2\u02a3\u02a4\3\2\2\2\u02a4") + buf.write("\u02a6\3\2\2\2\u02a5\u02a7\5\u00fe\u0080\2\u02a6\u02a5") + buf.write("\3\2\2\2\u02a6\u02a7\3\2\2\2\u02a7\u02a8\3\2\2\2\u02a8") + buf.write("\u02aa\5\u0102\u0082\2\u02a9\u02ab\5\u0104\u0083\2\u02aa") + buf.write("\u02a9\3\2\2\2\u02aa\u02ab\3\2\2\2\u02ab\u02ac\3\2\2\2") + buf.write("\u02ac\u02ad\5\u0106\u0084\2\u02ad\u02ae\5\u0108\u0085") + buf.write("\2\u02ae\u02af\7\4\2\2\u02af\u02b0\7\7\2\2\u02b0M\3\2") + buf.write("\2\2\u02b1\u02b2\7\u0080\2\2\u02b2\u02b3\7\6\2\2\u02b3") + buf.write("\u02b4\7\3\2\2\u02b4\u02b5\5x=\2\u02b5\u02b6\5\u011c\u008f") + buf.write("\2\u02b6\u02b7\5\u00b4[\2\u02b7\u02b8\5\u011e\u0090\2") + buf.write("\u02b8\u02b9\5\u00b6\\\2\u02b9\u02ba\7\4\2\2\u02ba\u02bb") + buf.write("\7\7\2\2\u02bbO\3\2\2\2\u02bc\u02bd\7\u0080\2\2\u02bd") + buf.write("\u02be\7\6\2\2\u02be\u02bf\7\3\2\2\u02bf\u02c0\5z>\2\u02c0") + buf.write("\u02c1\5\u00b8]\2\u02c1\u02c2\5\u00ba^\2\u02c2\u02c3\5") + buf.write("\u00bc_\2\u02c3\u02c4\7\4\2\2\u02c4\u02c5\7\7\2\2\u02c5") + buf.write("Q\3\2\2\2\u02c6\u02c7\7\u0080\2\2\u02c7\u02c8\7\6\2\2") + buf.write("\u02c8\u02c9\7\3\2\2\u02c9\u02ca\5|?\2\u02ca\u02cb\5\u00b8") + buf.write("]\2\u02cb\u02cd\5\u00ba^\2\u02cc\u02ce\5\u010a\u0086\2") + buf.write("\u02cd\u02cc\3\2\2\2\u02cd\u02ce\3\2\2\2\u02ce\u02cf\3") + buf.write("\2\2\2\u02cf\u02d1\5\u010c\u0087\2\u02d0\u02d2\5\u00b2") + buf.write("Z\2\u02d1\u02d0\3\2\2\2\u02d1\u02d2\3\2\2\2\u02d2\u02d4") + buf.write("\3\2\2\2\u02d3\u02d5\5\u010e\u0088\2\u02d4\u02d3\3\2\2") + buf.write("\2\u02d4\u02d5\3\2\2\2\u02d5\u02d6\3\2\2\2\u02d6\u02d7") + buf.write("\5\u0110\u0089\2\u02d7\u02d8\5\u00bc_\2\u02d8\u02d9\5") + buf.write("\u0112\u008a\2\u02d9\u02db\5\u0114\u008b\2\u02da\u02dc") + buf.write("\5\u0116\u008c\2\u02db\u02da\3\2\2\2\u02db\u02dc\3\2\2") + buf.write("\2\u02dc\u02dd\3\2\2\2\u02dd\u02de\7\4\2\2\u02de\u02df") + buf.write("\7\7\2\2\u02dfS\3\2\2\2\u02e0\u02e1\7\u0080\2\2\u02e1") + buf.write("\u02e2\7\6\2\2\u02e2\u02e3\7\3\2\2\u02e3\u02e4\5~@\2\u02e4") + buf.write("\u02e5\5\u00b8]\2\u02e5\u02e6\5\u00ba^\2\u02e6\u02e7\5") + buf.write("\u00bc_\2\u02e7\u02e8\7\4\2\2\u02e8\u02e9\7\7\2\2\u02e9") + buf.write("U\3\2\2\2\u02ea\u02eb\7\u0080\2\2\u02eb\u02ec\7\6\2\2") + buf.write("\u02ec\u02ed\7\3\2\2\u02ed\u02ef\5\u0080A\2\u02ee\u02f0") + buf.write("\5\u00b2Z\2\u02ef\u02ee\3\2\2\2\u02ef\u02f0\3\2\2\2\u02f0") + buf.write("\u02f2\3\2\2\2\u02f1\u02f3\5\u0118\u008d\2\u02f2\u02f1") + buf.write("\3\2\2\2\u02f2\u02f3\3\2\2\2\u02f3\u02f4\3\2\2\2\u02f4") + buf.write("\u02f5\5\u011a\u008e\2\u02f5\u02f6\7\4\2\2\u02f6\u02f7") + buf.write("\7\7\2\2\u02f7W\3\2\2\2\u02f8\u02f9\7\u0080\2\2\u02f9") + buf.write("\u02fa\7\6\2\2\u02fa\u02fb\7\3\2\2\u02fb\u02fc\5\u0082") + buf.write("B\2\u02fc\u02fd\5\u00a6T\2\u02fd\u02ff\5\u00b2Z\2\u02fe") + buf.write("\u0300\5\u00b4[\2\u02ff\u02fe\3\2\2\2\u02ff\u0300\3\2") + buf.write("\2\2\u0300\u0301\3\2\2\2\u0301\u0302\5\u00b6\\\2\u0302") + buf.write("\u0303\7\4\2\2\u0303\u0304\7\7\2\2\u0304Y\3\2\2\2\u0305") + buf.write("\u0306\7\u0080\2\2\u0306\u0307\7\6\2\2\u0307\u0308\7\3") + buf.write("\2\2\u0308\u030a\5\u0084C\2\u0309\u030b\5\u0120\u0091") + buf.write("\2\u030a\u0309\3\2\2\2\u030a\u030b\3\2\2\2\u030b\u030c") + buf.write("\3\2\2\2\u030c\u030d\5\u0122\u0092\2\u030d\u030e\5\u00b2") + buf.write("Z\2\u030e\u030f\7\4\2\2\u030f\u0310\7\7\2\2\u0310[\3\2") + buf.write("\2\2\u0311\u0312\7\u0080\2\2\u0312\u0313\7\6\2\2\u0313") + buf.write("\u0314\7\3\2\2\u0314\u0315\5\u0086D\2\u0315\u0316\5\u012e") + buf.write("\u0098\2\u0316\u0318\5\u0130\u0099\2\u0317\u0319\5\u0132") + buf.write("\u009a\2\u0318\u0317\3\2\2\2\u0318\u0319\3\2\2\2\u0319") + buf.write("\u031a\3\2\2\2\u031a\u031b\7\4\2\2\u031b\u031c\7\7\2\2") + buf.write("\u031c]\3\2\2\2\u031d\u031e\7\u0080\2\2\u031e\u031f\7") + buf.write("\6\2\2\u031f\u0320\7\3\2\2\u0320\u0321\5\u0088E\2\u0321") + buf.write("\u0322\5\u00aaV\2\u0322\u0323\5\u00acW\2\u0323\u0324\7") + buf.write("\4\2\2\u0324\u0325\7\7\2\2\u0325_\3\2\2\2\u0326\u0327") + buf.write("\7\u0080\2\2\u0327\u0328\7\6\2\2\u0328\u0329\7\3\2\2\u0329") + buf.write("\u032a\5\u008aF\2\u032a\u032b\5\u00aeX\2\u032b\u032c\5") + buf.write("\u00ccg\2\u032c\u032d\7\4\2\2\u032d\u032e\7\7\2\2\u032e") + buf.write("a\3\2\2\2\u032f\u0330\7\u0080\2\2\u0330\u0331\7\6\2\2") + buf.write("\u0331\u0332\7\3\2\2\u0332\u0333\5\u008cG\2\u0333\u0334") + buf.write("\5\u00a6T\2\u0334\u0335\5\u0138\u009d\2\u0335\u0336\5") + buf.write("\u00b4[\2\u0336\u0337\5\u00b6\\\2\u0337\u0338\5\u013a") + buf.write("\u009e\2\u0338\u0339\7\4\2\2\u0339\u033a\7\7\2\2\u033a") + buf.write("c\3\2\2\2\u033b\u033c\7v\2\2\u033c\u033d\7\6\2\2\u033d") + buf.write("\u033e\7\t\2\2\u033e\u033f\7\7\2\2\u033fe\3\2\2\2\u0340") + buf.write("\u0341\7v\2\2\u0341\u0342\7\6\2\2\u0342\u0343\7\n\2\2") + buf.write("\u0343\u0344\7\7\2\2\u0344g\3\2\2\2\u0345\u0346\7v\2\2") + buf.write("\u0346\u0347\7\6\2\2\u0347\u0348\7\13\2\2\u0348\u0349") + buf.write("\7\7\2\2\u0349i\3\2\2\2\u034a\u034b\7v\2\2\u034b\u034c") + buf.write("\7\6\2\2\u034c\u034d\7\f\2\2\u034d\u034e\7\7\2\2\u034e") + buf.write("k\3\2\2\2\u034f\u0350\7v\2\2\u0350\u0351\7\6\2\2\u0351") + buf.write("\u0352\7\r\2\2\u0352\u0353\7\7\2\2\u0353m\3\2\2\2\u0354") + buf.write("\u0355\7v\2\2\u0355\u0356\7\6\2\2\u0356\u0357\7\16\2\2") + buf.write("\u0357\u0358\7\7\2\2\u0358o\3\2\2\2\u0359\u035a\7v\2\2") + buf.write("\u035a\u035b\7\6\2\2\u035b\u035c\7\17\2\2\u035c\u035d") + buf.write("\7\7\2\2\u035dq\3\2\2\2\u035e\u035f\7v\2\2\u035f\u0360") + buf.write("\7\6\2\2\u0360\u0361\7\20\2\2\u0361\u0362\7\7\2\2\u0362") + buf.write("s\3\2\2\2\u0363\u0364\7v\2\2\u0364\u0365\7\6\2\2\u0365") + buf.write("\u0366\7\21\2\2\u0366\u0367\7\7\2\2\u0367u\3\2\2\2\u0368") + buf.write("\u0369\7v\2\2\u0369\u036a\7\6\2\2\u036a\u036b\7\22\2\2") + buf.write("\u036b\u036c\7\7\2\2\u036cw\3\2\2\2\u036d\u036e\7v\2\2") + buf.write("\u036e\u036f\7\6\2\2\u036f\u0370\7\23\2\2\u0370\u0371") + buf.write("\7\7\2\2\u0371y\3\2\2\2\u0372\u0373\7v\2\2\u0373\u0374") + buf.write("\7\6\2\2\u0374\u0375\7\24\2\2\u0375\u0376\7\7\2\2\u0376") + buf.write("{\3\2\2\2\u0377\u0378\7v\2\2\u0378\u0379\7\6\2\2\u0379") + buf.write("\u037a\7\25\2\2\u037a\u037b\7\7\2\2\u037b}\3\2\2\2\u037c") + buf.write("\u037d\7v\2\2\u037d\u037e\7\6\2\2\u037e\u037f\7\26\2\2") + buf.write("\u037f\u0380\7\7\2\2\u0380\177\3\2\2\2\u0381\u0382\7v") + buf.write("\2\2\u0382\u0383\7\6\2\2\u0383\u0384\7\27\2\2\u0384\u0385") + buf.write("\7\7\2\2\u0385\u0081\3\2\2\2\u0386\u0387\7v\2\2\u0387") + buf.write("\u0388\7\6\2\2\u0388\u0389\7\30\2\2\u0389\u038a\7\7\2") + buf.write("\2\u038a\u0083\3\2\2\2\u038b\u038c\7v\2\2\u038c\u038d") + buf.write("\7\6\2\2\u038d\u038e\7\31\2\2\u038e\u038f\7\7\2\2\u038f") + buf.write("\u0085\3\2\2\2\u0390\u0391\7v\2\2\u0391\u0392\7\6\2\2") + buf.write("\u0392\u0393\7\32\2\2\u0393\u0394\7\7\2\2\u0394\u0087") + buf.write("\3\2\2\2\u0395\u0396\7v\2\2\u0396\u0397\7\6\2\2\u0397") + buf.write("\u0398\7\33\2\2\u0398\u0399\7\7\2\2\u0399\u0089\3\2\2") + buf.write("\2\u039a\u039b\7v\2\2\u039b\u039c\7\6\2\2\u039c\u039d") + buf.write("\7\34\2\2\u039d\u039e\7\7\2\2\u039e\u008b\3\2\2\2\u039f") + buf.write("\u03a0\7v\2\2\u03a0\u03a1\7\6\2\2\u03a1\u03a2\7\35\2\2") + buf.write("\u03a2\u03a3\7\7\2\2\u03a3\u008d\3\2\2\2\u03a4\u03a5\7") + buf.write("\36\2\2\u03a5\u03a6\7\6\2\2\u03a6\u03a7\7\u0080\2\2\u03a7") + buf.write("\u03ad\7\7\2\2\u03a8\u03a9\7\37\2\2\u03a9\u03aa\7\6\2") + buf.write("\2\u03aa\u03ab\7\u0080\2\2\u03ab\u03ad\7\7\2\2\u03ac\u03a4") + buf.write("\3\2\2\2\u03ac\u03a8\3\2\2\2\u03ad\u008f\3\2\2\2\u03ae") + buf.write("\u03af\7 \2\2\u03af\u03b0\7\6\2\2\u03b0\u03b1\7\u0080") + buf.write("\2\2\u03b1\u03b2\7\7\2\2\u03b2\u0091\3\2\2\2\u03b3\u03b4") + buf.write("\7!\2\2\u03b4\u03b5\7\6\2\2\u03b5\u03b6\7y\2\2\u03b6\u03b7") + buf.write("\7\7\2\2\u03b7\u0093\3\2\2\2\u03b8\u03b9\7\"\2\2\u03b9") + buf.write("\u03ba\7\6\2\2\u03ba\u03bb\7\u0080\2\2\u03bb\u03bc\7\7") + buf.write("\2\2\u03bc\u0095\3\2\2\2\u03bd\u03be\7#\2\2\u03be\u03bf") + buf.write("\7\6\2\2\u03bf\u03c0\5\u013e\u00a0\2\u03c0\u03c1\7\7\2") + buf.write("\2\u03c1\u0097\3\2\2\2\u03c2\u03c3\7$\2\2\u03c3\u03c4") + buf.write("\7\6\2\2\u03c4\u03c5\7y\2\2\u03c5\u03c6\7\7\2\2\u03c6") + buf.write("\u0099\3\2\2\2\u03c7\u03c8\7%\2\2\u03c8\u03c9\7\6\2\2") + buf.write("\u03c9\u03ca\5\u013e\u00a0\2\u03ca\u03cb\7\7\2\2\u03cb") + buf.write("\u009b\3\2\2\2\u03cc\u03cd\7&\2\2\u03cd\u03ce\7\6\2\2") + buf.write("\u03ce\u03cf\5\u013e\u00a0\2\u03cf\u03d0\7\7\2\2\u03d0") + buf.write("\u009d\3\2\2\2\u03d1\u03d2\7\'\2\2\u03d2\u03d3\7\6\2\2") + buf.write("\u03d3\u03d4\7y\2\2\u03d4\u03d5\7\7\2\2\u03d5\u009f\3") + buf.write("\2\2\2\u03d6\u03d7\7(\2\2\u03d7\u03d8\7\6\2\2\u03d8\u03d9") + buf.write("\7y\2\2\u03d9\u03da\7\7\2\2\u03da\u00a1\3\2\2\2\u03db") + buf.write("\u03dc\7)\2\2\u03dc\u03dd\7\6\2\2\u03dd\u03de\7y\2\2\u03de") + buf.write("\u03df\7\7\2\2\u03df\u00a3\3\2\2\2\u03e0\u03e1\7*\2\2") + buf.write("\u03e1\u03e2\7\6\2\2\u03e2\u03e3\7y\2\2\u03e3\u03e4\7") + buf.write("\7\2\2\u03e4\u00a5\3\2\2\2\u03e5\u03e6\7+\2\2\u03e6\u03e7") + buf.write("\7\6\2\2\u03e7\u03e8\5\u00be`\2\u03e8\u03e9\7\7\2\2\u03e9") + buf.write("\u00a7\3\2\2\2\u03ea\u03eb\7,\2\2\u03eb\u03ec\7\6\2\2") + buf.write("\u03ec\u03ed\7\u0081\2\2\u03ed\u03ee\7\7\2\2\u03ee\u00a9") + buf.write("\3\2\2\2\u03ef\u03f0\7-\2\2\u03f0\u03f1\7\6\2\2\u03f1") + buf.write("\u03f2\7\u0081\2\2\u03f2\u03f3\7\7\2\2\u03f3\u00ab\3\2") + buf.write("\2\2\u03f4\u03f5\7.\2\2\u03f5\u03f6\7\6\2\2\u03f6\u03fa") + buf.write("\7\3\2\2\u03f7\u03f9\5\u012c\u0097\2\u03f8\u03f7\3\2\2") + buf.write("\2\u03f9\u03fc\3\2\2\2\u03fa\u03f8\3\2\2\2\u03fa\u03fb") + buf.write("\3\2\2\2\u03fb\u03fd\3\2\2\2\u03fc\u03fa\3\2\2\2\u03fd") + buf.write("\u03fe\7\4\2\2\u03fe\u03ff\7\7\2\2\u03ff\u00ad\3\2\2\2") + buf.write("\u0400\u0401\7/\2\2\u0401\u0402\7\6\2\2\u0402\u0403\7") + buf.write("\u0080\2\2\u0403\u0404\7\7\2\2\u0404\u00af\3\2\2\2\u0405") + buf.write("\u0406\7\60\2\2\u0406\u0407\7\6\2\2\u0407\u0408\5\u00be") + buf.write("`\2\u0408\u0409\7\7\2\2\u0409\u00b1\3\2\2\2\u040a\u040b") + buf.write("\7\61\2\2\u040b\u040c\7\6\2\2\u040c\u040d\t\2\2\2\u040d") + buf.write("\u040e\7\7\2\2\u040e\u00b3\3\2\2\2\u040f\u0410\7\62\2") + buf.write("\2\u0410\u0411\7\6\2\2\u0411\u0412\t\2\2\2\u0412\u0413") + buf.write("\7\7\2\2\u0413\u00b5\3\2\2\2\u0414\u0415\7\63\2\2\u0415") + buf.write("\u0416\7\6\2\2\u0416\u0417\t\2\2\2\u0417\u0418\7\7\2\2") + buf.write("\u0418\u00b7\3\2\2\2\u0419\u041a\7\64\2\2\u041a\u041b") + buf.write("\7\6\2\2\u041b\u041c\7y\2\2\u041c\u041d\7\7\2\2\u041d") + buf.write("\u00b9\3\2\2\2\u041e\u041f\7\65\2\2\u041f\u0420\7\6\2") + buf.write("\2\u0420\u0421\5\u00be`\2\u0421\u0422\7\7\2\2\u0422\u00bb") + buf.write("\3\2\2\2\u0423\u0424\7\66\2\2\u0424\u0425\7\6\2\2\u0425") + buf.write("\u0426\7y\2\2\u0426\u0427\7\7\2\2\u0427\u00bd\3\2\2\2") + buf.write("\u0428\u042d\7\67\2\2\u0429\u042a\7\u0080\2\2\u042a\u042c") + buf.write("\78\2\2\u042b\u0429\3\2\2\2\u042c\u042f\3\2\2\2\u042d") + buf.write("\u042b\3\2\2\2\u042d\u042e\3\2\2\2\u042e\u0430\3\2\2\2") + buf.write("\u042f\u042d\3\2\2\2\u0430\u0431\79\2\2\u0431\u00bf\3") + buf.write("\2\2\2\u0432\u0438\7\67\2\2\u0433\u0434\5\u013e\u00a0") + buf.write("\2\u0434\u0435\78\2\2\u0435\u0437\3\2\2\2\u0436\u0433") + buf.write("\3\2\2\2\u0437\u043a\3\2\2\2\u0438\u0436\3\2\2\2\u0438") + buf.write("\u0439\3\2\2\2\u0439\u043b\3\2\2\2\u043a\u0438\3\2\2\2") + buf.write("\u043b\u043c\79\2\2\u043c\u00c1\3\2\2\2\u043d\u0442\7") + buf.write("\67\2\2\u043e\u043f\7\u0082\2\2\u043f\u0441\78\2\2\u0440") + buf.write("\u043e\3\2\2\2\u0441\u0444\3\2\2\2\u0442\u0440\3\2\2\2") + buf.write("\u0442\u0443\3\2\2\2\u0443\u0445\3\2\2\2\u0444\u0442\3") + buf.write("\2\2\2\u0445\u0446\79\2\2\u0446\u00c3\3\2\2\2\u0447\u0448") + buf.write("\7:\2\2\u0448\u0449\7\6\2\2\u0449\u044a\7\u0080\2\2\u044a") + buf.write("\u044b\7\7\2\2\u044b\u00c5\3\2\2\2\u044c\u044d\7;\2\2") + buf.write("\u044d\u044e\7\6\2\2\u044e\u044f\5\u00be`\2\u044f\u0450") + buf.write("\7\7\2\2\u0450\u00c7\3\2\2\2\u0451\u0452\7<\2\2\u0452") + buf.write("\u0453\7\6\2\2\u0453\u0454\5\u00be`\2\u0454\u0455\7\7") + buf.write("\2\2\u0455\u00c9\3\2\2\2\u0456\u0457\7=\2\2\u0457\u0458") + buf.write("\7\6\2\2\u0458\u0459\5\u00be`\2\u0459\u045a\7\7\2\2\u045a") + buf.write("\u00cb\3\2\2\2\u045b\u045c\7>\2\2\u045c\u045d\7\6\2\2") + buf.write("\u045d\u045e\5\u013e\u00a0\2\u045e\u045f\7\7\2\2\u045f") + buf.write("\u00cd\3\2\2\2\u0460\u0461\7?\2\2\u0461\u0462\7\6\2\2") + buf.write("\u0462\u0463\7\u0080\2\2\u0463\u0464\7\7\2\2\u0464\u00cf") + buf.write("\3\2\2\2\u0465\u0466\7@\2\2\u0466\u0467\7\6\2\2\u0467") + buf.write("\u0468\7\u0081\2\2\u0468\u0469\7\7\2\2\u0469\u00d1\3\2") + buf.write("\2\2\u046a\u046b\7A\2\2\u046b\u046c\7\6\2\2\u046c\u046d") + buf.write("\7y\2\2\u046d\u046e\7\7\2\2\u046e\u00d3\3\2\2\2\u046f") + buf.write("\u0470\7B\2\2\u0470\u0471\7\6\2\2\u0471\u0472\5\u013e") + buf.write("\u00a0\2\u0472\u0473\7\7\2\2\u0473\u00d5\3\2\2\2\u0474") + buf.write("\u0475\7C\2\2\u0475\u0476\7\6\2\2\u0476\u0477\5\u013e") + buf.write("\u00a0\2\u0477\u0478\7\7\2\2\u0478\u00d7\3\2\2\2\u0479") + buf.write("\u047a\7D\2\2\u047a\u047b\7\6\2\2\u047b\u047d\7\3\2\2") + buf.write("\u047c\u047e\5\u013c\u009f\2\u047d\u047c\3\2\2\2\u047d") + buf.write("\u047e\3\2\2\2\u047e\u0480\3\2\2\2\u047f\u0481\5\u00dc") + buf.write("o\2\u0480\u047f\3\2\2\2\u0480\u0481\3\2\2\2\u0481\u0483") + buf.write("\3\2\2\2\u0482\u0484\5\u00dan\2\u0483\u0482\3\2\2\2\u0483") + buf.write("\u0484\3\2\2\2\u0484\u0486\3\2\2\2\u0485\u0487\5\u00de") + buf.write("p\2\u0486\u0485\3\2\2\2\u0486\u0487\3\2\2\2\u0487\u0489") + buf.write("\3\2\2\2\u0488\u048a\5\u00e0q\2\u0489\u0488\3\2\2\2\u0489") + buf.write("\u048a\3\2\2\2\u048a\u048c\3\2\2\2\u048b\u048d\5\u00e2") + buf.write("r\2\u048c\u048b\3\2\2\2\u048c\u048d\3\2\2\2\u048d\u048f") + buf.write("\3\2\2\2\u048e\u0490\5\u00e4s\2\u048f\u048e\3\2\2\2\u048f") + buf.write("\u0490\3\2\2\2\u0490\u0492\3\2\2\2\u0491\u0493\5\u00e6") + buf.write("t\2\u0492\u0491\3\2\2\2\u0492\u0493\3\2\2\2\u0493\u0495") + buf.write("\3\2\2\2\u0494\u0496\5\u00e8u\2\u0495\u0494\3\2\2\2\u0495") + buf.write("\u0496\3\2\2\2\u0496\u0497\3\2\2\2\u0497\u0498\7\4\2\2") + buf.write("\u0498\u0499\7\7\2\2\u0499\u00d9\3\2\2\2\u049a\u049b\7") + buf.write("E\2\2\u049b\u049c\7\6\2\2\u049c\u049d\7y\2\2\u049d\u049e") + buf.write("\7\7\2\2\u049e\u00db\3\2\2\2\u049f\u04a0\7F\2\2\u04a0") + buf.write("\u04a1\7\6\2\2\u04a1\u04a2\7\u0082\2\2\u04a2\u04a3\7\7") + buf.write("\2\2\u04a3\u00dd\3\2\2\2\u04a4\u04a5\7G\2\2\u04a5\u04a6") + buf.write("\7\6\2\2\u04a6\u04a7\7y\2\2\u04a7\u04a8\7\7\2\2\u04a8") + buf.write("\u00df\3\2\2\2\u04a9\u04aa\7H\2\2\u04aa\u04ab\7\6\2\2") + buf.write("\u04ab\u04ac\7\u0082\2\2\u04ac\u04ad\7\7\2\2\u04ad\u00e1") + buf.write("\3\2\2\2\u04ae\u04af\7I\2\2\u04af\u04b0\7\6\2\2\u04b0") + buf.write("\u04b1\7y\2\2\u04b1\u04b2\7\7\2\2\u04b2\u00e3\3\2\2\2") + buf.write("\u04b3\u04b4\7J\2\2\u04b4\u04b5\7\6\2\2\u04b5\u04b6\7") + buf.write("\u0082\2\2\u04b6\u04b7\7\7\2\2\u04b7\u00e5\3\2\2\2\u04b8") + buf.write("\u04b9\7K\2\2\u04b9\u04ba\7\6\2\2\u04ba\u04bb\5\u013e") + buf.write("\u00a0\2\u04bb\u04bc\7\7\2\2\u04bc\u00e7\3\2\2\2\u04bd") + buf.write("\u04be\7L\2\2\u04be\u04bf\7\6\2\2\u04bf\u04c3\7\3\2\2") + buf.write("\u04c0\u04c2\5\u00eav\2\u04c1\u04c0\3\2\2\2\u04c2\u04c5") + buf.write("\3\2\2\2\u04c3\u04c1\3\2\2\2\u04c3\u04c4\3\2\2\2\u04c4") + buf.write("\u04c6\3\2\2\2\u04c5\u04c3\3\2\2\2\u04c6\u04c7\7\4\2\2") + buf.write("\u04c7\u04c8\7\7\2\2\u04c8\u00e9\3\2\2\2\u04c9\u04ca\7") + buf.write("\u0080\2\2\u04ca\u04cb\7\6\2\2\u04cb\u04cd\7\3\2\2\u04cc") + buf.write("\u04ce\5\u00ecw\2\u04cd\u04cc\3\2\2\2\u04cd\u04ce\3\2") + buf.write("\2\2\u04ce\u04d0\3\2\2\2\u04cf\u04d1\5\u00eex\2\u04d0") + buf.write("\u04cf\3\2\2\2\u04d0\u04d1\3\2\2\2\u04d1\u04d3\3\2\2\2") + buf.write("\u04d2\u04d4\5\u00f0y\2\u04d3\u04d2\3\2\2\2\u04d3\u04d4") + buf.write("\3\2\2\2\u04d4\u04d6\3\2\2\2\u04d5\u04d7\5\u00dan\2\u04d6") + buf.write("\u04d5\3\2\2\2\u04d6\u04d7\3\2\2\2\u04d7\u04d9\3\2\2\2") + buf.write("\u04d8\u04da\5\u00f2z\2\u04d9\u04d8\3\2\2\2\u04d9\u04da") + buf.write("\3\2\2\2\u04da\u04dc\3\2\2\2\u04db\u04dd\5\u0136\u009c") + buf.write("\2\u04dc\u04db\3\2\2\2\u04dc\u04dd\3\2\2\2\u04dd\u04df") + buf.write("\3\2\2\2\u04de\u04e0\5\u00eex\2\u04df\u04de\3\2\2\2\u04df") + buf.write("\u04e0\3\2\2\2\u04e0\u04e1\3\2\2\2\u04e1\u04e2\7\4\2\2") + buf.write("\u04e2\u04e3\7\7\2\2\u04e3\u00eb\3\2\2\2\u04e4\u04e5\7") + buf.write("M\2\2\u04e5\u04e6\7\6\2\2\u04e6\u04e7\7\u0082\2\2\u04e7") + buf.write("\u04e8\7\7\2\2\u04e8\u00ed\3\2\2\2\u04e9\u04ea\7N\2\2") + buf.write("\u04ea\u04eb\7\6\2\2\u04eb\u04ec\7\u0080\2\2\u04ec\u04ed") + buf.write("\7\7\2\2\u04ed\u00ef\3\2\2\2\u04ee\u04ef\7O\2\2\u04ef") + buf.write("\u04f0\7\6\2\2\u04f0\u04f1\7\u0082\2\2\u04f1\u04f2\7\7") + buf.write("\2\2\u04f2\u00f1\3\2\2\2\u04f3\u04f4\7P\2\2\u04f4\u04f5") + buf.write("\7\6\2\2\u04f5\u04f6\7\u0082\2\2\u04f6\u04f7\7\7\2\2\u04f7") + buf.write("\u00f3\3\2\2\2\u04f8\u04f9\7Q\2\2\u04f9\u04fa\7\6\2\2") + buf.write("\u04fa\u04fb\7\u0081\2\2\u04fb\u04fc\7\7\2\2\u04fc\u00f5") + buf.write("\3\2\2\2\u04fd\u04fe\7R\2\2\u04fe\u04ff\7\6\2\2\u04ff") + buf.write("\u0500\7\u0082\2\2\u0500\u0501\7\7\2\2\u0501\u00f7\3\2") + buf.write("\2\2\u0502\u0503\7S\2\2\u0503\u0504\7\6\2\2\u0504\u0505") + buf.write("\7y\2\2\u0505\u0506\7\7\2\2\u0506\u00f9\3\2\2\2\u0507") + buf.write("\u0508\7T\2\2\u0508\u0509\7\6\2\2\u0509\u050a\5\u00c0") + buf.write("a\2\u050a\u050b\7\7\2\2\u050b\u00fb\3\2\2\2\u050c\u050d") + buf.write("\7U\2\2\u050d\u050e\7\6\2\2\u050e\u050f\7\u0080\2\2\u050f") + buf.write("\u0510\7\7\2\2\u0510\u00fd\3\2\2\2\u0511\u0512\7V\2\2") + buf.write("\u0512\u0513\7\6\2\2\u0513\u0514\7\u0080\2\2\u0514\u0515") + buf.write("\7\7\2\2\u0515\u00ff\3\2\2\2\u0516\u0517\7W\2\2\u0517") + buf.write("\u0518\7\6\2\2\u0518\u0519\5\u00be`\2\u0519\u051a\7\7") + buf.write("\2\2\u051a\u0101\3\2\2\2\u051b\u051c\7X\2\2\u051c\u051d") + buf.write("\7\6\2\2\u051d\u051e\t\2\2\2\u051e\u051f\7\7\2\2\u051f") + buf.write("\u0103\3\2\2\2\u0520\u0521\7Y\2\2\u0521\u0522\7\6\2\2") + buf.write("\u0522\u0523\5\u013e\u00a0\2\u0523\u0524\7\7\2\2\u0524") + buf.write("\u052d\3\2\2\2\u0525\u0526\7Y\2\2\u0526\u0527\7\6\2\2") + buf.write("\u0527\u0528\7\67\2\2\u0528\u0529\5\u0128\u0095\2\u0529") + buf.write("\u052a\79\2\2\u052a\u052b\7\7\2\2\u052b\u052d\3\2\2\2") + buf.write("\u052c\u0520\3\2\2\2\u052c\u0525\3\2\2\2\u052d\u0105\3") + buf.write("\2\2\2\u052e\u052f\7Z\2\2\u052f\u0530\7\6\2\2\u0530\u0531") + buf.write("\t\2\2\2\u0531\u0532\7\7\2\2\u0532\u0107\3\2\2\2\u0533") + buf.write("\u0534\7[\2\2\u0534\u0535\7\6\2\2\u0535\u0536\5\u00be") + buf.write("`\2\u0536\u0537\7\7\2\2\u0537\u0109\3\2\2\2\u0538\u0539") + buf.write("\7\\\2\2\u0539\u053a\7\6\2\2\u053a\u053b\5\u00c0a\2\u053b") + buf.write("\u053c\7\7\2\2\u053c\u010b\3\2\2\2\u053d\u053e\7]\2\2") + buf.write("\u053e\u053f\7\6\2\2\u053f\u0540\5\u00c0a\2\u0540\u0541") + buf.write("\7\7\2\2\u0541\u010d\3\2\2\2\u0542\u0543\7^\2\2\u0543") + buf.write("\u0544\7\6\2\2\u0544\u0545\5\u00c0a\2\u0545\u0546\7\7") + buf.write("\2\2\u0546\u010f\3\2\2\2\u0547\u0548\7_\2\2\u0548\u0549") + buf.write("\7\6\2\2\u0549\u054a\5\u00c0a\2\u054a\u054b\7\7\2\2\u054b") + buf.write("\u0111\3\2\2\2\u054c\u054d\7`\2\2\u054d\u054e\7\6\2\2") + buf.write("\u054e\u054f\7\u0082\2\2\u054f\u0550\7\7\2\2\u0550\u0113") + buf.write("\3\2\2\2\u0551\u0552\7a\2\2\u0552\u0553\7\6\2\2\u0553") + buf.write("\u0554\t\2\2\2\u0554\u0555\7\7\2\2\u0555\u0115\3\2\2\2") + buf.write("\u0556\u0557\7b\2\2\u0557\u0558\7\6\2\2\u0558\u0559\7") + buf.write("y\2\2\u0559\u055a\7\7\2\2\u055a\u0117\3\2\2\2\u055b\u055c") + buf.write("\7c\2\2\u055c\u055d\7\6\2\2\u055d\u055e\7\u0080\2\2\u055e") + buf.write("\u055f\7\7\2\2\u055f\u0119\3\2\2\2\u0560\u0561\7d\2\2") + buf.write("\u0561\u0562\7\6\2\2\u0562\u0563\7\u0080\2\2\u0563\u0564") + buf.write("\7\7\2\2\u0564\u011b\3\2\2\2\u0565\u0566\7e\2\2\u0566") + buf.write("\u0567\7\6\2\2\u0567\u0568\5\u013e\u00a0\2\u0568\u0569") + buf.write("\7\7\2\2\u0569\u011d\3\2\2\2\u056a\u056b\7f\2\2\u056b") + buf.write("\u056c\7\6\2\2\u056c\u056d\7\u0080\2\2\u056d\u056e\7\7") + buf.write("\2\2\u056e\u011f\3\2\2\2\u056f\u0570\7g\2\2\u0570\u0571") + buf.write("\7\6\2\2\u0571\u0572\7\u0080\2\2\u0572\u0573\7\7\2\2\u0573") + buf.write("\u0121\3\2\2\2\u0574\u0575\7h\2\2\u0575\u0576\7\6\2\2") + buf.write("\u0576\u057a\7\3\2\2\u0577\u0579\5\u012c\u0097\2\u0578") + buf.write("\u0577\3\2\2\2\u0579\u057c\3\2\2\2\u057a\u0578\3\2\2\2") + buf.write("\u057a\u057b\3\2\2\2\u057b\u057d\3\2\2\2\u057c\u057a\3") + buf.write("\2\2\2\u057d\u057e\7\4\2\2\u057e\u057f\7\7\2\2\u057f\u0123") + buf.write("\3\2\2\2\u0580\u0581\7i\2\2\u0581\u0582\7\6\2\2\u0582") + buf.write("\u0583\t\2\2\2\u0583\u0584\7\7\2\2\u0584\u0125\3\2\2\2") + buf.write("\u0585\u0586\7j\2\2\u0586\u0587\7\6\2\2\u0587\u0588\7") + buf.write("y\2\2\u0588\u0589\7\7\2\2\u0589\u0127\3\2\2\2\u058a\u058c") + buf.write("\5\u012a\u0096\2\u058b\u058a\3\2\2\2\u058c\u058f\3\2\2") + buf.write("\2\u058d\u058b\3\2\2\2\u058d\u058e\3\2\2\2\u058e\u0129") + buf.write("\3\2\2\2\u058f\u058d\3\2\2\2\u0590\u0591\7\3\2\2\u0591") + buf.write("\u0592\7k\2\2\u0592\u0593\7\6\2\2\u0593\u0594\7\u0080") + buf.write("\2\2\u0594\u0595\7\7\2\2\u0595\u0596\7l\2\2\u0596\u0597") + buf.write("\7\6\2\2\u0597\u0598\7\u0080\2\2\u0598\u0599\7\7\2\2\u0599") + buf.write("\u059a\7\4\2\2\u059a\u059b\78\2\2\u059b\u012b\3\2\2\2") + buf.write("\u059c\u059d\5\u013e\u00a0\2\u059d\u059e\7\6\2\2\u059e") + buf.write("\u059f\5\u013e\u00a0\2\u059f\u05a0\7\7\2\2\u05a0\u05c1") + buf.write("\3\2\2\2\u05a1\u05a2\5\u013e\u00a0\2\u05a2\u05a3\7\6\2") + buf.write("\2\u05a3\u05a4\7y\2\2\u05a4\u05a5\7\7\2\2\u05a5\u05c1") + buf.write("\3\2\2\2\u05a6\u05a7\5\u013e\u00a0\2\u05a7\u05a8\7\6\2") + buf.write("\2\u05a8\u05a9\7{\2\2\u05a9\u05aa\7\7\2\2\u05aa\u05c1") + buf.write("\3\2\2\2\u05ab\u05ac\5\u013e\u00a0\2\u05ac\u05ad\7\6\2") + buf.write("\2\u05ad\u05ae\7\3\2\2\u05ae\u05af\5\u012c\u0097\2\u05af") + buf.write("\u05b0\7\4\2\2\u05b0\u05b1\7\7\2\2\u05b1\u05c1\3\2\2\2") + buf.write("\u05b2\u05b3\5\u013e\u00a0\2\u05b3\u05b4\7\6\2\2\u05b4") + buf.write("\u05ba\7\67\2\2\u05b5\u05b6\5\u013e\u00a0\2\u05b6\u05b7") + buf.write("\78\2\2\u05b7\u05b9\3\2\2\2\u05b8\u05b5\3\2\2\2\u05b9") + buf.write("\u05bc\3\2\2\2\u05ba\u05b8\3\2\2\2\u05ba\u05bb\3\2\2\2") + buf.write("\u05bb\u05bd\3\2\2\2\u05bc\u05ba\3\2\2\2\u05bd\u05be\7") + buf.write("9\2\2\u05be\u05bf\7\7\2\2\u05bf\u05c1\3\2\2\2\u05c0\u059c") + buf.write("\3\2\2\2\u05c0\u05a1\3\2\2\2\u05c0\u05a6\3\2\2\2\u05c0") + buf.write("\u05ab\3\2\2\2\u05c0\u05b2\3\2\2\2\u05c1\u012d\3\2\2\2") + buf.write("\u05c2\u05c3\7m\2\2\u05c3\u05c4\7\6\2\2\u05c4\u05c5\5") + buf.write("\u00be`\2\u05c5\u05c6\7\7\2\2\u05c6\u012f\3\2\2\2\u05c7") + buf.write("\u05c8\7n\2\2\u05c8\u05c9\7\6\2\2\u05c9\u05ca\7y\2\2\u05ca") + buf.write("\u05cb\7\7\2\2\u05cb\u0131\3\2\2\2\u05cc\u05cd\7o\2\2") + buf.write("\u05cd\u05ce\7\6\2\2\u05ce\u05cf\t\2\2\2\u05cf\u05d0\7") + buf.write("\7\2\2\u05d0\u0133\3\2\2\2\u05d1\u05d2\7p\2\2\u05d2\u05d3") + buf.write("\7\6\2\2\u05d3\u05d7\7\3\2\2\u05d4\u05d6\5\u012c\u0097") + buf.write("\2\u05d5\u05d4\3\2\2\2\u05d6\u05d9\3\2\2\2\u05d7\u05d5") + buf.write("\3\2\2\2\u05d7\u05d8\3\2\2\2\u05d8\u05da\3\2\2\2\u05d9") + buf.write("\u05d7\3\2\2\2\u05da\u05db\7\4\2\2\u05db\u05dc\7\7\2\2") + buf.write("\u05dc\u0135\3\2\2\2\u05dd\u05de\7q\2\2\u05de\u05df\7") + buf.write("\6\2\2\u05df\u05e3\7\3\2\2\u05e0\u05e2\5\u012c\u0097\2") + buf.write("\u05e1\u05e0\3\2\2\2\u05e2\u05e5\3\2\2\2\u05e3\u05e1\3") + buf.write("\2\2\2\u05e3\u05e4\3\2\2\2\u05e4\u05e6\3\2\2\2\u05e5\u05e3") + buf.write("\3\2\2\2\u05e6\u05e7\7\4\2\2\u05e7\u05e8\7\7\2\2\u05e8") + buf.write("\u0137\3\2\2\2\u05e9\u05ea\7r\2\2\u05ea\u05eb\7\6\2\2") + buf.write("\u05eb\u05ec\7\u0080\2\2\u05ec\u05ed\7\7\2\2\u05ed\u0139") + buf.write("\3\2\2\2\u05ee\u05ef\7s\2\2\u05ef\u05f0\7\6\2\2\u05f0") + buf.write("\u05f1\7\u0082\2\2\u05f1\u05f2\7\7\2\2\u05f2\u013b\3\2") + buf.write("\2\2\u05f3\u05f4\7t\2\2\u05f4\u05f5\7\6\2\2\u05f5\u05f6") + buf.write("\5\u013e\u00a0\2\u05f6\u05f7\7\7\2\2\u05f7\u013d\3\2\2") + buf.write("\2\u05f8\u05f9\t\3\2\2\u05f9\u013f\3\2\2\2a\u015e\u0162") + buf.write("\u0165\u016b\u016e\u0172\u0175\u0178\u017c\u017f\u0184") + buf.write("\u0187\u018a\u0197\u019c\u01a1\u01a6\u01ab\u01b0\u01b5") + buf.write("\u01ba\u01bf\u01c4\u01c9\u01ce\u01d3\u01d8\u01dd\u01e2") + buf.write("\u01e7\u01ec\u01f1\u01f6\u01fb\u020f\u0228\u0233\u0236") + buf.write("\u0239\u023c\u023f\u0242\u0245\u0248\u024b\u024e\u0251") + buf.write("\u0266\u0269\u026c\u0270\u0273\u028c\u028f\u02a3\u02a6") + buf.write("\u02aa\u02cd\u02d1\u02d4\u02db\u02ef\u02f2\u02ff\u030a") + buf.write("\u0318\u03ac\u03fa\u042d\u0438\u0442\u047d\u0480\u0483") + buf.write("\u0486\u0489\u048c\u048f\u0492\u0495\u04c3\u04cd\u04d0") + buf.write("\u04d3\u04d6\u04d9\u04dc\u04df\u052c\u057a\u058d\u05ba") + buf.write("\u05c0\u05d7\u05e3") return buf.getvalue() @@ -736,84 +731,82 @@ class PBXProjParser ( Parser ): sharedContextCache = PredictionContextCache() - literalNames = [ u"", u"'{'", u"'}'", u"'archiveVersion'", - u"'='", u"';'", u"'objectVersion'", u"'PBXAggregateTarget'", - u"'PBXBuildFile'", u"'PBXContainerItemProxy'", u"'PBXCopyFilesBuildPhase'", - u"'PBXFileReference'", u"'PBXFrameworksBuildPhase'", - u"'PBXGroup'", u"'PBXHeadersBuildPhase'", u"'PBXNativeTarget'", - u"'PBXProject'", u"'PBXReferenceProxy'", u"'PBXResourcesBuildPhase'", - u"'PBXShellScriptBuildPhase'", u"'PBXSourcesBuildPhase'", - u"'PBXTargetDependency'", u"'PBXVariantGroup'", u"'XCBuildConfiguration'", - u"'XCConfigurationList'", u"'XCRemoteSwiftPackageReference'", - u"'XCSwiftPackageProductDependency'", u"'XCVersionGroup'", - u"'fileRef'", u"'productRef'", u"'containerPortal'", - u"'proxyType'", u"'remoteGlobalIDString'", u"'remoteInfo'", - u"'fileEncoding'", u"'explicitFileType'", u"'lastKnownFileType'", - u"'includeInIndex'", u"'indentWidth'", u"'tabWidth'", - u"'usesTabs'", u"'children'", u"'productInstallPath'", - u"'repositoryURL'", u"'requirement'", u"'package'", - u"'packageProductDependencies'", u"'name'", u"'path'", - u"'sourceTree'", u"'buildActionMask'", u"'files'", - u"'runOnlyForDeploymentPostprocessing'", u"'('", u"','", - u"')'", u"'buildConfigurationList'", u"'buildPhases'", - u"'buildRules'", u"'dependencies'", u"'productName'", - u"'productReference'", u"'productType'", u"'lineEnding'", - u"'xcLanguageSpecificationIdentifier'", u"'plistStructureDefinitionIdentifier'", - u"'attributes'", u"'LastSwiftMigration'", u"'DefaultBuildSystemTypeForWorkspace'", - u"'LastSwiftUpdateCheck'", u"'BuildIndependentTargetsInParallel'", - u"'LastUpgradeCheck'", u"'LastTestingUpgradeCheck'", - u"'ORGANIZATIONNAME'", u"'TargetAttributes'", u"'CreatedOnToolsVersion'", - u"'TestTargetID'", u"'DevelopmentTeam'", u"'ProvisioningStyle'", - u"'compatibilityVersion'", u"'developmentRegion'", - u"'hasScannedForEncodings'", u"'knownRegions'", u"'mainGroup'", - u"'productRefGroup'", u"'packageReferences'", u"'projectDirPath'", - u"'projectReferences'", u"'projectRoot'", u"'targets'", - u"'inputFileListPaths'", u"'inputPaths'", u"'outputFileListPaths'", - u"'outputPaths'", u"'shellPath'", u"'shellScript'", - u"'showEnvVarsInLog'", u"'target'", u"'targetProxy'", - u"'fileType'", u"'remoteRef'", u"'baseConfigurationReference'", - u"'buildSettings'", u"'dstPath'", u"'dstSubfolderSpec'", - u"'ProductGroup'", u"'ProjectRef'", u"'buildConfigurations'", - u"'defaultConfigurationIsVisible'", u"'defaultConfigurationName'", - u"'settings'", u"'SystemCapabilities'", u"'currentVersion'", - u"'versionGroupType'", u"'CLASSPREFIX'", u"'classes'", - u"'isa'", u"'objects'", u"'rootObject'", u"", - u"'.'", u"", u"", u"'-'", u"'_'", - u"'/'" ] - - symbolicNames = [ u"", u"", u"", u"", - u"", u"", u"", u"", - u"", u"", u"", u"", - u"", u"", u"", u"", - u"", u"", u"", u"", - u"", u"", u"", u"", - u"", u"", u"", u"", - u"", u"", u"", u"", - u"", u"", u"", u"", - u"", u"", u"", u"", - u"", u"", u"", u"", - u"", u"", u"", u"", - u"", u"", u"", u"", - u"", u"", u"", u"", - u"", u"", u"", u"", - u"", u"", u"", u"", - u"", u"", u"", u"", - u"", u"", u"", u"", - u"", u"", u"", u"", - u"", u"", u"", u"", - u"", u"", u"", u"", - u"", u"", u"", u"", - u"", u"", u"", u"", - u"", u"", u"", u"", - u"", u"", u"", u"", - u"", u"", u"", u"", - u"", u"", u"", u"", - u"", u"", u"", u"", - u"", u"", u"", u"CLASSES", - u"ISA", u"OBJECTS", u"ROOT_OBJECT", u"NUMBER", u"DOT", - u"ALPHA_NUMERIC", u"ALPHA_NUMERIC_CAP", u"DASH", u"UNDERSCORE", - u"SLASH", u"REFERENCE", u"QUOTED_STRING", u"NON_QUOTED_STRING", - u"VARIABLE", u"WS", u"COMMENT", u"LINE_COMMENT" ] + literalNames = [ "", "'{'", "'}'", "'archiveVersion'", "'='", + "';'", "'objectVersion'", "'PBXAggregateTarget'", "'PBXBuildFile'", + "'PBXContainerItemProxy'", "'PBXCopyFilesBuildPhase'", + "'PBXFileReference'", "'PBXFrameworksBuildPhase'", + "'PBXGroup'", "'PBXHeadersBuildPhase'", "'PBXNativeTarget'", + "'PBXProject'", "'PBXReferenceProxy'", "'PBXResourcesBuildPhase'", + "'PBXShellScriptBuildPhase'", "'PBXSourcesBuildPhase'", + "'PBXTargetDependency'", "'PBXVariantGroup'", "'XCBuildConfiguration'", + "'XCConfigurationList'", "'XCRemoteSwiftPackageReference'", + "'XCSwiftPackageProductDependency'", "'XCVersionGroup'", + "'fileRef'", "'productRef'", "'containerPortal'", "'proxyType'", + "'remoteGlobalIDString'", "'remoteInfo'", "'fileEncoding'", + "'explicitFileType'", "'lastKnownFileType'", "'includeInIndex'", + "'indentWidth'", "'tabWidth'", "'usesTabs'", "'children'", + "'productInstallPath'", "'repositoryURL'", "'requirement'", + "'package'", "'packageProductDependencies'", "'name'", + "'path'", "'sourceTree'", "'buildActionMask'", "'files'", + "'runOnlyForDeploymentPostprocessing'", "'('", "','", + "')'", "'buildConfigurationList'", "'buildPhases'", + "'buildRules'", "'dependencies'", "'productName'", + "'productReference'", "'productType'", "'lineEnding'", + "'xcLanguageSpecificationIdentifier'", "'plistStructureDefinitionIdentifier'", + "'attributes'", "'LastSwiftMigration'", "'DefaultBuildSystemTypeForWorkspace'", + "'LastSwiftUpdateCheck'", "'BuildIndependentTargetsInParallel'", + "'LastUpgradeCheck'", "'LastTestingUpgradeCheck'", + "'ORGANIZATIONNAME'", "'TargetAttributes'", "'CreatedOnToolsVersion'", + "'TestTargetID'", "'DevelopmentTeam'", "'ProvisioningStyle'", + "'compatibilityVersion'", "'developmentRegion'", "'hasScannedForEncodings'", + "'knownRegions'", "'mainGroup'", "'productRefGroup'", + "'packageReferences'", "'projectDirPath'", "'projectReferences'", + "'projectRoot'", "'targets'", "'inputFileListPaths'", + "'inputPaths'", "'outputFileListPaths'", "'outputPaths'", + "'shellPath'", "'shellScript'", "'showEnvVarsInLog'", + "'target'", "'targetProxy'", "'fileType'", "'remoteRef'", + "'baseConfigurationReference'", "'buildSettings'", + "'dstPath'", "'dstSubfolderSpec'", "'ProductGroup'", + "'ProjectRef'", "'buildConfigurations'", "'defaultConfigurationIsVisible'", + "'defaultConfigurationName'", "'settings'", "'SystemCapabilities'", + "'currentVersion'", "'versionGroupType'", "'CLASSPREFIX'", + "'classes'", "'isa'", "'objects'", "'rootObject'", + "", "'.'", "", "", "'-'", + "'_'", "'/'" ] + + symbolicNames = [ "", "", "", "", + "", "", "", "", + "", "", "", "", + "", "", "", "", + "", "", "", "", + "", "", "", "", + "", "", "", "", + "", "", "", "", + "", "", "", "", + "", "", "", "", + "", "", "", "", + "", "", "", "", + "", "", "", "", + "", "", "", "", + "", "", "", "", + "", "", "", "", + "", "", "", "", + "", "", "", "", + "", "", "", "", + "", "", "", "", + "", "", "", "", + "", "", "", "", + "", "", "", "", + "", "", "", "", + "", "", "", "", + "", "", "", "", + "", "", "", "", + "", "", "", "", + "", "", "", "CLASSES", + "ISA", "OBJECTS", "ROOT_OBJECT", "NUMBER", "DOT", + "ALPHA_NUMERIC", "ALPHA_NUMERIC_CAP", "DASH", "UNDERSCORE", + "SLASH", "REFERENCE", "QUOTED_STRING", "NON_QUOTED_STRING", + "VARIABLE", "WS", "COMMENT", "LINE_COMMENT" ] RULE_start = 0 RULE_root_element = 1 @@ -975,66 +968,63 @@ class PBXProjParser ( Parser ): RULE_class_prefix = 157 RULE_any_string = 158 - ruleNames = [ u"start", u"root_element", u"archive_version", u"classes", - u"object_version", u"objects", u"root_object", u"pbx_aggregate_target_section", - u"pbx_build_file_section", u"pbx_container_item_proxy_section", - u"pbx_copy_files_build_phase_section", u"pbx_file_reference_section", - u"pbx_frameworks_build_phase_section", u"pbx_group_section", - u"pbx_headers_build_phase_section", u"pbx_native_target_section", - u"pbx_project_section", u"pbx_reference_proxy_section", - u"pbx_resources_build_phase_section", u"pbx_shell_script_build_phase_section", - u"pbx_sources_build_phase_section", u"pbx_target_dependency_section", - u"pbx_variant_group_section", u"xc_build_configuration_section", - u"xc_configuration_list_section", u"xc_remote_swift_package_reference_section", - u"xc_swift_package_product_dependency_section", u"xc_version_group_section", - u"pbx_aggregate_target", u"pbx_build_file", u"pbx_container_item_proxy", - u"pbx_copy_files_build_phase", u"pbx_file_reference", - u"pbx_frameworks_build_phase", u"pbx_group", u"pbx_headers_build_phase", - u"pbx_native_target", u"pbx_project", u"pbx_reference_proxy", - u"pbx_resources_build_phase", u"pbx_shell_script_build_phase", - u"pbx_sources_build_phase", u"pbx_target_dependency", - u"pbx_variant_group", u"xc_build_configuration", u"xc_configuration_list", - u"xc_remote_swift_package_reference", u"xc_swift_package_product_dependency", - u"xc_version_group", u"isa_pbx_aggregate_target", u"isa_pbx_build_file", - u"isa_pbx_container_item_proxy", u"isa_pbx_copy_files_build_phase", - u"isa_pbx_file_reference", u"isa_pbx_frameworks_build_phase", - u"isa_pbx_group", u"isa_pbx_header_build_phase", u"isa_pbx_native_target", - u"isa_pbx_project", u"isa_pbx_reference_proxy", u"isa_pbx_resources_build_phase", - u"isa_pbx_shell_script_build_phase", u"isa_pbx_sources_build_phase", - u"isa_pbx_target_dependency", u"isa_pbx_variant_group", - u"isa_xc_build_configuration", u"isa_xc_configuration_list", - u"isa_xc_remote_swift_package_reference", u"isa_xc_swift_package_product_dependency", - u"isa_xc_version_group", u"file_ref", u"container_portal", - u"proxy_type", u"remote_global_id_string", u"remote_info", - u"file_encoding", u"explicit_file_type", u"last_known_file_type", - u"include_in_index", u"indent_width", u"tab_width", u"uses_tabs", - u"children", u"product_install_path", u"repository_url", - u"requirement", u"xc_package", u"package_product_dependencies", - u"name", u"path", u"source_tree", u"build_action_mask", - u"files", u"run_only_for_deployment_postprocessing", - u"reference_list", u"any_string_list", u"non_quoted_strings_list", - u"build_configuration_list", u"build_phases", u"build_rules", - u"dependencies", u"product_name", u"product_reference", - u"product_type", u"line_ending", u"xc_language_specification_identifier", - u"plist_structure_definition_identifier", u"attributes", - u"last_swift_migration", u"default_build_system_type_for_workspace", - u"last_swift_update_check", u"build_targets_in_parallel", - u"last_upgrade_check", u"last_testing_upgrade_check", - u"organization_name", u"target_attributes", u"target_attribute", - u"created_on_tools_version", u"test_target_id", u"development_team", - u"provisioning_style", u"compatibility_version", u"development_region", - u"has_scanned_for_encodings", u"known_regions", u"main_group", - u"product_ref_group", u"package_references", u"project_dir_path", - u"project_references", u"project_root", u"targets", u"input_file_list_paths", - u"input_paths", u"output_file_list_paths", u"output_paths", - u"shell_path", u"shell_script", u"show_env_vars_in_log", - u"target", u"target_proxy", u"file_type", u"remote_ref", - u"base_configuration_reference", u"build_settings", u"dst_path", - u"dst_subfolder_spec", u"project_references_list", u"project_references_list_element", - u"key_value", u"build_configurations", u"default_configuration_is_visible", - u"default_configuration_name", u"settings", u"system_capabilities", - u"current_version", u"version_group_type", u"class_prefix", - u"any_string" ] + ruleNames = [ "start", "root_element", "archive_version", "classes", + "object_version", "objects", "root_object", "pbx_aggregate_target_section", + "pbx_build_file_section", "pbx_container_item_proxy_section", + "pbx_copy_files_build_phase_section", "pbx_file_reference_section", + "pbx_frameworks_build_phase_section", "pbx_group_section", + "pbx_headers_build_phase_section", "pbx_native_target_section", + "pbx_project_section", "pbx_reference_proxy_section", + "pbx_resources_build_phase_section", "pbx_shell_script_build_phase_section", + "pbx_sources_build_phase_section", "pbx_target_dependency_section", + "pbx_variant_group_section", "xc_build_configuration_section", + "xc_configuration_list_section", "xc_remote_swift_package_reference_section", + "xc_swift_package_product_dependency_section", "xc_version_group_section", + "pbx_aggregate_target", "pbx_build_file", "pbx_container_item_proxy", + "pbx_copy_files_build_phase", "pbx_file_reference", "pbx_frameworks_build_phase", + "pbx_group", "pbx_headers_build_phase", "pbx_native_target", + "pbx_project", "pbx_reference_proxy", "pbx_resources_build_phase", + "pbx_shell_script_build_phase", "pbx_sources_build_phase", + "pbx_target_dependency", "pbx_variant_group", "xc_build_configuration", + "xc_configuration_list", "xc_remote_swift_package_reference", + "xc_swift_package_product_dependency", "xc_version_group", + "isa_pbx_aggregate_target", "isa_pbx_build_file", "isa_pbx_container_item_proxy", + "isa_pbx_copy_files_build_phase", "isa_pbx_file_reference", + "isa_pbx_frameworks_build_phase", "isa_pbx_group", "isa_pbx_header_build_phase", + "isa_pbx_native_target", "isa_pbx_project", "isa_pbx_reference_proxy", + "isa_pbx_resources_build_phase", "isa_pbx_shell_script_build_phase", + "isa_pbx_sources_build_phase", "isa_pbx_target_dependency", + "isa_pbx_variant_group", "isa_xc_build_configuration", + "isa_xc_configuration_list", "isa_xc_remote_swift_package_reference", + "isa_xc_swift_package_product_dependency", "isa_xc_version_group", + "file_ref", "container_portal", "proxy_type", "remote_global_id_string", + "remote_info", "file_encoding", "explicit_file_type", + "last_known_file_type", "include_in_index", "indent_width", + "tab_width", "uses_tabs", "children", "product_install_path", + "repository_url", "requirement", "xc_package", "package_product_dependencies", + "name", "path", "source_tree", "build_action_mask", "files", + "run_only_for_deployment_postprocessing", "reference_list", + "any_string_list", "non_quoted_strings_list", "build_configuration_list", + "build_phases", "build_rules", "dependencies", "product_name", + "product_reference", "product_type", "line_ending", "xc_language_specification_identifier", + "plist_structure_definition_identifier", "attributes", + "last_swift_migration", "default_build_system_type_for_workspace", + "last_swift_update_check", "build_targets_in_parallel", + "last_upgrade_check", "last_testing_upgrade_check", "organization_name", + "target_attributes", "target_attribute", "created_on_tools_version", + "test_target_id", "development_team", "provisioning_style", + "compatibility_version", "development_region", "has_scanned_for_encodings", + "known_regions", "main_group", "product_ref_group", "package_references", + "project_dir_path", "project_references", "project_root", + "targets", "input_file_list_paths", "input_paths", "output_file_list_paths", + "output_paths", "shell_path", "shell_script", "show_env_vars_in_log", + "target", "target_proxy", "file_type", "remote_ref", + "base_configuration_reference", "build_settings", "dst_path", + "dst_subfolder_spec", "project_references_list", "project_references_list_element", + "key_value", "build_configurations", "default_configuration_is_visible", + "default_configuration_name", "settings", "system_capabilities", + "current_version", "version_group_type", "class_prefix", + "any_string" ] EOF = Token.EOF T__0=1 @@ -1170,18 +1160,20 @@ class PBXProjParser ( Parser ): COMMENT=131 LINE_COMMENT=132 - def __init__(self, input): - super(PBXProjParser, self).__init__(input) - self.checkVersion("4.6") + def __init__(self, input:TokenStream, output:TextIO = sys.stdout): + super().__init__(input, output) + self.checkVersion("4.9.2") self._interp = ParserATNSimulator(self, self.atn, self.decisionsToDFA, self.sharedContextCache) self._predicates = None + class StartContext(ParserRuleContext): + __slots__ = 'parser' - def __init__(self, parser, parent=None, invokingState=-1): - super(PBXProjParser.StartContext, self).__init__(parent, invokingState) + def __init__(self, parser, parent:ParserRuleContext=None, invokingState:int=-1): + super().__init__(parent, invokingState) self.parser = parser def root_element(self): @@ -1191,12 +1183,12 @@ def root_element(self): def getRuleIndex(self): return PBXProjParser.RULE_start - def enterRule(self, listener): - if hasattr(listener, "enterStart"): + def enterRule(self, listener:ParseTreeListener): + if hasattr( listener, "enterStart" ): listener.enterStart(self) - def exitRule(self, listener): - if hasattr(listener, "exitStart"): + def exitRule(self, listener:ParseTreeListener): + if hasattr( listener, "exitStart" ): listener.exitStart(self) @@ -1218,10 +1210,12 @@ def start(self): self.exitRule() return localctx + class Root_elementContext(ParserRuleContext): + __slots__ = 'parser' - def __init__(self, parser, parent=None, invokingState=-1): - super(PBXProjParser.Root_elementContext, self).__init__(parent, invokingState) + def __init__(self, parser, parent:ParserRuleContext=None, invokingState:int=-1): + super().__init__(parent, invokingState) self.parser = parser def archive_version(self): @@ -1247,12 +1241,12 @@ def root_object(self): def getRuleIndex(self): return PBXProjParser.RULE_root_element - def enterRule(self, listener): - if hasattr(listener, "enterRoot_element"): + def enterRule(self, listener:ParseTreeListener): + if hasattr( listener, "enterRoot_element" ): listener.enterRoot_element(self) - def exitRule(self, listener): - if hasattr(listener, "exitRoot_element"): + def exitRule(self, listener:ParseTreeListener): + if hasattr( listener, "exitRoot_element" ): listener.exitRoot_element(self) @@ -1286,10 +1280,12 @@ def root_element(self): self.exitRule() return localctx + class Archive_versionContext(ParserRuleContext): + __slots__ = 'parser' - def __init__(self, parser, parent=None, invokingState=-1): - super(PBXProjParser.Archive_versionContext, self).__init__(parent, invokingState) + def __init__(self, parser, parent:ParserRuleContext=None, invokingState:int=-1): + super().__init__(parent, invokingState) self.parser = parser def NUMBER(self): @@ -1298,12 +1294,12 @@ def NUMBER(self): def getRuleIndex(self): return PBXProjParser.RULE_archive_version - def enterRule(self, listener): - if hasattr(listener, "enterArchive_version"): + def enterRule(self, listener:ParseTreeListener): + if hasattr( listener, "enterArchive_version" ): listener.enterArchive_version(self) - def exitRule(self, listener): - if hasattr(listener, "exitArchive_version"): + def exitRule(self, listener:ParseTreeListener): + if hasattr( listener, "exitArchive_version" ): listener.exitArchive_version(self) @@ -1331,10 +1327,12 @@ def archive_version(self): self.exitRule() return localctx + class ClassesContext(ParserRuleContext): + __slots__ = 'parser' - def __init__(self, parser, parent=None, invokingState=-1): - super(PBXProjParser.ClassesContext, self).__init__(parent, invokingState) + def __init__(self, parser, parent:ParserRuleContext=None, invokingState:int=-1): + super().__init__(parent, invokingState) self.parser = parser def CLASSES(self): @@ -1343,12 +1341,12 @@ def CLASSES(self): def getRuleIndex(self): return PBXProjParser.RULE_classes - def enterRule(self, listener): - if hasattr(listener, "enterClasses"): + def enterRule(self, listener:ParseTreeListener): + if hasattr( listener, "enterClasses" ): listener.enterClasses(self) - def exitRule(self, listener): - if hasattr(listener, "exitClasses"): + def exitRule(self, listener:ParseTreeListener): + if hasattr( listener, "exitClasses" ): listener.exitClasses(self) @@ -1378,10 +1376,12 @@ def classes(self): self.exitRule() return localctx + class Object_versionContext(ParserRuleContext): + __slots__ = 'parser' - def __init__(self, parser, parent=None, invokingState=-1): - super(PBXProjParser.Object_versionContext, self).__init__(parent, invokingState) + def __init__(self, parser, parent:ParserRuleContext=None, invokingState:int=-1): + super().__init__(parent, invokingState) self.parser = parser def NUMBER(self): @@ -1390,12 +1390,12 @@ def NUMBER(self): def getRuleIndex(self): return PBXProjParser.RULE_object_version - def enterRule(self, listener): - if hasattr(listener, "enterObject_version"): + def enterRule(self, listener:ParseTreeListener): + if hasattr( listener, "enterObject_version" ): listener.enterObject_version(self) - def exitRule(self, listener): - if hasattr(listener, "exitObject_version"): + def exitRule(self, listener:ParseTreeListener): + if hasattr( listener, "exitObject_version" ): listener.exitObject_version(self) @@ -1423,10 +1423,12 @@ def object_version(self): self.exitRule() return localctx + class ObjectsContext(ParserRuleContext): + __slots__ = 'parser' - def __init__(self, parser, parent=None, invokingState=-1): - super(PBXProjParser.ObjectsContext, self).__init__(parent, invokingState) + def __init__(self, parser, parent:ParserRuleContext=None, invokingState:int=-1): + super().__init__(parent, invokingState) self.parser = parser def OBJECTS(self): @@ -1519,12 +1521,12 @@ def xc_version_group_section(self): def getRuleIndex(self): return PBXProjParser.RULE_objects - def enterRule(self, listener): - if hasattr(listener, "enterObjects"): + def enterRule(self, listener:ParseTreeListener): + if hasattr( listener, "enterObjects" ): listener.enterObjects(self) - def exitRule(self, listener): - if hasattr(listener, "exitObjects"): + def exitRule(self, listener:ParseTreeListener): + if hasattr( listener, "exitObjects" ): listener.exitObjects(self) @@ -1675,10 +1677,12 @@ def objects(self): self.exitRule() return localctx + class Root_objectContext(ParserRuleContext): + __slots__ = 'parser' - def __init__(self, parser, parent=None, invokingState=-1): - super(PBXProjParser.Root_objectContext, self).__init__(parent, invokingState) + def __init__(self, parser, parent:ParserRuleContext=None, invokingState:int=-1): + super().__init__(parent, invokingState) self.parser = parser def ROOT_OBJECT(self): @@ -1690,12 +1694,12 @@ def REFERENCE(self): def getRuleIndex(self): return PBXProjParser.RULE_root_object - def enterRule(self, listener): - if hasattr(listener, "enterRoot_object"): + def enterRule(self, listener:ParseTreeListener): + if hasattr( listener, "enterRoot_object" ): listener.enterRoot_object(self) - def exitRule(self, listener): - if hasattr(listener, "exitRoot_object"): + def exitRule(self, listener:ParseTreeListener): + if hasattr( listener, "exitRoot_object" ): listener.exitRoot_object(self) @@ -1723,13 +1727,15 @@ def root_object(self): self.exitRule() return localctx + class Pbx_aggregate_target_sectionContext(ParserRuleContext): + __slots__ = 'parser' - def __init__(self, parser, parent=None, invokingState=-1): - super(PBXProjParser.Pbx_aggregate_target_sectionContext, self).__init__(parent, invokingState) + def __init__(self, parser, parent:ParserRuleContext=None, invokingState:int=-1): + super().__init__(parent, invokingState) self.parser = parser - def pbx_aggregate_target(self, i=None): + def pbx_aggregate_target(self, i:int=None): if i is None: return self.getTypedRuleContexts(PBXProjParser.Pbx_aggregate_targetContext) else: @@ -1739,12 +1745,12 @@ def pbx_aggregate_target(self, i=None): def getRuleIndex(self): return PBXProjParser.RULE_pbx_aggregate_target_section - def enterRule(self, listener): - if hasattr(listener, "enterPbx_aggregate_target_section"): + def enterRule(self, listener:ParseTreeListener): + if hasattr( listener, "enterPbx_aggregate_target_section" ): listener.enterPbx_aggregate_target_section(self) - def exitRule(self, listener): - if hasattr(listener, "exitPbx_aggregate_target_section"): + def exitRule(self, listener:ParseTreeListener): + if hasattr( listener, "exitPbx_aggregate_target_section" ): listener.exitPbx_aggregate_target_section(self) @@ -1778,13 +1784,15 @@ def pbx_aggregate_target_section(self): self.exitRule() return localctx + class Pbx_build_file_sectionContext(ParserRuleContext): + __slots__ = 'parser' - def __init__(self, parser, parent=None, invokingState=-1): - super(PBXProjParser.Pbx_build_file_sectionContext, self).__init__(parent, invokingState) + def __init__(self, parser, parent:ParserRuleContext=None, invokingState:int=-1): + super().__init__(parent, invokingState) self.parser = parser - def pbx_build_file(self, i=None): + def pbx_build_file(self, i:int=None): if i is None: return self.getTypedRuleContexts(PBXProjParser.Pbx_build_fileContext) else: @@ -1794,12 +1802,12 @@ def pbx_build_file(self, i=None): def getRuleIndex(self): return PBXProjParser.RULE_pbx_build_file_section - def enterRule(self, listener): - if hasattr(listener, "enterPbx_build_file_section"): + def enterRule(self, listener:ParseTreeListener): + if hasattr( listener, "enterPbx_build_file_section" ): listener.enterPbx_build_file_section(self) - def exitRule(self, listener): - if hasattr(listener, "exitPbx_build_file_section"): + def exitRule(self, listener:ParseTreeListener): + if hasattr( listener, "exitPbx_build_file_section" ): listener.exitPbx_build_file_section(self) @@ -1833,13 +1841,15 @@ def pbx_build_file_section(self): self.exitRule() return localctx + class Pbx_container_item_proxy_sectionContext(ParserRuleContext): + __slots__ = 'parser' - def __init__(self, parser, parent=None, invokingState=-1): - super(PBXProjParser.Pbx_container_item_proxy_sectionContext, self).__init__(parent, invokingState) + def __init__(self, parser, parent:ParserRuleContext=None, invokingState:int=-1): + super().__init__(parent, invokingState) self.parser = parser - def pbx_container_item_proxy(self, i=None): + def pbx_container_item_proxy(self, i:int=None): if i is None: return self.getTypedRuleContexts(PBXProjParser.Pbx_container_item_proxyContext) else: @@ -1849,12 +1859,12 @@ def pbx_container_item_proxy(self, i=None): def getRuleIndex(self): return PBXProjParser.RULE_pbx_container_item_proxy_section - def enterRule(self, listener): - if hasattr(listener, "enterPbx_container_item_proxy_section"): + def enterRule(self, listener:ParseTreeListener): + if hasattr( listener, "enterPbx_container_item_proxy_section" ): listener.enterPbx_container_item_proxy_section(self) - def exitRule(self, listener): - if hasattr(listener, "exitPbx_container_item_proxy_section"): + def exitRule(self, listener:ParseTreeListener): + if hasattr( listener, "exitPbx_container_item_proxy_section" ): listener.exitPbx_container_item_proxy_section(self) @@ -1888,13 +1898,15 @@ def pbx_container_item_proxy_section(self): self.exitRule() return localctx + class Pbx_copy_files_build_phase_sectionContext(ParserRuleContext): + __slots__ = 'parser' - def __init__(self, parser, parent=None, invokingState=-1): - super(PBXProjParser.Pbx_copy_files_build_phase_sectionContext, self).__init__(parent, invokingState) + def __init__(self, parser, parent:ParserRuleContext=None, invokingState:int=-1): + super().__init__(parent, invokingState) self.parser = parser - def pbx_copy_files_build_phase(self, i=None): + def pbx_copy_files_build_phase(self, i:int=None): if i is None: return self.getTypedRuleContexts(PBXProjParser.Pbx_copy_files_build_phaseContext) else: @@ -1904,12 +1916,12 @@ def pbx_copy_files_build_phase(self, i=None): def getRuleIndex(self): return PBXProjParser.RULE_pbx_copy_files_build_phase_section - def enterRule(self, listener): - if hasattr(listener, "enterPbx_copy_files_build_phase_section"): + def enterRule(self, listener:ParseTreeListener): + if hasattr( listener, "enterPbx_copy_files_build_phase_section" ): listener.enterPbx_copy_files_build_phase_section(self) - def exitRule(self, listener): - if hasattr(listener, "exitPbx_copy_files_build_phase_section"): + def exitRule(self, listener:ParseTreeListener): + if hasattr( listener, "exitPbx_copy_files_build_phase_section" ): listener.exitPbx_copy_files_build_phase_section(self) @@ -1943,13 +1955,15 @@ def pbx_copy_files_build_phase_section(self): self.exitRule() return localctx + class Pbx_file_reference_sectionContext(ParserRuleContext): + __slots__ = 'parser' - def __init__(self, parser, parent=None, invokingState=-1): - super(PBXProjParser.Pbx_file_reference_sectionContext, self).__init__(parent, invokingState) + def __init__(self, parser, parent:ParserRuleContext=None, invokingState:int=-1): + super().__init__(parent, invokingState) self.parser = parser - def pbx_file_reference(self, i=None): + def pbx_file_reference(self, i:int=None): if i is None: return self.getTypedRuleContexts(PBXProjParser.Pbx_file_referenceContext) else: @@ -1959,12 +1973,12 @@ def pbx_file_reference(self, i=None): def getRuleIndex(self): return PBXProjParser.RULE_pbx_file_reference_section - def enterRule(self, listener): - if hasattr(listener, "enterPbx_file_reference_section"): + def enterRule(self, listener:ParseTreeListener): + if hasattr( listener, "enterPbx_file_reference_section" ): listener.enterPbx_file_reference_section(self) - def exitRule(self, listener): - if hasattr(listener, "exitPbx_file_reference_section"): + def exitRule(self, listener:ParseTreeListener): + if hasattr( listener, "exitPbx_file_reference_section" ): listener.exitPbx_file_reference_section(self) @@ -1998,13 +2012,15 @@ def pbx_file_reference_section(self): self.exitRule() return localctx + class Pbx_frameworks_build_phase_sectionContext(ParserRuleContext): + __slots__ = 'parser' - def __init__(self, parser, parent=None, invokingState=-1): - super(PBXProjParser.Pbx_frameworks_build_phase_sectionContext, self).__init__(parent, invokingState) + def __init__(self, parser, parent:ParserRuleContext=None, invokingState:int=-1): + super().__init__(parent, invokingState) self.parser = parser - def pbx_frameworks_build_phase(self, i=None): + def pbx_frameworks_build_phase(self, i:int=None): if i is None: return self.getTypedRuleContexts(PBXProjParser.Pbx_frameworks_build_phaseContext) else: @@ -2014,12 +2030,12 @@ def pbx_frameworks_build_phase(self, i=None): def getRuleIndex(self): return PBXProjParser.RULE_pbx_frameworks_build_phase_section - def enterRule(self, listener): - if hasattr(listener, "enterPbx_frameworks_build_phase_section"): + def enterRule(self, listener:ParseTreeListener): + if hasattr( listener, "enterPbx_frameworks_build_phase_section" ): listener.enterPbx_frameworks_build_phase_section(self) - def exitRule(self, listener): - if hasattr(listener, "exitPbx_frameworks_build_phase_section"): + def exitRule(self, listener:ParseTreeListener): + if hasattr( listener, "exitPbx_frameworks_build_phase_section" ): listener.exitPbx_frameworks_build_phase_section(self) @@ -2053,13 +2069,15 @@ def pbx_frameworks_build_phase_section(self): self.exitRule() return localctx + class Pbx_group_sectionContext(ParserRuleContext): + __slots__ = 'parser' - def __init__(self, parser, parent=None, invokingState=-1): - super(PBXProjParser.Pbx_group_sectionContext, self).__init__(parent, invokingState) + def __init__(self, parser, parent:ParserRuleContext=None, invokingState:int=-1): + super().__init__(parent, invokingState) self.parser = parser - def pbx_group(self, i=None): + def pbx_group(self, i:int=None): if i is None: return self.getTypedRuleContexts(PBXProjParser.Pbx_groupContext) else: @@ -2069,12 +2087,12 @@ def pbx_group(self, i=None): def getRuleIndex(self): return PBXProjParser.RULE_pbx_group_section - def enterRule(self, listener): - if hasattr(listener, "enterPbx_group_section"): + def enterRule(self, listener:ParseTreeListener): + if hasattr( listener, "enterPbx_group_section" ): listener.enterPbx_group_section(self) - def exitRule(self, listener): - if hasattr(listener, "exitPbx_group_section"): + def exitRule(self, listener:ParseTreeListener): + if hasattr( listener, "exitPbx_group_section" ): listener.exitPbx_group_section(self) @@ -2108,13 +2126,15 @@ def pbx_group_section(self): self.exitRule() return localctx + class Pbx_headers_build_phase_sectionContext(ParserRuleContext): + __slots__ = 'parser' - def __init__(self, parser, parent=None, invokingState=-1): - super(PBXProjParser.Pbx_headers_build_phase_sectionContext, self).__init__(parent, invokingState) + def __init__(self, parser, parent:ParserRuleContext=None, invokingState:int=-1): + super().__init__(parent, invokingState) self.parser = parser - def pbx_headers_build_phase(self, i=None): + def pbx_headers_build_phase(self, i:int=None): if i is None: return self.getTypedRuleContexts(PBXProjParser.Pbx_headers_build_phaseContext) else: @@ -2124,12 +2144,12 @@ def pbx_headers_build_phase(self, i=None): def getRuleIndex(self): return PBXProjParser.RULE_pbx_headers_build_phase_section - def enterRule(self, listener): - if hasattr(listener, "enterPbx_headers_build_phase_section"): + def enterRule(self, listener:ParseTreeListener): + if hasattr( listener, "enterPbx_headers_build_phase_section" ): listener.enterPbx_headers_build_phase_section(self) - def exitRule(self, listener): - if hasattr(listener, "exitPbx_headers_build_phase_section"): + def exitRule(self, listener:ParseTreeListener): + if hasattr( listener, "exitPbx_headers_build_phase_section" ): listener.exitPbx_headers_build_phase_section(self) @@ -2163,13 +2183,15 @@ def pbx_headers_build_phase_section(self): self.exitRule() return localctx + class Pbx_native_target_sectionContext(ParserRuleContext): + __slots__ = 'parser' - def __init__(self, parser, parent=None, invokingState=-1): - super(PBXProjParser.Pbx_native_target_sectionContext, self).__init__(parent, invokingState) + def __init__(self, parser, parent:ParserRuleContext=None, invokingState:int=-1): + super().__init__(parent, invokingState) self.parser = parser - def pbx_native_target(self, i=None): + def pbx_native_target(self, i:int=None): if i is None: return self.getTypedRuleContexts(PBXProjParser.Pbx_native_targetContext) else: @@ -2179,12 +2201,12 @@ def pbx_native_target(self, i=None): def getRuleIndex(self): return PBXProjParser.RULE_pbx_native_target_section - def enterRule(self, listener): - if hasattr(listener, "enterPbx_native_target_section"): + def enterRule(self, listener:ParseTreeListener): + if hasattr( listener, "enterPbx_native_target_section" ): listener.enterPbx_native_target_section(self) - def exitRule(self, listener): - if hasattr(listener, "exitPbx_native_target_section"): + def exitRule(self, listener:ParseTreeListener): + if hasattr( listener, "exitPbx_native_target_section" ): listener.exitPbx_native_target_section(self) @@ -2218,13 +2240,15 @@ def pbx_native_target_section(self): self.exitRule() return localctx + class Pbx_project_sectionContext(ParserRuleContext): + __slots__ = 'parser' - def __init__(self, parser, parent=None, invokingState=-1): - super(PBXProjParser.Pbx_project_sectionContext, self).__init__(parent, invokingState) + def __init__(self, parser, parent:ParserRuleContext=None, invokingState:int=-1): + super().__init__(parent, invokingState) self.parser = parser - def pbx_project(self, i=None): + def pbx_project(self, i:int=None): if i is None: return self.getTypedRuleContexts(PBXProjParser.Pbx_projectContext) else: @@ -2234,12 +2258,12 @@ def pbx_project(self, i=None): def getRuleIndex(self): return PBXProjParser.RULE_pbx_project_section - def enterRule(self, listener): - if hasattr(listener, "enterPbx_project_section"): + def enterRule(self, listener:ParseTreeListener): + if hasattr( listener, "enterPbx_project_section" ): listener.enterPbx_project_section(self) - def exitRule(self, listener): - if hasattr(listener, "exitPbx_project_section"): + def exitRule(self, listener:ParseTreeListener): + if hasattr( listener, "exitPbx_project_section" ): listener.exitPbx_project_section(self) @@ -2273,13 +2297,15 @@ def pbx_project_section(self): self.exitRule() return localctx + class Pbx_reference_proxy_sectionContext(ParserRuleContext): + __slots__ = 'parser' - def __init__(self, parser, parent=None, invokingState=-1): - super(PBXProjParser.Pbx_reference_proxy_sectionContext, self).__init__(parent, invokingState) + def __init__(self, parser, parent:ParserRuleContext=None, invokingState:int=-1): + super().__init__(parent, invokingState) self.parser = parser - def pbx_reference_proxy(self, i=None): + def pbx_reference_proxy(self, i:int=None): if i is None: return self.getTypedRuleContexts(PBXProjParser.Pbx_reference_proxyContext) else: @@ -2289,12 +2315,12 @@ def pbx_reference_proxy(self, i=None): def getRuleIndex(self): return PBXProjParser.RULE_pbx_reference_proxy_section - def enterRule(self, listener): - if hasattr(listener, "enterPbx_reference_proxy_section"): + def enterRule(self, listener:ParseTreeListener): + if hasattr( listener, "enterPbx_reference_proxy_section" ): listener.enterPbx_reference_proxy_section(self) - def exitRule(self, listener): - if hasattr(listener, "exitPbx_reference_proxy_section"): + def exitRule(self, listener:ParseTreeListener): + if hasattr( listener, "exitPbx_reference_proxy_section" ): listener.exitPbx_reference_proxy_section(self) @@ -2328,13 +2354,15 @@ def pbx_reference_proxy_section(self): self.exitRule() return localctx + class Pbx_resources_build_phase_sectionContext(ParserRuleContext): + __slots__ = 'parser' - def __init__(self, parser, parent=None, invokingState=-1): - super(PBXProjParser.Pbx_resources_build_phase_sectionContext, self).__init__(parent, invokingState) + def __init__(self, parser, parent:ParserRuleContext=None, invokingState:int=-1): + super().__init__(parent, invokingState) self.parser = parser - def pbx_resources_build_phase(self, i=None): + def pbx_resources_build_phase(self, i:int=None): if i is None: return self.getTypedRuleContexts(PBXProjParser.Pbx_resources_build_phaseContext) else: @@ -2344,12 +2372,12 @@ def pbx_resources_build_phase(self, i=None): def getRuleIndex(self): return PBXProjParser.RULE_pbx_resources_build_phase_section - def enterRule(self, listener): - if hasattr(listener, "enterPbx_resources_build_phase_section"): + def enterRule(self, listener:ParseTreeListener): + if hasattr( listener, "enterPbx_resources_build_phase_section" ): listener.enterPbx_resources_build_phase_section(self) - def exitRule(self, listener): - if hasattr(listener, "exitPbx_resources_build_phase_section"): + def exitRule(self, listener:ParseTreeListener): + if hasattr( listener, "exitPbx_resources_build_phase_section" ): listener.exitPbx_resources_build_phase_section(self) @@ -2383,13 +2411,15 @@ def pbx_resources_build_phase_section(self): self.exitRule() return localctx + class Pbx_shell_script_build_phase_sectionContext(ParserRuleContext): + __slots__ = 'parser' - def __init__(self, parser, parent=None, invokingState=-1): - super(PBXProjParser.Pbx_shell_script_build_phase_sectionContext, self).__init__(parent, invokingState) + def __init__(self, parser, parent:ParserRuleContext=None, invokingState:int=-1): + super().__init__(parent, invokingState) self.parser = parser - def pbx_shell_script_build_phase(self, i=None): + def pbx_shell_script_build_phase(self, i:int=None): if i is None: return self.getTypedRuleContexts(PBXProjParser.Pbx_shell_script_build_phaseContext) else: @@ -2399,12 +2429,12 @@ def pbx_shell_script_build_phase(self, i=None): def getRuleIndex(self): return PBXProjParser.RULE_pbx_shell_script_build_phase_section - def enterRule(self, listener): - if hasattr(listener, "enterPbx_shell_script_build_phase_section"): + def enterRule(self, listener:ParseTreeListener): + if hasattr( listener, "enterPbx_shell_script_build_phase_section" ): listener.enterPbx_shell_script_build_phase_section(self) - def exitRule(self, listener): - if hasattr(listener, "exitPbx_shell_script_build_phase_section"): + def exitRule(self, listener:ParseTreeListener): + if hasattr( listener, "exitPbx_shell_script_build_phase_section" ): listener.exitPbx_shell_script_build_phase_section(self) @@ -2438,13 +2468,15 @@ def pbx_shell_script_build_phase_section(self): self.exitRule() return localctx + class Pbx_sources_build_phase_sectionContext(ParserRuleContext): + __slots__ = 'parser' - def __init__(self, parser, parent=None, invokingState=-1): - super(PBXProjParser.Pbx_sources_build_phase_sectionContext, self).__init__(parent, invokingState) + def __init__(self, parser, parent:ParserRuleContext=None, invokingState:int=-1): + super().__init__(parent, invokingState) self.parser = parser - def pbx_sources_build_phase(self, i=None): + def pbx_sources_build_phase(self, i:int=None): if i is None: return self.getTypedRuleContexts(PBXProjParser.Pbx_sources_build_phaseContext) else: @@ -2454,12 +2486,12 @@ def pbx_sources_build_phase(self, i=None): def getRuleIndex(self): return PBXProjParser.RULE_pbx_sources_build_phase_section - def enterRule(self, listener): - if hasattr(listener, "enterPbx_sources_build_phase_section"): + def enterRule(self, listener:ParseTreeListener): + if hasattr( listener, "enterPbx_sources_build_phase_section" ): listener.enterPbx_sources_build_phase_section(self) - def exitRule(self, listener): - if hasattr(listener, "exitPbx_sources_build_phase_section"): + def exitRule(self, listener:ParseTreeListener): + if hasattr( listener, "exitPbx_sources_build_phase_section" ): listener.exitPbx_sources_build_phase_section(self) @@ -2493,13 +2525,15 @@ def pbx_sources_build_phase_section(self): self.exitRule() return localctx + class Pbx_target_dependency_sectionContext(ParserRuleContext): + __slots__ = 'parser' - def __init__(self, parser, parent=None, invokingState=-1): - super(PBXProjParser.Pbx_target_dependency_sectionContext, self).__init__(parent, invokingState) + def __init__(self, parser, parent:ParserRuleContext=None, invokingState:int=-1): + super().__init__(parent, invokingState) self.parser = parser - def pbx_target_dependency(self, i=None): + def pbx_target_dependency(self, i:int=None): if i is None: return self.getTypedRuleContexts(PBXProjParser.Pbx_target_dependencyContext) else: @@ -2509,12 +2543,12 @@ def pbx_target_dependency(self, i=None): def getRuleIndex(self): return PBXProjParser.RULE_pbx_target_dependency_section - def enterRule(self, listener): - if hasattr(listener, "enterPbx_target_dependency_section"): + def enterRule(self, listener:ParseTreeListener): + if hasattr( listener, "enterPbx_target_dependency_section" ): listener.enterPbx_target_dependency_section(self) - def exitRule(self, listener): - if hasattr(listener, "exitPbx_target_dependency_section"): + def exitRule(self, listener:ParseTreeListener): + if hasattr( listener, "exitPbx_target_dependency_section" ): listener.exitPbx_target_dependency_section(self) @@ -2548,13 +2582,15 @@ def pbx_target_dependency_section(self): self.exitRule() return localctx + class Pbx_variant_group_sectionContext(ParserRuleContext): + __slots__ = 'parser' - def __init__(self, parser, parent=None, invokingState=-1): - super(PBXProjParser.Pbx_variant_group_sectionContext, self).__init__(parent, invokingState) + def __init__(self, parser, parent:ParserRuleContext=None, invokingState:int=-1): + super().__init__(parent, invokingState) self.parser = parser - def pbx_variant_group(self, i=None): + def pbx_variant_group(self, i:int=None): if i is None: return self.getTypedRuleContexts(PBXProjParser.Pbx_variant_groupContext) else: @@ -2564,12 +2600,12 @@ def pbx_variant_group(self, i=None): def getRuleIndex(self): return PBXProjParser.RULE_pbx_variant_group_section - def enterRule(self, listener): - if hasattr(listener, "enterPbx_variant_group_section"): + def enterRule(self, listener:ParseTreeListener): + if hasattr( listener, "enterPbx_variant_group_section" ): listener.enterPbx_variant_group_section(self) - def exitRule(self, listener): - if hasattr(listener, "exitPbx_variant_group_section"): + def exitRule(self, listener:ParseTreeListener): + if hasattr( listener, "exitPbx_variant_group_section" ): listener.exitPbx_variant_group_section(self) @@ -2603,13 +2639,15 @@ def pbx_variant_group_section(self): self.exitRule() return localctx + class Xc_build_configuration_sectionContext(ParserRuleContext): + __slots__ = 'parser' - def __init__(self, parser, parent=None, invokingState=-1): - super(PBXProjParser.Xc_build_configuration_sectionContext, self).__init__(parent, invokingState) + def __init__(self, parser, parent:ParserRuleContext=None, invokingState:int=-1): + super().__init__(parent, invokingState) self.parser = parser - def xc_build_configuration(self, i=None): + def xc_build_configuration(self, i:int=None): if i is None: return self.getTypedRuleContexts(PBXProjParser.Xc_build_configurationContext) else: @@ -2619,12 +2657,12 @@ def xc_build_configuration(self, i=None): def getRuleIndex(self): return PBXProjParser.RULE_xc_build_configuration_section - def enterRule(self, listener): - if hasattr(listener, "enterXc_build_configuration_section"): + def enterRule(self, listener:ParseTreeListener): + if hasattr( listener, "enterXc_build_configuration_section" ): listener.enterXc_build_configuration_section(self) - def exitRule(self, listener): - if hasattr(listener, "exitXc_build_configuration_section"): + def exitRule(self, listener:ParseTreeListener): + if hasattr( listener, "exitXc_build_configuration_section" ): listener.exitXc_build_configuration_section(self) @@ -2658,13 +2696,15 @@ def xc_build_configuration_section(self): self.exitRule() return localctx + class Xc_configuration_list_sectionContext(ParserRuleContext): + __slots__ = 'parser' - def __init__(self, parser, parent=None, invokingState=-1): - super(PBXProjParser.Xc_configuration_list_sectionContext, self).__init__(parent, invokingState) + def __init__(self, parser, parent:ParserRuleContext=None, invokingState:int=-1): + super().__init__(parent, invokingState) self.parser = parser - def xc_configuration_list(self, i=None): + def xc_configuration_list(self, i:int=None): if i is None: return self.getTypedRuleContexts(PBXProjParser.Xc_configuration_listContext) else: @@ -2674,12 +2714,12 @@ def xc_configuration_list(self, i=None): def getRuleIndex(self): return PBXProjParser.RULE_xc_configuration_list_section - def enterRule(self, listener): - if hasattr(listener, "enterXc_configuration_list_section"): + def enterRule(self, listener:ParseTreeListener): + if hasattr( listener, "enterXc_configuration_list_section" ): listener.enterXc_configuration_list_section(self) - def exitRule(self, listener): - if hasattr(listener, "exitXc_configuration_list_section"): + def exitRule(self, listener:ParseTreeListener): + if hasattr( listener, "exitXc_configuration_list_section" ): listener.exitXc_configuration_list_section(self) @@ -2713,13 +2753,15 @@ def xc_configuration_list_section(self): self.exitRule() return localctx + class Xc_remote_swift_package_reference_sectionContext(ParserRuleContext): + __slots__ = 'parser' - def __init__(self, parser, parent=None, invokingState=-1): - super(PBXProjParser.Xc_remote_swift_package_reference_sectionContext, self).__init__(parent, invokingState) + def __init__(self, parser, parent:ParserRuleContext=None, invokingState:int=-1): + super().__init__(parent, invokingState) self.parser = parser - def xc_remote_swift_package_reference(self, i=None): + def xc_remote_swift_package_reference(self, i:int=None): if i is None: return self.getTypedRuleContexts(PBXProjParser.Xc_remote_swift_package_referenceContext) else: @@ -2729,12 +2771,12 @@ def xc_remote_swift_package_reference(self, i=None): def getRuleIndex(self): return PBXProjParser.RULE_xc_remote_swift_package_reference_section - def enterRule(self, listener): - if hasattr(listener, "enterXc_remote_swift_package_reference_section"): + def enterRule(self, listener:ParseTreeListener): + if hasattr( listener, "enterXc_remote_swift_package_reference_section" ): listener.enterXc_remote_swift_package_reference_section(self) - def exitRule(self, listener): - if hasattr(listener, "exitXc_remote_swift_package_reference_section"): + def exitRule(self, listener:ParseTreeListener): + if hasattr( listener, "exitXc_remote_swift_package_reference_section" ): listener.exitXc_remote_swift_package_reference_section(self) @@ -2768,13 +2810,15 @@ def xc_remote_swift_package_reference_section(self): self.exitRule() return localctx + class Xc_swift_package_product_dependency_sectionContext(ParserRuleContext): + __slots__ = 'parser' - def __init__(self, parser, parent=None, invokingState=-1): - super(PBXProjParser.Xc_swift_package_product_dependency_sectionContext, self).__init__(parent, invokingState) + def __init__(self, parser, parent:ParserRuleContext=None, invokingState:int=-1): + super().__init__(parent, invokingState) self.parser = parser - def xc_swift_package_product_dependency(self, i=None): + def xc_swift_package_product_dependency(self, i:int=None): if i is None: return self.getTypedRuleContexts(PBXProjParser.Xc_swift_package_product_dependencyContext) else: @@ -2784,12 +2828,12 @@ def xc_swift_package_product_dependency(self, i=None): def getRuleIndex(self): return PBXProjParser.RULE_xc_swift_package_product_dependency_section - def enterRule(self, listener): - if hasattr(listener, "enterXc_swift_package_product_dependency_section"): + def enterRule(self, listener:ParseTreeListener): + if hasattr( listener, "enterXc_swift_package_product_dependency_section" ): listener.enterXc_swift_package_product_dependency_section(self) - def exitRule(self, listener): - if hasattr(listener, "exitXc_swift_package_product_dependency_section"): + def exitRule(self, listener:ParseTreeListener): + if hasattr( listener, "exitXc_swift_package_product_dependency_section" ): listener.exitXc_swift_package_product_dependency_section(self) @@ -2823,13 +2867,15 @@ def xc_swift_package_product_dependency_section(self): self.exitRule() return localctx + class Xc_version_group_sectionContext(ParserRuleContext): + __slots__ = 'parser' - def __init__(self, parser, parent=None, invokingState=-1): - super(PBXProjParser.Xc_version_group_sectionContext, self).__init__(parent, invokingState) + def __init__(self, parser, parent:ParserRuleContext=None, invokingState:int=-1): + super().__init__(parent, invokingState) self.parser = parser - def xc_version_group(self, i=None): + def xc_version_group(self, i:int=None): if i is None: return self.getTypedRuleContexts(PBXProjParser.Xc_version_groupContext) else: @@ -2839,12 +2885,12 @@ def xc_version_group(self, i=None): def getRuleIndex(self): return PBXProjParser.RULE_xc_version_group_section - def enterRule(self, listener): - if hasattr(listener, "enterXc_version_group_section"): + def enterRule(self, listener:ParseTreeListener): + if hasattr( listener, "enterXc_version_group_section" ): listener.enterXc_version_group_section(self) - def exitRule(self, listener): - if hasattr(listener, "exitXc_version_group_section"): + def exitRule(self, listener:ParseTreeListener): + if hasattr( listener, "exitXc_version_group_section" ): listener.exitXc_version_group_section(self) @@ -2877,10 +2923,12 @@ def xc_version_group_section(self): self.exitRule() return localctx + class Pbx_aggregate_targetContext(ParserRuleContext): + __slots__ = 'parser' - def __init__(self, parser, parent=None, invokingState=-1): - super(PBXProjParser.Pbx_aggregate_targetContext, self).__init__(parent, invokingState) + def __init__(self, parser, parent:ParserRuleContext=None, invokingState:int=-1): + super().__init__(parent, invokingState) self.parser = parser def REFERENCE(self): @@ -2913,12 +2961,12 @@ def product_name(self): def getRuleIndex(self): return PBXProjParser.RULE_pbx_aggregate_target - def enterRule(self, listener): - if hasattr(listener, "enterPbx_aggregate_target"): + def enterRule(self, listener:ParseTreeListener): + if hasattr( listener, "enterPbx_aggregate_target" ): listener.enterPbx_aggregate_target(self) - def exitRule(self, listener): - if hasattr(listener, "exitPbx_aggregate_target"): + def exitRule(self, listener:ParseTreeListener): + if hasattr( listener, "exitPbx_aggregate_target" ): listener.exitPbx_aggregate_target(self) @@ -2960,10 +3008,12 @@ def pbx_aggregate_target(self): self.exitRule() return localctx + class Pbx_build_fileContext(ParserRuleContext): + __slots__ = 'parser' - def __init__(self, parser, parent=None, invokingState=-1): - super(PBXProjParser.Pbx_build_fileContext, self).__init__(parent, invokingState) + def __init__(self, parser, parent:ParserRuleContext=None, invokingState:int=-1): + super().__init__(parent, invokingState) self.parser = parser def REFERENCE(self): @@ -2984,12 +3034,12 @@ def settings(self): def getRuleIndex(self): return PBXProjParser.RULE_pbx_build_file - def enterRule(self, listener): - if hasattr(listener, "enterPbx_build_file"): + def enterRule(self, listener:ParseTreeListener): + if hasattr( listener, "enterPbx_build_file" ): listener.enterPbx_build_file(self) - def exitRule(self, listener): - if hasattr(listener, "exitPbx_build_file"): + def exitRule(self, listener:ParseTreeListener): + if hasattr( listener, "exitPbx_build_file" ): listener.exitPbx_build_file(self) @@ -3032,10 +3082,12 @@ def pbx_build_file(self): self.exitRule() return localctx + class Pbx_container_item_proxyContext(ParserRuleContext): + __slots__ = 'parser' - def __init__(self, parser, parent=None, invokingState=-1): - super(PBXProjParser.Pbx_container_item_proxyContext, self).__init__(parent, invokingState) + def __init__(self, parser, parent:ParserRuleContext=None, invokingState:int=-1): + super().__init__(parent, invokingState) self.parser = parser def REFERENCE(self): @@ -3064,12 +3116,12 @@ def remote_info(self): def getRuleIndex(self): return PBXProjParser.RULE_pbx_container_item_proxy - def enterRule(self, listener): - if hasattr(listener, "enterPbx_container_item_proxy"): + def enterRule(self, listener:ParseTreeListener): + if hasattr( listener, "enterPbx_container_item_proxy" ): listener.enterPbx_container_item_proxy(self) - def exitRule(self, listener): - if hasattr(listener, "exitPbx_container_item_proxy"): + def exitRule(self, listener:ParseTreeListener): + if hasattr( listener, "exitPbx_container_item_proxy" ): listener.exitPbx_container_item_proxy(self) @@ -3109,10 +3161,12 @@ def pbx_container_item_proxy(self): self.exitRule() return localctx + class Pbx_copy_files_build_phaseContext(ParserRuleContext): + __slots__ = 'parser' - def __init__(self, parser, parent=None, invokingState=-1): - super(PBXProjParser.Pbx_copy_files_build_phaseContext, self).__init__(parent, invokingState) + def __init__(self, parser, parent:ParserRuleContext=None, invokingState:int=-1): + super().__init__(parent, invokingState) self.parser = parser def REFERENCE(self): @@ -3149,12 +3203,12 @@ def name(self): def getRuleIndex(self): return PBXProjParser.RULE_pbx_copy_files_build_phase - def enterRule(self, listener): - if hasattr(listener, "enterPbx_copy_files_build_phase"): + def enterRule(self, listener:ParseTreeListener): + if hasattr( listener, "enterPbx_copy_files_build_phase" ): listener.enterPbx_copy_files_build_phase(self) - def exitRule(self, listener): - if hasattr(listener, "exitPbx_copy_files_build_phase"): + def exitRule(self, listener:ParseTreeListener): + if hasattr( listener, "exitPbx_copy_files_build_phase" ): listener.exitPbx_copy_files_build_phase(self) @@ -3205,10 +3259,12 @@ def pbx_copy_files_build_phase(self): self.exitRule() return localctx + class Pbx_file_referenceContext(ParserRuleContext): + __slots__ = 'parser' - def __init__(self, parser, parent=None, invokingState=-1): - super(PBXProjParser.Pbx_file_referenceContext, self).__init__(parent, invokingState) + def __init__(self, parser, parent:ParserRuleContext=None, invokingState:int=-1): + super().__init__(parent, invokingState) self.parser = parser def REFERENCE(self): @@ -3265,12 +3321,12 @@ def uses_tabs(self): def getRuleIndex(self): return PBXProjParser.RULE_pbx_file_reference - def enterRule(self, listener): - if hasattr(listener, "enterPbx_file_reference"): + def enterRule(self, listener:ParseTreeListener): + if hasattr( listener, "enterPbx_file_reference" ): listener.enterPbx_file_reference(self) - def exitRule(self, listener): - if hasattr(listener, "exitPbx_file_reference"): + def exitRule(self, listener:ParseTreeListener): + if hasattr( listener, "exitPbx_file_reference" ): listener.exitPbx_file_reference(self) @@ -3391,10 +3447,12 @@ def pbx_file_reference(self): self.exitRule() return localctx + class Pbx_frameworks_build_phaseContext(ParserRuleContext): + __slots__ = 'parser' - def __init__(self, parser, parent=None, invokingState=-1): - super(PBXProjParser.Pbx_frameworks_build_phaseContext, self).__init__(parent, invokingState) + def __init__(self, parser, parent:ParserRuleContext=None, invokingState:int=-1): + super().__init__(parent, invokingState) self.parser = parser def REFERENCE(self): @@ -3419,12 +3477,12 @@ def run_only_for_deployment_postprocessing(self): def getRuleIndex(self): return PBXProjParser.RULE_pbx_frameworks_build_phase - def enterRule(self, listener): - if hasattr(listener, "enterPbx_frameworks_build_phase"): + def enterRule(self, listener:ParseTreeListener): + if hasattr( listener, "enterPbx_frameworks_build_phase" ): listener.enterPbx_frameworks_build_phase(self) - def exitRule(self, listener): - if hasattr(listener, "exitPbx_frameworks_build_phase"): + def exitRule(self, listener:ParseTreeListener): + if hasattr( listener, "exitPbx_frameworks_build_phase" ): listener.exitPbx_frameworks_build_phase(self) @@ -3462,10 +3520,12 @@ def pbx_frameworks_build_phase(self): self.exitRule() return localctx + class Pbx_groupContext(ParserRuleContext): + __slots__ = 'parser' - def __init__(self, parser, parent=None, invokingState=-1): - super(PBXProjParser.Pbx_groupContext, self).__init__(parent, invokingState) + def __init__(self, parser, parent:ParserRuleContext=None, invokingState:int=-1): + super().__init__(parent, invokingState) self.parser = parser def REFERENCE(self): @@ -3506,12 +3566,12 @@ def uses_tabs(self): def getRuleIndex(self): return PBXProjParser.RULE_pbx_group - def enterRule(self, listener): - if hasattr(listener, "enterPbx_group"): + def enterRule(self, listener:ParseTreeListener): + if hasattr( listener, "enterPbx_group" ): listener.enterPbx_group(self) - def exitRule(self, listener): - if hasattr(listener, "exitPbx_group"): + def exitRule(self, listener:ParseTreeListener): + if hasattr( listener, "exitPbx_group" ): listener.exitPbx_group(self) @@ -3588,10 +3648,12 @@ def pbx_group(self): self.exitRule() return localctx + class Pbx_headers_build_phaseContext(ParserRuleContext): + __slots__ = 'parser' - def __init__(self, parser, parent=None, invokingState=-1): - super(PBXProjParser.Pbx_headers_build_phaseContext, self).__init__(parent, invokingState) + def __init__(self, parser, parent:ParserRuleContext=None, invokingState:int=-1): + super().__init__(parent, invokingState) self.parser = parser def REFERENCE(self): @@ -3616,12 +3678,12 @@ def run_only_for_deployment_postprocessing(self): def getRuleIndex(self): return PBXProjParser.RULE_pbx_headers_build_phase - def enterRule(self, listener): - if hasattr(listener, "enterPbx_headers_build_phase"): + def enterRule(self, listener:ParseTreeListener): + if hasattr( listener, "enterPbx_headers_build_phase" ): listener.enterPbx_headers_build_phase(self) - def exitRule(self, listener): - if hasattr(listener, "exitPbx_headers_build_phase"): + def exitRule(self, listener:ParseTreeListener): + if hasattr( listener, "exitPbx_headers_build_phase" ): listener.exitPbx_headers_build_phase(self) @@ -3659,10 +3721,12 @@ def pbx_headers_build_phase(self): self.exitRule() return localctx + class Pbx_native_targetContext(ParserRuleContext): + __slots__ = 'parser' - def __init__(self, parser, parent=None, invokingState=-1): - super(PBXProjParser.Pbx_native_targetContext, self).__init__(parent, invokingState) + def __init__(self, parser, parent:ParserRuleContext=None, invokingState:int=-1): + super().__init__(parent, invokingState) self.parser = parser def REFERENCE(self): @@ -3715,12 +3779,12 @@ def package_product_dependencies(self): def getRuleIndex(self): return PBXProjParser.RULE_pbx_native_target - def enterRule(self, listener): - if hasattr(listener, "enterPbx_native_target"): + def enterRule(self, listener:ParseTreeListener): + if hasattr( listener, "enterPbx_native_target" ): listener.enterPbx_native_target(self) - def exitRule(self, listener): - if hasattr(listener, "exitPbx_native_target"): + def exitRule(self, listener:ParseTreeListener): + if hasattr( listener, "exitPbx_native_target" ): listener.exitPbx_native_target(self) @@ -3785,10 +3849,12 @@ def pbx_native_target(self): self.exitRule() return localctx + class Pbx_projectContext(ParserRuleContext): + __slots__ = 'parser' - def __init__(self, parser, parent=None, invokingState=-1): - super(PBXProjParser.Pbx_projectContext, self).__init__(parent, invokingState) + def __init__(self, parser, parent:ParserRuleContext=None, invokingState:int=-1): + super().__init__(parent, invokingState) self.parser = parser def REFERENCE(self): @@ -3853,12 +3919,12 @@ def project_references(self): def getRuleIndex(self): return PBXProjParser.RULE_pbx_project - def enterRule(self, listener): - if hasattr(listener, "enterPbx_project"): + def enterRule(self, listener:ParseTreeListener): + if hasattr( listener, "enterPbx_project" ): listener.enterPbx_project(self) - def exitRule(self, listener): - if hasattr(listener, "exitPbx_project"): + def exitRule(self, listener:ParseTreeListener): + if hasattr( listener, "exitPbx_project" ): listener.exitPbx_project(self) @@ -3935,10 +4001,12 @@ def pbx_project(self): self.exitRule() return localctx + class Pbx_reference_proxyContext(ParserRuleContext): + __slots__ = 'parser' - def __init__(self, parser, parent=None, invokingState=-1): - super(PBXProjParser.Pbx_reference_proxyContext, self).__init__(parent, invokingState) + def __init__(self, parser, parent:ParserRuleContext=None, invokingState:int=-1): + super().__init__(parent, invokingState) self.parser = parser def REFERENCE(self): @@ -3967,12 +4035,12 @@ def source_tree(self): def getRuleIndex(self): return PBXProjParser.RULE_pbx_reference_proxy - def enterRule(self, listener): - if hasattr(listener, "enterPbx_reference_proxy"): + def enterRule(self, listener:ParseTreeListener): + if hasattr( listener, "enterPbx_reference_proxy" ): listener.enterPbx_reference_proxy(self) - def exitRule(self, listener): - if hasattr(listener, "exitPbx_reference_proxy"): + def exitRule(self, listener:ParseTreeListener): + if hasattr( listener, "exitPbx_reference_proxy" ): listener.exitPbx_reference_proxy(self) @@ -4012,10 +4080,12 @@ def pbx_reference_proxy(self): self.exitRule() return localctx + class Pbx_resources_build_phaseContext(ParserRuleContext): + __slots__ = 'parser' - def __init__(self, parser, parent=None, invokingState=-1): - super(PBXProjParser.Pbx_resources_build_phaseContext, self).__init__(parent, invokingState) + def __init__(self, parser, parent:ParserRuleContext=None, invokingState:int=-1): + super().__init__(parent, invokingState) self.parser = parser def REFERENCE(self): @@ -4040,12 +4110,12 @@ def run_only_for_deployment_postprocessing(self): def getRuleIndex(self): return PBXProjParser.RULE_pbx_resources_build_phase - def enterRule(self, listener): - if hasattr(listener, "enterPbx_resources_build_phase"): + def enterRule(self, listener:ParseTreeListener): + if hasattr( listener, "enterPbx_resources_build_phase" ): listener.enterPbx_resources_build_phase(self) - def exitRule(self, listener): - if hasattr(listener, "exitPbx_resources_build_phase"): + def exitRule(self, listener:ParseTreeListener): + if hasattr( listener, "exitPbx_resources_build_phase" ): listener.exitPbx_resources_build_phase(self) @@ -4083,10 +4153,12 @@ def pbx_resources_build_phase(self): self.exitRule() return localctx + class Pbx_shell_script_build_phaseContext(ParserRuleContext): + __slots__ = 'parser' - def __init__(self, parser, parent=None, invokingState=-1): - super(PBXProjParser.Pbx_shell_script_build_phaseContext, self).__init__(parent, invokingState) + def __init__(self, parser, parent:ParserRuleContext=None, invokingState:int=-1): + super().__init__(parent, invokingState) self.parser = parser def REFERENCE(self): @@ -4143,12 +4215,12 @@ def show_env_vars_in_log(self): def getRuleIndex(self): return PBXProjParser.RULE_pbx_shell_script_build_phase - def enterRule(self, listener): - if hasattr(listener, "enterPbx_shell_script_build_phase"): + def enterRule(self, listener:ParseTreeListener): + if hasattr( listener, "enterPbx_shell_script_build_phase" ): listener.enterPbx_shell_script_build_phase(self) - def exitRule(self, listener): - if hasattr(listener, "exitPbx_shell_script_build_phase"): + def exitRule(self, listener:ParseTreeListener): + if hasattr( listener, "exitPbx_shell_script_build_phase" ): listener.exitPbx_shell_script_build_phase(self) @@ -4227,10 +4299,12 @@ def pbx_shell_script_build_phase(self): self.exitRule() return localctx + class Pbx_sources_build_phaseContext(ParserRuleContext): + __slots__ = 'parser' - def __init__(self, parser, parent=None, invokingState=-1): - super(PBXProjParser.Pbx_sources_build_phaseContext, self).__init__(parent, invokingState) + def __init__(self, parser, parent:ParserRuleContext=None, invokingState:int=-1): + super().__init__(parent, invokingState) self.parser = parser def REFERENCE(self): @@ -4255,12 +4329,12 @@ def run_only_for_deployment_postprocessing(self): def getRuleIndex(self): return PBXProjParser.RULE_pbx_sources_build_phase - def enterRule(self, listener): - if hasattr(listener, "enterPbx_sources_build_phase"): + def enterRule(self, listener:ParseTreeListener): + if hasattr( listener, "enterPbx_sources_build_phase" ): listener.enterPbx_sources_build_phase(self) - def exitRule(self, listener): - if hasattr(listener, "exitPbx_sources_build_phase"): + def exitRule(self, listener:ParseTreeListener): + if hasattr( listener, "exitPbx_sources_build_phase" ): listener.exitPbx_sources_build_phase(self) @@ -4298,10 +4372,12 @@ def pbx_sources_build_phase(self): self.exitRule() return localctx + class Pbx_target_dependencyContext(ParserRuleContext): + __slots__ = 'parser' - def __init__(self, parser, parent=None, invokingState=-1): - super(PBXProjParser.Pbx_target_dependencyContext, self).__init__(parent, invokingState) + def __init__(self, parser, parent:ParserRuleContext=None, invokingState:int=-1): + super().__init__(parent, invokingState) self.parser = parser def REFERENCE(self): @@ -4326,12 +4402,12 @@ def target(self): def getRuleIndex(self): return PBXProjParser.RULE_pbx_target_dependency - def enterRule(self, listener): - if hasattr(listener, "enterPbx_target_dependency"): + def enterRule(self, listener:ParseTreeListener): + if hasattr( listener, "enterPbx_target_dependency" ): listener.enterPbx_target_dependency(self) - def exitRule(self, listener): - if hasattr(listener, "exitPbx_target_dependency"): + def exitRule(self, listener:ParseTreeListener): + if hasattr( listener, "exitPbx_target_dependency" ): listener.exitPbx_target_dependency(self) @@ -4382,10 +4458,12 @@ def pbx_target_dependency(self): self.exitRule() return localctx + class Pbx_variant_groupContext(ParserRuleContext): + __slots__ = 'parser' - def __init__(self, parser, parent=None, invokingState=-1): - super(PBXProjParser.Pbx_variant_groupContext, self).__init__(parent, invokingState) + def __init__(self, parser, parent:ParserRuleContext=None, invokingState:int=-1): + super().__init__(parent, invokingState) self.parser = parser def REFERENCE(self): @@ -4414,12 +4492,12 @@ def path(self): def getRuleIndex(self): return PBXProjParser.RULE_pbx_variant_group - def enterRule(self, listener): - if hasattr(listener, "enterPbx_variant_group"): + def enterRule(self, listener:ParseTreeListener): + if hasattr( listener, "enterPbx_variant_group" ): listener.enterPbx_variant_group(self) - def exitRule(self, listener): - if hasattr(listener, "exitPbx_variant_group"): + def exitRule(self, listener:ParseTreeListener): + if hasattr( listener, "exitPbx_variant_group" ): listener.exitPbx_variant_group(self) @@ -4466,10 +4544,12 @@ def pbx_variant_group(self): self.exitRule() return localctx + class Xc_build_configurationContext(ParserRuleContext): + __slots__ = 'parser' - def __init__(self, parser, parent=None, invokingState=-1): - super(PBXProjParser.Xc_build_configurationContext, self).__init__(parent, invokingState) + def __init__(self, parser, parent:ParserRuleContext=None, invokingState:int=-1): + super().__init__(parent, invokingState) self.parser = parser def REFERENCE(self): @@ -4494,12 +4574,12 @@ def base_configuration_reference(self): def getRuleIndex(self): return PBXProjParser.RULE_xc_build_configuration - def enterRule(self, listener): - if hasattr(listener, "enterXc_build_configuration"): + def enterRule(self, listener:ParseTreeListener): + if hasattr( listener, "enterXc_build_configuration" ): listener.enterXc_build_configuration(self) - def exitRule(self, listener): - if hasattr(listener, "exitXc_build_configuration"): + def exitRule(self, listener:ParseTreeListener): + if hasattr( listener, "exitXc_build_configuration" ): listener.exitXc_build_configuration(self) @@ -4544,10 +4624,12 @@ def xc_build_configuration(self): self.exitRule() return localctx + class Xc_configuration_listContext(ParserRuleContext): + __slots__ = 'parser' - def __init__(self, parser, parent=None, invokingState=-1): - super(PBXProjParser.Xc_configuration_listContext, self).__init__(parent, invokingState) + def __init__(self, parser, parent:ParserRuleContext=None, invokingState:int=-1): + super().__init__(parent, invokingState) self.parser = parser def REFERENCE(self): @@ -4572,12 +4654,12 @@ def default_configuration_name(self): def getRuleIndex(self): return PBXProjParser.RULE_xc_configuration_list - def enterRule(self, listener): - if hasattr(listener, "enterXc_configuration_list"): + def enterRule(self, listener:ParseTreeListener): + if hasattr( listener, "enterXc_configuration_list" ): listener.enterXc_configuration_list(self) - def exitRule(self, listener): - if hasattr(listener, "exitXc_configuration_list"): + def exitRule(self, listener:ParseTreeListener): + if hasattr( listener, "exitXc_configuration_list" ): listener.exitXc_configuration_list(self) @@ -4622,10 +4704,12 @@ def xc_configuration_list(self): self.exitRule() return localctx + class Xc_remote_swift_package_referenceContext(ParserRuleContext): + __slots__ = 'parser' - def __init__(self, parser, parent=None, invokingState=-1): - super(PBXProjParser.Xc_remote_swift_package_referenceContext, self).__init__(parent, invokingState) + def __init__(self, parser, parent:ParserRuleContext=None, invokingState:int=-1): + super().__init__(parent, invokingState) self.parser = parser def REFERENCE(self): @@ -4646,12 +4730,12 @@ def requirement(self): def getRuleIndex(self): return PBXProjParser.RULE_xc_remote_swift_package_reference - def enterRule(self, listener): - if hasattr(listener, "enterXc_remote_swift_package_reference"): + def enterRule(self, listener:ParseTreeListener): + if hasattr( listener, "enterXc_remote_swift_package_reference" ): listener.enterXc_remote_swift_package_reference(self) - def exitRule(self, listener): - if hasattr(listener, "exitXc_remote_swift_package_reference"): + def exitRule(self, listener:ParseTreeListener): + if hasattr( listener, "exitXc_remote_swift_package_reference" ): listener.exitXc_remote_swift_package_reference(self) @@ -4687,10 +4771,12 @@ def xc_remote_swift_package_reference(self): self.exitRule() return localctx + class Xc_swift_package_product_dependencyContext(ParserRuleContext): + __slots__ = 'parser' - def __init__(self, parser, parent=None, invokingState=-1): - super(PBXProjParser.Xc_swift_package_product_dependencyContext, self).__init__(parent, invokingState) + def __init__(self, parser, parent:ParserRuleContext=None, invokingState:int=-1): + super().__init__(parent, invokingState) self.parser = parser def REFERENCE(self): @@ -4711,12 +4797,12 @@ def product_name(self): def getRuleIndex(self): return PBXProjParser.RULE_xc_swift_package_product_dependency - def enterRule(self, listener): - if hasattr(listener, "enterXc_swift_package_product_dependency"): + def enterRule(self, listener:ParseTreeListener): + if hasattr( listener, "enterXc_swift_package_product_dependency" ): listener.enterXc_swift_package_product_dependency(self) - def exitRule(self, listener): - if hasattr(listener, "exitXc_swift_package_product_dependency"): + def exitRule(self, listener:ParseTreeListener): + if hasattr( listener, "exitXc_swift_package_product_dependency" ): listener.exitXc_swift_package_product_dependency(self) @@ -4752,10 +4838,12 @@ def xc_swift_package_product_dependency(self): self.exitRule() return localctx + class Xc_version_groupContext(ParserRuleContext): + __slots__ = 'parser' - def __init__(self, parser, parent=None, invokingState=-1): - super(PBXProjParser.Xc_version_groupContext, self).__init__(parent, invokingState) + def __init__(self, parser, parent:ParserRuleContext=None, invokingState:int=-1): + super().__init__(parent, invokingState) self.parser = parser def REFERENCE(self): @@ -4788,12 +4876,12 @@ def version_group_type(self): def getRuleIndex(self): return PBXProjParser.RULE_xc_version_group - def enterRule(self, listener): - if hasattr(listener, "enterXc_version_group"): + def enterRule(self, listener:ParseTreeListener): + if hasattr( listener, "enterXc_version_group" ): listener.enterXc_version_group(self) - def exitRule(self, listener): - if hasattr(listener, "exitXc_version_group"): + def exitRule(self, listener:ParseTreeListener): + if hasattr( listener, "exitXc_version_group" ): listener.exitXc_version_group(self) @@ -4835,10 +4923,12 @@ def xc_version_group(self): self.exitRule() return localctx + class Isa_pbx_aggregate_targetContext(ParserRuleContext): + __slots__ = 'parser' - def __init__(self, parser, parent=None, invokingState=-1): - super(PBXProjParser.Isa_pbx_aggregate_targetContext, self).__init__(parent, invokingState) + def __init__(self, parser, parent:ParserRuleContext=None, invokingState:int=-1): + super().__init__(parent, invokingState) self.parser = parser def ISA(self): @@ -4847,12 +4937,12 @@ def ISA(self): def getRuleIndex(self): return PBXProjParser.RULE_isa_pbx_aggregate_target - def enterRule(self, listener): - if hasattr(listener, "enterIsa_pbx_aggregate_target"): + def enterRule(self, listener:ParseTreeListener): + if hasattr( listener, "enterIsa_pbx_aggregate_target" ): listener.enterIsa_pbx_aggregate_target(self) - def exitRule(self, listener): - if hasattr(listener, "exitIsa_pbx_aggregate_target"): + def exitRule(self, listener:ParseTreeListener): + if hasattr( listener, "exitIsa_pbx_aggregate_target" ): listener.exitIsa_pbx_aggregate_target(self) @@ -4880,10 +4970,12 @@ def isa_pbx_aggregate_target(self): self.exitRule() return localctx + class Isa_pbx_build_fileContext(ParserRuleContext): + __slots__ = 'parser' - def __init__(self, parser, parent=None, invokingState=-1): - super(PBXProjParser.Isa_pbx_build_fileContext, self).__init__(parent, invokingState) + def __init__(self, parser, parent:ParserRuleContext=None, invokingState:int=-1): + super().__init__(parent, invokingState) self.parser = parser def ISA(self): @@ -4892,12 +4984,12 @@ def ISA(self): def getRuleIndex(self): return PBXProjParser.RULE_isa_pbx_build_file - def enterRule(self, listener): - if hasattr(listener, "enterIsa_pbx_build_file"): + def enterRule(self, listener:ParseTreeListener): + if hasattr( listener, "enterIsa_pbx_build_file" ): listener.enterIsa_pbx_build_file(self) - def exitRule(self, listener): - if hasattr(listener, "exitIsa_pbx_build_file"): + def exitRule(self, listener:ParseTreeListener): + if hasattr( listener, "exitIsa_pbx_build_file" ): listener.exitIsa_pbx_build_file(self) @@ -4925,10 +5017,12 @@ def isa_pbx_build_file(self): self.exitRule() return localctx + class Isa_pbx_container_item_proxyContext(ParserRuleContext): + __slots__ = 'parser' - def __init__(self, parser, parent=None, invokingState=-1): - super(PBXProjParser.Isa_pbx_container_item_proxyContext, self).__init__(parent, invokingState) + def __init__(self, parser, parent:ParserRuleContext=None, invokingState:int=-1): + super().__init__(parent, invokingState) self.parser = parser def ISA(self): @@ -4937,12 +5031,12 @@ def ISA(self): def getRuleIndex(self): return PBXProjParser.RULE_isa_pbx_container_item_proxy - def enterRule(self, listener): - if hasattr(listener, "enterIsa_pbx_container_item_proxy"): + def enterRule(self, listener:ParseTreeListener): + if hasattr( listener, "enterIsa_pbx_container_item_proxy" ): listener.enterIsa_pbx_container_item_proxy(self) - def exitRule(self, listener): - if hasattr(listener, "exitIsa_pbx_container_item_proxy"): + def exitRule(self, listener:ParseTreeListener): + if hasattr( listener, "exitIsa_pbx_container_item_proxy" ): listener.exitIsa_pbx_container_item_proxy(self) @@ -4970,10 +5064,12 @@ def isa_pbx_container_item_proxy(self): self.exitRule() return localctx + class Isa_pbx_copy_files_build_phaseContext(ParserRuleContext): + __slots__ = 'parser' - def __init__(self, parser, parent=None, invokingState=-1): - super(PBXProjParser.Isa_pbx_copy_files_build_phaseContext, self).__init__(parent, invokingState) + def __init__(self, parser, parent:ParserRuleContext=None, invokingState:int=-1): + super().__init__(parent, invokingState) self.parser = parser def ISA(self): @@ -4982,12 +5078,12 @@ def ISA(self): def getRuleIndex(self): return PBXProjParser.RULE_isa_pbx_copy_files_build_phase - def enterRule(self, listener): - if hasattr(listener, "enterIsa_pbx_copy_files_build_phase"): + def enterRule(self, listener:ParseTreeListener): + if hasattr( listener, "enterIsa_pbx_copy_files_build_phase" ): listener.enterIsa_pbx_copy_files_build_phase(self) - def exitRule(self, listener): - if hasattr(listener, "exitIsa_pbx_copy_files_build_phase"): + def exitRule(self, listener:ParseTreeListener): + if hasattr( listener, "exitIsa_pbx_copy_files_build_phase" ): listener.exitIsa_pbx_copy_files_build_phase(self) @@ -5015,10 +5111,12 @@ def isa_pbx_copy_files_build_phase(self): self.exitRule() return localctx + class Isa_pbx_file_referenceContext(ParserRuleContext): + __slots__ = 'parser' - def __init__(self, parser, parent=None, invokingState=-1): - super(PBXProjParser.Isa_pbx_file_referenceContext, self).__init__(parent, invokingState) + def __init__(self, parser, parent:ParserRuleContext=None, invokingState:int=-1): + super().__init__(parent, invokingState) self.parser = parser def ISA(self): @@ -5027,12 +5125,12 @@ def ISA(self): def getRuleIndex(self): return PBXProjParser.RULE_isa_pbx_file_reference - def enterRule(self, listener): - if hasattr(listener, "enterIsa_pbx_file_reference"): + def enterRule(self, listener:ParseTreeListener): + if hasattr( listener, "enterIsa_pbx_file_reference" ): listener.enterIsa_pbx_file_reference(self) - def exitRule(self, listener): - if hasattr(listener, "exitIsa_pbx_file_reference"): + def exitRule(self, listener:ParseTreeListener): + if hasattr( listener, "exitIsa_pbx_file_reference" ): listener.exitIsa_pbx_file_reference(self) @@ -5060,10 +5158,12 @@ def isa_pbx_file_reference(self): self.exitRule() return localctx + class Isa_pbx_frameworks_build_phaseContext(ParserRuleContext): + __slots__ = 'parser' - def __init__(self, parser, parent=None, invokingState=-1): - super(PBXProjParser.Isa_pbx_frameworks_build_phaseContext, self).__init__(parent, invokingState) + def __init__(self, parser, parent:ParserRuleContext=None, invokingState:int=-1): + super().__init__(parent, invokingState) self.parser = parser def ISA(self): @@ -5072,12 +5172,12 @@ def ISA(self): def getRuleIndex(self): return PBXProjParser.RULE_isa_pbx_frameworks_build_phase - def enterRule(self, listener): - if hasattr(listener, "enterIsa_pbx_frameworks_build_phase"): + def enterRule(self, listener:ParseTreeListener): + if hasattr( listener, "enterIsa_pbx_frameworks_build_phase" ): listener.enterIsa_pbx_frameworks_build_phase(self) - def exitRule(self, listener): - if hasattr(listener, "exitIsa_pbx_frameworks_build_phase"): + def exitRule(self, listener:ParseTreeListener): + if hasattr( listener, "exitIsa_pbx_frameworks_build_phase" ): listener.exitIsa_pbx_frameworks_build_phase(self) @@ -5105,10 +5205,12 @@ def isa_pbx_frameworks_build_phase(self): self.exitRule() return localctx + class Isa_pbx_groupContext(ParserRuleContext): + __slots__ = 'parser' - def __init__(self, parser, parent=None, invokingState=-1): - super(PBXProjParser.Isa_pbx_groupContext, self).__init__(parent, invokingState) + def __init__(self, parser, parent:ParserRuleContext=None, invokingState:int=-1): + super().__init__(parent, invokingState) self.parser = parser def ISA(self): @@ -5117,12 +5219,12 @@ def ISA(self): def getRuleIndex(self): return PBXProjParser.RULE_isa_pbx_group - def enterRule(self, listener): - if hasattr(listener, "enterIsa_pbx_group"): + def enterRule(self, listener:ParseTreeListener): + if hasattr( listener, "enterIsa_pbx_group" ): listener.enterIsa_pbx_group(self) - def exitRule(self, listener): - if hasattr(listener, "exitIsa_pbx_group"): + def exitRule(self, listener:ParseTreeListener): + if hasattr( listener, "exitIsa_pbx_group" ): listener.exitIsa_pbx_group(self) @@ -5150,10 +5252,12 @@ def isa_pbx_group(self): self.exitRule() return localctx + class Isa_pbx_header_build_phaseContext(ParserRuleContext): + __slots__ = 'parser' - def __init__(self, parser, parent=None, invokingState=-1): - super(PBXProjParser.Isa_pbx_header_build_phaseContext, self).__init__(parent, invokingState) + def __init__(self, parser, parent:ParserRuleContext=None, invokingState:int=-1): + super().__init__(parent, invokingState) self.parser = parser def ISA(self): @@ -5162,12 +5266,12 @@ def ISA(self): def getRuleIndex(self): return PBXProjParser.RULE_isa_pbx_header_build_phase - def enterRule(self, listener): - if hasattr(listener, "enterIsa_pbx_header_build_phase"): + def enterRule(self, listener:ParseTreeListener): + if hasattr( listener, "enterIsa_pbx_header_build_phase" ): listener.enterIsa_pbx_header_build_phase(self) - def exitRule(self, listener): - if hasattr(listener, "exitIsa_pbx_header_build_phase"): + def exitRule(self, listener:ParseTreeListener): + if hasattr( listener, "exitIsa_pbx_header_build_phase" ): listener.exitIsa_pbx_header_build_phase(self) @@ -5195,10 +5299,12 @@ def isa_pbx_header_build_phase(self): self.exitRule() return localctx + class Isa_pbx_native_targetContext(ParserRuleContext): + __slots__ = 'parser' - def __init__(self, parser, parent=None, invokingState=-1): - super(PBXProjParser.Isa_pbx_native_targetContext, self).__init__(parent, invokingState) + def __init__(self, parser, parent:ParserRuleContext=None, invokingState:int=-1): + super().__init__(parent, invokingState) self.parser = parser def ISA(self): @@ -5207,12 +5313,12 @@ def ISA(self): def getRuleIndex(self): return PBXProjParser.RULE_isa_pbx_native_target - def enterRule(self, listener): - if hasattr(listener, "enterIsa_pbx_native_target"): + def enterRule(self, listener:ParseTreeListener): + if hasattr( listener, "enterIsa_pbx_native_target" ): listener.enterIsa_pbx_native_target(self) - def exitRule(self, listener): - if hasattr(listener, "exitIsa_pbx_native_target"): + def exitRule(self, listener:ParseTreeListener): + if hasattr( listener, "exitIsa_pbx_native_target" ): listener.exitIsa_pbx_native_target(self) @@ -5240,10 +5346,12 @@ def isa_pbx_native_target(self): self.exitRule() return localctx + class Isa_pbx_projectContext(ParserRuleContext): + __slots__ = 'parser' - def __init__(self, parser, parent=None, invokingState=-1): - super(PBXProjParser.Isa_pbx_projectContext, self).__init__(parent, invokingState) + def __init__(self, parser, parent:ParserRuleContext=None, invokingState:int=-1): + super().__init__(parent, invokingState) self.parser = parser def ISA(self): @@ -5252,12 +5360,12 @@ def ISA(self): def getRuleIndex(self): return PBXProjParser.RULE_isa_pbx_project - def enterRule(self, listener): - if hasattr(listener, "enterIsa_pbx_project"): + def enterRule(self, listener:ParseTreeListener): + if hasattr( listener, "enterIsa_pbx_project" ): listener.enterIsa_pbx_project(self) - def exitRule(self, listener): - if hasattr(listener, "exitIsa_pbx_project"): + def exitRule(self, listener:ParseTreeListener): + if hasattr( listener, "exitIsa_pbx_project" ): listener.exitIsa_pbx_project(self) @@ -5285,10 +5393,12 @@ def isa_pbx_project(self): self.exitRule() return localctx + class Isa_pbx_reference_proxyContext(ParserRuleContext): + __slots__ = 'parser' - def __init__(self, parser, parent=None, invokingState=-1): - super(PBXProjParser.Isa_pbx_reference_proxyContext, self).__init__(parent, invokingState) + def __init__(self, parser, parent:ParserRuleContext=None, invokingState:int=-1): + super().__init__(parent, invokingState) self.parser = parser def ISA(self): @@ -5297,12 +5407,12 @@ def ISA(self): def getRuleIndex(self): return PBXProjParser.RULE_isa_pbx_reference_proxy - def enterRule(self, listener): - if hasattr(listener, "enterIsa_pbx_reference_proxy"): + def enterRule(self, listener:ParseTreeListener): + if hasattr( listener, "enterIsa_pbx_reference_proxy" ): listener.enterIsa_pbx_reference_proxy(self) - def exitRule(self, listener): - if hasattr(listener, "exitIsa_pbx_reference_proxy"): + def exitRule(self, listener:ParseTreeListener): + if hasattr( listener, "exitIsa_pbx_reference_proxy" ): listener.exitIsa_pbx_reference_proxy(self) @@ -5330,10 +5440,12 @@ def isa_pbx_reference_proxy(self): self.exitRule() return localctx + class Isa_pbx_resources_build_phaseContext(ParserRuleContext): + __slots__ = 'parser' - def __init__(self, parser, parent=None, invokingState=-1): - super(PBXProjParser.Isa_pbx_resources_build_phaseContext, self).__init__(parent, invokingState) + def __init__(self, parser, parent:ParserRuleContext=None, invokingState:int=-1): + super().__init__(parent, invokingState) self.parser = parser def ISA(self): @@ -5342,12 +5454,12 @@ def ISA(self): def getRuleIndex(self): return PBXProjParser.RULE_isa_pbx_resources_build_phase - def enterRule(self, listener): - if hasattr(listener, "enterIsa_pbx_resources_build_phase"): + def enterRule(self, listener:ParseTreeListener): + if hasattr( listener, "enterIsa_pbx_resources_build_phase" ): listener.enterIsa_pbx_resources_build_phase(self) - def exitRule(self, listener): - if hasattr(listener, "exitIsa_pbx_resources_build_phase"): + def exitRule(self, listener:ParseTreeListener): + if hasattr( listener, "exitIsa_pbx_resources_build_phase" ): listener.exitIsa_pbx_resources_build_phase(self) @@ -5375,10 +5487,12 @@ def isa_pbx_resources_build_phase(self): self.exitRule() return localctx + class Isa_pbx_shell_script_build_phaseContext(ParserRuleContext): + __slots__ = 'parser' - def __init__(self, parser, parent=None, invokingState=-1): - super(PBXProjParser.Isa_pbx_shell_script_build_phaseContext, self).__init__(parent, invokingState) + def __init__(self, parser, parent:ParserRuleContext=None, invokingState:int=-1): + super().__init__(parent, invokingState) self.parser = parser def ISA(self): @@ -5387,12 +5501,12 @@ def ISA(self): def getRuleIndex(self): return PBXProjParser.RULE_isa_pbx_shell_script_build_phase - def enterRule(self, listener): - if hasattr(listener, "enterIsa_pbx_shell_script_build_phase"): + def enterRule(self, listener:ParseTreeListener): + if hasattr( listener, "enterIsa_pbx_shell_script_build_phase" ): listener.enterIsa_pbx_shell_script_build_phase(self) - def exitRule(self, listener): - if hasattr(listener, "exitIsa_pbx_shell_script_build_phase"): + def exitRule(self, listener:ParseTreeListener): + if hasattr( listener, "exitIsa_pbx_shell_script_build_phase" ): listener.exitIsa_pbx_shell_script_build_phase(self) @@ -5420,10 +5534,12 @@ def isa_pbx_shell_script_build_phase(self): self.exitRule() return localctx + class Isa_pbx_sources_build_phaseContext(ParserRuleContext): + __slots__ = 'parser' - def __init__(self, parser, parent=None, invokingState=-1): - super(PBXProjParser.Isa_pbx_sources_build_phaseContext, self).__init__(parent, invokingState) + def __init__(self, parser, parent:ParserRuleContext=None, invokingState:int=-1): + super().__init__(parent, invokingState) self.parser = parser def ISA(self): @@ -5432,12 +5548,12 @@ def ISA(self): def getRuleIndex(self): return PBXProjParser.RULE_isa_pbx_sources_build_phase - def enterRule(self, listener): - if hasattr(listener, "enterIsa_pbx_sources_build_phase"): + def enterRule(self, listener:ParseTreeListener): + if hasattr( listener, "enterIsa_pbx_sources_build_phase" ): listener.enterIsa_pbx_sources_build_phase(self) - def exitRule(self, listener): - if hasattr(listener, "exitIsa_pbx_sources_build_phase"): + def exitRule(self, listener:ParseTreeListener): + if hasattr( listener, "exitIsa_pbx_sources_build_phase" ): listener.exitIsa_pbx_sources_build_phase(self) @@ -5465,10 +5581,12 @@ def isa_pbx_sources_build_phase(self): self.exitRule() return localctx + class Isa_pbx_target_dependencyContext(ParserRuleContext): + __slots__ = 'parser' - def __init__(self, parser, parent=None, invokingState=-1): - super(PBXProjParser.Isa_pbx_target_dependencyContext, self).__init__(parent, invokingState) + def __init__(self, parser, parent:ParserRuleContext=None, invokingState:int=-1): + super().__init__(parent, invokingState) self.parser = parser def ISA(self): @@ -5477,12 +5595,12 @@ def ISA(self): def getRuleIndex(self): return PBXProjParser.RULE_isa_pbx_target_dependency - def enterRule(self, listener): - if hasattr(listener, "enterIsa_pbx_target_dependency"): + def enterRule(self, listener:ParseTreeListener): + if hasattr( listener, "enterIsa_pbx_target_dependency" ): listener.enterIsa_pbx_target_dependency(self) - def exitRule(self, listener): - if hasattr(listener, "exitIsa_pbx_target_dependency"): + def exitRule(self, listener:ParseTreeListener): + if hasattr( listener, "exitIsa_pbx_target_dependency" ): listener.exitIsa_pbx_target_dependency(self) @@ -5510,10 +5628,12 @@ def isa_pbx_target_dependency(self): self.exitRule() return localctx + class Isa_pbx_variant_groupContext(ParserRuleContext): + __slots__ = 'parser' - def __init__(self, parser, parent=None, invokingState=-1): - super(PBXProjParser.Isa_pbx_variant_groupContext, self).__init__(parent, invokingState) + def __init__(self, parser, parent:ParserRuleContext=None, invokingState:int=-1): + super().__init__(parent, invokingState) self.parser = parser def ISA(self): @@ -5522,12 +5642,12 @@ def ISA(self): def getRuleIndex(self): return PBXProjParser.RULE_isa_pbx_variant_group - def enterRule(self, listener): - if hasattr(listener, "enterIsa_pbx_variant_group"): + def enterRule(self, listener:ParseTreeListener): + if hasattr( listener, "enterIsa_pbx_variant_group" ): listener.enterIsa_pbx_variant_group(self) - def exitRule(self, listener): - if hasattr(listener, "exitIsa_pbx_variant_group"): + def exitRule(self, listener:ParseTreeListener): + if hasattr( listener, "exitIsa_pbx_variant_group" ): listener.exitIsa_pbx_variant_group(self) @@ -5555,10 +5675,12 @@ def isa_pbx_variant_group(self): self.exitRule() return localctx + class Isa_xc_build_configurationContext(ParserRuleContext): + __slots__ = 'parser' - def __init__(self, parser, parent=None, invokingState=-1): - super(PBXProjParser.Isa_xc_build_configurationContext, self).__init__(parent, invokingState) + def __init__(self, parser, parent:ParserRuleContext=None, invokingState:int=-1): + super().__init__(parent, invokingState) self.parser = parser def ISA(self): @@ -5567,12 +5689,12 @@ def ISA(self): def getRuleIndex(self): return PBXProjParser.RULE_isa_xc_build_configuration - def enterRule(self, listener): - if hasattr(listener, "enterIsa_xc_build_configuration"): + def enterRule(self, listener:ParseTreeListener): + if hasattr( listener, "enterIsa_xc_build_configuration" ): listener.enterIsa_xc_build_configuration(self) - def exitRule(self, listener): - if hasattr(listener, "exitIsa_xc_build_configuration"): + def exitRule(self, listener:ParseTreeListener): + if hasattr( listener, "exitIsa_xc_build_configuration" ): listener.exitIsa_xc_build_configuration(self) @@ -5600,10 +5722,12 @@ def isa_xc_build_configuration(self): self.exitRule() return localctx + class Isa_xc_configuration_listContext(ParserRuleContext): + __slots__ = 'parser' - def __init__(self, parser, parent=None, invokingState=-1): - super(PBXProjParser.Isa_xc_configuration_listContext, self).__init__(parent, invokingState) + def __init__(self, parser, parent:ParserRuleContext=None, invokingState:int=-1): + super().__init__(parent, invokingState) self.parser = parser def ISA(self): @@ -5612,12 +5736,12 @@ def ISA(self): def getRuleIndex(self): return PBXProjParser.RULE_isa_xc_configuration_list - def enterRule(self, listener): - if hasattr(listener, "enterIsa_xc_configuration_list"): + def enterRule(self, listener:ParseTreeListener): + if hasattr( listener, "enterIsa_xc_configuration_list" ): listener.enterIsa_xc_configuration_list(self) - def exitRule(self, listener): - if hasattr(listener, "exitIsa_xc_configuration_list"): + def exitRule(self, listener:ParseTreeListener): + if hasattr( listener, "exitIsa_xc_configuration_list" ): listener.exitIsa_xc_configuration_list(self) @@ -5645,10 +5769,12 @@ def isa_xc_configuration_list(self): self.exitRule() return localctx + class Isa_xc_remote_swift_package_referenceContext(ParserRuleContext): + __slots__ = 'parser' - def __init__(self, parser, parent=None, invokingState=-1): - super(PBXProjParser.Isa_xc_remote_swift_package_referenceContext, self).__init__(parent, invokingState) + def __init__(self, parser, parent:ParserRuleContext=None, invokingState:int=-1): + super().__init__(parent, invokingState) self.parser = parser def ISA(self): @@ -5657,12 +5783,12 @@ def ISA(self): def getRuleIndex(self): return PBXProjParser.RULE_isa_xc_remote_swift_package_reference - def enterRule(self, listener): - if hasattr(listener, "enterIsa_xc_remote_swift_package_reference"): + def enterRule(self, listener:ParseTreeListener): + if hasattr( listener, "enterIsa_xc_remote_swift_package_reference" ): listener.enterIsa_xc_remote_swift_package_reference(self) - def exitRule(self, listener): - if hasattr(listener, "exitIsa_xc_remote_swift_package_reference"): + def exitRule(self, listener:ParseTreeListener): + if hasattr( listener, "exitIsa_xc_remote_swift_package_reference" ): listener.exitIsa_xc_remote_swift_package_reference(self) @@ -5690,10 +5816,12 @@ def isa_xc_remote_swift_package_reference(self): self.exitRule() return localctx + class Isa_xc_swift_package_product_dependencyContext(ParserRuleContext): + __slots__ = 'parser' - def __init__(self, parser, parent=None, invokingState=-1): - super(PBXProjParser.Isa_xc_swift_package_product_dependencyContext, self).__init__(parent, invokingState) + def __init__(self, parser, parent:ParserRuleContext=None, invokingState:int=-1): + super().__init__(parent, invokingState) self.parser = parser def ISA(self): @@ -5702,12 +5830,12 @@ def ISA(self): def getRuleIndex(self): return PBXProjParser.RULE_isa_xc_swift_package_product_dependency - def enterRule(self, listener): - if hasattr(listener, "enterIsa_xc_swift_package_product_dependency"): + def enterRule(self, listener:ParseTreeListener): + if hasattr( listener, "enterIsa_xc_swift_package_product_dependency" ): listener.enterIsa_xc_swift_package_product_dependency(self) - def exitRule(self, listener): - if hasattr(listener, "exitIsa_xc_swift_package_product_dependency"): + def exitRule(self, listener:ParseTreeListener): + if hasattr( listener, "exitIsa_xc_swift_package_product_dependency" ): listener.exitIsa_xc_swift_package_product_dependency(self) @@ -5735,10 +5863,12 @@ def isa_xc_swift_package_product_dependency(self): self.exitRule() return localctx + class Isa_xc_version_groupContext(ParserRuleContext): + __slots__ = 'parser' - def __init__(self, parser, parent=None, invokingState=-1): - super(PBXProjParser.Isa_xc_version_groupContext, self).__init__(parent, invokingState) + def __init__(self, parser, parent:ParserRuleContext=None, invokingState:int=-1): + super().__init__(parent, invokingState) self.parser = parser def ISA(self): @@ -5747,12 +5877,12 @@ def ISA(self): def getRuleIndex(self): return PBXProjParser.RULE_isa_xc_version_group - def enterRule(self, listener): - if hasattr(listener, "enterIsa_xc_version_group"): + def enterRule(self, listener:ParseTreeListener): + if hasattr( listener, "enterIsa_xc_version_group" ): listener.enterIsa_xc_version_group(self) - def exitRule(self, listener): - if hasattr(listener, "exitIsa_xc_version_group"): + def exitRule(self, listener:ParseTreeListener): + if hasattr( listener, "exitIsa_xc_version_group" ): listener.exitIsa_xc_version_group(self) @@ -5780,10 +5910,12 @@ def isa_xc_version_group(self): self.exitRule() return localctx + class File_refContext(ParserRuleContext): + __slots__ = 'parser' - def __init__(self, parser, parent=None, invokingState=-1): - super(PBXProjParser.File_refContext, self).__init__(parent, invokingState) + def __init__(self, parser, parent:ParserRuleContext=None, invokingState:int=-1): + super().__init__(parent, invokingState) self.parser = parser def REFERENCE(self): @@ -5792,12 +5924,12 @@ def REFERENCE(self): def getRuleIndex(self): return PBXProjParser.RULE_file_ref - def enterRule(self, listener): - if hasattr(listener, "enterFile_ref"): + def enterRule(self, listener:ParseTreeListener): + if hasattr( listener, "enterFile_ref" ): listener.enterFile_ref(self) - def exitRule(self, listener): - if hasattr(listener, "exitFile_ref"): + def exitRule(self, listener:ParseTreeListener): + if hasattr( listener, "exitFile_ref" ): listener.exitFile_ref(self) @@ -5844,10 +5976,12 @@ def file_ref(self): self.exitRule() return localctx + class Container_portalContext(ParserRuleContext): + __slots__ = 'parser' - def __init__(self, parser, parent=None, invokingState=-1): - super(PBXProjParser.Container_portalContext, self).__init__(parent, invokingState) + def __init__(self, parser, parent:ParserRuleContext=None, invokingState:int=-1): + super().__init__(parent, invokingState) self.parser = parser def REFERENCE(self): @@ -5856,12 +5990,12 @@ def REFERENCE(self): def getRuleIndex(self): return PBXProjParser.RULE_container_portal - def enterRule(self, listener): - if hasattr(listener, "enterContainer_portal"): + def enterRule(self, listener:ParseTreeListener): + if hasattr( listener, "enterContainer_portal" ): listener.enterContainer_portal(self) - def exitRule(self, listener): - if hasattr(listener, "exitContainer_portal"): + def exitRule(self, listener:ParseTreeListener): + if hasattr( listener, "exitContainer_portal" ): listener.exitContainer_portal(self) @@ -5889,10 +6023,12 @@ def container_portal(self): self.exitRule() return localctx + class Proxy_typeContext(ParserRuleContext): + __slots__ = 'parser' - def __init__(self, parser, parent=None, invokingState=-1): - super(PBXProjParser.Proxy_typeContext, self).__init__(parent, invokingState) + def __init__(self, parser, parent:ParserRuleContext=None, invokingState:int=-1): + super().__init__(parent, invokingState) self.parser = parser def NUMBER(self): @@ -5901,12 +6037,12 @@ def NUMBER(self): def getRuleIndex(self): return PBXProjParser.RULE_proxy_type - def enterRule(self, listener): - if hasattr(listener, "enterProxy_type"): + def enterRule(self, listener:ParseTreeListener): + if hasattr( listener, "enterProxy_type" ): listener.enterProxy_type(self) - def exitRule(self, listener): - if hasattr(listener, "exitProxy_type"): + def exitRule(self, listener:ParseTreeListener): + if hasattr( listener, "exitProxy_type" ): listener.exitProxy_type(self) @@ -5934,10 +6070,12 @@ def proxy_type(self): self.exitRule() return localctx + class Remote_global_id_stringContext(ParserRuleContext): + __slots__ = 'parser' - def __init__(self, parser, parent=None, invokingState=-1): - super(PBXProjParser.Remote_global_id_stringContext, self).__init__(parent, invokingState) + def __init__(self, parser, parent:ParserRuleContext=None, invokingState:int=-1): + super().__init__(parent, invokingState) self.parser = parser def REFERENCE(self): @@ -5946,12 +6084,12 @@ def REFERENCE(self): def getRuleIndex(self): return PBXProjParser.RULE_remote_global_id_string - def enterRule(self, listener): - if hasattr(listener, "enterRemote_global_id_string"): + def enterRule(self, listener:ParseTreeListener): + if hasattr( listener, "enterRemote_global_id_string" ): listener.enterRemote_global_id_string(self) - def exitRule(self, listener): - if hasattr(listener, "exitRemote_global_id_string"): + def exitRule(self, listener:ParseTreeListener): + if hasattr( listener, "exitRemote_global_id_string" ): listener.exitRemote_global_id_string(self) @@ -5979,10 +6117,12 @@ def remote_global_id_string(self): self.exitRule() return localctx + class Remote_infoContext(ParserRuleContext): + __slots__ = 'parser' - def __init__(self, parser, parent=None, invokingState=-1): - super(PBXProjParser.Remote_infoContext, self).__init__(parent, invokingState) + def __init__(self, parser, parent:ParserRuleContext=None, invokingState:int=-1): + super().__init__(parent, invokingState) self.parser = parser def any_string(self): @@ -5992,12 +6132,12 @@ def any_string(self): def getRuleIndex(self): return PBXProjParser.RULE_remote_info - def enterRule(self, listener): - if hasattr(listener, "enterRemote_info"): + def enterRule(self, listener:ParseTreeListener): + if hasattr( listener, "enterRemote_info" ): listener.enterRemote_info(self) - def exitRule(self, listener): - if hasattr(listener, "exitRemote_info"): + def exitRule(self, listener:ParseTreeListener): + if hasattr( listener, "exitRemote_info" ): listener.exitRemote_info(self) @@ -6025,10 +6165,12 @@ def remote_info(self): self.exitRule() return localctx + class File_encodingContext(ParserRuleContext): + __slots__ = 'parser' - def __init__(self, parser, parent=None, invokingState=-1): - super(PBXProjParser.File_encodingContext, self).__init__(parent, invokingState) + def __init__(self, parser, parent:ParserRuleContext=None, invokingState:int=-1): + super().__init__(parent, invokingState) self.parser = parser def NUMBER(self): @@ -6037,12 +6179,12 @@ def NUMBER(self): def getRuleIndex(self): return PBXProjParser.RULE_file_encoding - def enterRule(self, listener): - if hasattr(listener, "enterFile_encoding"): + def enterRule(self, listener:ParseTreeListener): + if hasattr( listener, "enterFile_encoding" ): listener.enterFile_encoding(self) - def exitRule(self, listener): - if hasattr(listener, "exitFile_encoding"): + def exitRule(self, listener:ParseTreeListener): + if hasattr( listener, "exitFile_encoding" ): listener.exitFile_encoding(self) @@ -6070,10 +6212,12 @@ def file_encoding(self): self.exitRule() return localctx + class Explicit_file_typeContext(ParserRuleContext): + __slots__ = 'parser' - def __init__(self, parser, parent=None, invokingState=-1): - super(PBXProjParser.Explicit_file_typeContext, self).__init__(parent, invokingState) + def __init__(self, parser, parent:ParserRuleContext=None, invokingState:int=-1): + super().__init__(parent, invokingState) self.parser = parser def any_string(self): @@ -6083,12 +6227,12 @@ def any_string(self): def getRuleIndex(self): return PBXProjParser.RULE_explicit_file_type - def enterRule(self, listener): - if hasattr(listener, "enterExplicit_file_type"): + def enterRule(self, listener:ParseTreeListener): + if hasattr( listener, "enterExplicit_file_type" ): listener.enterExplicit_file_type(self) - def exitRule(self, listener): - if hasattr(listener, "exitExplicit_file_type"): + def exitRule(self, listener:ParseTreeListener): + if hasattr( listener, "exitExplicit_file_type" ): listener.exitExplicit_file_type(self) @@ -6116,10 +6260,12 @@ def explicit_file_type(self): self.exitRule() return localctx + class Last_known_file_typeContext(ParserRuleContext): + __slots__ = 'parser' - def __init__(self, parser, parent=None, invokingState=-1): - super(PBXProjParser.Last_known_file_typeContext, self).__init__(parent, invokingState) + def __init__(self, parser, parent:ParserRuleContext=None, invokingState:int=-1): + super().__init__(parent, invokingState) self.parser = parser def any_string(self): @@ -6129,12 +6275,12 @@ def any_string(self): def getRuleIndex(self): return PBXProjParser.RULE_last_known_file_type - def enterRule(self, listener): - if hasattr(listener, "enterLast_known_file_type"): + def enterRule(self, listener:ParseTreeListener): + if hasattr( listener, "enterLast_known_file_type" ): listener.enterLast_known_file_type(self) - def exitRule(self, listener): - if hasattr(listener, "exitLast_known_file_type"): + def exitRule(self, listener:ParseTreeListener): + if hasattr( listener, "exitLast_known_file_type" ): listener.exitLast_known_file_type(self) @@ -6162,10 +6308,12 @@ def last_known_file_type(self): self.exitRule() return localctx + class Include_in_indexContext(ParserRuleContext): + __slots__ = 'parser' - def __init__(self, parser, parent=None, invokingState=-1): - super(PBXProjParser.Include_in_indexContext, self).__init__(parent, invokingState) + def __init__(self, parser, parent:ParserRuleContext=None, invokingState:int=-1): + super().__init__(parent, invokingState) self.parser = parser def NUMBER(self): @@ -6174,12 +6322,12 @@ def NUMBER(self): def getRuleIndex(self): return PBXProjParser.RULE_include_in_index - def enterRule(self, listener): - if hasattr(listener, "enterInclude_in_index"): + def enterRule(self, listener:ParseTreeListener): + if hasattr( listener, "enterInclude_in_index" ): listener.enterInclude_in_index(self) - def exitRule(self, listener): - if hasattr(listener, "exitInclude_in_index"): + def exitRule(self, listener:ParseTreeListener): + if hasattr( listener, "exitInclude_in_index" ): listener.exitInclude_in_index(self) @@ -6207,10 +6355,12 @@ def include_in_index(self): self.exitRule() return localctx + class Indent_widthContext(ParserRuleContext): + __slots__ = 'parser' - def __init__(self, parser, parent=None, invokingState=-1): - super(PBXProjParser.Indent_widthContext, self).__init__(parent, invokingState) + def __init__(self, parser, parent:ParserRuleContext=None, invokingState:int=-1): + super().__init__(parent, invokingState) self.parser = parser def NUMBER(self): @@ -6219,12 +6369,12 @@ def NUMBER(self): def getRuleIndex(self): return PBXProjParser.RULE_indent_width - def enterRule(self, listener): - if hasattr(listener, "enterIndent_width"): + def enterRule(self, listener:ParseTreeListener): + if hasattr( listener, "enterIndent_width" ): listener.enterIndent_width(self) - def exitRule(self, listener): - if hasattr(listener, "exitIndent_width"): + def exitRule(self, listener:ParseTreeListener): + if hasattr( listener, "exitIndent_width" ): listener.exitIndent_width(self) @@ -6252,10 +6402,12 @@ def indent_width(self): self.exitRule() return localctx + class Tab_widthContext(ParserRuleContext): + __slots__ = 'parser' - def __init__(self, parser, parent=None, invokingState=-1): - super(PBXProjParser.Tab_widthContext, self).__init__(parent, invokingState) + def __init__(self, parser, parent:ParserRuleContext=None, invokingState:int=-1): + super().__init__(parent, invokingState) self.parser = parser def NUMBER(self): @@ -6264,12 +6416,12 @@ def NUMBER(self): def getRuleIndex(self): return PBXProjParser.RULE_tab_width - def enterRule(self, listener): - if hasattr(listener, "enterTab_width"): + def enterRule(self, listener:ParseTreeListener): + if hasattr( listener, "enterTab_width" ): listener.enterTab_width(self) - def exitRule(self, listener): - if hasattr(listener, "exitTab_width"): + def exitRule(self, listener:ParseTreeListener): + if hasattr( listener, "exitTab_width" ): listener.exitTab_width(self) @@ -6297,10 +6449,12 @@ def tab_width(self): self.exitRule() return localctx + class Uses_tabsContext(ParserRuleContext): + __slots__ = 'parser' - def __init__(self, parser, parent=None, invokingState=-1): - super(PBXProjParser.Uses_tabsContext, self).__init__(parent, invokingState) + def __init__(self, parser, parent:ParserRuleContext=None, invokingState:int=-1): + super().__init__(parent, invokingState) self.parser = parser def NUMBER(self): @@ -6309,12 +6463,12 @@ def NUMBER(self): def getRuleIndex(self): return PBXProjParser.RULE_uses_tabs - def enterRule(self, listener): - if hasattr(listener, "enterUses_tabs"): + def enterRule(self, listener:ParseTreeListener): + if hasattr( listener, "enterUses_tabs" ): listener.enterUses_tabs(self) - def exitRule(self, listener): - if hasattr(listener, "exitUses_tabs"): + def exitRule(self, listener:ParseTreeListener): + if hasattr( listener, "exitUses_tabs" ): listener.exitUses_tabs(self) @@ -6342,10 +6496,12 @@ def uses_tabs(self): self.exitRule() return localctx + class ChildrenContext(ParserRuleContext): + __slots__ = 'parser' - def __init__(self, parser, parent=None, invokingState=-1): - super(PBXProjParser.ChildrenContext, self).__init__(parent, invokingState) + def __init__(self, parser, parent:ParserRuleContext=None, invokingState:int=-1): + super().__init__(parent, invokingState) self.parser = parser def reference_list(self): @@ -6355,12 +6511,12 @@ def reference_list(self): def getRuleIndex(self): return PBXProjParser.RULE_children - def enterRule(self, listener): - if hasattr(listener, "enterChildren"): + def enterRule(self, listener:ParseTreeListener): + if hasattr( listener, "enterChildren" ): listener.enterChildren(self) - def exitRule(self, listener): - if hasattr(listener, "exitChildren"): + def exitRule(self, listener:ParseTreeListener): + if hasattr( listener, "exitChildren" ): listener.exitChildren(self) @@ -6388,10 +6544,12 @@ def children(self): self.exitRule() return localctx + class Product_install_pathContext(ParserRuleContext): + __slots__ = 'parser' - def __init__(self, parser, parent=None, invokingState=-1): - super(PBXProjParser.Product_install_pathContext, self).__init__(parent, invokingState) + def __init__(self, parser, parent:ParserRuleContext=None, invokingState:int=-1): + super().__init__(parent, invokingState) self.parser = parser def QUOTED_STRING(self): @@ -6400,12 +6558,12 @@ def QUOTED_STRING(self): def getRuleIndex(self): return PBXProjParser.RULE_product_install_path - def enterRule(self, listener): - if hasattr(listener, "enterProduct_install_path"): + def enterRule(self, listener:ParseTreeListener): + if hasattr( listener, "enterProduct_install_path" ): listener.enterProduct_install_path(self) - def exitRule(self, listener): - if hasattr(listener, "exitProduct_install_path"): + def exitRule(self, listener:ParseTreeListener): + if hasattr( listener, "exitProduct_install_path" ): listener.exitProduct_install_path(self) @@ -6433,10 +6591,12 @@ def product_install_path(self): self.exitRule() return localctx + class Repository_urlContext(ParserRuleContext): + __slots__ = 'parser' - def __init__(self, parser, parent=None, invokingState=-1): - super(PBXProjParser.Repository_urlContext, self).__init__(parent, invokingState) + def __init__(self, parser, parent:ParserRuleContext=None, invokingState:int=-1): + super().__init__(parent, invokingState) self.parser = parser def QUOTED_STRING(self): @@ -6445,12 +6605,12 @@ def QUOTED_STRING(self): def getRuleIndex(self): return PBXProjParser.RULE_repository_url - def enterRule(self, listener): - if hasattr(listener, "enterRepository_url"): + def enterRule(self, listener:ParseTreeListener): + if hasattr( listener, "enterRepository_url" ): listener.enterRepository_url(self) - def exitRule(self, listener): - if hasattr(listener, "exitRepository_url"): + def exitRule(self, listener:ParseTreeListener): + if hasattr( listener, "exitRepository_url" ): listener.exitRepository_url(self) @@ -6478,13 +6638,15 @@ def repository_url(self): self.exitRule() return localctx + class RequirementContext(ParserRuleContext): + __slots__ = 'parser' - def __init__(self, parser, parent=None, invokingState=-1): - super(PBXProjParser.RequirementContext, self).__init__(parent, invokingState) + def __init__(self, parser, parent:ParserRuleContext=None, invokingState:int=-1): + super().__init__(parent, invokingState) self.parser = parser - def key_value(self, i=None): + def key_value(self, i:int=None): if i is None: return self.getTypedRuleContexts(PBXProjParser.Key_valueContext) else: @@ -6494,12 +6656,12 @@ def key_value(self, i=None): def getRuleIndex(self): return PBXProjParser.RULE_requirement - def enterRule(self, listener): - if hasattr(listener, "enterRequirement"): + def enterRule(self, listener:ParseTreeListener): + if hasattr( listener, "enterRequirement" ): listener.enterRequirement(self) - def exitRule(self, listener): - if hasattr(listener, "exitRequirement"): + def exitRule(self, listener:ParseTreeListener): + if hasattr( listener, "exitRequirement" ): listener.exitRequirement(self) @@ -6540,10 +6702,12 @@ def requirement(self): self.exitRule() return localctx + class Xc_packageContext(ParserRuleContext): + __slots__ = 'parser' - def __init__(self, parser, parent=None, invokingState=-1): - super(PBXProjParser.Xc_packageContext, self).__init__(parent, invokingState) + def __init__(self, parser, parent:ParserRuleContext=None, invokingState:int=-1): + super().__init__(parent, invokingState) self.parser = parser def REFERENCE(self): @@ -6552,12 +6716,12 @@ def REFERENCE(self): def getRuleIndex(self): return PBXProjParser.RULE_xc_package - def enterRule(self, listener): - if hasattr(listener, "enterXc_package"): + def enterRule(self, listener:ParseTreeListener): + if hasattr( listener, "enterXc_package" ): listener.enterXc_package(self) - def exitRule(self, listener): - if hasattr(listener, "exitXc_package"): + def exitRule(self, listener:ParseTreeListener): + if hasattr( listener, "exitXc_package" ): listener.exitXc_package(self) @@ -6585,10 +6749,12 @@ def xc_package(self): self.exitRule() return localctx + class Package_product_dependenciesContext(ParserRuleContext): + __slots__ = 'parser' - def __init__(self, parser, parent=None, invokingState=-1): - super(PBXProjParser.Package_product_dependenciesContext, self).__init__(parent, invokingState) + def __init__(self, parser, parent:ParserRuleContext=None, invokingState:int=-1): + super().__init__(parent, invokingState) self.parser = parser def reference_list(self): @@ -6598,12 +6764,12 @@ def reference_list(self): def getRuleIndex(self): return PBXProjParser.RULE_package_product_dependencies - def enterRule(self, listener): - if hasattr(listener, "enterPackage_product_dependencies"): + def enterRule(self, listener:ParseTreeListener): + if hasattr( listener, "enterPackage_product_dependencies" ): listener.enterPackage_product_dependencies(self) - def exitRule(self, listener): - if hasattr(listener, "exitPackage_product_dependencies"): + def exitRule(self, listener:ParseTreeListener): + if hasattr( listener, "exitPackage_product_dependencies" ): listener.exitPackage_product_dependencies(self) @@ -6631,10 +6797,12 @@ def package_product_dependencies(self): self.exitRule() return localctx + class NameContext(ParserRuleContext): + __slots__ = 'parser' - def __init__(self, parser, parent=None, invokingState=-1): - super(PBXProjParser.NameContext, self).__init__(parent, invokingState) + def __init__(self, parser, parent:ParserRuleContext=None, invokingState:int=-1): + super().__init__(parent, invokingState) self.parser = parser def QUOTED_STRING(self): @@ -6646,12 +6814,12 @@ def NON_QUOTED_STRING(self): def getRuleIndex(self): return PBXProjParser.RULE_name - def enterRule(self, listener): - if hasattr(listener, "enterName"): + def enterRule(self, listener:ParseTreeListener): + if hasattr( listener, "enterName" ): listener.enterName(self) - def exitRule(self, listener): - if hasattr(listener, "exitName"): + def exitRule(self, listener:ParseTreeListener): + if hasattr( listener, "exitName" ): listener.exitName(self) @@ -6685,10 +6853,12 @@ def name(self): self.exitRule() return localctx + class PathContext(ParserRuleContext): + __slots__ = 'parser' - def __init__(self, parser, parent=None, invokingState=-1): - super(PBXProjParser.PathContext, self).__init__(parent, invokingState) + def __init__(self, parser, parent:ParserRuleContext=None, invokingState:int=-1): + super().__init__(parent, invokingState) self.parser = parser def QUOTED_STRING(self): @@ -6700,12 +6870,12 @@ def NON_QUOTED_STRING(self): def getRuleIndex(self): return PBXProjParser.RULE_path - def enterRule(self, listener): - if hasattr(listener, "enterPath"): + def enterRule(self, listener:ParseTreeListener): + if hasattr( listener, "enterPath" ): listener.enterPath(self) - def exitRule(self, listener): - if hasattr(listener, "exitPath"): + def exitRule(self, listener:ParseTreeListener): + if hasattr( listener, "exitPath" ): listener.exitPath(self) @@ -6739,10 +6909,12 @@ def path(self): self.exitRule() return localctx + class Source_treeContext(ParserRuleContext): + __slots__ = 'parser' - def __init__(self, parser, parent=None, invokingState=-1): - super(PBXProjParser.Source_treeContext, self).__init__(parent, invokingState) + def __init__(self, parser, parent:ParserRuleContext=None, invokingState:int=-1): + super().__init__(parent, invokingState) self.parser = parser def QUOTED_STRING(self): @@ -6754,12 +6926,12 @@ def NON_QUOTED_STRING(self): def getRuleIndex(self): return PBXProjParser.RULE_source_tree - def enterRule(self, listener): - if hasattr(listener, "enterSource_tree"): + def enterRule(self, listener:ParseTreeListener): + if hasattr( listener, "enterSource_tree" ): listener.enterSource_tree(self) - def exitRule(self, listener): - if hasattr(listener, "exitSource_tree"): + def exitRule(self, listener:ParseTreeListener): + if hasattr( listener, "exitSource_tree" ): listener.exitSource_tree(self) @@ -6793,10 +6965,12 @@ def source_tree(self): self.exitRule() return localctx + class Build_action_maskContext(ParserRuleContext): + __slots__ = 'parser' - def __init__(self, parser, parent=None, invokingState=-1): - super(PBXProjParser.Build_action_maskContext, self).__init__(parent, invokingState) + def __init__(self, parser, parent:ParserRuleContext=None, invokingState:int=-1): + super().__init__(parent, invokingState) self.parser = parser def NUMBER(self): @@ -6805,12 +6979,12 @@ def NUMBER(self): def getRuleIndex(self): return PBXProjParser.RULE_build_action_mask - def enterRule(self, listener): - if hasattr(listener, "enterBuild_action_mask"): + def enterRule(self, listener:ParseTreeListener): + if hasattr( listener, "enterBuild_action_mask" ): listener.enterBuild_action_mask(self) - def exitRule(self, listener): - if hasattr(listener, "exitBuild_action_mask"): + def exitRule(self, listener:ParseTreeListener): + if hasattr( listener, "exitBuild_action_mask" ): listener.exitBuild_action_mask(self) @@ -6838,10 +7012,12 @@ def build_action_mask(self): self.exitRule() return localctx + class FilesContext(ParserRuleContext): + __slots__ = 'parser' - def __init__(self, parser, parent=None, invokingState=-1): - super(PBXProjParser.FilesContext, self).__init__(parent, invokingState) + def __init__(self, parser, parent:ParserRuleContext=None, invokingState:int=-1): + super().__init__(parent, invokingState) self.parser = parser def reference_list(self): @@ -6851,12 +7027,12 @@ def reference_list(self): def getRuleIndex(self): return PBXProjParser.RULE_files - def enterRule(self, listener): - if hasattr(listener, "enterFiles"): + def enterRule(self, listener:ParseTreeListener): + if hasattr( listener, "enterFiles" ): listener.enterFiles(self) - def exitRule(self, listener): - if hasattr(listener, "exitFiles"): + def exitRule(self, listener:ParseTreeListener): + if hasattr( listener, "exitFiles" ): listener.exitFiles(self) @@ -6884,10 +7060,12 @@ def files(self): self.exitRule() return localctx + class Run_only_for_deployment_postprocessingContext(ParserRuleContext): + __slots__ = 'parser' - def __init__(self, parser, parent=None, invokingState=-1): - super(PBXProjParser.Run_only_for_deployment_postprocessingContext, self).__init__(parent, invokingState) + def __init__(self, parser, parent:ParserRuleContext=None, invokingState:int=-1): + super().__init__(parent, invokingState) self.parser = parser def NUMBER(self): @@ -6896,12 +7074,12 @@ def NUMBER(self): def getRuleIndex(self): return PBXProjParser.RULE_run_only_for_deployment_postprocessing - def enterRule(self, listener): - if hasattr(listener, "enterRun_only_for_deployment_postprocessing"): + def enterRule(self, listener:ParseTreeListener): + if hasattr( listener, "enterRun_only_for_deployment_postprocessing" ): listener.enterRun_only_for_deployment_postprocessing(self) - def exitRule(self, listener): - if hasattr(listener, "exitRun_only_for_deployment_postprocessing"): + def exitRule(self, listener:ParseTreeListener): + if hasattr( listener, "exitRun_only_for_deployment_postprocessing" ): listener.exitRun_only_for_deployment_postprocessing(self) @@ -6929,13 +7107,15 @@ def run_only_for_deployment_postprocessing(self): self.exitRule() return localctx + class Reference_listContext(ParserRuleContext): + __slots__ = 'parser' - def __init__(self, parser, parent=None, invokingState=-1): - super(PBXProjParser.Reference_listContext, self).__init__(parent, invokingState) + def __init__(self, parser, parent:ParserRuleContext=None, invokingState:int=-1): + super().__init__(parent, invokingState) self.parser = parser - def REFERENCE(self, i=None): + def REFERENCE(self, i:int=None): if i is None: return self.getTokens(PBXProjParser.REFERENCE) else: @@ -6944,12 +7124,12 @@ def REFERENCE(self, i=None): def getRuleIndex(self): return PBXProjParser.RULE_reference_list - def enterRule(self, listener): - if hasattr(listener, "enterReference_list"): + def enterRule(self, listener:ParseTreeListener): + if hasattr( listener, "enterReference_list" ): listener.enterReference_list(self) - def exitRule(self, listener): - if hasattr(listener, "exitReference_list"): + def exitRule(self, listener:ParseTreeListener): + if hasattr( listener, "exitReference_list" ): listener.exitReference_list(self) @@ -6986,13 +7166,15 @@ def reference_list(self): self.exitRule() return localctx + class Any_string_listContext(ParserRuleContext): + __slots__ = 'parser' - def __init__(self, parser, parent=None, invokingState=-1): - super(PBXProjParser.Any_string_listContext, self).__init__(parent, invokingState) + def __init__(self, parser, parent:ParserRuleContext=None, invokingState:int=-1): + super().__init__(parent, invokingState) self.parser = parser - def any_string(self, i=None): + def any_string(self, i:int=None): if i is None: return self.getTypedRuleContexts(PBXProjParser.Any_stringContext) else: @@ -7002,12 +7184,12 @@ def any_string(self, i=None): def getRuleIndex(self): return PBXProjParser.RULE_any_string_list - def enterRule(self, listener): - if hasattr(listener, "enterAny_string_list"): + def enterRule(self, listener:ParseTreeListener): + if hasattr( listener, "enterAny_string_list" ): listener.enterAny_string_list(self) - def exitRule(self, listener): - if hasattr(listener, "exitAny_string_list"): + def exitRule(self, listener:ParseTreeListener): + if hasattr( listener, "exitAny_string_list" ): listener.exitAny_string_list(self) @@ -7044,13 +7226,15 @@ def any_string_list(self): self.exitRule() return localctx + class Non_quoted_strings_listContext(ParserRuleContext): + __slots__ = 'parser' - def __init__(self, parser, parent=None, invokingState=-1): - super(PBXProjParser.Non_quoted_strings_listContext, self).__init__(parent, invokingState) + def __init__(self, parser, parent:ParserRuleContext=None, invokingState:int=-1): + super().__init__(parent, invokingState) self.parser = parser - def NON_QUOTED_STRING(self, i=None): + def NON_QUOTED_STRING(self, i:int=None): if i is None: return self.getTokens(PBXProjParser.NON_QUOTED_STRING) else: @@ -7059,12 +7243,12 @@ def NON_QUOTED_STRING(self, i=None): def getRuleIndex(self): return PBXProjParser.RULE_non_quoted_strings_list - def enterRule(self, listener): - if hasattr(listener, "enterNon_quoted_strings_list"): + def enterRule(self, listener:ParseTreeListener): + if hasattr( listener, "enterNon_quoted_strings_list" ): listener.enterNon_quoted_strings_list(self) - def exitRule(self, listener): - if hasattr(listener, "exitNon_quoted_strings_list"): + def exitRule(self, listener:ParseTreeListener): + if hasattr( listener, "exitNon_quoted_strings_list" ): listener.exitNon_quoted_strings_list(self) @@ -7101,10 +7285,12 @@ def non_quoted_strings_list(self): self.exitRule() return localctx + class Build_configuration_listContext(ParserRuleContext): + __slots__ = 'parser' - def __init__(self, parser, parent=None, invokingState=-1): - super(PBXProjParser.Build_configuration_listContext, self).__init__(parent, invokingState) + def __init__(self, parser, parent:ParserRuleContext=None, invokingState:int=-1): + super().__init__(parent, invokingState) self.parser = parser def REFERENCE(self): @@ -7113,12 +7299,12 @@ def REFERENCE(self): def getRuleIndex(self): return PBXProjParser.RULE_build_configuration_list - def enterRule(self, listener): - if hasattr(listener, "enterBuild_configuration_list"): + def enterRule(self, listener:ParseTreeListener): + if hasattr( listener, "enterBuild_configuration_list" ): listener.enterBuild_configuration_list(self) - def exitRule(self, listener): - if hasattr(listener, "exitBuild_configuration_list"): + def exitRule(self, listener:ParseTreeListener): + if hasattr( listener, "exitBuild_configuration_list" ): listener.exitBuild_configuration_list(self) @@ -7146,10 +7332,12 @@ def build_configuration_list(self): self.exitRule() return localctx + class Build_phasesContext(ParserRuleContext): + __slots__ = 'parser' - def __init__(self, parser, parent=None, invokingState=-1): - super(PBXProjParser.Build_phasesContext, self).__init__(parent, invokingState) + def __init__(self, parser, parent:ParserRuleContext=None, invokingState:int=-1): + super().__init__(parent, invokingState) self.parser = parser def reference_list(self): @@ -7159,12 +7347,12 @@ def reference_list(self): def getRuleIndex(self): return PBXProjParser.RULE_build_phases - def enterRule(self, listener): - if hasattr(listener, "enterBuild_phases"): + def enterRule(self, listener:ParseTreeListener): + if hasattr( listener, "enterBuild_phases" ): listener.enterBuild_phases(self) - def exitRule(self, listener): - if hasattr(listener, "exitBuild_phases"): + def exitRule(self, listener:ParseTreeListener): + if hasattr( listener, "exitBuild_phases" ): listener.exitBuild_phases(self) @@ -7192,10 +7380,12 @@ def build_phases(self): self.exitRule() return localctx + class Build_rulesContext(ParserRuleContext): + __slots__ = 'parser' - def __init__(self, parser, parent=None, invokingState=-1): - super(PBXProjParser.Build_rulesContext, self).__init__(parent, invokingState) + def __init__(self, parser, parent:ParserRuleContext=None, invokingState:int=-1): + super().__init__(parent, invokingState) self.parser = parser def reference_list(self): @@ -7205,12 +7395,12 @@ def reference_list(self): def getRuleIndex(self): return PBXProjParser.RULE_build_rules - def enterRule(self, listener): - if hasattr(listener, "enterBuild_rules"): + def enterRule(self, listener:ParseTreeListener): + if hasattr( listener, "enterBuild_rules" ): listener.enterBuild_rules(self) - def exitRule(self, listener): - if hasattr(listener, "exitBuild_rules"): + def exitRule(self, listener:ParseTreeListener): + if hasattr( listener, "exitBuild_rules" ): listener.exitBuild_rules(self) @@ -7238,10 +7428,12 @@ def build_rules(self): self.exitRule() return localctx + class DependenciesContext(ParserRuleContext): + __slots__ = 'parser' - def __init__(self, parser, parent=None, invokingState=-1): - super(PBXProjParser.DependenciesContext, self).__init__(parent, invokingState) + def __init__(self, parser, parent:ParserRuleContext=None, invokingState:int=-1): + super().__init__(parent, invokingState) self.parser = parser def reference_list(self): @@ -7251,12 +7443,12 @@ def reference_list(self): def getRuleIndex(self): return PBXProjParser.RULE_dependencies - def enterRule(self, listener): - if hasattr(listener, "enterDependencies"): + def enterRule(self, listener:ParseTreeListener): + if hasattr( listener, "enterDependencies" ): listener.enterDependencies(self) - def exitRule(self, listener): - if hasattr(listener, "exitDependencies"): + def exitRule(self, listener:ParseTreeListener): + if hasattr( listener, "exitDependencies" ): listener.exitDependencies(self) @@ -7284,10 +7476,12 @@ def dependencies(self): self.exitRule() return localctx + class Product_nameContext(ParserRuleContext): + __slots__ = 'parser' - def __init__(self, parser, parent=None, invokingState=-1): - super(PBXProjParser.Product_nameContext, self).__init__(parent, invokingState) + def __init__(self, parser, parent:ParserRuleContext=None, invokingState:int=-1): + super().__init__(parent, invokingState) self.parser = parser def any_string(self): @@ -7297,12 +7491,12 @@ def any_string(self): def getRuleIndex(self): return PBXProjParser.RULE_product_name - def enterRule(self, listener): - if hasattr(listener, "enterProduct_name"): + def enterRule(self, listener:ParseTreeListener): + if hasattr( listener, "enterProduct_name" ): listener.enterProduct_name(self) - def exitRule(self, listener): - if hasattr(listener, "exitProduct_name"): + def exitRule(self, listener:ParseTreeListener): + if hasattr( listener, "exitProduct_name" ): listener.exitProduct_name(self) @@ -7330,10 +7524,12 @@ def product_name(self): self.exitRule() return localctx + class Product_referenceContext(ParserRuleContext): + __slots__ = 'parser' - def __init__(self, parser, parent=None, invokingState=-1): - super(PBXProjParser.Product_referenceContext, self).__init__(parent, invokingState) + def __init__(self, parser, parent:ParserRuleContext=None, invokingState:int=-1): + super().__init__(parent, invokingState) self.parser = parser def REFERENCE(self): @@ -7342,12 +7538,12 @@ def REFERENCE(self): def getRuleIndex(self): return PBXProjParser.RULE_product_reference - def enterRule(self, listener): - if hasattr(listener, "enterProduct_reference"): + def enterRule(self, listener:ParseTreeListener): + if hasattr( listener, "enterProduct_reference" ): listener.enterProduct_reference(self) - def exitRule(self, listener): - if hasattr(listener, "exitProduct_reference"): + def exitRule(self, listener:ParseTreeListener): + if hasattr( listener, "exitProduct_reference" ): listener.exitProduct_reference(self) @@ -7375,10 +7571,12 @@ def product_reference(self): self.exitRule() return localctx + class Product_typeContext(ParserRuleContext): + __slots__ = 'parser' - def __init__(self, parser, parent=None, invokingState=-1): - super(PBXProjParser.Product_typeContext, self).__init__(parent, invokingState) + def __init__(self, parser, parent:ParserRuleContext=None, invokingState:int=-1): + super().__init__(parent, invokingState) self.parser = parser def QUOTED_STRING(self): @@ -7387,12 +7585,12 @@ def QUOTED_STRING(self): def getRuleIndex(self): return PBXProjParser.RULE_product_type - def enterRule(self, listener): - if hasattr(listener, "enterProduct_type"): + def enterRule(self, listener:ParseTreeListener): + if hasattr( listener, "enterProduct_type" ): listener.enterProduct_type(self) - def exitRule(self, listener): - if hasattr(listener, "exitProduct_type"): + def exitRule(self, listener:ParseTreeListener): + if hasattr( listener, "exitProduct_type" ): listener.exitProduct_type(self) @@ -7420,10 +7618,12 @@ def product_type(self): self.exitRule() return localctx + class Line_endingContext(ParserRuleContext): + __slots__ = 'parser' - def __init__(self, parser, parent=None, invokingState=-1): - super(PBXProjParser.Line_endingContext, self).__init__(parent, invokingState) + def __init__(self, parser, parent:ParserRuleContext=None, invokingState:int=-1): + super().__init__(parent, invokingState) self.parser = parser def NUMBER(self): @@ -7432,12 +7632,12 @@ def NUMBER(self): def getRuleIndex(self): return PBXProjParser.RULE_line_ending - def enterRule(self, listener): - if hasattr(listener, "enterLine_ending"): + def enterRule(self, listener:ParseTreeListener): + if hasattr( listener, "enterLine_ending" ): listener.enterLine_ending(self) - def exitRule(self, listener): - if hasattr(listener, "exitLine_ending"): + def exitRule(self, listener:ParseTreeListener): + if hasattr( listener, "exitLine_ending" ): listener.exitLine_ending(self) @@ -7465,10 +7665,12 @@ def line_ending(self): self.exitRule() return localctx + class Xc_language_specification_identifierContext(ParserRuleContext): + __slots__ = 'parser' - def __init__(self, parser, parent=None, invokingState=-1): - super(PBXProjParser.Xc_language_specification_identifierContext, self).__init__(parent, invokingState) + def __init__(self, parser, parent:ParserRuleContext=None, invokingState:int=-1): + super().__init__(parent, invokingState) self.parser = parser def any_string(self): @@ -7478,12 +7680,12 @@ def any_string(self): def getRuleIndex(self): return PBXProjParser.RULE_xc_language_specification_identifier - def enterRule(self, listener): - if hasattr(listener, "enterXc_language_specification_identifier"): + def enterRule(self, listener:ParseTreeListener): + if hasattr( listener, "enterXc_language_specification_identifier" ): listener.enterXc_language_specification_identifier(self) - def exitRule(self, listener): - if hasattr(listener, "exitXc_language_specification_identifier"): + def exitRule(self, listener:ParseTreeListener): + if hasattr( listener, "exitXc_language_specification_identifier" ): listener.exitXc_language_specification_identifier(self) @@ -7511,10 +7713,12 @@ def xc_language_specification_identifier(self): self.exitRule() return localctx + class Plist_structure_definition_identifierContext(ParserRuleContext): + __slots__ = 'parser' - def __init__(self, parser, parent=None, invokingState=-1): - super(PBXProjParser.Plist_structure_definition_identifierContext, self).__init__(parent, invokingState) + def __init__(self, parser, parent:ParserRuleContext=None, invokingState:int=-1): + super().__init__(parent, invokingState) self.parser = parser def any_string(self): @@ -7524,12 +7728,12 @@ def any_string(self): def getRuleIndex(self): return PBXProjParser.RULE_plist_structure_definition_identifier - def enterRule(self, listener): - if hasattr(listener, "enterPlist_structure_definition_identifier"): + def enterRule(self, listener:ParseTreeListener): + if hasattr( listener, "enterPlist_structure_definition_identifier" ): listener.enterPlist_structure_definition_identifier(self) - def exitRule(self, listener): - if hasattr(listener, "exitPlist_structure_definition_identifier"): + def exitRule(self, listener:ParseTreeListener): + if hasattr( listener, "exitPlist_structure_definition_identifier" ): listener.exitPlist_structure_definition_identifier(self) @@ -7557,10 +7761,12 @@ def plist_structure_definition_identifier(self): self.exitRule() return localctx + class AttributesContext(ParserRuleContext): + __slots__ = 'parser' - def __init__(self, parser, parent=None, invokingState=-1): - super(PBXProjParser.AttributesContext, self).__init__(parent, invokingState) + def __init__(self, parser, parent:ParserRuleContext=None, invokingState:int=-1): + super().__init__(parent, invokingState) self.parser = parser def class_prefix(self): @@ -7602,12 +7808,12 @@ def target_attributes(self): def getRuleIndex(self): return PBXProjParser.RULE_attributes - def enterRule(self, listener): - if hasattr(listener, "enterAttributes"): + def enterRule(self, listener:ParseTreeListener): + if hasattr( listener, "enterAttributes" ): listener.enterAttributes(self) - def exitRule(self, listener): - if hasattr(listener, "exitAttributes"): + def exitRule(self, listener:ParseTreeListener): + if hasattr( listener, "exitAttributes" ): listener.exitAttributes(self) @@ -7710,10 +7916,12 @@ def attributes(self): self.exitRule() return localctx + class Last_swift_migrationContext(ParserRuleContext): + __slots__ = 'parser' - def __init__(self, parser, parent=None, invokingState=-1): - super(PBXProjParser.Last_swift_migrationContext, self).__init__(parent, invokingState) + def __init__(self, parser, parent:ParserRuleContext=None, invokingState:int=-1): + super().__init__(parent, invokingState) self.parser = parser def NUMBER(self): @@ -7722,12 +7930,12 @@ def NUMBER(self): def getRuleIndex(self): return PBXProjParser.RULE_last_swift_migration - def enterRule(self, listener): - if hasattr(listener, "enterLast_swift_migration"): + def enterRule(self, listener:ParseTreeListener): + if hasattr( listener, "enterLast_swift_migration" ): listener.enterLast_swift_migration(self) - def exitRule(self, listener): - if hasattr(listener, "exitLast_swift_migration"): + def exitRule(self, listener:ParseTreeListener): + if hasattr( listener, "exitLast_swift_migration" ): listener.exitLast_swift_migration(self) @@ -7755,10 +7963,12 @@ def last_swift_migration(self): self.exitRule() return localctx + class Default_build_system_type_for_workspaceContext(ParserRuleContext): + __slots__ = 'parser' - def __init__(self, parser, parent=None, invokingState=-1): - super(PBXProjParser.Default_build_system_type_for_workspaceContext, self).__init__(parent, invokingState) + def __init__(self, parser, parent:ParserRuleContext=None, invokingState:int=-1): + super().__init__(parent, invokingState) self.parser = parser def NON_QUOTED_STRING(self): @@ -7767,12 +7977,12 @@ def NON_QUOTED_STRING(self): def getRuleIndex(self): return PBXProjParser.RULE_default_build_system_type_for_workspace - def enterRule(self, listener): - if hasattr(listener, "enterDefault_build_system_type_for_workspace"): + def enterRule(self, listener:ParseTreeListener): + if hasattr( listener, "enterDefault_build_system_type_for_workspace" ): listener.enterDefault_build_system_type_for_workspace(self) - def exitRule(self, listener): - if hasattr(listener, "exitDefault_build_system_type_for_workspace"): + def exitRule(self, listener:ParseTreeListener): + if hasattr( listener, "exitDefault_build_system_type_for_workspace" ): listener.exitDefault_build_system_type_for_workspace(self) @@ -7800,10 +8010,12 @@ def default_build_system_type_for_workspace(self): self.exitRule() return localctx + class Last_swift_update_checkContext(ParserRuleContext): + __slots__ = 'parser' - def __init__(self, parser, parent=None, invokingState=-1): - super(PBXProjParser.Last_swift_update_checkContext, self).__init__(parent, invokingState) + def __init__(self, parser, parent:ParserRuleContext=None, invokingState:int=-1): + super().__init__(parent, invokingState) self.parser = parser def NUMBER(self): @@ -7812,12 +8024,12 @@ def NUMBER(self): def getRuleIndex(self): return PBXProjParser.RULE_last_swift_update_check - def enterRule(self, listener): - if hasattr(listener, "enterLast_swift_update_check"): + def enterRule(self, listener:ParseTreeListener): + if hasattr( listener, "enterLast_swift_update_check" ): listener.enterLast_swift_update_check(self) - def exitRule(self, listener): - if hasattr(listener, "exitLast_swift_update_check"): + def exitRule(self, listener:ParseTreeListener): + if hasattr( listener, "exitLast_swift_update_check" ): listener.exitLast_swift_update_check(self) @@ -7845,10 +8057,12 @@ def last_swift_update_check(self): self.exitRule() return localctx + class Build_targets_in_parallelContext(ParserRuleContext): + __slots__ = 'parser' - def __init__(self, parser, parent=None, invokingState=-1): - super(PBXProjParser.Build_targets_in_parallelContext, self).__init__(parent, invokingState) + def __init__(self, parser, parent:ParserRuleContext=None, invokingState:int=-1): + super().__init__(parent, invokingState) self.parser = parser def NON_QUOTED_STRING(self): @@ -7857,12 +8071,12 @@ def NON_QUOTED_STRING(self): def getRuleIndex(self): return PBXProjParser.RULE_build_targets_in_parallel - def enterRule(self, listener): - if hasattr(listener, "enterBuild_targets_in_parallel"): + def enterRule(self, listener:ParseTreeListener): + if hasattr( listener, "enterBuild_targets_in_parallel" ): listener.enterBuild_targets_in_parallel(self) - def exitRule(self, listener): - if hasattr(listener, "exitBuild_targets_in_parallel"): + def exitRule(self, listener:ParseTreeListener): + if hasattr( listener, "exitBuild_targets_in_parallel" ): listener.exitBuild_targets_in_parallel(self) @@ -7890,10 +8104,12 @@ def build_targets_in_parallel(self): self.exitRule() return localctx + class Last_upgrade_checkContext(ParserRuleContext): + __slots__ = 'parser' - def __init__(self, parser, parent=None, invokingState=-1): - super(PBXProjParser.Last_upgrade_checkContext, self).__init__(parent, invokingState) + def __init__(self, parser, parent:ParserRuleContext=None, invokingState:int=-1): + super().__init__(parent, invokingState) self.parser = parser def NUMBER(self): @@ -7902,12 +8118,12 @@ def NUMBER(self): def getRuleIndex(self): return PBXProjParser.RULE_last_upgrade_check - def enterRule(self, listener): - if hasattr(listener, "enterLast_upgrade_check"): + def enterRule(self, listener:ParseTreeListener): + if hasattr( listener, "enterLast_upgrade_check" ): listener.enterLast_upgrade_check(self) - def exitRule(self, listener): - if hasattr(listener, "exitLast_upgrade_check"): + def exitRule(self, listener:ParseTreeListener): + if hasattr( listener, "exitLast_upgrade_check" ): listener.exitLast_upgrade_check(self) @@ -7935,10 +8151,12 @@ def last_upgrade_check(self): self.exitRule() return localctx + class Last_testing_upgrade_checkContext(ParserRuleContext): + __slots__ = 'parser' - def __init__(self, parser, parent=None, invokingState=-1): - super(PBXProjParser.Last_testing_upgrade_checkContext, self).__init__(parent, invokingState) + def __init__(self, parser, parent:ParserRuleContext=None, invokingState:int=-1): + super().__init__(parent, invokingState) self.parser = parser def NON_QUOTED_STRING(self): @@ -7947,12 +8165,12 @@ def NON_QUOTED_STRING(self): def getRuleIndex(self): return PBXProjParser.RULE_last_testing_upgrade_check - def enterRule(self, listener): - if hasattr(listener, "enterLast_testing_upgrade_check"): + def enterRule(self, listener:ParseTreeListener): + if hasattr( listener, "enterLast_testing_upgrade_check" ): listener.enterLast_testing_upgrade_check(self) - def exitRule(self, listener): - if hasattr(listener, "exitLast_testing_upgrade_check"): + def exitRule(self, listener:ParseTreeListener): + if hasattr( listener, "exitLast_testing_upgrade_check" ): listener.exitLast_testing_upgrade_check(self) @@ -7980,10 +8198,12 @@ def last_testing_upgrade_check(self): self.exitRule() return localctx + class Organization_nameContext(ParserRuleContext): + __slots__ = 'parser' - def __init__(self, parser, parent=None, invokingState=-1): - super(PBXProjParser.Organization_nameContext, self).__init__(parent, invokingState) + def __init__(self, parser, parent:ParserRuleContext=None, invokingState:int=-1): + super().__init__(parent, invokingState) self.parser = parser def any_string(self): @@ -7993,12 +8213,12 @@ def any_string(self): def getRuleIndex(self): return PBXProjParser.RULE_organization_name - def enterRule(self, listener): - if hasattr(listener, "enterOrganization_name"): + def enterRule(self, listener:ParseTreeListener): + if hasattr( listener, "enterOrganization_name" ): listener.enterOrganization_name(self) - def exitRule(self, listener): - if hasattr(listener, "exitOrganization_name"): + def exitRule(self, listener:ParseTreeListener): + if hasattr( listener, "exitOrganization_name" ): listener.exitOrganization_name(self) @@ -8026,13 +8246,15 @@ def organization_name(self): self.exitRule() return localctx + class Target_attributesContext(ParserRuleContext): + __slots__ = 'parser' - def __init__(self, parser, parent=None, invokingState=-1): - super(PBXProjParser.Target_attributesContext, self).__init__(parent, invokingState) + def __init__(self, parser, parent:ParserRuleContext=None, invokingState:int=-1): + super().__init__(parent, invokingState) self.parser = parser - def target_attribute(self, i=None): + def target_attribute(self, i:int=None): if i is None: return self.getTypedRuleContexts(PBXProjParser.Target_attributeContext) else: @@ -8042,12 +8264,12 @@ def target_attribute(self, i=None): def getRuleIndex(self): return PBXProjParser.RULE_target_attributes - def enterRule(self, listener): - if hasattr(listener, "enterTarget_attributes"): + def enterRule(self, listener:ParseTreeListener): + if hasattr( listener, "enterTarget_attributes" ): listener.enterTarget_attributes(self) - def exitRule(self, listener): - if hasattr(listener, "exitTarget_attributes"): + def exitRule(self, listener:ParseTreeListener): + if hasattr( listener, "exitTarget_attributes" ): listener.exitTarget_attributes(self) @@ -8088,10 +8310,12 @@ def target_attributes(self): self.exitRule() return localctx + class Target_attributeContext(ParserRuleContext): + __slots__ = 'parser' - def __init__(self, parser, parent=None, invokingState=-1): - super(PBXProjParser.Target_attributeContext, self).__init__(parent, invokingState) + def __init__(self, parser, parent:ParserRuleContext=None, invokingState:int=-1): + super().__init__(parent, invokingState) self.parser = parser def REFERENCE(self): @@ -8101,7 +8325,7 @@ def created_on_tools_version(self): return self.getTypedRuleContext(PBXProjParser.Created_on_tools_versionContext,0) - def test_target_id(self, i=None): + def test_target_id(self, i:int=None): if i is None: return self.getTypedRuleContexts(PBXProjParser.Test_target_idContext) else: @@ -8127,12 +8351,12 @@ def system_capabilities(self): def getRuleIndex(self): return PBXProjParser.RULE_target_attribute - def enterRule(self, listener): - if hasattr(listener, "enterTarget_attribute"): + def enterRule(self, listener:ParseTreeListener): + if hasattr( listener, "enterTarget_attribute" ): listener.enterTarget_attribute(self) - def exitRule(self, listener): - if hasattr(listener, "exitTarget_attribute"): + def exitRule(self, listener:ParseTreeListener): + if hasattr( listener, "exitTarget_attribute" ): listener.exitTarget_attribute(self) @@ -8219,10 +8443,12 @@ def target_attribute(self): self.exitRule() return localctx + class Created_on_tools_versionContext(ParserRuleContext): + __slots__ = 'parser' - def __init__(self, parser, parent=None, invokingState=-1): - super(PBXProjParser.Created_on_tools_versionContext, self).__init__(parent, invokingState) + def __init__(self, parser, parent:ParserRuleContext=None, invokingState:int=-1): + super().__init__(parent, invokingState) self.parser = parser def NON_QUOTED_STRING(self): @@ -8231,12 +8457,12 @@ def NON_QUOTED_STRING(self): def getRuleIndex(self): return PBXProjParser.RULE_created_on_tools_version - def enterRule(self, listener): - if hasattr(listener, "enterCreated_on_tools_version"): + def enterRule(self, listener:ParseTreeListener): + if hasattr( listener, "enterCreated_on_tools_version" ): listener.enterCreated_on_tools_version(self) - def exitRule(self, listener): - if hasattr(listener, "exitCreated_on_tools_version"): + def exitRule(self, listener:ParseTreeListener): + if hasattr( listener, "exitCreated_on_tools_version" ): listener.exitCreated_on_tools_version(self) @@ -8264,10 +8490,12 @@ def created_on_tools_version(self): self.exitRule() return localctx + class Test_target_idContext(ParserRuleContext): + __slots__ = 'parser' - def __init__(self, parser, parent=None, invokingState=-1): - super(PBXProjParser.Test_target_idContext, self).__init__(parent, invokingState) + def __init__(self, parser, parent:ParserRuleContext=None, invokingState:int=-1): + super().__init__(parent, invokingState) self.parser = parser def REFERENCE(self): @@ -8276,12 +8504,12 @@ def REFERENCE(self): def getRuleIndex(self): return PBXProjParser.RULE_test_target_id - def enterRule(self, listener): - if hasattr(listener, "enterTest_target_id"): + def enterRule(self, listener:ParseTreeListener): + if hasattr( listener, "enterTest_target_id" ): listener.enterTest_target_id(self) - def exitRule(self, listener): - if hasattr(listener, "exitTest_target_id"): + def exitRule(self, listener:ParseTreeListener): + if hasattr( listener, "exitTest_target_id" ): listener.exitTest_target_id(self) @@ -8309,10 +8537,12 @@ def test_target_id(self): self.exitRule() return localctx + class Development_teamContext(ParserRuleContext): + __slots__ = 'parser' - def __init__(self, parser, parent=None, invokingState=-1): - super(PBXProjParser.Development_teamContext, self).__init__(parent, invokingState) + def __init__(self, parser, parent:ParserRuleContext=None, invokingState:int=-1): + super().__init__(parent, invokingState) self.parser = parser def NON_QUOTED_STRING(self): @@ -8321,12 +8551,12 @@ def NON_QUOTED_STRING(self): def getRuleIndex(self): return PBXProjParser.RULE_development_team - def enterRule(self, listener): - if hasattr(listener, "enterDevelopment_team"): + def enterRule(self, listener:ParseTreeListener): + if hasattr( listener, "enterDevelopment_team" ): listener.enterDevelopment_team(self) - def exitRule(self, listener): - if hasattr(listener, "exitDevelopment_team"): + def exitRule(self, listener:ParseTreeListener): + if hasattr( listener, "exitDevelopment_team" ): listener.exitDevelopment_team(self) @@ -8354,10 +8584,12 @@ def development_team(self): self.exitRule() return localctx + class Provisioning_styleContext(ParserRuleContext): + __slots__ = 'parser' - def __init__(self, parser, parent=None, invokingState=-1): - super(PBXProjParser.Provisioning_styleContext, self).__init__(parent, invokingState) + def __init__(self, parser, parent:ParserRuleContext=None, invokingState:int=-1): + super().__init__(parent, invokingState) self.parser = parser def NON_QUOTED_STRING(self): @@ -8366,12 +8598,12 @@ def NON_QUOTED_STRING(self): def getRuleIndex(self): return PBXProjParser.RULE_provisioning_style - def enterRule(self, listener): - if hasattr(listener, "enterProvisioning_style"): + def enterRule(self, listener:ParseTreeListener): + if hasattr( listener, "enterProvisioning_style" ): listener.enterProvisioning_style(self) - def exitRule(self, listener): - if hasattr(listener, "exitProvisioning_style"): + def exitRule(self, listener:ParseTreeListener): + if hasattr( listener, "exitProvisioning_style" ): listener.exitProvisioning_style(self) @@ -8399,10 +8631,12 @@ def provisioning_style(self): self.exitRule() return localctx + class Compatibility_versionContext(ParserRuleContext): + __slots__ = 'parser' - def __init__(self, parser, parent=None, invokingState=-1): - super(PBXProjParser.Compatibility_versionContext, self).__init__(parent, invokingState) + def __init__(self, parser, parent:ParserRuleContext=None, invokingState:int=-1): + super().__init__(parent, invokingState) self.parser = parser def QUOTED_STRING(self): @@ -8411,12 +8645,12 @@ def QUOTED_STRING(self): def getRuleIndex(self): return PBXProjParser.RULE_compatibility_version - def enterRule(self, listener): - if hasattr(listener, "enterCompatibility_version"): + def enterRule(self, listener:ParseTreeListener): + if hasattr( listener, "enterCompatibility_version" ): listener.enterCompatibility_version(self) - def exitRule(self, listener): - if hasattr(listener, "exitCompatibility_version"): + def exitRule(self, listener:ParseTreeListener): + if hasattr( listener, "exitCompatibility_version" ): listener.exitCompatibility_version(self) @@ -8444,10 +8678,12 @@ def compatibility_version(self): self.exitRule() return localctx + class Development_regionContext(ParserRuleContext): + __slots__ = 'parser' - def __init__(self, parser, parent=None, invokingState=-1): - super(PBXProjParser.Development_regionContext, self).__init__(parent, invokingState) + def __init__(self, parser, parent:ParserRuleContext=None, invokingState:int=-1): + super().__init__(parent, invokingState) self.parser = parser def NON_QUOTED_STRING(self): @@ -8456,12 +8692,12 @@ def NON_QUOTED_STRING(self): def getRuleIndex(self): return PBXProjParser.RULE_development_region - def enterRule(self, listener): - if hasattr(listener, "enterDevelopment_region"): + def enterRule(self, listener:ParseTreeListener): + if hasattr( listener, "enterDevelopment_region" ): listener.enterDevelopment_region(self) - def exitRule(self, listener): - if hasattr(listener, "exitDevelopment_region"): + def exitRule(self, listener:ParseTreeListener): + if hasattr( listener, "exitDevelopment_region" ): listener.exitDevelopment_region(self) @@ -8489,10 +8725,12 @@ def development_region(self): self.exitRule() return localctx + class Has_scanned_for_encodingsContext(ParserRuleContext): + __slots__ = 'parser' - def __init__(self, parser, parent=None, invokingState=-1): - super(PBXProjParser.Has_scanned_for_encodingsContext, self).__init__(parent, invokingState) + def __init__(self, parser, parent:ParserRuleContext=None, invokingState:int=-1): + super().__init__(parent, invokingState) self.parser = parser def NUMBER(self): @@ -8501,12 +8739,12 @@ def NUMBER(self): def getRuleIndex(self): return PBXProjParser.RULE_has_scanned_for_encodings - def enterRule(self, listener): - if hasattr(listener, "enterHas_scanned_for_encodings"): + def enterRule(self, listener:ParseTreeListener): + if hasattr( listener, "enterHas_scanned_for_encodings" ): listener.enterHas_scanned_for_encodings(self) - def exitRule(self, listener): - if hasattr(listener, "exitHas_scanned_for_encodings"): + def exitRule(self, listener:ParseTreeListener): + if hasattr( listener, "exitHas_scanned_for_encodings" ): listener.exitHas_scanned_for_encodings(self) @@ -8534,10 +8772,12 @@ def has_scanned_for_encodings(self): self.exitRule() return localctx + class Known_regionsContext(ParserRuleContext): + __slots__ = 'parser' - def __init__(self, parser, parent=None, invokingState=-1): - super(PBXProjParser.Known_regionsContext, self).__init__(parent, invokingState) + def __init__(self, parser, parent:ParserRuleContext=None, invokingState:int=-1): + super().__init__(parent, invokingState) self.parser = parser def any_string_list(self): @@ -8547,12 +8787,12 @@ def any_string_list(self): def getRuleIndex(self): return PBXProjParser.RULE_known_regions - def enterRule(self, listener): - if hasattr(listener, "enterKnown_regions"): + def enterRule(self, listener:ParseTreeListener): + if hasattr( listener, "enterKnown_regions" ): listener.enterKnown_regions(self) - def exitRule(self, listener): - if hasattr(listener, "exitKnown_regions"): + def exitRule(self, listener:ParseTreeListener): + if hasattr( listener, "exitKnown_regions" ): listener.exitKnown_regions(self) @@ -8580,10 +8820,12 @@ def known_regions(self): self.exitRule() return localctx + class Main_groupContext(ParserRuleContext): + __slots__ = 'parser' - def __init__(self, parser, parent=None, invokingState=-1): - super(PBXProjParser.Main_groupContext, self).__init__(parent, invokingState) + def __init__(self, parser, parent:ParserRuleContext=None, invokingState:int=-1): + super().__init__(parent, invokingState) self.parser = parser def REFERENCE(self): @@ -8592,12 +8834,12 @@ def REFERENCE(self): def getRuleIndex(self): return PBXProjParser.RULE_main_group - def enterRule(self, listener): - if hasattr(listener, "enterMain_group"): + def enterRule(self, listener:ParseTreeListener): + if hasattr( listener, "enterMain_group" ): listener.enterMain_group(self) - def exitRule(self, listener): - if hasattr(listener, "exitMain_group"): + def exitRule(self, listener:ParseTreeListener): + if hasattr( listener, "exitMain_group" ): listener.exitMain_group(self) @@ -8625,10 +8867,12 @@ def main_group(self): self.exitRule() return localctx + class Product_ref_groupContext(ParserRuleContext): + __slots__ = 'parser' - def __init__(self, parser, parent=None, invokingState=-1): - super(PBXProjParser.Product_ref_groupContext, self).__init__(parent, invokingState) + def __init__(self, parser, parent:ParserRuleContext=None, invokingState:int=-1): + super().__init__(parent, invokingState) self.parser = parser def REFERENCE(self): @@ -8637,12 +8881,12 @@ def REFERENCE(self): def getRuleIndex(self): return PBXProjParser.RULE_product_ref_group - def enterRule(self, listener): - if hasattr(listener, "enterProduct_ref_group"): + def enterRule(self, listener:ParseTreeListener): + if hasattr( listener, "enterProduct_ref_group" ): listener.enterProduct_ref_group(self) - def exitRule(self, listener): - if hasattr(listener, "exitProduct_ref_group"): + def exitRule(self, listener:ParseTreeListener): + if hasattr( listener, "exitProduct_ref_group" ): listener.exitProduct_ref_group(self) @@ -8670,10 +8914,12 @@ def product_ref_group(self): self.exitRule() return localctx + class Package_referencesContext(ParserRuleContext): + __slots__ = 'parser' - def __init__(self, parser, parent=None, invokingState=-1): - super(PBXProjParser.Package_referencesContext, self).__init__(parent, invokingState) + def __init__(self, parser, parent:ParserRuleContext=None, invokingState:int=-1): + super().__init__(parent, invokingState) self.parser = parser def reference_list(self): @@ -8683,12 +8929,12 @@ def reference_list(self): def getRuleIndex(self): return PBXProjParser.RULE_package_references - def enterRule(self, listener): - if hasattr(listener, "enterPackage_references"): + def enterRule(self, listener:ParseTreeListener): + if hasattr( listener, "enterPackage_references" ): listener.enterPackage_references(self) - def exitRule(self, listener): - if hasattr(listener, "exitPackage_references"): + def exitRule(self, listener:ParseTreeListener): + if hasattr( listener, "exitPackage_references" ): listener.exitPackage_references(self) @@ -8716,10 +8962,12 @@ def package_references(self): self.exitRule() return localctx + class Project_dir_pathContext(ParserRuleContext): + __slots__ = 'parser' - def __init__(self, parser, parent=None, invokingState=-1): - super(PBXProjParser.Project_dir_pathContext, self).__init__(parent, invokingState) + def __init__(self, parser, parent:ParserRuleContext=None, invokingState:int=-1): + super().__init__(parent, invokingState) self.parser = parser def QUOTED_STRING(self): @@ -8731,12 +8979,12 @@ def NON_QUOTED_STRING(self): def getRuleIndex(self): return PBXProjParser.RULE_project_dir_path - def enterRule(self, listener): - if hasattr(listener, "enterProject_dir_path"): + def enterRule(self, listener:ParseTreeListener): + if hasattr( listener, "enterProject_dir_path" ): listener.enterProject_dir_path(self) - def exitRule(self, listener): - if hasattr(listener, "exitProject_dir_path"): + def exitRule(self, listener:ParseTreeListener): + if hasattr( listener, "exitProject_dir_path" ): listener.exitProject_dir_path(self) @@ -8770,10 +9018,12 @@ def project_dir_path(self): self.exitRule() return localctx + class Project_referencesContext(ParserRuleContext): + __slots__ = 'parser' - def __init__(self, parser, parent=None, invokingState=-1): - super(PBXProjParser.Project_referencesContext, self).__init__(parent, invokingState) + def __init__(self, parser, parent:ParserRuleContext=None, invokingState:int=-1): + super().__init__(parent, invokingState) self.parser = parser def any_string(self): @@ -8787,12 +9037,12 @@ def project_references_list(self): def getRuleIndex(self): return PBXProjParser.RULE_project_references - def enterRule(self, listener): - if hasattr(listener, "enterProject_references"): + def enterRule(self, listener:ParseTreeListener): + if hasattr( listener, "enterProject_references" ): listener.enterProject_references(self) - def exitRule(self, listener): - if hasattr(listener, "exitProject_references"): + def exitRule(self, listener:ParseTreeListener): + if hasattr( listener, "exitProject_references" ): listener.exitProject_references(self) @@ -8843,10 +9093,12 @@ def project_references(self): self.exitRule() return localctx + class Project_rootContext(ParserRuleContext): + __slots__ = 'parser' - def __init__(self, parser, parent=None, invokingState=-1): - super(PBXProjParser.Project_rootContext, self).__init__(parent, invokingState) + def __init__(self, parser, parent:ParserRuleContext=None, invokingState:int=-1): + super().__init__(parent, invokingState) self.parser = parser def QUOTED_STRING(self): @@ -8858,12 +9110,12 @@ def NON_QUOTED_STRING(self): def getRuleIndex(self): return PBXProjParser.RULE_project_root - def enterRule(self, listener): - if hasattr(listener, "enterProject_root"): + def enterRule(self, listener:ParseTreeListener): + if hasattr( listener, "enterProject_root" ): listener.enterProject_root(self) - def exitRule(self, listener): - if hasattr(listener, "exitProject_root"): + def exitRule(self, listener:ParseTreeListener): + if hasattr( listener, "exitProject_root" ): listener.exitProject_root(self) @@ -8897,10 +9149,12 @@ def project_root(self): self.exitRule() return localctx + class TargetsContext(ParserRuleContext): + __slots__ = 'parser' - def __init__(self, parser, parent=None, invokingState=-1): - super(PBXProjParser.TargetsContext, self).__init__(parent, invokingState) + def __init__(self, parser, parent:ParserRuleContext=None, invokingState:int=-1): + super().__init__(parent, invokingState) self.parser = parser def reference_list(self): @@ -8910,12 +9164,12 @@ def reference_list(self): def getRuleIndex(self): return PBXProjParser.RULE_targets - def enterRule(self, listener): - if hasattr(listener, "enterTargets"): + def enterRule(self, listener:ParseTreeListener): + if hasattr( listener, "enterTargets" ): listener.enterTargets(self) - def exitRule(self, listener): - if hasattr(listener, "exitTargets"): + def exitRule(self, listener:ParseTreeListener): + if hasattr( listener, "exitTargets" ): listener.exitTargets(self) @@ -8943,10 +9197,12 @@ def targets(self): self.exitRule() return localctx + class Input_file_list_pathsContext(ParserRuleContext): + __slots__ = 'parser' - def __init__(self, parser, parent=None, invokingState=-1): - super(PBXProjParser.Input_file_list_pathsContext, self).__init__(parent, invokingState) + def __init__(self, parser, parent:ParserRuleContext=None, invokingState:int=-1): + super().__init__(parent, invokingState) self.parser = parser def any_string_list(self): @@ -8956,12 +9212,12 @@ def any_string_list(self): def getRuleIndex(self): return PBXProjParser.RULE_input_file_list_paths - def enterRule(self, listener): - if hasattr(listener, "enterInput_file_list_paths"): + def enterRule(self, listener:ParseTreeListener): + if hasattr( listener, "enterInput_file_list_paths" ): listener.enterInput_file_list_paths(self) - def exitRule(self, listener): - if hasattr(listener, "exitInput_file_list_paths"): + def exitRule(self, listener:ParseTreeListener): + if hasattr( listener, "exitInput_file_list_paths" ): listener.exitInput_file_list_paths(self) @@ -8989,10 +9245,12 @@ def input_file_list_paths(self): self.exitRule() return localctx + class Input_pathsContext(ParserRuleContext): + __slots__ = 'parser' - def __init__(self, parser, parent=None, invokingState=-1): - super(PBXProjParser.Input_pathsContext, self).__init__(parent, invokingState) + def __init__(self, parser, parent:ParserRuleContext=None, invokingState:int=-1): + super().__init__(parent, invokingState) self.parser = parser def any_string_list(self): @@ -9002,12 +9260,12 @@ def any_string_list(self): def getRuleIndex(self): return PBXProjParser.RULE_input_paths - def enterRule(self, listener): - if hasattr(listener, "enterInput_paths"): + def enterRule(self, listener:ParseTreeListener): + if hasattr( listener, "enterInput_paths" ): listener.enterInput_paths(self) - def exitRule(self, listener): - if hasattr(listener, "exitInput_paths"): + def exitRule(self, listener:ParseTreeListener): + if hasattr( listener, "exitInput_paths" ): listener.exitInput_paths(self) @@ -9035,10 +9293,12 @@ def input_paths(self): self.exitRule() return localctx + class Output_file_list_pathsContext(ParserRuleContext): + __slots__ = 'parser' - def __init__(self, parser, parent=None, invokingState=-1): - super(PBXProjParser.Output_file_list_pathsContext, self).__init__(parent, invokingState) + def __init__(self, parser, parent:ParserRuleContext=None, invokingState:int=-1): + super().__init__(parent, invokingState) self.parser = parser def any_string_list(self): @@ -9048,12 +9308,12 @@ def any_string_list(self): def getRuleIndex(self): return PBXProjParser.RULE_output_file_list_paths - def enterRule(self, listener): - if hasattr(listener, "enterOutput_file_list_paths"): + def enterRule(self, listener:ParseTreeListener): + if hasattr( listener, "enterOutput_file_list_paths" ): listener.enterOutput_file_list_paths(self) - def exitRule(self, listener): - if hasattr(listener, "exitOutput_file_list_paths"): + def exitRule(self, listener:ParseTreeListener): + if hasattr( listener, "exitOutput_file_list_paths" ): listener.exitOutput_file_list_paths(self) @@ -9081,10 +9341,12 @@ def output_file_list_paths(self): self.exitRule() return localctx + class Output_pathsContext(ParserRuleContext): + __slots__ = 'parser' - def __init__(self, parser, parent=None, invokingState=-1): - super(PBXProjParser.Output_pathsContext, self).__init__(parent, invokingState) + def __init__(self, parser, parent:ParserRuleContext=None, invokingState:int=-1): + super().__init__(parent, invokingState) self.parser = parser def any_string_list(self): @@ -9094,12 +9356,12 @@ def any_string_list(self): def getRuleIndex(self): return PBXProjParser.RULE_output_paths - def enterRule(self, listener): - if hasattr(listener, "enterOutput_paths"): + def enterRule(self, listener:ParseTreeListener): + if hasattr( listener, "enterOutput_paths" ): listener.enterOutput_paths(self) - def exitRule(self, listener): - if hasattr(listener, "exitOutput_paths"): + def exitRule(self, listener:ParseTreeListener): + if hasattr( listener, "exitOutput_paths" ): listener.exitOutput_paths(self) @@ -9127,10 +9389,12 @@ def output_paths(self): self.exitRule() return localctx + class Shell_pathContext(ParserRuleContext): + __slots__ = 'parser' - def __init__(self, parser, parent=None, invokingState=-1): - super(PBXProjParser.Shell_pathContext, self).__init__(parent, invokingState) + def __init__(self, parser, parent:ParserRuleContext=None, invokingState:int=-1): + super().__init__(parent, invokingState) self.parser = parser def NON_QUOTED_STRING(self): @@ -9139,12 +9403,12 @@ def NON_QUOTED_STRING(self): def getRuleIndex(self): return PBXProjParser.RULE_shell_path - def enterRule(self, listener): - if hasattr(listener, "enterShell_path"): + def enterRule(self, listener:ParseTreeListener): + if hasattr( listener, "enterShell_path" ): listener.enterShell_path(self) - def exitRule(self, listener): - if hasattr(listener, "exitShell_path"): + def exitRule(self, listener:ParseTreeListener): + if hasattr( listener, "exitShell_path" ): listener.exitShell_path(self) @@ -9172,10 +9436,12 @@ def shell_path(self): self.exitRule() return localctx + class Shell_scriptContext(ParserRuleContext): + __slots__ = 'parser' - def __init__(self, parser, parent=None, invokingState=-1): - super(PBXProjParser.Shell_scriptContext, self).__init__(parent, invokingState) + def __init__(self, parser, parent:ParserRuleContext=None, invokingState:int=-1): + super().__init__(parent, invokingState) self.parser = parser def QUOTED_STRING(self): @@ -9187,12 +9453,12 @@ def NON_QUOTED_STRING(self): def getRuleIndex(self): return PBXProjParser.RULE_shell_script - def enterRule(self, listener): - if hasattr(listener, "enterShell_script"): + def enterRule(self, listener:ParseTreeListener): + if hasattr( listener, "enterShell_script" ): listener.enterShell_script(self) - def exitRule(self, listener): - if hasattr(listener, "exitShell_script"): + def exitRule(self, listener:ParseTreeListener): + if hasattr( listener, "exitShell_script" ): listener.exitShell_script(self) @@ -9226,10 +9492,12 @@ def shell_script(self): self.exitRule() return localctx + class Show_env_vars_in_logContext(ParserRuleContext): + __slots__ = 'parser' - def __init__(self, parser, parent=None, invokingState=-1): - super(PBXProjParser.Show_env_vars_in_logContext, self).__init__(parent, invokingState) + def __init__(self, parser, parent:ParserRuleContext=None, invokingState:int=-1): + super().__init__(parent, invokingState) self.parser = parser def NUMBER(self): @@ -9238,12 +9506,12 @@ def NUMBER(self): def getRuleIndex(self): return PBXProjParser.RULE_show_env_vars_in_log - def enterRule(self, listener): - if hasattr(listener, "enterShow_env_vars_in_log"): + def enterRule(self, listener:ParseTreeListener): + if hasattr( listener, "enterShow_env_vars_in_log" ): listener.enterShow_env_vars_in_log(self) - def exitRule(self, listener): - if hasattr(listener, "exitShow_env_vars_in_log"): + def exitRule(self, listener:ParseTreeListener): + if hasattr( listener, "exitShow_env_vars_in_log" ): listener.exitShow_env_vars_in_log(self) @@ -9271,10 +9539,12 @@ def show_env_vars_in_log(self): self.exitRule() return localctx + class TargetContext(ParserRuleContext): + __slots__ = 'parser' - def __init__(self, parser, parent=None, invokingState=-1): - super(PBXProjParser.TargetContext, self).__init__(parent, invokingState) + def __init__(self, parser, parent:ParserRuleContext=None, invokingState:int=-1): + super().__init__(parent, invokingState) self.parser = parser def REFERENCE(self): @@ -9283,12 +9553,12 @@ def REFERENCE(self): def getRuleIndex(self): return PBXProjParser.RULE_target - def enterRule(self, listener): - if hasattr(listener, "enterTarget"): + def enterRule(self, listener:ParseTreeListener): + if hasattr( listener, "enterTarget" ): listener.enterTarget(self) - def exitRule(self, listener): - if hasattr(listener, "exitTarget"): + def exitRule(self, listener:ParseTreeListener): + if hasattr( listener, "exitTarget" ): listener.exitTarget(self) @@ -9316,10 +9586,12 @@ def target(self): self.exitRule() return localctx + class Target_proxyContext(ParserRuleContext): + __slots__ = 'parser' - def __init__(self, parser, parent=None, invokingState=-1): - super(PBXProjParser.Target_proxyContext, self).__init__(parent, invokingState) + def __init__(self, parser, parent:ParserRuleContext=None, invokingState:int=-1): + super().__init__(parent, invokingState) self.parser = parser def REFERENCE(self): @@ -9328,12 +9600,12 @@ def REFERENCE(self): def getRuleIndex(self): return PBXProjParser.RULE_target_proxy - def enterRule(self, listener): - if hasattr(listener, "enterTarget_proxy"): + def enterRule(self, listener:ParseTreeListener): + if hasattr( listener, "enterTarget_proxy" ): listener.enterTarget_proxy(self) - def exitRule(self, listener): - if hasattr(listener, "exitTarget_proxy"): + def exitRule(self, listener:ParseTreeListener): + if hasattr( listener, "exitTarget_proxy" ): listener.exitTarget_proxy(self) @@ -9361,10 +9633,12 @@ def target_proxy(self): self.exitRule() return localctx + class File_typeContext(ParserRuleContext): + __slots__ = 'parser' - def __init__(self, parser, parent=None, invokingState=-1): - super(PBXProjParser.File_typeContext, self).__init__(parent, invokingState) + def __init__(self, parser, parent:ParserRuleContext=None, invokingState:int=-1): + super().__init__(parent, invokingState) self.parser = parser def any_string(self): @@ -9374,12 +9648,12 @@ def any_string(self): def getRuleIndex(self): return PBXProjParser.RULE_file_type - def enterRule(self, listener): - if hasattr(listener, "enterFile_type"): + def enterRule(self, listener:ParseTreeListener): + if hasattr( listener, "enterFile_type" ): listener.enterFile_type(self) - def exitRule(self, listener): - if hasattr(listener, "exitFile_type"): + def exitRule(self, listener:ParseTreeListener): + if hasattr( listener, "exitFile_type" ): listener.exitFile_type(self) @@ -9407,10 +9681,12 @@ def file_type(self): self.exitRule() return localctx + class Remote_refContext(ParserRuleContext): + __slots__ = 'parser' - def __init__(self, parser, parent=None, invokingState=-1): - super(PBXProjParser.Remote_refContext, self).__init__(parent, invokingState) + def __init__(self, parser, parent:ParserRuleContext=None, invokingState:int=-1): + super().__init__(parent, invokingState) self.parser = parser def REFERENCE(self): @@ -9419,12 +9695,12 @@ def REFERENCE(self): def getRuleIndex(self): return PBXProjParser.RULE_remote_ref - def enterRule(self, listener): - if hasattr(listener, "enterRemote_ref"): + def enterRule(self, listener:ParseTreeListener): + if hasattr( listener, "enterRemote_ref" ): listener.enterRemote_ref(self) - def exitRule(self, listener): - if hasattr(listener, "exitRemote_ref"): + def exitRule(self, listener:ParseTreeListener): + if hasattr( listener, "exitRemote_ref" ): listener.exitRemote_ref(self) @@ -9452,10 +9728,12 @@ def remote_ref(self): self.exitRule() return localctx + class Base_configuration_referenceContext(ParserRuleContext): + __slots__ = 'parser' - def __init__(self, parser, parent=None, invokingState=-1): - super(PBXProjParser.Base_configuration_referenceContext, self).__init__(parent, invokingState) + def __init__(self, parser, parent:ParserRuleContext=None, invokingState:int=-1): + super().__init__(parent, invokingState) self.parser = parser def REFERENCE(self): @@ -9464,12 +9742,12 @@ def REFERENCE(self): def getRuleIndex(self): return PBXProjParser.RULE_base_configuration_reference - def enterRule(self, listener): - if hasattr(listener, "enterBase_configuration_reference"): + def enterRule(self, listener:ParseTreeListener): + if hasattr( listener, "enterBase_configuration_reference" ): listener.enterBase_configuration_reference(self) - def exitRule(self, listener): - if hasattr(listener, "exitBase_configuration_reference"): + def exitRule(self, listener:ParseTreeListener): + if hasattr( listener, "exitBase_configuration_reference" ): listener.exitBase_configuration_reference(self) @@ -9497,13 +9775,15 @@ def base_configuration_reference(self): self.exitRule() return localctx + class Build_settingsContext(ParserRuleContext): + __slots__ = 'parser' - def __init__(self, parser, parent=None, invokingState=-1): - super(PBXProjParser.Build_settingsContext, self).__init__(parent, invokingState) + def __init__(self, parser, parent:ParserRuleContext=None, invokingState:int=-1): + super().__init__(parent, invokingState) self.parser = parser - def key_value(self, i=None): + def key_value(self, i:int=None): if i is None: return self.getTypedRuleContexts(PBXProjParser.Key_valueContext) else: @@ -9513,12 +9793,12 @@ def key_value(self, i=None): def getRuleIndex(self): return PBXProjParser.RULE_build_settings - def enterRule(self, listener): - if hasattr(listener, "enterBuild_settings"): + def enterRule(self, listener:ParseTreeListener): + if hasattr( listener, "enterBuild_settings" ): listener.enterBuild_settings(self) - def exitRule(self, listener): - if hasattr(listener, "exitBuild_settings"): + def exitRule(self, listener:ParseTreeListener): + if hasattr( listener, "exitBuild_settings" ): listener.exitBuild_settings(self) @@ -9559,10 +9839,12 @@ def build_settings(self): self.exitRule() return localctx + class Dst_pathContext(ParserRuleContext): + __slots__ = 'parser' - def __init__(self, parser, parent=None, invokingState=-1): - super(PBXProjParser.Dst_pathContext, self).__init__(parent, invokingState) + def __init__(self, parser, parent:ParserRuleContext=None, invokingState:int=-1): + super().__init__(parent, invokingState) self.parser = parser def QUOTED_STRING(self): @@ -9574,12 +9856,12 @@ def NON_QUOTED_STRING(self): def getRuleIndex(self): return PBXProjParser.RULE_dst_path - def enterRule(self, listener): - if hasattr(listener, "enterDst_path"): + def enterRule(self, listener:ParseTreeListener): + if hasattr( listener, "enterDst_path" ): listener.enterDst_path(self) - def exitRule(self, listener): - if hasattr(listener, "exitDst_path"): + def exitRule(self, listener:ParseTreeListener): + if hasattr( listener, "exitDst_path" ): listener.exitDst_path(self) @@ -9613,10 +9895,12 @@ def dst_path(self): self.exitRule() return localctx + class Dst_subfolder_specContext(ParserRuleContext): + __slots__ = 'parser' - def __init__(self, parser, parent=None, invokingState=-1): - super(PBXProjParser.Dst_subfolder_specContext, self).__init__(parent, invokingState) + def __init__(self, parser, parent:ParserRuleContext=None, invokingState:int=-1): + super().__init__(parent, invokingState) self.parser = parser def NUMBER(self): @@ -9625,12 +9909,12 @@ def NUMBER(self): def getRuleIndex(self): return PBXProjParser.RULE_dst_subfolder_spec - def enterRule(self, listener): - if hasattr(listener, "enterDst_subfolder_spec"): + def enterRule(self, listener:ParseTreeListener): + if hasattr( listener, "enterDst_subfolder_spec" ): listener.enterDst_subfolder_spec(self) - def exitRule(self, listener): - if hasattr(listener, "exitDst_subfolder_spec"): + def exitRule(self, listener:ParseTreeListener): + if hasattr( listener, "exitDst_subfolder_spec" ): listener.exitDst_subfolder_spec(self) @@ -9658,13 +9942,15 @@ def dst_subfolder_spec(self): self.exitRule() return localctx + class Project_references_listContext(ParserRuleContext): + __slots__ = 'parser' - def __init__(self, parser, parent=None, invokingState=-1): - super(PBXProjParser.Project_references_listContext, self).__init__(parent, invokingState) + def __init__(self, parser, parent:ParserRuleContext=None, invokingState:int=-1): + super().__init__(parent, invokingState) self.parser = parser - def project_references_list_element(self, i=None): + def project_references_list_element(self, i:int=None): if i is None: return self.getTypedRuleContexts(PBXProjParser.Project_references_list_elementContext) else: @@ -9674,12 +9960,12 @@ def project_references_list_element(self, i=None): def getRuleIndex(self): return PBXProjParser.RULE_project_references_list - def enterRule(self, listener): - if hasattr(listener, "enterProject_references_list"): + def enterRule(self, listener:ParseTreeListener): + if hasattr( listener, "enterProject_references_list" ): listener.enterProject_references_list(self) - def exitRule(self, listener): - if hasattr(listener, "exitProject_references_list"): + def exitRule(self, listener:ParseTreeListener): + if hasattr( listener, "exitProject_references_list" ): listener.exitProject_references_list(self) @@ -9710,13 +9996,15 @@ def project_references_list(self): self.exitRule() return localctx + class Project_references_list_elementContext(ParserRuleContext): + __slots__ = 'parser' - def __init__(self, parser, parent=None, invokingState=-1): - super(PBXProjParser.Project_references_list_elementContext, self).__init__(parent, invokingState) + def __init__(self, parser, parent:ParserRuleContext=None, invokingState:int=-1): + super().__init__(parent, invokingState) self.parser = parser - def REFERENCE(self, i=None): + def REFERENCE(self, i:int=None): if i is None: return self.getTokens(PBXProjParser.REFERENCE) else: @@ -9725,12 +10013,12 @@ def REFERENCE(self, i=None): def getRuleIndex(self): return PBXProjParser.RULE_project_references_list_element - def enterRule(self, listener): - if hasattr(listener, "enterProject_references_list_element"): + def enterRule(self, listener:ParseTreeListener): + if hasattr( listener, "enterProject_references_list_element" ): listener.enterProject_references_list_element(self) - def exitRule(self, listener): - if hasattr(listener, "exitProject_references_list_element"): + def exitRule(self, listener:ParseTreeListener): + if hasattr( listener, "exitProject_references_list_element" ): listener.exitProject_references_list_element(self) @@ -9772,13 +10060,15 @@ def project_references_list_element(self): self.exitRule() return localctx + class Key_valueContext(ParserRuleContext): + __slots__ = 'parser' - def __init__(self, parser, parent=None, invokingState=-1): - super(PBXProjParser.Key_valueContext, self).__init__(parent, invokingState) + def __init__(self, parser, parent:ParserRuleContext=None, invokingState:int=-1): + super().__init__(parent, invokingState) self.parser = parser - def any_string(self, i=None): + def any_string(self, i:int=None): if i is None: return self.getTypedRuleContexts(PBXProjParser.Any_stringContext) else: @@ -9798,12 +10088,12 @@ def key_value(self): def getRuleIndex(self): return PBXProjParser.RULE_key_value - def enterRule(self, listener): - if hasattr(listener, "enterKey_value"): + def enterRule(self, listener:ParseTreeListener): + if hasattr( listener, "enterKey_value" ): listener.enterKey_value(self) - def exitRule(self, listener): - if hasattr(listener, "exitKey_value"): + def exitRule(self, listener:ParseTreeListener): + if hasattr( listener, "exitKey_value" ): listener.exitKey_value(self) @@ -9905,10 +10195,12 @@ def key_value(self): self.exitRule() return localctx + class Build_configurationsContext(ParserRuleContext): + __slots__ = 'parser' - def __init__(self, parser, parent=None, invokingState=-1): - super(PBXProjParser.Build_configurationsContext, self).__init__(parent, invokingState) + def __init__(self, parser, parent:ParserRuleContext=None, invokingState:int=-1): + super().__init__(parent, invokingState) self.parser = parser def reference_list(self): @@ -9918,12 +10210,12 @@ def reference_list(self): def getRuleIndex(self): return PBXProjParser.RULE_build_configurations - def enterRule(self, listener): - if hasattr(listener, "enterBuild_configurations"): + def enterRule(self, listener:ParseTreeListener): + if hasattr( listener, "enterBuild_configurations" ): listener.enterBuild_configurations(self) - def exitRule(self, listener): - if hasattr(listener, "exitBuild_configurations"): + def exitRule(self, listener:ParseTreeListener): + if hasattr( listener, "exitBuild_configurations" ): listener.exitBuild_configurations(self) @@ -9951,10 +10243,12 @@ def build_configurations(self): self.exitRule() return localctx + class Default_configuration_is_visibleContext(ParserRuleContext): + __slots__ = 'parser' - def __init__(self, parser, parent=None, invokingState=-1): - super(PBXProjParser.Default_configuration_is_visibleContext, self).__init__(parent, invokingState) + def __init__(self, parser, parent:ParserRuleContext=None, invokingState:int=-1): + super().__init__(parent, invokingState) self.parser = parser def NUMBER(self): @@ -9963,12 +10257,12 @@ def NUMBER(self): def getRuleIndex(self): return PBXProjParser.RULE_default_configuration_is_visible - def enterRule(self, listener): - if hasattr(listener, "enterDefault_configuration_is_visible"): + def enterRule(self, listener:ParseTreeListener): + if hasattr( listener, "enterDefault_configuration_is_visible" ): listener.enterDefault_configuration_is_visible(self) - def exitRule(self, listener): - if hasattr(listener, "exitDefault_configuration_is_visible"): + def exitRule(self, listener:ParseTreeListener): + if hasattr( listener, "exitDefault_configuration_is_visible" ): listener.exitDefault_configuration_is_visible(self) @@ -9996,10 +10290,12 @@ def default_configuration_is_visible(self): self.exitRule() return localctx + class Default_configuration_nameContext(ParserRuleContext): + __slots__ = 'parser' - def __init__(self, parser, parent=None, invokingState=-1): - super(PBXProjParser.Default_configuration_nameContext, self).__init__(parent, invokingState) + def __init__(self, parser, parent:ParserRuleContext=None, invokingState:int=-1): + super().__init__(parent, invokingState) self.parser = parser def QUOTED_STRING(self): @@ -10011,12 +10307,12 @@ def NON_QUOTED_STRING(self): def getRuleIndex(self): return PBXProjParser.RULE_default_configuration_name - def enterRule(self, listener): - if hasattr(listener, "enterDefault_configuration_name"): + def enterRule(self, listener:ParseTreeListener): + if hasattr( listener, "enterDefault_configuration_name" ): listener.enterDefault_configuration_name(self) - def exitRule(self, listener): - if hasattr(listener, "exitDefault_configuration_name"): + def exitRule(self, listener:ParseTreeListener): + if hasattr( listener, "exitDefault_configuration_name" ): listener.exitDefault_configuration_name(self) @@ -10050,13 +10346,15 @@ def default_configuration_name(self): self.exitRule() return localctx + class SettingsContext(ParserRuleContext): + __slots__ = 'parser' - def __init__(self, parser, parent=None, invokingState=-1): - super(PBXProjParser.SettingsContext, self).__init__(parent, invokingState) + def __init__(self, parser, parent:ParserRuleContext=None, invokingState:int=-1): + super().__init__(parent, invokingState) self.parser = parser - def key_value(self, i=None): + def key_value(self, i:int=None): if i is None: return self.getTypedRuleContexts(PBXProjParser.Key_valueContext) else: @@ -10066,12 +10364,12 @@ def key_value(self, i=None): def getRuleIndex(self): return PBXProjParser.RULE_settings - def enterRule(self, listener): - if hasattr(listener, "enterSettings"): + def enterRule(self, listener:ParseTreeListener): + if hasattr( listener, "enterSettings" ): listener.enterSettings(self) - def exitRule(self, listener): - if hasattr(listener, "exitSettings"): + def exitRule(self, listener:ParseTreeListener): + if hasattr( listener, "exitSettings" ): listener.exitSettings(self) @@ -10112,13 +10410,15 @@ def settings(self): self.exitRule() return localctx + class System_capabilitiesContext(ParserRuleContext): + __slots__ = 'parser' - def __init__(self, parser, parent=None, invokingState=-1): - super(PBXProjParser.System_capabilitiesContext, self).__init__(parent, invokingState) + def __init__(self, parser, parent:ParserRuleContext=None, invokingState:int=-1): + super().__init__(parent, invokingState) self.parser = parser - def key_value(self, i=None): + def key_value(self, i:int=None): if i is None: return self.getTypedRuleContexts(PBXProjParser.Key_valueContext) else: @@ -10128,12 +10428,12 @@ def key_value(self, i=None): def getRuleIndex(self): return PBXProjParser.RULE_system_capabilities - def enterRule(self, listener): - if hasattr(listener, "enterSystem_capabilities"): + def enterRule(self, listener:ParseTreeListener): + if hasattr( listener, "enterSystem_capabilities" ): listener.enterSystem_capabilities(self) - def exitRule(self, listener): - if hasattr(listener, "exitSystem_capabilities"): + def exitRule(self, listener:ParseTreeListener): + if hasattr( listener, "exitSystem_capabilities" ): listener.exitSystem_capabilities(self) @@ -10174,10 +10474,12 @@ def system_capabilities(self): self.exitRule() return localctx + class Current_versionContext(ParserRuleContext): + __slots__ = 'parser' - def __init__(self, parser, parent=None, invokingState=-1): - super(PBXProjParser.Current_versionContext, self).__init__(parent, invokingState) + def __init__(self, parser, parent:ParserRuleContext=None, invokingState:int=-1): + super().__init__(parent, invokingState) self.parser = parser def REFERENCE(self): @@ -10186,12 +10488,12 @@ def REFERENCE(self): def getRuleIndex(self): return PBXProjParser.RULE_current_version - def enterRule(self, listener): - if hasattr(listener, "enterCurrent_version"): + def enterRule(self, listener:ParseTreeListener): + if hasattr( listener, "enterCurrent_version" ): listener.enterCurrent_version(self) - def exitRule(self, listener): - if hasattr(listener, "exitCurrent_version"): + def exitRule(self, listener:ParseTreeListener): + if hasattr( listener, "exitCurrent_version" ): listener.exitCurrent_version(self) @@ -10219,10 +10521,12 @@ def current_version(self): self.exitRule() return localctx + class Version_group_typeContext(ParserRuleContext): + __slots__ = 'parser' - def __init__(self, parser, parent=None, invokingState=-1): - super(PBXProjParser.Version_group_typeContext, self).__init__(parent, invokingState) + def __init__(self, parser, parent:ParserRuleContext=None, invokingState:int=-1): + super().__init__(parent, invokingState) self.parser = parser def NON_QUOTED_STRING(self): @@ -10231,12 +10535,12 @@ def NON_QUOTED_STRING(self): def getRuleIndex(self): return PBXProjParser.RULE_version_group_type - def enterRule(self, listener): - if hasattr(listener, "enterVersion_group_type"): + def enterRule(self, listener:ParseTreeListener): + if hasattr( listener, "enterVersion_group_type" ): listener.enterVersion_group_type(self) - def exitRule(self, listener): - if hasattr(listener, "exitVersion_group_type"): + def exitRule(self, listener:ParseTreeListener): + if hasattr( listener, "exitVersion_group_type" ): listener.exitVersion_group_type(self) @@ -10264,10 +10568,12 @@ def version_group_type(self): self.exitRule() return localctx + class Class_prefixContext(ParserRuleContext): + __slots__ = 'parser' - def __init__(self, parser, parent=None, invokingState=-1): - super(PBXProjParser.Class_prefixContext, self).__init__(parent, invokingState) + def __init__(self, parser, parent:ParserRuleContext=None, invokingState:int=-1): + super().__init__(parent, invokingState) self.parser = parser def any_string(self): @@ -10277,12 +10583,12 @@ def any_string(self): def getRuleIndex(self): return PBXProjParser.RULE_class_prefix - def enterRule(self, listener): - if hasattr(listener, "enterClass_prefix"): + def enterRule(self, listener:ParseTreeListener): + if hasattr( listener, "enterClass_prefix" ): listener.enterClass_prefix(self) - def exitRule(self, listener): - if hasattr(listener, "exitClass_prefix"): + def exitRule(self, listener:ParseTreeListener): + if hasattr( listener, "exitClass_prefix" ): listener.exitClass_prefix(self) @@ -10310,10 +10616,12 @@ def class_prefix(self): self.exitRule() return localctx + class Any_stringContext(ParserRuleContext): + __slots__ = 'parser' - def __init__(self, parser, parent=None, invokingState=-1): - super(PBXProjParser.Any_stringContext, self).__init__(parent, invokingState) + def __init__(self, parser, parent:ParserRuleContext=None, invokingState:int=-1): + super().__init__(parent, invokingState) self.parser = parser def NON_QUOTED_STRING(self): @@ -10331,12 +10639,12 @@ def VARIABLE(self): def getRuleIndex(self): return PBXProjParser.RULE_any_string - def enterRule(self, listener): - if hasattr(listener, "enterAny_string"): + def enterRule(self, listener:ParseTreeListener): + if hasattr( listener, "enterAny_string" ): listener.enterAny_string(self) - def exitRule(self, listener): - if hasattr(listener, "exitAny_string"): + def exitRule(self, listener:ParseTreeListener): + if hasattr( listener, "exitAny_string" ): listener.exitAny_string(self) diff --git a/kin/kin.py b/kin/kin.py index 033d40b..bf72289 100755 --- a/kin/kin.py +++ b/kin/kin.py @@ -2,9 +2,9 @@ import sys import os -from verifier import Verifier -from grammar.PBXProjLexer import PBXProjLexer -from grammar.PBXProjParser import PBXProjParser +from .verifier import Verifier +from .grammar.PBXProjLexer import PBXProjLexer +from .grammar.PBXProjParser import PBXProjParser def check_errors(file): @@ -27,25 +27,25 @@ def find_target_files(): def print_help(): - print("USAGE: kin [file]\n" + + print(("USAGE: kin [file]\n" + "DESCRIPTION: Verifies the correctness of your project.pbxproj " + "file. If no arguments are supplied, Kin will try to find a " + "project.pbxproj file in the current project.\nARGUMENTS:\n" + "\t- file\tOptionally provides the location of your " + - "project.pbxproj file") + "project.pbxproj file")) def assert_valid_target_files(target_files): if len(target_files) == 0: - print("ERROR: Unable to find project.pbxproj " + - "file in the current directory\n") + print(("ERROR: Unable to find project.pbxproj " + + "file in the current directory\n")) print_help() sys.exit(-2) elif len(target_files) > 1: - print("ERROR: Too many project.pbxproj files: " + + print(("ERROR: Too many project.pbxproj files: " + str(target_files) + ". Remember you can call Kin with a " + "parameter to specify the file you want to verify, i.e. \"kin " + - str(target_files[0]) + "\"\n") + str(target_files[0]) + "\"\n")) print_help() sys.exit(-3) @@ -58,7 +58,7 @@ def assert_no_errors(errors): def print_verification_result(errors): if errors: for error in errors: - print("ERROR: " + error) + print(("ERROR: " + error)) else: print("CORRECT") diff --git a/kin/verifier.py b/kin/verifier.py index 893ef87..fb6c95c 100644 --- a/kin/verifier.py +++ b/kin/verifier.py @@ -1,7 +1,7 @@ from antlr4 import * -from grammar.PBXProjLexer import PBXProjLexer -from grammar.PBXProjParser import PBXProjParser -from kin_error_listener import KinErrorListener +from .grammar.PBXProjLexer import PBXProjLexer +from .grammar.PBXProjParser import PBXProjParser +from .kin_error_listener import KinErrorListener class Verifier: diff --git a/setup.py b/setup.py index 3e888bd..c3aa577 100644 --- a/setup.py +++ b/setup.py @@ -21,16 +21,14 @@ 'Intended Audience :: Developers', 'Topic :: Software Development :: Build Tools', 'License :: OSI Approved :: Apache Software License', - 'Programming Language :: Python :: 2', - 'Programming Language :: Python :: 2.6', - 'Programming Language :: Python :: 2.7', + 'Programming Language :: Python :: 3', ], keywords='xcode project.pbxproj lint objective-c swift ios', packages=find_packages(exclude=['tests']), install_requires=[ 'argparse==1.4.0', - 'antlr4-python2-runtime==4.6' + 'antlr4-python3-runtime==4.9.2' ], entry_points={ 'console_scripts': [ diff --git a/tests/tester.py b/tests/tester.py index 16ef5d8..8dbe402 100755 --- a/tests/tester.py +++ b/tests/tester.py @@ -46,7 +46,7 @@ def report_test_case(self, path, passed): passed_mark = "✗" self.has_errors = True - print("Testing " + path + "... " + passed_mark) + print(("Testing " + path + "... " + passed_mark)) def main():