From 81d73904ac068003fb8418d96ec269b149142156 Mon Sep 17 00:00:00 2001 From: Ondrej Stava Date: Fri, 28 Jul 2017 14:25:10 -0700 Subject: [PATCH] Draco updated to 1.0.0 version The latest version of Draco brings many new enhancements to improve the development experience: * Stable API release * Support for npm Javascript package management * Javascript based encoder * Generalized metadata for meshes and point clouds * Now supporting material properties included along with encoded file * Improved compression rates: * 15% better compression on smaller models * 40% better compression of normals * Performance improvements (~10% faster encoding, decoding) * Reduced GPU memory usage: * Option to store decoded quantized attributes * Support for triangle strip connectivity on decoded meshes * iOS 9 Javascript decoder * Bitstream specification now available --- CONTRIBUTING.md | 27 - Makefile.emcc => Makefile.decoder.emcc | 162 ++-- Makefile.encoder.emcc | 776 ++++++++++++++++++ README.md | 191 ++++- cmake/compiler_flags.cmake | 159 +++- cmake/draco_version.h.cmake | 2 +- compression/attributes/attributes_decoder.h | 61 -- .../attributes/normal_compression_utils.h | 198 ----- ...sh_prediction_scheme_multi_parallelogram.h | 192 ----- .../mesh_prediction_scheme_parallelogram.h | 143 ---- .../prediction_scheme_decoder_factory.h | 65 -- .../prediction_scheme_difference.h | 86 -- .../prediction_scheme_encoder_factory.h | 79 -- .../prediction_scheme_factory.h | 128 --- ...ormal_octahedron_canonicalized_transform.h | 262 ------ ...ction_scheme_normal_octahedron_transform.h | 198 ----- .../prediction_scheme_wrap_transform.h | 159 ---- .../sequential_integer_attribute_encoder.cc | 157 ---- .../sequential_normal_attribute_encoder.cc | 55 -- ...quential_quantization_attribute_encoder.cc | 140 ---- compression/config/encoder_options.cc | 152 ---- compression/config/encoder_options.h | 119 --- compression/decode.cc | 115 --- compression/decode.h | 46 -- compression/encode.cc | 149 ---- compression/encode.h | 123 --- .../algorithms/float_points_tree_decoder.cc | 120 --- .../point_cloud_sequential_encoding_test.cc | 62 -- core/bit_coder.h | 154 ---- core/draco_types.cc | 86 -- core/math_utils_test.cc | 4 - core/rans_coding_test.cc | 9 - javascript/draco_decoder.js | 27 +- javascript/draco_decoder.wasm | Bin 363294 -> 383892 bytes javascript/draco_mesh_decoder.js | 26 - javascript/draco_point_cloud_decoder.js | 25 - javascript/draco_wasm_wrapper.js | 208 +++-- javascript/emscripten/draco_web.idl | 96 --- javascript/emscripten/webidl_wrapper.cc | 112 --- javascript/emscripten/webidl_wrapper.h | 101 --- javascript/example/DRACOLoader.js | 229 ++++-- javascript/example/geometry_helper.js | 102 +++ javascript/example/webgl_loader_draco.html | 197 +++-- javascript/npm/draco3d/README.md | 79 ++ javascript/npm/draco3d/bunny.drc | Bin 0 -> 96018 bytes javascript/npm/draco3d/draco3d.js | 11 + .../npm/draco3d/draco_decoder_nodejs.js | 27 + .../npm/draco3d/draco_encoder_nodejs.js | 28 + .../npm/draco3d/draco_nodejs_example.js | 197 +++++ javascript/npm/draco3d/package.json | 17 + javascript/time_draco_decode.html | 10 +- .../attribute_octahedron_transform.cc | 84 ++ .../attribute_octahedron_transform.h | 60 ++ .../attribute_quantization_transform.cc | 141 ++++ .../attribute_quantization_transform.h | 72 ++ src/draco/attributes/attribute_transform.cc | 41 + src/draco/attributes/attribute_transform.h | 46 ++ .../attributes/attribute_transform_data.h | 71 ++ .../attributes/attribute_transform_type.h | 30 + .../draco/attributes}/geometry_attribute.cc | 32 +- .../draco/attributes}/geometry_attribute.h | 52 +- .../draco/attributes}/geometry_indices.h | 8 +- .../draco/attributes}/point_attribute.cc | 35 +- .../draco/attributes}/point_attribute.h | 41 +- src/draco/attributes/point_attribute_test.cc | 54 ++ .../attributes/attributes_decoder.cc | 47 +- .../attributes/attributes_decoder.h | 91 ++ .../attributes/attributes_decoder_interface.h | 62 ++ .../attributes/attributes_encoder.cc | 10 +- .../attributes/attributes_encoder.h | 56 +- .../attributes/kd_tree_attributes_decoder.cc | 77 +- .../attributes/kd_tree_attributes_decoder.h | 7 +- .../attributes/kd_tree_attributes_encoder.cc | 70 +- .../attributes/kd_tree_attributes_encoder.h | 9 +- .../attributes/kd_tree_attributes_shared.h | 0 .../attributes/linear_sequencer.h | 2 +- .../mesh_attribute_indices_encoding_data.h | 4 +- ...mesh_attribute_indices_encoding_observer.h | 6 +- .../attributes/mesh_traversal_sequencer.h | 8 +- .../attributes/normal_compression_utils.h | 332 ++++++++ .../attributes/points_sequencer.h | 2 +- ..._constrained_multi_parallelogram_decoder.h | 217 +++++ ..._constrained_multi_parallelogram_encoder.h | 221 +---- ...e_constrained_multi_parallelogram_shared.h | 34 + .../mesh_prediction_scheme_data.h | 4 +- .../mesh_prediction_scheme_decoder.h | 26 +- .../mesh_prediction_scheme_encoder.h | 46 ++ ...ediction_scheme_geometric_normal_decoder.h | 153 ++++ ...ediction_scheme_geometric_normal_encoder.h | 176 ++++ ...iction_scheme_geometric_normal_predictor.h | 130 +++ ...ction_scheme_multi_parallelogram_decoder.h | 120 +++ ...ction_scheme_multi_parallelogram_encoder.h | 130 +++ ..._prediction_scheme_parallelogram_decoder.h | 96 +++ ..._prediction_scheme_parallelogram_encoder.h | 108 +++ ...h_prediction_scheme_parallelogram_shared.h | 6 +- ...esh_prediction_scheme_tex_coords_decoder.h | 310 +++++++ ...esh_prediction_scheme_tex_coords_encoder.h | 154 +--- ...ction_scheme_tex_coords_portable_decoder.h | 128 +++ ...ction_scheme_tex_coords_portable_encoder.h | 128 +++ ...ion_scheme_tex_coords_portable_predictor.h | 248 ++++++ .../prediction_scheme_decoder.h | 33 +- .../prediction_scheme_decoder_factory.h | 121 +++ .../prediction_scheme_decoder_interface.h | 53 ++ .../prediction_scheme_decoding_transform.h | 65 ++ .../prediction_scheme_delta_decoder.h | 65 ++ .../prediction_scheme_delta_encoder.h | 69 ++ .../prediction_scheme_encoder.h | 89 ++ .../prediction_scheme_encoder_factory.cc | 17 +- .../prediction_scheme_encoder_factory.h | 132 +++ .../prediction_scheme_encoder_interface.h | 55 ++ .../prediction_scheme_encoding_transform.h | 48 +- .../prediction_scheme_factory.h | 83 ++ .../prediction_scheme_interface.h | 37 +- ...ahedron_canonicalized_decoding_transform.h | 112 +++ ...ahedron_canonicalized_encoding_transform.h | 116 +++ ..._octahedron_canonicalized_transform_base.h | 100 +++ ...octahedron_canonicalized_transform_test.cc | 16 +- ...eme_normal_octahedron_decoding_transform.h | 97 +++ ...eme_normal_octahedron_encoding_transform.h | 106 +++ ..._scheme_normal_octahedron_transform_base.h | 89 ++ ...scheme_normal_octahedron_transform_test.cc | 16 +- ...rediction_scheme_wrap_decoding_transform.h | 64 ++ ...rediction_scheme_wrap_encoding_transform.h | 78 ++ .../prediction_scheme_wrap_transform_base.h | 111 +++ .../sequential_attribute_decoder.cc | 40 +- .../attributes/sequential_attribute_decoder.h | 35 +- ...equential_attribute_decoders_controller.cc | 69 +- ...sequential_attribute_decoders_controller.h | 16 +- .../sequential_attribute_encoder.cc | 63 +- .../attributes/sequential_attribute_encoder.h | 66 +- ...equential_attribute_encoders_controller.cc | 36 +- ...sequential_attribute_encoders_controller.h | 14 +- .../sequential_integer_attribute_decoder.cc | 81 +- .../sequential_integer_attribute_decoder.h | 26 +- .../sequential_integer_attribute_encoder.cc | 217 +++++ .../sequential_integer_attribute_encoder.h | 26 +- ...uential_integer_attribute_encoding_test.cc | 16 +- .../sequential_normal_attribute_decoder.cc | 46 +- .../sequential_normal_attribute_decoder.h | 19 +- .../sequential_normal_attribute_encoder.cc | 50 ++ .../sequential_normal_attribute_encoder.h | 40 +- ...quential_quantization_attribute_decoder.cc | 32 +- ...equential_quantization_attribute_decoder.h | 5 +- ...quential_quantization_attribute_encoder.cc | 57 ++ ...equential_quantization_attribute_encoder.h | 24 +- .../compression}/config/compression_shared.h | 13 +- .../compression/config/decoder_options.h | 34 + .../config/decoder_options_test.cc | 67 ++ src/draco/compression/config/draco_options.h | 168 ++++ .../compression/config/encoder_options.h | 95 +++ .../compression}/config/encoding_features.h | 0 src/draco/compression/decode.cc | 132 +++ src/draco/compression/decode.h | 79 ++ src/draco/compression/decode_test.cc | 77 ++ src/draco/compression/encode.cc | 78 ++ src/draco/compression/encode.h | 131 +++ src/draco/compression/encode_base.h | 53 ++ src/draco/compression/encode_test.cc | 127 +++ src/draco/compression/expert_encode.cc | 133 +++ src/draco/compression/expert_encode.h | 132 +++ .../draco/compression}/mesh/mesh_decoder.cc | 7 +- .../draco/compression}/mesh/mesh_decoder.h | 11 +- .../compression}/mesh/mesh_decoder_helpers.h | 2 +- .../mesh/mesh_edgebreaker_decoder.cc | 8 +- .../mesh/mesh_edgebreaker_decoder.h | 4 +- .../mesh/mesh_edgebreaker_decoder_impl.cc | 115 ++- .../mesh/mesh_edgebreaker_decoder_impl.h | 20 +- .../mesh_edgebreaker_decoder_impl_interface.h | 4 +- .../mesh/mesh_edgebreaker_encoder.cc | 8 +- .../mesh/mesh_edgebreaker_encoder.h | 8 +- .../mesh/mesh_edgebreaker_encoder_impl.cc | 50 +- .../mesh/mesh_edgebreaker_encoder_impl.h | 20 +- .../mesh_edgebreaker_encoder_impl_interface.h | 6 +- .../mesh/mesh_edgebreaker_encoding_test.cc | 50 +- .../mesh/mesh_edgebreaker_shared.h | 14 +- .../mesh/mesh_edgebreaker_traversal_decoder.h | 21 +- .../mesh/mesh_edgebreaker_traversal_encoder.h | 10 +- ...edgebreaker_traversal_predictive_decoder.h | 2 +- ...edgebreaker_traversal_predictive_encoder.h | 4 +- ...sh_edgebreaker_traversal_valence_decoder.h | 17 +- ...sh_edgebreaker_traversal_valence_encoder.h | 12 +- .../draco/compression}/mesh/mesh_encoder.cc | 2 +- .../draco/compression}/mesh/mesh_encoder.h | 10 +- .../compression}/mesh/mesh_encoder_helpers.h | 4 +- .../compression}/mesh/mesh_encoder_test.cc | 20 +- .../mesh/mesh_sequential_decoder.cc | 10 +- .../mesh/mesh_sequential_decoder.h | 2 +- .../mesh/mesh_sequential_encoder.cc | 12 +- .../mesh/mesh_sequential_encoder.h | 4 +- .../dynamic_integer_points_kd_tree_decoder.cc | 15 +- .../dynamic_integer_points_kd_tree_decoder.h | 278 +++++++ .../dynamic_integer_points_kd_tree_encoder.cc | 14 +- .../dynamic_integer_points_kd_tree_encoder.h | 365 ++++++++ .../algorithms/float_points_tree_decoder.cc | 141 ++++ .../algorithms/float_points_tree_decoder.h | 8 +- .../algorithms/float_points_tree_encoder.cc | 51 +- .../algorithms/float_points_tree_encoder.h | 8 +- .../integer_points_kd_tree_decoder.cc | 4 +- .../integer_points_kd_tree_decoder.h | 32 +- .../integer_points_kd_tree_encoder.cc | 4 +- .../integer_points_kd_tree_encoder.h | 39 +- .../point_cloud_compression_method.h | 0 .../algorithms/point_cloud_types.h | 3 +- .../algorithms/quantize_points_3.h | 4 +- .../point_cloud/algorithms/queuing_policy.h | 2 +- .../point_cloud/point_cloud_decoder.cc | 91 +- .../point_cloud/point_cloud_decoder.h | 37 +- .../point_cloud/point_cloud_encoder.cc | 51 +- .../point_cloud/point_cloud_encoder.h | 27 +- .../point_cloud_kd_tree_decoder.cc | 4 +- .../point_cloud/point_cloud_kd_tree_decoder.h | 2 +- .../point_cloud_kd_tree_encoder.cc | 4 +- .../point_cloud/point_cloud_kd_tree_encoder.h | 8 +- .../point_cloud_kd_tree_encoding_test.cc | 21 +- .../point_cloud_sequential_decoder.cc | 6 +- .../point_cloud_sequential_decoder.h | 2 +- .../point_cloud_sequential_encoder.cc | 6 +- .../point_cloud_sequential_encoder.h | 2 +- .../point_cloud_sequential_encoding_test.cc | 99 +++ {core => src/draco/core}/ans.h | 10 +- .../adaptive_rans_bit_coding_shared.h | 8 +- .../bit_coders}/adaptive_rans_bit_decoder.cc | 4 +- .../bit_coders}/adaptive_rans_bit_decoder.h | 10 +- .../bit_coders}/adaptive_rans_bit_encoder.cc | 4 +- .../bit_coders}/adaptive_rans_bit_encoder.h | 12 +- .../core/bit_coders}/direct_bit_decoder.cc | 10 +- .../core/bit_coders}/direct_bit_decoder.h | 10 +- .../core/bit_coders}/direct_bit_encoder.cc | 2 +- .../core/bit_coders}/direct_bit_encoder.h | 12 +- .../bit_coders}/folded_integer_bit_decoder.h | 8 +- .../bit_coders}/folded_integer_bit_encoder.h | 8 +- .../core/bit_coders}/rans_bit_decoder.cc | 4 +- .../draco/core/bit_coders}/rans_bit_decoder.h | 10 +- .../core/bit_coders}/rans_bit_encoder.cc | 6 +- .../draco/core/bit_coders}/rans_bit_encoder.h | 10 +- src/draco/core/bit_coders/rans_coding_test.cc | 9 + .../core/bit_coders}/symbol_bit_decoder.cc | 4 +- .../core/bit_coders}/symbol_bit_decoder.h | 8 +- .../core/bit_coders}/symbol_bit_encoder.cc | 4 +- .../core/bit_coders}/symbol_bit_encoder.h | 10 +- {core => src/draco/core}/bit_utils.h | 4 +- .../draco/core/buffer_bit_coding_test.cc | 21 +- {core => src/draco/core}/cycle_timer.cc | 2 +- {core => src/draco/core}/cycle_timer.h | 0 {core => src/draco/core}/data_buffer.cc | 7 +- {core => src/draco/core}/data_buffer.h | 6 +- {core => src/draco/core}/decoder_buffer.cc | 18 +- {core => src/draco/core}/decoder_buffer.h | 93 ++- {core => src/draco/core}/divide.cc | 2 +- {core => src/draco/core}/divide.h | 4 +- {core => src/draco/core}/draco_index_type.h | 4 +- .../draco/core}/draco_index_type_vector.h | 2 +- {core => src/draco/core}/draco_test_base.h | 0 {core => src/draco/core}/draco_test_utils.cc | 7 +- {core => src/draco/core}/draco_test_utils.h | 3 +- {core => src/draco/core}/draco_tests.cc | 2 +- src/draco/core/draco_types.cc | 44 + {core => src/draco/core}/draco_types.h | 2 - {core => src/draco/core}/draco_version.h | 2 +- {core => src/draco/core}/encoder_buffer.cc | 4 +- {core => src/draco/core}/encoder_buffer.h | 53 +- {core => src/draco/core}/hash_utils.cc | 2 +- {core => src/draco/core}/hash_utils.h | 2 +- {core => src/draco/core}/macros.h | 17 + src/draco/core/math_utils.h | 52 ++ src/draco/core/math_utils_test.cc | 19 + {core => src/draco/core}/options.cc | 2 +- {core => src/draco/core}/options.h | 0 .../draco/core}/quantization_utils.cc | 2 +- {core => src/draco/core}/quantization_utils.h | 4 +- .../draco/core}/quantization_utils_test.cc | 4 +- {core => src/draco/core}/rans_symbol_coding.h | 6 +- .../draco/core}/rans_symbol_decoder.h | 27 +- .../draco/core}/rans_symbol_encoder.h | 31 +- {core => src/draco/core}/shannon_entropy.cc | 4 +- {core => src/draco/core}/shannon_entropy.h | 0 src/draco/core/status.h | 75 ++ src/draco/core/status_test.cc | 38 + src/draco/core/statusor.h | 90 ++ .../draco/core}/symbol_coding_test.cc | 24 +- src/draco/core/symbol_coding_utils.cc | 36 + .../draco/core/symbol_coding_utils.h | 40 +- {core => src/draco/core}/symbol_decoding.cc | 12 +- {core => src/draco/core}/symbol_decoding.h | 24 +- {core => src/draco/core}/symbol_encoding.cc | 24 +- src/draco/core/symbol_encoding.h | 33 + {core => src/draco/core}/varint_decoding.h | 16 +- {core => src/draco/core}/varint_encoding.h | 21 +- {core => src/draco/core}/vector_d.h | 55 +- {core => src/draco/core}/vector_d_test.cc | 58 +- {io => src/draco/io}/mesh_io.cc | 14 +- {io => src/draco/io}/mesh_io.h | 28 +- {io => src/draco/io}/obj_decoder.cc | 71 +- {io => src/draco/io}/obj_decoder.h | 11 +- {io => src/draco/io}/obj_decoder_test.cc | 78 +- {io => src/draco/io}/obj_encoder.cc | 6 +- {io => src/draco/io}/obj_encoder.h | 4 +- {io => src/draco/io}/parser_utils.cc | 4 +- {io => src/draco/io}/parser_utils.h | 2 +- {io => src/draco/io}/ply_decoder.cc | 8 +- {io => src/draco/io}/ply_decoder.h | 6 +- {io => src/draco/io}/ply_decoder_test.cc | 34 +- {io => src/draco/io}/ply_encoder.cc | 14 +- {io => src/draco/io}/ply_encoder.h | 4 +- {io => src/draco/io}/ply_property_reader.h | 2 +- {io => src/draco/io}/ply_property_writer.h | 8 +- {io => src/draco/io}/ply_reader.cc | 6 +- {io => src/draco/io}/ply_reader.h | 6 +- {io => src/draco/io}/ply_reader_test.cc | 8 +- {io => src/draco/io}/point_cloud_io.cc | 6 +- {io => src/draco/io}/point_cloud_io.h | 22 +- {io => src/draco/io}/point_cloud_io_test.cc | 10 +- .../emscripten/draco_decoder_glue_wrapper.cc | 28 + .../emscripten/draco_encoder_glue_wrapper.cc | 15 +- .../emscripten/draco_web_decoder.idl | 179 ++++ .../emscripten/draco_web_encoder.idl | 116 +++ .../emscripten/encoder_webidl_wrapper.cc | 181 ++++ .../emscripten/encoder_webidl_wrapper.h | 102 +++ .../draco/javascript}/emscripten/finalize.js | 0 .../emscripten/prepareCallbacks.js | 0 .../draco/javascript}/emscripten/version.js | 4 +- {mesh => src/draco/mesh}/corner_table.cc | 28 +- {mesh => src/draco/mesh}/corner_table.h | 42 +- .../draco/mesh}/corner_table_indices.h | 2 +- .../draco/mesh}/corner_table_iterators.h | 2 +- .../mesh}/corner_table_traversal_processor.h | 2 +- .../draco/mesh}/edgebreaker_observer.h | 0 .../draco/mesh}/edgebreaker_traverser.h | 4 +- {mesh => src/draco/mesh}/mesh.cc | 2 +- {mesh => src/draco/mesh}/mesh.h | 15 +- .../draco/mesh}/mesh_are_equivalent.cc | 17 +- .../draco/mesh}/mesh_are_equivalent.h | 10 +- .../draco/mesh}/mesh_are_equivalent_test.cc | 12 +- .../mesh}/mesh_attribute_corner_table.cc | 6 +- .../draco/mesh}/mesh_attribute_corner_table.h | 10 +- {mesh => src/draco/mesh}/mesh_cleanup.cc | 2 +- {mesh => src/draco/mesh}/mesh_cleanup.h | 4 +- {mesh => src/draco/mesh}/mesh_cleanup_test.cc | 16 +- {mesh => src/draco/mesh}/mesh_indices.h | 2 +- .../draco/mesh}/mesh_misc_functions.cc | 2 +- .../draco/mesh}/mesh_misc_functions.h | 4 +- src/draco/mesh/mesh_stripifier.cc | 98 +++ src/draco/mesh/mesh_stripifier.h | 252 ++++++ .../draco/mesh}/prediction_degree_traverser.h | 2 +- .../draco/mesh}/triangle_soup_mesh_builder.cc | 4 +- .../draco/mesh}/triangle_soup_mesh_builder.h | 2 +- .../mesh}/triangle_soup_mesh_builder_test.cc | 8 +- src/draco/metadata/geometry_metadata.cc | 39 + src/draco/metadata/geometry_metadata.h | 110 +++ src/draco/metadata/metadata.cc | 129 +++ src/draco/metadata/metadata.h | 190 +++++ src/draco/metadata/metadata_decoder.cc | 97 +++ src/draco/metadata/metadata_decoder.h | 42 + src/draco/metadata/metadata_encoder.cc | 93 +++ src/draco/metadata/metadata_encoder.h | 41 + src/draco/metadata/metadata_encoder_test.cc | 167 ++++ src/draco/metadata/metadata_test.cc | 154 ++++ .../draco/point_cloud}/point_cloud.cc | 37 +- .../draco/point_cloud}/point_cloud.h | 58 +- .../draco/point_cloud}/point_cloud_builder.cc | 4 +- .../draco/point_cloud}/point_cloud_builder.h | 4 +- .../point_cloud}/point_cloud_builder_test.cc | 14 +- src/draco/point_cloud/point_cloud_test.cc | 107 +++ {tools => src/draco/tools}/draco_decoder.cc | 35 +- {tools => src/draco/tools}/draco_encoder.cc | 121 ++- testdata/{ => invalid}/complex_poly.obj | 0 testdata/test_nm_quant.0.9.0.drc | Bin 0 -> 950 bytes 367 files changed, 14357 insertions(+), 5481 deletions(-) delete mode 100644 CONTRIBUTING.md rename Makefile.emcc => Makefile.decoder.emcc (80%) create mode 100644 Makefile.encoder.emcc delete mode 100644 compression/attributes/attributes_decoder.h delete mode 100644 compression/attributes/normal_compression_utils.h delete mode 100644 compression/attributes/prediction_schemes/mesh_prediction_scheme_multi_parallelogram.h delete mode 100644 compression/attributes/prediction_schemes/mesh_prediction_scheme_parallelogram.h delete mode 100644 compression/attributes/prediction_schemes/prediction_scheme_decoder_factory.h delete mode 100644 compression/attributes/prediction_schemes/prediction_scheme_difference.h delete mode 100644 compression/attributes/prediction_schemes/prediction_scheme_encoder_factory.h delete mode 100644 compression/attributes/prediction_schemes/prediction_scheme_factory.h delete mode 100644 compression/attributes/prediction_schemes/prediction_scheme_normal_octahedron_canonicalized_transform.h delete mode 100644 compression/attributes/prediction_schemes/prediction_scheme_normal_octahedron_transform.h delete mode 100644 compression/attributes/prediction_schemes/prediction_scheme_wrap_transform.h delete mode 100644 compression/attributes/sequential_integer_attribute_encoder.cc delete mode 100644 compression/attributes/sequential_normal_attribute_encoder.cc delete mode 100644 compression/attributes/sequential_quantization_attribute_encoder.cc delete mode 100644 compression/config/encoder_options.cc delete mode 100644 compression/config/encoder_options.h delete mode 100644 compression/decode.cc delete mode 100644 compression/decode.h delete mode 100644 compression/encode.cc delete mode 100644 compression/encode.h delete mode 100644 compression/point_cloud/algorithms/float_points_tree_decoder.cc delete mode 100644 compression/point_cloud/point_cloud_sequential_encoding_test.cc delete mode 100644 core/bit_coder.h delete mode 100644 core/draco_types.cc delete mode 100644 core/math_utils_test.cc delete mode 100644 core/rans_coding_test.cc delete mode 100644 javascript/draco_mesh_decoder.js delete mode 100644 javascript/draco_point_cloud_decoder.js delete mode 100644 javascript/emscripten/draco_web.idl delete mode 100644 javascript/emscripten/webidl_wrapper.cc delete mode 100644 javascript/emscripten/webidl_wrapper.h create mode 100644 javascript/example/geometry_helper.js create mode 100644 javascript/npm/draco3d/README.md create mode 100644 javascript/npm/draco3d/bunny.drc create mode 100644 javascript/npm/draco3d/draco3d.js create mode 100644 javascript/npm/draco3d/draco_decoder_nodejs.js create mode 100644 javascript/npm/draco3d/draco_encoder_nodejs.js create mode 100644 javascript/npm/draco3d/draco_nodejs_example.js create mode 100644 javascript/npm/draco3d/package.json create mode 100644 src/draco/attributes/attribute_octahedron_transform.cc create mode 100644 src/draco/attributes/attribute_octahedron_transform.h create mode 100644 src/draco/attributes/attribute_quantization_transform.cc create mode 100644 src/draco/attributes/attribute_quantization_transform.h create mode 100644 src/draco/attributes/attribute_transform.cc create mode 100644 src/draco/attributes/attribute_transform.h create mode 100644 src/draco/attributes/attribute_transform_data.h create mode 100644 src/draco/attributes/attribute_transform_type.h rename {point_cloud => src/draco/attributes}/geometry_attribute.cc (68%) rename {point_cloud => src/draco/attributes}/geometry_attribute.h (88%) rename {point_cloud => src/draco/attributes}/geometry_indices.h (86%) rename {point_cloud => src/draco/attributes}/point_attribute.cc (84%) rename {point_cloud => src/draco/attributes}/point_attribute.h (81%) create mode 100644 src/draco/attributes/point_attribute_test.cc rename {compression => src/draco/compression}/attributes/attributes_decoder.cc (55%) create mode 100644 src/draco/compression/attributes/attributes_decoder.h create mode 100644 src/draco/compression/attributes/attributes_decoder_interface.h rename {compression => src/draco/compression}/attributes/attributes_encoder.cc (85%) rename {compression => src/draco/compression}/attributes/attributes_encoder.h (67%) rename {compression => src/draco/compression}/attributes/kd_tree_attributes_decoder.cc (66%) rename {compression => src/draco/compression}/attributes/kd_tree_attributes_decoder.h (82%) rename {compression => src/draco/compression}/attributes/kd_tree_attributes_encoder.cc (74%) rename {compression => src/draco/compression}/attributes/kd_tree_attributes_encoder.h (82%) rename {compression => src/draco/compression}/attributes/kd_tree_attributes_shared.h (100%) rename {compression => src/draco/compression}/attributes/linear_sequencer.h (96%) rename {compression => src/draco/compression}/attributes/mesh_attribute_indices_encoding_data.h (94%) rename {compression => src/draco/compression}/attributes/mesh_attribute_indices_encoding_observer.h (93%) rename {compression => src/draco/compression}/attributes/mesh_traversal_sequencer.h (94%) create mode 100644 src/draco/compression/attributes/normal_compression_utils.h rename {compression => src/draco/compression}/attributes/points_sequencer.h (98%) create mode 100644 src/draco/compression/attributes/prediction_schemes/mesh_prediction_scheme_constrained_multi_parallelogram_decoder.h rename compression/attributes/prediction_schemes/mesh_prediction_scheme_constrained_multi_parallelogram.h => src/draco/compression/attributes/prediction_schemes/mesh_prediction_scheme_constrained_multi_parallelogram_encoder.h (57%) create mode 100644 src/draco/compression/attributes/prediction_schemes/mesh_prediction_scheme_constrained_multi_parallelogram_shared.h rename {compression => src/draco/compression}/attributes/prediction_schemes/mesh_prediction_scheme_data.h (97%) rename compression/attributes/prediction_schemes/mesh_prediction_scheme.h => src/draco/compression/attributes/prediction_schemes/mesh_prediction_scheme_decoder.h (57%) create mode 100644 src/draco/compression/attributes/prediction_schemes/mesh_prediction_scheme_encoder.h create mode 100644 src/draco/compression/attributes/prediction_schemes/mesh_prediction_scheme_geometric_normal_decoder.h create mode 100644 src/draco/compression/attributes/prediction_schemes/mesh_prediction_scheme_geometric_normal_encoder.h create mode 100644 src/draco/compression/attributes/prediction_schemes/mesh_prediction_scheme_geometric_normal_predictor.h create mode 100644 src/draco/compression/attributes/prediction_schemes/mesh_prediction_scheme_multi_parallelogram_decoder.h create mode 100644 src/draco/compression/attributes/prediction_schemes/mesh_prediction_scheme_multi_parallelogram_encoder.h create mode 100644 src/draco/compression/attributes/prediction_schemes/mesh_prediction_scheme_parallelogram_decoder.h create mode 100644 src/draco/compression/attributes/prediction_schemes/mesh_prediction_scheme_parallelogram_encoder.h rename {compression => src/draco/compression}/attributes/prediction_schemes/mesh_prediction_scheme_parallelogram_shared.h (95%) create mode 100644 src/draco/compression/attributes/prediction_schemes/mesh_prediction_scheme_tex_coords_decoder.h rename compression/attributes/prediction_schemes/mesh_prediction_scheme_tex_coords.h => src/draco/compression/attributes/prediction_schemes/mesh_prediction_scheme_tex_coords_encoder.h (68%) create mode 100644 src/draco/compression/attributes/prediction_schemes/mesh_prediction_scheme_tex_coords_portable_decoder.h create mode 100644 src/draco/compression/attributes/prediction_schemes/mesh_prediction_scheme_tex_coords_portable_encoder.h create mode 100644 src/draco/compression/attributes/prediction_schemes/mesh_prediction_scheme_tex_coords_portable_predictor.h rename compression/attributes/prediction_schemes/prediction_scheme.h => src/draco/compression/attributes/prediction_schemes/prediction_scheme_decoder.h (77%) create mode 100644 src/draco/compression/attributes/prediction_schemes/prediction_scheme_decoder_factory.h create mode 100644 src/draco/compression/attributes/prediction_schemes/prediction_scheme_decoder_interface.h create mode 100644 src/draco/compression/attributes/prediction_schemes/prediction_scheme_decoding_transform.h create mode 100644 src/draco/compression/attributes/prediction_schemes/prediction_scheme_delta_decoder.h create mode 100644 src/draco/compression/attributes/prediction_schemes/prediction_scheme_delta_encoder.h create mode 100644 src/draco/compression/attributes/prediction_schemes/prediction_scheme_encoder.h rename {compression => src/draco/compression}/attributes/prediction_schemes/prediction_scheme_encoder_factory.cc (78%) create mode 100644 src/draco/compression/attributes/prediction_schemes/prediction_scheme_encoder_factory.h create mode 100644 src/draco/compression/attributes/prediction_schemes/prediction_scheme_encoder_interface.h rename compression/attributes/prediction_schemes/prediction_scheme_transform.h => src/draco/compression/attributes/prediction_schemes/prediction_scheme_encoding_transform.h (59%) create mode 100644 src/draco/compression/attributes/prediction_schemes/prediction_scheme_factory.h rename {compression => src/draco/compression}/attributes/prediction_schemes/prediction_scheme_interface.h (58%) create mode 100644 src/draco/compression/attributes/prediction_schemes/prediction_scheme_normal_octahedron_canonicalized_decoding_transform.h create mode 100644 src/draco/compression/attributes/prediction_schemes/prediction_scheme_normal_octahedron_canonicalized_encoding_transform.h create mode 100644 src/draco/compression/attributes/prediction_schemes/prediction_scheme_normal_octahedron_canonicalized_transform_base.h rename {compression => src/draco/compression}/attributes/prediction_schemes/prediction_scheme_normal_octahedron_canonicalized_transform_test.cc (94%) create mode 100644 src/draco/compression/attributes/prediction_schemes/prediction_scheme_normal_octahedron_decoding_transform.h create mode 100644 src/draco/compression/attributes/prediction_schemes/prediction_scheme_normal_octahedron_encoding_transform.h create mode 100644 src/draco/compression/attributes/prediction_schemes/prediction_scheme_normal_octahedron_transform_base.h rename {compression => src/draco/compression}/attributes/prediction_schemes/prediction_scheme_normal_octahedron_transform_test.cc (81%) create mode 100644 src/draco/compression/attributes/prediction_schemes/prediction_scheme_wrap_decoding_transform.h create mode 100644 src/draco/compression/attributes/prediction_schemes/prediction_scheme_wrap_encoding_transform.h create mode 100644 src/draco/compression/attributes/prediction_schemes/prediction_scheme_wrap_transform_base.h rename {compression => src/draco/compression}/attributes/sequential_attribute_decoder.cc (63%) rename {compression => src/draco/compression}/attributes/sequential_attribute_decoder.h (60%) rename {compression => src/draco/compression}/attributes/sequential_attribute_decoders_controller.cc (50%) rename {compression => src/draco/compression}/attributes/sequential_attribute_decoders_controller.h (73%) rename {compression => src/draco/compression}/attributes/sequential_attribute_encoder.cc (59%) rename {compression => src/draco/compression}/attributes/sequential_attribute_encoder.h (65%) rename {compression => src/draco/compression}/attributes/sequential_attribute_encoders_controller.cc (75%) rename {compression => src/draco/compression}/attributes/sequential_attribute_encoders_controller.h (87%) rename {compression => src/draco/compression}/attributes/sequential_integer_attribute_decoder.cc (60%) rename {compression => src/draco/compression}/attributes/sequential_integer_attribute_decoder.h (73%) create mode 100644 src/draco/compression/attributes/sequential_integer_attribute_encoder.cc rename {compression => src/draco/compression}/attributes/sequential_integer_attribute_encoder.h (71%) rename {compression => src/draco/compression}/attributes/sequential_integer_attribute_encoding_test.cc (72%) rename {compression => src/draco/compression}/attributes/sequential_normal_attribute_decoder.cc (55%) rename {compression => src/draco/compression}/attributes/sequential_normal_attribute_decoder.h (76%) create mode 100644 src/draco/compression/attributes/sequential_normal_attribute_encoder.cc rename {compression => src/draco/compression}/attributes/sequential_normal_attribute_encoder.h (55%) rename {compression => src/draco/compression}/attributes/sequential_quantization_attribute_decoder.cc (70%) rename {compression => src/draco/compression}/attributes/sequential_quantization_attribute_decoder.h (89%) create mode 100644 src/draco/compression/attributes/sequential_quantization_attribute_encoder.cc rename {compression => src/draco/compression}/attributes/sequential_quantization_attribute_encoder.h (66%) rename {compression => src/draco/compression}/config/compression_shared.h (91%) create mode 100644 src/draco/compression/config/decoder_options.h create mode 100644 src/draco/compression/config/decoder_options_test.cc create mode 100644 src/draco/compression/config/draco_options.h create mode 100644 src/draco/compression/config/encoder_options.h rename {compression => src/draco/compression}/config/encoding_features.h (100%) create mode 100644 src/draco/compression/decode.cc create mode 100644 src/draco/compression/decode.h create mode 100644 src/draco/compression/decode_test.cc create mode 100644 src/draco/compression/encode.cc create mode 100644 src/draco/compression/encode.h create mode 100644 src/draco/compression/encode_base.h create mode 100644 src/draco/compression/encode_test.cc create mode 100644 src/draco/compression/expert_encode.cc create mode 100644 src/draco/compression/expert_encode.h rename {compression => src/draco/compression}/mesh/mesh_decoder.cc (78%) rename {compression => src/draco/compression}/mesh/mesh_decoder.h (84%) rename {compression => src/draco/compression}/mesh/mesh_decoder_helpers.h (98%) rename {compression => src/draco/compression}/mesh/mesh_edgebreaker_decoder.cc (87%) rename {compression => src/draco/compression}/mesh/mesh_edgebreaker_decoder.h (92%) rename {compression => src/draco/compression}/mesh/mesh_edgebreaker_decoder_impl.cc (91%) rename {compression => src/draco/compression}/mesh/mesh_edgebreaker_decoder_impl.h (93%) rename {compression => src/draco/compression}/mesh/mesh_edgebreaker_decoder_impl_interface.h (93%) rename {compression => src/draco/compression}/mesh/mesh_edgebreaker_encoder.cc (89%) rename {compression => src/draco/compression}/mesh/mesh_edgebreaker_encoder.h (91%) rename {compression => src/draco/compression}/mesh/mesh_edgebreaker_encoder_impl.cc (95%) rename {compression => src/draco/compression}/mesh/mesh_edgebreaker_encoder_impl.h (93%) rename {compression => src/draco/compression}/mesh/mesh_edgebreaker_encoder_impl_interface.h (93%) rename {compression => src/draco/compression}/mesh/mesh_edgebreaker_encoding_test.cc (76%) rename {compression => src/draco/compression}/mesh/mesh_edgebreaker_shared.h (93%) rename {compression => src/draco/compression}/mesh/mesh_edgebreaker_traversal_decoder.h (88%) rename {compression => src/draco/compression}/mesh/mesh_edgebreaker_traversal_encoder.h (94%) rename {compression => src/draco/compression}/mesh/mesh_edgebreaker_traversal_predictive_decoder.h (98%) rename {compression => src/draco/compression}/mesh/mesh_edgebreaker_traversal_predictive_encoder.h (98%) rename {compression => src/draco/compression}/mesh/mesh_edgebreaker_traversal_valence_decoder.h (93%) rename {compression => src/draco/compression}/mesh/mesh_edgebreaker_traversal_valence_encoder.h (97%) rename {compression => src/draco/compression}/mesh/mesh_encoder.cc (94%) rename {compression => src/draco/compression}/mesh/mesh_encoder.h (87%) rename {compression => src/draco/compression}/mesh/mesh_encoder_helpers.h (96%) rename {compression => src/draco/compression}/mesh/mesh_encoder_test.cc (89%) rename {compression => src/draco/compression}/mesh/mesh_sequential_decoder.cc (92%) rename {compression => src/draco/compression}/mesh/mesh_sequential_decoder.h (96%) rename {compression => src/draco/compression}/mesh/mesh_sequential_encoder.cc (91%) rename {compression => src/draco/compression}/mesh/mesh_sequential_encoder.h (96%) rename core/bit_coder.cc => src/draco/compression/point_cloud/algorithms/dynamic_integer_points_kd_tree_decoder.cc (63%) create mode 100644 src/draco/compression/point_cloud/algorithms/dynamic_integer_points_kd_tree_decoder.h rename core/math_utils.h => src/draco/compression/point_cloud/algorithms/dynamic_integer_points_kd_tree_encoder.cc (58%) create mode 100644 src/draco/compression/point_cloud/algorithms/dynamic_integer_points_kd_tree_encoder.h create mode 100644 src/draco/compression/point_cloud/algorithms/float_points_tree_decoder.cc rename {compression => src/draco/compression}/point_cloud/algorithms/float_points_tree_decoder.h (92%) rename {compression => src/draco/compression}/point_cloud/algorithms/float_points_tree_encoder.cc (59%) rename {compression => src/draco/compression}/point_cloud/algorithms/float_points_tree_encoder.h (94%) rename {compression => src/draco/compression}/point_cloud/algorithms/integer_points_kd_tree_decoder.cc (92%) rename {compression => src/draco/compression}/point_cloud/algorithms/integer_points_kd_tree_decoder.h (91%) rename {compression => src/draco/compression}/point_cloud/algorithms/integer_points_kd_tree_encoder.cc (92%) rename {compression => src/draco/compression}/point_cloud/algorithms/integer_points_kd_tree_encoder.h (92%) rename {compression => src/draco/compression}/point_cloud/algorithms/point_cloud_compression_method.h (100%) rename {compression => src/draco/compression}/point_cloud/algorithms/point_cloud_types.h (97%) rename {compression => src/draco/compression}/point_cloud/algorithms/quantize_points_3.h (96%) rename {compression => src/draco/compression}/point_cloud/algorithms/queuing_policy.h (96%) rename {compression => src/draco/compression}/point_cloud/point_cloud_decoder.cc (51%) rename {compression => src/draco/compression}/point_cloud/point_cloud_decoder.h (65%) rename {compression => src/draco/compression}/point_cloud/point_cloud_encoder.cc (86%) rename {compression => src/draco/compression}/point_cloud/point_cloud_encoder.h (87%) rename {compression => src/draco/compression}/point_cloud/point_cloud_kd_tree_decoder.cc (89%) rename {compression => src/draco/compression}/point_cloud/point_cloud_kd_tree_decoder.h (94%) rename {compression => src/draco/compression}/point_cloud/point_cloud_kd_tree_encoder.cc (89%) rename {compression => src/draco/compression}/point_cloud/point_cloud_kd_tree_encoder.h (86%) rename {compression => src/draco/compression}/point_cloud/point_cloud_kd_tree_encoding_test.cc (87%) rename {compression => src/draco/compression}/point_cloud/point_cloud_sequential_decoder.cc (85%) rename {compression => src/draco/compression}/point_cloud/point_cloud_sequential_decoder.h (95%) rename {compression => src/draco/compression}/point_cloud/point_cloud_sequential_encoder.cc (87%) rename {compression => src/draco/compression}/point_cloud/point_cloud_sequential_encoder.h (96%) create mode 100644 src/draco/compression/point_cloud/point_cloud_sequential_encoding_test.cc rename {core => src/draco/core}/ans.h (98%) rename {core => src/draco/core/bit_coders}/adaptive_rans_bit_coding_shared.h (84%) rename {core => src/draco/core/bit_coders}/adaptive_rans_bit_decoder.cc (93%) rename {core => src/draco/core/bit_coders}/adaptive_rans_bit_decoder.h (84%) rename {core => src/draco/core/bit_coders}/adaptive_rans_bit_encoder.cc (93%) rename {core => src/draco/core/bit_coders}/adaptive_rans_bit_encoder.h (83%) rename {core => src/draco/core/bit_coders}/direct_bit_decoder.cc (79%) rename {core => src/draco/core/bit_coders}/direct_bit_decoder.h (88%) rename {core => src/draco/core/bit_coders}/direct_bit_encoder.cc (95%) rename {core => src/draco/core/bit_coders}/direct_bit_encoder.h (87%) rename {core => src/draco/core/bit_coders}/folded_integer_bit_decoder.h (90%) rename {core => src/draco/core/bit_coders}/folded_integer_bit_encoder.h (92%) rename {core => src/draco/core/bit_coders}/rans_bit_decoder.cc (95%) rename {core => src/draco/core/bit_coders}/rans_bit_decoder.h (86%) rename {core => src/draco/core/bit_coders}/rans_bit_encoder.cc (96%) rename {core => src/draco/core/bit_coders}/rans_bit_encoder.h (86%) create mode 100644 src/draco/core/bit_coders/rans_coding_test.cc rename {core => src/draco/core/bit_coders}/symbol_bit_decoder.cc (91%) rename {core => src/draco/core/bit_coders}/symbol_bit_decoder.h (79%) rename {core => src/draco/core/bit_coders}/symbol_bit_encoder.cc (86%) rename {core => src/draco/core/bit_coders}/symbol_bit_encoder.h (75%) rename {core => src/draco/core}/bit_utils.h (95%) rename core/bit_coder_test.cc => src/draco/core/buffer_bit_coding_test.cc (86%) rename {core => src/draco/core}/cycle_timer.cc (97%) rename {core => src/draco/core}/cycle_timer.h (100%) rename {core => src/draco/core}/data_buffer.cc (92%) rename {core => src/draco/core}/data_buffer.h (93%) rename {core => src/draco/core}/decoder_buffer.cc (72%) rename {core => src/draco/core}/decoder_buffer.h (58%) rename {core => src/draco/core}/divide.cc (99%) rename {core => src/draco/core}/divide.h (93%) rename {core => src/draco/core}/draco_index_type.h (98%) rename {core => src/draco/core}/draco_index_type_vector.h (98%) rename {core => src/draco/core}/draco_test_base.h (100%) rename {core => src/draco/core}/draco_test_utils.cc (90%) rename {core => src/draco/core}/draco_test_utils.h (97%) rename {core => src/draco/core}/draco_tests.cc (72%) create mode 100644 src/draco/core/draco_types.cc rename {core => src/draco/core}/draco_types.h (89%) rename {core => src/draco/core}/draco_version.h (94%) rename {core => src/draco/core}/encoder_buffer.cc (97%) rename {core => src/draco/core}/encoder_buffer.h (66%) rename {core => src/draco/core}/hash_utils.cc (98%) rename {core => src/draco/core}/hash_utils.h (98%) rename {core => src/draco/core}/macros.h (73%) create mode 100644 src/draco/core/math_utils.h create mode 100644 src/draco/core/math_utils_test.cc rename {core => src/draco/core}/options.cc (98%) rename {core => src/draco/core}/options.h (100%) rename {core => src/draco/core}/quantization_utils.cc (96%) rename {core => src/draco/core}/quantization_utils.h (98%) rename {core => src/draco/core}/quantization_utils_test.cc (95%) rename {core => src/draco/core}/rans_symbol_coding.h (94%) rename {core => src/draco/core}/rans_symbol_decoder.h (86%) rename {core => src/draco/core}/rans_symbol_encoder.h (92%) rename {core => src/draco/core}/shannon_entropy.cc (88%) rename {core => src/draco/core}/shannon_entropy.h (100%) create mode 100644 src/draco/core/status.h create mode 100644 src/draco/core/status_test.cc create mode 100644 src/draco/core/statusor.h rename {core => src/draco/core}/symbol_coding_test.cc (87%) create mode 100644 src/draco/core/symbol_coding_utils.cc rename core/symbol_encoding.h => src/draco/core/symbol_coding_utils.h (59%) rename {core => src/draco/core}/symbol_decoding.cc (95%) rename {core => src/draco/core}/symbol_decoding.h (54%) rename {core => src/draco/core}/symbol_encoding.cc (95%) create mode 100644 src/draco/core/symbol_encoding.h rename {core => src/draco/core}/varint_decoding.h (81%) rename {core => src/draco/core}/varint_encoding.h (75%) rename {core => src/draco/core}/vector_d.h (83%) rename {core => src/draco/core}/vector_d_test.cc (68%) rename {io => src/draco/io}/mesh_io.cc (81%) rename {io => src/draco/io}/mesh_io.h (73%) rename {io => src/draco/io}/obj_decoder.cc (88%) rename {io => src/draco/io}/obj_decoder.h (91%) rename {io => src/draco/io}/obj_decoder_test.cc (54%) rename {io => src/draco/io}/obj_encoder.cc (97%) rename {io => src/draco/io}/obj_encoder.h (96%) rename {io => src/draco/io}/parser_utils.cc (98%) rename {io => src/draco/io}/parser_utils.h (98%) rename {io => src/draco/io}/ply_decoder.cc (98%) rename {io => src/draco/io}/ply_decoder.h (95%) rename {io => src/draco/io}/ply_decoder_test.cc (62%) rename {io => src/draco/io}/ply_encoder.cc (94%) rename {io => src/draco/io}/ply_encoder.h (96%) rename {io => src/draco/io}/ply_property_reader.h (98%) rename {io => src/draco/io}/ply_property_writer.h (94%) rename {io => src/draco/io}/ply_reader.cc (98%) rename {io => src/draco/io}/ply_reader.h (97%) rename {io => src/draco/io}/ply_reader_test.cc (97%) rename {io => src/draco/io}/point_cloud_io.cc (93%) rename {io => src/draco/io}/point_cloud_io.h (83%) rename {io => src/draco/io}/point_cloud_io_test.cc (89%) create mode 100644 src/draco/javascript/emscripten/draco_decoder_glue_wrapper.cc rename javascript/emscripten/draco_glue_wrapper.cc => src/draco/javascript/emscripten/draco_encoder_glue_wrapper.cc (73%) create mode 100644 src/draco/javascript/emscripten/draco_web_decoder.idl create mode 100644 src/draco/javascript/emscripten/draco_web_encoder.idl create mode 100644 src/draco/javascript/emscripten/encoder_webidl_wrapper.cc create mode 100644 src/draco/javascript/emscripten/encoder_webidl_wrapper.h rename {javascript => src/draco/javascript}/emscripten/finalize.js (100%) rename {javascript => src/draco/javascript}/emscripten/prepareCallbacks.js (100%) rename {javascript => src/draco/javascript}/emscripten/version.js (90%) rename {mesh => src/draco/mesh}/corner_table.cc (94%) rename {mesh => src/draco/mesh}/corner_table.h (92%) rename {mesh => src/draco/mesh}/corner_table_indices.h (97%) rename {mesh => src/draco/mesh}/corner_table_iterators.h (99%) rename {mesh => src/draco/mesh}/corner_table_traversal_processor.h (98%) rename {mesh => src/draco/mesh}/edgebreaker_observer.h (100%) rename {mesh => src/draco/mesh}/edgebreaker_traverser.h (99%) rename {mesh => src/draco/mesh}/mesh.cc (97%) rename {mesh => src/draco/mesh}/mesh.h (91%) rename {mesh => src/draco/mesh}/mesh_are_equivalent.cc (92%) rename {mesh => src/draco/mesh}/mesh_are_equivalent.h (90%) rename {mesh => src/draco/mesh}/mesh_are_equivalent_test.cc (94%) rename {mesh => src/draco/mesh}/mesh_attribute_corner_table.cc (97%) rename {mesh => src/draco/mesh}/mesh_attribute_corner_table.h (96%) rename {mesh => src/draco/mesh}/mesh_cleanup.cc (99%) rename {mesh => src/draco/mesh}/mesh_cleanup.h (93%) rename {mesh => src/draco/mesh}/mesh_cleanup_test.cc (94%) rename {mesh => src/draco/mesh}/mesh_indices.h (95%) rename {mesh => src/draco/mesh}/mesh_misc_functions.cc (97%) rename {mesh => src/draco/mesh}/mesh_misc_functions.h (95%) create mode 100644 src/draco/mesh/mesh_stripifier.cc create mode 100644 src/draco/mesh/mesh_stripifier.h rename {mesh => src/draco/mesh}/prediction_degree_traverser.h (99%) rename {mesh => src/draco/mesh}/triangle_soup_mesh_builder.cc (96%) rename {mesh => src/draco/mesh}/triangle_soup_mesh_builder.h (98%) rename {mesh => src/draco/mesh}/triangle_soup_mesh_builder_test.cc (98%) create mode 100644 src/draco/metadata/geometry_metadata.cc create mode 100644 src/draco/metadata/geometry_metadata.h create mode 100644 src/draco/metadata/metadata.cc create mode 100644 src/draco/metadata/metadata.h create mode 100644 src/draco/metadata/metadata_decoder.cc create mode 100644 src/draco/metadata/metadata_decoder.h create mode 100644 src/draco/metadata/metadata_encoder.cc create mode 100644 src/draco/metadata/metadata_encoder.h create mode 100644 src/draco/metadata/metadata_encoder_test.cc create mode 100644 src/draco/metadata/metadata_test.cc rename {point_cloud => src/draco/point_cloud}/point_cloud.cc (82%) rename {point_cloud => src/draco/point_cloud}/point_cloud.h (74%) rename {point_cloud => src/draco/point_cloud}/point_cloud_builder.cc (95%) rename {point_cloud => src/draco/point_cloud}/point_cloud_builder.h (96%) rename {point_cloud => src/draco/point_cloud}/point_cloud_builder_test.cc (96%) create mode 100644 src/draco/point_cloud/point_cloud_test.cc rename {tools => src/draco/tools}/draco_decoder.cc (81%) rename {tools => src/draco/tools}/draco_encoder.cc (65%) rename testdata/{ => invalid}/complex_poly.obj (100%) create mode 100644 testdata/test_nm_quant.0.9.0.drc diff --git a/CONTRIBUTING.md b/CONTRIBUTING.md deleted file mode 100644 index 1a09deb2..00000000 --- a/CONTRIBUTING.md +++ /dev/null @@ -1,27 +0,0 @@ -Want to contribute? Great! First, read this page (including the small print at the end). - -### Before you contribute -Before we can use your code, you must sign the -[Google Individual Contributor License Agreement] -(https://cla.developers.google.com/about/google-individual) -(CLA), which you can do online. The CLA is necessary mainly because you own the -copyright to your changes, even after your contribution becomes part of our -codebase, so we need your permission to use and distribute your code. We also -need to be sure of various other things—for instance that you'll tell us if you -know that your code infringes on other people's patents. You don't have to sign -the CLA until after you've submitted your code for review and a member has -approved it, but you must do it before we can put your code into our codebase. -Before you start working on a larger contribution, you should get in touch with -us first through the issue tracker with your idea so that we can help out and -possibly guide you. Coordinating up front makes it much easier to avoid -frustration later on. - -### Code reviews -All submissions, including submissions by project members, require review. We -use GitHub pull requests for this purpose. - -### The small print -Contributions made by corporations are covered by a different agreement than -the one above, the -[Software Grant and Corporate Contributor License Agreement] -(https://cla.developers.google.com/about/google-corporate). diff --git a/Makefile.emcc b/Makefile.decoder.emcc similarity index 80% rename from Makefile.emcc rename to Makefile.decoder.emcc index f7a9e431..39f5a9a8 100644 --- a/Makefile.emcc +++ b/Makefile.decoder.emcc @@ -38,10 +38,12 @@ endif ######### DEFINES := $(DRACO_CONFIG_DEFINES) -INCLUDES := -I../../ -I./ +DEFINES += -DDRACO_INTERNAL_1_0_0 +INCLUDES := -I../../ -I./ -I./src/ +SRCDIR := src/draco OBJDIR := obj LIBDIR := libs -IDL := javascript/emscripten/draco_web.idl +IDL := $(SRCDIR)/javascript/emscripten/draco_web_decoder.idl BINDER := $(EMSCRIPTEN)/tools/webidl_binder.py # In order to open an input mesh file with test_mesh_encoder, you need to add @@ -77,8 +79,8 @@ endif ALL_C_OPTS += -s ALLOW_MEMORY_GROWTH=1 #ALL_C_OPTS += -s TOTAL_MEMORY=67108864 -# Export the main module as "DracoModule". -ALL_C_OPTS += -s MODULARIZE=1 -s EXPORT_NAME="'DracoModule'" +# Export the main module as "DracoDecoderModule". +ALL_C_OPTS += -s MODULARIZE=1 -s EXPORT_NAME="'DracoDecoderModule'" # Do not create a .mem file. ALL_C_OPTS += --memory-init-file 0 @@ -89,7 +91,7 @@ ALL_C_OPTS += --memory-init-file 0 # Options to output WebAssembly code. # Use "make target DRACO_BUILD_TYPE=wasm" ifeq ($(DRACO_BUILD_TYPE), wasm) - ALL_C_OPTS += -s WASM=1 -s BINARYEN_IMPRECISE=1 + ALL_C_OPTS += -s WASM=1 endif CFLAGS := $(ALL_C_OPTS) @@ -111,19 +113,19 @@ ENCODER_BUFFER_A := libencoder_buffer.a ENCODER_BUFFER_OBJS := core/encoder_buffer.o DECODER_BUFFER_A := libdecoder_buffer.a -DECODER_BUFFER_OBJS := core/bit_coder.o core/decoder_buffer.o +DECODER_BUFFER_OBJS := core/decoder_buffer.o RANS_BIT_DECODER_A := librans_bit_decoder.a -RANS_BIT_DECODER_OBJS := core/divide.o core/rans_bit_decoder.o +RANS_BIT_DECODER_OBJS := core/divide.o core/bit_coders/rans_bit_decoder.o RANS_BIT_ENCODER_A := librans_bit_encoder.a -RANS_BIT_ENCODER_OBJS := core/divide.o core/rans_bit_encoder.o +RANS_BIT_ENCODER_OBJS := core/divide.o core/bit_coders/rans_bit_encoder.o ADAPTIVE_RANS_BIT_DECODER_A := libadaptive_rans_bit_decoder.a -ADAPTIVE_RANS_BIT_DECODER_OBJS := core/adaptive_rans_bit_decoder.o +ADAPTIVE_RANS_BIT_DECODER_OBJS := core/bit_coders/adaptive_rans_bit_decoder.o ADAPTIVE_RANS_BIT_ENCODER_A := libadaptive_rans_bit_encoder.a -ADAPTIVE_RANS_BIT_ENCODER_OBJS := core/adaptive_rans_bit_encoder.o +ADAPTIVE_RANS_BIT_ENCODER_OBJS := core/bit_coders/adaptive_rans_bit_encoder.o CORNER_TABLE_A := libcorner_table.a CORNER_TABLE_OBJS := mesh/corner_table.o @@ -132,29 +134,45 @@ SHANNON_ENTROPY_A := libshannon_entropy.a SHANNON_ENTROPY_OBJS := core/shannon_entropy.o SYMBOL_CODING_A := libsymbol_coding.a -SYMBOL_CODING_OBJS := core/symbol_decoding.o core/symbol_encoding.o +SYMBOL_CODING_OBJS := \ + core/symbol_decoding.o core/symbol_encoding.o core/symbol_coding_utils.o DIRECT_BIT_DECODER_A := libdirect_bit_decoder.a -DIRECT_BIT_DECODER_OBJS := core/direct_bit_decoder.o +DIRECT_BIT_DECODER_OBJS := core/bit_coders/direct_bit_decoder.o DIRECT_BIT_ENCODER_A := libdirect_bit_encoder.a -DIRECT_BIT_ENCODER_OBJS := core/direct_bit_encoder.o +DIRECT_BIT_ENCODER_OBJS := core/bit_coders/direct_bit_encoder.o DRACO_TYPES_A := libdraco_types.a DRACO_TYPES_OBJS := core/draco_types.o +METADATA_A := metadata/libmetadata.a +METADATA_OBJS := metadata/metadata.o +GEOMETRY_METADATA_A := metadata/libgeometry_metadata.a +GEOMETRY_METADATA_OBJS := metadata/geometry_metadata.o +METADATA_ENCODER_A := metadata/libmetadata_encoder.a +METADATA_ENCODER_OBJS := metadata/metadata_encoder.o +METADATA_DECODER_A := metadata/libmetadata_decoder.a +METADATA_DECODER_OBJS := metadata/metadata_decoder.o + GEOMETRY_ATTRIBUTE_A := geometry_attribute.a -GEOMETRY_ATTRIBUTE_OBJS := point_cloud/geometry_attribute.o +GEOMETRY_ATTRIBUTE_OBJS := attributes/geometry_attribute.o POINT_ATTRIBUTE_A := point_attribute.a -POINT_ATTRIBUTE_OBJS := point_cloud/point_attribute.o +POINT_ATTRIBUTE_OBJS := attributes/point_attribute.o +ATTRIBUTE_OCTAHEDRON_TRANSFORM_A := attribute_octahedron_transform.a +ATTRIBUTE_OCTAHEDRON_TRANSFORM_OBJS := attributes/attribute_octahedron_transform.o +ATTRIBUTE_QUANTIZATION_TRANSFORM_A := attribute_quantization_transform.a +ATTRIBUTE_QUANTIZATION_TRANSFORM_OBJS := attributes/attribute_quantization_transform.o +ATTRIBUTE_TRANSFORM_A := attribute_transform.a +ATTRIBUTE_TRANSFORM_OBJS := attributes/attribute_transform.o POINT_CLOUD_A := point_cloud.a POINT_CLOUD_OBJS := point_cloud/point_cloud.o MESH_A := libmesh.a MESH_OBJS := mesh/mesh.o +MESH_STRIPIFIER_A := libmesh_stripifier.a +MESH_STRIPIFIER_OBJS := mesh/mesh_stripifier.o OPTIONS_A := options.a OPTIONS_OBJS := core/options.o -ENCODER_OPTIONS_A := encoder_options.a -ENCODER_OPTIONS_OBJS := compression/config/encoder_options.o POINT_CLOUD_ENCODER_BASE_A := point_cloud_encoder_base.a POINT_CLOUD_ENCODER_BASE_OBJS := compression/attributes/attributes_encoder.o POINT_CLOUD_ENCODER_BASE_OBJS += compression/point_cloud/point_cloud_encoder.o @@ -197,7 +215,7 @@ KD_TREE_ATTRIBUTES_DECODER_OBJS := \ SEQUENTIAL_NORMAL_ATTRIBUTE_ENCODER_A := \ sequential_normal_attribute_encoder.a -SEQUENTIAL_NORMAL_ATTRIBUTE_OBJS := \ +SEQUENTIAL_NORMAL_ATTRIBUTE_ENCODER_OBJS := \ compression/attributes/sequential_normal_attribute_encoder.o SEQUENTIAL_NORMAL_ATTRIBUTE_DECODER_A := \ sequential_normal_attribute_decoder.a @@ -270,15 +288,15 @@ FLOAT_POINTS_TREE_ENCODER_A := \ FLOAT_POINTS_TREE_ENCODER_OBJS := \ compression/point_cloud/algorithms/float_points_tree_encoder.o -INTEGER_POINTS_KD_TREE_DECODER_A := \ - libinteger_points_kd_tree_decoder.a -INTEGER_POINTS_KD_TREE_DECODER_OBJS := \ - compression/point_cloud/algorithms/integer_points_kd_tree_decoder.o +DYNAMIC_INTEGER_POINTS_KD_TREE_DECODER_A := \ + libdynamic_integer_points_kd_tree_decoder.a +DYNAMIC_INTEGER_POINTS_KD_TREE_DECODER_OBJS := \ + compression/point_cloud/algorithms/dynamic_integer_points_kd_tree_decoder.o -INTEGER_POINTS_KD_TREE_ENCODER_A := \ - libinteger_points_kd_tree_encoder.a -INTEGER_POINTS_KD_TREE_ENCODER_OBJS := \ - compression/point_cloud/algorithms/integer_points_kd_tree_encoder.o +DYNAMIC_INTEGER_POINTS_KD_TREE_ENCODER_A := \ + libdynamic_integer_points_kd_tree_encoder.a +DYNAMIC_INTEGER_POINTS_KD_TREE_ENCODER_OBJS := \ + compression/point_cloud/algorithms/dynamic_integer_points_kd_tree_encoder.o CORNER_TABLE_OBJSA := $(addprefix $(OBJDIR)/,$(CORNER_TABLE_OBJS:.o=_a.o)) SHANNON_ENTROPY_OBJSA := $(addprefix $(OBJDIR)/,$(SHANNON_ENTROPY_OBJS:.o=_a.o)) @@ -291,13 +309,25 @@ DECODER_BUFFER_OBJSA := $(addprefix $(OBJDIR)/,$(DECODER_BUFFER_OBJS:.o=_a.o)) DATA_BUFFER_OBJSA := $(addprefix $(OBJDIR)/,$(DATA_BUFFER_OBJS:.o=_a.o)) DRACO_TYPES_OBJSA := $(addprefix $(OBJDIR)/,$(DRACO_TYPES_OBJS:.o=_a.o)) +METADATA_OBJSA := \ + $(addprefix $(OBJDIR)/,$(METADATA_OBJS:.o=_a.o)) +GEOMETRY_METADATA_OBJSA := \ + $(addprefix $(OBJDIR)/,$(GEOMETRY_METADATA_OBJS:.o=_a.o)) +METADATA_ENCODER_OBJSA := \ + $(addprefix $(OBJDIR)/,$(METADATA_ENCODER_OBJS:.o=_a.o)) +METADATA_DECODER_OBJSA := \ + $(addprefix $(OBJDIR)/,$(METADATA_DECODER_OBJS:.o=_a.o)) + GEOMETRY_ATTRIBUTE_OBJSA := \ $(addprefix $(OBJDIR)/,$(GEOMETRY_ATTRIBUTE_OBJS:.o=_a.o)) POINT_ATTRIBUTE_OBJSA := $(addprefix $(OBJDIR)/,$(POINT_ATTRIBUTE_OBJS:.o=_a.o)) +ATTRIBUTE_OCTAHEDRON_TRANSFORM_OBJSA := $(addprefix $(OBJDIR)/,$(ATTRIBUTE_OCTAHEDRON_TRANSFORM_OBJS:.o=_a.o)) +ATTRIBUTE_QUANTIZATION_TRANSFORM_OBJSA := $(addprefix $(OBJDIR)/,$(ATTRIBUTE_QUANTIZATION_TRANSFORM_OBJS:.o=_a.o)) +ATTRIBUTE_TRANSFORM_OBJSA := $(addprefix $(OBJDIR)/,$(ATTRIBUTE_TRANSFORM_OBJS:.o=_a.o)) POINT_CLOUD_OBJSA := $(addprefix $(OBJDIR)/,$(POINT_CLOUD_OBJS:.o=_a.o)) MESH_OBJSA := $(addprefix $(OBJDIR)/,$(MESH_OBJS:.o=_a.o)) +MESH_STRIPIFIER_OBJSA := $(addprefix $(OBJDIR)/,$(MESH_STRIPIFIER_OBJS:.o=_a.o)) OPTIONS_OBJSA := $(addprefix $(OBJDIR)/,$(OPTIONS_OBJS:.o=_a.o)) -ENCODER_OPTIONS_OBJSA := $(addprefix $(OBJDIR)/,$(ENCODER_OPTIONS_OBJS:.o=_a.o)) POINT_CLOUD_ENCODER_BASE_OBJSA := \ $(addprefix $(OBJDIR)/,$(POINT_CLOUD_ENCODER_BASE_OBJS:.o=_a.o)) POINT_CLOUD_DECODER_BASE_OBJSA := \ @@ -384,10 +414,10 @@ FLOAT_POINTS_TREE_DECODER_OBJSA := \ $(addprefix $(OBJDIR)/,$(FLOAT_POINTS_TREE_DECODER_OBJS:.o=_a.o)) FLOAT_POINTS_TREE_ENCODER_OBJSA := \ $(addprefix $(OBJDIR)/,$(FLOAT_POINTS_TREE_ENCODER_OBJS:.o=_a.o)) -INTEGER_POINTS_KD_TREE_DECODER_OBJSA := \ - $(addprefix $(OBJDIR)/,$(INTEGER_POINTS_KD_TREE_DECODER_OBJS:.o=_a.o)) -INTEGER_POINTS_KD_TREE_ENCODER_OBJSA := \ - $(addprefix $(OBJDIR)/,$(INTEGER_POINTS_KD_TREE_ENCODER_OBJS:.o=_a.o)) +DYNAMIC_INTEGER_POINTS_KD_TREE_DECODER_OBJSA := \ + $(addprefix $(OBJDIR)/,$(DYNAMIC_INTEGER_POINTS_KD_TREE_DECODER_OBJS:.o=_a.o)) +DYNAMIC_INTEGER_POINTS_KD_TREE_ENCODER_OBJSA := \ + $(addprefix $(OBJDIR)/,$(DYNAMIC_INTEGER_POINTS_KD_TREE_ENCODER_OBJS:.o=_a.o)) # Core objs DRACO_CORE_OBJSA := $(DRACO_TYPES_OBJSA) @@ -404,9 +434,14 @@ DRACO_SHARED_OBJSA += $(SHANNON_ENTROPY_OBJSA) DRACO_SHARED_OBJSA += $(DATA_BUFFER_OBJSA) $(DRACO_CORE_OBJSA) DRACO_SHARED_OBJSA += $(GEOMETRY_ATTRIBUTE_OBJSA) DRACO_SHARED_OBJSA += $(POINT_ATTRIBUTE_OBJSA) +DRACO_SHARED_OBJSA += $(ATTRIBUTE_OCTAHEDRON_TRANSFORM_OBJSA) +DRACO_SHARED_OBJSA += $(ATTRIBUTE_QUANTIZATION_TRANSFORM_OBJSA) +DRACO_SHARED_OBJSA += $(ATTRIBUTE_TRANSFORM_OBJSA) DRACO_SHARED_OBJSA += $(POINT_CLOUD_OBJSA) DRACO_SHARED_OBJSA += $(MESH_OBJSA) DRACO_SHARED_OBJSA += $(MESH_MISC_OBJSA) $(MESH_ATTRIBUTE_CORNER_TABLE_OBJSA) +DRACO_SHARED_OBJSA += $(METADATA_OBJSA) +DRACO_SHARED_OBJSA += $(GEOMETRY_METADATA_OBJSA) DRACO_SHARED_OBJSA += $(CYCLE_TIMER_OBJSA) DRACO_SHARED_OBJSA += $(RANS_BIT_DECODER_OBJSA) DRACO_SHARED_OBJSA += $(RANS_BIT_ENCODER_OBJSA) @@ -414,9 +449,9 @@ DRACO_SHARED_OBJSA += $(QUANTIZATION_UTILS_OBJSA) # Encoder specific objs DRACO_ENCODER_OBJSA := $(OPTIONS_OBJSA) -DRACO_ENCODER_OBJSA += $(ENCODER_OPTIONS_OBJSA) DRACO_ENCODER_OBJSA += $(POINT_CLOUD_ENCODER_BASE_OBJSA) DRACO_ENCODER_OBJSA += $(MESH_ENCODER_BASE_OBJSA) +DRACO_ENCODER_OBJSA += $(METADATA_ENCODER_OBJSA) DRACO_ENCODER_OBJSA += $(SEQUENTIAL_ATTRIBUTE_ENCODER_OBJSA) DRACO_ENCODER_OBJSA += $(SEQUENTIAL_INTEGER_ATTRIBUTE_ENCODER_OBJSA) DRACO_ENCODER_OBJSA += $(SEQUENTIAL_QUANTIZATION_ATTRIBUTE_ENCODER_OBJSA) @@ -426,7 +461,7 @@ DRACO_ENCODER_OBJSA += $(POINT_CLOUD_SEQUENTIAL_ENCODER_OBJSA) DRACO_ENCODER_OBJSA += $(POINT_CLOUD_KD_TREE_ENCODER_OBJSA) DRACO_ENCODER_OBJSA += $(KD_TREE_ATTRIBUTES_ENCODER_OBJSA) DRACO_ENCODER_OBJSA += $(FLOAT_POINTS_TREE_ENCODER_OBJSA) -DRACO_ENCODER_OBJSA += $(INTEGER_POINTS_KD_TREE_ENCODER_OBJSA) +DRACO_ENCODER_OBJSA += $(DYNAMIC_INTEGER_POINTS_KD_TREE_ENCODER_OBJSA) DRACO_ENCODER_OBJSA += $(MESH_SEQUENTIAL_ENCODER_OBJSA) DRACO_ENCODER_OBJSA += $(MESH_EDGEBREAKER_ENCODER_OBJSA) DRACO_ENCODER_OBJSA += $(ENCODE_OBJSA) @@ -434,8 +469,10 @@ DRACO_ENCODER_OBJSA += $(ENCODER_BUFFER_OBJSA) # Decoder specific objs DRACO_DECODER_OBJSA := $(DECODER_BUFFER_OBJSA) +DRACO_DECODER_OBJSA += $(OPTIONS_OBJSA) DRACO_DECODER_OBJSA += $(POINT_CLOUD_DECODER_BASE_OBJSA) DRACO_DECODER_OBJSA += $(MESH_DECODER_BASE_OBJSA) +DRACO_DECODER_OBJSA += $(METADATA_DECODER_OBJSA) DRACO_DECODER_OBJSA += $(SEQUENTIAL_ATTRIBUTE_DECODER_OBJSA) DRACO_DECODER_OBJSA += $(SEQUENTIAL_INTEGER_ATTRIBUTE_DECODER_OBJSA) DRACO_DECODER_OBJSA += $(SEQUENTIAL_QUANTIZATION_ATTRIBUTE_DECODER_OBJSA) @@ -445,7 +482,8 @@ DRACO_DECODER_OBJSA += $(POINT_CLOUD_SEQUENTIAL_DECODER_OBJSA) DRACO_DECODER_OBJSA += $(POINT_CLOUD_KD_TREE_DECODER_OBJSA) DRACO_DECODER_OBJSA += $(KD_TREE_ATTRIBUTES_DECODER_OBJSA) DRACO_DECODER_OBJSA += $(FLOAT_POINTS_TREE_DECODER_OBJSA) -DRACO_DECODER_OBJSA += $(INTEGER_POINTS_KD_TREE_DECODER_OBJSA) +DRACO_DECODER_OBJSA += $(DYNAMIC_INTEGER_POINTS_KD_TREE_DECODER_OBJSA) +DRACO_DECODER_OBJSA += $(MESH_STRIPIFIER_OBJSA) DRACO_DECODER_OBJSA += $(MESH_SEQUENTIAL_DECODER_OBJSA) DRACO_DECODER_OBJSA += $(MESH_EDGEBREAKER_DECODER_OBJSA) DRACO_DECODER_OBJSA += $(DECODE_OBJSA) @@ -469,12 +507,15 @@ LIBS += $(LIBDIR)/libobj_decoder.a LIBS += $(LIBDIR)/libgeometry_attribute.a LIBS += $(LIBDIR)/libpoint_cloud.a LIBS += $(LIBDIR)/libpoint_attribute.a -LIBS += $(LIBDIR)/libencoder_options.a +LIBS += $(LIBDIR)/libattribute_octahedron_transform.a +LIBS += $(LIBDIR)/libattribute_quantization_transform.a +LIBS += $(LIBDIR)/libattribute_transform.a LIBS += $(LIBDIR)/liboptions.a LIBS += $(LIBDIR)/libencode.a LIBS += $(LIBDIR)/libdecode.a LIBS += $(LIBDIR)/libmesh.a LIBS += $(LIBDIR)/libmesh_decoder_base.a +LIBS += $(LIBDIR)/libmesh_stripifier.a LIBS += $(LIBDIR)/libpoint_cloud_sequential_decoder.a LIBS += $(LIBDIR)/libpoint_cloud_kd_tree_decoder.a LIBS += $(LIBDIR)/libkd_tree_attributes_decoder.a @@ -508,14 +549,18 @@ LIBS += $(LIBDIR)/librans_bit_decoder.a LIBS += $(LIBDIR)/librans_bit_encoder.a LIBS += $(LIBDIR)/libdata_buffer.a LIBS += $(LIBDIR)/libdraco_types.a +LIBS += $(LIBDIR)/libmetadata.a +LIBS += $(LIBDIR)/libgeometry_metadata.a +LIBS += $(LIBDIR)/libmetadata_encoder.a +LIBS += $(LIBDIR)/libmetadata_decoder.a LIBS += $(LIBDIR)/libdecoder_buffer.a LIBS += $(LIBDIR)/libencoder_buffer.a LIBS += $(LIBDIR)/libcycle_timer.a POINTS_LIBS := $(LIBDIR)/libfloat_points_tree_decoder.a POINTS_LIBS += $(LIBDIR)/libfloat_points_tree_encoder.a -POINTS_LIBS += $(LIBDIR)/libinteger_points_kd_tree_decoder.a -POINTS_LIBS += $(LIBDIR)/libinteger_points_kd_tree_encoder.a +POINTS_LIBS += $(LIBDIR)/libdynamic_integer_points_kd_tree_decoder.a +POINTS_LIBS += $(LIBDIR)/libdynamic_integer_points_kd_tree_encoder.a POINTS_LIBS += $(LIBDIR)/libdirect_bit_decoder.a POINTS_LIBS += $(LIBDIR)/libdirect_bit_encoder.a POINTS_LIBS += $(LIBDIR)/libadaptive_rans_bit_decoder.a @@ -523,19 +568,19 @@ POINTS_LIBS += $(LIBDIR)/libadaptive_rans_bit_encoder.a DEPS := $(DRACO_OBJSA:_a.o=.d) CLEAN := $(DEPS) $(OBJSA) $(LIBS) $(POINTS_LIBS) -CLEAN += glue.cpp glue.js draco_decoder.js WebIDLGrammar.pkl parser.out -CLEAN += $(OBJDIR)/javascript/emscripten/draco_glue_wrapper.o $(OBJDIR)/javascript/emscripten/draco_glue_wrapper.d -CLEAN += $(OBJDIR)/javascript/emscripten/webidl_wrapper.o $(OBJDIR)/javascript/emscripten/webidl_wrapper.d +CLEAN += glue_decoder.cpp glue_decoder.js draco_decoder.js WebIDLGrammar.pkl parser.out +CLEAN += $(OBJDIR)/javascript/emscripten/draco_decoder_glue_wrapper.o $(OBJDIR)/javascript/emscripten/draco_decoder_glue_wrapper.d +CLEAN += $(OBJDIR)/javascript/emscripten/decoder_webidl_wrapper.o $(OBJDIR)/javascript/emscripten/decoder_webidl_wrapper.d all: jslib jslib: build_glue draco_decoder build_glue: - python $(BINDER) $(IDL) glue + python $(BINDER) $(IDL) glue_decoder -draco_decoder: $(OBJDIR)/javascript/emscripten/draco_glue_wrapper.o $(OBJDIR)/javascript/emscripten/webidl_wrapper.o $(DRACO_CORE_OBJSA) $(DRACO_SHARED_OBJSA) $(DRACO_DECODER_OBJSA) - $(CXX) $(ALL_C_OPTS) $^ --pre-js javascript/emscripten/prepareCallbacks.js --pre-js javascript/emscripten/version.js --post-js glue.js --post-js javascript/emscripten/finalize.js -o $@.js +draco_decoder: $(OBJDIR)/javascript/emscripten/draco_decoder_glue_wrapper.o $(OBJDIR)/javascript/emscripten/decoder_webidl_wrapper.o $(DRACO_CORE_OBJSA) $(DRACO_SHARED_OBJSA) $(DRACO_DECODER_OBJSA) + $(CXX) $(ALL_C_OPTS) $^ --pre-js $(SRCDIR)/javascript/emscripten/prepareCallbacks.js --pre-js $(SRCDIR)/javascript/emscripten/version.js --post-js glue_decoder.js --post-js $(SRCDIR)/javascript/emscripten/finalize.js -o $@.js $(LIBDIR)/libcorner_table.a: $(CORNER_TABLE_OBJSA) $(AR) rcs $@ $^ @@ -561,17 +606,32 @@ $(LIBDIR)/libdata_buffer.a: $(DATA_BUFFER_OBJSA) $(LIBDIR)/libdraco_types.a: $(DRACO_TYPES_OBJSA) $(AR) rcs $@ $^ +$(LIBDIR)/libmetadata.a: $(MEATDATA_OBJSA) + $(AR) rcs $@ $^ +$(LIBDIR)/libgeometry_metadata.a: $(GEOMETRY_MEATDATA_OBJSA) + $(AR) rcs $@ $^ +$(LIBDIR)/libmetadata_encoder.a: $(MEATDATA_ENCODER_OBJSA) + $(AR) rcs $@ $^ +$(LIBDIR)/libmetadata_decoder.a: $(MEATDATA_DECODER_OBJSA) + $(AR) rcs $@ $^ + $(LIBDIR)/libgeometry_attribute.a: $(GEOMETRY_ATTRIBUTE_OBJSA) $(AR) rcs $@ $^ $(LIBDIR)/libpoint_attribute.a: $(POINT_ATTRIBUTE_OBJSA) $(AR) rcs $@ $^ +$(LIBDIR)/libattribute_octahedron_transform.a: $(ATTRIBUTE_OCTAHEDRON_TRANSFORM_OBJSA) + $(AR) rcs $@ $^ +$(LIBDIR)/libattribute_quantization_transform.a: $(ATTRIBUTE_QUANTIZATION_TRANSFORM_OBJSA) + $(AR) rcs $@ $^ +$(LIBDIR)/libattribute_transform.a: $(ATTRIBUTE_TRANSFORM_OBJSA) + $(AR) rcs $@ $^ $(LIBDIR)/libpoint_cloud.a: $(POINT_CLOUD_OBJSA) $(AR) rcs $@ $^ $(LIBDIR)/libmesh.a: $(MESH_OBJSA) $(AR) rcs $@ $^ -$(LIBDIR)/liboptions.a: $(OPTIONS_OBJSA) +$(LIBDIR)/libmesh_stripifier.a: $(MESH_STRIPIFIER_OBJSA) $(AR) rcs $@ $^ -$(LIBDIR)/libencoder_options.a: $(ENCODER_OPTIONS_OBJSA) +$(LIBDIR)/liboptions.a: $(OPTIONS_OBJSA) $(AR) rcs $@ $^ $(LIBDIR)/libpoint_cloud_encoder_base.a: $(POINT_CLOUD_ENCODER_BASE_OBJSA) $(AR) rcs $@ $^ @@ -686,19 +746,19 @@ $(LIBDIR)/libfloat_points_tree_decoder.a: $(FLOAT_POINTS_TREE_DECODER_OBJSA) $(LIBDIR)/libfloat_points_tree_encoder.a: $(FLOAT_POINTS_TREE_ENCODER_OBJSA) $(AR) rcs $@ $^ -$(LIBDIR)/libinteger_points_kd_tree_decoder.a: \ - $(INTEGER_POINTS_KD_TREE_DECODER_OBJSA) +$(LIBDIR)/libdynamic_integer_points_kd_tree_decoder.a: \ + $(DYNAMIC_INTEGER_POINTS_KD_TREE_DECODER_OBJSA) $(AR) rcs $@ $^ -$(LIBDIR)/libinteger_points_kd_tree_encoder.a: \ - $(INTEGER_POINTS_KD_TREE_ENCODER_OBJSA) +$(LIBDIR)/libdynamic_integer_points_kd_tree_encoder.a: \ + $(DYNAMIC_INTEGER_POINTS_KD_TREE_ENCODER_OBJSA) $(AR) rcs $@ $^ -$(OBJDIR)/%.o: %.cc +$(OBJDIR)/%.o: $(SRCDIR)/%.cc @mkdir -p $(@D) $(CXX) $(ALL_CXXFLAGS) $< -o $@ -$(OBJDIR)/%_a.o: %.cc +$(OBJDIR)/%_a.o: $(SRCDIR)/%.cc @mkdir -p $(@D) $(CXX) $(ALL_CXXFLAGS) $< -o $@ diff --git a/Makefile.encoder.emcc b/Makefile.encoder.emcc new file mode 100644 index 00000000..afd23254 --- /dev/null +++ b/Makefile.encoder.emcc @@ -0,0 +1,776 @@ +######### +# Makefile for emscripten +CC=emcc +CXX=em++ +AR=emar +LD=emcc + +######### Configurations defining feature set ######### +# Use "make target DRACO_CONFIG=full|limited" to set the desired configuration + +# Select the correct version based on the input flags. +DRACO_CONFIG ?= full + +# Full config - all features included. +DRACO_FULL_MESH_CONFIG_DEFINES := -DDRACO_MESH_COMPRESSION_SUPPORTED +DRACO_FULL_MESH_CONFIG_DEFINES += -DDRACO_STANDARD_EDGEBREAKER_SUPPORTED +DRACO_FULL_MESH_CONFIG_DEFINES += -DDRACO_PREDICTIVE_EDGEBREAKER_SUPPORTED + +DRACO_FULL_POINT_CLOUD_CONFIG_DEFINES := -DDRACO_POINT_CLOUD_COMPRESSION_SUPPORTED + +DRACO_FULL_CONFIG_DEFINES := $(DRACO_FULL_MESH_CONFIG_DEFINES) +DRACO_FULL_CONFIG_DEFINES += $(DRACO_FULL_POINT_CLOUD_CONFIG_DEFINES) + +# Default limited config with only some core features enabled. +DRACO_LIMITED_CONFIG_DEFINES := -DDRACO_STANDARD_EDGEBREAKER_SUPPORTED +DRACO_LIMITED_CONFIG_DEFINES += -DDRACO_POINT_CLOUD_COMPRESSION_SUPPORTED +DRACO_LIMITED_CONFIG_DEFINES += -DDRACO_MESH_COMPRESSION_SUPPORTED + +ifeq ($(DRACO_CONFIG), limited) + DRACO_CONFIG_DEFINES := $(DRACO_LIMITED_CONFIG_DEFINES) +else ifeq ($(DRACO_CONFIG), full_mesh) + DRACO_CONFIG_DEFINES := $(DRACO_FULL_MESH_CONFIG_DEFINES) +else ifeq ($(DRACO_CONFIG), full_point_cloud) + DRACO_CONFIG_DEFINES := $(DRACO_FULL_POINT_CLOUD_CONFIG_DEFINES) +else + DRACO_CONFIG_DEFINES := $(DRACO_FULL_CONFIG_DEFINES) +endif +######### + +DEFINES := $(DRACO_CONFIG_DEFINES) +DEFINES += -DDRACO_INTERNAL_1_0_0 +INCLUDES := -I../../ -I./ -I./src/ +SRCDIR := src/draco +OBJDIR := obj +LIBDIR := libs +IDL := $(SRCDIR)/javascript/emscripten/draco_web_encoder.idl +BINDER := $(EMSCRIPTEN)/tools/webidl_binder.py + +# In order to open an input mesh file with test_mesh_encoder, you need to add +# the mesh here. Then you need to add the test_mesh_encoder command line +# arguments to the generated html file. E.g. +# arguments: ["-m","1","-q","9", "-noerror","-no3rdparty","-f","cube.obj"], +#MESH_FILE := --preload-file cube.obj +MESH_FILE := + +ALL_C_OPTS := -std=c++11 + +# Options to reduce JavaScript size. +#ALL_C_OPTS += -Oz -s NO_FILESYSTEM=1 -s DISABLE_EXCEPTION_CATCHING=1 +#ALL_C_OPTS += -s USE_SDL=0 -s USE_SDL_IMAGE=0 -s USE_SDL_TTF=0 + +# Options for speed. +ALL_C_OPTS += -O3 +ALL_C_OPTS += -s NO_FILESYSTEM=1 -s ELIMINATE_DUPLICATE_FUNCTIONS=1 +ALL_C_OPTS += -s EXPORTED_RUNTIME_METHODS=[] +ALL_C_OPTS += -s PRECISE_F32=1 + +# Option to get about a 10% speed increase at the cost of about 10% in size. +# Use "make target DRACO_PERFORMANCE_TYPE=extra_speed" +ifeq ($(DRACO_PERFORMANCE_TYPE), extra_speed) + ALL_C_OPTS += --llvm-lto 1 +endif + +# Options for debug +#ALL_C_OPTS += -g -s DEMANGLE_SUPPORT=1 + +# If you use -s ALLOW_MEMORY_GROWTH=1 it may turn off some optimizations which +# will hurt performance. +ALL_C_OPTS += -s ALLOW_MEMORY_GROWTH=1 +#ALL_C_OPTS += -s TOTAL_MEMORY=67108864 + +# Export the main module as "DracoEncoderModule". +ALL_C_OPTS += -s MODULARIZE=1 -s EXPORT_NAME="'DracoEncoderModule'" + +# Do not create a .mem file. +ALL_C_OPTS += --memory-init-file 0 + +# Options to separate asm.js and mem file. +#ALL_C_OPTS += --separate-asm --memory-init-file 1 + +# Options to output WebAssembly code. +# Use "make target DRACO_BUILD_TYPE=wasm" +ifeq ($(DRACO_BUILD_TYPE), wasm) + ALL_C_OPTS += -s WASM=1 -s BINARYEN_IMPRECISE=1 +endif + +CFLAGS := $(ALL_C_OPTS) +CXXFLAGS := $(ALL_C_OPTS) +CFLAGS += -Wno-sign-compare -fno-omit-frame-pointer +CXXFLAGS += -Wno-sign-compare -fno-omit-frame-pointer + +ALL_CXXFLAGS := -MMD -MP $(DEFINES) $(INCLUDES) $(CXXFLAGS) + +DATA_BUFFER_A := libdata_buffer.a +DATA_BUFFER_OBJS := core/data_buffer.o + +QUANTIZATION_UTILS_A := libquantization_utils.a +QUANTIZATION_UTILS_OBJS := core/quantization_utils.o +CYCLE_TIMER_A := libcycle_timer.a +CYCLE_TIMER_OBJS := core/cycle_timer.o + +ENCODER_BUFFER_A := libencoder_buffer.a +ENCODER_BUFFER_OBJS := core/encoder_buffer.o + +DECODER_BUFFER_A := libdecoder_buffer.a +DECODER_BUFFER_OBJS := core/decoder_buffer.o + +RANS_BIT_DECODER_A := librans_bit_decoder.a +RANS_BIT_DECODER_OBJS := core/divide.o core/bit_coders/rans_bit_decoder.o + +RANS_BIT_ENCODER_A := librans_bit_encoder.a +RANS_BIT_ENCODER_OBJS := core/divide.o core/bit_coders/rans_bit_encoder.o + +ADAPTIVE_RANS_BIT_DECODER_A := libadaptive_rans_bit_decoder.a +ADAPTIVE_RANS_BIT_DECODER_OBJS := core/bit_coders/adaptive_rans_bit_decoder.o + +ADAPTIVE_RANS_BIT_ENCODER_A := libadaptive_rans_bit_encoder.a +ADAPTIVE_RANS_BIT_ENCODER_OBJS := core/bit_coders/adaptive_rans_bit_encoder.o + +CORNER_TABLE_A := libcorner_table.a +CORNER_TABLE_OBJS := mesh/corner_table.o + +SHANNON_ENTROPY_A := libshannon_entropy.a +SHANNON_ENTROPY_OBJS := core/shannon_entropy.o + +SYMBOL_CODING_A := libsymbol_coding.a +SYMBOL_CODING_OBJS := \ + core/symbol_decoding.o core/symbol_encoding.o core/symbol_coding_utils.o + +DIRECT_BIT_DECODER_A := libdirect_bit_decoder.a +DIRECT_BIT_DECODER_OBJS := core/bit_coders/direct_bit_decoder.o + +DIRECT_BIT_ENCODER_A := libdirect_bit_encoder.a +DIRECT_BIT_ENCODER_OBJS := core/bit_coders/direct_bit_encoder.o + +DRACO_TYPES_A := libdraco_types.a +DRACO_TYPES_OBJS := core/draco_types.o + +METADATA_A :=metadata/metadata.a +METADATA_OBJS :=metadata/metadata.o +GEOMETRY_METADATA_A :=metadata/geometry_metadata.a +GEOMETRY_METADATA_OBJS :=metadata/geometry_metadata.o +METADATA_ENCODER_A :=metadata/metadata_encoder.a +METADATA_ENCODER_OBJS :=metadata/metadata_encoder.o +METADATA_DECODER_A :=metadata/metadata_decoder.a +METADATA_DECODER_OBJS :=metadata/metadata_decoder.o + +GEOMETRY_ATTRIBUTE_A := geometry_attribute.a +GEOMETRY_ATTRIBUTE_OBJS := attributes/geometry_attribute.o +POINT_ATTRIBUTE_A := point_attribute.a +POINT_ATTRIBUTE_OBJS := attributes/point_attribute.o +ATTRIBUTE_OCTAHEDRON_TRANSFORM_A := attribute_octahedron_transform.a +ATTRIBUTE_OCTAHEDRON_TRANSFORM_OBJS := attributes/attribute_octahedron_transform.o +ATTRIBUTE_QUANTIZATION_TRANSFORM_A := attribute_quantization_transform.a +ATTRIBUTE_QUANTIZATION_TRANSFORM_OBJS := attributes/attribute_quantization_transform.o +ATTRIBUTE_TRANSFORM_A := attribute_transform.a +ATTRIBUTE_TRANSFORM_OBJS := attributes/attribute_transform.o +POINT_CLOUD_A := point_cloud.a +POINT_CLOUD_OBJS := point_cloud/point_cloud.o +MESH_A := libmesh.a +MESH_OBJS := mesh/mesh.o +OPTIONS_A := options.a +OPTIONS_OBJS := core/options.o +POINT_CLOUD_ENCODER_BASE_A := point_cloud_encoder_base.a +POINT_CLOUD_ENCODER_BASE_OBJS := compression/attributes/attributes_encoder.o +POINT_CLOUD_ENCODER_BASE_OBJS += compression/point_cloud/point_cloud_encoder.o +POINT_CLOUD_DECODER_BASE_A := point_cloud_decoder_base.a +POINT_CLOUD_DECODER_BASE_OBJS := compression/attributes/attributes_decoder.o +POINT_CLOUD_DECODER_BASE_OBJS += compression/point_cloud/point_cloud_decoder.o + +MESH_ENCODER_BASE_A := mesh_encoder_base.a +MESH_ENCODER_BASE_OBJS := compression/mesh/mesh_encoder.o +MESH_DECODER_BASE_A := mesh_decoder_base.a +MESH_DECODER_BASE_OBJS := compression/mesh/mesh_decoder.o +SEQUENTIAL_ATTRIBUTE_ENCODER_A := sequential_attribute_encoder.a +SEQUENTIAL_ATTRIBUTE_ENCODER_OBJS := \ + compression/attributes/sequential_attribute_encoder.o +SEQUENTIAL_ATTRIBUTE_DECODER_A := sequential_attribute_decoder.a +SEQUENTIAL_ATTRIBUTE_DECODER_OBJS := \ + compression/attributes/sequential_attribute_decoder.o +SEQUENTIAL_INTEGER_ATTRIBUTE_ENCODER_A := \ + sequential_integer_attribute_encoder.a +SEQUENTIAL_INTEGER_ATTRIBUTE_ENCODER_OBJS := \ + compression/attributes/sequential_integer_attribute_encoder.o +SEQUENTIAL_INTEGER_ATTRIBUTE_DECODER_A := \ + sequential_integer_attribute_decoder.a +SEQUENTIAL_INTEGER_ATTRIBUTE_DECODER_OBJS := \ + compression/attributes/sequential_integer_attribute_decoder.o +SEQUENTIAL_QUANTIZATION_ATTRIBUTE_ENCODER_A := \ + sequential_quantization_attribute_encoder.a +SEQUENTIAL_QUANTIZATION_ATTRIBUTE_ENCODER_OBJS := \ + compression/attributes/sequential_quantization_attribute_encoder.o +SEQUENTIAL_QUANTIZATION_ATTRIBUTE_DECODER_A := \ + sequential_quantization_attribute_decoder.a +SEQUENTIAL_QUANTIZATION_ATTRIBUTE_DECODER_OBJS := \ + compression/attributes/sequential_quantization_attribute_decoder.o +KD_TREE_ATTRIBUTES_ENCODER_A := kd_tree_attributes_encoder.a +KD_TREE_ATTRIBUTES_ENCODER_OBJS := \ + compression/attributes/kd_tree_attributes_encoder.o +KD_TREE_ATTRIBUTES_DECODER_A := kd_tree_attributes_decoder.a +KD_TREE_ATTRIBUTES_DECODER_OBJS := \ + compression/attributes/kd_tree_attributes_decoder.o + +SEQUENTIAL_NORMAL_ATTRIBUTE_ENCODER_A := \ + sequential_normal_attribute_encoder.a +SEQUENTIAL_NORMAL_ATTRIBUTE_ENCODER_OBJS := \ + compression/attributes/sequential_normal_attribute_encoder.o +SEQUENTIAL_NORMAL_ATTRIBUTE_DECODER_A := \ + sequential_normal_attribute_decoder.a +SEQUENTIAL_NORMAL_ATTRIBUTE_DECODER_OBJS := \ + compression/attributes/sequential_normal_attribute_decoder.o + +SEQUENTIAL_ATTRIBUTE_ENCODERS_CONTROLLER_A := \ + sequential_attribute_encoders_controller.a +SEQUENTIAL_ATTRIBUTE_ENCODERS_CONTROLLER_OBJS := \ + compression/attributes/sequential_attribute_encoders_controller.o +SEQUENTIAL_ATTRIBUTE_DECODERS_CONTROLLER_A := \ + sequential_attribute_decoders_controller.a +SEQUENTIAL_ATTRIBUTE_DECODERS_CONTROLLER_OBJS := \ + compression/attributes/sequential_attribute_decoders_controller.o +PREDICTION_SCHEME_ENCODER_FACTORY_A := \ + prediction_scheme_encoder_factory.a +PREDICTION_SCHEME_ENCODER_FACTORY_OBJS := \ + compression/attributes/prediction_schemes/prediction_scheme_encoder_factory.o + +POINT_CLOUD_SEQUENTIAL_ENCODER_A := point_cloud_sequential_encoder.a +POINT_CLOUD_SEQUENTIAL_ENCODER_OBJS := \ + compression/point_cloud/point_cloud_sequential_encoder.o +POINT_CLOUD_SEQUENTIAL_DECODER_A := point_cloud_sequential_decoder.a +POINT_CLOUD_SEQUENTIAL_DECODER_OBJS := \ + compression/point_cloud/point_cloud_sequential_decoder.o +POINT_CLOUD_KD_TREE_ENCODER_A := point_cloud_kd_tree_encoder.a +POINT_CLOUD_KD_TREE_ENCODER_OBJS := \ + compression/point_cloud/point_cloud_kd_tree_encoder.o +POINT_CLOUD_KD_TREE_DECODER_A := point_cloud_kd_tree_decoder.a +POINT_CLOUD_KD_TREE_DECODER_OBJS := \ + compression/point_cloud/point_cloud_kd_tree_decoder.o +MESH_SEQUENTIAL_ENCODER_A := mesh_sequential_encoder.a +MESH_SEQUENTIAL_ENCODER_OBJS := compression/mesh/mesh_sequential_encoder.o +MESH_SEQUENTIAL_DECODER_A := mesh_sequential_decoder.a +MESH_SEQUENTIAL_DECODER_OBJS := compression/mesh/mesh_sequential_decoder.o + +MESH_EDGEBREAKER_ENCODER_A := mesh_edgebreaker_encoder.a +MESH_EDGEBREAKER_ENCODER_OBJS := compression/mesh/mesh_edgebreaker_encoder.o +MESH_EDGEBREAKER_ENCODER_OBJS += \ + compression/mesh/mesh_edgebreaker_encoder_impl.o +MESH_EDGEBREAKER_DECODER_A := mesh_edgebreaker_encoder.a +MESH_EDGEBREAKER_DECODER_OBJS := compression/mesh/mesh_edgebreaker_decoder.o +MESH_EDGEBREAKER_DECODER_OBJS += \ + compression/mesh/mesh_edgebreaker_decoder_impl.o +ENCODE_A := encode.a +ENCODE_OBJS := compression/encode.o +ENCODE_A := expert_encode.a +EXPERT_ENCODE_OBJS := compression/expert_encode.o +DECODE_A := decode.a +DECODE_OBJS := compression/decode.o + +OBJ_DECODER_A := libobj_decoder.a +OBJ_DECODER_OBJS := io/obj_decoder.o + +PLY_DECODER_A := libply_decoder.a +PLY_DECODER_OBJS := core/hash_utils.o io/ply_decoder.o + +PLY_ENCODER_A := libply_encoder.a +PLY_ENCODER_OBJS := io/ply_encoder.o + +MESH_IO_A := libmesh_io.a +MESH_IO_OBJS := io/mesh_io.o + +MESH_ATTRIBUTE_CORNER_TABLE_A := libmesh_attribute_corner_table.a +MESH_ATTRIBUTE_CORNER_TABLE_OBJS := mesh/mesh_attribute_corner_table.o + +MESH_MISC_A := libmesh_misc.a +MESH_MISC_OBJS := mesh/mesh_misc_functions.o + +FLOAT_POINTS_TREE_DECODER_A := \ + libfloat_points_tree_decoder.a +FLOAT_POINTS_TREE_DECODER_OBJS := \ + compression/point_cloud/algorithms/float_points_tree_decoder.o + +FLOAT_POINTS_TREE_ENCODER_A := \ + libfloat_points_tree_encoder.a +FLOAT_POINTS_TREE_ENCODER_OBJS := \ + compression/point_cloud/algorithms/float_points_tree_encoder.o + +DYNAMIC_INTEGER_POINTS_KD_TREE_DECODER_A := \ + libdynamic_integer_points_kd_tree_decoder.a +DYNAMIC_INTEGER_POINTS_KD_TREE_DECODER_OBJS := \ + compression/point_cloud/algorithms/dynamic_integer_points_kd_tree_decoder.o + +DYNAMIC_INTEGER_POINTS_KD_TREE_ENCODER_A := \ + libdynamic_integer_points_kd_tree_encoder.a +DYNAMIC_INTEGER_POINTS_KD_TREE_ENCODER_OBJS := \ + compression/point_cloud/algorithms/dynamic_integer_points_kd_tree_encoder.o + +CORNER_TABLE_OBJSA := $(addprefix $(OBJDIR)/,$(CORNER_TABLE_OBJS:.o=_a.o)) +SHANNON_ENTROPY_OBJSA := $(addprefix $(OBJDIR)/,$(SHANNON_ENTROPY_OBJS:.o=_a.o)) +SYMBOL_CODING_OBJSA := $(addprefix $(OBJDIR)/,$(SYMBOL_CODING_OBJS:.o=_a.o)) +DIRECT_BIT_DECODER_OBJSA := \ + $(addprefix $(OBJDIR)/,$(DIRECT_BIT_DECODER_OBJS:.o=_a.o)) +DIRECT_BIT_ENCODER_OBJSA := \ + $(addprefix $(OBJDIR)/,$(DIRECT_BIT_ENCODER_OBJS:.o=_a.o)) +DECODER_BUFFER_OBJSA := $(addprefix $(OBJDIR)/,$(DECODER_BUFFER_OBJS:.o=_a.o)) +DATA_BUFFER_OBJSA := $(addprefix $(OBJDIR)/,$(DATA_BUFFER_OBJS:.o=_a.o)) +DRACO_TYPES_OBJSA := $(addprefix $(OBJDIR)/,$(DRACO_TYPES_OBJS:.o=_a.o)) + +METADATA_OBJSA := \ + $(addprefix $(OBJDIR)/,$(METADATA_OBJS:.o=_a.o)) +GEOMETRY_METADATA_OBJSA := \ + $(addprefix $(OBJDIR)/,$(GEOMETRY_METADATA_OBJS:.o=_a.o)) +METADATA_ENCODER_OBJSA := \ + $(addprefix $(OBJDIR)/,$(METADATA_ENCODER_OBJS:.o=_a.o)) +METADATA_DECODER_OBJSA := \ + $(addprefix $(OBJDIR)/,$(METADATA_DECODER_OBJS:.o=_a.o)) + +GEOMETRY_ATTRIBUTE_OBJSA := \ + $(addprefix $(OBJDIR)/,$(GEOMETRY_ATTRIBUTE_OBJS:.o=_a.o)) +POINT_ATTRIBUTE_OBJSA := $(addprefix $(OBJDIR)/,$(POINT_ATTRIBUTE_OBJS:.o=_a.o)) +ATTRIBUTE_OCTAHEDRON_TRANSFORM_OBJSA := $(addprefix $(OBJDIR)/,$(ATTRIBUTE_OCTAHEDRON_TRANSFORM_OBJS:.o=_a.o)) +ATTRIBUTE_QUANTIZATION_TRANSFORM_OBJSA := $(addprefix $(OBJDIR)/,$(ATTRIBUTE_QUANTIZATION_TRANSFORM_OBJS:.o=_a.o)) +ATTRIBUTE_TRANSFORM_OBJSA := $(addprefix $(OBJDIR)/,$(ATTRIBUTE_TRANSFORM_OBJS:.o=_a.o)) +POINT_CLOUD_OBJSA := $(addprefix $(OBJDIR)/,$(POINT_CLOUD_OBJS:.o=_a.o)) +MESH_OBJSA := $(addprefix $(OBJDIR)/,$(MESH_OBJS:.o=_a.o)) +OPTIONS_OBJSA := $(addprefix $(OBJDIR)/,$(OPTIONS_OBJS:.o=_a.o)) +POINT_CLOUD_ENCODER_BASE_OBJSA := \ + $(addprefix $(OBJDIR)/,$(POINT_CLOUD_ENCODER_BASE_OBJS:.o=_a.o)) +POINT_CLOUD_DECODER_BASE_OBJSA := \ + $(addprefix $(OBJDIR)/,$(POINT_CLOUD_DECODER_BASE_OBJS:.o=_a.o)) + +MESH_ENCODER_BASE_OBJSA := \ + $(addprefix $(OBJDIR)/,$(MESH_ENCODER_BASE_OBJS:.o=_a.o)) +MESH_DECODER_BASE_OBJSA := \ + $(addprefix $(OBJDIR)/,$(MESH_DECODER_BASE_OBJS:.o=_a.o)) +SEQUENTIAL_ATTRIBUTE_ENCODER_OBJSA := \ + $(addprefix $(OBJDIR)/,$(SEQUENTIAL_ATTRIBUTE_ENCODER_OBJS:.o=_a.o)) +SEQUENTIAL_ATTRIBUTE_DECODER_OBJSA := \ + $(addprefix $(OBJDIR)/,$(SEQUENTIAL_ATTRIBUTE_DECODER_OBJS:.o=_a.o)) +SEQUENTIAL_INTEGER_ATTRIBUTE_ENCODER_OBJSA := \ + $(addprefix $(OBJDIR)/,$(SEQUENTIAL_INTEGER_ATTRIBUTE_ENCODER_OBJS:.o=_a.o)) +PREDICTION_SCHEME_ENCODER_FACTORY_OBJSA := \ + $(addprefix $(OBJDIR)/,$(PREDICTION_SCHEME_ENCODER_FACTORY_OBJS:.o=_a.o)) +SEQUENTIAL_INTEGER_ATTRIBUTE_DECODER_OBJSA := \ + $(addprefix $(OBJDIR)/,$(SEQUENTIAL_INTEGER_ATTRIBUTE_DECODER_OBJS:.o=_a.o)) +SEQUENTIAL_QUANTIZATION_ATTRIBUTE_ENCODER_OBJSA := \ + $(addprefix $(OBJDIR)/, \ + $(SEQUENTIAL_QUANTIZATION_ATTRIBUTE_ENCODER_OBJS:.o=_a.o)) +SEQUENTIAL_QUANTIZATION_ATTRIBUTE_DECODER_OBJSA := \ + $(addprefix $(OBJDIR)/, \ + $(SEQUENTIAL_QUANTIZATION_ATTRIBUTE_DECODER_OBJS:.o=_a.o)) +KD_TREE_ATTRIBUTES_ENCODER_OBJSA := \ + $(addprefix $(OBJDIR)/, $(KD_TREE_ATTRIBUTES_ENCODER_OBJS:.o=_a.o)) +KD_TREE_ATTRIBUTES_DECODER_OBJSA := \ + $(addprefix $(OBJDIR)/, $(KD_TREE_ATTRIBUTES_DECODER_OBJS:.o=_a.o)) + +SEQUENTIAL_NORMAL_ATTRIBUTE_ENCODER_OBJSA := \ + $(addprefix $(OBJDIR)/, \ + $(SEQUENTIAL_NORMAL_ATTRIBUTE_ENCODER_OBJS:.o=_a.o)) +SEQUENTIAL_NORMAL_ATTRIBUTE_DECODER_OBJSA := \ + $(addprefix $(OBJDIR)/, \ + $(SEQUENTIAL_NORMAL_ATTRIBUTE_DECODER_OBJS:.o=_a.o)) + +SEQUENTIAL_ATTRIBUTE_ENCODERS_CONTROLLER_OBJSA := \ + $(addprefix $(OBJDIR)/, \ + $(SEQUENTIAL_ATTRIBUTE_ENCODERS_CONTROLLER_OBJS:.o=_a.o)) +SEQUENTIAL_ATTRIBUTE_DECODERS_CONTROLLER_OBJSA := \ + $(addprefix $(OBJDIR)/, \ + $(SEQUENTIAL_ATTRIBUTE_DECODERS_CONTROLLER_OBJS:.o=_a.o)) +POINT_CLOUD_SEQUENTIAL_ENCODER_OBJSA := \ + $(addprefix $(OBJDIR)/,$(POINT_CLOUD_SEQUENTIAL_ENCODER_OBJS:.o=_a.o)) +POINT_CLOUD_SEQUENTIAL_DECODER_OBJSA := \ + $(addprefix $(OBJDIR)/,$(POINT_CLOUD_SEQUENTIAL_DECODER_OBJS:.o=_a.o)) +POINT_CLOUD_KD_TREE_ENCODER_OBJSA := \ + $(addprefix $(OBJDIR)/,$(POINT_CLOUD_KD_TREE_ENCODER_OBJS:.o=_a.o)) +POINT_CLOUD_KD_TREE_DECODER_OBJSA := \ + $(addprefix $(OBJDIR)/,$(POINT_CLOUD_KD_TREE_DECODER_OBJS:.o=_a.o)) +MESH_SEQUENTIAL_ENCODER_OBJSA := \ + $(addprefix $(OBJDIR)/,$(MESH_SEQUENTIAL_ENCODER_OBJS:.o=_a.o)) +MESH_SEQUENTIAL_DECODER_OBJSA := \ + $(addprefix $(OBJDIR)/,$(MESH_SEQUENTIAL_DECODER_OBJS:.o=_a.o)) +MESH_EDGEBREAKER_ENCODER_OBJSA := \ + $(addprefix $(OBJDIR)/,$(MESH_EDGEBREAKER_ENCODER_OBJS:.o=_a.o)) +MESH_EDGEBREAKER_DECODER_OBJSA := \ + $(addprefix $(OBJDIR)/,$(MESH_EDGEBREAKER_DECODER_OBJS:.o=_a.o)) +ENCODE_OBJSA := $(addprefix $(OBJDIR)/,$(ENCODE_OBJS:.o=_a.o)) +EXPERT_ENCODE_OBJSA := $(addprefix $(OBJDIR)/,$(EXPERT_ENCODE_OBJS:.o=_a.o)) +DECODE_OBJSA := $(addprefix $(OBJDIR)/,$(DECODE_OBJS:.o=_a.o)) + +MESH_MISC_OBJSA := $(addprefix $(OBJDIR)/,$(MESH_MISC_OBJS:.o=_a.o)) +MESH_ATTRIBUTE_CORNER_TABLE_OBJSA := \ + $(addprefix $(OBJDIR)/,$(MESH_ATTRIBUTE_CORNER_TABLE_OBJS:.o=_a.o)) + +QUANTIZATION_UTILS_OBJSA := \ + $(addprefix $(OBJDIR)/,$(QUANTIZATION_UTILS_OBJS:.o=_a.o)) +CYCLE_TIMER_OBJSA := $(addprefix $(OBJDIR)/,$(CYCLE_TIMER_OBJS:.o=_a.o)) + +ENCODER_BUFFER_OBJSA := $(addprefix $(OBJDIR)/,$(ENCODER_BUFFER_OBJS:.o=_a.o)) +RANS_BIT_DECODER_OBJSA := \ + $(addprefix $(OBJDIR)/,$(RANS_BIT_DECODER_OBJS:.o=_a.o)) +RANS_BIT_ENCODER_OBJSA := \ + $(addprefix $(OBJDIR)/,$(RANS_BIT_ENCODER_OBJS:.o=_a.o)) +ADAPTIVE_RANS_BIT_DECODER_OBJSA := \ + $(addprefix $(OBJDIR)/,$(ADAPTIVE_RANS_BIT_DECODER_OBJS:.o=_a.o)) +ADAPTIVE_RANS_BIT_ENCODER_OBJSA := \ + $(addprefix $(OBJDIR)/,$(ADAPTIVE_RANS_BIT_ENCODER_OBJS:.o=_a.o)) +OBJ_DECODER_OBJSA := $(addprefix $(OBJDIR)/,$(OBJ_DECODER_OBJS:.o=_a.o)) +MESH_IO_OBJSA := $(addprefix $(OBJDIR)/,$(MESH_IO_OBJS:.o=_a.o)) +PLY_ENCODER_OBJSA := $(addprefix $(OBJDIR)/,$(PLY_ENCODER_OBJS:.o=_a.o)) +PLY_DECODER_OBJSA := $(addprefix $(OBJDIR)/,$(PLY_DECODER_OBJS:.o=_a.o)) + +FLOAT_POINTS_TREE_DECODER_OBJSA := \ + $(addprefix $(OBJDIR)/,$(FLOAT_POINTS_TREE_DECODER_OBJS:.o=_a.o)) +FLOAT_POINTS_TREE_ENCODER_OBJSA := \ + $(addprefix $(OBJDIR)/,$(FLOAT_POINTS_TREE_ENCODER_OBJS:.o=_a.o)) +DYNAMIC_INTEGER_POINTS_KD_TREE_DECODER_OBJSA := \ + $(addprefix $(OBJDIR)/,$(DYNAMIC_INTEGER_POINTS_KD_TREE_DECODER_OBJS:.o=_a.o)) +DYNAMIC_INTEGER_POINTS_KD_TREE_ENCODER_OBJSA := \ + $(addprefix $(OBJDIR)/,$(DYNAMIC_INTEGER_POINTS_KD_TREE_ENCODER_OBJS:.o=_a.o)) + +# Core objs +DRACO_CORE_OBJSA := $(DRACO_TYPES_OBJSA) +DRACO_CORE_OBJSA += $(DIRECT_BIT_DECODER_OBJSA) +DRACO_CORE_OBJSA += $(DIRECT_BIT_ENCODER_OBJSA) +DRACO_CORE_OBJSA += $(RANS_BIT_DECODER_OBJSA) +DRACO_CORE_OBJSA += $(RANS_BIT_ENCODER_OBJSA) +DRACO_CORE_OBJSA += $(ADAPTIVE_RANS_BIT_DECODER_OBJSA) +DRACO_CORE_OBJSA += $(ADAPTIVE_RANS_BIT_ENCODER_OBJSA) + +# Shared objs needed for both encoder and decoder +DRACO_SHARED_OBJSA := $(CORNER_TABLE_OBJSA) $(SYMBOL_CODING_OBJSA) +DRACO_SHARED_OBJSA += $(SHANNON_ENTROPY_OBJSA) +DRACO_SHARED_OBJSA += $(DATA_BUFFER_OBJSA) $(DRACO_CORE_OBJSA) +DRACO_SHARED_OBJSA += $(GEOMETRY_ATTRIBUTE_OBJSA) +DRACO_SHARED_OBJSA += $(POINT_ATTRIBUTE_OBJSA) +DRACO_SHARED_OBJSA += $(ATTRIBUTE_OCTAHEDRON_TRANSFORM_OBJSA) +DRACO_SHARED_OBJSA += $(ATTRIBUTE_QUANTIZATION_TRANSFORM_OBJSA) +DRACO_SHARED_OBJSA += $(ATTRIBUTE_TRANSFORM_OBJSA) +DRACO_SHARED_OBJSA += $(POINT_CLOUD_OBJSA) +DRACO_SHARED_OBJSA += $(MESH_OBJSA) +DRACO_SHARED_OBJSA += $(MESH_MISC_OBJSA) $(MESH_ATTRIBUTE_CORNER_TABLE_OBJSA) +DRACO_SHARED_OBJSA += $(METADATA_OBJSA) +DRACO_SHARED_OBJSA += $(GEOMETRY_METADATA_OBJSA) +DRACO_SHARED_OBJSA += $(CYCLE_TIMER_OBJSA) +DRACO_SHARED_OBJSA += $(RANS_BIT_DECODER_OBJSA) +DRACO_SHARED_OBJSA += $(RANS_BIT_ENCODER_OBJSA) +DRACO_SHARED_OBJSA += $(QUANTIZATION_UTILS_OBJSA) + +# Encoder specific objs +DRACO_ENCODER_OBJSA := $(OPTIONS_OBJSA) +DRACO_ENCODER_OBJSA += $(POINT_CLOUD_ENCODER_BASE_OBJSA) +DRACO_ENCODER_OBJSA += $(MESH_ENCODER_BASE_OBJSA) +DRACO_ENCODER_OBJSA += $(METADATA_ENCODER_OBJSA) +DRACO_ENCODER_OBJSA += $(SEQUENTIAL_ATTRIBUTE_ENCODER_OBJSA) +DRACO_ENCODER_OBJSA += $(SEQUENTIAL_INTEGER_ATTRIBUTE_ENCODER_OBJSA) +DRACO_ENCODER_OBJSA += $(PREDICTION_SCHEME_ENCODER_FACTORY_OBJSA) +DRACO_ENCODER_OBJSA += $(SEQUENTIAL_QUANTIZATION_ATTRIBUTE_ENCODER_OBJSA) +DRACO_ENCODER_OBJSA += $(SEQUENTIAL_NORMAL_ATTRIBUTE_ENCODER_OBJSA) +DRACO_ENCODER_OBJSA += $(SEQUENTIAL_ATTRIBUTE_ENCODERS_CONTROLLER_OBJSA) +DRACO_ENCODER_OBJSA += $(POINT_CLOUD_SEQUENTIAL_ENCODER_OBJSA) +DRACO_ENCODER_OBJSA += $(POINT_CLOUD_KD_TREE_ENCODER_OBJSA) +DRACO_ENCODER_OBJSA += $(KD_TREE_ATTRIBUTES_ENCODER_OBJSA) +DRACO_ENCODER_OBJSA += $(FLOAT_POINTS_TREE_ENCODER_OBJSA) +DRACO_ENCODER_OBJSA += $(DYNAMIC_INTEGER_POINTS_KD_TREE_ENCODER_OBJSA) +DRACO_ENCODER_OBJSA += $(MESH_SEQUENTIAL_ENCODER_OBJSA) +DRACO_ENCODER_OBJSA += $(MESH_EDGEBREAKER_ENCODER_OBJSA) +DRACO_ENCODER_OBJSA += $(ENCODE_OBJSA) +DRACO_ENCODER_OBJSA += $(EXPERT_ENCODE_OBJSA) +DRACO_ENCODER_OBJSA += $(ENCODER_BUFFER_OBJSA) + +# Decoder specific objs +DRACO_DECODER_OBJSA := $(DECODER_BUFFER_OBJSA) +DRACO_DECODER_OBJSA += $(POINT_CLOUD_DECODER_BASE_OBJSA) +DRACO_DECODER_OBJSA += $(MESH_DECODER_BASE_OBJSA) +DRACO_DECODER_OBJSA += $(METADATA_DECODER_OBJSA) +DRACO_DECODER_OBJSA += $(SEQUENTIAL_ATTRIBUTE_DECODER_OBJSA) +DRACO_DECODER_OBJSA += $(SEQUENTIAL_INTEGER_ATTRIBUTE_DECODER_OBJSA) +DRACO_DECODER_OBJSA += $(SEQUENTIAL_QUANTIZATION_ATTRIBUTE_DECODER_OBJSA) +DRACO_DECODER_OBJSA += $(SEQUENTIAL_NORMAL_ATTRIBUTE_DECODER_OBJSA) +DRACO_DECODER_OBJSA += $(SEQUENTIAL_ATTRIBUTE_DECODERS_CONTROLLER_OBJSA) +DRACO_DECODER_OBJSA += $(POINT_CLOUD_SEQUENTIAL_DECODER_OBJSA) +DRACO_DECODER_OBJSA += $(POINT_CLOUD_KD_TREE_DECODER_OBJSA) +DRACO_DECODER_OBJSA += $(KD_TREE_ATTRIBUTES_DECODER_OBJSA) +DRACO_DECODER_OBJSA += $(FLOAT_POINTS_TREE_DECODER_OBJSA) +DRACO_DECODER_OBJSA += $(DYNAMIC_INTEGER_POINTS_KD_TREE_DECODER_OBJSA) +DRACO_DECODER_OBJSA += $(MESH_SEQUENTIAL_DECODER_OBJSA) +DRACO_DECODER_OBJSA += $(MESH_EDGEBREAKER_DECODER_OBJSA) +DRACO_DECODER_OBJSA += $(DECODE_OBJSA) + +# I/O objs +DRACO_IO_OBJSA := $(OBJ_DECODER_OBJSA) $(MESH_IO_OBJSA) +DRACO_IO_OBJSA += $(PLY_ENCODER_OBJSA) $(PLY_DECODER_OBJSA) + +# All objs +DRACO_OBJSA := $(DRACO_SHARED_OBJSA) +DRACO_OBJSA += $(DRACO_ENCODER_OBJSA) +DRACO_OBJSA += $(DRACO_DECODER_OBJSA) +DRACO_OBJSA += $(DRACO_IO_OBJSA) + +OBJSA := $(DRACO_OBJSA) + +LIBS := $(LIBDIR)/libmesh_io.a +LIBS += $(LIBDIR)/libply_decoder.a +LIBS += $(LIBDIR)/libply_encoder.a +LIBS += $(LIBDIR)/libobj_decoder.a +LIBS += $(LIBDIR)/libgeometry_attribute.a +LIBS += $(LIBDIR)/libpoint_cloud.a +LIBS += $(LIBDIR)/libpoint_attribute.a +LIBS += $(LIBDIR)/libattribute_octahedron_transform.a +LIBS += $(LIBDIR)/libattribute_quantization_transform.a +LIBS += $(LIBDIR)/libattribute_transform.a +LIBS += $(LIBDIR)/liboptions.a +LIBS += $(LIBDIR)/libencode.a +LIBS += $(LIBDIR)/libexpert_encode.a +LIBS += $(LIBDIR)/libdecode.a +LIBS += $(LIBDIR)/libmesh.a +LIBS += $(LIBDIR)/libmesh_decoder_base.a +LIBS += $(LIBDIR)/libpoint_cloud_sequential_decoder.a +LIBS += $(LIBDIR)/libpoint_cloud_kd_tree_decoder.a +LIBS += $(LIBDIR)/libkd_tree_attributes_decoder.a +LIBS += $(LIBDIR)/libmesh_sequential_decoder.a +LIBS += $(LIBDIR)/libmesh_edgebreaker_decoder.a +LIBS += $(LIBDIR)/libsequential_attribute_decoders_controller.a +LIBS += $(LIBDIR)/libpoint_cloud_decoder_base.a +LIBS += $(LIBDIR)/libsequential_integer_attribute_decoder.a +LIBS += $(LIBDIR)/libsequential_attribute_decoder.a +LIBS += $(LIBDIR)/libsequential_quantization_attribute_decoder.a +LIBS += $(LIBDIR)/libsequential_normal_attribute_decoder.a +LIBS += $(LIBDIR)/libquantization_utils.a +LIBS += $(LIBDIR)/libmesh_encoder_base.a +LIBS += $(LIBDIR)/libpoint_cloud_sequential_encoder.a +LIBS += $(LIBDIR)/libpoint_cloud_kd_tree_encoder.a +LIBS += $(LIBDIR)/libkd_tree_attributes_encoder.a +LIBS += $(LIBDIR)/libmesh_sequential_encoder.a +LIBS += $(LIBDIR)/libmesh_edgebreaker_encoder.a +LIBS += $(LIBDIR)/libsequential_attribute_encoder.a +LIBS += $(LIBDIR)/libsequential_attribute_encoders_controller.a +LIBS += $(LIBDIR)/libpoint_cloud_encoder_base.a +LIBS += $(LIBDIR)/libsequential_integer_attribute_encoder.a +LIBS += $(LIBDIR)/libsequential_quantization_attribute_encoder.a +LIBS += $(LIBDIR)/libsequential_normal_attribute_encoder.a +LIBS += $(LIBDIR)/libcorner_table.a +LIBS += $(LIBDIR)/libmesh_attribute_corner_table.a +LIBS += $(LIBDIR)/libmesh_misc.a +LIBS += $(LIBDIR)/libshannon_entropy.a +LIBS += $(LIBDIR)/libsymbol_coding.a +LIBS += $(LIBDIR)/librans_bit_decoder.a +LIBS += $(LIBDIR)/librans_bit_encoder.a +LIBS += $(LIBDIR)/libdata_buffer.a +LIBS += $(LIBDIR)/libdraco_types.a +LIBS += $(LIBDIR)/libmetadata.a +LIBS += $(LIBDIR)/libgeometry_metadata.a +LIBS += $(LIBDIR)/libmetadata_encoder.a +LIBS += $(LIBDIR)/libmetadata_decoder.a +LIBS += $(LIBDIR)/libdecoder_buffer.a +LIBS += $(LIBDIR)/libencoder_buffer.a +LIBS += $(LIBDIR)/libcycle_timer.a + +POINTS_LIBS := $(LIBDIR)/libfloat_points_tree_decoder.a +POINTS_LIBS += $(LIBDIR)/libfloat_points_tree_encoder.a +POINTS_LIBS += $(LIBDIR)/libdynamic_integer_points_kd_tree_decoder.a +POINTS_LIBS += $(LIBDIR)/libdynamic_integer_points_kd_tree_encoder.a +POINTS_LIBS += $(LIBDIR)/libdirect_bit_decoder.a +POINTS_LIBS += $(LIBDIR)/libdirect_bit_encoder.a +POINTS_LIBS += $(LIBDIR)/libadaptive_rans_bit_decoder.a +POINTS_LIBS += $(LIBDIR)/libadaptive_rans_bit_encoder.a + +DEPS := $(DRACO_OBJSA:_a.o=.d) +CLEAN := $(DEPS) $(OBJSA) $(LIBS) $(POINTS_LIBS) +CLEAN += glue_encoder.cpp glue_encoder.js draco_encoder.js WebIDLGrammar.pkl parser.out +CLEAN += $(OBJDIR)/javascript/emscripten/draco_encoder_glue_wrapper.o $(OBJDIR)/javascript/emscripten/draco_encoder_glue_wrapper.d +CLEAN += $(OBJDIR)/javascript/emscripten/encoder_webidl_wrapper.o $(OBJDIR)/javascript/emscripten/encoder_webidl_wrapper.d + +all: jslib + +jslib: build_glue draco_encoder + +build_glue: + python $(BINDER) $(IDL) glue_encoder + +draco_encoder: $(OBJDIR)/javascript/emscripten/draco_encoder_glue_wrapper.o $(OBJDIR)/javascript/emscripten/encoder_webidl_wrapper.o $(DRACO_CORE_OBJSA) $(DRACO_SHARED_OBJSA) $(DRACO_ENCODER_OBJSA) + $(CXX) $(ALL_C_OPTS) $^ --pre-js $(SRCDIR)/javascript/emscripten/prepareCallbacks.js --pre-js $(SRCDIR)/javascript/emscripten/version.js --post-js glue_encoder.js --post-js $(SRCDIR)/javascript/emscripten/finalize.js -o $@.js + +$(LIBDIR)/libcorner_table.a: $(CORNER_TABLE_OBJSA) + $(AR) rcs $@ $^ + +$(LIBDIR)/libshannon_entropy.a: $(SHANNON_ENTROPY_OBJSA) + $(AR) rcs $@ $^ + +$(LIBDIR)/libsymbol_coding.a: $(SYMBOL_CODING_OBJSA) + $(AR) rcs $@ $^ + +$(LIBDIR)/libdirect_bit_decoder.a: $(DIRECT_BIT_DECODER_OBJSA) + $(AR) rcs $@ $^ + +$(LIBDIR)/libdirect_bit_encoder.a: $(DIRECT_BIT_ENCODER_OBJSA) + $(AR) rcs $@ $^ + +$(LIBDIR)/libdecoder_buffer.a: $(DECODER_BUFFER_OBJSA) + $(AR) rcs $@ $^ + +$(LIBDIR)/libdata_buffer.a: $(DATA_BUFFER_OBJSA) + $(AR) rcs $@ $^ + +$(LIBDIR)/libdraco_types.a: $(DRACO_TYPES_OBJSA) + $(AR) rcs $@ $^ + +$(LIBDIR)/libmetadata.a: $(MEATDATA_OBJSA) + $(AR) rcs $@ $^ +$(LIBDIR)/libgeometry_metadata.a: $(GEOMETRY_MEATDATA_OBJSA) + $(AR) rcs $@ $^ +$(LIBDIR)/libmetadata_encoder.a: $(MEATDATA_ENCODER_OBJSA) + $(AR) rcs $@ $^ +$(LIBDIR)/libmetadata_decoder.a: $(MEATDATA_DECODER_OBJSA) + $(AR) rcs $@ $^ + +$(LIBDIR)/libgeometry_attribute.a: $(GEOMETRY_ATTRIBUTE_OBJSA) + $(AR) rcs $@ $^ +$(LIBDIR)/libpoint_attribute.a: $(POINT_ATTRIBUTE_OBJSA) + $(AR) rcs $@ $^ +$(LIBDIR)/libattribute_octahedron_transform.a: $(ATTRIBUTE_OCTAHEDRON_TRANSFORM_OBJSA) + $(AR) rcs $@ $^ +$(LIBDIR)/libattribute_quantization_transform.a: $(ATTRIBUTE_QUANTIZATION_TRANSFORM_OBJSA) + $(AR) rcs $@ $^ +$(LIBDIR)/libattribute_transform.a: $(ATTRIBUTE_TRANSFORM_OBJSA) + $(AR) rcs $@ $^ +$(LIBDIR)/libpoint_cloud.a: $(POINT_CLOUD_OBJSA) + $(AR) rcs $@ $^ +$(LIBDIR)/libmesh.a: $(MESH_OBJSA) + $(AR) rcs $@ $^ +$(LIBDIR)/liboptions.a: $(OPTIONS_OBJSA) + $(AR) rcs $@ $^ +$(LIBDIR)/libpoint_cloud_encoder_base.a: $(POINT_CLOUD_ENCODER_BASE_OBJSA) + $(AR) rcs $@ $^ +$(LIBDIR)/libpoint_cloud_decoder_base.a: $(POINT_CLOUD_DECODER_BASE_OBJSA) + $(AR) rcs $@ $^ + +$(LIBDIR)/libmesh_encoder_base.a: $(MESH_ENCODER_BASE_OBJSA) + $(AR) rcs $@ $^ +$(LIBDIR)/libmesh_decoder_base.a: $(MESH_DECODER_BASE_OBJSA) + $(AR) rcs $@ $^ +$(LIBDIR)/libsequential_attribute_encoder.a: \ + $(SEQUENTIAL_ATTRIBUTE_ENCODER_OBJSA) + $(AR) rcs $@ $^ +$(LIBDIR)/libsequential_attribute_decoder.a: \ + $(SEQUENTIAL_ATTRIBUTE_DECODER_OBJSA) + $(AR) rcs $@ $^ +$(LIBDIR)/libsequential_integer_attribute_encoder.a: \ + $(SEQUENTIAL_INTEGER_ATTRIBUTE_ENCODER_OBJSA) + $(AR) rcs $@ $^ +$(LIBDIR)/libpredicion_scheme_encoder_factory.a: \ + $(PREDICTION_SCHEME_ENCODER_FACTORY_OBJSA) + $(AR) rcs $@ $^ +$(LIBDIR)/libsequential_integer_attribute_decoder.a: \ + $(SEQUENTIAL_INTEGER_ATTRIBUTE_DECODER_OBJSA) + $(AR) rcs $@ $^ +$(LIBDIR)/libsequential_quantization_attribute_encoder.a: \ + $(SEQUENTIAL_QUANTIZATION_ATTRIBUTE_ENCODER_OBJSA) + $(AR) rcs $@ $^ +$(LIBDIR)/libsequential_quantization_attribute_decoder.a: \ + $(SEQUENTIAL_QUANTIZATION_ATTRIBUTE_DECODER_OBJSA) + $(AR) rcs $@ $^ +$(LIBDIR)/libkd_tree_attributes_encoder.a: $(KD_TREE_ATTRIBUTES_ENCODER_OBJSA) + $(AR) rcs $@ $^ +$(LIBDIR)/libkd_tree_attributes_decoder.a: $(KD_TREE_ATTRIBUTES_DECODER_OBJSA) + $(AR) rcs $@ $^ +$(LIBDIR)/libsequential_normal_attribute_encoder.a: \ + $(SEQUENTIAL_NORMAL_ATTRIBUTE_ENCODER_OBJSA) + $(AR) rcs $@ $^ +$(LIBDIR)/libsequential_normal_attribute_decoder.a: \ + $(SEQUENTIAL_NORMAL_ATTRIBUTE_DECODER_OBJSA) + $(AR) rcs $@ $^ +$(LIBDIR)/libsequential_attribute_encoders_controller.a: \ + $(SEQUENTIAL_ATTRIBUTE_ENCODERS_CONTROLLER_OBJSA) + $(AR) rcs $@ $^ +$(LIBDIR)/libsequential_attribute_decoders_controller.a: \ + $(SEQUENTIAL_ATTRIBUTE_DECODERS_CONTROLLER_OBJSA) + $(AR) rcs $@ $^ +$(LIBDIR)/libpoint_cloud_sequential_encoder.a: \ + $(POINT_CLOUD_SEQUENTIAL_ENCODER_OBJSA) + $(AR) rcs $@ $^ +$(LIBDIR)/libpoint_cloud_sequential_decoder.a: \ + $(POINT_CLOUD_SEQUENTIAL_DECODER_OBJSA) + $(AR) rcs $@ $^ +$(LIBDIR)/libpoint_cloud_kd_tree_encoder.a: \ + $(POINT_CLOUD_KD_TREE_ENCODER_OBJSA) + $(AR) rcs $@ $^ +$(LIBDIR)/libpoint_cloud_kd_tree_decoder.a: \ + $(POINT_CLOUD_KD_TREE_DECODER_OBJSA) + $(AR) rcs $@ $^ +$(LIBDIR)/libmesh_sequential_encoder.a: $(MESH_SEQUENTIAL_ENCODER_OBJSA) + $(AR) rcs $@ $^ +$(LIBDIR)/libmesh_sequential_decoder.a: $(MESH_SEQUENTIAL_DECODER_OBJSA) + $(AR) rcs $@ $^ +$(LIBDIR)/libmesh_edgebreaker_encoder.a: $(MESH_EDGEBREAKER_ENCODER_OBJSA) + $(AR) rcs $@ $^ +$(LIBDIR)/libmesh_edgebreaker_decoder.a: $(MESH_EDGEBREAKER_DECODER_OBJSA) + $(AR) rcs $@ $^ +$(LIBDIR)/libencode.a: $(ENCODE_OBJSA) + $(AR) rcs $@ $^ +$(LIBDIR)/libencode.a: $(EXPERT_ENCODE_OBJSA) + $(AR) rcs $@ $^ +$(LIBDIR)/libdecode.a: $(DECODE_OBJSA) + $(AR) rcs $@ $^ + +$(LIBDIR)/libmesh_misc.a: $(MESH_MISC_OBJSA) + $(AR) rcs $@ $^ + +$(LIBDIR)/libmesh_attribute_corner_table.a: $(MESH_ATTRIBUTE_CORNER_TABLE_OBJSA) + $(AR) rcs $@ $^ + +$(LIBDIR)/libencoder_buffer.a: $(ENCODER_BUFFER_OBJSA) + $(AR) rcs $@ $^ + +$(LIBDIR)/libquantization_utils.a: $(QUANTIZATION_UTILS_OBJSA) + $(AR) rcs $@ $^ + +$(LIBDIR)/libcycle_timer.a: $(CYCLE_TIMER_OBJSA) + $(AR) rcs $@ $^ + +$(LIBDIR)/librans_bit_decoder.a: $(RANS_BIT_DECODER_OBJSA) + $(AR) rcs $@ $^ + +$(LIBDIR)/librans_bit_encoder.a: $(RANS_BIT_ENCODER_OBJSA) + $(AR) rcs $@ $^ + +$(LIBDIR)/libadaptive_rans_bit_decoder.a: $(ADAPTIVE_RANS_BIT_DECODER_OBJSA) + $(AR) rcs $@ $^ + +$(LIBDIR)/libadaptive_rans_bit_encoder.a: $(ADAPTIVE_RANS_BIT_ENCODER_OBJSA) + $(AR) rcs $@ $^ + +$(LIBDIR)/libobj_decoder.a: $(OBJ_DECODER_OBJSA) + $(AR) rcs $@ $^ + +$(LIBDIR)/libmesh_io.a: $(MESH_IO_OBJSA) + $(AR) rcs $@ $^ + +$(LIBDIR)/libply_encoder.a: $(PLY_ENCODER_OBJSA) + $(AR) rcs $@ $^ + +$(LIBDIR)/libply_decoder.a: $(PLY_DECODER_OBJSA) + $(AR) rcs $@ $^ + +$(LIBDIR)/libfloat_points_tree_decoder.a: $(FLOAT_POINTS_TREE_DECODER_OBJSA) + $(AR) rcs $@ $^ + +$(LIBDIR)/libfloat_points_tree_encoder.a: $(FLOAT_POINTS_TREE_ENCODER_OBJSA) + $(AR) rcs $@ $^ + +$(LIBDIR)/libdynamic_integer_points_kd_tree_decoder.a: \ + $(DYNAMIC_INTEGER_POINTS_KD_TREE_DECODER_OBJSA) + $(AR) rcs $@ $^ + +$(LIBDIR)/libdynamic_integer_points_kd_tree_encoder.a: \ + $(DYNAMIC_INTEGER_POINTS_KD_TREE_ENCODER_OBJSA) + $(AR) rcs $@ $^ + +$(OBJDIR)/%.o: $(SRCDIR)/%.cc + @mkdir -p $(@D) + $(CXX) $(ALL_CXXFLAGS) $< -o $@ + +$(OBJDIR)/%_a.o: $(SRCDIR)/%.cc + @mkdir -p $(@D) + $(CXX) $(ALL_CXXFLAGS) $< -o $@ + +clean: + $(RM) $(CLEAN) diff --git a/README.md b/README.md index 22214892..a2a7eb0b 100644 --- a/README.md +++ b/README.md @@ -5,17 +5,24 @@ News ======= -### Version 0.10.0 released -This release brings improved mesh compression and faster decoding in browser: -* On average 10% better compression of triangular meshes (up to 20% for purely - spatial meshes without any extra attributes). -* Up to 2X faster decoding in browsers with our newly provided WebAssembly - decoder. - * Supported in most modern browsers including Chrome, Firefox, and Edge. - * Decoder size is about 50% smaller compared to the javascript version. -* New version is backward compatible with 0.9.x encoders. - * Note that 0.10.0 is not forward compatible, i.e., files encoded with 0.10.0 - cannot be decoded with 0.9.x decoders. +### Version 1.0.0 release +The latest version of Draco brings many new enhancements to improve the +development experience: +* Stable API release +* Support for npm Javascript package management +* Javascript based encoder +* Generalized metadata for meshes and point clouds + * Now supporting material properties included along with encoded file +* Improved compression rates: + * 15% better compression on smaller models + * 40% better compression of normals +* Performance improvements (~10% faster encoding, decoding) +* Reduced GPU memory usage: + * Option to store decoded quantized attributes + * Support for triangle strip connectivity on decoded meshes +* iOS 9 Javascript decoder +* Bitstream specification now available + Description @@ -55,8 +62,11 @@ _**Contents**_ * [Encoding Point Clouds](#encoding-point-clouds) * [Decoding Tool](#decoding-tool) * [C++ Decoder API](#c-decoder-api) + * [Javascript Encoder API](#javascript-encoder-api) * [Javascript Decoder API](#javascript-decoder-api) * [Javascript Decoder Performance](#javascript-decoder-performance) + * [Metadata API](#metadata-api) + * [NPM Package](#npm-package) * [three.js Renderer Example](#threejs-renderer-example) * [Support](#support) * [License](#license) @@ -173,12 +183,12 @@ To run the tests just execute `draco_tests` from your toolchain's build output directory. -Javascript Decoder +Javascript Encoder/Decoder ------------------ -The javascript decoder can be built using the existing cmake build file by -passing the path the Emscripten's cmake toolchain file at cmake generation time -in the CMAKE_TOOLCHAIN_FILE variable. +The javascript encoder and decoder can be built using the existing cmake build +file by passing the path the Emscripten's cmake toolchain file at cmake +generation time in the CMAKE_TOOLCHAIN_FILE variable. In addition, the EMSCRIPTEN environment variable must be set to the local path of the parent directory of the Emscripten tools directory. @@ -190,7 +200,7 @@ $ export EMSCRIPTEN=/path/to/emscripten/tools/parent # it should be the subdir: cmake/Modules/Platform/Emscripten.cmake $ cmake path/to/draco -DCMAKE_TOOLCHAIN_FILE=/path/to/Emscripten.cmake -# Build the Javascript decoder. +# Build the Javascript encoder and decoder. $ make ~~~~~ @@ -313,7 +323,7 @@ will quantize the positions to 14 bits (default for the position coordinates). In general, the more you quantize your attributes the better compression rate you will get. It is up to your project to decide how much deviation it will -tolerate. In general, most projects can set quantizations values of about `14` +tolerate. In general, most projects can set quantization values of about `14` without any noticeable difference in quality. The compression level (`-cl`) parameter turns on/off different compression @@ -380,38 +390,101 @@ if (geom_type == draco::TRIANGULAR_MESH) { Please see `mesh/mesh.h` for the full Mesh class interface and `point_cloud/point_cloud.h` for the full `PointCloud` class interface. + +Javascript Encoder API +---------------------- +The Javascript encoder is located in `javascript/draco_encoder.js`. The encoder +API can be used to compress mesh and point cloud. In order to use the encoder, +you need to first create an instance of `DracoEncoderModule`. Then use this +instance to create `MeshBuilder` and `Encoder` objects. `MeshBuilder` is used +to construct a mesh from geometry data that could be later compressed by +`Encoder`. First create a mesh object using `new encoderModule.Mesh()` . Then, +use `AddFacesToMesh()` to add indices to the mesh and use +`AddFloatAttributeToMesh()` to add attribute data to the mesh, e.g. position, +normal, color and texture coordinates. After a mesh is constructed, you could +then use `EncodeMeshToDracoBuffer()` to compress the mesh. For example: + +~~~~~ js +const mesh = { + indices : new Uint32Array(indices), + vertices : new Float32Array(vertices), + normals : new Float32Array(normals) +}; + +const encoderModule = DracoEncoderModule(); +const encoder = new encoderModule.Encoder(); +const meshBuilder = new encoderModule.MeshBuilder(); +const dracoMesh = new encoderModule.Mesh(); + +const numFaces = mesh.indices.length / 3; +const numPoints = mesh.vertices.length; +meshBuilder.AddFacesToMesh(dracoMesh, numFaces, mesh.indices); + +meshBuilder.AddFloatAttributeToMesh(dracoMesh, encoderModule.POSITION, + numPoints, 3, mesh.vertices); +if (mesh.hasOwnProperty('normals')) { + meshBuilder.AddFloatAttributeToMesh( + dracoMesh, encoderModule.NORMAL, numPoints, 3, mesh.normals); +} +if (mesh.hasOwnProperty('colors')) { + meshBuilder.AddFloatAttributeToMesh( + dracoMesh, encoderModule.COLOR, numPoints, 3, mesh.colors); +} +if (mesh.hasOwnProperty('texcoords')) { + meshBuilder.AddFloatAttributeToMesh( + dracoMesh, encoderModule.TEX_COORD, numPoints, 3, mesh.texcoords); +} + +const encodedData = new encoderModule.DracoInt8Array(); +if (method === "edgebreaker") { + encoder.SetEncodingMethod(encoderModule.MESH_EDGEBREAKER_ENCODING); +} else if (method === "sequential") { + encoder.SetEncodingMethod(encoderModule.MESH_SEQUENTIAL_ENCODING); +} + +// Use default encoding setting. +const encodedLen = encoder.EncodeMeshToDracoBuffer(dracoMesh, + encodedData); +encoderModule.destroy(dracoMesh); +encoderModule.destroy(encoder); +encoderModule.destroy(meshBuilder); + +~~~~~ +Please see `javascript/emscripten/draco_web_encoder.idl` for the full API. + Javascript Decoder API ---------------------- The Javascript decoder is located in `javascript/draco_decoder.js`. The Javascript decoder can decode mesh and point cloud. In order to use the -decoder, you must first create an instance of `DracoModule`. The instance is -then used to create `DecoderBuffer` and `WebIDLWrapper` objects. Set +decoder, you must first create an instance of `DracoDecoderModule`. The +instance is then used to create `DecoderBuffer` and `Decoder` objects. Set the encoded data in the `DecoderBuffer`. Then call `GetEncodedGeometryType()` to identify the type of geometry, e.g. mesh or point cloud. Then call either -`DecodeMeshFromBuffer()` or `DecodePointCloudFromBuffer()`, which will return +`DecodeBufferToMesh()` or `DecodeBufferToPointCloud()`, which will return a Mesh object or a point cloud. For example: ~~~~~ js -const dracoDecoder = DracoModule(); -const buffer = new dracoDecoder.DecoderBuffer(); -buffer.Init(encFileData, encFileData.length); +const decoderModule = DracoDecoderModule(); +const buffer = new decoderModule.DecoderBuffer(); +buffer.Init(encodedFileData, encodedFileData.length); + +const decoder = new decoderModule.Decoder(); +const geometryType = decoder.GetEncodedGeometryType(buffer); -const wrapper = new dracoDecoder.WebIDLWrapper(); -const geometryType = wrapper.GetEncodedGeometryType(buffer); let outputGeometry; if (geometryType == dracoDecoder.TRIANGULAR_MESH) { - outputGeometry = wrapper.DecodeMeshFromBuffer(buffer); + outputGeometry = decoder.DecodeBufferToMesh(buffer); } else { - outputGeometry = wrapper.DecodePointCloudFromBuffer(buffer); + outputGeometry = decoder.DecodeBufferToPointCloud(buffer); } dracoDecoder.destroy(outputGeometry); -dracoDecoder.destroy(wrapper); +dracoDecoder.destroy(decoder); dracoDecoder.destroy(buffer); ~~~~~ -Please see `javascript/emscripten/draco_web.idl` for the full API. +Please see `javascript/emscripten/draco_web_decoder.idl` for the full API. Javascript Decoder Performance ------------------------------ @@ -422,6 +495,64 @@ Pre-allocating the memory sees about a 2x decoder speed improvement. If you know all of your project's memory requirements, you can turn on static memory by changing `Makefile.emcc` and running `make -f Makefile.emcc`. +Metadata API +------------ +Starting from v1.0, Draco provides metadata functionality for encoding data +other than geometry. It could be used to encode any custom data along with the +geometry. For example, we can enable metadata functionality to encode the name +of attributes, name of sub-objects and customized information. +For one mesh and point cloud, it can have one top-level geometry metadata class. +The top-level metadata then can have hierarchical metadata. Other than that, +the top-level metadata can have metadata for each attribute which is called +attribute metadata. The attribute metadata should be initialized with the +correspondent attribute id within the mesh. The metadata API is provided both +in C++ and Javascript. +For example, to add metadata in C++: + +~~~~~ cpp +draco::PointCloud pc; +std::unique_ptr metadata = + std::unique_ptr(new draco::GeometryMetadata()); + +draco::GeometryAttribute pos_att; +pos_att.Init(draco::GeometryAttribute::POSITION, nullptr, 3, + draco::DT_FLOAT32, false, 12, 0); +const uint32_t pos_att_id = pc.AddAttribute(pos_att, false, 0); + +std::unique_ptr pos_metadata = + std::unique_ptr( + new draco::AttributeMetadata(pos_att_id)); +pos_metadata->AddEntryString("name", "position"); +metadata->AddAttributeMetadata(std::move(pos_metadata)); +pc.AddMetadata(std::move(metadata)); + +// Directly add attribute metadata to geometry. +draco::GeometryAttribute material_att; +material_att.Init(draco::GeometryAttribute::GENERIC, nullptr, 3, + draco::DT_FLOAT32, false, 12, 0); +const uint32_t material_att_id = pc.AddAttribute(material_att, false, 0); +std::unique_ptr material_metadata = + std::unique_ptr( + new draco::AttributeMetadata(material_att_id)); +material_metadata->AddEntryString("name", "material"); +pc.AddAttributeMetadata(std::move(material_metadata)); +~~~~~ + +To read metadata from a geometry in C++: + +~~~~~ cpp +const draco::GeometryMetadata *pc_metadata = pc.GetMetadata(); +const draco::AttributeMetadata *pos_metadata = + pc_metadata->GetAttributeMetadata(pos_att_id); +~~~~~ + +Please see `src/draco/metadata` and `src/draco/point_cloud` for the full API. + +NPM Package +----------- +Draco NPM NodeJS package is located in `javascript/npm/draco3d`. Please see the +doc in the folder for detailed usage. + three.js Renderer Example ------------------------- @@ -464,5 +595,3 @@ References [CONTRIBUTING]: https://raw.githubusercontent.com/google/draco/master/CONTRIBUTING Bunny model from Stanford's graphic department - -Awesome Draco 3D logo by [**ocupop**](http://ocupop.com/). diff --git a/cmake/compiler_flags.cmake b/cmake/compiler_flags.cmake index a613ade0..c6c40acd 100644 --- a/cmake/compiler_flags.cmake +++ b/cmake/compiler_flags.cmake @@ -1,4 +1,5 @@ -cmake_minimum_required(VERSION 3.2) +if (NOT DRACO_CMAKE_COMPILER_FLAGS_CMAKE_) +set(DRACO_CMAKE_COMPILER_FLAGS_CMAKE_ 1) include(CheckCCompilerFlag) include(CheckCXXCompilerFlag) @@ -59,27 +60,87 @@ function (add_compiler_flag_if_supported flag) add_cxx_flag_if_supported(${flag}) endfunction () +# Checks C compiler for support of $c_flag and terminates generation when +# support is not present. +function (require_c_flag c_flag update_c_flags) + unset(C_FLAG_FOUND CACHE) + string(FIND "${CMAKE_C_FLAGS}" "${c_flag}" C_FLAG_FOUND) + + if (${C_FLAG_FOUND} EQUAL -1) + unset(HAVE_C_FLAG CACHE) + message("Checking C compiler flag support for: " ${c_flag}) + check_c_compiler_flag("${c_flag}" HAVE_C_FLAG) + if (NOT HAVE_C_FLAG) + message(FATAL_ERROR + "${PROJECT_NAME} requires support for C flag: ${c_flag}.") + endif () + if (update_c_flags) + set(CMAKE_C_FLAGS "${c_flag} ${CMAKE_C_FLAGS}" CACHE STRING "" FORCE) + endif () + endif () +endfunction () + # Checks CXX compiler for support of $cxx_flag and terminates generation when # support is not present. -function (require_cxx_flag cxx_flag) +function (require_cxx_flag cxx_flag update_cxx_flags) unset(CXX_FLAG_FOUND CACHE) string(FIND "${CMAKE_CXX_FLAGS}" "${cxx_flag}" CXX_FLAG_FOUND) if (${CXX_FLAG_FOUND} EQUAL -1) - unset(DRACO_HAVE_CXX_FLAG CACHE) + unset(HAVE_CXX_FLAG CACHE) message("Checking CXX compiler flag support for: " ${cxx_flag}) - check_cxx_compiler_flag("${cxx_flag}" DRACO_HAVE_CXX_FLAG) - if (NOT DRACO_HAVE_CXX_FLAG) - message(FATAL_ERROR "Draco requires support for CXX flag: ${cxx_flag}.") + check_cxx_compiler_flag("${cxx_flag}" HAVE_CXX_FLAG) + if (NOT HAVE_CXX_FLAG) + message(FATAL_ERROR + "${PROJECT_NAME} requires support for CXX flag: ${cxx_flag}.") + endif () + if (update_cxx_flags) + set(CMAKE_CXX_FLAGS "${cxx_flag} ${CMAKE_CXX_FLAGS}" CACHE STRING "" + FORCE) endif () - set(CMAKE_CXX_FLAGS "${cxx_flag} ${CMAKE_CXX_FLAGS}" CACHE STRING "" FORCE) endif () endfunction () -# Checks only non-MSVC targets for support of $cxx_flag. -function (require_cxx_flag_nomsvc cxx_flag) +# Checks for support of $flag by both the C and CXX compilers. Terminates +# generation when support is not present in both compilers. +function (require_flag flag update_cmake_flags) + require_c_flag(${flag} ${update_cmake_flags}) + require_cxx_flag(${flag} ${update_cmake_flags}) +endfunction () + +# Checks only non-MSVC targets for support of $c_flag and terminates generation +# when support is not present. +function (require_c_flag_nomsvc c_flag update_c_flags) if (NOT MSVC) - require_cxx_flag(${cxx_flag}) + require_c_flag(${c_flag} ${update_c_flags}) + endif () +endfunction () + +# Checks only non-MSVC targets for support of $cxx_flag and terminates +# generation when support is not present. +function (require_cxx_flag_nomsvc cxx_flag update_cxx_flags) + if (NOT MSVC) + require_cxx_flag(${cxx_flag} ${update_cxx_flags}) + endif () +endfunction () + +# Checks only non-MSVC targets for support of $flag by both the C and CXX +# compilers. Terminates generation when support is not present in both +# compilers. +function (require_flag_nomsvc flag update_cmake_flags) + require_c_flag_nomsvc(${flag} ${update_cmake_flags}) + require_cxx_flag_nomsvc(${flag} ${update_cmake_flags}) +endfunction () + +# Adds $preproc_def to C compiler command line (as -D$preproc_def) if not +# already present. +function (add_c_preproc_definition preproc_def) + unset(PREPROC_DEF_FOUND CACHE) + string(FIND "${CMAKE_C_FLAGS}" "${preproc_def}" PREPROC_DEF_FOUND) + + if (${PREPROC_DEF_FOUND} EQUAL -1) + set(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} -D${preproc_def}" CACHE STRING "" + FORCE) endif () endfunction () @@ -94,3 +155,81 @@ function (add_cxx_preproc_definition preproc_def) FORCE) endif () endfunction () + +# Adds $preproc_def to C and CXX compiler command line (as -D$preproc_def) if +# not already present. +function (add_preproc_definition preproc_def) + add_c_preproc_definition(${preproc_def}) + add_cxx_preproc_definition(${preproc_def}) +endfunction () + +# Adds $flag to assembler command line. +function (append_as_flag flag) + unset(AS_FLAG_FOUND CACHE) + string(FIND "${DRACO_AS_FLAGS}" "${flag}" AS_FLAG_FOUND) + + if (${AS_FLAG_FOUND} EQUAL -1) + set(DRACO_AS_FLAGS "${DRACO_AS_FLAGS} ${flag}" CACHE STRING "" FORCE) + endif () +endfunction () + +# Adds $flag to the C compiler command line. +function (append_c_flag flag) + unset(C_FLAG_FOUND CACHE) + string(FIND "${CMAKE_C_FLAGS}" "${flag}" C_FLAG_FOUND) + + if (${C_FLAG_FOUND} EQUAL -1) + set(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} ${flag}" CACHE STRING "" FORCE) + endif () +endfunction () + +# Adds $flag to the CXX compiler command line. +function (append_cxx_flag flag) + unset(CXX_FLAG_FOUND CACHE) + string(FIND "${CMAKE_CXX_FLAGS}" "${flag}" CXX_FLAG_FOUND) + + if (${CXX_FLAG_FOUND} EQUAL -1) + set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} ${flag}" CACHE STRING "" FORCE) + endif () +endfunction () + +# Adds $flag to the C and CXX compiler command lines. +function (append_compiler_flag flag) + append_c_flag(${flag}) + append_cxx_flag(${flag}) +endfunction () + +# Adds $flag to the executable linker command line. +function (append_exe_linker_flag flag) + unset(LINKER_FLAG_FOUND CACHE) + string(FIND "${CMAKE_EXE_LINKER_FLAGS}" "${flag}" LINKER_FLAG_FOUND) + + if (${LINKER_FLAG_FOUND} EQUAL -1) + set(CMAKE_EXE_LINKER_FLAGS "${CMAKE_EXE_LINKER_FLAGS} ${flag}" CACHE STRING + "" FORCE) + endif () +endfunction () + +# Adds $flag to the link flags for $target. +function (append_link_flag_to_target target flags) + unset(target_link_flags) + get_target_property(target_link_flags ${target} LINK_FLAGS) + + if (target_link_flags) + unset(link_flag_found) + string(FIND "${target_link_flags}" "${flags}" link_flag_found) + + if (NOT ${link_flag_found} EQUAL -1) + return() + endif () + + set(target_link_flags "${target_link_flags} ${flags}") + else () + set(target_link_flags "${flags}") + endif () + + set_target_properties(${target} PROPERTIES LINK_FLAGS ${target_link_flags}) +endfunction () + +endif () # DRACO_CMAKE_COMPILER_FLAGS_CMAKE_ + diff --git a/cmake/draco_version.h.cmake b/cmake/draco_version.h.cmake index 83b65bfc..506423ed 100644 --- a/cmake/draco_version.h.cmake +++ b/cmake/draco_version.h.cmake @@ -6,7 +6,7 @@ #ifndef DRACO_DRACO_VERSION_H_ #define DRACO_DRACO_VERSION_H_ -#include "core/draco_version.h" +#include "draco/core/draco_version.h" // Returns git hash of Draco git repository. const char *draco_git_hash(); diff --git a/compression/attributes/attributes_decoder.h b/compression/attributes/attributes_decoder.h deleted file mode 100644 index ca0d695b..00000000 --- a/compression/attributes/attributes_decoder.h +++ /dev/null @@ -1,61 +0,0 @@ -// Copyright 2016 The Draco Authors. -// -// Licensed under the Apache License, Version 2.0 (the "License"); -// you may not use this file except in compliance with the License. -// You may obtain a copy of the License at -// -// http://www.apache.org/licenses/LICENSE-2.0 -// -// Unless required by applicable law or agreed to in writing, software -// distributed under the License is distributed on an "AS IS" BASIS, -// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -// See the License for the specific language governing permissions and -// limitations under the License. -// -#ifndef DRACO_COMPRESSION_ATTRIBUTES_ATTRIBUTES_DECODER_H_ -#define DRACO_COMPRESSION_ATTRIBUTES_ATTRIBUTES_DECODER_H_ - -#include - -#include "core/decoder_buffer.h" -#include "point_cloud/point_cloud.h" - -namespace draco { - -class PointCloudDecoder; - -// Base class for decoding one or more attributes that were encoded with a -// matching AttributesEncoder. This base class provides only the basic interface -// that is used by the PointCloudDecoder. The actual encoding must be -// implemented in derived classes using the DecodeAttributes() method. -class AttributesDecoder { - public: - AttributesDecoder(); - virtual ~AttributesDecoder() = default; - - // Called after all attribute decoders are created. It can be used to perform - // any custom initialization. - virtual bool Initialize(PointCloudDecoder *decoder, PointCloud *pc); - - // Decodes any attribute decoder specific data from the |in_buffer|. - virtual bool DecodeAttributesDecoderData(DecoderBuffer *in_buffer); - - // Decode attribute data from the source buffer. Needs to be implmented by the - // derived classes. - virtual bool DecodeAttributes(DecoderBuffer *in_buffer) = 0; - - int32_t GetAttributeId(int i) const { return point_attribute_ids_[i]; } - int32_t num_attributes() const { return point_attribute_ids_.size(); } - PointCloudDecoder *decoder() const { return point_cloud_decoder_; } - - private: - // List of attribute ids that need to be decoded with this decoder. - std::vector point_attribute_ids_; - - PointCloudDecoder *point_cloud_decoder_; - PointCloud *point_cloud_; -}; - -} // namespace draco - -#endif // DRACO_COMPRESSION_ATTRIBUTES_ATTRIBUTES_DECODER_H_ diff --git a/compression/attributes/normal_compression_utils.h b/compression/attributes/normal_compression_utils.h deleted file mode 100644 index 4774cc8b..00000000 --- a/compression/attributes/normal_compression_utils.h +++ /dev/null @@ -1,198 +0,0 @@ -// Copyright 2016 The Draco Authors. -// -// Licensed under the Apache License, Version 2.0 (the "License"); -// you may not use this file except in compliance with the License. -// You may obtain a copy of the License at -// -// http://www.apache.org/licenses/LICENSE-2.0 -// -// Unless required by applicable law or agreed to in writing, software -// distributed under the License is distributed on an "AS IS" BASIS, -// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -// See the License for the specific language governing permissions and -// limitations under the License. -// -// Utilities for converting unit vectors to octaherdal coordinates and back. -// For more details about octahedral coordinates, see for example Cigolle -// et al.'14 “A Survey of Efficient Representations for Independent Unit -// Vectors”. - -#ifndef DRACO_COMPRESSION_ATTRIBUTES_NORMAL_COMPRESSION_UTILS_H_ -#define DRACO_COMPRESSION_ATTRIBUTES_NORMAL_COMPRESSION_UTILS_H_ - -#include - -#include - -namespace draco { - -// Converts a unit vector into octahedral coordinates (0-1 range). -template -void UnitVectorToOctahedralCoords(const T *vector, T *out_s, T *out_t) { - const T abs_sum = fabs(vector[0]) + fabs(vector[1]) + fabs(vector[2]); - T scaled_vec[3]; - if (abs_sum > 1e-6) { - // Scale needed to project the vector to the surface of an octahedron. - const T scale = 1.0 / abs_sum; - scaled_vec[0] = vector[0] * scale; - scaled_vec[1] = vector[1] * scale; - scaled_vec[2] = vector[2] * scale; - } else { - scaled_vec[0] = 1; - scaled_vec[1] = 0; - scaled_vec[2] = 0; - } - - if (scaled_vec[0] >= 0.0) { - // Right hemisphere. - *out_s = (scaled_vec[1] + 1.0) / 2.0; - *out_t = (scaled_vec[2] + 1.0) / 2.0; - } else { - // Left hemisphere. - if (scaled_vec[1] < 0.0) { - *out_s = 0.5 * fabs(scaled_vec[2]); - } else { - *out_s = 0.5 * (2.0 - fabs(scaled_vec[2])); - } - if (scaled_vec[2] < 0.0) { - *out_t = 0.5 * fabs(scaled_vec[1]); - } else { - *out_t = 0.5 * (2.0 - fabs(scaled_vec[1])); - } - } -} - -template -void UnitVectorToQuantizedOctahedralCoords(const T *vector, - T max_quantized_value, - int32_t *out_s, int32_t *out_t) { - // In order to be able to represent the center normal we reduce the range - // by one. - const T max_value = max_quantized_value - 1; - T ss, tt; - UnitVectorToOctahedralCoords(vector, &ss, &tt); - int32_t s = static_cast(floor(ss * max_value + 0.5)); - int32_t t = static_cast(floor(tt * max_value + 0.5)); - - const int32_t center_value = static_cast(max_value / 2); - - // Convert all edge points in the top left and bottom right quadrants to - // their corresponding position in the bottom left and top right quadrants. - // Convert all corner edge points to the top right corner. This is necessary - // for the inversion to occur correctly. - if ((s == 0 && t == 0) || (s == 0 && t == max_value) || - (s == max_value && t == 0)) { - s = static_cast(max_value); - t = static_cast(max_value); - } else if (s == 0 && t > center_value) { - t = center_value - (t - center_value); - } else if (s == max_value && t < center_value) { - t = center_value + (center_value - t); - } else if (t == max_value && s < center_value) { - s = center_value + (center_value - s); - } else if (t == 0 && s > center_value) { - s = center_value - (s - center_value); - } - - *out_s = s; - *out_t = t; -} - -template -void OctaherdalCoordsToUnitVector(T in_s, T in_t, T *out_vector) { - T s = in_s; - T t = in_t; - T spt = s + t; - T smt = s - t; - T x_sign = 1.0; - if (spt >= 0.5 && spt <= 1.5 && smt >= -0.5 && smt <= 0.5) { - // Right hemisphere. Don't do anything. - } else { - // Left hemisphere. - x_sign = -1.0; - if (spt <= 0.5) { - s = 0.5 - in_t; - t = 0.5 - in_s; - } else if (spt >= 1.5) { - s = 1.5 - in_t; - t = 1.5 - in_s; - } else if (smt <= -0.5) { - s = in_t - 0.5; - t = in_s + 0.5; - } else { - s = in_t + 0.5; - t = in_s - 0.5; - } - spt = s + t; - smt = s - t; - } - const T y = 2.0 * s - 1.0; - const T z = 2.0 * t - 1.0; - const T x = std::min(std::min(2.0 * spt - 1.0, 3.0 - 2.0 * spt), - std::min(2.0 * smt + 1.0, 1.0 - 2.0 * smt)) * - x_sign; - // Normalize the computed vector. - const T normSquared = x * x + y * y + z * z; - if (normSquared < 1e-6) { - out_vector[0] = 0; - out_vector[1] = 0; - out_vector[2] = 0; - } else { - const T d = 1.0 / sqrt(normSquared); - out_vector[0] = x * d; - out_vector[1] = y * d; - out_vector[2] = z * d; - } -} - -template -void QuantizedOctaherdalCoordsToUnitVector(int32_t in_s, int32_t in_t, - T max_quantized_value, - T *out_vector) { - // In order to be able to represent the center normal we reduce the range - // by one. Also note that we can not simply identify the lower left and the - // upper right edge of the tile, which forces us to use one value less. - max_quantized_value -= 1; - OctaherdalCoordsToUnitVector(in_s / max_quantized_value, - in_t / max_quantized_value, out_vector); -} - -template -bool IsInDiamond(const T &max_value_, const T &s, const T &t) { - return std::abs(static_cast(s)) + std::abs(static_cast(t)) <= - static_cast(max_value_); -} - -template -void InvertRepresentation(const T &max_value_, T *s, T *t) { - T sign_s = 0; - T sign_t = 0; - if (*s >= 0 && *t >= 0) { - sign_s = 1; - sign_t = 1; - } else if (*s <= 0 && *t <= 0) { - sign_s = -1; - sign_t = -1; - } else { - sign_s = (*s > 0) ? 1 : -1; - sign_t = (*t > 0) ? 1 : -1; - } - - const T corner_point_s = sign_s * max_value_; - const T corner_point_t = sign_t * max_value_; - *s = 2 * *s - corner_point_s; - *t = 2 * *t - corner_point_t; - if (sign_s * sign_t >= 0) { - T temp = *s; - *s = -*t; - *t = -temp; - } else { - std::swap(*s, *t); - } - *s = (*s + corner_point_s) / 2; - *t = (*t + corner_point_t) / 2; -} - -} // namespace draco - -#endif // DRACO_COMPRESSION_ATTRIBUTES_NORMAL_COMPRESSION_UTILS_H_ diff --git a/compression/attributes/prediction_schemes/mesh_prediction_scheme_multi_parallelogram.h b/compression/attributes/prediction_schemes/mesh_prediction_scheme_multi_parallelogram.h deleted file mode 100644 index 34ce4314..00000000 --- a/compression/attributes/prediction_schemes/mesh_prediction_scheme_multi_parallelogram.h +++ /dev/null @@ -1,192 +0,0 @@ -// Copyright 2016 The Draco Authors. -// -// Licensed under the Apache License, Version 2.0 (the "License"); -// you may not use this file except in compliance with the License. -// You may obtain a copy of the License at -// -// http://www.apache.org/licenses/LICENSE-2.0 -// -// Unless required by applicable law or agreed to in writing, software -// distributed under the License is distributed on an "AS IS" BASIS, -// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -// See the License for the specific language governing permissions and -// limitations under the License. -// -#ifndef DRACO_COMPRESSION_ATTRIBUTES_PREDICTION_SCHEMES_MESH_PREDICTION_SCHEME_MULTI_PARALLELOGRAM_H_ -#define DRACO_COMPRESSION_ATTRIBUTES_PREDICTION_SCHEMES_MESH_PREDICTION_SCHEME_MULTI_PARALLELOGRAM_H_ - -#include "compression/attributes/prediction_schemes/mesh_prediction_scheme.h" -#include "compression/attributes/prediction_schemes/mesh_prediction_scheme_parallelogram_shared.h" - -namespace draco { - -// Multi parallelogram prediction predicts attribute values using information -// from all opposite faces to the predicted vertex, compared to the standard -// prediction scheme, where only one opposite face is used (see -// prediction_scheme_parallelogram.h). This approach is generally slower than -// the standard parallelogram prediction, but it usually results in better -// prediction (5 - 20% based on the quantization level. Better gains can be -// achieved when more aggressive quantization is used). -// TODO(ostava): Rename. The new name should reflect the fact that we need mesh -// data. -template -class MeshPredictionSchemeMultiParallelogram - : public MeshPredictionScheme { - public: - using CorrType = typename PredictionScheme::CorrType; - using CornerTable = typename MeshDataT::CornerTable; - - explicit MeshPredictionSchemeMultiParallelogram( - const PointAttribute *attribute) - : MeshPredictionScheme(attribute) {} - MeshPredictionSchemeMultiParallelogram(const PointAttribute *attribute, - const TransformT &transform, - const MeshDataT &mesh_data) - : MeshPredictionScheme( - attribute, transform, mesh_data) {} - - bool Encode(const DataTypeT *in_data, CorrType *out_corr, int size, - int num_components, - const PointIndex *entry_to_point_id_map) override; - bool Decode(const CorrType *in_corr, DataTypeT *out_data, int size, - int num_components, - const PointIndex *entry_to_point_id_map) override; - PredictionSchemeMethod GetPredictionMethod() const override { - return MESH_PREDICTION_MULTI_PARALLELOGRAM; - } - - bool IsInitialized() const override { - return this->mesh_data().IsInitialized(); - } -}; - -template -bool MeshPredictionSchemeMultiParallelogram:: - Encode(const DataTypeT *in_data, CorrType *out_corr, int size, - int num_components, const PointIndex * /* entry_to_point_id_map */) { - this->transform().InitializeEncoding(in_data, size, num_components); - const CornerTable *const table = this->mesh_data().corner_table(); - const std::vector *const vertex_to_data_map = - this->mesh_data().vertex_to_data_map(); - - std::unique_ptr pred_vals(new DataTypeT[num_components]()); - std::unique_ptr parallelogram_pred_vals( - new DataTypeT[num_components]()); - - // We start processing from the end because this prediction uses data from - // previous entries that could be overwritten when an entry is processed. - for (int p = this->mesh_data().data_to_corner_map()->size() - 1; p > 0; --p) { - const CornerIndex start_corner_id = - this->mesh_data().data_to_corner_map()->at(p); - - // Go over all corners attached to the vertex and compute the predicted - // value from the parallelograms defined by their opposite faces. - CornerIndex corner_id(start_corner_id); - int num_parallelograms = 0; - for (int i = 0; i < num_components; ++i) { - pred_vals[i] = static_cast(0); - } - while (corner_id >= 0) { - if (ComputeParallelogramPrediction( - p, corner_id, table, *vertex_to_data_map, in_data, num_components, - parallelogram_pred_vals.get())) { - for (int c = 0; c < num_components; ++c) { - pred_vals[c] += parallelogram_pred_vals[c]; - } - ++num_parallelograms; - } - - // Proceed to the next corner attached to the vertex. - corner_id = table->SwingRight(corner_id); - if (corner_id == start_corner_id) { - corner_id = kInvalidCornerIndex; - } - } - const int dst_offset = p * num_components; - if (num_parallelograms == 0) { - // No parallelogram was valid. - // We use the last encoded point as a reference. - const int src_offset = (p - 1) * num_components; - this->transform().ComputeCorrection( - in_data + dst_offset, in_data + src_offset, out_corr, dst_offset); - } else { - // Compute the correction from the predicted value. - for (int c = 0; c < num_components; ++c) { - pred_vals[c] /= num_parallelograms; - } - this->transform().ComputeCorrection(in_data + dst_offset, pred_vals.get(), - out_corr, dst_offset); - } - } - // First element is always fixed because it cannot be predicted. - for (int i = 0; i < num_components; ++i) { - pred_vals[i] = static_cast(0); - } - this->transform().ComputeCorrection(in_data, pred_vals.get(), out_corr, 0); - return true; -} - -template -bool MeshPredictionSchemeMultiParallelogram:: - Decode(const CorrType *in_corr, DataTypeT *out_data, int /* size */, - int num_components, const PointIndex * /* entry_to_point_id_map */) { - this->transform().InitializeDecoding(num_components); - - std::unique_ptr pred_vals(new DataTypeT[num_components]()); - std::unique_ptr parallelogram_pred_vals( - new DataTypeT[num_components]()); - - this->transform().ComputeOriginalValue(pred_vals.get(), in_corr, out_data, 0); - - const CornerTable *const table = this->mesh_data().corner_table(); - const std::vector *const vertex_to_data_map = - this->mesh_data().vertex_to_data_map(); - - const int corner_map_size = this->mesh_data().data_to_corner_map()->size(); - for (int p = 1; p < corner_map_size; ++p) { - const CornerIndex start_corner_id = - this->mesh_data().data_to_corner_map()->at(p); - - CornerIndex corner_id(start_corner_id); - int num_parallelograms = 0; - for (int i = 0; i < num_components; ++i) { - pred_vals[i] = static_cast(0); - } - while (corner_id >= 0) { - if (ComputeParallelogramPrediction( - p, corner_id, table, *vertex_to_data_map, out_data, - num_components, parallelogram_pred_vals.get())) { - for (int c = 0; c < num_components; ++c) { - pred_vals[c] += parallelogram_pred_vals[c]; - } - ++num_parallelograms; - } - - corner_id = table->SwingRight(corner_id); - if (corner_id == start_corner_id) { - corner_id = kInvalidCornerIndex; - } - } - - const int dst_offset = p * num_components; - if (num_parallelograms == 0) { - // No parallelogram was valid. - // We use the last decoded point as a reference. - const int src_offset = (p - 1) * num_components; - this->transform().ComputeOriginalValue(out_data + src_offset, in_corr, - out_data + dst_offset, dst_offset); - } else { - // Compute the correction from the predicted value. - for (int c = 0; c < num_components; ++c) { - pred_vals[c] /= num_parallelograms; - } - this->transform().ComputeOriginalValue(pred_vals.get(), in_corr, - out_data + dst_offset, dst_offset); - } - } - return true; -} - -} // namespace draco - -#endif // DRACO_COMPRESSION_ATTRIBUTES_PREDICTION_SCHEMES_MESH_PREDICTION_SCHEME_MULTI_PARALLELOGRAM_H_ diff --git a/compression/attributes/prediction_schemes/mesh_prediction_scheme_parallelogram.h b/compression/attributes/prediction_schemes/mesh_prediction_scheme_parallelogram.h deleted file mode 100644 index 0437d07d..00000000 --- a/compression/attributes/prediction_schemes/mesh_prediction_scheme_parallelogram.h +++ /dev/null @@ -1,143 +0,0 @@ -// Copyright 2016 The Draco Authors. -// -// Licensed under the Apache License, Version 2.0 (the "License"); -// you may not use this file except in compliance with the License. -// You may obtain a copy of the License at -// -// http://www.apache.org/licenses/LICENSE-2.0 -// -// Unless required by applicable law or agreed to in writing, software -// distributed under the License is distributed on an "AS IS" BASIS, -// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -// See the License for the specific language governing permissions and -// limitations under the License. -// -#ifndef DRACO_COMPRESSION_ATTRIBUTES_PREDICTION_SCHEMES_MESH_PREDICTION_SCHEME_PARALLELOGRAM_H_ -#define DRACO_COMPRESSION_ATTRIBUTES_PREDICTION_SCHEMES_MESH_PREDICTION_SCHEME_PARALLELOGRAM_H_ - -#include "compression/attributes/prediction_schemes/mesh_prediction_scheme.h" -#include "compression/attributes/prediction_schemes/mesh_prediction_scheme_parallelogram_shared.h" - -namespace draco { - -// Parallelogram prediction predicts an attribute value V from three vertices -// on the opposite face to the predicted vertex. The values on the three -// vertices are used to construct a parallelogram V' = O - A - B, where O is the -// value on the opposite vertex, and A, B are values on the shared vertices: -// V -// / \ -// / \ -// / \ -// A-------B -// \ / -// \ / -// \ / -// O - -template -class MeshPredictionSchemeParallelogram - : public MeshPredictionScheme { - public: - using CorrType = typename PredictionScheme::CorrType; - using CornerTable = typename MeshDataT::CornerTable; - explicit MeshPredictionSchemeParallelogram(const PointAttribute *attribute) - : MeshPredictionScheme(attribute) {} - MeshPredictionSchemeParallelogram(const PointAttribute *attribute, - const TransformT &transform, - const MeshDataT &mesh_data) - : MeshPredictionScheme( - attribute, transform, mesh_data) {} - - bool Encode(const DataTypeT *in_data, CorrType *out_corr, int size, - int num_components, - const PointIndex *entry_to_point_id_map) override; - bool Decode(const CorrType *in_corr, DataTypeT *out_data, int size, - int num_components, - const PointIndex *entry_to_point_id_map) override; - PredictionSchemeMethod GetPredictionMethod() const override { - return MESH_PREDICTION_PARALLELOGRAM; - } - - bool IsInitialized() const override { - return this->mesh_data().IsInitialized(); - } -}; - -template -bool MeshPredictionSchemeParallelogram:: - Encode(const DataTypeT *in_data, CorrType *out_corr, int size, - int num_components, const PointIndex * /* entry_to_point_id_map */) { - this->transform().InitializeEncoding(in_data, size, num_components); - std::unique_ptr pred_vals(new DataTypeT[num_components]()); - - // We start processing from the end because this prediction uses data from - // previous entries that could be overwritten when an entry is processed. - const CornerTable *const table = this->mesh_data().corner_table(); - const std::vector *const vertex_to_data_map = - this->mesh_data().vertex_to_data_map(); - for (int p = this->mesh_data().data_to_corner_map()->size() - 1; p > 0; --p) { - const CornerIndex corner_id = this->mesh_data().data_to_corner_map()->at(p); - const int dst_offset = p * num_components; - if (!ComputeParallelogramPrediction(p, corner_id, table, - *vertex_to_data_map, in_data, - num_components, pred_vals.get())) { - // Parallelogram could not be computed, Possible because some of the - // vertices are not valid (not encoded yet). - // We use the last encoded point as a reference (delta coding). - const int src_offset = (p - 1) * num_components; - this->transform().ComputeCorrection( - in_data + dst_offset, in_data + src_offset, out_corr, dst_offset); - } else { - // Apply the parallelogram prediction. - this->transform().ComputeCorrection(in_data + dst_offset, pred_vals.get(), - out_corr, dst_offset); - } - } - // First element is always fixed because it cannot be predicted. - for (int i = 0; i < num_components; ++i) { - pred_vals[i] = static_cast(0); - } - this->transform().ComputeCorrection(in_data, pred_vals.get(), out_corr, 0); - return true; -} - -template -bool MeshPredictionSchemeParallelogram:: - Decode(const CorrType *in_corr, DataTypeT *out_data, int /* size */, - int num_components, const PointIndex * /* entry_to_point_id_map */) { - this->transform().InitializeDecoding(num_components); - - const CornerTable *const table = this->mesh_data().corner_table(); - const std::vector *const vertex_to_data_map = - this->mesh_data().vertex_to_data_map(); - - std::unique_ptr pred_vals(new DataTypeT[num_components]()); - - // Restore the first value. - this->transform().ComputeOriginalValue(pred_vals.get(), in_corr, out_data, 0); - - const int corner_map_size = this->mesh_data().data_to_corner_map()->size(); - for (int p = 1; p < corner_map_size; ++p) { - const CornerIndex corner_id = this->mesh_data().data_to_corner_map()->at(p); - const int dst_offset = p * num_components; - if (!ComputeParallelogramPrediction(p, corner_id, table, - *vertex_to_data_map, out_data, - num_components, pred_vals.get())) { - // Parallelogram could not be computed, Possible because some of the - // vertices are not valid (not encoded yet). - // We use the last encoded point as a reference (delta coding). - const int src_offset = (p - 1) * num_components; - this->transform().ComputeOriginalValue(out_data + src_offset, in_corr, - out_data + dst_offset, dst_offset); - } else { - // Apply the parallelogram prediction. - this->transform().ComputeOriginalValue(pred_vals.get(), in_corr, - out_data + dst_offset, dst_offset); - } - } - return true; -} - -} // namespace draco - -#endif // DRACO_COMPRESSION_ATTRIBUTES_PREDICTION_SCHEMES_MESH_PREDICTION_SCHEME_PARALLELOGRAM_H_ diff --git a/compression/attributes/prediction_schemes/prediction_scheme_decoder_factory.h b/compression/attributes/prediction_schemes/prediction_scheme_decoder_factory.h deleted file mode 100644 index 7b24b0e6..00000000 --- a/compression/attributes/prediction_schemes/prediction_scheme_decoder_factory.h +++ /dev/null @@ -1,65 +0,0 @@ -// Copyright 2016 The Draco Authors. -// -// Licensed under the Apache License, Version 2.0 (the "License"); -// you may not use this file except in compliance with the License. -// You may obtain a copy of the License at -// -// http://www.apache.org/licenses/LICENSE-2.0 -// -// Unless required by applicable law or agreed to in writing, software -// distributed under the License is distributed on an "AS IS" BASIS, -// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -// See the License for the specific language governing permissions and -// limitations under the License. -// -// Functions for creating prediction schemes for decoders using the provided -// prediction method id. - -#ifndef DRACO_COMPRESSION_ATTRIBUTES_PREDICTION_SCHEMES_PREDICTION_SCHEME_DECODER_FACTORY_H_ -#define DRACO_COMPRESSION_ATTRIBUTES_PREDICTION_SCHEMES_PREDICTION_SCHEME_DECODER_FACTORY_H_ - -#include "compression/attributes/prediction_schemes/prediction_scheme_factory.h" -#include "compression/mesh/mesh_decoder.h" - -namespace draco { - -// Creates a prediction scheme for a given decoder and given prediction method. -// The prediction schemes are automatically initialized with decoder specific -// data if needed. -template > -std::unique_ptr> -CreatePredictionSchemeForDecoder(PredictionSchemeMethod method, int att_id, - const PointCloudDecoder *decoder, - const TransformT &transform) { - const PointAttribute *const att = decoder->point_cloud()->attribute(att_id); - if (decoder->GetGeometryType() == TRIANGULAR_MESH) { - // Cast the decoder to mesh decoder. This is not necessarily safe if there - // is some other decoder decides to use TRIANGULAR_MESH as the return type, - // but unfortunately there is not nice work around for this without using - // RTTI (double dispatch and similar concepts will not work because of the - // template nature of the prediction schemes). - const MeshDecoder *const mesh_decoder = - static_cast(decoder); - auto ret = CreateMeshPredictionScheme( - mesh_decoder, method, att_id, transform, decoder->bitstream_version()); - if (ret) - return ret; - // Otherwise try to create another prediction scheme. - } - return CreatePredictionScheme(method, att, transform); -} - -// Create a prediction scheme using a default transform constructor. -template > -std::unique_ptr> -CreatePredictionSchemeForDecoder(PredictionSchemeMethod method, int att_id, - const PointCloudDecoder *decoder) { - return CreatePredictionSchemeForDecoder( - method, att_id, decoder, TransformT()); -} - -} // namespace draco - -#endif // DRACO_COMPRESSION_ATTRIBUTES_PREDICTION_SCHEMES_PREDICTION_SCHEME_DECODER_FACTORY_H_ diff --git a/compression/attributes/prediction_schemes/prediction_scheme_difference.h b/compression/attributes/prediction_schemes/prediction_scheme_difference.h deleted file mode 100644 index f98ffbf3..00000000 --- a/compression/attributes/prediction_schemes/prediction_scheme_difference.h +++ /dev/null @@ -1,86 +0,0 @@ -// Copyright 2016 The Draco Authors. -// -// Licensed under the Apache License, Version 2.0 (the "License"); -// you may not use this file except in compliance with the License. -// You may obtain a copy of the License at -// -// http://www.apache.org/licenses/LICENSE-2.0 -// -// Unless required by applicable law or agreed to in writing, software -// distributed under the License is distributed on an "AS IS" BASIS, -// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -// See the License for the specific language governing permissions and -// limitations under the License. -// -#ifndef DRACO_COMPRESSION_ATTRIBUTES_PREDICTION_SCHEMES_PREDICTION_SCHEME_DIFFERENCE_H_ -#define DRACO_COMPRESSION_ATTRIBUTES_PREDICTION_SCHEMES_PREDICTION_SCHEME_DIFFERENCE_H_ - -#include "compression/attributes/prediction_schemes/prediction_scheme.h" - -namespace draco { - -// Basic prediction scheme based on computing backward differences between -// stored attribute values (also known as delta-coding). Usually works better -// than the reference point prediction scheme, because nearby values are often -// encoded next to each other. -template > -class PredictionSchemeDifference - : public PredictionScheme { - public: - using CorrType = typename PredictionScheme::CorrType; - // Initialized the prediction scheme. - explicit PredictionSchemeDifference(const PointAttribute *attribute) - : PredictionScheme(attribute) {} - PredictionSchemeDifference(const PointAttribute *attribute, - const Transform &transform) - : PredictionScheme(attribute, transform) {} - - bool Encode(const DataTypeT *in_data, CorrType *out_corr, int size, - int num_components, - const PointIndex *entry_to_point_id_map) override; - bool Decode(const CorrType *in_corr, DataTypeT *out_data, int size, - int num_components, - const PointIndex *entry_to_point_id_map) override; - PredictionSchemeMethod GetPredictionMethod() const override { - return PREDICTION_DIFFERENCE; - } - bool IsInitialized() const override { return true; } -}; - -template -bool PredictionSchemeDifference::Encode( - const DataTypeT *in_data, CorrType *out_corr, int size, int num_components, - const PointIndex *) { - this->transform().InitializeEncoding(in_data, size, num_components); - // Encode data from the back using D(i) = D(i) - D(i - 1). - for (int i = size - num_components; i > 0; i -= num_components) { - this->transform().ComputeCorrection( - in_data + i, in_data + i - num_components, out_corr, i); - } - // Encode correction for the first element. - std::unique_ptr zero_vals(new DataTypeT[num_components]()); - this->transform().ComputeCorrection(in_data, zero_vals.get(), out_corr, 0); - return true; -} - -template -bool PredictionSchemeDifference::Decode( - const CorrType *in_corr, DataTypeT *out_data, int size, int num_components, - const PointIndex *) { - this->transform().InitializeDecoding(num_components); - // Decode the original value for the first element. - std::unique_ptr zero_vals(new DataTypeT[num_components]()); - this->transform().ComputeOriginalValue(zero_vals.get(), in_corr, out_data, 0); - - // Decode data from the front using D(i) = D(i) + D(i - 1). - for (int i = num_components; i < size; i += num_components) { - this->transform().ComputeOriginalValue(out_data + i - num_components, - in_corr, out_data + i, i); - } - return true; -} - -} // namespace draco - -#endif // DRACO_COMPRESSION_ATTRIBUTES_PREDICTION_SCHEMES_PREDICTION_SCHEME_DIFFERENCE_H_ diff --git a/compression/attributes/prediction_schemes/prediction_scheme_encoder_factory.h b/compression/attributes/prediction_schemes/prediction_scheme_encoder_factory.h deleted file mode 100644 index 1b699b9b..00000000 --- a/compression/attributes/prediction_schemes/prediction_scheme_encoder_factory.h +++ /dev/null @@ -1,79 +0,0 @@ -// Copyright 2016 The Draco Authors. -// -// Licensed under the Apache License, Version 2.0 (the "License"); -// you may not use this file except in compliance with the License. -// You may obtain a copy of the License at -// -// http://www.apache.org/licenses/LICENSE-2.0 -// -// Unless required by applicable law or agreed to in writing, software -// distributed under the License is distributed on an "AS IS" BASIS, -// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -// See the License for the specific language governing permissions and -// limitations under the License. -// -// Functions for creating prediction schemes for encoders using the provided -// prediction method id. - -#ifndef DRACO_COMPRESSION_ATTRIBUTES_PREDICTION_SCHEMES_PREDICTION_SCHEME_ENCODER_FACTORY_H_ -#define DRACO_COMPRESSION_ATTRIBUTES_PREDICTION_SCHEMES_PREDICTION_SCHEME_ENCODER_FACTORY_H_ - -#include "compression/attributes/prediction_schemes/prediction_scheme_factory.h" -#include "compression/mesh/mesh_encoder.h" - -namespace draco { - -// Selects a prediction method based on the input geometry type and based on the -// encoder options. -PredictionSchemeMethod SelectPredictionMethod(int att_id, - const PointCloudEncoder *encoder); - -// Creates a prediction scheme for a given encoder and given prediction method. -// The prediction schemes are automatically initialized with encoder specific -// data if needed. -template > -std::unique_ptr> -CreatePredictionSchemeForEncoder(PredictionSchemeMethod method, int att_id, - const PointCloudEncoder *encoder, - const TransformT &transform) { - const PointAttribute *const att = encoder->point_cloud()->attribute(att_id); - if (method == PREDICTION_UNDEFINED) { - method = SelectPredictionMethod(att_id, encoder); - if (method == PREDICTION_NONE) - return nullptr; // No prediction is used. - } - if (encoder->GetGeometryType() == TRIANGULAR_MESH) { - // Cast the encoder to mesh encoder. This is not necessarily safe if there - // is some other encoder decides to use TRIANGULAR_MESH as the return type, - // but unfortunately there is not nice work around for this without using - // RTTI (double dispatch and similar concepts will not work because of the - // template nature of the prediction schemes). - const MeshEncoder *const mesh_encoder = - static_cast(encoder); - auto ret = CreateMeshPredictionScheme( - mesh_encoder, method, att_id, transform, kDracoBitstreamVersion); - if (ret) - return ret; - // Otherwise try to create another prediction scheme. - } - return CreatePredictionScheme(method, att, transform); -} - -// Create a prediction scheme using a default transform constructor. -template > -std::unique_ptr> -CreatePredictionSchemeForEncoder(PredictionSchemeMethod method, int att_id, - const PointCloudEncoder *encoder) { - return CreatePredictionSchemeForEncoder( - method, att_id, encoder, TransformT()); -} - -// Returns the preferred prediction scheme based on the encoder options. -PredictionSchemeMethod GetPredictionMethodFromOptions( - int att_id, const EncoderOptions &options); - -} // namespace draco - -#endif // DRACO_COMPRESSION_ATTRIBUTES_PREDICTION_SCHEMES_PREDICTION_SCHEME_ENCODER_FACTORY_H_ diff --git a/compression/attributes/prediction_schemes/prediction_scheme_factory.h b/compression/attributes/prediction_schemes/prediction_scheme_factory.h deleted file mode 100644 index d39d6a72..00000000 --- a/compression/attributes/prediction_schemes/prediction_scheme_factory.h +++ /dev/null @@ -1,128 +0,0 @@ -// Copyright 2016 The Draco Authors. -// -// Licensed under the Apache License, Version 2.0 (the "License"); -// you may not use this file except in compliance with the License. -// You may obtain a copy of the License at -// -// http://www.apache.org/licenses/LICENSE-2.0 -// -// Unless required by applicable law or agreed to in writing, software -// distributed under the License is distributed on an "AS IS" BASIS, -// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -// See the License for the specific language governing permissions and -// limitations under the License. -// -// Functions for creating prediction schemes from a provided prediction method -// name. The functions in this file can create only basic prediction schemes -// that don't require any encoder or decoder specific data. To create more -// sophisticated prediction schemes, use functions from either -// prediction_scheme_encoder_factory.h or, -// prediction_scheme_decoder_factory.h. - -#ifndef DRACO_COMPRESSION_ATTRIBUTES_PREDICTION_SCHEMES_PREDICTION_SCHEME_FACTORY_H_ -#define DRACO_COMPRESSION_ATTRIBUTES_PREDICTION_SCHEMES_PREDICTION_SCHEME_FACTORY_H_ - -#include "compression/attributes/mesh_attribute_indices_encoding_data.h" -#include "compression/attributes/prediction_schemes/mesh_prediction_scheme_constrained_multi_parallelogram.h" -#include "compression/attributes/prediction_schemes/mesh_prediction_scheme_multi_parallelogram.h" -#include "compression/attributes/prediction_schemes/mesh_prediction_scheme_parallelogram.h" -#include "compression/attributes/prediction_schemes/mesh_prediction_scheme_tex_coords.h" -#include "compression/attributes/prediction_schemes/prediction_scheme_difference.h" -#include "compression/config/compression_shared.h" -#include "mesh/mesh_attribute_corner_table.h" - -namespace draco { - -template > -std::unique_ptr> CreatePredictionScheme( - PredictionSchemeMethod method, const PointAttribute *attribute, - const TransformT &transform) { - if (method == PREDICTION_NONE) { - return nullptr; - } - return std::unique_ptr>( - new PredictionSchemeDifference(attribute, - transform)); -} - -template -std::unique_ptr> -CreateMeshPredictionSchemeInternal(PredictionSchemeMethod method, - const PointAttribute *attribute, - const TransformT &transform, - const MeshDataT &mesh_data, - uint16_t bitstream_version) { - if (method == MESH_PREDICTION_PARALLELOGRAM) { - return std::unique_ptr>( - new MeshPredictionSchemeParallelogram( - attribute, transform, mesh_data)); - } else if (method == MESH_PREDICTION_MULTI_PARALLELOGRAM) { - return std::unique_ptr>( - new MeshPredictionSchemeMultiParallelogram( - attribute, transform, mesh_data)); - } else if (method == MESH_PREDICTION_CONSTRAINED_MULTI_PARALLELOGRAM) { - return std::unique_ptr>( - new MeshPredictionSchemeConstrainedMultiParallelogram< - DataTypeT, TransformT, MeshDataT>(attribute, transform, mesh_data)); - } else if (method == MESH_PREDICTION_TEX_COORDS) { - return std::unique_ptr>( - new MeshPredictionSchemeTexCoords( - attribute, transform, mesh_data, bitstream_version)); - } - return nullptr; -} - -template -std::unique_ptr> -CreateMeshPredictionScheme(const EncodingDataSourceT *source, - PredictionSchemeMethod method, int att_id, - const TransformT &transform, - uint16_t bitstream_version) { - const PointAttribute *const att = source->point_cloud()->attribute(att_id); - if (source->GetGeometryType() == TRIANGULAR_MESH && - (method == MESH_PREDICTION_PARALLELOGRAM || - method == MESH_PREDICTION_MULTI_PARALLELOGRAM || - method == MESH_PREDICTION_CONSTRAINED_MULTI_PARALLELOGRAM || - method == MESH_PREDICTION_TEX_COORDS)) { - const CornerTable *const ct = source->GetCornerTable(); - const MeshAttributeIndicesEncodingData *const encoding_data = - source->GetAttributeEncodingData(att_id); - if (ct == nullptr || encoding_data == nullptr) { - // No connectivity data found. - return nullptr; - } - // Connectivity data exists. - const MeshAttributeCornerTable *const att_ct = - source->GetAttributeCornerTable(att_id); - if (att_ct != nullptr) { - typedef MeshPredictionSchemeData MeshData; - MeshData md; - md.Set(source->mesh(), att_ct, - &encoding_data->encoded_attribute_value_index_to_corner_map, - &encoding_data->vertex_to_encoded_attribute_value_index_map); - auto ret = - CreateMeshPredictionSchemeInternal( - method, att, transform, md, bitstream_version); - if (ret) - return ret; - } else { - typedef MeshPredictionSchemeData MeshData; - MeshData md; - md.Set(source->mesh(), ct, - &encoding_data->encoded_attribute_value_index_to_corner_map, - &encoding_data->vertex_to_encoded_attribute_value_index_map); - auto ret = - CreateMeshPredictionSchemeInternal( - method, att, transform, md, bitstream_version); - if (ret) - return ret; - } - } - return nullptr; -} - -} // namespace draco - -#endif // DRACO_COMPRESSION_ATTRIBUTES_PREDICTION_SCHEMES_PREDICTION_SCHEME_FACTORY_H_ diff --git a/compression/attributes/prediction_schemes/prediction_scheme_normal_octahedron_canonicalized_transform.h b/compression/attributes/prediction_schemes/prediction_scheme_normal_octahedron_canonicalized_transform.h deleted file mode 100644 index 71ae7cc5..00000000 --- a/compression/attributes/prediction_schemes/prediction_scheme_normal_octahedron_canonicalized_transform.h +++ /dev/null @@ -1,262 +0,0 @@ -// Copyright 2016 The Draco Authors. -// -// Licensed under the Apache License, Version 2.0 (the "License"); -// you may not use this file except in compliance with the License. -// You may obtain a copy of the License at -// -// http://www.apache.org/licenses/LICENSE-2.0 -// -// Unless required by applicable law or agreed to in writing, software -// distributed under the License is distributed on an "AS IS" BASIS, -// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -// See the License for the specific language governing permissions and -// limitations under the License. -// -#ifndef DRACO_COMPRESSION_ATTRIBUTES_PREDICTION_SCHEMES_PREDICTION_SCHEME_NORMAL_OCTAHEDRON_CANONICALIZED_TRANSFORM_H_ -#define DRACO_COMPRESSION_ATTRIBUTES_PREDICTION_SCHEMES_PREDICTION_SCHEME_NORMAL_OCTAHEDRON_CANONICALIZED_TRANSFORM_H_ - -#include - -#include "compression/attributes/normal_compression_utils.h" -#include "compression/attributes/prediction_schemes/prediction_scheme.h" -#include "core/macros.h" -#include "core/vector_d.h" - -namespace draco { - -// The transform works on octahedral coordinates for normals. The square is -// subdivided into four inner triangles (diamond) and four outer triangles. The -// inner triangles are associated with the upper part of the octahedron and the -// outer triangles are associated with the lower part. -// Given a prediction value P and the actual value Q that should be encoded, -// this transform first checks if P is outside the diamond. If so, the outer -// triangles are flipped towards the inside and vice versa. Then it checks if p -// is in the bottom left quadrant. If it is not, it rotates p and q accordingly. -// The actual correction value is then based on the mapped and rotated P and Q -// values. The inversion tends to result in shorter correction vectors and the -// rotation makes it so that all long correction values are positive, reducing -// the possible value range of the correction values and increasing the -// occurrences of positive large correction values, which helps the entropy -// encoder. This is possible since P is also known by the decoder, see also -// ComputeCorrection and ComputeOriginalValue functions. -// Note that the tile is not periodic, which implies that the outer edges can -// not be identified, which requires us to use an odd number of values on each -// axis. -// DataTypeT is expected to be some integral type. -// -template -class PredictionSchemeNormalOctahedronCanonicalizedTransform - : public PredictionSchemeTransform { - public: - typedef VectorD Point2; - typedef DataTypeT CorrType; - typedef DataTypeT DataType; - - PredictionSchemeNormalOctahedronCanonicalizedTransform() - : mod_value_(0), max_value_(0) {} - // We expect the mod value to be of the form 2^b-1. - PredictionSchemeNormalOctahedronCanonicalizedTransform(DataType mod_value) - : mod_value_(mod_value), max_value_((mod_value - 1) / 2) {} - - PredictionSchemeTransformType GetType() const { - return PREDICTION_TRANSFORM_NORMAL_OCTAHEDRON_CANONICALIZED; - } - - // We can return true as we keep correction values positive. - bool AreCorrectionsPositive() const { return true; } - - bool EncodeTransformData(EncoderBuffer *buffer) { - buffer->Encode(mod_value_); - buffer->Encode(max_value_); - return true; - } - - bool DecodeTransformData(DecoderBuffer *buffer) { - if (!buffer->Decode(&mod_value_)) - return false; - if (!buffer->Decode(&max_value_)) - return false; - return true; - } - - inline void ComputeCorrection(const DataType *orig_vals, - const DataType *pred_vals, - CorrType *out_corr_vals, int val_id) const { - DCHECK_LE(pred_vals[0], max_value_ * 2); - DCHECK_LE(pred_vals[1], max_value_ * 2); - DCHECK_LE(orig_vals[0], max_value_ * 2); - DCHECK_LE(orig_vals[1], max_value_ * 2); - DCHECK_LE(0, pred_vals[0]); - DCHECK_LE(0, pred_vals[1]); - DCHECK_LE(0, orig_vals[0]); - DCHECK_LE(0, orig_vals[1]); - - const Point2 orig = Point2(orig_vals[0], orig_vals[1]); - const Point2 pred = Point2(pred_vals[0], pred_vals[1]); - const Point2 corr = ComputeCorrection(orig, pred); - DCHECK_EQ(true, Verify(orig, pred, corr)); - - out_corr_vals[val_id] = corr[0]; - out_corr_vals[val_id + 1] = corr[1]; - } - - inline void ComputeOriginalValue(const DataType *pred_vals, - const CorrType *corr_vals, - DataType *out_orig_vals, int val_id) const { - DCHECK_LE(pred_vals[0], 2 * max_value_); - DCHECK_LE(pred_vals[1], 2 * max_value_); - DCHECK_LE(corr_vals[val_id], 2 * max_value_); - DCHECK_LE(corr_vals[val_id + 1], 2 * max_value_); - - DCHECK_LE(0, pred_vals[0]); - DCHECK_LE(0, pred_vals[1]); - DCHECK_LE(0, corr_vals[val_id]); - DCHECK_LE(0, corr_vals[val_id + 1]); - - const Point2 pred = Point2(pred_vals[0], pred_vals[1]); - const Point2 corr = Point2(corr_vals[val_id], corr_vals[val_id + 1]); - const Point2 orig = ComputeOriginalValue(pred, corr); - - out_orig_vals[0] = orig[0]; - out_orig_vals[1] = orig[1]; - } - - int32_t GetRotationCount(Point2 pred) const { - const DataType sign_x = pred[0]; - const DataType sign_y = pred[1]; - - int32_t rotation_count = 0; - if (sign_x == 0) { - if (sign_y == 0) { - rotation_count = 0; - } else if (sign_y > 0) { - rotation_count = 3; - } else { - rotation_count = 1; - } - } else if (sign_x > 0) { - if (sign_y >= 0) { - rotation_count = 2; - } else { - rotation_count = 1; - } - } else { - if (sign_y <= 0) { - rotation_count = 0; - } else { - rotation_count = 3; - } - } - return rotation_count; - } - - Point2 RotatePoint(Point2 p, int32_t rotation_count) const { - switch (rotation_count) { - case 1: - return Point2(p[1], -p[0]); - case 2: - return Point2(-p[0], -p[1]); - case 3: - return Point2(-p[1], p[0]); - default: - return p; - } - } - - bool IsInBottomLeft(const Point2 &p) const { - if (p[0] == 0 && p[1] == 0) - return true; - return (p[0] < 0 && p[1] <= 0); - } - - private: - Point2 ComputeCorrection(Point2 orig, Point2 pred) const { - const Point2 t(max_value_, max_value_); - orig = orig - t; - pred = pred - t; - if (!IsInDiamond(max_value_, pred[0], pred[1])) { - InvertRepresentation(max_value_, &orig[0], &orig[1]); - InvertRepresentation(max_value_, &pred[0], &pred[1]); - } - if (!IsInBottomLeft(pred)) { - int32_t rotation_count = GetRotationCount(pred); - orig = RotatePoint(orig, rotation_count); - pred = RotatePoint(pred, rotation_count); - } - Point2 corr = orig - pred; - corr[0] = MakePositive(corr[0]); - corr[1] = MakePositive(corr[1]); - return corr; - } - - Point2 ComputeOriginalValue(Point2 pred, Point2 corr) const { - const Point2 t(max_value_, max_value_); - pred = pred - t; - const bool pred_is_in_diamond = IsInDiamond(max_value_, pred[0], pred[1]); - if (!pred_is_in_diamond) { - InvertRepresentation(max_value_, &pred[0], &pred[1]); - } - const bool pred_is_in_bottom_left = IsInBottomLeft(pred); - const int32_t rotation_count = GetRotationCount(pred); - if (!pred_is_in_bottom_left) { - pred = RotatePoint(pred, rotation_count); - } - Point2 orig = pred + corr; - orig[0] = ModMax(orig[0]); - orig[1] = ModMax(orig[1]); - if (!pred_is_in_bottom_left) { - const int32_t reverse_rotation_count = (4 - rotation_count) % 4; - orig = RotatePoint(orig, reverse_rotation_count); - } - if (!pred_is_in_diamond) { - InvertRepresentation(max_value_, &orig[0], &orig[1]); - } - orig = orig + t; - return orig; - } - - // For correction values. - DataType MakePositive(DataType x) const { - DCHECK_LE(x, max_value_ * 2); - if (x < 0) - return x + mod_value_; - return x; - } - - DataType ModMax(DataType x) const { - if (x > max_value_) - return x - mod_value_; - if (x < -max_value_) - return x + mod_value_; - return x; - } - - // Only called in debug mode. - bool Verify(const Point2 &orig, const Point2 pred, const Point2 corr) const { - const Point2 veri = ComputeOriginalValue(pred, corr); - return AreEquivalent(orig, veri); - } - - // Only called in debug mode - bool AreEquivalent(Point2 p, Point2 q) const { - const Point2 t(max_value_, max_value_); - p = p - t; - q = q - t; - if (std::abs(p[0]) == max_value_ && p[1] < 0) - p[1] = -p[1]; - if (std::abs(p[1]) == max_value_ && p[0] < 0) - p[0] = -p[0]; - if (std::abs(q[0]) == max_value_ && q[1] < 0) - q[1] = -q[1]; - if (std::abs(q[1]) == max_value_ && q[0] < 0) - q[0] = -q[0]; - return (p[0] == q[0] && p[1] == q[1]); - } - - DataType mod_value_; - DataType max_value_; -}; - -} // namespace draco - -#endif // DRACO_COMPRESSION_ATTRIBUTES_PREDICTION_SCHEMES_PREDICTION_SCHEME_NORMAL_OCTAHEDRON_CANONICALIZED_TRANSFORM_H_ diff --git a/compression/attributes/prediction_schemes/prediction_scheme_normal_octahedron_transform.h b/compression/attributes/prediction_schemes/prediction_scheme_normal_octahedron_transform.h deleted file mode 100644 index 338c44ed..00000000 --- a/compression/attributes/prediction_schemes/prediction_scheme_normal_octahedron_transform.h +++ /dev/null @@ -1,198 +0,0 @@ -// Copyright 2016 The Draco Authors. -// -// Licensed under the Apache License, Version 2.0 (the "License"); -// you may not use this file except in compliance with the License. -// You may obtain a copy of the License at -// -// http://www.apache.org/licenses/LICENSE-2.0 -// -// Unless required by applicable law or agreed to in writing, software -// distributed under the License is distributed on an "AS IS" BASIS, -// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -// See the License for the specific language governing permissions and -// limitations under the License. -// -#ifndef DRACO_COMPRESSION_ATTRIBUTES_PREDICTION_SCHEMES_PREDICTION_SCHEME_NORMAL_OCTAHEDRON_TRANSFORM_H_ -#define DRACO_COMPRESSION_ATTRIBUTES_PREDICTION_SCHEMES_PREDICTION_SCHEME_NORMAL_OCTAHEDRON_TRANSFORM_H_ - -#include - -#include "compression/attributes/normal_compression_utils.h" -#include "compression/attributes/prediction_schemes/prediction_scheme.h" -#include "core/macros.h" -#include "core/vector_d.h" - -namespace draco { - -// The transform works on octahedral coordinates for normals. The square is -// subdivided into four inner triangles (diamond) and four outer triangles. The -// inner triangles are associated with the upper part of the octahedron and the -// outer triangles are associated with the lower part. -// Given a prediction value P and the actual value Q that should be encoded, -// this transform first checks if P is outside the diamond. If so, the outer -// triangles are flipped towards the inside and vice versa. The actual -// correction value is then based on the mapped P and Q values. This tends to -// result in shorter correction vectors. -// This is possible since the P value is also known by the decoder, see also -// ComputeCorrection and ComputeOriginalValue functions. -// Note that the tile is not periodic, which implies that the outer edges can -// not be identified, which requires us to use an odd number of values on each -// axis. -// DataTypeT is expected to be some integral type. -// -template -class PredictionSchemeNormalOctahedronTransform - : public PredictionSchemeTransform { - public: - typedef VectorD Point2; - typedef DataTypeT CorrType; - typedef DataTypeT DataType; - - PredictionSchemeNormalOctahedronTransform() : mod_value_(0), max_value_(0) {} - // We expect the mod value to be of the form 2^b-1. - PredictionSchemeNormalOctahedronTransform(DataType mod_value) - : mod_value_(mod_value), max_value_((mod_value - 1) / 2) {} - - PredictionSchemeTransformType GetType() const { - return PREDICTION_TRANSFORM_NORMAL_OCTAHEDRON; - } - - // We can return true as we keep correction values positive. - bool AreCorrectionsPositive() const { return true; } - - bool EncodeTransformData(EncoderBuffer *buffer) { - buffer->Encode(mod_value_); - buffer->Encode(max_value_); - return true; - } - - bool DecodeTransformData(DecoderBuffer *buffer) { - if (!buffer->Decode(&mod_value_)) - return false; - if (!buffer->Decode(&max_value_)) - return false; - return true; - } - - inline void ComputeCorrection(const DataType *orig_vals, - const DataType *pred_vals, - CorrType *out_corr_vals, int val_id) const { - DCHECK_LE(pred_vals[0], max_value_ * 2); - DCHECK_LE(pred_vals[1], max_value_ * 2); - DCHECK_LE(orig_vals[0], max_value_ * 2); - DCHECK_LE(orig_vals[1], max_value_ * 2); - DCHECK_LE(0, pred_vals[0]); - DCHECK_LE(0, pred_vals[1]); - DCHECK_LE(0, orig_vals[0]); - DCHECK_LE(0, orig_vals[1]); - - Point2 orig = Point2(orig_vals[0], orig_vals[1]); - Point2 pred = Point2(pred_vals[0], pred_vals[1]); - Point2 corr = ComputeCorrection(orig, pred); - - DCHECK_EQ(true, Verify(orig, pred, corr)); - - out_corr_vals[val_id] = corr[0]; - out_corr_vals[val_id + 1] = corr[1]; - } - - inline void ComputeOriginalValue(const DataType *pred_vals, - const CorrType *corr_vals, - DataType *out_orig_vals, int val_id) const { - DCHECK_LE(pred_vals[0], 2 * max_value_); - DCHECK_LE(pred_vals[1], 2 * max_value_); - DCHECK_LE(corr_vals[val_id], 2 * max_value_); - DCHECK_LE(corr_vals[val_id + 1], 2 * max_value_); - - DCHECK_LE(0, pred_vals[0]); - DCHECK_LE(0, pred_vals[1]); - DCHECK_LE(0, corr_vals[val_id]); - DCHECK_LE(0, corr_vals[val_id + 1]); - - const Point2 pred = Point2(pred_vals[0], pred_vals[1]); - const Point2 corr = Point2(corr_vals[val_id], corr_vals[val_id + 1]); - const Point2 orig = ComputeOriginalValue(pred, corr); - - out_orig_vals[0] = orig[0]; - out_orig_vals[1] = orig[1]; - } - - private: - Point2 ComputeCorrection(Point2 orig, Point2 pred) const { - const Point2 t(max_value_, max_value_); - orig = orig - t; - pred = pred - t; - - if (!IsInDiamond(max_value_, pred[0], pred[1])) { - InvertRepresentation(max_value_, &orig[0], &orig[1]); - InvertRepresentation(max_value_, &pred[0], &pred[1]); - } - - Point2 corr = orig - pred; - corr[0] = MakePositive(corr[0]); - corr[1] = MakePositive(corr[1]); - return corr; - } - - Point2 ComputeOriginalValue(Point2 pred, const Point2 &corr) const { - const Point2 t(max_value_, max_value_); - pred = pred - t; - - const bool pred_is_in_diamond = IsInDiamond(max_value_, pred[0], pred[1]); - if (!pred_is_in_diamond) { - InvertRepresentation(max_value_, &pred[0], &pred[1]); - } - Point2 orig = pred + corr; - orig[0] = ModMax(orig[0]); - orig[1] = ModMax(orig[1]); - if (!pred_is_in_diamond) { - InvertRepresentation(max_value_, &orig[0], &orig[1]); - } - orig = orig + t; - return orig; - } - - // For correction values. - DataType MakePositive(DataType x) const { - DCHECK_LE(x, max_value_ * 2); - if (x < 0) - return x + mod_value_; - return x; - } - - DataType ModMax(DataType x) const { - if (x > max_value_) - return x - mod_value_; - if (x < -max_value_) - return x + mod_value_; - return x; - } - - // Only called in debug mode. - bool Verify(const Point2 &orig, const Point2 pred, const Point2 corr) const { - const Point2 veri = ComputeOriginalValue(pred, corr); - return AreEquivalent(orig, veri); - } - // Only called in debug mode - bool AreEquivalent(Point2 p, Point2 q) const { - const Point2 t(max_value_, max_value_); - p = p - t; - q = q - t; - if (std::abs(p[0]) == max_value_ && p[1] < 0) - p[1] = -p[1]; - if (std::abs(p[1]) == max_value_ && p[0] < 0) - p[0] = -p[0]; - if (std::abs(q[0]) == max_value_ && q[1] < 0) - q[1] = -q[1]; - if (std::abs(q[1]) == max_value_ && q[0] < 0) - q[0] = -q[0]; - return (p[0] == q[0] && p[1] == q[1]); - } - - DataType mod_value_; - DataType max_value_; -}; - -} // namespace draco - -#endif // DRACO_COMPRESSION_ATTRIBUTES_PREDICTION_SCHEMES_PREDICTION_SCHEME_NORMAL_OCTAHEDRON_TRANSFORM_H_ diff --git a/compression/attributes/prediction_schemes/prediction_scheme_wrap_transform.h b/compression/attributes/prediction_schemes/prediction_scheme_wrap_transform.h deleted file mode 100644 index 156d22ce..00000000 --- a/compression/attributes/prediction_schemes/prediction_scheme_wrap_transform.h +++ /dev/null @@ -1,159 +0,0 @@ -// Copyright 2016 The Draco Authors. -// -// Licensed under the Apache License, Version 2.0 (the "License"); -// you may not use this file except in compliance with the License. -// You may obtain a copy of the License at -// -// http://www.apache.org/licenses/LICENSE-2.0 -// -// Unless required by applicable law or agreed to in writing, software -// distributed under the License is distributed on an "AS IS" BASIS, -// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -// See the License for the specific language governing permissions and -// limitations under the License. -// -#ifndef DRACO_COMPRESSION_ATTRIBUTES_PREDICTION_SCHEMES_PREDICTION_SCHEME_WRAP_TRANSFORM_H_ -#define DRACO_COMPRESSION_ATTRIBUTES_PREDICTION_SCHEMES_PREDICTION_SCHEME_WRAP_TRANSFORM_H_ - -#include "compression/attributes/prediction_schemes/prediction_scheme.h" - -namespace draco { - -// PredictionSchemeWrapTransform uses the min and max bounds of the original -// data to wrap stored correction values around these bounds centered at 0, -// i.e., when the range of the original values O is between and -// N = MAX-MIN, we can then store any correction X = O - P, as: -// X + N, if X < -N / 2 -// X - N, if X > N / 2 -// X otherwise -// To unwrap this value, the decoder then simply checks whether the final -// corrected value F = P + X is out of the bounds of the input values. -// All out of bounds values are unwrapped using -// F + N, if F < MIN -// F - N, if F > MAX -// This wrapping can reduce the number of unique values, which translates to a -// better entropy of the stored values and better compression rates. -template -class PredictionSchemeWrapTransform - : public PredictionSchemeTransform { - public: - typedef CorrTypeT CorrType; - PredictionSchemeWrapTransform() - : min_value_(0), - max_value_(0), - max_dif_(0), - max_correction_(0), - min_correction_(0) {} - - PredictionSchemeTransformType GetType() const { - return PREDICTION_TRANSFORM_WRAP; - } - - void InitializeEncoding(const DataTypeT *orig_data, int size, - int num_components) { - PredictionSchemeTransform::InitializeEncoding( - orig_data, size, num_components); - // Go over the original values and compute the bounds. - if (size == 0) - return; - min_value_ = max_value_ = orig_data[0]; - for (int i = 1; i < size; ++i) { - if (orig_data[i] < min_value_) - min_value_ = orig_data[i]; - else if (orig_data[i] > max_value_) - max_value_ = orig_data[i]; - } - InitCorrectionBounds(); - clamped_value_.resize(num_components); - } - - void InitializeDecoding(int num_components) { - PredictionSchemeTransform::InitializeDecoding( - num_components); - clamped_value_.resize(num_components); - } - - // Computes the corrections based on the input original value and the - // predicted value. Out of bound correction values are wrapped around the max - // range of input values. - inline void ComputeCorrection(const DataTypeT *original_vals, - const DataTypeT *predicted_vals, - CorrTypeT *out_corr_vals, int val_id) { - PredictionSchemeTransform::ComputeCorrection( - original_vals, ClampPredictedValue(predicted_vals), out_corr_vals, - val_id); - // Wrap around if needed. - for (int i = 0; i < this->num_components(); ++i) { - DataTypeT &corr_val = out_corr_vals[val_id + i]; - if (corr_val < min_correction_) - corr_val += max_dif_; - else if (corr_val > max_correction_) - corr_val -= max_dif_; - } - } - - // Computes the original value from the input predicted value and the decoded - // corrections. Values out of the bounds of the input values are unwrapped. - inline void ComputeOriginalValue(const DataTypeT *predicted_vals, - const CorrTypeT *corr_vals, - DataTypeT *out_original_vals, int val_id) { - PredictionSchemeTransform::ComputeOriginalValue( - ClampPredictedValue(predicted_vals), corr_vals, out_original_vals, - val_id); - for (int i = 0; i < this->num_components(); ++i) { - if (out_original_vals[i] > max_value_) - out_original_vals[i] -= max_dif_; - else if (out_original_vals[i] < min_value_) - out_original_vals[i] += max_dif_; - } - } - - inline const DataTypeT *ClampPredictedValue(const DataTypeT *predicted_val) { - for (int i = 0; i < this->num_components(); ++i) { - if (predicted_val[i] > max_value_) - clamped_value_[i] = max_value_; - else if (predicted_val[i] < min_value_) - clamped_value_[i] = min_value_; - else - clamped_value_[i] = predicted_val[i]; - } - return &clamped_value_[0]; - } - - bool EncodeTransformData(EncoderBuffer *buffer) { - // Store the input value range as it is needed by the decoder. - buffer->Encode(min_value_); - buffer->Encode(max_value_); - return true; - } - - bool DecodeTransformData(DecoderBuffer *buffer) { - if (!buffer->Decode(&min_value_)) - return false; - if (!buffer->Decode(&max_value_)) - return false; - InitCorrectionBounds(); - return true; - } - - protected: - void InitCorrectionBounds() { - max_dif_ = 1 + max_value_ - min_value_; - max_correction_ = max_dif_ / 2; - min_correction_ = -max_correction_; - if ((max_dif_ & 1) == 0) - max_correction_ -= 1; - } - - private: - DataTypeT min_value_; - DataTypeT max_value_; - DataTypeT max_dif_; - DataTypeT max_correction_; - DataTypeT min_correction_; - std::vector clamped_value_; -}; - -} // namespace draco - -#endif // DRACO_COMPRESSION_ATTRIBUTES_PREDICTION_SCHEMES_PREDICTION_SCHEME_WRAP_TRANSFORM_H_ diff --git a/compression/attributes/sequential_integer_attribute_encoder.cc b/compression/attributes/sequential_integer_attribute_encoder.cc deleted file mode 100644 index b41d3a09..00000000 --- a/compression/attributes/sequential_integer_attribute_encoder.cc +++ /dev/null @@ -1,157 +0,0 @@ -// Copyright 2016 The Draco Authors. -// -// Licensed under the Apache License, Version 2.0 (the "License"); -// you may not use this file except in compliance with the License. -// You may obtain a copy of the License at -// -// http://www.apache.org/licenses/LICENSE-2.0 -// -// Unless required by applicable law or agreed to in writing, software -// distributed under the License is distributed on an "AS IS" BASIS, -// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -// See the License for the specific language governing permissions and -// limitations under the License. -// -#include "compression/attributes/sequential_integer_attribute_encoder.h" - -#include "compression/attributes/prediction_schemes/prediction_scheme_encoder_factory.h" -#include "compression/attributes/prediction_schemes/prediction_scheme_wrap_transform.h" -#include "core/bit_utils.h" -#include "core/symbol_encoding.h" - -namespace draco { - -SequentialIntegerAttributeEncoder::SequentialIntegerAttributeEncoder() {} - -bool SequentialIntegerAttributeEncoder::Initialize(PointCloudEncoder *encoder, - int attribute_id) { - if (!SequentialAttributeEncoder::Initialize(encoder, attribute_id)) - return false; - if (GetUniqueId() == SEQUENTIAL_ATTRIBUTE_ENCODER_INTEGER) { - // When encoding integers, this encoder currently works only for integer - // attributes up to 32 bits. - switch (attribute()->data_type()) { - case DT_INT8: - case DT_UINT8: - case DT_INT16: - case DT_UINT16: - case DT_INT32: - case DT_UINT32: - break; - default: - return false; - } - } - // Init prediction scheme. - const PredictionSchemeMethod prediction_scheme_method = - GetPredictionMethodFromOptions(attribute_id, *encoder->options()); - - prediction_scheme_ = CreateIntPredictionScheme(prediction_scheme_method); - - if (prediction_scheme_ && !InitPredictionScheme(prediction_scheme_.get())) { - prediction_scheme_ = nullptr; - } - - return true; -} - -std::unique_ptr> -SequentialIntegerAttributeEncoder::CreateIntPredictionScheme( - PredictionSchemeMethod method) { - return CreatePredictionSchemeForEncoder< - int32_t, PredictionSchemeWrapTransform>(method, attribute_id(), - encoder()); -} - -bool SequentialIntegerAttributeEncoder::EncodeValues( - const std::vector &point_ids, EncoderBuffer *out_buffer) { - // Initialize general quantization data. - const PointAttribute *const attrib = attribute(); - if (attrib->size() == 0) - return true; - - int8_t prediction_scheme_method = PREDICTION_NONE; - if (prediction_scheme_) - prediction_scheme_method = - static_cast(prediction_scheme_->GetPredictionMethod()); - out_buffer->Encode(prediction_scheme_method); - if (prediction_scheme_) { - out_buffer->Encode( - static_cast(prediction_scheme_->GetTransformType())); - } - - if (!PrepareValues(point_ids)) - return false; - - const int num_components = values_.size() / point_ids.size(); - // All integer values are initialized. Process them using the prediction - // scheme if we have one. - if (prediction_scheme_) { - prediction_scheme_->Encode(values_.data(), &values_[0], values_.size(), - num_components, point_ids.data()); - } - - if (prediction_scheme_ == nullptr || - !prediction_scheme_->AreCorrectionsPositive()) { - ConvertSignedIntsToSymbols(values_.data(), values_.size(), - reinterpret_cast(values_.data())); - } - - if (encoder() == nullptr || encoder()->options()->GetGlobalBool( - "use_built_in_attribute_compression", true)) { - out_buffer->Encode(static_cast(1)); - if (!EncodeSymbols(reinterpret_cast(values_.data()), - point_ids.size() * num_components, num_components, - out_buffer)) { - return false; - } - } else { - // No compression. Just store the raw integer values, using the number of - // bytes as needed. - - // To compute the maximum bit-length, first OR all values. - uint32_t masked_value = 0; - for (uint32_t i = 0; i < values_.size(); ++i) { - masked_value |= values_[i]; - } - // Compute the msb of the ORed value. - int value_msb_pos = 0; - if (masked_value != 0) { - value_msb_pos = bits::MostSignificantBit(masked_value); - } - const int num_bytes = 1 + value_msb_pos / 8; - - out_buffer->Encode(static_cast(0)); - out_buffer->Encode(static_cast(num_bytes)); - - if (num_bytes == sizeof(decltype(values_)::value_type)) { - out_buffer->Encode(values_.data(), sizeof(int32_t) * values_.size()); - } else { - for (uint32_t i = 0; i < values_.size(); ++i) { - out_buffer->Encode(&values_[i], num_bytes); - } - } - } - if (prediction_scheme_) { - prediction_scheme_->EncodePredictionData(out_buffer); - } - return true; -} - -bool SequentialIntegerAttributeEncoder::PrepareValues( - const std::vector &point_ids) { - // Convert all values to int32_t format. - const PointAttribute *const attrib = attribute(); - const int num_components = attrib->components_count(); - const int num_entries = point_ids.size(); - values_.resize(num_entries * num_components); - int dst_index = 0; - for (int i = 0; i < num_entries; ++i) { - const AttributeValueIndex att_id = attrib->mapped_index(point_ids[i]); - attrib->ConvertValue(att_id, &values_[dst_index]); - dst_index += num_components; - } - return true; -} - -} // namespace draco diff --git a/compression/attributes/sequential_normal_attribute_encoder.cc b/compression/attributes/sequential_normal_attribute_encoder.cc deleted file mode 100644 index 60762aa8..00000000 --- a/compression/attributes/sequential_normal_attribute_encoder.cc +++ /dev/null @@ -1,55 +0,0 @@ -// Copyright 2016 The Draco Authors. -// -// Licensed under the Apache License, Version 2.0 (the "License"); -// you may not use this file except in compliance with the License. -// You may obtain a copy of the License at -// -// http://www.apache.org/licenses/LICENSE-2.0 -// -// Unless required by applicable law or agreed to in writing, software -// distributed under the License is distributed on an "AS IS" BASIS, -// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -// See the License for the specific language governing permissions and -// limitations under the License. -// -#include "compression/attributes/sequential_normal_attribute_encoder.h" -#include "compression/attributes/normal_compression_utils.h" - -namespace draco { - -bool SequentialNormalAttributeEncoder::Initialize(PointCloudEncoder *encoder, - int attribute_id) { - if (!SequentialIntegerAttributeEncoder::Initialize(encoder, attribute_id)) - return false; - // Currently this encoder works only for 3-component normal vectors. - if (attribute()->components_count() != 3) - return false; - return true; -} - -bool SequentialNormalAttributeEncoder::PrepareValues( - const std::vector &point_ids) { - // Quantize all encoded values. - const int quantization_bits = encoder()->options()->GetAttributeInt( - attribute_id(), "quantization_bits", -1); - encoder()->buffer()->Encode(static_cast(quantization_bits)); - - const int32_t max_quantized_value = (1 << quantization_bits) - 1; - const float max_quantized_value_f = static_cast(max_quantized_value); - values()->clear(); - float att_val[3]; - values()->reserve(point_ids.size() * 2); - for (uint32_t i = 0; i < point_ids.size(); ++i) { - const AttributeValueIndex att_id = attribute()->mapped_index(point_ids[i]); - attribute()->GetValue(att_id, att_val); - // Encode the vector into a s and t octaherdal coordinates. - int32_t s, t; - UnitVectorToQuantizedOctahedralCoords(att_val, max_quantized_value_f, &s, - &t); - values()->push_back(s); - values()->push_back(t); - } - return true; -} - -} // namespace draco diff --git a/compression/attributes/sequential_quantization_attribute_encoder.cc b/compression/attributes/sequential_quantization_attribute_encoder.cc deleted file mode 100644 index d9c5020c..00000000 --- a/compression/attributes/sequential_quantization_attribute_encoder.cc +++ /dev/null @@ -1,140 +0,0 @@ -// Copyright 2016 The Draco Authors. -// -// Licensed under the Apache License, Version 2.0 (the "License"); -// you may not use this file except in compliance with the License. -// You may obtain a copy of the License at -// -// http://www.apache.org/licenses/LICENSE-2.0 -// -// Unless required by applicable law or agreed to in writing, software -// distributed under the License is distributed on an "AS IS" BASIS, -// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -// See the License for the specific language governing permissions and -// limitations under the License. -// -#include "compression/attributes/sequential_quantization_attribute_encoder.h" - -#include "core/quantization_utils.h" - -namespace draco { - -SequentialQuantizationAttributeEncoder::SequentialQuantizationAttributeEncoder() - : max_value_dif_(0.f) {} - -bool SequentialQuantizationAttributeEncoder::Initialize( - PointCloudEncoder *encoder, int attribute_id) { - if (!SequentialIntegerAttributeEncoder::Initialize(encoder, attribute_id)) - return false; - // This encoder currently works only for floating point attributes. - const PointAttribute *const attribute = - encoder->point_cloud()->attribute(attribute_id); - if (attribute->data_type() != DT_FLOAT32) - return false; - min_value_ = nullptr; - return true; -} - -bool SequentialQuantizationAttributeEncoder::PrepareValues( - const std::vector &point_ids) { - if (!QuantizeValues(point_ids)) - return false; - return true; -} - -bool SequentialQuantizationAttributeEncoder::PrepareLossyAttributeData() { - const int quantization_bits = encoder()->options()->GetAttributeInt( - attribute_id(), "quantization_bits", -1); - ComputeQuantizationData(); - const uint32_t max_quantized_value = (1 << (quantization_bits)) - 1; - const PointAttribute *const attrib = attribute(); - const int num_components = attrib->components_count(); - const std::unique_ptr att_val(new float[num_components]); - - PointAttribute *const lossy_attrib = encoded_lossy_attribute_data(); - - Quantizer quantizer; - quantizer.Init(max_value_dif_, max_quantized_value); - Dequantizer dequantizer; - dequantizer.Init(max_value_dif_, max_quantized_value); - for (AttributeValueIndex i(0); i < attrib->size(); ++i) { - attrib->GetValue(i, att_val.get()); - for (int c = 0; c < num_components; ++c) { - float value = (att_val[c] - min_value_[c]); - const int32_t q_val = quantizer.QuantizeFloat(value); - value = dequantizer.DequantizeFloat(q_val) + min_value_[c]; - att_val[c] = value; - } - const int64_t out_byte_pos = lossy_attrib->GetBytePos(i); - lossy_attrib->buffer()->Write(out_byte_pos, att_val.get(), - lossy_attrib->byte_stride()); - } - return true; -} - -void SequentialQuantizationAttributeEncoder::ComputeQuantizationData() { - if (min_value_ != nullptr) - return; // Already initialized. - const PointAttribute *const attrib = attribute(); - const int num_components = attrib->components_count(); - max_value_dif_ = 0.f; - min_value_ = std::unique_ptr(new float[num_components]); - const std::unique_ptr max_value(new float[num_components]); - const std::unique_ptr att_val(new float[num_components]); - // Compute minimum values and max value difference. - attrib->GetValue(AttributeValueIndex(0), att_val.get()); - attrib->GetValue(AttributeValueIndex(0), min_value_.get()); - attrib->GetValue(AttributeValueIndex(0), max_value.get()); - - for (AttributeValueIndex i(1); i < attrib->size(); ++i) { - attrib->GetValue(i, att_val.get()); - for (int c = 0; c < num_components; ++c) { - if (min_value_[c] > att_val[c]) - min_value_[c] = att_val[c]; - if (max_value[c] < att_val[c]) - max_value[c] = att_val[c]; - } - } - for (int c = 0; c < num_components; ++c) { - const float dif = max_value[c] - min_value_[c]; - if (dif > max_value_dif_) - max_value_dif_ = dif; - } - return; -} - -bool SequentialQuantizationAttributeEncoder::QuantizeValues( - const std::vector &point_ids) { - const int quantization_bits = encoder()->options()->GetAttributeInt( - attribute_id(), "quantization_bits", -1); - if (quantization_bits < 1) - return false; - - const PointAttribute *const attrib = attribute(); - const int num_components = attrib->components_count(); - const std::unique_ptr att_val(new float[num_components]); - - ComputeQuantizationData(); - - encoder()->buffer()->Encode(min_value_.get(), sizeof(float) * num_components); - encoder()->buffer()->Encode(max_value_dif_); - encoder()->buffer()->Encode(static_cast(quantization_bits)); - - // Quantize all encoded values. - values()->clear(); - values()->reserve(point_ids.size() * num_components); - const uint32_t max_quantized_value = (1 << (quantization_bits)) - 1; - Quantizer quantizer; - quantizer.Init(max_value_dif_, max_quantized_value); - for (uint32_t i = 0; i < point_ids.size(); ++i) { - const AttributeValueIndex att_id = attrib->mapped_index(point_ids[i]); - attribute()->GetValue(att_id, att_val.get()); - for (int c = 0; c < num_components; ++c) { - const float value = (att_val[c] - min_value_[c]); - const int32_t q_val = quantizer.QuantizeFloat(value); - values()->push_back(q_val); - } - } - return true; -} - -} // namespace draco diff --git a/compression/config/encoder_options.cc b/compression/config/encoder_options.cc deleted file mode 100644 index a42cd931..00000000 --- a/compression/config/encoder_options.cc +++ /dev/null @@ -1,152 +0,0 @@ -// Copyright 2016 The Draco Authors. -// -// Licensed under the Apache License, Version 2.0 (the "License"); -// you may not use this file except in compliance with the License. -// You may obtain a copy of the License at -// -// http://www.apache.org/licenses/LICENSE-2.0 -// -// Unless required by applicable law or agreed to in writing, software -// distributed under the License is distributed on an "AS IS" BASIS, -// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -// See the License for the specific language governing permissions and -// limitations under the License. -// -#include "compression/config/encoder_options.h" - -namespace draco { - -EncoderOptions EncoderOptions::CreateDefaultOptions() { - EncoderOptions options; -#ifdef DRACO_STANDARD_EDGEBREAKER_SUPPORTED - options.SetSupportedFeature(features::kEdgebreaker, true); -#endif -#ifdef DRACO_PREDICTIVE_EDGEBREAKER_SUPPORTED - options.SetSupportedFeature(features::kPredictiveEdgebreaker, true); -#endif - return options; -} - -EncoderOptions::EncoderOptions() {} - -void EncoderOptions::SetGlobalOptions(const Options &o) { global_options_ = o; } - -void EncoderOptions::SetAttributeOptions(int32_t att_id, const Options &o) { - if (attribute_options_.size() <= static_cast(att_id)) { - attribute_options_.resize(att_id + 1); - } - attribute_options_[att_id] = o; -} - -Options *EncoderOptions::GetAttributeOptions(int32_t att_id) { - if (attribute_options_.size() <= static_cast(att_id)) { - attribute_options_.resize(att_id + 1); - } - return &attribute_options_[att_id]; -} - -void EncoderOptions::SetNamedAttributeOptions(const PointCloud &pc, - GeometryAttribute::Type att_type, - const Options &o) { - const int att_id = pc.GetNamedAttributeId(att_type); - if (att_id >= 0) - SetAttributeOptions(att_id, o); -} - -Options *EncoderOptions::GetNamedAttributeOptions( - const PointCloud &pc, GeometryAttribute::Type att_type) { - const int att_id = pc.GetNamedAttributeId(att_type); - if (att_id >= 0) - return GetAttributeOptions(att_id); - return nullptr; -} - -void EncoderOptions::SetFeatureOptions(const Options &o) { - feature_options_ = o; -} - -void EncoderOptions::SetGlobalInt(const std::string &name, int val) { - global_options_.SetInt(name, val); -} - -void EncoderOptions::SetGlobalBool(const std::string &name, bool val) { - global_options_.SetBool(name, val); -} - -std::string EncoderOptions::GetGlobalString( - const std::string &name, const std::string &default_val) const { - return global_options_.GetString(name, default_val); -} - -int EncoderOptions::GetGlobalInt(const std::string &name, - int default_val) const { - return global_options_.GetInt(name, default_val); -} - -bool EncoderOptions::GetGlobalBool(const std::string &name, - bool default_val) const { - return global_options_.GetBool(name, default_val); -} - -void EncoderOptions::SetGlobalString(const std::string &name, - const std::string &val) { - global_options_.SetString(name, val); -} - -void EncoderOptions::SetAttributeInt(int32_t att_id, const std::string &name, - int val) { - if (att_id >= static_cast(attribute_options_.size())) { - attribute_options_.resize(att_id + 1); - } - attribute_options_[att_id].SetInt(name, val); -} - -void EncoderOptions::SetAttributeBool(int32_t att_id, const std::string &name, - bool val) { - if (att_id >= static_cast(attribute_options_.size())) { - attribute_options_.resize(att_id + 1); - } - attribute_options_[att_id].SetBool(name, val); -} - -void EncoderOptions::SetAttributeString(int32_t att_id, const std::string &name, - const std::string &val) { - if (att_id >= static_cast(attribute_options_.size())) { - attribute_options_.resize(att_id + 1); - } - attribute_options_[att_id].SetString(name, val); -} - -int EncoderOptions::GetAttributeInt(int32_t att_id, const std::string &name, - int default_val) const { - if (att_id < static_cast(attribute_options_.size())) { - if (attribute_options_[att_id].IsOptionSet(name)) - return attribute_options_[att_id].GetInt(name, default_val); - } - return GetGlobalInt(name, default_val); -} - -bool EncoderOptions::GetAttributeBool(int32_t att_id, const std::string &name, - bool default_val) const { - if (att_id < static_cast(attribute_options_.size())) { - if (attribute_options_[att_id].IsOptionSet(name)) - return attribute_options_[att_id].GetBool(name, default_val); - } - return GetGlobalBool(name, default_val); -} - -std::string EncoderOptions::GetAttributeString( - int32_t att_id, const std::string &name, - const std::string &default_val) const { - if (att_id < static_cast(attribute_options_.size())) { - if (attribute_options_[att_id].IsOptionSet(name)) - return attribute_options_[att_id].GetString(name, default_val); - } - return GetGlobalString(name, default_val); -} - -bool EncoderOptions::IsFeatureSupported(const std::string &name) const { - return feature_options_.GetBool(name); -} - -} // namespace draco diff --git a/compression/config/encoder_options.h b/compression/config/encoder_options.h deleted file mode 100644 index 75dd4134..00000000 --- a/compression/config/encoder_options.h +++ /dev/null @@ -1,119 +0,0 @@ -// Copyright 2016 The Draco Authors. -// -// Licensed under the Apache License, Version 2.0 (the "License"); -// you may not use this file except in compliance with the License. -// You may obtain a copy of the License at -// -// http://www.apache.org/licenses/LICENSE-2.0 -// -// Unless required by applicable law or agreed to in writing, software -// distributed under the License is distributed on an "AS IS" BASIS, -// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -// See the License for the specific language governing permissions and -// limitations under the License. -// -#ifndef DRACO_COMPRESSION_CONFIG_ENCODER_OPTIONS_H_ -#define DRACO_COMPRESSION_CONFIG_ENCODER_OPTIONS_H_ - -#include "compression/config/encoding_features.h" -#include "core/options.h" -#include "point_cloud/point_cloud.h" - -namespace draco { - -// Class encapsulating options used by PointCloudEncoder and its derived classes. -// The encoder can be controller through three different options: -// 1. Global options -// 2. Per attribute options - i.e., options specific to a given attribute. -// 3. Feature options - options determining the available set of features on -// the target decoder. -// -// Please refer to mesh/encode.h for helper functions that can be used to -// initialize the options for various use cases. -class EncoderOptions { - public: - static EncoderOptions CreateDefaultOptions(); - - // Sets the global options that serve to control the overall behavior of an - // encoder as well as a fallback for attribute options if they are not set. - void SetGlobalOptions(const Options &o); - Options *GetGlobalOptions() { return &global_options_; } - - // Sets options for a specific attribute in a target PointCloud. - void SetAttributeOptions(int32_t att_id, const Options &o); - Options *GetAttributeOptions(int32_t att_id); - - // Sets options for all attributes of a given type in the target point cloud. - void SetNamedAttributeOptions(const PointCloud &pc, - GeometryAttribute::Type att_type, - const Options &o); - Options *GetNamedAttributeOptions(const PointCloud &pc, - GeometryAttribute::Type att_type); - - // Sets the list of features enabled by the encoder. - void SetFeatureOptions(const Options &o); - - void SetGlobalInt(const std::string &name, int val); - void SetGlobalBool(const std::string &name, bool val); - void SetGlobalString(const std::string &name, const std::string &val); - - int GetGlobalInt(const std::string &name, int default_val) const; - bool GetGlobalBool(const std::string &name, bool default_val) const; - std::string GetGlobalString(const std::string &name, - const std::string &default_val) const; - - void SetAttributeInt(int32_t att_id, const std::string &name, int val); - void SetAttributeBool(int32_t att_id, const std::string &name, bool val); - void SetAttributeString(int32_t att_id, const std::string &name, - const std::string &val); - - // Get an option for a specific attribute. If the option is not found in an - // attribute specific storage, the implementation will return a global option - // of the given name (if available). - int GetAttributeInt(int32_t att_id, const std::string &name, - int default_val) const; - bool GetAttributeBool(int32_t att_id, const std::string &name, - bool default_val) const; - std::string GetAttributeString(int32_t att_id, const std::string &name, - const std::string &default_val) const; - - // Returns speed options with default value of 5. - int GetEncodingSpeed() const { return GetGlobalInt("encoding_speed", 5); } - int GetDecodingSpeed() const { return GetGlobalInt("decoding_speed", 5); } - - // Returns the maximum speed for both encoding/decoding. - int GetSpeed() const { - const int encoding_speed = GetGlobalInt("encoding_speed", -1); - const int decoding_speed = GetGlobalInt("decoding_speed", -1); - const int max_speed = std::max(encoding_speed, decoding_speed); - if (max_speed == -1) - return 5; // Default value. - return max_speed; - } - - // Sets a given feature as supported or unsupported by the target decoder. - // Encoder will always use only supported features when encoding the input - // geometry. - void SetSupportedFeature(const std::string &name, bool supported) { - feature_options_.SetBool(name, supported); - } - bool IsFeatureSupported(const std::string &name) const; - - private: - // Use helper methods to construct the encoder options. - // See CreateDefaultOptions(); - EncoderOptions(); - - Options global_options_; - - // Optional options for each of the attribute stored in a point cloud. If an - // options entry is not found here it will fallback to global_options_. - std::vector attribute_options_; - - // List of supported/unsupported features that can be used by the encoder. - Options feature_options_; -}; - -} // namespace draco - -#endif // DRACO_COMPRESSION_CONFIG_ENCODER_OPTIONS_H_ diff --git a/compression/decode.cc b/compression/decode.cc deleted file mode 100644 index d2ed1092..00000000 --- a/compression/decode.cc +++ /dev/null @@ -1,115 +0,0 @@ -// Copyright 2016 The Draco Authors. -// -// Licensed under the Apache License, Version 2.0 (the "License"); -// you may not use this file except in compliance with the License. -// You may obtain a copy of the License at -// -// http://www.apache.org/licenses/LICENSE-2.0 -// -// Unless required by applicable law or agreed to in writing, software -// distributed under the License is distributed on an "AS IS" BASIS, -// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -// See the License for the specific language governing permissions and -// limitations under the License. -// -#include "compression/decode.h" - -#include "compression/config/compression_shared.h" - -#ifdef DRACO_MESH_COMPRESSION_SUPPORTED -#include "compression/mesh/mesh_edgebreaker_decoder.h" -#include "compression/mesh/mesh_sequential_decoder.h" -#endif - -#ifdef DRACO_POINT_CLOUD_COMPRESSION_SUPPORTED -#include "compression/point_cloud/point_cloud_kd_tree_decoder.h" -#include "compression/point_cloud/point_cloud_sequential_decoder.h" -#endif - -namespace draco { - -EncodedGeometryType GetEncodedGeometryType(DecoderBuffer *in_buffer) { - DecoderBuffer temp_buffer(*in_buffer); - DracoHeader header; - if (!PointCloudDecoder::DecodeHeader(&temp_buffer, &header)) - return INVALID_GEOMETRY_TYPE; - return static_cast(header.encoder_type); -} - -#ifdef DRACO_POINT_CLOUD_COMPRESSION_SUPPORTED -std::unique_ptr CreatePointCloudDecoder(int8_t method) { - if (method == POINT_CLOUD_SEQUENTIAL_ENCODING) { - return std::unique_ptr( - new PointCloudSequentialDecoder()); - } else if (method == POINT_CLOUD_KD_TREE_ENCODING) { - return std::unique_ptr(new PointCloudKdTreeDecoder()); - } - return nullptr; -} -#endif - -#ifdef DRACO_MESH_COMPRESSION_SUPPORTED -std::unique_ptr CreateMeshDecoder(uint8_t method) { - if (method == MESH_SEQUENTIAL_ENCODING) { - return std::unique_ptr(new MeshSequentialDecoder()); - } else if (method == MESH_EDGEBREAKER_ENCODING) { - return std::unique_ptr(new MeshEdgeBreakerDecoder()); - } - return nullptr; -} -#endif - -std::unique_ptr DecodePointCloudFromBuffer( - DecoderBuffer *in_buffer) { - DecoderBuffer temp_buffer(*in_buffer); - DracoHeader header; - if (!PointCloudDecoder::DecodeHeader(&temp_buffer, &header)) - return nullptr; - if (header.encoder_type == POINT_CLOUD) { -#ifdef DRACO_POINT_CLOUD_COMPRESSION_SUPPORTED - std::unique_ptr decoder = - CreatePointCloudDecoder(header.encoder_method); - if (!decoder) - return nullptr; - std::unique_ptr point_cloud(new PointCloud()); - if (!decoder->Decode(in_buffer, point_cloud.get())) - return nullptr; - return point_cloud; -#endif - } else if (header.encoder_type == TRIANGULAR_MESH) { -#ifdef DRACO_MESH_COMPRESSION_SUPPORTED - std::unique_ptr decoder = - CreateMeshDecoder(header.encoder_method); - if (!decoder) - return nullptr; - std::unique_ptr mesh(new Mesh()); - if (!decoder->Decode(in_buffer, mesh.get())) - return nullptr; - return std::move(mesh); -#endif - } - return nullptr; -} - -std::unique_ptr DecodeMeshFromBuffer(DecoderBuffer *in_buffer) { -#ifdef DRACO_MESH_COMPRESSION_SUPPORTED - DecoderBuffer temp_buffer(*in_buffer); - DracoHeader header; - if (!PointCloudDecoder::DecodeHeader(&temp_buffer, &header)) - return nullptr; - std::unique_ptr decoder; - if (header.encoder_type == TRIANGULAR_MESH) { - decoder = CreateMeshDecoder(header.encoder_method); - } - if (!decoder) - return nullptr; - std::unique_ptr mesh(new Mesh()); - if (!decoder->Decode(in_buffer, mesh.get())) - return nullptr; - return mesh; -#else - return nullptr; -#endif -} - -} // namespace draco diff --git a/compression/decode.h b/compression/decode.h deleted file mode 100644 index c847b979..00000000 --- a/compression/decode.h +++ /dev/null @@ -1,46 +0,0 @@ -// Copyright 2016 The Draco Authors. -// -// Licensed under the Apache License, Version 2.0 (the "License"); -// you may not use this file except in compliance with the License. -// You may obtain a copy of the License at -// -// http://www.apache.org/licenses/LICENSE-2.0 -// -// Unless required by applicable law or agreed to in writing, software -// distributed under the License is distributed on an "AS IS" BASIS, -// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -// See the License for the specific language governing permissions and -// limitations under the License. -// -#ifndef DRACO_COMPRESSION_DECODE_H_ -#define DRACO_COMPRESSION_DECODE_H_ - -#include "compression/config/compression_shared.h" -#include "core/decoder_buffer.h" -#include "mesh/mesh.h" - -namespace draco { - -// Returns the geometry type encoded in the input |in_buffer|. -// The return value is one of POINT_CLOUD, MESH or INVALID_GEOMETRY in case -// the input data is invalid. -// The decoded geometry type can be used to choose an appropriate decoding -// function for a given geometry type (see below). -EncodedGeometryType GetEncodedGeometryType(DecoderBuffer *in_buffer); - -// Decodes point cloud from the provided buffer. The buffer must be filled with -// data that was encoded with either the EncodePointCloudToBuffer or -// EncodeMeshToBuffer methods in encode.h. In case the input buffer contains -// mesh, the returned instance can be down-casted to Mesh. -std::unique_ptr DecodePointCloudFromBuffer( - DecoderBuffer *in_buffer); - -// Decodes a triangular mesh from the provided buffer. The mesh must be filled -// with data that was encoded using the EncodeMeshToBuffer method in encode.h. -// The function will return nullptr in case the input is invalid or if it was -// encoded with the EncodePointCloudToBuffer method. -std::unique_ptr DecodeMeshFromBuffer(DecoderBuffer *in_buffer); - -} // namespace draco - -#endif // DRACO_COMPRESSION_DECODE_H_ diff --git a/compression/encode.cc b/compression/encode.cc deleted file mode 100644 index 26018ab2..00000000 --- a/compression/encode.cc +++ /dev/null @@ -1,149 +0,0 @@ -// Copyright 2016 The Draco Authors. -// -// Licensed under the Apache License, Version 2.0 (the "License"); -// you may not use this file except in compliance with the License. -// You may obtain a copy of the License at -// -// http://www.apache.org/licenses/LICENSE-2.0 -// -// Unless required by applicable law or agreed to in writing, software -// distributed under the License is distributed on an "AS IS" BASIS, -// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -// See the License for the specific language governing permissions and -// limitations under the License. -// -#include "compression/encode.h" - -#include "compression/mesh/mesh_edgebreaker_encoder.h" -#include "compression/mesh/mesh_sequential_encoder.h" -#include "compression/point_cloud/point_cloud_kd_tree_encoder.h" -#include "compression/point_cloud/point_cloud_sequential_encoder.h" - -namespace draco { - -bool EncodeGeometryToBuffer(PointCloudEncoder *encoder, - const EncoderOptions &options, - EncoderBuffer *out_buffer) { - if (!encoder) - return false; - if (!encoder->Encode(options, out_buffer)) - return false; - return true; -} - -bool EncodePointCloudToBuffer(const PointCloud &pc, - const EncoderOptions &options, - EncoderBuffer *out_buffer) { - std::unique_ptr encoder; - const int encoding_method = options.GetGlobalInt("encoding_method", -1); - if (encoding_method == POINT_CLOUD_KD_TREE_ENCODING || - (options.GetSpeed() < 10 && pc.num_attributes() == 1)) { - const PointAttribute *const att = pc.attribute(0); - bool create_kd_tree_encoder = true; - // Kd-Tree encoder can be currently used only under following conditions: - // - Point cloud has one attribute describing positions - // - Position is described by three components (x,y,z) - // - Position data type is one of the following: - // -float32 and quantization is enabled - // -uint32 - if (att->attribute_type() != GeometryAttribute::POSITION || - att->components_count() != 3) - create_kd_tree_encoder = false; - if (create_kd_tree_encoder && att->data_type() != DT_FLOAT32 && - att->data_type() != DT_UINT32) - create_kd_tree_encoder = false; - if (create_kd_tree_encoder && att->data_type() == DT_FLOAT32 && - options.GetAttributeInt(0, "quantization_bits", -1) <= 0) - create_kd_tree_encoder = false; // Quantization not enabled. - if (create_kd_tree_encoder) { - // Create kD-tree encoder (all checks passed). - encoder = - std::unique_ptr(new PointCloudKdTreeEncoder()); - } else if (encoding_method == POINT_CLOUD_KD_TREE_ENCODING) { - // Encoding method was explicitly specified but we cannot use it for the - // given input (some of the checks above failed). - return false; - } - } - if (!encoder) { - // Default choice. - encoder = - std::unique_ptr(new PointCloudSequentialEncoder()); - } - if (encoder) - encoder->SetPointCloud(pc); - return EncodeGeometryToBuffer(encoder.get(), options, out_buffer); -} - -bool EncodeMeshToBuffer(const Mesh &m, const EncoderOptions &options, - EncoderBuffer *out_buffer) { - std::unique_ptr encoder; - // Select the encoding method only based on the provided options. - int encoding_method = options.GetGlobalInt("encoding_method", -1); - if (encoding_method == -1) { - // For now select the edgebreaker for all options expect of speed 10 - if (options.GetSpeed() == 10) { - encoding_method = MESH_SEQUENTIAL_ENCODING; - } else { - encoding_method = MESH_EDGEBREAKER_ENCODING; - } - } - if (encoding_method == MESH_EDGEBREAKER_ENCODING) { - encoder = std::unique_ptr(new MeshEdgeBreakerEncoder()); - } else { - encoder = std::unique_ptr(new MeshSequentialEncoder()); - } - if (encoder) - encoder->SetMesh(m); - return EncodeGeometryToBuffer(encoder.get(), options, out_buffer); -} - -EncoderOptions CreateDefaultEncoderOptions() { - return EncoderOptions::CreateDefaultOptions(); -} - -void SetSpeedOptions(EncoderOptions *options, int encoding_speed, - int decoding_speed) { - options->GetGlobalOptions()->SetInt("encoding_speed", encoding_speed); - options->GetGlobalOptions()->SetInt("decoding_speed", decoding_speed); -} - -void SetNamedAttributeQuantization(EncoderOptions *options, - const PointCloud &pc, - GeometryAttribute::Type type, - int quantization_bits) { - Options *const o = options->GetNamedAttributeOptions(pc, type); - if (o) { - SetAttributeQuantization(o, quantization_bits); - } -} - -void SetAttributeQuantization(Options *options, int quantization_bits) { - options->SetInt("quantization_bits", quantization_bits); -} - -void SetUseBuiltInAttributeCompression(EncoderOptions *options, bool enabled) { - options->GetGlobalOptions()->SetBool("use_built_in_attribute_compression", - enabled); -} - -void SetEncodingMethod(EncoderOptions *options, int encoding_method) { - options->GetGlobalOptions()->SetInt("encoding_method", encoding_method); -} - -void SetNamedAttributePredictionScheme(EncoderOptions *options, - const PointCloud &pc, - GeometryAttribute::Type type, - int prediction_scheme_method) { - Options *const o = options->GetNamedAttributeOptions(pc, type); - if (o) { - SetAttributePredictionScheme(o, prediction_scheme_method); - } -} - -void SetAttributePredictionScheme(Options *options, - int prediction_scheme_method) { - options->SetInt("prediction_scheme", prediction_scheme_method); -} - -} // namespace draco diff --git a/compression/encode.h b/compression/encode.h deleted file mode 100644 index 8c5a4d5f..00000000 --- a/compression/encode.h +++ /dev/null @@ -1,123 +0,0 @@ -// Copyright 2016 The Draco Authors. -// -// Licensed under the Apache License, Version 2.0 (the "License"); -// you may not use this file except in compliance with the License. -// You may obtain a copy of the License at -// -// http://www.apache.org/licenses/LICENSE-2.0 -// -// Unless required by applicable law or agreed to in writing, software -// distributed under the License is distributed on an "AS IS" BASIS, -// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -// See the License for the specific language governing permissions and -// limitations under the License. -// -#ifndef DRACO_COMPRESSION_ENCODE_H_ -#define DRACO_COMPRESSION_ENCODE_H_ - -#include "compression/config/compression_shared.h" -#include "compression/config/encoder_options.h" -#include "core/encoder_buffer.h" -#include "mesh/mesh.h" - -namespace draco { - -// Encodes point cloud to the provided buffer. |options| can be used to control -// the encoding of point cloud. See functions below that can be used to generate -// valid options for the encoder covering the most usual use cases. -bool EncodePointCloudToBuffer(const PointCloud &pc, - const EncoderOptions &options, - EncoderBuffer *out_buffer); - -// Encodes mesh to the provided buffer. -bool EncodeMeshToBuffer(const Mesh &m, const EncoderOptions &options, - EncoderBuffer *out_buffer); - -// Creates default encoding options that contain a valid set of features that -// the encoder can use. Otherwise all options are left uninitialized which results -// in a lossless compression. -EncoderOptions CreateDefaultEncoderOptions(); - -// Sets the desired encoding and decoding speed for the given options. -// -// 0 = slowest speed, but the best compression. -// 10 = fastest, but the worst compression. -// -1 = undefined. -// -// Note that both speed options affect the encoder choice of used methods and -// algorithms. For example, a requirement for fast decoding may prevent the -// encoder from using the best compression methods even if the encoding speed is -// set to 0. In general, the faster of the two options limits the choice of -// features that can be used by the encoder. Additionally, setting -// |decoding_speed| to be faster than the |encoding_speed| may allow the encoder -// to choose the optimal method out of the available features for the given -// |decoding_speed|. -void SetSpeedOptions(EncoderOptions *options, int encoding_speed, - int decoding_speed); - -// Sets the quantization compression options for a named attribute. The -// attribute values will be quantized in a box defined by the maximum extent of -// the attribute values. I.e., the actual precision of this option depends on -// the scale of the attribute values. -void SetNamedAttributeQuantization(EncoderOptions *options, - const PointCloud &pc, - GeometryAttribute::Type type, - int quantization_bits); - -// Sets the above quantization directly for a specific attribute |options|. -void SetAttributeQuantization(Options *options, int quantization_bits); - -// Enables/disables built in entropy coding of attribute values. Disabling this -// option may be useful to improve the performance when third party compression -// is used on top of the Draco compression. -// Default: [true]. -void SetUseBuiltInAttributeCompression(EncoderOptions *options, bool enabled); - -// Sets the desired encoding method for a given geometry. By default, encoding -// method is selected based on the properties of the input geometry and based on -// the other options selected in the used EncoderOptions (such as desired -// encoding and decoding speed). This function should be called only when a -// specific method is required. -// -// |encoding_method| can be one of the following as defined in -// compression/config/compression_shared.h : -// POINT_CLOUD_SEQUENTIAL_ENCODING -// POINT_CLOUD_KD_TREE_ENCODING -// MESH_SEQUENTIAL_ENCODING -// MESH_EDGEBREAKER_ENCODING -// -// If the selected method cannot be used for the given input, the subsequent -// call of EncodePointCloudToBuffer or EncodeMeshToBuffer is going to fail. -void SetEncodingMethod(EncoderOptions *options, int encoding_method); - -// Sets the desired prediction method for a given attribute. By default, -// prediction scheme is selected automatically by the encoder using other -// provided options (such as speed) and input geometry type (mesh, point cloud). -// This function should be called only when a specific prediction is preferred -// (e.g., when it is known that the encoder would select a less optimal -// prediction for the given input data). -// -// |prediction_scheme_method| should be one of the entries defined in -// compression/config/compression_shared.h : -// -// PREDICTION_NONE - use no prediction. -// PREDICTION_DIFFERENCE - delta coding -// MESH_PREDICTION_PARALLELOGRAM - parallelogram prediction for meshes. -// MESH_PREDICTION_MULTI_PARALLELOGRAM -// - better and more costly version of the parallelogram prediction. -// MESH_PREDICTION_TEX_COORDS - specialized predictor for tex coordinates. -// -// Note that in case the desired prediction cannot be used, the default -// prediction will be automatically used instead. -void SetNamedAttributePredictionScheme(EncoderOptions *options, - const PointCloud &pc, - GeometryAttribute::Type type, - int prediction_scheme_method); - -// Sets the prediction scheme directly for a specific attribute |options|. -void SetAttributePredictionScheme(Options *options, - int prediction_scheme_method); - -} // namespace draco - -#endif // DRACO_COMPRESSION_ENCODE_H_ diff --git a/compression/point_cloud/algorithms/float_points_tree_decoder.cc b/compression/point_cloud/algorithms/float_points_tree_decoder.cc deleted file mode 100644 index 58cabb5e..00000000 --- a/compression/point_cloud/algorithms/float_points_tree_decoder.cc +++ /dev/null @@ -1,120 +0,0 @@ -// Copyright 2016 The Draco Authors. -// -// Licensed under the Apache License, Version 2.0 (the "License"); -// you may not use this file except in compliance with the License. -// You may obtain a copy of the License at -// -// http://www.apache.org/licenses/LICENSE-2.0 -// -// Unless required by applicable law or agreed to in writing, software -// distributed under the License is distributed on an "AS IS" BASIS, -// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -// See the License for the specific language governing permissions and -// limitations under the License. -// -#include "compression/point_cloud/algorithms/float_points_tree_decoder.h" - -#include - -#include "compression/point_cloud/algorithms/integer_points_kd_tree_decoder.h" -#include "compression/point_cloud/algorithms/quantize_points_3.h" -#include "core/math_utils.h" -#include "core/quantization_utils.h" - -namespace draco { - -FloatPointsTreeDecoder::FloatPointsTreeDecoder() - : num_points_(0), compression_level_(0) { - qinfo_.quantization_bits = 0; - qinfo_.range = 0; -} - -bool FloatPointsTreeDecoder::DecodePointCloudKdTreeInternal( - DecoderBuffer *buffer, std::vector *qpoints) { - if (!buffer->Decode(&qinfo_.quantization_bits)) - return false; - if (!buffer->Decode(&qinfo_.range)) - return false; - if (!buffer->Decode(&num_points_)) - return false; - if (!buffer->Decode(&compression_level_)) - return false; - - if (num_points_ > 0) { - switch (compression_level_) { - case 0: { - qpoints->reserve(num_points_); - IntegerPointsKdTreeDecoder qpoints_decoder; - qpoints_decoder.DecodePoints(buffer, std::back_inserter(*qpoints)); - break; - } - case 1: { - qpoints->reserve(num_points_); - IntegerPointsKdTreeDecoder qpoints_decoder; - qpoints_decoder.DecodePoints(buffer, std::back_inserter(*qpoints)); - break; - } - case 2: { - qpoints->reserve(num_points_); - IntegerPointsKdTreeDecoder qpoints_decoder; - qpoints_decoder.DecodePoints(buffer, std::back_inserter(*qpoints)); - break; - } - case 3: { - qpoints->reserve(num_points_); - IntegerPointsKdTreeDecoder qpoints_decoder; - qpoints_decoder.DecodePoints(buffer, std::back_inserter(*qpoints)); - break; - } - case 4: { - qpoints->reserve(num_points_); - IntegerPointsKdTreeDecoder qpoints_decoder; - qpoints_decoder.DecodePoints(buffer, std::back_inserter(*qpoints)); - break; - } - case 5: { - qpoints->reserve(num_points_); - IntegerPointsKdTreeDecoder qpoints_decoder; - qpoints_decoder.DecodePoints(buffer, std::back_inserter(*qpoints)); - break; - } - case 6: { - qpoints->reserve(num_points_); - IntegerPointsKdTreeDecoder qpoints_decoder; - qpoints_decoder.DecodePoints(buffer, std::back_inserter(*qpoints)); - break; - } - case 7: { - qpoints->reserve(num_points_); - IntegerPointsKdTreeDecoder qpoints_decoder; - qpoints_decoder.DecodePoints(buffer, std::back_inserter(*qpoints)); - break; - } - case 8: { - qpoints->reserve(num_points_); - IntegerPointsKdTreeDecoder qpoints_decoder; - qpoints_decoder.DecodePoints(buffer, std::back_inserter(*qpoints)); - break; - } - case 9: { - qpoints->reserve(num_points_); - IntegerPointsKdTreeDecoder qpoints_decoder; - qpoints_decoder.DecodePoints(buffer, std::back_inserter(*qpoints)); - break; - } - default: { - qpoints->reserve(num_points_); - IntegerPointsKdTreeDecoder qpoints_decoder; - qpoints_decoder.DecodePoints(buffer, std::back_inserter(*qpoints)); - break; - } - } - } - - if (qpoints->size() != num_points_) - return false; - return true; -} - - -} // namespace draco diff --git a/compression/point_cloud/point_cloud_sequential_encoding_test.cc b/compression/point_cloud/point_cloud_sequential_encoding_test.cc deleted file mode 100644 index 75994aba..00000000 --- a/compression/point_cloud/point_cloud_sequential_encoding_test.cc +++ /dev/null @@ -1,62 +0,0 @@ -// Copyright 2016 The Draco Authors. -// -// Licensed under the Apache License, Version 2.0 (the "License"); -// you may not use this file except in compliance with the License. -// You may obtain a copy of the License at -// -// http://www.apache.org/licenses/LICENSE-2.0 -// -// Unless required by applicable law or agreed to in writing, software -// distributed under the License is distributed on an "AS IS" BASIS, -// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -// See the License for the specific language governing permissions and -// limitations under the License. -// -#include "compression/point_cloud/point_cloud_sequential_decoder.h" -#include "compression/point_cloud/point_cloud_sequential_encoder.h" -#include "core/draco_test_base.h" -#include "core/draco_test_utils.h" -#include "io/obj_decoder.h" - -namespace draco { - -class PointCloudSequentialEncodingTest : public ::testing::Test { - protected: - std::unique_ptr DecodeObj(const std::string &file_name) const { - const std::string path = GetTestFileFullPath(file_name); - ObjDecoder decoder; - std::unique_ptr pc(new PointCloud()); - if (!decoder.DecodeFromFile(path, pc.get())) - return nullptr; - return pc; - } - - void TestEncoding(const std::string &file_name) { - std::unique_ptr pc = DecodeObj(file_name); - ASSERT_NE(pc, nullptr); - - EncoderBuffer buffer; - PointCloudSequentialEncoder encoder; - EncoderOptions options = EncoderOptions::CreateDefaultOptions(); - encoder.SetPointCloud(*pc.get()); - ASSERT_TRUE(encoder.Encode(options, &buffer)); - - DecoderBuffer dec_buffer; - dec_buffer.Init(buffer.data(), buffer.size()); - PointCloudSequentialDecoder decoder; - - std::unique_ptr out_pc(new PointCloud()); - ASSERT_TRUE(decoder.Decode(&dec_buffer, out_pc.get())); - - ASSERT_EQ(out_pc->num_points(), pc->num_points()); - } -}; - -TEST_F(PointCloudSequentialEncodingTest, DoesEncodeAndDecode) { - TestEncoding("test_nm.obj"); -} - -// TODO(ostava): Test the reusability of a single instance of the encoder and -// decoder class. - -} // namespace draco diff --git a/core/bit_coder.h b/core/bit_coder.h deleted file mode 100644 index a9d762a8..00000000 --- a/core/bit_coder.h +++ /dev/null @@ -1,154 +0,0 @@ -// Copyright 2016 The Draco Authors. -// -// Licensed under the Apache License, Version 2.0 (the "License"); -// you may not use this file except in compliance with the License. -// You may obtain a copy of the License at -// -// http://www.apache.org/licenses/LICENSE-2.0 -// -// Unless required by applicable law or agreed to in writing, software -// distributed under the License is distributed on an "AS IS" BASIS, -// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -// See the License for the specific language governing permissions and -// limitations under the License. -// -#ifndef DRACO_CORE_BIT_CODER_H_ -#define DRACO_CORE_BIT_CODER_H_ - -#include -#include -#include - -#include "core/bit_utils.h" -#include "core/macros.h" - -namespace draco { - -// Class to encode bits to a bit buffer. -class BitEncoder { - public: - // |data| is the buffer to write the bits into. - explicit BitEncoder(char *data); - - // Write |nbits| of |data| into the bit buffer. - void PutBits(uint32_t data, int32_t nbits) { - DCHECK_GE(nbits, 0); - DCHECK_LE(nbits, 32); - for (int32_t bit = 0; bit < nbits; ++bit) - PutBit((data >> bit) & 1); - } - - // Return number of bits encoded so far. - uint64_t Bits() const { return static_cast(bit_offset_); } - - // TODO(fgalligan): Remove this function once we know we do not need the - // old API anymore. - // This is a function of an old API, that currently does nothing. - void Flush(int /* left_over_bit_value */) {} - - // Return the number of bits required to store the given number - static uint32_t BitsRequired(uint32_t x) { - return static_cast(bits::MostSignificantBit(x)); - } - - private: - void PutBit(uint8_t value) { - const int byte_size = 8; - const uint64_t off = static_cast(bit_offset_); - const uint64_t byte_offset = off / byte_size; - const int bit_shift = off % byte_size; - - // TODO(fgalligan): Check performance if we add a branch and only do one - // memory write if bit_shift is 7. Also try using a temporary variable to - // hold the bits before writing to the buffer. - - bit_buffer_[byte_offset] &= ~(1 << bit_shift); - bit_buffer_[byte_offset] |= value << bit_shift; - bit_offset_++; - } - - char *bit_buffer_; - size_t bit_offset_; -}; - -// Class to decode bits from a bit buffer. -class BitDecoder { - public: - BitDecoder(); - ~BitDecoder(); - - // Sets the bit buffer to |b|. |s| is the size of |b| in bytes. - inline void reset(const void *b, size_t s) { - bit_offset_ = 0; - bit_buffer_ = static_cast(b); - bit_buffer_end_ = bit_buffer_ + s; - } - - // Returns number of bits decoded so far. - inline uint64_t BitsDecoded() const { - return static_cast(bit_offset_); - } - - // Return number of bits available for decoding - inline uint64_t AvailBits() const { - return ((bit_buffer_end_ - bit_buffer_) * 8) - bit_offset_; - } - - inline uint32_t EnsureBits(int k) { - DCHECK_LE(k, 24); - DCHECK_LE(static_cast(k), AvailBits()); - - uint32_t buf = 0; - for (int i = 0; i < k; ++i) { - buf |= PeekBit(i) << i; - } - return buf; // Okay to return extra bits - } - - inline void ConsumeBits(int k) { bit_offset_ += k; } - - // Returns |nbits| bits in |x|. - inline bool GetBits(int32_t nbits, uint32_t *x) { - DCHECK_GE(nbits, 0); - DCHECK_LE(nbits, 32); - uint32_t value = 0; - for (int32_t bit = 0; bit < nbits; ++bit) - value |= GetBit() << bit; - *x = value; - return true; - } - - private: - // TODO(fgalligan): Add support for error reporting on range check. - // Returns one bit from the bit buffer. - inline int GetBit() { - const size_t off = bit_offset_; - const size_t byte_offset = off >> 3; - const int bit_shift = static_cast(off & 0x7); - if (bit_buffer_ + byte_offset < bit_buffer_end_) { - const int bit = (bit_buffer_[byte_offset] >> bit_shift) & 1; - bit_offset_ = off + 1; - return bit; - } - return 0; - } - - inline int PeekBit(int offset) { - const size_t off = bit_offset_ + offset; - const size_t byte_offset = off >> 3; - const int bit_shift = static_cast(off & 0x7); - if (bit_buffer_ + byte_offset < bit_buffer_end_) { - const int bit = (bit_buffer_[byte_offset] >> bit_shift) & 1; - return bit; - } - return 0; - } - - const uint8_t *bit_buffer_; - const uint8_t *bit_buffer_end_; - size_t bit_offset_; -}; - -} // namespace draco - -#endif // DRACO_CORE_BIT_CODER_H_ diff --git a/core/draco_types.cc b/core/draco_types.cc deleted file mode 100644 index a3fa13cf..00000000 --- a/core/draco_types.cc +++ /dev/null @@ -1,86 +0,0 @@ -// Copyright 2016 The Draco Authors. -// -// Licensed under the Apache License, Version 2.0 (the "License"); -// you may not use this file except in compliance with the License. -// You may obtain a copy of the License at -// -// http://www.apache.org/licenses/LICENSE-2.0 -// -// Unless required by applicable law or agreed to in writing, software -// distributed under the License is distributed on an "AS IS" BASIS, -// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -// See the License for the specific language governing permissions and -// limitations under the License. -// -#include "core/draco_types.h" - -namespace draco { - -int32_t DataTypeLength(DataType dt) { - switch (dt) { - case DT_INT8: - case DT_UINT8: - return 1; - case DT_INT16: - case DT_UINT16: - return 2; - case DT_INT32: - case DT_UINT32: - return 4; - case DT_INT64: - case DT_UINT64: - return 8; - case DT_FLOAT32: - return 4; - case DT_FLOAT64: - return 8; - case DT_BOOL: - return 1; - default: - return -1; - } -} - -DataType GetDataTypeFromGLTypeName(const std::string &data_type_name) { - if (data_type_name.compare("GL_BYTE") == 0) - return DT_INT8; - if (data_type_name.compare("GL_FLOAT") == 0) - return DT_FLOAT32; - if (data_type_name.compare("GL_DOUBLE") == 0) - return DT_FLOAT64; - if (data_type_name.compare("GL_UNSIGNED_BYTE") == 0) - return DT_UINT8; - if (data_type_name.compare("GL_UNSIGNED_SHORT") == 0) - return DT_UINT16; - if (data_type_name.compare("GL_UNSIGNED_INT") == 0) - return DT_UINT32; - return DT_INVALID; -} - -std::string GetDataTypeGLName(DataType data_type) { - std::string data_type_name; - switch (data_type) { - case DT_INT8: - data_type_name = "GL_BYTE"; - break; - case DT_FLOAT32: - data_type_name = "GL_FLOAT"; - break; - case DT_UINT8: - data_type_name = "GL_UNSIGNED_BYTE"; - break; - case DT_UINT16: - data_type_name = "GL_UNSIGNED_SHORT"; - break; - case DT_UINT32: - data_type_name = "GL_UNSIGNED_INT"; - break; - case DT_FLOAT64: - data_type_name = "GL_DOUBLE"; - break; - default: - return std::string(); - } - return data_type_name; -} -} // namespace draco diff --git a/core/math_utils_test.cc b/core/math_utils_test.cc deleted file mode 100644 index 1741be7a..00000000 --- a/core/math_utils_test.cc +++ /dev/null @@ -1,4 +0,0 @@ -#include "core/math_utils.h" -#include "core/draco_test_base.h" - -TEST(MathUtils, Mod) { EXPECT_EQ(DRACO_INCREMENT_MOD(1, 1 << 1), 0); } diff --git a/core/rans_coding_test.cc b/core/rans_coding_test.cc deleted file mode 100644 index 817fa764..00000000 --- a/core/rans_coding_test.cc +++ /dev/null @@ -1,9 +0,0 @@ -#include "core/adaptive_rans_bit_decoder.h" -#include "core/adaptive_rans_bit_encoder.h" -#include "core/draco_test_base.h" -#include "core/rans_bit_decoder.h" -#include "core/rans_bit_encoder.h" - -// Just including rans_coding.h and adaptive_rans_coding.h gets an asan error -// when compiling (blaze test :rans_coding_test --config=asan) -TEST(RansCodingTest, LinkerTest) {} diff --git a/javascript/draco_decoder.js b/javascript/draco_decoder.js index 5d4a9405..2382f1f9 100644 --- a/javascript/draco_decoder.js +++ b/javascript/draco_decoder.js @@ -1,26 +1,29 @@ -var DracoModule = function(DracoModule) { - DracoModule = DracoModule || {}; - var Module = DracoModule; +var DracoDecoderModule = function(DracoDecoderModule) { + DracoDecoderModule = DracoDecoderModule || {}; + var Module = DracoDecoderModule; -var isRuntimeInitialized=false;var isModuleParsed=false;Module["onRuntimeInitialized"]=(function(){isRuntimeInitialized=true;if(isModuleParsed){if(typeof Module["onModuleLoaded"]==="function"){Module["onModuleLoaded"](Module)}}});Module["onModuleParsed"]=(function(){isModuleParsed=true;if(isRuntimeInitialized){if(typeof Module["onModuleLoaded"]==="function"){Module["onModuleLoaded"](Module)}}});function isVersionSupported(versionString){if(typeof versionString!=="string")return false;const version=versionString.split(".");if(version.length<2||version.length>3)return false;if(version[0]>0||version[1]>9)return false;return true}Module["isVersionSupported"]=isVersionSupported;var Module;if(!Module)Module=(typeof DracoModule!=="undefined"?DracoModule:null)||{};var moduleOverrides={};for(var key in Module){if(Module.hasOwnProperty(key)){moduleOverrides[key]=Module[key]}}var ENVIRONMENT_IS_WEB=false;var ENVIRONMENT_IS_WORKER=false;var ENVIRONMENT_IS_NODE=false;var ENVIRONMENT_IS_SHELL=false;if(Module["ENVIRONMENT"]){if(Module["ENVIRONMENT"]==="WEB"){ENVIRONMENT_IS_WEB=true}else if(Module["ENVIRONMENT"]==="WORKER"){ENVIRONMENT_IS_WORKER=true}else if(Module["ENVIRONMENT"]==="NODE"){ENVIRONMENT_IS_NODE=true}else if(Module["ENVIRONMENT"]==="SHELL"){ENVIRONMENT_IS_SHELL=true}else{throw new Error("The provided Module['ENVIRONMENT'] value is not valid. It must be one of: WEB|WORKER|NODE|SHELL.")}}else{ENVIRONMENT_IS_WEB=typeof window==="object";ENVIRONMENT_IS_WORKER=typeof importScripts==="function";ENVIRONMENT_IS_NODE=typeof process==="object"&&typeof require==="function"&&!ENVIRONMENT_IS_WEB&&!ENVIRONMENT_IS_WORKER;ENVIRONMENT_IS_SHELL=!ENVIRONMENT_IS_WEB&&!ENVIRONMENT_IS_NODE&&!ENVIRONMENT_IS_WORKER}if(ENVIRONMENT_IS_NODE){if(!Module["print"])Module["print"]=console.log;if(!Module["printErr"])Module["printErr"]=console.warn;var nodeFS;var nodePath;Module["read"]=function read(filename,binary){if(!nodeFS)nodeFS=require("fs");if(!nodePath)nodePath=require("path");filename=nodePath["normalize"](filename);var ret=nodeFS["readFileSync"](filename);return binary?ret:ret.toString()};Module["readBinary"]=function readBinary(filename){var ret=Module["read"](filename,true);if(!ret.buffer){ret=new Uint8Array(ret)}assert(ret.buffer);return ret};Module["load"]=function load(f){globalEval(read(f))};if(!Module["thisProgram"]){if(process["argv"].length>1){Module["thisProgram"]=process["argv"][1].replace(/\\/g,"/")}else{Module["thisProgram"]="unknown-program"}}Module["arguments"]=process["argv"].slice(2);if(typeof module!=="undefined"){module["exports"]=Module}process["on"]("uncaughtException",(function(ex){if(!(ex instanceof ExitStatus)){throw ex}}));Module["inspect"]=(function(){return"[Emscripten Module object]"})}else if(ENVIRONMENT_IS_SHELL){if(!Module["print"])Module["print"]=print;if(typeof printErr!="undefined")Module["printErr"]=printErr;if(typeof read!="undefined"){Module["read"]=read}else{Module["read"]=function read(){throw"no read() available"}}Module["readBinary"]=function readBinary(f){if(typeof readbuffer==="function"){return new Uint8Array(readbuffer(f))}var data=read(f,"binary");assert(typeof data==="object");return data};if(typeof scriptArgs!="undefined"){Module["arguments"]=scriptArgs}else if(typeof arguments!="undefined"){Module["arguments"]=arguments}}else if(ENVIRONMENT_IS_WEB||ENVIRONMENT_IS_WORKER){Module["read"]=function read(url){var xhr=new XMLHttpRequest;xhr.open("GET",url,false);xhr.send(null);return xhr.responseText};Module["readAsync"]=function readAsync(url,onload,onerror){var xhr=new XMLHttpRequest;xhr.open("GET",url,true);xhr.responseType="arraybuffer";xhr.onload=function xhr_onload(){if(xhr.status==200||xhr.status==0&&xhr.response){onload(xhr.response)}else{onerror()}};xhr.onerror=onerror;xhr.send(null)};if(typeof arguments!="undefined"){Module["arguments"]=arguments}if(typeof console!=="undefined"){if(!Module["print"])Module["print"]=function print(x){console.log(x)};if(!Module["printErr"])Module["printErr"]=function printErr(x){console.warn(x)}}else{var TRY_USE_DUMP=false;if(!Module["print"])Module["print"]=TRY_USE_DUMP&&typeof dump!=="undefined"?(function(x){dump(x)}):(function(x){})}if(ENVIRONMENT_IS_WORKER){Module["load"]=importScripts}if(typeof Module["setWindowTitle"]==="undefined"){Module["setWindowTitle"]=(function(title){document.title=title})}}else{throw"Unknown runtime environment. Where are we?"}function globalEval(x){eval.call(null,x)}if(!Module["load"]&&Module["read"]){Module["load"]=function load(f){globalEval(Module["read"](f))}}if(!Module["print"]){Module["print"]=(function(){})}if(!Module["printErr"]){Module["printErr"]=Module["print"]}if(!Module["arguments"]){Module["arguments"]=[]}if(!Module["thisProgram"]){Module["thisProgram"]="./this.program"}Module.print=Module["print"];Module.printErr=Module["printErr"];Module["preRun"]=[];Module["postRun"]=[];for(var key in moduleOverrides){if(moduleOverrides.hasOwnProperty(key)){Module[key]=moduleOverrides[key]}}moduleOverrides=undefined;var Runtime={setTempRet0:(function(value){tempRet0=value}),getTempRet0:(function(){return tempRet0}),stackSave:(function(){return STACKTOP}),stackRestore:(function(stackTop){STACKTOP=stackTop}),getNativeTypeSize:(function(type){switch(type){case"i1":case"i8":return 1;case"i16":return 2;case"i32":return 4;case"i64":return 8;case"float":return 4;case"double":return 8;default:{if(type[type.length-1]==="*"){return Runtime.QUANTUM_SIZE}else if(type[0]==="i"){var bits=parseInt(type.substr(1));assert(bits%8===0);return bits/8}else{return 0}}}}),getNativeFieldSize:(function(type){return Math.max(Runtime.getNativeTypeSize(type),Runtime.QUANTUM_SIZE)}),STACK_ALIGN:16,prepVararg:(function(ptr,type){if(type==="double"||type==="i64"){if(ptr&7){assert((ptr&7)===4);ptr+=4}}else{assert((ptr&3)===0)}return ptr}),getAlignSize:(function(type,size,vararg){if(!vararg&&(type=="i64"||type=="double"))return 8;if(!type)return Math.min(size,8);return Math.min(size||(type?Runtime.getNativeFieldSize(type):0),Runtime.QUANTUM_SIZE)}),dynCall:(function(sig,ptr,args){if(args&&args.length){return Module["dynCall_"+sig].apply(null,[ptr].concat(args))}else{return Module["dynCall_"+sig].call(null,ptr)}}),functionPointers:[],addFunction:(function(func){for(var i=0;i>2];var end=(ret+size+15|0)&-16;HEAP32[DYNAMICTOP_PTR>>2]=end;if(end>=TOTAL_MEMORY){var success=enlargeMemory();if(!success){HEAP32[DYNAMICTOP_PTR>>2]=ret;return 0}}return ret}),alignMemory:(function(size,quantum){var ret=size=Math.ceil(size/(quantum?quantum:16))*(quantum?quantum:16);return ret}),makeBigInt:(function(low,high,unsigned){var ret=unsigned?+(low>>>0)+ +(high>>>0)*+4294967296:+(low>>>0)+ +(high|0)*+4294967296;return ret}),GLOBAL_BASE:8,QUANTUM_SIZE:4,__dummy__:0};var ABORT=0;var EXITSTATUS=0;function assert(condition,text){if(!condition){abort("Assertion failed: "+text)}}function getCFunc(ident){var func=Module["_"+ident];if(!func){try{func=eval("_"+ident)}catch(e){}}assert(func,"Cannot call unknown function "+ident+" (perhaps LLVM optimizations or closure removed it?)");return func}var ccall;((function(){var JSfuncs={"stackSave":(function(){Runtime.stackSave()}),"stackRestore":(function(){Runtime.stackRestore()}),"arrayToC":(function(arr){var ret=Runtime.stackAlloc(arr.length);writeArrayToMemory(arr,ret);return ret}),"stringToC":(function(str){var ret=0;if(str!==null&&str!==undefined&&str!==0){var len=(str.length<<2)+1;ret=Runtime.stackAlloc(len);stringToUTF8(str,ret,len)}return ret})};var toC={"string":JSfuncs["stringToC"],"array":JSfuncs["arrayToC"]};ccall=function ccallFunc(ident,returnType,argTypes,args,opts){var func=getCFunc(ident);var cArgs=[];var stack=0;if(args){for(var i=0;i>0]=value;break;case"i8":HEAP8[ptr>>0]=value;break;case"i16":HEAP16[ptr>>1]=value;break;case"i32":HEAP32[ptr>>2]=value;break;case"i64":tempI64=[value>>>0,(tempDouble=value,+Math_abs(tempDouble)>=+1?tempDouble>+0?(Math_min(+Math_floor(tempDouble/+4294967296),+4294967295)|0)>>>0:~~+Math_ceil((tempDouble- +(~~tempDouble>>>0))/+4294967296)>>>0:0)],HEAP32[ptr>>2]=tempI64[0],HEAP32[ptr+4>>2]=tempI64[1];break;case"float":HEAPF32[ptr>>2]=value;break;case"double":HEAPF64[ptr>>3]=value;break;default:abort("invalid type for setValue: "+type)}}function getValue(ptr,type,noSafe){type=type||"i8";if(type.charAt(type.length-1)==="*")type="i32";switch(type){case"i1":return HEAP8[ptr>>0];case"i8":return HEAP8[ptr>>0];case"i16":return HEAP16[ptr>>1];case"i32":return HEAP32[ptr>>2];case"i64":return HEAP32[ptr>>2];case"float":return HEAPF32[ptr>>2];case"double":return HEAPF64[ptr>>3];default:abort("invalid type for setValue: "+type)}return null}var ALLOC_NORMAL=0;var ALLOC_STATIC=2;var ALLOC_NONE=4;function allocate(slab,types,allocator,ptr){var zeroinit,size;if(typeof slab==="number"){zeroinit=true;size=slab}else{zeroinit=false;size=slab.length}var singleType=typeof types==="string"?types:null;var ret;if(allocator==ALLOC_NONE){ret=ptr}else{ret=[typeof _malloc==="function"?_malloc:Runtime.staticAlloc,Runtime.stackAlloc,Runtime.staticAlloc,Runtime.dynamicAlloc][allocator===undefined?ALLOC_STATIC:allocator](Math.max(size,singleType?1:types.length))}if(zeroinit){var ptr=ret,stop;assert((ret&3)==0);stop=ret+(size&~3);for(;ptr>2]=0}stop=ret+size;while(ptr>0]=0}return ret}if(singleType==="i8"){if(slab.subarray||slab.slice){HEAPU8.set(slab,ret)}else{HEAPU8.set(new Uint8Array(slab),ret)}return ret}var i=0,type,typeSize,previousType;while(i>0];hasUtf|=t;if(t==0&&!length)break;i++;if(length&&i==length)break}if(!length)length=i;var ret="";if(hasUtf<128){var MAX_CHUNK=1024;var curr;while(length>0){curr=String.fromCharCode.apply(String,HEAPU8.subarray(ptr,ptr+Math.min(length,MAX_CHUNK)));ret=ret?ret+curr:curr;ptr+=MAX_CHUNK;length-=MAX_CHUNK}return ret}return Module["UTF8ToString"](ptr)}var UTF8Decoder=typeof TextDecoder!=="undefined"?new TextDecoder("utf8"):undefined;function UTF8ArrayToString(u8Array,idx){var endPtr=idx;while(u8Array[endPtr])++endPtr;if(endPtr-idx>16&&u8Array.subarray&&UTF8Decoder){return UTF8Decoder.decode(u8Array.subarray(idx,endPtr))}else{var u0,u1,u2,u3,u4,u5;var str="";while(1){u0=u8Array[idx++];if(!u0)return str;if(!(u0&128)){str+=String.fromCharCode(u0);continue}u1=u8Array[idx++]&63;if((u0&224)==192){str+=String.fromCharCode((u0&31)<<6|u1);continue}u2=u8Array[idx++]&63;if((u0&240)==224){u0=(u0&15)<<12|u1<<6|u2}else{u3=u8Array[idx++]&63;if((u0&248)==240){u0=(u0&7)<<18|u1<<12|u2<<6|u3}else{u4=u8Array[idx++]&63;if((u0&252)==248){u0=(u0&3)<<24|u1<<18|u2<<12|u3<<6|u4}else{u5=u8Array[idx++]&63;u0=(u0&1)<<30|u1<<24|u2<<18|u3<<12|u4<<6|u5}}}if(u0<65536){str+=String.fromCharCode(u0)}else{var ch=u0-65536;str+=String.fromCharCode(55296|ch>>10,56320|ch&1023)}}}}function stringToUTF8Array(str,outU8Array,outIdx,maxBytesToWrite){if(!(maxBytesToWrite>0))return 0;var startIdx=outIdx;var endIdx=outIdx+maxBytesToWrite-1;for(var i=0;i=55296&&u<=57343)u=65536+((u&1023)<<10)|str.charCodeAt(++i)&1023;if(u<=127){if(outIdx>=endIdx)break;outU8Array[outIdx++]=u}else if(u<=2047){if(outIdx+1>=endIdx)break;outU8Array[outIdx++]=192|u>>6;outU8Array[outIdx++]=128|u&63}else if(u<=65535){if(outIdx+2>=endIdx)break;outU8Array[outIdx++]=224|u>>12;outU8Array[outIdx++]=128|u>>6&63;outU8Array[outIdx++]=128|u&63}else if(u<=2097151){if(outIdx+3>=endIdx)break;outU8Array[outIdx++]=240|u>>18;outU8Array[outIdx++]=128|u>>12&63;outU8Array[outIdx++]=128|u>>6&63;outU8Array[outIdx++]=128|u&63}else if(u<=67108863){if(outIdx+4>=endIdx)break;outU8Array[outIdx++]=248|u>>24;outU8Array[outIdx++]=128|u>>18&63;outU8Array[outIdx++]=128|u>>12&63;outU8Array[outIdx++]=128|u>>6&63;outU8Array[outIdx++]=128|u&63}else{if(outIdx+5>=endIdx)break;outU8Array[outIdx++]=252|u>>30;outU8Array[outIdx++]=128|u>>24&63;outU8Array[outIdx++]=128|u>>18&63;outU8Array[outIdx++]=128|u>>12&63;outU8Array[outIdx++]=128|u>>6&63;outU8Array[outIdx++]=128|u&63}}outU8Array[outIdx]=0;return outIdx-startIdx}function stringToUTF8(str,outPtr,maxBytesToWrite){return stringToUTF8Array(str,HEAPU8,outPtr,maxBytesToWrite)}function lengthBytesUTF8(str){var len=0;for(var i=0;i=55296&&u<=57343)u=65536+((u&1023)<<10)|str.charCodeAt(++i)&1023;if(u<=127){++len}else if(u<=2047){len+=2}else if(u<=65535){len+=3}else if(u<=2097151){len+=4}else if(u<=67108863){len+=5}else{len+=6}}return len}var UTF16Decoder=typeof TextDecoder!=="undefined"?new TextDecoder("utf-16le"):undefined;function demangle(func){var hasLibcxxabi=!!Module["___cxa_demangle"];if(hasLibcxxabi){try{var s=func.substr(1);var len=lengthBytesUTF8(s)+1;var buf=_malloc(len);stringToUTF8(s,buf,len);var status=_malloc(4);var ret=Module["___cxa_demangle"](buf,0,0,status);if(getValue(status,"i32")===0&&ret){return Pointer_stringify(ret)}}catch(e){}finally{if(buf)_free(buf);if(status)_free(status);if(ret)_free(ret)}return func}Runtime.warnOnce("warning: build with -s DEMANGLE_SUPPORT=1 to link in libcxxabi demangling");return func}function demangleAll(text){return text.replace(/__Z[\w\d_]+/g,(function(x){var y=demangle(x);return x===y?x:x+" ["+y+"]"}))}function jsStackTrace(){var err=new Error;if(!err.stack){try{throw new Error(0)}catch(e){err=e}if(!err.stack){return"(no stack trace available)"}}return err.stack.toString()}function stackTrace(){var js=jsStackTrace();if(Module["extraStackTrace"])js+="\n"+Module["extraStackTrace"]();return demangleAll(js)}function alignMemoryPage(x){if(x%4096>0){x+=4096-x%4096}return x}var HEAP;var buffer;var HEAP8,HEAPU8,HEAP16,HEAPU16,HEAP32,HEAPU32,HEAPF32,HEAPF64;function updateGlobalBuffer(buf){Module["buffer"]=buffer=buf}function updateGlobalBufferViews(){Module["HEAP8"]=HEAP8=new Int8Array(buffer);Module["HEAP16"]=HEAP16=new Int16Array(buffer);Module["HEAP32"]=HEAP32=new Int32Array(buffer);Module["HEAPU8"]=HEAPU8=new Uint8Array(buffer);Module["HEAPU16"]=HEAPU16=new Uint16Array(buffer);Module["HEAPU32"]=HEAPU32=new Uint32Array(buffer);Module["HEAPF32"]=HEAPF32=new Float32Array(buffer);Module["HEAPF64"]=HEAPF64=new Float64Array(buffer)}var STATIC_BASE,STATICTOP,staticSealed;var STACK_BASE,STACKTOP,STACK_MAX;var DYNAMIC_BASE,DYNAMICTOP_PTR;STATIC_BASE=STATICTOP=STACK_BASE=STACKTOP=STACK_MAX=DYNAMIC_BASE=DYNAMICTOP_PTR=0;staticSealed=false;function abortOnCannotGrowMemory(){abort("Cannot enlarge memory arrays. Either (1) compile with -s TOTAL_MEMORY=X with X higher than the current value "+TOTAL_MEMORY+", (2) compile with -s ALLOW_MEMORY_GROWTH=1 which adjusts the size at runtime but prevents some optimizations, (3) set Module.TOTAL_MEMORY to a higher value before the program runs, or if you want malloc to return NULL (0) instead of this abort, compile with -s ABORTING_MALLOC=0 ")}if(!Module["reallocBuffer"])Module["reallocBuffer"]=(function(size){var ret;try{if(ArrayBuffer.transfer){ret=ArrayBuffer.transfer(buffer,size)}else{var oldHEAP8=HEAP8;ret=new ArrayBuffer(size);var temp=new Int8Array(ret);temp.set(oldHEAP8)}}catch(e){return false}var success=_emscripten_replace_memory(ret);if(!success)return false;return ret});function enlargeMemory(){var LIMIT=Math.pow(2,31);if(HEAP32[DYNAMICTOP_PTR>>2]>=LIMIT)return false;while(TOTAL_MEMORY>2]){if(TOTAL_MEMORY=LIMIT)return false;var replacement=Module["reallocBuffer"](TOTAL_MEMORY);if(!replacement)return false;updateGlobalBuffer(replacement);updateGlobalBufferViews();return true}var byteLength;try{byteLength=Function.prototype.call.bind(Object.getOwnPropertyDescriptor(ArrayBuffer.prototype,"byteLength").get);byteLength(new ArrayBuffer(4))}catch(e){byteLength=(function(buffer){return buffer.byteLength})}var TOTAL_STACK=Module["TOTAL_STACK"]||5242880;var TOTAL_MEMORY=Module["TOTAL_MEMORY"]||16777216;var WASM_PAGE_SIZE=64*1024;var totalMemory=WASM_PAGE_SIZE;while(totalMemory0){var callback=callbacks.shift();if(typeof callback=="function"){callback();continue}var func=callback.func;if(typeof func==="number"){if(callback.arg===undefined){Runtime.dynCall("v",func)}else{Runtime.dynCall("vi",func,[callback.arg])}}else{func(callback.arg===undefined?null:callback.arg)}}}var __ATPRERUN__=[];var __ATINIT__=[];var __ATMAIN__=[];var __ATEXIT__=[];var __ATPOSTRUN__=[];var runtimeInitialized=false;var runtimeExited=false;function preRun(){if(Module["preRun"]){if(typeof Module["preRun"]=="function")Module["preRun"]=[Module["preRun"]];while(Module["preRun"].length){addOnPreRun(Module["preRun"].shift())}}callRuntimeCallbacks(__ATPRERUN__)}function ensureInitRuntime(){if(runtimeInitialized)return;runtimeInitialized=true;callRuntimeCallbacks(__ATINIT__)}function preMain(){callRuntimeCallbacks(__ATMAIN__)}function exitRuntime(){callRuntimeCallbacks(__ATEXIT__);runtimeExited=true}function postRun(){if(Module["postRun"]){if(typeof Module["postRun"]=="function")Module["postRun"]=[Module["postRun"]];while(Module["postRun"].length){addOnPostRun(Module["postRun"].shift())}}callRuntimeCallbacks(__ATPOSTRUN__)}function addOnPreRun(cb){__ATPRERUN__.unshift(cb)}function addOnPreMain(cb){__ATMAIN__.unshift(cb)}function addOnPostRun(cb){__ATPOSTRUN__.unshift(cb)}function intArrayFromString(stringy,dontAddNull,length){var len=length>0?length:lengthBytesUTF8(stringy)+1;var u8array=new Array(len);var numBytesWritten=stringToUTF8Array(stringy,u8array,0,u8array.length);if(dontAddNull)u8array.length=numBytesWritten;return u8array}function writeArrayToMemory(array,buffer){HEAP8.set(array,buffer)}function writeAsciiToMemory(str,buffer,dontAddNull){for(var i=0;i>0]=str.charCodeAt(i)}if(!dontAddNull)HEAP8[buffer>>0]=0}if(!Math["imul"]||Math["imul"](4294967295,5)!==-5)Math["imul"]=function imul(a,b){var ah=a>>>16;var al=a&65535;var bh=b>>>16;var bl=b&65535;return al*bl+(ah*bl+al*bh<<16)|0};Math.imul=Math["imul"];if(!Math["fround"]){var froundBuffer=new Float32Array(1);Math["fround"]=(function(x){froundBuffer[0]=x;return froundBuffer[0]})}Math.fround=Math["fround"];if(!Math["clz32"])Math["clz32"]=(function(x){x=x>>>0;for(var i=0;i<32;i++){if(x&1<<31-i)return i}return 32});Math.clz32=Math["clz32"];if(!Math["trunc"])Math["trunc"]=(function(x){return x<0?Math.ceil(x):Math.floor(x)});Math.trunc=Math["trunc"];var Math_abs=Math.abs;var Math_cos=Math.cos;var Math_sin=Math.sin;var Math_tan=Math.tan;var Math_acos=Math.acos;var Math_asin=Math.asin;var Math_atan=Math.atan;var Math_atan2=Math.atan2;var Math_exp=Math.exp;var Math_log=Math.log;var Math_sqrt=Math.sqrt;var Math_ceil=Math.ceil;var Math_floor=Math.floor;var Math_pow=Math.pow;var Math_imul=Math.imul;var Math_fround=Math.fround;var Math_round=Math.round;var Math_min=Math.min;var Math_clz32=Math.clz32;var Math_trunc=Math.trunc;var runDependencies=0;var runDependencyWatcher=null;var dependenciesFulfilled=null;Module["preloadedImages"]={};Module["preloadedAudios"]={};var ASM_CONSTS=[];STATIC_BASE=8;STATICTOP=STATIC_BASE+18992;__ATINIT__.push();allocate([40,25,0,0,188,26,0,0,80,25,0,0,209,26,0,0,8,0,0,0,0,0,0,0,40,25,0,0,223,26,0,0,40,25,0,0,251,26,0,0,80,25,0,0,29,27,0,0,40,0,0,0,0,0,0,0,40,25,0,0,51,27,0,0,80,25,0,0,204,33,0,0,64,0,0,0,0,0,0,0,80,25,0,0,88,27,0,0,104,0,0,0,0,0,0,0,80,25,0,0,167,27,0,0,120,0,0,0,0,0,0,0,80,25,0,0,236,27,0,0,136,0,0,0,0,0,0,0,40,25,0,0,25,28,0,0,80,25,0,0,61,28,0,0,160,0,0,0,0,0,0,0,80,25,0,0,192,28,0,0,104,0,0,0,0,0,0,0,80,25,0,0,58,29,0,0,160,0,0,0,0,0,0,0,80,25,0,0,209,29,0,0,160,0,0,0,0,0,0,0,80,25,0,0,93,30,0,0,160,0,0,0,0,0,0,0,80,25,0,0,228,30,0,0,240,0,0,0,0,0,0,0,80,25,0,0,116,31,0,0,104,0,0,0,0,0,0,0,80,25,0,0,251,31,0,0,240,0,0,0,0,0,0,0,80,25,0,0,159,32,0,0,240,0,0,0,0,0,0,0,80,25,0,0,56,33,0,0,240,0,0,0,0,0,0,0,80,25,0,0,248,33,0,0,72,0,0,0,0,0,0,0,80,25,0,0,116,51,0,0,72,0,0,0,0,0,0,0,80,25,0,0,188,36,0,0,96,1,0,0,0,0,0,0,80,25,0,0,35,37,0,0,120,0,0,0,0,0,0,0,80,25,0,0,242,37,0,0,128,1,0,0,0,0,0,0,80,25,0,0,141,38,0,0,96,1,0,0,0,0,0,0,80,25,0,0,31,39,0,0,128,1,0,0,0,0,0,0,80,25,0,0,206,39,0,0,128,1,0,0,0,0,0,0,80,25,0,0,114,40,0,0,128,1,0,0,0,0,0,0,80,25,0,0,17,41,0,0,208,1,0,0,0,0,0,0,80,25,0,0,185,41,0,0,96,1,0,0,0,0,0,0,80,25,0,0,88,42,0,0,208,1,0,0,0,0,0,0,80,25,0,0,20,43,0,0,208,1,0,0,0,0,0,0,80,25,0,0,197,43,0,0,208,1,0,0,0,0,0,0,80,25,0,0,205,44,0,0,32,2,0,0,0,0,0,0,80,25,0,0,39,45,0,0,120,0,0,0,0,0,0,0,80,25,0,0,119,45,0,0,64,2,0,0,0,0,0,0,80,25,0,0,5,46,0,0,32,2,0,0,0,0,0,0,80,25,0,0,138,46,0,0,64,2,0,0,0,0,0,0,80,25,0,0,44,47,0,0,64,2,0,0,0,0,0,0,80,25,0,0,195,47,0,0,64,2,0,0,0,0,0,0,80,25,0,0,85,48,0,0,144,2,0,0,0,0,0,0,80,25,0,0,240,48,0,0,32,2,0,0,0,0,0,0,80,25,0,0,130,49,0,0,144,2,0,0,0,0,0,0,80,25,0,0,49,50,0,0,144,2,0,0,0,0,0,0,80,25,0,0,213,50,0,0,144,2,0,0,0,0,0,0,80,25,0,0,159,51,0,0,32,0,0,0,0,0,0,0,80,25,0,0,3,52,0,0,40,0,0,0,0,0,0,0,80,25,0,0,207,51,0,0,0,3,0,0,0,0,0,0,40,25,0,0,233,51,0,0,80,25,0,0,41,52,0,0,40,0,0,0,0,0,0,0,80,25,0,0,71,53,0,0,32,0,0,0,0,0,0,0,80,25,0,0,211,54,0,0,48,0,0,0,0,0,0,0,80,25,0,0,243,54,0,0,48,0,0,0,0,0,0,0,80,25,0,0,109,58,0,0,152,3,0,0,0,0,0,0,40,25,0,0,20,55,0,0,80,25,0,0,2,56,0,0,0,3,0,0,0,0,0,0,40,25,0,0,204,56,0,0,80,25,0,0,7,57,0,0,0,3,0,0,0,0,0,0,80,25,0,0,176,57,0,0,0,3,0,0,0,0,0,0,40,25,0,0,185,58,0,0,80,25,0,0,231,58,0,0,152,3,0,0,0,0,0,0,80,25,0,0,61,59,0,0,152,3,0,0,0,0,0,0,40,25,0,0,84,70,0,0,80,25,0,0,180,70,0,0,216,3,0,0,0,0,0,0,80,25,0,0,97,70,0,0,232,3,0,0,0,0,0,0,40,25,0,0,130,70,0,0,80,25,0,0,143,70,0,0,200,3,0,0,0,0,0,0,80,25,0,0,165,71,0,0,192,3,0,0,0,0,0,0,80,25,0,0,214,71,0,0,216,3,0,0,0,0,0,0,80,25,0,0,178,71,0,0,16,4,0,0,0,0,0,0,0,0,0,192,0,0,0,192,0,0,0,192,0,0,0,192,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,0,0,0,86,85,85,85,2,0,0,0,0,0,0,0,2,0,0,0,154,153,153,153,3,0,0,0,86,85,85,85,3,0,0,0,37,73,146,36,3,0,0,0,0,0,0,0,3,0,0,0,200,113,28,199,4,0,0,0,154,153,153,153,4,0,0,0,70,23,93,116,4,0,0,0,86,85,85,85,4,0,0,0,60,177,19,59,4,0,0,0,37,73,146,36,4,0,0,0,18,17,17,17,4,0,0,0,0,0,0,0,4,0,0,0,226,225,225,225,5,0,0,0,200,113,28,199,5,0,0,0,203,107,40,175,5,0,0,0,154,153,153,153,5,0,0,0,135,97,24,134,5,0,0,0,70,23,93,116,5,0,0,0,145,133,44,100,5,0,0,0,86,85,85,85,5,0,0,0,123,20,174,71,5,0,0,0,60,177,19,59,5,0,0,0,219,75,104,47,5,0,0,0,37,73,146,36,5,0,0,0,18,150,123,26,5,0,0,0,18,17,17,17,5,0,0,0,133,16,66,8,5,0,0,0,0,0,0,0,5,0,0,0,8,31,124,240,6,0,0,0,226,225,225,225,6,0,0,0,213,65,29,212,6,0,0,0,200,113,28,199,6,0,0,0,77,145,207,186,6,0,0,0,203,107,40,175,6,0,0,0,165,65,26,164,6,0,0,0,154,153,153,153,6,0,0,0,250,24,156,143,6,0,0,0,135,97,24,134,6,0,0,0,24,244,5,125,6,0,0,0,70,23,93,116,6,0,0,0,109,193,22,108,6,0,0,0,145,133,44,100,6,0,0,0,186,130,152,92,6,0,0,0,86,85,85,85,6,0,0,0,115,10,94,78,6,0,0,0,123,20,174,71,6,0,0,0,66,65,65,65,6,0,0,0,60,177,19,59,6,0,0,0,179,207,33,53,6,0,0,0,219,75,104,47,6,0,0,0,159,18,228,41,6,0,0,0,37,73,146,36,6,0,0,0,221,71,112,31,6,0,0,0,18,150,123,26,6,0,0,0,248,229,177,21,6,0,0,0,18,17,17,17,6,0,0,0,252,20,151,12,6,0,0,0,133,16,66,8,6,0,0,0,5,65,16,4,6,0,0,0,0,0,0,0,6,0,0,0,249,129,31,248,7,0,0,0,8,31,124,240,7,0,0,0,192,26,19,233,7,0,0,0,226,225,225,225,7,0,0,0,108,7,230,218,7,0,0,0,213,65,29,212,7,0,0,0,145,104,133,205,7,0,0,0,200,113,28,199,7,0,0,0,57,112,224,192,7,0,0,0,77,145,207,186,7,0,0,0,79,27,232,180,7,0,0,0,203,107,40,175,7,0,0,0,7,246,142,169,7,0,0,0,165,65,26,164,7,0,0,0,82,233,200,158,7,0,0,0,154,153,153,153,7,0,0,0,206,15,139,148,7,0,0,0,250,24,156,143,7,0,0,0,247,144,203,138,7,0,0,0,135,97,24,134,7,0,0,0,130,129,129,129,7,0,0,0,24,244,5,125,7,0,0,0,24,200,164,120,7,0,0,0,70,23,93,116,7,0,0,0,193,5,46,112,7,0,0,0,109,193,22,108,7,0,0,0,105,129,22,104,7,0,0,0,145,133,44,100,7,0,0,0,6,22,88,96,7,0,0,0,186,130,152,92,7,0,0,0,9,35,237,88,7,0,0,0,86,85,85,85,7,0,0,0,175,126,208,81,7,0,0,0,115,10,94,78,7,0,0,0,6,106,253,74,7,0,0,0,123,20,174,71,7,0,0,0,87,134,111,68,7,0,0,0,66,65,65,65,7,0,0,0,207,203,34,62,7,0,0,0,60,177,19,59,7,0,0,0,57,129,19,56,7,0,0,0,179,207,33,53,7,0,0,0,163,52,62,50,7,0,0,0,219,75,104,47,7,0,0,0,217,180,159,44,7,0,0,0,159,18,228,41,7,0,0,0,137,11,53,39,7,0,0,0,37,73,146,36,7,0,0,0,19,120,251,33,7,0,0,0,221,71,112,31,7,0,0,0,219,106,240,28,7,0,0,0,18,150,123,26,7,0,0,0,25,129,17,24,7,0,0,0,248,229,177,21,7,0,0,0,20,129,92,19,7,0,0,0,18,17,17,17,7,0,0,0,191,86,207,14,7,0,0,0,252,20,151,12,7,0,0,0,167,16,104,10,7,0,0,0,133,16,66,8,7,0,0,0,48,221,36,6,7,0,0,0,5,65,16,4,7,0,0,0,17,8,4,2,7,0,0,0,0,0,0,0,7,0,0,0,32,240,7,252,8,0,0,0,249,129,31,248,8,0,0,0,229,89,70,244,8,0,0,0,8,31,124,240,8,0,0,0,49,123,192,236,8,0,0,0,192,26,19,233,8,0,0,0,145,172,115,229,8,0,0,0,226,225,225,225,8,0,0,0,64,110,93,222,8,0,0,0,108,7,230,218,8,0,0,0,76,101,123,215,8,0,0,0,213,65,29,212,8,0,0,0,247,88,203,208,8,0,0,0,145,104,133,205,8,0,0,0,86,48,75,202,8,0,0,0,200,113,28,199,8,0,0,0,29,240,248,195,8,0,0,0,57,112,224,192,8,0,0,0,154,184,210,189,8,0,0,0,77,145,207,186,8,0,0,0,222,195,214,183,8,0,0,0,79,27,232,180,8,0,0,0,7,100,3,178,8,0,0,0,203,107,40,175,8,0,0,0,173,1,87,172,8,0,0,0,7,246,142,169,8,0,0,0,110,26,208,166,8,0,0,0,165,65,26,164,8,0,0,0,152,63,109,161,8,0,0,0,82,233,200,158,8,0,0,0,239,20,45,156,8,0,0,0,154,153,153,153,8,0,0,0,129,79,14,151,8,0,0,0,206,15,139,148,8,0,0,0,158,180,15,146,8,0,0,0,250,24,156,143,8,0,0,0,212,24,48,141,8,0,0,0,247,144,203,138,8,0,0,0,11,95,110,136,8,0,0,0,135,97,24,134,8,0,0,0,172,119,201,131,8,0,0,0,130,129,129,129,8,0,0,0,209,95,64,127,8,0,0,0,24,244,5,125,8,0,0,0,143,32,210,122,8,0,0,0,24,200,164,120,8,0,0,0,68,206,125,118,8,0,0,0,70,23,93,116,8,0,0,0,245,135,66,114,8,0,0,0,193,5,46,112,8,0,0,0,181,118,31,110,8,0,0,0,109,193,22,108,8,0,0,0,22,205,19,106,8,0,0,0,105,129,22,104,8,0,0,0,166,198,30,102,8,0,0,0,145,133,44,100,8,0,0,0,113,167,63,98,8,0,0,0,6,22,88,96,8,0,0,0,142,187,117,94,8,0,0,0,186,130,152,92,8,0,0,0,177,86,192,90,8,0,0,0,9,35,237,88,8,0,0,0,198,211,30,87,8,0,0,0,86,85,85,85,8,0,0,0,144,148,144,83,8,0,0,0,175,126,208,81,8,0,0,0,81,1,21,80,8,0,0,0,115,10,94,78,8,0,0,0,115,136,171,76,8,0,0,0,6,106,253,74,8,0,0,0,60,158,83,73,8,0,0,0,123,20,174,71,8,0,0,0,128,188,12,70,8,0,0,0,87,134,111,68,8,0,0,0,94,98,214,66,8,0,0,0,66,65,65,65,8,0,0,0,252,19,176,63,8,0,0,0,207,203,34,62,8,0,0,0,72,90,153,60,8,0,0,0,60,177,19,59,8,0,0,0,194,194,145,57,8,0,0,0,57,129,19,56,8,0,0,0,62,223,152,54,8,0,0,0,179,207,33,53,8,0,0,0,182,69,174,51,8,0,0,0,163,52,62,50,8,0,0,0,20,144,209,48,8,0,0,0,219,75,104,47,8,0,0,0,5,92,2,46,8,0,0,0,217,180,159,44,8,0,0,0,209,74,64,43,8,0,0,0,159,18,228,41,8,0,0,0,41,1,139,40,8,0,0,0,137,11,53,39,8,0,0,0,9,39,226,37,8,0,0,0,37,73,146,36,8,0,0,0,138,103,69,35,8,0,0,0,19,120,251,33,8,0,0,0,199,112,180,32,8,0,0,0,221,71,112,31,8,0,0,0,180,243,46,30,8,0,0,0,219,106,240,28,8,0,0,0,5,164,180,27,8,0,0,0,18,150,123,26,8,0,0,0,9,56,69,25,8,0,0,0,25,129,17,24,8,0,0,0,149,104,224,22,8,0,0,0,248,229,177,21,8,0,0,0,225,240,133,20,8,0,0,0,20,129,92,19,8,0,0,0,118,142,53,18,8,0,0,0,18,17,17,17,8,0,0,0,16,1,239,15,8,0,0,0,191,86,207,14,8,0,0,0,137,10,178,13,8,0,0,0,252,20,151,12,8,0,0,0,195,110,126,11,8,0,0,0,167,16,104,10,8,0,0,0,145,243,83,9,8,0,0,0,133,16,66,8,8,0,0,0,165,96,50,7,8,0,0,0,48,221,36,6,8,0,0,0,126,127,25,5,8,0,0,0,5,65,16,4,8,0,0,0,82,27,9,3,8,0,0,0,17,8,4,2,8,0,0,0,2,1,1,1,8,0,0,0,0,0,0,192,0,0,0,192,0,0,0,192,0,0,0,192,0,0,0,192,0,0,0,0,8,0,0,0,1,0,0,0,2,0,0,0,1,0,0,0,1,0,0,0,3,0,0,0,2,0,0,0,0,0,0,192,0,0,0,0,16,0,0,0,4,0,0,0,5,0,0,0,3,0,0,0,1,0,0,0,3,0,0,0,4,0,0,0,0,0,0,192,0,0,0,0,32,0,0,0,6,0,0,0,7,0,0,0,1,0,0,0,1,0,0,0,1,0,0,0,0,0,0,0,40,0,0,0,8,0,0,0,9,0,0,0,2,0,0,0,3,0,0,0,1,0,0,0,4,0,0,0,5,0,0,0,6,0,0,0,7,0,0,0,0,0,0,0,48,0,0,0,8,0,0,0,10,0,0,0,8,0,0,0,3,0,0,0,1,0,0,0,9,0,0,0,5,0,0,0,6,0,0,0,7,0,0,0,10,0,0,0,2,0,0,0,3,0,0,0,1,0,0,0,0,0,0,0,64,0,0,0,11,0,0,0,12,0,0,0,2,0,0,0,4,0,0,0,3,0,0,0,5,0,0,0,4,0,0,0,0,0,0,0,72,0,0,0,13,0,0,0,14,0,0,0,5,0,0,0,4,0,0,0,3,0,0,0,5,0,0,0,6,0,0,0,7,0,0,0,8,0,0,0,11,0,0,0,6,0,0,0,0,0,0,0,104,0,0,0,15,0,0,0,16,0,0,0,1,0,0,0,12,0,0,0,1,0,0,0,13,0,0,0,7,0,0,0,8,0,0,0,9,0,0,0,10,0,0,0,14,0,0,0,15,0,0,0,1,0,0,0,1,0,0,0,0,0,0,0,88,0,0,0,15,0,0,0,17,0,0,0,16,0,0,0,12,0,0,0,17,0,0,0,13,0,0,0,7,0,0,0,8,0,0,0,9,0,0,0,10,0,0,0,14,0,0,0,15,0,0,0,1,0,0,0,2,0,0,0,0,0,0,0,208,0,0,0,15,0,0,0,18,0,0,0,18,0,0,0,12,0,0,0,19,0,0,0,13,0,0,0,7,0,0,0,8,0,0,0,9,0,0,0,10,0,0,0,14,0,0,0,15,0,0,0,3,0,0,0,4,0,0,0,0,0,0,0,192,0,0,0,15,0,0,0,19,0,0,0,20,0,0,0,12,0,0,0,21,0,0,0,13,0,0,0,7,0,0,0,8,0,0,0,9,0,0,0,10,0,0,0,14,0,0,0,15,0,0,0,5,0,0,0,6,0,0,0,0,0,0,0,176,0,0,0,20,0,0,0,21,0,0,0,22,0,0,0,12,0,0,0,23,0,0,0,13,0,0,0,7,0,0,0,8,0,0,0,11,0,0,0,12,0,0,0,14,0,0,0,15,0,0,0,7,0,0,0,8,0,0,0,0,0,0,0,144,0,0,0,22,0,0,0,23,0,0,0,24,0,0,0,12,0,0,0,25,0,0,0,26,0,0,0,13,0,0,0,14,0,0,0,15,0,0,0,16,0,0,0,14,0,0,0,15,0,0,0,9,0,0,0,10,0,0,0,0,0,0,0,32,1,0,0,15,0,0,0,24,0,0,0,27,0,0,0,12,0,0,0,28,0,0,0,13,0,0,0,7,0,0,0,8,0,0,0,9,0,0,0,10,0,0,0,14,0,0,0,15,0,0,0,11,0,0,0,12,0,0,0,0,0,0,0,16,1,0,0,15,0,0,0,25,0,0,0,29,0,0,0,12,0,0,0,30,0,0,0,13,0,0,0,7,0,0,0,8,0,0,0,9,0,0,0,10,0,0,0,14,0,0,0,15,0,0,0,13,0,0,0,14,0,0,0,0,0,0,0,0,1,0,0,26,0,0,0,27,0,0,0,31,0,0,0,12,0,0,0,32,0,0,0,13,0,0,0,7,0,0,0,8,0,0,0,17,0,0,0,18,0,0,0,14,0,0,0,15,0,0,0,15,0,0,0,16,0,0,0,0,0,0,0,224,0,0,0,28,0,0,0,29,0,0,0,33,0,0,0,12,0,0,0,34,0,0,0,35,0,0,0,19,0,0,0,20,0,0,0,21,0,0,0,22,0,0,0,14,0,0,0,15,0,0,0,17,0,0,0,18,0,0,0,0,0,0,0,48,1,0,0,30,0,0,0,31,0,0,0,9,0,0,0,4,0,0,0,3,0,0,0,5,0,0,0,6,0,0,0,10,0,0,0,8,0,0,0,11,0,0,0,23,0,0,0,36,0,0,0,24,0,0,0,0,0,0,0,64,1,0,0,13,0,0,0,32,0,0,0,11,0,0,0,4,0,0,0,3,0,0,0,5,0,0,0,6,0,0,0,12,0,0,0,13,0,0,0,37,0,0,0,25,0,0,0,0,0,0,0,80,1,0,0,33,0,0,0,34,0,0,0,38,0,0,0,39,0,0,0,40,0,0,0,41,0,0,0,26,0,0,0,27,0,0,0,28,0,0,0,29,0,0,0,42,0,0,0,43,0,0,0,19,0,0,0,20,0,0,0,0,0,0,0,0,2,0,0,33,0,0,0,35,0,0,0,44,0,0,0,39,0,0,0,45,0,0,0,41,0,0,0,26,0,0,0,27,0,0,0,28,0,0,0,29,0,0,0,42,0,0,0,43,0,0,0,21,0,0,0,22,0,0,0,0,0,0,0,240,1,0,0,33,0,0,0,36,0,0,0,46,0,0,0,39,0,0,0,47,0,0,0,41,0,0,0,26,0,0,0,27,0,0,0,28,0,0,0,29,0,0,0,42,0,0,0,43,0,0,0,23,0,0,0,24,0,0,0,0,0,0,0,224,1,0,0,37,0,0,0,38,0,0,0,48,0,0,0,39,0,0,0,49,0,0,0,41,0,0,0,26,0,0,0,27,0,0,0,30,0,0,0,31,0,0,0,42,0,0,0,43,0,0,0,25,0,0,0,26,0,0,0,0,0,0,0,192,1,0,0,39,0,0,0,40,0,0,0,50,0,0,0,39,0,0,0,51,0,0,0,52,0,0,0,32,0,0,0,33,0,0,0,34,0,0,0,35,0,0,0,42,0,0,0,43,0,0,0,27,0,0,0,28,0,0,0,0,0,0,0,176,1,0,0,33,0,0,0,41,0,0,0,53,0,0,0,39,0,0,0,54,0,0,0,41,0,0,0,26,0,0,0,27,0,0,0,28,0,0,0,29,0,0,0,42,0,0,0,43,0,0,0,29,0,0,0,30,0,0,0,0,0,0,0,160,1,0,0,33,0,0,0,42,0,0,0,55,0,0,0,39,0,0,0,56,0,0,0,41,0,0,0,26,0,0,0,27,0,0,0,28,0,0,0,29,0,0,0,42,0,0,0,43,0,0,0,31,0,0,0,32,0,0,0,0,0,0,0,144,1,0,0,43,0,0,0,44,0,0,0,57,0,0,0,39,0,0,0,58,0,0,0,41,0,0,0,26,0,0,0,27,0,0,0,36,0,0,0,37,0,0,0,42,0,0,0,43,0,0,0,33,0,0,0,34,0,0,0,0,0,0,0,112,1,0,0,45,0,0,0,46,0,0,0,59,0,0,0,39,0,0,0,60,0,0,0,61,0,0,0,38,0,0,0,39,0,0,0,40,0,0,0,41,0,0,0,42,0,0,0,43,0,0,0,35,0,0,0,36,0,0,0,0,0,0,0,16,2,0,0,33,0,0,0,47,0,0,0,62,0,0,0,63,0,0,0,64,0,0,0,65,0,0,0,42,0,0,0,43,0,0,0,44,0,0,0,45,0,0,0,66,0,0,0,67,0,0,0,37,0,0,0,38,0,0,0,0,0,0,0,192,2,0,0,33,0,0,0,48,0,0,0,68,0,0,0,63,0,0,0,69,0,0,0,65,0,0,0,42,0,0,0,43,0,0,0,44,0,0,0,45,0,0,0,66,0,0,0,67,0,0,0,39,0,0,0,40,0,0,0,0,0,0,0,176,2,0,0,33,0,0,0,49,0,0,0,70,0,0,0,63,0,0,0,71,0,0,0,65,0,0,0,42,0,0,0,43,0,0,0,44,0,0,0,45,0,0,0,66,0,0,0,67,0,0,0,41,0,0,0,42,0,0,0,0,0,0,0,160,2,0,0,50,0,0,0,51,0,0,0,72,0,0,0,63,0,0,0,73,0,0,0,65,0,0,0,42,0,0,0,43,0,0,0,46,0,0,0,47,0,0,0,66,0,0,0,67,0,0,0,43,0,0,0,44,0,0,0,0,0,0,0,128,2,0,0,52,0,0,0,53,0,0,0,74,0,0,0,63,0,0,0,75,0,0,0,76,0,0,0,48,0,0,0,49,0,0,0,50,0,0,0,51,0,0,0,66,0,0,0,67,0,0,0,45,0,0,0,46,0,0,0,0,0,0,0,112,2,0,0,33,0,0,0,54,0,0,0,77,0,0,0,63,0,0,0,78,0,0,0,65,0,0,0,42,0,0,0,43,0,0,0,44,0,0,0,45,0,0,0,66,0,0,0,67,0,0,0,47,0,0,0,48,0,0,0,0,0,0,0,96,2,0,0,33,0,0,0,55,0,0,0,79,0,0,0,63,0,0,0,80,0,0,0,65,0,0,0,42,0,0,0,43,0,0,0,44,0,0,0,45,0,0,0,66,0,0,0,67,0,0,0,49,0,0,0,50,0,0,0,0,0,0,0,80,2,0,0,56,0,0,0,57,0,0,0,81,0,0,0,63,0,0,0,82,0,0,0,65,0,0,0,42,0,0,0,43,0,0,0,52,0,0,0,53,0,0,0,66,0,0,0,67,0,0,0,51,0,0,0,52,0,0,0,0,0,0,0,48,2,0,0,58,0,0,0,59,0,0,0,83,0,0,0,63,0,0,0,84,0,0,0,85,0,0,0,54,0,0,0,55,0,0,0,56,0,0,0,57,0,0,0,66,0,0,0,67,0,0,0,53,0,0,0,54,0,0,0,0,0,0,0,208,2,0,0,60,0,0,0,61,0,0,0,1,0,0,0,58,0,0,0,59,0,0,0,60,0,0,0,0,0,0,0,224,2,0,0,8,0,0,0,62,0,0,0,2,0,0,0,3,0,0,0,61,0,0,0,86,0,0,0,5,0,0,0,6,0,0,0,7,0,0,0,0,0,0,0,240,2,0,0,63,0,0,0,64,0,0,0,62,0,0,0,87,0,0,0,0,0,0,0,8,3,0,0,8,0,0,0,65,0,0,0,2,0,0,0,3,0,0,0,63,0,0,0,88,0,0,0,5,0,0,0,6,0,0,0,7,0,0,0,0,0,0,0,24,3,0,0,6,0,0,0,66,0,0,0,1,0,0,0,1,0,0,0,64,0,0,0,0,0,0,0,40,3,0,0,8,0,0,0,67,0,0,0,8,0,0,0,3,0,0,0,65,0,0,0,9,0,0,0,5,0,0,0,6,0,0,0,7,0,0,0,10,0,0,0,2,0,0,0,3,0,0,0,89,0,0,0,0,0,0,0,56,3,0,0,68,0,0,0,69,0,0,0,8,0,0,0,90,0,0,0,66,0,0,0,9,0,0,0,5,0,0,0,6,0,0,0,91,0,0,0,92,0,0,0,67,0,0,0,68,0,0,0,93,0,0,0,0,0,0,0,72,3,0,0,70,0,0,0,71,0,0,0,69,0,0,0,70,0,0,0,71,0,0,0,72,0,0,0,94,0,0,0,95,0,0,0,96,0,0,0,97,0,0,0,0,0,0,0,96,3,0,0,72,0,0,0,73,0,0,0,73,0,0,0,98,0,0,0,0,0,0,0,88,3,0,0,74,0,0,0,75,0,0,0,76,0,0,0,0,0,0,192,0,0,0,0,120,3,0,0,77,0,0,0,78,0,0,0,74,0,0,0,99,0,0,0,0,0,0,0,112,3,0,0,79,0,0,0,80,0,0,0,81,0,0,0,0,0,0,0,136,3,0,0,82,0,0,0,83,0,0,0,75,0,0,0,100,0,0,0,0,0,0,0,160,3,0,0,84,0,0,0,85,0,0,0,76,0,0,0,77,0,0,0,78,0,0,0,79,0,0,0,101,0,0,0,102,0,0,0,103,0,0,0,104,0,0,0,0,0,0,0,176,3,0,0,86,0,0,0,87,0,0,0,80,0,0,0,81,0,0,0,82,0,0,0,83,0,0,0,105,0,0,0,106,0,0,0,107,0,0,0,108,0,0,0,0,0,0,0,1,0,0,0,3,0,0,0,5,0,0,0,7,0,0,0,40,23,0,0,5,0,0,0,0,0,0,0,0,0,0,0,109,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,14,0,0,0,15,0,0,0,44,74,0,0,0,0,0,0,0,0,0,0,0,0,0,0,2,0,0,0,0,0,0,0,0,0,0,0,0,0,0,255,255,255,255,255,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,2,0,0,0,3,0,0,0,5,0,0,0,7,0,0,0,11,0,0,0,13,0,0,0,17,0,0,0,19,0,0,0,23,0,0,0,29,0,0,0,31,0,0,0,37,0,0,0,41,0,0,0,43,0,0,0,47,0,0,0,53,0,0,0,59,0,0,0,61,0,0,0,67,0,0,0,71,0,0,0,73,0,0,0,79,0,0,0,83,0,0,0,89,0,0,0,97,0,0,0,101,0,0,0,103,0,0,0,107,0,0,0,109,0,0,0,113,0,0,0,127,0,0,0,131,0,0,0,137,0,0,0,139,0,0,0,149,0,0,0,151,0,0,0,157,0,0,0,163,0,0,0,167,0,0,0,173,0,0,0,179,0,0,0,181,0,0,0,191,0,0,0,193,0,0,0,197,0,0,0,199,0,0,0,211,0,0,0,1,0,0,0,11,0,0,0,13,0,0,0,17,0,0,0,19,0,0,0,23,0,0,0,29,0,0,0,31,0,0,0,37,0,0,0,41,0,0,0,43,0,0,0,47,0,0,0,53,0,0,0,59,0,0,0,61,0,0,0,67,0,0,0,71,0,0,0,73,0,0,0,79,0,0,0,83,0,0,0,89,0,0,0,97,0,0,0,101,0,0,0,103,0,0,0,107,0,0,0,109,0,0,0,113,0,0,0,121,0,0,0,127,0,0,0,131,0,0,0,137,0,0,0,139,0,0,0,143,0,0,0,149,0,0,0,151,0,0,0,157,0,0,0,163,0,0,0,167,0,0,0,169,0,0,0,173,0,0,0,179,0,0,0,181,0,0,0,187,0,0,0,191,0,0,0,193,0,0,0,197,0,0,0,199,0,0,0,209,0,0,0,2,0,0,0,75,70,0,0,0,0,0,0,200,3,0,0,88,0,0,0,89,0,0,0,90,0,0,0,91,0,0,0,16,0,0,0,1,0,0,0,1,0,0,0,1,0,0,0,0,0,0,0,240,3,0,0,88,0,0,0,92,0,0,0,90,0,0,0,91,0,0,0,16,0,0,0,2,0,0,0,2,0,0,0,2,0,0,0,0,0,0,0,0,4,0,0,93,0,0,0,94,0,0,0,110,0,0,0,99,111,114,101,47,114,97,110,115,95,98,105,116,95,100,101,99,111,100,101,114,46,99,99,0,40,97,110,115,45,62,115,116,97,116,101,41,32,62,61,32,40,40,49,48,50,52,117,32,42,32,52,41,41,0,46,47,99,111,114,101,47,97,110,115,46,104,0,97,110,115,95,119,114,105,116,101,95,101,110,100,0,40,97,110,115,45,62,115,116,97,116,101,41,32,60,32,40,40,49,48,50,52,117,32,42,32,52,41,32,42,32,50,53,54,41,0,40,112,41,32,60,61,32,40,49,46,48,41,0,46,47,99,111,114,101,47,97,100,97,112,116,105,118,101,95,114,97,110,115,95,98,105,116,95,99,111,100,105,110,103,95,115,104,97,114,101,100,46,104,0,99,108,97,109,112,95,112,114,111,98,97,98,105,108,105,116,121,0,40,48,46,48,41,32,60,61,32,40,112,41,0,40,110,98,105,116,115,41,32,62,61,32,40,48,41,0,46,47,99,111,114,101,47,98,105,116,95,99,111,100,101,114,46,104,0,71,101,116,66,105,116,115,0,40,110,98,105,116,115,41,32,60,61,32,40,51,50,41,0,97,116,116,95,105,100,32,62,61,32,48,0,112,111,105,110,116,95,99,108,111,117,100,47,112,111,105,110,116,95,99,108,111,117,100,46,99,99,0,83,101,116,65,116,116,114,105,98,117,116,101,0,78,53,100,114,97,99,111,49,48,80,111,105,110,116,67,108,111,117,100,69,0,78,53,100,114,97,99,111,52,77,101,115,104,69,0,78,53,100,114,97,99,111,49,55,65,116,116,114,105,98,117,116,101,115,68,101,99,111,100,101,114,69,0,78,53,100,114,97,99,111,49,55,80,111,105,110,116,67,108,111,117,100,68,101,99,111,100,101,114,69,0,68,82,65,67,79,0,78,53,100,114,97,99,111,49,49,77,101,115,104,68,101,99,111,100,101,114,69,0,78,53,100,114,97,99,111,50,54,83,101,113,117,101,110,116,105,97,108,65,116,116,114,105,98,117,116,101,68,101,99,111,100,101,114,69,0,78,53,100,114,97,99,111,50,54,80,114,101,100,105,99,116,105,111,110,83,99,104,101,109,101,68,105,102,102,101,114,101,110,99,101,73,105,78,83,95,50,57,80,114,101,100,105,99,116,105,111,110,83,99,104,101,109,101,87,114,97,112,84,114,97,110,115,102,111,114,109,73,105,105,69,69,69,69,0,78,53,100,114,97,99,111,49,54,80,114,101,100,105,99,116,105,111,110,83,99,104,101,109,101,73,105,78,83,95,50,57,80,114,101,100,105,99,116,105,111,110,83,99,104,101,109,101,87,114,97,112,84,114,97,110,115,102,111,114,109,73,105,105,69,69,69,69,0,78,53,100,114,97,99,111,51,48,80,114,101,100,105,99,116,105,111,110,83,99,104,101,109,101,84,121,112,101,100,73,110,116,101,114,102,97,99,101,73,105,105,69,69,0,78,53,100,114,97,99,111,50,53,80,114,101,100,105,99,116,105,111,110,83,99,104,101,109,101,73,110,116,101,114,102,97,99,101,69,0,78,53,100,114,97,99,111,50,57,77,101,115,104,80,114,101,100,105,99,116,105,111,110,83,99,104,101,109,101,84,101,120,67,111,111,114,100,115,73,105,78,83,95,50,57,80,114,101,100,105,99,116,105,111,110,83,99,104,101,109,101,87,114,97,112,84,114,97,110,115,102,111,114,109,73,105,105,69,69,78,83,95,50,52,77,101,115,104,80,114,101,100,105,99,116,105,111,110,83,99,104,101,109,101,68,97,116,97,73,78,83,95,49,49,67,111,114,110,101,114,84,97,98,108,101,69,69,69,69,69,0,78,53,100,114,97,99,111,50,48,77,101,115,104,80,114,101,100,105,99,116,105,111,110,83,99,104,101,109,101,73,105,78,83,95,50,57,80,114,101,100,105,99,116,105,111,110,83,99,104,101,109,101,87,114,97,112,84,114,97,110,115,102,111,114,109,73,105,105,69,69,78,83,95,50,52,77,101,115,104,80,114,101,100,105,99,116,105,111,110,83,99,104,101,109,101,68,97,116,97,73,78,83,95,49,49,67,111,114,110,101,114,84,97,98,108,101,69,69,69,69,69,0,78,53,100,114,97,99,111,52,57,77,101,115,104,80,114,101,100,105,99,116,105,111,110,83,99,104,101,109,101,67,111,110,115,116,114,97,105,110,101,100,77,117,108,116,105,80,97,114,97,108,108,101,108,111,103,114,97,109,73,105,78,83,95,50,57,80,114,101,100,105,99,116,105,111,110,83,99,104,101,109,101,87,114,97,112,84,114,97,110,115,102,111,114,109,73,105,105,69,69,78,83,95,50,52,77,101,115,104,80,114,101,100,105,99,116,105,111,110,83,99,104,101,109,101,68,97,116,97,73,78,83,95,49,49,67,111,114,110,101,114,84,97,98,108,101,69,69,69,69,69,0,78,53,100,114,97,99,111,51,56,77,101,115,104,80,114,101,100,105,99,116,105,111,110,83,99,104,101,109,101,77,117,108,116,105,80,97,114,97,108,108,101,108,111,103,114,97,109,73,105,78,83,95,50,57,80,114,101,100,105,99,116,105,111,110,83,99,104,101,109,101,87,114,97,112,84,114,97,110,115,102,111,114,109,73,105,105,69,69,78,83,95,50,52,77,101,115,104,80,114,101,100,105,99,116,105,111,110,83,99,104,101,109,101,68,97,116,97,73,78,83,95,49,49,67,111,114,110,101,114,84,97,98,108,101,69,69,69,69,69,0,78,53,100,114,97,99,111,51,51,77,101,115,104,80,114,101,100,105,99,116,105,111,110,83,99,104,101,109,101,80,97,114,97,108,108,101,108,111,103,114,97,109,73,105,78,83,95,50,57,80,114,101,100,105,99,116,105,111,110,83,99,104,101,109,101,87,114,97,112,84,114,97,110,115,102,111,114,109,73,105,105,69,69,78,83,95,50,52,77,101,115,104,80,114,101,100,105,99,116,105,111,110,83,99,104,101,109,101,68,97,116,97,73,78,83,95,49,49,67,111,114,110,101,114,84,97,98,108,101,69,69,69,69,69,0,78,53,100,114,97,99,111,50,57,77,101,115,104,80,114,101,100,105,99,116,105,111,110,83,99,104,101,109,101,84,101,120,67,111,111,114,100,115,73,105,78,83,95,50,57,80,114,101,100,105,99,116,105,111,110,83,99,104,101,109,101,87,114,97,112,84,114,97,110,115,102,111,114,109,73,105,105,69,69,78,83,95,50,52,77,101,115,104,80,114,101,100,105,99,116,105,111,110,83,99,104,101,109,101,68,97,116,97,73,78,83,95,50,52,77,101,115,104,65,116,116,114,105,98,117,116,101,67,111,114,110,101,114,84,97,98,108,101,69,69,69,69,69,0,78,53,100,114,97,99,111,50,48,77,101,115,104,80,114,101,100,105,99,116,105,111,110,83,99,104,101,109,101,73,105,78,83,95,50,57,80,114,101,100,105,99,116,105,111,110,83,99,104,101,109,101,87,114,97,112,84,114,97,110,115,102,111,114,109,73,105,105,69,69,78,83,95,50,52,77,101,115,104,80,114,101,100,105,99,116,105,111,110,83,99,104,101,109,101,68,97,116,97,73,78,83,95,50,52,77,101,115,104,65,116,116,114,105,98,117,116,101,67,111,114,110,101,114,84,97,98,108,101,69,69,69,69,69,0,78,53,100,114,97,99,111,52,57,77,101,115,104,80,114,101,100,105,99,116,105,111,110,83,99,104,101,109,101,67,111,110,115,116,114,97,105,110,101,100,77,117,108,116,105,80,97,114,97,108,108,101,108,111,103,114,97,109,73,105,78,83,95,50,57,80,114,101,100,105,99,116,105,111,110,83,99,104,101,109,101,87,114,97,112,84,114,97,110,115,102,111,114,109,73,105,105,69,69,78,83,95,50,52,77,101,115,104,80,114,101,100,105,99,116,105,111,110,83,99,104,101,109,101,68,97,116,97,73,78,83,95,50,52,77,101,115,104,65,116,116,114,105,98,117,116,101,67,111,114,110,101,114,84,97,98,108,101,69,69,69,69,69,0,78,53,100,114,97,99,111,51,56,77,101,115,104,80,114,101,100,105,99,116,105,111,110,83,99,104,101,109,101,77,117,108,116,105,80,97,114,97,108,108,101,108,111,103,114,97,109,73,105,78,83,95,50,57,80,114,101,100,105,99,116,105,111,110,83,99,104,101,109,101,87,114,97,112,84,114,97,110,115,102,111,114,109,73,105,105,69,69,78,83,95,50,52,77,101,115,104,80,114,101,100,105,99,116,105,111,110,83,99,104,101,109,101,68,97,116,97,73,78,83,95,50,52,77,101,115,104,65,116,116,114,105,98,117,116,101,67,111,114,110,101,114,84,97,98,108,101,69,69,69,69,69,0,78,53,100,114,97,99,111,51,51,77,101,115,104,80,114,101,100,105,99,116,105,111,110,83,99,104,101,109,101,80,97,114,97,108,108,101,108,111,103,114,97,109,73,105,78,83,95,50,57,80,114,101,100,105,99,116,105,111,110,83,99,104,101,109,101,87,114,97,112,84,114,97,110,115,102,111,114,109,73,105,105,69,69,78,83,95,50,52,77,101,115,104,80,114,101,100,105,99,116,105,111,110,83,99,104,101,109,101,68,97,116,97,73,78,83,95,50,52,77,101,115,104,65,116,116,114,105,98,117,116,101,67,111,114,110,101,114,84,97,98,108,101,69,69,69,69,69,0,78,53,100,114,97,99,111,51,51,83,101,113,117,101,110,116,105,97,108,73,110,116,101,103,101,114,65,116,116,114,105,98,117,116,101,68,101,99,111,100,101,114,69,0,78,53,100,114,97,99,111,51,56,83,101,113,117,101,110,116,105,97,108,81,117,97,110,116,105,122,97,116,105,111,110,65,116,116,114,105,98,117,116,101,68,101,99,111,100,101,114,69,0,40,112,114,101,100,95,118,97,108,115,91,48,93,41,32,60,61,32,40,50,32,42,32,109,97,120,95,118,97,108,117,101,95,41,0,46,47,99,111,109,112,114,101,115,115,105,111,110,47,97,116,116,114,105,98,117,116,101,115,47,112,114,101,100,105,99,116,105,111,110,95,115,99,104,101,109,101,115,47,112,114,101,100,105,99,116,105,111,110,95,115,99,104,101,109,101,95,110,111,114,109,97,108,95,111,99,116,97,104,101,100,114,111,110,95,99,97,110,111,110,105,99,97,108,105,122,101,100,95,116,114,97,110,115,102,111,114,109,46,104,0,67,111,109,112,117,116,101,79,114,105,103,105,110,97,108,86,97,108,117,101,0,40,112,114,101,100,95,118,97,108,115,91,49,93,41,32,60,61,32,40,50,32,42,32,109,97,120,95,118,97,108,117,101,95,41,0,40,99,111,114,114,95,118,97,108,115,91,118,97,108,95,105,100,93,41,32,60,61,32,40,50,32,42,32,109,97,120,95,118,97,108,117,101,95,41,0,40,99,111,114,114,95,118,97,108,115,91,118,97,108,95,105,100,32,43,32,49,93,41,32,60,61,32,40,50,32,42,32,109,97,120,95,118,97,108,117,101,95,41,0,40,48,41,32,60,61,32,40,112,114,101,100,95,118,97,108,115,91,48,93,41,0,40,48,41,32,60,61,32,40,112,114,101,100,95,118,97,108,115,91,49,93,41,0,40,48,41,32,60,61,32,40,99,111,114,114,95,118,97,108,115,91,118,97,108,95,105,100,93,41,0,40,48,41,32,60,61,32,40,99,111,114,114,95,118,97,108,115,91,118,97,108,95,105,100,32,43,32,49,93,41,0,40,112,114,101,100,95,118,97,108,115,91,48,93,41,32,60,61,32,40,109,97,120,95,118,97,108,117,101,95,32,42,32,50,41,0,67,111,109,112,117,116,101,67,111,114,114,101,99,116,105,111,110,0,40,112,114,101,100,95,118,97,108,115,91,49,93,41,32,60,61,32,40,109,97,120,95,118,97,108,117,101,95,32,42,32,50,41,0,40,111,114,105,103,95,118,97,108,115,91,48,93,41,32,60,61,32,40,109,97,120,95,118,97,108,117,101,95,32,42,32,50,41,0,40,111,114,105,103,95,118,97,108,115,91,49,93,41,32,60,61,32,40,109,97,120,95,118,97,108,117,101,95,32,42,32,50,41,0,40,48,41,32,60,61,32,40,111,114,105,103,95,118,97,108,115,91,48,93,41,0,40,48,41,32,60,61,32,40,111,114,105,103,95,118,97,108,115,91,49,93,41,0,40,116,114,117,101,41,32,61,61,32,40,86,101,114,105,102,121,40,111,114,105,103,44,32,112,114,101,100,44,32,99,111,114,114,41,41,0,40,120,41,32,60,61,32,40,109,97,120,95,118,97,108,117,101,95,32,42,32,50,41,0,77,97,107,101,80,111,115,105,116,105,118,101,0,78,53,100,114,97,99,111,50,54,80,114,101,100,105,99,116,105,111,110,83,99,104,101,109,101,68,105,102,102,101,114,101,110,99,101,73,105,78,83,95,53,52,80,114,101,100,105,99,116,105,111,110,83,99,104,101,109,101,78,111,114,109,97,108,79,99,116,97,104,101,100,114,111,110,67,97,110,111,110,105,99,97,108,105,122,101,100,84,114,97,110,115,102,111,114,109,73,105,69,69,69,69,0,78,53,100,114,97,99,111,49,54,80,114,101,100,105,99,116,105,111,110,83,99,104,101,109,101,73,105,78,83,95,53,52,80,114,101,100,105,99,116,105,111,110,83,99,104,101,109,101,78,111,114,109,97,108,79,99,116,97,104,101,100,114,111,110,67,97,110,111,110,105,99,97,108,105,122,101,100,84,114,97,110,115,102,111,114,109,73,105,69,69,69,69,0,40,105,41,32,61,61,32,40,48,41,0,46,47,99,111,109,112,114,101,115,115,105,111,110,47,97,116,116,114,105,98,117,116,101,115,47,112,114,101,100,105,99,116,105,111,110,95,115,99,104,101,109,101,115,47,109,101,115,104,95,112,114,101,100,105,99,116,105,111,110,95,115,99,104,101,109,101,95,116,101,120,95,99,111,111,114,100,115,46,104,0,71,101,116,80,97,114,101,110,116,65,116,116,114,105,98,117,116,101,84,121,112,101,0,78,53,100,114,97,99,111,50,57,77,101,115,104,80,114,101,100,105,99,116,105,111,110,83,99,104,101,109,101,84,101,120,67,111,111,114,100,115,73,105,78,83,95,53,52,80,114,101,100,105,99,116,105,111,110,83,99,104,101,109,101,78,111,114,109,97,108,79,99,116,97,104,101,100,114,111,110,67,97,110,111,110,105,99,97,108,105,122,101,100,84,114,97,110,115,102,111,114,109,73,105,69,69,78,83,95,50,52,77,101,115,104,80,114,101,100,105,99,116,105,111,110,83,99,104,101,109,101,68,97,116,97,73,78,83,95,49,49,67,111,114,110,101,114,84,97,98,108,101,69,69,69,69,69,0,78,53,100,114,97,99,111,50,48,77,101,115,104,80,114,101,100,105,99,116,105,111,110,83,99,104,101,109,101,73,105,78,83,95,53,52,80,114,101,100,105,99,116,105,111,110,83,99,104,101,109,101,78,111,114,109,97,108,79,99,116,97,104,101,100,114,111,110,67,97,110,111,110,105,99,97,108,105,122,101,100,84,114,97,110,115,102,111,114,109,73,105,69,69,78,83,95,50,52,77,101,115,104,80,114,101,100,105,99,116,105,111,110,83,99,104,101,109,101,68,97,116,97,73,78,83,95,49,49,67,111,114,110,101,114,84,97,98,108,101,69,69,69,69,69,0,78,53,100,114,97,99,111,52,57,77,101,115,104,80,114,101,100,105,99,116,105,111,110,83,99,104,101,109,101,67,111,110,115,116,114,97,105,110,101,100,77,117,108,116,105,80,97,114,97,108,108,101,108,111,103,114,97,109,73,105,78,83,95,53,52,80,114,101,100,105,99,116,105,111,110,83,99,104,101,109,101,78,111,114,109,97,108,79,99,116,97,104,101,100,114,111,110,67,97,110,111,110,105,99,97,108,105,122,101,100,84,114,97,110,115,102,111,114,109,73,105,69,69,78,83,95,50,52,77,101,115,104,80,114,101,100,105,99,116,105,111,110,83,99,104,101,109,101,68,97,116,97,73,78,83,95,49,49,67,111,114,110,101,114,84,97,98,108,101,69,69,69,69,69,0,78,53,100,114,97,99,111,51,56,77,101,115,104,80,114,101,100,105,99,116,105,111,110,83,99,104,101,109,101,77,117,108,116,105,80,97,114,97,108,108,101,108,111,103,114,97,109,73,105,78,83,95,53,52,80,114,101,100],"i8",ALLOC_NONE,Runtime.GLOBAL_BASE);allocate([105,99,116,105,111,110,83,99,104,101,109,101,78,111,114,109,97,108,79,99,116,97,104,101,100,114,111,110,67,97,110,111,110,105,99,97,108,105,122,101,100,84,114,97,110,115,102,111,114,109,73,105,69,69,78,83,95,50,52,77,101,115,104,80,114,101,100,105,99,116,105,111,110,83,99,104,101,109,101,68,97,116,97,73,78,83,95,49,49,67,111,114,110,101,114,84,97,98,108,101,69,69,69,69,69,0,78,53,100,114,97,99,111,51,51,77,101,115,104,80,114,101,100,105,99,116,105,111,110,83,99,104,101,109,101,80,97,114,97,108,108,101,108,111,103,114,97,109,73,105,78,83,95,53,52,80,114,101,100,105,99,116,105,111,110,83,99,104,101,109,101,78,111,114,109,97,108,79,99,116,97,104,101,100,114,111,110,67,97,110,111,110,105,99,97,108,105,122,101,100,84,114,97,110,115,102,111,114,109,73,105,69,69,78,83,95,50,52,77,101,115,104,80,114,101,100,105,99,116,105,111,110,83,99,104,101,109,101,68,97,116,97,73,78,83,95,49,49,67,111,114,110,101,114,84,97,98,108,101,69,69,69,69,69,0,78,53,100,114,97,99,111,50,57,77,101,115,104,80,114,101,100,105,99,116,105,111,110,83,99,104,101,109,101,84,101,120,67,111,111,114,100,115,73,105,78,83,95,53,52,80,114,101,100,105,99,116,105,111,110,83,99,104,101,109,101,78,111,114,109,97,108,79,99,116,97,104,101,100,114,111,110,67,97,110,111,110,105,99,97,108,105,122,101,100,84,114,97,110,115,102,111,114,109,73,105,69,69,78,83,95,50,52,77,101,115,104,80,114,101,100,105,99,116,105,111,110,83,99,104,101,109,101,68,97,116,97,73,78,83,95,50,52,77,101,115,104,65,116,116,114,105,98,117,116,101,67,111,114,110,101,114,84,97,98,108,101,69,69,69,69,69,0,78,53,100,114,97,99,111,50,48,77,101,115,104,80,114,101,100,105,99,116,105,111,110,83,99,104,101,109,101,73,105,78,83,95,53,52,80,114,101,100,105,99,116,105,111,110,83,99,104,101,109,101,78,111,114,109,97,108,79,99,116,97,104,101,100,114,111,110,67,97,110,111,110,105,99,97,108,105,122,101,100,84,114,97,110,115,102,111,114,109,73,105,69,69,78,83,95,50,52,77,101,115,104,80,114,101,100,105,99,116,105,111,110,83,99,104,101,109,101,68,97,116,97,73,78,83,95,50,52,77,101,115,104,65,116,116,114,105,98,117,116,101,67,111,114,110,101,114,84,97,98,108,101,69,69,69,69,69,0,78,53,100,114,97,99,111,52,57,77,101,115,104,80,114,101,100,105,99,116,105,111,110,83,99,104,101,109,101,67,111,110,115,116,114,97,105,110,101,100,77,117,108,116,105,80,97,114,97,108,108,101,108,111,103,114,97,109,73,105,78,83,95,53,52,80,114,101,100,105,99,116,105,111,110,83,99,104,101,109,101,78,111,114,109,97,108,79,99,116,97,104,101,100,114,111,110,67,97,110,111,110,105,99,97,108,105,122,101,100,84,114,97,110,115,102,111,114,109,73,105,69,69,78,83,95,50,52,77,101,115,104,80,114,101,100,105,99,116,105,111,110,83,99,104,101,109,101,68,97,116,97,73,78,83,95,50,52,77,101,115,104,65,116,116,114,105,98,117,116,101,67,111,114,110,101,114,84,97,98,108,101,69,69,69,69,69,0,78,53,100,114,97,99,111,51,56,77,101,115,104,80,114,101,100,105,99,116,105,111,110,83,99,104,101,109,101,77,117,108,116,105,80,97,114,97,108,108,101,108,111,103,114,97,109,73,105,78,83,95,53,52,80,114,101,100,105,99,116,105,111,110,83,99,104,101,109,101,78,111,114,109,97,108,79,99,116,97,104,101,100,114,111,110,67,97,110,111,110,105,99,97,108,105,122,101,100,84,114,97,110,115,102,111,114,109,73,105,69,69,78,83,95,50,52,77,101,115,104,80,114,101,100,105,99,116,105,111,110,83,99,104,101,109,101,68,97,116,97,73,78,83,95,50,52,77,101,115,104,65,116,116,114,105,98,117,116,101,67,111,114,110,101,114,84,97,98,108,101,69,69,69,69,69,0,78,53,100,114,97,99,111,51,51,77,101,115,104,80,114,101,100,105,99,116,105,111,110,83,99,104,101,109,101,80,97,114,97,108,108,101,108,111,103,114,97,109,73,105,78,83,95,53,52,80,114,101,100,105,99,116,105,111,110,83,99,104,101,109,101,78,111,114,109,97,108,79,99,116,97,104,101,100,114,111,110,67,97,110,111,110,105,99,97,108,105,122,101,100,84,114,97,110,115,102,111,114,109,73,105,69,69,78,83,95,50,52,77,101,115,104,80,114,101,100,105,99,116,105,111,110,83,99,104,101,109,101,68,97,116,97,73,78,83,95,50,52,77,101,115,104,65,116,116,114,105,98,117,116,101,67,111,114,110,101,114,84,97,98,108,101,69,69,69,69,69,0,46,47,99,111,109,112,114,101,115,115,105,111,110,47,97,116,116,114,105,98,117,116,101,115,47,112,114,101,100,105,99,116,105,111,110,95,115,99,104,101,109,101,115,47,112,114,101,100,105,99,116,105,111,110,95,115,99,104,101,109,101,95,110,111,114,109,97,108,95,111,99,116,97,104,101,100,114,111,110,95,116,114,97,110,115,102,111,114,109,46,104,0,78,53,100,114,97,99,111,50,54,80,114,101,100,105,99,116,105,111,110,83,99,104,101,109,101,68,105,102,102,101,114,101,110,99,101,73,105,78,83,95,52,49,80,114,101,100,105,99,116,105,111,110,83,99,104,101,109,101,78,111,114,109,97,108,79,99,116,97,104,101,100,114,111,110,84,114,97,110,115,102,111,114,109,73,105,69,69,69,69,0,78,53,100,114,97,99,111,49,54,80,114,101,100,105,99,116,105,111,110,83,99,104,101,109,101,73,105,78,83,95,52,49,80,114,101,100,105,99,116,105,111,110,83,99,104,101,109,101,78,111,114,109,97,108,79,99,116,97,104,101,100,114,111,110,84,114,97,110,115,102,111,114,109,73,105,69,69,69,69,0,78,53,100,114,97,99,111,50,57,77,101,115,104,80,114,101,100,105,99,116,105,111,110,83,99,104,101,109,101,84,101,120,67,111,111,114,100,115,73,105,78,83,95,52,49,80,114,101,100,105,99,116,105,111,110,83,99,104,101,109,101,78,111,114,109,97,108,79,99,116,97,104,101,100,114,111,110,84,114,97,110,115,102,111,114,109,73,105,69,69,78,83,95,50,52,77,101,115,104,80,114,101,100,105,99,116,105,111,110,83,99,104,101,109,101,68,97,116,97,73,78,83,95,49,49,67,111,114,110,101,114,84,97,98,108,101,69,69,69,69,69,0,78,53,100,114,97,99,111,50,48,77,101,115,104,80,114,101,100,105,99,116,105,111,110,83,99,104,101,109,101,73,105,78,83,95,52,49,80,114,101,100,105,99,116,105,111,110,83,99,104,101,109,101,78,111,114,109,97,108,79,99,116,97,104,101,100,114,111,110,84,114,97,110,115,102,111,114,109,73,105,69,69,78,83,95,50,52,77,101,115,104,80,114,101,100,105,99,116,105,111,110,83,99,104,101,109,101,68,97,116,97,73,78,83,95,49,49,67,111,114,110,101,114,84,97,98,108,101,69,69,69,69,69,0,78,53,100,114,97,99,111,52,57,77,101,115,104,80,114,101,100,105,99,116,105,111,110,83,99,104,101,109,101,67,111,110,115,116,114,97,105,110,101,100,77,117,108,116,105,80,97,114,97,108,108,101,108,111,103,114,97,109,73,105,78,83,95,52,49,80,114,101,100,105,99,116,105,111,110,83,99,104,101,109,101,78,111,114,109,97,108,79,99,116,97,104,101,100,114,111,110,84,114,97,110,115,102,111,114,109,73,105,69,69,78,83,95,50,52,77,101,115,104,80,114,101,100,105,99,116,105,111,110,83,99,104,101,109,101,68,97,116,97,73,78,83,95,49,49,67,111,114,110,101,114,84,97,98,108,101,69,69,69,69,69,0,78,53,100,114,97,99,111,51,56,77,101,115,104,80,114,101,100,105,99,116,105,111,110,83,99,104,101,109,101,77,117,108,116,105,80,97,114,97,108,108,101,108,111,103,114,97,109,73,105,78,83,95,52,49,80,114,101,100,105,99,116,105,111,110,83,99,104,101,109,101,78,111,114,109,97,108,79,99,116,97,104,101,100,114,111,110,84,114,97,110,115,102,111,114,109,73,105,69,69,78,83,95,50,52,77,101,115,104,80,114,101,100,105,99,116,105,111,110,83,99,104,101,109,101,68,97,116,97,73,78,83,95,49,49,67,111,114,110,101,114,84,97,98,108,101,69,69,69,69,69,0,78,53,100,114,97,99,111,51,51,77,101,115,104,80,114,101,100,105,99,116,105,111,110,83,99,104,101,109,101,80,97,114,97,108,108,101,108,111,103,114,97,109,73,105,78,83,95,52,49,80,114,101,100,105,99,116,105,111,110,83,99,104,101,109,101,78,111,114,109,97,108,79,99,116,97,104,101,100,114,111,110,84,114,97,110,115,102,111,114,109,73,105,69,69,78,83,95,50,52,77,101,115,104,80,114,101,100,105,99,116,105,111,110,83,99,104,101,109,101,68,97,116,97,73,78,83,95,49,49,67,111,114,110,101,114,84,97,98,108,101,69,69,69,69,69,0,78,53,100,114,97,99,111,50,57,77,101,115,104,80,114,101,100,105,99,116,105,111,110,83,99,104,101,109,101,84,101,120,67,111,111,114,100,115,73,105,78,83,95,52,49,80,114,101,100,105,99,116,105,111,110,83,99,104,101,109,101,78,111,114,109,97,108,79,99,116,97,104,101,100,114,111,110,84,114,97,110,115,102,111,114,109,73,105,69,69,78,83,95,50,52,77,101,115,104,80,114,101,100,105,99,116,105,111,110,83,99,104,101,109,101,68,97,116,97,73,78,83,95,50,52,77,101,115,104,65,116,116,114,105,98,117,116,101,67,111,114,110,101,114,84,97,98,108,101,69,69,69,69,69,0,78,53,100,114,97,99,111,50,48,77,101,115,104,80,114,101,100,105,99,116,105,111,110,83,99,104,101,109,101,73,105,78,83,95,52,49,80,114,101,100,105,99,116,105,111,110,83,99,104,101,109,101,78,111,114,109,97,108,79,99,116,97,104,101,100,114,111,110,84,114,97,110,115,102,111,114,109,73,105,69,69,78,83,95,50,52,77,101,115,104,80,114,101,100,105,99,116,105,111,110,83,99,104,101,109,101,68,97,116,97,73,78,83,95,50,52,77,101,115,104,65,116,116,114,105,98,117,116,101,67,111,114,110,101,114,84,97,98,108,101,69,69,69,69,69,0,78,53,100,114,97,99,111,52,57,77,101,115,104,80,114,101,100,105,99,116,105,111,110,83,99,104,101,109,101,67,111,110,115,116,114,97,105,110,101,100,77,117,108,116,105,80,97,114,97,108,108,101,108,111,103,114,97,109,73,105,78,83,95,52,49,80,114,101,100,105,99,116,105,111,110,83,99,104,101,109,101,78,111,114,109,97,108,79,99,116,97,104,101,100,114,111,110,84,114,97,110,115,102,111,114,109,73,105,69,69,78,83,95,50,52,77,101,115,104,80,114,101,100,105,99,116,105,111,110,83,99,104,101,109,101,68,97,116,97,73,78,83,95,50,52,77,101,115,104,65,116,116,114,105,98,117,116,101,67,111,114,110,101,114,84,97,98,108,101,69,69,69,69,69,0,78,53,100,114,97,99,111,51,56,77,101,115,104,80,114,101,100,105,99,116,105,111,110,83,99,104,101,109,101,77,117,108,116,105,80,97,114,97,108,108,101,108,111,103,114,97,109,73,105,78,83,95,52,49,80,114,101,100,105,99,116,105,111,110,83,99,104,101,109,101,78,111,114,109,97,108,79,99,116,97,104,101,100,114,111,110,84,114,97,110,115,102,111,114,109,73,105,69,69,78,83,95,50,52,77,101,115,104,80,114,101,100,105,99,116,105,111,110,83,99,104,101,109,101,68,97,116,97,73,78,83,95,50,52,77,101,115,104,65,116,116,114,105,98,117,116,101,67,111,114,110,101,114,84,97,98,108,101,69,69,69,69,69,0,78,53,100,114,97,99,111,51,51,77,101,115,104,80,114,101,100,105,99,116,105,111,110,83,99,104,101,109,101,80,97,114,97,108,108,101,108,111,103,114,97,109,73,105,78,83,95,52,49,80,114,101,100,105,99,116,105,111,110,83,99,104,101,109,101,78,111,114,109,97,108,79,99,116,97,104,101,100,114,111,110,84,114,97,110,115,102,111,114,109,73,105,69,69,78,83,95,50,52,77,101,115,104,80,114,101,100,105,99,116,105,111,110,83,99,104,101,109,101,68,97,116,97,73,78,83,95,50,52,77,101,115,104,65,116,116,114,105,98,117,116,101,67,111,114,110,101,114,84,97,98,108,101,69,69,69,69,69,0,78,53,100,114,97,99,111,51,50,83,101,113,117,101,110,116,105,97,108,78,111,114,109,97,108,65,116,116,114,105,98,117,116,101,68,101,99,111,100,101,114,69,0,78,53,100,114,97,99,111,51,55,83,101,113,117,101,110,116,105,97,108,65,116,116,114,105,98,117,116,101,68,101,99,111,100,101,114,115,67,111,110,116,114,111,108,108,101,114,69,0,78,53,100,114,97,99,111,49,53,76,105,110,101,97,114,83,101,113,117,101,110,99,101,114,69,0,78,53,100,114,97,99,111,49,53,80,111,105,110,116,115,83,101,113,117,101,110,99,101,114,69,0,78,53,100,114,97,99,111,50,55,80,111,105,110,116,67,108,111,117,100,83,101,113,117,101,110,116,105,97,108,68,101,99,111,100,101,114,69,0,78,53,100,114,97,99,111,50,51,80,111,105,110,116,67,108,111,117,100,75,100,84,114,101,101,68,101,99,111,100,101,114,69,0,40,48,41,32,60,61,32,40,97,116,116,95,105,100,41,0,46,47,112,111,105,110,116,95,99,108,111,117,100,47,112,111,105,110,116,95,99,108,111,117,100,46,104,0,97,116,116,114,105,98,117,116,101,0,40,97,116,116,95,105,100,41,32,60,32,40,115,116,97,116,105,99,95,99,97,115,116,60,105,110,116,51,50,95,116,62,40,97,116,116,114,105,98,117,116,101,115,95,46,115,105,122,101,40,41,41,41,0,77,101,116,104,111,100,32,110,111,116,32,115,117,112,112,111,114,116,101,100,46,32,10,0,86,101,114,115,105,111,110,32,110,111,116,32,115,117,112,112,111,114,116,101,100,46,32,10,0,40,105,110,102,111,46,114,97,110,103,101,41,32,62,61,32,40,48,41,0,46,47,99,111,109,112,114,101,115,115,105,111,110,47,112,111,105,110,116,95,99,108,111,117,100,47,97,108,103,111,114,105,116,104,109,115,47,113,117,97,110,116,105,122,101,95,112,111,105,110,116,115,95,51,46,104,0,68,101,113,117,97,110,116,105,122,101,80,111,105,110,116,115,51,0,78,53,100,114,97,99,111,50,51,75,100,84,114,101,101,65,116,116,114,105,98,117,116,101,115,68,101,99,111,100,101,114,69,0,40,116,114,117,101,41,32,61,61,32,40,113,112,111,105,110,116,115,45,62,115,105,122,101,40,41,32,61,61,32,110,117,109,95,112,111,105,110,116,115,95,41,0,99,111,109,112,114,101,115,115,105,111,110,47,112,111,105,110,116,95,99,108,111,117,100,47,97,108,103,111,114,105,116,104,109,115,47,102,108,111,97,116,95,112,111,105,110,116,115,95,116,114,101,101,95,100,101,99,111,100,101,114,46,99,99,0,68,101,99,111,100,101,80,111,105,110,116,67,108,111,117,100,75,100,84,114,101,101,73,110,116,101,114,110,97,108,0,40,116,114,117,101,41,32,61,61,32,40,110,117,109,95,114,101,109,97,105,110,105,110,103,95,112,111,105,110,116,115,32,33,61,32,48,41,0,46,47,99,111,109,112,114,101,115,115,105,111,110,47,112,111,105,110,116,95,99,108,111,117,100,47,97,108,103,111,114,105,116,104,109,115,47,105,110,116,101,103,101,114,95,112,111,105,110,116,115,95,107,100,95,116,114,101,101,95,100,101,99,111,100,101,114,46,104,0,79,99,116,114,101,101,68,101,99,111,100,101,0,40,116,114,117,101,41,32,61,61,32,40,110,98,105,116,115,32,60,61,32,51,50,41,0,46,47,99,111,114,101,47,100,105,114,101,99,116,95,98,105,116,95,100,101,99,111,100,101,114,46,104,0,68,101,99,111,100,101,76,101,97,115,116,83,105,103,110,105,102,105,99,97,110,116,66,105,116,115,51,50,0,40,116,114,117,101,41,32,61,61,32,40,110,98,105,116,115,32,62,32,48,41,0,78,53,100,114,97,99,111,50,49,77,101,115,104,83,101,113,117,101,110,116,105,97,108,68,101,99,111,100,101,114,69,0,78,53,100,114,97,99,111,50,50,77,101,115,104,69,100,103,101,66,114,101,97,107,101,114,68,101,99,111,100,101,114,69,0,78,53,100,114,97,99,111,50,57,67,111,114,110,101,114,84,97,98,108,101,84,114,97,118,101,114,115,97,108,80,114,111,99,101,115,115,111,114,73,78,83,95,50,52,77,101,115,104,65,116,116,114,105,98,117,116,101,67,111,114,110,101,114,84,97,98,108,101,69,69,69,0,40,48,41,32,60,61,32,40,102,97,99,101,95,105,100,46,118,97,108,117,101,40,41,41,0,46,47,109,101,115,104,47,109,101,115,104,46,104,0,102,97,99,101,0,40,102,97,99,101,95,105,100,46,118,97,108,117,101,40,41,41,32,60,32,40,115,116,97,116,105,99,95,99,97,115,116,60,105,110,116,62,40,102,97,99,101,115,95,46,115,105,122,101,40,41,41,41,0,33,105,100,101,110,116,105,116,121,95,109,97,112,112,105,110,103,95,0,46,47,112,111,105,110,116,95,99,108,111,117,100,47,112,111,105,110,116,95,97,116,116,114,105,98,117,116,101,46,104,0,83,101,116,80,111,105,110,116,77,97,112,69,110,116,114,121,0,78,53,100,114,97,99,111,50,50,77,101,115,104,84,114,97,118,101,114,115,97,108,83,101,113,117,101,110,99,101,114,73,78,83,95,50,48,69,100,103,101,66,114,101,97,107,101,114,84,114,97,118,101,114,115,101,114,73,78,83,95,50,57,67,111,114,110,101,114,84,97,98,108,101,84,114,97,118,101,114,115,97,108,80,114,111,99,101,115,115,111,114,73,78,83,95,50,52,77,101,115,104,65,116,116,114,105,98,117,116,101,67,111,114,110,101,114,84,97,98,108,101,69,69,69,78,83,95,51,54,77,101,115,104,65,116,116,114,105,98,117,116,101,73,110,100,105,99,101,115,69,110,99,111,100,105,110,103,79,98,115,101,114,118,101,114,73,83,51,95,69,69,78,83,95,49,57,69,100,103,101,66,114,101,97,107,101,114,79,98,115,101,114,118,101,114,69,69,69,69,69,0,78,53,100,114,97,99,111,50,57,67,111,114,110,101,114,84,97,98,108,101,84,114,97,118,101,114,115,97,108,80,114,111,99,101,115,115,111,114,73,78,83,95,49,49,67,111,114,110,101,114,84,97,98,108,101,69,69,69,0,78,53,100,114,97,99,111,50,50,77,101,115,104,84,114,97,118,101,114,115,97,108,83,101,113,117,101,110,99,101,114,73,78,83,95,50,53,80,114,101,100,105,99,116,105,111,110,68,101,103,114,101,101,84,114,97,118,101,114,115,101,114,73,78,83,95,50,57,67,111,114,110,101,114,84,97,98,108,101,84,114,97,118,101,114,115,97,108,80,114,111,99,101,115,115,111,114,73,78,83,95,49,49,67,111,114,110,101,114,84,97,98,108,101,69,69,69,78,83,95,51,54,77,101,115,104,65,116,116,114,105,98,117,116,101,73,110,100,105,99,101,115,69,110,99,111,100,105,110,103,79,98,115,101,114,118,101,114,73,83,51,95,69,69,69,69,69,69,0,78,53,100,114,97,99,111,50,50,77,101,115,104,84,114,97,118,101,114,115,97,108,83,101,113,117,101,110,99,101,114,73,78,83,95,50,48,69,100,103,101,66,114,101,97,107,101,114,84,114,97,118,101,114,115,101,114,73,78,83,95,50,57,67,111,114,110,101,114,84,97,98,108,101,84,114,97,118,101,114,115,97,108,80,114,111,99,101,115,115,111,114,73,78,83,95,49,49,67,111,114,110,101,114,84,97,98,108,101,69,69,69,78,83,95,51,54,77,101,115,104,65,116,116,114,105,98,117,116,101,73,110,100,105,99,101,115,69,110,99,111,100,105,110,103,79,98,115,101,114,118,101,114,73,83,51,95,69,69,78,83,95,49,57,69,100,103,101,66,114,101,97,107,101,114,79,98,115,101,114,118,101,114,69,69,69,69,69,0,78,53,100,114,97,99,111,50,54,77,101,115,104,69,100,103,101,66,114,101,97,107,101,114,68,101,99,111,100,101,114,73,109,112,108,73,78,83,95,51,49,77,101,115,104,69,100,103,101,66,114,101,97,107,101,114,84,114,97,118,101,114,115,97,108,68,101,99,111,100,101,114,69,69,69,0,78,53,100,114,97,99,111,51,53,77,101,115,104,69,100,103,101,66,114,101,97,107,101,114,68,101,99,111,100,101,114,73,109,112,108,73,110,116,101,114,102,97,99,101,69,0,78,53,100,114,97,99,111,50,54,77,101,115,104,69,100,103,101,66,114,101,97,107,101,114,68,101,99,111,100,101,114,73,109,112,108,73,78,83,95,52,49,77,101,115,104,69,100,103,101,66,114,101,97,107,101,114,84,114,97,118,101,114,115,97,108,80,114,101,100,105,99,116,105,118,101,68,101,99,111,100,101,114,69,69,69,0,78,53,100,114,97,99,111,50,54,77,101,115,104,69,100,103,101,66,114,101,97,107,101,114,68,101,99,111,100,101,114,73,109,112,108,73,78,83,95,51,56,77,101,115,104,69,100,103,101,66,114,101,97,107,101,114,84,114,97,118,101,114,115,97,108,86,97,108,101,110,99,101,68,101,99,111,100,101,114,69,69,69,0,17,0,10,0,17,17,17,0,0,0,0,5,0,0,0,0,0,0,9,0,0,0,0,11,0,0,0,0,0,0,0,0,17,0,15,10,17,17,17,3,10,7,0,1,19,9,11,11,0,0,9,6,11,0,0,11,0,6,17,0,0,0,17,17,17,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,11,0,0,0,0,0,0,0,0,17,0,10,10,17,17,17,0,10,0,0,2,0,9,11,0,0,0,9,0,11,0,0,11,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,12,0,0,0,0,0,0,0,0,0,0,0,12,0,0,0,0,12,0,0,0,0,9,12,0,0,0,0,0,12,0,0,12,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,14,0,0,0,0,0,0,0,0,0,0,0,13,0,0,0,4,13,0,0,0,0,9,14,0,0,0,0,0,14,0,0,14,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,16,0,0,0,0,0,0,0,0,0,0,0,15,0,0,0,0,15,0,0,0,0,9,16,0,0,0,0,0,16,0,0,16,0,0,18,0,0,0,18,18,18,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,18,0,0,0,18,18,18,0,0,0,0,0,0,9,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,11,0,0,0,0,0,0,0,0,0,0,0,10,0,0,0,0,10,0,0,0,0,9,11,0,0,0,0,0,11,0,0,11,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,12,0,0,0,0,0,0,0,0,0,0,0,12,0,0,0,0,12,0,0,0,0,9,12,0,0,0,0,0,12,0,0,12,0,0,48,49,50,51,52,53,54,55,56,57,65,66,67,68,69,70,45,43,32,32,32,48,88,48,120,0,40,110,117,108,108,41,0,45,48,88,43,48,88,32,48,88,45,48,120,43,48,120,32,48,120,0,105,110,102,0,73,78,70,0,110,97,110,0,78,65,78,0,46,0,84,33,34,25,13,1,2,3,17,75,28,12,16,4,11,29,18,30,39,104,110,111,112,113,98,32,5,6,15,19,20,21,26,8,22,7,40,36,23,24,9,10,14,27,31,37,35,131,130,125,38,42,43,60,61,62,63,67,71,74,77,88,89,90,91,92,93,94,95,96,97,99,100,101,102,103,105,106,107,108,114,115,116,121,122,123,124,0,73,108,108,101,103,97,108,32,98,121,116,101,32,115,101,113,117,101,110,99,101,0,68,111,109,97,105,110,32,101,114,114,111,114,0,82,101,115,117,108,116,32,110,111,116,32,114,101,112,114,101,115,101,110,116,97,98,108,101,0,78,111,116,32,97,32,116,116,121,0,80,101,114,109,105,115,115,105,111,110,32,100,101,110,105,101,100,0,79,112,101,114,97,116,105,111,110,32,110,111,116,32,112,101,114,109,105,116,116,101,100,0,78,111,32,115,117,99,104,32,102,105,108,101,32,111,114,32,100,105,114,101,99,116,111,114,121,0,78,111,32,115,117,99,104,32,112,114,111,99,101,115,115,0,70,105,108,101,32,101,120,105,115,116,115,0,86,97,108,117,101,32,116,111,111,32,108,97,114,103,101,32,102,111,114,32,100,97,116,97,32,116,121,112,101,0,78,111,32,115,112,97,99,101,32,108,101,102,116,32,111,110,32,100,101,118,105,99,101,0,79,117,116,32,111,102,32,109,101,109,111,114,121,0,82,101,115,111,117,114,99,101,32,98,117,115,121,0,73,110,116,101,114,114,117,112,116,101,100,32,115,121,115,116,101,109,32,99,97,108,108,0,82,101,115,111,117,114,99,101,32,116,101,109,112,111,114,97,114,105,108,121,32,117,110,97,118,97,105,108,97,98,108,101,0,73,110,118,97,108,105,100,32,115,101,101,107,0,67,114,111,115,115,45,100,101,118,105,99,101,32,108,105,110,107,0,82,101,97,100,45,111,110,108,121,32,102,105,108,101,32,115,121,115,116,101,109,0,68,105,114,101,99,116,111,114,121,32,110,111,116,32,101,109,112,116,121,0,67,111,110,110,101,99,116,105,111,110,32,114,101,115,101,116,32,98,121,32,112,101,101,114,0,79,112,101,114,97,116,105,111,110,32,116,105,109,101,100,32,111,117,116,0,67,111,110,110,101,99,116,105,111,110,32,114,101,102,117,115,101,100,0,72,111,115,116,32,105,115,32,100,111,119,110,0,72,111,115,116,32,105,115,32,117,110,114,101,97,99,104,97,98,108,101,0,65,100,100,114,101,115,115,32,105,110,32,117,115,101,0,66,114,111,107,101,110,32,112,105,112,101,0,73,47,79,32,101,114,114,111,114,0,78,111,32,115,117,99,104,32,100,101,118,105,99,101,32,111,114,32,97,100,100,114,101,115,115,0,66,108,111,99,107,32,100,101,118,105,99,101,32,114,101,113,117,105,114,101,100,0,78,111,32,115,117,99,104,32,100,101,118,105,99,101,0,78,111,116,32,97,32,100,105,114,101,99,116,111,114,121,0,73,115,32,97,32,100,105,114,101,99,116,111,114,121,0,84,101,120,116,32,102,105,108,101,32,98,117,115,121,0,69,120,101,99,32,102,111,114,109,97,116,32,101,114,114,111,114,0,73,110,118,97,108,105,100,32,97,114,103,117,109,101,110,116,0,65,114,103,117,109,101,110,116,32,108,105,115,116,32,116,111,111,32,108,111,110,103,0,83,121,109,98,111,108,105,99,32,108,105,110,107,32,108,111,111,112,0,70,105,108,101,110,97,109,101,32,116,111,111,32,108,111,110,103,0,84,111,111,32,109,97,110,121,32,111,112,101,110,32,102,105,108,101,115,32,105,110,32,115,121,115,116,101,109,0,78,111,32,102,105,108,101,32,100,101,115,99,114,105,112,116,111,114,115,32,97,118,97,105,108,97,98,108,101,0,66,97,100,32,102,105,108,101,32,100,101,115,99,114,105,112,116,111,114,0,78,111,32,99,104,105,108,100,32,112,114,111,99,101,115,115,0,66,97,100,32,97,100,100,114,101,115,115,0,70,105,108,101,32,116,111,111,32,108,97,114,103,101,0,84,111,111,32,109,97,110,121,32,108,105,110,107,115,0,78,111,32,108,111,99,107,115,32,97,118,97,105,108,97,98,108,101,0,82,101,115,111,117,114,99,101,32,100,101,97,100,108,111,99,107,32,119,111,117,108,100,32,111,99,99,117,114,0,83,116,97,116,101,32,110,111,116,32,114,101,99,111,118,101,114,97,98,108,101,0,80,114,101,118,105,111,117,115,32,111,119,110,101,114,32,100,105,101,100,0,79,112,101,114,97,116,105,111,110,32,99,97,110,99,101,108,101,100,0,70,117,110,99,116,105,111,110,32,110,111,116,32,105,109,112,108,101,109,101,110,116,101,100,0,78,111,32,109,101,115,115,97,103,101,32,111,102,32,100,101,115,105,114,101,100,32,116,121,112,101,0,73,100,101,110,116,105,102,105,101,114,32,114,101,109,111,118,101,100,0,68,101,118,105,99,101,32,110,111,116,32,97,32,115,116,114,101,97,109,0,78,111,32,100,97,116,97,32,97,118,97,105,108,97,98,108,101,0,68,101,118,105,99,101,32,116,105,109,101,111,117,116,0,79,117,116,32,111,102,32,115,116,114,101,97,109,115,32,114,101,115,111,117,114,99,101,115,0,76,105,110,107,32,104,97,115,32,98,101,101,110,32,115,101,118,101,114,101,100,0,80,114,111,116,111,99,111,108,32,101,114,114,111,114,0,66,97,100,32,109,101,115,115,97,103,101,0,70,105,108,101,32,100,101,115,99,114,105,112,116,111,114,32,105,110,32,98,97,100,32,115,116,97,116,101,0,78,111,116,32,97,32,115,111,99,107,101,116,0,68,101,115,116,105,110,97,116,105,111,110,32,97,100,100,114,101,115,115,32,114,101,113,117,105,114,101,100,0,77,101,115,115,97,103,101,32,116,111,111,32,108,97,114,103,101,0,80,114,111,116,111,99,111,108,32,119,114,111,110,103,32,116,121,112,101,32,102,111,114,32,115,111,99,107,101,116,0,80,114,111,116,111,99,111,108,32,110,111,116,32,97,118,97,105,108,97,98,108,101,0,80,114,111,116,111,99,111,108,32,110,111,116,32,115,117,112,112,111,114,116,101,100,0,83,111,99,107,101,116,32,116,121,112,101,32,110,111,116,32,115,117,112,112,111,114,116,101,100,0,78,111,116,32,115,117,112,112,111,114,116,101,100,0,80,114,111,116,111,99,111,108,32,102,97,109,105,108,121,32,110,111,116,32,115,117,112,112,111,114,116,101,100,0,65,100,100,114,101,115,115,32,102,97,109,105,108,121,32,110,111,116,32,115,117,112,112,111,114,116,101,100,32,98,121,32,112,114,111,116,111,99,111,108,0,65,100,100,114,101,115,115,32,110,111,116,32,97,118,97,105,108,97,98,108,101,0,78,101,116,119,111,114,107,32,105,115,32,100,111,119,110,0,78,101,116,119,111,114,107,32,117,110,114,101,97,99,104,97,98,108,101,0,67,111,110,110,101,99,116,105,111,110,32,114,101,115,101,116,32,98,121,32,110,101,116,119,111,114,107,0,67,111,110,110,101,99,116,105,111,110,32,97,98,111,114,116,101,100,0,78,111,32,98,117,102,102,101,114,32,115,112,97,99,101,32,97,118,97,105,108,97,98,108,101,0,83,111,99,107,101,116,32,105,115,32,99,111,110,110,101,99,116,101,100,0,83,111,99,107,101,116,32,110,111,116,32,99,111,110,110,101,99,116,101,100,0,67,97,110,110,111,116,32,115,101,110,100,32,97,102,116,101,114,32,115,111,99,107,101,116,32,115,104,117,116,100,111,119,110,0,79,112,101,114,97,116,105,111,110,32,97,108,114,101,97,100,121,32,105,110,32,112,114,111,103,114,101,115,115,0,79,112,101,114,97,116,105,111,110,32,105,110,32,112,114,111,103,114,101,115,115,0,83,116,97,108,101,32,102,105,108,101,32,104,97,110,100,108,101,0,82,101,109,111,116,101,32,73,47,79,32,101,114,114,111,114,0,81,117,111,116,97,32,101,120,99,101,101,100,101,100,0,78,111,32,109,101,100,105,117,109,32,102,111,117,110,100,0,87,114,111,110,103,32,109,101,100,105,117,109,32,116,121,112,101,0,78,111,32,101,114,114,111,114,32,105,110,102,111,114,109,97,116,105,111,110,0,0,33,34,118,101,99,116,111,114,32,108,101,110,103,116,104,95,101,114,114,111,114,34,0,47,117,115,114,47,108,111,99,97,108,47,103,111,111,103,108,101,47,104,111,109,101,47,111,115,116,97,118,97,47,100,101,118,101,47,101,109,115,100,107,95,112,111,114,116,97,98,108,101,47,101,109,115,99,114,105,112,116,101,110,47,109,97,115,116,101,114,47,115,121,115,116,101,109,47,105,110,99,108,117,100,101,47,108,105,98,99,120,120,47,118,101,99,116,111,114,0,95,95,116,104,114,111,119,95,108,101,110,103,116,104,95,101,114,114,111,114,0,33,34,118,101,99,116,111,114,32,111,117,116,95,111,102,95,114,97,110,103,101,34,0,95,95,116,104,114,111,119,95,111,117,116,95,111,102,95,114,97,110,103,101,0,116,101,114,109,105,110,97,116,105,110,103,32,119,105,116,104,32,37,115,32,101,120,99,101,112,116,105,111,110,32,111,102,32,116,121,112,101,32,37,115,58,32,37,115,0,116,101,114,109,105,110,97,116,105,110,103,32,119,105,116,104,32,37,115,32,101,120,99,101,112,116,105,111,110,32,111,102,32,116,121,112,101,32,37,115,0,116,101,114,109,105,110,97,116,105,110,103,32,119,105,116,104,32,37,115,32,102,111,114,101,105,103,110,32,101,120,99,101,112,116,105,111,110,0,116,101,114,109,105,110,97,116,105,110,103,0,117,110,99,97,117,103,104,116,0,83,116,57,101,120,99,101,112,116,105,111,110,0,78,49,48,95,95,99,120,120,97,98,105,118,49,49,54,95,95,115,104,105,109,95,116,121,112,101,95,105,110,102,111,69,0,83,116,57,116,121,112,101,95,105,110,102,111,0,78,49,48,95,95,99,120,120,97,98,105,118,49,50,48,95,95,115,105,95,99,108,97,115,115,95,116,121,112,101,95,105,110,102,111,69,0,78,49,48,95,95,99,120,120,97,98,105,118,49,49,55,95,95,99,108,97,115,115,95,116,121,112,101,95,105,110,102,111,69,0,112,116,104,114,101,97,100,95,111,110,99,101,32,102,97,105,108,117,114,101,32,105,110,32,95,95,99,120,97,95,103,101,116,95,103,108,111,98,97,108,115,95,102,97,115,116,40,41,0,99,97,110,110,111,116,32,99,114,101,97,116,101,32,112,116,104,114,101,97,100,32,107,101,121,32,102,111,114,32,95,95,99,120,97,95,103,101,116,95,103,108,111,98,97,108,115,40,41,0,99,97,110,110,111,116,32,122,101,114,111,32,111,117,116,32,116,104,114,101,97,100,32,118,97,108,117,101,32,102,111,114,32,95,95,99,120,97,95,103,101,116,95,103,108,111,98,97,108,115,40,41,0,116,101,114,109,105,110,97,116,101,95,104,97,110,100,108,101,114,32,117,110,101,120,112,101,99,116,101,100,108,121,32,114,101,116,117,114,110,101,100,0,115,116,100,58,58,98,97,100,95,97,108,108,111,99,0,83,116,57,98,97,100,95,97,108,108,111,99,0,78,49,48,95,95,99,120,120,97,98,105,118,49,49,57,95,95,112,111,105,110,116,101,114,95,116,121,112,101,95,105,110,102,111,69,0,78,49,48,95,95,99,120,120,97,98,105,118,49,49,55,95,95,112,98,97,115,101,95,116,121,112,101,95,105,110,102,111,69,0],"i8",ALLOC_NONE,Runtime.GLOBAL_BASE+10240);var tempDoublePtr=STATICTOP;STATICTOP+=16;Module["_i64Subtract"]=_i64Subtract;function ___assert_fail(condition,filename,line,func){ABORT=true;throw"Assertion failed: "+Pointer_stringify(condition)+", at: "+[filename?Pointer_stringify(filename):"unknown filename",line,func?Pointer_stringify(func):"unknown function"]+" at "+stackTrace()}function __ZSt18uncaught_exceptionv(){return!!__ZSt18uncaught_exceptionv.uncaught_exception}var EXCEPTIONS={last:0,caught:[],infos:{},deAdjust:(function(adjusted){if(!adjusted||EXCEPTIONS.infos[adjusted])return adjusted;for(var ptr in EXCEPTIONS.infos){var info=EXCEPTIONS.infos[ptr];if(info.adjusted===adjusted){return ptr}}return adjusted}),addRef:(function(ptr){if(!ptr)return;var info=EXCEPTIONS.infos[ptr];info.refcount++}),decRef:(function(ptr){if(!ptr)return;var info=EXCEPTIONS.infos[ptr];assert(info.refcount>0);info.refcount--;if(info.refcount===0&&!info.rethrown){if(info.destructor){Runtime.dynCall("vi",info.destructor,[ptr])}delete EXCEPTIONS.infos[ptr];___cxa_free_exception(ptr)}}),clearRef:(function(ptr){if(!ptr)return;var info=EXCEPTIONS.infos[ptr];info.refcount=0})};function ___resumeException(ptr){if(!EXCEPTIONS.last){EXCEPTIONS.last=ptr}throw ptr+" - Exception catching is disabled, this exception cannot be caught. Compile with -s DISABLE_EXCEPTION_CATCHING=0 or DISABLE_EXCEPTION_CATCHING=2 to catch."}function ___cxa_find_matching_catch(){var thrown=EXCEPTIONS.last;if(!thrown){return(asm["setTempRet0"](0),0)|0}var info=EXCEPTIONS.infos[thrown];var throwntype=info.type;if(!throwntype){return(asm["setTempRet0"](0),thrown)|0}var typeArray=Array.prototype.slice.call(arguments);var pointer=Module["___cxa_is_pointer_type"](throwntype);if(!___cxa_find_matching_catch.buffer)___cxa_find_matching_catch.buffer=_malloc(4);HEAP32[___cxa_find_matching_catch.buffer>>2]=thrown;thrown=___cxa_find_matching_catch.buffer;for(var i=0;i>2];info.adjusted=thrown;return(asm["setTempRet0"](typeArray[i]),thrown)|0}}thrown=HEAP32[thrown>>2];return(asm["setTempRet0"](throwntype),thrown)|0}function ___cxa_throw(ptr,type,destructor){EXCEPTIONS.infos[ptr]={ptr:ptr,adjusted:ptr,type:type,destructor:destructor,refcount:0,caught:false,rethrown:false};EXCEPTIONS.last=ptr;if(!("uncaught_exception"in __ZSt18uncaught_exceptionv)){__ZSt18uncaught_exceptionv.uncaught_exception=1}else{__ZSt18uncaught_exceptionv.uncaught_exception++}throw ptr+" - Exception catching is disabled, this exception cannot be caught. Compile with -s DISABLE_EXCEPTION_CATCHING=0 or DISABLE_EXCEPTION_CATCHING=2 to catch."}Module["_memset"]=_memset;Module["_bitshift64Shl"]=_bitshift64Shl;function _abort(){Module["abort"]()}function _pthread_once(ptr,func){if(!_pthread_once.seen)_pthread_once.seen={};if(ptr in _pthread_once.seen)return;Runtime.dynCall("v",func);_pthread_once.seen[ptr]=1}var PTHREAD_SPECIFIC={};function _pthread_getspecific(key){return PTHREAD_SPECIFIC[key]||0}Module["_i64Add"]=_i64Add;var PTHREAD_SPECIFIC_NEXT_KEY=1;var ERRNO_CODES={EPERM:1,ENOENT:2,ESRCH:3,EINTR:4,EIO:5,ENXIO:6,E2BIG:7,ENOEXEC:8,EBADF:9,ECHILD:10,EAGAIN:11,EWOULDBLOCK:11,ENOMEM:12,EACCES:13,EFAULT:14,ENOTBLK:15,EBUSY:16,EEXIST:17,EXDEV:18,ENODEV:19,ENOTDIR:20,EISDIR:21,EINVAL:22,ENFILE:23,EMFILE:24,ENOTTY:25,ETXTBSY:26,EFBIG:27,ENOSPC:28,ESPIPE:29,EROFS:30,EMLINK:31,EPIPE:32,EDOM:33,ERANGE:34,ENOMSG:42,EIDRM:43,ECHRNG:44,EL2NSYNC:45,EL3HLT:46,EL3RST:47,ELNRNG:48,EUNATCH:49,ENOCSI:50,EL2HLT:51,EDEADLK:35,ENOLCK:37,EBADE:52,EBADR:53,EXFULL:54,ENOANO:55,EBADRQC:56,EBADSLT:57,EDEADLOCK:35,EBFONT:59,ENOSTR:60,ENODATA:61,ETIME:62,ENOSR:63,ENONET:64,ENOPKG:65,EREMOTE:66,ENOLINK:67,EADV:68,ESRMNT:69,ECOMM:70,EPROTO:71,EMULTIHOP:72,EDOTDOT:73,EBADMSG:74,ENOTUNIQ:76,EBADFD:77,EREMCHG:78,ELIBACC:79,ELIBBAD:80,ELIBSCN:81,ELIBMAX:82,ELIBEXEC:83,ENOSYS:38,ENOTEMPTY:39,ENAMETOOLONG:36,ELOOP:40,EOPNOTSUPP:95,EPFNOSUPPORT:96,ECONNRESET:104,ENOBUFS:105,EAFNOSUPPORT:97,EPROTOTYPE:91,ENOTSOCK:88,ENOPROTOOPT:92,ESHUTDOWN:108,ECONNREFUSED:111,EADDRINUSE:98,ECONNABORTED:103,ENETUNREACH:101,ENETDOWN:100,ETIMEDOUT:110,EHOSTDOWN:112,EHOSTUNREACH:113,EINPROGRESS:115,EALREADY:114,EDESTADDRREQ:89,EMSGSIZE:90,EPROTONOSUPPORT:93,ESOCKTNOSUPPORT:94,EADDRNOTAVAIL:99,ENETRESET:102,EISCONN:106,ENOTCONN:107,ETOOMANYREFS:109,EUSERS:87,EDQUOT:122,ESTALE:116,ENOTSUP:95,ENOMEDIUM:123,EILSEQ:84,EOVERFLOW:75,ECANCELED:125,ENOTRECOVERABLE:131,EOWNERDEAD:130,ESTRPIPE:86};function _pthread_key_create(key,destructor){if(key==0){return ERRNO_CODES.EINVAL}HEAP32[key>>2]=PTHREAD_SPECIFIC_NEXT_KEY;PTHREAD_SPECIFIC[PTHREAD_SPECIFIC_NEXT_KEY]=0;PTHREAD_SPECIFIC_NEXT_KEY++;return 0}function _pthread_setspecific(key,value){if(!(key in PTHREAD_SPECIFIC)){return ERRNO_CODES.EINVAL}PTHREAD_SPECIFIC[key]=value;return 0}function _malloc(bytes){var ptr=Runtime.dynamicAlloc(bytes+8);return ptr+8&4294967288}Module["_malloc"]=_malloc;function ___cxa_allocate_exception(size){return _malloc(size)}Module["_bitshift64Lshr"]=_bitshift64Lshr;function ___cxa_pure_virtual(){ABORT=true;throw"Pure virtual function called!"}function _pthread_cleanup_push(routine,arg){__ATEXIT__.push((function(){Runtime.dynCall("vi",routine,[arg])}));_pthread_cleanup_push.level=__ATEXIT__.length}function _pthread_cleanup_pop(){assert(_pthread_cleanup_push.level==__ATEXIT__.length,"cannot pop if something else added meanwhile!");__ATEXIT__.pop();_pthread_cleanup_push.level=__ATEXIT__.length}function ___cxa_begin_catch(ptr){var info=EXCEPTIONS.infos[ptr];if(info&&!info.caught){info.caught=true;__ZSt18uncaught_exceptionv.uncaught_exception--}if(info)info.rethrown=false;EXCEPTIONS.caught.push(ptr);EXCEPTIONS.addRef(EXCEPTIONS.deAdjust(ptr));return ptr}function _emscripten_memcpy_big(dest,src,num){HEAPU8.set(HEAPU8.subarray(src,src+num),dest);return dest}Module["_memcpy"]=_memcpy;var SYSCALLS={varargs:0,get:(function(varargs){SYSCALLS.varargs+=4;var ret=HEAP32[SYSCALLS.varargs-4>>2];return ret}),getStr:(function(){var ret=Pointer_stringify(SYSCALLS.get());return ret}),get64:(function(){var low=SYSCALLS.get(),high=SYSCALLS.get();if(low>=0)assert(high===0);else assert(high===-1);return low}),getZero:(function(){assert(SYSCALLS.get()===0)})};function ___syscall6(which,varargs){SYSCALLS.varargs=varargs;try{var stream=SYSCALLS.getStreamFromFD();FS.close(stream);return 0}catch(e){if(typeof FS==="undefined"||!(e instanceof FS.ErrnoError))abort(e);return-e.errno}}var cttz_i8=allocate([8,0,1,0,2,0,1,0,3,0,1,0,2,0,1,0,4,0,1,0,2,0,1,0,3,0,1,0,2,0,1,0,5,0,1,0,2,0,1,0,3,0,1,0,2,0,1,0,4,0,1,0,2,0,1,0,3,0,1,0,2,0,1,0,6,0,1,0,2,0,1,0,3,0,1,0,2,0,1,0,4,0,1,0,2,0,1,0,3,0,1,0,2,0,1,0,5,0,1,0,2,0,1,0,3,0,1,0,2,0,1,0,4,0,1,0,2,0,1,0,3,0,1,0,2,0,1,0,7,0,1,0,2,0,1,0,3,0,1,0,2,0,1,0,4,0,1,0,2,0,1,0,3,0,1,0,2,0,1,0,5,0,1,0,2,0,1,0,3,0,1,0,2,0,1,0,4,0,1,0,2,0,1,0,3,0,1,0,2,0,1,0,6,0,1,0,2,0,1,0,3,0,1,0,2,0,1,0,4,0,1,0,2,0,1,0,3,0,1,0,2,0,1,0,5,0,1,0,2,0,1,0,3,0,1,0,2,0,1,0,4,0,1,0,2,0,1,0,3,0,1,0,2,0,1,0],"i8",ALLOC_STATIC);Module["_llvm_cttz_i32"]=_llvm_cttz_i32;Module["___udivmoddi4"]=___udivmoddi4;Module["___udivdi3"]=___udivdi3;Module["___muldsi3"]=___muldsi3;Module["___muldi3"]=___muldi3;function ___setErrNo(value){if(Module["___errno_location"])HEAP32[Module["___errno_location"]()>>2]=value;return value}Module["_sbrk"]=_sbrk;Module["_memmove"]=_memmove;function ___gxx_personality_v0(){}Module["___uremdi3"]=___uremdi3;Module["_llvm_bswap_i16"]=_llvm_bswap_i16;Module["_pthread_self"]=_pthread_self;function ___syscall140(which,varargs){SYSCALLS.varargs=varargs;try{var stream=SYSCALLS.getStreamFromFD(),offset_high=SYSCALLS.get(),offset_low=SYSCALLS.get(),result=SYSCALLS.get(),whence=SYSCALLS.get();var offset=offset_low;assert(offset_high===0);FS.llseek(stream,offset,whence);HEAP32[result>>2]=stream.position;if(stream.getdents&&offset===0&&whence===0)stream.getdents=null;return 0}catch(e){if(typeof FS==="undefined"||!(e instanceof FS.ErrnoError))abort(e);return-e.errno}}function ___syscall146(which,varargs){SYSCALLS.varargs=varargs;try{var stream=SYSCALLS.get(),iov=SYSCALLS.get(),iovcnt=SYSCALLS.get();var ret=0;if(!___syscall146.buffer){___syscall146.buffers=[null,[],[]];___syscall146.printChar=(function(stream,curr){var buffer=___syscall146.buffers[stream];assert(buffer);if(curr===0||curr===10){(stream===1?Module["print"]:Module["printErr"])(UTF8ArrayToString(buffer,0));buffer.length=0}else{buffer.push(curr)}})}for(var i=0;i>2];var len=HEAP32[iov+(i*8+4)>>2];for(var j=0;j>2]=DYNAMIC_BASE;staticSealed=true;function invoke_iiii(index,a1,a2,a3){try{return Module["dynCall_iiii"](index,a1,a2,a3)}catch(e){if(typeof e!=="number"&&e!=="longjmp")throw e;asm["setThrew"](1,0)}}function invoke_viiiii(index,a1,a2,a3,a4,a5){try{Module["dynCall_viiiii"](index,a1,a2,a3,a4,a5)}catch(e){if(typeof e!=="number"&&e!=="longjmp")throw e;asm["setThrew"](1,0)}}function invoke_vi(index,a1){try{Module["dynCall_vi"](index,a1)}catch(e){if(typeof e!=="number"&&e!=="longjmp")throw e;asm["setThrew"](1,0)}}function invoke_iiiiiii(index,a1,a2,a3,a4,a5,a6){try{return Module["dynCall_iiiiiii"](index,a1,a2,a3,a4,a5,a6)}catch(e){if(typeof e!=="number"&&e!=="longjmp")throw e;asm["setThrew"](1,0)}}function invoke_ii(index,a1){try{return Module["dynCall_ii"](index,a1)}catch(e){if(typeof e!=="number"&&e!=="longjmp")throw e;asm["setThrew"](1,0)}}function invoke_viii(index,a1,a2,a3){try{Module["dynCall_viii"](index,a1,a2,a3)}catch(e){if(typeof e!=="number"&&e!=="longjmp")throw e;asm["setThrew"](1,0)}}function invoke_v(index){try{Module["dynCall_v"](index)}catch(e){if(typeof e!=="number"&&e!=="longjmp")throw e;asm["setThrew"](1,0)}}function invoke_viiiiii(index,a1,a2,a3,a4,a5,a6){try{Module["dynCall_viiiiii"](index,a1,a2,a3,a4,a5,a6)}catch(e){if(typeof e!=="number"&&e!=="longjmp")throw e;asm["setThrew"](1,0)}}function invoke_iii(index,a1,a2){try{return Module["dynCall_iii"](index,a1,a2)}catch(e){if(typeof e!=="number"&&e!=="longjmp")throw e;asm["setThrew"](1,0)}}function invoke_viiii(index,a1,a2,a3,a4){try{Module["dynCall_viiii"](index,a1,a2,a3,a4)}catch(e){if(typeof e!=="number"&&e!=="longjmp")throw e;asm["setThrew"](1,0)}}Module.asmGlobalArg={"Math":Math,"Int8Array":Int8Array,"Int16Array":Int16Array,"Int32Array":Int32Array,"Uint8Array":Uint8Array,"Uint16Array":Uint16Array,"Uint32Array":Uint32Array,"Float32Array":Float32Array,"Float64Array":Float64Array,"NaN":NaN,"Infinity":Infinity,"byteLength":byteLength};Module.asmLibraryArg={"abort":abort,"assert":assert,"enlargeMemory":enlargeMemory,"getTotalMemory":getTotalMemory,"abortOnCannotGrowMemory":abortOnCannotGrowMemory,"invoke_iiii":invoke_iiii,"invoke_viiiii":invoke_viiiii,"invoke_vi":invoke_vi,"invoke_iiiiiii":invoke_iiiiiii,"invoke_ii":invoke_ii,"invoke_viii":invoke_viii,"invoke_v":invoke_v,"invoke_viiiiii":invoke_viiiiii,"invoke_iii":invoke_iii,"invoke_viiii":invoke_viiii,"_pthread_cleanup_pop":_pthread_cleanup_pop,"_pthread_getspecific":_pthread_getspecific,"_pthread_setspecific":_pthread_setspecific,"_pthread_cleanup_push":_pthread_cleanup_push,"___cxa_throw":___cxa_throw,"_pthread_key_create":_pthread_key_create,"___syscall6":___syscall6,"___setErrNo":___setErrNo,"_abort":_abort,"_pthread_once":_pthread_once,"___syscall146":___syscall146,"___cxa_begin_catch":___cxa_begin_catch,"_emscripten_memcpy_big":_emscripten_memcpy_big,"___gxx_personality_v0":___gxx_personality_v0,"___syscall140":___syscall140,"___resumeException":___resumeException,"___cxa_find_matching_catch":___cxa_find_matching_catch,"___assert_fail":___assert_fail,"___cxa_pure_virtual":___cxa_pure_virtual,"___cxa_allocate_exception":___cxa_allocate_exception,"__ZSt18uncaught_exceptionv":__ZSt18uncaught_exceptionv,"STACKTOP":STACKTOP,"STACK_MAX":STACK_MAX,"DYNAMICTOP_PTR":DYNAMICTOP_PTR,"tempDoublePtr":tempDoublePtr,"ABORT":ABORT,"cttz_i8":cttz_i8};// EMSCRIPTEN_START_ASM +var isRuntimeInitialized=false;var isModuleParsed=false;Module["onRuntimeInitialized"]=(function(){isRuntimeInitialized=true;if(isModuleParsed){if(typeof Module["onModuleLoaded"]==="function"){Module["onModuleLoaded"](Module)}}});Module["onModuleParsed"]=(function(){isModuleParsed=true;if(isRuntimeInitialized){if(typeof Module["onModuleLoaded"]==="function"){Module["onModuleLoaded"](Module)}}});function isVersionSupported(versionString){if(typeof versionString!=="string")return false;const version=versionString.split(".");if(version.length<2||version.length>3)return false;if(version[0]>0||version[1]>9)return false;return true}Module["isVersionSupported"]=isVersionSupported;var Module;if(!Module)Module=(typeof DracoDecoderModule!=="undefined"?DracoDecoderModule:null)||{};var moduleOverrides={};for(var key in Module){if(Module.hasOwnProperty(key)){moduleOverrides[key]=Module[key]}}var ENVIRONMENT_IS_WEB=false;var ENVIRONMENT_IS_WORKER=false;var ENVIRONMENT_IS_NODE=false;var ENVIRONMENT_IS_SHELL=false;if(Module["ENVIRONMENT"]){if(Module["ENVIRONMENT"]==="WEB"){ENVIRONMENT_IS_WEB=true}else if(Module["ENVIRONMENT"]==="WORKER"){ENVIRONMENT_IS_WORKER=true}else if(Module["ENVIRONMENT"]==="NODE"){ENVIRONMENT_IS_NODE=true}else if(Module["ENVIRONMENT"]==="SHELL"){ENVIRONMENT_IS_SHELL=true}else{throw new Error("The provided Module['ENVIRONMENT'] value is not valid. It must be one of: WEB|WORKER|NODE|SHELL.")}}else{ENVIRONMENT_IS_WEB=typeof window==="object";ENVIRONMENT_IS_WORKER=typeof importScripts==="function";ENVIRONMENT_IS_NODE=typeof process==="object"&&typeof require==="function"&&!ENVIRONMENT_IS_WEB&&!ENVIRONMENT_IS_WORKER;ENVIRONMENT_IS_SHELL=!ENVIRONMENT_IS_WEB&&!ENVIRONMENT_IS_NODE&&!ENVIRONMENT_IS_WORKER}if(ENVIRONMENT_IS_NODE){if(!Module["print"])Module["print"]=console.log;if(!Module["printErr"])Module["printErr"]=console.warn;var nodeFS;var nodePath;Module["read"]=function shell_read(filename,binary){if(!nodeFS)nodeFS=require("fs");if(!nodePath)nodePath=require("path");filename=nodePath["normalize"](filename);var ret=nodeFS["readFileSync"](filename);return binary?ret:ret.toString()};Module["readBinary"]=function readBinary(filename){var ret=Module["read"](filename,true);if(!ret.buffer){ret=new Uint8Array(ret)}assert(ret.buffer);return ret};Module["load"]=function load(f){globalEval(read(f))};if(!Module["thisProgram"]){if(process["argv"].length>1){Module["thisProgram"]=process["argv"][1].replace(/\\/g,"/")}else{Module["thisProgram"]="unknown-program"}}Module["arguments"]=process["argv"].slice(2);if(typeof module!=="undefined"){module["exports"]=Module}process["on"]("uncaughtException",(function(ex){if(!(ex instanceof ExitStatus)){throw ex}}));Module["inspect"]=(function(){return"[Emscripten Module object]"})}else if(ENVIRONMENT_IS_SHELL){if(!Module["print"])Module["print"]=print;if(typeof printErr!="undefined")Module["printErr"]=printErr;if(typeof read!="undefined"){Module["read"]=read}else{Module["read"]=function shell_read(){throw"no read() available"}}Module["readBinary"]=function readBinary(f){if(typeof readbuffer==="function"){return new Uint8Array(readbuffer(f))}var data=read(f,"binary");assert(typeof data==="object");return data};if(typeof scriptArgs!="undefined"){Module["arguments"]=scriptArgs}else if(typeof arguments!="undefined"){Module["arguments"]=arguments}if(typeof quit==="function"){Module["quit"]=(function(status,toThrow){quit(status)})}}else if(ENVIRONMENT_IS_WEB||ENVIRONMENT_IS_WORKER){Module["read"]=function shell_read(url){var xhr=new XMLHttpRequest;xhr.open("GET",url,false);xhr.send(null);return xhr.responseText};if(ENVIRONMENT_IS_WORKER){Module["readBinary"]=function readBinary(url){var xhr=new XMLHttpRequest;xhr.open("GET",url,false);xhr.responseType="arraybuffer";xhr.send(null);return new Uint8Array(xhr.response)}}Module["readAsync"]=function readAsync(url,onload,onerror){var xhr=new XMLHttpRequest;xhr.open("GET",url,true);xhr.responseType="arraybuffer";xhr.onload=function xhr_onload(){if(xhr.status==200||xhr.status==0&&xhr.response){onload(xhr.response)}else{onerror()}};xhr.onerror=onerror;xhr.send(null)};if(typeof arguments!="undefined"){Module["arguments"]=arguments}if(typeof console!=="undefined"){if(!Module["print"])Module["print"]=function shell_print(x){console.log(x)};if(!Module["printErr"])Module["printErr"]=function shell_printErr(x){console.warn(x)}}else{var TRY_USE_DUMP=false;if(!Module["print"])Module["print"]=TRY_USE_DUMP&&typeof dump!=="undefined"?(function(x){dump(x)}):(function(x){})}if(ENVIRONMENT_IS_WORKER){Module["load"]=importScripts}if(typeof Module["setWindowTitle"]==="undefined"){Module["setWindowTitle"]=(function(title){document.title=title})}}else{throw"Unknown runtime environment. Where are we?"}function globalEval(x){eval.call(null,x)}if(!Module["load"]&&Module["read"]){Module["load"]=function load(f){globalEval(Module["read"](f))}}if(!Module["print"]){Module["print"]=(function(){})}if(!Module["printErr"]){Module["printErr"]=Module["print"]}if(!Module["arguments"]){Module["arguments"]=[]}if(!Module["thisProgram"]){Module["thisProgram"]="./this.program"}if(!Module["quit"]){Module["quit"]=(function(status,toThrow){throw toThrow})}Module.print=Module["print"];Module.printErr=Module["printErr"];Module["preRun"]=[];Module["postRun"]=[];for(var key in moduleOverrides){if(moduleOverrides.hasOwnProperty(key)){Module[key]=moduleOverrides[key]}}moduleOverrides=undefined;var Runtime={setTempRet0:(function(value){tempRet0=value;return value}),getTempRet0:(function(){return tempRet0}),stackSave:(function(){return STACKTOP}),stackRestore:(function(stackTop){STACKTOP=stackTop}),getNativeTypeSize:(function(type){switch(type){case"i1":case"i8":return 1;case"i16":return 2;case"i32":return 4;case"i64":return 8;case"float":return 4;case"double":return 8;default:{if(type[type.length-1]==="*"){return Runtime.QUANTUM_SIZE}else if(type[0]==="i"){var bits=parseInt(type.substr(1));assert(bits%8===0);return bits/8}else{return 0}}}}),getNativeFieldSize:(function(type){return Math.max(Runtime.getNativeTypeSize(type),Runtime.QUANTUM_SIZE)}),STACK_ALIGN:16,prepVararg:(function(ptr,type){if(type==="double"||type==="i64"){if(ptr&7){assert((ptr&7)===4);ptr+=4}}else{assert((ptr&3)===0)}return ptr}),getAlignSize:(function(type,size,vararg){if(!vararg&&(type=="i64"||type=="double"))return 8;if(!type)return Math.min(size,8);return Math.min(size||(type?Runtime.getNativeFieldSize(type):0),Runtime.QUANTUM_SIZE)}),dynCall:(function(sig,ptr,args){if(args&&args.length){return Module["dynCall_"+sig].apply(null,[ptr].concat(args))}else{return Module["dynCall_"+sig].call(null,ptr)}}),functionPointers:[],addFunction:(function(func){for(var i=0;i>2];var end=(ret+size+15|0)&-16;HEAP32[DYNAMICTOP_PTR>>2]=end;if(end>=TOTAL_MEMORY){var success=enlargeMemory();if(!success){HEAP32[DYNAMICTOP_PTR>>2]=ret;return 0}}return ret}),alignMemory:(function(size,quantum){var ret=size=Math.ceil(size/(quantum?quantum:16))*(quantum?quantum:16);return ret}),makeBigInt:(function(low,high,unsigned){var ret=unsigned?+(low>>>0)+ +(high>>>0)*+4294967296:+(low>>>0)+ +(high|0)*+4294967296;return ret}),GLOBAL_BASE:8,QUANTUM_SIZE:4,__dummy__:0};var ABORT=0;var EXITSTATUS=0;function assert(condition,text){if(!condition){abort("Assertion failed: "+text)}}function getCFunc(ident){var func=Module["_"+ident];if(!func){try{func=eval("_"+ident)}catch(e){}}assert(func,"Cannot call unknown function "+ident+" (perhaps LLVM optimizations or closure removed it?)");return func}var ccall;((function(){var JSfuncs={"stackSave":(function(){Runtime.stackSave()}),"stackRestore":(function(){Runtime.stackRestore()}),"arrayToC":(function(arr){var ret=Runtime.stackAlloc(arr.length);writeArrayToMemory(arr,ret);return ret}),"stringToC":(function(str){var ret=0;if(str!==null&&str!==undefined&&str!==0){var len=(str.length<<2)+1;ret=Runtime.stackAlloc(len);stringToUTF8(str,ret,len)}return ret})};var toC={"string":JSfuncs["stringToC"],"array":JSfuncs["arrayToC"]};ccall=function ccallFunc(ident,returnType,argTypes,args,opts){var func=getCFunc(ident);var cArgs=[];var stack=0;if(args){for(var i=0;i>0]=value;break;case"i8":HEAP8[ptr>>0]=value;break;case"i16":HEAP16[ptr>>1]=value;break;case"i32":HEAP32[ptr>>2]=value;break;case"i64":tempI64=[value>>>0,(tempDouble=value,+Math_abs(tempDouble)>=+1?tempDouble>+0?(Math_min(+Math_floor(tempDouble/+4294967296),+4294967295)|0)>>>0:~~+Math_ceil((tempDouble- +(~~tempDouble>>>0))/+4294967296)>>>0:0)],HEAP32[ptr>>2]=tempI64[0],HEAP32[ptr+4>>2]=tempI64[1];break;case"float":HEAPF32[ptr>>2]=value;break;case"double":HEAPF64[ptr>>3]=value;break;default:abort("invalid type for setValue: "+type)}}function getValue(ptr,type,noSafe){type=type||"i8";if(type.charAt(type.length-1)==="*")type="i32";switch(type){case"i1":return HEAP8[ptr>>0];case"i8":return HEAP8[ptr>>0];case"i16":return HEAP16[ptr>>1];case"i32":return HEAP32[ptr>>2];case"i64":return HEAP32[ptr>>2];case"float":return HEAPF32[ptr>>2];case"double":return HEAPF64[ptr>>3];default:abort("invalid type for setValue: "+type)}return null}var ALLOC_NORMAL=0;var ALLOC_STATIC=2;var ALLOC_NONE=4;function allocate(slab,types,allocator,ptr){var zeroinit,size;if(typeof slab==="number"){zeroinit=true;size=slab}else{zeroinit=false;size=slab.length}var singleType=typeof types==="string"?types:null;var ret;if(allocator==ALLOC_NONE){ret=ptr}else{ret=[typeof _malloc==="function"?_malloc:Runtime.staticAlloc,Runtime.stackAlloc,Runtime.staticAlloc,Runtime.dynamicAlloc][allocator===undefined?ALLOC_STATIC:allocator](Math.max(size,singleType?1:types.length))}if(zeroinit){var ptr=ret,stop;assert((ret&3)==0);stop=ret+(size&~3);for(;ptr>2]=0}stop=ret+size;while(ptr>0]=0}return ret}if(singleType==="i8"){if(slab.subarray||slab.slice){HEAPU8.set(slab,ret)}else{HEAPU8.set(new Uint8Array(slab),ret)}return ret}var i=0,type,typeSize,previousType;while(i>0];hasUtf|=t;if(t==0&&!length)break;i++;if(length&&i==length)break}if(!length)length=i;var ret="";if(hasUtf<128){var MAX_CHUNK=1024;var curr;while(length>0){curr=String.fromCharCode.apply(String,HEAPU8.subarray(ptr,ptr+Math.min(length,MAX_CHUNK)));ret=ret?ret+curr:curr;ptr+=MAX_CHUNK;length-=MAX_CHUNK}return ret}return Module["UTF8ToString"](ptr)}var UTF8Decoder=typeof TextDecoder!=="undefined"?new TextDecoder("utf8"):undefined;function UTF8ArrayToString(u8Array,idx){var endPtr=idx;while(u8Array[endPtr])++endPtr;if(endPtr-idx>16&&u8Array.subarray&&UTF8Decoder){return UTF8Decoder.decode(u8Array.subarray(idx,endPtr))}else{var u0,u1,u2,u3,u4,u5;var str="";while(1){u0=u8Array[idx++];if(!u0)return str;if(!(u0&128)){str+=String.fromCharCode(u0);continue}u1=u8Array[idx++]&63;if((u0&224)==192){str+=String.fromCharCode((u0&31)<<6|u1);continue}u2=u8Array[idx++]&63;if((u0&240)==224){u0=(u0&15)<<12|u1<<6|u2}else{u3=u8Array[idx++]&63;if((u0&248)==240){u0=(u0&7)<<18|u1<<12|u2<<6|u3}else{u4=u8Array[idx++]&63;if((u0&252)==248){u0=(u0&3)<<24|u1<<18|u2<<12|u3<<6|u4}else{u5=u8Array[idx++]&63;u0=(u0&1)<<30|u1<<24|u2<<18|u3<<12|u4<<6|u5}}}if(u0<65536){str+=String.fromCharCode(u0)}else{var ch=u0-65536;str+=String.fromCharCode(55296|ch>>10,56320|ch&1023)}}}}function stringToUTF8Array(str,outU8Array,outIdx,maxBytesToWrite){if(!(maxBytesToWrite>0))return 0;var startIdx=outIdx;var endIdx=outIdx+maxBytesToWrite-1;for(var i=0;i=55296&&u<=57343)u=65536+((u&1023)<<10)|str.charCodeAt(++i)&1023;if(u<=127){if(outIdx>=endIdx)break;outU8Array[outIdx++]=u}else if(u<=2047){if(outIdx+1>=endIdx)break;outU8Array[outIdx++]=192|u>>6;outU8Array[outIdx++]=128|u&63}else if(u<=65535){if(outIdx+2>=endIdx)break;outU8Array[outIdx++]=224|u>>12;outU8Array[outIdx++]=128|u>>6&63;outU8Array[outIdx++]=128|u&63}else if(u<=2097151){if(outIdx+3>=endIdx)break;outU8Array[outIdx++]=240|u>>18;outU8Array[outIdx++]=128|u>>12&63;outU8Array[outIdx++]=128|u>>6&63;outU8Array[outIdx++]=128|u&63}else if(u<=67108863){if(outIdx+4>=endIdx)break;outU8Array[outIdx++]=248|u>>24;outU8Array[outIdx++]=128|u>>18&63;outU8Array[outIdx++]=128|u>>12&63;outU8Array[outIdx++]=128|u>>6&63;outU8Array[outIdx++]=128|u&63}else{if(outIdx+5>=endIdx)break;outU8Array[outIdx++]=252|u>>30;outU8Array[outIdx++]=128|u>>24&63;outU8Array[outIdx++]=128|u>>18&63;outU8Array[outIdx++]=128|u>>12&63;outU8Array[outIdx++]=128|u>>6&63;outU8Array[outIdx++]=128|u&63}}outU8Array[outIdx]=0;return outIdx-startIdx}function stringToUTF8(str,outPtr,maxBytesToWrite){return stringToUTF8Array(str,HEAPU8,outPtr,maxBytesToWrite)}function lengthBytesUTF8(str){var len=0;for(var i=0;i=55296&&u<=57343)u=65536+((u&1023)<<10)|str.charCodeAt(++i)&1023;if(u<=127){++len}else if(u<=2047){len+=2}else if(u<=65535){len+=3}else if(u<=2097151){len+=4}else if(u<=67108863){len+=5}else{len+=6}}return len}var UTF16Decoder=typeof TextDecoder!=="undefined"?new TextDecoder("utf-16le"):undefined;function demangle(func){var __cxa_demangle_func=Module["___cxa_demangle"]||Module["__cxa_demangle"];if(__cxa_demangle_func){try{var s=func.substr(1);var len=lengthBytesUTF8(s)+1;var buf=_malloc(len);stringToUTF8(s,buf,len);var status=_malloc(4);var ret=__cxa_demangle_func(buf,0,0,status);if(getValue(status,"i32")===0&&ret){return Pointer_stringify(ret)}}catch(e){}finally{if(buf)_free(buf);if(status)_free(status);if(ret)_free(ret)}return func}Runtime.warnOnce("warning: build with -s DEMANGLE_SUPPORT=1 to link in libcxxabi demangling");return func}function demangleAll(text){var regex=/__Z[\w\d_]+/g;return text.replace(regex,(function(x){var y=demangle(x);return x===y?x:x+" ["+y+"]"}))}function jsStackTrace(){var err=new Error;if(!err.stack){try{throw new Error(0)}catch(e){err=e}if(!err.stack){return"(no stack trace available)"}}return err.stack.toString()}function stackTrace(){var js=jsStackTrace();if(Module["extraStackTrace"])js+="\n"+Module["extraStackTrace"]();return demangleAll(js)}var WASM_PAGE_SIZE=65536;var ASMJS_PAGE_SIZE=16777216;var MIN_TOTAL_MEMORY=16777216;function alignUp(x,multiple){if(x%multiple>0){x+=multiple-x%multiple}return x}var HEAP,buffer,HEAP8,HEAPU8,HEAP16,HEAPU16,HEAP32,HEAPU32,HEAPF32,HEAPF64;function updateGlobalBuffer(buf){Module["buffer"]=buffer=buf}function updateGlobalBufferViews(){Module["HEAP8"]=HEAP8=new Int8Array(buffer);Module["HEAP16"]=HEAP16=new Int16Array(buffer);Module["HEAP32"]=HEAP32=new Int32Array(buffer);Module["HEAPU8"]=HEAPU8=new Uint8Array(buffer);Module["HEAPU16"]=HEAPU16=new Uint16Array(buffer);Module["HEAPU32"]=HEAPU32=new Uint32Array(buffer);Module["HEAPF32"]=HEAPF32=new Float32Array(buffer);Module["HEAPF64"]=HEAPF64=new Float64Array(buffer)}var STATIC_BASE,STATICTOP,staticSealed;var STACK_BASE,STACKTOP,STACK_MAX;var DYNAMIC_BASE,DYNAMICTOP_PTR;STATIC_BASE=STATICTOP=STACK_BASE=STACKTOP=STACK_MAX=DYNAMIC_BASE=DYNAMICTOP_PTR=0;staticSealed=false;function abortOnCannotGrowMemory(){abort("Cannot enlarge memory arrays. Either (1) compile with -s TOTAL_MEMORY=X with X higher than the current value "+TOTAL_MEMORY+", (2) compile with -s ALLOW_MEMORY_GROWTH=1 which allows increasing the size at runtime but prevents some optimizations, (3) set Module.TOTAL_MEMORY to a higher value before the program runs, or (4) if you want malloc to return NULL (0) instead of this abort, compile with -s ABORTING_MALLOC=0 ")}if(!Module["reallocBuffer"])Module["reallocBuffer"]=(function(size){var ret;try{if(ArrayBuffer.transfer){ret=ArrayBuffer.transfer(buffer,size)}else{var oldHEAP8=HEAP8;ret=new ArrayBuffer(size);var temp=new Int8Array(ret);temp.set(oldHEAP8)}}catch(e){return false}var success=_emscripten_replace_memory(ret);if(!success)return false;return ret});function enlargeMemory(){var PAGE_MULTIPLE=Module["usingWasm"]?WASM_PAGE_SIZE:ASMJS_PAGE_SIZE;var LIMIT=2147483648-PAGE_MULTIPLE;if(HEAP32[DYNAMICTOP_PTR>>2]>LIMIT){return false}var OLD_TOTAL_MEMORY=TOTAL_MEMORY;TOTAL_MEMORY=Math.max(TOTAL_MEMORY,MIN_TOTAL_MEMORY);while(TOTAL_MEMORY>2]){if(TOTAL_MEMORY<=536870912){TOTAL_MEMORY=alignUp(2*TOTAL_MEMORY,PAGE_MULTIPLE)}else{TOTAL_MEMORY=Math.min(alignUp((3*TOTAL_MEMORY+2147483648)/4,PAGE_MULTIPLE),LIMIT)}}var replacement=Module["reallocBuffer"](TOTAL_MEMORY);if(!replacement||replacement.byteLength!=TOTAL_MEMORY){TOTAL_MEMORY=OLD_TOTAL_MEMORY;return false}updateGlobalBuffer(replacement);updateGlobalBufferViews();return true}var byteLength;try{byteLength=Function.prototype.call.bind(Object.getOwnPropertyDescriptor(ArrayBuffer.prototype,"byteLength").get);byteLength(new ArrayBuffer(4))}catch(e){byteLength=(function(buffer){return buffer.byteLength})}var TOTAL_STACK=Module["TOTAL_STACK"]||5242880;var TOTAL_MEMORY=Module["TOTAL_MEMORY"]||16777216;if(TOTAL_MEMORY0){var callback=callbacks.shift();if(typeof callback=="function"){callback();continue}var func=callback.func;if(typeof func==="number"){if(callback.arg===undefined){Module["dynCall_v"](func)}else{Module["dynCall_vi"](func,callback.arg)}}else{func(callback.arg===undefined?null:callback.arg)}}}var __ATPRERUN__=[];var __ATINIT__=[];var __ATMAIN__=[];var __ATEXIT__=[];var __ATPOSTRUN__=[];var runtimeInitialized=false;var runtimeExited=false;function preRun(){if(Module["preRun"]){if(typeof Module["preRun"]=="function")Module["preRun"]=[Module["preRun"]];while(Module["preRun"].length){addOnPreRun(Module["preRun"].shift())}}callRuntimeCallbacks(__ATPRERUN__)}function ensureInitRuntime(){if(runtimeInitialized)return;runtimeInitialized=true;callRuntimeCallbacks(__ATINIT__)}function preMain(){callRuntimeCallbacks(__ATMAIN__)}function exitRuntime(){callRuntimeCallbacks(__ATEXIT__);runtimeExited=true}function postRun(){if(Module["postRun"]){if(typeof Module["postRun"]=="function")Module["postRun"]=[Module["postRun"]];while(Module["postRun"].length){addOnPostRun(Module["postRun"].shift())}}callRuntimeCallbacks(__ATPOSTRUN__)}function addOnPreRun(cb){__ATPRERUN__.unshift(cb)}function addOnPreMain(cb){__ATMAIN__.unshift(cb)}function addOnPostRun(cb){__ATPOSTRUN__.unshift(cb)}function intArrayFromString(stringy,dontAddNull,length){var len=length>0?length:lengthBytesUTF8(stringy)+1;var u8array=new Array(len);var numBytesWritten=stringToUTF8Array(stringy,u8array,0,u8array.length);if(dontAddNull)u8array.length=numBytesWritten;return u8array}function writeArrayToMemory(array,buffer){HEAP8.set(array,buffer)}function writeAsciiToMemory(str,buffer,dontAddNull){for(var i=0;i>0]=str.charCodeAt(i)}if(!dontAddNull)HEAP8[buffer>>0]=0}if(!Math["imul"]||Math["imul"](4294967295,5)!==-5)Math["imul"]=function imul(a,b){var ah=a>>>16;var al=a&65535;var bh=b>>>16;var bl=b&65535;return al*bl+(ah*bl+al*bh<<16)|0};Math.imul=Math["imul"];if(!Math["fround"]){var froundBuffer=new Float32Array(1);Math["fround"]=(function(x){froundBuffer[0]=x;return froundBuffer[0]})}Math.fround=Math["fround"];if(!Math["clz32"])Math["clz32"]=(function(x){x=x>>>0;for(var i=0;i<32;i++){if(x&1<<31-i)return i}return 32});Math.clz32=Math["clz32"];if(!Math["trunc"])Math["trunc"]=(function(x){return x<0?Math.ceil(x):Math.floor(x)});Math.trunc=Math["trunc"];var Math_abs=Math.abs;var Math_cos=Math.cos;var Math_sin=Math.sin;var Math_tan=Math.tan;var Math_acos=Math.acos;var Math_asin=Math.asin;var Math_atan=Math.atan;var Math_atan2=Math.atan2;var Math_exp=Math.exp;var Math_log=Math.log;var Math_sqrt=Math.sqrt;var Math_ceil=Math.ceil;var Math_floor=Math.floor;var Math_pow=Math.pow;var Math_imul=Math.imul;var Math_fround=Math.fround;var Math_round=Math.round;var Math_min=Math.min;var Math_clz32=Math.clz32;var Math_trunc=Math.trunc;var runDependencies=0;var runDependencyWatcher=null;var dependenciesFulfilled=null;Module["preloadedImages"]={};Module["preloadedAudios"]={};var ASM_CONSTS=[];STATIC_BASE=Runtime.GLOBAL_BASE;STATICTOP=STATIC_BASE+24288;__ATINIT__.push();allocate([36,23,0,0,212,23,0,0,24,0,0,0,0,0,0,0,252,22,0,0,251,23,0,0,36,23,0,0,24,24,0,0,24,0,0,0,0,0,0,0,252,22,0,0,127,24,0,0,36,23,0,0,148,24,0,0,48,0,0,0,0,0,0,0,36,23,0,0,165,24,0,0,88,0,0,0,0,0,0,0,252,22,0,0,193,24,0,0,252,22,0,0,230,24,0,0,36,23,0,0,25,26,0,0,96,0,0,0,0,0,0,0,252,22,0,0,47,26,0,0,36,23,0,0,157,36,0,0,120,0,0,0,0,0,0,0,36,23,0,0,84,26,0,0,160,0,0,0,0,0,0,0,36,23,0,0,173,26,0,0,176,0,0,0,0,0,0,0,36,23,0,0,1,27,0,0,192,0,0,0,0,0,0,0,36,23,0,0,53,27,0,0,208,0,0,0,0,0,0,0,252,22,0,0,96,27,0,0,36,23,0,0,250,27,0,0,232,0,0,0,0,0,0,0,36,23,0,0,146,28,0,0,160,0,0,0,0,0,0,0,36,23,0,0,27,29,0,0,232,0,0,0,0,0,0,0,36,23,0,0,181,29,0,0,232,0,0,0,0,0,0,0,36,23,0,0,71,30,0,0,232,0,0,0,0,0,0,0,36,23,0,0,237,30,0,0,232,0,0,0,0,0,0,0,36,23,0,0,136,31,0,0,232,0,0,0,0,0,0,0,36,23,0,0,30,32,0,0,88,1,0,0,0,0,0,0,36,23,0,0,195,32,0,0,160,0,0,0,0,0,0,0,36,23,0,0,89,33,0,0,88,1,0,0,0,0,0,0,36,23,0,0,0,34,0,0,88,1,0,0,0,0,0,0,36,23,0,0,159,34,0,0,88,1,0,0,0,0,0,0,36,23,0,0,82,35,0,0,88,1,0,0,0,0,0,0,36,23,0,0,250,35,0,0,88,1,0,0,0,0,0,0,36,23,0,0,201,36,0,0,128,0,0,0,0,0,0,0,36,23,0,0,77,66,0,0,128,0,0,0,0,0,0,0,36,23,0,0,212,40,0,0,232,1,0,0,0,0,0,0,36,23,0,0,69,41,0,0,176,0,0,0,0,0,0,0,36,23,0,0,16,44,0,0,8,2,0,0,0,0,0,0,36,23,0,0,192,44,0,0,232,1,0,0,0,0,0,0,36,23,0,0,204,45,0,0,8,2,0,0,0,0,0,0,36,23,0,0,224,46,0,0,8,2,0,0,0,0,0,0,36,23,0,0,138,47,0,0,8,2,0,0,0,0,0,0,36,23,0,0,72,48,0,0,8,2,0,0,0,0,0,0,36,23,0,0,251,48,0,0,8,2,0,0,0,0,0,0,36,23,0,0,169,49,0,0,120,2,0,0,0,0,0,0,36,23,0,0,102,50,0,0,232,1,0,0,0,0,0,0,36,23,0,0,20,51,0,0,120,2,0,0,0,0,0,0,36,23,0,0,211,51,0,0,120,2,0,0,0,0,0,0,36,23,0,0,138,52,0,0,120,2,0,0,0,0,0,0,36,23,0,0,85,53,0,0,120,2,0,0,0,0,0,0,36,23,0,0,21,54,0,0,120,2,0,0,0,0,0,0,36,23,0,0,208,54,0,0,232,2,0,0,0,0,0,0,36,23,0,0,28,55,0,0,248,2,0,0,0,0,0,0,252,22,0,0,100,55,0,0,36,23,0,0,14,56,0,0,16,3,0,0,0,0,0,0,36,23,0,0,114,56,0,0,176,0,0,0,0,0,0,0,36,23,0,0,209,56,0,0,48,3,0,0,0,0,0,0,36,23,0,0,116,57,0,0,16,3,0,0,0,0,0,0,36,23,0,0,8,58,0,0,48,3,0,0,0,0,0,0,36,23,0,0,173,58,0,0,48,3,0,0,0,0,0,0,36,23,0,0,74,59,0,0,48,3,0,0,0,0,0,0,36,23,0,0,251,59,0,0,48,3,0,0,0,0,0,0,36,23,0,0,161,60,0,0,48,3,0,0,0,0,0,0,36,23,0,0,66,61,0,0,160,3,0,0,0,0,0,0,36,23,0,0,242,61,0,0,16,3,0,0,0,0,0,0,36,23,0,0,147,62,0,0,160,3,0,0,0,0,0,0,36,23,0,0,69,63,0,0,160,3,0,0,0,0,0,0,36,23,0,0,239,63,0,0,160,3,0,0,0,0,0,0,36,23,0,0,173,64,0,0,160,3,0,0,0,0,0,0,36,23,0,0,96,65,0,0,160,3,0,0,0,0,0,0,36,23,0,0,14,66,0,0,248,2,0,0,0,0,0,0,36,23,0,0,120,66,0,0,72,0,0,0,0,0,0,0,36,23,0,0,220,66,0,0,96,0,0,0,0,0,0,0,36,23,0,0,168,66,0,0,64,4,0,0,0,0,0,0,252,22,0,0,194,66,0,0,36,23,0,0,2,67,0,0,96,0,0,0,0,0,0,0,36,23,0,0,217,68,0,0,72,0,0,0,0,0,0,0,36,23,0,0,65,70,0,0,104,0,0,0,0,0,0,0,36,23,0,0,97,70,0,0,104,0,0,0,0,0,0,0,36,23,0,0,238,73,0,0,216,4,0,0,0,0,0,0,252,22,0,0,130,70,0,0,36,23,0,0,131,71,0,0,64,4,0,0,0,0,0,0,252,22,0,0,77,72,0,0,36,23,0,0,136,72,0,0,64,4,0,0,0,0,0,0,36,23,0,0,49,73,0,0,64,4,0,0,0,0,0,0,252,22,0,0,58,74,0,0,36,23,0,0,104,74,0,0,216,4,0,0,0,0,0,0,36,23,0,0,190,74,0,0,216,4,0,0,0,0,0,0,252,22,0,0,223,86,0,0,36,23,0,0,63,87,0,0,24,5,0,0,0,0,0,0,36,23,0,0,236,86,0,0,40,5,0,0,0,0,0,0,252,22,0,0,13,87,0,0,36,23,0,0,26,87,0,0,8,5,0,0,0,0,0,0,36,23,0,0,48,88,0,0,0,5,0,0,0,0,0,0,36,23,0,0,97,88,0,0,24,5,0,0,0,0,0,0,36,23,0,0,61,88,0,0,80,5,0,0,0,0,0,0,0,0,0,192,0,0,0,192,0,0,0,192,0,0,0,192,0,0,0,192,0,0,0,192,0,0,0,192,0,0,0,0,8,0,0,0,1,0,0,0,2,0,0,0,1,0,0,0,1,0,0,0,1,0,0,0,0,0,0,0,32,0,0,0,3,0,0,0,4,0,0,0,2,0,0,0,2,0,0,0,2,0,0,0,0,0,0,0,48,0,0,0,5,0,0,0,6,0,0,0,1,0,0,0,3,0,0,0,3,0,0,0,7,0,0,0,2,0,0,0,0,0,0,192,0,0,0,0,56,0,0,0,8,0,0,0,9,0,0,0,3,0,0,0,4,0,0,0,3,0,0,0,7,0,0,0,4,0,0,0,0,0,0,192,0,0,0,0,72,0,0,0,10,0,0,0,11,0,0,0,1,0,0,0,3,0,0,0,4,0,0,0,5,0,0,0,4,0,0,0,5,0,0,0,6,0,0,0,1,0,0,0,7,0,0,0,6,0,0,0,0,0,0,0,96,0,0,0,12,0,0,0,13,0,0,0,7,0,0,0,8,0,0,0,1,0,0,0,9,0,0,0,10,0,0,0,11,0,0,0,12,0,0,0,0,0,0,0,104,0,0,0,12,0,0,0,14,0,0,0,13,0,0,0,8,0,0,0,1,0,0,0,14,0,0,0,10,0,0,0,11,0,0,0,12,0,0,0,15,0,0,0,8,0,0,0,9,0,0,0,1,0,0,0,0,0,0,0,120,0,0,0,15,0,0,0,16,0,0,0,2,0,0,0,10,0,0,0,3,0,0,0,4,0,0,0,11,0,0,0,12,0,0,0,5,0,0,0,0,0,0,192,0,0,0,0,128,0,0,0,17,0,0,0,18,0,0,0,6,0,0,0,10,0,0,0,3,0,0,0,4,0,0,0,13,0,0,0,12,0,0,0,7,0,0,0,8,0,0,0,1,0,0,0,16,0,0,0,14,0,0,0,0,0,0,0,160,0,0,0,19,0,0,0,20,0,0,0,1,0,0,0,17,0,0,0,1,0,0,0,18,0,0,0,15,0,0,0,16,0,0,0,19,0,0,0,20,0,0,0,17,0,0,0,1,0,0,0,0,0,0,0,144,0,0,0,19,0,0,0,21,0,0,0,21,0,0,0,17,0,0,0,22,0,0,0,18,0,0,0,15,0,0,0,16,0,0,0,19,0,0,0,20,0,0,0,17,0,0,0,1,0,0,0,0,0,0,0,56,1,0,0,19,0,0,0,22,0,0,0,23,0,0,0,17,0,0,0,24,0,0,0,18,0,0,0,15,0,0,0,16,0,0,0,19,0,0,0,20,0,0,0,17,0,0,0,2,0,0,0,0,0,0,0,40,1,0,0,19,0,0,0,23,0,0,0,25,0,0,0,17,0,0,0,26,0,0,0,18,0,0,0,15,0,0,0,16,0,0,0,19,0,0,0,20,0,0,0,17,0,0,0,3,0,0,0,0,0,0,0,24,1,0,0,24,0,0,0,25,0,0,0,27,0,0,0,17,0,0,0,28,0,0,0,18,0,0,0,15,0,0,0,16,0,0,0,19,0,0,0,20,0,0,0,18,0,0,0,4,0,0,0,0,0,0,0,8,1,0,0,26,0,0,0,27,0,0,0,29,0,0,0,17,0,0,0,30,0,0,0,31,0,0,0,19,0,0,0,20,0,0,0,19,0,0,0,20,0,0,0,21,0,0,0,5,0,0,0,0,0,0,0,248,0,0,0,28,0,0,0,29,0,0,0,32,0,0,0,17,0,0,0,33,0,0,0,34,0,0,0,22,0,0,0,23,0,0,0,19,0,0,0,20,0,0,0,24,0,0,0,6,0,0,0,0,0,0,0,216,0,0,0,30,0,0,0,31,0,0,0,35,0,0,0,17,0,0,0,36,0,0,0,37,0,0,0,25,0,0,0,26,0,0,0,19,0,0,0,20,0,0,0,27,0,0,0,7,0,0,0,0,0,0,0,168,1,0,0,19,0,0,0,32,0,0,0,38,0,0,0,17,0,0,0,39,0,0,0,18,0,0,0,15,0,0,0,16,0,0,0,19,0,0,0,20,0,0,0,17,0,0,0,8,0,0,0,0,0,0,0,152,1,0,0,19,0,0,0,33,0,0,0,40,0,0,0,17,0,0,0,41,0,0,0,18,0,0,0,15,0,0,0,16,0,0,0,19,0,0,0,20,0,0,0,17,0,0,0,9,0,0,0,0,0,0,0,136,1,0,0,34,0,0,0,35,0,0,0,42,0,0,0,17,0,0,0,43,0,0,0,18,0,0,0,15,0,0,0,16,0,0,0,19,0,0,0,20,0,0,0,28,0,0,0,10,0,0,0,0,0,0,0,120,1,0,0,36,0,0,0,37,0,0,0,44,0,0,0,17,0,0,0,45,0,0,0,46,0,0,0,29,0,0,0,30,0,0,0,19,0,0,0,20,0,0,0,31,0,0,0,11,0,0,0,0,0,0,0,104,1,0,0,38,0,0,0,39,0,0,0,47,0,0,0,17,0,0,0,48,0,0,0,49,0,0,0,32,0,0,0,33,0,0,0,19,0,0,0,20,0,0,0,34,0,0,0,12,0,0,0,0,0,0,0,72,1,0,0,40,0,0,0,41,0,0,0,50,0,0,0,17,0,0,0,51,0,0,0,52,0,0,0,35,0,0,0,36,0,0,0,19,0,0,0,20,0,0,0,37,0,0,0,13,0,0,0,0,0,0,0,184,1,0,0,42,0,0,0,43,0,0,0,9,0,0,0,10,0,0,0,3,0,0,0,10,0,0,0,13,0,0,0,12,0,0,0,7,0,0,0,11,0,0,0,1,0,0,0,16,0,0,0,38,0,0,0,53,0,0,0,39,0,0,0,0,0,0,0,200,1,0,0,17,0,0,0,44,0,0,0,12,0,0,0,10,0,0,0,3,0,0,0,13,0,0,0,13,0,0,0,12,0,0,0,7,0,0,0,14,0,0,0,2,0,0,0,54,0,0,0,40,0,0,0,0,0,0,0,0,4,0,0,45,0,0,0,46,0,0,0,55,0,0,0,0,0,0,0,216,2,0,0,45,0,0,0,47,0,0,0,56,0,0,0,0,0,0,0,216,1,0,0,48,0,0,0,49,0,0,0,57,0,0,0,58,0,0,0,59,0,0,0,60,0,0,0,41,0,0,0,42,0,0,0,61,0,0,0,62,0,0,0,43,0,0,0,14,0,0,0,0,0,0,0,88,2,0,0,48,0,0,0,50,0,0,0,63,0,0,0,58,0,0,0,64,0,0,0,60,0,0,0,41,0,0,0,42,0,0,0,61,0,0,0,62,0,0,0,43,0,0,0,15,0,0,0,0,0,0,0,72,2,0,0,48,0,0,0,51,0,0,0,65,0,0,0,58,0,0,0,66,0,0,0,60,0,0,0,41,0,0,0,42,0,0,0,61,0,0,0,62,0,0,0,43,0,0,0,16,0,0,0,0,0,0,0,56,2,0,0,52,0,0,0,53,0,0,0,67,0,0,0,58,0,0,0,68,0,0,0,60,0,0,0,41,0,0,0,42,0,0,0,61,0,0,0,62,0,0,0,44,0,0,0,17,0,0,0,0,0,0,0,40,2,0,0,54,0,0,0,55,0,0,0,69,0,0,0,58,0,0,0,70,0,0,0,71,0,0,0,45,0,0,0,46,0,0,0,61,0,0,0,62,0,0,0,47,0,0,0,18,0,0,0,0,0,0,0,24,2,0,0,56,0,0,0,57,0,0,0,72,0,0,0,58,0,0,0,73,0,0,0,74,0,0,0,48,0,0,0,49,0,0,0,61,0,0,0,62,0,0,0,50,0,0,0,19,0,0,0,0,0,0,0,248,1,0,0,58,0,0,0,59,0,0,0,75,0,0,0,58,0,0,0,76,0,0,0,77,0,0,0,51,0,0,0,52,0,0,0,61,0,0,0,62,0,0,0,53,0,0,0,20,0,0,0,0,0,0,0,200,2,0,0,48,0,0,0,60,0,0,0,78,0,0,0,58,0,0,0,79,0,0,0,60,0,0,0,41,0,0,0,42,0,0,0,61,0,0,0,62,0,0,0,43,0,0,0,21,0,0,0,0,0,0,0,184,2,0,0,48,0,0,0,61,0,0,0,80,0,0,0,58,0,0,0,81,0,0,0,60,0,0,0,41,0,0,0,42,0,0,0,61,0,0,0,62,0,0,0,43,0,0,0,22,0,0,0,0,0,0,0,168,2,0,0,62,0,0,0,63,0,0,0,82,0,0,0,58,0,0,0,83,0,0,0,60,0,0,0,41,0,0,0,42,0,0,0,61,0,0,0,62,0,0,0,54,0,0,0,23,0,0,0,0,0,0,0,152,2,0,0,64,0,0,0,65,0,0,0,84,0,0,0,58,0,0,0,85,0,0,0,86,0,0,0,55,0,0,0,56,0,0,0,61,0,0,0,62,0,0,0,57,0,0,0,24,0,0,0,0,0,0,0,136,2,0,0,66,0,0,0,67,0,0,0,87,0,0,0,58,0,0,0,88,0,0,0,89,0,0,0,58,0,0,0,59,0,0,0,61,0,0,0,62,0,0,0,60,0,0,0,25,0,0,0,0,0,0,0,104,2,0,0,68,0,0,0,69,0,0,0,90,0,0,0,58,0,0,0,91,0,0,0,92,0,0,0,61,0,0,0,62,0,0,0,61,0,0,0,62,0,0,0,63,0,0,0,26,0,0,0,0,0,0,0,0,3,0,0,70,0,0,0,71,0,0,0,93,0,0,0,94,0,0,0,95,0,0,0,96,0,0,0,64,0,0,0,65,0,0,0,97,0,0,0,98,0,0,0,66,0,0,0,27,0,0,0,0,0,0,0,128,3,0,0,70,0,0,0,72,0,0,0,99,0,0,0,94,0,0,0,100,0,0,0,96,0,0,0,64,0,0,0,65,0,0,0,97,0,0,0,98,0,0,0,66,0,0,0,28,0,0,0,0,0,0,0,112,3,0,0,70,0,0,0,73,0,0,0,101,0,0,0,94,0,0,0,102,0,0,0,96,0,0,0,64,0,0,0,65,0,0,0,97,0,0,0,98,0,0,0,66,0,0,0,29,0,0,0,0,0,0,0,96,3,0,0,74,0,0,0,75,0,0,0,103,0,0,0,94,0,0,0,104,0,0,0,96,0,0,0,64,0,0,0,65,0,0,0,97,0,0,0,98,0,0,0,67,0,0,0,30,0,0,0,0,0,0,0,80,3,0,0,76,0,0,0,77,0,0,0,105,0,0,0,94,0,0,0,106,0,0,0,107,0,0,0,68,0,0,0,69,0,0,0,97,0,0,0,98,0,0,0,70,0,0,0,31,0,0,0,0,0,0,0,64,3,0,0,78,0,0,0,79,0,0,0,108,0,0,0,94,0,0,0,109,0,0,0,110,0,0,0,71,0,0,0,72,0,0,0,97,0,0,0,98,0,0,0,73,0,0,0,32,0,0,0,0,0,0,0,32,3,0,0,80,0,0,0,81,0,0,0,111,0,0,0,94,0,0,0,112,0,0,0,113,0,0,0,74,0,0,0,75,0,0,0,97,0,0,0,98,0,0,0,76,0,0,0,33,0,0,0,0,0,0,0,240,3,0,0,70,0,0,0,82,0,0,0,114,0,0,0,94,0,0,0,115,0,0,0,96,0,0,0,64,0,0,0,65,0,0,0,97,0,0,0,98,0,0,0,66,0,0,0,34,0,0,0,0,0,0,0,224,3,0,0,70,0,0,0,83,0,0,0,116,0,0,0,94,0,0,0,117,0,0,0,96,0,0,0,64,0,0,0,65,0,0,0,97,0,0,0,98,0,0,0,66,0,0,0,35,0,0,0,0,0,0,0,208,3,0,0,84,0,0,0,85,0,0,0,118,0,0,0,94,0,0,0,119,0,0,0,96,0,0,0,64,0,0,0,65,0,0,0,97,0,0,0,98,0,0,0,77,0,0,0,36,0,0,0,0,0,0,0,192,3,0,0,86,0,0,0,87,0,0,0,120,0,0,0,94,0,0,0,121,0,0,0,122,0,0,0,78,0,0,0,79,0,0,0,97,0,0,0,98,0,0,0,80,0,0,0,37,0,0,0,0,0,0,0,176,3,0,0,88,0,0,0,89,0,0,0,123,0,0,0,94,0,0,0,124,0,0,0,125,0,0,0,81,0,0,0,82,0,0,0,97,0,0,0,98,0,0,0,83,0,0,0,38,0,0,0,0,0,0,0,144,3,0,0,90,0,0,0,91,0,0,0,126,0,0,0,94,0,0,0,127,0,0,0,128,0,0,0,84,0,0,0,85,0,0,0,97,0,0,0,98,0,0,0,86,0,0,0,39,0,0,0,0,0,0,0,16,4,0,0,92,0,0,0,93,0,0,0,1,0,0,0,87,0,0,0,88,0,0,0,5,0,0,0,4,0,0,0,5,0,0,0,89,0,0,0,90,0,0,0,91,0,0,0,129,0,0,0,5,0,0,0,0,0,0,0,32,4,0,0,12,0,0,0,94,0,0,0,7,0,0,0,8,0,0,0,92,0,0,0,130,0,0,0,10,0,0,0,11,0,0,0,12,0,0,0,0,0,0,0,48,4,0,0,95,0,0,0,96,0,0,0,93,0,0,0,131,0,0,0,0,0,0,0,72,4,0,0,12,0,0,0,97,0,0,0,7,0,0,0,8,0,0,0,94,0,0,0,132,0,0,0,10,0,0,0,11,0,0,0,12,0,0,0,0,0,0,0,88,4,0,0,10,0,0,0,98,0,0,0,1,0,0,0,3,0,0,0,4,0,0,0,5,0,0,0,4,0,0,0,5,0,0,0,6,0,0,0,95,0,0,0,96,0,0,0,6,0,0,0,0,0,0,0,104,4,0,0,12,0,0,0,99,0,0,0,13,0,0,0,8,0,0,0,97,0,0,0,14,0,0,0,10,0,0,0,11,0,0,0,12,0,0,0,15,0,0,0,8,0,0,0,9,0,0,0,133,0,0,0,0,0,0,0,120,4,0,0,100,0,0,0,101,0,0,0,13,0,0,0,134,0,0,0,98,0,0,0,14,0,0,0,10,0,0,0,11,0,0,0,135,0,0,0,136,0,0,0,99,0,0,0,100,0,0,0,137,0,0,0,0,0,0,0,136,4,0,0,102,0,0,0,103,0,0,0,101,0,0,0,102,0,0,0,103,0,0,0,104,0,0,0,138,0,0,0,139,0,0,0,140,0,0,0,141,0,0,0,0,0,0,0,160,4,0,0,104,0,0,0,105,0,0,0,105,0,0,0,142,0,0,0,0,0,0,0,152,4,0,0,106,0,0,0,107,0,0,0,108,0,0,0,0,0,0,192,0,0,0,0,184,4,0,0,109,0,0,0,110,0,0,0,106,0,0,0,143,0,0,0,0,0,0,0,176,4,0,0,111,0,0,0,112,0,0,0,113,0,0,0,0,0,0,0,200,4,0,0,114,0,0,0,115,0,0,0,107,0,0,0,144,0,0,0,0,0,0,0,224,4,0,0,116,0,0,0,117,0,0,0,108,0,0,0,109,0,0,0,110,0,0,0,111,0,0,0,145,0,0,0,146,0,0,0,147,0,0,0,148,0,0,0,0,0,0,0,240,4,0,0,118,0,0,0,119,0,0,0,112,0,0,0,113,0,0,0,114,0,0,0,115,0,0,0,149,0,0,0,150,0,0,0,151,0,0,0,152,0,0,0,0,0,0,0,1,0,0,0,3,0,0,0,5,0,0,0,7,0,0,0,0,19,0,0,5,0,0,0,0,0,0,0,0,0,0,0,153,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,15,0,0,0,16,0,0,0,204,90,0,0,0,0,0,0,0,0,0,0,0,0,0,0,2,0,0,0,0,0,0,0,0,0,0,0,0,0,0,255,255,255,255,255,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,160,90,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,116,20,0,0,5,0,0,0,0,0,0,0,0,0,0,0,153,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,17,0,0,0,16,0,0,0,212,90,0,0,0,4,0,0,0,0,0,0,0,0,0,0,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,10,255,255,255,255,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,18,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,255,255,255,255,255,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,2,0,0,0,3,0,0,0,5,0,0,0,7,0,0,0,11,0,0,0,13,0,0,0,17,0,0,0,19,0,0,0,23,0,0,0,29,0,0,0,31,0,0,0,37,0,0,0,41,0,0,0,43,0,0,0,47,0,0,0,53,0,0,0,59,0,0,0,61,0,0,0,67,0,0,0,71,0,0,0,73,0,0,0,79,0,0,0,83,0,0,0,89,0,0,0,97,0,0,0,101,0,0,0,103,0,0,0,107,0,0,0,109,0,0,0,113,0,0,0,127,0,0,0,131,0,0,0,137,0,0,0,139,0,0,0,149,0,0,0,151,0,0,0,157,0,0,0,163,0,0,0,167,0,0,0,173,0,0,0,179,0,0,0,181,0,0,0,191,0,0,0,193,0,0,0,197,0,0,0,199,0,0,0,211,0,0,0,1,0,0,0,11,0,0,0,13,0,0,0,17,0,0,0,19,0,0,0,23,0,0,0,29,0,0,0,31,0,0,0,37,0,0,0,41,0,0,0,43,0,0,0,47,0,0,0,53,0,0,0,59,0,0,0,61,0,0,0,67,0,0,0,71,0,0,0,73,0,0,0,79,0,0,0,83,0,0,0,89,0,0,0,97,0,0,0,101,0,0,0,103,0,0,0,107,0,0,0,109,0,0,0,113,0,0,0,121,0,0,0,127,0,0,0,131,0,0,0,137,0,0,0,139,0,0,0,143,0,0,0,149,0,0,0,151,0,0,0,157,0,0,0,163,0,0,0,167,0,0,0,169,0,0,0,173,0,0,0,179,0,0,0,181,0,0,0,187,0,0,0,191,0,0,0,193,0,0,0,197,0,0,0,199,0,0,0,209,0,0,0,2,0,0,0,214,86,0,0,0,0,0,0,8,5,0,0,120,0,0,0,121,0,0,0,122,0,0,0,123,0,0,0,19,0,0,0,1,0,0,0,1,0,0,0,3,0,0,0,0,0,0,0,48,5,0,0,120,0,0,0,124,0,0,0,122,0,0,0,123,0,0,0,19,0,0,0,2,0,0,0,2,0,0,0,4,0,0,0,0,0,0,0,64,5,0,0,125,0,0,0,126,0,0,0,154,0,0,0,110,97,109,101,0,115,114,99,47,100,114,97,99,111,47,99,111,114,101,47,98,105,116,95,99,111,100,101,114,115,47,114,97,110,115,95,98,105,116,95,100,101,99,111,100,101,114,46,99,99,0,40,110,98,105,116,115,41,32,62,61,32,40,48,41,0,46,47,115,114,99,47,100,114,97,99,111,47,99,111,114,101,47,100,101,99,111,100,101,114,95,98,117,102,102,101,114,46,104,0,71,101,116,66,105,116,115,0,40,110,98,105,116,115,41,32,60,61,32,40,51,50,41,0,78,53,100,114,97,99,111,50,56,65,116,116,114,105,98,117,116,101,79,99,116,97,104,101,100,114,111,110,84,114,97,110,115,102,111,114,109,69,0,78,53,100,114,97,99,111,49,56,65,116,116,114,105,98,117,116,101,84,114,97,110,115,102,111,114,109,69,0,78,53,100,114,97,99,111,51,48,65,116,116,114,105,98,117,116,101,81,117,97,110,116,105,122,97,116,105,111,110,84,114,97,110,115,102,111,114,109,69,0,97,116,116,95,105,100,32,62,61,32,48,0,115,114,99,47,100,114,97,99,111,47,112,111,105,110,116,95,99,108,111,117,100,47,112,111,105,110,116,95,99,108,111,117,100,46,99,99,0,83,101,116,65,116,116,114,105,98,117,116,101,0,78,53,100,114,97,99,111,49,48,80,111,105,110,116,67,108,111,117,100,69,0,78,53,100,114,97,99,111,52,77,101,115,104,69,0,37,100,0,78,53,100,114,97,99,111,49,55,65,116,116,114,105,98,117,116,101,115,68,101,99,111,100,101,114,69,0,78,53,100,114,97,99,111,50,54,65,116,116,114,105,98,117,116,101,115,68,101,99,111,100,101,114,73,110,116,101,114,102,97,99,101,69,0,78,53,100,114,97,99,111,49,55,80,111,105,110,116,67,108,111,117,100,68,101,99,111,100,101,114,69,0,70,97,105,108,101,100,32,116,111,32,112,97,114,115,101,32,68,114,97,99,111,32,104,101,97,100,101,114,46,0,68,82,65,67,79,0,78,111,116,32,97,32,68,114,97,99,111,32,102,105,108,101,46,0,70,97,105,108,101,100,32,116,111,32,100,101,99,111,100,101,32,109,101,116,97,100,97,116,97,46,0,85,115,105,110,103,32,105,110,99,111,109,112,97,116,105,98,108,101,32,100,101,99,111,100,101,114,32,102,111,114,32,116,104,101,32,105,110,112,117,116,32,103,101,111,109,101,116,114,121,46,0,85,110,107,110,111,119,110,32,109,97,106,111,114,32,118,101,114,115,105,111,110,46,0,85,110,107,110,111,119,110,32,109,105,110,111,114,32,118,101,114,115,105,111,110,46,0,70,97,105,108,101,100,32,116,111,32,105,110,105,116,105,97,108,105,122,101,32,116,104,101,32,100,101,99,111,100,101,114,46,0,70,97,105,108,101,100,32,116,111,32,100,101,99,111,100,101,32,103,101,111,109,101,116,114,121,32,100,97,116,97,46,0,70,97,105,108,101,100,32,116,111,32,100,101,99,111,100,101,32,112,111,105,110,116,32,97,116,116,114,105,98,117,116,101,115,46,0,78,53,100,114,97,99,111,49,49,77,101,115,104,68,101,99,111,100,101,114,69,0,78,53,100,114,97,99,111,50,54,83,101,113,117,101,110,116,105,97,108,65,116,116,114,105,98,117,116,101,68,101,99,111,100,101,114,69,0,78,53,100,114,97,99,111,50,56,80,114,101,100,105,99,116,105,111,110,83,99,104,101,109,101,68,101,108,116,97,68,101,99,111,100,101,114,73,105,78,83,95,51,55,80,114,101,100,105,99,116,105,111,110,83,99,104,101,109,101,87,114,97,112,68,101,99,111,100,105,110,103,84,114,97,110,115,102,111,114,109,73,105,105,69,69,69,69,0,78,53,100,114,97,99,111,50,51,80,114,101,100,105,99,116,105,111,110,83,99,104,101,109,101,68,101,99,111,100,101,114,73,105,78,83,95,51,55,80,114,101,100,105,99,116,105,111,110,83,99,104,101,109,101,87,114,97,112,68,101,99,111,100,105,110,103,84,114,97,110,115,102,111,114,109,73,105,105,69,69,69,69,0,78,53,100,114,97,99,111,51,55,80,114,101,100,105,99,116,105,111,110,83,99,104,101,109,101,84,121,112,101,100,68,101,99,111,100,101,114,73,110,116,101,114,102,97,99,101,73,105,105,69,69,0,78,53,100,114,97,99,111,51,50,80,114,101,100,105,99,116,105,111,110,83,99,104,101,109,101,68,101,99,111,100,101,114,73,110,116,101,114,102,97,99,101,69,0,78,53,100,114,97,99,111,50,53,80,114,101,100,105,99,116,105,111,110,83,99,104,101,109,101,73,110,116,101,114,102,97,99,101,69,0,102,97,108,115,101,0,46,47,115,114,99,47,100,114,97,99,111,47,99,111,109,112,114,101,115,115,105,111,110,47,97,116,116,114,105,98,117,116,101,115,47,112,114,101,100,105,99,116,105,111,110,95,115,99,104,101,109,101,115,47,112,114,101,100,105,99,116,105,111,110,95,115,99,104,101,109,101,95,119,114,97,112,95,116,114,97,110,115,102,111,114,109,95,98,97,115,101,46,104,0,113,117,97,110,116,105,122,97,116,105,111,110,95,98,105,116,115,0,78,53,100,114,97,99,111,52,50,77,101,115,104,80,114,101,100,105,99,116,105,111,110,83,99,104,101,109,101,71,101,111,109,101,116,114,105,99,78,111,114,109,97,108,68,101,99,111,100,101,114,73,105,78,83,95,51,55,80,114,101,100,105,99,116,105,111,110,83,99,104,101,109,101,87,114,97,112,68,101,99,111,100,105,110,103,84,114,97,110,115,102,111,114,109,73,105,105,69,69,78,83,95,50,52,77,101,115,104,80,114,101,100,105,99,116,105,111,110,83,99,104,101,109,101,68,97,116,97,73,78,83,95,49,49,67,111,114,110,101,114,84,97,98,108,101,69,69,69,69,69,0,78,53,100,114,97,99,111,50,55,77,101,115,104,80,114,101,100,105,99,116,105,111,110,83,99,104,101,109,101,68,101,99,111,100,101,114,73,105,78,83,95,51,55,80,114,101,100,105,99,116,105,111,110,83,99,104,101,109,101,87,114,97,112,68,101,99,111,100,105,110,103,84,114,97,110,115,102,111,114,109,73,105,105,69,69,78,83,95,50,52,77,101,115,104,80,114,101,100,105,99,116,105,111,110,83,99,104,101,109,101,68,97,116,97,73,78,83,95,49,49,67,111,114,110,101,114,84,97,98,108,101,69,69,69,69,69,0,78,53,100,114,97,99,111,52,52,77,101,115,104,80,114,101,100,105,99,116,105,111,110,83,99,104,101,109,101,84,101,120,67,111,111,114,100,115,80,111,114,116,97,98,108,101,68,101,99,111,100,101,114,73,105,78,83,95,51,55,80,114,101,100,105,99,116,105,111,110,83,99,104,101,109,101,87,114,97,112,68,101,99,111,100,105,110,103,84,114,97,110,115,102,111,114,109,73,105,105,69,69,78,83,95,50,52,77,101,115,104,80,114,101,100,105,99,116,105,111,110,83,99,104,101,109,101,68,97,116,97,73,78,83,95,49,49,67,111,114,110,101,114,84,97,98,108,101,69,69,69,69,69,0,78,53,100,114,97,99,111,51,54,77,101,115,104,80,114,101,100,105,99,116,105,111,110,83,99,104,101,109,101,84,101,120,67,111,111,114,100,115,68,101,99,111,100,101,114,73,105,78,83,95,51,55,80,114,101,100,105,99,116,105,111,110,83,99,104,101,109,101,87,114,97,112,68,101,99,111,100,105,110,103,84,114,97,110,115,102,111,114,109,73,105,105,69,69,78,83,95,50,52,77,101,115,104,80,114,101,100,105,99,116,105,111,110,83,99,104,101,109,101,68,97,116,97,73,78,83,95,49,49,67,111,114,110,101,114,84,97,98,108,101,69,69,69,69,69,0,78,53,100,114,97,99,111,53,54,77,101,115,104,80,114,101,100,105,99,116,105,111,110,83,99,104,101,109,101,67,111,110,115,116,114,97,105,110,101,100,77,117,108,116,105,80,97,114,97,108,108,101,108,111,103,114,97,109,68,101,99,111,100,101,114,73,105,78,83,95,51,55,80,114,101,100,105,99,116,105,111,110,83,99,104,101,109,101,87,114,97,112,68,101,99,111,100,105,110,103,84,114,97,110,115,102,111,114,109,73,105,105,69,69,78,83,95,50,52,77,101,115,104,80,114,101,100,105,99,116,105,111,110,83,99,104,101,109,101,68,97,116,97,73,78,83,95,49,49,67,111,114,110,101,114,84,97,98,108,101,69,69,69,69,69,0,78,53,100,114,97,99,111,52,53,77,101,115,104,80,114,101,100,105,99,116,105,111,110,83,99,104,101,109,101,77,117,108,116,105,80,97,114,97,108,108,101,108,111,103,114,97,109,68,101,99,111,100,101,114,73,105,78,83,95,51,55,80,114,101,100,105,99,116,105,111,110,83,99,104,101,109,101,87,114,97,112,68,101,99,111,100,105,110,103,84,114,97,110,115,102,111,114,109,73,105,105,69,69,78,83,95,50,52,77,101,115,104,80,114,101,100,105,99,116,105,111,110,83,99,104,101,109,101,68,97,116,97,73,78,83,95,49,49,67,111,114,110,101,114,84,97,98,108,101,69,69,69,69,69,0,78,53,100,114,97,99,111,52,48,77,101,115,104,80,114,101,100,105,99,116,105,111,110,83,99,104,101,109,101,80,97,114,97,108,108,101,108,111,103,114,97,109,68,101,99,111,100,101,114,73,105,78,83,95,51,55,80,114,101,100,105,99,116,105,111,110,83,99,104,101,109,101,87,114,97,112,68,101,99,111,100,105,110,103,84,114,97,110,115,102,111,114,109,73,105,105,69,69,78,83,95,50,52,77,101,115,104,80,114,101,100,105,99,116,105,111,110,83,99,104,101,109,101,68,97,116,97,73,78,83,95,49,49,67,111,114,110,101,114,84,97,98,108,101,69,69,69,69,69,0,78,53,100,114,97,99,111,52,50,77,101,115,104,80,114,101,100,105,99,116,105,111,110,83,99,104,101,109,101,71,101,111,109,101,116,114,105,99,78,111,114,109,97,108,68,101,99,111,100,101,114,73,105,78,83,95,51,55,80,114,101,100,105,99,116,105,111,110,83,99,104,101,109,101,87,114,97,112,68,101,99,111,100,105,110,103,84,114,97,110,115,102,111,114,109,73,105,105,69,69,78,83,95,50,52,77,101,115,104,80,114,101,100,105,99,116,105,111,110,83,99,104,101,109,101,68,97,116,97,73,78,83,95,50,52,77,101,115,104,65,116,116,114,105,98,117,116,101,67,111,114,110,101,114,84,97,98,108,101,69,69,69,69,69,0,78,53,100,114,97,99,111,50,55,77,101,115,104,80,114,101,100,105,99,116,105,111,110,83,99,104,101,109,101,68,101,99,111,100,101,114,73,105,78,83,95,51,55,80,114,101,100,105,99,116,105,111,110,83,99,104,101,109,101,87,114,97,112,68,101,99,111,100,105,110,103,84,114,97,110,115,102,111,114,109,73,105,105,69,69,78,83,95,50,52,77,101,115,104,80,114,101,100,105,99,116,105,111,110,83,99,104,101,109,101,68,97,116,97,73,78,83,95,50,52,77,101,115,104,65,116,116,114,105,98,117,116,101,67,111,114,110,101,114,84,97,98,108,101,69,69,69,69,69,0,78,53,100,114,97,99,111,52,52,77,101,115,104,80,114,101,100,105,99,116,105,111,110,83,99,104,101,109,101,84,101,120,67,111,111,114,100,115,80,111,114,116,97,98,108,101,68,101,99,111,100,101,114,73,105,78,83,95,51,55,80,114,101,100,105,99,116,105,111,110,83,99,104,101,109,101,87,114,97,112,68,101,99,111,100,105,110,103,84,114,97,110,115,102,111,114,109,73,105,105,69,69,78,83,95,50,52,77,101,115,104,80,114,101,100,105,99,116,105,111,110,83,99,104,101,109,101,68,97,116,97,73,78,83,95,50,52,77,101,115,104,65,116,116,114,105,98,117,116,101,67,111,114,110,101,114,84,97,98,108,101,69,69,69,69,69,0,78,53,100,114,97,99,111,51,54,77,101,115,104,80,114,101,100,105,99,116,105,111,110,83,99,104,101,109,101,84,101,120,67,111,111,114,100,115,68,101,99,111,100,101,114,73,105,78,83,95,51,55,80,114,101,100,105,99,116,105,111,110,83,99,104,101,109,101,87,114,97,112,68,101,99,111,100,105,110,103,84,114,97,110,115,102,111,114,109,73,105,105,69,69,78,83,95,50,52,77,101,115,104,80,114,101,100,105,99,116,105,111,110,83,99,104,101,109,101,68,97,116,97,73,78,83,95,50,52,77,101,115,104,65,116,116,114,105,98,117,116,101,67,111,114,110,101,114,84,97,98,108,101,69,69,69,69,69,0,78,53,100,114,97,99,111,53,54,77,101,115,104,80,114,101,100,105,99,116,105,111,110,83,99,104,101,109,101,67,111,110,115,116,114,97,105,110,101,100,77,117,108,116,105,80,97,114,97,108,108,101,108,111,103,114,97,109,68,101,99,111,100,101,114,73,105,78,83,95,51,55,80,114,101,100,105,99,116,105,111,110,83,99,104,101,109,101,87,114,97,112,68,101,99,111,100,105,110,103,84,114,97,110,115,102,111,114,109,73,105,105,69,69,78,83,95,50,52,77,101,115,104,80,114,101,100,105,99,116,105,111,110,83,99,104,101,109,101,68,97,116,97,73,78,83,95,50,52,77,101,115,104,65,116,116,114,105,98,117,116,101,67,111,114,110,101,114,84,97,98,108,101,69,69,69,69,69,0,78,53,100,114,97,99,111,52,53,77,101,115,104,80,114,101,100,105,99,116,105,111,110,83,99,104,101,109,101,77,117,108,116,105,80,97,114,97,108,108,101,108,111,103,114,97,109,68,101,99,111,100,101,114,73,105,78,83,95,51,55,80,114,101,100,105,99,116,105,111,110,83,99,104,101,109,101,87,114,97,112,68,101,99,111,100,105,110,103,84,114,97,110,115,102,111,114,109,73,105,105,69,69,78,83,95,50,52,77,101,115,104,80,114,101,100,105,99,116,105,111,110,83,99,104,101,109,101,68,97,116,97,73,78,83,95,50,52,77,101,115,104,65,116,116,114,105,98,117,116,101,67,111,114,110,101,114,84,97,98,108,101,69,69,69,69,69,0,78,53,100,114,97,99,111,52,48,77,101,115,104,80,114,101,100,105,99,116,105,111,110,83,99,104,101,109,101,80,97,114,97,108,108,101,108,111,103,114,97,109,68,101,99,111,100,101,114,73,105,78,83,95,51,55,80,114,101,100,105,99,116,105,111,110,83,99,104,101,109,101,87,114,97,112,68,101,99,111,100,105,110,103,84,114,97,110,115,102,111,114,109,73,105,105,69,69,78,83,95,50,52,77,101,115,104,80,114,101,100,105,99,116,105,111,110,83,99,104,101,109,101,68,97,116,97,73,78,83,95,50,52,77,101,115,104,65,116,116,114,105,98,117,116,101,67,111,114,110,101,114,84,97,98,108,101,69,69,69,69,69,0,78,53,100,114,97,99,111,51,51,83,101,113,117,101,110,116,105,97,108,73,110,116,101,103,101,114,65,116,116,114,105,98,117,116,101,68,101,99,111,100,101,114,69,0,78,53,100,114,97,99,111,51,56,83,101,113,117,101,110,116,105,97,108,81,117,97,110,116,105,122,97,116,105,111,110,65,116,116,114,105,98,117,116,101,68,101,99,111,100,101,114,69,0,40,113,41,32,62,61,32,40,50,41,0,46,47,115,114,99,47,100,114,97,99,111,47,99,111,109,112,114,101,115,115,105,111,110,47,97,116,116,114,105,98,117,116,101,115,47,110,111,114,109,97,108,95,99,111,109,112,114,101,115,115,105,111,110,95,117,116,105,108,115,46,104,0,83,101,116,81,117,97,110,116,105,122,97,116,105,111,110,66,105,116,115,0,40,113,41,32,60,61,32,40,51,48,41,0,40,105,110,95,115,41,32,62,61,32,40,48,41,0,79,99,116,97,104,101,114,100,97,108,67,111,111,114,100,115,84,111,85,110,105,116,86,101,99,116,111,114,0,40,105,110,95,116,41,32,62,61,32,40,48,41,0,40,105,110,95,115,41,32,60,61,32,40,49,41,0,40,105,110,95,116,41,32,60,61,32,40,49,41,0,40,112,114,101,100,95,118,97,108,115,91,48,93,41,32,60,61,32,40,50,32,42,32,116,104,105,115,45,62,99,101,110,116,101,114,95,118,97,108,117,101,40,41,41,0,46,47,115,114,99,47,100,114,97,99,111,47,99,111,109,112,114,101,115,115,105,111,110,47,97,116,116,114,105,98,117,116,101,115,47,112,114,101,100,105,99,116,105,111,110,95,115,99,104,101,109,101,115,47,112,114,101,100,105,99,116,105,111,110,95,115,99,104,101,109,101,95,110,111,114,109,97,108,95,111,99,116,97,104,101,100,114,111,110,95,99,97,110,111,110,105,99,97,108,105,122,101,100,95,100,101,99,111,100,105,110,103,95,116,114,97,110,115,102,111,114,109,46,104,0,67,111,109,112,117,116,101,79,114,105,103,105,110,97,108,86,97,108,117,101,0,40,112,114,101,100,95,118,97,108,115,91,49,93,41,32,60,61,32,40,50,32,42,32,116,104,105,115,45,62,99,101,110,116,101,114,95,118,97,108,117,101,40,41,41,0,40,99,111,114,114,95,118,97,108,115,91,48,93,41,32,60,61,32,40,50,32,42,32,116,104,105,115,45,62,99,101,110,116,101,114,95,118,97,108,117,101,40,41,41,0,40,99,111,114,114,95,118,97,108,115,91,49,93,41,32,60,61,32,40,50,32,42,32,116,104,105,115,45,62,99,101,110,116,101,114,95,118,97,108,117,101,40,41,41,0,40,48,41,32,60,61,32,40,112,114,101,100,95,118,97,108,115,91,48,93,41,0,40,48,41,32,60,61,32,40,112,114,101,100,95,118,97,108,115,91,49,93,41,0,40,48,41,32,60,61,32,40,99,111,114,114,95,118,97,108,115,91,48,93,41,0,40,48,41,32,60,61,32,40,99,111,114,114,95,118,97,108,115,91,49,93,41,0,40,115,41,32,60,61,32,40,99,101,110,116,101,114,95,118,97,108,117,101,95,41,0,73,115,73,110,68,105,97,109,111,110,100,0,40,116,41,32,60,61,32,40,99,101,110,116,101,114,95,118,97,108,117,101,95,41,0,40,115,41,32,62,61,32,40,45,99,101,110,116,101,114,95,118,97,108,117,101,95,41,0,40,116,41,32,62,61,32,40,45,99,101,110,116,101,114,95,118,97,108,117,101,95,41,0,40,42,115,41,32,60,61,32,40,99,101,110,116,101,114,95,118,97,108,117,101,95,41,0,73,110,118,101,114,116,68,105,97,109,111,110,100,0,40,42,116,41,32,60,61,32,40,99,101,110,116,101,114,95,118,97,108,117,101,95,41,0,40,42,115,41,32,62,61,32,40,45],"i8",ALLOC_NONE,Runtime.GLOBAL_BASE);allocate([99,101,110,116,101,114,95,118,97,108,117,101,95,41,0,40,42,116,41,32,62,61,32,40,45,99,101,110,116,101,114,95,118,97,108,117,101,95,41,0,40,109,97,120,95,113,117,97,110,116,105,122,101,100,95,118,97,108,117,101,32,37,32,50,41,32,61,61,32,40,49,41,0,46,47,115,114,99,47,100,114,97,99,111,47,99,111,109,112,114,101,115,115,105,111,110,47,97,116,116,114,105,98,117,116,101,115,47,112,114,101,100,105,99,116,105,111,110,95,115,99,104,101,109,101,115,47,112,114,101,100,105,99,116,105,111,110,95,115,99,104,101,109,101,95,110,111,114,109,97,108,95,111,99,116,97,104,101,100,114,111,110,95,116,114,97,110,115,102,111,114,109,95,98,97,115,101,46,104,0,115,101,116,95,109,97,120,95,113,117,97,110,116,105,122,101,100,95,118,97,108,117,101,0,78,53,100,114,97,99,111,50,56,80,114,101,100,105,99,116,105,111,110,83,99,104,101,109,101,68,101,108,116,97,68,101,99,111,100,101,114,73,105,78,83,95,54,50,80,114,101,100,105,99,116,105,111,110,83,99,104,101,109,101,78,111,114,109,97,108,79,99,116,97,104,101,100,114,111,110,67,97,110,111,110,105,99,97,108,105,122,101,100,68,101,99,111,100,105,110,103,84,114,97,110,115,102,111,114,109,73,105,69,69,69,69,0,78,53,100,114,97,99,111,50,51,80,114,101,100,105,99,116,105,111,110,83,99,104,101,109,101,68,101,99,111,100,101,114,73,105,78,83,95,54,50,80,114,101,100,105,99,116,105,111,110,83,99,104,101,109,101,78,111,114,109,97,108,79,99,116,97,104,101,100,114,111,110,67,97,110,111,110,105,99,97,108,105,122,101,100,68,101,99,111,100,105,110,103,84,114,97,110,115,102,111,114,109,73,105,69,69,69,69,0,116,104,105,115,45,62,73,115,73,110,105,116,105,97,108,105,122,101,100,40,41,0,46,47,115,114,99,47,100,114,97,99,111,47,99,111,109,112,114,101,115,115,105,111,110,47,97,116,116,114,105,98,117,116,101,115,47,112,114,101,100,105,99,116,105,111,110,95,115,99,104,101,109,101,115,47,109,101,115,104,95,112,114,101,100,105,99,116,105,111,110,95,115,99,104,101,109,101,95,103,101,111,109,101,116,114,105,99,95,110,111,114,109,97,108,95,100,101,99,111,100,101,114,46,104,0,67,111,109,112,117,116,101,79,114,105,103,105,110,97,108,86,97,108,117,101,115,0,40,110,117,109,95,99,111,109,112,111,110,101,110,116,115,41,32,61,61,32,40,50,41,0,40,112,114,101,100,95,110,111,114,109,97,108,95,51,100,46,65,98,115,83,117,109,40,41,41,32,61,61,32,40,111,99,116,97,104,101,100,114,111,110,95,116,111,111,108,95,98,111,120,95,46,99,101,110,116,101,114,95,118,97,108,117,101,40,41,41,0,40,115,116,100,58,58,97,98,115,40,105,110,116,95,118,101,99,91,48,93,41,32,43,32,115,116,100,58,58,97,98,115,40,105,110,116,95,118,101,99,91,49,93,41,32,43,32,115,116,100,58,58,97,98,115,40,105,110,116,95,118,101,99,91,50,93,41,41,32,61,61,32,40,99,101,110,116,101,114,95,118,97,108,117,101,95,41,0,73,110,116,101,103,101,114,86,101,99,116,111,114,84,111,81,117,97,110,116,105,122,101,100,79,99,116,97,104,101,100,114,97,108,67,111,111,114,100,115,0,46,47,115,114,99,47,100,114,97,99,111,47,99,111,109,112,114,101,115,115,105,111,110,47,97,116,116,114,105,98,117,116,101,115,47,112,114,101,100,105,99,116,105,111,110,95,115,99,104,101,109,101,115,47,109,101,115,104,95,112,114,101,100,105,99,116,105,111,110,95,115,99,104,101,109,101,95,103,101,111,109,101,116,114,105,99,95,110,111,114,109,97,108,95,112,114,101,100,105,99,116,111,114,46,104,0,67,111,109,112,117,116,101,80,114,101,100,105,99,116,101,100,86,97,108,117,101,0,71,101,116,80,111,115,105,116,105,111,110,70,111,114,67,111,114,110,101,114,0,40,110,111,114,109,97,108,46,65,98,115,83,117,109,40,41,41,32,60,61,32,40,117,112,112,101,114,95,98,111,117,110,100,41,0,71,101,116,80,111,115,105,116,105,111,110,70,111,114,68,97,116,97,73,100,0,40,105,41,32,61,61,32,40,48,41,0,71,101,116,80,97,114,101,110,116,65,116,116,114,105,98,117,116,101,84,121,112,101,0,78,53,100,114,97,99,111,52,50,77,101,115,104,80,114,101,100,105,99,116,105,111,110,83,99,104,101,109,101,71,101,111,109,101,116,114,105,99,78,111,114,109,97,108,68,101,99,111,100,101,114,73,105,78,83,95,54,50,80,114,101,100,105,99,116,105,111,110,83,99,104,101,109,101,78,111,114,109,97,108,79,99,116,97,104,101,100,114,111,110,67,97,110,111,110,105,99,97,108,105,122,101,100,68,101,99,111,100,105,110,103,84,114,97,110,115,102,111,114,109,73,105,69,69,78,83,95,50,52,77,101,115,104,80,114,101,100,105,99,116,105,111,110,83,99,104,101,109,101,68,97,116,97,73,78,83,95,49,49,67,111,114,110,101,114,84,97,98,108,101,69,69,69,69,69,0,78,53,100,114,97,99,111,50,55,77,101,115,104,80,114,101,100,105,99,116,105,111,110,83,99,104,101,109,101,68,101,99,111,100,101,114,73,105,78,83,95,54,50,80,114,101,100,105,99,116,105,111,110,83,99,104,101,109,101,78,111,114,109,97,108,79,99,116,97,104,101,100,114,111,110,67,97,110,111,110,105,99,97,108,105,122,101,100,68,101,99,111,100,105,110,103,84,114,97,110,115,102,111,114,109,73,105,69,69,78,83,95,50,52,77,101,115,104,80,114,101,100,105,99,116,105,111,110,83,99,104,101,109,101,68,97,116,97,73,78,83,95,49,49,67,111,114,110,101,114,84,97,98,108,101,69,69,69,69,69,0,46,47,115,114,99,47,100,114,97,99,111,47,99,111,109,112,114,101,115,115,105,111,110,47,97,116,116,114,105,98,117,116,101,115,47,112,114,101,100,105,99,116,105,111,110,95,115,99,104,101,109,101,115,47,109,101,115,104,95,112,114,101,100,105,99,116,105,111,110,95,115,99,104,101,109,101,95,116,101,120,95,99,111,111,114,100,115,95,112,111,114,116,97,98,108,101,95,100,101,99,111,100,101,114,46,104,0,78,53,100,114,97,99,111,52,52,77,101,115,104,80,114,101,100,105,99,116,105,111,110,83,99,104,101,109,101,84,101,120,67,111,111,114,100,115,80,111,114,116,97,98,108,101,68,101,99,111,100,101,114,73,105,78,83,95,54,50,80,114,101,100,105,99,116,105,111,110,83,99,104,101,109,101,78,111,114,109,97,108,79,99,116,97,104,101,100,114,111,110,67,97,110,111,110,105,99,97,108,105,122,101,100,68,101,99,111,100,105,110,103,84,114,97,110,115,102,111,114,109,73,105,69,69,78,83,95,50,52,77,101,115,104,80,114,101,100,105,99,116,105,111,110,83,99,104,101,109,101,68,97,116,97,73,78,83,95,49,49,67,111,114,110,101,114,84,97,98,108,101,69,69,69,69,69,0,46,47,115,114,99,47,100,114,97,99,111,47,99,111,109,112,114,101,115,115,105,111,110,47,97,116,116,114,105,98,117,116,101,115,47,112,114,101,100,105,99,116,105,111,110,95,115,99,104,101,109,101,115,47,109,101,115,104,95,112,114,101,100,105,99,116,105,111,110,95,115,99,104,101,109,101,95,116,101,120,95,99,111,111,114,100,115,95,100,101,99,111,100,101,114,46,104,0,78,53,100,114,97,99,111,51,54,77,101,115,104,80,114,101,100,105,99,116,105,111,110,83,99,104,101,109,101,84,101,120,67,111,111,114,100,115,68,101,99,111,100,101,114,73,105,78,83,95,54,50,80,114,101,100,105,99,116,105,111,110,83,99,104,101,109,101,78,111,114,109,97,108,79,99,116,97,104,101,100,114,111,110,67,97,110,111,110,105,99,97,108,105,122,101,100,68,101,99,111,100,105,110,103,84,114,97,110,115,102,111,114,109,73,105,69,69,78,83,95,50,52,77,101,115,104,80,114,101,100,105,99,116,105,111,110,83,99,104,101,109,101,68,97,116,97,73,78,83,95,49,49,67,111,114,110,101,114,84,97,98,108,101,69,69,69,69,69,0,78,53,100,114,97,99,111,53,54,77,101,115,104,80,114,101,100,105,99,116,105,111,110,83,99,104,101,109,101,67,111,110,115,116,114,97,105,110,101,100,77,117,108,116,105,80,97,114,97,108,108,101,108,111,103,114,97,109,68,101,99,111,100,101,114,73,105,78,83,95,54,50,80,114,101,100,105,99,116,105,111,110,83,99,104,101,109,101,78,111,114,109,97,108,79,99,116,97,104,101,100,114,111,110,67,97,110,111,110,105,99,97,108,105,122,101,100,68,101,99,111,100,105,110,103,84,114,97,110,115,102,111,114,109,73,105,69,69,78,83,95,50,52,77,101,115,104,80,114,101,100,105,99,116,105,111,110,83,99,104,101,109,101,68,97,116,97,73,78,83,95,49,49,67,111,114,110,101,114,84,97,98,108,101,69,69,69,69,69,0,78,53,100,114,97,99,111,52,53,77,101,115,104,80,114,101,100,105,99,116,105,111,110,83,99,104,101,109,101,77,117,108,116,105,80,97,114,97,108,108,101,108,111,103,114,97,109,68,101,99,111,100,101,114,73,105,78,83,95,54,50,80,114,101,100,105,99,116,105,111,110,83,99,104,101,109,101,78,111,114,109,97,108,79,99,116,97,104,101,100,114,111,110,67,97,110,111,110,105,99,97,108,105,122,101,100,68,101,99,111,100,105,110,103,84,114,97,110,115,102,111,114,109,73,105,69,69,78,83,95,50,52,77,101,115,104,80,114,101,100,105,99,116,105,111,110,83,99,104,101,109,101,68,97,116,97,73,78,83,95,49,49,67,111,114,110,101,114,84,97,98,108,101,69,69,69,69,69,0,78,53,100,114,97,99,111,52,48,77,101,115,104,80,114,101,100,105,99,116,105,111,110,83,99,104,101,109,101,80,97,114,97,108,108,101,108,111,103,114,97,109,68,101,99,111,100,101,114,73,105,78,83,95,54,50,80,114,101,100,105,99,116,105,111,110,83,99,104,101,109,101,78,111,114,109,97,108,79,99,116,97,104,101,100,114,111,110,67,97,110,111,110,105,99,97,108,105,122,101,100,68,101,99,111,100,105,110,103,84,114,97,110,115,102,111,114,109,73,105,69,69,78,83,95,50,52,77,101,115,104,80,114,101,100,105,99,116,105,111,110,83,99,104,101,109,101,68,97,116,97,73,78,83,95,49,49,67,111,114,110,101,114,84,97,98,108,101,69,69,69,69,69,0,78,53,100,114,97,99,111,52,50,77,101,115,104,80,114,101,100,105,99,116,105,111,110,83,99,104,101,109,101,71,101,111,109,101,116,114,105,99,78,111,114,109,97,108,68,101,99,111,100,101,114,73,105,78,83,95,54,50,80,114,101,100,105,99,116,105,111,110,83,99,104,101,109,101,78,111,114,109,97,108,79,99,116,97,104,101,100,114,111,110,67,97,110,111,110,105,99,97,108,105,122,101,100,68,101,99,111,100,105,110,103,84,114,97,110,115,102,111,114,109,73,105,69,69,78,83,95,50,52,77,101,115,104,80,114,101,100,105,99,116,105,111,110,83,99,104,101,109,101,68,97,116,97,73,78,83,95,50,52,77,101,115,104,65,116,116,114,105,98,117,116,101,67,111,114,110,101,114,84,97,98,108,101,69,69,69,69,69,0,78,53,100,114,97,99,111,50,55,77,101,115,104,80,114,101,100,105,99,116,105,111,110,83,99,104,101,109,101,68,101,99,111,100,101,114,73,105,78,83,95,54,50,80,114,101,100,105,99,116,105,111,110,83,99,104,101,109,101,78,111,114,109,97,108,79,99,116,97,104,101,100,114,111,110,67,97,110,111,110,105,99,97,108,105,122,101,100,68,101,99,111,100,105,110,103,84,114,97,110,115,102,111,114,109,73,105,69,69,78,83,95,50,52,77,101,115,104,80,114,101,100,105,99,116,105,111,110,83,99,104,101,109,101,68,97,116,97,73,78,83,95,50,52,77,101,115,104,65,116,116,114,105,98,117,116,101,67,111,114,110,101,114,84,97,98,108,101,69,69,69,69,69,0,78,53,100,114,97,99,111,52,52,77,101,115,104,80,114,101,100,105,99,116,105,111,110,83,99,104,101,109,101,84,101,120,67,111,111,114,100,115,80,111,114,116,97,98,108,101,68,101,99,111,100,101,114,73,105,78,83,95,54,50,80,114,101,100,105,99,116,105,111,110,83,99,104,101,109,101,78,111,114,109,97,108,79,99,116,97,104,101,100,114,111,110,67,97,110,111,110,105,99,97,108,105,122,101,100,68,101,99,111,100,105,110,103,84,114,97,110,115,102,111,114,109,73,105,69,69,78,83,95,50,52,77,101,115,104,80,114,101,100,105,99,116,105,111,110,83,99,104,101,109,101,68,97,116,97,73,78,83,95,50,52,77,101,115,104,65,116,116,114,105,98,117,116,101,67,111,114,110,101,114,84,97,98,108,101,69,69,69,69,69,0,78,53,100,114,97,99,111,51,54,77,101,115,104,80,114,101,100,105,99,116,105,111,110,83,99,104,101,109,101,84,101,120,67,111,111,114,100,115,68,101,99,111,100,101,114,73,105,78,83,95,54,50,80,114,101,100,105,99,116,105,111,110,83,99,104,101,109,101,78,111,114,109,97,108,79,99,116,97,104,101,100,114,111,110,67,97,110,111,110,105,99,97,108,105,122,101,100,68,101,99,111,100,105,110,103,84,114,97,110,115,102,111,114,109,73,105,69,69,78,83,95,50,52,77,101,115,104,80,114,101,100,105,99,116,105,111,110,83,99,104,101,109,101,68,97,116,97,73,78,83,95,50,52,77,101,115,104,65,116,116,114,105,98,117,116,101,67,111,114,110,101,114,84,97,98,108,101,69,69,69,69,69,0,78,53,100,114,97,99,111,53,54,77,101,115,104,80,114,101,100,105,99,116,105,111,110,83,99,104,101,109,101,67,111,110,115,116,114,97,105,110,101,100,77,117,108,116,105,80,97,114,97,108,108,101,108,111,103,114,97,109,68,101,99,111,100,101,114,73,105,78,83,95,54,50,80,114,101,100,105,99,116,105,111,110,83,99,104,101,109,101,78,111,114,109,97,108,79,99,116,97,104,101,100,114,111,110,67,97,110,111,110,105,99,97,108,105,122,101,100,68,101,99,111,100,105,110,103,84,114,97,110,115,102,111,114,109,73,105,69,69,78,83,95,50,52,77,101,115,104,80,114,101,100,105,99,116,105,111,110,83,99,104,101,109,101,68,97,116,97,73,78,83,95,50,52,77,101,115,104,65,116,116,114,105,98,117,116,101,67,111,114,110,101,114,84,97,98,108,101,69,69,69,69,69,0,78,53,100,114,97,99,111,52,53,77,101,115,104,80,114,101,100,105,99,116,105,111,110,83,99,104,101,109,101,77,117,108,116,105,80,97,114,97,108,108,101,108,111,103,114,97,109,68,101,99,111,100,101,114,73,105,78,83,95,54,50,80,114,101,100,105,99,116,105,111,110,83,99,104,101,109,101,78,111,114,109,97,108,79,99,116,97,104,101,100,114,111,110,67,97,110,111,110,105,99,97,108,105,122,101,100,68,101,99,111,100,105,110,103,84,114,97,110,115,102,111,114,109,73,105,69,69,78,83,95,50,52,77,101,115,104,80,114,101,100,105,99,116,105,111,110,83,99,104,101,109,101,68,97,116,97,73,78,83,95,50,52,77,101,115,104,65,116,116,114,105,98,117,116,101,67,111,114,110,101,114,84,97,98,108,101,69,69,69,69,69,0,78,53,100,114,97,99,111,52,48,77,101,115,104,80,114,101,100,105,99,116,105,111,110,83,99,104,101,109,101,80,97,114,97,108,108,101,108,111,103,114,97,109,68,101,99,111,100,101,114,73,105,78,83,95,54,50,80,114,101,100,105,99,116,105,111,110,83,99,104,101,109,101,78,111,114,109,97,108,79,99,116,97,104,101,100,114,111,110,67,97,110,111,110,105,99,97,108,105,122,101,100,68,101,99,111,100,105,110,103,84,114,97,110,115,102,111,114,109,73,105,69,69,78,83,95,50,52,77,101,115,104,80,114,101,100,105,99,116,105,111,110,83,99,104,101,109,101,68,97,116,97,73,78,83,95,50,52,77,101,115,104,65,116,116,114,105,98,117,116,101,67,111,114,110,101,114,84,97,98,108,101,69,69,69,69,69,0,78,53,100,114,97,99,111,54,50,80,114,101,100,105,99,116,105,111,110,83,99,104,101,109,101,78,111,114,109,97,108,79,99,116,97,104,101,100,114,111,110,67,97,110,111,110,105,99,97,108,105,122,101,100,68,101,99,111,100,105,110,103,84,114,97,110,115,102,111,114,109,73,105,69,69,0,78,53,100,114,97,99,111,53,56,80,114,101,100,105,99,116,105,111,110,83,99,104,101,109,101,78,111,114,109,97,108,79,99,116,97,104,101,100,114,111,110,67,97,110,111,110,105,99,97,108,105,122,101,100,84,114,97,110,115,102,111,114,109,66,97,115,101,73,105,69,69,0,78,53,100,114,97,99,111,52,53,80,114,101,100,105,99,116,105,111,110,83,99,104,101,109,101,78,111,114,109,97,108,79,99,116,97,104,101,100,114,111,110,84,114,97,110,115,102,111,114,109,66,97,115,101,73,105,69,69,0,46,47,115,114,99,47,100,114,97,99,111,47,99,111,109,112,114,101,115,115,105,111,110,47,97,116,116,114,105,98,117,116,101,115,47,112,114,101,100,105,99,116,105,111,110,95,115,99,104,101,109,101,115,47,112,114,101,100,105,99,116,105,111,110,95,115,99,104,101,109,101,95,110,111,114,109,97,108,95,111,99,116,97,104,101,100,114,111,110,95,100,101,99,111,100,105,110,103,95,116,114,97,110,115,102,111,114,109,46,104,0,78,53,100,114,97,99,111,50,56,80,114,101,100,105,99,116,105,111,110,83,99,104,101,109,101,68,101,108,116,97,68,101,99,111,100,101,114,73,105,78,83,95,52,57,80,114,101,100,105,99,116,105,111,110,83,99,104,101,109,101,78,111,114,109,97,108,79,99,116,97,104,101,100,114,111,110,68,101,99,111,100,105,110,103,84,114,97,110,115,102,111,114,109,73,105,69,69,69,69,0,78,53,100,114,97,99,111,50,51,80,114,101,100,105,99,116,105,111,110,83,99,104,101,109,101,68,101,99,111,100,101,114,73,105,78,83,95,52,57,80,114,101,100,105,99,116,105,111,110,83,99,104,101,109,101,78,111,114,109,97,108,79,99,116,97,104,101,100,114,111,110,68,101,99,111,100,105,110,103,84,114,97,110,115,102,111,114,109,73,105,69,69,69,69,0,78,53,100,114,97,99,111,52,50,77,101,115,104,80,114,101,100,105,99,116,105,111,110,83,99,104,101,109,101,71,101,111,109,101,116,114,105,99,78,111,114,109,97,108,68,101,99,111,100,101,114,73,105,78,83,95,52,57,80,114,101,100,105,99,116,105,111,110,83,99,104,101,109,101,78,111,114,109,97,108,79,99,116,97,104,101,100,114,111,110,68,101,99,111,100,105,110,103,84,114,97,110,115,102,111,114,109,73,105,69,69,78,83,95,50,52,77,101,115,104,80,114,101,100,105,99,116,105,111,110,83,99,104,101,109,101,68,97,116,97,73,78,83,95,49,49,67,111,114,110,101,114,84,97,98,108,101,69,69,69,69,69,0,78,53,100,114,97,99,111,50,55,77,101,115,104,80,114,101,100,105,99,116,105,111,110,83,99,104,101,109,101,68,101,99,111,100,101,114,73,105,78,83,95,52,57,80,114,101,100,105,99,116,105,111,110,83,99,104,101,109,101,78,111,114,109,97,108,79,99,116,97,104,101,100,114,111,110,68,101,99,111,100,105,110,103,84,114,97,110,115,102,111,114,109,73,105,69,69,78,83,95,50,52,77,101,115,104,80,114,101,100,105,99,116,105,111,110,83,99,104,101,109,101,68,97,116,97,73,78,83,95,49,49,67,111,114,110,101,114,84,97,98,108,101,69,69,69,69,69,0,78,53,100,114,97,99,111,52,52,77,101,115,104,80,114,101,100,105,99,116,105,111,110,83,99,104,101,109,101,84,101,120,67,111,111,114,100,115,80,111,114,116,97,98,108,101,68,101,99,111,100,101,114,73,105,78,83,95,52,57,80,114,101,100,105,99,116,105,111,110,83,99,104,101,109,101,78,111,114,109,97,108,79,99,116,97,104,101,100,114,111,110,68,101,99,111,100,105,110,103,84,114,97,110,115,102,111,114,109,73,105,69,69,78,83,95,50,52,77,101,115,104,80,114,101,100,105,99,116,105,111,110,83,99,104,101,109,101,68,97,116,97,73,78,83,95,49,49,67,111,114,110,101,114,84,97,98,108,101,69,69,69,69,69,0,78,53,100,114,97,99,111,51,54,77,101,115,104,80,114,101,100,105,99,116,105,111,110,83,99,104,101,109,101,84,101,120,67,111,111,114,100,115,68,101,99,111,100,101,114,73,105,78,83,95,52,57,80,114,101,100,105,99,116,105,111,110,83,99,104,101,109,101,78,111,114,109,97,108,79,99,116,97,104,101,100,114,111,110,68,101,99,111,100,105,110,103,84,114,97,110,115,102,111,114,109,73,105,69,69,78,83,95,50,52,77,101,115,104,80,114,101,100,105,99,116,105,111,110,83,99,104,101,109,101,68,97,116,97,73,78,83,95,49,49,67,111,114,110,101,114,84,97,98,108,101,69,69,69,69,69,0,78,53,100,114,97,99,111,53,54,77,101,115,104,80,114,101,100,105,99,116,105,111,110,83,99,104,101,109,101,67,111,110,115,116,114,97,105,110,101,100,77,117,108,116,105,80,97,114,97,108,108,101,108,111,103,114,97,109,68,101,99,111,100,101,114,73,105,78,83,95,52,57,80,114,101,100,105,99,116,105,111,110,83,99,104,101,109,101,78,111,114,109,97,108,79,99,116,97,104,101,100,114,111,110,68,101,99,111,100,105,110,103,84,114,97,110,115,102,111,114,109,73,105,69,69,78,83,95,50,52,77,101,115,104,80,114,101,100,105,99,116,105,111,110,83,99,104,101,109,101,68,97,116,97,73,78,83,95,49,49,67,111,114,110,101,114,84,97,98,108,101,69,69,69,69,69,0,78,53,100,114,97,99,111,52,53,77,101,115,104,80,114,101,100,105,99,116,105,111,110,83,99,104,101,109,101,77,117,108,116,105,80,97,114,97,108,108,101,108,111,103,114,97,109,68,101,99,111,100,101,114,73,105,78,83,95,52,57,80,114,101,100,105,99,116,105,111,110,83,99,104,101,109,101,78,111,114,109,97,108,79,99,116,97,104,101,100,114,111,110,68,101,99,111,100,105,110,103,84,114,97,110,115,102,111,114,109,73,105,69,69,78,83,95,50,52,77,101,115,104,80,114,101,100,105,99,116,105,111,110,83,99,104,101,109,101,68,97,116,97,73,78,83,95,49,49,67,111,114,110,101,114,84,97,98,108,101,69,69,69,69,69,0,78,53,100,114,97,99,111,52,48,77,101,115,104,80,114,101,100,105,99,116,105,111,110,83,99,104,101,109,101,80,97,114,97,108,108,101,108,111,103,114,97,109,68,101,99,111,100,101,114,73,105,78,83,95,52,57,80,114,101,100,105,99,116,105,111,110,83,99,104,101,109,101,78,111,114,109,97,108,79,99,116,97,104,101,100,114,111,110,68,101,99,111,100,105,110,103,84,114,97,110,115,102,111,114,109,73,105,69,69,78,83,95,50,52,77,101,115,104,80,114,101,100,105,99,116,105,111,110,83,99,104,101,109,101,68,97,116,97,73,78,83,95,49,49,67,111,114,110,101,114,84,97,98,108,101,69,69,69,69,69,0,78,53,100,114,97,99,111,52,50,77,101,115,104,80,114,101,100,105,99,116,105,111,110,83,99,104,101,109,101,71,101,111,109,101,116,114,105,99,78,111,114,109,97,108,68,101,99,111,100,101,114,73,105,78,83,95,52,57,80,114,101,100,105,99,116,105,111,110,83,99,104,101,109,101,78,111,114,109,97,108,79,99,116,97,104,101,100,114,111,110,68,101,99,111,100,105,110,103,84,114,97,110,115,102,111,114,109,73,105,69,69,78,83,95,50,52,77,101,115,104,80,114,101,100,105,99,116,105,111,110,83,99,104,101,109,101,68,97,116,97,73,78,83,95,50,52,77,101,115,104,65,116,116,114,105,98,117,116,101,67,111,114,110,101,114,84,97,98,108,101,69,69,69,69,69,0,78,53,100,114,97,99,111,50,55,77,101,115,104,80,114,101,100,105,99,116,105,111,110,83,99,104,101,109,101,68,101,99,111,100,101,114,73,105,78,83,95,52,57,80,114,101,100,105,99,116,105,111,110,83,99,104,101,109,101,78,111,114,109,97,108,79,99,116,97,104,101,100,114,111,110,68,101,99,111,100,105,110,103,84,114,97,110,115,102,111,114,109,73,105,69,69,78,83,95,50,52,77,101,115,104,80,114,101,100,105,99,116,105,111,110,83,99,104,101,109,101,68,97,116,97,73,78,83,95,50,52,77,101,115,104,65,116,116,114,105,98,117,116,101,67,111,114,110,101,114,84,97,98,108,101,69,69,69,69,69,0,78,53,100,114,97,99,111,52,52,77,101,115,104,80,114,101,100,105,99,116,105,111,110,83,99,104,101,109,101,84,101,120,67,111,111,114,100,115,80,111,114,116,97,98,108,101,68,101,99,111,100,101,114,73,105,78,83,95,52,57,80,114,101,100,105,99,116,105,111,110,83,99,104,101,109,101,78,111,114,109,97,108,79,99,116,97,104,101,100,114,111,110,68,101,99,111,100,105,110,103,84,114,97,110,115,102,111,114,109,73,105,69,69,78,83,95,50,52,77,101,115,104,80,114,101,100,105,99,116,105,111,110,83,99,104,101,109,101,68,97,116,97,73,78,83,95,50,52,77,101,115,104,65,116,116,114,105,98,117,116,101,67,111,114,110,101,114,84,97,98,108,101,69,69,69,69,69,0,78,53,100,114,97,99,111,51,54,77,101,115,104,80,114,101,100,105,99,116,105,111,110,83,99,104,101,109,101,84,101,120,67,111,111,114,100,115,68,101,99,111,100,101,114,73,105,78,83,95,52,57,80,114,101,100,105,99,116,105,111,110,83,99,104,101,109,101,78,111,114,109,97,108,79,99,116,97,104,101,100,114,111,110,68,101,99,111,100,105,110,103,84,114,97,110,115,102,111,114,109,73,105,69,69,78,83,95,50,52,77,101,115,104,80,114,101,100,105,99,116,105,111,110,83,99,104,101,109,101,68,97,116,97,73,78,83,95,50,52,77,101,115,104,65,116,116,114,105,98,117,116,101,67,111,114,110,101,114,84,97,98,108,101,69,69,69,69,69,0,78,53,100,114,97,99,111,53,54,77,101,115,104,80,114,101,100,105,99,116,105,111,110,83,99,104,101,109,101,67,111,110,115,116,114,97,105,110,101,100,77,117,108,116,105,80,97,114,97,108,108,101,108,111,103,114,97,109,68,101,99,111,100,101,114,73,105,78,83,95,52,57,80,114,101,100,105,99,116,105,111,110,83,99,104,101,109,101,78,111,114,109,97,108,79,99,116,97,104,101,100,114,111,110,68,101,99,111,100,105,110,103,84,114,97,110,115,102,111,114,109,73,105,69,69,78,83,95,50,52,77,101,115,104,80,114,101,100,105,99,116,105,111,110,83,99,104,101,109,101,68,97,116,97,73,78,83,95,50,52,77,101,115,104,65,116,116,114,105,98,117,116,101,67,111,114,110,101,114,84,97,98,108,101,69,69,69,69,69,0,78,53,100,114,97,99,111,52,53,77,101,115,104,80,114,101,100,105,99,116,105,111,110,83,99,104,101,109,101,77,117,108,116,105,80,97,114,97,108,108,101,108,111,103,114,97,109,68,101,99,111,100,101,114,73,105,78,83,95,52,57,80,114,101,100,105,99,116,105,111,110,83,99,104,101,109,101,78,111,114,109,97,108,79,99,116,97,104,101,100,114,111,110,68,101,99,111,100,105,110,103,84,114,97,110,115,102,111,114,109,73,105,69,69,78,83,95,50,52,77,101,115,104,80,114,101,100,105,99,116,105,111,110,83,99,104,101,109,101,68,97,116,97,73,78,83,95,50,52,77,101,115,104,65,116,116,114,105,98,117,116,101,67,111,114,110,101,114,84,97,98,108,101,69,69,69,69,69,0,78,53,100,114,97,99,111,52,48,77,101,115,104,80,114,101,100,105,99,116,105,111,110,83,99,104,101,109,101,80,97,114,97,108,108,101,108,111,103,114,97,109,68,101,99,111,100,101,114,73,105,78,83,95,52,57,80,114,101,100,105,99,116,105,111,110,83,99,104,101,109,101,78,111,114,109,97,108,79,99,116,97,104,101,100,114,111,110,68,101,99,111,100,105,110,103,84,114,97,110,115,102,111,114,109,73,105,69,69,78,83,95,50,52,77,101,115,104,80,114,101,100,105,99,116,105,111,110,83,99,104,101,109,101,68,97,116,97,73,78,83,95,50,52,77,101,115,104,65,116,116,114,105,98,117,116,101,67,111,114,110,101,114,84,97,98,108,101,69,69,69,69,69,0,78,53,100,114,97,99,111,52,57,80,114,101,100,105,99,116,105,111,110,83,99,104,101,109,101,78,111,114,109,97,108,79,99,116,97,104,101,100,114,111,110,68,101,99,111,100,105,110,103,84,114,97,110,115,102,111,114,109,73,105,69,69,0,78,53,100,114,97,99,111,51,50,83,101,113,117,101,110,116,105,97,108,78,111,114,109,97,108,65,116,116,114,105,98,117,116,101,68,101,99,111,100,101,114,69,0,78,53,100,114,97,99,111,51,55,83,101,113,117,101,110,116,105,97,108,65,116,116,114,105,98,117,116,101,68,101,99,111,100,101,114,115,67,111,110,116,114,111,108,108,101,114,69,0,78,53,100,114,97,99,111,49,53,76,105,110,101,97,114,83,101,113,117,101,110,99,101,114,69,0,78,53,100,114,97,99,111,49,53,80,111,105,110,116,115,83,101,113,117,101,110,99,101,114,69,0,78,53,100,114,97,99,111,50,55,80,111,105,110,116,67,108,111,117,100,83,101,113,117,101,110,116,105,97,108,68,101,99,111,100,101,114,69,0,78,53,100,114,97,99,111,50,51,80,111,105,110,116,67,108,111,117,100,75,100,84,114,101,101,68,101,99,111,100,101,114,69,0,40,48,41,32,60,61,32,40,97,116,116,95,105,100,41,0,46,47,115,114,99,47,100,114,97,99,111,47,112,111,105,110,116,95,99,108,111,117,100,47,112,111,105,110,116,95,99,108,111,117,100,46,104,0,97,116,116,114,105,98,117,116,101,0,40,97,116,116,95,105,100,41,32,60,32,40,115,116,97,116,105,99,95,99,97,115,116,60,105,110,116,51,50,95,116,62,40,97,116,116,114,105,98,117,116,101,115,95,46,115,105,122,101,40,41,41,41,0,75,100,84,114,101,101,65,116,116,114,105,98,117,116,101,115,68,101,99,111,100,101,114,58,32,99,111,109,112,114,101,115,115,105,111,110,32,108,101,118,101,108,32,37,105,32,110,111,116,32,115,117,112,112,111,114,116,101,100,46,10,0,40,118,97,108,46,115,105,122,101,40,41,41,32,61,61,32,40,100,105,109,101,110,115,105,111,110,95,116,41,0,115,114,99,47,100,114,97,99,111,47,99,111,109,112,114,101,115,115,105,111,110,47,97,116,116,114,105,98,117,116,101,115,47,107,100,95,116,114,101,101,95,97,116,116,114,105,98,117,116,101,115,95,100,101,99,111,100,101,114,46,99,99,0,111,112,101,114,97,116,111,114,61,0,77,101,116,104,111,100,32,110,111,116,32,115,117,112,112,111,114,116,101,100,46,32,10,0,86,101,114,115,105,111,110,32,110,111,116,32,115,117,112,112,111,114,116,101,100,46,32,10,0,40,105,110,102,111,46,114,97,110,103,101,41,32,62,61,32,40,48,41,0,46,47,115,114,99,47,100,114,97,99,111,47,99,111,109,112,114,101,115,115,105,111,110,47,112,111,105,110,116,95,99,108,111,117,100,47,97,108,103,111,114,105,116,104,109,115,47,113,117,97,110,116,105,122,101,95,112,111,105,110,116,115,95,51,46,104,0,68,101,113,117,97,110,116,105,122,101,80,111,105,110,116,115,51,0,78,53,100,114,97,99,111,50,51,75,100,84,114,101,101,65,116,116,114,105,98,117,116,101,115,68,101,99,111,100,101,114,69,0,70,108,111,97,116,80,111,105,110,116,115,84,114,101,101,68,101,99,111,100,101,114,58,32,99,111,109,112,114,101,115,115,105,111,110,32,108,101,118,101,108,32,37,105,32,110,111,116,32,115,117,112,112,111,114,116,101,100,46,10,0,40,116,114,117,101,41,32,61,61,32,40,110,117,109,95,114,101,109,97,105,110,105,110,103,95,112,111,105,110,116,115,32,33,61,32,48,41,0,46,47,115,114,99,47,100,114,97,99,111,47,99,111,109,112,114,101,115,115,105,111,110,47,112,111,105,110,116,95,99,108,111,117,100,47,97,108,103,111,114,105,116,104,109,115,47,100,121,110,97,109,105,99,95,105,110,116,101,103,101,114,95,112,111,105,110,116,115,95,107,100,95,116,114,101,101,95,100,101,99,111,100,101,114,46,104,0,68,101,99,111,100,101,73,110,116,101,114,110,97,108,0,40,116,114,117,101,41,32,61,61,32,40,110,98,105,116,115,32,60,61,32,51,50,41,0,46,47,115,114,99,47,100,114,97,99,111,47,99,111,114,101,47,98,105,116,95,99,111,100,101,114,115,47,100,105,114,101,99,116,95,98,105,116,95,100,101,99,111,100,101,114,46,104,0,68,101,99,111,100,101,76,101,97,115,116,83,105,103,110,105,102,105,99,97,110,116,66,105,116,115,51,50,0,40,116,114,117,101,41,32,61,61,32,40,110,98,105,116,115,32,62,32,48,41,0,78,53,100,114,97,99,111,50,49,77,101,115,104,83,101,113,117,101,110,116,105,97,108,68,101,99,111,100,101,114,69,0,78,53,100,114,97,99,111,50,50,77,101,115,104,69,100,103,101,66,114,101,97,107,101,114,68,101,99,111,100,101,114,69,0,78,53,100,114,97,99,111,50,57,67,111,114,110,101,114,84,97,98,108,101,84,114,97,118,101,114,115,97,108,80,114,111,99,101,115,115,111,114,73,78,83,95,50,52,77,101,115,104,65,116,116,114,105,98,117,116,101,67,111,114,110,101,114,84,97,98,108,101,69,69,69,0,40,48,41,32,60,61,32,40,102,97,99,101,95,105,100,46,118,97,108,117,101,40,41,41,0,46,47,115,114,99,47,100,114,97,99,111,47,109,101,115,104,47,109,101,115,104,46,104,0,102,97,99,101,0,40,102,97,99,101,95,105,100,46,118,97,108,117,101,40,41,41,32,60,32,40,115,116,97,116,105,99,95,99,97,115,116,60,105,110,116,62,40,102,97,99,101,115,95,46,115,105,122,101,40,41,41,41,0,33,105,100,101,110,116,105,116,121,95,109,97,112,112,105,110,103,95,0,46,47,115,114,99,47,100,114,97,99,111,47,97,116,116,114,105,98,117,116,101,115,47,112,111,105,110,116,95,97,116,116,114,105,98,117,116,101,46,104,0,83,101,116,80,111,105,110,116,77,97,112,69,110,116,114,121,0,78,53,100,114,97,99,111,50,50,77,101,115,104,84,114,97,118,101,114,115,97,108,83,101,113,117,101,110,99,101,114,73,78,83,95,50,48,69,100,103,101,66,114,101,97,107,101,114,84,114,97,118,101,114,115,101,114,73,78,83,95,50,57,67,111,114,110,101,114,84,97,98,108,101,84,114,97,118,101,114,115,97,108,80,114,111,99,101,115,115,111,114,73,78,83,95,50,52,77,101,115,104,65,116,116,114,105,98,117,116,101,67,111,114,110,101,114,84,97,98,108,101,69,69,69,78,83,95,51,54,77,101,115,104,65,116,116,114,105,98,117,116,101,73,110,100,105,99,101,115,69,110,99,111,100,105,110,103,79,98,115,101,114,118,101,114,73,83,51,95,69,69,78,83,95,49,57,69,100,103,101,66,114,101,97,107,101,114,79,98,115,101,114,118,101,114,69,69,69,69,69,0,78,53,100,114,97,99,111,50,57,67,111,114,110,101,114,84,97,98,108,101,84,114,97,118,101,114,115,97,108,80,114,111,99,101,115,115,111,114,73,78,83,95,49,49,67,111,114,110,101,114,84,97,98,108,101,69,69,69,0,78,53,100,114,97,99,111,50,50,77,101,115,104,84,114,97,118,101,114,115,97,108,83,101,113,117,101,110,99,101,114,73,78,83,95,50,53,80,114,101,100,105,99,116,105,111,110,68,101,103,114,101,101,84,114,97,118,101,114,115,101,114,73,78,83,95,50,57,67,111,114,110,101,114,84,97,98,108,101,84,114,97,118,101,114,115,97,108,80,114,111,99,101,115,115,111,114,73,78,83,95,49,49,67,111,114,110,101,114,84,97,98,108,101,69,69,69,78,83,95,51,54,77,101,115,104,65,116,116,114,105,98,117,116,101,73,110,100,105,99,101,115,69,110,99,111,100,105,110,103,79,98,115,101,114,118,101,114,73,83,51,95,69,69,69,69,69,69,0,78,53,100,114,97,99,111,50,50,77,101,115,104,84,114,97,118,101,114,115,97,108,83,101,113,117,101,110,99,101,114,73,78,83,95,50,48,69,100,103,101,66,114,101,97,107,101,114,84,114,97,118,101,114,115,101,114,73,78,83,95,50,57,67,111,114,110,101,114,84,97,98,108,101,84,114,97,118,101,114,115,97,108,80,114,111,99,101,115,115,111,114,73,78,83,95,49,49,67,111,114,110,101,114,84,97,98,108,101,69,69,69,78,83,95,51,54,77,101,115,104,65,116,116,114,105,98,117,116,101,73,110,100,105,99,101,115,69,110,99,111,100,105,110,103,79,98,115,101,114,118,101,114,73,83,51,95,69,69,78,83,95,49,57,69,100,103,101,66,114,101,97,107,101,114,79,98,115,101,114,118,101,114,69,69,69,69,69,0,78,53,100,114,97,99,111,50,54,77,101,115,104,69,100,103,101,66,114,101,97,107,101,114,68,101,99,111,100,101,114,73,109,112,108,73,78,83,95,51,49,77,101,115,104,69,100,103,101,66,114,101,97,107,101,114,84,114,97,118,101,114,115,97,108,68,101,99,111,100,101,114,69,69,69,0,78,53,100,114,97,99,111,51,53,77,101,115,104,69,100,103,101,66,114,101,97,107,101,114,68,101,99,111,100,101,114,73,109,112,108,73,110,116,101,114,102,97,99,101,69,0,78,53,100,114,97,99,111,50,54,77,101,115,104,69,100,103,101,66,114,101,97,107,101,114,68,101,99,111,100,101,114,73,109,112,108,73,78,83,95,52,49,77,101,115,104,69,100,103,101,66,114,101,97,107,101,114,84,114,97,118,101,114,115,97,108,80,114,101,100,105,99,116,105,118,101,68,101,99,111,100,101,114,69,69,69,0,78,53,100,114,97,99,111,50,54,77,101,115,104,69,100,103,101,66,114,101,97,107,101,114,68,101,99,111,100,101,114,73,109,112,108,73,78,83,95,51,56,77,101,115,104,69,100,103,101,66,114,101,97,107,101,114,84,114,97,118,101,114,115,97,108,86,97,108,101,110,99,101,68,101,99,111,100,101,114,69,69,69,0,85,110,115,117,112,112,111,114,116,101,100,32,101,110,99,111,100,105,110,103,32,109,101,116,104,111,100,46,0,73,110,112,117,116,32,105,115,32,110,111,116,32,97,32,109,101,115,104,46,0,73,110,112,117,116,32,105,115,32,110,111,116,32,97,32,112,111,105,110,116,32,99,108,111,117,100,46,0,115,107,105,112,95,97,116,116,114,105,98,117,116,101,95,116,114,97,110,115,102,111,114,109,0,17,0,10,0,17,17,17,0,0,0,0,5,0,0,0,0,0,0,9,0,0,0,0,11,0,0,0,0,0,0,0,0,17,0,15,10,17,17,17,3,10,7,0,1,19,9,11,11,0,0,9,6,11,0,0,11,0,6,17,0,0,0,17,17,17,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,11,0,0,0,0,0,0,0,0,17,0,10,10,17,17,17,0,10,0,0,2,0,9,11,0,0,0,9,0,11,0,0,11,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,12,0,0,0,0,0,0,0,0,0,0,0,12,0,0,0,0,12,0,0,0,0,9,12,0,0,0,0,0,12,0,0,12,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,14,0,0,0,0,0,0,0,0,0,0,0,13,0,0,0,4,13,0,0,0,0,9,14,0,0,0,0,0,14,0,0,14,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,16,0,0,0,0,0,0,0,0,0,0,0,15,0,0,0,0,15,0,0,0,0,9,16,0,0,0,0,0,16,0,0,16,0,0,18,0,0,0,18,18,18,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,18,0,0,0,18,18,18,0,0,0,0,0,0,9,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,11,0,0,0,0,0,0,0,0,0,0,0,10,0,0,0,0,10,0,0,0,0,9,11,0,0,0,0,0,11,0,0,11,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,12,0,0,0,0,0,0,0,0,0,0,0,12,0,0,0,0,12,0,0,0,0,9,12,0,0,0,0,0,12,0,0,12,0,0,45,43,32,32,32,48,88,48,120,0,40,110,117,108,108,41,0,45,48,88,43,48,88,32,48,88,45,48,120,43,48,120,32,48,120,0,105,110,102,0,73,78,70,0,110,97,110,0,78,65,78,0,48,49,50,51,52,53,54,55,56,57,65,66,67,68,69,70,46,0,84,33,34,25,13,1,2,3,17,75,28,12,16,4,11,29,18,30,39,104,110,111,112,113,98,32,5,6,15,19,20,21,26,8,22,7,40,36,23,24,9,10,14,27,31,37,35,131,130,125,38,42,43,60,61,62,63,67,71,74,77,88,89,90,91,92,93,94,95,96,97,99,100,101,102,103,105,106,107,108,114,115,116,121,122,123,124,0,73,108,108,101,103,97,108,32,98,121,116,101,32,115,101,113,117,101,110,99,101,0,68,111,109,97,105,110,32,101,114,114,111,114,0,82,101,115,117,108,116,32,110,111,116,32,114,101,112,114,101,115,101,110,116,97,98,108,101,0,78,111,116,32,97,32,116,116,121,0,80,101,114,109,105,115,115,105,111,110,32,100,101,110,105,101,100,0,79,112,101,114,97,116,105,111,110,32,110,111,116,32,112,101,114,109,105,116,116,101,100,0,78,111,32,115,117,99,104,32,102,105,108,101,32,111,114,32,100,105,114,101,99,116,111,114,121,0,78,111,32,115,117,99,104,32,112,114,111,99,101,115,115,0,70,105,108,101,32,101,120,105,115,116,115,0,86,97,108,117,101,32,116,111,111,32,108,97,114,103,101,32,102,111,114,32,100,97,116,97,32,116,121,112,101,0,78,111,32,115,112,97,99,101,32,108,101,102,116,32,111,110,32,100,101,118,105,99,101,0,79,117,116,32,111,102,32,109,101,109,111,114,121,0,82,101,115,111,117,114,99,101,32,98,117,115,121,0,73,110,116,101,114,114,117,112,116,101,100,32,115,121,115,116,101,109,32,99,97,108,108,0,82,101,115,111,117,114,99,101,32,116,101,109,112,111,114,97,114,105,108,121,32,117,110,97,118,97,105,108,97,98,108,101,0,73,110,118,97,108,105,100,32,115,101,101,107,0,67,114,111,115,115,45,100,101,118,105,99,101,32,108,105,110,107,0,82,101,97,100,45,111,110,108,121,32,102,105,108,101,32,115,121,115,116,101,109,0,68,105,114,101,99,116,111,114,121,32,110,111,116,32,101,109,112,116,121,0,67,111,110,110,101,99,116,105,111,110,32,114,101,115,101,116,32,98,121,32,112,101,101,114,0,79,112,101,114,97,116,105,111,110,32,116,105,109,101,100,32,111,117,116,0,67,111,110,110,101,99,116,105,111,110,32,114,101,102,117,115,101,100,0,72,111,115,116,32,105,115,32,100,111,119,110,0,72,111,115,116,32,105,115,32,117,110,114,101,97,99,104,97,98,108,101,0,65,100,100,114,101,115,115,32,105,110,32,117,115,101,0,66,114,111,107,101,110,32,112,105,112,101,0,73,47,79,32,101,114,114,111,114,0,78,111,32,115,117,99,104,32,100,101,118,105,99,101,32,111,114,32,97,100,100,114,101,115,115,0,66,108,111,99,107,32,100,101],"i8",ALLOC_NONE,Runtime.GLOBAL_BASE+10240);allocate([118,105,99,101,32,114,101,113,117,105,114,101,100,0,78,111,32,115,117,99,104,32,100,101,118,105,99,101,0,78,111,116,32,97,32,100,105,114,101,99,116,111,114,121,0,73,115,32,97,32,100,105,114,101,99,116,111,114,121,0,84,101,120,116,32,102,105,108,101,32,98,117,115,121,0,69,120,101,99,32,102,111,114,109,97,116,32,101,114,114,111,114,0,73,110,118,97,108,105,100,32,97,114,103,117,109,101,110,116,0,65,114,103,117,109,101,110,116,32,108,105,115,116,32,116,111,111,32,108,111,110,103,0,83,121,109,98,111,108,105,99,32,108,105,110,107,32,108,111,111,112,0,70,105,108,101,110,97,109,101,32,116,111,111,32,108,111,110,103,0,84,111,111,32,109,97,110,121,32,111,112,101,110,32,102,105,108,101,115,32,105,110,32,115,121,115,116,101,109,0,78,111,32,102,105,108,101,32,100,101,115,99,114,105,112,116,111,114,115,32,97,118,97,105,108,97,98,108,101,0,66,97,100,32,102,105,108,101,32,100,101,115,99,114,105,112,116,111,114,0,78,111,32,99,104,105,108,100,32,112,114,111,99,101,115,115,0,66,97,100,32,97,100,100,114,101,115,115,0,70,105,108,101,32,116,111,111,32,108,97,114,103,101,0,84,111,111,32,109,97,110,121,32,108,105,110,107,115,0,78,111,32,108,111,99,107,115,32,97,118,97,105,108,97,98,108,101,0,82,101,115,111,117,114,99,101,32,100,101,97,100,108,111,99,107,32,119,111,117,108,100,32,111,99,99,117,114,0,83,116,97,116,101,32,110,111,116,32,114,101,99,111,118,101,114,97,98,108,101,0,80,114,101,118,105,111,117,115,32,111,119,110,101,114,32,100,105,101,100,0,79,112,101,114,97,116,105,111,110,32,99,97,110,99,101,108,101,100,0,70,117,110,99,116,105,111,110,32,110,111,116,32,105,109,112,108,101,109,101,110,116,101,100,0,78,111,32,109,101,115,115,97,103,101,32,111,102,32,100,101,115,105,114,101,100,32,116,121,112,101,0,73,100,101,110,116,105,102,105,101,114,32,114,101,109,111,118,101,100,0,68,101,118,105,99,101,32,110,111,116,32,97,32,115,116,114,101,97,109,0,78,111,32,100,97,116,97,32,97,118,97,105,108,97,98,108,101,0,68,101,118,105,99,101,32,116,105,109,101,111,117,116,0,79,117,116,32,111,102,32,115,116,114,101,97,109,115,32,114,101,115,111,117,114,99,101,115,0,76,105,110,107,32,104,97,115,32,98,101,101,110,32,115,101,118,101,114,101,100,0,80,114,111,116,111,99,111,108,32,101,114,114,111,114,0,66,97,100,32,109,101,115,115,97,103,101,0,70,105,108,101,32,100,101,115,99,114,105,112,116,111,114,32,105,110,32,98,97,100,32,115,116,97,116,101,0,78,111,116,32,97,32,115,111,99,107,101,116,0,68,101,115,116,105,110,97,116,105,111,110,32,97,100,100,114,101,115,115,32,114,101,113,117,105,114,101,100,0,77,101,115,115,97,103,101,32,116,111,111,32,108,97,114,103,101,0,80,114,111,116,111,99,111,108,32,119,114,111,110,103,32,116,121,112,101,32,102,111,114,32,115,111,99,107,101,116,0,80,114,111,116,111,99,111,108,32,110,111,116,32,97,118,97,105,108,97,98,108,101,0,80,114,111,116,111,99,111,108,32,110,111,116,32,115,117,112,112,111,114,116,101,100,0,83,111,99,107,101,116,32,116,121,112,101,32,110,111,116,32,115,117,112,112,111,114,116,101,100,0,78,111,116,32,115,117,112,112,111,114,116,101,100,0,80,114,111,116,111,99,111,108,32,102,97,109,105,108,121,32,110,111,116,32,115,117,112,112,111,114,116,101,100,0,65,100,100,114,101,115,115,32,102,97,109,105,108,121,32,110,111,116,32,115,117,112,112,111,114,116,101,100,32,98,121,32,112,114,111,116,111,99,111,108,0,65,100,100,114,101,115,115,32,110,111,116,32,97,118,97,105,108,97,98,108,101,0,78,101,116,119,111,114,107,32,105,115,32,100,111,119,110,0,78,101,116,119,111,114,107,32,117,110,114,101,97,99,104,97,98,108,101,0,67,111,110,110,101,99,116,105,111,110,32,114,101,115,101,116,32,98,121,32,110,101,116,119,111,114,107,0,67,111,110,110,101,99,116,105,111,110,32,97,98,111,114,116,101,100,0,78,111,32,98,117,102,102,101,114,32,115,112,97,99,101,32,97,118,97,105,108,97,98,108,101,0,83,111,99,107,101,116,32,105,115,32,99,111,110,110,101,99,116,101,100,0,83,111,99,107,101,116,32,110,111,116,32,99,111,110,110,101,99,116,101,100,0,67,97,110,110,111,116,32,115,101,110,100,32,97,102,116,101,114,32,115,111,99,107,101,116,32,115,104,117,116,100,111,119,110,0,79,112,101,114,97,116,105,111,110,32,97,108,114,101,97,100,121,32,105,110,32,112,114,111,103,114,101,115,115,0,79,112,101,114,97,116,105,111,110,32,105,110,32,112,114,111,103,114,101,115,115,0,83,116,97,108,101,32,102,105,108,101,32,104,97,110,100,108,101,0,82,101,109,111,116,101,32,73,47,79,32,101,114,114,111,114,0,81,117,111,116,97,32,101,120,99,101,101,100,101,100,0,78,111,32,109,101,100,105,117,109,32,102,111,117,110,100,0,87,114,111,110,103,32,109,101,100,105,117,109,32,116,121,112,101,0,78,111,32,101,114,114,111,114,32,105,110,102,111,114,109,97,116,105,111,110,0,0,33,34,118,101,99,116,111,114,32,108,101,110,103,116,104,95,101,114,114,111,114,34,0,47,117,115,114,47,108,111,99,97,108,47,103,111,111,103,108,101,47,104,111,109,101,47,111,115,116,97,118,97,47,100,101,118,101,47,101,109,115,100,107,95,119,97,115,109,47,101,109,115,100,107,47,101,109,115,99,114,105,112,116,101,110,47,105,110,99,111,109,105,110,103,47,115,121,115,116,101,109,47,105,110,99,108,117,100,101,47,108,105,98,99,120,120,47,118,101,99,116,111,114,0,33,34,118,101,99,116,111,114,32,111,117,116,95,111,102,95,114,97,110,103,101,34,0,33,34,98,97,115,105,99,95,115,116,114,105,110,103,32,108,101,110,103,116,104,95,101,114,114,111,114,34,0,47,117,115,114,47,108,111,99,97,108,47,103,111,111,103,108,101,47,104,111,109,101,47,111,115,116,97,118,97,47,100,101,118,101,47,101,109,115,100,107,95,119,97,115,109,47,101,109,115,100,107,47,101,109,115,99,114,105,112,116,101,110,47,105,110,99,111,109,105,110,103,47,115,121,115,116,101,109,47,105,110,99,108,117,100,101,47,108,105,98,99,120,120,47,115,116,114,105,110,103,0,95,95,116,104,114,111,119,95,108,101,110,103,116,104,95,101,114,114,111,114,0,33,34,98,97,115,105,99,95,115,116,114,105,110,103,32,111,117,116,95,111,102,95,114,97,110,103,101,34,0,95,95,116,104,114,111,119,95,111,117,116,95,111,102,95,114,97,110,103,101,0,116,101,114,109,105,110,97,116,105,110,103,32,119,105,116,104,32,37,115,32,101,120,99,101,112,116,105,111,110,32,111,102,32,116,121,112,101,32,37,115,58,32,37,115,0,116,101,114,109,105,110,97,116,105,110,103,32,119,105,116,104,32,37,115,32,101,120,99,101,112,116,105,111,110,32,111,102,32,116,121,112,101,32,37,115,0,116,101,114,109,105,110,97,116,105,110,103,32,119,105,116,104,32,37,115,32,102,111,114,101,105,103,110,32,101,120,99,101,112,116,105,111,110,0,116,101,114,109,105,110,97,116,105,110,103,0,117,110,99,97,117,103,104,116,0,83,116,57,101,120,99,101,112,116,105,111,110,0,78,49,48,95,95,99,120,120,97,98,105,118,49,49,54,95,95,115,104,105,109,95,116,121,112,101,95,105,110,102,111,69,0,83,116,57,116,121,112,101,95,105,110,102,111,0,78,49,48,95,95,99,120,120,97,98,105,118,49,50,48,95,95,115,105,95,99,108,97,115,115,95,116,121,112,101,95,105,110,102,111,69,0,78,49,48,95,95,99,120,120,97,98,105,118,49,49,55,95,95,99,108,97,115,115,95,116,121,112,101,95,105,110,102,111,69,0,112,116,104,114,101,97,100,95,111,110,99,101,32,102,97,105,108,117,114,101,32,105,110,32,95,95,99,120,97,95,103,101,116,95,103,108,111,98,97,108,115,95,102,97,115,116,40,41,0,99,97,110,110,111,116,32,99,114,101,97,116,101,32,112,116,104,114,101,97,100,32,107,101,121,32,102,111,114,32,95,95,99,120,97,95,103,101,116,95,103,108,111,98,97,108,115,40,41,0,99,97,110,110,111,116,32,122,101,114,111,32,111,117,116,32,116,104,114,101,97,100,32,118,97,108,117,101,32,102,111,114,32,95,95,99,120,97,95,103,101,116,95,103,108,111,98,97,108,115,40,41,0,116,101,114,109,105,110,97,116,101,95,104,97,110,100,108,101,114,32,117,110,101,120,112,101,99,116,101,100,108,121,32,114,101,116,117,114,110,101,100,0,115,116,100,58,58,98,97,100,95,97,108,108,111,99,0,83,116,57,98,97,100,95,97,108,108,111,99,0,78,49,48,95,95,99,120,120,97,98,105,118,49,49,57,95,95,112,111,105,110,116,101,114,95,116,121,112,101,95,105,110,102,111,69,0,78,49,48,95,95,99,120,120,97,98,105,118,49,49,55,95,95,112,98,97,115,101,95,116,121,112,101,95,105,110,102,111,69,0],"i8",ALLOC_NONE,Runtime.GLOBAL_BASE+20480);var tempDoublePtr=STATICTOP;STATICTOP+=16;Module["_i64Subtract"]=_i64Subtract;function ___assert_fail(condition,filename,line,func){ABORT=true;throw"Assertion failed: "+Pointer_stringify(condition)+", at: "+[filename?Pointer_stringify(filename):"unknown filename",line,func?Pointer_stringify(func):"unknown function"]+" at "+stackTrace()}function __ZSt18uncaught_exceptionv(){return!!__ZSt18uncaught_exceptionv.uncaught_exception}var EXCEPTIONS={last:0,caught:[],infos:{},deAdjust:(function(adjusted){if(!adjusted||EXCEPTIONS.infos[adjusted])return adjusted;for(var ptr in EXCEPTIONS.infos){var info=EXCEPTIONS.infos[ptr];if(info.adjusted===adjusted){return ptr}}return adjusted}),addRef:(function(ptr){if(!ptr)return;var info=EXCEPTIONS.infos[ptr];info.refcount++}),decRef:(function(ptr){if(!ptr)return;var info=EXCEPTIONS.infos[ptr];assert(info.refcount>0);info.refcount--;if(info.refcount===0&&!info.rethrown){if(info.destructor){Module["dynCall_vi"](info.destructor,ptr)}delete EXCEPTIONS.infos[ptr];___cxa_free_exception(ptr)}}),clearRef:(function(ptr){if(!ptr)return;var info=EXCEPTIONS.infos[ptr];info.refcount=0})};function ___resumeException(ptr){if(!EXCEPTIONS.last){EXCEPTIONS.last=ptr}throw ptr+" - Exception catching is disabled, this exception cannot be caught. Compile with -s DISABLE_EXCEPTION_CATCHING=0 or DISABLE_EXCEPTION_CATCHING=2 to catch."}function ___cxa_find_matching_catch(){var thrown=EXCEPTIONS.last;if(!thrown){return(Runtime.setTempRet0(0),0)|0}var info=EXCEPTIONS.infos[thrown];var throwntype=info.type;if(!throwntype){return(Runtime.setTempRet0(0),thrown)|0}var typeArray=Array.prototype.slice.call(arguments);var pointer=Module["___cxa_is_pointer_type"](throwntype);if(!___cxa_find_matching_catch.buffer)___cxa_find_matching_catch.buffer=_malloc(4);HEAP32[___cxa_find_matching_catch.buffer>>2]=thrown;thrown=___cxa_find_matching_catch.buffer;for(var i=0;i>2];info.adjusted=thrown;return(Runtime.setTempRet0(typeArray[i]),thrown)|0}}thrown=HEAP32[thrown>>2];return(Runtime.setTempRet0(throwntype),thrown)|0}function ___cxa_throw(ptr,type,destructor){EXCEPTIONS.infos[ptr]={ptr:ptr,adjusted:ptr,type:type,destructor:destructor,refcount:0,caught:false,rethrown:false};EXCEPTIONS.last=ptr;if(!("uncaught_exception"in __ZSt18uncaught_exceptionv)){__ZSt18uncaught_exceptionv.uncaught_exception=1}else{__ZSt18uncaught_exceptionv.uncaught_exception++}throw ptr+" - Exception catching is disabled, this exception cannot be caught. Compile with -s DISABLE_EXCEPTION_CATCHING=0 or DISABLE_EXCEPTION_CATCHING=2 to catch."}Module["_memset"]=_memset;Module["_bitshift64Shl"]=_bitshift64Shl;function _abort(){Module["abort"]()}function _pthread_once(ptr,func){if(!_pthread_once.seen)_pthread_once.seen={};if(ptr in _pthread_once.seen)return;Module["dynCall_v"](func);_pthread_once.seen[ptr]=1}Module["_i64Add"]=_i64Add;var cttz_i8=allocate([8,0,1,0,2,0,1,0,3,0,1,0,2,0,1,0,4,0,1,0,2,0,1,0,3,0,1,0,2,0,1,0,5,0,1,0,2,0,1,0,3,0,1,0,2,0,1,0,4,0,1,0,2,0,1,0,3,0,1,0,2,0,1,0,6,0,1,0,2,0,1,0,3,0,1,0,2,0,1,0,4,0,1,0,2,0,1,0,3,0,1,0,2,0,1,0,5,0,1,0,2,0,1,0,3,0,1,0,2,0,1,0,4,0,1,0,2,0,1,0,3,0,1,0,2,0,1,0,7,0,1,0,2,0,1,0,3,0,1,0,2,0,1,0,4,0,1,0,2,0,1,0,3,0,1,0,2,0,1,0,5,0,1,0,2,0,1,0,3,0,1,0,2,0,1,0,4,0,1,0,2,0,1,0,3,0,1,0,2,0,1,0,6,0,1,0,2,0,1,0,3,0,1,0,2,0,1,0,4,0,1,0,2,0,1,0,3,0,1,0,2,0,1,0,5,0,1,0,2,0,1,0,3,0,1,0,2,0,1,0,4,0,1,0,2,0,1,0,3,0,1,0,2,0,1,0],"i8",ALLOC_STATIC);Module["_llvm_cttz_i32"]=_llvm_cttz_i32;Module["___udivmoddi4"]=___udivmoddi4;Module["___divdi3"]=___divdi3;var PTHREAD_SPECIFIC={};function _pthread_getspecific(key){return PTHREAD_SPECIFIC[key]||0}var PTHREAD_SPECIFIC_NEXT_KEY=1;var ERRNO_CODES={EPERM:1,ENOENT:2,ESRCH:3,EINTR:4,EIO:5,ENXIO:6,E2BIG:7,ENOEXEC:8,EBADF:9,ECHILD:10,EAGAIN:11,EWOULDBLOCK:11,ENOMEM:12,EACCES:13,EFAULT:14,ENOTBLK:15,EBUSY:16,EEXIST:17,EXDEV:18,ENODEV:19,ENOTDIR:20,EISDIR:21,EINVAL:22,ENFILE:23,EMFILE:24,ENOTTY:25,ETXTBSY:26,EFBIG:27,ENOSPC:28,ESPIPE:29,EROFS:30,EMLINK:31,EPIPE:32,EDOM:33,ERANGE:34,ENOMSG:42,EIDRM:43,ECHRNG:44,EL2NSYNC:45,EL3HLT:46,EL3RST:47,ELNRNG:48,EUNATCH:49,ENOCSI:50,EL2HLT:51,EDEADLK:35,ENOLCK:37,EBADE:52,EBADR:53,EXFULL:54,ENOANO:55,EBADRQC:56,EBADSLT:57,EDEADLOCK:35,EBFONT:59,ENOSTR:60,ENODATA:61,ETIME:62,ENOSR:63,ENONET:64,ENOPKG:65,EREMOTE:66,ENOLINK:67,EADV:68,ESRMNT:69,ECOMM:70,EPROTO:71,EMULTIHOP:72,EDOTDOT:73,EBADMSG:74,ENOTUNIQ:76,EBADFD:77,EREMCHG:78,ELIBACC:79,ELIBBAD:80,ELIBSCN:81,ELIBMAX:82,ELIBEXEC:83,ENOSYS:38,ENOTEMPTY:39,ENAMETOOLONG:36,ELOOP:40,EOPNOTSUPP:95,EPFNOSUPPORT:96,ECONNRESET:104,ENOBUFS:105,EAFNOSUPPORT:97,EPROTOTYPE:91,ENOTSOCK:88,ENOPROTOOPT:92,ESHUTDOWN:108,ECONNREFUSED:111,EADDRINUSE:98,ECONNABORTED:103,ENETUNREACH:101,ENETDOWN:100,ETIMEDOUT:110,EHOSTDOWN:112,EHOSTUNREACH:113,EINPROGRESS:115,EALREADY:114,EDESTADDRREQ:89,EMSGSIZE:90,EPROTONOSUPPORT:93,ESOCKTNOSUPPORT:94,EADDRNOTAVAIL:99,ENETRESET:102,EISCONN:106,ENOTCONN:107,ETOOMANYREFS:109,EUSERS:87,EDQUOT:122,ESTALE:116,ENOTSUP:95,ENOMEDIUM:123,EILSEQ:84,EOVERFLOW:75,ECANCELED:125,ENOTRECOVERABLE:131,EOWNERDEAD:130,ESTRPIPE:86};function _pthread_key_create(key,destructor){if(key==0){return ERRNO_CODES.EINVAL}HEAP32[key>>2]=PTHREAD_SPECIFIC_NEXT_KEY;PTHREAD_SPECIFIC[PTHREAD_SPECIFIC_NEXT_KEY]=0;PTHREAD_SPECIFIC_NEXT_KEY++;return 0}function _pthread_setspecific(key,value){if(!(key in PTHREAD_SPECIFIC)){return ERRNO_CODES.EINVAL}PTHREAD_SPECIFIC[key]=value;return 0}function ___cxa_allocate_exception(size){return _malloc(size)}var SYSCALLS={varargs:0,get:(function(varargs){SYSCALLS.varargs+=4;var ret=HEAP32[SYSCALLS.varargs-4>>2];return ret}),getStr:(function(){var ret=Pointer_stringify(SYSCALLS.get());return ret}),get64:(function(){var low=SYSCALLS.get(),high=SYSCALLS.get();if(low>=0)assert(high===0);else assert(high===-1);return low}),getZero:(function(){assert(SYSCALLS.get()===0)})};function ___syscall54(which,varargs){SYSCALLS.varargs=varargs;try{return 0}catch(e){if(typeof FS==="undefined"||!(e instanceof FS.ErrnoError))abort(e);return-e.errno}}Module["_bitshift64Ashr"]=_bitshift64Ashr;Module["_bitshift64Lshr"]=_bitshift64Lshr;function ___cxa_pure_virtual(){ABORT=true;throw"Pure virtual function called!"}function ___cxa_begin_catch(ptr){var info=EXCEPTIONS.infos[ptr];if(info&&!info.caught){info.caught=true;__ZSt18uncaught_exceptionv.uncaught_exception--}if(info)info.rethrown=false;EXCEPTIONS.caught.push(ptr);EXCEPTIONS.addRef(EXCEPTIONS.deAdjust(ptr));return ptr}function _emscripten_memcpy_big(dest,src,num){HEAPU8.set(HEAPU8.subarray(src,src+num),dest);return dest}Module["_memcpy"]=_memcpy;function ___syscall6(which,varargs){SYSCALLS.varargs=varargs;try{var stream=SYSCALLS.getStreamFromFD();FS.close(stream);return 0}catch(e){if(typeof FS==="undefined"||!(e instanceof FS.ErrnoError))abort(e);return-e.errno}}Module["___udivdi3"]=___udivdi3;Module["___muldsi3"]=___muldsi3;Module["___muldi3"]=___muldi3;function ___setErrNo(value){if(Module["___errno_location"])HEAP32[Module["___errno_location"]()>>2]=value;return value}Module["_sbrk"]=_sbrk;Module["_memmove"]=_memmove;function ___gxx_personality_v0(){}Module["___uremdi3"]=___uremdi3;Module["_llvm_bswap_i32"]=_llvm_bswap_i32;function ___syscall140(which,varargs){SYSCALLS.varargs=varargs;try{var stream=SYSCALLS.getStreamFromFD(),offset_high=SYSCALLS.get(),offset_low=SYSCALLS.get(),result=SYSCALLS.get(),whence=SYSCALLS.get();var offset=offset_low;FS.llseek(stream,offset,whence);HEAP32[result>>2]=stream.position;if(stream.getdents&&offset===0&&whence===0)stream.getdents=null;return 0}catch(e){if(typeof FS==="undefined"||!(e instanceof FS.ErrnoError))abort(e);return-e.errno}}function ___syscall146(which,varargs){SYSCALLS.varargs=varargs;try{var stream=SYSCALLS.get(),iov=SYSCALLS.get(),iovcnt=SYSCALLS.get();var ret=0;if(!___syscall146.buffer){___syscall146.buffers=[null,[],[]];___syscall146.printChar=(function(stream,curr){var buffer=___syscall146.buffers[stream];assert(buffer);if(curr===0||curr===10){(stream===1?Module["print"]:Module["printErr"])(UTF8ArrayToString(buffer,0));buffer.length=0}else{buffer.push(curr)}})}for(var i=0;i>2];var len=HEAP32[iov+(i*8+4)>>2];for(var j=0;j>2]=DYNAMIC_BASE;staticSealed=true;function invoke_iiii(index,a1,a2,a3){try{return Module["dynCall_iiii"](index,a1,a2,a3)}catch(e){if(typeof e!=="number"&&e!=="longjmp")throw e;Module["setThrew"](1,0)}}function invoke_viiiii(index,a1,a2,a3,a4,a5){try{Module["dynCall_viiiii"](index,a1,a2,a3,a4,a5)}catch(e){if(typeof e!=="number"&&e!=="longjmp")throw e;Module["setThrew"](1,0)}}function invoke_vi(index,a1){try{Module["dynCall_vi"](index,a1)}catch(e){if(typeof e!=="number"&&e!=="longjmp")throw e;Module["setThrew"](1,0)}}function invoke_vii(index,a1,a2){try{Module["dynCall_vii"](index,a1,a2)}catch(e){if(typeof e!=="number"&&e!=="longjmp")throw e;Module["setThrew"](1,0)}}function invoke_iiiiiii(index,a1,a2,a3,a4,a5,a6){try{return Module["dynCall_iiiiiii"](index,a1,a2,a3,a4,a5,a6)}catch(e){if(typeof e!=="number"&&e!=="longjmp")throw e;Module["setThrew"](1,0)}}function invoke_ii(index,a1){try{return Module["dynCall_ii"](index,a1)}catch(e){if(typeof e!=="number"&&e!=="longjmp")throw e;Module["setThrew"](1,0)}}function invoke_viii(index,a1,a2,a3){try{Module["dynCall_viii"](index,a1,a2,a3)}catch(e){if(typeof e!=="number"&&e!=="longjmp")throw e;Module["setThrew"](1,0)}}function invoke_v(index){try{Module["dynCall_v"](index)}catch(e){if(typeof e!=="number"&&e!=="longjmp")throw e;Module["setThrew"](1,0)}}function invoke_viiiiii(index,a1,a2,a3,a4,a5,a6){try{Module["dynCall_viiiiii"](index,a1,a2,a3,a4,a5,a6)}catch(e){if(typeof e!=="number"&&e!=="longjmp")throw e;Module["setThrew"](1,0)}}function invoke_iii(index,a1,a2){try{return Module["dynCall_iii"](index,a1,a2)}catch(e){if(typeof e!=="number"&&e!=="longjmp")throw e;Module["setThrew"](1,0)}}function invoke_viiii(index,a1,a2,a3,a4){try{Module["dynCall_viiii"](index,a1,a2,a3,a4)}catch(e){if(typeof e!=="number"&&e!=="longjmp")throw e;Module["setThrew"](1,0)}}Module.asmGlobalArg={"Math":Math,"Int8Array":Int8Array,"Int16Array":Int16Array,"Int32Array":Int32Array,"Uint8Array":Uint8Array,"Uint16Array":Uint16Array,"Uint32Array":Uint32Array,"Float32Array":Float32Array,"Float64Array":Float64Array,"NaN":NaN,"Infinity":Infinity,"byteLength":byteLength};Module.asmLibraryArg={"abort":abort,"assert":assert,"enlargeMemory":enlargeMemory,"getTotalMemory":getTotalMemory,"abortOnCannotGrowMemory":abortOnCannotGrowMemory,"invoke_iiii":invoke_iiii,"invoke_viiiii":invoke_viiiii,"invoke_vi":invoke_vi,"invoke_vii":invoke_vii,"invoke_iiiiiii":invoke_iiiiiii,"invoke_ii":invoke_ii,"invoke_viii":invoke_viii,"invoke_v":invoke_v,"invoke_viiiiii":invoke_viiiiii,"invoke_iii":invoke_iii,"invoke_viiii":invoke_viiii,"_pthread_getspecific":_pthread_getspecific,"_pthread_setspecific":_pthread_setspecific,"___cxa_throw":___cxa_throw,"___gxx_personality_v0":___gxx_personality_v0,"___syscall6":___syscall6,"___setErrNo":___setErrNo,"_abort":_abort,"___cxa_begin_catch":___cxa_begin_catch,"_pthread_key_create":_pthread_key_create,"___syscall146":___syscall146,"_pthread_once":_pthread_once,"_emscripten_memcpy_big":_emscripten_memcpy_big,"___syscall54":___syscall54,"___syscall140":___syscall140,"___resumeException":___resumeException,"___cxa_find_matching_catch":___cxa_find_matching_catch,"___assert_fail":___assert_fail,"___cxa_pure_virtual":___cxa_pure_virtual,"___cxa_allocate_exception":___cxa_allocate_exception,"__ZSt18uncaught_exceptionv":__ZSt18uncaught_exceptionv,"DYNAMICTOP_PTR":DYNAMICTOP_PTR,"tempDoublePtr":tempDoublePtr,"ABORT":ABORT,"STACKTOP":STACKTOP,"STACK_MAX":STACK_MAX,"cttz_i8":cttz_i8};// EMSCRIPTEN_START_ASM var asm=(function(global,env,buffer) { -"almost asm";var a=global.Int8Array;var b=global.Int16Array;var c=global.Int32Array;var d=global.Uint8Array;var e=global.Uint16Array;var f=global.Uint32Array;var g=global.Float32Array;var h=global.Float64Array;var i=new a(buffer);var j=new b(buffer);var k=new c(buffer);var l=new d(buffer);var m=new e(buffer);var n=new f(buffer);var o=new g(buffer);var p=new h(buffer);var q=global.byteLength;var r=env.STACKTOP|0;var s=env.STACK_MAX|0;var t=env.DYNAMICTOP_PTR|0;var u=env.tempDoublePtr|0;var v=env.ABORT|0;var w=env.cttz_i8|0;var x=0;var y=0;var z=0;var A=0;var B=global.NaN,C=global.Infinity;var D=0,E=0,F=0,G=0,H=0,I=0,J=0,K=0,L=0;var M=0;var N=global.Math.floor;var O=global.Math.abs;var P=global.Math.sqrt;var Q=global.Math.pow;var R=global.Math.cos;var S=global.Math.sin;var T=global.Math.tan;var U=global.Math.acos;var V=global.Math.asin;var W=global.Math.atan;var X=global.Math.atan2;var Y=global.Math.exp;var Z=global.Math.log;var _=global.Math.ceil;var $=global.Math.imul;var aa=global.Math.min;var ba=global.Math.max;var ca=global.Math.clz32;var da=global.Math.fround;var ea=env.abort;var fa=env.assert;var ga=env.enlargeMemory;var ha=env.getTotalMemory;var ia=env.abortOnCannotGrowMemory;var ja=env.invoke_iiii;var ka=env.invoke_viiiii;var la=env.invoke_vi;var ma=env.invoke_iiiiiii;var na=env.invoke_ii;var oa=env.invoke_viii;var pa=env.invoke_v;var qa=env.invoke_viiiiii;var ra=env.invoke_iii;var sa=env.invoke_viiii;var ta=env._pthread_cleanup_pop;var ua=env._pthread_getspecific;var va=env._pthread_setspecific;var wa=env._pthread_cleanup_push;var xa=env.___cxa_throw;var ya=env._pthread_key_create;var za=env.___syscall6;var Aa=env.___setErrNo;var Ba=env._abort;var Ca=env._pthread_once;var Da=env.___syscall146;var Ea=env.___cxa_begin_catch;var Fa=env._emscripten_memcpy_big;var Ga=env.___gxx_personality_v0;var Ha=env.___syscall140;var Ia=env.___resumeException;var Ja=env.___cxa_find_matching_catch;var Ka=env.___assert_fail;var La=env.___cxa_pure_virtual;var Ma=env.___cxa_allocate_exception;var Na=env.__ZSt18uncaught_exceptionv;var Oa=da(0);const Pa=da(0);function Qa(newBuffer){if(q(newBuffer)&16777215||q(newBuffer)<=16777215||q(newBuffer)>2147483648)return false;i=new a(newBuffer);j=new b(newBuffer);k=new c(newBuffer);l=new d(newBuffer);m=new e(newBuffer);n=new f(newBuffer);o=new g(newBuffer);p=new h(newBuffer);buffer=newBuffer;return true} +"almost asm";var a=global.Int8Array;var b=new a(buffer);var c=global.Int16Array;var d=new c(buffer);var e=global.Int32Array;var f=new e(buffer);var g=global.Uint8Array;var h=new g(buffer);var i=global.Uint16Array;var j=new i(buffer);var k=global.Uint32Array;var l=new k(buffer);var m=global.Float32Array;var n=new m(buffer);var o=global.Float64Array;var p=new o(buffer);var q=global.byteLength;var r=env.DYNAMICTOP_PTR|0;var s=env.tempDoublePtr|0;var t=env.ABORT|0;var u=env.STACKTOP|0;var v=env.STACK_MAX|0;var w=env.cttz_i8|0;var x=0;var y=0;var z=0;var A=0;var B=global.NaN,C=global.Infinity;var D=0,E=0,F=0,G=0,H=0.0;var I=0;var J=global.Math.floor;var K=global.Math.abs;var L=global.Math.sqrt;var M=global.Math.pow;var N=global.Math.cos;var O=global.Math.sin;var P=global.Math.tan;var Q=global.Math.acos;var R=global.Math.asin;var S=global.Math.atan;var T=global.Math.atan2;var U=global.Math.exp;var V=global.Math.log;var W=global.Math.ceil;var X=global.Math.imul;var Y=global.Math.min;var Z=global.Math.max;var _=global.Math.clz32;var $=global.Math.fround;var aa=env.abort;var ba=env.assert;var ca=env.enlargeMemory;var da=env.getTotalMemory;var ea=env.abortOnCannotGrowMemory;var fa=env.invoke_iiii;var ga=env.invoke_viiiii;var ha=env.invoke_vi;var ia=env.invoke_vii;var ja=env.invoke_iiiiiii;var ka=env.invoke_ii;var la=env.invoke_viii;var ma=env.invoke_v;var na=env.invoke_viiiiii;var oa=env.invoke_iii;var pa=env.invoke_viiii;var qa=env._pthread_getspecific;var ra=env._pthread_setspecific;var sa=env.___cxa_throw;var ta=env.___gxx_personality_v0;var ua=env.___syscall6;var va=env.___setErrNo;var wa=env._abort;var xa=env.___cxa_begin_catch;var ya=env._pthread_key_create;var za=env.___syscall146;var Aa=env._pthread_once;var Ba=env._emscripten_memcpy_big;var Ca=env.___syscall54;var Da=env.___syscall140;var Ea=env.___resumeException;var Fa=env.___cxa_find_matching_catch;var Ga=env.___assert_fail;var Ha=env.___cxa_pure_virtual;var Ia=env.___cxa_allocate_exception;var Ja=env.__ZSt18uncaught_exceptionv;var Ka=$(0);const La=$(0);function Ma(newBuffer){if(q(newBuffer)&16777215||q(newBuffer)<=16777215||q(newBuffer)>2147483648)return false;b=new a(newBuffer);d=new c(newBuffer);f=new e(newBuffer);h=new g(newBuffer);j=new i(newBuffer);l=new k(newBuffer);n=new m(newBuffer);p=new o(newBuffer);buffer=newBuffer;return true} // EMSCRIPTEN_START_FUNCS -function Kc(a,b,c){a=a|0;b=b|0;c=c|0;var d=0,e=0,f=0,g=0,h=0,i=0,j=0,m=0,n=0,o=0,p=0,q=0,s=0,t=0,u=0;u=r;r=r+64|0;t=u;d=t;e=d+40|0;do{k[d>>2]=0;d=d+4|0}while((d|0)<(e|0));a:do if(se(t,b)|0){n=(a|0)>0;if(n?(k[t+12>>2]|0)==0:0){h=0;break}e=b+8|0;d=k[e>>2]|0;e=k[e+4>>2]|0;f=b+16|0;h=f;g=k[h>>2]|0;h=sl(g|0,k[h+4>>2]|0,8,0)|0;i=M;if((!((e|0)<(i|0)|(e|0)==(i|0)&d>>>0>>0)?(j=k[b>>2]|0,m=j+g|0,q=m,q=l[q>>0]|l[q+1>>0]<<8|l[q+2>>0]<<16|l[q+3>>0]<<24,m=m+4|0,m=l[m>>0]|l[m+1>>0]<<8|l[m+2>>0]<<16|l[m+3>>0]<<24,b=f,k[b>>2]=h,k[b+4>>2]=i,b=al(d|0,e|0,h|0,i|0)|0,g=M,!(m>>>0>g>>>0|(m|0)==(g|0)&q>>>0>b>>>0)):0)?(s=j+h|0,j=sl(q|0,m|0,h|0,i|0)|0,m=f,k[m>>2]=j,k[m+4>>2]=M,(q|0)>=1):0){j=t+40|0;k[j>>2]=s;d=q+-1|0;e=s+d|0;switch((l[e>>0]|0)>>>6&3){case 0:{k[t+44>>2]=d;p=(l[e>>0]|0)&63;o=t+48|0;k[o>>2]=p;break}case 1:{if((q|0)<2){h=0;break a}k[t+44>>2]=q+-2;p=s+q+-2|0;p=(l[p+1>>0]|0)<<8&16128|(l[p>>0]|0);o=t+48|0;k[o>>2]=p;break}case 2:{if((q|0)<3){h=0;break a}k[t+44>>2]=q+-3;p=s+q+-3|0;p=(l[p+1>>0]|0)<<8|(l[p>>0]|0)|(l[p+2>>0]|0)<<16&4128768;o=t+48|0;k[o>>2]=p;break}case 3:{k[t+44>>2]=q+-4;p=s+q+-4|0;p=(l[p+2>>0]|0)<<16|(l[p+3>>0]|0)<<24&1056964608|(l[p+1>>0]|0)<<8|(l[p>>0]|0);o=t+48|0;k[o>>2]=p;break}default:{}}d=p+1048576|0;k[o>>2]=d;d=d>>>0>268435455;if(d|n^1)h=d^1;else{g=t+48|0;h=t+44|0;i=t+16|0;b=t+28|0;f=0;d=k[g>>2]|0;while(1){b:do if(d>>>0<1048576){e=k[h>>2]|0;do{if((e|0)<=0)break b;e=e+-1|0;k[h>>2]=e;d=l[(k[j>>2]|0)+e>>0]|0|d<<8;k[g>>2]=d}while(d>>>0<1048576)}while(0);p=d&262143;s=k[(k[i>>2]|0)+(p<<2)>>2]|0;q=k[b>>2]|0;d=($(k[q+(s<<3)>>2]|0,d>>>18)|0)+p-(k[q+(s<<3)+4>>2]|0)|0;k[g>>2]=d;k[c+(f<<2)>>2]=s;f=f+1|0;if((f|0)==(a|0)){h=1;break}}}}else h=0}else h=0;while(0);d=k[t+28>>2]|0;e=d;if(d|0){f=t+32|0;g=k[f>>2]|0;if((g|0)!=(d|0))k[f>>2]=g+(~((g+-8-e|0)>>>3)<<3);cn(d)}d=k[t+16>>2]|0;e=d;if(d|0){f=t+20|0;g=k[f>>2]|0;if((g|0)!=(d|0))k[f>>2]=g+(~((g+-4-e|0)>>>2)<<2);cn(d)}f=k[t>>2]|0;if(!f){r=u;return h|0}d=t+4|0;e=k[d>>2]|0;if((e|0)!=(f|0))k[d>>2]=e+(~((e+-4-f|0)>>>2)<<2);cn(f);r=u;return h|0}function Lc(a,b,c){a=a|0;b=b|0;c=c|0;var d=0,e=0,f=0,g=0,h=0,i=0,j=0,m=0,n=0,o=0,p=0,q=0,s=0,t=0,u=0;u=r;r=r+64|0;t=u;d=t;e=d+40|0;do{k[d>>2]=0;d=d+4|0}while((d|0)<(e|0));a:do if(te(t,b)|0){n=(a|0)>0;if(n?(k[t+12>>2]|0)==0:0){h=0;break}e=b+8|0;d=k[e>>2]|0;e=k[e+4>>2]|0;f=b+16|0;h=f;g=k[h>>2]|0;h=sl(g|0,k[h+4>>2]|0,8,0)|0;i=M;if((!((e|0)<(i|0)|(e|0)==(i|0)&d>>>0>>0)?(j=k[b>>2]|0,m=j+g|0,q=m,q=l[q>>0]|l[q+1>>0]<<8|l[q+2>>0]<<16|l[q+3>>0]<<24,m=m+4|0,m=l[m>>0]|l[m+1>>0]<<8|l[m+2>>0]<<16|l[m+3>>0]<<24,b=f,k[b>>2]=h,k[b+4>>2]=i,b=al(d|0,e|0,h|0,i|0)|0,g=M,!(m>>>0>g>>>0|(m|0)==(g|0)&q>>>0>b>>>0)):0)?(s=j+h|0,j=sl(q|0,m|0,h|0,i|0)|0,m=f,k[m>>2]=j,k[m+4>>2]=M,(q|0)>=1):0){j=t+40|0;k[j>>2]=s;d=q+-1|0;e=s+d|0;switch((l[e>>0]|0)>>>6&3){case 0:{k[t+44>>2]=d;p=(l[e>>0]|0)&63;o=t+48|0;k[o>>2]=p;break}case 1:{if((q|0)<2){h=0;break a}k[t+44>>2]=q+-2;p=s+q+-2|0;p=(l[p+1>>0]|0)<<8&16128|(l[p>>0]|0);o=t+48|0;k[o>>2]=p;break}case 2:{if((q|0)<3){h=0;break a}k[t+44>>2]=q+-3;p=s+q+-3|0;p=(l[p+1>>0]|0)<<8|(l[p>>0]|0)|(l[p+2>>0]|0)<<16&4128768;o=t+48|0;k[o>>2]=p;break}case 3:{k[t+44>>2]=q+-4;p=s+q+-4|0;p=(l[p+2>>0]|0)<<16|(l[p+3>>0]|0)<<24&1056964608|(l[p+1>>0]|0)<<8|(l[p>>0]|0);o=t+48|0;k[o>>2]=p;break}default:{}}d=p+262144|0;k[o>>2]=d;d=d>>>0>67108863;if(d|n^1)h=d^1;else{g=t+48|0;h=t+44|0;i=t+16|0;b=t+28|0;f=0;d=k[g>>2]|0;while(1){b:do if(d>>>0<262144){e=k[h>>2]|0;do{if((e|0)<=0)break b;e=e+-1|0;k[h>>2]=e;d=l[(k[j>>2]|0)+e>>0]|0|d<<8;k[g>>2]=d}while(d>>>0<262144)}while(0);p=d&65535;s=k[(k[i>>2]|0)+(p<<2)>>2]|0;q=k[b>>2]|0;d=($(k[q+(s<<3)>>2]|0,d>>>16)|0)+p-(k[q+(s<<3)+4>>2]|0)|0;k[g>>2]=d;k[c+(f<<2)>>2]=s;f=f+1|0;if((f|0)==(a|0)){h=1;break}}}}else h=0}else h=0;while(0);d=k[t+28>>2]|0;e=d;if(d|0){f=t+32|0;g=k[f>>2]|0;if((g|0)!=(d|0))k[f>>2]=g+(~((g+-8-e|0)>>>3)<<3);cn(d)}d=k[t+16>>2]|0;e=d;if(d|0){f=t+20|0;g=k[f>>2]|0;if((g|0)!=(d|0))k[f>>2]=g+(~((g+-4-e|0)>>>2)<<2);cn(d)}f=k[t>>2]|0;if(!f){r=u;return h|0}d=t+4|0;e=k[d>>2]|0;if((e|0)!=(f|0))k[d>>2]=e+(~((e+-4-f|0)>>>2)<<2);cn(f);r=u;return h|0}function Mc(a,b,c){a=a|0;b=b|0;c=c|0;var d=0,e=0,f=0,g=0,h=0,i=0,j=0,m=0,n=0,o=0,p=0,q=0,s=0,t=0,u=0;u=r;r=r+64|0;t=u;d=t;e=d+40|0;do{k[d>>2]=0;d=d+4|0}while((d|0)<(e|0));a:do if(ue(t,b)|0){n=(a|0)>0;if(n?(k[t+12>>2]|0)==0:0){h=0;break}e=b+8|0;d=k[e>>2]|0;e=k[e+4>>2]|0;f=b+16|0;h=f;g=k[h>>2]|0;h=sl(g|0,k[h+4>>2]|0,8,0)|0;i=M;if((!((e|0)<(i|0)|(e|0)==(i|0)&d>>>0>>0)?(j=k[b>>2]|0,m=j+g|0,q=m,q=l[q>>0]|l[q+1>>0]<<8|l[q+2>>0]<<16|l[q+3>>0]<<24,m=m+4|0,m=l[m>>0]|l[m+1>>0]<<8|l[m+2>>0]<<16|l[m+3>>0]<<24,b=f,k[b>>2]=h,k[b+4>>2]=i,b=al(d|0,e|0,h|0,i|0)|0,g=M,!(m>>>0>g>>>0|(m|0)==(g|0)&q>>>0>b>>>0)):0)?(s=j+h|0,j=sl(q|0,m|0,h|0,i|0)|0,m=f,k[m>>2]=j,k[m+4>>2]=M,(q|0)>=1):0){j=t+40|0;k[j>>2]=s;d=q+-1|0;e=s+d|0;switch((l[e>>0]|0)>>>6&3){case 0:{k[t+44>>2]=d;p=(l[e>>0]|0)&63;o=t+48|0;k[o>>2]=p;break}case 1:{if((q|0)<2){h=0;break a}k[t+44>>2]=q+-2;p=s+q+-2|0;p=(l[p+1>>0]|0)<<8&16128|(l[p>>0]|0);o=t+48|0;k[o>>2]=p;break}case 2:{if((q|0)<3){h=0;break a}k[t+44>>2]=q+-3;p=s+q+-3|0;p=(l[p+1>>0]|0)<<8|(l[p>>0]|0)|(l[p+2>>0]|0)<<16&4128768;o=t+48|0;k[o>>2]=p;break}case 3:{k[t+44>>2]=q+-4;p=s+q+-4|0;p=(l[p+2>>0]|0)<<16|(l[p+3>>0]|0)<<24&1056964608|(l[p+1>>0]|0)<<8|(l[p>>0]|0);o=t+48|0;k[o>>2]=p;break}default:{}}d=p+131072|0;k[o>>2]=d;d=d>>>0>33554431;if(d|n^1)h=d^1;else{g=t+48|0;h=t+44|0;i=t+16|0;b=t+28|0;f=0;d=k[g>>2]|0;while(1){b:do if(d>>>0<131072){e=k[h>>2]|0;do{if((e|0)<=0)break b;e=e+-1|0;k[h>>2]=e;d=l[(k[j>>2]|0)+e>>0]|0|d<<8;k[g>>2]=d}while(d>>>0<131072)}while(0);p=d&32767;s=k[(k[i>>2]|0)+(p<<2)>>2]|0;q=k[b>>2]|0;d=($(k[q+(s<<3)>>2]|0,d>>>15)|0)+p-(k[q+(s<<3)+4>>2]|0)|0;k[g>>2]=d;k[c+(f<<2)>>2]=s;f=f+1|0;if((f|0)==(a|0)){h=1;break}}}}else h=0}else h=0;while(0);d=k[t+28>>2]|0;e=d;if(d|0){f=t+32|0;g=k[f>>2]|0;if((g|0)!=(d|0))k[f>>2]=g+(~((g+-8-e|0)>>>3)<<3);cn(d)}d=k[t+16>>2]|0;e=d;if(d|0){f=t+20|0;g=k[f>>2]|0;if((g|0)!=(d|0))k[f>>2]=g+(~((g+-4-e|0)>>>2)<<2);cn(d)}f=k[t>>2]|0;if(!f){r=u;return h|0}d=t+4|0;e=k[d>>2]|0;if((e|0)!=(f|0))k[d>>2]=e+(~((e+-4-f|0)>>>2)<<2);cn(f);r=u;return h|0}function Nc(a,b,c){a=a|0;b=b|0;c=c|0;var d=0,e=0,f=0,g=0,h=0,i=0,j=0,m=0,n=0,o=0,p=0,q=0,s=0,t=0,u=0;u=r;r=r+64|0;t=u;d=t;e=d+40|0;do{k[d>>2]=0;d=d+4|0}while((d|0)<(e|0));a:do if(ve(t,b)|0){n=(a|0)>0;if(n?(k[t+12>>2]|0)==0:0){h=0;break}e=b+8|0;d=k[e>>2]|0;e=k[e+4>>2]|0;f=b+16|0;h=f;g=k[h>>2]|0;h=sl(g|0,k[h+4>>2]|0,8,0)|0;i=M;if((!((e|0)<(i|0)|(e|0)==(i|0)&d>>>0>>0)?(j=k[b>>2]|0,m=j+g|0,q=m,q=l[q>>0]|l[q+1>>0]<<8|l[q+2>>0]<<16|l[q+3>>0]<<24,m=m+4|0,m=l[m>>0]|l[m+1>>0]<<8|l[m+2>>0]<<16|l[m+3>>0]<<24,b=f,k[b>>2]=h,k[b+4>>2]=i,b=al(d|0,e|0,h|0,i|0)|0,g=M,!(m>>>0>g>>>0|(m|0)==(g|0)&q>>>0>b>>>0)):0)?(s=j+h|0,j=sl(q|0,m|0,h|0,i|0)|0,m=f,k[m>>2]=j,k[m+4>>2]=M,(q|0)>=1):0){j=t+40|0;k[j>>2]=s;d=q+-1|0;e=s+d|0;switch((l[e>>0]|0)>>>6&3){case 0:{k[t+44>>2]=d;p=(l[e>>0]|0)&63;o=t+48|0;k[o>>2]=p;break}case 1:{if((q|0)<2){h=0;break a}k[t+44>>2]=q+-2;p=s+q+-2|0;p=(l[p+1>>0]|0)<<8&16128|(l[p>>0]|0);o=t+48|0;k[o>>2]=p;break}case 2:{if((q|0)<3){h=0;break a}k[t+44>>2]=q+-3;p=s+q+-3|0;p=(l[p+1>>0]|0)<<8|(l[p>>0]|0)|(l[p+2>>0]|0)<<16&4128768;o=t+48|0;k[o>>2]=p;break}case 3:{k[t+44>>2]=q+-4;p=s+q+-4|0;p=(l[p+2>>0]|0)<<16|(l[p+3>>0]|0)<<24&1056964608|(l[p+1>>0]|0)<<8|(l[p>>0]|0);o=t+48|0;k[o>>2]=p;break}default:{}}d=p+32768|0;k[o>>2]=d;d=d>>>0>8388607;if(d|n^1)h=d^1;else{g=t+48|0;h=t+44|0;i=t+16|0;b=t+28|0;f=0;d=k[g>>2]|0;while(1){b:do if(d>>>0<32768){e=k[h>>2]|0;do{if((e|0)<=0)break b;e=e+-1|0;k[h>>2]=e;d=l[(k[j>>2]|0)+e>>0]|0|d<<8;k[g>>2]=d}while(d>>>0<32768)}while(0);p=d&8191;s=k[(k[i>>2]|0)+(p<<2)>>2]|0;q=k[b>>2]|0;d=($(k[q+(s<<3)>>2]|0,d>>>13)|0)+p-(k[q+(s<<3)+4>>2]|0)|0;k[g>>2]=d;k[c+(f<<2)>>2]=s;f=f+1|0;if((f|0)==(a|0)){h=1;break}}}}else h=0}else h=0;while(0);d=k[t+28>>2]|0;e=d;if(d|0){f=t+32|0;g=k[f>>2]|0;if((g|0)!=(d|0))k[f>>2]=g+(~((g+-8-e|0)>>>3)<<3);cn(d)}d=k[t+16>>2]|0;e=d;if(d|0){f=t+20|0;g=k[f>>2]|0;if((g|0)!=(d|0))k[f>>2]=g+(~((g+-4-e|0)>>>2)<<2);cn(d)}f=k[t>>2]|0;if(!f){r=u;return h|0}d=t+4|0;e=k[d>>2]|0;if((e|0)!=(f|0))k[d>>2]=e+(~((e+-4-f|0)>>>2)<<2);cn(f);r=u;return h|0}function Oc(a,b,c){a=a|0;b=b|0;c=c|0;var d=0,e=0,f=0,g=0,h=0,i=0,j=0,m=0,n=0,o=0,p=0,q=0,s=0,t=0,u=0;u=r;r=r+64|0;t=u;d=t;e=d+40|0;do{k[d>>2]=0;d=d+4|0}while((d|0)<(e|0));a:do if(we(t,b)|0){n=(a|0)>0;if(n?(k[t+12>>2]|0)==0:0){h=0;break}e=b+8|0;d=k[e>>2]|0;e=k[e+4>>2]|0;f=b+16|0;h=f;g=k[h>>2]|0;h=sl(g|0,k[h+4>>2]|0,8,0)|0;i=M;if((!((e|0)<(i|0)|(e|0)==(i|0)&d>>>0>>0)?(j=k[b>>2]|0,m=j+g|0,q=m,q=l[q>>0]|l[q+1>>0]<<8|l[q+2>>0]<<16|l[q+3>>0]<<24,m=m+4|0,m=l[m>>0]|l[m+1>>0]<<8|l[m+2>>0]<<16|l[m+3>>0]<<24,b=f,k[b>>2]=h,k[b+4>>2]=i,b=al(d|0,e|0,h|0,i|0)|0,g=M,!(m>>>0>g>>>0|(m|0)==(g|0)&q>>>0>b>>>0)):0)?(s=j+h|0,j=sl(q|0,m|0,h|0,i|0)|0,m=f,k[m>>2]=j,k[m+4>>2]=M,(q|0)>=1):0){j=t+40|0;k[j>>2]=s;d=q+-1|0;e=s+d|0;switch((l[e>>0]|0)>>>6&3){case 0:{k[t+44>>2]=d;p=(l[e>>0]|0)&63;o=t+48|0;k[o>>2]=p;break}case 1:{if((q|0)<2){h=0;break a}k[t+44>>2]=q+-2;p=s+q+-2|0;p=(l[p+1>>0]|0)<<8&16128|(l[p>>0]|0);o=t+48|0;k[o>>2]=p;break}case 2:{if((q|0)<3){h=0;break a}k[t+44>>2]=q+-3;p=s+q+-3|0;p=(l[p+1>>0]|0)<<8|(l[p>>0]|0)|(l[p+2>>0]|0)<<16&4128768;o=t+48|0;k[o>>2]=p;break}case 3:{k[t+44>>2]=q+-4;p=s+q+-4|0;p=(l[p+2>>0]|0)<<16|(l[p+3>>0]|0)<<24&1056964608|(l[p+1>>0]|0)<<8|(l[p>>0]|0);o=t+48|0;k[o>>2]=p;break}default:{}}d=p+16384|0;k[o>>2]=d;d=d>>>0>4194303;if(d|n^1)h=d^1;else{g=t+48|0;h=t+44|0;i=t+16|0;b=t+28|0;f=0;d=k[g>>2]|0;while(1){b:do if(d>>>0<16384){e=k[h>>2]|0;do{if((e|0)<=0)break b;e=e+-1|0;k[h>>2]=e;d=l[(k[j>>2]|0)+e>>0]|0|d<<8;k[g>>2]=d}while(d>>>0<16384)}while(0);p=d&4095;s=k[(k[i>>2]|0)+(p<<2)>>2]|0;q=k[b>>2]|0;d=($(k[q+(s<<3)>>2]|0,d>>>12)|0)+p-(k[q+(s<<3)+4>>2]|0)|0;k[g>>2]=d;k[c+(f<<2)>>2]=s;f=f+1|0;if((f|0)==(a|0)){h=1;break}}}}else h=0}else h=0;while(0);d=k[t+28>>2]|0;e=d;if(d|0){f=t+32|0;g=k[f>>2]|0;if((g|0)!=(d|0))k[f>>2]=g+(~((g+-8-e|0)>>>3)<<3);cn(d)}d=k[t+16>>2]|0;e=d;if(d|0){f=t+20|0;g=k[f>>2]|0;if((g|0)!=(d|0))k[f>>2]=g+(~((g+-4-e|0)>>>2)<<2);cn(d)}f=k[t>>2]|0;if(!f){r=u;return h|0}d=t+4|0;e=k[d>>2]|0;if((e|0)!=(f|0))k[d>>2]=e+(~((e+-4-f|0)>>>2)<<2);cn(f);r=u;return h|0}function Pc(a,b){a=a|0;b=b|0;var c=0,d=0,e=0,f=0,g=0,h=0,i=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0;d=a+4|0;if(!b){c=k[a>>2]|0;k[a>>2]=0;if(c|0)cn(c);k[d>>2]=0;return}if(b>>>0>1073741823){a=Ma(4)|0;Om(a);xa(a|0,1024,93)}q=xk(b<<2)|0;c=k[a>>2]|0;k[a>>2]=q;if(c|0)cn(c);k[d>>2]=b;c=0;do{k[(k[a>>2]|0)+(c<<2)>>2]=0;c=c+1|0}while((c|0)!=(b|0));d=a+8|0;g=k[d>>2]|0;if(!g)return;c=k[g+4>>2]|0;p=b+-1|0;q=(p&b|0)==0;if(q)c=c&p;else c=(c>>>0)%(b>>>0)|0;k[(k[a>>2]|0)+(c<<2)>>2]=d;d=k[g>>2]|0;if(!d)return;else{e=c;f=g;c=g}a:while(1){o=c;b:while(1){c:do if(q){c=d;while(1){n=k[c+4>>2]&p;if((n|0)==(e|0))break c;d=(k[a>>2]|0)+(n<<2)|0;if(!(k[d>>2]|0)){e=n;break b}i=c+10|0;l=c+12|0;m=c+14|0;g=k[c>>2]|0;d:do if(!g)d=c;else{h=j[c+8>>1]|0;d=c;while(1){if(h<<16>>16!=(j[g+8>>1]|0))break d;if((j[i>>1]|0)!=(j[g+10>>1]|0))break d;if((j[l>>1]|0)!=(j[g+12>>1]|0))break d;if((j[m>>1]|0)!=(j[g+14>>1]|0))break d;d=k[g>>2]|0;if(!d){d=g;break}else{r=g;g=d;d=r}}}while(0);k[o>>2]=k[d>>2];k[d>>2]=k[k[(k[a>>2]|0)+(n<<2)>>2]>>2];k[k[(k[a>>2]|0)+(n<<2)>>2]>>2]=c;c=k[f>>2]|0;if(!c){c=40;break a}}}else{c=d;while(1){n=((k[c+4>>2]|0)>>>0)%(b>>>0)|0;if((n|0)==(e|0))break c;d=(k[a>>2]|0)+(n<<2)|0;if(!(k[d>>2]|0)){e=n;break b}h=c+10|0;i=c+12|0;l=c+14|0;g=k[c>>2]|0;e:do if(!g)d=c;else{m=j[c+8>>1]|0;d=c;while(1){if(m<<16>>16!=(j[g+8>>1]|0))break e;if((j[h>>1]|0)!=(j[g+10>>1]|0))break e;if((j[i>>1]|0)!=(j[g+12>>1]|0))break e;if((j[l>>1]|0)!=(j[g+14>>1]|0))break e;d=k[g>>2]|0;if(!d){d=g;break}else{r=g;g=d;d=r}}}while(0);k[o>>2]=k[d>>2];k[d>>2]=k[k[(k[a>>2]|0)+(n<<2)>>2]>>2];k[k[(k[a>>2]|0)+(n<<2)>>2]>>2]=c;c=k[f>>2]|0;if(!c){c=40;break a}}}while(0);d=k[c>>2]|0;if(!d){c=40;break a}else{f=c;o=c}}k[d>>2]=o;d=k[c>>2]|0;if(!d){c=40;break}else f=c}if((c|0)==40)return}function Qc(a,b){a=a|0;b=b|0;var c=0,d=0,e=0,f=0,g=0,h=0,i=0,j=0,l=0,m=0,n=0,o=0,p=0,q=0;d=a+4|0;if(!b){c=k[a>>2]|0;k[a>>2]=0;if(c|0)cn(c);k[d>>2]=0;return}if(b>>>0>1073741823){a=Ma(4)|0;Om(a);xa(a|0,1024,93)}p=xk(b<<2)|0;c=k[a>>2]|0;k[a>>2]=p;if(c|0)cn(c);k[d>>2]=b;c=0;do{k[(k[a>>2]|0)+(c<<2)>>2]=0;c=c+1|0}while((c|0)!=(b|0));d=a+8|0;g=k[d>>2]|0;if(!g)return;c=k[g+4>>2]|0;o=b+-1|0;p=(o&b|0)==0;if(p)c=c&o;else c=(c>>>0)%(b>>>0)|0;k[(k[a>>2]|0)+(c<<2)>>2]=d;d=k[g>>2]|0;if(!d)return;else{e=c;f=g;c=g}a:while(1){n=c;b:while(1){c:do if(p){c=d;while(1){m=k[c+4>>2]&o;if((m|0)==(e|0))break c;d=(k[a>>2]|0)+(m<<2)|0;if(!(k[d>>2]|0)){e=m;break b}i=c+12|0;j=c+16|0;l=c+20|0;g=k[c>>2]|0;d:do if(!g)d=c;else{h=k[c+8>>2]|0;d=c;while(1){if((h|0)!=(k[g+8>>2]|0))break d;if((k[i>>2]|0)!=(k[g+12>>2]|0))break d;if((k[j>>2]|0)!=(k[g+16>>2]|0))break d;if((k[l>>2]|0)!=(k[g+20>>2]|0))break d;d=k[g>>2]|0;if(!d){d=g;break}else{q=g;g=d;d=q}}}while(0);k[n>>2]=k[d>>2];k[d>>2]=k[k[(k[a>>2]|0)+(m<<2)>>2]>>2];k[k[(k[a>>2]|0)+(m<<2)>>2]>>2]=c;c=k[f>>2]|0;if(!c){c=40;break a}}}else{c=d;while(1){m=((k[c+4>>2]|0)>>>0)%(b>>>0)|0;if((m|0)==(e|0))break c;d=(k[a>>2]|0)+(m<<2)|0;if(!(k[d>>2]|0)){e=m;break b}h=c+12|0;i=c+16|0;j=c+20|0;g=k[c>>2]|0;e:do if(!g)d=c;else{l=k[c+8>>2]|0;d=c;while(1){if((l|0)!=(k[g+8>>2]|0))break e;if((k[h>>2]|0)!=(k[g+12>>2]|0))break e;if((k[i>>2]|0)!=(k[g+16>>2]|0))break e;if((k[j>>2]|0)!=(k[g+20>>2]|0))break e;d=k[g>>2]|0;if(!d){d=g;break}else{q=g;g=d;d=q}}}while(0);k[n>>2]=k[d>>2];k[d>>2]=k[k[(k[a>>2]|0)+(m<<2)>>2]>>2];k[k[(k[a>>2]|0)+(m<<2)>>2]>>2]=c;c=k[f>>2]|0;if(!c){c=40;break a}}}while(0);d=k[c>>2]|0;if(!d){c=40;break a}else{f=c;n=c}}k[d>>2]=n;d=k[c>>2]|0;if(!d){c=40;break}else f=c}if((c|0)==40)return}function Rc(a,b){a=a|0;b=b|0;var c=0,d=0,e=0,f=0,g=0,h=0,j=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0;d=a+4|0;if(!b){c=k[a>>2]|0;k[a>>2]=0;if(c|0)cn(c);k[d>>2]=0;return}if(b>>>0>1073741823){a=Ma(4)|0;Om(a);xa(a|0,1024,93)}q=xk(b<<2)|0;c=k[a>>2]|0;k[a>>2]=q;if(c|0)cn(c);k[d>>2]=b;c=0;do{k[(k[a>>2]|0)+(c<<2)>>2]=0;c=c+1|0}while((c|0)!=(b|0));d=a+8|0;g=k[d>>2]|0;if(!g)return;c=k[g+4>>2]|0;p=b+-1|0;q=(p&b|0)==0;if(q)c=c&p;else c=(c>>>0)%(b>>>0)|0;k[(k[a>>2]|0)+(c<<2)>>2]=d;d=k[g>>2]|0;if(!d)return;else{e=c;f=g;c=g}a:while(1){o=c;b:while(1){c:do if(q){c=d;while(1){n=k[c+4>>2]&p;if((n|0)==(e|0))break c;d=(k[a>>2]|0)+(n<<2)|0;if(!(k[d>>2]|0)){e=n;break b}j=c+9|0;l=c+10|0;m=c+11|0;g=k[c>>2]|0;d:do if(!g)d=c;else{h=i[c+8>>0]|0;d=c;while(1){if(h<<24>>24!=(i[g+8>>0]|0))break d;if((i[j>>0]|0)!=(i[g+9>>0]|0))break d;if((i[l>>0]|0)!=(i[g+10>>0]|0))break d;if((i[m>>0]|0)!=(i[g+11>>0]|0))break d;d=k[g>>2]|0;if(!d){d=g;break}else{r=g;g=d;d=r}}}while(0);k[o>>2]=k[d>>2];k[d>>2]=k[k[(k[a>>2]|0)+(n<<2)>>2]>>2];k[k[(k[a>>2]|0)+(n<<2)>>2]>>2]=c;c=k[f>>2]|0;if(!c){c=40;break a}}}else{c=d;while(1){n=((k[c+4>>2]|0)>>>0)%(b>>>0)|0;if((n|0)==(e|0))break c;d=(k[a>>2]|0)+(n<<2)|0;if(!(k[d>>2]|0)){e=n;break b}h=c+9|0;j=c+10|0;l=c+11|0;g=k[c>>2]|0;e:do if(!g)d=c;else{m=i[c+8>>0]|0;d=c;while(1){if(m<<24>>24!=(i[g+8>>0]|0))break e;if((i[h>>0]|0)!=(i[g+9>>0]|0))break e;if((i[j>>0]|0)!=(i[g+10>>0]|0))break e;if((i[l>>0]|0)!=(i[g+11>>0]|0))break e;d=k[g>>2]|0;if(!d){d=g;break}else{r=g;g=d;d=r}}}while(0);k[o>>2]=k[d>>2];k[d>>2]=k[k[(k[a>>2]|0)+(n<<2)>>2]>>2];k[k[(k[a>>2]|0)+(n<<2)>>2]>>2]=c;c=k[f>>2]|0;if(!c){c=40;break a}}}while(0);d=k[c>>2]|0;if(!d){c=40;break a}else{f=c;o=c}}k[d>>2]=o;d=k[c>>2]|0;if(!d){c=40;break}else f=c}if((c|0)==40)return}function Sc(a,b,c,d,e,f){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;f=f|0;var g=0,h=0,i=0,j=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0;x=a+8|0;k[x>>2]=e;u=e>>>0>1073741823?-1:e<<2;y=$m(u)|0;Vi(y|0,0,u|0)|0;z=$m(u)|0;Vi(z|0,0,u|0)|0;Sg(x,y,b,c,0);u=k[a+24>>2]|0;v=a+32|0;f=k[v>>2]|0;h=k[f+4>>2]|0;g=k[f>>2]|0;t=h-g|0;w=t>>2;if((t|0)<=4){an(z);an(y);return 1}q=k[a+28>>2]|0;r=(e|0)>0;s=u+12|0;t=e<<2;d=1;a=h;while(1){if(a-g>>2>>>0<=d>>>0){A=6;break}p=k[g+(d<<2)>>2]|0;if(r)Vi(y|0,0,t|0)|0;if((p|0)>-1){o=k[s>>2]|0;g=0;n=p;do{a=k[o+(n<<2)>>2]|0;if((a|0)>=0){i=k[u>>2]|0;h=(a>>>0)%3|0;j=k[q>>2]|0;m=k[j+(k[i+(((a>>>0)/3|0)*12|0)+(h<<2)>>2]<<2)>>2]|0;f=a+1|0;f=((f|0)%3|0|0)==0?a+-2|0:f;if((f|0)<0)f=-1073741824;else f=k[i+(((f>>>0)/3|0)*12|0)+(((f>>>0)%3|0)<<2)>>2]|0;l=k[j+(f<<2)>>2]|0;f=((h|0)==0?2:-1)+a|0;if((f|0)<0)f=-1073741824;else f=k[i+(((f>>>0)/3|0)*12|0)+(((f>>>0)%3|0)<<2)>>2]|0;f=k[j+(f<<2)>>2]|0;if((m|0)<(d|0)&(l|0)<(d|0)&(f|0)<(d|0)){i=$(m,e)|0;h=$(l,e)|0;a=$(f,e)|0;if(r){f=0;do{k[z+(f<<2)>>2]=(k[c+(f+a<<2)>>2]|0)+(k[c+(f+h<<2)>>2]|0)-(k[c+(f+i<<2)>>2]|0);f=f+1|0}while((f|0)!=(e|0));if(r){f=0;do{m=y+(f<<2)|0;k[m>>2]=(k[m>>2]|0)+(k[z+(f<<2)>>2]|0);f=f+1|0}while((f|0)!=(e|0))}}g=g+1|0}}f=(((n>>>0)%3|0|0)==0?2:-1)+n|0;do if((f|0)>=0){f=k[o+(f<<2)>>2]|0;if((f|0)>=0)if(!((f>>>0)%3|0)){f=f+2|0;break}else{f=f+-1|0;break}}while(0);n=(f|0)==(p|0)?-1073741824:f}while((n|0)>-1);f=$(d,e)|0;if(!g)A=30;else{if(r){a=0;do{p=y+(a<<2)|0;k[p>>2]=(k[p>>2]|0)/(g|0)|0;a=a+1|0}while((a|0)!=(e|0))}Sg(x,y,b,c+(f<<2)|0,f)}}else{f=$(d,e)|0;A=30}if((A|0)==30){A=0;Sg(x,c+(($(d+-1|0,e)|0)<<2)|0,b,c+(f<<2)|0,f)}d=d+1|0;if((d|0)>=(w|0)){A=3;break}f=k[v>>2]|0;g=k[f>>2]|0;a=k[f+4>>2]|0}if((A|0)==3){an(z);an(y);return 1}else if((A|0)==6)gm(f);return 0}function Tc(a,b,c){a=a|0;b=b|0;c=c|0;var d=0,e=0,f=0,g=0,h=0,j=0,m=0,n=0;n=r;r=r+32|0;d=n+24|0;e=n+20|0;f=n+16|0;g=n+12|0;h=n+8|0;j=n+4|0;m=n;if(!c){c=0;r=n;return c|0}switch(k[a+28>>2]|0){case 9:{d=k[b>>2]|0;switch(i[a+24>>0]|0){case 1:{m=a+48|0;j=k[m>>2]|0;m=k[m+4>>2]|0;h=a+40|0;a=(sl(uk(k[h>>2]|0,k[h+4>>2]|0,d|0,((d|0)<0)<<31>>31|0)|0,M|0,j|0,m|0)|0)+(k[k[a>>2]>>2]|0)|0;k[c>>2]=l[a>>0]|l[a+1>>0]<<8|l[a+2>>0]<<16|l[a+3>>0]<<24;c=c+4|0;k[c>>2]=0;k[c+4>>2]=0;k[c+8>>2]=0;c=1;r=n;return c|0}case 2:{m=a+48|0;j=k[m>>2]|0;m=k[m+4>>2]|0;h=a+40|0;m=(sl(uk(k[h>>2]|0,k[h+4>>2]|0,d|0,((d|0)<0)<<31>>31|0)|0,M|0,j|0,m|0)|0)+(k[k[a>>2]>>2]|0)|0;j=m;m=m+4|0;m=l[m>>0]|l[m+1>>0]<<8|l[m+2>>0]<<16|l[m+3>>0]<<24;a=c;k[a>>2]=l[j>>0]|l[j+1>>0]<<8|l[j+2>>0]<<16|l[j+3>>0]<<24;k[a+4>>2]=m;c=c+8|0;k[c>>2]=0;k[c+4>>2]=0;c=1;r=n;return c|0}case 3:{m=a+48|0;j=k[m>>2]|0;m=k[m+4>>2]|0;h=a+40|0;Wj(c|0,(sl(uk(k[h>>2]|0,k[h+4>>2]|0,d|0,((d|0)<0)<<31>>31|0)|0,M|0,j|0,m|0)|0)+(k[k[a>>2]>>2]|0)|0,12)|0;o[c+12>>2]=da(0.0);c=1;r=n;return c|0}case 4:{m=a+48|0;j=k[m>>2]|0;m=k[m+4>>2]|0;h=a+40|0;Wj(c|0,(sl(uk(k[h>>2]|0,k[h+4>>2]|0,d|0,((d|0)<0)<<31>>31|0)|0,M|0,j|0,m|0)|0)+(k[k[a>>2]>>2]|0)|0,16)|0;c=1;r=n;return c|0}default:{c=0;r=n;return c|0}}}case 2:{k[e>>2]=k[b>>2];k[d>>2]=k[e>>2];c=zd(a,d,c)|0;r=n;return c|0}case 1:{k[f>>2]=k[b>>2];k[d>>2]=k[f>>2];c=vd(a,d,c)|0;r=n;return c|0}case 4:{k[g>>2]=k[b>>2];k[d>>2]=k[g>>2];c=id(a,d,c)|0;r=n;return c|0}case 3:{k[h>>2]=k[b>>2];k[d>>2]=k[h>>2];c=cd(a,d,c)|0;r=n;return c|0}case 6:{k[j>>2]=k[b>>2];k[d>>2]=k[j>>2];c=Gc(a,d,c)|0;r=n;return c|0}case 5:{k[m>>2]=k[b>>2];k[d>>2]=k[m>>2];c=Hc(a,d,c)|0;r=n;return c|0}default:{c=0;r=n;return c|0}}return 0}function Uc(a,b,c,d){a=a|0;b=b|0;c=c|0;d=d|0;var e=0,f=0,g=0,h=0,i=0,j=0,l=0,m=0,n=0,o=0,p=0.0;o=b+8|0;f=k[o>>2]|0;n=c+4|0;l=(k[n>>2]|0)-f|0;e=c;k[e>>2]=(k[c>>2]|0)-f;k[e+4>>2]=l;e=(k[d>>2]|0)-f|0;l=d+4|0;f=(k[l>>2]|0)-f|0;g=d;k[g>>2]=e;k[g+4>>2]=f;p=+O(+(+(e|0)))+ +O(+(+(f|0)));g=k[o>>2]|0;if(!(p<=+(g|0))){e=k[c>>2]|0;f=k[n>>2]|0;if((e|0)>-1)if((f|0)<=-1)if((e|0)<1){h=-1;i=-1}else m=6;else{h=1;i=1}else if((f|0)<1){h=-1;i=-1}else m=6;if((m|0)==6){h=(e|0)>0?1:-1;i=(f|0)>0?1:-1}j=$(g,h)|0;g=$(g,i)|0;e=(e<<1)-j|0;k[c>>2]=e;f=(f<<1)-g|0;k[n>>2]=f;if(($(h,i)|0)>-1){f=0-f|0;k[c>>2]=f;e=0-e|0}else k[c>>2]=f;k[c>>2]=(f+j|0)/2|0;k[n>>2]=(e+g|0)/2|0;e=k[d>>2]|0;f=k[l>>2]|0;if((e|0)>-1)if((f|0)<=-1)if((e|0)<1){g=-1;h=-1}else m=14;else{g=1;h=1}else if((f|0)<1){g=-1;h=-1}else m=14;if((m|0)==14){g=(e|0)>0?1:-1;h=(f|0)>0?1:-1}j=k[o>>2]|0;i=$(j,g)|0;j=$(j,h)|0;e=(e<<1)-i|0;k[d>>2]=e;f=(f<<1)-j|0;k[l>>2]=f;if(($(g,h)|0)>-1){f=0-f|0;k[d>>2]=f;e=0-e|0}else k[d>>2]=f;i=(f+i|0)/2|0;k[d>>2]=i;f=(e+j|0)/2|0;k[l>>2]=f;e=i}if(!e){if(f)m=22}else if(!((e|0)<0&(f|0)<1))m=22;if((m|0)==22){do if(!e)if(!f){f=k[n>>2]|0;e=c;k[e>>2]=k[c>>2];k[e+4>>2]=f;e=k[d>>2]|0;f=k[l>>2]|0;break}else{g=(f|0)>0?3:1;m=29;break}else if((e|0)>0){g=(f>>31)+2|0;m=29;break}else{g=(f|0)<1?0:3;m=29;break}while(0);a:do if((m|0)==29){e=k[c>>2]|0;f=k[n>>2]|0;switch(g|0){case 1:{m=c;k[m>>2]=f;k[m+4>>2]=0-e;e=k[l>>2]|0;f=0-(k[d>>2]|0)|0;break a}case 2:{m=c;k[m>>2]=0-e;k[m+4>>2]=0-f;e=0-(k[d>>2]|0)|0;f=0-(k[l>>2]|0)|0;break a}case 3:{m=c;k[m>>2]=0-f;k[m+4>>2]=e;e=0-(k[l>>2]|0)|0;f=k[d>>2]|0;break a}default:{m=c;k[m>>2]=e;k[m+4>>2]=f;e=k[d>>2]|0;f=k[l>>2]|0;break a}}}while(0);m=d;k[m>>2]=e;k[m+4>>2]=f}e=(k[c>>2]|0)-e|0;k[a>>2]=e;g=(k[n>>2]|0)-f|0;h=a+4|0;k[h>>2]=g;f=k[o>>2]<<1;if((f|0)<(e|0))Ka(9367,8780,225,9391);if((e|0)<0)e=(k[b+4>>2]|0)+e|0;k[a>>2]=e;if((f|0)<(g|0))Ka(9367,8780,225,9391);if((g|0)>=0){b=g;k[h>>2]=b;return}b=(k[b+4>>2]|0)+g|0;k[h>>2]=b;return}function Vc(a,b,c,d,e,f){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;f=f|0;var g=0,h=0,i=0,j=0,l=0,m=0,n=0,o=0,p=0,q=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0;A=r;r=r+16|0;y=A+4|0;z=A;k[a+72>>2]=e;k[a+64>>2]=f;x=a+68|0;w=$m(e>>>0>1073741823?-1:e<<2)|0;f=k[x>>2]|0;k[x>>2]=w;if(f|0)an(f);w=a+8|0;k[w>>2]=e;do if(d|0){f=k[b>>2]|0;j=a+16|0;k[j>>2]=f;l=a+12|0;k[l>>2]=f;if((d|0)>1){i=1;h=f;while(1){g=k[b+(i<<2)>>2]|0;if((g|0)>=(h|0))if((g|0)>(f|0)){k[j>>2]=g;f=g;g=h}else g=h;else k[l>>2]=g;i=i+1|0;if((i|0)==(d|0))break;else h=g}}else g=f;v=1-g+f|0;k[a+20>>2]=v;f=(v|0)/2|0;g=a+24|0;k[g>>2]=f;k[a+28>>2]=0-f;if(!(v&1))k[g>>2]=f+-1;f=a+32|0;g=a+36|0;j=k[g>>2]|0;h=k[f>>2]|0;i=j-h>>2;if(i>>>0>>0){jh(f,e-i|0);break}if(i>>>0>e>>>0?(m=h+(e<<2)|0,(j|0)!=(m|0)):0)k[g>>2]=j+(~((j+-4-m|0)>>>2)<<2)}while(0);o=a+56|0;i=k[o>>2]|0;h=k[i+4>>2]|0;g=k[i>>2]|0;f=h-g|0;if((f|0)<=0){r=A;return 1}p=a+16|0;q=a+32|0;s=a+12|0;t=a+28|0;u=a+20|0;v=a+24|0;f=(f>>2)+-1|0;while(1){if(h-g>>2>>>0<=f>>>0){f=22;break}k[z>>2]=k[g+(f<<2)>>2];k[y>>2]=k[z>>2];pc(a,y,b,f);n=$(f,e)|0;m=b+(n<<2)|0;d=k[x>>2]|0;if((k[w>>2]|0)>0){l=0;do{j=k[d+(l<<2)>>2]|0;g=k[p>>2]|0;do if((j|0)<=(g|0)){g=k[s>>2]|0;i=k[q>>2]|0;h=i+(l<<2)|0;if((j|0)<(g|0)){k[h>>2]=g;break}else{k[h>>2]=j;break}}else{i=k[q>>2]|0;k[i+(l<<2)>>2]=g}while(0);l=l+1|0;g=k[w>>2]|0}while((l|0)<(g|0));if((g|0)>0){g=0;do{k[c+(g+n<<2)>>2]=(k[m+(g<<2)>>2]|0)-(k[i+(g<<2)>>2]|0);g=g+1|0;h=k[w>>2]|0}while((g|0)<(h|0));if((h|0)>0){g=0;do{h=c+(g+n<<2)|0;i=k[h>>2]|0;if((i|0)>=(k[t>>2]|0)){if((i|0)>(k[v>>2]|0))k[h>>2]=i-(k[u>>2]|0)}else k[h>>2]=(k[u>>2]|0)+i;g=g+1|0}while((g|0)<(k[w>>2]|0))}}}f=f+-1|0;if((f|0)<=-1){f=19;break}i=k[o>>2]|0;g=k[i>>2]|0;h=k[i+4>>2]|0}if((f|0)==19){r=A;return 1}else if((f|0)==22)gm(i);return 0}function Wc(a,b,c,d,e,f){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;f=f|0;var g=0,h=0,i=0,j=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0;x=a+8|0;k[x>>2]=e;u=e>>>0>1073741823?-1:e<<2;y=$m(u)|0;Vi(y|0,0,u|0)|0;z=$m(u)|0;Vi(z|0,0,u|0)|0;Ug(x,y,b,c,0);u=k[a+24>>2]|0;v=a+32|0;f=k[v>>2]|0;h=k[f+4>>2]|0;g=k[f>>2]|0;t=h-g|0;w=t>>2;if((t|0)<=4){an(z);an(y);return 1}q=k[a+28>>2]|0;r=(e|0)>0;s=u+12|0;t=e<<2;d=1;a=h;while(1){if(a-g>>2>>>0<=d>>>0){A=6;break}p=k[g+(d<<2)>>2]|0;if(r)Vi(y|0,0,t|0)|0;if((p|0)>-1){o=k[s>>2]|0;g=0;n=p;do{a=k[o+(n<<2)>>2]|0;if((a|0)>=0){i=k[u>>2]|0;h=(a>>>0)%3|0;j=k[q>>2]|0;m=k[j+(k[i+(((a>>>0)/3|0)*12|0)+(h<<2)>>2]<<2)>>2]|0;f=a+1|0;f=((f|0)%3|0|0)==0?a+-2|0:f;if((f|0)<0)f=-1073741824;else f=k[i+(((f>>>0)/3|0)*12|0)+(((f>>>0)%3|0)<<2)>>2]|0;l=k[j+(f<<2)>>2]|0;f=((h|0)==0?2:-1)+a|0;if((f|0)<0)f=-1073741824;else f=k[i+(((f>>>0)/3|0)*12|0)+(((f>>>0)%3|0)<<2)>>2]|0;f=k[j+(f<<2)>>2]|0;if((m|0)<(d|0)&(l|0)<(d|0)&(f|0)<(d|0)){i=$(m,e)|0;h=$(l,e)|0;a=$(f,e)|0;if(r){f=0;do{k[z+(f<<2)>>2]=(k[c+(f+a<<2)>>2]|0)+(k[c+(f+h<<2)>>2]|0)-(k[c+(f+i<<2)>>2]|0);f=f+1|0}while((f|0)!=(e|0));if(r){f=0;do{m=y+(f<<2)|0;k[m>>2]=(k[m>>2]|0)+(k[z+(f<<2)>>2]|0);f=f+1|0}while((f|0)!=(e|0))}}g=g+1|0}}f=(((n>>>0)%3|0|0)==0?2:-1)+n|0;do if((f|0)>=0){f=k[o+(f<<2)>>2]|0;if((f|0)>=0)if(!((f>>>0)%3|0)){f=f+2|0;break}else{f=f+-1|0;break}}while(0);n=(f|0)==(p|0)?-1073741824:f}while((n|0)>-1);f=$(d,e)|0;if(!g)A=30;else{if(r){a=0;do{p=y+(a<<2)|0;k[p>>2]=(k[p>>2]|0)/(g|0)|0;a=a+1|0}while((a|0)!=(e|0))}Ug(x,y,b,c+(f<<2)|0,f)}}else{f=$(d,e)|0;A=30}if((A|0)==30){A=0;Ug(x,c+(($(d+-1|0,e)|0)<<2)|0,b,c+(f<<2)|0,f)}d=d+1|0;if((d|0)>=(w|0)){A=3;break}f=k[v>>2]|0;g=k[f>>2]|0;a=k[f+4>>2]|0}if((A|0)==3){an(z);an(y);return 1}else if((A|0)==6)gm(f);return 0}function Xc(a,b,c,d,e,f){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;f=f|0;var g=0,h=0,i=0,j=0,l=0,m=0,n=0,o=0,p=0,q=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0;A=r;r=r+16|0;y=A+4|0;z=A;k[a+72>>2]=e;k[a+64>>2]=f;x=a+68|0;w=$m(e>>>0>1073741823?-1:e<<2)|0;f=k[x>>2]|0;k[x>>2]=w;if(f|0)an(f);w=a+8|0;k[w>>2]=e;do if(d|0){f=k[b>>2]|0;j=a+16|0;k[j>>2]=f;l=a+12|0;k[l>>2]=f;if((d|0)>1){i=1;h=f;while(1){g=k[b+(i<<2)>>2]|0;if((g|0)>=(h|0))if((g|0)>(f|0)){k[j>>2]=g;f=g;g=h}else g=h;else k[l>>2]=g;i=i+1|0;if((i|0)==(d|0))break;else h=g}}else g=f;v=1-g+f|0;k[a+20>>2]=v;f=(v|0)/2|0;g=a+24|0;k[g>>2]=f;k[a+28>>2]=0-f;if(!(v&1))k[g>>2]=f+-1;f=a+32|0;g=a+36|0;j=k[g>>2]|0;h=k[f>>2]|0;i=j-h>>2;if(i>>>0>>0){jh(f,e-i|0);break}if(i>>>0>e>>>0?(m=h+(e<<2)|0,(j|0)!=(m|0)):0)k[g>>2]=j+(~((j+-4-m|0)>>>2)<<2)}while(0);o=a+56|0;i=k[o>>2]|0;h=k[i+4>>2]|0;g=k[i>>2]|0;f=h-g|0;if((f|0)<=0){r=A;return 1}p=a+16|0;q=a+32|0;s=a+12|0;t=a+28|0;u=a+20|0;v=a+24|0;f=(f>>2)+-1|0;while(1){if(h-g>>2>>>0<=f>>>0){f=22;break}k[z>>2]=k[g+(f<<2)>>2];k[y>>2]=k[z>>2];mc(a,y,b,f);n=$(f,e)|0;m=b+(n<<2)|0;d=k[x>>2]|0;if((k[w>>2]|0)>0){l=0;do{j=k[d+(l<<2)>>2]|0;g=k[p>>2]|0;do if((j|0)<=(g|0)){g=k[s>>2]|0;i=k[q>>2]|0;h=i+(l<<2)|0;if((j|0)<(g|0)){k[h>>2]=g;break}else{k[h>>2]=j;break}}else{i=k[q>>2]|0;k[i+(l<<2)>>2]=g}while(0);l=l+1|0;g=k[w>>2]|0}while((l|0)<(g|0));if((g|0)>0){g=0;do{k[c+(g+n<<2)>>2]=(k[m+(g<<2)>>2]|0)-(k[i+(g<<2)>>2]|0);g=g+1|0;h=k[w>>2]|0}while((g|0)<(h|0));if((h|0)>0){g=0;do{h=c+(g+n<<2)|0;i=k[h>>2]|0;if((i|0)>=(k[t>>2]|0)){if((i|0)>(k[v>>2]|0))k[h>>2]=i-(k[u>>2]|0)}else k[h>>2]=(k[u>>2]|0)+i;g=g+1|0}while((g|0)<(k[w>>2]|0))}}}f=f+-1|0;if((f|0)<=-1){f=19;break}i=k[o>>2]|0;g=k[i>>2]|0;h=k[i+4>>2]|0}if((f|0)==19){r=A;return 1}else if((f|0)==22)gm(i);return 0}function Yc(a,b,c){a=a|0;b=b|0;c=c|0;var d=0,e=0,f=0,g=0,h=0,j=0,l=0,m=0,n=0,o=0,p=0,q=0,s=0,t=0,u=0,v=0,w=0;w=r;r=r+48|0;o=w+32|0;p=w+28|0;q=w+24|0;s=w+20|0;t=w+16|0;u=w;v=b+24|0;j=i[v>>0]|0;m=j<<24>>24;n=k[a+64>>2]|0;a=$(n,m)|0;k[u>>2]=k[268];k[u+4>>2]=k[269];k[u+8>>2]=k[270];k[u+12>>2]=k[271];d=c+4|0;g=k[d>>2]|0;f=k[c>>2]|0;e=g-f>>2;if(a>>>0<=e>>>0){if(a>>>0>>0?(h=f+(a<<2)|0,(g|0)!=(h|0)):0)k[d>>2]=g+(~((g+-4-h|0)>>>2)<<2)}else jh(c,a-e|0);if((n|0)<=0){v=1;r=w;return v|0}h=b+84|0;l=b+68|0;a:do if(j<<24>>24>0){f=0;g=0;while(1){if(!(i[h>>0]|0))a=k[(k[l>>2]|0)+(g<<2)>>2]|0;else a=g;switch(i[v>>0]|0){case 1:{k[p>>2]=a;k[o>>2]=k[p>>2];a=hd(b,o,u)|0;break}case 2:{k[q>>2]=a;k[o>>2]=k[q>>2];a=wc(b,o,u)|0;break}case 3:{k[s>>2]=a;k[o>>2]=k[s>>2];a=$c(b,o,u)|0;break}case 4:{k[t>>2]=a;k[o>>2]=k[t>>2];a=Tc(b,o,u)|0;break}default:break a}if(!a){a=0;d=29;break}e=k[c>>2]|0;a=0;d=f;while(1){k[e+(d<<2)>>2]=k[u+(a<<2)>>2];a=a+1|0;if((a|0)==(m|0))break;else d=d+1|0}g=g+1|0;if((g|0)>=(n|0)){a=1;d=29;break}else f=m+f|0}if((d|0)==29){r=w;return a|0}}else{d=0;while(1){if(!(i[h>>0]|0))a=k[(k[l>>2]|0)+(d<<2)>>2]|0;else a=d;switch(i[v>>0]|0){case 1:{k[p>>2]=a;k[o>>2]=k[p>>2];a=hd(b,o,u)|0;break}case 2:{k[q>>2]=a;k[o>>2]=k[q>>2];a=wc(b,o,u)|0;break}case 3:{k[s>>2]=a;k[o>>2]=k[s>>2];a=$c(b,o,u)|0;break}case 4:{k[t>>2]=a;k[o>>2]=k[t>>2];a=Tc(b,o,u)|0;break}default:break a}if(!a){a=0;d=29;break}d=d+1|0;if((d|0)>=(n|0)){a=1;d=29;break}}if((d|0)==29){r=w;return a|0}}while(0);v=0;r=w;return v|0}function Zc(a,b,c,d,e,f){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;f=f|0;var g=0,h=0,i=0,j=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,B=0,C=0;v=a+8|0;k[v>>2]=e;s=e>>>0>1073741823?-1:e<<2;w=$m(s)|0;Vi(w|0,0,s|0)|0;x=$m(s)|0;Vi(x|0,0,s|0)|0;Sg(v,w,b,c,0);s=k[a+24>>2]|0;t=a+32|0;f=k[t>>2]|0;h=k[f+4>>2]|0;g=k[f>>2]|0;r=h-g|0;u=r>>2;if((r|0)<=4){an(x);an(w);return 1}n=k[a+28>>2]|0;o=(e|0)>0;p=s+64|0;q=s+28|0;r=e<<2;d=1;a=h;while(1){if(a-g>>2>>>0<=d>>>0){C=6;break}m=k[g+(d<<2)>>2]|0;if(o)Vi(w|0,0,r|0)|0;if((m|0)>-1){l=k[s>>2]|0;i=0;j=m;do{if(((k[l+(j>>>5<<2)>>2]&1<<(j&31)|0)==0?(y=k[(k[(k[p>>2]|0)+12>>2]|0)+(j<<2)>>2]|0,(y|0)>=0):0)?(B=k[q>>2]|0,h=k[n>>2]|0,z=k[h+(k[B+(y<<2)>>2]<<2)>>2]|0,A=y+1|0,A=k[h+(k[B+((((A|0)%3|0|0)==0?y+-2|0:A)<<2)>>2]<<2)>>2]|0,B=k[h+(k[B+((((y>>>0)%3|0|0)==0?2:-1)+y<<2)>>2]<<2)>>2]|0,(z|0)<(d|0)&(A|0)<(d|0)&(B|0)<(d|0)):0){a=$(z,e)|0;g=$(A,e)|0;h=$(B,e)|0;if(o){f=0;do{k[x+(f<<2)>>2]=(k[c+(f+h<<2)>>2]|0)+(k[c+(f+g<<2)>>2]|0)-(k[c+(f+a<<2)>>2]|0);f=f+1|0}while((f|0)!=(e|0));if(o){f=0;do{h=w+(f<<2)|0;k[h>>2]=(k[h>>2]|0)+(k[x+(f<<2)>>2]|0);f=f+1|0}while((f|0)!=(e|0))}}i=i+1|0}f=(((j>>>0)%3|0|0)==0?2:-1)+j|0;do if(!(k[l+(f>>>5<<2)>>2]&1<<(f&31))){if((f|0)>=0){f=k[(k[(k[p>>2]|0)+12>>2]|0)+(f<<2)>>2]|0;if((f|0)>=0)if(!((f>>>0)%3|0)){f=f+2|0;break}else{f=f+-1|0;break}}}else f=-1073741824;while(0);j=(f|0)==(m|0)?-1073741824:f}while((j|0)>-1);f=$(d,e)|0;if(!i)C=28;else{if(o){a=0;do{m=w+(a<<2)|0;k[m>>2]=(k[m>>2]|0)/(i|0)|0;a=a+1|0}while((a|0)!=(e|0))}Sg(v,w,b,c+(f<<2)|0,f)}}else{f=$(d,e)|0;C=28}if((C|0)==28){C=0;Sg(v,c+(($(d+-1|0,e)|0)<<2)|0,b,c+(f<<2)|0,f)}d=d+1|0;if((d|0)>=(u|0)){C=3;break}f=k[t>>2]|0;g=k[f>>2]|0;a=k[f+4>>2]|0}if((C|0)==3){an(x);an(w);return 1}else if((C|0)==6)gm(f);return 0}function _c(a,b,c){a=a|0;b=b|0;c=c|0;var d=Pa,e=0,f=Pa,g=0,h=0;switch(i[a+24>>0]|0){case 1:{g=k[b>>2]|0;e=a+48|0;b=k[e>>2]|0;e=k[e+4>>2]|0;h=a+40|0;e=(sl(uk(k[h>>2]|0,k[h+4>>2]|0,g|0,((g|0)<0)<<31>>31|0)|0,M|0,b|0,e|0)|0)+(k[k[a>>2]>>2]|0)|0;f=da((l[e>>0]|l[e+1>>0]<<8|l[e+2>>0]<<16|l[e+3>>0]<<24)>>>0);d=da(f*da(2.32830644e-10));o[c>>2]=(i[a+32>>0]|0)==0?f:d;c=c+4|0;k[c>>2]=0;k[c+4>>2]=0;c=1;return c|0}case 2:{g=k[b>>2]|0;b=a+48|0;h=k[b>>2]|0;b=k[b+4>>2]|0;e=a+40|0;b=(sl(uk(k[e>>2]|0,k[e+4>>2]|0,g|0,((g|0)<0)<<31>>31|0)|0,M|0,h|0,b|0)|0)+(k[k[a>>2]>>2]|0)|0;h=b;b=b+4|0;b=l[b>>0]|l[b+1>>0]<<8|l[b+2>>0]<<16|l[b+3>>0]<<24;d=da((l[h>>0]|l[h+1>>0]<<8|l[h+2>>0]<<16|l[h+3>>0]<<24)>>>0);if(!(i[a+32>>0]|0)){o[c>>2]=d;d=da(b>>>0)}else{d=da(d*da(2.32830644e-10));o[c>>2]=d;d=da(da(b>>>0)*da(2.32830644e-10))}o[c+4>>2]=d;o[c+8>>2]=da(0.0);h=1;return h|0}case 3:{e=k[b>>2]|0;h=a+48|0;b=k[h>>2]|0;h=k[h+4>>2]|0;g=a+40|0;h=(sl(uk(k[g>>2]|0,k[g+4>>2]|0,e|0,((e|0)<0)<<31>>31|0)|0,M|0,b|0,h|0)|0)+(k[k[a>>2]>>2]|0)|0;b=h+4|0;b=l[b>>0]|l[b+1>>0]<<8|l[b+2>>0]<<16|l[b+3>>0]<<24;e=h+8|0;e=l[e>>0]|l[e+1>>0]<<8|l[e+2>>0]<<16|l[e+3>>0]<<24;d=da((l[h>>0]|l[h+1>>0]<<8|l[h+2>>0]<<16|l[h+3>>0]<<24)>>>0);if(!(i[a+32>>0]|0)){o[c>>2]=d;f=da(b>>>0);o[c+4>>2]=f;f=da(e>>>0);o[c+8>>2]=f;h=1;return h|0}else{f=da(d*da(2.32830644e-10));o[c>>2]=f;f=da(da(b>>>0)*da(2.32830644e-10));o[c+4>>2]=f;f=da(da(e>>>0)*da(2.32830644e-10));o[c+8>>2]=f;h=1;return h|0}}case 4:{e=k[b>>2]|0;h=a+48|0;b=k[h>>2]|0;h=k[h+4>>2]|0;g=a+40|0;h=(sl(uk(k[g>>2]|0,k[g+4>>2]|0,e|0,((e|0)<0)<<31>>31|0)|0,M|0,b|0,h|0)|0)+(k[k[a>>2]>>2]|0)|0;b=h+4|0;b=l[b>>0]|l[b+1>>0]<<8|l[b+2>>0]<<16|l[b+3>>0]<<24;e=h+8|0;e=l[e>>0]|l[e+1>>0]<<8|l[e+2>>0]<<16|l[e+3>>0]<<24;d=da((l[h>>0]|l[h+1>>0]<<8|l[h+2>>0]<<16|l[h+3>>0]<<24)>>>0);if(!(i[a+32>>0]|0)){o[c>>2]=d;f=da(b>>>0);o[c+4>>2]=f;f=da(e>>>0);o[c+8>>2]=f;h=1;return h|0}else{f=da(d*da(2.32830644e-10));o[c>>2]=f;f=da(da(b>>>0)*da(2.32830644e-10));o[c+4>>2]=f;f=da(da(e>>>0)*da(2.32830644e-10));o[c+8>>2]=f;h=1;return h|0}}default:{h=0;return h|0}}return 0}function $c(a,b,c){a=a|0;b=b|0;c=c|0;var d=0,e=0,f=0,g=0,h=0,j=0,m=0,n=0;n=r;r=r+32|0;d=n+24|0;e=n+20|0;f=n+16|0;g=n+12|0;h=n+8|0;j=n+4|0;m=n;if(!c){c=0;r=n;return c|0}switch(k[a+28>>2]|0){case 9:{d=k[b>>2]|0;switch(i[a+24>>0]|0){case 1:{m=a+48|0;j=k[m>>2]|0;m=k[m+4>>2]|0;h=a+40|0;a=(sl(uk(k[h>>2]|0,k[h+4>>2]|0,d|0,((d|0)<0)<<31>>31|0)|0,M|0,j|0,m|0)|0)+(k[k[a>>2]>>2]|0)|0;k[c>>2]=l[a>>0]|l[a+1>>0]<<8|l[a+2>>0]<<16|l[a+3>>0]<<24;c=c+4|0;k[c>>2]=0;k[c+4>>2]=0;c=1;r=n;return c|0}case 2:{m=a+48|0;j=k[m>>2]|0;m=k[m+4>>2]|0;h=a+40|0;m=(sl(uk(k[h>>2]|0,k[h+4>>2]|0,d|0,((d|0)<0)<<31>>31|0)|0,M|0,j|0,m|0)|0)+(k[k[a>>2]>>2]|0)|0;j=m;m=m+4|0;m=l[m>>0]|l[m+1>>0]<<8|l[m+2>>0]<<16|l[m+3>>0]<<24;a=c;k[a>>2]=l[j>>0]|l[j+1>>0]<<8|l[j+2>>0]<<16|l[j+3>>0]<<24;k[a+4>>2]=m;o[c+8>>2]=da(0.0);c=1;r=n;return c|0}case 3:{m=a+48|0;j=k[m>>2]|0;m=k[m+4>>2]|0;h=a+40|0;Wj(c|0,(sl(uk(k[h>>2]|0,k[h+4>>2]|0,d|0,((d|0)<0)<<31>>31|0)|0,M|0,j|0,m|0)|0)+(k[k[a>>2]>>2]|0)|0,12)|0;c=1;r=n;return c|0}case 4:{m=a+48|0;j=k[m>>2]|0;m=k[m+4>>2]|0;h=a+40|0;Wj(c|0,(sl(uk(k[h>>2]|0,k[h+4>>2]|0,d|0,((d|0)<0)<<31>>31|0)|0,M|0,j|0,m|0)|0)+(k[k[a>>2]>>2]|0)|0,12)|0;c=1;r=n;return c|0}default:{c=0;r=n;return c|0}}}case 2:{k[e>>2]=k[b>>2];k[d>>2]=k[e>>2];c=Jd(a,d,c)|0;r=n;return c|0}case 1:{k[f>>2]=k[b>>2];k[d>>2]=k[f>>2];c=Cd(a,d,c)|0;r=n;return c|0}case 4:{k[g>>2]=k[b>>2];k[d>>2]=k[g>>2];c=td(a,d,c)|0;r=n;return c|0}case 3:{k[h>>2]=k[b>>2];k[d>>2]=k[h>>2];c=nd(a,d,c)|0;r=n;return c|0}case 6:{k[j>>2]=k[b>>2];k[d>>2]=k[j>>2];c=_c(a,d,c)|0;r=n;return c|0}case 5:{k[m>>2]=k[b>>2];k[d>>2]=k[m>>2];c=ad(a,d,c)|0;r=n;return c|0}default:{c=0;r=n;return c|0}}return 0}function ad(a,b,c){a=a|0;b=b|0;c=c|0;var d=Pa,e=0,f=Pa,g=0,h=0;switch(i[a+24>>0]|0){case 1:{g=k[b>>2]|0;e=a+48|0;b=k[e>>2]|0;e=k[e+4>>2]|0;h=a+40|0;e=(sl(uk(k[h>>2]|0,k[h+4>>2]|0,g|0,((g|0)<0)<<31>>31|0)|0,M|0,b|0,e|0)|0)+(k[k[a>>2]>>2]|0)|0;f=da(l[e>>0]|l[e+1>>0]<<8|l[e+2>>0]<<16|l[e+3>>0]<<24|0);d=da(f*da(4.65661287e-10));o[c>>2]=(i[a+32>>0]|0)==0?f:d;c=c+4|0;k[c>>2]=0;k[c+4>>2]=0;c=1;return c|0}case 2:{g=k[b>>2]|0;b=a+48|0;h=k[b>>2]|0;b=k[b+4>>2]|0;e=a+40|0;b=(sl(uk(k[e>>2]|0,k[e+4>>2]|0,g|0,((g|0)<0)<<31>>31|0)|0,M|0,h|0,b|0)|0)+(k[k[a>>2]>>2]|0)|0;h=b;b=b+4|0;b=l[b>>0]|l[b+1>>0]<<8|l[b+2>>0]<<16|l[b+3>>0]<<24;d=da(l[h>>0]|l[h+1>>0]<<8|l[h+2>>0]<<16|l[h+3>>0]<<24|0);if(!(i[a+32>>0]|0)){o[c>>2]=d;d=da(b|0)}else{d=da(d*da(4.65661287e-10));o[c>>2]=d;d=da(da(b|0)*da(4.65661287e-10))}o[c+4>>2]=d;o[c+8>>2]=da(0.0);h=1;return h|0}case 3:{e=k[b>>2]|0;h=a+48|0;b=k[h>>2]|0;h=k[h+4>>2]|0;g=a+40|0;h=(sl(uk(k[g>>2]|0,k[g+4>>2]|0,e|0,((e|0)<0)<<31>>31|0)|0,M|0,b|0,h|0)|0)+(k[k[a>>2]>>2]|0)|0;b=h+4|0;b=l[b>>0]|l[b+1>>0]<<8|l[b+2>>0]<<16|l[b+3>>0]<<24;e=h+8|0;e=l[e>>0]|l[e+1>>0]<<8|l[e+2>>0]<<16|l[e+3>>0]<<24;d=da(l[h>>0]|l[h+1>>0]<<8|l[h+2>>0]<<16|l[h+3>>0]<<24|0);if(!(i[a+32>>0]|0)){o[c>>2]=d;f=da(b|0);o[c+4>>2]=f;f=da(e|0);o[c+8>>2]=f;h=1;return h|0}else{f=da(d*da(4.65661287e-10));o[c>>2]=f;f=da(da(b|0)*da(4.65661287e-10));o[c+4>>2]=f;f=da(da(e|0)*da(4.65661287e-10));o[c+8>>2]=f;h=1;return h|0}}case 4:{e=k[b>>2]|0;h=a+48|0;b=k[h>>2]|0;h=k[h+4>>2]|0;g=a+40|0;h=(sl(uk(k[g>>2]|0,k[g+4>>2]|0,e|0,((e|0)<0)<<31>>31|0)|0,M|0,b|0,h|0)|0)+(k[k[a>>2]>>2]|0)|0;b=h+4|0;b=l[b>>0]|l[b+1>>0]<<8|l[b+2>>0]<<16|l[b+3>>0]<<24;e=h+8|0;e=l[e>>0]|l[e+1>>0]<<8|l[e+2>>0]<<16|l[e+3>>0]<<24;d=da(l[h>>0]|l[h+1>>0]<<8|l[h+2>>0]<<16|l[h+3>>0]<<24|0);if(!(i[a+32>>0]|0)){o[c>>2]=d;f=da(b|0);o[c+4>>2]=f;f=da(e|0);o[c+8>>2]=f;h=1;return h|0}else{f=da(d*da(4.65661287e-10));o[c>>2]=f;f=da(da(b|0)*da(4.65661287e-10));o[c+4>>2]=f;f=da(da(e|0)*da(4.65661287e-10));o[c+8>>2]=f;h=1;return h|0}}default:{h=0;return h|0}}return 0}function bd(a,b,c,d,e,f){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;f=f|0;var g=0,h=0,i=0,j=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,B=0,C=0;v=a+8|0;k[v>>2]=e;s=e>>>0>1073741823?-1:e<<2;w=$m(s)|0;Vi(w|0,0,s|0)|0;x=$m(s)|0;Vi(x|0,0,s|0)|0;Ug(v,w,b,c,0);s=k[a+24>>2]|0;t=a+32|0;f=k[t>>2]|0;h=k[f+4>>2]|0;g=k[f>>2]|0;r=h-g|0;u=r>>2;if((r|0)<=4){an(x);an(w);return 1}n=k[a+28>>2]|0;o=(e|0)>0;p=s+64|0;q=s+28|0;r=e<<2;d=1;a=h;while(1){if(a-g>>2>>>0<=d>>>0){C=6;break}m=k[g+(d<<2)>>2]|0;if(o)Vi(w|0,0,r|0)|0;if((m|0)>-1){l=k[s>>2]|0;i=0;j=m;do{if(((k[l+(j>>>5<<2)>>2]&1<<(j&31)|0)==0?(y=k[(k[(k[p>>2]|0)+12>>2]|0)+(j<<2)>>2]|0,(y|0)>=0):0)?(B=k[q>>2]|0,h=k[n>>2]|0,z=k[h+(k[B+(y<<2)>>2]<<2)>>2]|0,A=y+1|0,A=k[h+(k[B+((((A|0)%3|0|0)==0?y+-2|0:A)<<2)>>2]<<2)>>2]|0,B=k[h+(k[B+((((y>>>0)%3|0|0)==0?2:-1)+y<<2)>>2]<<2)>>2]|0,(z|0)<(d|0)&(A|0)<(d|0)&(B|0)<(d|0)):0){a=$(z,e)|0;g=$(A,e)|0;h=$(B,e)|0;if(o){f=0;do{k[x+(f<<2)>>2]=(k[c+(f+h<<2)>>2]|0)+(k[c+(f+g<<2)>>2]|0)-(k[c+(f+a<<2)>>2]|0);f=f+1|0}while((f|0)!=(e|0));if(o){f=0;do{h=w+(f<<2)|0;k[h>>2]=(k[h>>2]|0)+(k[x+(f<<2)>>2]|0);f=f+1|0}while((f|0)!=(e|0))}}i=i+1|0}f=(((j>>>0)%3|0|0)==0?2:-1)+j|0;do if(!(k[l+(f>>>5<<2)>>2]&1<<(f&31))){if((f|0)>=0){f=k[(k[(k[p>>2]|0)+12>>2]|0)+(f<<2)>>2]|0;if((f|0)>=0)if(!((f>>>0)%3|0)){f=f+2|0;break}else{f=f+-1|0;break}}}else f=-1073741824;while(0);j=(f|0)==(m|0)?-1073741824:f}while((j|0)>-1);f=$(d,e)|0;if(!i)C=28;else{if(o){a=0;do{m=w+(a<<2)|0;k[m>>2]=(k[m>>2]|0)/(i|0)|0;a=a+1|0}while((a|0)!=(e|0))}Ug(v,w,b,c+(f<<2)|0,f)}}else{f=$(d,e)|0;C=28}if((C|0)==28){C=0;Ug(v,c+(($(d+-1|0,e)|0)<<2)|0,b,c+(f<<2)|0,f)}d=d+1|0;if((d|0)>=(u|0)){C=3;break}f=k[t>>2]|0;g=k[f>>2]|0;a=k[f+4>>2]|0}if((C|0)==3){an(x);an(w);return 1}else if((C|0)==6)gm(f);return 0}function cd(a,b,c){a=a|0;b=b|0;c=c|0;var d=Pa,e=Pa,f=0,g=0,h=0,j=0;switch(i[a+24>>0]|0){case 1:{g=k[b>>2]|0;f=a+48|0;b=k[f>>2]|0;f=k[f+4>>2]|0;h=a+40|0;f=(sl(uk(k[h>>2]|0,k[h+4>>2]|0,g|0,((g|0)<0)<<31>>31|0)|0,M|0,b|0,f|0)|0)+(k[k[a>>2]>>2]|0)|0;d=da((l[f>>0]|l[f+1>>0]<<8)<<16>>16);e=da(d/da(32767.0));o[c>>2]=(i[a+32>>0]|0)==0?d:e;c=c+4|0;k[c>>2]=0;k[c+4>>2]=0;k[c+8>>2]=0;c=1;return c|0}case 2:{g=k[b>>2]|0;h=a+48|0;b=k[h>>2]|0;h=k[h+4>>2]|0;f=a+40|0;h=(sl(uk(k[f>>2]|0,k[f+4>>2]|0,g|0,((g|0)<0)<<31>>31|0)|0,M|0,b|0,h|0)|0)+(k[k[a>>2]>>2]|0)|0;h=l[h>>0]|l[h+1>>0]<<8|l[h+2>>0]<<16|l[h+3>>0]<<24;b=h>>>16&65535;d=da((h&65535)<<16>>16);if(!(i[a+32>>0]|0)){o[c>>2]=d;d=da(b<<16>>16)}else{d=da(d/da(32767.0));o[c>>2]=d;d=da(da(b<<16>>16)/da(32767.0))}o[c+4>>2]=d;h=c+8|0;k[h>>2]=0;k[h+4>>2]=0;h=1;return h|0}case 3:{b=k[b>>2]|0;h=a+48|0;f=k[h>>2]|0;h=k[h+4>>2]|0;g=a+40|0;h=(sl(uk(k[g>>2]|0,k[g+4>>2]|0,b|0,((b|0)<0)<<31>>31|0)|0,M|0,f|0,h|0)|0)+(k[k[a>>2]>>2]|0)|0;f=h+2|0;f=l[f>>0]|l[f+1>>0]<<8;b=h+4|0;b=l[b>>0]|l[b+1>>0]<<8;d=da((l[h>>0]|l[h+1>>0]<<8)<<16>>16);if(!(i[a+32>>0]|0)){o[c>>2]=d;e=da(b<<16>>16);d=da(f<<16>>16)}else{e=da(d/da(32767.0));o[c>>2]=e;e=da(da(b<<16>>16)/da(32767.0));d=da(da(f<<16>>16)/da(32767.0))}o[c+4>>2]=d;o[c+8>>2]=e;o[c+12>>2]=da(0.0);h=1;return h|0}case 4:{h=k[b>>2]|0;j=a+48|0;g=k[j>>2]|0;j=k[j+4>>2]|0;b=a+40|0;j=(sl(uk(k[b>>2]|0,k[b+4>>2]|0,h|0,((h|0)<0)<<31>>31|0)|0,M|0,g|0,j|0)|0)+(k[k[a>>2]>>2]|0)|0;g=j;g=l[g>>0]|l[g+1>>0]<<8|l[g+2>>0]<<16|l[g+3>>0]<<24;j=j+4|0;j=l[j>>0]|l[j+1>>0]<<8|l[j+2>>0]<<16|l[j+3>>0]<<24;h=(i[a+32>>0]|0)==0;b=(Zk(g|0,j|0,16)|0)&65535;f=j&65535;a=(Zk(g|0,j|0,48)|0)&65535;d=da((g&65535)<<16>>16);if(h){o[c>>2]=d;e=da(b<<16>>16);o[c+4>>2]=e;e=da(f<<16>>16);o[c+8>>2]=e;e=da(a<<16>>16);o[c+12>>2]=e;j=1;return j|0}else{e=da(d/da(32767.0));o[c>>2]=e;e=da(da(b<<16>>16)/da(32767.0));o[c+4>>2]=e;e=da(da(f<<16>>16)/da(32767.0));o[c+8>>2]=e;e=da(da(a<<16>>16)/da(32767.0));o[c+12>>2]=e;j=1;return j|0}}default:{j=0;return j|0}}return 0}function dd(a,b){a=a|0;b=b|0;var c=0,d=0,e=0,f=0,g=0,h=0,j=0,m=0,n=0,o=0,p=0,q=0,s=0,t=0,u=0,v=0,w=0,x=0;x=r;r=r+16|0;w=x;if(!(Vd(a,b)|0)){w=0;r=x;return w|0}p=b+8|0;o=p;d=k[o>>2]|0;o=k[o+4>>2]|0;s=b+16|0;c=s;f=k[c>>2]|0;c=sl(f|0,k[c+4>>2]|0,4,0)|0;e=M;if((o|0)<(e|0)|(o|0)==(e|0)&d>>>0>>0){w=0;r=x;return w|0}f=(k[b>>2]|0)+f|0;f=l[f>>0]|l[f+1>>0]<<8|l[f+2>>0]<<16|l[f+3>>0]<<24;g=s;k[g>>2]=c;k[g+4>>2]=e;g=a+96|0;f=(k[g>>2]|0)+f|0;k[g>>2]=f;g=a+100|0;k[w>>2]=0;h=a+104|0;n=k[h>>2]|0;m=k[g>>2]|0;j=n-m>>2;if(f>>>0<=j>>>0)if(f>>>0>>0?(q=m+(f<<2)|0,(n|0)!=(q|0)):0){k[h>>2]=n+(~((n+-4-q|0)>>>2)<<2);f=o}else f=o;else{Ag(g,f-j|0,w);d=p;c=s;f=k[d+4>>2]|0;e=k[c+4>>2]|0;d=k[d>>2]|0;c=k[c>>2]|0}if(!((f|0)>(e|0)|(f|0)==(e|0)&d>>>0>c>>>0)){w=0;r=x;return w|0}q=i[(k[b>>2]|0)+c>>0]|0;p=sl(c|0,e|0,1,0)|0;k[s>>2]=p;k[s+4>>2]=M;if(q<<24>>24){w=0;r=x;return w|0}k[a+120>>2]=2;k[a+124>>2]=7;o=a+128|0;p=a+132|0;d=k[p>>2]|0;g=k[o>>2]|0;e=d-g|0;f=(e|0)/12|0;c=d;if(f>>>0>=6){if((e|0)!=72?(t=g+72|0,(c|0)!=(t|0)):0){do{d=c+-12|0;k[p>>2]=d;e=k[d>>2]|0;f=e;if(!e)c=d;else{c=c+-8|0;d=k[c>>2]|0;if((d|0)!=(e|0))k[c>>2]=d+(~((d+-4-f|0)>>>2)<<2);cn(e);c=k[p>>2]|0}}while((c|0)!=(t|0));d=c}}else{mf(o,6-f|0);d=k[p>>2]|0}n=a+140|0;c=k[o>>2]|0;j=(d-c|0)/12|0;e=a+144|0;h=k[e>>2]|0;g=k[n>>2]|0;f=h-g>>2;if(j>>>0<=f>>>0){if(j>>>0>>0?(u=g+(j<<2)|0,(h|0)!=(u|0)):0)k[e>>2]=h+(~((h+-4-u|0)>>>2)<<2)}else{jh(n,j-f|0);d=k[p>>2]|0;c=k[o>>2]|0}if((d|0)==(c|0)){w=1;r=x;return w|0}m=0;do{ci(w,b);c=k[w>>2]|0;if(c|0){d=k[o>>2]|0;e=d+(m*12|0)|0;f=d+(m*12|0)+4|0;j=k[f>>2]|0;h=k[e>>2]|0;g=j-h>>2;if(c>>>0<=g>>>0){if(c>>>0>>0?(v=h+(c<<2)|0,(j|0)!=(v|0)):0)k[f>>2]=j+(~((j+-4-v|0)>>>2)<<2)}else{jh(e,c-g|0);d=k[o>>2]|0;c=k[w>>2]|0}zh(c,1,b,k[d+(m*12|0)>>2]|0)|0;k[(k[n>>2]|0)+(m<<2)>>2]=k[w>>2]}m=m+1|0}while(m>>>0<(((k[p>>2]|0)-(k[o>>2]|0)|0)/12|0)>>>0);c=1;r=x;return c|0}function ed(a,b){a=a|0;b=b|0;var c=0,d=0,e=0,f=0,g=0,h=0,i=0,l=0,m=0,n=0,o=0,p=0,q=0;d=a+4|0;if(!b){c=k[a>>2]|0;k[a>>2]=0;if(c|0)cn(c);k[d>>2]=0;return}if(b>>>0>1073741823){a=Ma(4)|0;Om(a);xa(a|0,1024,93)}p=xk(b<<2)|0;c=k[a>>2]|0;k[a>>2]=p;if(c|0)cn(c);k[d>>2]=b;c=0;do{k[(k[a>>2]|0)+(c<<2)>>2]=0;c=c+1|0}while((c|0)!=(b|0));d=a+8|0;g=k[d>>2]|0;if(!g)return;c=k[g+4>>2]|0;o=b+-1|0;p=(o&b|0)==0;if(p)c=c&o;else c=(c>>>0)%(b>>>0)|0;k[(k[a>>2]|0)+(c<<2)>>2]=d;d=k[g>>2]|0;if(!d)return;else{e=c;f=g;c=g}a:while(1){n=c;b:while(1){c:do if(p){c=d;while(1){m=k[c+4>>2]&o;if((m|0)==(e|0))break c;d=(k[a>>2]|0)+(m<<2)|0;if(!(k[d>>2]|0)){e=m;break b}i=c+10|0;l=c+12|0;g=k[c>>2]|0;d:do if(!g)d=c;else{h=j[c+8>>1]|0;d=c;while(1){if(h<<16>>16!=(j[g+8>>1]|0))break d;if((j[i>>1]|0)!=(j[g+10>>1]|0))break d;if((j[l>>1]|0)!=(j[g+12>>1]|0))break d;d=k[g>>2]|0;if(!d){d=g;break}else{q=g;g=d;d=q}}}while(0);k[n>>2]=k[d>>2];k[d>>2]=k[k[(k[a>>2]|0)+(m<<2)>>2]>>2];k[k[(k[a>>2]|0)+(m<<2)>>2]>>2]=c;c=k[f>>2]|0;if(!c){c=38;break a}}}else{c=d;while(1){m=((k[c+4>>2]|0)>>>0)%(b>>>0)|0;if((m|0)==(e|0))break c;d=(k[a>>2]|0)+(m<<2)|0;if(!(k[d>>2]|0)){e=m;break b}h=c+10|0;i=c+12|0;g=k[c>>2]|0;e:do if(!g)d=c;else{l=j[c+8>>1]|0;d=c;while(1){if(l<<16>>16!=(j[g+8>>1]|0))break e;if((j[h>>1]|0)!=(j[g+10>>1]|0))break e;if((j[i>>1]|0)!=(j[g+12>>1]|0))break e;d=k[g>>2]|0;if(!d){d=g;break}else{q=g;g=d;d=q}}}while(0);k[n>>2]=k[d>>2];k[d>>2]=k[k[(k[a>>2]|0)+(m<<2)>>2]>>2];k[k[(k[a>>2]|0)+(m<<2)>>2]>>2]=c;c=k[f>>2]|0;if(!c){c=38;break a}}}while(0);d=k[c>>2]|0;if(!d){c=38;break a}else{f=c;n=c}}k[d>>2]=n;d=k[c>>2]|0;if(!d){c=38;break}else f=c}if((c|0)==38)return}function fd(a,b){a=a|0;b=b|0;var c=0,d=0,e=0,f=0,g=0,h=0,i=0,j=0,l=0,m=0,n=0,o=0,p=0;d=a+4|0;if(!b){c=k[a>>2]|0;k[a>>2]=0;if(c|0)cn(c);k[d>>2]=0;return}if(b>>>0>1073741823){a=Ma(4)|0;Om(a);xa(a|0,1024,93)}o=xk(b<<2)|0;c=k[a>>2]|0;k[a>>2]=o;if(c|0)cn(c);k[d>>2]=b;c=0;do{k[(k[a>>2]|0)+(c<<2)>>2]=0;c=c+1|0}while((c|0)!=(b|0));d=a+8|0;g=k[d>>2]|0;if(!g)return;c=k[g+4>>2]|0;n=b+-1|0;o=(n&b|0)==0;if(o)c=c&n;else c=(c>>>0)%(b>>>0)|0;k[(k[a>>2]|0)+(c<<2)>>2]=d;d=k[g>>2]|0;if(!d)return;else{e=c;f=g;c=g}a:while(1){m=c;b:while(1){c:do if(o){c=d;while(1){l=k[c+4>>2]&n;if((l|0)==(e|0))break c;d=(k[a>>2]|0)+(l<<2)|0;if(!(k[d>>2]|0)){e=l;break b}i=c+12|0;j=c+16|0;g=k[c>>2]|0;d:do if(!g)d=c;else{h=k[c+8>>2]|0;d=c;while(1){if((h|0)!=(k[g+8>>2]|0))break d;if((k[i>>2]|0)!=(k[g+12>>2]|0))break d;if((k[j>>2]|0)!=(k[g+16>>2]|0))break d;d=k[g>>2]|0;if(!d){d=g;break}else{p=g;g=d;d=p}}}while(0);k[m>>2]=k[d>>2];k[d>>2]=k[k[(k[a>>2]|0)+(l<<2)>>2]>>2];k[k[(k[a>>2]|0)+(l<<2)>>2]>>2]=c;c=k[f>>2]|0;if(!c){c=38;break a}}}else{c=d;while(1){l=((k[c+4>>2]|0)>>>0)%(b>>>0)|0;if((l|0)==(e|0))break c;d=(k[a>>2]|0)+(l<<2)|0;if(!(k[d>>2]|0)){e=l;break b}h=c+12|0;i=c+16|0;g=k[c>>2]|0;e:do if(!g)d=c;else{j=k[c+8>>2]|0;d=c;while(1){if((j|0)!=(k[g+8>>2]|0))break e;if((k[h>>2]|0)!=(k[g+12>>2]|0))break e;if((k[i>>2]|0)!=(k[g+16>>2]|0))break e;d=k[g>>2]|0;if(!d){d=g;break}else{p=g;g=d;d=p}}}while(0);k[m>>2]=k[d>>2];k[d>>2]=k[k[(k[a>>2]|0)+(l<<2)>>2]>>2];k[k[(k[a>>2]|0)+(l<<2)>>2]>>2]=c;c=k[f>>2]|0;if(!c){c=38;break a}}}while(0);d=k[c>>2]|0;if(!d){c=38;break a}else{f=c;m=c}}k[d>>2]=m;d=k[c>>2]|0;if(!d){c=38;break}else f=c}if((c|0)==38)return}function gd(a,b){a=a|0;b=b|0;var c=0,d=0,e=0,f=0,g=0,h=0,j=0,l=0,m=0,n=0,o=0,p=0,q=0;d=a+4|0;if(!b){c=k[a>>2]|0;k[a>>2]=0;if(c|0)cn(c);k[d>>2]=0;return}if(b>>>0>1073741823){a=Ma(4)|0;Om(a);xa(a|0,1024,93)}p=xk(b<<2)|0;c=k[a>>2]|0;k[a>>2]=p;if(c|0)cn(c);k[d>>2]=b;c=0;do{k[(k[a>>2]|0)+(c<<2)>>2]=0;c=c+1|0}while((c|0)!=(b|0));d=a+8|0;g=k[d>>2]|0;if(!g)return;c=k[g+4>>2]|0;o=b+-1|0;p=(o&b|0)==0;if(p)c=c&o;else c=(c>>>0)%(b>>>0)|0;k[(k[a>>2]|0)+(c<<2)>>2]=d;d=k[g>>2]|0;if(!d)return;else{e=c;f=g;c=g}a:while(1){n=c;b:while(1){c:do if(p){c=d;while(1){m=k[c+4>>2]&o;if((m|0)==(e|0))break c;d=(k[a>>2]|0)+(m<<2)|0;if(!(k[d>>2]|0)){e=m;break b}j=c+9|0;l=c+10|0;g=k[c>>2]|0;d:do if(!g)d=c;else{h=i[c+8>>0]|0;d=c;while(1){if(h<<24>>24!=(i[g+8>>0]|0))break d;if((i[j>>0]|0)!=(i[g+9>>0]|0))break d;if((i[l>>0]|0)!=(i[g+10>>0]|0))break d;d=k[g>>2]|0;if(!d){d=g;break}else{q=g;g=d;d=q}}}while(0);k[n>>2]=k[d>>2];k[d>>2]=k[k[(k[a>>2]|0)+(m<<2)>>2]>>2];k[k[(k[a>>2]|0)+(m<<2)>>2]>>2]=c;c=k[f>>2]|0;if(!c){c=38;break a}}}else{c=d;while(1){m=((k[c+4>>2]|0)>>>0)%(b>>>0)|0;if((m|0)==(e|0))break c;d=(k[a>>2]|0)+(m<<2)|0;if(!(k[d>>2]|0)){e=m;break b}h=c+9|0;j=c+10|0;g=k[c>>2]|0;e:do if(!g)d=c;else{l=i[c+8>>0]|0;d=c;while(1){if(l<<24>>24!=(i[g+8>>0]|0))break e;if((i[h>>0]|0)!=(i[g+9>>0]|0))break e;if((i[j>>0]|0)!=(i[g+10>>0]|0))break e;d=k[g>>2]|0;if(!d){d=g;break}else{q=g;g=d;d=q}}}while(0);k[n>>2]=k[d>>2];k[d>>2]=k[k[(k[a>>2]|0)+(m<<2)>>2]>>2];k[k[(k[a>>2]|0)+(m<<2)>>2]>>2]=c;c=k[f>>2]|0;if(!c){c=38;break a}}}while(0);d=k[c>>2]|0;if(!d){c=38;break a}else{f=c;n=c}}k[d>>2]=n;d=k[c>>2]|0;if(!d){c=38;break}else f=c}if((c|0)==38)return}function hd(a,b,c){a=a|0;b=b|0;c=c|0;var d=0,e=0,f=0,g=0,h=0,j=0,m=0,n=0;n=r;r=r+32|0;d=n+24|0;e=n+20|0;f=n+16|0;g=n+12|0;h=n+8|0;j=n+4|0;m=n;if(!c){c=0;r=n;return c|0}switch(k[a+28>>2]|0){case 9:{d=k[b>>2]|0;switch(i[a+24>>0]|0){case 1:{m=a+48|0;j=k[m>>2]|0;m=k[m+4>>2]|0;h=a+40|0;a=(sl(uk(k[h>>2]|0,k[h+4>>2]|0,d|0,((d|0)<0)<<31>>31|0)|0,M|0,j|0,m|0)|0)+(k[k[a>>2]>>2]|0)|0;k[c>>2]=l[a>>0]|l[a+1>>0]<<8|l[a+2>>0]<<16|l[a+3>>0]<<24;c=1;r=n;return c|0}case 2:{m=a+48|0;j=k[m>>2]|0;m=k[m+4>>2]|0;h=a+40|0;a=(sl(uk(k[h>>2]|0,k[h+4>>2]|0,d|0,((d|0)<0)<<31>>31|0)|0,M|0,j|0,m|0)|0)+(k[k[a>>2]>>2]|0)|0;k[c>>2]=l[a>>0]|l[a+1>>0]<<8|l[a+2>>0]<<16|l[a+3>>0]<<24;c=1;r=n;return c|0}case 3:{m=a+48|0;j=k[m>>2]|0;m=k[m+4>>2]|0;h=a+40|0;a=(sl(uk(k[h>>2]|0,k[h+4>>2]|0,d|0,((d|0)<0)<<31>>31|0)|0,M|0,j|0,m|0)|0)+(k[k[a>>2]>>2]|0)|0;k[c>>2]=l[a>>0]|l[a+1>>0]<<8|l[a+2>>0]<<16|l[a+3>>0]<<24;c=1;r=n;return c|0}case 4:{m=a+48|0;j=k[m>>2]|0;m=k[m+4>>2]|0;h=a+40|0;a=(sl(uk(k[h>>2]|0,k[h+4>>2]|0,d|0,((d|0)<0)<<31>>31|0)|0,M|0,j|0,m|0)|0)+(k[k[a>>2]>>2]|0)|0;k[c>>2]=l[a>>0]|l[a+1>>0]<<8|l[a+2>>0]<<16|l[a+3>>0]<<24;c=1;r=n;return c|0}default:{c=0;r=n;return c|0}}}case 2:{k[e>>2]=k[b>>2];k[d>>2]=k[e>>2];c=_e(a,d,c)|0;r=n;return c|0}case 1:{k[f>>2]=k[b>>2];k[d>>2]=k[f>>2];c=Xe(a,d,c)|0;r=n;return c|0}case 4:{k[g>>2]=k[b>>2];k[d>>2]=k[g>>2];c=Te(a,d,c)|0;r=n;return c|0}case 3:{k[h>>2]=k[b>>2];k[d>>2]=k[h>>2];c=Qe(a,d,c)|0;r=n;return c|0}case 6:{k[j>>2]=k[b>>2];k[d>>2]=k[j>>2];c=Me(a,d,c)|0;r=n;return c|0}case 5:{k[m>>2]=k[b>>2];k[d>>2]=k[m>>2];c=Ne(a,d,c)|0;r=n;return c|0}default:{c=0;r=n;return c|0}}return 0}function id(a,b,c){a=a|0;b=b|0;c=c|0;var d=Pa,e=Pa,f=0,g=0,h=0,j=0;switch(i[a+24>>0]|0){case 1:{g=k[b>>2]|0;f=a+48|0;b=k[f>>2]|0;f=k[f+4>>2]|0;h=a+40|0;f=(sl(uk(k[h>>2]|0,k[h+4>>2]|0,g|0,((g|0)<0)<<31>>31|0)|0,M|0,b|0,f|0)|0)+(k[k[a>>2]>>2]|0)|0;d=da((l[f>>0]|l[f+1>>0]<<8)&65535);e=da(d/da(65535.0));o[c>>2]=(i[a+32>>0]|0)==0?d:e;c=c+4|0;k[c>>2]=0;k[c+4>>2]=0;k[c+8>>2]=0;c=1;return c|0}case 2:{g=k[b>>2]|0;h=a+48|0;b=k[h>>2]|0;h=k[h+4>>2]|0;f=a+40|0;h=(sl(uk(k[f>>2]|0,k[f+4>>2]|0,g|0,((g|0)<0)<<31>>31|0)|0,M|0,b|0,h|0)|0)+(k[k[a>>2]>>2]|0)|0;h=l[h>>0]|l[h+1>>0]<<8|l[h+2>>0]<<16|l[h+3>>0]<<24;b=h>>>16&65535;d=da(h&65535);if(!(i[a+32>>0]|0)){o[c>>2]=d;d=da(b&65535)}else{d=da(d/da(65535.0));o[c>>2]=d;d=da(da(b&65535)/da(65535.0))}o[c+4>>2]=d;h=c+8|0;k[h>>2]=0;k[h+4>>2]=0;h=1;return h|0}case 3:{b=k[b>>2]|0;h=a+48|0;f=k[h>>2]|0;h=k[h+4>>2]|0;g=a+40|0;h=(sl(uk(k[g>>2]|0,k[g+4>>2]|0,b|0,((b|0)<0)<<31>>31|0)|0,M|0,f|0,h|0)|0)+(k[k[a>>2]>>2]|0)|0;f=h+2|0;f=l[f>>0]|l[f+1>>0]<<8;b=h+4|0;b=l[b>>0]|l[b+1>>0]<<8;d=da((l[h>>0]|l[h+1>>0]<<8)&65535);if(!(i[a+32>>0]|0)){o[c>>2]=d;e=da(b&65535);d=da(f&65535)}else{e=da(d/da(65535.0));o[c>>2]=e;e=da(da(b&65535)/da(65535.0));d=da(da(f&65535)/da(65535.0))}o[c+4>>2]=d;o[c+8>>2]=e;o[c+12>>2]=da(0.0);h=1;return h|0}case 4:{h=k[b>>2]|0;j=a+48|0;g=k[j>>2]|0;j=k[j+4>>2]|0;b=a+40|0;j=(sl(uk(k[b>>2]|0,k[b+4>>2]|0,h|0,((h|0)<0)<<31>>31|0)|0,M|0,g|0,j|0)|0)+(k[k[a>>2]>>2]|0)|0;g=j;g=l[g>>0]|l[g+1>>0]<<8|l[g+2>>0]<<16|l[g+3>>0]<<24;j=j+4|0;j=l[j>>0]|l[j+1>>0]<<8|l[j+2>>0]<<16|l[j+3>>0]<<24;h=(i[a+32>>0]|0)==0;b=(Zk(g|0,j|0,16)|0)&65535;f=j&65535;a=(Zk(g|0,j|0,48)|0)&65535;d=da(g&65535);if(h){o[c>>2]=d;e=da(b&65535);o[c+4>>2]=e;e=da(f&65535);o[c+8>>2]=e;e=da(a&65535);o[c+12>>2]=e;j=1;return j|0}else{e=da(d/da(65535.0));o[c>>2]=e;e=da(da(b&65535)/da(65535.0));o[c+4>>2]=e;e=da(da(f&65535)/da(65535.0));o[c+8>>2]=e;e=da(da(a&65535)/da(65535.0));o[c+12>>2]=e;j=1;return j|0}}default:{j=0;return j|0}}return 0}function jd(a,b){a=a|0;b=b|0;var c=0,d=0,e=0,f=0,g=0,h=0,m=0,n=0,o=0,p=0,q=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0;A=r;r=r+80|0;x=A;y=A+64|0;z=b+8|0;u=z;v=k[u>>2]|0;u=k[u+4>>2]|0;w=b+16|0;d=w;c=k[d>>2]|0;d=sl(c|0,k[d+4>>2]|0,4,0)|0;e=M;if((u|0)<(e|0)|(u|0)==(e|0)&v>>>0>>0){z=0;r=A;return z|0}v=(k[b>>2]|0)+c|0;v=l[v>>0]|l[v+1>>0]<<8|l[v+2>>0]<<16|l[v+3>>0]<<24;u=w;k[u>>2]=d;k[u+4>>2]=e;if((v|0)<1){z=0;r=A;return z|0}u=a+4|0;c=a+8|0;f=k[c>>2]|0;e=k[u>>2]|0;d=f-e>>2;if(v>>>0<=d>>>0){if(v>>>0>>0?(g=e+(v<<2)|0,(f|0)!=(g|0)):0)k[c>>2]=f+(~((f+-4-g|0)>>>2)<<2)}else jh(u,v-d|0);s=k[a+20>>2]|0;t=x+60|0;q=0;while(1){n=z;m=k[n>>2]|0;n=k[n+4>>2]|0;a=w;d=k[a>>2]|0;a=k[a+4>>2]|0;if(!((n|0)>(a|0)|(n|0)==(a|0)&m>>>0>d>>>0)){c=0;d=27;break}o=k[b>>2]|0;p=i[o+d>>0]|0;c=sl(d|0,a|0,1,0)|0;h=M;g=w;k[g>>2]=c;k[g+4>>2]=h;if(!((n|0)>(h|0)|(n|0)==(h|0)&m>>>0>c>>>0)){c=0;d=27;break}h=i[o+c>>0]|0;c=sl(d|0,a|0,2,0)|0;g=M;f=w;k[f>>2]=c;k[f+4>>2]=g;if(!((n|0)>(g|0)|(n|0)==(g|0)&m>>>0>c>>>0)){c=0;d=27;break}g=i[o+c>>0]|0;c=sl(d|0,a|0,3,0)|0;f=M;e=w;k[e>>2]=c;k[e+4>>2]=f;if(!((n|0)>(f|0)|(n|0)==(f|0)&m>>>0>c>>>0)){c=0;d=27;break}e=i[o+c>>0]|0;f=sl(d|0,a|0,4,0)|0;c=w;k[c>>2]=f;k[c+4>>2]=M;c=sl(d|0,a|0,6,0)|0;d=M;if((n|0)<(d|0)|(n|0)==(d|0)&m>>>0>>0){c=0;d=27;break}a=o+f|0;a=l[a>>0]|l[a+1>>0]<<8;n=w;k[n>>2]=c;k[n+4>>2]=d;n=h&255;wj(x);o=$(Kj(n)|0,g&255)|0;Uh(x,p&255,0,g,n,e<<24>>24!=0,o,((o|0)<0)<<31>>31,0,0);j[t>>1]=a;a=xk(88)|0;yj(a,x);k[y>>2]=a;a=Zg(s,y)|0;g=k[y>>2]|0;k[y>>2]=0;if(g|0){c=k[g+68>>2]|0;d=c;if(c|0){e=g+72|0;f=k[e>>2]|0;if((f|0)!=(c|0))k[e>>2]=f+(~((f+-4-d|0)>>>2)<<2);cn(c)}p=g+64|0;c=k[p>>2]|0;k[p>>2]=0;if(c|0){d=k[c>>2]|0;if(d|0){e=c+4|0;if((k[e>>2]|0)!=(d|0))k[e>>2]=d;cn(d)}cn(c)}cn(g)}k[(k[u>>2]|0)+(q<<2)>>2]=a;q=q+1|0;if((q|0)>=(v|0)){c=1;d=27;break}}if((d|0)==27){r=A;return c|0}return 0}function kd(a,b){a=a|0;b=b|0;var c=0,d=0,e=0,f=0,g=0,h=0,i=0,j=0,l=0;g=a+92|0;h=k[b>>2]|0;i=(h|0)<0;j=h+1|0;do if(!i){b=((j|0)%3|0|0)==0?h+-2|0:j;if(!((h>>>0)%3|0)){e=h+2|0;d=b;break}else{e=h+-1|0;d=b;break}}else{e=h;d=h}while(0);f=a+128|0;b=k[f>>2]|0;switch(b|0){case 1:case 0:{if((d|0)<0)b=-1073741824;else b=k[(k[k[g>>2]>>2]|0)+(((d>>>0)/3|0)*12|0)+(((d>>>0)%3|0)<<2)>>2]|0;c=k[a+100>>2]|0;d=c+(b<<2)|0;k[d>>2]=(k[d>>2]|0)+1;if((e|0)<0)b=-1073741824;else b=k[(k[k[g>>2]>>2]|0)+(((e>>>0)/3|0)*12|0)+(((e>>>0)%3|0)<<2)>>2]|0;c=c+(b<<2)|0;k[c>>2]=(k[c>>2]|0)+1;c=32;break}case 5:{if(i)b=-1073741824;else b=k[(k[k[g>>2]>>2]|0)+(((h>>>0)/3|0)*12|0)+(((h>>>0)%3|0)<<2)>>2]|0;c=k[a+100>>2]|0;b=c+(b<<2)|0;k[b>>2]=(k[b>>2]|0)+1;if((d|0)<0)b=-1073741824;else b=k[(k[k[g>>2]>>2]|0)+(((d>>>0)/3|0)*12|0)+(((d>>>0)%3|0)<<2)>>2]|0;d=c+(b<<2)|0;k[d>>2]=(k[d>>2]|0)+1;if((e|0)<0)b=-1073741824;else b=k[(k[k[g>>2]>>2]|0)+(((e>>>0)/3|0)*12|0)+(((e>>>0)%3|0)<<2)>>2]|0;c=c+(b<<2)|0;k[c>>2]=(k[c>>2]|0)+2;c=32;break}case 3:{if(i)b=-1073741824;else b=k[(k[k[g>>2]>>2]|0)+(((h>>>0)/3|0)*12|0)+(((h>>>0)%3|0)<<2)>>2]|0;c=k[a+100>>2]|0;b=c+(b<<2)|0;k[b>>2]=(k[b>>2]|0)+1;if((d|0)<0)b=-1073741824;else b=k[(k[k[g>>2]>>2]|0)+(((d>>>0)/3|0)*12|0)+(((d>>>0)%3|0)<<2)>>2]|0;d=c+(b<<2)|0;k[d>>2]=(k[d>>2]|0)+2;if((e|0)<0)b=-1073741824;else b=k[(k[k[g>>2]>>2]|0)+(((e>>>0)/3|0)*12|0)+(((e>>>0)%3|0)<<2)>>2]|0;c=c+(b<<2)|0;k[c>>2]=(k[c>>2]|0)+1;c=32;break}case 7:{if(i)b=-1073741824;else b=k[(k[k[g>>2]>>2]|0)+(((h>>>0)/3|0)*12|0)+(((h>>>0)%3|0)<<2)>>2]|0;c=k[a+100>>2]|0;b=c+(b<<2)|0;k[b>>2]=(k[b>>2]|0)+2;if((d|0)<0)b=-1073741824;else b=k[(k[k[g>>2]>>2]|0)+(((d>>>0)/3|0)*12|0)+(((d>>>0)%3|0)<<2)>>2]|0;d=c+(b<<2)|0;k[d>>2]=(k[d>>2]|0)+2;if((e|0)<0)b=-1073741824;else b=k[(k[k[g>>2]>>2]|0)+(((e>>>0)/3|0)*12|0)+(((e>>>0)%3|0)<<2)>>2]|0;c=c+(b<<2)|0;k[c>>2]=(k[c>>2]|0)+2;c=32;break}default:{}}if((c|0)==32)b=k[f>>2]|0;switch(b|0){case 5:case 0:break;default:{k[a+132>>2]=-1;return}}b=k[g>>2]|0;if(!i?(l=((j|0)%3|0|0)==0?h+-2|0:j,(l|0)>=0):0)b=k[(k[b>>2]|0)+(((l>>>0)/3|0)*12|0)+(((l>>>0)%3|0)<<2)>>2]|0;else b=-1073741824;k[a+132>>2]=(k[(k[a+100>>2]|0)+(b<<2)>>2]|0)<6?5:0;return}function ld(a,b,c,d,e){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;var f=0,g=0,h=0,i=0,j=0,l=0,m=0,n=0,o=0,p=0;l=a;i=b;j=i;g=c;n=d;h=n;if(!j){f=(e|0)!=0;if(!h){if(f){k[e>>2]=(l>>>0)%(g>>>0);k[e+4>>2]=0}n=0;e=(l>>>0)/(g>>>0)>>>0;return (M=n,e)|0}else{if(!f){n=0;e=0;return (M=n,e)|0}k[e>>2]=a|0;k[e+4>>2]=b&0;n=0;e=0;return (M=n,e)|0}}f=(h|0)==0;do if(g){if(!f){f=(ca(h|0)|0)-(ca(j|0)|0)|0;if(f>>>0<=31){m=f+1|0;h=31-f|0;b=f-31>>31;g=m;a=l>>>(m>>>0)&b|j<>>(m>>>0)&b;f=0;h=l<>2]=a|0;k[e+4>>2]=i|b&0;n=0;e=0;return (M=n,e)|0}f=g-1|0;if(f&g|0){h=(ca(g|0)|0)+33-(ca(j|0)|0)|0;p=64-h|0;m=32-h|0;i=m>>31;o=h-32|0;b=o>>31;g=h;a=m-1>>31&j>>>(o>>>0)|(j<>>(h>>>0))&b;b=b&j>>>(h>>>0);f=l<>>(o>>>0))&i|l<>31;break}if(e|0){k[e>>2]=f&l;k[e+4>>2]=0}if((g|0)==1){o=i|b&0;p=a|0|0;return (M=o,p)|0}else{p=ck(g|0)|0;o=j>>>(p>>>0)|0;p=j<<32-p|l>>>(p>>>0)|0;return (M=o,p)|0}}else{if(f){if(e|0){k[e>>2]=(j>>>0)%(g>>>0);k[e+4>>2]=0}o=0;p=(j>>>0)/(g>>>0)>>>0;return (M=o,p)|0}if(!l){if(e|0){k[e>>2]=0;k[e+4>>2]=(j>>>0)%(h>>>0)}o=0;p=(j>>>0)/(h>>>0)>>>0;return (M=o,p)|0}f=h-1|0;if(!(f&h)){if(e|0){k[e>>2]=a|0;k[e+4>>2]=f&j|b&0}o=0;p=j>>>((ck(h|0)|0)>>>0);return (M=o,p)|0}f=(ca(h|0)|0)-(ca(j|0)|0)|0;if(f>>>0<=30){b=f+1|0;h=31-f|0;g=b;a=j<>>(b>>>0);b=j>>>(b>>>0);f=0;h=l<>2]=a|0;k[e+4>>2]=i|b&0;o=0;p=0;return (M=o,p)|0}while(0);if(!g){j=h;i=0;h=0}else{m=c|0|0;l=n|d&0;j=sl(m|0,l|0,-1,-1)|0;c=M;i=h;h=0;do{d=i;i=f>>>31|i<<1;f=h|f<<1;d=a<<1|d>>>31|0;n=a>>>31|b<<1|0;al(j|0,c|0,d|0,n|0)|0;p=M;o=p>>31|((p|0)<0?-1:0)<<1;h=o&1;a=al(d|0,n|0,o&m|0,(((p|0)<0?-1:0)>>31|((p|0)<0?-1:0)<<1)&l|0)|0;b=M;g=g-1|0}while((g|0)!=0);j=i;i=0}g=0;if(e|0){k[e>>2]=a;k[e+4>>2]=b}o=(f|0)>>>31|(j|g)<<1|(g<<1|f>>>31)&0|i;p=(f<<1|0>>>31)&-2|h;return (M=o,p)|0}function md(a,b){a=a|0;b=b|0;var c=0,d=0,e=0,f=0,g=0;g=a+92|0;c=k[b>>2]|0;d=(c|0)<0;b=c+1|0;do if(!d){b=((b|0)%3|0|0)==0?c+-2|0:b;if(!((c>>>0)%3|0)){e=c+2|0;f=b;break}else{e=c+-1|0;f=b;break}}else{e=c;f=c}while(0);switch(k[a+112>>2]|0){case 1:case 0:{if((f|0)<0)b=-1073741824;else b=k[(k[k[g>>2]>>2]|0)+(((f>>>0)/3|0)*12|0)+(((f>>>0)%3|0)<<2)>>2]|0;c=k[a+100>>2]|0;d=c+(b<<2)|0;k[d>>2]=(k[d>>2]|0)+1;if((e|0)<0)b=-1073741824;else b=k[(k[k[g>>2]>>2]|0)+(((e>>>0)/3|0)*12|0)+(((e>>>0)%3|0)<<2)>>2]|0;e=c+(b<<2)|0;k[e>>2]=(k[e>>2]|0)+1;break}case 5:{if(d)b=-1073741824;else b=k[(k[k[g>>2]>>2]|0)+(((c>>>0)/3|0)*12|0)+(((c>>>0)%3|0)<<2)>>2]|0;c=k[a+100>>2]|0;d=c+(b<<2)|0;k[d>>2]=(k[d>>2]|0)+1;if((f|0)<0)b=-1073741824;else b=k[(k[k[g>>2]>>2]|0)+(((f>>>0)/3|0)*12|0)+(((f>>>0)%3|0)<<2)>>2]|0;d=c+(b<<2)|0;k[d>>2]=(k[d>>2]|0)+1;if((e|0)<0)b=-1073741824;else b=k[(k[k[g>>2]>>2]|0)+(((e>>>0)/3|0)*12|0)+(((e>>>0)%3|0)<<2)>>2]|0;e=c+(b<<2)|0;k[e>>2]=(k[e>>2]|0)+2;break}case 3:{if(d)b=-1073741824;else b=k[(k[k[g>>2]>>2]|0)+(((c>>>0)/3|0)*12|0)+(((c>>>0)%3|0)<<2)>>2]|0;c=k[a+100>>2]|0;d=c+(b<<2)|0;k[d>>2]=(k[d>>2]|0)+1;if((f|0)<0)b=-1073741824;else b=k[(k[k[g>>2]>>2]|0)+(((f>>>0)/3|0)*12|0)+(((f>>>0)%3|0)<<2)>>2]|0;d=c+(b<<2)|0;k[d>>2]=(k[d>>2]|0)+2;if((e|0)<0)b=-1073741824;else b=k[(k[k[g>>2]>>2]|0)+(((e>>>0)/3|0)*12|0)+(((e>>>0)%3|0)<<2)>>2]|0;e=c+(b<<2)|0;k[e>>2]=(k[e>>2]|0)+1;break}case 7:{if(d)b=-1073741824;else b=k[(k[k[g>>2]>>2]|0)+(((c>>>0)/3|0)*12|0)+(((c>>>0)%3|0)<<2)>>2]|0;c=k[a+100>>2]|0;d=c+(b<<2)|0;k[d>>2]=(k[d>>2]|0)+2;if((f|0)<0)b=-1073741824;else b=k[(k[k[g>>2]>>2]|0)+(((f>>>0)/3|0)*12|0)+(((f>>>0)%3|0)<<2)>>2]|0;d=c+(b<<2)|0;k[d>>2]=(k[d>>2]|0)+2;if((e|0)<0)b=-1073741824;else b=k[(k[k[g>>2]>>2]|0)+(((e>>>0)/3|0)*12|0)+(((e>>>0)%3|0)<<2)>>2]|0;e=c+(b<<2)|0;k[e>>2]=(k[e>>2]|0)+2;break}default:{}}if((f|0)<0)b=-1073741824;else b=k[(k[k[g>>2]>>2]|0)+(((f>>>0)/3|0)*12|0)+(((f>>>0)%3|0)<<2)>>2]|0;b=k[(k[a+100>>2]|0)+(b<<2)>>2]|0;c=k[a+120>>2]|0;if((b|0)<(c|0)){g=c;g=g-c|0;a=a+116|0;k[a>>2]=g;return}g=k[a+124>>2]|0;g=(b|0)>(g|0)?g:b;g=g-c|0;a=a+116|0;k[a>>2]=g;return}function nd(a,b,c){a=a|0;b=b|0;c=c|0;var d=Pa,e=0,f=Pa,g=0,h=0;switch(i[a+24>>0]|0){case 1:{g=k[b>>2]|0;e=a+48|0;b=k[e>>2]|0;e=k[e+4>>2]|0;h=a+40|0;e=(sl(uk(k[h>>2]|0,k[h+4>>2]|0,g|0,((g|0)<0)<<31>>31|0)|0,M|0,b|0,e|0)|0)+(k[k[a>>2]>>2]|0)|0;f=da((l[e>>0]|l[e+1>>0]<<8)<<16>>16);d=da(f/da(32767.0));o[c>>2]=(i[a+32>>0]|0)==0?f:d;c=c+4|0;k[c>>2]=0;k[c+4>>2]=0;c=1;return c|0}case 2:{g=k[b>>2]|0;h=a+48|0;b=k[h>>2]|0;h=k[h+4>>2]|0;e=a+40|0;h=(sl(uk(k[e>>2]|0,k[e+4>>2]|0,g|0,((g|0)<0)<<31>>31|0)|0,M|0,b|0,h|0)|0)+(k[k[a>>2]>>2]|0)|0;h=l[h>>0]|l[h+1>>0]<<8|l[h+2>>0]<<16|l[h+3>>0]<<24;b=h>>>16&65535;d=da((h&65535)<<16>>16);if(!(i[a+32>>0]|0)){o[c>>2]=d;d=da(b<<16>>16)}else{d=da(d/da(32767.0));o[c>>2]=d;d=da(da(b<<16>>16)/da(32767.0))}o[c+4>>2]=d;o[c+8>>2]=da(0.0);h=1;return h|0}case 3:{e=k[b>>2]|0;h=a+48|0;b=k[h>>2]|0;h=k[h+4>>2]|0;g=a+40|0;h=(sl(uk(k[g>>2]|0,k[g+4>>2]|0,e|0,((e|0)<0)<<31>>31|0)|0,M|0,b|0,h|0)|0)+(k[k[a>>2]>>2]|0)|0;b=h+2|0;b=l[b>>0]|l[b+1>>0]<<8;e=h+4|0;e=l[e>>0]|l[e+1>>0]<<8;d=da((l[h>>0]|l[h+1>>0]<<8)<<16>>16);if(!(i[a+32>>0]|0)){o[c>>2]=d;f=da(b<<16>>16);o[c+4>>2]=f;f=da(e<<16>>16);o[c+8>>2]=f;h=1;return h|0}else{f=da(d/da(32767.0));o[c>>2]=f;f=da(da(b<<16>>16)/da(32767.0));o[c+4>>2]=f;f=da(da(e<<16>>16)/da(32767.0));o[c+8>>2]=f;h=1;return h|0}}case 4:{h=k[b>>2]|0;e=a+48|0;g=k[e>>2]|0;e=k[e+4>>2]|0;b=a+40|0;e=(sl(uk(k[b>>2]|0,k[b+4>>2]|0,h|0,((h|0)<0)<<31>>31|0)|0,M|0,g|0,e|0)|0)+(k[k[a>>2]>>2]|0)|0;g=e;g=l[g>>0]|l[g+1>>0]<<8|l[g+2>>0]<<16|l[g+3>>0]<<24;e=e+4|0;e=l[e>>0]|l[e+1>>0]<<8|l[e+2>>0]<<16|l[e+3>>0]<<24;h=(i[a+32>>0]|0)==0;b=(Zk(g|0,e|0,16)|0)&65535;e=e&65535;d=da((g&65535)<<16>>16);if(h){o[c>>2]=d;f=da(b<<16>>16);o[c+4>>2]=f;f=da(e<<16>>16);o[c+8>>2]=f;h=1;return h|0}else{f=da(d/da(32767.0));o[c>>2]=f;f=da(da(b<<16>>16)/da(32767.0));o[c+4>>2]=f;f=da(da(e<<16>>16)/da(32767.0));o[c+8>>2]=f;h=1;return h|0}}default:{h=0;return h|0}}return 0}function od(a,b,c){a=a|0;b=b|0;c=c|0;var d=0,e=0,f=0,g=0,h=0,j=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0;u=Va[k[(k[a>>2]|0)+36>>2]&127](a)|0;if((u|0)<1){u=0;return u|0}s=a+16|0;h=$((k[b+4>>2]|0)-(k[b>>2]|0)>>2,u)|0;t=a+20|0;f=k[t>>2]|0;e=k[s>>2]|0;d=f-e>>2;if(h>>>0<=d>>>0){if(h>>>0>>0?(g=e+(h<<2)|0,(f|0)!=(g|0)):0)k[t>>2]=f+(~((f+-4-g|0)>>>2)<<2)}else jh(s,h-d|0);q=c+8|0;o=q;j=k[o>>2]|0;o=k[o+4>>2]|0;r=c+16|0;g=r;f=k[g>>2]|0;g=k[g+4>>2]|0;if(!((o|0)>(g|0)|(o|0)==(g|0)&j>>>0>f>>>0)){u=0;return u|0}m=k[c>>2]|0;p=i[m+f>>0]|0;d=sl(f|0,g|0,1,0)|0;e=M;n=r;k[n>>2]=d;k[n+4>>2]=e;a:do if(!(p<<24>>24)){if(!((o|0)>(e|0)|(o|0)==(e|0)&j>>>0>d>>>0)){u=0;return u|0}l=i[m+d>>0]|0;e=sl(f|0,g|0,2,0)|0;f=M;g=r;k[g>>2]=e;k[g+4>>2]=f;g=k[t>>2]|0;n=k[s>>2]|0;d=g-n|0;h=n;if(l<<24>>24==4){q=sl(e|0,f|0,d|0,0)|0;p=M;if((o|0)<(p|0)|(o|0)==(p|0)&j>>>0>>0){u=0;return u|0}else{Ii(h|0,m+e|0,d|0)|0;q=r;q=sl(k[q>>2]|0,k[q+4>>2]|0,d|0,0)|0;k[r>>2]=q;k[r+4>>2]=M;break}}if(d|0){p=l&255;m=l&255;d=0;l=o;h=n;while(1){o=sl(e|0,f|0,p|0,0)|0;n=M;if(!((l|0)<(n|0)|(l|0)==(n|0)&j>>>0>>0)){Ii(h+(d<<2)|0,(k[c>>2]|0)+e|0,m|0)|0;e=r;e=sl(k[e>>2]|0,k[e+4>>2]|0,p|0,0)|0;f=M;h=r;k[h>>2]=e;k[h+4>>2]=f;h=k[s>>2]|0;g=k[t>>2]|0}d=d+1|0;if(d>>>0>=g-h>>2>>>0)break a;j=q;l=k[j+4>>2]|0;j=k[j>>2]|0}}}else if(!(zh(h,u,c,k[s>>2]|0)|0)){u=0;return u|0}while(0);g=k[s>>2]|0;d=k[t>>2]|0;do if((g|0)==(d|0))f=a+28|0;else{f=a+28|0;e=k[f>>2]|0;if(!e)e=g;else{if(Va[k[(k[e>>2]|0)+40>>2]&127](e)|0)break;e=k[s>>2]|0;d=k[t>>2]|0}_j(e,d-e>>2,e)}while(0);d=k[f>>2]|0;if(d|0){if(!(Za[k[(k[d>>2]|0)+36>>2]&127](d,c)|0)){u=0;return u|0}e=k[s>>2]|0;d=k[t>>2]|0;if((e|0)!=(d|0)?(t=k[f>>2]|0,!(Ua[k[(k[t>>2]|0)+52>>2]&63](t,e,e,d-e>>2,u,k[b>>2]|0)|0)):0){u=0;return u|0}}u=1;return u|0}function pd(a,b,c,d){a=a|0;b=b|0;c=c|0;d=d|0;var e=0,f=0,g=0,h=0,i=0,j=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0.0;o=b+8|0;r=k[o>>2]|0;g=(k[c>>2]|0)-r|0;n=c+4|0;h=(k[n>>2]|0)-r|0;e=c;k[e>>2]=g;k[e+4>>2]=h;s=+O(+(+(g|0)))+ +O(+(+(h|0)));e=k[o>>2]|0;p=s<=+(e|0);if(!p){if((g|0)>-1)if((h|0)<=-1)if((g|0)<1){i=-1;j=-1}else q=6;else{i=1;j=1}else if((h|0)<1){i=-1;j=-1}else q=6;if((q|0)==6){i=(g|0)>0?1:-1;j=(h|0)>0?1:-1}m=$(e,i)|0;l=$(e,j)|0;e=(g<<1)-m|0;k[c>>2]=e;f=(h<<1)-l|0;k[n>>2]=f;if(($(i,j)|0)>-1){f=0-f|0;k[c>>2]=f;e=0-e|0}else k[c>>2]=f;g=(f+m|0)/2|0;k[c>>2]=g;h=(e+l|0)/2|0;k[n>>2]=h}if(!g)e=(h|0)==0;else e=(g|0)<0&(h|0)<1;do if(!g)if(!h)l=0;else l=(h|0)>0?3:1;else if((g|0)>0){l=(h>>31)+2|0;break}else{l=(h|0)<1?0:3;break}while(0);if(e){i=1;f=g;e=h}else{switch(l|0){case 1:{f=h;e=0-g|0;break}case 2:{f=0-g|0;e=0-h|0;break}case 3:{f=0-h|0;e=g;break}default:{f=g;e=h}}i=c;k[i>>2]=f;k[i+4>>2]=e;i=0}g=(k[d>>2]|0)+f|0;k[a>>2]=g;e=(k[d+4>>2]|0)+e|0;m=a+4|0;k[m>>2]=e;j=k[o>>2]|0;if((j|0)>=(g|0)){if((g|0)<(0-j|0))g=(k[b+4>>2]|0)+g|0}else g=g-(k[b+4>>2]|0)|0;k[a>>2]=g;if((j|0)>=(e|0)){if((e|0)<(0-j|0))e=(k[b+4>>2]|0)+e|0}else e=e-(k[b+4>>2]|0)|0;k[m>>2]=e;if(i){f=g;i=e}else{switch((4-l|0)%4|0|0){case 1:{f=e;e=0-g|0;break}case 2:{f=0-g|0;e=0-e|0;break}case 3:{f=0-e|0;e=g;break}default:f=g}i=a;k[i>>2]=f;k[i+4>>2]=e;i=e}if(p){p=f;q=i;p=p+r|0;q=q+r|0;r=a;a=r;k[a>>2]=p;r=r+4|0;k[r>>2]=q;return}if((f|0)>-1)if((i|0)<=-1)if((f|0)<1){g=-1;h=-1}else q=45;else{g=1;h=1}else if((i|0)<1){g=-1;h=-1}else q=45;if((q|0)==45){g=(f|0)>0?1:-1;h=(i|0)>0?1:-1}l=$(j,g)|0;j=$(j,h)|0;e=(f<<1)-l|0;k[a>>2]=e;f=(i<<1)-j|0;k[m>>2]=f;if(($(g,h)|0)>-1){f=0-f|0;k[a>>2]=f;e=0-e|0}else k[a>>2]=f;p=(f+l|0)/2|0;k[a>>2]=p;q=(e+j|0)/2|0;k[m>>2]=q;p=p+r|0;q=q+r|0;r=a;a=r;k[a>>2]=p;r=r+4|0;k[r>>2]=q;return}function qd(a,b){a=a|0;b=b|0;var c=0,d=0,e=0,f=0,g=0,h=0,i=0,l=0,m=0,n=0,o=0,p=0;d=a+4|0;if(!b){c=k[a>>2]|0;k[a>>2]=0;if(c|0)cn(c);k[d>>2]=0;return}if(b>>>0>1073741823){a=Ma(4)|0;Om(a);xa(a|0,1024,93)}o=xk(b<<2)|0;c=k[a>>2]|0;k[a>>2]=o;if(c|0)cn(c);k[d>>2]=b;c=0;do{k[(k[a>>2]|0)+(c<<2)>>2]=0;c=c+1|0}while((c|0)!=(b|0));d=a+8|0;g=k[d>>2]|0;if(!g)return;c=k[g+4>>2]|0;n=b+-1|0;o=(n&b|0)==0;if(o)c=c&n;else c=(c>>>0)%(b>>>0)|0;k[(k[a>>2]|0)+(c<<2)>>2]=d;d=k[g>>2]|0;if(!d)return;else{e=c;f=g;c=g}a:while(1){m=c;b:while(1){c:do if(o){c=d;while(1){l=k[c+4>>2]&n;if((l|0)==(e|0))break c;d=(k[a>>2]|0)+(l<<2)|0;if(!(k[d>>2]|0)){e=l;break b}i=c+10|0;g=k[c>>2]|0;d:do if(!g)d=c;else{h=j[c+8>>1]|0;d=c;while(1){if(h<<16>>16!=(j[g+8>>1]|0))break d;if((j[i>>1]|0)!=(j[g+10>>1]|0))break d;d=k[g>>2]|0;if(!d){d=g;break}else{p=g;g=d;d=p}}}while(0);k[m>>2]=k[d>>2];k[d>>2]=k[k[(k[a>>2]|0)+(l<<2)>>2]>>2];k[k[(k[a>>2]|0)+(l<<2)>>2]>>2]=c;c=k[f>>2]|0;if(!c){c=36;break a}}}else{c=d;while(1){l=((k[c+4>>2]|0)>>>0)%(b>>>0)|0;if((l|0)==(e|0))break c;d=(k[a>>2]|0)+(l<<2)|0;if(!(k[d>>2]|0)){e=l;break b}h=c+10|0;g=k[c>>2]|0;e:do if(!g)d=c;else{i=j[c+8>>1]|0;d=c;while(1){if(i<<16>>16!=(j[g+8>>1]|0))break e;if((j[h>>1]|0)!=(j[g+10>>1]|0))break e;d=k[g>>2]|0;if(!d){d=g;break}else{p=g;g=d;d=p}}}while(0);k[m>>2]=k[d>>2];k[d>>2]=k[k[(k[a>>2]|0)+(l<<2)>>2]>>2];k[k[(k[a>>2]|0)+(l<<2)>>2]>>2]=c;c=k[f>>2]|0;if(!c){c=36;break a}}}while(0);d=k[c>>2]|0;if(!d){c=36;break a}else{f=c;m=c}}k[d>>2]=m;d=k[c>>2]|0;if(!d){c=36;break}else f=c}if((c|0)==36)return}function rd(a,b){a=a|0;b=b|0;var c=0,d=0,e=0,f=0,g=0,h=0,i=0,j=0,l=0,m=0,n=0,o=0;d=a+4|0;if(!b){c=k[a>>2]|0;k[a>>2]=0;if(c|0)cn(c);k[d>>2]=0;return}if(b>>>0>1073741823){a=Ma(4)|0;Om(a);xa(a|0,1024,93)}n=xk(b<<2)|0;c=k[a>>2]|0;k[a>>2]=n;if(c|0)cn(c);k[d>>2]=b;c=0;do{k[(k[a>>2]|0)+(c<<2)>>2]=0;c=c+1|0}while((c|0)!=(b|0));d=a+8|0;g=k[d>>2]|0;if(!g)return;c=k[g+4>>2]|0;m=b+-1|0;n=(m&b|0)==0;if(n)c=c&m;else c=(c>>>0)%(b>>>0)|0;k[(k[a>>2]|0)+(c<<2)>>2]=d;d=k[g>>2]|0;if(!d)return;else{e=c;f=g;c=g}a:while(1){l=c;b:while(1){c:do if(n){c=d;while(1){j=k[c+4>>2]&m;if((j|0)==(e|0))break c;d=(k[a>>2]|0)+(j<<2)|0;if(!(k[d>>2]|0)){e=j;break b}i=c+12|0;g=k[c>>2]|0;d:do if(!g)d=c;else{h=k[c+8>>2]|0;d=c;while(1){if((h|0)!=(k[g+8>>2]|0))break d;if((k[i>>2]|0)!=(k[g+12>>2]|0))break d;d=k[g>>2]|0;if(!d){d=g;break}else{o=g;g=d;d=o}}}while(0);k[l>>2]=k[d>>2];k[d>>2]=k[k[(k[a>>2]|0)+(j<<2)>>2]>>2];k[k[(k[a>>2]|0)+(j<<2)>>2]>>2]=c;c=k[f>>2]|0;if(!c){c=36;break a}}}else{c=d;while(1){j=((k[c+4>>2]|0)>>>0)%(b>>>0)|0;if((j|0)==(e|0))break c;d=(k[a>>2]|0)+(j<<2)|0;if(!(k[d>>2]|0)){e=j;break b}h=c+12|0;g=k[c>>2]|0;e:do if(!g)d=c;else{i=k[c+8>>2]|0;d=c;while(1){if((i|0)!=(k[g+8>>2]|0))break e;if((k[h>>2]|0)!=(k[g+12>>2]|0))break e;d=k[g>>2]|0;if(!d){d=g;break}else{o=g;g=d;d=o}}}while(0);k[l>>2]=k[d>>2];k[d>>2]=k[k[(k[a>>2]|0)+(j<<2)>>2]>>2];k[k[(k[a>>2]|0)+(j<<2)>>2]>>2]=c;c=k[f>>2]|0;if(!c){c=36;break a}}}while(0);d=k[c>>2]|0;if(!d){c=36;break a}else{f=c;l=c}}k[d>>2]=l;d=k[c>>2]|0;if(!d){c=36;break}else f=c}if((c|0)==36)return}function sd(a,b){a=a|0;b=b|0;var c=0,d=0,e=0,f=0,g=0,h=0,j=0,l=0,m=0,n=0,o=0,p=0;d=a+4|0;if(!b){c=k[a>>2]|0;k[a>>2]=0;if(c|0)cn(c);k[d>>2]=0;return}if(b>>>0>1073741823){a=Ma(4)|0;Om(a);xa(a|0,1024,93)}o=xk(b<<2)|0;c=k[a>>2]|0;k[a>>2]=o;if(c|0)cn(c);k[d>>2]=b;c=0;do{k[(k[a>>2]|0)+(c<<2)>>2]=0;c=c+1|0}while((c|0)!=(b|0));d=a+8|0;g=k[d>>2]|0;if(!g)return;c=k[g+4>>2]|0;n=b+-1|0;o=(n&b|0)==0;if(o)c=c&n;else c=(c>>>0)%(b>>>0)|0;k[(k[a>>2]|0)+(c<<2)>>2]=d;d=k[g>>2]|0;if(!d)return;else{e=c;f=g;c=g}a:while(1){m=c;b:while(1){c:do if(o){c=d;while(1){l=k[c+4>>2]&n;if((l|0)==(e|0))break c;d=(k[a>>2]|0)+(l<<2)|0;if(!(k[d>>2]|0)){e=l;break b}j=c+9|0;g=k[c>>2]|0;d:do if(!g)d=c;else{h=i[c+8>>0]|0;d=c;while(1){if(h<<24>>24!=(i[g+8>>0]|0))break d;if((i[j>>0]|0)!=(i[g+9>>0]|0))break d;d=k[g>>2]|0;if(!d){d=g;break}else{p=g;g=d;d=p}}}while(0);k[m>>2]=k[d>>2];k[d>>2]=k[k[(k[a>>2]|0)+(l<<2)>>2]>>2];k[k[(k[a>>2]|0)+(l<<2)>>2]>>2]=c;c=k[f>>2]|0;if(!c){c=36;break a}}}else{c=d;while(1){l=((k[c+4>>2]|0)>>>0)%(b>>>0)|0;if((l|0)==(e|0))break c;d=(k[a>>2]|0)+(l<<2)|0;if(!(k[d>>2]|0)){e=l;break b}h=c+9|0;g=k[c>>2]|0;e:do if(!g)d=c;else{j=i[c+8>>0]|0;d=c;while(1){if(j<<24>>24!=(i[g+8>>0]|0))break e;if((i[h>>0]|0)!=(i[g+9>>0]|0))break e;d=k[g>>2]|0;if(!d){d=g;break}else{p=g;g=d;d=p}}}while(0);k[m>>2]=k[d>>2];k[d>>2]=k[k[(k[a>>2]|0)+(l<<2)>>2]>>2];k[k[(k[a>>2]|0)+(l<<2)>>2]>>2]=c;c=k[f>>2]|0;if(!c){c=36;break a}}}while(0);d=k[c>>2]|0;if(!d){c=36;break a}else{f=c;m=c}}k[d>>2]=m;d=k[c>>2]|0;if(!d){c=36;break}else f=c}if((c|0)==36)return}function td(a,b,c){a=a|0;b=b|0;c=c|0;var d=Pa,e=0,f=Pa,g=0,h=0;switch(i[a+24>>0]|0){case 1:{g=k[b>>2]|0;e=a+48|0;b=k[e>>2]|0;e=k[e+4>>2]|0;h=a+40|0;e=(sl(uk(k[h>>2]|0,k[h+4>>2]|0,g|0,((g|0)<0)<<31>>31|0)|0,M|0,b|0,e|0)|0)+(k[k[a>>2]>>2]|0)|0;f=da((l[e>>0]|l[e+1>>0]<<8)&65535);d=da(f/da(65535.0));o[c>>2]=(i[a+32>>0]|0)==0?f:d;c=c+4|0;k[c>>2]=0;k[c+4>>2]=0;c=1;return c|0}case 2:{g=k[b>>2]|0;h=a+48|0;b=k[h>>2]|0;h=k[h+4>>2]|0;e=a+40|0;h=(sl(uk(k[e>>2]|0,k[e+4>>2]|0,g|0,((g|0)<0)<<31>>31|0)|0,M|0,b|0,h|0)|0)+(k[k[a>>2]>>2]|0)|0;h=l[h>>0]|l[h+1>>0]<<8|l[h+2>>0]<<16|l[h+3>>0]<<24;b=h>>>16&65535;d=da(h&65535);if(!(i[a+32>>0]|0)){o[c>>2]=d;d=da(b&65535)}else{d=da(d/da(65535.0));o[c>>2]=d;d=da(da(b&65535)/da(65535.0))}o[c+4>>2]=d;o[c+8>>2]=da(0.0);h=1;return h|0}case 3:{e=k[b>>2]|0;h=a+48|0;b=k[h>>2]|0;h=k[h+4>>2]|0;g=a+40|0;h=(sl(uk(k[g>>2]|0,k[g+4>>2]|0,e|0,((e|0)<0)<<31>>31|0)|0,M|0,b|0,h|0)|0)+(k[k[a>>2]>>2]|0)|0;b=h+2|0;b=l[b>>0]|l[b+1>>0]<<8;e=h+4|0;e=l[e>>0]|l[e+1>>0]<<8;d=da((l[h>>0]|l[h+1>>0]<<8)&65535);if(!(i[a+32>>0]|0)){o[c>>2]=d;f=da(b&65535);o[c+4>>2]=f;f=da(e&65535);o[c+8>>2]=f;h=1;return h|0}else{f=da(d/da(65535.0));o[c>>2]=f;f=da(da(b&65535)/da(65535.0));o[c+4>>2]=f;f=da(da(e&65535)/da(65535.0));o[c+8>>2]=f;h=1;return h|0}}case 4:{h=k[b>>2]|0;e=a+48|0;g=k[e>>2]|0;e=k[e+4>>2]|0;b=a+40|0;e=(sl(uk(k[b>>2]|0,k[b+4>>2]|0,h|0,((h|0)<0)<<31>>31|0)|0,M|0,g|0,e|0)|0)+(k[k[a>>2]>>2]|0)|0;g=e;g=l[g>>0]|l[g+1>>0]<<8|l[g+2>>0]<<16|l[g+3>>0]<<24;e=e+4|0;e=l[e>>0]|l[e+1>>0]<<8|l[e+2>>0]<<16|l[e+3>>0]<<24;h=(i[a+32>>0]|0)==0;b=(Zk(g|0,e|0,16)|0)&65535;e=e&65535;d=da(g&65535);if(h){o[c>>2]=d;f=da(b&65535);o[c+4>>2]=f;f=da(e&65535);o[c+8>>2]=f;h=1;return h|0}else{f=da(d/da(65535.0));o[c>>2]=f;f=da(da(b&65535)/da(65535.0));o[c+4>>2]=f;f=da(da(e&65535)/da(65535.0));o[c+8>>2]=f;h=1;return h|0}}default:{h=0;return h|0}}return 0}function ud(a,b,c,d,e,f){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;f=f|0;var g=0,h=0,i=0,j=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0;t=a+8|0;k[t>>2]=e;i=a+32|0;j=a+36|0;h=k[j>>2]|0;g=k[i>>2]|0;f=h-g>>2;if(f>>>0>=e>>>0)if(f>>>0>e>>>0?(l=g+(e<<2)|0,(h|0)!=(l|0)):0){k[j>>2]=h+(~((h+-4-l|0)>>>2)<<2);f=e}else f=e;else{jh(i,e-f|0);f=k[t>>2]|0}r=e>>>0>1073741823?-1:e<<2;s=$m(r)|0;Vi(s|0,0,r|0)|0;if((f|0)>0){m=a+16|0;l=a+32|0;n=a+12|0;j=0;do{i=k[s+(j<<2)>>2]|0;f=k[m>>2]|0;do if((i|0)<=(f|0)){f=k[n>>2]|0;g=k[l>>2]|0;h=g+(j<<2)|0;if((i|0)<(f|0)){k[h>>2]=f;h=g;break}else{k[h>>2]=i;h=g;break}}else{h=k[l>>2]|0;k[h+(j<<2)>>2]=f}while(0);j=j+1|0;f=k[t>>2]|0}while((j|0)<(f|0));if((f|0)>0){g=0;do{k[c+(g<<2)>>2]=(k[b+(g<<2)>>2]|0)+(k[h+(g<<2)>>2]|0);g=g+1|0;f=k[t>>2]|0}while((g|0)<(f|0));if((f|0)>0){i=a+20|0;h=0;do{f=c+(h<<2)|0;g=k[f>>2]|0;if((g|0)<=(k[m>>2]|0)){if((g|0)<(k[n>>2]|0))k[f>>2]=(k[i>>2]|0)+g}else k[f>>2]=g-(k[i>>2]|0);h=h+1|0;f=k[t>>2]|0}while((h|0)<(f|0))}}}if((e|0)>=(d|0)){an(s);return 1}o=0-e|0;p=a+16|0;q=a+32|0;r=a+12|0;a=a+20|0;n=e;do{m=c+(n<<2)|0;l=m+(o<<2)|0;if((f|0)>0){j=0;do{i=k[l+(j<<2)>>2]|0;f=k[p>>2]|0;do if((i|0)<=(f|0)){f=k[r>>2]|0;g=k[q>>2]|0;h=g+(j<<2)|0;if((i|0)<(f|0)){k[h>>2]=f;h=g;break}else{k[h>>2]=i;h=g;break}}else{h=k[q>>2]|0;k[h+(j<<2)>>2]=f}while(0);j=j+1|0;f=k[t>>2]|0}while((j|0)<(f|0));if((f|0)>0){g=0;do{k[m+(g<<2)>>2]=(k[b+(g+n<<2)>>2]|0)+(k[h+(g<<2)>>2]|0);g=g+1|0;f=k[t>>2]|0}while((g|0)<(f|0));if((f|0)>0){h=0;do{f=m+(h<<2)|0;g=k[f>>2]|0;if((g|0)<=(k[p>>2]|0)){if((g|0)<(k[r>>2]|0))k[f>>2]=(k[a>>2]|0)+g}else k[f>>2]=g-(k[a>>2]|0);h=h+1|0;f=k[t>>2]|0}while((h|0)<(f|0))}}}n=n+e|0}while((n|0)<(d|0));an(s);return 1}function vd(a,b,c){a=a|0;b=b|0;c=c|0;var d=Pa,e=Pa,f=0,g=0,h=0;switch(i[a+24>>0]|0){case 1:{b=k[b>>2]|0;g=a+48|0;f=k[g>>2]|0;g=k[g+4>>2]|0;h=a+40|0;g=sl(uk(k[h>>2]|0,k[h+4>>2]|0,b|0,((b|0)<0)<<31>>31|0)|0,M|0,f|0,g|0)|0;d=da(i[(k[k[a>>2]>>2]|0)+g>>0]|0);e=da(d/da(127.0));o[c>>2]=(i[a+32>>0]|0)==0?d:e;c=c+4|0;k[c>>2]=0;k[c+4>>2]=0;k[c+8>>2]=0;c=1;return c|0}case 2:{g=k[b>>2]|0;h=a+48|0;b=k[h>>2]|0;h=k[h+4>>2]|0;f=a+40|0;h=(sl(uk(k[f>>2]|0,k[f+4>>2]|0,g|0,((g|0)<0)<<31>>31|0)|0,M|0,b|0,h|0)|0)+(k[k[a>>2]>>2]|0)|0;h=l[h>>0]|l[h+1>>0]<<8;b=(h&65535)>>>8&255;d=da((h&255)<<24>>24);if(!(i[a+32>>0]|0)){o[c>>2]=d;d=da(b<<24>>24)}else{d=da(d/da(127.0));o[c>>2]=d;d=da(da(b<<24>>24)/da(127.0))}o[c+4>>2]=d;h=c+8|0;k[h>>2]=0;k[h+4>>2]=0;h=1;return h|0}case 3:{b=k[b>>2]|0;h=a+48|0;f=k[h>>2]|0;h=k[h+4>>2]|0;g=a+40|0;h=(sl(uk(k[g>>2]|0,k[g+4>>2]|0,b|0,((b|0)<0)<<31>>31|0)|0,M|0,f|0,h|0)|0)+(k[k[a>>2]>>2]|0)|0;f=i[h+1>>0]|0;b=i[h+2>>0]|0;d=da(i[h>>0]|0);if(!(i[a+32>>0]|0)){o[c>>2]=d;e=da(b<<24>>24);d=da(f<<24>>24)}else{e=da(d/da(127.0));o[c>>2]=e;e=da(da(b<<24>>24)/da(127.0));d=da(da(f<<24>>24)/da(127.0))}o[c+4>>2]=d;o[c+8>>2]=e;o[c+12>>2]=da(0.0);h=1;return h|0}case 4:{f=k[b>>2]|0;h=a+48|0;b=k[h>>2]|0;h=k[h+4>>2]|0;g=a+40|0;h=(sl(uk(k[g>>2]|0,k[g+4>>2]|0,f|0,((f|0)<0)<<31>>31|0)|0,M|0,b|0,h|0)|0)+(k[k[a>>2]>>2]|0)|0;h=l[h>>0]|l[h+1>>0]<<8|l[h+2>>0]<<16|l[h+3>>0]<<24;b=h>>>8&255;f=h>>>16&255;g=h>>>24&255;d=da((h&255)<<24>>24);if(!(i[a+32>>0]|0)){o[c>>2]=d;e=da(b<<24>>24);o[c+4>>2]=e;e=da(f<<24>>24);o[c+8>>2]=e;e=da(g<<24>>24);o[c+12>>2]=e;h=1;return h|0}else{e=da(d/da(127.0));o[c>>2]=e;e=da(da(b<<24>>24)/da(127.0));o[c+4>>2]=e;e=da(da(f<<24>>24)/da(127.0));o[c+8>>2]=e;e=da(da(g<<24>>24)/da(127.0));o[c+12>>2]=e;h=1;return h|0}}default:{h=0;return h|0}}return 0}function wd(a,b){a=a|0;b=b|0;var c=0,d=0,e=0,f=0,g=0,h=0,i=0,j=0,l=0,m=0,n=0;n=r;r=r+48|0;j=n+40|0;l=n+36|0;c=n+32|0;m=n;d=a+56|0;k[c>>2]=k[d>>2];i=b+16|0;h=i;g=k[h+4>>2]|0;if(!((g|0)>0|(g|0)==0&(k[h>>2]|0)>>>0>0)){k[l>>2]=k[b+4>>2];k[j>>2]=k[l>>2];Ke(b,j,c,c+4|0)|0}yk(m);wi(m);e=k[a+52>>2]|0;g=k[d>>2]|0;f=g>>>5;h=e+(f<<2)|0;g=g&31;d=(f|0)!=0;a:do if(f|g|0){if(!g){c=1;f=e;while(1){if(d){d=0;while(1){e=(k[f>>2]&1<>2]&1<>2]&1<>2]&1<>2]|0;if((g|0)>0|(g|0)==0&(k[h>>2]|0)>>>0>0){Oh(m);r=n;return 1}d=b+4|0;k[l>>2]=k[d>>2];k[j>>2]=k[l>>2];Ke(b,j,c,c+4|0)|0;h=k[i+4>>2]|0;c=a+16|0;if((h|0)>0|(h|0)==0&(k[i>>2]|0)>>>0>0){Oh(m);r=n;return 1}k[l>>2]=k[d>>2];k[j>>2]=k[l>>2];Ke(b,j,c,c+4|0)|0;Oh(m);r=n;return 1}function xd(a,b){a=a|0;b=b|0;var c=0,d=0,e=0,f=0,g=0,h=0,i=0,j=0,l=0,m=0,n=0;n=r;r=r+48|0;j=n+40|0;l=n+36|0;c=n+32|0;m=n;d=a+80|0;k[c>>2]=k[d>>2];i=b+16|0;h=i;g=k[h+4>>2]|0;if(!((g|0)>0|(g|0)==0&(k[h>>2]|0)>>>0>0)){k[l>>2]=k[b+4>>2];k[j>>2]=k[l>>2];Ke(b,j,c,c+4|0)|0}yk(m);wi(m);e=k[a+76>>2]|0;g=k[d>>2]|0;f=g>>>5;h=e+(f<<2)|0;g=g&31;d=(f|0)!=0;a:do if(f|g|0){if(!g){c=1;f=e;while(1){if(d){d=0;while(1){e=(k[f>>2]&1<>2]&1<>2]&1<>2]&1<>2]|0;if((g|0)>0|(g|0)==0&(k[h>>2]|0)>>>0>0){Oh(m);r=n;return 1}d=b+4|0;k[l>>2]=k[d>>2];k[j>>2]=k[l>>2];Ke(b,j,c,c+4|0)|0;h=k[i+4>>2]|0;c=a+16|0;if((h|0)>0|(h|0)==0&(k[i>>2]|0)>>>0>0){Oh(m);r=n;return 1}k[l>>2]=k[d>>2];k[j>>2]=k[l>>2];Ke(b,j,c,c+4|0)|0;Oh(m);r=n;return 1}function yd(a,b,c){a=a|0;b=b|0;c=c|0;var d=Pa,e=Pa,f=0,g=0,h=0;switch(i[a+24>>0]|0){case 1:{g=k[b>>2]|0;b=a+48|0;f=k[b>>2]|0;b=k[b+4>>2]|0;h=a+40|0;b=(sl(uk(k[h>>2]|0,k[h+4>>2]|0,g|0,((g|0)<0)<<31>>31|0)|0,M|0,f|0,b|0)|0)+(k[k[a>>2]>>2]|0)|0;e=da((l[b>>0]|l[b+1>>0]<<8|l[b+2>>0]<<16|l[b+3>>0]<<24)>>>0);d=da(e*da(2.32830644e-10));o[c>>2]=(i[a+32>>0]|0)==0?e:d;o[c+4>>2]=da(0.0);c=1;return c|0}case 2:{g=k[b>>2]|0;b=a+48|0;h=k[b>>2]|0;b=k[b+4>>2]|0;f=a+40|0;b=(sl(uk(k[f>>2]|0,k[f+4>>2]|0,g|0,((g|0)<0)<<31>>31|0)|0,M|0,h|0,b|0)|0)+(k[k[a>>2]>>2]|0)|0;h=b;b=b+4|0;b=l[b>>0]|l[b+1>>0]<<8|l[b+2>>0]<<16|l[b+3>>0]<<24;d=da((l[h>>0]|l[h+1>>0]<<8|l[h+2>>0]<<16|l[h+3>>0]<<24)>>>0);if(!(i[a+32>>0]|0)){o[c>>2]=d;e=da(b>>>0);o[c+4>>2]=e;h=1;return h|0}else{e=da(d*da(2.32830644e-10));o[c>>2]=e;e=da(da(b>>>0)*da(2.32830644e-10));o[c+4>>2]=e;h=1;return h|0}}case 3:{g=k[b>>2]|0;h=a+48|0;b=k[h>>2]|0;h=k[h+4>>2]|0;f=a+40|0;h=(sl(uk(k[f>>2]|0,k[f+4>>2]|0,g|0,((g|0)<0)<<31>>31|0)|0,M|0,b|0,h|0)|0)+(k[k[a>>2]>>2]|0)|0;b=h+4|0;b=l[b>>0]|l[b+1>>0]<<8|l[b+2>>0]<<16|l[b+3>>0]<<24;d=da((l[h>>0]|l[h+1>>0]<<8|l[h+2>>0]<<16|l[h+3>>0]<<24)>>>0);if(!(i[a+32>>0]|0)){o[c>>2]=d;e=da(b>>>0);o[c+4>>2]=e;h=1;return h|0}else{e=da(d*da(2.32830644e-10));o[c>>2]=e;e=da(da(b>>>0)*da(2.32830644e-10));o[c+4>>2]=e;h=1;return h|0}}case 4:{g=k[b>>2]|0;h=a+48|0;b=k[h>>2]|0;h=k[h+4>>2]|0;f=a+40|0;h=(sl(uk(k[f>>2]|0,k[f+4>>2]|0,g|0,((g|0)<0)<<31>>31|0)|0,M|0,b|0,h|0)|0)+(k[k[a>>2]>>2]|0)|0;b=h+4|0;b=l[b>>0]|l[b+1>>0]<<8|l[b+2>>0]<<16|l[b+3>>0]<<24;d=da((l[h>>0]|l[h+1>>0]<<8|l[h+2>>0]<<16|l[h+3>>0]<<24)>>>0);if(!(i[a+32>>0]|0)){o[c>>2]=d;e=da(b>>>0);o[c+4>>2]=e;h=1;return h|0}else{e=da(d*da(2.32830644e-10));o[c>>2]=e;e=da(da(b>>>0)*da(2.32830644e-10));o[c+4>>2]=e;h=1;return h|0}}default:{h=0;return h|0}}return 0}function zd(a,b,c){a=a|0;b=b|0;c=c|0;var d=Pa,e=Pa,f=0,g=0,h=0;switch(i[a+24>>0]|0){case 1:{b=k[b>>2]|0;g=a+48|0;f=k[g>>2]|0;g=k[g+4>>2]|0;h=a+40|0;g=sl(uk(k[h>>2]|0,k[h+4>>2]|0,b|0,((b|0)<0)<<31>>31|0)|0,M|0,f|0,g|0)|0;d=da(l[(k[k[a>>2]>>2]|0)+g>>0]|0);e=da(d/da(255.0));o[c>>2]=(i[a+32>>0]|0)==0?d:e;c=c+4|0;k[c>>2]=0;k[c+4>>2]=0;k[c+8>>2]=0;c=1;return c|0}case 2:{g=k[b>>2]|0;h=a+48|0;b=k[h>>2]|0;h=k[h+4>>2]|0;f=a+40|0;h=(sl(uk(k[f>>2]|0,k[f+4>>2]|0,g|0,((g|0)<0)<<31>>31|0)|0,M|0,b|0,h|0)|0)+(k[k[a>>2]>>2]|0)|0;h=l[h>>0]|l[h+1>>0]<<8;b=(h&65535)>>>8&255;d=da(h&255);if(!(i[a+32>>0]|0)){o[c>>2]=d;d=da(b&255)}else{d=da(d/da(255.0));o[c>>2]=d;d=da(da(b&255)/da(255.0))}o[c+4>>2]=d;h=c+8|0;k[h>>2]=0;k[h+4>>2]=0;h=1;return h|0}case 3:{b=k[b>>2]|0;h=a+48|0;f=k[h>>2]|0;h=k[h+4>>2]|0;g=a+40|0;h=(sl(uk(k[g>>2]|0,k[g+4>>2]|0,b|0,((b|0)<0)<<31>>31|0)|0,M|0,f|0,h|0)|0)+(k[k[a>>2]>>2]|0)|0;f=i[h+1>>0]|0;b=i[h+2>>0]|0;d=da(l[h>>0]|0);if(!(i[a+32>>0]|0)){o[c>>2]=d;e=da(b&255);d=da(f&255)}else{e=da(d/da(255.0));o[c>>2]=e;e=da(da(b&255)/da(255.0));d=da(da(f&255)/da(255.0))}o[c+4>>2]=d;o[c+8>>2]=e;o[c+12>>2]=da(0.0);h=1;return h|0}case 4:{f=k[b>>2]|0;h=a+48|0;b=k[h>>2]|0;h=k[h+4>>2]|0;g=a+40|0;h=(sl(uk(k[g>>2]|0,k[g+4>>2]|0,f|0,((f|0)<0)<<31>>31|0)|0,M|0,b|0,h|0)|0)+(k[k[a>>2]>>2]|0)|0;h=l[h>>0]|l[h+1>>0]<<8|l[h+2>>0]<<16|l[h+3>>0]<<24;b=h>>>8&255;f=h>>>16&255;g=h>>>24&255;d=da(h&255);if(!(i[a+32>>0]|0)){o[c>>2]=d;e=da(b&255);o[c+4>>2]=e;e=da(f&255);o[c+8>>2]=e;e=da(g&255);o[c+12>>2]=e;h=1;return h|0}else{e=da(d/da(255.0));o[c>>2]=e;e=da(da(b&255)/da(255.0));o[c+4>>2]=e;e=da(da(f&255)/da(255.0));o[c+8>>2]=e;e=da(da(g&255)/da(255.0));o[c+12>>2]=e;h=1;return h|0}}default:{h=0;return h|0}}return 0}function Ad(a,b,c){a=a|0;b=b|0;c=c|0;var d=Pa,e=Pa,f=0,g=0,h=0;switch(i[a+24>>0]|0){case 1:{g=k[b>>2]|0;b=a+48|0;f=k[b>>2]|0;b=k[b+4>>2]|0;h=a+40|0;b=(sl(uk(k[h>>2]|0,k[h+4>>2]|0,g|0,((g|0)<0)<<31>>31|0)|0,M|0,f|0,b|0)|0)+(k[k[a>>2]>>2]|0)|0;e=da(l[b>>0]|l[b+1>>0]<<8|l[b+2>>0]<<16|l[b+3>>0]<<24|0);d=da(e*da(4.65661287e-10));o[c>>2]=(i[a+32>>0]|0)==0?e:d;o[c+4>>2]=da(0.0);c=1;return c|0}case 2:{g=k[b>>2]|0;b=a+48|0;h=k[b>>2]|0;b=k[b+4>>2]|0;f=a+40|0;b=(sl(uk(k[f>>2]|0,k[f+4>>2]|0,g|0,((g|0)<0)<<31>>31|0)|0,M|0,h|0,b|0)|0)+(k[k[a>>2]>>2]|0)|0;h=b;b=b+4|0;b=l[b>>0]|l[b+1>>0]<<8|l[b+2>>0]<<16|l[b+3>>0]<<24;d=da(l[h>>0]|l[h+1>>0]<<8|l[h+2>>0]<<16|l[h+3>>0]<<24|0);if(!(i[a+32>>0]|0)){o[c>>2]=d;e=da(b|0);o[c+4>>2]=e;h=1;return h|0}else{e=da(d*da(4.65661287e-10));o[c>>2]=e;e=da(da(b|0)*da(4.65661287e-10));o[c+4>>2]=e;h=1;return h|0}}case 3:{g=k[b>>2]|0;h=a+48|0;b=k[h>>2]|0;h=k[h+4>>2]|0;f=a+40|0;h=(sl(uk(k[f>>2]|0,k[f+4>>2]|0,g|0,((g|0)<0)<<31>>31|0)|0,M|0,b|0,h|0)|0)+(k[k[a>>2]>>2]|0)|0;b=h+4|0;b=l[b>>0]|l[b+1>>0]<<8|l[b+2>>0]<<16|l[b+3>>0]<<24;d=da(l[h>>0]|l[h+1>>0]<<8|l[h+2>>0]<<16|l[h+3>>0]<<24|0);if(!(i[a+32>>0]|0)){o[c>>2]=d;e=da(b|0);o[c+4>>2]=e;h=1;return h|0}else{e=da(d*da(4.65661287e-10));o[c>>2]=e;e=da(da(b|0)*da(4.65661287e-10));o[c+4>>2]=e;h=1;return h|0}}case 4:{g=k[b>>2]|0;h=a+48|0;b=k[h>>2]|0;h=k[h+4>>2]|0;f=a+40|0;h=(sl(uk(k[f>>2]|0,k[f+4>>2]|0,g|0,((g|0)<0)<<31>>31|0)|0,M|0,b|0,h|0)|0)+(k[k[a>>2]>>2]|0)|0;b=h+4|0;b=l[b>>0]|l[b+1>>0]<<8|l[b+2>>0]<<16|l[b+3>>0]<<24;d=da(l[h>>0]|l[h+1>>0]<<8|l[h+2>>0]<<16|l[h+3>>0]<<24|0);if(!(i[a+32>>0]|0)){o[c>>2]=d;e=da(b|0);o[c+4>>2]=e;h=1;return h|0}else{e=da(d*da(4.65661287e-10));o[c>>2]=e;e=da(da(b|0)*da(4.65661287e-10));o[c+4>>2]=e;h=1;return h|0}}default:{h=0;return h|0}}return 0}function Bd(a,b){a=a|0;b=b|0;var c=0,d=0,e=0,f=0,g=0,h=0,j=0,l=0,m=0,n=0,o=0,p=0,q=0,s=0;s=r;r=r+176|0;e=s+136|0;p=s+64|0;l=s;g=s+32|0;f=k[(k[a+4>>2]|0)+28>>2]|0;q=xk(88)|0;k[q+4>>2]=0;k[q>>2]=5792;h=q+12|0;k[h>>2]=5772;j=q+64|0;k[j>>2]=0;k[q+68>>2]=0;k[q+72>>2]=0;c=q+16|0;d=c+44|0;do{k[c>>2]=0;c=c+4|0}while((c|0)<(d|0));k[q+76>>2]=f;k[q+80>>2]=b;k[q+84>>2]=0;n=p+4|0;k[n>>2]=5772;m=p+56|0;k[m>>2]=0;o=p+60|0;k[o>>2]=0;k[p+64>>2]=0;c=p+8|0;d=c+44|0;do{k[c>>2]=0;c=c+4|0}while((c|0)<(d|0));c=k[a+8>>2]|0;k[l>>2]=5772;a=l+4|0;d=a+4|0;k[d>>2]=0;k[d+4>>2]=0;k[d+8>>2]=0;k[d+12>>2]=0;k[d+16>>2]=0;k[d+20>>2]=0;d=c;k[a>>2]=d;d=((k[d+4>>2]|0)-(k[c>>2]|0)|0)/12|0;i[e>>0]=0;lg(l+8|0,d,e);Ta[k[(k[l>>2]|0)+8>>2]&127](l);df(g,l);df(e,g);k[p>>2]=k[e+4>>2];d=p+4|0;sf(d,e)|0;k[e>>2]=5772;a=k[e+20>>2]|0;if(a|0)cn(a);a=k[e+8>>2]|0;if(a|0)cn(a);k[p+36>>2]=c;k[p+40>>2]=b;k[p+44>>2]=f;k[p+48>>2]=q;k[g>>2]=5772;a=k[g+20>>2]|0;if(a|0)cn(a);a=k[g+8>>2]|0;if(a|0)cn(a);k[q+8>>2]=k[p>>2];sf(h,d)|0;a=q+44|0;h=p+36|0;k[a>>2]=k[h>>2];k[a+4>>2]=k[h+4>>2];k[a+8>>2]=k[h+8>>2];k[a+12>>2]=k[h+12>>2];i[a+16>>0]=i[h+16>>0]|0;tf(j,k[m>>2]|0,k[o>>2]|0);k[l>>2]=5772;a=k[l+20>>2]|0;if(a|0)cn(a);a=k[l+8>>2]|0;if(a|0)cn(a);a=k[m>>2]|0;c=a;if(a|0){d=k[o>>2]|0;if((d|0)!=(a|0))k[o>>2]=d+(~((d+-4-c|0)>>>2)<<2);cn(a)}k[n>>2]=5772;a=k[p+24>>2]|0;if(a|0)cn(a);a=k[p+12>>2]|0;if(!a){r=s;return q|0}cn(a);r=s;return q|0}function Cd(a,b,c){a=a|0;b=b|0;c=c|0;var d=Pa,e=0,f=Pa,g=0,h=0;switch(i[a+24>>0]|0){case 1:{g=k[b>>2]|0;e=a+48|0;b=k[e>>2]|0;e=k[e+4>>2]|0;h=a+40|0;e=sl(uk(k[h>>2]|0,k[h+4>>2]|0,g|0,((g|0)<0)<<31>>31|0)|0,M|0,b|0,e|0)|0;f=da(i[(k[k[a>>2]>>2]|0)+e>>0]|0);d=da(f/da(127.0));o[c>>2]=(i[a+32>>0]|0)==0?f:d;c=c+4|0;k[c>>2]=0;k[c+4>>2]=0;c=1;return c|0}case 2:{g=k[b>>2]|0;h=a+48|0;b=k[h>>2]|0;h=k[h+4>>2]|0;e=a+40|0;h=(sl(uk(k[e>>2]|0,k[e+4>>2]|0,g|0,((g|0)<0)<<31>>31|0)|0,M|0,b|0,h|0)|0)+(k[k[a>>2]>>2]|0)|0;h=l[h>>0]|l[h+1>>0]<<8;b=(h&65535)>>>8&255;d=da((h&255)<<24>>24);if(!(i[a+32>>0]|0)){o[c>>2]=d;d=da(b<<24>>24)}else{d=da(d/da(127.0));o[c>>2]=d;d=da(da(b<<24>>24)/da(127.0))}o[c+4>>2]=d;o[c+8>>2]=da(0.0);h=1;return h|0}case 3:{e=k[b>>2]|0;h=a+48|0;b=k[h>>2]|0;h=k[h+4>>2]|0;g=a+40|0;h=(sl(uk(k[g>>2]|0,k[g+4>>2]|0,e|0,((e|0)<0)<<31>>31|0)|0,M|0,b|0,h|0)|0)+(k[k[a>>2]>>2]|0)|0;b=i[h+1>>0]|0;e=i[h+2>>0]|0;d=da(i[h>>0]|0);if(!(i[a+32>>0]|0)){o[c>>2]=d;f=da(b<<24>>24);o[c+4>>2]=f;f=da(e<<24>>24);o[c+8>>2]=f;h=1;return h|0}else{f=da(d/da(127.0));o[c>>2]=f;f=da(da(b<<24>>24)/da(127.0));o[c+4>>2]=f;f=da(da(e<<24>>24)/da(127.0));o[c+8>>2]=f;h=1;return h|0}}case 4:{e=k[b>>2]|0;h=a+48|0;b=k[h>>2]|0;h=k[h+4>>2]|0;g=a+40|0;h=(sl(uk(k[g>>2]|0,k[g+4>>2]|0,e|0,((e|0)<0)<<31>>31|0)|0,M|0,b|0,h|0)|0)+(k[k[a>>2]>>2]|0)|0;h=l[h>>0]|l[h+1>>0]<<8|l[h+2>>0]<<16|l[h+3>>0]<<24;b=h>>>8&255;e=h>>>16&255;d=da((h&255)<<24>>24);if(!(i[a+32>>0]|0)){o[c>>2]=d;f=da(b<<24>>24);o[c+4>>2]=f;f=da(e<<24>>24);o[c+8>>2]=f;h=1;return h|0}else{f=da(d/da(127.0));o[c>>2]=f;f=da(da(b<<24>>24)/da(127.0));o[c+4>>2]=f;f=da(da(e<<24>>24)/da(127.0));o[c+8>>2]=f;h=1;return h|0}}default:{h=0;return h|0}}return 0}function Dd(a,b){a=a|0;b=b|0;var c=0,d=0,e=0,f=0,g=0,h=0,j=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0;d=a+4|0;if(!b){c=k[a>>2]|0;k[a>>2]=0;if(c|0)cn(c);k[d>>2]=0;return}if(b>>>0>1073741823){a=Ma(4)|0;Om(a);xa(a|0,1024,93)}u=xk(b<<2)|0;c=k[a>>2]|0;k[a>>2]=u;if(c|0)cn(c);k[d>>2]=b;c=0;do{k[(k[a>>2]|0)+(c<<2)>>2]=0;c=c+1|0}while((c|0)!=(b|0));d=a+8|0;f=k[d>>2]|0;if(!f)return;c=k[f+4>>2]|0;t=b+-1|0;u=(t&b|0)==0;if(u)c=c&t;else c=(c>>>0)%(b>>>0)|0;k[(k[a>>2]|0)+(c<<2)>>2]=d;d=k[f>>2]|0;if(!d)return;s=a+24|0;r=c;e=f;c=f;a:while(1){q=c;b:while(1){c=d;while(1){d=k[c+4>>2]|0;if(u)p=d&t;else p=(d>>>0)%(b>>>0)|0;if((p|0)==(r|0))break;d=(k[a>>2]|0)+(p<<2)|0;if(!(k[d>>2]|0))break b;f=k[c>>2]|0;c:do if(!f)d=c;else{m=k[c+8>>2]|0;l=k[s>>2]|0;o=k[l+4>>2]|0;l=(k[l+8>>2]|0)-o|0;n=l>>2;if((l|0)>0)d=c;else{d=f;while(1){f=k[d>>2]|0;if(!f)break c;else d=f}}while(1){l=k[f+8>>2]|0;j=0;do{if((n|0)<=(j|0)){c=33;break a}g=k[o+(j<<2)>>2]|0;if(!(i[g+84>>0]|0)){h=k[g+68>>2]|0;g=k[h+(l<<2)>>2]|0;h=k[h+(m<<2)>>2]|0}else{g=l;h=m}j=j+1|0;if((h|0)!=(g|0))break c}while((j|0)<(n|0));d=k[f>>2]|0;if(!d){d=f;break}else{l=f;f=d;d=l}}}while(0);k[q>>2]=k[d>>2];k[d>>2]=k[k[(k[a>>2]|0)+(p<<2)>>2]>>2];k[k[(k[a>>2]|0)+(p<<2)>>2]>>2]=c;c=k[e>>2]|0;if(!c){c=38;break a}}d=k[c>>2]|0;if(!d){c=38;break a}else{e=c;q=c}}k[d>>2]=q;d=k[c>>2]|0;if(!d){c=38;break}else{r=p;e=c}}if((c|0)==33)Ka(13441,13403,63,13431);else if((c|0)==38)return}function Ed(a){a=a|0;var b=0,c=0,d=0,e=0;k[a>>2]=5816;fn(a+352|0);b=k[a+340>>2]|0;c=b;if(b|0){d=a+344|0;e=k[d>>2]|0;if((e|0)!=(b|0))k[d>>2]=e+(~((e+-4-c|0)>>>2)<<2);cn(b)}e=a+320|0;c=k[e>>2]|0;k[e>>2]=0;if(c|0){d=c+-4|0;b=k[d>>2]|0;if(b|0){b=c+(b<<4)|0;do{b=b+-16|0;fn(b)}while((b|0)!=(c|0))}an(d)}fn(a+304|0);fn(a+264|0);fh(a+228|0);b=k[a+212>>2]|0;c=b;if(b|0){d=a+216|0;e=k[d>>2]|0;if((e|0)!=(b|0))k[d>>2]=e+(~((e+-4-c|0)>>>2)<<2);cn(b)}b=k[a+200>>2]|0;c=b;if(b|0){d=a+204|0;e=k[d>>2]|0;if((e|0)!=(b|0))k[d>>2]=e+(~((e+-4-c|0)>>>2)<<2);cn(b)}b=k[a+188>>2]|0;c=b;if(b|0){d=a+192|0;e=k[d>>2]|0;if((e|0)!=(b|0))k[d>>2]=e+(~((e+-4-c|0)>>>2)<<2);cn(b)}b=k[a+176>>2]|0;c=b;if(b|0){d=a+180|0;e=k[d>>2]|0;if((e|0)!=(b|0))k[d>>2]=e+(~((e+-4-c|0)>>>2)<<2);cn(b)}b=k[a+160>>2]|0;if(b|0)do{e=b;b=k[b>>2]|0;cn(e)}while((b|0)!=0);e=a+152|0;b=k[e>>2]|0;k[e>>2]=0;if(b|0)cn(b);b=k[a+136>>2]|0;if(b|0)cn(b);b=k[a+124>>2]|0;if(b|0)cn(b);b=k[a+112>>2]|0;if(b|0)cn(b);b=k[a+88>>2]|0;c=b;if(b|0){d=a+92|0;e=k[d>>2]|0;if((e|0)!=(b|0))k[d>>2]=e+(~((e+-4-c|0)>>>2)<<2);cn(b)}e=k[a+76>>2]|0;b=e;if(e|0){c=a+80|0;d=k[c>>2]|0;if((d|0)!=(e|0))k[c>>2]=d+(~((d+-4-b|0)>>>2)<<2);cn(e)}b=k[a+64>>2]|0;if(b|0)cn(b);b=k[a+48>>2]|0;c=b;if(b|0){d=a+52|0;e=k[d>>2]|0;if((e|0)!=(b|0))k[d>>2]=e+(~((e+-4-c|0)>>>2)<<2);cn(b)}b=k[a+36>>2]|0;c=b;if(b|0){d=a+40|0;e=k[d>>2]|0;if((e|0)!=(b|0))k[d>>2]=e+(~(((e+-12-c|0)>>>0)/12|0)*12|0);cn(b)}b=k[a+24>>2]|0;c=b;if(b|0){d=a+28|0;e=k[d>>2]|0;if((e|0)!=(b|0))k[d>>2]=e+(~((e+-4-c|0)>>>2)<<2);cn(b)}b=k[a+12>>2]|0;c=b;if(b|0){d=a+16|0;e=k[d>>2]|0;if((e|0)!=(b|0))k[d>>2]=e+(~((e+-4-c|0)>>>2)<<2);cn(b)}a=a+8|0;b=k[a>>2]|0;k[a>>2]=0;if(!b)return;Fh(b);cn(b);return}function Fd(a){a=a|0;var b=0,c=0,d=0,e=0,f=0,g=0,h=0,i=0,j=0,l=0,m=0,n=0,o=0,p=0,q=0,s=0;s=r;r=r+16|0;q=s;b=k[a>>2]|0;o=a+4|0;a=k[o>>2]|0;p=a-b|0;c=p>>5;if((p|0)<=32){q=k[o>>2]|0;q=q+-32|0;k[o>>2]=q;r=s;return}p=b;n=a;i=n+-32|0;a=k[p>>2]|0;d=p+4|0;j=k[d>>2]|0;e=p+8|0;l=k[e>>2]|0;g=p+12|0;m=k[g>>2]|0;h=p+16|0;k[q>>2]=k[h>>2];k[q+4>>2]=k[h+4>>2];k[q+8>>2]=k[h+8>>2];k[q+12>>2]=k[h+12>>2];f=b;k[f>>2]=k[i>>2];k[f+4>>2]=k[i+4>>2];k[f+8>>2]=k[i+8>>2];k[f+12>>2]=k[i+12>>2];k[f+16>>2]=k[i+16>>2];k[f+20>>2]=k[i+20>>2];k[f+24>>2]=k[i+24>>2];k[f+28>>2]=k[i+28>>2];k[i>>2]=a;k[n+-28>>2]=j;k[n+-24>>2]=l;k[n+-20>>2]=m;n=n+-16|0;k[n>>2]=k[q>>2];k[n+4>>2]=k[q+4>>2];k[n+8>>2]=k[q+8>>2];k[n+12>>2]=k[q+12>>2];n=c+-1|0;if((c|0)==2){q=k[o>>2]|0;q=q+-32|0;k[o>>2]=q;r=s;return}l=c+-3|0;m=(l|0)/2|0;if((l|0)<-1){q=k[o>>2]|0;q=q+-32|0;k[o>>2]=q;r=s;return}a=p+32|0;b=a;if((n|0)>2){l=p+64|0;j=(k[a>>2]|0)>>>0<(k[l>>2]|0)>>>0;a=j?2:1;b=j?l:b}else a=1;l=k[p>>2]|0;if((k[b>>2]|0)>>>0>>0){q=k[o>>2]|0;q=q+-32|0;k[o>>2]=q;r=s;return}j=k[d>>2]|0;i=k[e>>2]|0;g=k[g>>2]|0;k[q>>2]=k[h>>2];k[q+4>>2]=k[h+4>>2];k[q+8>>2]=k[h+8>>2];k[q+12>>2]=k[h+12>>2];while(1){h=f;f=b;k[h>>2]=k[f>>2];k[h+4>>2]=k[f+4>>2];k[h+8>>2]=k[f+8>>2];k[h+12>>2]=k[f+12>>2];k[h+16>>2]=k[f+16>>2];k[h+20>>2]=k[f+20>>2];k[h+24>>2]=k[f+24>>2];k[h+28>>2]=k[f+28>>2];if((m|0)<(a|0))break;a=a<<1|1;d=p+(a<<5)|0;c=d;e=a+1|0;if((e|0)<(n|0)){h=d+32|0;d=(k[d>>2]|0)>>>0<(k[h>>2]|0)>>>0;a=d?e:a;c=d?h:c}if((k[c>>2]|0)>>>0>>0)break;else b=c}p=b;k[p>>2]=l;k[p+4>>2]=j;k[p+8>>2]=i;k[p+12>>2]=g;p=p+16|0;k[p>>2]=k[q>>2];k[p+4>>2]=k[q+4>>2];k[p+8>>2]=k[q+8>>2];k[p+12>>2]=k[q+12>>2];q=k[o>>2]|0;q=q+-32|0;k[o>>2]=q;r=s;return}function Gd(a,b,c){a=a|0;b=b|0;c=c|0;var d=Pa,e=Pa,f=0,g=0,h=0;switch(i[a+24>>0]|0){case 1:{g=k[b>>2]|0;b=a+48|0;f=k[b>>2]|0;b=k[b+4>>2]|0;h=a+40|0;b=(sl(uk(k[h>>2]|0,k[h+4>>2]|0,g|0,((g|0)<0)<<31>>31|0)|0,M|0,f|0,b|0)|0)+(k[k[a>>2]>>2]|0)|0;e=da((l[b>>0]|l[b+1>>0]<<8)<<16>>16);d=da(e/da(32767.0));o[c>>2]=(i[a+32>>0]|0)==0?e:d;o[c+4>>2]=da(0.0);c=1;return c|0}case 2:{g=k[b>>2]|0;h=a+48|0;b=k[h>>2]|0;h=k[h+4>>2]|0;f=a+40|0;h=(sl(uk(k[f>>2]|0,k[f+4>>2]|0,g|0,((g|0)<0)<<31>>31|0)|0,M|0,b|0,h|0)|0)+(k[k[a>>2]>>2]|0)|0;h=l[h>>0]|l[h+1>>0]<<8|l[h+2>>0]<<16|l[h+3>>0]<<24;b=h>>>16&65535;d=da((h&65535)<<16>>16);if(!(i[a+32>>0]|0)){o[c>>2]=d;e=da(b<<16>>16);o[c+4>>2]=e;h=1;return h|0}else{e=da(d/da(32767.0));o[c>>2]=e;e=da(da(b<<16>>16)/da(32767.0));o[c+4>>2]=e;h=1;return h|0}}case 3:{g=k[b>>2]|0;h=a+48|0;b=k[h>>2]|0;h=k[h+4>>2]|0;f=a+40|0;h=(sl(uk(k[f>>2]|0,k[f+4>>2]|0,g|0,((g|0)<0)<<31>>31|0)|0,M|0,b|0,h|0)|0)+(k[k[a>>2]>>2]|0)|0;b=h+2|0;b=l[b>>0]|l[b+1>>0]<<8;d=da((l[h>>0]|l[h+1>>0]<<8)<<16>>16);if(!(i[a+32>>0]|0)){o[c>>2]=d;e=da(b<<16>>16);o[c+4>>2]=e;h=1;return h|0}else{e=da(d/da(32767.0));o[c>>2]=e;e=da(da(b<<16>>16)/da(32767.0));o[c+4>>2]=e;h=1;return h|0}}case 4:{h=k[b>>2]|0;b=a+48|0;g=k[b>>2]|0;b=k[b+4>>2]|0;f=a+40|0;b=(sl(uk(k[f>>2]|0,k[f+4>>2]|0,h|0,((h|0)<0)<<31>>31|0)|0,M|0,g|0,b|0)|0)+(k[k[a>>2]>>2]|0)|0;g=b;g=l[g>>0]|l[g+1>>0]<<8|l[g+2>>0]<<16|l[g+3>>0]<<24;b=b+4|0;h=(i[a+32>>0]|0)==0;b=(Zk(g|0,l[b>>0]|l[b+1>>0]<<8|l[b+2>>0]<<16|l[b+3>>0]<<24|0,16)|0)&65535;d=da((g&65535)<<16>>16);if(h){o[c>>2]=d;e=da(b<<16>>16);o[c+4>>2]=e;h=1;return h|0}else{e=da(d/da(32767.0));o[c>>2]=e;e=da(da(b<<16>>16)/da(32767.0));o[c+4>>2]=e;h=1;return h|0}}default:{h=0;return h|0}}return 0}function Hd(a,b,c,d,e){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;var f=0;switch(a|0){case 1:{f=xk(60)|0;k[f>>2]=3456;k[f+4>>2]=b;k[f+8>>2]=k[c>>2];b=f+12|0;e=c+4|0;k[b>>2]=k[e>>2];k[b+4>>2]=k[e+4>>2];k[b+8>>2]=k[e+8>>2];k[b+12>>2]=k[e+12>>2];k[b+16>>2]=k[e+16>>2];li(f+32|0,c+24|0);c=f+44|0;k[c>>2]=k[d>>2];k[c+4>>2]=k[d+4>>2];k[c+8>>2]=k[d+8>>2];k[c+12>>2]=k[d+12>>2];k[f>>2]=3840;d=f;return d|0}case 2:{f=xk(60)|0;k[f>>2]=3456;k[f+4>>2]=b;k[f+8>>2]=k[c>>2];b=f+12|0;e=c+4|0;k[b>>2]=k[e>>2];k[b+4>>2]=k[e+4>>2];k[b+8>>2]=k[e+8>>2];k[b+12>>2]=k[e+12>>2];k[b+16>>2]=k[e+16>>2];li(f+32|0,c+24|0);c=f+44|0;k[c>>2]=k[d>>2];k[c+4>>2]=k[d+4>>2];k[c+8>>2]=k[d+8>>2];k[c+12>>2]=k[d+12>>2];k[f>>2]=3904;d=f;return d|0}case 4:{f=xk(112)|0;k[f>>2]=3456;k[f+4>>2]=b;k[f+8>>2]=k[c>>2];a=f+12|0;e=c+4|0;k[a>>2]=k[e>>2];k[a+4>>2]=k[e+4>>2];k[a+8>>2]=k[e+8>>2];k[a+12>>2]=k[e+12>>2];k[a+16>>2]=k[e+16>>2];li(f+32|0,c+24|0);a=f+44|0;k[a>>2]=k[d>>2];k[a+4>>2]=k[d+4>>2];k[a+8>>2]=k[d+8>>2];k[a+12>>2]=k[d+12>>2];k[f>>2]=3968;a=f+60|0;e=a+52|0;do{k[a>>2]=0;a=a+4|0}while((a|0)<(e|0));d=f;return d|0}case 3:{f=xk(92)|0;k[f>>2]=3456;k[f+4>>2]=b;k[f+8>>2]=k[c>>2];b=f+12|0;a=c+4|0;k[b>>2]=k[a>>2];k[b+4>>2]=k[a+4>>2];k[b+8>>2]=k[a+8>>2];k[b+12>>2]=k[a+12>>2];k[b+16>>2]=k[a+16>>2];li(f+32|0,c+24|0);c=f+44|0;k[c>>2]=k[d>>2];k[c+4>>2]=k[d+4>>2];k[c+8>>2]=k[d+8>>2];k[c+12>>2]=k[d+12>>2];k[f>>2]=4032;d=f+60|0;k[d>>2]=0;k[d+4>>2]=0;k[d+8>>2]=0;k[d+12>>2]=0;k[d+16>>2]=0;k[d+20>>2]=0;k[d+24>>2]=0;k[f+88>>2]=e&65535;d=f;return d|0}default:{d=0;return d|0}}return 0}function Id(a,b,c,d,e){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;var f=0;switch(a|0){case 1:{f=xk(60)|0;k[f>>2]=3456;k[f+4>>2]=b;k[f+8>>2]=k[c>>2];b=f+12|0;e=c+4|0;k[b>>2]=k[e>>2];k[b+4>>2]=k[e+4>>2];k[b+8>>2]=k[e+8>>2];k[b+12>>2]=k[e+12>>2];k[b+16>>2]=k[e+16>>2];li(f+32|0,c+24|0);c=f+44|0;k[c>>2]=k[d>>2];k[c+4>>2]=k[d+4>>2];k[c+8>>2]=k[d+8>>2];k[c+12>>2]=k[d+12>>2];k[f>>2]=3584;d=f;return d|0}case 2:{f=xk(60)|0;k[f>>2]=3456;k[f+4>>2]=b;k[f+8>>2]=k[c>>2];b=f+12|0;e=c+4|0;k[b>>2]=k[e>>2];k[b+4>>2]=k[e+4>>2];k[b+8>>2]=k[e+8>>2];k[b+12>>2]=k[e+12>>2];k[b+16>>2]=k[e+16>>2];li(f+32|0,c+24|0);c=f+44|0;k[c>>2]=k[d>>2];k[c+4>>2]=k[d+4>>2];k[c+8>>2]=k[d+8>>2];k[c+12>>2]=k[d+12>>2];k[f>>2]=3648;d=f;return d|0}case 4:{f=xk(112)|0;k[f>>2]=3456;k[f+4>>2]=b;k[f+8>>2]=k[c>>2];a=f+12|0;e=c+4|0;k[a>>2]=k[e>>2];k[a+4>>2]=k[e+4>>2];k[a+8>>2]=k[e+8>>2];k[a+12>>2]=k[e+12>>2];k[a+16>>2]=k[e+16>>2];li(f+32|0,c+24|0);a=f+44|0;k[a>>2]=k[d>>2];k[a+4>>2]=k[d+4>>2];k[a+8>>2]=k[d+8>>2];k[a+12>>2]=k[d+12>>2];k[f>>2]=3712;a=f+60|0;e=a+52|0;do{k[a>>2]=0;a=a+4|0}while((a|0)<(e|0));d=f;return d|0}case 3:{f=xk(92)|0;k[f>>2]=3456;k[f+4>>2]=b;k[f+8>>2]=k[c>>2];b=f+12|0;a=c+4|0;k[b>>2]=k[a>>2];k[b+4>>2]=k[a+4>>2];k[b+8>>2]=k[a+8>>2];k[b+12>>2]=k[a+12>>2];k[b+16>>2]=k[a+16>>2];li(f+32|0,c+24|0);c=f+44|0;k[c>>2]=k[d>>2];k[c+4>>2]=k[d+4>>2];k[c+8>>2]=k[d+8>>2];k[c+12>>2]=k[d+12>>2];k[f>>2]=3776;d=f+60|0;k[d>>2]=0;k[d+4>>2]=0;k[d+8>>2]=0;k[d+12>>2]=0;k[d+16>>2]=0;k[d+20>>2]=0;k[d+24>>2]=0;k[f+88>>2]=e&65535;d=f;return d|0}default:{d=0;return d|0}}return 0}function Jd(a,b,c){a=a|0;b=b|0;c=c|0;var d=Pa,e=0,f=Pa,g=0,h=0;switch(i[a+24>>0]|0){case 1:{g=k[b>>2]|0;e=a+48|0;b=k[e>>2]|0;e=k[e+4>>2]|0;h=a+40|0;e=sl(uk(k[h>>2]|0,k[h+4>>2]|0,g|0,((g|0)<0)<<31>>31|0)|0,M|0,b|0,e|0)|0;f=da(l[(k[k[a>>2]>>2]|0)+e>>0]|0);d=da(f/da(255.0));o[c>>2]=(i[a+32>>0]|0)==0?f:d;c=c+4|0;k[c>>2]=0;k[c+4>>2]=0;c=1;return c|0}case 2:{g=k[b>>2]|0;h=a+48|0;b=k[h>>2]|0;h=k[h+4>>2]|0;e=a+40|0;h=(sl(uk(k[e>>2]|0,k[e+4>>2]|0,g|0,((g|0)<0)<<31>>31|0)|0,M|0,b|0,h|0)|0)+(k[k[a>>2]>>2]|0)|0;h=l[h>>0]|l[h+1>>0]<<8;b=(h&65535)>>>8&255;d=da(h&255);if(!(i[a+32>>0]|0)){o[c>>2]=d;d=da(b&255)}else{d=da(d/da(255.0));o[c>>2]=d;d=da(da(b&255)/da(255.0))}o[c+4>>2]=d;o[c+8>>2]=da(0.0);h=1;return h|0}case 3:{e=k[b>>2]|0;h=a+48|0;b=k[h>>2]|0;h=k[h+4>>2]|0;g=a+40|0;h=(sl(uk(k[g>>2]|0,k[g+4>>2]|0,e|0,((e|0)<0)<<31>>31|0)|0,M|0,b|0,h|0)|0)+(k[k[a>>2]>>2]|0)|0;b=i[h+1>>0]|0;e=i[h+2>>0]|0;d=da(l[h>>0]|0);if(!(i[a+32>>0]|0)){o[c>>2]=d;f=da(b&255);o[c+4>>2]=f;f=da(e&255);o[c+8>>2]=f;h=1;return h|0}else{f=da(d/da(255.0));o[c>>2]=f;f=da(da(b&255)/da(255.0));o[c+4>>2]=f;f=da(da(e&255)/da(255.0));o[c+8>>2]=f;h=1;return h|0}}case 4:{e=k[b>>2]|0;h=a+48|0;b=k[h>>2]|0;h=k[h+4>>2]|0;g=a+40|0;h=(sl(uk(k[g>>2]|0,k[g+4>>2]|0,e|0,((e|0)<0)<<31>>31|0)|0,M|0,b|0,h|0)|0)+(k[k[a>>2]>>2]|0)|0;h=l[h>>0]|l[h+1>>0]<<8|l[h+2>>0]<<16|l[h+3>>0]<<24;b=h>>>8&255;e=h>>>16&255;d=da(h&255);if(!(i[a+32>>0]|0)){o[c>>2]=d;f=da(b&255);o[c+4>>2]=f;f=da(e&255);o[c+8>>2]=f;h=1;return h|0}else{f=da(d/da(255.0));o[c>>2]=f;f=da(da(b&255)/da(255.0));o[c+4>>2]=f;f=da(da(e&255)/da(255.0));o[c+8>>2]=f;h=1;return h|0}}default:{h=0;return h|0}}return 0}function Kd(a,b,c){a=a|0;b=b|0;c=c|0;var d=Pa,e=Pa,f=0,g=0,h=0;switch(i[a+24>>0]|0){case 1:{g=k[b>>2]|0;b=a+48|0;f=k[b>>2]|0;b=k[b+4>>2]|0;h=a+40|0;b=(sl(uk(k[h>>2]|0,k[h+4>>2]|0,g|0,((g|0)<0)<<31>>31|0)|0,M|0,f|0,b|0)|0)+(k[k[a>>2]>>2]|0)|0;e=da((l[b>>0]|l[b+1>>0]<<8)&65535);d=da(e/da(65535.0));o[c>>2]=(i[a+32>>0]|0)==0?e:d;o[c+4>>2]=da(0.0);c=1;return c|0}case 2:{g=k[b>>2]|0;h=a+48|0;b=k[h>>2]|0;h=k[h+4>>2]|0;f=a+40|0;h=(sl(uk(k[f>>2]|0,k[f+4>>2]|0,g|0,((g|0)<0)<<31>>31|0)|0,M|0,b|0,h|0)|0)+(k[k[a>>2]>>2]|0)|0;h=l[h>>0]|l[h+1>>0]<<8|l[h+2>>0]<<16|l[h+3>>0]<<24;b=h>>>16&65535;d=da(h&65535);if(!(i[a+32>>0]|0)){o[c>>2]=d;e=da(b&65535);o[c+4>>2]=e;h=1;return h|0}else{e=da(d/da(65535.0));o[c>>2]=e;e=da(da(b&65535)/da(65535.0));o[c+4>>2]=e;h=1;return h|0}}case 3:{g=k[b>>2]|0;h=a+48|0;b=k[h>>2]|0;h=k[h+4>>2]|0;f=a+40|0;h=(sl(uk(k[f>>2]|0,k[f+4>>2]|0,g|0,((g|0)<0)<<31>>31|0)|0,M|0,b|0,h|0)|0)+(k[k[a>>2]>>2]|0)|0;b=h+2|0;b=l[b>>0]|l[b+1>>0]<<8;d=da((l[h>>0]|l[h+1>>0]<<8)&65535);if(!(i[a+32>>0]|0)){o[c>>2]=d;e=da(b&65535);o[c+4>>2]=e;h=1;return h|0}else{e=da(d/da(65535.0));o[c>>2]=e;e=da(da(b&65535)/da(65535.0));o[c+4>>2]=e;h=1;return h|0}}case 4:{h=k[b>>2]|0;b=a+48|0;g=k[b>>2]|0;b=k[b+4>>2]|0;f=a+40|0;b=(sl(uk(k[f>>2]|0,k[f+4>>2]|0,h|0,((h|0)<0)<<31>>31|0)|0,M|0,g|0,b|0)|0)+(k[k[a>>2]>>2]|0)|0;g=b;g=l[g>>0]|l[g+1>>0]<<8|l[g+2>>0]<<16|l[g+3>>0]<<24;b=b+4|0;h=(i[a+32>>0]|0)==0;b=(Zk(g|0,l[b>>0]|l[b+1>>0]<<8|l[b+2>>0]<<16|l[b+3>>0]<<24|0,16)|0)&65535;d=da(g&65535);if(h){o[c>>2]=d;e=da(b&65535);o[c+4>>2]=e;h=1;return h|0}else{e=da(d/da(65535.0));o[c>>2]=e;e=da(da(b&65535)/da(65535.0));o[c+4>>2]=e;h=1;return h|0}}default:{h=0;return h|0}}return 0}function Ld(a,b,c,d,e,f){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;f=f|0;var g=0,h=0,i=0,j=0,l=0,m=0,n=0,o=0,p=0,q=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0;z=r;r=r+16|0;x=z+4|0;y=z;k[a+72>>2]=e;k[a+64>>2]=f;w=a+68|0;v=$m(e>>>0>1073741823?-1:e<<2)|0;d=k[w>>2]|0;k[w>>2]=v;if(d|0)an(d);v=a+8|0;k[v>>2]=e;d=a+32|0;f=a+36|0;i=k[f>>2]|0;h=k[d>>2]|0;g=i-h>>2;if(g>>>0>=e>>>0){if(g>>>0>e>>>0?(j=h+(e<<2)|0,(i|0)!=(j|0)):0)k[f>>2]=i+(~((i+-4-j|0)>>>2)<<2)}else jh(d,e-g|0);o=a+56|0;h=k[o>>2]|0;g=k[h+4>>2]|0;f=k[h>>2]|0;u=g-f|0;p=u>>2;if((u|0)<=0){r=z;return 1}q=a+16|0;s=a+32|0;t=a+12|0;u=a+20|0;d=0;while(1){if(g-f>>2>>>0<=d>>>0){d=13;break}k[y>>2]=k[f+(d<<2)>>2];k[x>>2]=k[y>>2];Ac(a,x,c,d);m=$(d,e)|0;l=k[w>>2]|0;n=c+(m<<2)|0;if((k[v>>2]|0)>0){j=0;do{i=k[l+(j<<2)>>2]|0;f=k[q>>2]|0;do if((i|0)<=(f|0)){f=k[t>>2]|0;g=k[s>>2]|0;h=g+(j<<2)|0;if((i|0)<(f|0)){k[h>>2]=f;h=g;break}else{k[h>>2]=i;h=g;break}}else{h=k[s>>2]|0;k[h+(j<<2)>>2]=f}while(0);j=j+1|0;f=k[v>>2]|0}while((j|0)<(f|0));if((f|0)>0){f=0;do{k[n+(f<<2)>>2]=(k[b+(f+m<<2)>>2]|0)+(k[h+(f<<2)>>2]|0);f=f+1|0;g=k[v>>2]|0}while((f|0)<(g|0));if((g|0)>0){f=0;do{g=n+(f<<2)|0;h=k[g>>2]|0;if((h|0)<=(k[q>>2]|0)){if((h|0)<(k[t>>2]|0))k[g>>2]=(k[u>>2]|0)+h}else k[g>>2]=h-(k[u>>2]|0);f=f+1|0}while((f|0)<(k[v>>2]|0))}}}d=d+1|0;if((d|0)>=(p|0)){d=10;break}h=k[o>>2]|0;f=k[h>>2]|0;g=k[h+4>>2]|0}if((d|0)==10){r=z;return 1}else if((d|0)==13)gm(h);return 0}function Md(a,b,c,d,e,f){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;f=f|0;var g=0,h=0,i=0,j=0,l=0,m=0,n=0,o=0,p=0,q=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0;z=r;r=r+16|0;x=z+4|0;y=z;k[a+72>>2]=e;k[a+64>>2]=f;w=a+68|0;v=$m(e>>>0>1073741823?-1:e<<2)|0;d=k[w>>2]|0;k[w>>2]=v;if(d|0)an(d);v=a+8|0;k[v>>2]=e;d=a+32|0;f=a+36|0;i=k[f>>2]|0;h=k[d>>2]|0;g=i-h>>2;if(g>>>0>=e>>>0){if(g>>>0>e>>>0?(j=h+(e<<2)|0,(i|0)!=(j|0)):0)k[f>>2]=i+(~((i+-4-j|0)>>>2)<<2)}else jh(d,e-g|0);o=a+56|0;h=k[o>>2]|0;g=k[h+4>>2]|0;f=k[h>>2]|0;u=g-f|0;p=u>>2;if((u|0)<=0){r=z;return 1}q=a+16|0;s=a+32|0;t=a+12|0;u=a+20|0;d=0;while(1){if(g-f>>2>>>0<=d>>>0){d=13;break}k[y>>2]=k[f+(d<<2)>>2];k[x>>2]=k[y>>2];vc(a,x,c,d);m=$(d,e)|0;l=k[w>>2]|0;n=c+(m<<2)|0;if((k[v>>2]|0)>0){j=0;do{i=k[l+(j<<2)>>2]|0;f=k[q>>2]|0;do if((i|0)<=(f|0)){f=k[t>>2]|0;g=k[s>>2]|0;h=g+(j<<2)|0;if((i|0)<(f|0)){k[h>>2]=f;h=g;break}else{k[h>>2]=i;h=g;break}}else{h=k[s>>2]|0;k[h+(j<<2)>>2]=f}while(0);j=j+1|0;f=k[v>>2]|0}while((j|0)<(f|0));if((f|0)>0){f=0;do{k[n+(f<<2)>>2]=(k[b+(f+m<<2)>>2]|0)+(k[h+(f<<2)>>2]|0);f=f+1|0;g=k[v>>2]|0}while((f|0)<(g|0));if((g|0)>0){f=0;do{g=n+(f<<2)|0;h=k[g>>2]|0;if((h|0)<=(k[q>>2]|0)){if((h|0)<(k[t>>2]|0))k[g>>2]=(k[u>>2]|0)+h}else k[g>>2]=h-(k[u>>2]|0);f=f+1|0}while((f|0)<(k[v>>2]|0))}}}d=d+1|0;if((d|0)>=(p|0)){d=10;break}h=k[o>>2]|0;f=k[h>>2]|0;g=k[h+4>>2]|0}if((d|0)==10){r=z;return 1}else if((d|0)==13)gm(h);return 0}function Nd(a,b){a=a|0;b=b|0;var c=0,d=0,e=0,f=0,g=0,h=0,i=0,l=0,m=0,n=0;d=a+4|0;if(!b){c=k[a>>2]|0;k[a>>2]=0;if(c|0)cn(c);k[d>>2]=0;return}if(b>>>0>1073741823){a=Ma(4)|0;Om(a);xa(a|0,1024,93)}n=xk(b<<2)|0;c=k[a>>2]|0;k[a>>2]=n;if(c|0)cn(c);k[d>>2]=b;c=0;do{k[(k[a>>2]|0)+(c<<2)>>2]=0;c=c+1|0}while((c|0)!=(b|0));d=a+8|0;g=k[d>>2]|0;if(!g)return;c=k[g+4>>2]|0;m=b+-1|0;n=(m&b|0)==0;if(n)c=c&m;else c=(c>>>0)%(b>>>0)|0;k[(k[a>>2]|0)+(c<<2)>>2]=d;d=k[g>>2]|0;if(!d)return;else{e=c;f=g;c=g}a:while(1){b:do if(n){i=c;while(1){c=d;while(1){l=k[c+4>>2]&m;if((l|0)==(e|0))break;d=(k[a>>2]|0)+(l<<2)|0;if(!(k[d>>2]|0)){f=i;e=l;break b}h=c+8|0;d=c;while(1){g=k[d>>2]|0;if(!g)break;if((j[h>>1]|0)==(j[g+8>>1]|0))d=g;else break}k[i>>2]=g;k[d>>2]=k[k[(k[a>>2]|0)+(l<<2)>>2]>>2];k[k[(k[a>>2]|0)+(l<<2)>>2]>>2]=c;c=k[f>>2]|0;if(!c){c=34;break a}}d=k[c>>2]|0;if(!d){c=34;break a}else{f=c;i=c}}}else{i=c;while(1){c=d;while(1){l=((k[c+4>>2]|0)>>>0)%(b>>>0)|0;if((l|0)==(e|0))break;d=(k[a>>2]|0)+(l<<2)|0;if(!(k[d>>2]|0)){f=i;e=l;break b}g=c+8|0;d=c;while(1){h=k[d>>2]|0;if(!h)break;if((j[g>>1]|0)==(j[h+8>>1]|0))d=h;else break}k[i>>2]=h;k[d>>2]=k[k[(k[a>>2]|0)+(l<<2)>>2]>>2];k[k[(k[a>>2]|0)+(l<<2)>>2]>>2]=c;c=k[f>>2]|0;if(!c){c=34;break a}}d=k[c>>2]|0;if(!d){c=34;break a}else{f=c;i=c}}}while(0);k[d>>2]=f;d=k[c>>2]|0;if(!d){c=34;break}else f=c}if((c|0)==34)return}function Od(a,b){a=a|0;b=b|0;var c=0,d=0,e=0,f=0,g=0,h=0,j=0,l=0,m=0,n=0;d=a+4|0;if(!b){c=k[a>>2]|0;k[a>>2]=0;if(c|0)cn(c);k[d>>2]=0;return}if(b>>>0>1073741823){a=Ma(4)|0;Om(a);xa(a|0,1024,93)}n=xk(b<<2)|0;c=k[a>>2]|0;k[a>>2]=n;if(c|0)cn(c);k[d>>2]=b;c=0;do{k[(k[a>>2]|0)+(c<<2)>>2]=0;c=c+1|0}while((c|0)!=(b|0));d=a+8|0;g=k[d>>2]|0;if(!g)return;c=k[g+4>>2]|0;m=b+-1|0;n=(m&b|0)==0;if(n)c=c&m;else c=(c>>>0)%(b>>>0)|0;k[(k[a>>2]|0)+(c<<2)>>2]=d;d=k[g>>2]|0;if(!d)return;else{e=c;f=g;c=g}a:while(1){b:do if(n){j=c;while(1){c=d;while(1){l=k[c+4>>2]&m;if((l|0)==(e|0))break;d=(k[a>>2]|0)+(l<<2)|0;if(!(k[d>>2]|0)){f=j;e=l;break b}h=c+8|0;d=c;while(1){g=k[d>>2]|0;if(!g)break;if((i[h>>0]|0)==(i[g+8>>0]|0))d=g;else break}k[j>>2]=g;k[d>>2]=k[k[(k[a>>2]|0)+(l<<2)>>2]>>2];k[k[(k[a>>2]|0)+(l<<2)>>2]>>2]=c;c=k[f>>2]|0;if(!c){c=34;break a}}d=k[c>>2]|0;if(!d){c=34;break a}else{f=c;j=c}}}else{j=c;while(1){c=d;while(1){l=((k[c+4>>2]|0)>>>0)%(b>>>0)|0;if((l|0)==(e|0))break;d=(k[a>>2]|0)+(l<<2)|0;if(!(k[d>>2]|0)){f=j;e=l;break b}g=c+8|0;d=c;while(1){h=k[d>>2]|0;if(!h)break;if((i[g>>0]|0)==(i[h+8>>0]|0))d=h;else break}k[j>>2]=h;k[d>>2]=k[k[(k[a>>2]|0)+(l<<2)>>2]>>2];k[k[(k[a>>2]|0)+(l<<2)>>2]>>2]=c;c=k[f>>2]|0;if(!c){c=34;break a}}d=k[c>>2]|0;if(!d){c=34;break a}else{f=c;j=c}}}while(0);k[d>>2]=f;d=k[c>>2]|0;if(!d){c=34;break}else f=c}if((c|0)==34)return}function Pd(a,b,c){a=a|0;b=b|0;c=c|0;var d=0,e=0,f=0,g=0,h=0,j=0,m=0,n=0,o=0,p=0,q=0,s=0,t=0,u=0,v=0;t=r;r=r+64|0;q=t+48|0;m=t+32|0;n=t+20|0;o=t+8|0;p=t;f=b+8|0;h=f;e=k[h>>2]|0;h=k[h+4>>2]|0;j=b+16|0;g=j;d=k[g>>2]|0;g=k[g+4>>2]|0;u=sl(d|0,g|0,4,0)|0;v=M;if((h|0)<(v|0)|(h|0)==(v|0)&e>>>0>>0)f=h;else{d=(k[b>>2]|0)+d|0;d=l[d>>0]|l[d+1>>0]<<8|l[d+2>>0]<<16|l[d+3>>0]<<24;i[a>>0]=d;i[a+1>>0]=d>>8;i[a+2>>0]=d>>16;i[a+3>>0]=d>>24;d=j;d=sl(k[d>>2]|0,k[d+4>>2]|0,4,0)|0;g=M;e=j;k[e>>2]=d;k[e+4>>2]=g;e=f;f=k[e+4>>2]|0;e=k[e>>2]|0}h=a+4|0;v=sl(d|0,g|0,4,0)|0;u=M;if((f|0)<(u|0)|(f|0)==(u|0)&e>>>0>>0)d=k[h>>2]|0;else{d=(k[b>>2]|0)+d|0;d=l[d>>0]|l[d+1>>0]<<8|l[d+2>>0]<<16|l[d+3>>0]<<24;i[h>>0]=d;i[h+1>>0]=d>>8;i[h+2>>0]=d>>16;i[h+3>>0]=d>>24;u=j;u=sl(k[u>>2]|0,k[u+4>>2]|0,4,0)|0;v=j;k[v>>2]=u;k[v+4>>2]=M}if(!d){v=1;r=t;return v|0}else d=0;do{if(!(vf(a+8+(d*24|0)|0,b)|0)){d=0;s=14;break}d=d+1|0}while((d|0)<32);if((s|0)==14){r=t;return d|0}if(!(vf(a+776|0,b)|0)){v=0;r=t;return v|0}if(!(of(a+800|0,b)|0)){v=0;r=t;return v|0}if(!(of(a+820|0,b)|0)){v=0;r=t;return v|0}if(!(of(a+840|0,b)|0)){v=0;r=t;return v|0}v=k[h>>2]|0;k[n>>2]=0;k[n+4>>2]=0;k[n+8>>2]=0;k[o>>2]=0;k[o+4>>2]=0;k[o+8>>2]=0;s=k[c+4>>2]|0;u=p;k[u>>2]=k[c>>2];k[u+4>>2]=s;k[m>>2]=k[o>>2];k[m+4>>2]=k[o+4>>2];k[m+8>>2]=k[o+8>>2];k[q>>2]=k[p>>2];k[q+4>>2]=k[p+4>>2];hb(a,v,n,m,0,q);v=1;r=t;return v|0}function Qd(a,b,c){a=a|0;b=b|0;c=c|0;var d=0,e=0,f=0,g=0,h=0,j=0,m=0,n=0,o=0,p=0,q=0,s=0,t=0,u=0,v=0;t=r;r=r+64|0;q=t+48|0;m=t+32|0;n=t+20|0;o=t+8|0;p=t;f=b+8|0;h=f;e=k[h>>2]|0;h=k[h+4>>2]|0;j=b+16|0;g=j;d=k[g>>2]|0;g=k[g+4>>2]|0;u=sl(d|0,g|0,4,0)|0;v=M;if((h|0)<(v|0)|(h|0)==(v|0)&e>>>0>>0)f=h;else{d=(k[b>>2]|0)+d|0;d=l[d>>0]|l[d+1>>0]<<8|l[d+2>>0]<<16|l[d+3>>0]<<24;i[a>>0]=d;i[a+1>>0]=d>>8;i[a+2>>0]=d>>16;i[a+3>>0]=d>>24;d=j;d=sl(k[d>>2]|0,k[d+4>>2]|0,4,0)|0;g=M;e=j;k[e>>2]=d;k[e+4>>2]=g;e=f;f=k[e+4>>2]|0;e=k[e>>2]|0}h=a+4|0;v=sl(d|0,g|0,4,0)|0;u=M;if((f|0)<(u|0)|(f|0)==(u|0)&e>>>0>>0)d=k[h>>2]|0;else{d=(k[b>>2]|0)+d|0;d=l[d>>0]|l[d+1>>0]<<8|l[d+2>>0]<<16|l[d+3>>0]<<24;i[h>>0]=d;i[h+1>>0]=d>>8;i[h+2>>0]=d>>16;i[h+3>>0]=d>>24;u=j;u=sl(k[u>>2]|0,k[u+4>>2]|0,4,0)|0;v=j;k[v>>2]=u;k[v+4>>2]=M}if(!d){v=1;r=t;return v|0}else d=0;do{if(!(vf(a+8+(d*24|0)|0,b)|0)){d=0;s=14;break}d=d+1|0}while((d|0)<32);if((s|0)==14){r=t;return d|0}if(!(vf(a+776|0,b)|0)){v=0;r=t;return v|0}if(!(of(a+800|0,b)|0)){v=0;r=t;return v|0}if(!(of(a+820|0,b)|0)){v=0;r=t;return v|0}if(!(of(a+840|0,b)|0)){v=0;r=t;return v|0}v=k[h>>2]|0;k[n>>2]=0;k[n+4>>2]=0;k[n+8>>2]=0;k[o>>2]=0;k[o+4>>2]=0;k[o+8>>2]=0;s=k[c+4>>2]|0;u=p;k[u>>2]=k[c>>2];k[u+4>>2]=s;k[m>>2]=k[o>>2];k[m+4>>2]=k[o+4>>2];k[m+8>>2]=k[o+8>>2];k[q>>2]=k[p>>2];k[q+4>>2]=k[p+4>>2];yb(a,v,n,m,0,q);v=1;r=t;return v|0}function Rd(a,b){a=a|0;b=b|0;var c=0,d=0,e=0,f=0,g=0,h=0,i=0,j=0,l=0,m=0;d=a+4|0;if(!b){c=k[a>>2]|0;k[a>>2]=0;if(c|0)cn(c);k[d>>2]=0;return}if(b>>>0>1073741823){a=Ma(4)|0;Om(a);xa(a|0,1024,93)}m=xk(b<<2)|0;c=k[a>>2]|0;k[a>>2]=m;if(c|0)cn(c);k[d>>2]=b;c=0;do{k[(k[a>>2]|0)+(c<<2)>>2]=0;c=c+1|0}while((c|0)!=(b|0));d=a+8|0;g=k[d>>2]|0;if(!g)return;c=k[g+4>>2]|0;l=b+-1|0;m=(l&b|0)==0;if(m)c=c&l;else c=(c>>>0)%(b>>>0)|0;k[(k[a>>2]|0)+(c<<2)>>2]=d;d=k[g>>2]|0;if(!d)return;else{e=c;f=g;c=g}a:while(1){b:do if(m){i=c;while(1){c=d;while(1){j=k[c+4>>2]&l;if((j|0)==(e|0))break;d=(k[a>>2]|0)+(j<<2)|0;if(!(k[d>>2]|0)){f=i;e=j;break b}h=c+8|0;d=c;while(1){g=k[d>>2]|0;if(!g)break;if((k[h>>2]|0)==(k[g+8>>2]|0))d=g;else break}k[i>>2]=g;k[d>>2]=k[k[(k[a>>2]|0)+(j<<2)>>2]>>2];k[k[(k[a>>2]|0)+(j<<2)>>2]>>2]=c;c=k[f>>2]|0;if(!c){c=34;break a}}d=k[c>>2]|0;if(!d){c=34;break a}else{f=c;i=c}}}else{i=c;while(1){c=d;while(1){j=((k[c+4>>2]|0)>>>0)%(b>>>0)|0;if((j|0)==(e|0))break;d=(k[a>>2]|0)+(j<<2)|0;if(!(k[d>>2]|0)){f=i;e=j;break b}g=c+8|0;d=c;while(1){h=k[d>>2]|0;if(!h)break;if((k[g>>2]|0)==(k[h+8>>2]|0))d=h;else break}k[i>>2]=h;k[d>>2]=k[k[(k[a>>2]|0)+(j<<2)>>2]>>2];k[k[(k[a>>2]|0)+(j<<2)>>2]>>2]=c;c=k[f>>2]|0;if(!c){c=34;break a}}d=k[c>>2]|0;if(!d){c=34;break a}else{f=c;i=c}}}while(0);k[d>>2]=f;d=k[c>>2]|0;if(!d){c=34;break}else f=c}if((c|0)==34)return}function Sd(a,b,c){a=a|0;b=b|0;c=c|0;var d=0,e=0,f=0,g=0,h=0,j=0,m=0,n=0,o=0,p=0,q=0,s=0,t=0,u=0,v=0;t=r;r=r+64|0;q=t+48|0;m=t+32|0;n=t+20|0;o=t+8|0;p=t;f=b+8|0;h=f;e=k[h>>2]|0;h=k[h+4>>2]|0;j=b+16|0;g=j;d=k[g>>2]|0;g=k[g+4>>2]|0;u=sl(d|0,g|0,4,0)|0;v=M;if((h|0)<(v|0)|(h|0)==(v|0)&e>>>0>>0)f=h;else{d=(k[b>>2]|0)+d|0;d=l[d>>0]|l[d+1>>0]<<8|l[d+2>>0]<<16|l[d+3>>0]<<24;i[a>>0]=d;i[a+1>>0]=d>>8;i[a+2>>0]=d>>16;i[a+3>>0]=d>>24;d=j;d=sl(k[d>>2]|0,k[d+4>>2]|0,4,0)|0;g=M;e=j;k[e>>2]=d;k[e+4>>2]=g;e=f;f=k[e+4>>2]|0;e=k[e>>2]|0}h=a+4|0;v=sl(d|0,g|0,4,0)|0;u=M;if((f|0)<(u|0)|(f|0)==(u|0)&e>>>0>>0)d=k[h>>2]|0;else{d=(k[b>>2]|0)+d|0;d=l[d>>0]|l[d+1>>0]<<8|l[d+2>>0]<<16|l[d+3>>0]<<24;i[h>>0]=d;i[h+1>>0]=d>>8;i[h+2>>0]=d>>16;i[h+3>>0]=d>>24;u=j;u=sl(k[u>>2]|0,k[u+4>>2]|0,4,0)|0;v=j;k[v>>2]=u;k[v+4>>2]=M}if(!d){v=1;r=t;return v|0}else d=0;do{if(!(Ye(a+8+(d<<4)|0,b)|0)){d=0;s=14;break}d=d+1|0}while((d|0)<32);if((s|0)==14){r=t;return d|0}if(!(Ye(a+520|0,b)|0)){v=0;r=t;return v|0}if(!(of(a+536|0,b)|0)){v=0;r=t;return v|0}if(!(of(a+556|0,b)|0)){v=0;r=t;return v|0}if(!(of(a+576|0,b)|0)){v=0;r=t;return v|0}v=k[h>>2]|0;k[n>>2]=0;k[n+4>>2]=0;k[n+8>>2]=0;k[o>>2]=0;k[o+4>>2]=0;k[o+8>>2]=0;s=k[c+4>>2]|0;u=p;k[u>>2]=k[c>>2];k[u+4>>2]=s;k[m>>2]=k[o>>2];k[m+4>>2]=k[o+4>>2];k[m+8>>2]=k[o+8>>2];k[q>>2]=k[p>>2];k[q+4>>2]=k[p+4>>2];vb(a,v,n,m,0,q);v=1;r=t;return v|0}function Td(a,b,c){a=a|0;b=b|0;c=c|0;var d=0,e=0,f=0,g=0,h=0,j=0,m=0,n=0,o=0,p=0,q=0,s=0,t=0,u=0,v=0;t=r;r=r+64|0;q=t+48|0;m=t+32|0;n=t+20|0;o=t+8|0;p=t;f=b+8|0;h=f;e=k[h>>2]|0;h=k[h+4>>2]|0;j=b+16|0;g=j;d=k[g>>2]|0;g=k[g+4>>2]|0;u=sl(d|0,g|0,4,0)|0;v=M;if((h|0)<(v|0)|(h|0)==(v|0)&e>>>0>>0)f=h;else{d=(k[b>>2]|0)+d|0;d=l[d>>0]|l[d+1>>0]<<8|l[d+2>>0]<<16|l[d+3>>0]<<24;i[a>>0]=d;i[a+1>>0]=d>>8;i[a+2>>0]=d>>16;i[a+3>>0]=d>>24;d=j;d=sl(k[d>>2]|0,k[d+4>>2]|0,4,0)|0;g=M;e=j;k[e>>2]=d;k[e+4>>2]=g;e=f;f=k[e+4>>2]|0;e=k[e>>2]|0}h=a+4|0;v=sl(d|0,g|0,4,0)|0;u=M;if((f|0)<(u|0)|(f|0)==(u|0)&e>>>0>>0)d=k[h>>2]|0;else{d=(k[b>>2]|0)+d|0;d=l[d>>0]|l[d+1>>0]<<8|l[d+2>>0]<<16|l[d+3>>0]<<24;i[h>>0]=d;i[h+1>>0]=d>>8;i[h+2>>0]=d>>16;i[h+3>>0]=d>>24;u=j;u=sl(k[u>>2]|0,k[u+4>>2]|0,4,0)|0;v=j;k[v>>2]=u;k[v+4>>2]=M}if(!d){v=1;r=t;return v|0}else d=0;do{if(!(Ye(a+8+(d<<4)|0,b)|0)){d=0;s=14;break}d=d+1|0}while((d|0)<32);if((s|0)==14){r=t;return d|0}if(!(Ye(a+520|0,b)|0)){v=0;r=t;return v|0}if(!(of(a+536|0,b)|0)){v=0;r=t;return v|0}if(!(of(a+556|0,b)|0)){v=0;r=t;return v|0}if(!(of(a+576|0,b)|0)){v=0;r=t;return v|0}v=k[h>>2]|0;k[n>>2]=0;k[n+4>>2]=0;k[n+8>>2]=0;k[o>>2]=0;k[o+4>>2]=0;k[o+8>>2]=0;s=k[c+4>>2]|0;u=p;k[u>>2]=k[c>>2];k[u+4>>2]=s;k[m>>2]=k[o>>2];k[m+4>>2]=k[o+4>>2];k[m+8>>2]=k[o+8>>2];k[q>>2]=k[p>>2];k[q+4>>2]=k[p+4>>2];wb(a,v,n,m,0,q);v=1;r=t;return v|0}function Ud(a){a=a|0;var b=0,c=0,d=0,e=0;k[a>>2]=5652;e=a+320|0;c=k[e>>2]|0;k[e>>2]=0;if(c|0){d=c+-4|0;b=k[d>>2]|0;if(b|0){b=c+(b<<4)|0;do{b=b+-16|0;fn(b)}while((b|0)!=(c|0))}an(d)}fn(a+304|0);fn(a+264|0);fh(a+228|0);b=k[a+212>>2]|0;c=b;if(b|0){d=a+216|0;e=k[d>>2]|0;if((e|0)!=(b|0))k[d>>2]=e+(~((e+-4-c|0)>>>2)<<2);cn(b)}b=k[a+200>>2]|0;c=b;if(b|0){d=a+204|0;e=k[d>>2]|0;if((e|0)!=(b|0))k[d>>2]=e+(~((e+-4-c|0)>>>2)<<2);cn(b)}b=k[a+188>>2]|0;c=b;if(b|0){d=a+192|0;e=k[d>>2]|0;if((e|0)!=(b|0))k[d>>2]=e+(~((e+-4-c|0)>>>2)<<2);cn(b)}b=k[a+176>>2]|0;c=b;if(b|0){d=a+180|0;e=k[d>>2]|0;if((e|0)!=(b|0))k[d>>2]=e+(~((e+-4-c|0)>>>2)<<2);cn(b)}b=k[a+160>>2]|0;if(b|0)do{e=b;b=k[b>>2]|0;cn(e)}while((b|0)!=0);e=a+152|0;b=k[e>>2]|0;k[e>>2]=0;if(b|0)cn(b);b=k[a+136>>2]|0;if(b|0)cn(b);b=k[a+124>>2]|0;if(b|0)cn(b);b=k[a+112>>2]|0;if(b|0)cn(b);b=k[a+88>>2]|0;c=b;if(b|0){d=a+92|0;e=k[d>>2]|0;if((e|0)!=(b|0))k[d>>2]=e+(~((e+-4-c|0)>>>2)<<2);cn(b)}b=k[a+76>>2]|0;c=b;if(b|0){d=a+80|0;e=k[d>>2]|0;if((e|0)!=(b|0))k[d>>2]=e+(~((e+-4-c|0)>>>2)<<2);cn(b)}b=k[a+64>>2]|0;if(b|0)cn(b);b=k[a+48>>2]|0;c=b;if(b|0){d=a+52|0;e=k[d>>2]|0;if((e|0)!=(b|0))k[d>>2]=e+(~((e+-4-c|0)>>>2)<<2);cn(b)}b=k[a+36>>2]|0;c=b;if(b|0){d=a+40|0;e=k[d>>2]|0;if((e|0)!=(b|0))k[d>>2]=e+(~(((e+-12-c|0)>>>0)/12|0)*12|0);cn(b)}b=k[a+24>>2]|0;c=b;if(b|0){d=a+28|0;e=k[d>>2]|0;if((e|0)!=(b|0))k[d>>2]=e+(~((e+-4-c|0)>>>2)<<2);cn(b)}b=k[a+12>>2]|0;c=b;if(b|0){d=a+16|0;e=k[d>>2]|0;if((e|0)!=(b|0))k[d>>2]=e+(~((e+-4-c|0)>>>2)<<2);cn(b)}a=a+8|0;b=k[a>>2]|0;k[a>>2]=0;if(!b)return;Fh(b);cn(b);return}function Vd(a,b){a=a|0;b=b|0;var c=0,d=0,e=0,f=0,g=0,h=0,j=0,l=0,m=0,n=0,o=0,p=0;n=r;r=r+48|0;c=n+40|0;m=n;if(!(ig(a,1,c)|0)){m=0;r=n;return m|0}l=a+40|0;e=a+16|0;f=k[e>>2]|0;d=(k[a>>2]|0)+f|0;o=a+8|0;e=al(k[o>>2]|0,k[o+4>>2]|0,f|0,k[e+4>>2]|0)|0;Ck(l,d,e);e=c;d=k[e>>2]|0;e=k[e+4>>2]|0;f=a+48|0;o=f;g=a+56|0;j=g;h=k[j>>2]|0;j=k[j+4>>2]|0;o=al(k[o>>2]|0,k[o+4>>2]|0,h|0,j|0)|0;p=M;if(e>>>0>p>>>0|(e|0)==(p|0)&d>>>0>o>>>0){p=0;r=n;return p|0}o=sl(h|0,j|0,d|0,e|0)|0;p=g;k[p>>2]=o;k[p+4>>2]=M;if(!(ig(l,1,c)|0)){p=0;r=n;return p|0}rk(m);d=g;e=k[d>>2]|0;p=(k[l>>2]|0)+e|0;g=f;d=al(k[g>>2]|0,k[g+4>>2]|0,e|0,k[d+4>>2]|0)|0;Ck(m,p,d);d=c;c=k[d>>2]|0;d=k[d+4>>2]|0;p=m+8|0;e=m+16|0;g=e;f=k[g>>2]|0;g=k[g+4>>2]|0;p=al(k[p>>2]|0,k[p+4>>2]|0,f|0,g|0)|0;o=M;a:do if(d>>>0>o>>>0|(d|0)==(o|0)&c>>>0>p>>>0)c=0;else{c=sl(f|0,g|0,c|0,d|0)|0;h=e;k[h>>2]=c;k[h+4>>2]=M;h=a+84|0;c=k[h>>2]|0;if((c|0)>0){g=a+80|0;e=c<<4;e=$m(c>>>0>268435455|e>>>0>4294967291?-1:e+4|0)|0;k[e>>2]=c;e=e+4|0;c=e+(c<<4)|0;d=e;do{Lm(d);d=d+16|0}while((d|0)!=(c|0));f=k[g>>2]|0;k[g>>2]=e;if(f|0){d=f+-4|0;c=k[d>>2]|0;if(c|0){c=f+(c<<4)|0;do{c=c+-16|0;fn(c)}while((c|0)!=(f|0))}an(d)}if((k[h>>2]|0)>0){c=0;do{if(!(Ye((k[g>>2]|0)+(c<<4)|0,m)|0)){c=0;break a}c=c+1|0}while((c|0)<(k[h>>2]|0))}}c=b;d=m;e=c+36|0;do{k[c>>2]=k[d>>2];c=c+4|0;d=d+4|0}while((c|0)<(e|0));i[b+36>>0]=i[m+36>>0]|0;c=1}while(0);fn(m+24|0);p=c;r=n;return p|0}function Wd(a,b,c,d,e,f){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;f=f|0;var g=0,h=0,i=0,j=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0,v=0,w=0;s=a+8|0;k[s>>2]=e;q=e>>>0>1073741823?-1:e<<2;t=$m(q)|0;Vi(t|0,0,q|0)|0;q=k[a+24>>2]|0;r=a+32|0;h=k[r>>2]|0;g=k[h+4>>2]|0;f=k[h>>2]|0;d=g-f|0;a:do if((d|0)>4){n=k[a+28>>2]|0;o=q+12|0;p=(e|0)>0;l=d>>2;a=g;d=h;while(1){m=l+-1|0;if(a-f>>2>>>0<=m>>>0)break;d=k[f+(m<<2)>>2]|0;j=$(m,e)|0;if((d|0)>=0?(v=k[(k[o>>2]|0)+(d<<2)>>2]|0,(v|0)>=0):0){a=k[q>>2]|0;f=(v>>>0)%3|0;g=k[n>>2]|0;i=k[g+(k[a+(((v>>>0)/3|0)*12|0)+(f<<2)>>2]<<2)>>2]|0;d=v+1|0;d=((d|0)%3|0|0)==0?v+-2|0:d;if((d|0)<0)d=-1073741824;else d=k[a+(((d>>>0)/3|0)*12|0)+(((d>>>0)%3|0)<<2)>>2]|0;h=k[g+(d<<2)>>2]|0;d=((f|0)==0?2:-1)+v|0;if((d|0)<0)d=-1073741824;else d=k[a+(((d>>>0)/3|0)*12|0)+(((d>>>0)%3|0)<<2)>>2]|0;d=k[g+(d<<2)>>2]|0;if((i|0)<(m|0)&(h|0)<(m|0)&(d|0)<(m|0)){g=$(i,e)|0;a=$(h,e)|0;f=$(d,e)|0;if(p){d=0;do{k[t+(d<<2)>>2]=(k[b+(d+f<<2)>>2]|0)+(k[b+(d+a<<2)>>2]|0)-(k[b+(d+g<<2)>>2]|0);d=d+1|0}while((d|0)!=(e|0))}Ze(s,b+(j<<2)|0,t,c,j)}else w=17}else w=17;if((w|0)==17){w=0;Ze(s,b+(j<<2)|0,b+(($(l+-2|0,e)|0)<<2)|0,c,j)}if((m|0)<=1){u=t;break a}d=k[r>>2]|0;l=m;f=k[d>>2]|0;a=k[d+4>>2]|0}gm(d)}else u=t;while(0);if((e|0)<=0){Ze(s,b,u,c,0);an(t);return 1}Vi(t|0,0,e<<2|0)|0;Ze(s,b,u,c,0);an(t);return 1}function Xd(a,b,c){a=a|0;b=b|0;c=c|0;var d=0,e=0,f=0,g=0,h=0,j=0,m=0,n=0,o=0,p=0,q=0,s=0,t=0,u=0,v=0;t=r;r=r+48|0;n=t+40|0;m=t+28|0;o=t+16|0;p=t+4|0;q=t;f=b+8|0;h=f;e=k[h>>2]|0;h=k[h+4>>2]|0;j=b+16|0;g=j;d=k[g>>2]|0;g=k[g+4>>2]|0;u=sl(d|0,g|0,4,0)|0;v=M;if((h|0)<(v|0)|(h|0)==(v|0)&e>>>0>>0)f=h;else{d=(k[b>>2]|0)+d|0;d=l[d>>0]|l[d+1>>0]<<8|l[d+2>>0]<<16|l[d+3>>0]<<24;i[a>>0]=d;i[a+1>>0]=d>>8;i[a+2>>0]=d>>16;i[a+3>>0]=d>>24;d=j;d=sl(k[d>>2]|0,k[d+4>>2]|0,4,0)|0;g=M;e=j;k[e>>2]=d;k[e+4>>2]=g;e=f;f=k[e+4>>2]|0;e=k[e>>2]|0}h=a+4|0;v=sl(d|0,g|0,4,0)|0;u=M;if((f|0)<(u|0)|(f|0)==(u|0)&e>>>0>>0)d=k[h>>2]|0;else{d=(k[b>>2]|0)+d|0;d=l[d>>0]|l[d+1>>0]<<8|l[d+2>>0]<<16|l[d+3>>0]<<24;i[h>>0]=d;i[h+1>>0]=d>>8;i[h+2>>0]=d>>16;i[h+3>>0]=d>>24;u=j;u=sl(k[u>>2]|0,k[u+4>>2]|0,4,0)|0;v=j;k[v>>2]=u;k[v+4>>2]=M}if(!d){v=1;r=t;return v|0}else d=0;do{if(!(vf(a+8+(d*24|0)|0,b)|0)){d=0;s=14;break}d=d+1|0}while((d|0)<32);if((s|0)==14){r=t;return d|0}if(!(vf(a+776|0,b)|0)){v=0;r=t;return v|0}if(!(of(a+800|0,b)|0)){v=0;r=t;return v|0}if(!(of(a+820|0,b)|0)){v=0;r=t;return v|0}if(!(of(a+840|0,b)|0)){v=0;r=t;return v|0}v=k[h>>2]|0;k[o>>2]=0;k[o+4>>2]=0;k[o+8>>2]=0;k[p>>2]=0;k[p+4>>2]=0;k[p+8>>2]=0;k[q>>2]=k[c>>2];k[m>>2]=k[p>>2];k[m+4>>2]=k[p+4>>2];k[m+8>>2]=k[p+8>>2];k[n>>2]=k[q>>2];ib(a,v,o,m,0,n);v=1;r=t;return v|0}function Yd(a,b,c){a=a|0;b=b|0;c=c|0;var d=0,e=0,f=0,g=0,h=0,j=0,m=0,n=0,o=0,p=0,q=0,s=0,t=0,u=0,v=0;t=r;r=r+48|0;n=t+40|0;m=t+28|0;o=t+16|0;p=t+4|0;q=t;f=b+8|0;h=f;e=k[h>>2]|0;h=k[h+4>>2]|0;j=b+16|0;g=j;d=k[g>>2]|0;g=k[g+4>>2]|0;u=sl(d|0,g|0,4,0)|0;v=M;if((h|0)<(v|0)|(h|0)==(v|0)&e>>>0>>0)f=h;else{d=(k[b>>2]|0)+d|0;d=l[d>>0]|l[d+1>>0]<<8|l[d+2>>0]<<16|l[d+3>>0]<<24;i[a>>0]=d;i[a+1>>0]=d>>8;i[a+2>>0]=d>>16;i[a+3>>0]=d>>24;d=j;d=sl(k[d>>2]|0,k[d+4>>2]|0,4,0)|0;g=M;e=j;k[e>>2]=d;k[e+4>>2]=g;e=f;f=k[e+4>>2]|0;e=k[e>>2]|0}h=a+4|0;v=sl(d|0,g|0,4,0)|0;u=M;if((f|0)<(u|0)|(f|0)==(u|0)&e>>>0>>0)d=k[h>>2]|0;else{d=(k[b>>2]|0)+d|0;d=l[d>>0]|l[d+1>>0]<<8|l[d+2>>0]<<16|l[d+3>>0]<<24;i[h>>0]=d;i[h+1>>0]=d>>8;i[h+2>>0]=d>>16;i[h+3>>0]=d>>24;u=j;u=sl(k[u>>2]|0,k[u+4>>2]|0,4,0)|0;v=j;k[v>>2]=u;k[v+4>>2]=M}if(!d){v=1;r=t;return v|0}else d=0;do{if(!(vf(a+8+(d*24|0)|0,b)|0)){d=0;s=14;break}d=d+1|0}while((d|0)<32);if((s|0)==14){r=t;return d|0}if(!(vf(a+776|0,b)|0)){v=0;r=t;return v|0}if(!(of(a+800|0,b)|0)){v=0;r=t;return v|0}if(!(of(a+820|0,b)|0)){v=0;r=t;return v|0}if(!(of(a+840|0,b)|0)){v=0;r=t;return v|0}v=k[h>>2]|0;k[o>>2]=0;k[o+4>>2]=0;k[o+8>>2]=0;k[p>>2]=0;k[p+4>>2]=0;k[p+8>>2]=0;k[q>>2]=k[c>>2];k[m>>2]=k[p>>2];k[m+4>>2]=k[p+4>>2];k[m+8>>2]=k[p+8>>2];k[n>>2]=k[q>>2];Db(a,v,o,m,0,n);v=1;r=t;return v|0}function Zd(a,b,c){a=a|0;b=b|0;c=c|0;var d=0,e=0,f=0,g=0,h=0;g=b+8|0;h=k[g+4>>2]|0;d=b+16|0;f=d;e=k[f>>2]|0;f=k[f+4>>2]|0;if(!((h|0)>(f|0)|((h|0)==(f|0)?(k[g>>2]|0)>>>0>e>>>0:0))){h=0;return h|0}h=i[(k[b>>2]|0)+e>>0]|0;f=sl(e|0,f|0,1,0)|0;g=d;k[g>>2]=f;k[g+4>>2]=M;do switch(h<<24>>24){case 1:{h=Oc(a,b,c)|0;return h|0}case 2:{h=Oc(a,b,c)|0;return h|0}case 3:{h=Oc(a,b,c)|0;return h|0}case 4:{h=Oc(a,b,c)|0;return h|0}case 5:{h=Oc(a,b,c)|0;return h|0}case 6:{h=Oc(a,b,c)|0;return h|0}case 7:{h=Oc(a,b,c)|0;return h|0}case 8:{h=Oc(a,b,c)|0;return h|0}case 9:{h=Nc(a,b,c)|0;return h|0}case 10:{h=Mc(a,b,c)|0;return h|0}case 11:{h=Lc(a,b,c)|0;return h|0}case 12:{h=Kc(a,b,c)|0;return h|0}case 13:{h=Jc(a,b,c)|0;return h|0}case 14:{h=Ic(a,b,c)|0;return h|0}case 15:{h=Ic(a,b,c)|0;return h|0}case 16:{h=Ic(a,b,c)|0;return h|0}case 17:{h=Ic(a,b,c)|0;return h|0}case 18:{h=Ic(a,b,c)|0;return h|0}default:{h=0;return h|0}}while(0);return 0}function _d(a,b,c){a=a|0;b=b|0;c=c|0;var d=0,e=0,f=0,g=0,h=0,j=0,m=0,n=0,o=0,p=0,q=0,s=0,t=0,u=0,v=0;t=r;r=r+48|0;n=t+40|0;m=t+28|0;o=t+16|0;p=t+4|0;q=t;f=b+8|0;h=f;e=k[h>>2]|0;h=k[h+4>>2]|0;j=b+16|0;g=j;d=k[g>>2]|0;g=k[g+4>>2]|0;u=sl(d|0,g|0,4,0)|0;v=M;if((h|0)<(v|0)|(h|0)==(v|0)&e>>>0>>0)f=h;else{d=(k[b>>2]|0)+d|0;d=l[d>>0]|l[d+1>>0]<<8|l[d+2>>0]<<16|l[d+3>>0]<<24;i[a>>0]=d;i[a+1>>0]=d>>8;i[a+2>>0]=d>>16;i[a+3>>0]=d>>24;d=j;d=sl(k[d>>2]|0,k[d+4>>2]|0,4,0)|0;g=M;e=j;k[e>>2]=d;k[e+4>>2]=g;e=f;f=k[e+4>>2]|0;e=k[e>>2]|0}h=a+4|0;v=sl(d|0,g|0,4,0)|0;u=M;if((f|0)<(u|0)|(f|0)==(u|0)&e>>>0>>0)d=k[h>>2]|0;else{d=(k[b>>2]|0)+d|0;d=l[d>>0]|l[d+1>>0]<<8|l[d+2>>0]<<16|l[d+3>>0]<<24;i[h>>0]=d;i[h+1>>0]=d>>8;i[h+2>>0]=d>>16;i[h+3>>0]=d>>24;u=j;u=sl(k[u>>2]|0,k[u+4>>2]|0,4,0)|0;v=j;k[v>>2]=u;k[v+4>>2]=M}if(!d){v=1;r=t;return v|0}else d=0;do{if(!(Ye(a+8+(d<<4)|0,b)|0)){d=0;s=14;break}d=d+1|0}while((d|0)<32);if((s|0)==14){r=t;return d|0}if(!(Ye(a+520|0,b)|0)){v=0;r=t;return v|0}if(!(of(a+536|0,b)|0)){v=0;r=t;return v|0}if(!(of(a+556|0,b)|0)){v=0;r=t;return v|0}if(!(of(a+576|0,b)|0)){v=0;r=t;return v|0}v=k[h>>2]|0;k[o>>2]=0;k[o+4>>2]=0;k[o+8>>2]=0;k[p>>2]=0;k[p+4>>2]=0;k[p+8>>2]=0;k[q>>2]=k[c>>2];k[m>>2]=k[p>>2];k[m+4>>2]=k[p+4>>2];k[m+8>>2]=k[p+8>>2];k[n>>2]=k[q>>2];Bb(a,v,o,m,0,n);v=1;r=t;return v|0}function $d(a,b,c){a=a|0;b=b|0;c=c|0;var d=0,e=0,f=0,g=0,h=0,j=0,m=0,n=0,o=0,p=0,q=0,s=0,t=0,u=0,v=0;t=r;r=r+48|0;n=t+40|0;m=t+28|0;o=t+16|0;p=t+4|0;q=t;f=b+8|0;h=f;e=k[h>>2]|0;h=k[h+4>>2]|0;j=b+16|0;g=j;d=k[g>>2]|0;g=k[g+4>>2]|0;u=sl(d|0,g|0,4,0)|0;v=M;if((h|0)<(v|0)|(h|0)==(v|0)&e>>>0>>0)f=h;else{d=(k[b>>2]|0)+d|0;d=l[d>>0]|l[d+1>>0]<<8|l[d+2>>0]<<16|l[d+3>>0]<<24;i[a>>0]=d;i[a+1>>0]=d>>8;i[a+2>>0]=d>>16;i[a+3>>0]=d>>24;d=j;d=sl(k[d>>2]|0,k[d+4>>2]|0,4,0)|0;g=M;e=j;k[e>>2]=d;k[e+4>>2]=g;e=f;f=k[e+4>>2]|0;e=k[e>>2]|0}h=a+4|0;v=sl(d|0,g|0,4,0)|0;u=M;if((f|0)<(u|0)|(f|0)==(u|0)&e>>>0>>0)d=k[h>>2]|0;else{d=(k[b>>2]|0)+d|0;d=l[d>>0]|l[d+1>>0]<<8|l[d+2>>0]<<16|l[d+3>>0]<<24;i[h>>0]=d;i[h+1>>0]=d>>8;i[h+2>>0]=d>>16;i[h+3>>0]=d>>24;u=j;u=sl(k[u>>2]|0,k[u+4>>2]|0,4,0)|0;v=j;k[v>>2]=u;k[v+4>>2]=M}if(!d){v=1;r=t;return v|0}else d=0;do{if(!(Ye(a+8+(d<<4)|0,b)|0)){d=0;s=14;break}d=d+1|0}while((d|0)<32);if((s|0)==14){r=t;return d|0}if(!(Ye(a+520|0,b)|0)){v=0;r=t;return v|0}if(!(of(a+536|0,b)|0)){v=0;r=t;return v|0}if(!(of(a+556|0,b)|0)){v=0;r=t;return v|0}if(!(of(a+576|0,b)|0)){v=0;r=t;return v|0}v=k[h>>2]|0;k[o>>2]=0;k[o+4>>2]=0;k[o+8>>2]=0;k[p>>2]=0;k[p+4>>2]=0;k[p+8>>2]=0;k[q>>2]=k[c>>2];k[m>>2]=k[p>>2];k[m+4>>2]=k[p+4>>2];k[m+8>>2]=k[p+8>>2];k[n>>2]=k[q>>2];Cb(a,v,o,m,0,n);v=1;r=t;return v|0}function ae(a,b){a=a|0;b=b|0;var c=0,d=0,e=0,f=0,g=0,h=0,j=0,m=0,n=0,o=0;o=r;r=r+32|0;h=o+16|0;j=o;n=b+8|0;g=n;f=k[g+4>>2]|0;m=b+16|0;d=m;c=k[d>>2]|0;d=k[d+4>>2]|0;if(!((f|0)>(d|0)|((f|0)==(d|0)?(k[g>>2]|0)>>>0>c>>>0:0))){a=0;r=o;return a|0}g=i[(k[b>>2]|0)+c>>0]|0;e=sl(c|0,d|0,1,0)|0;f=m;k[f>>2]=e;k[f+4>>2]=M;if(g<<24>>24){a=0;r=o;return a|0}f=0;do{ci(h,b);c=k[h>>2]|0;if(c|0){g=a+60+(f*12|0)|0;Ce(g,c,0);Lm(j);Ye(j,b)|0;if(k[h>>2]|0){d=0;do{e=(k[g>>2]|0)+(d>>>5<<2)|0;c=1<<(d&31);if(Ti(j)|0)c=k[e>>2]|c;else c=k[e>>2]&~c;k[e>>2]=c;d=d+1|0}while(d>>>0<(k[h>>2]|0)>>>0)}fn(j)}f=f+1|0}while((f|0)<4);f=n;h=k[f>>2]|0;f=k[f+4>>2]|0;j=m;c=k[j>>2]|0;j=sl(c|0,k[j+4>>2]|0,4,0)|0;g=M;if((f|0)<(g|0)|(f|0)==(g|0)&h>>>0>>0){a=0;r=o;return a|0}h=a+12|0;c=(k[b>>2]|0)+c|0;c=l[c>>0]|l[c+1>>0]<<8|l[c+2>>0]<<16|l[c+3>>0]<<24;i[h>>0]=c;i[h+1>>0]=c>>8;i[h+2>>0]=c>>16;i[h+3>>0]=c>>24;h=m;f=k[h>>2]|0;h=k[h+4>>2]|0;d=sl(f|0,h|0,4,0)|0;g=m;k[g>>2]=d;k[g+4>>2]=M;g=n;j=k[g>>2]|0;g=k[g+4>>2]|0;n=sl(f|0,h|0,8,0)|0;h=M;if((g|0)<(h|0)|(g|0)==(h|0)&j>>>0>>0){a=0;r=o;return a|0}j=a+16|0;n=(k[b>>2]|0)+d|0;n=l[n>>0]|l[n+1>>0]<<8|l[n+2>>0]<<16|l[n+3>>0]<<24;i[j>>0]=n;i[j+1>>0]=n>>8;i[j+2>>0]=n>>16;i[j+3>>0]=n>>24;b=m;b=sl(k[b>>2]|0,k[b+4>>2]|0,4,0)|0;d=m;k[d>>2]=b;k[d+4>>2]=M;n=n+(1-c)|0;k[a+20>>2]=n;c=(n|0)/2|0;d=a+24|0;k[d>>2]=c;k[a+28>>2]=0-c;if(n&1|0){a=1;r=o;return a|0}k[d>>2]=c+-1;a=1;r=o;return a|0}function be(a,b,c,d,e,f){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;f=f|0;var g=0,h=0,i=0,j=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0,v=0,w=0;s=a+8|0;k[s>>2]=e;q=e>>>0>1073741823?-1:e<<2;t=$m(q)|0;Vi(t|0,0,q|0)|0;q=k[a+24>>2]|0;r=a+32|0;h=k[r>>2]|0;g=k[h+4>>2]|0;f=k[h>>2]|0;d=g-f|0;a:do if((d|0)>4){n=k[a+28>>2]|0;o=q+12|0;p=(e|0)>0;l=d>>2;a=g;d=h;while(1){m=l+-1|0;if(a-f>>2>>>0<=m>>>0)break;d=k[f+(m<<2)>>2]|0;j=$(m,e)|0;if((d|0)>=0?(v=k[(k[o>>2]|0)+(d<<2)>>2]|0,(v|0)>=0):0){a=k[q>>2]|0;f=(v>>>0)%3|0;g=k[n>>2]|0;i=k[g+(k[a+(((v>>>0)/3|0)*12|0)+(f<<2)>>2]<<2)>>2]|0;d=v+1|0;d=((d|0)%3|0|0)==0?v+-2|0:d;if((d|0)<0)d=-1073741824;else d=k[a+(((d>>>0)/3|0)*12|0)+(((d>>>0)%3|0)<<2)>>2]|0;h=k[g+(d<<2)>>2]|0;d=((f|0)==0?2:-1)+v|0;if((d|0)<0)d=-1073741824;else d=k[a+(((d>>>0)/3|0)*12|0)+(((d>>>0)%3|0)<<2)>>2]|0;d=k[g+(d<<2)>>2]|0;if((i|0)<(m|0)&(h|0)<(m|0)&(d|0)<(m|0)){g=$(i,e)|0;a=$(h,e)|0;f=$(d,e)|0;if(p){d=0;do{k[t+(d<<2)>>2]=(k[b+(d+f<<2)>>2]|0)+(k[b+(d+a<<2)>>2]|0)-(k[b+(d+g<<2)>>2]|0);d=d+1|0}while((d|0)!=(e|0))}cf(s,b+(j<<2)|0,t,c,j)}else w=17}else w=17;if((w|0)==17){w=0;cf(s,b+(j<<2)|0,b+(($(l+-2|0,e)|0)<<2)|0,c,j)}if((m|0)<=1){u=t;break a}d=k[r>>2]|0;l=m;f=k[d>>2]|0;a=k[d+4>>2]|0}gm(d)}else u=t;while(0);if((e|0)<=0){cf(s,b,u,c,0);an(t);return 1}Vi(t|0,0,e<<2|0)|0;cf(s,b,u,c,0);an(t);return 1}function ce(a,b,c){a=a|0;b=b|0;c=c|0;var d=Pa,e=Pa,f=0,g=0,h=0;switch(i[a+24>>0]|0){case 1:{g=k[b>>2]|0;b=a+48|0;f=k[b>>2]|0;b=k[b+4>>2]|0;h=a+40|0;b=sl(uk(k[h>>2]|0,k[h+4>>2]|0,g|0,((g|0)<0)<<31>>31|0)|0,M|0,f|0,b|0)|0;e=da(i[(k[k[a>>2]>>2]|0)+b>>0]|0);d=da(e/da(127.0));o[c>>2]=(i[a+32>>0]|0)==0?e:d;o[c+4>>2]=da(0.0);c=1;return c|0}case 2:{g=k[b>>2]|0;h=a+48|0;b=k[h>>2]|0;h=k[h+4>>2]|0;f=a+40|0;h=(sl(uk(k[f>>2]|0,k[f+4>>2]|0,g|0,((g|0)<0)<<31>>31|0)|0,M|0,b|0,h|0)|0)+(k[k[a>>2]>>2]|0)|0;h=l[h>>0]|l[h+1>>0]<<8;b=(h&65535)>>>8&255;d=da((h&255)<<24>>24);if(!(i[a+32>>0]|0)){o[c>>2]=d;e=da(b<<24>>24);o[c+4>>2]=e;h=1;return h|0}else{e=da(d/da(127.0));o[c>>2]=e;e=da(da(b<<24>>24)/da(127.0));o[c+4>>2]=e;h=1;return h|0}}case 3:{g=k[b>>2]|0;h=a+48|0;b=k[h>>2]|0;h=k[h+4>>2]|0;f=a+40|0;h=(sl(uk(k[f>>2]|0,k[f+4>>2]|0,g|0,((g|0)<0)<<31>>31|0)|0,M|0,b|0,h|0)|0)+(k[k[a>>2]>>2]|0)|0;b=i[h+1>>0]|0;d=da(i[h>>0]|0);if(!(i[a+32>>0]|0)){o[c>>2]=d;e=da(b<<24>>24);o[c+4>>2]=e;h=1;return h|0}else{e=da(d/da(127.0));o[c>>2]=e;e=da(da(b<<24>>24)/da(127.0));o[c+4>>2]=e;h=1;return h|0}}case 4:{g=k[b>>2]|0;h=a+48|0;b=k[h>>2]|0;h=k[h+4>>2]|0;f=a+40|0;h=(sl(uk(k[f>>2]|0,k[f+4>>2]|0,g|0,((g|0)<0)<<31>>31|0)|0,M|0,b|0,h|0)|0)+(k[k[a>>2]>>2]|0)|0;h=l[h>>0]|l[h+1>>0]<<8|l[h+2>>0]<<16|l[h+3>>0]<<24;b=h>>>8&255;d=da((h&255)<<24>>24);if(!(i[a+32>>0]|0)){o[c>>2]=d;e=da(b<<24>>24);o[c+4>>2]=e;h=1;return h|0}else{e=da(d/da(127.0));o[c>>2]=e;e=da(da(b<<24>>24)/da(127.0));o[c+4>>2]=e;h=1;return h|0}}default:{h=0;return h|0}}return 0}function de(a,b,c){a=a|0;b=b|0;c=c|0;var d=Pa,e=Pa,f=0,g=0,h=0;switch(i[a+24>>0]|0){case 1:{g=k[b>>2]|0;b=a+48|0;f=k[b>>2]|0;b=k[b+4>>2]|0;h=a+40|0;b=sl(uk(k[h>>2]|0,k[h+4>>2]|0,g|0,((g|0)<0)<<31>>31|0)|0,M|0,f|0,b|0)|0;e=da(l[(k[k[a>>2]>>2]|0)+b>>0]|0);d=da(e/da(255.0));o[c>>2]=(i[a+32>>0]|0)==0?e:d;o[c+4>>2]=da(0.0);c=1;return c|0}case 2:{g=k[b>>2]|0;h=a+48|0;b=k[h>>2]|0;h=k[h+4>>2]|0;f=a+40|0;h=(sl(uk(k[f>>2]|0,k[f+4>>2]|0,g|0,((g|0)<0)<<31>>31|0)|0,M|0,b|0,h|0)|0)+(k[k[a>>2]>>2]|0)|0;h=l[h>>0]|l[h+1>>0]<<8;b=(h&65535)>>>8&255;d=da(h&255);if(!(i[a+32>>0]|0)){o[c>>2]=d;e=da(b&255);o[c+4>>2]=e;h=1;return h|0}else{e=da(d/da(255.0));o[c>>2]=e;e=da(da(b&255)/da(255.0));o[c+4>>2]=e;h=1;return h|0}}case 3:{g=k[b>>2]|0;h=a+48|0;b=k[h>>2]|0;h=k[h+4>>2]|0;f=a+40|0;h=(sl(uk(k[f>>2]|0,k[f+4>>2]|0,g|0,((g|0)<0)<<31>>31|0)|0,M|0,b|0,h|0)|0)+(k[k[a>>2]>>2]|0)|0;b=i[h+1>>0]|0;d=da(l[h>>0]|0);if(!(i[a+32>>0]|0)){o[c>>2]=d;e=da(b&255);o[c+4>>2]=e;h=1;return h|0}else{e=da(d/da(255.0));o[c>>2]=e;e=da(da(b&255)/da(255.0));o[c+4>>2]=e;h=1;return h|0}}case 4:{g=k[b>>2]|0;h=a+48|0;b=k[h>>2]|0;h=k[h+4>>2]|0;f=a+40|0;h=(sl(uk(k[f>>2]|0,k[f+4>>2]|0,g|0,((g|0)<0)<<31>>31|0)|0,M|0,b|0,h|0)|0)+(k[k[a>>2]>>2]|0)|0;h=l[h>>0]|l[h+1>>0]<<8|l[h+2>>0]<<16|l[h+3>>0]<<24;b=h>>>8&255;d=da(h&255);if(!(i[a+32>>0]|0)){o[c>>2]=d;e=da(b&255);o[c+4>>2]=e;h=1;return h|0}else{e=da(d/da(255.0));o[c>>2]=e;e=da(da(b&255)/da(255.0));o[c+4>>2]=e;h=1;return h|0}}default:{h=0;return h|0}}return 0}function ee(a,b){a=a|0;b=b|0;var c=0,d=0,e=0,f=0,g=0,h=0,j=0,m=0,n=0,o=0,p=0,q=0;q=r;r=r+16|0;p=q;m=b+8|0;g=m;h=k[g>>2]|0;g=k[g+4>>2]|0;j=b+16|0;d=j;c=k[d>>2]|0;d=sl(c|0,k[d+4>>2]|0,4,0)|0;e=M;if((g|0)<(e|0)|(g|0)==(e|0)&h>>>0>>0){p=0;r=q;return p|0}h=(k[b>>2]|0)+c|0;h=l[h>>0]|l[h+1>>0]<<8|l[h+2>>0]<<16|l[h+3>>0]<<24;g=j;k[g>>2]=d;k[g+4>>2]=e;if((h|0)<0){p=0;r=q;return p|0}g=a+76|0;Ce(g,h,0);Lm(p);if(Ye(p,b)|0){if((h|0)>0){d=1;e=0;do{d=d^((Ti(p)|0)^1);f=(k[g>>2]|0)+(e>>>5<<2)|0;c=1<<(e&31);if(d)c=k[f>>2]|c;else c=k[f>>2]&~c;k[f>>2]=c;e=e+1|0}while((e|0)<(h|0))}e=m;g=k[e>>2]|0;e=k[e+4>>2]|0;h=j;c=k[h>>2]|0;h=sl(c|0,k[h+4>>2]|0,4,0)|0;f=M;if(!((e|0)<(f|0)|(e|0)==(f|0)&g>>>0>>0)?(g=a+12|0,n=(k[b>>2]|0)+c|0,n=l[n>>0]|l[n+1>>0]<<8|l[n+2>>0]<<16|l[n+3>>0]<<24,i[g>>0]=n,i[g+1>>0]=n>>8,i[g+2>>0]=n>>16,i[g+3>>0]=n>>24,g=j,e=k[g>>2]|0,g=k[g+4>>2]|0,o=sl(e|0,g|0,4,0)|0,f=j,k[f>>2]=o,k[f+4>>2]=M,f=m,h=k[f>>2]|0,f=k[f+4>>2]|0,m=sl(e|0,g|0,8,0)|0,g=M,!((f|0)<(g|0)|(f|0)==(g|0)&h>>>0>>0)):0){d=a+16|0;o=(k[b>>2]|0)+o|0;o=l[o>>0]|l[o+1>>0]<<8|l[o+2>>0]<<16|l[o+3>>0]<<24;i[d>>0]=o;i[d+1>>0]=o>>8;i[d+2>>0]=o>>16;i[d+3>>0]=o>>24;d=j;d=sl(k[d>>2]|0,k[d+4>>2]|0,4,0)|0;c=j;k[c>>2]=d;k[c+4>>2]=M;o=o+(1-n)|0;k[a+20>>2]=o;c=(o|0)/2|0;d=a+24|0;k[d>>2]=c;k[a+28>>2]=0-c;if(!(o&1)){k[d>>2]=c+-1;c=1}else c=1}else c=0}else c=0;fn(p);p=c;r=q;return p|0}function fe(a,b,c){a=a|0;b=b|0;c=c|0;var d=0,e=0,f=0,g=0,h=0,j=0,m=0,n=0,o=0,p=0,q=0,s=0,t=0,u=0;s=r;r=r+64|0;q=s+48|0;m=s+32|0;n=s+20|0;o=s+8|0;p=s;f=b+8|0;h=f;e=k[h>>2]|0;h=k[h+4>>2]|0;j=b+16|0;g=j;d=k[g>>2]|0;g=k[g+4>>2]|0;t=sl(d|0,g|0,4,0)|0;u=M;if(!((h|0)<(u|0)|(h|0)==(u|0)&e>>>0>>0)){d=(k[b>>2]|0)+d|0;d=l[d>>0]|l[d+1>>0]<<8|l[d+2>>0]<<16|l[d+3>>0]<<24;i[a>>0]=d;i[a+1>>0]=d>>8;i[a+2>>0]=d>>16;i[a+3>>0]=d>>24;d=j;d=sl(k[d>>2]|0,k[d+4>>2]|0,4,0)|0;g=M;e=j;k[e>>2]=d;k[e+4>>2]=g;e=f;h=k[e+4>>2]|0;e=k[e>>2]|0}f=a+4|0;u=sl(d|0,g|0,4,0)|0;t=M;if((h|0)<(t|0)|(h|0)==(t|0)&e>>>0>>0)d=k[f>>2]|0;else{d=(k[b>>2]|0)+d|0;d=l[d>>0]|l[d+1>>0]<<8|l[d+2>>0]<<16|l[d+3>>0]<<24;i[f>>0]=d;i[f+1>>0]=d>>8;i[f+2>>0]=d>>16;i[f+3>>0]=d>>24;t=j;t=sl(k[t>>2]|0,k[t+4>>2]|0,4,0)|0;u=j;k[u>>2]=t;k[u+4>>2]=M}if(!d){u=1;r=s;return u|0}if(!(of(a+8|0,b)|0)){u=0;r=s;return u|0}if(!(of(a+28|0,b)|0)){u=0;r=s;return u|0}if(!(of(a+48|0,b)|0)){u=0;r=s;return u|0}if(!(of(a+68|0,b)|0)){u=0;r=s;return u|0}u=k[f>>2]|0;k[n>>2]=0;k[n+4>>2]=0;k[n+8>>2]=0;k[o>>2]=0;k[o+4>>2]=0;k[o+8>>2]=0;b=c;c=k[b+4>>2]|0;t=p;k[t>>2]=k[b>>2];k[t+4>>2]=c;k[m>>2]=k[o>>2];k[m+4>>2]=k[o+4>>2];k[m+8>>2]=k[o+8>>2];k[q>>2]=k[p>>2];k[q+4>>2]=k[p+4>>2];tb(a,u,n,m,0,q);u=1;r=s;return u|0}function ge(a,b,c){a=a|0;b=b|0;c=c|0;var d=0,e=0,f=0,g=0,h=0,j=0,m=0,n=0,o=0,p=0,q=0,s=0,t=0,u=0;s=r;r=r+64|0;q=s+48|0;m=s+32|0;n=s+20|0;o=s+8|0;p=s;f=b+8|0;h=f;e=k[h>>2]|0;h=k[h+4>>2]|0;j=b+16|0;g=j;d=k[g>>2]|0;g=k[g+4>>2]|0;t=sl(d|0,g|0,4,0)|0;u=M;if(!((h|0)<(u|0)|(h|0)==(u|0)&e>>>0>>0)){d=(k[b>>2]|0)+d|0;d=l[d>>0]|l[d+1>>0]<<8|l[d+2>>0]<<16|l[d+3>>0]<<24;i[a>>0]=d;i[a+1>>0]=d>>8;i[a+2>>0]=d>>16;i[a+3>>0]=d>>24;d=j;d=sl(k[d>>2]|0,k[d+4>>2]|0,4,0)|0;g=M;e=j;k[e>>2]=d;k[e+4>>2]=g;e=f;h=k[e+4>>2]|0;e=k[e>>2]|0}f=a+4|0;u=sl(d|0,g|0,4,0)|0;t=M;if((h|0)<(t|0)|(h|0)==(t|0)&e>>>0>>0)d=k[f>>2]|0;else{d=(k[b>>2]|0)+d|0;d=l[d>>0]|l[d+1>>0]<<8|l[d+2>>0]<<16|l[d+3>>0]<<24;i[f>>0]=d;i[f+1>>0]=d>>8;i[f+2>>0]=d>>16;i[f+3>>0]=d>>24;t=j;t=sl(k[t>>2]|0,k[t+4>>2]|0,4,0)|0;u=j;k[u>>2]=t;k[u+4>>2]=M}if(!d){u=1;r=s;return u|0}if(!(Ye(a+8|0,b)|0)){u=0;r=s;return u|0}if(!(of(a+24|0,b)|0)){u=0;r=s;return u|0}if(!(of(a+44|0,b)|0)){u=0;r=s;return u|0}if(!(of(a+64|0,b)|0)){u=0;r=s;return u|0}u=k[f>>2]|0;k[n>>2]=0;k[n+4>>2]=0;k[n+8>>2]=0;k[o>>2]=0;k[o+4>>2]=0;k[o+8>>2]=0;b=c;c=k[b+4>>2]|0;t=p;k[t>>2]=k[b>>2];k[t+4>>2]=c;k[m>>2]=k[o>>2];k[m+4>>2]=k[o+4>>2];k[m+8>>2]=k[o+8>>2];k[q>>2]=k[p>>2];k[q+4>>2]=k[p+4>>2];zb(a,u,n,m,0,q);u=1;r=s;return u|0}function he(a){a=a|0;var b=0,c=0,d=0,e=0;k[a>>2]=5864;mg(a+240|0);fh(a+228|0);b=k[a+212>>2]|0;c=b;if(b|0){d=a+216|0;e=k[d>>2]|0;if((e|0)!=(b|0))k[d>>2]=e+(~((e+-4-c|0)>>>2)<<2);cn(b)}b=k[a+200>>2]|0;c=b;if(b|0){d=a+204|0;e=k[d>>2]|0;if((e|0)!=(b|0))k[d>>2]=e+(~((e+-4-c|0)>>>2)<<2);cn(b)}b=k[a+188>>2]|0;c=b;if(b|0){d=a+192|0;e=k[d>>2]|0;if((e|0)!=(b|0))k[d>>2]=e+(~((e+-4-c|0)>>>2)<<2);cn(b)}b=k[a+176>>2]|0;c=b;if(b|0){d=a+180|0;e=k[d>>2]|0;if((e|0)!=(b|0))k[d>>2]=e+(~((e+-4-c|0)>>>2)<<2);cn(b)}b=k[a+160>>2]|0;if(b|0)do{e=b;b=k[b>>2]|0;cn(e)}while((b|0)!=0);e=a+152|0;b=k[e>>2]|0;k[e>>2]=0;if(b|0)cn(b);b=k[a+136>>2]|0;if(b|0)cn(b);b=k[a+124>>2]|0;if(b|0)cn(b);b=k[a+112>>2]|0;if(b|0)cn(b);b=k[a+88>>2]|0;c=b;if(b|0){d=a+92|0;e=k[d>>2]|0;if((e|0)!=(b|0))k[d>>2]=e+(~((e+-4-c|0)>>>2)<<2);cn(b)}b=k[a+76>>2]|0;c=b;if(b|0){d=a+80|0;e=k[d>>2]|0;if((e|0)!=(b|0))k[d>>2]=e+(~((e+-4-c|0)>>>2)<<2);cn(b)}b=k[a+64>>2]|0;if(b|0)cn(b);b=k[a+48>>2]|0;c=b;if(b|0){d=a+52|0;e=k[d>>2]|0;if((e|0)!=(b|0))k[d>>2]=e+(~((e+-4-c|0)>>>2)<<2);cn(b)}b=k[a+36>>2]|0;c=b;if(b|0){d=a+40|0;e=k[d>>2]|0;if((e|0)!=(b|0))k[d>>2]=e+(~(((e+-12-c|0)>>>0)/12|0)*12|0);cn(b)}b=k[a+24>>2]|0;c=b;if(b|0){d=a+28|0;e=k[d>>2]|0;if((e|0)!=(b|0))k[d>>2]=e+(~((e+-4-c|0)>>>2)<<2);cn(b)}b=k[a+12>>2]|0;c=b;if(b|0){d=a+16|0;e=k[d>>2]|0;if((e|0)!=(b|0))k[d>>2]=e+(~((e+-4-c|0)>>>2)<<2);cn(b)}a=a+8|0;b=k[a>>2]|0;k[a>>2]=0;if(!b)return;Fh(b);cn(b);return}function ie(a,b){a=a|0;b=b|0;var c=0,d=0,e=0,f=0,g=0,h=0,j=0,m=0,n=0,o=0;o=r;r=r+32|0;h=o+16|0;j=o;n=b+8|0;g=n;f=k[g+4>>2]|0;m=b+16|0;d=m;c=k[d>>2]|0;d=k[d+4>>2]|0;if(!((f|0)>(d|0)|((f|0)==(d|0)?(k[g>>2]|0)>>>0>c>>>0:0))){n=0;r=o;return n|0}g=i[(k[b>>2]|0)+c>>0]|0;e=sl(c|0,d|0,1,0)|0;f=m;k[f>>2]=e;k[f+4>>2]=M;if(g<<24>>24){n=0;r=o;return n|0}f=0;do{ci(h,b);c=k[h>>2]|0;if(c|0){g=a+36+(f*12|0)|0;Ce(g,c,0);Lm(j);Ye(j,b)|0;if(k[h>>2]|0){d=0;do{e=(k[g>>2]|0)+(d>>>5<<2)|0;c=1<<(d&31);if(Ti(j)|0)c=k[e>>2]|c;else c=k[e>>2]&~c;k[e>>2]=c;d=d+1|0}while(d>>>0<(k[h>>2]|0)>>>0)}fn(j)}f=f+1|0}while((f|0)<4);f=n;h=k[f>>2]|0;f=k[f+4>>2]|0;j=m;c=k[j>>2]|0;j=sl(c|0,k[j+4>>2]|0,4,0)|0;g=M;if((f|0)<(g|0)|(f|0)==(g|0)&h>>>0>>0){n=0;r=o;return n|0}h=a+12|0;f=(k[b>>2]|0)+c|0;f=l[f>>0]|l[f+1>>0]<<8|l[f+2>>0]<<16|l[f+3>>0]<<24;i[h>>0]=f;i[h+1>>0]=f>>8;i[h+2>>0]=f>>16;i[h+3>>0]=f>>24;h=m;f=k[h>>2]|0;h=k[h+4>>2]|0;c=sl(f|0,h|0,4,0)|0;g=m;k[g>>2]=c;k[g+4>>2]=M;g=n;j=k[g>>2]|0;g=k[g+4>>2]|0;n=sl(f|0,h|0,8,0)|0;h=M;if((g|0)<(h|0)|(g|0)==(h|0)&j>>>0>>0){n=0;r=o;return n|0}n=a+16|0;b=(k[b>>2]|0)+c|0;b=l[b>>0]|l[b+1>>0]<<8|l[b+2>>0]<<16|l[b+3>>0]<<24;i[n>>0]=b;i[n+1>>0]=b>>8;i[n+2>>0]=b>>16;i[n+3>>0]=b>>24;b=m;b=sl(k[b>>2]|0,k[b+4>>2]|0,4,0)|0;n=m;k[n>>2]=b;k[n+4>>2]=M;n=1;r=o;return n|0}function je(a,b,c,d,e,f){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;f=f|0;var g=0,h=0,i=0,j=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0,v=0;s=a+8|0;k[s>>2]=e;t=k[a+24>>2]|0;q=k[a+28>>2]|0;m=e>>>0>1073741823?-1:e<<2;r=$m(m)|0;Vi(r|0,0,m|0)|0;Sg(s,r,b,c,0);m=a+32|0;a=k[m>>2]|0;g=k[a+4>>2]|0;f=k[a>>2]|0;p=g-f|0;n=p>>2;if((p|0)<=4){an(r);return 1}o=t+12|0;p=(e|0)>0;d=1;while(1){if(g-f>>2>>>0<=d>>>0){v=6;break}f=k[f+(d<<2)>>2]|0;l=$(d,e)|0;if((f|0)>=0?(u=k[(k[o>>2]|0)+(f<<2)>>2]|0,(u|0)>=0):0){g=k[t>>2]|0;a=(u>>>0)%3|0;h=k[q>>2]|0;j=k[h+(k[g+(((u>>>0)/3|0)*12|0)+(a<<2)>>2]<<2)>>2]|0;f=u+1|0;f=((f|0)%3|0|0)==0?u+-2|0:f;if((f|0)<0)f=-1073741824;else f=k[g+(((f>>>0)/3|0)*12|0)+(((f>>>0)%3|0)<<2)>>2]|0;i=k[h+(f<<2)>>2]|0;f=((a|0)==0?2:-1)+u|0;if((f|0)<0)f=-1073741824;else f=k[g+(((f>>>0)/3|0)*12|0)+(((f>>>0)%3|0)<<2)>>2]|0;f=k[h+(f<<2)>>2]|0;if((j|0)<(d|0)&(i|0)<(d|0)&(f|0)<(d|0)){h=$(j,e)|0;g=$(i,e)|0;a=$(f,e)|0;if(p){f=0;do{k[r+(f<<2)>>2]=(k[c+(f+a<<2)>>2]|0)+(k[c+(f+g<<2)>>2]|0)-(k[c+(f+h<<2)>>2]|0);f=f+1|0}while((f|0)!=(e|0))}Sg(s,r,b,c+(l<<2)|0,l)}else v=15}else v=15;if((v|0)==15){v=0;Sg(s,c+(($(d+-1|0,e)|0)<<2)|0,b,c+(l<<2)|0,l)}d=d+1|0;if((d|0)>=(n|0)){v=3;break}a=k[m>>2]|0;f=k[a>>2]|0;g=k[a+4>>2]|0}if((v|0)==3){an(r);return 1}else if((v|0)==6)gm(a);return 0}function ke(a,b,c,d){a=a|0;b=b|0;c=c|0;d=d|0;var e=0,f=0,g=0,h=0,i=0,j=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0;p=k[b>>2]|0;m=k[b+4>>2]|0;h=((k[c>>2]|0)-p<<3)+(k[c+4>>2]|0)-m|0;c=p;if((h|0)<=0){b=d+4|0;d=k[d>>2]|0;k[a>>2]=d;d=a+4|0;a=k[b>>2]|0;k[d>>2]=a;return}if(!m){e=d+4|0;n=e;e=k[e>>2]|0}else{g=32-m|0;l=(h|0)<(g|0)?h:g;g=-1>>>(g-l|0)&-1<>2];n=d+4|0;j=k[n>>2]|0;e=32-j|0;f=e>>>0>>0?e:l;i=k[d>>2]|0;j=k[i>>2]&~(-1>>>(e-f|0)&-1<>2]=j;e=k[n>>2]|0;k[i>>2]=j|(e>>>0>m>>>0?g<>>(m-e|0));e=(k[n>>2]|0)+f|0;i=i+(e>>>5<<2)|0;k[d>>2]=i;e=e&31;k[n>>2]=e;j=l-f|0;if((j|0)>0){k[i>>2]=k[i>>2]&~(-1>>>(32-j|0))|g>>>(m+f|0);k[n>>2]=j;e=j}c=c+4|0;k[b>>2]=c;h=h-l|0}p=32-e|0;j=-1<>>0>31){l=~j;i=k[d>>2]|0;e=h+-32|0;o=e>>>5;m=o+1|0;o=e-(o<<5)|0;e=c;f=k[i>>2]|0;g=i;while(1){q=k[e>>2]|0;r=f&l;k[g>>2]=r;k[g>>2]=r|q<>2];g=g+4|0;f=k[g>>2]&j|q>>>p;k[g>>2]=f;h=h+-32|0;if(h>>>0<=31)break;else e=e+4|0}c=c+(m<<2)|0;k[b>>2]=c;k[d>>2]=i+(m<<2);h=o}if(!h){q=n;r=k[d>>2]|0;k[a>>2]=r;r=a+4|0;q=k[q>>2]|0;k[r>>2]=q;return}g=k[c>>2]&-1>>>(32-h|0);f=(p|0)<(h|0)?p:h;e=k[d>>2]|0;c=k[e>>2]&~(-1<>2]&-1>>>(p-f|0));k[e>>2]=c;k[e>>2]=c|g<>2];c=(k[n>>2]|0)+f|0;e=e+(c>>>5<<2)|0;k[d>>2]=e;k[n>>2]=c&31;c=h-f|0;if((c|0)<=0){q=n;r=k[d>>2]|0;k[a>>2]=r;r=a+4|0;q=k[q>>2]|0;k[r>>2]=q;return}k[e>>2]=k[e>>2]&~(-1>>>(32-c|0))|g>>>f;k[n>>2]=c;q=n;r=k[d>>2]|0;k[a>>2]=r;r=a+4|0;q=k[q>>2]|0;k[r>>2]=q;return}function le(a,b,c,d,e,f){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;f=f|0;var g=0,h=0,i=0,j=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0,v=0,w=0,x=0;r=a+8|0;k[r>>2]=e;p=e>>>0>1073741823?-1:e<<2;s=$m(p)|0;Vi(s|0,0,p|0)|0;p=k[a+24>>2]|0;q=a+32|0;h=k[q>>2]|0;g=k[h+4>>2]|0;f=k[h>>2]|0;d=g-f|0;a:do if((d|0)>4){l=k[a+28>>2]|0;m=p+64|0;n=p+28|0;o=(e|0)>0;i=d>>2;a=g;d=h;while(1){j=i+-1|0;if(a-f>>2>>>0<=j>>>0)break;d=k[f+(j<<2)>>2]|0;h=$(j,e)|0;if((!((d|0)<0?1:(1<<(d&31)&k[(k[p>>2]|0)+(d>>>5<<2)>>2]|0)!=0)?(u=k[(k[(k[m>>2]|0)+12>>2]|0)+(d<<2)>>2]|0,(u|0)>=0):0)?(x=k[n>>2]|0,g=k[l>>2]|0,v=k[g+(k[x+(u<<2)>>2]<<2)>>2]|0,w=u+1|0,w=k[g+(k[x+((((w|0)%3|0|0)==0?u+-2|0:w)<<2)>>2]<<2)>>2]|0,x=k[g+(k[x+((((u>>>0)%3|0|0)==0?2:-1)+u<<2)>>2]<<2)>>2]|0,(v|0)<(j|0)&(w|0)<(j|0)&(x|0)<(j|0)):0){f=$(v,e)|0;a=$(w,e)|0;g=$(x,e)|0;if(o){d=0;do{k[s+(d<<2)>>2]=(k[b+(d+g<<2)>>2]|0)+(k[b+(d+a<<2)>>2]|0)-(k[b+(d+f<<2)>>2]|0);d=d+1|0}while((d|0)!=(e|0))}Ze(r,b+(h<<2)|0,s,c,h)}else Ze(r,b+(h<<2)|0,b+(($(i+-2|0,e)|0)<<2)|0,c,h);if((j|0)<=1){t=s;break a}d=k[q>>2]|0;i=j;f=k[d>>2]|0;a=k[d+4>>2]|0}gm(d)}else t=s;while(0);if((e|0)<=0){Ze(r,b,t,c,0);an(s);return 1}Vi(s|0,0,e<<2|0)|0;Ze(r,b,t,c,0);an(s);return 1}function me(a,b,c){a=a|0;b=b|0;c=c|0;var d=0,e=0,f=0,g=0,h=0,j=0,m=0,n=0,o=0,p=0,q=0,s=0,t=0,u=0;s=r;r=r+48|0;n=s+40|0;m=s+28|0;o=s+16|0;p=s+4|0;q=s;f=b+8|0;h=f;e=k[h>>2]|0;h=k[h+4>>2]|0;j=b+16|0;g=j;d=k[g>>2]|0;g=k[g+4>>2]|0;t=sl(d|0,g|0,4,0)|0;u=M;if(!((h|0)<(u|0)|(h|0)==(u|0)&e>>>0>>0)){d=(k[b>>2]|0)+d|0;d=l[d>>0]|l[d+1>>0]<<8|l[d+2>>0]<<16|l[d+3>>0]<<24;i[a>>0]=d;i[a+1>>0]=d>>8;i[a+2>>0]=d>>16;i[a+3>>0]=d>>24;d=j;d=sl(k[d>>2]|0,k[d+4>>2]|0,4,0)|0;g=M;e=j;k[e>>2]=d;k[e+4>>2]=g;e=f;h=k[e+4>>2]|0;e=k[e>>2]|0}f=a+4|0;u=sl(d|0,g|0,4,0)|0;t=M;if((h|0)<(t|0)|(h|0)==(t|0)&e>>>0>>0)d=k[f>>2]|0;else{d=(k[b>>2]|0)+d|0;d=l[d>>0]|l[d+1>>0]<<8|l[d+2>>0]<<16|l[d+3>>0]<<24;i[f>>0]=d;i[f+1>>0]=d>>8;i[f+2>>0]=d>>16;i[f+3>>0]=d>>24;t=j;t=sl(k[t>>2]|0,k[t+4>>2]|0,4,0)|0;u=j;k[u>>2]=t;k[u+4>>2]=M}if(!d){u=1;r=s;return u|0}if(!(of(a+8|0,b)|0)){u=0;r=s;return u|0}if(!(of(a+28|0,b)|0)){u=0;r=s;return u|0}if(!(of(a+48|0,b)|0)){u=0;r=s;return u|0}if(!(of(a+68|0,b)|0)){u=0;r=s;return u|0}u=k[f>>2]|0;k[o>>2]=0;k[o+4>>2]=0;k[o+8>>2]=0;k[p>>2]=0;k[p+4>>2]=0;k[p+8>>2]=0;k[q>>2]=k[c>>2];k[m>>2]=k[p>>2];k[m+4>>2]=k[p+4>>2];k[m+8>>2]=k[p+8>>2];k[n>>2]=k[q>>2];ub(a,u,o,m,0,n);u=1;r=s;return u|0}function ne(a,b,c){a=a|0;b=b|0;c=c|0;var d=0,e=0,f=0,g=0,h=0,j=0,m=0,n=0,o=0,p=0,q=0,s=0,t=0,u=0;s=r;r=r+48|0;n=s+40|0;m=s+28|0;o=s+16|0;p=s+4|0;q=s;f=b+8|0;h=f;e=k[h>>2]|0;h=k[h+4>>2]|0;j=b+16|0;g=j;d=k[g>>2]|0;g=k[g+4>>2]|0;t=sl(d|0,g|0,4,0)|0;u=M;if(!((h|0)<(u|0)|(h|0)==(u|0)&e>>>0>>0)){d=(k[b>>2]|0)+d|0;d=l[d>>0]|l[d+1>>0]<<8|l[d+2>>0]<<16|l[d+3>>0]<<24;i[a>>0]=d;i[a+1>>0]=d>>8;i[a+2>>0]=d>>16;i[a+3>>0]=d>>24;d=j;d=sl(k[d>>2]|0,k[d+4>>2]|0,4,0)|0;g=M;e=j;k[e>>2]=d;k[e+4>>2]=g;e=f;h=k[e+4>>2]|0;e=k[e>>2]|0}f=a+4|0;u=sl(d|0,g|0,4,0)|0;t=M;if((h|0)<(t|0)|(h|0)==(t|0)&e>>>0>>0)d=k[f>>2]|0;else{d=(k[b>>2]|0)+d|0;d=l[d>>0]|l[d+1>>0]<<8|l[d+2>>0]<<16|l[d+3>>0]<<24;i[f>>0]=d;i[f+1>>0]=d>>8;i[f+2>>0]=d>>16;i[f+3>>0]=d>>24;t=j;t=sl(k[t>>2]|0,k[t+4>>2]|0,4,0)|0;u=j;k[u>>2]=t;k[u+4>>2]=M}if(!d){u=1;r=s;return u|0}if(!(Ye(a+8|0,b)|0)){u=0;r=s;return u|0}if(!(of(a+24|0,b)|0)){u=0;r=s;return u|0}if(!(of(a+44|0,b)|0)){u=0;r=s;return u|0}if(!(of(a+64|0,b)|0)){u=0;r=s;return u|0}u=k[f>>2]|0;k[o>>2]=0;k[o+4>>2]=0;k[o+8>>2]=0;k[p>>2]=0;k[p+4>>2]=0;k[p+8>>2]=0;k[q>>2]=k[c>>2];k[m>>2]=k[p>>2];k[m+4>>2]=k[p+4>>2];k[m+8>>2]=k[p+8>>2];k[n>>2]=k[q>>2];Eb(a,u,o,m,0,n);u=1;r=s;return u|0}function oe(a,b,c,d,e,f){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;f=f|0;var g=0,h=0,i=0,j=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0,v=0;s=a+8|0;k[s>>2]=e;t=k[a+24>>2]|0;q=k[a+28>>2]|0;m=e>>>0>1073741823?-1:e<<2;r=$m(m)|0;Vi(r|0,0,m|0)|0;Ug(s,r,b,c,0);m=a+32|0;a=k[m>>2]|0;g=k[a+4>>2]|0;f=k[a>>2]|0;p=g-f|0;n=p>>2;if((p|0)<=4){an(r);return 1}o=t+12|0;p=(e|0)>0;d=1;while(1){if(g-f>>2>>>0<=d>>>0){v=6;break}f=k[f+(d<<2)>>2]|0;l=$(d,e)|0;if((f|0)>=0?(u=k[(k[o>>2]|0)+(f<<2)>>2]|0,(u|0)>=0):0){g=k[t>>2]|0;a=(u>>>0)%3|0;h=k[q>>2]|0;j=k[h+(k[g+(((u>>>0)/3|0)*12|0)+(a<<2)>>2]<<2)>>2]|0;f=u+1|0;f=((f|0)%3|0|0)==0?u+-2|0:f;if((f|0)<0)f=-1073741824;else f=k[g+(((f>>>0)/3|0)*12|0)+(((f>>>0)%3|0)<<2)>>2]|0;i=k[h+(f<<2)>>2]|0;f=((a|0)==0?2:-1)+u|0;if((f|0)<0)f=-1073741824;else f=k[g+(((f>>>0)/3|0)*12|0)+(((f>>>0)%3|0)<<2)>>2]|0;f=k[h+(f<<2)>>2]|0;if((j|0)<(d|0)&(i|0)<(d|0)&(f|0)<(d|0)){h=$(j,e)|0;g=$(i,e)|0;a=$(f,e)|0;if(p){f=0;do{k[r+(f<<2)>>2]=(k[c+(f+a<<2)>>2]|0)+(k[c+(f+g<<2)>>2]|0)-(k[c+(f+h<<2)>>2]|0);f=f+1|0}while((f|0)!=(e|0))}Ug(s,r,b,c+(l<<2)|0,l)}else v=15}else v=15;if((v|0)==15){v=0;Ug(s,c+(($(d+-1|0,e)|0)<<2)|0,b,c+(l<<2)|0,l)}d=d+1|0;if((d|0)>=(n|0)){v=3;break}a=k[m>>2]|0;f=k[a>>2]|0;g=k[a+4>>2]|0}if((v|0)==3){an(r);return 1}else if((v|0)==6)gm(a);return 0}function pe(a,b,c,d,e,f){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;f=f|0;var g=0,h=0,i=0,j=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0,v=0,w=0,x=0;r=a+8|0;k[r>>2]=e;p=e>>>0>1073741823?-1:e<<2;s=$m(p)|0;Vi(s|0,0,p|0)|0;p=k[a+24>>2]|0;q=a+32|0;h=k[q>>2]|0;g=k[h+4>>2]|0;f=k[h>>2]|0;d=g-f|0;a:do if((d|0)>4){l=k[a+28>>2]|0;m=p+64|0;n=p+28|0;o=(e|0)>0;i=d>>2;a=g;d=h;while(1){j=i+-1|0;if(a-f>>2>>>0<=j>>>0)break;d=k[f+(j<<2)>>2]|0;h=$(j,e)|0;if((!((d|0)<0?1:(1<<(d&31)&k[(k[p>>2]|0)+(d>>>5<<2)>>2]|0)!=0)?(u=k[(k[(k[m>>2]|0)+12>>2]|0)+(d<<2)>>2]|0,(u|0)>=0):0)?(x=k[n>>2]|0,g=k[l>>2]|0,v=k[g+(k[x+(u<<2)>>2]<<2)>>2]|0,w=u+1|0,w=k[g+(k[x+((((w|0)%3|0|0)==0?u+-2|0:w)<<2)>>2]<<2)>>2]|0,x=k[g+(k[x+((((u>>>0)%3|0|0)==0?2:-1)+u<<2)>>2]<<2)>>2]|0,(v|0)<(j|0)&(w|0)<(j|0)&(x|0)<(j|0)):0){f=$(v,e)|0;a=$(w,e)|0;g=$(x,e)|0;if(o){d=0;do{k[s+(d<<2)>>2]=(k[b+(d+g<<2)>>2]|0)+(k[b+(d+a<<2)>>2]|0)-(k[b+(d+f<<2)>>2]|0);d=d+1|0}while((d|0)!=(e|0))}cf(r,b+(h<<2)|0,s,c,h)}else cf(r,b+(h<<2)|0,b+(($(i+-2|0,e)|0)<<2)|0,c,h);if((j|0)<=1){t=s;break a}d=k[q>>2]|0;i=j;f=k[d>>2]|0;a=k[d+4>>2]|0}gm(d)}else t=s;while(0);if((e|0)<=0){cf(r,b,t,c,0);an(s);return 1}Vi(s|0,0,e<<2|0)|0;cf(r,b,t,c,0);an(s);return 1}function qe(a,b){a=a|0;b=b|0;var c=0,d=0,e=0,f=0,g=0,h=0,j=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0;q=a+12|0;r=b+8|0;g=r;m=k[g>>2]|0;g=k[g+4>>2]|0;p=b+16|0;n=p;c=k[n>>2]|0;n=sl(c|0,k[n+4>>2]|0,4,0)|0;j=M;if((g|0)<(j|0)|(g|0)==(j|0)&m>>>0>>0){r=0;return r|0}d=(k[b>>2]|0)+c|0;d=l[d>>0]|l[d+1>>0]<<8|l[d+2>>0]<<16|l[d+3>>0]<<24;i[q>>0]=d;i[q+1>>0]=d>>8;i[q+2>>0]=d>>16;i[q+3>>0]=d>>24;g=p;g=sl(k[g>>2]|0,k[g+4>>2]|0,4,0)|0;c=p;k[c>>2]=g;k[c+4>>2]=M;c=a+4|0;g=k[c>>2]|0;f=k[a>>2]|0;e=g-f>>2;if(d>>>0<=e>>>0){if(d>>>0>>0?(h=f+(d<<2)|0,(g|0)!=(h|0)):0)k[c>>2]=g+(~((g+-4-h|0)>>>2)<<2)}else{jh(a,d-e|0);d=k[q>>2]|0}if(!d){r=1;return r|0}c=0;g=d;a:while(1){m=r;j=k[m>>2]|0;m=k[m+4>>2]|0;e=p;d=k[e>>2]|0;e=k[e+4>>2]|0;if(!((m|0)>(e|0)|(m|0)==(e|0)&j>>>0>d>>>0)){c=0;o=18;break}n=k[b>>2]|0;s=i[n+d>>0]|0;e=sl(d|0,e|0,1,0)|0;f=M;d=p;k[d>>2]=e;k[d+4>>2]=f;d=s&255;h=d&3;d=d>>>2;switch(s&3){case 3:{e=d+c|0;if(e>>>0>=g>>>0){c=0;o=18;break a}Vi((k[a>>2]|0)+(c<<2)|0,0,(d<<2)+4|0)|0;c=e;break}case 0:{o=15;break}default:{g=0;while(1){if(!((m|0)>(f|0)|(m|0)==(f|0)&j>>>0>e>>>0)){c=0;o=18;break a}s=i[n+e>>0]|0;e=sl(e|0,f|0,1,0)|0;f=M;o=p;k[o>>2]=e;k[o+4>>2]=f;d=(s&255)<<(g<<3|6)|d;g=g+1|0;if((g|0)>=(h|0)){o=15;break}}}}if((o|0)==15){o=0;k[(k[a>>2]|0)+(c<<2)>>2]=d}c=c+1|0;g=k[q>>2]|0;if(c>>>0>=g>>>0){o=17;break}}if((o|0)==17){s=qg(a+16|0,k[a>>2]|0,g)|0;return s|0}else if((o|0)==18)return c|0;return 0}function re(a,b){a=a|0;b=b|0;var c=0,d=0,e=0,f=0,g=0,h=0,j=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0;q=a+12|0;r=b+8|0;g=r;m=k[g>>2]|0;g=k[g+4>>2]|0;p=b+16|0;n=p;c=k[n>>2]|0;n=sl(c|0,k[n+4>>2]|0,4,0)|0;j=M;if((g|0)<(j|0)|(g|0)==(j|0)&m>>>0>>0){r=0;return r|0}d=(k[b>>2]|0)+c|0;d=l[d>>0]|l[d+1>>0]<<8|l[d+2>>0]<<16|l[d+3>>0]<<24;i[q>>0]=d;i[q+1>>0]=d>>8;i[q+2>>0]=d>>16;i[q+3>>0]=d>>24;g=p;g=sl(k[g>>2]|0,k[g+4>>2]|0,4,0)|0;c=p;k[c>>2]=g;k[c+4>>2]=M;c=a+4|0;g=k[c>>2]|0;f=k[a>>2]|0;e=g-f>>2;if(d>>>0<=e>>>0){if(d>>>0>>0?(h=f+(d<<2)|0,(g|0)!=(h|0)):0)k[c>>2]=g+(~((g+-4-h|0)>>>2)<<2)}else{jh(a,d-e|0);d=k[q>>2]|0}if(!d){r=1;return r|0}c=0;g=d;a:while(1){m=r;j=k[m>>2]|0;m=k[m+4>>2]|0;e=p;d=k[e>>2]|0;e=k[e+4>>2]|0;if(!((m|0)>(e|0)|(m|0)==(e|0)&j>>>0>d>>>0)){c=0;o=18;break}n=k[b>>2]|0;s=i[n+d>>0]|0;e=sl(d|0,e|0,1,0)|0;f=M;d=p;k[d>>2]=e;k[d+4>>2]=f;d=s&255;h=d&3;d=d>>>2;switch(s&3){case 3:{e=d+c|0;if(e>>>0>=g>>>0){c=0;o=18;break a}Vi((k[a>>2]|0)+(c<<2)|0,0,(d<<2)+4|0)|0;c=e;break}case 0:{o=15;break}default:{g=0;while(1){if(!((m|0)>(f|0)|(m|0)==(f|0)&j>>>0>e>>>0)){c=0;o=18;break a}s=i[n+e>>0]|0;e=sl(e|0,f|0,1,0)|0;f=M;o=p;k[o>>2]=e;k[o+4>>2]=f;d=(s&255)<<(g<<3|6)|d;g=g+1|0;if((g|0)>=(h|0)){o=15;break}}}}if((o|0)==15){o=0;k[(k[a>>2]|0)+(c<<2)>>2]=d}c=c+1|0;g=k[q>>2]|0;if(c>>>0>=g>>>0){o=17;break}}if((o|0)==17){s=rg(a+16|0,k[a>>2]|0,g)|0;return s|0}else if((o|0)==18)return c|0;return 0}function se(a,b){a=a|0;b=b|0;var c=0,d=0,e=0,f=0,g=0,h=0,j=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0;q=a+12|0;r=b+8|0;g=r;m=k[g>>2]|0;g=k[g+4>>2]|0;p=b+16|0;n=p;c=k[n>>2]|0;n=sl(c|0,k[n+4>>2]|0,4,0)|0;j=M;if((g|0)<(j|0)|(g|0)==(j|0)&m>>>0>>0){r=0;return r|0}d=(k[b>>2]|0)+c|0;d=l[d>>0]|l[d+1>>0]<<8|l[d+2>>0]<<16|l[d+3>>0]<<24;i[q>>0]=d;i[q+1>>0]=d>>8;i[q+2>>0]=d>>16;i[q+3>>0]=d>>24;g=p;g=sl(k[g>>2]|0,k[g+4>>2]|0,4,0)|0;c=p;k[c>>2]=g;k[c+4>>2]=M;c=a+4|0;g=k[c>>2]|0;f=k[a>>2]|0;e=g-f>>2;if(d>>>0<=e>>>0){if(d>>>0>>0?(h=f+(d<<2)|0,(g|0)!=(h|0)):0)k[c>>2]=g+(~((g+-4-h|0)>>>2)<<2)}else{jh(a,d-e|0);d=k[q>>2]|0}if(!d){r=1;return r|0}c=0;g=d;a:while(1){m=r;j=k[m>>2]|0;m=k[m+4>>2]|0;e=p;d=k[e>>2]|0;e=k[e+4>>2]|0;if(!((m|0)>(e|0)|(m|0)==(e|0)&j>>>0>d>>>0)){c=0;o=18;break}n=k[b>>2]|0;s=i[n+d>>0]|0;e=sl(d|0,e|0,1,0)|0;f=M;d=p;k[d>>2]=e;k[d+4>>2]=f;d=s&255;h=d&3;d=d>>>2;switch(s&3){case 3:{e=d+c|0;if(e>>>0>=g>>>0){c=0;o=18;break a}Vi((k[a>>2]|0)+(c<<2)|0,0,(d<<2)+4|0)|0;c=e;break}case 0:{o=15;break}default:{g=0;while(1){if(!((m|0)>(f|0)|(m|0)==(f|0)&j>>>0>e>>>0)){c=0;o=18;break a}s=i[n+e>>0]|0;e=sl(e|0,f|0,1,0)|0;f=M;o=p;k[o>>2]=e;k[o+4>>2]=f;d=(s&255)<<(g<<3|6)|d;g=g+1|0;if((g|0)>=(h|0)){o=15;break}}}}if((o|0)==15){o=0;k[(k[a>>2]|0)+(c<<2)>>2]=d}c=c+1|0;g=k[q>>2]|0;if(c>>>0>=g>>>0){o=17;break}}if((o|0)==17){s=sg(a+16|0,k[a>>2]|0,g)|0;return s|0}else if((o|0)==18)return c|0;return 0}function te(a,b){a=a|0;b=b|0;var c=0,d=0,e=0,f=0,g=0,h=0,j=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0;q=a+12|0;r=b+8|0;g=r;m=k[g>>2]|0;g=k[g+4>>2]|0;p=b+16|0;n=p;c=k[n>>2]|0;n=sl(c|0,k[n+4>>2]|0,4,0)|0;j=M;if((g|0)<(j|0)|(g|0)==(j|0)&m>>>0>>0){r=0;return r|0}d=(k[b>>2]|0)+c|0;d=l[d>>0]|l[d+1>>0]<<8|l[d+2>>0]<<16|l[d+3>>0]<<24;i[q>>0]=d;i[q+1>>0]=d>>8;i[q+2>>0]=d>>16;i[q+3>>0]=d>>24;g=p;g=sl(k[g>>2]|0,k[g+4>>2]|0,4,0)|0;c=p;k[c>>2]=g;k[c+4>>2]=M;c=a+4|0;g=k[c>>2]|0;f=k[a>>2]|0;e=g-f>>2;if(d>>>0<=e>>>0){if(d>>>0>>0?(h=f+(d<<2)|0,(g|0)!=(h|0)):0)k[c>>2]=g+(~((g+-4-h|0)>>>2)<<2)}else{jh(a,d-e|0);d=k[q>>2]|0}if(!d){r=1;return r|0}c=0;g=d;a:while(1){m=r;j=k[m>>2]|0;m=k[m+4>>2]|0;e=p;d=k[e>>2]|0;e=k[e+4>>2]|0;if(!((m|0)>(e|0)|(m|0)==(e|0)&j>>>0>d>>>0)){c=0;o=18;break}n=k[b>>2]|0;s=i[n+d>>0]|0;e=sl(d|0,e|0,1,0)|0;f=M;d=p;k[d>>2]=e;k[d+4>>2]=f;d=s&255;h=d&3;d=d>>>2;switch(s&3){case 3:{e=d+c|0;if(e>>>0>=g>>>0){c=0;o=18;break a}Vi((k[a>>2]|0)+(c<<2)|0,0,(d<<2)+4|0)|0;c=e;break}case 0:{o=15;break}default:{g=0;while(1){if(!((m|0)>(f|0)|(m|0)==(f|0)&j>>>0>e>>>0)){c=0;o=18;break a}s=i[n+e>>0]|0;e=sl(e|0,f|0,1,0)|0;f=M;o=p;k[o>>2]=e;k[o+4>>2]=f;d=(s&255)<<(g<<3|6)|d;g=g+1|0;if((g|0)>=(h|0)){o=15;break}}}}if((o|0)==15){o=0;k[(k[a>>2]|0)+(c<<2)>>2]=d}c=c+1|0;g=k[q>>2]|0;if(c>>>0>=g>>>0){o=17;break}}if((o|0)==17){s=ug(a+16|0,k[a>>2]|0,g)|0;return s|0}else if((o|0)==18)return c|0;return 0}function ue(a,b){a=a|0;b=b|0;var c=0,d=0,e=0,f=0,g=0,h=0,j=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0;q=a+12|0;r=b+8|0;g=r;m=k[g>>2]|0;g=k[g+4>>2]|0;p=b+16|0;n=p;c=k[n>>2]|0;n=sl(c|0,k[n+4>>2]|0,4,0)|0;j=M;if((g|0)<(j|0)|(g|0)==(j|0)&m>>>0>>0){r=0;return r|0}d=(k[b>>2]|0)+c|0;d=l[d>>0]|l[d+1>>0]<<8|l[d+2>>0]<<16|l[d+3>>0]<<24;i[q>>0]=d;i[q+1>>0]=d>>8;i[q+2>>0]=d>>16;i[q+3>>0]=d>>24;g=p;g=sl(k[g>>2]|0,k[g+4>>2]|0,4,0)|0;c=p;k[c>>2]=g;k[c+4>>2]=M;c=a+4|0;g=k[c>>2]|0;f=k[a>>2]|0;e=g-f>>2;if(d>>>0<=e>>>0){if(d>>>0>>0?(h=f+(d<<2)|0,(g|0)!=(h|0)):0)k[c>>2]=g+(~((g+-4-h|0)>>>2)<<2)}else{jh(a,d-e|0);d=k[q>>2]|0}if(!d){r=1;return r|0}c=0;g=d;a:while(1){m=r;j=k[m>>2]|0;m=k[m+4>>2]|0;e=p;d=k[e>>2]|0;e=k[e+4>>2]|0;if(!((m|0)>(e|0)|(m|0)==(e|0)&j>>>0>d>>>0)){c=0;o=18;break}n=k[b>>2]|0;s=i[n+d>>0]|0;e=sl(d|0,e|0,1,0)|0;f=M;d=p;k[d>>2]=e;k[d+4>>2]=f;d=s&255;h=d&3;d=d>>>2;switch(s&3){case 3:{e=d+c|0;if(e>>>0>=g>>>0){c=0;o=18;break a}Vi((k[a>>2]|0)+(c<<2)|0,0,(d<<2)+4|0)|0;c=e;break}case 0:{o=15;break}default:{g=0;while(1){if(!((m|0)>(f|0)|(m|0)==(f|0)&j>>>0>e>>>0)){c=0;o=18;break a}s=i[n+e>>0]|0;e=sl(e|0,f|0,1,0)|0;f=M;o=p;k[o>>2]=e;k[o+4>>2]=f;d=(s&255)<<(g<<3|6)|d;g=g+1|0;if((g|0)>=(h|0)){o=15;break}}}}if((o|0)==15){o=0;k[(k[a>>2]|0)+(c<<2)>>2]=d}c=c+1|0;g=k[q>>2]|0;if(c>>>0>=g>>>0){o=17;break}}if((o|0)==17){s=vg(a+16|0,k[a>>2]|0,g)|0;return s|0}else if((o|0)==18)return c|0;return 0}function ve(a,b){a=a|0;b=b|0;var c=0,d=0,e=0,f=0,g=0,h=0,j=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0;q=a+12|0;r=b+8|0;g=r;m=k[g>>2]|0;g=k[g+4>>2]|0;p=b+16|0;n=p;c=k[n>>2]|0;n=sl(c|0,k[n+4>>2]|0,4,0)|0;j=M;if((g|0)<(j|0)|(g|0)==(j|0)&m>>>0>>0){r=0;return r|0}d=(k[b>>2]|0)+c|0;d=l[d>>0]|l[d+1>>0]<<8|l[d+2>>0]<<16|l[d+3>>0]<<24;i[q>>0]=d;i[q+1>>0]=d>>8;i[q+2>>0]=d>>16;i[q+3>>0]=d>>24;g=p;g=sl(k[g>>2]|0,k[g+4>>2]|0,4,0)|0;c=p;k[c>>2]=g;k[c+4>>2]=M;c=a+4|0;g=k[c>>2]|0;f=k[a>>2]|0;e=g-f>>2;if(d>>>0<=e>>>0){if(d>>>0>>0?(h=f+(d<<2)|0,(g|0)!=(h|0)):0)k[c>>2]=g+(~((g+-4-h|0)>>>2)<<2)}else{jh(a,d-e|0);d=k[q>>2]|0}if(!d){r=1;return r|0}c=0;g=d;a:while(1){m=r;j=k[m>>2]|0;m=k[m+4>>2]|0;e=p;d=k[e>>2]|0;e=k[e+4>>2]|0;if(!((m|0)>(e|0)|(m|0)==(e|0)&j>>>0>d>>>0)){c=0;o=18;break}n=k[b>>2]|0;s=i[n+d>>0]|0;e=sl(d|0,e|0,1,0)|0;f=M;d=p;k[d>>2]=e;k[d+4>>2]=f;d=s&255;h=d&3;d=d>>>2;switch(s&3){case 3:{e=d+c|0;if(e>>>0>=g>>>0){c=0;o=18;break a}Vi((k[a>>2]|0)+(c<<2)|0,0,(d<<2)+4|0)|0;c=e;break}case 0:{o=15;break}default:{g=0;while(1){if(!((m|0)>(f|0)|(m|0)==(f|0)&j>>>0>e>>>0)){c=0;o=18;break a}s=i[n+e>>0]|0;e=sl(e|0,f|0,1,0)|0;f=M;o=p;k[o>>2]=e;k[o+4>>2]=f;d=(s&255)<<(g<<3|6)|d;g=g+1|0;if((g|0)>=(h|0)){o=15;break}}}}if((o|0)==15){o=0;k[(k[a>>2]|0)+(c<<2)>>2]=d}c=c+1|0;g=k[q>>2]|0;if(c>>>0>=g>>>0){o=17;break}}if((o|0)==17){s=yg(a+16|0,k[a>>2]|0,g)|0;return s|0}else if((o|0)==18)return c|0;return 0}function we(a,b){a=a|0;b=b|0;var c=0,d=0,e=0,f=0,g=0,h=0,j=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0;q=a+12|0;r=b+8|0;g=r;m=k[g>>2]|0;g=k[g+4>>2]|0;p=b+16|0;n=p;c=k[n>>2]|0;n=sl(c|0,k[n+4>>2]|0,4,0)|0;j=M;if((g|0)<(j|0)|(g|0)==(j|0)&m>>>0>>0){r=0;return r|0}d=(k[b>>2]|0)+c|0;d=l[d>>0]|l[d+1>>0]<<8|l[d+2>>0]<<16|l[d+3>>0]<<24;i[q>>0]=d;i[q+1>>0]=d>>8;i[q+2>>0]=d>>16;i[q+3>>0]=d>>24;g=p;g=sl(k[g>>2]|0,k[g+4>>2]|0,4,0)|0;c=p;k[c>>2]=g;k[c+4>>2]=M;c=a+4|0;g=k[c>>2]|0;f=k[a>>2]|0;e=g-f>>2;if(d>>>0<=e>>>0){if(d>>>0>>0?(h=f+(d<<2)|0,(g|0)!=(h|0)):0)k[c>>2]=g+(~((g+-4-h|0)>>>2)<<2)}else{jh(a,d-e|0);d=k[q>>2]|0}if(!d){r=1;return r|0}c=0;g=d;a:while(1){m=r;j=k[m>>2]|0;m=k[m+4>>2]|0;e=p;d=k[e>>2]|0;e=k[e+4>>2]|0;if(!((m|0)>(e|0)|(m|0)==(e|0)&j>>>0>d>>>0)){c=0;o=18;break}n=k[b>>2]|0;s=i[n+d>>0]|0;e=sl(d|0,e|0,1,0)|0;f=M;d=p;k[d>>2]=e;k[d+4>>2]=f;d=s&255;h=d&3;d=d>>>2;switch(s&3){case 3:{e=d+c|0;if(e>>>0>=g>>>0){c=0;o=18;break a}Vi((k[a>>2]|0)+(c<<2)|0,0,(d<<2)+4|0)|0;c=e;break}case 0:{o=15;break}default:{g=0;while(1){if(!((m|0)>(f|0)|(m|0)==(f|0)&j>>>0>e>>>0)){c=0;o=18;break a}s=i[n+e>>0]|0;e=sl(e|0,f|0,1,0)|0;f=M;o=p;k[o>>2]=e;k[o+4>>2]=f;d=(s&255)<<(g<<3|6)|d;g=g+1|0;if((g|0)>=(h|0)){o=15;break}}}}if((o|0)==15){o=0;k[(k[a>>2]|0)+(c<<2)>>2]=d}c=c+1|0;g=k[q>>2]|0;if(c>>>0>=g>>>0){o=17;break}}if((o|0)==17){s=zg(a+16|0,k[a>>2]|0,g)|0;return s|0}else if((o|0)==18)return c|0;return 0}function xe(a,b,c,d){a=a|0;b=b|0;c=c|0;d=d|0;var e=0,f=0,g=0,h=0,i=0,j=0,l=0,m=0,n=0;l=k[b>>2]|0;m=b+4|0;e=k[m>>2]|0;h=((k[c>>2]|0)-l<<3)+(k[c+4>>2]|0)-e|0;c=l;if((h|0)<=0){b=d+4|0;d=k[d>>2]|0;k[a>>2]=d;d=a+4|0;a=k[b>>2]|0;k[d>>2]=a;return}if(!e){e=d+4|0;j=e;e=k[e>>2]|0}else{f=32-e|0;l=(h|0)<(f|0)?h:f;f=-1>>>(f-l|0)&-1<>2];j=d+4|0;n=k[j>>2]|0;e=32-n|0;c=e>>>0>>0?e:l;g=k[d>>2]|0;n=k[g>>2]&~(-1>>>(e-c|0)&-1<>2]=n;e=k[j>>2]|0;i=k[m>>2]|0;k[g>>2]=n|(e>>>0>i>>>0?f<>>(i-e|0));e=(k[j>>2]|0)+c|0;g=g+(e>>>5<<2)|0;k[d>>2]=g;e=e&31;k[j>>2]=e;i=l-c|0;if((i|0)>0){e=k[g>>2]&~(-1>>>(32-i|0));k[g>>2]=e;k[g>>2]=e|f>>>((k[m>>2]|0)+c|0);k[j>>2]=i;e=i}c=(k[b>>2]|0)+4|0;k[b>>2]=c;h=h-l|0}i=32-e|0;f=-1<>>0>31){g=~f;e=h;do{m=k[c>>2]|0;n=k[d>>2]|0;l=k[n>>2]&g;k[n>>2]=l;k[n>>2]=l|m<>2];n=n+4|0;k[d>>2]=n;k[n>>2]=k[n>>2]&f|m>>>i;e=e+-32|0;c=(k[b>>2]|0)+4|0;k[b>>2]=c}while(e>>>0>31);h=h&31}if(!h){b=j;n=k[d>>2]|0;k[a>>2]=n;n=a+4|0;d=k[b>>2]|0;k[n>>2]=d;return}g=k[c>>2]&-1>>>(32-h|0);f=(i|0)<(h|0)?i:h;e=k[d>>2]|0;c=k[e>>2]&~(-1<>2]&-1>>>(i-f|0));k[e>>2]=c;k[e>>2]=c|g<>2];c=(k[j>>2]|0)+f|0;e=e+(c>>>5<<2)|0;k[d>>2]=e;k[j>>2]=c&31;c=h-f|0;if((c|0)<=0){b=j;n=k[d>>2]|0;k[a>>2]=n;n=a+4|0;d=k[b>>2]|0;k[n>>2]=d;return}k[e>>2]=k[e>>2]&~(-1>>>(32-c|0))|g>>>f;k[j>>2]=c;b=j;n=k[d>>2]|0;k[a>>2]=n;n=a+4|0;d=k[b>>2]|0;k[n>>2]=d;return}function ye(a,b,c){a=a|0;b=b|0;c=c|0;var d=0,e=0,f=0,g=0,h=0,j=0,m=0,n=0,o=0,p=0,q=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0;w=r;r=r+48|0;t=w+40|0;u=w+24|0;o=w+20|0;p=w+16|0;q=w;s=w+8|0;k[u>>2]=0;v=u+4|0;k[v>>2]=0;k[u+8>>2]=0;e=b+8|0;d=k[e>>2]|0;e=k[e+4>>2]|0;f=b+16|0;h=f;g=k[h>>2]|0;h=k[h+4>>2]|0;j=sl(g|0,h|0,4,0)|0;m=M;a:do if((e|0)<(m|0)|(e|0)==(m|0)&d>>>0>>0)d=0;else{n=k[b>>2]|0;x=n+g|0;x=l[x>>0]|l[x+1>>0]<<8|l[x+2>>0]<<16|l[x+3>>0]<<24;y=f;k[y>>2]=j;k[y+4>>2]=m;b:do switch(x|0){case 3:{if(!((e|0)>(m|0)|(e|0)==(m|0)&d>>>0>j>>>0)){d=0;break a}y=i[n+j>>0]|0;n=sl(g|0,h|0,5,0)|0;x=f;k[x>>2]=n;k[x+4>>2]=M;k[a+8>>2]=y<<24>>24;if(y<<24>>24==1)if(Fb(a,b,u)|0)break b;else{d=0;break a}else{Dj(13495,23,1,k[1481]|0)|0;d=0;break a}}case 2:{if(!(Fb(a,b,u)|0)){d=0;break a}break}default:{Dj(13519,24,1,k[1481]|0)|0;d=0;break a}}while(0);k[o>>2]=k[u>>2];k[p>>2]=k[v>>2];x=c;y=k[x+4>>2]|0;d=q;k[d>>2]=k[x>>2];k[d+4>>2]=y;k[t>>2]=k[q>>2];k[t+4>>2]=k[q+4>>2];Oe(s,o,p,a,t);d=1}while(0);a=k[u>>2]|0;if(!a){r=w;return d|0}b=k[v>>2]|0;if((b|0)!=(a|0))k[v>>2]=b+(~(((b+-12-a|0)>>>0)/12|0)*12|0);cn(a);r=w;return d|0}function ze(a,b){a=a|0;b=b|0;var c=0,d=0,e=0,f=0,g=0,h=0,j=0;e=a+8|0;j=e;g=k[j>>2]|0;j=k[j+4>>2]|0;f=a+16|0;d=f;c=k[d>>2]|0;d=sl(c|0,k[d+4>>2]|0,5,0)|0;h=M;if((j|0)<(h|0)|(j|0)==(h|0)&g>>>0>>0){j=0;return j|0}c=(k[a>>2]|0)+c|0;i[b>>0]=i[c>>0]|0;i[b+1>>0]=i[c+1>>0]|0;i[b+2>>0]=i[c+2>>0]|0;i[b+3>>0]=i[c+3>>0]|0;i[b+4>>0]=i[c+4>>0]|0;c=f;c=sl(k[c>>2]|0,k[c+4>>2]|0,5,0)|0;d=M;j=f;k[j>>2]=c;k[j+4>>2]=d;if(ij(b,6935,5)|0){j=0;return j|0}j=e;h=k[j+4>>2]|0;if(!((h|0)>(d|0)|((h|0)==(d|0)?(k[j>>2]|0)>>>0>c>>>0:0))){j=0;return j|0}i[b+5>>0]=i[(k[a>>2]|0)+c>>0]|0;c=f;c=sl(k[c>>2]|0,k[c+4>>2]|0,1,0)|0;h=M;j=f;k[j>>2]=c;k[j+4>>2]=h;j=e;g=k[j+4>>2]|0;if(!((g|0)>(h|0)|((g|0)==(h|0)?(k[j>>2]|0)>>>0>c>>>0:0))){j=0;return j|0}i[b+6>>0]=i[(k[a>>2]|0)+c>>0]|0;c=f;c=sl(k[c>>2]|0,k[c+4>>2]|0,1,0)|0;h=M;j=f;k[j>>2]=c;k[j+4>>2]=h;j=e;g=k[j+4>>2]|0;if(!((g|0)>(h|0)|((g|0)==(h|0)?(k[j>>2]|0)>>>0>c>>>0:0))){j=0;return j|0}i[b+7>>0]=i[(k[a>>2]|0)+c>>0]|0;c=f;c=sl(k[c>>2]|0,k[c+4>>2]|0,1,0)|0;h=M;j=f;k[j>>2]=c;k[j+4>>2]=h;j=e;g=k[j+4>>2]|0;if(!((g|0)>(h|0)|((g|0)==(h|0)?(k[j>>2]|0)>>>0>c>>>0:0))){j=0;return j|0}i[b+8>>0]=i[(k[a>>2]|0)+c>>0]|0;j=f;g=k[j>>2]|0;j=k[j+4>>2]|0;c=sl(g|0,j|0,1,0)|0;h=f;k[h>>2]=c;k[h+4>>2]=M;h=k[e>>2]|0;e=k[e+4>>2]|0;j=sl(g|0,j|0,3,0)|0;g=M;if((e|0)<(g|0)|(e|0)==(g|0)&h>>>0>>0){j=0;return j|0}h=b+10|0;j=(k[a>>2]|0)+c|0;j=l[j>>0]|l[j+1>>0]<<8;i[h>>0]=j;i[h+1>>0]=j>>8;h=f;h=sl(k[h>>2]|0,k[h+4>>2]|0,2,0)|0;j=f;k[j>>2]=h;k[j+4>>2]=M;j=1;return j|0}function Ae(a,b){a=a|0;b=b|0;var c=0,d=0,e=0,f=0,g=0,h=0,j=0,m=0,n=0,o=0,p=0;p=r;r=r+16|0;o=p;m=b+8|0;g=m;h=k[g>>2]|0;g=k[g+4>>2]|0;j=b+16|0;d=j;c=k[d>>2]|0;d=sl(c|0,k[d+4>>2]|0,4,0)|0;e=M;if((g|0)<(e|0)|(g|0)==(e|0)&h>>>0>>0){o=0;r=p;return o|0}h=(k[b>>2]|0)+c|0;h=l[h>>0]|l[h+1>>0]<<8|l[h+2>>0]<<16|l[h+3>>0]<<24;g=j;k[g>>2]=d;k[g+4>>2]=e;if((h|0)<0){o=0;r=p;return o|0}g=a+52|0;Ce(g,h,0);Lm(o);if(Ye(o,b)|0){if((h|0)>0){d=1;e=0;do{d=d^((Ti(o)|0)^1);f=(k[g>>2]|0)+(e>>>5<<2)|0;c=1<<(e&31);if(d)c=k[f>>2]|c;else c=k[f>>2]&~c;k[f>>2]=c;e=e+1|0}while((e|0)<(h|0))}e=m;g=k[e>>2]|0;e=k[e+4>>2]|0;h=j;c=k[h>>2]|0;h=sl(c|0,k[h+4>>2]|0,4,0)|0;f=M;if(!((e|0)<(f|0)|(e|0)==(f|0)&g>>>0>>0)?(g=a+12|0,e=(k[b>>2]|0)+c|0,e=l[e>>0]|l[e+1>>0]<<8|l[e+2>>0]<<16|l[e+3>>0]<<24,i[g>>0]=e,i[g+1>>0]=e>>8,i[g+2>>0]=e>>16,i[g+3>>0]=e>>24,g=j,e=k[g>>2]|0,g=k[g+4>>2]|0,n=sl(e|0,g|0,4,0)|0,f=j,k[f>>2]=n,k[f+4>>2]=M,f=m,h=k[f>>2]|0,f=k[f+4>>2]|0,m=sl(e|0,g|0,8,0)|0,g=M,!((f|0)<(g|0)|(f|0)==(g|0)&h>>>0>>0)):0){c=a+16|0;n=(k[b>>2]|0)+n|0;n=l[n>>0]|l[n+1>>0]<<8|l[n+2>>0]<<16|l[n+3>>0]<<24;i[c>>0]=n;i[c+1>>0]=n>>8;i[c+2>>0]=n>>16;i[c+3>>0]=n>>24;n=j;n=sl(k[n>>2]|0,k[n+4>>2]|0,4,0)|0;c=j;k[c>>2]=n;k[c+4>>2]=M;c=1}else c=0}else c=0;fn(o);o=c;r=p;return o|0}function Be(a,b,c,d){a=a|0;b=b|0;c=c|0;d=d|0;var e=0,f=0,g=0,h=0,i=0,j=0,l=0,m=0,n=0,o=0,p=0,q=0.0;n=b+8|0;p=k[n>>2]|0;e=(k[c>>2]|0)-p|0;m=c+4|0;g=(k[m>>2]|0)-p|0;f=c;k[f>>2]=e;k[f+4>>2]=g;q=+O(+(+(e|0)))+ +O(+(+(g|0)));f=k[n>>2]|0;if(!(q<=+(f|0))){if((e|0)>-1)if((g|0)<=-1)if((e|0)<1){h=-1;i=-1}else o=6;else{h=1;i=1}else if((g|0)<1){h=-1;i=-1}else o=6;if((o|0)==6){h=(e|0)>0?1:-1;i=(g|0)>0?1:-1}l=$(f,h)|0;j=$(f,i)|0;e=(e<<1)-l|0;k[c>>2]=e;f=(g<<1)-j|0;k[m>>2]=f;if(($(h,i)|0)>-1){f=0-f|0;k[c>>2]=f;e=0-e|0}else k[c>>2]=f;l=(f+l|0)/2|0;k[c>>2]=l;g=(e+j|0)/2|0;k[m>>2]=g;h=0;e=l;j=k[n>>2]|0}else{h=1;j=f}f=(k[d>>2]|0)+e|0;k[a>>2]=f;e=(k[d+4>>2]|0)+g|0;l=a+4|0;k[l>>2]=e;if((j|0)>=(f|0)){if((f|0)<(0-j|0))f=(k[b+4>>2]|0)+f|0}else f=f-(k[b+4>>2]|0)|0;k[a>>2]=f;if((j|0)>=(e|0))if((e|0)<(0-j|0))i=(k[b+4>>2]|0)+e|0;else i=e;else i=e-(k[b+4>>2]|0)|0;k[l>>2]=i;if(h){o=i;b=f;b=b+p|0;o=o+p|0;p=a;a=p;k[a>>2]=b;p=p+4|0;k[p>>2]=o;return}if((f|0)>-1)if((i|0)<=-1)if((f|0)<1){g=-1;h=-1}else o=24;else{g=1;h=1}else if((i|0)<1){g=-1;h=-1}else o=24;if((o|0)==24){g=(f|0)>0?1:-1;h=(i|0)>0?1:-1}c=$(j,g)|0;j=$(j,h)|0;e=(f<<1)-c|0;k[a>>2]=e;f=(i<<1)-j|0;k[l>>2]=f;if(($(g,h)|0)>-1){f=0-f|0;k[a>>2]=f;e=0-e|0}else k[a>>2]=f;b=(f+c|0)/2|0;k[a>>2]=b;o=(e+j|0)/2|0;k[l>>2]=o;b=b+p|0;o=o+p|0;p=a;a=p;k[a>>2]=b;p=p+4|0;k[p>>2]=o;return}function Ce(a,b,c){a=a|0;b=b|0;c=c|0;var d=0,e=0,f=0,g=0,h=0,i=0,j=0,l=0,m=0,n=0,o=0,p=0,q=0;p=r;r=r+32|0;m=p+8|0;i=p;n=a+4|0;e=k[n>>2]|0;if(e>>>0>=b>>>0){k[n>>2]=b;r=p;return}o=a+8|0;f=k[o>>2]|0;l=f<<5;d=b-e|0;if(l>>>0>>0|e>>>0>(l-d|0)>>>0){k[m>>2]=0;j=m+4|0;k[j>>2]=0;l=m+8|0;k[l>>2]=0;if((b|0)<0)hm(a);e=f<<6;g=b+31&-32;Xg(m,f<<5>>>0<1073741823?(e>>>0>>0?g:e):2147483647);f=k[n>>2]|0;k[j>>2]=f+d;e=k[a>>2]|0;g=e;b=k[m>>2]|0;f=(g+(f>>>5<<2)-e<<3)+(f&31)|0;if((f|0)>0){h=f>>>5;Wj(b|0,e|0,h<<2|0)|0;e=f-(h<<5)|0;f=b+(h<<2)|0;b=f;if((e|0)>0){q=-1>>>(32-e|0);k[f>>2]=k[f>>2]&~q|k[g+(h<<2)>>2]&q}else e=0}else e=0;k[i>>2]=b;k[i+4>>2]=e;f=i;b=k[f>>2]|0;f=k[f+4>>2]|0;e=k[a>>2]|0;k[a>>2]=k[m>>2];k[m>>2]=e;q=k[n>>2]|0;k[n>>2]=k[j>>2];k[j>>2]=q;q=k[o>>2]|0;k[o>>2]=k[l>>2];k[l>>2]=q;if(e|0)cn(e)}else{f=(k[a>>2]|0)+(e>>>5<<2)|0;k[n>>2]=b;b=f;f=e&31}if(!d){r=p;return}g=(f|0)==0;e=b;if(c){if(!g){q=32-f|0;b=q>>>0>d>>>0?d:q;k[e>>2]=k[e>>2]|-1>>>(q-b|0)&-1<>>5;Vi(b|0,-1,q<<2|0)|0;d=d-(q<<5)|0;b=e+(q<<2)|0;if(!d){r=p;return}k[b>>2]=k[b>>2]|-1>>>(32-d|0);r=p;return}else{if(!g){q=32-f|0;b=q>>>0>d>>>0?d:q;k[e>>2]=k[e>>2]&~(-1>>>(q-b|0)&-1<>>5;Vi(b|0,0,q<<2|0)|0;d=d-(q<<5)|0;b=e+(q<<2)|0;if(!d){r=p;return}k[b>>2]=k[b>>2]&~(-1>>>(32-d|0));r=p;return}}function De(a,b){a=a|0;b=b|0;var c=0,d=Pa,e=Pa,f=0,g=0,h=0,i=0,j=0,l=0,m=0,n=Pa;m=k[b>>2]|0;h=a+4|0;i=k[h>>2]|0;j=(i|0)==0;a:do if(!j){f=i+-1|0;c=(f&i|0)==0;if(c)g=f&m;else g=(m>>>0)%(i>>>0)|0;b=k[(k[a>>2]|0)+(g<<2)>>2]|0;if(b)if(c){do{b=k[b>>2]|0;if(!b){b=g;break a}if((k[b+4>>2]&f|0)!=(g|0)){b=g;break a}}while((k[b+8>>2]|0)!=(m|0));a=b+12|0;return a|0}else{do{b=k[b>>2]|0;if(!b){b=g;break a}if((((k[b+4>>2]|0)>>>0)%(i>>>0)|0|0)!=(g|0)){b=g;break a}}while((k[b+8>>2]|0)!=(m|0));a=b+12|0;return a|0}else b=g}else b=0;while(0);g=xk(16)|0;k[g+8>>2]=m;k[g+12>>2]=0;k[g+4>>2]=m;k[g>>2]=0;l=a+12|0;d=da(((k[l>>2]|0)+1|0)>>>0);n=da(i>>>0);e=da(o[a+16>>2]);do if(j|d>da(n*e)){b=(i>>>0>2&(i+-1&i|0)==0&1|i<<1)^1;c=~~da(_(da(d/e)))>>>0;Vg(a,b>>>0>>0?c:b);b=k[h>>2]|0;c=b+-1|0;if(!(c&b)){f=b;b=c&m;break}else{f=b;b=(m>>>0)%(b>>>0)|0;break}}else f=i;while(0);b=(k[a>>2]|0)+(b<<2)|0;c=k[b>>2]|0;if(!c){m=a+8|0;k[g>>2]=k[m>>2];k[m>>2]=g;k[b>>2]=m;b=k[g>>2]|0;if(b|0){b=k[b+4>>2]|0;c=f+-1|0;if(!(c&f))b=b&c;else b=(b>>>0)%(f>>>0)|0;k[(k[a>>2]|0)+(b<<2)>>2]=g}}else{k[g>>2]=k[c>>2];k[c>>2]=g}k[l>>2]=(k[l>>2]|0)+1;a=g;a=a+12|0;return a|0}function Ee(a,b,c,d){a=a|0;b=b|0;c=c|0;d=d|0;var e=0,f=0,g=0,h=0,i=0,j=0,l=0,m=0,n=0,o=0,p=0.0;n=b+8|0;f=k[n>>2]|0;o=c+4|0;m=(k[o>>2]|0)-f|0;e=c;k[e>>2]=(k[c>>2]|0)-f;k[e+4>>2]=m;e=(k[d>>2]|0)-f|0;m=d+4|0;f=(k[m>>2]|0)-f|0;i=d;k[i>>2]=e;k[i+4>>2]=f;p=+O(+(+(e|0)))+ +O(+(+(f|0)));i=k[n>>2]|0;if(!(p<=+(i|0))){e=k[c>>2]|0;f=k[o>>2]|0;if((e|0)>-1)if((f|0)<=-1)if((e|0)<1){g=-1;h=-1}else l=6;else{g=1;h=1}else if((f|0)<1){g=-1;h=-1}else l=6;if((l|0)==6){g=(e|0)>0?1:-1;h=(f|0)>0?1:-1}j=$(i,g)|0;i=$(i,h)|0;e=(e<<1)-j|0;k[c>>2]=e;f=(f<<1)-i|0;k[o>>2]=f;if(($(g,h)|0)>-1){f=0-f|0;k[c>>2]=f;e=0-e|0}else k[c>>2]=f;k[c>>2]=(f+j|0)/2|0;k[o>>2]=(e+i|0)/2|0;e=k[d>>2]|0;f=k[m>>2]|0;if((e|0)>-1)if((f|0)<=-1)if((e|0)<1){g=-1;h=-1}else l=14;else{g=1;h=1}else if((f|0)<1){g=-1;h=-1}else l=14;if((l|0)==14){g=(e|0)>0?1:-1;h=(f|0)>0?1:-1}j=k[n>>2]|0;i=$(j,g)|0;j=$(j,h)|0;e=(e<<1)-i|0;k[d>>2]=e;f=(f<<1)-j|0;k[m>>2]=f;if(($(g,h)|0)>-1){f=0-f|0;k[d>>2]=f;e=0-e|0}else k[d>>2]=f;i=(f+i|0)/2|0;k[d>>2]=i;f=(e+j|0)/2|0;k[m>>2]=f;e=i;i=k[n>>2]|0}e=(k[c>>2]|0)-e|0;k[a>>2]=e;g=(k[o>>2]|0)-f|0;h=a+4|0;k[h>>2]=g;f=i<<1;if((f|0)<(e|0))Ka(9367,11377,162,9391);if((e|0)<0)e=(k[b+4>>2]|0)+e|0;k[a>>2]=e;if((f|0)<(g|0))Ka(9367,11377,162,9391);if((g|0)>=0){b=g;k[h>>2]=b;return}b=(k[b+4>>2]|0)+g|0;k[h>>2]=b;return}function Fe(a,b){a=a|0;b=b|0;var c=0,d=0,e=0,f=0,g=0,h=0,j=0,l=0,m=0,n=0;n=r;r=r+32|0;j=n;l=a+8|0;e=k[l>>2]|0;m=a+4|0;c=k[m>>2]|0;if(((e-c|0)/116|0)>>>0>=b>>>0){do{k[c>>2]=-1;Uj(c+4|0);i[c+72>>0]=1;c=c+76|0;d=c+40|0;do{k[c>>2]=0;c=c+4|0}while((c|0)<(d|0));c=(k[m>>2]|0)+116|0;k[m>>2]=c;b=b+-1|0}while((b|0)!=0);r=n;return}f=k[a>>2]|0;d=((c-f|0)/116|0)+b|0;if(d>>>0>37025580)hm(a);h=(e-f|0)/116|0;e=h<<1;e=h>>>0<18512790?(e>>>0>>0?d:e):37025580;c=(c-f|0)/116|0;k[j+12>>2]=0;k[j+16>>2]=a+8;do if(e)if(e>>>0>37025580){n=Ma(4)|0;Om(n);xa(n|0,1024,93)}else{d=xk(e*116|0)|0;break}else d=0;while(0);k[j>>2]=d;c=d+(c*116|0)|0;g=j+8|0;k[g>>2]=c;f=j+4|0;k[f>>2]=c;h=j+12|0;k[h>>2]=d+(e*116|0);do{k[c>>2]=-1;Uj(c+4|0);i[c+72>>0]=1;c=c+76|0;d=c+40|0;do{k[c>>2]=0;c=c+4|0}while((c|0)<(d|0));c=(k[g>>2]|0)+116|0;k[g>>2]=c;b=b+-1|0}while((b|0)!=0);d=k[a>>2]|0;c=k[m>>2]|0;if((c|0)==(d|0)){e=f;b=k[f>>2]|0}else{b=k[f>>2]|0;do{b=b+-116|0;c=c+-116|0;He(b,c);k[f>>2]=b}while((c|0)!=(d|0));e=f;d=k[a>>2]|0;c=k[m>>2]|0}k[a>>2]=b;k[e>>2]=d;k[m>>2]=k[g>>2];k[g>>2]=c;m=k[l>>2]|0;k[l>>2]=k[h>>2];k[h>>2]=m;k[j>>2]=k[e>>2];eh(j);r=n;return}function Ge(a,b,c,d,e,f){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;f=f|0;var g=0,h=0,i=0,j=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0,v=0,w=0;q=a+8|0;k[q>>2]=e;r=k[a+24>>2]|0;p=k[a+28>>2]|0;j=e>>>0>1073741823?-1:e<<2;s=$m(j)|0;Vi(s|0,0,j|0)|0;Sg(q,s,b,c,0);j=a+32|0;g=k[j>>2]|0;a=k[g+4>>2]|0;f=k[g>>2]|0;o=a-f|0;l=o>>2;if((o|0)<=4){an(s);return 1}m=r+64|0;n=r+28|0;o=(e|0)>0;d=1;while(1){if(a-f>>2>>>0<=d>>>0){d=6;break}f=k[f+(d<<2)>>2]|0;i=$(d,e)|0;if((!((f|0)<0?1:(1<<(f&31)&k[(k[r>>2]|0)+(f>>>5<<2)>>2]|0)!=0)?(t=k[(k[(k[m>>2]|0)+12>>2]|0)+(f<<2)>>2]|0,(t|0)>=0):0)?(w=k[n>>2]|0,h=k[p>>2]|0,u=k[h+(k[w+(t<<2)>>2]<<2)>>2]|0,v=t+1|0,v=k[h+(k[w+((((v|0)%3|0|0)==0?t+-2|0:v)<<2)>>2]<<2)>>2]|0,w=k[h+(k[w+((((t>>>0)%3|0|0)==0?2:-1)+t<<2)>>2]<<2)>>2]|0,(u|0)<(d|0)&(v|0)<(d|0)&(w|0)<(d|0)):0){a=$(u,e)|0;g=$(v,e)|0;h=$(w,e)|0;if(o){f=0;do{k[s+(f<<2)>>2]=(k[c+(f+h<<2)>>2]|0)+(k[c+(f+g<<2)>>2]|0)-(k[c+(f+a<<2)>>2]|0);f=f+1|0}while((f|0)!=(e|0))}Sg(q,s,b,c+(i<<2)|0,i)}else Sg(q,c+(($(d+-1|0,e)|0)<<2)|0,b,c+(i<<2)|0,i);d=d+1|0;if((d|0)>=(l|0)){d=3;break}g=k[j>>2]|0;f=k[g>>2]|0;a=k[g+4>>2]|0}if((d|0)==3){an(s);return 1}else if((d|0)==6)gm(g);return 0}function He(a,b){a=a|0;b=b|0;var c=0,d=0,e=0;k[a>>2]=k[b>>2];c=b+4|0;k[a+4>>2]=k[c>>2];d=b+8|0;k[a+8>>2]=k[d>>2];e=b+12|0;k[a+12>>2]=k[e>>2];k[c>>2]=0;k[d>>2]=0;k[e>>2]=0;e=b+16|0;k[a+16>>2]=k[e>>2];d=b+20|0;k[a+20>>2]=k[d>>2];c=b+24|0;k[a+24>>2]=k[c>>2];k[e>>2]=0;k[d>>2]=0;k[c>>2]=0;i[a+28>>0]=i[b+28>>0]|0;c=a+32|0;d=b+32|0;k[c>>2]=0;e=a+36|0;k[e>>2]=0;k[a+40>>2]=0;k[c>>2]=k[d>>2];c=b+36|0;k[e>>2]=k[c>>2];e=b+40|0;k[a+40>>2]=k[e>>2];k[e>>2]=0;k[c>>2]=0;k[d>>2]=0;d=a+44|0;c=b+44|0;k[d>>2]=0;e=a+48|0;k[e>>2]=0;k[a+52>>2]=0;k[d>>2]=k[c>>2];d=b+48|0;k[e>>2]=k[d>>2];e=b+52|0;k[a+52>>2]=k[e>>2];k[e>>2]=0;k[d>>2]=0;k[c>>2]=0;c=a+56|0;d=b+56|0;k[c>>2]=0;e=a+60|0;k[e>>2]=0;k[a+64>>2]=0;k[c>>2]=k[d>>2];c=b+60|0;k[e>>2]=k[c>>2];e=b+64|0;k[a+64>>2]=k[e>>2];k[e>>2]=0;k[c>>2]=0;k[d>>2]=0;k[a+68>>2]=k[b+68>>2];i[a+72>>0]=i[b+72>>0]|0;d=a+76|0;c=b+76|0;k[d>>2]=0;e=a+80|0;k[e>>2]=0;k[a+84>>2]=0;k[d>>2]=k[c>>2];d=b+80|0;k[e>>2]=k[d>>2];e=b+84|0;k[a+84>>2]=k[e>>2];k[e>>2]=0;k[d>>2]=0;k[c>>2]=0;c=a+88|0;d=b+88|0;k[c>>2]=0;e=a+92|0;k[e>>2]=0;k[a+96>>2]=0;k[c>>2]=k[d>>2];c=b+92|0;k[e>>2]=k[c>>2];e=b+96|0;k[a+96>>2]=k[e>>2];k[e>>2]=0;k[c>>2]=0;k[d>>2]=0;k[a+100>>2]=k[b+100>>2];d=a+104|0;c=b+104|0;k[d>>2]=0;e=a+108|0;k[e>>2]=0;k[a+112>>2]=0;k[d>>2]=k[c>>2];d=b+108|0;k[e>>2]=k[d>>2];b=b+112|0;k[a+112>>2]=k[b>>2];k[b>>2]=0;k[d>>2]=0;k[c>>2]=0;return}function Ie(a,b,c,d,e,f){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;f=f|0;var g=0,h=0,i=0,j=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0,v=0,w=0;q=a+8|0;k[q>>2]=e;r=k[a+24>>2]|0;p=k[a+28>>2]|0;j=e>>>0>1073741823?-1:e<<2;s=$m(j)|0;Vi(s|0,0,j|0)|0;Ug(q,s,b,c,0);j=a+32|0;g=k[j>>2]|0;a=k[g+4>>2]|0;f=k[g>>2]|0;o=a-f|0;l=o>>2;if((o|0)<=4){an(s);return 1}m=r+64|0;n=r+28|0;o=(e|0)>0;d=1;while(1){if(a-f>>2>>>0<=d>>>0){d=6;break}f=k[f+(d<<2)>>2]|0;i=$(d,e)|0;if((!((f|0)<0?1:(1<<(f&31)&k[(k[r>>2]|0)+(f>>>5<<2)>>2]|0)!=0)?(t=k[(k[(k[m>>2]|0)+12>>2]|0)+(f<<2)>>2]|0,(t|0)>=0):0)?(w=k[n>>2]|0,h=k[p>>2]|0,u=k[h+(k[w+(t<<2)>>2]<<2)>>2]|0,v=t+1|0,v=k[h+(k[w+((((v|0)%3|0|0)==0?t+-2|0:v)<<2)>>2]<<2)>>2]|0,w=k[h+(k[w+((((t>>>0)%3|0|0)==0?2:-1)+t<<2)>>2]<<2)>>2]|0,(u|0)<(d|0)&(v|0)<(d|0)&(w|0)<(d|0)):0){a=$(u,e)|0;g=$(v,e)|0;h=$(w,e)|0;if(o){f=0;do{k[s+(f<<2)>>2]=(k[c+(f+h<<2)>>2]|0)+(k[c+(f+g<<2)>>2]|0)-(k[c+(f+a<<2)>>2]|0);f=f+1|0}while((f|0)!=(e|0))}Ug(q,s,b,c+(i<<2)|0,i)}else Ug(q,c+(($(d+-1|0,e)|0)<<2)|0,b,c+(i<<2)|0,i);d=d+1|0;if((d|0)>=(l|0)){d=3;break}g=k[j>>2]|0;f=k[g>>2]|0;a=k[g+4>>2]|0}if((d|0)==3){an(s);return 1}else if((d|0)==6)gm(g);return 0}function Je(a,b){a=a|0;b=b|0;var c=0,d=0,e=0,f=0,g=0,h=0,j=0,l=0,m=0,n=0;m=r;r=r+48|0;j=m+8|0;l=m;c=m+40|0;i[c>>0]=k[a+84>>2];h=b+16|0;g=h;f=k[g+4>>2]|0;if(!((f|0)>0|(f|0)==0&(k[g>>2]|0)>>>0>0)){k[l>>2]=k[b+4>>2];k[j>>2]=k[l>>2];Ke(b,j,c,c+1|0)|0}f=0;do{g=f;f=f+1|0;c=a+36+(g*12|0)+4|0;$g(k[c>>2]|0,b);if(k[c>>2]|0){yk(j);wi(j);c=(k[c>>2]|0)-f|0;if((c|0)>-1){e=a+36+(g*12|0)|0;do{d=0;while(1){n=d+c|0;Bh(j,(k[(k[e>>2]|0)+(n>>>5<<2)>>2]&1<<(n&31)|0)!=0);if((d|0)<(g|0))d=d+1|0;else break}c=c-f|0}while((c|0)>-1)}sc(j,b);Oh(j)}}while((f|0)<4);c=a+12|0;n=h;g=k[n+4>>2]|0;if((g|0)>0|(g|0)==0&(k[n>>2]|0)>>>0>0){r=m;return 1}d=b+4|0;k[l>>2]=k[d>>2];k[j>>2]=k[l>>2];Ke(b,j,c,c+4|0)|0;n=h;h=k[n+4>>2]|0;c=a+16|0;if((h|0)>0|(h|0)==0&(k[n>>2]|0)>>>0>0){r=m;return 1}k[l>>2]=k[d>>2];k[j>>2]=k[l>>2];Ke(b,j,c,c+4|0)|0;r=m;return 1}function Ke(a,b,c,d){a=a|0;b=b|0;c=c|0;d=d|0;var e=0,f=0,g=0,h=0,j=0,l=0,m=0,n=0,o=0;l=k[a>>2]|0;h=l;b=l+((k[b>>2]|0)-h)|0;j=d-c|0;if((j|0)<=0){o=b;return o|0}n=a+8|0;f=k[n>>2]|0;o=a+4|0;m=k[o>>2]|0;e=m;if((j|0)<=(f-e|0)){g=e-b|0;if((j|0)>(g|0)){h=c+g|0;if((h|0)==(d|0))e=m;else{f=h;e=m;do{i[e>>0]=i[f>>0]|0;f=f+1|0;e=(k[o>>2]|0)+1|0;k[o>>2]=e}while((f|0)!=(d|0))}if((g|0)>0){d=h;h=e}else{o=b;return o|0}}else h=m;g=h-(b+j)|0;e=b+g|0;if(e>>>0>>0){f=h;do{i[f>>0]=i[e>>0]|0;e=e+1|0;f=(k[o>>2]|0)+1|0;k[o>>2]=f}while((e|0)!=(m|0))}if(g|0)Wj(h+(0-g)|0,b|0,g|0)|0;if((d|0)==(c|0)){o=b;return o|0}else e=b;while(1){i[e>>0]=i[c>>0]|0;c=c+1|0;if((c|0)==(d|0))break;else e=e+1|0}return b|0}e=e-h+j|0;if((e|0)<0)hm(a);j=f-h|0;f=j<<1;f=j>>>0<1073741823?(f>>>0>>0?e:f):2147483647;j=b;if(!f)g=0;else g=xk(f)|0;m=g+(j-h)|0;e=m;h=g+f|0;if((c|0)==(d|0)){c=e;f=l}else{f=m;do{i[f>>0]=i[c>>0]|0;f=e+1|0;e=f;c=c+1|0}while((c|0)!=(d|0));c=e;f=k[a>>2]|0}e=j-f|0;g=m+(0-e)|0;if((e|0)>0)Ii(g|0,f|0,e|0)|0;e=(k[o>>2]|0)-j|0;if((e|0)>0){Ii(c|0,b|0,e|0)|0;c=c+e|0;b=k[a>>2]|0}else b=f;k[a>>2]=g;k[o>>2]=c;k[n>>2]=h;if(!b){o=m;return o|0}cn(b);o=m;return o|0}function Le(a,b){a=a|0;b=b|0;var c=0,d=0,e=0,f=0,g=0,h=0,j=0,l=0,m=0,n=0;m=r;r=r+48|0;j=m+8|0;l=m;c=m+40|0;i[c>>0]=k[a+108>>2];h=b+16|0;g=h;f=k[g+4>>2]|0;if(!((f|0)>0|(f|0)==0&(k[g>>2]|0)>>>0>0)){k[l>>2]=k[b+4>>2];k[j>>2]=k[l>>2];Ke(b,j,c,c+1|0)|0}f=0;do{g=f;f=f+1|0;c=a+60+(g*12|0)+4|0;$g(k[c>>2]|0,b);if(k[c>>2]|0){yk(j);wi(j);c=(k[c>>2]|0)-f|0;if((c|0)>-1){e=a+60+(g*12|0)|0;do{d=0;while(1){n=d+c|0;Bh(j,(k[(k[e>>2]|0)+(n>>>5<<2)>>2]&1<<(n&31)|0)!=0);if((d|0)<(g|0))d=d+1|0;else break}c=c-f|0}while((c|0)>-1)}sc(j,b);Oh(j)}}while((f|0)<4);c=a+12|0;n=h;g=k[n+4>>2]|0;if((g|0)>0|(g|0)==0&(k[n>>2]|0)>>>0>0){r=m;return 1}d=b+4|0;k[l>>2]=k[d>>2];k[j>>2]=k[l>>2];Ke(b,j,c,c+4|0)|0;n=h;h=k[n+4>>2]|0;c=a+16|0;if((h|0)>0|(h|0)==0&(k[n>>2]|0)>>>0>0){r=m;return 1}k[l>>2]=k[d>>2];k[j>>2]=k[l>>2];Ke(b,j,c,c+4|0)|0;r=m;return 1}function Me(a,b,c){a=a|0;b=b|0;c=c|0;var d=Pa,e=Pa,f=0,g=0,h=0;switch(i[a+24>>0]|0){case 1:{g=k[b>>2]|0;b=a+48|0;f=k[b>>2]|0;b=k[b+4>>2]|0;h=a+40|0;b=(sl(uk(k[h>>2]|0,k[h+4>>2]|0,g|0,((g|0)<0)<<31>>31|0)|0,M|0,f|0,b|0)|0)+(k[k[a>>2]>>2]|0)|0;e=da((l[b>>0]|l[b+1>>0]<<8|l[b+2>>0]<<16|l[b+3>>0]<<24)>>>0);d=da(e*da(2.32830644e-10));o[c>>2]=(i[a+32>>0]|0)==0?e:d;c=1;return c|0}case 2:{f=k[b>>2]|0;h=a+48|0;g=k[h>>2]|0;h=k[h+4>>2]|0;b=a+40|0;h=(sl(uk(k[b>>2]|0,k[b+4>>2]|0,f|0,((f|0)<0)<<31>>31|0)|0,M|0,g|0,h|0)|0)+(k[k[a>>2]>>2]|0)|0;d=da((l[h>>0]|l[h+1>>0]<<8|l[h+2>>0]<<16|l[h+3>>0]<<24)>>>0);e=da(d*da(2.32830644e-10));o[c>>2]=(i[a+32>>0]|0)==0?d:e;h=1;return h|0}case 3:{f=k[b>>2]|0;h=a+48|0;g=k[h>>2]|0;h=k[h+4>>2]|0;b=a+40|0;h=(sl(uk(k[b>>2]|0,k[b+4>>2]|0,f|0,((f|0)<0)<<31>>31|0)|0,M|0,g|0,h|0)|0)+(k[k[a>>2]>>2]|0)|0;d=da((l[h>>0]|l[h+1>>0]<<8|l[h+2>>0]<<16|l[h+3>>0]<<24)>>>0);e=da(d*da(2.32830644e-10));o[c>>2]=(i[a+32>>0]|0)==0?d:e;h=1;return h|0}case 4:{f=k[b>>2]|0;h=a+48|0;g=k[h>>2]|0;h=k[h+4>>2]|0;b=a+40|0;h=(sl(uk(k[b>>2]|0,k[b+4>>2]|0,f|0,((f|0)<0)<<31>>31|0)|0,M|0,g|0,h|0)|0)+(k[k[a>>2]>>2]|0)|0;d=da((l[h>>0]|l[h+1>>0]<<8|l[h+2>>0]<<16|l[h+3>>0]<<24)>>>0);e=da(d*da(2.32830644e-10));o[c>>2]=(i[a+32>>0]|0)==0?d:e;h=1;return h|0}default:{h=0;return h|0}}return 0}function Ne(a,b,c){a=a|0;b=b|0;c=c|0;var d=Pa,e=Pa,f=0,g=0,h=0;switch(i[a+24>>0]|0){case 1:{g=k[b>>2]|0;b=a+48|0;f=k[b>>2]|0;b=k[b+4>>2]|0;h=a+40|0;b=(sl(uk(k[h>>2]|0,k[h+4>>2]|0,g|0,((g|0)<0)<<31>>31|0)|0,M|0,f|0,b|0)|0)+(k[k[a>>2]>>2]|0)|0;e=da(l[b>>0]|l[b+1>>0]<<8|l[b+2>>0]<<16|l[b+3>>0]<<24|0);d=da(e*da(4.65661287e-10));o[c>>2]=(i[a+32>>0]|0)==0?e:d;c=1;return c|0}case 2:{f=k[b>>2]|0;h=a+48|0;g=k[h>>2]|0;h=k[h+4>>2]|0;b=a+40|0;h=(sl(uk(k[b>>2]|0,k[b+4>>2]|0,f|0,((f|0)<0)<<31>>31|0)|0,M|0,g|0,h|0)|0)+(k[k[a>>2]>>2]|0)|0;d=da(l[h>>0]|l[h+1>>0]<<8|l[h+2>>0]<<16|l[h+3>>0]<<24|0);e=da(d*da(4.65661287e-10));o[c>>2]=(i[a+32>>0]|0)==0?d:e;h=1;return h|0}case 3:{f=k[b>>2]|0;h=a+48|0;g=k[h>>2]|0;h=k[h+4>>2]|0;b=a+40|0;h=(sl(uk(k[b>>2]|0,k[b+4>>2]|0,f|0,((f|0)<0)<<31>>31|0)|0,M|0,g|0,h|0)|0)+(k[k[a>>2]>>2]|0)|0;d=da(l[h>>0]|l[h+1>>0]<<8|l[h+2>>0]<<16|l[h+3>>0]<<24|0);e=da(d*da(4.65661287e-10));o[c>>2]=(i[a+32>>0]|0)==0?d:e;h=1;return h|0}case 4:{f=k[b>>2]|0;h=a+48|0;g=k[h>>2]|0;h=k[h+4>>2]|0;b=a+40|0;h=(sl(uk(k[b>>2]|0,k[b+4>>2]|0,f|0,((f|0)<0)<<31>>31|0)|0,M|0,g|0,h|0)|0)+(k[k[a>>2]>>2]|0)|0;d=da(l[h>>0]|l[h+1>>0]<<8|l[h+2>>0]<<16|l[h+3>>0]<<24|0);e=da(d*da(4.65661287e-10));o[c>>2]=(i[a+32>>0]|0)==0?d:e;h=1;return h|0}default:{h=0;return h|0}}return 0}function Oe(a,b,c,d,e){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;var f=Pa,g=0,h=0,j=0,l=0,m=0,n=0,p=0,q=0,s=0,t=0,u=0,v=0,w=0,x=Pa,y=Pa,z=Pa,A=Pa,B=0,C=0;w=r;r=r+32|0;v=w+16|0;u=w;f=da(o[d+4>>2]);if(!(f>=da(0.0)))Ka(13544,13564,66,13621);t=(1<>2])+-1|0;am(v);Nk(v,f,t);d=k[b>>2]|0;if((d|0)==(k[c>>2]|0)){u=e;u=k[u>>2]|0;e=e+4|0;e=k[e>>2]|0;v=a;c=v;k[c>>2]=u;v=v+4|0;k[v>>2]=e;r=w;return}m=v+4|0;l=e+4|0;h=u+4|0;j=u+8|0;s=k[e>>2]|0;n=s+84|0;p=s+68|0;q=s+40|0;s=s+64|0;g=k[l>>2]|0;do{B=(k[d>>2]|0)-t|0;b=(B|0)<0;y=da((b?0-B|0:B)|0);f=da(o[m>>2]);y=da(f*y);x=da(-y);A=da(o[v>>2]);y=da(A*(b?x:y));b=(k[d+4>>2]|0)-t|0;B=(b|0)<0;x=da(f*da((B?0-b|0:b)|0));z=da(-x);x=da(A*(B?z:x));B=(k[d+8>>2]|0)-t|0;b=(B|0)<0;f=da(f*da((b?0-B|0:B)|0));z=da(-f);f=da(A*(b?z:f));b=g;g=g+1|0;k[l>>2]=g;o[u>>2]=y;o[h>>2]=x;o[j>>2]=f;if(!(i[n>>0]|0))b=k[(k[p>>2]|0)+(b<<2)>>2]|0;C=q;B=k[C>>2]|0;b=uk(b|0,((b|0)<0)<<31>>31|0,B|0,k[C+4>>2]|0)|0;Ii((k[k[s>>2]>>2]|0)+b|0,u|0,B|0)|0;d=d+12|0}while((d|0)!=(k[c>>2]|0));B=e;e=B;e=k[e>>2]|0;B=B+4|0;B=k[B>>2]|0;C=a;v=C;k[v>>2]=e;C=C+4|0;k[C>>2]=B;r=w;return}function Pe(a,b){a=a|0;b=b|0;var c=0,d=0,e=0,f=0,g=0,h=0,j=0,l=0;l=r;r=r+144|0;c=l+136|0;h=l+32|0;g=l;d=k[(k[a+4>>2]|0)+28>>2]|0;j=xk(124)|0;k[j+4>>2]=0;k[j>>2]=5748;k[j+12>>2]=5772;k[j+100>>2]=0;k[j+104>>2]=0;k[j+108>>2]=0;e=j+16|0;f=e+80|0;do{k[e>>2]=0;e=e+4|0}while((e|0)<(f|0));k[j+112>>2]=d;k[j+116>>2]=b;k[j+120>>2]=0;k[h+4>>2]=5772;k[h+92>>2]=0;k[h+96>>2]=0;k[h+100>>2]=0;e=h+8|0;f=e+80|0;do{k[e>>2]=0;e=e+4|0}while((e|0)<(f|0));a=k[a+8>>2]|0;k[g>>2]=5772;f=g+4|0;e=f+4|0;k[e>>2]=0;k[e+4>>2]=0;k[e+8>>2]=0;k[e+12>>2]=0;k[e+16>>2]=0;k[e+20>>2]=0;e=a;k[f>>2]=e;e=((k[e+4>>2]|0)-(k[a>>2]|0)|0)/12|0;i[c>>0]=0;lg(g+8|0,e,c);Ta[k[(k[g>>2]|0)+8>>2]&127](g);k[h>>2]=k[f>>2];sf(h+4|0,g)|0;k[h+36>>2]=a;k[h+40>>2]=b;k[h+44>>2]=d;k[h+48>>2]=j;Jf(j,h);k[g>>2]=5772;a=k[g+20>>2]|0;if(a|0)cn(a);a=k[g+8>>2]|0;if(!a){nh(h);r=l;return j|0}cn(a);nh(h);r=l;return j|0}function Qe(a,b,c){a=a|0;b=b|0;c=c|0;var d=Pa,e=Pa,f=0,g=0,h=0;switch(i[a+24>>0]|0){case 1:{g=k[b>>2]|0;b=a+48|0;f=k[b>>2]|0;b=k[b+4>>2]|0;h=a+40|0;b=(sl(uk(k[h>>2]|0,k[h+4>>2]|0,g|0,((g|0)<0)<<31>>31|0)|0,M|0,f|0,b|0)|0)+(k[k[a>>2]>>2]|0)|0;e=da((l[b>>0]|l[b+1>>0]<<8)<<16>>16);d=da(e/da(32767.0));o[c>>2]=(i[a+32>>0]|0)==0?e:d;c=1;return c|0}case 2:{f=k[b>>2]|0;h=a+48|0;g=k[h>>2]|0;h=k[h+4>>2]|0;b=a+40|0;h=(sl(uk(k[b>>2]|0,k[b+4>>2]|0,f|0,((f|0)<0)<<31>>31|0)|0,M|0,g|0,h|0)|0)+(k[k[a>>2]>>2]|0)|0;d=da(((l[h>>0]|l[h+1>>0]<<8|l[h+2>>0]<<16|l[h+3>>0]<<24)&65535)<<16>>16);e=da(d/da(32767.0));o[c>>2]=(i[a+32>>0]|0)==0?d:e;h=1;return h|0}case 3:{f=k[b>>2]|0;h=a+48|0;g=k[h>>2]|0;h=k[h+4>>2]|0;b=a+40|0;h=(sl(uk(k[b>>2]|0,k[b+4>>2]|0,f|0,((f|0)<0)<<31>>31|0)|0,M|0,g|0,h|0)|0)+(k[k[a>>2]>>2]|0)|0;d=da((l[h>>0]|l[h+1>>0]<<8)<<16>>16);e=da(d/da(32767.0));o[c>>2]=(i[a+32>>0]|0)==0?d:e;h=1;return h|0}case 4:{f=k[b>>2]|0;h=a+48|0;g=k[h>>2]|0;h=k[h+4>>2]|0;b=a+40|0;h=(sl(uk(k[b>>2]|0,k[b+4>>2]|0,f|0,((f|0)<0)<<31>>31|0)|0,M|0,g|0,h|0)|0)+(k[k[a>>2]>>2]|0)|0;d=da(((l[h>>0]|l[h+1>>0]<<8|l[h+2>>0]<<16|l[h+3>>0]<<24)&65535)<<16>>16);e=da(d/da(32767.0));o[c>>2]=(i[a+32>>0]|0)==0?d:e;h=1;return h|0}default:{h=0;return h|0}}return 0}function Re(a,b,c){a=a|0;b=b|0;c=c|0;var d=0,e=0,f=0.0;a:do if(b>>>0<=20)do switch(b|0){case 9:{d=(k[c>>2]|0)+(4-1)&~(4-1);b=k[d>>2]|0;k[c>>2]=d+4;k[a>>2]=b;break a}case 10:{d=(k[c>>2]|0)+(4-1)&~(4-1);b=k[d>>2]|0;k[c>>2]=d+4;d=a;k[d>>2]=b;k[d+4>>2]=((b|0)<0)<<31>>31;break a}case 11:{d=(k[c>>2]|0)+(4-1)&~(4-1);b=k[d>>2]|0;k[c>>2]=d+4;d=a;k[d>>2]=b;k[d+4>>2]=0;break a}case 12:{d=(k[c>>2]|0)+(8-1)&~(8-1);b=d;e=k[b>>2]|0;b=k[b+4>>2]|0;k[c>>2]=d+8;d=a;k[d>>2]=e;k[d+4>>2]=b;break a}case 13:{e=(k[c>>2]|0)+(4-1)&~(4-1);d=k[e>>2]|0;k[c>>2]=e+4;d=(d&65535)<<16>>16;e=a;k[e>>2]=d;k[e+4>>2]=((d|0)<0)<<31>>31;break a}case 14:{e=(k[c>>2]|0)+(4-1)&~(4-1);d=k[e>>2]|0;k[c>>2]=e+4;e=a;k[e>>2]=d&65535;k[e+4>>2]=0;break a}case 15:{e=(k[c>>2]|0)+(4-1)&~(4-1);d=k[e>>2]|0;k[c>>2]=e+4;d=(d&255)<<24>>24;e=a;k[e>>2]=d;k[e+4>>2]=((d|0)<0)<<31>>31;break a}case 16:{e=(k[c>>2]|0)+(4-1)&~(4-1);d=k[e>>2]|0;k[c>>2]=e+4;e=a;k[e>>2]=d&255;k[e+4>>2]=0;break a}case 17:{e=(k[c>>2]|0)+(8-1)&~(8-1);f=+p[e>>3];k[c>>2]=e+8;p[a>>3]=f;break a}case 18:{e=(k[c>>2]|0)+(8-1)&~(8-1);f=+p[e>>3];k[c>>2]=e+8;p[a>>3]=f;break a}default:break a}while(0);while(0);return}function Se(a,b){a=a|0;b=b|0;var c=0,d=0,e=0,f=0,g=0,h=0,j=0,l=0,m=0,n=0,o=0,p=0,q=0;p=k[a+8>>2]|0;j=a+76|0;c=k[j>>2]|0;m=k[c+64>>2]|0;q=b+84|0;i[q>>0]=0;l=b+68|0;d=b+72|0;g=k[d>>2]|0;f=k[l>>2]|0;e=g-f>>2;if(m>>>0<=e>>>0){if(m>>>0>>0?(h=f+(m<<2)|0,(g|0)!=(h|0)):0)k[d>>2]=g+(~((g+-4-h|0)>>>2)<<2)}else{Ag(l,m-e|0,5736);m=k[j>>2]|0;c=m;m=k[m+64>>2]|0}n=(k[c+84>>2]|0)-(k[c+80>>2]|0)|0;o=(n|0)/12|0;if((n|0)<=0){q=1;return q|0}n=a+80|0;l=b+68|0;a=c+80|0;j=c+84|0;h=0;while(1){c=k[a>>2]|0;if((h|0)>=(((k[j>>2]|0)-c|0)/12|0|0)){d=9;break}e=h*3|0;f=k[(k[n>>2]|0)+12>>2]|0;d=k[f+(k[(k[p>>2]|0)+(h*12|0)+(((e>>>0)%3|0)<<2)>>2]<<2)>>2]|0;if(d>>>0>=m>>>0){c=0;d=13;break}if(i[q>>0]|0){d=12;break}g=k[l>>2]|0;k[g+(k[c+(h*12|0)>>2]<<2)>>2]=d;d=e+1|0;d=k[f+(k[(k[p>>2]|0)+(((d>>>0)/3|0)*12|0)+(((d>>>0)%3|0)<<2)>>2]<<2)>>2]|0;if(d>>>0>=m>>>0){c=0;d=13;break}k[g+(k[c+(h*12|0)+4>>2]<<2)>>2]=d;d=e+2|0;d=k[f+(k[(k[p>>2]|0)+(((d>>>0)/3|0)*12|0)+(((d>>>0)%3|0)<<2)>>2]<<2)>>2]|0;if(d>>>0>=m>>>0){c=0;d=13;break}k[g+(k[c+(h*12|0)+8>>2]<<2)>>2]=d;h=h+1|0;if((h|0)>=(o|0)){c=1;d=13;break}}if((d|0)==9)Ka(14216,14197,64,14211);else if((d|0)==12)Ka(14270,14289,80,14321);else if((d|0)==13)return c|0;return 0}function Te(a,b,c){a=a|0;b=b|0;c=c|0;var d=Pa,e=Pa,f=0,g=0,h=0;switch(i[a+24>>0]|0){case 1:{g=k[b>>2]|0;b=a+48|0;f=k[b>>2]|0;b=k[b+4>>2]|0;h=a+40|0;b=(sl(uk(k[h>>2]|0,k[h+4>>2]|0,g|0,((g|0)<0)<<31>>31|0)|0,M|0,f|0,b|0)|0)+(k[k[a>>2]>>2]|0)|0;e=da((l[b>>0]|l[b+1>>0]<<8)&65535);d=da(e/da(65535.0));o[c>>2]=(i[a+32>>0]|0)==0?e:d;c=1;return c|0}case 2:{f=k[b>>2]|0;h=a+48|0;g=k[h>>2]|0;h=k[h+4>>2]|0;b=a+40|0;h=(sl(uk(k[b>>2]|0,k[b+4>>2]|0,f|0,((f|0)<0)<<31>>31|0)|0,M|0,g|0,h|0)|0)+(k[k[a>>2]>>2]|0)|0;d=da((l[h>>0]|l[h+1>>0]<<8|l[h+2>>0]<<16|l[h+3>>0]<<24)&65535);e=da(d/da(65535.0));o[c>>2]=(i[a+32>>0]|0)==0?d:e;h=1;return h|0}case 3:{f=k[b>>2]|0;h=a+48|0;g=k[h>>2]|0;h=k[h+4>>2]|0;b=a+40|0;h=(sl(uk(k[b>>2]|0,k[b+4>>2]|0,f|0,((f|0)<0)<<31>>31|0)|0,M|0,g|0,h|0)|0)+(k[k[a>>2]>>2]|0)|0;d=da((l[h>>0]|l[h+1>>0]<<8)&65535);e=da(d/da(65535.0));o[c>>2]=(i[a+32>>0]|0)==0?d:e;h=1;return h|0}case 4:{f=k[b>>2]|0;h=a+48|0;g=k[h>>2]|0;h=k[h+4>>2]|0;b=a+40|0;h=(sl(uk(k[b>>2]|0,k[b+4>>2]|0,f|0,((f|0)<0)<<31>>31|0)|0,M|0,g|0,h|0)|0)+(k[k[a>>2]>>2]|0)|0;d=da((l[h>>0]|l[h+1>>0]<<8|l[h+2>>0]<<16|l[h+3>>0]<<24)&65535);e=da(d/da(65535.0));o[c>>2]=(i[a+32>>0]|0)==0?d:e;h=1;return h|0}default:{h=0;return h|0}}return 0}function Ue(a,b){a=a|0;b=b|0;var c=0,d=0,e=0,f=0,g=0,h=0,i=0,j=0,l=0,m=0,n=0,o=0,p=0,q=0,s=0,t=0;t=r;r=r+16|0;n=t+4|0;o=t;c=k[b>>2]|0;k[n>>2]=c;m=a+8|0;b=c+1|0;do if((c|0)>=0){k[n+4>>2]=((b|0)%3|0|0)==0?c+-2|0:b;if(!((c>>>0)%3|0)){b=c+2|0;break}else{b=c+-1|0;break}}else{k[n+4>>2]=c;b=c}while(0);k[n+8>>2]=b;j=a+228|0;l=a+232|0;i=a+320|0;h=0;while(1){if((c|0)>=0?(k[(k[(k[m>>2]|0)+12>>2]|0)+(c<<2)>>2]|0)>=0:0){if((k[l>>2]|0)!=(k[j>>2]|0)){b=0;do{if(Ti((k[i>>2]|0)+(b<<4)|0)|0){a=k[j>>2]|0;k[o>>2]=c;d=a+(b*116|0)+108|0;e=k[d>>2]|0;if(e>>>0<(k[a+(b*116|0)+112>>2]|0)>>>0){k[e>>2]=c;k[d>>2]=e+4}else xh(a+(b*116|0)+104|0,o)}b=b+1|0}while(b>>>0<(((k[l>>2]|0)-(k[j>>2]|0)|0)/116|0)>>>0)}}else s=11;if((s|0)==11?(s=0,p=k[l>>2]|0,q=k[j>>2]|0,(p|0)!=(q|0)):0){g=0;b=q;a=p;do{d=b;k[o>>2]=c;e=d+(g*116|0)+108|0;f=k[e>>2]|0;if(f>>>0<(k[d+(g*116|0)+112>>2]|0)>>>0){k[f>>2]=c;k[e>>2]=f+4}else{xh(d+(g*116|0)+104|0,o);b=k[j>>2]|0;a=k[l>>2]|0}g=g+1|0}while(g>>>0<((a-b|0)/116|0)>>>0)}b=h+1|0;if((b|0)==3)break;h=b;c=k[n+(b<<2)>>2]|0}r=t;return 1}function Ve(a,b){a=a|0;b=b|0;var c=0,d=0,e=0,f=0,g=0,h=0,j=0,l=0,m=0,n=0,o=0,p=0,q=0;p=k[a+8>>2]|0;j=a+112|0;c=k[j>>2]|0;m=k[c+64>>2]|0;q=b+84|0;i[q>>0]=0;l=b+68|0;d=b+72|0;g=k[d>>2]|0;f=k[l>>2]|0;e=g-f>>2;if(m>>>0<=e>>>0){if(m>>>0>>0?(h=f+(m<<2)|0,(g|0)!=(h|0)):0)k[d>>2]=g+(~((g+-4-h|0)>>>2)<<2)}else{Ag(l,m-e|0,5736);m=k[j>>2]|0;c=m;m=k[m+64>>2]|0}n=(k[c+84>>2]|0)-(k[c+80>>2]|0)|0;o=(n|0)/12|0;if((n|0)<=0){q=1;return q|0}n=a+116|0;l=b+68|0;a=c+80|0;j=c+84|0;h=0;while(1){c=k[a>>2]|0;if((h|0)>=(((k[j>>2]|0)-c|0)/12|0|0)){d=9;break}e=h*3|0;f=k[(k[n>>2]|0)+12>>2]|0;d=k[f+(k[(k[p>>2]|0)+(h*12|0)+(((e>>>0)%3|0)<<2)>>2]<<2)>>2]|0;if(d>>>0>=m>>>0){c=0;d=13;break}if(i[q>>0]|0){d=12;break}g=k[l>>2]|0;k[g+(k[c+(h*12|0)>>2]<<2)>>2]=d;d=e+1|0;d=k[f+(k[(k[p>>2]|0)+(((d>>>0)/3|0)*12|0)+(((d>>>0)%3|0)<<2)>>2]<<2)>>2]|0;if(d>>>0>=m>>>0){c=0;d=13;break}k[g+(k[c+(h*12|0)+4>>2]<<2)>>2]=d;d=e+2|0;d=k[f+(k[(k[p>>2]|0)+(((d>>>0)/3|0)*12|0)+(((d>>>0)%3|0)<<2)>>2]<<2)>>2]|0;if(d>>>0>=m>>>0){c=0;d=13;break}k[g+(k[c+(h*12|0)+8>>2]<<2)>>2]=d;h=h+1|0;if((h|0)>=(o|0)){c=1;d=13;break}}if((d|0)==9)Ka(14216,14197,64,14211);else if((d|0)==12)Ka(14270,14289,80,14321);else if((d|0)==13)return c|0;return 0}function We(a,b){a=a|0;b=b|0;var c=0,d=0,e=0,f=0,g=0,h=0,j=0,l=0,m=0,n=0,o=0,p=0;if(!(jd(a,b)|0)){n=0;return n|0}l=a+24|0;m=a+4|0;n=a+8|0;f=(k[n>>2]|0)-(k[m>>2]|0)>>2;g=a+28|0;c=k[g>>2]|0;e=k[l>>2]|0;d=c-e>>2;if(f>>>0<=d>>>0){if(f>>>0>>0?(h=e+(f<<2)|0,(c|0)!=(h|0)):0)do{j=c+-4|0;k[g>>2]=j;c=k[j>>2]|0;k[j>>2]=0;if(c|0)Ta[k[(k[c>>2]|0)+4>>2]&127](c);c=k[g>>2]|0}while((c|0)!=(h|0))}else Mf(l,f-d|0);f=b+8|0;if(((k[n>>2]|0)-(k[m>>2]|0)|0)<=0){n=1;return n|0}g=b+16|0;h=a+16|0;j=a+4|0;e=0;while(1){o=f;p=k[o+4>>2]|0;d=g;c=k[d>>2]|0;d=k[d+4>>2]|0;if(!((p|0)>(d|0)|((p|0)==(d|0)?(k[o>>2]|0)>>>0>c>>>0:0))){c=0;d=17;break}o=i[(k[b>>2]|0)+c>>0]|0;c=sl(c|0,d|0,1,0)|0;p=g;k[p>>2]=c;k[p+4>>2]=M;p=(k[l>>2]|0)+(e<<2)|0;o=Za[k[(k[a>>2]|0)+20>>2]&127](a,o)|0;c=k[p>>2]|0;k[p>>2]=o;if(c|0)Ta[k[(k[c>>2]|0)+4>>2]&127](c);c=k[(k[l>>2]|0)+(e<<2)>>2]|0;if(!c){c=0;d=17;break}if(!(Ra[k[(k[c>>2]|0)+8>>2]&31](c,k[h>>2]|0,k[(k[j>>2]|0)+(e<<2)>>2]|0)|0)){c=0;d=17;break}e=e+1|0;if((e|0)>=((k[n>>2]|0)-(k[m>>2]|0)>>2|0)){c=1;d=17;break}}if((d|0)==17)return c|0;return 0}function Xe(a,b,c){a=a|0;b=b|0;c=c|0;var d=Pa,e=Pa,f=0,g=0,h=0;switch(i[a+24>>0]|0){case 1:{g=k[b>>2]|0;b=a+48|0;f=k[b>>2]|0;b=k[b+4>>2]|0;h=a+40|0;b=sl(uk(k[h>>2]|0,k[h+4>>2]|0,g|0,((g|0)<0)<<31>>31|0)|0,M|0,f|0,b|0)|0;e=da(i[(k[k[a>>2]>>2]|0)+b>>0]|0);d=da(e/da(127.0));o[c>>2]=(i[a+32>>0]|0)==0?e:d;c=1;return c|0}case 2:{f=k[b>>2]|0;h=a+48|0;g=k[h>>2]|0;h=k[h+4>>2]|0;b=a+40|0;h=(sl(uk(k[b>>2]|0,k[b+4>>2]|0,f|0,((f|0)<0)<<31>>31|0)|0,M|0,g|0,h|0)|0)+(k[k[a>>2]>>2]|0)|0;d=da(((l[h>>0]|l[h+1>>0]<<8)&255)<<24>>24);e=da(d/da(127.0));o[c>>2]=(i[a+32>>0]|0)==0?d:e;h=1;return h|0}case 3:{f=k[b>>2]|0;h=a+48|0;g=k[h>>2]|0;h=k[h+4>>2]|0;b=a+40|0;h=sl(uk(k[b>>2]|0,k[b+4>>2]|0,f|0,((f|0)<0)<<31>>31|0)|0,M|0,g|0,h|0)|0;d=da(i[(k[k[a>>2]>>2]|0)+h>>0]|0);e=da(d/da(127.0));o[c>>2]=(i[a+32>>0]|0)==0?d:e;h=1;return h|0}case 4:{f=k[b>>2]|0;h=a+48|0;g=k[h>>2]|0;h=k[h+4>>2]|0;b=a+40|0;h=(sl(uk(k[b>>2]|0,k[b+4>>2]|0,f|0,((f|0)<0)<<31>>31|0)|0,M|0,g|0,h|0)|0)+(k[k[a>>2]>>2]|0)|0;d=da(((l[h>>0]|l[h+1>>0]<<8|l[h+2>>0]<<16|l[h+3>>0]<<24)&255)<<24>>24);e=da(d/da(127.0));o[c>>2]=(i[a+32>>0]|0)==0?d:e;h=1;return h|0}default:{h=0;return h|0}}return 0}function Ye(a,b){a=a|0;b=b|0;var c=0,d=0,e=0,f=0,g=0,h=0,j=0;d=b+8|0;h=d;f=k[h+4>>2]|0;j=b+16|0;g=j;c=k[g>>2]|0;g=k[g+4>>2]|0;if(!((f|0)>(g|0)|((f|0)==(g|0)?(k[h>>2]|0)>>>0>c>>>0:0))){j=0;return j|0}i[a+12>>0]=i[(k[b>>2]|0)+c>>0]|0;g=j;h=k[g>>2]|0;g=k[g+4>>2]|0;e=sl(h|0,g|0,1,0)|0;f=j;k[f>>2]=e;k[f+4>>2]=M;f=d;d=k[f>>2]|0;f=k[f+4>>2]|0;g=sl(h|0,g|0,5,0)|0;h=M;if((f|0)<(h|0)|(f|0)==(h|0)&d>>>0>>0){j=0;return j|0}c=k[b>>2]|0;e=c+e|0;e=l[e>>0]|l[e+1>>0]<<8|l[e+2>>0]<<16|l[e+3>>0]<<24;b=j;k[b>>2]=g;k[b+4>>2]=h;f=al(d|0,f|0,g|0,h|0)|0;b=M;if(0>(b|0)|0==(b|0)&e>>>0>f>>>0){j=0;return j|0}c=c+g|0;if((e|0)<1){j=0;return j|0}k[a>>2]=c;d=e+-1|0;b=c+d|0;a:do switch((l[b>>0]|0)>>>6&3){case 0:{k[a+4>>2]=d;d=(l[b>>0]|0)&63;c=a+8|0;k[c>>2]=d;break}case 1:if((e|0)<2){j=0;return j|0}else{k[a+4>>2]=e+-2;d=c+e+-2|0;d=(l[d+1>>0]|0)<<8&16128|(l[d>>0]|0);c=a+8|0;k[c>>2]=d;break a}case 2:if((e|0)<3){j=0;return j|0}else{k[a+4>>2]=e+-3;d=c+e+-3|0;d=(l[d+1>>0]|0)<<8|(l[d>>0]|0)|(l[d+2>>0]|0)<<16&4128768;c=a+8|0;k[c>>2]=d;break a}default:{j=0;return j|0}}while(0);a=d+4096|0;k[c>>2]=a;if(a>>>0>1048575){j=0;return j|0}h=sl(g|0,h|0,e|0,0)|0;k[j>>2]=h;k[j+4>>2]=M;j=1;return j|0}function Ze(a,b,c,d,e){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;var f=0,g=0,h=0,i=0,j=0,l=0,m=0,n=0,o=0,p=0,q=0,s=0;s=r;r=r+48|0;n=s+40|0;o=s+32|0;p=s+24|0;q=s+16|0;j=s+8|0;f=s;l=k[c>>2]|0;m=a+8|0;g=k[m>>2]<<1;if((l|0)>(g|0))Ka(9128,8780,90,9163);h=k[c+4>>2]|0;if((h|0)>(g|0))Ka(9181,8780,91,9163);i=k[b>>2]|0;if((i|0)>(g|0))Ka(9216,8780,92,9163);b=k[b+4>>2]|0;if((b|0)>(g|0))Ka(9251,8780,93,9163);if((l|0)<=-1)Ka(9026,8780,94,9163);if((h|0)<=-1)Ka(9048,8780,95,9163);if((i|0)<=-1)Ka(9286,8780,96,9163);if((b|0)<=-1)Ka(9308,8780,97,9163);k[j>>2]=i;k[j+4>>2]=b;k[f>>2]=l;k[f+4>>2]=h;Uc(q,a,j,f);g=k[q>>2]|0;c=q+4|0;j=k[c>>2]|0;k[o>>2]=l;k[o+4>>2]=h;k[p>>2]=g;k[p+4>>2]=j;pd(n,a,o,p);m=k[m>>2]|0;l=i-m|0;j=b-m|0;p=(k[n>>2]|0)-m|0;n=(k[n+4>>2]|0)-m|0;a=0-l|0;j=((j|0)<0?(((l|0)>-1?l:a)|0)==(m|0):0)?0-j|0:j;o=0-p|0;n=((n|0)<0?(((p|0)>-1?p:o)|0)==(m|0):0)?0-n|0:n;if((j|0)==(n|0)?((((l|0)<0?(((j|0)>-1?j:0-j|0)|0)==(m|0):0)?a:l)|0)==((((p|0)<0?(((n|0)>-1?n:0-n|0)|0)==(m|0):0)?o:p)|0):0){k[d+(e<<2)>>2]=k[q>>2];k[d+(e+1<<2)>>2]=k[c>>2];r=s;return}else Ka(9330,8780,102,9163)}function _e(a,b,c){a=a|0;b=b|0;c=c|0;var d=Pa,e=Pa,f=0,g=0,h=0;switch(i[a+24>>0]|0){case 1:{g=k[b>>2]|0;b=a+48|0;f=k[b>>2]|0;b=k[b+4>>2]|0;h=a+40|0;b=sl(uk(k[h>>2]|0,k[h+4>>2]|0,g|0,((g|0)<0)<<31>>31|0)|0,M|0,f|0,b|0)|0;e=da(l[(k[k[a>>2]>>2]|0)+b>>0]|0);d=da(e/da(255.0));o[c>>2]=(i[a+32>>0]|0)==0?e:d;c=1;return c|0}case 2:{f=k[b>>2]|0;h=a+48|0;g=k[h>>2]|0;h=k[h+4>>2]|0;b=a+40|0;h=(sl(uk(k[b>>2]|0,k[b+4>>2]|0,f|0,((f|0)<0)<<31>>31|0)|0,M|0,g|0,h|0)|0)+(k[k[a>>2]>>2]|0)|0;d=da((l[h>>0]|l[h+1>>0]<<8)&255);e=da(d/da(255.0));o[c>>2]=(i[a+32>>0]|0)==0?d:e;h=1;return h|0}case 3:{f=k[b>>2]|0;h=a+48|0;g=k[h>>2]|0;h=k[h+4>>2]|0;b=a+40|0;h=sl(uk(k[b>>2]|0,k[b+4>>2]|0,f|0,((f|0)<0)<<31>>31|0)|0,M|0,g|0,h|0)|0;d=da(l[(k[k[a>>2]>>2]|0)+h>>0]|0);e=da(d/da(255.0));o[c>>2]=(i[a+32>>0]|0)==0?d:e;h=1;return h|0}case 4:{f=k[b>>2]|0;h=a+48|0;g=k[h>>2]|0;h=k[h+4>>2]|0;b=a+40|0;h=(sl(uk(k[b>>2]|0,k[b+4>>2]|0,f|0,((f|0)<0)<<31>>31|0)|0,M|0,g|0,h|0)|0)+(k[k[a>>2]>>2]|0)|0;d=da((l[h>>0]|l[h+1>>0]<<8|l[h+2>>0]<<16|l[h+3>>0]<<24)&255);e=da(d/da(255.0));o[c>>2]=(i[a+32>>0]|0)==0?d:e;h=1;return h|0}default:{h=0;return h|0}}return 0}function $e(a,b){a=a|0;b=b|0;var c=0,d=0,e=0,f=0,g=0,h=0,j=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0;n=k[a+8>>2]|0;j=a+76|0;c=k[j>>2]|0;m=k[c+64>>2]|0;r=b+84|0;i[r>>0]=0;l=b+68|0;d=b+72|0;g=k[d>>2]|0;f=k[l>>2]|0;e=g-f>>2;if(m>>>0<=e>>>0){if(m>>>0>>0?(h=f+(m<<2)|0,(g|0)!=(h|0)):0)k[d>>2]=g+(~((g+-4-h|0)>>>2)<<2)}else{Ag(l,m-e|0,5736);m=k[j>>2]|0;c=m;m=k[m+64>>2]|0}p=(k[c+84>>2]|0)-(k[c+80>>2]|0)|0;q=(p|0)/12|0;if((p|0)<=0){r=1;return r|0}p=n+28|0;o=a+80|0;n=b+68|0;a=c+80|0;l=c+84|0;j=0;while(1){c=k[a>>2]|0;if((j|0)>=(((k[l>>2]|0)-c|0)/12|0|0)){d=9;break}e=j*3|0;f=k[p>>2]|0;g=k[(k[o>>2]|0)+12>>2]|0;d=k[g+(k[f+(e<<2)>>2]<<2)>>2]|0;if(d>>>0>=m>>>0){c=0;d=14;break}if(i[r>>0]|0){d=12;break}h=k[n>>2]|0;k[h+(k[c+(j*12|0)>>2]<<2)>>2]=d;d=k[g+(k[f+(e+1<<2)>>2]<<2)>>2]|0;if(d>>>0>=m>>>0){c=0;d=14;break}k[h+(k[c+(j*12|0)+4>>2]<<2)>>2]=d;d=k[g+(k[f+(e+2<<2)>>2]<<2)>>2]|0;if(d>>>0>=m>>>0){c=0;d=14;break}k[h+(k[c+(j*12|0)+8>>2]<<2)>>2]=d;j=j+1|0;if((j|0)>=(q|0)){c=1;d=14;break}}if((d|0)==9)Ka(14216,14197,64,14211);else if((d|0)==12)Ka(14270,14289,80,14321);else if((d|0)==14)return c|0;return 0}function af(a,b){a=a|0;b=b|0;var c=0,d=0,e=0,f=0,g=0,h=0,i=0,j=0,l=0,m=0,n=0,o=0,p=0;o=r;r=r+32|0;m=o+12|0;l=o;d=b*3|0;k[m>>2]=0;n=m+4|0;k[n>>2]=0;k[m+8>>2]=0;do if(b)if(d>>>0>1073741823)hm(m);else{i=b*12|0;c=xk(i)|0;k[m>>2]=c;j=c+(d<<2)|0;k[m+8>>2]=j;Vi(c|0,0,i|0)|0;k[n>>2]=j;break}else c=0;while(0);if(zh(d,1,k[a+20>>2]|0,c)|0)if((b|0)>0){e=a+28|0;f=l+4|0;g=l+8|0;a=0;c=0;d=0;while(1){k[l>>2]=0;k[l+4>>2]=0;k[l+8>>2]=0;j=k[m>>2]|0;p=k[j+(c<<2)>>2]|0;h=p>>>1;h=((p&1|0)==0?h:0-h|0)+d|0;k[l>>2]=h;p=k[j+(c+1<<2)>>2]|0;i=p>>>1;h=((p&1|0)==0?i:0-i|0)+h|0;k[f>>2]=h;j=k[j+(c+2<<2)>>2]|0;i=j>>>1;d=((j&1|0)==0?i:0-i|0)+h|0;k[g>>2]=d;h=k[e>>2]|0;i=h+84|0;j=k[i>>2]|0;if((j|0)==(k[h+88>>2]|0))dh(h+80|0,l);else{k[j>>2]=k[l>>2];k[j+4>>2]=k[l+4>>2];k[j+8>>2]=k[l+8>>2];k[i>>2]=(k[i>>2]|0)+12}a=a+1|0;if((a|0)>=(b|0)){d=1;break}else c=c+3|0}}else d=1;else d=0;a=k[m>>2]|0;if(!a){r=o;return d|0}c=k[n>>2]|0;if((c|0)!=(a|0))k[n>>2]=c+(~((c+-4-a|0)>>>2)<<2);cn(a);r=o;return d|0}function bf(a,b){a=a|0;b=b|0;var c=0,d=0,e=0,f=0,g=0,h=0,i=0,j=0,l=0,m=0,n=0,o=0;n=r;r=r+32|0;j=n+24|0;i=n+16|0;l=n+8|0;m=n;k[a>>2]=5724;k[a+4>>2]=k[b+4>>2];f=a+8|0;g=b+8|0;k[f>>2]=0;h=a+12|0;k[h>>2]=0;c=a+16|0;k[c>>2]=0;d=b+12|0;e=k[d>>2]|0;do if(e|0)if((e|0)<0)hm(f);else{e=((e+-1|0)>>>5)+1|0;o=xk(e<<2)|0;k[f>>2]=o;k[h>>2]=0;k[c>>2]=e;g=k[g>>2]|0;k[l>>2]=g;k[l+4>>2]=0;h=k[d>>2]|0;k[m>>2]=g+(h>>>5<<2);k[m+4>>2]=h&31;k[i>>2]=k[l>>2];k[i+4>>2]=k[l+4>>2];k[j>>2]=k[m>>2];k[j+4>>2]=k[m+4>>2];uf(f,i,j);break}while(0);f=a+20|0;k[f>>2]=0;g=a+24|0;k[g>>2]=0;c=a+28|0;k[c>>2]=0;d=b+24|0;e=k[d>>2]|0;if(!e){r=n;return}if((e|0)<0)hm(f);o=((e+-1|0)>>>5)+1|0;a=xk(o<<2)|0;k[f>>2]=a;k[g>>2]=0;k[c>>2]=o;b=k[b+20>>2]|0;k[l>>2]=b;k[l+4>>2]=0;o=k[d>>2]|0;k[m>>2]=b+(o>>>5<<2);k[m+4>>2]=o&31;k[i>>2]=k[l>>2];k[i+4>>2]=k[l+4>>2];k[j>>2]=k[m>>2];k[j+4>>2]=k[m+4>>2];uf(f,i,j);r=n;return}function cf(a,b,c,d,e){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;var f=0,g=0,h=0,i=0,j=0,l=0,m=0,n=0,o=0,p=0,q=0,s=0;s=r;r=r+48|0;o=s+40|0;p=s+32|0;q=s+24|0;i=s+16|0;j=s+8|0;l=s;m=k[c>>2]|0;n=a+8|0;f=k[n>>2]<<1;if((m|0)>(f|0))Ka(9128,11377,85,9163);g=k[c+4>>2]|0;if((g|0)>(f|0))Ka(9181,11377,86,9163);h=k[b>>2]|0;if((h|0)>(f|0))Ka(9216,11377,87,9163);b=k[b+4>>2]|0;if((b|0)>(f|0))Ka(9251,11377,88,9163);if((m|0)<=-1)Ka(9026,11377,89,9163);if((g|0)<=-1)Ka(9048,11377,90,9163);if((h|0)<=-1)Ka(9286,11377,91,9163);if((b|0)<=-1)Ka(9308,11377,92,9163);k[i>>2]=h;k[i+4>>2]=b;k[j>>2]=m;k[j+4>>2]=g;Ee(q,a,i,j);k[l>>2]=k[q>>2];c=q+4|0;k[l+4>>2]=k[c>>2];k[p>>2]=m;k[p+4>>2]=g;Be(o,a,p,l);n=k[n>>2]|0;l=h-n|0;j=b-n|0;p=(k[o>>2]|0)-n|0;m=(k[o+4>>2]|0)-n|0;a=0-l|0;j=((j|0)<0?(((l|0)>-1?l:a)|0)==(n|0):0)?0-j|0:j;o=0-p|0;m=((m|0)<0?(((p|0)>-1?p:o)|0)==(n|0):0)?0-m|0:m;if((j|0)==(m|0)?((((l|0)<0?(((j|0)>-1?j:0-j|0)|0)==(n|0):0)?a:l)|0)==((((p|0)<0?(((m|0)>-1?m:0-m|0)|0)==(n|0):0)?o:p)|0):0){k[d+(e<<2)>>2]=k[q>>2];k[d+(e+1<<2)>>2]=k[c>>2];r=s;return}else Ka(9330,11377,98,9163)}function df(a,b){a=a|0;b=b|0;var c=0,d=0,e=0,f=0,g=0,h=0,i=0,j=0,l=0,m=0,n=0,o=0;n=r;r=r+32|0;j=n+24|0;i=n+16|0;l=n+8|0;m=n;k[a>>2]=5772;k[a+4>>2]=k[b+4>>2];f=a+8|0;g=b+8|0;k[f>>2]=0;h=a+12|0;k[h>>2]=0;c=a+16|0;k[c>>2]=0;d=b+12|0;e=k[d>>2]|0;do if(e|0)if((e|0)<0)hm(f);else{e=((e+-1|0)>>>5)+1|0;o=xk(e<<2)|0;k[f>>2]=o;k[h>>2]=0;k[c>>2]=e;g=k[g>>2]|0;k[l>>2]=g;k[l+4>>2]=0;h=k[d>>2]|0;k[m>>2]=g+(h>>>5<<2);k[m+4>>2]=h&31;k[i>>2]=k[l>>2];k[i+4>>2]=k[l+4>>2];k[j>>2]=k[m>>2];k[j+4>>2]=k[m+4>>2];uf(f,i,j);break}while(0);f=a+20|0;k[f>>2]=0;g=a+24|0;k[g>>2]=0;c=a+28|0;k[c>>2]=0;d=b+24|0;e=k[d>>2]|0;if(!e){r=n;return}if((e|0)<0)hm(f);o=((e+-1|0)>>>5)+1|0;a=xk(o<<2)|0;k[f>>2]=a;k[g>>2]=0;k[c>>2]=o;b=k[b+20>>2]|0;k[l>>2]=b;k[l+4>>2]=0;o=k[d>>2]|0;k[m>>2]=b+(o>>>5<<2);k[m+4>>2]=o&31;k[i>>2]=k[l>>2];k[i+4>>2]=k[l+4>>2];k[j>>2]=k[m>>2];k[j+4>>2]=k[m+4>>2];uf(f,i,j);r=n;return}function ef(a,b,c){a=a|0;b=b|0;c=c|0;var d=0,e=0,f=0,g=0,h=0,i=0,j=0,l=0,m=0;h=a+8|0;d=k[h>>2]|0;g=k[a>>2]|0;m=g;if(((d-g|0)/12|0)>>>0>>0){f=g;if(g){d=a+4|0;e=k[d>>2]|0;if((e|0)!=(m|0))k[d>>2]=e+(~(((e+-12-g|0)>>>0)/12|0)*12|0);cn(f);k[h>>2]=0;k[d>>2]=0;k[a>>2]=0;d=0}if(b>>>0>357913941)hm(a);m=(d-0|0)/12|0;d=m<<1;d=m>>>0<178956970?(d>>>0>>0?b:d):357913941;if(d>>>0>357913941)hm(a);m=xk(d*12|0)|0;e=a+4|0;k[e>>2]=m;k[a>>2]=m;k[h>>2]=m+(d*12|0);d=m;do{k[d>>2]=k[c>>2];k[d+4>>2]=k[c+4>>2];k[d+8>>2]=k[c+8>>2];d=(k[e>>2]|0)+12|0;k[e>>2]=d;b=b+-1|0}while((b|0)!=0);return}else{l=a+4|0;j=k[l>>2]|0;f=(j-g|0)/12|0;g=f>>>0>>0;d=g?f:b;i=j;if(d|0){a=c+4|0;h=c+8|0;e=m;while(1){k[e>>2]=k[c>>2];k[e+4>>2]=k[a>>2];k[e+8>>2]=k[h>>2];d=d+-1|0;if(!d)break;else e=e+12|0}}if(g){d=b-f|0;b=j;do{k[b>>2]=k[c>>2];k[b+4>>2]=k[c+4>>2];k[b+8>>2]=k[c+8>>2];b=(k[l>>2]|0)+12|0;k[l>>2]=b;d=d+-1|0}while((d|0)!=0);return}b=m+(b*12|0)|0;if((i|0)==(b|0))return;k[l>>2]=i+(~(((i+-12-b|0)>>>0)/12|0)*12|0);return}}function ff(a,b,c,d,e){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;var f=0,g=0,h=0,i=0,j=0,l=0;l=r;r=r+16|0;j=l;g=k[a+4>>2]|0;if((c|0)<=-1)Ka(13387,13403,54,13431);f=k[g+4>>2]|0;if(((k[g+8>>2]|0)-f>>2|0)<=(c|0))Ka(13441,13403,55,13431);g=k[f+(c<<2)>>2]|0;if(!((b+-1|0)>>>0<4&(Va[k[(k[a>>2]|0)+8>>2]&127](a)|0)==1)){j=0;r=l;return j|0}h=Va[k[(k[a>>2]|0)+36>>2]&127](a)|0;i=Za[k[(k[a>>2]|0)+44>>2]&127](a,c)|0;do if(!((h|0)==0|(i|0)==0)){f=Za[k[(k[a>>2]|0)+40>>2]&127](a,c)|0;if(!f){k[j>>2]=k[a+28>>2];k[j+4>>2]=h;k[j+12>>2]=i;k[j+8>>2]=i+12;f=Id(b,g,d,j,e)|0;if(!f)f=0;else break;j=f;r=l;return j|0}else{k[j>>2]=k[a+28>>2];k[j+4>>2]=f;k[j+12>>2]=i;k[j+8>>2]=i+12;f=Hd(b,g,d,j,e)|0;if(!f)f=0;else break;j=f;r=l;return j|0}}else f=0;while(0);j=f;r=l;return j|0}function gf(a){a=a|0;var b=0,c=0,d=0,e=0,f=0,g=0,h=0,j=0,m=0,n=0;c=i[(k[a+8>>2]|0)+24>>0]|0;g=a+36|0;f=$m(c>>>0>1073741823?-1:c<<2)|0;b=k[g>>2]|0;k[g>>2]=f;if(b|0)an(b);e=a+4|0;f=k[(k[e>>2]|0)+20>>2]|0;b=c<<2;n=f+8|0;j=k[n>>2]|0;n=k[n+4>>2]|0;c=f+16|0;h=c;d=k[h>>2]|0;h=sl(d|0,k[h+4>>2]|0,b|0,0)|0;m=M;if((n|0)<(m|0)|(n|0)==(m|0)&j>>>0>>0){n=0;return n|0}Ii(k[g>>2]|0,(k[f>>2]|0)+d|0,b|0)|0;h=c;h=sl(k[h>>2]|0,k[h+4>>2]|0,b|0,0)|0;b=c;k[b>>2]=h;k[b+4>>2]=M;b=(k[e>>2]|0)+20|0;c=k[b>>2]|0;h=c+8|0;m=k[h>>2]|0;h=k[h+4>>2]|0;d=c+16|0;n=d;e=k[n>>2]|0;n=sl(e|0,k[n+4>>2]|0,4,0)|0;j=M;if((h|0)<(j|0)|(h|0)==(j|0)&m>>>0>>0){n=0;return n|0}m=a+40|0;n=(k[c>>2]|0)+e|0;n=l[n>>0]|l[n+1>>0]<<8|l[n+2>>0]<<16|l[n+3>>0]<<24;i[m>>0]=n;i[m+1>>0]=n>>8;i[m+2>>0]=n>>16;i[m+3>>0]=n>>24;m=d;m=sl(k[m>>2]|0,k[m+4>>2]|0,4,0)|0;n=d;k[n>>2]=m;k[n+4>>2]=M;b=k[b>>2]|0;n=b+8|0;m=k[n+4>>2]|0;c=b+16|0;e=c;d=k[e>>2]|0;e=k[e+4>>2]|0;if(!((m|0)>(e|0)|((m|0)==(e|0)?(k[n>>2]|0)>>>0>d>>>0:0))){n=0;return n|0}b=i[(k[b>>2]|0)+d>>0]|0;m=sl(d|0,e|0,1,0)|0;n=c;k[n>>2]=m;k[n+4>>2]=M;if((b&255)>31){n=0;return n|0}k[a+32>>2]=b&255;n=1;return n|0}function hf(a,b,c){a=a|0;b=b|0;c=c|0;var d=0,e=0,f=0,g=0,h=0,i=0,j=0,l=0,m=0;m=k[b>>2]|0;f=k[c>>2]|0;g=f-m>>2;h=a+8|0;d=k[h>>2]|0;j=k[a>>2]|0;b=m;i=j;l=f;if(g>>>0<=d-j>>2>>>0){a=a+4|0;h=(k[a>>2]|0)-j>>2;e=g>>>0>h>>>0;h=e?b+(h<<2)|0:f;b=h-m|0;d=b>>2;if(d|0)Wj(j|0,m|0,b|0)|0;d=i+(d<<2)|0;if(!e){b=k[a>>2]|0;if((b|0)==(d|0))return;k[a>>2]=b+(~((b+-4-d|0)>>>2)<<2);return}g=k[c>>2]|0;b=h;if((b|0)==(g|0))return;f=k[a>>2]|0;e=g+-4-h|0;d=f;while(1){k[d>>2]=k[b>>2];b=b+4|0;if((b|0)==(g|0))break;else d=d+4|0}k[a>>2]=f+((e>>>2)+1<<2);return}f=j;if(j){d=a+4|0;e=k[d>>2]|0;if((e|0)!=(i|0))k[d>>2]=e+(~((e+-4-j|0)>>>2)<<2);cn(f);k[h>>2]=0;k[d>>2]=0;k[a>>2]=0;d=0}if(g>>>0>1073741823)hm(a);j=d-0|0;d=j>>1;d=j>>2>>>0<536870911?(d>>>0>>0?g:d):1073741823;if(d>>>0>1073741823)hm(a);f=xk(d<<2)|0;g=a+4|0;k[g>>2]=f;k[a>>2]=f;k[h>>2]=f+(d<<2);if((b|0)==(l|0))return;e=l+-4-m|0;d=f;while(1){k[d>>2]=k[b>>2];b=b+4|0;if((b|0)==(l|0))break;else d=d+4|0}k[g>>2]=f+((e>>>2)+1<<2);return}function jf(a,b){a=a|0;b=b|0;var c=0,d=0,e=0,f=0,g=0,h=0,i=0,j=0,l=0,m=0,n=0,o=0;o=r;r=r+32|0;l=o;m=a+8|0;d=k[m>>2]|0;n=a+4|0;f=k[n>>2]|0;if(d-f>>2>>>0>=b>>>0){Vi(f|0,0,b<<2|0)|0;k[n>>2]=f+(b<<2);r=o;return}e=k[a>>2]|0;c=(f-e>>2)+b|0;if(c>>>0>1073741823)hm(a);j=d-e|0;g=j>>1;g=j>>2>>>0<536870911?(g>>>0>>0?c:g):1073741823;c=f-e>>2;k[l+12>>2]=0;k[l+16>>2]=a+8;do if(g)if(g>>>0>1073741823){o=Ma(4)|0;Om(o);xa(o|0,1024,93)}else{d=xk(g<<2)|0;break}else d=0;while(0);k[l>>2]=d;e=d+(c<<2)|0;i=l+8|0;h=l+4|0;k[h>>2]=e;j=l+12|0;k[j>>2]=d+(g<<2);Vi(e|0,0,b<<2|0)|0;k[i>>2]=e+(b<<2);e=k[a>>2]|0;c=k[n>>2]|0;if((c|0)==(e|0)){f=h;d=k[h>>2]|0}else{d=k[h>>2]|0;do{c=c+-4|0;b=k[c>>2]|0;k[c>>2]=0;k[d+-4>>2]=b;d=(k[h>>2]|0)+-4|0;k[h>>2]=d}while((c|0)!=(e|0));f=h;e=k[a>>2]|0;c=k[n>>2]|0}k[a>>2]=d;k[f>>2]=e;k[n>>2]=k[i>>2];k[i>>2]=c;n=k[m>>2]|0;k[m>>2]=k[j>>2];k[j>>2]=n;k[l>>2]=k[f>>2];th(l);r=o;return}function kf(a,b,c){a=a|0;b=b|0;c=c|0;var d=0,e=0,f=0,g=0,h=0,i=0,j=0,l=0,m=0;m=b;g=c-m>>2;h=a+8|0;d=k[h>>2]|0;l=k[a>>2]|0;i=l;if(g>>>0<=d-l>>2>>>0){j=a+4|0;h=(k[j>>2]|0)-l>>2;g=g>>>0>h>>>0;h=b+(h<<2)|0;f=g?h:c;a=f;d=a-m|0;e=d>>2;if(e|0)Wj(l|0,b|0,d|0)|0;d=i+(e<<2)|0;if(!g){b=k[j>>2]|0;if((b|0)==(d|0))return;k[j>>2]=b+(~((b+-4-d|0)>>>2)<<2);return}if((f|0)==(c|0))return;f=k[j>>2]|0;e=((c+-4-a|0)>>>2)+1|0;b=h;d=f;while(1){k[d>>2]=k[b>>2];b=b+4|0;if((b|0)==(c|0))break;else d=d+4|0}k[j>>2]=f+(e<<2);return}f=l;if(l){d=a+4|0;e=k[d>>2]|0;if((e|0)!=(i|0))k[d>>2]=e+(~((e+-4-l|0)>>>2)<<2);cn(f);k[h>>2]=0;k[d>>2]=0;k[a>>2]=0;d=0}if(g>>>0>1073741823)hm(a);l=d-0|0;d=l>>1;d=l>>2>>>0<536870911?(d>>>0>>0?g:d):1073741823;if(d>>>0>1073741823)hm(a);f=xk(d<<2)|0;g=a+4|0;k[g>>2]=f;k[a>>2]=f;k[h>>2]=f+(d<<2);if((b|0)==(c|0))return;e=((c+-4-m|0)>>>2)+1|0;d=f;while(1){k[d>>2]=k[b>>2];b=b+4|0;if((b|0)==(c|0))break;else d=d+4|0}k[g>>2]=f+(e<<2);return}function lf(a,b,c){a=a|0;b=b|0;c=c|0;var d=0,e=0,f=0,g=0,h=0,i=0,j=0,l=0,m=0;m=b;g=c-m>>2;h=a+8|0;d=k[h>>2]|0;l=k[a>>2]|0;i=l;if(g>>>0<=d-l>>2>>>0){j=a+4|0;h=(k[j>>2]|0)-l>>2;g=g>>>0>h>>>0;h=b+(h<<2)|0;f=g?h:c;a=f;d=a-m|0;e=d>>2;if(e|0)Wj(l|0,b|0,d|0)|0;d=i+(e<<2)|0;if(!g){b=k[j>>2]|0;if((b|0)==(d|0))return;k[j>>2]=b+(~((b+-4-d|0)>>>2)<<2);return}if((f|0)==(c|0))return;f=k[j>>2]|0;e=c+-4-a|0;b=h;d=f;while(1){k[d>>2]=k[b>>2];b=b+4|0;if((b|0)==(c|0))break;else d=d+4|0}k[j>>2]=f+((e>>>2)+1<<2);return}f=l;if(l){d=a+4|0;e=k[d>>2]|0;if((e|0)!=(i|0))k[d>>2]=e+(~((e+-4-l|0)>>>2)<<2);cn(f);k[h>>2]=0;k[d>>2]=0;k[a>>2]=0;d=0}if(g>>>0>1073741823)hm(a);l=d-0|0;d=l>>1;d=l>>2>>>0<536870911?(d>>>0>>0?g:d):1073741823;if(d>>>0>1073741823)hm(a);f=xk(d<<2)|0;g=a+4|0;k[g>>2]=f;k[a>>2]=f;k[h>>2]=f+(d<<2);if((b|0)==(c|0))return;e=c+-4-m|0;d=f;while(1){k[d>>2]=k[b>>2];b=b+4|0;if((b|0)==(c|0))break;else d=d+4|0}k[g>>2]=f+((e>>>2)+1<<2);return}function mf(a,b){a=a|0;b=b|0;var c=0,d=0,e=0,f=0,g=0,h=0,i=0,j=0,l=0,m=0;j=a+8|0;d=k[j>>2]|0;l=a+4|0;f=k[l>>2]|0;e=f;if(((d-f|0)/12|0)>>>0>=b>>>0){Vi(f|0,0,b*12|0)|0;k[l>>2]=e+(b*12|0);return}h=k[a>>2]|0;c=((f-h|0)/12|0)+b|0;if(c>>>0>357913941)hm(a);i=h;d=(d-h|0)/12|0;g=d<<1;g=d>>>0<178956970?(g>>>0>>0?c:g):357913941;c=(f-h|0)/12|0;do if(g)if(g>>>0>357913941){l=Ma(4)|0;Om(l);xa(l|0,1024,93)}else{f=xk(g*12|0)|0;break}else f=0;while(0);c=f+(c*12|0)|0;d=c;g=f+(g*12|0)|0;Vi(c|0,0,b*12|0)|0;f=c+(b*12|0)|0;if((e|0)!=(i|0)){do{h=c+-12|0;b=e;e=e+-12|0;k[h>>2]=0;m=c+-8|0;k[m>>2]=0;k[c+-4>>2]=0;k[h>>2]=k[e>>2];h=b+-8|0;k[m>>2]=k[h>>2];b=b+-4|0;k[c+-4>>2]=k[b>>2];k[b>>2]=0;k[h>>2]=0;k[e>>2]=0;c=d+-12|0;d=c}while((e|0)!=(i|0));h=k[a>>2]|0;e=k[l>>2]|0}k[a>>2]=d;k[l>>2]=f;k[j>>2]=g;b=h;if((e|0)!=(b|0))do{c=e;e=e+-12|0;f=k[e>>2]|0;g=f;if(f|0){c=c+-8|0;d=k[c>>2]|0;if((d|0)!=(f|0))k[c>>2]=d+(~((d+-4-g|0)>>>2)<<2);cn(f)}}while((e|0)!=(b|0));if(!h)return;cn(h);return}function nf(a,b,c){a=a|0;b=b|0;c=c|0;var d=0,e=0,f=0,g=0,h=0,i=0,j=0,l=0,m=0;h=a+8|0;d=k[h>>2]|0;g=k[a>>2]|0;i=g;if(d-g>>3>>>0>=b>>>0){h=a+4|0;a=k[h>>2]|0;f=a-g>>3;g=f>>>0>>0;d=g?f:b;if(d|0){e=i;while(1){m=c;l=k[m+4>>2]|0;j=e;k[j>>2]=k[m>>2];k[j+4>>2]=l;d=d+-1|0;if(!d)break;else e=e+8|0}}if(g){e=b-f|0;d=e;f=a;while(1){j=c;l=k[j+4>>2]|0;m=f;k[m>>2]=k[j>>2];k[m+4>>2]=l;d=d+-1|0;if(!d)break;else f=f+8|0}k[h>>2]=a+(e<<3);return}else{d=i+(b<<3)|0;if((a|0)==(d|0))return;k[h>>2]=a+(~((a+-8-d|0)>>>3)<<3);return}}f=g;if(g){d=a+4|0;e=k[d>>2]|0;if((e|0)!=(i|0))k[d>>2]=e+(~((e+-8-g|0)>>>3)<<3);cn(f);k[h>>2]=0;k[d>>2]=0;k[a>>2]=0;d=0}if(b>>>0>536870911)hm(a);m=d-0|0;d=m>>2;d=m>>3>>>0<268435455?(d>>>0>>0?b:d):536870911;if(d>>>0>536870911)hm(a);f=xk(d<<3)|0;g=a+4|0;k[g>>2]=f;k[a>>2]=f;k[h>>2]=f+(d<<3);d=b;e=f;while(1){j=c;l=k[j+4>>2]|0;m=e;k[m>>2]=k[j>>2];k[m+4>>2]=l;d=d+-1|0;if(!d)break;else e=e+8|0}k[g>>2]=f+(b<<3);return}function of(a,b){a=a|0;b=b|0;var c=0,d=0,e=0,f=0,g=0,h=0,i=0,j=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0;m=k[a>>2]|0;n=a+4|0;c=k[n>>2]|0;j=m;if((c|0)==(m|0))d=m;else{d=c+(~((c+-4-j|0)>>>2)<<2)|0;k[n>>2]=d;c=d}s=a+16|0;k[s>>2]=0;t=a+12|0;k[t>>2]=d;i=b+8|0;d=i;p=k[d>>2]|0;d=k[d+4>>2]|0;r=b+16|0;f=r;g=k[f>>2]|0;f=sl(g|0,k[f+4>>2]|0,4,0)|0;e=M;if((d|0)<(e|0)|(d|0)==(e|0)&p>>>0>>0){b=0;return b|0}q=(k[b>>2]|0)+g|0;q=l[q>>0]|l[q+1>>0]<<8|l[q+2>>0]<<16|l[q+3>>0]<<24;h=r;k[h>>2]=f;k[h+4>>2]=e;h=al(p|0,d|0,f|0,e|0)|0;g=M;if(0>(g|0)|0==(g|0)&q>>>0>h>>>0){b=0;return b|0}h=q>>>2;g=c-j>>2;if(h>>>0<=g>>>0)if(h>>>0>>0?(o=m+(h<<2)|0,(c|0)!=(o|0)):0){k[n>>2]=c+(~((c+-4-o|0)>>>2)<<2);c=p}else c=p;else{jh(a,h-g|0);c=i;e=r;f=k[e>>2]|0;e=k[e+4>>2]|0;d=k[c+4>>2]|0;c=k[c>>2]|0}p=sl(f|0,e|0,q|0,0)|0;o=M;if((d|0)<(o|0)|(d|0)==(o|0)&c>>>0

>>0){b=0;return b|0}Ii(k[a>>2]|0,(k[b>>2]|0)+f|0,q|0)|0;b=r;q=sl(k[b>>2]|0,k[b+4>>2]|0,q|0,0)|0;b=r;k[b>>2]=q;k[b+4>>2]=M;k[t>>2]=k[a>>2];k[s>>2]=0;b=1;return b|0}function pf(a,b){a=a|0;b=b|0;var c=0,d=0,e=0,f=0,g=0,h=0,j=0,l=0,m=0,n=0,p=0,q=0,s=0,t=0,u=Pa,v=Pa,w=0,x=0;t=r;r=r+16|0;h=t;n=k[a+32>>2]|0;q=a+8|0;c=i[(k[q>>2]|0)+24>>0]|0;m=c<<24>>24;p=m<<2;s=$m(m>>>0>1073741823?-1:m<<2)|0;am(h);Nk(h,da(o[a+40>>2]),(1<>24>0){e=0;f=0;a=0}else{a=0;c=0;while(1){Ii((k[k[(k[q>>2]|0)+64>>2]>>2]|0)+c|0,s|0,p|0)|0;a=a+1|0;if((a|0)==(b|0))break;else c=c+p|0}an(s);r=t;return 1}a:while(1){d=0;c=k[n>>2]|0;do{if((k[j>>2]|0)-c>>2>>>0<=a>>>0){a=5;break a}x=a;a=a+1|0;x=k[c+(x<<2)>>2]|0;w=(x|0)<0;u=da((w?0-x|0:x)|0);u=da(da(o[l>>2])*u);v=da(-u);u=da(da(o[h>>2])*(w?v:u));u=da(da(o[(k[g>>2]|0)+(d<<2)>>2])+u);o[s+(d<<2)>>2]=u;d=d+1|0}while((d|0)<(m|0));Ii((k[k[(k[q>>2]|0)+64>>2]>>2]|0)+f|0,s|0,p|0)|0;e=e+1|0;if(e>>>0>=b>>>0){a=9;break}else f=f+p|0}if((a|0)==5)gm(n);else if((a|0)==9){an(s);r=t;return 1}return 0}function qf(a){a=a|0;var b=0,c=0,d=0,e=0,f=0,g=0,h=0,i=0,j=0,l=0,m=0;m=r;r=r+16|0;i=m+4|0;j=m;l=a+8|0;h=a+100|0;b=k[l>>2]|0;b=(k[b+28>>2]|0)-(k[b+24>>2]|0)>>2;k[i>>2]=0;c=a+104|0;f=k[c>>2]|0;e=k[h>>2]|0;d=f-e>>2;if(b>>>0<=d>>>0){if(b>>>0>>0?(g=e+(b<<2)|0,(f|0)!=(g|0)):0)k[c>>2]=f+(~((f+-4-g|0)>>>2)<<2)}else Ag(h,b-d|0,i);d=a+120|0;a=k[d>>2]|0;if(!a){h=k[l>>2]|0;h=(k[h+4>>2]|0)-(k[h>>2]|0)|0;b=(h|0)/12|0;if((h|0)<=0){r=m;return 1}a=0;do{k[j>>2]=a*3;k[i>>2]=k[j>>2];Qb(l,i);a=a+1|0}while((a|0)<(b|0));r=m;return 1}else{c=k[a>>2]|0;if((k[a+4>>2]|0)==(c|0)){r=m;return 1}b=0;a=c;do{k[j>>2]=k[a+(b<<2)>>2];k[i>>2]=k[j>>2];Qb(l,i);b=b+1|0;h=k[d>>2]|0;a=k[h>>2]|0}while(b>>>0<(k[h+4>>2]|0)-a>>2>>>0);r=m;return 1}return 0}function rf(a,b){a=a|0;b=b|0;var c=0,d=0,e=0,f=0,g=0,h=0,i=0,j=0,l=0,m=0,n=0;n=a+4|0;c=k[n>>2]|0;e=k[a>>2]|0;d=(c-e>>5)+1|0;if(d>>>0>134217727)hm(a);l=e;h=c;m=a+8|0;j=(k[m>>2]|0)-e|0;f=j>>4;f=j>>5>>>0<67108863?(f>>>0>>0?d:f):134217727;e=c-e>>5;do if(f)if(f>>>0>134217727){n=Ma(4)|0;Om(n);xa(n|0,1024,93)}else{g=xk(f<<5)|0;break}else g=0;while(0);i=g+(e<<5)|0;d=i;j=g+(f<<5)|0;k[i>>2]=k[b>>2];k[g+(e<<5)+4>>2]=k[b+4>>2];k[g+(e<<5)+8>>2]=k[b+8>>2];k[g+(e<<5)+12>>2]=k[b+12>>2];f=g+(e<<5)+16|0;b=b+16|0;k[f>>2]=k[b>>2];k[f+4>>2]=k[b+4>>2];k[f+8>>2]=k[b+8>>2];k[f+12>>2]=k[b+12>>2];f=i+32|0;if((h|0)!=(l|0)){e=h;c=i;do{h=e;e=e+-32|0;k[c+-32>>2]=k[e>>2];k[c+-28>>2]=k[h+-28>>2];k[c+-24>>2]=k[h+-24>>2];k[c+-20>>2]=k[h+-20>>2];i=c+-16|0;h=h+-16|0;k[i>>2]=k[h>>2];k[i+4>>2]=k[h+4>>2];k[i+8>>2]=k[h+8>>2];k[i+12>>2]=k[h+12>>2];c=d+-32|0;d=c}while((e|0)!=(l|0));c=k[a>>2]|0}k[a>>2]=d;k[n>>2]=f;k[m>>2]=j;if(!c)return;cn(c);return}function sf(a,b){a=a|0;b=b|0;var c=0,d=0,e=0,f=0,g=0,h=0,i=0,j=0,l=0,m=0;k[a+4>>2]=k[b+4>>2];h=a+8|0;i=b+8|0;if((a|0)==(b|0))return a|0;j=b+12|0;c=k[j>>2]|0;if(!c)c=0;else{e=a+16|0;do if(c>>>0>k[e>>2]<<5>>>0){d=k[h>>2]|0;if(d){cn(d);k[h>>2]=0;k[e>>2]=0;k[a+12>>2]=0;c=k[j>>2]|0}if((c|0)<0)hm(h);else{f=((c+-1|0)>>>5)+1|0;g=xk(f<<2)|0;k[h>>2]=g;k[a+12>>2]=0;k[e>>2]=f;f=k[j>>2]|0;break}}else{f=c;g=k[h>>2]|0}while(0);Wj(g|0,k[i>>2]|0,((f+-1|0)>>>5<<2)+4|0)|0;c=k[j>>2]|0}k[a+12>>2]=c;g=a+20|0;h=b+20|0;e=b+24|0;c=k[e>>2]|0;if(!c)c=0;else{f=a+28|0;do if(c>>>0>k[f>>2]<<5>>>0){d=k[g>>2]|0;if(d){cn(d);k[g>>2]=0;k[f>>2]=0;k[a+24>>2]=0;c=k[e>>2]|0}if((c|0)<0)hm(g);else{l=((c+-1|0)>>>5)+1|0;m=xk(l<<2)|0;k[g>>2]=m;k[a+24>>2]=0;k[f>>2]=l;l=k[e>>2]|0;break}}else{l=c;m=k[g>>2]|0}while(0);Wj(m|0,k[h>>2]|0,((l+-1|0)>>>5<<2)+4|0)|0;c=k[e>>2]|0}k[a+24>>2]=c;return a|0}function tf(a,b,c){a=a|0;b=b|0;c=c|0;var d=0,e=0,f=0,g=0,h=0,i=0,j=0,l=0,m=0;l=c;e=b;g=l-e|0;j=g>>2;h=a+8|0;d=k[h>>2]|0;f=k[a>>2]|0;m=f;if(j>>>0>d-f>>2>>>0){e=f;if(f){d=a+4|0;c=k[d>>2]|0;if((c|0)!=(m|0))k[d>>2]=c+(~((c+-4-f|0)>>>2)<<2);cn(e);k[h>>2]=0;k[d>>2]=0;k[a>>2]=0;d=0}if(j>>>0>1073741823)hm(a);m=d-0|0;d=m>>1;d=m>>2>>>0<536870911?(d>>>0>>0?j:d):1073741823;if(d>>>0>1073741823)hm(a);c=xk(d<<2)|0;e=a+4|0;k[e>>2]=c;k[a>>2]=c;k[h>>2]=c+(d<<2);if((g|0)<=0)return;Ii(c|0,b|0,g|0)|0;k[e>>2]=c+(j<<2);return}i=a+4|0;h=k[i>>2]|0;a=h-f>>2;g=j>>>0>a>>>0;a=g?b+(a<<2)|0:c;f=h;if((a|0)==(b|0))d=m;else{e=a+-4-e|0;d=b;c=m;while(1){k[c>>2]=k[d>>2];d=d+4|0;if((d|0)==(a|0))break;else c=c+4|0}d=m+((e>>>2)+1<<2)|0}if(g){d=l-a|0;if((d|0)<=0)return;Ii(h|0,a|0,d|0)|0;k[i>>2]=(k[i>>2]|0)+(d>>2<<2);return}else{if((f|0)==(d|0))return;k[i>>2]=f+(~((f+-4-d|0)>>>2)<<2);return}}function uf(a,b,c){a=a|0;b=b|0;c=c|0;var d=0,e=0,f=0,g=0,h=0,i=0,j=0,l=0,m=0,n=0,o=0,p=0,q=0,s=0;q=r;r=r+48|0;n=q+40|0;m=q+32|0;i=q+8|0;j=q;l=q+24|0;p=q+16|0;f=a+4|0;s=k[f>>2]|0;d=b;o=k[d>>2]|0;d=k[d+4>>2]|0;g=c;e=k[g>>2]|0;g=k[g+4>>2]|0;h=e-o<<3;k[f>>2]=s-d+g+h;f=(k[a>>2]|0)+(s>>>5<<2)|0;c=s&31;b=f;if((d|0)!=(c|0)){s=i;k[s>>2]=o;k[s+4>>2]=d;s=j;k[s>>2]=e;k[s+4>>2]=g;k[l>>2]=b;k[l+4>>2]=c;k[m>>2]=k[i>>2];k[m+4>>2]=k[i+4>>2];k[n>>2]=k[j>>2];k[n+4>>2]=k[j+4>>2];ke(p,m,n,l);r=q;return}c=g-d+h|0;g=o;if((c|0)>0){if(!d){d=0;b=o}else{b=32-d|0;s=(c|0)<(b|0)?c:b;b=-1>>>(b-s|0)&-1<>2]=k[f>>2]&~b|k[g>>2]&b;b=s+d|0;g=g+4|0;c=c-s|0;d=b&31;f=f+(b>>>5<<2)|0;b=g}e=c>>>5;Wj(f|0,b|0,e<<2|0)|0;a=c-(e<<5)|0;c=f+(e<<2)|0;b=c;if((a|0)>0){d=-1>>>(32-a|0);k[c>>2]=k[c>>2]&~d|k[g+(e<<2)>>2]&d;d=a}}k[p>>2]=b;k[p+4>>2]=d;r=q;return}function vf(a,b){a=a|0;b=b|0;var c=0,d=0,e=0,f=0,g=0,h=0,i=0;p[a+16>>3]=.5;e=b+8|0;d=k[e>>2]|0;e=k[e+4>>2]|0;g=b+16|0;h=g;c=k[h>>2]|0;h=sl(c|0,k[h+4>>2]|0,4,0)|0;i=M;if((e|0)<(i|0)|(e|0)==(i|0)&d>>>0>>0){i=0;return i|0}b=k[b>>2]|0;f=b+c|0;f=l[f>>0]|l[f+1>>0]<<8|l[f+2>>0]<<16|l[f+3>>0]<<24;c=g;k[c>>2]=h;k[c+4>>2]=i;e=al(d|0,e|0,h|0,i|0)|0;d=M;if(0>(d|0)|0==(d|0)&f>>>0>e>>>0){i=0;return i|0}b=b+h|0;if((f|0)<1){i=0;return i|0}k[a>>2]=b;c=f+-1|0;d=b+c|0;a:do switch((l[d>>0]|0)>>>6&3){case 0:{k[a+4>>2]=c;c=(l[d>>0]|0)&63;b=a+8|0;k[b>>2]=c;break}case 1:if((f|0)<2){i=0;return i|0}else{k[a+4>>2]=f+-2;c=b+f+-2|0;c=(l[c+1>>0]|0)<<8&16128|(l[c>>0]|0);b=a+8|0;k[b>>2]=c;break a}case 2:if((f|0)<3){i=0;return i|0}else{k[a+4>>2]=f+-3;c=b+f+-3|0;c=(l[c+1>>0]|0)<<8|(l[c>>0]|0)|(l[c+2>>0]|0)<<16&4128768;b=a+8|0;k[b>>2]=c;break a}default:{i=0;return i|0}}while(0);a=c+4096|0;k[b>>2]=a;if(a>>>0>1048575){i=0;return i|0}h=sl(h|0,i|0,f|0,0)|0;i=g;k[i>>2]=h;k[i+4>>2]=M;i=1;return i|0}function wf(a,b,c){a=a|0;b=b|0;c=c|0;var d=0,e=0,f=0,g=0,h=0,j=0,l=0,m=0,n=0,o=0,p=0,q=0;d=k[c>>2]|0;m=k[c+4>>2]|0;a:do if((d|0)==(m|0)){n=0;o=a+8|0;p=a+4|0}else{j=k[b>>2]|0;l=a+4|0;h=a+8|0;c=0;b:while(1){f=k[d>>2]|0;g=k[j+(f<<2)>>2]|0;if((g|0)>=(c|0)){c=k[l>>2]|0;b=(k[h>>2]|0)-c|0;if((b|0)>0){a=b>>2;b=0;do{e=k[c+(b<<2)>>2]|0;if(i[e+84>>0]|0)break b;e=k[e+68>>2]|0;k[e+(g<<2)>>2]=k[e+(f<<2)>>2];b=b+1|0}while((b|0)<(a|0))}c=g+1|0}d=d+4|0;if((d|0)==(m|0)){n=c;o=h;p=l;break a}}Ka(14270,14289,80,14321)}while(0);b=k[o>>2]|0;c=k[p>>2]|0;if((b-c|0)>0)h=0;else return;do{d=k[c+(h<<2)>>2]|0;i[d+84>>0]=0;a=d+68|0;d=d+72|0;g=k[d>>2]|0;f=k[a>>2]|0;e=g-f>>2;if(n>>>0<=e>>>0){if(n>>>0>>0?(q=f+(n<<2)|0,(g|0)!=(q|0)):0)k[d>>2]=g+(~((g+-4-q|0)>>>2)<<2)}else{Ag(a,n-e|0,3188);c=k[p>>2]|0;b=k[o>>2]|0}h=h+1|0}while((h|0)<(b-c>>2|0));return}function xf(a,b){a=a|0;b=b|0;var c=0,d=0,e=0,f=0,g=0,h=0;e=k[b>>2]|0;f=k[a>>2]|0;h=f+(e>>>5<<2)|0;k[h>>2]=k[h>>2]|1<<(e&31);h=k[a+64>>2]|0;d=(e|0)<0;b=e+1|0;if(!d?(c=((b|0)%3|0|0)==0?e+-2|0:b,(c|0)>=0):0)b=k[(k[h>>2]|0)+(((c>>>0)/3|0)*12|0)+(((c>>>0)%3|0)<<2)>>2]|0;else b=-1073741824;g=a+12|0;c=(k[g>>2]|0)+(b>>>5<<2)|0;k[c>>2]=k[c>>2]|1<<(b&31);if(d){h=(k[g>>2]|0)+402653184|0;k[h>>2]=k[h>>2]|1;return}b=(((e>>>0)%3|0|0)==0?2:-1)+e|0;if((b|0)<0)b=-1073741824;else b=k[(k[h>>2]|0)+(((b>>>0)/3|0)*12|0)+(((b>>>0)%3|0)<<2)>>2]|0;c=(k[g>>2]|0)+(b>>>5<<2)|0;k[c>>2]=k[c>>2]|1<<(b&31);if(d)return;c=k[(k[h+12>>2]|0)+(e<<2)>>2]|0;if((c|0)<=-1)return;i[a+24>>0]=0;b=f+(c>>>5<<2)|0;k[b>>2]=k[b>>2]|1<<(c&31);b=c+1|0;b=((b|0)%3|0|0)==0?c+-2|0:b;if((b|0)<0)b=-1073741824;else b=k[(k[h>>2]|0)+(((b>>>0)/3|0)*12|0)+(((b>>>0)%3|0)<<2)>>2]|0;a=(k[g>>2]|0)+(b>>>5<<2)|0;k[a>>2]=k[a>>2]|1<<(b&31);b=(((c>>>0)%3|0|0)==0?2:-1)+c|0;if((b|0)<0)b=-1073741824;else b=k[(k[h>>2]|0)+(((b>>>0)/3|0)*12|0)+(((b>>>0)%3|0)<<2)>>2]|0;h=(k[g>>2]|0)+(b>>>5<<2)|0;k[h>>2]=k[h>>2]|1<<(b&31);return}function yf(a,b){a=a|0;b=b|0;var c=0,d=0,e=0,f=0,g=0,h=0,i=0,j=0,l=0,m=0,n=0,o=0;h=a+48|0;c=k[h>>2]|0;if(!c){o=0;return o|0}o=a+36|0;k[c+4>>2]=o;if(!(Va[k[(k[c>>2]|0)+12>>2]&127](c)|0)){o=0;return o|0}m=a+4|0;n=a+8|0;c=k[n>>2]|0;d=k[m>>2]|0;a:do if((c-d|0)>0){g=a+16|0;f=0;c=d;while(1){e=k[(k[g>>2]|0)+4>>2]|0;c=k[c+(f<<2)>>2]|0;if((c|0)<=-1){c=9;break}d=k[e+4>>2]|0;if(((k[e+8>>2]|0)-d>>2|0)<=(c|0)){c=11;break}e=k[h>>2]|0;f=f+1|0;if(!(Za[k[(k[e>>2]|0)+8>>2]&127](e,k[d+(c<<2)>>2]|0)|0)){l=0;c=15;break}d=k[n>>2]|0;c=k[m>>2]|0;if((f|0)>=(d-c>>2|0)){i=c;j=d;break a}}if((c|0)==9)Ka(13387,13403,62,13431);else if((c|0)==11)Ka(13441,13403,63,13431);else if((c|0)==15)return l|0}else{i=d;j=c}while(0);if((j-i|0)<=0){o=1;return o|0}d=a+24|0;c=0;while(1){l=k[(k[d>>2]|0)+(c<<2)>>2]|0;c=c+1|0;if(!(Ra[k[(k[l>>2]|0)+16>>2]&31](l,o,b)|0)){l=0;c=15;break}if((c|0)>=((k[n>>2]|0)-(k[m>>2]|0)>>2|0)){l=1;c=15;break}}if((c|0)==15)return l|0;return 0}function zf(a,b){a=a|0;b=b|0;var c=0,d=0,e=0,f=0,g=0,h=0,i=0,l=0;i=j[b>>1]|0;l=j[b+2>>1]|0;h=j[b+4>>1]|0;g=j[b+6>>1]|0;b=(((i&65535^318)+239^l&65535)+239^h&65535)+239^g&65535;d=k[a+4>>2]|0;if(!d){l=0;return l|0}e=d+-1|0;c=(e&d|0)==0;if(c)f=b&e;else f=(b>>>0)%(d>>>0)|0;b=k[(k[a>>2]|0)+(f<<2)>>2]|0;if(!b){l=0;return l|0}b=k[b>>2]|0;if(!b){l=0;return l|0}if(c){while(1){if((k[b+4>>2]&e|0)!=(f|0)){b=0;a=20;break}if((((j[b+8>>1]|0)==i<<16>>16?(j[b+10>>1]|0)==l<<16>>16:0)?(j[b+12>>1]|0)==h<<16>>16:0)?(j[b+14>>1]|0)==g<<16>>16:0){a=20;break}b=k[b>>2]|0;if(!b){b=0;a=20;break}}if((a|0)==20)return b|0}else{while(1){if((((k[b+4>>2]|0)>>>0)%(d>>>0)|0|0)!=(f|0)){b=0;a=20;break}if((((j[b+8>>1]|0)==i<<16>>16?(j[b+10>>1]|0)==l<<16>>16:0)?(j[b+12>>1]|0)==h<<16>>16:0)?(j[b+14>>1]|0)==g<<16>>16:0){a=20;break}b=k[b>>2]|0;if(!b){b=0;a=20;break}}if((a|0)==20)return b|0}return 0} -function Ab(a){a=a|0;var b=0,c=0,d=0,e=Pa,f=Pa,g=0,h=0,j=0,l=0,m=0,n=0,p=0,q=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,B=0,C=0,D=0,E=0,F=0,G=0,H=0,I=0,J=0,K=0,L=0,M=0,N=0,O=0,P=0,Q=0,R=0,S=0,T=Pa;S=r;r=r+64|0;R=S+28|0;O=S+16|0;J=S+4|0;K=S;Q=a;L=a+64|0;b=k[L>>2]|0;k[R>>2]=0;k[R+4>>2]=0;k[R+8>>2]=0;k[R+12>>2]=0;k[R+16>>2]=Q;M=R+20|0;o[M>>2]=da(1.0);k[R+24>>2]=Q;Bg(R,b);b=k[L>>2]|0;k[O>>2]=0;Q=O+4|0;k[Q>>2]=0;k[O+8>>2]=0;do if(b|0)if(b>>>0>1073741823)hm(O);else{E=b<<2;D=xk(E)|0;k[O>>2]=D;P=D+(b<<2)|0;k[O+8>>2]=P;Vi(D|0,0,E|0)|0;k[Q>>2]=P;break}while(0);k[J>>2]=0;P=J+4|0;k[P>>2]=0;k[J+8>>2]=0;k[K>>2]=0;a:do if((b|0)>0){z=R+16|0;B=R+4|0;C=R+12|0;D=R+8|0;E=J+8|0;A=R+24|0;b=0;y=0;b:while(1){v=k[z>>2]|0;j=k[v+4>>2]|0;v=(k[v+8>>2]|0)-j|0;u=(v|0)>0;if(u){h=j;l=v>>2;g=0;c=0;do{d=k[h+(g<<2)>>2]|0;if(!(i[d+84>>0]|0))d=k[(k[d+68>>2]|0)+(y<<2)>>2]|0;else d=y;c=d<<2^c<<1;g=g+1|0}while((g|0)<(l|0))}else c=0;w=k[B>>2]|0;x=(w|0)==0;c:do if(!x){p=w+-1|0;d=(p&w|0)==0;if(d)t=p&c;else t=(c>>>0)%(w>>>0)|0;c=k[(k[R>>2]|0)+(t<<2)>>2]|0;if((c|0)!=0?(G=k[c>>2]|0,(G|0)!=0):0){s=k[A>>2]|0;q=s+4|0;s=s+8|0;d:do if(d){c=G;while(1){if((k[c+4>>2]&p|0)!=(t|0)){N=41;break c}n=k[c+8>>2]|0;g=k[q>>2]|0;d=(k[s>>2]|0)-g|0;if((d|0)<=0)break d;m=d>>2;l=0;while(1){if((m|0)<=(l|0)){N=35;break b}d=k[g+(l<<2)>>2]|0;if(!(i[d+84>>0]|0)){h=k[d+68>>2]|0;d=k[h+(y<<2)>>2]|0;h=k[h+(n<<2)>>2]|0}else{d=y;h=n}l=l+1|0;if((h|0)!=(d|0))break;if((l|0)>=(m|0)){N=39;break d}}c=k[c>>2]|0;if(!c){N=41;break c}}}else{c=G;while(1){if((((k[c+4>>2]|0)>>>0)%(w>>>0)|0|0)!=(t|0)){N=41;break c}n=k[c+8>>2]|0;g=k[q>>2]|0;d=(k[s>>2]|0)-g|0;if((d|0)<=0)break d;m=d>>2;l=0;while(1){if((m|0)<=(l|0)){N=35;break b}d=k[g+(l<<2)>>2]|0;if(!(i[d+84>>0]|0)){h=k[d+68>>2]|0;d=k[h+(y<<2)>>2]|0;h=k[h+(n<<2)>>2]|0}else{d=y;h=n}l=l+1|0;if((h|0)!=(d|0))break;if((l|0)>=(m|0)){N=39;break d}}c=k[c>>2]|0;if(!c){N=41;break c}}}while(0);if((N|0)==39){N=0;if(!c){N=41;break}}k[(k[O>>2]|0)+(y<<2)>>2]=k[c+12>>2]}else N=41}else N=41;while(0);do if((N|0)==41){N=0;if(u){h=v>>2;g=0;c=0;do{d=k[j+(g<<2)>>2]|0;if(!(i[d+84>>0]|0))d=k[(k[d+68>>2]|0)+(y<<2)>>2]|0;else d=y;c=d<<2^c<<1;g=g+1|0}while((g|0)<(h|0));t=c}else t=0;e:do if(!x){p=w+-1|0;g=(p&w|0)==0;if(g)c=p&t;else c=(t>>>0)%(w>>>0)|0;d=k[(k[R>>2]|0)+(c<<2)>>2]|0;if((d|0)!=0?(H=k[d>>2]|0,(H|0)!=0):0){s=k[A>>2]|0;q=s+4|0;s=s+8|0;if(g){m=H;while(1){if((k[m+4>>2]&p|0)!=(c|0)){N=72;break e}n=k[m+8>>2]|0;g=k[q>>2]|0;d=(k[s>>2]|0)-g|0;if((d|0)<=0){c=y;break e}l=d>>2;j=0;while(1){if((l|0)<=(j|0)){N=68;break b}d=k[g+(j<<2)>>2]|0;if(!(i[d+84>>0]|0)){h=k[d+68>>2]|0;d=k[h+(y<<2)>>2]|0;h=k[h+(n<<2)>>2]|0}else{d=y;h=n}j=j+1|0;if((h|0)!=(d|0))break;if((j|0)>=(l|0)){c=y;break e}}m=k[m>>2]|0;if(!m){N=72;break}}}else{m=H;while(1){if((((k[m+4>>2]|0)>>>0)%(w>>>0)|0|0)!=(c|0)){N=72;break e}n=k[m+8>>2]|0;g=k[q>>2]|0;d=(k[s>>2]|0)-g|0;if((d|0)<=0){c=y;break e}l=d>>2;j=0;while(1){if((l|0)<=(j|0)){N=68;break b}d=k[g+(j<<2)>>2]|0;if(!(i[d+84>>0]|0)){h=k[d+68>>2]|0;d=k[h+(y<<2)>>2]|0;h=k[h+(n<<2)>>2]|0}else{d=y;h=n}j=j+1|0;if((h|0)!=(d|0))break;if((j|0)>=(l|0)){c=y;break e}}m=k[m>>2]|0;if(!m){N=72;break}}}}else N=72}else{c=0;N=72}while(0);if((N|0)==72){N=0;h=xk(16)|0;k[h+8>>2]=y;k[h+12>>2]=b;k[h+4>>2]=t;k[h>>2]=0;e=da(((k[C>>2]|0)+1|0)>>>0);T=da(w>>>0);f=da(o[M>>2]);do if(x|e>da(T*f)){c=(w>>>0>2&(w+-1&w|0)==0&1|w<<1)^1;d=~~da(_(da(e/f)))>>>0;Bg(R,c>>>0>>0?d:c);c=k[B>>2]|0;d=c+-1|0;if(!(d&c)){g=c;c=d&t;break}else{g=c;c=(t>>>0)%(c>>>0)|0;break}}else g=w;while(0);c=(k[R>>2]|0)+(c<<2)|0;d=k[c>>2]|0;if(!d){k[h>>2]=k[D>>2];k[D>>2]=h;k[c>>2]=D;c=k[h>>2]|0;if(c|0){c=k[c+4>>2]|0;d=g+-1|0;if(!(d&g))c=c&d;else c=(c>>>0)%(g>>>0)|0;k[(k[R>>2]|0)+(c<<2)>>2]=h}}else{k[h>>2]=k[d>>2];k[d>>2]=h}k[C>>2]=(k[C>>2]|0)+1;c=k[K>>2]|0}d=b+1|0;k[(k[O>>2]|0)+(c<<2)>>2]=b;b=k[P>>2]|0;if((b|0)==(k[E>>2]|0)){xh(J,K);b=d;break}else{k[b>>2]=k[K>>2];k[P>>2]=b+4;b=d;break}}while(0);y=(k[K>>2]|0)+1|0;k[K>>2]=y;c=k[L>>2]|0;if((y|0)>=(c|0)){F=b;I=c;break a}}if((N|0)==35)Ka(13441,13403,63,13431);else if((N|0)==68)Ka(13441,13403,63,13431)}else{F=0;I=0}while(0);if((F|0)!=(I|0)){Wa[k[(k[a>>2]|0)+20>>2]&7](a,O,J);k[L>>2]=F}b=k[J>>2]|0;c=b;if(b|0){d=k[P>>2]|0;if((d|0)!=(b|0))k[P>>2]=d+(~((d+-4-c|0)>>>2)<<2);cn(b)}b=k[O>>2]|0;c=b;if(b|0){d=k[Q>>2]|0;if((d|0)!=(b|0))k[Q>>2]=d+(~((d+-4-c|0)>>>2)<<2);cn(b)}b=k[R+8>>2]|0;if(b|0)do{Q=b;b=k[b>>2]|0;cn(Q)}while((b|0)!=0);b=k[R>>2]|0;k[R>>2]=0;if(!b){r=S;return}cn(b);r=S;return}function Bb(a,b,c,d,e,f){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;f=f|0;var g=0,h=0,i=0,j=0,l=0,m=0,n=0,o=0,p=0,q=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,B=0,C=0,D=0,E=0,F=0,G=0,H=0,I=0,J=0,K=0,L=0,M=0,N=0,O=0,P=0,Q=0,R=0,S=0,T=0,U=0,V=0,W=0,X=0,Y=0,Z=0,_=0,$=0,aa=0,ba=0,da=0;ba=r;r=r+80|0;$=ba+64|0;i=ba+16|0;aa=ba+40|0;U=ba+28|0;T=ba;k[i>>2]=k[d>>2];k[i+4>>2]=k[d+4>>2];k[i+8>>2]=k[d+8>>2];l=k[c>>2]|0;_=c+4|0;m=k[_>>2]|0;V=c+8|0;j=k[V>>2]|0;k[aa>>2]=0;k[aa+4>>2]=0;k[aa+8>>2]=0;k[aa+12>>2]=0;k[aa+16>>2]=0;k[aa+20>>2]=0;W=aa+8|0;X=aa+4|0;Y=aa+16|0;Z=aa+20|0;rc(aa);g=k[X>>2]|0;n=k[W>>2]|0;h=(k[Z>>2]|0)+(k[Y>>2]|0)|0;if((n|0)==(g|0))g=0;else g=(k[g+(h>>>7<<2)>>2]|0)+((h&127)<<5)|0;k[g>>2]=b;k[g+4>>2]=l;k[g+8>>2]=m;k[g+12>>2]=j;S=g+16|0;k[S>>2]=k[i>>2];k[S+4>>2]=k[i+4>>2];k[S+8>>2]=k[i+8>>2];k[g+28>>2]=e;g=(k[Z>>2]|0)+1|0;k[Z>>2]=g;if(!g){fg(aa);r=ba;return}L=a+552|0;M=a+548|0;N=$+4|0;O=$+8|0;P=$+4|0;Q=$+8|0;R=a+592|0;S=a+588|0;e=n;a:while(1){I=k[Y>>2]|0;H=g+-1|0;h=H+I|0;J=k[X>>2]|0;G=k[J+(h>>>7<<2)>>2]|0;h=h&127;K=k[G+(h<<5)>>2]|0;i=k[G+(h<<5)+4>>2]|0;b=k[G+(h<<5)+8>>2]|0;j=k[G+(h<<5)+12>>2]|0;F=G+(h<<5)+16|0;k[U>>2]=k[F>>2];k[U+4>>2]=k[F+4>>2];k[U+8>>2]=k[F+8>>2];h=k[G+(h<<5)+28>>2]|0;k[Z>>2]=H;J=e-J|0;if((1-g-I+((J|0)==0?0:(J<<5)+-1|0)|0)>>>0>255){cn(k[e+-4>>2]|0);k[W>>2]=(k[W>>2]|0)+-4}k[c>>2]=i;k[_>>2]=b;k[V>>2]=j;k[d>>2]=k[U>>2];k[d+4>>2]=k[U+4>>2];k[d+8>>2]=k[U+8>>2];k[$>>2]=k[U>>2];k[$+4>>2]=k[U+4>>2];k[$+8>>2]=k[U+8>>2];o=Lh(a,K,c,$,h)|0;j=d+(o<<2)|0;e=k[j>>2]|0;g=k[a>>2]|0;J=g-e|0;do if(!J){if((K|0)>0){h=k[f>>2]|0;i=h+4|0;b=h+8|0;g=0;do{j=k[i>>2]|0;if((j|0)==(k[b>>2]|0))xg(h,c);else{k[j>>2]=k[c>>2];k[j+4>>2]=k[_>>2];k[j+8>>2]=k[V>>2];k[i>>2]=j+12}g=g+1|0}while((g|0)<(K|0))}}else{if(!K){g=15;break a}if(K>>>0>=3){k[$>>2]=k[c>>2];k[P>>2]=k[_>>2];k[Q>>2]=k[V>>2];i=$+(o<<2)|0;k[i>>2]=(k[i>>2]|0)+(1<>>1)-g|0;h=K-b|0;if((b|0)==(h|0)){m=b;n=b}else{K=k[R>>2]|0;g=k[S>>2]|0;i=(k[g>>2]&1<<31-K|0)!=0;K=K+1|0;k[R>>2]=K;if((K|0)==32){k[S>>2]=g+4;k[R>>2]=0}m=i?b:h;n=i?h:b}k[j>>2]=e+1;if(m|0){k[T>>2]=k[d>>2];k[T+4>>2]=k[d+4>>2];k[T+8>>2]=k[d+8>>2];j=k[c>>2]|0;e=k[_>>2]|0;l=k[V>>2]|0;b=k[W>>2]|0;i=k[X>>2]|0;K=b-i|0;g=k[Y>>2]|0;h=k[Z>>2]|0;if((((K|0)==0?0:(K<<5)+-1|0)|0)==(h+g|0)){rc(aa);g=k[Y>>2]|0;h=k[Z>>2]|0;b=k[W>>2]|0;i=k[X>>2]|0}g=h+g|0;if((b|0)==(i|0))g=0;else g=(k[i+(g>>>7<<2)>>2]|0)+((g&127)<<5)|0;k[g>>2]=m;k[g+4>>2]=j;k[g+8>>2]=e;k[g+12>>2]=l;K=g+16|0;k[K>>2]=k[T>>2];k[K+4>>2]=k[T+4>>2];k[K+8>>2]=k[T+8>>2];k[g+28>>2]=o;k[Z>>2]=(k[Z>>2]|0)+1}if(n|0){k[T>>2]=k[d>>2];k[T+4>>2]=k[d+4>>2];k[T+8>>2]=k[d+8>>2];j=k[$>>2]|0;e=k[P>>2]|0;l=k[Q>>2]|0;b=k[W>>2]|0;i=k[X>>2]|0;K=b-i|0;g=k[Y>>2]|0;h=k[Z>>2]|0;if((((K|0)==0?0:(K<<5)+-1|0)|0)==(h+g|0)){rc(aa);g=k[Y>>2]|0;h=k[Z>>2]|0;b=k[W>>2]|0;i=k[X>>2]|0}g=h+g|0;if((b|0)==(i|0))g=0;else g=(k[i+(g>>>7<<2)>>2]|0)+((g&127)<<5)|0;k[g>>2]=n;k[g+4>>2]=j;k[g+8>>2]=e;k[g+12>>2]=l;K=g+16|0;k[K>>2]=k[T>>2];k[K+4>>2]=k[T+4>>2];k[K+8>>2]=k[T+8>>2];k[g+28>>2]=o;k[Z>>2]=(k[Z>>2]|0)+1}break}w=(o|0)==2?0:o+1|0;s=(w|0)==2?0:w+1|0;I=g-(k[d+(w<<2)>>2]|0)|0;C=g-(k[d+(s<<2)>>2]|0)|0;B=k[f>>2]|0;D=B+4|0;E=B+8|0;F=$+(o<<2)|0;G=(J|0)<33;H=(J|0)>0;m=c+(o<<2)|0;n=(I|0)==0;e=$+(w<<2)|0;o=c+(w<<2)|0;p=(C|0)==0;l=$+(s<<2)|0;q=c+(s<<2)|0;s=$+(s<<2)|0;t=(C|0)<33;u=(C|0)>0;v=32-C|0;w=$+(w<<2)|0;x=(I|0)<33;y=(I|0)>0;z=32-I|0;A=32-J|0;j=0;do{k[$>>2]=0;k[$+4>>2]=0;k[$+8>>2]=0;if(!G){g=21;break a}if(!H){g=23;break a}i=k[L>>2]|0;g=32-i|0;b=k[M>>2]|0;h=k[b>>2]<>>A;k[F>>2]=g;i=i+J|0;k[L>>2]=i;if((i|0)==32){k[M>>2]=b+4;k[L>>2]=0}}else{da=J-g|0;k[L>>2]=da;i=b+4|0;k[M>>2]=i;b=32-da|0;g=(k[i>>2]|0)>>>b|h>>>(b-g|0);k[F>>2]=g}k[F>>2]=g|k[m>>2];do if(!n){if(!x){g=21;break a}if(!y){g=23;break a}i=k[L>>2]|0;g=32-i|0;b=k[M>>2]|0;h=k[b>>2]<(g|0)){da=I-g|0;k[L>>2]=da;b=b+4|0;k[M>>2]=b;da=32-da|0;g=(k[b>>2]|0)>>>da|h>>>(da-g|0);k[w>>2]=g;h=w;break}g=h>>>z;k[w>>2]=g;da=i+I|0;k[L>>2]=da;if((da|0)==32){k[M>>2]=b+4;k[L>>2]=0;h=w}else h=w}else{h=e;g=k[e>>2]|0}while(0);k[h>>2]=g|k[o>>2];do if(!p){if(!t){g=21;break a}if(!u){g=23;break a}i=k[L>>2]|0;g=32-i|0;b=k[M>>2]|0;h=k[b>>2]<(g|0)){da=C-g|0;k[L>>2]=da;b=b+4|0;k[M>>2]=b;da=32-da|0;g=(k[b>>2]|0)>>>da|h>>>(da-g|0);k[s>>2]=g;h=s;break}g=h>>>v;k[s>>2]=g;da=i+C|0;k[L>>2]=da;if((da|0)==32){k[M>>2]=b+4;k[L>>2]=0;h=s}else h=s}else{h=l;g=k[l>>2]|0}while(0);k[h>>2]=g|k[q>>2];g=k[D>>2]|0;if((g|0)==(k[E>>2]|0))xg(B,$);else{k[g>>2]=k[$>>2];k[g+4>>2]=k[N>>2];k[g+8>>2]=k[O>>2];k[D>>2]=g+12}j=j+1|0}while(j>>>0>>0)}while(0);g=k[Z>>2]|0;if(!g){g=52;break}e=k[W>>2]|0}if((g|0)==15)Ka(13811,13849,231,13919);else if((g|0)==21)Ka(13932,13956,48,13984);else if((g|0)==23)Ka(14013,13956,49,13984);else if((g|0)==52){fg(aa);r=ba;return}}function Cb(a,b,c,d,e,f){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;f=f|0;var g=0,h=0,i=0,j=0,l=0,m=0,n=0,o=0,p=0,q=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,B=0,C=0,D=0,E=0,F=0,G=0,H=0,I=0,J=0,K=0,L=0,M=0,N=0,O=0,P=0,Q=0,R=0,S=0,T=0,U=0,V=0,W=0,X=0,Y=0,Z=0,_=0,$=0,aa=0,ba=0,da=0;ba=r;r=r+80|0;$=ba+64|0;i=ba+16|0;aa=ba+40|0;U=ba+28|0;T=ba;k[i>>2]=k[d>>2];k[i+4>>2]=k[d+4>>2];k[i+8>>2]=k[d+8>>2];l=k[c>>2]|0;_=c+4|0;m=k[_>>2]|0;V=c+8|0;j=k[V>>2]|0;k[aa>>2]=0;k[aa+4>>2]=0;k[aa+8>>2]=0;k[aa+12>>2]=0;k[aa+16>>2]=0;k[aa+20>>2]=0;W=aa+8|0;X=aa+4|0;Y=aa+16|0;Z=aa+20|0;rc(aa);g=k[X>>2]|0;n=k[W>>2]|0;h=(k[Z>>2]|0)+(k[Y>>2]|0)|0;if((n|0)==(g|0))g=0;else g=(k[g+(h>>>7<<2)>>2]|0)+((h&127)<<5)|0;k[g>>2]=b;k[g+4>>2]=l;k[g+8>>2]=m;k[g+12>>2]=j;S=g+16|0;k[S>>2]=k[i>>2];k[S+4>>2]=k[i+4>>2];k[S+8>>2]=k[i+8>>2];k[g+28>>2]=e;g=(k[Z>>2]|0)+1|0;k[Z>>2]=g;if(!g){fg(aa);r=ba;return}L=a+552|0;M=a+548|0;N=$+4|0;O=$+8|0;P=$+4|0;Q=$+8|0;R=a+592|0;S=a+588|0;e=n;a:while(1){I=k[Y>>2]|0;H=g+-1|0;h=H+I|0;J=k[X>>2]|0;G=k[J+(h>>>7<<2)>>2]|0;h=h&127;K=k[G+(h<<5)>>2]|0;i=k[G+(h<<5)+4>>2]|0;b=k[G+(h<<5)+8>>2]|0;j=k[G+(h<<5)+12>>2]|0;F=G+(h<<5)+16|0;k[U>>2]=k[F>>2];k[U+4>>2]=k[F+4>>2];k[U+8>>2]=k[F+8>>2];h=k[G+(h<<5)+28>>2]|0;k[Z>>2]=H;J=e-J|0;if((1-g-I+((J|0)==0?0:(J<<5)+-1|0)|0)>>>0>255){cn(k[e+-4>>2]|0);k[W>>2]=(k[W>>2]|0)+-4}k[c>>2]=i;k[_>>2]=b;k[V>>2]=j;k[d>>2]=k[U>>2];k[d+4>>2]=k[U+4>>2];k[d+8>>2]=k[U+8>>2];k[$>>2]=k[U>>2];k[$+4>>2]=k[U+4>>2];k[$+8>>2]=k[U+8>>2];o=Jk(a,K,c,$,h)|0;j=d+(o<<2)|0;e=k[j>>2]|0;g=k[a>>2]|0;J=g-e|0;do if(!J){if((K|0)>0){h=k[f>>2]|0;i=h+4|0;b=h+8|0;g=0;do{j=k[i>>2]|0;if((j|0)==(k[b>>2]|0))xg(h,c);else{k[j>>2]=k[c>>2];k[j+4>>2]=k[_>>2];k[j+8>>2]=k[V>>2];k[i>>2]=j+12}g=g+1|0}while((g|0)<(K|0))}}else{if(!K){g=15;break a}if(K>>>0>=3){k[$>>2]=k[c>>2];k[P>>2]=k[_>>2];k[Q>>2]=k[V>>2];i=$+(o<<2)|0;k[i>>2]=(k[i>>2]|0)+(1<>>1)-g|0;h=K-b|0;if((b|0)==(h|0)){m=b;n=b}else{K=k[R>>2]|0;g=k[S>>2]|0;i=(k[g>>2]&1<<31-K|0)!=0;K=K+1|0;k[R>>2]=K;if((K|0)==32){k[S>>2]=g+4;k[R>>2]=0}m=i?b:h;n=i?h:b}k[j>>2]=e+1;if(m|0){k[T>>2]=k[d>>2];k[T+4>>2]=k[d+4>>2];k[T+8>>2]=k[d+8>>2];j=k[c>>2]|0;e=k[_>>2]|0;l=k[V>>2]|0;b=k[W>>2]|0;i=k[X>>2]|0;K=b-i|0;g=k[Y>>2]|0;h=k[Z>>2]|0;if((((K|0)==0?0:(K<<5)+-1|0)|0)==(h+g|0)){rc(aa);g=k[Y>>2]|0;h=k[Z>>2]|0;b=k[W>>2]|0;i=k[X>>2]|0}g=h+g|0;if((b|0)==(i|0))g=0;else g=(k[i+(g>>>7<<2)>>2]|0)+((g&127)<<5)|0;k[g>>2]=m;k[g+4>>2]=j;k[g+8>>2]=e;k[g+12>>2]=l;K=g+16|0;k[K>>2]=k[T>>2];k[K+4>>2]=k[T+4>>2];k[K+8>>2]=k[T+8>>2];k[g+28>>2]=o;k[Z>>2]=(k[Z>>2]|0)+1}if(n|0){k[T>>2]=k[d>>2];k[T+4>>2]=k[d+4>>2];k[T+8>>2]=k[d+8>>2];j=k[$>>2]|0;e=k[P>>2]|0;l=k[Q>>2]|0;b=k[W>>2]|0;i=k[X>>2]|0;K=b-i|0;g=k[Y>>2]|0;h=k[Z>>2]|0;if((((K|0)==0?0:(K<<5)+-1|0)|0)==(h+g|0)){rc(aa);g=k[Y>>2]|0;h=k[Z>>2]|0;b=k[W>>2]|0;i=k[X>>2]|0}g=h+g|0;if((b|0)==(i|0))g=0;else g=(k[i+(g>>>7<<2)>>2]|0)+((g&127)<<5)|0;k[g>>2]=n;k[g+4>>2]=j;k[g+8>>2]=e;k[g+12>>2]=l;K=g+16|0;k[K>>2]=k[T>>2];k[K+4>>2]=k[T+4>>2];k[K+8>>2]=k[T+8>>2];k[g+28>>2]=o;k[Z>>2]=(k[Z>>2]|0)+1}break}w=(o|0)==2?0:o+1|0;s=(w|0)==2?0:w+1|0;I=g-(k[d+(w<<2)>>2]|0)|0;C=g-(k[d+(s<<2)>>2]|0)|0;B=k[f>>2]|0;D=B+4|0;E=B+8|0;F=$+(o<<2)|0;G=(J|0)<33;H=(J|0)>0;m=c+(o<<2)|0;n=(I|0)==0;e=$+(w<<2)|0;o=c+(w<<2)|0;p=(C|0)==0;l=$+(s<<2)|0;q=c+(s<<2)|0;s=$+(s<<2)|0;t=(C|0)<33;u=(C|0)>0;v=32-C|0;w=$+(w<<2)|0;x=(I|0)<33;y=(I|0)>0;z=32-I|0;A=32-J|0;j=0;do{k[$>>2]=0;k[$+4>>2]=0;k[$+8>>2]=0;if(!G){g=21;break a}if(!H){g=23;break a}i=k[L>>2]|0;g=32-i|0;b=k[M>>2]|0;h=k[b>>2]<>>A;k[F>>2]=g;i=i+J|0;k[L>>2]=i;if((i|0)==32){k[M>>2]=b+4;k[L>>2]=0}}else{da=J-g|0;k[L>>2]=da;i=b+4|0;k[M>>2]=i;b=32-da|0;g=(k[i>>2]|0)>>>b|h>>>(b-g|0);k[F>>2]=g}k[F>>2]=g|k[m>>2];do if(!n){if(!x){g=21;break a}if(!y){g=23;break a}i=k[L>>2]|0;g=32-i|0;b=k[M>>2]|0;h=k[b>>2]<(g|0)){da=I-g|0;k[L>>2]=da;b=b+4|0;k[M>>2]=b;da=32-da|0;g=(k[b>>2]|0)>>>da|h>>>(da-g|0);k[w>>2]=g;h=w;break}g=h>>>z;k[w>>2]=g;da=i+I|0;k[L>>2]=da;if((da|0)==32){k[M>>2]=b+4;k[L>>2]=0;h=w}else h=w}else{h=e;g=k[e>>2]|0}while(0);k[h>>2]=g|k[o>>2];do if(!p){if(!t){g=21;break a}if(!u){g=23;break a}i=k[L>>2]|0;g=32-i|0;b=k[M>>2]|0;h=k[b>>2]<(g|0)){da=C-g|0;k[L>>2]=da;b=b+4|0;k[M>>2]=b;da=32-da|0;g=(k[b>>2]|0)>>>da|h>>>(da-g|0);k[s>>2]=g;h=s;break}g=h>>>v;k[s>>2]=g;da=i+C|0;k[L>>2]=da;if((da|0)==32){k[M>>2]=b+4;k[L>>2]=0;h=s}else h=s}else{h=l;g=k[l>>2]|0}while(0);k[h>>2]=g|k[q>>2];g=k[D>>2]|0;if((g|0)==(k[E>>2]|0))xg(B,$);else{k[g>>2]=k[$>>2];k[g+4>>2]=k[N>>2];k[g+8>>2]=k[O>>2];k[D>>2]=g+12}j=j+1|0}while(j>>>0>>0)}while(0);g=k[Z>>2]|0;if(!g){g=52;break}e=k[W>>2]|0}if((g|0)==15)Ka(13811,13849,231,13919);else if((g|0)==21)Ka(13932,13956,48,13984);else if((g|0)==23)Ka(14013,13956,49,13984);else if((g|0)==52){fg(aa);r=ba;return}}function Db(a,b,c,d,e,f){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;f=f|0;var g=0,h=0,i=0,j=0,l=0,m=0,n=0,o=0,p=0,q=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,B=0,C=0,D=0,E=0,F=0,G=0,H=0,I=0,J=0,K=0,L=0,M=0,N=0,O=0,P=0,Q=0,R=0,S=0,T=0,U=0,V=0,W=0,X=0,Y=0,Z=0,_=0,$=0,aa=0,ba=0,da=0;ba=r;r=r+80|0;$=ba+64|0;i=ba+16|0;aa=ba+40|0;U=ba+28|0;T=ba;k[i>>2]=k[d>>2];k[i+4>>2]=k[d+4>>2];k[i+8>>2]=k[d+8>>2];l=k[c>>2]|0;_=c+4|0;m=k[_>>2]|0;V=c+8|0;j=k[V>>2]|0;k[aa>>2]=0;k[aa+4>>2]=0;k[aa+8>>2]=0;k[aa+12>>2]=0;k[aa+16>>2]=0;k[aa+20>>2]=0;W=aa+8|0;X=aa+4|0;Y=aa+16|0;Z=aa+20|0;rc(aa);g=k[X>>2]|0;h=(k[Z>>2]|0)+(k[Y>>2]|0)|0;if((k[W>>2]|0)==(g|0))g=0;else g=(k[g+(h>>>7<<2)>>2]|0)+((h&127)<<5)|0;k[g>>2]=b;k[g+4>>2]=l;k[g+8>>2]=m;k[g+12>>2]=j;S=g+16|0;k[S>>2]=k[i>>2];k[S+4>>2]=k[i+4>>2];k[S+8>>2]=k[i+8>>2];k[g+28>>2]=e;g=(k[Z>>2]|0)+1|0;k[Z>>2]=g;if(!g){fg(aa);r=ba;return}L=a+816|0;M=a+812|0;N=$+4|0;O=$+8|0;P=$+4|0;Q=$+8|0;R=a+856|0;S=a+852|0;a:while(1){i=k[X>>2]|0;J=k[Y>>2]|0;I=k[i+(J>>>7<<2)>>2]|0;h=J&127;K=k[I+(h<<5)>>2]|0;b=k[I+(h<<5)+4>>2]|0;j=k[I+(h<<5)+8>>2]|0;e=k[I+(h<<5)+12>>2]|0;H=I+(h<<5)+16|0;k[U>>2]=k[H>>2];k[U+4>>2]=k[H+4>>2];k[U+8>>2]=k[H+8>>2];h=k[I+(h<<5)+28>>2]|0;k[Z>>2]=g+-1;J=J+1|0;k[Y>>2]=J;if(J>>>0>255){cn(k[i>>2]|0);k[X>>2]=(k[X>>2]|0)+4;k[Y>>2]=(k[Y>>2]|0)+-128}k[c>>2]=b;k[_>>2]=j;k[V>>2]=e;k[d>>2]=k[U>>2];k[d+4>>2]=k[U+4>>2];k[d+8>>2]=k[U+8>>2];k[$>>2]=k[U>>2];k[$+4>>2]=k[U+4>>2];k[$+8>>2]=k[U+8>>2];o=Kh(a,K,c,$,h)|0;j=d+(o<<2)|0;e=k[j>>2]|0;g=k[a>>2]|0;J=g-e|0;do if(!J){if((K|0)>0){h=k[f>>2]|0;i=h+4|0;b=h+8|0;g=0;do{j=k[i>>2]|0;if((j|0)==(k[b>>2]|0))xg(h,c);else{k[j>>2]=k[c>>2];k[j+4>>2]=k[_>>2];k[j+8>>2]=k[V>>2];k[i>>2]=j+12}g=g+1|0}while((g|0)<(K|0))}}else{if(!K){g=15;break a}if(K>>>0>=3){k[$>>2]=k[c>>2];k[P>>2]=k[_>>2];k[Q>>2]=k[V>>2];i=$+(o<<2)|0;k[i>>2]=(k[i>>2]|0)+(1<>>1)-g|0;h=K-b|0;if((b|0)==(h|0)){m=b;n=b}else{K=k[R>>2]|0;g=k[S>>2]|0;i=(k[g>>2]&1<<31-K|0)!=0;K=K+1|0;k[R>>2]=K;if((K|0)==32){k[S>>2]=g+4;k[R>>2]=0}m=i?b:h;n=i?h:b}k[j>>2]=e+1;if(m|0){k[T>>2]=k[d>>2];k[T+4>>2]=k[d+4>>2];k[T+8>>2]=k[d+8>>2];j=k[c>>2]|0;e=k[_>>2]|0;l=k[V>>2]|0;b=k[W>>2]|0;i=k[X>>2]|0;K=b-i|0;g=k[Y>>2]|0;h=k[Z>>2]|0;if((((K|0)==0?0:(K<<5)+-1|0)|0)==(h+g|0)){rc(aa);g=k[Y>>2]|0;h=k[Z>>2]|0;b=k[W>>2]|0;i=k[X>>2]|0}g=h+g|0;if((b|0)==(i|0))g=0;else g=(k[i+(g>>>7<<2)>>2]|0)+((g&127)<<5)|0;k[g>>2]=m;k[g+4>>2]=j;k[g+8>>2]=e;k[g+12>>2]=l;K=g+16|0;k[K>>2]=k[T>>2];k[K+4>>2]=k[T+4>>2];k[K+8>>2]=k[T+8>>2];k[g+28>>2]=o;k[Z>>2]=(k[Z>>2]|0)+1}if(n|0){k[T>>2]=k[d>>2];k[T+4>>2]=k[d+4>>2];k[T+8>>2]=k[d+8>>2];j=k[$>>2]|0;e=k[P>>2]|0;l=k[Q>>2]|0;b=k[W>>2]|0;i=k[X>>2]|0;K=b-i|0;g=k[Y>>2]|0;h=k[Z>>2]|0;if((((K|0)==0?0:(K<<5)+-1|0)|0)==(h+g|0)){rc(aa);g=k[Y>>2]|0;h=k[Z>>2]|0;b=k[W>>2]|0;i=k[X>>2]|0}g=h+g|0;if((b|0)==(i|0))g=0;else g=(k[i+(g>>>7<<2)>>2]|0)+((g&127)<<5)|0;k[g>>2]=n;k[g+4>>2]=j;k[g+8>>2]=e;k[g+12>>2]=l;K=g+16|0;k[K>>2]=k[T>>2];k[K+4>>2]=k[T+4>>2];k[K+8>>2]=k[T+8>>2];k[g+28>>2]=o;k[Z>>2]=(k[Z>>2]|0)+1}break}u=(o|0)==2?0:o+1|0;p=(u|0)==2?0:u+1|0;I=g-(k[d+(u<<2)>>2]|0)|0;C=g-(k[d+(p<<2)>>2]|0)|0;B=k[f>>2]|0;D=B+4|0;E=B+8|0;F=$+(o<<2)|0;G=(J|0)<33;H=(J|0)>0;z=c+(o<<2)|0;A=(I|0)==0;e=$+(u<<2)|0;m=c+(u<<2)|0;n=(C|0)==0;l=$+(p<<2)|0;o=c+(p<<2)|0;p=$+(p<<2)|0;q=(C|0)<33;s=(C|0)>0;t=32-C|0;u=$+(u<<2)|0;v=(I|0)<33;w=(I|0)>0;x=32-I|0;y=32-J|0;j=0;do{k[$>>2]=0;k[$+4>>2]=0;k[$+8>>2]=0;if(!G){g=21;break a}if(!H){g=23;break a}i=k[L>>2]|0;g=32-i|0;b=k[M>>2]|0;h=k[b>>2]<>>y;k[F>>2]=g;i=i+J|0;k[L>>2]=i;if((i|0)==32){k[M>>2]=b+4;k[L>>2]=0}}else{da=J-g|0;k[L>>2]=da;i=b+4|0;k[M>>2]=i;b=32-da|0;g=(k[i>>2]|0)>>>b|h>>>(b-g|0);k[F>>2]=g}k[F>>2]=g|k[z>>2];do if(!A){if(!v){g=21;break a}if(!w){g=23;break a}i=k[L>>2]|0;g=32-i|0;b=k[M>>2]|0;h=k[b>>2]<(g|0)){da=I-g|0;k[L>>2]=da;b=b+4|0;k[M>>2]=b;da=32-da|0;g=(k[b>>2]|0)>>>da|h>>>(da-g|0);k[u>>2]=g;h=u;break}g=h>>>x;k[u>>2]=g;da=i+I|0;k[L>>2]=da;if((da|0)==32){k[M>>2]=b+4;k[L>>2]=0;h=u}else h=u}else{h=e;g=k[e>>2]|0}while(0);k[h>>2]=g|k[m>>2];do if(!n){if(!q){g=21;break a}if(!s){g=23;break a}i=k[L>>2]|0;g=32-i|0;b=k[M>>2]|0;h=k[b>>2]<(g|0)){da=C-g|0;k[L>>2]=da;b=b+4|0;k[M>>2]=b;da=32-da|0;g=(k[b>>2]|0)>>>da|h>>>(da-g|0);k[p>>2]=g;h=p;break}g=h>>>t;k[p>>2]=g;da=i+C|0;k[L>>2]=da;if((da|0)==32){k[M>>2]=b+4;k[L>>2]=0;h=p}else h=p}else{h=l;g=k[l>>2]|0}while(0);k[h>>2]=g|k[o>>2];g=k[D>>2]|0;if((g|0)==(k[E>>2]|0))xg(B,$);else{k[g>>2]=k[$>>2];k[g+4>>2]=k[N>>2];k[g+8>>2]=k[O>>2];k[D>>2]=g+12}j=j+1|0}while(j>>>0>>0)}while(0);g=k[Z>>2]|0;if(!g){g=51;break}}if((g|0)==15)Ka(13811,13849,231,13919);else if((g|0)==21)Ka(13932,13956,48,13984);else if((g|0)==23)Ka(14013,13956,49,13984);else if((g|0)==51){fg(aa);r=ba;return}}function Eb(a,b,c,d,e,f){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;f=f|0;var g=0,h=0,i=0,j=0,l=0,m=0,n=0,o=0,p=0,q=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,B=0,C=0,D=0,E=0,F=0,G=0,H=0,I=0,J=0,K=0,L=0,M=0,N=0,O=0,P=0,Q=0,R=0,S=0,T=0,U=0,V=0,W=0,X=0,Y=0,Z=0,_=0,$=0,aa=0,ba=0,da=0,ea=0,fa=0;ea=r;r=r+96|0;ba=ea+72|0;i=ea+16|0;da=ea+48|0;V=ea+32|0;$=ea+28|0;U=ea;k[i>>2]=k[d>>2];k[i+4>>2]=k[d+4>>2];k[i+8>>2]=k[d+8>>2];m=k[c>>2]|0;aa=c+4|0;j=k[aa>>2]|0;W=c+8|0;l=k[W>>2]|0;k[da>>2]=0;k[da+4>>2]=0;k[da+8>>2]=0;k[da+12>>2]=0;k[da+16>>2]=0;k[da+20>>2]=0;X=da+8|0;Y=da+4|0;Z=da+16|0;_=da+20|0;rc(da);g=k[Y>>2]|0;n=k[X>>2]|0;h=(k[_>>2]|0)+(k[Z>>2]|0)|0;if((n|0)==(g|0))g=0;else g=(k[g+(h>>>7<<2)>>2]|0)+((h&127)<<5)|0;k[g>>2]=b;k[g+4>>2]=m;k[g+8>>2]=j;k[g+12>>2]=l;T=g+16|0;k[T>>2]=k[i>>2];k[T+4>>2]=k[i+4>>2];k[T+8>>2]=k[i+8>>2];k[g+28>>2]=e;g=(k[_>>2]|0)+1|0;k[_>>2]=g;if(!g){fg(da);r=ea;return}L=a+40|0;M=a+36|0;N=ba+4|0;O=ba+8|0;P=ba+4|0;Q=ba+8|0;R=a+8|0;S=a+80|0;T=a+76|0;l=n;a:while(1){I=k[Z>>2]|0;H=g+-1|0;h=H+I|0;J=k[Y>>2]|0;G=k[J+(h>>>7<<2)>>2]|0;h=h&127;K=k[G+(h<<5)>>2]|0;i=k[G+(h<<5)+4>>2]|0;b=k[G+(h<<5)+8>>2]|0;j=k[G+(h<<5)+12>>2]|0;F=G+(h<<5)+16|0;k[V>>2]=k[F>>2];k[V+4>>2]=k[F+4>>2];k[V+8>>2]=k[F+8>>2];h=k[G+(h<<5)+28>>2]|0;k[_>>2]=H;J=l-J|0;if((1-g-I+((J|0)==0?0:(J<<5)+-1|0)|0)>>>0>255){cn(k[l+-4>>2]|0);k[X>>2]=(k[X>>2]|0)+-4}k[c>>2]=i;k[aa>>2]=b;k[W>>2]=j;k[d>>2]=k[V>>2];k[d+4>>2]=k[V+4>>2];k[d+8>>2]=k[V+8>>2];k[ba>>2]=k[V>>2];k[ba+4>>2]=k[V+4>>2];k[ba+8>>2]=k[V+8>>2];o=Jk(a,K,c,ba,h)|0;j=d+(o<<2)|0;l=k[j>>2]|0;g=k[a>>2]|0;J=g-l|0;do if(!J){if((K|0)>0){h=k[f>>2]|0;i=h+4|0;b=h+8|0;g=0;do{j=k[i>>2]|0;if((j|0)==(k[b>>2]|0))xg(h,c);else{k[j>>2]=k[c>>2];k[j+4>>2]=k[aa>>2];k[j+8>>2]=k[W>>2];k[i>>2]=j+12}g=g+1|0}while((g|0)<(K|0))}}else{if(!K){g=15;break a}if(K>>>0>=3){k[ba>>2]=k[c>>2];k[P>>2]=k[aa>>2];k[Q>>2]=k[W>>2];b=ba+(o<<2)|0;k[b>>2]=(k[b>>2]|0)+(1<>2]=0;Qh(R,b,$);b=(K>>>1)-(k[$>>2]|0)|0;h=K-b|0;if((b|0)==(h|0)){m=b;n=b}else{K=k[S>>2]|0;g=k[T>>2]|0;i=(k[g>>2]&1<<31-K|0)!=0;K=K+1|0;k[S>>2]=K;if((K|0)==32){k[T>>2]=g+4;k[S>>2]=0}m=i?b:h;n=i?h:b}k[j>>2]=l+1;if(m|0){k[U>>2]=k[d>>2];k[U+4>>2]=k[d+4>>2];k[U+8>>2]=k[d+8>>2];j=k[c>>2]|0;l=k[aa>>2]|0;e=k[W>>2]|0;b=k[X>>2]|0;i=k[Y>>2]|0;K=b-i|0;g=k[Z>>2]|0;h=k[_>>2]|0;if((((K|0)==0?0:(K<<5)+-1|0)|0)==(h+g|0)){rc(da);g=k[Z>>2]|0;h=k[_>>2]|0;b=k[X>>2]|0;i=k[Y>>2]|0}g=h+g|0;if((b|0)==(i|0))g=0;else g=(k[i+(g>>>7<<2)>>2]|0)+((g&127)<<5)|0;k[g>>2]=m;k[g+4>>2]=j;k[g+8>>2]=l;k[g+12>>2]=e;K=g+16|0;k[K>>2]=k[U>>2];k[K+4>>2]=k[U+4>>2];k[K+8>>2]=k[U+8>>2];k[g+28>>2]=o;k[_>>2]=(k[_>>2]|0)+1}if(n|0){k[U>>2]=k[d>>2];k[U+4>>2]=k[d+4>>2];k[U+8>>2]=k[d+8>>2];j=k[ba>>2]|0;l=k[P>>2]|0;e=k[Q>>2]|0;b=k[X>>2]|0;i=k[Y>>2]|0;K=b-i|0;g=k[Z>>2]|0;h=k[_>>2]|0;if((((K|0)==0?0:(K<<5)+-1|0)|0)==(h+g|0)){rc(da);g=k[Z>>2]|0;h=k[_>>2]|0;b=k[X>>2]|0;i=k[Y>>2]|0}g=h+g|0;if((b|0)==(i|0))g=0;else g=(k[i+(g>>>7<<2)>>2]|0)+((g&127)<<5)|0;k[g>>2]=n;k[g+4>>2]=j;k[g+8>>2]=l;k[g+12>>2]=e;K=g+16|0;k[K>>2]=k[U>>2];k[K+4>>2]=k[U+4>>2];k[K+8>>2]=k[U+8>>2];k[g+28>>2]=o;k[_>>2]=(k[_>>2]|0)+1}break}w=(o|0)==2?0:o+1|0;s=(w|0)==2?0:w+1|0;I=g-(k[d+(w<<2)>>2]|0)|0;C=g-(k[d+(s<<2)>>2]|0)|0;B=k[f>>2]|0;D=B+4|0;E=B+8|0;F=ba+(o<<2)|0;G=(J|0)<33;H=(J|0)>0;m=c+(o<<2)|0;n=(I|0)==0;l=ba+(w<<2)|0;o=c+(w<<2)|0;p=(C|0)==0;e=ba+(s<<2)|0;q=c+(s<<2)|0;s=ba+(s<<2)|0;t=(C|0)<33;u=(C|0)>0;v=32-C|0;w=ba+(w<<2)|0;x=(I|0)<33;y=(I|0)>0;z=32-I|0;A=32-J|0;j=0;do{k[ba>>2]=0;k[ba+4>>2]=0;k[ba+8>>2]=0;if(!G){g=21;break a}if(!H){g=23;break a}i=k[L>>2]|0;g=32-i|0;b=k[M>>2]|0;h=k[b>>2]<>>A;k[F>>2]=g;i=i+J|0;k[L>>2]=i;if((i|0)==32){k[M>>2]=b+4;k[L>>2]=0}}else{fa=J-g|0;k[L>>2]=fa;i=b+4|0;k[M>>2]=i;b=32-fa|0;g=(k[i>>2]|0)>>>b|h>>>(b-g|0);k[F>>2]=g}k[F>>2]=g|k[m>>2];do if(!n){if(!x){g=21;break a}if(!y){g=23;break a}i=k[L>>2]|0;g=32-i|0;b=k[M>>2]|0;h=k[b>>2]<(g|0)){fa=I-g|0;k[L>>2]=fa;b=b+4|0;k[M>>2]=b;fa=32-fa|0;g=(k[b>>2]|0)>>>fa|h>>>(fa-g|0);k[w>>2]=g;h=w;break}g=h>>>z;k[w>>2]=g;fa=i+I|0;k[L>>2]=fa;if((fa|0)==32){k[M>>2]=b+4;k[L>>2]=0;h=w}else h=w}else{h=l;g=k[l>>2]|0}while(0);k[h>>2]=g|k[o>>2];do if(!p){if(!t){g=21;break a}if(!u){g=23;break a}i=k[L>>2]|0;g=32-i|0;b=k[M>>2]|0;h=k[b>>2]<(g|0)){fa=C-g|0;k[L>>2]=fa;b=b+4|0;k[M>>2]=b;fa=32-fa|0;g=(k[b>>2]|0)>>>fa|h>>>(fa-g|0);k[s>>2]=g;h=s;break}g=h>>>v;k[s>>2]=g;fa=i+C|0;k[L>>2]=fa;if((fa|0)==32){k[M>>2]=b+4;k[L>>2]=0;h=s}else h=s}else{h=e;g=k[e>>2]|0}while(0);k[h>>2]=g|k[q>>2];g=k[D>>2]|0;if((g|0)==(k[E>>2]|0))xg(B,ba);else{k[g>>2]=k[ba>>2];k[g+4>>2]=k[N>>2];k[g+8>>2]=k[O>>2];k[D>>2]=g+12}j=j+1|0}while(j>>>0>>0)}while(0);g=k[_>>2]|0;if(!g){g=50;break}l=k[X>>2]|0}if((g|0)==15)Ka(13811,13849,231,13919);else if((g|0)==21)Ka(13932,13956,48,13984);else if((g|0)==23)Ka(14013,13956,49,13984);else if((g|0)==50){fg(da);r=ea;return}}function Fb(a,b,c){a=a|0;b=b|0;c=c|0;var d=0,e=0,f=0,g=0,h=0,j=0,m=0,n=0,o=0,p=0,q=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,B=0,C=0;z=r;r=r+912|0;h=z+908|0;s=z;t=z+904|0;u=z+900|0;v=z+896|0;w=z+892|0;x=z+888|0;y=z+884|0;j=z+880|0;m=z+876|0;n=z+872|0;o=z+868|0;p=z+864|0;g=b+8|0;B=g;e=k[B>>2]|0;B=k[B+4>>2]|0;q=b+16|0;f=q;d=k[f>>2]|0;f=sl(d|0,k[f+4>>2]|0,4,0)|0;A=M;if((B|0)<(A|0)|(B|0)==(A|0)&e>>>0>>0){B=0;r=z;return B|0}B=(k[b>>2]|0)+d|0;B=l[B>>0]|l[B+1>>0]<<8|l[B+2>>0]<<16|l[B+3>>0]<<24;i[a>>0]=B;i[a+1>>0]=B>>8;i[a+2>>0]=B>>16;i[a+3>>0]=B>>24;B=q;f=k[B>>2]|0;B=k[B+4>>2]|0;d=sl(f|0,B|0,4,0)|0;e=q;k[e>>2]=d;k[e+4>>2]=M;e=g;A=k[e>>2]|0;e=k[e+4>>2]|0;B=sl(f|0,B|0,8,0)|0;f=M;if((e|0)<(f|0)|(e|0)==(f|0)&A>>>0>>0){B=0;r=z;return B|0}B=a+4|0;e=(k[b>>2]|0)+d|0;e=l[e>>0]|l[e+1>>0]<<8|l[e+2>>0]<<16|l[e+3>>0]<<24;i[B>>0]=e;i[B+1>>0]=e>>8;i[B+2>>0]=e>>16;i[B+3>>0]=e>>24;B=q;e=k[B>>2]|0;B=k[B+4>>2]|0;d=sl(e|0,B|0,4,0)|0;f=q;k[f>>2]=d;k[f+4>>2]=M;f=a+12|0;C=g;A=k[C>>2]|0;C=k[C+4>>2]|0;B=sl(e|0,B|0,8,0)|0;e=M;if((C|0)<(e|0)|(C|0)==(e|0)&A>>>0>>0){C=0;r=z;return C|0}e=(k[b>>2]|0)+d|0;e=l[e>>0]|l[e+1>>0]<<8|l[e+2>>0]<<16|l[e+3>>0]<<24;i[f>>0]=e;i[f+1>>0]=e>>8;i[f+2>>0]=e>>16;i[f+3>>0]=e>>24;C=q;A=k[C>>2]|0;C=k[C+4>>2]|0;d=sl(A|0,C|0,4,0)|0;B=q;k[B>>2]=d;k[B+4>>2]=M;B=k[g>>2]|0;g=k[g+4>>2]|0;C=sl(A|0,C|0,8,0)|0;A=M;if((g|0)<(A|0)|(g|0)==(A|0)&B>>>0>>0){C=0;r=z;return C|0}B=a+16|0;d=(k[b>>2]|0)+d|0;d=l[d>>0]|l[d+1>>0]<<8|l[d+2>>0]<<16|l[d+3>>0]<<24;i[B>>0]=d;i[B+1>>0]=d>>8;i[B+2>>0]=d>>16;i[B+3>>0]=d>>24;B=q;B=sl(k[B>>2]|0,k[B+4>>2]|0,4,0)|0;C=q;k[C>>2]=B;k[C+4>>2]=M;a:do if(e|0)do switch(d|0){case 0:{sh(c,e);jk(s);k[t>>2]=c;k[h>>2]=k[t>>2];me(s,b,h)|0;ej(s+68|0);ej(s+48|0);ej(s+28|0);ej(s+8|0);break a}case 1:{sh(c,e);jk(s);k[u>>2]=c;k[h>>2]=k[u>>2];me(s,b,h)|0;ej(s+68|0);ej(s+48|0);ej(s+28|0);ej(s+8|0);break a}case 2:{sh(c,e);kk(s);k[v>>2]=c;k[h>>2]=k[v>>2];ne(s,b,h)|0;ej(s+64|0);ej(s+44|0);ej(s+24|0);fn(s+8|0);break a}case 3:{sh(c,e);kk(s);k[w>>2]=c;k[h>>2]=k[w>>2];ne(s,b,h)|0;ej(s+64|0);ej(s+44|0);ej(s+24|0);fn(s+8|0);break a}case 4:{sh(c,e);Xj(s);k[x>>2]=c;k[h>>2]=k[x>>2];$d(s,b,h)|0;ej(s+576|0);ej(s+556|0);ej(s+536|0);fn(s+520|0);Eh(s+8|0);break a}case 5:{sh(c,e);Xj(s);k[y>>2]=c;k[h>>2]=k[y>>2];$d(s,b,h)|0;ej(s+576|0);ej(s+556|0);ej(s+536|0);fn(s+520|0);Eh(s+8|0);break a}case 6:{sh(c,e);Xj(s);k[j>>2]=c;k[h>>2]=k[j>>2];_d(s,b,h)|0;ej(s+576|0);ej(s+556|0);ej(s+536|0);fn(s+520|0);Eh(s+8|0);break a}case 7:{sh(c,e);Xj(s);k[m>>2]=c;k[h>>2]=k[m>>2];_d(s,b,h)|0;ej(s+576|0);ej(s+556|0);ej(s+536|0);fn(s+520|0);Eh(s+8|0);break a}case 8:{sh(c,e);Qj(s);k[n>>2]=c;k[h>>2]=k[n>>2];Yd(s,b,h)|0;ej(s+840|0);ej(s+820|0);ej(s+800|0);Fm(s+776|0);bg(s+8|0);break a}case 9:{sh(c,e);Qj(s);k[o>>2]=c;k[h>>2]=k[o>>2];Yd(s,b,h)|0;ej(s+840|0);ej(s+820|0);ej(s+800|0);Fm(s+776|0);bg(s+8|0);break a}default:{sh(c,e);Qj(s);k[p>>2]=c;k[h>>2]=k[p>>2];Xd(s,b,h)|0;ej(s+840|0);ej(s+820|0);ej(s+800|0);Fm(s+776|0);bg(s+8|0);break a}}while(0);while(0);if((((k[c+4>>2]|0)-(k[c>>2]|0)|0)/12|0|0)==(k[f>>2]|0)){C=1;r=z;return C|0}else Ka(13673,13716,117,13780);return 0}function Gb(a){a=a|0;var b=0,c=0,d=0,e=0,f=0,g=0,h=0,i=0,j=0,l=0,m=0,n=0,o=0,p=0,q=0;if(!a)return;c=a+-8|0;g=k[4622]|0;if(c>>>0>>0)Ba();a=k[a+-4>>2]|0;b=a&3;if((b|0)==1)Ba();d=a&-8;n=c+d|0;do if(!(a&1)){a=k[c>>2]|0;if(!b)return;j=c+(0-a)|0;i=a+d|0;if(j>>>0>>0)Ba();if((j|0)==(k[4623]|0)){a=n+4|0;b=k[a>>2]|0;if((b&3|0)!=3){q=j;e=i;break}k[4620]=i;k[a>>2]=b&-2;k[j+4>>2]=i|1;k[j+i>>2]=i;return}d=a>>>3;if(a>>>0<256){b=k[j+8>>2]|0;c=k[j+12>>2]|0;a=18512+(d<<1<<2)|0;if((b|0)!=(a|0)){if(b>>>0>>0)Ba();if((k[b+12>>2]|0)!=(j|0))Ba()}if((c|0)==(b|0)){k[4618]=k[4618]&~(1<>>0>>0)Ba();a=c+8|0;if((k[a>>2]|0)==(j|0))f=a;else Ba()}else f=c+8|0;k[b+12>>2]=c;k[f>>2]=b;q=j;e=i;break}f=k[j+24>>2]|0;c=k[j+12>>2]|0;do if((c|0)==(j|0)){c=j+16|0;b=c+4|0;a=k[b>>2]|0;if(!a){a=k[c>>2]|0;if(!a){h=0;break}else b=c}while(1){c=a+20|0;d=k[c>>2]|0;if(d|0){a=d;b=c;continue}c=a+16|0;d=k[c>>2]|0;if(!d)break;else{a=d;b=c}}if(b>>>0>>0)Ba();else{k[b>>2]=0;h=a;break}}else{d=k[j+8>>2]|0;if(d>>>0>>0)Ba();a=d+12|0;if((k[a>>2]|0)!=(j|0))Ba();b=c+8|0;if((k[b>>2]|0)==(j|0)){k[a>>2]=c;k[b>>2]=d;h=c;break}else Ba()}while(0);if(f){a=k[j+28>>2]|0;b=18776+(a<<2)|0;if((j|0)==(k[b>>2]|0)){k[b>>2]=h;if(!h){k[4619]=k[4619]&~(1<>>0<(k[4622]|0)>>>0)Ba();a=f+16|0;if((k[a>>2]|0)==(j|0))k[a>>2]=h;else k[f+20>>2]=h;if(!h){q=j;e=i;break}}c=k[4622]|0;if(h>>>0>>0)Ba();k[h+24>>2]=f;a=j+16|0;b=k[a>>2]|0;do if(b|0)if(b>>>0>>0)Ba();else{k[h+16>>2]=b;k[b+24>>2]=h;break}while(0);a=k[a+4>>2]|0;if(a)if(a>>>0<(k[4622]|0)>>>0)Ba();else{k[h+20>>2]=a;k[a+24>>2]=h;q=j;e=i;break}else{q=j;e=i}}else{q=j;e=i}}else{q=c;e=d}while(0);if(q>>>0>=n>>>0)Ba();a=n+4|0;b=k[a>>2]|0;if(!(b&1))Ba();if(!(b&2)){if((n|0)==(k[4624]|0)){p=(k[4621]|0)+e|0;k[4621]=p;k[4624]=q;k[q+4>>2]=p|1;if((q|0)!=(k[4623]|0))return;k[4623]=0;k[4620]=0;return}if((n|0)==(k[4623]|0)){p=(k[4620]|0)+e|0;k[4620]=p;k[4623]=q;k[q+4>>2]=p|1;k[q+p>>2]=p;return}e=(b&-8)+e|0;d=b>>>3;do if(b>>>0>=256){f=k[n+24>>2]|0;a=k[n+12>>2]|0;do if((a|0)==(n|0)){c=n+16|0;b=c+4|0;a=k[b>>2]|0;if(!a){a=k[c>>2]|0;if(!a){m=0;break}else b=c}while(1){c=a+20|0;d=k[c>>2]|0;if(d|0){a=d;b=c;continue}c=a+16|0;d=k[c>>2]|0;if(!d)break;else{a=d;b=c}}if(b>>>0<(k[4622]|0)>>>0)Ba();else{k[b>>2]=0;m=a;break}}else{b=k[n+8>>2]|0;if(b>>>0<(k[4622]|0)>>>0)Ba();c=b+12|0;if((k[c>>2]|0)!=(n|0))Ba();d=a+8|0;if((k[d>>2]|0)==(n|0)){k[c>>2]=a;k[d>>2]=b;m=a;break}else Ba()}while(0);if(f|0){a=k[n+28>>2]|0;b=18776+(a<<2)|0;if((n|0)==(k[b>>2]|0)){k[b>>2]=m;if(!m){k[4619]=k[4619]&~(1<>>0<(k[4622]|0)>>>0)Ba();a=f+16|0;if((k[a>>2]|0)==(n|0))k[a>>2]=m;else k[f+20>>2]=m;if(!m)break}c=k[4622]|0;if(m>>>0>>0)Ba();k[m+24>>2]=f;a=n+16|0;b=k[a>>2]|0;do if(b|0)if(b>>>0>>0)Ba();else{k[m+16>>2]=b;k[b+24>>2]=m;break}while(0);a=k[a+4>>2]|0;if(a|0)if(a>>>0<(k[4622]|0)>>>0)Ba();else{k[m+20>>2]=a;k[a+24>>2]=m;break}}}else{b=k[n+8>>2]|0;c=k[n+12>>2]|0;a=18512+(d<<1<<2)|0;if((b|0)!=(a|0)){if(b>>>0<(k[4622]|0)>>>0)Ba();if((k[b+12>>2]|0)!=(n|0))Ba()}if((c|0)==(b|0)){k[4618]=k[4618]&~(1<>>0<(k[4622]|0)>>>0)Ba();a=c+8|0;if((k[a>>2]|0)==(n|0))l=a;else Ba()}else l=c+8|0;k[b+12>>2]=c;k[l>>2]=b}while(0);k[q+4>>2]=e|1;k[q+e>>2]=e;if((q|0)==(k[4623]|0)){k[4620]=e;return}}else{k[a>>2]=b&-2;k[q+4>>2]=e|1;k[q+e>>2]=e}a=e>>>3;if(e>>>0<256){c=18512+(a<<1<<2)|0;b=k[4618]|0;a=1<>2]|0;if(b>>>0<(k[4622]|0)>>>0)Ba();else{o=b;p=a}}else{k[4618]=b|a;o=c;p=c+8|0}k[p>>2]=q;k[o+12>>2]=q;k[q+8>>2]=o;k[q+12>>2]=c;return}a=e>>>8;if(a)if(e>>>0>16777215)a=31;else{o=(a+1048320|0)>>>16&8;p=a<>>16&4;p=p<>>16&2;a=14-(n|o|a)+(p<>>15)|0;a=e>>>(a+7|0)&1|a<<1}else a=0;d=18776+(a<<2)|0;k[q+28>>2]=a;k[q+20>>2]=0;k[q+16>>2]=0;b=k[4619]|0;c=1<>>1)|0);d=k[d>>2]|0;while(1){if((k[d+4>>2]&-8|0)==(e|0)){a=130;break}c=d+16+(b>>>31<<2)|0;a=k[c>>2]|0;if(!a){a=127;break}else{b=b<<1;d=a}}if((a|0)==127)if(c>>>0<(k[4622]|0)>>>0)Ba();else{k[c>>2]=q;k[q+24>>2]=d;k[q+12>>2]=q;k[q+8>>2]=q;break}else if((a|0)==130){a=d+8|0;b=k[a>>2]|0;p=k[4622]|0;if(b>>>0>=p>>>0&d>>>0>=p>>>0){k[b+12>>2]=q;k[a>>2]=q;k[q+8>>2]=b;k[q+12>>2]=d;k[q+24>>2]=0;break}else Ba()}}else{k[4619]=b|c;k[d>>2]=q;k[q+24>>2]=d;k[q+12>>2]=q;k[q+8>>2]=q}while(0);q=(k[4626]|0)+-1|0;k[4626]=q;if(!q)a=18928;else return;while(1){a=k[a>>2]|0;if(!a)break;else a=a+8|0}k[4626]=-1;return}function Hb(a,b,c,d,e,f){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;f=f|0;var g=0,h=0,i=0,j=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,B=0,C=0,D=0,E=0,F=0,G=0,H=0,I=0,J=0,K=0,L=0;L=a+8|0;k[L>>2]=e;do if(d|0){f=k[b>>2]|0;l=a+16|0;k[l>>2]=f;j=a+12|0;k[j>>2]=f;if((d|0)>1){i=1;h=f;while(1){g=k[b+(i<<2)>>2]|0;if((g|0)>=(h|0))if((g|0)>(f|0)){k[l>>2]=g;f=g;g=h}else g=h;else k[j>>2]=g;i=i+1|0;if((i|0)==(d|0))break;else h=g}}else g=f;F=1-g+f|0;k[a+20>>2]=F;f=(F|0)/2|0;g=a+24|0;k[g>>2]=f;k[a+28>>2]=0-f;if(!(F&1))k[g>>2]=f+-1;f=a+32|0;g=a+36|0;j=k[g>>2]|0;h=k[f>>2]|0;i=j-h>>2;if(i>>>0>>0){jh(f,e-i|0);break}if(i>>>0>e>>>0?(m=h+(e<<2)|0,(j|0)!=(m|0)):0)k[g>>2]=j+(~((j+-4-m|0)>>>2)<<2)}while(0);s=k[a+48>>2]|0;t=k[a+52>>2]|0;u=e>>>0>1073741823?-1:e<<2;E=$m(u)|0;Vi(E|0,0,u|0)|0;F=$m(u)|0;Vi(F|0,0,u|0)|0;u=a+56|0;i=k[u>>2]|0;h=k[i+4>>2]|0;g=k[i>>2]|0;f=h-g|0;a:do if((f|0)>4){v=(e|0)>0;w=a+16|0;x=a+32|0;y=a+12|0;z=a+28|0;A=a+20|0;B=a+24|0;C=s+12|0;D=e<<2;q=f>>2;f=i;while(1){r=q+-1|0;if(h-g>>2>>>0<=r>>>0)break;p=k[g+(r<<2)>>2]|0;if(v)Vi(E|0,0,D|0)|0;if((p|0)>-1){o=k[C>>2]|0;m=0;n=p;while(1){g=k[o+(n<<2)>>2]|0;if((g|0)>=0){i=k[s>>2]|0;h=(g>>>0)%3|0;l=k[t>>2]|0;d=k[l+(k[i+(((g>>>0)/3|0)*12|0)+(h<<2)>>2]<<2)>>2]|0;f=g+1|0;f=((f|0)%3|0|0)==0?g+-2|0:f;if((f|0)<0)f=-1073741824;else f=k[i+(((f>>>0)/3|0)*12|0)+(((f>>>0)%3|0)<<2)>>2]|0;j=k[l+(f<<2)>>2]|0;f=((h|0)==0?2:-1)+g|0;if((f|0)<0)f=-1073741824;else f=k[i+(((f>>>0)/3|0)*12|0)+(((f>>>0)%3|0)<<2)>>2]|0;f=k[l+(f<<2)>>2]|0;if((d|0)<(r|0)&(j|0)<(r|0)&(f|0)<(r|0)){i=$(d,e)|0;h=$(j,e)|0;g=$(f,e)|0;if(v){f=0;do{k[F+(f<<2)>>2]=(k[b+(f+g<<2)>>2]|0)+(k[b+(f+h<<2)>>2]|0)-(k[b+(f+i<<2)>>2]|0);f=f+1|0}while((f|0)!=(e|0));if(v){f=0;do{d=E+(f<<2)|0;k[d>>2]=(k[d>>2]|0)+(k[F+(f<<2)>>2]|0);f=f+1|0}while((f|0)!=(e|0))}}g=m+1|0}else g=m}else g=m;f=(((n>>>0)%3|0|0)==0?2:-1)+n|0;do if((f|0)>=0){f=k[o+(f<<2)>>2]|0;if((f|0)>=0)if(!((f>>>0)%3|0)){f=f+2|0;break}else{f=f+-1|0;break}}while(0);n=(f|0)==(p|0)?-1073741824:f;if((n|0)<=-1)break;else m=g}d=$(r,e)|0;if(g){if(v){f=0;do{p=E+(f<<2)|0;k[p>>2]=(k[p>>2]|0)/(g|0)|0;f=f+1|0}while((f|0)!=(e|0))}l=b+(d<<2)|0;if((k[L>>2]|0)>0){j=0;do{i=k[E+(j<<2)>>2]|0;f=k[w>>2]|0;do if((i|0)<=(f|0)){f=k[y>>2]|0;g=k[x>>2]|0;h=g+(j<<2)|0;if((i|0)<(f|0)){k[h>>2]=f;h=g;break}else{k[h>>2]=i;h=g;break}}else{h=k[x>>2]|0;k[h+(j<<2)>>2]=f}while(0);j=j+1|0;f=k[L>>2]|0}while((j|0)<(f|0));if((f|0)>0){f=0;do{k[c+(f+d<<2)>>2]=(k[l+(f<<2)>>2]|0)-(k[h+(f<<2)>>2]|0);f=f+1|0;g=k[L>>2]|0}while((f|0)<(g|0));if((g|0)>0){f=0;do{g=c+(f+d<<2)|0;h=k[g>>2]|0;if((h|0)>=(k[z>>2]|0)){if((h|0)>(k[B>>2]|0))k[g>>2]=h-(k[A>>2]|0)}else k[g>>2]=(k[A>>2]|0)+h;f=f+1|0}while((f|0)<(k[L>>2]|0))}}}}else{H=d;J=46}}else{H=$(r,e)|0;J=46}if((J|0)==46?(J=0,G=b+(H<<2)|0,I=b+(($(q+-2|0,e)|0)<<2)|0,(k[L>>2]|0)>0):0){j=0;do{i=k[I+(j<<2)>>2]|0;f=k[w>>2]|0;do if((i|0)<=(f|0)){f=k[y>>2]|0;g=k[x>>2]|0;h=g+(j<<2)|0;if((i|0)<(f|0)){k[h>>2]=f;h=g;break}else{k[h>>2]=i;h=g;break}}else{h=k[x>>2]|0;k[h+(j<<2)>>2]=f}while(0);j=j+1|0;f=k[L>>2]|0}while((j|0)<(f|0));if((f|0)>0){f=0;do{k[c+(f+H<<2)>>2]=(k[G+(f<<2)>>2]|0)-(k[h+(f<<2)>>2]|0);f=f+1|0;g=k[L>>2]|0}while((f|0)<(g|0));if((g|0)>0){f=0;do{g=c+(f+H<<2)|0;h=k[g>>2]|0;if((h|0)>=(k[z>>2]|0)){if((h|0)>(k[B>>2]|0))k[g>>2]=h-(k[A>>2]|0)}else k[g>>2]=(k[A>>2]|0)+h;f=f+1|0}while((f|0)<(k[L>>2]|0))}}}if((r|0)<=1){K=E;break a}f=k[u>>2]|0;q=r;g=k[f>>2]|0;h=k[f+4>>2]|0}gm(f)}else K=E;while(0);if((e|0)>0)Vi(E|0,0,e<<2|0)|0;if((k[L>>2]|0)<=0){an(F);an(E);return 1}l=a+16|0;d=a+32|0;m=a+12|0;j=0;do{i=k[K+(j<<2)>>2]|0;f=k[l>>2]|0;do if((i|0)<=(f|0)){f=k[m>>2]|0;g=k[d>>2]|0;h=g+(j<<2)|0;if((i|0)<(f|0)){k[h>>2]=f;h=g;break}else{k[h>>2]=i;h=g;break}}else{h=k[d>>2]|0;k[h+(j<<2)>>2]=f}while(0);j=j+1|0;f=k[L>>2]|0}while((j|0)<(f|0));if((f|0)>0)f=0;else{an(F);an(E);return 1}do{k[c+(f<<2)>>2]=(k[b+(f<<2)>>2]|0)-(k[h+(f<<2)>>2]|0);f=f+1|0;g=k[L>>2]|0}while((f|0)<(g|0));if((g|0)<=0){an(F);an(E);return 1}j=a+28|0;l=a+20|0;g=a+24|0;f=0;do{h=c+(f<<2)|0;i=k[h>>2]|0;if((i|0)>=(k[j>>2]|0)){if((i|0)>(k[g>>2]|0))k[h>>2]=i-(k[l>>2]|0)}else k[h>>2]=(k[l>>2]|0)+i;f=f+1|0}while((f|0)<(k[L>>2]|0));an(F);an(E);return 1}function Ib(a,b,c,d,e,f){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;f=f|0;var g=0,h=0,i=0,j=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,B=0,C=0,D=0,E=0,F=0,G=0,H=0,I=0,J=0,K=0,L=0,M=0,N=0;N=a+8|0;k[N>>2]=e;do if(d|0){f=k[b>>2]|0;l=a+16|0;k[l>>2]=f;j=a+12|0;k[j>>2]=f;if((d|0)>1){i=1;h=f;while(1){g=k[b+(i<<2)>>2]|0;if((g|0)>=(h|0))if((g|0)>(f|0)){k[l>>2]=g;f=g;g=h}else g=h;else k[j>>2]=g;i=i+1|0;if((i|0)==(d|0))break;else h=g}}else g=f;D=1-g+f|0;k[a+20>>2]=D;f=(D|0)/2|0;g=a+24|0;k[g>>2]=f;k[a+28>>2]=0-f;if(!(D&1))k[g>>2]=f+-1;f=a+32|0;g=a+36|0;j=k[g>>2]|0;h=k[f>>2]|0;i=j-h>>2;if(i>>>0>>0){jh(f,e-i|0);break}if(i>>>0>e>>>0?(m=h+(e<<2)|0,(j|0)!=(m|0)):0)k[g>>2]=j+(~((j+-4-m|0)>>>2)<<2)}while(0);p=k[a+48>>2]|0;q=k[a+52>>2]|0;r=e>>>0>1073741823?-1:e<<2;C=$m(r)|0;Vi(C|0,0,r|0)|0;D=$m(r)|0;Vi(D|0,0,r|0)|0;r=a+56|0;i=k[r>>2]|0;h=k[i+4>>2]|0;g=k[i>>2]|0;f=h-g|0;a:do if((f|0)>4){s=(e|0)>0;t=a+16|0;u=a+32|0;v=a+12|0;w=a+28|0;x=a+20|0;y=a+24|0;z=p+64|0;A=p+28|0;B=e<<2;n=f>>2;f=i;while(1){o=n+-1|0;if(h-g>>2>>>0<=o>>>0)break;m=k[g+(o<<2)>>2]|0;if(s)Vi(C|0,0,B|0)|0;if((m|0)>-1){d=k[p>>2]|0;j=0;l=m;do{if(((k[d+(l>>>5<<2)>>2]&1<<(l&31)|0)==0?(E=k[(k[(k[z>>2]|0)+12>>2]|0)+(l<<2)>>2]|0,(E|0)>=0):0)?(H=k[A>>2]|0,i=k[q>>2]|0,F=k[i+(k[H+(E<<2)>>2]<<2)>>2]|0,G=E+1|0,G=k[i+(k[H+((((G|0)%3|0|0)==0?E+-2|0:G)<<2)>>2]<<2)>>2]|0,H=k[i+(k[H+((((E>>>0)%3|0|0)==0?2:-1)+E<<2)>>2]<<2)>>2]|0,(F|0)<(o|0)&(G|0)<(o|0)&(H|0)<(o|0)):0){g=$(F,e)|0;h=$(G,e)|0;i=$(H,e)|0;if(s){f=0;do{k[D+(f<<2)>>2]=(k[b+(f+i<<2)>>2]|0)+(k[b+(f+h<<2)>>2]|0)-(k[b+(f+g<<2)>>2]|0);f=f+1|0}while((f|0)!=(e|0));if(s){f=0;do{i=C+(f<<2)|0;k[i>>2]=(k[i>>2]|0)+(k[D+(f<<2)>>2]|0);f=f+1|0}while((f|0)!=(e|0))}}j=j+1|0}f=(((l>>>0)%3|0|0)==0?2:-1)+l|0;do if(!(k[d+(f>>>5<<2)>>2]&1<<(f&31))){if((f|0)>=0){f=k[(k[(k[z>>2]|0)+12>>2]|0)+(f<<2)>>2]|0;if((f|0)>=0)if(!((f>>>0)%3|0)){f=f+2|0;break}else{f=f+-1|0;break}}}else f=-1073741824;while(0);l=(f|0)==(m|0)?-1073741824:f}while((l|0)>-1);d=$(o,e)|0;if(j){if(s){f=0;do{m=C+(f<<2)|0;k[m>>2]=(k[m>>2]|0)/(j|0)|0;f=f+1|0}while((f|0)!=(e|0))}l=b+(d<<2)|0;if((k[N>>2]|0)>0){j=0;do{i=k[C+(j<<2)>>2]|0;f=k[t>>2]|0;do if((i|0)<=(f|0)){f=k[v>>2]|0;g=k[u>>2]|0;h=g+(j<<2)|0;if((i|0)<(f|0)){k[h>>2]=f;h=g;break}else{k[h>>2]=i;h=g;break}}else{h=k[u>>2]|0;k[h+(j<<2)>>2]=f}while(0);j=j+1|0;f=k[N>>2]|0}while((j|0)<(f|0));if((f|0)>0){f=0;do{k[c+(f+d<<2)>>2]=(k[l+(f<<2)>>2]|0)-(k[h+(f<<2)>>2]|0);f=f+1|0;g=k[N>>2]|0}while((f|0)<(g|0));if((g|0)>0){f=0;do{g=c+(f+d<<2)|0;h=k[g>>2]|0;if((h|0)>=(k[w>>2]|0)){if((h|0)>(k[y>>2]|0))k[g>>2]=h-(k[x>>2]|0)}else k[g>>2]=(k[x>>2]|0)+h;f=f+1|0}while((f|0)<(k[N>>2]|0))}}}}else{J=d;L=44}}else{J=$(o,e)|0;L=44}if((L|0)==44?(L=0,I=b+(J<<2)|0,K=b+(($(n+-2|0,e)|0)<<2)|0,(k[N>>2]|0)>0):0){j=0;do{i=k[K+(j<<2)>>2]|0;f=k[t>>2]|0;do if((i|0)<=(f|0)){f=k[v>>2]|0;g=k[u>>2]|0;h=g+(j<<2)|0;if((i|0)<(f|0)){k[h>>2]=f;h=g;break}else{k[h>>2]=i;h=g;break}}else{h=k[u>>2]|0;k[h+(j<<2)>>2]=f}while(0);j=j+1|0;f=k[N>>2]|0}while((j|0)<(f|0));if((f|0)>0){f=0;do{k[c+(f+J<<2)>>2]=(k[I+(f<<2)>>2]|0)-(k[h+(f<<2)>>2]|0);f=f+1|0;g=k[N>>2]|0}while((f|0)<(g|0));if((g|0)>0){f=0;do{g=c+(f+J<<2)|0;h=k[g>>2]|0;if((h|0)>=(k[w>>2]|0)){if((h|0)>(k[y>>2]|0))k[g>>2]=h-(k[x>>2]|0)}else k[g>>2]=(k[x>>2]|0)+h;f=f+1|0}while((f|0)<(k[N>>2]|0))}}}if((o|0)<=1){M=C;break a}f=k[r>>2]|0;n=o;g=k[f>>2]|0;h=k[f+4>>2]|0}gm(f)}else M=C;while(0);if((e|0)>0)Vi(C|0,0,e<<2|0)|0;if((k[N>>2]|0)<=0){an(D);an(C);return 1}l=a+16|0;d=a+32|0;m=a+12|0;j=0;do{i=k[M+(j<<2)>>2]|0;f=k[l>>2]|0;do if((i|0)<=(f|0)){f=k[m>>2]|0;g=k[d>>2]|0;h=g+(j<<2)|0;if((i|0)<(f|0)){k[h>>2]=f;h=g;break}else{k[h>>2]=i;h=g;break}}else{h=k[d>>2]|0;k[h+(j<<2)>>2]=f}while(0);j=j+1|0;f=k[N>>2]|0}while((j|0)<(f|0));if((f|0)>0)f=0;else{an(D);an(C);return 1}do{k[c+(f<<2)>>2]=(k[b+(f<<2)>>2]|0)-(k[h+(f<<2)>>2]|0);f=f+1|0;g=k[N>>2]|0}while((f|0)<(g|0));if((g|0)<=0){an(D);an(C);return 1}j=a+28|0;l=a+20|0;g=a+24|0;f=0;do{h=c+(f<<2)|0;i=k[h>>2]|0;if((i|0)>=(k[j>>2]|0)){if((i|0)>(k[g>>2]|0))k[h>>2]=i-(k[l>>2]|0)}else k[h>>2]=(k[l>>2]|0)+i;f=f+1|0}while((f|0)<(k[N>>2]|0));an(D);an(C);return 1}function Jb(a,b,c,d,e,f){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;f=f|0;var g=0,h=0,i=0,j=0,l=0,m=0,n=0,o=0,p=0,q=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,B=0,C=0,D=0,E=0,F=0,G=0,H=0,I=0,J=0,K=0,L=0;L=r;r=r+64|0;K=L+16|0;G=L;D=a+8|0;k[D>>2]=e;d=K;f=d+48|0;do{k[d>>2]=0;d=d+4|0}while((d|0)<(f|0));k[G>>2]=0;if(!e){d=0;f=0}else{Ag(K,e,G);d=k[K+12>>2]|0;f=k[K+16>>2]|0}k[G>>2]=0;g=K+16|0;h=f-d>>2;if(h>>>0>=e>>>0){if(h>>>0>e>>>0?(i=d+(e<<2)|0,(f|0)!=(i|0)):0)k[g>>2]=f+(~((f+-4-i|0)>>>2)<<2)}else Ag(K+12|0,e-h|0,G);d=K+24|0;k[G>>2]=0;f=K+28|0;i=k[f>>2]|0;h=k[d>>2]|0;g=i-h>>2;if(g>>>0>=e>>>0){if(g>>>0>e>>>0?(j=h+(e<<2)|0,(i|0)!=(j|0)):0)k[f>>2]=i+(~((i+-4-j|0)>>>2)<<2)}else Ag(d,e-g|0,G);d=K+36|0;k[G>>2]=0;f=K+40|0;i=k[f>>2]|0;h=k[d>>2]|0;g=i-h>>2;if(g>>>0>=e>>>0){if(g>>>0>e>>>0?(l=h+(e<<2)|0,(i|0)!=(l|0)):0)k[f>>2]=i+(~((i+-4-l|0)>>>2)<<2)}else Ag(d,e-g|0,G);Sg(D,k[K>>2]|0,b,c,0);v=k[a+24>>2]|0;B=k[a+28>>2]|0;C=xk(16)|0;k[C>>2]=0;k[C+4>>2]=0;k[C+8>>2]=0;k[C+12>>2]=0;bj(G,e);z=a+32|0;g=k[z>>2]|0;h=k[g+4>>2]|0;f=k[g>>2]|0;A=h-f|0;y=A>>2;a:do if((A|0)>4){u=v+64|0;w=v+28|0;x=(e|0)>0;A=e<<2;d=1;while(1){if(h-f>>2>>>0<=d>>>0)break;p=k[f+(d<<2)>>2]|0;o=p+((p|0)<0?0:((p>>>0)%3|0|0)==0?2:-1)|0;q=o>>>5;s=1<<(o&31);t=(o|0)<0;n=1;f=0;g=p;b:while(1){do{if((g|0)<=-1){o=41;break b}i=k[K+(f*12|0)>>2]|0;if(((k[(k[v>>2]|0)+(g>>>5<<2)>>2]&1<<(g&31)|0)==0?(F=k[(k[(k[u>>2]|0)+12>>2]|0)+(g<<2)>>2]|0,(F|0)>=0):0)?(J=k[w>>2]|0,m=k[B>>2]|0,H=k[m+(k[J+(F<<2)>>2]<<2)>>2]|0,I=F+1|0,I=k[m+(k[J+((((I|0)%3|0|0)==0?F+-2|0:I)<<2)>>2]<<2)>>2]|0,J=k[m+(k[J+((((F>>>0)%3|0|0)==0?2:-1)+F<<2)>>2]<<2)>>2]|0,(H|0)<(d|0)&(I|0)<(d|0)&(J|0)<(d|0)):0){j=$(H,e)|0;l=$(I,e)|0;m=$(J,e)|0;if(x){h=0;do{k[i+(h<<2)>>2]=(k[c+(h+m<<2)>>2]|0)+(k[c+(h+l<<2)>>2]|0)-(k[c+(h+j<<2)>>2]|0);h=h+1|0}while((h|0)!=(e|0))}f=f+1|0;if((f|0)==4){f=4;o=22;break b}}do if(n){h=g+1|0;g=((h|0)%3|0|0)==0?g+-2|0:h;h=k[v>>2]|0;if(!(k[h+(g>>>5<<2)>>2]&1<<(g&31))){if((g|0)>=0){g=k[(k[(k[u>>2]|0)+12>>2]|0)+(g<<2)>>2]|0;i=g+1|0;if((g|0)>=0)g=((i|0)%3|0|0)==0?g+-2|0:i}}else g=-1073741824}else{g=(((g>>>0)%3|0|0)==0?2:-1)+g|0;h=k[v>>2]|0;if(!(k[h+(g>>>5<<2)>>2]&1<<(g&31))){if((g|0)>=0){g=k[(k[(k[u>>2]|0)+12>>2]|0)+(g<<2)>>2]|0;if((g|0)>=0)if(!((g>>>0)%3|0)){g=g+2|0;break}else{g=g+-1|0;break}}}else g=-1073741824}while(0);if((g|0)==(p|0)){o=41;break b}}while(!(n&(g|0)<0));g=(s&k[h+(q<<2)>>2]|0)!=0;if(g|t){n=0;g=g?-1073741824:o;continue}g=k[(k[(k[u>>2]|0)+12>>2]|0)+(o<<2)>>2]|0;if((g|0)<0){n=0;continue}if(!((g>>>0)%3|0)){n=0;g=g+2|0;continue}else{n=0;g=g+-1|0;continue}}if((o|0)==41)if((f|0)>0)o=22;else{f=$(d,e)|0;o=53}if((o|0)==22){o=0;if(x){Vi(k[G>>2]|0,0,A|0)|0;m=f+-1|0;l=C+(m<<2)|0;m=k[a+36+(m*12|0)>>2]|0;n=k[G>>2]|0;j=0;g=0;do{t=k[l>>2]|0;k[l>>2]=t+1;if(!(k[m+(t>>>5<<2)>>2]&1<<(t&31))){i=k[K+(j*12|0)>>2]|0;h=0;do{t=n+(h<<2)|0;k[t>>2]=(k[t>>2]|0)+(k[i+(h<<2)>>2]|0);h=h+1|0}while((h|0)!=(e|0));g=g+1|0}j=j+1|0}while((j|0)!=(f|0))}else{j=f+-1|0;i=C+(j<<2)|0;j=k[a+36+(j*12|0)>>2]|0;h=0;g=0;l=k[i>>2]|0;do{t=l;l=l+1|0;k[i>>2]=l;g=g+((k[j+(t>>>5<<2)>>2]&1<<(t&31)|0)==0&1)|0;h=h+1|0}while((h|0)!=(f|0))}f=$(d,e)|0;if(!g)o=53;else{i=k[G>>2]|0;if(x){h=0;do{t=i+(h<<2)|0;k[t>>2]=(k[t>>2]|0)/(g|0)|0;h=h+1|0}while((h|0)!=(e|0))}Sg(D,i,b,c+(f<<2)|0,f)}}if((o|0)==53)Sg(D,c+(($(d+-1|0,e)|0)<<2)|0,b,c+(f<<2)|0,f);d=d+1|0;if((d|0)>=(y|0)){E=G;break a}g=k[z>>2]|0;f=k[g>>2]|0;h=k[g+4>>2]|0}gm(g)}else E=G;while(0);g=k[E>>2]|0;h=g;if(g|0){d=G+4|0;f=k[d>>2]|0;if((f|0)!=(g|0))k[d>>2]=f+(~((f+-4-h|0)>>>2)<<2);cn(g)}cn(C);g=k[K+36>>2]|0;h=g;if(g|0){d=K+40|0;f=k[d>>2]|0;if((f|0)!=(g|0))k[d>>2]=f+(~((f+-4-h|0)>>>2)<<2);cn(g)}d=k[K+24>>2]|0;f=d;if(d|0){g=K+28|0;h=k[g>>2]|0;if((h|0)!=(d|0))k[g>>2]=h+(~((h+-4-f|0)>>>2)<<2);cn(d)}d=k[K+12>>2]|0;f=d;if(d|0){g=K+16|0;h=k[g>>2]|0;if((h|0)!=(d|0))k[g>>2]=h+(~((h+-4-f|0)>>>2)<<2);cn(d)}g=k[K>>2]|0;if(!g){r=L;return 1}d=K+4|0;f=k[d>>2]|0;if((f|0)!=(g|0))k[d>>2]=f+(~((f+-4-g|0)>>>2)<<2);cn(g);r=L;return 1}function Kb(a){a=a|0;var b=0,c=0,d=0,e=0,f=0,g=0,h=0,j=0,m=0,n=0,o=0,p=0,q=0,s=0,t=0,u=0,v=0,w=0,x=0;x=r;r=r+16|0;u=x;v=a+20|0;s=k[v>>2]|0;e=s+8|0;g=k[e>>2]|0;e=k[e+4>>2]|0;h=s+16|0;n=h;m=k[n>>2]|0;n=k[n+4>>2]|0;c=sl(m|0,n|0,4,0)|0;b=M;if((e|0)<(b|0)|(e|0)==(b|0)&g>>>0>>0){w=0;r=x;return w|0}f=k[s>>2]|0;w=f+m|0;w=l[w>>0]|l[w+1>>0]<<8|l[w+2>>0]<<16|l[w+3>>0]<<24;t=h;k[t>>2]=c;k[t+4>>2]=b;if((w|0)<0){w=0;r=x;return w|0}b=sl(m|0,n|0,8,0)|0;d=M;if((e|0)<(d|0)|(e|0)==(d|0)&g>>>0>>0){w=0;r=x;return w|0}t=f+c|0;t=l[t>>0]|l[t+1>>0]<<8|l[t+2>>0]<<16|l[t+3>>0]<<24;q=h;k[q>>2]=b;k[q+4>>2]=d;if(!((e|0)>(d|0)|(e|0)==(d|0)&g>>>0>b>>>0)){w=0;r=x;return w|0}q=i[f+b>>0]|0;j=sl(m|0,n|0,9,0)|0;g=M;p=h;k[p>>2]=j;k[p+4>>2]=g;a:do if(!(q<<24>>24)){if(!(af(a,w)|0)){w=0;r=x;return w|0}}else{if((t|0)<256){if((w|0)<=0)break;n=a+28|0;o=u+4|0;p=u+8|0;k[u>>2]=0;k[u+4>>2]=0;k[u+8>>2]=0;b=s+8|0;c=k[b>>2]|0;b=k[b+4>>2]|0;b:do if((b|0)>(g|0)|(b|0)==(g|0)&c>>>0>j>>>0){m=0;f=s;h=g;g=b;e=c;do{d=f+16|0;c=k[f>>2]|0;q=i[c+j>>0]|0;b=sl(j|0,h|0,1,0)|0;s=M;f=d;k[f>>2]=b;k[f+4>>2]=s;k[u>>2]=q&255;if(!((g|0)>(s|0)|(g|0)==(s|0)&e>>>0>b>>>0))break b;q=i[c+b>>0]|0;b=sl(j|0,h|0,2,0)|0;s=M;f=d;k[f>>2]=b;k[f+4>>2]=s;k[o>>2]=q&255;if(!((g|0)>(s|0)|(g|0)==(s|0)&e>>>0>b>>>0))break b;c=i[c+b>>0]|0;s=sl(j|0,h|0,3,0)|0;b=d;k[b>>2]=s;k[b+4>>2]=M;k[p>>2]=c&255;c=k[n>>2]|0;b=c+84|0;d=k[b>>2]|0;if((d|0)==(k[c+88>>2]|0))dh(c+80|0,u);else{k[d>>2]=k[u>>2];k[d+4>>2]=k[u+4>>2];k[d+8>>2]=k[u+8>>2];k[b>>2]=(k[b>>2]|0)+12}m=m+1|0;if((m|0)>=(w|0))break a;f=k[v>>2]|0;h=f+16|0;j=k[h>>2]|0;h=k[h+4>>2]|0;k[u>>2]=0;k[u+4>>2]=0;k[u+8>>2]=0;g=f+8|0;e=k[g>>2]|0;g=k[g+4>>2]|0}while((g|0)>(h|0)|(g|0)==(h|0)&e>>>0>j>>>0)}while(0);w=0;r=x;return w|0}b=(w|0)>0;if((t|0)<65536){if(!b)break;o=a+28|0;p=u+4|0;q=u+8|0;k[u>>2]=0;k[u+4>>2]=0;k[u+8>>2]=0;e=s+8|0;h=k[e>>2]|0;e=k[e+4>>2]|0;b=sl(m|0,n|0,11,0)|0;c=M;c:do if(!((e|0)<(c|0)|(e|0)==(c|0)&h>>>0>>0)){n=0;d=s;m=e;do{f=d+16|0;e=k[d>>2]|0;d=e+j|0;d=l[d>>0]|l[d+1>>0]<<8;s=f;k[s>>2]=b;k[s+4>>2]=c;k[u>>2]=d&65535;d=sl(j|0,g|0,4,0)|0;c=M;if((m|0)<(c|0)|(m|0)==(c|0)&h>>>0>>0)break c;b=e+b|0;b=l[b>>0]|l[b+1>>0]<<8;s=f;k[s>>2]=d;k[s+4>>2]=c;k[p>>2]=b&65535;b=sl(j|0,g|0,6,0)|0;c=M;if((m|0)<(c|0)|(m|0)==(c|0)&h>>>0>>0)break c;d=e+d|0;d=l[d>>0]|l[d+1>>0]<<8;s=f;k[s>>2]=b;k[s+4>>2]=c;k[q>>2]=d&65535;d=k[o>>2]|0;c=d+84|0;b=k[c>>2]|0;if((b|0)==(k[d+88>>2]|0))dh(d+80|0,u);else{k[b>>2]=k[u>>2];k[b+4>>2]=k[u+4>>2];k[b+8>>2]=k[u+8>>2];k[c>>2]=(k[c>>2]|0)+12}n=n+1|0;if((n|0)>=(w|0))break a;d=k[v>>2]|0;g=d+16|0;j=k[g>>2]|0;g=k[g+4>>2]|0;k[u>>2]=0;k[u+4>>2]=0;k[u+8>>2]=0;m=d+8|0;h=k[m>>2]|0;m=k[m+4>>2]|0;b=sl(j|0,g|0,2,0)|0;c=M}while(!((m|0)<(c|0)|(m|0)==(c|0)&h>>>0>>0))}while(0);w=0;r=x;return w|0}else{if(!b)break;o=a+28|0;p=u+4|0;q=u+8|0;k[u>>2]=0;k[u+4>>2]=0;k[u+8>>2]=0;e=s+8|0;h=k[e>>2]|0;e=k[e+4>>2]|0;b=sl(m|0,n|0,13,0)|0;c=M;d:do if(!((e|0)<(c|0)|(e|0)==(c|0)&h>>>0>>0)){n=0;d=s;m=e;do{f=d+16|0;e=k[d>>2]|0;d=e+j|0;d=l[d>>0]|l[d+1>>0]<<8|l[d+2>>0]<<16|l[d+3>>0]<<24;s=f;k[s>>2]=b;k[s+4>>2]=c;k[u>>2]=d;d=sl(j|0,g|0,8,0)|0;c=M;if((m|0)<(c|0)|(m|0)==(c|0)&h>>>0>>0)break d;b=e+b|0;b=l[b>>0]|l[b+1>>0]<<8|l[b+2>>0]<<16|l[b+3>>0]<<24;s=f;k[s>>2]=d;k[s+4>>2]=c;k[p>>2]=b;b=sl(j|0,g|0,12,0)|0;c=M;if((m|0)<(c|0)|(m|0)==(c|0)&h>>>0>>0)break d;d=e+d|0;d=l[d>>0]|l[d+1>>0]<<8|l[d+2>>0]<<16|l[d+3>>0]<<24;s=f;k[s>>2]=b;k[s+4>>2]=c;k[q>>2]=d;d=k[o>>2]|0;c=d+84|0;b=k[c>>2]|0;if((b|0)==(k[d+88>>2]|0))dh(d+80|0,u);else{k[b>>2]=k[u>>2];k[b+4>>2]=k[u+4>>2];k[b+8>>2]=k[u+8>>2];k[c>>2]=(k[c>>2]|0)+12}n=n+1|0;if((n|0)>=(w|0))break a;d=k[v>>2]|0;g=d+16|0;j=k[g>>2]|0;g=k[g+4>>2]|0;k[u>>2]=0;k[u+4>>2]=0;k[u+8>>2]=0;m=d+8|0;h=k[m>>2]|0;m=k[m+4>>2]|0;b=sl(j|0,g|0,4,0)|0;c=M}while(!((m|0)<(c|0)|(m|0)==(c|0)&h>>>0>>0))}while(0);w=0;r=x;return w|0}}while(0);k[(k[a+4>>2]|0)+64>>2]=t;w=1;r=x;return w|0}function Lb(a,b,c,d,e,f){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;f=f|0;var g=0,h=0,i=0,j=0,l=0,m=0,n=0,o=0,p=0,q=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,B=0,C=0,D=0,E=0,F=0,G=0,H=0,I=0,J=0,K=0,L=0;L=r;r=r+64|0;K=L+16|0;G=L;D=a+8|0;k[D>>2]=e;d=K;f=d+48|0;do{k[d>>2]=0;d=d+4|0}while((d|0)<(f|0));k[G>>2]=0;if(!e){d=0;f=0}else{Ag(K,e,G);d=k[K+12>>2]|0;f=k[K+16>>2]|0}k[G>>2]=0;g=K+16|0;h=f-d>>2;if(h>>>0>=e>>>0){if(h>>>0>e>>>0?(i=d+(e<<2)|0,(f|0)!=(i|0)):0)k[g>>2]=f+(~((f+-4-i|0)>>>2)<<2)}else Ag(K+12|0,e-h|0,G);d=K+24|0;k[G>>2]=0;f=K+28|0;i=k[f>>2]|0;h=k[d>>2]|0;g=i-h>>2;if(g>>>0>=e>>>0){if(g>>>0>e>>>0?(j=h+(e<<2)|0,(i|0)!=(j|0)):0)k[f>>2]=i+(~((i+-4-j|0)>>>2)<<2)}else Ag(d,e-g|0,G);d=K+36|0;k[G>>2]=0;f=K+40|0;i=k[f>>2]|0;h=k[d>>2]|0;g=i-h>>2;if(g>>>0>=e>>>0){if(g>>>0>e>>>0?(l=h+(e<<2)|0,(i|0)!=(l|0)):0)k[f>>2]=i+(~((i+-4-l|0)>>>2)<<2)}else Ag(d,e-g|0,G);Ug(D,k[K>>2]|0,b,c,0);v=k[a+24>>2]|0;B=k[a+28>>2]|0;C=xk(16)|0;k[C>>2]=0;k[C+4>>2]=0;k[C+8>>2]=0;k[C+12>>2]=0;bj(G,e);z=a+32|0;g=k[z>>2]|0;h=k[g+4>>2]|0;f=k[g>>2]|0;A=h-f|0;y=A>>2;a:do if((A|0)>4){u=v+64|0;w=v+28|0;x=(e|0)>0;A=e<<2;d=1;while(1){if(h-f>>2>>>0<=d>>>0)break;p=k[f+(d<<2)>>2]|0;o=p+((p|0)<0?0:((p>>>0)%3|0|0)==0?2:-1)|0;q=o>>>5;s=1<<(o&31);t=(o|0)<0;n=1;f=0;g=p;b:while(1){do{if((g|0)<=-1){o=41;break b}i=k[K+(f*12|0)>>2]|0;if(((k[(k[v>>2]|0)+(g>>>5<<2)>>2]&1<<(g&31)|0)==0?(F=k[(k[(k[u>>2]|0)+12>>2]|0)+(g<<2)>>2]|0,(F|0)>=0):0)?(J=k[w>>2]|0,m=k[B>>2]|0,H=k[m+(k[J+(F<<2)>>2]<<2)>>2]|0,I=F+1|0,I=k[m+(k[J+((((I|0)%3|0|0)==0?F+-2|0:I)<<2)>>2]<<2)>>2]|0,J=k[m+(k[J+((((F>>>0)%3|0|0)==0?2:-1)+F<<2)>>2]<<2)>>2]|0,(H|0)<(d|0)&(I|0)<(d|0)&(J|0)<(d|0)):0){j=$(H,e)|0;l=$(I,e)|0;m=$(J,e)|0;if(x){h=0;do{k[i+(h<<2)>>2]=(k[c+(h+m<<2)>>2]|0)+(k[c+(h+l<<2)>>2]|0)-(k[c+(h+j<<2)>>2]|0);h=h+1|0}while((h|0)!=(e|0))}f=f+1|0;if((f|0)==4){f=4;o=22;break b}}do if(n){h=g+1|0;g=((h|0)%3|0|0)==0?g+-2|0:h;h=k[v>>2]|0;if(!(k[h+(g>>>5<<2)>>2]&1<<(g&31))){if((g|0)>=0){g=k[(k[(k[u>>2]|0)+12>>2]|0)+(g<<2)>>2]|0;i=g+1|0;if((g|0)>=0)g=((i|0)%3|0|0)==0?g+-2|0:i}}else g=-1073741824}else{g=(((g>>>0)%3|0|0)==0?2:-1)+g|0;h=k[v>>2]|0;if(!(k[h+(g>>>5<<2)>>2]&1<<(g&31))){if((g|0)>=0){g=k[(k[(k[u>>2]|0)+12>>2]|0)+(g<<2)>>2]|0;if((g|0)>=0)if(!((g>>>0)%3|0)){g=g+2|0;break}else{g=g+-1|0;break}}}else g=-1073741824}while(0);if((g|0)==(p|0)){o=41;break b}}while(!(n&(g|0)<0));g=(s&k[h+(q<<2)>>2]|0)!=0;if(g|t){n=0;g=g?-1073741824:o;continue}g=k[(k[(k[u>>2]|0)+12>>2]|0)+(o<<2)>>2]|0;if((g|0)<0){n=0;continue}if(!((g>>>0)%3|0)){n=0;g=g+2|0;continue}else{n=0;g=g+-1|0;continue}}if((o|0)==41)if((f|0)>0)o=22;else{f=$(d,e)|0;o=53}if((o|0)==22){o=0;if(x){Vi(k[G>>2]|0,0,A|0)|0;m=f+-1|0;l=C+(m<<2)|0;m=k[a+36+(m*12|0)>>2]|0;n=k[G>>2]|0;j=0;g=0;do{t=k[l>>2]|0;k[l>>2]=t+1;if(!(k[m+(t>>>5<<2)>>2]&1<<(t&31))){i=k[K+(j*12|0)>>2]|0;h=0;do{t=n+(h<<2)|0;k[t>>2]=(k[t>>2]|0)+(k[i+(h<<2)>>2]|0);h=h+1|0}while((h|0)!=(e|0));g=g+1|0}j=j+1|0}while((j|0)!=(f|0))}else{j=f+-1|0;i=C+(j<<2)|0;j=k[a+36+(j*12|0)>>2]|0;h=0;g=0;l=k[i>>2]|0;do{t=l;l=l+1|0;k[i>>2]=l;g=g+((k[j+(t>>>5<<2)>>2]&1<<(t&31)|0)==0&1)|0;h=h+1|0}while((h|0)!=(f|0))}f=$(d,e)|0;if(!g)o=53;else{i=k[G>>2]|0;if(x){h=0;do{t=i+(h<<2)|0;k[t>>2]=(k[t>>2]|0)/(g|0)|0;h=h+1|0}while((h|0)!=(e|0))}Ug(D,i,b,c+(f<<2)|0,f)}}if((o|0)==53)Ug(D,c+(($(d+-1|0,e)|0)<<2)|0,b,c+(f<<2)|0,f);d=d+1|0;if((d|0)>=(y|0)){E=G;break a}g=k[z>>2]|0;f=k[g>>2]|0;h=k[g+4>>2]|0}gm(g)}else E=G;while(0);g=k[E>>2]|0;h=g;if(g|0){d=G+4|0;f=k[d>>2]|0;if((f|0)!=(g|0))k[d>>2]=f+(~((f+-4-h|0)>>>2)<<2);cn(g)}cn(C);g=k[K+36>>2]|0;h=g;if(g|0){d=K+40|0;f=k[d>>2]|0;if((f|0)!=(g|0))k[d>>2]=f+(~((f+-4-h|0)>>>2)<<2);cn(g)}d=k[K+24>>2]|0;f=d;if(d|0){g=K+28|0;h=k[g>>2]|0;if((h|0)!=(d|0))k[g>>2]=h+(~((h+-4-f|0)>>>2)<<2);cn(d)}d=k[K+12>>2]|0;f=d;if(d|0){g=K+16|0;h=k[g>>2]|0;if((h|0)!=(d|0))k[g>>2]=h+(~((h+-4-f|0)>>>2)<<2);cn(d)}g=k[K>>2]|0;if(!g){r=L;return 1}d=K+4|0;f=k[d>>2]|0;if((f|0)!=(g|0))k[d>>2]=f+(~((f+-4-g|0)>>>2)<<2);cn(g);r=L;return 1}function Mb(a,b,c,d,e,f){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;f=f|0;var g=0,h=0,i=0,j=0,l=0,m=0,n=0,o=0,p=0,q=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,B=0,C=0,D=0,E=0,F=0,G=0,H=0,I=0,J=0;J=r;r=r+64|0;I=J+16|0;H=J;F=a+8|0;k[F>>2]=e;d=I;f=d+48|0;do{k[d>>2]=0;d=d+4|0}while((d|0)<(f|0));k[H>>2]=0;if(!e){d=0;f=0}else{Ag(I,e,H);d=k[I+12>>2]|0;f=k[I+16>>2]|0}k[H>>2]=0;g=I+16|0;h=f-d>>2;if(h>>>0>=e>>>0){if(h>>>0>e>>>0?(i=d+(e<<2)|0,(f|0)!=(i|0)):0)k[g>>2]=f+(~((f+-4-i|0)>>>2)<<2)}else Ag(I+12|0,e-h|0,H);d=I+24|0;k[H>>2]=0;f=I+28|0;i=k[f>>2]|0;h=k[d>>2]|0;g=i-h>>2;if(g>>>0>=e>>>0){if(g>>>0>e>>>0?(j=h+(e<<2)|0,(i|0)!=(j|0)):0)k[f>>2]=i+(~((i+-4-j|0)>>>2)<<2)}else Ag(d,e-g|0,H);d=I+36|0;k[H>>2]=0;f=I+40|0;i=k[f>>2]|0;h=k[d>>2]|0;g=i-h>>2;if(g>>>0>=e>>>0){if(g>>>0>e>>>0?(l=h+(e<<2)|0,(i|0)!=(l|0)):0)k[f>>2]=i+(~((i+-4-l|0)>>>2)<<2)}else Ag(d,e-g|0,H);Sg(F,k[I>>2]|0,b,c,0);A=k[a+24>>2]|0;D=k[a+28>>2]|0;E=xk(16)|0;k[E>>2]=0;k[E+4>>2]=0;k[E+8>>2]=0;k[E+12>>2]=0;bj(H,e);z=a+32|0;g=k[z>>2]|0;h=k[g+4>>2]|0;f=k[g>>2]|0;C=h-f|0;y=C>>2;a:do if((C|0)>4){x=A+12|0;B=(e|0)>0;C=e<<2;d=1;while(1){if(h-f>>2>>>0<=d>>>0)break;v=k[f+(d<<2)>>2]|0;u=(((v>>>0)%3|0|0)==0?2:-1)+v|0;w=(v|u|0)<0;t=(v|0)<0?v:u;s=1;f=0;g=v;b:while(1){do{if((g|0)<=-1){o=42;break b}p=k[I+(f*12|0)>>2]|0;q=k[x>>2]|0;i=k[q+(g<<2)>>2]|0;if((i|0)>=0){l=k[A>>2]|0;j=(i>>>0)%3|0;m=k[D>>2]|0;o=k[m+(k[l+(((i>>>0)/3|0)*12|0)+(j<<2)>>2]<<2)>>2]|0;h=i+1|0;h=((h|0)%3|0|0)==0?i+-2|0:h;if((h|0)<0)h=-1073741824;else h=k[l+(((h>>>0)/3|0)*12|0)+(((h>>>0)%3|0)<<2)>>2]|0;n=k[m+(h<<2)>>2]|0;h=((j|0)==0?2:-1)+i|0;if((h|0)<0)h=-1073741824;else h=k[l+(((h>>>0)/3|0)*12|0)+(((h>>>0)%3|0)<<2)>>2]|0;h=k[m+(h<<2)>>2]|0;if((o|0)<(d|0)&(n|0)<(d|0)&(h|0)<(d|0)){l=$(o,e)|0;j=$(n,e)|0;i=$(h,e)|0;if(B){h=0;do{k[p+(h<<2)>>2]=(k[c+(h+i<<2)>>2]|0)+(k[c+(h+j<<2)>>2]|0)-(k[c+(h+l<<2)>>2]|0);h=h+1|0}while((h|0)!=(e|0))}f=f+1|0;if((f|0)==4){f=4;o=25;break b}}}do if(s){p=g+1|0;g=((p|0)%3|0|0)==0?g+-2|0:p;if((g|0)>=0){g=k[q+(g<<2)>>2]|0;h=g+1|0;if((g|0)>=0)g=((h|0)%3|0|0)==0?g+-2|0:h}}else{g=(((g>>>0)%3|0|0)==0?2:-1)+g|0;if((g|0)>=0){g=k[q+(g<<2)>>2]|0;if((g|0)>=0)if(!((g>>>0)%3|0)){g=g+2|0;break}else{g=g+-1|0;break}}}while(0);if((g|0)==(v|0)){o=42;break b}}while(!(s&(g|0)<0));if(w){s=0;g=t;continue}g=k[q+(u<<2)>>2]|0;if((g|0)<0){s=0;continue}if(!((g>>>0)%3|0)){s=0;g=g+2|0;continue}else{s=0;g=g+-1|0;continue}}if((o|0)==42)if((f|0)>0)o=25;else{f=$(d,e)|0;o=54}if((o|0)==25){o=0;if(B){Vi(k[H>>2]|0,0,C|0)|0;m=f+-1|0;l=E+(m<<2)|0;m=k[a+36+(m*12|0)>>2]|0;n=k[H>>2]|0;j=0;g=0;do{w=k[l>>2]|0;k[l>>2]=w+1;if(!(k[m+(w>>>5<<2)>>2]&1<<(w&31))){i=k[I+(j*12|0)>>2]|0;h=0;do{w=n+(h<<2)|0;k[w>>2]=(k[w>>2]|0)+(k[i+(h<<2)>>2]|0);h=h+1|0}while((h|0)!=(e|0));g=g+1|0}j=j+1|0}while((j|0)!=(f|0))}else{j=f+-1|0;i=E+(j<<2)|0;j=k[a+36+(j*12|0)>>2]|0;h=0;g=0;l=k[i>>2]|0;do{w=l;l=l+1|0;k[i>>2]=l;g=g+((k[j+(w>>>5<<2)>>2]&1<<(w&31)|0)==0&1)|0;h=h+1|0}while((h|0)!=(f|0))}f=$(d,e)|0;if(!g)o=54;else{i=k[H>>2]|0;if(B){h=0;do{w=i+(h<<2)|0;k[w>>2]=(k[w>>2]|0)/(g|0)|0;h=h+1|0}while((h|0)!=(e|0))}Sg(F,i,b,c+(f<<2)|0,f)}}if((o|0)==54)Sg(F,c+(($(d+-1|0,e)|0)<<2)|0,b,c+(f<<2)|0,f);d=d+1|0;if((d|0)>=(y|0)){G=H;break a}g=k[z>>2]|0;f=k[g>>2]|0;h=k[g+4>>2]|0}gm(g)}else G=H;while(0);g=k[G>>2]|0;h=g;if(g|0){d=H+4|0;f=k[d>>2]|0;if((f|0)!=(g|0))k[d>>2]=f+(~((f+-4-h|0)>>>2)<<2);cn(g)}cn(E);g=k[I+36>>2]|0;h=g;if(g|0){d=I+40|0;f=k[d>>2]|0;if((f|0)!=(g|0))k[d>>2]=f+(~((f+-4-h|0)>>>2)<<2);cn(g)}d=k[I+24>>2]|0;f=d;if(d|0){g=I+28|0;h=k[g>>2]|0;if((h|0)!=(d|0))k[g>>2]=h+(~((h+-4-f|0)>>>2)<<2);cn(d)}d=k[I+12>>2]|0;f=d;if(d|0){g=I+16|0;h=k[g>>2]|0;if((h|0)!=(d|0))k[g>>2]=h+(~((h+-4-f|0)>>>2)<<2);cn(d)}g=k[I>>2]|0;if(!g){r=J;return 1}d=I+4|0;f=k[d>>2]|0;if((f|0)!=(g|0))k[d>>2]=f+(~((f+-4-g|0)>>>2)<<2);cn(g);r=J;return 1}function Nb(a,b,c,d,e,f){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;f=f|0;var g=0,h=0,i=0,j=0,l=0,m=0,n=0,o=0,p=0,q=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,B=0,C=0,D=0,E=0,F=0,G=0,H=0,I=0,J=0;J=r;r=r+64|0;I=J+16|0;H=J;F=a+8|0;k[F>>2]=e;d=I;f=d+48|0;do{k[d>>2]=0;d=d+4|0}while((d|0)<(f|0));k[H>>2]=0;if(!e){d=0;f=0}else{Ag(I,e,H);d=k[I+12>>2]|0;f=k[I+16>>2]|0}k[H>>2]=0;g=I+16|0;h=f-d>>2;if(h>>>0>=e>>>0){if(h>>>0>e>>>0?(i=d+(e<<2)|0,(f|0)!=(i|0)):0)k[g>>2]=f+(~((f+-4-i|0)>>>2)<<2)}else Ag(I+12|0,e-h|0,H);d=I+24|0;k[H>>2]=0;f=I+28|0;i=k[f>>2]|0;h=k[d>>2]|0;g=i-h>>2;if(g>>>0>=e>>>0){if(g>>>0>e>>>0?(j=h+(e<<2)|0,(i|0)!=(j|0)):0)k[f>>2]=i+(~((i+-4-j|0)>>>2)<<2)}else Ag(d,e-g|0,H);d=I+36|0;k[H>>2]=0;f=I+40|0;i=k[f>>2]|0;h=k[d>>2]|0;g=i-h>>2;if(g>>>0>=e>>>0){if(g>>>0>e>>>0?(l=h+(e<<2)|0,(i|0)!=(l|0)):0)k[f>>2]=i+(~((i+-4-l|0)>>>2)<<2)}else Ag(d,e-g|0,H);Ug(F,k[I>>2]|0,b,c,0);A=k[a+24>>2]|0;D=k[a+28>>2]|0;E=xk(16)|0;k[E>>2]=0;k[E+4>>2]=0;k[E+8>>2]=0;k[E+12>>2]=0;bj(H,e);z=a+32|0;g=k[z>>2]|0;h=k[g+4>>2]|0;f=k[g>>2]|0;C=h-f|0;y=C>>2;a:do if((C|0)>4){x=A+12|0;B=(e|0)>0;C=e<<2;d=1;while(1){if(h-f>>2>>>0<=d>>>0)break;v=k[f+(d<<2)>>2]|0;u=(((v>>>0)%3|0|0)==0?2:-1)+v|0;w=(v|u|0)<0;t=(v|0)<0?v:u;s=1;f=0;g=v;b:while(1){do{if((g|0)<=-1){o=42;break b}p=k[I+(f*12|0)>>2]|0;q=k[x>>2]|0;i=k[q+(g<<2)>>2]|0;if((i|0)>=0){l=k[A>>2]|0;j=(i>>>0)%3|0;m=k[D>>2]|0;o=k[m+(k[l+(((i>>>0)/3|0)*12|0)+(j<<2)>>2]<<2)>>2]|0;h=i+1|0;h=((h|0)%3|0|0)==0?i+-2|0:h;if((h|0)<0)h=-1073741824;else h=k[l+(((h>>>0)/3|0)*12|0)+(((h>>>0)%3|0)<<2)>>2]|0;n=k[m+(h<<2)>>2]|0;h=((j|0)==0?2:-1)+i|0;if((h|0)<0)h=-1073741824;else h=k[l+(((h>>>0)/3|0)*12|0)+(((h>>>0)%3|0)<<2)>>2]|0;h=k[m+(h<<2)>>2]|0;if((o|0)<(d|0)&(n|0)<(d|0)&(h|0)<(d|0)){l=$(o,e)|0;j=$(n,e)|0;i=$(h,e)|0;if(B){h=0;do{k[p+(h<<2)>>2]=(k[c+(h+i<<2)>>2]|0)+(k[c+(h+j<<2)>>2]|0)-(k[c+(h+l<<2)>>2]|0);h=h+1|0}while((h|0)!=(e|0))}f=f+1|0;if((f|0)==4){f=4;o=25;break b}}}do if(s){p=g+1|0;g=((p|0)%3|0|0)==0?g+-2|0:p;if((g|0)>=0){g=k[q+(g<<2)>>2]|0;h=g+1|0;if((g|0)>=0)g=((h|0)%3|0|0)==0?g+-2|0:h}}else{g=(((g>>>0)%3|0|0)==0?2:-1)+g|0;if((g|0)>=0){g=k[q+(g<<2)>>2]|0;if((g|0)>=0)if(!((g>>>0)%3|0)){g=g+2|0;break}else{g=g+-1|0;break}}}while(0);if((g|0)==(v|0)){o=42;break b}}while(!(s&(g|0)<0));if(w){s=0;g=t;continue}g=k[q+(u<<2)>>2]|0;if((g|0)<0){s=0;continue}if(!((g>>>0)%3|0)){s=0;g=g+2|0;continue}else{s=0;g=g+-1|0;continue}}if((o|0)==42)if((f|0)>0)o=25;else{f=$(d,e)|0;o=54}if((o|0)==25){o=0;if(B){Vi(k[H>>2]|0,0,C|0)|0;m=f+-1|0;l=E+(m<<2)|0;m=k[a+36+(m*12|0)>>2]|0;n=k[H>>2]|0;j=0;g=0;do{w=k[l>>2]|0;k[l>>2]=w+1;if(!(k[m+(w>>>5<<2)>>2]&1<<(w&31))){i=k[I+(j*12|0)>>2]|0;h=0;do{w=n+(h<<2)|0;k[w>>2]=(k[w>>2]|0)+(k[i+(h<<2)>>2]|0);h=h+1|0}while((h|0)!=(e|0));g=g+1|0}j=j+1|0}while((j|0)!=(f|0))}else{j=f+-1|0;i=E+(j<<2)|0;j=k[a+36+(j*12|0)>>2]|0;h=0;g=0;l=k[i>>2]|0;do{w=l;l=l+1|0;k[i>>2]=l;g=g+((k[j+(w>>>5<<2)>>2]&1<<(w&31)|0)==0&1)|0;h=h+1|0}while((h|0)!=(f|0))}f=$(d,e)|0;if(!g)o=54;else{i=k[H>>2]|0;if(B){h=0;do{w=i+(h<<2)|0;k[w>>2]=(k[w>>2]|0)/(g|0)|0;h=h+1|0}while((h|0)!=(e|0))}Ug(F,i,b,c+(f<<2)|0,f)}}if((o|0)==54)Ug(F,c+(($(d+-1|0,e)|0)<<2)|0,b,c+(f<<2)|0,f);d=d+1|0;if((d|0)>=(y|0)){G=H;break a}g=k[z>>2]|0;f=k[g>>2]|0;h=k[g+4>>2]|0}gm(g)}else G=H;while(0);g=k[G>>2]|0;h=g;if(g|0){d=H+4|0;f=k[d>>2]|0;if((f|0)!=(g|0))k[d>>2]=f+(~((f+-4-h|0)>>>2)<<2);cn(g)}cn(E);g=k[I+36>>2]|0;h=g;if(g|0){d=I+40|0;f=k[d>>2]|0;if((f|0)!=(g|0))k[d>>2]=f+(~((f+-4-h|0)>>>2)<<2);cn(g)}d=k[I+24>>2]|0;f=d;if(d|0){g=I+28|0;h=k[g>>2]|0;if((h|0)!=(d|0))k[g>>2]=h+(~((h+-4-f|0)>>>2)<<2);cn(d)}d=k[I+12>>2]|0;f=d;if(d|0){g=I+16|0;h=k[g>>2]|0;if((h|0)!=(d|0))k[g>>2]=h+(~((h+-4-f|0)>>>2)<<2);cn(d)}g=k[I>>2]|0;if(!g){r=J;return 1}d=I+4|0;f=k[d>>2]|0;if((f|0)!=(g|0))k[d>>2]=f+(~((f+-4-g|0)>>>2)<<2);cn(g);r=J;return 1}function Ob(a,b,c){a=a|0;b=b|0;c=c|0;var d=0,e=0,f=0,g=0,h=0,l=0,m=0,n=Pa,p=Pa,q=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,B=0,C=0,D=0,E=0,F=0,G=0,H=0,I=0,J=0,K=0,L=0,N=0,O=0,P=Pa;O=r;r=r+48|0;N=O+12|0;H=O+32|0;L=O;I=N+16|0;k[N>>2]=0;k[N+4>>2]=0;k[N+8>>2]=0;k[N+12>>2]=0;o[I>>2]=da(1.0);K=a+80|0;bj(L,k[K>>2]|0);e=k[K>>2]|0;a:do if((e|0)>0){y=b+48|0;z=b+40|0;w=H+2|0;x=H+4|0;A=N+4|0;B=N+12|0;C=N+8|0;D=a+40|0;E=a+64|0;v=k[c>>2]|0;d=0;u=0;q=0;while(1){m=v+u|0;h=y;l=k[h>>2]|0;h=k[h+4>>2]|0;t=z;m=uk(k[t>>2]|0,k[t+4>>2]|0,m|0,((m|0)<0)<<31>>31|0)|0;h=sl(m|0,M|0,l|0,h|0)|0;h=(k[k[b>>2]>>2]|0)+h|0;i[H>>0]=i[h>>0]|0;i[H+1>>0]=i[h+1>>0]|0;i[H+2>>0]=i[h+2>>0]|0;i[H+3>>0]=i[h+3>>0]|0;i[H+4>>0]=i[h+4>>0]|0;i[H+5>>0]=i[h+5>>0]|0;h=j[H>>1]|0;l=j[w>>1]|0;m=j[x>>1]|0;t=((h&65535^318)+239^l&65535)+239^m&65535;s=(q|0)==0;b:do if(!s){f=q+-1|0;c=(f&q|0)==0;if(c)g=t&f;else g=(t>>>0)%(q>>>0)|0;e=k[(k[N>>2]|0)+(g<<2)>>2]|0;do if(e|0?(F=k[e>>2]|0,F|0):0){c:do if(c){c=F;while(1){if((k[c+4>>2]&f|0)!=(g|0)){e=22;break c}if(((j[c+8>>1]|0)==h<<16>>16?(j[c+10>>1]|0)==l<<16>>16:0)?(j[c+12>>1]|0)==m<<16>>16:0){e=21;break c}c=k[c>>2]|0;if(!c){e=22;break}}}else{c=F;while(1){if((((k[c+4>>2]|0)>>>0)%(q>>>0)|0|0)!=(g|0)){e=22;break c}if(((j[c+8>>1]|0)==h<<16>>16?(j[c+10>>1]|0)==l<<16>>16:0)?(j[c+12>>1]|0)==m<<16>>16:0){e=21;break c}c=k[c>>2]|0;if(!c){e=22;break}}}while(0);if((e|0)==21){e=0;k[(k[L>>2]|0)+(u<<2)>>2]=k[c+16>>2];break b}else if((e|0)==22)if(s){c=0;e=39;break b}else break}while(0);g=q+-1|0;f=(g&q|0)==0;if(f)c=g&t;else c=(t>>>0)%(q>>>0)|0;e=k[(k[N>>2]|0)+(c<<2)>>2]|0;if((e|0)!=0?(G=k[e>>2]|0,(G|0)!=0):0)if(f){e=G;while(1){if((k[e+4>>2]&g|0)!=(c|0)){e=39;break b}if(((j[e+8>>1]|0)==h<<16>>16?(j[e+10>>1]|0)==l<<16>>16:0)?(j[e+12>>1]|0)==m<<16>>16:0){e=51;break b}e=k[e>>2]|0;if(!e){e=39;break}}}else{e=G;while(1){if((((k[e+4>>2]|0)>>>0)%(q>>>0)|0|0)!=(c|0)){e=39;break b}if(((j[e+8>>1]|0)==h<<16>>16?(j[e+10>>1]|0)==l<<16>>16:0)?(j[e+12>>1]|0)==m<<16>>16:0){e=51;break b}e=k[e>>2]|0;if(!e){e=39;break}}}else e=39}else{c=0;e=39}while(0);if((e|0)==39){g=xk(20)|0;j[g+8>>1]=h;j[g+10>>1]=l;j[g+12>>1]=m;k[g+16>>2]=d;k[g+4>>2]=t;k[g>>2]=0;n=da(((k[B>>2]|0)+1|0)>>>0);P=da(q>>>0);p=da(o[I>>2]);do if(s|n>da(P*p)){c=(q>>>0>2&(q+-1&q|0)==0&1|q<<1)^1;e=~~da(_(da(n/p)))>>>0;Hg(N,c>>>0>>0?e:c);c=k[A>>2]|0;e=c+-1|0;if(!(e&c)){f=c;c=e&t;break}else{f=c;c=(t>>>0)%(c>>>0)|0;break}}else f=q;while(0);c=(k[N>>2]|0)+(c<<2)|0;e=k[c>>2]|0;if(!e){k[g>>2]=k[C>>2];k[C>>2]=g;k[c>>2]=C;c=k[g>>2]|0;if(c|0){c=k[c+4>>2]|0;e=f+-1|0;if(!(e&f))c=c&e;else c=(c>>>0)%(f>>>0)|0;k[(k[N>>2]|0)+(c<<2)>>2]=g}}else{k[g>>2]=k[e>>2];k[e>>2]=g}k[B>>2]=(k[B>>2]|0)+1;e=51}if((e|0)==51){s=D;t=k[s>>2]|0;s=uk(t|0,k[s+4>>2]|0,d|0,((d|0)<0)<<31>>31|0)|0;Ii((k[k[E>>2]>>2]|0)+s|0,H|0,t|0)|0;k[(k[L>>2]|0)+(u<<2)>>2]=d;d=d+1|0}c=u+1|0;e=k[K>>2]|0;if((c|0)>=(e|0)){m=d;break a}u=c;q=k[A>>2]|0}}else m=0;while(0);if((m|0)!=(e|0)){l=a+84|0;if(!(i[l>>0]|0)){e=k[a+68>>2]|0;c=(k[a+72>>2]|0)-e|0;if((c|0)>0){f=k[L>>2]|0;d=c>>2;c=0;do{a=e+(c<<2)|0;k[a>>2]=k[f+(k[a>>2]<<2)>>2];c=c+1|0}while((c|0)<(d|0))}}else{i[l>>0]=0;c=a+68|0;d=a+72|0;h=k[d>>2]|0;g=k[c>>2]|0;f=h-g>>2;if(e>>>0<=f>>>0){if(e>>>0>>0?(J=g+(e<<2)|0,(h|0)!=(J|0)):0)k[d>>2]=h+(~((h+-4-J|0)>>>2)<<2)}else{Ag(c,e-f|0,3152);e=k[K>>2]|0}if((e|0)>0){f=k[L>>2]|0;if(i[l>>0]|0)Ka(14270,14289,80,14321);d=k[a+68>>2]|0;c=0;do{k[d+(c<<2)>>2]=k[f+(c<<2)>>2];c=c+1|0}while((c|0)<(e|0))}}k[K>>2]=m}e=k[L>>2]|0;f=e;if(e|0){c=L+4|0;d=k[c>>2]|0;if((d|0)!=(e|0))k[c>>2]=d+(~((d+-4-f|0)>>>2)<<2);cn(e)}c=k[N+8>>2]|0;if(c|0)do{L=c;c=k[c>>2]|0;cn(L)}while((c|0)!=0);c=k[N>>2]|0;k[N>>2]=0;if(!c){r=O;return m|0}cn(c);r=O;return m|0}function Pb(a,b,c){a=a|0;b=b|0;c=c|0;var d=0,e=0,f=0,g=0,h=0,j=0,l=0,m=Pa,n=Pa,p=0,q=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,B=0,C=0,D=0,E=0,F=0,G=0,H=0,I=0,J=0,K=0,L=0,N=0,O=Pa;N=r;r=r+48|0;L=N+12|0;G=N+32|0;K=N;H=L+16|0;k[L>>2]=0;k[L+4>>2]=0;k[L+8>>2]=0;k[L+12>>2]=0;o[H>>2]=da(1.0);J=a+80|0;bj(K,k[J>>2]|0);e=k[J>>2]|0;a:do if((e|0)>0){x=b+48|0;y=b+40|0;v=G+1|0;w=G+2|0;z=L+4|0;A=L+12|0;B=L+8|0;C=a+40|0;D=a+64|0;u=k[c>>2]|0;c=0;t=0;p=0;while(1){l=u+c|0;h=x;j=k[h>>2]|0;h=k[h+4>>2]|0;s=y;l=uk(k[s>>2]|0,k[s+4>>2]|0,l|0,((l|0)<0)<<31>>31|0)|0;h=sl(l|0,M|0,j|0,h|0)|0;h=(k[k[b>>2]>>2]|0)+h|0;i[G>>0]=i[h>>0]|0;i[G+1>>0]=i[h+1>>0]|0;i[G+2>>0]=i[h+2>>0]|0;h=i[G>>0]|0;j=i[v>>0]|0;l=i[w>>0]|0;s=((h&255^318)+239^j&255)+239^l&255;q=(p|0)==0;b:do if(!q){f=p+-1|0;d=(f&p|0)==0;if(d)g=s&f;else g=(s>>>0)%(p>>>0)|0;e=k[(k[L>>2]|0)+(g<<2)>>2]|0;do if(e|0?(E=k[e>>2]|0,E|0):0){c:do if(d){d=E;while(1){if((k[d+4>>2]&f|0)!=(g|0)){e=22;break c}if(((i[d+8>>0]|0)==h<<24>>24?(i[d+9>>0]|0)==j<<24>>24:0)?(i[d+10>>0]|0)==l<<24>>24:0){e=21;break c}d=k[d>>2]|0;if(!d){e=22;break}}}else{d=E;while(1){if((((k[d+4>>2]|0)>>>0)%(p>>>0)|0|0)!=(g|0)){e=22;break c}if(((i[d+8>>0]|0)==h<<24>>24?(i[d+9>>0]|0)==j<<24>>24:0)?(i[d+10>>0]|0)==l<<24>>24:0){e=21;break c}d=k[d>>2]|0;if(!d){e=22;break}}}while(0);if((e|0)==21){e=0;k[(k[K>>2]|0)+(c<<2)>>2]=k[d+12>>2];d=t;break b}else if((e|0)==22)if(q){d=0;e=39;break b}else break}while(0);g=p+-1|0;f=(g&p|0)==0;if(f)d=g&s;else d=(s>>>0)%(p>>>0)|0;e=k[(k[L>>2]|0)+(d<<2)>>2]|0;if((e|0)!=0?(F=k[e>>2]|0,(F|0)!=0):0)if(f){e=F;while(1){if((k[e+4>>2]&g|0)!=(d|0)){e=39;break b}if(((i[e+8>>0]|0)==h<<24>>24?(i[e+9>>0]|0)==j<<24>>24:0)?(i[e+10>>0]|0)==l<<24>>24:0){e=51;break b}e=k[e>>2]|0;if(!e){e=39;break}}}else{e=F;while(1){if((((k[e+4>>2]|0)>>>0)%(p>>>0)|0|0)!=(d|0)){e=39;break b}if(((i[e+8>>0]|0)==h<<24>>24?(i[e+9>>0]|0)==j<<24>>24:0)?(i[e+10>>0]|0)==l<<24>>24:0){e=51;break b}e=k[e>>2]|0;if(!e){e=39;break}}}else e=39}else{d=0;e=39}while(0);if((e|0)==39){g=xk(16)|0;i[g+8>>0]=h;i[g+9>>0]=j;i[g+10>>0]=l;k[g+12>>2]=t;k[g+4>>2]=s;k[g>>2]=0;m=da(((k[A>>2]|0)+1|0)>>>0);O=da(p>>>0);n=da(o[H>>2]);do if(q|m>da(O*n)){d=(p>>>0>2&(p+-1&p|0)==0&1|p<<1)^1;e=~~da(_(da(m/n)))>>>0;Og(L,d>>>0>>0?e:d);d=k[z>>2]|0;e=d+-1|0;if(!(e&d)){f=d;d=e&s;break}else{f=d;d=(s>>>0)%(d>>>0)|0;break}}else f=p;while(0);d=(k[L>>2]|0)+(d<<2)|0;e=k[d>>2]|0;if(!e){k[g>>2]=k[B>>2];k[B>>2]=g;k[d>>2]=B;d=k[g>>2]|0;if(d|0){d=k[d+4>>2]|0;e=f+-1|0;if(!(e&f))d=d&e;else d=(d>>>0)%(f>>>0)|0;k[(k[L>>2]|0)+(d<<2)>>2]=g}}else{k[g>>2]=k[e>>2];k[e>>2]=g}k[A>>2]=(k[A>>2]|0)+1;e=51}if((e|0)==51){s=C;d=k[s>>2]|0;s=uk(d|0,k[s+4>>2]|0,t|0,((t|0)<0)<<31>>31|0)|0;Ii((k[k[D>>2]>>2]|0)+s|0,G|0,d|0)|0;k[(k[K>>2]|0)+(c<<2)>>2]=t;d=t+1|0}c=c+1|0;e=k[J>>2]|0;if((c|0)>=(e|0)){l=d;break a}t=d;p=k[z>>2]|0}}else l=0;while(0);if((l|0)!=(e|0)){j=a+84|0;if(!(i[j>>0]|0)){e=k[a+68>>2]|0;c=(k[a+72>>2]|0)-e|0;if((c|0)>0){f=k[K>>2]|0;d=c>>2;c=0;do{a=e+(c<<2)|0;k[a>>2]=k[f+(k[a>>2]<<2)>>2];c=c+1|0}while((c|0)<(d|0))}}else{i[j>>0]=0;c=a+68|0;d=a+72|0;h=k[d>>2]|0;g=k[c>>2]|0;f=h-g>>2;if(e>>>0<=f>>>0){if(e>>>0>>0?(I=g+(e<<2)|0,(h|0)!=(I|0)):0)k[d>>2]=h+(~((h+-4-I|0)>>>2)<<2)}else{Ag(c,e-f|0,3152);e=k[J>>2]|0}if((e|0)>0){f=k[K>>2]|0;if(i[j>>0]|0)Ka(14270,14289,80,14321);d=k[a+68>>2]|0;c=0;do{k[d+(c<<2)>>2]=k[f+(c<<2)>>2];c=c+1|0}while((c|0)<(e|0))}}k[J>>2]=l}e=k[K>>2]|0;f=e;if(e|0){c=K+4|0;d=k[c>>2]|0;if((d|0)!=(e|0))k[c>>2]=d+(~((d+-4-f|0)>>>2)<<2);cn(e)}c=k[L+8>>2]|0;if(c|0)do{K=c;c=k[c>>2]|0;cn(K)}while((c|0)!=0);c=k[L>>2]|0;k[L>>2]=0;if(!c){r=N;return l|0}cn(c);r=N;return l|0}function Qb(a,b){a=a|0;b=b|0;var c=0,d=0,e=0,f=0,g=0,h=0,i=0,j=0,l=0,m=0,n=0,o=0,p=0,q=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0;y=r;r=r+48|0;v=y;u=y+36|0;h=y+32|0;i=y+28|0;j=y+24|0;l=y+20|0;m=y+16|0;n=y+12|0;w=y+8|0;x=y+4|0;if((k[a+96>>2]|0)==(k[a+92>>2]|0)){r=y;return}c=a+56|0;d=k[c>>2]|0;if((d|0)==(k[a+60>>2]|0)){xh(a+52|0,b);q=b}else{k[d>>2]=k[b>>2];k[c>>2]=d+4;q=b}s=a+88|0;k[s>>2]=0;d=k[a>>2]|0;c=k[q>>2]|0;b=c+1|0;if((c|0)>=0){b=((b|0)%3|0|0)==0?c+-2|0:b;if((b|0)<0)b=-1073741824;else b=k[(k[d>>2]|0)+(((b>>>0)/3|0)*12|0)+(((b>>>0)%3|0)<<2)>>2]|0;c=(((c>>>0)%3|0|0)==0?2:-1)+c|0;if((c|0)<0){f=b;g=-1073741824}else{f=b;g=k[(k[d>>2]|0)+(((c>>>0)/3|0)*12|0)+(((c>>>0)%3|0)<<2)>>2]|0}}else{f=-1073741824;g=-1073741824}p=a+24|0;b=k[p>>2]|0;c=b+(f>>>5<<2)|0;d=1<<(f&31);e=k[c>>2]|0;if(!(e&d)){k[c>>2]=e|d;k[h>>2]=f;b=k[q>>2]|0;c=b+1|0;if((b|0)>=0)b=((c|0)%3|0|0)==0?b+-2|0:c;k[i>>2]=b;k[u>>2]=k[h>>2];k[v>>2]=k[i>>2];Nf(a+36|0,u,v);b=k[p>>2]|0}b=b+(g>>>5<<2)|0;c=1<<(g&31);d=k[b>>2]|0;if(!(d&c)){k[b>>2]=d|c;c=a+36|0;k[j>>2]=g;b=k[q>>2]|0;do if((b|0)>=0)if(!((b>>>0)%3|0)){b=b+2|0;break}else{b=b+-1|0;break}while(0);k[l>>2]=b;k[u>>2]=k[j>>2];k[v>>2]=k[l>>2];Nf(c,u,v)}b=k[q>>2]|0;if((b|0)<0)b=-1073741824;else b=k[(k[k[a>>2]>>2]|0)+(((b>>>0)/3|0)*12|0)+(((b>>>0)%3|0)<<2)>>2]|0;c=(k[p>>2]|0)+(b>>>5<<2)|0;d=1<<(b&31);e=k[c>>2]|0;if(!(d&e)){k[c>>2]=e|d;k[m>>2]=b;k[n>>2]=k[q>>2];k[u>>2]=k[m>>2];k[v>>2]=k[n>>2];Nf(a+36|0,u,v)}b=k[s>>2]|0;a:do if((b|0)<3){m=a+12|0;n=a+36|0;o=a+92|0;while(1){while(1){e=a+52+(b*12|0)+4|0;c=k[e>>2]|0;if((k[a+52+(b*12|0)>>2]|0)!=(c|0))break;b=b+1|0;if((b|0)>=3)break a}l=c+-4|0;d=k[l>>2]|0;k[e>>2]=l;k[s>>2]=b;k[q>>2]=d;if((d|0)<=-1)break;l=(d>>>0)/3|0;c=k[m>>2]|0;do if(!(k[c+(l>>>5<<2)>>2]&1<<(l&31))){b=d;b:while(1){l=(b|0)/3|0;c=c+(l>>>5<<2)|0;k[c>>2]=1<<(l&31)|k[c>>2];c=k[q>>2]|0;if((c|0)<0)b=-1073741824;else b=k[(k[k[a>>2]>>2]|0)+(((c>>>0)/3|0)*12|0)+(((c>>>0)%3|0)<<2)>>2]|0;d=(k[p>>2]|0)+(b>>>5<<2)|0;e=1<<(b&31);f=k[d>>2]|0;if(!(e&f)){k[d>>2]=f|e;k[w>>2]=b;k[x>>2]=k[q>>2];k[u>>2]=k[w>>2];k[v>>2]=k[x>>2];Nf(n,u,v);c=k[q>>2]|0}h=k[a>>2]|0;if((c|0)<0){t=68;break}b=c+1|0;b=((b|0)%3|0|0)==0?c+-2|0:b;if((b|0)<0)l=b;else l=k[(k[h+12>>2]|0)+(b<<2)>>2]|0;b=(((c>>>0)%3|0|0)==0?2:-1)+c|0;if((b|0)>=0)b=k[(k[h+12>>2]|0)+(b<<2)>>2]|0;i=(l|0)<0;j=(l>>>0)/3|0;c=i?-1:j;d=(b|0)<0;e=(b>>>0)/3|0;f=d?-1:e;if(i)g=1;else g=(k[(k[m>>2]|0)+(c>>>5<<2)>>2]&1<<(c&31)|0)!=0;do if(d)if(g){t=68;break b}else t=57;else{if(k[(k[m>>2]|0)+(f>>>5<<2)>>2]&1<<(f&31)|0)if(g){t=68;break b}else{t=57;break}c=k[(k[h>>2]|0)+(e*12|0)+(((b>>>0)%3|0)<<2)>>2]|0;if(!(1<<(c&31)&k[(k[p>>2]|0)+(c>>>5<<2)>>2])){h=(k[o>>2]|0)+(c<<2)|0;e=k[h>>2]|0;k[h>>2]=e+1;e=(e|0)>0?1:2}else e=0;if(g?(e|0)<=(k[s>>2]|0):0)break;k[v>>2]=b;c=a+52+(e*12|0)+4|0;d=k[c>>2]|0;if((d|0)==(k[a+52+(e*12|0)+8>>2]|0))xh(a+52+(e*12|0)|0,v);else{k[d>>2]=b;k[c>>2]=d+4}if((k[s>>2]|0)>(e|0))k[s>>2]=e;if(g){t=68;break b}else t=57}while(0);if((t|0)==57){t=0;if(i)b=-1073741824;else b=k[(k[k[a>>2]>>2]|0)+(j*12|0)+(((l>>>0)%3|0)<<2)>>2]|0;if(!(1<<(b&31)&k[(k[p>>2]|0)+(b>>>5<<2)>>2])){j=(k[o>>2]|0)+(b<<2)|0;b=k[j>>2]|0;k[j>>2]=b+1;b=(b|0)>0?1:2}else b=0;if((b|0)>(k[s>>2]|0))break;else b=l}k[q>>2]=b;c=k[m>>2]|0}if((t|0)==68){t=0;b=k[s>>2]|0;break}k[v>>2]=l;c=a+52+(b*12|0)+4|0;d=k[c>>2]|0;if((d|0)==(k[a+52+(b*12|0)+8>>2]|0))xh(a+52+(b*12|0)|0,v);else{k[d>>2]=l;k[c>>2]=d+4}c=k[s>>2]|0;if((c|0)>(b|0))k[s>>2]=b;else b=c}while(0);if((b|0)>=3)break a}r=y;return}while(0);k[q>>2]=-1073741824;r=y;return}function Rb(a,b,c){a=a|0;b=b|0;c=c|0;var d=0,e=0,f=0,g=0,h=0,j=0,l=0,m=Pa,n=Pa,p=0,q=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,B=0,C=0,D=0,E=0,F=0,G=0,H=0,I=0,J=0,K=0,L=0,N=0,O=Pa;N=r;r=r+48|0;L=N+24|0;G=N+12|0;K=N;H=L+16|0;k[L>>2]=0;k[L+4>>2]=0;k[L+8>>2]=0;k[L+12>>2]=0;o[H>>2]=da(1.0);J=a+80|0;bj(K,k[J>>2]|0);e=k[J>>2]|0;a:do if((e|0)>0){x=b+48|0;y=b+40|0;v=G+4|0;w=G+8|0;z=L+4|0;A=L+12|0;B=L+8|0;C=a+40|0;D=a+64|0;u=k[c>>2]|0;d=0;t=0;s=0;while(1){f=u+t|0;e=x;c=k[e>>2]|0;e=k[e+4>>2]|0;q=y;f=uk(k[q>>2]|0,k[q+4>>2]|0,f|0,((f|0)<0)<<31>>31|0)|0;e=sl(f|0,M|0,c|0,e|0)|0;c=G;e=(k[k[b>>2]>>2]|0)+e|0;f=c+12|0;do{i[c>>0]=i[e>>0]|0;c=c+1|0;e=e+1|0}while((c|0)<(f|0));h=k[G>>2]|0;j=k[v>>2]|0;l=k[w>>2]|0;q=((h^318)+239^j)+239^l;p=(s|0)==0;b:do if(!p){f=s+-1|0;c=(f&s|0)==0;if(c)g=q&f;else g=(q>>>0)%(s>>>0)|0;e=k[(k[L>>2]|0)+(g<<2)>>2]|0;do if(e|0?(E=k[e>>2]|0,E|0):0){c:do if(c){c=E;while(1){if((k[c+4>>2]&f|0)!=(g|0)){e=22;break c}if(((k[c+8>>2]|0)==(h|0)?(k[c+12>>2]|0)==(j|0):0)?(k[c+16>>2]|0)==(l|0):0){e=21;break c}c=k[c>>2]|0;if(!c){e=22;break}}}else{c=E;while(1){if((((k[c+4>>2]|0)>>>0)%(s>>>0)|0|0)!=(g|0)){e=22;break c}if(((k[c+8>>2]|0)==(h|0)?(k[c+12>>2]|0)==(j|0):0)?(k[c+16>>2]|0)==(l|0):0){e=21;break c}c=k[c>>2]|0;if(!c){e=22;break}}}while(0);if((e|0)==21){e=0;k[(k[K>>2]|0)+(t<<2)>>2]=k[c+20>>2];break b}else if((e|0)==22)if(p){c=0;e=39;break b}else break}while(0);g=s+-1|0;e=(g&s|0)==0;if(e)c=g&q;else c=(q>>>0)%(s>>>0)|0;f=k[(k[L>>2]|0)+(c<<2)>>2]|0;if((f|0)!=0?(F=k[f>>2]|0,(F|0)!=0):0)if(e){e=F;while(1){if((k[e+4>>2]&g|0)!=(c|0)){e=39;break b}if(((k[e+8>>2]|0)==(h|0)?(k[e+12>>2]|0)==(j|0):0)?(k[e+16>>2]|0)==(l|0):0){e=51;break b}e=k[e>>2]|0;if(!e){e=39;break}}}else{e=F;while(1){if((((k[e+4>>2]|0)>>>0)%(s>>>0)|0|0)!=(c|0)){e=39;break b}if(((k[e+8>>2]|0)==(h|0)?(k[e+12>>2]|0)==(j|0):0)?(k[e+16>>2]|0)==(l|0):0){e=51;break b}e=k[e>>2]|0;if(!e){e=39;break}}}else e=39}else{c=0;e=39}while(0);if((e|0)==39){g=xk(24)|0;k[g+8>>2]=h;k[g+12>>2]=j;k[g+16>>2]=l;k[g+20>>2]=d;k[g+4>>2]=q;k[g>>2]=0;m=da(((k[A>>2]|0)+1|0)>>>0);O=da(s>>>0);n=da(o[H>>2]);do if(p|m>da(O*n)){c=(s>>>0>2&(s+-1&s|0)==0&1|s<<1)^1;e=~~da(_(da(m/n)))>>>0;Lg(L,c>>>0>>0?e:c);c=k[z>>2]|0;e=c+-1|0;if(!(e&c)){f=c;c=e&q;break}else{f=c;c=(q>>>0)%(c>>>0)|0;break}}else f=s;while(0);c=(k[L>>2]|0)+(c<<2)|0;e=k[c>>2]|0;if(!e){k[g>>2]=k[B>>2];k[B>>2]=g;k[c>>2]=B;c=k[g>>2]|0;if(c|0){c=k[c+4>>2]|0;e=f+-1|0;if(!(e&f))c=c&e;else c=(c>>>0)%(f>>>0)|0;k[(k[L>>2]|0)+(c<<2)>>2]=g}}else{k[g>>2]=k[e>>2];k[e>>2]=g}k[A>>2]=(k[A>>2]|0)+1;e=51}if((e|0)==51){q=C;s=k[q>>2]|0;q=uk(s|0,k[q+4>>2]|0,d|0,((d|0)<0)<<31>>31|0)|0;Ii((k[k[D>>2]>>2]|0)+q|0,G|0,s|0)|0;k[(k[K>>2]|0)+(t<<2)>>2]=d;d=d+1|0}c=t+1|0;e=k[J>>2]|0;if((c|0)>=(e|0)){l=d;break a}t=c;s=k[z>>2]|0}}else l=0;while(0);if((l|0)!=(e|0)){j=a+84|0;if(!(i[j>>0]|0)){e=k[a+68>>2]|0;c=(k[a+72>>2]|0)-e|0;if((c|0)>0){f=k[K>>2]|0;d=c>>2;c=0;do{a=e+(c<<2)|0;k[a>>2]=k[f+(k[a>>2]<<2)>>2];c=c+1|0}while((c|0)<(d|0))}}else{i[j>>0]=0;c=a+68|0;d=a+72|0;h=k[d>>2]|0;g=k[c>>2]|0;f=h-g>>2;if(e>>>0<=f>>>0){if(e>>>0>>0?(I=g+(e<<2)|0,(h|0)!=(I|0)):0)k[d>>2]=h+(~((h+-4-I|0)>>>2)<<2)}else{Ag(c,e-f|0,3152);e=k[J>>2]|0}if((e|0)>0){f=k[K>>2]|0;if(i[j>>0]|0)Ka(14270,14289,80,14321);d=k[a+68>>2]|0;c=0;do{k[d+(c<<2)>>2]=k[f+(c<<2)>>2];c=c+1|0}while((c|0)<(e|0))}}k[J>>2]=l}e=k[K>>2]|0;f=e;if(e|0){c=K+4|0;d=k[c>>2]|0;if((d|0)!=(e|0))k[c>>2]=d+(~((d+-4-f|0)>>>2)<<2);cn(e)}c=k[L+8>>2]|0;if(c|0)do{K=c;c=k[c>>2]|0;cn(K)}while((c|0)!=0);c=k[L>>2]|0;k[L>>2]=0;if(!c){r=N;return l|0}cn(c);r=N;return l|0}function Sb(a,b,c,d,e,f){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;f=f|0;var g=0,h=0,i=0,j=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,B=0,C=0,D=0,E=0,F=0,G=0,H=0;D=a+8|0;k[D>>2]=e;h=a+32|0;i=a+36|0;g=k[i>>2]|0;f=k[h>>2]|0;d=g-f>>2;if(d>>>0>=e>>>0){if(d>>>0>e>>>0?(j=f+(e<<2)|0,(g|0)!=(j|0)):0)k[i>>2]=g+(~((g+-4-j|0)>>>2)<<2)}else jh(h,e-d|0);A=e>>>0>1073741823?-1:e<<2;B=$m(A)|0;Vi(B|0,0,A|0)|0;C=$m(A)|0;Vi(C|0,0,A|0)|0;if((k[D>>2]|0)>0){l=a+16|0;j=a+32|0;m=a+12|0;i=0;do{h=k[B+(i<<2)>>2]|0;d=k[l>>2]|0;do if((h|0)<=(d|0)){d=k[m>>2]|0;f=k[j>>2]|0;g=f+(i<<2)|0;if((h|0)<(d|0)){k[g>>2]=d;g=f;break}else{k[g>>2]=h;g=f;break}}else{g=k[j>>2]|0;k[g+(i<<2)>>2]=d}while(0);i=i+1|0;d=k[D>>2]|0}while((i|0)<(d|0));if((d|0)>0){d=0;do{k[c+(d<<2)>>2]=(k[b+(d<<2)>>2]|0)+(k[g+(d<<2)>>2]|0);d=d+1|0;f=k[D>>2]|0}while((d|0)<(f|0));if((f|0)>0){f=a+20|0;d=0;do{g=c+(d<<2)|0;h=k[g>>2]|0;if((h|0)<=(k[l>>2]|0)){if((h|0)<(k[m>>2]|0))k[g>>2]=(k[f>>2]|0)+h}else k[g>>2]=h-(k[f>>2]|0);d=d+1|0}while((d|0)<(k[D>>2]|0))}}}t=k[a+48>>2]|0;u=a+56|0;f=k[u>>2]|0;h=k[f+4>>2]|0;g=k[f>>2]|0;A=h-g|0;v=A>>2;if((A|0)<=4){an(C);an(B);return 1}w=k[a+52>>2]|0;x=(e|0)>0;y=a+16|0;z=a+32|0;A=a+12|0;q=a+20|0;r=t+12|0;s=e<<2;d=1;while(1){if(h-g>>2>>>0<=d>>>0){H=28;break}p=k[g+(d<<2)>>2]|0;if(x)Vi(B|0,0,s|0)|0;if((p|0)>-1){o=k[r>>2]|0;a=0;n=p;while(1){g=k[o+(n<<2)>>2]|0;if((g|0)>=0){i=k[t>>2]|0;h=(g>>>0)%3|0;j=k[w>>2]|0;m=k[j+(k[i+(((g>>>0)/3|0)*12|0)+(h<<2)>>2]<<2)>>2]|0;f=g+1|0;f=((f|0)%3|0|0)==0?g+-2|0:f;if((f|0)<0)f=-1073741824;else f=k[i+(((f>>>0)/3|0)*12|0)+(((f>>>0)%3|0)<<2)>>2]|0;l=k[j+(f<<2)>>2]|0;f=((h|0)==0?2:-1)+g|0;if((f|0)<0)f=-1073741824;else f=k[i+(((f>>>0)/3|0)*12|0)+(((f>>>0)%3|0)<<2)>>2]|0;f=k[j+(f<<2)>>2]|0;if((m|0)<(d|0)&(l|0)<(d|0)&(f|0)<(d|0)){i=$(m,e)|0;h=$(l,e)|0;g=$(f,e)|0;if(x){f=0;do{k[C+(f<<2)>>2]=(k[c+(f+g<<2)>>2]|0)+(k[c+(f+h<<2)>>2]|0)-(k[c+(f+i<<2)>>2]|0);f=f+1|0}while((f|0)!=(e|0));if(x){f=0;do{m=B+(f<<2)|0;k[m>>2]=(k[m>>2]|0)+(k[C+(f<<2)>>2]|0);f=f+1|0}while((f|0)!=(e|0))}}g=a+1|0}else g=a}else g=a;f=(((n>>>0)%3|0|0)==0?2:-1)+n|0;do if((f|0)>=0){f=k[o+(f<<2)>>2]|0;if((f|0)>=0)if(!((f>>>0)%3|0)){f=f+2|0;break}else{f=f+-1|0;break}}while(0);n=(f|0)==(p|0)?-1073741824:f;if((n|0)<=-1)break;else a=g}l=$(d,e)|0;if(g){if(x){f=0;do{p=B+(f<<2)|0;k[p>>2]=(k[p>>2]|0)/(g|0)|0;f=f+1|0}while((f|0)!=(e|0))}m=c+(l<<2)|0;if((k[D>>2]|0)>0){j=0;do{i=k[B+(j<<2)>>2]|0;f=k[y>>2]|0;do if((i|0)<=(f|0)){f=k[A>>2]|0;g=k[z>>2]|0;h=g+(j<<2)|0;if((i|0)<(f|0)){k[h>>2]=f;h=g;break}else{k[h>>2]=i;h=g;break}}else{h=k[z>>2]|0;k[h+(j<<2)>>2]=f}while(0);j=j+1|0;f=k[D>>2]|0}while((j|0)<(f|0));if((f|0)>0){f=0;do{k[m+(f<<2)>>2]=(k[b+(f+l<<2)>>2]|0)+(k[h+(f<<2)>>2]|0);f=f+1|0;g=k[D>>2]|0}while((f|0)<(g|0));if((g|0)>0){f=0;do{g=m+(f<<2)|0;h=k[g>>2]|0;if((h|0)<=(k[y>>2]|0)){if((h|0)<(k[A>>2]|0))k[g>>2]=(k[q>>2]|0)+h}else k[g>>2]=h-(k[q>>2]|0);f=f+1|0}while((f|0)<(k[D>>2]|0))}}}}else{G=l;H=52}}else{G=$(d,e)|0;H=52}if((H|0)==52?(H=0,E=c+(($(d+-1|0,e)|0)<<2)|0,F=c+(G<<2)|0,(k[D>>2]|0)>0):0){j=0;do{i=k[E+(j<<2)>>2]|0;f=k[y>>2]|0;do if((i|0)<=(f|0)){f=k[A>>2]|0;g=k[z>>2]|0;h=g+(j<<2)|0;if((i|0)<(f|0)){k[h>>2]=f;h=g;break}else{k[h>>2]=i;h=g;break}}else{h=k[z>>2]|0;k[h+(j<<2)>>2]=f}while(0);j=j+1|0;f=k[D>>2]|0}while((j|0)<(f|0));if((f|0)>0){f=0;do{k[F+(f<<2)>>2]=(k[b+(f+G<<2)>>2]|0)+(k[h+(f<<2)>>2]|0);f=f+1|0;g=k[D>>2]|0}while((f|0)<(g|0));if((g|0)>0){f=0;do{g=F+(f<<2)|0;h=k[g>>2]|0;if((h|0)<=(k[y>>2]|0)){if((h|0)<(k[A>>2]|0))k[g>>2]=(k[q>>2]|0)+h}else k[g>>2]=h-(k[q>>2]|0);f=f+1|0}while((f|0)<(k[D>>2]|0))}}}d=d+1|0;if((d|0)>=(v|0)){H=25;break}f=k[u>>2]|0;g=k[f>>2]|0;h=k[f+4>>2]|0}if((H|0)==25){an(C);an(B);return 1}else if((H|0)==28)gm(f);return 0}function Tb(a,b,c,d,e,f){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;f=f|0;var g=0,h=0,i=0,j=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,B=0,C=0,D=0,E=0,F=0;F=a+8|0;k[F>>2]=e;do if(d|0){f=k[b>>2]|0;l=a+16|0;k[l>>2]=f;j=a+12|0;k[j>>2]=f;if((d|0)>1){i=1;h=f;while(1){g=k[b+(i<<2)>>2]|0;if((g|0)>=(h|0))if((g|0)>(f|0)){k[l>>2]=g;f=g;g=h}else g=h;else k[j>>2]=g;i=i+1|0;if((i|0)==(d|0))break;else h=g}}else g=f;z=1-g+f|0;k[a+20>>2]=z;f=(z|0)/2|0;g=a+24|0;k[g>>2]=f;k[a+28>>2]=0-f;if(!(z&1))k[g>>2]=f+-1;f=a+32|0;g=a+36|0;j=k[g>>2]|0;h=k[f>>2]|0;i=j-h>>2;if(i>>>0>>0){jh(f,e-i|0);break}if(i>>>0>e>>>0?(m=h+(e<<2)|0,(j|0)!=(m|0)):0)k[g>>2]=j+(~((j+-4-m|0)>>>2)<<2)}while(0);o=e>>>0>1073741823?-1:e<<2;z=$m(o)|0;Vi(z|0,0,o|0)|0;o=k[a+48>>2]|0;p=a+56|0;i=k[p>>2]|0;h=k[i+4>>2]|0;g=k[i>>2]|0;f=h-g|0;a:do if((f|0)>4){q=k[a+52>>2]|0;r=a+16|0;s=a+32|0;t=a+12|0;u=a+28|0;v=a+20|0;w=a+24|0;x=o+12|0;y=(e|0)>0;d=f>>2;f=i;while(1){n=d+-1|0;if(h-g>>2>>>0<=n>>>0)break;f=k[g+(n<<2)>>2]|0;m=$(n,e)|0;if((f|0)>=0?(A=k[(k[x>>2]|0)+(f<<2)>>2]|0,(A|0)>=0):0){h=k[o>>2]|0;g=(A>>>0)%3|0;i=k[q>>2]|0;l=k[i+(k[h+(((A>>>0)/3|0)*12|0)+(g<<2)>>2]<<2)>>2]|0;f=A+1|0;f=((f|0)%3|0|0)==0?A+-2|0:f;if((f|0)<0)f=-1073741824;else f=k[h+(((f>>>0)/3|0)*12|0)+(((f>>>0)%3|0)<<2)>>2]|0;j=k[i+(f<<2)>>2]|0;f=((g|0)==0?2:-1)+A|0;if((f|0)<0)f=-1073741824;else f=k[h+(((f>>>0)/3|0)*12|0)+(((f>>>0)%3|0)<<2)>>2]|0;f=k[i+(f<<2)>>2]|0;if((l|0)<(n|0)&(j|0)<(n|0)&(f|0)<(n|0)){i=$(l,e)|0;h=$(j,e)|0;g=$(f,e)|0;if(y){f=0;do{k[z+(f<<2)>>2]=(k[b+(f+g<<2)>>2]|0)+(k[b+(f+h<<2)>>2]|0)-(k[b+(f+i<<2)>>2]|0);f=f+1|0}while((f|0)!=(e|0))}l=b+(m<<2)|0;if((k[F>>2]|0)>0){j=0;do{i=k[z+(j<<2)>>2]|0;f=k[r>>2]|0;do if((i|0)<=(f|0)){f=k[t>>2]|0;g=k[s>>2]|0;h=g+(j<<2)|0;if((i|0)<(f|0)){k[h>>2]=f;h=g;break}else{k[h>>2]=i;h=g;break}}else{h=k[s>>2]|0;k[h+(j<<2)>>2]=f}while(0);j=j+1|0;f=k[F>>2]|0}while((j|0)<(f|0));if((f|0)>0){f=0;do{k[c+(f+m<<2)>>2]=(k[l+(f<<2)>>2]|0)-(k[h+(f<<2)>>2]|0);f=f+1|0;g=k[F>>2]|0}while((f|0)<(g|0));if((g|0)>0){f=0;do{g=c+(f+m<<2)|0;h=k[g>>2]|0;if((h|0)>=(k[u>>2]|0)){if((h|0)>(k[w>>2]|0))k[g>>2]=h-(k[v>>2]|0)}else k[g>>2]=(k[v>>2]|0)+h;f=f+1|0}while((f|0)<(k[F>>2]|0))}}}}else D=31}else D=31;if((D|0)==31?(D=0,B=b+(m<<2)|0,C=b+(($(d+-2|0,e)|0)<<2)|0,(k[F>>2]|0)>0):0){j=0;do{i=k[C+(j<<2)>>2]|0;f=k[r>>2]|0;do if((i|0)<=(f|0)){f=k[t>>2]|0;g=k[s>>2]|0;h=g+(j<<2)|0;if((i|0)<(f|0)){k[h>>2]=f;h=g;break}else{k[h>>2]=i;h=g;break}}else{h=k[s>>2]|0;k[h+(j<<2)>>2]=f}while(0);j=j+1|0;f=k[F>>2]|0}while((j|0)<(f|0));if((f|0)>0){f=0;do{k[c+(f+m<<2)>>2]=(k[B+(f<<2)>>2]|0)-(k[h+(f<<2)>>2]|0);f=f+1|0;g=k[F>>2]|0}while((f|0)<(g|0));if((g|0)>0){f=0;do{g=c+(f+m<<2)|0;h=k[g>>2]|0;if((h|0)>=(k[u>>2]|0)){if((h|0)>(k[w>>2]|0))k[g>>2]=h-(k[v>>2]|0)}else k[g>>2]=(k[v>>2]|0)+h;f=f+1|0}while((f|0)<(k[F>>2]|0))}}}if((n|0)<=1){E=z;break a}f=k[p>>2]|0;d=n;g=k[f>>2]|0;h=k[f+4>>2]|0}gm(f)}else E=z;while(0);if((e|0)>0)Vi(z|0,0,e<<2|0)|0;if((k[F>>2]|0)<=0){an(z);return 1}l=a+16|0;d=a+32|0;m=a+12|0;j=0;do{i=k[E+(j<<2)>>2]|0;f=k[l>>2]|0;do if((i|0)<=(f|0)){f=k[m>>2]|0;g=k[d>>2]|0;h=g+(j<<2)|0;if((i|0)<(f|0)){k[h>>2]=f;h=g;break}else{k[h>>2]=i;h=g;break}}else{h=k[d>>2]|0;k[h+(j<<2)>>2]=f}while(0);j=j+1|0;f=k[F>>2]|0}while((j|0)<(f|0));if((f|0)>0)f=0;else{an(z);return 1}do{k[c+(f<<2)>>2]=(k[b+(f<<2)>>2]|0)-(k[h+(f<<2)>>2]|0);f=f+1|0;g=k[F>>2]|0}while((f|0)<(g|0));if((g|0)<=0){an(z);return 1}j=a+28|0;l=a+20|0;g=a+24|0;f=0;do{h=c+(f<<2)|0;i=k[h>>2]|0;if((i|0)>=(k[j>>2]|0)){if((i|0)>(k[g>>2]|0))k[h>>2]=i-(k[l>>2]|0)}else k[h>>2]=(k[l>>2]|0)+i;f=f+1|0}while((f|0)<(k[F>>2]|0));an(z);return 1}function Ub(a,b,c){a=a|0;b=b|0;c=c|0;var d=0,e=0,f=0,g=0,h=0,j=0,m=Pa,n=Pa,p=0,q=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,B=0,C=0,D=0,E=0,F=0,G=0,H=0,I=0,J=0,K=0,L=Pa;K=r;r=r+48|0;J=K+20|0;E=K;I=K+8|0;F=J+16|0;k[J>>2]=0;k[J+4>>2]=0;k[J+8>>2]=0;k[J+12>>2]=0;o[F>>2]=da(1.0);H=a+80|0;bj(I,k[H>>2]|0);e=k[H>>2]|0;a:do if((e|0)>0){v=b+48|0;w=b+40|0;x=J+4|0;y=J+12|0;z=J+8|0;A=a+40|0;B=a+64|0;u=k[c>>2]|0;c=0;t=0;p=0;while(1){q=u+c|0;j=v;h=k[j>>2]|0;j=k[j+4>>2]|0;s=w;s=uk(q|0,((q|0)<0)<<31>>31|0,k[s>>2]|0,k[s+4>>2]|0)|0;j=sl(s|0,M|0,h|0,j|0)|0;j=(k[k[b>>2]>>2]|0)+j|0;h=j;h=l[h>>0]|l[h+1>>0]<<8|l[h+2>>0]<<16|l[h+3>>0]<<24;j=j+4|0;j=l[j>>0]|l[j+1>>0]<<8|l[j+2>>0]<<16|l[j+3>>0]<<24;s=E;k[s>>2]=h;k[s+4>>2]=j;s=(h^318)+239^j;q=(p|0)==0;b:do if(!q){f=p+-1|0;d=(f&p|0)==0;if(d)g=s&f;else g=(s>>>0)%(p>>>0)|0;e=k[(k[J>>2]|0)+(g<<2)>>2]|0;do if(e|0?(C=k[e>>2]|0,C|0):0){c:do if(d){d=C;while(1){if((k[d+4>>2]&f|0)!=(g|0)){e=20;break c}if((k[d+8>>2]|0)==(h|0)?(k[d+12>>2]|0)==(j|0):0){e=19;break c}d=k[d>>2]|0;if(!d){e=20;break}}}else{d=C;while(1){if((((k[d+4>>2]|0)>>>0)%(p>>>0)|0|0)!=(g|0)){e=20;break c}if((k[d+8>>2]|0)==(h|0)?(k[d+12>>2]|0)==(j|0):0){e=19;break c}d=k[d>>2]|0;if(!d){e=20;break}}}while(0);if((e|0)==19){e=0;k[(k[I>>2]|0)+(c<<2)>>2]=k[d+16>>2];d=t;break b}else if((e|0)==20)if(q){d=0;e=35;break b}else break}while(0);g=p+-1|0;f=(g&p|0)==0;if(f)d=g&s;else d=(s>>>0)%(p>>>0)|0;e=k[(k[J>>2]|0)+(d<<2)>>2]|0;if((e|0)!=0?(D=k[e>>2]|0,(D|0)!=0):0)if(f){e=D;while(1){if((k[e+4>>2]&g|0)!=(d|0)){e=35;break b}if((k[e+8>>2]|0)==(h|0)?(k[e+12>>2]|0)==(j|0):0){e=47;break b}e=k[e>>2]|0;if(!e){e=35;break}}}else{e=D;while(1){if((((k[e+4>>2]|0)>>>0)%(p>>>0)|0|0)!=(d|0)){e=35;break b}if((k[e+8>>2]|0)==(h|0)?(k[e+12>>2]|0)==(j|0):0){e=47;break b}e=k[e>>2]|0;if(!e){e=35;break}}}else e=35}else{d=0;e=35}while(0);if((e|0)==35){g=xk(20)|0;f=g+8|0;k[f>>2]=h;k[f+4>>2]=j;k[g+16>>2]=t;k[g+4>>2]=s;k[g>>2]=0;m=da(((k[y>>2]|0)+1|0)>>>0);L=da(p>>>0);n=da(o[F>>2]);do if(q|m>da(L*n)){d=(p>>>0>2&(p+-1&p|0)==0&1|p<<1)^1;e=~~da(_(da(m/n)))>>>0;Mg(J,d>>>0>>0?e:d);d=k[x>>2]|0;e=d+-1|0;if(!(e&d)){f=d;d=e&s;break}else{f=d;d=(s>>>0)%(d>>>0)|0;break}}else f=p;while(0);d=(k[J>>2]|0)+(d<<2)|0;e=k[d>>2]|0;if(!e){k[g>>2]=k[z>>2];k[z>>2]=g;k[d>>2]=z;d=k[g>>2]|0;if(d|0){d=k[d+4>>2]|0;e=f+-1|0;if(!(e&f))d=d&e;else d=(d>>>0)%(f>>>0)|0;k[(k[J>>2]|0)+(d<<2)>>2]=g}}else{k[g>>2]=k[e>>2];k[e>>2]=g}k[y>>2]=(k[y>>2]|0)+1;e=47}if((e|0)==47){s=A;d=k[s>>2]|0;s=uk(d|0,k[s+4>>2]|0,t|0,((t|0)<0)<<31>>31|0)|0;Ii((k[k[B>>2]>>2]|0)+s|0,E|0,d|0)|0;k[(k[I>>2]|0)+(c<<2)>>2]=t;d=t+1|0}c=c+1|0;e=k[H>>2]|0;if((c|0)>=(e|0)){p=d;break a}t=d;p=k[x>>2]|0}}else p=0;while(0);if((p|0)!=(e|0)){j=a+84|0;if(!(i[j>>0]|0)){e=k[a+68>>2]|0;c=(k[a+72>>2]|0)-e|0;if((c|0)>0){f=k[I>>2]|0;d=c>>2;c=0;do{a=e+(c<<2)|0;k[a>>2]=k[f+(k[a>>2]<<2)>>2];c=c+1|0}while((c|0)<(d|0))}}else{i[j>>0]=0;c=a+68|0;d=a+72|0;h=k[d>>2]|0;g=k[c>>2]|0;f=h-g>>2;if(e>>>0<=f>>>0){if(e>>>0>>0?(G=g+(e<<2)|0,(h|0)!=(G|0)):0)k[d>>2]=h+(~((h+-4-G|0)>>>2)<<2)}else{Ag(c,e-f|0,3152);e=k[H>>2]|0}if((e|0)>0){f=k[I>>2]|0;if(i[j>>0]|0)Ka(14270,14289,80,14321);d=k[a+68>>2]|0;c=0;do{k[d+(c<<2)>>2]=k[f+(c<<2)>>2];c=c+1|0}while((c|0)<(e|0))}}k[H>>2]=p}e=k[I>>2]|0;f=e;if(e|0){c=I+4|0;d=k[c>>2]|0;if((d|0)!=(e|0))k[c>>2]=d+(~((d+-4-f|0)>>>2)<<2);cn(e)}c=k[J+8>>2]|0;if(c|0)do{I=c;c=k[c>>2]|0;cn(I)}while((c|0)!=0);c=k[J>>2]|0;k[J>>2]=0;if(!c){r=K;return p|0}cn(c);r=K;return p|0}function Vb(a,b,c,d,e,f){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;f=f|0;var g=0,h=0,i=0,j=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,B=0,C=0,D=0,E=0,F=0,G=0,H=0,I=0,J=0;B=a+8|0;k[B>>2]=e;h=a+32|0;i=a+36|0;g=k[i>>2]|0;f=k[h>>2]|0;d=g-f>>2;if(d>>>0>=e>>>0){if(d>>>0>e>>>0?(j=f+(e<<2)|0,(g|0)!=(j|0)):0)k[i>>2]=g+(~((g+-4-j|0)>>>2)<<2)}else jh(h,e-d|0);y=e>>>0>1073741823?-1:e<<2;z=$m(y)|0;Vi(z|0,0,y|0)|0;A=$m(y)|0;Vi(A|0,0,y|0)|0;if((k[B>>2]|0)>0){l=a+16|0;j=a+32|0;m=a+12|0;i=0;do{h=k[z+(i<<2)>>2]|0;d=k[l>>2]|0;do if((h|0)<=(d|0)){d=k[m>>2]|0;f=k[j>>2]|0;g=f+(i<<2)|0;if((h|0)<(d|0)){k[g>>2]=d;g=f;break}else{k[g>>2]=h;g=f;break}}else{g=k[j>>2]|0;k[g+(i<<2)>>2]=d}while(0);i=i+1|0;d=k[B>>2]|0}while((i|0)<(d|0));if((d|0)>0){d=0;do{k[c+(d<<2)>>2]=(k[b+(d<<2)>>2]|0)+(k[g+(d<<2)>>2]|0);d=d+1|0;f=k[B>>2]|0}while((d|0)<(f|0));if((f|0)>0){f=a+20|0;d=0;do{g=c+(d<<2)|0;h=k[g>>2]|0;if((h|0)<=(k[l>>2]|0)){if((h|0)<(k[m>>2]|0))k[g>>2]=(k[f>>2]|0)+h}else k[g>>2]=h-(k[f>>2]|0);d=d+1|0}while((d|0)<(k[B>>2]|0))}}}r=k[a+48>>2]|0;s=a+56|0;g=k[s>>2]|0;f=k[g+4>>2]|0;h=k[g>>2]|0;y=f-h|0;t=y>>2;if((y|0)<=4){an(A);an(z);return 1}u=k[a+52>>2]|0;v=(e|0)>0;w=a+16|0;x=a+32|0;y=a+12|0;n=a+20|0;o=r+64|0;p=r+28|0;q=e<<2;d=1;while(1){if(f-h>>2>>>0<=d>>>0){J=28;break}a=k[h+(d<<2)>>2]|0;if(v)Vi(z|0,0,q|0)|0;if((a|0)>-1){m=k[r>>2]|0;j=0;l=a;do{if(((k[m+(l>>>5<<2)>>2]&1<<(l&31)|0)==0?(C=k[(k[(k[o>>2]|0)+12>>2]|0)+(l<<2)>>2]|0,(C|0)>=0):0)?(F=k[p>>2]|0,i=k[u>>2]|0,D=k[i+(k[F+(C<<2)>>2]<<2)>>2]|0,E=C+1|0,E=k[i+(k[F+((((E|0)%3|0|0)==0?C+-2|0:E)<<2)>>2]<<2)>>2]|0,F=k[i+(k[F+((((C>>>0)%3|0|0)==0?2:-1)+C<<2)>>2]<<2)>>2]|0,(D|0)<(d|0)&(E|0)<(d|0)&(F|0)<(d|0)):0){g=$(D,e)|0;h=$(E,e)|0;i=$(F,e)|0;if(v){f=0;do{k[A+(f<<2)>>2]=(k[c+(f+i<<2)>>2]|0)+(k[c+(f+h<<2)>>2]|0)-(k[c+(f+g<<2)>>2]|0);f=f+1|0}while((f|0)!=(e|0));if(v){f=0;do{i=z+(f<<2)|0;k[i>>2]=(k[i>>2]|0)+(k[A+(f<<2)>>2]|0);f=f+1|0}while((f|0)!=(e|0))}}j=j+1|0}f=(((l>>>0)%3|0|0)==0?2:-1)+l|0;do if(!(k[m+(f>>>5<<2)>>2]&1<<(f&31))){if((f|0)>=0){f=k[(k[(k[o>>2]|0)+12>>2]|0)+(f<<2)>>2]|0;if((f|0)>=0)if(!((f>>>0)%3|0)){f=f+2|0;break}else{f=f+-1|0;break}}}else f=-1073741824;while(0);l=(f|0)==(a|0)?-1073741824:f}while((l|0)>-1);l=$(d,e)|0;if(j){if(v){f=0;do{a=z+(f<<2)|0;k[a>>2]=(k[a>>2]|0)/(j|0)|0;f=f+1|0}while((f|0)!=(e|0))}m=c+(l<<2)|0;if((k[B>>2]|0)>0){j=0;do{i=k[z+(j<<2)>>2]|0;f=k[w>>2]|0;do if((i|0)<=(f|0)){f=k[y>>2]|0;g=k[x>>2]|0;h=g+(j<<2)|0;if((i|0)<(f|0)){k[h>>2]=f;h=g;break}else{k[h>>2]=i;h=g;break}}else{h=k[x>>2]|0;k[h+(j<<2)>>2]=f}while(0);j=j+1|0;f=k[B>>2]|0}while((j|0)<(f|0));if((f|0)>0){f=0;do{k[m+(f<<2)>>2]=(k[b+(f+l<<2)>>2]|0)+(k[h+(f<<2)>>2]|0);f=f+1|0;g=k[B>>2]|0}while((f|0)<(g|0));if((g|0)>0){f=0;do{g=m+(f<<2)|0;h=k[g>>2]|0;if((h|0)<=(k[w>>2]|0)){if((h|0)<(k[y>>2]|0))k[g>>2]=(k[n>>2]|0)+h}else k[g>>2]=h-(k[n>>2]|0);f=f+1|0}while((f|0)<(k[B>>2]|0))}}}}else{I=l;J=50}}else{I=$(d,e)|0;J=50}if((J|0)==50?(J=0,G=c+(($(d+-1|0,e)|0)<<2)|0,H=c+(I<<2)|0,(k[B>>2]|0)>0):0){j=0;do{i=k[G+(j<<2)>>2]|0;f=k[w>>2]|0;do if((i|0)<=(f|0)){f=k[y>>2]|0;g=k[x>>2]|0;h=g+(j<<2)|0;if((i|0)<(f|0)){k[h>>2]=f;h=g;break}else{k[h>>2]=i;h=g;break}}else{h=k[x>>2]|0;k[h+(j<<2)>>2]=f}while(0);j=j+1|0;f=k[B>>2]|0}while((j|0)<(f|0));if((f|0)>0){f=0;do{k[H+(f<<2)>>2]=(k[b+(f+I<<2)>>2]|0)+(k[h+(f<<2)>>2]|0);f=f+1|0;g=k[B>>2]|0}while((f|0)<(g|0));if((g|0)>0){f=0;do{g=H+(f<<2)|0;h=k[g>>2]|0;if((h|0)<=(k[w>>2]|0)){if((h|0)<(k[y>>2]|0))k[g>>2]=(k[n>>2]|0)+h}else k[g>>2]=h-(k[n>>2]|0);f=f+1|0}while((f|0)<(k[B>>2]|0))}}}d=d+1|0;if((d|0)>=(t|0)){J=25;break}f=k[s>>2]|0;g=f;h=k[f>>2]|0;f=k[f+4>>2]|0}if((J|0)==25){an(A);an(z);return 1}else if((J|0)==28)gm(g);return 0}function Wb(a,b,c){a=a|0;b=b|0;c=c|0;var d=0,e=0,f=0,g=0,h=0,m=0,n=Pa,p=Pa,q=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,B=0,C=0,D=0,E=0,F=0,G=0,H=0,I=0,J=0,K=0,L=0,N=0,O=Pa;N=r;r=r+48|0;L=N+16|0;G=N+12|0;K=N;H=L+16|0;k[L>>2]=0;k[L+4>>2]=0;k[L+8>>2]=0;k[L+12>>2]=0;o[H>>2]=da(1.0);J=a+80|0;bj(K,k[J>>2]|0);e=k[J>>2]|0;a:do if((e|0)>0){x=b+48|0;y=b+40|0;z=L+4|0;A=L+12|0;B=L+8|0;C=a+40|0;D=a+64|0;w=k[c>>2]|0;c=0;v=0;s=0;while(1){m=w+c|0;q=x;h=k[q>>2]|0;q=k[q+4>>2]|0;u=y;u=uk(m|0,((m|0)<0)<<31>>31|0,k[u>>2]|0,k[u+4>>2]|0)|0;q=sl(u|0,M|0,h|0,q|0)|0;q=(k[k[b>>2]>>2]|0)+q|0;q=l[q>>0]|l[q+1>>0]<<8|l[q+2>>0]<<16|l[q+3>>0]<<24;k[G>>2]=q;h=q&65535;u=q>>>16;m=u&65535;u=(q&65535^318)+239^u;t=(s|0)==0;b:do if(!t){f=s+-1|0;d=(f&s|0)==0;if(d)g=u&f;else g=(u>>>0)%(s>>>0)|0;e=k[(k[L>>2]|0)+(g<<2)>>2]|0;do if(e|0?(E=k[e>>2]|0,E|0):0){c:do if(d){d=E;while(1){if((k[d+4>>2]&f|0)!=(g|0)){e=20;break c}if((j[d+8>>1]|0)==h<<16>>16?(j[d+10>>1]|0)==m<<16>>16:0){e=19;break c}d=k[d>>2]|0;if(!d){e=20;break}}}else{d=E;while(1){if((((k[d+4>>2]|0)>>>0)%(s>>>0)|0|0)!=(g|0)){e=20;break c}if((j[d+8>>1]|0)==h<<16>>16?(j[d+10>>1]|0)==m<<16>>16:0){e=19;break c}d=k[d>>2]|0;if(!d){e=20;break}}}while(0);if((e|0)==19){e=0;k[(k[K>>2]|0)+(c<<2)>>2]=k[d+12>>2];d=v;break b}else if((e|0)==20)if(t){d=0;e=35;break b}else break}while(0);g=s+-1|0;e=(g&s|0)==0;if(e)d=g&u;else d=(u>>>0)%(s>>>0)|0;f=k[(k[L>>2]|0)+(d<<2)>>2]|0;if((f|0)!=0?(F=k[f>>2]|0,(F|0)!=0):0)if(e){e=F;while(1){if((k[e+4>>2]&g|0)!=(d|0)){e=35;break b}if((j[e+8>>1]|0)==h<<16>>16?(j[e+10>>1]|0)==m<<16>>16:0){e=47;break b}e=k[e>>2]|0;if(!e){e=35;break}}}else{e=F;while(1){if((((k[e+4>>2]|0)>>>0)%(s>>>0)|0|0)!=(d|0)){e=35;break b}if((j[e+8>>1]|0)==h<<16>>16?(j[e+10>>1]|0)==m<<16>>16:0){e=47;break b}e=k[e>>2]|0;if(!e){e=35;break}}}else e=35}else{d=0;e=35}while(0);if((e|0)==35){g=xk(16)|0;m=g+8|0;j[m>>1]=q;j[m+2>>1]=q>>>16;k[g+12>>2]=v;k[g+4>>2]=u;k[g>>2]=0;n=da(((k[A>>2]|0)+1|0)>>>0);O=da(s>>>0);p=da(o[H>>2]);do if(t|n>da(O*p)){d=(s>>>0>2&(s+-1&s|0)==0&1|s<<1)^1;e=~~da(_(da(n/p)))>>>0;Ig(L,d>>>0>>0?e:d);d=k[z>>2]|0;e=d+-1|0;if(!(e&d)){f=d;d=e&u;break}else{f=d;d=(u>>>0)%(d>>>0)|0;break}}else f=s;while(0);d=(k[L>>2]|0)+(d<<2)|0;e=k[d>>2]|0;if(!e){k[g>>2]=k[B>>2];k[B>>2]=g;k[d>>2]=B;d=k[g>>2]|0;if(d|0){d=k[d+4>>2]|0;e=f+-1|0;if(!(e&f))d=d&e;else d=(d>>>0)%(f>>>0)|0;k[(k[L>>2]|0)+(d<<2)>>2]=g}}else{k[g>>2]=k[e>>2];k[e>>2]=g}k[A>>2]=(k[A>>2]|0)+1;e=47}if((e|0)==47){u=C;d=k[u>>2]|0;u=uk(d|0,k[u+4>>2]|0,v|0,((v|0)<0)<<31>>31|0)|0;Ii((k[k[D>>2]>>2]|0)+u|0,G|0,d|0)|0;k[(k[K>>2]|0)+(c<<2)>>2]=v;d=v+1|0}c=c+1|0;e=k[J>>2]|0;if((c|0)>=(e|0)){q=d;break a}v=d;s=k[z>>2]|0}}else q=0;while(0);if((q|0)!=(e|0)){m=a+84|0;if(!(i[m>>0]|0)){e=k[a+68>>2]|0;c=(k[a+72>>2]|0)-e|0;if((c|0)>0){f=k[K>>2]|0;d=c>>2;c=0;do{a=e+(c<<2)|0;k[a>>2]=k[f+(k[a>>2]<<2)>>2];c=c+1|0}while((c|0)<(d|0))}}else{i[m>>0]=0;c=a+68|0;d=a+72|0;h=k[d>>2]|0;g=k[c>>2]|0;f=h-g>>2;if(e>>>0<=f>>>0){if(e>>>0>>0?(I=g+(e<<2)|0,(h|0)!=(I|0)):0)k[d>>2]=h+(~((h+-4-I|0)>>>2)<<2)}else{Ag(c,e-f|0,3152);e=k[J>>2]|0}if((e|0)>0){f=k[K>>2]|0;if(i[m>>0]|0)Ka(14270,14289,80,14321);d=k[a+68>>2]|0;c=0;do{k[d+(c<<2)>>2]=k[f+(c<<2)>>2];c=c+1|0}while((c|0)<(e|0))}}k[J>>2]=q}e=k[K>>2]|0;f=e;if(e|0){c=K+4|0;d=k[c>>2]|0;if((d|0)!=(e|0))k[c>>2]=d+(~((d+-4-f|0)>>>2)<<2);cn(e)}c=k[L+8>>2]|0;if(c|0)do{K=c;c=k[c>>2]|0;cn(K)}while((c|0)!=0);c=k[L>>2]|0;k[L>>2]=0;if(!c){r=N;return q|0}cn(c);r=N;return q|0}function Xb(a,b,c){a=a|0;b=b|0;c=c|0;var d=0,e=0,f=0,g=0,h=0,m=0,n=Pa,p=Pa,q=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,B=0,C=0,D=0,E=0,F=0,G=0,H=0,I=0,J=0,K=0,L=0,N=0,O=Pa;N=r;r=r+48|0;L=N+12|0;G=N+32|0;K=N;H=L+16|0;k[L>>2]=0;k[L+4>>2]=0;k[L+8>>2]=0;k[L+12>>2]=0;o[H>>2]=da(1.0);J=a+80|0;bj(K,k[J>>2]|0);e=k[J>>2]|0;a:do if((e|0)>0){x=b+48|0;y=b+40|0;z=L+4|0;A=L+12|0;B=L+8|0;C=a+40|0;D=a+64|0;w=k[c>>2]|0;c=0;v=0;s=0;while(1){m=w+c|0;q=x;h=k[q>>2]|0;q=k[q+4>>2]|0;u=y;u=uk(m|0,((m|0)<0)<<31>>31|0,k[u>>2]|0,k[u+4>>2]|0)|0;q=sl(u|0,M|0,h|0,q|0)|0;q=(k[k[b>>2]>>2]|0)+q|0;q=l[q>>0]|l[q+1>>0]<<8;j[G>>1]=q;h=q&255;u=(q&65535)>>>8;m=u&255;u=(q&255^318)+239^u&65535;t=(s|0)==0;b:do if(!t){f=s+-1|0;d=(f&s|0)==0;if(d)g=u&f;else g=(u>>>0)%(s>>>0)|0;e=k[(k[L>>2]|0)+(g<<2)>>2]|0;do if(e|0?(E=k[e>>2]|0,E|0):0){c:do if(d){d=E;while(1){if((k[d+4>>2]&f|0)!=(g|0)){e=20;break c}if((i[d+8>>0]|0)==h<<24>>24?(i[d+9>>0]|0)==m<<24>>24:0){e=19;break c}d=k[d>>2]|0;if(!d){e=20;break}}}else{d=E;while(1){if((((k[d+4>>2]|0)>>>0)%(s>>>0)|0|0)!=(g|0)){e=20;break c}if((i[d+8>>0]|0)==h<<24>>24?(i[d+9>>0]|0)==m<<24>>24:0){e=19;break c}d=k[d>>2]|0;if(!d){e=20;break}}}while(0);if((e|0)==19){e=0;k[(k[K>>2]|0)+(c<<2)>>2]=k[d+12>>2];d=v;break b}else if((e|0)==20)if(t){d=0;e=35;break b}else break}while(0);g=s+-1|0;e=(g&s|0)==0;if(e)d=g&u;else d=(u>>>0)%(s>>>0)|0;f=k[(k[L>>2]|0)+(d<<2)>>2]|0;if((f|0)!=0?(F=k[f>>2]|0,(F|0)!=0):0)if(e){e=F;while(1){if((k[e+4>>2]&g|0)!=(d|0)){e=35;break b}if((i[e+8>>0]|0)==h<<24>>24?(i[e+9>>0]|0)==m<<24>>24:0){e=47;break b}e=k[e>>2]|0;if(!e){e=35;break}}}else{e=F;while(1){if((((k[e+4>>2]|0)>>>0)%(s>>>0)|0|0)!=(d|0)){e=35;break b}if((i[e+8>>0]|0)==h<<24>>24?(i[e+9>>0]|0)==m<<24>>24:0){e=47;break b}e=k[e>>2]|0;if(!e){e=35;break}}}else e=35}else{d=0;e=35}while(0);if((e|0)==35){g=xk(16)|0;m=g+8|0;i[m>>0]=q;i[m+1>>0]=q>>8;k[g+12>>2]=v;k[g+4>>2]=u;k[g>>2]=0;n=da(((k[A>>2]|0)+1|0)>>>0);O=da(s>>>0);p=da(o[H>>2]);do if(t|n>da(O*p)){d=(s>>>0>2&(s+-1&s|0)==0&1|s<<1)^1;e=~~da(_(da(n/p)))>>>0;Pg(L,d>>>0>>0?e:d);d=k[z>>2]|0;e=d+-1|0;if(!(e&d)){f=d;d=e&u;break}else{f=d;d=(u>>>0)%(d>>>0)|0;break}}else f=s;while(0);d=(k[L>>2]|0)+(d<<2)|0;e=k[d>>2]|0;if(!e){k[g>>2]=k[B>>2];k[B>>2]=g;k[d>>2]=B;d=k[g>>2]|0;if(d|0){d=k[d+4>>2]|0;e=f+-1|0;if(!(e&f))d=d&e;else d=(d>>>0)%(f>>>0)|0;k[(k[L>>2]|0)+(d<<2)>>2]=g}}else{k[g>>2]=k[e>>2];k[e>>2]=g}k[A>>2]=(k[A>>2]|0)+1;e=47}if((e|0)==47){u=C;d=k[u>>2]|0;u=uk(d|0,k[u+4>>2]|0,v|0,((v|0)<0)<<31>>31|0)|0;Ii((k[k[D>>2]>>2]|0)+u|0,G|0,d|0)|0;k[(k[K>>2]|0)+(c<<2)>>2]=v;d=v+1|0}c=c+1|0;e=k[J>>2]|0;if((c|0)>=(e|0)){q=d;break a}v=d;s=k[z>>2]|0}}else q=0;while(0);if((q|0)!=(e|0)){m=a+84|0;if(!(i[m>>0]|0)){e=k[a+68>>2]|0;c=(k[a+72>>2]|0)-e|0;if((c|0)>0){f=k[K>>2]|0;d=c>>2;c=0;do{a=e+(c<<2)|0;k[a>>2]=k[f+(k[a>>2]<<2)>>2];c=c+1|0}while((c|0)<(d|0))}}else{i[m>>0]=0;c=a+68|0;d=a+72|0;h=k[d>>2]|0;g=k[c>>2]|0;f=h-g>>2;if(e>>>0<=f>>>0){if(e>>>0>>0?(I=g+(e<<2)|0,(h|0)!=(I|0)):0)k[d>>2]=h+(~((h+-4-I|0)>>>2)<<2)}else{Ag(c,e-f|0,3152);e=k[J>>2]|0}if((e|0)>0){f=k[K>>2]|0;if(i[m>>0]|0)Ka(14270,14289,80,14321);d=k[a+68>>2]|0;c=0;do{k[d+(c<<2)>>2]=k[f+(c<<2)>>2];c=c+1|0}while((c|0)<(e|0))}}k[J>>2]=q}e=k[K>>2]|0;f=e;if(e|0){c=K+4|0;d=k[c>>2]|0;if((d|0)!=(e|0))k[c>>2]=d+(~((d+-4-f|0)>>>2)<<2);cn(e)}c=k[L+8>>2]|0;if(c|0)do{K=c;c=k[c>>2]|0;cn(K)}while((c|0)!=0);c=k[L>>2]|0;k[L>>2]=0;if(!c){r=N;return q|0}cn(c);r=N;return q|0}function Yb(a,b,c){a=a|0;b=b|0;c=c|0;var d=0,e=0,f=0,g=0,h=0,j=0;j=r;r=r+32|0;d=j+16|0;e=j+12|0;f=j+8|0;g=j+4|0;h=j;switch(k[b+28>>2]|0){case 9:{c=k[c>>2]|0;switch(i[b+24>>0]|0){case 1:{k[e>>2]=c;k[d>>2]=k[e>>2];c=cc(a,b,d)|0;break}case 2:{k[f>>2]=c;k[d>>2]=k[f>>2];c=Ub(a,b,d)|0;break}case 3:{k[g>>2]=c;k[d>>2]=k[g>>2];c=Rb(a,b,d)|0;break}case 4:{k[h>>2]=c;k[d>>2]=k[h>>2];c=dc(a,b,d)|0;break}default:c=0}break}case 1:{c=k[c>>2]|0;switch(i[b+24>>0]|0){case 1:{k[e>>2]=c;k[d>>2]=k[e>>2];c=ec(a,b,d)|0;break}case 2:{k[f>>2]=c;k[d>>2]=k[f>>2];c=Xb(a,b,d)|0;break}case 3:{k[g>>2]=c;k[d>>2]=k[g>>2];c=Pb(a,b,d)|0;break}case 4:{k[h>>2]=c;k[d>>2]=k[h>>2];c=$b(a,b,d)|0;break}default:c=0}break}case 11:case 2:{c=k[c>>2]|0;switch(i[b+24>>0]|0){case 1:{k[e>>2]=c;k[d>>2]=k[e>>2];c=ec(a,b,d)|0;break}case 2:{k[f>>2]=c;k[d>>2]=k[f>>2];c=Xb(a,b,d)|0;break}case 3:{k[g>>2]=c;k[d>>2]=k[g>>2];c=Pb(a,b,d)|0;break}case 4:{k[h>>2]=c;k[d>>2]=k[h>>2];c=$b(a,b,d)|0;break}default:c=0}break}case 4:{c=k[c>>2]|0;switch(i[b+24>>0]|0){case 1:{k[e>>2]=c;k[d>>2]=k[e>>2];c=bc(a,b,d)|0;break}case 2:{k[f>>2]=c;k[d>>2]=k[f>>2];c=Wb(a,b,d)|0;break}case 3:{k[g>>2]=c;k[d>>2]=k[g>>2];c=Ob(a,b,d)|0;break}case 4:{k[h>>2]=c;k[d>>2]=k[h>>2];c=_b(a,b,d)|0;break}default:c=0}break}case 3:{c=k[c>>2]|0;switch(i[b+24>>0]|0){case 1:{k[e>>2]=c;k[d>>2]=k[e>>2];c=bc(a,b,d)|0;break}case 2:{k[f>>2]=c;k[d>>2]=k[f>>2];c=Wb(a,b,d)|0;break}case 3:{k[g>>2]=c;k[d>>2]=k[g>>2];c=Ob(a,b,d)|0;break}case 4:{k[h>>2]=c;k[d>>2]=k[h>>2];c=_b(a,b,d)|0;break}default:c=0}break}case 6:{c=k[c>>2]|0;switch(i[b+24>>0]|0){case 1:{k[e>>2]=c;k[d>>2]=k[e>>2];c=cc(a,b,d)|0;break}case 2:{k[f>>2]=c;k[d>>2]=k[f>>2];c=Ub(a,b,d)|0;break}case 3:{k[g>>2]=c;k[d>>2]=k[g>>2];c=Rb(a,b,d)|0;break}case 4:{k[h>>2]=c;k[d>>2]=k[h>>2];c=dc(a,b,d)|0;break}default:c=0}break}case 5:{c=k[c>>2]|0;switch(i[b+24>>0]|0){case 1:{k[e>>2]=c;k[d>>2]=k[e>>2];c=cc(a,b,d)|0;break}case 2:{k[f>>2]=c;k[d>>2]=k[f>>2];c=Ub(a,b,d)|0;break}case 3:{k[g>>2]=c;k[d>>2]=k[g>>2];c=Rb(a,b,d)|0;break}case 4:{k[h>>2]=c;k[d>>2]=k[h>>2];c=dc(a,b,d)|0;break}default:c=0}break}default:{h=-1;r=j;return h|0}}h=(c|0)==0?-1:c;r=j;return h|0}function Zb(a,b,c,d,e,f){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;f=f|0;var g=0,h=0,i=0,j=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,B=0,C=0,D=0,E=0,F=0,G=0,H=0,I=0,J=0;J=a+8|0;k[J>>2]=e;do if(d|0){f=k[b>>2]|0;l=a+16|0;k[l>>2]=f;j=a+12|0;k[j>>2]=f;if((d|0)>1){i=1;h=f;while(1){g=k[b+(i<<2)>>2]|0;if((g|0)>=(h|0))if((g|0)>(f|0)){k[l>>2]=g;f=g;g=h}else g=h;else k[j>>2]=g;i=i+1|0;if((i|0)==(d|0))break;else h=g}}else g=f;A=1-g+f|0;k[a+20>>2]=A;f=(A|0)/2|0;g=a+24|0;k[g>>2]=f;k[a+28>>2]=0-f;if(!(A&1))k[g>>2]=f+-1;f=a+32|0;g=a+36|0;j=k[g>>2]|0;h=k[f>>2]|0;i=j-h>>2;if(i>>>0>>0){jh(f,e-i|0);break}if(i>>>0>e>>>0?(m=h+(e<<2)|0,(j|0)!=(m|0)):0)k[g>>2]=j+(~((j+-4-m|0)>>>2)<<2)}while(0);o=e>>>0>1073741823?-1:e<<2;A=$m(o)|0;Vi(A|0,0,o|0)|0;o=k[a+48>>2]|0;p=a+56|0;i=k[p>>2]|0;h=k[i+4>>2]|0;g=k[i>>2]|0;f=h-g|0;a:do if((f|0)>4){q=k[a+52>>2]|0;r=a+16|0;s=a+32|0;t=a+12|0;u=a+28|0;v=a+20|0;w=a+24|0;x=o+64|0;y=o+28|0;z=(e|0)>0;d=f>>2;f=i;while(1){n=d+-1|0;if(h-g>>2>>>0<=n>>>0)break;f=k[g+(n<<2)>>2]|0;m=$(n,e)|0;if((!((f|0)<0?1:(1<<(f&31)&k[(k[o>>2]|0)+(f>>>5<<2)>>2]|0)!=0)?(B=k[(k[(k[x>>2]|0)+12>>2]|0)+(f<<2)>>2]|0,(B|0)>=0):0)?(D=k[y>>2]|0,l=k[q>>2]|0,G=k[l+(k[D+(B<<2)>>2]<<2)>>2]|0,C=B+1|0,C=k[l+(k[D+((((C|0)%3|0|0)==0?B+-2|0:C)<<2)>>2]<<2)>>2]|0,D=k[l+(k[D+((((B>>>0)%3|0|0)==0?2:-1)+B<<2)>>2]<<2)>>2]|0,(G|0)<(n|0)&(C|0)<(n|0)&(D|0)<(n|0)):0){g=$(G,e)|0;h=$(C,e)|0;i=$(D,e)|0;if(z){f=0;do{k[A+(f<<2)>>2]=(k[b+(f+i<<2)>>2]|0)+(k[b+(f+h<<2)>>2]|0)-(k[b+(f+g<<2)>>2]|0);f=f+1|0}while((f|0)!=(e|0))}l=b+(m<<2)|0;if((k[J>>2]|0)>0){j=0;do{i=k[A+(j<<2)>>2]|0;f=k[r>>2]|0;do if((i|0)<=(f|0)){f=k[t>>2]|0;g=k[s>>2]|0;h=g+(j<<2)|0;if((i|0)<(f|0)){k[h>>2]=f;h=g;break}else{k[h>>2]=i;h=g;break}}else{h=k[s>>2]|0;k[h+(j<<2)>>2]=f}while(0);j=j+1|0;f=k[J>>2]|0}while((j|0)<(f|0));if((f|0)>0){f=0;do{k[c+(f+m<<2)>>2]=(k[l+(f<<2)>>2]|0)-(k[h+(f<<2)>>2]|0);f=f+1|0;g=k[J>>2]|0}while((f|0)<(g|0));if((g|0)>0){f=0;do{g=c+(f+m<<2)|0;h=k[g>>2]|0;if((h|0)>=(k[u>>2]|0)){if((h|0)>(k[w>>2]|0))k[g>>2]=h-(k[v>>2]|0)}else k[g>>2]=(k[v>>2]|0)+h;f=f+1|0}while((f|0)<(k[J>>2]|0))}}}}else H=27;if((H|0)==27?(H=0,E=b+(m<<2)|0,F=b+(($(d+-2|0,e)|0)<<2)|0,(k[J>>2]|0)>0):0){j=0;do{i=k[F+(j<<2)>>2]|0;f=k[r>>2]|0;do if((i|0)<=(f|0)){f=k[t>>2]|0;g=k[s>>2]|0;h=g+(j<<2)|0;if((i|0)<(f|0)){k[h>>2]=f;h=g;break}else{k[h>>2]=i;h=g;break}}else{h=k[s>>2]|0;k[h+(j<<2)>>2]=f}while(0);j=j+1|0;f=k[J>>2]|0}while((j|0)<(f|0));if((f|0)>0){f=0;do{k[c+(f+m<<2)>>2]=(k[E+(f<<2)>>2]|0)-(k[h+(f<<2)>>2]|0);f=f+1|0;g=k[J>>2]|0}while((f|0)<(g|0));if((g|0)>0){f=0;do{g=c+(f+m<<2)|0;h=k[g>>2]|0;if((h|0)>=(k[u>>2]|0)){if((h|0)>(k[w>>2]|0))k[g>>2]=h-(k[v>>2]|0)}else k[g>>2]=(k[v>>2]|0)+h;f=f+1|0}while((f|0)<(k[J>>2]|0))}}}if((n|0)<=1){I=A;break a}f=k[p>>2]|0;d=n;g=k[f>>2]|0;h=k[f+4>>2]|0}gm(f)}else I=A;while(0);if((e|0)>0)Vi(A|0,0,e<<2|0)|0;if((k[J>>2]|0)<=0){an(A);return 1}l=a+16|0;d=a+32|0;m=a+12|0;j=0;do{i=k[I+(j<<2)>>2]|0;f=k[l>>2]|0;do if((i|0)<=(f|0)){f=k[m>>2]|0;g=k[d>>2]|0;h=g+(j<<2)|0;if((i|0)<(f|0)){k[h>>2]=f;h=g;break}else{k[h>>2]=i;h=g;break}}else{h=k[d>>2]|0;k[h+(j<<2)>>2]=f}while(0);j=j+1|0;f=k[J>>2]|0}while((j|0)<(f|0));if((f|0)>0)f=0;else{an(A);return 1}do{k[c+(f<<2)>>2]=(k[b+(f<<2)>>2]|0)-(k[h+(f<<2)>>2]|0);f=f+1|0;g=k[J>>2]|0}while((f|0)<(g|0));if((g|0)<=0){an(A);return 1}j=a+28|0;l=a+20|0;g=a+24|0;f=0;do{h=c+(f<<2)|0;i=k[h>>2]|0;if((i|0)>=(k[j>>2]|0)){if((i|0)>(k[g>>2]|0))k[h>>2]=i-(k[l>>2]|0)}else k[h>>2]=(k[l>>2]|0)+i;f=f+1|0}while((f|0)<(k[J>>2]|0));an(A);return 1}function _b(a,b,c){a=a|0;b=b|0;c=c|0;var d=0,e=0,f=0,g=0,h=0,m=0,n=Pa,p=Pa,q=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,B=0,C=0,D=0,E=0,F=0,G=0,H=0,I=0,J=0,K=0,L=0,N=0,O=0,P=0,Q=0,R=0,S=0,T=0,U=Pa;T=r;r=r+48|0;S=T+28|0;K=T+8|0;L=T;R=T+16|0;N=S+16|0;k[S>>2]=0;k[S+4>>2]=0;k[S+8>>2]=0;k[S+12>>2]=0;o[N>>2]=da(1.0);Q=a+80|0;bj(R,k[Q>>2]|0);e=k[Q>>2]|0;if((e|0)>0){B=k[c>>2]|0;C=b+48|0;D=b+40|0;E=S+4|0;F=S+12|0;G=S+8|0;H=a+40|0;I=a+64|0;A=0;z=0;while(1){w=B+A|0;y=C;x=k[y>>2]|0;y=k[y+4>>2]|0;c=D;c=uk(w|0,((w|0)<0)<<31>>31|0,k[c>>2]|0,k[c+4>>2]|0)|0;y=sl(c|0,M|0,x|0,y|0)|0;y=(k[k[b>>2]>>2]|0)+y|0;x=y;x=l[x>>0]|l[x+1>>0]<<8|l[x+2>>0]<<16|l[x+3>>0]<<24;y=y+4|0;y=l[y>>0]|l[y+1>>0]<<8|l[y+2>>0]<<16|l[y+3>>0]<<24;c=K;k[c>>2]=x;k[c+4>>2]=y;c=L;k[c>>2]=x;k[c+4>>2]=y;c=zf(S,L)|0;if(!c){u=L;t=k[u>>2]|0;u=k[u+4>>2]|0;h=t&65535;y=Zk(t|0,u|0,16)|0;m=y&65535;q=u&65535;v=Zk(t|0,u|0,48)|0;w=M;s=v&65535;y=(((t&65535^318)+239^y&65535)+239^u&65535)+239^v;e=k[E>>2]|0;x=(e|0)==0;a:do if(!x){g=e+-1|0;d=(g&e|0)==0;if(d)c=y&g;else c=(y>>>0)%(e>>>0)|0;f=k[(k[S>>2]|0)+(c<<2)>>2]|0;if((f|0)!=0?(J=k[f>>2]|0,(J|0)!=0):0)if(d){d=J;while(1){if((k[d+4>>2]&g|0)!=(c|0)){O=25;break a}if((((j[d+8>>1]|0)==h<<16>>16?(j[d+10>>1]|0)==m<<16>>16:0)?(j[d+12>>1]|0)==q<<16>>16:0)?(j[d+14>>1]|0)==s<<16>>16:0)break a;d=k[d>>2]|0;if(!d){O=25;break}}}else{d=J;while(1){if((((k[d+4>>2]|0)>>>0)%(e>>>0)|0|0)!=(c|0)){O=25;break a}if((((j[d+8>>1]|0)==h<<16>>16?(j[d+10>>1]|0)==m<<16>>16:0)?(j[d+12>>1]|0)==q<<16>>16:0)?(j[d+14>>1]|0)==s<<16>>16:0)break a;d=k[d>>2]|0;if(!d){O=25;break}}}else O=25}else{c=0;O=25}while(0);if((O|0)==25){O=0;f=xk(20)|0;v=Tk(v|0,w|0,48)|0;t=t|v;v=u&65535|M;w=f+8|0;u=w;j[u>>1]=t;j[u+2>>1]=t>>>16;w=w+4|0;j[w>>1]=v;j[w+2>>1]=v>>>16;k[f+16>>2]=z;k[f+4>>2]=y;k[f>>2]=0;n=da(((k[F>>2]|0)+1|0)>>>0);U=da(e>>>0);p=da(o[N>>2]);do if(x|n>da(U*p)){c=(e>>>0>2&(e+-1&e|0)==0&1|e<<1)^1;d=~~da(_(da(n/p)))>>>0;Gg(S,c>>>0>>0?d:c);c=k[E>>2]|0;d=c+-1|0;if(!(d&c)){e=c;c=d&y;break}else{e=c;c=(y>>>0)%(c>>>0)|0;break}}while(0);c=(k[S>>2]|0)+(c<<2)|0;d=k[c>>2]|0;if(!d){k[f>>2]=k[G>>2];k[G>>2]=f;k[c>>2]=G;c=k[f>>2]|0;if(c|0){c=k[c+4>>2]|0;d=e+-1|0;if(!(d&e))c=c&d;else c=(c>>>0)%(e>>>0)|0;k[(k[S>>2]|0)+(c<<2)>>2]=f}}else{k[f>>2]=k[d>>2];k[d>>2]=f}k[F>>2]=(k[F>>2]|0)+1}y=H;c=k[y>>2]|0;y=uk(c|0,k[y+4>>2]|0,z|0,((z|0)<0)<<31>>31|0)|0;Ii((k[k[I>>2]>>2]|0)+y|0,K|0,c|0)|0;k[(k[R>>2]|0)+(A<<2)>>2]=z;c=z+1|0}else{k[(k[R>>2]|0)+(A<<2)>>2]=k[c+16>>2];c=z}A=A+1|0;e=k[Q>>2]|0;if((A|0)>=(e|0)){q=c;break}else z=c}}else q=0;if((q|0)!=(e|0)){m=a+84|0;if(!(i[m>>0]|0)){e=k[a+68>>2]|0;c=(k[a+72>>2]|0)-e|0;if((c|0)>0){f=k[R>>2]|0;d=c>>2;c=0;do{a=e+(c<<2)|0;k[a>>2]=k[f+(k[a>>2]<<2)>>2];c=c+1|0}while((c|0)<(d|0))}}else{i[m>>0]=0;c=a+68|0;d=a+72|0;h=k[d>>2]|0;g=k[c>>2]|0;f=h-g>>2;if(e>>>0<=f>>>0){if(e>>>0>>0?(P=g+(e<<2)|0,(h|0)!=(P|0)):0)k[d>>2]=h+(~((h+-4-P|0)>>>2)<<2)}else{Ag(c,e-f|0,3152);e=k[Q>>2]|0}if((e|0)>0){f=k[R>>2]|0;if(i[m>>0]|0)Ka(14270,14289,80,14321);d=k[a+68>>2]|0;c=0;do{k[d+(c<<2)>>2]=k[f+(c<<2)>>2];c=c+1|0}while((c|0)<(e|0))}}k[Q>>2]=q}e=k[R>>2]|0;f=e;if(e|0){c=R+4|0;d=k[c>>2]|0;if((d|0)!=(e|0))k[c>>2]=d+(~((d+-4-f|0)>>>2)<<2);cn(e)}c=k[S+8>>2]|0;if(c|0)do{R=c;c=k[c>>2]|0;cn(R)}while((c|0)!=0);c=k[S>>2]|0;k[S>>2]=0;if(!c){r=T;return q|0}cn(c);r=T;return q|0}function $b(a,b,c){a=a|0;b=b|0;c=c|0;var d=0,e=0,f=0,g=0,h=0,j=0,m=Pa,n=Pa,p=0,q=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,B=0,C=0,D=0,E=0,F=0,G=0,H=0,I=0,J=0,K=0,L=0,N=0,O=0,P=0,Q=0,R=0,S=0,T=Pa;S=r;r=r+48|0;R=S+20|0;J=S+16|0;K=S+12|0;Q=S;L=R+16|0;k[R>>2]=0;k[R+4>>2]=0;k[R+8>>2]=0;k[R+12>>2]=0;o[L>>2]=da(1.0);P=a+80|0;bj(Q,k[P>>2]|0);e=k[P>>2]|0;if((e|0)>0){A=k[c>>2]|0;B=b+48|0;C=b+40|0;D=R+4|0;E=R+12|0;F=R+8|0;G=a+40|0;H=a+64|0;z=0;y=0;while(1){v=A+z|0;c=B;x=k[c>>2]|0;c=k[c+4>>2]|0;w=C;w=uk(v|0,((v|0)<0)<<31>>31|0,k[w>>2]|0,k[w+4>>2]|0)|0;c=sl(w|0,M|0,x|0,c|0)|0;c=(k[k[b>>2]>>2]|0)+c|0;c=l[c>>0]|l[c+1>>0]<<8|l[c+2>>0]<<16|l[c+3>>0]<<24;k[J>>2]=c;k[K>>2]=c;c=Bf(R,K)|0;if(!c){t=k[K>>2]|0;h=t&255;u=t>>>8;j=u&255;v=t>>>16;p=v&255;s=t>>>24;q=s&255;t=t&255;u=u&255;v=v&255;x=(((t^318)+239^u)+239^v)+239^s;e=k[D>>2]|0;w=(e|0)==0;a:do if(!w){g=e+-1|0;d=(g&e|0)==0;if(d)c=x&g;else c=(x>>>0)%(e>>>0)|0;f=k[(k[R>>2]|0)+(c<<2)>>2]|0;if((f|0)!=0?(I=k[f>>2]|0,(I|0)!=0):0)if(d){d=I;while(1){if((k[d+4>>2]&g|0)!=(c|0)){N=25;break a}if((((i[d+8>>0]|0)==h<<24>>24?(i[d+9>>0]|0)==j<<24>>24:0)?(i[d+10>>0]|0)==p<<24>>24:0)?(i[d+11>>0]|0)==q<<24>>24:0)break a;d=k[d>>2]|0;if(!d){N=25;break}}}else{d=I;while(1){if((((k[d+4>>2]|0)>>>0)%(e>>>0)|0|0)!=(c|0)){N=25;break a}if((((i[d+8>>0]|0)==h<<24>>24?(i[d+9>>0]|0)==j<<24>>24:0)?(i[d+10>>0]|0)==p<<24>>24:0)?(i[d+11>>0]|0)==q<<24>>24:0)break a;d=k[d>>2]|0;if(!d){N=25;break}}}else N=25}else{c=0;N=25}while(0);if((N|0)==25){N=0;f=xk(16)|0;q=f+8|0;v=s<<24|t|v<<16|u<<8;i[q>>0]=v;i[q+1>>0]=v>>8;i[q+2>>0]=v>>16;i[q+3>>0]=v>>24;k[f+12>>2]=y;k[f+4>>2]=x;k[f>>2]=0;m=da(((k[E>>2]|0)+1|0)>>>0);T=da(e>>>0);n=da(o[L>>2]);do if(w|m>da(T*n)){c=(e>>>0>2&(e+-1&e|0)==0&1|e<<1)^1;d=~~da(_(da(m/n)))>>>0;Ng(R,c>>>0>>0?d:c);c=k[D>>2]|0;d=c+-1|0;if(!(d&c)){e=c;c=d&x;break}else{e=c;c=(x>>>0)%(c>>>0)|0;break}}while(0);c=(k[R>>2]|0)+(c<<2)|0;d=k[c>>2]|0;if(!d){k[f>>2]=k[F>>2];k[F>>2]=f;k[c>>2]=F;c=k[f>>2]|0;if(c|0){c=k[c+4>>2]|0;d=e+-1|0;if(!(d&e))c=c&d;else c=(c>>>0)%(e>>>0)|0;k[(k[R>>2]|0)+(c<<2)>>2]=f}}else{k[f>>2]=k[d>>2];k[d>>2]=f}k[E>>2]=(k[E>>2]|0)+1}x=G;c=k[x>>2]|0;x=uk(c|0,k[x+4>>2]|0,y|0,((y|0)<0)<<31>>31|0)|0;Ii((k[k[H>>2]>>2]|0)+x|0,J|0,c|0)|0;k[(k[Q>>2]|0)+(z<<2)>>2]=y;c=y+1|0}else{k[(k[Q>>2]|0)+(z<<2)>>2]=k[c+12>>2];c=y}z=z+1|0;e=k[P>>2]|0;if((z|0)>=(e|0)){p=c;break}else y=c}}else p=0;if((p|0)!=(e|0)){j=a+84|0;if(!(i[j>>0]|0)){e=k[a+68>>2]|0;c=(k[a+72>>2]|0)-e|0;if((c|0)>0){f=k[Q>>2]|0;d=c>>2;c=0;do{a=e+(c<<2)|0;k[a>>2]=k[f+(k[a>>2]<<2)>>2];c=c+1|0}while((c|0)<(d|0))}}else{i[j>>0]=0;c=a+68|0;d=a+72|0;h=k[d>>2]|0;g=k[c>>2]|0;f=h-g>>2;if(e>>>0<=f>>>0){if(e>>>0>>0?(O=g+(e<<2)|0,(h|0)!=(O|0)):0)k[d>>2]=h+(~((h+-4-O|0)>>>2)<<2)}else{Ag(c,e-f|0,3152);e=k[P>>2]|0}if((e|0)>0){f=k[Q>>2]|0;if(i[j>>0]|0)Ka(14270,14289,80,14321);d=k[a+68>>2]|0;c=0;do{k[d+(c<<2)>>2]=k[f+(c<<2)>>2];c=c+1|0}while((c|0)<(e|0))}}k[P>>2]=p}e=k[Q>>2]|0;f=e;if(e|0){c=Q+4|0;d=k[c>>2]|0;if((d|0)!=(e|0))k[c>>2]=d+(~((d+-4-f|0)>>>2)<<2);cn(e)}c=k[R+8>>2]|0;if(c|0)do{Q=c;c=k[c>>2]|0;cn(Q)}while((c|0)!=0);c=k[R>>2]|0;k[R>>2]=0;if(!c){r=S;return p|0}cn(c);r=S;return p|0}function ac(a,b){a=a|0;b=b|0;var c=0,d=0,e=0,f=0,g=0,h=0,l=0,m=0,n=0,o=0,p=0,q=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0;A=r;r=r+176|0;t=A+144|0;w=A+72|0;v=A+8|0;u=A+40|0;x=A;y=a+4|0;q=k[y>>2]|0;c=k[q+20>>2]|0;l=c+8|0;h=k[l>>2]|0;l=k[l+4>>2]|0;m=c+16|0;o=m;n=k[o>>2]|0;o=k[o+4>>2]|0;if(!((l|0)>(o|0)|(l|0)==(o|0)&h>>>0>n>>>0)){z=0;r=A;return z|0}g=k[c>>2]|0;s=i[g+n>>0]|0;c=sl(n|0,o|0,1,0)|0;p=M;f=m;k[f>>2]=c;k[f+4>>2]=p;if(!((l|0)>(p|0)|(l|0)==(p|0)&h>>>0>c>>>0)){z=0;r=A;return z|0}p=i[g+c>>0]|0;c=sl(n|0,o|0,2,0)|0;d=M;f=m;k[f>>2]=c;k[f+4>>2]=d;do if(s<<24>>24>-1){e=s<<24>>24;f=k[a+228>>2]|0;if(e>>>0<(((k[a+232>>2]|0)-f|0)/116|0)>>>0){k[f+(e*116|0)>>2]=b;break}else{z=0;r=A;return z|0}}while(0);do if(((Nm(j[q+24>>1]|0)|0)&65535)>257)if((l|0)>(d|0)|(l|0)==(d|0)&h>>>0>c>>>0){d=i[g+c>>0]|0;n=sl(n|0,o|0,3,0)|0;o=m;k[o>>2]=n;k[o+4>>2]=M;d=d&255;break}else{z=0;r=A;return z|0}else d=0;while(0);n=k[q+28>>2]|0;if(!(p<<24>>24)){if(s<<24>>24<0)c=a+200|0;else{c=s<<24>>24;w=k[a+228>>2]|0;i[w+(c*116|0)+72>>0]=0;c=w+(c*116|0)+76|0}switch((d&255)<<24>>24){case 0:{c=Bd(a,c)|0;break}case 1:{c=Pe(a,c)|0;break}default:{z=0;r=A;return z|0}}if(!c){z=0;r=A;return z|0}}else{if(s<<24>>24<0|(d|0)!=0){z=0;r=A;return z|0}c=xk(88)|0;g=s<<24>>24;f=k[a+228>>2]|0;h=f+(g*116|0)+76|0;k[c+4>>2]=0;k[c>>2]=5700;l=c+12|0;k[l>>2]=5724;m=c+64|0;k[m>>2]=0;k[c+68>>2]=0;k[c+72>>2]=0;d=c+16|0;e=d+44|0;do{k[d>>2]=0;d=d+4|0}while((d|0)<(e|0));k[c+76>>2]=n;k[c+80>>2]=h;k[c+84>>2]=0;p=w+4|0;k[p>>2]=5724;o=w+56|0;k[o>>2]=0;q=w+60|0;k[q>>2]=0;k[w+64>>2]=0;d=w+8|0;e=d+44|0;do{k[d>>2]=0;d=d+4|0}while((d|0)<(e|0));e=f+(g*116|0)+4|0;k[v>>2]=5724;d=v+4|0;a=d+4|0;k[a>>2]=0;k[a+4>>2]=0;k[a+8>>2]=0;k[a+12>>2]=0;k[a+16>>2]=0;k[a+20>>2]=0;k[d>>2]=e;f=k[f+(g*116|0)+68>>2]|0;f=((k[f+4>>2]|0)-(k[f>>2]|0)|0)/12|0;i[t>>0]=0;lg(v+8|0,f,t);Ta[k[(k[v>>2]|0)+8>>2]&127](v);bf(u,v);bf(t,u);k[w>>2]=k[t+4>>2];f=w+4|0;sf(f,t)|0;k[t>>2]=5724;d=k[t+20>>2]|0;if(d|0)cn(d);d=k[t+8>>2]|0;if(d|0)cn(d);k[w+36>>2]=e;k[w+40>>2]=h;k[w+44>>2]=n;k[w+48>>2]=c;k[u>>2]=5724;d=k[u+20>>2]|0;if(d|0)cn(d);d=k[u+8>>2]|0;if(d|0)cn(d);k[c+8>>2]=k[w>>2];sf(l,f)|0;d=c+44|0;u=w+36|0;k[d>>2]=k[u>>2];k[d+4>>2]=k[u+4>>2];k[d+8>>2]=k[u+8>>2];k[d+12>>2]=k[u+12>>2];i[d+16>>0]=i[u+16>>0]|0;tf(m,k[o>>2]|0,k[q>>2]|0);k[v>>2]=5724;d=k[v+20>>2]|0;if(d|0)cn(d);d=k[v+8>>2]|0;if(d|0)cn(d);d=k[o>>2]|0;e=d;if(d|0){f=k[q>>2]|0;if((f|0)!=(d|0))k[q>>2]=f+(~((f+-4-e|0)>>>2)<<2);cn(d)}k[p>>2]=5724;d=k[w+24>>2]|0;if(d|0)cn(d);d=k[w+12>>2]|0;if(d|0)cn(d)}l=xk(52)|0;k[x>>2]=c;hj(l,x);c=k[x>>2]|0;k[x>>2]=0;if(c|0)Ta[k[(k[c>>2]|0)+4>>2]&127](c);h=k[y>>2]|0;g=h+8|0;h=h+12|0;c=k[h>>2]|0;d=k[g>>2]|0;e=c-d>>2;do if((e|0)<=(b|0)){f=b+1|0;if(f>>>0>e>>>0){Mf(g,f-e|0);break}if(f>>>0>>0?(z=d+(f<<2)|0,(c|0)!=(z|0)):0)do{y=c+-4|0;k[h>>2]=y;c=k[y>>2]|0;k[y>>2]=0;if(c|0)Ta[k[(k[c>>2]|0)+4>>2]&127](c);c=k[h>>2]|0}while((c|0)!=(z|0))}while(0);z=(k[g>>2]|0)+(b<<2)|0;c=k[z>>2]|0;k[z>>2]=l;if(!c){z=1;r=A;return z|0}Ta[k[(k[c>>2]|0)+4>>2]&127](c);z=1;r=A;return z|0}function bc(a,b,c){a=a|0;b=b|0;c=c|0;var d=0,e=0,f=0,g=0,h=0,m=0,n=Pa,p=Pa,q=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,B=0,C=0,D=0,E=0,F=0,G=0,H=0,I=0,J=0,K=Pa;J=r;r=r+48|0;I=J+12|0;D=J+32|0;H=J;E=I+16|0;k[I>>2]=0;k[I+4>>2]=0;k[I+8>>2]=0;k[I+12>>2]=0;o[E>>2]=da(1.0);G=a+80|0;bj(H,k[G>>2]|0);e=k[G>>2]|0;a:do if((e|0)>0){w=b+48|0;x=b+40|0;y=I+4|0;z=I+12|0;A=I+8|0;B=a+40|0;C=a+64|0;v=k[c>>2]|0;h=0;u=0;t=0;while(1){f=v+u|0;m=w;s=k[m>>2]|0;m=k[m+4>>2]|0;g=x;g=uk(f|0,((f|0)<0)<<31>>31|0,k[g>>2]|0,k[g+4>>2]|0)|0;m=sl(g|0,M|0,s|0,m|0)|0;m=(k[k[b>>2]>>2]|0)+m|0;m=l[m>>0]|l[m+1>>0]<<8;j[D>>1]=m;s=m&65535^318;b:do if(h){g=h+-1|0;f=(g&h|0)==0;if(f)d=g&s;else d=(s>>>0)%(h>>>0)|0;e=k[I>>2]|0;c=k[e+(d<<2)>>2]|0;c:do if(c|0){if(f)do{c=k[c>>2]|0;if(!c)break c;if((k[c+4>>2]&g|0)!=(d|0))break c}while((j[c+8>>1]|0)!=m<<16>>16);else do{c=k[c>>2]|0;if(!c)break c;if((((k[c+4>>2]|0)>>>0)%(h>>>0)|0|0)!=(d|0))break c}while((j[c+8>>1]|0)!=m<<16>>16);k[(k[H>>2]|0)+(u<<2)>>2]=k[c+12>>2];d=t;break b}while(0);if(f)c=g&s;else c=(s>>>0)%(h>>>0)|0;d=k[e+(c<<2)>>2]|0;if(d)if(f)while(1){d=k[d>>2]|0;if(!d){d=h;e=0;q=28;break b}if((k[d+4>>2]&g|0)!=(c|0)){d=h;e=0;q=28;break b}if((j[d+8>>1]|0)==m<<16>>16){q=40;break}}else while(1){d=k[d>>2]|0;if(!d){d=h;e=0;q=28;break b}if((((k[d+4>>2]|0)>>>0)%(h>>>0)|0|0)!=(c|0)){d=h;e=0;q=28;break b}if((j[d+8>>1]|0)==m<<16>>16){q=40;break}}else{d=h;e=0;q=28}}else{c=0;d=0;e=1;q=28}while(0);if((q|0)==28){f=xk(16)|0;j[f+8>>1]=m;k[f+12>>2]=t;k[f+4>>2]=s;k[f>>2]=0;n=da(((k[z>>2]|0)+1|0)>>>0);K=da(d>>>0);p=da(o[E>>2]);do if(e|n>da(K*p)){c=(d>>>0>2&(d+-1&d|0)==0&1|d<<1)^1;d=~~da(_(da(n/p)))>>>0;Jg(I,c>>>0>>0?d:c);c=k[y>>2]|0;d=c+-1|0;if(!(d&c)){e=c;c=d&s;break}else{e=c;c=(s>>>0)%(c>>>0)|0;break}}else e=d;while(0);c=(k[I>>2]|0)+(c<<2)|0;d=k[c>>2]|0;if(!d){k[f>>2]=k[A>>2];k[A>>2]=f;k[c>>2]=A;c=k[f>>2]|0;if(c|0){c=k[c+4>>2]|0;d=e+-1|0;if(!(d&e))c=c&d;else c=(c>>>0)%(e>>>0)|0;k[(k[I>>2]|0)+(c<<2)>>2]=f}}else{k[f>>2]=k[d>>2];k[d>>2]=f}k[z>>2]=(k[z>>2]|0)+1;q=40}if((q|0)==40){q=0;s=B;d=k[s>>2]|0;s=uk(d|0,k[s+4>>2]|0,t|0,((t|0)<0)<<31>>31|0)|0;Ii((k[k[C>>2]>>2]|0)+s|0,D|0,d|0)|0;k[(k[H>>2]|0)+(u<<2)>>2]=t;d=t+1|0}c=u+1|0;e=k[G>>2]|0;if((c|0)>=(e|0)){q=d;break a}h=k[y>>2]|0;u=c;t=d}}else q=0;while(0);if((q|0)!=(e|0)){m=a+84|0;if(!(i[m>>0]|0)){e=k[a+68>>2]|0;c=(k[a+72>>2]|0)-e|0;if((c|0)>0){f=k[H>>2]|0;d=c>>2;c=0;do{a=e+(c<<2)|0;k[a>>2]=k[f+(k[a>>2]<<2)>>2];c=c+1|0}while((c|0)<(d|0))}}else{i[m>>0]=0;c=a+68|0;d=a+72|0;h=k[d>>2]|0;g=k[c>>2]|0;f=h-g>>2;if(e>>>0<=f>>>0){if(e>>>0>>0?(F=g+(e<<2)|0,(h|0)!=(F|0)):0)k[d>>2]=h+(~((h+-4-F|0)>>>2)<<2)}else{Ag(c,e-f|0,3152);e=k[G>>2]|0}if((e|0)>0){f=k[H>>2]|0;if(i[m>>0]|0)Ka(14270,14289,80,14321);d=k[a+68>>2]|0;c=0;do{k[d+(c<<2)>>2]=k[f+(c<<2)>>2];c=c+1|0}while((c|0)<(e|0))}}k[G>>2]=q}e=k[H>>2]|0;f=e;if(e|0){c=H+4|0;d=k[c>>2]|0;if((d|0)!=(e|0))k[c>>2]=d+(~((d+-4-f|0)>>>2)<<2);cn(e)}c=k[I+8>>2]|0;if(c|0)do{H=c;c=k[c>>2]|0;cn(H)}while((c|0)!=0);c=k[I>>2]|0;k[I>>2]=0;if(!c){r=J;return q|0}cn(c);r=J;return q|0}function cc(a,b,c){a=a|0;b=b|0;c=c|0;var d=0,e=0,f=0,g=0,h=0,j=0,m=Pa,n=Pa,p=0,q=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,B=0,C=0,D=0,E=0,F=0,G=0,H=0,I=0,J=Pa;I=r;r=r+48|0;H=I+16|0;C=I+12|0;G=I;D=H+16|0;k[H>>2]=0;k[H+4>>2]=0;k[H+8>>2]=0;k[H+12>>2]=0;o[D>>2]=da(1.0);F=a+80|0;bj(G,k[F>>2]|0);e=k[F>>2]|0;a:do if((e|0)>0){v=b+48|0;w=b+40|0;x=H+4|0;y=H+12|0;z=H+8|0;A=a+40|0;B=a+64|0;u=k[c>>2]|0;h=0;t=0;s=0;while(1){f=u+t|0;j=v;q=k[j>>2]|0;j=k[j+4>>2]|0;g=w;g=uk(f|0,((f|0)<0)<<31>>31|0,k[g>>2]|0,k[g+4>>2]|0)|0;j=sl(g|0,M|0,q|0,j|0)|0;j=(k[k[b>>2]>>2]|0)+j|0;j=l[j>>0]|l[j+1>>0]<<8|l[j+2>>0]<<16|l[j+3>>0]<<24;k[C>>2]=j;q=j^318;b:do if(h){g=h+-1|0;f=(g&h|0)==0;if(f)d=g&q;else d=(q>>>0)%(h>>>0)|0;e=k[H>>2]|0;c=k[e+(d<<2)>>2]|0;c:do if(c|0){if(f)do{c=k[c>>2]|0;if(!c)break c;if((k[c+4>>2]&g|0)!=(d|0))break c}while((k[c+8>>2]|0)!=(j|0));else do{c=k[c>>2]|0;if(!c)break c;if((((k[c+4>>2]|0)>>>0)%(h>>>0)|0|0)!=(d|0))break c}while((k[c+8>>2]|0)!=(j|0));k[(k[G>>2]|0)+(t<<2)>>2]=k[c+12>>2];d=s;break b}while(0);if(f)c=g&q;else c=(q>>>0)%(h>>>0)|0;d=k[e+(c<<2)>>2]|0;if(d)if(f)while(1){d=k[d>>2]|0;if(!d){d=h;e=0;p=28;break b}if((k[d+4>>2]&g|0)!=(c|0)){d=h;e=0;p=28;break b}if((k[d+8>>2]|0)==(j|0)){p=40;break}}else while(1){d=k[d>>2]|0;if(!d){d=h;e=0;p=28;break b}if((((k[d+4>>2]|0)>>>0)%(h>>>0)|0|0)!=(c|0)){d=h;e=0;p=28;break b}if((k[d+8>>2]|0)==(j|0)){p=40;break}}else{d=h;e=0;p=28}}else{c=0;d=0;e=1;p=28}while(0);if((p|0)==28){f=xk(16)|0;k[f+8>>2]=j;k[f+12>>2]=s;k[f+4>>2]=q;k[f>>2]=0;m=da(((k[y>>2]|0)+1|0)>>>0);J=da(d>>>0);n=da(o[D>>2]);do if(e|m>da(J*n)){c=(d>>>0>2&(d+-1&d|0)==0&1|d<<1)^1;d=~~da(_(da(m/n)))>>>0;Vg(H,c>>>0>>0?d:c);c=k[x>>2]|0;d=c+-1|0;if(!(d&c)){e=c;c=d&q;break}else{e=c;c=(q>>>0)%(c>>>0)|0;break}}else e=d;while(0);c=(k[H>>2]|0)+(c<<2)|0;d=k[c>>2]|0;if(!d){k[f>>2]=k[z>>2];k[z>>2]=f;k[c>>2]=z;c=k[f>>2]|0;if(c|0){c=k[c+4>>2]|0;d=e+-1|0;if(!(d&e))c=c&d;else c=(c>>>0)%(e>>>0)|0;k[(k[H>>2]|0)+(c<<2)>>2]=f}}else{k[f>>2]=k[d>>2];k[d>>2]=f}k[y>>2]=(k[y>>2]|0)+1;p=40}if((p|0)==40){p=0;q=A;d=k[q>>2]|0;q=uk(d|0,k[q+4>>2]|0,s|0,((s|0)<0)<<31>>31|0)|0;Ii((k[k[B>>2]>>2]|0)+q|0,C|0,d|0)|0;k[(k[G>>2]|0)+(t<<2)>>2]=s;d=s+1|0}c=t+1|0;e=k[F>>2]|0;if((c|0)>=(e|0)){p=d;break a}h=k[x>>2]|0;t=c;s=d}}else p=0;while(0);if((p|0)!=(e|0)){j=a+84|0;if(!(i[j>>0]|0)){e=k[a+68>>2]|0;c=(k[a+72>>2]|0)-e|0;if((c|0)>0){f=k[G>>2]|0;d=c>>2;c=0;do{a=e+(c<<2)|0;k[a>>2]=k[f+(k[a>>2]<<2)>>2];c=c+1|0}while((c|0)<(d|0))}}else{i[j>>0]=0;c=a+68|0;d=a+72|0;h=k[d>>2]|0;g=k[c>>2]|0;f=h-g>>2;if(e>>>0<=f>>>0){if(e>>>0>>0?(E=g+(e<<2)|0,(h|0)!=(E|0)):0)k[d>>2]=h+(~((h+-4-E|0)>>>2)<<2)}else{Ag(c,e-f|0,3152);e=k[F>>2]|0}if((e|0)>0){f=k[G>>2]|0;if(i[j>>0]|0)Ka(14270,14289,80,14321);d=k[a+68>>2]|0;c=0;do{k[d+(c<<2)>>2]=k[f+(c<<2)>>2];c=c+1|0}while((c|0)<(e|0))}}k[F>>2]=p}e=k[G>>2]|0;f=e;if(e|0){c=G+4|0;d=k[c>>2]|0;if((d|0)!=(e|0))k[c>>2]=d+(~((d+-4-f|0)>>>2)<<2);cn(e)}c=k[H+8>>2]|0;if(c|0)do{G=c;c=k[c>>2]|0;cn(G)}while((c|0)!=0);c=k[H>>2]|0;k[H>>2]=0;if(!c){r=I;return p|0}cn(c);r=I;return p|0}function dc(a,b,c){a=a|0;b=b|0;c=c|0;var d=0,e=0,f=0,g=0,h=0,j=0,l=0,m=Pa,n=Pa,p=0,q=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,B=0,C=0,D=0,E=0,F=0,G=0,H=0,I=0,J=0,K=0,L=0,N=0,O=0,P=0,Q=0,R=Pa;Q=r;r=r+80|0;P=Q+48|0;H=Q+32|0;I=Q+16|0;O=Q;J=P+16|0;k[P>>2]=0;k[P+4>>2]=0;k[P+8>>2]=0;k[P+12>>2]=0;o[J>>2]=da(1.0);N=a+80|0;bj(O,k[N>>2]|0);e=k[N>>2]|0;if((e|0)>0){y=k[c>>2]|0;z=b+48|0;A=b+40|0;v=I+4|0;w=I+8|0;x=I+12|0;B=P+4|0;C=P+12|0;D=P+8|0;E=a+40|0;F=a+64|0;t=0;u=0;while(1){e=y+u|0;c=z;d=k[c>>2]|0;c=k[c+4>>2]|0;f=A;e=uk(k[f>>2]|0,k[f+4>>2]|0,e|0,((e|0)<0)<<31>>31|0)|0;c=sl(e|0,M|0,d|0,c|0)|0;c=(k[k[b>>2]>>2]|0)+c|0;d=H;e=c;f=d+16|0;do{i[d>>0]=i[e>>0]|0;d=d+1|0;e=e+1|0}while((d|0)<(f|0));Wj(I|0,c|0,16)|0;c=Df(P,I)|0;if(!c){g=k[I>>2]|0;h=k[v>>2]|0;j=k[w>>2]|0;l=k[x>>2]|0;s=(((g^318)+239^h)+239^j)+239^l;p=k[B>>2]|0;q=(p|0)==0;a:do if(!q){f=p+-1|0;d=(f&p|0)==0;if(d)c=s&f;else c=(s>>>0)%(p>>>0)|0;e=k[(k[P>>2]|0)+(c<<2)>>2]|0;if((e|0)!=0?(G=k[e>>2]|0,(G|0)!=0):0)if(d){d=G;while(1){if((k[d+4>>2]&f|0)!=(c|0)){K=25;break a}if((((k[d+8>>2]|0)==(g|0)?(k[d+12>>2]|0)==(h|0):0)?(k[d+16>>2]|0)==(j|0):0)?(k[d+20>>2]|0)==(l|0):0)break a;d=k[d>>2]|0;if(!d){K=25;break}}}else{d=G;while(1){if((((k[d+4>>2]|0)>>>0)%(p>>>0)|0|0)!=(c|0)){K=25;break a}if((((k[d+8>>2]|0)==(g|0)?(k[d+12>>2]|0)==(h|0):0)?(k[d+16>>2]|0)==(j|0):0)?(k[d+20>>2]|0)==(l|0):0)break a;d=k[d>>2]|0;if(!d){K=25;break}}}else K=25}else{c=0;K=25}while(0);if((K|0)==25){K=0;f=xk(28)|0;k[f+8>>2]=g;k[f+12>>2]=h;k[f+16>>2]=j;k[f+20>>2]=l;k[f+24>>2]=t;k[f+4>>2]=s;k[f>>2]=0;m=da(((k[C>>2]|0)+1|0)>>>0);R=da(p>>>0);n=da(o[J>>2]);do if(q|m>da(R*n)){c=(p>>>0>2&(p+-1&p|0)==0&1|p<<1)^1;d=~~da(_(da(m/n)))>>>0;Kg(P,c>>>0>>0?d:c);c=k[B>>2]|0;d=c+-1|0;if(!(d&c)){e=c;c=d&s;break}else{e=c;c=(s>>>0)%(c>>>0)|0;break}}else e=p;while(0);c=(k[P>>2]|0)+(c<<2)|0;d=k[c>>2]|0;if(!d){k[f>>2]=k[D>>2];k[D>>2]=f;k[c>>2]=D;c=k[f>>2]|0;if(c|0){c=k[c+4>>2]|0;d=e+-1|0;if(!(d&e))c=c&d;else c=(c>>>0)%(e>>>0)|0;k[(k[P>>2]|0)+(c<<2)>>2]=f}}else{k[f>>2]=k[d>>2];k[d>>2]=f}k[C>>2]=(k[C>>2]|0)+1}s=E;c=k[s>>2]|0;s=uk(c|0,k[s+4>>2]|0,t|0,((t|0)<0)<<31>>31|0)|0;Ii((k[k[F>>2]>>2]|0)+s|0,H|0,c|0)|0;k[(k[O>>2]|0)+(u<<2)>>2]=t;c=t+1|0}else{k[(k[O>>2]|0)+(u<<2)>>2]=k[c+24>>2];c=t}u=u+1|0;e=k[N>>2]|0;if((u|0)>=(e|0)){l=c;break}else t=c}}else l=0;if((l|0)!=(e|0)){j=a+84|0;if(!(i[j>>0]|0)){e=k[a+68>>2]|0;c=(k[a+72>>2]|0)-e|0;if((c|0)>0){f=k[O>>2]|0;d=c>>2;c=0;do{a=e+(c<<2)|0;k[a>>2]=k[f+(k[a>>2]<<2)>>2];c=c+1|0}while((c|0)<(d|0))}}else{i[j>>0]=0;c=a+68|0;d=a+72|0;h=k[d>>2]|0;g=k[c>>2]|0;f=h-g>>2;if(e>>>0<=f>>>0){if(e>>>0>>0?(L=g+(e<<2)|0,(h|0)!=(L|0)):0)k[d>>2]=h+(~((h+-4-L|0)>>>2)<<2)}else{Ag(c,e-f|0,3152);e=k[N>>2]|0}if((e|0)>0){f=k[O>>2]|0;if(i[j>>0]|0)Ka(14270,14289,80,14321);d=k[a+68>>2]|0;c=0;do{k[d+(c<<2)>>2]=k[f+(c<<2)>>2];c=c+1|0}while((c|0)<(e|0))}}k[N>>2]=l}e=k[O>>2]|0;f=e;if(e|0){c=O+4|0;d=k[c>>2]|0;if((d|0)!=(e|0))k[c>>2]=d+(~((d+-4-f|0)>>>2)<<2);cn(e)}c=k[P+8>>2]|0;if(c|0)do{O=c;c=k[c>>2]|0;cn(O)}while((c|0)!=0);c=k[P>>2]|0;k[P>>2]=0;if(!c){r=Q;return l|0}cn(c);r=Q;return l|0}function ec(a,b,c){a=a|0;b=b|0;c=c|0;var d=0,e=0,f=0,g=0,h=0,j=0,l=Pa,m=Pa,n=0,p=0,q=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,B=0,C=0,D=0,E=0,F=0,G=0,H=0,I=Pa;H=r;r=r+48|0;G=H+12|0;B=H+32|0;F=H;C=G+16|0;k[G>>2]=0;k[G+4>>2]=0;k[G+8>>2]=0;k[G+12>>2]=0;o[C>>2]=da(1.0);E=a+80|0;bj(F,k[E>>2]|0);e=k[E>>2]|0;a:do if((e|0)>0){u=b+48|0;v=b+40|0;w=G+4|0;x=G+12|0;y=G+8|0;z=a+40|0;A=a+64|0;t=k[c>>2]|0;h=0;s=0;q=0;while(1){f=t+s|0;j=u;p=k[j>>2]|0;j=k[j+4>>2]|0;g=v;g=uk(f|0,((f|0)<0)<<31>>31|0,k[g>>2]|0,k[g+4>>2]|0)|0;j=sl(g|0,M|0,p|0,j|0)|0;j=i[(k[k[b>>2]>>2]|0)+j>>0]|0;i[B>>0]=j;p=j&255^318;b:do if(h){g=h+-1|0;f=(g&h|0)==0;if(f)d=g&p;else d=(p>>>0)%(h>>>0)|0;e=k[G>>2]|0;c=k[e+(d<<2)>>2]|0;c:do if(c|0){if(f)do{c=k[c>>2]|0;if(!c)break c;if((k[c+4>>2]&g|0)!=(d|0))break c}while((i[c+8>>0]|0)!=j<<24>>24);else do{c=k[c>>2]|0;if(!c)break c;if((((k[c+4>>2]|0)>>>0)%(h>>>0)|0|0)!=(d|0))break c}while((i[c+8>>0]|0)!=j<<24>>24);k[(k[F>>2]|0)+(s<<2)>>2]=k[c+12>>2];d=q;break b}while(0);if(f)c=g&p;else c=(p>>>0)%(h>>>0)|0;d=k[e+(c<<2)>>2]|0;if(d)if(f)while(1){d=k[d>>2]|0;if(!d){d=h;e=0;n=28;break b}if((k[d+4>>2]&g|0)!=(c|0)){d=h;e=0;n=28;break b}if((i[d+8>>0]|0)==j<<24>>24){n=40;break}}else while(1){d=k[d>>2]|0;if(!d){d=h;e=0;n=28;break b}if((((k[d+4>>2]|0)>>>0)%(h>>>0)|0|0)!=(c|0)){d=h;e=0;n=28;break b}if((i[d+8>>0]|0)==j<<24>>24){n=40;break}}else{d=h;e=0;n=28}}else{c=0;d=0;e=1;n=28}while(0);if((n|0)==28){f=xk(16)|0;i[f+8>>0]=j;k[f+12>>2]=q;k[f+4>>2]=p;k[f>>2]=0;l=da(((k[x>>2]|0)+1|0)>>>0);I=da(d>>>0);m=da(o[C>>2]);do if(e|l>da(I*m)){c=(d>>>0>2&(d+-1&d|0)==0&1|d<<1)^1;d=~~da(_(da(l/m)))>>>0;Qg(G,c>>>0>>0?d:c);c=k[w>>2]|0;d=c+-1|0;if(!(d&c)){e=c;c=d&p;break}else{e=c;c=(p>>>0)%(c>>>0)|0;break}}else e=d;while(0);c=(k[G>>2]|0)+(c<<2)|0;d=k[c>>2]|0;if(!d){k[f>>2]=k[y>>2];k[y>>2]=f;k[c>>2]=y;c=k[f>>2]|0;if(c|0){c=k[c+4>>2]|0;d=e+-1|0;if(!(d&e))c=c&d;else c=(c>>>0)%(e>>>0)|0;k[(k[G>>2]|0)+(c<<2)>>2]=f}}else{k[f>>2]=k[d>>2];k[d>>2]=f}k[x>>2]=(k[x>>2]|0)+1;n=40}if((n|0)==40){n=0;p=z;d=k[p>>2]|0;p=uk(d|0,k[p+4>>2]|0,q|0,((q|0)<0)<<31>>31|0)|0;Ii((k[k[A>>2]>>2]|0)+p|0,B|0,d|0)|0;k[(k[F>>2]|0)+(s<<2)>>2]=q;d=q+1|0}c=s+1|0;e=k[E>>2]|0;if((c|0)>=(e|0)){n=d;break a}h=k[w>>2]|0;s=c;q=d}}else n=0;while(0);if((n|0)!=(e|0)){j=a+84|0;if(!(i[j>>0]|0)){e=k[a+68>>2]|0;c=(k[a+72>>2]|0)-e|0;if((c|0)>0){f=k[F>>2]|0;d=c>>2;c=0;do{a=e+(c<<2)|0;k[a>>2]=k[f+(k[a>>2]<<2)>>2];c=c+1|0}while((c|0)<(d|0))}}else{i[j>>0]=0;c=a+68|0;d=a+72|0;h=k[d>>2]|0;g=k[c>>2]|0;f=h-g>>2;if(e>>>0<=f>>>0){if(e>>>0>>0?(D=g+(e<<2)|0,(h|0)!=(D|0)):0)k[d>>2]=h+(~((h+-4-D|0)>>>2)<<2)}else{Ag(c,e-f|0,3152);e=k[E>>2]|0}if((e|0)>0){f=k[F>>2]|0;if(i[j>>0]|0)Ka(14270,14289,80,14321);d=k[a+68>>2]|0;c=0;do{k[d+(c<<2)>>2]=k[f+(c<<2)>>2];c=c+1|0}while((c|0)<(e|0))}}k[E>>2]=n}e=k[F>>2]|0;f=e;if(e|0){c=F+4|0;d=k[c>>2]|0;if((d|0)!=(e|0))k[c>>2]=d+(~((d+-4-f|0)>>>2)<<2);cn(e)}c=k[G+8>>2]|0;if(c|0)do{F=c;c=k[c>>2]|0;cn(F)}while((c|0)!=0);c=k[G>>2]|0;k[G>>2]=0;if(!c){r=H;return n|0}cn(c);r=H;return n|0}function fc(a,b){a=a|0;b=b|0;var c=0,d=0,e=0,f=0,g=0,h=0,l=0,m=0,n=0,o=0;o=a+8|0;d=k[o>>2]|0;switch(k[d+28>>2]|0){case 2:{c=i[d+24>>0]|0;l=c<<24>>24;h=$m((l|0)>-1?l:-1)|0;a:do if(b|0){g=a+16|0;if(c<<24>>24>0){a=0;d=0}else{Ii(k[k[d+64>>2]>>2]|0,h|0,l|0)|0;if((b|0)==1)break;else{c=0;a=1}while(1){c=c+l|0;Ii((k[k[(k[o>>2]|0)+64>>2]>>2]|0)+c|0,h|0,l|0)|0;a=a+1|0;if((a|0)==(b|0))break a}}while(1){f=k[g>>2]|0;c=0;e=d;while(1){i[h+c>>0]=k[f+(e<<2)>>2];c=c+1|0;if((c|0)==(l|0))break;else e=e+1|0}Ii((k[k[(k[o>>2]|0)+64>>2]>>2]|0)+d|0,h|0,l|0)|0;a=a+1|0;if((a|0)==(b|0))break;else d=d+l|0}}while(0);an(h);o=1;return o|0}case 1:{c=i[d+24>>0]|0;h=c<<24>>24;l=$m((h|0)>-1?h:-1)|0;b:do if(b|0){g=a+16|0;if(c<<24>>24>0){a=0;d=0}else{Ii(k[k[d+64>>2]>>2]|0,l|0,h|0)|0;if((b|0)==1)break;else{c=0;a=1}while(1){c=c+h|0;Ii((k[k[(k[o>>2]|0)+64>>2]>>2]|0)+c|0,l|0,h|0)|0;a=a+1|0;if((a|0)==(b|0))break b}}while(1){f=k[g>>2]|0;c=0;e=d;while(1){i[l+c>>0]=k[f+(e<<2)>>2];c=c+1|0;if((c|0)==(h|0))break;else e=e+1|0}Ii((k[k[(k[o>>2]|0)+64>>2]>>2]|0)+d|0,l|0,h|0)|0;a=a+1|0;if((a|0)==(b|0))break;else d=d+h|0}}while(0);an(l);o=1;return o|0}case 4:{c=i[d+24>>0]|0;l=c<<24>>24;m=l<<1;n=$m(l>>>0>2147483647?-1:l<<1)|0;c:do if(b|0){h=a+16|0;if(c<<24>>24>0){a=0;d=0;e=0}else{Ii(k[k[d+64>>2]>>2]|0,n|0,m|0)|0;if((b|0)==1)break;else{c=0;a=1}while(1){c=c+m|0;Ii((k[k[(k[o>>2]|0)+64>>2]>>2]|0)+c|0,n|0,m|0)|0;a=a+1|0;if((a|0)==(b|0))break c}}while(1){g=k[h>>2]|0;c=0;f=e;while(1){j[n+(c<<1)>>1]=k[g+(f<<2)>>2];c=c+1|0;if((c|0)==(l|0))break;else f=f+1|0}Ii((k[k[(k[o>>2]|0)+64>>2]>>2]|0)+d|0,n|0,m|0)|0;a=a+1|0;if((a|0)==(b|0))break;else{d=d+m|0;e=e+l|0}}}while(0);an(n);o=1;return o|0}case 3:{c=i[d+24>>0]|0;l=c<<24>>24;m=l<<1;n=$m(l>>>0>2147483647?-1:l<<1)|0;d:do if(b|0){h=a+16|0;if(c<<24>>24>0){a=0;d=0;e=0}else{Ii(k[k[d+64>>2]>>2]|0,n|0,m|0)|0;if((b|0)==1)break;else{c=0;a=1}while(1){c=c+m|0;Ii((k[k[(k[o>>2]|0)+64>>2]>>2]|0)+c|0,n|0,m|0)|0;a=a+1|0;if((a|0)==(b|0))break d}}while(1){g=k[h>>2]|0;c=0;f=e;while(1){j[n+(c<<1)>>1]=k[g+(f<<2)>>2];c=c+1|0;if((c|0)==(l|0))break;else f=f+1|0}Ii((k[k[(k[o>>2]|0)+64>>2]>>2]|0)+d|0,n|0,m|0)|0;a=a+1|0;if((a|0)==(b|0))break;else{d=d+m|0;e=e+l|0}}}while(0);an(n);o=1;return o|0}case 6:{c=i[d+24>>0]|0;l=c<<24>>24;m=l<<2;n=$m(l>>>0>1073741823?-1:l<<2)|0;e:do if(b|0){h=a+16|0;if(c<<24>>24>0){a=0;d=0;e=0}else{Ii(k[k[d+64>>2]>>2]|0,n|0,m|0)|0;if((b|0)==1)break;else{c=0;a=1}while(1){c=c+m|0;Ii((k[k[(k[o>>2]|0)+64>>2]>>2]|0)+c|0,n|0,m|0)|0;a=a+1|0;if((a|0)==(b|0))break e}}while(1){g=k[h>>2]|0;c=0;f=e;while(1){k[n+(c<<2)>>2]=k[g+(f<<2)>>2];c=c+1|0;if((c|0)==(l|0))break;else f=f+1|0}Ii((k[k[(k[o>>2]|0)+64>>2]>>2]|0)+d|0,n|0,m|0)|0;a=a+1|0;if((a|0)==(b|0))break;else{d=d+m|0;e=e+l|0}}}while(0);an(n);o=1;return o|0}case 5:{c=i[d+24>>0]|0;l=c<<24>>24;m=l<<2;n=$m(l>>>0>1073741823?-1:l<<2)|0;f:do if(b|0){h=a+16|0;if(c<<24>>24>0){a=0;d=0;e=0}else{Ii(k[k[d+64>>2]>>2]|0,n|0,m|0)|0;if((b|0)==1)break;else{c=0;a=1}while(1){c=c+m|0;Ii((k[k[(k[o>>2]|0)+64>>2]>>2]|0)+c|0,n|0,m|0)|0;a=a+1|0;if((a|0)==(b|0))break f}}while(1){g=k[h>>2]|0;c=0;f=e;while(1){k[n+(c<<2)>>2]=k[g+(f<<2)>>2];c=c+1|0;if((c|0)==(l|0))break;else f=f+1|0}Ii((k[k[(k[o>>2]|0)+64>>2]>>2]|0)+d|0,n|0,m|0)|0;a=a+1|0;if((a|0)==(b|0))break;else{d=d+m|0;e=e+l|0}}}while(0);an(n);o=1;return o|0}default:{o=0;return o|0}}return 0}function gc(a,b){a=a|0;b=b|0;var c=0,d=0,e=0,f=0,g=0,h=0,i=0,j=0,l=0,m=0,n=0,o=0,p=0,q=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0;z=r;r=r+32|0;q=z+28|0;p=z+24|0;i=z+20|0;j=z+16|0;l=z+12|0;m=z+8|0;v=z+4|0;w=z;e=k[b>>2]|0;if((e|0)<0){r=z;return}u=(e>>>0)/3|0;s=a+12|0;if(k[(k[s>>2]|0)+(u>>>5<<2)>>2]&1<<(u&31)|0){r=z;return}t=a+56|0;c=k[t>>2]|0;u=a+60|0;d=k[u>>2]|0;if((d|0)!=(c|0)){c=d+(~((d+-4-c|0)>>>2)<<2)|0;k[u>>2]=c}o=a+64|0;if((c|0)==(k[o>>2]|0))xh(t,b);else{k[c>>2]=e;k[u>>2]=c+4}c=k[a>>2]|0;d=k[b>>2]|0;e=d+1|0;do if((d|0)>=0){f=k[c+28>>2]|0;c=k[f+((((e|0)%3|0|0)==0?d+-2|0:e)<<2)>>2]|0;if(!((d>>>0)%3|0)){g=c;d=d+2|0;c=f;break}else{g=c;d=d+-1|0;c=f;break}}else{c=k[c+28>>2]|0;g=k[c+(d<<2)>>2]|0}while(0);h=k[c+(d<<2)>>2]|0;n=a+24|0;c=k[n>>2]|0;d=c+(g>>>5<<2)|0;e=1<<(g&31);f=k[d>>2]|0;if(!(f&e)){k[d>>2]=f|e;k[i>>2]=g;c=k[b>>2]|0;d=c+1|0;if((c|0)>=0)c=((d|0)%3|0|0)==0?c+-2|0:d;k[j>>2]=c;k[p>>2]=k[i>>2];k[q>>2]=k[j>>2];Nf(a+36|0,p,q);c=k[n>>2]|0}c=c+(h>>>5<<2)|0;d=1<<(h&31);e=k[c>>2]|0;if(!(e&d)){k[c>>2]=e|d;d=a+36|0;k[l>>2]=h;c=k[b>>2]|0;do if((c|0)>=0)if(!((c>>>0)%3|0)){c=c+2|0;break}else{c=c+-1|0;break}while(0);k[m>>2]=c;k[p>>2]=k[l>>2];k[q>>2]=k[m>>2];Nf(d,p,q)}d=k[t>>2]|0;c=k[u>>2]|0;if((d|0)==(c|0)){r=z;return}j=a+36|0;do{e=k[c+-4>>2]|0;k[b>>2]=e;f=(e|0)/3|0;if((e|0)>=0?(x=k[s>>2]|0,(k[x+(f>>>5<<2)>>2]&1<<(f&31)|0)==0):0){c=e;d=x;e=k[a>>2]|0;a:while(1){h=(c|0)/3|0;c=d+(h>>>5<<2)|0;k[c>>2]=1<<(h&31)|k[c>>2];c=k[b>>2]|0;h=k[(k[e+28>>2]|0)+(c<<2)>>2]|0;d=k[(k[e+40>>2]|0)+(h<<2)>>2]|0;if((d|0)<0)i=1;else{i=k[(k[k[e+64>>2]>>2]|0)+(((d>>>0)/3|0)*12|0)+(((d>>>0)%3|0)<<2)>>2]|0;i=(1<<(i&31)&k[(k[e+12>>2]|0)+(i>>>5<<2)>>2]|0)!=0}d=(k[n>>2]|0)+(h>>>5<<2)|0;f=1<<(h&31);g=k[d>>2]|0;if(!(g&f)){k[d>>2]=g|f;k[v>>2]=h;k[w>>2]=k[b>>2];k[p>>2]=k[v>>2];k[q>>2]=k[w>>2];Nf(j,p,q);e=k[a>>2]|0;c=k[b>>2]|0;if(i){i=e;y=40}else{d=c+1|0;if((c|0)>=0)c=((d|0)%3|0|0)==0?c+-2|0:d;do if(!(1<<(c&31)&k[(k[e>>2]|0)+(c>>>5<<2)>>2])){if((c|0)<0)break;c=k[(k[(k[e+64>>2]|0)+12>>2]|0)+(c<<2)>>2]|0}else c=-1073741824;while(0);k[b>>2]=c}}else{i=e;y=40}if((y|0)==40){y=0;e=(c|0)<0;d=c+1|0;if(e)d=c;else d=((d|0)%3|0|0)==0?c+-2|0:d;if(!(1<<(d&31)&k[(k[i>>2]|0)+(d>>>5<<2)>>2])){if((d|0)>=0)d=k[(k[(k[i+64>>2]|0)+12>>2]|0)+(d<<2)>>2]|0}else d=-1073741824;k[q>>2]=d;do if(!e)if(!((c>>>0)%3|0)){c=c+2|0;break}else{c=c+-1|0;break}while(0);do if(!(1<<(c&31)&k[(k[i>>2]|0)+(c>>>5<<2)>>2])){if((c|0)<0)break;c=k[(k[(k[i+64>>2]|0)+12>>2]|0)+(c<<2)>>2]|0}else c=-1073741824;while(0);m=(d|0)<0;e=m?-1:(d>>>0)/3|0;f=(c|0)<0;g=f?-1:(c>>>0)/3|0;do if(!m){h=k[s>>2]|0;if(k[h+(e>>>5<<2)>>2]&1<<(e&31)|0){y=54;break}if(f){c=d;break}if(!(k[h+(g>>>5<<2)>>2]&1<<(g&31))){y=59;break a}else c=d}else y=54;while(0);if((y|0)==54){y=0;if(f){y=56;break}if(k[(k[s>>2]|0)+(g>>>5<<2)>>2]&1<<(g&31)){y=56;break}}k[b>>2]=c;e=i}d=k[s>>2]|0}do if((y|0)==56){y=0;c=(k[u>>2]|0)+-4|0;k[u>>2]=c}else if((y|0)==59){y=0;d=k[u>>2]|0;k[d+-4>>2]=c;if((d|0)==(k[o>>2]|0)){xh(t,q);c=k[u>>2]|0;break}else{k[d>>2]=k[q>>2];c=d+4|0;k[u>>2]=c;break}}while(0);d=k[t>>2]|0}else{c=c+-4|0;k[u>>2]=c}}while((d|0)!=(c|0));r=z;return}function hc(a,b){a=a|0;b=b|0;var c=0,d=0,e=0,f=0,g=0,h=0,m=0,n=0,o=0,p=0,q=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0;z=r;r=r+16|0;y=z+4|0;v=z;w=b+8|0;g=w;h=k[g>>2]|0;g=k[g+4>>2]|0;x=b+16|0;d=x;c=k[d>>2]|0;d=k[d+4>>2]|0;f=sl(c|0,d|0,4,0)|0;e=M;if((g|0)<(e|0)|(g|0)==(e|0)&h>>>0>>0){y=-1;r=z;return y|0}u=(k[b>>2]|0)+c|0;u=l[u>>0]|l[u+1>>0]<<8|l[u+2>>0]<<16|l[u+3>>0]<<24;t=x;k[t>>2]=f;k[t+4>>2]=e;a:do if(u|0){if(((Nm(j[(k[a+4>>2]|0)+24>>1]|0)|0)&65535)<=257){o=y+4|0;p=y+8|0;q=a+40|0;s=a+44|0;t=a+36|0;d=sl(c|0,d|0,8,0)|0;c=M;b:do if(!((g|0)<(c|0)|(g|0)==(c|0)&h>>>0>>0)){n=0;m=e;do{e=k[b>>2]|0;A=e+f|0;k[y>>2]=l[A>>0]|l[A+1>>0]<<8|l[A+2>>0]<<16|l[A+3>>0]<<24;A=x;k[A>>2]=d;k[A+4>>2]=c;c=sl(f|0,m|0,8,0)|0;A=M;if((g|0)<(A|0)|(g|0)==(A|0)&h>>>0>>0)break b;c=e+d|0;k[o>>2]=l[c>>0]|l[c+1>>0]<<8|l[c+2>>0]<<16|l[c+3>>0]<<24;c=sl(f|0,m|0,8,0)|0;A=M;d=x;k[d>>2]=c;k[d+4>>2]=A;if(!((g|0)>(A|0)|(g|0)==(A|0)&h>>>0>c>>>0))break b;c=i[e+c>>0]|0;m=sl(f|0,m|0,9,0)|0;A=x;k[A>>2]=m;k[A+4>>2]=M;i[p>>0]=c&3|i[p>>0]&-4;c=k[q>>2]|0;if((c|0)==(k[s>>2]|0))dh(t,y);else{k[c>>2]=k[y>>2];k[c+4>>2]=k[y+4>>2];k[c+8>>2]=k[y+8>>2];k[q>>2]=(k[q>>2]|0)+12}n=n+1|0;if(n>>>0>=u>>>0)break a;g=w;h=k[g>>2]|0;g=k[g+4>>2]|0;m=x;f=k[m>>2]|0;m=k[m+4>>2]|0;d=sl(f|0,m|0,4,0)|0;c=M}while(!((g|0)<(c|0)|(g|0)==(c|0)&h>>>0>>0))}while(0);A=-1;r=z;return A|0}e=y+4|0;f=a+40|0;g=a+44|0;h=a+36|0;c=0;d=0;do{ci(v,b);k[e>>2]=(k[v>>2]|0)+d;ci(v,b);d=k[e>>2]|0;k[y>>2]=d-(k[v>>2]|0);m=k[f>>2]|0;if((m|0)==(k[g>>2]|0))dh(h,y);else{k[m>>2]=k[y>>2];k[m+4>>2]=k[y+4>>2];k[m+8>>2]=k[y+8>>2];k[f>>2]=(k[f>>2]|0)+12}c=c+1|0}while((c|0)!=(u|0));ig(b,0,0)|0;m=b+36|0;n=a+36|0;o=b+32|0;p=b+24|0;q=b+28|0;h=0;c=0;do{if(i[m>>0]|0){d=k[o>>2]|0;e=k[p>>2]|0;g=k[q>>2]|0;c=e+(d>>>3)|0;if(c>>>0>>0){f=(l[c>>0]|0)>>>(d&7)&1;d=d+1|0;k[o>>2]=d}else f=0;c=e+(d>>>3)|0;if(c>>>0>>0){c=(l[c>>0]|0)>>>(d&7)&1;k[o>>2]=d+1}else c=0;c=c<<1|f}A=(k[n>>2]|0)+(h*12|0)+8|0;i[A>>0]=c&3|i[A>>0]&-4;h=h+1|0}while((h|0)!=(u|0));Oj(b)}while(0);h=w;g=k[h>>2]|0;h=k[h+4>>2]|0;f=x;e=k[f>>2]|0;f=k[f+4>>2]|0;d=sl(e|0,f|0,4,0)|0;c=M;if((h|0)<(c|0)|(h|0)==(c|0)&g>>>0>>0){A=-1;r=z;return A|0}p=(k[b>>2]|0)+e|0;p=l[p>>0]|l[p+1>>0]<<8|l[p+2>>0]<<16|l[p+3>>0]<<24;A=x;k[A>>2]=d;k[A+4>>2]=c;c:do if(p|0){if(((Nm(j[(k[a+4>>2]|0)+24>>1]|0)|0)&65535)>257){g=a+52|0;h=a+56|0;e=a+48|0;c=0;d=0;while(1){k[y>>2]=0;ci(v,b);d=(k[v>>2]|0)+d|0;k[y>>2]=d;f=k[g>>2]|0;if((f|0)==(k[h>>2]|0))xh(e,y);else{k[f>>2]=d;k[g>>2]=f+4}c=c+1|0;if((c|0)==(p|0))break c}}n=a+52|0;o=a+56|0;m=a+48|0;k[y>>2]=0;e=sl(e|0,f|0,8,0)|0;c=M;if(!((h|0)<(c|0)|(h|0)==(c|0)&g>>>0>>0)){f=0;do{d=(k[b>>2]|0)+d|0;d=l[d>>0]|l[d+1>>0]<<8|l[d+2>>0]<<16|l[d+3>>0]<<24;k[y>>2]=d;A=x;k[A>>2]=e;k[A+4>>2]=c;c=k[n>>2]|0;if((c|0)==(k[o>>2]|0))xh(m,y);else{k[c>>2]=d;k[n>>2]=c+4}f=f+1|0;if(f>>>0>=p>>>0)break c;v=w;A=k[v>>2]|0;v=k[v+4>>2]|0;e=x;d=k[e>>2]|0;e=k[e+4>>2]|0;k[y>>2]=0;e=sl(d|0,e|0,4,0)|0;c=M}while(!((v|0)<(c|0)|(v|0)==(c|0)&A>>>0>>0))}A=-1;r=z;return A|0}while(0);A=k[x>>2]|0;r=z;return A|0}function ic(a,b,c,d,e,f){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;f=f|0;var g=0,h=0,i=0,j=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,B=0;x=a+8|0;k[x>>2]=e;h=a+32|0;i=a+36|0;g=k[i>>2]|0;f=k[h>>2]|0;d=g-f>>2;if(d>>>0>=e>>>0)if(d>>>0>e>>>0?(j=f+(e<<2)|0,(g|0)!=(j|0)):0){k[i>>2]=g+(~((g+-4-j|0)>>>2)<<2);d=e}else d=e;else{jh(h,e-d|0);d=k[x>>2]|0}u=k[a+48>>2]|0;v=k[a+52>>2]|0;t=e>>>0>1073741823?-1:e<<2;w=$m(t)|0;Vi(w|0,0,t|0)|0;if((d|0)>0){l=a+16|0;j=a+32|0;m=a+12|0;i=0;do{h=k[w+(i<<2)>>2]|0;d=k[l>>2]|0;do if((h|0)<=(d|0)){d=k[m>>2]|0;f=k[j>>2]|0;g=f+(i<<2)|0;if((h|0)<(d|0)){k[g>>2]=d;g=f;break}else{k[g>>2]=h;g=f;break}}else{g=k[j>>2]|0;k[g+(i<<2)>>2]=d}while(0);i=i+1|0;d=k[x>>2]|0}while((i|0)<(d|0));if((d|0)>0){d=0;do{k[c+(d<<2)>>2]=(k[b+(d<<2)>>2]|0)+(k[g+(d<<2)>>2]|0);d=d+1|0;f=k[x>>2]|0}while((d|0)<(f|0));if((f|0)>0){f=a+20|0;d=0;do{g=c+(d<<2)|0;h=k[g>>2]|0;if((h|0)<=(k[l>>2]|0)){if((h|0)<(k[m>>2]|0))k[g>>2]=(k[f>>2]|0)+h}else k[g>>2]=h-(k[f>>2]|0);d=d+1|0}while((d|0)<(k[x>>2]|0))}}}p=a+56|0;f=k[p>>2]|0;h=k[f+4>>2]|0;g=k[f>>2]|0;t=h-g|0;q=t>>2;if((t|0)<=4){an(w);return 1}r=a+16|0;s=a+32|0;t=a+12|0;a=a+20|0;n=u+12|0;o=(e|0)>0;d=1;while(1){if(h-g>>2>>>0<=d>>>0){B=28;break}f=k[g+(d<<2)>>2]|0;m=$(d,e)|0;if((f|0)>=0?(y=k[(k[n>>2]|0)+(f<<2)>>2]|0,(y|0)>=0):0){h=k[u>>2]|0;g=(y>>>0)%3|0;i=k[v>>2]|0;l=k[i+(k[h+(((y>>>0)/3|0)*12|0)+(g<<2)>>2]<<2)>>2]|0;f=y+1|0;f=((f|0)%3|0|0)==0?y+-2|0:f;if((f|0)<0)f=-1073741824;else f=k[h+(((f>>>0)/3|0)*12|0)+(((f>>>0)%3|0)<<2)>>2]|0;j=k[i+(f<<2)>>2]|0;f=((g|0)==0?2:-1)+y|0;if((f|0)<0)f=-1073741824;else f=k[h+(((f>>>0)/3|0)*12|0)+(((f>>>0)%3|0)<<2)>>2]|0;f=k[i+(f<<2)>>2]|0;if((l|0)<(d|0)&(j|0)<(d|0)&(f|0)<(d|0)){i=$(l,e)|0;h=$(j,e)|0;g=$(f,e)|0;if(o){f=0;do{k[w+(f<<2)>>2]=(k[c+(f+g<<2)>>2]|0)+(k[c+(f+h<<2)>>2]|0)-(k[c+(f+i<<2)>>2]|0);f=f+1|0}while((f|0)!=(e|0))}l=c+(m<<2)|0;if((k[x>>2]|0)>0){j=0;do{i=k[w+(j<<2)>>2]|0;f=k[r>>2]|0;do if((i|0)<=(f|0)){f=k[t>>2]|0;g=k[s>>2]|0;h=g+(j<<2)|0;if((i|0)<(f|0)){k[h>>2]=f;h=g;break}else{k[h>>2]=i;h=g;break}}else{h=k[s>>2]|0;k[h+(j<<2)>>2]=f}while(0);j=j+1|0;f=k[x>>2]|0}while((j|0)<(f|0));if((f|0)>0){f=0;do{k[l+(f<<2)>>2]=(k[b+(f+m<<2)>>2]|0)+(k[h+(f<<2)>>2]|0);f=f+1|0;g=k[x>>2]|0}while((f|0)<(g|0));if((g|0)>0){f=0;do{g=l+(f<<2)|0;h=k[g>>2]|0;if((h|0)<=(k[r>>2]|0)){if((h|0)<(k[t>>2]|0))k[g>>2]=(k[a>>2]|0)+h}else k[g>>2]=h-(k[a>>2]|0);f=f+1|0}while((f|0)<(k[x>>2]|0))}}}}else B=37}else B=37;if((B|0)==37?(B=0,z=c+(($(d+-1|0,e)|0)<<2)|0,A=c+(m<<2)|0,(k[x>>2]|0)>0):0){j=0;do{i=k[z+(j<<2)>>2]|0;f=k[r>>2]|0;do if((i|0)<=(f|0)){f=k[t>>2]|0;g=k[s>>2]|0;h=g+(j<<2)|0;if((i|0)<(f|0)){k[h>>2]=f;h=g;break}else{k[h>>2]=i;h=g;break}}else{h=k[s>>2]|0;k[h+(j<<2)>>2]=f}while(0);j=j+1|0;f=k[x>>2]|0}while((j|0)<(f|0));if((f|0)>0){f=0;do{k[A+(f<<2)>>2]=(k[b+(f+m<<2)>>2]|0)+(k[h+(f<<2)>>2]|0);f=f+1|0;g=k[x>>2]|0}while((f|0)<(g|0));if((g|0)>0){f=0;do{g=A+(f<<2)|0;h=k[g>>2]|0;if((h|0)<=(k[r>>2]|0)){if((h|0)<(k[t>>2]|0))k[g>>2]=(k[a>>2]|0)+h}else k[g>>2]=h-(k[a>>2]|0);f=f+1|0}while((f|0)<(k[x>>2]|0))}}}d=d+1|0;if((d|0)>=(q|0)){B=25;break}f=k[p>>2]|0;g=k[f>>2]|0;h=k[f+4>>2]|0}if((B|0)==25){an(w);return 1}else if((B|0)==28)gm(f);return 0}function jc(a,b){a=a|0;b=b|0;var c=0,d=0,e=0,f=0,g=0,h=0,i=0,j=0,l=0,m=0,n=0,o=0,p=0,q=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0;z=r;r=r+32|0;q=z+28|0;p=z+24|0;i=z+20|0;j=z+16|0;l=z+12|0;m=z+8|0;v=z+4|0;w=z;e=k[b>>2]|0;if((e|0)<0){r=z;return}u=(e>>>0)/3|0;s=a+12|0;if(k[(k[s>>2]|0)+(u>>>5<<2)>>2]&1<<(u&31)|0){r=z;return}t=a+56|0;c=k[t>>2]|0;u=a+60|0;d=k[u>>2]|0;if((d|0)!=(c|0)){c=d+(~((d+-4-c|0)>>>2)<<2)|0;k[u>>2]=c}o=a+64|0;if((c|0)==(k[o>>2]|0))xh(t,b);else{k[c>>2]=e;k[u>>2]=c+4}e=k[a>>2]|0;d=k[b>>2]|0;c=d+1|0;if((d|0)>=0){c=((c|0)%3|0|0)==0?d+-2|0:c;if((c|0)<0)c=-1073741824;else c=k[(k[e>>2]|0)+(((c>>>0)/3|0)*12|0)+(((c>>>0)%3|0)<<2)>>2]|0;d=(((d>>>0)%3|0|0)==0?2:-1)+d|0;if((d|0)<0){g=c;h=-1073741824}else{g=c;h=k[(k[e>>2]|0)+(((d>>>0)/3|0)*12|0)+(((d>>>0)%3|0)<<2)>>2]|0}}else{g=-1073741824;h=-1073741824}n=a+24|0;c=k[n>>2]|0;d=c+(g>>>5<<2)|0;e=1<<(g&31);f=k[d>>2]|0;if(!(f&e)){k[d>>2]=f|e;k[i>>2]=g;c=k[b>>2]|0;d=c+1|0;if((c|0)>=0)c=((d|0)%3|0|0)==0?c+-2|0:d;k[j>>2]=c;k[p>>2]=k[i>>2];k[q>>2]=k[j>>2];Nf(a+36|0,p,q);c=k[n>>2]|0}c=c+(h>>>5<<2)|0;d=1<<(h&31);e=k[c>>2]|0;if(!(e&d)){k[c>>2]=e|d;d=a+36|0;k[l>>2]=h;c=k[b>>2]|0;do if((c|0)>=0)if(!((c>>>0)%3|0)){c=c+2|0;break}else{c=c+-1|0;break}while(0);k[m>>2]=c;k[p>>2]=k[l>>2];k[q>>2]=k[m>>2];Nf(d,p,q)}c=k[t>>2]|0;e=k[u>>2]|0;if((c|0)==(e|0)){r=z;return}j=a+36|0;d=c;while(1){c=k[e+-4>>2]|0;k[b>>2]=c;f=(c|0)/3|0;if((c|0)>=0?(x=k[s>>2]|0,(k[x+(f>>>5<<2)>>2]&1<<(f&31)|0)==0):0){d=x;a:while(1){e=(c|0)/3|0;f=d+(e>>>5<<2)|0;k[f>>2]=1<<(e&31)|k[f>>2];f=k[b>>2]|0;e=k[a>>2]|0;if((f|0)<0)i=-1073741824;else i=k[(k[e>>2]|0)+(((f>>>0)/3|0)*12|0)+(((f>>>0)%3|0)<<2)>>2]|0;c=k[(k[e+24>>2]|0)+(i<<2)>>2]|0;d=c+1|0;if((c|0)>=0){c=((d|0)%3|0|0)==0?c+-2|0:d;if((c|0)>=0){c=k[(k[e+12>>2]|0)+(c<<2)>>2]|0;d=c+1|0;if((c|0)<0)h=c;else h=((d|0)%3|0|0)==0?c+-2|0:d}else h=c}else h=c;c=(k[n>>2]|0)+(i>>>5<<2)|0;d=1<<(i&31);g=k[c>>2]|0;if(!(g&d)){k[c>>2]=g|d;k[v>>2]=i;k[w>>2]=k[b>>2];k[p>>2]=k[v>>2];k[q>>2]=k[w>>2];Nf(j,p,q);d=k[a>>2]|0;c=k[b>>2]|0;if((h|0)<0){f=c;e=d;y=41}else{do if((c|0)<0)c=-1073741824;else{m=c+1|0;c=((m|0)%3|0|0)==0?c+-2|0:m;if((c|0)<0)break;c=k[(k[d+12>>2]|0)+(c<<2)>>2]|0}while(0);k[b>>2]=c}}else y=41;if((y|0)==41){y=0;if((f|0)<0){y=44;break}c=f+1|0;c=((c|0)%3|0|0)==0?f+-2|0:c;if((c|0)>=0)c=k[(k[e+12>>2]|0)+(c<<2)>>2]|0;k[q>>2]=c;d=(((f>>>0)%3|0|0)==0?2:-1)+f|0;if((d|0)>=0)d=k[(k[e+12>>2]|0)+(d<<2)>>2]|0;m=(c|0)<0;e=m?-1:(c>>>0)/3|0;f=(d|0)<0;g=f?-1:(d>>>0)/3|0;do if(!m){h=k[s>>2]|0;if(k[h+(e>>>5<<2)>>2]&1<<(e&31)|0){y=49;break}if(f)break;if(!(k[h+(g>>>5<<2)>>2]&1<<(g&31))){y=54;break a}}else y=49;while(0);if((y|0)==49){y=0;if(f){y=51;break}if(!(k[(k[s>>2]|0)+(g>>>5<<2)>>2]&1<<(g&31)))c=d;else{y=51;break}}k[b>>2]=c}d=k[s>>2]|0}do if((y|0)==44){k[q>>2]=-1073741824;y=51}else if((y|0)==54){y=0;c=k[u>>2]|0;k[c+-4>>2]=d;if((c|0)==(k[o>>2]|0)){xh(t,q);c=k[u>>2]|0;break}else{k[c>>2]=k[q>>2];c=c+4|0;k[u>>2]=c;break}}while(0);if((y|0)==51){y=0;c=(k[u>>2]|0)+-4|0;k[u>>2]=c}d=k[t>>2]|0}else{c=e+-4|0;k[u>>2]=c}if((d|0)==(c|0))break;else e=c}r=z;return}function kc(a,b,c,d,e,f){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;f=f|0;var g=0,h=0,i=0,j=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,B=0,C=0,D=0,E=0,F=0;y=a+8|0;k[y>>2]=e;h=a+32|0;i=a+36|0;g=k[i>>2]|0;f=k[h>>2]|0;d=g-f>>2;if(d>>>0>=e>>>0)if(d>>>0>e>>>0?(j=f+(e<<2)|0,(g|0)!=(j|0)):0){k[i>>2]=g+(~((g+-4-j|0)>>>2)<<2);d=e}else d=e;else{jh(h,e-d|0);d=k[y>>2]|0}v=k[a+48>>2]|0;w=k[a+52>>2]|0;u=e>>>0>1073741823?-1:e<<2;x=$m(u)|0;Vi(x|0,0,u|0)|0;if((d|0)>0){l=a+16|0;j=a+32|0;m=a+12|0;i=0;do{h=k[x+(i<<2)>>2]|0;d=k[l>>2]|0;do if((h|0)<=(d|0)){d=k[m>>2]|0;f=k[j>>2]|0;g=f+(i<<2)|0;if((h|0)<(d|0)){k[g>>2]=d;g=f;break}else{k[g>>2]=h;g=f;break}}else{g=k[j>>2]|0;k[g+(i<<2)>>2]=d}while(0);i=i+1|0;d=k[y>>2]|0}while((i|0)<(d|0));if((d|0)>0){d=0;do{k[c+(d<<2)>>2]=(k[b+(d<<2)>>2]|0)+(k[g+(d<<2)>>2]|0);d=d+1|0;f=k[y>>2]|0}while((d|0)<(f|0));if((f|0)>0){f=a+20|0;d=0;do{g=c+(d<<2)|0;h=k[g>>2]|0;if((h|0)<=(k[l>>2]|0)){if((h|0)<(k[m>>2]|0))k[g>>2]=(k[f>>2]|0)+h}else k[g>>2]=h-(k[f>>2]|0);d=d+1|0}while((d|0)<(k[y>>2]|0))}}}q=a+56|0;g=k[q>>2]|0;f=k[g+4>>2]|0;h=k[g>>2]|0;u=f-h|0;r=u>>2;if((u|0)<=4){an(x);return 1}s=a+16|0;t=a+32|0;u=a+12|0;a=a+20|0;n=v+64|0;o=v+28|0;p=(e|0)>0;d=1;while(1){if(f-h>>2>>>0<=d>>>0){F=28;break}f=k[h+(d<<2)>>2]|0;m=$(d,e)|0;if((!((f|0)<0?1:(1<<(f&31)&k[(k[v>>2]|0)+(f>>>5<<2)>>2]|0)!=0)?(z=k[(k[(k[n>>2]|0)+12>>2]|0)+(f<<2)>>2]|0,(z|0)>=0):0)?(C=k[o>>2]|0,l=k[w>>2]|0,A=k[l+(k[C+(z<<2)>>2]<<2)>>2]|0,B=z+1|0,B=k[l+(k[C+((((B|0)%3|0|0)==0?z+-2|0:B)<<2)>>2]<<2)>>2]|0,C=k[l+(k[C+((((z>>>0)%3|0|0)==0?2:-1)+z<<2)>>2]<<2)>>2]|0,(A|0)<(d|0)&(B|0)<(d|0)&(C|0)<(d|0)):0){g=$(A,e)|0;h=$(B,e)|0;i=$(C,e)|0;if(p){f=0;do{k[x+(f<<2)>>2]=(k[c+(f+i<<2)>>2]|0)+(k[c+(f+h<<2)>>2]|0)-(k[c+(f+g<<2)>>2]|0);f=f+1|0}while((f|0)!=(e|0))}l=c+(m<<2)|0;if((k[y>>2]|0)>0){j=0;do{i=k[x+(j<<2)>>2]|0;f=k[s>>2]|0;do if((i|0)<=(f|0)){f=k[u>>2]|0;g=k[t>>2]|0;h=g+(j<<2)|0;if((i|0)<(f|0)){k[h>>2]=f;h=g;break}else{k[h>>2]=i;h=g;break}}else{h=k[t>>2]|0;k[h+(j<<2)>>2]=f}while(0);j=j+1|0;f=k[y>>2]|0}while((j|0)<(f|0));if((f|0)>0){f=0;do{k[l+(f<<2)>>2]=(k[b+(f+m<<2)>>2]|0)+(k[h+(f<<2)>>2]|0);f=f+1|0;g=k[y>>2]|0}while((f|0)<(g|0));if((g|0)>0){f=0;do{g=l+(f<<2)|0;h=k[g>>2]|0;if((h|0)<=(k[s>>2]|0)){if((h|0)<(k[u>>2]|0))k[g>>2]=(k[a>>2]|0)+h}else k[g>>2]=h-(k[a>>2]|0);f=f+1|0}while((f|0)<(k[y>>2]|0))}}}}else F=33;if((F|0)==33?(F=0,D=c+(($(d+-1|0,e)|0)<<2)|0,E=c+(m<<2)|0,(k[y>>2]|0)>0):0){j=0;do{i=k[D+(j<<2)>>2]|0;f=k[s>>2]|0;do if((i|0)<=(f|0)){f=k[u>>2]|0;g=k[t>>2]|0;h=g+(j<<2)|0;if((i|0)<(f|0)){k[h>>2]=f;h=g;break}else{k[h>>2]=i;h=g;break}}else{h=k[t>>2]|0;k[h+(j<<2)>>2]=f}while(0);j=j+1|0;f=k[y>>2]|0}while((j|0)<(f|0));if((f|0)>0){f=0;do{k[E+(f<<2)>>2]=(k[b+(f+m<<2)>>2]|0)+(k[h+(f<<2)>>2]|0);f=f+1|0;g=k[y>>2]|0}while((f|0)<(g|0));if((g|0)>0){f=0;do{g=E+(f<<2)|0;h=k[g>>2]|0;if((h|0)<=(k[s>>2]|0)){if((h|0)<(k[u>>2]|0))k[g>>2]=(k[a>>2]|0)+h}else k[g>>2]=h-(k[a>>2]|0);f=f+1|0}while((f|0)<(k[y>>2]|0))}}}d=d+1|0;if((d|0)>=(r|0)){F=25;break}f=k[q>>2]|0;g=f;h=k[f>>2]|0;f=k[f+4>>2]|0}if((F|0)==25){an(x);return 1}else if((F|0)==28)gm(g);return 0}function lc(a,b,c,d){a=a|0;b=b|0;c=c|0;d=d|0;var e=Pa,f=0,g=0,h=Pa,i=0,j=0,l=Pa,m=Pa,n=Pa,p=0,q=Pa,s=Pa,t=Pa,u=Pa,v=Pa,w=Pa,x=0,y=0,z=0,A=0,B=0,C=0,D=Pa;C=r;r=r+48|0;z=C+24|0;x=C+12|0;y=C;g=a+24|0;f=k[b>>2]|0;b=f+1|0;if((f|0)>=0){b=((b|0)%3|0|0)==0?f+-2|0:b;f=f+(((f>>>0)%3|0|0)==0?2:-1)|0;if((b|0)<0)b=-1073741824;else b=k[(k[k[g>>2]>>2]|0)+(((b>>>0)/3|0)*12|0)+(((b>>>0)%3|0)<<2)>>2]|0;if((f|0)<0)f=-1073741824;else f=k[(k[k[g>>2]>>2]|0)+(((f>>>0)/3|0)*12|0)+(((f>>>0)%3|0)<<2)>>2]|0}else{b=-1073741824;f=-1073741824}g=k[a+28>>2]|0;i=k[g+4>>2]|0;j=k[g>>2]|0;if(i-j>>2>>>0<=b>>>0)gm(g);p=k[j+(b<<2)>>2]|0;if(i-j>>2>>>0<=f>>>0)gm(g);f=k[j+(f<<2)>>2]|0;b=(p|0)<(d|0);if(!(b&(f|0)<(d|0))){do if(b){i=a+48|0;b=k[i>>2]|0;g=$(b,p)|0}else{if((d|0)>0){i=a+48|0;b=k[i>>2]|0;g=$(b,d+-1|0)|0;break}g=a+48|0;if((k[g>>2]|0)<=0){r=C;return}f=k[a+44>>2]|0;b=0;do{k[f+(b<<2)>>2]=0;b=b+1|0}while((b|0)<(k[g>>2]|0));r=C;return}while(0);if((b|0)<=0){r=C;return}f=k[a+44>>2]|0;b=0;do{k[f+(b<<2)>>2]=k[c+(b+g<<2)>>2];b=b+1|0}while((b|0)<(k[i>>2]|0));r=C;return}b=a+48|0;j=k[b>>2]|0;i=$(j,p)|0;t=da(k[c+(i<<2)>>2]|0);u=da(k[c+(i+1<<2)>>2]|0);j=$(j,f)|0;v=da(k[c+(j<<2)>>2]|0);w=da(k[c+(j+1<<2)>>2]|0);if(!(v!=t|w!=u)){a=k[a+44>>2]|0;k[a>>2]=~~v;k[a+4>>2]=~~w;r=C;return}jg(z,a,d);jg(x,a,p);jg(y,a,f);q=da(o[y>>2]);l=da(o[x>>2]);q=da(q-l);s=da(o[y+4>>2]);m=da(o[x+4>>2]);s=da(s-m);h=da(o[y+8>>2]);e=da(o[x+8>>2]);h=da(h-e);l=da(da(o[z>>2])-l);m=da(da(o[z+4>>2])-m);e=da(da(o[z+8>>2])-e);n=da(da(da(da(q*q)+da(0.0))+da(s*s))+da(h*h));if(n>da(0.0)?1:(k[a+64>>2]|0)<258){D=da(da(da(da(da(q*l)+da(0.0))+da(s*m))+da(h*e))/n);q=da(l-da(q*D));s=da(m-da(s*D));e=da(e-da(h*D));h=D;e=da(P(da(da(da(e*e)+da(da(s*s)+da(da(q*q)+da(0.0))))/n)))}else{h=da(0.0);e=da(0.0)}m=da(v-t);l=da(w-u);D=da(t+da(m*h));m=da(m*e);w=da(u+da(l*h));l=da(l*e);h=da(D-l);e=da(w+m);l=da(D+l);m=da(w-m);b=$(k[b>>2]|0,d)|0;w=da(k[c+(b<<2)>>2]|0);D=da(k[c+(b+1<<2)>>2]|0);u=da(w-h);v=da(D-e);w=da(w-l);D=da(D-m);c=da(da(da(u*u)+da(0.0))+da(v*v))>2]|0;i=k[a+60>>2]|0;j=(g|0)==(i<<5|0);if(c){do if(j)if((g+1|0)<0)hm(b);else{A=i<<6;c=g+32&-32;Xg(b,i<<5>>>0<1073741823?(A>>>0>>0?c:A):2147483647);A=k[f>>2]|0;break}else A=g;while(0);k[f>>2]=A+1;c=(k[b>>2]|0)+(A>>>5<<2)|0;k[c>>2]=k[c>>2]|1<<(A&31)}else{do if(j)if((g+1|0)<0)hm(b);else{B=i<<6;c=g+32&-32;Xg(b,i<<5>>>0<1073741823?(B>>>0>>0?c:B):2147483647);B=k[f>>2]|0;break}else B=g;while(0);k[f>>2]=B+1;c=(k[b>>2]|0)+(B>>>5<<2)|0;k[c>>2]=k[c>>2]&~(1<<(B&31));h=l;e=m}c=~~+N(+(+h+.5));a=k[a+44>>2]|0;k[a>>2]=c;c=~~+N(+(+e+.5));k[a+4>>2]=c;r=C;return}function mc(a,b,c,d){a=a|0;b=b|0;c=c|0;d=d|0;var e=Pa,f=0,g=0,h=Pa,i=0,j=0,l=Pa,m=Pa,n=Pa,p=0,q=Pa,s=Pa,t=Pa,u=Pa,v=Pa,w=Pa,x=0,y=0,z=0,A=0,B=0,C=0,D=Pa;C=r;r=r+48|0;z=C+24|0;x=C+12|0;y=C;g=a+48|0;f=k[b>>2]|0;b=f+1|0;if((f|0)>=0){b=((b|0)%3|0|0)==0?f+-2|0:b;f=f+(((f>>>0)%3|0|0)==0?2:-1)|0;if((b|0)<0)b=-1073741824;else b=k[(k[k[g>>2]>>2]|0)+(((b>>>0)/3|0)*12|0)+(((b>>>0)%3|0)<<2)>>2]|0;if((f|0)<0)f=-1073741824;else f=k[(k[k[g>>2]>>2]|0)+(((f>>>0)/3|0)*12|0)+(((f>>>0)%3|0)<<2)>>2]|0}else{b=-1073741824;f=-1073741824}g=k[a+52>>2]|0;i=k[g+4>>2]|0;j=k[g>>2]|0;if(i-j>>2>>>0<=b>>>0)gm(g);p=k[j+(b<<2)>>2]|0;if(i-j>>2>>>0<=f>>>0)gm(g);f=k[j+(f<<2)>>2]|0;b=(p|0)<(d|0);if(!(b&(f|0)<(d|0))){do if(b){i=a+72|0;b=k[i>>2]|0;g=$(b,p)|0}else{if((d|0)>0){i=a+72|0;b=k[i>>2]|0;g=$(b,d+-1|0)|0;break}g=a+72|0;if((k[g>>2]|0)<=0){r=C;return}f=k[a+68>>2]|0;b=0;do{k[f+(b<<2)>>2]=0;b=b+1|0}while((b|0)<(k[g>>2]|0));r=C;return}while(0);if((b|0)<=0){r=C;return}f=k[a+68>>2]|0;b=0;do{k[f+(b<<2)>>2]=k[c+(b+g<<2)>>2];b=b+1|0}while((b|0)<(k[i>>2]|0));r=C;return}b=a+72|0;j=k[b>>2]|0;i=$(j,p)|0;t=da(k[c+(i<<2)>>2]|0);u=da(k[c+(i+1<<2)>>2]|0);j=$(j,f)|0;v=da(k[c+(j<<2)>>2]|0);w=da(k[c+(j+1<<2)>>2]|0);if(!(v!=t|w!=u)){a=k[a+68>>2]|0;k[a>>2]=~~v;k[a+4>>2]=~~w;r=C;return}kg(z,a,d);kg(x,a,p);kg(y,a,f);q=da(o[y>>2]);l=da(o[x>>2]);q=da(q-l);s=da(o[y+4>>2]);m=da(o[x+4>>2]);s=da(s-m);h=da(o[y+8>>2]);e=da(o[x+8>>2]);h=da(h-e);l=da(da(o[z>>2])-l);m=da(da(o[z+4>>2])-m);e=da(da(o[z+8>>2])-e);n=da(da(da(da(q*q)+da(0.0))+da(s*s))+da(h*h));if(n>da(0.0)?1:(k[a+88>>2]|0)<258){D=da(da(da(da(da(q*l)+da(0.0))+da(s*m))+da(h*e))/n);q=da(l-da(q*D));s=da(m-da(s*D));e=da(e-da(h*D));h=D;e=da(P(da(da(da(e*e)+da(da(s*s)+da(da(q*q)+da(0.0))))/n)))}else{h=da(0.0);e=da(0.0)}m=da(v-t);l=da(w-u);D=da(t+da(m*h));m=da(m*e);w=da(u+da(l*h));l=da(l*e);h=da(D-l);e=da(w+m);l=da(D+l);m=da(w-m);b=$(k[b>>2]|0,d)|0;w=da(k[c+(b<<2)>>2]|0);D=da(k[c+(b+1<<2)>>2]|0);u=da(w-h);v=da(D-e);w=da(w-l);D=da(D-m);c=da(da(da(u*u)+da(0.0))+da(v*v))>2]|0;i=k[a+84>>2]|0;j=(g|0)==(i<<5|0);if(c){do if(j)if((g+1|0)<0)hm(b);else{A=i<<6;c=g+32&-32;Xg(b,i<<5>>>0<1073741823?(A>>>0>>0?c:A):2147483647);A=k[f>>2]|0;break}else A=g;while(0);k[f>>2]=A+1;c=(k[b>>2]|0)+(A>>>5<<2)|0;k[c>>2]=k[c>>2]|1<<(A&31)}else{do if(j)if((g+1|0)<0)hm(b);else{B=i<<6;c=g+32&-32;Xg(b,i<<5>>>0<1073741823?(B>>>0>>0?c:B):2147483647);B=k[f>>2]|0;break}else B=g;while(0);k[f>>2]=B+1;c=(k[b>>2]|0)+(B>>>5<<2)|0;k[c>>2]=k[c>>2]&~(1<<(B&31));h=l;e=m}c=~~+N(+(+h+.5));a=k[a+68>>2]|0;k[a>>2]=c;c=~~+N(+(+e+.5));k[a+4>>2]=c;r=C;return}function nc(a,b,c){a=a|0;b=b|0;c=c|0;var d=0,e=0,f=0,g=0,h=0,j=0,l=0,m=0,n=0,o=0,p=0,q=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,B=0,C=0;C=r;r=r+16|0;x=C+8|0;y=C+4|0;z=C;A=a+64|0;d=k[A>>2]|0;if(((k[d+28>>2]|0)-(k[d+24>>2]|0)|0)<=0){r=C;return}w=b+80|0;t=b+84|0;u=a+52|0;v=c+84|0;j=c+68|0;l=a+56|0;m=a+60|0;n=a+12|0;o=a+28|0;p=a+40|0;q=a+44|0;s=a+48|0;f=0;h=0;a:while(1){b=k[(k[d+24>>2]|0)+(h<<2)>>2]|0;if((b|0)<0){c=f;b=d}else{g=f+1|0;c=(b>>>0)/3|0;d=k[w>>2]|0;if((c|0)>=(((k[t>>2]|0)-d|0)/12|0|0)){B=6;break}c=k[d+(c*12|0)+(((b>>>0)%3|0)<<2)>>2]|0;if(!(i[v>>0]|0))c=k[(k[j>>2]|0)+(c<<2)>>2]|0;k[x>>2]=c;d=k[l>>2]|0;if(d>>>0<(k[m>>2]|0)>>>0){k[d>>2]=c;k[l>>2]=d+4}else xh(u,x);k[x>>2]=b;k[y>>2]=0;b:do if(k[(k[n>>2]|0)+(h>>>5<<2)>>2]&1<<(h&31)){c=b+1|0;c=((c|0)%3|0|0)==0?b+-2|0:c;e=k[a>>2]|0;if(!(1<<(c&31)&k[e+(c>>>5<<2)>>2])){if((c|0)>=0){c=k[(k[(k[A>>2]|0)+12>>2]|0)+(c<<2)>>2]|0;d=c+1|0;if((c|0)>=0){c=((d|0)%3|0|0)==0?c+-2|0:d;k[y>>2]=c;if((c|0)>-1)b=c;else break;while(1){k[x>>2]=b;c=b+1|0;c=((c|0)%3|0|0)==0?b+-2|0:c;if(1<<(c&31)&k[e+(c>>>5<<2)>>2]|0){c=-1073741824;break}if((c|0)<0)break;c=k[(k[(k[A>>2]|0)+12>>2]|0)+(c<<2)>>2]|0;d=c+1|0;if((c|0)<0)break;c=((d|0)%3|0|0)==0?c+-2|0:d;k[y>>2]=c;if((c|0)>-1)b=c;else break b}k[y>>2]=c;break}}}else c=-1073741824;k[y>>2]=c}while(0);k[(k[o>>2]|0)+(b<<2)>>2]=f;b=k[q>>2]|0;if((b|0)==(k[s>>2]|0))xh(p,x);else{k[b>>2]=k[x>>2];k[q>>2]=b+4}b=k[A>>2]|0;d=k[x>>2]|0;c:do if((d|0)>=0){c=(((d>>>0)%3|0|0)==0?2:-1)+d|0;if((c|0)>=0){c=k[(k[b+12>>2]|0)+(c<<2)>>2]|0;if((c|0)>=0){c=c+(((c>>>0)%3|0|0)==0?2:-1)|0;k[y>>2]=c;if((c|0)>-1&(c|0)!=(d|0)){b=f;e=c;while(1){f=e+1|0;f=((f|0)%3|0|0)==0?e+-2|0:f;do if(k[(k[a>>2]|0)+(f>>>5<<2)>>2]&1<<(f&31)){d=g+1|0;b=(e|0)/3|0;if((e|0)<=-3){B=33;break a}c=k[w>>2]|0;if((b|0)>=(((k[t>>2]|0)-c|0)/12|0|0)){B=35;break a}b=k[c+(b*12|0)+(((e|0)%3|0)<<2)>>2]|0;if(!(i[v>>0]|0))b=k[(k[j>>2]|0)+(b<<2)>>2]|0;k[z>>2]=b;c=k[l>>2]|0;if(c>>>0<(k[m>>2]|0)>>>0){k[c>>2]=b;k[l>>2]=c+4}else xh(u,z);b=k[q>>2]|0;if((b|0)==(k[s>>2]|0)){xh(p,y);f=d;d=g;break}else{k[b>>2]=k[y>>2];k[q>>2]=b+4;f=d;d=g;break}}else{f=g;d=b}while(0);k[(k[o>>2]|0)+(k[y>>2]<<2)>>2]=d;b=k[A>>2]|0;c=k[y>>2]|0;if((c|0)<0)break;c=(((c>>>0)%3|0|0)==0?2:-1)+c|0;if((c|0)<0)break;c=k[(k[b+12>>2]|0)+(c<<2)>>2]|0;if((c|0)<0)break;e=c+(((c>>>0)%3|0|0)==0?2:-1)|0;k[y>>2]=e;if(!((e|0)>-1?(e|0)!=(k[x>>2]|0):0)){c=f;break c}else{g=f;b=d}}k[y>>2]=c;c=f}else c=g}else B=30}else B=30}else{c=d;B=30}while(0);if((B|0)==30){B=0;k[y>>2]=c;c=g}}h=h+1|0;if((h|0)>=((k[b+28>>2]|0)-(k[b+24>>2]|0)>>2|0)){B=3;break}else{f=c;d=b}}if((B|0)==3){r=C;return}else if((B|0)==6)Ka(14216,14197,64,14211);else if((B|0)==33)Ka(14172,14197,63,14211);else if((B|0)==35)Ka(14216,14197,64,14211)}function oc(a,b,c,d){a=a|0;b=b|0;c=c|0;d=d|0;var e=Pa,f=0,g=0,h=Pa,i=0,j=0,l=Pa,m=Pa,n=Pa,p=0,q=Pa,s=Pa,t=Pa,u=Pa,v=Pa,w=Pa,x=0,y=0,z=0,A=0,B=0,C=0,D=Pa;C=r;r=r+48|0;z=C+24|0;x=C+12|0;y=C;i=a+24|0;f=k[b>>2]|0;b=f+1|0;do if((f|0)>=0){b=((b|0)%3|0|0)==0?f+-2|0:b;if(!((f>>>0)%3|0)){g=f+2|0;break}else{g=f+-1|0;break}}else{g=f;b=f}while(0);f=k[(k[i>>2]|0)+28>>2]|0;b=k[f+(b<<2)>>2]|0;f=k[f+(g<<2)>>2]|0;g=k[a+28>>2]|0;i=k[g+4>>2]|0;j=k[g>>2]|0;if(i-j>>2>>>0<=b>>>0)gm(g);p=k[j+(b<<2)>>2]|0;if(i-j>>2>>>0<=f>>>0)gm(g);f=k[j+(f<<2)>>2]|0;b=(p|0)<(d|0);if(!(b&(f|0)<(d|0))){do if(b){i=a+48|0;b=k[i>>2]|0;g=$(b,p)|0}else{if((d|0)>0){i=a+48|0;b=k[i>>2]|0;g=$(b,d+-1|0)|0;break}g=a+48|0;if((k[g>>2]|0)<=0){r=C;return}f=k[a+44>>2]|0;b=0;do{k[f+(b<<2)>>2]=0;b=b+1|0}while((b|0)<(k[g>>2]|0));r=C;return}while(0);if((b|0)<=0){r=C;return}f=k[a+44>>2]|0;b=0;do{k[f+(b<<2)>>2]=k[c+(b+g<<2)>>2];b=b+1|0}while((b|0)<(k[i>>2]|0));r=C;return}b=a+48|0;j=k[b>>2]|0;i=$(j,p)|0;t=da(k[c+(i<<2)>>2]|0);u=da(k[c+(i+1<<2)>>2]|0);j=$(j,f)|0;v=da(k[c+(j<<2)>>2]|0);w=da(k[c+(j+1<<2)>>2]|0);if(!(v!=t|w!=u)){a=k[a+44>>2]|0;k[a>>2]=~~v;k[a+4>>2]=~~w;r=C;return}jg(z,a,d);jg(x,a,p);jg(y,a,f);q=da(o[y>>2]);l=da(o[x>>2]);q=da(q-l);s=da(o[y+4>>2]);m=da(o[x+4>>2]);s=da(s-m);h=da(o[y+8>>2]);e=da(o[x+8>>2]);h=da(h-e);l=da(da(o[z>>2])-l);m=da(da(o[z+4>>2])-m);e=da(da(o[z+8>>2])-e);n=da(da(da(da(q*q)+da(0.0))+da(s*s))+da(h*h));if(n>da(0.0)?1:(k[a+64>>2]|0)<258){D=da(da(da(da(da(q*l)+da(0.0))+da(s*m))+da(h*e))/n);q=da(l-da(q*D));s=da(m-da(s*D));e=da(e-da(h*D));h=D;e=da(P(da(da(da(e*e)+da(da(s*s)+da(da(q*q)+da(0.0))))/n)))}else{h=da(0.0);e=da(0.0)}m=da(v-t);l=da(w-u);D=da(t+da(m*h));m=da(m*e);w=da(u+da(l*h));l=da(l*e);h=da(D-l);e=da(w+m);l=da(D+l);m=da(w-m);b=$(k[b>>2]|0,d)|0;w=da(k[c+(b<<2)>>2]|0);D=da(k[c+(b+1<<2)>>2]|0);u=da(w-h);v=da(D-e);w=da(w-l);D=da(D-m);c=da(da(da(u*u)+da(0.0))+da(v*v))>2]|0;i=k[a+60>>2]|0;j=(g|0)==(i<<5|0);if(c){do if(j)if((g+1|0)<0)hm(b);else{A=i<<6;c=g+32&-32;Xg(b,i<<5>>>0<1073741823?(A>>>0>>0?c:A):2147483647);A=k[f>>2]|0;break}else A=g;while(0);k[f>>2]=A+1;c=(k[b>>2]|0)+(A>>>5<<2)|0;k[c>>2]=k[c>>2]|1<<(A&31)}else{do if(j)if((g+1|0)<0)hm(b);else{B=i<<6;c=g+32&-32;Xg(b,i<<5>>>0<1073741823?(B>>>0>>0?c:B):2147483647);B=k[f>>2]|0;break}else B=g;while(0);k[f>>2]=B+1;c=(k[b>>2]|0)+(B>>>5<<2)|0;k[c>>2]=k[c>>2]&~(1<<(B&31));h=l;e=m}c=~~+N(+(+h+.5));a=k[a+44>>2]|0;k[a>>2]=c;c=~~+N(+(+e+.5));k[a+4>>2]=c;r=C;return}function pc(a,b,c,d){a=a|0;b=b|0;c=c|0;d=d|0;var e=Pa,f=0,g=0,h=Pa,i=0,j=0,l=Pa,m=Pa,n=Pa,p=0,q=Pa,s=Pa,t=Pa,u=Pa,v=Pa,w=Pa,x=0,y=0,z=0,A=0,B=0,C=0,D=Pa;C=r;r=r+48|0;z=C+24|0;x=C+12|0;y=C;i=a+48|0;f=k[b>>2]|0;b=f+1|0;do if((f|0)>=0){b=((b|0)%3|0|0)==0?f+-2|0:b;if(!((f>>>0)%3|0)){g=f+2|0;break}else{g=f+-1|0;break}}else{g=f;b=f}while(0);f=k[(k[i>>2]|0)+28>>2]|0;b=k[f+(b<<2)>>2]|0;f=k[f+(g<<2)>>2]|0;g=k[a+52>>2]|0;i=k[g+4>>2]|0;j=k[g>>2]|0;if(i-j>>2>>>0<=b>>>0)gm(g);p=k[j+(b<<2)>>2]|0;if(i-j>>2>>>0<=f>>>0)gm(g);f=k[j+(f<<2)>>2]|0;b=(p|0)<(d|0);if(!(b&(f|0)<(d|0))){do if(b){i=a+72|0;b=k[i>>2]|0;g=$(b,p)|0}else{if((d|0)>0){i=a+72|0;b=k[i>>2]|0;g=$(b,d+-1|0)|0;break}g=a+72|0;if((k[g>>2]|0)<=0){r=C;return}f=k[a+68>>2]|0;b=0;do{k[f+(b<<2)>>2]=0;b=b+1|0}while((b|0)<(k[g>>2]|0));r=C;return}while(0);if((b|0)<=0){r=C;return}f=k[a+68>>2]|0;b=0;do{k[f+(b<<2)>>2]=k[c+(b+g<<2)>>2];b=b+1|0}while((b|0)<(k[i>>2]|0));r=C;return}b=a+72|0;j=k[b>>2]|0;i=$(j,p)|0;t=da(k[c+(i<<2)>>2]|0);u=da(k[c+(i+1<<2)>>2]|0);j=$(j,f)|0;v=da(k[c+(j<<2)>>2]|0);w=da(k[c+(j+1<<2)>>2]|0);if(!(v!=t|w!=u)){a=k[a+68>>2]|0;k[a>>2]=~~v;k[a+4>>2]=~~w;r=C;return}kg(z,a,d);kg(x,a,p);kg(y,a,f);q=da(o[y>>2]);l=da(o[x>>2]);q=da(q-l);s=da(o[y+4>>2]);m=da(o[x+4>>2]);s=da(s-m);h=da(o[y+8>>2]);e=da(o[x+8>>2]);h=da(h-e);l=da(da(o[z>>2])-l);m=da(da(o[z+4>>2])-m);e=da(da(o[z+8>>2])-e);n=da(da(da(da(q*q)+da(0.0))+da(s*s))+da(h*h));if(n>da(0.0)?1:(k[a+88>>2]|0)<258){D=da(da(da(da(da(q*l)+da(0.0))+da(s*m))+da(h*e))/n);q=da(l-da(q*D));s=da(m-da(s*D));e=da(e-da(h*D));h=D;e=da(P(da(da(da(e*e)+da(da(s*s)+da(da(q*q)+da(0.0))))/n)))}else{h=da(0.0);e=da(0.0)}m=da(v-t);l=da(w-u);D=da(t+da(m*h));m=da(m*e);w=da(u+da(l*h));l=da(l*e);h=da(D-l);e=da(w+m);l=da(D+l);m=da(w-m);b=$(k[b>>2]|0,d)|0;w=da(k[c+(b<<2)>>2]|0);D=da(k[c+(b+1<<2)>>2]|0);u=da(w-h);v=da(D-e);w=da(w-l);D=da(D-m);c=da(da(da(u*u)+da(0.0))+da(v*v))>2]|0;i=k[a+84>>2]|0;j=(g|0)==(i<<5|0);if(c){do if(j)if((g+1|0)<0)hm(b);else{A=i<<6;c=g+32&-32;Xg(b,i<<5>>>0<1073741823?(A>>>0>>0?c:A):2147483647);A=k[f>>2]|0;break}else A=g;while(0);k[f>>2]=A+1;c=(k[b>>2]|0)+(A>>>5<<2)|0;k[c>>2]=k[c>>2]|1<<(A&31)}else{do if(j)if((g+1|0)<0)hm(b);else{B=i<<6;c=g+32&-32;Xg(b,i<<5>>>0<1073741823?(B>>>0>>0?c:B):2147483647);B=k[f>>2]|0;break}else B=g;while(0);k[f>>2]=B+1;c=(k[b>>2]|0)+(B>>>5<<2)|0;k[c>>2]=k[c>>2]&~(1<<(B&31));h=l;e=m}c=~~+N(+(+h+.5));a=k[a+68>>2]|0;k[a>>2]=c;c=~~+N(+(+e+.5));k[a+4>>2]=c;r=C;return}function qc(a,b,c,d){a=a|0;b=b|0;c=c|0;d=d|0;var e=0,f=0,g=0,h=0,j=0,m=0,n=0,o=0,p=0,q=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,B=0,C=0,D=0,E=0,F=0;F=r;r=r+64|0;E=F;p=E;q=p+40|0;do{k[p>>2]=0;p=p+4|0}while((p|0)<(q|0));a:do if(((we(E,c)|0?(e=c+8|0,o=k[e>>2]|0,e=k[e+4>>2]|0,f=c+16|0,h=f,g=k[h>>2]|0,h=sl(g|0,k[h+4>>2]|0,8,0)|0,j=M,!((e|0)<(j|0)|(e|0)==(j|0)&o>>>0>>0)):0)?(m=k[c>>2]|0,n=m+g|0,u=n,u=l[u>>0]|l[u+1>>0]<<8|l[u+2>>0]<<16|l[u+3>>0]<<24,n=n+4|0,n=l[n>>0]|l[n+1>>0]<<8|l[n+2>>0]<<16|l[n+3>>0]<<24,D=f,k[D>>2]=h,k[D+4>>2]=j,D=al(o|0,e|0,h|0,j|0)|0,C=M,!(n>>>0>C>>>0|(n|0)==(C|0)&u>>>0>D>>>0)):0)?(v=m+h|0,C=sl(u|0,n|0,h|0,j|0)|0,D=f,k[D>>2]=C,k[D+4>>2]=M,(u|0)>=1):0){D=E+40|0;k[D>>2]=v;e=u+-1|0;f=v+e|0;switch((l[f>>0]|0)>>>6&3){case 0:{k[E+44>>2]=e;t=l[f>>0]&63;s=E+48|0;k[s>>2]=t;break}case 1:{if((u|0)<2){j=0;break a}k[E+44>>2]=u+-2;t=v+u+-2|0;t=l[t+1>>0]<<8&16128|l[t>>0];s=E+48|0;k[s>>2]=t;break}case 2:{if((u|0)<3){j=0;break a}k[E+44>>2]=u+-3;t=v+u+-3|0;t=l[t+1>>0]<<8|l[t>>0]|l[t+2>>0]<<16&4128768;s=E+48|0;k[s>>2]=t;break}case 3:{k[E+44>>2]=u+-4;t=v+u+-4|0;t=l[t+2>>0]<<16|l[t+3>>0]<<24&1056964608|l[t+1>>0]<<8|l[t>>0];s=E+48|0;k[s>>2]=t;break}default:{}}C=t+16384|0;k[s>>2]=C;if(C>>>0<=4194303){e=(a|0)>0;b:do if(e){if(!(k[E+12>>2]|0)){j=0;break a}ig(c,0,0)|0;if(e){u=E+48|0;v=E+44|0;w=E+16|0;x=E+28|0;y=(b|0)>0;C=c+36|0;z=c+32|0;A=c+24|0;B=c+28|0;t=0;e=0;f=k[u>>2]|0;while(1){c:do if(f>>>0<16384){g=k[v>>2]|0;do{if((g|0)<=0)break c;g=g+-1|0;k[v>>2]=g;f=l[(k[D>>2]|0)+g>>0]|f<<8;k[u>>2]=f}while(f>>>0<16384)}while(0);p=f&4095;s=k[(k[w>>2]|0)+(p<<2)>>2]|0;q=k[x>>2]|0;f=($(k[q+(s<<3)>>2]|0,f>>>12)|0)+p-(k[q+(s<<3)+4>>2]|0)|0;k[u>>2]=f;if(y){q=(s|0)>0;if((s|0)<=-1){e=33;break}if((s|0)<33)p=0;else{e=32;break}while(1){if(!(i[C>>0]|0)){j=0;break a}if(q){n=k[A>>2]|0;o=k[B>>2]|0;g=0;m=0;j=k[z>>2]|0;do{h=n+(j>>>3)|0;if(h>>>0>>0){h=(l[h>>0]|0)>>>(j&7)&1;j=j+1|0;k[z>>2]=j}else h=0;g=h<>2]=g;p=p+1|0;if((p|0)>=(b|0)){e=h;break}else e=h}}t=t+b|0;if((t|0)>=(a|0))break b}if((e|0)==32){if(!(i[C>>0]|0)){j=0;break a}Ka(6776,6749,113,6768)}else if((e|0)==33){if(!(i[C>>0]|0)){j=0;break a}Ka(6734,6749,112,6768)}}}else ig(c,0,0)|0;while(0);Oj(c);j=1}else j=0}else j=0;while(0);e=k[E+28>>2]|0;f=e;if(e|0){g=E+32|0;h=k[g>>2]|0;if((h|0)!=(e|0))k[g>>2]=h+(~((h+-8-f|0)>>>3)<<3);cn(e)}e=k[E+16>>2]|0;f=e;if(e|0){g=E+20|0;h=k[g>>2]|0;if((h|0)!=(e|0))k[g>>2]=h+(~((h+-4-f|0)>>>2)<<2);cn(e)}g=k[E>>2]|0;if(!g){r=F;return j|0}e=E+4|0;f=k[e>>2]|0;if((f|0)!=(g|0))k[e>>2]=f+(~((f+-4-g|0)>>>2)<<2);cn(g);r=F;return j|0}function rc(a){a=a|0;var b=0,c=0,d=0,e=0,f=0,g=0,h=0,i=0,j=0,l=0,m=0,n=0,o=0;o=r;r=r+32|0;i=o+4|0;h=o;b=a+16|0;c=k[b>>2]|0;if(c>>>0>127){k[b>>2]=c+-128;l=a+4|0;j=k[l>>2]|0;n=k[j>>2]|0;j=j+4|0;k[l>>2]=j;m=a+8|0;h=k[m>>2]|0;i=a+12|0;g=k[i>>2]|0;b=g;f=h;do if((h|0)==(g|0)){c=k[a>>2]|0;d=c;if(j>>>0>c>>>0){b=j;d=((b-d>>2)+1|0)/-2|0;e=j+(d<<2)|0;b=f-b|0;c=b>>2;if(!c)b=j;else{Wj(e|0,j|0,b|0)|0;b=k[l>>2]|0}a=e+(c<<2)|0;k[m>>2]=a;k[l>>2]=b+(d<<2);b=a;break}b=b-d>>1;b=(b|0)==0?1:b;if(b>>>0>1073741823){o=Ma(4)|0;Om(o);xa(o|0,1024,93)}e=xk(b<<2)|0;f=e;d=e+(b>>>2<<2)|0;g=d;e=e+(b<<2)|0;if((j|0)==(h|0))b=g;else{b=g;c=j;do{k[d>>2]=k[c>>2];d=b+4|0;b=d;c=c+4|0}while((c|0)!=(h|0));c=k[a>>2]|0}k[a>>2]=f;k[l>>2]=g;k[m>>2]=b;k[i>>2]=e;if(c){cn(c);b=k[m>>2]|0}}else b=h;while(0);k[b>>2]=n;k[m>>2]=(k[m>>2]|0)+4;r=o;return}n=a+8|0;b=k[n>>2]|0;m=a+4|0;e=b-(k[m>>2]|0)|0;l=a+12|0;c=k[l>>2]|0;d=c-(k[a>>2]|0)|0;if(e>>>0>=d>>>0){b=d>>1;b=(b|0)==0?1:b;k[i+12>>2]=0;k[i+16>>2]=a+12;if(b>>>0>1073741823){o=Ma(4)|0;Om(o);xa(o|0,1024,93)}j=xk(b<<2)|0;k[i>>2]=j;f=j+(e>>2<<2)|0;g=i+8|0;k[g>>2]=f;e=i+4|0;k[e>>2]=f;f=i+12|0;k[f>>2]=j+(b<<2);b=xk(4096)|0;k[h>>2]=b;Yf(i,h);b=k[n>>2]|0;while(1){d=k[m>>2]|0;if((b|0)==(d|0))break;j=b+-4|0;Pf(i,j);b=j}c=k[a>>2]|0;k[a>>2]=k[i>>2];k[i>>2]=c;k[m>>2]=k[e>>2];k[e>>2]=d;b=k[n>>2]|0;k[n>>2]=k[g>>2];k[g>>2]=b;a=k[l>>2]|0;k[l>>2]=k[f>>2];k[f>>2]=a;if((b|0)!=(d|0))k[g>>2]=b+(~((b+-4-d|0)>>>2)<<2);if(c|0)cn(c);r=o;return}if((c|0)!=(b|0)){n=xk(4096)|0;k[i>>2]=n;Yf(a,i);r=o;return}j=xk(4096)|0;k[i>>2]=j;Pf(a,i);i=k[m>>2]|0;j=k[i>>2]|0;i=i+4|0;k[m>>2]=i;h=k[n>>2]|0;g=k[l>>2]|0;b=g;f=h;do if((h|0)==(g|0)){c=k[a>>2]|0;d=c;if(i>>>0>c>>>0){b=i;d=((b-d>>2)+1|0)/-2|0;e=i+(d<<2)|0;b=f-b|0;c=b>>2;if(!c)b=i;else{Wj(e|0,i|0,b|0)|0;b=k[m>>2]|0}a=e+(c<<2)|0;k[n>>2]=a;k[m>>2]=b+(d<<2);b=a;break}b=b-d>>1;b=(b|0)==0?1:b;if(b>>>0>1073741823){o=Ma(4)|0;Om(o);xa(o|0,1024,93)}e=xk(b<<2)|0;f=e;d=e+(b>>>2<<2)|0;g=d;e=e+(b<<2)|0;if((i|0)==(h|0))b=g;else{b=g;c=i;do{k[d>>2]=k[c>>2];d=b+4|0;b=d;c=c+4|0}while((c|0)!=(h|0));c=k[a>>2]|0}k[a>>2]=f;k[m>>2]=g;k[n>>2]=b;k[l>>2]=e;if(c){cn(c);b=k[n>>2]|0}}else b=h;while(0);k[b>>2]=j;k[n>>2]=(k[n>>2]|0)+4;r=o;return}function sc(a,b){a=a|0;b=b|0;var c=0,d=0,e=0,f=0,g=0,h=0,j=0,l=0,m=0,n=0,o=0,p=0,q=0,s=0,t=0,u=0,v=0,w=0,x=0;x=r;r=r+32|0;s=x;t=x+24|0;o=x+28|0;u=x+12|0;p=x+8|0;v=k[a>>2]|0;w=v+8|0;c=k[v>>2]|0;v=k[v+4>>2]|0;w=sl(c|0,v|0,k[w>>2]|0,k[w+4>>2]|0)|0;m=M;m=sl((w|0)==0&(m|0)==0&1|0,0,w|0,m|0)|0;m=~~((+(c>>>0)+4294967296.0*+(v>>>0))/(+(m>>>0)+4294967296.0*+(M>>>0))*256.0+.5)>>>0;m=m>>>0<255?m:255;i[o>>0]=((m&255)<<24>>24==0&1)+m;m=a+12|0;v=a+16|0;c=((k[v>>2]|0)-(k[m>>2]|0)<<1)+64|0;k[u>>2]=0;w=u+4|0;k[w>>2]=0;k[u+8>>2]=0;if(!c)n=0;else{if((c|0)<0)hm(u);d=xk(c)|0;k[w>>2]=d;k[u>>2]=d;k[u+8>>2]=d+c;do{i[d>>0]=0;d=(k[w>>2]|0)+1|0;k[w>>2]=d;c=c+-1|0}while((c|0)!=0);n=k[u>>2]|0}q=a+28|0;c=(k[q>>2]|0)+-1|0;if((c|0)>-1){j=a+24|0;e=4096;d=0;do{h=i[o>>0]|0;f=256-(h&255)|0;g=(k[j>>2]&1<>>0>=h<<12>>>0){i[n+d>>0]=e;d=d+1|0;e=e>>>8}uk(k[1088+(h<<3)>>2]|0,0,e|0,0)|0;e=e+(g?0:f&255)+($((M+e|0)>>>(k[1088+(h<<3)+4>>2]|0),256-h|0)|0)|0;c=c+-1|0}while((c|0)>-1);c=e}else{c=4096;d=0}e=k[v>>2]|0;if((e|0)==(k[m>>2]|0))f=c;else{do{e=e+-4|0;l=k[e>>2]|0;j=31;while(1){h=i[o>>0]|0;f=256-(h&255)|0;g=(1<>>0>=h<<12>>>0){i[n+d>>0]=c;d=d+1|0;c=c>>>8}uk(k[1088+(h<<3)>>2]|0,0,c|0,0)|0;c=c+(g?0:f&255)+($((M+c|0)>>>(k[1088+(h<<3)+4>>2]|0),256-h|0)|0)|0;if((j|0)<=0)break;else j=j+-1|0}}while((e|0)!=(k[m>>2]|0));f=c}if(f>>>0<=4095)Ka(6557,6587,132,6600);if(f>>>0>=1048576)Ka(6614,6587,133,6600);e=f+-4096|0;do if(e>>>0>=64){c=n+d|0;if(e>>>0<16384){f=f+12288|0;i[c>>0]=f;i[c+1>>0]=f>>>8;f=d+2|0;break}else{f=f+8384512|0;i[c>>0]=f;i[c+1>>0]=f>>>8;i[c+2>>0]=f>>>16;f=d+3|0;break}}else{i[n+d>>0]=e;f=d+1|0}while(0);c=b+16|0;e=c;d=k[e>>2]|0;e=k[e+4>>2]|0;if(!((e|0)>0|(e|0)==0&d>>>0>0)){k[t>>2]=k[b+4>>2];k[s>>2]=k[t>>2];Ke(b,s,o,o+1|0)|0;d=c;e=k[d+4>>2]|0;d=k[d>>2]|0}k[p>>2]=f;if(!((e|0)>0|(e|0)==0&d>>>0>0)){k[t>>2]=k[b+4>>2];k[s>>2]=k[t>>2];Ke(b,s,p,p+4|0)|0;d=c;e=k[d+4>>2]|0;d=k[d>>2]|0}c=k[u>>2]|0;if(!((e|0)>0|(e|0)==0&d>>>0>0)){k[t>>2]=k[b+4>>2];k[s>>2]=k[t>>2];Ke(b,s,c,c+f|0)|0}c=s;k[c>>2]=0;k[c+4>>2]=0;nf(a,2,s);c=k[a+12>>2]|0;d=k[v>>2]|0;if((d|0)!=(c|0))k[v>>2]=d+(~((d+-4-c|0)>>>2)<<2);k[a+24>>2]=0;k[q>>2]=0;c=k[u>>2]|0;if(!c){r=x;return}if((k[w>>2]|0)!=(c|0))k[w>>2]=c;cn(c);r=x;return}function tc(a,b,c,d){a=a|0;b=b|0;c=c|0;d=d|0;var e=0,f=0,g=Pa,h=0,i=Pa,j=0,l=Pa,m=Pa,n=Pa,p=Pa,q=Pa,s=0,t=Pa,u=Pa,v=Pa,w=Pa,x=0,y=0,z=0,A=0,B=Pa;A=r;r=r+48|0;z=A+24|0;x=A+12|0;y=A;f=a+24|0;e=k[b>>2]|0;b=e+1|0;if((e|0)>=0){b=((b|0)%3|0|0)==0?e+-2|0:b;e=e+(((e>>>0)%3|0|0)==0?2:-1)|0;if((b|0)<0)b=-1073741824;else b=k[(k[k[f>>2]>>2]|0)+(((b>>>0)/3|0)*12|0)+(((b>>>0)%3|0)<<2)>>2]|0;if((e|0)<0)j=-1073741824;else j=k[(k[k[f>>2]>>2]|0)+(((e>>>0)/3|0)*12|0)+(((e>>>0)%3|0)<<2)>>2]|0}else{j=-1073741824;b=-1073741824}e=k[a+28>>2]|0;f=k[e+4>>2]|0;h=k[e>>2]|0;if(f-h>>2>>>0<=b>>>0)gm(e);s=k[h+(b<<2)>>2]|0;if(f-h>>2>>>0<=j>>>0)gm(e);e=k[h+(j<<2)>>2]|0;b=(s|0)<(d|0);if(b&(e|0)<(d|0)){j=k[a+48>>2]|0;h=$(j,s)|0;u=da(k[c+(h<<2)>>2]|0);v=da(k[c+(h+1<<2)>>2]|0);j=$(j,e)|0;w=da(k[c+(j<<2)>>2]|0);t=da(k[c+(j+1<<2)>>2]|0);if(!(w!=u|t!=v)){a=k[a+44>>2]|0;k[a>>2]=~~w;k[a+4>>2]=~~t;r=A;return}jg(z,a,d);jg(x,a,s);jg(y,a,e);p=da(o[y>>2]);l=da(o[x>>2]);p=da(p-l);q=da(o[y+4>>2]);m=da(o[x+4>>2]);q=da(q-m);i=da(o[y+8>>2]);g=da(o[x+8>>2]);i=da(i-g);l=da(da(o[z>>2])-l);m=da(da(o[z+4>>2])-m);g=da(da(o[z+8>>2])-g);n=da(da(da(da(p*p)+da(0.0))+da(q*q))+da(i*i));if(n>da(0.0)?1:(k[a+64>>2]|0)<258){B=da(da(da(da(da(p*l)+da(0.0))+da(q*m))+da(i*g))/n);p=da(l-da(p*B));q=da(m-da(q*B));g=da(g-da(i*B));i=B;g=da(P(da(da(da(g*g)+da(da(q*q)+da(da(p*p)+da(0.0))))/n)))}else{i=da(0.0);g=da(0.0)}B=da(w-u);w=da(t-v);t=da(u+da(B*i));B=da(B*g);u=da(v+da(w*i));v=da(w*g);c=a+56|0;y=(k[c>>2]|0)+-1|0;z=(1<<(y&31)&k[(k[a+52>>2]|0)+(y>>>5<<2)>>2]|0)==0;k[c>>2]=y;w=da(-v);w=da(t+(z?v:w));v=da(-B);B=da(u+(z?v:B));z=~~+N(+(+w+.5));a=k[a+44>>2]|0;k[a>>2]=z;z=~~+N(+(+B+.5));k[a+4>>2]=z;r=A;return}do if(b){h=a+48|0;b=k[h>>2]|0;f=$(b,s)|0}else{if((d|0)>0){h=a+48|0;b=k[h>>2]|0;f=$(b,d+-1|0)|0;break}f=a+48|0;if((k[f>>2]|0)<=0){r=A;return}e=k[a+44>>2]|0;b=0;do{k[e+(b<<2)>>2]=0;b=b+1|0}while((b|0)<(k[f>>2]|0));r=A;return}while(0);if((b|0)<=0){r=A;return}e=k[a+44>>2]|0;b=0;do{k[e+(b<<2)>>2]=k[c+(b+f<<2)>>2];b=b+1|0}while((b|0)<(k[h>>2]|0));r=A;return}function uc(a,b,c){a=a|0;b=b|0;c=c|0;var d=0,e=0,f=0,g=0,h=0,i=0,j=0,l=0,m=0,n=0,o=0,p=0,q=0,s=0,t=0,u=0,v=0,w=0;v=r;r=r+16|0;q=v+8|0;s=v+4|0;t=v;u=a+64|0;b=k[u>>2]|0;if(((k[b+28>>2]|0)-(k[b+24>>2]|0)|0)<=0){r=v;return}h=a+52|0;i=a+56|0;j=a+60|0;l=a+12|0;m=a+28|0;n=a+40|0;o=a+44|0;p=a+48|0;c=0;g=0;do{e=k[(k[b+24>>2]|0)+(g<<2)>>2]|0;if((e|0)>=0){d=c+1|0;k[q>>2]=c;b=k[i>>2]|0;if((b|0)==(k[j>>2]|0))xh(h,q);else{k[b>>2]=c;k[i>>2]=b+4}k[s>>2]=e;k[t>>2]=0;a:do if(!(k[(k[l>>2]|0)+(g>>>5<<2)>>2]&1<<(g&31)))b=e;else{b=e+1|0;b=((b|0)%3|0|0)==0?e+-2|0:b;f=k[a>>2]|0;if(!(1<<(b&31)&k[f+(b>>>5<<2)>>2])){if((b|0)>=0){b=k[(k[(k[u>>2]|0)+12>>2]|0)+(b<<2)>>2]|0;c=b+1|0;if((b|0)>=0){b=((c|0)%3|0|0)==0?b+-2|0:c;k[t>>2]=b;if((b|0)<=-1){b=e;break}while(1){k[s>>2]=b;c=b+1|0;c=((c|0)%3|0|0)==0?b+-2|0:c;if(1<<(c&31)&k[f+(c>>>5<<2)>>2]|0){c=-1073741824;break}if((c|0)<0)break;c=k[(k[(k[u>>2]|0)+12>>2]|0)+(c<<2)>>2]|0;e=c+1|0;if((c|0)<0)break;c=((e|0)%3|0|0)==0?c+-2|0:e;k[t>>2]=c;if((c|0)>-1)b=c;else break a}k[t>>2]=c;break}}}else b=-1073741824;k[t>>2]=b;b=e}while(0);k[(k[m>>2]|0)+(b<<2)>>2]=k[q>>2];b=k[o>>2]|0;if((b|0)==(k[p>>2]|0))xh(n,s);else{k[b>>2]=k[s>>2];k[o>>2]=b+4}b=k[u>>2]|0;e=k[s>>2]|0;b:do if((e|0)>=0){c=(((e>>>0)%3|0|0)==0?2:-1)+e|0;if((c|0)>=0){c=k[(k[b+12>>2]|0)+(c<<2)>>2]|0;if((c|0)>=0){c=c+(((c>>>0)%3|0|0)==0?2:-1)|0;k[t>>2]=c;if((c|0)>-1&(c|0)!=(e|0)){while(1){f=c+1|0;f=((f|0)%3|0|0)==0?c+-2|0:f;do if(k[(k[a>>2]|0)+(f>>>5<<2)>>2]&1<<(f&31)){c=d+1|0;k[q>>2]=d;b=k[i>>2]|0;if((b|0)==(k[j>>2]|0))xh(h,q);else{k[b>>2]=d;k[i>>2]=b+4}b=k[o>>2]|0;if((b|0)==(k[p>>2]|0)){xh(n,t);d=c;break}else{k[b>>2]=k[t>>2];k[o>>2]=b+4;d=c;break}}while(0);k[(k[m>>2]|0)+(k[t>>2]<<2)>>2]=k[q>>2];b=k[u>>2]|0;c=k[t>>2]|0;if((c|0)<0)break;c=(((c>>>0)%3|0|0)==0?2:-1)+c|0;if((c|0)<0)break;c=k[(k[b+12>>2]|0)+(c<<2)>>2]|0;if((c|0)<0)break;c=c+(((c>>>0)%3|0|0)==0?2:-1)|0;k[t>>2]=c;if(!((c|0)>-1?(c|0)!=(k[s>>2]|0):0)){c=d;break b}}k[t>>2]=c;c=d}else c=d}else w=26}else w=26}else{c=e;w=26}while(0);if((w|0)==26){w=0;k[t>>2]=c;c=d}}g=g+1|0}while((g|0)<((k[b+28>>2]|0)-(k[b+24>>2]|0)>>2|0));r=v;return}function vc(a,b,c,d){a=a|0;b=b|0;c=c|0;d=d|0;var e=0,f=0,g=Pa,h=0,i=Pa,j=0,l=Pa,m=Pa,n=Pa,p=Pa,q=Pa,s=0,t=Pa,u=Pa,v=Pa,w=Pa,x=0,y=0,z=0,A=0,B=Pa;A=r;r=r+48|0;z=A+24|0;x=A+12|0;y=A;f=a+48|0;e=k[b>>2]|0;b=e+1|0;if((e|0)>=0){b=((b|0)%3|0|0)==0?e+-2|0:b;e=e+(((e>>>0)%3|0|0)==0?2:-1)|0;if((b|0)<0)b=-1073741824;else b=k[(k[k[f>>2]>>2]|0)+(((b>>>0)/3|0)*12|0)+(((b>>>0)%3|0)<<2)>>2]|0;if((e|0)<0)j=-1073741824;else j=k[(k[k[f>>2]>>2]|0)+(((e>>>0)/3|0)*12|0)+(((e>>>0)%3|0)<<2)>>2]|0}else{j=-1073741824;b=-1073741824}e=k[a+52>>2]|0;f=k[e+4>>2]|0;h=k[e>>2]|0;if(f-h>>2>>>0<=b>>>0)gm(e);s=k[h+(b<<2)>>2]|0;if(f-h>>2>>>0<=j>>>0)gm(e);e=k[h+(j<<2)>>2]|0;b=(s|0)<(d|0);if(b&(e|0)<(d|0)){j=k[a+72>>2]|0;h=$(j,s)|0;u=da(k[c+(h<<2)>>2]|0);v=da(k[c+(h+1<<2)>>2]|0);j=$(j,e)|0;w=da(k[c+(j<<2)>>2]|0);t=da(k[c+(j+1<<2)>>2]|0);if(!(w!=u|t!=v)){a=k[a+68>>2]|0;k[a>>2]=~~w;k[a+4>>2]=~~t;r=A;return}kg(z,a,d);kg(x,a,s);kg(y,a,e);p=da(o[y>>2]);l=da(o[x>>2]);p=da(p-l);q=da(o[y+4>>2]);m=da(o[x+4>>2]);q=da(q-m);i=da(o[y+8>>2]);g=da(o[x+8>>2]);i=da(i-g);l=da(da(o[z>>2])-l);m=da(da(o[z+4>>2])-m);g=da(da(o[z+8>>2])-g);n=da(da(da(da(p*p)+da(0.0))+da(q*q))+da(i*i));if(n>da(0.0)?1:(k[a+88>>2]|0)<258){B=da(da(da(da(da(p*l)+da(0.0))+da(q*m))+da(i*g))/n);p=da(l-da(p*B));q=da(m-da(q*B));g=da(g-da(i*B));i=B;g=da(P(da(da(da(g*g)+da(da(q*q)+da(da(p*p)+da(0.0))))/n)))}else{i=da(0.0);g=da(0.0)}B=da(w-u);w=da(t-v);t=da(u+da(B*i));B=da(B*g);u=da(v+da(w*i));v=da(w*g);c=a+80|0;y=(k[c>>2]|0)+-1|0;z=(1<<(y&31)&k[(k[a+76>>2]|0)+(y>>>5<<2)>>2]|0)==0;k[c>>2]=y;w=da(-v);w=da(t+(z?v:w));v=da(-B);B=da(u+(z?v:B));z=~~+N(+(+w+.5));a=k[a+68>>2]|0;k[a>>2]=z;z=~~+N(+(+B+.5));k[a+4>>2]=z;r=A;return}do if(b){h=a+72|0;b=k[h>>2]|0;f=$(b,s)|0}else{if((d|0)>0){h=a+72|0;b=k[h>>2]|0;f=$(b,d+-1|0)|0;break}f=a+72|0;if((k[f>>2]|0)<=0){r=A;return}e=k[a+68>>2]|0;b=0;do{k[e+(b<<2)>>2]=0;b=b+1|0}while((b|0)<(k[f>>2]|0));r=A;return}while(0);if((b|0)<=0){r=A;return}e=k[a+68>>2]|0;b=0;do{k[e+(b<<2)>>2]=k[c+(b+f<<2)>>2];b=b+1|0}while((b|0)<(k[h>>2]|0));r=A;return}function wc(a,b,c){a=a|0;b=b|0;c=c|0;var d=0,e=0,f=0,g=0,h=0,j=0,m=0,n=0;n=r;r=r+32|0;d=n+24|0;e=n+20|0;f=n+16|0;g=n+12|0;h=n+8|0;j=n+4|0;m=n;if(!c){c=0;r=n;return c|0}switch(k[a+28>>2]|0){case 9:{d=k[b>>2]|0;switch(i[a+24>>0]|0){case 1:{m=a+48|0;j=k[m>>2]|0;m=k[m+4>>2]|0;h=a+40|0;a=(sl(uk(k[h>>2]|0,k[h+4>>2]|0,d|0,((d|0)<0)<<31>>31|0)|0,M|0,j|0,m|0)|0)+(k[k[a>>2]>>2]|0)|0;k[c>>2]=l[a>>0]|l[a+1>>0]<<8|l[a+2>>0]<<16|l[a+3>>0]<<24;o[c+4>>2]=da(0.0);c=1;r=n;return c|0}case 2:{m=a+48|0;j=k[m>>2]|0;m=k[m+4>>2]|0;h=a+40|0;a=(sl(uk(k[h>>2]|0,k[h+4>>2]|0,d|0,((d|0)<0)<<31>>31|0)|0,M|0,j|0,m|0)|0)+(k[k[a>>2]>>2]|0)|0;m=a;a=a+4|0;a=l[a>>0]|l[a+1>>0]<<8|l[a+2>>0]<<16|l[a+3>>0]<<24;k[c>>2]=l[m>>0]|l[m+1>>0]<<8|l[m+2>>0]<<16|l[m+3>>0]<<24;k[c+4>>2]=a;c=1;r=n;return c|0}case 3:{j=a+48|0;m=k[j>>2]|0;j=k[j+4>>2]|0;h=a+40|0;a=(sl(uk(k[h>>2]|0,k[h+4>>2]|0,d|0,((d|0)<0)<<31>>31|0)|0,M|0,m|0,j|0)|0)+(k[k[a>>2]>>2]|0)|0;j=a;j=l[j>>0]|l[j+1>>0]<<8|l[j+2>>0]<<16|l[j+3>>0]<<24;a=a+4|0;a=l[a>>0]|l[a+1>>0]<<8|l[a+2>>0]<<16|l[a+3>>0]<<24;m=c;i[m>>0]=j;i[m+1>>0]=j>>8;i[m+2>>0]=j>>16;i[m+3>>0]=j>>24;c=c+4|0;i[c>>0]=a;i[c+1>>0]=a>>8;i[c+2>>0]=a>>16;i[c+3>>0]=a>>24;c=1;r=n;return c|0}case 4:{j=a+48|0;m=k[j>>2]|0;j=k[j+4>>2]|0;h=a+40|0;a=(sl(uk(k[h>>2]|0,k[h+4>>2]|0,d|0,((d|0)<0)<<31>>31|0)|0,M|0,m|0,j|0)|0)+(k[k[a>>2]>>2]|0)|0;j=a;j=l[j>>0]|l[j+1>>0]<<8|l[j+2>>0]<<16|l[j+3>>0]<<24;a=a+4|0;a=l[a>>0]|l[a+1>>0]<<8|l[a+2>>0]<<16|l[a+3>>0]<<24;m=c;i[m>>0]=j;i[m+1>>0]=j>>8;i[m+2>>0]=j>>16;i[m+3>>0]=j>>24;c=c+4|0;i[c>>0]=a;i[c+1>>0]=a>>8;i[c+2>>0]=a>>16;i[c+3>>0]=a>>24;c=1;r=n;return c|0}default:{c=0;r=n;return c|0}}}case 2:{k[e>>2]=k[b>>2];k[d>>2]=k[e>>2];c=de(a,d,c)|0;r=n;return c|0}case 1:{k[f>>2]=k[b>>2];k[d>>2]=k[f>>2];c=ce(a,d,c)|0;r=n;return c|0}case 4:{k[g>>2]=k[b>>2];k[d>>2]=k[g>>2];c=Kd(a,d,c)|0;r=n;return c|0}case 3:{k[h>>2]=k[b>>2];k[d>>2]=k[h>>2];c=Gd(a,d,c)|0;r=n;return c|0}case 6:{k[j>>2]=k[b>>2];k[d>>2]=k[j>>2];c=yd(a,d,c)|0;r=n;return c|0}case 5:{k[m>>2]=k[b>>2];k[d>>2]=k[m>>2];c=Ad(a,d,c)|0;r=n;return c|0}default:{c=0;r=n;return c|0}}return 0}function xc(a,b,c,d,e){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;var f=0,g=0,h=0,i=0,j=0;g=k[a+4>>2]|0;if((c|0)<=-1)Ka(13387,13403,54,13431);f=k[g+4>>2]|0;if(((k[g+8>>2]|0)-f>>2|0)<=(c|0))Ka(13441,13403,55,13431);i=k[f+(c<<2)>>2]|0;if(!((b+-1|0)>>>0<4&(Va[k[(k[a>>2]|0)+8>>2]&127](a)|0)==1)){d=0;return d|0}h=Va[k[(k[a>>2]|0)+36>>2]&127](a)|0;j=Za[k[(k[a>>2]|0)+44>>2]&127](a,c)|0;if((h|0)==0|(j|0)==0){d=0;return d|0}f=Za[k[(k[a>>2]|0)+40>>2]&127](a,c)|0;g=k[a+28>>2]|0;a=j+12|0;if(!f)switch(b|0){case 1:{e=xk(36)|0;k[e+4>>2]=i;i=e+8|0;k[i>>2]=k[d>>2];k[i+4>>2]=k[d+4>>2];k[i+8>>2]=k[d+8>>2];k[e+20>>2]=g;k[e+24>>2]=h;k[e+28>>2]=a;k[e+32>>2]=j;k[e>>2]=4528;d=e;return d|0}case 2:{e=xk(36)|0;k[e+4>>2]=i;i=e+8|0;k[i>>2]=k[d>>2];k[i+4>>2]=k[d+4>>2];k[i+8>>2]=k[d+8>>2];k[e+20>>2]=g;k[e+24>>2]=h;k[e+28>>2]=a;k[e+32>>2]=j;k[e>>2]=4592;d=e;return d|0}case 4:{c=xk(88)|0;k[c+4>>2]=i;f=c+8|0;k[f>>2]=k[d>>2];k[f+4>>2]=k[d+4>>2];k[f+8>>2]=k[d+8>>2];k[c+20>>2]=g;k[c+24>>2]=h;k[c+28>>2]=a;k[c+32>>2]=j;k[c>>2]=4656;f=c+36|0;g=f+52|0;do{k[f>>2]=0;f=f+4|0}while((f|0)<(g|0));d=c;return d|0}case 3:{b=xk(68)|0;k[b+4>>2]=i;i=b+8|0;k[i>>2]=k[d>>2];k[i+4>>2]=k[d+4>>2];k[i+8>>2]=k[d+8>>2];k[b+20>>2]=g;k[b+24>>2]=h;k[b+28>>2]=a;k[b+32>>2]=j;k[b>>2]=4720;d=b+36|0;k[d>>2]=0;k[d+4>>2]=0;k[d+8>>2]=0;k[d+12>>2]=0;k[d+16>>2]=0;k[d+20>>2]=0;k[d+24>>2]=0;k[b+64>>2]=e&65535;d=b;return d|0}default:{d=0;return d|0}}else switch(b|0){case 1:{e=xk(36)|0;k[e+4>>2]=i;i=e+8|0;k[i>>2]=k[d>>2];k[i+4>>2]=k[d+4>>2];k[i+8>>2]=k[d+8>>2];k[e+20>>2]=g;k[e+24>>2]=f;k[e+28>>2]=a;k[e+32>>2]=j;k[e>>2]=4272;d=e;return d|0}case 2:{e=xk(36)|0;k[e+4>>2]=i;i=e+8|0;k[i>>2]=k[d>>2];k[i+4>>2]=k[d+4>>2];k[i+8>>2]=k[d+8>>2];k[e+20>>2]=g;k[e+24>>2]=f;k[e+28>>2]=a;k[e+32>>2]=j;k[e>>2]=4336;d=e;return d|0}case 4:{c=xk(88)|0;k[c+4>>2]=i;e=c+8|0;k[e>>2]=k[d>>2];k[e+4>>2]=k[d+4>>2];k[e+8>>2]=k[d+8>>2];k[c+20>>2]=g;k[c+24>>2]=f;k[c+28>>2]=a;k[c+32>>2]=j;k[c>>2]=4400;f=c+36|0;g=f+52|0;do{k[f>>2]=0;f=f+4|0}while((f|0)<(g|0));d=c;return d|0}case 3:{b=xk(68)|0;k[b+4>>2]=i;i=b+8|0;k[i>>2]=k[d>>2];k[i+4>>2]=k[d+4>>2];k[i+8>>2]=k[d+8>>2];k[b+20>>2]=g;k[b+24>>2]=f;k[b+28>>2]=a;k[b+32>>2]=j;k[b>>2]=4464;d=b+36|0;k[d>>2]=0;k[d+4>>2]=0;k[d+8>>2]=0;k[d+12>>2]=0;k[d+16>>2]=0;k[d+20>>2]=0;k[d+24>>2]=0;k[b+64>>2]=e&65535;d=b;return d|0}default:{d=0;return d|0}}return 0}function yc(a,b,c,d,e){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;var f=0,g=0,h=0,i=0,j=0;g=k[a+4>>2]|0;if((c|0)<=-1)Ka(13387,13403,54,13431);f=k[g+4>>2]|0;if(((k[g+8>>2]|0)-f>>2|0)<=(c|0))Ka(13441,13403,55,13431);i=k[f+(c<<2)>>2]|0;if(!((b+-1|0)>>>0<4&(Va[k[(k[a>>2]|0)+8>>2]&127](a)|0)==1)){d=0;return d|0}h=Va[k[(k[a>>2]|0)+36>>2]&127](a)|0;j=Za[k[(k[a>>2]|0)+44>>2]&127](a,c)|0;if((h|0)==0|(j|0)==0){d=0;return d|0}f=Za[k[(k[a>>2]|0)+40>>2]&127](a,c)|0;g=k[a+28>>2]|0;a=j+12|0;if(!f)switch(b|0){case 1:{e=xk(36)|0;k[e+4>>2]=i;i=e+8|0;k[i>>2]=k[d>>2];k[i+4>>2]=k[d+4>>2];k[i+8>>2]=k[d+8>>2];k[e+20>>2]=g;k[e+24>>2]=h;k[e+28>>2]=a;k[e+32>>2]=j;k[e>>2]=5104;d=e;return d|0}case 2:{e=xk(36)|0;k[e+4>>2]=i;i=e+8|0;k[i>>2]=k[d>>2];k[i+4>>2]=k[d+4>>2];k[i+8>>2]=k[d+8>>2];k[e+20>>2]=g;k[e+24>>2]=h;k[e+28>>2]=a;k[e+32>>2]=j;k[e>>2]=5168;d=e;return d|0}case 4:{c=xk(88)|0;k[c+4>>2]=i;f=c+8|0;k[f>>2]=k[d>>2];k[f+4>>2]=k[d+4>>2];k[f+8>>2]=k[d+8>>2];k[c+20>>2]=g;k[c+24>>2]=h;k[c+28>>2]=a;k[c+32>>2]=j;k[c>>2]=5232;f=c+36|0;g=f+52|0;do{k[f>>2]=0;f=f+4|0}while((f|0)<(g|0));d=c;return d|0}case 3:{b=xk(68)|0;k[b+4>>2]=i;i=b+8|0;k[i>>2]=k[d>>2];k[i+4>>2]=k[d+4>>2];k[i+8>>2]=k[d+8>>2];k[b+20>>2]=g;k[b+24>>2]=h;k[b+28>>2]=a;k[b+32>>2]=j;k[b>>2]=5296;d=b+36|0;k[d>>2]=0;k[d+4>>2]=0;k[d+8>>2]=0;k[d+12>>2]=0;k[d+16>>2]=0;k[d+20>>2]=0;k[d+24>>2]=0;k[b+64>>2]=e&65535;d=b;return d|0}default:{d=0;return d|0}}else switch(b|0){case 1:{e=xk(36)|0;k[e+4>>2]=i;i=e+8|0;k[i>>2]=k[d>>2];k[i+4>>2]=k[d+4>>2];k[i+8>>2]=k[d+8>>2];k[e+20>>2]=g;k[e+24>>2]=f;k[e+28>>2]=a;k[e+32>>2]=j;k[e>>2]=4848;d=e;return d|0}case 2:{e=xk(36)|0;k[e+4>>2]=i;i=e+8|0;k[i>>2]=k[d>>2];k[i+4>>2]=k[d+4>>2];k[i+8>>2]=k[d+8>>2];k[e+20>>2]=g;k[e+24>>2]=f;k[e+28>>2]=a;k[e+32>>2]=j;k[e>>2]=4912;d=e;return d|0}case 4:{c=xk(88)|0;k[c+4>>2]=i;e=c+8|0;k[e>>2]=k[d>>2];k[e+4>>2]=k[d+4>>2];k[e+8>>2]=k[d+8>>2];k[c+20>>2]=g;k[c+24>>2]=f;k[c+28>>2]=a;k[c+32>>2]=j;k[c>>2]=4976;f=c+36|0;g=f+52|0;do{k[f>>2]=0;f=f+4|0}while((f|0)<(g|0));d=c;return d|0}case 3:{b=xk(68)|0;k[b+4>>2]=i;i=b+8|0;k[i>>2]=k[d>>2];k[i+4>>2]=k[d+4>>2];k[i+8>>2]=k[d+8>>2];k[b+20>>2]=g;k[b+24>>2]=f;k[b+28>>2]=a;k[b+32>>2]=j;k[b>>2]=5040;d=b+36|0;k[d>>2]=0;k[d+4>>2]=0;k[d+8>>2]=0;k[d+12>>2]=0;k[d+16>>2]=0;k[d+20>>2]=0;k[d+24>>2]=0;k[b+64>>2]=e&65535;d=b;return d|0}default:{d=0;return d|0}}return 0}function zc(a,b,c,d){a=a|0;b=b|0;c=c|0;d=d|0;var e=0,f=0,g=Pa,h=0,i=Pa,j=0,l=Pa,m=Pa,n=Pa,p=Pa,q=Pa,s=0,t=Pa,u=Pa,v=Pa,w=Pa,x=0,y=0,z=0,A=0,B=Pa;A=r;r=r+48|0;z=A+24|0;x=A+12|0;y=A;h=a+24|0;e=k[b>>2]|0;b=e+1|0;do if((e|0)>=0){b=((b|0)%3|0|0)==0?e+-2|0:b;if(!((e>>>0)%3|0)){f=e+2|0;break}else{f=e+-1|0;break}}else{f=e;b=e}while(0);h=k[(k[h>>2]|0)+28>>2]|0;e=k[h+(b<<2)>>2]|0;b=k[h+(f<<2)>>2]|0;f=k[a+28>>2]|0;h=k[f+4>>2]|0;j=k[f>>2]|0;if(h-j>>2>>>0<=e>>>0)gm(f);s=k[j+(e<<2)>>2]|0;if(h-j>>2>>>0<=b>>>0)gm(f);e=k[j+(b<<2)>>2]|0;b=(s|0)<(d|0);if(b&(e|0)<(d|0)){j=k[a+48>>2]|0;h=$(j,s)|0;u=da(k[c+(h<<2)>>2]|0);v=da(k[c+(h+1<<2)>>2]|0);j=$(j,e)|0;w=da(k[c+(j<<2)>>2]|0);t=da(k[c+(j+1<<2)>>2]|0);if(!(w!=u|t!=v)){a=k[a+44>>2]|0;k[a>>2]=~~w;k[a+4>>2]=~~t;r=A;return}jg(z,a,d);jg(x,a,s);jg(y,a,e);p=da(o[y>>2]);l=da(o[x>>2]);p=da(p-l);q=da(o[y+4>>2]);m=da(o[x+4>>2]);q=da(q-m);i=da(o[y+8>>2]);g=da(o[x+8>>2]);i=da(i-g);l=da(da(o[z>>2])-l);m=da(da(o[z+4>>2])-m);g=da(da(o[z+8>>2])-g);n=da(da(da(da(p*p)+da(0.0))+da(q*q))+da(i*i));if(n>da(0.0)?1:(k[a+64>>2]|0)<258){B=da(da(da(da(da(p*l)+da(0.0))+da(q*m))+da(i*g))/n);p=da(l-da(p*B));q=da(m-da(q*B));g=da(g-da(i*B));i=B;g=da(P(da(da(da(g*g)+da(da(q*q)+da(da(p*p)+da(0.0))))/n)))}else{i=da(0.0);g=da(0.0)}B=da(w-u);w=da(t-v);t=da(u+da(B*i));B=da(B*g);u=da(v+da(w*i));v=da(w*g);c=a+56|0;y=(k[c>>2]|0)+-1|0;z=(1<<(y&31)&k[(k[a+52>>2]|0)+(y>>>5<<2)>>2]|0)==0;k[c>>2]=y;w=da(-v);w=da(t+(z?v:w));v=da(-B);B=da(u+(z?v:B));z=~~+N(+(+w+.5));a=k[a+44>>2]|0;k[a>>2]=z;z=~~+N(+(+B+.5));k[a+4>>2]=z;r=A;return}do if(b){h=a+48|0;b=k[h>>2]|0;f=$(b,s)|0}else{if((d|0)>0){h=a+48|0;b=k[h>>2]|0;f=$(b,d+-1|0)|0;break}f=a+48|0;if((k[f>>2]|0)<=0){r=A;return}e=k[a+44>>2]|0;b=0;do{k[e+(b<<2)>>2]=0;b=b+1|0}while((b|0)<(k[f>>2]|0));r=A;return}while(0);if((b|0)<=0){r=A;return}e=k[a+44>>2]|0;b=0;do{k[e+(b<<2)>>2]=k[c+(b+f<<2)>>2];b=b+1|0}while((b|0)<(k[h>>2]|0));r=A;return}function Ac(a,b,c,d){a=a|0;b=b|0;c=c|0;d=d|0;var e=0,f=0,g=Pa,h=0,i=Pa,j=0,l=Pa,m=Pa,n=Pa,p=Pa,q=Pa,s=0,t=Pa,u=Pa,v=Pa,w=Pa,x=0,y=0,z=0,A=0,B=Pa;A=r;r=r+48|0;z=A+24|0;x=A+12|0;y=A;h=a+48|0;e=k[b>>2]|0;b=e+1|0;do if((e|0)>=0){b=((b|0)%3|0|0)==0?e+-2|0:b;if(!((e>>>0)%3|0)){f=e+2|0;break}else{f=e+-1|0;break}}else{f=e;b=e}while(0);h=k[(k[h>>2]|0)+28>>2]|0;e=k[h+(b<<2)>>2]|0;b=k[h+(f<<2)>>2]|0;f=k[a+52>>2]|0;h=k[f+4>>2]|0;j=k[f>>2]|0;if(h-j>>2>>>0<=e>>>0)gm(f);s=k[j+(e<<2)>>2]|0;if(h-j>>2>>>0<=b>>>0)gm(f);e=k[j+(b<<2)>>2]|0;b=(s|0)<(d|0);if(b&(e|0)<(d|0)){j=k[a+72>>2]|0;h=$(j,s)|0;u=da(k[c+(h<<2)>>2]|0);v=da(k[c+(h+1<<2)>>2]|0);j=$(j,e)|0;w=da(k[c+(j<<2)>>2]|0);t=da(k[c+(j+1<<2)>>2]|0);if(!(w!=u|t!=v)){a=k[a+68>>2]|0;k[a>>2]=~~w;k[a+4>>2]=~~t;r=A;return}kg(z,a,d);kg(x,a,s);kg(y,a,e);p=da(o[y>>2]);l=da(o[x>>2]);p=da(p-l);q=da(o[y+4>>2]);m=da(o[x+4>>2]);q=da(q-m);i=da(o[y+8>>2]);g=da(o[x+8>>2]);i=da(i-g);l=da(da(o[z>>2])-l);m=da(da(o[z+4>>2])-m);g=da(da(o[z+8>>2])-g);n=da(da(da(da(p*p)+da(0.0))+da(q*q))+da(i*i));if(n>da(0.0)?1:(k[a+88>>2]|0)<258){B=da(da(da(da(da(p*l)+da(0.0))+da(q*m))+da(i*g))/n);p=da(l-da(p*B));q=da(m-da(q*B));g=da(g-da(i*B));i=B;g=da(P(da(da(da(g*g)+da(da(q*q)+da(da(p*p)+da(0.0))))/n)))}else{i=da(0.0);g=da(0.0)}B=da(w-u);w=da(t-v);t=da(u+da(B*i));B=da(B*g);u=da(v+da(w*i));v=da(w*g);c=a+80|0;y=(k[c>>2]|0)+-1|0;z=(1<<(y&31)&k[(k[a+76>>2]|0)+(y>>>5<<2)>>2]|0)==0;k[c>>2]=y;w=da(-v);w=da(t+(z?v:w));v=da(-B);B=da(u+(z?v:B));z=~~+N(+(+w+.5));a=k[a+68>>2]|0;k[a>>2]=z;z=~~+N(+(+B+.5));k[a+4>>2]=z;r=A;return}do if(b){h=a+72|0;b=k[h>>2]|0;f=$(b,s)|0}else{if((d|0)>0){h=a+72|0;b=k[h>>2]|0;f=$(b,d+-1|0)|0;break}f=a+72|0;if((k[f>>2]|0)<=0){r=A;return}e=k[a+68>>2]|0;b=0;do{k[e+(b<<2)>>2]=0;b=b+1|0}while((b|0)<(k[f>>2]|0));r=A;return}while(0);if((b|0)<=0){r=A;return}e=k[a+68>>2]|0;b=0;do{k[e+(b<<2)>>2]=k[c+(b+f<<2)>>2];b=b+1|0}while((b|0)<(k[h>>2]|0));r=A;return}function Bc(a,b,c,d,e,f){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;f=f|0;var g=0,h=0,i=0,j=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0;u=a+8|0;k[u>>2]=e;do if(d){f=k[b>>2]|0;l=a+16|0;k[l>>2]=f;j=a+12|0;k[j>>2]=f;if((d|0)>1){i=1;h=f;while(1){g=k[b+(i<<2)>>2]|0;if((g|0)>=(h|0))if((g|0)>(f|0)){k[l>>2]=g;f=g;g=h}else g=h;else k[j>>2]=g;i=i+1|0;if((i|0)==(d|0))break;else h=g}}else g=f;t=1-g+f|0;k[a+20>>2]=t;f=(t|0)/2|0;g=a+24|0;k[g>>2]=f;k[a+28>>2]=0-f;if(!(t&1))k[g>>2]=f+-1;f=a+32|0;g=a+36|0;j=k[g>>2]|0;h=k[f>>2]|0;i=j-h>>2;if(i>>>0>>0){jh(f,e-i|0);break}if(i>>>0>e>>>0?(m=h+(e<<2)|0,(j|0)!=(m|0)):0)k[g>>2]=j+(~((j+-4-m|0)>>>2)<<2)}else d=0;while(0);d=d-e|0;if((d|0)>0){n=0-e|0;o=a+16|0;p=a+32|0;q=a+12|0;r=a+28|0;s=a+20|0;t=a+24|0;m=d;d=k[u>>2]|0;do{l=b+(m<<2)|0;j=l+(n<<2)|0;if((d|0)>0){i=0;do{h=k[j+(i<<2)>>2]|0;d=k[o>>2]|0;do if((h|0)<=(d|0)){d=k[q>>2]|0;f=k[p>>2]|0;g=f+(i<<2)|0;if((h|0)<(d|0)){k[g>>2]=d;g=f;break}else{k[g>>2]=h;g=f;break}}else{g=k[p>>2]|0;k[g+(i<<2)>>2]=d}while(0);i=i+1|0;d=k[u>>2]|0}while((i|0)<(d|0));if((d|0)>0){f=0;do{k[c+(f+m<<2)>>2]=(k[l+(f<<2)>>2]|0)-(k[g+(f<<2)>>2]|0);f=f+1|0;d=k[u>>2]|0}while((f|0)<(d|0));if((d|0)>0){g=0;do{d=c+(g+m<<2)|0;f=k[d>>2]|0;if((f|0)>=(k[r>>2]|0)){if((f|0)>(k[t>>2]|0))k[d>>2]=f-(k[s>>2]|0)}else k[d>>2]=(k[s>>2]|0)+f;g=g+1|0;d=k[u>>2]|0}while((g|0)<(d|0))}}}m=m-e|0}while((m|0)>0)}else d=k[u>>2]|0;e=e>>>0>1073741823?-1:e<<2;n=$m(e)|0;Vi(n|0,0,e|0)|0;if((d|0)<=0){an(n);return 1}j=a+16|0;l=a+32|0;m=a+12|0;i=0;do{h=k[n+(i<<2)>>2]|0;d=k[j>>2]|0;do if((h|0)<=(d|0)){d=k[m>>2]|0;f=k[l>>2]|0;g=f+(i<<2)|0;if((h|0)<(d|0)){k[g>>2]=d;g=f;break}else{k[g>>2]=h;g=f;break}}else{g=k[l>>2]|0;k[g+(i<<2)>>2]=d}while(0);i=i+1|0;d=k[u>>2]|0}while((i|0)<(d|0));if((d|0)>0)d=0;else{an(n);return 1}do{k[c+(d<<2)>>2]=(k[b+(d<<2)>>2]|0)-(k[g+(d<<2)>>2]|0);d=d+1|0;f=k[u>>2]|0}while((d|0)<(f|0));if((f|0)<=0){an(n);return 1}i=a+28|0;j=a+20|0;f=a+24|0;d=0;do{g=c+(d<<2)|0;h=k[g>>2]|0;if((h|0)>=(k[i>>2]|0)){if((h|0)>(k[f>>2]|0))k[g>>2]=h-(k[j>>2]|0)}else k[g>>2]=(k[j>>2]|0)+h;d=d+1|0}while((d|0)<(k[u>>2]|0));an(n);return 1}function Cc(a,b,c,d,e,f){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;f=f|0;var g=0,h=0,i=0,j=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,B=0;y=a+8|0;k[y>>2]=e;z=k[a+24>>2]|0;v=k[a+28>>2]|0;r=e>>>0>1073741823?-1:e<<2;w=$m(r)|0;Vi(w|0,0,r|0)|0;x=$m(r)|0;Vi(x|0,0,r|0)|0;r=a+32|0;g=k[r>>2]|0;a=k[g+4>>2]|0;f=k[g>>2]|0;d=a-f|0;a:do if((d|0)>4){s=(e|0)>0;t=z+12|0;u=e<<2;q=d>>2;d=g;while(1){p=q+-1|0;if(a-f>>2>>>0<=p>>>0)break;o=k[f+(p<<2)>>2]|0;if(s)Vi(w|0,0,u|0)|0;if((o|0)>-1){n=k[t>>2]|0;a=0;m=o;do{f=k[n+(m<<2)>>2]|0;if((f|0)>=0){h=k[z>>2]|0;g=(f>>>0)%3|0;i=k[v>>2]|0;l=k[i+(k[h+(((f>>>0)/3|0)*12|0)+(g<<2)>>2]<<2)>>2]|0;d=f+1|0;d=((d|0)%3|0|0)==0?f+-2|0:d;if((d|0)<0)d=-1073741824;else d=k[h+(((d>>>0)/3|0)*12|0)+(((d>>>0)%3|0)<<2)>>2]|0;j=k[i+(d<<2)>>2]|0;d=((g|0)==0?2:-1)+f|0;if((d|0)<0)d=-1073741824;else d=k[h+(((d>>>0)/3|0)*12|0)+(((d>>>0)%3|0)<<2)>>2]|0;d=k[i+(d<<2)>>2]|0;if((l|0)<(p|0)&(j|0)<(p|0)&(d|0)<(p|0)){h=$(l,e)|0;g=$(j,e)|0;f=$(d,e)|0;if(s){d=0;do{k[x+(d<<2)>>2]=(k[b+(d+f<<2)>>2]|0)+(k[b+(d+g<<2)>>2]|0)-(k[b+(d+h<<2)>>2]|0);d=d+1|0}while((d|0)!=(e|0));if(s){d=0;do{l=w+(d<<2)|0;k[l>>2]=(k[l>>2]|0)+(k[x+(d<<2)>>2]|0);d=d+1|0}while((d|0)!=(e|0))}}a=a+1|0}}d=(((m>>>0)%3|0|0)==0?2:-1)+m|0;do if((d|0)>=0){d=k[n+(d<<2)>>2]|0;if((d|0)>=0)if(!((d>>>0)%3|0)){d=d+2|0;break}else{d=d+-1|0;break}}while(0);m=(d|0)==(o|0)?-1073741824:d}while((m|0)>-1);d=$(p,e)|0;if(!a)B=32;else{if(s){f=0;do{q=w+(f<<2)|0;k[q>>2]=(k[q>>2]|0)/(a|0)|0;f=f+1|0}while((f|0)!=(e|0))}Ze(y,b+(d<<2)|0,w,c,d)}}else{d=$(p,e)|0;B=32}if((B|0)==32){B=0;Ze(y,b+(d<<2)|0,b+(($(q+-2|0,e)|0)<<2)|0,c,d)}if((p|0)<=1){A=w;break a}d=k[r>>2]|0;q=p;f=k[d>>2]|0;a=k[d+4>>2]|0}gm(d)}else A=w;while(0);if((e|0)<=0){Ze(y,b,A,c,0);an(x);an(w);return 1}Vi(w|0,0,e<<2|0)|0;Ze(y,b,A,c,0);an(x);an(w);return 1}function Dc(a,b,c,d,e,f){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;f=f|0;var g=0,h=0,i=0,j=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,B=0;y=a+8|0;k[y>>2]=e;z=k[a+24>>2]|0;v=k[a+28>>2]|0;r=e>>>0>1073741823?-1:e<<2;w=$m(r)|0;Vi(w|0,0,r|0)|0;x=$m(r)|0;Vi(x|0,0,r|0)|0;r=a+32|0;g=k[r>>2]|0;a=k[g+4>>2]|0;f=k[g>>2]|0;d=a-f|0;a:do if((d|0)>4){s=(e|0)>0;t=z+12|0;u=e<<2;q=d>>2;d=g;while(1){p=q+-1|0;if(a-f>>2>>>0<=p>>>0)break;o=k[f+(p<<2)>>2]|0;if(s)Vi(w|0,0,u|0)|0;if((o|0)>-1){n=k[t>>2]|0;a=0;m=o;do{f=k[n+(m<<2)>>2]|0;if((f|0)>=0){h=k[z>>2]|0;g=(f>>>0)%3|0;i=k[v>>2]|0;l=k[i+(k[h+(((f>>>0)/3|0)*12|0)+(g<<2)>>2]<<2)>>2]|0;d=f+1|0;d=((d|0)%3|0|0)==0?f+-2|0:d;if((d|0)<0)d=-1073741824;else d=k[h+(((d>>>0)/3|0)*12|0)+(((d>>>0)%3|0)<<2)>>2]|0;j=k[i+(d<<2)>>2]|0;d=((g|0)==0?2:-1)+f|0;if((d|0)<0)d=-1073741824;else d=k[h+(((d>>>0)/3|0)*12|0)+(((d>>>0)%3|0)<<2)>>2]|0;d=k[i+(d<<2)>>2]|0;if((l|0)<(p|0)&(j|0)<(p|0)&(d|0)<(p|0)){h=$(l,e)|0;g=$(j,e)|0;f=$(d,e)|0;if(s){d=0;do{k[x+(d<<2)>>2]=(k[b+(d+f<<2)>>2]|0)+(k[b+(d+g<<2)>>2]|0)-(k[b+(d+h<<2)>>2]|0);d=d+1|0}while((d|0)!=(e|0));if(s){d=0;do{l=w+(d<<2)|0;k[l>>2]=(k[l>>2]|0)+(k[x+(d<<2)>>2]|0);d=d+1|0}while((d|0)!=(e|0))}}a=a+1|0}}d=(((m>>>0)%3|0|0)==0?2:-1)+m|0;do if((d|0)>=0){d=k[n+(d<<2)>>2]|0;if((d|0)>=0)if(!((d>>>0)%3|0)){d=d+2|0;break}else{d=d+-1|0;break}}while(0);m=(d|0)==(o|0)?-1073741824:d}while((m|0)>-1);d=$(p,e)|0;if(!a)B=32;else{if(s){f=0;do{q=w+(f<<2)|0;k[q>>2]=(k[q>>2]|0)/(a|0)|0;f=f+1|0}while((f|0)!=(e|0))}cf(y,b+(d<<2)|0,w,c,d)}}else{d=$(p,e)|0;B=32}if((B|0)==32){B=0;cf(y,b+(d<<2)|0,b+(($(q+-2|0,e)|0)<<2)|0,c,d)}if((p|0)<=1){A=w;break a}d=k[r>>2]|0;q=p;f=k[d>>2]|0;a=k[d+4>>2]|0}gm(d)}else A=w;while(0);if((e|0)<=0){cf(y,b,A,c,0);an(x);an(w);return 1}Vi(w|0,0,e<<2|0)|0;cf(y,b,A,c,0);an(x);an(w);return 1}function Ec(a,b,c,d,e,f){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;f=f|0;var g=0,h=0,i=0,j=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,B=0,C=0,D=0;w=a+8|0;k[w>>2]=e;x=k[a+24>>2]|0;t=k[a+28>>2]|0;o=e>>>0>1073741823?-1:e<<2;u=$m(o)|0;Vi(u|0,0,o|0)|0;v=$m(o)|0;Vi(v|0,0,o|0)|0;o=a+32|0;g=k[o>>2]|0;a=k[g+4>>2]|0;f=k[g>>2]|0;d=a-f|0;a:do if((d|0)>4){p=(e|0)>0;q=x+64|0;r=x+28|0;s=e<<2;n=d>>2;d=g;while(1){m=n+-1|0;if(a-f>>2>>>0<=m>>>0)break;l=k[f+(m<<2)>>2]|0;if(p)Vi(u|0,0,s|0)|0;if((l|0)>-1){j=k[x>>2]|0;h=0;i=l;do{if(((k[j+(i>>>5<<2)>>2]&1<<(i&31)|0)==0?(z=k[(k[(k[q>>2]|0)+12>>2]|0)+(i<<2)>>2]|0,(z|0)>=0):0)?(C=k[r>>2]|0,g=k[t>>2]|0,A=k[g+(k[C+(z<<2)>>2]<<2)>>2]|0,B=z+1|0,B=k[g+(k[C+((((B|0)%3|0|0)==0?z+-2|0:B)<<2)>>2]<<2)>>2]|0,C=k[g+(k[C+((((z>>>0)%3|0|0)==0?2:-1)+z<<2)>>2]<<2)>>2]|0,(A|0)<(m|0)&(B|0)<(m|0)&(C|0)<(m|0)):0){f=$(A,e)|0;a=$(B,e)|0;g=$(C,e)|0;if(p){d=0;do{k[v+(d<<2)>>2]=(k[b+(d+g<<2)>>2]|0)+(k[b+(d+a<<2)>>2]|0)-(k[b+(d+f<<2)>>2]|0);d=d+1|0}while((d|0)!=(e|0));if(p){d=0;do{g=u+(d<<2)|0;k[g>>2]=(k[g>>2]|0)+(k[v+(d<<2)>>2]|0);d=d+1|0}while((d|0)!=(e|0))}}h=h+1|0}d=(((i>>>0)%3|0|0)==0?2:-1)+i|0;do if(!(k[j+(d>>>5<<2)>>2]&1<<(d&31))){if((d|0)>=0){d=k[(k[(k[q>>2]|0)+12>>2]|0)+(d<<2)>>2]|0;if((d|0)>=0)if(!((d>>>0)%3|0)){d=d+2|0;break}else{d=d+-1|0;break}}}else d=-1073741824;while(0);i=(d|0)==(l|0)?-1073741824:d}while((i|0)>-1);d=$(m,e)|0;if(!h)D=30;else{if(p){f=0;do{n=u+(f<<2)|0;k[n>>2]=(k[n>>2]|0)/(h|0)|0;f=f+1|0}while((f|0)!=(e|0))}Ze(w,b+(d<<2)|0,u,c,d)}}else{d=$(m,e)|0;D=30}if((D|0)==30){D=0;Ze(w,b+(d<<2)|0,b+(($(n+-2|0,e)|0)<<2)|0,c,d)}if((m|0)<=1){y=u;break a}d=k[o>>2]|0;n=m;f=k[d>>2]|0;a=k[d+4>>2]|0}gm(d)}else y=u;while(0);if((e|0)<=0){Ze(w,b,y,c,0);an(v);an(u);return 1}Vi(u|0,0,e<<2|0)|0;Ze(w,b,y,c,0);an(v);an(u);return 1}function Fc(a,b,c,d,e,f){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;f=f|0;var g=0,h=0,i=0,j=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,B=0,C=0,D=0;w=a+8|0;k[w>>2]=e;x=k[a+24>>2]|0;t=k[a+28>>2]|0;o=e>>>0>1073741823?-1:e<<2;u=$m(o)|0;Vi(u|0,0,o|0)|0;v=$m(o)|0;Vi(v|0,0,o|0)|0;o=a+32|0;g=k[o>>2]|0;a=k[g+4>>2]|0;f=k[g>>2]|0;d=a-f|0;a:do if((d|0)>4){p=(e|0)>0;q=x+64|0;r=x+28|0;s=e<<2;n=d>>2;d=g;while(1){m=n+-1|0;if(a-f>>2>>>0<=m>>>0)break;l=k[f+(m<<2)>>2]|0;if(p)Vi(u|0,0,s|0)|0;if((l|0)>-1){j=k[x>>2]|0;h=0;i=l;do{if(((k[j+(i>>>5<<2)>>2]&1<<(i&31)|0)==0?(z=k[(k[(k[q>>2]|0)+12>>2]|0)+(i<<2)>>2]|0,(z|0)>=0):0)?(C=k[r>>2]|0,g=k[t>>2]|0,A=k[g+(k[C+(z<<2)>>2]<<2)>>2]|0,B=z+1|0,B=k[g+(k[C+((((B|0)%3|0|0)==0?z+-2|0:B)<<2)>>2]<<2)>>2]|0,C=k[g+(k[C+((((z>>>0)%3|0|0)==0?2:-1)+z<<2)>>2]<<2)>>2]|0,(A|0)<(m|0)&(B|0)<(m|0)&(C|0)<(m|0)):0){f=$(A,e)|0;a=$(B,e)|0;g=$(C,e)|0;if(p){d=0;do{k[v+(d<<2)>>2]=(k[b+(d+g<<2)>>2]|0)+(k[b+(d+a<<2)>>2]|0)-(k[b+(d+f<<2)>>2]|0);d=d+1|0}while((d|0)!=(e|0));if(p){d=0;do{g=u+(d<<2)|0;k[g>>2]=(k[g>>2]|0)+(k[v+(d<<2)>>2]|0);d=d+1|0}while((d|0)!=(e|0))}}h=h+1|0}d=(((i>>>0)%3|0|0)==0?2:-1)+i|0;do if(!(k[j+(d>>>5<<2)>>2]&1<<(d&31))){if((d|0)>=0){d=k[(k[(k[q>>2]|0)+12>>2]|0)+(d<<2)>>2]|0;if((d|0)>=0)if(!((d>>>0)%3|0)){d=d+2|0;break}else{d=d+-1|0;break}}}else d=-1073741824;while(0);i=(d|0)==(l|0)?-1073741824:d}while((i|0)>-1);d=$(m,e)|0;if(!h)D=30;else{if(p){f=0;do{n=u+(f<<2)|0;k[n>>2]=(k[n>>2]|0)/(h|0)|0;f=f+1|0}while((f|0)!=(e|0))}cf(w,b+(d<<2)|0,u,c,d)}}else{d=$(m,e)|0;D=30}if((D|0)==30){D=0;cf(w,b+(d<<2)|0,b+(($(n+-2|0,e)|0)<<2)|0,c,d)}if((m|0)<=1){y=u;break a}d=k[o>>2]|0;n=m;f=k[d>>2]|0;a=k[d+4>>2]|0}gm(d)}else y=u;while(0);if((e|0)<=0){cf(w,b,y,c,0);an(v);an(u);return 1}Vi(u|0,0,e<<2|0)|0;cf(w,b,y,c,0);an(v);an(u);return 1}function Gc(a,b,c){a=a|0;b=b|0;c=c|0;var d=Pa,e=Pa,f=0,g=0,h=0;switch(i[a+24>>0]|0){case 1:{b=k[b>>2]|0;g=a+48|0;f=k[g>>2]|0;g=k[g+4>>2]|0;h=a+40|0;g=(sl(uk(k[h>>2]|0,k[h+4>>2]|0,b|0,((b|0)<0)<<31>>31|0)|0,M|0,f|0,g|0)|0)+(k[k[a>>2]>>2]|0)|0;d=da((l[g>>0]|l[g+1>>0]<<8|l[g+2>>0]<<16|l[g+3>>0]<<24)>>>0);e=da(d*da(2.32830644e-10));o[c>>2]=(i[a+32>>0]|0)==0?d:e;c=c+4|0;k[c>>2]=0;k[c+4>>2]=0;k[c+8>>2]=0;c=1;return c|0}case 2:{g=k[b>>2]|0;b=a+48|0;h=k[b>>2]|0;b=k[b+4>>2]|0;f=a+40|0;b=(sl(uk(k[f>>2]|0,k[f+4>>2]|0,g|0,((g|0)<0)<<31>>31|0)|0,M|0,h|0,b|0)|0)+(k[k[a>>2]>>2]|0)|0;h=b;b=b+4|0;b=l[b>>0]|l[b+1>>0]<<8|l[b+2>>0]<<16|l[b+3>>0]<<24;d=da((l[h>>0]|l[h+1>>0]<<8|l[h+2>>0]<<16|l[h+3>>0]<<24)>>>0);if(!(i[a+32>>0]|0)){o[c>>2]=d;d=da(b>>>0)}else{d=da(d*da(2.32830644e-10));o[c>>2]=d;d=da(da(b>>>0)*da(2.32830644e-10))}o[c+4>>2]=d;h=c+8|0;k[h>>2]=0;k[h+4>>2]=0;h=1;return h|0}case 3:{b=k[b>>2]|0;h=a+48|0;f=k[h>>2]|0;h=k[h+4>>2]|0;g=a+40|0;h=(sl(uk(k[g>>2]|0,k[g+4>>2]|0,b|0,((b|0)<0)<<31>>31|0)|0,M|0,f|0,h|0)|0)+(k[k[a>>2]>>2]|0)|0;f=h+4|0;f=l[f>>0]|l[f+1>>0]<<8|l[f+2>>0]<<16|l[f+3>>0]<<24;b=h+8|0;b=l[b>>0]|l[b+1>>0]<<8|l[b+2>>0]<<16|l[b+3>>0]<<24;d=da((l[h>>0]|l[h+1>>0]<<8|l[h+2>>0]<<16|l[h+3>>0]<<24)>>>0);if(!(i[a+32>>0]|0)){o[c>>2]=d;e=da(b>>>0);d=da(f>>>0)}else{e=da(d*da(2.32830644e-10));o[c>>2]=e;e=da(da(b>>>0)*da(2.32830644e-10));d=da(da(f>>>0)*da(2.32830644e-10))}o[c+4>>2]=d;o[c+8>>2]=e;o[c+12>>2]=da(0.0);h=1;return h|0}case 4:{f=k[b>>2]|0;h=a+48|0;b=k[h>>2]|0;h=k[h+4>>2]|0;g=a+40|0;h=(sl(uk(k[g>>2]|0,k[g+4>>2]|0,f|0,((f|0)<0)<<31>>31|0)|0,M|0,b|0,h|0)|0)+(k[k[a>>2]>>2]|0)|0;b=h+4|0;b=l[b>>0]|l[b+1>>0]<<8|l[b+2>>0]<<16|l[b+3>>0]<<24;f=h+8|0;f=l[f>>0]|l[f+1>>0]<<8|l[f+2>>0]<<16|l[f+3>>0]<<24;g=h+12|0;g=l[g>>0]|l[g+1>>0]<<8|l[g+2>>0]<<16|l[g+3>>0]<<24;d=da((l[h>>0]|l[h+1>>0]<<8|l[h+2>>0]<<16|l[h+3>>0]<<24)>>>0);if(!(i[a+32>>0]|0)){o[c>>2]=d;e=da(b>>>0);o[c+4>>2]=e;e=da(f>>>0);o[c+8>>2]=e;e=da(g>>>0);o[c+12>>2]=e;h=1;return h|0}else{e=da(d*da(2.32830644e-10));o[c>>2]=e;e=da(da(b>>>0)*da(2.32830644e-10));o[c+4>>2]=e;e=da(da(f>>>0)*da(2.32830644e-10));o[c+8>>2]=e;e=da(da(g>>>0)*da(2.32830644e-10));o[c+12>>2]=e;h=1;return h|0}}default:{h=0;return h|0}}return 0}function Hc(a,b,c){a=a|0;b=b|0;c=c|0;var d=Pa,e=Pa,f=0,g=0,h=0;switch(i[a+24>>0]|0){case 1:{b=k[b>>2]|0;g=a+48|0;f=k[g>>2]|0;g=k[g+4>>2]|0;h=a+40|0;g=(sl(uk(k[h>>2]|0,k[h+4>>2]|0,b|0,((b|0)<0)<<31>>31|0)|0,M|0,f|0,g|0)|0)+(k[k[a>>2]>>2]|0)|0;d=da(l[g>>0]|l[g+1>>0]<<8|l[g+2>>0]<<16|l[g+3>>0]<<24|0);e=da(d*da(4.65661287e-10));o[c>>2]=(i[a+32>>0]|0)==0?d:e;c=c+4|0;k[c>>2]=0;k[c+4>>2]=0;k[c+8>>2]=0;c=1;return c|0}case 2:{g=k[b>>2]|0;b=a+48|0;h=k[b>>2]|0;b=k[b+4>>2]|0;f=a+40|0;b=(sl(uk(k[f>>2]|0,k[f+4>>2]|0,g|0,((g|0)<0)<<31>>31|0)|0,M|0,h|0,b|0)|0)+(k[k[a>>2]>>2]|0)|0;h=b;b=b+4|0;b=l[b>>0]|l[b+1>>0]<<8|l[b+2>>0]<<16|l[b+3>>0]<<24;d=da(l[h>>0]|l[h+1>>0]<<8|l[h+2>>0]<<16|l[h+3>>0]<<24|0);if(!(i[a+32>>0]|0)){o[c>>2]=d;d=da(b|0)}else{d=da(d*da(4.65661287e-10));o[c>>2]=d;d=da(da(b|0)*da(4.65661287e-10))}o[c+4>>2]=d;h=c+8|0;k[h>>2]=0;k[h+4>>2]=0;h=1;return h|0}case 3:{b=k[b>>2]|0;h=a+48|0;f=k[h>>2]|0;h=k[h+4>>2]|0;g=a+40|0;h=(sl(uk(k[g>>2]|0,k[g+4>>2]|0,b|0,((b|0)<0)<<31>>31|0)|0,M|0,f|0,h|0)|0)+(k[k[a>>2]>>2]|0)|0;f=h+4|0;f=l[f>>0]|l[f+1>>0]<<8|l[f+2>>0]<<16|l[f+3>>0]<<24;b=h+8|0;b=l[b>>0]|l[b+1>>0]<<8|l[b+2>>0]<<16|l[b+3>>0]<<24;d=da(l[h>>0]|l[h+1>>0]<<8|l[h+2>>0]<<16|l[h+3>>0]<<24|0);if(!(i[a+32>>0]|0)){o[c>>2]=d;e=da(b|0);d=da(f|0)}else{e=da(d*da(4.65661287e-10));o[c>>2]=e;e=da(da(b|0)*da(4.65661287e-10));d=da(da(f|0)*da(4.65661287e-10))}o[c+4>>2]=d;o[c+8>>2]=e;o[c+12>>2]=da(0.0);h=1;return h|0}case 4:{f=k[b>>2]|0;h=a+48|0;b=k[h>>2]|0;h=k[h+4>>2]|0;g=a+40|0;h=(sl(uk(k[g>>2]|0,k[g+4>>2]|0,f|0,((f|0)<0)<<31>>31|0)|0,M|0,b|0,h|0)|0)+(k[k[a>>2]>>2]|0)|0;b=h+4|0;b=l[b>>0]|l[b+1>>0]<<8|l[b+2>>0]<<16|l[b+3>>0]<<24;f=h+8|0;f=l[f>>0]|l[f+1>>0]<<8|l[f+2>>0]<<16|l[f+3>>0]<<24;g=h+12|0;g=l[g>>0]|l[g+1>>0]<<8|l[g+2>>0]<<16|l[g+3>>0]<<24;d=da(l[h>>0]|l[h+1>>0]<<8|l[h+2>>0]<<16|l[h+3>>0]<<24|0);if(!(i[a+32>>0]|0)){o[c>>2]=d;e=da(b|0);o[c+4>>2]=e;e=da(f|0);o[c+8>>2]=e;e=da(g|0);o[c+12>>2]=e;h=1;return h|0}else{e=da(d*da(4.65661287e-10));o[c>>2]=e;e=da(da(b|0)*da(4.65661287e-10));o[c+4>>2]=e;e=da(da(f|0)*da(4.65661287e-10));o[c+8>>2]=e;e=da(da(g|0)*da(4.65661287e-10));o[c+12>>2]=e;h=1;return h|0}}default:{h=0;return h|0}}return 0}function Ic(a,b,c){a=a|0;b=b|0;c=c|0;var d=0,e=0,f=0,g=0,h=0,i=0,j=0,m=0,n=0,o=0,p=0,q=0,s=0,t=0,u=0;u=r;r=r+64|0;t=u;d=t;e=d+40|0;do{k[d>>2]=0;d=d+4|0}while((d|0)<(e|0));a:do if(qe(t,b)|0){n=(a|0)>0;if(n?(k[t+12>>2]|0)==0:0){h=0;break}e=b+8|0;d=k[e>>2]|0;e=k[e+4>>2]|0;f=b+16|0;h=f;g=k[h>>2]|0;h=sl(g|0,k[h+4>>2]|0,8,0)|0;i=M;if((!((e|0)<(i|0)|(e|0)==(i|0)&d>>>0>>0)?(j=k[b>>2]|0,m=j+g|0,q=m,q=l[q>>0]|l[q+1>>0]<<8|l[q+2>>0]<<16|l[q+3>>0]<<24,m=m+4|0,m=l[m>>0]|l[m+1>>0]<<8|l[m+2>>0]<<16|l[m+3>>0]<<24,b=f,k[b>>2]=h,k[b+4>>2]=i,b=al(d|0,e|0,h|0,i|0)|0,g=M,!(m>>>0>g>>>0|(m|0)==(g|0)&q>>>0>b>>>0)):0)?(s=j+h|0,j=sl(q|0,m|0,h|0,i|0)|0,m=f,k[m>>2]=j,k[m+4>>2]=M,(q|0)>=1):0){j=t+40|0;k[j>>2]=s;d=q+-1|0;e=s+d|0;switch((l[e>>0]|0)>>>6&3){case 0:{k[t+44>>2]=d;p=(l[e>>0]|0)&63;o=t+48|0;k[o>>2]=p;break}case 1:{if((q|0)<2){h=0;break a}k[t+44>>2]=q+-2;p=s+q+-2|0;p=(l[p+1>>0]|0)<<8&16128|(l[p>>0]|0);o=t+48|0;k[o>>2]=p;break}case 2:{if((q|0)<3){h=0;break a}k[t+44>>2]=q+-3;p=s+q+-3|0;p=(l[p+1>>0]|0)<<8|(l[p>>0]|0)|(l[p+2>>0]|0)<<16&4128768;o=t+48|0;k[o>>2]=p;break}case 3:{k[t+44>>2]=q+-4;p=s+q+-4|0;p=(l[p+2>>0]|0)<<16|(l[p+3>>0]|0)<<24&1056964608|(l[p+1>>0]|0)<<8|(l[p>>0]|0);o=t+48|0;k[o>>2]=p;break}default:{}}d=p+4194304|0;k[o>>2]=d;d=d>>>0>1073741823;if(d|n^1)h=d^1;else{g=t+48|0;h=t+44|0;i=t+16|0;b=t+28|0;f=0;d=k[g>>2]|0;while(1){b:do if(d>>>0<4194304){e=k[h>>2]|0;do{if((e|0)<=0)break b;e=e+-1|0;k[h>>2]=e;d=l[(k[j>>2]|0)+e>>0]|0|d<<8;k[g>>2]=d}while(d>>>0<4194304)}while(0);p=d&1048575;s=k[(k[i>>2]|0)+(p<<2)>>2]|0;q=k[b>>2]|0;d=($(k[q+(s<<3)>>2]|0,d>>>20)|0)+p-(k[q+(s<<3)+4>>2]|0)|0;k[g>>2]=d;k[c+(f<<2)>>2]=s;f=f+1|0;if((f|0)==(a|0)){h=1;break}}}}else h=0}else h=0;while(0);d=k[t+28>>2]|0;e=d;if(d|0){f=t+32|0;g=k[f>>2]|0;if((g|0)!=(d|0))k[f>>2]=g+(~((g+-8-e|0)>>>3)<<3);cn(d)}d=k[t+16>>2]|0;e=d;if(d|0){f=t+20|0;g=k[f>>2]|0;if((g|0)!=(d|0))k[f>>2]=g+(~((g+-4-e|0)>>>2)<<2);cn(d)}f=k[t>>2]|0;if(!f){r=u;return h|0}d=t+4|0;e=k[d>>2]|0;if((e|0)!=(f|0))k[d>>2]=e+(~((e+-4-f|0)>>>2)<<2);cn(f);r=u;return h|0}function Jc(a,b,c){a=a|0;b=b|0;c=c|0;var d=0,e=0,f=0,g=0,h=0,i=0,j=0,m=0,n=0,o=0,p=0,q=0,s=0,t=0,u=0;u=r;r=r+64|0;t=u;d=t;e=d+40|0;do{k[d>>2]=0;d=d+4|0}while((d|0)<(e|0));a:do if(re(t,b)|0){n=(a|0)>0;if(n?(k[t+12>>2]|0)==0:0){h=0;break}e=b+8|0;d=k[e>>2]|0;e=k[e+4>>2]|0;f=b+16|0;h=f;g=k[h>>2]|0;h=sl(g|0,k[h+4>>2]|0,8,0)|0;i=M;if((!((e|0)<(i|0)|(e|0)==(i|0)&d>>>0>>0)?(j=k[b>>2]|0,m=j+g|0,q=m,q=l[q>>0]|l[q+1>>0]<<8|l[q+2>>0]<<16|l[q+3>>0]<<24,m=m+4|0,m=l[m>>0]|l[m+1>>0]<<8|l[m+2>>0]<<16|l[m+3>>0]<<24,b=f,k[b>>2]=h,k[b+4>>2]=i,b=al(d|0,e|0,h|0,i|0)|0,g=M,!(m>>>0>g>>>0|(m|0)==(g|0)&q>>>0>b>>>0)):0)?(s=j+h|0,j=sl(q|0,m|0,h|0,i|0)|0,m=f,k[m>>2]=j,k[m+4>>2]=M,(q|0)>=1):0){j=t+40|0;k[j>>2]=s;d=q+-1|0;e=s+d|0;switch((l[e>>0]|0)>>>6&3){case 0:{k[t+44>>2]=d;p=(l[e>>0]|0)&63;o=t+48|0;k[o>>2]=p;break}case 1:{if((q|0)<2){h=0;break a}k[t+44>>2]=q+-2;p=s+q+-2|0;p=(l[p+1>>0]|0)<<8&16128|(l[p>>0]|0);o=t+48|0;k[o>>2]=p;break}case 2:{if((q|0)<3){h=0;break a}k[t+44>>2]=q+-3;p=s+q+-3|0;p=(l[p+1>>0]|0)<<8|(l[p>>0]|0)|(l[p+2>>0]|0)<<16&4128768;o=t+48|0;k[o>>2]=p;break}case 3:{k[t+44>>2]=q+-4;p=s+q+-4|0;p=(l[p+2>>0]|0)<<16|(l[p+3>>0]|0)<<24&1056964608|(l[p+1>>0]|0)<<8|(l[p>>0]|0);o=t+48|0;k[o>>2]=p;break}default:{}}d=p+2097152|0;k[o>>2]=d;d=d>>>0>536870911;if(d|n^1)h=d^1;else{g=t+48|0;h=t+44|0;i=t+16|0;b=t+28|0;f=0;d=k[g>>2]|0;while(1){b:do if(d>>>0<2097152){e=k[h>>2]|0;do{if((e|0)<=0)break b;e=e+-1|0;k[h>>2]=e;d=l[(k[j>>2]|0)+e>>0]|0|d<<8;k[g>>2]=d}while(d>>>0<2097152)}while(0);p=d&524287;s=k[(k[i>>2]|0)+(p<<2)>>2]|0;q=k[b>>2]|0;d=($(k[q+(s<<3)>>2]|0,d>>>19)|0)+p-(k[q+(s<<3)+4>>2]|0)|0;k[g>>2]=d;k[c+(f<<2)>>2]=s;f=f+1|0;if((f|0)==(a|0)){h=1;break}}}}else h=0}else h=0;while(0);d=k[t+28>>2]|0;e=d;if(d|0){f=t+32|0;g=k[f>>2]|0;if((g|0)!=(d|0))k[f>>2]=g+(~((g+-8-e|0)>>>3)<<3);cn(d)}d=k[t+16>>2]|0;e=d;if(d|0){f=t+20|0;g=k[f>>2]|0;if((g|0)!=(d|0))k[f>>2]=g+(~((g+-4-e|0)>>>2)<<2);cn(d)}f=k[t>>2]|0;if(!f){r=u;return h|0}d=t+4|0;e=k[d>>2]|0;if((e|0)!=(f|0))k[d>>2]=e+(~((e+-4-f|0)>>>2)<<2);cn(f);r=u;return h|0} -function $a(a,b){a=a|0;b=b|0;var c=0,d=0,e=0,f=0,g=0,h=0,j=0,m=0,n=0,p=0,q=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,B=0,C=0,D=0,E=0,F=0,G=0,H=0,I=0,J=0,K=0,L=0,M=0,N=0,O=0,P=0,Q=0,R=0,S=0,T=0,U=0,V=0,W=0,X=0,Y=0,Z=0,_=0,$=0,aa=0,ba=0,ca=0,ea=0,fa=0,ga=0,ha=0,ia=0,ja=0,ka=0,la=0,ma=0,na=0,oa=0,pa=0,qa=0,ra=0,sa=0,ta=0,ua=0,va=0,wa=0,xa=0,ya=0;ya=r;r=r+48|0;oa=ya+40|0;va=ya+28|0;wa=ya+4|0;$=ya+24|0;qa=ya;k[va>>2]=0;xa=va+4|0;k[xa>>2]=0;k[va+8>>2]=0;k[wa>>2]=0;k[wa+4>>2]=0;k[wa+8>>2]=0;k[wa+12>>2]=0;o[wa+16>>2]=da(1.0);ta=a+136|0;ia=k[a+140>>2]|0;a:do if((b|0)>0){G=a+240|0;H=a+356|0;I=a+276|0;J=a+352|0;L=a+272|0;M=a+264|0;N=a+268|0;P=a+8|0;Q=a+36|0;R=a+40|0;S=b+-1|0;T=wa+4|0;V=a+340|0;W=va+8|0;X=a+368|0;Y=a+380|0;e=0;w=0;while(1){c=w+1|0;d=k[H>>2]|0;b:do if((d|0)!=-1){v=k[X>>2]|0;u=(k[Y>>2]|0)+(d<<2)|0;ja=(k[u>>2]|0)+-1|0;k[u>>2]=ja;ja=k[(k[v+(d*12|0)>>2]|0)+(ja<<2)>>2]|0;d=k[5904+(ja<<2)>>2]|0;k[J>>2]=d;if(!ja)ja=15;else ja=56}else{do if(!(i[I>>0]|0))d=1;else{f=k[L>>2]|0;h=k[M>>2]|0;j=k[N>>2]|0;d=h+(f>>>3)|0;if(d>>>0>>0?(ja=l[d>>0]|0,aa=f+1|0,k[L>>2]=aa,ja&1<<(f&7)|0):0){d=h+(aa>>>3)|0;if(d>>>0>>0){g=(l[d>>0]|0)>>>(aa&7)&1;f=f+2|0;k[L>>2]=f}else{g=0;f=aa}d=h+(f>>>3)|0;if(d>>>0>>0){d=(l[d>>0]|0)>>>(f&7);k[L>>2]=f+1;d=d<<1&2}else d=0;d=(d|g)<<1|1;break}k[J>>2]=0;ja=15;break b}while(0);k[J>>2]=d;ja=56}while(0);c:do if((ja|0)==15){ja=0;u=k[(k[xa>>2]|0)+-4>>2]|0;v=(u|0)<0;d:do if(!v){d=u+(((u>>>0)%3|0|0)==0?2:-1)|0;if((d|0)<0)ja=17;else{h=k[P>>2]|0;g=k[h+12>>2]|0;while(1){f=k[g+(d<<2)>>2]|0;if((f|0)<=-1){q=0;p=d;f=h;break d}d=f+(((f>>>0)%3|0|0)==0?2:-1)|0;if((d|0)<0){q=1;p=d;f=h;break}}}}else{d=u;ja=17}while(0);if((ja|0)==17){ja=0;g=k[P>>2]|0;q=1;p=d;f=g;g=k[g+12>>2]|0}d=w*3|0;s=d+1|0;k[g+(u<<2)>>2]=s;k[g+(s<<2)>>2]=u;w=d+2|0;k[g+(p<<2)>>2]=w;k[g+(w<<2)>>2]=p;g=u+1|0;if(!v?(x=((g|0)%3|0|0)==0?u+-2|0:g,(x|0)>=0):0)t=k[(k[f>>2]|0)+(((x>>>0)/3|0)*12|0)+(((x>>>0)%3|0)<<2)>>2]|0;else t=-1073741824;k[(k[f>>2]|0)+(((d>>>0)/3|0)*12|0)+(((d|0)%3|0)<<2)>>2]=t;if((t|0)>-1){n=f+24|0;h=f+28|0;g=k[h>>2]|0;f=k[n>>2]|0;j=g-f>>2;do if(j>>>0<=t>>>0){m=t+1|0;if(m>>>0>j>>>0){jh(n,m-j|0);f=k[n>>2]|0;break}if(m>>>0>>0?(F=f+(m<<2)|0,(g|0)!=(F|0)):0)k[h>>2]=g+(~((g+-4-F|0)>>>2)<<2)}while(0);k[f+(t<<2)>>2]=d;f=k[P>>2]|0}g=p+1|0;if(!q?(A=((g|0)%3|0|0)==0?p+-2|0:g,(A|0)>=0):0)p=k[(k[f>>2]|0)+(((A>>>0)/3|0)*12|0)+(((A>>>0)%3|0)<<2)>>2]|0;else p=-1073741824;k[(k[f>>2]|0)+(((d|0)<-1?-1073741824:(s>>>0)/3|0)*12|0)+(((s|0)%3|0)<<2)>>2]=p;if((p|0)>-1){n=f+24|0;h=f+28|0;g=k[h>>2]|0;f=k[n>>2]|0;j=g-f>>2;do if(j>>>0<=p>>>0){m=p+1|0;if(m>>>0>j>>>0){jh(n,m-j|0);f=k[n>>2]|0;break}if(m>>>0>>0?(K=f+(m<<2)|0,(g|0)!=(K|0)):0)k[h>>2]=g+(~((g+-4-K|0)>>>2)<<2)}while(0);k[f+(p<<2)>>2]=s;f=k[P>>2]|0}if(!v?(E=(((u>>>0)%3|0|0)==0?2:-1)+u|0,(E|0)>=0):0)p=k[(k[f>>2]|0)+(((E>>>0)/3|0)*12|0)+(((E>>>0)%3|0)<<2)>>2]|0;else p=-1073741824;k[(k[f>>2]|0)+(((d|0)<-2?-1073741824:(w>>>0)/3|0)*12|0)+(((w|0)%3|0)<<2)>>2]=p;if((p|0)>-1){n=f+24|0;h=f+28|0;g=k[h>>2]|0;f=k[n>>2]|0;j=g-f>>2;do if(j>>>0<=p>>>0){m=p+1|0;if(m>>>0>j>>>0){jh(n,m-j|0);f=k[n>>2]|0;break}if(m>>>0>>0?(O=f+(m<<2)|0,(g|0)!=(O|0)):0)k[h>>2]=g+(~((g+-4-O|0)>>>2)<<2)}while(0);k[f+(p<<2)>>2]=w}if((e|0)>(ia|0)){e=-1;break a}ja=(k[ta>>2]|0)+(t>>>5<<2)|0;k[ja>>2]=k[ja>>2]&~(1<<(t&31));k[(k[xa>>2]|0)+-4>>2]=d;ja=189}else if((ja|0)==56){ja=0;switch(d|0){case 3:case 5:{t=k[(k[xa>>2]|0)+-4>>2]|0;v=w*3|0;n=((d|0)==5?2:1)+v|0;d=k[P>>2]|0;u=k[d+12>>2]|0;k[u+(n<<2)>>2]=t;k[u+(t<<2)>>2]=n;u=e+1|0;s=(n|0)<0;k[(k[d>>2]|0)+((s?-1073741824:(n>>>0)/3|0)*12|0)+(((n|0)%3|0)<<2)>>2]=e;if((e|0)>-1){j=d+24|0;g=d+28|0;f=k[g>>2]|0;d=k[j>>2]|0;h=f-d>>2;do if(h>>>0<=e>>>0){if(u>>>0>h>>>0){jh(j,u-h|0);d=k[j>>2]|0;break}if(u>>>0>>0?(U=d+(u<<2)|0,(f|0)!=(U|0)):0)k[g>>2]=f+(~((f+-4-U|0)>>>2)<<2)}while(0);k[d+(e<<2)>>2]=n;e=k[P>>2]|0}else e=d;d=n+1|0;if(s)p=n;else p=((d|0)%3|0|0)==0?n+-2|0:d;q=(t|0)<0;if(!q?(D=(((t>>>0)%3|0|0)==0?2:-1)+t|0,(D|0)>=0):0)m=k[(k[e>>2]|0)+(((D>>>0)/3|0)*12|0)+(((D>>>0)%3|0)<<2)>>2]|0;else m=-1073741824;k[(k[e>>2]|0)+(((p|0)<0?-1073741824:(p>>>0)/3|0)*12|0)+(((p|0)%3|0)<<2)>>2]=m;if((m|0)>-1){j=e+24|0;f=e+28|0;e=k[f>>2]|0;d=k[j>>2]|0;g=e-d>>2;do if(g>>>0<=m>>>0){h=m+1|0;if(h>>>0>g>>>0){jh(j,h-g|0);d=k[j>>2]|0;break}if(h>>>0>>0?(Z=d+(h<<2)|0,(e|0)!=(Z|0)):0)k[f>>2]=e+(~((e+-4-Z|0)>>>2)<<2)}while(0);k[d+(m<<2)>>2]=p;e=k[P>>2]|0}do if(!s)if(!((n>>>0)%3|0)){n=n+2|0;break}else{n=n+-1|0;break}while(0);d=t+1|0;if(!q?(z=((d|0)%3|0|0)==0?t+-2|0:d,(z|0)>=0):0)m=k[(k[e>>2]|0)+(((z>>>0)/3|0)*12|0)+(((z>>>0)%3|0)<<2)>>2]|0;else m=-1073741824;k[(k[e>>2]|0)+(((n|0)<0?-1073741824:(n>>>0)/3|0)*12|0)+(((n|0)%3|0)<<2)>>2]=m;if((m|0)>-1){j=e+24|0;f=e+28|0;e=k[f>>2]|0;d=k[j>>2]|0;g=e-d>>2;do if(g>>>0<=m>>>0){h=m+1|0;if(h>>>0>g>>>0){jh(j,h-g|0);d=k[j>>2]|0;break}if(h>>>0>>0?(_=d+(h<<2)|0,(e|0)!=(_|0)):0)k[f>>2]=e+(~((e+-4-_|0)>>>2)<<2)}while(0);k[d+(m<<2)>>2]=n}k[(k[xa>>2]|0)+-4>>2]=v;e=u;d=v;break}case 1:{d=k[xa>>2]|0;p=d+-4|0;g=k[p>>2]|0;k[xa>>2]=p;j=k[T>>2]|0;e:do if(j){m=j+-1|0;h=(m&j|0)==0;if(h)n=m&w;else n=(w>>>0)%(j>>>0)|0;f=k[(k[wa>>2]|0)+(n<<2)>>2]|0;if(f){if(h)do{f=k[f>>2]|0;if(!f){d=p;break e}if((k[f+4>>2]&m|0)!=(n|0)){d=p;break e}}while((k[f+8>>2]|0)!=(w|0));else do{f=k[f>>2]|0;if(!f){d=p;break e}if((((k[f+4>>2]|0)>>>0)%(j>>>0)|0|0)!=(n|0)){d=p;break e}}while((k[f+8>>2]|0)!=(w|0));f=f+12|0;if((p|0)==(k[W>>2]|0)){xh(va,f);d=k[xa>>2]|0;break}else{k[p>>2]=k[f>>2];k[xa>>2]=d;break}}else d=p}else d=p;while(0);s=k[d+-4>>2]|0;d=w*3|0;u=d+2|0;f=k[P>>2]|0;q=k[f+12>>2]|0;k[q+(s<<2)>>2]=u;k[q+(u<<2)>>2]=s;t=d+1|0;k[q+(g<<2)>>2]=t;k[q+(t<<2)>>2]=g;q=(s|0)<0;if(!q?(C=(((s>>>0)%3|0|0)==0?2:-1)+s|0,(C|0)>=0):0)w=k[(k[f>>2]|0)+(((C>>>0)/3|0)*12|0)+(((C>>>0)%3|0)<<2)>>2]|0;else w=-1073741824;k[(k[f>>2]|0)+(((d>>>0)/3|0)*12|0)+(((d|0)%3|0)<<2)>>2]=w;v=(w|0)>-1;if(v){p=f+24|0;j=f+28|0;h=k[j>>2]|0;f=k[p>>2]|0;m=h-f>>2;do if(m>>>0<=w>>>0){n=w+1|0;if(n>>>0>m>>>0){jh(p,n-m|0);f=k[p>>2]|0;break}if(n>>>0>>0?(ba=f+(n<<2)|0,(h|0)!=(ba|0)):0)k[j>>2]=h+(~((h+-4-ba|0)>>>2)<<2)}while(0);k[f+(w<<2)>>2]=d;f=k[P>>2]|0}h=s+1|0;if(!q?(y=((h|0)%3|0|0)==0?s+-2|0:h,(y|0)>=0):0)q=k[(k[f>>2]|0)+(((y>>>0)/3|0)*12|0)+(((y>>>0)%3|0)<<2)>>2]|0;else q=-1073741824;k[(k[f>>2]|0)+(((d|0)<-1?-1073741824:(t>>>0)/3|0)*12|0)+(((t|0)%3|0)<<2)>>2]=q;if((q|0)>-1){p=f+24|0;j=f+28|0;h=k[j>>2]|0;f=k[p>>2]|0;m=h-f>>2;do if(m>>>0<=q>>>0){n=q+1|0;if(n>>>0>m>>>0){jh(p,n-m|0);f=k[p>>2]|0;break}if(n>>>0>>0?(ca=f+(n<<2)|0,(h|0)!=(ca|0)):0)k[j>>2]=h+(~((h+-4-ca|0)>>>2)<<2)}while(0);k[f+(q<<2)>>2]=t;f=k[P>>2]|0}s=(g|0)<0;if(!s?(B=(((g>>>0)%3|0|0)==0?2:-1)+g|0,(B|0)>=0):0)q=k[(k[f>>2]|0)+(((B>>>0)/3|0)*12|0)+(((B>>>0)%3|0)<<2)>>2]|0;else q=-1073741824;k[(k[f>>2]|0)+(((d|0)<-2?-1073741824:(u>>>0)/3|0)*12|0)+(((u|0)%3|0)<<2)>>2]=q;if((q|0)>-1){p=f+24|0;j=f+28|0;h=k[j>>2]|0;f=k[p>>2]|0;m=h-f>>2;do if(m>>>0<=q>>>0){n=q+1|0;if(n>>>0>m>>>0){jh(p,n-m|0);f=k[p>>2]|0;break}if(n>>>0>>0?(ea=f+(n<<2)|0,(h|0)!=(ea|0)):0)k[j>>2]=h+(~((h+-4-ea|0)>>>2)<<2)}while(0);k[f+(q<<2)>>2]=u}f=g+1|0;if(!s){f=((f|0)%3|0|0)==0?g+-2|0:f;if((f|0)<0){s=-1073741824;g=f}else{s=k[(k[k[P>>2]>>2]|0)+(((f>>>0)/3|0)*12|0)+(((f>>>0)%3|0)<<2)>>2]|0;g=f}}else s=-1073741824;ja=k[V>>2]|0;f=ja+(w<<2)|0;k[f>>2]=(k[f>>2]|0)+(k[ja+(s<<2)>>2]|0);f=k[P>>2]|0;f:do if((g|0)>-1){q=w+1|0;if(!v){j=k[f>>2]|0;m=f+12|0;while(1){k[j+(((g>>>0)/3|0)*12|0)+(((g>>>0)%3|0)<<2)>>2]=w;ja=g+1|0;g=((ja|0)%3|0|0)==0?g+-2|0:ja;if((g|0)<0)break f;g=k[(k[m>>2]|0)+(g<<2)>>2]|0;h=g+1|0;if((g|0)<0)break f;g=((h|0)%3|0|0)==0?g+-2|0:h;if((g|0)<=-1)break f}}do{k[(k[f>>2]|0)+(((g>>>0)/3|0)*12|0)+(((g>>>0)%3|0)<<2)>>2]=w;n=f+24|0;p=f+28|0;h=k[p>>2]|0;f=k[n>>2]|0;j=h-f>>2;do if(j>>>0<=w>>>0){m=h;if(q>>>0>j>>>0){jh(n,q-j|0);f=k[n>>2]|0;break}if(q>>>0>=j>>>0)break;h=f+(q<<2)|0;if((m|0)==(h|0))break;k[p>>2]=m+(~((m+-4-h|0)>>>2)<<2)}while(0);k[f+(w<<2)>>2]=g;f=g+1|0;g=((f|0)%3|0|0)==0?g+-2|0:f;f=k[P>>2]|0;if((g|0)<0)break f;g=k[(k[f+12>>2]|0)+(g<<2)>>2]|0;h=g+1|0;if((g|0)<0)break f;g=((h|0)%3|0|0)==0?g+-2|0:h}while((g|0)>-1)}while(0);k[(k[f+24>>2]|0)+(s<<2)>>2]=-1073741824;k[(k[xa>>2]|0)+-4>>2]=d;ja=189;break c}case 7:{m=w*3|0;k[oa>>2]=m;f=k[P>>2]|0;n=e+1|0;d=k[f>>2]|0;k[d+(((m>>>0)/3|0)*12|0)+(((m|0)%3|0)<<2)>>2]=e;if((e|0)>-1){j=f+24|0;g=f+28|0;f=k[g>>2]|0;d=k[j>>2]|0;h=f-d>>2;do if(h>>>0<=e>>>0){if(n>>>0>h>>>0){jh(j,n-h|0);d=k[j>>2]|0;break}if(n>>>0>>0?(fa=d+(n<<2)|0,(f|0)!=(fa|0)):0)k[g>>2]=f+(~((f+-4-fa|0)>>>2)<<2)}while(0);k[d+(e<<2)>>2]=m;f=k[P>>2]|0;g=k[oa>>2]|0;d=k[f>>2]|0}else g=m;m=g+1|0;p=e+2|0;k[d+(((g|0)<-1?-1073741824:(m>>>0)/3|0)*12|0)+(((m|0)%3|0)<<2)>>2]=n;if((e|0)>-2){j=f+24|0;g=f+28|0;f=k[g>>2]|0;d=k[j>>2]|0;h=f-d>>2;do if(h>>>0<=n>>>0){if(p>>>0>h>>>0){jh(j,p-h|0);d=k[j>>2]|0;break}if(p>>>0>>0?(ga=d+(p<<2)|0,(f|0)!=(ga|0)):0)k[g>>2]=f+(~((f+-4-ga|0)>>>2)<<2)}while(0);k[d+(n<<2)>>2]=m;f=k[P>>2]|0;g=k[oa>>2]|0;d=k[f>>2]|0}m=g+2|0;e=e+3|0;k[d+(((g|0)<-2?-1073741824:(m>>>0)/3|0)*12|0)+(((m|0)%3|0)<<2)>>2]=p;if((p|0)>-1){j=f+24|0;g=f+28|0;f=k[g>>2]|0;d=k[j>>2]|0;h=f-d>>2;do if(h>>>0<=p>>>0){if(e>>>0>h>>>0){jh(j,e-h|0);d=k[j>>2]|0;break}if(e>>>0>>0?(ha=d+(e<<2)|0,(f|0)!=(ha|0)):0)k[g>>2]=f+(~((f+-4-ha|0)>>>2)<<2)}while(0);k[d+(p<<2)>>2]=m}d=k[xa>>2]|0;if((d|0)==(k[W>>2]|0)){xh(va,oa);d=k[xa>>2]|0}else{k[d>>2]=k[oa>>2];d=d+4|0;k[xa>>2]=d}d=k[d+-4>>2]|0;break}default:{e=-1;break a}}k[$>>2]=d;k[oa>>2]=k[$>>2];md(G,oa);j=b-w|0;m=j+-1|0;d=k[R>>2]|0;if((d|0)!=(k[Q>>2]|0))do{f=k[d+-8>>2]|0;if((f|0)>=(j|0)){e=-1;break a}if((f|0)!=(m|0))break c;f=i[d+-4>>0]|0;h=k[d+-12>>2]|0;k[R>>2]=d+-12;if((h|0)<0){e=-1;break a}d=k[(k[xa>>2]|0)+-4>>2]|0;g=(d|0)<0;do if(!(f&1)){if(!g)if(!((d>>>0)%3|0)){d=d+2|0;break}else{d=d+-1|0;break}}else{f=d+1|0;if(!g)d=((f|0)%3|0|0)==0?d+-2|0:f}while(0);k[oa>>2]=S-h;w=De(wa,oa)|0;k[w>>2]=d;d=k[R>>2]|0}while((d|0)!=(k[Q>>2]|0))}while(0);if((ja|0)==189){k[$>>2]=d;k[oa>>2]=k[$>>2];md(G,oa)}if((c|0)<(b|0))w=c;else{ja=203;break}}}else{e=0;c=0;ja=203}while(0);do if((ja|0)==203)if((e|0)<=(ia|0)){d=k[xa>>2]|0;g:do if((d|0)!=(k[va>>2]|0)){t=a+316|0;u=a+8|0;v=a+64|0;w=a+68|0;x=a+72|0;y=a+80|0;z=a+84|0;A=a+76|0;B=a+312|0;C=a+304|0;D=a+308|0;h:while(1){ia=d;n=k[ia+-4>>2]|0;k[oa>>2]=n;k[xa>>2]=ia+-4;do if(i[t>>0]|0){d=k[B>>2]|0;f=(k[C>>2]|0)+(d>>>3)|0;if(f>>>0<(k[D>>2]|0)>>>0?(ia=l[f>>0]|0,k[B>>2]=d+1,ia&1<<(d&7)|0):0){ja=210;break}d=k[w>>2]|0;f=k[x>>2]|0;if((d|0)==(f<<5|0)){if((d+1|0)<0){ja=266;break h}ia=f<<6;d=d+32&-32;Xg(v,f<<5>>>0<1073741823?(ia>>>0>>0?d:ia):2147483647);d=k[w>>2]|0}k[w>>2]=d+1;ia=(k[v>>2]|0)+(d>>>5<<2)|0;k[ia>>2]=k[ia>>2]&~(1<<(d&31));d=k[y>>2]|0;if((d|0)==(k[z>>2]|0)){xh(A,oa);break}else{k[d>>2]=k[oa>>2];k[y>>2]=d+4;break}}else ja=210;while(0);if((ja|0)==210){ja=0;h=(n|0)<0;i:do if(!h){d=n+(((n>>>0)%3|0|0)==0?2:-1)|0;if((d|0)>=0){f=k[(k[u>>2]|0)+12>>2]|0;g=d;while(1){d=k[f+(g<<2)>>2]|0;if((d|0)<=-1){f=0;d=g;break}d=d+(((d>>>0)%3|0|0)==0?2:-1)|0;if((d|0)<0){f=1;break}else g=d}if(h){g=n;ja=217;break}}else f=1;g=n+1|0;g=((g|0)%3|0|0)==0?n+-2|0:g;if((g|0)<0)ja=217;else{m=k[u>>2]|0;j=k[m+12>>2]|0;while(1){h=k[j+(g<<2)>>2]|0;if((h|0)<=-1){q=0;h=j;j=m;break i}g=h+1|0;g=((g|0)%3|0|0)==0?h+-2|0:g;if((g|0)<0){q=1;h=j;j=m;break}}}}else{f=1;g=n;d=n;ja=217}while(0);if((ja|0)==217){ja=0;j=k[u>>2]|0;q=1;h=k[j+12>>2]|0}s=c+1|0;c=c*3|0;k[qa>>2]=c;k[h+(c<<2)>>2]=n;k[h+(n<<2)>>2]=c;c=(k[qa>>2]|0)+1|0;k[h+(c<<2)>>2]=d;k[h+(d<<2)>>2]=c;c=(k[qa>>2]|0)+2|0;k[h+(c<<2)>>2]=g;k[h+(g<<2)>>2]=c;c=k[qa>>2]|0;h=d+1|0;if(!f?(ma=((h|0)%3|0|0)==0?d+-2|0:h,(ma|0)>=0):0)p=k[(k[j>>2]|0)+(((ma>>>0)/3|0)*12|0)+(((ma>>>0)%3|0)<<2)>>2]|0;else p=-1073741824;k[(k[j>>2]|0)+(((c|0)<0?-1073741824:(c>>>0)/3|0)*12|0)+(((c|0)%3|0)<<2)>>2]=p;if((p|0)>-1){n=j+24|0;h=j+28|0;f=k[h>>2]|0;d=k[n>>2]|0;j=f-d>>2;do if(j>>>0<=p>>>0){m=p+1|0;if(m>>>0>j>>>0){jh(n,m-j|0);d=k[n>>2]|0;break}if(m>>>0>>0?(ra=d+(m<<2)|0,(f|0)!=(ra|0)):0)k[h>>2]=f+(~((f+-4-ra|0)>>>2)<<2)}while(0);k[d+(p<<2)>>2]=c;c=k[qa>>2]|0;f=k[u>>2]|0}else f=j;n=c+1|0;d=g+1|0;if(!q?(la=((d|0)%3|0|0)==0?g+-2|0:d,(la|0)>=0):0)m=k[(k[f>>2]|0)+(((la>>>0)/3|0)*12|0)+(((la>>>0)%3|0)<<2)>>2]|0;else m=-1073741824;k[(k[f>>2]|0)+(((c|0)<-1?-1073741824:(n>>>0)/3|0)*12|0)+(((n|0)%3|0)<<2)>>2]=m;if((m|0)>-1){j=f+24|0;f=f+28|0;d=k[f>>2]|0;c=k[j>>2]|0;g=d-c>>2;do if(g>>>0<=m>>>0){h=m+1|0;if(h>>>0>g>>>0){jh(j,h-g|0);c=k[j>>2]|0;break}if(h>>>0>>0?(sa=c+(h<<2)|0,(d|0)!=(sa|0)):0)k[f>>2]=d+(~((d+-4-sa|0)>>>2)<<2)}while(0);k[c+(m<<2)>>2]=n;c=k[qa>>2]|0;g=k[u>>2]|0}else g=f;p=c+2|0;d=k[oa>>2]|0;f=d+1|0;if((d|0)>=0?(ka=((f|0)%3|0|0)==0?d+-2|0:f,(ka|0)>=0):0)n=k[(k[g>>2]|0)+(((ka>>>0)/3|0)*12|0)+(((ka>>>0)%3|0)<<2)>>2]|0;else n=-1073741824;k[(k[g>>2]|0)+(((c|0)<-2?-1073741824:(p>>>0)/3|0)*12|0)+(((p|0)%3|0)<<2)>>2]=n;if((n|0)>-1){j=g+24|0;m=g+28|0;d=k[m>>2]|0;c=k[j>>2]|0;f=d-c>>2;do if(f>>>0<=n>>>0){g=n+1|0;h=d;if(g>>>0>f>>>0){jh(j,g-f|0);c=k[j>>2]|0;break}if(g>>>0>>0){d=c+(g<<2)|0;if((h|0)==(d|0))break;k[m>>2]=h+(~((h+-4-d|0)>>>2)<<2)}}while(0);k[c+(n<<2)>>2]=p;c=k[qa>>2]|0}if((c|0)<0)c=-1073741824;else c=k[(k[k[u>>2]>>2]|0)+(((c>>>0)/3|0)*12|0)+(((c>>>0)%3|0)<<2)>>2]|0;d=k[ta>>2]|0;ia=d+(c>>>5<<2)|0;k[ia>>2]=k[ia>>2]&~(1<<(c&31));ia=k[qa>>2]|0;c=ia+1|0;if((ia|0)<-1)c=-1073741824;else c=k[(k[k[u>>2]>>2]|0)+(((c>>>0)/3|0)*12|0)+(((c>>>0)%3|0)<<2)>>2]|0;ia=d+(c>>>5<<2)|0;k[ia>>2]=k[ia>>2]&~(1<<(c&31));ia=k[qa>>2]|0;c=ia+2|0;if((ia|0)<-2)c=-1073741824;else c=k[(k[k[u>>2]>>2]|0)+(((c>>>0)/3|0)*12|0)+(((c>>>0)%3|0)<<2)>>2]|0;d=d+(c>>>5<<2)|0;k[d>>2]=k[d>>2]&~(1<<(c&31));c=k[w>>2]|0;d=k[x>>2]|0;if((c|0)==(d<<5|0)){if((c+1|0)<0){ja=256;break}ia=d<<6;c=c+32&-32;Xg(v,d<<5>>>0<1073741823?(ia>>>0>>0?c:ia):2147483647);c=k[w>>2]|0}k[w>>2]=c+1;ia=(k[v>>2]|0)+(c>>>5<<2)|0;k[ia>>2]=k[ia>>2]|1<<(c&31);c=k[y>>2]|0;if((c|0)==(k[z>>2]|0))xh(A,qa);else{k[c>>2]=k[qa>>2];k[y>>2]=c+4}c=s}d=k[xa>>2]|0;if((d|0)==(k[va>>2]|0)){na=c;pa=u;break g}}if((ja|0)==256)hm(v);else if((ja|0)==266)hm(v)}else{na=c;pa=a+8|0}while(0);ta=k[pa>>2]|0;if((na|0)==(((k[ta+4>>2]|0)-(k[ta>>2]|0)|0)/12|0|0)){h=a+88|0;c=a+92|0;g=k[c>>2]|0;d=k[h>>2]|0;f=g-d>>2;if(e>>>0>f>>>0){jh(h,e-f|0);break}if(e>>>0>>0?(ua=d+(e<<2)|0,(g|0)!=(ua|0)):0)k[c>>2]=g+(~((g+-4-ua|0)>>>2)<<2)}else e=-1}else e=-1;while(0);c=k[wa+8>>2]|0;if(c|0)do{ua=c;c=k[c>>2]|0;cn(ua)}while((c|0)!=0);c=k[wa>>2]|0;k[wa>>2]=0;if(c|0)cn(c);c=k[va>>2]|0;if(!c){r=ya;return e|0}d=k[xa>>2]|0;if((d|0)!=(c|0))k[xa>>2]=d+(~((d+-4-c|0)>>>2)<<2);cn(c);r=ya;return e|0}function ab(a,b){a=a|0;b=b|0;var c=0,d=0,e=0,f=0,g=0,h=0,j=0,m=0,n=0,p=0,q=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,B=0,C=0,D=0,E=0,F=0,G=0,H=0,I=0,J=0,K=0,L=0,M=0,N=0,O=0,P=0,Q=0,R=0,S=0,T=0,U=0,V=0,W=0,X=0,Y=0,Z=0,_=0,$=0,aa=0,ba=0,ca=0,ea=0,fa=0,ga=0,ha=0,ia=0,ja=0,ka=0,la=0,ma=0,na=0,oa=0,pa=0,qa=0,ra=0,sa=0,ta=0,ua=0,va=0,wa=0,xa=0;xa=r;r=r+48|0;na=xa+40|0;ua=xa+28|0;va=xa+4|0;$=xa+24|0;pa=xa;k[ua>>2]=0;wa=ua+4|0;k[wa>>2]=0;k[ua+8>>2]=0;k[va>>2]=0;k[va+4>>2]=0;k[va+8>>2]=0;k[va+12>>2]=0;o[va+16>>2]=da(1.0);sa=a+136|0;ha=k[a+140>>2]|0;a:do if((b|0)>0){G=a+240|0;H=a+372|0;I=a+276|0;K=a+368|0;L=a+272|0;M=a+264|0;O=a+268|0;P=a+8|0;Q=a+36|0;R=a+40|0;S=b+-1|0;U=va+4|0;V=a+340|0;W=ua+8|0;X=a+352|0;e=0;w=0;while(1){c=w+1|0;if((k[H>>2]|0)!=-1?Ti(X)|0:0){d=k[H>>2]|0;k[K>>2]=d;if(!d)ia=16;else ia=57}else ia=5;b:do if((ia|0)==5){do if(!(i[I>>0]|0))d=1;else{f=k[L>>2]|0;h=k[M>>2]|0;j=k[O>>2]|0;d=h+(f>>>3)|0;if(d>>>0>>0?(ia=l[d>>0]|0,aa=f+1|0,k[L>>2]=aa,ia&1<<(f&7)|0):0){d=h+(aa>>>3)|0;if(d>>>0>>0){g=(l[d>>0]|0)>>>(aa&7)&1;f=f+2|0;k[L>>2]=f}else{g=0;f=aa}d=h+(f>>>3)|0;if(d>>>0>>0){d=(l[d>>0]|0)>>>(f&7);k[L>>2]=f+1;d=d<<1&2}else d=0;d=(d|g)<<1|1;break}k[K>>2]=0;ia=16;break b}while(0);k[K>>2]=d;ia=57}while(0);c:do if((ia|0)==16){ia=0;u=k[(k[wa>>2]|0)+-4>>2]|0;v=(u|0)<0;d:do if(!v){d=u+(((u>>>0)%3|0|0)==0?2:-1)|0;if((d|0)<0)ia=18;else{h=k[P>>2]|0;g=k[h+12>>2]|0;while(1){f=k[g+(d<<2)>>2]|0;if((f|0)<=-1){q=0;p=d;f=h;break d}d=f+(((f>>>0)%3|0|0)==0?2:-1)|0;if((d|0)<0){q=1;p=d;f=h;break}}}}else{d=u;ia=18}while(0);if((ia|0)==18){ia=0;f=k[P>>2]|0;q=1;p=d;g=k[f+12>>2]|0}d=w*3|0;s=d+1|0;k[g+(u<<2)>>2]=s;k[g+(s<<2)>>2]=u;w=d+2|0;k[g+(p<<2)>>2]=w;k[g+(w<<2)>>2]=p;g=u+1|0;if(!v?(x=((g|0)%3|0|0)==0?u+-2|0:g,(x|0)>=0):0)t=k[(k[f>>2]|0)+(((x>>>0)/3|0)*12|0)+(((x>>>0)%3|0)<<2)>>2]|0;else t=-1073741824;k[(k[f>>2]|0)+(((d>>>0)/3|0)*12|0)+(((d|0)%3|0)<<2)>>2]=t;if((t|0)>-1){n=f+24|0;h=f+28|0;g=k[h>>2]|0;f=k[n>>2]|0;j=g-f>>2;do if(j>>>0<=t>>>0){m=t+1|0;if(m>>>0>j>>>0){jh(n,m-j|0);f=k[n>>2]|0;break}if(m>>>0>>0?(F=f+(m<<2)|0,(g|0)!=(F|0)):0)k[h>>2]=g+(~((g+-4-F|0)>>>2)<<2)}while(0);k[f+(t<<2)>>2]=d;f=k[P>>2]|0}g=p+1|0;if(!q?(A=((g|0)%3|0|0)==0?p+-2|0:g,(A|0)>=0):0)p=k[(k[f>>2]|0)+(((A>>>0)/3|0)*12|0)+(((A>>>0)%3|0)<<2)>>2]|0;else p=-1073741824;k[(k[f>>2]|0)+(((d|0)<-1?-1073741824:(s>>>0)/3|0)*12|0)+(((s|0)%3|0)<<2)>>2]=p;if((p|0)>-1){n=f+24|0;h=f+28|0;g=k[h>>2]|0;f=k[n>>2]|0;j=g-f>>2;do if(j>>>0<=p>>>0){m=p+1|0;if(m>>>0>j>>>0){jh(n,m-j|0);f=k[n>>2]|0;break}if(m>>>0>>0?(J=f+(m<<2)|0,(g|0)!=(J|0)):0)k[h>>2]=g+(~((g+-4-J|0)>>>2)<<2)}while(0);k[f+(p<<2)>>2]=s;f=k[P>>2]|0}if(!v?(E=(((u>>>0)%3|0|0)==0?2:-1)+u|0,(E|0)>=0):0)p=k[(k[f>>2]|0)+(((E>>>0)/3|0)*12|0)+(((E>>>0)%3|0)<<2)>>2]|0;else p=-1073741824;k[(k[f>>2]|0)+(((d|0)<-2?-1073741824:(w>>>0)/3|0)*12|0)+(((w|0)%3|0)<<2)>>2]=p;if((p|0)>-1){n=f+24|0;h=f+28|0;g=k[h>>2]|0;f=k[n>>2]|0;j=g-f>>2;do if(j>>>0<=p>>>0){m=p+1|0;if(m>>>0>j>>>0){jh(n,m-j|0);f=k[n>>2]|0;break}if(m>>>0>>0?(N=f+(m<<2)|0,(g|0)!=(N|0)):0)k[h>>2]=g+(~((g+-4-N|0)>>>2)<<2)}while(0);k[f+(p<<2)>>2]=w}if((e|0)>(ha|0)){e=-1;break a}ia=(k[sa>>2]|0)+(t>>>5<<2)|0;k[ia>>2]=k[ia>>2]&~(1<<(t&31));k[(k[wa>>2]|0)+-4>>2]=d;ia=190}else if((ia|0)==57){ia=0;switch(d|0){case 3:case 5:{t=k[(k[wa>>2]|0)+-4>>2]|0;v=w*3|0;n=((d|0)==5?2:1)+v|0;d=k[P>>2]|0;u=k[d+12>>2]|0;k[u+(n<<2)>>2]=t;k[u+(t<<2)>>2]=n;u=e+1|0;s=(n|0)<0;k[(k[d>>2]|0)+((s?-1073741824:(n>>>0)/3|0)*12|0)+(((n|0)%3|0)<<2)>>2]=e;if((e|0)>-1){j=d+24|0;g=d+28|0;f=k[g>>2]|0;d=k[j>>2]|0;h=f-d>>2;do if(h>>>0<=e>>>0){if(u>>>0>h>>>0){jh(j,u-h|0);d=k[j>>2]|0;break}if(u>>>0>>0?(T=d+(u<<2)|0,(f|0)!=(T|0)):0)k[g>>2]=f+(~((f+-4-T|0)>>>2)<<2)}while(0);k[d+(e<<2)>>2]=n;e=k[P>>2]|0}else e=d;d=n+1|0;if(s)p=n;else p=((d|0)%3|0|0)==0?n+-2|0:d;q=(t|0)<0;if(!q?(D=(((t>>>0)%3|0|0)==0?2:-1)+t|0,(D|0)>=0):0)m=k[(k[e>>2]|0)+(((D>>>0)/3|0)*12|0)+(((D>>>0)%3|0)<<2)>>2]|0;else m=-1073741824;k[(k[e>>2]|0)+(((p|0)<0?-1073741824:(p>>>0)/3|0)*12|0)+(((p|0)%3|0)<<2)>>2]=m;if((m|0)>-1){j=e+24|0;f=e+28|0;e=k[f>>2]|0;d=k[j>>2]|0;g=e-d>>2;do if(g>>>0<=m>>>0){h=m+1|0;if(h>>>0>g>>>0){jh(j,h-g|0);d=k[j>>2]|0;break}if(h>>>0>>0?(Y=d+(h<<2)|0,(e|0)!=(Y|0)):0)k[f>>2]=e+(~((e+-4-Y|0)>>>2)<<2)}while(0);k[d+(m<<2)>>2]=p;e=k[P>>2]|0}do if(!s)if(!((n>>>0)%3|0)){n=n+2|0;break}else{n=n+-1|0;break}while(0);d=t+1|0;if(!q?(z=((d|0)%3|0|0)==0?t+-2|0:d,(z|0)>=0):0)m=k[(k[e>>2]|0)+(((z>>>0)/3|0)*12|0)+(((z>>>0)%3|0)<<2)>>2]|0;else m=-1073741824;k[(k[e>>2]|0)+(((n|0)<0?-1073741824:(n>>>0)/3|0)*12|0)+(((n|0)%3|0)<<2)>>2]=m;if((m|0)>-1){j=e+24|0;f=e+28|0;e=k[f>>2]|0;d=k[j>>2]|0;g=e-d>>2;do if(g>>>0<=m>>>0){h=m+1|0;if(h>>>0>g>>>0){jh(j,h-g|0);d=k[j>>2]|0;break}if(h>>>0>>0?(Z=d+(h<<2)|0,(e|0)!=(Z|0)):0)k[f>>2]=e+(~((e+-4-Z|0)>>>2)<<2)}while(0);k[d+(m<<2)>>2]=n}k[(k[wa>>2]|0)+-4>>2]=v;e=u;d=v;break}case 1:{d=k[wa>>2]|0;p=d+-4|0;g=k[p>>2]|0;k[wa>>2]=p;j=k[U>>2]|0;e:do if(j){m=j+-1|0;h=(m&j|0)==0;if(h)n=m&w;else n=(w>>>0)%(j>>>0)|0;f=k[(k[va>>2]|0)+(n<<2)>>2]|0;if(f){if(h)do{f=k[f>>2]|0;if(!f){d=p;break e}if((k[f+4>>2]&m|0)!=(n|0)){d=p;break e}}while((k[f+8>>2]|0)!=(w|0));else do{f=k[f>>2]|0;if(!f){d=p;break e}if((((k[f+4>>2]|0)>>>0)%(j>>>0)|0|0)!=(n|0)){d=p;break e}}while((k[f+8>>2]|0)!=(w|0));f=f+12|0;if((p|0)==(k[W>>2]|0)){xh(ua,f);d=k[wa>>2]|0;break}else{k[p>>2]=k[f>>2];k[wa>>2]=d;break}}else d=p}else d=p;while(0);s=k[d+-4>>2]|0;d=w*3|0;u=d+2|0;f=k[P>>2]|0;q=k[f+12>>2]|0;k[q+(s<<2)>>2]=u;k[q+(u<<2)>>2]=s;t=d+1|0;k[q+(g<<2)>>2]=t;k[q+(t<<2)>>2]=g;q=(s|0)<0;if(!q?(C=(((s>>>0)%3|0|0)==0?2:-1)+s|0,(C|0)>=0):0)w=k[(k[f>>2]|0)+(((C>>>0)/3|0)*12|0)+(((C>>>0)%3|0)<<2)>>2]|0;else w=-1073741824;k[(k[f>>2]|0)+(((d>>>0)/3|0)*12|0)+(((d|0)%3|0)<<2)>>2]=w;v=(w|0)>-1;if(v){p=f+24|0;j=f+28|0;h=k[j>>2]|0;f=k[p>>2]|0;m=h-f>>2;do if(m>>>0<=w>>>0){n=w+1|0;if(n>>>0>m>>>0){jh(p,n-m|0);f=k[p>>2]|0;break}if(n>>>0>>0?(_=f+(n<<2)|0,(h|0)!=(_|0)):0)k[j>>2]=h+(~((h+-4-_|0)>>>2)<<2)}while(0);k[f+(w<<2)>>2]=d;f=k[P>>2]|0}h=s+1|0;if(!q?(y=((h|0)%3|0|0)==0?s+-2|0:h,(y|0)>=0):0)q=k[(k[f>>2]|0)+(((y>>>0)/3|0)*12|0)+(((y>>>0)%3|0)<<2)>>2]|0;else q=-1073741824;k[(k[f>>2]|0)+(((d|0)<-1?-1073741824:(t>>>0)/3|0)*12|0)+(((t|0)%3|0)<<2)>>2]=q;if((q|0)>-1){p=f+24|0;j=f+28|0;h=k[j>>2]|0;f=k[p>>2]|0;m=h-f>>2;do if(m>>>0<=q>>>0){n=q+1|0;if(n>>>0>m>>>0){jh(p,n-m|0);f=k[p>>2]|0;break}if(n>>>0>>0?(ba=f+(n<<2)|0,(h|0)!=(ba|0)):0)k[j>>2]=h+(~((h+-4-ba|0)>>>2)<<2)}while(0);k[f+(q<<2)>>2]=t;f=k[P>>2]|0}s=(g|0)<0;if(!s?(B=(((g>>>0)%3|0|0)==0?2:-1)+g|0,(B|0)>=0):0)q=k[(k[f>>2]|0)+(((B>>>0)/3|0)*12|0)+(((B>>>0)%3|0)<<2)>>2]|0;else q=-1073741824;k[(k[f>>2]|0)+(((d|0)<-2?-1073741824:(u>>>0)/3|0)*12|0)+(((u|0)%3|0)<<2)>>2]=q;if((q|0)>-1){p=f+24|0;j=f+28|0;h=k[j>>2]|0;f=k[p>>2]|0;m=h-f>>2;do if(m>>>0<=q>>>0){n=q+1|0;if(n>>>0>m>>>0){jh(p,n-m|0);f=k[p>>2]|0;break}if(n>>>0>>0?(ca=f+(n<<2)|0,(h|0)!=(ca|0)):0)k[j>>2]=h+(~((h+-4-ca|0)>>>2)<<2)}while(0);k[f+(q<<2)>>2]=u}f=g+1|0;if(!s){f=((f|0)%3|0|0)==0?g+-2|0:f;if((f|0)<0){s=-1073741824;g=f}else{s=k[(k[k[P>>2]>>2]|0)+(((f>>>0)/3|0)*12|0)+(((f>>>0)%3|0)<<2)>>2]|0;g=f}}else s=-1073741824;ia=k[V>>2]|0;f=ia+(w<<2)|0;k[f>>2]=(k[f>>2]|0)+(k[ia+(s<<2)>>2]|0);f=k[P>>2]|0;f:do if((g|0)>-1){q=w+1|0;if(!v){j=k[f>>2]|0;m=f+12|0;while(1){k[j+(((g>>>0)/3|0)*12|0)+(((g>>>0)%3|0)<<2)>>2]=w;ia=g+1|0;g=((ia|0)%3|0|0)==0?g+-2|0:ia;if((g|0)<0)break f;g=k[(k[m>>2]|0)+(g<<2)>>2]|0;h=g+1|0;if((g|0)<0)break f;g=((h|0)%3|0|0)==0?g+-2|0:h;if((g|0)<=-1)break f}}do{k[(k[f>>2]|0)+(((g>>>0)/3|0)*12|0)+(((g>>>0)%3|0)<<2)>>2]=w;n=f+24|0;p=f+28|0;h=k[p>>2]|0;f=k[n>>2]|0;j=h-f>>2;do if(j>>>0<=w>>>0){m=h;if(q>>>0>j>>>0){jh(n,q-j|0);f=k[n>>2]|0;break}if(q>>>0>=j>>>0)break;h=f+(q<<2)|0;if((m|0)==(h|0))break;k[p>>2]=m+(~((m+-4-h|0)>>>2)<<2)}while(0);k[f+(w<<2)>>2]=g;f=g+1|0;g=((f|0)%3|0|0)==0?g+-2|0:f;f=k[P>>2]|0;if((g|0)<0)break f;g=k[(k[f+12>>2]|0)+(g<<2)>>2]|0;h=g+1|0;if((g|0)<0)break f;g=((h|0)%3|0|0)==0?g+-2|0:h}while((g|0)>-1)}while(0);k[(k[f+24>>2]|0)+(s<<2)>>2]=-1073741824;k[(k[wa>>2]|0)+-4>>2]=d;ia=190;break c}case 7:{m=w*3|0;k[na>>2]=m;f=k[P>>2]|0;n=e+1|0;d=k[f>>2]|0;k[d+(((m>>>0)/3|0)*12|0)+(((m|0)%3|0)<<2)>>2]=e;if((e|0)>-1){j=f+24|0;g=f+28|0;f=k[g>>2]|0;d=k[j>>2]|0;h=f-d>>2;do if(h>>>0<=e>>>0){if(n>>>0>h>>>0){jh(j,n-h|0);d=k[j>>2]|0;break}if(n>>>0>>0?(ea=d+(n<<2)|0,(f|0)!=(ea|0)):0)k[g>>2]=f+(~((f+-4-ea|0)>>>2)<<2)}while(0);k[d+(e<<2)>>2]=m;f=k[P>>2]|0;g=k[na>>2]|0;d=k[f>>2]|0}else g=m;m=g+1|0;p=e+2|0;k[d+(((g|0)<-1?-1073741824:(m>>>0)/3|0)*12|0)+(((m|0)%3|0)<<2)>>2]=n;if((e|0)>-2){j=f+24|0;g=f+28|0;f=k[g>>2]|0;d=k[j>>2]|0;h=f-d>>2;do if(h>>>0<=n>>>0){if(p>>>0>h>>>0){jh(j,p-h|0);d=k[j>>2]|0;break}if(p>>>0>>0?(fa=d+(p<<2)|0,(f|0)!=(fa|0)):0)k[g>>2]=f+(~((f+-4-fa|0)>>>2)<<2)}while(0);k[d+(n<<2)>>2]=m;f=k[P>>2]|0;g=k[na>>2]|0;d=k[f>>2]|0}m=g+2|0;e=e+3|0;k[d+(((g|0)<-2?-1073741824:(m>>>0)/3|0)*12|0)+(((m|0)%3|0)<<2)>>2]=p;if((p|0)>-1){j=f+24|0;g=f+28|0;f=k[g>>2]|0;d=k[j>>2]|0;h=f-d>>2;do if(h>>>0<=p>>>0){if(e>>>0>h>>>0){jh(j,e-h|0);d=k[j>>2]|0;break}if(e>>>0>>0?(ga=d+(e<<2)|0,(f|0)!=(ga|0)):0)k[g>>2]=f+(~((f+-4-ga|0)>>>2)<<2)}while(0);k[d+(p<<2)>>2]=m}d=k[wa>>2]|0;if((d|0)==(k[W>>2]|0)){xh(ua,na);d=k[wa>>2]|0}else{k[d>>2]=k[na>>2];d=d+4|0;k[wa>>2]=d}d=k[d+-4>>2]|0;break}default:{e=-1;break a}}k[$>>2]=d;k[na>>2]=k[$>>2];kd(G,na);j=b-w|0;m=j+-1|0;d=k[R>>2]|0;if((d|0)!=(k[Q>>2]|0))do{f=k[d+-8>>2]|0;if((f|0)>=(j|0)){e=-1;break a}if((f|0)!=(m|0))break c;f=i[d+-4>>0]|0;h=k[d+-12>>2]|0;k[R>>2]=d+-12;if((h|0)<0){e=-1;break a}d=k[(k[wa>>2]|0)+-4>>2]|0;g=(d|0)<0;do if(!(f&1)){if(!g)if(!((d>>>0)%3|0)){d=d+2|0;break}else{d=d+-1|0;break}}else{f=d+1|0;if(!g)d=((f|0)%3|0|0)==0?d+-2|0:f}while(0);k[na>>2]=S-h;w=De(va,na)|0;k[w>>2]=d;d=k[R>>2]|0}while((d|0)!=(k[Q>>2]|0))}while(0);if((ia|0)==190){k[$>>2]=d;k[na>>2]=k[$>>2];kd(G,na)}if((c|0)<(b|0))w=c;else{ia=204;break}}}else{e=0;c=0;ia=204}while(0);do if((ia|0)==204)if((e|0)<=(ha|0)){d=k[wa>>2]|0;g:do if((d|0)!=(k[ua>>2]|0)){t=a+316|0;u=a+8|0;v=a+64|0;w=a+68|0;x=a+72|0;y=a+80|0;z=a+84|0;A=a+76|0;B=a+312|0;C=a+304|0;D=a+308|0;h:while(1){ha=d;n=k[ha+-4>>2]|0;k[na>>2]=n;k[wa>>2]=ha+-4;do if(i[t>>0]|0){d=k[B>>2]|0;f=(k[C>>2]|0)+(d>>>3)|0;if(f>>>0<(k[D>>2]|0)>>>0?(ha=l[f>>0]|0,k[B>>2]=d+1,ha&1<<(d&7)|0):0){ia=211;break}d=k[w>>2]|0;f=k[x>>2]|0;if((d|0)==(f<<5|0)){if((d+1|0)<0){ia=267;break h}ha=f<<6;d=d+32&-32;Xg(v,f<<5>>>0<1073741823?(ha>>>0>>0?d:ha):2147483647);d=k[w>>2]|0}k[w>>2]=d+1;ha=(k[v>>2]|0)+(d>>>5<<2)|0;k[ha>>2]=k[ha>>2]&~(1<<(d&31));d=k[y>>2]|0;if((d|0)==(k[z>>2]|0)){xh(A,na);break}else{k[d>>2]=k[na>>2];k[y>>2]=d+4;break}}else ia=211;while(0);if((ia|0)==211){ia=0;h=(n|0)<0;i:do if(!h){d=n+(((n>>>0)%3|0|0)==0?2:-1)|0;if((d|0)>=0){f=k[(k[u>>2]|0)+12>>2]|0;g=d;while(1){d=k[f+(g<<2)>>2]|0;if((d|0)<=-1){f=0;d=g;break}d=d+(((d>>>0)%3|0|0)==0?2:-1)|0;if((d|0)<0){f=1;break}else g=d}if(h){g=n;ia=218;break}}else f=1;g=n+1|0;g=((g|0)%3|0|0)==0?n+-2|0:g;if((g|0)<0)ia=218;else{m=k[u>>2]|0;j=k[m+12>>2]|0;while(1){h=k[j+(g<<2)>>2]|0;if((h|0)<=-1){q=0;h=j;j=m;break i}g=h+1|0;g=((g|0)%3|0|0)==0?h+-2|0:g;if((g|0)<0){q=1;h=j;j=m;break}}}}else{f=1;g=n;d=n;ia=218}while(0);if((ia|0)==218){ia=0;j=k[u>>2]|0;q=1;h=k[j+12>>2]|0}s=c+1|0;c=c*3|0;k[pa>>2]=c;k[h+(c<<2)>>2]=n;k[h+(n<<2)>>2]=c;c=(k[pa>>2]|0)+1|0;k[h+(c<<2)>>2]=d;k[h+(d<<2)>>2]=c;c=(k[pa>>2]|0)+2|0;k[h+(c<<2)>>2]=g;k[h+(g<<2)>>2]=c;c=k[pa>>2]|0;h=d+1|0;if(!f?(la=((h|0)%3|0|0)==0?d+-2|0:h,(la|0)>=0):0)p=k[(k[j>>2]|0)+(((la>>>0)/3|0)*12|0)+(((la>>>0)%3|0)<<2)>>2]|0;else p=-1073741824;k[(k[j>>2]|0)+(((c|0)<0?-1073741824:(c>>>0)/3|0)*12|0)+(((c|0)%3|0)<<2)>>2]=p;if((p|0)>-1){n=j+24|0;h=j+28|0;f=k[h>>2]|0;d=k[n>>2]|0;j=f-d>>2;do if(j>>>0<=p>>>0){m=p+1|0;if(m>>>0>j>>>0){jh(n,m-j|0);d=k[n>>2]|0;break}if(m>>>0>>0?(qa=d+(m<<2)|0,(f|0)!=(qa|0)):0)k[h>>2]=f+(~((f+-4-qa|0)>>>2)<<2)}while(0);k[d+(p<<2)>>2]=c;c=k[pa>>2]|0;f=k[u>>2]|0}else f=j;n=c+1|0;d=g+1|0;if(!q?(ka=((d|0)%3|0|0)==0?g+-2|0:d,(ka|0)>=0):0)m=k[(k[f>>2]|0)+(((ka>>>0)/3|0)*12|0)+(((ka>>>0)%3|0)<<2)>>2]|0;else m=-1073741824;k[(k[f>>2]|0)+(((c|0)<-1?-1073741824:(n>>>0)/3|0)*12|0)+(((n|0)%3|0)<<2)>>2]=m;if((m|0)>-1){j=f+24|0;f=f+28|0;d=k[f>>2]|0;c=k[j>>2]|0;g=d-c>>2;do if(g>>>0<=m>>>0){h=m+1|0;if(h>>>0>g>>>0){jh(j,h-g|0);c=k[j>>2]|0;break}if(h>>>0>>0?(ra=c+(h<<2)|0,(d|0)!=(ra|0)):0)k[f>>2]=d+(~((d+-4-ra|0)>>>2)<<2)}while(0);k[c+(m<<2)>>2]=n;c=k[pa>>2]|0;g=k[u>>2]|0}else g=f;p=c+2|0;d=k[na>>2]|0;f=d+1|0;if((d|0)>=0?(ja=((f|0)%3|0|0)==0?d+-2|0:f,(ja|0)>=0):0)n=k[(k[g>>2]|0)+(((ja>>>0)/3|0)*12|0)+(((ja>>>0)%3|0)<<2)>>2]|0;else n=-1073741824;k[(k[g>>2]|0)+(((c|0)<-2?-1073741824:(p>>>0)/3|0)*12|0)+(((p|0)%3|0)<<2)>>2]=n;if((n|0)>-1){j=g+24|0;m=g+28|0;d=k[m>>2]|0;c=k[j>>2]|0;f=d-c>>2;do if(f>>>0<=n>>>0){g=n+1|0;h=d;if(g>>>0>f>>>0){jh(j,g-f|0);c=k[j>>2]|0;break}if(g>>>0>>0){d=c+(g<<2)|0;if((h|0)==(d|0))break;k[m>>2]=h+(~((h+-4-d|0)>>>2)<<2)}}while(0);k[c+(n<<2)>>2]=p;c=k[pa>>2]|0}if((c|0)<0)c=-1073741824;else c=k[(k[k[u>>2]>>2]|0)+(((c>>>0)/3|0)*12|0)+(((c>>>0)%3|0)<<2)>>2]|0;d=k[sa>>2]|0;ha=d+(c>>>5<<2)|0;k[ha>>2]=k[ha>>2]&~(1<<(c&31));ha=k[pa>>2]|0;c=ha+1|0;if((ha|0)<-1)c=-1073741824;else c=k[(k[k[u>>2]>>2]|0)+(((c>>>0)/3|0)*12|0)+(((c>>>0)%3|0)<<2)>>2]|0;ha=d+(c>>>5<<2)|0;k[ha>>2]=k[ha>>2]&~(1<<(c&31));ha=k[pa>>2]|0;c=ha+2|0;if((ha|0)<-2)c=-1073741824;else c=k[(k[k[u>>2]>>2]|0)+(((c>>>0)/3|0)*12|0)+(((c>>>0)%3|0)<<2)>>2]|0;d=d+(c>>>5<<2)|0;k[d>>2]=k[d>>2]&~(1<<(c&31));c=k[w>>2]|0;d=k[x>>2]|0;if((c|0)==(d<<5|0)){if((c+1|0)<0){ia=257;break}ha=d<<6;c=c+32&-32;Xg(v,d<<5>>>0<1073741823?(ha>>>0>>0?c:ha):2147483647);c=k[w>>2]|0}k[w>>2]=c+1;ha=(k[v>>2]|0)+(c>>>5<<2)|0;k[ha>>2]=k[ha>>2]|1<<(c&31);c=k[y>>2]|0;if((c|0)==(k[z>>2]|0))xh(A,pa);else{k[c>>2]=k[pa>>2];k[y>>2]=c+4}c=s}d=k[wa>>2]|0;if((d|0)==(k[ua>>2]|0)){ma=c;oa=u;break g}}if((ia|0)==257)hm(v);else if((ia|0)==267)hm(v)}else{ma=c;oa=a+8|0}while(0);sa=k[oa>>2]|0;if((ma|0)==(((k[sa+4>>2]|0)-(k[sa>>2]|0)|0)/12|0|0)){h=a+88|0;c=a+92|0;g=k[c>>2]|0;d=k[h>>2]|0;f=g-d>>2;if(e>>>0>f>>>0){jh(h,e-f|0);break}if(e>>>0>>0?(ta=d+(e<<2)|0,(g|0)!=(ta|0)):0)k[c>>2]=g+(~((g+-4-ta|0)>>>2)<<2)}else e=-1}else e=-1;while(0);c=k[va+8>>2]|0;if(c|0)do{ta=c;c=k[c>>2]|0;cn(ta)}while((c|0)!=0);c=k[va>>2]|0;k[va>>2]=0;if(c|0)cn(c);c=k[ua>>2]|0;if(!c){r=xa;return e|0}d=k[wa>>2]|0;if((d|0)!=(c|0))k[wa>>2]=d+(~((d+-4-c|0)>>>2)<<2);cn(c);r=xa;return e|0}function bb(a,b){a=a|0;b=b|0;var c=0,d=0,e=0,f=0,g=0,h=0,j=0,m=0,n=0,p=0,q=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,B=0,C=0,D=0,E=0,F=0,G=0,H=0,I=0,J=0,K=0,L=0,M=0,N=0,O=0,P=0,Q=0,R=0,S=0,T=0,U=0,V=0,W=0,X=0,Y=0,Z=0,_=0,$=0,aa=0,ba=0,ca=0,ea=0,fa=0,ga=0,ha=0,ia=0,ja=0,ka=0,la=0,ma=0,na=0,oa=0,pa=0,qa=0,ra=0,sa=0;sa=r;r=r+48|0;pa=sa+28|0;qa=sa+8|0;ia=sa+4|0;ja=sa;k[pa>>2]=0;ra=pa+4|0;k[ra>>2]=0;k[pa+8>>2]=0;k[qa>>2]=0;k[qa+4>>2]=0;k[qa+8>>2]=0;k[qa+12>>2]=0;o[qa+16>>2]=da(1.0);ma=a+136|0;ba=k[a+140>>2]|0;a:do if((b|0)>0){J=a+276|0;L=qa+4|0;M=a+8|0;N=pa+8|0;O=a+272|0;Q=a+264|0;R=a+268|0;S=a+36|0;T=a+40|0;U=b+-1|0;d=0;x=0;b:while(1){c=x+1|0;c:do if(!(i[J>>0]|0))na=89;else{f=k[O>>2]|0;h=k[Q>>2]|0;j=k[R>>2]|0;e=h+(f>>>3)|0;if(e>>>0>>0?(w=l[e>>0]|0,W=f+1|0,k[O>>2]=W,w&1<<(f&7)|0):0){e=h+(W>>>3)|0;if(e>>>0>>0){g=(l[e>>0]|0)>>>(W&7)&1;f=f+2|0;k[O>>2]=f}else{g=0;f=W}e=h+(f>>>3)|0;if(e>>>0>>0){e=(l[e>>0]|0)>>>(f&7);k[O>>2]=f+1;e=e<<1&2}else e=0;e=(e|g)<<1|1;switch(e&7){case 1:{na=89;break c}case 3:case 5:{u=k[(k[ra>>2]|0)+-4>>2]|0;w=x*3|0;p=((e|0)==5?2:1)+w|0;e=k[M>>2]|0;v=k[e+12>>2]|0;k[v+(p<<2)>>2]=u;k[v+(u<<2)>>2]=p;v=d+1|0;t=(p|0)<0;k[(k[e>>2]|0)+((t?-1073741824:(p>>>0)/3|0)*12|0)+(((p|0)%3|0)<<2)>>2]=d;if((d|0)>-1){j=e+24|0;g=e+28|0;f=k[g>>2]|0;e=k[j>>2]|0;h=f-e>>2;do if(h>>>0<=d>>>0){if(v>>>0>h>>>0){jh(j,v-h|0);e=k[j>>2]|0;break}if(v>>>0>>0?(V=e+(v<<2)|0,(f|0)!=(V|0)):0)k[g>>2]=f+(~((f+-4-V|0)>>>2)<<2)}while(0);k[e+(d<<2)>>2]=p;e=k[M>>2]|0}d=p+1|0;if(t)q=p;else q=((d|0)%3|0|0)==0?p+-2|0:d;s=(u|0)<0;if(!s?(G=(((u>>>0)%3|0|0)==0?2:-1)+u|0,(G|0)>=0):0)n=k[(k[e>>2]|0)+(((G>>>0)/3|0)*12|0)+(((G>>>0)%3|0)<<2)>>2]|0;else n=-1073741824;k[(k[e>>2]|0)+(((q|0)<0?-1073741824:(q>>>0)/3|0)*12|0)+(((q|0)%3|0)<<2)>>2]=n;if((n|0)>-1){j=e+24|0;m=e+28|0;e=k[m>>2]|0;d=k[j>>2]|0;f=e-d>>2;do if(f>>>0<=n>>>0){g=n+1|0;h=e;if(g>>>0>f>>>0){jh(j,g-f|0);d=k[j>>2]|0;break}if(g>>>0>>0){e=d+(g<<2)|0;if((h|0)==(e|0))break;k[m>>2]=h+(~((h+-4-e|0)>>>2)<<2)}}while(0);k[d+(n<<2)>>2]=q;e=k[M>>2]|0}do if(!t)if(!((p>>>0)%3|0)){p=p+2|0;break}else{p=p+-1|0;break}while(0);d=u+1|0;if(!s?(B=((d|0)%3|0|0)==0?u+-2|0:d,(B|0)>=0):0)n=k[(k[e>>2]|0)+(((B>>>0)/3|0)*12|0)+(((B>>>0)%3|0)<<2)>>2]|0;else n=-1073741824;k[(k[e>>2]|0)+(((p|0)<0?-1073741824:(p>>>0)/3|0)*12|0)+(((p|0)%3|0)<<2)>>2]=n;if((n|0)>-1){j=e+24|0;m=e+28|0;e=k[m>>2]|0;d=k[j>>2]|0;f=e-d>>2;do if(f>>>0<=n>>>0){g=n+1|0;h=e;if(g>>>0>f>>>0){jh(j,g-f|0);d=k[j>>2]|0;break}if(g>>>0>=f>>>0)break;e=d+(g<<2)|0;if((h|0)==(e|0))break;k[m>>2]=h+(~((h+-4-e|0)>>>2)<<2)}while(0);k[d+(n<<2)>>2]=p}k[(k[ra>>2]|0)+-4>>2]=w;d=v;break}case 7:{m=x*3|0;k[ia>>2]=m;f=k[M>>2]|0;n=d+1|0;e=k[f>>2]|0;k[e+(((m>>>0)/3|0)*12|0)+(((m|0)%3|0)<<2)>>2]=d;if((d|0)>-1){j=f+24|0;g=f+28|0;f=k[g>>2]|0;e=k[j>>2]|0;h=f-e>>2;do if(h>>>0<=d>>>0){if(n>>>0>h>>>0){jh(j,n-h|0);e=k[j>>2]|0;break}if(n>>>0>>0?(_=e+(n<<2)|0,(f|0)!=(_|0)):0)k[g>>2]=f+(~((f+-4-_|0)>>>2)<<2)}while(0);k[e+(d<<2)>>2]=m;f=k[M>>2]|0;g=k[ia>>2]|0;e=k[f>>2]|0}else g=m;m=g+1|0;p=d+2|0;k[e+(((g|0)<-1?-1073741824:(m>>>0)/3|0)*12|0)+(((m|0)%3|0)<<2)>>2]=n;if((d|0)>-2){j=f+24|0;g=f+28|0;f=k[g>>2]|0;e=k[j>>2]|0;h=f-e>>2;do if(h>>>0<=n>>>0){if(p>>>0>h>>>0){jh(j,p-h|0);e=k[j>>2]|0;break}if(p>>>0>>0?($=e+(p<<2)|0,(f|0)!=($|0)):0)k[g>>2]=f+(~((f+-4-$|0)>>>2)<<2)}while(0);k[e+(n<<2)>>2]=m;f=k[M>>2]|0;g=k[ia>>2]|0;e=k[f>>2]|0}m=g+2|0;d=d+3|0;k[e+(((g|0)<-2?-1073741824:(m>>>0)/3|0)*12|0)+(((m|0)%3|0)<<2)>>2]=p;if((p|0)>-1){j=f+24|0;g=f+28|0;f=k[g>>2]|0;e=k[j>>2]|0;h=f-e>>2;do if(h>>>0<=p>>>0){if(d>>>0>h>>>0){jh(j,d-h|0);e=k[j>>2]|0;break}if(d>>>0>>0?(aa=e+(d<<2)|0,(f|0)!=(aa|0)):0)k[g>>2]=f+(~((f+-4-aa|0)>>>2)<<2)}while(0);k[e+(p<<2)>>2]=m}e=k[ra>>2]|0;if((e|0)==(k[N>>2]|0))xh(pa,ia);else{k[e>>2]=k[ia>>2];k[ra>>2]=e+4}break}default:break b}j=b-x|0;m=j+-1|0;e=k[T>>2]|0;if((e|0)==(k[S>>2]|0))break;while(1){f=k[e+-8>>2]|0;if((f|0)>=(j|0)){D=-1;break a}if((f|0)!=(m|0))break c;f=i[e+-4>>0]|0;h=k[e+-12>>2]|0;k[T>>2]=e+-12;if((h|0)<0){D=-1;break a}e=k[(k[ra>>2]|0)+-4>>2]|0;g=(e|0)<0;do if(!(f&1)){if(!g)if(!((e>>>0)%3|0)){e=e+2|0;break}else{e=e+-1|0;break}}else{f=e+1|0;if(!g)e=((f|0)%3|0|0)==0?e+-2|0:f}while(0);k[ia>>2]=U-h;x=De(qa,ia)|0;k[x>>2]=e;e=k[T>>2]|0;if((e|0)==(k[S>>2]|0))break c}}t=k[(k[ra>>2]|0)+-4>>2]|0;u=(t|0)<0;d:do if(!u){e=t+(((t>>>0)%3|0|0)==0?2:-1)|0;if((e|0)<0)na=12;else{h=k[M>>2]|0;g=k[h+12>>2]|0;while(1){f=k[g+(e<<2)>>2]|0;if((f|0)<=-1){p=0;break d}e=f+(((f>>>0)%3|0|0)==0?2:-1)|0;if((e|0)<0){p=1;break}}}}else{e=t;na=12}while(0);if((na|0)==12){na=0;h=k[M>>2]|0;p=1;g=k[h+12>>2]|0}v=x*3|0;q=v+1|0;k[g+(t<<2)>>2]=q;k[g+(q<<2)>>2]=t;w=v+2|0;k[g+(e<<2)>>2]=w;k[g+(w<<2)>>2]=e;f=t+1|0;if(!u?(z=((f|0)%3|0|0)==0?t+-2|0:f,(z|0)>=0):0)s=k[(k[h>>2]|0)+(((z>>>0)/3|0)*12|0)+(((z>>>0)%3|0)<<2)>>2]|0;else s=-1073741824;k[(k[h>>2]|0)+(((v>>>0)/3|0)*12|0)+(((v|0)%3|0)<<2)>>2]=s;if((s|0)>-1){n=h+24|0;h=h+28|0;g=k[h>>2]|0;f=k[n>>2]|0;j=g-f>>2;do if(j>>>0<=s>>>0){m=s+1|0;if(m>>>0>j>>>0){jh(n,m-j|0);f=k[n>>2]|0;break}if(m>>>0>>0?(I=f+(m<<2)|0,(g|0)!=(I|0)):0)k[h>>2]=g+(~((g+-4-I|0)>>>2)<<2)}while(0);k[f+(s<<2)>>2]=v;g=k[M>>2]|0}else g=h;f=e+1|0;if(!p?(C=((f|0)%3|0|0)==0?e+-2|0:f,(C|0)>=0):0)n=k[(k[g>>2]|0)+(((C>>>0)/3|0)*12|0)+(((C>>>0)%3|0)<<2)>>2]|0;else n=-1073741824;k[(k[g>>2]|0)+(((v|0)<-1?-1073741824:(q>>>0)/3|0)*12|0)+(((q|0)%3|0)<<2)>>2]=n;if((n|0)>-1){m=g+24|0;g=g+28|0;f=k[g>>2]|0;e=k[m>>2]|0;h=f-e>>2;do if(h>>>0<=n>>>0){j=n+1|0;if(j>>>0>h>>>0){jh(m,j-h|0);e=k[m>>2]|0;break}if(j>>>0>>0?(K=e+(j<<2)|0,(f|0)!=(K|0)):0)k[g>>2]=f+(~((f+-4-K|0)>>>2)<<2)}while(0);k[e+(n<<2)>>2]=q;e=k[M>>2]|0}else e=g;if(!u?(H=(((t>>>0)%3|0|0)==0?2:-1)+t|0,(H|0)>=0):0)n=k[(k[e>>2]|0)+(((H>>>0)/3|0)*12|0)+(((H>>>0)%3|0)<<2)>>2]|0;else n=-1073741824;k[(k[e>>2]|0)+(((v|0)<-2?-1073741824:(w>>>0)/3|0)*12|0)+(((w|0)%3|0)<<2)>>2]=n;if((n|0)>-1){m=e+24|0;g=e+28|0;f=k[g>>2]|0;e=k[m>>2]|0;h=f-e>>2;do if(h>>>0<=n>>>0){j=n+1|0;if(j>>>0>h>>>0){jh(m,j-h|0);e=k[m>>2]|0;break}if(j>>>0>>0?(P=e+(j<<2)|0,(f|0)!=(P|0)):0)k[g>>2]=f+(~((f+-4-P|0)>>>2)<<2)}while(0);k[e+(n<<2)>>2]=w}if((d|0)>(ba|0)){D=-1;break a}x=(k[ma>>2]|0)+(s>>>5<<2)|0;k[x>>2]=k[x>>2]&~(1<<(s&31));k[(k[ra>>2]|0)+-4>>2]=v}while(0);if((na|0)==89){na=0;e=k[ra>>2]|0;n=e+-4|0;u=k[n>>2]|0;k[ra>>2]=n;h=k[L>>2]|0;e:do if(h){j=h+-1|0;g=(j&h|0)==0;if(g)m=j&x;else m=(x>>>0)%(h>>>0)|0;f=k[(k[qa>>2]|0)+(m<<2)>>2]|0;if(f){if(g)do{f=k[f>>2]|0;if(!f){e=n;break e}if((k[f+4>>2]&j|0)!=(m|0)){e=n;break e}}while((k[f+8>>2]|0)!=(x|0));else do{f=k[f>>2]|0;if(!f){e=n;break e}if((((k[f+4>>2]|0)>>>0)%(h>>>0)|0|0)!=(m|0)){e=n;break e}}while((k[f+8>>2]|0)!=(x|0));f=f+12|0;if((n|0)==(k[N>>2]|0)){xh(pa,f);e=k[ra>>2]|0;break}else{k[n>>2]=k[f>>2];k[ra>>2]=e;break}}else e=n}else e=n;while(0);p=k[e+-4>>2]|0;w=x*3|0;s=w+2|0;e=k[M>>2]|0;n=k[e+12>>2]|0;k[n+(p<<2)>>2]=s;k[n+(s<<2)>>2]=p;q=w+1|0;k[n+(u<<2)>>2]=q;k[n+(q<<2)>>2]=u;n=(p|0)<0;if(!n?(F=(((p>>>0)%3|0|0)==0?2:-1)+p|0,(F|0)>=0):0)v=k[(k[e>>2]|0)+(((F>>>0)/3|0)*12|0)+(((F>>>0)%3|0)<<2)>>2]|0;else v=-1073741824;k[(k[e>>2]|0)+(((w>>>0)/3|0)*12|0)+(((w|0)%3|0)<<2)>>2]=v;t=(v|0)>-1;if(t){m=e+24|0;g=e+28|0;f=k[g>>2]|0;e=k[m>>2]|0;h=f-e>>2;do if(h>>>0<=v>>>0){j=v+1|0;if(j>>>0>h>>>0){jh(m,j-h|0);e=k[m>>2]|0;break}if(j>>>0>>0?(X=e+(j<<2)|0,(f|0)!=(X|0)):0)k[g>>2]=f+(~((f+-4-X|0)>>>2)<<2)}while(0);k[e+(v<<2)>>2]=w;e=k[M>>2]|0}f=p+1|0;if(!n?(A=((f|0)%3|0|0)==0?p+-2|0:f,(A|0)>=0):0)n=k[(k[e>>2]|0)+(((A>>>0)/3|0)*12|0)+(((A>>>0)%3|0)<<2)>>2]|0;else n=-1073741824;k[(k[e>>2]|0)+(((w|0)<-1?-1073741824:(q>>>0)/3|0)*12|0)+(((q|0)%3|0)<<2)>>2]=n;if((n|0)>-1){m=e+24|0;g=e+28|0;f=k[g>>2]|0;e=k[m>>2]|0;h=f-e>>2;do if(h>>>0<=n>>>0){j=n+1|0;if(j>>>0>h>>>0){jh(m,j-h|0);e=k[m>>2]|0;break}if(j>>>0>>0?(Y=e+(j<<2)|0,(f|0)!=(Y|0)):0)k[g>>2]=f+(~((f+-4-Y|0)>>>2)<<2)}while(0);k[e+(n<<2)>>2]=q;e=k[M>>2]|0}p=(u|0)<0;if(!p?(E=(((u>>>0)%3|0|0)==0?2:-1)+u|0,(E|0)>=0):0)n=k[(k[e>>2]|0)+(((E>>>0)/3|0)*12|0)+(((E>>>0)%3|0)<<2)>>2]|0;else n=-1073741824;k[(k[e>>2]|0)+(((w|0)<-2?-1073741824:(s>>>0)/3|0)*12|0)+(((s|0)%3|0)<<2)>>2]=n;if((n|0)>-1){m=e+24|0;g=e+28|0;f=k[g>>2]|0;e=k[m>>2]|0;h=f-e>>2;do if(h>>>0<=n>>>0){j=n+1|0;if(j>>>0>h>>>0){jh(m,j-h|0);e=k[m>>2]|0;break}if(j>>>0>>0?(Z=e+(j<<2)|0,(f|0)!=(Z|0)):0)k[g>>2]=f+(~((f+-4-Z|0)>>>2)<<2)}while(0);k[e+(n<<2)>>2]=s}e=u+1|0;f:do if(!p?(y=((e|0)%3|0|0)==0?u+-2|0:e,(y|0)>=0):0){e=k[(k[k[M>>2]>>2]|0)+(((y>>>0)/3|0)*12|0)+(((y>>>0)%3|0)<<2)>>2]|0;f=k[M>>2]|0;q=v+1|0;if(t)p=y;else{j=k[f>>2]|0;m=f+12|0;g=y;while(1){k[j+(((g>>>0)/3|0)*12|0)+(((g>>>0)%3|0)<<2)>>2]=v;x=g+1|0;g=((x|0)%3|0|0)==0?g+-2|0:x;if((g|0)<0)break f;g=k[(k[m>>2]|0)+(g<<2)>>2]|0;h=g+1|0;if((g|0)<0)break f;g=((h|0)%3|0|0)==0?g+-2|0:h;if((g|0)<=-1)break f}}do{k[(k[f>>2]|0)+(((p>>>0)/3|0)*12|0)+(((p>>>0)%3|0)<<2)>>2]=v;m=f+24|0;n=f+28|0;g=k[n>>2]|0;f=k[m>>2]|0;h=g-f>>2;do if(h>>>0<=v>>>0){j=g;if(q>>>0>h>>>0){jh(m,q-h|0);f=k[m>>2]|0;break}if(q>>>0>=h>>>0)break;g=f+(q<<2)|0;if((j|0)==(g|0))break;k[n>>2]=j+(~((j+-4-g|0)>>>2)<<2)}while(0);k[f+(v<<2)>>2]=p;g=p+1|0;g=((g|0)%3|0|0)==0?p+-2|0:g;f=k[M>>2]|0;if((g|0)<0)break f;g=k[(k[f+12>>2]|0)+(g<<2)>>2]|0;h=g+1|0;if((g|0)<0)break f;p=((h|0)%3|0|0)==0?g+-2|0:h}while((p|0)>-1)}else na=139;while(0);if((na|0)==139){na=0;f=k[M>>2]|0;e=-1073741824}k[(k[f+24>>2]|0)+(e<<2)>>2]=-1073741824;k[(k[ra>>2]|0)+-4>>2]=w}if((c|0)<(b|0))x=c;else{D=d;na=196;break a}}}else{D=0;c=0;na=196}while(0);do if((na|0)==196)if((D|0)<=(ba|0)){d=k[ra>>2]|0;g:do if((d|0)!=(k[pa>>2]|0)){s=a+316|0;t=a+8|0;u=a+64|0;v=a+68|0;w=a+72|0;x=a+80|0;y=a+84|0;z=a+76|0;A=a+312|0;B=a+304|0;C=a+308|0;h:while(1){ba=d;m=k[ba+-4>>2]|0;k[ia>>2]=m;k[ra>>2]=ba+-4;do if(i[s>>0]|0){d=k[A>>2]|0;e=(k[B>>2]|0)+(d>>>3)|0;if(e>>>0<(k[C>>2]|0)>>>0?(ba=l[e>>0]|0,k[A>>2]=d+1,ba&1<<(d&7)|0):0){na=203;break}d=k[v>>2]|0;e=k[w>>2]|0;if((d|0)==(e<<5|0)){if((d+1|0)<0){na=259;break h}ba=e<<6;d=d+32&-32;Xg(u,e<<5>>>0<1073741823?(ba>>>0>>0?d:ba):2147483647);d=k[v>>2]|0}k[v>>2]=d+1;ba=(k[u>>2]|0)+(d>>>5<<2)|0;k[ba>>2]=k[ba>>2]&~(1<<(d&31));d=k[x>>2]|0;if((d|0)==(k[y>>2]|0)){xh(z,ia);break}else{k[d>>2]=k[ia>>2];k[x>>2]=d+4;break}}else na=203;while(0);if((na|0)==203){na=0;g=(m|0)<0;i:do if(!g){d=m+(((m>>>0)%3|0|0)==0?2:-1)|0;if((d|0)>=0){e=k[(k[t>>2]|0)+12>>2]|0;f=d;while(1){d=k[e+(f<<2)>>2]|0;if((d|0)<=-1){e=0;d=f;break}d=d+(((d>>>0)%3|0|0)==0?2:-1)|0;if((d|0)<0){e=1;break}else f=d}if(g){f=m;na=210;break}}else e=1;f=m+1|0;f=((f|0)%3|0|0)==0?m+-2|0:f;if((f|0)<0)na=210;else{j=k[t>>2]|0;h=k[j+12>>2]|0;while(1){g=k[h+(f<<2)>>2]|0;if((g|0)<=-1){p=0;g=h;h=j;break i}f=g+1|0;f=((f|0)%3|0|0)==0?g+-2|0:f;if((f|0)<0){p=1;g=h;h=j;break}}}}else{e=1;f=m;d=m;na=210}while(0);if((na|0)==210){na=0;h=k[t>>2]|0;p=1;g=k[h+12>>2]|0}q=c+1|0;c=c*3|0;k[ja>>2]=c;k[g+(c<<2)>>2]=m;k[g+(m<<2)>>2]=c;c=(k[ja>>2]|0)+1|0;k[g+(c<<2)>>2]=d;k[g+(d<<2)>>2]=c;c=(k[ja>>2]|0)+2|0;k[g+(c<<2)>>2]=f;k[g+(f<<2)>>2]=c;c=k[ja>>2]|0;g=d+1|0;if(!e?(fa=((g|0)%3|0|0)==0?d+-2|0:g,(fa|0)>=0):0)n=k[(k[h>>2]|0)+(((fa>>>0)/3|0)*12|0)+(((fa>>>0)%3|0)<<2)>>2]|0;else n=-1073741824;k[(k[h>>2]|0)+(((c|0)<0?-1073741824:(c>>>0)/3|0)*12|0)+(((c|0)%3|0)<<2)>>2]=n;if((n|0)>-1){m=h+24|0;g=h+28|0;e=k[g>>2]|0;d=k[m>>2]|0;h=e-d>>2;do if(h>>>0<=n>>>0){j=n+1|0;if(j>>>0>h>>>0){jh(m,j-h|0);d=k[m>>2]|0;break}if(j>>>0>>0?(ka=d+(j<<2)|0,(e|0)!=(ka|0)):0)k[g>>2]=e+(~((e+-4-ka|0)>>>2)<<2)}while(0);k[d+(n<<2)>>2]=c;c=k[ja>>2]|0;e=k[t>>2]|0}else e=h;m=c+1|0;d=f+1|0;if(!p?(ea=((d|0)%3|0|0)==0?f+-2|0:d,(ea|0)>=0):0)j=k[(k[e>>2]|0)+(((ea>>>0)/3|0)*12|0)+(((ea>>>0)%3|0)<<2)>>2]|0;else j=-1073741824;k[(k[e>>2]|0)+(((c|0)<-1?-1073741824:(m>>>0)/3|0)*12|0)+(((m|0)%3|0)<<2)>>2]=j;if((j|0)>-1){h=e+24|0;e=e+28|0;d=k[e>>2]|0;c=k[h>>2]|0;f=d-c>>2;do if(f>>>0<=j>>>0){g=j+1|0;if(g>>>0>f>>>0){jh(h,g-f|0);c=k[h>>2]|0;break}if(g>>>0>>0?(la=c+(g<<2)|0,(d|0)!=(la|0)):0)k[e>>2]=d+(~((d+-4-la|0)>>>2)<<2)}while(0);k[c+(j<<2)>>2]=m;c=k[ja>>2]|0;f=k[t>>2]|0}else f=e;n=c+2|0;d=k[ia>>2]|0;e=d+1|0;if((d|0)>=0?(ca=((e|0)%3|0|0)==0?d+-2|0:e,(ca|0)>=0):0)m=k[(k[f>>2]|0)+(((ca>>>0)/3|0)*12|0)+(((ca>>>0)%3|0)<<2)>>2]|0;else m=-1073741824;k[(k[f>>2]|0)+(((c|0)<-2?-1073741824:(n>>>0)/3|0)*12|0)+(((n|0)%3|0)<<2)>>2]=m;if((m|0)>-1){h=f+24|0;j=f+28|0;d=k[j>>2]|0;c=k[h>>2]|0;e=d-c>>2;do if(e>>>0<=m>>>0){f=m+1|0;g=d;if(f>>>0>e>>>0){jh(h,f-e|0);c=k[h>>2]|0;break}if(f>>>0>>0){d=c+(f<<2)|0;if((g|0)==(d|0))break;k[j>>2]=g+(~((g+-4-d|0)>>>2)<<2)}}while(0);k[c+(m<<2)>>2]=n;c=k[ja>>2]|0}if((c|0)<0)c=-1073741824;else c=k[(k[k[t>>2]>>2]|0)+(((c>>>0)/3|0)*12|0)+(((c>>>0)%3|0)<<2)>>2]|0;d=k[ma>>2]|0;ba=d+(c>>>5<<2)|0;k[ba>>2]=k[ba>>2]&~(1<<(c&31));ba=k[ja>>2]|0;c=ba+1|0;if((ba|0)<-1)c=-1073741824;else c=k[(k[k[t>>2]>>2]|0)+(((c>>>0)/3|0)*12|0)+(((c>>>0)%3|0)<<2)>>2]|0;ba=d+(c>>>5<<2)|0;k[ba>>2]=k[ba>>2]&~(1<<(c&31));ba=k[ja>>2]|0;c=ba+2|0;if((ba|0)<-2)c=-1073741824;else c=k[(k[k[t>>2]>>2]|0)+(((c>>>0)/3|0)*12|0)+(((c>>>0)%3|0)<<2)>>2]|0;d=d+(c>>>5<<2)|0;k[d>>2]=k[d>>2]&~(1<<(c&31));c=k[v>>2]|0;d=k[w>>2]|0;if((c|0)==(d<<5|0)){if((c+1|0)<0){na=249;break}ba=d<<6;c=c+32&-32;Xg(u,d<<5>>>0<1073741823?(ba>>>0>>0?c:ba):2147483647);c=k[v>>2]|0}k[v>>2]=c+1;ba=(k[u>>2]|0)+(c>>>5<<2)|0;k[ba>>2]=k[ba>>2]|1<<(c&31);c=k[x>>2]|0;if((c|0)==(k[y>>2]|0))xh(z,ja);else{k[c>>2]=k[ja>>2];k[x>>2]=c+4}c=q}d=k[ra>>2]|0;if((d|0)==(k[pa>>2]|0)){ga=c;ha=t;break g}}if((na|0)==249)hm(u);else if((na|0)==259)hm(u)}else{ga=c;ha=a+8|0}while(0);na=k[ha>>2]|0;if((ga|0)==(((k[na+4>>2]|0)-(k[na>>2]|0)|0)/12|0|0)){g=a+88|0;c=a+92|0;f=k[c>>2]|0;d=k[g>>2]|0;e=f-d>>2;if(D>>>0>e>>>0){jh(g,D-e|0);break}if(D>>>0>>0?(oa=d+(D<<2)|0,(f|0)!=(oa|0)):0)k[c>>2]=f+(~((f+-4-oa|0)>>>2)<<2)}else D=-1}else D=-1;while(0);c=k[qa+8>>2]|0;if(c|0)do{oa=c;c=k[c>>2]|0;cn(oa)}while((c|0)!=0);c=k[qa>>2]|0;k[qa>>2]=0;if(c|0)cn(c);c=k[pa>>2]|0;if(!c){r=sa;return D|0}d=k[ra>>2]|0;if((d|0)!=(c|0))k[ra>>2]=d+(~((d+-4-c|0)>>>2)<<2);cn(c);r=sa;return D|0}function cb(a){a=a|0;var b=0,c=0,d=0,e=0,f=0,g=0,h=0,i=0,j=0,l=0,m=0,n=0,o=0,p=0,q=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,B=0,C=0,D=0,E=0,F=0,G=0,H=0,I=0,J=0,K=0,L=0;L=r;r=r+16|0;o=L;do if(a>>>0<245){n=a>>>0<11?16:a+11&-8;a=n>>>3;t=k[4618]|0;c=t>>>a;if(c&3|0){a=(c&1^1)+a|0;c=18512+(a<<1<<2)|0;d=c+8|0;e=k[d>>2]|0;f=e+8|0;g=k[f>>2]|0;do if((c|0)!=(g|0)){if(g>>>0<(k[4622]|0)>>>0)Ba();b=g+12|0;if((k[b>>2]|0)==(e|0)){k[b>>2]=c;k[d>>2]=g;break}else Ba()}else k[4618]=t&~(1<>2]=K|3;K=e+K+4|0;k[K>>2]=k[K>>2]|1;K=f;r=L;return K|0}s=k[4620]|0;if(n>>>0>s>>>0){if(c|0){h=2<>>12&16;a=a>>>h;d=a>>>5&8;a=a>>>d;f=a>>>2&4;a=a>>>f;c=a>>>1&2;a=a>>>c;b=a>>>1&1;b=(d|h|f|c|b)+(a>>>b)|0;a=18512+(b<<1<<2)|0;c=a+8|0;f=k[c>>2]|0;h=f+8|0;d=k[h>>2]|0;do if((a|0)!=(d|0)){if(d>>>0<(k[4622]|0)>>>0)Ba();e=d+12|0;if((k[e>>2]|0)==(f|0)){k[e>>2]=a;k[c>>2]=d;i=t;break}else Ba()}else{i=t&~(1<>2]=n|3;d=f+n|0;k[d+4>>2]=g|1;k[d+g>>2]=g;if(s|0){e=k[4623]|0;b=s>>>3;c=18512+(b<<1<<2)|0;b=1<>2]|0;if(a>>>0<(k[4622]|0)>>>0)Ba();else{j=a;l=b}}else{k[4618]=i|b;j=c;l=c+8|0}k[l>>2]=e;k[j+12>>2]=e;k[e+8>>2]=j;k[e+12>>2]=c}k[4620]=g;k[4623]=d;K=h;r=L;return K|0}j=k[4619]|0;if(j){a=(j&0-j)+-1|0;J=a>>>12&16;a=a>>>J;I=a>>>5&8;a=a>>>I;K=a>>>2&4;a=a>>>K;h=a>>>1&2;a=a>>>h;i=a>>>1&1;i=k[18776+((I|J|K|h|i)+(a>>>i)<<2)>>2]|0;a=i;h=i;i=(k[i+4>>2]&-8)-n|0;while(1){b=k[a+16>>2]|0;if(!b){b=k[a+20>>2]|0;if(!b)break}K=(k[b+4>>2]&-8)-n|0;J=K>>>0>>0;a=b;h=J?b:h;i=J?K:i}e=k[4622]|0;if(h>>>0>>0)Ba();g=h+n|0;if(h>>>0>=g>>>0)Ba();f=k[h+24>>2]|0;c=k[h+12>>2]|0;do if((c|0)==(h|0)){a=h+20|0;b=k[a>>2]|0;if(!b){a=h+16|0;b=k[a>>2]|0;if(!b){m=0;break}}while(1){c=b+20|0;d=k[c>>2]|0;if(d|0){b=d;a=c;continue}c=b+16|0;d=k[c>>2]|0;if(!d)break;else{b=d;a=c}}if(a>>>0>>0)Ba();else{k[a>>2]=0;m=b;break}}else{d=k[h+8>>2]|0;if(d>>>0>>0)Ba();b=d+12|0;if((k[b>>2]|0)!=(h|0))Ba();a=c+8|0;if((k[a>>2]|0)==(h|0)){k[b>>2]=c;k[a>>2]=d;m=c;break}else Ba()}while(0);do if(f|0){b=k[h+28>>2]|0;a=18776+(b<<2)|0;if((h|0)==(k[a>>2]|0)){k[a>>2]=m;if(!m){k[4619]=j&~(1<>>0<(k[4622]|0)>>>0)Ba();b=f+16|0;if((k[b>>2]|0)==(h|0))k[b>>2]=m;else k[f+20>>2]=m;if(!m)break}a=k[4622]|0;if(m>>>0>>0)Ba();k[m+24>>2]=f;b=k[h+16>>2]|0;do if(b|0)if(b>>>0>>0)Ba();else{k[m+16>>2]=b;k[b+24>>2]=m;break}while(0);b=k[h+20>>2]|0;if(b|0)if(b>>>0<(k[4622]|0)>>>0)Ba();else{k[m+20>>2]=b;k[b+24>>2]=m;break}}while(0);if(i>>>0<16){K=i+n|0;k[h+4>>2]=K|3;K=h+K+4|0;k[K>>2]=k[K>>2]|1}else{k[h+4>>2]=n|3;k[g+4>>2]=i|1;k[g+i>>2]=i;if(s|0){d=k[4623]|0;b=s>>>3;c=18512+(b<<1<<2)|0;b=1<>2]|0;if(a>>>0<(k[4622]|0)>>>0)Ba();else{p=a;q=b}}else{k[4618]=t|b;p=c;q=c+8|0}k[q>>2]=d;k[p+12>>2]=d;k[d+8>>2]=p;k[d+12>>2]=c}k[4620]=i;k[4623]=g}K=h+8|0;r=L;return K|0}}}else if(a>>>0<=4294967231){a=a+11|0;n=a&-8;j=k[4619]|0;if(j){d=0-n|0;a=a>>>8;if(a)if(n>>>0>16777215)i=31;else{q=(a+1048320|0)>>>16&8;D=a<>>16&4;D=D<>>16&2;i=14-(p|q|i)+(D<>>15)|0;i=n>>>(i+7|0)&1|i<<1}else i=0;a=k[18776+(i<<2)>>2]|0;a:do if(!a){c=0;e=0;D=86}else{e=0;h=a;g=n<<((i|0)==31?0:25-(i>>>1)|0);c=0;while(1){a=(k[h+4>>2]&-8)-n|0;if(a>>>0>>0)if(!a){a=h;d=0;c=h;D=90;break a}else{e=h;d=a}a=k[h+20>>2]|0;h=k[h+16+(g>>>31<<2)>>2]|0;c=(a|0)==0|(a|0)==(h|0)?c:a;a=(h|0)==0;if(a){D=86;break}else g=g<<(a&1^1)}}while(0);if((D|0)==86){if((c|0)==0&(e|0)==0){a=2<>>12&16;q=q>>>l;i=q>>>5&8;q=q>>>i;m=q>>>2&4;q=q>>>m;p=q>>>1&2;q=q>>>p;c=q>>>1&1;c=k[18776+((i|l|m|p|c)+(q>>>c)<<2)>>2]|0}if(!c){i=e;h=d}else{a=e;D=90}}if((D|0)==90)while(1){D=0;q=(k[c+4>>2]&-8)-n|0;e=q>>>0>>0;d=e?q:d;a=e?c:a;e=k[c+16>>2]|0;if(e|0){c=e;D=90;continue}c=k[c+20>>2]|0;if(!c){i=a;h=d;break}else D=90}if((i|0)!=0?h>>>0<((k[4620]|0)-n|0)>>>0:0){e=k[4622]|0;if(i>>>0>>0)Ba();g=i+n|0;if(i>>>0>=g>>>0)Ba();f=k[i+24>>2]|0;c=k[i+12>>2]|0;do if((c|0)==(i|0)){a=i+20|0;b=k[a>>2]|0;if(!b){a=i+16|0;b=k[a>>2]|0;if(!b){s=0;break}}while(1){c=b+20|0;d=k[c>>2]|0;if(d|0){b=d;a=c;continue}c=b+16|0;d=k[c>>2]|0;if(!d)break;else{b=d;a=c}}if(a>>>0>>0)Ba();else{k[a>>2]=0;s=b;break}}else{d=k[i+8>>2]|0;if(d>>>0>>0)Ba();b=d+12|0;if((k[b>>2]|0)!=(i|0))Ba();a=c+8|0;if((k[a>>2]|0)==(i|0)){k[b>>2]=c;k[a>>2]=d;s=c;break}else Ba()}while(0);do if(f){b=k[i+28>>2]|0;a=18776+(b<<2)|0;if((i|0)==(k[a>>2]|0)){k[a>>2]=s;if(!s){t=j&~(1<>>0<(k[4622]|0)>>>0)Ba();b=f+16|0;if((k[b>>2]|0)==(i|0))k[b>>2]=s;else k[f+20>>2]=s;if(!s){t=j;break}}a=k[4622]|0;if(s>>>0>>0)Ba();k[s+24>>2]=f;b=k[i+16>>2]|0;do if(b|0)if(b>>>0>>0)Ba();else{k[s+16>>2]=b;k[b+24>>2]=s;break}while(0);b=k[i+20>>2]|0;if(b)if(b>>>0<(k[4622]|0)>>>0)Ba();else{k[s+20>>2]=b;k[b+24>>2]=s;t=j;break}else t=j}else t=j;while(0);do if(h>>>0>=16){k[i+4>>2]=n|3;k[g+4>>2]=h|1;k[g+h>>2]=h;b=h>>>3;if(h>>>0<256){c=18512+(b<<1<<2)|0;a=k[4618]|0;b=1<>2]|0;if(a>>>0<(k[4622]|0)>>>0)Ba();else{B=a;C=b}}else{k[4618]=a|b;B=c;C=c+8|0}k[C>>2]=g;k[B+12>>2]=g;k[g+8>>2]=B;k[g+12>>2]=c;break}b=h>>>8;if(b)if(h>>>0>16777215)b=31;else{J=(b+1048320|0)>>>16&8;K=b<>>16&4;K=K<>>16&2;b=14-(I|J|b)+(K<>>15)|0;b=h>>>(b+7|0)&1|b<<1}else b=0;c=18776+(b<<2)|0;k[g+28>>2]=b;a=g+16|0;k[a+4>>2]=0;k[a>>2]=0;a=1<>2]=g;k[g+24>>2]=c;k[g+12>>2]=g;k[g+8>>2]=g;break}a=h<<((b|0)==31?0:25-(b>>>1)|0);d=k[c>>2]|0;while(1){if((k[d+4>>2]&-8|0)==(h|0)){D=148;break}c=d+16+(a>>>31<<2)|0;b=k[c>>2]|0;if(!b){D=145;break}else{a=a<<1;d=b}}if((D|0)==145)if(c>>>0<(k[4622]|0)>>>0)Ba();else{k[c>>2]=g;k[g+24>>2]=d;k[g+12>>2]=g;k[g+8>>2]=g;break}else if((D|0)==148){b=d+8|0;a=k[b>>2]|0;K=k[4622]|0;if(a>>>0>=K>>>0&d>>>0>=K>>>0){k[a+12>>2]=g;k[b>>2]=g;k[g+8>>2]=a;k[g+12>>2]=d;k[g+24>>2]=0;break}else Ba()}}else{K=h+n|0;k[i+4>>2]=K|3;K=i+K+4|0;k[K>>2]=k[K>>2]|1}while(0);K=i+8|0;r=L;return K|0}}}else n=-1;while(0);c=k[4620]|0;if(c>>>0>=n>>>0){b=c-n|0;a=k[4623]|0;if(b>>>0>15){K=a+n|0;k[4623]=K;k[4620]=b;k[K+4>>2]=b|1;k[K+b>>2]=b;k[a+4>>2]=n|3}else{k[4620]=0;k[4623]=0;k[a+4>>2]=c|3;K=a+c+4|0;k[K>>2]=k[K>>2]|1}K=a+8|0;r=L;return K|0}h=k[4621]|0;if(h>>>0>n>>>0){I=h-n|0;k[4621]=I;K=k[4624]|0;J=K+n|0;k[4624]=J;k[J+4>>2]=I|1;k[K+4>>2]=n|3;K=K+8|0;r=L;return K|0}if(!(k[4736]|0)){k[4738]=4096;k[4737]=4096;k[4739]=-1;k[4740]=-1;k[4741]=0;k[4729]=0;a=o&-16^1431655768;k[o>>2]=a;k[4736]=a;a=4096}else a=k[4738]|0;i=n+48|0;j=n+47|0;g=a+j|0;e=0-a|0;l=g&e;if(l>>>0<=n>>>0){K=0;r=L;return K|0}a=k[4728]|0;if(a|0?(B=k[4726]|0,C=B+l|0,C>>>0<=B>>>0|C>>>0>a>>>0):0){K=0;r=L;return K|0}b:do if(!(k[4729]&4)){c=k[4624]|0;c:do if(c){d=18920;while(1){a=k[d>>2]|0;if(a>>>0<=c>>>0?(u=d+4|0,(a+(k[u>>2]|0)|0)>>>0>c>>>0):0)break;a=k[d+8>>2]|0;if(!a){D=172;break c}else d=a}c=g-h&e;if(c>>>0<2147483647){a=qj(c|0)|0;if((a|0)==((k[d>>2]|0)+(k[u>>2]|0)|0)){if((a|0)!=(-1|0)){g=c;f=a;D=190;break b}}else{b=c;D=180}}}else D=172;while(0);do if(((D|0)==172?(f=qj(0)|0,(f|0)!=(-1|0)):0)?(b=f,v=k[4737]|0,w=v+-1|0,b=((w&b|0)==0?0:(w+b&0-v)-b|0)+l|0,v=k[4726]|0,w=b+v|0,b>>>0>n>>>0&b>>>0<2147483647):0){C=k[4728]|0;if(C|0?w>>>0<=v>>>0|w>>>0>C>>>0:0)break;a=qj(b|0)|0;if((a|0)==(f|0)){g=b;D=190;break b}else D=180}while(0);d:do if((D|0)==180){c=0-b|0;do if(i>>>0>b>>>0&(b>>>0<2147483647&(a|0)!=(-1|0))?(x=k[4738]|0,x=j-b+x&0-x,x>>>0<2147483647):0)if((qj(x|0)|0)==(-1|0)){qj(c|0)|0;break d}else{b=x+b|0;break}while(0);if((a|0)!=(-1|0)){g=b;f=a;D=190;break b}}while(0);k[4729]=k[4729]|4;D=187}else D=187;while(0);if((((D|0)==187?l>>>0<2147483647:0)?(A=qj(l|0)|0,y=qj(0)|0,A>>>0>>0&((A|0)!=(-1|0)&(y|0)!=(-1|0))):0)?(z=y-A|0,z>>>0>(n+40|0)>>>0):0){g=z;f=A;D=190}if((D|0)==190){b=(k[4726]|0)+g|0;k[4726]=b;if(b>>>0>(k[4727]|0)>>>0)k[4727]=b;j=k[4624]|0;do if(j){b=18920;while(1){a=k[b>>2]|0;c=b+4|0;d=k[c>>2]|0;if((f|0)==(a+d|0)){D=200;break}e=k[b+8>>2]|0;if(!e)break;else b=e}if(((D|0)==200?(k[b+12>>2]&8|0)==0:0)?j>>>0>>0&j>>>0>=a>>>0:0){k[c>>2]=d+g;K=j+8|0;K=(K&7|0)==0?0:0-K&7;J=j+K|0;K=g-K+(k[4621]|0)|0;k[4624]=J;k[4621]=K;k[J+4>>2]=K|1;k[J+K+4>>2]=40;k[4625]=k[4740];break}b=k[4622]|0;if(f>>>0>>0){k[4622]=f;h=f}else h=b;a=f+g|0;b=18920;while(1){if((k[b>>2]|0)==(a|0)){D=208;break}b=k[b+8>>2]|0;if(!b){a=18920;break}}if((D|0)==208)if(!(k[b+12>>2]&8)){k[b>>2]=f;m=b+4|0;k[m>>2]=(k[m>>2]|0)+g;m=f+8|0;m=f+((m&7|0)==0?0:0-m&7)|0;b=a+8|0;b=a+((b&7|0)==0?0:0-b&7)|0;l=m+n|0;i=b-m-n|0;k[m+4>>2]=n|3;do if((b|0)!=(j|0)){if((b|0)==(k[4623]|0)){K=(k[4620]|0)+i|0;k[4620]=K;k[4623]=l;k[l+4>>2]=K|1;k[l+K>>2]=K;break}a=k[b+4>>2]|0;if((a&3|0)==1){g=a&-8;e=a>>>3;e:do if(a>>>0>=256){f=k[b+24>>2]|0;d=k[b+12>>2]|0;do if((d|0)==(b|0)){d=b+16|0;c=d+4|0;a=k[c>>2]|0;if(!a){a=k[d>>2]|0;if(!a){I=0;break}else c=d}while(1){d=a+20|0;e=k[d>>2]|0;if(e|0){a=e;c=d;continue}d=a+16|0;e=k[d>>2]|0;if(!e)break;else{a=e;c=d}}if(c>>>0>>0)Ba();else{k[c>>2]=0;I=a;break}}else{e=k[b+8>>2]|0;if(e>>>0>>0)Ba();a=e+12|0;if((k[a>>2]|0)!=(b|0))Ba();c=d+8|0;if((k[c>>2]|0)==(b|0)){k[a>>2]=d;k[c>>2]=e;I=d;break}else Ba()}while(0);if(!f)break;a=k[b+28>>2]|0;c=18776+(a<<2)|0;do if((b|0)!=(k[c>>2]|0)){if(f>>>0<(k[4622]|0)>>>0)Ba();a=f+16|0;if((k[a>>2]|0)==(b|0))k[a>>2]=I;else k[f+20>>2]=I;if(!I)break e}else{k[c>>2]=I;if(I|0)break;k[4619]=k[4619]&~(1<>>0>>0)Ba();k[I+24>>2]=f;a=b+16|0;c=k[a>>2]|0;do if(c|0)if(c>>>0>>0)Ba();else{k[I+16>>2]=c;k[c+24>>2]=I;break}while(0);a=k[a+4>>2]|0;if(!a)break;if(a>>>0<(k[4622]|0)>>>0)Ba();else{k[I+20>>2]=a;k[a+24>>2]=I;break}}else{c=k[b+8>>2]|0;d=k[b+12>>2]|0;a=18512+(e<<1<<2)|0;do if((c|0)!=(a|0)){if(c>>>0>>0)Ba();if((k[c+12>>2]|0)==(b|0))break;Ba()}while(0);if((d|0)==(c|0)){k[4618]=k[4618]&~(1<>>0>>0)Ba();a=d+8|0;if((k[a>>2]|0)==(b|0)){F=a;break}Ba()}while(0);k[c+12>>2]=d;k[F>>2]=c}while(0);b=b+g|0;e=g+i|0}else e=i;b=b+4|0;k[b>>2]=k[b>>2]&-2;k[l+4>>2]=e|1;k[l+e>>2]=e;b=e>>>3;if(e>>>0<256){c=18512+(b<<1<<2)|0;a=k[4618]|0;b=1<>2]|0;if(a>>>0>=(k[4622]|0)>>>0){J=a;K=b;break}Ba()}while(0);k[K>>2]=l;k[J+12>>2]=l;k[l+8>>2]=J;k[l+12>>2]=c;break}b=e>>>8;do if(!b)b=0;else{if(e>>>0>16777215){b=31;break}J=(b+1048320|0)>>>16&8;K=b<>>16&4;K=K<>>16&2;b=14-(I|J|b)+(K<>>15)|0;b=e>>>(b+7|0)&1|b<<1}while(0);d=18776+(b<<2)|0;k[l+28>>2]=b;a=l+16|0;k[a+4>>2]=0;k[a>>2]=0;a=k[4619]|0;c=1<>2]=l;k[l+24>>2]=d;k[l+12>>2]=l;k[l+8>>2]=l;break}a=e<<((b|0)==31?0:25-(b>>>1)|0);d=k[d>>2]|0;while(1){if((k[d+4>>2]&-8|0)==(e|0)){D=278;break}c=d+16+(a>>>31<<2)|0;b=k[c>>2]|0;if(!b){D=275;break}else{a=a<<1;d=b}}if((D|0)==275)if(c>>>0<(k[4622]|0)>>>0)Ba();else{k[c>>2]=l;k[l+24>>2]=d;k[l+12>>2]=l;k[l+8>>2]=l;break}else if((D|0)==278){b=d+8|0;a=k[b>>2]|0;K=k[4622]|0;if(a>>>0>=K>>>0&d>>>0>=K>>>0){k[a+12>>2]=l;k[b>>2]=l;k[l+8>>2]=a;k[l+12>>2]=d;k[l+24>>2]=0;break}else Ba()}}else{K=(k[4621]|0)+i|0;k[4621]=K;k[4624]=l;k[l+4>>2]=K|1}while(0);K=m+8|0;r=L;return K|0}else a=18920;while(1){b=k[a>>2]|0;if(b>>>0<=j>>>0?(E=b+(k[a+4>>2]|0)|0,E>>>0>j>>>0):0)break;a=k[a+8>>2]|0}e=E+-47|0;a=e+8|0;a=e+((a&7|0)==0?0:0-a&7)|0;e=j+16|0;a=a>>>0>>0?j:a;b=a+8|0;c=f+8|0;c=(c&7|0)==0?0:0-c&7;K=f+c|0;c=g+-40-c|0;k[4624]=K;k[4621]=c;k[K+4>>2]=c|1;k[K+c+4>>2]=40;k[4625]=k[4740];c=a+4|0;k[c>>2]=27;k[b>>2]=k[4730];k[b+4>>2]=k[4731];k[b+8>>2]=k[4732];k[b+12>>2]=k[4733];k[4730]=f;k[4731]=g;k[4733]=0;k[4732]=b;b=a+24|0;do{b=b+4|0;k[b>>2]=7}while((b+4|0)>>>0>>0);if((a|0)!=(j|0)){f=a-j|0;k[c>>2]=k[c>>2]&-2;k[j+4>>2]=f|1;k[a>>2]=f;b=f>>>3;if(f>>>0<256){c=18512+(b<<1<<2)|0;a=k[4618]|0;b=1<>2]|0;if(a>>>0<(k[4622]|0)>>>0)Ba();else{G=a;H=b}}else{k[4618]=a|b;G=c;H=c+8|0}k[H>>2]=j;k[G+12>>2]=j;k[j+8>>2]=G;k[j+12>>2]=c;break}b=f>>>8;if(b)if(f>>>0>16777215)c=31;else{J=(b+1048320|0)>>>16&8;K=b<>>16&4;K=K<>>16&2;c=14-(I|J|c)+(K<>>15)|0;c=f>>>(c+7|0)&1|c<<1}else c=0;d=18776+(c<<2)|0;k[j+28>>2]=c;k[j+20>>2]=0;k[e>>2]=0;b=k[4619]|0;a=1<>2]=j;k[j+24>>2]=d;k[j+12>>2]=j;k[j+8>>2]=j;break}a=f<<((c|0)==31?0:25-(c>>>1)|0);d=k[d>>2]|0;while(1){if((k[d+4>>2]&-8|0)==(f|0)){D=304;break}c=d+16+(a>>>31<<2)|0;b=k[c>>2]|0;if(!b){D=301;break}else{a=a<<1;d=b}}if((D|0)==301)if(c>>>0<(k[4622]|0)>>>0)Ba();else{k[c>>2]=j;k[j+24>>2]=d;k[j+12>>2]=j;k[j+8>>2]=j;break}else if((D|0)==304){b=d+8|0;a=k[b>>2]|0;K=k[4622]|0;if(a>>>0>=K>>>0&d>>>0>=K>>>0){k[a+12>>2]=j;k[b>>2]=j;k[j+8>>2]=a;k[j+12>>2]=d;k[j+24>>2]=0;break}else Ba()}}}else{K=k[4622]|0;if((K|0)==0|f>>>0>>0)k[4622]=f;k[4730]=f;k[4731]=g;k[4733]=0;k[4627]=k[4736];k[4626]=-1;b=0;do{K=18512+(b<<1<<2)|0;k[K+12>>2]=K;k[K+8>>2]=K;b=b+1|0}while((b|0)!=32);K=f+8|0;K=(K&7|0)==0?0:0-K&7;J=f+K|0;K=g+-40-K|0;k[4624]=J;k[4621]=K;k[J+4>>2]=K|1;k[J+K+4>>2]=40;k[4625]=k[4740]}while(0);b=k[4621]|0;if(b>>>0>n>>>0){I=b-n|0;k[4621]=I;K=k[4624]|0;J=K+n|0;k[4624]=J;k[J+4>>2]=I|1;k[K+4>>2]=n|3;K=K+8|0;r=L;return K|0}}K=ul()|0;k[K>>2]=12;K=0;r=L;return K|0}function db(a,b,c,d,e){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;var f=0,g=0,h=0,m=0,n=0.0,o=0,q=0,s=0,t=0,v=0.0,w=0,x=0,y=0,z=0,A=0,B=0,C=0,D=0,E=0,F=0,G=0,H=0,I=0,J=0,K=0,L=0,N=0,O=0,P=0,Q=0,R=0,S=0,T=0,U=0,V=0,W=0,X=0,Y=0,Z=0,_=0,aa=0,ba=0,ca=0,da=0,ea=0,fa=0,ga=0,ha=0,ia=0,ja=0;ja=r;r=r+624|0;fa=ja+24|0;ga=ja+16|0;ha=ja+588|0;X=ja+576|0;ia=ja;S=ja+536|0;N=ja+8|0;O=ja+528|0;P=(a|0)!=0;Q=S+40|0;R=Q;S=S+39|0;T=N+4|0;U=ha;V=0-U|0;W=X+12|0;X=X+11|0;Y=W;Z=Y-U|0;_=-2-U|0;aa=Y+2|0;ba=fa+288|0;ca=ha+9|0;da=ca;ea=ha+8|0;g=0;f=0;q=0;a:while(1){do if((f|0)>-1)if((g|0)>(2147483647-f|0)){f=ul()|0;k[f>>2]=75;f=-1;break}else{f=g+f|0;break}while(0);g=i[b>>0]|0;if(!(g<<24>>24)){L=243;break}else h=b;b:while(1){switch(g<<24>>24){case 37:{g=h;L=9;break b}case 0:{g=h;break b}default:{}}g=h+1|0;h=g;g=i[g>>0]|0}c:do if((L|0)==9)while(1){L=0;if((i[h+1>>0]|0)!=37)break c;g=g+1|0;h=h+2|0;if((i[h>>0]|0)==37)L=9;else break}while(0);g=g-b|0;if(P?(k[a>>2]&32|0)==0:0)qh(b,g,a)|0;if(g|0){b=h;continue}o=h+1|0;m=i[o>>0]|0;g=(m<<24>>24)+-48|0;if(g>>>0<10){t=(i[h+2>>0]|0)==36;o=t?h+3|0:o;w=t?g:-1;t=t?1:q;g=i[o>>0]|0}else{w=-1;t=q;g=m}h=(g<<24>>24)+-32|0;d:do if(h>>>0<32){m=0;do{if(!(1<>24)+-32|m;o=o+1|0;g=i[o>>0]|0;h=(g<<24>>24)+-32|0}while(h>>>0<32)}else m=0;while(0);do if(g<<24>>24!=42){h=(g<<24>>24)+-48|0;if(h>>>0<10){q=0;do{q=(q*10|0)+h|0;o=o+1|0;g=i[o>>0]|0;h=(g<<24>>24)+-48|0}while(h>>>0<10);if((q|0)<0){f=-1;break a}else K=t}else{q=0;K=t}}else{s=o+1|0;g=i[s>>0]|0;h=(g<<24>>24)+-48|0;if(h>>>0<10?(i[o+2>>0]|0)==36:0){k[e+(h<<2)>>2]=10;g=k[d+((i[s>>0]|0)+-48<<3)>>2]|0;h=1;s=o+3|0}else{if(t|0){f=-1;break a}if(!P){q=0;K=0;o=s;break}h=(k[c>>2]|0)+(4-1)&~(4-1);g=k[h>>2]|0;k[c>>2]=h+4;h=0}K=(g|0)<0;q=K?0-g|0:g;m=K?m|8192:m;K=h;o=s;g=i[s>>0]|0}while(0);e:do if(g<<24>>24==46){g=o+1|0;h=i[g>>0]|0;if(h<<24>>24!=42){o=(h<<24>>24)+-48|0;if(o>>>0<10)h=0;else{x=0;break}while(1){h=(h*10|0)+o|0;g=g+1|0;o=(i[g>>0]|0)+-48|0;if(o>>>0>=10){x=h;break e}}}g=o+2|0;h=(i[g>>0]|0)+-48|0;if(h>>>0<10?(i[o+3>>0]|0)==36:0){k[e+(h<<2)>>2]=10;x=k[d+((i[g>>0]|0)+-48<<3)>>2]|0;g=o+4|0;break}if(K|0){f=-1;break a}if(P){J=(k[c>>2]|0)+(4-1)&~(4-1);x=k[J>>2]|0;k[c>>2]=J+4}else x=0}else{x=-1;g=o}while(0);t=0;while(1){h=(i[g>>0]|0)+-65|0;if(h>>>0>57){f=-1;break a}J=g+1|0;h=i[15248+(t*58|0)+h>>0]|0;o=h&255;if((o+-1|0)>>>0<8){t=o;g=J}else break}if(!(h<<24>>24)){f=-1;break}s=(w|0)>-1;do if(h<<24>>24==19)if(s){f=-1;break a}else L=51;else{if(s){k[e+(w<<2)>>2]=o;H=d+(w<<3)|0;I=k[H+4>>2]|0;L=ia;k[L>>2]=k[H>>2];k[L+4>>2]=I;L=51;break}if(!P){f=0;break a}Re(ia,o,c)}while(0);if((L|0)==51?(L=0,!P):0){g=0;q=K;b=J;continue}E=i[g>>0]|0;E=(t|0)!=0&(E&15|0)==3?E&-33:E;s=m&-65537;I=(m&8192|0)==0?m:s;f:do switch(E|0){case 110:switch((t&255)<<24>>24){case 0:{k[k[ia>>2]>>2]=f;g=0;q=K;b=J;continue a}case 1:{k[k[ia>>2]>>2]=f;g=0;q=K;b=J;continue a}case 2:{g=k[ia>>2]|0;k[g>>2]=f;k[g+4>>2]=((f|0)<0)<<31>>31;g=0;q=K;b=J;continue a}case 3:{j[k[ia>>2]>>1]=f;g=0;q=K;b=J;continue a}case 4:{i[k[ia>>2]>>0]=f;g=0;q=K;b=J;continue a}case 6:{k[k[ia>>2]>>2]=f;g=0;q=K;b=J;continue a}case 7:{g=k[ia>>2]|0;k[g>>2]=f;k[g+4>>2]=((f|0)<0)<<31>>31;g=0;q=K;b=J;continue a}default:{g=0;q=K;b=J;continue a}}case 112:{s=120;t=x>>>0>8?x:8;g=I|8;L=63;break}case 88:case 120:{s=E;t=x;g=I;L=63;break}case 111:{h=ia;g=k[h>>2]|0;h=k[h+4>>2]|0;if((g|0)==0&(h|0)==0)b=Q;else{b=Q;do{b=b+-1|0;i[b>>0]=g&7|48;g=Zk(g|0,h|0,3)|0;h=M}while(!((g|0)==0&(h|0)==0))}if(!(I&8)){h=0;m=15728;o=x;g=I;L=76}else{o=R-b|0;h=0;m=15728;o=(x|0)>(o|0)?x:o+1|0;g=I;L=76}break}case 105:case 100:{b=ia;g=k[b>>2]|0;b=k[b+4>>2]|0;if((b|0)<0){g=al(0,0,g|0,b|0)|0;b=M;h=ia;k[h>>2]=g;k[h+4>>2]=b;h=1;m=15728;L=75;break f}if(!(I&2048)){m=I&1;h=m;m=(m|0)==0?15728:15730;L=75}else{h=1;m=15729;L=75}break}case 117:{b=ia;h=0;m=15728;g=k[b>>2]|0;b=k[b+4>>2]|0;L=75;break}case 99:{i[S>>0]=k[ia>>2];b=S;w=0;t=15728;h=Q;g=1;break}case 109:{g=ul()|0;g=Ji(k[g>>2]|0)|0;L=81;break}case 115:{g=k[ia>>2]|0;g=g|0?g:15738;L=81;break}case 67:{k[N>>2]=k[ia>>2];k[T>>2]=0;k[ia>>2]=N;s=-1;h=N;L=85;break}case 83:{g=k[ia>>2]|0;if(!x){ai(a,32,q,0,I);g=0;L=96}else{s=x;h=g;L=85}break}case 65:case 71:case 70:case 69:case 97:case 103:case 102:case 101:{n=+p[ia>>3];k[ga>>2]=0;p[u>>3]=n;if((k[u+4>>2]|0)>=0){g=I&1;if(!(I&2048)){G=g;H=(g|0)==0?15746:15751}else{G=1;H=15748}}else{n=-n;G=1;H=15745}p[u>>3]=n;F=k[u+4>>2]&2146435072;do if(F>>>0<2146435072|(F|0)==2146435072&0<0){v=+Qm(n,ga)*2.0;b=v!=0.0;if(b)k[ga>>2]=(k[ga>>2]|0)+-1;z=E|32;if((z|0)==97){o=E&32;w=(o|0)==0?H:H+9|0;t=G|2;g=12-x|0;do if(!(x>>>0>11|(g|0)==0)){n=8.0;do{g=g+-1|0;n=n*16.0}while((g|0)!=0);if((i[w>>0]|0)==45){n=-(n+(-v-n));break}else{n=v+n-n;break}}else n=v;while(0);b=k[ga>>2]|0;g=(b|0)<0?0-b|0:b;g=ui(g,((g|0)<0)<<31>>31,W)|0;if((g|0)==(W|0)){i[X>>0]=48;g=X}i[g+-1>>0]=(b>>31&2)+43;s=g+-2|0;i[s>>0]=E+15;m=(x|0)<1;h=(I&8|0)==0;g=ha;do{H=~~n;b=g+1|0;i[g>>0]=l[15712+H>>0]|o;n=(n-+(H|0))*16.0;do if((b-U|0)==1){if(h&(m&n==0.0)){g=b;break}i[b>>0]=46;g=g+2|0}else g=b;while(0)}while(n!=0.0);m=s;h=(x|0)!=0&(_+g|0)<(x|0)?aa+x-m|0:Z-m+g|0;o=h+t|0;ai(a,32,q,o,I);if(!(k[a>>2]&32))qh(w,t,a)|0;ai(a,48,q,o,I^65536);b=g-U|0;if(!(k[a>>2]&32))qh(ha,b,a)|0;g=Y-m|0;ai(a,48,h-(b+g)|0,0,0);if(!(k[a>>2]&32))qh(s,g,a)|0;ai(a,32,q,o,I^8192);g=(o|0)<(q|0)?q:o;break}g=(x|0)<0?6:x;if(b){b=(k[ga>>2]|0)+-28|0;k[ga>>2]=b;n=v*268435456.0}else{n=v;b=k[ga>>2]|0}F=(b|0)<0?fa:ba;h=F;do{D=~~n>>>0;k[h>>2]=D;h=h+4|0;n=(n-+(D>>>0))*1.0e9}while(n!=0.0);if((b|0)>0){m=F;s=h;while(1){o=(b|0)>29?29:b;b=s+-4|0;do if(b>>>0>=m>>>0){h=0;do{C=Tk(k[b>>2]|0,0,o|0)|0;C=sl(C|0,M|0,h|0,0)|0;D=M;B=nk(C|0,D|0,1e9,0)|0;k[b>>2]=B;h=dm(C|0,D|0,1e9,0)|0;b=b+-4|0}while(b>>>0>=m>>>0);if(!h)break;m=m+-4|0;k[m>>2]=h}while(0);h=s;while(1){if(h>>>0<=m>>>0)break;b=h+-4|0;if(!(k[b>>2]|0))h=b;else break}b=(k[ga>>2]|0)-o|0;k[ga>>2]=b;if((b|0)>0)s=h;else break}}else m=F;if((b|0)<0){x=((g+25|0)/9|0)+1|0;y=(z|0)==102;do{w=0-b|0;w=(w|0)>9?9:w;do if(m>>>0>>0){o=(1<>>w;t=0;b=m;do{D=k[b>>2]|0;k[b>>2]=(D>>>w)+t;t=$(D&o,s)|0;b=b+4|0}while(b>>>0>>0);b=(k[m>>2]|0)==0?m+4|0:m;if(!t){m=b;b=h;break}k[h>>2]=t;m=b;b=h+4|0}else{m=(k[m>>2]|0)==0?m+4|0:m;b=h}while(0);h=y?F:m;h=(b-h>>2|0)>(x|0)?h+(x<<2)|0:b;b=(k[ga>>2]|0)+w|0;k[ga>>2]=b}while((b|0)<0)}D=F;do if(m>>>0>>0){b=(D-m>>2)*9|0;s=k[m>>2]|0;if(s>>>0<10)break;else o=10;do{o=o*10|0;b=b+1|0}while(s>>>0>=o>>>0)}else b=0;while(0);A=(z|0)==103;B=(g|0)!=0;o=g-((z|0)!=102?b:0)+((B&A)<<31>>31)|0;if((o|0)<(((h-D>>2)*9|0)+-9|0)){o=o+9216|0;t=F+4+(((o|0)/9|0)+-1024<<2)|0;o=((o|0)%9|0)+1|0;if((o|0)<9){s=10;do{s=s*10|0;o=o+1|0}while((o|0)!=9)}else s=10;x=k[t>>2]|0;y=(x>>>0)%(s>>>0)|0;o=(t+4|0)==(h|0);do if(o&(y|0)==0)o=t;else{v=(((x>>>0)/(s>>>0)|0)&1|0)==0?9007199254740992.0:9007199254740994.0;w=(s|0)/2|0;if(y>>>0>>0)n=.5;else n=o&(y|0)==(w|0)?1.0:1.5;do if(G){if((i[H>>0]|0)!=45)break;n=-n;v=-v}while(0);o=x-y|0;k[t>>2]=o;if(!(v+n!=v)){o=t;break}C=o+s|0;k[t>>2]=C;if(C>>>0>999999999){o=t;while(1){b=o+-4|0;k[o>>2]=0;if(b>>>0>>0){m=m+-4|0;k[m>>2]=0}C=(k[b>>2]|0)+1|0;k[b>>2]=C;if(C>>>0>999999999)o=b;else{t=b;break}}}b=(D-m>>2)*9|0;s=k[m>>2]|0;if(s>>>0<10){o=t;break}else o=10;do{o=o*10|0;b=b+1|0}while(s>>>0>=o>>>0);o=t}while(0);C=o+4|0;h=h>>>0>C>>>0?C:h}y=0-b|0;C=h;while(1){if(C>>>0<=m>>>0){z=0;break}h=C+-4|0;if(!(k[h>>2]|0))C=h;else{z=1;break}}do if(A){g=(B&1^1)+g|0;if((g|0)>(b|0)&(b|0)>-5){t=E+-1|0;g=g+-1-b|0}else{t=E+-2|0;g=g+-1|0}h=I&8;if(h|0){w=h;break}do if(z){s=k[C+-4>>2]|0;if(!s){o=9;break}if(!((s>>>0)%10|0)){o=0;h=10}else{o=0;break}do{h=h*10|0;o=o+1|0}while(!((s>>>0)%(h>>>0)|0|0))}else o=9;while(0);h=((C-D>>2)*9|0)+-9|0;if((t|32|0)==102){w=h-o|0;w=(w|0)<0?0:w;g=(g|0)<(w|0)?g:w;w=0;break}else{w=h+b-o|0;w=(w|0)<0?0:w;g=(g|0)<(w|0)?g:w;w=0;break}}else{t=E;w=I&8}while(0);x=g|w;o=(x|0)!=0&1;s=(t|32|0)==102;if(s){y=0;b=(b|0)>0?b:0}else{h=(b|0)<0?y:b;h=ui(h,((h|0)<0)<<31>>31,W)|0;if((Y-h|0)<2)do{h=h+-1|0;i[h>>0]=48}while((Y-h|0)<2);i[h+-1>>0]=(b>>31&2)+43;b=h+-2|0;i[b>>0]=t;y=b;b=Y-b|0}A=G+1+g+o+b|0;ai(a,32,q,A,I);if(!(k[a>>2]&32))qh(H,G,a)|0;ai(a,48,q,A,I^65536);do if(s){m=m>>>0>F>>>0?F:m;h=m;do{b=ui(k[h>>2]|0,0,ca)|0;do if((h|0)==(m|0)){if((b|0)!=(ca|0))break;i[ea>>0]=48;b=ea}else{if(b>>>0<=ha>>>0)break;Vi(ha|0,48,b-U|0)|0;do b=b+-1|0;while(b>>>0>ha>>>0)}while(0);if(!(k[a>>2]&32))qh(b,da-b|0,a)|0;h=h+4|0}while(h>>>0<=F>>>0);do if(x|0){if(k[a>>2]&32|0)break;qh(15780,1,a)|0}while(0);if((g|0)>0&h>>>0>>0)while(1){b=ui(k[h>>2]|0,0,ca)|0;if(b>>>0>ha>>>0){Vi(ha|0,48,b-U|0)|0;do b=b+-1|0;while(b>>>0>ha>>>0)}if(!(k[a>>2]&32))qh(b,(g|0)>9?9:g,a)|0;h=h+4|0;b=g+-9|0;if(!((g|0)>9&h>>>0>>0)){g=b;break}else g=b}ai(a,48,g+9|0,9,0)}else{t=z?C:m+4|0;if((g|0)>-1){s=(w|0)==0;o=m;do{b=ui(k[o>>2]|0,0,ca)|0;if((b|0)==(ca|0)){i[ea>>0]=48;b=ea}do if((o|0)==(m|0)){h=b+1|0;if(!(k[a>>2]&32))qh(b,1,a)|0;if(s&(g|0)<1){b=h;break}if(k[a>>2]&32|0){b=h;break}qh(15780,1,a)|0;b=h}else{if(b>>>0<=ha>>>0)break;Vi(ha|0,48,b+V|0)|0;do b=b+-1|0;while(b>>>0>ha>>>0)}while(0);h=da-b|0;if(!(k[a>>2]&32))qh(b,(g|0)>(h|0)?h:g,a)|0;g=g-h|0;o=o+4|0}while(o>>>0>>0&(g|0)>-1)}ai(a,48,g+18|0,18,0);if(k[a>>2]&32|0)break;qh(y,Y-y|0,a)|0}while(0);ai(a,32,q,A,I^8192);g=(A|0)<(q|0)?q:A}else{o=(E&32|0)!=0;m=n!=n|0.0!=0.0;b=m?0:G;h=b+3|0;ai(a,32,q,h,s);g=k[a>>2]|0;if(!(g&32)){qh(H,b,a)|0;g=k[a>>2]|0}if(!(g&32))qh(m?(o?15772:15776):o?15764:15768,3,a)|0;ai(a,32,q,h,I^8192);g=(h|0)<(q|0)?q:h}while(0);q=K;b=J;continue a}default:{w=0;t=15728;h=Q;g=x;s=I}}while(0);g:do if((L|0)==63){m=ia;h=k[m>>2]|0;m=k[m+4>>2]|0;o=s&32;if((h|0)==0&(m|0)==0){b=Q;h=0;m=0}else{b=Q;do{b=b+-1|0;i[b>>0]=l[15712+(h&15)>>0]|o;h=Zk(h|0,m|0,4)|0;m=M}while(!((h|0)==0&(m|0)==0));m=ia;h=k[m>>2]|0;m=k[m+4>>2]|0}m=(g&8|0)==0|(h|0)==0&(m|0)==0;h=m?0:2;m=m?15728:15728+(s>>4)|0;o=t;L=76}else if((L|0)==75){b=ui(g,b,Q)|0;o=x;g=I;L=76}else if((L|0)==81){L=0;I=Wg(g,0,x)|0;H=(I|0)==0;b=g;w=0;t=15728;h=H?g+x|0:I;g=H?x:I-g|0}else if((L|0)==85){L=0;o=h;g=0;b=0;while(1){m=k[o>>2]|0;if(!m)break;b=Wl(O,m)|0;if((b|0)<0|b>>>0>(s-g|0)>>>0)break;g=b+g|0;if(s>>>0>g>>>0)o=o+4|0;else break}if((b|0)<0){f=-1;break a}ai(a,32,q,g,I);if(!g){g=0;L=96}else{m=0;while(1){b=k[h>>2]|0;if(!b){L=96;break g}b=Wl(O,b)|0;m=b+m|0;if((m|0)>(g|0)){L=96;break g}if(!(k[a>>2]&32))qh(O,b,a)|0;if(m>>>0>=g>>>0){L=96;break}else h=h+4|0}}}while(0);if((L|0)==96){L=0;ai(a,32,q,g,I^8192);g=(q|0)>(g|0)?q:g;q=K;b=J;continue}if((L|0)==76){L=0;s=(o|0)>-1?g&-65537:g;g=ia;g=(k[g>>2]|0)!=0|(k[g+4>>2]|0)!=0;if((o|0)!=0|g){g=(g&1^1)+(R-b)|0;w=h;t=m;h=Q;g=(o|0)>(g|0)?o:g}else{b=Q;w=h;t=m;h=Q;g=0}}o=h-b|0;h=(g|0)<(o|0)?o:g;m=h+w|0;g=(q|0)<(m|0)?m:q;ai(a,32,g,m,s);if(!(k[a>>2]&32))qh(t,w,a)|0;ai(a,48,g,m,s^65536);ai(a,48,h,o,0);if(!(k[a>>2]&32))qh(b,o,a)|0;ai(a,32,g,m,s^8192);q=K;b=J}h:do if((L|0)==243)if(!a)if(!q)f=0;else{f=1;while(1){g=k[e+(f<<2)>>2]|0;if(!g)break;Re(d+(f<<3)|0,g,c);f=f+1|0;if((f|0)>=10){f=1;break h}}while(1){if(k[e+(f<<2)>>2]|0){f=-1;break h}f=f+1|0;if((f|0)>=10){f=1;break}}}while(0);r=ja;return f|0}function eb(a){a=a|0;var b=0,c=0,d=0,e=0,f=0,g=0,h=0,i=0,j=0;j=r;r=r+16|0;b=j;h=j+8|0;c=j+4|0;k[h>>2]=a;do if(a>>>0>=212){g=(a>>>0)/210|0;e=g*210|0;k[c>>2]=a-e;d=(tj(6232,6424,c,b)|0)-6232>>2;a=0;f=d;e=(k[6232+(d<<2)>>2]|0)+e|0;a:while(1){b=5;while(1){if(b>>>0>=47){d=211;i=8;break}c=k[6040+(b<<2)>>2]|0;d=(e>>>0)/(c>>>0)|0;if(d>>>0>>0){i=107;break a}if((e|0)==($(d,c)|0))break;else b=b+1|0}b:do if((i|0)==8){c:while(1){i=0;b=(e>>>0)/(d>>>0)|0;do if(b>>>0>=d>>>0)if((e|0)!=($(b,d)|0)){b=d+10|0;c=(e>>>0)/(b>>>0)|0;if(c>>>0>=b>>>0)if((e|0)!=($(c,b)|0)){b=d+12|0;c=(e>>>0)/(b>>>0)|0;if(c>>>0>=b>>>0)if((e|0)!=($(c,b)|0)){b=d+16|0;c=(e>>>0)/(b>>>0)|0;if(c>>>0>=b>>>0)if((e|0)!=($(c,b)|0)){b=d+18|0;c=(e>>>0)/(b>>>0)|0;if(c>>>0>=b>>>0)if((e|0)!=($(c,b)|0)){b=d+22|0;c=(e>>>0)/(b>>>0)|0;if(c>>>0>=b>>>0)if((e|0)!=($(c,b)|0)){b=d+28|0;c=(e>>>0)/(b>>>0)|0;if(c>>>0>=b>>>0)if((e|0)==($(c,b)|0))c=9;else{b=d+30|0;c=(e>>>0)/(b>>>0)|0;if(c>>>0>>0){c=1;a=e;break}if((e|0)==($(c,b)|0)){c=9;break}b=d+36|0;c=(e>>>0)/(b>>>0)|0;if(c>>>0>>0){c=1;a=e;break}if((e|0)==($(c,b)|0)){c=9;break}b=d+40|0;c=(e>>>0)/(b>>>0)|0;if(c>>>0>>0){c=1;a=e;break}if((e|0)==($(c,b)|0)){c=9;break}b=d+42|0;c=(e>>>0)/(b>>>0)|0;if(c>>>0>>0){c=1;a=e;break}if((e|0)==($(c,b)|0)){c=9;break}b=d+46|0;c=(e>>>0)/(b>>>0)|0;if(c>>>0>>0){c=1;a=e;break}if((e|0)==($(c,b)|0)){c=9;break}b=d+52|0;c=(e>>>0)/(b>>>0)|0;if(c>>>0>>0){c=1;a=e;break}if((e|0)==($(c,b)|0)){c=9;break}b=d+58|0;c=(e>>>0)/(b>>>0)|0;if(c>>>0>>0){c=1;a=e;break}if((e|0)==($(c,b)|0)){c=9;break}b=d+60|0;c=(e>>>0)/(b>>>0)|0;if(c>>>0>>0){c=1;a=e;break}if((e|0)==($(c,b)|0)){c=9;break}b=d+66|0;c=(e>>>0)/(b>>>0)|0;if(c>>>0>>0){c=1;a=e;break}if((e|0)==($(c,b)|0)){c=9;break}b=d+70|0;c=(e>>>0)/(b>>>0)|0;if(c>>>0>>0){c=1;a=e;break}if((e|0)==($(c,b)|0)){c=9;break}b=d+72|0;c=(e>>>0)/(b>>>0)|0;if(c>>>0>>0){c=1;a=e;break}if((e|0)==($(c,b)|0)){c=9;break}b=d+78|0;c=(e>>>0)/(b>>>0)|0;if(c>>>0>>0){c=1;a=e;break}if((e|0)==($(c,b)|0)){c=9;break}b=d+82|0;c=(e>>>0)/(b>>>0)|0;if(c>>>0>>0){c=1;a=e;break}if((e|0)==($(c,b)|0)){c=9;break}b=d+88|0;c=(e>>>0)/(b>>>0)|0;if(c>>>0>>0){c=1;a=e;break}if((e|0)==($(c,b)|0)){c=9;break}b=d+96|0;c=(e>>>0)/(b>>>0)|0;if(c>>>0>>0){c=1;a=e;break}if((e|0)==($(c,b)|0)){c=9;break}b=d+100|0;c=(e>>>0)/(b>>>0)|0;if(c>>>0>>0){c=1;a=e;break}if((e|0)==($(c,b)|0)){c=9;break}b=d+102|0;c=(e>>>0)/(b>>>0)|0;if(c>>>0>>0){c=1;a=e;break}if((e|0)==($(c,b)|0)){c=9;break}b=d+106|0;c=(e>>>0)/(b>>>0)|0;if(c>>>0>>0){c=1;a=e;break}if((e|0)==($(c,b)|0)){c=9;break}b=d+108|0;c=(e>>>0)/(b>>>0)|0;if(c>>>0>>0){c=1;a=e;break}if((e|0)==($(c,b)|0)){c=9;break}b=d+112|0;c=(e>>>0)/(b>>>0)|0;if(c>>>0>>0){c=1;a=e;break}if((e|0)==($(c,b)|0)){c=9;break}b=d+120|0;c=(e>>>0)/(b>>>0)|0;if(c>>>0>>0){c=1;a=e;break}if((e|0)==($(c,b)|0)){c=9;break}b=d+126|0;c=(e>>>0)/(b>>>0)|0;if(c>>>0>>0){c=1;a=e;break}if((e|0)==($(c,b)|0)){c=9;break}b=d+130|0;c=(e>>>0)/(b>>>0)|0;if(c>>>0>>0){c=1;a=e;break}if((e|0)==($(c,b)|0)){c=9;break}b=d+136|0;c=(e>>>0)/(b>>>0)|0;if(c>>>0>>0){c=1;a=e;break}if((e|0)==($(c,b)|0)){c=9;break}b=d+138|0;c=(e>>>0)/(b>>>0)|0;if(c>>>0>>0){c=1;a=e;break}if((e|0)==($(c,b)|0)){c=9;break}b=d+142|0;c=(e>>>0)/(b>>>0)|0;if(c>>>0>>0){c=1;a=e;break}if((e|0)==($(c,b)|0)){c=9;break}b=d+148|0;c=(e>>>0)/(b>>>0)|0;if(c>>>0>>0){c=1;a=e;break}if((e|0)==($(c,b)|0)){c=9;break}b=d+150|0;c=(e>>>0)/(b>>>0)|0;if(c>>>0>>0){c=1;a=e;break}if((e|0)==($(c,b)|0)){c=9;break}b=d+156|0;c=(e>>>0)/(b>>>0)|0;if(c>>>0>>0){c=1;a=e;break}if((e|0)==($(c,b)|0)){c=9;break}b=d+162|0;c=(e>>>0)/(b>>>0)|0;if(c>>>0>>0){c=1;a=e;break}if((e|0)==($(c,b)|0)){c=9;break}b=d+166|0;c=(e>>>0)/(b>>>0)|0;if(c>>>0>>0){c=1;a=e;break}if((e|0)==($(c,b)|0)){c=9;break}b=d+168|0;c=(e>>>0)/(b>>>0)|0;if(c>>>0>>0){c=1;a=e;break}if((e|0)==($(c,b)|0)){c=9;break}b=d+172|0;c=(e>>>0)/(b>>>0)|0;if(c>>>0>>0){c=1;a=e;break}if((e|0)==($(c,b)|0)){c=9;break}b=d+178|0;c=(e>>>0)/(b>>>0)|0;if(c>>>0>>0){c=1;a=e;break}if((e|0)==($(c,b)|0)){c=9;break}b=d+180|0;c=(e>>>0)/(b>>>0)|0;if(c>>>0>>0){c=1;a=e;break}if((e|0)==($(c,b)|0)){c=9;break}b=d+186|0;c=(e>>>0)/(b>>>0)|0;if(c>>>0>>0){c=1;a=e;break}if((e|0)==($(c,b)|0)){c=9;break}b=d+190|0;c=(e>>>0)/(b>>>0)|0;if(c>>>0>>0){c=1;a=e;break}if((e|0)==($(c,b)|0)){c=9;break}b=d+192|0;c=(e>>>0)/(b>>>0)|0;if(c>>>0>>0){c=1;a=e;break}if((e|0)==($(c,b)|0)){c=9;break}b=d+196|0;c=(e>>>0)/(b>>>0)|0;if(c>>>0>>0){c=1;a=e;break}if((e|0)==($(c,b)|0)){c=9;break}b=d+198|0;c=(e>>>0)/(b>>>0)|0;if(c>>>0>>0){c=1;a=e;break}if((e|0)==($(c,b)|0)){c=9;break}b=d+208|0;c=(e>>>0)/(b>>>0)|0;if(c>>>0>>0){c=1;a=e;break}c=(e|0)==($(c,b)|0);b=c?b:d+210|0;c=c?9:0}else{c=1;a=e}}else c=9;else{c=1;a=e}}else c=9;else{c=1;a=e}}else c=9;else{c=1;a=e}}else c=9;else{c=1;a=e}}else c=9;else{c=1;a=e}}else{b=d;c=9}else{b=d;c=1;a=e}while(0);switch(c&15){case 9:break b;case 0:{d=b;i=8;break}default:break c}}if(c){i=108;break a}}while(0);d=f+1|0;c=(d|0)==48;e=(c&1)+g|0;d=c?0:d;f=d;g=e;e=(k[6232+(d<<2)>>2]|0)+(e*210|0)|0}if((i|0)==107){k[h>>2]=e;a=e;break}else if((i|0)==108){k[h>>2]=e;break}}else{a=tj(6040,6232,h,b)|0;a=k[a>>2]|0}while(0);r=j;return a|0}function fb(a,b,c,d,e,f){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;f=f|0;var g=0,h=0,j=0,m=0,n=0,o=0,p=0,q=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,B=0,C=0,D=0,E=0,F=0,G=0,H=0,I=0,J=0,K=0,L=0,M=0,N=0,O=0,P=0,Q=0,R=0,S=0,T=0,U=0,V=0,W=0,X=0,Y=0,Z=0,_=0,aa=0,ba=0,ca=0,da=0,ea=0,fa=0,ga=0,ha=0;ha=r;r=r+112|0;V=ha+100|0;U=ha+96|0;ga=ha+48|0;fa=ha+32|0;Y=ha+104|0;Z=ha+8|0;W=ha+4|0;X=ha;ea=a+8|0;k[ea>>2]=e;do if(d|0){f=k[b>>2]|0;m=a+16|0;k[m>>2]=f;n=a+12|0;k[n>>2]=f;if((d|0)>1){j=1;h=f;while(1){g=k[b+(j<<2)>>2]|0;if((g|0)>=(h|0))if((g|0)>(f|0)){k[m>>2]=g;f=g;g=h}else g=h;else k[n>>2]=g;j=j+1|0;if((j|0)==(d|0))break;else h=g}}else g=f;T=1-g+f|0;k[a+20>>2]=T;f=(T|0)/2|0;g=a+24|0;k[g>>2]=f;k[a+28>>2]=0-f;if(!(T&1))k[g>>2]=f+-1;f=a+32|0;g=a+36|0;m=k[g>>2]|0;h=k[f>>2]|0;j=m-h>>2;if(j>>>0>>0){jh(f,e-j|0);break}if(j>>>0>e>>>0?(o=h+(e<<2)|0,(m|0)!=(o|0)):0)k[g>>2]=m+(~((m+-4-o|0)>>>2)<<2)}while(0);S=k[a+48>>2]|0;T=k[a+52>>2]|0;f=ga;g=f+48|0;do{k[f>>2]=0;f=f+4|0}while((f|0)<(g|0));if(!e){f=0;g=0}else{jh(ga,e);f=k[ga+12>>2]|0;g=k[ga+16>>2]|0}h=ga+16|0;j=g-f>>2;if(j>>>0>=e>>>0){if(j>>>0>e>>>0?(p=f+(e<<2)|0,(g|0)!=(p|0)):0)k[h>>2]=g+(~((g+-4-p|0)>>>2)<<2)}else jh(ga+12|0,e-j|0);f=ga+24|0;g=ga+28|0;m=k[g>>2]|0;j=k[f>>2]|0;h=m-j>>2;if(h>>>0>=e>>>0){if(h>>>0>e>>>0?(q=j+(e<<2)|0,(m|0)!=(q|0)):0)k[g>>2]=m+(~((m+-4-q|0)>>>2)<<2)}else jh(f,e-h|0);f=ga+36|0;g=ga+40|0;m=k[g>>2]|0;j=k[f>>2]|0;h=m-j>>2;if(h>>>0>=e>>>0){if(h>>>0>e>>>0?(s=j+(e<<2)|0,(m|0)!=(s|0)):0)k[g>>2]=m+(~((m+-4-s|0)>>>2)<<2)}else jh(f,e-h|0);bj(fa,e);A=a+56|0;g=k[A>>2]|0;j=k[g+4>>2]|0;h=k[g>>2]|0;f=j-h|0;a:do if((f|0)>4){B=S+64|0;C=S+28|0;D=(e|0)>0;E=Z+4|0;F=Z+8|0;G=Z+12|0;H=a+16|0;I=a+32|0;J=a+12|0;K=a+28|0;L=a+20|0;M=a+24|0;N=Z+16|0;O=fa+4|0;P=Y+1|0;Q=e<<2;v=f>>2;f=j;b:while(1){z=v+-1|0;if(f-h>>2>>>0<=z>>>0){R=22;break}t=k[h+(z<<2)>>2]|0;p=t+((t|0)<0?0:((t>>>0)%3|0|0)==0?2:-1)|0;u=p>>>5;q=1<<(p&31);s=(p|0)<0;o=1;f=0;g=t;c:while(1){do{if((g|0)<=-1){x=f;break c}j=k[ga+(f*12|0)>>2]|0;if(((k[(k[S>>2]|0)+(g>>>5<<2)>>2]&1<<(g&31)|0)==0?(aa=k[(k[(k[B>>2]|0)+12>>2]|0)+(g<<2)>>2]|0,(aa|0)>=0):0)?(da=k[C>>2]|0,y=k[T>>2]|0,ba=k[y+(k[da+(aa<<2)>>2]<<2)>>2]|0,ca=aa+1|0,ca=k[y+(k[da+((((ca|0)%3|0|0)==0?aa+-2|0:ca)<<2)>>2]<<2)>>2]|0,da=k[y+(k[da+((((aa>>>0)%3|0|0)==0?2:-1)+aa<<2)>>2]<<2)>>2]|0,(ba|0)<(z|0)&(ca|0)<(z|0)&(da|0)<(z|0)):0){m=$(ba,e)|0;n=$(ca,e)|0;d=$(da,e)|0;if(D){h=0;do{k[j+(h<<2)>>2]=(k[b+(h+d<<2)>>2]|0)+(k[b+(h+n<<2)>>2]|0)-(k[b+(h+m<<2)>>2]|0);h=h+1|0}while((h|0)!=(e|0))}f=f+1|0;if((f|0)==4){x=4;break c}}do if(o){h=g+1|0;g=((h|0)%3|0|0)==0?g+-2|0:h;h=k[S>>2]|0;if(!(k[h+(g>>>5<<2)>>2]&1<<(g&31))){if((g|0)>=0){g=k[(k[(k[B>>2]|0)+12>>2]|0)+(g<<2)>>2]|0;j=g+1|0;if((g|0)>=0)g=((j|0)%3|0|0)==0?g+-2|0:j}}else g=-1073741824}else{g=(((g>>>0)%3|0|0)==0?2:-1)+g|0;h=k[S>>2]|0;if(!(k[h+(g>>>5<<2)>>2]&1<<(g&31))){if((g|0)>=0){g=k[(k[(k[B>>2]|0)+12>>2]|0)+(g<<2)>>2]|0;if((g|0)>=0)if(!((g>>>0)%3|0)){g=g+2|0;break}else{g=g+-1|0;break}}}else g=-1073741824}while(0);if((g|0)==(t|0)){x=f;break c}}while(!(o&(g|0)<0));g=(q&k[h+(u<<2)>>2]|0)!=0;if(g|s){o=0;g=g?-1073741824:p;continue}g=k[(k[(k[B>>2]|0)+12>>2]|0)+(p<<2)>>2]|0;if((g|0)<0){o=0;continue}if(!((g>>>0)%3|0)){o=0;g=g+2|0;continue}else{o=0;g=g+-1|0;continue}}y=$(z,e)|0;k[Z>>2]=2147483647;i[E>>0]=0;k[F>>2]=0;k[F+4>>2]=0;k[F+8>>2]=0;k[F+12>>2]=0;h=$(v+-2|0,e)|0;if(D){g=0;f=0;do{w=(k[b+(g+y<<2)>>2]|0)-(k[b+(g+h<<2)>>2]|0)|0;f=((w|0)>-1?w:0-w|0)+f|0;g=g+1|0}while((g|0)!=(e|0))}else f=0;k[Z>>2]=f;i[E>>0]=0;k[F>>2]=0;w=b+(h<<2)|0;lf(G,w,w+(e<<2)|0);if((x|0)>=1){p=Y+x|0;o=p+-1|0;q=(o|0)==(Y|0);s=p+-2|0;t=P>>>0>>0;u=o>>>0>Y>>>0;v=0;w=1;while(1){v=v+1|0;Vi(Y|0,1,x|0)|0;Vi(Y|0,0,v|0)|0;d:while(1){if(D){Vi(k[fa>>2]|0,0,Q|0)|0;m=k[fa>>2]|0;j=0;f=0;do{if(!(i[Y+j>>0]|0)){h=k[ga+(j*12|0)>>2]|0;g=0;do{d=m+(g<<2)|0;k[d>>2]=(k[d>>2]|0)+(k[h+(g<<2)>>2]|0);g=g+1|0}while((g|0)!=(e|0));f=(1<>0]|0))f=(1<>2]|0;h=0;g=0;do{n=j+(h<<2)|0;d=(k[n>>2]|0)/(w|0)|0;k[n>>2]=d;d=d-(k[b+(h+y<<2)>>2]|0)|0;g=((d|0)>-1?d:0-d|0)+g|0;h=h+1|0}while((h|0)!=(e|0))}else g=0;if((g|0)<(k[Z>>2]|0)){k[Z>>2]=g;i[E>>0]=f;k[F>>2]=w;k[W>>2]=k[fa>>2];k[X>>2]=k[O>>2];k[U>>2]=k[W>>2];k[V>>2]=k[X>>2];hf(G,U,V)}if(q)break;_=i[o>>0]|0;m=-1;d=_;while(1){f=m+-1|0;n=p+f|0;j=d;d=i[n>>0]|0;if((d&255)<(j&255))break;if((n|0)==(Y|0)){R=79;break d}else m=f}f=p+m|0;if((d&255)<(_&255)){h=o;g=_}else{g=p;j=o;while(1){g=i[g+-2>>0]|0;h=j+-1|0;if((d&255)<(g&255))break;else{g=j;j=h}}}i[n>>0]=g;i[h>>0]=d;if((m|0)<-1)g=o;else continue;while(1){d=i[f>>0]|0;i[f>>0]=i[g>>0]|0;i[g>>0]=d;f=f+1|0;g=g+-1|0;if(f>>>0>=g>>>0)continue d}}if(((R|0)==79?(R=0,u):0)?(d=i[Y>>0]|0,i[Y>>0]=_,i[o>>0]=d,t):0){f=s;g=P;do{d=i[g>>0]|0;i[g>>0]=i[f>>0]|0;i[f>>0]=d;g=g+1|0;f=f+-1|0}while(g>>>0>>0)}if((w|0)>=(x|0))break;else w=w+1|0}if((x|0)>0){n=x+-1|0;d=a+60+(n*12|0)|0;m=a+60+(n*12|0)+4|0;n=a+60+(n*12|0)+8|0;j=0;do{f=k[m>>2]|0;g=k[n>>2]|0;h=(f|0)==(g<<5|0);if(!(l[E>>0]&1<>>0<1073741823?(R>>>0>>0?f:R):2147483647);f=k[m>>2]|0}k[m>>2]=f+1;R=(k[d>>2]|0)+(f>>>5<<2)|0;k[R>>2]=k[R>>2]|1<<(f&31)}else{if(h){if((f+1|0)<0){R=106;break b}R=g<<6;f=f+32&-32;Xg(d,g<<5>>>0<1073741823?(R>>>0>>0?f:R):2147483647);f=k[m>>2]|0}k[m>>2]=f+1;R=(k[d>>2]|0)+(f>>>5<<2)|0;k[R>>2]=k[R>>2]&~(1<<(f&31))}j=j+1|0}while((j|0)<(x|0))}}n=b+(y<<2)|0;d=k[G>>2]|0;if((k[ea>>2]|0)>0){m=0;do{j=k[d+(m<<2)>>2]|0;f=k[H>>2]|0;do if((j|0)<=(f|0)){f=k[J>>2]|0;g=k[I>>2]|0;h=g+(m<<2)|0;if((j|0)<(f|0)){k[h>>2]=f;h=g;break}else{k[h>>2]=j;h=g;break}}else{h=k[I>>2]|0;k[h+(m<<2)>>2]=f}while(0);m=m+1|0;f=k[ea>>2]|0}while((m|0)<(f|0));if((f|0)>0){f=0;do{k[c+(f+y<<2)>>2]=(k[n+(f<<2)>>2]|0)-(k[h+(f<<2)>>2]|0);f=f+1|0;g=k[ea>>2]|0}while((f|0)<(g|0));if((g|0)>0){f=0;do{g=c+(f+y<<2)|0;h=k[g>>2]|0;if((h|0)>=(k[K>>2]|0)){if((h|0)>(k[M>>2]|0))k[g>>2]=h-(k[L>>2]|0)}else k[g>>2]=(k[L>>2]|0)+h;f=f+1|0}while((f|0)<(k[ea>>2]|0));R=110}else R=110}else R=111}else R=110;if((R|0)==110?(R=0,d|0):0)R=111;if((R|0)==111){R=0;f=k[N>>2]|0;if((f|0)!=(d|0))k[N>>2]=f+(~((f+-4-d|0)>>>2)<<2);cn(d)}if((z|0)<=1)break a;f=k[A>>2]|0;v=z;g=f;h=k[f>>2]|0;f=k[f+4>>2]|0}if((R|0)==22)gm(g);else if((R|0)==101)hm(d);else if((R|0)==106)hm(d)}while(0);p=k[ga>>2]|0;if((e|0)>0){f=0;do{k[p+(f<<2)>>2]=0;f=f+1|0}while((f|0)!=(e|0))}if((k[ea>>2]|0)>0){n=a+16|0;d=a+32|0;o=a+12|0;m=0;do{j=k[p+(m<<2)>>2]|0;f=k[n>>2]|0;do if((j|0)<=(f|0)){f=k[o>>2]|0;g=k[d>>2]|0;h=g+(m<<2)|0;if((j|0)<(f|0)){k[h>>2]=f;h=g;break}else{k[h>>2]=j;h=g;break}}else{h=k[d>>2]|0;k[h+(m<<2)>>2]=f}while(0);m=m+1|0;f=k[ea>>2]|0}while((m|0)<(f|0));if((f|0)>0){f=0;do{k[c+(f<<2)>>2]=(k[b+(f<<2)>>2]|0)-(k[h+(f<<2)>>2]|0);f=f+1|0;g=k[ea>>2]|0}while((f|0)<(g|0));if((g|0)>0){m=a+28|0;n=a+20|0;g=a+24|0;f=0;do{h=c+(f<<2)|0;j=k[h>>2]|0;if((j|0)>=(k[m>>2]|0)){if((j|0)>(k[g>>2]|0))k[h>>2]=j-(k[n>>2]|0)}else k[h>>2]=(k[n>>2]|0)+j;f=f+1|0}while((f|0)<(k[ea>>2]|0))}}}h=k[fa>>2]|0;j=h;if(h|0){f=fa+4|0;g=k[f>>2]|0;if((g|0)!=(h|0))k[f>>2]=g+(~((g+-4-j|0)>>>2)<<2);cn(h)}f=k[ga+36>>2]|0;g=f;if(f|0){h=ga+40|0;j=k[h>>2]|0;if((j|0)!=(f|0))k[h>>2]=j+(~((j+-4-g|0)>>>2)<<2);cn(f)}f=k[ga+24>>2]|0;g=f;if(f|0){h=ga+28|0;j=k[h>>2]|0;if((j|0)!=(f|0))k[h>>2]=j+(~((j+-4-g|0)>>>2)<<2);cn(f)}f=k[ga+12>>2]|0;g=f;if(f|0){h=ga+16|0;j=k[h>>2]|0;if((j|0)!=(f|0))k[h>>2]=j+(~((j+-4-g|0)>>>2)<<2);cn(f)}h=k[ga>>2]|0;if(!h){r=ha;return 1}f=ga+4|0;g=k[f>>2]|0;if((g|0)!=(h|0))k[f>>2]=g+(~((g+-4-h|0)>>>2)<<2);cn(h);r=ha;return 1}function gb(a,b,c,d,e,f){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;f=f|0;var g=0,h=0,j=0,m=0,n=0,o=0,p=0,q=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,B=0,C=0,D=0,E=0,F=0,G=0,H=0,I=0,J=0,K=0,L=0,M=0,N=0,O=0,P=0,Q=0,R=0,S=0,T=0,U=0,V=0,W=0,X=0,Y=0,Z=0,_=0,aa=0,ba=0,ca=0,da=0;da=r;r=r+112|0;V=da+100|0;U=da+96|0;ca=da+48|0;ba=da+32|0;Y=da+104|0;Z=da+8|0;W=da+4|0;X=da;aa=a+8|0;k[aa>>2]=e;do if(d|0){f=k[b>>2]|0;m=a+16|0;k[m>>2]=f;n=a+12|0;k[n>>2]=f;if((d|0)>1){j=1;h=f;while(1){g=k[b+(j<<2)>>2]|0;if((g|0)>=(h|0))if((g|0)>(f|0)){k[m>>2]=g;f=g;g=h}else g=h;else k[n>>2]=g;j=j+1|0;if((j|0)==(d|0))break;else h=g}}else g=f;T=1-g+f|0;k[a+20>>2]=T;f=(T|0)/2|0;g=a+24|0;k[g>>2]=f;k[a+28>>2]=0-f;if(!(T&1))k[g>>2]=f+-1;f=a+32|0;g=a+36|0;m=k[g>>2]|0;h=k[f>>2]|0;j=m-h>>2;if(j>>>0>>0){jh(f,e-j|0);break}if(j>>>0>e>>>0?(o=h+(e<<2)|0,(m|0)!=(o|0)):0)k[g>>2]=m+(~((m+-4-o|0)>>>2)<<2)}while(0);S=k[a+48>>2]|0;T=k[a+52>>2]|0;f=ca;g=f+48|0;do{k[f>>2]=0;f=f+4|0}while((f|0)<(g|0));if(!e){f=0;g=0}else{jh(ca,e);f=k[ca+12>>2]|0;g=k[ca+16>>2]|0}h=ca+16|0;j=g-f>>2;if(j>>>0>=e>>>0){if(j>>>0>e>>>0?(p=f+(e<<2)|0,(g|0)!=(p|0)):0)k[h>>2]=g+(~((g+-4-p|0)>>>2)<<2)}else jh(ca+12|0,e-j|0);f=ca+24|0;g=ca+28|0;m=k[g>>2]|0;j=k[f>>2]|0;h=m-j>>2;if(h>>>0>=e>>>0){if(h>>>0>e>>>0?(q=j+(e<<2)|0,(m|0)!=(q|0)):0)k[g>>2]=m+(~((m+-4-q|0)>>>2)<<2)}else jh(f,e-h|0);f=ca+36|0;g=ca+40|0;m=k[g>>2]|0;j=k[f>>2]|0;h=m-j>>2;if(h>>>0>=e>>>0){if(h>>>0>e>>>0?(s=j+(e<<2)|0,(m|0)!=(s|0)):0)k[g>>2]=m+(~((m+-4-s|0)>>>2)<<2)}else jh(f,e-h|0);bj(ba,e);B=a+56|0;g=k[B>>2]|0;j=k[g+4>>2]|0;h=k[g>>2]|0;f=j-h|0;a:do if((f|0)>4){C=S+12|0;D=(e|0)>0;E=Z+4|0;F=Z+8|0;G=Z+12|0;H=a+16|0;I=a+32|0;J=a+12|0;K=a+28|0;L=a+20|0;M=a+24|0;N=Z+16|0;O=ba+4|0;P=Y+1|0;Q=e<<2;y=f>>2;f=j;b:while(1){A=y+-1|0;if(f-h>>2>>>0<=A>>>0){R=22;break}w=k[h+(A<<2)>>2]|0;v=(((w>>>0)%3|0|0)==0?2:-1)+w|0;x=(w|v|0)<0;u=(w|0)<0?w:v;t=1;g=0;f=w;c:while(1){do{if((f|0)<=-1){x=g;break c}q=k[ca+(g*12|0)>>2]|0;s=k[C>>2]|0;j=k[s+(f<<2)>>2]|0;if((j|0)>=0){n=k[S>>2]|0;m=(j>>>0)%3|0;d=k[T>>2]|0;p=k[d+(k[n+(((j>>>0)/3|0)*12|0)+(m<<2)>>2]<<2)>>2]|0;h=j+1|0;h=((h|0)%3|0|0)==0?j+-2|0:h;if((h|0)<0)h=-1073741824;else h=k[n+(((h>>>0)/3|0)*12|0)+(((h>>>0)%3|0)<<2)>>2]|0;o=k[d+(h<<2)>>2]|0;h=((m|0)==0?2:-1)+j|0;if((h|0)<0)h=-1073741824;else h=k[n+(((h>>>0)/3|0)*12|0)+(((h>>>0)%3|0)<<2)>>2]|0;h=k[d+(h<<2)>>2]|0;if((p|0)<(A|0)&(o|0)<(A|0)&(h|0)<(A|0)){n=$(p,e)|0;m=$(o,e)|0;j=$(h,e)|0;if(D){h=0;do{k[q+(h<<2)>>2]=(k[b+(h+j<<2)>>2]|0)+(k[b+(h+m<<2)>>2]|0)-(k[b+(h+n<<2)>>2]|0);h=h+1|0}while((h|0)!=(e|0))}g=g+1|0;if((g|0)==4){x=4;break c}}}do if(t){z=f+1|0;f=((z|0)%3|0|0)==0?f+-2|0:z;if((f|0)>=0){f=k[s+(f<<2)>>2]|0;h=f+1|0;if((f|0)>=0)f=((h|0)%3|0|0)==0?f+-2|0:h}}else{f=(((f>>>0)%3|0|0)==0?2:-1)+f|0;if((f|0)>=0){f=k[s+(f<<2)>>2]|0;if((f|0)>=0)if(!((f>>>0)%3|0)){f=f+2|0;break}else{f=f+-1|0;break}}}while(0);if((f|0)==(w|0)){x=g;break c}}while(!(t&(f|0)<0));if(x){t=0;f=u;continue}f=k[s+(v<<2)>>2]|0;if((f|0)<0){t=0;continue}if(!((f>>>0)%3|0)){t=0;f=f+2|0;continue}else{t=0;f=f+-1|0;continue}}z=$(A,e)|0;k[Z>>2]=2147483647;i[E>>0]=0;k[F>>2]=0;k[F+4>>2]=0;k[F+8>>2]=0;k[F+12>>2]=0;h=$(y+-2|0,e)|0;if(D){g=0;f=0;do{y=(k[b+(g+z<<2)>>2]|0)-(k[b+(g+h<<2)>>2]|0)|0;f=((y|0)>-1?y:0-y|0)+f|0;g=g+1|0}while((g|0)!=(e|0))}else f=0;k[Z>>2]=f;i[E>>0]=0;k[F>>2]=0;y=b+(h<<2)|0;lf(G,y,y+(e<<2)|0);if((x|0)>=1){p=Y+x|0;o=p+-1|0;q=(o|0)==(Y|0);s=p+-2|0;t=P>>>0>>0;u=o>>>0>Y>>>0;v=0;w=1;while(1){v=v+1|0;Vi(Y|0,1,x|0)|0;Vi(Y|0,0,v|0)|0;d:while(1){if(D){Vi(k[ba>>2]|0,0,Q|0)|0;m=k[ba>>2]|0;j=0;f=0;do{if(!(i[Y+j>>0]|0)){h=k[ca+(j*12|0)>>2]|0;g=0;do{y=m+(g<<2)|0;k[y>>2]=(k[y>>2]|0)+(k[h+(g<<2)>>2]|0);g=g+1|0}while((g|0)!=(e|0));f=(1<>0]|0))f=(1<>2]|0;h=0;g=0;do{d=j+(h<<2)|0;y=(k[d>>2]|0)/(w|0)|0;k[d>>2]=y;y=y-(k[b+(h+z<<2)>>2]|0)|0;g=((y|0)>-1?y:0-y|0)+g|0;h=h+1|0}while((h|0)!=(e|0))}else g=0;if((g|0)<(k[Z>>2]|0)){k[Z>>2]=g;i[E>>0]=f;k[F>>2]=w;k[W>>2]=k[ba>>2];k[X>>2]=k[O>>2];k[U>>2]=k[W>>2];k[V>>2]=k[X>>2];hf(G,U,V)}if(q)break;_=i[o>>0]|0;m=-1;d=_;while(1){f=m+-1|0;n=p+f|0;y=d;d=i[n>>0]|0;if((d&255)<(y&255))break;if((n|0)==(Y|0)){R=80;break d}else m=f}f=p+m|0;if((d&255)<(_&255)){h=o;g=_}else{g=p;j=o;while(1){g=i[g+-2>>0]|0;h=j+-1|0;if((d&255)<(g&255))break;else{g=j;j=h}}}i[n>>0]=g;i[h>>0]=d;if((m|0)<-1)g=o;else continue;while(1){y=i[f>>0]|0;i[f>>0]=i[g>>0]|0;i[g>>0]=y;f=f+1|0;g=g+-1|0;if(f>>>0>=g>>>0)continue d}}if(((R|0)==80?(R=0,u):0)?(y=i[Y>>0]|0,i[Y>>0]=_,i[o>>0]=y,t):0){f=s;g=P;do{y=i[g>>0]|0;i[g>>0]=i[f>>0]|0;i[f>>0]=y;g=g+1|0;f=f+-1|0}while(g>>>0>>0)}if((w|0)>=(x|0))break;else w=w+1|0}if((x|0)>0){n=x+-1|0;d=a+60+(n*12|0)|0;m=a+60+(n*12|0)+4|0;n=a+60+(n*12|0)+8|0;j=0;do{f=k[m>>2]|0;g=k[n>>2]|0;h=(f|0)==(g<<5|0);if(!(l[E>>0]&1<>>0<1073741823?(R>>>0>>0?f:R):2147483647);f=k[m>>2]|0}k[m>>2]=f+1;R=(k[d>>2]|0)+(f>>>5<<2)|0;k[R>>2]=k[R>>2]|1<<(f&31)}else{if(h){if((f+1|0)<0){R=107;break b}R=g<<6;f=f+32&-32;Xg(d,g<<5>>>0<1073741823?(R>>>0>>0?f:R):2147483647);f=k[m>>2]|0}k[m>>2]=f+1;R=(k[d>>2]|0)+(f>>>5<<2)|0;k[R>>2]=k[R>>2]&~(1<<(f&31))}j=j+1|0}while((j|0)<(x|0))}}n=b+(z<<2)|0;d=k[G>>2]|0;if((k[aa>>2]|0)>0){m=0;do{j=k[d+(m<<2)>>2]|0;f=k[H>>2]|0;do if((j|0)<=(f|0)){f=k[J>>2]|0;g=k[I>>2]|0;h=g+(m<<2)|0;if((j|0)<(f|0)){k[h>>2]=f;h=g;break}else{k[h>>2]=j;h=g;break}}else{h=k[I>>2]|0;k[h+(m<<2)>>2]=f}while(0);m=m+1|0;f=k[aa>>2]|0}while((m|0)<(f|0));if((f|0)>0){f=0;do{k[c+(f+z<<2)>>2]=(k[n+(f<<2)>>2]|0)-(k[h+(f<<2)>>2]|0);f=f+1|0;g=k[aa>>2]|0}while((f|0)<(g|0));if((g|0)>0){f=0;do{g=c+(f+z<<2)|0;h=k[g>>2]|0;if((h|0)>=(k[K>>2]|0)){if((h|0)>(k[M>>2]|0))k[g>>2]=h-(k[L>>2]|0)}else k[g>>2]=(k[L>>2]|0)+h;f=f+1|0}while((f|0)<(k[aa>>2]|0));R=111}else R=111}else R=112}else R=111;if((R|0)==111?(R=0,d|0):0)R=112;if((R|0)==112){R=0;f=k[N>>2]|0;if((f|0)!=(d|0))k[N>>2]=f+(~((f+-4-d|0)>>>2)<<2);cn(d)}if((A|0)<=1)break a;f=k[B>>2]|0;y=A;g=f;h=k[f>>2]|0;f=k[f+4>>2]|0}if((R|0)==22)gm(g);else if((R|0)==102)hm(d);else if((R|0)==107)hm(d)}while(0);p=k[ca>>2]|0;if((e|0)>0){f=0;do{k[p+(f<<2)>>2]=0;f=f+1|0}while((f|0)!=(e|0))}if((k[aa>>2]|0)>0){n=a+16|0;d=a+32|0;o=a+12|0;m=0;do{j=k[p+(m<<2)>>2]|0;f=k[n>>2]|0;do if((j|0)<=(f|0)){f=k[o>>2]|0;g=k[d>>2]|0;h=g+(m<<2)|0;if((j|0)<(f|0)){k[h>>2]=f;h=g;break}else{k[h>>2]=j;h=g;break}}else{h=k[d>>2]|0;k[h+(m<<2)>>2]=f}while(0);m=m+1|0;f=k[aa>>2]|0}while((m|0)<(f|0));if((f|0)>0){f=0;do{k[c+(f<<2)>>2]=(k[b+(f<<2)>>2]|0)-(k[h+(f<<2)>>2]|0);f=f+1|0;g=k[aa>>2]|0}while((f|0)<(g|0));if((g|0)>0){m=a+28|0;n=a+20|0;g=a+24|0;f=0;do{h=c+(f<<2)|0;j=k[h>>2]|0;if((j|0)>=(k[m>>2]|0)){if((j|0)>(k[g>>2]|0))k[h>>2]=j-(k[n>>2]|0)}else k[h>>2]=(k[n>>2]|0)+j;f=f+1|0}while((f|0)<(k[aa>>2]|0))}}}h=k[ba>>2]|0;j=h;if(h|0){f=ba+4|0;g=k[f>>2]|0;if((g|0)!=(h|0))k[f>>2]=g+(~((g+-4-j|0)>>>2)<<2);cn(h)}f=k[ca+36>>2]|0;g=f;if(f|0){h=ca+40|0;j=k[h>>2]|0;if((j|0)!=(f|0))k[h>>2]=j+(~((j+-4-g|0)>>>2)<<2);cn(f)}f=k[ca+24>>2]|0;g=f;if(f|0){h=ca+28|0;j=k[h>>2]|0;if((j|0)!=(f|0))k[h>>2]=j+(~((j+-4-g|0)>>>2)<<2);cn(f)}f=k[ca+12>>2]|0;g=f;if(f|0){h=ca+16|0;j=k[h>>2]|0;if((j|0)!=(f|0))k[h>>2]=j+(~((j+-4-g|0)>>>2)<<2);cn(f)}h=k[ca>>2]|0;if(!h){r=da;return 1}f=ca+4|0;g=k[f>>2]|0;if((g|0)!=(h|0))k[f>>2]=g+(~((g+-4-h|0)>>>2)<<2);cn(h);r=da;return 1}function hb(a,b,c,d,e,f){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;f=f|0;var g=0,h=0,j=0,l=0,m=0,n=0,o=0,p=0,q=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,B=0,C=0,D=0,E=0,F=0,G=0,H=0,I=0,J=0,K=0,L=0,M=0,N=0,O=0,P=0,Q=0,R=0,S=0,T=0,U=0,V=0,W=0,X=0,Y=0,Z=0,_=0,$=0,aa=0,ba=0,da=0,ea=0,fa=0,ga=0,ha=0,ia=0,ja=0,ka=0,la=0;ka=r;r=r+128|0;ja=ka;o=ka+88|0;ga=ka+72|0;U=ka+60|0;ha=ka+48|0;ia=ka+16|0;k[o>>2]=b;k[o+4>>2]=k[c>>2];S=c+4|0;k[o+8>>2]=k[S>>2];T=c+8|0;k[o+12>>2]=k[T>>2];Q=o+16|0;k[Q>>2]=k[d>>2];k[Q+4>>2]=k[d+4>>2];k[Q+8>>2]=k[d+8>>2];k[o+28>>2]=e;k[ga>>2]=0;Q=ga+4|0;k[Q>>2]=0;k[ga+8>>2]=0;R=ga+8|0;rf(ga,o);b=k[Q>>2]|0;o=k[ga>>2]|0;e=b-o|0;if((e|0)>32){g=((e>>5)+-2|0)/2|0;e=o+(g<<5)|0;h=b+-32|0;j=k[h>>2]|0;if((k[e>>2]|0)>>>0>>0){l=k[b+-28>>2]|0;m=k[b+-24>>2]|0;n=k[b+-20>>2]|0;b=b+-16|0;k[ja>>2]=k[b>>2];k[ja+4>>2]=k[b+4>>2];k[ja+8>>2]=k[b+8>>2];k[ja+12>>2]=k[b+12>>2];b=h;while(1){k[b>>2]=k[e>>2];k[b+4>>2]=k[e+4>>2];k[b+8>>2]=k[e+8>>2];k[b+12>>2]=k[e+12>>2];k[b+16>>2]=k[e+16>>2];k[b+20>>2]=k[e+20>>2];k[b+24>>2]=k[e+24>>2];k[b+28>>2]=k[e+28>>2];if(!g)break;g=(g+-1|0)/2|0;b=o+(g<<5)|0;if((k[b>>2]|0)>>>0>=j>>>0)break;else{P=e;e=b;b=P}}k[e>>2]=j;k[e+4>>2]=l;k[e+8>>2]=m;k[e+12>>2]=n;g=e+16|0;k[g>>2]=k[ja>>2];k[g+4>>2]=k[ja+4>>2];k[g+8>>2]=k[ja+8>>2];k[g+12>>2]=k[ja+12>>2];g=7}else g=7}else e=o;a:while(1){if((g|0)==7){e=k[ga>>2]|0;b=k[Q>>2]|0}if((e|0)==(b|0)){g=62;break}P=k[e>>2]|0;b=k[e+4>>2]|0;o=k[e+8>>2]|0;n=k[e+12>>2]|0;t=e+16|0;k[U>>2]=k[t>>2];k[U+4>>2]=k[t+4>>2];k[U+8>>2]=k[t+8>>2];t=k[e+28>>2]|0;Fd(ga);k[c>>2]=b;k[S>>2]=o;k[T>>2]=n;k[d>>2]=k[U>>2];k[d+4>>2]=k[U+4>>2];k[d+8>>2]=k[U+8>>2];k[ja>>2]=k[U>>2];k[ja+4>>2]=k[U+4>>2];k[ja+8>>2]=k[U+8>>2];t=Kh(a,P,c,ja,t)|0;n=d+(t<<2)|0;o=k[n>>2]|0;b=k[a>>2]|0;O=b-o|0;b:do if(!O){if((P|0)>0){n=k[f>>2]|0;g=f+4|0;j=n+84|0;l=n+68|0;m=n+40|0;n=n+64|0;h=k[g>>2]|0;b=0;o=h;while(1){if(!(i[j>>0]|0))e=k[(k[l>>2]|0)+(o<<2)>>2]|0;else e=o;N=m;O=k[N>>2]|0;N=uk(e|0,((e|0)<0)<<31>>31|0,O|0,k[N+4>>2]|0)|0;Ii((k[k[n>>2]>>2]|0)+N|0,c|0,O|0)|0;b=b+1|0;if((b|0)==(P|0))break;else o=o+1|0}k[g>>2]=P+h}}else{if(!P){g=16;break a}if(P>>>0<3){x=(t|0)==2?0:t+1|0;u=(x|0)==2?0:x+1|0;N=b-(k[d+(x<<2)>>2]|0)|0;D=b-(k[d+(u<<2)>>2]|0)|0;E=a+816|0;F=a+812|0;J=k[f>>2]|0;C=f+4|0;G=J+84|0;H=J+68|0;I=J+40|0;J=J+64|0;K=ja+(t<<2)|0;L=(O|0)<33;M=(O|0)>0;n=c+(t<<2)|0;o=(N|0)==0;l=ja+(x<<2)|0;p=c+(x<<2)|0;q=(D|0)==0;m=ja+(u<<2)|0;s=c+(u<<2)|0;t=ja+(u<<2)|0;u=(D|0)<33;v=(D|0)>0;w=32-D|0;x=ja+(x<<2)|0;y=(N|0)<33;z=(N|0)>0;A=32-N|0;B=32-O|0;j=0;while(1){k[ja>>2]=0;k[ja+4>>2]=0;k[ja+8>>2]=0;if(!L){g=21;break a}if(!M){g=23;break a}g=k[E>>2]|0;b=32-g|0;h=k[F>>2]|0;e=k[h>>2]<>>B;k[K>>2]=b;g=g+O|0;k[E>>2]=g;if((g|0)==32){k[F>>2]=h+4;k[E>>2]=0}}else{la=O-b|0;k[E>>2]=la;g=h+4|0;k[F>>2]=g;h=32-la|0;b=(k[g>>2]|0)>>>h|e>>>(h-b|0);k[K>>2]=b}k[K>>2]=b|k[n>>2];do if(!o){if(!y){g=21;break a}if(!z){g=23;break a}g=k[E>>2]|0;b=32-g|0;h=k[F>>2]|0;e=k[h>>2]<(b|0)){la=N-b|0;k[E>>2]=la;h=h+4|0;k[F>>2]=h;la=32-la|0;b=(k[h>>2]|0)>>>la|e>>>(la-b|0);k[x>>2]=b;e=x;break}b=e>>>A;k[x>>2]=b;la=g+N|0;k[E>>2]=la;if((la|0)==32){k[F>>2]=h+4;k[E>>2]=0;e=x}else e=x}else{e=l;b=k[l>>2]|0}while(0);k[e>>2]=b|k[p>>2];do if(!q){if(!u){g=21;break a}if(!v){g=23;break a}g=k[E>>2]|0;b=32-g|0;h=k[F>>2]|0;e=k[h>>2]<(b|0)){la=D-b|0;k[E>>2]=la;h=h+4|0;k[F>>2]=h;la=32-la|0;b=(k[h>>2]|0)>>>la|e>>>(la-b|0);k[t>>2]=b;e=t;break}b=e>>>w;k[t>>2]=b;la=g+D|0;k[E>>2]=la;if((la|0)==32){k[F>>2]=h+4;k[E>>2]=0;e=t}else e=t}else{e=m;b=k[m>>2]|0}while(0);k[e>>2]=b|k[s>>2];b=k[C>>2]|0;k[C>>2]=b+1;if(!(i[G>>0]|0))b=k[(k[H>>2]|0)+(b<<2)>>2]|0;h=I;la=k[h>>2]|0;h=uk(b|0,((b|0)<0)<<31>>31|0,la|0,k[h+4>>2]|0)|0;Ii((k[k[J>>2]>>2]|0)+h|0,ja|0,la|0)|0;j=j+1|0;if(j>>>0>=P>>>0)break b}}k[ha>>2]=k[c>>2];q=ha+4|0;k[q>>2]=k[S>>2];s=ha+8|0;k[s>>2]=k[T>>2];g=ha+(t<<2)|0;k[g>>2]=(k[g>>2]|0)+(1<>>1)-b|0;h=P-l|0;if((l|0)==(h|0)){m=l;p=l}else{b=a+856|0;la=k[b>>2]|0;e=a+852|0;g=k[e>>2]|0;j=(k[g>>2]&1<<31-la|0)!=0;la=la+1|0;k[b>>2]=la;if((la|0)==32){k[e>>2]=g+4;k[b>>2]=0}m=j?l:h;p=j?h:l}k[n>>2]=o+1;if(m|0){k[ia>>2]=m;e=ia+4|0;k[e>>2]=k[c>>2];g=ia+8|0;k[g>>2]=k[S>>2];h=ia+12|0;k[h>>2]=k[T>>2];b=ia+16|0;k[b>>2]=k[d>>2];k[b+4>>2]=k[d+4>>2];k[b+8>>2]=k[d+8>>2];k[ia+28>>2]=t;j=k[Q>>2]|0;if(j>>>0<(k[R>>2]|0)>>>0){k[j>>2]=m;k[j+4>>2]=k[e>>2];k[j+8>>2]=k[g>>2];k[j+12>>2]=k[h>>2];g=j+16|0;k[g>>2]=k[b>>2];k[g+4>>2]=k[b+4>>2];k[g+8>>2]=k[b+8>>2];k[g+12>>2]=k[b+12>>2];g=j+32|0;k[Q>>2]=g}else{rf(ga,ia);g=k[Q>>2]|0}b=k[ga>>2]|0;e=g-b|0;if((e|0)>32?(V=((e>>5)+-2|0)/2|0,W=b,X=W+(V<<5)|0,Y=g,Z=Y+-32|0,_=k[Z>>2]|0,(k[X>>2]|0)>>>0<_>>>0):0){h=k[Y+-28>>2]|0;j=k[Y+-24>>2]|0;l=k[Y+-20>>2]|0;e=Y+-16|0;k[ja>>2]=k[e>>2];k[ja+4>>2]=k[e+4>>2];k[ja+8>>2]=k[e+8>>2];k[ja+12>>2]=k[e+12>>2];e=V;b=Z;g=X;while(1){k[b>>2]=k[g>>2];k[b+4>>2]=k[g+4>>2];k[b+8>>2]=k[g+8>>2];k[b+12>>2]=k[g+12>>2];k[b+16>>2]=k[g+16>>2];k[b+20>>2]=k[g+20>>2];k[b+24>>2]=k[g+24>>2];k[b+28>>2]=k[g+28>>2];if(!e)break;e=(e+-1|0)/2|0;b=W+(e<<5)|0;if((k[b>>2]|0)>>>0>=_>>>0)break;else{la=g;g=b;b=la}}k[g>>2]=_;k[g+4>>2]=h;k[g+8>>2]=j;k[g+12>>2]=l;la=g+16|0;k[la>>2]=k[ja>>2];k[la+4>>2]=k[ja+4>>2];k[la+8>>2]=k[ja+8>>2];k[la+12>>2]=k[ja+12>>2]}}if(p|0){k[ia>>2]=p;h=ia+4|0;k[h>>2]=k[ha>>2];j=ia+8|0;k[j>>2]=k[q>>2];g=ia+12|0;k[g>>2]=k[s>>2];e=ia+16|0;k[e>>2]=k[d>>2];k[e+4>>2]=k[d+4>>2];k[e+8>>2]=k[d+8>>2];k[ia+28>>2]=t;b=k[Q>>2]|0;if(b>>>0<(k[R>>2]|0)>>>0){k[b>>2]=p;k[b+4>>2]=k[h>>2];k[b+8>>2]=k[j>>2];k[b+12>>2]=k[g>>2];g=b+16|0;k[g>>2]=k[e>>2];k[g+4>>2]=k[e+4>>2];k[g+8>>2]=k[e+8>>2];k[g+12>>2]=k[e+12>>2];g=b+32|0;k[Q>>2]=g}else{rf(ga,ia);g=k[Q>>2]|0}b=k[ga>>2]|0;e=g-b|0;if((e|0)>32?($=((e>>5)+-2|0)/2|0,aa=b,ba=aa+($<<5)|0,da=g,ea=da+-32|0,fa=k[ea>>2]|0,(k[ba>>2]|0)>>>0>>0):0){h=k[da+-28>>2]|0;j=k[da+-24>>2]|0;l=k[da+-20>>2]|0;e=da+-16|0;k[ja>>2]=k[e>>2];k[ja+4>>2]=k[e+4>>2];k[ja+8>>2]=k[e+8>>2];k[ja+12>>2]=k[e+12>>2];e=$;b=ea;g=ba;while(1){k[b>>2]=k[g>>2];k[b+4>>2]=k[g+4>>2];k[b+8>>2]=k[g+8>>2];k[b+12>>2]=k[g+12>>2];k[b+16>>2]=k[g+16>>2];k[b+20>>2]=k[g+20>>2];k[b+24>>2]=k[g+24>>2];k[b+28>>2]=k[g+28>>2];if(!e)break;e=(e+-1|0)/2|0;b=aa+(e<<5)|0;if((k[b>>2]|0)>>>0>=fa>>>0)break;else{la=g;g=b;b=la}}k[g>>2]=fa;k[g+4>>2]=h;k[g+8>>2]=j;k[g+12>>2]=l;la=g+16|0;k[la>>2]=k[ja>>2];k[la+4>>2]=k[ja+4>>2];k[la+8>>2]=k[ja+8>>2];k[la+12>>2]=k[ja+12>>2]}}}while(0);g=7}if((g|0)==16)Ka(13811,13849,231,13919);else if((g|0)==21)Ka(13932,13956,48,13984);else if((g|0)==23)Ka(14013,13956,49,13984);else if((g|0)==62){if(!b){r=ka;return}cn(b);r=ka;return}}function ib(a,b,c,d,e,f){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;f=f|0;var g=0,h=0,i=0,j=0,l=0,m=0,n=0,o=0,p=0,q=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,B=0,C=0,D=0,E=0,F=0,G=0,H=0,I=0,J=0,K=0,L=0,M=0,N=0,O=0,P=0,Q=0,R=0,S=0,T=0,U=0,V=0,W=0,X=0,Y=0,Z=0,_=0,$=0,aa=0,ba=0,da=0,ea=0,fa=0,ga=0,ha=0,ia=0,ja=0,ka=0;ja=r;r=r+128|0;ia=ja;n=ja+88|0;fa=ja+72|0;T=ja+60|0;ga=ja+48|0;ha=ja+16|0;k[n>>2]=b;k[n+4>>2]=k[c>>2];R=c+4|0;k[n+8>>2]=k[R>>2];S=c+8|0;k[n+12>>2]=k[S>>2];P=n+16|0;k[P>>2]=k[d>>2];k[P+4>>2]=k[d+4>>2];k[P+8>>2]=k[d+8>>2];k[n+28>>2]=e;k[fa>>2]=0;P=fa+4|0;k[P>>2]=0;k[fa+8>>2]=0;Q=fa+8|0;rf(fa,n);b=k[P>>2]|0;n=k[fa>>2]|0;e=b-n|0;if((e|0)>32){g=((e>>5)+-2|0)/2|0;e=n+(g<<5)|0;h=b+-32|0;i=k[h>>2]|0;if((k[e>>2]|0)>>>0>>0){j=k[b+-28>>2]|0;l=k[b+-24>>2]|0;m=k[b+-20>>2]|0;b=b+-16|0;k[ia>>2]=k[b>>2];k[ia+4>>2]=k[b+4>>2];k[ia+8>>2]=k[b+8>>2];k[ia+12>>2]=k[b+12>>2];b=h;while(1){k[b>>2]=k[e>>2];k[b+4>>2]=k[e+4>>2];k[b+8>>2]=k[e+8>>2];k[b+12>>2]=k[e+12>>2];k[b+16>>2]=k[e+16>>2];k[b+20>>2]=k[e+20>>2];k[b+24>>2]=k[e+24>>2];k[b+28>>2]=k[e+28>>2];if(!g)break;g=(g+-1|0)/2|0;b=n+(g<<5)|0;if((k[b>>2]|0)>>>0>=i>>>0)break;else{O=e;e=b;b=O}}k[e>>2]=i;k[e+4>>2]=j;k[e+8>>2]=l;k[e+12>>2]=m;g=e+16|0;k[g>>2]=k[ia>>2];k[g+4>>2]=k[ia+4>>2];k[g+8>>2]=k[ia+8>>2];k[g+12>>2]=k[ia+12>>2];g=7}else g=7}else e=n;a:while(1){if((g|0)==7){e=k[fa>>2]|0;b=k[P>>2]|0}if((e|0)==(b|0)){g=63;break}O=k[e>>2]|0;b=k[e+4>>2]|0;n=k[e+8>>2]|0;m=k[e+12>>2]|0;s=e+16|0;k[T>>2]=k[s>>2];k[T+4>>2]=k[s+4>>2];k[T+8>>2]=k[s+8>>2];s=k[e+28>>2]|0;Fd(fa);k[c>>2]=b;k[R>>2]=n;k[S>>2]=m;k[d>>2]=k[T>>2];k[d+4>>2]=k[T+4>>2];k[d+8>>2]=k[T+8>>2];k[ia>>2]=k[T>>2];k[ia+4>>2]=k[T+4>>2];k[ia+8>>2]=k[T+8>>2];s=Kh(a,O,c,ia,s)|0;m=d+(s<<2)|0;n=k[m>>2]|0;b=k[a>>2]|0;N=b-n|0;b:do if(!N){if((O|0)>0){e=k[f>>2]|0;g=e+4|0;h=e+8|0;b=0;do{i=k[g>>2]|0;if((i|0)==(k[h>>2]|0))xg(e,c);else{k[i>>2]=k[c>>2];k[i+4>>2]=k[R>>2];k[i+8>>2]=k[S>>2];k[g>>2]=i+12}b=b+1|0}while((b|0)<(O|0))}}else{if(!O){g=17;break a}if(O>>>0<3){u=(s|0)==2?0:s+1|0;p=(u|0)==2?0:u+1|0;M=b-(k[d+(u<<2)>>2]|0)|0;C=b-(k[d+(p<<2)>>2]|0)|0;D=a+816|0;E=a+812|0;B=k[f>>2]|0;F=B+4|0;G=B+8|0;H=ia+4|0;I=ia+8|0;J=ia+(s<<2)|0;K=(N|0)<33;L=(N|0)>0;z=c+(s<<2)|0;A=(M|0)==0;j=ia+(u<<2)|0;m=c+(u<<2)|0;n=(C|0)==0;l=ia+(p<<2)|0;o=c+(p<<2)|0;p=ia+(p<<2)|0;q=(C|0)<33;s=(C|0)>0;t=32-C|0;u=ia+(u<<2)|0;v=(M|0)<33;w=(M|0)>0;x=32-M|0;y=32-N|0;i=0;while(1){k[ia>>2]=0;k[ia+4>>2]=0;k[ia+8>>2]=0;if(!K){g=23;break a}if(!L){g=25;break a}g=k[D>>2]|0;b=32-g|0;h=k[E>>2]|0;e=k[h>>2]<>>y;k[J>>2]=b;g=g+N|0;k[D>>2]=g;if((g|0)==32){k[E>>2]=h+4;k[D>>2]=0}}else{ka=N-b|0;k[D>>2]=ka;g=h+4|0;k[E>>2]=g;h=32-ka|0;b=(k[g>>2]|0)>>>h|e>>>(h-b|0);k[J>>2]=b}k[J>>2]=b|k[z>>2];do if(!A){if(!v){g=23;break a}if(!w){g=25;break a}g=k[D>>2]|0;b=32-g|0;h=k[E>>2]|0;e=k[h>>2]<(b|0)){ka=M-b|0;k[D>>2]=ka;h=h+4|0;k[E>>2]=h;ka=32-ka|0;b=(k[h>>2]|0)>>>ka|e>>>(ka-b|0);k[u>>2]=b;e=u;break}b=e>>>x;k[u>>2]=b;ka=g+M|0;k[D>>2]=ka;if((ka|0)==32){k[E>>2]=h+4;k[D>>2]=0;e=u}else e=u}else{e=j;b=k[j>>2]|0}while(0);k[e>>2]=b|k[m>>2];do if(!n){if(!q){g=23;break a}if(!s){g=25;break a}g=k[D>>2]|0;b=32-g|0;h=k[E>>2]|0;e=k[h>>2]<(b|0)){ka=C-b|0;k[D>>2]=ka;h=h+4|0;k[E>>2]=h;ka=32-ka|0;b=(k[h>>2]|0)>>>ka|e>>>(ka-b|0);k[p>>2]=b;e=p;break}b=e>>>t;k[p>>2]=b;ka=g+C|0;k[D>>2]=ka;if((ka|0)==32){k[E>>2]=h+4;k[D>>2]=0;e=p}else e=p}else{e=l;b=k[l>>2]|0}while(0);k[e>>2]=b|k[o>>2];b=k[F>>2]|0;if((b|0)==(k[G>>2]|0))xg(B,ia);else{k[b>>2]=k[ia>>2];k[b+4>>2]=k[H>>2];k[b+8>>2]=k[I>>2];k[F>>2]=b+12}i=i+1|0;if(i>>>0>=O>>>0)break b}}k[ga>>2]=k[c>>2];p=ga+4|0;k[p>>2]=k[R>>2];q=ga+8|0;k[q>>2]=k[S>>2];g=ga+(s<<2)|0;k[g>>2]=(k[g>>2]|0)+(1<>>1)-b|0;h=O-j|0;if((j|0)==(h|0)){l=j;o=j}else{b=a+856|0;ka=k[b>>2]|0;e=a+852|0;g=k[e>>2]|0;i=(k[g>>2]&1<<31-ka|0)!=0;ka=ka+1|0;k[b>>2]=ka;if((ka|0)==32){k[e>>2]=g+4;k[b>>2]=0}l=i?j:h;o=i?h:j}k[m>>2]=n+1;if(l|0){k[ha>>2]=l;e=ha+4|0;k[e>>2]=k[c>>2];g=ha+8|0;k[g>>2]=k[R>>2];h=ha+12|0;k[h>>2]=k[S>>2];b=ha+16|0;k[b>>2]=k[d>>2];k[b+4>>2]=k[d+4>>2];k[b+8>>2]=k[d+8>>2];k[ha+28>>2]=s;i=k[P>>2]|0;if(i>>>0<(k[Q>>2]|0)>>>0){k[i>>2]=l;k[i+4>>2]=k[e>>2];k[i+8>>2]=k[g>>2];k[i+12>>2]=k[h>>2];g=i+16|0;k[g>>2]=k[b>>2];k[g+4>>2]=k[b+4>>2];k[g+8>>2]=k[b+8>>2];k[g+12>>2]=k[b+12>>2];g=i+32|0;k[P>>2]=g}else{rf(fa,ha);g=k[P>>2]|0}b=k[fa>>2]|0;e=g-b|0;if((e|0)>32?(U=((e>>5)+-2|0)/2|0,V=b,W=V+(U<<5)|0,X=g,Y=X+-32|0,Z=k[Y>>2]|0,(k[W>>2]|0)>>>0>>0):0){h=k[X+-28>>2]|0;i=k[X+-24>>2]|0;j=k[X+-20>>2]|0;e=X+-16|0;k[ia>>2]=k[e>>2];k[ia+4>>2]=k[e+4>>2];k[ia+8>>2]=k[e+8>>2];k[ia+12>>2]=k[e+12>>2];e=U;b=Y;g=W;while(1){k[b>>2]=k[g>>2];k[b+4>>2]=k[g+4>>2];k[b+8>>2]=k[g+8>>2];k[b+12>>2]=k[g+12>>2];k[b+16>>2]=k[g+16>>2];k[b+20>>2]=k[g+20>>2];k[b+24>>2]=k[g+24>>2];k[b+28>>2]=k[g+28>>2];if(!e)break;e=(e+-1|0)/2|0;b=V+(e<<5)|0;if((k[b>>2]|0)>>>0>=Z>>>0)break;else{ka=g;g=b;b=ka}}k[g>>2]=Z;k[g+4>>2]=h;k[g+8>>2]=i;k[g+12>>2]=j;ka=g+16|0;k[ka>>2]=k[ia>>2];k[ka+4>>2]=k[ia+4>>2];k[ka+8>>2]=k[ia+8>>2];k[ka+12>>2]=k[ia+12>>2]}}if(o|0){k[ha>>2]=o;h=ha+4|0;k[h>>2]=k[ga>>2];i=ha+8|0;k[i>>2]=k[p>>2];g=ha+12|0;k[g>>2]=k[q>>2];e=ha+16|0;k[e>>2]=k[d>>2];k[e+4>>2]=k[d+4>>2];k[e+8>>2]=k[d+8>>2];k[ha+28>>2]=s;b=k[P>>2]|0;if(b>>>0<(k[Q>>2]|0)>>>0){k[b>>2]=o;k[b+4>>2]=k[h>>2];k[b+8>>2]=k[i>>2];k[b+12>>2]=k[g>>2];g=b+16|0;k[g>>2]=k[e>>2];k[g+4>>2]=k[e+4>>2];k[g+8>>2]=k[e+8>>2];k[g+12>>2]=k[e+12>>2];g=b+32|0;k[P>>2]=g}else{rf(fa,ha);g=k[P>>2]|0}b=k[fa>>2]|0;e=g-b|0;if((e|0)>32?(_=((e>>5)+-2|0)/2|0,$=b,aa=$+(_<<5)|0,ba=g,da=ba+-32|0,ea=k[da>>2]|0,(k[aa>>2]|0)>>>0>>0):0){h=k[ba+-28>>2]|0;i=k[ba+-24>>2]|0;j=k[ba+-20>>2]|0;e=ba+-16|0;k[ia>>2]=k[e>>2];k[ia+4>>2]=k[e+4>>2];k[ia+8>>2]=k[e+8>>2];k[ia+12>>2]=k[e+12>>2];e=_;b=da;g=aa;while(1){k[b>>2]=k[g>>2];k[b+4>>2]=k[g+4>>2];k[b+8>>2]=k[g+8>>2];k[b+12>>2]=k[g+12>>2];k[b+16>>2]=k[g+16>>2];k[b+20>>2]=k[g+20>>2];k[b+24>>2]=k[g+24>>2];k[b+28>>2]=k[g+28>>2];if(!e)break;e=(e+-1|0)/2|0;b=$+(e<<5)|0;if((k[b>>2]|0)>>>0>=ea>>>0)break;else{ka=g;g=b;b=ka}}k[g>>2]=ea;k[g+4>>2]=h;k[g+8>>2]=i;k[g+12>>2]=j;ka=g+16|0;k[ka>>2]=k[ia>>2];k[ka+4>>2]=k[ia+4>>2];k[ka+8>>2]=k[ia+8>>2];k[ka+12>>2]=k[ia+12>>2]}}}while(0);g=7}if((g|0)==17)Ka(13811,13849,231,13919);else if((g|0)==23)Ka(13932,13956,48,13984);else if((g|0)==25)Ka(14013,13956,49,13984);else if((g|0)==63){if(!b){r=ja;return}cn(b);r=ja;return}}function jb(a){a=a|0;var b=0,c=0,d=0,e=0,f=0,g=0,h=0,j=0,m=0,n=0,o=0,p=0,q=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,B=0;B=r;r=r+96|0;w=B+88|0;A=B+40|0;z=B;t=B+84|0;x=B+80|0;o=a+148|0;k[o>>2]=0;e=a+164|0;if(k[e>>2]|0){c=a+160|0;b=k[c>>2]|0;if(b|0)do{y=b;b=k[b>>2]|0;cn(y)}while((b|0)!=0);k[c>>2]=0;c=k[a+156>>2]|0;if(c|0){d=a+152|0;b=0;do{k[(k[d>>2]|0)+(b<<2)>>2]=0;b=b+1|0}while((b|0)!=(c|0))}k[e>>2]=0}s=a+4|0;b=k[(k[s>>2]|0)+20>>2]|0;m=b+8|0;j=k[m>>2]|0;m=k[m+4>>2]|0;n=b+16|0;g=n;f=k[g>>2]|0;g=k[g+4>>2]|0;d=sl(f|0,g|0,4,0)|0;c=M;if((m|0)<(c|0)|(m|0)==(c|0)&j>>>0>>0){A=0;r=B;return A|0}h=k[b>>2]|0;e=h+f|0;e=l[e>>0]|l[e+1>>0]<<8|l[e+2>>0]<<16|l[e+3>>0]<<24;b=n;k[b>>2]=d;k[b+4>>2]=c;k[o>>2]=e;e=sl(f|0,g|0,8,0)|0;b=M;if((m|0)<(b|0)|(m|0)==(b|0)&j>>>0>>0){A=0;r=B;return A|0}c=h+d|0;c=l[c>>0]|l[c+1>>0]<<8|l[c+2>>0]<<16|l[c+3>>0]<<24;q=n;k[q>>2]=e;k[q+4>>2]=b;q=a+172|0;k[q>>2]=c;b=sl(f|0,g|0,12,0)|0;c=M;if((m|0)<(c|0)|(m|0)==(c|0)&j>>>0>>0){A=0;r=B;return A|0}p=h+e|0;p=l[p>>0]|l[p+1>>0]<<8|l[p+2>>0]<<16|l[p+3>>0]<<24;d=n;k[d>>2]=b;k[d+4>>2]=c;b=k[a+24>>2]|0;c=a+28|0;d=k[c>>2]|0;if((d|0)!=(b|0))k[c>>2]=d+(~((d+-4-b|0)>>>2)<<2);y=a+8|0;b=xk(60)|0;zl(b);c=k[y>>2]|0;k[y>>2]=b;if(c){Fh(c);cn(c);b=k[y>>2]|0;if(!b){A=0;r=B;return A|0}}Bj(b,p);c=a+176|0;d=k[c>>2]|0;e=a+180|0;b=k[e>>2]|0;if((b|0)!=(d|0))k[e>>2]=b+(~((b+-4-d|0)>>>2)<<2);Xh(c,p);b=a+188|0;c=k[b>>2]|0;d=a+192|0;e=k[d>>2]|0;if((e|0)!=(c|0))k[d>>2]=e+(~((e+-4-c|0)>>>2)<<2);Xh(b,p);b=k[a+36>>2]|0;c=a+40|0;d=k[c>>2]|0;if((d|0)!=(b|0))k[c>>2]=d+(~(((d+-12-b|0)>>>0)/12|0)*12|0);b=k[a+48>>2]|0;c=a+52|0;d=k[c>>2]|0;if((d|0)!=(b|0))k[c>>2]=d+(~((d+-4-b|0)>>>2)<<2);k[a+68>>2]=0;b=k[a+76>>2]|0;c=a+80|0;d=k[c>>2]|0;if((d|0)!=(b|0))k[c>>2]=d+(~((d+-4-b|0)>>>2)<<2);k[a+60>>2]=0;k[a+100>>2]=-1;k[a+108>>2]=-1;k[a+104>>2]=-1;b=k[(k[s>>2]|0)+20>>2]|0;v=b+8|0;u=k[v+4>>2]|0;c=b+16|0;e=c;d=k[e>>2]|0;e=k[e+4>>2]|0;if(!((u|0)>(e|0)|((u|0)==(e|0)?(k[v>>2]|0)>>>0>d>>>0:0))){A=0;r=B;return A|0}h=i[(k[b>>2]|0)+d>>0]|0;u=sl(d|0,e|0,1,0)|0;v=c;k[v>>2]=u;k[v+4>>2]=M;if(h<<24>>24<0){A=0;r=B;return A|0}u=a+228|0;g=k[u>>2]|0;v=a+232|0;b=k[v>>2]|0;if((b|0)!=(g|0))do{k[v>>2]=b+-116;c=k[b+-12>>2]|0;d=c;if(c|0){e=b+-8|0;f=k[e>>2]|0;if((f|0)!=(c|0))k[e>>2]=f+(~((f+-4-d|0)>>>2)<<2);cn(c)}c=k[b+-28>>2]|0;d=c;if(c|0){e=b+-24|0;f=k[e>>2]|0;if((f|0)!=(c|0))k[e>>2]=f+(~((f+-4-d|0)>>>2)<<2);cn(c)}c=k[b+-40>>2]|0;d=c;if(c|0){e=b+-36|0;f=k[e>>2]|0;if((f|0)!=(c|0))k[e>>2]=f+(~((f+-4-d|0)>>>2)<<2);cn(c)}Sh(b+-112|0);b=k[v>>2]|0}while((b|0)!=(g|0));o=h<<24>>24;Rg(u,o);b=k[(k[s>>2]|0)+20>>2]|0;h=b+8|0;g=k[h>>2]|0;h=k[h+4>>2]|0;j=b+16|0;d=j;c=k[d>>2]|0;d=k[d+4>>2]|0;m=sl(c|0,d|0,4,0)|0;e=M;if((h|0)<(e|0)|(h|0)==(e|0)&g>>>0>>0){A=0;r=B;return A|0}f=k[b>>2]|0;n=f+c|0;n=l[n>>0]|l[n+1>>0]<<8|l[n+2>>0]<<16|l[n+3>>0]<<24;b=j;k[b>>2]=m;k[b+4>>2]=e;if(p>>>0>>0){A=0;r=B;return A|0}b=sl(c|0,d|0,8,0)|0;c=M;if((h|0)<(c|0)|(h|0)==(c|0)&g>>>0>>0){A=0;r=B;return A|0}m=f+m|0;m=l[m>>0]|l[m+1>>0]<<8|l[m+2>>0]<<16|l[m+3>>0]<<24;g=j;k[g>>2]=b;k[g+4>>2]=c;g=a+136|0;b=(k[q>>2]|0)+m|0;i[w>>0]=1;lg(g,b,w);b=k[(k[s>>2]|0)+20>>2]|0;m=b+8|0;p=k[m>>2]|0;m=k[m+4>>2]|0;c=b+16|0;e=c;d=k[e>>2]|0;e=sl(d|0,k[e+4>>2]|0,4,0)|0;f=M;if((m|0)<(f|0)|(m|0)==(f|0)&p>>>0>>0)b=0;else{b=(k[b>>2]|0)+d|0;b=l[b>>0]|l[b+1>>0]<<8|l[b+2>>0]<<16|l[b+3>>0]<<24;p=c;k[p>>2]=e;k[p+4>>2]=f}rk(A);m=k[(k[s>>2]|0)+20>>2]|0;h=m+16|0;f=k[h>>2]|0;p=(k[m>>2]|0)+f+b|0;m=m+8|0;j=k[m>>2]|0;m=k[m+4>>2]|0;b=sl(f|0,k[h+4>>2]|0,b|0,0)|0;b=al(j|0,m|0,b|0,M|0)|0;Ck(A,p,b);b=hc(a,A)|0;if((b|0)==-1)b=0;else{c=a+240|0;k[a+328>>2]=a;m=(Va[k[(k[a>>2]|0)+32>>2]&127](a)|0)+20|0;m=k[m>>2]|0;j=k[m>>2]|0;m=k[m+16>>2]|0;p=(Va[k[(k[a>>2]|0)+32>>2]&127](a)|0)+20|0;p=k[p>>2]|0;h=p+8|0;p=p+16|0;p=al(k[h>>2]|0,k[h+4>>2]|0,k[p>>2]|0,k[p+4>>2]|0)|0;Ck(c,j+m|0,p);p=Va[k[(k[a>>2]|0)+36>>2]&127](a)|0;k[a+332>>2]=p;k[a+336>>2]=k[q>>2];k[a+324>>2]=o;rk(z);a:do if(Fg(c,z)|0){if((ab(a,n)|0)==-1){b=0;break}o=k[(k[s>>2]|0)+20>>2]|0;q=z+16|0;n=k[q>>2]|0;p=(k[z>>2]|0)+n|0;m=z+8|0;q=al(k[m>>2]|0,k[m+4>>2]|0,n|0,k[q+4>>2]|0)|0;Ck(o,p,q);s=(k[(k[s>>2]|0)+20>>2]|0)+16|0;q=s;q=sl(k[q>>2]|0,k[q+4>>2]|0,b|0,((b|0)<0)<<31>>31|0)|0;k[s>>2]=q;k[s+4>>2]=M;do if((k[v>>2]|0)!=(k[u>>2]|0)){s=k[y>>2]|0;if(((k[s+4>>2]|0)-(k[s>>2]|0)|0)<=0)break;b=0;do{k[t>>2]=b;k[w>>2]=k[t>>2];b=b+3|0;if(!(Ue(a,w)|0)){b=0;break a}s=k[y>>2]|0}while((b|0)<((((k[s+4>>2]|0)-(k[s>>2]|0)|0)/12|0)*3|0))}while(0);Oj(c);Oj(a+280|0);e=k[y>>2]|0;s=k[e+28>>2]|0;f=k[e+24>>2]|0;q=f;if((s-f|0)>0){m=k[g>>2]|0;n=s-f>>2;o=e+12|0;j=0;do{do if(k[m+(j>>>5<<2)>>2]&1<<(j&31)|0){p=q+(j<<2)|0;h=k[p>>2]|0;if((h|0)<0)break;b=h+1|0;b=((b|0)%3|0|0)==0?h+-2|0:b;if((b|0)>=0){g=k[o>>2]|0;c=k[g+(b<<2)>>2]|0;b=c+1|0;b:do if((c|0)<0)b=h;else{c=((b|0)%3|0|0)==0?c+-2|0:b;if((c|0)>-1&(c|0)!=(h|0))b=c;else{b=h;break}while(1){c=b+1|0;c=((c|0)%3|0|0)==0?b+-2|0:c;if((c|0)<0)break b;c=k[g+(c<<2)>>2]|0;d=c+1|0;if((c|0)<0)break b;c=((d|0)%3|0|0)==0?c+-2|0:d;if((c|0)>-1&(c|0)!=(h|0))b=c;else break}}while(0);if((c|0)==(h|0))break}else b=h;k[p>>2]=b}while(0);j=j+1|0}while((j|0)<(n|0))}d=k[v>>2]|0;t=k[u>>2]|0;b=t;if((d|0)==(t|0)){e=s;c=d}else{f=0;do{uh(b+(f*116|0)+4|0,e)|0;b=k[u>>2]|0;c=k[b+(f*116|0)+104>>2]|0;d=k[b+(f*116|0)+108>>2]|0;if((c|0)!=(d|0))do{k[x>>2]=k[c>>2];k[w>>2]=k[x>>2];xf(b+(f*116|0)+4|0,w);c=c+4|0;b=k[u>>2]|0}while((c|0)!=(d|0));pj(b+(f*116|0)+4|0,0,0);f=f+1|0;d=k[v>>2]|0;c=k[u>>2]|0;b=c;e=k[y>>2]|0}while(f>>>0<((d-c|0)/116|0)>>>0);f=k[e+24>>2]|0;e=k[e+28>>2]|0}e=e-f>>2;f=a+212|0;j=a+216|0;m=k[j>>2]|0;h=k[f>>2]|0;g=m-h>>2;do if(e>>>0>g>>>0){jh(f,e-g|0);b=k[u>>2]|0;d=k[v>>2]|0;c=b}else{if(e>>>0>=g>>>0)break;e=h+(e<<2)|0;if((m|0)==(e|0))break;k[j>>2]=m+(~((m+-4-e|0)>>>2)<<2)}while(0);if((d|0)!=(c|0)){m=0;while(1){f=(k[b+(m*116|0)+60>>2]|0)-(k[b+(m*116|0)+56>>2]|0)>>2;g=k[y>>2]|0;g=(k[g+28>>2]|0)-(k[g+24>>2]|0)>>2;f=(f|0)<(g|0)?g:f;g=b+(m*116|0)+88|0;h=b+(m*116|0)+92|0;j=k[h>>2]|0;e=k[g>>2]|0;b=j-e>>2;do if(f>>>0>b>>>0){jh(g,f-b|0);c=k[u>>2]|0;d=k[v>>2]|0}else{if(f>>>0>=b>>>0)break;b=e+(f<<2)|0;if((j|0)==(b|0))break;k[h>>2]=j+(~((j+-4-b|0)>>>2)<<2)}while(0);m=m+1|0;if(m>>>0>=((d-c|0)/116|0)>>>0)break;else b=c}}b=sb(a)|0}else b=0;while(0);fn(z+24|0)}fn(A+24|0);A=b;r=B;return A|0}function kb(a){a=a|0;var b=0,c=0,d=0,e=0,f=0,g=0,h=0,j=0,m=0,n=0,o=0,p=0,q=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,B=0;B=r;r=r+96|0;w=B+88|0;A=B+40|0;z=B;t=B+84|0;x=B+80|0;o=a+148|0;k[o>>2]=0;e=a+164|0;if(k[e>>2]|0){c=a+160|0;b=k[c>>2]|0;if(b|0)do{y=b;b=k[b>>2]|0;cn(y)}while((b|0)!=0);k[c>>2]=0;c=k[a+156>>2]|0;if(c|0){d=a+152|0;b=0;do{k[(k[d>>2]|0)+(b<<2)>>2]=0;b=b+1|0}while((b|0)!=(c|0))}k[e>>2]=0}s=a+4|0;b=k[(k[s>>2]|0)+20>>2]|0;m=b+8|0;j=k[m>>2]|0;m=k[m+4>>2]|0;n=b+16|0;g=n;f=k[g>>2]|0;g=k[g+4>>2]|0;d=sl(f|0,g|0,4,0)|0;c=M;if((m|0)<(c|0)|(m|0)==(c|0)&j>>>0>>0){A=0;r=B;return A|0}h=k[b>>2]|0;e=h+f|0;e=l[e>>0]|l[e+1>>0]<<8|l[e+2>>0]<<16|l[e+3>>0]<<24;b=n;k[b>>2]=d;k[b+4>>2]=c;k[o>>2]=e;e=sl(f|0,g|0,8,0)|0;b=M;if((m|0)<(b|0)|(m|0)==(b|0)&j>>>0>>0){A=0;r=B;return A|0}c=h+d|0;c=l[c>>0]|l[c+1>>0]<<8|l[c+2>>0]<<16|l[c+3>>0]<<24;q=n;k[q>>2]=e;k[q+4>>2]=b;q=a+172|0;k[q>>2]=c;b=sl(f|0,g|0,12,0)|0;c=M;if((m|0)<(c|0)|(m|0)==(c|0)&j>>>0>>0){A=0;r=B;return A|0}p=h+e|0;p=l[p>>0]|l[p+1>>0]<<8|l[p+2>>0]<<16|l[p+3>>0]<<24;d=n;k[d>>2]=b;k[d+4>>2]=c;b=k[a+24>>2]|0;c=a+28|0;d=k[c>>2]|0;if((d|0)!=(b|0))k[c>>2]=d+(~((d+-4-b|0)>>>2)<<2);y=a+8|0;b=xk(60)|0;zl(b);c=k[y>>2]|0;k[y>>2]=b;if(c){Fh(c);cn(c);b=k[y>>2]|0;if(!b){A=0;r=B;return A|0}}Bj(b,p);c=a+176|0;d=k[c>>2]|0;e=a+180|0;b=k[e>>2]|0;if((b|0)!=(d|0))k[e>>2]=b+(~((b+-4-d|0)>>>2)<<2);Xh(c,p);b=a+188|0;c=k[b>>2]|0;d=a+192|0;e=k[d>>2]|0;if((e|0)!=(c|0))k[d>>2]=e+(~((e+-4-c|0)>>>2)<<2);Xh(b,p);b=k[a+36>>2]|0;c=a+40|0;d=k[c>>2]|0;if((d|0)!=(b|0))k[c>>2]=d+(~(((d+-12-b|0)>>>0)/12|0)*12|0);b=k[a+48>>2]|0;c=a+52|0;d=k[c>>2]|0;if((d|0)!=(b|0))k[c>>2]=d+(~((d+-4-b|0)>>>2)<<2);k[a+68>>2]=0;b=k[a+76>>2]|0;c=a+80|0;d=k[c>>2]|0;if((d|0)!=(b|0))k[c>>2]=d+(~((d+-4-b|0)>>>2)<<2);k[a+60>>2]=0;k[a+100>>2]=-1;k[a+108>>2]=-1;k[a+104>>2]=-1;b=k[(k[s>>2]|0)+20>>2]|0;v=b+8|0;u=k[v+4>>2]|0;c=b+16|0;e=c;d=k[e>>2]|0;e=k[e+4>>2]|0;if(!((u|0)>(e|0)|((u|0)==(e|0)?(k[v>>2]|0)>>>0>d>>>0:0))){A=0;r=B;return A|0}h=i[(k[b>>2]|0)+d>>0]|0;u=sl(d|0,e|0,1,0)|0;v=c;k[v>>2]=u;k[v+4>>2]=M;if(h<<24>>24<0){A=0;r=B;return A|0}u=a+228|0;g=k[u>>2]|0;v=a+232|0;b=k[v>>2]|0;if((b|0)!=(g|0))do{k[v>>2]=b+-116;c=k[b+-12>>2]|0;d=c;if(c|0){e=b+-8|0;f=k[e>>2]|0;if((f|0)!=(c|0))k[e>>2]=f+(~((f+-4-d|0)>>>2)<<2);cn(c)}c=k[b+-28>>2]|0;d=c;if(c|0){e=b+-24|0;f=k[e>>2]|0;if((f|0)!=(c|0))k[e>>2]=f+(~((f+-4-d|0)>>>2)<<2);cn(c)}c=k[b+-40>>2]|0;d=c;if(c|0){e=b+-36|0;f=k[e>>2]|0;if((f|0)!=(c|0))k[e>>2]=f+(~((f+-4-d|0)>>>2)<<2);cn(c)}Sh(b+-112|0);b=k[v>>2]|0}while((b|0)!=(g|0));o=h<<24>>24;Rg(u,o);b=k[(k[s>>2]|0)+20>>2]|0;h=b+8|0;g=k[h>>2]|0;h=k[h+4>>2]|0;j=b+16|0;d=j;c=k[d>>2]|0;d=k[d+4>>2]|0;m=sl(c|0,d|0,4,0)|0;e=M;if((h|0)<(e|0)|(h|0)==(e|0)&g>>>0>>0){A=0;r=B;return A|0}f=k[b>>2]|0;n=f+c|0;n=l[n>>0]|l[n+1>>0]<<8|l[n+2>>0]<<16|l[n+3>>0]<<24;b=j;k[b>>2]=m;k[b+4>>2]=e;if(p>>>0>>0){A=0;r=B;return A|0}b=sl(c|0,d|0,8,0)|0;c=M;if((h|0)<(c|0)|(h|0)==(c|0)&g>>>0>>0){A=0;r=B;return A|0}m=f+m|0;m=l[m>>0]|l[m+1>>0]<<8|l[m+2>>0]<<16|l[m+3>>0]<<24;g=j;k[g>>2]=b;k[g+4>>2]=c;g=a+136|0;b=(k[q>>2]|0)+m|0;i[w>>0]=1;lg(g,b,w);b=k[(k[s>>2]|0)+20>>2]|0;m=b+8|0;p=k[m>>2]|0;m=k[m+4>>2]|0;c=b+16|0;e=c;d=k[e>>2]|0;e=sl(d|0,k[e+4>>2]|0,4,0)|0;f=M;if((m|0)<(f|0)|(m|0)==(f|0)&p>>>0>>0)b=0;else{b=(k[b>>2]|0)+d|0;b=l[b>>0]|l[b+1>>0]<<8|l[b+2>>0]<<16|l[b+3>>0]<<24;p=c;k[p>>2]=e;k[p+4>>2]=f}rk(A);m=k[(k[s>>2]|0)+20>>2]|0;h=m+16|0;f=k[h>>2]|0;p=(k[m>>2]|0)+f+b|0;m=m+8|0;j=k[m>>2]|0;m=k[m+4>>2]|0;b=sl(f|0,k[h+4>>2]|0,b|0,0)|0;b=al(j|0,m|0,b|0,M|0)|0;Ck(A,p,b);b=hc(a,A)|0;if((b|0)==-1)b=0;else{c=a+240|0;k[a+328>>2]=a;m=(Va[k[(k[a>>2]|0)+32>>2]&127](a)|0)+20|0;m=k[m>>2]|0;j=k[m>>2]|0;m=k[m+16>>2]|0;p=(Va[k[(k[a>>2]|0)+32>>2]&127](a)|0)+20|0;p=k[p>>2]|0;h=p+8|0;p=p+16|0;p=al(k[h>>2]|0,k[h+4>>2]|0,k[p>>2]|0,k[p+4>>2]|0)|0;Ck(c,j+m|0,p);p=Va[k[(k[a>>2]|0)+36>>2]&127](a)|0;k[a+332>>2]=p;k[a+336>>2]=k[q>>2];k[a+324>>2]=o;rk(z);a:do if(dd(c,z)|0){if(($a(a,n)|0)==-1){b=0;break}o=k[(k[s>>2]|0)+20>>2]|0;q=z+16|0;n=k[q>>2]|0;p=(k[z>>2]|0)+n|0;m=z+8|0;q=al(k[m>>2]|0,k[m+4>>2]|0,n|0,k[q+4>>2]|0)|0;Ck(o,p,q);s=(k[(k[s>>2]|0)+20>>2]|0)+16|0;q=s;q=sl(k[q>>2]|0,k[q+4>>2]|0,b|0,((b|0)<0)<<31>>31|0)|0;k[s>>2]=q;k[s+4>>2]=M;do if((k[v>>2]|0)!=(k[u>>2]|0)){s=k[y>>2]|0;if(((k[s+4>>2]|0)-(k[s>>2]|0)|0)<=0)break;b=0;do{k[t>>2]=b;k[w>>2]=k[t>>2];b=b+3|0;if(!(Ue(a,w)|0)){b=0;break a}s=k[y>>2]|0}while((b|0)<((((k[s+4>>2]|0)-(k[s>>2]|0)|0)/12|0)*3|0))}while(0);Oj(c);Oj(a+280|0);e=k[y>>2]|0;s=k[e+28>>2]|0;f=k[e+24>>2]|0;q=f;if((s-f|0)>0){m=k[g>>2]|0;n=s-f>>2;o=e+12|0;j=0;do{do if(k[m+(j>>>5<<2)>>2]&1<<(j&31)|0){p=q+(j<<2)|0;h=k[p>>2]|0;if((h|0)<0)break;b=h+1|0;b=((b|0)%3|0|0)==0?h+-2|0:b;if((b|0)>=0){g=k[o>>2]|0;c=k[g+(b<<2)>>2]|0;b=c+1|0;b:do if((c|0)<0)b=h;else{c=((b|0)%3|0|0)==0?c+-2|0:b;if((c|0)>-1&(c|0)!=(h|0))b=c;else{b=h;break}while(1){c=b+1|0;c=((c|0)%3|0|0)==0?b+-2|0:c;if((c|0)<0)break b;c=k[g+(c<<2)>>2]|0;d=c+1|0;if((c|0)<0)break b;c=((d|0)%3|0|0)==0?c+-2|0:d;if((c|0)>-1&(c|0)!=(h|0))b=c;else break}}while(0);if((c|0)==(h|0))break}else b=h;k[p>>2]=b}while(0);j=j+1|0}while((j|0)<(n|0))}d=k[v>>2]|0;t=k[u>>2]|0;b=t;if((d|0)==(t|0)){e=s;c=d}else{f=0;do{uh(b+(f*116|0)+4|0,e)|0;b=k[u>>2]|0;c=k[b+(f*116|0)+104>>2]|0;d=k[b+(f*116|0)+108>>2]|0;if((c|0)!=(d|0))do{k[x>>2]=k[c>>2];k[w>>2]=k[x>>2];xf(b+(f*116|0)+4|0,w);c=c+4|0;b=k[u>>2]|0}while((c|0)!=(d|0));pj(b+(f*116|0)+4|0,0,0);f=f+1|0;d=k[v>>2]|0;c=k[u>>2]|0;b=c;e=k[y>>2]|0}while(f>>>0<((d-c|0)/116|0)>>>0);f=k[e+24>>2]|0;e=k[e+28>>2]|0}e=e-f>>2;f=a+212|0;j=a+216|0;m=k[j>>2]|0;h=k[f>>2]|0;g=m-h>>2;do if(e>>>0>g>>>0){jh(f,e-g|0);b=k[u>>2]|0;d=k[v>>2]|0;c=b}else{if(e>>>0>=g>>>0)break;e=h+(e<<2)|0;if((m|0)==(e|0))break;k[j>>2]=m+(~((m+-4-e|0)>>>2)<<2)}while(0);if((d|0)!=(c|0)){m=0;while(1){f=(k[b+(m*116|0)+60>>2]|0)-(k[b+(m*116|0)+56>>2]|0)>>2;g=k[y>>2]|0;g=(k[g+28>>2]|0)-(k[g+24>>2]|0)>>2;f=(f|0)<(g|0)?g:f;g=b+(m*116|0)+88|0;h=b+(m*116|0)+92|0;j=k[h>>2]|0;e=k[g>>2]|0;b=j-e>>2;do if(f>>>0>b>>>0){jh(g,f-b|0);c=k[u>>2]|0;d=k[v>>2]|0}else{if(f>>>0>=b>>>0)break;b=e+(f<<2)|0;if((j|0)==(b|0))break;k[h>>2]=j+(~((j+-4-b|0)>>>2)<<2)}while(0);m=m+1|0;if(m>>>0>=((d-c|0)/116|0)>>>0)break;else b=c}}b=sb(a)|0}else b=0;while(0);fn(z+24|0)}fn(A+24|0);A=b;r=B;return A|0}function lb(a){a=a|0;var b=0,c=0,d=0,e=0,f=0,g=0,h=0,j=0,m=0,n=0,o=0,p=0,q=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,B=0;B=r;r=r+96|0;w=B+88|0;A=B+40|0;z=B;t=B+84|0;x=B+80|0;o=a+148|0;k[o>>2]=0;e=a+164|0;if(k[e>>2]|0){c=a+160|0;b=k[c>>2]|0;if(b|0)do{y=b;b=k[b>>2]|0;cn(y)}while((b|0)!=0);k[c>>2]=0;c=k[a+156>>2]|0;if(c|0){d=a+152|0;b=0;do{k[(k[d>>2]|0)+(b<<2)>>2]=0;b=b+1|0}while((b|0)!=(c|0))}k[e>>2]=0}s=a+4|0;b=k[(k[s>>2]|0)+20>>2]|0;m=b+8|0;j=k[m>>2]|0;m=k[m+4>>2]|0;n=b+16|0;g=n;f=k[g>>2]|0;g=k[g+4>>2]|0;d=sl(f|0,g|0,4,0)|0;c=M;if((m|0)<(c|0)|(m|0)==(c|0)&j>>>0>>0){A=0;r=B;return A|0}h=k[b>>2]|0;e=h+f|0;e=l[e>>0]|l[e+1>>0]<<8|l[e+2>>0]<<16|l[e+3>>0]<<24;b=n;k[b>>2]=d;k[b+4>>2]=c;k[o>>2]=e;e=sl(f|0,g|0,8,0)|0;b=M;if((m|0)<(b|0)|(m|0)==(b|0)&j>>>0>>0){A=0;r=B;return A|0}c=h+d|0;c=l[c>>0]|l[c+1>>0]<<8|l[c+2>>0]<<16|l[c+3>>0]<<24;q=n;k[q>>2]=e;k[q+4>>2]=b;q=a+172|0;k[q>>2]=c;b=sl(f|0,g|0,12,0)|0;c=M;if((m|0)<(c|0)|(m|0)==(c|0)&j>>>0>>0){A=0;r=B;return A|0}p=h+e|0;p=l[p>>0]|l[p+1>>0]<<8|l[p+2>>0]<<16|l[p+3>>0]<<24;d=n;k[d>>2]=b;k[d+4>>2]=c;b=k[a+24>>2]|0;c=a+28|0;d=k[c>>2]|0;if((d|0)!=(b|0))k[c>>2]=d+(~((d+-4-b|0)>>>2)<<2);y=a+8|0;b=xk(60)|0;zl(b);c=k[y>>2]|0;k[y>>2]=b;if(c){Fh(c);cn(c);b=k[y>>2]|0;if(!b){A=0;r=B;return A|0}}Bj(b,p);c=a+176|0;d=k[c>>2]|0;e=a+180|0;b=k[e>>2]|0;if((b|0)!=(d|0))k[e>>2]=b+(~((b+-4-d|0)>>>2)<<2);Xh(c,p);b=a+188|0;c=k[b>>2]|0;d=a+192|0;e=k[d>>2]|0;if((e|0)!=(c|0))k[d>>2]=e+(~((e+-4-c|0)>>>2)<<2);Xh(b,p);b=k[a+36>>2]|0;c=a+40|0;d=k[c>>2]|0;if((d|0)!=(b|0))k[c>>2]=d+(~(((d+-12-b|0)>>>0)/12|0)*12|0);b=k[a+48>>2]|0;c=a+52|0;d=k[c>>2]|0;if((d|0)!=(b|0))k[c>>2]=d+(~((d+-4-b|0)>>>2)<<2);k[a+68>>2]=0;b=k[a+76>>2]|0;c=a+80|0;d=k[c>>2]|0;if((d|0)!=(b|0))k[c>>2]=d+(~((d+-4-b|0)>>>2)<<2);k[a+60>>2]=0;k[a+100>>2]=-1;k[a+108>>2]=-1;k[a+104>>2]=-1;b=k[(k[s>>2]|0)+20>>2]|0;v=b+8|0;u=k[v+4>>2]|0;c=b+16|0;e=c;d=k[e>>2]|0;e=k[e+4>>2]|0;if(!((u|0)>(e|0)|((u|0)==(e|0)?(k[v>>2]|0)>>>0>d>>>0:0))){A=0;r=B;return A|0}h=i[(k[b>>2]|0)+d>>0]|0;u=sl(d|0,e|0,1,0)|0;v=c;k[v>>2]=u;k[v+4>>2]=M;if(h<<24>>24<0){A=0;r=B;return A|0}u=a+228|0;g=k[u>>2]|0;v=a+232|0;b=k[v>>2]|0;if((b|0)!=(g|0))do{k[v>>2]=b+-116;c=k[b+-12>>2]|0;d=c;if(c|0){e=b+-8|0;f=k[e>>2]|0;if((f|0)!=(c|0))k[e>>2]=f+(~((f+-4-d|0)>>>2)<<2);cn(c)}c=k[b+-28>>2]|0;d=c;if(c|0){e=b+-24|0;f=k[e>>2]|0;if((f|0)!=(c|0))k[e>>2]=f+(~((f+-4-d|0)>>>2)<<2);cn(c)}c=k[b+-40>>2]|0;d=c;if(c|0){e=b+-36|0;f=k[e>>2]|0;if((f|0)!=(c|0))k[e>>2]=f+(~((f+-4-d|0)>>>2)<<2);cn(c)}Sh(b+-112|0);b=k[v>>2]|0}while((b|0)!=(g|0));o=h<<24>>24;Rg(u,o);b=k[(k[s>>2]|0)+20>>2]|0;h=b+8|0;g=k[h>>2]|0;h=k[h+4>>2]|0;j=b+16|0;d=j;c=k[d>>2]|0;d=k[d+4>>2]|0;m=sl(c|0,d|0,4,0)|0;e=M;if((h|0)<(e|0)|(h|0)==(e|0)&g>>>0>>0){A=0;r=B;return A|0}f=k[b>>2]|0;n=f+c|0;n=l[n>>0]|l[n+1>>0]<<8|l[n+2>>0]<<16|l[n+3>>0]<<24;b=j;k[b>>2]=m;k[b+4>>2]=e;if(p>>>0>>0){A=0;r=B;return A|0}b=sl(c|0,d|0,8,0)|0;c=M;if((h|0)<(c|0)|(h|0)==(c|0)&g>>>0>>0){A=0;r=B;return A|0}p=f+m|0;p=l[p>>0]|l[p+1>>0]<<8|l[p+2>>0]<<16|l[p+3>>0]<<24;g=j;k[g>>2]=b;k[g+4>>2]=c;g=a+136|0;b=(k[q>>2]|0)+p|0;i[w>>0]=1;lg(g,b,w);b=k[(k[s>>2]|0)+20>>2]|0;p=b+8|0;q=k[p>>2]|0;p=k[p+4>>2]|0;c=b+16|0;e=c;d=k[e>>2]|0;e=sl(d|0,k[e+4>>2]|0,4,0)|0;f=M;if((p|0)<(f|0)|(p|0)==(f|0)&q>>>0>>0)b=0;else{b=(k[b>>2]|0)+d|0;b=l[b>>0]|l[b+1>>0]<<8|l[b+2>>0]<<16|l[b+3>>0]<<24;q=c;k[q>>2]=e;k[q+4>>2]=f}rk(A);p=k[(k[s>>2]|0)+20>>2]|0;j=p+16|0;h=k[j>>2]|0;q=(k[p>>2]|0)+h+b|0;p=p+8|0;m=k[p>>2]|0;p=k[p+4>>2]|0;b=sl(h|0,k[j+4>>2]|0,b|0,0)|0;b=al(m|0,p|0,b|0,M|0)|0;Ck(A,q,b);b=hc(a,A)|0;if((b|0)==-1)b=0;else{c=a+240|0;k[a+328>>2]=a;p=(Va[k[(k[a>>2]|0)+32>>2]&127](a)|0)+20|0;p=k[p>>2]|0;m=k[p>>2]|0;p=k[p+16>>2]|0;q=(Va[k[(k[a>>2]|0)+32>>2]&127](a)|0)+20|0;q=k[q>>2]|0;j=q+8|0;q=q+16|0;q=al(k[j>>2]|0,k[j+4>>2]|0,k[q>>2]|0,k[q+4>>2]|0)|0;Ck(c,m+p|0,q);k[a+324>>2]=o;rk(z);a:do if(Vd(c,z)|0){if((bb(a,n)|0)==-1){b=0;break}o=k[(k[s>>2]|0)+20>>2]|0;q=z+16|0;n=k[q>>2]|0;p=(k[z>>2]|0)+n|0;m=z+8|0;q=al(k[m>>2]|0,k[m+4>>2]|0,n|0,k[q+4>>2]|0)|0;Ck(o,p,q);s=(k[(k[s>>2]|0)+20>>2]|0)+16|0;q=s;q=sl(k[q>>2]|0,k[q+4>>2]|0,b|0,((b|0)<0)<<31>>31|0)|0;k[s>>2]=q;k[s+4>>2]=M;do if((k[v>>2]|0)!=(k[u>>2]|0)){s=k[y>>2]|0;if(((k[s+4>>2]|0)-(k[s>>2]|0)|0)<=0)break;b=0;do{k[t>>2]=b;k[w>>2]=k[t>>2];b=b+3|0;if(!(Ue(a,w)|0)){b=0;break a}s=k[y>>2]|0}while((b|0)<((((k[s+4>>2]|0)-(k[s>>2]|0)|0)/12|0)*3|0))}while(0);Oj(c);Oj(a+280|0);e=k[y>>2]|0;s=k[e+28>>2]|0;f=k[e+24>>2]|0;q=f;if((s-f|0)>0){m=k[g>>2]|0;n=s-f>>2;o=e+12|0;j=0;do{do if(k[m+(j>>>5<<2)>>2]&1<<(j&31)|0){p=q+(j<<2)|0;h=k[p>>2]|0;if((h|0)<0)break;b=h+1|0;b=((b|0)%3|0|0)==0?h+-2|0:b;if((b|0)>=0){g=k[o>>2]|0;c=k[g+(b<<2)>>2]|0;b=c+1|0;b:do if((c|0)<0)b=h;else{c=((b|0)%3|0|0)==0?c+-2|0:b;if((c|0)>-1&(c|0)!=(h|0))b=c;else{b=h;break}while(1){c=b+1|0;c=((c|0)%3|0|0)==0?b+-2|0:c;if((c|0)<0)break b;c=k[g+(c<<2)>>2]|0;d=c+1|0;if((c|0)<0)break b;c=((d|0)%3|0|0)==0?c+-2|0:d;if((c|0)>-1&(c|0)!=(h|0))b=c;else break}}while(0);if((c|0)==(h|0))break}else b=h;k[p>>2]=b}while(0);j=j+1|0}while((j|0)<(n|0))}d=k[v>>2]|0;t=k[u>>2]|0;b=t;if((d|0)==(t|0)){e=s;c=d}else{f=0;do{uh(b+(f*116|0)+4|0,e)|0;b=k[u>>2]|0;c=k[b+(f*116|0)+104>>2]|0;d=k[b+(f*116|0)+108>>2]|0;if((c|0)!=(d|0))do{k[x>>2]=k[c>>2];k[w>>2]=k[x>>2];xf(b+(f*116|0)+4|0,w);c=c+4|0;b=k[u>>2]|0}while((c|0)!=(d|0));pj(b+(f*116|0)+4|0,0,0);f=f+1|0;d=k[v>>2]|0;c=k[u>>2]|0;b=c;e=k[y>>2]|0}while(f>>>0<((d-c|0)/116|0)>>>0);f=k[e+24>>2]|0;e=k[e+28>>2]|0}e=e-f>>2;f=a+212|0;j=a+216|0;m=k[j>>2]|0;h=k[f>>2]|0;g=m-h>>2;do if(e>>>0>g>>>0){jh(f,e-g|0);b=k[u>>2]|0;d=k[v>>2]|0;c=b}else{if(e>>>0>=g>>>0)break;e=h+(e<<2)|0;if((m|0)==(e|0))break;k[j>>2]=m+(~((m+-4-e|0)>>>2)<<2)}while(0);if((d|0)!=(c|0)){m=0;while(1){f=(k[b+(m*116|0)+60>>2]|0)-(k[b+(m*116|0)+56>>2]|0)>>2;g=k[y>>2]|0;g=(k[g+28>>2]|0)-(k[g+24>>2]|0)>>2;f=(f|0)<(g|0)?g:f;g=b+(m*116|0)+88|0;h=b+(m*116|0)+92|0;j=k[h>>2]|0;e=k[g>>2]|0;b=j-e>>2;do if(f>>>0>b>>>0){jh(g,f-b|0);c=k[u>>2]|0;d=k[v>>2]|0}else{if(f>>>0>=b>>>0)break;b=e+(f<<2)|0;if((j|0)==(b|0))break;k[h>>2]=j+(~((j+-4-b|0)>>>2)<<2)}while(0);m=m+1|0;if(m>>>0>=((d-c|0)/116|0)>>>0)break;else b=c}}b=sb(a)|0}else b=0;while(0);fn(z+24|0)}fn(A+24|0);A=b;r=B;return A|0}function mb(a,b,c,d,e,f){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;f=f|0;var g=0,h=0,j=0,m=0,n=0,o=0,p=0,q=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,B=0,C=0,D=0,E=0,F=0,G=0,H=0,I=0,J=0,K=0,L=0,M=0,N=0,O=0,P=0,Q=0,R=0,S=0,T=0,U=0,V=0,W=0,X=0,Y=0,Z=0,_=0,aa=0,ba=0,ca=0;ca=r;r=r+112|0;N=ca+100|0;M=ca+96|0;ba=ca+48|0;aa=ca+32|0;S=ca+104|0;T=ca+8|0;O=ca+4|0;P=ca;W=a+8|0;k[W>>2]=e;Q=k[a+24>>2]|0;R=k[a+28>>2]|0;d=ba;f=d+48|0;do{k[d>>2]=0;d=d+4|0}while((d|0)<(f|0));if(!e){d=0;f=0}else{jh(ba,e);d=k[ba+12>>2]|0;f=k[ba+16>>2]|0}g=ba+16|0;h=f-d>>2;if(h>>>0>=e>>>0){if(h>>>0>e>>>0?(j=d+(e<<2)|0,(f|0)!=(j|0)):0)k[g>>2]=f+(~((f+-4-j|0)>>>2)<<2)}else jh(ba+12|0,e-h|0);d=ba+24|0;f=ba+28|0;j=k[f>>2]|0;h=k[d>>2]|0;g=j-h>>2;if(g>>>0>=e>>>0){if(g>>>0>e>>>0?(m=h+(e<<2)|0,(j|0)!=(m|0)):0)k[f>>2]=j+(~((j+-4-m|0)>>>2)<<2)}else jh(d,e-g|0);d=ba+36|0;f=ba+40|0;j=k[f>>2]|0;h=k[d>>2]|0;g=j-h>>2;if(g>>>0>=e>>>0){if(g>>>0>e>>>0?(n=h+(e<<2)|0,(j|0)!=(n|0)):0)k[f>>2]=j+(~((j+-4-n|0)>>>2)<<2)}else jh(d,e-g|0);bj(aa,e);E=a+32|0;h=k[E>>2]|0;g=k[h+4>>2]|0;f=k[h>>2]|0;d=g-f|0;a:do if((d|0)>4){A=Q+64|0;B=Q+28|0;C=(e|0)>0;D=T+4|0;F=T+8|0;G=T+12|0;H=T+12|0;I=T+16|0;J=aa+4|0;K=S+1|0;L=e<<2;v=d>>2;d=h;b:while(1){z=v+-1|0;if(g-f>>2>>>0<=z>>>0){_=8;break}q=k[f+(z<<2)>>2]|0;p=q+((q|0)<0?0:((q>>>0)%3|0|0)==0?2:-1)|0;s=p>>>5;t=1<<(p&31);u=(p|0)<0;o=1;d=0;f=q;c:while(1){do{if((f|0)<=-1){x=d;break c}h=k[ba+(d*12|0)>>2]|0;if(((k[(k[Q>>2]|0)+(f>>>5<<2)>>2]&1<<(f&31)|0)==0?(V=k[(k[(k[A>>2]|0)+12>>2]|0)+(f<<2)>>2]|0,(V|0)>=0):0)?(Z=k[B>>2]|0,y=k[R>>2]|0,X=k[y+(k[Z+(V<<2)>>2]<<2)>>2]|0,Y=V+1|0,Y=k[y+(k[Z+((((Y|0)%3|0|0)==0?V+-2|0:Y)<<2)>>2]<<2)>>2]|0,Z=k[y+(k[Z+((((V>>>0)%3|0|0)==0?2:-1)+V<<2)>>2]<<2)>>2]|0,(X|0)<(z|0)&(Y|0)<(z|0)&(Z|0)<(z|0)):0){j=$(X,e)|0;m=$(Y,e)|0;n=$(Z,e)|0;if(C){g=0;do{k[h+(g<<2)>>2]=(k[b+(g+n<<2)>>2]|0)+(k[b+(g+m<<2)>>2]|0)-(k[b+(g+j<<2)>>2]|0);g=g+1|0}while((g|0)!=(e|0))}d=d+1|0;if((d|0)==4){x=4;break c}}do if(o){g=f+1|0;f=((g|0)%3|0|0)==0?f+-2|0:g;g=k[Q>>2]|0;if(!(k[g+(f>>>5<<2)>>2]&1<<(f&31))){if((f|0)>=0){f=k[(k[(k[A>>2]|0)+12>>2]|0)+(f<<2)>>2]|0;h=f+1|0;if((f|0)>=0)f=((h|0)%3|0|0)==0?f+-2|0:h}}else f=-1073741824}else{f=(((f>>>0)%3|0|0)==0?2:-1)+f|0;g=k[Q>>2]|0;if(!(k[g+(f>>>5<<2)>>2]&1<<(f&31))){if((f|0)>=0){f=k[(k[(k[A>>2]|0)+12>>2]|0)+(f<<2)>>2]|0;if((f|0)>=0)if(!((f>>>0)%3|0)){f=f+2|0;break}else{f=f+-1|0;break}}}else f=-1073741824}while(0);if((f|0)==(q|0)){x=d;break c}}while(!(o&(f|0)<0));f=(t&k[g+(s<<2)>>2]|0)!=0;if(f|u){o=0;f=f?-1073741824:p;continue}f=k[(k[(k[A>>2]|0)+12>>2]|0)+(p<<2)>>2]|0;if((f|0)<0){o=0;continue}if(!((f>>>0)%3|0)){o=0;f=f+2|0;continue}else{o=0;f=f+-1|0;continue}}y=$(z,e)|0;k[T>>2]=2147483647;i[D>>0]=0;k[F>>2]=0;k[F+4>>2]=0;k[F+8>>2]=0;k[F+12>>2]=0;g=$(v+-2|0,e)|0;if(C){f=0;d=0;do{w=(k[b+(f+y<<2)>>2]|0)-(k[b+(f+g<<2)>>2]|0)|0;d=((w|0)>-1?w:0-w|0)+d|0;f=f+1|0}while((f|0)!=(e|0))}else d=0;k[T>>2]=d;i[D>>0]=0;k[F>>2]=0;w=b+(g<<2)|0;lf(G,w,w+(e<<2)|0);if((x|0)>=1){p=S+x|0;o=p+-1|0;q=(o|0)==(S|0);s=p+-2|0;t=K>>>0>>0;u=o>>>0>S>>>0;v=0;w=1;while(1){v=v+1|0;Vi(S|0,1,x|0)|0;Vi(S|0,0,v|0)|0;d:while(1){if(C){Vi(k[aa>>2]|0,0,L|0)|0;j=k[aa>>2]|0;h=0;d=0;do{if(!(i[S+h>>0]|0)){g=k[ba+(h*12|0)>>2]|0;f=0;do{n=j+(f<<2)|0;k[n>>2]=(k[n>>2]|0)+(k[g+(f<<2)>>2]|0);f=f+1|0}while((f|0)!=(e|0));d=(1<>0]|0))d=(1<>2]|0;g=0;f=0;do{m=h+(g<<2)|0;n=(k[m>>2]|0)/(w|0)|0;k[m>>2]=n;n=n-(k[b+(g+y<<2)>>2]|0)|0;f=((n|0)>-1?n:0-n|0)+f|0;g=g+1|0}while((g|0)!=(e|0))}else f=0;if((f|0)<(k[T>>2]|0)){k[T>>2]=f;i[D>>0]=d;k[F>>2]=w;k[O>>2]=k[aa>>2];k[P>>2]=k[J>>2];k[M>>2]=k[O>>2];k[N>>2]=k[P>>2];hf(G,M,N)}if(q)break;U=i[o>>0]|0;j=-1;n=U;while(1){d=j+-1|0;m=p+d|0;h=n;n=i[m>>0]|0;if((n&255)<(h&255))break;if((m|0)==(S|0)){_=65;break d}else j=d}d=p+j|0;if((n&255)<(U&255)){g=o;f=U}else{f=p;h=o;while(1){f=i[f+-2>>0]|0;g=h+-1|0;if((n&255)<(f&255))break;else{f=h;h=g}}}i[m>>0]=f;i[g>>0]=n;if((j|0)<-1)f=o;else continue;while(1){n=i[d>>0]|0;i[d>>0]=i[f>>0]|0;i[f>>0]=n;d=d+1|0;f=f+-1|0;if(d>>>0>=f>>>0)continue d}}if(((_|0)==65?(_=0,u):0)?(n=i[S>>0]|0,i[S>>0]=U,i[o>>0]=n,t):0){d=s;f=K;do{n=i[f>>0]|0;i[f>>0]=i[d>>0]|0;i[d>>0]=n;f=f+1|0;d=d+-1|0}while(f>>>0>>0)}if((w|0)>=(x|0))break;else w=w+1|0}if((x|0)>0){n=x+-1|0;j=a+36+(n*12|0)|0;m=a+36+(n*12|0)+4|0;n=a+36+(n*12|0)+8|0;h=0;do{d=k[m>>2]|0;f=k[n>>2]|0;g=(d|0)==(f<<5|0);if(!(l[D>>0]&1<>>0<1073741823?(w>>>0>>0?d:w):2147483647);d=k[m>>2]|0}k[m>>2]=d+1;w=(k[j>>2]|0)+(d>>>5<<2)|0;k[w>>2]=k[w>>2]|1<<(d&31)}else{if(g){if((d+1|0)<0){_=78;break b}w=f<<6;d=d+32&-32;Xg(j,f<<5>>>0<1073741823?(w>>>0>>0?d:w):2147483647);d=k[m>>2]|0}k[m>>2]=d+1;w=(k[j>>2]|0)+(d>>>5<<2)|0;k[w>>2]=k[w>>2]&~(1<<(d&31))}h=h+1|0}while((h|0)<(x|0))}}Ze(W,b+(y<<2)|0,k[G>>2]|0,c,y);d=k[H>>2]|0;f=d;if(d|0){g=k[I>>2]|0;if((g|0)!=(d|0))k[I>>2]=g+(~((g+-4-f|0)>>>2)<<2);cn(d)}if((z|0)<=1)break a;d=k[E>>2]|0;v=z;f=k[d>>2]|0;g=k[d+4>>2]|0}if((_|0)==8)gm(d);else if((_|0)==73)hm(j);else if((_|0)==78)hm(j)}while(0);f=k[ba>>2]|0;if((e|0)>0){d=0;do{k[f+(d<<2)>>2]=0;d=d+1|0}while((d|0)!=(e|0))}Ze(W,b,f,c,0);g=k[aa>>2]|0;h=g;if(g|0){d=aa+4|0;f=k[d>>2]|0;if((f|0)!=(g|0))k[d>>2]=f+(~((f+-4-h|0)>>>2)<<2);cn(g)}d=k[ba+36>>2]|0;f=d;if(d|0){g=ba+40|0;h=k[g>>2]|0;if((h|0)!=(d|0))k[g>>2]=h+(~((h+-4-f|0)>>>2)<<2);cn(d)}d=k[ba+24>>2]|0;f=d;if(d|0){g=ba+28|0;h=k[g>>2]|0;if((h|0)!=(d|0))k[g>>2]=h+(~((h+-4-f|0)>>>2)<<2);cn(d)}d=k[ba+12>>2]|0;f=d;if(d|0){g=ba+16|0;h=k[g>>2]|0;if((h|0)!=(d|0))k[g>>2]=h+(~((h+-4-f|0)>>>2)<<2);cn(d)}g=k[ba>>2]|0;if(!g){r=ca;return 1}d=ba+4|0;f=k[d>>2]|0;if((f|0)!=(g|0))k[d>>2]=f+(~((f+-4-g|0)>>>2)<<2);cn(g);r=ca;return 1}function nb(a,b,c,d,e,f){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;f=f|0;var g=0,h=0,j=0,m=0,n=0,o=0,p=0,q=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,B=0,C=0,D=0,E=0,F=0,G=0,H=0,I=0,J=0,K=0,L=0,M=0,N=0,O=0,P=0,Q=0,R=0,S=0,T=0,U=0,V=0,W=0,X=0,Y=0,Z=0,_=0,aa=0,ba=0,ca=0;ca=r;r=r+112|0;N=ca+100|0;M=ca+96|0;ba=ca+48|0;aa=ca+32|0;S=ca+104|0;T=ca+8|0;O=ca+4|0;P=ca;W=a+8|0;k[W>>2]=e;Q=k[a+24>>2]|0;R=k[a+28>>2]|0;d=ba;f=d+48|0;do{k[d>>2]=0;d=d+4|0}while((d|0)<(f|0));if(!e){d=0;f=0}else{jh(ba,e);d=k[ba+12>>2]|0;f=k[ba+16>>2]|0}g=ba+16|0;h=f-d>>2;if(h>>>0>=e>>>0){if(h>>>0>e>>>0?(j=d+(e<<2)|0,(f|0)!=(j|0)):0)k[g>>2]=f+(~((f+-4-j|0)>>>2)<<2)}else jh(ba+12|0,e-h|0);d=ba+24|0;f=ba+28|0;j=k[f>>2]|0;h=k[d>>2]|0;g=j-h>>2;if(g>>>0>=e>>>0){if(g>>>0>e>>>0?(m=h+(e<<2)|0,(j|0)!=(m|0)):0)k[f>>2]=j+(~((j+-4-m|0)>>>2)<<2)}else jh(d,e-g|0);d=ba+36|0;f=ba+40|0;j=k[f>>2]|0;h=k[d>>2]|0;g=j-h>>2;if(g>>>0>=e>>>0){if(g>>>0>e>>>0?(n=h+(e<<2)|0,(j|0)!=(n|0)):0)k[f>>2]=j+(~((j+-4-n|0)>>>2)<<2)}else jh(d,e-g|0);bj(aa,e);E=a+32|0;h=k[E>>2]|0;g=k[h+4>>2]|0;f=k[h>>2]|0;d=g-f|0;a:do if((d|0)>4){A=Q+64|0;B=Q+28|0;C=(e|0)>0;D=T+4|0;F=T+8|0;G=T+12|0;H=T+12|0;I=T+16|0;J=aa+4|0;K=S+1|0;L=e<<2;v=d>>2;d=h;b:while(1){z=v+-1|0;if(g-f>>2>>>0<=z>>>0){_=8;break}q=k[f+(z<<2)>>2]|0;p=q+((q|0)<0?0:((q>>>0)%3|0|0)==0?2:-1)|0;s=p>>>5;t=1<<(p&31);u=(p|0)<0;o=1;d=0;f=q;c:while(1){do{if((f|0)<=-1){x=d;break c}h=k[ba+(d*12|0)>>2]|0;if(((k[(k[Q>>2]|0)+(f>>>5<<2)>>2]&1<<(f&31)|0)==0?(V=k[(k[(k[A>>2]|0)+12>>2]|0)+(f<<2)>>2]|0,(V|0)>=0):0)?(Z=k[B>>2]|0,y=k[R>>2]|0,X=k[y+(k[Z+(V<<2)>>2]<<2)>>2]|0,Y=V+1|0,Y=k[y+(k[Z+((((Y|0)%3|0|0)==0?V+-2|0:Y)<<2)>>2]<<2)>>2]|0,Z=k[y+(k[Z+((((V>>>0)%3|0|0)==0?2:-1)+V<<2)>>2]<<2)>>2]|0,(X|0)<(z|0)&(Y|0)<(z|0)&(Z|0)<(z|0)):0){j=$(X,e)|0;m=$(Y,e)|0;n=$(Z,e)|0;if(C){g=0;do{k[h+(g<<2)>>2]=(k[b+(g+n<<2)>>2]|0)+(k[b+(g+m<<2)>>2]|0)-(k[b+(g+j<<2)>>2]|0);g=g+1|0}while((g|0)!=(e|0))}d=d+1|0;if((d|0)==4){x=4;break c}}do if(o){g=f+1|0;f=((g|0)%3|0|0)==0?f+-2|0:g;g=k[Q>>2]|0;if(!(k[g+(f>>>5<<2)>>2]&1<<(f&31))){if((f|0)>=0){f=k[(k[(k[A>>2]|0)+12>>2]|0)+(f<<2)>>2]|0;h=f+1|0;if((f|0)>=0)f=((h|0)%3|0|0)==0?f+-2|0:h}}else f=-1073741824}else{f=(((f>>>0)%3|0|0)==0?2:-1)+f|0;g=k[Q>>2]|0;if(!(k[g+(f>>>5<<2)>>2]&1<<(f&31))){if((f|0)>=0){f=k[(k[(k[A>>2]|0)+12>>2]|0)+(f<<2)>>2]|0;if((f|0)>=0)if(!((f>>>0)%3|0)){f=f+2|0;break}else{f=f+-1|0;break}}}else f=-1073741824}while(0);if((f|0)==(q|0)){x=d;break c}}while(!(o&(f|0)<0));f=(t&k[g+(s<<2)>>2]|0)!=0;if(f|u){o=0;f=f?-1073741824:p;continue}f=k[(k[(k[A>>2]|0)+12>>2]|0)+(p<<2)>>2]|0;if((f|0)<0){o=0;continue}if(!((f>>>0)%3|0)){o=0;f=f+2|0;continue}else{o=0;f=f+-1|0;continue}}y=$(z,e)|0;k[T>>2]=2147483647;i[D>>0]=0;k[F>>2]=0;k[F+4>>2]=0;k[F+8>>2]=0;k[F+12>>2]=0;g=$(v+-2|0,e)|0;if(C){f=0;d=0;do{w=(k[b+(f+y<<2)>>2]|0)-(k[b+(f+g<<2)>>2]|0)|0;d=((w|0)>-1?w:0-w|0)+d|0;f=f+1|0}while((f|0)!=(e|0))}else d=0;k[T>>2]=d;i[D>>0]=0;k[F>>2]=0;w=b+(g<<2)|0;lf(G,w,w+(e<<2)|0);if((x|0)>=1){p=S+x|0;o=p+-1|0;q=(o|0)==(S|0);s=p+-2|0;t=K>>>0>>0;u=o>>>0>S>>>0;v=0;w=1;while(1){v=v+1|0;Vi(S|0,1,x|0)|0;Vi(S|0,0,v|0)|0;d:while(1){if(C){Vi(k[aa>>2]|0,0,L|0)|0;j=k[aa>>2]|0;h=0;d=0;do{if(!(i[S+h>>0]|0)){g=k[ba+(h*12|0)>>2]|0;f=0;do{n=j+(f<<2)|0;k[n>>2]=(k[n>>2]|0)+(k[g+(f<<2)>>2]|0);f=f+1|0}while((f|0)!=(e|0));d=(1<>0]|0))d=(1<>2]|0;g=0;f=0;do{m=h+(g<<2)|0;n=(k[m>>2]|0)/(w|0)|0;k[m>>2]=n;n=n-(k[b+(g+y<<2)>>2]|0)|0;f=((n|0)>-1?n:0-n|0)+f|0;g=g+1|0}while((g|0)!=(e|0))}else f=0;if((f|0)<(k[T>>2]|0)){k[T>>2]=f;i[D>>0]=d;k[F>>2]=w;k[O>>2]=k[aa>>2];k[P>>2]=k[J>>2];k[M>>2]=k[O>>2];k[N>>2]=k[P>>2];hf(G,M,N)}if(q)break;U=i[o>>0]|0;j=-1;n=U;while(1){d=j+-1|0;m=p+d|0;h=n;n=i[m>>0]|0;if((n&255)<(h&255))break;if((m|0)==(S|0)){_=65;break d}else j=d}d=p+j|0;if((n&255)<(U&255)){g=o;f=U}else{f=p;h=o;while(1){f=i[f+-2>>0]|0;g=h+-1|0;if((n&255)<(f&255))break;else{f=h;h=g}}}i[m>>0]=f;i[g>>0]=n;if((j|0)<-1)f=o;else continue;while(1){n=i[d>>0]|0;i[d>>0]=i[f>>0]|0;i[f>>0]=n;d=d+1|0;f=f+-1|0;if(d>>>0>=f>>>0)continue d}}if(((_|0)==65?(_=0,u):0)?(n=i[S>>0]|0,i[S>>0]=U,i[o>>0]=n,t):0){d=s;f=K;do{n=i[f>>0]|0;i[f>>0]=i[d>>0]|0;i[d>>0]=n;f=f+1|0;d=d+-1|0}while(f>>>0>>0)}if((w|0)>=(x|0))break;else w=w+1|0}if((x|0)>0){n=x+-1|0;j=a+36+(n*12|0)|0;m=a+36+(n*12|0)+4|0;n=a+36+(n*12|0)+8|0;h=0;do{d=k[m>>2]|0;f=k[n>>2]|0;g=(d|0)==(f<<5|0);if(!(l[D>>0]&1<>>0<1073741823?(w>>>0>>0?d:w):2147483647);d=k[m>>2]|0}k[m>>2]=d+1;w=(k[j>>2]|0)+(d>>>5<<2)|0;k[w>>2]=k[w>>2]|1<<(d&31)}else{if(g){if((d+1|0)<0){_=78;break b}w=f<<6;d=d+32&-32;Xg(j,f<<5>>>0<1073741823?(w>>>0>>0?d:w):2147483647);d=k[m>>2]|0}k[m>>2]=d+1;w=(k[j>>2]|0)+(d>>>5<<2)|0;k[w>>2]=k[w>>2]&~(1<<(d&31))}h=h+1|0}while((h|0)<(x|0))}}cf(W,b+(y<<2)|0,k[G>>2]|0,c,y);d=k[H>>2]|0;f=d;if(d|0){g=k[I>>2]|0;if((g|0)!=(d|0))k[I>>2]=g+(~((g+-4-f|0)>>>2)<<2);cn(d)}if((z|0)<=1)break a;d=k[E>>2]|0;v=z;f=k[d>>2]|0;g=k[d+4>>2]|0}if((_|0)==8)gm(d);else if((_|0)==73)hm(j);else if((_|0)==78)hm(j)}while(0);f=k[ba>>2]|0;if((e|0)>0){d=0;do{k[f+(d<<2)>>2]=0;d=d+1|0}while((d|0)!=(e|0))}cf(W,b,f,c,0);g=k[aa>>2]|0;h=g;if(g|0){d=aa+4|0;f=k[d>>2]|0;if((f|0)!=(g|0))k[d>>2]=f+(~((f+-4-h|0)>>>2)<<2);cn(g)}d=k[ba+36>>2]|0;f=d;if(d|0){g=ba+40|0;h=k[g>>2]|0;if((h|0)!=(d|0))k[g>>2]=h+(~((h+-4-f|0)>>>2)<<2);cn(d)}d=k[ba+24>>2]|0;f=d;if(d|0){g=ba+28|0;h=k[g>>2]|0;if((h|0)!=(d|0))k[g>>2]=h+(~((h+-4-f|0)>>>2)<<2);cn(d)}d=k[ba+12>>2]|0;f=d;if(d|0){g=ba+16|0;h=k[g>>2]|0;if((h|0)!=(d|0))k[g>>2]=h+(~((h+-4-f|0)>>>2)<<2);cn(d)}g=k[ba>>2]|0;if(!g){r=ca;return 1}d=ba+4|0;f=k[d>>2]|0;if((f|0)!=(g|0))k[d>>2]=f+(~((f+-4-g|0)>>>2)<<2);cn(g);r=ca;return 1}function ob(a,b,c,d,e,f){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;f=f|0;var g=0,h=0,j=0,m=0,n=0,o=0,p=0,q=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,B=0,C=0,D=0,E=0,F=0,G=0,H=0,I=0,J=0,K=0,L=0,M=0,N=0,O=0,P=0,Q=0,R=0,S=0,T=0,U=0,V=0,W=0,X=0,Y=0,Z=0;Z=r;r=r+112|0;N=Z+100|0;M=Z+96|0;Y=Z+48|0;X=Z+32|0;S=Z+104|0;T=Z+8|0;O=Z+4|0;P=Z;V=a+8|0;k[V>>2]=e;Q=k[a+24>>2]|0;R=k[a+28>>2]|0;d=Y;f=d+48|0;do{k[d>>2]=0;d=d+4|0}while((d|0)<(f|0));if(!e){d=0;f=0}else{jh(Y,e);d=k[Y+12>>2]|0;f=k[Y+16>>2]|0}g=Y+16|0;h=f-d>>2;if(h>>>0>=e>>>0){if(h>>>0>e>>>0?(j=d+(e<<2)|0,(f|0)!=(j|0)):0)k[g>>2]=f+(~((f+-4-j|0)>>>2)<<2)}else jh(Y+12|0,e-h|0);d=Y+24|0;f=Y+28|0;j=k[f>>2]|0;h=k[d>>2]|0;g=j-h>>2;if(g>>>0>=e>>>0){if(g>>>0>e>>>0?(m=h+(e<<2)|0,(j|0)!=(m|0)):0)k[f>>2]=j+(~((j+-4-m|0)>>>2)<<2)}else jh(d,e-g|0);d=Y+36|0;f=Y+40|0;j=k[f>>2]|0;h=k[d>>2]|0;g=j-h>>2;if(g>>>0>=e>>>0){if(g>>>0>e>>>0?(n=h+(e<<2)|0,(j|0)!=(n|0)):0)k[f>>2]=j+(~((j+-4-n|0)>>>2)<<2)}else jh(d,e-g|0);bj(X,e);B=a+32|0;h=k[B>>2]|0;g=k[h+4>>2]|0;f=k[h>>2]|0;d=g-f|0;a:do if((d|0)>4){C=Q+12|0;D=(e|0)>0;E=T+4|0;F=T+8|0;G=T+12|0;H=T+12|0;I=T+16|0;J=X+4|0;K=S+1|0;L=e<<2;y=d>>2;d=h;b:while(1){A=y+-1|0;if(g-f>>2>>>0<=A>>>0){W=8;break}w=k[f+(A<<2)>>2]|0;v=(((w>>>0)%3|0|0)==0?2:-1)+w|0;x=(w|v|0)<0;u=(w|0)<0?w:v;t=1;f=0;d=w;c:while(1){do{if((d|0)<=-1){x=f;break c}q=k[Y+(f*12|0)>>2]|0;s=k[C>>2]|0;h=k[s+(d<<2)>>2]|0;if((h|0)>=0){m=k[Q>>2]|0;j=(h>>>0)%3|0;n=k[R>>2]|0;p=k[n+(k[m+(((h>>>0)/3|0)*12|0)+(j<<2)>>2]<<2)>>2]|0;g=h+1|0;g=((g|0)%3|0|0)==0?h+-2|0:g;if((g|0)<0)g=-1073741824;else g=k[m+(((g>>>0)/3|0)*12|0)+(((g>>>0)%3|0)<<2)>>2]|0;o=k[n+(g<<2)>>2]|0;g=((j|0)==0?2:-1)+h|0;if((g|0)<0)g=-1073741824;else g=k[m+(((g>>>0)/3|0)*12|0)+(((g>>>0)%3|0)<<2)>>2]|0;g=k[n+(g<<2)>>2]|0;if((p|0)<(A|0)&(o|0)<(A|0)&(g|0)<(A|0)){m=$(p,e)|0;j=$(o,e)|0;h=$(g,e)|0;if(D){g=0;do{k[q+(g<<2)>>2]=(k[b+(g+h<<2)>>2]|0)+(k[b+(g+j<<2)>>2]|0)-(k[b+(g+m<<2)>>2]|0);g=g+1|0}while((g|0)!=(e|0))}f=f+1|0;if((f|0)==4){x=4;break c}}}do if(t){z=d+1|0;d=((z|0)%3|0|0)==0?d+-2|0:z;if((d|0)>=0){d=k[s+(d<<2)>>2]|0;g=d+1|0;if((d|0)>=0)d=((g|0)%3|0|0)==0?d+-2|0:g}}else{d=(((d>>>0)%3|0|0)==0?2:-1)+d|0;if((d|0)>=0){d=k[s+(d<<2)>>2]|0;if((d|0)>=0)if(!((d>>>0)%3|0)){d=d+2|0;break}else{d=d+-1|0;break}}}while(0);if((d|0)==(w|0)){x=f;break c}}while(!(t&(d|0)<0));if(x){t=0;d=u;continue}d=k[s+(v<<2)>>2]|0;if((d|0)<0){t=0;continue}if(!((d>>>0)%3|0)){t=0;d=d+2|0;continue}else{t=0;d=d+-1|0;continue}}z=$(A,e)|0;k[T>>2]=2147483647;i[E>>0]=0;k[F>>2]=0;k[F+4>>2]=0;k[F+8>>2]=0;k[F+12>>2]=0;g=$(y+-2|0,e)|0;if(D){f=0;d=0;do{y=(k[b+(f+z<<2)>>2]|0)-(k[b+(f+g<<2)>>2]|0)|0;d=((y|0)>-1?y:0-y|0)+d|0;f=f+1|0}while((f|0)!=(e|0))}else d=0;k[T>>2]=d;i[E>>0]=0;k[F>>2]=0;y=b+(g<<2)|0;lf(G,y,y+(e<<2)|0);if((x|0)>=1){p=S+x|0;o=p+-1|0;q=(o|0)==(S|0);s=p+-2|0;t=K>>>0>>0;u=o>>>0>S>>>0;v=0;w=1;while(1){v=v+1|0;Vi(S|0,1,x|0)|0;Vi(S|0,0,v|0)|0;d:while(1){if(D){Vi(k[X>>2]|0,0,L|0)|0;j=k[X>>2]|0;h=0;d=0;do{if(!(i[S+h>>0]|0)){g=k[Y+(h*12|0)>>2]|0;f=0;do{y=j+(f<<2)|0;k[y>>2]=(k[y>>2]|0)+(k[g+(f<<2)>>2]|0);f=f+1|0}while((f|0)!=(e|0));d=(1<>0]|0))d=(1<>2]|0;g=0;f=0;do{n=h+(g<<2)|0;y=(k[n>>2]|0)/(w|0)|0;k[n>>2]=y;y=y-(k[b+(g+z<<2)>>2]|0)|0;f=((y|0)>-1?y:0-y|0)+f|0;g=g+1|0}while((g|0)!=(e|0))}else f=0;if((f|0)<(k[T>>2]|0)){k[T>>2]=f;i[E>>0]=d;k[F>>2]=w;k[O>>2]=k[X>>2];k[P>>2]=k[J>>2];k[M>>2]=k[O>>2];k[N>>2]=k[P>>2];hf(G,M,N)}if(q)break;U=i[o>>0]|0;j=-1;n=U;while(1){d=j+-1|0;m=p+d|0;y=n;n=i[m>>0]|0;if((n&255)<(y&255))break;if((m|0)==(S|0)){W=66;break d}else j=d}d=p+j|0;if((n&255)<(U&255)){g=o;f=U}else{f=p;h=o;while(1){f=i[f+-2>>0]|0;g=h+-1|0;if((n&255)<(f&255))break;else{f=h;h=g}}}i[m>>0]=f;i[g>>0]=n;if((j|0)<-1)f=o;else continue;while(1){y=i[d>>0]|0;i[d>>0]=i[f>>0]|0;i[f>>0]=y;d=d+1|0;f=f+-1|0;if(d>>>0>=f>>>0)continue d}}if(((W|0)==66?(W=0,u):0)?(y=i[S>>0]|0,i[S>>0]=U,i[o>>0]=y,t):0){d=s;f=K;do{y=i[f>>0]|0;i[f>>0]=i[d>>0]|0;i[d>>0]=y;f=f+1|0;d=d+-1|0}while(f>>>0>>0)}if((w|0)>=(x|0))break;else w=w+1|0}if((x|0)>0){n=x+-1|0;j=a+36+(n*12|0)|0;m=a+36+(n*12|0)+4|0;n=a+36+(n*12|0)+8|0;h=0;do{d=k[m>>2]|0;f=k[n>>2]|0;g=(d|0)==(f<<5|0);if(!(l[E>>0]&1<>>0<1073741823?(y>>>0>>0?d:y):2147483647);d=k[m>>2]|0}k[m>>2]=d+1;y=(k[j>>2]|0)+(d>>>5<<2)|0;k[y>>2]=k[y>>2]|1<<(d&31)}else{if(g){if((d+1|0)<0){W=79;break b}y=f<<6;d=d+32&-32;Xg(j,f<<5>>>0<1073741823?(y>>>0>>0?d:y):2147483647);d=k[m>>2]|0}k[m>>2]=d+1;y=(k[j>>2]|0)+(d>>>5<<2)|0;k[y>>2]=k[y>>2]&~(1<<(d&31))}h=h+1|0}while((h|0)<(x|0))}}Ze(V,b+(z<<2)|0,k[G>>2]|0,c,z);d=k[H>>2]|0;f=d;if(d|0){g=k[I>>2]|0;if((g|0)!=(d|0))k[I>>2]=g+(~((g+-4-f|0)>>>2)<<2);cn(d)}if((A|0)<=1)break a;d=k[B>>2]|0;y=A;f=k[d>>2]|0;g=k[d+4>>2]|0}if((W|0)==8)gm(d);else if((W|0)==74)hm(j);else if((W|0)==79)hm(j)}while(0);f=k[Y>>2]|0;if((e|0)>0){d=0;do{k[f+(d<<2)>>2]=0;d=d+1|0}while((d|0)!=(e|0))}Ze(V,b,f,c,0);g=k[X>>2]|0;h=g;if(g|0){d=X+4|0;f=k[d>>2]|0;if((f|0)!=(g|0))k[d>>2]=f+(~((f+-4-h|0)>>>2)<<2);cn(g)}d=k[Y+36>>2]|0;f=d;if(d|0){g=Y+40|0;h=k[g>>2]|0;if((h|0)!=(d|0))k[g>>2]=h+(~((h+-4-f|0)>>>2)<<2);cn(d)}d=k[Y+24>>2]|0;f=d;if(d|0){g=Y+28|0;h=k[g>>2]|0;if((h|0)!=(d|0))k[g>>2]=h+(~((h+-4-f|0)>>>2)<<2);cn(d)}d=k[Y+12>>2]|0;f=d;if(d|0){g=Y+16|0;h=k[g>>2]|0;if((h|0)!=(d|0))k[g>>2]=h+(~((h+-4-f|0)>>>2)<<2);cn(d)}g=k[Y>>2]|0;if(!g){r=Z;return 1}d=Y+4|0;f=k[d>>2]|0;if((f|0)!=(g|0))k[d>>2]=f+(~((f+-4-g|0)>>>2)<<2);cn(g);r=Z;return 1}function pb(a,b,c,d,e,f){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;f=f|0;var g=0,h=0,j=0,m=0,n=0,o=0,p=0,q=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,B=0,C=0,D=0,E=0,F=0,G=0,H=0,I=0,J=0,K=0,L=0,M=0,N=0,O=0,P=0,Q=0,R=0,S=0,T=0,U=0,V=0,W=0,X=0,Y=0,Z=0;Z=r;r=r+112|0;N=Z+100|0;M=Z+96|0;Y=Z+48|0;X=Z+32|0;S=Z+104|0;T=Z+8|0;O=Z+4|0;P=Z;V=a+8|0;k[V>>2]=e;Q=k[a+24>>2]|0;R=k[a+28>>2]|0;d=Y;f=d+48|0;do{k[d>>2]=0;d=d+4|0}while((d|0)<(f|0));if(!e){d=0;f=0}else{jh(Y,e);d=k[Y+12>>2]|0;f=k[Y+16>>2]|0}g=Y+16|0;h=f-d>>2;if(h>>>0>=e>>>0){if(h>>>0>e>>>0?(j=d+(e<<2)|0,(f|0)!=(j|0)):0)k[g>>2]=f+(~((f+-4-j|0)>>>2)<<2)}else jh(Y+12|0,e-h|0);d=Y+24|0;f=Y+28|0;j=k[f>>2]|0;h=k[d>>2]|0;g=j-h>>2;if(g>>>0>=e>>>0){if(g>>>0>e>>>0?(m=h+(e<<2)|0,(j|0)!=(m|0)):0)k[f>>2]=j+(~((j+-4-m|0)>>>2)<<2)}else jh(d,e-g|0);d=Y+36|0;f=Y+40|0;j=k[f>>2]|0;h=k[d>>2]|0;g=j-h>>2;if(g>>>0>=e>>>0){if(g>>>0>e>>>0?(n=h+(e<<2)|0,(j|0)!=(n|0)):0)k[f>>2]=j+(~((j+-4-n|0)>>>2)<<2)}else jh(d,e-g|0);bj(X,e);B=a+32|0;h=k[B>>2]|0;g=k[h+4>>2]|0;f=k[h>>2]|0;d=g-f|0;a:do if((d|0)>4){C=Q+12|0;D=(e|0)>0;E=T+4|0;F=T+8|0;G=T+12|0;H=T+12|0;I=T+16|0;J=X+4|0;K=S+1|0;L=e<<2;y=d>>2;d=h;b:while(1){A=y+-1|0;if(g-f>>2>>>0<=A>>>0){W=8;break}w=k[f+(A<<2)>>2]|0;v=(((w>>>0)%3|0|0)==0?2:-1)+w|0;x=(w|v|0)<0;u=(w|0)<0?w:v;t=1;f=0;d=w;c:while(1){do{if((d|0)<=-1){x=f;break c}q=k[Y+(f*12|0)>>2]|0;s=k[C>>2]|0;h=k[s+(d<<2)>>2]|0;if((h|0)>=0){m=k[Q>>2]|0;j=(h>>>0)%3|0;n=k[R>>2]|0;p=k[n+(k[m+(((h>>>0)/3|0)*12|0)+(j<<2)>>2]<<2)>>2]|0;g=h+1|0;g=((g|0)%3|0|0)==0?h+-2|0:g;if((g|0)<0)g=-1073741824;else g=k[m+(((g>>>0)/3|0)*12|0)+(((g>>>0)%3|0)<<2)>>2]|0;o=k[n+(g<<2)>>2]|0;g=((j|0)==0?2:-1)+h|0;if((g|0)<0)g=-1073741824;else g=k[m+(((g>>>0)/3|0)*12|0)+(((g>>>0)%3|0)<<2)>>2]|0;g=k[n+(g<<2)>>2]|0;if((p|0)<(A|0)&(o|0)<(A|0)&(g|0)<(A|0)){m=$(p,e)|0;j=$(o,e)|0;h=$(g,e)|0;if(D){g=0;do{k[q+(g<<2)>>2]=(k[b+(g+h<<2)>>2]|0)+(k[b+(g+j<<2)>>2]|0)-(k[b+(g+m<<2)>>2]|0);g=g+1|0}while((g|0)!=(e|0))}f=f+1|0;if((f|0)==4){x=4;break c}}}do if(t){z=d+1|0;d=((z|0)%3|0|0)==0?d+-2|0:z;if((d|0)>=0){d=k[s+(d<<2)>>2]|0;g=d+1|0;if((d|0)>=0)d=((g|0)%3|0|0)==0?d+-2|0:g}}else{d=(((d>>>0)%3|0|0)==0?2:-1)+d|0;if((d|0)>=0){d=k[s+(d<<2)>>2]|0;if((d|0)>=0)if(!((d>>>0)%3|0)){d=d+2|0;break}else{d=d+-1|0;break}}}while(0);if((d|0)==(w|0)){x=f;break c}}while(!(t&(d|0)<0));if(x){t=0;d=u;continue}d=k[s+(v<<2)>>2]|0;if((d|0)<0){t=0;continue}if(!((d>>>0)%3|0)){t=0;d=d+2|0;continue}else{t=0;d=d+-1|0;continue}}z=$(A,e)|0;k[T>>2]=2147483647;i[E>>0]=0;k[F>>2]=0;k[F+4>>2]=0;k[F+8>>2]=0;k[F+12>>2]=0;g=$(y+-2|0,e)|0;if(D){f=0;d=0;do{y=(k[b+(f+z<<2)>>2]|0)-(k[b+(f+g<<2)>>2]|0)|0;d=((y|0)>-1?y:0-y|0)+d|0;f=f+1|0}while((f|0)!=(e|0))}else d=0;k[T>>2]=d;i[E>>0]=0;k[F>>2]=0;y=b+(g<<2)|0;lf(G,y,y+(e<<2)|0);if((x|0)>=1){p=S+x|0;o=p+-1|0;q=(o|0)==(S|0);s=p+-2|0;t=K>>>0>>0;u=o>>>0>S>>>0;v=0;w=1;while(1){v=v+1|0;Vi(S|0,1,x|0)|0;Vi(S|0,0,v|0)|0;d:while(1){if(D){Vi(k[X>>2]|0,0,L|0)|0;j=k[X>>2]|0;h=0;d=0;do{if(!(i[S+h>>0]|0)){g=k[Y+(h*12|0)>>2]|0;f=0;do{y=j+(f<<2)|0;k[y>>2]=(k[y>>2]|0)+(k[g+(f<<2)>>2]|0);f=f+1|0}while((f|0)!=(e|0));d=(1<>0]|0))d=(1<>2]|0;g=0;f=0;do{n=h+(g<<2)|0;y=(k[n>>2]|0)/(w|0)|0;k[n>>2]=y;y=y-(k[b+(g+z<<2)>>2]|0)|0;f=((y|0)>-1?y:0-y|0)+f|0;g=g+1|0}while((g|0)!=(e|0))}else f=0;if((f|0)<(k[T>>2]|0)){k[T>>2]=f;i[E>>0]=d;k[F>>2]=w;k[O>>2]=k[X>>2];k[P>>2]=k[J>>2];k[M>>2]=k[O>>2];k[N>>2]=k[P>>2];hf(G,M,N)}if(q)break;U=i[o>>0]|0;j=-1;n=U;while(1){d=j+-1|0;m=p+d|0;y=n;n=i[m>>0]|0;if((n&255)<(y&255))break;if((m|0)==(S|0)){W=66;break d}else j=d}d=p+j|0;if((n&255)<(U&255)){g=o;f=U}else{f=p;h=o;while(1){f=i[f+-2>>0]|0;g=h+-1|0;if((n&255)<(f&255))break;else{f=h;h=g}}}i[m>>0]=f;i[g>>0]=n;if((j|0)<-1)f=o;else continue;while(1){y=i[d>>0]|0;i[d>>0]=i[f>>0]|0;i[f>>0]=y;d=d+1|0;f=f+-1|0;if(d>>>0>=f>>>0)continue d}}if(((W|0)==66?(W=0,u):0)?(y=i[S>>0]|0,i[S>>0]=U,i[o>>0]=y,t):0){d=s;f=K;do{y=i[f>>0]|0;i[f>>0]=i[d>>0]|0;i[d>>0]=y;f=f+1|0;d=d+-1|0}while(f>>>0>>0)}if((w|0)>=(x|0))break;else w=w+1|0}if((x|0)>0){n=x+-1|0;j=a+36+(n*12|0)|0;m=a+36+(n*12|0)+4|0;n=a+36+(n*12|0)+8|0;h=0;do{d=k[m>>2]|0;f=k[n>>2]|0;g=(d|0)==(f<<5|0);if(!(l[E>>0]&1<>>0<1073741823?(y>>>0>>0?d:y):2147483647);d=k[m>>2]|0}k[m>>2]=d+1;y=(k[j>>2]|0)+(d>>>5<<2)|0;k[y>>2]=k[y>>2]|1<<(d&31)}else{if(g){if((d+1|0)<0){W=79;break b}y=f<<6;d=d+32&-32;Xg(j,f<<5>>>0<1073741823?(y>>>0>>0?d:y):2147483647);d=k[m>>2]|0}k[m>>2]=d+1;y=(k[j>>2]|0)+(d>>>5<<2)|0;k[y>>2]=k[y>>2]&~(1<<(d&31))}h=h+1|0}while((h|0)<(x|0))}}cf(V,b+(z<<2)|0,k[G>>2]|0,c,z);d=k[H>>2]|0;f=d;if(d|0){g=k[I>>2]|0;if((g|0)!=(d|0))k[I>>2]=g+(~((g+-4-f|0)>>>2)<<2);cn(d)}if((A|0)<=1)break a;d=k[B>>2]|0;y=A;f=k[d>>2]|0;g=k[d+4>>2]|0}if((W|0)==8)gm(d);else if((W|0)==74)hm(j);else if((W|0)==79)hm(j)}while(0);f=k[Y>>2]|0;if((e|0)>0){d=0;do{k[f+(d<<2)>>2]=0;d=d+1|0}while((d|0)!=(e|0))}cf(V,b,f,c,0);g=k[X>>2]|0;h=g;if(g|0){d=X+4|0;f=k[d>>2]|0;if((f|0)!=(g|0))k[d>>2]=f+(~((f+-4-h|0)>>>2)<<2);cn(g)}d=k[Y+36>>2]|0;f=d;if(d|0){g=Y+40|0;h=k[g>>2]|0;if((h|0)!=(d|0))k[g>>2]=h+(~((h+-4-f|0)>>>2)<<2);cn(d)}d=k[Y+24>>2]|0;f=d;if(d|0){g=Y+28|0;h=k[g>>2]|0;if((h|0)!=(d|0))k[g>>2]=h+(~((h+-4-f|0)>>>2)<<2);cn(d)}d=k[Y+12>>2]|0;f=d;if(d|0){g=Y+16|0;h=k[g>>2]|0;if((h|0)!=(d|0))k[g>>2]=h+(~((h+-4-f|0)>>>2)<<2);cn(d)}g=k[Y>>2]|0;if(!g){r=Z;return 1}d=Y+4|0;f=k[d>>2]|0;if((f|0)!=(g|0))k[d>>2]=f+(~((f+-4-g|0)>>>2)<<2);cn(g);r=Z;return 1}function qb(a,b,c,d,e,f){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;f=f|0;var g=0,h=0,i=0,j=0,l=0,m=0,n=0,o=0,p=0,q=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,B=0,C=0,D=0,E=0,F=0,G=0,H=0,I=0,J=0,K=0,L=0,M=0,N=0,O=0,P=0,Q=0,R=0,S=0;S=r;r=r+64|0;R=S+16|0;Q=S;H=a+8|0;k[H>>2]=e;i=a+32|0;d=a+36|0;h=k[d>>2]|0;g=k[i>>2]|0;f=h-g>>2;if(f>>>0>=e>>>0){if(f>>>0>e>>>0?(j=g+(e<<2)|0,(h|0)!=(j|0)):0)k[d>>2]=h+(~((h+-4-j|0)>>>2)<<2)}else jh(i,e-f|0);d=R;f=d+48|0;do{k[d>>2]=0;d=d+4|0}while((d|0)<(f|0));k[Q>>2]=0;if(!e){d=0;f=0}else{Ag(R,e,Q);d=k[R+12>>2]|0;f=k[R+16>>2]|0}k[Q>>2]=0;g=R+16|0;h=f-d>>2;if(h>>>0>=e>>>0){if(h>>>0>e>>>0?(l=d+(e<<2)|0,(f|0)!=(l|0)):0)k[g>>2]=f+(~((f+-4-l|0)>>>2)<<2)}else Ag(R+12|0,e-h|0,Q);d=R+24|0;k[Q>>2]=0;f=R+28|0;i=k[f>>2]|0;h=k[d>>2]|0;g=i-h>>2;if(g>>>0>=e>>>0){if(g>>>0>e>>>0?(m=h+(e<<2)|0,(i|0)!=(m|0)):0)k[f>>2]=i+(~((i+-4-m|0)>>>2)<<2)}else Ag(d,e-g|0,Q);d=R+36|0;k[Q>>2]=0;f=R+40|0;i=k[f>>2]|0;h=k[d>>2]|0;g=i-h>>2;if(g>>>0>=e>>>0){if(g>>>0>e>>>0?(n=h+(e<<2)|0,(i|0)!=(n|0)):0)k[f>>2]=i+(~((i+-4-n|0)>>>2)<<2)}else Ag(d,e-g|0,Q);l=k[R>>2]|0;if((k[H>>2]|0)>0){m=a+16|0;j=a+32|0;n=a+12|0;i=0;do{h=k[l+(i<<2)>>2]|0;d=k[m>>2]|0;do if((h|0)<=(d|0)){d=k[n>>2]|0;f=k[j>>2]|0;g=f+(i<<2)|0;if((h|0)<(d|0)){k[g>>2]=d;g=f;break}else{k[g>>2]=h;g=f;break}}else{g=k[j>>2]|0;k[g+(i<<2)>>2]=d}while(0);i=i+1|0;d=k[H>>2]|0}while((i|0)<(d|0));if((d|0)>0){d=0;do{k[c+(d<<2)>>2]=(k[b+(d<<2)>>2]|0)+(k[g+(d<<2)>>2]|0);d=d+1|0;f=k[H>>2]|0}while((d|0)<(f|0));if((f|0)>0){f=a+20|0;d=0;do{g=c+(d<<2)|0;h=k[g>>2]|0;if((h|0)<=(k[m>>2]|0)){if((h|0)<(k[n>>2]|0))k[g>>2]=(k[f>>2]|0)+h}else k[g>>2]=h-(k[f>>2]|0);d=d+1|0}while((d|0)<(k[H>>2]|0))}}}u=k[a+48>>2]|0;v=k[a+52>>2]|0;G=xk(16)|0;k[G>>2]=0;k[G+4>>2]=0;k[G+8>>2]=0;k[G+12>>2]=0;bj(Q,e);w=a+56|0;f=k[w>>2]|0;h=k[f+4>>2]|0;g=k[f>>2]|0;F=h-g|0;x=F>>2;a:do if((F|0)>4){y=u+64|0;z=u+28|0;A=(e|0)>0;B=a+16|0;C=a+32|0;D=a+12|0;E=a+20|0;F=e<<2;d=1;while(1){if(h-g>>2>>>0<=d>>>0)break;p=k[g+(d<<2)>>2]|0;o=p+((p|0)<0?0:((p>>>0)%3|0|0)==0?2:-1)|0;q=o>>>5;s=1<<(o&31);t=(o|0)<0;n=1;f=0;g=p;b:while(1){do{if((g|0)<=-1){o=63;break b}i=k[R+(f*12|0)>>2]|0;if(((k[(k[u>>2]|0)+(g>>>5<<2)>>2]&1<<(g&31)|0)==0?(J=k[(k[(k[y>>2]|0)+12>>2]|0)+(g<<2)>>2]|0,(J|0)>=0):0)?(M=k[z>>2]|0,m=k[v>>2]|0,K=k[m+(k[M+(J<<2)>>2]<<2)>>2]|0,L=J+1|0,L=k[m+(k[M+((((L|0)%3|0|0)==0?J+-2|0:L)<<2)>>2]<<2)>>2]|0,M=k[m+(k[M+((((J>>>0)%3|0|0)==0?2:-1)+J<<2)>>2]<<2)>>2]|0,(K|0)<(d|0)&(L|0)<(d|0)&(M|0)<(d|0)):0){j=$(K,e)|0;l=$(L,e)|0;m=$(M,e)|0;if(A){h=0;do{k[i+(h<<2)>>2]=(k[c+(h+m<<2)>>2]|0)+(k[c+(h+l<<2)>>2]|0)-(k[c+(h+j<<2)>>2]|0);h=h+1|0}while((h|0)!=(e|0))}f=f+1|0;if((f|0)==4){f=4;o=44;break b}}do if(n){h=g+1|0;g=((h|0)%3|0|0)==0?g+-2|0:h;h=k[u>>2]|0;if(!(k[h+(g>>>5<<2)>>2]&1<<(g&31))){if((g|0)>=0){g=k[(k[(k[y>>2]|0)+12>>2]|0)+(g<<2)>>2]|0;i=g+1|0;if((g|0)>=0)g=((i|0)%3|0|0)==0?g+-2|0:i}}else g=-1073741824}else{g=(((g>>>0)%3|0|0)==0?2:-1)+g|0;h=k[u>>2]|0;if(!(k[h+(g>>>5<<2)>>2]&1<<(g&31))){if((g|0)>=0){g=k[(k[(k[y>>2]|0)+12>>2]|0)+(g<<2)>>2]|0;if((g|0)>=0)if(!((g>>>0)%3|0)){g=g+2|0;break}else{g=g+-1|0;break}}}else g=-1073741824}while(0);if((g|0)==(p|0)){o=63;break b}}while(!(n&(g|0)<0));g=(s&k[h+(q<<2)>>2]|0)!=0;if(g|t){n=0;g=g?-1073741824:o;continue}g=k[(k[(k[y>>2]|0)+12>>2]|0)+(o<<2)>>2]|0;if((g|0)<0){n=0;continue}if(!((g>>>0)%3|0)){n=0;g=g+2|0;continue}else{n=0;g=g+-1|0;continue}}if((o|0)==63)if((f|0)>0)o=44;else{P=$(d,e)|0;o=75}if((o|0)==44){o=0;if(A){Vi(k[Q>>2]|0,0,F|0)|0;m=f+-1|0;l=G+(m<<2)|0;m=k[a+60+(m*12|0)>>2]|0;n=k[Q>>2]|0;j=0;g=0;do{t=k[l>>2]|0;k[l>>2]=t+1;if(!(k[m+(t>>>5<<2)>>2]&1<<(t&31))){i=k[R+(j*12|0)>>2]|0;h=0;do{t=n+(h<<2)|0;k[t>>2]=(k[t>>2]|0)+(k[i+(h<<2)>>2]|0);h=h+1|0}while((h|0)!=(e|0));g=g+1|0}j=j+1|0}while((j|0)!=(f|0));f=g}else{j=f+-1|0;i=G+(j<<2)|0;j=k[a+60+(j*12|0)>>2]|0;h=0;g=0;l=k[i>>2]|0;do{t=l;l=l+1|0;k[i>>2]=l;g=g+((k[j+(t>>>5<<2)>>2]&1<<(t&31)|0)==0&1)|0;h=h+1|0}while((h|0)!=(f|0));f=g}m=$(d,e)|0;if(f){l=k[Q>>2]|0;if(A){g=0;do{t=l+(g<<2)|0;k[t>>2]=(k[t>>2]|0)/(f|0)|0;g=g+1|0}while((g|0)!=(e|0))}n=c+(m<<2)|0;if((k[H>>2]|0)>0){j=0;do{i=k[l+(j<<2)>>2]|0;f=k[B>>2]|0;do if((i|0)<=(f|0)){f=k[D>>2]|0;g=k[C>>2]|0;h=g+(j<<2)|0;if((i|0)<(f|0)){k[h>>2]=f;h=g;break}else{k[h>>2]=i;h=g;break}}else{h=k[C>>2]|0;k[h+(j<<2)>>2]=f}while(0);j=j+1|0;f=k[H>>2]|0}while((j|0)<(f|0));if((f|0)>0){f=0;do{k[n+(f<<2)>>2]=(k[b+(f+m<<2)>>2]|0)+(k[h+(f<<2)>>2]|0);f=f+1|0;g=k[H>>2]|0}while((f|0)<(g|0));if((g|0)>0){f=0;do{g=n+(f<<2)|0;h=k[g>>2]|0;do if((h|0)>(k[B>>2]|0))k[g>>2]=h-(k[E>>2]|0);else{if((h|0)>=(k[D>>2]|0))break;k[g>>2]=(k[E>>2]|0)+h}while(0);f=f+1|0}while((f|0)<(k[H>>2]|0))}}}}else{P=m;o=75}}if((o|0)==75?(0,N=c+(($(d+-1|0,e)|0)<<2)|0,O=c+(P<<2)|0,(k[H>>2]|0)>0):0){j=0;do{i=k[N+(j<<2)>>2]|0;f=k[B>>2]|0;do if((i|0)<=(f|0)){f=k[D>>2]|0;g=k[C>>2]|0;h=g+(j<<2)|0;if((i|0)<(f|0)){k[h>>2]=f;h=g;break}else{k[h>>2]=i;h=g;break}}else{h=k[C>>2]|0;k[h+(j<<2)>>2]=f}while(0);j=j+1|0;f=k[H>>2]|0}while((j|0)<(f|0));if((f|0)>0){f=0;do{k[O+(f<<2)>>2]=(k[b+(f+P<<2)>>2]|0)+(k[h+(f<<2)>>2]|0);f=f+1|0;g=k[H>>2]|0}while((f|0)<(g|0));if((g|0)>0){f=0;do{g=O+(f<<2)|0;h=k[g>>2]|0;if((h|0)<=(k[B>>2]|0)){if((h|0)<(k[D>>2]|0))k[g>>2]=(k[E>>2]|0)+h}else k[g>>2]=h-(k[E>>2]|0);f=f+1|0}while((f|0)<(k[H>>2]|0))}}}d=d+1|0;if((d|0)>=(x|0)){I=Q;break a}f=k[w>>2]|0;g=k[f>>2]|0;h=k[f+4>>2]|0}gm(f)}else I=Q;while(0);g=k[I>>2]|0;h=g;if(g|0){d=Q+4|0;f=k[d>>2]|0;if((f|0)!=(g|0))k[d>>2]=f+(~((f+-4-h|0)>>>2)<<2);cn(g)}cn(G);d=k[R+36>>2]|0;f=d;if(d|0){g=R+40|0;h=k[g>>2]|0;if((h|0)!=(d|0))k[g>>2]=h+(~((h+-4-f|0)>>>2)<<2);cn(d)}d=k[R+24>>2]|0;f=d;if(d|0){g=R+28|0;h=k[g>>2]|0;if((h|0)!=(d|0))k[g>>2]=h+(~((h+-4-f|0)>>>2)<<2);cn(d)}d=k[R+12>>2]|0;f=d;if(d|0){g=R+16|0;h=k[g>>2]|0;if((h|0)!=(d|0))k[g>>2]=h+(~((h+-4-f|0)>>>2)<<2);cn(d)}g=k[R>>2]|0;if(!g){r=S;return 1}d=R+4|0;f=k[d>>2]|0;if((f|0)!=(g|0))k[d>>2]=f+(~((f+-4-g|0)>>>2)<<2);cn(g);r=S;return 1}function rb(a,b,c,d,e,f){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;f=f|0;var g=0,h=0,i=0,j=0,l=0,m=0,n=0,o=0,p=0,q=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,B=0,C=0,D=0,E=0,F=0,G=0,H=0,I=0,J=0,K=0,L=0,M=0,N=0,O=0,P=0,Q=0;Q=r;r=r+64|0;P=Q+16|0;O=Q;J=a+8|0;k[J>>2]=e;i=a+32|0;d=a+36|0;h=k[d>>2]|0;g=k[i>>2]|0;f=h-g>>2;if(f>>>0>=e>>>0){if(f>>>0>e>>>0?(j=g+(e<<2)|0,(h|0)!=(j|0)):0)k[d>>2]=h+(~((h+-4-j|0)>>>2)<<2)}else jh(i,e-f|0);d=P;f=d+48|0;do{k[d>>2]=0;d=d+4|0}while((d|0)<(f|0));k[O>>2]=0;if(!e){d=0;f=0}else{Ag(P,e,O);d=k[P+12>>2]|0;f=k[P+16>>2]|0}k[O>>2]=0;g=P+16|0;h=f-d>>2;if(h>>>0>=e>>>0){if(h>>>0>e>>>0?(l=d+(e<<2)|0,(f|0)!=(l|0)):0)k[g>>2]=f+(~((f+-4-l|0)>>>2)<<2)}else Ag(P+12|0,e-h|0,O);d=P+24|0;k[O>>2]=0;f=P+28|0;i=k[f>>2]|0;h=k[d>>2]|0;g=i-h>>2;if(g>>>0>=e>>>0){if(g>>>0>e>>>0?(m=h+(e<<2)|0,(i|0)!=(m|0)):0)k[f>>2]=i+(~((i+-4-m|0)>>>2)<<2)}else Ag(d,e-g|0,O);d=P+36|0;k[O>>2]=0;f=P+40|0;i=k[f>>2]|0;h=k[d>>2]|0;g=i-h>>2;if(g>>>0>=e>>>0){if(g>>>0>e>>>0?(n=h+(e<<2)|0,(i|0)!=(n|0)):0)k[f>>2]=i+(~((i+-4-n|0)>>>2)<<2)}else Ag(d,e-g|0,O);l=k[P>>2]|0;if((k[J>>2]|0)>0){m=a+16|0;j=a+32|0;n=a+12|0;i=0;do{h=k[l+(i<<2)>>2]|0;d=k[m>>2]|0;do if((h|0)<=(d|0)){d=k[n>>2]|0;f=k[j>>2]|0;g=f+(i<<2)|0;if((h|0)<(d|0)){k[g>>2]=d;g=f;break}else{k[g>>2]=h;g=f;break}}else{g=k[j>>2]|0;k[g+(i<<2)>>2]=d}while(0);i=i+1|0;d=k[J>>2]|0}while((i|0)<(d|0));if((d|0)>0){d=0;do{k[c+(d<<2)>>2]=(k[b+(d<<2)>>2]|0)+(k[g+(d<<2)>>2]|0);d=d+1|0;f=k[J>>2]|0}while((d|0)<(f|0));if((f|0)>0){f=a+20|0;d=0;do{g=c+(d<<2)|0;h=k[g>>2]|0;if((h|0)<=(k[m>>2]|0)){if((h|0)<(k[n>>2]|0))k[g>>2]=(k[f>>2]|0)+h}else k[g>>2]=h-(k[f>>2]|0);d=d+1|0}while((d|0)<(k[J>>2]|0))}}}x=k[a+48>>2]|0;y=k[a+52>>2]|0;I=xk(16)|0;k[I>>2]=0;k[I+4>>2]=0;k[I+8>>2]=0;k[I+12>>2]=0;bj(O,e);z=a+56|0;f=k[z>>2]|0;h=k[f+4>>2]|0;g=k[f>>2]|0;H=h-g|0;A=H>>2;a:do if((H|0)>4){B=x+12|0;C=(e|0)>0;D=a+16|0;E=a+32|0;F=a+12|0;G=a+20|0;H=e<<2;d=1;while(1){if(h-g>>2>>>0<=d>>>0)break;v=k[g+(d<<2)>>2]|0;u=(((v>>>0)%3|0|0)==0?2:-1)+v|0;w=(v|u|0)<0;t=(v|0)<0?v:u;s=1;f=0;g=v;b:while(1){do{if((g|0)<=-1){o=64;break b}p=k[P+(f*12|0)>>2]|0;q=k[B>>2]|0;i=k[q+(g<<2)>>2]|0;if((i|0)>=0){l=k[x>>2]|0;j=(i>>>0)%3|0;m=k[y>>2]|0;o=k[m+(k[l+(((i>>>0)/3|0)*12|0)+(j<<2)>>2]<<2)>>2]|0;h=i+1|0;h=((h|0)%3|0|0)==0?i+-2|0:h;if((h|0)<0)h=-1073741824;else h=k[l+(((h>>>0)/3|0)*12|0)+(((h>>>0)%3|0)<<2)>>2]|0;n=k[m+(h<<2)>>2]|0;h=((j|0)==0?2:-1)+i|0;if((h|0)<0)h=-1073741824;else h=k[l+(((h>>>0)/3|0)*12|0)+(((h>>>0)%3|0)<<2)>>2]|0;h=k[m+(h<<2)>>2]|0;if((o|0)<(d|0)&(n|0)<(d|0)&(h|0)<(d|0)){l=$(o,e)|0;j=$(n,e)|0;i=$(h,e)|0;if(C){h=0;do{k[p+(h<<2)>>2]=(k[c+(h+i<<2)>>2]|0)+(k[c+(h+j<<2)>>2]|0)-(k[c+(h+l<<2)>>2]|0);h=h+1|0}while((h|0)!=(e|0))}f=f+1|0;if((f|0)==4){f=4;o=47;break b}}}do if(s){p=g+1|0;g=((p|0)%3|0|0)==0?g+-2|0:p;if((g|0)>=0){g=k[q+(g<<2)>>2]|0;h=g+1|0;if((g|0)>=0)g=((h|0)%3|0|0)==0?g+-2|0:h}}else{g=(((g>>>0)%3|0|0)==0?2:-1)+g|0;if((g|0)>=0){g=k[q+(g<<2)>>2]|0;if((g|0)>=0)if(!((g>>>0)%3|0)){g=g+2|0;break}else{g=g+-1|0;break}}}while(0);if((g|0)==(v|0)){o=64;break b}}while(!(s&(g|0)<0));if(w){s=0;g=t;continue}g=k[q+(u<<2)>>2]|0;if((g|0)<0){s=0;continue}if(!((g>>>0)%3|0)){s=0;g=g+2|0;continue}else{s=0;g=g+-1|0;continue}}if((o|0)==64)if((f|0)>0)o=47;else{N=$(d,e)|0;o=76}if((o|0)==47){o=0;if(C){Vi(k[O>>2]|0,0,H|0)|0;m=f+-1|0;l=I+(m<<2)|0;m=k[a+60+(m*12|0)>>2]|0;n=k[O>>2]|0;j=0;g=0;do{w=k[l>>2]|0;k[l>>2]=w+1;if(!(k[m+(w>>>5<<2)>>2]&1<<(w&31))){i=k[P+(j*12|0)>>2]|0;h=0;do{w=n+(h<<2)|0;k[w>>2]=(k[w>>2]|0)+(k[i+(h<<2)>>2]|0);h=h+1|0}while((h|0)!=(e|0));g=g+1|0}j=j+1|0}while((j|0)!=(f|0));f=g}else{j=f+-1|0;i=I+(j<<2)|0;j=k[a+60+(j*12|0)>>2]|0;h=0;g=0;l=k[i>>2]|0;do{w=l;l=l+1|0;k[i>>2]=l;g=g+((k[j+(w>>>5<<2)>>2]&1<<(w&31)|0)==0&1)|0;h=h+1|0}while((h|0)!=(f|0));f=g}m=$(d,e)|0;if(f){l=k[O>>2]|0;if(C){g=0;do{w=l+(g<<2)|0;k[w>>2]=(k[w>>2]|0)/(f|0)|0;g=g+1|0}while((g|0)!=(e|0))}n=c+(m<<2)|0;if((k[J>>2]|0)>0){j=0;do{i=k[l+(j<<2)>>2]|0;f=k[D>>2]|0;do if((i|0)<=(f|0)){f=k[F>>2]|0;g=k[E>>2]|0;h=g+(j<<2)|0;if((i|0)<(f|0)){k[h>>2]=f;h=g;break}else{k[h>>2]=i;h=g;break}}else{h=k[E>>2]|0;k[h+(j<<2)>>2]=f}while(0);j=j+1|0;f=k[J>>2]|0}while((j|0)<(f|0));if((f|0)>0){f=0;do{k[n+(f<<2)>>2]=(k[b+(f+m<<2)>>2]|0)+(k[h+(f<<2)>>2]|0);f=f+1|0;g=k[J>>2]|0}while((f|0)<(g|0));if((g|0)>0){f=0;do{g=n+(f<<2)|0;h=k[g>>2]|0;do if((h|0)>(k[D>>2]|0))k[g>>2]=h-(k[G>>2]|0);else{if((h|0)>=(k[F>>2]|0))break;k[g>>2]=(k[G>>2]|0)+h}while(0);f=f+1|0}while((f|0)<(k[J>>2]|0))}}}}else{N=m;o=76}}if((o|0)==76?(0,L=c+(($(d+-1|0,e)|0)<<2)|0,M=c+(N<<2)|0,(k[J>>2]|0)>0):0){j=0;do{i=k[L+(j<<2)>>2]|0;f=k[D>>2]|0;do if((i|0)<=(f|0)){f=k[F>>2]|0;g=k[E>>2]|0;h=g+(j<<2)|0;if((i|0)<(f|0)){k[h>>2]=f;h=g;break}else{k[h>>2]=i;h=g;break}}else{h=k[E>>2]|0;k[h+(j<<2)>>2]=f}while(0);j=j+1|0;f=k[J>>2]|0}while((j|0)<(f|0));if((f|0)>0){f=0;do{k[M+(f<<2)>>2]=(k[b+(f+N<<2)>>2]|0)+(k[h+(f<<2)>>2]|0);f=f+1|0;g=k[J>>2]|0}while((f|0)<(g|0));if((g|0)>0){f=0;do{g=M+(f<<2)|0;h=k[g>>2]|0;if((h|0)<=(k[D>>2]|0)){if((h|0)<(k[F>>2]|0))k[g>>2]=(k[G>>2]|0)+h}else k[g>>2]=h-(k[G>>2]|0);f=f+1|0}while((f|0)<(k[J>>2]|0))}}}d=d+1|0;if((d|0)>=(A|0)){K=O;break a}f=k[z>>2]|0;g=k[f>>2]|0;h=k[f+4>>2]|0}gm(f)}else K=O;while(0);h=k[K>>2]|0;g=h;if(h|0){d=O+4|0;f=k[d>>2]|0;if((f|0)!=(h|0))k[d>>2]=f+(~((f+-4-g|0)>>>2)<<2);cn(h)}cn(I);d=k[P+36>>2]|0;f=d;if(d|0){g=P+40|0;h=k[g>>2]|0;if((h|0)!=(d|0))k[g>>2]=h+(~((h+-4-f|0)>>>2)<<2);cn(d)}d=k[P+24>>2]|0;f=d;if(d|0){g=P+28|0;h=k[g>>2]|0;if((h|0)!=(d|0))k[g>>2]=h+(~((h+-4-f|0)>>>2)<<2);cn(d)}d=k[P+12>>2]|0;f=d;if(d|0){g=P+16|0;h=k[g>>2]|0;if((h|0)!=(d|0))k[g>>2]=h+(~((h+-4-f|0)>>>2)<<2);cn(d)}g=k[P>>2]|0;if(!g){r=Q;return 1}d=P+4|0;f=k[d>>2]|0;if((f|0)!=(g|0))k[d>>2]=f+(~((f+-4-g|0)>>>2)<<2);cn(g);r=Q;return 1}function sb(a){a=a|0;var b=0,c=0,d=0,e=0,f=0,g=0,h=0,i=0,j=0,l=0,m=0,n=0,o=0,p=0,q=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,B=0,C=0,D=0,E=0,F=0,G=0,H=0,I=0,J=0,K=0;J=r;r=r+48|0;H=J+36|0;K=J+24|0;I=J+12|0;D=J;G=a+4|0;d=k[(k[G>>2]|0)+28>>2]|0;F=a+8|0;b=k[F>>2]|0;b=((k[b+4>>2]|0)-(k[b>>2]|0)|0)/12|0;c=d+80|0;d=d+84|0;k[H>>2]=0;k[H+4>>2]=0;k[H+8>>2]=0;g=k[d>>2]|0;f=k[c>>2]|0;e=(g-f|0)/12|0;if(b>>>0<=e>>>0){if(b>>>0>>0?(h=f+(b*12|0)|0,(g|0)!=(h|0)):0)k[d>>2]=g+(~(((g+-12-h|0)>>>0)/12|0)*12|0)}else Vf(c,b-e|0,H);z=a+228|0;A=a+232|0;if((k[A>>2]|0)==(k[z>>2]|0)){f=k[F>>2]|0;f=(k[f+28>>2]|0)-(k[f+24>>2]|0)>>2;k[H>>2]=-1;xi(K,f,H);f=k[G>>2]|0;b=k[f+28>>2]|0;e=k[b+84>>2]|0;d=k[b+80>>2]|0;if((e-d|0)>0){o=I+4|0;p=I+8|0;c=0;n=0;m=b;b=f;g=f;j=e;while(1){k[I>>2]=0;k[I+4>>2]=0;k[I+8>>2]=0;a=n*3|0;if((n|0)<0)e=-1073741824;else e=k[(k[k[F>>2]>>2]|0)+(((a>>>0)/3|0)*12|0)+(((a>>>0)%3|0)<<2)>>2]|0;i=k[K>>2]|0;e=i+(e<<2)|0;f=k[e>>2]|0;if((f|0)==-1){k[e>>2]=c;h=c+1|0;l=c}else{h=c;l=f}k[I>>2]=l;c=a+1|0;if((a|0)<-1)c=-1073741824;else c=k[(k[k[F>>2]>>2]|0)+(((c>>>0)/3|0)*12|0)+(((c>>>0)%3|0)<<2)>>2]|0;e=i+(c<<2)|0;c=k[e>>2]|0;if((c|0)==-1){k[e>>2]=h;e=h+1|0;c=h}else e=h;k[o>>2]=c;c=a+2|0;if((a|0)<-2)c=-1073741824;else c=k[(k[k[F>>2]>>2]|0)+(((c>>>0)/3|0)*12|0)+(((c>>>0)%3|0)<<2)>>2]|0;c=i+(c<<2)|0;f=k[c>>2]|0;if((f|0)==-1){k[c>>2]=e;c=e+1|0}else{c=e;e=f}k[p>>2]=e;h=m+80|0;a=m+84|0;f=(j-d|0)/12|0;e=d;i=n;n=n+1|0;if((i|0)<(f|0)){h=j;f=m}else{b=j;k[H>>2]=0;k[H+4>>2]=0;k[H+8>>2]=0;if(n>>>0<=f>>>0)if(n>>>0>>0?(q=e+(n*12|0)|0,(b|0)!=(q|0)):0){b=b+(~(((b+-12-q|0)>>>0)/12|0)*12|0)|0;k[a>>2]=b;f=m}else{f=m;b=j}else{Vf(h,n-f|0,H);g=k[G>>2]|0;d=k[g+28>>2]|0;e=k[h>>2]|0;f=d;b=k[d+84>>2]|0;d=k[d+80>>2]|0}h=b;b=g}k[e+(i*12|0)>>2]=l;k[e+(i*12|0)+4>>2]=k[o>>2];k[e+(i*12|0)+8>>2]=k[p>>2];if((n|0)>=((h-d|0)/12|0|0)){d=K;break}else{m=f;j=h}}}else{c=0;d=K;b=f}k[(k[b+4>>2]|0)+64>>2]=c;d=k[d>>2]|0;e=d;if(d|0){b=K+4|0;c=k[b>>2]|0;if((c|0)!=(d|0))k[b>>2]=c+(~((c+-4-e|0)>>>2)<<2);cn(d)}r=J;return 1}k[K>>2]=0;E=K+4|0;k[E>>2]=0;k[K+8>>2]=0;b=k[F>>2]|0;bj(I,(((k[b+4>>2]|0)-(k[b>>2]|0)|0)/12|0)*3|0);b=k[F>>2]|0;a:do if(((k[b+28>>2]|0)-(k[b+24>>2]|0)|0)>0){q=a+136|0;s=K+8|0;p=0;b:while(1){f=k[(k[b+24>>2]|0)+(p<<2)>>2]|0;c:do if((f|0)>=0){d:do if((k[(k[q>>2]|0)+(p>>>5<<2)>>2]&1<<(p&31)|0)==0?(w=k[A>>2]|0,x=k[z>>2]|0,y=x,(w|0)!=(x|0)):0){h=(f>>>0)/3|0;a=(f>>>0)%3|0;g=((a|0)==0?2:-1)+f|0;i=(g|0)<0;j=(w-x|0)/116|0;l=b+12|0;m=b+12|0;e=0;e:while(1){o=k[(k[k[y+(e*116|0)+68>>2]>>2]|0)+(h*12|0)+(a<<2)>>2]|0;do if(1<<(o&31)&k[(k[y+(e*116|0)+16>>2]|0)+(o>>>5<<2)>>2]|0){n=k[y+(e*116|0)+32>>2]|0;o=k[n+(f<<2)>>2]|0;if(!i){c=k[(k[l>>2]|0)+(g<<2)>>2]|0;do if((c|0)>=0)if(!((c>>>0)%3|0)){c=c+2|0;break}else{c=c+-1|0;break}while(0);if((c|0)==(f|0))break;else d=c}else d=g;while(1){c=k[n+(d<<2)>>2]|0;if((d|0)<0)break e;if((c|0)!=(o|0)){f=d;break d}c=(((d>>>0)%3|0|0)==0?2:-1)+d|0;do if((c|0)>=0){c=k[(k[m>>2]|0)+(c<<2)>>2]|0;if((c|0)>=0)if(!((c>>>0)%3|0)){c=c+2|0;break}else{c=c+-1|0;break}}while(0);if((c|0)==(f|0))break;else d=c}}while(0);e=e+1|0;if(e>>>0>=j>>>0)break d}while(1)if((c|0)==(o|0))c=o;else{f=d;break}}while(0);c=k[E>>2]|0;k[(k[I>>2]|0)+(f<<2)>>2]=c-(k[K>>2]|0)>>2;k[H>>2]=f;if(c>>>0<(k[s>>2]|0)>>>0){k[c>>2]=f;k[E>>2]=c+4}else{xh(K,H);b=k[F>>2]|0}if((((f|0)>=0?(u=(((f>>>0)%3|0|0)==0?2:-1)+f|0,(u|0)>=0):0)?(t=k[(k[b+12>>2]|0)+(u<<2)>>2]|0,(t|0)>=0):0)?(v=t+(((t>>>0)%3|0|0)==0?2:-1)|0,(v|0)>-1&(v|0)!=(f|0)):0){g=v;d=f;while(1){if((g|0)<0)break b;b=k[A>>2]|0;c=k[z>>2]|0;e=c;f:do if((b|0)!=(c|0)){c=(b-c|0)/116|0;b=0;while(1){o=k[e+(b*116|0)+32>>2]|0;b=b+1|0;if((k[o+(g<<2)>>2]|0)!=(k[o+(d<<2)>>2]|0))break;if(b>>>0>=c>>>0){B=77;break f}}b=k[E>>2]|0;k[(k[I>>2]|0)+(g<<2)>>2]=b-(k[K>>2]|0)>>2;k[H>>2]=g;if(b>>>0<(k[s>>2]|0)>>>0){k[b>>2]=g;k[E>>2]=b+4}else xh(K,H)}else B=77;while(0);if((B|0)==77){B=0;o=k[I>>2]|0;k[o+(g<<2)>>2]=k[o+(d<<2)>>2]}b=(((g>>>0)%3|0|0)==0?2:-1)+g|0;if((b|0)<0)break c;b=k[(k[(k[F>>2]|0)+12>>2]|0)+(b<<2)>>2]|0;if((b|0)<0)break c;b=b+(((b>>>0)%3|0|0)==0?2:-1)|0;if((b|0)>-1&(b|0)!=(f|0)){d=g;g=b}else break}}}while(0);p=p+1|0;b=k[F>>2]|0;if((p|0)>=((k[b+28>>2]|0)-(k[b+24>>2]|0)>>2|0))break a}g:while(1){b=k[A>>2]|0;c=k[z>>2]|0;e=c;h:do if((b|0)!=(c|0)){c=(b-c|0)/116|0;b=0;while(1){J=k[e+(b*116|0)+32>>2]|0;b=b+1|0;if((k[J+(g<<2)>>2]|0)!=(k[J+(d<<2)>>2]|0))break;if(b>>>0>=c>>>0)break h}b=k[E>>2]|0;k[(k[I>>2]|0)+(g<<2)>>2]=b-(k[K>>2]|0)>>2;k[H>>2]=g;if(b>>>0<(k[s>>2]|0)>>>0){k[b>>2]=g;k[E>>2]=b+4}else xh(K,H);d=g;continue g}while(0);J=k[I>>2]|0;k[J+(g<<2)>>2]=k[J+(d<<2)>>2];d=g}}while(0);c=k[G>>2]|0;b=k[c+28>>2]|0;e=k[b+84>>2]|0;d=k[b+80>>2]|0;if((e-d|0)>0){n=D+4|0;o=D+8|0;m=0;i=c;j=c;while(1){k[D>>2]=0;k[D+4>>2]=0;k[D+8>>2]=0;g=(k[I>>2]|0)+(m*3<<2)|0;k[D>>2]=k[g>>2];k[D+4>>2]=k[g+4>>2];k[D+8>>2]=k[g+8>>2];g=b+80|0;h=b+84|0;a=(e-d|0)/12|0;c=d;l=m;m=m+1|0;if((l|0)<(a|0)){g=c;c=i;f=j}else{f=e;k[H>>2]=0;k[H+4>>2]=0;k[H+8>>2]=0;if(m>>>0<=a>>>0)if(m>>>0>>0?(C=c+(m*12|0)|0,(f|0)!=(C|0)):0){e=f+(~(((f+-12-C|0)>>>0)/12|0)*12|0)|0;k[h>>2]=e;f=j}else f=j;else{Vf(g,m-a|0,H);f=k[G>>2]|0;d=k[f+28>>2]|0;c=k[g>>2]|0;b=d;e=k[d+84>>2]|0;d=k[d+80>>2]|0}g=c;c=f}k[g+(l*12|0)>>2]=k[D>>2];k[g+(l*12|0)+4>>2]=k[n>>2];k[g+(l*12|0)+8>>2]=k[o>>2];if((m|0)>=((e-d|0)/12|0|0))break;else{i=c;j=f}}}b=k[K>>2]|0;k[(k[c+4>>2]|0)+64>>2]=(k[E>>2]|0)-b>>2;d=k[I>>2]|0;e=d;if(d){b=I+4|0;c=k[b>>2]|0;if((c|0)!=(d|0))k[b>>2]=c+(~((c+-4-e|0)>>>2)<<2);cn(d);b=k[K>>2]|0}c=b;if(b|0){d=k[E>>2]|0;if((d|0)!=(b|0))k[E>>2]=d+(~((d+-4-c|0)>>>2)<<2);cn(b)}r=J;return 1}function tb(a,b,c,d,e,f){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;f=f|0;var g=0,h=0,j=0,l=0,m=0,n=0,o=0,p=0,q=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,B=0,C=0,D=0,E=0,F=0,G=0,H=0,I=0,J=0,K=0,L=0,M=0,N=0,O=0,P=0,Q=0,R=0,S=0,T=0,U=0,V=0,W=0,X=0,Y=0,Z=0,_=0,$=0,aa=0,ba=0,da=0,ea=0,fa=0,ga=0;fa=r;r=r+80|0;da=fa+64|0;j=fa+16|0;ea=fa+40|0;X=fa+28|0;W=fa;k[j>>2]=k[d>>2];k[j+4>>2]=k[d+4>>2];k[j+8>>2]=k[d+8>>2];m=k[c>>2]|0;ba=c+4|0;n=k[ba>>2]|0;Y=c+8|0;l=k[Y>>2]|0;k[ea>>2]=0;k[ea+4>>2]=0;k[ea+8>>2]=0;k[ea+12>>2]=0;k[ea+16>>2]=0;k[ea+20>>2]=0;Z=ea+8|0;_=ea+4|0;$=ea+16|0;aa=ea+20|0;rc(ea);g=k[_>>2]|0;o=k[Z>>2]|0;h=(k[aa>>2]|0)+(k[$>>2]|0)|0;if((o|0)==(g|0))g=0;else g=(k[g+(h>>>7<<2)>>2]|0)+((h&127)<<5)|0;k[g>>2]=b;k[g+4>>2]=m;k[g+8>>2]=n;k[g+12>>2]=l;V=g+16|0;k[V>>2]=k[j>>2];k[V+4>>2]=k[j+4>>2];k[V+8>>2]=k[j+8>>2];k[g+28>>2]=e;g=(k[aa>>2]|0)+1|0;k[aa>>2]=g;if(!g){fg(ea);r=fa;return}O=a+44|0;P=a+40|0;N=f+4|0;Q=da+4|0;R=da+8|0;S=a+24|0;T=a+20|0;U=a+84|0;V=a+80|0;e=o;a:while(1){K=k[$>>2]|0;J=g+-1|0;h=J+K|0;L=k[_>>2]|0;I=k[L+(h>>>7<<2)>>2]|0;h=h&127;M=k[I+(h<<5)>>2]|0;j=k[I+(h<<5)+4>>2]|0;b=k[I+(h<<5)+8>>2]|0;l=k[I+(h<<5)+12>>2]|0;H=I+(h<<5)+16|0;k[X>>2]=k[H>>2];k[X+4>>2]=k[H+4>>2];k[X+8>>2]=k[H+8>>2];h=k[I+(h<<5)+28>>2]|0;k[aa>>2]=J;L=e-L|0;if((1-g-K+((L|0)==0?0:(L<<5)+-1|0)|0)>>>0>255){cn(k[e+-4>>2]|0);k[Z>>2]=(k[Z>>2]|0)+-4}k[c>>2]=j;k[ba>>2]=b;k[Y>>2]=l;k[d>>2]=k[X>>2];k[d+4>>2]=k[X+4>>2];k[d+8>>2]=k[X+8>>2];k[da>>2]=k[X>>2];k[da+4>>2]=k[X+4>>2];k[da+8>>2]=k[X+8>>2];p=Jk(a,M,c,da,h)|0;e=d+(p<<2)|0;m=k[e>>2]|0;g=k[a>>2]|0;L=g-m|0;do if(!L){if((M|0)>0){m=k[f>>2]|0;b=m+84|0;l=m+68|0;e=m+40|0;m=m+64|0;j=k[N>>2]|0;g=0;n=j;while(1){if(!(i[b>>0]|0))h=k[(k[l>>2]|0)+(n<<2)>>2]|0;else h=n;K=e;L=k[K>>2]|0;K=uk(h|0,((h|0)<0)<<31>>31|0,L|0,k[K+4>>2]|0)|0;Ii((k[k[m>>2]>>2]|0)+K|0,c|0,L|0)|0;g=g+1|0;if((g|0)==(M|0))break;else n=n+1|0}k[N>>2]=M+j}}else{if(!M){g=14;break a}if(M>>>0>=3){k[da>>2]=k[c>>2];k[Q>>2]=k[ba>>2];k[R>>2]=k[Y>>2];j=da+(p<<2)|0;k[j>>2]=(k[j>>2]|0)+(1<>>0>=33){g=30;break a}if(!j){g=32;break a}b=k[S>>2]|0;g=32-b|0;l=k[T>>2]|0;h=k[l>>2]<>>(32-j|0);L=b+j|0;k[S>>2]=L;if((L|0)==32){k[T>>2]=l+4;k[S>>2]=0}}else{L=j-g|0;k[S>>2]=L;K=l+4|0;k[T>>2]=K;L=32-L|0;g=(k[K>>2]|0)>>>L|h>>>(L-g|0)}b=(M>>>1)-g|0;h=M-b|0;if((b|0)==(h|0)){n=b;o=b}else{M=k[U>>2]|0;g=k[V>>2]|0;j=(k[g>>2]&1<<31-M|0)!=0;M=M+1|0;k[U>>2]=M;if((M|0)==32){k[V>>2]=g+4;k[U>>2]=0}n=j?b:h;o=j?h:b}k[e>>2]=m+1;if(n|0){k[W>>2]=k[d>>2];k[W+4>>2]=k[d+4>>2];k[W+8>>2]=k[d+8>>2];l=k[c>>2]|0;e=k[ba>>2]|0;m=k[Y>>2]|0;b=k[Z>>2]|0;j=k[_>>2]|0;M=b-j|0;g=k[$>>2]|0;h=k[aa>>2]|0;if((((M|0)==0?0:(M<<5)+-1|0)|0)==(h+g|0)){rc(ea);g=k[$>>2]|0;h=k[aa>>2]|0;b=k[Z>>2]|0;j=k[_>>2]|0}g=h+g|0;if((b|0)==(j|0))g=0;else g=(k[j+(g>>>7<<2)>>2]|0)+((g&127)<<5)|0;k[g>>2]=n;k[g+4>>2]=l;k[g+8>>2]=e;k[g+12>>2]=m;M=g+16|0;k[M>>2]=k[W>>2];k[M+4>>2]=k[W+4>>2];k[M+8>>2]=k[W+8>>2];k[g+28>>2]=p;k[aa>>2]=(k[aa>>2]|0)+1}if(o|0){k[W>>2]=k[d>>2];k[W+4>>2]=k[d+4>>2];k[W+8>>2]=k[d+8>>2];l=k[da>>2]|0;e=k[Q>>2]|0;m=k[R>>2]|0;b=k[Z>>2]|0;j=k[_>>2]|0;M=b-j|0;g=k[$>>2]|0;h=k[aa>>2]|0;if((((M|0)==0?0:(M<<5)+-1|0)|0)==(h+g|0)){rc(ea);g=k[$>>2]|0;h=k[aa>>2]|0;b=k[Z>>2]|0;j=k[_>>2]|0}g=h+g|0;if((b|0)==(j|0))g=0;else g=(k[j+(g>>>7<<2)>>2]|0)+((g&127)<<5)|0;k[g>>2]=o;k[g+4>>2]=l;k[g+8>>2]=e;k[g+12>>2]=m;M=g+16|0;k[M>>2]=k[W>>2];k[M+4>>2]=k[W+4>>2];k[M+8>>2]=k[W+8>>2];k[g+28>>2]=p;k[aa>>2]=(k[aa>>2]|0)+1}break}x=(p|0)==2?0:p+1|0;t=(x|0)==2?0:x+1|0;K=g-(k[d+(x<<2)>>2]|0)|0;C=g-(k[d+(t<<2)>>2]|0)|0;G=k[f>>2]|0;D=G+84|0;E=G+68|0;F=G+40|0;G=G+64|0;H=da+(p<<2)|0;I=(L|0)<33;J=(L|0)>0;n=c+(p<<2)|0;o=(K|0)==0;e=da+(x<<2)|0;p=c+(x<<2)|0;q=(C|0)==0;m=da+(t<<2)|0;s=c+(t<<2)|0;t=da+(t<<2)|0;u=(C|0)<33;v=(C|0)>0;w=32-C|0;x=da+(x<<2)|0;y=(K|0)<33;z=(K|0)>0;A=32-K|0;B=32-L|0;l=0;do{k[da>>2]=0;k[da+4>>2]=0;k[da+8>>2]=0;if(!I){g=19;break a}if(!J){g=21;break a}j=k[O>>2]|0;g=32-j|0;b=k[P>>2]|0;h=k[b>>2]<>>B;k[H>>2]=g;j=j+L|0;k[O>>2]=j;if((j|0)==32){k[P>>2]=b+4;k[O>>2]=0}}else{ga=L-g|0;k[O>>2]=ga;j=b+4|0;k[P>>2]=j;b=32-ga|0;g=(k[j>>2]|0)>>>b|h>>>(b-g|0);k[H>>2]=g}k[H>>2]=g|k[n>>2];do if(!o){if(!y){g=19;break a}if(!z){g=21;break a}j=k[O>>2]|0;g=32-j|0;b=k[P>>2]|0;h=k[b>>2]<(g|0)){ga=K-g|0;k[O>>2]=ga;b=b+4|0;k[P>>2]=b;ga=32-ga|0;g=(k[b>>2]|0)>>>ga|h>>>(ga-g|0);k[x>>2]=g;h=x;break}g=h>>>A;k[x>>2]=g;ga=j+K|0;k[O>>2]=ga;if((ga|0)==32){k[P>>2]=b+4;k[O>>2]=0;h=x}else h=x}else{h=e;g=k[e>>2]|0}while(0);k[h>>2]=g|k[p>>2];do if(!q){if(!u){g=19;break a}if(!v){g=21;break a}j=k[O>>2]|0;g=32-j|0;b=k[P>>2]|0;h=k[b>>2]<(g|0)){ga=C-g|0;k[O>>2]=ga;b=b+4|0;k[P>>2]=b;ga=32-ga|0;g=(k[b>>2]|0)>>>ga|h>>>(ga-g|0);k[t>>2]=g;h=t;break}g=h>>>w;k[t>>2]=g;ga=j+C|0;k[O>>2]=ga;if((ga|0)==32){k[P>>2]=b+4;k[O>>2]=0;h=t}else h=t}else{h=m;g=k[m>>2]|0}while(0);k[h>>2]=g|k[s>>2];g=k[N>>2]|0;k[N>>2]=g+1;if(!(i[D>>0]|0))g=k[(k[E>>2]|0)+(g<<2)>>2]|0;b=F;ga=k[b>>2]|0;b=uk(g|0,((g|0)<0)<<31>>31|0,ga|0,k[b+4>>2]|0)|0;Ii((k[k[G>>2]>>2]|0)+b|0,da|0,ga|0)|0;l=l+1|0}while(l>>>0>>0)}while(0);g=k[aa>>2]|0;if(!g){g=57;break}e=k[Z>>2]|0}if((g|0)==14)Ka(13811,13849,231,13919);else if((g|0)==19)Ka(13932,13956,48,13984);else if((g|0)==21)Ka(14013,13956,49,13984);else if((g|0)==30)Ka(13932,13956,48,13984);else if((g|0)==32)Ka(14013,13956,49,13984);else if((g|0)==57){fg(ea);r=fa;return}}function ub(a,b,c,d,e,f){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;f=f|0;var g=0,h=0,i=0,j=0,l=0,m=0,n=0,o=0,p=0,q=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,B=0,C=0,D=0,E=0,F=0,G=0,H=0,I=0,J=0,K=0,L=0,M=0,N=0,O=0,P=0,Q=0,R=0,S=0,T=0,U=0,V=0,W=0,X=0,Y=0,Z=0,_=0,$=0,aa=0,ba=0,da=0,ea=0,fa=0;ea=r;r=r+80|0;ba=ea+64|0;i=ea+16|0;da=ea+40|0;W=ea+28|0;V=ea;k[i>>2]=k[d>>2];k[i+4>>2]=k[d+4>>2];k[i+8>>2]=k[d+8>>2];l=k[c>>2]|0;aa=c+4|0;m=k[aa>>2]|0;X=c+8|0;j=k[X>>2]|0;k[da>>2]=0;k[da+4>>2]=0;k[da+8>>2]=0;k[da+12>>2]=0;k[da+16>>2]=0;k[da+20>>2]=0;Y=da+8|0;Z=da+4|0;_=da+16|0;$=da+20|0;rc(da);g=k[Z>>2]|0;n=k[Y>>2]|0;h=(k[$>>2]|0)+(k[_>>2]|0)|0;if((n|0)==(g|0))g=0;else g=(k[g+(h>>>7<<2)>>2]|0)+((h&127)<<5)|0;k[g>>2]=b;k[g+4>>2]=l;k[g+8>>2]=m;k[g+12>>2]=j;U=g+16|0;k[U>>2]=k[i>>2];k[U+4>>2]=k[i+4>>2];k[U+8>>2]=k[i+8>>2];k[g+28>>2]=e;g=(k[$>>2]|0)+1|0;k[$>>2]=g;if(!g){fg(da);r=ea;return}L=a+44|0;M=a+40|0;N=ba+4|0;O=ba+8|0;P=ba+4|0;Q=ba+8|0;R=a+24|0;S=a+20|0;T=a+84|0;U=a+80|0;e=n;a:while(1){I=k[_>>2]|0;H=g+-1|0;h=H+I|0;J=k[Z>>2]|0;G=k[J+(h>>>7<<2)>>2]|0;h=h&127;K=k[G+(h<<5)>>2]|0;i=k[G+(h<<5)+4>>2]|0;b=k[G+(h<<5)+8>>2]|0;j=k[G+(h<<5)+12>>2]|0;F=G+(h<<5)+16|0;k[W>>2]=k[F>>2];k[W+4>>2]=k[F+4>>2];k[W+8>>2]=k[F+8>>2];h=k[G+(h<<5)+28>>2]|0;k[$>>2]=H;J=e-J|0;if((1-g-I+((J|0)==0?0:(J<<5)+-1|0)|0)>>>0>255){cn(k[e+-4>>2]|0);k[Y>>2]=(k[Y>>2]|0)+-4}k[c>>2]=i;k[aa>>2]=b;k[X>>2]=j;k[d>>2]=k[W>>2];k[d+4>>2]=k[W+4>>2];k[d+8>>2]=k[W+8>>2];k[ba>>2]=k[W>>2];k[ba+4>>2]=k[W+4>>2];k[ba+8>>2]=k[W+8>>2];o=Jk(a,K,c,ba,h)|0;e=d+(o<<2)|0;l=k[e>>2]|0;g=k[a>>2]|0;J=g-l|0;do if(!J){if((K|0)>0){h=k[f>>2]|0;i=h+4|0;b=h+8|0;g=0;do{j=k[i>>2]|0;if((j|0)==(k[b>>2]|0))xg(h,c);else{k[j>>2]=k[c>>2];k[j+4>>2]=k[aa>>2];k[j+8>>2]=k[X>>2];k[i>>2]=j+12}g=g+1|0}while((g|0)<(K|0))}}else{if(!K){g=15;break a}if(K>>>0>=3){k[ba>>2]=k[c>>2];k[P>>2]=k[aa>>2];k[Q>>2]=k[X>>2];i=ba+(o<<2)|0;k[i>>2]=(k[i>>2]|0)+(1<>>0>=33){g=32;break a}if(!i){g=34;break a}b=k[R>>2]|0;g=32-b|0;j=k[S>>2]|0;h=k[j>>2]<>>(32-i|0);J=b+i|0;k[R>>2]=J;if((J|0)==32){k[S>>2]=j+4;k[R>>2]=0}}else{J=i-g|0;k[R>>2]=J;I=j+4|0;k[S>>2]=I;J=32-J|0;g=(k[I>>2]|0)>>>J|h>>>(J-g|0)}b=(K>>>1)-g|0;h=K-b|0;if((b|0)==(h|0)){m=b;n=b}else{K=k[T>>2]|0;g=k[U>>2]|0;i=(k[g>>2]&1<<31-K|0)!=0;K=K+1|0;k[T>>2]=K;if((K|0)==32){k[U>>2]=g+4;k[T>>2]=0}m=i?b:h;n=i?h:b}k[e>>2]=l+1;if(m|0){k[V>>2]=k[d>>2];k[V+4>>2]=k[d+4>>2];k[V+8>>2]=k[d+8>>2];j=k[c>>2]|0;e=k[aa>>2]|0;l=k[X>>2]|0;b=k[Y>>2]|0;i=k[Z>>2]|0;K=b-i|0;g=k[_>>2]|0;h=k[$>>2]|0;if((((K|0)==0?0:(K<<5)+-1|0)|0)==(h+g|0)){rc(da);g=k[_>>2]|0;h=k[$>>2]|0;b=k[Y>>2]|0;i=k[Z>>2]|0}g=h+g|0;if((b|0)==(i|0))g=0;else g=(k[i+(g>>>7<<2)>>2]|0)+((g&127)<<5)|0;k[g>>2]=m;k[g+4>>2]=j;k[g+8>>2]=e;k[g+12>>2]=l;K=g+16|0;k[K>>2]=k[V>>2];k[K+4>>2]=k[V+4>>2];k[K+8>>2]=k[V+8>>2];k[g+28>>2]=o;k[$>>2]=(k[$>>2]|0)+1}if(n|0){k[V>>2]=k[d>>2];k[V+4>>2]=k[d+4>>2];k[V+8>>2]=k[d+8>>2];j=k[ba>>2]|0;e=k[P>>2]|0;l=k[Q>>2]|0;b=k[Y>>2]|0;i=k[Z>>2]|0;K=b-i|0;g=k[_>>2]|0;h=k[$>>2]|0;if((((K|0)==0?0:(K<<5)+-1|0)|0)==(h+g|0)){rc(da);g=k[_>>2]|0;h=k[$>>2]|0;b=k[Y>>2]|0;i=k[Z>>2]|0}g=h+g|0;if((b|0)==(i|0))g=0;else g=(k[i+(g>>>7<<2)>>2]|0)+((g&127)<<5)|0;k[g>>2]=n;k[g+4>>2]=j;k[g+8>>2]=e;k[g+12>>2]=l;K=g+16|0;k[K>>2]=k[V>>2];k[K+4>>2]=k[V+4>>2];k[K+8>>2]=k[V+8>>2];k[g+28>>2]=o;k[$>>2]=(k[$>>2]|0)+1}break}w=(o|0)==2?0:o+1|0;s=(w|0)==2?0:w+1|0;I=g-(k[d+(w<<2)>>2]|0)|0;C=g-(k[d+(s<<2)>>2]|0)|0;B=k[f>>2]|0;D=B+4|0;E=B+8|0;F=ba+(o<<2)|0;G=(J|0)<33;H=(J|0)>0;m=c+(o<<2)|0;n=(I|0)==0;e=ba+(w<<2)|0;o=c+(w<<2)|0;p=(C|0)==0;l=ba+(s<<2)|0;q=c+(s<<2)|0;s=ba+(s<<2)|0;t=(C|0)<33;u=(C|0)>0;v=32-C|0;w=ba+(w<<2)|0;x=(I|0)<33;y=(I|0)>0;z=32-I|0;A=32-J|0;j=0;do{k[ba>>2]=0;k[ba+4>>2]=0;k[ba+8>>2]=0;if(!G){g=21;break a}if(!H){g=23;break a}i=k[L>>2]|0;g=32-i|0;b=k[M>>2]|0;h=k[b>>2]<>>A;k[F>>2]=g;i=i+J|0;k[L>>2]=i;if((i|0)==32){k[M>>2]=b+4;k[L>>2]=0}}else{fa=J-g|0;k[L>>2]=fa;i=b+4|0;k[M>>2]=i;b=32-fa|0;g=(k[i>>2]|0)>>>b|h>>>(b-g|0);k[F>>2]=g}k[F>>2]=g|k[m>>2];do if(!n){if(!x){g=21;break a}if(!y){g=23;break a}i=k[L>>2]|0;g=32-i|0;b=k[M>>2]|0;h=k[b>>2]<(g|0)){fa=I-g|0;k[L>>2]=fa;b=b+4|0;k[M>>2]=b;fa=32-fa|0;g=(k[b>>2]|0)>>>fa|h>>>(fa-g|0);k[w>>2]=g;h=w;break}g=h>>>z;k[w>>2]=g;fa=i+I|0;k[L>>2]=fa;if((fa|0)==32){k[M>>2]=b+4;k[L>>2]=0;h=w}else h=w}else{h=e;g=k[e>>2]|0}while(0);k[h>>2]=g|k[o>>2];do if(!p){if(!t){g=21;break a}if(!u){g=23;break a}i=k[L>>2]|0;g=32-i|0;b=k[M>>2]|0;h=k[b>>2]<(g|0)){fa=C-g|0;k[L>>2]=fa;b=b+4|0;k[M>>2]=b;fa=32-fa|0;g=(k[b>>2]|0)>>>fa|h>>>(fa-g|0);k[s>>2]=g;h=s;break}g=h>>>v;k[s>>2]=g;fa=i+C|0;k[L>>2]=fa;if((fa|0)==32){k[M>>2]=b+4;k[L>>2]=0;h=s}else h=s}else{h=l;g=k[l>>2]|0}while(0);k[h>>2]=g|k[q>>2];g=k[D>>2]|0;if((g|0)==(k[E>>2]|0))xg(B,ba);else{k[g>>2]=k[ba>>2];k[g+4>>2]=k[N>>2];k[g+8>>2]=k[O>>2];k[D>>2]=g+12}j=j+1|0}while(j>>>0>>0)}while(0);g=k[$>>2]|0;if(!g){g=58;break}e=k[Y>>2]|0}if((g|0)==15)Ka(13811,13849,231,13919);else if((g|0)==21)Ka(13932,13956,48,13984);else if((g|0)==23)Ka(14013,13956,49,13984);else if((g|0)==32)Ka(13932,13956,48,13984);else if((g|0)==34)Ka(14013,13956,49,13984);else if((g|0)==58){fg(da);r=ea;return}}function vb(a,b,c,d,e,f){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;f=f|0;var g=0,h=0,j=0,l=0,m=0,n=0,o=0,p=0,q=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,B=0,C=0,D=0,E=0,F=0,G=0,H=0,I=0,J=0,K=0,L=0,M=0,N=0,O=0,P=0,Q=0,R=0,S=0,T=0,U=0,V=0,W=0,X=0,Y=0,Z=0,_=0,$=0,aa=0,ba=0,da=0,ea=0;da=r;r=r+80|0;aa=da+64|0;j=da+16|0;ba=da+40|0;V=da+28|0;U=da;k[j>>2]=k[d>>2];k[j+4>>2]=k[d+4>>2];k[j+8>>2]=k[d+8>>2];m=k[c>>2]|0;$=c+4|0;n=k[$>>2]|0;W=c+8|0;l=k[W>>2]|0;k[ba>>2]=0;k[ba+4>>2]=0;k[ba+8>>2]=0;k[ba+12>>2]=0;k[ba+16>>2]=0;k[ba+20>>2]=0;X=ba+8|0;Y=ba+4|0;Z=ba+16|0;_=ba+20|0;rc(ba);g=k[Y>>2]|0;o=k[X>>2]|0;h=(k[_>>2]|0)+(k[Z>>2]|0)|0;if((o|0)==(g|0))g=0;else g=(k[g+(h>>>7<<2)>>2]|0)+((h&127)<<5)|0;k[g>>2]=b;k[g+4>>2]=m;k[g+8>>2]=n;k[g+12>>2]=l;T=g+16|0;k[T>>2]=k[j>>2];k[T+4>>2]=k[j+4>>2];k[T+8>>2]=k[j+8>>2];k[g+28>>2]=e;g=(k[_>>2]|0)+1|0;k[_>>2]=g;if(!g){fg(ba);r=da;return}O=a+552|0;P=a+548|0;N=f+4|0;Q=aa+4|0;R=aa+8|0;S=a+592|0;T=a+588|0;e=o;a:while(1){K=k[Z>>2]|0;J=g+-1|0;h=J+K|0;L=k[Y>>2]|0;I=k[L+(h>>>7<<2)>>2]|0;h=h&127;M=k[I+(h<<5)>>2]|0;j=k[I+(h<<5)+4>>2]|0;b=k[I+(h<<5)+8>>2]|0;l=k[I+(h<<5)+12>>2]|0;H=I+(h<<5)+16|0;k[V>>2]=k[H>>2];k[V+4>>2]=k[H+4>>2];k[V+8>>2]=k[H+8>>2];h=k[I+(h<<5)+28>>2]|0;k[_>>2]=J;L=e-L|0;if((1-g-K+((L|0)==0?0:(L<<5)+-1|0)|0)>>>0>255){cn(k[e+-4>>2]|0);k[X>>2]=(k[X>>2]|0)+-4}k[c>>2]=j;k[$>>2]=b;k[W>>2]=l;k[d>>2]=k[V>>2];k[d+4>>2]=k[V+4>>2];k[d+8>>2]=k[V+8>>2];k[aa>>2]=k[V>>2];k[aa+4>>2]=k[V+4>>2];k[aa+8>>2]=k[V+8>>2];p=Lh(a,M,c,aa,h)|0;l=d+(p<<2)|0;e=k[l>>2]|0;g=k[a>>2]|0;L=g-e|0;do if(!L){if((M|0)>0){m=k[f>>2]|0;b=m+84|0;l=m+68|0;e=m+40|0;m=m+64|0;j=k[N>>2]|0;g=0;n=j;while(1){if(!(i[b>>0]|0))h=k[(k[l>>2]|0)+(n<<2)>>2]|0;else h=n;K=e;L=k[K>>2]|0;K=uk(h|0,((h|0)<0)<<31>>31|0,L|0,k[K+4>>2]|0)|0;Ii((k[k[m>>2]>>2]|0)+K|0,c|0,L|0)|0;g=g+1|0;if((g|0)==(M|0))break;else n=n+1|0}k[N>>2]=M+j}}else{if(!M){g=14;break a}if(M>>>0>=3){k[aa>>2]=k[c>>2];k[Q>>2]=k[$>>2];k[R>>2]=k[W>>2];j=aa+(p<<2)|0;k[j>>2]=(k[j>>2]|0)+(1<>>1)-g|0;h=M-b|0;if((b|0)==(h|0)){n=b;o=b}else{M=k[S>>2]|0;g=k[T>>2]|0;j=(k[g>>2]&1<<31-M|0)!=0;M=M+1|0;k[S>>2]=M;if((M|0)==32){k[T>>2]=g+4;k[S>>2]=0}n=j?b:h;o=j?h:b}k[l>>2]=e+1;if(n|0){k[U>>2]=k[d>>2];k[U+4>>2]=k[d+4>>2];k[U+8>>2]=k[d+8>>2];l=k[c>>2]|0;e=k[$>>2]|0;m=k[W>>2]|0;b=k[X>>2]|0;j=k[Y>>2]|0;M=b-j|0;g=k[Z>>2]|0;h=k[_>>2]|0;if((((M|0)==0?0:(M<<5)+-1|0)|0)==(h+g|0)){rc(ba);g=k[Z>>2]|0;h=k[_>>2]|0;b=k[X>>2]|0;j=k[Y>>2]|0}g=h+g|0;if((b|0)==(j|0))g=0;else g=(k[j+(g>>>7<<2)>>2]|0)+((g&127)<<5)|0;k[g>>2]=n;k[g+4>>2]=l;k[g+8>>2]=e;k[g+12>>2]=m;M=g+16|0;k[M>>2]=k[U>>2];k[M+4>>2]=k[U+4>>2];k[M+8>>2]=k[U+8>>2];k[g+28>>2]=p;k[_>>2]=(k[_>>2]|0)+1}if(o|0){k[U>>2]=k[d>>2];k[U+4>>2]=k[d+4>>2];k[U+8>>2]=k[d+8>>2];l=k[aa>>2]|0;e=k[Q>>2]|0;m=k[R>>2]|0;b=k[X>>2]|0;j=k[Y>>2]|0;M=b-j|0;g=k[Z>>2]|0;h=k[_>>2]|0;if((((M|0)==0?0:(M<<5)+-1|0)|0)==(h+g|0)){rc(ba);g=k[Z>>2]|0;h=k[_>>2]|0;b=k[X>>2]|0;j=k[Y>>2]|0}g=h+g|0;if((b|0)==(j|0))g=0;else g=(k[j+(g>>>7<<2)>>2]|0)+((g&127)<<5)|0;k[g>>2]=o;k[g+4>>2]=l;k[g+8>>2]=e;k[g+12>>2]=m;M=g+16|0;k[M>>2]=k[U>>2];k[M+4>>2]=k[U+4>>2];k[M+8>>2]=k[U+8>>2];k[g+28>>2]=p;k[_>>2]=(k[_>>2]|0)+1}break}x=(p|0)==2?0:p+1|0;t=(x|0)==2?0:x+1|0;K=g-(k[d+(x<<2)>>2]|0)|0;C=g-(k[d+(t<<2)>>2]|0)|0;G=k[f>>2]|0;D=G+84|0;E=G+68|0;F=G+40|0;G=G+64|0;H=aa+(p<<2)|0;I=(L|0)<33;J=(L|0)>0;n=c+(p<<2)|0;o=(K|0)==0;e=aa+(x<<2)|0;p=c+(x<<2)|0;q=(C|0)==0;m=aa+(t<<2)|0;s=c+(t<<2)|0;t=aa+(t<<2)|0;u=(C|0)<33;v=(C|0)>0;w=32-C|0;x=aa+(x<<2)|0;y=(K|0)<33;z=(K|0)>0;A=32-K|0;B=32-L|0;l=0;do{k[aa>>2]=0;k[aa+4>>2]=0;k[aa+8>>2]=0;if(!I){g=19;break a}if(!J){g=21;break a}j=k[O>>2]|0;g=32-j|0;b=k[P>>2]|0;h=k[b>>2]<>>B;k[H>>2]=g;j=j+L|0;k[O>>2]=j;if((j|0)==32){k[P>>2]=b+4;k[O>>2]=0}}else{ea=L-g|0;k[O>>2]=ea;j=b+4|0;k[P>>2]=j;b=32-ea|0;g=(k[j>>2]|0)>>>b|h>>>(b-g|0);k[H>>2]=g}k[H>>2]=g|k[n>>2];do if(!o){if(!y){g=19;break a}if(!z){g=21;break a}j=k[O>>2]|0;g=32-j|0;b=k[P>>2]|0;h=k[b>>2]<(g|0)){ea=K-g|0;k[O>>2]=ea;b=b+4|0;k[P>>2]=b;ea=32-ea|0;g=(k[b>>2]|0)>>>ea|h>>>(ea-g|0);k[x>>2]=g;h=x;break}g=h>>>A;k[x>>2]=g;ea=j+K|0;k[O>>2]=ea;if((ea|0)==32){k[P>>2]=b+4;k[O>>2]=0;h=x}else h=x}else{h=e;g=k[e>>2]|0}while(0);k[h>>2]=g|k[p>>2];do if(!q){if(!u){g=19;break a}if(!v){g=21;break a}j=k[O>>2]|0;g=32-j|0;b=k[P>>2]|0;h=k[b>>2]<(g|0)){ea=C-g|0;k[O>>2]=ea;b=b+4|0;k[P>>2]=b;ea=32-ea|0;g=(k[b>>2]|0)>>>ea|h>>>(ea-g|0);k[t>>2]=g;h=t;break}g=h>>>w;k[t>>2]=g;ea=j+C|0;k[O>>2]=ea;if((ea|0)==32){k[P>>2]=b+4;k[O>>2]=0;h=t}else h=t}else{h=m;g=k[m>>2]|0}while(0);k[h>>2]=g|k[s>>2];g=k[N>>2]|0;k[N>>2]=g+1;if(!(i[D>>0]|0))g=k[(k[E>>2]|0)+(g<<2)>>2]|0;b=F;ea=k[b>>2]|0;b=uk(g|0,((g|0)<0)<<31>>31|0,ea|0,k[b+4>>2]|0)|0;Ii((k[k[G>>2]>>2]|0)+b|0,aa|0,ea|0)|0;l=l+1|0}while(l>>>0>>0)}while(0);g=k[_>>2]|0;if(!g){g=51;break}e=k[X>>2]|0}if((g|0)==14)Ka(13811,13849,231,13919);else if((g|0)==19)Ka(13932,13956,48,13984);else if((g|0)==21)Ka(14013,13956,49,13984);else if((g|0)==51){fg(ba);r=da;return}}function wb(a,b,c,d,e,f){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;f=f|0;var g=0,h=0,j=0,l=0,m=0,n=0,o=0,p=0,q=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,B=0,C=0,D=0,E=0,F=0,G=0,H=0,I=0,J=0,K=0,L=0,M=0,N=0,O=0,P=0,Q=0,R=0,S=0,T=0,U=0,V=0,W=0,X=0,Y=0,Z=0,_=0,$=0,aa=0,ba=0,da=0,ea=0;da=r;r=r+80|0;aa=da+64|0;j=da+16|0;ba=da+40|0;V=da+28|0;U=da;k[j>>2]=k[d>>2];k[j+4>>2]=k[d+4>>2];k[j+8>>2]=k[d+8>>2];m=k[c>>2]|0;$=c+4|0;n=k[$>>2]|0;W=c+8|0;l=k[W>>2]|0;k[ba>>2]=0;k[ba+4>>2]=0;k[ba+8>>2]=0;k[ba+12>>2]=0;k[ba+16>>2]=0;k[ba+20>>2]=0;X=ba+8|0;Y=ba+4|0;Z=ba+16|0;_=ba+20|0;rc(ba);g=k[Y>>2]|0;o=k[X>>2]|0;h=(k[_>>2]|0)+(k[Z>>2]|0)|0;if((o|0)==(g|0))g=0;else g=(k[g+(h>>>7<<2)>>2]|0)+((h&127)<<5)|0;k[g>>2]=b;k[g+4>>2]=m;k[g+8>>2]=n;k[g+12>>2]=l;T=g+16|0;k[T>>2]=k[j>>2];k[T+4>>2]=k[j+4>>2];k[T+8>>2]=k[j+8>>2];k[g+28>>2]=e;g=(k[_>>2]|0)+1|0;k[_>>2]=g;if(!g){fg(ba);r=da;return}O=a+552|0;P=a+548|0;N=f+4|0;Q=aa+4|0;R=aa+8|0;S=a+592|0;T=a+588|0;e=o;a:while(1){K=k[Z>>2]|0;J=g+-1|0;h=J+K|0;L=k[Y>>2]|0;I=k[L+(h>>>7<<2)>>2]|0;h=h&127;M=k[I+(h<<5)>>2]|0;j=k[I+(h<<5)+4>>2]|0;b=k[I+(h<<5)+8>>2]|0;l=k[I+(h<<5)+12>>2]|0;H=I+(h<<5)+16|0;k[V>>2]=k[H>>2];k[V+4>>2]=k[H+4>>2];k[V+8>>2]=k[H+8>>2];h=k[I+(h<<5)+28>>2]|0;k[_>>2]=J;L=e-L|0;if((1-g-K+((L|0)==0?0:(L<<5)+-1|0)|0)>>>0>255){cn(k[e+-4>>2]|0);k[X>>2]=(k[X>>2]|0)+-4}k[c>>2]=j;k[$>>2]=b;k[W>>2]=l;k[d>>2]=k[V>>2];k[d+4>>2]=k[V+4>>2];k[d+8>>2]=k[V+8>>2];k[aa>>2]=k[V>>2];k[aa+4>>2]=k[V+4>>2];k[aa+8>>2]=k[V+8>>2];p=Jk(a,M,c,aa,h)|0;l=d+(p<<2)|0;e=k[l>>2]|0;g=k[a>>2]|0;L=g-e|0;do if(!L){if((M|0)>0){m=k[f>>2]|0;b=m+84|0;l=m+68|0;e=m+40|0;m=m+64|0;j=k[N>>2]|0;g=0;n=j;while(1){if(!(i[b>>0]|0))h=k[(k[l>>2]|0)+(n<<2)>>2]|0;else h=n;K=e;L=k[K>>2]|0;K=uk(h|0,((h|0)<0)<<31>>31|0,L|0,k[K+4>>2]|0)|0;Ii((k[k[m>>2]>>2]|0)+K|0,c|0,L|0)|0;g=g+1|0;if((g|0)==(M|0))break;else n=n+1|0}k[N>>2]=M+j}}else{if(!M){g=14;break a}if(M>>>0>=3){k[aa>>2]=k[c>>2];k[Q>>2]=k[$>>2];k[R>>2]=k[W>>2];j=aa+(p<<2)|0;k[j>>2]=(k[j>>2]|0)+(1<>>1)-g|0;h=M-b|0;if((b|0)==(h|0)){n=b;o=b}else{M=k[S>>2]|0;g=k[T>>2]|0;j=(k[g>>2]&1<<31-M|0)!=0;M=M+1|0;k[S>>2]=M;if((M|0)==32){k[T>>2]=g+4;k[S>>2]=0}n=j?b:h;o=j?h:b}k[l>>2]=e+1;if(n|0){k[U>>2]=k[d>>2];k[U+4>>2]=k[d+4>>2];k[U+8>>2]=k[d+8>>2];l=k[c>>2]|0;e=k[$>>2]|0;m=k[W>>2]|0;b=k[X>>2]|0;j=k[Y>>2]|0;M=b-j|0;g=k[Z>>2]|0;h=k[_>>2]|0;if((((M|0)==0?0:(M<<5)+-1|0)|0)==(h+g|0)){rc(ba);g=k[Z>>2]|0;h=k[_>>2]|0;b=k[X>>2]|0;j=k[Y>>2]|0}g=h+g|0;if((b|0)==(j|0))g=0;else g=(k[j+(g>>>7<<2)>>2]|0)+((g&127)<<5)|0;k[g>>2]=n;k[g+4>>2]=l;k[g+8>>2]=e;k[g+12>>2]=m;M=g+16|0;k[M>>2]=k[U>>2];k[M+4>>2]=k[U+4>>2];k[M+8>>2]=k[U+8>>2];k[g+28>>2]=p;k[_>>2]=(k[_>>2]|0)+1}if(o|0){k[U>>2]=k[d>>2];k[U+4>>2]=k[d+4>>2];k[U+8>>2]=k[d+8>>2];l=k[aa>>2]|0;e=k[Q>>2]|0;m=k[R>>2]|0;b=k[X>>2]|0;j=k[Y>>2]|0;M=b-j|0;g=k[Z>>2]|0;h=k[_>>2]|0;if((((M|0)==0?0:(M<<5)+-1|0)|0)==(h+g|0)){rc(ba);g=k[Z>>2]|0;h=k[_>>2]|0;b=k[X>>2]|0;j=k[Y>>2]|0}g=h+g|0;if((b|0)==(j|0))g=0;else g=(k[j+(g>>>7<<2)>>2]|0)+((g&127)<<5)|0;k[g>>2]=o;k[g+4>>2]=l;k[g+8>>2]=e;k[g+12>>2]=m;M=g+16|0;k[M>>2]=k[U>>2];k[M+4>>2]=k[U+4>>2];k[M+8>>2]=k[U+8>>2];k[g+28>>2]=p;k[_>>2]=(k[_>>2]|0)+1}break}x=(p|0)==2?0:p+1|0;t=(x|0)==2?0:x+1|0;K=g-(k[d+(x<<2)>>2]|0)|0;C=g-(k[d+(t<<2)>>2]|0)|0;G=k[f>>2]|0;D=G+84|0;E=G+68|0;F=G+40|0;G=G+64|0;H=aa+(p<<2)|0;I=(L|0)<33;J=(L|0)>0;n=c+(p<<2)|0;o=(K|0)==0;e=aa+(x<<2)|0;p=c+(x<<2)|0;q=(C|0)==0;m=aa+(t<<2)|0;s=c+(t<<2)|0;t=aa+(t<<2)|0;u=(C|0)<33;v=(C|0)>0;w=32-C|0;x=aa+(x<<2)|0;y=(K|0)<33;z=(K|0)>0;A=32-K|0;B=32-L|0;l=0;do{k[aa>>2]=0;k[aa+4>>2]=0;k[aa+8>>2]=0;if(!I){g=19;break a}if(!J){g=21;break a}j=k[O>>2]|0;g=32-j|0;b=k[P>>2]|0;h=k[b>>2]<>>B;k[H>>2]=g;j=j+L|0;k[O>>2]=j;if((j|0)==32){k[P>>2]=b+4;k[O>>2]=0}}else{ea=L-g|0;k[O>>2]=ea;j=b+4|0;k[P>>2]=j;b=32-ea|0;g=(k[j>>2]|0)>>>b|h>>>(b-g|0);k[H>>2]=g}k[H>>2]=g|k[n>>2];do if(!o){if(!y){g=19;break a}if(!z){g=21;break a}j=k[O>>2]|0;g=32-j|0;b=k[P>>2]|0;h=k[b>>2]<(g|0)){ea=K-g|0;k[O>>2]=ea;b=b+4|0;k[P>>2]=b;ea=32-ea|0;g=(k[b>>2]|0)>>>ea|h>>>(ea-g|0);k[x>>2]=g;h=x;break}g=h>>>A;k[x>>2]=g;ea=j+K|0;k[O>>2]=ea;if((ea|0)==32){k[P>>2]=b+4;k[O>>2]=0;h=x}else h=x}else{h=e;g=k[e>>2]|0}while(0);k[h>>2]=g|k[p>>2];do if(!q){if(!u){g=19;break a}if(!v){g=21;break a}j=k[O>>2]|0;g=32-j|0;b=k[P>>2]|0;h=k[b>>2]<(g|0)){ea=C-g|0;k[O>>2]=ea;b=b+4|0;k[P>>2]=b;ea=32-ea|0;g=(k[b>>2]|0)>>>ea|h>>>(ea-g|0);k[t>>2]=g;h=t;break}g=h>>>w;k[t>>2]=g;ea=j+C|0;k[O>>2]=ea;if((ea|0)==32){k[P>>2]=b+4;k[O>>2]=0;h=t}else h=t}else{h=m;g=k[m>>2]|0}while(0);k[h>>2]=g|k[s>>2];g=k[N>>2]|0;k[N>>2]=g+1;if(!(i[D>>0]|0))g=k[(k[E>>2]|0)+(g<<2)>>2]|0;b=F;ea=k[b>>2]|0;b=uk(g|0,((g|0)<0)<<31>>31|0,ea|0,k[b+4>>2]|0)|0;Ii((k[k[G>>2]>>2]|0)+b|0,aa|0,ea|0)|0;l=l+1|0}while(l>>>0>>0)}while(0);g=k[_>>2]|0;if(!g){g=51;break}e=k[X>>2]|0}if((g|0)==14)Ka(13811,13849,231,13919);else if((g|0)==19)Ka(13932,13956,48,13984);else if((g|0)==21)Ka(14013,13956,49,13984);else if((g|0)==51){fg(ba);r=da;return}}function xb(a,b){a=a|0;b=b|0;var c=0,d=0,e=0,f=0,g=0,h=0,j=0,m=0,n=0,o=0,p=0,q=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,B=0,C=0,D=0,E=0,F=0,G=0,H=0,I=0,J=0,K=0,L=0;J=r;r=r+976|0;I=J+960|0;B=J+8|0;q=J+952|0;C=J+944|0;D=J+936|0;E=J+928|0;F=J+920|0;G=J+912|0;H=J+904|0;v=J+896|0;x=J+888|0;y=J+880|0;z=J+872|0;A=J;d=k[k[a+4>>2]>>2]|0;a=k[(k[a+16>>2]|0)+4>>2]|0;if((d|0)<=-1)Ka(13387,13403,62,13431);c=k[a+4>>2]|0;if(((k[a+8>>2]|0)-c>>2|0)<=(d|0))Ka(13441,13403,63,13431);a=k[c+(d<<2)>>2]|0;i[a+84>>0]=1;c=k[a+68>>2]|0;d=a+72|0;e=k[d>>2]|0;if((e|0)!=(c|0))k[d>>2]=e+(~((e+-4-c|0)>>>2)<<2);d=b+8|0;c=k[d>>2]|0;d=k[d+4>>2]|0;e=b+16|0;g=e;f=k[g>>2]|0;g=k[g+4>>2]|0;if(!((d|0)>(g|0)|(d|0)==(g|0)&c>>>0>f>>>0)){I=0;r=J;return I|0}h=k[b>>2]|0;K=i[h+f>>0]|0;j=sl(f|0,g|0,1,0)|0;m=M;L=e;k[L>>2]=j;k[L+4>>2]=m;switch(K<<24>>24){case 0:{if(((d|0)>(m|0)|(d|0)==(m|0)&c>>>0>j>>>0?(s=sl(f|0,g|0,2,0)|0,t=e,k[t>>2]=s,k[t+4>>2]=M,t=sl(f|0,g|0,6,0)|0,u=M,!((d|0)<(u|0)|(d|0)==(u|0)&c>>>0>>0)):0)?(L=h+s|0,L=l[L>>0]|l[L+1>>0]<<8|l[L+2>>0]<<16|l[L+3>>0]<<24,K=e,k[K>>2]=t,k[K+4>>2]=u,Jh(a,L)|0,pl(B),k[q>>2]=a,k[q+4>>2]=0,k[I>>2]=k[q>>2],k[I+4>>2]=k[q+4>>2],ye(B,b,I)|0):0){L=1;r=J;return L|0}L=0;r=J;return L|0}case 1:{a:do if((d|0)>(m|0)|(d|0)==(m|0)&c>>>0>j>>>0?(w=i[h+j>>0]|0,n=sl(f|0,g|0,2,0)|0,o=e,k[o>>2]=n,k[o+4>>2]=M,o=sl(f|0,g|0,6,0)|0,p=M,!((d|0)<(p|0)|(d|0)==(p|0)&c>>>0>>0)):0){L=h+n|0;L=l[L>>0]|l[L+1>>0]<<8|l[L+2>>0]<<16|l[L+3>>0]<<24;K=e;k[K>>2]=o;k[K+4>>2]=p;Jh(a,L)|0;do switch(w<<24>>24){case 0:{jk(B);k[C>>2]=a;k[C+4>>2]=0;k[I>>2]=k[C>>2];k[I+4>>2]=k[C+4>>2];L=fe(B,b,I)|0;ej(B+68|0);ej(B+48|0);ej(B+28|0);ej(B+8|0);if(L)a=1;else break a;r=J;return a|0}case 1:{jk(B);k[D>>2]=a;k[D+4>>2]=0;k[I>>2]=k[D>>2];k[I+4>>2]=k[D+4>>2];L=fe(B,b,I)|0;ej(B+68|0);ej(B+48|0);ej(B+28|0);ej(B+8|0);if(L)a=1;else break a;r=J;return a|0}case 2:{kk(B);k[E>>2]=a;k[E+4>>2]=0;k[I>>2]=k[E>>2];k[I+4>>2]=k[E+4>>2];L=ge(B,b,I)|0;ej(B+64|0);ej(B+44|0);ej(B+24|0);fn(B+8|0);if(L)a=1;else break a;r=J;return a|0}case 3:{kk(B);k[F>>2]=a;k[F+4>>2]=0;k[I>>2]=k[F>>2];k[I+4>>2]=k[F+4>>2];L=ge(B,b,I)|0;ej(B+64|0);ej(B+44|0);ej(B+24|0);fn(B+8|0);if(L)a=1;else break a;r=J;return a|0}case 4:{Xj(B);k[G>>2]=a;k[G+4>>2]=0;k[I>>2]=k[G>>2];k[I+4>>2]=k[G+4>>2];L=Td(B,b,I)|0;ej(B+576|0);ej(B+556|0);ej(B+536|0);fn(B+520|0);Eh(B+8|0);if(L)a=1;else break a;r=J;return a|0}case 5:{Xj(B);k[H>>2]=a;k[H+4>>2]=0;k[I>>2]=k[H>>2];k[I+4>>2]=k[H+4>>2];L=Td(B,b,I)|0;ej(B+576|0);ej(B+556|0);ej(B+536|0);fn(B+520|0);Eh(B+8|0);if(L)a=1;else break a;r=J;return a|0}case 6:{Xj(B);k[v>>2]=a;k[v+4>>2]=0;k[I>>2]=k[v>>2];k[I+4>>2]=k[v+4>>2];L=Sd(B,b,I)|0;ej(B+576|0);ej(B+556|0);ej(B+536|0);fn(B+520|0);Eh(B+8|0);if(L)a=1;else break a;r=J;return a|0}case 7:{Xj(B);k[x>>2]=a;k[x+4>>2]=0;k[I>>2]=k[x>>2];k[I+4>>2]=k[x+4>>2];L=Sd(B,b,I)|0;ej(B+576|0);ej(B+556|0);ej(B+536|0);fn(B+520|0);Eh(B+8|0);if(L)a=1;else break a;r=J;return a|0}case 8:{Qj(B);k[y>>2]=a;k[y+4>>2]=0;k[I>>2]=k[y>>2];k[I+4>>2]=k[y+4>>2];L=Qd(B,b,I)|0;ej(B+840|0);ej(B+820|0);ej(B+800|0);Fm(B+776|0);bg(B+8|0);if(L)a=1;else break a;r=J;return a|0}case 9:{Qj(B);k[z>>2]=a;k[z+4>>2]=0;k[I>>2]=k[z>>2];k[I+4>>2]=k[z+4>>2];L=Qd(B,b,I)|0;ej(B+840|0);ej(B+820|0);ej(B+800|0);Fm(B+776|0);bg(B+8|0);if(L)a=1;else break a;r=J;return a|0}case 10:{Qj(B);k[A>>2]=a;k[A+4>>2]=0;k[I>>2]=k[A>>2];k[I+4>>2]=k[A+4>>2];L=Pd(B,b,I)|0;ej(B+840|0);ej(B+820|0);ej(B+800|0);Fm(B+776|0);bg(B+8|0);if(L)a=1;else break a;r=J;return a|0}default:break a}while(0)}while(0);L=0;r=J;return L|0}default:{L=0;r=J;return L|0}}return 0}function yb(a,b,c,d,e,f){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;f=f|0;var g=0,h=0,j=0,l=0,m=0,n=0,o=0,p=0,q=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,B=0,C=0,D=0,E=0,F=0,G=0,H=0,I=0,J=0,K=0,L=0,M=0,N=0,O=0,P=0,Q=0,R=0,S=0,T=0,U=0,V=0,W=0,X=0,Y=0,Z=0,_=0,$=0,aa=0,ba=0,da=0,ea=0;da=r;r=r+80|0;aa=da+64|0;j=da+16|0;ba=da+40|0;V=da+28|0;U=da;k[j>>2]=k[d>>2];k[j+4>>2]=k[d+4>>2];k[j+8>>2]=k[d+8>>2];m=k[c>>2]|0;$=c+4|0;n=k[$>>2]|0;W=c+8|0;l=k[W>>2]|0;k[ba>>2]=0;k[ba+4>>2]=0;k[ba+8>>2]=0;k[ba+12>>2]=0;k[ba+16>>2]=0;k[ba+20>>2]=0;X=ba+8|0;Y=ba+4|0;Z=ba+16|0;_=ba+20|0;rc(ba);g=k[Y>>2]|0;h=(k[_>>2]|0)+(k[Z>>2]|0)|0;if((k[X>>2]|0)==(g|0))g=0;else g=(k[g+(h>>>7<<2)>>2]|0)+((h&127)<<5)|0;k[g>>2]=b;k[g+4>>2]=m;k[g+8>>2]=n;k[g+12>>2]=l;T=g+16|0;k[T>>2]=k[j>>2];k[T+4>>2]=k[j+4>>2];k[T+8>>2]=k[j+8>>2];k[g+28>>2]=e;g=(k[_>>2]|0)+1|0;k[_>>2]=g;if(!g){fg(ba);r=da;return}O=a+816|0;P=a+812|0;N=f+4|0;Q=aa+4|0;R=aa+8|0;S=a+856|0;T=a+852|0;a:while(1){j=k[Y>>2]|0;L=k[Z>>2]|0;K=k[j+(L>>>7<<2)>>2]|0;h=L&127;M=k[K+(h<<5)>>2]|0;b=k[K+(h<<5)+4>>2]|0;l=k[K+(h<<5)+8>>2]|0;e=k[K+(h<<5)+12>>2]|0;J=K+(h<<5)+16|0;k[V>>2]=k[J>>2];k[V+4>>2]=k[J+4>>2];k[V+8>>2]=k[J+8>>2];h=k[K+(h<<5)+28>>2]|0;k[_>>2]=g+-1;L=L+1|0;k[Z>>2]=L;if(L>>>0>255){cn(k[j>>2]|0);k[Y>>2]=(k[Y>>2]|0)+4;k[Z>>2]=(k[Z>>2]|0)+-128}k[c>>2]=b;k[$>>2]=l;k[W>>2]=e;k[d>>2]=k[V>>2];k[d+4>>2]=k[V+4>>2];k[d+8>>2]=k[V+8>>2];k[aa>>2]=k[V>>2];k[aa+4>>2]=k[V+4>>2];k[aa+8>>2]=k[V+8>>2];p=Kh(a,M,c,aa,h)|0;l=d+(p<<2)|0;e=k[l>>2]|0;g=k[a>>2]|0;L=g-e|0;do if(!L){if((M|0)>0){m=k[f>>2]|0;b=m+84|0;l=m+68|0;e=m+40|0;m=m+64|0;j=k[N>>2]|0;g=0;n=j;while(1){if(!(i[b>>0]|0))h=k[(k[l>>2]|0)+(n<<2)>>2]|0;else h=n;K=e;L=k[K>>2]|0;K=uk(h|0,((h|0)<0)<<31>>31|0,L|0,k[K+4>>2]|0)|0;Ii((k[k[m>>2]>>2]|0)+K|0,c|0,L|0)|0;g=g+1|0;if((g|0)==(M|0))break;else n=n+1|0}k[N>>2]=M+j}}else{if(!M){g=14;break a}if(M>>>0>=3){k[aa>>2]=k[c>>2];k[Q>>2]=k[$>>2];k[R>>2]=k[W>>2];j=aa+(p<<2)|0;k[j>>2]=(k[j>>2]|0)+(1<>>1)-g|0;h=M-b|0;if((b|0)==(h|0)){n=b;o=b}else{M=k[S>>2]|0;g=k[T>>2]|0;j=(k[g>>2]&1<<31-M|0)!=0;M=M+1|0;k[S>>2]=M;if((M|0)==32){k[T>>2]=g+4;k[S>>2]=0}n=j?b:h;o=j?h:b}k[l>>2]=e+1;if(n|0){k[U>>2]=k[d>>2];k[U+4>>2]=k[d+4>>2];k[U+8>>2]=k[d+8>>2];l=k[c>>2]|0;e=k[$>>2]|0;m=k[W>>2]|0;b=k[X>>2]|0;j=k[Y>>2]|0;M=b-j|0;g=k[Z>>2]|0;h=k[_>>2]|0;if((((M|0)==0?0:(M<<5)+-1|0)|0)==(h+g|0)){rc(ba);g=k[Z>>2]|0;h=k[_>>2]|0;b=k[X>>2]|0;j=k[Y>>2]|0}g=h+g|0;if((b|0)==(j|0))g=0;else g=(k[j+(g>>>7<<2)>>2]|0)+((g&127)<<5)|0;k[g>>2]=n;k[g+4>>2]=l;k[g+8>>2]=e;k[g+12>>2]=m;M=g+16|0;k[M>>2]=k[U>>2];k[M+4>>2]=k[U+4>>2];k[M+8>>2]=k[U+8>>2];k[g+28>>2]=p;k[_>>2]=(k[_>>2]|0)+1}if(o|0){k[U>>2]=k[d>>2];k[U+4>>2]=k[d+4>>2];k[U+8>>2]=k[d+8>>2];l=k[aa>>2]|0;e=k[Q>>2]|0;m=k[R>>2]|0;b=k[X>>2]|0;j=k[Y>>2]|0;M=b-j|0;g=k[Z>>2]|0;h=k[_>>2]|0;if((((M|0)==0?0:(M<<5)+-1|0)|0)==(h+g|0)){rc(ba);g=k[Z>>2]|0;h=k[_>>2]|0;b=k[X>>2]|0;j=k[Y>>2]|0}g=h+g|0;if((b|0)==(j|0))g=0;else g=(k[j+(g>>>7<<2)>>2]|0)+((g&127)<<5)|0;k[g>>2]=o;k[g+4>>2]=l;k[g+8>>2]=e;k[g+12>>2]=m;M=g+16|0;k[M>>2]=k[U>>2];k[M+4>>2]=k[U+4>>2];k[M+8>>2]=k[U+8>>2];k[g+28>>2]=p;k[_>>2]=(k[_>>2]|0)+1}break}x=(p|0)==2?0:p+1|0;t=(x|0)==2?0:x+1|0;K=g-(k[d+(x<<2)>>2]|0)|0;C=g-(k[d+(t<<2)>>2]|0)|0;G=k[f>>2]|0;D=G+84|0;E=G+68|0;F=G+40|0;G=G+64|0;H=aa+(p<<2)|0;I=(L|0)<33;J=(L|0)>0;n=c+(p<<2)|0;o=(K|0)==0;e=aa+(x<<2)|0;p=c+(x<<2)|0;q=(C|0)==0;m=aa+(t<<2)|0;s=c+(t<<2)|0;t=aa+(t<<2)|0;u=(C|0)<33;v=(C|0)>0;w=32-C|0;x=aa+(x<<2)|0;y=(K|0)<33;z=(K|0)>0;A=32-K|0;B=32-L|0;l=0;do{k[aa>>2]=0;k[aa+4>>2]=0;k[aa+8>>2]=0;if(!I){g=19;break a}if(!J){g=21;break a}j=k[O>>2]|0;g=32-j|0;b=k[P>>2]|0;h=k[b>>2]<>>B;k[H>>2]=g;j=j+L|0;k[O>>2]=j;if((j|0)==32){k[P>>2]=b+4;k[O>>2]=0}}else{ea=L-g|0;k[O>>2]=ea;j=b+4|0;k[P>>2]=j;b=32-ea|0;g=(k[j>>2]|0)>>>b|h>>>(b-g|0);k[H>>2]=g}k[H>>2]=g|k[n>>2];do if(!o){if(!y){g=19;break a}if(!z){g=21;break a}j=k[O>>2]|0;g=32-j|0;b=k[P>>2]|0;h=k[b>>2]<(g|0)){ea=K-g|0;k[O>>2]=ea;b=b+4|0;k[P>>2]=b;ea=32-ea|0;g=(k[b>>2]|0)>>>ea|h>>>(ea-g|0);k[x>>2]=g;h=x;break}g=h>>>A;k[x>>2]=g;ea=j+K|0;k[O>>2]=ea;if((ea|0)==32){k[P>>2]=b+4;k[O>>2]=0;h=x}else h=x}else{h=e;g=k[e>>2]|0}while(0);k[h>>2]=g|k[p>>2];do if(!q){if(!u){g=19;break a}if(!v){g=21;break a}j=k[O>>2]|0;g=32-j|0;b=k[P>>2]|0;h=k[b>>2]<(g|0)){ea=C-g|0;k[O>>2]=ea;b=b+4|0;k[P>>2]=b;ea=32-ea|0;g=(k[b>>2]|0)>>>ea|h>>>(ea-g|0);k[t>>2]=g;h=t;break}g=h>>>w;k[t>>2]=g;ea=j+C|0;k[O>>2]=ea;if((ea|0)==32){k[P>>2]=b+4;k[O>>2]=0;h=t}else h=t}else{h=m;g=k[m>>2]|0}while(0);k[h>>2]=g|k[s>>2];g=k[N>>2]|0;k[N>>2]=g+1;if(!(i[D>>0]|0))g=k[(k[E>>2]|0)+(g<<2)>>2]|0;b=F;ea=k[b>>2]|0;b=uk(g|0,((g|0)<0)<<31>>31|0,ea|0,k[b+4>>2]|0)|0;Ii((k[k[G>>2]>>2]|0)+b|0,aa|0,ea|0)|0;l=l+1|0}while(l>>>0>>0)}while(0);g=k[_>>2]|0;if(!g){g=50;break}}if((g|0)==14)Ka(13811,13849,231,13919);else if((g|0)==19)Ka(13932,13956,48,13984);else if((g|0)==21)Ka(14013,13956,49,13984);else if((g|0)==50){fg(ba);r=da;return}}function zb(a,b,c,d,e,f){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;f=f|0;var g=0,h=0,j=0,l=0,m=0,n=0,o=0,p=0,q=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,B=0,C=0,D=0,E=0,F=0,G=0,H=0,I=0,J=0,K=0,L=0,M=0,N=0,O=0,P=0,Q=0,R=0,S=0,T=0,U=0,V=0,W=0,X=0,Y=0,Z=0,_=0,$=0,aa=0,ba=0,da=0,ea=0,fa=0,ga=0;fa=r;r=r+96|0;da=fa+72|0;j=fa+16|0;ea=fa+48|0;W=fa+32|0;aa=fa+28|0;V=fa;k[j>>2]=k[d>>2];k[j+4>>2]=k[d+4>>2];k[j+8>>2]=k[d+8>>2];n=k[c>>2]|0;ba=c+4|0;l=k[ba>>2]|0;X=c+8|0;m=k[X>>2]|0;k[ea>>2]=0;k[ea+4>>2]=0;k[ea+8>>2]=0;k[ea+12>>2]=0;k[ea+16>>2]=0;k[ea+20>>2]=0;Y=ea+8|0;Z=ea+4|0;_=ea+16|0;$=ea+20|0;rc(ea);g=k[Z>>2]|0;o=k[Y>>2]|0;h=(k[$>>2]|0)+(k[_>>2]|0)|0;if((o|0)==(g|0))g=0;else g=(k[g+(h>>>7<<2)>>2]|0)+((h&127)<<5)|0;k[g>>2]=b;k[g+4>>2]=n;k[g+8>>2]=l;k[g+12>>2]=m;U=g+16|0;k[U>>2]=k[j>>2];k[U+4>>2]=k[j+4>>2];k[U+8>>2]=k[j+8>>2];k[g+28>>2]=e;g=(k[$>>2]|0)+1|0;k[$>>2]=g;if(!g){fg(ea);r=fa;return}O=a+40|0;P=a+36|0;N=f+4|0;Q=da+4|0;R=da+8|0;S=a+8|0;T=a+80|0;U=a+76|0;m=o;a:while(1){K=k[_>>2]|0;J=g+-1|0;h=J+K|0;L=k[Z>>2]|0;I=k[L+(h>>>7<<2)>>2]|0;h=h&127;M=k[I+(h<<5)>>2]|0;j=k[I+(h<<5)+4>>2]|0;b=k[I+(h<<5)+8>>2]|0;l=k[I+(h<<5)+12>>2]|0;H=I+(h<<5)+16|0;k[W>>2]=k[H>>2];k[W+4>>2]=k[H+4>>2];k[W+8>>2]=k[H+8>>2];h=k[I+(h<<5)+28>>2]|0;k[$>>2]=J;L=m-L|0;if((1-g-K+((L|0)==0?0:(L<<5)+-1|0)|0)>>>0>255){cn(k[m+-4>>2]|0);k[Y>>2]=(k[Y>>2]|0)+-4}k[c>>2]=j;k[ba>>2]=b;k[X>>2]=l;k[d>>2]=k[W>>2];k[d+4>>2]=k[W+4>>2];k[d+8>>2]=k[W+8>>2];k[da>>2]=k[W>>2];k[da+4>>2]=k[W+4>>2];k[da+8>>2]=k[W+8>>2];p=Jk(a,M,c,da,h)|0;l=d+(p<<2)|0;m=k[l>>2]|0;g=k[a>>2]|0;L=g-m|0;do if(!L){if((M|0)>0){e=k[f>>2]|0;b=e+84|0;l=e+68|0;m=e+40|0;e=e+64|0;j=k[N>>2]|0;g=0;n=j;while(1){if(!(i[b>>0]|0))h=k[(k[l>>2]|0)+(n<<2)>>2]|0;else h=n;K=m;L=k[K>>2]|0;K=uk(h|0,((h|0)<0)<<31>>31|0,L|0,k[K+4>>2]|0)|0;Ii((k[k[e>>2]>>2]|0)+K|0,c|0,L|0)|0;g=g+1|0;if((g|0)==(M|0))break;else n=n+1|0}k[N>>2]=M+j}}else{if(!M){g=14;break a}if(M>>>0>=3){k[da>>2]=k[c>>2];k[Q>>2]=k[ba>>2];k[R>>2]=k[X>>2];b=da+(p<<2)|0;k[b>>2]=(k[b>>2]|0)+(1<>2]=0;Qh(S,b,aa);b=(M>>>1)-(k[aa>>2]|0)|0;h=M-b|0;if((b|0)==(h|0)){n=b;o=b}else{M=k[T>>2]|0;g=k[U>>2]|0;j=(k[g>>2]&1<<31-M|0)!=0;M=M+1|0;k[T>>2]=M;if((M|0)==32){k[U>>2]=g+4;k[T>>2]=0}n=j?b:h;o=j?h:b}k[l>>2]=m+1;if(n|0){k[V>>2]=k[d>>2];k[V+4>>2]=k[d+4>>2];k[V+8>>2]=k[d+8>>2];l=k[c>>2]|0;m=k[ba>>2]|0;e=k[X>>2]|0;b=k[Y>>2]|0;j=k[Z>>2]|0;M=b-j|0;g=k[_>>2]|0;h=k[$>>2]|0;if((((M|0)==0?0:(M<<5)+-1|0)|0)==(h+g|0)){rc(ea);g=k[_>>2]|0;h=k[$>>2]|0;b=k[Y>>2]|0;j=k[Z>>2]|0}g=h+g|0;if((b|0)==(j|0))g=0;else g=(k[j+(g>>>7<<2)>>2]|0)+((g&127)<<5)|0;k[g>>2]=n;k[g+4>>2]=l;k[g+8>>2]=m;k[g+12>>2]=e;M=g+16|0;k[M>>2]=k[V>>2];k[M+4>>2]=k[V+4>>2];k[M+8>>2]=k[V+8>>2];k[g+28>>2]=p;k[$>>2]=(k[$>>2]|0)+1}if(o|0){k[V>>2]=k[d>>2];k[V+4>>2]=k[d+4>>2];k[V+8>>2]=k[d+8>>2];l=k[da>>2]|0;m=k[Q>>2]|0;e=k[R>>2]|0;b=k[Y>>2]|0;j=k[Z>>2]|0;M=b-j|0;g=k[_>>2]|0;h=k[$>>2]|0;if((((M|0)==0?0:(M<<5)+-1|0)|0)==(h+g|0)){rc(ea);g=k[_>>2]|0;h=k[$>>2]|0;b=k[Y>>2]|0;j=k[Z>>2]|0}g=h+g|0;if((b|0)==(j|0))g=0;else g=(k[j+(g>>>7<<2)>>2]|0)+((g&127)<<5)|0;k[g>>2]=o;k[g+4>>2]=l;k[g+8>>2]=m;k[g+12>>2]=e;M=g+16|0;k[M>>2]=k[V>>2];k[M+4>>2]=k[V+4>>2];k[M+8>>2]=k[V+8>>2];k[g+28>>2]=p;k[$>>2]=(k[$>>2]|0)+1}break}x=(p|0)==2?0:p+1|0;t=(x|0)==2?0:x+1|0;K=g-(k[d+(x<<2)>>2]|0)|0;C=g-(k[d+(t<<2)>>2]|0)|0;G=k[f>>2]|0;D=G+84|0;E=G+68|0;F=G+40|0;G=G+64|0;H=da+(p<<2)|0;I=(L|0)<33;J=(L|0)>0;n=c+(p<<2)|0;o=(K|0)==0;m=da+(x<<2)|0;p=c+(x<<2)|0;q=(C|0)==0;e=da+(t<<2)|0;s=c+(t<<2)|0;t=da+(t<<2)|0;u=(C|0)<33;v=(C|0)>0;w=32-C|0;x=da+(x<<2)|0;y=(K|0)<33;z=(K|0)>0;A=32-K|0;B=32-L|0;l=0;do{k[da>>2]=0;k[da+4>>2]=0;k[da+8>>2]=0;if(!I){g=19;break a}if(!J){g=21;break a}j=k[O>>2]|0;g=32-j|0;b=k[P>>2]|0;h=k[b>>2]<>>B;k[H>>2]=g;j=j+L|0;k[O>>2]=j;if((j|0)==32){k[P>>2]=b+4;k[O>>2]=0}}else{ga=L-g|0;k[O>>2]=ga;j=b+4|0;k[P>>2]=j;b=32-ga|0;g=(k[j>>2]|0)>>>b|h>>>(b-g|0);k[H>>2]=g}k[H>>2]=g|k[n>>2];do if(!o){if(!y){g=19;break a}if(!z){g=21;break a}j=k[O>>2]|0;g=32-j|0;b=k[P>>2]|0;h=k[b>>2]<(g|0)){ga=K-g|0;k[O>>2]=ga;b=b+4|0;k[P>>2]=b;ga=32-ga|0;g=(k[b>>2]|0)>>>ga|h>>>(ga-g|0);k[x>>2]=g;h=x;break}g=h>>>A;k[x>>2]=g;ga=j+K|0;k[O>>2]=ga;if((ga|0)==32){k[P>>2]=b+4;k[O>>2]=0;h=x}else h=x}else{h=m;g=k[m>>2]|0}while(0);k[h>>2]=g|k[p>>2];do if(!q){if(!u){g=19;break a}if(!v){g=21;break a}j=k[O>>2]|0;g=32-j|0;b=k[P>>2]|0;h=k[b>>2]<(g|0)){ga=C-g|0;k[O>>2]=ga;b=b+4|0;k[P>>2]=b;ga=32-ga|0;g=(k[b>>2]|0)>>>ga|h>>>(ga-g|0);k[t>>2]=g;h=t;break}g=h>>>w;k[t>>2]=g;ga=j+C|0;k[O>>2]=ga;if((ga|0)==32){k[P>>2]=b+4;k[O>>2]=0;h=t}else h=t}else{h=e;g=k[e>>2]|0}while(0);k[h>>2]=g|k[s>>2];g=k[N>>2]|0;k[N>>2]=g+1;if(!(i[D>>0]|0))g=k[(k[E>>2]|0)+(g<<2)>>2]|0;b=F;ga=k[b>>2]|0;b=uk(g|0,((g|0)<0)<<31>>31|0,ga|0,k[b+4>>2]|0)|0;Ii((k[k[G>>2]>>2]|0)+b|0,da|0,ga|0)|0;l=l+1|0}while(l>>>0>>0)}while(0);g=k[$>>2]|0;if(!g){g=49;break}m=k[Y>>2]|0}if((g|0)==14)Ka(13811,13849,231,13919);else if((g|0)==19)Ka(13932,13956,48,13984);else if((g|0)==21)Ka(14013,13956,49,13984);else if((g|0)==49){fg(ea);r=fa;return}} -function Af(a,b,c){a=a|0;b=b|0;c=c|0;var d=0,e=0,f=0,g=0,h=0,i=0,j=0,l=0,m=0,n=0,o=0,p=0;p=r;r=r+48|0;m=p+16|0;l=p;h=p+32|0;n=a+28|0;g=k[n>>2]|0;k[h>>2]=g;o=a+20|0;g=(k[o>>2]|0)-g|0;k[h+4>>2]=g;k[h+8>>2]=b;k[h+12>>2]=c;i=a+60|0;j=a+44|0;f=2;b=g+c|0;while(1){if(!(k[4606]|0)){k[m>>2]=k[i>>2];k[m+4>>2]=h;k[m+8>>2]=f;e=Al(Da(146,m|0)|0)|0}else{wa(95,a|0);k[l>>2]=k[i>>2];k[l+4>>2]=h;k[l+8>>2]=f;e=Al(Da(146,l|0)|0)|0;ta(0)}if((b|0)==(e|0)){b=6;break}if((e|0)<0){b=8;break}b=b-e|0;d=k[h+4>>2]|0;if(e>>>0<=d>>>0)if((f|0)==2){k[n>>2]=(k[n>>2]|0)+e;f=2;g=h}else g=h;else{g=k[j>>2]|0;k[n>>2]=g;k[o>>2]=g;e=e-d|0;f=f+-1|0;g=h+8|0;d=k[h+12>>2]|0}k[g>>2]=(k[g>>2]|0)+e;k[g+4>>2]=d-e;h=g}if((b|0)==6){m=k[j>>2]|0;k[a+16>>2]=m+(k[a+48>>2]|0);a=m;k[n>>2]=a;k[o>>2]=a}else if((b|0)==8){k[a+16>>2]=0;k[n>>2]=0;k[o>>2]=0;k[a>>2]=k[a>>2]|32;if((f|0)==2)c=0;else c=c-(k[h+4>>2]|0)|0}r=p;return c|0}function Bf(a,b){a=a|0;b=b|0;var c=0,d=0,e=0,f=0,g=0,h=0,j=0,l=0;j=i[b>>0]|0;l=i[b+1>>0]|0;h=i[b+2>>0]|0;g=i[b+3>>0]|0;b=(((j&255^318)+239^l&255)+239^h&255)+239^g&255;d=k[a+4>>2]|0;if(!d){l=0;return l|0}e=d+-1|0;c=(e&d|0)==0;if(c)f=b&e;else f=(b>>>0)%(d>>>0)|0;b=k[(k[a>>2]|0)+(f<<2)>>2]|0;if(!b){l=0;return l|0}b=k[b>>2]|0;if(!b){l=0;return l|0}if(c){while(1){if((k[b+4>>2]&e|0)!=(f|0)){b=0;a=20;break}if((((i[b+8>>0]|0)==j<<24>>24?(i[b+9>>0]|0)==l<<24>>24:0)?(i[b+10>>0]|0)==h<<24>>24:0)?(i[b+11>>0]|0)==g<<24>>24:0){a=20;break}b=k[b>>2]|0;if(!b){b=0;a=20;break}}if((a|0)==20)return b|0}else{while(1){if((((k[b+4>>2]|0)>>>0)%(d>>>0)|0|0)!=(f|0)){b=0;a=20;break}if((((i[b+8>>0]|0)==j<<24>>24?(i[b+9>>0]|0)==l<<24>>24:0)?(i[b+10>>0]|0)==h<<24>>24:0)?(i[b+11>>0]|0)==g<<24>>24:0){a=20;break}b=k[b>>2]|0;if(!b){b=0;a=20;break}}if((a|0)==20)return b|0}return 0}function Cf(a,b,c){a=a|0;b=b|0;c=c|0;var d=0,e=0,f=0,g=0,h=0,i=0;h=a+8|0;d=k[h>>2]|0;g=k[a>>2]|0;i=g;if(d-g>>2>>>0>=b>>>0){h=a+4|0;a=k[h>>2]|0;f=a-g>>2;g=f>>>0>>0;d=g?f:b;if(d|0){e=i;while(1){k[e>>2]=k[c>>2];d=d+-1|0;if(!d)break;else e=e+4|0}}if(g){e=b-f|0;d=e;f=a;while(1){k[f>>2]=k[c>>2];d=d+-1|0;if(!d)break;else f=f+4|0}k[h>>2]=a+(e<<2);return}else{d=i+(b<<2)|0;if((a|0)==(d|0))return;k[h>>2]=a+(~((a+-4-d|0)>>>2)<<2);return}}else{f=g;if(g){d=a+4|0;e=k[d>>2]|0;if((e|0)!=(i|0))k[d>>2]=e+(~((e+-4-g|0)>>>2)<<2);cn(f);k[h>>2]=0;k[d>>2]=0;k[a>>2]=0;d=0}if(b>>>0>1073741823)hm(a);i=d-0|0;d=i>>1;d=i>>2>>>0<536870911?(d>>>0>>0?b:d):1073741823;if(d>>>0>1073741823)hm(a);f=xk(d<<2)|0;g=a+4|0;k[g>>2]=f;k[a>>2]=f;k[h>>2]=f+(d<<2);d=b;e=f;while(1){k[e>>2]=k[c>>2];d=d+-1|0;if(!d)break;else e=e+4|0}k[g>>2]=f+(b<<2);return}}function Df(a,b){a=a|0;b=b|0;var c=0,d=0,e=0,f=0,g=0,h=0,i=0,j=0;h=k[b>>2]|0;i=k[b+4>>2]|0;j=k[b+8>>2]|0;g=k[b+12>>2]|0;b=(((h^318)+239^i)+239^j)+239^g;d=k[a+4>>2]|0;if(!d){j=0;return j|0}e=d+-1|0;c=(e&d|0)==0;if(c)f=b&e;else f=(b>>>0)%(d>>>0)|0;b=k[(k[a>>2]|0)+(f<<2)>>2]|0;if(!b){j=0;return j|0}b=k[b>>2]|0;if(!b){j=0;return j|0}if(c){while(1){if((k[b+4>>2]&e|0)!=(f|0)){b=0;a=20;break}if((((k[b+8>>2]|0)==(h|0)?(k[b+12>>2]|0)==(i|0):0)?(k[b+16>>2]|0)==(j|0):0)?(k[b+20>>2]|0)==(g|0):0){a=20;break}b=k[b>>2]|0;if(!b){b=0;a=20;break}}if((a|0)==20)return b|0}else{while(1){if((((k[b+4>>2]|0)>>>0)%(d>>>0)|0|0)!=(f|0)){b=0;a=20;break}if((((k[b+8>>2]|0)==(h|0)?(k[b+12>>2]|0)==(i|0):0)?(k[b+16>>2]|0)==(j|0):0)?(k[b+20>>2]|0)==(g|0):0){a=20;break}b=k[b>>2]|0;if(!b){b=0;a=20;break}}if((a|0)==20)return b|0}return 0}function Ef(a){a=a|0;var b=0,c=0,d=0,e=0,f=0,g=0,h=0;b=k[a+20>>2]|0;f=b+8|0;h=k[f+4>>2]|0;c=b+16|0;e=c;d=k[e>>2]|0;e=k[e+4>>2]|0;if(!((h|0)>(e|0)|((h|0)==(e|0)?(k[f>>2]|0)>>>0>d>>>0:0))){h=0;return h|0}f=i[(k[b>>2]|0)+d>>0]|0;b=sl(d|0,e|0,1,0)|0;d=c;k[d>>2]=b;k[d+4>>2]=M;d=a+32|0;b=k[d>>2]|0;k[d>>2]=0;if(b|0)Ta[k[(k[b>>2]|0)+4>>2]&127](b);switch(f<<24>>24){case 0:{b=xk(336)|0;Zh(b);c=k[d>>2]|0;k[d>>2]=b;if(c){Ta[k[(k[c>>2]|0)+4>>2]&127](c);g=11}break}case 1:{b=xk(376)|0;ii(b);c=k[d>>2]|0;k[d>>2]=b;if(c){Ta[k[(k[c>>2]|0)+4>>2]&127](c);g=11}break}case 2:{b=xk(392)|0;ih(b);c=k[d>>2]|0;k[d>>2]=b;if(c){Ta[k[(k[c>>2]|0)+4>>2]&127](c);g=11}break}default:g=11}if((g|0)==11){b=k[d>>2]|0;if(!b){h=0;return h|0}}h=Za[k[(k[b>>2]|0)+8>>2]&127](b,a)|0;return h|0}function Ff(a,b,c){a=a|0;b=b|0;c=c|0;var d=0,e=0,f=0,g=0,h=0,i=0,j=0,l=0,m=0;i=c;g=b;f=i-g|0;j=f>>2;h=a+8|0;d=k[h>>2]|0;m=k[a>>2]|0;l=m;if(j>>>0<=d-m>>2>>>0){h=a+4|0;a=(k[h>>2]|0)-m>>2;f=j>>>0>a>>>0;a=f?b+(a<<2)|0:c;e=a;d=e-g|0;c=d>>2;if(c|0)Wj(m|0,b|0,d|0)|0;c=l+(c<<2)|0;if(f){d=i-e|0;if((d|0)<=0)return;Ii(k[h>>2]|0,a|0,d|0)|0;k[h>>2]=(k[h>>2]|0)+(d>>2<<2);return}else{d=k[h>>2]|0;if((d|0)==(c|0))return;k[h>>2]=d+(~((d+-4-c|0)>>>2)<<2);return}}e=m;if(m){d=a+4|0;c=k[d>>2]|0;if((c|0)!=(l|0))k[d>>2]=c+(~((c+-4-m|0)>>>2)<<2);cn(e);k[h>>2]=0;k[d>>2]=0;k[a>>2]=0;d=0}if(j>>>0>1073741823)hm(a);m=d-0|0;d=m>>1;d=m>>2>>>0<536870911?(d>>>0>>0?j:d):1073741823;if(d>>>0>1073741823)hm(a);c=xk(d<<2)|0;e=a+4|0;k[e>>2]=c;k[a>>2]=c;k[h>>2]=c+(d<<2);if((f|0)<=0)return;Ii(c|0,b|0,f|0)|0;k[e>>2]=c+(j<<2);return}function Gf(a){a=a|0;var b=0,c=0,d=0,e=0,f=0,g=0,h=0,j=0;h=a+20|0;e=k[h>>2]|0;g=e+8|0;f=k[g+4>>2]|0;b=e+16|0;d=b;c=k[d>>2]|0;d=k[d+4>>2]|0;if(!((f|0)>(d|0)|((f|0)==(d|0)?(k[g>>2]|0)>>>0>c>>>0:0))){h=0;return h|0}e=i[(k[e>>2]|0)+c>>0]|0;f=sl(c|0,d|0,1,0)|0;g=b;k[g>>2]=f;k[g+4>>2]=M;g=e&255;e=e<<24>>24==0;a:do if(!e){b=0;while(1){if(!(Za[k[(k[a>>2]|0)+16>>2]&127](a,b)|0)){b=0;break}b=b+1|0;if((b|0)>=(g|0))break a}return b|0}while(0);f=a+8|0;b=k[f>>2]|0;c=k[a+12>>2]|0;b:do if((b|0)!=(c|0)){d=a+4|0;while(1){j=k[b>>2]|0;b=b+4|0;if(!(Ra[k[(k[j>>2]|0)+8>>2]&31](j,a,k[d>>2]|0)|0)){b=0;break}if((b|0)==(c|0))break b}return b|0}while(0);c:do if(!e){b=0;while(1){j=k[(k[f>>2]|0)+(b<<2)>>2]|0;b=b+1|0;if(!(Za[k[(k[j>>2]|0)+12>>2]&127](j,k[h>>2]|0)|0)){b=0;break}if((b|0)>=(g|0))break c}return b|0}while(0);if(!(Va[k[(k[a>>2]|0)+28>>2]&127](a)|0)){j=0;return j|0}j=Va[k[(k[a>>2]|0)+32>>2]&127](a)|0;return j|0}function Hf(a,b,c){a=a|0;b=b|0;c=c|0;var d=0,e=0,f=0,g=0,h=0,j=0;g=b;f=c-g|0;h=a+8|0;d=k[h>>2]|0;e=k[a>>2]|0;j=e;if(f>>>0>(d-e|0)>>>0){if(e){d=a+4|0;if((k[d>>2]|0)!=(j|0))k[d>>2]=j;cn(j);k[h>>2]=0;k[d>>2]=0;k[a>>2]=0;d=0}if((f|0)<0)hm(a);j=d-0|0;e=j<<1;e=j>>>0<1073741823?(e>>>0>>0?f:e):2147483647;if((e|0)<0)hm(a);d=xk(e)|0;f=a+4|0;k[f>>2]=d;k[a>>2]=d;k[h>>2]=d+e;if((b|0)==(c|0))return;do{i[d>>0]=i[b>>0]|0;b=b+1|0;d=(k[f>>2]|0)+1|0;k[f>>2]=d}while((b|0)!=(c|0));return}else{h=a+4|0;d=(k[h>>2]|0)-e|0;a=f>>>0>d>>>0;d=b+d|0;f=a?d:c;e=f-g|0;if(e|0)Wj(j|0,b|0,e|0)|0;b=j+e|0;if(!a){if((k[h>>2]|0)==(b|0))return;k[h>>2]=b;return}if((f|0)==(c|0))return;b=k[h>>2]|0;do{i[b>>0]=i[d>>0]|0;d=d+1|0;b=(k[h>>2]|0)+1|0;k[h>>2]=b}while((d|0)!=(c|0));return}}function If(a,b,c){a=da(a);b=da(b);c=c|0;var d=Pa,e=Pa,f=Pa,g=0.0,h=0.0,i=0.0,j=0.0,k=0.0,l=0;d=da(a+b);e=da(a-b);if(!(e<=da(.5))|(!(e>=da(-.5))|(!(d>=da(.5))|!(d<=da(1.5))))){do if(!(d<=da(.5))){if(d>=da(1.5)){f=da(da(1.5)-b);b=da(da(1.5)-a);break}if(!(e<=da(-.5))){f=da(b+da(.5));b=da(a+da(-.5));break}else{f=da(b+da(-.5));b=da(a+da(.5));break}}else{f=da(da(.5)-b);b=da(da(.5)-a)}while(0);d=da(b+f);e=da(f-b);g=-1.0}else{g=1.0;f=a}a=da(+f*2.0+-1.0);f=da(+b*2.0+-1.0);j=+d*2.0;h=j+-1.0;j=3.0-j;k=+e*2.0;i=k+1.0;k=1.0-k;i=k>2]=da(0.0);a=da(0.0);b=da(0.0);l=c+4|0;o[l>>2]=b;c=c+8|0;o[c>>2]=a;return}else{e=da(da(1.0)/da(P(da(e))));b=da(d*e);o[c>>2]=b;b=da(f*e);a=da(a*e);l=c+4|0;o[l>>2]=a;l=c+8|0;o[l>>2]=b;return}}function Jf(a,b){a=a|0;b=b|0;var c=0,d=0,e=0;c=a+8|0;k[c>>2]=k[b>>2];sf(a+12|0,b+4|0)|0;d=a+44|0;e=b+36|0;k[d>>2]=k[e>>2];k[d+4>>2]=k[e+4>>2];k[d+8>>2]=k[e+8>>2];k[d+12>>2]=k[e+12>>2];if((c|0)==(b|0)){k[a+96>>2]=k[b+88>>2];return}else{tf(a+60|0,k[b+52>>2]|0,k[b+56>>2]|0);tf(a+72|0,k[b+64>>2]|0,k[b+68>>2]|0);tf(a+84|0,k[b+76>>2]|0,k[b+80>>2]|0);k[a+96>>2]=k[b+88>>2];Ff(a+100|0,k[b+92>>2]|0,k[b+96>>2]|0);return}}function Kf(a){a=a|0;var b=0,c=0,d=0,e=0,f=0,g=0;g=r;r=r+64|0;f=g;b=g+40|0;c=f;d=a;e=c+40|0;do{k[c>>2]=k[d>>2];c=c+4|0;d=d+4|0}while((c|0)<(e|0));a:do if(ze(f,b)|0){switch(i[b+7>>0]|0){case 0:{e=fi(i[b+8>>0]|0)|0;if(!e){b=0;break a}d=xk(68)|0;bl(d);b=wh(e,a,d)|0;c=b?0:d;if(!b)Ta[k[(k[c>>2]|0)+4>>2]&127](c);Ta[k[(k[e>>2]|0)+4>>2]&127](e);b=b?d:0;break a}case 1:break;default:{b=0;break a}}switch(i[b+8>>0]|0){case 0:{d=xk(32)|0;jm(d);break}case 1:{d=xk(36)|0;Gl(d);break}default:{b=0;break a}}e=xk(92)|0;qk(e);b=Ek(d,a,e)|0;c=b?0:e;if(!b)Ta[k[(k[c>>2]|0)+4>>2]&127](c);Ta[k[(k[d>>2]|0)+4>>2]&127](d);b=b?e:0}else b=0;while(0);fn(f+24|0);r=g;return b|0}function Lf(a,b,c,d,e,f){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;f=f|0;var g=0,h=0,i=0,j=0,l=0,m=0,n=0,o=0,p=0;p=r;r=r+16|0;n=p+4|0;o=p;k[a+48>>2]=e;k[a+40>>2]=f;m=a+44|0;l=$m(e>>>0>1073741823?-1:e<<2)|0;d=k[m>>2]|0;k[m>>2]=l;if(d|0)an(d);i=a+8|0;k[i>>2]=e;j=a+32|0;h=k[j>>2]|0;g=k[h+4>>2]|0;f=k[h>>2]|0;d=g-f|0;l=d>>2;if((d|0)<=0){r=p;return 1}d=0;while(1){if(g-f>>2>>>0<=d>>>0){d=8;break}k[o>>2]=k[f+(d<<2)>>2];k[n>>2]=k[o>>2];zc(a,n,c,d);h=$(d,e)|0;Sg(i,k[m>>2]|0,b,c+(h<<2)|0,h);d=d+1|0;if((d|0)>=(l|0)){d=5;break}h=k[j>>2]|0;f=k[h>>2]|0;g=k[h+4>>2]|0}if((d|0)==5){r=p;return 1}else if((d|0)==8)gm(h);return 0}function Mf(a,b){a=a|0;b=b|0;var c=0,d=0,e=0,f=0,g=0,h=0,i=0,j=0,l=0,m=0,n=0;m=a+8|0;e=k[m>>2]|0;n=a+4|0;f=k[n>>2]|0;if(e-f>>2>>>0>=b>>>0){Vi(f|0,0,b<<2|0)|0;k[n>>2]=f+(b<<2);return}i=k[a>>2]|0;d=(f-i>>2)+b|0;if(d>>>0>1073741823)hm(a);c=f;l=i;j=e-i|0;g=j>>1;g=j>>2>>>0<536870911?(g>>>0>>0?d:g):1073741823;f=f-i>>2;do if(g)if(g>>>0>1073741823){n=Ma(4)|0;Om(n);xa(n|0,1024,93)}else{h=xk(g<<2)|0;break}else h=0;while(0);d=h+(f<<2)|0;Vi(d|0,0,b<<2|0)|0;e=d;j=h+(g<<2)|0;g=h+(f+b<<2)|0;if((c|0)==(l|0))f=i;else{do{c=c+-4|0;i=k[c>>2]|0;k[c>>2]=0;k[d+-4>>2]=i;d=e+-4|0;e=d}while((c|0)!=(l|0));f=k[a>>2]|0;c=k[n>>2]|0}k[a>>2]=e;k[n>>2]=g;k[m>>2]=j;e=f;if((c|0)!=(e|0))do{c=c+-4|0;d=k[c>>2]|0;k[c>>2]=0;if(d|0)Ta[k[(k[d>>2]|0)+4>>2]&127](d)}while((c|0)!=(e|0));if(!f)return;cn(f);return}function Nf(a,b,c){a=a|0;b=b|0;c=c|0;var d=0,e=0,f=0,g=0,h=0,i=0;i=r;r=r+16|0;h=i;e=k[a+8>>2]|0;f=k[c>>2]|0;g=(f|0)/3|0;if((f|0)<=-3)Ka(14172,14197,63,14211);d=k[e+80>>2]|0;if((g|0)>=(((k[e+84>>2]|0)-d|0)/12|0|0))Ka(14216,14197,64,14211);d=k[d+(g*12|0)+(((f|0)%3|0)<<2)>>2]|0;e=k[a+12>>2]|0;k[h>>2]=d;e=k[e+4>>2]|0;f=e+4|0;g=k[f>>2]|0;if((g|0)==(k[e+8>>2]|0))xh(e,h);else{k[g>>2]=d;k[f>>2]=g+4}d=a+4|0;e=k[d>>2]|0;f=e+4|0;g=k[f>>2]|0;if((g|0)==(k[e+8>>2]|0)){xh(e,c);a=k[d>>2]|0;c=a+24|0;h=k[c>>2]|0;b=k[b>>2]|0;a=a+12|0;a=k[a>>2]|0;b=a+(b<<2)|0;k[b>>2]=h;b=k[c>>2]|0;b=b+1|0;k[c>>2]=b;r=i;return}else{k[g>>2]=k[c>>2];k[f>>2]=g+4;a=e;c=a+24|0;h=k[c>>2]|0;b=k[b>>2]|0;a=a+12|0;a=k[a>>2]|0;b=a+(b<<2)|0;k[b>>2]=h;b=k[c>>2]|0;b=b+1|0;k[c>>2]=b;r=i;return}}function Of(a,b,c,d,e,f){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;f=f|0;var g=0,h=0,i=0,j=0,l=0,m=0,n=0,o=0;o=r;r=r+16|0;m=o+4|0;n=o;k[a+48>>2]=e;k[a+40>>2]=f;l=a+44|0;j=$m(e>>>0>1073741823?-1:e<<2)|0;d=k[l>>2]|0;k[l>>2]=j;if(d|0)an(d);i=a+8|0;k[i>>2]=e;j=a+32|0;h=k[j>>2]|0;g=k[h+4>>2]|0;f=k[h>>2]|0;d=g-f|0;if((d|0)<=0){r=o;return 1}d=(d>>2)+-1|0;while(1){if(g-f>>2>>>0<=d>>>0){d=8;break}k[n>>2]=k[f+(d<<2)>>2];k[m>>2]=k[n>>2];oc(a,m,b,d);h=$(d,e)|0;Ze(i,b+(h<<2)|0,k[l>>2]|0,c,h);d=d+-1|0;if((d|0)<=-1){d=5;break}h=k[j>>2]|0;f=k[h>>2]|0;g=k[h+4>>2]|0}if((d|0)==5){r=o;return 1}else if((d|0)==8)gm(h);return 0}function Pf(a,b){a=a|0;b=b|0;var c=0,d=0,e=0,f=0,g=0,h=0,i=0,j=0,l=0,m=0,n=0,o=0;o=a+4|0;m=k[o>>2]|0;n=k[a>>2]|0;e=n;do if((m|0)==(n|0)){n=a+8|0;d=k[n>>2]|0;l=a+12|0;j=k[l>>2]|0;c=j;if(d>>>0>>0){e=d;g=((c-e>>2)+1|0)/2|0;c=d+(g<<2)|0;e=e-m|0;l=e>>2;f=c+(0-l<<2)|0;if(l){Wj(f|0,m|0,e|0)|0;c=f;d=k[n>>2]|0}k[o>>2]=c;k[n>>2]=d+(g<<2);break}e=c-e>>1;e=(e|0)==0?1:e;if(e>>>0>1073741823){o=Ma(4)|0;Om(o);xa(o|0,1024,93)}h=xk(e<<2)|0;i=h;c=h+((e+3|0)>>>2<<2)|0;j=c;h=h+(e<<2)|0;if((m|0)==(d|0)){e=j;d=m}else{g=c;e=j;f=m;do{k[g>>2]=k[f>>2];g=e+4|0;e=g;f=f+4|0}while((f|0)!=(d|0));d=k[a>>2]|0}k[a>>2]=i;k[o>>2]=j;k[n>>2]=e;k[l>>2]=h;if(d){cn(d);c=k[o>>2]|0}}else c=m;while(0);k[c+-4>>2]=k[b>>2];k[o>>2]=(k[o>>2]|0)+-4;return}function Qf(a,b,c,d,e,f){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;f=f|0;var g=0,h=0,i=0,j=0,l=0,m=0,n=0,o=0,p=0;p=r;r=r+16|0;n=p+4|0;o=p;k[a+48>>2]=e;k[a+40>>2]=f;m=a+44|0;l=$m(e>>>0>1073741823?-1:e<<2)|0;d=k[m>>2]|0;k[m>>2]=l;if(d|0)an(d);i=a+8|0;k[i>>2]=e;j=a+32|0;h=k[j>>2]|0;g=k[h+4>>2]|0;f=k[h>>2]|0;d=g-f|0;l=d>>2;if((d|0)<=0){r=p;return 1}d=0;while(1){if(g-f>>2>>>0<=d>>>0){d=8;break}k[o>>2]=k[f+(d<<2)>>2];k[n>>2]=k[o>>2];tc(a,n,c,d);h=$(d,e)|0;Sg(i,k[m>>2]|0,b,c+(h<<2)|0,h);d=d+1|0;if((d|0)>=(l|0)){d=5;break}h=k[j>>2]|0;f=k[h>>2]|0;g=k[h+4>>2]|0}if((d|0)==5){r=p;return 1}else if((d|0)==8)gm(h);return 0}function Rf(a,b,c,d,e,f){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;f=f|0;var g=0,h=0,i=0,j=0,l=0,m=0,n=0,o=0,p=0;p=r;r=r+16|0;n=p+4|0;o=p;k[a+48>>2]=e;k[a+40>>2]=f;m=a+44|0;l=$m(e>>>0>1073741823?-1:e<<2)|0;d=k[m>>2]|0;k[m>>2]=l;if(d|0)an(d);i=a+8|0;k[i>>2]=e;j=a+32|0;h=k[j>>2]|0;g=k[h+4>>2]|0;f=k[h>>2]|0;d=g-f|0;l=d>>2;if((d|0)<=0){r=p;return 1}d=0;while(1){if(g-f>>2>>>0<=d>>>0){d=8;break}k[o>>2]=k[f+(d<<2)>>2];k[n>>2]=k[o>>2];zc(a,n,c,d);h=$(d,e)|0;Ug(i,k[m>>2]|0,b,c+(h<<2)|0,h);d=d+1|0;if((d|0)>=(l|0)){d=5;break}h=k[j>>2]|0;f=k[h>>2]|0;g=k[h+4>>2]|0}if((d|0)==5){r=p;return 1}else if((d|0)==8)gm(h);return 0}function Sf(a,b,c){a=a|0;b=b|0;c=c|0;var d=0,e=0,f=0,g=0,h=0,j=0,l=0,m=0;m=r;r=r+48|0;d=m+32|0;e=m+28|0;f=m+24|0;g=m+20|0;h=m+16|0;l=m;j=i[a+24>>0]|0;k[l>>2]=k[268];k[l+4>>2]=k[269];k[l+8>>2]=k[270];k[l+12>>2]=k[271];j=j<<24>>24;switch(j|0){case 1:{k[e>>2]=b;k[d>>2]=k[e>>2];d=hd(a,d,l)|0;break}case 2:{k[f>>2]=b;k[d>>2]=k[f>>2];d=wc(a,d,l)|0;break}case 3:{k[g>>2]=b;k[d>>2]=k[g>>2];d=$c(a,d,l)|0;break}case 4:{k[h>>2]=b;k[d>>2]=k[h>>2];d=Tc(a,d,l)|0;break}default:{l=0;r=m;return l|0}}if(!d){l=0;r=m;return l|0}kf(c,l,l+(j<<2)|0);l=1;r=m;return l|0}function Tf(a,b,c){a=a|0;b=b|0;c=c|0;var d=0,e=0,f=0,g=0,h=0,i=0,j=0,l=0,m=0,n=0,o=0,p=0;o=r;r=r+32|0;i=o+24|0;j=o+16|0;l=o+8|0;n=o;e=a+4|0;p=k[e>>2]|0;m=k[b>>2]|0;d=k[b+4>>2]|0;h=k[c>>2]|0;f=k[c+4>>2]|0;g=h-m<<3;k[e>>2]=p-d+f+g;e=(k[a>>2]|0)+(p>>>5<<2)|0;c=p&31;b=e;if((d|0)!=(c|0)){k[i>>2]=m;k[i+4>>2]=d;k[j>>2]=h;k[j+4>>2]=f;k[l>>2]=b;k[l+4>>2]=c;xe(n,i,j,l);r=o;return}c=f-d+g|0;g=m;if((c|0)>0){if(!d){d=0;b=m}else{p=32-d|0;b=(c|0)<(p|0)?c:p;p=-1>>>(p-b|0)&-1<>2]=k[e>>2]&~p|k[g>>2]&p;d=b+d|0;g=g+4|0;c=c-b|0;e=e+(d>>>5<<2)|0;d=d&31;b=g}f=c>>>5;Wj(e|0,b|0,f<<2|0)|0;a=c-(f<<5)|0;c=e+(f<<2)|0;b=c;if((a|0)>0){d=-1>>>(32-a|0);k[c>>2]=k[c>>2]&~d|k[g+(f<<2)>>2]&d;d=a}}k[n>>2]=b;k[n+4>>2]=d;r=o;return}function Uf(a,b){a=a|0;b=b|0;var c=0,d=0,e=0,f=0,g=0,h=0,j=0;e=b+8|0;j=e;g=k[j>>2]|0;j=k[j+4>>2]|0;f=b+16|0;d=f;c=k[d>>2]|0;d=sl(c|0,k[d+4>>2]|0,4,0)|0;h=M;if((j|0)<(h|0)|(j|0)==(h|0)&g>>>0>>0){j=0;return j|0}j=a+12|0;c=(k[b>>2]|0)+c|0;c=l[c>>0]|l[c+1>>0]<<8|l[c+2>>0]<<16|l[c+3>>0]<<24;i[j>>0]=c;i[j+1>>0]=c>>8;i[j+2>>0]=c>>16;i[j+3>>0]=c>>24;j=f;g=k[j>>2]|0;j=k[j+4>>2]|0;d=sl(g|0,j|0,4,0)|0;h=f;k[h>>2]=d;k[h+4>>2]=M;h=k[e>>2]|0;e=k[e+4>>2]|0;j=sl(g|0,j|0,8,0)|0;g=M;if((e|0)<(g|0)|(e|0)==(g|0)&h>>>0>>0){j=0;return j|0}h=a+16|0;j=(k[b>>2]|0)+d|0;j=l[j>>0]|l[j+1>>0]<<8|l[j+2>>0]<<16|l[j+3>>0]<<24;i[h>>0]=j;i[h+1>>0]=j>>8;i[h+2>>0]=j>>16;i[h+3>>0]=j>>24;h=f;h=sl(k[h>>2]|0,k[h+4>>2]|0,4,0)|0;d=f;k[d>>2]=h;k[d+4>>2]=M;j=1-c+j|0;k[a+20>>2]=j;c=(j|0)/2|0;d=a+24|0;k[d>>2]=c;k[a+28>>2]=0-c;if(j&1|0){j=1;return j|0}k[d>>2]=c+-1;j=1;return j|0}function Vf(a,b,c){a=a|0;b=b|0;c=c|0;var d=0,e=0,f=0,g=0,h=0,i=0,j=0;i=a+8|0;f=k[i>>2]|0;j=a+4|0;d=k[j>>2]|0;if(((f-d|0)/12|0)>>>0>=b>>>0){do{k[d>>2]=k[c>>2];k[d+4>>2]=k[c+4>>2];k[d+8>>2]=k[c+8>>2];d=(k[j>>2]|0)+12|0;k[j>>2]=d;b=b+-1|0}while((b|0)!=0);return}g=k[a>>2]|0;e=((d-g|0)/12|0)+b|0;if(e>>>0>357913941)hm(a);h=(f-g|0)/12|0;f=h<<1;f=h>>>0<178956970?(f>>>0>>0?e:f):357913941;d=(d-g|0)/12|0;do if(f)if(f>>>0>357913941){j=Ma(4)|0;Om(j);xa(j|0,1024,93)}else{e=xk(f*12|0)|0;break}else e=0;while(0);h=e+(d*12|0)|0;g=e+(f*12|0)|0;d=h;f=h;do{k[d>>2]=k[c>>2];k[d+4>>2]=k[c+4>>2];k[d+8>>2]=k[c+8>>2];d=f+12|0;f=d;b=b+-1|0}while((b|0)!=0);b=k[a>>2]|0;e=(k[j>>2]|0)-b|0;d=h+(((e|0)/-12|0)*12|0)|0;if((e|0)>0)Ii(d|0,b|0,e|0)|0;k[a>>2]=d;k[j>>2]=f;k[i>>2]=g;if(!b)return;cn(b);return}function Wf(a,b,c,d,e,f){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;f=f|0;var g=0,h=0,i=0,j=0,l=0,m=0,n=0,o=0;o=r;r=r+16|0;m=o+4|0;n=o;k[a+48>>2]=e;k[a+40>>2]=f;l=a+44|0;j=$m(e>>>0>1073741823?-1:e<<2)|0;d=k[l>>2]|0;k[l>>2]=j;if(d|0)an(d);i=a+8|0;k[i>>2]=e;j=a+32|0;h=k[j>>2]|0;g=k[h+4>>2]|0;f=k[h>>2]|0;d=g-f|0;if((d|0)<=0){r=o;return 1}d=(d>>2)+-1|0;while(1){if(g-f>>2>>>0<=d>>>0){d=8;break}k[n>>2]=k[f+(d<<2)>>2];k[m>>2]=k[n>>2];lc(a,m,b,d);h=$(d,e)|0;Ze(i,b+(h<<2)|0,k[l>>2]|0,c,h);d=d+-1|0;if((d|0)<=-1){d=5;break}h=k[j>>2]|0;f=k[h>>2]|0;g=k[h+4>>2]|0}if((d|0)==5){r=o;return 1}else if((d|0)==8)gm(h);return 0}function Xf(a,b,c,d,e,f){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;f=f|0;var g=0,h=0,i=0,j=0,l=0,m=0,n=0,o=0;o=r;r=r+16|0;m=o+4|0;n=o;k[a+48>>2]=e;k[a+40>>2]=f;l=a+44|0;j=$m(e>>>0>1073741823?-1:e<<2)|0;d=k[l>>2]|0;k[l>>2]=j;if(d|0)an(d);i=a+8|0;k[i>>2]=e;j=a+32|0;h=k[j>>2]|0;g=k[h+4>>2]|0;f=k[h>>2]|0;d=g-f|0;if((d|0)<=0){r=o;return 1}d=(d>>2)+-1|0;while(1){if(g-f>>2>>>0<=d>>>0){d=8;break}k[n>>2]=k[f+(d<<2)>>2];k[m>>2]=k[n>>2];oc(a,m,b,d);h=$(d,e)|0;cf(i,b+(h<<2)|0,k[l>>2]|0,c,h);d=d+-1|0;if((d|0)<=-1){d=5;break}h=k[j>>2]|0;f=k[h>>2]|0;g=k[h+4>>2]|0}if((d|0)==5){r=o;return 1}else if((d|0)==8)gm(h);return 0}function Yf(a,b){a=a|0;b=b|0;var c=0,d=0,e=0,f=0,g=0,h=0,i=0,j=0,l=0,m=0,n=0;n=a+8|0;i=k[n>>2]|0;j=a+12|0;m=k[j>>2]|0;e=m;g=i;do if((i|0)==(m|0)){m=a+4|0;l=k[m>>2]|0;d=k[a>>2]|0;c=d;if(l>>>0>d>>>0){d=l;e=((d-c>>2)+1|0)/-2|0;f=l+(e<<2)|0;c=g-d|0;d=c>>2;if(!d)c=l;else{Wj(f|0,l|0,c|0)|0;c=k[m>>2]|0}l=f+(d<<2)|0;k[n>>2]=l;k[m>>2]=c+(e<<2);c=l;break}c=e-c>>1;c=(c|0)==0?1:c;if(c>>>0>1073741823){n=Ma(4)|0;Om(n);xa(n|0,1024,93)}f=xk(c<<2)|0;g=f;e=f+(c>>>2<<2)|0;h=e;f=f+(c<<2)|0;if((l|0)==(i|0))c=h;else{c=h;d=l;do{k[e>>2]=k[d>>2];e=c+4|0;c=e;d=d+4|0}while((d|0)!=(i|0));d=k[a>>2]|0}k[a>>2]=g;k[m>>2]=h;k[n>>2]=c;k[j>>2]=f;if(d){cn(d);c=k[n>>2]|0}}else c=i;while(0);k[c>>2]=k[b>>2];k[n>>2]=(k[n>>2]|0)+4;return}function Zf(a,b,c,d,e,f){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;f=f|0;var g=0,h=0,i=0,j=0,l=0,m=0,n=0,o=0,p=0;p=r;r=r+16|0;n=p+4|0;o=p;k[a+48>>2]=e;k[a+40>>2]=f;m=a+44|0;l=$m(e>>>0>1073741823?-1:e<<2)|0;d=k[m>>2]|0;k[m>>2]=l;if(d|0)an(d);i=a+8|0;k[i>>2]=e;j=a+32|0;h=k[j>>2]|0;g=k[h+4>>2]|0;f=k[h>>2]|0;d=g-f|0;l=d>>2;if((d|0)<=0){r=p;return 1}d=0;while(1){if(g-f>>2>>>0<=d>>>0){d=8;break}k[o>>2]=k[f+(d<<2)>>2];k[n>>2]=k[o>>2];tc(a,n,c,d);h=$(d,e)|0;Ug(i,k[m>>2]|0,b,c+(h<<2)|0,h);d=d+1|0;if((d|0)>=(l|0)){d=5;break}h=k[j>>2]|0;f=k[h>>2]|0;g=k[h+4>>2]|0}if((d|0)==5){r=p;return 1}else if((d|0)==8)gm(h);return 0}function _f(a,b,c,d,e){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;var f=0,g=0,h=0;do if((a|0)==(k[b+8>>2]|0)){if((k[b+4>>2]|0)==(c|0)?(f=b+28|0,(k[f>>2]|0)!=1):0)k[f>>2]=d}else{if((a|0)!=(k[b>>2]|0)){h=k[a+8>>2]|0;Sa[k[(k[h>>2]|0)+24>>2]&3](h,b,c,d,e);break}if((k[b+16>>2]|0)!=(c|0)?(h=b+20|0,(k[h>>2]|0)!=(c|0)):0){k[b+32>>2]=d;g=b+44|0;if((k[g>>2]|0)==4)break;f=b+52|0;i[f>>0]=0;d=b+53|0;i[d>>0]=0;a=k[a+8>>2]|0;Ya[k[(k[a>>2]|0)+20>>2]&3](a,b,c,c,1,e);if(i[d>>0]|0)if(!(i[f>>0]|0)){f=1;d=13}else d=17;else{f=0;d=13}do if((d|0)==13){k[h>>2]=c;c=b+40|0;k[c>>2]=(k[c>>2]|0)+1;if((k[b+36>>2]|0)==1?(k[b+24>>2]|0)==2:0){i[b+54>>0]=1;if(f){d=17;break}else{f=4;break}}if(f)d=17;else f=4}while(0);if((d|0)==17)f=3;k[g>>2]=f;break}if((d|0)==1)k[b+32>>2]=1}while(0);return}function $f(a,b,c,d,e,f){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;f=f|0;var g=0,h=0,i=0,j=0,l=0,m=0,n=0,o=0;o=r;r=r+16|0;m=o+4|0;n=o;k[a+48>>2]=e;k[a+40>>2]=f;l=a+44|0;j=$m(e>>>0>1073741823?-1:e<<2)|0;d=k[l>>2]|0;k[l>>2]=j;if(d|0)an(d);i=a+8|0;k[i>>2]=e;j=a+32|0;h=k[j>>2]|0;g=k[h+4>>2]|0;f=k[h>>2]|0;d=g-f|0;if((d|0)<=0){r=o;return 1}d=(d>>2)+-1|0;while(1){if(g-f>>2>>>0<=d>>>0){d=8;break}k[n>>2]=k[f+(d<<2)>>2];k[m>>2]=k[n>>2];lc(a,m,b,d);h=$(d,e)|0;cf(i,b+(h<<2)|0,k[l>>2]|0,c,h);d=d+-1|0;if((d|0)<=-1){d=5;break}h=k[j>>2]|0;f=k[h>>2]|0;g=k[h+4>>2]|0}if((d|0)==5){r=o;return 1}else if((d|0)==8)gm(h);return 0}function ag(a,b,c){a=a|0;b=b|0;c=c|0;var d=0,e=0,f=0,g=0,h=0,j=0,l=0,m=0,n=0;m=(k[b+4>>2]|0)-(k[b>>2]|0)>>2;h=c+8|0;g=k[h>>2]|0;h=k[h+4>>2]|0;j=c+16|0;e=j;d=k[e>>2]|0;e=k[e+4>>2]|0;if((h|0)>(e|0)|(h|0)==(e|0)&g>>>0>d>>>0){f=i[(k[c>>2]|0)+d>>0]|0;d=sl(d|0,e|0,1,0)|0;e=M;n=j;k[n>>2]=d;k[n+4>>2]=e;if(f<<24>>24!=-2)l=3}else{f=0;l=3}if((l|0)==3){if((h|0)>(e|0)|(h|0)==(e|0)&g>>>0>d>>>0){n=i[(k[c>>2]|0)+d>>0]|0;l=sl(d|0,e|0,1,0)|0;d=j;k[d>>2]=l;k[d+4>>2]=M;d=n}else d=0;n=a+28|0;l=Ra[k[(k[a>>2]|0)+32>>2]&31](a,f<<24>>24,d<<24>>24)|0;d=k[n>>2]|0;k[n>>2]=l;if(d|0)Ta[k[(k[d>>2]|0)+4>>2]&127](d)}d=k[a+28>>2]|0;if(d|0?!(Za[k[(k[a>>2]|0)+20>>2]&127](a,d)|0):0){n=0;return n|0}if(!(Ra[k[(k[a>>2]|0)+28>>2]&31](a,b,c)|0)){n=0;return n|0}n=Za[k[(k[a>>2]|0)+40>>2]&127](a,m)|0;return n|0}function bg(a){a=a|0;Fm(a+744|0);Fm(a+720|0);Fm(a+696|0);Fm(a+672|0);Fm(a+648|0);Fm(a+624|0);Fm(a+600|0);Fm(a+576|0);Fm(a+552|0);Fm(a+528|0);Fm(a+504|0);Fm(a+480|0);Fm(a+456|0);Fm(a+432|0);Fm(a+408|0);Fm(a+384|0);Fm(a+360|0);Fm(a+336|0);Fm(a+312|0);Fm(a+288|0);Fm(a+264|0);Fm(a+240|0);Fm(a+216|0);Fm(a+192|0);Fm(a+168|0);Fm(a+144|0);Fm(a+120|0);Fm(a+96|0);Fm(a+72|0);Fm(a+48|0);Fm(a+24|0);Fm(a);return}function cg(a){a=a|0;Fm(a);Fm(a+24|0);Fm(a+48|0);Fm(a+72|0);Fm(a+96|0);Fm(a+120|0);Fm(a+144|0);Fm(a+168|0);Fm(a+192|0);Fm(a+216|0);Fm(a+240|0);Fm(a+264|0);Fm(a+288|0);Fm(a+312|0);Fm(a+336|0);Fm(a+360|0);Fm(a+384|0);Fm(a+408|0);Fm(a+432|0);Fm(a+456|0);Fm(a+480|0);Fm(a+504|0);Fm(a+528|0);Fm(a+552|0);Fm(a+576|0);Fm(a+600|0);Fm(a+624|0);Fm(a+648|0);Fm(a+672|0);Fm(a+696|0);Fm(a+720|0);Fm(a+744|0);return}function dg(a){a=a|0;var b=0,c=0,d=0,e=0,f=0,g=0,h=0;g=r;r=r+16|0;d=g+4|0;e=g;f=a+8|0;c=a+84|0;b=k[c>>2]|0;if(!b){c=k[(k[f>>2]|0)+64>>2]|0;c=(k[c+4>>2]|0)-(k[c>>2]|0)|0;b=(c|0)/12|0;if((c|0)<=0){r=g;return 1}a=0;do{k[e>>2]=a*3;k[d>>2]=k[e>>2];gc(f,d);a=a+1|0}while((a|0)<(b|0));r=g;return 1}else{a=k[b>>2]|0;if((k[b+4>>2]|0)==(a|0)){r=g;return 1}b=0;do{k[e>>2]=k[a+(b<<2)>>2];k[d>>2]=k[e>>2];gc(f,d);b=b+1|0;h=k[c>>2]|0;a=k[h>>2]|0}while(b>>>0<(k[h+4>>2]|0)-a>>2>>>0);r=g;return 1}return 0}function eg(a,b,c){a=a|0;b=b|0;c=c|0;var d=0,e=0,f=0,g=0,h=0,i=0;i=r;r=r+16|0;g=i;k[g>>2]=b;if((b|0)<=-1)Ka(6792,6804,93,6831);h=a+4|0;if(((k[a+8>>2]|0)-(k[h>>2]|0)>>2|0)<=(b|0))ch(h,b+1|0);d=k[(k[c>>2]|0)+56>>2]|0;do if((d|0)<4){e=a+16+(d*12|0)+4|0;f=k[e>>2]|0;if((f|0)==(k[a+16+(d*12|0)+8>>2]|0)){xh(a+16+(d*12|0)|0,g);break}else{k[f>>2]=b;k[e>>2]=f+4;break}}while(0);h=(k[h>>2]|0)+(k[g>>2]<<2)|0;g=k[c>>2]|0;k[c>>2]=0;f=k[h>>2]|0;k[h>>2]=g;if(!f){r=i;return}a=k[f+68>>2]|0;b=a;if(a|0){d=f+72|0;e=k[d>>2]|0;if((e|0)!=(a|0))k[d>>2]=e+(~((e+-4-b|0)>>>2)<<2);cn(a)}h=f+64|0;a=k[h>>2]|0;k[h>>2]=0;if(a|0){b=k[a>>2]|0;if(b|0){d=a+4|0;if((k[d>>2]|0)!=(b|0))k[d>>2]=b;cn(b)}cn(a)}cn(f);r=i;return}function fg(a){a=a|0;var b=0,c=0,d=0,e=0,f=0,g=0,h=0,i=0,j=0,l=0;j=a+4|0;c=k[j>>2]|0;i=a+16|0;b=k[i>>2]|0;d=c+(b>>>7<<2)|0;l=a+8|0;h=k[l>>2]|0;e=h;f=c;if((h|0)==(c|0)){g=0;h=a+20|0;b=0}else{h=a+20|0;g=(k[h>>2]|0)+b|0;g=(k[c+(g>>>7<<2)>>2]|0)+((g&127)<<5)|0;b=(k[d>>2]|0)+((b&127)<<5)|0}a:while(1){do{if((b|0)==(g|0))break a;b=b+32|0}while((b-(k[d>>2]|0)|0)!=4096);b=d+4|0;d=b;b=k[b>>2]|0}k[h>>2]=0;b=e-f>>2;if(b>>>0>2)do{cn(k[c>>2]|0);c=(k[j>>2]|0)+4|0;k[j>>2]=c;b=(k[l>>2]|0)-c>>2}while(b>>>0>2);switch(b|0){case 1:{k[i>>2]=64;break}case 2:{k[i>>2]=128;break}default:{}}b=k[j>>2]|0;c=k[l>>2]|0;if((b|0)!=(c|0)){do{cn(k[b>>2]|0);b=b+4|0}while((b|0)!=(c|0));b=k[j>>2]|0;c=k[l>>2]|0;if((c|0)!=(b|0))k[l>>2]=c+(~((c+-4-b|0)>>>2)<<2)}b=k[a>>2]|0;if(!b)return;cn(b);return}function gg(a){a=a|0;var b=0,c=0,d=0,e=0,f=0,g=0,h=0;g=r;r=r+16|0;d=g+4|0;e=g;f=a+8|0;c=a+84|0;b=k[c>>2]|0;if(!b){c=k[f>>2]|0;c=(k[c+4>>2]|0)-(k[c>>2]|0)|0;b=(c|0)/12|0;if((c|0)<=0){r=g;return 1}a=0;do{k[e>>2]=a*3;k[d>>2]=k[e>>2];jc(f,d);a=a+1|0}while((a|0)<(b|0));r=g;return 1}else{a=k[b>>2]|0;if((k[b+4>>2]|0)==(a|0)){r=g;return 1}b=0;do{k[e>>2]=k[a+(b<<2)>>2];k[d>>2]=k[e>>2];jc(f,d);b=b+1|0;h=k[c>>2]|0;a=k[h>>2]|0}while(b>>>0<(k[h+4>>2]|0)-a>>2>>>0);r=g;return 1}return 0}function hg(a,b){a=a|0;b=b|0;var c=0,d=0,e=0,f=0,g=0,h=0,i=0,j=0,l=0;l=r;r=r+16|0;j=l;i=xk(52)|0;g=xk(12)|0;f=k[(k[a+4>>2]|0)+64>>2]|0;k[g+4>>2]=0;k[g>>2]=5436;k[g+8>>2]=f;k[j>>2]=g;hj(i,j);g=a+8|0;f=a+12|0;a=k[f>>2]|0;c=k[g>>2]|0;d=a-c>>2;do if((d|0)<=(b|0)){e=b+1|0;if(e>>>0>d>>>0){Mf(g,e-d|0);break}if(e>>>0>>0?(h=c+(e<<2)|0,(a|0)!=(h|0)):0)do{e=a+-4|0;k[f>>2]=e;a=k[e>>2]|0;k[e>>2]=0;if(a|0)Ta[k[(k[a>>2]|0)+4>>2]&127](a);a=k[f>>2]|0}while((a|0)!=(h|0))}while(0);h=(k[g>>2]|0)+(b<<2)|0;a=k[h>>2]|0;k[h>>2]=i;if(a|0)Ta[k[(k[a>>2]|0)+4>>2]&127](a);a=k[j>>2]|0;k[j>>2]=0;if(!a){r=l;return 1}Ta[k[(k[a>>2]|0)+4>>2]&127](a);r=l;return 1}function ig(a,b,c){a=a|0;b=b|0;c=c|0;var d=0,e=0,f=0,g=0,h=0,j=0;do if(b){b=a+8|0;j=b;g=k[j>>2]|0;j=k[j+4>>2]|0;d=a+16|0;f=d;e=k[f>>2]|0;f=sl(e|0,k[f+4>>2]|0,8,0)|0;h=M;if((j|0)<(h|0)|(j|0)==(h|0)&g>>>0>>0){j=0;return j|0}else{j=(k[a>>2]|0)+e|0;h=j;h=l[h>>0]|l[h+1>>0]<<8|l[h+2>>0]<<16|l[h+3>>0]<<24;j=j+4|0;j=l[j>>0]|l[j+1>>0]<<8|l[j+2>>0]<<16|l[j+3>>0]<<24;e=c;c=e;i[c>>0]=h;i[c+1>>0]=h>>8;i[c+2>>0]=h>>16;i[c+3>>0]=h>>24;e=e+4|0;i[e>>0]=j;i[e+1>>0]=j>>8;i[e+2>>0]=j>>16;i[e+3>>0]=j>>24;e=d;e=sl(k[e>>2]|0,k[e+4>>2]|0,8,0)|0;c=M;k[d>>2]=e;k[d+4>>2]=c;d=a;break}}else{c=a+16|0;b=a+8|0;d=a;e=k[c>>2]|0;c=k[c+4>>2]|0}while(0);i[a+36>>0]=1;h=(k[d>>2]|0)+e|0;j=b;j=al(k[j>>2]|0,k[j+4>>2]|0,e|0,c|0)|0;k[a+32>>2]=0;k[a+24>>2]=h;k[a+28>>2]=h+j;j=1;return j|0}function jg(a,b,c){a=a|0;b=b|0;c=c|0;var d=0,e=0,f=0,g=0,h=0,j=0;j=r;r=r+32|0;d=j+16|0;e=j+12|0;f=j+8|0;g=j+4|0;h=j;c=k[(k[b+40>>2]|0)+(c<<2)>>2]|0;k[a>>2]=0;k[a+4>>2]=0;k[a+8>>2]=0;b=k[b+36>>2]|0;if(!(i[b+84>>0]|0))c=k[(k[b+68>>2]|0)+(c<<2)>>2]|0;switch(i[b+24>>0]|0){case 1:{k[e>>2]=c;k[d>>2]=k[e>>2];hd(b,d,a)|0;r=j;return}case 2:{k[f>>2]=c;k[d>>2]=k[f>>2];wc(b,d,a)|0;r=j;return}case 3:{k[g>>2]=c;k[d>>2]=k[g>>2];$c(b,d,a)|0;r=j;return}case 4:{k[h>>2]=c;k[d>>2]=k[h>>2];Tc(b,d,a)|0;r=j;return}default:{r=j;return}}}function kg(a,b,c){a=a|0;b=b|0;c=c|0;var d=0,e=0,f=0,g=0,h=0,j=0;j=r;r=r+32|0;d=j+16|0;e=j+12|0;f=j+8|0;g=j+4|0;h=j;c=k[(k[b+64>>2]|0)+(c<<2)>>2]|0;k[a>>2]=0;k[a+4>>2]=0;k[a+8>>2]=0;b=k[b+60>>2]|0;if(!(i[b+84>>0]|0))c=k[(k[b+68>>2]|0)+(c<<2)>>2]|0;switch(i[b+24>>0]|0){case 1:{k[e>>2]=c;k[d>>2]=k[e>>2];hd(b,d,a)|0;r=j;return}case 2:{k[f>>2]=c;k[d>>2]=k[f>>2];wc(b,d,a)|0;r=j;return}case 3:{k[g>>2]=c;k[d>>2]=k[g>>2];$c(b,d,a)|0;r=j;return}case 4:{k[h>>2]=c;k[d>>2]=k[h>>2];Tc(b,d,a)|0;r=j;return}default:{r=j;return}}}function lg(a,b,c){a=a|0;b=b|0;c=c|0;var d=0,e=0,f=0,g=0,h=0,j=0,l=0,m=0,n=0;l=r;r=r+16|0;g=l;h=a+4|0;k[h>>2]=0;if(!b){r=l;return}j=a+8|0;d=k[j>>2]|0;if(d<<5>>>0>>0){k[g>>2]=0;e=g+4|0;k[e>>2]=0;f=g+8|0;k[f>>2]=0;if((b|0)<0)hm(a);m=d<<6;n=b+31&-32;Xg(g,d<<5>>>0<1073741823?(m>>>0>>0?n:m):2147483647);d=k[a>>2]|0;k[a>>2]=k[g>>2];k[g>>2]=d;g=k[h>>2]|0;k[h>>2]=b;k[e>>2]=g;h=k[j>>2]|0;k[j>>2]=k[f>>2];k[f>>2]=h;if(d|0)cn(d)}else k[h>>2]=b;a=k[a>>2]|0;e=a;f=b>>>5;d=f<<2;if(!(i[c>>0]|0)){Vi(a|0,0,d|0)|0;d=b-(f<<5)|0;a=e+(f<<2)|0;if(!d){r=l;return}k[a>>2]=k[a>>2]&~(-1>>>(32-d|0));r=l;return}else{Vi(a|0,-1,d|0)|0;d=b-(f<<5)|0;a=e+(f<<2)|0;if(!d){r=l;return}k[a>>2]=k[a>>2]|-1>>>(32-d|0);r=l;return}}function mg(a){a=a|0;var b=0,c=0,d=0,e=0,f=0,g=0,h=0;b=k[a+140>>2]|0;c=b;if(b|0){d=a+144|0;e=k[d>>2]|0;if((e|0)!=(b|0))k[d>>2]=e+(~((e+-4-c|0)>>>2)<<2);cn(b)}g=a+128|0;b=k[g>>2]|0;if(b|0){h=a+132|0;c=k[h>>2]|0;if((c|0)!=(b|0)){do{d=c+-12|0;k[h>>2]=d;e=k[d>>2]|0;f=e;if(!e)c=d;else{c=c+-8|0;d=k[c>>2]|0;if((d|0)!=(e|0))k[c>>2]=d+(~((d+-4-f|0)>>>2)<<2);cn(e);c=k[h>>2]|0}}while((c|0)!=(b|0));b=k[g>>2]|0}cn(b)}b=k[a+100>>2]|0;c=b;if(b|0){d=a+104|0;e=k[d>>2]|0;if((e|0)!=(b|0))k[d>>2]=e+(~((e+-4-c|0)>>>2)<<2);cn(b)}h=a+80|0;c=k[h>>2]|0;k[h>>2]=0;if(!c){h=a+64|0;fn(h);a=a+24|0;fn(a);return}d=c+-4|0;b=k[d>>2]|0;if(b|0){b=c+(b<<4)|0;do{b=b+-16|0;fn(b)}while((b|0)!=(c|0))}an(d);h=a+64|0;fn(h);a=a+24|0;fn(a);return}function ng(a,b){a=a|0;b=b|0;var c=0,d=0,e=0,f=0,g=0,h=0,j=0;d=b+8|0;j=d;g=k[j>>2]|0;j=k[j+4>>2]|0;e=b+16|0;f=e;c=k[f>>2]|0;f=sl(c|0,k[f+4>>2]|0,4,0)|0;h=M;if((j|0)<(h|0)|(j|0)==(h|0)&g>>>0>>0){j=0;return j|0}j=a+12|0;g=(k[b>>2]|0)+c|0;g=l[g>>0]|l[g+1>>0]<<8|l[g+2>>0]<<16|l[g+3>>0]<<24;i[j>>0]=g;i[j+1>>0]=g>>8;i[j+2>>0]=g>>16;i[j+3>>0]=g>>24;j=e;g=k[j>>2]|0;j=k[j+4>>2]|0;c=sl(g|0,j|0,4,0)|0;f=e;k[f>>2]=c;k[f+4>>2]=M;f=d;h=k[f>>2]|0;f=k[f+4>>2]|0;j=sl(g|0,j|0,8,0)|0;g=M;if((f|0)<(g|0)|(f|0)==(g|0)&h>>>0>>0){j=0;return j|0}h=a+16|0;j=(k[b>>2]|0)+c|0;j=l[j>>0]|l[j+1>>0]<<8|l[j+2>>0]<<16|l[j+3>>0]<<24;i[h>>0]=j;i[h+1>>0]=j>>8;i[h+2>>0]=j>>16;i[h+3>>0]=j>>24;h=e;h=sl(k[h>>2]|0,k[h+4>>2]|0,4,0)|0;j=e;k[j>>2]=h;k[j+4>>2]=M;j=1;return j|0}function og(a,b,c){a=a|0;b=b|0;c=c|0;var d=0,e=0,f=0,g=0,h=0,i=0;i=r;r=r+16|0;h=i;g=k[c>>2]|0;k[c>>2]=0;k[h>>2]=g;eg(a,b,h);g=k[h>>2]|0;k[h>>2]=0;if(g|0){f=k[g+68>>2]|0;c=f;if(f|0){d=g+72|0;e=k[d>>2]|0;if((e|0)!=(f|0))k[d>>2]=e+(~((e+-4-c|0)>>>2)<<2);cn(f)}h=g+64|0;c=k[h>>2]|0;k[h>>2]=0;if(c|0){d=k[c>>2]|0;if(d|0){e=c+4|0;if((k[e>>2]|0)!=(d|0))k[e>>2]=d;cn(d)}cn(c)}cn(g)}h=a+68|0;a=a+72|0;c=k[a>>2]|0;f=k[h>>2]|0;g=c-f>>2;if((g|0)>(b|0)){r=i;return}d=b+1|0;e=c;if(d>>>0>g>>>0){Eg(h,d-g|0);r=i;return}if(d>>>0>=g>>>0){r=i;return}c=f+(d<<2)|0;if((e|0)==(c|0)){r=i;return}k[a>>2]=e+(~((e+-4-c|0)>>>2)<<2);r=i;return}function pg(a,b,c){a=a|0;b=b|0;c=c|0;var d=0,e=0,f=0,g=0,h=0,j=0,l=0,m=0,n=0,o=0,p=0,q=0,s=0;s=r;r=r+224|0;m=s+120|0;o=s+80|0;p=s;q=s+136|0;d=o;e=d+40|0;do{k[d>>2]=0;d=d+4|0}while((d|0)<(e|0));k[m>>2]=k[c>>2];if((db(0,b,m,p,o)|0)<0)c=-1;else{if((k[a+76>>2]|0)>-1)n=gn(a)|0;else n=0;c=k[a>>2]|0;l=c&32;if((i[a+74>>0]|0)<1)k[a>>2]=c&-33;d=a+48|0;if(!(k[d>>2]|0)){e=a+44|0;f=k[e>>2]|0;k[e>>2]=q;g=a+28|0;k[g>>2]=q;h=a+20|0;k[h>>2]=q;k[d>>2]=80;j=a+16|0;k[j>>2]=q+80;c=db(a,b,m,p,o)|0;if(f){Ra[k[a+36>>2]&31](a,0,0)|0;c=(k[h>>2]|0)==0?-1:c;k[e>>2]=f;k[d>>2]=0;k[j>>2]=0;k[g>>2]=0;k[h>>2]=0}}else c=db(a,b,m,p,o)|0;d=k[a>>2]|0;k[a>>2]=d|l;if(n|0)fn(a);c=(d&32|0)==0?c:-1}r=s;return c|0}function qg(a,b,c){a=a|0;b=b|0;c=c|0;var d=0,e=0,f=0,g=0,h=0,i=0,j=0;f=a+4|0;d=k[f>>2]|0;h=k[a>>2]|0;g=d-h>>2;if(g>>>0>=1048576){if((g|0)!=1048576?(e=h+4194304|0,(d|0)!=(e|0)):0)k[f>>2]=d+(~((d+-4-e|0)>>>2)<<2)}else jh(a,1048576-g|0);d=a+12|0;e=a+16|0;h=k[e>>2]|0;g=k[d>>2]|0;f=h-g>>3;if(f>>>0>=c>>>0){if(f>>>0>c>>>0?(i=g+(c<<3)|0,(h|0)!=(i|0)):0)k[e>>2]=h+(~((h+-8-i|0)>>>3)<<3)}else wg(d,c-f|0);if(!c){j=0;return j|0}g=k[d>>2]|0;e=0;f=0;do{i=b+(e<<2)|0;k[g+(e<<3)>>2]=k[i>>2];k[g+(e<<3)+4>>2]=f;d=f;f=(k[i>>2]|0)+f|0;if(f>>>0>1048576){d=0;j=19;break}if(d>>>0>>0){h=k[a>>2]|0;do{k[h+(d<<2)>>2]=e;d=d+1|0}while((d|0)!=(f|0))}e=e+1|0}while(e>>>0>>0);if((j|0)==19)return d|0;j=(f|0)==1048576;return j|0}function rg(a,b,c){a=a|0;b=b|0;c=c|0;var d=0,e=0,f=0,g=0,h=0,i=0,j=0;f=a+4|0;d=k[f>>2]|0;h=k[a>>2]|0;g=d-h>>2;if(g>>>0>=524288){if((g|0)!=524288?(e=h+2097152|0,(d|0)!=(e|0)):0)k[f>>2]=d+(~((d+-4-e|0)>>>2)<<2)}else jh(a,524288-g|0);d=a+12|0;e=a+16|0;h=k[e>>2]|0;g=k[d>>2]|0;f=h-g>>3;if(f>>>0>=c>>>0){if(f>>>0>c>>>0?(i=g+(c<<3)|0,(h|0)!=(i|0)):0)k[e>>2]=h+(~((h+-8-i|0)>>>3)<<3)}else wg(d,c-f|0);if(!c){j=0;return j|0}g=k[d>>2]|0;e=0;f=0;do{i=b+(e<<2)|0;k[g+(e<<3)>>2]=k[i>>2];k[g+(e<<3)+4>>2]=f;d=f;f=(k[i>>2]|0)+f|0;if(f>>>0>524288){d=0;j=19;break}if(d>>>0>>0){h=k[a>>2]|0;do{k[h+(d<<2)>>2]=e;d=d+1|0}while((d|0)!=(f|0))}e=e+1|0}while(e>>>0>>0);if((j|0)==19)return d|0;j=(f|0)==524288;return j|0}function sg(a,b,c){a=a|0;b=b|0;c=c|0;var d=0,e=0,f=0,g=0,h=0,i=0,j=0;f=a+4|0;d=k[f>>2]|0;h=k[a>>2]|0;g=d-h>>2;if(g>>>0>=262144){if((g|0)!=262144?(e=h+1048576|0,(d|0)!=(e|0)):0)k[f>>2]=d+(~((d+-4-e|0)>>>2)<<2)}else jh(a,262144-g|0);d=a+12|0;e=a+16|0;h=k[e>>2]|0;g=k[d>>2]|0;f=h-g>>3;if(f>>>0>=c>>>0){if(f>>>0>c>>>0?(i=g+(c<<3)|0,(h|0)!=(i|0)):0)k[e>>2]=h+(~((h+-8-i|0)>>>3)<<3)}else wg(d,c-f|0);if(!c){j=0;return j|0}g=k[d>>2]|0;e=0;f=0;do{i=b+(e<<2)|0;k[g+(e<<3)>>2]=k[i>>2];k[g+(e<<3)+4>>2]=f;d=f;f=(k[i>>2]|0)+f|0;if(f>>>0>262144){d=0;j=19;break}if(d>>>0>>0){h=k[a>>2]|0;do{k[h+(d<<2)>>2]=e;d=d+1|0}while((d|0)!=(f|0))}e=e+1|0}while(e>>>0>>0);if((j|0)==19)return d|0;j=(f|0)==262144;return j|0}function tg(a,b,c,d){a=a|0;b=b|0;c=c|0;d=d|0;var e=0,f=0,g=0,h=0,l=0,m=0,n=0,o=0,p=0,q=0;q=r;r=r+64|0;o=q;n=k[a>>2]|0;p=a+(k[n+-8>>2]|0)|0;n=k[n+-4>>2]|0;k[o>>2]=c;k[o+4>>2]=a;k[o+8>>2]=b;k[o+12>>2]=d;a=o+16|0;b=o+20|0;d=o+24|0;e=o+28|0;f=o+32|0;g=o+40|0;h=(n|0)==(c|0);l=a;m=l+36|0;do{k[l>>2]=0;l=l+4|0}while((l|0)<(m|0));j[a+36>>1]=0;i[a+38>>0]=0;a:do if(h){k[o+48>>2]=1;Ya[k[(k[c>>2]|0)+20>>2]&3](c,o,p,p,1,0);a=(k[d>>2]|0)==1?p:0}else{Sa[k[(k[n>>2]|0)+24>>2]&3](n,o,p,1,0);switch(k[o+36>>2]|0){case 0:{a=(k[g>>2]|0)==1&(k[e>>2]|0)==1&(k[f>>2]|0)==1?k[b>>2]|0:0;break a}case 1:break;default:{a=0;break a}}if((k[d>>2]|0)!=1?!((k[g>>2]|0)==0&(k[e>>2]|0)==1&(k[f>>2]|0)==1):0){a=0;break}a=k[a>>2]|0}while(0);r=q;return a|0}function ug(a,b,c){a=a|0;b=b|0;c=c|0;var d=0,e=0,f=0,g=0,h=0,i=0,j=0;f=a+4|0;d=k[f>>2]|0;h=k[a>>2]|0;g=d-h>>2;if(g>>>0>=65536){if((g|0)!=65536?(e=h+262144|0,(d|0)!=(e|0)):0)k[f>>2]=d+(~((d+-4-e|0)>>>2)<<2)}else jh(a,65536-g|0);d=a+12|0;e=a+16|0;h=k[e>>2]|0;g=k[d>>2]|0;f=h-g>>3;if(f>>>0>=c>>>0){if(f>>>0>c>>>0?(i=g+(c<<3)|0,(h|0)!=(i|0)):0)k[e>>2]=h+(~((h+-8-i|0)>>>3)<<3)}else wg(d,c-f|0);if(!c){j=0;return j|0}g=k[d>>2]|0;e=0;f=0;do{i=b+(e<<2)|0;k[g+(e<<3)>>2]=k[i>>2];k[g+(e<<3)+4>>2]=f;d=f;f=(k[i>>2]|0)+f|0;if(f>>>0>65536){d=0;j=19;break}if(d>>>0>>0){h=k[a>>2]|0;do{k[h+(d<<2)>>2]=e;d=d+1|0}while((d|0)!=(f|0))}e=e+1|0}while(e>>>0>>0);if((j|0)==19)return d|0;j=(f|0)==65536;return j|0}function vg(a,b,c){a=a|0;b=b|0;c=c|0;var d=0,e=0,f=0,g=0,h=0,i=0,j=0;f=a+4|0;d=k[f>>2]|0;h=k[a>>2]|0;g=d-h>>2;if(g>>>0>=32768){if((g|0)!=32768?(e=h+131072|0,(d|0)!=(e|0)):0)k[f>>2]=d+(~((d+-4-e|0)>>>2)<<2)}else jh(a,32768-g|0);d=a+12|0;e=a+16|0;h=k[e>>2]|0;g=k[d>>2]|0;f=h-g>>3;if(f>>>0>=c>>>0){if(f>>>0>c>>>0?(i=g+(c<<3)|0,(h|0)!=(i|0)):0)k[e>>2]=h+(~((h+-8-i|0)>>>3)<<3)}else wg(d,c-f|0);if(!c){j=0;return j|0}g=k[d>>2]|0;e=0;f=0;do{i=b+(e<<2)|0;k[g+(e<<3)>>2]=k[i>>2];k[g+(e<<3)+4>>2]=f;d=f;f=(k[i>>2]|0)+f|0;if(f>>>0>32768){d=0;j=19;break}if(d>>>0>>0){h=k[a>>2]|0;do{k[h+(d<<2)>>2]=e;d=d+1|0}while((d|0)!=(f|0))}e=e+1|0}while(e>>>0>>0);if((j|0)==19)return d|0;j=(f|0)==32768;return j|0}function wg(a,b){a=a|0;b=b|0;var c=0,d=0,e=0,f=0,g=0,h=0,i=0;h=a+8|0;e=k[h>>2]|0;i=a+4|0;c=k[i>>2]|0;if(e-c>>3>>>0>=b>>>0){do{h=c;k[h>>2]=0;k[h+4>>2]=0;c=(k[i>>2]|0)+8|0;k[i>>2]=c;b=b+-1|0}while((b|0)!=0);return}f=k[a>>2]|0;d=(c-f>>3)+b|0;if(d>>>0>536870911)hm(a);g=e-f|0;e=g>>2;e=g>>3>>>0<268435455?(e>>>0>>0?d:e):536870911;c=c-f>>3;do if(e)if(e>>>0>536870911){i=Ma(4)|0;Om(i);xa(i|0,1024,93)}else{d=xk(e<<3)|0;break}else d=0;while(0);g=d+(c<<3)|0;f=d+(e<<3)|0;c=g;e=g;do{d=c;k[d>>2]=0;k[d+4>>2]=0;c=e+8|0;e=c;b=b+-1|0}while((b|0)!=0);b=k[a>>2]|0;d=(k[i>>2]|0)-b|0;c=g+(0-(d>>3)<<3)|0;if((d|0)>0)Ii(c|0,b|0,d|0)|0;k[a>>2]=c;k[i>>2]=e;k[h>>2]=f;if(!b)return;cn(b);return}function xg(a,b){a=a|0;b=b|0;var c=0,d=0,e=0,f=0,g=0,h=0,i=0,j=0,l=0,m=0;l=a+4|0;d=k[l>>2]|0;m=k[a>>2]|0;c=((d-m|0)/12|0)+1|0;if(c>>>0>357913941)hm(a);i=m;g=d;j=a+8|0;h=((k[j>>2]|0)-m|0)/12|0;e=h<<1;e=h>>>0<178956970?(e>>>0>>0?c:e):357913941;d=(d-m|0)/12|0;do if(e)if(e>>>0>357913941){m=Ma(4)|0;Om(m);xa(m|0,1024,93)}else{f=xk(e*12|0)|0;break}else f=0;while(0);c=f+(d*12|0)|0;h=f+(e*12|0)|0;k[c>>2]=k[b>>2];k[f+(d*12|0)+4>>2]=k[b+4>>2];k[f+(d*12|0)+8>>2]=k[b+8>>2];e=c+12|0;if((g|0)!=(i|0)){d=g;do{g=d;d=d+-12|0;k[c+-12>>2]=k[d>>2];k[c+-8>>2]=k[g+-8>>2];k[c+-4>>2]=k[g+-4>>2];c=c+-12|0}while((d|0)!=(i|0))}k[a>>2]=c;k[l>>2]=e;k[j>>2]=h;if(!m)return;cn(m);return}function yg(a,b,c){a=a|0;b=b|0;c=c|0;var d=0,e=0,f=0,g=0,h=0,i=0,j=0;f=a+4|0;d=k[f>>2]|0;h=k[a>>2]|0;g=d-h>>2;if(g>>>0>=8192){if((g|0)!=8192?(e=h+32768|0,(d|0)!=(e|0)):0)k[f>>2]=d+(~((d+-4-e|0)>>>2)<<2)}else jh(a,8192-g|0);d=a+12|0;e=a+16|0;h=k[e>>2]|0;g=k[d>>2]|0;f=h-g>>3;if(f>>>0>=c>>>0){if(f>>>0>c>>>0?(i=g+(c<<3)|0,(h|0)!=(i|0)):0)k[e>>2]=h+(~((h+-8-i|0)>>>3)<<3)}else wg(d,c-f|0);if(!c){j=0;return j|0}g=k[d>>2]|0;e=0;f=0;do{i=b+(e<<2)|0;k[g+(e<<3)>>2]=k[i>>2];k[g+(e<<3)+4>>2]=f;d=f;f=(k[i>>2]|0)+f|0;if(f>>>0>8192){d=0;j=19;break}if(d>>>0>>0){h=k[a>>2]|0;do{k[h+(d<<2)>>2]=e;d=d+1|0}while((d|0)!=(f|0))}e=e+1|0}while(e>>>0>>0);if((j|0)==19)return d|0;j=(f|0)==8192;return j|0}function zg(a,b,c){a=a|0;b=b|0;c=c|0;var d=0,e=0,f=0,g=0,h=0,i=0,j=0;f=a+4|0;d=k[f>>2]|0;h=k[a>>2]|0;g=d-h>>2;if(g>>>0>=4096){if((g|0)!=4096?(e=h+16384|0,(d|0)!=(e|0)):0)k[f>>2]=d+(~((d+-4-e|0)>>>2)<<2)}else jh(a,4096-g|0);d=a+12|0;e=a+16|0;h=k[e>>2]|0;g=k[d>>2]|0;f=h-g>>3;if(f>>>0>=c>>>0){if(f>>>0>c>>>0?(i=g+(c<<3)|0,(h|0)!=(i|0)):0)k[e>>2]=h+(~((h+-8-i|0)>>>3)<<3)}else wg(d,c-f|0);if(!c){j=0;return j|0}g=k[d>>2]|0;e=0;f=0;do{i=b+(e<<2)|0;k[g+(e<<3)>>2]=k[i>>2];k[g+(e<<3)+4>>2]=f;d=f;f=(k[i>>2]|0)+f|0;if(f>>>0>4096){d=0;j=19;break}if(d>>>0>>0){h=k[a>>2]|0;do{k[h+(d<<2)>>2]=e;d=d+1|0}while((d|0)!=(f|0))}e=e+1|0}while(e>>>0>>0);if((j|0)==19)return d|0;j=(f|0)==4096;return j|0}function Ag(a,b,c){a=a|0;b=b|0;c=c|0;var d=0,e=0,f=0,g=0,h=0,i=0,j=0,l=0;j=a+8|0;e=k[j>>2]|0;l=a+4|0;h=k[l>>2]|0;f=h;if(e-h>>2>>>0>=b>>>0){d=b;e=f;while(1){k[e>>2]=k[c>>2];d=d+-1|0;if(!d)break;else e=e+4|0}k[l>>2]=f+(b<<2);return}i=k[a>>2]|0;d=(h-i>>2)+b|0;if(d>>>0>1073741823)hm(a);g=e-i|0;e=g>>1;e=g>>2>>>0<536870911?(e>>>0>>0?d:e):1073741823;d=h-i>>2;do if(e)if(e>>>0>1073741823){l=Ma(4)|0;Om(l);xa(l|0,1024,93)}else{f=xk(e<<2)|0;break}else f=0;while(0);g=f+(d<<2)|0;f=f+(e<<2)|0;d=b;e=g;while(1){k[e>>2]=k[c>>2];d=d+-1|0;if(!d)break;else e=e+4|0}d=h-i|0;e=g+(0-(d>>2)<<2)|0;if((d|0)>0)Ii(e|0,i|0,d|0)|0;k[a>>2]=e;k[l>>2]=g+(b<<2);k[j>>2]=f;if(!i)return;cn(i);return}function Bg(a,b){a=a|0;b=b|0;var c=0,d=0,e=Pa;if((b|0)!=1){if(b+-1&b)b=eb(b)|0}else b=2;d=k[a+4>>2]|0;if(b>>>0>d>>>0){Dd(a,b);return}if(b>>>0>=d>>>0)return;e=da((k[a+12>>2]|0)>>>0);c=~~da(_(da(e/da(o[a+20>>2]))))>>>0;if(d>>>0>2&(d+-1&d|0)==0)c=1<<32-(ca(c+-1|0)|0);else c=eb(c)|0;b=b>>>0>>0?c:b;if(b>>>0>=d>>>0)return;Dd(a,b);return}function Cg(a,b,c,d){a=a|0;b=b|0;c=c|0;d=d|0;var e=0,f=0,g=0;f=k[c+4>>2]|0;if((b|0)<=-1)Ka(13387,13403,54,13431);e=k[f+4>>2]|0;if(((k[f+8>>2]|0)-e>>2|0)<=(b|0))Ka(13441,13403,55,13431);e=k[e+(b<<2)>>2]|0;if((Va[k[(k[c>>2]|0)+8>>2]&127](c)|0)==1?(g=ff(c,a,b,d,Nm(j[c+24>>1]|0)|0)|0,g|0):0){d=g;return d|0}if((a|0)==-2){d=0;return d|0}g=xk(44)|0;k[g>>2]=3456;k[g+4>>2]=e;k[g+8>>2]=k[d>>2];c=g+12|0;b=d+4|0;k[c>>2]=k[b>>2];k[c+4>>2]=k[b+4>>2];k[c+8>>2]=k[b+8>>2];k[c+12>>2]=k[b+12>>2];k[c+16>>2]=k[b+16>>2];li(g+32|0,d+24|0);k[g>>2]=3520;d=g;return d|0}function Dg(a){a=a|0;Lm(a);Lm(a+16|0);Lm(a+32|0);Lm(a+48|0);Lm(a+64|0);Lm(a+80|0);Lm(a+96|0);Lm(a+112|0);Lm(a+128|0);Lm(a+144|0);Lm(a+160|0);Lm(a+176|0);Lm(a+192|0);Lm(a+208|0);Lm(a+224|0);Lm(a+240|0);Lm(a+256|0);Lm(a+272|0);Lm(a+288|0);Lm(a+304|0);Lm(a+320|0);Lm(a+336|0);Lm(a+352|0);Lm(a+368|0);Lm(a+384|0);Lm(a+400|0);Lm(a+416|0);Lm(a+432|0);Lm(a+448|0);Lm(a+464|0);Lm(a+480|0);Lm(a+496|0);return}function Eg(a,b){a=a|0;b=b|0;var c=0,d=0,e=0,f=0,g=0,h=0,i=0,j=0;i=a+8|0;d=k[i>>2]|0;j=a+4|0;g=k[j>>2]|0;e=g;if(d-g>>2>>>0>=b>>>0){c=b;d=e;while(1){k[d>>2]=1;c=c+-1|0;if(!c)break;else d=d+4|0}k[j>>2]=e+(b<<2);return}h=k[a>>2]|0;c=(g-h>>2)+b|0;if(c>>>0>1073741823)hm(a);f=d-h|0;d=f>>1;d=f>>2>>>0<536870911?(d>>>0>>0?c:d):1073741823;c=g-h>>2;do if(d)if(d>>>0>1073741823){j=Ma(4)|0;Om(j);xa(j|0,1024,93)}else{e=xk(d<<2)|0;break}else e=0;while(0);f=e+(c<<2)|0;e=e+(d<<2)|0;c=b;d=f;while(1){k[d>>2]=1;c=c+-1|0;if(!c)break;else d=d+4|0}c=g-h|0;d=f+(0-(c>>2)<<2)|0;if((c|0)>0)Ii(d|0,h|0,c|0)|0;k[a>>2]=d;k[j>>2]=f+(b<<2);k[i>>2]=e;if(!h)return;cn(h);return}function Fg(a,b){a=a|0;b=b|0;var c=0,d=0,e=0,f=0,g=0,h=0,i=0,j=0,m=0;m=r;r=r+16|0;i=m;if(!(Vd(a,b)|0)){j=0;r=m;return j|0}g=b+8|0;h=k[g>>2]|0;g=k[g+4>>2]|0;c=b+16|0;e=c;d=k[e>>2]|0;e=sl(d|0,k[e+4>>2]|0,4,0)|0;f=M;if((g|0)<(f|0)|(g|0)==(f|0)&h>>>0>>0){j=0;r=m;return j|0}h=(k[b>>2]|0)+d|0;h=l[h>>0]|l[h+1>>0]<<8|l[h+2>>0]<<16|l[h+3>>0]<<24;d=c;k[d>>2]=e;k[d+4>>2]=f;d=a+96|0;c=(k[d>>2]|0)+h|0;k[d>>2]=c;d=a+100|0;k[i>>2]=0;e=a+104|0;h=k[e>>2]|0;g=k[d>>2]|0;f=h-g>>2;if(c>>>0<=f>>>0){if(c>>>0>>0?(j=g+(c<<2)|0,(h|0)!=(j|0)):0)k[e>>2]=h+(~((h+-4-j|0)>>>2)<<2)}else Ag(d,c-f|0,i);j=Ye(a+112|0,b)|0;r=m;return j|0}function Gg(a,b){a=a|0;b=b|0;var c=0,d=0,e=Pa;if((b|0)!=1){if(b+-1&b)b=eb(b)|0}else b=2;d=k[a+4>>2]|0;if(b>>>0>d>>>0){Pc(a,b);return}if(b>>>0>=d>>>0)return;e=da((k[a+12>>2]|0)>>>0);c=~~da(_(da(e/da(o[a+16>>2]))))>>>0;if(d>>>0>2&(d+-1&d|0)==0)c=1<<32-(ca(c+-1|0)|0);else c=eb(c)|0;b=b>>>0>>0?c:b;if(b>>>0>=d>>>0)return;Pc(a,b);return}function Hg(a,b){a=a|0;b=b|0;var c=0,d=0,e=Pa;if((b|0)!=1){if(b+-1&b)b=eb(b)|0}else b=2;d=k[a+4>>2]|0;if(b>>>0>d>>>0){ed(a,b);return}if(b>>>0>=d>>>0)return;e=da((k[a+12>>2]|0)>>>0);c=~~da(_(da(e/da(o[a+16>>2]))))>>>0;if(d>>>0>2&(d+-1&d|0)==0)c=1<<32-(ca(c+-1|0)|0);else c=eb(c)|0;b=b>>>0>>0?c:b;if(b>>>0>=d>>>0)return;ed(a,b);return}function Ig(a,b){a=a|0;b=b|0;var c=0,d=0,e=Pa;if((b|0)!=1){if(b+-1&b)b=eb(b)|0}else b=2;d=k[a+4>>2]|0;if(b>>>0>d>>>0){qd(a,b);return}if(b>>>0>=d>>>0)return;e=da((k[a+12>>2]|0)>>>0);c=~~da(_(da(e/da(o[a+16>>2]))))>>>0;if(d>>>0>2&(d+-1&d|0)==0)c=1<<32-(ca(c+-1|0)|0);else c=eb(c)|0;b=b>>>0>>0?c:b;if(b>>>0>=d>>>0)return;qd(a,b);return}function Jg(a,b){a=a|0;b=b|0;var c=0,d=0,e=Pa;if((b|0)!=1){if(b+-1&b)b=eb(b)|0}else b=2;d=k[a+4>>2]|0;if(b>>>0>d>>>0){Nd(a,b);return}if(b>>>0>=d>>>0)return;e=da((k[a+12>>2]|0)>>>0);c=~~da(_(da(e/da(o[a+16>>2]))))>>>0;if(d>>>0>2&(d+-1&d|0)==0)c=1<<32-(ca(c+-1|0)|0);else c=eb(c)|0;b=b>>>0>>0?c:b;if(b>>>0>=d>>>0)return;Nd(a,b);return}function Kg(a,b){a=a|0;b=b|0;var c=0,d=0,e=Pa;if((b|0)!=1){if(b+-1&b)b=eb(b)|0}else b=2;d=k[a+4>>2]|0;if(b>>>0>d>>>0){Qc(a,b);return}if(b>>>0>=d>>>0)return;e=da((k[a+12>>2]|0)>>>0);c=~~da(_(da(e/da(o[a+16>>2]))))>>>0;if(d>>>0>2&(d+-1&d|0)==0)c=1<<32-(ca(c+-1|0)|0);else c=eb(c)|0;b=b>>>0>>0?c:b;if(b>>>0>=d>>>0)return;Qc(a,b);return}function Lg(a,b){a=a|0;b=b|0;var c=0,d=0,e=Pa;if((b|0)!=1){if(b+-1&b)b=eb(b)|0}else b=2;d=k[a+4>>2]|0;if(b>>>0>d>>>0){fd(a,b);return}if(b>>>0>=d>>>0)return;e=da((k[a+12>>2]|0)>>>0);c=~~da(_(da(e/da(o[a+16>>2]))))>>>0;if(d>>>0>2&(d+-1&d|0)==0)c=1<<32-(ca(c+-1|0)|0);else c=eb(c)|0;b=b>>>0>>0?c:b;if(b>>>0>=d>>>0)return;fd(a,b);return}function Mg(a,b){a=a|0;b=b|0;var c=0,d=0,e=Pa;if((b|0)!=1){if(b+-1&b)b=eb(b)|0}else b=2;d=k[a+4>>2]|0;if(b>>>0>d>>>0){rd(a,b);return}if(b>>>0>=d>>>0)return;e=da((k[a+12>>2]|0)>>>0);c=~~da(_(da(e/da(o[a+16>>2]))))>>>0;if(d>>>0>2&(d+-1&d|0)==0)c=1<<32-(ca(c+-1|0)|0);else c=eb(c)|0;b=b>>>0>>0?c:b;if(b>>>0>=d>>>0)return;rd(a,b);return}function Ng(a,b){a=a|0;b=b|0;var c=0,d=0,e=Pa;if((b|0)!=1){if(b+-1&b)b=eb(b)|0}else b=2;d=k[a+4>>2]|0;if(b>>>0>d>>>0){Rc(a,b);return}if(b>>>0>=d>>>0)return;e=da((k[a+12>>2]|0)>>>0);c=~~da(_(da(e/da(o[a+16>>2]))))>>>0;if(d>>>0>2&(d+-1&d|0)==0)c=1<<32-(ca(c+-1|0)|0);else c=eb(c)|0;b=b>>>0>>0?c:b;if(b>>>0>=d>>>0)return;Rc(a,b);return}function Og(a,b){a=a|0;b=b|0;var c=0,d=0,e=Pa;if((b|0)!=1){if(b+-1&b)b=eb(b)|0}else b=2;d=k[a+4>>2]|0;if(b>>>0>d>>>0){gd(a,b);return}if(b>>>0>=d>>>0)return;e=da((k[a+12>>2]|0)>>>0);c=~~da(_(da(e/da(o[a+16>>2]))))>>>0;if(d>>>0>2&(d+-1&d|0)==0)c=1<<32-(ca(c+-1|0)|0);else c=eb(c)|0;b=b>>>0>>0?c:b;if(b>>>0>=d>>>0)return;gd(a,b);return}function Pg(a,b){a=a|0;b=b|0;var c=0,d=0,e=Pa;if((b|0)!=1){if(b+-1&b)b=eb(b)|0}else b=2;d=k[a+4>>2]|0;if(b>>>0>d>>>0){sd(a,b);return}if(b>>>0>=d>>>0)return;e=da((k[a+12>>2]|0)>>>0);c=~~da(_(da(e/da(o[a+16>>2]))))>>>0;if(d>>>0>2&(d+-1&d|0)==0)c=1<<32-(ca(c+-1|0)|0);else c=eb(c)|0;b=b>>>0>>0?c:b;if(b>>>0>=d>>>0)return;sd(a,b);return}function Qg(a,b){a=a|0;b=b|0;var c=0,d=0,e=Pa;if((b|0)!=1){if(b+-1&b)b=eb(b)|0}else b=2;d=k[a+4>>2]|0;if(b>>>0>d>>>0){Od(a,b);return}if(b>>>0>=d>>>0)return;e=da((k[a+12>>2]|0)>>>0);c=~~da(_(da(e/da(o[a+16>>2]))))>>>0;if(d>>>0>2&(d+-1&d|0)==0)c=1<<32-(ca(c+-1|0)|0);else c=eb(c)|0;b=b>>>0>>0?c:b;if(b>>>0>=d>>>0)return;Od(a,b);return}function Rg(a,b){a=a|0;b=b|0;var c=0,d=0,e=0,f=0,g=0;g=a+4|0;e=k[g>>2]|0;c=k[a>>2]|0;d=(e-c|0)/116|0;if(d>>>0>>0){Fe(a,b-d|0);return}if(d>>>0<=b>>>0)return;f=c+(b*116|0)|0;if((e|0)==(f|0))return;do{k[g>>2]=e+-116;a=k[e+-12>>2]|0;b=a;if(a|0){c=e+-8|0;d=k[c>>2]|0;if((d|0)!=(a|0))k[c>>2]=d+(~((d+-4-b|0)>>>2)<<2);cn(a)}a=k[e+-28>>2]|0;b=a;if(a|0){c=e+-24|0;d=k[c>>2]|0;if((d|0)!=(a|0))k[c>>2]=d+(~((d+-4-b|0)>>>2)<<2);cn(a)}a=k[e+-40>>2]|0;b=a;if(a|0){c=e+-36|0;d=k[c>>2]|0;if((d|0)!=(a|0))k[c>>2]=d+(~((d+-4-b|0)>>>2)<<2);cn(a)}Sh(e+-112|0);e=k[g>>2]|0}while((e|0)!=(f|0));return}function Sg(a,b,c,d,e){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;var f=0,g=0,h=0,i=0,j=0,l=0,m=0,n=0;n=r;r=r+32|0;i=n+16|0;j=n+8|0;l=n;m=k[b>>2]|0;h=k[a+8>>2]<<1;if((m|0)>(h|0))Ka(8745,8780,111,8886);f=k[b+4>>2]|0;if((f|0)>(h|0))Ka(8907,8780,112,8886);g=k[c+(e<<2)>>2]|0;if((g|0)>(h|0))Ka(8942,8780,113,8886);b=k[c+(e+1<<2)>>2]|0;if((b|0)>(h|0))Ka(8982,8780,114,8886);if((m|0)<=-1)Ka(9026,8780,116,8886);if((f|0)<=-1)Ka(9048,8780,117,8886);if((g|0)<=-1)Ka(9070,8780,118,8886);if((b|0)>-1){k[j>>2]=m;k[j+4>>2]=f;k[l>>2]=g;k[l+4>>2]=b;pd(i,a,j,l);k[d>>2]=k[i>>2];k[d+4>>2]=k[i+4>>2];r=n;return}else Ka(9097,8780,119,8886)}function Tg(a,b){a=a|0;b=b|0;var c=0,d=0,e=Pa,f=0,g=0,h=0,j=0,l=0,m=0,n=0,o=0,p=0;p=r;r=r+16|0;m=p;n=a+8|0;j=i[(k[n>>2]|0)+24>>0]<<2;if(!b){r=p;return 1}o=a+16|0;l=a+20|0;e=da(da((1<>2])+-1|0)+da(-1.0));a=0;c=0;d=0;while(1){f=d|1;g=k[l>>2]|0;h=k[o>>2]|0;if(g-h>>2>>>0<=d>>>0){a=6;break}if(g-h>>2>>>0<=f>>>0){a=8;break}If(da(da(k[h+(d<<2)>>2]|0)/e),da(da(k[h+(f<<2)>>2]|0)/e),m);Ii((k[k[(k[n>>2]|0)+64>>2]>>2]|0)+a|0,m|0,j|0)|0;c=c+1|0;if((c|0)==(b|0)){a=3;break}else{a=a+j|0;d=d+2|0}}if((a|0)==3){r=p;return 1}else if((a|0)==6)gm(o);else if((a|0)==8)gm(o);return 0}function Ug(a,b,c,d,e){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;var f=0,g=0,h=0,i=0,j=0,l=0,m=0,n=0;n=r;r=r+32|0;i=n+16|0;j=n+8|0;l=n;m=k[b>>2]|0;h=k[a+8>>2]<<1;if((m|0)>(h|0))Ka(8745,11377,107,8886);f=k[b+4>>2]|0;if((f|0)>(h|0))Ka(8907,11377,108,8886);g=k[c+(e<<2)>>2]|0;if((g|0)>(h|0))Ka(8942,11377,109,8886);b=k[c+(e+1<<2)>>2]|0;if((b|0)>(h|0))Ka(8982,11377,110,8886);if((m|0)<=-1)Ka(9026,11377,112,8886);if((f|0)<=-1)Ka(9048,11377,113,8886);if((g|0)<=-1)Ka(9070,11377,114,8886);if((b|0)>-1){k[i>>2]=g;k[i+4>>2]=b;k[l>>2]=m;k[l+4>>2]=f;Be(j,a,l,i);k[d>>2]=k[j>>2];k[d+4>>2]=k[j+4>>2];r=n;return}else Ka(9097,11377,115,8886)}function Vg(a,b){a=a|0;b=b|0;var c=0,d=0,e=Pa;if((b|0)!=1){if(b+-1&b)b=eb(b)|0}else b=2;d=k[a+4>>2]|0;if(b>>>0>d>>>0){Rd(a,b);return}if(b>>>0>=d>>>0)return;e=da((k[a+12>>2]|0)>>>0);c=~~da(_(da(e/da(o[a+16>>2]))))>>>0;if(d>>>0>2&(d+-1&d|0)==0)c=1<<32-(ca(c+-1|0)|0);else c=eb(c)|0;b=b>>>0>>0?c:b;if(b>>>0>=d>>>0)return;Rd(a,b);return}function Wg(a,b,c){a=a|0;b=b|0;c=c|0;var d=0,e=0,f=0,g=0;f=b&255;d=(c|0)!=0;a:do if(d&(a&3|0)!=0){e=b&255;while(1){if((i[a>>0]|0)==e<<24>>24){g=6;break a}a=a+1|0;c=c+-1|0;d=(c|0)!=0;if(!(d&(a&3|0)!=0)){g=5;break}}}else g=5;while(0);if((g|0)==5)if(d)g=6;else c=0;b:do if((g|0)==6){e=b&255;if((i[a>>0]|0)!=e<<24>>24){d=$(f,16843009)|0;c:do if(c>>>0>3)while(1){f=k[a>>2]^d;if((f&-2139062144^-2139062144)&f+-16843009|0)break;a=a+4|0;c=c+-4|0;if(c>>>0<=3){g=11;break c}}else g=11;while(0);if((g|0)==11)if(!c){c=0;break}while(1){if((i[a>>0]|0)==e<<24>>24)break b;a=a+1|0;c=c+-1|0;if(!c){c=0;break}}}}while(0);return (c|0?a:0)|0}function Xg(a,b){a=a|0;b=b|0;var c=0,d=0,e=0,f=0,g=0,h=0,i=0,j=0,l=0;i=r;r=r+32|0;f=i+16|0;c=i+8|0;d=i;g=a+8|0;if(k[g>>2]<<5>>>0>=b>>>0){r=i;return}k[f>>2]=0;h=f+4|0;k[h>>2]=0;e=f+8|0;k[e>>2]=0;if((b|0)<0)hm(f);l=((b+-1|0)>>>5)+1|0;j=xk(l<<2)|0;k[f>>2]=j;k[h>>2]=0;k[e>>2]=l;l=k[a>>2]|0;k[c>>2]=l;k[c+4>>2]=0;j=a+4|0;b=k[j>>2]|0;k[d>>2]=l+(b>>>5<<2);k[d+4>>2]=b&31;Tf(f,c,d);b=k[a>>2]|0;k[a>>2]=k[f>>2];k[f>>2]=b;f=k[j>>2]|0;k[j>>2]=k[h>>2];k[h>>2]=f;h=k[g>>2]|0;k[g>>2]=k[e>>2];k[e>>2]=h;if(b|0)cn(b);r=i;return}function Yg(a,b,c){a=a|0;b=b|0;c=c|0;var d=0,e=0,f=0,g=0,h=0,i=0,j=0,l=0,m=0,n=0,o=0;i=(k[b+4>>2]|0)-(k[b>>2]|0)|0;l=i>>2;j=a+8|0;d=k[(k[j>>2]|0)+40>>2]|0;m=$m((d|0)>-1?d:-1)|0;e=c+8|0;if((i|0)<=0){c=1;an(m);return c|0}f=c+16|0;b=0;a=0;while(1){o=e;n=k[o>>2]|0;o=k[o+4>>2]|0;h=f;g=k[h>>2]|0;h=sl(g|0,k[h+4>>2]|0,d|0,0)|0;i=M;if((o|0)<(i|0)|(o|0)==(i|0)&n>>>0>>0){b=0;a=5;break}Ii(m|0,(k[c>>2]|0)+g|0,d|0)|0;o=f;k[o>>2]=h;k[o+4>>2]=i;Ii((k[k[(k[j>>2]|0)+64>>2]>>2]|0)+b|0,m|0,d|0)|0;a=a+1|0;if((a|0)>=(l|0)){b=1;a=5;break}else b=b+d|0}if((a|0)==5){an(m);return b|0}return 0}function Zg(a,b){a=a|0;b=b|0;var c=0,d=0,e=0,f=0,g=0,h=0,i=0;h=r;r=r+16|0;d=h;c=k[(k[a>>2]|0)+8>>2]|0;f=a+4|0;g=a+8|0;e=(k[g>>2]|0)-(k[f>>2]|0)>>2;i=k[b>>2]|0;k[b>>2]=0;k[d>>2]=i;Wa[c&7](a,e,d);e=k[d>>2]|0;k[d>>2]=0;if(!e){g=k[g>>2]|0;i=k[f>>2]|0;i=g-i|0;i=i>>2;i=i+-1|0;r=h;return i|0}a=k[e+68>>2]|0;b=a;if(a|0){c=e+72|0;d=k[c>>2]|0;if((d|0)!=(a|0))k[c>>2]=d+(~((d+-4-b|0)>>>2)<<2);cn(a)}i=e+64|0;a=k[i>>2]|0;k[i>>2]=0;if(a|0){b=k[a>>2]|0;if(b|0){c=a+4|0;if((k[c>>2]|0)!=(b|0))k[c>>2]=b;cn(b)}cn(a)}cn(e);g=k[g>>2]|0;i=k[f>>2]|0;i=g-i|0;i=i>>2;i=i+-1|0;r=h;return i|0}function _g(a,b,c,d){a=a|0;b=b|0;c=c|0;d=d|0;var e=0,f=0,g=0;f=k[c+4>>2]|0;if((b|0)<=-1)Ka(13387,13403,54,13431);e=k[f+4>>2]|0;if(((k[f+8>>2]|0)-e>>2|0)<=(b|0))Ka(13441,13403,55,13431);e=k[e+(b<<2)>>2]|0;if((Va[k[(k[c>>2]|0)+8>>2]&127](c)|0)==1?(g=xc(c,a,b,d,Nm(j[c+24>>1]|0)|0)|0,g|0):0){d=g;return d|0}if((a|0)==-2){d=0;return d|0}g=xk(20)|0;k[g+4>>2]=e;c=g+8|0;k[c>>2]=k[d>>2];k[c+4>>2]=k[d+4>>2];k[c+8>>2]=k[d+8>>2];k[g>>2]=4208;d=g;return d|0}function $g(a,b){a=a|0;b=b|0;var c=0,d=0,e=0,f=0,g=0,h=0;f=r;r=r+16|0;c=f+4|0;d=f;e=f+8|0;i[e>>0]=a&127;if(a>>>0>127){i[e>>0]=a|128;g=b+16|0;h=k[g+4>>2]|0;if(!((h|0)>0|(h|0)==0&(k[g>>2]|0)>>>0>0)){k[d>>2]=k[b+4>>2];k[c>>2]=k[d>>2];Ke(b,c,e,e+1|0)|0}$g(a>>>7,b);r=f;return}else{h=b+16|0;g=k[h+4>>2]|0;if(!((g|0)>0|(g|0)==0&(k[h>>2]|0)>>>0>0)){k[d>>2]=k[b+4>>2];k[c>>2]=k[d>>2];Ke(b,c,e,e+1|0)|0}r=f;return}}function ah(a,b,c,d){a=a|0;b=b|0;c=c|0;d=d|0;var e=0,f=0,g=0;f=k[c+4>>2]|0;if((b|0)<=-1)Ka(13387,13403,54,13431);e=k[f+4>>2]|0;if(((k[f+8>>2]|0)-e>>2|0)<=(b|0))Ka(13441,13403,55,13431);e=k[e+(b<<2)>>2]|0;if((Va[k[(k[c>>2]|0)+8>>2]&127](c)|0)==1?(g=yc(c,a,b,d,Nm(j[c+24>>1]|0)|0)|0,g|0):0){d=g;return d|0}if((a|0)==-2){d=0;return d|0}g=xk(20)|0;k[g+4>>2]=e;c=g+8|0;k[c>>2]=k[d>>2];k[c+4>>2]=k[d+4>>2];k[c+8>>2]=k[d+8>>2];k[g>>2]=4784;d=g;return d|0}function bh(a,b){a=a|0;b=b|0;var c=0,d=0,e=0,f=0;if((Va[k[(k[b>>2]|0)+20>>2]&127](b)|0)<=0){b=1;return b|0}f=a+4|0;a=0;while(1){c=k[(k[f>>2]|0)+4>>2]|0;c=Sj(c,Za[k[(k[b>>2]|0)+24>>2]&127](b,a)|0)|0;if((c|0)==-1){a=0;c=10;break}d=k[(k[f>>2]|0)+4>>2]|0;if((c|0)<=-1){c=6;break}e=k[d+4>>2]|0;if(((k[d+8>>2]|0)-e>>2|0)<=(c|0)){c=8;break}a=a+1|0;if(!(Za[k[(k[b>>2]|0)+28>>2]&127](b,k[e+(c<<2)>>2]|0)|0)){a=0;c=10;break}if((a|0)>=(Va[k[(k[b>>2]|0)+20>>2]&127](b)|0)){a=1;c=10;break}}if((c|0)==6)Ka(13387,13403,62,13431);else if((c|0)==8)Ka(13441,13403,63,13431);else if((c|0)==10)return a|0;return 0}function ch(a,b){a=a|0;b=b|0;var c=0,d=0,e=0,f=0,g=0;g=a+4|0;c=k[g>>2]|0;d=k[a>>2]|0;e=c-d>>2;if(e>>>0>>0){jf(a,b-e|0);return}if(e>>>0<=b>>>0)return;f=d+(b<<2)|0;if((c|0)==(f|0))return;do{d=c+-4|0;k[g>>2]=d;e=k[d>>2]|0;k[d>>2]=0;if(e|0){c=k[e+68>>2]|0;a=c;if(c|0){b=e+72|0;d=k[b>>2]|0;if((d|0)!=(c|0))k[b>>2]=d+(~((d+-4-a|0)>>>2)<<2);cn(c)}d=e+64|0;c=k[d>>2]|0;k[d>>2]=0;if(c|0){a=k[c>>2]|0;if(a|0){b=c+4|0;if((k[b>>2]|0)!=(a|0))k[b>>2]=a;cn(a)}cn(c)}cn(e)}c=k[g>>2]|0}while((c|0)!=(f|0));return}function dh(a,b){a=a|0;b=b|0;var c=0,d=0,e=0,f=0,g=0,h=0,i=0,j=0;h=a+4|0;e=k[h>>2]|0;i=k[a>>2]|0;c=((e-i|0)/12|0)+1|0;if(c>>>0>357913941)hm(a);j=a+8|0;g=((k[j>>2]|0)-i|0)/12|0;f=g<<1;f=g>>>0<178956970?(f>>>0>>0?c:f):357913941;c=(e-i|0)/12|0;do if(f)if(f>>>0>357913941){j=Ma(4)|0;Om(j);xa(j|0,1024,93)}else{g=xk(f*12|0)|0;break}else g=0;while(0);d=g+(c*12|0)|0;k[d>>2]=k[b>>2];k[d+4>>2]=k[b+4>>2];k[d+8>>2]=k[b+8>>2];c=e-i|0;b=d+(((c|0)/-12|0)*12|0)|0;if((c|0)>0)Ii(b|0,i|0,c|0)|0;k[a>>2]=b;k[h>>2]=d+12;k[j>>2]=g+(f*12|0);if(!i)return;cn(i);return}function eh(a){a=a|0;var b=0,c=0,d=0,e=0,f=0,g=0,h=0;g=k[a+4>>2]|0;h=a+8|0;b=k[h>>2]|0;if((b|0)!=(g|0))do{k[h>>2]=b+-116;f=k[b+-12>>2]|0;c=f;if(f|0){d=b+-8|0;e=k[d>>2]|0;if((e|0)!=(f|0))k[d>>2]=e+(~((e+-4-c|0)>>>2)<<2);cn(f)}c=k[b+-28>>2]|0;d=c;if(c|0){e=b+-24|0;f=k[e>>2]|0;if((f|0)!=(c|0))k[e>>2]=f+(~((f+-4-d|0)>>>2)<<2);cn(c)}c=k[b+-40>>2]|0;d=c;if(c|0){e=b+-36|0;f=k[e>>2]|0;if((f|0)!=(c|0))k[e>>2]=f+(~((f+-4-d|0)>>>2)<<2);cn(c)}Sh(b+-112|0);b=k[h>>2]|0}while((b|0)!=(g|0));b=k[a>>2]|0;if(!b)return;cn(b);return}function fh(a){a=a|0;var b=0,c=0,d=0,e=0,f=0,g=0,h=0;b=k[a>>2]|0;if(!b)return;h=a+4|0;c=k[h>>2]|0;if((c|0)!=(b|0)){do{k[h>>2]=c+-116;g=k[c+-12>>2]|0;d=g;if(g|0){e=c+-8|0;f=k[e>>2]|0;if((f|0)!=(g|0))k[e>>2]=f+(~((f+-4-d|0)>>>2)<<2);cn(g)}d=k[c+-28>>2]|0;e=d;if(d|0){f=c+-24|0;g=k[f>>2]|0;if((g|0)!=(d|0))k[f>>2]=g+(~((g+-4-e|0)>>>2)<<2);cn(d)}d=k[c+-40>>2]|0;e=d;if(d|0){f=c+-36|0;g=k[f>>2]|0;if((g|0)!=(d|0))k[f>>2]=g+(~((g+-4-e|0)>>>2)<<2);cn(d)}Sh(c+-112|0);c=k[h>>2]|0}while((c|0)!=(b|0));b=k[a>>2]|0}cn(b);return}function gh(a,b,c){a=a|0;b=b|0;c=c|0;var d=0,e=0,f=0;e=r;r=r+16|0;d=e;switch(c|0){case 2:{f=k[a+12>>2]|0;c=k[a+4>>2]|0;k[d>>2]=0;k[d+4>>2]=0;k[d+8>>2]=0;d=ah(b,f,c,d)|0;r=e;return d|0}case 3:{c=k[a+12>>2]|0;f=k[a+4>>2]|0;k[d>>2]=0;k[d+4>>2]=0;k[d+8>>2]=0;f=_g(b,c,f,d)|0;r=e;return f|0}default:{f=0;r=e;return f|0}}return 0}function hh(a,b){a=a|0;b=b|0;var c=0,d=0,e=0,f=0,g=0,h=0,i=0;h=r;r=r+16|0;e=h+4|0;g=h;c=a+12|0;d=b+16|0;f=d;i=k[f+4>>2]|0;if((i|0)>0|(i|0)==0&(k[f>>2]|0)>>>0>0){r=h;return 1}f=b+4|0;k[g>>2]=k[f>>2];k[e>>2]=k[g>>2];Ke(b,e,c,c+4|0)|0;i=d;d=k[i+4>>2]|0;a=a+16|0;if((d|0)>0|(d|0)==0&(k[i>>2]|0)>>>0>0){r=h;return 1}k[g>>2]=k[f>>2];k[e>>2]=k[g>>2];Ke(b,e,a,a+4|0)|0;r=h;return 1}function ih(a){a=a|0;var b=0,c=0,d=0;k[a>>2]=5864;b=a+100|0;c=a+4|0;d=c+96|0;do{k[c>>2]=0;c=c+4|0}while((c|0)<(d|0));k[b>>2]=-1;k[a+104>>2]=-1;k[a+108>>2]=-1;b=a+168|0;c=a+112|0;d=c+56|0;do{k[c>>2]=0;c=c+4|0}while((c|0)<(d|0));o[b>>2]=da(1.0);b=a+240|0;c=a+172|0;d=c+68|0;do{k[c>>2]=0;c=c+4|0}while((c|0)<(d|0));rk(b);rk(a+280|0);d=a+320|0;k[d>>2]=0;k[d+4>>2]=0;k[d+8>>2]=0;k[d+12>>2]=0;k[d+16>>2]=0;k[d+20>>2]=0;k[d+24>>2]=0;k[d+28>>2]=0;k[a+352>>2]=-1;k[a+356>>2]=-1;k[a+360>>2]=2;k[a+364>>2]=7;d=a+368|0;k[d>>2]=0;k[d+4>>2]=0;k[d+8>>2]=0;k[d+12>>2]=0;k[d+16>>2]=0;k[d+20>>2]=0;return}function jh(a,b){a=a|0;b=b|0;var c=0,d=0,e=0,f=0,g=0,h=0,i=0,j=0,l=0;j=a+8|0;d=k[j>>2]|0;l=a+4|0;h=k[l>>2]|0;if(d-h>>2>>>0>=b>>>0){Vi(h|0,0,b<<2|0)|0;k[l>>2]=h+(b<<2);return}i=k[a>>2]|0;c=(h-i>>2)+b|0;if(c>>>0>1073741823)hm(a);g=d-i|0;f=g>>1;f=g>>2>>>0<536870911?(f>>>0>>0?c:f):1073741823;c=h-i>>2;do if(f)if(f>>>0>1073741823){l=Ma(4)|0;Om(l);xa(l|0,1024,93)}else{g=xk(f<<2)|0;break}else g=0;while(0);e=g+(c<<2)|0;Vi(e|0,0,b<<2|0)|0;c=h-i|0;d=e+(0-(c>>2)<<2)|0;if((c|0)>0)Ii(d|0,i|0,c|0)|0;k[a>>2]=d;k[l>>2]=e+(b<<2);k[j>>2]=g+(f<<2);if(!i)return;cn(i);return}function kh(a){a=a|0;var b=0,c=0,d=0,e=0;k[a>>2]=3164;b=k[a+52>>2]|0;c=b;if(b|0){d=a+56|0;e=k[d>>2]|0;if((e|0)!=(b|0))k[d>>2]=e+(~((e+-4-c|0)>>>2)<<2);cn(b)}b=k[a+40>>2]|0;c=b;if(b|0){d=a+44|0;e=k[d>>2]|0;if((e|0)!=(b|0))k[d>>2]=e+(~((e+-4-c|0)>>>2)<<2);cn(b)}b=k[a+28>>2]|0;c=b;if(b|0){d=a+32|0;e=k[d>>2]|0;if((e|0)!=(b|0))k[d>>2]=e+(~((e+-4-c|0)>>>2)<<2);cn(b)}b=k[a+16>>2]|0;if(!b){a=a+4|0;vh(a);return}c=a+20|0;d=k[c>>2]|0;if((d|0)!=(b|0))k[c>>2]=d+(~((d+-4-b|0)>>>2)<<2);cn(b);a=a+4|0;vh(a);return}function lh(a){a=a|0;var b=0,c=0,d=0,e=0,f=0;k[a>>2]=5360;e=a+48|0;b=k[e>>2]|0;k[e>>2]=0;if(b|0)Ta[k[(k[b>>2]|0)+4>>2]&127](b);e=k[a+36>>2]|0;b=e;if(e|0){c=a+40|0;d=k[c>>2]|0;if((d|0)!=(e|0))k[c>>2]=d+(~((d+-4-b|0)>>>2)<<2);cn(e)}d=a+24|0;b=k[d>>2]|0;if(b|0){e=a+28|0;c=k[e>>2]|0;if((c|0)!=(b|0)){do{f=c+-4|0;k[e>>2]=f;c=k[f>>2]|0;k[f>>2]=0;if(c|0)Ta[k[(k[c>>2]|0)+4>>2]&127](c);c=k[e>>2]|0}while((c|0)!=(b|0));b=k[d>>2]|0}cn(b)}k[a>>2]=3236;d=k[a+4>>2]|0;if(!d)return;b=a+8|0;c=k[b>>2]|0;if((c|0)!=(d|0))k[b>>2]=c+(~((c+-4-d|0)>>>2)<<2);cn(d);return}function mh(a){a=a|0;var b=0,c=0,d=0,e=0,f=0,g=0;g=r;r=r+64|0;f=g;b=g+40|0;c=f;d=a;e=c+40|0;do{k[c>>2]=k[d>>2];c=c+4|0;d=d+4|0}while((c|0)<(e|0));a:do if(ze(f,b)|0?(i[b+7>>0]|0)==1:0){switch(i[b+8>>0]|0){case 0:{d=xk(32)|0;jm(d);break}case 1:{d=xk(36)|0;Gl(d);break}default:{b=0;break a}}e=xk(92)|0;qk(e);b=Ek(d,a,e)|0;c=b?0:e;if(!b)Ta[k[(k[c>>2]|0)+4>>2]&127](c);Ta[k[(k[d>>2]|0)+4>>2]&127](d);b=b?e:0}else b=0;while(0);fn(f+24|0);r=g;return b|0}function nh(a){a=a|0;var b=0,c=0,d=0,e=0;b=k[a+92>>2]|0;c=b;if(b|0){d=a+96|0;e=k[d>>2]|0;if((e|0)!=(b|0))k[d>>2]=e+(~((e+-4-c|0)>>>2)<<2);cn(b)}b=k[a+76>>2]|0;c=b;if(b|0){d=a+80|0;e=k[d>>2]|0;if((e|0)!=(b|0))k[d>>2]=e+(~((e+-4-c|0)>>>2)<<2);cn(b)}b=k[a+64>>2]|0;c=b;if(b|0){d=a+68|0;e=k[d>>2]|0;if((e|0)!=(b|0))k[d>>2]=e+(~((e+-4-c|0)>>>2)<<2);cn(b)}b=k[a+52>>2]|0;c=b;if(b|0){d=a+56|0;e=k[d>>2]|0;if((e|0)!=(b|0))k[d>>2]=e+(~((e+-4-c|0)>>>2)<<2);cn(b)}k[a+4>>2]=5772;b=k[a+24>>2]|0;if(b|0)cn(b);b=k[a+12>>2]|0;if(!b)return;cn(b);return}function oh(a,b){a=a|0;b=b|0;var c=0,d=0,e=0,f=0,g=0,h=0,j=0;h=a+8|0;e=k[h>>2]|0;j=a+4|0;c=k[j>>2]|0;if((e-c|0)>>>0>=b>>>0){do{i[c>>0]=0;c=(k[j>>2]|0)+1|0;k[j>>2]=c;b=b+-1|0}while((b|0)!=0);return}f=k[a>>2]|0;d=c-f+b|0;if((d|0)<0)hm(a);e=e-f|0;g=e<<1;d=e>>>0<1073741823?(g>>>0>>0?d:g):2147483647;if(!d)e=0;else e=xk(d)|0;g=e+(c-f)|0;f=e+d|0;e=g;c=g;do{i[c>>0]=0;c=e+1|0;e=c;b=b+-1|0}while((b|0)!=0);b=k[a>>2]|0;d=(k[j>>2]|0)-b|0;c=g+(0-d)|0;if((d|0)>0)Ii(c|0,b|0,d|0)|0;k[a>>2]=c;k[j>>2]=e;k[h>>2]=f;if(!b)return;cn(b);return}function ph(){var a=0,b=0,c=0,d=0,e=0,f=0,g=0,h=0;e=r;r=r+48|0;g=e+32|0;c=e+24|0;h=e+16|0;f=e;e=e+36|0;a=sk()|0;if(a|0?(d=k[a>>2]|0,d|0):0){a=d+48|0;b=k[a>>2]|0;a=k[a+4>>2]|0;if(!((b&-256|0)==1126902528&(a|0)==1129074247)){k[c>>2]=k[1607];Vk(17945,c)}if((b|0)==1126902529&(a|0)==1129074247)a=k[d+44>>2]|0;else a=d+80|0;k[e>>2]=a;d=k[d>>2]|0;a=k[d+4>>2]|0;if(Ra[k[(k[240]|0)+16>>2]&31](960,d,e)|0){h=k[e>>2]|0;e=k[1607]|0;h=Va[k[(k[h>>2]|0)+8>>2]&127](h)|0;k[f>>2]=e;k[f+4>>2]=a;k[f+8>>2]=h;Vk(17859,f)}else{k[h>>2]=k[1607];k[h+4>>2]=a;Vk(17904,h)}}Vk(17983,g)}function qh(a,b,c){a=a|0;b=b|0;c=c|0;var d=0,e=0,f=0,g=0;d=c+16|0;e=k[d>>2]|0;if(!e)if(!(mj(c)|0)){d=k[d>>2]|0;f=5}else d=0;else{d=e;f=5}a:do if((f|0)==5){g=c+20|0;f=k[g>>2]|0;e=f;if((d-f|0)>>>0>>0){d=Ra[k[c+36>>2]&31](c,a,b)|0;break}b:do if((i[c+75>>0]|0)>-1){d=b;while(1){if(!d){f=b;d=0;break b}f=d+-1|0;if((i[a+f>>0]|0)==10)break;else d=f}if((Ra[k[c+36>>2]&31](c,a,d)|0)>>>0>>0)break a;f=b-d|0;a=a+d|0;e=k[g>>2]|0}else{f=b;d=0}while(0);Ii(e|0,a|0,f|0)|0;k[g>>2]=(k[g>>2]|0)+f;d=d+f|0}while(0);return d|0}function rh(a,b){a=a|0;b=b|0;var c=0,d=0,e=0,f=0,g=0,h=0,i=0;i=xk(24)|0;bm(i);h=a+8|0;f=a+12|0;a=k[f>>2]|0;d=k[h>>2]|0;e=a-d>>2;do if((e|0)<=(b|0)){c=b+1|0;if(c>>>0>e>>>0){Mf(h,c-e|0);break}if(c>>>0>>0?(g=d+(c<<2)|0,(a|0)!=(g|0)):0)do{e=a+-4|0;k[f>>2]=e;a=k[e>>2]|0;k[e>>2]=0;if(a|0)Ta[k[(k[a>>2]|0)+4>>2]&127](a);a=k[f>>2]|0}while((a|0)!=(g|0))}while(0);h=(k[h>>2]|0)+(b<<2)|0;a=k[h>>2]|0;k[h>>2]=i;if(!a)return 1;Ta[k[(k[a>>2]|0)+4>>2]&127](a);return 1}function sh(a,b){a=a|0;b=b|0;var c=0,d=0,e=0,f=0,g=0,h=0,i=0,j=0;h=a+8|0;i=k[a>>2]|0;g=i;if((((k[h>>2]|0)-i|0)/12|0)>>>0>=b>>>0)return;j=a+4|0;d=k[j>>2]|0;c=(d-i|0)/12|0;do if(b)if(b>>>0>357913941){j=Ma(4)|0;Om(j);xa(j|0,1024,93)}else{e=xk(b*12|0)|0;break}else e=0;while(0);c=e+(c*12|0)|0;f=c;b=e+(b*12|0)|0;if((d|0)==(g|0))c=f;else do{e=d;d=d+-12|0;k[c+-12>>2]=k[d>>2];k[c+-8>>2]=k[e+-8>>2];k[c+-4>>2]=k[e+-4>>2];c=c+-12|0}while((d|0)!=(g|0));k[a>>2]=c;k[j>>2]=f;k[h>>2]=b;if(!i)return;cn(i);return}function th(a){a=a|0;var b=0,c=0,d=0,e=0,f=0,g=0,h=0;g=k[a+4>>2]|0;h=a+8|0;b=k[h>>2]|0;if((b|0)!=(g|0))do{e=b+-4|0;k[h>>2]=e;f=k[e>>2]|0;k[e>>2]=0;if(f|0){b=k[f+68>>2]|0;c=b;if(b|0){d=f+72|0;e=k[d>>2]|0;if((e|0)!=(b|0))k[d>>2]=e+(~((e+-4-c|0)>>>2)<<2);cn(b)}e=f+64|0;b=k[e>>2]|0;k[e>>2]=0;if(b|0){c=k[b>>2]|0;if(c|0){d=b+4|0;if((k[d>>2]|0)!=(c|0))k[d>>2]=c;cn(c)}cn(b)}cn(f)}b=k[h>>2]|0}while((b|0)!=(g|0));b=k[a>>2]|0;if(!b)return;cn(b);return}function uh(a,b){a=a|0;b=b|0;var c=0,d=0,e=0,f=0,g=0,h=0;d=r;r=r+16|0;c=d;if(!b){c=0;r=d;return c|0}g=b+4|0;e=(((k[g>>2]|0)-(k[b>>2]|0)|0)/12|0)*3|0;i[c>>0]=0;lg(a,e,c);e=b+24|0;f=b+28|0;h=(k[f>>2]|0)-(k[e>>2]|0)>>2;i[c>>0]=0;lg(a+12|0,h,c);Cf(a+28|0,(((k[g>>2]|0)-(k[b>>2]|0)|0)/12|0)*3|0,3224);Xh(a+52|0,(k[f>>2]|0)-(k[e>>2]|0)>>2);Xh(a+40|0,(k[f>>2]|0)-(k[e>>2]|0)>>2);k[a+64>>2]=b;i[a+24>>0]=1;c=1;r=d;return c|0}function vh(a){a=a|0;var b=0,c=0,d=0,e=0,f=0,g=0,h=0;b=k[a>>2]|0;if(!b)return;h=a+4|0;c=k[h>>2]|0;if((c|0)!=(b|0)){do{f=c+-4|0;k[h>>2]=f;g=k[f>>2]|0;k[f>>2]=0;if(g|0){c=k[g+68>>2]|0;d=c;if(c|0){e=g+72|0;f=k[e>>2]|0;if((f|0)!=(c|0))k[e>>2]=f+(~((f+-4-d|0)>>>2)<<2);cn(c)}f=g+64|0;c=k[f>>2]|0;k[f>>2]=0;if(c|0){d=k[c>>2]|0;if(d|0){e=c+4|0;if((k[e>>2]|0)!=(d|0))k[e>>2]=d;cn(d)}cn(c)}cn(g)}c=k[h>>2]|0}while((c|0)!=(b|0));b=k[a>>2]|0}cn(b);return}function wh(a,b,c){a=a|0;b=b|0;c=c|0;var d=0,e=0;e=r;r=r+16|0;d=e;k[a+20>>2]=b;k[a+4>>2]=c;if(!(ze(b,d)|0)){d=0;r=e;return d|0}c=l[d+7>>0]|0;if((c|0)!=(Va[k[(k[a>>2]|0)+8>>2]&127](a)|0)){d=0;r=e;return d|0}c=i[d+5>>0]|0;i[a+24>>0]=c;d=i[d+6>>0]|0;i[a+25>>0]=d;if(c<<24>>24!=1|(d&255)>2){d=0;r=e;return d|0}if(!(Va[k[(k[a>>2]|0)+12>>2]&127](a)|0)){d=0;r=e;return d|0}if(!(Va[k[(k[a>>2]|0)+20>>2]&127](a)|0)){d=0;r=e;return d|0}d=Va[k[(k[a>>2]|0)+24>>2]&127](a)|0;r=e;return d|0}function xh(a,b){a=a|0;b=b|0;var c=0,d=0,e=0,f=0,g=0,h=0,i=0,j=0;h=a+4|0;e=k[h>>2]|0;i=k[a>>2]|0;c=(e-i>>2)+1|0;if(c>>>0>1073741823)hm(a);j=a+8|0;g=(k[j>>2]|0)-i|0;f=g>>1;f=g>>2>>>0<536870911?(f>>>0>>0?c:f):1073741823;c=e-i>>2;do if(f)if(f>>>0>1073741823){j=Ma(4)|0;Om(j);xa(j|0,1024,93)}else{g=xk(f<<2)|0;break}else g=0;while(0);d=g+(c<<2)|0;k[d>>2]=k[b>>2];c=e-i|0;b=d+(0-(c>>2)<<2)|0;if((c|0)>0)Ii(b|0,i|0,c|0)|0;k[a>>2]=b;k[h>>2]=d+4;k[j>>2]=g+(f<<2);if(!i)return;cn(i);return}function yh(a){a=a|0;var b=0,c=0,d=0,e=0,f=0,g=0,h=0,i=0;i=a+4|0;h=k[i>>2]|0;d=a+8|0;a=k[d>>2]|0;e=h+4|0;c=k[e>>2]|0;b=k[h>>2]|0;f=c-b>>2;if(a>>>0<=f>>>0){if(a>>>0>>0?(g=b+(a<<2)|0,(c|0)!=(g|0)):0)k[e>>2]=c+(~((c+-4-g|0)>>>2)<<2)}else{jh(h,a-f|0);a=k[d>>2]|0}if((a|0)>0)c=0;else return 1;while(1){d=k[i>>2]|0;b=k[d>>2]|0;if((k[d+4>>2]|0)-b>>2>>>0<=c>>>0){a=10;break}k[b+(c<<2)>>2]=c;c=c+1|0;if((c|0)>=(a|0)){a=7;break}}if((a|0)==7)return 1;else if((a|0)==10)gm(d);return 0}function zh(a,b,c,d){a=a|0;b=b|0;c=c|0;d=d|0;var e=0,f=0,g=0,h=0,j=0;if((a|0)<0){d=0;return d|0}if(!a){d=1;return d|0}h=c+8|0;j=k[h+4>>2]|0;e=c+16|0;g=e;f=k[g>>2]|0;g=k[g+4>>2]|0;if(!((j|0)>(g|0)|((j|0)==(g|0)?(k[h>>2]|0)>>>0>f>>>0:0))){j=0;return j|0}j=i[(k[c>>2]|0)+f>>0]|0;g=sl(f|0,g|0,1,0)|0;h=e;k[h>>2]=g;k[h+4>>2]=M;switch(j<<24>>24){case 0:{j=qc(a,b,c,d)|0;return j|0}case 1:{j=Zd(a,c,d)|0;return j|0}default:{j=0;return j|0}}return 0}function Ah(a,b){a=a|0;b=b|0;var c=0,d=0,e=0,f=0,g=0,h=0,j=0;c=k[a+232>>2]|0;d=k[a+228>>2]|0;h=d;if((c|0)==(d|0)){j=0;return j|0}g=k[(k[a+4>>2]|0)+8>>2]|0;f=(c-d|0)/116|0;a=0;a:while(1){c=k[g+(k[h+(a*116|0)>>2]<<2)>>2]|0;e=k[c+4>>2]|0;c=(k[c+8>>2]|0)-e|0;if((c|0)>0){d=c>>2;c=0;do{if((k[e+(c<<2)>>2]|0)==(b|0))break a;c=c+1|0}while((c|0)<(d|0))}a=a+1|0;if(a>>>0>=f>>>0){a=0;j=9;break}}if((j|0)==9)return a|0;j=(i[h+(a*116|0)+72>>0]|0)==0?0:h+(a*116|0)+4|0;return j|0}function Bh(a,b){a=a|0;b=b|0;var c=0,d=0,e=0;c=k[a>>2]|0;if(b){e=c+8|0;b=e;b=sl(k[b>>2]|0,k[b+4>>2]|0,1,0)|0;k[e>>2]=b;k[e+4>>2]=M;e=a+28|0;b=k[e>>2]|0;d=a+24|0;k[d>>2]=k[d>>2]|1<>2]|0,k[e+4>>2]|0,1,0)|0;b=c;k[b>>2]=e;k[b+4>>2]=M;b=a+28|0;e=b;b=k[b>>2]|0}d=b+1|0;k[e>>2]=d;if((d|0)!=32)return;b=a+24|0;c=a+16|0;d=k[c>>2]|0;if((d|0)==(k[a+20>>2]|0))xh(a+12|0,b);else{k[d>>2]=k[b>>2];k[c>>2]=d+4}k[e>>2]=0;k[b>>2]=0;return}function Ch(a,b,c){a=a|0;b=b|0;c=c|0;var d=0,e=0,f=0,g=0;g=r;r=r+48|0;f=g;if((c|0)!=1){f=0;r=g;return f|0}e=k[a+12>>2]|0;c=k[a+4>>2]|0;a=f;d=a+36|0;do{k[a>>2]=0;a=a+4|0}while((a|0)<(d|0));b=Cg(b,e,c,f)|0;d=k[f+24>>2]|0;e=d;if(d|0){c=f+28|0;a=k[c>>2]|0;if((a|0)!=(d|0))k[c>>2]=a+(~((a+-4-e|0)>>>2)<<2);cn(d)}f=b;r=g;return f|0}function Dh(a,b){a=a|0;b=b|0;var c=0,d=0,e=0,f=0,g=0,h=0,i=0;c=k[a+232>>2]|0;d=k[a+228>>2]|0;i=d;a:do if((c|0)!=(d|0)){h=k[(k[a+4>>2]|0)+8>>2]|0;g=(c-d|0)/116|0;c=0;b:while(1){d=k[h+(k[i+(c*116|0)>>2]<<2)>>2]|0;f=k[d+4>>2]|0;d=(k[d+8>>2]|0)-f|0;if((d|0)>0){e=d>>2;d=0;do{if((k[f+(d<<2)>>2]|0)==(b|0))break b;d=d+1|0}while((d|0)<(e|0))}c=c+1|0;if(c>>>0>=g>>>0)break a}i=i+(c*116|0)+76|0;return i|0}while(0);i=a+200|0;return i|0}function Eh(a){a=a|0;fn(a+496|0);fn(a+480|0);fn(a+464|0);fn(a+448|0);fn(a+432|0);fn(a+416|0);fn(a+400|0);fn(a+384|0);fn(a+368|0);fn(a+352|0);fn(a+336|0);fn(a+320|0);fn(a+304|0);fn(a+288|0);fn(a+272|0);fn(a+256|0);fn(a+240|0);fn(a+224|0);fn(a+208|0);fn(a+192|0);fn(a+176|0);fn(a+160|0);fn(a+144|0);fn(a+128|0);fn(a+112|0);fn(a+96|0);fn(a+80|0);fn(a+64|0);fn(a+48|0);fn(a+32|0);fn(a+16|0);fn(a);return}function Fh(a){a=a|0;var b=0,c=0,d=0,e=0;b=k[a+48>>2]|0;c=b;if(b|0){d=a+52|0;e=k[d>>2]|0;if((e|0)!=(b|0))k[d>>2]=e+(~((e+-4-c|0)>>>2)<<2);cn(b)}b=k[a+24>>2]|0;c=b;if(b|0){d=a+28|0;e=k[d>>2]|0;if((e|0)!=(b|0))k[d>>2]=e+(~((e+-4-c|0)>>>2)<<2);cn(b)}b=k[a+12>>2]|0;c=b;if(b|0){d=a+16|0;e=k[d>>2]|0;if((e|0)!=(b|0))k[d>>2]=e+(~((e+-4-c|0)>>>2)<<2);cn(b)}d=k[a>>2]|0;if(!d)return;b=a+4|0;c=k[b>>2]|0;if((c|0)!=(d|0))k[b>>2]=c+(~(((c+-12-d|0)>>>0)/12|0)*12|0);cn(d);return}function Gh(a,b,c,d,e){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;i[b+53>>0]=1;do if((k[b+4>>2]|0)==(d|0)){i[b+52>>0]=1;a=b+16|0;d=k[a>>2]|0;if(!d){k[a>>2]=c;k[b+24>>2]=e;k[b+36>>2]=1;if(!((e|0)==1?(k[b+48>>2]|0)==1:0))break;i[b+54>>0]=1;break}if((d|0)!=(c|0)){e=b+36|0;k[e>>2]=(k[e>>2]|0)+1;i[b+54>>0]=1;break}d=b+24|0;a=k[d>>2]|0;if((a|0)==2){k[d>>2]=e;a=e}if((a|0)==1?(k[b+48>>2]|0)==1:0)i[b+54>>0]=1}while(0);return}function Hh(a,b,c){a=a|0;b=b|0;c=c|0;var d=0,e=0;wf(a,b,c);d=k[a+84>>2]|0;c=k[a+80>>2]|0;e=c;if((d-c|0)<=0)return;b=k[b>>2]|0;a=(d-c|0)/12|0;c=0;do{d=e+(c*12|0)|0;k[d>>2]=k[b+(k[d>>2]<<2)>>2];d=e+(c*12|0)+4|0;k[d>>2]=k[b+(k[d>>2]<<2)>>2];d=e+(c*12|0)+8|0;k[d>>2]=k[b+(k[d>>2]<<2)>>2];c=c+1|0}while((c|0)<(a|0));return}function Ih(a,b,c,d){a=a|0;b=b|0;c=c|0;d=d|0;var e=0,f=0,g=0;if((d|0)<0){c=0;return c|0}do if(!b){b=a+4|0;d=k[b>>2]|0;e=k[a>>2]|0;f=d-e|0;if(c>>>0>f>>>0){oh(a,c-f|0);break}if(c>>>0>>0?(g=e+c|0,(d|0)!=(g|0)):0)k[b>>2]=g}else Hf(a,b,b+c|0);while(0);c=a+24|0;g=c;g=sl(k[g>>2]|0,k[g+4>>2]|0,1,0)|0;k[c>>2]=g;k[c+4>>2]=M;c=1;return c|0}function Jh(a,b){a=a|0;b=b|0;var c=0,d=0,e=0,f=0,g=0;f=a+64|0;if((k[f>>2]|0)==0?(e=xk(32)|0,Dk(e),d=k[f>>2]|0,k[f>>2]=e,d|0):0){e=k[d>>2]|0;if(e|0){c=d+4|0;if((k[c>>2]|0)!=(e|0))k[c>>2]=e;cn(e)}cn(d)}c=Kj(k[a+28>>2]|0)|0;c=$(i[a+24>>0]|0,c)|0;d=((c|0)<0)<<31>>31;g=k[f>>2]|0;e=uk(c|0,d|0,b|0,0)|0;if(!(Ih(g,0,e,M)|0)){g=0;return g|0}Fi(a,k[f>>2]|0,c,d,0,0);k[a+80>>2]=b;g=1;return g|0}function Kh(a,b,c,d,e){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;var f=0,g=0;if(b>>>0<64){g=(k[d>>2]|0)>>>0>(k[d+4>>2]|0)>>>0&1;g=(k[d+(g<<2)>>2]|0)>>>0>(k[d+8>>2]|0)>>>0?2:g;return g|0}f=a+836|0;g=k[f>>2]|0;c=32-g|0;d=a+832|0;e=k[d>>2]|0;b=k[e>>2]<>2]=g;f=e+4|0;k[d>>2]=f;g=32-g|0;g=(k[f>>2]|0)>>>g|b>>>(g-c|0);return g|0}b=b>>>28;g=g+4|0;k[f>>2]=g;if((g|0)!=32){g=b;return g|0}k[d>>2]=e+4;k[f>>2]=0;g=b;return g|0}function Lh(a,b,c,d,e){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;var f=0,g=0;if(b>>>0<64){g=(k[d>>2]|0)>>>0>(k[d+4>>2]|0)>>>0&1;g=(k[d+(g<<2)>>2]|0)>>>0>(k[d+8>>2]|0)>>>0?2:g;return g|0}f=a+572|0;g=k[f>>2]|0;c=32-g|0;d=a+568|0;e=k[d>>2]|0;b=k[e>>2]<>2]=g;f=e+4|0;k[d>>2]=f;g=32-g|0;g=(k[f>>2]|0)>>>g|b>>>(g-c|0);return g|0}b=b>>>28;g=g+4|0;k[f>>2]=g;if((g|0)!=32){g=b;return g|0}k[d>>2]=e+4;k[f>>2]=0;g=b;return g|0}function Mh(a,b,c,d,e){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;var f=0,g=0;do if((a|0)==(k[b+8>>2]|0)){if((k[b+4>>2]|0)==(c|0)?(f=b+28|0,(k[f>>2]|0)!=1):0)k[f>>2]=d}else if((a|0)==(k[b>>2]|0)){if((k[b+16>>2]|0)!=(c|0)?(g=b+20|0,(k[g>>2]|0)!=(c|0)):0){k[b+32>>2]=d;k[g>>2]=c;e=b+40|0;k[e>>2]=(k[e>>2]|0)+1;if((k[b+36>>2]|0)==1?(k[b+24>>2]|0)==2:0)i[b+54>>0]=1;k[b+44>>2]=4;break}if((d|0)==1)k[b+32>>2]=1}while(0);return}function Nh(a,b,c){a=a|0;b=b|0;c=c|0;var d=0,e=0,f=0,g=0,h=0;g=c+8|0;h=k[g+4>>2]|0;d=c+16|0;f=d;e=k[f>>2]|0;f=k[f+4>>2]|0;if(!((h|0)>(f|0)|((h|0)==(f|0)?(k[g>>2]|0)>>>0>e>>>0:0))){h=0;return h|0}h=i[(k[c>>2]|0)+e>>0]|0;f=sl(e|0,f|0,1,0)|0;g=d;k[g>>2]=f;k[g+4>>2]=M;k[a+32>>2]=h&255;h=od(a,b,c)|0;return h|0}function Oh(a){a=a|0;var b=0,c=0,d=0,e=0,f=0;f=r;r=r+16|0;d=f;e=d;k[e>>2]=0;k[e+4>>2]=0;nf(a,2,d);d=k[a+12>>2]|0;e=a+16|0;b=k[e>>2]|0;c=d;if((b|0)==(d|0))b=d;else{b=b+(~((b+-4-c|0)>>>2)<<2)|0;k[e>>2]=b}k[a+24>>2]=0;k[a+28>>2]=0;if(d|0){if((b|0)!=(d|0))k[e>>2]=b+(~((b+-4-c|0)>>>2)<<2);cn(d)}d=k[a>>2]|0;if(!d){r=f;return}b=a+4|0;c=k[b>>2]|0;if((c|0)!=(d|0))k[b>>2]=c+(~((c+-8-d|0)>>>3)<<3);cn(d);r=f;return}function Ph(a,b,c,d,e,f){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;f=f|0;var g=0,h=0,i=0;g=a+8|0;k[g>>2]=e;f=e>>>0>1073741823?-1:e<<2;h=$m(f)|0;Vi(h|0,0,f|0)|0;Sg(g,h,b,c,0);if((e|0)>=(d|0)){an(h);return 1}f=0-e|0;a=e;do{i=c+(a<<2)|0;Sg(g,i+(f<<2)|0,b,i,a);a=a+e|0}while((a|0)<(d|0));an(h);return 1}function Qh(a,b,c){a=a|0;b=b|0;c=c|0;var d=0,e=0,f=0,g=0,h=0,i=0,j=0,m=0;if((b|0)>=33)Ka(13932,6532,53,13984);if((b|0)<=0)Ka(14013,6532,54,13984);g=a+8|0;h=a+4|0;f=0-(l[a+12>>0]|0)&255;e=0;d=k[g>>2]|0;do{if(d>>>0<4096){i=(k[h>>2]|0)+-1|0;k[h>>2]=i;d=l[(k[a>>2]|0)+i>>0]|0|d<<8;k[g>>2]=d}m=d&255;j=$(d>>>8,f)|0;i=m>>>0>>0;d=i?j+m|0:d-f-j|0;k[g>>2]=d;e=i&1|e<<1;b=b+-1|0}while((b|0)!=0);k[c>>2]=e;return}function Rh(a,b,c){a=a|0;b=b|0;c=c|0;do if(a){if(b>>>0<128){i[a>>0]=b;a=1;break}if(b>>>0<2048){i[a>>0]=b>>>6|192;i[a+1>>0]=b&63|128;a=2;break}if(b>>>0<55296|(b&-8192|0)==57344){i[a>>0]=b>>>12|224;i[a+1>>0]=b>>>6&63|128;i[a+2>>0]=b&63|128;a=3;break}if((b+-65536|0)>>>0<1048576){i[a>>0]=b>>>18|240;i[a+1>>0]=b>>>12&63|128;i[a+2>>0]=b>>>6&63|128;i[a+3>>0]=b&63|128;a=4;break}else{a=ul()|0;k[a>>2]=84;a=-1;break}}else a=1;while(0);return a|0}function Sh(a){a=a|0;var b=0,c=0,d=0,e=0;b=k[a+52>>2]|0;c=b;if(b|0){d=a+56|0;e=k[d>>2]|0;if((e|0)!=(b|0))k[d>>2]=e+(~((e+-4-c|0)>>>2)<<2);cn(b)}b=k[a+40>>2]|0;c=b;if(b|0){d=a+44|0;e=k[d>>2]|0;if((e|0)!=(b|0))k[d>>2]=e+(~((e+-4-c|0)>>>2)<<2);cn(b)}b=k[a+28>>2]|0;c=b;if(b|0){d=a+32|0;e=k[d>>2]|0;if((e|0)!=(b|0))k[d>>2]=e+(~((e+-4-c|0)>>>2)<<2);cn(b)}b=k[a+12>>2]|0;if(b|0)cn(b);b=k[a>>2]|0;if(!b)return;cn(b);return}function Th(a,b,c){a=a|0;b=b|0;c=c|0;var d=0,e=0,f=0,g=0;g=r;r=r+64|0;e=g;if((a|0)!=(b|0))if((b|0)!=0?(f=tg(b,984,968,0)|0,(f|0)!=0):0){b=e+4|0;d=b+52|0;do{k[b>>2]=0;b=b+4|0}while((b|0)<(d|0));k[e>>2]=f;k[e+8>>2]=a;k[e+12>>2]=-1;k[e+48>>2]=1;_a[k[(k[f>>2]|0)+28>>2]&3](f,e,k[c>>2]|0,1);if((k[e+24>>2]|0)==1){k[c>>2]=k[e+16>>2];b=1}else b=0}else b=0;else b=1;r=g;return b|0}function Uh(a,b,c,d,e,f,g,h,j,l){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;f=f|0;g=g|0;h=h|0;j=j|0;l=l|0;var m=0,n=0,o=0;k[a>>2]=c;if(c|0){o=c+16|0;m=k[o+4>>2]|0;n=a+8|0;k[n>>2]=k[o>>2];k[n+4>>2]=m;n=c+24|0;m=k[n+4>>2]|0;c=a+16|0;k[c>>2]=k[n>>2];k[c+4>>2]=m}i[a+24>>0]=d;k[a+28>>2]=e;i[a+32>>0]=f&1;o=a+40|0;k[o>>2]=g;k[o+4>>2]=h;o=a+48|0;k[o>>2]=j;k[o+4>>2]=l;k[a+56>>2]=b;return}function Vh(a,b,c,d,e,f){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;f=f|0;var g=0,h=0,i=0;g=a+8|0;k[g>>2]=e;f=e>>>0>1073741823?-1:e<<2;h=$m(f)|0;Vi(h|0,0,f|0)|0;Ug(g,h,b,c,0);if((e|0)>=(d|0)){an(h);return 1}f=0-e|0;a=e;do{i=c+(a<<2)|0;Ug(g,i+(f<<2)|0,b,i,a);a=a+e|0}while((a|0)<(d|0));an(h);return 1}function Wh(a,b,c,d,e,f){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;f=f|0;var g=0;g=a+8|0;k[g>>2]=e;a=d-e|0;if((a|0)>0){f=0-e|0;do{d=b+(a<<2)|0;Ze(g,d,d+(f<<2)|0,c,a);a=a-e|0}while((a|0)>0)}d=e>>>0>1073741823?-1:e<<2;e=$m(d)|0;Vi(e|0,0,d|0)|0;Ze(g,b,e,c,0);an(e);return 1}function Xh(a,b){a=a|0;b=b|0;var c=0,d=0,e=0,f=0,g=0,h=0,i=0;g=a+8|0;h=k[a>>2]|0;if((k[g>>2]|0)-h>>2>>>0>=b>>>0)return;i=a+4|0;d=k[i>>2]|0;c=d-h>>2;do if(b)if(b>>>0>1073741823){i=Ma(4)|0;Om(i);xa(i|0,1024,93)}else{f=xk(b<<2)|0;break}else f=0;while(0);e=f+(c<<2)|0;c=d-h|0;d=e+(0-(c>>2)<<2)|0;if((c|0)>0)Ii(d|0,h|0,c|0)|0;k[a>>2]=d;k[i>>2]=e;k[g>>2]=f+(b<<2);if(!h)return;cn(h);return}function Yh(a){a=a|0;var b=0,c=0,d=0,e=0,f=0.0,g=0,h=0;c=a+16|0;f=+p[c>>3];if(!(f<=1.0))Ka(6649,6662,25,6703);if(!(f>=0.0))Ka(6721,6662,26,6703);d=~~(f*256.0+.5)>>>0;d=d-((d|0)==256&1)|0;e=a+8|0;b=k[e>>2]|0;if(b>>>0<4096){h=a+4|0;g=(k[h>>2]|0)+-1|0;k[h>>2]=g;b=l[(k[a>>2]|0)+g>>0]|0|b<<8;k[e>>2]=b}a=b&255;d=0-(d+((d|0)==0&1))&255;g=$(b>>>8,d)|0;h=a>>>0>>0;k[e>>2]=h?g+a|0:b-d-g|0;p[c>>3]=f*.9921875+ +(h&1^1|0)*.0078125;return h|0}function Zh(a){a=a|0;var b=0,c=0,d=0;k[a>>2]=5652;b=a+100|0;c=a+4|0;d=c+96|0;do{k[c>>2]=0;c=c+4|0}while((c|0)<(d|0));k[b>>2]=-1;k[a+104>>2]=-1;k[a+108>>2]=-1;b=a+168|0;c=a+112|0;d=c+56|0;do{k[c>>2]=0;c=c+4|0}while((c|0)<(d|0));o[b>>2]=da(1.0);b=a+240|0;c=a+172|0;d=c+68|0;do{k[c>>2]=0;c=c+4|0}while((c|0)<(d|0));rk(b);rk(a+280|0);k[a+320>>2]=0;k[a+324>>2]=0;k[a+328>>2]=0;return}function _h(a,b,c,d,e,f){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;f=f|0;var g=0;g=a+8|0;k[g>>2]=e;a=d-e|0;if((a|0)>0){f=0-e|0;do{d=b+(a<<2)|0;cf(g,d,d+(f<<2)|0,c,a);a=a-e|0}while((a|0)>0)}d=e>>>0>1073741823?-1:e<<2;e=$m(d)|0;Vi(e|0,0,d|0)|0;cf(g,b,e,c,0);an(e);return 1}function $h(a){a=a|0;var b=0,c=0,d=0,e=0,f=0;k[a>>2]=5592;e=a+32|0;b=k[e>>2]|0;k[e>>2]=0;if(b|0)Ta[k[(k[b>>2]|0)+4>>2]&127](b);k[a>>2]=3264;e=a+8|0;b=k[e>>2]|0;if(!b){cn(a);return}d=a+12|0;c=k[d>>2]|0;if((c|0)!=(b|0)){do{f=c+-4|0;k[d>>2]=f;c=k[f>>2]|0;k[f>>2]=0;if(c|0)Ta[k[(k[c>>2]|0)+4>>2]&127](c);c=k[d>>2]|0}while((c|0)!=(b|0));b=k[e>>2]|0}cn(b);cn(a);return}function ai(a,b,c,d,e){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;var f=0,g=0,h=0;h=r;r=r+256|0;g=h;do if((c|0)>(d|0)&(e&73728|0)==0){e=c-d|0;Vi(g|0,b|0,(e>>>0>256?256:e)|0)|0;b=k[a>>2]|0;f=(b&32|0)==0;if(e>>>0>255){c=c-d|0;do{if(f){qh(g,256,a)|0;b=k[a>>2]|0}e=e+-256|0;f=(b&32|0)==0}while(e>>>0>255);if(f)e=c&255;else break}else if(!f)break;qh(g,e,a)|0}while(0);r=h;return}function bi(a,b){a=a|0;b=b|0;var c=0,d=0,e=0,f=0,g=0,h=0,j=0;j=r;r=r+16|0;g=j;h=b&255;i[g>>0]=h;d=a+16|0;e=k[d>>2]|0;if(!e)if(!(mj(a)|0)){e=k[d>>2]|0;f=4}else c=-1;else f=4;do if((f|0)==4){f=a+20|0;d=k[f>>2]|0;if(d>>>0>>0?(c=b&255,(c|0)!=(i[a+75>>0]|0)):0){k[f>>2]=d+1;i[d>>0]=h;break}if((Ra[k[a+36>>2]&31](a,g,1)|0)==1)c=l[g>>0]|0;else c=-1}while(0);r=j;return c|0}function ci(a,b){a=a|0;b=b|0;var c=0,d=0,e=0,f=0,g=0;f=b+8|0;g=k[f+4>>2]|0;e=b+16|0;d=e;c=k[d>>2]|0;d=k[d+4>>2]|0;if((g|0)>(d|0)|((g|0)==(d|0)?(k[f>>2]|0)>>>0>c>>>0:0)){g=i[(k[b>>2]|0)+c>>0]|0;f=sl(c|0,d|0,1,0)|0;c=e;k[c>>2]=f;k[c+4>>2]=M;c=g}else c=0;c=c&255;if(!(c&128)){g=c;k[a>>2]=g;return}ci(a,b);g=k[a>>2]<<7;k[a>>2]=g;g=g|c&127;k[a>>2]=g;return}function di(a){a=a|0;var b=0,c=0,d=0,e=0;k[a>>2]=5592;d=a+32|0;b=k[d>>2]|0;k[d>>2]=0;if(b|0)Ta[k[(k[b>>2]|0)+4>>2]&127](b);k[a>>2]=3264;d=a+8|0;b=k[d>>2]|0;if(!b)return;c=a+12|0;a=k[c>>2]|0;if((a|0)!=(b|0)){do{e=a+-4|0;k[c>>2]=e;a=k[e>>2]|0;k[e>>2]=0;if(a|0)Ta[k[(k[a>>2]|0)+4>>2]&127](a);a=k[c>>2]|0}while((a|0)!=(b|0));b=k[d>>2]|0}cn(b);return}function ei(a,b){a=a|0;b=b|0;var c=0,d=0,e=0,f=0,g=0;if((k[b+76>>2]|0)>=0?(gn(b)|0)!=0:0){if((i[b+75>>0]|0)!=(a|0)?(e=b+20|0,f=k[e>>2]|0,f>>>0<(k[b+16>>2]|0)>>>0):0){k[e>>2]=f+1;i[f>>0]=a;a=a&255}else a=bi(b,a)|0;fn(b)}else g=3;do if((g|0)==3){if((i[b+75>>0]|0)!=(a|0)?(c=b+20|0,d=k[c>>2]|0,d>>>0<(k[b+16>>2]|0)>>>0):0){k[c>>2]=d+1;i[d>>0]=a;a=a&255;break}a=bi(b,a)|0}while(0);return a|0}function fi(a){a=a|0;switch(a<<24>>24){case 0:{a=xk(28)|0;k[a>>2]=0;k[a+4>>2]=0;k[a+8>>2]=0;k[a+12>>2]=0;k[a+16>>2]=0;k[a+20>>2]=0;k[a+24>>2]=0;Bk(a);k[a>>2]=5392;return a|0}case 1:{a=xk(28)|0;k[a>>2]=0;k[a+4>>2]=0;k[a+8>>2]=0;k[a+12>>2]=0;k[a+16>>2]=0;k[a+20>>2]=0;k[a+24>>2]=0;Bk(a);k[a>>2]=5460;return a|0}default:{a=0;return a|0}}return 0}function gi(a){a=a|0;var b=0,c=0,d=0;k[a>>2]=3968;b=k[a+96>>2]|0;if(b|0)cn(b);b=k[a+84>>2]|0;if(b|0)cn(b);b=k[a+72>>2]|0;if(b|0)cn(b);b=k[a+60>>2]|0;if(b|0)cn(b);k[a>>2]=3456;b=k[a+32>>2]|0;if(!b){cn(a);return}c=a+36|0;d=k[c>>2]|0;if((d|0)!=(b|0))k[c>>2]=d+(~((d+-4-b|0)>>>2)<<2);cn(b);cn(a);return}function hi(a){a=a|0;var b=0,c=0,d=0;k[a>>2]=3712;b=k[a+96>>2]|0;if(b|0)cn(b);b=k[a+84>>2]|0;if(b|0)cn(b);b=k[a+72>>2]|0;if(b|0)cn(b);b=k[a+60>>2]|0;if(b|0)cn(b);k[a>>2]=3456;b=k[a+32>>2]|0;if(!b){cn(a);return}c=a+36|0;d=k[c>>2]|0;if((d|0)!=(b|0))k[c>>2]=d+(~((d+-4-b|0)>>>2)<<2);cn(b);cn(a);return}function ii(a){a=a|0;var b=0,c=0,d=0;k[a>>2]=5816;b=a+100|0;c=a+4|0;d=c+96|0;do{k[c>>2]=0;c=c+4|0}while((c|0)<(d|0));k[b>>2]=-1;k[a+104>>2]=-1;k[a+108>>2]=-1;b=a+168|0;c=a+112|0;d=c+56|0;do{k[c>>2]=0;c=c+4|0}while((c|0)<(d|0));o[b>>2]=da(1.0);b=a+240|0;c=a+172|0;d=c+68|0;do{k[c>>2]=0;c=c+4|0}while((c|0)<(d|0));cj(b);return}function ji(a){a=a|0;var b=0,c=0,d=0,e=0,f=0,g=0,h=0;f=k[a+20>>2]|0;h=f+8|0;g=k[h>>2]|0;h=k[h+4>>2]|0;b=f+16|0;d=b;c=k[d>>2]|0;d=sl(c|0,k[d+4>>2]|0,4,0)|0;e=M;if((h|0)<(e|0)|(h|0)==(e|0)&g>>>0>>0){h=0;return h|0}h=(k[f>>2]|0)+c|0;h=l[h>>0]|l[h+1>>0]<<8|l[h+2>>0]<<16|l[h+3>>0]<<24;g=b;k[g>>2]=d;k[g+4>>2]=e;k[(k[a+4>>2]|0)+64>>2]=h;h=1;return h|0}function ki(a){a=a|0;var b=0,c=0;k[a>>2]=3968;b=k[a+96>>2]|0;if(b|0)cn(b);b=k[a+84>>2]|0;if(b|0)cn(b);b=k[a+72>>2]|0;if(b|0)cn(b);b=k[a+60>>2]|0;if(b|0)cn(b);k[a>>2]=3456;c=k[a+32>>2]|0;if(!c)return;b=a+36|0;a=k[b>>2]|0;if((a|0)!=(c|0))k[b>>2]=a+(~((a+-4-c|0)>>>2)<<2);cn(c);return}function li(a,b){a=a|0;b=b|0;var c=0,d=0,e=0,f=0,g=0;k[a>>2]=0;g=a+4|0;k[g>>2]=0;k[a+8>>2]=0;f=b+4|0;c=(k[f>>2]|0)-(k[b>>2]|0)|0;d=c>>2;if(!d)return;if(d>>>0>1073741823)hm(a);e=xk(c)|0;k[g>>2]=e;k[a>>2]=e;k[a+8>>2]=e+(d<<2);a=k[b>>2]|0;c=(k[f>>2]|0)-a|0;if((c|0)<=0)return;Ii(e|0,a|0,c|0)|0;k[g>>2]=e+(c>>2<<2);return}function mi(a){a=a|0;var b=0,c=0;k[a>>2]=3712;b=k[a+96>>2]|0;if(b|0)cn(b);b=k[a+84>>2]|0;if(b|0)cn(b);b=k[a+72>>2]|0;if(b|0)cn(b);b=k[a+60>>2]|0;if(b|0)cn(b);k[a>>2]=3456;c=k[a+32>>2]|0;if(!c)return;b=a+36|0;a=k[b>>2]|0;if((a|0)!=(c|0))k[b>>2]=a+(~((a+-4-c|0)>>>2)<<2);cn(c);return}function ni(a){a=a|0;var b=0,c=0,d=0,e=0;k[a>>2]=5700;b=k[a+64>>2]|0;c=b;if(b|0){d=a+68|0;e=k[d>>2]|0;if((e|0)!=(b|0))k[d>>2]=e+(~((e+-4-c|0)>>>2)<<2);cn(b)}k[a+12>>2]=5724;b=k[a+32>>2]|0;if(b|0)cn(b);b=k[a+20>>2]|0;if(!b){cn(a);return}cn(b);cn(a);return}function oi(a){a=a|0;var b=0,c=0,d=0;if(!(k[a+64>>2]|0)){d=0;return d|0}d=a+4|0;c=a+8|0;a=k[d>>2]|0;if(((k[c>>2]|0)-a|0)>0)b=0;else{d=1;return d|0}while(1){a=k[a+(b<<2)>>2]|0;b=b+1|0;if(!(sj(a,a)|0)){a=0;b=5;break}a=k[d>>2]|0;if((b|0)>=((k[c>>2]|0)-a>>2|0)){a=1;b=5;break}}if((b|0)==5)return a|0;return 0}function pi(a){a=a|0;var b=0,c=0,d=0,e=0;k[a>>2]=5792;b=k[a+64>>2]|0;c=b;if(b|0){d=a+68|0;e=k[d>>2]|0;if((e|0)!=(b|0))k[d>>2]=e+(~((e+-4-c|0)>>>2)<<2);cn(b)}k[a+12>>2]=5772;b=k[a+32>>2]|0;if(b|0)cn(b);b=k[a+20>>2]|0;if(!b){cn(a);return}cn(b);cn(a);return}function qi(a){a=a|0;var b=0,c=0,d=0,e=0;k[a>>2]=5700;b=k[a+64>>2]|0;c=b;if(b|0){d=a+68|0;e=k[d>>2]|0;if((e|0)!=(b|0))k[d>>2]=e+(~((e+-4-c|0)>>>2)<<2);cn(b)}k[a+12>>2]=5724;b=k[a+32>>2]|0;if(b|0)cn(b);b=k[a+20>>2]|0;if(!b)return;cn(b);return}function ri(a,b){a=+a;b=b|0;var c=0,d=0,e=0;p[u>>3]=a;c=k[u>>2]|0;d=k[u+4>>2]|0;e=Zk(c|0,d|0,52)|0;switch(e&2047){case 0:{if(a!=0.0){a=+ri(a*18446744073709551616.0,b);c=(k[b>>2]|0)+-64|0}else c=0;k[b>>2]=c;break}case 2047:break;default:{k[b>>2]=(e&2047)+-1022;k[u>>2]=c;k[u+4>>2]=d&-2146435073|1071644672;a=+p[u>>3]}}return +a}function si(a){a=a|0;var b=0,c=0,d=0,e=0;k[a>>2]=5792;b=k[a+64>>2]|0;c=b;if(b|0){d=a+68|0;e=k[d>>2]|0;if((e|0)!=(b|0))k[d>>2]=e+(~((e+-4-c|0)>>>2)<<2);cn(b)}k[a+12>>2]=5772;b=k[a+32>>2]|0;if(b|0)cn(b);b=k[a+20>>2]|0;if(!b)return;cn(b);return}function ti(a){a=a|0;var b=0,c=0,d=0;k[a>>2]=4032;b=k[a+76>>2]|0;if(b|0)cn(b);d=a+68|0;b=k[d>>2]|0;k[d>>2]=0;if(b|0)an(b);k[a>>2]=3456;d=k[a+32>>2]|0;if(!d){cn(a);return}b=a+36|0;c=k[b>>2]|0;if((c|0)!=(d|0))k[b>>2]=c+(~((c+-4-d|0)>>>2)<<2);cn(d);cn(a);return}function ui(a,b,c){a=a|0;b=b|0;c=c|0;var d=0;if(b>>>0>0|(b|0)==0&a>>>0>4294967295){while(1){d=nk(a|0,b|0,10,0)|0;c=c+-1|0;i[c>>0]=d|48;d=a;a=dm(a|0,b|0,10,0)|0;if(!(b>>>0>9|(b|0)==9&d>>>0>4294967295))break;else b=M}b=a}else b=a;if(b)while(1){c=c+-1|0;i[c>>0]=(b>>>0)%10|0|48;if(b>>>0<10)break;else b=(b>>>0)/10|0}return c|0}function vi(a){a=a|0;var b=0,c=0,d=0;k[a>>2]=4096;d=a+36|0;b=k[d>>2]|0;k[d>>2]=0;if(b|0)an(b);k[a>>2]=3404;d=a+28|0;b=k[d>>2]|0;k[d>>2]=0;if(b|0)Ta[k[(k[b>>2]|0)+4>>2]&127](b);b=k[a+16>>2]|0;if(!b){cn(a);return}c=a+20|0;d=k[c>>2]|0;if((d|0)!=(b|0))k[c>>2]=d+(~((d+-4-b|0)>>>2)<<2);cn(b);cn(a);return}function wi(a){a=a|0;var b=0,c=0,d=0,e=0;e=r;r=r+16|0;b=e;c=b;k[c>>2]=0;k[c+4>>2]=0;nf(a,2,b);b=k[a+12>>2]|0;c=a+16|0;d=k[c>>2]|0;if((d|0)==(b|0)){d=a+24|0;k[d>>2]=0;d=a+28|0;k[d>>2]=0;r=e;return}k[c>>2]=d+(~((d+-4-b|0)>>>2)<<2);d=a+24|0;k[d>>2]=0;d=a+28|0;k[d>>2]=0;r=e;return}function xi(a,b,c){a=a|0;b=b|0;c=c|0;var d=0,e=0,f=0;k[a>>2]=0;d=a+4|0;k[d>>2]=0;k[a+8>>2]=0;if(!b)return;if(b>>>0>1073741823)hm(a);f=xk(b<<2)|0;k[d>>2]=f;k[a>>2]=f;e=f+(b<<2)|0;k[a+8>>2]=e;a=f;while(1){k[a>>2]=k[c>>2];b=b+-1|0;if(!b)break;else a=a+4|0}k[d>>2]=e;return}function yi(a){a=a|0;var b=0,c=0,d=0,e=0;k[a>>2]=3200;b=k[a+80>>2]|0;c=b;if(b|0){d=a+84|0;e=k[d>>2]|0;if((e|0)!=(b|0))k[d>>2]=e+(~(((e+-12-c|0)>>>0)/12|0)*12|0);cn(b)}b=k[a+68>>2]|0;if(!b){kh(a);cn(a);return}c=a+72|0;d=k[c>>2]|0;if((d|0)!=(b|0))k[c>>2]=d+(~((d+-4-b|0)>>>2)<<2);cn(b);kh(a);cn(a);return}function zi(a){a=a|0;var b=0,c=0,d=0;k[a>>2]=3776;b=k[a+76>>2]|0;if(b|0)cn(b);d=a+68|0;b=k[d>>2]|0;k[d>>2]=0;if(b|0)an(b);k[a>>2]=3456;d=k[a+32>>2]|0;if(!d){cn(a);return}b=a+36|0;c=k[b>>2]|0;if((c|0)!=(d|0))k[b>>2]=c+(~((c+-4-d|0)>>>2)<<2);cn(d);cn(a);return}function Ai(a){a=a|0;var b=0,c=0,d=0,e=0,f=0;k[a>>2]=3264;d=a+8|0;b=k[d>>2]|0;if(!b){cn(a);return}e=a+12|0;c=k[e>>2]|0;if((c|0)!=(b|0)){do{f=c+-4|0;k[e>>2]=f;c=k[f>>2]|0;k[f>>2]=0;if(c|0)Ta[k[(k[c>>2]|0)+4>>2]&127](c);c=k[e>>2]|0}while((c|0)!=(b|0));b=k[d>>2]|0}cn(b);cn(a);return}function Bi(a,b,c,d){a=a|0;b=b|0;c=c|0;d=d|0;var e=0;a=b+16|0;e=k[a>>2]|0;do if(e){if((e|0)!=(c|0)){d=b+36|0;k[d>>2]=(k[d>>2]|0)+1;k[b+24>>2]=2;i[b+54>>0]=1;break}a=b+24|0;if((k[a>>2]|0)==2)k[a>>2]=d}else{k[a>>2]=c;k[b+24>>2]=d;k[b+36>>2]=1}while(0);return}function Ci(a){a=a|0;var b=0,c=0,d=0,e=0;if(!a)return;b=k[a+68>>2]|0;c=b;if(b|0){d=a+72|0;e=k[d>>2]|0;if((e|0)!=(b|0))k[d>>2]=e+(~((e+-4-c|0)>>>2)<<2);cn(b)}e=a+64|0;b=k[e>>2]|0;k[e>>2]=0;if(b|0){c=k[b>>2]|0;if(c|0){d=b+4|0;if((k[d>>2]|0)!=(c|0))k[d>>2]=c;cn(c)}cn(b)}cn(a);return}function Di(a,b,c){a=a|0;b=b|0;c=c|0;var d=0;if((b|0)<=-1)Ka(14172,14197,63,14211);d=k[a+80>>2]|0;if((((k[a+84>>2]|0)-d|0)/12|0|0)>(b|0)){d=d+(b*12|0)|0;lf(c,d,d+12|0);return 1}else Ka(14216,14197,64,14211);return 0}function Ei(a){a=a|0;var b=0,c=0;k[a>>2]=4032;b=k[a+76>>2]|0;if(b|0)cn(b);c=a+68|0;b=k[c>>2]|0;k[c>>2]=0;if(b|0)an(b);k[a>>2]=3456;c=k[a+32>>2]|0;if(!c)return;b=a+36|0;a=k[b>>2]|0;if((a|0)!=(c|0))k[b>>2]=a+(~((a+-4-c|0)>>>2)<<2);cn(c);return}function Fi(a,b,c,d,e,f){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;f=f|0;var g=0,h=0,i=0;k[a>>2]=b;i=b+16|0;g=k[i+4>>2]|0;h=a+8|0;k[h>>2]=k[i>>2];k[h+4>>2]=g;h=b+24|0;g=k[h+4>>2]|0;b=a+16|0;k[b>>2]=k[h>>2];k[b+4>>2]=g;b=a+40|0;k[b>>2]=c;k[b+4>>2]=d;d=a+48|0;k[d>>2]=e;k[d+4>>2]=f;return}function Gi(a){a=a|0;var b=0,c=0,d=0,e=0;k[a>>2]=3200;b=k[a+80>>2]|0;c=b;if(b|0){d=a+84|0;e=k[d>>2]|0;if((e|0)!=(b|0))k[d>>2]=e+(~(((e+-12-c|0)>>>0)/12|0)*12|0);cn(b)}b=k[a+68>>2]|0;if(!b){kh(a);return}c=a+72|0;d=k[c>>2]|0;if((d|0)!=(b|0))k[c>>2]=d+(~((d+-4-b|0)>>>2)<<2);cn(b);kh(a);return}function Hi(a){a=a|0;var b=0,c=0;k[a>>2]=4096;c=a+36|0;b=k[c>>2]|0;k[c>>2]=0;if(b|0)an(b);k[a>>2]=3404;c=a+28|0;b=k[c>>2]|0;k[c>>2]=0;if(b|0)Ta[k[(k[b>>2]|0)+4>>2]&127](b);c=k[a+16>>2]|0;if(!c)return;b=a+20|0;a=k[b>>2]|0;if((a|0)!=(c|0))k[b>>2]=a+(~((a+-4-c|0)>>>2)<<2);cn(c);return}function Ii(a,b,c){a=a|0;b=b|0;c=c|0;var d=0;if((c|0)>=4096)return Fa(a|0,b|0,c|0)|0;d=a|0;if((a&3)==(b&3)){while(a&3){if(!c)return d|0;i[a>>0]=i[b>>0]|0;a=a+1|0;b=b+1|0;c=c-1|0}while((c|0)>=4){k[a>>2]=k[b>>2];a=a+4|0;b=b+4|0;c=c-4|0}}while((c|0)>0){i[a>>0]=i[b>>0]|0;a=a+1|0;b=b+1|0;c=c-1|0}return d|0}function Ji(a){a=a|0;var b=0,c=0;c=0;while(1){if((l[15782+c>>0]|0)==(a|0)){a=2;break}b=c+1|0;if((b|0)==87){b=15870;c=87;a=5;break}else c=b}if((a|0)==2)if(!c)b=15870;else{b=15870;a=5}if((a|0)==5)while(1){do{a=b;b=b+1|0}while((i[a>>0]|0)!=0);c=c+-1|0;if(!c)break;else a=5}return b|0}function Ki(a,b){a=a|0;b=b|0;switch(b<<24>>24){case 0:{a=xk(16)|0;vl(a);break}case 1:{a=xk(32)|0;vk(a);break}case 2:{a=xk(44)|0;Ak(a);break}case 3:{a=xk(36)|0;ml(a);break}default:a=0}return a|0}function Li(a){a=a|0;var b=0,c=0;k[a>>2]=3776;b=k[a+76>>2]|0;if(b|0)cn(b);c=a+68|0;b=k[c>>2]|0;k[c>>2]=0;if(b|0)an(b);k[a>>2]=3456;c=k[a+32>>2]|0;if(!c)return;b=a+36|0;a=k[b>>2]|0;if((a|0)!=(c|0))k[b>>2]=a+(~((a+-4-c|0)>>>2)<<2);cn(c);return}function Mi(a){a=a|0;var b=0,c=0,d=0,e=0;k[a>>2]=3264;d=a+8|0;b=k[d>>2]|0;if(!b)return;c=a+12|0;a=k[c>>2]|0;if((a|0)!=(b|0)){do{e=a+-4|0;k[c>>2]=e;a=k[e>>2]|0;k[e>>2]=0;if(a|0)Ta[k[(k[a>>2]|0)+4>>2]&127](a);a=k[c>>2]|0}while((a|0)!=(b|0));b=k[d>>2]|0}cn(b);return}function Ni(a,b,c){a=a|0;b=b|0;c=c|0;if(!(Gk(a,b,c)|0)){c=0;return c|0}b=k[b+4>>2]|0;if((c|0)<=-1)Ka(13387,13403,62,13431);a=k[b+4>>2]|0;if(((k[b+8>>2]|0)-a>>2|0)<=(c|0))Ka(13441,13403,63,13431);c=(k[(k[a+(c<<2)>>2]|0)+28>>2]|0)==9;return c|0}function Oi(a){a=a|0;var b=0,c=0,d=0;b=k[a+8>>2]|0;c=k[a+12>>2]|0;if((b|0)==(c|0)){c=1;return c|0}a=a+20|0;while(1){d=k[b>>2]|0;b=b+4|0;if(!(Za[k[(k[d>>2]|0)+16>>2]&127](d,k[a>>2]|0)|0)){b=0;a=5;break}if((b|0)==(c|0)){b=1;a=5;break}}if((a|0)==5)return b|0;return 0}function Pi(a){a=a|0;var b=0;k[a>>2]=4400;b=k[a+72>>2]|0;if(b|0)cn(b);b=k[a+60>>2]|0;if(b|0)cn(b);b=k[a+48>>2]|0;if(b|0)cn(b);b=k[a+36>>2]|0;if(!b){cn(a);return}cn(b);cn(a);return}function Qi(a,b,c){a=a|0;b=b|0;c=c|0;if(!(Va[k[(k[a>>2]|0)+44>>2]&127](a)|0)){c=0;return c|0}c=od(a,b,c)|0;return c|0}function Ri(a){a=a|0;var b=0;k[a>>2]=4656;b=k[a+72>>2]|0;if(b|0)cn(b);b=k[a+60>>2]|0;if(b|0)cn(b);b=k[a+48>>2]|0;if(b|0)cn(b);b=k[a+36>>2]|0;if(!b){cn(a);return}cn(b);cn(a);return}function Si(a){a=a|0;var b=0;k[a>>2]=4976;b=k[a+72>>2]|0;if(b|0)cn(b);b=k[a+60>>2]|0;if(b|0)cn(b);b=k[a+48>>2]|0;if(b|0)cn(b);b=k[a+36>>2]|0;if(!b){cn(a);return}cn(b);cn(a);return}function Ti(a){a=a|0;var b=0,c=0,d=0,e=0,f=0;c=l[a+12>>0]|0;d=a+8|0;b=k[d>>2]|0;if(b>>>0<4096){f=a+4|0;e=(k[f>>2]|0)+-1|0;k[f>>2]=e;b=l[(k[a>>2]|0)+e>>0]|0|b<<8;k[d>>2]=b}a=b&255;c=0-c&255;e=$(b>>>8,c)|0;f=a>>>0>>0;k[d>>2]=f?e+a|0:b-c-e|0;return f|0}function Ui(a){a=a|0;var b=0,c=0,d=0,e=0,f=0;f=r;r=r+64|0;c=f;d=f+40|0;e=c;b=e+40|0;do{k[e>>2]=k[a>>2];e=e+4|0;a=a+4|0}while((e|0)<(b|0));e=ze(c,d)|0;e=e?l[d+7>>0]|0:-1;fn(c+24|0);r=f;return e|0}function Vi(a,b,c){a=a|0;b=b|0;c=c|0;var d=0,e=0,f=0,g=0;d=a+c|0;if((c|0)>=20){b=b&255;f=a&3;g=b|b<<8|b<<16|b<<24;e=d&~3;if(f){f=a+4-f|0;while((a|0)<(f|0)){i[a>>0]=b;a=a+1|0}}while((a|0)<(e|0)){k[a>>2]=g;a=a+4|0}}while((a|0)<(d|0)){i[a>>0]=b;a=a+1|0}return a-c|0}function Wi(a){a=a|0;var b=0;k[a>>2]=5232;b=k[a+72>>2]|0;if(b|0)cn(b);b=k[a+60>>2]|0;if(b|0)cn(b);b=k[a+48>>2]|0;if(b|0)cn(b);b=k[a+36>>2]|0;if(!b){cn(a);return}cn(b);cn(a);return}function Xi(a){a=a|0;var b=0,c=0,d=0;k[a>>2]=3404;d=a+28|0;b=k[d>>2]|0;k[d>>2]=0;if(b|0)Ta[k[(k[b>>2]|0)+4>>2]&127](b);d=k[a+16>>2]|0;if(!d){cn(a);return}b=a+20|0;c=k[b>>2]|0;if((c|0)!=(d|0))k[b>>2]=c+(~((c+-4-d|0)>>>2)<<2);cn(d);cn(a);return}function Yi(a){a=a|0;var b=0;k[a>>2]=4400;b=k[a+72>>2]|0;if(b|0)cn(b);b=k[a+60>>2]|0;if(b|0)cn(b);b=k[a+48>>2]|0;if(b|0)cn(b);b=k[a+36>>2]|0;if(!b)return;cn(b);return}function Zi(a,b,c){a=a|0;b=b|0;c=c|0;var d=0;k[a+4>>2]=b;d=k[b+4>>2]|0;if((c|0)<=-1)Ka(13387,13403,62,13431);b=k[d+4>>2]|0;if(((k[d+8>>2]|0)-b>>2|0)>(c|0)){k[a+8>>2]=k[b+(c<<2)>>2];k[a+12>>2]=c;return 1}else Ka(13441,13403,63,13431);return 0}function _i(a){a=a|0;var b=0;k[a>>2]=4656;b=k[a+72>>2]|0;if(b|0)cn(b);b=k[a+60>>2]|0;if(b|0)cn(b);b=k[a+48>>2]|0;if(b|0)cn(b);b=k[a+36>>2]|0;if(!b)return;cn(b);return}function $i(a){a=a|0;var b=0;k[a>>2]=4976;b=k[a+72>>2]|0;if(b|0)cn(b);b=k[a+60>>2]|0;if(b|0)cn(b);b=k[a+48>>2]|0;if(b|0)cn(b);b=k[a+36>>2]|0;if(!b)return;cn(b);return}function aj(a,b,c,d,e,f){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;f=f|0;if((a|0)==(k[b+8>>2]|0))Gh(0,b,c,d,e);else{a=k[a+8>>2]|0;Ya[k[(k[a>>2]|0)+20>>2]&3](a,b,c,d,e,f)}return}function bj(a,b){a=a|0;b=b|0;var c=0,d=0,e=0;k[a>>2]=0;c=a+4|0;k[c>>2]=0;k[a+8>>2]=0;if(!b)return;if(b>>>0>1073741823)hm(a);d=b<<2;e=xk(d)|0;k[a>>2]=e;b=e+(b<<2)|0;k[a+8>>2]=b;Vi(e|0,0,d|0)|0;k[c>>2]=b;return}function cj(a){a=a|0;var b=0;rk(a);rk(a+40|0);b=a+80|0;k[b>>2]=0;k[b+4>>2]=0;k[b+8>>2]=0;k[b+12>>2]=0;k[b+16>>2]=0;k[b+20>>2]=0;k[b+24>>2]=0;k[b+28>>2]=0;Lm(a+112|0);k[a+128>>2]=-1;k[a+132>>2]=-1;return}function dj(a){a=a|0;var b=0;k[a>>2]=5232;b=k[a+72>>2]|0;if(b|0)cn(b);b=k[a+60>>2]|0;if(b|0)cn(b);b=k[a+48>>2]|0;if(b|0)cn(b);b=k[a+36>>2]|0;if(!b)return;cn(b);return}function ej(a){a=a|0;var b=0,c=0,d=0,e=0;d=k[a>>2]|0;e=a+4|0;b=k[e>>2]|0;c=d;if((b|0)==(d|0))b=d;else{b=b+(~((b+-4-c|0)>>>2)<<2)|0;k[e>>2]=b}k[a+16>>2]=0;k[a+12>>2]=b;if(!d)return;if((b|0)!=(d|0))k[e>>2]=b+(~((b+-4-c|0)>>>2)<<2);cn(d);return}function fj(a){a=a|0;var b=0,c=0;k[a>>2]=3404;c=a+28|0;b=k[c>>2]|0;k[c>>2]=0;if(b|0)Ta[k[(k[b>>2]|0)+4>>2]&127](b);c=k[a+16>>2]|0;if(!c)return;b=a+20|0;a=k[b>>2]|0;if((a|0)!=(c|0))k[b>>2]=a+(~((a+-4-c|0)>>>2)<<2);cn(c);return}function gj(a,b,c){a=a|0;b=b|0;c=c|0;var d=0,e=0,f=0;e=r;r=r+32|0;f=e;d=e+20|0;k[f>>2]=k[a+60>>2];k[f+4>>2]=0;k[f+8>>2]=b;k[f+12>>2]=d;k[f+16>>2]=c;if((Al(Ha(140,f|0)|0)|0)<0){k[d>>2]=-1;a=-1}else a=k[d>>2]|0;r=e;return a|0}function hj(a,b){a=a|0;b=b|0;var c=0;Lk(a);k[a>>2]=5360;c=a+24|0;k[c>>2]=0;k[c+4>>2]=0;k[c+8>>2]=0;k[c+12>>2]=0;k[c+16>>2]=0;k[c+20>>2]=0;c=k[b>>2]|0;k[b>>2]=0;k[a+48>>2]=c;return}function ij(a,b,c){a=a|0;b=b|0;c=c|0;var d=0,e=0;a:do if(!c)a=0;else{while(1){d=i[a>>0]|0;e=i[b>>0]|0;if(d<<24>>24!=e<<24>>24)break;c=c+-1|0;if(!c){a=0;break a}else{a=a+1|0;b=b+1|0}}a=(d&255)-(e&255)|0}while(0);return a|0}function jj(a,b,c){a=a|0;b=b|0;c=c|0;if(!(Jh(k[a+8>>2]|0,(k[b+4>>2]|0)-(k[b>>2]|0)>>2)|0)){c=0;return c|0}c=Ra[k[(k[a>>2]|0)+24>>2]&31](a,b,c)|0;return c|0}function kj(a){a=a|0;if(!(k[a+36>>2]|0))return 0;if(!(k[a+20>>2]|0))return 0;if(!(k[a+24>>2]|0))return 0;if(!(k[a+28>>2]|0))return 0;else return (k[a+32>>2]|0)!=0|0;return 0}function lj(a,b,c,d){a=a|0;b=b|0;c=c|0;d=d|0;if((a|0)==(k[b+8>>2]|0))Bi(0,b,c,d);else{a=k[a+8>>2]|0;_a[k[(k[a>>2]|0)+28>>2]&3](a,b,c,d)}return}function mj(a){a=a|0;var b=0,c=0;b=a+74|0;c=i[b>>0]|0;i[b>>0]=c+255|c;b=k[a>>2]|0;if(!(b&8)){k[a+8>>2]=0;k[a+4>>2]=0;c=k[a+44>>2]|0;k[a+28>>2]=c;k[a+20>>2]=c;k[a+16>>2]=c+(k[a+48>>2]|0);a=0}else{k[a>>2]=b|32;a=-1}return a|0}function nj(a){a=a|0;var b=0,c=0;k[a>>2]=4464;b=k[a+52>>2]|0;if(b|0)cn(b);c=a+44|0;b=k[c>>2]|0;k[c>>2]=0;if(!b){cn(a);return}an(b);cn(a);return}function oj(a){a=a|0;if(!(k[a+60>>2]|0))return 0;if(!(k[a+44>>2]|0))return 0;if(!(k[a+48>>2]|0))return 0;if(!(k[a+52>>2]|0))return 0;else return (k[a+56>>2]|0)!=0|0;return 0}function pj(a,b,c){a=a|0;b=b|0;c=c|0;if((b|0)!=0&(c|0)!=0){nc(a,b,c);return}else{uc(a,0,0);return}}function qj(a){a=a|0;var b=0,c=0;c=a+15&-16|0;b=k[t>>2]|0;a=b+c|0;if((c|0)>0&(a|0)<(b|0)|(a|0)<0){ia()|0;Aa(12);return -1}k[t>>2]=a;if((a|0)>(ha()|0)?(ga()|0)==0:0){Aa(12);k[t>>2]=b;return -1}return b|0}function rj(a){a=a|0;if(!(k[a+20>>2]|0)){a=0;return a|0}if(!(k[a+24>>2]|0)){a=0;return a|0}if(!(k[a+28>>2]|0)){a=0;return a|0}a=(k[a+32>>2]|0)!=0;return a|0}function sj(a,b){a=a|0;b=b|0;var c=0,d=0,e=0;c=r;r=r+16|0;d=c+4|0;e=c;k[e>>2]=0;k[d>>2]=k[e>>2];b=Yb(a,b,d)|0;r=c;return b|0}function tj(a,b,c,d){a=a|0;b=b|0;c=c|0;d=d|0;var e=0,f=0;e=k[c>>2]|0;d=a;c=b-a>>2;while(1){if(!c)break;b=(c|0)/2|0;f=d+(b<<2)|0;a=(k[f>>2]|0)>>>0>>0;d=a?f+4|0:d;c=a?c+-1-b|0:b}return d|0}function uj(a){a=a|0;var b=0,c=0;k[a>>2]=4720;b=k[a+52>>2]|0;if(b|0)cn(b);c=a+44|0;b=k[c>>2]|0;k[c>>2]=0;if(!b){cn(a);return}an(b);cn(a);return}function vj(a){a=a|0;var b=0,c=0;k[a>>2]=5040;b=k[a+52>>2]|0;if(b|0)cn(b);c=a+44|0;b=k[c>>2]|0;k[c>>2]=0;if(!b){cn(a);return}an(b);cn(a);return}function wj(a){a=a|0;var b=0;k[a>>2]=0;b=a+8|0;k[b>>2]=0;k[b+4>>2]=0;k[b+8>>2]=0;k[b+12>>2]=0;i[a+24>>0]=1;k[a+28>>2]=9;b=a+40|0;k[b>>2]=0;k[b+4>>2]=0;k[b+8>>2]=0;k[b+12>>2]=0;k[a+56>>2]=-1;j[a+60>>1]=0;return}function xj(a){a=a|0;if(!(k[a+44>>2]|0)){a=0;return a|0}if(!(k[a+48>>2]|0)){a=0;return a|0}if(!(k[a+52>>2]|0)){a=0;return a|0}a=(k[a+56>>2]|0)!=0;return a|0}function yj(a,b){a=a|0;b=b|0;var c=0,d=0;d=a;c=d+64|0;do{k[d>>2]=k[b>>2];d=d+4|0;b=b+4|0}while((d|0)<(c|0));d=a+64|0;k[d>>2]=0;k[d+4>>2]=0;k[d+8>>2]=0;k[d+12>>2]=0;k[d+16>>2]=0;i[d+20>>0]=0;return}function zj(a,b,c){a=a|0;b=b|0;c=c|0;if(!(Gk(a,b,c)|0)){c=0;return c|0}a=k[a+8>>2]|0;if((i[a+24>>0]|0)!=3){c=0;return c|0}c=(k[a+28>>2]|0)==9;return c|0}function Aj(a){a=a|0;var b=0,c=0;k[a>>2]=5296;b=k[a+52>>2]|0;if(b|0)cn(b);c=a+44|0;b=k[c>>2]|0;k[c>>2]=0;if(!b){cn(a);return}an(b);cn(a);return}function Bj(a,b){a=a|0;b=b|0;ef(a,b,3140);b=b*3|0;Cf(a+12|0,b,3136);Xh(a+24|0,b);return}function Cj(a){a=a|0;var b=0;k[a>>2]=4464;b=k[a+52>>2]|0;if(b|0)cn(b);b=a+44|0;a=k[b>>2]|0;k[b>>2]=0;if(!a)return;an(a);return}function Dj(a,b,c,d){a=a|0;b=b|0;c=c|0;d=d|0;var e=0,f=0;e=$(c,b)|0;if((k[d+76>>2]|0)>-1){f=(gn(d)|0)==0;a=qh(a,e,d)|0;if(!f)fn(d)}else a=qh(a,e,d)|0;if((a|0)!=(e|0))c=(a>>>0)/(b>>>0)|0;return c|0}function Ej(a){a=a|0;var b=0,c=0,d=0;b=r;r=r+16|0;c=b;d=k[a+4>>2]|0;d=(k[d+56>>2]|0)-(k[d+52>>2]|0)>>2;i[c>>0]=0;lg(a+20|0,d,c);r=b;return}function Fj(a){a=a|0;var b=0;k[a>>2]=4720;b=k[a+52>>2]|0;if(b|0)cn(b);b=a+44|0;a=k[b>>2]|0;k[b>>2]=0;if(!a)return;an(a);return}function Gj(a){a=a|0;var b=0;k[a>>2]=5040;b=k[a+52>>2]|0;if(b|0)cn(b);b=a+44|0;a=k[b>>2]|0;k[b>>2]=0;if(!a)return;an(a);return}function Hj(a,b){a=a|0;b=b|0;if(k[b+56>>2]|0){b=0;return b|0}if((i[b+24>>0]|0)!=3){b=0;return b|0}k[a+36>>2]=b;b=1;return b|0}function Ij(a){a=a|0;var b=0,c=0,d=0;k[a>>2]=3456;b=k[a+32>>2]|0;if(!b){cn(a);return}c=a+36|0;d=k[c>>2]|0;if((d|0)!=(b|0))k[c>>2]=d+(~((d+-4-b|0)>>>2)<<2);cn(b);cn(a);return}function Jj(a){a=a|0;var b=0,c=0,d=0;b=r;r=r+16|0;c=b;d=k[a+4>>2]|0;d=(k[d+28>>2]|0)-(k[d+24>>2]|0)>>2;i[c>>0]=0;lg(a+20|0,d,c);r=b;return}function Kj(a){a=a|0;switch(a|0){case 11:case 2:case 1:{a=1;break}case 4:case 3:{a=2;break}case 6:case 5:{a=4;break}case 8:case 7:{a=8;break}case 9:{a=4;break}case 10:{a=8;break}default:a=-1}return a|0}function Lj(a){a=a|0;k[a>>2]=5748;nh(a+8|0);cn(a);return}function Mj(a,b){a=a|0;b=b|0;if(k[b+56>>2]|0){b=0;return b|0}if((i[b+24>>0]|0)!=3){b=0;return b|0}k[a+60>>2]=b;b=1;return b|0}function Nj(a,b){a=a|0;b=b|0;var c=0,d=0,e=0,f=0;f=a&65535;e=b&65535;c=$(e,f)|0;d=a>>>16;a=(c>>>16)+($(e,d)|0)|0;e=b>>>16;b=$(e,f)|0;return (M=(a>>>16)+($(e,d)|0)+(((a&65535)+b|0)>>>16)|0,a+b<<16|c&65535|0)|0}function Oj(a){a=a|0;var b=0,c=0;i[a+36>>0]=0;c=sl(k[a+32>>2]|0,0,7,0)|0;c=Zk(c|0,M|0,3)|0;a=a+16|0;b=a;b=sl(c|0,M|0,k[b>>2]|0,k[b+4>>2]|0)|0;k[a>>2]=b;k[a+4>>2]=M;return}function Pj(a){a=a|0;var b=0;k[a>>2]=5296;b=k[a+52>>2]|0;if(b|0)cn(b);b=a+44|0;a=k[b>>2]|0;k[b>>2]=0;if(!a)return;an(a);return}function Qj(a){a=a|0;k[a>>2]=0;cg(a+8|0);Fm(a+776|0);jl(a+800|0);jl(a+820|0);jl(a+840|0);return}function Rj(a){a=a|0;k[a>>2]=5748;nh(a+8|0);return}function Sj(a,b){a=a|0;b=b|0;var c=0;if((b|0)==-1|(b|0)>3){c=-1;return c|0}c=k[a+16+(b*12|0)>>2]|0;if(((k[a+16+(b*12|0)+4>>2]|0)-c|0)<=0){c=-1;return c|0}c=k[c>>2]|0;return c|0}function Tj(a,b,c,d,e,f){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;f=f|0;if((a|0)==(k[b+8>>2]|0))Gh(0,b,c,d,e);return}function Uj(a){a=a|0;var b=0;k[a>>2]=0;k[a+4>>2]=0;k[a+8>>2]=0;k[a+12>>2]=0;k[a+16>>2]=0;k[a+20>>2]=0;i[a+24>>0]=1;a=a+28|0;b=a+40|0;do{k[a>>2]=0;a=a+4|0}while((a|0)<(b|0));return}function Vj(a,b){a=a|0;b=b|0;var c=0;if((b|0)<=-1)Ka(13387,13403,54,13431);c=k[a+4>>2]|0;if(((k[a+8>>2]|0)-c>>2|0)>(b|0))return k[c+(b<<2)>>2]|0;else Ka(13441,13403,55,13431);return 0}function Wj(a,b,c){a=a|0;b=b|0;c=c|0;var d=0;if((b|0)<(a|0)&(a|0)<(b+c|0)){d=a;b=b+c|0;a=a+c|0;while((c|0)>0){a=a-1|0;b=b-1|0;c=c-1|0;i[a>>0]=i[b>>0]|0}a=d}else Ii(a,b,c)|0;return a|0}function Xj(a){a=a|0;k[a>>2]=0;Dg(a+8|0);Lm(a+520|0);jl(a+536|0);jl(a+556|0);jl(a+576|0);return}function Yj(a){a=a|0;var b=0,c=0,d=0,e=0;if(!a)return;b=k[a>>2]|0;c=b;if(b|0){d=a+4|0;e=k[d>>2]|0;if((e|0)!=(b|0))k[d>>2]=e+(~((e+-4-c|0)>>>2)<<2);cn(b)}cn(a);return}function Zj(a){a=a|0;var b=0,c=0;k[a>>2]=3456;c=k[a+32>>2]|0;if(!c)return;a=a+36|0;b=k[a>>2]|0;if((b|0)!=(c|0))k[a>>2]=b+(~((b+-4-c|0)>>>2)<<2);cn(c);return}function _j(a,b,c){a=a|0;b=b|0;c=c|0;var d=0,e=0;if((b|0)>0)d=0;else return;do{e=k[a+(d<<2)>>2]|0;k[c+(d<<2)>>2]=e<<31>>31^e>>>1;d=d+1|0}while((d|0)!=(b|0));return}function $j(a){a=a|0;var b=0,c=0,d=0;k[a>>2]=3236;b=k[a+4>>2]|0;if(!b){cn(a);return}c=a+8|0;d=k[c>>2]|0;if((d|0)!=(b|0))k[c>>2]=d+(~((d+-4-b|0)>>>2)<<2);cn(b);cn(a);return}function ak(a,b,c){a=a|0;b=b|0;c=c|0;var d=0,e=0;e=r;r=r+16|0;d=e;k[d>>2]=k[c>>2];a=Ra[k[(k[a>>2]|0)+16>>2]&31](a,b,d)|0;if(a)k[c>>2]=k[d>>2];r=e;return a&1|0}function bk(){var a=0,b=0;a=sk()|0;if((a|0?(b=k[a>>2]|0,b|0):0)?(a=b+48|0,(k[a>>2]&-256|0)==1126902528?(k[a+4>>2]|0)==1129074247:0):0)Cl(k[b+12>>2]|0);Cl(wm()|0)}function ck(a){a=a|0;var b=0;b=i[w+(a&255)>>0]|0;if((b|0)<8)return b|0;b=i[w+(a>>8&255)>>0]|0;if((b|0)<8)return b+8|0;b=i[w+(a>>16&255)>>0]|0;if((b|0)<8)return b+16|0;return (i[w+(a>>>24)>>0]|0)+24|0}function dk(a,b){a=a|0;b=b|0;var c=0;i[b+84>>0]=1;c=k[b+68>>2]|0;a=b+72|0;b=k[a>>2]|0;if((b|0)==(c|0))return 1;k[a>>2]=b+(~((b+-4-c|0)>>>2)<<2);return 1}function ek(a,b,c,d){a=a|0;b=b|0;c=c|0;d=d|0;if((a|0)==(k[b+8>>2]|0))Bi(0,b,c,d);return}function fk(a){a=a|0;var b=0,c=0;k[a>>2]=3236;c=k[a+4>>2]|0;if(!c)return;a=a+8|0;b=k[a>>2]|0;if((b|0)!=(c|0))k[a>>2]=b+(~((b+-4-c|0)>>>2)<<2);cn(c);return}function gk(a){a=a|0;var b=0;k[a>>2]=5724;b=k[a+20>>2]|0;if(b|0)cn(b);b=k[a+8>>2]|0;if(!b){cn(a);return}cn(b);cn(a);return}function hk(a){a=a|0;var b=0,c=0;c=k[a>>2]|0;if(!c)return;a=a+4|0;b=k[a>>2]|0;if((b|0)!=(c|0))k[a>>2]=b+(~((b+-8-c|0)>>>3)<<3);cn(c);return}function ik(a){a=a|0;var b=0,c=0;c=k[a>>2]|0;if(!c)return;a=a+4|0;b=k[a>>2]|0;if((b|0)!=(c|0))k[a>>2]=b+(~((b+-4-c|0)>>>2)<<2);cn(c);return}function jk(a){a=a|0;k[a>>2]=0;jl(a+8|0);jl(a+28|0);jl(a+48|0);jl(a+68|0);return}function kk(a){a=a|0;k[a>>2]=0;Lm(a+8|0);jl(a+24|0);jl(a+44|0);jl(a+64|0);return}function lk(a){a=a|0;var b=0;k[a>>2]=5772;b=k[a+20>>2]|0;if(b|0)cn(b);b=k[a+8>>2]|0;if(!b){cn(a);return}cn(b);cn(a);return}function mk(a,b){a=a|0;b=b|0;if(!b)return 0;else Ka(9600,9611,77,9691);return 0}function nk(a,b,c,d){a=a|0;b=b|0;c=c|0;d=d|0;var e=0,f=0;f=r;r=r+16|0;e=f|0;ld(a,b,c,d,e)|0;r=f;return (M=k[e+4>>2]|0,k[e>>2]|0)|0}function ok(a){a=a|0;var b=0;k[a>>2]=5724;b=k[a+20>>2]|0;if(b|0)cn(b);a=k[a+8>>2]|0;if(!a)return;cn(a);return}function pk(a,b,c,d){a=a|0;b=b|0;c=c|0;d=d|0;return Yc(b,c,d)|0}function qk(a){a=a|0;bl(a);k[a>>2]=3200;a=a+68|0;k[a>>2]=0;k[a+4>>2]=0;k[a+8>>2]=0;k[a+12>>2]=0;k[a+16>>2]=0;k[a+20>>2]=0;return}function rk(a){a=a|0;var b=0;k[a>>2]=0;b=a+8|0;k[b>>2]=0;k[b+4>>2]=0;k[b+8>>2]=0;k[b+12>>2]=0;em(a+24|0);i[a+36>>0]=0;return}function sk(){var a=0,b=0;a=r;r=r+16|0;if(!(Ca(18968,3)|0)){b=ua(k[4743]|0)|0;r=a;return b|0}else Vk(18134,a);return 0}function tk(a){a=a|0;var b=0;k[a>>2]=5772;b=k[a+20>>2]|0;if(b|0)cn(b);a=k[a+8>>2]|0;if(!a)return;cn(a);return}function uk(a,b,c,d){a=a|0;b=b|0;c=c|0;d=d|0;var e=0,f=0;e=a;f=c;c=Nj(e,f)|0;a=M;return (M=($(b,f)|0)+($(d,e)|0)+a|a&0,c|0|0)|0}function vk(a){a=a|0;vl(a);k[a>>2]=3404;a=a+16|0;k[a>>2]=0;k[a+4>>2]=0;k[a+8>>2]=0;k[a+12>>2]=0;return}function wk(a){a=a|0;wj(a);a=a+64|0;k[a>>2]=0;k[a+4>>2]=0;k[a+8>>2]=0;k[a+12>>2]=0;k[a+16>>2]=0;i[a+20>>0]=0;return}function xk(a){a=a|0;var b=0;b=(a|0)==0?1:a;while(1){a=cb(b)|0;if(a|0)break;a=sm()|0;if(!a){a=0;break}Xa[a&3]()}return a|0}function yk(a){a=a|0;k[a>>2]=0;k[a+4>>2]=0;k[a+8>>2]=0;k[a+12>>2]=0;k[a+16>>2]=0;k[a+20>>2]=0;k[a+24>>2]=0;k[a+28>>2]=0;return}function zk(a){a=a|0;var b=0;b=r;r=r+16|0;Gb(a);if(!(va(k[4743]|0,0)|0)){r=b;return}else Vk(18233,b)}function Ak(a){a=a|0;vk(a);k[a>>2]=4096;k[a+32>>2]=-1;k[a+36>>2]=0;o[a+40>>2]=da(0.0);return}function Bk(a){a=a|0;k[a>>2]=3264;a=a+4|0;k[a>>2]=0;k[a+4>>2]=0;k[a+8>>2]=0;k[a+12>>2]=0;k[a+16>>2]=0;j[a+20>>1]=0;return}function Ck(a,b,c){a=a|0;b=b|0;c=c|0;k[a>>2]=b;b=a+8|0;k[b>>2]=c;k[b+4>>2]=0;c=a+16|0;k[c>>2]=0;k[c+4>>2]=0;return}function Dk(a){a=a|0;k[a>>2]=0;k[a+4>>2]=0;k[a+8>>2]=0;a=a+16|0;k[a>>2]=0;k[a+4>>2]=0;k[a+8>>2]=0;k[a+12>>2]=0;return}function Ek(a,b,c){a=a|0;b=b|0;c=c|0;k[a+28>>2]=c;return wh(a,b,c)|0}function Fk(a,b,c,d){a=a|0;b=b|0;c=c|0;d=d|0;return Sf(b,c,d)|0}function Gk(a,b,c){a=a|0;b=b|0;c=c|0;return Zi(a,b,c)|0}function Hk(a){a=a|0;var b=0,c=0;b=r;r=r+16|0;c=b;k[c>>2]=k[a+60>>2];a=Al(za(6,c|0)|0)|0;r=b;return a|0}function Ik(a,b,c){a=a|0;b=b|0;c=c|0;return Sj(b,c)|0}function Jk(a,b,c,d,e){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;return ((e|0)==2?0:e+1|0)|0}function Kk(a,b,c,d,e,f,g){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;f=f|0;g=g|0;return Ua[a&63](b|0,c|0,d|0,e|0,f|0,g|0)|0}function Lk(a){a=a|0;k[a>>2]=3236;a=a+4|0;k[a>>2]=0;k[a+4>>2]=0;k[a+8>>2]=0;k[a+12>>2]=0;k[a+16>>2]=0;return}function Mk(a){a=a|0;Ed(a);cn(a);return}function Nk(a,b,c){a=a|0;b=da(b);c=c|0;var d=Pa;d=da(da(1.0)/da(c|0));o[a+4>>2]=d;o[a>>2]=b;return}function Ok(){var a=0;a=r;r=r+16|0;if(!(ya(18972,96)|0)){r=a;return}else Vk(18183,a)}function Pk(a){a=a|0;he(a);cn(a);return}function Qk(a,b,c,d){a=a|0;b=b|0;c=c|0;d=d|0;return Di(b,c,d)|0}function Rk(a,b,c,d,e,f,g){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;f=f|0;g=g|0;Ya[a&3](b|0,c|0,d|0,e|0,f|0,g|0)}function Sk(a){a=a|0;if(!(k[a+28>>2]|0))return 0;else return Va[k[(k[a>>2]|0)+48>>2]&127](a)|0;return 0}function Tk(a,b,c){a=a|0;b=b|0;c=c|0;if((c|0)<32){M=b<>>32-c;return a<>2]|0;return Za[k[(k[a>>2]|0)+16>>2]&127](a,b)|0}function Vk(a,b){a=a|0;b=b|0;var c=0;c=r;r=r+16|0;k[c>>2]=b;b=k[1481]|0;pg(b,a,c)|0;ei(10,b)|0;Ba()}function Wk(a,b){a=a|0;b=b|0;a=k[a+32>>2]|0;return Za[k[(k[a>>2]|0)+12>>2]&127](a,b)|0}function Xk(a,b){a=a|0;b=b|0;a=k[a+32>>2]|0;return Za[k[(k[a>>2]|0)+20>>2]&127](a,b)|0}function Yk(a,b,c){a=a|0;b=b|0;c=c|0;return Ik(a,b,c)|0}function Zk(a,b,c){a=a|0;b=b|0;c=c|0;if((c|0)<32){M=b>>>c;return a>>>c|(b&(1<>>c-32|0}function _k(a){a=a|0;Ud(a);cn(a);return}function $k(){}function al(a,b,c,d){a=a|0;b=b|0;c=c|0;d=d|0;d=b-d-(c>>>0>a>>>0|0)>>>0;return (M=d,a-c>>>0|0)|0}function bl(a){a=a|0;var b=0;k[a>>2]=3164;a=a+4|0;b=a+64|0;do{k[a>>2]=0;a=a+4|0}while((a|0)<(b|0));return}function cl(a){a=a|0;return 4}function dl(a,b,c){a=a|0;b=b|0;c=c|0;k[a+16>>2]=b;k[a+20>>2]=c;return 1}function el(a,b,c,d,e,f){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;f=f|0;Sa[a&3](b|0,c|0,d|0,e|0,f|0)}function fl(a){a=a|0;a=k[a+32>>2]|0;return Va[k[(k[a>>2]|0)+28>>2]&127](a)|0}function gl(a,b){a=a|0;b=b|0;return Za[k[(k[a>>2]|0)+48>>2]&127](a,b)|0}function hl(a){a=a|0;a=k[a+32>>2]|0;return Va[k[(k[a>>2]|0)+24>>2]&127](a)|0}function il(a,b){a=a|0;b=b|0;return wl(b)|0}function jl(a){a=a|0;k[a>>2]=0;k[a+4>>2]=0;k[a+8>>2]=0;k[a+12>>2]=0;k[a+16>>2]=0;return}function kl(a,b){a=a|0;b=b|0;k[a+4>>2]=b;return 1}function ll(a){a=a|0;a=k[a+32>>2]|0;return Va[k[(k[a>>2]|0)+36>>2]&127](a)|0}function ml(a){a=a|0;vk(a);k[a>>2]=4156;k[a+32>>2]=-1;return}function nl(a,b){a=a|0;b=b|0;k[a+8>>2]=b;k[a+12>>2]=-1;return 1}function ol(a,b){a=a|0;b=b|0;return rl(a,b)|0}function pl(a){a=a|0;k[a+12>>2]=0;k[a+16>>2]=0;k[a>>2]=0;o[a+4>>2]=da(0.0);return}function ql(a,b,c){a=a|0;b=b|0;c=c|0;return Vj(b,c)|0}function rl(a,b){a=a|0;b=b|0;return Ui(b)|0}function sl(a,b,c,d){a=a|0;b=b|0;c=c|0;d=d|0;c=a+c>>>0;return (M=b+d+(c>>>0>>0|0)>>>0,c|0)|0}function tl(a,b){a=a|0;b=b|0;return Dl(b)|0}function ul(){var a=0;if(!(k[4606]|0))a=18468;else{a=(ln()|0)+64|0;a=k[a>>2]|0}return a|0}function vl(a){a=a|0;k[a>>2]=3368;k[a+4>>2]=0;k[a+8>>2]=0;k[a+12>>2]=-1;return}function wl(a){a=a|0;return Kf(a)|0}function xl(a){a=a|0;if(!a)return;Ta[k[(k[a>>2]|0)+4>>2]&127](a);return}function yl(a,b,c,d,e){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;_a[a&3](b|0,c|0,d|0,e|0)}function zl(a){a=a|0;var b=0;b=a+60|0;do{k[a>>2]=0;a=a+4|0}while((a|0)<(b|0));return}function Al(a){a=a|0;var b=0;if(a>>>0>4294963200){b=ul()|0;k[b>>2]=0-a;a=-1}return a|0}function Bl(a){a=a|0;if(!a)a=0;else a=(tg(a,984,1056,0)|0)!=0;return a&1|0}function Cl(a){a=a|0;var b=0;b=r;r=r+16|0;Xa[a&3]();Vk(18286,b)}function Dl(a){a=a|0;return mh(a)|0}function El(a){a=a|0;lh(a);cn(a);return}function Fl(a,b){a=a|0;b=b|0;return da(Ml(a,b))}function Gl(a){a=a|0;Nl(a);k[a>>2]=5592;k[a+32>>2]=0;return}function Hl(a,b,c,d){a=a|0;b=b|0;c=c|0;d=d|0;return Ra[a&31](b|0,c|0,d|0)|0}function Il(a,b,c){a=a|0;b=b|0;c=c|0;Ck(a,b,c);return}function Jl(a){a=a|0;if(!a)return;fn(a+24|0);cn(a);return}function Kl(){var a=0;a=xk(64)|0;wj(a);return a|0}function Ll(a){a=a|0;return k[a+8>>2]|0}function Ml(a,b){a=a|0;b=b|0;return da(o[(k[a>>2]|0)+(b<<2)>>2])}function Nl(a){a=a|0;Bk(a);k[a>>2]=3308;k[a+28>>2]=0;return}function Ol(a){a=a|0;return i[(k[a+8>>2]|0)+24>>0]|0}function Pl(a,b){a=a|0;b=b|0;return -1}function Ql(a){a=a|0;return 3}function Rl(a,b){a=a|0;b=b|0;return _l(a,b)|0}function Sl(a,b,c,d){a=a|0;b=b|0;c=c|0;d=d|0;Wa[a&7](b|0,c|0,d|0)}function Tl(){var a=0;a=xk(88)|0;wk(a);return a|0}function Ul(a){a=a|0;return k[a+4>>2]|0}function Vl(a){a=a|0;var b=0;b=r;r=r+a|0;r=r+15&-16;return b|0}function Wl(a,b){a=a|0;b=b|0;if(!a)a=0;else a=Rh(a,b,0)|0;return a|0}function Xl(a){a=a|0;return ((k[a+84>>2]|0)-(k[a+80>>2]|0)|0)/12|0|0}function Yl(){var a=0;a=xk(12)|0;em(a);return a|0}function Zl(){var a=0;a=xk(40)|0;rk(a);return a|0}function _l(a,b){a=a|0;b=b|0;return k[(k[a>>2]|0)+(b<<2)>>2]|0}function $l(a,b,c,d,e,f){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;f=f|0;ea(3);return 0}function am(a){a=a|0;o[a>>2]=da(1.0);o[a+4>>2]=da(1.0);return}function bm(a){a=a|0;Lk(a);k[a>>2]=5504;return}function cm(a){a=a|0;return (k[a+8>>2]|0)-(k[a+4>>2]|0)>>2|0}function dm(a,b,c,d){a=a|0;b=b|0;c=c|0;d=d|0;return ld(a,b,c,d,0)|0}function em(a){a=a|0;k[a>>2]=0;k[a+4>>2]=0;k[a+8>>2]=0;return}function fm(){var a=0;a=xk(68)|0;bl(a);return a|0}function gm(a){a=a|0;Ka(17815,17697,315,17838)}function hm(a){a=a|0;Ka(17674,17697,304,17794)}function im(a,b,c){a=a|0;b=b|0;c=c|0;return Za[a&127](b|0,c|0)|0}function jm(a){a=a|0;Nl(a);k[a>>2]=5532;return}function km(a,b,c,d,e,f){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;f=f|0;ea(7)}function lm(){var a=0;a=xk(1)|0;fn(a);return a|0}function mm(a){a=a|0;if(!a)return;cn(a);return}function nm(a,b){a=a|0;b=b|0;if(!x){x=a;y=b}}function om(){var a=0;a=xk(92)|0;qk(a);return a|0}function pm(a){a=a|0;return (i[a+32>>0]|0)!=0|0}function qm(a,b,c,d,e){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;ea(1)}function rm(a){a=a|0;if(!(k[a+68>>2]|0))fn(a);return}function sm(){var a=0;a=k[4744]|0;k[4744]=a+0;return a|0}function tm(a){a=a|0;return i[a+24>>0]|0}function um(a){a=a|0;return m[a+60>>1]|0|0}function vm(a){a=a|0;return k[a+56>>2]|0}function wm(){var a=0;a=k[1606]|0;k[1606]=a+0;return a|0}function xm(a){a=a|0;kh(a);cn(a);return}function ym(a){a=a|0;return 2}function zm(a,b){a=a|0;b=b|0;return 0}function Am(a){a=a|0;return k[a+40>>2]|0}function Bm(a){a=a|0;return k[a+48>>2]|0}function Cm(a,b){a=a|0;b=b|0;return Va[a&127](b|0)|0}function Dm(a){a=a|0;return k[a+28>>2]|0}function Em(a){a=a|0;Ea(a|0)|0;bk()}function Fm(a){a=a|0;p[a+16>>3]=.5;return}function Gm(a){a=a|0;return k[a+80>>2]|0}function Hm(a,b){a=a|0;b=b|0;r=a;s=b}function Im(a){a=a|0;return k[a+64>>2]|0}function Jm(a,b,c,d){a=a|0;b=b|0;c=c|0;d=d|0;ea(9)}function Km(a,b){a=a|0;b=b|0;Ta[a&127](b|0)}function Lm(a){a=a|0;i[a+12>>0]=0;return}function Mm(a,b,c){a=a|0;b=b|0;c=c|0;ea(0);return 0}function Nm(a){a=a|0;return (a&255)<<8|a>>8&255|0}function Om(a){a=a|0;k[a>>2]=6520;return}function Pm(a){a=a|0;return 1}function Qm(a,b){a=+a;b=b|0;return +(+ri(a,b))}function Rm(){return 3}function Sm(a,b,c){a=a|0;b=b|0;c=c|0;ea(5)}function Tm(){return -1}function Um(){return 4}function Vm(){return 1}function Wm(){return 2}function Xm(a,b){a=a|0;b=b|0;ea(8);return 0}function Ym(a){a=a|0;return 18326}function Zm(a){a=a|0;Xa[a&3]()}function _m(){La()}function $m(a){a=a|0;return xk(a)|0}function an(a){a=a|0;cn(a);return}function bn(a){a=a|0;r=a}function cn(a){a=a|0;Gb(a);return}function dn(a){a=a|0;M=a}function en(a){a=a|0;ea(4);return 0}function fn(a){a=a|0;return}function gn(a){a=a|0;return 0}function hn(){return M|0}function jn(){return r|0}function kn(a){a=a|0;ea(2)}function ln(){return 0}function mn(){ea(6)} +function Rc(a,c,d){a=a|0;c=c|0;d=d|0;var e=0,g=0,i=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,v=0;v=u;u=u+64|0;t=v;e=t;g=e+40|0;do{f[e>>2]=0;e=e+4|0}while((e|0)<(g|0));a:do if(pe(t,c)|0){q=(a|0)>0;if(q?(f[t+12>>2]|0)==0:0){j=0;break}j=c+8|0;i=f[j>>2]|0;j=f[j+4>>2]|0;l=c+16|0;e=l;k=f[e>>2]|0;e=Ho(k|0,f[e+4>>2]|0,8,0)|0;g=I;if((!((j|0)<(g|0)|(j|0)==(g|0)&i>>>0>>0)?(m=f[c>>2]|0,n=m+k|0,o=n,o=h[o>>0]|h[o+1>>0]<<8|h[o+2>>0]<<16|h[o+3>>0]<<24,n=n+4|0,n=h[n>>0]|h[n+1>>0]<<8|h[n+2>>0]<<16|h[n+3>>0]<<24,c=l,f[c>>2]=e,f[c+4>>2]=g,c=Xn(i|0,j|0,e|0,g|0)|0,k=I,!(n>>>0>k>>>0|(n|0)==(k|0)&o>>>0>c>>>0)):0)?(s=m+e|0,n=Ho(o|0,n|0,e|0,g|0)|0,c=l,f[c>>2]=n,f[c+4>>2]=I,(o|0)>=1):0){f[t+40>>2]=s;g=o+-1|0;e=s+g|0;switch((h[e>>0]|0)>>>6&3){case 0:{f[t+44>>2]=g;r=g;p=b[e>>0]&63;break}case 1:{if((o|0)<2){j=0;break a}r=o+-2|0;f[t+44>>2]=r;p=s+o+-2|0;p=(h[p+1>>0]|0)<<8&16128|(h[p>>0]|0);break}case 2:{if((o|0)<3){j=0;break a}r=o+-3|0;f[t+44>>2]=r;p=s+o+-3|0;p=(h[p+1>>0]|0)<<8|(h[p>>0]|0)|(h[p+2>>0]|0)<<16&4128768;break}case 3:{r=o+-4|0;f[t+44>>2]=r;p=s+o+-4|0;p=(h[p+2>>0]|0)<<16|(h[p+3>>0]|0)<<24&1056964608|(h[p+1>>0]|0)<<8|(h[p>>0]|0);break}default:{}}m=t+48|0;g=p+1048576|0;f[m>>2]=g;e=g>>>0>268435455;if(e|q^1)j=e^1;else{l=t+44|0;j=t+16|0;k=t+28|0;e=r;i=0;while(1){b:do if(g>>>0<1048576)do{if((e|0)<=0)break b;e=e+-1|0;f[l>>2]=e;g=h[s+e>>0]|0|g<<8;f[m>>2]=g}while(g>>>0<1048576);while(0);p=g&262143;r=f[(f[j>>2]|0)+(p<<2)>>2]|0;q=f[k>>2]|0;g=(X(f[q+(r<<3)>>2]|0,g>>>18)|0)+p-(f[q+(r<<3)+4>>2]|0)|0;f[m>>2]=g;f[d+(i<<2)>>2]=r;i=i+1|0;if((i|0)==(a|0)){j=1;break}}}}else j=0}else j=0;while(0);e=f[t+28>>2]|0;if(e|0){i=t+32|0;g=f[i>>2]|0;if((g|0)!=(e|0))f[i>>2]=g+(~((g+-8-e|0)>>>3)<<3);ar(e)}e=f[t+16>>2]|0;if(e|0){i=t+20|0;g=f[i>>2]|0;if((g|0)!=(e|0))f[i>>2]=g+(~((g+-4-e|0)>>>2)<<2);ar(e)}i=f[t>>2]|0;if(!i){u=v;return j|0}g=t+4|0;e=f[g>>2]|0;if((e|0)!=(i|0))f[g>>2]=e+(~((e+-4-i|0)>>>2)<<2);ar(i);u=v;return j|0}function Sc(a,c,d){a=a|0;c=c|0;d=d|0;var e=La,g=0,i=La,j=0,k=0;switch(b[a+24>>0]|0){case 1:{j=f[c>>2]|0;g=a+48|0;c=f[g>>2]|0;g=f[g+4>>2]|0;k=a+40|0;g=(Ho(kn(f[k>>2]|0,f[k+4>>2]|0,j|0,((j|0)<0)<<31>>31|0)|0,I|0,c|0,g|0)|0)+(f[f[a>>2]>>2]|0)|0;i=$((h[g>>0]|h[g+1>>0]<<8|h[g+2>>0]<<16|h[g+3>>0]<<24)>>>0);e=$(i*$(2.32830644e-10));n[d>>2]=(b[a+32>>0]|0)==0?i:e;d=d+4|0;f[d>>2]=0;f[d+4>>2]=0;d=1;return d|0}case 2:{j=f[c>>2]|0;c=a+48|0;k=f[c>>2]|0;c=f[c+4>>2]|0;g=a+40|0;c=(Ho(kn(f[g>>2]|0,f[g+4>>2]|0,j|0,((j|0)<0)<<31>>31|0)|0,I|0,k|0,c|0)|0)+(f[f[a>>2]>>2]|0)|0;k=c;c=c+4|0;c=h[c>>0]|h[c+1>>0]<<8|h[c+2>>0]<<16|h[c+3>>0]<<24;e=$((h[k>>0]|h[k+1>>0]<<8|h[k+2>>0]<<16|h[k+3>>0]<<24)>>>0);if(!(b[a+32>>0]|0)){n[d>>2]=e;e=$(c>>>0)}else{e=$(e*$(2.32830644e-10));n[d>>2]=e;e=$($(c>>>0)*$(2.32830644e-10))}n[d+4>>2]=e;n[d+8>>2]=$(0.0);k=1;return k|0}case 3:{g=f[c>>2]|0;k=a+48|0;c=f[k>>2]|0;k=f[k+4>>2]|0;j=a+40|0;k=(Ho(kn(f[j>>2]|0,f[j+4>>2]|0,g|0,((g|0)<0)<<31>>31|0)|0,I|0,c|0,k|0)|0)+(f[f[a>>2]>>2]|0)|0;c=k+4|0;c=h[c>>0]|h[c+1>>0]<<8|h[c+2>>0]<<16|h[c+3>>0]<<24;g=k+8|0;g=h[g>>0]|h[g+1>>0]<<8|h[g+2>>0]<<16|h[g+3>>0]<<24;e=$((h[k>>0]|h[k+1>>0]<<8|h[k+2>>0]<<16|h[k+3>>0]<<24)>>>0);if(!(b[a+32>>0]|0)){n[d>>2]=e;i=$(c>>>0);n[d+4>>2]=i;i=$(g>>>0);n[d+8>>2]=i;k=1;return k|0}else{i=$(e*$(2.32830644e-10));n[d>>2]=i;i=$($(c>>>0)*$(2.32830644e-10));n[d+4>>2]=i;i=$($(g>>>0)*$(2.32830644e-10));n[d+8>>2]=i;k=1;return k|0}}case 4:{g=f[c>>2]|0;k=a+48|0;c=f[k>>2]|0;k=f[k+4>>2]|0;j=a+40|0;k=(Ho(kn(f[j>>2]|0,f[j+4>>2]|0,g|0,((g|0)<0)<<31>>31|0)|0,I|0,c|0,k|0)|0)+(f[f[a>>2]>>2]|0)|0;c=k+4|0;c=h[c>>0]|h[c+1>>0]<<8|h[c+2>>0]<<16|h[c+3>>0]<<24;g=k+8|0;g=h[g>>0]|h[g+1>>0]<<8|h[g+2>>0]<<16|h[g+3>>0]<<24;e=$((h[k>>0]|h[k+1>>0]<<8|h[k+2>>0]<<16|h[k+3>>0]<<24)>>>0);if(!(b[a+32>>0]|0)){n[d>>2]=e;i=$(c>>>0);n[d+4>>2]=i;i=$(g>>>0);n[d+8>>2]=i;k=1;return k|0}else{i=$(e*$(2.32830644e-10));n[d>>2]=i;i=$($(c>>>0)*$(2.32830644e-10));n[d+4>>2]=i;i=$($(g>>>0)*$(2.32830644e-10));n[d+8>>2]=i;k=1;return k|0}}default:{k=0;return k|0}}return 0}function Tc(a,c,d){a=a|0;c=c|0;d=d|0;var e=0,g=0,i=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,v=0;v=u;u=u+64|0;t=v;e=t;g=e+40|0;do{f[e>>2]=0;e=e+4|0}while((e|0)<(g|0));a:do if(qe(t,c)|0){q=(a|0)>0;if(q?(f[t+12>>2]|0)==0:0){j=0;break}j=c+8|0;i=f[j>>2]|0;j=f[j+4>>2]|0;l=c+16|0;e=l;k=f[e>>2]|0;e=Ho(k|0,f[e+4>>2]|0,8,0)|0;g=I;if((!((j|0)<(g|0)|(j|0)==(g|0)&i>>>0>>0)?(m=f[c>>2]|0,n=m+k|0,o=n,o=h[o>>0]|h[o+1>>0]<<8|h[o+2>>0]<<16|h[o+3>>0]<<24,n=n+4|0,n=h[n>>0]|h[n+1>>0]<<8|h[n+2>>0]<<16|h[n+3>>0]<<24,c=l,f[c>>2]=e,f[c+4>>2]=g,c=Xn(i|0,j|0,e|0,g|0)|0,k=I,!(n>>>0>k>>>0|(n|0)==(k|0)&o>>>0>c>>>0)):0)?(s=m+e|0,n=Ho(o|0,n|0,e|0,g|0)|0,c=l,f[c>>2]=n,f[c+4>>2]=I,(o|0)>=1):0){f[t+40>>2]=s;g=o+-1|0;e=s+g|0;switch((h[e>>0]|0)>>>6&3){case 0:{f[t+44>>2]=g;r=g;p=b[e>>0]&63;break}case 1:{if((o|0)<2){j=0;break a}r=o+-2|0;f[t+44>>2]=r;p=s+o+-2|0;p=(h[p+1>>0]|0)<<8&16128|(h[p>>0]|0);break}case 2:{if((o|0)<3){j=0;break a}r=o+-3|0;f[t+44>>2]=r;p=s+o+-3|0;p=(h[p+1>>0]|0)<<8|(h[p>>0]|0)|(h[p+2>>0]|0)<<16&4128768;break}case 3:{r=o+-4|0;f[t+44>>2]=r;p=s+o+-4|0;p=(h[p+2>>0]|0)<<16|(h[p+3>>0]|0)<<24&1056964608|(h[p+1>>0]|0)<<8|(h[p>>0]|0);break}default:{}}m=t+48|0;g=p+262144|0;f[m>>2]=g;e=g>>>0>67108863;if(e|q^1)j=e^1;else{l=t+44|0;j=t+16|0;k=t+28|0;e=r;i=0;while(1){b:do if(g>>>0<262144)do{if((e|0)<=0)break b;e=e+-1|0;f[l>>2]=e;g=h[s+e>>0]|0|g<<8;f[m>>2]=g}while(g>>>0<262144);while(0);p=g&65535;r=f[(f[j>>2]|0)+(p<<2)>>2]|0;q=f[k>>2]|0;g=(X(f[q+(r<<3)>>2]|0,g>>>16)|0)+p-(f[q+(r<<3)+4>>2]|0)|0;f[m>>2]=g;f[d+(i<<2)>>2]=r;i=i+1|0;if((i|0)==(a|0)){j=1;break}}}}else j=0}else j=0;while(0);e=f[t+28>>2]|0;if(e|0){i=t+32|0;g=f[i>>2]|0;if((g|0)!=(e|0))f[i>>2]=g+(~((g+-8-e|0)>>>3)<<3);ar(e)}e=f[t+16>>2]|0;if(e|0){i=t+20|0;g=f[i>>2]|0;if((g|0)!=(e|0))f[i>>2]=g+(~((g+-4-e|0)>>>2)<<2);ar(e)}i=f[t>>2]|0;if(!i){u=v;return j|0}g=t+4|0;e=f[g>>2]|0;if((e|0)!=(i|0))f[g>>2]=e+(~((e+-4-i|0)>>>2)<<2);ar(i);u=v;return j|0}function Uc(a,c,d){a=a|0;c=c|0;d=d|0;var e=0,g=0,i=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,v=0;v=u;u=u+64|0;t=v;e=t;g=e+40|0;do{f[e>>2]=0;e=e+4|0}while((e|0)<(g|0));a:do if(re(t,c)|0){q=(a|0)>0;if(q?(f[t+12>>2]|0)==0:0){j=0;break}j=c+8|0;i=f[j>>2]|0;j=f[j+4>>2]|0;l=c+16|0;e=l;k=f[e>>2]|0;e=Ho(k|0,f[e+4>>2]|0,8,0)|0;g=I;if((!((j|0)<(g|0)|(j|0)==(g|0)&i>>>0>>0)?(m=f[c>>2]|0,n=m+k|0,o=n,o=h[o>>0]|h[o+1>>0]<<8|h[o+2>>0]<<16|h[o+3>>0]<<24,n=n+4|0,n=h[n>>0]|h[n+1>>0]<<8|h[n+2>>0]<<16|h[n+3>>0]<<24,c=l,f[c>>2]=e,f[c+4>>2]=g,c=Xn(i|0,j|0,e|0,g|0)|0,k=I,!(n>>>0>k>>>0|(n|0)==(k|0)&o>>>0>c>>>0)):0)?(s=m+e|0,n=Ho(o|0,n|0,e|0,g|0)|0,c=l,f[c>>2]=n,f[c+4>>2]=I,(o|0)>=1):0){f[t+40>>2]=s;g=o+-1|0;e=s+g|0;switch((h[e>>0]|0)>>>6&3){case 0:{f[t+44>>2]=g;r=g;p=b[e>>0]&63;break}case 1:{if((o|0)<2){j=0;break a}r=o+-2|0;f[t+44>>2]=r;p=s+o+-2|0;p=(h[p+1>>0]|0)<<8&16128|(h[p>>0]|0);break}case 2:{if((o|0)<3){j=0;break a}r=o+-3|0;f[t+44>>2]=r;p=s+o+-3|0;p=(h[p+1>>0]|0)<<8|(h[p>>0]|0)|(h[p+2>>0]|0)<<16&4128768;break}case 3:{r=o+-4|0;f[t+44>>2]=r;p=s+o+-4|0;p=(h[p+2>>0]|0)<<16|(h[p+3>>0]|0)<<24&1056964608|(h[p+1>>0]|0)<<8|(h[p>>0]|0);break}default:{}}m=t+48|0;g=p+131072|0;f[m>>2]=g;e=g>>>0>33554431;if(e|q^1)j=e^1;else{l=t+44|0;j=t+16|0;k=t+28|0;e=r;i=0;while(1){b:do if(g>>>0<131072)do{if((e|0)<=0)break b;e=e+-1|0;f[l>>2]=e;g=h[s+e>>0]|0|g<<8;f[m>>2]=g}while(g>>>0<131072);while(0);p=g&32767;r=f[(f[j>>2]|0)+(p<<2)>>2]|0;q=f[k>>2]|0;g=(X(f[q+(r<<3)>>2]|0,g>>>15)|0)+p-(f[q+(r<<3)+4>>2]|0)|0;f[m>>2]=g;f[d+(i<<2)>>2]=r;i=i+1|0;if((i|0)==(a|0)){j=1;break}}}}else j=0}else j=0;while(0);e=f[t+28>>2]|0;if(e|0){i=t+32|0;g=f[i>>2]|0;if((g|0)!=(e|0))f[i>>2]=g+(~((g+-8-e|0)>>>3)<<3);ar(e)}e=f[t+16>>2]|0;if(e|0){i=t+20|0;g=f[i>>2]|0;if((g|0)!=(e|0))f[i>>2]=g+(~((g+-4-e|0)>>>2)<<2);ar(e)}i=f[t>>2]|0;if(!i){u=v;return j|0}g=t+4|0;e=f[g>>2]|0;if((e|0)!=(i|0))f[g>>2]=e+(~((e+-4-i|0)>>>2)<<2);ar(i);u=v;return j|0}function Vc(a,c,d){a=a|0;c=c|0;d=d|0;var e=0,g=0,i=0,j=0,k=0,l=0,m=0,o=0;o=u;u=u+32|0;j=o+24|0;k=o+20|0;l=o+16|0;m=o+12|0;e=o+8|0;g=o+4|0;i=o;if(!d){a=0;u=o;return a|0}switch(f[a+28>>2]|0){case 9:{e=f[c>>2]|0;switch(b[a+24>>0]|0){case 1:{c=a+48|0;m=f[c>>2]|0;c=f[c+4>>2]|0;l=a+40|0;a=(Ho(kn(f[l>>2]|0,f[l+4>>2]|0,e|0,((e|0)<0)<<31>>31|0)|0,I|0,m|0,c|0)|0)+(f[f[a>>2]>>2]|0)|0;f[d>>2]=h[a>>0]|h[a+1>>0]<<8|h[a+2>>0]<<16|h[a+3>>0]<<24;a=d+4|0;f[a>>2]=0;f[a+4>>2]=0;a=1;u=o;return a|0}case 2:{c=a+48|0;m=f[c>>2]|0;c=f[c+4>>2]|0;l=a+40|0;c=(Ho(kn(f[l>>2]|0,f[l+4>>2]|0,e|0,((e|0)<0)<<31>>31|0)|0,I|0,m|0,c|0)|0)+(f[f[a>>2]>>2]|0)|0;m=c;c=c+4|0;c=h[c>>0]|h[c+1>>0]<<8|h[c+2>>0]<<16|h[c+3>>0]<<24;a=d;f[a>>2]=h[m>>0]|h[m+1>>0]<<8|h[m+2>>0]<<16|h[m+3>>0]<<24;f[a+4>>2]=c;n[d+8>>2]=$(0.0);a=1;u=o;return a|0}case 3:{c=a+48|0;m=f[c>>2]|0;c=f[c+4>>2]|0;l=a+40|0;rm(d|0,(Ho(kn(f[l>>2]|0,f[l+4>>2]|0,e|0,((e|0)<0)<<31>>31|0)|0,I|0,m|0,c|0)|0)+(f[f[a>>2]>>2]|0)|0,12)|0;a=1;u=o;return a|0}case 4:{c=a+48|0;m=f[c>>2]|0;c=f[c+4>>2]|0;l=a+40|0;rm(d|0,(Ho(kn(f[l>>2]|0,f[l+4>>2]|0,e|0,((e|0)<0)<<31>>31|0)|0,I|0,m|0,c|0)|0)+(f[f[a>>2]>>2]|0)|0,12)|0;a=1;u=o;return a|0}default:{a=0;u=o;return a|0}}}case 2:{f[k>>2]=f[c>>2];f[j>>2]=f[k>>2];a=Kd(a,j,d)|0;u=o;return a|0}case 1:{f[l>>2]=f[c>>2];f[j>>2]=f[l>>2];a=Hd(a,j,d)|0;u=o;return a|0}case 4:{f[m>>2]=f[c>>2];f[j>>2]=f[m>>2];a=vd(a,j,d)|0;u=o;return a|0}case 3:{f[e>>2]=f[c>>2];f[j>>2]=f[e>>2];a=qd(a,j,d)|0;u=o;return a|0}case 6:{f[g>>2]=f[c>>2];f[j>>2]=f[g>>2];a=Sc(a,j,d)|0;u=o;return a|0}case 5:{f[i>>2]=f[c>>2];f[j>>2]=f[i>>2];a=bd(a,j,d)|0;u=o;return a|0}default:{a=0;u=o;return a|0}}return 0}function Wc(a,c,d){a=a|0;c=c|0;d=d|0;var e=0,g=0,i=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,v=0;v=u;u=u+64|0;t=v;e=t;g=e+40|0;do{f[e>>2]=0;e=e+4|0}while((e|0)<(g|0));a:do if(se(t,c)|0){q=(a|0)>0;if(q?(f[t+12>>2]|0)==0:0){j=0;break}j=c+8|0;i=f[j>>2]|0;j=f[j+4>>2]|0;l=c+16|0;e=l;k=f[e>>2]|0;e=Ho(k|0,f[e+4>>2]|0,8,0)|0;g=I;if((!((j|0)<(g|0)|(j|0)==(g|0)&i>>>0>>0)?(m=f[c>>2]|0,n=m+k|0,o=n,o=h[o>>0]|h[o+1>>0]<<8|h[o+2>>0]<<16|h[o+3>>0]<<24,n=n+4|0,n=h[n>>0]|h[n+1>>0]<<8|h[n+2>>0]<<16|h[n+3>>0]<<24,c=l,f[c>>2]=e,f[c+4>>2]=g,c=Xn(i|0,j|0,e|0,g|0)|0,k=I,!(n>>>0>k>>>0|(n|0)==(k|0)&o>>>0>c>>>0)):0)?(s=m+e|0,n=Ho(o|0,n|0,e|0,g|0)|0,c=l,f[c>>2]=n,f[c+4>>2]=I,(o|0)>=1):0){f[t+40>>2]=s;g=o+-1|0;e=s+g|0;switch((h[e>>0]|0)>>>6&3){case 0:{f[t+44>>2]=g;r=g;p=b[e>>0]&63;break}case 1:{if((o|0)<2){j=0;break a}r=o+-2|0;f[t+44>>2]=r;p=s+o+-2|0;p=(h[p+1>>0]|0)<<8&16128|(h[p>>0]|0);break}case 2:{if((o|0)<3){j=0;break a}r=o+-3|0;f[t+44>>2]=r;p=s+o+-3|0;p=(h[p+1>>0]|0)<<8|(h[p>>0]|0)|(h[p+2>>0]|0)<<16&4128768;break}case 3:{r=o+-4|0;f[t+44>>2]=r;p=s+o+-4|0;p=(h[p+2>>0]|0)<<16|(h[p+3>>0]|0)<<24&1056964608|(h[p+1>>0]|0)<<8|(h[p>>0]|0);break}default:{}}m=t+48|0;g=p+32768|0;f[m>>2]=g;e=g>>>0>8388607;if(e|q^1)j=e^1;else{l=t+44|0;j=t+16|0;k=t+28|0;e=r;i=0;while(1){b:do if(g>>>0<32768)do{if((e|0)<=0)break b;e=e+-1|0;f[l>>2]=e;g=h[s+e>>0]|0|g<<8;f[m>>2]=g}while(g>>>0<32768);while(0);p=g&8191;r=f[(f[j>>2]|0)+(p<<2)>>2]|0;q=f[k>>2]|0;g=(X(f[q+(r<<3)>>2]|0,g>>>13)|0)+p-(f[q+(r<<3)+4>>2]|0)|0;f[m>>2]=g;f[d+(i<<2)>>2]=r;i=i+1|0;if((i|0)==(a|0)){j=1;break}}}}else j=0}else j=0;while(0);e=f[t+28>>2]|0;if(e|0){i=t+32|0;g=f[i>>2]|0;if((g|0)!=(e|0))f[i>>2]=g+(~((g+-8-e|0)>>>3)<<3);ar(e)}e=f[t+16>>2]|0;if(e|0){i=t+20|0;g=f[i>>2]|0;if((g|0)!=(e|0))f[i>>2]=g+(~((g+-4-e|0)>>>2)<<2);ar(e)}i=f[t>>2]|0;if(!i){u=v;return j|0}g=t+4|0;e=f[g>>2]|0;if((e|0)!=(i|0))f[g>>2]=e+(~((e+-4-i|0)>>>2)<<2);ar(i);u=v;return j|0}function Xc(a,c,d){a=a|0;c=c|0;d=d|0;var e=0,g=0,i=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,v=0;v=u;u=u+64|0;t=v;e=t;g=e+40|0;do{f[e>>2]=0;e=e+4|0}while((e|0)<(g|0));a:do if(te(t,c)|0){q=(a|0)>0;if(q?(f[t+12>>2]|0)==0:0){j=0;break}j=c+8|0;i=f[j>>2]|0;j=f[j+4>>2]|0;l=c+16|0;e=l;k=f[e>>2]|0;e=Ho(k|0,f[e+4>>2]|0,8,0)|0;g=I;if((!((j|0)<(g|0)|(j|0)==(g|0)&i>>>0>>0)?(m=f[c>>2]|0,n=m+k|0,o=n,o=h[o>>0]|h[o+1>>0]<<8|h[o+2>>0]<<16|h[o+3>>0]<<24,n=n+4|0,n=h[n>>0]|h[n+1>>0]<<8|h[n+2>>0]<<16|h[n+3>>0]<<24,c=l,f[c>>2]=e,f[c+4>>2]=g,c=Xn(i|0,j|0,e|0,g|0)|0,k=I,!(n>>>0>k>>>0|(n|0)==(k|0)&o>>>0>c>>>0)):0)?(s=m+e|0,n=Ho(o|0,n|0,e|0,g|0)|0,c=l,f[c>>2]=n,f[c+4>>2]=I,(o|0)>=1):0){f[t+40>>2]=s;g=o+-1|0;e=s+g|0;switch((h[e>>0]|0)>>>6&3){case 0:{f[t+44>>2]=g;r=g;p=b[e>>0]&63;break}case 1:{if((o|0)<2){j=0;break a}r=o+-2|0;f[t+44>>2]=r;p=s+o+-2|0;p=(h[p+1>>0]|0)<<8&16128|(h[p>>0]|0);break}case 2:{if((o|0)<3){j=0;break a}r=o+-3|0;f[t+44>>2]=r;p=s+o+-3|0;p=(h[p+1>>0]|0)<<8|(h[p>>0]|0)|(h[p+2>>0]|0)<<16&4128768;break}case 3:{r=o+-4|0;f[t+44>>2]=r;p=s+o+-4|0;p=(h[p+2>>0]|0)<<16|(h[p+3>>0]|0)<<24&1056964608|(h[p+1>>0]|0)<<8|(h[p>>0]|0);break}default:{}}m=t+48|0;g=p+16384|0;f[m>>2]=g;e=g>>>0>4194303;if(e|q^1)j=e^1;else{l=t+44|0;j=t+16|0;k=t+28|0;e=r;i=0;while(1){b:do if(g>>>0<16384)do{if((e|0)<=0)break b;e=e+-1|0;f[l>>2]=e;g=h[s+e>>0]|0|g<<8;f[m>>2]=g}while(g>>>0<16384);while(0);p=g&4095;r=f[(f[j>>2]|0)+(p<<2)>>2]|0;q=f[k>>2]|0;g=(X(f[q+(r<<3)>>2]|0,g>>>12)|0)+p-(f[q+(r<<3)+4>>2]|0)|0;f[m>>2]=g;f[d+(i<<2)>>2]=r;i=i+1|0;if((i|0)==(a|0)){j=1;break}}}}else j=0}else j=0;while(0);e=f[t+28>>2]|0;if(e|0){i=t+32|0;g=f[i>>2]|0;if((g|0)!=(e|0))f[i>>2]=g+(~((g+-8-e|0)>>>3)<<3);ar(e)}e=f[t+16>>2]|0;if(e|0){i=t+20|0;g=f[i>>2]|0;if((g|0)!=(e|0))f[i>>2]=g+(~((g+-4-e|0)>>>2)<<2);ar(e)}i=f[t>>2]|0;if(!i){u=v;return j|0}g=t+4|0;e=f[g>>2]|0;if((e|0)!=(i|0))f[g>>2]=e+(~((e+-4-i|0)>>>2)<<2);ar(i);u=v;return j|0}function Yc(a,b,c,d,e,g){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;g=g|0;var h=0,i=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,B=0,C=0;x=e>>>0>1073741823?-1:e<<2;t=Zq(x)|0;ej(t|0,0,x|0)|0;u=Zq(x)|0;ej(u|0,0,x|0)|0;x=a+8|0;ji(x,t,b,c);s=f[a+32>>2]|0;v=a+40|0;h=f[v>>2]|0;g=f[h+4>>2]|0;d=f[h>>2]|0;r=g-d|0;w=r>>2;if((r|0)<=4){_q(u);_q(t);return 1}n=f[a+36>>2]|0;q=(e|0)>0;r=s+64|0;p=s+28|0;o=e<<2;a=1;while(1){if(g-d>>2>>>0<=a>>>0){Kp(h);d=f[h>>2]|0}m=f[d+(a<<2)>>2]|0;if(q)ej(t|0,0,o|0)|0;if((m|0)>-1){l=f[s>>2]|0;k=m;j=0;do{if(((f[l+(k>>>5<<2)>>2]&1<<(k&31)|0)==0?(B=f[(f[(f[r>>2]|0)+12>>2]|0)+(k<<2)>>2]|0,(B|0)>=0):0)?(A=f[p>>2]|0,i=f[n>>2]|0,y=f[i+(f[A+(B<<2)>>2]<<2)>>2]|0,z=B+1|0,z=f[i+(f[A+((((z|0)%3|0|0)==0?B+-2|0:z)<<2)>>2]<<2)>>2]|0,A=f[i+(f[A+((((B>>>0)%3|0|0)==0?2:-1)+B<<2)>>2]<<2)>>2]|0,(y|0)<(a|0)&(z|0)<(a|0)&(A|0)<(a|0)):0){g=X(y,e)|0;h=X(z,e)|0;i=X(A,e)|0;if(q){d=0;do{f[u+(d<<2)>>2]=(f[c+(d+i<<2)>>2]|0)+(f[c+(d+h<<2)>>2]|0)-(f[c+(d+g<<2)>>2]|0);d=d+1|0}while((d|0)!=(e|0));if(q){d=0;do{i=t+(d<<2)|0;f[i>>2]=(f[i>>2]|0)+(f[u+(d<<2)>>2]|0);d=d+1|0}while((d|0)!=(e|0))}}j=j+1|0}d=(((k>>>0)%3|0|0)==0?2:-1)+k|0;do if(!(f[l+(d>>>5<<2)>>2]&1<<(d&31))){if((d|0)>=0){d=f[(f[(f[r>>2]|0)+12>>2]|0)+(d<<2)>>2]|0;if((d|0)>=0)if(!((d>>>0)%3|0)){d=d+2|0;break}else{d=d+-1|0;break}}}else d=-1073741824;while(0);k=(d|0)==(m|0)?-1073741824:d}while((k|0)>-1);d=X(a,e)|0;if(!j)C=29;else{if(q){g=0;do{m=t+(g<<2)|0;f[m>>2]=(f[m>>2]|0)/(j|0)|0;g=g+1|0}while((g|0)!=(e|0))}ji(x,t,b+(d<<2)|0,c+(d<<2)|0)}}else{d=X(a,e)|0;C=29}if((C|0)==29){C=0;ji(x,c+((X(a+-1|0,e)|0)<<2)|0,b+(d<<2)|0,c+(d<<2)|0)}a=a+1|0;if((a|0)>=(w|0))break;d=f[v>>2]|0;g=f[d+4>>2]|0;h=d;d=f[d>>2]|0}_q(u);_q(t);return 1}function Zc(a,b,c,d,e,g){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;g=g|0;var h=0,i=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0;y=e>>>0>1073741823?-1:e<<2;u=Zq(y)|0;ej(u|0,0,y|0)|0;v=Zq(y)|0;ej(v|0,0,y|0)|0;y=a+8|0;ji(y,u,b,c);t=f[a+32>>2]|0;w=a+40|0;h=f[w>>2]|0;g=f[h+4>>2]|0;d=f[h>>2]|0;s=g-d|0;x=s>>2;if((s|0)<=4){_q(v);_q(u);return 1}p=f[a+36>>2]|0;s=(e|0)>0;r=t+12|0;q=e<<2;a=1;while(1){if(g-d>>2>>>0<=a>>>0){Kp(h);d=f[h>>2]|0}o=f[d+(a<<2)>>2]|0;if(s)ej(u|0,0,q|0)|0;if((o|0)>-1){n=f[r>>2]|0;m=o;l=0;while(1){g=f[n+(m<<2)>>2]|0;if((g|0)>=0){h=f[t>>2]|0;i=f[p>>2]|0;k=f[i+(f[h+(g<<2)>>2]<<2)>>2]|0;d=g+1|0;d=((d|0)%3|0|0)==0?g+-2|0:d;if((d|0)<0)d=-1073741824;else d=f[h+(d<<2)>>2]|0;j=f[i+(d<<2)>>2]|0;d=(((g>>>0)%3|0|0)==0?2:-1)+g|0;if((d|0)<0)d=-1073741824;else d=f[h+(d<<2)>>2]|0;d=f[i+(d<<2)>>2]|0;if((k|0)<(a|0)&(j|0)<(a|0)&(d|0)<(a|0)){i=X(k,e)|0;h=X(j,e)|0;g=X(d,e)|0;if(s){d=0;do{f[v+(d<<2)>>2]=(f[c+(d+g<<2)>>2]|0)+(f[c+(d+h<<2)>>2]|0)-(f[c+(d+i<<2)>>2]|0);d=d+1|0}while((d|0)!=(e|0));if(s){d=0;do{k=u+(d<<2)|0;f[k>>2]=(f[k>>2]|0)+(f[v+(d<<2)>>2]|0);d=d+1|0}while((d|0)!=(e|0))}}h=l+1|0}else h=l}else h=l;d=(((m>>>0)%3|0|0)==0?2:-1)+m|0;do if((d|0)>=0){d=f[n+(d<<2)>>2]|0;if((d|0)>=0)if(!((d>>>0)%3|0)){d=d+2|0;break}else{d=d+-1|0;break}}while(0);m=(d|0)==(o|0)?-1073741824:d;if((m|0)<=-1)break;else l=h}d=X(a,e)|0;if(!h)z=31;else{if(s){g=0;do{o=u+(g<<2)|0;f[o>>2]=(f[o>>2]|0)/(h|0)|0;g=g+1|0}while((g|0)!=(e|0))}ji(y,u,b+(d<<2)|0,c+(d<<2)|0)}}else{d=X(a,e)|0;z=31}if((z|0)==31){z=0;ji(y,c+((X(a+-1|0,e)|0)<<2)|0,b+(d<<2)|0,c+(d<<2)|0)}a=a+1|0;if((a|0)>=(x|0))break;d=f[w>>2]|0;g=f[d+4>>2]|0;h=d;d=f[d>>2]|0}_q(v);_q(u);return 1}function _c(a,c,d,e){a=a|0;c=c|0;d=d|0;e=e|0;var g=0,i=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,v=0,w=0,x=0,y=0,z=0,A=0,B=0,C=0,D=0,E=0,F=0;F=u;u=u+64|0;E=F;g=E;i=g+40|0;do{f[g>>2]=0;g=g+4|0}while((g|0)<(i|0));a:do if(te(E,d)|0?Of(E,d)|0:0){g=(a|0)>0;b:do if(g){if(!(f[E+12>>2]|0)){k=0;break a}Ug(d,0,0)|0;if(g){z=E+44|0;C=E+48|0;y=E+40|0;s=E+16|0;t=E+28|0;A=(c|0)>0;D=d+36|0;x=d+32|0;v=d+24|0;w=d+28|0;i=f[C>>2]|0;B=0;g=0;while(1){c:do if(i>>>0<16384){j=f[z>>2]|0;do{if((j|0)<=0)break c;r=f[y>>2]|0;j=j+-1|0;f[z>>2]=j;i=h[r+j>>0]|i<<8;f[C>>2]=i}while(i>>>0<16384)}while(0);p=i&4095;r=f[(f[s>>2]|0)+(p<<2)>>2]|0;q=f[t>>2]|0;i=(X(f[q+(r<<3)>>2]|0,i>>>12)|0)+p-(f[q+(r<<3)+4>>2]|0)|0;f[C>>2]=i;if(A){p=(r|0)>0;if((r|0)<=-1){g=22;break}if((r|0)<33){q=0;o=g}else{g=21;break}while(1){if(!(b[D>>0]|0)){k=0;break a}if(p){l=f[v>>2]|0;m=f[w>>2]|0;k=f[x>>2]|0;n=0;j=0;do{g=l+(k>>>3)|0;if(g>>>0>>0){g=(h[g>>0]|0)>>>(k&7)&1;k=k+1|0;f[x>>2]=k}else g=0;j=g<>2]=j;q=q+1|0;if((q|0)>=(c|0))break;else o=g}}B=B+c|0;if((B|0)>=(a|0))break b}if((g|0)==21){if(!(b[D>>0]|0)){k=0;break a}Ga(6084,6042,148,6076)}else if((g|0)==22){if(!(b[D>>0]|0)){k=0;break a}Ga(6027,6042,147,6076)}}}else Ug(d,0,0)|0;while(0);hm(d);k=1}else k=0;while(0);g=f[E+28>>2]|0;if(g|0){j=E+32|0;i=f[j>>2]|0;if((i|0)!=(g|0))f[j>>2]=i+(~((i+-8-g|0)>>>3)<<3);ar(g)}g=f[E+16>>2]|0;if(g|0){j=E+20|0;i=f[j>>2]|0;if((i|0)!=(g|0))f[j>>2]=i+(~((i+-4-g|0)>>>2)<<2);ar(g)}j=f[E>>2]|0;if(!j){u=F;return k|0}i=E+4|0;g=f[i>>2]|0;if((g|0)!=(j|0))f[i>>2]=g+(~((g+-4-j|0)>>>2)<<2);ar(j);u=F;return k|0}function $c(a,c){a=a|0;c=c|0;var d=0,e=0,g=0,h=0,i=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0;e=a+4|0;if(!c){d=f[a>>2]|0;f[a>>2]=0;if(d|0)ar(d);f[e>>2]=0;return}if(c>>>0>1073741823){a=Ia(4)|0;Eq(a);sa(a|0,1344,125)}s=ln(c<<2)|0;d=f[a>>2]|0;f[a>>2]=s;if(d|0)ar(d);f[e>>2]=c;d=0;do{f[(f[a>>2]|0)+(d<<2)>>2]=0;d=d+1|0}while((d|0)!=(c|0));e=a+8|0;h=f[e>>2]|0;if(!h)return;d=f[h+4>>2]|0;r=c+-1|0;s=(r&c|0)==0;if(s)g=d&r;else g=(d>>>0)%(c>>>0)|0;f[(f[a>>2]|0)+(g<<2)>>2]=e;d=f[h>>2]|0;if(!d)return;else{i=h;e=d;d=h}a:while(1){q=d;b:while(1){d=e;while(1){e=f[d+4>>2]|0;if(s)p=e&r;else p=(e>>>0)%(c>>>0)|0;if((p|0)==(g|0))break;e=(f[a>>2]|0)+(p<<2)|0;if(!(f[e>>2]|0))break b;e=f[d>>2]|0;c:do if(!e)e=d;else{n=d+8|0;m=b[n+11>>0]|0;k=m<<24>>24<0;m=m&255;o=k?f[d+12>>2]|0:m;l=(o|0)==0;if(k){h=d;while(1){j=e+8|0;m=b[j+11>>0]|0;k=m<<24>>24<0;if((o|0)!=((k?f[e+12>>2]|0:m&255)|0)){e=h;break c}if(!l?rl(f[n>>2]|0,k?f[j>>2]|0:j,o)|0:0){e=h;break c}h=f[e>>2]|0;if(!h)break c;else{m=e;e=h;h=m}}}if(l){h=d;while(1){o=b[e+8+11>>0]|0;if((o<<24>>24<0?f[e+12>>2]|0:o&255)|0){e=h;break c}h=f[e>>2]|0;if(!h)break c;else{o=e;e=h;h=o}}}l=d;while(1){h=e+8|0;k=b[h+11>>0]|0;j=k<<24>>24<0;if((o|0)!=((j?f[e+12>>2]|0:k&255)|0)){e=l;break c}h=j?f[h>>2]|0:h;if((f[n>>2]&255)<<24>>24==(b[h>>0]|0)){j=m;k=n}else{e=l;break c}while(1){j=j+-1|0;k=k+1|0;if(!j)break;h=h+1|0;if((b[k>>0]|0)!=(b[h>>0]|0)){e=l;break c}}h=f[e>>2]|0;if(!h)break;else{l=e;e=h}}}while(0);f[q>>2]=f[e>>2];f[e>>2]=f[f[(f[a>>2]|0)+(p<<2)>>2]>>2];f[f[(f[a>>2]|0)+(p<<2)>>2]>>2]=d;d=f[i>>2]|0;if(!d){d=41;break a}}e=f[d>>2]|0;if(!e){d=41;break a}else{i=d;q=d}}f[e>>2]=q;e=f[d>>2]|0;if(!e){d=41;break}else{i=d;g=p}}if((d|0)==41)return}function ad(a,b){a=a|0;b=b|0;var c=0,e=0,g=0,h=0,i=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0;e=a+4|0;if(!b){c=f[a>>2]|0;f[a>>2]=0;if(c|0)ar(c);f[e>>2]=0;return}if(b>>>0>1073741823){a=Ia(4)|0;Eq(a);sa(a|0,1344,125)}p=ln(b<<2)|0;c=f[a>>2]|0;f[a>>2]=p;if(c|0)ar(c);f[e>>2]=b;c=0;do{f[(f[a>>2]|0)+(c<<2)>>2]=0;c=c+1|0}while((c|0)!=(b|0));e=a+8|0;h=f[e>>2]|0;if(!h)return;c=f[h+4>>2]|0;o=b+-1|0;p=(o&b|0)==0;if(p)g=c&o;else g=(c>>>0)%(b>>>0)|0;f[(f[a>>2]|0)+(g<<2)>>2]=e;c=f[h>>2]|0;if(!c)return;else{i=h;e=c;c=h}a:while(1){n=c;b:while(1){c:do if(p){c=e;while(1){m=f[c+4>>2]&o;if((m|0)==(g|0))break c;e=(f[a>>2]|0)+(m<<2)|0;if(!(f[e>>2]|0)){g=m;break b}l=c+10|0;k=c+12|0;e=f[c>>2]|0;d:do if(!e)e=c;else{j=d[c+8>>1]|0;h=c;while(1){if(j<<16>>16!=(d[e+8>>1]|0)){e=h;break d}if((d[l>>1]|0)!=(d[e+10>>1]|0)){e=h;break d}if((d[k>>1]|0)!=(d[e+12>>1]|0)){e=h;break d}h=f[e>>2]|0;if(!h)break;else{q=e;e=h;h=q}}}while(0);f[n>>2]=f[e>>2];f[e>>2]=f[f[(f[a>>2]|0)+(m<<2)>>2]>>2];f[f[(f[a>>2]|0)+(m<<2)>>2]>>2]=c;c=f[i>>2]|0;if(!c){c=38;break a}}}else{c=e;while(1){m=((f[c+4>>2]|0)>>>0)%(b>>>0)|0;if((m|0)==(g|0))break c;e=(f[a>>2]|0)+(m<<2)|0;if(!(f[e>>2]|0)){g=m;break b}l=c+10|0;k=c+12|0;e=f[c>>2]|0;e:do if(!e)e=c;else{j=d[c+8>>1]|0;h=c;while(1){if(j<<16>>16!=(d[e+8>>1]|0)){e=h;break e}if((d[l>>1]|0)!=(d[e+10>>1]|0)){e=h;break e}if((d[k>>1]|0)!=(d[e+12>>1]|0)){e=h;break e}h=f[e>>2]|0;if(!h)break;else{q=e;e=h;h=q}}}while(0);f[n>>2]=f[e>>2];f[e>>2]=f[f[(f[a>>2]|0)+(m<<2)>>2]>>2];f[f[(f[a>>2]|0)+(m<<2)>>2]>>2]=c;c=f[i>>2]|0;if(!c){c=38;break a}}}while(0);e=f[c>>2]|0;if(!e){c=38;break a}else{i=c;n=c}}f[e>>2]=n;e=f[c>>2]|0;if(!e){c=38;break}else i=c}if((c|0)==38)return}function bd(a,c,d){a=a|0;c=c|0;d=d|0;var e=La,g=0,i=La,j=0,k=0;switch(b[a+24>>0]|0){case 1:{j=f[c>>2]|0;g=a+48|0;c=f[g>>2]|0;g=f[g+4>>2]|0;k=a+40|0;g=(Ho(kn(f[k>>2]|0,f[k+4>>2]|0,j|0,((j|0)<0)<<31>>31|0)|0,I|0,c|0,g|0)|0)+(f[f[a>>2]>>2]|0)|0;i=$(h[g>>0]|h[g+1>>0]<<8|h[g+2>>0]<<16|h[g+3>>0]<<24|0);e=$(i*$(4.65661287e-10));n[d>>2]=(b[a+32>>0]|0)==0?i:e;d=d+4|0;f[d>>2]=0;f[d+4>>2]=0;d=1;return d|0}case 2:{j=f[c>>2]|0;c=a+48|0;k=f[c>>2]|0;c=f[c+4>>2]|0;g=a+40|0;c=(Ho(kn(f[g>>2]|0,f[g+4>>2]|0,j|0,((j|0)<0)<<31>>31|0)|0,I|0,k|0,c|0)|0)+(f[f[a>>2]>>2]|0)|0;k=c;c=c+4|0;c=h[c>>0]|h[c+1>>0]<<8|h[c+2>>0]<<16|h[c+3>>0]<<24;e=$(h[k>>0]|h[k+1>>0]<<8|h[k+2>>0]<<16|h[k+3>>0]<<24|0);if(!(b[a+32>>0]|0)){n[d>>2]=e;e=$(c|0)}else{e=$(e*$(4.65661287e-10));n[d>>2]=e;e=$($(c|0)*$(4.65661287e-10))}n[d+4>>2]=e;n[d+8>>2]=$(0.0);k=1;return k|0}case 3:{g=f[c>>2]|0;k=a+48|0;c=f[k>>2]|0;k=f[k+4>>2]|0;j=a+40|0;k=(Ho(kn(f[j>>2]|0,f[j+4>>2]|0,g|0,((g|0)<0)<<31>>31|0)|0,I|0,c|0,k|0)|0)+(f[f[a>>2]>>2]|0)|0;c=k+4|0;c=h[c>>0]|h[c+1>>0]<<8|h[c+2>>0]<<16|h[c+3>>0]<<24;g=k+8|0;g=h[g>>0]|h[g+1>>0]<<8|h[g+2>>0]<<16|h[g+3>>0]<<24;e=$(h[k>>0]|h[k+1>>0]<<8|h[k+2>>0]<<16|h[k+3>>0]<<24|0);if(!(b[a+32>>0]|0)){n[d>>2]=e;i=$(c|0);n[d+4>>2]=i;i=$(g|0);n[d+8>>2]=i;k=1;return k|0}else{i=$(e*$(4.65661287e-10));n[d>>2]=i;i=$($(c|0)*$(4.65661287e-10));n[d+4>>2]=i;i=$($(g|0)*$(4.65661287e-10));n[d+8>>2]=i;k=1;return k|0}}case 4:{g=f[c>>2]|0;k=a+48|0;c=f[k>>2]|0;k=f[k+4>>2]|0;j=a+40|0;k=(Ho(kn(f[j>>2]|0,f[j+4>>2]|0,g|0,((g|0)<0)<<31>>31|0)|0,I|0,c|0,k|0)|0)+(f[f[a>>2]>>2]|0)|0;c=k+4|0;c=h[c>>0]|h[c+1>>0]<<8|h[c+2>>0]<<16|h[c+3>>0]<<24;g=k+8|0;g=h[g>>0]|h[g+1>>0]<<8|h[g+2>>0]<<16|h[g+3>>0]<<24;e=$(h[k>>0]|h[k+1>>0]<<8|h[k+2>>0]<<16|h[k+3>>0]<<24|0);if(!(b[a+32>>0]|0)){n[d>>2]=e;i=$(c|0);n[d+4>>2]=i;i=$(g|0);n[d+8>>2]=i;k=1;return k|0}else{i=$(e*$(4.65661287e-10));n[d>>2]=i;i=$($(c|0)*$(4.65661287e-10));n[d+4>>2]=i;i=$($(g|0)*$(4.65661287e-10));n[d+8>>2]=i;k=1;return k|0}}default:{k=0;return k|0}}return 0}function cd(a,b){a=a|0;b=b|0;var c=0,d=0,e=0,g=0,h=0,i=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0;d=a+4|0;if(!b){c=f[a>>2]|0;f[a>>2]=0;if(c|0)ar(c);f[d>>2]=0;return}if(b>>>0>1073741823){a=Ia(4)|0;Eq(a);sa(a|0,1344,125)}o=ln(b<<2)|0;c=f[a>>2]|0;f[a>>2]=o;if(c|0)ar(c);f[d>>2]=b;c=0;do{f[(f[a>>2]|0)+(c<<2)>>2]=0;c=c+1|0}while((c|0)!=(b|0));d=a+8|0;g=f[d>>2]|0;if(!g)return;c=f[g+4>>2]|0;n=b+-1|0;o=(n&b|0)==0;if(o)e=c&n;else e=(c>>>0)%(b>>>0)|0;f[(f[a>>2]|0)+(e<<2)>>2]=d;c=f[g>>2]|0;if(!c)return;else{h=g;d=c;c=g}a:while(1){m=c;b:while(1){c:do if(o){c=d;while(1){l=f[c+4>>2]&n;if((l|0)==(e|0))break c;d=(f[a>>2]|0)+(l<<2)|0;if(!(f[d>>2]|0)){e=l;break b}k=c+12|0;j=c+16|0;d=f[c>>2]|0;d:do if(!d)d=c;else{i=f[c+8>>2]|0;g=c;while(1){if((i|0)!=(f[d+8>>2]|0)){d=g;break d}if((f[k>>2]|0)!=(f[d+12>>2]|0)){d=g;break d}if((f[j>>2]|0)!=(f[d+16>>2]|0)){d=g;break d}g=f[d>>2]|0;if(!g)break;else{p=d;d=g;g=p}}}while(0);f[m>>2]=f[d>>2];f[d>>2]=f[f[(f[a>>2]|0)+(l<<2)>>2]>>2];f[f[(f[a>>2]|0)+(l<<2)>>2]>>2]=c;c=f[h>>2]|0;if(!c){c=38;break a}}}else{c=d;while(1){l=((f[c+4>>2]|0)>>>0)%(b>>>0)|0;if((l|0)==(e|0))break c;d=(f[a>>2]|0)+(l<<2)|0;if(!(f[d>>2]|0)){e=l;break b}k=c+12|0;j=c+16|0;d=f[c>>2]|0;e:do if(!d)d=c;else{i=f[c+8>>2]|0;g=c;while(1){if((i|0)!=(f[d+8>>2]|0)){d=g;break e}if((f[k>>2]|0)!=(f[d+12>>2]|0)){d=g;break e}if((f[j>>2]|0)!=(f[d+16>>2]|0)){d=g;break e}g=f[d>>2]|0;if(!g)break;else{p=d;d=g;g=p}}}while(0);f[m>>2]=f[d>>2];f[d>>2]=f[f[(f[a>>2]|0)+(l<<2)>>2]>>2];f[f[(f[a>>2]|0)+(l<<2)>>2]>>2]=c;c=f[h>>2]|0;if(!c){c=38;break a}}}while(0);d=f[c>>2]|0;if(!d){c=38;break a}else{h=c;m=c}}f[d>>2]=m;d=f[c>>2]|0;if(!d){c=38;break}else h=c}if((c|0)==38)return}function dd(a,c){a=a|0;c=c|0;var d=0,e=0,g=0,h=0,i=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0;e=a+4|0;if(!c){d=f[a>>2]|0;f[a>>2]=0;if(d|0)ar(d);f[e>>2]=0;return}if(c>>>0>1073741823){a=Ia(4)|0;Eq(a);sa(a|0,1344,125)}p=ln(c<<2)|0;d=f[a>>2]|0;f[a>>2]=p;if(d|0)ar(d);f[e>>2]=c;d=0;do{f[(f[a>>2]|0)+(d<<2)>>2]=0;d=d+1|0}while((d|0)!=(c|0));e=a+8|0;h=f[e>>2]|0;if(!h)return;d=f[h+4>>2]|0;o=c+-1|0;p=(o&c|0)==0;if(p)g=d&o;else g=(d>>>0)%(c>>>0)|0;f[(f[a>>2]|0)+(g<<2)>>2]=e;d=f[h>>2]|0;if(!d)return;else{i=h;e=d;d=h}a:while(1){n=d;b:while(1){c:do if(p){d=e;while(1){m=f[d+4>>2]&o;if((m|0)==(g|0))break c;e=(f[a>>2]|0)+(m<<2)|0;if(!(f[e>>2]|0)){g=m;break b}l=d+9|0;k=d+10|0;e=f[d>>2]|0;d:do if(!e)e=d;else{j=b[d+8>>0]|0;h=d;while(1){if(j<<24>>24!=(b[e+8>>0]|0)){e=h;break d}if((b[l>>0]|0)!=(b[e+9>>0]|0)){e=h;break d}if((b[k>>0]|0)!=(b[e+10>>0]|0)){e=h;break d}h=f[e>>2]|0;if(!h)break;else{q=e;e=h;h=q}}}while(0);f[n>>2]=f[e>>2];f[e>>2]=f[f[(f[a>>2]|0)+(m<<2)>>2]>>2];f[f[(f[a>>2]|0)+(m<<2)>>2]>>2]=d;d=f[i>>2]|0;if(!d){d=38;break a}}}else{d=e;while(1){m=((f[d+4>>2]|0)>>>0)%(c>>>0)|0;if((m|0)==(g|0))break c;e=(f[a>>2]|0)+(m<<2)|0;if(!(f[e>>2]|0)){g=m;break b}l=d+9|0;k=d+10|0;e=f[d>>2]|0;e:do if(!e)e=d;else{j=b[d+8>>0]|0;h=d;while(1){if(j<<24>>24!=(b[e+8>>0]|0)){e=h;break e}if((b[l>>0]|0)!=(b[e+9>>0]|0)){e=h;break e}if((b[k>>0]|0)!=(b[e+10>>0]|0)){e=h;break e}h=f[e>>2]|0;if(!h)break;else{q=e;e=h;h=q}}}while(0);f[n>>2]=f[e>>2];f[e>>2]=f[f[(f[a>>2]|0)+(m<<2)>>2]>>2];f[f[(f[a>>2]|0)+(m<<2)>>2]>>2]=d;d=f[i>>2]|0;if(!d){d=38;break a}}}while(0);e=f[d>>2]|0;if(!e){d=38;break a}else{i=d;n=d}}f[e>>2]=n;e=f[d>>2]|0;if(!e){d=38;break}else i=d}if((d|0)==38)return}function ed(a,b,c,d,e,g){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;g=g|0;var h=0,i=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,B=0,C=0;x=e>>>0>1073741823?-1:e<<2;t=Zq(x)|0;ej(t|0,0,x|0)|0;u=Zq(x)|0;ej(u|0,0,x|0)|0;x=a+8|0;mi(x,t,b,c);s=f[a+32>>2]|0;v=a+40|0;h=f[v>>2]|0;g=f[h+4>>2]|0;d=f[h>>2]|0;r=g-d|0;w=r>>2;if((r|0)<=4){_q(u);_q(t);return 1}n=f[a+36>>2]|0;q=(e|0)>0;r=s+64|0;p=s+28|0;o=e<<2;a=1;while(1){if(g-d>>2>>>0<=a>>>0){Kp(h);d=f[h>>2]|0}m=f[d+(a<<2)>>2]|0;if(q)ej(t|0,0,o|0)|0;if((m|0)>-1){l=f[s>>2]|0;k=m;j=0;do{if(((f[l+(k>>>5<<2)>>2]&1<<(k&31)|0)==0?(B=f[(f[(f[r>>2]|0)+12>>2]|0)+(k<<2)>>2]|0,(B|0)>=0):0)?(A=f[p>>2]|0,i=f[n>>2]|0,y=f[i+(f[A+(B<<2)>>2]<<2)>>2]|0,z=B+1|0,z=f[i+(f[A+((((z|0)%3|0|0)==0?B+-2|0:z)<<2)>>2]<<2)>>2]|0,A=f[i+(f[A+((((B>>>0)%3|0|0)==0?2:-1)+B<<2)>>2]<<2)>>2]|0,(y|0)<(a|0)&(z|0)<(a|0)&(A|0)<(a|0)):0){g=X(y,e)|0;h=X(z,e)|0;i=X(A,e)|0;if(q){d=0;do{f[u+(d<<2)>>2]=(f[c+(d+i<<2)>>2]|0)+(f[c+(d+h<<2)>>2]|0)-(f[c+(d+g<<2)>>2]|0);d=d+1|0}while((d|0)!=(e|0));if(q){d=0;do{i=t+(d<<2)|0;f[i>>2]=(f[i>>2]|0)+(f[u+(d<<2)>>2]|0);d=d+1|0}while((d|0)!=(e|0))}}j=j+1|0}d=(((k>>>0)%3|0|0)==0?2:-1)+k|0;do if(!(f[l+(d>>>5<<2)>>2]&1<<(d&31))){if((d|0)>=0){d=f[(f[(f[r>>2]|0)+12>>2]|0)+(d<<2)>>2]|0;if((d|0)>=0)if(!((d>>>0)%3|0)){d=d+2|0;break}else{d=d+-1|0;break}}}else d=-1073741824;while(0);k=(d|0)==(m|0)?-1073741824:d}while((k|0)>-1);d=X(a,e)|0;if(!j)C=29;else{if(q){g=0;do{m=t+(g<<2)|0;f[m>>2]=(f[m>>2]|0)/(j|0)|0;g=g+1|0}while((g|0)!=(e|0))}mi(x,t,b+(d<<2)|0,c+(d<<2)|0)}}else{d=X(a,e)|0;C=29}if((C|0)==29){C=0;mi(x,c+((X(a+-1|0,e)|0)<<2)|0,b+(d<<2)|0,c+(d<<2)|0)}a=a+1|0;if((a|0)>=(w|0))break;d=f[v>>2]|0;g=f[d+4>>2]|0;h=d;d=f[d>>2]|0}_q(u);_q(t);return 1}function fd(a,b,c,d,e,g){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;g=g|0;var h=0,i=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0;y=e>>>0>1073741823?-1:e<<2;u=Zq(y)|0;ej(u|0,0,y|0)|0;v=Zq(y)|0;ej(v|0,0,y|0)|0;y=a+8|0;mi(y,u,b,c);t=f[a+32>>2]|0;w=a+40|0;h=f[w>>2]|0;g=f[h+4>>2]|0;d=f[h>>2]|0;s=g-d|0;x=s>>2;if((s|0)<=4){_q(v);_q(u);return 1}p=f[a+36>>2]|0;s=(e|0)>0;r=t+12|0;q=e<<2;a=1;while(1){if(g-d>>2>>>0<=a>>>0){Kp(h);d=f[h>>2]|0}o=f[d+(a<<2)>>2]|0;if(s)ej(u|0,0,q|0)|0;if((o|0)>-1){n=f[r>>2]|0;m=o;l=0;while(1){g=f[n+(m<<2)>>2]|0;if((g|0)>=0){h=f[t>>2]|0;i=f[p>>2]|0;k=f[i+(f[h+(g<<2)>>2]<<2)>>2]|0;d=g+1|0;d=((d|0)%3|0|0)==0?g+-2|0:d;if((d|0)<0)d=-1073741824;else d=f[h+(d<<2)>>2]|0;j=f[i+(d<<2)>>2]|0;d=(((g>>>0)%3|0|0)==0?2:-1)+g|0;if((d|0)<0)d=-1073741824;else d=f[h+(d<<2)>>2]|0;d=f[i+(d<<2)>>2]|0;if((k|0)<(a|0)&(j|0)<(a|0)&(d|0)<(a|0)){i=X(k,e)|0;h=X(j,e)|0;g=X(d,e)|0;if(s){d=0;do{f[v+(d<<2)>>2]=(f[c+(d+g<<2)>>2]|0)+(f[c+(d+h<<2)>>2]|0)-(f[c+(d+i<<2)>>2]|0);d=d+1|0}while((d|0)!=(e|0));if(s){d=0;do{k=u+(d<<2)|0;f[k>>2]=(f[k>>2]|0)+(f[v+(d<<2)>>2]|0);d=d+1|0}while((d|0)!=(e|0))}}h=l+1|0}else h=l}else h=l;d=(((m>>>0)%3|0|0)==0?2:-1)+m|0;do if((d|0)>=0){d=f[n+(d<<2)>>2]|0;if((d|0)>=0)if(!((d>>>0)%3|0)){d=d+2|0;break}else{d=d+-1|0;break}}while(0);m=(d|0)==(o|0)?-1073741824:d;if((m|0)<=-1)break;else l=h}d=X(a,e)|0;if(!h)z=31;else{if(s){g=0;do{o=u+(g<<2)|0;f[o>>2]=(f[o>>2]|0)/(h|0)|0;g=g+1|0}while((g|0)!=(e|0))}mi(y,u,b+(d<<2)|0,c+(d<<2)|0)}}else{d=X(a,e)|0;z=31}if((z|0)==31){z=0;mi(y,c+((X(a+-1|0,e)|0)<<2)|0,b+(d<<2)|0,c+(d<<2)|0)}a=a+1|0;if((a|0)>=(x|0))break;d=f[w>>2]|0;g=f[d+4>>2]|0;h=d;d=f[d>>2]|0}_q(v);_q(u);return 1}function gd(a,c,d){a=a|0;c=c|0;d=d|0;var e=La,g=La,i=0,j=0,k=0,l=0;switch(b[a+24>>0]|0){case 1:{j=f[c>>2]|0;i=a+48|0;c=f[i>>2]|0;i=f[i+4>>2]|0;k=a+40|0;i=(Ho(kn(f[k>>2]|0,f[k+4>>2]|0,j|0,((j|0)<0)<<31>>31|0)|0,I|0,c|0,i|0)|0)+(f[f[a>>2]>>2]|0)|0;e=$((h[i>>0]|h[i+1>>0]<<8)<<16>>16);g=$(e/$(32767.0));n[d>>2]=(b[a+32>>0]|0)==0?e:g;d=d+4|0;f[d>>2]=0;f[d+4>>2]=0;f[d+8>>2]=0;d=1;return d|0}case 2:{j=f[c>>2]|0;k=a+48|0;c=f[k>>2]|0;k=f[k+4>>2]|0;i=a+40|0;k=(Ho(kn(f[i>>2]|0,f[i+4>>2]|0,j|0,((j|0)<0)<<31>>31|0)|0,I|0,c|0,k|0)|0)+(f[f[a>>2]>>2]|0)|0;k=h[k>>0]|h[k+1>>0]<<8|h[k+2>>0]<<16|h[k+3>>0]<<24;c=k>>>16&65535;e=$((k&65535)<<16>>16);if(!(b[a+32>>0]|0)){n[d>>2]=e;e=$(c<<16>>16)}else{e=$(e/$(32767.0));n[d>>2]=e;e=$($(c<<16>>16)/$(32767.0))}n[d+4>>2]=e;k=d+8|0;f[k>>2]=0;f[k+4>>2]=0;k=1;return k|0}case 3:{i=f[c>>2]|0;k=a+48|0;c=f[k>>2]|0;k=f[k+4>>2]|0;j=a+40|0;k=(Ho(kn(f[j>>2]|0,f[j+4>>2]|0,i|0,((i|0)<0)<<31>>31|0)|0,I|0,c|0,k|0)|0)+(f[f[a>>2]>>2]|0)|0;c=k+2|0;c=h[c>>0]|h[c+1>>0]<<8;i=k+4|0;i=h[i>>0]|h[i+1>>0]<<8;e=$((h[k>>0]|h[k+1>>0]<<8)<<16>>16);if(!(b[a+32>>0]|0)){n[d>>2]=e;g=$(c<<16>>16);e=$(i<<16>>16)}else{g=$(e/$(32767.0));n[d>>2]=g;g=$($(c<<16>>16)/$(32767.0));e=$($(i<<16>>16)/$(32767.0))}n[d+4>>2]=g;n[d+8>>2]=e;n[d+12>>2]=$(0.0);k=1;return k|0}case 4:{k=f[c>>2]|0;l=a+48|0;j=f[l>>2]|0;l=f[l+4>>2]|0;c=a+40|0;l=(Ho(kn(f[c>>2]|0,f[c+4>>2]|0,k|0,((k|0)<0)<<31>>31|0)|0,I|0,j|0,l|0)|0)+(f[f[a>>2]>>2]|0)|0;j=l;j=h[j>>0]|h[j+1>>0]<<8|h[j+2>>0]<<16|h[j+3>>0]<<24;l=l+4|0;l=h[l>>0]|h[l+1>>0]<<8|h[l+2>>0]<<16|h[l+3>>0]<<24;k=(b[a+32>>0]|0)==0;c=(Tn(j|0,l|0,16)|0)&65535;i=l&65535;a=(Tn(j|0,l|0,48)|0)&65535;e=$((j&65535)<<16>>16);if(k){n[d>>2]=e;g=$(c<<16>>16);n[d+4>>2]=g;g=$(i<<16>>16);n[d+8>>2]=g;g=$(a<<16>>16);n[d+12>>2]=g;l=1;return l|0}else{g=$(e/$(32767.0));n[d>>2]=g;g=$($(c<<16>>16)/$(32767.0));n[d+4>>2]=g;g=$($(i<<16>>16)/$(32767.0));n[d+8>>2]=g;g=$($(a<<16>>16)/$(32767.0));n[d+12>>2]=g;l=1;return l|0}}default:{l=0;return l|0}}return 0}function hd(a,c){a=a|0;c=c|0;var d=0,e=0,g=0,h=0,i=0,j=0,k=0,l=0,m=0;e=f[a>>2]|0;i=a+4|0;d=f[i>>2]|0;h=c+4|0;if((d|0)==(e|0)){g=h;d=a;j=f[h>>2]|0;h=e;f[d>>2]=j;f[g>>2]=h;h=c+8|0;e=f[i>>2]|0;d=f[h>>2]|0;f[i>>2]=d;f[h>>2]=e;h=a+8|0;a=c+12|0;i=f[h>>2]|0;e=f[a>>2]|0;f[h>>2]=e;f[a>>2]=i;a=f[g>>2]|0;f[c>>2]=a;return}g=f[h>>2]|0;do{l=d;d=d+-116|0;f[g+-116>>2]=f[d>>2];j=l+-112|0;f[g+-112>>2]=f[j>>2];k=l+-108|0;f[g+-108>>2]=f[k>>2];m=l+-104|0;f[g+-104>>2]=f[m>>2];f[j>>2]=0;f[k>>2]=0;f[m>>2]=0;m=l+-100|0;f[g+-100>>2]=f[m>>2];k=l+-96|0;f[g+-96>>2]=f[k>>2];j=l+-92|0;f[g+-92>>2]=f[j>>2];f[m>>2]=0;f[k>>2]=0;f[j>>2]=0;b[g+-88>>0]=b[l+-88>>0]|0;j=g+-84|0;k=l+-84|0;f[j>>2]=0;m=g+-80|0;f[m>>2]=0;f[g+-76>>2]=0;f[j>>2]=f[k>>2];j=l+-80|0;f[m>>2]=f[j>>2];m=l+-76|0;f[g+-76>>2]=f[m>>2];f[m>>2]=0;f[j>>2]=0;f[k>>2]=0;k=g+-72|0;j=l+-72|0;f[k>>2]=0;m=g+-68|0;f[m>>2]=0;f[g+-64>>2]=0;f[k>>2]=f[j>>2];k=l+-68|0;f[m>>2]=f[k>>2];m=l+-64|0;f[g+-64>>2]=f[m>>2];f[m>>2]=0;f[k>>2]=0;f[j>>2]=0;j=g+-60|0;k=l+-60|0;f[j>>2]=0;m=g+-56|0;f[m>>2]=0;f[g+-52>>2]=0;f[j>>2]=f[k>>2];j=l+-56|0;f[m>>2]=f[j>>2];m=l+-52|0;f[g+-52>>2]=f[m>>2];f[m>>2]=0;f[j>>2]=0;f[k>>2]=0;f[g+-48>>2]=f[l+-48>>2];b[g+-44>>0]=b[l+-44>>0]|0;k=g+-40|0;j=l+-40|0;f[k>>2]=0;m=g+-36|0;f[m>>2]=0;f[g+-32>>2]=0;f[k>>2]=f[j>>2];k=l+-36|0;f[m>>2]=f[k>>2];m=l+-32|0;f[g+-32>>2]=f[m>>2];f[m>>2]=0;f[k>>2]=0;f[j>>2]=0;j=g+-28|0;k=l+-28|0;f[j>>2]=0;m=g+-24|0;f[m>>2]=0;f[g+-20>>2]=0;f[j>>2]=f[k>>2];j=l+-24|0;f[m>>2]=f[j>>2];m=l+-20|0;f[g+-20>>2]=f[m>>2];f[m>>2]=0;f[j>>2]=0;f[k>>2]=0;f[g+-16>>2]=f[l+-16>>2];k=g+-12|0;j=l+-12|0;f[k>>2]=0;m=g+-8|0;f[m>>2]=0;f[g+-4>>2]=0;f[k>>2]=f[j>>2];k=l+-8|0;f[m>>2]=f[k>>2];l=l+-4|0;f[g+-4>>2]=f[l>>2];f[l>>2]=0;f[k>>2]=0;f[j>>2]=0;g=(f[h>>2]|0)+-116|0;f[h>>2]=g}while((d|0)!=(e|0));m=h;l=a;k=g;j=f[a>>2]|0;f[l>>2]=k;f[m>>2]=j;j=c+8|0;l=f[i>>2]|0;k=f[j>>2]|0;f[i>>2]=k;f[j>>2]=l;j=a+8|0;l=c+12|0;k=f[j>>2]|0;a=f[l>>2]|0;f[j>>2]=a;f[l>>2]=k;m=f[m>>2]|0;f[c>>2]=m;return}function id(a,b){a=a|0;b=b|0;var c=0,d=0,e=0,g=0,h=0,i=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0;r=u;u=u+48|0;m=r+32|0;h=r+28|0;p=r+16|0;q=r;j=a+16|0;d=f[j>>2]|0;if(d|0){g=f[b>>2]|0;c=j;a:while(1){e=d;while(1){if((f[e+16>>2]|0)>=(g|0))break;d=f[e+4>>2]|0;if(!d)break a;else e=d}d=f[e>>2]|0;if(!d){c=e;break}else c=e}if((c|0)!=(j|0)?(g|0)>=(f[c+16>>2]|0):0){q=c;q=q+20|0;u=r;return q|0}}Ep(p);f[q>>2]=f[b>>2];l=q+4|0;f[q+8>>2]=0;k=q+12|0;f[k>>2]=0;n=q+8|0;f[l>>2]=n;c=f[p>>2]|0;o=p+4|0;if((c|0)!=(o|0)){g=n;e=c;d=c;while(1){c=e+16|0;f[h>>2]=g;f[m>>2]=f[h>>2];fh(l,m,c,c)|0;c=f[d+4>>2]|0;if(!c)while(1){c=f[d+8>>2]|0;if((f[c>>2]|0)==(d|0))break;else d=c}else while(1){d=f[c>>2]|0;if(!d)break;else c=d}if((c|0)==(o|0))break;else{e=c;d=c}}}i=a+12|0;c=f[j>>2]|0;do if(c){e=f[q>>2]|0;g=c;while(1){c=f[g+16>>2]|0;if((e|0)<(c|0)){c=f[g>>2]|0;if(!c){c=19;break}}else{if((c|0)>=(e|0)){c=24;break}d=g+4|0;c=f[d>>2]|0;if(!c){c=23;break}}g=c}if((c|0)==19){f[m>>2]=g;h=g;b=g;break}else if((c|0)==23){f[m>>2]=g;h=g;b=d;break}else if((c|0)==24){f[m>>2]=g;h=g;b=m;break}}else{f[m>>2]=j;h=j;b=j}while(0);c=f[b>>2]|0;if(!c){c=ln(32)|0;f[c+16>>2]=f[q>>2];g=c+20|0;f[g>>2]=f[l>>2];e=c+24|0;d=f[q+8>>2]|0;f[e>>2]=d;m=f[k>>2]|0;f[c+28>>2]=m;if(!m)f[g>>2]=e;else{f[d+8>>2]=e;f[l>>2]=n;f[n>>2]=0;f[k>>2]=0}f[c>>2]=0;f[c+4>>2]=0;f[c+8>>2]=h;f[b>>2]=c;d=f[f[i>>2]>>2]|0;if(!d)d=c;else{f[i>>2]=d;d=f[b>>2]|0}Me(f[a+16>>2]|0,d);a=a+20|0;f[a>>2]=(f[a>>2]|0)+1}tj(q+4|0,f[n>>2]|0);tj(p,f[o>>2]|0);q=c;q=q+20|0;u=r;return q|0}function jd(a,c,d){a=a|0;c=c|0;d=d|0;var e=La,g=La,i=0,j=0,k=0,l=0;switch(b[a+24>>0]|0){case 1:{j=f[c>>2]|0;i=a+48|0;c=f[i>>2]|0;i=f[i+4>>2]|0;k=a+40|0;i=(Ho(kn(f[k>>2]|0,f[k+4>>2]|0,j|0,((j|0)<0)<<31>>31|0)|0,I|0,c|0,i|0)|0)+(f[f[a>>2]>>2]|0)|0;e=$((h[i>>0]|h[i+1>>0]<<8)&65535);g=$(e/$(65535.0));n[d>>2]=(b[a+32>>0]|0)==0?e:g;d=d+4|0;f[d>>2]=0;f[d+4>>2]=0;f[d+8>>2]=0;d=1;return d|0}case 2:{j=f[c>>2]|0;k=a+48|0;c=f[k>>2]|0;k=f[k+4>>2]|0;i=a+40|0;k=(Ho(kn(f[i>>2]|0,f[i+4>>2]|0,j|0,((j|0)<0)<<31>>31|0)|0,I|0,c|0,k|0)|0)+(f[f[a>>2]>>2]|0)|0;k=h[k>>0]|h[k+1>>0]<<8|h[k+2>>0]<<16|h[k+3>>0]<<24;c=k>>>16&65535;e=$(k&65535);if(!(b[a+32>>0]|0)){n[d>>2]=e;e=$(c&65535)}else{e=$(e/$(65535.0));n[d>>2]=e;e=$($(c&65535)/$(65535.0))}n[d+4>>2]=e;k=d+8|0;f[k>>2]=0;f[k+4>>2]=0;k=1;return k|0}case 3:{i=f[c>>2]|0;k=a+48|0;c=f[k>>2]|0;k=f[k+4>>2]|0;j=a+40|0;k=(Ho(kn(f[j>>2]|0,f[j+4>>2]|0,i|0,((i|0)<0)<<31>>31|0)|0,I|0,c|0,k|0)|0)+(f[f[a>>2]>>2]|0)|0;c=k+2|0;c=h[c>>0]|h[c+1>>0]<<8;i=k+4|0;i=h[i>>0]|h[i+1>>0]<<8;e=$((h[k>>0]|h[k+1>>0]<<8)&65535);if(!(b[a+32>>0]|0)){n[d>>2]=e;g=$(c&65535);e=$(i&65535)}else{g=$(e/$(65535.0));n[d>>2]=g;g=$($(c&65535)/$(65535.0));e=$($(i&65535)/$(65535.0))}n[d+4>>2]=g;n[d+8>>2]=e;n[d+12>>2]=$(0.0);k=1;return k|0}case 4:{k=f[c>>2]|0;l=a+48|0;j=f[l>>2]|0;l=f[l+4>>2]|0;c=a+40|0;l=(Ho(kn(f[c>>2]|0,f[c+4>>2]|0,k|0,((k|0)<0)<<31>>31|0)|0,I|0,j|0,l|0)|0)+(f[f[a>>2]>>2]|0)|0;j=l;j=h[j>>0]|h[j+1>>0]<<8|h[j+2>>0]<<16|h[j+3>>0]<<24;l=l+4|0;l=h[l>>0]|h[l+1>>0]<<8|h[l+2>>0]<<16|h[l+3>>0]<<24;k=(b[a+32>>0]|0)==0;c=(Tn(j|0,l|0,16)|0)&65535;i=l&65535;a=(Tn(j|0,l|0,48)|0)&65535;e=$(j&65535);if(k){n[d>>2]=e;g=$(c&65535);n[d+4>>2]=g;g=$(i&65535);n[d+8>>2]=g;g=$(a&65535);n[d+12>>2]=g;l=1;return l|0}else{g=$(e/$(65535.0));n[d>>2]=g;g=$($(c&65535)/$(65535.0));n[d+4>>2]=g;g=$($(i&65535)/$(65535.0));n[d+8>>2]=g;g=$($(a&65535)/$(65535.0));n[d+12>>2]=g;l=1;return l|0}}default:{l=0;return l|0}}return 0}function kd(a,b,c){a=a|0;b=b|0;c=c|0;var d=0,e=0,g=0,h=0,i=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,v=0,w=0,x=0,y=0;y=u;u=u+16|0;r=y+12|0;s=y+4|0;p=y+8|0;q=y;x=a+8+(b*12|0)|0;d=f[x>>2]|0;t=a+8+(b*12|0)+4|0;e=f[t>>2]|0;if((e|0)!=(d|0))f[t>>2]=e+(~((e+-4-d|0)>>>2)<<2);d=f[c>>2]|0;m=a+4|0;f[s>>2]=(d|0)<0?-1073741824:(d>>>0)/3|0;w=a+56|0;l=a+8+(b*12|0)+8|0;e=d;o=0;do{n=(o|0)==1;if(n){g=(d|0)<0;do if(!g)if(!((d>>>0)%3|0)){e=d+2|0;break}else{e=d+-1|0;break}else e=d;while(0);f[p>>2]=e;f[r>>2]=f[p>>2];if((Fg(a,r)|0)<0)break;e=d+1|0;if(g){v=12;break}e=((e|0)%3|0|0)==0?d+-2|0:e;f[c>>2]=e;g=e+1|0;if((e|0)<0){v=16;break}e=((g|0)%3|0|0)==0?e+-2|0:g;if((e|0)<0){v=16;break}e=f[(f[(f[m>>2]|0)+12>>2]|0)+(e<<2)>>2]|0;g=e+1|0;if((e|0)<0){v=16;break}e=((g|0)%3|0|0)==0?e+-2|0:g;f[c>>2]=e;if((e|0)<0)break;else{g=0;v=18}}else{i=f[s>>2]|0;k=e;j=0}while(1){if((v|0)==18){v=0;i=(e>>>0)/3|0;f[s>>2]=i;k=e;j=g}h=(f[w>>2]|0)+(i>>>5<<2)|0;g=1<<(i&31);e=f[h>>2]|0;if(g&e|0){e=k;g=j;break}f[h>>2]=e|g;e=f[t>>2]|0;if((e|0)==(f[l>>2]|0))Ii(x,s);else{f[e>>2]=f[s>>2];f[t>>2]=e+4}g=j+1|0;if((j|0)>0){do if(!(g&1)){d=n?k:d;if((k|0)>=0)if(!((k>>>0)%3|0)){e=k+2|0;break}else{e=k+-1|0;break}else e=k}else{e=k+1|0;if((k|0)<0)e=k;else e=((e|0)%3|0|0)==0?k+-2|0:e}while(0);f[c>>2]=e}else e=k;f[q>>2]=e;f[r>>2]=f[q>>2];e=Fg(a,r)|0;f[c>>2]=e;if((e|0)<0)break;else v=18}if(!((g&1|0)==0|n^1)){n=f[t>>2]|0;j=f[n+-4>>2]|0;k=(f[w>>2]|0)+(j>>>5<<2)|0;f[k>>2]=f[k>>2]&~(1<<(j&31));f[t>>2]=n+-4}o=o+1|0}while((o|0)<2);if((v|0)==12){f[c>>2]=d;e=d;v=16}if((v|0)==16)f[c>>2]=e;f[a+44+(b<<2)>>2]=d;e=f[t>>2]|0;d=f[x>>2]|0;h=d;if((e|0)==(d|0)){u=y;return}g=f[w>>2]|0;e=e-d>>2;d=0;do{w=f[h+(d<<2)>>2]|0;x=g+(w>>>5<<2)|0;f[x>>2]=f[x>>2]&~(1<<(w&31));d=d+1|0}while(d>>>0>>0);u=y;return}function ld(a,c,d,e){a=a|0;c=c|0;d=d|0;e=e|0;var g=0,h=0,i=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0;n=a+4|0;s=f[c>>2]|0;c=s;do if((s|0)!=(n|0)){i=s+16|0;o=b[e+11>>0]|0;p=o<<24>>24<0;o=p?f[e+4>>2]|0:o&255;h=b[i+11>>0]|0;l=h<<24>>24<0;h=l?f[s+20>>2]|0:h&255;k=h>>>0>>0;g=k?h:o;if((g|0)!=0?(j=rl(p?f[e>>2]|0:e,l?f[i>>2]|0:i,g)|0,(j|0)!=0):0){if((j|0)<0)break}else t=4;if((t|0)==4?o>>>0>>0:0)break;g=o>>>0>>0?o:h;if((g|0)!=0?(m=rl(l?f[i>>2]|0:i,p?f[e>>2]|0:e,g)|0,(m|0)!=0):0){if((m|0)>=0)t=34}else t=20;if((t|0)==20?!k:0)t=34;if((t|0)==34){f[d>>2]=c;return d|0}k=s+4|0;c=f[k>>2]|0;l=(c|0)==0;if(l){g=s;while(1){c=f[g+8>>2]|0;if((f[c>>2]|0)==(g|0))break;else g=c}}else while(1){g=f[c>>2]|0;if(!g)break;else c=g}do if((c|0)!=(n|0)){h=c+16|0;i=b[h+11>>0]|0;j=i<<24>>24<0;i=j?f[c+20>>2]|0:i&255;g=i>>>0>>0?i:o;if((g|0)!=0?(q=rl(p?f[e>>2]|0:e,j?f[h>>2]|0:h,g)|0,(q|0)!=0):0){if((q|0)<0)break}else t=28;if((t|0)==28?o>>>0>>0:0)break;d=yg(a,d,e)|0;return d|0}while(0);if(l){f[d>>2]=s;d=k;return d|0}else{f[d>>2]=c;d=c;return d|0}}while(0);do if((s|0)!=(f[a>>2]|0)){c=f[s>>2]|0;if(!c){g=s;while(1){c=f[g+8>>2]|0;if((f[c>>2]|0)==(g|0))g=c;else{g=c;break}}}else while(1){g=f[c+4>>2]|0;if(!g){g=c;break}else c=g}c=g;k=g+16|0;h=b[k+11>>0]|0;l=h<<24>>24<0;h=l?f[g+20>>2]|0:h&255;i=b[e+11>>0]|0;j=i<<24>>24<0;i=j?f[e+4>>2]|0:i&255;g=i>>>0>>0?i:h;if((g|0)!=0?(r=rl(l?f[k>>2]|0:k,j?f[e>>2]|0:e,g)|0,(r|0)!=0):0){if((r|0)<0)break}else t=12;if((t|0)==12?h>>>0>>0:0)break;d=yg(a,d,e)|0;return d|0}while(0);if(!(f[s>>2]|0)){f[d>>2]=s;d=s;return d|0}else{t=c;f[d>>2]=t;d=t+4|0;return d|0}return 0}function md(a,c,d){a=a|0;c=c|0;d=d|0;var e=0,g=0,i=0;switch(b[a+24>>0]|0){case 1:{g=f[c>>2]|0;c=a+48|0;e=f[c>>2]|0;c=f[c+4>>2]|0;i=a+40|0;c=(Ho(kn(f[i>>2]|0,f[i+4>>2]|0,g|0,((g|0)<0)<<31>>31|0)|0,I|0,e|0,c|0)|0)+(f[f[a>>2]>>2]|0)|0;c=h[c>>0]|h[c+1>>0]<<8|h[c+2>>0]<<16|h[c+3>>0]<<24;a=d;f[a>>2]=c;f[a+4>>2]=((c|0)<0)<<31>>31;a=d+8|0;f[a>>2]=0;f[a+4>>2]=0;f[a+8>>2]=0;f[a+12>>2]=0;f[a+16>>2]=0;f[a+20>>2]=0;a=1;return a|0}case 2:{e=f[c>>2]|0;g=a+48|0;i=f[g>>2]|0;g=f[g+4>>2]|0;c=a+40|0;g=(Ho(kn(f[c>>2]|0,f[c+4>>2]|0,e|0,((e|0)<0)<<31>>31|0)|0,I|0,i|0,g|0)|0)+(f[f[a>>2]>>2]|0)|0;i=g;i=h[i>>0]|h[i+1>>0]<<8|h[i+2>>0]<<16|h[i+3>>0]<<24;g=g+4|0;g=h[g>>0]|h[g+1>>0]<<8|h[g+2>>0]<<16|h[g+3>>0]<<24;a=An(0,i|0,32)|0;e=d;f[e>>2]=a;f[e+4>>2]=I;g=An(i|0,g|0,32)|0;i=d+8|0;f[i>>2]=g;f[i+4>>2]=I;i=d+16|0;f[i>>2]=0;f[i+4>>2]=0;f[i+8>>2]=0;f[i+12>>2]=0;i=1;return i|0}case 3:{i=f[c>>2]|0;g=a+48|0;e=f[g>>2]|0;g=f[g+4>>2]|0;c=a+40|0;g=(Ho(kn(f[c>>2]|0,f[c+4>>2]|0,i|0,((i|0)<0)<<31>>31|0)|0,I|0,e|0,g|0)|0)+(f[f[a>>2]>>2]|0)|0;a=h[g>>0]|h[g+1>>0]<<8|h[g+2>>0]<<16|h[g+3>>0]<<24;e=g+4|0;e=h[e>>0]|h[e+1>>0]<<8|h[e+2>>0]<<16|h[e+3>>0]<<24;g=g+8|0;g=h[g>>0]|h[g+1>>0]<<8|h[g+2>>0]<<16|h[g+3>>0]<<24;i=d;f[i>>2]=a;f[i+4>>2]=((a|0)<0)<<31>>31;i=d+8|0;f[i>>2]=e;f[i+4>>2]=((e|0)<0)<<31>>31;i=d+16|0;f[i>>2]=g;f[i+4>>2]=((g|0)<0)<<31>>31;i=d+24|0;f[i>>2]=0;f[i+4>>2]=0;i=1;return i|0}case 4:{e=f[c>>2]|0;g=a+48|0;c=f[g>>2]|0;g=f[g+4>>2]|0;i=a+40|0;g=(Ho(kn(f[i>>2]|0,f[i+4>>2]|0,e|0,((e|0)<0)<<31>>31|0)|0,I|0,c|0,g|0)|0)+(f[f[a>>2]>>2]|0)|0;c=h[g>>0]|h[g+1>>0]<<8|h[g+2>>0]<<16|h[g+3>>0]<<24;a=g+4|0;a=h[a>>0]|h[a+1>>0]<<8|h[a+2>>0]<<16|h[a+3>>0]<<24;e=g+8|0;e=h[e>>0]|h[e+1>>0]<<8|h[e+2>>0]<<16|h[e+3>>0]<<24;g=g+12|0;g=h[g>>0]|h[g+1>>0]<<8|h[g+2>>0]<<16|h[g+3>>0]<<24;i=d;f[i>>2]=c;f[i+4>>2]=((c|0)<0)<<31>>31;i=d+8|0;f[i>>2]=a;f[i+4>>2]=((a|0)<0)<<31>>31;i=d+16|0;f[i>>2]=e;f[i+4>>2]=((e|0)<0)<<31>>31;i=d+24|0;f[i>>2]=g;f[i+4>>2]=((g|0)<0)<<31>>31;i=1;return i|0}default:{i=0;return i|0}}return 0}function nd(a,b,c,d,e){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;var g=0,h=0,i=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0;l=a;j=b;k=j;h=c;n=d;i=n;if(!k){g=(e|0)!=0;if(!i){if(g){f[e>>2]=(l>>>0)%(h>>>0);f[e+4>>2]=0}n=0;e=(l>>>0)/(h>>>0)>>>0;return (I=n,e)|0}else{if(!g){n=0;e=0;return (I=n,e)|0}f[e>>2]=a|0;f[e+4>>2]=b&0;n=0;e=0;return (I=n,e)|0}}g=(i|0)==0;do if(h){if(!g){g=(_(i|0)|0)-(_(k|0)|0)|0;if(g>>>0<=31){m=g+1|0;i=31-g|0;b=g-31>>31;h=m;a=l>>>(m>>>0)&b|k<>>(m>>>0)&b;g=0;i=l<>2]=a|0;f[e+4>>2]=j|b&0;n=0;e=0;return (I=n,e)|0}g=h-1|0;if(g&h|0){i=(_(h|0)|0)+33-(_(k|0)|0)|0;p=64-i|0;m=32-i|0;j=m>>31;o=i-32|0;b=o>>31;h=i;a=m-1>>31&k>>>(o>>>0)|(k<>>(i>>>0))&b;b=b&k>>>(i>>>0);g=l<>>(o>>>0))&j|l<>31;break}if(e|0){f[e>>2]=g&l;f[e+4>>2]=0}if((h|0)==1){o=j|b&0;p=a|0|0;return (I=o,p)|0}else{p=Cm(h|0)|0;o=k>>>(p>>>0)|0;p=k<<32-p|l>>>(p>>>0)|0;return (I=o,p)|0}}else{if(g){if(e|0){f[e>>2]=(k>>>0)%(h>>>0);f[e+4>>2]=0}o=0;p=(k>>>0)/(h>>>0)>>>0;return (I=o,p)|0}if(!l){if(e|0){f[e>>2]=0;f[e+4>>2]=(k>>>0)%(i>>>0)}o=0;p=(k>>>0)/(i>>>0)>>>0;return (I=o,p)|0}g=i-1|0;if(!(g&i)){if(e|0){f[e>>2]=a|0;f[e+4>>2]=g&k|b&0}o=0;p=k>>>((Cm(i|0)|0)>>>0);return (I=o,p)|0}g=(_(i|0)|0)-(_(k|0)|0)|0;if(g>>>0<=30){b=g+1|0;i=31-g|0;h=b;a=k<>>(b>>>0);b=k>>>(b>>>0);g=0;i=l<>2]=a|0;f[e+4>>2]=j|b&0;o=0;p=0;return (I=o,p)|0}while(0);if(!h){k=i;j=0;i=0}else{m=c|0|0;l=n|d&0;k=Ho(m|0,l|0,-1,-1)|0;c=I;j=i;i=0;do{d=j;j=g>>>31|j<<1;g=i|g<<1;d=a<<1|d>>>31|0;n=a>>>31|b<<1|0;Xn(k|0,c|0,d|0,n|0)|0;p=I;o=p>>31|((p|0)<0?-1:0)<<1;i=o&1;a=Xn(d|0,n|0,o&m|0,(((p|0)<0?-1:0)>>31|((p|0)<0?-1:0)<<1)&l|0)|0;b=I;h=h-1|0}while((h|0)!=0);k=j;j=0}h=0;if(e|0){f[e>>2]=a;f[e+4>>2]=b}o=(g|0)>>>31|(k|h)<<1|(h<<1|g>>>31)&0|j;p=(g<<1|0>>>31)&-2|i;return (I=o,p)|0}function od(a,c,d){a=a|0;c=c|0;d=d|0;var e=0,g=0,i=0,j=0,k=0,l=0,m=0,n=0;n=u;u=u+32|0;j=n+24|0;k=n+20|0;l=n+16|0;m=n+12|0;e=n+8|0;g=n+4|0;i=n;if(!d){d=0;u=n;return d|0}switch(f[a+28>>2]|0){case 9:{e=f[c>>2]|0;switch(b[a+24>>0]|0){case 1:{c=a+48|0;m=f[c>>2]|0;c=f[c+4>>2]|0;l=a+40|0;e=(Ho(kn(f[l>>2]|0,f[l+4>>2]|0,e|0,((e|0)<0)<<31>>31|0)|0,I|0,m|0,c|0)|0)+(f[f[a>>2]>>2]|0)|0;e=h[e>>0]|h[e+1>>0]<<8|h[e+2>>0]<<16|h[e+3>>0]<<24;break}case 2:{c=a+48|0;m=f[c>>2]|0;c=f[c+4>>2]|0;l=a+40|0;e=(Ho(kn(f[l>>2]|0,f[l+4>>2]|0,e|0,((e|0)<0)<<31>>31|0)|0,I|0,m|0,c|0)|0)+(f[f[a>>2]>>2]|0)|0;e=h[e>>0]|h[e+1>>0]<<8|h[e+2>>0]<<16|h[e+3>>0]<<24;break}case 3:{c=a+48|0;m=f[c>>2]|0;c=f[c+4>>2]|0;l=a+40|0;e=(Ho(kn(f[l>>2]|0,f[l+4>>2]|0,e|0,((e|0)<0)<<31>>31|0)|0,I|0,m|0,c|0)|0)+(f[f[a>>2]>>2]|0)|0;e=h[e>>0]|h[e+1>>0]<<8|h[e+2>>0]<<16|h[e+3>>0]<<24;break}case 4:{c=a+48|0;m=f[c>>2]|0;c=f[c+4>>2]|0;l=a+40|0;e=(Ho(kn(f[l>>2]|0,f[l+4>>2]|0,e|0,((e|0)<0)<<31>>31|0)|0,I|0,m|0,c|0)|0)+(f[f[a>>2]>>2]|0)|0;e=h[e>>0]|h[e+1>>0]<<8|h[e+2>>0]<<16|h[e+3>>0]<<24;break}default:{d=0;u=n;return d|0}}f[d>>2]=e;d=1;u=n;return d|0}case 2:{f[k>>2]=f[c>>2];f[j>>2]=f[k>>2];d=Cf(a,j,d)|0;u=n;return d|0}case 1:{f[l>>2]=f[c>>2];f[j>>2]=f[l>>2];d=Af(a,j,d)|0;u=n;return d|0}case 4:{f[m>>2]=f[c>>2];f[j>>2]=f[m>>2];d=pf(a,j,d)|0;u=n;return d|0}case 3:{f[e>>2]=f[c>>2];f[j>>2]=f[e>>2];d=nf(a,j,d)|0;u=n;return d|0}case 6:{f[g>>2]=f[c>>2];f[j>>2]=f[g>>2];d=ef(a,j,d)|0;u=n;return d|0}case 5:{f[i>>2]=f[c>>2];f[j>>2]=f[i>>2];d=gf(a,j,d)|0;u=n;return d|0}default:{d=0;u=n;return d|0}}return 0}function pd(a,b,c){a=a|0;b=b|0;c=c|0;var d=0,e=0,g=0,h=0,i=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0;t=u;u=u+16|0;o=t+8|0;p=t+4|0;r=t;q=a+68|0;f[q>>2]=(f[q>>2]|0)+1;q=(f[a+8+(b*12|0)+4>>2]|0)-(f[a+8+(b*12|0)>>2]|0)|0;s=q>>2;if((q|0)<=0){u=t;return}n=a+4|0;m=a+56|0;q=a+72|0;k=f[c>>2]|0;i=k+4|0;j=k+8|0;l=a+76|0;c=f[a+44+(b<<2)>>2]|0;h=0;do{g=(c|0)<0;b=g?-1073741824:(c>>>0)/3|0;d=(f[m>>2]|0)+(b>>>5<<2)|0;f[d>>2]=f[d>>2]|1<<(b&31);f[q>>2]=(f[q>>2]|0)+1;do if(h){f[p>>2]=c;b=f[n>>2]|0;d=f[a>>2]|0;f[o>>2]=f[p>>2];d=wk(o,b,d)|0;f[l>>2]=d;f[o>>2]=d;b=f[i>>2]|0;if(b>>>0<(f[j>>2]|0)>>>0){f[b>>2]=d;f[i>>2]=b+4}else Ii(k,o);if(!(h&1)){b=c+1|0;if(g)break;c=((b|0)%3|0|0)==0?c+-2|0:b;e=31;break}if(!g)if(!((c>>>0)%3|0)){c=c+2|0;e=31;break}else{c=c+-1|0;e=31;break}}else{f[p>>2]=c;b=f[n>>2]|0;d=f[a>>2]|0;f[o>>2]=f[p>>2];d=wk(o,b,d)|0;f[r>>2]=d;b=f[i>>2]|0;if(b>>>0<(f[j>>2]|0)>>>0){f[b>>2]=d;f[i>>2]=b+4}else Ii(k,r);b=c+1|0;if(g)b=c;else b=((b|0)%3|0|0)==0?c+-2|0:b;f[p>>2]=b;b=f[n>>2]|0;d=f[a>>2]|0;f[o>>2]=f[p>>2];d=wk(o,b,d)|0;f[r>>2]=d;b=f[i>>2]|0;if(b>>>0<(f[j>>2]|0)>>>0){f[b>>2]=d;f[i>>2]=b+4}else Ii(k,r);do if(!g)if(!((c>>>0)%3|0)){b=c+2|0;break}else{b=c+-1|0;break}else b=c;while(0);f[p>>2]=b;b=f[n>>2]|0;d=f[a>>2]|0;f[o>>2]=f[p>>2];d=wk(o,b,d)|0;f[l>>2]=d;f[o>>2]=d;b=f[i>>2]|0;if(b>>>0<(f[j>>2]|0)>>>0){f[b>>2]=d;f[i>>2]=b+4}else Ii(k,o);e=31}while(0);if((e|0)==31){e=0;if((c|0)>=0)c=f[(f[(f[n>>2]|0)+12>>2]|0)+(c<<2)>>2]|0}h=h+1|0}while((h|0)<(s|0));u=t;return}function qd(a,c,d){a=a|0;c=c|0;d=d|0;var e=La,g=0,i=La,j=0,k=0;switch(b[a+24>>0]|0){case 1:{j=f[c>>2]|0;g=a+48|0;c=f[g>>2]|0;g=f[g+4>>2]|0;k=a+40|0;g=(Ho(kn(f[k>>2]|0,f[k+4>>2]|0,j|0,((j|0)<0)<<31>>31|0)|0,I|0,c|0,g|0)|0)+(f[f[a>>2]>>2]|0)|0;i=$((h[g>>0]|h[g+1>>0]<<8)<<16>>16);e=$(i/$(32767.0));n[d>>2]=(b[a+32>>0]|0)==0?i:e;d=d+4|0;f[d>>2]=0;f[d+4>>2]=0;d=1;return d|0}case 2:{j=f[c>>2]|0;k=a+48|0;c=f[k>>2]|0;k=f[k+4>>2]|0;g=a+40|0;k=(Ho(kn(f[g>>2]|0,f[g+4>>2]|0,j|0,((j|0)<0)<<31>>31|0)|0,I|0,c|0,k|0)|0)+(f[f[a>>2]>>2]|0)|0;k=h[k>>0]|h[k+1>>0]<<8|h[k+2>>0]<<16|h[k+3>>0]<<24;c=k>>>16&65535;e=$((k&65535)<<16>>16);if(!(b[a+32>>0]|0)){n[d>>2]=e;e=$(c<<16>>16)}else{e=$(e/$(32767.0));n[d>>2]=e;e=$($(c<<16>>16)/$(32767.0))}n[d+4>>2]=e;n[d+8>>2]=$(0.0);k=1;return k|0}case 3:{g=f[c>>2]|0;k=a+48|0;c=f[k>>2]|0;k=f[k+4>>2]|0;j=a+40|0;k=(Ho(kn(f[j>>2]|0,f[j+4>>2]|0,g|0,((g|0)<0)<<31>>31|0)|0,I|0,c|0,k|0)|0)+(f[f[a>>2]>>2]|0)|0;c=k+2|0;c=h[c>>0]|h[c+1>>0]<<8;g=k+4|0;g=h[g>>0]|h[g+1>>0]<<8;e=$((h[k>>0]|h[k+1>>0]<<8)<<16>>16);if(!(b[a+32>>0]|0)){n[d>>2]=e;i=$(c<<16>>16);n[d+4>>2]=i;i=$(g<<16>>16);n[d+8>>2]=i;k=1;return k|0}else{i=$(e/$(32767.0));n[d>>2]=i;i=$($(c<<16>>16)/$(32767.0));n[d+4>>2]=i;i=$($(g<<16>>16)/$(32767.0));n[d+8>>2]=i;k=1;return k|0}}case 4:{k=f[c>>2]|0;g=a+48|0;j=f[g>>2]|0;g=f[g+4>>2]|0;c=a+40|0;g=(Ho(kn(f[c>>2]|0,f[c+4>>2]|0,k|0,((k|0)<0)<<31>>31|0)|0,I|0,j|0,g|0)|0)+(f[f[a>>2]>>2]|0)|0;j=g;j=h[j>>0]|h[j+1>>0]<<8|h[j+2>>0]<<16|h[j+3>>0]<<24;g=g+4|0;g=h[g>>0]|h[g+1>>0]<<8|h[g+2>>0]<<16|h[g+3>>0]<<24;k=(b[a+32>>0]|0)==0;c=(Tn(j|0,g|0,16)|0)&65535;g=g&65535;e=$((j&65535)<<16>>16);if(k){n[d>>2]=e;i=$(c<<16>>16);n[d+4>>2]=i;i=$(g<<16>>16);n[d+8>>2]=i;k=1;return k|0}else{i=$(e/$(32767.0));n[d>>2]=i;i=$($(c<<16>>16)/$(32767.0));n[d+4>>2]=i;i=$($(g<<16>>16)/$(32767.0));n[d+8>>2]=i;k=1;return k|0}}default:{k=0;return k|0}}return 0}function rd(a,b){a=a|0;b=b|0;var c=0,e=0,g=0,h=0,i=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0;e=a+4|0;if(!b){c=f[a>>2]|0;f[a>>2]=0;if(c|0)ar(c);f[e>>2]=0;return}if(b>>>0>1073741823){a=Ia(4)|0;Eq(a);sa(a|0,1344,125)}o=ln(b<<2)|0;c=f[a>>2]|0;f[a>>2]=o;if(c|0)ar(c);f[e>>2]=b;c=0;do{f[(f[a>>2]|0)+(c<<2)>>2]=0;c=c+1|0}while((c|0)!=(b|0));e=a+8|0;h=f[e>>2]|0;if(!h)return;c=f[h+4>>2]|0;n=b+-1|0;o=(n&b|0)==0;if(o)g=c&n;else g=(c>>>0)%(b>>>0)|0;f[(f[a>>2]|0)+(g<<2)>>2]=e;c=f[h>>2]|0;if(!c)return;else{i=h;e=c;c=h}a:while(1){m=c;b:while(1){c:do if(o){c=e;while(1){l=f[c+4>>2]&n;if((l|0)==(g|0))break c;e=(f[a>>2]|0)+(l<<2)|0;if(!(f[e>>2]|0)){g=l;break b}k=c+10|0;e=f[c>>2]|0;d:do if(!e)e=c;else{j=d[c+8>>1]|0;h=c;while(1){if(j<<16>>16!=(d[e+8>>1]|0)){e=h;break d}if((d[k>>1]|0)!=(d[e+10>>1]|0)){e=h;break d}h=f[e>>2]|0;if(!h)break;else{p=e;e=h;h=p}}}while(0);f[m>>2]=f[e>>2];f[e>>2]=f[f[(f[a>>2]|0)+(l<<2)>>2]>>2];f[f[(f[a>>2]|0)+(l<<2)>>2]>>2]=c;c=f[i>>2]|0;if(!c){c=36;break a}}}else{c=e;while(1){l=((f[c+4>>2]|0)>>>0)%(b>>>0)|0;if((l|0)==(g|0))break c;e=(f[a>>2]|0)+(l<<2)|0;if(!(f[e>>2]|0)){g=l;break b}k=c+10|0;e=f[c>>2]|0;e:do if(!e)e=c;else{j=d[c+8>>1]|0;h=c;while(1){if(j<<16>>16!=(d[e+8>>1]|0)){e=h;break e}if((d[k>>1]|0)!=(d[e+10>>1]|0)){e=h;break e}h=f[e>>2]|0;if(!h)break;else{p=e;e=h;h=p}}}while(0);f[m>>2]=f[e>>2];f[e>>2]=f[f[(f[a>>2]|0)+(l<<2)>>2]>>2];f[f[(f[a>>2]|0)+(l<<2)>>2]>>2]=c;c=f[i>>2]|0;if(!c){c=36;break a}}}while(0);e=f[c>>2]|0;if(!e){c=36;break a}else{i=c;m=c}}f[e>>2]=m;e=f[c>>2]|0;if(!e){c=36;break}else i=c}if((c|0)==36)return}function sd(a,c){a=a|0;c=c|0;var d=0,e=0,g=0,i=0,j=0,k=0,l=0,m=0,n=0,o=0;n=b[c+11>>0]|0;m=n<<24>>24<0;o=m?f[c>>2]|0:c;n=m?f[c+4>>2]|0:n&255;if(n>>>0>3){c=o;g=n;d=n;while(1){m=X(h[c>>0]|h[c+1>>0]<<8|h[c+2>>0]<<16|h[c+3>>0]<<24,1540483477)|0;g=(X(m>>>24^m,1540483477)|0)^(X(g,1540483477)|0);d=d+-4|0;if(d>>>0<=3)break;else c=c+4|0}m=n+-4|0;d=m&-4;e=o+(d+4)|0;c=g;d=m-d|0}else{e=o;c=n;d=n}switch(d|0){case 3:{i=h[e+2>>0]<<16^c;l=6;break}case 2:{i=c;l=6;break}case 1:{j=c;l=7;break}default:k=c}if((l|0)==6){j=h[e+1>>0]<<8^i;l=7}if((l|0)==7)k=X(h[e>>0]^j,1540483477)|0;c=X(k>>>13^k,1540483477)|0;c=c>>>15^c;k=f[a+4>>2]|0;if(!k){o=0;return o|0}l=k+-1|0;d=(l&k|0)==0;if(d)m=c&l;else m=(c>>>0)%(k>>>0)|0;c=f[(f[a>>2]|0)+(m<<2)>>2]|0;if(!c){o=0;return o|0}c=f[c>>2]|0;if(!c){o=0;return o|0}a=(n|0)==0;if(d){a:while(1){if((f[c+4>>2]&l|0)!=(m|0)){c=0;l=35;break}d=c+8|0;g=b[d+11>>0]|0;j=g<<24>>24<0;g=g&255;do if(((j?f[c+12>>2]|0:g)|0)==(n|0)){e=f[d>>2]|0;i=j?e:d;if(j){if(a){l=35;break a}if(!(rl(i,o,n)|0)){l=35;break a}else break}if(a){l=35;break a}if((e&255)<<24>>24==(b[o>>0]|0)){e=o;do{g=g+-1|0;d=d+1|0;if(!g){l=35;break a}e=e+1|0}while((b[d>>0]|0)==(b[e>>0]|0))}}while(0);c=f[c>>2]|0;if(!c){c=0;l=35;break}}if((l|0)==35)return c|0}else{b:while(1){if((((f[c+4>>2]|0)>>>0)%(k>>>0)|0|0)!=(m|0)){c=0;l=35;break}d=c+8|0;g=b[d+11>>0]|0;j=g<<24>>24<0;g=g&255;do if(((j?f[c+12>>2]|0:g)|0)==(n|0)){e=f[d>>2]|0;i=j?e:d;if(j){if(a){l=35;break b}if(!(rl(i,o,n)|0)){l=35;break b}else break}if(a){l=35;break b}if((e&255)<<24>>24==(b[o>>0]|0)){e=o;do{g=g+-1|0;d=d+1|0;if(!g){l=35;break b}e=e+1|0}while((b[d>>0]|0)==(b[e>>0]|0))}}while(0);c=f[c>>2]|0;if(!c){c=0;l=35;break}}if((l|0)==35)return c|0}return 0}function td(a,b){a=a|0;b=b|0;var c=0,d=0,e=0,g=0,h=0,i=0,j=0,k=0,l=0,m=0,n=0,o=0;d=a+4|0;if(!b){c=f[a>>2]|0;f[a>>2]=0;if(c|0)ar(c);f[d>>2]=0;return}if(b>>>0>1073741823){a=Ia(4)|0;Eq(a);sa(a|0,1344,125)}n=ln(b<<2)|0;c=f[a>>2]|0;f[a>>2]=n;if(c|0)ar(c);f[d>>2]=b;c=0;do{f[(f[a>>2]|0)+(c<<2)>>2]=0;c=c+1|0}while((c|0)!=(b|0));d=a+8|0;g=f[d>>2]|0;if(!g)return;c=f[g+4>>2]|0;m=b+-1|0;n=(m&b|0)==0;if(n)e=c&m;else e=(c>>>0)%(b>>>0)|0;f[(f[a>>2]|0)+(e<<2)>>2]=d;c=f[g>>2]|0;if(!c)return;else{h=g;d=c;c=g}a:while(1){l=c;b:while(1){c:do if(n){c=d;while(1){k=f[c+4>>2]&m;if((k|0)==(e|0))break c;d=(f[a>>2]|0)+(k<<2)|0;if(!(f[d>>2]|0)){e=k;break b}j=c+12|0;d=f[c>>2]|0;d:do if(!d)d=c;else{i=f[c+8>>2]|0;g=c;while(1){if((i|0)!=(f[d+8>>2]|0)){d=g;break d}if((f[j>>2]|0)!=(f[d+12>>2]|0)){d=g;break d}g=f[d>>2]|0;if(!g)break;else{o=d;d=g;g=o}}}while(0);f[l>>2]=f[d>>2];f[d>>2]=f[f[(f[a>>2]|0)+(k<<2)>>2]>>2];f[f[(f[a>>2]|0)+(k<<2)>>2]>>2]=c;c=f[h>>2]|0;if(!c){c=36;break a}}}else{c=d;while(1){k=((f[c+4>>2]|0)>>>0)%(b>>>0)|0;if((k|0)==(e|0))break c;d=(f[a>>2]|0)+(k<<2)|0;if(!(f[d>>2]|0)){e=k;break b}j=c+12|0;d=f[c>>2]|0;e:do if(!d)d=c;else{i=f[c+8>>2]|0;g=c;while(1){if((i|0)!=(f[d+8>>2]|0)){d=g;break e}if((f[j>>2]|0)!=(f[d+12>>2]|0)){d=g;break e}g=f[d>>2]|0;if(!g)break;else{o=d;d=g;g=o}}}while(0);f[l>>2]=f[d>>2];f[d>>2]=f[f[(f[a>>2]|0)+(k<<2)>>2]>>2];f[f[(f[a>>2]|0)+(k<<2)>>2]>>2]=c;c=f[h>>2]|0;if(!c){c=36;break a}}}while(0);d=f[c>>2]|0;if(!d){c=36;break a}else{h=c;l=c}}f[d>>2]=l;d=f[c>>2]|0;if(!d){c=36;break}else h=c}if((c|0)==36)return}function ud(a,c){a=a|0;c=c|0;var d=0,e=0,g=0,h=0,i=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0;e=a+4|0;if(!c){d=f[a>>2]|0;f[a>>2]=0;if(d|0)ar(d);f[e>>2]=0;return}if(c>>>0>1073741823){a=Ia(4)|0;Eq(a);sa(a|0,1344,125)}o=ln(c<<2)|0;d=f[a>>2]|0;f[a>>2]=o;if(d|0)ar(d);f[e>>2]=c;d=0;do{f[(f[a>>2]|0)+(d<<2)>>2]=0;d=d+1|0}while((d|0)!=(c|0));e=a+8|0;h=f[e>>2]|0;if(!h)return;d=f[h+4>>2]|0;n=c+-1|0;o=(n&c|0)==0;if(o)g=d&n;else g=(d>>>0)%(c>>>0)|0;f[(f[a>>2]|0)+(g<<2)>>2]=e;d=f[h>>2]|0;if(!d)return;else{i=h;e=d;d=h}a:while(1){m=d;b:while(1){c:do if(o){d=e;while(1){l=f[d+4>>2]&n;if((l|0)==(g|0))break c;e=(f[a>>2]|0)+(l<<2)|0;if(!(f[e>>2]|0)){g=l;break b}k=d+9|0;e=f[d>>2]|0;d:do if(!e)e=d;else{j=b[d+8>>0]|0;h=d;while(1){if(j<<24>>24!=(b[e+8>>0]|0)){e=h;break d}if((b[k>>0]|0)!=(b[e+9>>0]|0)){e=h;break d}h=f[e>>2]|0;if(!h)break;else{p=e;e=h;h=p}}}while(0);f[m>>2]=f[e>>2];f[e>>2]=f[f[(f[a>>2]|0)+(l<<2)>>2]>>2];f[f[(f[a>>2]|0)+(l<<2)>>2]>>2]=d;d=f[i>>2]|0;if(!d){d=36;break a}}}else{d=e;while(1){l=((f[d+4>>2]|0)>>>0)%(c>>>0)|0;if((l|0)==(g|0))break c;e=(f[a>>2]|0)+(l<<2)|0;if(!(f[e>>2]|0)){g=l;break b}k=d+9|0;e=f[d>>2]|0;e:do if(!e)e=d;else{j=b[d+8>>0]|0;h=d;while(1){if(j<<24>>24!=(b[e+8>>0]|0)){e=h;break e}if((b[k>>0]|0)!=(b[e+9>>0]|0)){e=h;break e}h=f[e>>2]|0;if(!h)break;else{p=e;e=h;h=p}}}while(0);f[m>>2]=f[e>>2];f[e>>2]=f[f[(f[a>>2]|0)+(l<<2)>>2]>>2];f[f[(f[a>>2]|0)+(l<<2)>>2]>>2]=d;d=f[i>>2]|0;if(!d){d=36;break a}}}while(0);e=f[d>>2]|0;if(!e){d=36;break a}else{i=d;m=d}}f[e>>2]=m;e=f[d>>2]|0;if(!e){d=36;break}else i=d}if((d|0)==36)return}function vd(a,c,d){a=a|0;c=c|0;d=d|0;var e=La,g=0,i=La,j=0,k=0;switch(b[a+24>>0]|0){case 1:{j=f[c>>2]|0;g=a+48|0;c=f[g>>2]|0;g=f[g+4>>2]|0;k=a+40|0;g=(Ho(kn(f[k>>2]|0,f[k+4>>2]|0,j|0,((j|0)<0)<<31>>31|0)|0,I|0,c|0,g|0)|0)+(f[f[a>>2]>>2]|0)|0;i=$((h[g>>0]|h[g+1>>0]<<8)&65535);e=$(i/$(65535.0));n[d>>2]=(b[a+32>>0]|0)==0?i:e;d=d+4|0;f[d>>2]=0;f[d+4>>2]=0;d=1;return d|0}case 2:{j=f[c>>2]|0;k=a+48|0;c=f[k>>2]|0;k=f[k+4>>2]|0;g=a+40|0;k=(Ho(kn(f[g>>2]|0,f[g+4>>2]|0,j|0,((j|0)<0)<<31>>31|0)|0,I|0,c|0,k|0)|0)+(f[f[a>>2]>>2]|0)|0;k=h[k>>0]|h[k+1>>0]<<8|h[k+2>>0]<<16|h[k+3>>0]<<24;c=k>>>16&65535;e=$(k&65535);if(!(b[a+32>>0]|0)){n[d>>2]=e;e=$(c&65535)}else{e=$(e/$(65535.0));n[d>>2]=e;e=$($(c&65535)/$(65535.0))}n[d+4>>2]=e;n[d+8>>2]=$(0.0);k=1;return k|0}case 3:{g=f[c>>2]|0;k=a+48|0;c=f[k>>2]|0;k=f[k+4>>2]|0;j=a+40|0;k=(Ho(kn(f[j>>2]|0,f[j+4>>2]|0,g|0,((g|0)<0)<<31>>31|0)|0,I|0,c|0,k|0)|0)+(f[f[a>>2]>>2]|0)|0;c=k+2|0;c=h[c>>0]|h[c+1>>0]<<8;g=k+4|0;g=h[g>>0]|h[g+1>>0]<<8;e=$((h[k>>0]|h[k+1>>0]<<8)&65535);if(!(b[a+32>>0]|0)){n[d>>2]=e;i=$(c&65535);n[d+4>>2]=i;i=$(g&65535);n[d+8>>2]=i;k=1;return k|0}else{i=$(e/$(65535.0));n[d>>2]=i;i=$($(c&65535)/$(65535.0));n[d+4>>2]=i;i=$($(g&65535)/$(65535.0));n[d+8>>2]=i;k=1;return k|0}}case 4:{k=f[c>>2]|0;g=a+48|0;j=f[g>>2]|0;g=f[g+4>>2]|0;c=a+40|0;g=(Ho(kn(f[c>>2]|0,f[c+4>>2]|0,k|0,((k|0)<0)<<31>>31|0)|0,I|0,j|0,g|0)|0)+(f[f[a>>2]>>2]|0)|0;j=g;j=h[j>>0]|h[j+1>>0]<<8|h[j+2>>0]<<16|h[j+3>>0]<<24;g=g+4|0;g=h[g>>0]|h[g+1>>0]<<8|h[g+2>>0]<<16|h[g+3>>0]<<24;k=(b[a+32>>0]|0)==0;c=(Tn(j|0,g|0,16)|0)&65535;g=g&65535;e=$(j&65535);if(k){n[d>>2]=e;i=$(c&65535);n[d+4>>2]=i;i=$(g&65535);n[d+8>>2]=i;k=1;return k|0}else{i=$(e/$(65535.0));n[d>>2]=i;i=$($(c&65535)/$(65535.0));n[d+4>>2]=i;i=$($(g&65535)/$(65535.0));n[d+8>>2]=i;k=1;return k|0}}default:{k=0;return k|0}}return 0}function wd(a,c,d){a=a|0;c=c|0;d=d|0;var e=0,g=0,i=0;switch(b[a+24>>0]|0){case 1:{g=f[c>>2]|0;c=a+48|0;e=f[c>>2]|0;c=f[c+4>>2]|0;i=a+40|0;c=(Ho(kn(f[i>>2]|0,f[i+4>>2]|0,g|0,((g|0)<0)<<31>>31|0)|0,I|0,e|0,c|0)|0)+(f[f[a>>2]>>2]|0)|0;c=(h[c>>0]|h[c+1>>0]<<8)<<16>>16;a=d;f[a>>2]=c;f[a+4>>2]=((c|0)<0)<<31>>31;a=d+8|0;f[a>>2]=0;f[a+4>>2]=0;f[a+8>>2]=0;f[a+12>>2]=0;f[a+16>>2]=0;f[a+20>>2]=0;a=1;return a|0}case 2:{i=f[c>>2]|0;g=a+48|0;e=f[g>>2]|0;g=f[g+4>>2]|0;c=a+40|0;g=(Ho(kn(f[c>>2]|0,f[c+4>>2]|0,i|0,((i|0)<0)<<31>>31|0)|0,I|0,e|0,g|0)|0)+(f[f[a>>2]>>2]|0)|0;g=h[g>>0]|h[g+1>>0]<<8|h[g+2>>0]<<16|h[g+3>>0]<<24;e=(g&65535)<<16>>16;i=d;f[i>>2]=e;f[i+4>>2]=((e|0)<0)<<31>>31;g=(g>>>16&65535)<<16>>16;i=d+8|0;f[i>>2]=g;f[i+4>>2]=((g|0)<0)<<31>>31;i=d+16|0;f[i>>2]=0;f[i+4>>2]=0;f[i+8>>2]=0;f[i+12>>2]=0;i=1;return i|0}case 3:{i=f[c>>2]|0;e=a+48|0;g=f[e>>2]|0;e=f[e+4>>2]|0;c=a+40|0;a=(Ho(kn(f[c>>2]|0,f[c+4>>2]|0,i|0,((i|0)<0)<<31>>31|0)|0,I|0,g|0,e|0)|0)+(f[f[a>>2]>>2]|0)|0;e=a+2|0;e=h[e>>0]|h[e+1>>0]<<8;g=a+4|0;g=h[g>>0]|h[g+1>>0]<<8;a=(h[a>>0]|h[a+1>>0]<<8)<<16>>16;i=d;f[i>>2]=a;f[i+4>>2]=((a|0)<0)<<31>>31;e=e<<16>>16;i=d+8|0;f[i>>2]=e;f[i+4>>2]=((e|0)<0)<<31>>31;g=g<<16>>16;i=d+16|0;f[i>>2]=g;f[i+4>>2]=((g|0)<0)<<31>>31;i=d+24|0;f[i>>2]=0;f[i+4>>2]=0;i=1;return i|0}case 4:{e=f[c>>2]|0;g=a+48|0;i=f[g>>2]|0;g=f[g+4>>2]|0;c=a+40|0;g=(Ho(kn(f[c>>2]|0,f[c+4>>2]|0,e|0,((e|0)<0)<<31>>31|0)|0,I|0,i|0,g|0)|0)+(f[f[a>>2]>>2]|0)|0;i=g;i=h[i>>0]|h[i+1>>0]<<8|h[i+2>>0]<<16|h[i+3>>0]<<24;g=g+4|0;g=h[g>>0]|h[g+1>>0]<<8|h[g+2>>0]<<16|h[g+3>>0]<<24;a=An(On(i|0,g|0,48)|0,I|0,48)|0;e=d;f[e>>2]=a;f[e+4>>2]=I;e=An(0,i|0,48)|0;a=d+8|0;f[a>>2]=e;f[a+4>>2]=I;a=An(On(i|0,g|0,16)|0,I|0,48)|0;e=d+16|0;f[e>>2]=a;f[e+4>>2]=I;g=An(i|0,g|0,48)|0;i=d+24|0;f[i>>2]=g;f[i+4>>2]=I;i=1;return i|0}default:{i=0;return i|0}}return 0}function xd(a,c,d){a=a|0;c=c|0;d=d|0;var e=0,g=0,h=0,i=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0;p=Sa[f[(f[a>>2]|0)+44>>2]&255](a)|0;if((p|0)<1){c=0;return c|0}o=(f[c+4>>2]|0)-(f[c>>2]|0)>>2;q=X(o,p)|0;sg(a,o,p);o=f[a+16>>2]|0;o=(f[f[o>>2]>>2]|0)+(f[o+48>>2]|0)|0;m=d+8|0;g=m;e=f[g>>2]|0;g=f[g+4>>2]|0;n=d+16|0;l=n;k=f[l>>2]|0;l=f[l+4>>2]|0;if(!((g|0)>(l|0)|(g|0)==(l|0)&e>>>0>k>>>0)){c=0;return c|0}h=f[d>>2]|0;r=b[h+k>>0]|0;i=Ho(k|0,l|0,1,0)|0;j=I;s=n;f[s>>2]=i;f[s+4>>2]=j;do if(!(r<<24>>24)){if(!((g|0)>(j|0)|(g|0)==(j|0)&e>>>0>i>>>0)){s=0;return s|0}e=b[h+i>>0]|0;s=Ho(k|0,l|0,2,0)|0;j=n;f[j>>2]=s;f[j+4>>2]=I;j=e&255;if((j|0)==(cm(5)|0)){g=q<<2;l=m;r=f[l>>2]|0;l=f[l+4>>2]|0;s=n;e=f[s>>2]|0;s=Ho(e|0,f[s+4>>2]|0,g|0,0)|0;m=I;if((l|0)<(m|0)|(l|0)==(m|0)&r>>>0>>0){s=0;return s|0}else{Mg(o|0,(f[d>>2]|0)+e|0,g|0)|0;s=n;s=Ho(f[s>>2]|0,f[s+4>>2]|0,g|0,0)|0;i=n;f[i>>2]=s;f[i+4>>2]=I;i=14;break}}if(!q)i=15;else{h=e&255;g=n;e=f[g>>2]|0;g=f[g+4>>2]|0;i=0;do{k=m;r=f[k>>2]|0;k=f[k+4>>2]|0;s=Ho(e|0,g|0,h|0,0)|0;l=I;if(!((k|0)<(l|0)|(k|0)==(l|0)&r>>>0>>0)){Mg(o+(i<<2)|0,(f[d>>2]|0)+e|0,j|0)|0;e=n;e=Ho(f[e>>2]|0,f[e+4>>2]|0,h|0,0)|0;g=I;s=n;f[s>>2]=e;f[s+4>>2]=g}i=i+1|0}while((i|0)!=(q|0));i=14}}else if(Xi(q,p,d,o)|0)i=14;else{s=0;return s|0}while(0);do if((i|0)==14)if((q|0)>0){g=a+20|0;e=f[g>>2]|0;if(e|0?Sa[f[(f[e>>2]|0)+32>>2]&255](e)|0:0){h=1;break}wm(o,q,o);h=1}else i=15;while(0);if((i|0)==15){g=a+20|0;h=0}e=f[g>>2]|0;if(e|0){if(!(Wa[f[(f[e>>2]|0)+40>>2]&127](e,d)|0)){s=0;return s|0}if(h?(s=f[g>>2]|0,!(Ra[f[(f[s>>2]|0)+44>>2]&63](s,o,o,q,p,f[c>>2]|0)|0)):0){s=0;return s|0}}s=1;return s|0}function yd(a,c,d){a=a|0;c=c|0;d=d|0;var e=La,g=La,i=0,j=0,k=0;switch(b[a+24>>0]|0){case 1:{c=f[c>>2]|0;j=a+48|0;i=f[j>>2]|0;j=f[j+4>>2]|0;k=a+40|0;j=Ho(kn(f[k>>2]|0,f[k+4>>2]|0,c|0,((c|0)<0)<<31>>31|0)|0,I|0,i|0,j|0)|0;e=$(b[(f[f[a>>2]>>2]|0)+j>>0]|0);g=$(e/$(127.0));n[d>>2]=(b[a+32>>0]|0)==0?e:g;d=d+4|0;f[d>>2]=0;f[d+4>>2]=0;f[d+8>>2]=0;d=1;return d|0}case 2:{j=f[c>>2]|0;k=a+48|0;c=f[k>>2]|0;k=f[k+4>>2]|0;i=a+40|0;k=(Ho(kn(f[i>>2]|0,f[i+4>>2]|0,j|0,((j|0)<0)<<31>>31|0)|0,I|0,c|0,k|0)|0)+(f[f[a>>2]>>2]|0)|0;k=h[k>>0]|h[k+1>>0]<<8;c=(k&65535)>>>8&255;e=$((k&255)<<24>>24);if(!(b[a+32>>0]|0)){n[d>>2]=e;e=$(c<<24>>24)}else{e=$(e/$(127.0));n[d>>2]=e;e=$($(c<<24>>24)/$(127.0))}n[d+4>>2]=e;k=d+8|0;f[k>>2]=0;f[k+4>>2]=0;k=1;return k|0}case 3:{i=f[c>>2]|0;k=a+48|0;c=f[k>>2]|0;k=f[k+4>>2]|0;j=a+40|0;k=(Ho(kn(f[j>>2]|0,f[j+4>>2]|0,i|0,((i|0)<0)<<31>>31|0)|0,I|0,c|0,k|0)|0)+(f[f[a>>2]>>2]|0)|0;c=b[k+1>>0]|0;i=b[k+2>>0]|0;e=$(b[k>>0]|0);if(!(b[a+32>>0]|0)){n[d>>2]=e;g=$(c<<24>>24);e=$(i<<24>>24)}else{g=$(e/$(127.0));n[d>>2]=g;g=$($(c<<24>>24)/$(127.0));e=$($(i<<24>>24)/$(127.0))}n[d+4>>2]=g;n[d+8>>2]=e;n[d+12>>2]=$(0.0);k=1;return k|0}case 4:{i=f[c>>2]|0;k=a+48|0;c=f[k>>2]|0;k=f[k+4>>2]|0;j=a+40|0;k=(Ho(kn(f[j>>2]|0,f[j+4>>2]|0,i|0,((i|0)<0)<<31>>31|0)|0,I|0,c|0,k|0)|0)+(f[f[a>>2]>>2]|0)|0;k=h[k>>0]|h[k+1>>0]<<8|h[k+2>>0]<<16|h[k+3>>0]<<24;c=k>>>8&255;i=k>>>16&255;j=k>>>24&255;e=$((k&255)<<24>>24);if(!(b[a+32>>0]|0)){n[d>>2]=e;g=$(c<<24>>24);n[d+4>>2]=g;g=$(i<<24>>24);n[d+8>>2]=g;g=$(j<<24>>24);n[d+12>>2]=g;k=1;return k|0}else{g=$(e/$(127.0));n[d>>2]=g;g=$($(c<<24>>24)/$(127.0));n[d+4>>2]=g;g=$($(i<<24>>24)/$(127.0));n[d+8>>2]=g;g=$($(j<<24>>24)/$(127.0));n[d+12>>2]=g;k=1;return k|0}}default:{k=0;return k|0}}return 0}function zd(a,c,d){a=a|0;c=c|0;d=d|0;var e=0,g=0,i=0;switch(b[a+24>>0]|0){case 1:{g=f[c>>2]|0;c=a+48|0;e=f[c>>2]|0;c=f[c+4>>2]|0;i=a+40|0;c=(Ho(kn(f[i>>2]|0,f[i+4>>2]|0,g|0,((g|0)<0)<<31>>31|0)|0,I|0,e|0,c|0)|0)+(f[f[a>>2]>>2]|0)|0;a=d;f[a>>2]=h[c>>0]|h[c+1>>0]<<8|h[c+2>>0]<<16|h[c+3>>0]<<24;f[a+4>>2]=0;a=d+8|0;f[a>>2]=0;f[a+4>>2]=0;f[a+8>>2]=0;f[a+12>>2]=0;f[a+16>>2]=0;f[a+20>>2]=0;a=1;return a|0}case 2:{i=f[c>>2]|0;g=a+48|0;e=f[g>>2]|0;g=f[g+4>>2]|0;c=a+40|0;g=(Ho(kn(f[c>>2]|0,f[c+4>>2]|0,i|0,((i|0)<0)<<31>>31|0)|0,I|0,e|0,g|0)|0)+(f[f[a>>2]>>2]|0)|0;e=g;g=g+4|0;g=h[g>>0]|h[g+1>>0]<<8|h[g+2>>0]<<16|h[g+3>>0]<<24;i=d;f[i>>2]=h[e>>0]|h[e+1>>0]<<8|h[e+2>>0]<<16|h[e+3>>0]<<24;f[i+4>>2]=0;i=d+8|0;f[i>>2]=g;f[i+4>>2]=0;i=d+16|0;f[i>>2]=0;f[i+4>>2]=0;f[i+8>>2]=0;f[i+12>>2]=0;i=1;return i|0}case 3:{i=f[c>>2]|0;e=a+48|0;g=f[e>>2]|0;e=f[e+4>>2]|0;c=a+40|0;a=(Ho(kn(f[c>>2]|0,f[c+4>>2]|0,i|0,((i|0)<0)<<31>>31|0)|0,I|0,g|0,e|0)|0)+(f[f[a>>2]>>2]|0)|0;e=a+4|0;e=h[e>>0]|h[e+1>>0]<<8|h[e+2>>0]<<16|h[e+3>>0]<<24;g=a+8|0;g=h[g>>0]|h[g+1>>0]<<8|h[g+2>>0]<<16|h[g+3>>0]<<24;i=d;f[i>>2]=h[a>>0]|h[a+1>>0]<<8|h[a+2>>0]<<16|h[a+3>>0]<<24;f[i+4>>2]=0;i=d+8|0;f[i>>2]=e;f[i+4>>2]=0;i=d+16|0;f[i>>2]=g;f[i+4>>2]=0;i=d+24|0;f[i>>2]=0;f[i+4>>2]=0;i=1;return i|0}case 4:{g=f[c>>2]|0;c=a+48|0;e=f[c>>2]|0;c=f[c+4>>2]|0;i=a+40|0;c=(Ho(kn(f[i>>2]|0,f[i+4>>2]|0,g|0,((g|0)<0)<<31>>31|0)|0,I|0,e|0,c|0)|0)+(f[f[a>>2]>>2]|0)|0;a=c+4|0;a=h[a>>0]|h[a+1>>0]<<8|h[a+2>>0]<<16|h[a+3>>0]<<24;e=c+8|0;e=h[e>>0]|h[e+1>>0]<<8|h[e+2>>0]<<16|h[e+3>>0]<<24;g=c+12|0;g=h[g>>0]|h[g+1>>0]<<8|h[g+2>>0]<<16|h[g+3>>0]<<24;i=d;f[i>>2]=h[c>>0]|h[c+1>>0]<<8|h[c+2>>0]<<16|h[c+3>>0]<<24;f[i+4>>2]=0;i=d+8|0;f[i>>2]=a;f[i+4>>2]=0;i=d+16|0;f[i>>2]=e;f[i+4>>2]=0;i=d+24|0;f[i>>2]=g;f[i+4>>2]=0;i=1;return i|0}default:{i=0;return i|0}}return 0}function Ad(a,c,e,g,i){a=a|0;c=c|0;e=e|0;g=g|0;i=i|0;var j=0,k=0,l=0;l=u;u=u+32|0;j=l+12|0;k=l;f[c+40>>2]=e;f[c+32>>2]=g;f[c+4>>2]=i;pc(a,g,j);if(f[a>>2]|0){u=l;return}i=a+4|0;Lo(i);e=h[j+7>>0]|0;if((e|0)!=(Sa[f[(f[c>>2]|0)+8>>2]&255](c)|0)){f[k>>2]=0;f[k+4>>2]=0;f[k+8>>2]=0;Pj(k,6483,50);f[a>>2]=-1;ml(i,k);Lo(k);u=l;return}g=b[j+5>>0]|0;b[c+36>>0]=g;e=b[j+6>>0]|0;b[c+37>>0]=e;if((g+-1&255)>1){f[k>>2]=0;f[k+4>>2]=0;f[k+8>>2]=0;Pj(k,6534,22);f[a>>2]=-5;ml(i,k);Lo(k);u=l;return}if(!(g<<24>>24!=2|e<<24>>24==0)){f[k>>2]=0;f[k+4>>2]=0;f[k+8>>2]=0;Pj(k,6557,22);f[a>>2]=-5;ml(i,k);Lo(k);u=l;return}do if((((g&255)<<8|e&255)&65535)>258?(d[j+10>>1]|0)<0:0){tf(a,c);if(!(f[a>>2]|0)){Lo(i);break}else{u=l;return}}while(0);if(!(Sa[f[(f[c>>2]|0)+12>>2]&255](c)|0)){f[k>>2]=0;f[k+4>>2]=0;f[k+8>>2]=0;Pj(k,6580,33);f[a>>2]=-1;ml(i,k);Lo(k);u=l;return}if(!(Sa[f[(f[c>>2]|0)+20>>2]&255](c)|0)){f[k>>2]=0;f[k+4>>2]=0;f[k+8>>2]=0;Pj(k,6614,31);f[a>>2]=-1;ml(i,k);Lo(k);u=l;return}if(Sa[f[(f[c>>2]|0)+24>>2]&255](c)|0){f[a>>2]=0;f[a+4>>2]=0;f[a+8>>2]=0;f[a+12>>2]=0;u=l;return}else{f[k>>2]=0;f[k+4>>2]=0;f[k+8>>2]=0;Pj(k,6646,34);f[a>>2]=-1;ml(i,k);Lo(k);u=l;return}}function Bd(a,c,d){a=a|0;c=c|0;d=d|0;var e=La,g=La,i=0,j=0,k=0;switch(b[a+24>>0]|0){case 1:{j=f[c>>2]|0;c=a+48|0;i=f[c>>2]|0;c=f[c+4>>2]|0;k=a+40|0;c=(Ho(kn(f[k>>2]|0,f[k+4>>2]|0,j|0,((j|0)<0)<<31>>31|0)|0,I|0,i|0,c|0)|0)+(f[f[a>>2]>>2]|0)|0;g=$((h[c>>0]|h[c+1>>0]<<8|h[c+2>>0]<<16|h[c+3>>0]<<24)>>>0);e=$(g*$(2.32830644e-10));n[d>>2]=(b[a+32>>0]|0)==0?g:e;n[d+4>>2]=$(0.0);a=1;return a|0}case 2:{j=f[c>>2]|0;c=a+48|0;k=f[c>>2]|0;c=f[c+4>>2]|0;i=a+40|0;c=(Ho(kn(f[i>>2]|0,f[i+4>>2]|0,j|0,((j|0)<0)<<31>>31|0)|0,I|0,k|0,c|0)|0)+(f[f[a>>2]>>2]|0)|0;k=c;c=c+4|0;c=h[c>>0]|h[c+1>>0]<<8|h[c+2>>0]<<16|h[c+3>>0]<<24;e=$((h[k>>0]|h[k+1>>0]<<8|h[k+2>>0]<<16|h[k+3>>0]<<24)>>>0);if(!(b[a+32>>0]|0)){n[d>>2]=e;g=$(c>>>0);n[d+4>>2]=g;k=1;return k|0}else{g=$(e*$(2.32830644e-10));n[d>>2]=g;g=$($(c>>>0)*$(2.32830644e-10));n[d+4>>2]=g;k=1;return k|0}}case 3:{j=f[c>>2]|0;k=a+48|0;c=f[k>>2]|0;k=f[k+4>>2]|0;i=a+40|0;k=(Ho(kn(f[i>>2]|0,f[i+4>>2]|0,j|0,((j|0)<0)<<31>>31|0)|0,I|0,c|0,k|0)|0)+(f[f[a>>2]>>2]|0)|0;c=k+4|0;c=h[c>>0]|h[c+1>>0]<<8|h[c+2>>0]<<16|h[c+3>>0]<<24;e=$((h[k>>0]|h[k+1>>0]<<8|h[k+2>>0]<<16|h[k+3>>0]<<24)>>>0);if(!(b[a+32>>0]|0)){n[d>>2]=e;g=$(c>>>0);n[d+4>>2]=g;k=1;return k|0}else{g=$(e*$(2.32830644e-10));n[d>>2]=g;g=$($(c>>>0)*$(2.32830644e-10));n[d+4>>2]=g;k=1;return k|0}}case 4:{j=f[c>>2]|0;k=a+48|0;c=f[k>>2]|0;k=f[k+4>>2]|0;i=a+40|0;k=(Ho(kn(f[i>>2]|0,f[i+4>>2]|0,j|0,((j|0)<0)<<31>>31|0)|0,I|0,c|0,k|0)|0)+(f[f[a>>2]>>2]|0)|0;c=k+4|0;c=h[c>>0]|h[c+1>>0]<<8|h[c+2>>0]<<16|h[c+3>>0]<<24;e=$((h[k>>0]|h[k+1>>0]<<8|h[k+2>>0]<<16|h[k+3>>0]<<24)>>>0);if(!(b[a+32>>0]|0)){n[d>>2]=e;g=$(c>>>0);n[d+4>>2]=g;k=1;return k|0}else{g=$(e*$(2.32830644e-10));n[d>>2]=g;g=$($(c>>>0)*$(2.32830644e-10));n[d+4>>2]=g;k=1;return k|0}}default:{k=0;return k|0}}return 0}function Cd(a,c,d){a=a|0;c=c|0;d=d|0;var e=0,g=0,i=0;switch(b[a+24>>0]|0){case 1:{g=f[c>>2]|0;c=a+48|0;e=f[c>>2]|0;c=f[c+4>>2]|0;i=a+40|0;c=(Ho(kn(f[i>>2]|0,f[i+4>>2]|0,g|0,((g|0)<0)<<31>>31|0)|0,I|0,e|0,c|0)|0)+(f[f[a>>2]>>2]|0)|0;c=h[c>>0]|h[c+1>>0]<<8|h[c+2>>0]<<16|h[c+3>>0]<<24;a=d;f[a>>2]=c;f[a+4>>2]=((c|0)<0)<<31>>31;a=d+8|0;f[a>>2]=0;f[a+4>>2]=0;f[a+8>>2]=0;f[a+12>>2]=0;a=1;return a|0}case 2:{e=f[c>>2]|0;g=a+48|0;i=f[g>>2]|0;g=f[g+4>>2]|0;c=a+40|0;g=(Ho(kn(f[c>>2]|0,f[c+4>>2]|0,e|0,((e|0)<0)<<31>>31|0)|0,I|0,i|0,g|0)|0)+(f[f[a>>2]>>2]|0)|0;i=g;i=h[i>>0]|h[i+1>>0]<<8|h[i+2>>0]<<16|h[i+3>>0]<<24;g=g+4|0;g=h[g>>0]|h[g+1>>0]<<8|h[g+2>>0]<<16|h[g+3>>0]<<24;a=An(0,i|0,32)|0;e=d;f[e>>2]=a;f[e+4>>2]=I;g=An(i|0,g|0,32)|0;i=d+8|0;f[i>>2]=g;f[i+4>>2]=I;i=d+16|0;f[i>>2]=0;f[i+4>>2]=0;i=1;return i|0}case 3:{i=f[c>>2]|0;g=a+48|0;e=f[g>>2]|0;g=f[g+4>>2]|0;c=a+40|0;g=(Ho(kn(f[c>>2]|0,f[c+4>>2]|0,i|0,((i|0)<0)<<31>>31|0)|0,I|0,e|0,g|0)|0)+(f[f[a>>2]>>2]|0)|0;a=h[g>>0]|h[g+1>>0]<<8|h[g+2>>0]<<16|h[g+3>>0]<<24;e=g+4|0;e=h[e>>0]|h[e+1>>0]<<8|h[e+2>>0]<<16|h[e+3>>0]<<24;g=g+8|0;g=h[g>>0]|h[g+1>>0]<<8|h[g+2>>0]<<16|h[g+3>>0]<<24;i=d;f[i>>2]=a;f[i+4>>2]=((a|0)<0)<<31>>31;i=d+8|0;f[i>>2]=e;f[i+4>>2]=((e|0)<0)<<31>>31;i=d+16|0;f[i>>2]=g;f[i+4>>2]=((g|0)<0)<<31>>31;i=1;return i|0}case 4:{i=f[c>>2]|0;g=a+48|0;e=f[g>>2]|0;g=f[g+4>>2]|0;c=a+40|0;g=(Ho(kn(f[c>>2]|0,f[c+4>>2]|0,i|0,((i|0)<0)<<31>>31|0)|0,I|0,e|0,g|0)|0)+(f[f[a>>2]>>2]|0)|0;a=h[g>>0]|h[g+1>>0]<<8|h[g+2>>0]<<16|h[g+3>>0]<<24;e=g+4|0;e=h[e>>0]|h[e+1>>0]<<8|h[e+2>>0]<<16|h[e+3>>0]<<24;g=g+8|0;g=h[g>>0]|h[g+1>>0]<<8|h[g+2>>0]<<16|h[g+3>>0]<<24;i=d;f[i>>2]=a;f[i+4>>2]=((a|0)<0)<<31>>31;i=d+8|0;f[i>>2]=e;f[i+4>>2]=((e|0)<0)<<31>>31;i=d+16|0;f[i>>2]=g;f[i+4>>2]=((g|0)<0)<<31>>31;i=1;return i|0}default:{i=0;return i|0}}return 0}function Dd(a,c,d){a=a|0;c=c|0;d=d|0;var e=0,g=0,h=0,i=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0;t=u;u=u+176|0;h=t+136|0;s=t+64|0;o=t;j=t+32|0;i=f[(f[c+4>>2]|0)+44>>2]|0;n=ln(88)|0;f[n+4>>2]=0;f[n>>2]=4728;k=n+12|0;f[k>>2]=4708;m=n+64|0;f[m>>2]=0;f[n+68>>2]=0;f[n+72>>2]=0;e=n+16|0;g=e+44|0;do{f[e>>2]=0;e=e+4|0}while((e|0)<(g|0));f[n+76>>2]=i;f[n+80>>2]=d;f[n+84>>2]=0;l=n;q=s+4|0;f[q>>2]=4708;p=s+56|0;f[p>>2]=0;r=s+60|0;f[r>>2]=0;f[s+64>>2]=0;e=s+8|0;g=e+44|0;do{f[e>>2]=0;e=e+4|0}while((e|0)<(g|0));e=f[c+8>>2]|0;f[o>>2]=4708;c=o+4|0;g=c+4|0;f[g>>2]=0;f[g+4>>2]=0;f[g+8>>2]=0;f[g+12>>2]=0;f[g+16>>2]=0;f[g+20>>2]=0;g=e;f[c>>2]=g;g=((f[g+4>>2]|0)-(f[e>>2]|0)>>2>>>0)/3|0;b[h>>0]=0;Yg(o+8|0,g,h);Pa[f[(f[o>>2]|0)+8>>2]&127](o);Lf(j,o);Lf(h,j);f[s>>2]=f[h+4>>2];g=s+4|0;mg(g,h)|0;f[h>>2]=4708;c=f[h+20>>2]|0;if(c|0)ar(c);c=f[h+8>>2]|0;if(c|0)ar(c);f[s+36>>2]=e;f[s+40>>2]=d;f[s+44>>2]=i;f[s+48>>2]=n;f[j>>2]=4708;c=f[j+20>>2]|0;if(c|0)ar(c);c=f[j+8>>2]|0;if(c|0)ar(c);f[n+8>>2]=f[s>>2];mg(k,g)|0;c=n+44|0;n=s+36|0;f[c>>2]=f[n>>2];f[c+4>>2]=f[n+4>>2];f[c+8>>2]=f[n+8>>2];f[c+12>>2]=f[n+12>>2];b[c+16>>0]=b[n+16>>0]|0;Mf(m,f[p>>2]|0,f[r>>2]|0);f[a>>2]=l;f[o>>2]=4708;c=f[o+20>>2]|0;if(c|0)ar(c);c=f[o+8>>2]|0;if(c|0)ar(c);c=f[p>>2]|0;if(c|0){e=f[r>>2]|0;if((e|0)!=(c|0))f[r>>2]=e+(~((e+-4-c|0)>>>2)<<2);ar(c)}f[q>>2]=4708;c=f[s+24>>2]|0;if(c|0)ar(c);c=f[s+12>>2]|0;if(!c){u=t;return}ar(c);u=t;return}function Ed(a,c,d){a=a|0;c=c|0;d=d|0;var e=La,g=La,i=0,j=0,k=0;switch(b[a+24>>0]|0){case 1:{c=f[c>>2]|0;j=a+48|0;i=f[j>>2]|0;j=f[j+4>>2]|0;k=a+40|0;j=Ho(kn(f[k>>2]|0,f[k+4>>2]|0,c|0,((c|0)<0)<<31>>31|0)|0,I|0,i|0,j|0)|0;e=$(h[(f[f[a>>2]>>2]|0)+j>>0]|0);g=$(e/$(255.0));n[d>>2]=(b[a+32>>0]|0)==0?e:g;d=d+4|0;f[d>>2]=0;f[d+4>>2]=0;f[d+8>>2]=0;d=1;return d|0}case 2:{j=f[c>>2]|0;k=a+48|0;c=f[k>>2]|0;k=f[k+4>>2]|0;i=a+40|0;k=(Ho(kn(f[i>>2]|0,f[i+4>>2]|0,j|0,((j|0)<0)<<31>>31|0)|0,I|0,c|0,k|0)|0)+(f[f[a>>2]>>2]|0)|0;k=h[k>>0]|h[k+1>>0]<<8;c=(k&65535)>>>8&255;e=$(k&255);if(!(b[a+32>>0]|0)){n[d>>2]=e;e=$(c&255)}else{e=$(e/$(255.0));n[d>>2]=e;e=$($(c&255)/$(255.0))}n[d+4>>2]=e;k=d+8|0;f[k>>2]=0;f[k+4>>2]=0;k=1;return k|0}case 3:{i=f[c>>2]|0;k=a+48|0;c=f[k>>2]|0;k=f[k+4>>2]|0;j=a+40|0;k=(Ho(kn(f[j>>2]|0,f[j+4>>2]|0,i|0,((i|0)<0)<<31>>31|0)|0,I|0,c|0,k|0)|0)+(f[f[a>>2]>>2]|0)|0;c=b[k+1>>0]|0;i=b[k+2>>0]|0;e=$(h[k>>0]|0);if(!(b[a+32>>0]|0)){n[d>>2]=e;g=$(c&255);e=$(i&255)}else{g=$(e/$(255.0));n[d>>2]=g;g=$($(c&255)/$(255.0));e=$($(i&255)/$(255.0))}n[d+4>>2]=g;n[d+8>>2]=e;n[d+12>>2]=$(0.0);k=1;return k|0}case 4:{i=f[c>>2]|0;k=a+48|0;c=f[k>>2]|0;k=f[k+4>>2]|0;j=a+40|0;k=(Ho(kn(f[j>>2]|0,f[j+4>>2]|0,i|0,((i|0)<0)<<31>>31|0)|0,I|0,c|0,k|0)|0)+(f[f[a>>2]>>2]|0)|0;k=h[k>>0]|h[k+1>>0]<<8|h[k+2>>0]<<16|h[k+3>>0]<<24;c=k>>>8&255;i=k>>>16&255;j=k>>>24&255;e=$(k&255);if(!(b[a+32>>0]|0)){n[d>>2]=e;g=$(c&255);n[d+4>>2]=g;g=$(i&255);n[d+8>>2]=g;g=$(j&255);n[d+12>>2]=g;k=1;return k|0}else{g=$(e/$(255.0));n[d>>2]=g;g=$($(c&255)/$(255.0));n[d+4>>2]=g;g=$($(i&255)/$(255.0));n[d+8>>2]=g;g=$($(j&255)/$(255.0));n[d+12>>2]=g;k=1;return k|0}}default:{k=0;return k|0}}return 0}function Fd(a,c,d){a=a|0;c=c|0;d=d|0;var e=La,g=La,i=0,j=0,k=0;switch(b[a+24>>0]|0){case 1:{j=f[c>>2]|0;c=a+48|0;i=f[c>>2]|0;c=f[c+4>>2]|0;k=a+40|0;c=(Ho(kn(f[k>>2]|0,f[k+4>>2]|0,j|0,((j|0)<0)<<31>>31|0)|0,I|0,i|0,c|0)|0)+(f[f[a>>2]>>2]|0)|0;g=$(h[c>>0]|h[c+1>>0]<<8|h[c+2>>0]<<16|h[c+3>>0]<<24|0);e=$(g*$(4.65661287e-10));n[d>>2]=(b[a+32>>0]|0)==0?g:e;n[d+4>>2]=$(0.0);a=1;return a|0}case 2:{j=f[c>>2]|0;c=a+48|0;k=f[c>>2]|0;c=f[c+4>>2]|0;i=a+40|0;c=(Ho(kn(f[i>>2]|0,f[i+4>>2]|0,j|0,((j|0)<0)<<31>>31|0)|0,I|0,k|0,c|0)|0)+(f[f[a>>2]>>2]|0)|0;k=c;c=c+4|0;c=h[c>>0]|h[c+1>>0]<<8|h[c+2>>0]<<16|h[c+3>>0]<<24;e=$(h[k>>0]|h[k+1>>0]<<8|h[k+2>>0]<<16|h[k+3>>0]<<24|0);if(!(b[a+32>>0]|0)){n[d>>2]=e;g=$(c|0);n[d+4>>2]=g;k=1;return k|0}else{g=$(e*$(4.65661287e-10));n[d>>2]=g;g=$($(c|0)*$(4.65661287e-10));n[d+4>>2]=g;k=1;return k|0}}case 3:{j=f[c>>2]|0;k=a+48|0;c=f[k>>2]|0;k=f[k+4>>2]|0;i=a+40|0;k=(Ho(kn(f[i>>2]|0,f[i+4>>2]|0,j|0,((j|0)<0)<<31>>31|0)|0,I|0,c|0,k|0)|0)+(f[f[a>>2]>>2]|0)|0;c=k+4|0;c=h[c>>0]|h[c+1>>0]<<8|h[c+2>>0]<<16|h[c+3>>0]<<24;e=$(h[k>>0]|h[k+1>>0]<<8|h[k+2>>0]<<16|h[k+3>>0]<<24|0);if(!(b[a+32>>0]|0)){n[d>>2]=e;g=$(c|0);n[d+4>>2]=g;k=1;return k|0}else{g=$(e*$(4.65661287e-10));n[d>>2]=g;g=$($(c|0)*$(4.65661287e-10));n[d+4>>2]=g;k=1;return k|0}}case 4:{j=f[c>>2]|0;k=a+48|0;c=f[k>>2]|0;k=f[k+4>>2]|0;i=a+40|0;k=(Ho(kn(f[i>>2]|0,f[i+4>>2]|0,j|0,((j|0)<0)<<31>>31|0)|0,I|0,c|0,k|0)|0)+(f[f[a>>2]>>2]|0)|0;c=k+4|0;c=h[c>>0]|h[c+1>>0]<<8|h[c+2>>0]<<16|h[c+3>>0]<<24;e=$(h[k>>0]|h[k+1>>0]<<8|h[k+2>>0]<<16|h[k+3>>0]<<24|0);if(!(b[a+32>>0]|0)){n[d>>2]=e;g=$(c|0);n[d+4>>2]=g;k=1;return k|0}else{g=$(e*$(4.65661287e-10));n[d>>2]=g;g=$($(c|0)*$(4.65661287e-10));n[d+4>>2]=g;k=1;return k|0}}default:{k=0;return k|0}}return 0}function Gd(a,c){a=a|0;c=c|0;var d=0,e=0,g=0,h=0,i=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0,v=0;e=a+4|0;if(!c){d=f[a>>2]|0;f[a>>2]=0;if(d|0)ar(d);f[e>>2]=0;return}if(c>>>0>1073741823){a=Ia(4)|0;Eq(a);sa(a|0,1344,125)}v=ln(c<<2)|0;d=f[a>>2]|0;f[a>>2]=v;if(d|0)ar(d);f[e>>2]=c;d=0;do{f[(f[a>>2]|0)+(d<<2)>>2]=0;d=d+1|0}while((d|0)!=(c|0));e=a+8|0;h=f[e>>2]|0;if(!h)return;d=f[h+4>>2]|0;u=c+-1|0;v=(u&c|0)==0;if(v)g=d&u;else g=(d>>>0)%(c>>>0)|0;f[(f[a>>2]|0)+(g<<2)>>2]=e;d=f[h>>2]|0;if(!d)return;t=a+24|0;i=h;e=d;d=h;a:while(1){s=d;b:while(1){d=e;while(1){e=f[d+4>>2]|0;if(v)r=e&u;else r=(e>>>0)%(c>>>0)|0;if((r|0)==(g|0))break;e=(f[a>>2]|0)+(r<<2)|0;if(!(f[e>>2]|0))break b;e=f[d>>2]|0;c:do if(!e)e=d;else{p=f[d+8>>2]|0;n=f[t>>2]|0;o=f[n+8>>2]|0;n=(f[n+12>>2]|0)-o|0;q=n>>>2;if((n|0)>0)l=d;else while(1){h=f[e>>2]|0;if(!h)break c;else e=h}while(1){m=f[e+8>>2]|0;n=0;do{h=f[o+(n<<2)>>2]|0;j=(b[h+84>>0]|0)==0;if(j)k=f[(f[h+68>>2]|0)+(p<<2)>>2]|0;else k=p;if((q|0)<=(n|0)){d=35;break a}if(j)h=f[(f[h+68>>2]|0)+(m<<2)>>2]|0;else h=m;n=n+1|0;if((k|0)!=(h|0)){e=l;break c}}while((n|0)<(q|0));h=f[e>>2]|0;if(!h)break;else{l=e;e=h}}}while(0);f[s>>2]=f[e>>2];f[e>>2]=f[f[(f[a>>2]|0)+(r<<2)>>2]>>2];f[f[(f[a>>2]|0)+(r<<2)>>2]>>2]=d;d=f[i>>2]|0;if(!d){d=40;break a}}e=f[d>>2]|0;if(!e){d=40;break a}else{i=d;s=d}}f[e>>2]=s;e=f[d>>2]|0;if(!e){d=40;break}else{i=d;g=r}}if((d|0)==35)Ga(17252,17204,72,17242);else if((d|0)==40)return}function Hd(a,c,d){a=a|0;c=c|0;d=d|0;var e=La,g=0,i=La,j=0,k=0;switch(b[a+24>>0]|0){case 1:{j=f[c>>2]|0;g=a+48|0;c=f[g>>2]|0;g=f[g+4>>2]|0;k=a+40|0;g=Ho(kn(f[k>>2]|0,f[k+4>>2]|0,j|0,((j|0)<0)<<31>>31|0)|0,I|0,c|0,g|0)|0;i=$(b[(f[f[a>>2]>>2]|0)+g>>0]|0);e=$(i/$(127.0));n[d>>2]=(b[a+32>>0]|0)==0?i:e;d=d+4|0;f[d>>2]=0;f[d+4>>2]=0;d=1;return d|0}case 2:{j=f[c>>2]|0;k=a+48|0;c=f[k>>2]|0;k=f[k+4>>2]|0;g=a+40|0;k=(Ho(kn(f[g>>2]|0,f[g+4>>2]|0,j|0,((j|0)<0)<<31>>31|0)|0,I|0,c|0,k|0)|0)+(f[f[a>>2]>>2]|0)|0;k=h[k>>0]|h[k+1>>0]<<8;c=(k&65535)>>>8&255;e=$((k&255)<<24>>24);if(!(b[a+32>>0]|0)){n[d>>2]=e;e=$(c<<24>>24)}else{e=$(e/$(127.0));n[d>>2]=e;e=$($(c<<24>>24)/$(127.0))}n[d+4>>2]=e;n[d+8>>2]=$(0.0);k=1;return k|0}case 3:{g=f[c>>2]|0;k=a+48|0;c=f[k>>2]|0;k=f[k+4>>2]|0;j=a+40|0;k=(Ho(kn(f[j>>2]|0,f[j+4>>2]|0,g|0,((g|0)<0)<<31>>31|0)|0,I|0,c|0,k|0)|0)+(f[f[a>>2]>>2]|0)|0;c=b[k+1>>0]|0;g=b[k+2>>0]|0;e=$(b[k>>0]|0);if(!(b[a+32>>0]|0)){n[d>>2]=e;i=$(c<<24>>24);n[d+4>>2]=i;i=$(g<<24>>24);n[d+8>>2]=i;k=1;return k|0}else{i=$(e/$(127.0));n[d>>2]=i;i=$($(c<<24>>24)/$(127.0));n[d+4>>2]=i;i=$($(g<<24>>24)/$(127.0));n[d+8>>2]=i;k=1;return k|0}}case 4:{g=f[c>>2]|0;k=a+48|0;c=f[k>>2]|0;k=f[k+4>>2]|0;j=a+40|0;k=(Ho(kn(f[j>>2]|0,f[j+4>>2]|0,g|0,((g|0)<0)<<31>>31|0)|0,I|0,c|0,k|0)|0)+(f[f[a>>2]>>2]|0)|0;k=h[k>>0]|h[k+1>>0]<<8|h[k+2>>0]<<16|h[k+3>>0]<<24;c=k>>>8&255;g=k>>>16&255;e=$((k&255)<<24>>24);if(!(b[a+32>>0]|0)){n[d>>2]=e;i=$(c<<24>>24);n[d+4>>2]=i;i=$(g<<24>>24);n[d+8>>2]=i;k=1;return k|0}else{i=$(e/$(127.0));n[d>>2]=i;i=$($(c<<24>>24)/$(127.0));n[d+4>>2]=i;i=$($(g<<24>>24)/$(127.0));n[d+8>>2]=i;k=1;return k|0}}default:{k=0;return k|0}}return 0}function Id(a,c,d){a=a|0;c=c|0;d=d|0;var e=La,g=La,i=0,j=0,k=0;switch(b[a+24>>0]|0){case 1:{j=f[c>>2]|0;c=a+48|0;i=f[c>>2]|0;c=f[c+4>>2]|0;k=a+40|0;c=(Ho(kn(f[k>>2]|0,f[k+4>>2]|0,j|0,((j|0)<0)<<31>>31|0)|0,I|0,i|0,c|0)|0)+(f[f[a>>2]>>2]|0)|0;g=$((h[c>>0]|h[c+1>>0]<<8)<<16>>16);e=$(g/$(32767.0));n[d>>2]=(b[a+32>>0]|0)==0?g:e;n[d+4>>2]=$(0.0);d=1;return d|0}case 2:{j=f[c>>2]|0;k=a+48|0;c=f[k>>2]|0;k=f[k+4>>2]|0;i=a+40|0;k=(Ho(kn(f[i>>2]|0,f[i+4>>2]|0,j|0,((j|0)<0)<<31>>31|0)|0,I|0,c|0,k|0)|0)+(f[f[a>>2]>>2]|0)|0;k=h[k>>0]|h[k+1>>0]<<8|h[k+2>>0]<<16|h[k+3>>0]<<24;c=k>>>16&65535;e=$((k&65535)<<16>>16);if(!(b[a+32>>0]|0)){n[d>>2]=e;g=$(c<<16>>16);n[d+4>>2]=g;k=1;return k|0}else{g=$(e/$(32767.0));n[d>>2]=g;g=$($(c<<16>>16)/$(32767.0));n[d+4>>2]=g;k=1;return k|0}}case 3:{j=f[c>>2]|0;k=a+48|0;c=f[k>>2]|0;k=f[k+4>>2]|0;i=a+40|0;k=(Ho(kn(f[i>>2]|0,f[i+4>>2]|0,j|0,((j|0)<0)<<31>>31|0)|0,I|0,c|0,k|0)|0)+(f[f[a>>2]>>2]|0)|0;c=k+2|0;c=h[c>>0]|h[c+1>>0]<<8;e=$((h[k>>0]|h[k+1>>0]<<8)<<16>>16);if(!(b[a+32>>0]|0)){n[d>>2]=e;g=$(c<<16>>16);n[d+4>>2]=g;k=1;return k|0}else{g=$(e/$(32767.0));n[d>>2]=g;g=$($(c<<16>>16)/$(32767.0));n[d+4>>2]=g;k=1;return k|0}}case 4:{k=f[c>>2]|0;c=a+48|0;j=f[c>>2]|0;c=f[c+4>>2]|0;i=a+40|0;c=(Ho(kn(f[i>>2]|0,f[i+4>>2]|0,k|0,((k|0)<0)<<31>>31|0)|0,I|0,j|0,c|0)|0)+(f[f[a>>2]>>2]|0)|0;j=c;j=h[j>>0]|h[j+1>>0]<<8|h[j+2>>0]<<16|h[j+3>>0]<<24;c=c+4|0;k=(b[a+32>>0]|0)==0;c=(Tn(j|0,h[c>>0]|h[c+1>>0]<<8|h[c+2>>0]<<16|h[c+3>>0]<<24|0,16)|0)&65535;e=$((j&65535)<<16>>16);if(k){n[d>>2]=e;g=$(c<<16>>16);n[d+4>>2]=g;k=1;return k|0}else{g=$(e/$(32767.0));n[d>>2]=g;g=$($(c<<16>>16)/$(32767.0));n[d+4>>2]=g;k=1;return k|0}}default:{k=0;return k|0}}return 0}function Jd(a,b,c){a=a|0;b=b|0;c=c|0;var d=0,e=0,g=0,h=0,i=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,v=0,w=0,x=0,y=0,z=0,A=0,B=0,C=0;B=u;u=u+16|0;z=B+8|0;x=B;y=B+4|0;if(!(pj(a,b)|0)){a=0;u=B;return a|0}A=b+84|0;n=b+88|0;d=f[n>>2]|0;b=f[A>>2]|0;if((d-b|0)<=0){a=1;u=B;return a|0}m=a+56|0;t=a+8|0;q=a+12|0;r=a+20|0;o=a+24|0;s=a+32|0;p=a+36|0;v=a+68|0;w=a+76|0;l=f[c>>2]|0;h=l+4|0;j=l+8|0;i=a+4|0;k=a+72|0;g=l;e=0;do{if(!(f[(f[m>>2]|0)+(e>>>5<<2)>>2]&1<<(e&31))){C=e*3|0;f[x>>2]=C;f[z>>2]=f[x>>2];kd(a,0,z);d=(f[q>>2]|0)-(f[t>>2]|0)>>2;f[x>>2]=C+1;f[z>>2]=f[x>>2];kd(a,1,z);b=(f[o>>2]|0)-(f[r>>2]|0)>>2;c=b>>>0>d>>>0;f[x>>2]=C+2;f[z>>2]=f[x>>2];kd(a,2,z);d=(f[p>>2]|0)-(f[s>>2]|0)>>2>>>0>(c?b:d)>>>0?2:c?1:((d|0)==0)<<31>>31;if((f[v>>2]|0)>0){b=f[w>>2]|0;f[z>>2]=b;c=f[h>>2]|0;if(c>>>0<(f[j>>2]|0)>>>0){f[c>>2]=b;f[h>>2]=c+4}else Ii(l,z);f[x>>2]=f[a+44+(d<<2)>>2];b=f[i>>2]|0;c=f[a>>2]|0;f[z>>2]=f[x>>2];c=wk(z,b,c)|0;f[z>>2]=c;b=f[h>>2]|0;if(b>>>0<(f[j>>2]|0)>>>0){f[b>>2]=c;f[h>>2]=b+4}else Ii(l,z);C=(f[k>>2]|0)+2|0;f[k>>2]=C;if(C&1|0){f[z>>2]=c;b=f[h>>2]|0;if(b>>>0<(f[j>>2]|0)>>>0){f[b>>2]=c;f[h>>2]=b+4}else Ii(l,z);f[k>>2]=(f[k>>2]|0)+1}}f[y>>2]=g;f[z>>2]=f[y>>2];pd(a,d,z);b=f[A>>2]|0;d=f[n>>2]|0}e=e+1|0}while((e|0)<((d-b|0)/12|0|0));b=1;u=B;return b|0}function Kd(a,c,d){a=a|0;c=c|0;d=d|0;var e=La,g=0,i=La,j=0,k=0;switch(b[a+24>>0]|0){case 1:{j=f[c>>2]|0;g=a+48|0;c=f[g>>2]|0;g=f[g+4>>2]|0;k=a+40|0;g=Ho(kn(f[k>>2]|0,f[k+4>>2]|0,j|0,((j|0)<0)<<31>>31|0)|0,I|0,c|0,g|0)|0;i=$(h[(f[f[a>>2]>>2]|0)+g>>0]|0);e=$(i/$(255.0));n[d>>2]=(b[a+32>>0]|0)==0?i:e;d=d+4|0;f[d>>2]=0;f[d+4>>2]=0;d=1;return d|0}case 2:{j=f[c>>2]|0;k=a+48|0;c=f[k>>2]|0;k=f[k+4>>2]|0;g=a+40|0;k=(Ho(kn(f[g>>2]|0,f[g+4>>2]|0,j|0,((j|0)<0)<<31>>31|0)|0,I|0,c|0,k|0)|0)+(f[f[a>>2]>>2]|0)|0;k=h[k>>0]|h[k+1>>0]<<8;c=(k&65535)>>>8&255;e=$(k&255);if(!(b[a+32>>0]|0)){n[d>>2]=e;e=$(c&255)}else{e=$(e/$(255.0));n[d>>2]=e;e=$($(c&255)/$(255.0))}n[d+4>>2]=e;n[d+8>>2]=$(0.0);k=1;return k|0}case 3:{g=f[c>>2]|0;k=a+48|0;c=f[k>>2]|0;k=f[k+4>>2]|0;j=a+40|0;k=(Ho(kn(f[j>>2]|0,f[j+4>>2]|0,g|0,((g|0)<0)<<31>>31|0)|0,I|0,c|0,k|0)|0)+(f[f[a>>2]>>2]|0)|0;c=b[k+1>>0]|0;g=b[k+2>>0]|0;e=$(h[k>>0]|0);if(!(b[a+32>>0]|0)){n[d>>2]=e;i=$(c&255);n[d+4>>2]=i;i=$(g&255);n[d+8>>2]=i;k=1;return k|0}else{i=$(e/$(255.0));n[d>>2]=i;i=$($(c&255)/$(255.0));n[d+4>>2]=i;i=$($(g&255)/$(255.0));n[d+8>>2]=i;k=1;return k|0}}case 4:{g=f[c>>2]|0;k=a+48|0;c=f[k>>2]|0;k=f[k+4>>2]|0;j=a+40|0;k=(Ho(kn(f[j>>2]|0,f[j+4>>2]|0,g|0,((g|0)<0)<<31>>31|0)|0,I|0,c|0,k|0)|0)+(f[f[a>>2]>>2]|0)|0;k=h[k>>0]|h[k+1>>0]<<8|h[k+2>>0]<<16|h[k+3>>0]<<24;c=k>>>8&255;g=k>>>16&255;e=$(k&255);if(!(b[a+32>>0]|0)){n[d>>2]=e;i=$(c&255);n[d+4>>2]=i;i=$(g&255);n[d+8>>2]=i;k=1;return k|0}else{i=$(e/$(255.0));n[d>>2]=i;i=$($(c&255)/$(255.0));n[d+4>>2]=i;i=$($(g&255)/$(255.0));n[d+8>>2]=i;k=1;return k|0}}default:{k=0;return k|0}}return 0}function Ld(a,c,d){a=a|0;c=c|0;d=d|0;var e=La,g=La,i=0,j=0,k=0;switch(b[a+24>>0]|0){case 1:{j=f[c>>2]|0;c=a+48|0;i=f[c>>2]|0;c=f[c+4>>2]|0;k=a+40|0;c=(Ho(kn(f[k>>2]|0,f[k+4>>2]|0,j|0,((j|0)<0)<<31>>31|0)|0,I|0,i|0,c|0)|0)+(f[f[a>>2]>>2]|0)|0;g=$((h[c>>0]|h[c+1>>0]<<8)&65535);e=$(g/$(65535.0));n[d>>2]=(b[a+32>>0]|0)==0?g:e;n[d+4>>2]=$(0.0);d=1;return d|0}case 2:{j=f[c>>2]|0;k=a+48|0;c=f[k>>2]|0;k=f[k+4>>2]|0;i=a+40|0;k=(Ho(kn(f[i>>2]|0,f[i+4>>2]|0,j|0,((j|0)<0)<<31>>31|0)|0,I|0,c|0,k|0)|0)+(f[f[a>>2]>>2]|0)|0;k=h[k>>0]|h[k+1>>0]<<8|h[k+2>>0]<<16|h[k+3>>0]<<24;c=k>>>16&65535;e=$(k&65535);if(!(b[a+32>>0]|0)){n[d>>2]=e;g=$(c&65535);n[d+4>>2]=g;k=1;return k|0}else{g=$(e/$(65535.0));n[d>>2]=g;g=$($(c&65535)/$(65535.0));n[d+4>>2]=g;k=1;return k|0}}case 3:{j=f[c>>2]|0;k=a+48|0;c=f[k>>2]|0;k=f[k+4>>2]|0;i=a+40|0;k=(Ho(kn(f[i>>2]|0,f[i+4>>2]|0,j|0,((j|0)<0)<<31>>31|0)|0,I|0,c|0,k|0)|0)+(f[f[a>>2]>>2]|0)|0;c=k+2|0;c=h[c>>0]|h[c+1>>0]<<8;e=$((h[k>>0]|h[k+1>>0]<<8)&65535);if(!(b[a+32>>0]|0)){n[d>>2]=e;g=$(c&65535);n[d+4>>2]=g;k=1;return k|0}else{g=$(e/$(65535.0));n[d>>2]=g;g=$($(c&65535)/$(65535.0));n[d+4>>2]=g;k=1;return k|0}}case 4:{k=f[c>>2]|0;c=a+48|0;j=f[c>>2]|0;c=f[c+4>>2]|0;i=a+40|0;c=(Ho(kn(f[i>>2]|0,f[i+4>>2]|0,k|0,((k|0)<0)<<31>>31|0)|0,I|0,j|0,c|0)|0)+(f[f[a>>2]>>2]|0)|0;j=c;j=h[j>>0]|h[j+1>>0]<<8|h[j+2>>0]<<16|h[j+3>>0]<<24;c=c+4|0;k=(b[a+32>>0]|0)==0;c=(Tn(j|0,h[c>>0]|h[c+1>>0]<<8|h[c+2>>0]<<16|h[c+3>>0]<<24|0,16)|0)&65535;e=$(j&65535);if(k){n[d>>2]=e;g=$(c&65535);n[d+4>>2]=g;k=1;return k|0}else{g=$(e/$(65535.0));n[d>>2]=g;g=$($(c&65535)/$(65535.0));n[d+4>>2]=g;k=1;return k|0}}default:{k=0;return k|0}}return 0}function Md(a,c,d){a=a|0;c=c|0;d=d|0;var e=0,g=0,i=0;switch(b[a+24>>0]|0){case 1:{g=f[c>>2]|0;c=a+48|0;e=f[c>>2]|0;c=f[c+4>>2]|0;i=a+40|0;c=(Ho(kn(f[i>>2]|0,f[i+4>>2]|0,g|0,((g|0)<0)<<31>>31|0)|0,I|0,e|0,c|0)|0)+(f[f[a>>2]>>2]|0)|0;c=(h[c>>0]|h[c+1>>0]<<8)<<16>>16;a=d;f[a>>2]=c;f[a+4>>2]=((c|0)<0)<<31>>31;a=d+8|0;f[a>>2]=0;f[a+4>>2]=0;f[a+8>>2]=0;f[a+12>>2]=0;a=1;return a|0}case 2:{i=f[c>>2]|0;g=a+48|0;e=f[g>>2]|0;g=f[g+4>>2]|0;c=a+40|0;g=(Ho(kn(f[c>>2]|0,f[c+4>>2]|0,i|0,((i|0)<0)<<31>>31|0)|0,I|0,e|0,g|0)|0)+(f[f[a>>2]>>2]|0)|0;g=h[g>>0]|h[g+1>>0]<<8|h[g+2>>0]<<16|h[g+3>>0]<<24;e=(g&65535)<<16>>16;i=d;f[i>>2]=e;f[i+4>>2]=((e|0)<0)<<31>>31;g=(g>>>16&65535)<<16>>16;i=d+8|0;f[i>>2]=g;f[i+4>>2]=((g|0)<0)<<31>>31;i=d+16|0;f[i>>2]=0;f[i+4>>2]=0;i=1;return i|0}case 3:{i=f[c>>2]|0;e=a+48|0;g=f[e>>2]|0;e=f[e+4>>2]|0;c=a+40|0;a=(Ho(kn(f[c>>2]|0,f[c+4>>2]|0,i|0,((i|0)<0)<<31>>31|0)|0,I|0,g|0,e|0)|0)+(f[f[a>>2]>>2]|0)|0;e=a+2|0;e=h[e>>0]|h[e+1>>0]<<8;g=a+4|0;g=h[g>>0]|h[g+1>>0]<<8;a=(h[a>>0]|h[a+1>>0]<<8)<<16>>16;i=d;f[i>>2]=a;f[i+4>>2]=((a|0)<0)<<31>>31;e=e<<16>>16;i=d+8|0;f[i>>2]=e;f[i+4>>2]=((e|0)<0)<<31>>31;g=g<<16>>16;i=d+16|0;f[i>>2]=g;f[i+4>>2]=((g|0)<0)<<31>>31;i=1;return i|0}case 4:{e=f[c>>2]|0;g=a+48|0;i=f[g>>2]|0;g=f[g+4>>2]|0;c=a+40|0;g=(Ho(kn(f[c>>2]|0,f[c+4>>2]|0,e|0,((e|0)<0)<<31>>31|0)|0,I|0,i|0,g|0)|0)+(f[f[a>>2]>>2]|0)|0;i=g;i=h[i>>0]|h[i+1>>0]<<8|h[i+2>>0]<<16|h[i+3>>0]<<24;g=g+4|0;g=h[g>>0]|h[g+1>>0]<<8|h[g+2>>0]<<16|h[g+3>>0]<<24;e=An(On(i|0,g|0,48)|0,I|0,48)|0;a=d;f[a>>2]=e;f[a+4>>2]=I;a=An(0,i|0,48)|0;e=d+8|0;f[e>>2]=a;f[e+4>>2]=I;g=An(On(i|0,g|0,16)|0,I|0,48)|0;i=d+16|0;f[i>>2]=g;f[i+4>>2]=I;i=1;return i|0}default:{i=0;return i|0}}return 0}function Nd(a){a=a|0;var b=0,c=0,d=0;f[a>>2]=4752;fr(a+352|0);b=f[a+340>>2]|0;if(b|0){d=a+344|0;c=f[d>>2]|0;if((c|0)!=(b|0))f[d>>2]=c+(~((c+-4-b|0)>>>2)<<2);ar(b)}d=a+320|0;c=f[d>>2]|0;f[d>>2]=0;if(c|0){d=c+-4|0;b=f[d>>2]|0;if(b|0){b=c+(b<<4)|0;do{b=b+-16|0;fr(b)}while((b|0)!=(c|0))}_q(d)}fr(a+304|0);fr(a+264|0);Ei(a+228|0);b=f[a+212>>2]|0;if(b|0){d=a+216|0;c=f[d>>2]|0;if((c|0)!=(b|0))f[d>>2]=c+(~((c+-4-b|0)>>>2)<<2);ar(b)}b=f[a+200>>2]|0;if(b|0){d=a+204|0;c=f[d>>2]|0;if((c|0)!=(b|0))f[d>>2]=c+(~((c+-4-b|0)>>>2)<<2);ar(b)}b=f[a+188>>2]|0;if(b|0){d=a+192|0;c=f[d>>2]|0;if((c|0)!=(b|0))f[d>>2]=c+(~((c+-4-b|0)>>>2)<<2);ar(b)}b=f[a+176>>2]|0;if(b|0){d=a+180|0;c=f[d>>2]|0;if((c|0)!=(b|0))f[d>>2]=c+(~((c+-4-b|0)>>>2)<<2);ar(b)}b=f[a+160>>2]|0;if(b|0)do{d=b;b=f[b>>2]|0;ar(d)}while((b|0)!=0);d=a+152|0;b=f[d>>2]|0;f[d>>2]=0;if(b|0)ar(b);b=f[a+136>>2]|0;if(b|0)ar(b);b=f[a+124>>2]|0;if(b|0)ar(b);b=f[a+112>>2]|0;if(b|0)ar(b);b=f[a+88>>2]|0;if(b|0){d=a+92|0;c=f[d>>2]|0;if((c|0)!=(b|0))f[d>>2]=c+(~((c+-4-b|0)>>>2)<<2);ar(b)}b=f[a+76>>2]|0;if(b|0){d=a+80|0;c=f[d>>2]|0;if((c|0)!=(b|0))f[d>>2]=c+(~((c+-4-b|0)>>>2)<<2);ar(b)}b=f[a+64>>2]|0;if(b|0)ar(b);b=f[a+48>>2]|0;if(b|0){d=a+52|0;c=f[d>>2]|0;if((c|0)!=(b|0))f[d>>2]=c+(~((c+-4-b|0)>>>2)<<2);ar(b)}b=f[a+36>>2]|0;if(b|0){d=a+40|0;c=f[d>>2]|0;if((c|0)!=(b|0))f[d>>2]=c+(~(((c+-12-b|0)>>>0)/12|0)*12|0);ar(b)}b=f[a+24>>2]|0;if(b|0){d=a+28|0;c=f[d>>2]|0;if((c|0)!=(b|0))f[d>>2]=c+(~((c+-4-b|0)>>>2)<<2);ar(b)}b=f[a+12>>2]|0;if(b|0){d=a+16|0;c=f[d>>2]|0;if((c|0)!=(b|0))f[d>>2]=c+(~((c+-4-b|0)>>>2)<<2);ar(b)}a=a+8|0;b=f[a>>2]|0;f[a>>2]=0;if(!b)return;sj(b);ar(b);return}function Od(a,b){a=a|0;b=b|0;var c=0,d=0,e=0,g=0,h=0,i=0,j=0,k=0,l=0,m=0;k=a+92|0;i=f[b>>2]|0;j=(i|0)<0;l=i+1|0;do if(!j){b=((l|0)%3|0|0)==0?i+-2|0:l;if(!((i>>>0)%3|0)){d=b;g=i+2|0;break}else{d=b;g=i+-1|0;break}}else{d=i;g=i}while(0);h=a+128|0;b=f[h>>2]|0;switch(b|0){case 1:case 0:{if((d|0)<0)b=-1073741824;else b=f[(f[f[k>>2]>>2]|0)+(d<<2)>>2]|0;c=f[a+100>>2]|0;e=c+(b<<2)|0;f[e>>2]=(f[e>>2]|0)+1;if((g|0)<0){d=1;b=-1073741824;e=28}else{d=1;b=f[(f[f[k>>2]>>2]|0)+(g<<2)>>2]|0;e=28}break}case 5:{if(j)b=-1073741824;else b=f[(f[f[k>>2]>>2]|0)+(i<<2)>>2]|0;c=f[a+100>>2]|0;e=c+(b<<2)|0;f[e>>2]=(f[e>>2]|0)+1;if((d|0)<0)b=-1073741824;else b=f[(f[f[k>>2]>>2]|0)+(d<<2)>>2]|0;e=c+(b<<2)|0;f[e>>2]=(f[e>>2]|0)+1;if((g|0)<0){d=2;b=-1073741824;e=28}else{d=2;b=f[(f[f[k>>2]>>2]|0)+(g<<2)>>2]|0;e=28}break}case 3:{if(j)b=-1073741824;else b=f[(f[f[k>>2]>>2]|0)+(i<<2)>>2]|0;c=f[a+100>>2]|0;e=c+(b<<2)|0;f[e>>2]=(f[e>>2]|0)+1;if((d|0)<0)b=-1073741824;else b=f[(f[f[k>>2]>>2]|0)+(d<<2)>>2]|0;e=c+(b<<2)|0;f[e>>2]=(f[e>>2]|0)+2;if((g|0)<0){d=1;b=-1073741824;e=28}else{d=1;b=f[(f[f[k>>2]>>2]|0)+(g<<2)>>2]|0;e=28}break}case 7:{if(j)b=-1073741824;else b=f[(f[f[k>>2]>>2]|0)+(i<<2)>>2]|0;c=f[a+100>>2]|0;e=c+(b<<2)|0;f[e>>2]=(f[e>>2]|0)+2;if((d|0)<0)b=-1073741824;else b=f[(f[f[k>>2]>>2]|0)+(d<<2)>>2]|0;e=c+(b<<2)|0;f[e>>2]=(f[e>>2]|0)+2;if((g|0)<0){d=2;b=-1073741824;e=28}else{d=2;b=f[(f[f[k>>2]>>2]|0)+(g<<2)>>2]|0;e=28}break}default:{}}if((e|0)==28){b=c+(b<<2)|0;f[b>>2]=(f[b>>2]|0)+d;b=f[h>>2]|0}switch(b|0){case 5:case 0:break;default:{f[a+132>>2]=-1;return}}b=f[k>>2]|0;if(!j?(m=((l|0)%3|0|0)==0?i+-2|0:l,(m|0)>=0):0)b=f[(f[b>>2]|0)+(m<<2)>>2]|0;else b=-1073741824;f[a+132>>2]=(f[(f[a+100>>2]|0)+(b<<2)>>2]|0)<6?5:0;return}function Pd(a,b){a=a|0;b=b|0;var c=0,e=0,g=0,h=0,i=0,j=0,k=0,l=0,m=0,n=0;e=a+4|0;if(!b){c=f[a>>2]|0;f[a>>2]=0;if(c|0)ar(c);f[e>>2]=0;return}if(b>>>0>1073741823){a=Ia(4)|0;Eq(a);sa(a|0,1344,125)}n=ln(b<<2)|0;c=f[a>>2]|0;f[a>>2]=n;if(c|0)ar(c);f[e>>2]=b;c=0;do{f[(f[a>>2]|0)+(c<<2)>>2]=0;c=c+1|0}while((c|0)!=(b|0));e=a+8|0;h=f[e>>2]|0;if(!h)return;c=f[h+4>>2]|0;m=b+-1|0;n=(m&b|0)==0;if(n)g=c&m;else g=(c>>>0)%(b>>>0)|0;f[(f[a>>2]|0)+(g<<2)>>2]=e;c=f[h>>2]|0;if(!c)return;else{i=h;e=c;c=h}a:while(1){b:do if(n){l=i;j=c;while(1){c=e;while(1){k=f[c+4>>2]&m;if((k|0)==(g|0))break;e=(f[a>>2]|0)+(k<<2)|0;if(!(f[e>>2]|0)){h=j;g=k;break b}i=c+8|0;h=c;while(1){e=f[h>>2]|0;if(!e)break;if((d[i>>1]|0)==(d[e+8>>1]|0))h=e;else break}f[j>>2]=e;f[h>>2]=f[f[(f[a>>2]|0)+(k<<2)>>2]>>2];f[f[(f[a>>2]|0)+(k<<2)>>2]>>2]=c;c=f[l>>2]|0;if(!c){c=34;break a}}e=f[c>>2]|0;if(!e){c=34;break a}else{l=c;j=c}}}else{l=i;j=c;while(1){c=e;while(1){k=((f[c+4>>2]|0)>>>0)%(b>>>0)|0;if((k|0)==(g|0))break;e=(f[a>>2]|0)+(k<<2)|0;if(!(f[e>>2]|0)){h=j;g=k;break b}i=c+8|0;h=c;while(1){e=f[h>>2]|0;if(!e)break;if((d[i>>1]|0)==(d[e+8>>1]|0))h=e;else break}f[j>>2]=e;f[h>>2]=f[f[(f[a>>2]|0)+(k<<2)>>2]>>2];f[f[(f[a>>2]|0)+(k<<2)>>2]>>2]=c;c=f[l>>2]|0;if(!c){c=34;break a}}e=f[c>>2]|0;if(!e){c=34;break a}else{l=c;j=c}}}while(0);f[e>>2]=h;e=f[c>>2]|0;if(!e){c=34;break}else i=c}if((c|0)==34)return}function Qd(a,c){a=a|0;c=c|0;var d=0,e=0,g=0,h=0,i=0,j=0,k=0,l=0,m=0,n=0;e=a+4|0;if(!c){d=f[a>>2]|0;f[a>>2]=0;if(d|0)ar(d);f[e>>2]=0;return}if(c>>>0>1073741823){a=Ia(4)|0;Eq(a);sa(a|0,1344,125)}n=ln(c<<2)|0;d=f[a>>2]|0;f[a>>2]=n;if(d|0)ar(d);f[e>>2]=c;d=0;do{f[(f[a>>2]|0)+(d<<2)>>2]=0;d=d+1|0}while((d|0)!=(c|0));e=a+8|0;h=f[e>>2]|0;if(!h)return;d=f[h+4>>2]|0;m=c+-1|0;n=(m&c|0)==0;if(n)g=d&m;else g=(d>>>0)%(c>>>0)|0;f[(f[a>>2]|0)+(g<<2)>>2]=e;d=f[h>>2]|0;if(!d)return;else{i=h;e=d;d=h}a:while(1){b:do if(n){l=i;j=d;while(1){d=e;while(1){k=f[d+4>>2]&m;if((k|0)==(g|0))break;e=(f[a>>2]|0)+(k<<2)|0;if(!(f[e>>2]|0)){h=j;g=k;break b}i=d+8|0;h=d;while(1){e=f[h>>2]|0;if(!e)break;if((b[i>>0]|0)==(b[e+8>>0]|0))h=e;else break}f[j>>2]=e;f[h>>2]=f[f[(f[a>>2]|0)+(k<<2)>>2]>>2];f[f[(f[a>>2]|0)+(k<<2)>>2]>>2]=d;d=f[l>>2]|0;if(!d){d=34;break a}}e=f[d>>2]|0;if(!e){d=34;break a}else{l=d;j=d}}}else{l=i;j=d;while(1){d=e;while(1){k=((f[d+4>>2]|0)>>>0)%(c>>>0)|0;if((k|0)==(g|0))break;e=(f[a>>2]|0)+(k<<2)|0;if(!(f[e>>2]|0)){h=j;g=k;break b}i=d+8|0;h=d;while(1){e=f[h>>2]|0;if(!e)break;if((b[i>>0]|0)==(b[e+8>>0]|0))h=e;else break}f[j>>2]=e;f[h>>2]=f[f[(f[a>>2]|0)+(k<<2)>>2]>>2];f[f[(f[a>>2]|0)+(k<<2)>>2]>>2]=d;d=f[l>>2]|0;if(!d){d=34;break a}}e=f[d>>2]|0;if(!e){d=34;break a}else{l=d;j=d}}}while(0);f[e>>2]=h;e=f[d>>2]|0;if(!e){d=34;break}else i=d}if((d|0)==34)return}function Rd(a,c,d){a=a|0;c=c|0;d=d|0;var e=0,g=0,i=0;switch(b[a+24>>0]|0){case 1:{g=f[c>>2]|0;c=a+48|0;e=f[c>>2]|0;c=f[c+4>>2]|0;i=a+40|0;c=Ho(kn(f[i>>2]|0,f[i+4>>2]|0,g|0,((g|0)<0)<<31>>31|0)|0,I|0,e|0,c|0)|0;c=b[(f[f[a>>2]>>2]|0)+c>>0]|0;a=d;f[a>>2]=c;f[a+4>>2]=((c|0)<0)<<31>>31;a=d+8|0;f[a>>2]=0;f[a+4>>2]=0;f[a+8>>2]=0;f[a+12>>2]=0;f[a+16>>2]=0;f[a+20>>2]=0;a=1;return a|0}case 2:{i=f[c>>2]|0;g=a+48|0;e=f[g>>2]|0;g=f[g+4>>2]|0;c=a+40|0;g=(Ho(kn(f[c>>2]|0,f[c+4>>2]|0,i|0,((i|0)<0)<<31>>31|0)|0,I|0,e|0,g|0)|0)+(f[f[a>>2]>>2]|0)|0;g=h[g>>0]|h[g+1>>0]<<8;e=(g&255)<<24>>24;i=d;f[i>>2]=e;f[i+4>>2]=((e|0)<0)<<31>>31;g=((g&65535)>>>8&255)<<24>>24;i=d+8|0;f[i>>2]=g;f[i+4>>2]=((g|0)<0)<<31>>31;i=d+16|0;f[i>>2]=0;f[i+4>>2]=0;f[i+8>>2]=0;f[i+12>>2]=0;i=1;return i|0}case 3:{i=f[c>>2]|0;e=a+48|0;g=f[e>>2]|0;e=f[e+4>>2]|0;c=a+40|0;a=(Ho(kn(f[c>>2]|0,f[c+4>>2]|0,i|0,((i|0)<0)<<31>>31|0)|0,I|0,g|0,e|0)|0)+(f[f[a>>2]>>2]|0)|0;e=b[a+1>>0]|0;g=b[a+2>>0]|0;a=b[a>>0]|0;i=d;f[i>>2]=a;f[i+4>>2]=((a|0)<0)<<31>>31;e=e<<24>>24;i=d+8|0;f[i>>2]=e;f[i+4>>2]=((e|0)<0)<<31>>31;g=g<<24>>24;i=d+16|0;f[i>>2]=g;f[i+4>>2]=((g|0)<0)<<31>>31;i=d+24|0;f[i>>2]=0;f[i+4>>2]=0;i=1;return i|0}case 4:{i=f[c>>2]|0;g=a+48|0;e=f[g>>2]|0;g=f[g+4>>2]|0;c=a+40|0;g=(Ho(kn(f[c>>2]|0,f[c+4>>2]|0,i|0,((i|0)<0)<<31>>31|0)|0,I|0,e|0,g|0)|0)+(f[f[a>>2]>>2]|0)|0;g=h[g>>0]|h[g+1>>0]<<8|h[g+2>>0]<<16|h[g+3>>0]<<24;e=(g&255)<<24>>24;i=d;f[i>>2]=e;f[i+4>>2]=((e|0)<0)<<31>>31;i=(g>>>8&255)<<24>>24;e=d+8|0;f[e>>2]=i;f[e+4>>2]=((i|0)<0)<<31>>31;e=(g>>>16&255)<<24>>24;i=d+16|0;f[i>>2]=e;f[i+4>>2]=((e|0)<0)<<31>>31;g=(g>>>24&255)<<24>>24;i=d+24|0;f[i>>2]=g;f[i+4>>2]=((g|0)<0)<<31>>31;i=1;return i|0}default:{i=0;return i|0}}return 0}function Sd(a,b){a=a|0;b=b|0;var c=0,d=0,e=0,g=0,h=0,i=0,j=0,k=0,l=0,m=0;d=a+4|0;if(!b){c=f[a>>2]|0;f[a>>2]=0;if(c|0)ar(c);f[d>>2]=0;return}if(b>>>0>1073741823){a=Ia(4)|0;Eq(a);sa(a|0,1344,125)}m=ln(b<<2)|0;c=f[a>>2]|0;f[a>>2]=m;if(c|0)ar(c);f[d>>2]=b;c=0;do{f[(f[a>>2]|0)+(c<<2)>>2]=0;c=c+1|0}while((c|0)!=(b|0));d=a+8|0;g=f[d>>2]|0;if(!g)return;c=f[g+4>>2]|0;l=b+-1|0;m=(l&b|0)==0;if(m)e=c&l;else e=(c>>>0)%(b>>>0)|0;f[(f[a>>2]|0)+(e<<2)>>2]=d;c=f[g>>2]|0;if(!c)return;else{h=g;d=c;c=g}a:while(1){b:do if(m){k=h;i=c;while(1){c=d;while(1){j=f[c+4>>2]&l;if((j|0)==(e|0))break;d=(f[a>>2]|0)+(j<<2)|0;if(!(f[d>>2]|0)){g=i;e=j;break b}h=c+8|0;g=c;while(1){d=f[g>>2]|0;if(!d)break;if((f[h>>2]|0)==(f[d+8>>2]|0))g=d;else break}f[i>>2]=d;f[g>>2]=f[f[(f[a>>2]|0)+(j<<2)>>2]>>2];f[f[(f[a>>2]|0)+(j<<2)>>2]>>2]=c;c=f[k>>2]|0;if(!c){c=34;break a}}d=f[c>>2]|0;if(!d){c=34;break a}else{k=c;i=c}}}else{k=h;i=c;while(1){c=d;while(1){j=((f[c+4>>2]|0)>>>0)%(b>>>0)|0;if((j|0)==(e|0))break;d=(f[a>>2]|0)+(j<<2)|0;if(!(f[d>>2]|0)){g=i;e=j;break b}h=c+8|0;g=c;while(1){d=f[g>>2]|0;if(!d)break;if((f[h>>2]|0)==(f[d+8>>2]|0))g=d;else break}f[i>>2]=d;f[g>>2]=f[f[(f[a>>2]|0)+(j<<2)>>2]>>2];f[f[(f[a>>2]|0)+(j<<2)>>2]>>2]=c;c=f[k>>2]|0;if(!c){c=34;break a}}d=f[c>>2]|0;if(!d){c=34;break a}else{k=c;i=c}}}while(0);f[d>>2]=g;d=f[c>>2]|0;if(!d){c=34;break}else h=c}if((c|0)==34)return}function Td(a,c){a=a|0;c=c|0;var d=0,e=0,g=0,h=0,i=0,j=0,k=0,l=0,m=0,o=0,p=0,q=0,r=0,s=0,t=0,v=0,w=0,x=0;v=u;u=u+32|0;e=v+24|0;q=v+20|0;t=v+8|0;s=v+4|0;m=v;f[e>>2]=0;yj(e,f[a>>2]|0)|0;a:do if(f[e>>2]|0){d=0;while(1){d=d+1|0;if(!($d(a,c)|0)){d=0;break}if(d>>>0>=(f[e>>2]|0)>>>0)break a}u=v;return d|0}while(0);f[q>>2]=0;yj(q,f[a>>2]|0)|0;b:do if(!(f[q>>2]|0))d=1;else{i=0;while(1){f[t>>2]=0;f[t+4>>2]=0;f[t+8>>2]=0;g=f[a>>2]|0;w=g+8|0;x=f[w+4>>2]|0;h=g+16|0;e=h;d=f[e>>2]|0;e=f[e+4>>2]|0;if((x|0)>(e|0)|((x|0)==(e|0)?(f[w>>2]|0)>>>0>d>>>0:0)?(l=b[(f[g>>2]|0)+d>>0]|0,j=Ho(d|0,e|0,1,0)|0,p=h,f[p>>2]=j,f[p+4>>2]=I,p=l&255,Aj(t,p,0),j=f[a>>2]|0,o=wl(t,0)|0,g=j+8|0,w=f[g>>2]|0,g=f[g+4>>2]|0,r=j+16|0,x=r,k=f[x>>2]|0,l=l&255,x=Ho(k|0,f[x+4>>2]|0,l|0,0)|0,h=I,!((g|0)<(h|0)|(g|0)==(h|0)&w>>>0>>0)):0){Mg(o|0,(f[j>>2]|0)+k|0,p|0)|0;w=r;w=Ho(f[w>>2]|0,f[w+4>>2]|0,l|0,0)|0;x=r;f[x>>2]=w;f[x+4>>2]=I;x=ln(40)|0;f[x>>2]=0;f[x+4>>2]=0;f[x+8>>2]=0;f[x+12>>2]=0;n[x+16>>2]=$(1.0);w=x+20|0;f[w>>2]=0;f[w+4>>2]=0;f[w+8>>2]=0;f[w+12>>2]=0;n[x+36>>2]=$(1.0);f[s>>2]=x;if(Td(a,x)|0){d=f[s>>2]|0;f[s>>2]=0;f[m>>2]=d;pg(c,t,m)|0;Mi(m);d=0}else d=1;Mi(s)}else d=1;Lo(t);i=i+1|0;if(d|0){d=0;break b}if(i>>>0>=(f[q>>2]|0)>>>0){d=1;break}}}while(0);x=d;u=v;return x|0}function Ud(a,b){a=a|0;b=b|0;var c=0,d=0,e=0,g=0,h=0,i=0;i=a+92|0;c=f[b>>2]|0;d=(c|0)<0;b=c+1|0;do if(!d){b=((b|0)%3|0|0)==0?c+-2|0:b;if(!((c>>>0)%3|0)){h=b;g=c+2|0;break}else{h=b;g=c+-1|0;break}}else{h=c;g=c}while(0);switch(f[a+112>>2]|0){case 1:case 0:{if((h|0)<0)b=-1073741824;else b=f[(f[f[i>>2]>>2]|0)+(h<<2)>>2]|0;c=f[a+100>>2]|0;e=c+(b<<2)|0;f[e>>2]=(f[e>>2]|0)+1;if((g|0)<0){d=1;b=-1073741824;e=28}else{d=1;b=f[(f[f[i>>2]>>2]|0)+(g<<2)>>2]|0;e=28}break}case 5:{if(d)b=-1073741824;else b=f[(f[f[i>>2]>>2]|0)+(c<<2)>>2]|0;c=f[a+100>>2]|0;e=c+(b<<2)|0;f[e>>2]=(f[e>>2]|0)+1;if((h|0)<0)b=-1073741824;else b=f[(f[f[i>>2]>>2]|0)+(h<<2)>>2]|0;e=c+(b<<2)|0;f[e>>2]=(f[e>>2]|0)+1;if((g|0)<0){d=2;b=-1073741824;e=28}else{d=2;b=f[(f[f[i>>2]>>2]|0)+(g<<2)>>2]|0;e=28}break}case 3:{if(d)b=-1073741824;else b=f[(f[f[i>>2]>>2]|0)+(c<<2)>>2]|0;c=f[a+100>>2]|0;e=c+(b<<2)|0;f[e>>2]=(f[e>>2]|0)+1;if((h|0)<0)b=-1073741824;else b=f[(f[f[i>>2]>>2]|0)+(h<<2)>>2]|0;e=c+(b<<2)|0;f[e>>2]=(f[e>>2]|0)+2;if((g|0)<0){d=1;b=-1073741824;e=28}else{d=1;b=f[(f[f[i>>2]>>2]|0)+(g<<2)>>2]|0;e=28}break}case 7:{if(d)b=-1073741824;else b=f[(f[f[i>>2]>>2]|0)+(c<<2)>>2]|0;c=f[a+100>>2]|0;e=c+(b<<2)|0;f[e>>2]=(f[e>>2]|0)+2;if((h|0)<0)b=-1073741824;else b=f[(f[f[i>>2]>>2]|0)+(h<<2)>>2]|0;e=c+(b<<2)|0;f[e>>2]=(f[e>>2]|0)+2;if((g|0)<0){d=2;b=-1073741824;e=28}else{d=2;b=f[(f[f[i>>2]>>2]|0)+(g<<2)>>2]|0;e=28}break}default:{}}if((e|0)==28){g=c+(b<<2)|0;f[g>>2]=(f[g>>2]|0)+d}if((h|0)<0)b=-1073741824;else b=f[(f[f[i>>2]>>2]|0)+(h<<2)>>2]|0;b=f[(f[a+100>>2]|0)+(b<<2)>>2]|0;c=f[a+120>>2]|0;if((b|0)<(c|0)){i=c;i=i-c|0;a=a+116|0;f[a>>2]=i;return}i=f[a+124>>2]|0;i=(b|0)>(i|0)?i:b;i=i-c|0;a=a+116|0;f[a>>2]=i;return}function Vd(a,c,d){a=a|0;c=c|0;d=d|0;var e=0,g=0,i=0;switch(b[a+24>>0]|0){case 1:{g=f[c>>2]|0;c=a+48|0;e=f[c>>2]|0;c=f[c+4>>2]|0;i=a+40|0;c=(Ho(kn(f[i>>2]|0,f[i+4>>2]|0,g|0,((g|0)<0)<<31>>31|0)|0,I|0,e|0,c|0)|0)+(f[f[a>>2]>>2]|0)|0;a=d;f[a>>2]=h[c>>0]|h[c+1>>0]<<8|h[c+2>>0]<<16|h[c+3>>0]<<24;f[a+4>>2]=0;a=d+8|0;f[a>>2]=0;f[a+4>>2]=0;f[a+8>>2]=0;f[a+12>>2]=0;a=1;return a|0}case 2:{i=f[c>>2]|0;g=a+48|0;e=f[g>>2]|0;g=f[g+4>>2]|0;c=a+40|0;g=(Ho(kn(f[c>>2]|0,f[c+4>>2]|0,i|0,((i|0)<0)<<31>>31|0)|0,I|0,e|0,g|0)|0)+(f[f[a>>2]>>2]|0)|0;e=g;g=g+4|0;g=h[g>>0]|h[g+1>>0]<<8|h[g+2>>0]<<16|h[g+3>>0]<<24;i=d;f[i>>2]=h[e>>0]|h[e+1>>0]<<8|h[e+2>>0]<<16|h[e+3>>0]<<24;f[i+4>>2]=0;i=d+8|0;f[i>>2]=g;f[i+4>>2]=0;i=d+16|0;f[i>>2]=0;f[i+4>>2]=0;i=1;return i|0}case 3:{i=f[c>>2]|0;e=a+48|0;g=f[e>>2]|0;e=f[e+4>>2]|0;c=a+40|0;a=(Ho(kn(f[c>>2]|0,f[c+4>>2]|0,i|0,((i|0)<0)<<31>>31|0)|0,I|0,g|0,e|0)|0)+(f[f[a>>2]>>2]|0)|0;e=a+4|0;e=h[e>>0]|h[e+1>>0]<<8|h[e+2>>0]<<16|h[e+3>>0]<<24;g=a+8|0;g=h[g>>0]|h[g+1>>0]<<8|h[g+2>>0]<<16|h[g+3>>0]<<24;i=d;f[i>>2]=h[a>>0]|h[a+1>>0]<<8|h[a+2>>0]<<16|h[a+3>>0]<<24;f[i+4>>2]=0;i=d+8|0;f[i>>2]=e;f[i+4>>2]=0;i=d+16|0;f[i>>2]=g;f[i+4>>2]=0;i=1;return i|0}case 4:{i=f[c>>2]|0;e=a+48|0;g=f[e>>2]|0;e=f[e+4>>2]|0;c=a+40|0;a=(Ho(kn(f[c>>2]|0,f[c+4>>2]|0,i|0,((i|0)<0)<<31>>31|0)|0,I|0,g|0,e|0)|0)+(f[f[a>>2]>>2]|0)|0;e=a+4|0;e=h[e>>0]|h[e+1>>0]<<8|h[e+2>>0]<<16|h[e+3>>0]<<24;g=a+8|0;g=h[g>>0]|h[g+1>>0]<<8|h[g+2>>0]<<16|h[g+3>>0]<<24;i=d;f[i>>2]=h[a>>0]|h[a+1>>0]<<8|h[a+2>>0]<<16|h[a+3>>0]<<24;f[i+4>>2]=0;i=d+8|0;f[i>>2]=e;f[i+4>>2]=0;i=d+16|0;f[i>>2]=g;f[i+4>>2]=0;i=1;return i|0}default:{i=0;return i|0}}return 0}function Wd(a,c,d){a=a|0;c=c|0;d=d|0;var e=0,g=0,i=0;switch(b[a+24>>0]|0){case 1:{g=f[c>>2]|0;c=a+48|0;e=f[c>>2]|0;c=f[c+4>>2]|0;i=a+40|0;c=(Ho(kn(f[i>>2]|0,f[i+4>>2]|0,g|0,((g|0)<0)<<31>>31|0)|0,I|0,e|0,c|0)|0)+(f[f[a>>2]>>2]|0)|0;a=d;f[a>>2]=(h[c>>0]|h[c+1>>0]<<8)&65535;f[a+4>>2]=0;a=d+8|0;f[a>>2]=0;f[a+4>>2]=0;f[a+8>>2]=0;f[a+12>>2]=0;f[a+16>>2]=0;f[a+20>>2]=0;a=1;return a|0}case 2:{e=f[c>>2]|0;g=a+48|0;i=f[g>>2]|0;g=f[g+4>>2]|0;c=a+40|0;g=(Ho(kn(f[c>>2]|0,f[c+4>>2]|0,e|0,((e|0)<0)<<31>>31|0)|0,I|0,i|0,g|0)|0)+(f[f[a>>2]>>2]|0)|0;g=h[g>>0]|h[g+1>>0]<<8|h[g+2>>0]<<16|h[g+3>>0]<<24;i=d;f[i>>2]=g&65535;f[i+4>>2]=0;i=d+8|0;f[i>>2]=g>>>16;f[i+4>>2]=0;i=d+16|0;f[i>>2]=0;f[i+4>>2]=0;f[i+8>>2]=0;f[i+12>>2]=0;i=1;return i|0}case 3:{i=f[c>>2]|0;e=a+48|0;g=f[e>>2]|0;e=f[e+4>>2]|0;c=a+40|0;a=(Ho(kn(f[c>>2]|0,f[c+4>>2]|0,i|0,((i|0)<0)<<31>>31|0)|0,I|0,g|0,e|0)|0)+(f[f[a>>2]>>2]|0)|0;e=a+2|0;e=h[e>>0]|h[e+1>>0]<<8;g=a+4|0;g=h[g>>0]|h[g+1>>0]<<8;i=d;f[i>>2]=(h[a>>0]|h[a+1>>0]<<8)&65535;f[i+4>>2]=0;i=d+8|0;f[i>>2]=e&65535;f[i+4>>2]=0;i=d+16|0;f[i>>2]=g&65535;f[i+4>>2]=0;i=d+24|0;f[i>>2]=0;f[i+4>>2]=0;i=1;return i|0}case 4:{e=f[c>>2]|0;g=a+48|0;i=f[g>>2]|0;g=f[g+4>>2]|0;c=a+40|0;g=(Ho(kn(f[c>>2]|0,f[c+4>>2]|0,e|0,((e|0)<0)<<31>>31|0)|0,I|0,i|0,g|0)|0)+(f[f[a>>2]>>2]|0)|0;i=g;i=h[i>>0]|h[i+1>>0]<<8|h[i+2>>0]<<16|h[i+3>>0]<<24;g=g+4|0;g=h[g>>0]|h[g+1>>0]<<8|h[g+2>>0]<<16|h[g+3>>0]<<24;a=d;f[a>>2]=i&65535;f[a+4>>2]=0;a=Tn(i|0,g|0,16)|0;e=d+8|0;f[e>>2]=a&65535;f[e+4>>2]=0;e=d+16|0;f[e>>2]=g&65535;f[e+4>>2]=0;g=Tn(i|0,g|0,48)|0;i=d+24|0;f[i>>2]=g;f[i+4>>2]=I;i=1;return i|0}default:{i=0;return i|0}}return 0}function Xd(a,b,c,d,e,g){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;g=g|0;var h=0,i=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0;t=a+8|0;f[t>>2]=e;j=a+32|0;i=a+36|0;h=f[i>>2]|0;g=f[j>>2]|0;k=h-g>>2;if(k>>>0>=e>>>0)if(k>>>0>e>>>0?(l=g+(e<<2)|0,(h|0)!=(l|0)):0){f[i>>2]=h+(~((h+-4-l|0)>>>2)<<2);g=e}else g=e;else{ui(j,e-k|0);g=f[t>>2]|0}r=e>>>0>1073741823?-1:e<<2;s=Zq(r)|0;ej(s|0,0,r|0)|0;if((g|0)>0){l=a+16|0;i=a+32|0;m=a+12|0;j=0;do{g=f[s+(j<<2)>>2]|0;h=f[l>>2]|0;if((g|0)>(h|0)){k=f[i>>2]|0;f[k+(j<<2)>>2]=h}else{r=f[m>>2]|0;k=f[i>>2]|0;f[k+(j<<2)>>2]=(g|0)<(r|0)?r:g}j=j+1|0;g=f[t>>2]|0}while((j|0)<(g|0));if((g|0)>0){j=a+20|0;i=0;do{g=(f[b+(i<<2)>>2]|0)+(f[k+(i<<2)>>2]|0)|0;h=c+(i<<2)|0;f[h>>2]=g;if((g|0)<=(f[l>>2]|0)){if((g|0)<(f[m>>2]|0)){g=(f[j>>2]|0)+g|0;u=18}}else{g=g-(f[j>>2]|0)|0;u=18}if((u|0)==18){u=0;f[h>>2]=g}i=i+1|0;g=f[t>>2]|0}while((i|0)<(g|0))}}if((e|0)>=(d|0)){_q(s);return 1}p=0-e|0;q=a+16|0;o=a+32|0;r=a+12|0;n=a+20|0;a=e;do{l=c+(a<<2)|0;j=l+(p<<2)|0;m=b+(a<<2)|0;if((g|0)>0){i=0;do{g=f[j+(i<<2)>>2]|0;h=f[q>>2]|0;if((g|0)>(h|0)){k=f[o>>2]|0;f[k+(i<<2)>>2]=h}else{h=f[r>>2]|0;k=f[o>>2]|0;f[k+(i<<2)>>2]=(g|0)<(h|0)?h:g}i=i+1|0;g=f[t>>2]|0}while((i|0)<(g|0));if((g|0)>0){i=0;do{g=(f[m+(i<<2)>>2]|0)+(f[k+(i<<2)>>2]|0)|0;h=l+(i<<2)|0;f[h>>2]=g;if((g|0)<=(f[q>>2]|0)){if((g|0)<(f[r>>2]|0)){g=(f[n>>2]|0)+g|0;u=33}}else{g=g-(f[n>>2]|0)|0;u=33}if((u|0)==33){u=0;f[h>>2]=g}i=i+1|0;g=f[t>>2]|0}while((i|0)<(g|0))}}a=a+e|0}while((a|0)<(d|0));_q(s);return 1}function Yd(a,c){a=a|0;c=c|0;var d=0,e=0,g=0,h=0,i=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0;n=u;u=u+48|0;l=n+40|0;m=n;if(!(Ug(a,1,l)|0)){m=0;u=n;return m|0}k=a+40|0;e=a+16|0;i=f[e>>2]|0;d=(f[a>>2]|0)+i|0;o=a+8|0;e=Xn(f[o>>2]|0,f[o+4>>2]|0,i|0,f[e+4>>2]|0)|0;tn(k,d,e);e=l;d=f[e>>2]|0;e=f[e+4>>2]|0;i=a+48|0;o=i;j=a+56|0;h=j;g=f[h>>2]|0;h=f[h+4>>2]|0;o=Xn(f[o>>2]|0,f[o+4>>2]|0,g|0,h|0)|0;p=I;if(e>>>0>p>>>0|(e|0)==(p|0)&d>>>0>o>>>0){p=0;u=n;return p|0}o=Ho(g|0,h|0,d|0,e|0)|0;p=j;f[p>>2]=o;f[p+4>>2]=I;if(!(Ug(k,1,l)|0)){p=0;u=n;return p|0}Ym(m);e=j;p=f[e>>2]|0;d=(f[k>>2]|0)+p|0;e=Xn(f[i>>2]|0,f[i+4>>2]|0,p|0,f[e+4>>2]|0)|0;tn(m,d,e);e=l;d=f[e>>2]|0;e=f[e+4>>2]|0;p=m+8|0;i=m+16|0;h=i;g=f[h>>2]|0;h=f[h+4>>2]|0;p=Xn(f[p>>2]|0,f[p+4>>2]|0,g|0,h|0)|0;o=I;a:do if(e>>>0>o>>>0|(e|0)==(o|0)&d>>>0>p>>>0)d=0;else{d=Ho(g|0,h|0,d|0,e|0)|0;j=i;f[j>>2]=d;f[j+4>>2]=I;j=a+84|0;d=f[j>>2]|0;if((d|0)>0){h=d<<4;h=Zq(d>>>0>268435455|h>>>0>4294967291?-1:h+4|0)|0;f[h>>2]=d;h=h+4|0;e=h+(d<<4)|0;d=h;do{xq(d);d=d+16|0}while((d|0)!=(e|0));i=a+80|0;g=f[i>>2]|0;f[i>>2]=h;if(g|0){e=g+-4|0;d=f[e>>2]|0;if(d|0){d=g+(d<<4)|0;do{d=d+-16|0;fr(d)}while((d|0)!=(g|0))}_q(e)}if((f[j>>2]|0)>0){d=0;do{if(!(Ff((f[i>>2]|0)+(d<<4)|0,m)|0)){d=0;break a}d=d+1|0}while((d|0)<(f[j>>2]|0))}}d=c;e=m;g=d+36|0;do{f[d>>2]=f[e>>2];d=d+4|0;e=e+4|0}while((d|0)<(g|0));b[c+36>>0]=b[m+36>>0]|0;d=1}while(0);fr(m+24|0);p=d;u=n;return p|0}function Zd(a,c,d){a=a|0;c=c|0;d=d|0;var e=0,g=0,h=0,i=0,j=0;i=c+8|0;j=f[i+4>>2]|0;h=c+16|0;e=h;g=f[e>>2]|0;e=f[e+4>>2]|0;if(!((j|0)>(e|0)|((j|0)==(e|0)?(f[i>>2]|0)>>>0>g>>>0:0))){j=0;return j|0}j=b[(f[c>>2]|0)+g>>0]|0;g=Ho(g|0,e|0,1,0)|0;i=h;f[i>>2]=g;f[i+4>>2]=I;do switch(j<<24>>24){case 1:{j=Xc(a,c,d)|0;return j|0}case 2:{j=Xc(a,c,d)|0;return j|0}case 3:{j=Xc(a,c,d)|0;return j|0}case 4:{j=Xc(a,c,d)|0;return j|0}case 5:{j=xf(a,c,d)|0;return j|0}case 6:{j=Xc(a,c,d)|0;return j|0}case 7:{j=Xc(a,c,d)|0;return j|0}case 8:{j=Xc(a,c,d)|0;return j|0}case 9:{j=Wc(a,c,d)|0;return j|0}case 10:{j=Uc(a,c,d)|0;return j|0}case 11:{j=Tc(a,c,d)|0;return j|0}case 12:{j=Rc(a,c,d)|0;return j|0}case 13:{j=Qc(a,c,d)|0;return j|0}case 14:{j=Oc(a,c,d)|0;return j|0}case 15:{j=Oc(a,c,d)|0;return j|0}case 16:{j=Oc(a,c,d)|0;return j|0}case 17:{j=Oc(a,c,d)|0;return j|0}case 18:{j=Oc(a,c,d)|0;return j|0}default:{j=0;return j|0}}while(0);return 0}function _d(a){a=a|0;var b=0,c=0,d=0;f[a>>2]=4588;d=a+320|0;c=f[d>>2]|0;f[d>>2]=0;if(c|0){d=c+-4|0;b=f[d>>2]|0;if(b|0){b=c+(b<<4)|0;do{b=b+-16|0;fr(b)}while((b|0)!=(c|0))}_q(d)}fr(a+304|0);fr(a+264|0);Ei(a+228|0);b=f[a+212>>2]|0;if(b|0){d=a+216|0;c=f[d>>2]|0;if((c|0)!=(b|0))f[d>>2]=c+(~((c+-4-b|0)>>>2)<<2);ar(b)}b=f[a+200>>2]|0;if(b|0){d=a+204|0;c=f[d>>2]|0;if((c|0)!=(b|0))f[d>>2]=c+(~((c+-4-b|0)>>>2)<<2);ar(b)}b=f[a+188>>2]|0;if(b|0){d=a+192|0;c=f[d>>2]|0;if((c|0)!=(b|0))f[d>>2]=c+(~((c+-4-b|0)>>>2)<<2);ar(b)}b=f[a+176>>2]|0;if(b|0){d=a+180|0;c=f[d>>2]|0;if((c|0)!=(b|0))f[d>>2]=c+(~((c+-4-b|0)>>>2)<<2);ar(b)}b=f[a+160>>2]|0;if(b|0)do{d=b;b=f[b>>2]|0;ar(d)}while((b|0)!=0);d=a+152|0;b=f[d>>2]|0;f[d>>2]=0;if(b|0)ar(b);b=f[a+136>>2]|0;if(b|0)ar(b);b=f[a+124>>2]|0;if(b|0)ar(b);b=f[a+112>>2]|0;if(b|0)ar(b);b=f[a+88>>2]|0;if(b|0){d=a+92|0;c=f[d>>2]|0;if((c|0)!=(b|0))f[d>>2]=c+(~((c+-4-b|0)>>>2)<<2);ar(b)}b=f[a+76>>2]|0;if(b|0){d=a+80|0;c=f[d>>2]|0;if((c|0)!=(b|0))f[d>>2]=c+(~((c+-4-b|0)>>>2)<<2);ar(b)}b=f[a+64>>2]|0;if(b|0)ar(b);b=f[a+48>>2]|0;if(b|0){d=a+52|0;c=f[d>>2]|0;if((c|0)!=(b|0))f[d>>2]=c+(~((c+-4-b|0)>>>2)<<2);ar(b)}b=f[a+36>>2]|0;if(b|0){d=a+40|0;c=f[d>>2]|0;if((c|0)!=(b|0))f[d>>2]=c+(~(((c+-12-b|0)>>>0)/12|0)*12|0);ar(b)}b=f[a+24>>2]|0;if(b|0){d=a+28|0;c=f[d>>2]|0;if((c|0)!=(b|0))f[d>>2]=c+(~((c+-4-b|0)>>>2)<<2);ar(b)}b=f[a+12>>2]|0;if(b|0){d=a+16|0;c=f[d>>2]|0;if((c|0)!=(b|0))f[d>>2]=c+(~((c+-4-b|0)>>>2)<<2);ar(b)}a=a+8|0;b=f[a>>2]|0;f[a>>2]=0;if(!b)return;sj(b);ar(b);return}function $d(a,c){a=a|0;c=c|0;var d=0,e=0,g=0,h=0,i=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0;n=u;u=u+32|0;m=n+16|0;k=n+12|0;l=n;f[m>>2]=0;f[m+4>>2]=0;f[m+8>>2]=0;d=f[a>>2]|0;j=d+8|0;i=f[j+4>>2]|0;h=d+16|0;e=h;g=f[e>>2]|0;e=f[e+4>>2]|0;if(!((i|0)>(e|0)|((i|0)==(e|0)?(f[j>>2]|0)>>>0>g>>>0:0))){l=0;Lo(m);u=n;return l|0}q=b[(f[d>>2]|0)+g>>0]|0;d=Ho(g|0,e|0,1,0)|0;i=h;f[i>>2]=d;f[i+4>>2]=I;i=q&255;Aj(m,i,0);d=f[a>>2]|0;h=wl(m,0)|0;r=d+8|0;p=f[r>>2]|0;r=f[r+4>>2]|0;j=d+16|0;o=j;e=f[o>>2]|0;g=q&255;o=Ho(e|0,f[o+4>>2]|0,g|0,0)|0;q=I;if((r|0)<(q|0)|(r|0)==(q|0)&p>>>0>>0){r=0;Lo(m);u=n;return r|0}Mg(h|0,(f[d>>2]|0)+e|0,i|0)|0;i=j;i=Ho(f[i>>2]|0,f[i+4>>2]|0,g|0,0)|0;d=j;f[d>>2]=i;f[d+4>>2]=I;f[k>>2]=0;yj(k,f[a>>2]|0)|0;d=f[k>>2]|0;f[l>>2]=0;i=l+4|0;f[i>>2]=0;f[l+8>>2]=0;if(!d)h=0;else{if((d|0)<0)Lp(l);e=ln(d)|0;f[i>>2]=e;f[l>>2]=e;f[l+8>>2]=e+d;do{b[e>>0]=0;e=(f[i>>2]|0)+1|0;f[i>>2]=e;d=d+-1|0}while((d|0)!=0);h=f[k>>2]|0}d=f[a>>2]|0;o=d+8|0;q=f[o>>2]|0;o=f[o+4>>2]|0;g=d+16|0;r=g;e=f[r>>2]|0;r=Ho(e|0,f[r+4>>2]|0,h|0,0)|0;p=I;if((o|0)<(p|0)|(o|0)==(p|0)&q>>>0>>0)e=0;else{Mg(f[l>>2]|0,(f[d>>2]|0)+e|0,h|0)|0;r=g;r=Ho(f[r>>2]|0,f[r+4>>2]|0,h|0,0)|0;e=g;f[e>>2]=r;f[e+4>>2]=I;Im(c,m,l);e=1}d=f[l>>2]|0;if(d|0){if((f[i>>2]|0)!=(d|0))f[i>>2]=d;ar(d)}r=e;Lo(m);u=n;return r|0}function ae(a,c,d){a=a|0;c=c|0;d=d|0;var e=La,g=La,i=0,j=0,k=0;switch(b[a+24>>0]|0){case 1:{j=f[c>>2]|0;c=a+48|0;i=f[c>>2]|0;c=f[c+4>>2]|0;k=a+40|0;c=Ho(kn(f[k>>2]|0,f[k+4>>2]|0,j|0,((j|0)<0)<<31>>31|0)|0,I|0,i|0,c|0)|0;g=$(b[(f[f[a>>2]>>2]|0)+c>>0]|0);e=$(g/$(127.0));n[d>>2]=(b[a+32>>0]|0)==0?g:e;n[d+4>>2]=$(0.0);a=1;return a|0}case 2:{j=f[c>>2]|0;k=a+48|0;c=f[k>>2]|0;k=f[k+4>>2]|0;i=a+40|0;k=(Ho(kn(f[i>>2]|0,f[i+4>>2]|0,j|0,((j|0)<0)<<31>>31|0)|0,I|0,c|0,k|0)|0)+(f[f[a>>2]>>2]|0)|0;k=h[k>>0]|h[k+1>>0]<<8;c=(k&65535)>>>8&255;e=$((k&255)<<24>>24);if(!(b[a+32>>0]|0)){n[d>>2]=e;g=$(c<<24>>24);n[d+4>>2]=g;k=1;return k|0}else{g=$(e/$(127.0));n[d>>2]=g;g=$($(c<<24>>24)/$(127.0));n[d+4>>2]=g;k=1;return k|0}}case 3:{j=f[c>>2]|0;k=a+48|0;c=f[k>>2]|0;k=f[k+4>>2]|0;i=a+40|0;k=(Ho(kn(f[i>>2]|0,f[i+4>>2]|0,j|0,((j|0)<0)<<31>>31|0)|0,I|0,c|0,k|0)|0)+(f[f[a>>2]>>2]|0)|0;c=b[k+1>>0]|0;e=$(b[k>>0]|0);if(!(b[a+32>>0]|0)){n[d>>2]=e;g=$(c<<24>>24);n[d+4>>2]=g;k=1;return k|0}else{g=$(e/$(127.0));n[d>>2]=g;g=$($(c<<24>>24)/$(127.0));n[d+4>>2]=g;k=1;return k|0}}case 4:{j=f[c>>2]|0;k=a+48|0;c=f[k>>2]|0;k=f[k+4>>2]|0;i=a+40|0;k=(Ho(kn(f[i>>2]|0,f[i+4>>2]|0,j|0,((j|0)<0)<<31>>31|0)|0,I|0,c|0,k|0)|0)+(f[f[a>>2]>>2]|0)|0;k=h[k>>0]|h[k+1>>0]<<8|h[k+2>>0]<<16|h[k+3>>0]<<24;c=k>>>8&255;e=$((k&255)<<24>>24);if(!(b[a+32>>0]|0)){n[d>>2]=e;g=$(c<<24>>24);n[d+4>>2]=g;k=1;return k|0}else{g=$(e/$(127.0));n[d>>2]=g;g=$($(c<<24>>24)/$(127.0));n[d+4>>2]=g;k=1;return k|0}}default:{k=0;return k|0}}return 0}function be(a,b,c,d,e,g){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;g=g|0;var h=0,i=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,v=0,w=0,x=0,y=0,z=0;y=u;u=u+16|0;x=y+4|0;w=y;f[a+72>>2]=e;f[a+64>>2]=g;t=Zq(e>>>0>1073741823?-1:e<<2)|0;v=a+68|0;d=f[v>>2]|0;f[v>>2]=t;if(d|0)_q(d);t=a+8|0;f[t>>2]=e;i=a+32|0;h=a+36|0;g=f[h>>2]|0;d=f[i>>2]|0;j=g-d>>2;if(j>>>0>=e>>>0){if(j>>>0>e>>>0?(k=d+(e<<2)|0,(g|0)!=(k|0)):0)f[h>>2]=g+(~((g+-4-k|0)>>>2)<<2)}else ui(i,e-j|0);o=a+56|0;h=f[o>>2]|0;g=f[h+4>>2]|0;d=f[h>>2]|0;r=g-d|0;s=r>>2;if((r|0)<=0){u=y;return 1}q=a+16|0;n=a+32|0;r=a+12|0;p=a+20|0;i=h;h=0;while(1){if(g-d>>2>>>0<=h>>>0){Kp(i);d=f[i>>2]|0}f[w>>2]=f[d+(h<<2)>>2];f[x>>2]=f[w>>2];vc(a,x,c,h);m=X(h,e)|0;i=f[v>>2]|0;l=b+(m<<2)|0;m=c+(m<<2)|0;if((f[t>>2]|0)>0){j=0;do{d=f[i+(j<<2)>>2]|0;g=f[q>>2]|0;if((d|0)>(g|0)){k=f[n>>2]|0;f[k+(j<<2)>>2]=g}else{g=f[r>>2]|0;k=f[n>>2]|0;f[k+(j<<2)>>2]=(d|0)<(g|0)?g:d}j=j+1|0;d=f[t>>2]|0}while((j|0)<(d|0));if((d|0)>0){i=0;do{d=(f[l+(i<<2)>>2]|0)+(f[k+(i<<2)>>2]|0)|0;g=m+(i<<2)|0;f[g>>2]=d;if((d|0)<=(f[q>>2]|0)){if((d|0)<(f[r>>2]|0)){d=(f[p>>2]|0)+d|0;z=24}}else{d=d-(f[p>>2]|0)|0;z=24}if((z|0)==24){z=0;f[g>>2]=d}i=i+1|0}while((i|0)<(f[t>>2]|0))}}h=h+1|0;if((h|0)>=(s|0))break;i=f[o>>2]|0;d=f[i>>2]|0;g=f[i+4>>2]|0}u=y;return 1}function ce(a,b,c,d,e,g){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;g=g|0;var h=0,i=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,v=0,w=0,x=0,y=0,z=0;y=u;u=u+16|0;x=y+4|0;w=y;f[a+72>>2]=e;f[a+64>>2]=g;t=Zq(e>>>0>1073741823?-1:e<<2)|0;v=a+68|0;d=f[v>>2]|0;f[v>>2]=t;if(d|0)_q(d);t=a+8|0;f[t>>2]=e;i=a+32|0;h=a+36|0;g=f[h>>2]|0;d=f[i>>2]|0;j=g-d>>2;if(j>>>0>=e>>>0){if(j>>>0>e>>>0?(k=d+(e<<2)|0,(g|0)!=(k|0)):0)f[h>>2]=g+(~((g+-4-k|0)>>>2)<<2)}else ui(i,e-j|0);o=a+56|0;h=f[o>>2]|0;g=f[h+4>>2]|0;d=f[h>>2]|0;r=g-d|0;s=r>>2;if((r|0)<=0){u=y;return 1}q=a+16|0;n=a+32|0;r=a+12|0;p=a+20|0;i=h;h=0;while(1){if(g-d>>2>>>0<=h>>>0){Kp(i);d=f[i>>2]|0}f[w>>2]=f[d+(h<<2)>>2];f[x>>2]=f[w>>2];sc(a,x,c,h);m=X(h,e)|0;i=f[v>>2]|0;l=b+(m<<2)|0;m=c+(m<<2)|0;if((f[t>>2]|0)>0){j=0;do{d=f[i+(j<<2)>>2]|0;g=f[q>>2]|0;if((d|0)>(g|0)){k=f[n>>2]|0;f[k+(j<<2)>>2]=g}else{g=f[r>>2]|0;k=f[n>>2]|0;f[k+(j<<2)>>2]=(d|0)<(g|0)?g:d}j=j+1|0;d=f[t>>2]|0}while((j|0)<(d|0));if((d|0)>0){i=0;do{d=(f[l+(i<<2)>>2]|0)+(f[k+(i<<2)>>2]|0)|0;g=m+(i<<2)|0;f[g>>2]=d;if((d|0)<=(f[q>>2]|0)){if((d|0)<(f[r>>2]|0)){d=(f[p>>2]|0)+d|0;z=24}}else{d=d-(f[p>>2]|0)|0;z=24}if((z|0)==24){z=0;f[g>>2]=d}i=i+1|0}while((i|0)<(f[t>>2]|0))}}h=h+1|0;if((h|0)>=(s|0))break;i=f[o>>2]|0;d=f[i>>2]|0;g=f[i+4>>2]|0}u=y;return 1}function de(a,c){a=a|0;c=c|0;var d=0,e=0,g=0,h=0,i=0,j=0,k=0;k=a+8|0;e=f[k>>2]|0;switch(f[e+28>>2]|0){case 2:{d=b[e+24>>0]|0;j=d<<24>>24;i=Zq((j|0)>-1?j:-1)|0;h=f[a+16>>2]|0;h=(f[f[h>>2]>>2]|0)+(f[h+48>>2]|0)|0;a:do if(c|0){if(d<<24>>24>0){a=0;e=0}else{Mg(f[f[e+64>>2]>>2]|0,i|0,j|0)|0;if((c|0)==1)break;else{d=1;a=0}while(1){a=a+j|0;Mg((f[f[(f[k>>2]|0)+64>>2]>>2]|0)+a|0,i|0,j|0)|0;d=d+1|0;if((d|0)==(c|0))break a}}while(1){d=0;g=e;while(1){b[i+d>>0]=f[h+(g<<2)>>2];d=d+1|0;if((d|0)==(j|0))break;else g=g+1|0}Mg((f[f[(f[k>>2]|0)+64>>2]>>2]|0)+e|0,i|0,j|0)|0;a=a+1|0;if((a|0)==(c|0))break;else e=e+j|0}}while(0);_q(i);c=1;return c|0}case 1:{d=b[e+24>>0]|0;j=d<<24>>24;i=Zq((j|0)>-1?j:-1)|0;h=f[a+16>>2]|0;h=(f[f[h>>2]>>2]|0)+(f[h+48>>2]|0)|0;b:do if(c|0){if(d<<24>>24>0){a=0;e=0}else{Mg(f[f[e+64>>2]>>2]|0,i|0,j|0)|0;if((c|0)==1)break;else{d=1;a=0}while(1){a=a+j|0;Mg((f[f[(f[k>>2]|0)+64>>2]>>2]|0)+a|0,i|0,j|0)|0;d=d+1|0;if((d|0)==(c|0))break b}}while(1){d=0;g=e;while(1){b[i+d>>0]=f[h+(g<<2)>>2];d=d+1|0;if((d|0)==(j|0))break;else g=g+1|0}Mg((f[f[(f[k>>2]|0)+64>>2]>>2]|0)+e|0,i|0,j|0)|0;a=a+1|0;if((a|0)==(c|0))break;else e=e+j|0}}while(0);_q(i);c=1;return c|0}case 4:{di(a,c);c=1;return c|0}case 3:{di(a,c);c=1;return c|0}case 6:{ei(a,c);c=1;return c|0}case 5:{ei(a,c);c=1;return c|0}default:{c=0;return c|0}}return 0}function ee(a,c,d){a=a|0;c=c|0;d=d|0;var e=La,g=La,i=0,j=0,k=0;switch(b[a+24>>0]|0){case 1:{j=f[c>>2]|0;c=a+48|0;i=f[c>>2]|0;c=f[c+4>>2]|0;k=a+40|0;c=Ho(kn(f[k>>2]|0,f[k+4>>2]|0,j|0,((j|0)<0)<<31>>31|0)|0,I|0,i|0,c|0)|0;g=$(h[(f[f[a>>2]>>2]|0)+c>>0]|0);e=$(g/$(255.0));n[d>>2]=(b[a+32>>0]|0)==0?g:e;n[d+4>>2]=$(0.0);a=1;return a|0}case 2:{j=f[c>>2]|0;k=a+48|0;c=f[k>>2]|0;k=f[k+4>>2]|0;i=a+40|0;k=(Ho(kn(f[i>>2]|0,f[i+4>>2]|0,j|0,((j|0)<0)<<31>>31|0)|0,I|0,c|0,k|0)|0)+(f[f[a>>2]>>2]|0)|0;k=h[k>>0]|h[k+1>>0]<<8;c=(k&65535)>>>8&255;e=$(k&255);if(!(b[a+32>>0]|0)){n[d>>2]=e;g=$(c&255);n[d+4>>2]=g;k=1;return k|0}else{g=$(e/$(255.0));n[d>>2]=g;g=$($(c&255)/$(255.0));n[d+4>>2]=g;k=1;return k|0}}case 3:{j=f[c>>2]|0;k=a+48|0;c=f[k>>2]|0;k=f[k+4>>2]|0;i=a+40|0;k=(Ho(kn(f[i>>2]|0,f[i+4>>2]|0,j|0,((j|0)<0)<<31>>31|0)|0,I|0,c|0,k|0)|0)+(f[f[a>>2]>>2]|0)|0;c=b[k+1>>0]|0;e=$(h[k>>0]|0);if(!(b[a+32>>0]|0)){n[d>>2]=e;g=$(c&255);n[d+4>>2]=g;k=1;return k|0}else{g=$(e/$(255.0));n[d>>2]=g;g=$($(c&255)/$(255.0));n[d+4>>2]=g;k=1;return k|0}}case 4:{j=f[c>>2]|0;k=a+48|0;c=f[k>>2]|0;k=f[k+4>>2]|0;i=a+40|0;k=(Ho(kn(f[i>>2]|0,f[i+4>>2]|0,j|0,((j|0)<0)<<31>>31|0)|0,I|0,c|0,k|0)|0)+(f[f[a>>2]>>2]|0)|0;k=h[k>>0]|h[k+1>>0]<<8|h[k+2>>0]<<16|h[k+3>>0]<<24;c=k>>>8&255;e=$(k&255);if(!(b[a+32>>0]|0)){n[d>>2]=e;g=$(c&255);n[d+4>>2]=g;k=1;return k|0}else{g=$(e/$(255.0));n[d>>2]=g;g=$($(c&255)/$(255.0));n[d+4>>2]=g;k=1;return k|0}}default:{k=0;return k|0}}return 0}function fe(a,c,d){a=a|0;c=c|0;d=d|0;var e=0,g=0,i=0;switch(b[a+24>>0]|0){case 1:{g=f[c>>2]|0;c=a+48|0;e=f[c>>2]|0;c=f[c+4>>2]|0;i=a+40|0;c=Ho(kn(f[i>>2]|0,f[i+4>>2]|0,g|0,((g|0)<0)<<31>>31|0)|0,I|0,e|0,c|0)|0;c=b[(f[f[a>>2]>>2]|0)+c>>0]|0;a=d;f[a>>2]=c;f[a+4>>2]=((c|0)<0)<<31>>31;a=d+8|0;f[a>>2]=0;f[a+4>>2]=0;f[a+8>>2]=0;f[a+12>>2]=0;a=1;return a|0}case 2:{i=f[c>>2]|0;g=a+48|0;e=f[g>>2]|0;g=f[g+4>>2]|0;c=a+40|0;g=(Ho(kn(f[c>>2]|0,f[c+4>>2]|0,i|0,((i|0)<0)<<31>>31|0)|0,I|0,e|0,g|0)|0)+(f[f[a>>2]>>2]|0)|0;g=h[g>>0]|h[g+1>>0]<<8;e=(g&255)<<24>>24;i=d;f[i>>2]=e;f[i+4>>2]=((e|0)<0)<<31>>31;g=((g&65535)>>>8&255)<<24>>24;i=d+8|0;f[i>>2]=g;f[i+4>>2]=((g|0)<0)<<31>>31;i=d+16|0;f[i>>2]=0;f[i+4>>2]=0;i=1;return i|0}case 3:{i=f[c>>2]|0;e=a+48|0;g=f[e>>2]|0;e=f[e+4>>2]|0;c=a+40|0;a=(Ho(kn(f[c>>2]|0,f[c+4>>2]|0,i|0,((i|0)<0)<<31>>31|0)|0,I|0,g|0,e|0)|0)+(f[f[a>>2]>>2]|0)|0;e=b[a+1>>0]|0;g=b[a+2>>0]|0;a=b[a>>0]|0;i=d;f[i>>2]=a;f[i+4>>2]=((a|0)<0)<<31>>31;e=e<<24>>24;i=d+8|0;f[i>>2]=e;f[i+4>>2]=((e|0)<0)<<31>>31;g=g<<24>>24;i=d+16|0;f[i>>2]=g;f[i+4>>2]=((g|0)<0)<<31>>31;i=1;return i|0}case 4:{e=f[c>>2]|0;g=a+48|0;i=f[g>>2]|0;g=f[g+4>>2]|0;c=a+40|0;g=(Ho(kn(f[c>>2]|0,f[c+4>>2]|0,e|0,((e|0)<0)<<31>>31|0)|0,I|0,i|0,g|0)|0)+(f[f[a>>2]>>2]|0)|0;g=h[g>>0]|h[g+1>>0]<<8|h[g+2>>0]<<16|h[g+3>>0]<<24;i=(g&255)<<24>>24;e=d;f[e>>2]=i;f[e+4>>2]=((i|0)<0)<<31>>31;e=(g>>>8&255)<<24>>24;i=d+8|0;f[i>>2]=e;f[i+4>>2]=((e|0)<0)<<31>>31;g=(g>>>16&255)<<24>>24;i=d+16|0;f[i>>2]=g;f[i+4>>2]=((g|0)<0)<<31>>31;i=1;return i|0}default:{i=0;return i|0}}return 0}function ge(a,c,d){a=a|0;c=c|0;d=d|0;var e=0,g=0,i=0;switch(b[a+24>>0]|0){case 1:{g=f[c>>2]|0;c=a+48|0;e=f[c>>2]|0;c=f[c+4>>2]|0;i=a+40|0;c=(Ho(kn(f[i>>2]|0,f[i+4>>2]|0,g|0,((g|0)<0)<<31>>31|0)|0,I|0,e|0,c|0)|0)+(f[f[a>>2]>>2]|0)|0;a=d;f[a>>2]=(h[c>>0]|h[c+1>>0]<<8)&65535;f[a+4>>2]=0;a=d+8|0;f[a>>2]=0;f[a+4>>2]=0;f[a+8>>2]=0;f[a+12>>2]=0;a=1;return a|0}case 2:{e=f[c>>2]|0;g=a+48|0;i=f[g>>2]|0;g=f[g+4>>2]|0;c=a+40|0;g=(Ho(kn(f[c>>2]|0,f[c+4>>2]|0,e|0,((e|0)<0)<<31>>31|0)|0,I|0,i|0,g|0)|0)+(f[f[a>>2]>>2]|0)|0;g=h[g>>0]|h[g+1>>0]<<8|h[g+2>>0]<<16|h[g+3>>0]<<24;i=d;f[i>>2]=g&65535;f[i+4>>2]=0;i=d+8|0;f[i>>2]=g>>>16;f[i+4>>2]=0;i=d+16|0;f[i>>2]=0;f[i+4>>2]=0;i=1;return i|0}case 3:{i=f[c>>2]|0;e=a+48|0;g=f[e>>2]|0;e=f[e+4>>2]|0;c=a+40|0;a=(Ho(kn(f[c>>2]|0,f[c+4>>2]|0,i|0,((i|0)<0)<<31>>31|0)|0,I|0,g|0,e|0)|0)+(f[f[a>>2]>>2]|0)|0;e=a+2|0;e=h[e>>0]|h[e+1>>0]<<8;g=a+4|0;g=h[g>>0]|h[g+1>>0]<<8;i=d;f[i>>2]=(h[a>>0]|h[a+1>>0]<<8)&65535;f[i+4>>2]=0;i=d+8|0;f[i>>2]=e&65535;f[i+4>>2]=0;i=d+16|0;f[i>>2]=g&65535;f[i+4>>2]=0;i=1;return i|0}case 4:{i=f[c>>2]|0;g=a+48|0;e=f[g>>2]|0;g=f[g+4>>2]|0;c=a+40|0;g=(Ho(kn(f[c>>2]|0,f[c+4>>2]|0,i|0,((i|0)<0)<<31>>31|0)|0,I|0,e|0,g|0)|0)+(f[f[a>>2]>>2]|0)|0;e=g;e=h[e>>0]|h[e+1>>0]<<8|h[e+2>>0]<<16|h[e+3>>0]<<24;g=g+4|0;g=h[g>>0]|h[g+1>>0]<<8|h[g+2>>0]<<16|h[g+3>>0]<<24;i=d;f[i>>2]=e&65535;f[i+4>>2]=0;e=Tn(e|0,g|0,16)|0;i=d+8|0;f[i>>2]=e&65535;f[i+4>>2]=0;i=d+16|0;f[i>>2]=g&65535;f[i+4>>2]=0;i=1;return i|0}default:{i=0;return i|0}}return 0}function he(a,b,c,d){a=a|0;b=b|0;c=c|0;d=d|0;var e=0,g=0,h=0,i=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0;p=f[b>>2]|0;k=f[b+4>>2]|0;n=((f[c>>2]|0)-p<<3)+(f[c+4>>2]|0)-k|0;c=p;if((n|0)<=0){b=d+4|0;d=f[d>>2]|0;f[a>>2]=d;a=a+4|0;d=f[b>>2]|0;f[a>>2]=d;return}if(!k){l=d+4|0;e=f[l>>2]|0;g=n}else{i=32-k|0;m=(n|0)<(i|0)?n:i;i=-1>>>(i-m|0)&-1<>2];l=d+4|0;e=f[l>>2]|0;j=32-e|0;g=j>>>0>>0?j:m;h=f[d>>2]|0;e=f[h>>2]&~(-1>>>(j-g|0)&-1<>2]=e;j=f[l>>2]|0;f[h>>2]=(j>>>0>k>>>0?i<>>(k-j|0))|e;e=(f[l>>2]|0)+g|0;h=h+(e>>>5<<2)|0;f[d>>2]=h;e=e&31;f[l>>2]=e;j=m-g|0;if((j|0)>0){f[h>>2]=i>>>(k+g|0)|f[h>>2]&~(-1>>>(32-j|0));f[l>>2]=j;e=j}c=c+4|0;f[b>>2]=c;g=n-m|0}p=32-e|0;o=-1<>>0>31){n=~o;m=f[d>>2]|0;j=g+-32|0;h=j>>>5;i=h+1|0;h=j-(h<<5)|0;j=f[m>>2]|0;k=m;e=g;g=c;while(1){q=f[g>>2]|0;r=j&n;f[k>>2]=r;f[k>>2]=q<>2]|r;k=k+4|0;j=f[k>>2]&o|q>>>p;f[k>>2]=j;e=e+-32|0;if(e>>>0<=31)break;else g=g+4|0}c=c+(i<<2)|0;f[b>>2]=c;f[d>>2]=m+(i<<2)}else h=g;if(!h){q=l;r=f[d>>2]|0;f[a>>2]=r;r=a+4|0;q=f[q>>2]|0;f[r>>2]=q;return}i=f[c>>2]&-1>>>(32-h|0);g=(p|0)<(h|0)?p:h;e=f[d>>2]|0;c=f[e>>2]&~(-1<>2]&-1>>>(p-g|0));f[e>>2]=c;f[e>>2]=c|i<>2];c=(f[l>>2]|0)+g|0;e=e+(c>>>5<<2)|0;f[d>>2]=e;f[l>>2]=c&31;c=h-g|0;if((c|0)<=0){q=l;r=f[d>>2]|0;f[a>>2]=r;r=a+4|0;q=f[q>>2]|0;f[r>>2]=q;return}f[e>>2]=f[e>>2]&~(-1>>>(32-c|0))|i>>>g;f[l>>2]=c;q=l;r=f[d>>2]|0;f[a>>2]=r;r=a+4|0;q=f[q>>2]|0;f[r>>2]=q;return}function ie(a,c,d){a=a|0;c=c|0;d=d|0;var e=0,g=0,i=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0;p=u;u=u+16|0;n=p+4|0;m=p;i=c+8|0;k=i;e=f[k>>2]|0;k=f[k+4>>2]|0;l=c+16|0;j=l;g=f[j>>2]|0;j=f[j+4>>2]|0;q=Ho(g|0,j|0,4,0)|0;r=I;if((k|0)<(r|0)|(k|0)==(r|0)&e>>>0>>0)i=k;else{g=(f[c>>2]|0)+g|0;g=h[g>>0]|h[g+1>>0]<<8|h[g+2>>0]<<16|h[g+3>>0]<<24;b[a>>0]=g;b[a+1>>0]=g>>8;b[a+2>>0]=g>>16;b[a+3>>0]=g>>24;g=l;g=Ho(f[g>>2]|0,f[g+4>>2]|0,4,0)|0;j=I;e=l;f[e>>2]=g;f[e+4>>2]=j;e=i;i=f[e+4>>2]|0;e=f[e>>2]|0}k=a+4|0;r=Ho(g|0,j|0,4,0)|0;q=I;if((i|0)<(q|0)|(i|0)==(q|0)&e>>>0>>0)e=f[k>>2]|0;else{e=(f[c>>2]|0)+g|0;e=h[e>>0]|h[e+1>>0]<<8|h[e+2>>0]<<16|h[e+3>>0]<<24;b[k>>0]=e;b[k+1>>0]=e>>8;b[k+2>>0]=e>>16;b[k+3>>0]=e>>24;q=l;q=Ho(f[q>>2]|0,f[q+4>>2]|0,4,0)|0;r=l;f[r>>2]=q;f[r+4>>2]=I}if(!e){r=1;u=p;return r|0}else e=0;do{if(!(Ff(a+12+(e<<4)|0,c)|0)){e=0;o=14;break}e=e+1|0}while((e|0)<32);if((o|0)==14){u=p;return e|0}if(!(Ff(a+524|0,c)|0)){r=0;u=p;return r|0}if(!(Qf(a+540|0,c)|0)){r=0;u=p;return r|0}if(!(Qf(a+560|0,c)|0)){r=0;u=p;return r|0}if(!(Qf(a+580|0,c)|0)){r=0;u=p;return r|0}r=f[k>>2]|0;f[m>>2]=f[d>>2];f[n>>2]=f[m>>2];mb(a,r,n);r=1;u=p;return r|0}function je(a,c,d){a=a|0;c=c|0;d=d|0;var e=0,g=0,i=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0;p=u;u=u+16|0;n=p+4|0;m=p;i=c+8|0;k=i;e=f[k>>2]|0;k=f[k+4>>2]|0;l=c+16|0;j=l;g=f[j>>2]|0;j=f[j+4>>2]|0;q=Ho(g|0,j|0,4,0)|0;r=I;if((k|0)<(r|0)|(k|0)==(r|0)&e>>>0>>0)i=k;else{g=(f[c>>2]|0)+g|0;g=h[g>>0]|h[g+1>>0]<<8|h[g+2>>0]<<16|h[g+3>>0]<<24;b[a>>0]=g;b[a+1>>0]=g>>8;b[a+2>>0]=g>>16;b[a+3>>0]=g>>24;g=l;g=Ho(f[g>>2]|0,f[g+4>>2]|0,4,0)|0;j=I;e=l;f[e>>2]=g;f[e+4>>2]=j;e=i;i=f[e+4>>2]|0;e=f[e>>2]|0}k=a+4|0;r=Ho(g|0,j|0,4,0)|0;q=I;if((i|0)<(q|0)|(i|0)==(q|0)&e>>>0>>0)e=f[k>>2]|0;else{e=(f[c>>2]|0)+g|0;e=h[e>>0]|h[e+1>>0]<<8|h[e+2>>0]<<16|h[e+3>>0]<<24;b[k>>0]=e;b[k+1>>0]=e>>8;b[k+2>>0]=e>>16;b[k+3>>0]=e>>24;q=l;q=Ho(f[q>>2]|0,f[q+4>>2]|0,4,0)|0;r=l;f[r>>2]=q;f[r+4>>2]=I}if(!e){r=1;u=p;return r|0}else e=0;do{if(!(Ff(a+12+(e<<4)|0,c)|0)){e=0;o=14;break}e=e+1|0}while((e|0)<32);if((o|0)==14){u=p;return e|0}if(!(Ff(a+524|0,c)|0)){r=0;u=p;return r|0}if(!(Qf(a+540|0,c)|0)){r=0;u=p;return r|0}if(!(Qf(a+560|0,c)|0)){r=0;u=p;return r|0}if(!(Qf(a+580|0,c)|0)){r=0;u=p;return r|0}r=f[k>>2]|0;f[m>>2]=f[d>>2];f[n>>2]=f[m>>2];qb(a,r,n);r=1;u=p;return r|0}function ke(a,c,d){a=a|0;c=c|0;d=d|0;var e=0,g=0,i=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0;p=u;u=u+16|0;n=p+4|0;m=p;i=c+8|0;k=i;e=f[k>>2]|0;k=f[k+4>>2]|0;l=c+16|0;j=l;g=f[j>>2]|0;j=f[j+4>>2]|0;q=Ho(g|0,j|0,4,0)|0;r=I;if((k|0)<(r|0)|(k|0)==(r|0)&e>>>0>>0)i=k;else{g=(f[c>>2]|0)+g|0;g=h[g>>0]|h[g+1>>0]<<8|h[g+2>>0]<<16|h[g+3>>0]<<24;b[a>>0]=g;b[a+1>>0]=g>>8;b[a+2>>0]=g>>16;b[a+3>>0]=g>>24;g=l;g=Ho(f[g>>2]|0,f[g+4>>2]|0,4,0)|0;j=I;e=l;f[e>>2]=g;f[e+4>>2]=j;e=i;i=f[e+4>>2]|0;e=f[e>>2]|0}k=a+4|0;r=Ho(g|0,j|0,4,0)|0;q=I;if((i|0)<(q|0)|(i|0)==(q|0)&e>>>0>>0)e=f[k>>2]|0;else{e=(f[c>>2]|0)+g|0;e=h[e>>0]|h[e+1>>0]<<8|h[e+2>>0]<<16|h[e+3>>0]<<24;b[k>>0]=e;b[k+1>>0]=e>>8;b[k+2>>0]=e>>16;b[k+3>>0]=e>>24;q=l;q=Ho(f[q>>2]|0,f[q+4>>2]|0,4,0)|0;r=l;f[r>>2]=q;f[r+4>>2]=I}if(!e){r=1;u=p;return r|0}else e=0;do{if(!(Ff(a+12+(e<<4)|0,c)|0)){e=0;o=14;break}e=e+1|0}while((e|0)<32);if((o|0)==14){u=p;return e|0}if(!(Ff(a+524|0,c)|0)){r=0;u=p;return r|0}if(!(Qf(a+540|0,c)|0)){r=0;u=p;return r|0}if(!(Qf(a+560|0,c)|0)){r=0;u=p;return r|0}if(!(Qf(a+580|0,c)|0)){r=0;u=p;return r|0}r=f[k>>2]|0;f[m>>2]=f[d>>2];f[n>>2]=f[m>>2];ob(a,r,n);r=1;u=p;return r|0}function le(a){a=a|0;var c=0,d=0,e=0,g=0,h=0,i=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0;h=a+32|0;c=f[h>>2]|0;o=c+8|0;n=f[o+4>>2]|0;g=c+16|0;d=g;e=f[d>>2]|0;d=f[d+4>>2]|0;if(!((n|0)>(d|0)|((n|0)==(d|0)?(f[o>>2]|0)>>>0>e>>>0:0))){a=0;return a|0}n=b[(f[c>>2]|0)+e>>0]|0;m=Ho(e|0,d|0,1,0)|0;o=g;f[o>>2]=m;f[o+4>>2]=I;o=n&255;g=n<<24>>24==0;a:do if(!g){c=0;while(1){if(!(Wa[f[(f[a>>2]|0)+16>>2]&127](a,c)|0)){c=0;break}c=c+1|0;if((c|0)>=(o|0))break a}return c|0}while(0);n=a+8|0;c=f[n>>2]|0;d=f[a+12>>2]|0;b:do if((c|0)!=(d|0)){e=a+4|0;while(1){m=f[c>>2]|0;c=c+4|0;if(!(Na[f[(f[m>>2]|0)+8>>2]&31](m,a,f[e>>2]|0)|0)){c=0;break}if((c|0)==(d|0))break b}return c|0}while(0);if(!g){c=0;do{m=f[(f[n>>2]|0)+(c<<2)>>2]|0;c=c+1|0;if(!(Wa[f[(f[m>>2]|0)+12>>2]&127](m,f[h>>2]|0)|0)){c=0;i=26;break}}while((c|0)<(o|0));if((i|0)==26)return c|0;if(!g){i=a+20|0;h=a+24|0;l=0;do{j=f[(f[n>>2]|0)+(l<<2)>>2]|0;j=Sa[f[(f[j>>2]|0)+24>>2]&255](j)|0;if((j|0)>0){m=0;do{k=f[(f[n>>2]|0)+(l<<2)>>2]|0;k=Wa[f[(f[k>>2]|0)+20>>2]&127](k,m)|0;d=f[h>>2]|0;c=f[i>>2]|0;g=d-c>>2;do if(k>>>0>=g>>>0){e=k+1|0;if(e>>>0>g>>>0){ui(i,e-g|0);c=f[i>>2]|0;break}if(e>>>0>>0?(p=c+(e<<2)|0,(d|0)!=(p|0)):0)f[h>>2]=d+(~((d+-4-p|0)>>>2)<<2)}while(0);f[c+(k<<2)>>2]=l;m=m+1|0}while((m|0)!=(j|0))}l=l+1|0}while((l|0)!=(o|0))}}if(!(Sa[f[(f[a>>2]|0)+28>>2]&255](a)|0)){a=0;return a|0}a=Sa[f[(f[a>>2]|0)+32>>2]&255](a)|0;return a|0}function me(a,b,c,d,e,g){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;g=g|0;var h=0,i=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,v=0,w=0,x=0,y=0;x=u;u=u+16|0;v=x+4|0;t=x;w=a+60|0;f[a+64>>2]=g;s=a+8|0;f[s>>2]=e;i=a+32|0;h=a+36|0;g=f[h>>2]|0;d=f[i>>2]|0;j=g-d>>2;if(j>>>0>=e>>>0){if(j>>>0>e>>>0?(k=d+(e<<2)|0,(g|0)!=(k|0)):0)f[h>>2]=g+(~((g+-4-k|0)>>>2)<<2)}else ui(i,e-j|0);n=a+56|0;i=f[n>>2]|0;g=f[i+4>>2]|0;d=f[i>>2]|0;q=g-d|0;r=q>>2;if((q|0)<=0){u=x;return 1}p=a+16|0;m=a+32|0;q=a+12|0;o=a+20|0;h=0;while(1){if(g-d>>2>>>0<=h>>>0){Kp(i);d=f[i>>2]|0}f[t>>2]=f[d+(h<<2)>>2];f[v>>2]=f[t>>2];Pb(w,v,c,h);l=X(h,e)|0;k=b+(l<<2)|0;l=c+(l<<2)|0;if((f[s>>2]|0)>0){i=0;do{d=f[a+68+(i<<2)>>2]|0;g=f[p>>2]|0;if((d|0)>(g|0)){j=f[m>>2]|0;f[j+(i<<2)>>2]=g}else{g=f[q>>2]|0;j=f[m>>2]|0;f[j+(i<<2)>>2]=(d|0)<(g|0)?g:d}i=i+1|0;d=f[s>>2]|0}while((i|0)<(d|0));if((d|0)>0){i=0;do{d=(f[k+(i<<2)>>2]|0)+(f[j+(i<<2)>>2]|0)|0;g=l+(i<<2)|0;f[g>>2]=d;if((d|0)<=(f[p>>2]|0)){if((d|0)<(f[q>>2]|0)){d=(f[o>>2]|0)+d|0;y=22}}else{d=d-(f[o>>2]|0)|0;y=22}if((y|0)==22){y=0;f[g>>2]=d}i=i+1|0}while((i|0)<(f[s>>2]|0))}}h=h+1|0;if((h|0)>=(r|0))break;i=f[n>>2]|0;d=f[i>>2]|0;g=f[i+4>>2]|0}u=x;return 1}function ne(a,c){a=a|0;c=c|0;var d=0,e=0,g=0,i=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0;r=a+12|0;q=c+8|0;l=q;n=f[l>>2]|0;l=f[l+4>>2]|0;s=c+16|0;o=s;d=f[o>>2]|0;o=Ho(d|0,f[o+4>>2]|0,4,0)|0;m=I;if((l|0)<(m|0)|(l|0)==(m|0)&n>>>0>>0){a=0;return a|0}d=(f[c>>2]|0)+d|0;d=h[d>>0]|h[d+1>>0]<<8|h[d+2>>0]<<16|h[d+3>>0]<<24;b[r>>0]=d;b[r+1>>0]=d>>8;b[r+2>>0]=d>>16;b[r+3>>0]=d>>24;g=s;g=Ho(f[g>>2]|0,f[g+4>>2]|0,4,0)|0;i=s;f[i>>2]=g;f[i+4>>2]=I;i=a+4|0;g=f[i>>2]|0;e=f[a>>2]|0;j=g-e>>2;if(d>>>0<=j>>>0){if(d>>>0>>0?(k=e+(d<<2)|0,(g|0)!=(k|0)):0)f[i>>2]=g+(~((g+-4-k|0)>>>2)<<2)}else{ui(a,d-j|0);d=f[r>>2]|0}if(!d){a=1;return a|0}o=0;a:while(1){m=q;l=f[m>>2]|0;m=f[m+4>>2]|0;g=s;e=f[g>>2]|0;g=f[g+4>>2]|0;if(!((m|0)>(g|0)|(m|0)==(g|0)&l>>>0>e>>>0)){d=0;p=18;break}n=f[c>>2]|0;i=b[n+e>>0]|0;g=Ho(e|0,g|0,1,0)|0;e=I;j=s;f[j>>2]=g;f[j+4>>2]=e;j=i&255;k=j&3;j=j>>>2;switch(i&3){case 3:{e=j+o|0;if(e>>>0>=d>>>0){d=0;p=18;break a}ej((f[a>>2]|0)+(o<<2)|0,0,(j<<2)+4|0)|0;d=e;break}case 0:{d=j;p=15;break}default:{i=0;d=j;while(1){if(!((m|0)>(e|0)|(m|0)==(e|0)&l>>>0>g>>>0)){d=0;p=18;break a}p=b[n+g>>0]|0;g=Ho(g|0,e|0,1,0)|0;e=I;j=s;f[j>>2]=g;f[j+4>>2]=e;d=(p&255)<<(i<<3|6)|d;i=i+1|0;if((i|0)>=(k|0)){p=15;break}}}}if((p|0)==15){p=0;f[(f[a>>2]|0)+(o<<2)>>2]=d;d=o}o=d+1|0;d=f[r>>2]|0;if(o>>>0>=d>>>0){p=17;break}}if((p|0)==17){a=th(a+16|0,f[a>>2]|0,d)|0;return a|0}else if((p|0)==18)return d|0;return 0}function oe(a,c){a=a|0;c=c|0;var d=0,e=0,g=0,i=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0;r=a+12|0;q=c+8|0;l=q;n=f[l>>2]|0;l=f[l+4>>2]|0;s=c+16|0;o=s;d=f[o>>2]|0;o=Ho(d|0,f[o+4>>2]|0,4,0)|0;m=I;if((l|0)<(m|0)|(l|0)==(m|0)&n>>>0>>0){a=0;return a|0}d=(f[c>>2]|0)+d|0;d=h[d>>0]|h[d+1>>0]<<8|h[d+2>>0]<<16|h[d+3>>0]<<24;b[r>>0]=d;b[r+1>>0]=d>>8;b[r+2>>0]=d>>16;b[r+3>>0]=d>>24;g=s;g=Ho(f[g>>2]|0,f[g+4>>2]|0,4,0)|0;i=s;f[i>>2]=g;f[i+4>>2]=I;i=a+4|0;g=f[i>>2]|0;e=f[a>>2]|0;j=g-e>>2;if(d>>>0<=j>>>0){if(d>>>0>>0?(k=e+(d<<2)|0,(g|0)!=(k|0)):0)f[i>>2]=g+(~((g+-4-k|0)>>>2)<<2)}else{ui(a,d-j|0);d=f[r>>2]|0}if(!d){a=1;return a|0}o=0;a:while(1){m=q;l=f[m>>2]|0;m=f[m+4>>2]|0;g=s;e=f[g>>2]|0;g=f[g+4>>2]|0;if(!((m|0)>(g|0)|(m|0)==(g|0)&l>>>0>e>>>0)){d=0;p=18;break}n=f[c>>2]|0;i=b[n+e>>0]|0;g=Ho(e|0,g|0,1,0)|0;e=I;j=s;f[j>>2]=g;f[j+4>>2]=e;j=i&255;k=j&3;j=j>>>2;switch(i&3){case 3:{e=j+o|0;if(e>>>0>=d>>>0){d=0;p=18;break a}ej((f[a>>2]|0)+(o<<2)|0,0,(j<<2)+4|0)|0;d=e;break}case 0:{d=j;p=15;break}default:{i=0;d=j;while(1){if(!((m|0)>(e|0)|(m|0)==(e|0)&l>>>0>g>>>0)){d=0;p=18;break a}p=b[n+g>>0]|0;g=Ho(g|0,e|0,1,0)|0;e=I;j=s;f[j>>2]=g;f[j+4>>2]=e;d=(p&255)<<(i<<3|6)|d;i=i+1|0;if((i|0)>=(k|0)){p=15;break}}}}if((p|0)==15){p=0;f[(f[a>>2]|0)+(o<<2)>>2]=d;d=o}o=d+1|0;d=f[r>>2]|0;if(o>>>0>=d>>>0){p=17;break}}if((p|0)==17){a=wh(a+16|0,f[a>>2]|0,d)|0;return a|0}else if((p|0)==18)return d|0;return 0}function pe(a,c){a=a|0;c=c|0;var d=0,e=0,g=0,i=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0;r=a+12|0;q=c+8|0;l=q;n=f[l>>2]|0;l=f[l+4>>2]|0;s=c+16|0;o=s;d=f[o>>2]|0;o=Ho(d|0,f[o+4>>2]|0,4,0)|0;m=I;if((l|0)<(m|0)|(l|0)==(m|0)&n>>>0>>0){a=0;return a|0}d=(f[c>>2]|0)+d|0;d=h[d>>0]|h[d+1>>0]<<8|h[d+2>>0]<<16|h[d+3>>0]<<24;b[r>>0]=d;b[r+1>>0]=d>>8;b[r+2>>0]=d>>16;b[r+3>>0]=d>>24;g=s;g=Ho(f[g>>2]|0,f[g+4>>2]|0,4,0)|0;i=s;f[i>>2]=g;f[i+4>>2]=I;i=a+4|0;g=f[i>>2]|0;e=f[a>>2]|0;j=g-e>>2;if(d>>>0<=j>>>0){if(d>>>0>>0?(k=e+(d<<2)|0,(g|0)!=(k|0)):0)f[i>>2]=g+(~((g+-4-k|0)>>>2)<<2)}else{ui(a,d-j|0);d=f[r>>2]|0}if(!d){a=1;return a|0}o=0;a:while(1){m=q;l=f[m>>2]|0;m=f[m+4>>2]|0;g=s;e=f[g>>2]|0;g=f[g+4>>2]|0;if(!((m|0)>(g|0)|(m|0)==(g|0)&l>>>0>e>>>0)){d=0;p=18;break}n=f[c>>2]|0;i=b[n+e>>0]|0;g=Ho(e|0,g|0,1,0)|0;e=I;j=s;f[j>>2]=g;f[j+4>>2]=e;j=i&255;k=j&3;j=j>>>2;switch(i&3){case 3:{e=j+o|0;if(e>>>0>=d>>>0){d=0;p=18;break a}ej((f[a>>2]|0)+(o<<2)|0,0,(j<<2)+4|0)|0;d=e;break}case 0:{d=j;p=15;break}default:{i=0;d=j;while(1){if(!((m|0)>(e|0)|(m|0)==(e|0)&l>>>0>g>>>0)){d=0;p=18;break a}p=b[n+g>>0]|0;g=Ho(g|0,e|0,1,0)|0;e=I;j=s;f[j>>2]=g;f[j+4>>2]=e;d=(p&255)<<(i<<3|6)|d;i=i+1|0;if((i|0)>=(k|0)){p=15;break}}}}if((p|0)==15){p=0;f[(f[a>>2]|0)+(o<<2)>>2]=d;d=o}o=d+1|0;d=f[r>>2]|0;if(o>>>0>=d>>>0){p=17;break}}if((p|0)==17){a=xh(a+16|0,f[a>>2]|0,d)|0;return a|0}else if((p|0)==18)return d|0;return 0}function qe(a,c){a=a|0;c=c|0;var d=0,e=0,g=0,i=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0;r=a+12|0;q=c+8|0;l=q;n=f[l>>2]|0;l=f[l+4>>2]|0;s=c+16|0;o=s;d=f[o>>2]|0;o=Ho(d|0,f[o+4>>2]|0,4,0)|0;m=I;if((l|0)<(m|0)|(l|0)==(m|0)&n>>>0>>0){a=0;return a|0}d=(f[c>>2]|0)+d|0;d=h[d>>0]|h[d+1>>0]<<8|h[d+2>>0]<<16|h[d+3>>0]<<24;b[r>>0]=d;b[r+1>>0]=d>>8;b[r+2>>0]=d>>16;b[r+3>>0]=d>>24;g=s;g=Ho(f[g>>2]|0,f[g+4>>2]|0,4,0)|0;i=s;f[i>>2]=g;f[i+4>>2]=I;i=a+4|0;g=f[i>>2]|0;e=f[a>>2]|0;j=g-e>>2;if(d>>>0<=j>>>0){if(d>>>0>>0?(k=e+(d<<2)|0,(g|0)!=(k|0)):0)f[i>>2]=g+(~((g+-4-k|0)>>>2)<<2)}else{ui(a,d-j|0);d=f[r>>2]|0}if(!d){a=1;return a|0}o=0;a:while(1){m=q;l=f[m>>2]|0;m=f[m+4>>2]|0;g=s;e=f[g>>2]|0;g=f[g+4>>2]|0;if(!((m|0)>(g|0)|(m|0)==(g|0)&l>>>0>e>>>0)){d=0;p=18;break}n=f[c>>2]|0;i=b[n+e>>0]|0;g=Ho(e|0,g|0,1,0)|0;e=I;j=s;f[j>>2]=g;f[j+4>>2]=e;j=i&255;k=j&3;j=j>>>2;switch(i&3){case 3:{e=j+o|0;if(e>>>0>=d>>>0){d=0;p=18;break a}ej((f[a>>2]|0)+(o<<2)|0,0,(j<<2)+4|0)|0;d=e;break}case 0:{d=j;p=15;break}default:{i=0;d=j;while(1){if(!((m|0)>(e|0)|(m|0)==(e|0)&l>>>0>g>>>0)){d=0;p=18;break a}p=b[n+g>>0]|0;g=Ho(g|0,e|0,1,0)|0;e=I;j=s;f[j>>2]=g;f[j+4>>2]=e;d=(p&255)<<(i<<3|6)|d;i=i+1|0;if((i|0)>=(k|0)){p=15;break}}}}if((p|0)==15){p=0;f[(f[a>>2]|0)+(o<<2)>>2]=d;d=o}o=d+1|0;d=f[r>>2]|0;if(o>>>0>=d>>>0){p=17;break}}if((p|0)==17){a=yh(a+16|0,f[a>>2]|0,d)|0;return a|0}else if((p|0)==18)return d|0;return 0}function re(a,c){a=a|0;c=c|0;var d=0,e=0,g=0,i=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0;r=a+12|0;q=c+8|0;l=q;n=f[l>>2]|0;l=f[l+4>>2]|0;s=c+16|0;o=s;d=f[o>>2]|0;o=Ho(d|0,f[o+4>>2]|0,4,0)|0;m=I;if((l|0)<(m|0)|(l|0)==(m|0)&n>>>0>>0){a=0;return a|0}d=(f[c>>2]|0)+d|0;d=h[d>>0]|h[d+1>>0]<<8|h[d+2>>0]<<16|h[d+3>>0]<<24;b[r>>0]=d;b[r+1>>0]=d>>8;b[r+2>>0]=d>>16;b[r+3>>0]=d>>24;g=s;g=Ho(f[g>>2]|0,f[g+4>>2]|0,4,0)|0;i=s;f[i>>2]=g;f[i+4>>2]=I;i=a+4|0;g=f[i>>2]|0;e=f[a>>2]|0;j=g-e>>2;if(d>>>0<=j>>>0){if(d>>>0>>0?(k=e+(d<<2)|0,(g|0)!=(k|0)):0)f[i>>2]=g+(~((g+-4-k|0)>>>2)<<2)}else{ui(a,d-j|0);d=f[r>>2]|0}if(!d){a=1;return a|0}o=0;a:while(1){m=q;l=f[m>>2]|0;m=f[m+4>>2]|0;g=s;e=f[g>>2]|0;g=f[g+4>>2]|0;if(!((m|0)>(g|0)|(m|0)==(g|0)&l>>>0>e>>>0)){d=0;p=18;break}n=f[c>>2]|0;i=b[n+e>>0]|0;g=Ho(e|0,g|0,1,0)|0;e=I;j=s;f[j>>2]=g;f[j+4>>2]=e;j=i&255;k=j&3;j=j>>>2;switch(i&3){case 3:{e=j+o|0;if(e>>>0>=d>>>0){d=0;p=18;break a}ej((f[a>>2]|0)+(o<<2)|0,0,(j<<2)+4|0)|0;d=e;break}case 0:{d=j;p=15;break}default:{i=0;d=j;while(1){if(!((m|0)>(e|0)|(m|0)==(e|0)&l>>>0>g>>>0)){d=0;p=18;break a}p=b[n+g>>0]|0;g=Ho(g|0,e|0,1,0)|0;e=I;j=s;f[j>>2]=g;f[j+4>>2]=e;d=(p&255)<<(i<<3|6)|d;i=i+1|0;if((i|0)>=(k|0)){p=15;break}}}}if((p|0)==15){p=0;f[(f[a>>2]|0)+(o<<2)>>2]=d;d=o}o=d+1|0;d=f[r>>2]|0;if(o>>>0>=d>>>0){p=17;break}}if((p|0)==17){a=zh(a+16|0,f[a>>2]|0,d)|0;return a|0}else if((p|0)==18)return d|0;return 0}function se(a,c){a=a|0;c=c|0;var d=0,e=0,g=0,i=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0;r=a+12|0;q=c+8|0;l=q;n=f[l>>2]|0;l=f[l+4>>2]|0;s=c+16|0;o=s;d=f[o>>2]|0;o=Ho(d|0,f[o+4>>2]|0,4,0)|0;m=I;if((l|0)<(m|0)|(l|0)==(m|0)&n>>>0>>0){a=0;return a|0}d=(f[c>>2]|0)+d|0;d=h[d>>0]|h[d+1>>0]<<8|h[d+2>>0]<<16|h[d+3>>0]<<24;b[r>>0]=d;b[r+1>>0]=d>>8;b[r+2>>0]=d>>16;b[r+3>>0]=d>>24;g=s;g=Ho(f[g>>2]|0,f[g+4>>2]|0,4,0)|0;i=s;f[i>>2]=g;f[i+4>>2]=I;i=a+4|0;g=f[i>>2]|0;e=f[a>>2]|0;j=g-e>>2;if(d>>>0<=j>>>0){if(d>>>0>>0?(k=e+(d<<2)|0,(g|0)!=(k|0)):0)f[i>>2]=g+(~((g+-4-k|0)>>>2)<<2)}else{ui(a,d-j|0);d=f[r>>2]|0}if(!d){a=1;return a|0}o=0;a:while(1){m=q;l=f[m>>2]|0;m=f[m+4>>2]|0;g=s;e=f[g>>2]|0;g=f[g+4>>2]|0;if(!((m|0)>(g|0)|(m|0)==(g|0)&l>>>0>e>>>0)){d=0;p=18;break}n=f[c>>2]|0;i=b[n+e>>0]|0;g=Ho(e|0,g|0,1,0)|0;e=I;j=s;f[j>>2]=g;f[j+4>>2]=e;j=i&255;k=j&3;j=j>>>2;switch(i&3){case 3:{e=j+o|0;if(e>>>0>=d>>>0){d=0;p=18;break a}ej((f[a>>2]|0)+(o<<2)|0,0,(j<<2)+4|0)|0;d=e;break}case 0:{d=j;p=15;break}default:{i=0;d=j;while(1){if(!((m|0)>(e|0)|(m|0)==(e|0)&l>>>0>g>>>0)){d=0;p=18;break a}p=b[n+g>>0]|0;g=Ho(g|0,e|0,1,0)|0;e=I;j=s;f[j>>2]=g;f[j+4>>2]=e;d=(p&255)<<(i<<3|6)|d;i=i+1|0;if((i|0)>=(k|0)){p=15;break}}}}if((p|0)==15){p=0;f[(f[a>>2]|0)+(o<<2)>>2]=d;d=o}o=d+1|0;d=f[r>>2]|0;if(o>>>0>=d>>>0){p=17;break}}if((p|0)==17){a=Bh(a+16|0,f[a>>2]|0,d)|0;return a|0}else if((p|0)==18)return d|0;return 0}function te(a,c){a=a|0;c=c|0;var d=0,e=0,g=0,i=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0;r=a+12|0;q=c+8|0;l=q;n=f[l>>2]|0;l=f[l+4>>2]|0;s=c+16|0;o=s;d=f[o>>2]|0;o=Ho(d|0,f[o+4>>2]|0,4,0)|0;m=I;if((l|0)<(m|0)|(l|0)==(m|0)&n>>>0>>0){a=0;return a|0}d=(f[c>>2]|0)+d|0;d=h[d>>0]|h[d+1>>0]<<8|h[d+2>>0]<<16|h[d+3>>0]<<24;b[r>>0]=d;b[r+1>>0]=d>>8;b[r+2>>0]=d>>16;b[r+3>>0]=d>>24;g=s;g=Ho(f[g>>2]|0,f[g+4>>2]|0,4,0)|0;i=s;f[i>>2]=g;f[i+4>>2]=I;i=a+4|0;g=f[i>>2]|0;e=f[a>>2]|0;j=g-e>>2;if(d>>>0<=j>>>0){if(d>>>0>>0?(k=e+(d<<2)|0,(g|0)!=(k|0)):0)f[i>>2]=g+(~((g+-4-k|0)>>>2)<<2)}else{ui(a,d-j|0);d=f[r>>2]|0}if(!d){a=1;return a|0}o=0;a:while(1){m=q;l=f[m>>2]|0;m=f[m+4>>2]|0;g=s;e=f[g>>2]|0;g=f[g+4>>2]|0;if(!((m|0)>(g|0)|(m|0)==(g|0)&l>>>0>e>>>0)){d=0;p=18;break}n=f[c>>2]|0;i=b[n+e>>0]|0;g=Ho(e|0,g|0,1,0)|0;e=I;j=s;f[j>>2]=g;f[j+4>>2]=e;j=i&255;k=j&3;j=j>>>2;switch(i&3){case 3:{e=j+o|0;if(e>>>0>=d>>>0){d=0;p=18;break a}ej((f[a>>2]|0)+(o<<2)|0,0,(j<<2)+4|0)|0;d=e;break}case 0:{d=j;p=15;break}default:{i=0;d=j;while(1){if(!((m|0)>(e|0)|(m|0)==(e|0)&l>>>0>g>>>0)){d=0;p=18;break a}p=b[n+g>>0]|0;g=Ho(g|0,e|0,1,0)|0;e=I;j=s;f[j>>2]=g;f[j+4>>2]=e;d=(p&255)<<(i<<3|6)|d;i=i+1|0;if((i|0)>=(k|0)){p=15;break}}}}if((p|0)==15){p=0;f[(f[a>>2]|0)+(o<<2)>>2]=d;d=o}o=d+1|0;d=f[r>>2]|0;if(o>>>0>=d>>>0){p=17;break}}if((p|0)==17){a=Ch(a+16|0,f[a>>2]|0,d)|0;return a|0}else if((p|0)==18)return d|0;return 0}function ue(a,c,d){a=a|0;c=c|0;d=d|0;var e=0,g=0,i=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0;p=u;u=u+16|0;n=p+8|0;m=p;i=c+8|0;k=i;e=f[k>>2]|0;k=f[k+4>>2]|0;l=c+16|0;j=l;g=f[j>>2]|0;j=f[j+4>>2]|0;q=Ho(g|0,j|0,4,0)|0;r=I;if((k|0)<(r|0)|(k|0)==(r|0)&e>>>0>>0)i=k;else{g=(f[c>>2]|0)+g|0;g=h[g>>0]|h[g+1>>0]<<8|h[g+2>>0]<<16|h[g+3>>0]<<24;b[a>>0]=g;b[a+1>>0]=g>>8;b[a+2>>0]=g>>16;b[a+3>>0]=g>>24;g=l;g=Ho(f[g>>2]|0,f[g+4>>2]|0,4,0)|0;j=I;e=l;f[e>>2]=g;f[e+4>>2]=j;e=i;i=f[e+4>>2]|0;e=f[e>>2]|0}k=a+4|0;r=Ho(g|0,j|0,4,0)|0;q=I;if((i|0)<(q|0)|(i|0)==(q|0)&e>>>0>>0)e=f[k>>2]|0;else{e=(f[c>>2]|0)+g|0;e=h[e>>0]|h[e+1>>0]<<8|h[e+2>>0]<<16|h[e+3>>0]<<24;b[k>>0]=e;b[k+1>>0]=e>>8;b[k+2>>0]=e>>16;b[k+3>>0]=e>>24;q=l;q=Ho(f[q>>2]|0,f[q+4>>2]|0,4,0)|0;r=l;f[r>>2]=q;f[r+4>>2]=I}if(!e){r=1;u=p;return r|0}else e=0;do{if(!(Ff(a+12+(e<<4)|0,c)|0)){e=0;o=14;break}e=e+1|0}while((e|0)<32);if((o|0)==14){u=p;return e|0}if(!(Ff(a+524|0,c)|0)){r=0;u=p;return r|0}if(!(Qf(a+540|0,c)|0)){r=0;u=p;return r|0}if(!(Qf(a+560|0,c)|0)){r=0;u=p;return r|0}if(!(Qf(a+580|0,c)|0)){r=0;u=p;return r|0}r=f[k>>2]|0;o=f[d+4>>2]|0;q=m;f[q>>2]=f[d>>2];f[q+4>>2]=o;f[n>>2]=f[m>>2];f[n+4>>2]=f[m+4>>2];kb(a,r,n);r=1;u=p;return r|0}function ve(a,c,d){a=a|0;c=c|0;d=d|0;var e=0,g=0,i=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0;p=u;u=u+16|0;n=p+8|0;m=p;i=c+8|0;k=i;e=f[k>>2]|0;k=f[k+4>>2]|0;l=c+16|0;j=l;g=f[j>>2]|0;j=f[j+4>>2]|0;q=Ho(g|0,j|0,4,0)|0;r=I;if((k|0)<(r|0)|(k|0)==(r|0)&e>>>0>>0)i=k;else{g=(f[c>>2]|0)+g|0;g=h[g>>0]|h[g+1>>0]<<8|h[g+2>>0]<<16|h[g+3>>0]<<24;b[a>>0]=g;b[a+1>>0]=g>>8;b[a+2>>0]=g>>16;b[a+3>>0]=g>>24;g=l;g=Ho(f[g>>2]|0,f[g+4>>2]|0,4,0)|0;j=I;e=l;f[e>>2]=g;f[e+4>>2]=j;e=i;i=f[e+4>>2]|0;e=f[e>>2]|0}k=a+4|0;r=Ho(g|0,j|0,4,0)|0;q=I;if((i|0)<(q|0)|(i|0)==(q|0)&e>>>0>>0)e=f[k>>2]|0;else{e=(f[c>>2]|0)+g|0;e=h[e>>0]|h[e+1>>0]<<8|h[e+2>>0]<<16|h[e+3>>0]<<24;b[k>>0]=e;b[k+1>>0]=e>>8;b[k+2>>0]=e>>16;b[k+3>>0]=e>>24;q=l;q=Ho(f[q>>2]|0,f[q+4>>2]|0,4,0)|0;r=l;f[r>>2]=q;f[r+4>>2]=I}if(!e){r=1;u=p;return r|0}else e=0;do{if(!(Ff(a+12+(e<<4)|0,c)|0)){e=0;o=14;break}e=e+1|0}while((e|0)<32);if((o|0)==14){u=p;return e|0}if(!(Ff(a+524|0,c)|0)){r=0;u=p;return r|0}if(!(Qf(a+540|0,c)|0)){r=0;u=p;return r|0}if(!(Qf(a+560|0,c)|0)){r=0;u=p;return r|0}if(!(Qf(a+580|0,c)|0)){r=0;u=p;return r|0}r=f[k>>2]|0;o=f[d+4>>2]|0;q=m;f[q>>2]=f[d>>2];f[q+4>>2]=o;f[n>>2]=f[m>>2];f[n+4>>2]=f[m+4>>2];nb(a,r,n);r=1;u=p;return r|0}function we(a,c,d){a=a|0;c=c|0;d=d|0;var e=0,g=0,i=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0;p=u;u=u+16|0;n=p+8|0;m=p;i=c+8|0;k=i;e=f[k>>2]|0;k=f[k+4>>2]|0;l=c+16|0;j=l;g=f[j>>2]|0;j=f[j+4>>2]|0;q=Ho(g|0,j|0,4,0)|0;r=I;if((k|0)<(r|0)|(k|0)==(r|0)&e>>>0>>0)i=k;else{g=(f[c>>2]|0)+g|0;g=h[g>>0]|h[g+1>>0]<<8|h[g+2>>0]<<16|h[g+3>>0]<<24;b[a>>0]=g;b[a+1>>0]=g>>8;b[a+2>>0]=g>>16;b[a+3>>0]=g>>24;g=l;g=Ho(f[g>>2]|0,f[g+4>>2]|0,4,0)|0;j=I;e=l;f[e>>2]=g;f[e+4>>2]=j;e=i;i=f[e+4>>2]|0;e=f[e>>2]|0}k=a+4|0;r=Ho(g|0,j|0,4,0)|0;q=I;if((i|0)<(q|0)|(i|0)==(q|0)&e>>>0>>0)e=f[k>>2]|0;else{e=(f[c>>2]|0)+g|0;e=h[e>>0]|h[e+1>>0]<<8|h[e+2>>0]<<16|h[e+3>>0]<<24;b[k>>0]=e;b[k+1>>0]=e>>8;b[k+2>>0]=e>>16;b[k+3>>0]=e>>24;q=l;q=Ho(f[q>>2]|0,f[q+4>>2]|0,4,0)|0;r=l;f[r>>2]=q;f[r+4>>2]=I}if(!e){r=1;u=p;return r|0}else e=0;do{if(!(Ff(a+12+(e<<4)|0,c)|0)){e=0;o=14;break}e=e+1|0}while((e|0)<32);if((o|0)==14){u=p;return e|0}if(!(Ff(a+524|0,c)|0)){r=0;u=p;return r|0}if(!(Qf(a+540|0,c)|0)){r=0;u=p;return r|0}if(!(Qf(a+560|0,c)|0)){r=0;u=p;return r|0}if(!(Qf(a+580|0,c)|0)){r=0;u=p;return r|0}r=f[k>>2]|0;o=f[d+4>>2]|0;q=m;f[q>>2]=f[d>>2];f[q+4>>2]=o;f[n>>2]=f[m>>2];f[n+4>>2]=f[m+4>>2];lb(a,r,n);r=1;u=p;return r|0}function xe(a,c,d){a=a|0;c=c|0;d=d|0;var e=0,g=0,i=0;switch(b[a+24>>0]|0){case 1:{g=f[c>>2]|0;e=a+48|0;c=f[e>>2]|0;e=f[e+4>>2]|0;i=a+40|0;e=Ho(kn(f[i>>2]|0,f[i+4>>2]|0,g|0,((g|0)<0)<<31>>31|0)|0,I|0,c|0,e|0)|0;c=d;f[c>>2]=h[(f[f[a>>2]>>2]|0)+e>>0];f[c+4>>2]=0;a=d+8|0;f[a>>2]=0;f[a+4>>2]=0;f[a+8>>2]=0;f[a+12>>2]=0;f[a+16>>2]=0;f[a+20>>2]=0;a=1;return a|0}case 2:{e=f[c>>2]|0;g=a+48|0;i=f[g>>2]|0;g=f[g+4>>2]|0;c=a+40|0;g=(Ho(kn(f[c>>2]|0,f[c+4>>2]|0,e|0,((e|0)<0)<<31>>31|0)|0,I|0,i|0,g|0)|0)+(f[f[a>>2]>>2]|0)|0;g=h[g>>0]|h[g+1>>0]<<8;i=d;f[i>>2]=g&255;f[i+4>>2]=0;i=d+8|0;f[i>>2]=(g&65535)>>>8&65535;f[i+4>>2]=0;i=d+16|0;f[i>>2]=0;f[i+4>>2]=0;f[i+8>>2]=0;f[i+12>>2]=0;i=1;return i|0}case 3:{i=f[c>>2]|0;e=a+48|0;g=f[e>>2]|0;e=f[e+4>>2]|0;c=a+40|0;a=(Ho(kn(f[c>>2]|0,f[c+4>>2]|0,i|0,((i|0)<0)<<31>>31|0)|0,I|0,g|0,e|0)|0)+(f[f[a>>2]>>2]|0)|0;e=b[a+1>>0]|0;g=b[a+2>>0]|0;i=d;f[i>>2]=h[a>>0];f[i+4>>2]=0;i=d+8|0;f[i>>2]=e&255;f[i+4>>2]=0;i=d+16|0;f[i>>2]=g&255;f[i+4>>2]=0;i=d+24|0;f[i>>2]=0;f[i+4>>2]=0;i=1;return i|0}case 4:{e=f[c>>2]|0;g=a+48|0;i=f[g>>2]|0;g=f[g+4>>2]|0;c=a+40|0;g=(Ho(kn(f[c>>2]|0,f[c+4>>2]|0,e|0,((e|0)<0)<<31>>31|0)|0,I|0,i|0,g|0)|0)+(f[f[a>>2]>>2]|0)|0;g=h[g>>0]|h[g+1>>0]<<8|h[g+2>>0]<<16|h[g+3>>0]<<24;i=d;f[i>>2]=g&255;f[i+4>>2]=0;i=d+8|0;f[i>>2]=g>>>8&255;f[i+4>>2]=0;i=d+16|0;f[i>>2]=g>>>16&255;f[i+4>>2]=0;i=d+24|0;f[i>>2]=g>>>24;f[i+4>>2]=0;i=1;return i|0}default:{i=0;return i|0}}return 0}function ye(a,c,d){a=a|0;c=c|0;d=d|0;var e=0,g=0,i=0;switch(b[a+24>>0]|0){case 1:{g=f[c>>2]|0;c=a+48|0;e=f[c>>2]|0;c=f[c+4>>2]|0;i=a+40|0;a=(Ho(kn(f[i>>2]|0,f[i+4>>2]|0,g|0,((g|0)<0)<<31>>31|0)|0,I|0,e|0,c|0)|0)+(f[f[a>>2]>>2]|0)|0;a=h[a>>0]|h[a+1>>0]<<8|h[a+2>>0]<<16|h[a+3>>0]<<24;c=d;f[c>>2]=a;f[c+4>>2]=((a|0)<0)<<31>>31;c=0;a=0;break}case 2:{i=f[c>>2]|0;c=a+48|0;g=f[c>>2]|0;c=f[c+4>>2]|0;e=a+40|0;c=(Ho(kn(f[e>>2]|0,f[e+4>>2]|0,i|0,((i|0)<0)<<31>>31|0)|0,I|0,g|0,c|0)|0)+(f[f[a>>2]>>2]|0)|0;a=c;a=h[a>>0]|h[a+1>>0]<<8|h[a+2>>0]<<16|h[a+3>>0]<<24;c=c+4|0;c=h[c>>0]|h[c+1>>0]<<8|h[c+2>>0]<<16|h[c+3>>0]<<24;g=An(0,a|0,32)|0;i=d;f[i>>2]=g;f[i+4>>2]=I;c=An(a|0,c|0,32)|0;a=I;break}case 3:{g=f[c>>2]|0;i=a+48|0;c=f[i>>2]|0;i=f[i+4>>2]|0;e=a+40|0;a=(Ho(kn(f[e>>2]|0,f[e+4>>2]|0,g|0,((g|0)<0)<<31>>31|0)|0,I|0,c|0,i|0)|0)+(f[f[a>>2]>>2]|0)|0;i=h[a>>0]|h[a+1>>0]<<8|h[a+2>>0]<<16|h[a+3>>0]<<24;a=a+4|0;a=h[a>>0]|h[a+1>>0]<<8|h[a+2>>0]<<16|h[a+3>>0]<<24;c=d;f[c>>2]=i;f[c+4>>2]=((i|0)<0)<<31>>31;c=a;a=((a|0)<0)<<31>>31;break}case 4:{g=f[c>>2]|0;i=a+48|0;c=f[i>>2]|0;i=f[i+4>>2]|0;e=a+40|0;a=(Ho(kn(f[e>>2]|0,f[e+4>>2]|0,g|0,((g|0)<0)<<31>>31|0)|0,I|0,c|0,i|0)|0)+(f[f[a>>2]>>2]|0)|0;i=h[a>>0]|h[a+1>>0]<<8|h[a+2>>0]<<16|h[a+3>>0]<<24;a=a+4|0;a=h[a>>0]|h[a+1>>0]<<8|h[a+2>>0]<<16|h[a+3>>0]<<24;c=d;f[c>>2]=i;f[c+4>>2]=((i|0)<0)<<31>>31;c=a;a=((a|0)<0)<<31>>31;break}default:{i=0;return i|0}}i=d+8|0;f[i>>2]=c;f[i+4>>2]=a;i=1;return i|0}function ze(a,b,c,d){a=a|0;b=b|0;c=c|0;d=d|0;var e=0,g=0,h=0,i=0,j=0,k=0,l=0,m=0,n=0;m=f[b>>2]|0;k=b+4|0;e=f[k>>2]|0;h=((f[c>>2]|0)-m<<3)+(f[c+4>>2]|0)-e|0;c=m;if((h|0)<=0){b=d+4|0;d=f[d>>2]|0;f[a>>2]=d;a=a+4|0;d=f[b>>2]|0;f[a>>2]=d;return}if(!e){l=d+4|0;e=f[l>>2]|0}else{i=32-e|0;m=(h|0)<(i|0)?h:i;i=-1>>>(i-m|0)&-1<>2];l=d+4|0;c=f[l>>2]|0;j=32-c|0;e=j>>>0>>0?j:m;g=f[d>>2]|0;c=f[g>>2]&~(-1>>>(j-e|0)&-1<>2]=c;j=f[l>>2]|0;n=f[k>>2]|0;f[g>>2]=(j>>>0>n>>>0?i<>>(n-j|0))|c;c=(f[l>>2]|0)+e|0;g=g+(c>>>5<<2)|0;f[d>>2]=g;c=c&31;f[l>>2]=c;j=m-e|0;if((j|0)>0){c=f[g>>2]&~(-1>>>(32-j|0));f[g>>2]=c;f[g>>2]=i>>>((f[k>>2]|0)+e|0)|c;f[l>>2]=j;c=j}n=(f[b>>2]|0)+4|0;f[b>>2]=n;e=c;c=n;h=h-m|0}j=32-e|0;i=-1<>>0>31){g=~i;e=h;do{m=f[c>>2]|0;n=f[d>>2]|0;k=f[n>>2]&g;f[n>>2]=k;f[n>>2]=m<>2]|k;n=n+4|0;f[d>>2]=n;f[n>>2]=f[n>>2]&i|m>>>j;e=e+-32|0;c=(f[b>>2]|0)+4|0;f[b>>2]=c}while(e>>>0>31);h=h&31}if(!h){b=l;n=f[d>>2]|0;f[a>>2]=n;n=a+4|0;a=f[b>>2]|0;f[n>>2]=a;return}i=f[c>>2]&-1>>>(32-h|0);g=(j|0)<(h|0)?j:h;e=f[d>>2]|0;c=f[e>>2]&~(-1<>2]&-1>>>(j-g|0));f[e>>2]=c;f[e>>2]=c|i<>2];c=(f[l>>2]|0)+g|0;e=e+(c>>>5<<2)|0;f[d>>2]=e;f[l>>2]=c&31;c=h-g|0;if((c|0)<=0){b=l;n=f[d>>2]|0;f[a>>2]=n;n=a+4|0;a=f[b>>2]|0;f[n>>2]=a;return}f[e>>2]=f[e>>2]&~(-1>>>(32-c|0))|i>>>g;f[l>>2]=c;b=l;n=f[d>>2]|0;f[a>>2]=n;n=a+4|0;a=f[b>>2]|0;f[n>>2]=a;return}function Ae(a){a=a|0;var b=0,c=0,d=0;f[a>>2]=4800;nh(a+240|0);Ei(a+228|0);b=f[a+212>>2]|0;if(b|0){d=a+216|0;c=f[d>>2]|0;if((c|0)!=(b|0))f[d>>2]=c+(~((c+-4-b|0)>>>2)<<2);ar(b)}b=f[a+200>>2]|0;if(b|0){d=a+204|0;c=f[d>>2]|0;if((c|0)!=(b|0))f[d>>2]=c+(~((c+-4-b|0)>>>2)<<2);ar(b)}b=f[a+188>>2]|0;if(b|0){d=a+192|0;c=f[d>>2]|0;if((c|0)!=(b|0))f[d>>2]=c+(~((c+-4-b|0)>>>2)<<2);ar(b)}b=f[a+176>>2]|0;if(b|0){d=a+180|0;c=f[d>>2]|0;if((c|0)!=(b|0))f[d>>2]=c+(~((c+-4-b|0)>>>2)<<2);ar(b)}b=f[a+160>>2]|0;if(b|0)do{d=b;b=f[b>>2]|0;ar(d)}while((b|0)!=0);d=a+152|0;b=f[d>>2]|0;f[d>>2]=0;if(b|0)ar(b);b=f[a+136>>2]|0;if(b|0)ar(b);b=f[a+124>>2]|0;if(b|0)ar(b);b=f[a+112>>2]|0;if(b|0)ar(b);b=f[a+88>>2]|0;if(b|0){d=a+92|0;c=f[d>>2]|0;if((c|0)!=(b|0))f[d>>2]=c+(~((c+-4-b|0)>>>2)<<2);ar(b)}b=f[a+76>>2]|0;if(b|0){d=a+80|0;c=f[d>>2]|0;if((c|0)!=(b|0))f[d>>2]=c+(~((c+-4-b|0)>>>2)<<2);ar(b)}b=f[a+64>>2]|0;if(b|0)ar(b);b=f[a+48>>2]|0;if(b|0){d=a+52|0;c=f[d>>2]|0;if((c|0)!=(b|0))f[d>>2]=c+(~((c+-4-b|0)>>>2)<<2);ar(b)}b=f[a+36>>2]|0;if(b|0){d=a+40|0;c=f[d>>2]|0;if((c|0)!=(b|0))f[d>>2]=c+(~(((c+-12-b|0)>>>0)/12|0)*12|0);ar(b)}b=f[a+24>>2]|0;if(b|0){d=a+28|0;c=f[d>>2]|0;if((c|0)!=(b|0))f[d>>2]=c+(~((c+-4-b|0)>>>2)<<2);ar(b)}b=f[a+12>>2]|0;if(b|0){d=a+16|0;c=f[d>>2]|0;if((c|0)!=(b|0))f[d>>2]=c+(~((c+-4-b|0)>>>2)<<2);ar(b)}a=a+8|0;b=f[a>>2]|0;f[a>>2]=0;if(!b)return;sj(b);ar(b);return}function Be(a,b,c,d,e,g){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;g=g|0;var h=0,i=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,v=0,w=0,x=0,y=0;x=u;u=u+16|0;v=x+4|0;t=x;w=a+60|0;f[a+64>>2]=g;s=a+8|0;f[s>>2]=e;i=a+32|0;h=a+36|0;g=f[h>>2]|0;d=f[i>>2]|0;j=g-d>>2;if(j>>>0>=e>>>0){if(j>>>0>e>>>0?(k=d+(e<<2)|0,(g|0)!=(k|0)):0)f[h>>2]=g+(~((g+-4-k|0)>>>2)<<2)}else ui(i,e-j|0);n=a+56|0;i=f[n>>2]|0;g=f[i+4>>2]|0;d=f[i>>2]|0;q=g-d|0;r=q>>2;if((q|0)<=0){u=x;return 1}p=a+16|0;m=a+32|0;q=a+12|0;o=a+20|0;h=0;while(1){if(g-d>>2>>>0<=h>>>0){Kp(i);d=f[i>>2]|0}f[t>>2]=f[d+(h<<2)>>2];f[v>>2]=f[t>>2];Nb(w,v,c,h);l=X(h,e)|0;k=b+(l<<2)|0;l=c+(l<<2)|0;if((f[s>>2]|0)>0){i=0;do{d=f[a+68+(i<<2)>>2]|0;g=f[p>>2]|0;if((d|0)>(g|0)){j=f[m>>2]|0;f[j+(i<<2)>>2]=g}else{g=f[q>>2]|0;j=f[m>>2]|0;f[j+(i<<2)>>2]=(d|0)<(g|0)?g:d}i=i+1|0;d=f[s>>2]|0}while((i|0)<(d|0));if((d|0)>0){i=0;do{d=(f[k+(i<<2)>>2]|0)+(f[j+(i<<2)>>2]|0)|0;g=l+(i<<2)|0;f[g>>2]=d;if((d|0)<=(f[p>>2]|0)){if((d|0)<(f[q>>2]|0)){d=(f[o>>2]|0)+d|0;y=22}}else{d=d-(f[o>>2]|0)|0;y=22}if((y|0)==22){y=0;f[g>>2]=d}i=i+1|0}while((i|0)<(f[s>>2]|0))}}h=h+1|0;if((h|0)>=(r|0))break;i=f[n>>2]|0;d=f[i>>2]|0;g=f[i+4>>2]|0}u=x;return 1}function Ce(a,b,c,d){a=a|0;b=b|0;c=c|0;d=d|0;var e=0,g=0,h=0,i=0,j=0,k=0,l=0,m=0,n=0;l=b+16|0;n=f[l>>2]|0;i=(f[c>>2]|0)-n|0;j=c+4|0;g=(f[j>>2]|0)-n|0;e=c;f[e>>2]=i;f[e+4>>2]=g;e=f[l>>2]|0;if((e|0)<(i|0))Ga(10070,9477,250,10093);if((e|0)<(g|0))Ga(10105,9477,251,10093);h=0-e|0;if((i|0)<(h|0))Ga(10128,9477,252,10093);if((g|0)<(h|0))Ga(10152,9477,253,10093);m=(((g|0)>-1?g:0-g|0)+((i|0)>-1?i:0-i|0)|0)<=(e|0);if(!m){Yh(b+4|0,c,j);i=f[c>>2]|0}if(!i){e=f[j>>2]|0;g=e;e=(e|0)==0}else{e=f[j>>2]|0;g=e;e=(i|0)<0&(e|0)<1}if(!i)k=(g|0)==0?0:(g|0)>0?3:1;else k=(i|0)>0?(g>>31)+2|0:(g|0)<1?0:3;if(e){e=i;i=1}else{switch(k|0){case 1:{e=g;g=0-i|0;break}case 2:{e=0-i|0;g=0-g|0;break}case 3:{e=0-g|0;g=i;break}default:e=i}i=c;f[i>>2]=e;f[i+4>>2]=g;i=0}e=(f[d>>2]|0)+e|0;f[a>>2]=e;g=(f[d+4>>2]|0)+g|0;j=a+4|0;f[j>>2]=g;h=f[l>>2]|0;if((h|0)>=(e|0)){if((e|0)<(0-h|0))e=(f[b+8>>2]|0)+e|0}else e=e-(f[b+8>>2]|0)|0;f[a>>2]=e;if((h|0)>=(g|0)){if((g|0)<(0-h|0))g=(f[b+8>>2]|0)+g|0}else g=g-(f[b+8>>2]|0)|0;f[j>>2]=g;if(!i){switch((4-k|0)%4|0|0){case 1:{h=g;e=0-e|0;break}case 2:{h=0-e|0;e=0-g|0;break}case 3:{h=0-g|0;break}default:{h=e;e=g}}g=a;f[g>>2]=h;f[g+4>>2]=e;g=e;e=h}if(m){m=e;b=g;m=m+n|0;n=b+n|0;b=a;a=b;f[a>>2]=m;b=b+4|0;f[b>>2]=n;return}Yh(b+4|0,a,j);m=f[a>>2]|0;b=f[j>>2]|0;m=m+n|0;n=b+n|0;b=a;a=b;f[a>>2]=m;b=b+4|0;f[b>>2]=n;return}function De(a,c,d){a=a|0;c=c|0;d=d|0;var e=0,g=0,i=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,v=0,w=0,x=0,y=0;w=u;u=u+48|0;s=w+40|0;t=w+24|0;p=w+20|0;q=w+16|0;n=w;r=w+8|0;f[t>>2]=0;v=t+4|0;f[v>>2]=0;f[t+8>>2]=0;l=c+8|0;k=f[l>>2]|0;l=f[l+4>>2]|0;o=c+16|0;e=o;m=f[e>>2]|0;e=f[e+4>>2]|0;g=Ho(m|0,e|0,4,0)|0;i=I;a:do if((l|0)<(i|0)|(l|0)==(i|0)&k>>>0>>0)i=0;else{j=f[c>>2]|0;x=j+m|0;x=h[x>>0]|h[x+1>>0]<<8|h[x+2>>0]<<16|h[x+3>>0]<<24;y=o;f[y>>2]=g;f[y+4>>2]=i;b:do switch(x|0){case 3:{if(!((l|0)>(i|0)|(l|0)==(i|0)&k>>>0>g>>>0)){i=0;break a}y=b[j+g>>0]|0;m=Ho(m|0,e|0,5,0)|0;x=o;f[x>>2]=m;f[x+4>>2]=I;f[a+8>>2]=y<<24>>24;if(y<<24>>24==1)if(fc(a,c,t)|0)break b;else{i=0;break a}else{Nl(17471,23,1,f[1215]|0)|0;i=0;break a}}case 2:{if(!(fc(a,c,t)|0)){i=0;break a}break}default:{Nl(17495,24,1,f[1215]|0)|0;i=0;break a}}while(0);f[p>>2]=f[t>>2];f[q>>2]=f[v>>2];x=d;y=f[x+4>>2]|0;i=n;f[i>>2]=f[x>>2];f[i+4>>2]=y;f[s>>2]=f[n>>2];f[s+4>>2]=f[n+4>>2];cf(r,p,q,a,s);i=1}while(0);e=f[t>>2]|0;if(!e){u=w;return i|0}g=f[v>>2]|0;if((g|0)!=(e|0))f[v>>2]=g+(~(((g+-12-e|0)>>>0)/12|0)*12|0);ar(e);u=w;return i|0}function Ee(a,b,c,d,e,g){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;g=g|0;var h=0,i=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0;p=f[a+32>>2]|0;q=f[a+36>>2]|0;s=e>>>0>1073741823?-1:e<<2;r=Zq(s)|0;ej(r|0,0,s|0)|0;s=a+8|0;ji(s,r,b,c);n=a+40|0;g=f[n>>2]|0;a=f[g+4>>2]|0;d=f[g>>2]|0;m=a-d|0;o=m>>2;if((m|0)<=4){_q(r);return 1}l=p+12|0;m=(e|0)>0;h=a;a=1;while(1){if(h-d>>2>>>0<=a>>>0){Kp(g);d=f[g>>2]|0}d=f[d+(a<<2)>>2]|0;k=X(a,e)|0;if((d|0)>=0?(t=f[(f[l>>2]|0)+(d<<2)>>2]|0,(t|0)>=0):0){g=f[p>>2]|0;h=f[q>>2]|0;i=f[h+(f[g+(t<<2)>>2]<<2)>>2]|0;d=t+1|0;d=((d|0)%3|0|0)==0?t+-2|0:d;if((d|0)<0)d=-1073741824;else d=f[g+(d<<2)>>2]|0;j=f[h+(d<<2)>>2]|0;d=(((t>>>0)%3|0|0)==0?2:-1)+t|0;if((d|0)<0)d=-1073741824;else d=f[g+(d<<2)>>2]|0;d=f[h+(d<<2)>>2]|0;if((i|0)<(a|0)&(j|0)<(a|0)&(d|0)<(a|0)){i=X(i,e)|0;h=X(j,e)|0;g=X(d,e)|0;if(m){d=0;do{f[r+(d<<2)>>2]=(f[c+(d+g<<2)>>2]|0)+(f[c+(d+h<<2)>>2]|0)-(f[c+(d+i<<2)>>2]|0);d=d+1|0}while((d|0)!=(e|0))}ji(s,r,b+(k<<2)|0,c+(k<<2)|0)}else u=16}else u=16;if((u|0)==16){u=0;ji(s,c+((X(a+-1|0,e)|0)<<2)|0,b+(k<<2)|0,c+(k<<2)|0)}a=a+1|0;if((a|0)>=(o|0))break;h=f[n>>2]|0;g=h;d=f[h>>2]|0;h=f[h+4>>2]|0}_q(r);return 1}function Fe(a,b,c){a=a|0;b=b|0;c=c|0;var d=0,e=0,g=0,h=0,i=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0;p=u;u=u+32|0;o=p+8|0;j=p;n=a+4|0;g=f[n>>2]|0;if(g>>>0>=b>>>0){f[n>>2]=b;u=p;return}m=a+8|0;e=f[m>>2]|0;l=e<<5;d=b-g|0;if(l>>>0>>0|g>>>0>(l-d|0)>>>0){f[o>>2]=0;l=o+4|0;f[l>>2]=0;k=o+8|0;f[k>>2]=0;if((b|0)<0){Lp(a);e=f[m>>2]|0}h=e<<6;b=b+31&-32;ri(o,e<<5>>>0<1073741823?(h>>>0>>0?b:h):2147483647);b=f[n>>2]|0;f[l>>2]=b+d;e=f[a>>2]|0;h=e;g=f[o>>2]|0;b=(h+(b>>>5<<2)-e<<3)+(b&31)|0;if((b|0)>0){i=b>>>5;rm(g|0,e|0,i<<2|0)|0;e=b-(i<<5)|0;b=g+(i<<2)|0;g=b;if((e|0)>0){q=-1>>>(32-e|0);f[b>>2]=f[b>>2]&~q|f[h+(i<<2)>>2]&q}else e=0}else e=0;f[j>>2]=g;f[j+4>>2]=e;b=j;e=f[b>>2]|0;b=f[b+4>>2]|0;g=f[a>>2]|0;f[a>>2]=f[o>>2];f[o>>2]=g;q=f[n>>2]|0;f[n>>2]=f[l>>2];f[l>>2]=q;q=f[m>>2]|0;f[m>>2]=f[k>>2];f[k>>2]=q;if(g|0)ar(g)}else{e=(f[a>>2]|0)+(g>>>5<<2)|0;f[n>>2]=b;b=g&31}if(!d){u=p;return}h=(b|0)==0;g=e;if(c){if(!h){e=32-b|0;q=e>>>0>d>>>0?d:e;f[g>>2]=f[g>>2]|-1>>>(e-q|0)&-1<>>5;ej(e|0,-1,q<<2|0)|0;e=d-(q<<5)|0;d=g+(q<<2)|0;if(!e){u=p;return}f[d>>2]=f[d>>2]|-1>>>(32-e|0);u=p;return}else{if(!h){e=32-b|0;q=e>>>0>d>>>0?d:e;f[g>>2]=f[g>>2]&~(-1>>>(e-q|0)&-1<>>5;ej(e|0,0,q<<2|0)|0;e=d-(q<<5)|0;d=g+(q<<2)|0;if(!e){u=p;return}f[d>>2]=f[d>>2]&~(-1>>>(32-e|0));u=p;return}}function Ge(a,b){a=a|0;b=b|0;var c=0,d=La,e=La,g=0,h=0,i=0,j=0,k=0,l=0,m=0,o=0,p=La;l=f[b>>2]|0;j=a+4|0;i=f[j>>2]|0;k=(i|0)==0;a:do if(!k){g=i+-1|0;c=(g&i|0)==0;if(c)h=g&l;else h=(l>>>0)%(i>>>0)|0;b=f[(f[a>>2]|0)+(h<<2)>>2]|0;if(b)if(c){do{b=f[b>>2]|0;if(!b){b=h;break a}if((f[b+4>>2]&g|0)!=(h|0)){b=h;break a}}while((f[b+8>>2]|0)!=(l|0));a=b+12|0;return a|0}else{do{b=f[b>>2]|0;if(!b){b=h;break a}if((((f[b+4>>2]|0)>>>0)%(i>>>0)|0|0)!=(h|0)){b=h;break a}}while((f[b+8>>2]|0)!=(l|0));a=b+12|0;return a|0}else b=h}else b=0;while(0);m=ln(16)|0;f[m+8>>2]=l;f[m+12>>2]=0;f[m+4>>2]=l;f[m>>2]=0;h=a+12|0;e=$(((f[h>>2]|0)+1|0)>>>0);p=$(i>>>0);d=$(n[a+16>>2]);do if(k|e>$(p*d)){b=(i>>>0<3|(i+-1&i|0)!=0)&1|i<<1;c=~~$(W($(e/d)))>>>0;li(a,b>>>0>>0?c:b);b=f[j>>2]|0;c=b+-1|0;if(!(c&b)){g=b;b=c&l;break}else{g=b;b=(l>>>0)%(b>>>0)|0;break}}else g=i;while(0);c=(f[a>>2]|0)+(b<<2)|0;b=f[c>>2]|0;if(!b){b=a+8|0;f[m>>2]=f[b>>2];f[b>>2]=m;f[c>>2]=b;b=f[m>>2]|0;if(b|0){b=f[b+4>>2]|0;c=g+-1|0;if(!(c&g))b=b&c;else b=(b>>>0)%(g>>>0)|0;b=(f[a>>2]|0)+(b<<2)|0;o=24}}else{f[m>>2]=f[b>>2];o=24}if((o|0)==24)f[b>>2]=m;f[h>>2]=(f[h>>2]|0)+1;a=m;a=a+12|0;return a|0}function He(a,c){a=a|0;c=c|0;var d=0,e=0,g=0,i=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0;o=u;u=u+32|0;k=o+16|0;j=o;i=c+8|0;m=i;l=f[m+4>>2]|0;n=c+16|0;d=n;e=f[d>>2]|0;d=f[d+4>>2]|0;if(!((l|0)>(d|0)|((l|0)==(d|0)?(f[m>>2]|0)>>>0>e>>>0:0))){a=0;u=o;return a|0}m=b[(f[c>>2]|0)+e>>0]|0;g=Ho(e|0,d|0,1,0)|0;l=n;f[l>>2]=g;f[l+4>>2]=I;if(m<<24>>24){a=0;u=o;return a|0}g=0;do{yj(k,c)|0;d=f[k>>2]|0;if(d|0){e=a+60+(g*12|0)|0;Fe(e,d,0);xq(j);Ff(j,c)|0;if(f[k>>2]|0){d=0;do{q=Tk(j)|0;m=(f[e>>2]|0)+(d>>>5<<2)|0;l=1<<(d&31);p=f[m>>2]|0;f[m>>2]=q?p|l:p&~l;d=d+1|0}while(d>>>0<(f[k>>2]|0)>>>0)}fr(j)}g=g+1|0}while((g|0)<4);l=i;k=f[l>>2]|0;l=f[l+4>>2]|0;e=n;d=f[e>>2]|0;e=f[e+4>>2]|0;m=Ho(d|0,e|0,4,0)|0;g=I;if((l|0)<(g|0)|(l|0)==(g|0)&k>>>0>>0){q=0;u=o;return q|0}i=f[c>>2]|0;j=i+d|0;j=h[j>>0]|h[j+1>>0]<<8|h[j+2>>0]<<16|h[j+3>>0]<<24;q=n;f[q>>2]=m;f[q+4>>2]=g;d=Ho(d|0,e|0,8,0)|0;e=I;if((l|0)<(e|0)|(l|0)==(e|0)&k>>>0>>0){q=0;u=o;return q|0}q=i+m|0;q=h[q>>0]|h[q+1>>0]<<8|h[q+2>>0]<<16|h[q+3>>0]<<24;p=n;f[p>>2]=d;f[p+4>>2]=e;f[a+12>>2]=j;f[a+16>>2]=q;q=q+(1-j)|0;f[a+20>>2]=q;d=(q|0)/2|0;e=a+24|0;f[e>>2]=d;f[a+28>>2]=0-d;if(q&1|0){q=1;u=o;return q|0}f[e>>2]=d+-1;q=1;u=o;return q|0}function Ie(a,b,c,d,e,g){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;g=g|0;var h=0,i=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0;p=f[a+32>>2]|0;q=f[a+36>>2]|0;s=e>>>0>1073741823?-1:e<<2;r=Zq(s)|0;ej(r|0,0,s|0)|0;s=a+8|0;mi(s,r,b,c);n=a+40|0;g=f[n>>2]|0;a=f[g+4>>2]|0;d=f[g>>2]|0;m=a-d|0;o=m>>2;if((m|0)<=4){_q(r);return 1}l=p+12|0;m=(e|0)>0;h=a;a=1;while(1){if(h-d>>2>>>0<=a>>>0){Kp(g);d=f[g>>2]|0}d=f[d+(a<<2)>>2]|0;k=X(a,e)|0;if((d|0)>=0?(t=f[(f[l>>2]|0)+(d<<2)>>2]|0,(t|0)>=0):0){g=f[p>>2]|0;h=f[q>>2]|0;i=f[h+(f[g+(t<<2)>>2]<<2)>>2]|0;d=t+1|0;d=((d|0)%3|0|0)==0?t+-2|0:d;if((d|0)<0)d=-1073741824;else d=f[g+(d<<2)>>2]|0;j=f[h+(d<<2)>>2]|0;d=(((t>>>0)%3|0|0)==0?2:-1)+t|0;if((d|0)<0)d=-1073741824;else d=f[g+(d<<2)>>2]|0;d=f[h+(d<<2)>>2]|0;if((i|0)<(a|0)&(j|0)<(a|0)&(d|0)<(a|0)){i=X(i,e)|0;h=X(j,e)|0;g=X(d,e)|0;if(m){d=0;do{f[r+(d<<2)>>2]=(f[c+(d+g<<2)>>2]|0)+(f[c+(d+h<<2)>>2]|0)-(f[c+(d+i<<2)>>2]|0);d=d+1|0}while((d|0)!=(e|0))}mi(s,r,b+(k<<2)|0,c+(k<<2)|0)}else u=16}else u=16;if((u|0)==16){u=0;mi(s,c+((X(a+-1|0,e)|0)<<2)|0,b+(k<<2)|0,c+(k<<2)|0)}a=a+1|0;if((a|0)>=(o|0))break;h=f[n>>2]|0;g=h;d=f[h>>2]|0;h=f[h+4>>2]|0}_q(r);return 1}function Je(a,c,d){a=a|0;c=c|0;d=d|0;var e=0,g=0,i=0;switch(b[a+24>>0]|0){case 1:{g=f[c>>2]|0;c=a+48|0;e=f[c>>2]|0;c=f[c+4>>2]|0;i=a+40|0;a=(Ho(kn(f[i>>2]|0,f[i+4>>2]|0,g|0,((g|0)<0)<<31>>31|0)|0,I|0,e|0,c|0)|0)+(f[f[a>>2]>>2]|0)|0;a=(h[a>>0]|h[a+1>>0]<<8)<<16>>16;c=d;f[c>>2]=a;f[c+4>>2]=((a|0)<0)<<31>>31;c=0;a=0;break}case 2:{g=f[c>>2]|0;i=a+48|0;c=f[i>>2]|0;i=f[i+4>>2]|0;e=a+40|0;a=(Ho(kn(f[e>>2]|0,f[e+4>>2]|0,g|0,((g|0)<0)<<31>>31|0)|0,I|0,c|0,i|0)|0)+(f[f[a>>2]>>2]|0)|0;a=h[a>>0]|h[a+1>>0]<<8|h[a+2>>0]<<16|h[a+3>>0]<<24;i=(a&65535)<<16>>16;c=d;f[c>>2]=i;f[c+4>>2]=((i|0)<0)<<31>>31;a=(a>>>16&65535)<<16>>16;c=a;a=((a|0)<0)<<31>>31;break}case 3:{g=f[c>>2]|0;i=a+48|0;c=f[i>>2]|0;i=f[i+4>>2]|0;e=a+40|0;i=(Ho(kn(f[e>>2]|0,f[e+4>>2]|0,g|0,((g|0)<0)<<31>>31|0)|0,I|0,c|0,i|0)|0)+(f[f[a>>2]>>2]|0)|0;a=i+2|0;a=h[a>>0]|h[a+1>>0]<<8;i=(h[i>>0]|h[i+1>>0]<<8)<<16>>16;c=d;f[c>>2]=i;f[c+4>>2]=((i|0)<0)<<31>>31;a=a<<16>>16;c=a;a=((a|0)<0)<<31>>31;break}case 4:{g=f[c>>2]|0;i=a+48|0;c=f[i>>2]|0;i=f[i+4>>2]|0;e=a+40|0;i=(Ho(kn(f[e>>2]|0,f[e+4>>2]|0,g|0,((g|0)<0)<<31>>31|0)|0,I|0,c|0,i|0)|0)+(f[f[a>>2]>>2]|0)|0;c=i;c=h[c>>0]|h[c+1>>0]<<8|h[c+2>>0]<<16|h[c+3>>0]<<24;i=i+4|0;i=An(On(c|0,h[i>>0]|h[i+1>>0]<<8|h[i+2>>0]<<16|h[i+3>>0]<<24|0,48)|0,I|0,48)|0;a=d;f[a>>2]=i;f[a+4>>2]=I;c=An(0,c|0,48)|0;a=I;break}default:{i=0;return i|0}}i=d+8|0;f[i>>2]=c;f[i+4>>2]=a;i=1;return i|0}function Ke(a){a=a|0;var b=0,c=0,d=0,e=0,g=0,h=0,i=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0;p=u;u=u+16|0;m=p;k=Sa[f[(f[a>>2]|0)+24>>2]&255](a)|0;if((k|0)<=0){a=1;o=1;o=a|o;u=p;return o|0}j=a+36|0;l=a+48|0;b=0;while(1){i=(Sa[f[(f[a>>2]|0)+28>>2]&255](a)|0)+40|0;if(f[i>>2]|0){h=f[(f[(f[j>>2]|0)+(b<<2)>>2]|0)+8>>2]|0;g=(Sa[f[(f[a>>2]|0)+28>>2]&255](a)|0)+40|0;g=f[g>>2]|0;h=f[h+56>>2]|0;f[m>>2]=0;f[m+4>>2]=0;f[m+8>>2]=0;Pj(m,19295,24);i=g+16|0;d=f[i>>2]|0;if(d){c=i;e=d;a:while(1){d=e;while(1){if((f[d+16>>2]|0)>=(h|0))break;d=f[d+4>>2]|0;if(!d)break a}e=f[d>>2]|0;if(!e){c=d;break}else c=d}if(((c|0)!=(i|0)?(n=c+20|0,(h|0)>=(f[c+16>>2]|0)):0)?(Wh(n,m)|0)!=0:0)c=Vj(n,m,0)|0;else o=13}else o=13;if((o|0)==13){o=0;c=Vj(g,m,0)|0}Lo(m);if(c){o=15;break}}i=f[(f[j>>2]|0)+(b<<2)>>2]|0;if(!(Wa[f[(f[i>>2]|0)+24>>2]&127](i,l)|0)){b=0;c=0;o=18;break}b=b+1|0;if((b|0)>=(k|0)){b=1;c=1;o=18;break}}if((o|0)==15){a=f[(f[j>>2]|0)+(b<<2)>>2]|0;o=f[a+8>>2]|0;ff(o,lh(a)|0);a=0;o=1;o=a|o;u=p;return o|0}else if((o|0)==18){o=b|c;u=p;return o|0}return 0}function Le(a,b,c,d,e,g){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;g=g|0;var h=0,i=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0,v=0,w=0;p=f[a+32>>2]|0;q=f[a+36>>2]|0;s=e>>>0>1073741823?-1:e<<2;r=Zq(s)|0;ej(r|0,0,s|0)|0;s=a+8|0;ji(s,r,b,c);n=a+40|0;g=f[n>>2]|0;a=f[g+4>>2]|0;d=f[g>>2]|0;m=a-d|0;o=m>>2;if((m|0)<=4){_q(r);return 1}m=p+64|0;k=p+28|0;l=(e|0)>0;h=a;a=1;while(1){if(h-d>>2>>>0<=a>>>0){Kp(g);d=f[g>>2]|0}d=f[d+(a<<2)>>2]|0;j=X(a,e)|0;if((!((d|0)<0?1:(1<<(d&31)&f[(f[p>>2]|0)+(d>>>5<<2)>>2]|0)!=0)?(w=f[(f[(f[m>>2]|0)+12>>2]|0)+(d<<2)>>2]|0,(w|0)>=0):0)?(v=f[k>>2]|0,i=f[q>>2]|0,t=f[i+(f[v+(w<<2)>>2]<<2)>>2]|0,u=w+1|0,u=f[i+(f[v+((((u|0)%3|0|0)==0?w+-2|0:u)<<2)>>2]<<2)>>2]|0,v=f[i+(f[v+((((w>>>0)%3|0|0)==0?2:-1)+w<<2)>>2]<<2)>>2]|0,(t|0)<(a|0)&(u|0)<(a|0)&(v|0)<(a|0)):0){g=X(t,e)|0;h=X(u,e)|0;i=X(v,e)|0;if(l){d=0;do{f[r+(d<<2)>>2]=(f[c+(d+i<<2)>>2]|0)+(f[c+(d+h<<2)>>2]|0)-(f[c+(d+g<<2)>>2]|0);d=d+1|0}while((d|0)!=(e|0))}ji(s,r,b+(j<<2)|0,c+(j<<2)|0)}else ji(s,c+((X(a+-1|0,e)|0)<<2)|0,b+(j<<2)|0,c+(j<<2)|0);a=a+1|0;if((a|0)>=(o|0))break;h=f[n>>2]|0;g=h;d=f[h>>2]|0;h=f[h+4>>2]|0}_q(r);return 1}function Me(a,c){a=a|0;c=c|0;var d=0,e=0,g=0,h=0,i=0;i=(c|0)==(a|0);b[c+12>>0]=i&1;if(i)return;while(1){h=f[c+8>>2]|0;g=h+12|0;if(b[g>>0]|0){e=23;break}i=h+8|0;d=f[i>>2]|0;e=f[d>>2]|0;if((e|0)==(h|0)){e=f[d+4>>2]|0;if(!e){e=7;break}e=e+12|0;if(!(b[e>>0]|0))c=e;else{e=7;break}}else{if(!e){e=16;break}e=e+12|0;if(!(b[e>>0]|0))c=e;else{e=16;break}}b[g>>0]=1;i=(d|0)==(a|0);b[d+12>>0]=i&1;b[c>>0]=1;if(i){e=23;break}else c=d}if((e|0)==7){if((f[h>>2]|0)==(c|0))c=h;else{a=h+4|0;c=f[a>>2]|0;e=f[c>>2]|0;f[a>>2]=e;if(e){f[e+8>>2]=h;d=f[i>>2]|0}a=c+8|0;f[a>>2]=d;d=f[i>>2]|0;f[((f[d>>2]|0)==(h|0)?d:d+4|0)>>2]=c;f[c>>2]=h;f[i>>2]=c;d=f[a>>2]|0}b[c+12>>0]=1;b[d+12>>0]=0;c=f[d>>2]|0;g=c+4|0;e=f[g>>2]|0;f[d>>2]=e;if(e|0)f[e+8>>2]=d;i=d+8|0;f[c+8>>2]=f[i>>2];h=f[i>>2]|0;f[((f[h>>2]|0)==(d|0)?h:h+4|0)>>2]=c;f[g>>2]=d;f[i>>2]=c;return}else if((e|0)==16){if((f[h>>2]|0)==(c|0)){c=f[h>>2]|0;g=c+4|0;e=f[g>>2]|0;f[h>>2]=e;if(e){f[e+8>>2]=h;d=f[i>>2]|0}e=c+8|0;f[e>>2]=d;a=f[i>>2]|0;f[((f[a>>2]|0)==(h|0)?a:a+4|0)>>2]=c;f[g>>2]=h;f[i>>2]=c;e=f[e>>2]|0}else{c=h;e=d}b[c+12>>0]=1;b[e+12>>0]=0;i=e+4|0;c=f[i>>2]|0;d=f[c>>2]|0;f[i>>2]=d;if(d|0)f[d+8>>2]=e;i=e+8|0;f[c+8>>2]=f[i>>2];h=f[i>>2]|0;f[((f[h>>2]|0)==(e|0)?h:h+4|0)>>2]=c;f[c>>2]=e;f[i>>2]=c;return}else if((e|0)==23)return}function Ne(a,c,d){a=a|0;c=c|0;d=d|0;var e=0,g=0,i=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0;o=u;u=u+16|0;n=o+4|0;m=o;i=c+8|0;k=i;e=f[k>>2]|0;k=f[k+4>>2]|0;l=c+16|0;j=l;g=f[j>>2]|0;j=f[j+4>>2]|0;p=Ho(g|0,j|0,4,0)|0;q=I;if((k|0)<(q|0)|(k|0)==(q|0)&e>>>0

>>0)i=k;else{g=(f[c>>2]|0)+g|0;g=h[g>>0]|h[g+1>>0]<<8|h[g+2>>0]<<16|h[g+3>>0]<<24;b[a>>0]=g;b[a+1>>0]=g>>8;b[a+2>>0]=g>>16;b[a+3>>0]=g>>24;g=l;g=Ho(f[g>>2]|0,f[g+4>>2]|0,4,0)|0;j=I;e=l;f[e>>2]=g;f[e+4>>2]=j;e=i;i=f[e+4>>2]|0;e=f[e>>2]|0}k=a+4|0;q=Ho(g|0,j|0,4,0)|0;p=I;if((i|0)<(p|0)|(i|0)==(p|0)&e>>>0>>0)e=f[k>>2]|0;else{e=(f[c>>2]|0)+g|0;e=h[e>>0]|h[e+1>>0]<<8|h[e+2>>0]<<16|h[e+3>>0]<<24;b[k>>0]=e;b[k+1>>0]=e>>8;b[k+2>>0]=e>>16;b[k+3>>0]=e>>24;p=l;p=Ho(f[p>>2]|0,f[p+4>>2]|0,4,0)|0;q=l;f[q>>2]=p;f[q+4>>2]=I}if(!e){q=1;u=o;return q|0}if(!(Qf(a+12|0,c)|0)){q=0;u=o;return q|0}if(!(Qf(a+32|0,c)|0)){q=0;u=o;return q|0}if(!(Qf(a+52|0,c)|0)){q=0;u=o;return q|0}if(!(Qf(a+72|0,c)|0)){q=0;u=o;return q|0}q=f[k>>2]|0;f[m>>2]=f[d>>2];f[n>>2]=f[m>>2];ib(a,q,n);q=1;u=o;return q|0}function Oe(a,c,d){a=a|0;c=c|0;d=d|0;var e=0,g=0,i=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0;o=u;u=u+16|0;n=o+4|0;m=o;i=c+8|0;k=i;e=f[k>>2]|0;k=f[k+4>>2]|0;l=c+16|0;j=l;g=f[j>>2]|0;j=f[j+4>>2]|0;p=Ho(g|0,j|0,4,0)|0;q=I;if((k|0)<(q|0)|(k|0)==(q|0)&e>>>0

>>0)i=k;else{g=(f[c>>2]|0)+g|0;g=h[g>>0]|h[g+1>>0]<<8|h[g+2>>0]<<16|h[g+3>>0]<<24;b[a>>0]=g;b[a+1>>0]=g>>8;b[a+2>>0]=g>>16;b[a+3>>0]=g>>24;g=l;g=Ho(f[g>>2]|0,f[g+4>>2]|0,4,0)|0;j=I;e=l;f[e>>2]=g;f[e+4>>2]=j;e=i;i=f[e+4>>2]|0;e=f[e>>2]|0}k=a+4|0;q=Ho(g|0,j|0,4,0)|0;p=I;if((i|0)<(p|0)|(i|0)==(p|0)&e>>>0>>0)e=f[k>>2]|0;else{e=(f[c>>2]|0)+g|0;e=h[e>>0]|h[e+1>>0]<<8|h[e+2>>0]<<16|h[e+3>>0]<<24;b[k>>0]=e;b[k+1>>0]=e>>8;b[k+2>>0]=e>>16;b[k+3>>0]=e>>24;p=l;p=Ho(f[p>>2]|0,f[p+4>>2]|0,4,0)|0;q=l;f[q>>2]=p;f[q+4>>2]=I}if(!e){q=1;u=o;return q|0}if(!(Qf(a+12|0,c)|0)){q=0;u=o;return q|0}if(!(Qf(a+32|0,c)|0)){q=0;u=o;return q|0}if(!(Qf(a+52|0,c)|0)){q=0;u=o;return q|0}if(!(Qf(a+72|0,c)|0)){q=0;u=o;return q|0}q=f[k>>2]|0;f[m>>2]=f[d>>2];f[n>>2]=f[m>>2];gb(a,q,n);q=1;u=o;return q|0}function Pe(a,c,d){a=a|0;c=c|0;d=d|0;var e=0,g=0,i=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0;o=u;u=u+16|0;n=o+4|0;m=o;i=c+8|0;k=i;e=f[k>>2]|0;k=f[k+4>>2]|0;l=c+16|0;j=l;g=f[j>>2]|0;j=f[j+4>>2]|0;p=Ho(g|0,j|0,4,0)|0;q=I;if((k|0)<(q|0)|(k|0)==(q|0)&e>>>0

>>0)i=k;else{g=(f[c>>2]|0)+g|0;g=h[g>>0]|h[g+1>>0]<<8|h[g+2>>0]<<16|h[g+3>>0]<<24;b[a>>0]=g;b[a+1>>0]=g>>8;b[a+2>>0]=g>>16;b[a+3>>0]=g>>24;g=l;g=Ho(f[g>>2]|0,f[g+4>>2]|0,4,0)|0;j=I;e=l;f[e>>2]=g;f[e+4>>2]=j;e=i;i=f[e+4>>2]|0;e=f[e>>2]|0}k=a+4|0;q=Ho(g|0,j|0,4,0)|0;p=I;if((i|0)<(p|0)|(i|0)==(p|0)&e>>>0>>0)e=f[k>>2]|0;else{e=(f[c>>2]|0)+g|0;e=h[e>>0]|h[e+1>>0]<<8|h[e+2>>0]<<16|h[e+3>>0]<<24;b[k>>0]=e;b[k+1>>0]=e>>8;b[k+2>>0]=e>>16;b[k+3>>0]=e>>24;p=l;p=Ho(f[p>>2]|0,f[p+4>>2]|0,4,0)|0;q=l;f[q>>2]=p;f[q+4>>2]=I}if(!e){q=1;u=o;return q|0}if(!(Ff(a+12|0,c)|0)){q=0;u=o;return q|0}if(!(Qf(a+28|0,c)|0)){q=0;u=o;return q|0}if(!(Qf(a+48|0,c)|0)){q=0;u=o;return q|0}if(!(Qf(a+68|0,c)|0)){q=0;u=o;return q|0}q=f[k>>2]|0;f[m>>2]=f[d>>2];f[n>>2]=f[m>>2];vb(a,q,n);q=1;u=o;return q|0}function Qe(a,c,d){a=a|0;c=c|0;d=d|0;var e=0,g=0,i=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0;o=u;u=u+16|0;n=o+4|0;m=o;i=c+8|0;k=i;e=f[k>>2]|0;k=f[k+4>>2]|0;l=c+16|0;j=l;g=f[j>>2]|0;j=f[j+4>>2]|0;p=Ho(g|0,j|0,4,0)|0;q=I;if((k|0)<(q|0)|(k|0)==(q|0)&e>>>0

>>0)i=k;else{g=(f[c>>2]|0)+g|0;g=h[g>>0]|h[g+1>>0]<<8|h[g+2>>0]<<16|h[g+3>>0]<<24;b[a>>0]=g;b[a+1>>0]=g>>8;b[a+2>>0]=g>>16;b[a+3>>0]=g>>24;g=l;g=Ho(f[g>>2]|0,f[g+4>>2]|0,4,0)|0;j=I;e=l;f[e>>2]=g;f[e+4>>2]=j;e=i;i=f[e+4>>2]|0;e=f[e>>2]|0}k=a+4|0;q=Ho(g|0,j|0,4,0)|0;p=I;if((i|0)<(p|0)|(i|0)==(p|0)&e>>>0>>0)e=f[k>>2]|0;else{e=(f[c>>2]|0)+g|0;e=h[e>>0]|h[e+1>>0]<<8|h[e+2>>0]<<16|h[e+3>>0]<<24;b[k>>0]=e;b[k+1>>0]=e>>8;b[k+2>>0]=e>>16;b[k+3>>0]=e>>24;p=l;p=Ho(f[p>>2]|0,f[p+4>>2]|0,4,0)|0;q=l;f[q>>2]=p;f[q+4>>2]=I}if(!e){q=1;u=o;return q|0}if(!(Ff(a+12|0,c)|0)){q=0;u=o;return q|0}if(!(Qf(a+28|0,c)|0)){q=0;u=o;return q|0}if(!(Qf(a+48|0,c)|0)){q=0;u=o;return q|0}if(!(Qf(a+68|0,c)|0)){q=0;u=o;return q|0}q=f[k>>2]|0;f[m>>2]=f[d>>2];f[n>>2]=f[m>>2];ub(a,q,n);q=1;u=o;return q|0}function Re(a,c,d){a=a|0;c=c|0;d=d|0;var e=0,g=0,i=0;switch(b[a+24>>0]|0){case 1:{g=f[c>>2]|0;e=a+48|0;c=f[e>>2]|0;e=f[e+4>>2]|0;i=a+40|0;e=Ho(kn(f[i>>2]|0,f[i+4>>2]|0,g|0,((g|0)<0)<<31>>31|0)|0,I|0,c|0,e|0)|0;c=d;f[c>>2]=h[(f[f[a>>2]>>2]|0)+e>>0];f[c+4>>2]=0;a=d+8|0;f[a>>2]=0;f[a+4>>2]=0;f[a+8>>2]=0;f[a+12>>2]=0;a=1;return a|0}case 2:{e=f[c>>2]|0;g=a+48|0;i=f[g>>2]|0;g=f[g+4>>2]|0;c=a+40|0;g=(Ho(kn(f[c>>2]|0,f[c+4>>2]|0,e|0,((e|0)<0)<<31>>31|0)|0,I|0,i|0,g|0)|0)+(f[f[a>>2]>>2]|0)|0;g=h[g>>0]|h[g+1>>0]<<8;i=d;f[i>>2]=g&255;f[i+4>>2]=0;i=d+8|0;f[i>>2]=(g&65535)>>>8&65535;f[i+4>>2]=0;i=d+16|0;f[i>>2]=0;f[i+4>>2]=0;i=1;return i|0}case 3:{i=f[c>>2]|0;e=a+48|0;g=f[e>>2]|0;e=f[e+4>>2]|0;c=a+40|0;a=(Ho(kn(f[c>>2]|0,f[c+4>>2]|0,i|0,((i|0)<0)<<31>>31|0)|0,I|0,g|0,e|0)|0)+(f[f[a>>2]>>2]|0)|0;e=b[a+1>>0]|0;g=b[a+2>>0]|0;i=d;f[i>>2]=h[a>>0];f[i+4>>2]=0;i=d+8|0;f[i>>2]=e&255;f[i+4>>2]=0;i=d+16|0;f[i>>2]=g&255;f[i+4>>2]=0;i=1;return i|0}case 4:{e=f[c>>2]|0;g=a+48|0;i=f[g>>2]|0;g=f[g+4>>2]|0;c=a+40|0;g=(Ho(kn(f[c>>2]|0,f[c+4>>2]|0,e|0,((e|0)<0)<<31>>31|0)|0,I|0,i|0,g|0)|0)+(f[f[a>>2]>>2]|0)|0;g=h[g>>0]|h[g+1>>0]<<8|h[g+2>>0]<<16|h[g+3>>0]<<24;i=d;f[i>>2]=g&255;f[i+4>>2]=0;i=d+8|0;f[i>>2]=g>>>8&255;f[i+4>>2]=0;i=d+16|0;f[i>>2]=g>>>16&255;f[i+4>>2]=0;i=1;return i|0}default:{i=0;return i|0}}return 0}function Se(a,b,c,d,e,g){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;g=g|0;var h=0,i=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0,v=0,w=0;p=f[a+32>>2]|0;q=f[a+36>>2]|0;s=e>>>0>1073741823?-1:e<<2;r=Zq(s)|0;ej(r|0,0,s|0)|0;s=a+8|0;mi(s,r,b,c);n=a+40|0;g=f[n>>2]|0;a=f[g+4>>2]|0;d=f[g>>2]|0;m=a-d|0;o=m>>2;if((m|0)<=4){_q(r);return 1}m=p+64|0;k=p+28|0;l=(e|0)>0;h=a;a=1;while(1){if(h-d>>2>>>0<=a>>>0){Kp(g);d=f[g>>2]|0}d=f[d+(a<<2)>>2]|0;j=X(a,e)|0;if((!((d|0)<0?1:(1<<(d&31)&f[(f[p>>2]|0)+(d>>>5<<2)>>2]|0)!=0)?(w=f[(f[(f[m>>2]|0)+12>>2]|0)+(d<<2)>>2]|0,(w|0)>=0):0)?(v=f[k>>2]|0,i=f[q>>2]|0,t=f[i+(f[v+(w<<2)>>2]<<2)>>2]|0,u=w+1|0,u=f[i+(f[v+((((u|0)%3|0|0)==0?w+-2|0:u)<<2)>>2]<<2)>>2]|0,v=f[i+(f[v+((((w>>>0)%3|0|0)==0?2:-1)+w<<2)>>2]<<2)>>2]|0,(t|0)<(a|0)&(u|0)<(a|0)&(v|0)<(a|0)):0){g=X(t,e)|0;h=X(u,e)|0;i=X(v,e)|0;if(l){d=0;do{f[r+(d<<2)>>2]=(f[c+(d+i<<2)>>2]|0)+(f[c+(d+h<<2)>>2]|0)-(f[c+(d+g<<2)>>2]|0);d=d+1|0}while((d|0)!=(e|0))}mi(s,r,b+(j<<2)|0,c+(j<<2)|0)}else mi(s,c+((X(a+-1|0,e)|0)<<2)|0,b+(j<<2)|0,c+(j<<2)|0);a=a+1|0;if((a|0)>=(o|0))break;h=f[n>>2]|0;g=h;d=f[h>>2]|0;h=f[h+4>>2]|0}_q(r);return 1}function Te(a,b){a=a|0;b=b|0;var c=0,d=0,e=0,g=0,i=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0;q=u;u=u+16|0;p=q;i=b+8|0;g=i;j=f[g>>2]|0;g=f[g+4>>2]|0;o=b+16|0;d=o;c=f[d>>2]|0;d=Ho(c|0,f[d+4>>2]|0,4,0)|0;e=I;if((g|0)<(e|0)|(g|0)==(e|0)&j>>>0>>0){p=0;u=q;return p|0}g=(f[b>>2]|0)+c|0;g=h[g>>0]|h[g+1>>0]<<8|h[g+2>>0]<<16|h[g+3>>0]<<24;j=o;f[j>>2]=d;f[j+4>>2]=e;if((g|0)<0){p=0;u=q;return p|0}Fe(a+76|0,g,0);xq(p);if(Ff(p,b)|0){if((g|0)>0){c=a+76|0;d=0;e=1;do{e=e^((Tk(p)|0)^1);j=(f[c>>2]|0)+(d>>>5<<2)|0;r=1<<(d&31);s=f[j>>2]|0;f[j>>2]=e?s|r:s&~r;d=d+1|0}while((d|0)<(g|0))}d=i;c=f[d>>2]|0;d=f[d+4>>2]|0;g=o;e=f[g>>2]|0;g=f[g+4>>2]|0;i=Ho(e|0,g|0,4,0)|0;j=I;if(!((d|0)<(j|0)|(d|0)==(j|0)&c>>>0>>0)?(k=f[b>>2]|0,l=k+e|0,l=h[l>>0]|h[l+1>>0]<<8|h[l+2>>0]<<16|h[l+3>>0]<<24,m=o,f[m>>2]=i,f[m+4>>2]=j,m=Ho(e|0,g|0,8,0)|0,n=I,!((d|0)<(n|0)|(d|0)==(n|0)&c>>>0>>0)):0){s=k+i|0;s=h[s>>0]|h[s+1>>0]<<8|h[s+2>>0]<<16|h[s+3>>0]<<24;c=o;f[c>>2]=m;f[c+4>>2]=n;f[a+12>>2]=l;f[a+16>>2]=s;s=s+(1-l)|0;f[a+20>>2]=s;c=(s|0)/2|0;d=a+24|0;f[d>>2]=c;f[a+28>>2]=0-c;if(!(s&1)){f[d>>2]=c+-1;c=1}else c=1}else c=0}else c=0;fr(p);s=c;u=q;return s|0}function Ue(a,c,d){a=a|0;c=c|0;d=d|0;var e=0,g=0,i=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0;o=u;u=u+16|0;n=o+8|0;m=o;i=c+8|0;k=i;e=f[k>>2]|0;k=f[k+4>>2]|0;l=c+16|0;j=l;g=f[j>>2]|0;j=f[j+4>>2]|0;p=Ho(g|0,j|0,4,0)|0;q=I;if((k|0)<(q|0)|(k|0)==(q|0)&e>>>0

>>0)i=k;else{g=(f[c>>2]|0)+g|0;g=h[g>>0]|h[g+1>>0]<<8|h[g+2>>0]<<16|h[g+3>>0]<<24;b[a>>0]=g;b[a+1>>0]=g>>8;b[a+2>>0]=g>>16;b[a+3>>0]=g>>24;g=l;g=Ho(f[g>>2]|0,f[g+4>>2]|0,4,0)|0;j=I;e=l;f[e>>2]=g;f[e+4>>2]=j;e=i;i=f[e+4>>2]|0;e=f[e>>2]|0}k=a+4|0;q=Ho(g|0,j|0,4,0)|0;p=I;if((i|0)<(p|0)|(i|0)==(p|0)&e>>>0>>0)e=f[k>>2]|0;else{e=(f[c>>2]|0)+g|0;e=h[e>>0]|h[e+1>>0]<<8|h[e+2>>0]<<16|h[e+3>>0]<<24;b[k>>0]=e;b[k+1>>0]=e>>8;b[k+2>>0]=e>>16;b[k+3>>0]=e>>24;p=l;p=Ho(f[p>>2]|0,f[p+4>>2]|0,4,0)|0;q=l;f[q>>2]=p;f[q+4>>2]=I}if(!e){q=1;u=o;return q|0}if(!(Qf(a+12|0,c)|0)){q=0;u=o;return q|0}if(!(Qf(a+32|0,c)|0)){q=0;u=o;return q|0}if(!(Qf(a+52|0,c)|0)){q=0;u=o;return q|0}if(!(Qf(a+72|0,c)|0)){q=0;u=o;return q|0}q=f[k>>2]|0;c=d;d=f[c+4>>2]|0;p=m;f[p>>2]=f[c>>2];f[p+4>>2]=d;f[n>>2]=f[m>>2];f[n+4>>2]=f[m+4>>2];hb(a,q,n);q=1;u=o;return q|0}function Ve(a,c,d){a=a|0;c=c|0;d=d|0;var e=0,g=0,i=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0;o=u;u=u+16|0;n=o+8|0;m=o;i=c+8|0;k=i;e=f[k>>2]|0;k=f[k+4>>2]|0;l=c+16|0;j=l;g=f[j>>2]|0;j=f[j+4>>2]|0;p=Ho(g|0,j|0,4,0)|0;q=I;if((k|0)<(q|0)|(k|0)==(q|0)&e>>>0

>>0)i=k;else{g=(f[c>>2]|0)+g|0;g=h[g>>0]|h[g+1>>0]<<8|h[g+2>>0]<<16|h[g+3>>0]<<24;b[a>>0]=g;b[a+1>>0]=g>>8;b[a+2>>0]=g>>16;b[a+3>>0]=g>>24;g=l;g=Ho(f[g>>2]|0,f[g+4>>2]|0,4,0)|0;j=I;e=l;f[e>>2]=g;f[e+4>>2]=j;e=i;i=f[e+4>>2]|0;e=f[e>>2]|0}k=a+4|0;q=Ho(g|0,j|0,4,0)|0;p=I;if((i|0)<(p|0)|(i|0)==(p|0)&e>>>0>>0)e=f[k>>2]|0;else{e=(f[c>>2]|0)+g|0;e=h[e>>0]|h[e+1>>0]<<8|h[e+2>>0]<<16|h[e+3>>0]<<24;b[k>>0]=e;b[k+1>>0]=e>>8;b[k+2>>0]=e>>16;b[k+3>>0]=e>>24;p=l;p=Ho(f[p>>2]|0,f[p+4>>2]|0,4,0)|0;q=l;f[q>>2]=p;f[q+4>>2]=I}if(!e){q=1;u=o;return q|0}if(!(Qf(a+12|0,c)|0)){q=0;u=o;return q|0}if(!(Qf(a+32|0,c)|0)){q=0;u=o;return q|0}if(!(Qf(a+52|0,c)|0)){q=0;u=o;return q|0}if(!(Qf(a+72|0,c)|0)){q=0;u=o;return q|0}q=f[k>>2]|0;c=d;d=f[c+4>>2]|0;p=m;f[p>>2]=f[c>>2];f[p+4>>2]=d;f[n>>2]=f[m>>2];f[n+4>>2]=f[m+4>>2];fb(a,q,n);q=1;u=o;return q|0}function We(a,c,d){a=a|0;c=c|0;d=d|0;var e=0,g=0,i=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0;o=u;u=u+16|0;n=o+8|0;m=o;i=c+8|0;k=i;e=f[k>>2]|0;k=f[k+4>>2]|0;l=c+16|0;j=l;g=f[j>>2]|0;j=f[j+4>>2]|0;p=Ho(g|0,j|0,4,0)|0;q=I;if((k|0)<(q|0)|(k|0)==(q|0)&e>>>0

>>0)i=k;else{g=(f[c>>2]|0)+g|0;g=h[g>>0]|h[g+1>>0]<<8|h[g+2>>0]<<16|h[g+3>>0]<<24;b[a>>0]=g;b[a+1>>0]=g>>8;b[a+2>>0]=g>>16;b[a+3>>0]=g>>24;g=l;g=Ho(f[g>>2]|0,f[g+4>>2]|0,4,0)|0;j=I;e=l;f[e>>2]=g;f[e+4>>2]=j;e=i;i=f[e+4>>2]|0;e=f[e>>2]|0}k=a+4|0;q=Ho(g|0,j|0,4,0)|0;p=I;if((i|0)<(p|0)|(i|0)==(p|0)&e>>>0>>0)e=f[k>>2]|0;else{e=(f[c>>2]|0)+g|0;e=h[e>>0]|h[e+1>>0]<<8|h[e+2>>0]<<16|h[e+3>>0]<<24;b[k>>0]=e;b[k+1>>0]=e>>8;b[k+2>>0]=e>>16;b[k+3>>0]=e>>24;p=l;p=Ho(f[p>>2]|0,f[p+4>>2]|0,4,0)|0;q=l;f[q>>2]=p;f[q+4>>2]=I}if(!e){q=1;u=o;return q|0}if(!(Ff(a+12|0,c)|0)){q=0;u=o;return q|0}if(!(Qf(a+28|0,c)|0)){q=0;u=o;return q|0}if(!(Qf(a+48|0,c)|0)){q=0;u=o;return q|0}if(!(Qf(a+68|0,c)|0)){q=0;u=o;return q|0}q=f[k>>2]|0;c=d;d=f[c+4>>2]|0;p=m;f[p>>2]=f[c>>2];f[p+4>>2]=d;f[n>>2]=f[m>>2];f[n+4>>2]=f[m+4>>2];tb(a,q,n);q=1;u=o;return q|0}function Xe(a,c,d){a=a|0;c=c|0;d=d|0;var e=0,g=0,i=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0;o=u;u=u+16|0;n=o+8|0;m=o;i=c+8|0;k=i;e=f[k>>2]|0;k=f[k+4>>2]|0;l=c+16|0;j=l;g=f[j>>2]|0;j=f[j+4>>2]|0;p=Ho(g|0,j|0,4,0)|0;q=I;if((k|0)<(q|0)|(k|0)==(q|0)&e>>>0

>>0)i=k;else{g=(f[c>>2]|0)+g|0;g=h[g>>0]|h[g+1>>0]<<8|h[g+2>>0]<<16|h[g+3>>0]<<24;b[a>>0]=g;b[a+1>>0]=g>>8;b[a+2>>0]=g>>16;b[a+3>>0]=g>>24;g=l;g=Ho(f[g>>2]|0,f[g+4>>2]|0,4,0)|0;j=I;e=l;f[e>>2]=g;f[e+4>>2]=j;e=i;i=f[e+4>>2]|0;e=f[e>>2]|0}k=a+4|0;q=Ho(g|0,j|0,4,0)|0;p=I;if((i|0)<(p|0)|(i|0)==(p|0)&e>>>0>>0)e=f[k>>2]|0;else{e=(f[c>>2]|0)+g|0;e=h[e>>0]|h[e+1>>0]<<8|h[e+2>>0]<<16|h[e+3>>0]<<24;b[k>>0]=e;b[k+1>>0]=e>>8;b[k+2>>0]=e>>16;b[k+3>>0]=e>>24;p=l;p=Ho(f[p>>2]|0,f[p+4>>2]|0,4,0)|0;q=l;f[q>>2]=p;f[q+4>>2]=I}if(!e){q=1;u=o;return q|0}if(!(Ff(a+12|0,c)|0)){q=0;u=o;return q|0}if(!(Qf(a+28|0,c)|0)){q=0;u=o;return q|0}if(!(Qf(a+48|0,c)|0)){q=0;u=o;return q|0}if(!(Qf(a+68|0,c)|0)){q=0;u=o;return q|0}q=f[k>>2]|0;c=d;d=f[c+4>>2]|0;p=m;f[p>>2]=f[c>>2];f[p+4>>2]=d;f[n>>2]=f[m>>2];f[n+4>>2]=f[m+4>>2];sb(a,q,n);q=1;u=o;return q|0}function Ye(a,b){a=a|0;b=b|0;var c=0,d=0,e=0,g=0,i=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0;q=u;u=u+16|0;p=q;i=b+8|0;g=i;j=f[g>>2]|0;g=f[g+4>>2]|0;o=b+16|0;d=o;c=f[d>>2]|0;d=Ho(c|0,f[d+4>>2]|0,4,0)|0;e=I;if((g|0)<(e|0)|(g|0)==(e|0)&j>>>0>>0){p=0;u=q;return p|0}g=(f[b>>2]|0)+c|0;g=h[g>>0]|h[g+1>>0]<<8|h[g+2>>0]<<16|h[g+3>>0]<<24;j=o;f[j>>2]=d;f[j+4>>2]=e;if((g|0)<0){p=0;u=q;return p|0}e=a+76|0;Fe(e,g,0);xq(p);if(Ff(p,b)|0){if((g|0)>0){c=0;d=1;do{d=d^((Tk(p)|0)^1);j=(f[e>>2]|0)+(c>>>5<<2)|0;r=1<<(c&31);s=f[j>>2]|0;f[j>>2]=d?s|r:s&~r;c=c+1|0}while((c|0)<(g|0))}d=i;c=f[d>>2]|0;d=f[d+4>>2]|0;g=o;e=f[g>>2]|0;g=f[g+4>>2]|0;i=Ho(e|0,g|0,4,0)|0;j=I;if(!((d|0)<(j|0)|(d|0)==(j|0)&c>>>0>>0)?(k=f[b>>2]|0,l=k+e|0,l=h[l>>0]|h[l+1>>0]<<8|h[l+2>>0]<<16|h[l+3>>0]<<24,m=o,f[m>>2]=i,f[m+4>>2]=j,m=Ho(e|0,g|0,8,0)|0,n=I,!((d|0)<(n|0)|(d|0)==(n|0)&c>>>0>>0)):0){s=k+i|0;s=h[s>>0]|h[s+1>>0]<<8|h[s+2>>0]<<16|h[s+3>>0]<<24;c=o;f[c>>2]=m;f[c+4>>2]=n;f[a+12>>2]=l;f[a+16>>2]=s;s=s+(1-l)|0;f[a+20>>2]=s;c=(s|0)/2|0;d=a+24|0;f[d>>2]=c;f[a+28>>2]=0-c;if(!(s&1)){f[d>>2]=c+-1;c=1}else c=1}else c=0}else c=0;fr(p);s=c;u=q;return s|0}function Ze(a,c,d){a=a|0;c=c|0;d=d|0;var e=0,g=0,i=0;switch(b[a+24>>0]|0){case 1:{g=f[c>>2]|0;c=a+48|0;e=f[c>>2]|0;c=f[c+4>>2]|0;i=a+40|0;a=(Ho(kn(f[i>>2]|0,f[i+4>>2]|0,g|0,((g|0)<0)<<31>>31|0)|0,I|0,e|0,c|0)|0)+(f[f[a>>2]>>2]|0)|0;c=d;f[c>>2]=h[a>>0]|h[a+1>>0]<<8|h[a+2>>0]<<16|h[a+3>>0]<<24;f[c+4>>2]=0;c=0;a=0;break}case 2:{g=f[c>>2]|0;c=a+48|0;i=f[c>>2]|0;c=f[c+4>>2]|0;e=a+40|0;c=(Ho(kn(f[e>>2]|0,f[e+4>>2]|0,g|0,((g|0)<0)<<31>>31|0)|0,I|0,i|0,c|0)|0)+(f[f[a>>2]>>2]|0)|0;i=c;c=c+4|0;c=h[c>>0]|h[c+1>>0]<<8|h[c+2>>0]<<16|h[c+3>>0]<<24;a=d;f[a>>2]=h[i>>0]|h[i+1>>0]<<8|h[i+2>>0]<<16|h[i+3>>0]<<24;f[a+4>>2]=0;a=0;break}case 3:{g=f[c>>2]|0;i=a+48|0;c=f[i>>2]|0;i=f[i+4>>2]|0;e=a+40|0;i=(Ho(kn(f[e>>2]|0,f[e+4>>2]|0,g|0,((g|0)<0)<<31>>31|0)|0,I|0,c|0,i|0)|0)+(f[f[a>>2]>>2]|0)|0;c=i+4|0;c=h[c>>0]|h[c+1>>0]<<8|h[c+2>>0]<<16|h[c+3>>0]<<24;a=d;f[a>>2]=h[i>>0]|h[i+1>>0]<<8|h[i+2>>0]<<16|h[i+3>>0]<<24;f[a+4>>2]=0;a=0;break}case 4:{g=f[c>>2]|0;i=a+48|0;c=f[i>>2]|0;i=f[i+4>>2]|0;e=a+40|0;i=(Ho(kn(f[e>>2]|0,f[e+4>>2]|0,g|0,((g|0)<0)<<31>>31|0)|0,I|0,c|0,i|0)|0)+(f[f[a>>2]>>2]|0)|0;c=i+4|0;c=h[c>>0]|h[c+1>>0]<<8|h[c+2>>0]<<16|h[c+3>>0]<<24;a=d;f[a>>2]=h[i>>0]|h[i+1>>0]<<8|h[i+2>>0]<<16|h[i+3>>0]<<24;f[a+4>>2]=0;a=0;break}default:{i=0;return i|0}}i=d+8|0;f[i>>2]=c;f[i+4>>2]=a;i=1;return i|0}function _e(a,c){a=a|0;c=c|0;var d=0,e=0,g=0,h=0,i=0,j=0,k=0,l=0,m=0,n=0,o=0;m=u;u=u+16|0;k=m;if(!(ic(a,c)|0)){a=0;u=m;return a|0}j=Sa[f[(f[a>>2]|0)+24>>2]&255](a)|0;l=a+36|0;h=a+40|0;d=f[h>>2]|0;e=f[l>>2]|0;g=d-e>>2;if(j>>>0<=g>>>0){if(j>>>0>>0?(i=e+(j<<2)|0,(d|0)!=(i|0)):0)do{g=d+-4|0;f[h>>2]=g;d=f[g>>2]|0;f[g>>2]=0;if(d|0)Pa[f[(f[d>>2]|0)+4>>2]&127](d);d=f[h>>2]|0}while((d|0)!=(i|0))}else ig(l,j-g|0);g=c+8|0;if((j|0)<=0){a=1;u=m;return a|0}i=c+16|0;h=0;while(1){n=g;o=f[n+4>>2]|0;e=i;d=f[e>>2]|0;e=f[e+4>>2]|0;if(!((o|0)>(e|0)|((o|0)==(e|0)?(f[n>>2]|0)>>>0>d>>>0:0))){d=0;e=19;break}o=b[(f[c>>2]|0)+d>>0]|0;d=Ho(d|0,e|0,1,0)|0;n=i;f[n>>2]=d;f[n+4>>2]=I;Ta[f[(f[a>>2]|0)+48>>2]&7](k,a,o);o=(f[l>>2]|0)+(h<<2)|0;n=f[k>>2]|0;f[k>>2]=0;d=f[o>>2]|0;f[o>>2]=n;if(d|0)Pa[f[(f[d>>2]|0)+4>>2]&127](d);d=f[k>>2]|0;f[k>>2]=0;if(d|0)Pa[f[(f[d>>2]|0)+4>>2]&127](d);d=f[(f[l>>2]|0)+(h<<2)>>2]|0;if(!d){d=0;e=19;break}e=f[(f[d>>2]|0)+8>>2]|0;n=Sa[f[(f[a>>2]|0)+28>>2]&255](a)|0;o=Wa[f[(f[a>>2]|0)+20>>2]&127](a,h)|0;h=h+1|0;if(!(Na[e&31](d,n,o)|0)){d=0;e=19;break}if((h|0)>=(j|0)){d=1;e=19;break}}if((e|0)==19){u=m;return d|0}return 0}function $e(a,c,d){a=a|0;c=c|0;d=d|0;var e=0,g=0,h=0,i=0,j=0,k=0,l=0,m=0,n=0;n=u;u=u+144|0;i=n+136|0;m=n+32|0;l=n;e=f[(f[c+4>>2]|0)+44>>2]|0;h=ln(124)|0;f[h+4>>2]=0;f[h>>2]=4684;f[h+12>>2]=4708;f[h+100>>2]=0;f[h+104>>2]=0;f[h+108>>2]=0;j=h+16|0;k=j+80|0;do{f[j>>2]=0;j=j+4|0}while((j|0)<(k|0));f[h+112>>2]=e;f[h+116>>2]=d;f[h+120>>2]=0;g=h;f[m+4>>2]=4708;f[m+92>>2]=0;f[m+96>>2]=0;f[m+100>>2]=0;j=m+8|0;k=j+80|0;do{f[j>>2]=0;j=j+4|0}while((j|0)<(k|0));k=f[c+8>>2]|0;f[l>>2]=4708;j=l+4|0;c=j+4|0;f[c>>2]=0;f[c+4>>2]=0;f[c+8>>2]=0;f[c+12>>2]=0;f[c+16>>2]=0;f[c+20>>2]=0;c=k;f[j>>2]=c;c=((f[c+4>>2]|0)-(f[k>>2]|0)>>2>>>0)/3|0;b[i>>0]=0;Yg(l+8|0,c,i);Pa[f[(f[l>>2]|0)+8>>2]&127](l);f[m>>2]=f[j>>2];mg(m+4|0,l)|0;f[m+36>>2]=k;f[m+40>>2]=d;f[m+44>>2]=e;f[m+48>>2]=h;qg(h,m);f[a>>2]=g;f[l>>2]=4708;e=f[l+20>>2]|0;if(e|0)ar(e);e=f[l+8>>2]|0;if(!e){Hi(m);u=n;return}ar(e);Hi(m);u=n;return}function af(a,c){a=a|0;c=c|0;var d=0,e=0,g=0,h=0,i=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0;r=u;u=u+32|0;o=r+12|0;p=r;n=pl(c,0)|0;if(!n){f[a>>2]=0;u=r;return}j=c+84|0;i=c+88|0;c=f[i>>2]|0;e=f[j>>2]|0;d=c-e|0;h=(d|0)/12|0;f[o>>2]=0;q=o+4|0;f[q>>2]=0;f[o+8>>2]=0;if(!d)g=0;else{if(h>>>0>357913941){Lp(o);r=Ia(4)|0;Eq(r);sa(r|0,1344,125)}g=ln(d)|0;f[q>>2]=g;f[o>>2]=g;f[o+8>>2]=g+(h*12|0);e=g;d=g;c=h;while(1){f[e>>2]=0;f[e+4>>2]=0;f[e+8>>2]=0;d=d+12|0;c=c+-1|0;if(!c)break;else e=d}f[q>>2]=d;e=f[j>>2]|0;c=f[i>>2]|0}f[p>>2]=0;f[p+4>>2]=0;f[p+8>>2]=0;c=c-e|0;if((c|0)>0){k=n+68|0;l=p+4|0;m=p+8|0;j=(b[n+84>>0]|0)==0;i=(c|0)/12|0;h=0;do{c=f[e+(h*12|0)>>2]|0;if(j){d=f[k>>2]|0;c=f[d+(c<<2)>>2]|0;f[p>>2]=c;f[l>>2]=f[d+(f[e+(h*12|0)+4>>2]<<2)>>2];d=d+(f[e+(h*12|0)+8>>2]<<2)|0}else{f[p>>2]=c;f[l>>2]=f[e+(h*12|0)+4>>2];d=e+(h*12|0)+8|0}n=f[d>>2]|0;f[m>>2]=n;f[g+(h*12|0)>>2]=c;f[g+(h*12|0)+4>>2]=f[l>>2];f[g+(h*12|0)+8>>2]=n;h=h+1|0}while((h|0)<(i|0))}mk(a,o);d=f[o>>2]|0;if(d|0){c=f[q>>2]|0;if((c|0)!=(d|0))f[q>>2]=c+(~(((c+-12-d|0)>>>0)/12|0)*12|0);ar(d)}u=r;return}function bf(a,c,d){a=a|0;c=c|0;d=d|0;var e=0,g=0,i=0;switch(b[a+24>>0]|0){case 1:{g=f[c>>2]|0;c=a+48|0;e=f[c>>2]|0;c=f[c+4>>2]|0;i=a+40|0;a=(Ho(kn(f[i>>2]|0,f[i+4>>2]|0,g|0,((g|0)<0)<<31>>31|0)|0,I|0,e|0,c|0)|0)+(f[f[a>>2]>>2]|0)|0;c=d;f[c>>2]=(h[a>>0]|h[a+1>>0]<<8)&65535;f[c+4>>2]=0;c=0;a=0;break}case 2:{g=f[c>>2]|0;c=a+48|0;i=f[c>>2]|0;c=f[c+4>>2]|0;e=a+40|0;c=(Ho(kn(f[e>>2]|0,f[e+4>>2]|0,g|0,((g|0)<0)<<31>>31|0)|0,I|0,i|0,c|0)|0)+(f[f[a>>2]>>2]|0)|0;c=h[c>>0]|h[c+1>>0]<<8|h[c+2>>0]<<16|h[c+3>>0]<<24;a=d;f[a>>2]=c&65535;f[a+4>>2]=0;c=c>>>16;a=0;break}case 3:{g=f[c>>2]|0;i=a+48|0;c=f[i>>2]|0;i=f[i+4>>2]|0;e=a+40|0;i=(Ho(kn(f[e>>2]|0,f[e+4>>2]|0,g|0,((g|0)<0)<<31>>31|0)|0,I|0,c|0,i|0)|0)+(f[f[a>>2]>>2]|0)|0;c=i+2|0;c=h[c>>0]|h[c+1>>0]<<8;a=d;f[a>>2]=(h[i>>0]|h[i+1>>0]<<8)&65535;f[a+4>>2]=0;c=c&65535;a=0;break}case 4:{g=f[c>>2]|0;c=a+48|0;i=f[c>>2]|0;c=f[c+4>>2]|0;e=a+40|0;c=(Ho(kn(f[e>>2]|0,f[e+4>>2]|0,g|0,((g|0)<0)<<31>>31|0)|0,I|0,i|0,c|0)|0)+(f[f[a>>2]>>2]|0)|0;a=c;a=h[a>>0]|h[a+1>>0]<<8|h[a+2>>0]<<16|h[a+3>>0]<<24;c=c+4|0;c=h[c>>0]|h[c+1>>0]<<8|h[c+2>>0]<<16|h[c+3>>0]<<24;i=d;f[i>>2]=a&65535;f[i+4>>2]=0;c=(Tn(a|0,c|0,16)|0)&65535;a=0;break}default:{i=0;return i|0}}i=d+8|0;f[i>>2]=c;f[i+4>>2]=a;i=1;return i|0}function cf(a,c,d,e,g){a=a|0;c=c|0;d=d|0;e=e|0;g=g|0;var h=La,i=0,j=0,k=0,l=0,m=0,o=0,p=0,q=0,r=0,s=0,t=0,v=0,w=0,x=La,y=La,z=La,A=La,B=0,C=0;w=u;u=u+32|0;t=w+16|0;v=w;h=$(n[e+4>>2]);if(!(h>=$(0.0)))Ga(17520,17540,66,17607);s=(1<>2])+-1|0;vp(t);En(t,h,s);e=f[c>>2]|0;if((e|0)==(f[d>>2]|0)){t=g;t=f[t>>2]|0;g=g+4|0;g=f[g>>2]|0;v=a;d=v;f[d>>2]=t;v=v+4|0;f[v>>2]=g;u=w;return}p=t+4|0;q=v+4|0;r=v+8|0;j=g+4|0;l=f[g>>2]|0;o=l+84|0;k=l+68|0;m=l+40|0;l=l+64|0;i=f[j>>2]|0;do{B=(f[e>>2]|0)-s|0;c=(B|0)<0;y=$((c?0-B|0:B)|0);h=$(n[p>>2]);y=$(h*y);x=$(-y);A=$(n[t>>2]);y=$(A*(c?x:y));c=(f[e+4>>2]|0)-s|0;B=(c|0)<0;x=$(h*$((B?0-c|0:c)|0));z=$(-x);x=$(A*(B?z:x));B=(f[e+8>>2]|0)-s|0;c=(B|0)<0;h=$(h*$((c?0-B|0:B)|0));z=$(-h);h=$(A*(c?z:h));n[v>>2]=y;n[q>>2]=x;n[r>>2]=h;c=i;i=i+1|0;f[j>>2]=i;if(!(b[o>>0]|0))c=f[(f[k>>2]|0)+(c<<2)>>2]|0;C=m;B=f[C>>2]|0;c=kn(c|0,((c|0)<0)<<31>>31|0,B|0,f[C+4>>2]|0)|0;Mg((f[f[l>>2]>>2]|0)+c|0,v|0,B|0)|0;e=e+12|0}while((e|0)!=(f[d>>2]|0));B=g;g=B;g=f[g>>2]|0;B=B+4|0;B=f[B>>2]|0;C=a;v=C;f[v>>2]=g;C=C+4|0;f[C>>2]=B;u=w;return}function df(a,c,d){a=a|0;c=c|0;d=d|0;var e=0,g=0,i=0;switch(b[a+24>>0]|0){case 1:{g=f[c>>2]|0;c=a+48|0;e=f[c>>2]|0;c=f[c+4>>2]|0;i=a+40|0;c=Ho(kn(f[i>>2]|0,f[i+4>>2]|0,g|0,((g|0)<0)<<31>>31|0)|0,I|0,e|0,c|0)|0;a=b[(f[f[a>>2]>>2]|0)+c>>0]|0;c=d;f[c>>2]=a;f[c+4>>2]=((a|0)<0)<<31>>31;c=0;a=0;break}case 2:{g=f[c>>2]|0;i=a+48|0;c=f[i>>2]|0;i=f[i+4>>2]|0;e=a+40|0;a=(Ho(kn(f[e>>2]|0,f[e+4>>2]|0,g|0,((g|0)<0)<<31>>31|0)|0,I|0,c|0,i|0)|0)+(f[f[a>>2]>>2]|0)|0;a=h[a>>0]|h[a+1>>0]<<8;i=(a&255)<<24>>24;c=d;f[c>>2]=i;f[c+4>>2]=((i|0)<0)<<31>>31;a=((a&65535)>>>8&255)<<24>>24;c=a;a=((a|0)<0)<<31>>31;break}case 3:{g=f[c>>2]|0;i=a+48|0;c=f[i>>2]|0;i=f[i+4>>2]|0;e=a+40|0;i=(Ho(kn(f[e>>2]|0,f[e+4>>2]|0,g|0,((g|0)<0)<<31>>31|0)|0,I|0,c|0,i|0)|0)+(f[f[a>>2]>>2]|0)|0;a=b[i+1>>0]|0;i=b[i>>0]|0;c=d;f[c>>2]=i;f[c+4>>2]=((i|0)<0)<<31>>31;a=a<<24>>24;c=a;a=((a|0)<0)<<31>>31;break}case 4:{g=f[c>>2]|0;i=a+48|0;c=f[i>>2]|0;i=f[i+4>>2]|0;e=a+40|0;a=(Ho(kn(f[e>>2]|0,f[e+4>>2]|0,g|0,((g|0)<0)<<31>>31|0)|0,I|0,c|0,i|0)|0)+(f[f[a>>2]>>2]|0)|0;a=h[a>>0]|h[a+1>>0]<<8|h[a+2>>0]<<16|h[a+3>>0]<<24;i=(a&255)<<24>>24;c=d;f[c>>2]=i;f[c+4>>2]=((i|0)<0)<<31>>31;a=(a>>>8&255)<<24>>24;c=a;a=((a|0)<0)<<31>>31;break}default:{i=0;return i|0}}i=d+8|0;f[i>>2]=c;f[i+4>>2]=a;i=1;return i|0}function ef(a,c,d){a=a|0;c=c|0;d=d|0;var e=La,g=La,i=0,j=0,k=0;switch(b[a+24>>0]|0){case 1:{j=f[c>>2]|0;c=a+48|0;i=f[c>>2]|0;c=f[c+4>>2]|0;k=a+40|0;c=(Ho(kn(f[k>>2]|0,f[k+4>>2]|0,j|0,((j|0)<0)<<31>>31|0)|0,I|0,i|0,c|0)|0)+(f[f[a>>2]>>2]|0)|0;g=$((h[c>>0]|h[c+1>>0]<<8|h[c+2>>0]<<16|h[c+3>>0]<<24)>>>0);e=$(g*$(2.32830644e-10));e=(b[a+32>>0]|0)==0?g:e;break}case 2:{i=f[c>>2]|0;k=a+48|0;j=f[k>>2]|0;k=f[k+4>>2]|0;c=a+40|0;k=(Ho(kn(f[c>>2]|0,f[c+4>>2]|0,i|0,((i|0)<0)<<31>>31|0)|0,I|0,j|0,k|0)|0)+(f[f[a>>2]>>2]|0)|0;g=$((h[k>>0]|h[k+1>>0]<<8|h[k+2>>0]<<16|h[k+3>>0]<<24)>>>0);e=$(g*$(2.32830644e-10));e=(b[a+32>>0]|0)==0?g:e;break}case 3:{i=f[c>>2]|0;k=a+48|0;j=f[k>>2]|0;k=f[k+4>>2]|0;c=a+40|0;k=(Ho(kn(f[c>>2]|0,f[c+4>>2]|0,i|0,((i|0)<0)<<31>>31|0)|0,I|0,j|0,k|0)|0)+(f[f[a>>2]>>2]|0)|0;g=$((h[k>>0]|h[k+1>>0]<<8|h[k+2>>0]<<16|h[k+3>>0]<<24)>>>0);e=$(g*$(2.32830644e-10));e=(b[a+32>>0]|0)==0?g:e;break}case 4:{i=f[c>>2]|0;k=a+48|0;j=f[k>>2]|0;k=f[k+4>>2]|0;c=a+40|0;k=(Ho(kn(f[c>>2]|0,f[c+4>>2]|0,i|0,((i|0)<0)<<31>>31|0)|0,I|0,j|0,k|0)|0)+(f[f[a>>2]>>2]|0)|0;g=$((h[k>>0]|h[k+1>>0]<<8|h[k+2>>0]<<16|h[k+3>>0]<<24)>>>0);e=$(g*$(2.32830644e-10));e=(b[a+32>>0]|0)==0?g:e;break}default:{k=0;return k|0}}n[d>>2]=e;k=1;return k|0}function ff(a,c){a=a|0;c=c|0;var d=0,e=0,g=0,h=0,i=0,j=0,k=0,l=0;if(!(f[a+64>>2]|0)){d=ln(32)|0;wn(d);h=a+64|0;g=f[h>>2]|0;f[h>>2]=d;if(g){d=f[g>>2]|0;if(d|0){e=g+4|0;if((f[e>>2]|0)!=(d|0))f[e>>2]=d;ar(d)}ar(g);d=f[h>>2]|0}Ak(a,d,0,0,0,0);d=a}else d=a;if(!(Zi(d,c)|0))return;b[a+84>>0]=b[c+84>>0]|0;f[a+80>>2]=f[c+80>>2];if((a|0)!=(c|0))Mf(a+68|0,f[c+68>>2]|0,f[c+72>>2]|0);i=f[c+88>>2]|0;if(!i){a=a+88|0;d=f[a>>2]|0;f[a>>2]=0;if(!d)return;e=f[d+8>>2]|0;if(e|0){g=d+12|0;if((f[g>>2]|0)!=(e|0))f[g>>2]=e;ar(e)}ar(d);return}l=ln(40)|0;f[l>>2]=f[i>>2];e=l+8|0;g=i+8|0;f[e>>2]=0;j=l+12|0;f[j>>2]=0;d=l+16|0;f[d>>2]=0;c=i+12|0;h=(f[c>>2]|0)-(f[g>>2]|0)|0;if(h|0){if((h|0)<0)Lp(e);k=ln(h)|0;f[j>>2]=k;f[e>>2]=k;f[d>>2]=k+h;e=f[g>>2]|0;d=(f[c>>2]|0)-e|0;if((d|0)>0){Mg(k|0,e|0,d|0)|0;f[j>>2]=k+d}}g=l+24|0;k=i+24|0;f[g>>2]=f[k>>2];f[g+4>>2]=f[k+4>>2];f[g+8>>2]=f[k+8>>2];f[g+12>>2]=f[k+12>>2];a=a+88|0;g=f[a>>2]|0;f[a>>2]=l;if(!g)return;d=f[g+8>>2]|0;if(d|0){e=g+12|0;if((f[e>>2]|0)!=(d|0))f[e>>2]=d;ar(d)}ar(g);return}function gf(a,c,d){a=a|0;c=c|0;d=d|0;var e=La,g=La,i=0,j=0,k=0;switch(b[a+24>>0]|0){case 1:{j=f[c>>2]|0;c=a+48|0;i=f[c>>2]|0;c=f[c+4>>2]|0;k=a+40|0;c=(Ho(kn(f[k>>2]|0,f[k+4>>2]|0,j|0,((j|0)<0)<<31>>31|0)|0,I|0,i|0,c|0)|0)+(f[f[a>>2]>>2]|0)|0;g=$(h[c>>0]|h[c+1>>0]<<8|h[c+2>>0]<<16|h[c+3>>0]<<24|0);e=$(g*$(4.65661287e-10));e=(b[a+32>>0]|0)==0?g:e;break}case 2:{i=f[c>>2]|0;k=a+48|0;j=f[k>>2]|0;k=f[k+4>>2]|0;c=a+40|0;k=(Ho(kn(f[c>>2]|0,f[c+4>>2]|0,i|0,((i|0)<0)<<31>>31|0)|0,I|0,j|0,k|0)|0)+(f[f[a>>2]>>2]|0)|0;g=$(h[k>>0]|h[k+1>>0]<<8|h[k+2>>0]<<16|h[k+3>>0]<<24|0);e=$(g*$(4.65661287e-10));e=(b[a+32>>0]|0)==0?g:e;break}case 3:{i=f[c>>2]|0;k=a+48|0;j=f[k>>2]|0;k=f[k+4>>2]|0;c=a+40|0;k=(Ho(kn(f[c>>2]|0,f[c+4>>2]|0,i|0,((i|0)<0)<<31>>31|0)|0,I|0,j|0,k|0)|0)+(f[f[a>>2]>>2]|0)|0;g=$(h[k>>0]|h[k+1>>0]<<8|h[k+2>>0]<<16|h[k+3>>0]<<24|0);e=$(g*$(4.65661287e-10));e=(b[a+32>>0]|0)==0?g:e;break}case 4:{i=f[c>>2]|0;k=a+48|0;j=f[k>>2]|0;k=f[k+4>>2]|0;c=a+40|0;k=(Ho(kn(f[c>>2]|0,f[c+4>>2]|0,i|0,((i|0)<0)<<31>>31|0)|0,I|0,j|0,k|0)|0)+(f[f[a>>2]>>2]|0)|0;g=$(h[k>>0]|h[k+1>>0]<<8|h[k+2>>0]<<16|h[k+3>>0]<<24|0);e=$(g*$(4.65661287e-10));e=(b[a+32>>0]|0)==0?g:e;break}default:{k=0;return k|0}}n[d>>2]=e;k=1;return k|0}function hf(a,b,c){a=a|0;b=b|0;c=c|0;var d=0,e=0,g=0.0;a:do if(b>>>0<=20)do switch(b|0){case 9:{d=(f[c>>2]|0)+(4-1)&~(4-1);b=f[d>>2]|0;f[c>>2]=d+4;f[a>>2]=b;break a}case 10:{d=(f[c>>2]|0)+(4-1)&~(4-1);b=f[d>>2]|0;f[c>>2]=d+4;d=a;f[d>>2]=b;f[d+4>>2]=((b|0)<0)<<31>>31;break a}case 11:{d=(f[c>>2]|0)+(4-1)&~(4-1);b=f[d>>2]|0;f[c>>2]=d+4;d=a;f[d>>2]=b;f[d+4>>2]=0;break a}case 12:{d=(f[c>>2]|0)+(8-1)&~(8-1);b=d;e=f[b>>2]|0;b=f[b+4>>2]|0;f[c>>2]=d+8;d=a;f[d>>2]=e;f[d+4>>2]=b;break a}case 13:{e=(f[c>>2]|0)+(4-1)&~(4-1);d=f[e>>2]|0;f[c>>2]=e+4;d=(d&65535)<<16>>16;e=a;f[e>>2]=d;f[e+4>>2]=((d|0)<0)<<31>>31;break a}case 14:{e=(f[c>>2]|0)+(4-1)&~(4-1);d=f[e>>2]|0;f[c>>2]=e+4;e=a;f[e>>2]=d&65535;f[e+4>>2]=0;break a}case 15:{e=(f[c>>2]|0)+(4-1)&~(4-1);d=f[e>>2]|0;f[c>>2]=e+4;d=(d&255)<<24>>24;e=a;f[e>>2]=d;f[e+4>>2]=((d|0)<0)<<31>>31;break a}case 16:{e=(f[c>>2]|0)+(4-1)&~(4-1);d=f[e>>2]|0;f[c>>2]=e+4;e=a;f[e>>2]=d&255;f[e+4>>2]=0;break a}case 17:{e=(f[c>>2]|0)+(8-1)&~(8-1);g=+p[e>>3];f[c>>2]=e+8;p[a>>3]=g;break a}case 18:{e=(f[c>>2]|0)+(8-1)&~(8-1);g=+p[e>>3];f[c>>2]=e+8;p[a>>3]=g;break a}default:break a}while(0);while(0);return}function jf(a,b,c,d,e,g){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;g=g|0;var h=0,i=0,j=0,k=0,l=0,m=0,n=0;n=u;u=u+32|0;m=n;l=n+16|0;h=f[b+4>>2]|0;if((d|0)<=-1)Ga(17188,17204,63,17242);i=f[h+8>>2]|0;if(((f[h+12>>2]|0)-i>>2|0)<=(d|0))Ga(17252,17204,64,17242);i=f[i+(d<<2)>>2]|0;do if((c+-1|0)>>>0<6&(Sa[f[(f[b>>2]|0)+8>>2]&255](b)|0)==1){j=Sa[f[(f[b>>2]|0)+36>>2]&255](b)|0;k=Wa[f[(f[b>>2]|0)+44>>2]&127](b,d)|0;if((j|0)==0|(k|0)==0){f[a>>2]=0;u=n;return}h=Wa[f[(f[b>>2]|0)+40>>2]&127](b,d)|0;if(!h){f[m>>2]=f[b+44>>2];f[m+4>>2]=j;f[m+12>>2]=k;f[m+8>>2]=k+12;Cc(a,l,c,i,e,m,g);if(!(f[a>>2]|0)){f[a>>2]=0;break}u=n;return}else{f[m>>2]=f[b+44>>2];f[m+4>>2]=h;f[m+12>>2]=k;f[m+8>>2]=k+12;Bc(a,l,c,i,e,m,g);if(!(f[a>>2]|0)){f[a>>2]=0;break}u=n;return}}while(0);f[a>>2]=0;u=n;return}function kf(a,b){a=a|0;b=b|0;var c=0,d=0,e=0,g=0,h=0,i=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0;s=u;u=u+16|0;p=s+4|0;q=s;c=f[b>>2]|0;f[p>>2]=c;m=a+8|0;b=c+1|0;do if((c|0)>=0){f[p+4>>2]=((b|0)%3|0|0)==0?c+-2|0:b;if(!((c>>>0)%3|0)){b=c+2|0;break}else{b=c+-1|0;break}}else{f[p+4>>2]=c;b=c}while(0);f[p+8>>2]=b;l=a+228|0;k=a+232|0;j=a+320|0;b=0;while(1){if((c|0)>=0?(f[(f[(f[m>>2]|0)+12>>2]|0)+(c<<2)>>2]|0)>=0:0){if((f[k>>2]|0)!=(f[l>>2]|0)){g=0;do{if(Tk((f[j>>2]|0)+(g<<4)|0)|0){a=f[l>>2]|0;f[q>>2]=c;e=a+(g*116|0)+108|0;d=f[e>>2]|0;if(d>>>0<(f[a+(g*116|0)+112>>2]|0)>>>0){f[d>>2]=c;f[e>>2]=d+4}else Ii(a+(g*116|0)+104|0,q)}g=g+1|0}while(g>>>0<(((f[k>>2]|0)-(f[l>>2]|0)|0)/116|0)>>>0)}}else r=11;if((r|0)==11?(r=0,n=f[k>>2]|0,o=f[l>>2]|0,(n|0)!=(o|0)):0){a=o;d=n;i=0;do{e=a;f[q>>2]=c;h=e+(i*116|0)+108|0;g=f[h>>2]|0;if(g>>>0<(f[e+(i*116|0)+112>>2]|0)>>>0){f[g>>2]=c;f[h>>2]=g+4}else{Ii(e+(i*116|0)+104|0,q);a=f[l>>2]|0;d=f[k>>2]|0}i=i+1|0}while(i>>>0<((d-a|0)/116|0)>>>0)}b=b+1|0;if((b|0)==3)break;c=f[p+(b<<2)>>2]|0}u=s;return 1}function lf(a,b,c,d,e,g){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;g=g|0;var h=0,i=0,j=0,k=0,l=0,m=0,n=0;n=u;u=u+32|0;m=n;l=n+16|0;h=f[b+4>>2]|0;if((d|0)<=-1)Ga(17188,17204,63,17242);i=f[h+8>>2]|0;if(((f[h+12>>2]|0)-i>>2|0)<=(d|0))Ga(17252,17204,64,17242);i=f[i+(d<<2)>>2]|0;do if((c+-1|0)>>>0<6&(Sa[f[(f[b>>2]|0)+8>>2]&255](b)|0)==1){j=Sa[f[(f[b>>2]|0)+36>>2]&255](b)|0;k=Wa[f[(f[b>>2]|0)+44>>2]&127](b,d)|0;if((j|0)==0|(k|0)==0){f[a>>2]=0;u=n;return}h=Wa[f[(f[b>>2]|0)+40>>2]&127](b,d)|0;if(!h){f[m>>2]=f[b+44>>2];f[m+4>>2]=j;f[m+12>>2]=k;f[m+8>>2]=k+12;Ec(a,l,c,i,e,m,g);if(!(f[a>>2]|0)){f[a>>2]=0;break}u=n;return}else{f[m>>2]=f[b+44>>2];f[m+4>>2]=h;f[m+12>>2]=k;f[m+8>>2]=k+12;Dc(a,l,c,i,e,m,g);if(!(f[a>>2]|0)){f[a>>2]=0;break}u=n;return}}while(0);f[a>>2]=0;u=n;return}function mf(a,b){a=a|0;b=b|0;var c=0,d=0,e=0,g=0,h=0,i=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0;o=u;u=u+32|0;m=o+12|0;l=o;d=b*3|0;f[m>>2]=0;n=m+4|0;f[n>>2]=0;f[m+8>>2]=0;do if(b)if(d>>>0>1073741823){Lp(m);o=Ia(4)|0;Eq(o);sa(o|0,1344,125)}else{j=b*12|0;c=ln(j)|0;f[m>>2]=c;k=c+(d<<2)|0;f[m+8>>2]=k;ej(c|0,0,j|0)|0;f[n>>2]=k;break}else c=0;while(0);if(Xi(d,1,f[a+32>>2]|0,c)|0)if((b|0)>0){h=a+44|0;i=l+4|0;j=l+8|0;e=0;g=0;k=0;while(1){f[l>>2]=0;f[l+4>>2]=0;f[l+8>>2]=0;d=f[m>>2]|0;p=f[d+(k<<2)>>2]|0;c=p>>>1;c=((p&1|0)==0?c:0-c|0)+g|0;f[l>>2]=c;p=f[d+(k+1<<2)>>2]|0;a=p>>>1;c=((p&1|0)==0?a:0-a|0)+c|0;f[i>>2]=c;d=f[d+(k+2<<2)>>2]|0;a=d>>>1;g=((d&1|0)==0?a:0-a|0)+c|0;f[j>>2]=g;c=f[h>>2]|0;a=c+88|0;d=f[a>>2]|0;if((d|0)==(f[c+92>>2]|0))pi(c+84|0,l);else{f[d>>2]=f[l>>2];f[d+4>>2]=f[l+4>>2];f[d+8>>2]=f[l+8>>2];f[a>>2]=(f[a>>2]|0)+12}e=e+1|0;if((e|0)>=(b|0)){a=1;break}else k=k+3|0}}else a=1;else a=0;c=f[m>>2]|0;if(!c){u=o;return a|0}d=f[n>>2]|0;if((d|0)!=(c|0))f[n>>2]=d+(~((d+-4-c|0)>>>2)<<2);ar(c);u=o;return a|0}function nf(a,c,d){a=a|0;c=c|0;d=d|0;var e=La,g=La,i=0,j=0,k=0;switch(b[a+24>>0]|0){case 1:{j=f[c>>2]|0;c=a+48|0;i=f[c>>2]|0;c=f[c+4>>2]|0;k=a+40|0;c=(Ho(kn(f[k>>2]|0,f[k+4>>2]|0,j|0,((j|0)<0)<<31>>31|0)|0,I|0,i|0,c|0)|0)+(f[f[a>>2]>>2]|0)|0;g=$((h[c>>0]|h[c+1>>0]<<8)<<16>>16);e=$(g/$(32767.0));e=(b[a+32>>0]|0)==0?g:e;break}case 2:{i=f[c>>2]|0;k=a+48|0;j=f[k>>2]|0;k=f[k+4>>2]|0;c=a+40|0;k=(Ho(kn(f[c>>2]|0,f[c+4>>2]|0,i|0,((i|0)<0)<<31>>31|0)|0,I|0,j|0,k|0)|0)+(f[f[a>>2]>>2]|0)|0;g=$(((h[k>>0]|h[k+1>>0]<<8|h[k+2>>0]<<16|h[k+3>>0]<<24)&65535)<<16>>16);e=$(g/$(32767.0));e=(b[a+32>>0]|0)==0?g:e;break}case 3:{i=f[c>>2]|0;k=a+48|0;j=f[k>>2]|0;k=f[k+4>>2]|0;c=a+40|0;k=(Ho(kn(f[c>>2]|0,f[c+4>>2]|0,i|0,((i|0)<0)<<31>>31|0)|0,I|0,j|0,k|0)|0)+(f[f[a>>2]>>2]|0)|0;g=$((h[k>>0]|h[k+1>>0]<<8)<<16>>16);e=$(g/$(32767.0));e=(b[a+32>>0]|0)==0?g:e;break}case 4:{i=f[c>>2]|0;k=a+48|0;j=f[k>>2]|0;k=f[k+4>>2]|0;c=a+40|0;k=(Ho(kn(f[c>>2]|0,f[c+4>>2]|0,i|0,((i|0)<0)<<31>>31|0)|0,I|0,j|0,k|0)|0)+(f[f[a>>2]>>2]|0)|0;g=$(((h[k>>0]|h[k+1>>0]<<8|h[k+2>>0]<<16|h[k+3>>0]<<24)&65535)<<16>>16);e=$(g/$(32767.0));e=(b[a+32>>0]|0)==0?g:e;break}default:{k=0;return k|0}}n[d>>2]=e;k=1;return k|0}function of(a,b,c,d,e,g){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;g=g|0;var h=0,i=0,j=0,k=0,l=0,m=0,n=0;n=u;u=u+32|0;m=n;l=n+16|0;h=f[b+4>>2]|0;if((d|0)<=-1)Ga(17188,17204,63,17242);i=f[h+8>>2]|0;if(((f[h+12>>2]|0)-i>>2|0)<=(d|0))Ga(17252,17204,64,17242);i=f[i+(d<<2)>>2]|0;do if((c+-1|0)>>>0<6&(Sa[f[(f[b>>2]|0)+8>>2]&255](b)|0)==1){j=Sa[f[(f[b>>2]|0)+36>>2]&255](b)|0;k=Wa[f[(f[b>>2]|0)+44>>2]&127](b,d)|0;if((j|0)==0|(k|0)==0){f[a>>2]=0;u=n;return}h=Wa[f[(f[b>>2]|0)+40>>2]&127](b,d)|0;if(!h){f[m>>2]=f[b+44>>2];f[m+4>>2]=j;f[m+12>>2]=k;f[m+8>>2]=k+12;oc(a,l,c,i,e,m,g);if(!(f[a>>2]|0)){f[a>>2]=0;break}u=n;return}else{f[m>>2]=f[b+44>>2];f[m+4>>2]=h;f[m+12>>2]=k;f[m+8>>2]=k+12;nc(a,l,c,i,e,m,g);if(!(f[a>>2]|0)){f[a>>2]=0;break}u=n;return}}while(0);f[a>>2]=0;u=n;return}function pf(a,c,d){a=a|0;c=c|0;d=d|0;var e=La,g=La,i=0,j=0,k=0;switch(b[a+24>>0]|0){case 1:{j=f[c>>2]|0;c=a+48|0;i=f[c>>2]|0;c=f[c+4>>2]|0;k=a+40|0;c=(Ho(kn(f[k>>2]|0,f[k+4>>2]|0,j|0,((j|0)<0)<<31>>31|0)|0,I|0,i|0,c|0)|0)+(f[f[a>>2]>>2]|0)|0;g=$((h[c>>0]|h[c+1>>0]<<8)&65535);e=$(g/$(65535.0));e=(b[a+32>>0]|0)==0?g:e;break}case 2:{i=f[c>>2]|0;k=a+48|0;j=f[k>>2]|0;k=f[k+4>>2]|0;c=a+40|0;k=(Ho(kn(f[c>>2]|0,f[c+4>>2]|0,i|0,((i|0)<0)<<31>>31|0)|0,I|0,j|0,k|0)|0)+(f[f[a>>2]>>2]|0)|0;g=$((h[k>>0]|h[k+1>>0]<<8|h[k+2>>0]<<16|h[k+3>>0]<<24)&65535);e=$(g/$(65535.0));e=(b[a+32>>0]|0)==0?g:e;break}case 3:{i=f[c>>2]|0;k=a+48|0;j=f[k>>2]|0;k=f[k+4>>2]|0;c=a+40|0;k=(Ho(kn(f[c>>2]|0,f[c+4>>2]|0,i|0,((i|0)<0)<<31>>31|0)|0,I|0,j|0,k|0)|0)+(f[f[a>>2]>>2]|0)|0;g=$((h[k>>0]|h[k+1>>0]<<8)&65535);e=$(g/$(65535.0));e=(b[a+32>>0]|0)==0?g:e;break}case 4:{i=f[c>>2]|0;k=a+48|0;j=f[k>>2]|0;k=f[k+4>>2]|0;c=a+40|0;k=(Ho(kn(f[c>>2]|0,f[c+4>>2]|0,i|0,((i|0)<0)<<31>>31|0)|0,I|0,j|0,k|0)|0)+(f[f[a>>2]>>2]|0)|0;g=$((h[k>>0]|h[k+1>>0]<<8|h[k+2>>0]<<16|h[k+3>>0]<<24)&65535);e=$(g/$(65535.0));e=(b[a+32>>0]|0)==0?g:e;break}default:{k=0;return k|0}}n[d>>2]=e;k=1;return k|0}function qf(a,b,c){a=a|0;b=b|0;c=c|0;var d=0,e=0,g=0,h=0,i=0,j=0,k=0,l=0,m=0;m=u;u=u+32|0;i=m+28|0;d=m+24|0;j=m+20|0;k=m+16|0;l=m+12|0;e=m+8|0;g=m+4|0;h=m;if(!c){a=0;u=m;return a|0}switch(f[a+28>>2]|0){case 9:{f[d>>2]=f[b>>2];f[i>>2]=f[d>>2];a=gc(a,i,c)|0;u=m;return a|0}case 2:{f[j>>2]=f[b>>2];f[i>>2]=f[j>>2];a=xe(a,i,c)|0;u=m;return a|0}case 1:{f[k>>2]=f[b>>2];f[i>>2]=f[k>>2];a=Rd(a,i,c)|0;u=m;return a|0}case 4:{f[l>>2]=f[b>>2];f[i>>2]=f[l>>2];a=Wd(a,i,c)|0;u=m;return a|0}case 3:{f[e>>2]=f[b>>2];f[i>>2]=f[e>>2];a=wd(a,i,c)|0;u=m;return a|0}case 6:{f[g>>2]=f[b>>2];f[i>>2]=f[g>>2];a=zd(a,i,c)|0;u=m;return a|0}case 5:{f[h>>2]=f[b>>2];f[i>>2]=f[h>>2];a=md(a,i,c)|0;u=m;return a|0}default:{a=0;u=m;return a|0}}return 0}function rf(a,b,c){a=a|0;b=b|0;c=c|0;var d=0,e=0,g=0,h=0,i=0,j=0,k=0,l=0,m=0;m=u;u=u+32|0;i=m+28|0;d=m+24|0;j=m+20|0;k=m+16|0;l=m+12|0;e=m+8|0;g=m+4|0;h=m;if(!c){a=0;u=m;return a|0}switch(f[a+28>>2]|0){case 9:{f[d>>2]=f[b>>2];f[i>>2]=f[d>>2];a=mc(a,i,c)|0;u=m;return a|0}case 2:{f[j>>2]=f[b>>2];f[i>>2]=f[j>>2];a=Re(a,i,c)|0;u=m;return a|0}case 1:{f[k>>2]=f[b>>2];f[i>>2]=f[k>>2];a=fe(a,i,c)|0;u=m;return a|0}case 4:{f[l>>2]=f[b>>2];f[i>>2]=f[l>>2];a=ge(a,i,c)|0;u=m;return a|0}case 3:{f[e>>2]=f[b>>2];f[i>>2]=f[e>>2];a=Md(a,i,c)|0;u=m;return a|0}case 6:{f[g>>2]=f[b>>2];f[i>>2]=f[g>>2];a=Vd(a,i,c)|0;u=m;return a|0}case 5:{f[h>>2]=f[b>>2];f[i>>2]=f[h>>2];a=Cd(a,i,c)|0;u=m;return a|0}default:{a=0;u=m;return a|0}}return 0}function sf(a,b,c){a=a|0;b=b|0;c=c|0;var d=0,e=0,g=0,h=0,i=0,j=0,k=0,l=0,m=0;m=u;u=u+32|0;i=m+28|0;d=m+24|0;j=m+20|0;k=m+16|0;l=m+12|0;e=m+8|0;g=m+4|0;h=m;if(!c){a=0;u=m;return a|0}switch(f[a+28>>2]|0){case 9:{f[d>>2]=f[b>>2];f[i>>2]=f[d>>2];a=Fc(a,i,c)|0;u=m;return a|0}case 2:{f[j>>2]=f[b>>2];f[i>>2]=f[j>>2];a=Ef(a,i,c)|0;u=m;return a|0}case 1:{f[k>>2]=f[b>>2];f[i>>2]=f[k>>2];a=df(a,i,c)|0;u=m;return a|0}case 4:{f[l>>2]=f[b>>2];f[i>>2]=f[l>>2];a=bf(a,i,c)|0;u=m;return a|0}case 3:{f[e>>2]=f[b>>2];f[i>>2]=f[e>>2];a=Je(a,i,c)|0;u=m;return a|0}case 6:{f[g>>2]=f[b>>2];f[i>>2]=f[g>>2];a=Ze(a,i,c)|0;u=m;return a|0}case 5:{f[h>>2]=f[b>>2];f[i>>2]=f[h>>2];a=ye(a,i,c)|0;u=m;return a|0}default:{a=0;u=m;return a|0}}return 0}function tf(a,b){a=a|0;b=b|0;var c=0,d=0,e=0,g=0,h=0,i=0;h=u;u=u+16|0;e=h+12|0;c=h;g=ln(52)|0;f[g>>2]=0;f[g+4>>2]=0;f[g+8>>2]=0;f[g+12>>2]=0;n[g+16>>2]=$(1.0);d=g+20|0;f[d>>2]=0;f[d+4>>2]=0;f[d+8>>2]=0;f[d+12>>2]=0;n[g+36>>2]=$(1.0);f[g+40>>2]=0;f[g+44>>2]=0;f[g+48>>2]=0;d=g;Aq(e);if(!(Ig(e,f[b+32>>2]|0,g)|0)){f[c>>2]=0;f[c+4>>2]=0;f[c+8>>2]=0;Pj(c,6456,26);f[a>>2]=-1;ml(a+4|0,c);Lo(c);d=g+40|0;c=f[d>>2]|0;if(c|0){e=g+44|0;b=f[e>>2]|0;if((b|0)!=(c|0)){do{a=b+-4|0;f[e>>2]=a;b=f[a>>2]|0;f[a>>2]=0;if(b|0){Ri(b);ar(b)}b=f[e>>2]|0}while((b|0)!=(c|0));c=f[d>>2]|0}ar(c)}Ri(g);ar(g);u=h;return}e=(f[b+4>>2]|0)+4|0;g=f[e>>2]|0;f[e>>2]=d;if(g|0){d=g+40|0;c=f[d>>2]|0;if(c|0){e=g+44|0;b=f[e>>2]|0;if((b|0)!=(c|0)){do{i=b+-4|0;f[e>>2]=i;b=f[i>>2]|0;f[i>>2]=0;if(b|0){Ri(b);ar(b)}b=f[e>>2]|0}while((b|0)!=(c|0));c=f[d>>2]|0}ar(c)}Ri(g);ar(g)}f[a>>2]=0;f[a+4>>2]=0;f[a+8>>2]=0;f[a+12>>2]=0;u=h;return}function uf(a,c){a=a|0;c=c|0;var d=0,e=0,g=0,h=0,i=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0;n=f[a+8>>2]|0;k=a+76|0;d=f[k>>2]|0;m=f[d+68>>2]|0;r=c+84|0;b[r>>0]=0;j=c+68|0;h=c+72|0;g=f[h>>2]|0;e=f[j>>2]|0;l=g-e>>2;if(m>>>0<=l>>>0){if(m>>>0>>0?(i=e+(m<<2)|0,(g|0)!=(i|0)):0)f[h>>2]=g+(~((g+-4-i|0)>>>2)<<2)}else{ch(j,m-l|0,4672);m=f[k>>2]|0;d=m;m=f[m+68>>2]|0}p=(f[d+88>>2]|0)-(f[d+84>>2]|0)|0;q=(p|0)/12|0;if((p|0)<=0){r=1;return r|0}p=n+28|0;o=a+80|0;n=c+68|0;a=d+84|0;k=d+88|0;l=0;while(1){d=f[a>>2]|0;if((l|0)>=(((f[k>>2]|0)-d|0)/12|0|0)){e=9;break}i=l*3|0;g=f[p>>2]|0;h=f[(f[o>>2]|0)+12>>2]|0;e=f[h+(f[g+(i<<2)>>2]<<2)>>2]|0;if(e>>>0>=m>>>0){d=0;e=14;break}if(b[r>>0]|0){e=12;break}j=f[n>>2]|0;f[j+(f[d+(l*12|0)>>2]<<2)>>2]=e;e=f[h+(f[g+(i+1<<2)>>2]<<2)>>2]|0;if(e>>>0>=m>>>0){d=0;e=14;break}f[j+(f[d+(l*12|0)+4>>2]<<2)>>2]=e;e=f[h+(f[g+(i+2<<2)>>2]<<2)>>2]|0;if(e>>>0>=m>>>0){d=0;e=14;break}f[j+(f[d+(l*12|0)+8>>2]<<2)>>2]=e;l=l+1|0;if((l|0)>=(q|0)){d=1;e=14;break}}if((e|0)==9)Ga(18176,18147,64,18171);else if((e|0)==12)Ga(18230,18249,91,18290);else if((e|0)==14)return d|0;return 0}function vf(a,c){a=a|0;c=c|0;var d=0,e=0,g=0,h=0,i=0,j=0,k=0,l=0;l=u;u=u+32|0;k=l;h=a+8|0;g=f[h>>2]|0;j=a+4|0;d=f[j>>2]|0;if(((g-d|0)/116|0)>>>0>=c>>>0){do{f[d>>2]=-1;pm(d+4|0);b[d+72>>0]=1;d=d+76|0;e=d+40|0;do{f[d>>2]=0;d=d+4|0}while((d|0)<(e|0));d=(f[j>>2]|0)+116|0;f[j>>2]=d;c=c+-1|0}while((c|0)!=0);u=l;return}e=f[a>>2]|0;i=((d-e|0)/116|0)+c|0;if(i>>>0>37025580){Lp(a);e=f[a>>2]|0;g=f[h>>2]|0;d=f[j>>2]|0}j=(g-e|0)/116|0;g=j<<1;g=j>>>0<18512790?(g>>>0>>0?i:g):37025580;d=(d-e|0)/116|0;f[k+12>>2]=0;f[k+16>>2]=a+8;do if(g)if(g>>>0>37025580){l=Ia(4)|0;Eq(l);sa(l|0,1344,125)}else{e=ln(g*116|0)|0;break}else e=0;while(0);f[k>>2]=e;d=e+(d*116|0)|0;h=k+8|0;f[h>>2]=d;f[k+4>>2]=d;f[k+12>>2]=e+(g*116|0);do{f[d>>2]=-1;pm(d+4|0);b[d+72>>0]=1;d=d+76|0;e=d+40|0;do{f[d>>2]=0;d=d+4|0}while((d|0)<(e|0));d=(f[h>>2]|0)+116|0;f[h>>2]=d;c=c+-1|0}while((c|0)!=0);hd(a,k);Ci(k);u=l;return}function wf(a,c){a=a|0;c=c|0;var d=0,e=0,g=0,h=0,i=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0;p=f[a+8>>2]|0;k=a+76|0;d=f[k>>2]|0;m=f[d+68>>2]|0;q=c+84|0;b[q>>0]=0;j=c+68|0;h=c+72|0;g=f[h>>2]|0;e=f[j>>2]|0;l=g-e>>2;if(m>>>0<=l>>>0){if(m>>>0>>0?(i=e+(m<<2)|0,(g|0)!=(i|0)):0)f[h>>2]=g+(~((g+-4-i|0)>>>2)<<2)}else{ch(j,m-l|0,4672);m=f[k>>2]|0;d=m;m=f[m+68>>2]|0}n=(f[d+88>>2]|0)-(f[d+84>>2]|0)|0;o=(n|0)/12|0;if((n|0)<=0){q=1;return q|0}n=a+80|0;l=c+68|0;a=d+84|0;j=d+88|0;k=0;while(1){d=f[a>>2]|0;if((k|0)>=(((f[j>>2]|0)-d|0)/12|0|0)){e=9;break}h=k*3|0;g=f[(f[n>>2]|0)+12>>2]|0;e=f[g+(f[(f[p>>2]|0)+(h<<2)>>2]<<2)>>2]|0;if(e>>>0>=m>>>0){d=0;e=13;break}if(b[q>>0]|0){e=12;break}i=f[l>>2]|0;f[i+(f[d+(k*12|0)>>2]<<2)>>2]=e;e=f[g+(f[(f[p>>2]|0)+(h+1<<2)>>2]<<2)>>2]|0;if(e>>>0>=m>>>0){d=0;e=13;break}f[i+(f[d+(k*12|0)+4>>2]<<2)>>2]=e;e=f[g+(f[(f[p>>2]|0)+(h+2<<2)>>2]<<2)>>2]|0;if(e>>>0>=m>>>0){d=0;e=13;break}f[i+(f[d+(k*12|0)+8>>2]<<2)>>2]=e;k=k+1|0;if((k|0)>=(o|0)){d=1;e=13;break}}if((e|0)==9)Ga(18176,18147,64,18171);else if((e|0)==12)Ga(18230,18249,91,18290);else if((e|0)==13)return d|0;return 0}function xf(a,b,c){a=a|0;b=b|0;c=c|0;var d=0,e=0,g=0,i=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0;n=u;u=u+64|0;m=n;d=m;e=d+40|0;do{f[d>>2]=0;d=d+4|0}while((d|0)<(e|0));do if(te(m,b)|0){e=(a|0)>0;if(e?(f[m+12>>2]|0)==0:0){g=0;break}d=Of(m,b)|0;if(d&e){j=m+44|0;l=m+48|0;i=m+40|0;b=m+16|0;g=m+28|0;d=f[l>>2]|0;k=0;while(1){a:do if(d>>>0<16384){e=f[j>>2]|0;do{if((e|0)<=0)break a;o=f[i>>2]|0;e=e+-1|0;f[j>>2]=e;d=h[o+e>>0]|0|d<<8;f[l>>2]=d}while(d>>>0<16384)}while(0);p=d&4095;o=f[(f[b>>2]|0)+(p<<2)>>2]|0;e=f[g>>2]|0;d=(X(f[e+(o<<3)>>2]|0,d>>>12)|0)+p-(f[e+(o<<3)+4>>2]|0)|0;f[l>>2]=d;f[c+(k<<2)>>2]=o;k=k+1|0;if((k|0)==(a|0)){g=1;break}}}else g=d}else g=0;while(0);d=f[m+28>>2]|0;if(d|0){b=m+32|0;e=f[b>>2]|0;if((e|0)!=(d|0))f[b>>2]=e+(~((e+-8-d|0)>>>3)<<3);ar(d)}d=f[m+16>>2]|0;if(d|0){b=m+20|0;e=f[b>>2]|0;if((e|0)!=(d|0))f[b>>2]=e+(~((e+-4-d|0)>>>2)<<2);ar(d)}b=f[m>>2]|0;if(!b){u=n;return g|0}e=m+4|0;d=f[e>>2]|0;if((d|0)!=(b|0))f[e>>2]=d+(~((d+-4-b|0)>>>2)<<2);ar(b);u=n;return g|0}function yf(a,c){a=a|0;c=c|0;var d=0,e=0,g=0,h=0,i=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0;p=f[a+8>>2]|0;k=a+112|0;d=f[k>>2]|0;m=f[d+68>>2]|0;q=c+84|0;b[q>>0]=0;j=c+68|0;h=c+72|0;g=f[h>>2]|0;e=f[j>>2]|0;l=g-e>>2;if(m>>>0<=l>>>0){if(m>>>0>>0?(i=e+(m<<2)|0,(g|0)!=(i|0)):0)f[h>>2]=g+(~((g+-4-i|0)>>>2)<<2)}else{ch(j,m-l|0,4672);m=f[k>>2]|0;d=m;m=f[m+68>>2]|0}n=(f[d+88>>2]|0)-(f[d+84>>2]|0)|0;o=(n|0)/12|0;if((n|0)<=0){q=1;return q|0}n=a+116|0;l=c+68|0;a=d+84|0;j=d+88|0;k=0;while(1){d=f[a>>2]|0;if((k|0)>=(((f[j>>2]|0)-d|0)/12|0|0)){e=9;break}h=k*3|0;g=f[(f[n>>2]|0)+12>>2]|0;e=f[g+(f[(f[p>>2]|0)+(h<<2)>>2]<<2)>>2]|0;if(e>>>0>=m>>>0){d=0;e=13;break}if(b[q>>0]|0){e=12;break}i=f[l>>2]|0;f[i+(f[d+(k*12|0)>>2]<<2)>>2]=e;e=f[g+(f[(f[p>>2]|0)+(h+1<<2)>>2]<<2)>>2]|0;if(e>>>0>=m>>>0){d=0;e=13;break}f[i+(f[d+(k*12|0)+4>>2]<<2)>>2]=e;e=f[g+(f[(f[p>>2]|0)+(h+2<<2)>>2]<<2)>>2]|0;if(e>>>0>=m>>>0){d=0;e=13;break}f[i+(f[d+(k*12|0)+8>>2]<<2)>>2]=e;k=k+1|0;if((k|0)>=(o|0)){d=1;e=13;break}}if((e|0)==9)Ga(18176,18147,64,18171);else if((e|0)==12)Ga(18230,18249,91,18290);else if((e|0)==13)return d|0;return 0}function zf(a,b,c){a=a|0;b=b|0;c=c|0;var d=0,e=0,g=0,h=0,i=0,j=0,k=0,l=0,m=0;m=b;h=c-m>>2;i=a+8|0;d=f[i>>2]|0;j=f[a>>2]|0;k=j;if(h>>>0<=d-j>>2>>>0){l=a+4|0;a=(f[l>>2]|0)-j>>2;h=h>>>0>a>>>0;a=b+(a<<2)|0;g=h?a:c;i=g;e=i-m|0;d=e>>2;if(d|0)rm(j|0,b|0,e|0)|0;d=k+(d<<2)|0;if(!h){b=f[l>>2]|0;if((b|0)==(d|0))return;f[l>>2]=b+(~((b+-4-d|0)>>>2)<<2);return}if((g|0)==(c|0))return;g=f[l>>2]|0;e=((c+-4-i|0)>>>2)+1|0;d=g;b=a;while(1){f[d>>2]=f[b>>2];b=b+4|0;if((b|0)==(c|0))break;else d=d+4|0}f[l>>2]=g+(e<<2);return}g=j;if(j){e=a+4|0;d=f[e>>2]|0;if((d|0)!=(k|0))f[e>>2]=d+(~((d+-4-j|0)>>>2)<<2);ar(g);f[i>>2]=0;f[e>>2]=0;f[a>>2]=0;d=0}if(h>>>0>1073741823){Lp(a);e=f[a>>2]|0;d=f[i>>2]|0}else e=0;l=d-e|0;d=l>>1;d=l>>2>>>0<536870911?(d>>>0>>0?h:d):1073741823;if(d>>>0>1073741823){Lp(a);c=Ia(4)|0;Eq(c);sa(c|0,1344,125)}h=ln(d<<2)|0;g=a+4|0;f[g>>2]=h;f[a>>2]=h;f[i>>2]=h+(d<<2);if((b|0)==(c|0))return;d=((c+-4-m|0)>>>2)+1|0;e=h;while(1){f[e>>2]=f[b>>2];b=b+4|0;if((b|0)==(c|0))break;else e=e+4|0}f[g>>2]=h+(d<<2);return}function Af(a,c,d){a=a|0;c=c|0;d=d|0;var e=La,g=La,i=0,j=0,k=0;switch(b[a+24>>0]|0){case 1:{j=f[c>>2]|0;c=a+48|0;i=f[c>>2]|0;c=f[c+4>>2]|0;k=a+40|0;c=Ho(kn(f[k>>2]|0,f[k+4>>2]|0,j|0,((j|0)<0)<<31>>31|0)|0,I|0,i|0,c|0)|0;g=$(b[(f[f[a>>2]>>2]|0)+c>>0]|0);e=$(g/$(127.0));e=(b[a+32>>0]|0)==0?g:e;break}case 2:{i=f[c>>2]|0;k=a+48|0;j=f[k>>2]|0;k=f[k+4>>2]|0;c=a+40|0;k=(Ho(kn(f[c>>2]|0,f[c+4>>2]|0,i|0,((i|0)<0)<<31>>31|0)|0,I|0,j|0,k|0)|0)+(f[f[a>>2]>>2]|0)|0;g=$(((h[k>>0]|h[k+1>>0]<<8)&255)<<24>>24);e=$(g/$(127.0));e=(b[a+32>>0]|0)==0?g:e;break}case 3:{i=f[c>>2]|0;k=a+48|0;j=f[k>>2]|0;k=f[k+4>>2]|0;c=a+40|0;k=Ho(kn(f[c>>2]|0,f[c+4>>2]|0,i|0,((i|0)<0)<<31>>31|0)|0,I|0,j|0,k|0)|0;g=$(b[(f[f[a>>2]>>2]|0)+k>>0]|0);e=$(g/$(127.0));e=(b[a+32>>0]|0)==0?g:e;break}case 4:{i=f[c>>2]|0;k=a+48|0;j=f[k>>2]|0;k=f[k+4>>2]|0;c=a+40|0;k=(Ho(kn(f[c>>2]|0,f[c+4>>2]|0,i|0,((i|0)<0)<<31>>31|0)|0,I|0,j|0,k|0)|0)+(f[f[a>>2]>>2]|0)|0;g=$(((h[k>>0]|h[k+1>>0]<<8|h[k+2>>0]<<16|h[k+3>>0]<<24)&255)<<24>>24);e=$(g/$(127.0));e=(b[a+32>>0]|0)==0?g:e;break}default:{k=0;return k|0}}n[d>>2]=e;k=1;return k|0}function Bf(a,b,c){a=a|0;b=b|0;c=c|0;var d=0,e=0,g=0,h=0,i=0,j=0,k=0,l=0,m=0;m=b;h=c-m>>2;i=a+8|0;d=f[i>>2]|0;j=f[a>>2]|0;k=j;if(h>>>0<=d-j>>2>>>0){l=a+4|0;a=(f[l>>2]|0)-j>>2;h=h>>>0>a>>>0;a=b+(a<<2)|0;g=h?a:c;i=g;e=i-m|0;d=e>>2;if(d|0)rm(j|0,b|0,e|0)|0;d=k+(d<<2)|0;if(!h){b=f[l>>2]|0;if((b|0)==(d|0))return;f[l>>2]=b+(~((b+-4-d|0)>>>2)<<2);return}if((g|0)==(c|0))return;g=f[l>>2]|0;d=c+-4-i|0;e=g;b=a;while(1){f[e>>2]=f[b>>2];b=b+4|0;if((b|0)==(c|0))break;else e=e+4|0}f[l>>2]=g+((d>>>2)+1<<2);return}g=j;if(j){e=a+4|0;d=f[e>>2]|0;if((d|0)!=(k|0))f[e>>2]=d+(~((d+-4-j|0)>>>2)<<2);ar(g);f[i>>2]=0;f[e>>2]=0;f[a>>2]=0;d=0}if(h>>>0>1073741823){Lp(a);e=f[a>>2]|0;d=f[i>>2]|0}else e=0;l=d-e|0;d=l>>1;d=l>>2>>>0<536870911?(d>>>0>>0?h:d):1073741823;if(d>>>0>1073741823){Lp(a);c=Ia(4)|0;Eq(c);sa(c|0,1344,125)}h=ln(d<<2)|0;g=a+4|0;f[g>>2]=h;f[a>>2]=h;f[i>>2]=h+(d<<2);if((b|0)==(c|0))return;d=c+-4-m|0;e=h;while(1){f[e>>2]=f[b>>2];b=b+4|0;if((b|0)==(c|0))break;else e=e+4|0}f[g>>2]=h+((d>>>2)+1<<2);return}function Cf(a,c,d){a=a|0;c=c|0;d=d|0;var e=La,g=La,i=0,j=0,k=0;switch(b[a+24>>0]|0){case 1:{j=f[c>>2]|0;c=a+48|0;i=f[c>>2]|0;c=f[c+4>>2]|0;k=a+40|0;c=Ho(kn(f[k>>2]|0,f[k+4>>2]|0,j|0,((j|0)<0)<<31>>31|0)|0,I|0,i|0,c|0)|0;g=$(h[(f[f[a>>2]>>2]|0)+c>>0]|0);e=$(g/$(255.0));e=(b[a+32>>0]|0)==0?g:e;break}case 2:{i=f[c>>2]|0;k=a+48|0;j=f[k>>2]|0;k=f[k+4>>2]|0;c=a+40|0;k=(Ho(kn(f[c>>2]|0,f[c+4>>2]|0,i|0,((i|0)<0)<<31>>31|0)|0,I|0,j|0,k|0)|0)+(f[f[a>>2]>>2]|0)|0;g=$((h[k>>0]|h[k+1>>0]<<8)&255);e=$(g/$(255.0));e=(b[a+32>>0]|0)==0?g:e;break}case 3:{i=f[c>>2]|0;k=a+48|0;j=f[k>>2]|0;k=f[k+4>>2]|0;c=a+40|0;k=Ho(kn(f[c>>2]|0,f[c+4>>2]|0,i|0,((i|0)<0)<<31>>31|0)|0,I|0,j|0,k|0)|0;g=$(h[(f[f[a>>2]>>2]|0)+k>>0]|0);e=$(g/$(255.0));e=(b[a+32>>0]|0)==0?g:e;break}case 4:{i=f[c>>2]|0;k=a+48|0;j=f[k>>2]|0;k=f[k+4>>2]|0;c=a+40|0;k=(Ho(kn(f[c>>2]|0,f[c+4>>2]|0,i|0,((i|0)<0)<<31>>31|0)|0,I|0,j|0,k|0)|0)+(f[f[a>>2]>>2]|0)|0;g=$((h[k>>0]|h[k+1>>0]<<8|h[k+2>>0]<<16|h[k+3>>0]<<24)&255);e=$(g/$(255.0));e=(b[a+32>>0]|0)==0?g:e;break}default:{k=0;return k|0}}n[d>>2]=e;k=1;return k|0}function Df(a){a=a|0;var c=0,d=0,e=0,g=0,i=0,j=0,k=0,l=0,m=0,n=0;d=b[(f[a+8>>2]|0)+24>>0]|0;i=Zq(d>>>0>1073741823?-1:d<<2)|0;j=a+28|0;c=f[j>>2]|0;f[j>>2]=i;if(c|0)_q(c);i=a+4|0;g=f[(f[i>>2]|0)+32>>2]|0;d=d<<2;n=g+8|0;l=f[n>>2]|0;n=f[n+4>>2]|0;e=g+16|0;k=e;c=f[k>>2]|0;k=Ho(c|0,f[k+4>>2]|0,d|0,0)|0;m=I;if((n|0)<(m|0)|(n|0)==(m|0)&l>>>0>>0){n=0;return n|0}Mg(f[j>>2]|0,(f[g>>2]|0)+c|0,d|0)|0;c=e;c=Ho(f[c>>2]|0,f[c+4>>2]|0,d|0,0)|0;f[e>>2]=c;f[e+4>>2]=I;e=(f[i>>2]|0)+32|0;c=f[e>>2]|0;k=c+8|0;m=f[k>>2]|0;k=f[k+4>>2]|0;g=c+16|0;n=g;d=f[n>>2]|0;n=Ho(d|0,f[n+4>>2]|0,4,0)|0;l=I;if((k|0)<(l|0)|(k|0)==(l|0)&m>>>0>>0){n=0;return n|0}n=a+32|0;c=(f[c>>2]|0)+d|0;c=h[c>>0]|h[c+1>>0]<<8|h[c+2>>0]<<16|h[c+3>>0]<<24;b[n>>0]=c;b[n+1>>0]=c>>8;b[n+2>>0]=c>>16;b[n+3>>0]=c>>24;n=g;n=Ho(f[n>>2]|0,f[n+4>>2]|0,4,0)|0;c=g;f[c>>2]=n;f[c+4>>2]=I;c=f[e>>2]|0;n=c+8|0;m=f[n+4>>2]|0;g=c+16|0;e=g;d=f[e>>2]|0;e=f[e+4>>2]|0;if(!((m|0)>(e|0)|((m|0)==(e|0)?(f[n>>2]|0)>>>0>d>>>0:0))){n=0;return n|0}c=b[(f[c>>2]|0)+d>>0]|0;m=Ho(d|0,e|0,1,0)|0;n=g;f[n>>2]=m;f[n+4>>2]=I;if((c&255)>31){n=0;return n|0}f[a+24>>2]=c&255;n=1;return n|0}function Ef(a,c,d){a=a|0;c=c|0;d=d|0;var e=0,g=0,i=0;switch(b[a+24>>0]|0){case 1:{g=f[c>>2]|0;e=a+48|0;c=f[e>>2]|0;e=f[e+4>>2]|0;i=a+40|0;e=Ho(kn(f[i>>2]|0,f[i+4>>2]|0,g|0,((g|0)<0)<<31>>31|0)|0,I|0,c|0,e|0)|0;c=d;f[c>>2]=h[(f[f[a>>2]>>2]|0)+e>>0];f[c+4>>2]=0;c=0;a=0;break}case 2:{g=f[c>>2]|0;c=a+48|0;i=f[c>>2]|0;c=f[c+4>>2]|0;e=a+40|0;c=(Ho(kn(f[e>>2]|0,f[e+4>>2]|0,g|0,((g|0)<0)<<31>>31|0)|0,I|0,i|0,c|0)|0)+(f[f[a>>2]>>2]|0)|0;c=h[c>>0]|h[c+1>>0]<<8;a=d;f[a>>2]=c&255;f[a+4>>2]=0;c=(c&65535)>>>8&65535;a=0;break}case 3:{g=f[c>>2]|0;i=a+48|0;c=f[i>>2]|0;i=f[i+4>>2]|0;e=a+40|0;i=(Ho(kn(f[e>>2]|0,f[e+4>>2]|0,g|0,((g|0)<0)<<31>>31|0)|0,I|0,c|0,i|0)|0)+(f[f[a>>2]>>2]|0)|0;c=b[i+1>>0]|0;a=d;f[a>>2]=h[i>>0];f[a+4>>2]=0;c=c&255;a=0;break}case 4:{g=f[c>>2]|0;c=a+48|0;i=f[c>>2]|0;c=f[c+4>>2]|0;e=a+40|0;c=(Ho(kn(f[e>>2]|0,f[e+4>>2]|0,g|0,((g|0)<0)<<31>>31|0)|0,I|0,i|0,c|0)|0)+(f[f[a>>2]>>2]|0)|0;c=h[c>>0]|h[c+1>>0]<<8|h[c+2>>0]<<16|h[c+3>>0]<<24;a=d;f[a>>2]=c&255;f[a+4>>2]=0;c=c>>>8&255;a=0;break}default:{i=0;return i|0}}i=d+8|0;f[i>>2]=c;f[i+4>>2]=a;i=1;return i|0}function Ff(a,c){a=a|0;c=c|0;var d=0,e=0,g=0,i=0,j=0,k=0,l=0;e=c+8|0;k=e;i=f[k+4>>2]|0;l=c+16|0;j=l;d=f[j>>2]|0;j=f[j+4>>2]|0;if(!((i|0)>(j|0)|((i|0)==(j|0)?(f[k>>2]|0)>>>0>d>>>0:0))){a=0;return a|0}b[a+12>>0]=b[(f[c>>2]|0)+d>>0]|0;j=l;k=f[j>>2]|0;j=f[j+4>>2]|0;g=Ho(k|0,j|0,1,0)|0;i=l;f[i>>2]=g;f[i+4>>2]=I;i=e;e=f[i>>2]|0;i=f[i+4>>2]|0;j=Ho(k|0,j|0,5,0)|0;k=I;if((i|0)<(k|0)|(i|0)==(k|0)&e>>>0>>0){a=0;return a|0}d=f[c>>2]|0;c=d+g|0;c=h[c>>0]|h[c+1>>0]<<8|h[c+2>>0]<<16|h[c+3>>0]<<24;g=l;f[g>>2]=j;f[g+4>>2]=k;i=Xn(e|0,i|0,j|0,k|0)|0;g=I;if(0>(g|0)|0==(g|0)&c>>>0>i>>>0){a=0;return a|0}d=d+j|0;if((c|0)<1){a=0;return a|0}f[a>>2]=d;g=c+-1|0;e=d+g|0;a:do switch((h[e>>0]|0)>>>6&3){case 0:{f[a+4>>2]=g;d=b[e>>0]&63;break}case 1:if((c|0)<2){a=0;return a|0}else{f[a+4>>2]=c+-2;d=d+c+-2|0;d=(h[d+1>>0]|0)<<8&16128|(h[d>>0]|0);break a}case 2:if((c|0)<3){a=0;return a|0}else{f[a+4>>2]=c+-3;d=d+c+-3|0;d=(h[d+1>>0]|0)<<8|(h[d>>0]|0)|(h[d+2>>0]|0)<<16&4128768;break a}default:{a=0;return a|0}}while(0);i=d+4096|0;f[a+8>>2]=i;if(i>>>0>1048575){a=0;return a|0}k=Ho(j|0,k|0,c|0,0)|0;a=l;f[a>>2]=k;f[a+4>>2]=I;a=1;return a|0}function Gf(a,b){a=a|0;b=b|0;var c=0,d=0,e=0,g=0,h=0,i=0,j=0,k=0,l=0,m=0;m=a+8|0;d=f[m>>2]|0;l=a+4|0;g=f[l>>2]|0;e=g;if(((d-g|0)/12|0)>>>0>=b>>>0){ej(g|0,0,b*12|0)|0;f[l>>2]=e+(b*12|0);return}c=f[a>>2]|0;h=((g-c|0)/12|0)+b|0;if(h>>>0>357913941){Lp(a);g=f[l>>2]|0;c=f[a>>2]|0;e=g;d=f[m>>2]|0}k=c;d=(d-c|0)/12|0;i=d<<1;i=d>>>0<178956970?(i>>>0>>0?h:i):357913941;d=(g-c|0)/12|0;do if(i)if(i>>>0>357913941){a=Ia(4)|0;Eq(a);sa(a|0,1344,125)}else{h=ln(i*12|0)|0;break}else h=0;while(0);g=h+(d*12|0)|0;d=g;j=h+(i*12|0)|0;ej(g|0,0,b*12|0)|0;h=g+(b*12|0)|0;if((e|0)==(k|0))i=c;else{c=d;do{b=g+-12|0;i=e;e=e+-12|0;f[b>>2]=0;d=g+-8|0;f[d>>2]=0;f[g+-4>>2]=0;f[b>>2]=f[e>>2];b=i+-8|0;f[d>>2]=f[b>>2];i=i+-4|0;f[g+-4>>2]=f[i>>2];f[i>>2]=0;f[b>>2]=0;f[e>>2]=0;g=c+-12|0;c=g}while((e|0)!=(k|0));d=c;i=f[a>>2]|0;e=f[l>>2]|0}f[a>>2]=d;f[l>>2]=h;f[m>>2]=j;h=i;if((e|0)!=(h|0))do{c=e;e=e+-12|0;g=f[e>>2]|0;if(g|0){d=c+-8|0;c=f[d>>2]|0;if((c|0)!=(g|0))f[d>>2]=c+(~((c+-4-g|0)>>>2)<<2);ar(g)}}while((e|0)!=(h|0));if(!i)return;ar(i);return} +function zb(a,c,e,g,h){a=a|0;c=c|0;e=e|0;g=g|0;h=h|0;var i=0,j=0,k=0,l=0,m=0,n=0,o=0,q=0,r=0,s=0,t=0,v=0,w=0,x=0,y=0,z=0,A=0,B=0,C=0,D=0,E=0,F=0,G=0;G=u;u=u+64|0;C=G+16|0;z=G;y=G+24|0;F=G+8|0;B=G+20|0;f[C>>2]=c;E=(a|0)!=0;x=y+40|0;D=x;y=y+39|0;A=F+4|0;o=c;c=0;i=0;l=0;a:while(1){do if((c|0)>-1)if((i|0)>(2147483647-c|0)){c=Oq()|0;f[c>>2]=75;c=-1;break}else{c=i+c|0;break}while(0);i=b[o>>0]|0;if(!(i<<24>>24)){w=87;break}else j=o;b:while(1){switch(i<<24>>24){case 37:{i=j;w=9;break b}case 0:{i=j;break b}default:{}}v=j+1|0;f[C>>2]=v;i=b[v>>0]|0;j=v}c:do if((w|0)==9)while(1){w=0;if((b[i+1>>0]|0)!=37)break c;j=j+1|0;i=i+2|0;f[C>>2]=i;if((b[i>>0]|0)==37)w=9;else break}while(0);j=j-o|0;if(E)ip(a,o,j);if(j|0){o=i;i=j;continue}k=i+1|0;j=(b[k>>0]|0)+-48|0;if(j>>>0<10){v=(b[i+2>>0]|0)==36;r=v?j:-1;n=v?1:l;k=v?i+3|0:k}else{r=-1;n=l}f[C>>2]=k;i=b[k>>0]|0;j=(i<<24>>24)+-32|0;d:do if(j>>>0<32){l=0;while(1){j=1<>2]=k;i=b[k>>0]|0;j=(i<<24>>24)+-32|0;if(j>>>0>=32){m=l;break}}}else m=0;while(0);if(i<<24>>24==42){j=k+1|0;i=(b[j>>0]|0)+-48|0;if(i>>>0<10?(b[k+2>>0]|0)==36:0){f[h+(i<<2)>>2]=10;l=1;i=k+3|0;j=f[g+((b[j>>0]|0)+-48<<3)>>2]|0}else{if(n|0){c=-1;break}if(E){l=(f[e>>2]|0)+(4-1)&~(4-1);v=f[l>>2]|0;f[e>>2]=l+4;l=0;i=j;j=v}else{l=0;i=j;j=0}}f[C>>2]=i;t=(j|0)<0;q=t?m|8192:m;v=l;t=t?0-j|0:j}else{j=sm(C)|0;if((j|0)<0){c=-1;break}i=f[C>>2]|0;q=m;v=n;t=j}do if((b[i>>0]|0)==46){if((b[i+1>>0]|0)!=42){f[C>>2]=i+1;m=sm(C)|0;i=f[C>>2]|0;break}k=i+2|0;j=(b[k>>0]|0)+-48|0;if(j>>>0<10?(b[i+3>>0]|0)==36:0){f[h+(j<<2)>>2]=10;m=f[g+((b[k>>0]|0)+-48<<3)>>2]|0;i=i+4|0;f[C>>2]=i;break}if(v|0){c=-1;break a}if(E){s=(f[e>>2]|0)+(4-1)&~(4-1);j=f[s>>2]|0;f[e>>2]=s+4}else j=0;f[C>>2]=k;i=k;m=j}else m=-1;while(0);n=0;while(1){if(((b[i>>0]|0)+-65|0)>>>0>57){c=-1;break a}s=i+1|0;f[C>>2]=s;j=b[(b[i>>0]|0)+-65+(19320+(n*58|0))>>0]|0;l=j&255;if((l+-1|0)>>>0<8){i=s;n=l}else break}if(!(j<<24>>24)){c=-1;break}k=(r|0)>-1;do if(j<<24>>24==19)if(k){c=-1;break a}else w=49;else{if(k){f[h+(r<<2)>>2]=l;l=g+(r<<3)|0;r=f[l+4>>2]|0;w=z;f[w>>2]=f[l>>2];f[w+4>>2]=r;w=49;break}if(!E){c=0;break a}hf(z,l,e)}while(0);if((w|0)==49?(w=0,!E):0){o=s;i=0;l=v;continue}l=b[i>>0]|0;l=(n|0)!=0&(l&15|0)==3?l&-33:l;j=q&-65537;r=(q&8192|0)==0?q:j;e:do switch(l|0){case 110:switch((n&255)<<24>>24){case 0:{f[f[z>>2]>>2]=c;o=s;i=0;l=v;continue a}case 1:{f[f[z>>2]>>2]=c;o=s;i=0;l=v;continue a}case 2:{o=f[z>>2]|0;f[o>>2]=c;f[o+4>>2]=((c|0)<0)<<31>>31;o=s;i=0;l=v;continue a}case 3:{d[f[z>>2]>>1]=c;o=s;i=0;l=v;continue a}case 4:{b[f[z>>2]>>0]=c;o=s;i=0;l=v;continue a}case 6:{f[f[z>>2]>>2]=c;o=s;i=0;l=v;continue a}case 7:{o=f[z>>2]|0;f[o>>2]=c;f[o+4>>2]=((c|0)<0)<<31>>31;o=s;i=0;l=v;continue a}default:{o=s;i=0;l=v;continue a}}case 112:{i=r|8;j=m>>>0>8?m:8;l=120;w=61;break}case 88:case 120:{i=r;j=m;w=61;break}case 111:{q=z;o=f[q>>2]|0;q=f[q+4>>2]|0;n=Qm(o,q,x)|0;j=D-n|0;i=r;j=(r&8|0)==0|(m|0)>(j|0)?m:j+1|0;k=0;m=19784;w=67;break}case 105:case 100:{j=z;i=f[j>>2]|0;j=f[j+4>>2]|0;if((j|0)<0){i=Xn(0,0,i|0,j|0)|0;j=I;k=z;f[k>>2]=i;f[k+4>>2]=j;k=1;l=19784;w=66;break e}else{k=(r&2049|0)!=0&1;l=(r&2048|0)==0?((r&1|0)==0?19784:19786):19785;w=66;break e}}case 117:{j=z;i=f[j>>2]|0;j=f[j+4>>2]|0;k=0;l=19784;w=66;break}case 99:{b[y>>0]=f[z>>2];o=y;n=j;l=1;k=0;j=19784;i=x;break}case 109:{i=Oq()|0;i=op(f[i>>2]|0)|0;w=71;break}case 115:{i=f[z>>2]|0;i=i|0?i:19794;w=71;break}case 67:{f[F>>2]=f[z>>2];f[A>>2]=0;f[z>>2]=F;i=F;m=-1;w=75;break}case 83:{i=f[z>>2]|0;if(!m){al(a,32,t,0,r);i=0;w=84}else w=75;break}case 65:case 71:case 70:case 69:case 97:case 103:case 102:case 101:{o=s;i=yb(a,+p[z>>3],t,m,r,l)|0;l=v;continue a}default:{n=r;l=m;k=0;j=19784;i=x}}while(0);f:do if((w|0)==61){q=z;o=f[q>>2]|0;q=f[q+4>>2]|0;n=xm(o,q,x,l&32)|0;m=(i&8|0)==0|(o|0)==0&(q|0)==0;k=m?0:2;m=m?19784:19784+(l>>4)|0;w=67}else if((w|0)==66){o=i;q=j;n=tk(i,j,x)|0;i=r;j=m;m=l;w=67}else if((w|0)==71){w=0;r=ni(i,0,m)|0;q=(r|0)==0;o=i;n=j;l=q?m:r-i|0;k=0;j=19784;i=q?i+m|0:r}else if((w|0)==75){w=0;k=0;j=0;n=i;while(1){l=f[n>>2]|0;if(!l)break;j=np(B,l)|0;if((j|0)<0|j>>>0>(m-k|0)>>>0)break;k=j+k|0;if(m>>>0>k>>>0)n=n+4|0;else break}if((j|0)<0){c=-1;break a}al(a,32,t,k,r);if(!k){i=0;w=84}else{l=0;while(1){j=f[i>>2]|0;if(!j){i=k;w=84;break f}j=np(B,j)|0;l=j+l|0;if((l|0)>(k|0)){i=k;w=84;break f}ip(a,B,j);if(l>>>0>=k>>>0){i=k;w=84;break}else i=i+4|0}}}while(0);if((w|0)==67){w=0;l=(o|0)!=0|(q|0)!=0;r=(j|0)!=0|l;l=((l^1)&1)+(D-n)|0;o=r?n:x;n=(j|0)>-1?i&-65537:i;l=r?((j|0)>(l|0)?j:l):j;j=m;i=x}else if((w|0)==84){w=0;al(a,32,t,i,r^8192);o=s;i=(t|0)>(i|0)?t:i;l=v;continue}r=i-o|0;q=(l|0)<(r|0)?r:l;l=q+k|0;i=(t|0)<(l|0)?l:t;al(a,32,i,l,n);ip(a,j,k);al(a,48,i,l,n^65536);al(a,48,q,r,0);ip(a,o,r);al(a,32,i,l,n^8192);o=s;l=v}g:do if((w|0)==87)if(!a)if(!l)c=0;else{c=1;while(1){i=f[h+(c<<2)>>2]|0;if(!i)break;hf(g+(c<<3)|0,i,e);c=c+1|0;if((c|0)>=10){c=1;break g}}while(1){if(f[h+(c<<2)>>2]|0){c=-1;break g}c=c+1|0;if((c|0)>=10){c=1;break}}}while(0);u=G;return c|0}function Ab(a,b,c,d,e,g){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;g=g|0;var h=0,i=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,v=0,w=0,x=0,y=0,z=0,A=0,B=0,C=0,D=0,E=0,F=0,G=0,H=0,I=0,J=0,K=0;K=u;u=u+64|0;J=K+16|0;H=K;d=J;g=d+48|0;do{f[d>>2]=0;d=d+4|0}while((d|0)<(g|0));f[H>>2]=0;if(!e){d=0;g=0}else{ch(J,e,H);d=f[J+12>>2]|0;g=f[J+16>>2]|0}f[H>>2]=0;h=J+16|0;i=g-d>>2;if(i>>>0>=e>>>0){if(i>>>0>e>>>0?(j=d+(e<<2)|0,(g|0)!=(j|0)):0)f[h>>2]=g+(~((g+-4-j|0)>>>2)<<2)}else ch(J+12|0,e-i|0,H);i=J+24|0;f[H>>2]=0;h=J+28|0;g=f[h>>2]|0;d=f[i>>2]|0;j=g-d>>2;if(j>>>0>=e>>>0){if(j>>>0>e>>>0?(k=d+(e<<2)|0,(g|0)!=(k|0)):0)f[h>>2]=g+(~((g+-4-k|0)>>>2)<<2)}else ch(i,e-j|0,H);i=J+36|0;f[H>>2]=0;h=J+40|0;g=f[h>>2]|0;d=f[i>>2]|0;j=g-d>>2;if(j>>>0>=e>>>0){if(j>>>0>e>>>0?(l=d+(e<<2)|0,(g|0)!=(l|0)):0)f[h>>2]=g+(~((g+-4-l|0)>>>2)<<2)}else ch(i,e-j|0,H);C=a+8|0;ji(C,f[J>>2]|0,b,c);v=f[a+32>>2]|0;t=f[a+36>>2]|0;D=ln(16)|0;f[D>>2]=0;f[D+4>>2]=0;f[D+8>>2]=0;f[D+12>>2]=0;Dk(H,e);A=a+40|0;h=f[A>>2]|0;g=f[h+4>>2]|0;d=f[h>>2]|0;z=g-d|0;B=z>>2;a:do if((z|0)>4){z=v+64|0;x=v+28|0;y=(e|0)>0;w=e<<2;i=h;h=1;while(1){if(g-d>>2>>>0<=h>>>0){Kp(i);d=f[i>>2]|0}o=f[d+(h<<2)>>2]|0;r=o+((o|0)<0?0:((o>>>0)%3|0|0)==0?2:-1)|0;q=r>>>5;s=1<<(r&31);p=(r|0)<0;g=o;n=1;d=0;b:while(1){do{if((g|0)<=-1){o=42;break b}i=f[J+(d*12|0)>>2]|0;if(((f[(f[v>>2]|0)+(g>>>5<<2)>>2]&1<<(g&31)|0)==0?(I=f[(f[(f[z>>2]|0)+12>>2]|0)+(g<<2)>>2]|0,(I|0)>=0):0)?(G=f[x>>2]|0,m=f[t>>2]|0,E=f[m+(f[G+(I<<2)>>2]<<2)>>2]|0,F=I+1|0,F=f[m+(f[G+((((F|0)%3|0|0)==0?I+-2|0:F)<<2)>>2]<<2)>>2]|0,G=f[m+(f[G+((((I>>>0)%3|0|0)==0?2:-1)+I<<2)>>2]<<2)>>2]|0,(E|0)<(h|0)&(F|0)<(h|0)&(G|0)<(h|0)):0){k=X(E,e)|0;l=X(F,e)|0;m=X(G,e)|0;if(y){j=0;do{f[i+(j<<2)>>2]=(f[c+(j+m<<2)>>2]|0)+(f[c+(j+l<<2)>>2]|0)-(f[c+(j+k<<2)>>2]|0);j=j+1|0}while((j|0)!=(e|0))}d=d+1|0;if((d|0)==4){d=4;o=23;break b}}do if(n){i=g+1|0;g=((i|0)%3|0|0)==0?g+-2|0:i;i=f[v>>2]|0;if(!(f[i+(g>>>5<<2)>>2]&1<<(g&31))){if((g|0)>=0){g=f[(f[(f[z>>2]|0)+12>>2]|0)+(g<<2)>>2]|0;j=g+1|0;if((g|0)>=0)g=((j|0)%3|0|0)==0?g+-2|0:j}}else g=-1073741824}else{g=(((g>>>0)%3|0|0)==0?2:-1)+g|0;i=f[v>>2]|0;if(!(f[i+(g>>>5<<2)>>2]&1<<(g&31))){if((g|0)>=0){g=f[(f[(f[z>>2]|0)+12>>2]|0)+(g<<2)>>2]|0;if((g|0)>=0)if(!((g>>>0)%3|0)){g=g+2|0;break}else{g=g+-1|0;break}}}else g=-1073741824}while(0);if((g|0)==(o|0)){o=42;break b}}while(!(n&(g|0)<0));g=(s&f[i+(q<<2)>>2]|0)!=0;if(g|p){g=g?-1073741824:r;n=0;continue}g=f[(f[(f[z>>2]|0)+12>>2]|0)+(r<<2)>>2]|0;if((g|0)<0){n=0;continue}if(!((g>>>0)%3|0)){g=g+2|0;n=0;continue}else{g=g+-1|0;n=0;continue}}if((o|0)==42)if((d|0)>0)o=23;else{d=X(h,e)|0;o=54}if((o|0)==23){o=0;if(y){ej(f[H>>2]|0,0,w|0)|0;k=d+-1|0;m=D+(k<<2)|0;k=f[a+44+(k*12|0)>>2]|0;l=f[H>>2]|0;n=0;j=0;do{s=f[m>>2]|0;f[m>>2]=s+1;if(!(f[k+(s>>>5<<2)>>2]&1<<(s&31))){g=f[J+(n*12|0)>>2]|0;i=0;do{s=l+(i<<2)|0;f[s>>2]=(f[s>>2]|0)+(f[g+(i<<2)>>2]|0);i=i+1|0}while((i|0)!=(e|0));j=j+1|0}n=n+1|0}while((n|0)!=(d|0))}else{g=d+-1|0;k=D+(g<<2)|0;g=f[a+44+(g*12|0)>>2]|0;i=f[k>>2]|0;l=0;j=0;do{s=i;i=i+1|0;f[k>>2]=i;j=j+((f[g+(s>>>5<<2)>>2]&1<<(s&31)|0)==0&1)|0;l=l+1|0}while((l|0)!=(d|0))}d=X(h,e)|0;if(!j)o=54;else{g=f[H>>2]|0;if(y){i=0;do{s=g+(i<<2)|0;f[s>>2]=(f[s>>2]|0)/(j|0)|0;i=i+1|0}while((i|0)!=(e|0))}ji(C,g,b+(d<<2)|0,c+(d<<2)|0)}}if((o|0)==54)ji(C,c+((X(h+-1|0,e)|0)<<2)|0,b+(d<<2)|0,c+(d<<2)|0);h=h+1|0;if((h|0)>=(B|0)){d=H;break a}i=f[A>>2]|0;d=f[i>>2]|0;g=f[i+4>>2]|0}}else d=H;while(0);h=f[d>>2]|0;if(h|0){g=H+4|0;d=f[g>>2]|0;if((d|0)!=(h|0))f[g>>2]=d+(~((d+-4-h|0)>>>2)<<2);ar(h)}ar(D);d=f[J+36>>2]|0;if(d|0){h=J+40|0;g=f[h>>2]|0;if((g|0)!=(d|0))f[h>>2]=g+(~((g+-4-d|0)>>>2)<<2);ar(d)}d=f[J+24>>2]|0;if(d|0){h=J+28|0;g=f[h>>2]|0;if((g|0)!=(d|0))f[h>>2]=g+(~((g+-4-d|0)>>>2)<<2);ar(d)}d=f[J+12>>2]|0;if(d|0){h=J+16|0;g=f[h>>2]|0;if((g|0)!=(d|0))f[h>>2]=g+(~((g+-4-d|0)>>>2)<<2);ar(d)}h=f[J>>2]|0;if(!h){u=K;return 1}g=J+4|0;d=f[g>>2]|0;if((d|0)!=(h|0))f[g>>2]=d+(~((d+-4-h|0)>>>2)<<2);ar(h);u=K;return 1}function Bb(a,b,c,d,e,g){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;g=g|0;var h=0,i=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,v=0,w=0,x=0,y=0,z=0,A=0,B=0,C=0,D=0,E=0,F=0,G=0,H=0,I=0,J=0,K=0;K=u;u=u+64|0;J=K+16|0;H=K;d=J;g=d+48|0;do{f[d>>2]=0;d=d+4|0}while((d|0)<(g|0));f[H>>2]=0;if(!e){d=0;g=0}else{ch(J,e,H);d=f[J+12>>2]|0;g=f[J+16>>2]|0}f[H>>2]=0;h=J+16|0;i=g-d>>2;if(i>>>0>=e>>>0){if(i>>>0>e>>>0?(j=d+(e<<2)|0,(g|0)!=(j|0)):0)f[h>>2]=g+(~((g+-4-j|0)>>>2)<<2)}else ch(J+12|0,e-i|0,H);i=J+24|0;f[H>>2]=0;h=J+28|0;g=f[h>>2]|0;d=f[i>>2]|0;j=g-d>>2;if(j>>>0>=e>>>0){if(j>>>0>e>>>0?(k=d+(e<<2)|0,(g|0)!=(k|0)):0)f[h>>2]=g+(~((g+-4-k|0)>>>2)<<2)}else ch(i,e-j|0,H);i=J+36|0;f[H>>2]=0;h=J+40|0;g=f[h>>2]|0;d=f[i>>2]|0;j=g-d>>2;if(j>>>0>=e>>>0){if(j>>>0>e>>>0?(l=d+(e<<2)|0,(g|0)!=(l|0)):0)f[h>>2]=g+(~((g+-4-l|0)>>>2)<<2)}else ch(i,e-j|0,H);C=a+8|0;mi(C,f[J>>2]|0,b,c);v=f[a+32>>2]|0;t=f[a+36>>2]|0;D=ln(16)|0;f[D>>2]=0;f[D+4>>2]=0;f[D+8>>2]=0;f[D+12>>2]=0;Dk(H,e);A=a+40|0;h=f[A>>2]|0;g=f[h+4>>2]|0;d=f[h>>2]|0;z=g-d|0;B=z>>2;a:do if((z|0)>4){z=v+64|0;x=v+28|0;y=(e|0)>0;w=e<<2;i=h;h=1;while(1){if(g-d>>2>>>0<=h>>>0){Kp(i);d=f[i>>2]|0}o=f[d+(h<<2)>>2]|0;r=o+((o|0)<0?0:((o>>>0)%3|0|0)==0?2:-1)|0;q=r>>>5;s=1<<(r&31);p=(r|0)<0;g=o;n=1;d=0;b:while(1){do{if((g|0)<=-1){o=42;break b}i=f[J+(d*12|0)>>2]|0;if(((f[(f[v>>2]|0)+(g>>>5<<2)>>2]&1<<(g&31)|0)==0?(I=f[(f[(f[z>>2]|0)+12>>2]|0)+(g<<2)>>2]|0,(I|0)>=0):0)?(G=f[x>>2]|0,m=f[t>>2]|0,E=f[m+(f[G+(I<<2)>>2]<<2)>>2]|0,F=I+1|0,F=f[m+(f[G+((((F|0)%3|0|0)==0?I+-2|0:F)<<2)>>2]<<2)>>2]|0,G=f[m+(f[G+((((I>>>0)%3|0|0)==0?2:-1)+I<<2)>>2]<<2)>>2]|0,(E|0)<(h|0)&(F|0)<(h|0)&(G|0)<(h|0)):0){k=X(E,e)|0;l=X(F,e)|0;m=X(G,e)|0;if(y){j=0;do{f[i+(j<<2)>>2]=(f[c+(j+m<<2)>>2]|0)+(f[c+(j+l<<2)>>2]|0)-(f[c+(j+k<<2)>>2]|0);j=j+1|0}while((j|0)!=(e|0))}d=d+1|0;if((d|0)==4){d=4;o=23;break b}}do if(n){i=g+1|0;g=((i|0)%3|0|0)==0?g+-2|0:i;i=f[v>>2]|0;if(!(f[i+(g>>>5<<2)>>2]&1<<(g&31))){if((g|0)>=0){g=f[(f[(f[z>>2]|0)+12>>2]|0)+(g<<2)>>2]|0;j=g+1|0;if((g|0)>=0)g=((j|0)%3|0|0)==0?g+-2|0:j}}else g=-1073741824}else{g=(((g>>>0)%3|0|0)==0?2:-1)+g|0;i=f[v>>2]|0;if(!(f[i+(g>>>5<<2)>>2]&1<<(g&31))){if((g|0)>=0){g=f[(f[(f[z>>2]|0)+12>>2]|0)+(g<<2)>>2]|0;if((g|0)>=0)if(!((g>>>0)%3|0)){g=g+2|0;break}else{g=g+-1|0;break}}}else g=-1073741824}while(0);if((g|0)==(o|0)){o=42;break b}}while(!(n&(g|0)<0));g=(s&f[i+(q<<2)>>2]|0)!=0;if(g|p){g=g?-1073741824:r;n=0;continue}g=f[(f[(f[z>>2]|0)+12>>2]|0)+(r<<2)>>2]|0;if((g|0)<0){n=0;continue}if(!((g>>>0)%3|0)){g=g+2|0;n=0;continue}else{g=g+-1|0;n=0;continue}}if((o|0)==42)if((d|0)>0)o=23;else{d=X(h,e)|0;o=54}if((o|0)==23){o=0;if(y){ej(f[H>>2]|0,0,w|0)|0;k=d+-1|0;m=D+(k<<2)|0;k=f[a+44+(k*12|0)>>2]|0;l=f[H>>2]|0;n=0;j=0;do{s=f[m>>2]|0;f[m>>2]=s+1;if(!(f[k+(s>>>5<<2)>>2]&1<<(s&31))){g=f[J+(n*12|0)>>2]|0;i=0;do{s=l+(i<<2)|0;f[s>>2]=(f[s>>2]|0)+(f[g+(i<<2)>>2]|0);i=i+1|0}while((i|0)!=(e|0));j=j+1|0}n=n+1|0}while((n|0)!=(d|0))}else{g=d+-1|0;k=D+(g<<2)|0;g=f[a+44+(g*12|0)>>2]|0;i=f[k>>2]|0;l=0;j=0;do{s=i;i=i+1|0;f[k>>2]=i;j=j+((f[g+(s>>>5<<2)>>2]&1<<(s&31)|0)==0&1)|0;l=l+1|0}while((l|0)!=(d|0))}d=X(h,e)|0;if(!j)o=54;else{g=f[H>>2]|0;if(y){i=0;do{s=g+(i<<2)|0;f[s>>2]=(f[s>>2]|0)/(j|0)|0;i=i+1|0}while((i|0)!=(e|0))}mi(C,g,b+(d<<2)|0,c+(d<<2)|0)}}if((o|0)==54)mi(C,c+((X(h+-1|0,e)|0)<<2)|0,b+(d<<2)|0,c+(d<<2)|0);h=h+1|0;if((h|0)>=(B|0)){d=H;break a}i=f[A>>2]|0;d=f[i>>2]|0;g=f[i+4>>2]|0}}else d=H;while(0);h=f[d>>2]|0;if(h|0){g=H+4|0;d=f[g>>2]|0;if((d|0)!=(h|0))f[g>>2]=d+(~((d+-4-h|0)>>>2)<<2);ar(h)}ar(D);d=f[J+36>>2]|0;if(d|0){h=J+40|0;g=f[h>>2]|0;if((g|0)!=(d|0))f[h>>2]=g+(~((g+-4-d|0)>>>2)<<2);ar(d)}d=f[J+24>>2]|0;if(d|0){h=J+28|0;g=f[h>>2]|0;if((g|0)!=(d|0))f[h>>2]=g+(~((g+-4-d|0)>>>2)<<2);ar(d)}d=f[J+12>>2]|0;if(d|0){h=J+16|0;g=f[h>>2]|0;if((g|0)!=(d|0))f[h>>2]=g+(~((g+-4-d|0)>>>2)<<2);ar(d)}h=f[J>>2]|0;if(!h){u=K;return 1}g=J+4|0;d=f[g>>2]|0;if((d|0)!=(h|0))f[g>>2]=d+(~((d+-4-h|0)>>>2)<<2);ar(h);u=K;return 1}function Cb(a){a=a|0;var c=0,d=0,e=0,g=0,i=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,v=0,w=0,x=0;x=u;u=u+16|0;w=x;v=a+32|0;r=f[v>>2]|0;j=r+8|0;i=f[j>>2]|0;j=f[j+4>>2]|0;k=r+16|0;l=k;n=f[l>>2]|0;l=f[l+4>>2]|0;d=Ho(n|0,l|0,4,0)|0;c=I;if((j|0)<(c|0)|(j|0)==(c|0)&i>>>0>>0){a=0;u=x;return a|0}g=f[r>>2]|0;t=g+n|0;t=h[t>>0]|h[t+1>>0]<<8|h[t+2>>0]<<16|h[t+3>>0]<<24;s=k;f[s>>2]=d;f[s+4>>2]=c;if((t|0)<0){a=0;u=x;return a|0}c=Ho(n|0,l|0,8,0)|0;e=I;if((j|0)<(e|0)|(j|0)==(e|0)&i>>>0>>0){a=0;u=x;return a|0}s=g+d|0;s=h[s>>0]|h[s+1>>0]<<8|h[s+2>>0]<<16|h[s+3>>0]<<24;q=k;f[q>>2]=c;f[q+4>>2]=e;if(!((s|0)>-1&((j|0)>(e|0)|(j|0)==(e|0)&i>>>0>c>>>0))){a=0;u=x;return a|0}q=b[g+c>>0]|0;m=Ho(n|0,l|0,9,0)|0;j=I;p=k;f[p>>2]=m;f[p+4>>2]=j;a:do if(!(q<<24>>24)){if(!(mf(a,t)|0)){a=0;u=x;return a|0}}else{if((s|0)<256){if((t|0)<=0)break;n=a+44|0;o=w+4|0;p=w+8|0;f[w>>2]=0;f[w+4>>2]=0;f[w+8>>2]=0;c=r+8|0;d=f[c>>2]|0;c=f[c+4>>2]|0;b:do if((c|0)>(j|0)|(c|0)==(j|0)&d>>>0>m>>>0){e=r;k=m;i=c;l=0;do{g=e+16|0;e=f[e>>2]|0;q=b[e+k>>0]|0;c=Ho(k|0,j|0,1,0)|0;r=I;m=g;f[m>>2]=c;f[m+4>>2]=r;f[w>>2]=q&255;if(!((i|0)>(r|0)|(i|0)==(r|0)&d>>>0>c>>>0))break b;q=b[e+c>>0]|0;c=Ho(k|0,j|0,2,0)|0;r=I;m=g;f[m>>2]=c;f[m+4>>2]=r;f[o>>2]=q&255;if(!((i|0)>(r|0)|(i|0)==(r|0)&d>>>0>c>>>0))break b;d=b[e+c>>0]|0;c=Ho(k|0,j|0,3,0)|0;e=g;f[e>>2]=c;f[e+4>>2]=I;f[p>>2]=d&255;d=f[n>>2]|0;e=d+88|0;c=f[e>>2]|0;if((c|0)==(f[d+92>>2]|0))pi(d+84|0,w);else{f[c>>2]=f[w>>2];f[c+4>>2]=f[w+4>>2];f[c+8>>2]=f[w+8>>2];f[e>>2]=(f[e>>2]|0)+12}l=l+1|0;if((l|0)>=(t|0))break a;e=f[v>>2]|0;j=e+16|0;k=f[j>>2]|0;j=f[j+4>>2]|0;f[w>>2]=0;f[w+4>>2]=0;f[w+8>>2]=0;i=e+8|0;d=f[i>>2]|0;i=f[i+4>>2]|0}while((i|0)>(j|0)|(i|0)==(j|0)&d>>>0>k>>>0)}while(0);a=0;u=x;return a|0}c=(t|0)>0;if((s|0)<65536){if(!c)break;o=a+44|0;p=w+4|0;q=w+8|0;f[w>>2]=0;f[w+4>>2]=0;f[w+8>>2]=0;e=r+8|0;i=f[e>>2]|0;e=f[e+4>>2]|0;c=Ho(n|0,l|0,11,0)|0;d=I;c:do if(!((e|0)<(d|0)|(e|0)==(d|0)&i>>>0>>0)){g=r;l=e;n=0;do{k=g+16|0;g=f[g>>2]|0;e=g+m|0;e=h[e>>0]|h[e+1>>0]<<8;r=k;f[r>>2]=c;f[r+4>>2]=d;f[w>>2]=e&65535;e=Ho(m|0,j|0,4,0)|0;d=I;if((l|0)<(d|0)|(l|0)==(d|0)&i>>>0>>0)break c;c=g+c|0;c=h[c>>0]|h[c+1>>0]<<8;r=k;f[r>>2]=e;f[r+4>>2]=d;f[p>>2]=c&65535;c=Ho(m|0,j|0,6,0)|0;d=I;if((l|0)<(d|0)|(l|0)==(d|0)&i>>>0>>0)break c;e=g+e|0;e=h[e>>0]|h[e+1>>0]<<8;r=k;f[r>>2]=c;f[r+4>>2]=d;f[q>>2]=e&65535;d=f[o>>2]|0;e=d+88|0;c=f[e>>2]|0;if((c|0)==(f[d+92>>2]|0))pi(d+84|0,w);else{f[c>>2]=f[w>>2];f[c+4>>2]=f[w+4>>2];f[c+8>>2]=f[w+8>>2];f[e>>2]=(f[e>>2]|0)+12}n=n+1|0;if((n|0)>=(t|0))break a;g=f[v>>2]|0;j=g+16|0;m=f[j>>2]|0;j=f[j+4>>2]|0;f[w>>2]=0;f[w+4>>2]=0;f[w+8>>2]=0;l=g+8|0;i=f[l>>2]|0;l=f[l+4>>2]|0;c=Ho(m|0,j|0,2,0)|0;d=I}while(!((l|0)<(d|0)|(l|0)==(d|0)&i>>>0>>0))}while(0);a=0;u=x;return a|0}else{if(!c)break;o=a+44|0;p=w+4|0;q=w+8|0;f[w>>2]=0;f[w+4>>2]=0;f[w+8>>2]=0;e=r+8|0;i=f[e>>2]|0;e=f[e+4>>2]|0;c=Ho(n|0,l|0,13,0)|0;d=I;d:do if(!((e|0)<(d|0)|(e|0)==(d|0)&i>>>0>>0)){g=r;l=e;n=0;do{k=g+16|0;g=f[g>>2]|0;e=g+m|0;e=h[e>>0]|h[e+1>>0]<<8|h[e+2>>0]<<16|h[e+3>>0]<<24;r=k;f[r>>2]=c;f[r+4>>2]=d;f[w>>2]=e;e=Ho(m|0,j|0,8,0)|0;d=I;if((l|0)<(d|0)|(l|0)==(d|0)&i>>>0>>0)break d;c=g+c|0;c=h[c>>0]|h[c+1>>0]<<8|h[c+2>>0]<<16|h[c+3>>0]<<24;r=k;f[r>>2]=e;f[r+4>>2]=d;f[p>>2]=c;c=Ho(m|0,j|0,12,0)|0;d=I;if((l|0)<(d|0)|(l|0)==(d|0)&i>>>0>>0)break d;e=g+e|0;e=h[e>>0]|h[e+1>>0]<<8|h[e+2>>0]<<16|h[e+3>>0]<<24;r=k;f[r>>2]=c;f[r+4>>2]=d;f[q>>2]=e;d=f[o>>2]|0;e=d+88|0;c=f[e>>2]|0;if((c|0)==(f[d+92>>2]|0))pi(d+84|0,w);else{f[c>>2]=f[w>>2];f[c+4>>2]=f[w+4>>2];f[c+8>>2]=f[w+8>>2];f[e>>2]=(f[e>>2]|0)+12}n=n+1|0;if((n|0)>=(t|0))break a;g=f[v>>2]|0;j=g+16|0;m=f[j>>2]|0;j=f[j+4>>2]|0;f[w>>2]=0;f[w+4>>2]=0;f[w+8>>2]=0;l=g+8|0;i=f[l>>2]|0;l=f[l+4>>2]|0;c=Ho(m|0,j|0,4,0)|0;d=I}while(!((l|0)<(d|0)|(l|0)==(d|0)&i>>>0>>0))}while(0);a=0;u=x;return a|0}}while(0);f[(f[a+4>>2]|0)+68>>2]=s;a=1;u=x;return a|0}function Db(a,b,c,d,e,g){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;g=g|0;var h=0,i=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,v=0,w=0,x=0,y=0,z=0,A=0,B=0,C=0,D=0,E=0,F=0,G=0,H=0;H=u;u=u+64|0;G=H+16|0;F=H;d=G;g=d+48|0;do{f[d>>2]=0;d=d+4|0}while((d|0)<(g|0));f[F>>2]=0;if(!e){d=0;g=0}else{ch(G,e,F);d=f[G+12>>2]|0;g=f[G+16>>2]|0}f[F>>2]=0;h=G+16|0;i=g-d>>2;if(i>>>0>=e>>>0){if(i>>>0>e>>>0?(j=d+(e<<2)|0,(g|0)!=(j|0)):0)f[h>>2]=g+(~((g+-4-j|0)>>>2)<<2)}else ch(G+12|0,e-i|0,F);i=G+24|0;f[F>>2]=0;h=G+28|0;g=f[h>>2]|0;d=f[i>>2]|0;j=g-d>>2;if(j>>>0>=e>>>0){if(j>>>0>e>>>0?(k=d+(e<<2)|0,(g|0)!=(k|0)):0)f[h>>2]=g+(~((g+-4-k|0)>>>2)<<2)}else ch(i,e-j|0,F);i=G+36|0;f[F>>2]=0;h=G+40|0;g=f[h>>2]|0;d=f[i>>2]|0;j=g-d>>2;if(j>>>0>=e>>>0){if(j>>>0>e>>>0?(l=d+(e<<2)|0,(g|0)!=(l|0)):0)f[h>>2]=g+(~((g+-4-l|0)>>>2)<<2)}else ch(i,e-j|0,F);D=a+8|0;ji(D,f[G>>2]|0,b,c);x=f[a+32>>2]|0;w=f[a+36>>2]|0;E=ln(16)|0;f[E>>2]=0;f[E+4>>2]=0;f[E+8>>2]=0;f[E+12>>2]=0;Dk(F,e);B=a+40|0;i=f[B>>2]|0;g=f[i+4>>2]|0;d=f[i>>2]|0;A=g-d|0;C=A>>2;a:do if((A|0)>4){z=x+12|0;A=(e|0)>0;y=e<<2;h=1;while(1){if(g-d>>2>>>0<=h>>>0){Kp(i);d=f[i>>2]|0}s=f[d+(h<<2)>>2]|0;v=(((s>>>0)%3|0|0)==0?2:-1)+s|0;t=(s|v|0)<0;r=(s|0)<0?s:v;g=s;q=1;d=0;b:while(1){do{if((g|0)<=-1){o=43;break b}o=f[G+(d*12|0)>>2]|0;p=f[z>>2]|0;j=f[p+(g<<2)>>2]|0;if((j|0)>=0){k=f[x>>2]|0;l=f[w>>2]|0;n=f[l+(f[k+(j<<2)>>2]<<2)>>2]|0;i=j+1|0;i=((i|0)%3|0|0)==0?j+-2|0:i;if((i|0)<0)i=-1073741824;else i=f[k+(i<<2)>>2]|0;m=f[l+(i<<2)>>2]|0;i=(((j>>>0)%3|0|0)==0?2:-1)+j|0;if((i|0)<0)i=-1073741824;else i=f[k+(i<<2)>>2]|0;i=f[l+(i<<2)>>2]|0;if((n|0)<(h|0)&(m|0)<(h|0)&(i|0)<(h|0)){l=X(n,e)|0;k=X(m,e)|0;j=X(i,e)|0;if(A){i=0;do{f[o+(i<<2)>>2]=(f[c+(i+j<<2)>>2]|0)+(f[c+(i+k<<2)>>2]|0)-(f[c+(i+l<<2)>>2]|0);i=i+1|0}while((i|0)!=(e|0))}d=d+1|0;if((d|0)==4){d=4;o=26;break b}}}do if(q){o=g+1|0;g=((o|0)%3|0|0)==0?g+-2|0:o;if((g|0)>=0){g=f[p+(g<<2)>>2]|0;i=g+1|0;if((g|0)>=0)g=((i|0)%3|0|0)==0?g+-2|0:i}}else{g=(((g>>>0)%3|0|0)==0?2:-1)+g|0;if((g|0)>=0){g=f[p+(g<<2)>>2]|0;if((g|0)>=0)if(!((g>>>0)%3|0)){g=g+2|0;break}else{g=g+-1|0;break}}}while(0);if((g|0)==(s|0)){o=43;break b}}while(!(q&(g|0)<0));if(t){g=r;q=0;continue}g=f[p+(v<<2)>>2]|0;if((g|0)<0){q=0;continue}if(!((g>>>0)%3|0)){g=g+2|0;q=0;continue}else{g=g+-1|0;q=0;continue}}if((o|0)==43)if((d|0)>0)o=26;else{d=X(h,e)|0;o=55}if((o|0)==26){o=0;if(A){ej(f[F>>2]|0,0,y|0)|0;k=d+-1|0;m=E+(k<<2)|0;k=f[a+44+(k*12|0)>>2]|0;l=f[F>>2]|0;n=0;j=0;do{v=f[m>>2]|0;f[m>>2]=v+1;if(!(f[k+(v>>>5<<2)>>2]&1<<(v&31))){g=f[G+(n*12|0)>>2]|0;i=0;do{v=l+(i<<2)|0;f[v>>2]=(f[v>>2]|0)+(f[g+(i<<2)>>2]|0);i=i+1|0}while((i|0)!=(e|0));j=j+1|0}n=n+1|0}while((n|0)!=(d|0))}else{g=d+-1|0;k=E+(g<<2)|0;g=f[a+44+(g*12|0)>>2]|0;i=f[k>>2]|0;l=0;j=0;do{v=i;i=i+1|0;f[k>>2]=i;j=j+((f[g+(v>>>5<<2)>>2]&1<<(v&31)|0)==0&1)|0;l=l+1|0}while((l|0)!=(d|0))}d=X(h,e)|0;if(!j)o=55;else{g=f[F>>2]|0;if(A){i=0;do{v=g+(i<<2)|0;f[v>>2]=(f[v>>2]|0)/(j|0)|0;i=i+1|0}while((i|0)!=(e|0))}ji(D,g,b+(d<<2)|0,c+(d<<2)|0)}}if((o|0)==55)ji(D,c+((X(h+-1|0,e)|0)<<2)|0,b+(d<<2)|0,c+(d<<2)|0);h=h+1|0;if((h|0)>=(C|0)){d=F;break a}i=f[B>>2]|0;d=f[i>>2]|0;g=f[i+4>>2]|0}}else d=F;while(0);h=f[d>>2]|0;if(h|0){g=F+4|0;d=f[g>>2]|0;if((d|0)!=(h|0))f[g>>2]=d+(~((d+-4-h|0)>>>2)<<2);ar(h)}ar(E);d=f[G+36>>2]|0;if(d|0){h=G+40|0;g=f[h>>2]|0;if((g|0)!=(d|0))f[h>>2]=g+(~((g+-4-d|0)>>>2)<<2);ar(d)}d=f[G+24>>2]|0;if(d|0){h=G+28|0;g=f[h>>2]|0;if((g|0)!=(d|0))f[h>>2]=g+(~((g+-4-d|0)>>>2)<<2);ar(d)}d=f[G+12>>2]|0;if(d|0){h=G+16|0;g=f[h>>2]|0;if((g|0)!=(d|0))f[h>>2]=g+(~((g+-4-d|0)>>>2)<<2);ar(d)}h=f[G>>2]|0;if(!h){u=H;return 1}g=G+4|0;d=f[g>>2]|0;if((d|0)!=(h|0))f[g>>2]=d+(~((d+-4-h|0)>>>2)<<2);ar(h);u=H;return 1}function Eb(a,c,e){a=a|0;c=c|0;e=e|0;var g=0,h=0,i=0,j=0,k=0,l=0,m=0,o=La,p=La,q=0,r=0,s=0,t=0,v=0,w=0,x=0,y=0,z=0,A=0,B=0,C=0,D=0,E=0,F=0,G=0,H=0,J=0,K=0,L=0,M=0,N=0,O=0,P=0,Q=La;P=u;u=u+48|0;O=P+12|0;K=P+32|0;N=P;G=O+16|0;f[O>>2]=0;f[O+4>>2]=0;f[O+8>>2]=0;f[O+12>>2]=0;n[G>>2]=$(1.0);M=a+80|0;Dk(N,f[M>>2]|0);h=f[M>>2]|0;a:do if((h|0)>0){D=c+48|0;E=c+40|0;B=K+2|0;C=K+4|0;x=O+4|0;A=O+12|0;y=O+8|0;F=a+40|0;z=a+64|0;w=f[e>>2]|0;r=0;v=0;t=0;while(1){l=w+v|0;j=D;k=f[j>>2]|0;j=f[j+4>>2]|0;s=E;l=kn(f[s>>2]|0,f[s+4>>2]|0,l|0,((l|0)<0)<<31>>31|0)|0;j=Ho(l|0,I|0,k|0,j|0)|0;j=(f[f[c>>2]>>2]|0)+j|0;b[K>>0]=b[j>>0]|0;b[K+1>>0]=b[j+1>>0]|0;b[K+2>>0]=b[j+2>>0]|0;b[K+3>>0]=b[j+3>>0]|0;b[K+4>>0]=b[j+4>>0]|0;b[K+5>>0]=b[j+5>>0]|0;j=d[K>>1]|0;k=d[B>>1]|0;l=d[C>>1]|0;s=(((j^318)&65535)+239^k&65535)+239^l&65535;q=(r|0)==0;b:do if(!q){h=r+-1|0;g=(h&r|0)==0;if(g)i=s&h;else i=(s>>>0)%(r>>>0)|0;e=f[(f[O>>2]|0)+(i<<2)>>2]|0;do if(e|0?(J=f[e>>2]|0,J|0):0){c:do if(g){e=J;while(1){if((f[e+4>>2]&h|0)!=(i|0)){i=22;break c}if(((d[e+8>>1]|0)==j<<16>>16?(d[e+10>>1]|0)==k<<16>>16:0)?(d[e+12>>1]|0)==l<<16>>16:0){i=21;break c}e=f[e>>2]|0;if(!e){i=22;break}}}else{e=J;while(1){if((((f[e+4>>2]|0)>>>0)%(r>>>0)|0|0)!=(i|0)){i=22;break c}if(((d[e+8>>1]|0)==j<<16>>16?(d[e+10>>1]|0)==k<<16>>16:0)?(d[e+12>>1]|0)==l<<16>>16:0){i=21;break c}e=f[e>>2]|0;if(!e){i=22;break}}}while(0);if((i|0)==21){i=0;f[(f[N>>2]|0)+(v<<2)>>2]=f[e+16>>2];g=t;break b}else if((i|0)==22)if(q){e=0;i=39;break b}else break}while(0);i=r+-1|0;h=(i&r|0)==0;if(h)e=i&s;else e=(s>>>0)%(r>>>0)|0;g=f[(f[O>>2]|0)+(e<<2)>>2]|0;if((g|0)!=0?(H=f[g>>2]|0,(H|0)!=0):0)if(h){g=H;while(1){if((f[g+4>>2]&i|0)!=(e|0)){i=39;break b}if(((d[g+8>>1]|0)==j<<16>>16?(d[g+10>>1]|0)==k<<16>>16:0)?(d[g+12>>1]|0)==l<<16>>16:0){i=52;break b}g=f[g>>2]|0;if(!g){i=39;break}}}else{g=H;while(1){if((((f[g+4>>2]|0)>>>0)%(r>>>0)|0|0)!=(e|0)){i=39;break b}if(((d[g+8>>1]|0)==j<<16>>16?(d[g+10>>1]|0)==k<<16>>16:0)?(d[g+12>>1]|0)==l<<16>>16:0){i=52;break b}g=f[g>>2]|0;if(!g){i=39;break}}}else i=39}else{e=0;i=39}while(0);if((i|0)==39){i=0;m=ln(20)|0;d[m+8>>1]=j;d[m+10>>1]=k;d[m+12>>1]=l;f[m+16>>2]=t;f[m+4>>2]=s;f[m>>2]=0;p=$(((f[A>>2]|0)+1|0)>>>0);Q=$(r>>>0);o=$(n[G>>2]);do if(q|p>$(Q*o)){e=(r>>>0<3|(r+-1&r|0)!=0)&1|r<<1;g=~~$(W($(p/o)))>>>0;Mh(O,e>>>0>>0?g:e);e=f[x>>2]|0;g=e+-1|0;if(!(g&e)){h=e;e=g&s;break}else{h=e;e=(s>>>0)%(e>>>0)|0;break}}else h=r;while(0);g=(f[O>>2]|0)+(e<<2)|0;e=f[g>>2]|0;if(!e){f[m>>2]=f[y>>2];f[y>>2]=m;f[g>>2]=y;e=f[m>>2]|0;if(e|0){e=f[e+4>>2]|0;g=h+-1|0;if(!(g&h))e=e&g;else e=(e>>>0)%(h>>>0)|0;e=(f[O>>2]|0)+(e<<2)|0;i=50}}else{f[m>>2]=f[e>>2];i=50}if((i|0)==50)f[e>>2]=m;f[A>>2]=(f[A>>2]|0)+1;i=52}if((i|0)==52){s=F;g=f[s>>2]|0;s=kn(g|0,f[s+4>>2]|0,t|0,((t|0)<0)<<31>>31|0)|0;Mg((f[f[z>>2]>>2]|0)+s|0,K|0,g|0)|0;f[(f[N>>2]|0)+(v<<2)>>2]=t;g=t+1|0}e=v+1|0;h=f[M>>2]|0;if((e|0)>=(h|0)){m=g;break a}r=f[x>>2]|0;v=e;t=g}}else m=0;while(0);if((m|0)!=(h|0)){l=a+84|0;if(!(b[l>>0]|0)){h=f[a+68>>2]|0;e=(f[a+72>>2]|0)-h|0;if((e|0)>0){i=f[N>>2]|0;g=e>>2;e=0;do{a=h+(e<<2)|0;f[a>>2]=f[i+(f[a>>2]<<2)>>2];e=e+1|0}while((e|0)<(g|0))}}else{b[l>>0]=0;j=a+68|0;i=a+72|0;g=f[i>>2]|0;e=f[j>>2]|0;k=g-e>>2;if(h>>>0<=k>>>0){if(h>>>0>>0?(L=e+(h<<2)|0,(g|0)!=(L|0)):0)f[i>>2]=g+(~((g+-4-L|0)>>>2)<<2)}else{ch(j,h-k|0,1416);h=f[M>>2]|0}if((h|0)>0){i=f[N>>2]|0;if(b[l>>0]|0)Ga(18230,18249,91,18290);e=f[a+68>>2]|0;g=0;do{f[e+(g<<2)>>2]=f[i+(g<<2)>>2];g=g+1|0}while((g|0)<(h|0))}}f[M>>2]=m}h=f[N>>2]|0;if(h|0){g=N+4|0;e=f[g>>2]|0;if((e|0)!=(h|0))f[g>>2]=e+(~((e+-4-h|0)>>>2)<<2);ar(h)}e=f[O+8>>2]|0;if(e|0)do{N=e;e=f[e>>2]|0;ar(N)}while((e|0)!=0);e=f[O>>2]|0;f[O>>2]=0;if(!e){u=P;return m|0}ar(e);u=P;return m|0}function Fb(a,b,c,d,e,g){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;g=g|0;var h=0,i=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,v=0,w=0,x=0,y=0,z=0,A=0,B=0,C=0,D=0,E=0,F=0,G=0,H=0;H=u;u=u+64|0;G=H+16|0;F=H;d=G;g=d+48|0;do{f[d>>2]=0;d=d+4|0}while((d|0)<(g|0));f[F>>2]=0;if(!e){d=0;g=0}else{ch(G,e,F);d=f[G+12>>2]|0;g=f[G+16>>2]|0}f[F>>2]=0;h=G+16|0;i=g-d>>2;if(i>>>0>=e>>>0){if(i>>>0>e>>>0?(j=d+(e<<2)|0,(g|0)!=(j|0)):0)f[h>>2]=g+(~((g+-4-j|0)>>>2)<<2)}else ch(G+12|0,e-i|0,F);i=G+24|0;f[F>>2]=0;h=G+28|0;g=f[h>>2]|0;d=f[i>>2]|0;j=g-d>>2;if(j>>>0>=e>>>0){if(j>>>0>e>>>0?(k=d+(e<<2)|0,(g|0)!=(k|0)):0)f[h>>2]=g+(~((g+-4-k|0)>>>2)<<2)}else ch(i,e-j|0,F);i=G+36|0;f[F>>2]=0;h=G+40|0;g=f[h>>2]|0;d=f[i>>2]|0;j=g-d>>2;if(j>>>0>=e>>>0){if(j>>>0>e>>>0?(l=d+(e<<2)|0,(g|0)!=(l|0)):0)f[h>>2]=g+(~((g+-4-l|0)>>>2)<<2)}else ch(i,e-j|0,F);D=a+8|0;mi(D,f[G>>2]|0,b,c);x=f[a+32>>2]|0;w=f[a+36>>2]|0;E=ln(16)|0;f[E>>2]=0;f[E+4>>2]=0;f[E+8>>2]=0;f[E+12>>2]=0;Dk(F,e);B=a+40|0;i=f[B>>2]|0;g=f[i+4>>2]|0;d=f[i>>2]|0;A=g-d|0;C=A>>2;a:do if((A|0)>4){z=x+12|0;A=(e|0)>0;y=e<<2;h=1;while(1){if(g-d>>2>>>0<=h>>>0){Kp(i);d=f[i>>2]|0}s=f[d+(h<<2)>>2]|0;v=(((s>>>0)%3|0|0)==0?2:-1)+s|0;t=(s|v|0)<0;r=(s|0)<0?s:v;g=s;q=1;d=0;b:while(1){do{if((g|0)<=-1){o=43;break b}o=f[G+(d*12|0)>>2]|0;p=f[z>>2]|0;j=f[p+(g<<2)>>2]|0;if((j|0)>=0){k=f[x>>2]|0;l=f[w>>2]|0;n=f[l+(f[k+(j<<2)>>2]<<2)>>2]|0;i=j+1|0;i=((i|0)%3|0|0)==0?j+-2|0:i;if((i|0)<0)i=-1073741824;else i=f[k+(i<<2)>>2]|0;m=f[l+(i<<2)>>2]|0;i=(((j>>>0)%3|0|0)==0?2:-1)+j|0;if((i|0)<0)i=-1073741824;else i=f[k+(i<<2)>>2]|0;i=f[l+(i<<2)>>2]|0;if((n|0)<(h|0)&(m|0)<(h|0)&(i|0)<(h|0)){l=X(n,e)|0;k=X(m,e)|0;j=X(i,e)|0;if(A){i=0;do{f[o+(i<<2)>>2]=(f[c+(i+j<<2)>>2]|0)+(f[c+(i+k<<2)>>2]|0)-(f[c+(i+l<<2)>>2]|0);i=i+1|0}while((i|0)!=(e|0))}d=d+1|0;if((d|0)==4){d=4;o=26;break b}}}do if(q){o=g+1|0;g=((o|0)%3|0|0)==0?g+-2|0:o;if((g|0)>=0){g=f[p+(g<<2)>>2]|0;i=g+1|0;if((g|0)>=0)g=((i|0)%3|0|0)==0?g+-2|0:i}}else{g=(((g>>>0)%3|0|0)==0?2:-1)+g|0;if((g|0)>=0){g=f[p+(g<<2)>>2]|0;if((g|0)>=0)if(!((g>>>0)%3|0)){g=g+2|0;break}else{g=g+-1|0;break}}}while(0);if((g|0)==(s|0)){o=43;break b}}while(!(q&(g|0)<0));if(t){g=r;q=0;continue}g=f[p+(v<<2)>>2]|0;if((g|0)<0){q=0;continue}if(!((g>>>0)%3|0)){g=g+2|0;q=0;continue}else{g=g+-1|0;q=0;continue}}if((o|0)==43)if((d|0)>0)o=26;else{d=X(h,e)|0;o=55}if((o|0)==26){o=0;if(A){ej(f[F>>2]|0,0,y|0)|0;k=d+-1|0;m=E+(k<<2)|0;k=f[a+44+(k*12|0)>>2]|0;l=f[F>>2]|0;n=0;j=0;do{v=f[m>>2]|0;f[m>>2]=v+1;if(!(f[k+(v>>>5<<2)>>2]&1<<(v&31))){g=f[G+(n*12|0)>>2]|0;i=0;do{v=l+(i<<2)|0;f[v>>2]=(f[v>>2]|0)+(f[g+(i<<2)>>2]|0);i=i+1|0}while((i|0)!=(e|0));j=j+1|0}n=n+1|0}while((n|0)!=(d|0))}else{g=d+-1|0;k=E+(g<<2)|0;g=f[a+44+(g*12|0)>>2]|0;i=f[k>>2]|0;l=0;j=0;do{v=i;i=i+1|0;f[k>>2]=i;j=j+((f[g+(v>>>5<<2)>>2]&1<<(v&31)|0)==0&1)|0;l=l+1|0}while((l|0)!=(d|0))}d=X(h,e)|0;if(!j)o=55;else{g=f[F>>2]|0;if(A){i=0;do{v=g+(i<<2)|0;f[v>>2]=(f[v>>2]|0)/(j|0)|0;i=i+1|0}while((i|0)!=(e|0))}mi(D,g,b+(d<<2)|0,c+(d<<2)|0)}}if((o|0)==55)mi(D,c+((X(h+-1|0,e)|0)<<2)|0,b+(d<<2)|0,c+(d<<2)|0);h=h+1|0;if((h|0)>=(C|0)){d=F;break a}i=f[B>>2]|0;d=f[i>>2]|0;g=f[i+4>>2]|0}}else d=F;while(0);h=f[d>>2]|0;if(h|0){g=F+4|0;d=f[g>>2]|0;if((d|0)!=(h|0))f[g>>2]=d+(~((d+-4-h|0)>>>2)<<2);ar(h)}ar(E);d=f[G+36>>2]|0;if(d|0){h=G+40|0;g=f[h>>2]|0;if((g|0)!=(d|0))f[h>>2]=g+(~((g+-4-d|0)>>>2)<<2);ar(d)}d=f[G+24>>2]|0;if(d|0){h=G+28|0;g=f[h>>2]|0;if((g|0)!=(d|0))f[h>>2]=g+(~((g+-4-d|0)>>>2)<<2);ar(d)}d=f[G+12>>2]|0;if(d|0){h=G+16|0;g=f[h>>2]|0;if((g|0)!=(d|0))f[h>>2]=g+(~((g+-4-d|0)>>>2)<<2);ar(d)}h=f[G>>2]|0;if(!h){u=H;return 1}g=G+4|0;d=f[g>>2]|0;if((d|0)!=(h|0))f[g>>2]=d+(~((d+-4-h|0)>>>2)<<2);ar(h);u=H;return 1}function Gb(a,c,d){a=a|0;c=c|0;d=d|0;var e=0,g=0,h=0,i=0,j=0,k=0,l=0,m=La,o=La,p=0,q=0,r=0,s=0,t=0,v=0,w=0,x=0,y=0,z=0,A=0,B=0,C=0,D=0,E=0,F=0,G=0,H=0,J=0,K=0,L=0,M=0,N=0,O=0,P=La;O=u;u=u+48|0;N=O+12|0;J=O+32|0;M=O;F=N+16|0;f[N>>2]=0;f[N+4>>2]=0;f[N+8>>2]=0;f[N+12>>2]=0;n[F>>2]=$(1.0);L=a+80|0;Dk(M,f[L>>2]|0);g=f[L>>2]|0;a:do if((g|0)>0){C=c+48|0;D=c+40|0;A=J+1|0;B=J+2|0;w=N+4|0;z=N+12|0;x=N+8|0;E=a+40|0;y=a+64|0;v=f[d>>2]|0;q=0;t=0;s=0;while(1){k=v+t|0;i=C;j=f[i>>2]|0;i=f[i+4>>2]|0;r=D;k=kn(f[r>>2]|0,f[r+4>>2]|0,k|0,((k|0)<0)<<31>>31|0)|0;i=Ho(k|0,I|0,j|0,i|0)|0;i=(f[f[c>>2]>>2]|0)+i|0;b[J>>0]=b[i>>0]|0;b[J+1>>0]=b[i+1>>0]|0;b[J+2>>0]=b[i+2>>0]|0;i=b[J>>0]|0;j=b[A>>0]|0;k=b[B>>0]|0;r=((i&255^318)+239^j&255)+239^k&255;p=(q|0)==0;b:do if(!p){g=q+-1|0;e=(g&q|0)==0;if(e)h=r&g;else h=(r>>>0)%(q>>>0)|0;d=f[(f[N>>2]|0)+(h<<2)>>2]|0;do if(d|0?(H=f[d>>2]|0,H|0):0){c:do if(e){d=H;while(1){if((f[d+4>>2]&g|0)!=(h|0)){h=22;break c}if(((b[d+8>>0]|0)==i<<24>>24?(b[d+9>>0]|0)==j<<24>>24:0)?(b[d+10>>0]|0)==k<<24>>24:0){h=21;break c}d=f[d>>2]|0;if(!d){h=22;break}}}else{d=H;while(1){if((((f[d+4>>2]|0)>>>0)%(q>>>0)|0|0)!=(h|0)){h=22;break c}if(((b[d+8>>0]|0)==i<<24>>24?(b[d+9>>0]|0)==j<<24>>24:0)?(b[d+10>>0]|0)==k<<24>>24:0){h=21;break c}d=f[d>>2]|0;if(!d){h=22;break}}}while(0);if((h|0)==21){h=0;f[(f[M>>2]|0)+(t<<2)>>2]=f[d+12>>2];e=s;break b}else if((h|0)==22)if(p){d=0;h=39;break b}else break}while(0);h=q+-1|0;g=(h&q|0)==0;if(g)d=h&r;else d=(r>>>0)%(q>>>0)|0;e=f[(f[N>>2]|0)+(d<<2)>>2]|0;if((e|0)!=0?(G=f[e>>2]|0,(G|0)!=0):0)if(g){e=G;while(1){if((f[e+4>>2]&h|0)!=(d|0)){h=39;break b}if(((b[e+8>>0]|0)==i<<24>>24?(b[e+9>>0]|0)==j<<24>>24:0)?(b[e+10>>0]|0)==k<<24>>24:0){h=52;break b}e=f[e>>2]|0;if(!e){h=39;break}}}else{e=G;while(1){if((((f[e+4>>2]|0)>>>0)%(q>>>0)|0|0)!=(d|0)){h=39;break b}if(((b[e+8>>0]|0)==i<<24>>24?(b[e+9>>0]|0)==j<<24>>24:0)?(b[e+10>>0]|0)==k<<24>>24:0){h=52;break b}e=f[e>>2]|0;if(!e){h=39;break}}}else h=39}else{d=0;h=39}while(0);if((h|0)==39){h=0;l=ln(16)|0;b[l+8>>0]=i;b[l+9>>0]=j;b[l+10>>0]=k;f[l+12>>2]=s;f[l+4>>2]=r;f[l>>2]=0;o=$(((f[z>>2]|0)+1|0)>>>0);P=$(q>>>0);m=$(n[F>>2]);do if(p|o>$(P*m)){d=(q>>>0<3|(q+-1&q|0)!=0)&1|q<<1;e=~~$(W($(o/m)))>>>0;Th(N,d>>>0>>0?e:d);d=f[w>>2]|0;e=d+-1|0;if(!(e&d)){g=d;d=e&r;break}else{g=d;d=(r>>>0)%(d>>>0)|0;break}}else g=q;while(0);e=(f[N>>2]|0)+(d<<2)|0;d=f[e>>2]|0;if(!d){f[l>>2]=f[x>>2];f[x>>2]=l;f[e>>2]=x;d=f[l>>2]|0;if(d|0){d=f[d+4>>2]|0;e=g+-1|0;if(!(e&g))d=d&e;else d=(d>>>0)%(g>>>0)|0;d=(f[N>>2]|0)+(d<<2)|0;h=50}}else{f[l>>2]=f[d>>2];h=50}if((h|0)==50)f[d>>2]=l;f[z>>2]=(f[z>>2]|0)+1;h=52}if((h|0)==52){r=E;e=f[r>>2]|0;r=kn(e|0,f[r+4>>2]|0,s|0,((s|0)<0)<<31>>31|0)|0;Mg((f[f[y>>2]>>2]|0)+r|0,J|0,e|0)|0;f[(f[M>>2]|0)+(t<<2)>>2]=s;e=s+1|0}d=t+1|0;g=f[L>>2]|0;if((d|0)>=(g|0)){l=e;break a}q=f[w>>2]|0;t=d;s=e}}else l=0;while(0);if((l|0)!=(g|0)){k=a+84|0;if(!(b[k>>0]|0)){g=f[a+68>>2]|0;d=(f[a+72>>2]|0)-g|0;if((d|0)>0){h=f[M>>2]|0;e=d>>2;d=0;do{a=g+(d<<2)|0;f[a>>2]=f[h+(f[a>>2]<<2)>>2];d=d+1|0}while((d|0)<(e|0))}}else{b[k>>0]=0;i=a+68|0;h=a+72|0;e=f[h>>2]|0;d=f[i>>2]|0;j=e-d>>2;if(g>>>0<=j>>>0){if(g>>>0>>0?(K=d+(g<<2)|0,(e|0)!=(K|0)):0)f[h>>2]=e+(~((e+-4-K|0)>>>2)<<2)}else{ch(i,g-j|0,1416);g=f[L>>2]|0}if((g|0)>0){h=f[M>>2]|0;if(b[k>>0]|0)Ga(18230,18249,91,18290);d=f[a+68>>2]|0;e=0;do{f[d+(e<<2)>>2]=f[h+(e<<2)>>2];e=e+1|0}while((e|0)<(g|0))}}f[L>>2]=l}g=f[M>>2]|0;if(g|0){e=M+4|0;d=f[e>>2]|0;if((d|0)!=(g|0))f[e>>2]=d+(~((d+-4-g|0)>>>2)<<2);ar(g)}d=f[N+8>>2]|0;if(d|0)do{M=d;d=f[d>>2]|0;ar(M)}while((d|0)!=0);d=f[N>>2]|0;f[N>>2]=0;if(!d){u=O;return l|0}ar(d);u=O;return l|0}function Hb(a,c,d){a=a|0;c=c|0;d=d|0;var e=0,g=0,h=0,i=0,j=0,k=0,l=0,m=La,o=La,p=0,q=0,r=0,s=0,t=0,v=0,w=0,x=0,y=0,z=0,A=0,B=0,C=0,D=0,E=0,F=0,G=0,H=0,J=0,K=0,L=0,M=0,N=0,O=0,P=La;O=u;u=u+48|0;N=O+24|0;J=O+12|0;M=O;F=N+16|0;f[N>>2]=0;f[N+4>>2]=0;f[N+8>>2]=0;f[N+12>>2]=0;n[F>>2]=$(1.0);L=a+80|0;Dk(M,f[L>>2]|0);g=f[L>>2]|0;a:do if((g|0)>0){C=c+48|0;D=c+40|0;A=J+4|0;B=J+8|0;w=N+4|0;z=N+12|0;x=N+8|0;E=a+40|0;y=a+64|0;v=f[d>>2]|0;r=0;t=0;s=0;while(1){g=v+t|0;e=C;d=f[e>>2]|0;e=f[e+4>>2]|0;q=D;g=kn(f[q>>2]|0,f[q+4>>2]|0,g|0,((g|0)<0)<<31>>31|0)|0;e=Ho(g|0,I|0,d|0,e|0)|0;d=J;e=(f[f[c>>2]>>2]|0)+e|0;g=d+12|0;do{b[d>>0]=b[e>>0]|0;d=d+1|0;e=e+1|0}while((d|0)<(g|0));i=f[J>>2]|0;j=f[A>>2]|0;k=f[B>>2]|0;q=((i^318)+239^j)+239^k;p=(r|0)==0;b:do if(!p){g=r+-1|0;e=(g&r|0)==0;if(e)h=q&g;else h=(q>>>0)%(r>>>0)|0;d=f[(f[N>>2]|0)+(h<<2)>>2]|0;do if(d|0?(H=f[d>>2]|0,H|0):0){c:do if(e){d=H;while(1){if((f[d+4>>2]&g|0)!=(h|0)){h=22;break c}if(((f[d+8>>2]|0)==(i|0)?(f[d+12>>2]|0)==(j|0):0)?(f[d+16>>2]|0)==(k|0):0){h=21;break c}d=f[d>>2]|0;if(!d){h=22;break}}}else{d=H;while(1){if((((f[d+4>>2]|0)>>>0)%(r>>>0)|0|0)!=(h|0)){h=22;break c}if(((f[d+8>>2]|0)==(i|0)?(f[d+12>>2]|0)==(j|0):0)?(f[d+16>>2]|0)==(k|0):0){h=21;break c}d=f[d>>2]|0;if(!d){h=22;break}}}while(0);if((h|0)==21){h=0;f[(f[M>>2]|0)+(t<<2)>>2]=f[d+20>>2];e=s;break b}else if((h|0)==22)if(p){d=0;h=39;break b}else break}while(0);h=r+-1|0;g=(h&r|0)==0;if(g)d=h&q;else d=(q>>>0)%(r>>>0)|0;e=f[(f[N>>2]|0)+(d<<2)>>2]|0;if((e|0)!=0?(G=f[e>>2]|0,(G|0)!=0):0)if(g){e=G;while(1){if((f[e+4>>2]&h|0)!=(d|0)){h=39;break b}if(((f[e+8>>2]|0)==(i|0)?(f[e+12>>2]|0)==(j|0):0)?(f[e+16>>2]|0)==(k|0):0){h=52;break b}e=f[e>>2]|0;if(!e){h=39;break}}}else{e=G;while(1){if((((f[e+4>>2]|0)>>>0)%(r>>>0)|0|0)!=(d|0)){h=39;break b}if(((f[e+8>>2]|0)==(i|0)?(f[e+12>>2]|0)==(j|0):0)?(f[e+16>>2]|0)==(k|0):0){h=52;break b}e=f[e>>2]|0;if(!e){h=39;break}}}else h=39}else{d=0;h=39}while(0);if((h|0)==39){h=0;l=ln(24)|0;f[l+8>>2]=i;f[l+12>>2]=j;f[l+16>>2]=k;f[l+20>>2]=s;f[l+4>>2]=q;f[l>>2]=0;o=$(((f[z>>2]|0)+1|0)>>>0);P=$(r>>>0);m=$(n[F>>2]);do if(p|o>$(P*m)){d=(r>>>0<3|(r+-1&r|0)!=0)&1|r<<1;e=~~$(W($(o/m)))>>>0;Qh(N,d>>>0>>0?e:d);d=f[w>>2]|0;e=d+-1|0;if(!(e&d)){g=d;d=e&q;break}else{g=d;d=(q>>>0)%(d>>>0)|0;break}}else g=r;while(0);e=(f[N>>2]|0)+(d<<2)|0;d=f[e>>2]|0;if(!d){f[l>>2]=f[x>>2];f[x>>2]=l;f[e>>2]=x;d=f[l>>2]|0;if(d|0){d=f[d+4>>2]|0;e=g+-1|0;if(!(e&g))d=d&e;else d=(d>>>0)%(g>>>0)|0;d=(f[N>>2]|0)+(d<<2)|0;h=50}}else{f[l>>2]=f[d>>2];h=50}if((h|0)==50)f[d>>2]=l;f[z>>2]=(f[z>>2]|0)+1;h=52}if((h|0)==52){r=E;e=f[r>>2]|0;r=kn(e|0,f[r+4>>2]|0,s|0,((s|0)<0)<<31>>31|0)|0;Mg((f[f[y>>2]>>2]|0)+r|0,J|0,e|0)|0;f[(f[M>>2]|0)+(t<<2)>>2]=s;e=s+1|0}d=t+1|0;g=f[L>>2]|0;if((d|0)>=(g|0)){l=e;break a}r=f[w>>2]|0;t=d;s=e}}else l=0;while(0);if((l|0)!=(g|0)){k=a+84|0;if(!(b[k>>0]|0)){g=f[a+68>>2]|0;d=(f[a+72>>2]|0)-g|0;if((d|0)>0){h=f[M>>2]|0;e=d>>2;d=0;do{a=g+(d<<2)|0;f[a>>2]=f[h+(f[a>>2]<<2)>>2];d=d+1|0}while((d|0)<(e|0))}}else{b[k>>0]=0;i=a+68|0;h=a+72|0;e=f[h>>2]|0;d=f[i>>2]|0;j=e-d>>2;if(g>>>0<=j>>>0){if(g>>>0>>0?(K=d+(g<<2)|0,(e|0)!=(K|0)):0)f[h>>2]=e+(~((e+-4-K|0)>>>2)<<2)}else{ch(i,g-j|0,1416);g=f[L>>2]|0}if((g|0)>0){h=f[M>>2]|0;if(b[k>>0]|0)Ga(18230,18249,91,18290);d=f[a+68>>2]|0;e=0;do{f[d+(e<<2)>>2]=f[h+(e<<2)>>2];e=e+1|0}while((e|0)<(g|0))}}f[L>>2]=l}g=f[M>>2]|0;if(g|0){e=M+4|0;d=f[e>>2]|0;if((d|0)!=(g|0))f[e>>2]=d+(~((d+-4-g|0)>>>2)<<2);ar(g)}d=f[N+8>>2]|0;if(d|0)do{M=d;d=f[d>>2]|0;ar(M)}while((d|0)!=0);d=f[N>>2]|0;f[N>>2]=0;if(!d){u=O;return l|0}ar(d);u=O;return l|0}function Ib(a,b){a=a|0;b=b|0;var c=0,d=0,e=0,g=0,h=0,i=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,v=0,w=0,x=0,y=0,z=0,A=0,B=0,C=0,D=0,E=0,F=0,G=0,H=0,I=0,J=0,K=0,L=0,M=0;M=u;u=u+48|0;L=M+24|0;J=M+12|0;z=M;if(!b){L=0;u=M;return L|0}I=a+12|0;A=a+4|0;k=f[A>>2]|0;c=f[a>>2]|0;i=k-c>>2;g=a+16|0;e=f[g>>2]|0;d=f[I>>2]|0;j=e-d>>2;l=c;if(i>>>0<=j>>>0)if(i>>>0>>0?(h=d+(i<<2)|0,(e|0)!=(h|0)):0){f[g>>2]=e+(~((e+-4-h|0)>>>2)<<2);g=c}else g=c;else{ch(I,i-j|0,1408);l=f[a>>2]|0;g=l;k=f[A>>2]|0}f[L>>2]=0;H=L+4|0;f[H>>2]=0;f[L+8>>2]=0;e=k-g|0;d=e>>2;c=L+8|0;do if(d)if(d>>>0>1073741823){M=Ia(4)|0;Eq(M);sa(M|0,1344,125)}else{i=ln(e)|0;h=i;f[L>>2]=h;f[H>>2]=h;f[c>>2]=i+(d<<2);break}else{i=0;h=0}while(0);if((e|0)>0){v=i;w=k;x=g;d=h;o=h;p=i;q=i;r=i;s=h;j=h;n=g;e=i;t=0;while(1){l=f[l+(t<<2)>>2]|0;c=f[H>>2]|0;if((l|0)<(c-d>>2|0)){g=v;h=w;i=x;m=e;c=n}else{e=l+1|0;f[J>>2]=0;g=c-d>>2;if(e>>>0<=g>>>0)if(e>>>0>>0?(y=d+(e<<2)|0,(c|0)!=(y|0)):0){f[H>>2]=c+(~((c+-4-y|0)>>>2)<<2);d=v;e=w;c=x}else{d=v;e=w;c=x}else{ch(L,e-g|0,J);d=f[L>>2]|0;e=f[A>>2]|0;c=f[a>>2]|0}j=d;g=d;h=e;i=c;o=j;p=d;q=d;r=d;s=j;m=d;k=e}G=m+(l<<2)|0;f[G>>2]=(f[G>>2]|0)+1;t=t+1|0;if((t|0)>=(k-c>>2|0)){l=s;i=q;break}else{v=g;w=h;x=i;l=c;d=m;n=c;e=m}}}else{c=g;j=h;l=h;r=i;o=h;p=i}c=k-c|0;h=c>>2;f[J>>2]=0;G=J+4|0;f[G>>2]=0;f[J+8>>2]=0;if(!h){d=0;e=0}else{if(h>>>0>536870911){Lp(J);M=Ia(4)|0;Eq(M);sa(M|0,1344,125)}g=ln(c<<1)|0;f[G>>2]=g;f[J>>2]=g;f[J+8>>2]=g+(h<<3);e=g;c=h;d=g;while(1){F=e;f[F>>2]=-1;f[F+4>>2]=-1;d=d+8|0;c=c+-1|0;if(!c)break;else e=d}f[G>>2]=g+(h<<3);d=g;e=g}F=f[H>>2]|0;g=F-j|0;c=g>>2;f[z>>2]=0;E=z+4|0;f[E>>2]=0;f[z+8>>2]=0;do if(c)if(c>>>0>1073741823){Lp(z);M=Ia(4)|0;Eq(M);sa(M|0,1344,125)}else{D=ln(g)|0;f[z>>2]=D;C=D+(c<<2)|0;f[z+8>>2]=C;ej(D|0,0,g|0)|0;f[E>>2]=C;B=D;break}else{B=0;C=0;D=0}while(0);if((F|0)!=(l|0)){h=F-r>>2;c=0;g=0;do{f[B+(c<<2)>>2]=g;g=(f[r+(c<<2)>>2]|0)+g|0;c=c+1|0}while(c>>>0>>0)}z=f[a>>2]|0;c=(f[A>>2]|0)-z|0;A=z;if((c|0)>0){z=a+40|0;y=c>>2;k=i;m=B;j=0;v=e;t=e;w=e;s=e;x=e;while(1){i=(j|0)<0;c=j+1|0;if(!i){c=((c|0)%3|0|0)==0?j+-2|0:c;if((c|0)<0)h=-1073741824;else h=f[A+(c<<2)>>2]|0;c=(j>>>0)%3|0;g=((c|0)==0?2:-1)+j|0;if((g|0)<0){r=-1073741824;q=h}else{r=f[A+(g<<2)>>2]|0;q=h}}else{c=(j>>>0)%3|0;r=-1073741824;q=-1073741824}if((j|0)==((i?-1073741824:j-c|0)|0)){if(i)c=-1073741824;else c=f[A+(j<<2)>>2]|0;if((q|0)==(r|0)|((c|0)==(q|0)|(c|0)==(r|0))){f[z>>2]=(f[z>>2]|0)+1;j=j+2|0;c=v;g=t;l=w;h=s;i=x}else K=60}else K=60;a:do if((K|0)==60){K=0;n=f[k+(r<<2)>>2]|0;b:do if((n|0)>0){c=0;i=f[m+(r<<2)>>2]|0;while(1){g=f[s+(i<<3)>>2]|0;if((g|0)<0){c=v;g=t;h=s;break b}if((g|0)==(q|0))break;c=c+1|0;if((c|0)<(n|0))i=i+1|0;else{c=v;g=t;h=s;break b}}l=f[s+(i<<3)+4>>2]|0;h=t;while(1){c=c+1|0;if((c|0)>=(n|0))break;g=i+1|0;f[h+(i<<3)>>2]=f[h+(g<<3)>>2];f[h+(i<<3)+4>>2]=f[h+(g<<3)+4>>2];if((f[v+(i<<3)>>2]|0)<0)break;else{i=g;h=v}}f[w+(i<<3)>>2]=-1;if((l|0)<0){c=w;g=w;h=w}else{c=f[I>>2]|0;f[c+(j<<2)>>2]=l;f[c+(l<<2)>>2]=j;c=w;g=w;l=w;h=w;i=x;break a}}else{c=v;g=t;h=s}while(0);i=f[p+(q<<2)>>2]|0;if((i|0)>0){h=0;c=f[B+(q<<2)>>2]|0;while(1){g=x+(c<<3)|0;if((f[g>>2]|0)<0)break;h=h+1|0;if((h|0)>=(i|0)){m=B;k=p;c=x;g=x;l=x;h=x;i=x;break a}else c=c+1|0}f[g>>2]=r;f[e+(c<<3)+4>>2]=j;m=B;k=p;c=e;g=e;l=e;h=e;i=e}else{k=p;l=w;i=x}}while(0);j=j+1|0;if((j|0)>=(y|0))break;else{v=c;t=g;w=l;s=h;x=i}}}f[b>>2]=F-o>>2;if(B){if((C|0)!=(B|0))f[E>>2]=C+(~((C+-4-B|0)>>>2)<<2);ar(D);d=f[J>>2]|0;e=d}if(e|0){c=f[G>>2]|0;if((c|0)!=(e|0))f[G>>2]=c+(~((c+-8-e|0)>>>3)<<3);ar(d)}c=f[L>>2]|0;if(c|0){d=f[H>>2]|0;if((d|0)!=(c|0))f[H>>2]=d+(~((d+-4-c|0)>>>2)<<2);ar(c)}L=1;u=M;return L|0}function Jb(a,c,d){a=a|0;c=c|0;d=d|0;var e=0,g=0,i=0,j=0,k=0,l=0,m=La,o=La,p=0,q=0,r=0,s=0,t=0,v=0,w=0,x=0,y=0,z=0,A=0,B=0,C=0,D=0,E=0,F=0,G=0,H=0,J=0,K=0,L=0,M=0,N=La;M=u;u=u+48|0;L=M+20|0;G=M;K=M+8|0;D=L+16|0;f[L>>2]=0;f[L+4>>2]=0;f[L+8>>2]=0;f[L+12>>2]=0;n[D>>2]=$(1.0);J=a+80|0;Dk(K,f[J>>2]|0);g=f[J>>2]|0;a:do if((g|0)>0){A=c+48|0;B=c+40|0;x=L+4|0;z=L+12|0;w=L+8|0;C=a+40|0;y=a+64|0;v=f[d>>2]|0;q=0;t=0;s=0;while(1){p=v+t|0;k=A;j=f[k>>2]|0;k=f[k+4>>2]|0;r=B;r=kn(p|0,((p|0)<0)<<31>>31|0,f[r>>2]|0,f[r+4>>2]|0)|0;k=Ho(r|0,I|0,j|0,k|0)|0;k=(f[f[c>>2]>>2]|0)+k|0;j=k;j=h[j>>0]|h[j+1>>0]<<8|h[j+2>>0]<<16|h[j+3>>0]<<24;k=k+4|0;k=h[k>>0]|h[k+1>>0]<<8|h[k+2>>0]<<16|h[k+3>>0]<<24;r=G;f[r>>2]=j;f[r+4>>2]=k;r=(j^318)+239^k;p=(q|0)==0;b:do if(!p){g=q+-1|0;e=(g&q|0)==0;if(e)i=r&g;else i=(r>>>0)%(q>>>0)|0;d=f[(f[L>>2]|0)+(i<<2)>>2]|0;do if(d|0?(F=f[d>>2]|0,F|0):0){c:do if(e){d=F;while(1){if((f[d+4>>2]&g|0)!=(i|0)){i=20;break c}if((f[d+8>>2]|0)==(j|0)?(f[d+12>>2]|0)==(k|0):0){i=19;break c}d=f[d>>2]|0;if(!d){i=20;break}}}else{d=F;while(1){if((((f[d+4>>2]|0)>>>0)%(q>>>0)|0|0)!=(i|0)){i=20;break c}if((f[d+8>>2]|0)==(j|0)?(f[d+12>>2]|0)==(k|0):0){i=19;break c}d=f[d>>2]|0;if(!d){i=20;break}}}while(0);if((i|0)==19){i=0;f[(f[K>>2]|0)+(t<<2)>>2]=f[d+16>>2];e=s;break b}else if((i|0)==20)if(p){d=0;i=35;break b}else break}while(0);i=q+-1|0;g=(i&q|0)==0;if(g)d=i&r;else d=(r>>>0)%(q>>>0)|0;e=f[(f[L>>2]|0)+(d<<2)>>2]|0;if((e|0)!=0?(E=f[e>>2]|0,(E|0)!=0):0)if(g){e=E;while(1){if((f[e+4>>2]&i|0)!=(d|0)){i=35;break b}if((f[e+8>>2]|0)==(j|0)?(f[e+12>>2]|0)==(k|0):0){i=48;break b}e=f[e>>2]|0;if(!e){i=35;break}}}else{e=E;while(1){if((((f[e+4>>2]|0)>>>0)%(q>>>0)|0|0)!=(d|0)){i=35;break b}if((f[e+8>>2]|0)==(j|0)?(f[e+12>>2]|0)==(k|0):0){i=48;break b}e=f[e>>2]|0;if(!e){i=35;break}}}else i=35}else{d=0;i=35}while(0);if((i|0)==35){i=0;l=ln(20)|0;g=l+8|0;f[g>>2]=j;f[g+4>>2]=k;f[l+16>>2]=s;f[l+4>>2]=r;f[l>>2]=0;o=$(((f[z>>2]|0)+1|0)>>>0);N=$(q>>>0);m=$(n[D>>2]);do if(p|o>$(N*m)){d=(q>>>0<3|(q+-1&q|0)!=0)&1|q<<1;e=~~$(W($(o/m)))>>>0;Rh(L,d>>>0>>0?e:d);d=f[x>>2]|0;e=d+-1|0;if(!(e&d)){g=d;d=e&r;break}else{g=d;d=(r>>>0)%(d>>>0)|0;break}}else g=q;while(0);e=(f[L>>2]|0)+(d<<2)|0;d=f[e>>2]|0;if(!d){f[l>>2]=f[w>>2];f[w>>2]=l;f[e>>2]=w;d=f[l>>2]|0;if(d|0){d=f[d+4>>2]|0;e=g+-1|0;if(!(e&g))d=d&e;else d=(d>>>0)%(g>>>0)|0;d=(f[L>>2]|0)+(d<<2)|0;i=46}}else{f[l>>2]=f[d>>2];i=46}if((i|0)==46)f[d>>2]=l;f[z>>2]=(f[z>>2]|0)+1;i=48}if((i|0)==48){r=C;e=f[r>>2]|0;r=kn(e|0,f[r+4>>2]|0,s|0,((s|0)<0)<<31>>31|0)|0;Mg((f[f[y>>2]>>2]|0)+r|0,G|0,e|0)|0;f[(f[K>>2]|0)+(t<<2)>>2]=s;e=s+1|0}d=t+1|0;g=f[J>>2]|0;if((d|0)>=(g|0)){p=e;break a}q=f[x>>2]|0;t=d;s=e}}else p=0;while(0);if((p|0)!=(g|0)){l=a+84|0;if(!(b[l>>0]|0)){g=f[a+68>>2]|0;d=(f[a+72>>2]|0)-g|0;if((d|0)>0){i=f[K>>2]|0;e=d>>2;d=0;do{a=g+(d<<2)|0;f[a>>2]=f[i+(f[a>>2]<<2)>>2];d=d+1|0}while((d|0)<(e|0))}}else{b[l>>0]=0;j=a+68|0;i=a+72|0;e=f[i>>2]|0;d=f[j>>2]|0;k=e-d>>2;if(g>>>0<=k>>>0){if(g>>>0>>0?(H=d+(g<<2)|0,(e|0)!=(H|0)):0)f[i>>2]=e+(~((e+-4-H|0)>>>2)<<2)}else{ch(j,g-k|0,1416);g=f[J>>2]|0}if((g|0)>0){i=f[K>>2]|0;if(b[l>>0]|0)Ga(18230,18249,91,18290);d=f[a+68>>2]|0;e=0;do{f[d+(e<<2)>>2]=f[i+(e<<2)>>2];e=e+1|0}while((e|0)<(g|0))}}f[J>>2]=p}g=f[K>>2]|0;if(g|0){e=K+4|0;d=f[e>>2]|0;if((d|0)!=(g|0))f[e>>2]=d+(~((d+-4-g|0)>>>2)<<2);ar(g)}d=f[L+8>>2]|0;if(d|0)do{K=d;d=f[d>>2]|0;ar(K)}while((d|0)!=0);d=f[L>>2]|0;f[L>>2]=0;if(!d){u=M;return p|0}ar(d);u=M;return p|0}function Kb(a,c,e){a=a|0;c=c|0;e=e|0;var g=0,i=0,j=0,k=0,l=0,m=0,o=La,p=La,q=0,r=0,s=0,t=0,v=0,w=0,x=0,y=0,z=0,A=0,B=0,C=0,D=0,E=0,F=0,G=0,H=0,J=0,K=0,L=0,M=0,N=0,O=0,P=La;O=u;u=u+48|0;N=O+16|0;J=O+12|0;M=O;F=N+16|0;f[N>>2]=0;f[N+4>>2]=0;f[N+8>>2]=0;f[N+12>>2]=0;n[F>>2]=$(1.0);L=a+80|0;Dk(M,f[L>>2]|0);i=f[L>>2]|0;a:do if((i|0)>0){C=c+48|0;D=c+40|0;z=N+4|0;B=N+12|0;y=N+8|0;E=a+40|0;A=a+64|0;x=f[e>>2]|0;s=0;w=0;v=0;while(1){l=x+w|0;m=C;k=f[m>>2]|0;m=f[m+4>>2]|0;t=D;t=kn(l|0,((l|0)<0)<<31>>31|0,f[t>>2]|0,f[t+4>>2]|0)|0;m=Ho(t|0,I|0,k|0,m|0)|0;m=(f[f[c>>2]>>2]|0)+m|0;m=h[m>>0]|h[m+1>>0]<<8|h[m+2>>0]<<16|h[m+3>>0]<<24;f[J>>2]=m;k=m&65535;t=m>>>16;l=t&65535;t=(m&65535^318)+239^t;r=(s|0)==0;b:do if(!r){i=s+-1|0;g=(i&s|0)==0;if(g)j=t&i;else j=(t>>>0)%(s>>>0)|0;e=f[(f[N>>2]|0)+(j<<2)>>2]|0;do if(e|0?(H=f[e>>2]|0,H|0):0){c:do if(g){e=H;while(1){if((f[e+4>>2]&i|0)!=(j|0)){q=20;break c}if((d[e+8>>1]|0)==k<<16>>16?(d[e+10>>1]|0)==l<<16>>16:0){q=19;break c}e=f[e>>2]|0;if(!e){q=20;break}}}else{e=H;while(1){if((((f[e+4>>2]|0)>>>0)%(s>>>0)|0|0)!=(j|0)){q=20;break c}if((d[e+8>>1]|0)==k<<16>>16?(d[e+10>>1]|0)==l<<16>>16:0){q=19;break c}e=f[e>>2]|0;if(!e){q=20;break}}}while(0);if((q|0)==19){q=0;f[(f[M>>2]|0)+(w<<2)>>2]=f[e+12>>2];g=v;break b}else if((q|0)==20)if(r){e=0;q=35;break b}else break}while(0);j=s+-1|0;i=(j&s|0)==0;if(i)e=j&t;else e=(t>>>0)%(s>>>0)|0;g=f[(f[N>>2]|0)+(e<<2)>>2]|0;if((g|0)!=0?(G=f[g>>2]|0,(G|0)!=0):0)if(i){g=G;while(1){if((f[g+4>>2]&j|0)!=(e|0)){q=35;break b}if((d[g+8>>1]|0)==k<<16>>16?(d[g+10>>1]|0)==l<<16>>16:0){q=48;break b}g=f[g>>2]|0;if(!g){q=35;break}}}else{g=G;while(1){if((((f[g+4>>2]|0)>>>0)%(s>>>0)|0|0)!=(e|0)){q=35;break b}if((d[g+8>>1]|0)==k<<16>>16?(d[g+10>>1]|0)==l<<16>>16:0){q=48;break b}g=f[g>>2]|0;if(!g){q=35;break}}}else q=35}else{e=0;q=35}while(0);if((q|0)==35){q=0;j=ln(16)|0;l=j+8|0;d[l>>1]=m;d[l+2>>1]=m>>>16;f[j+12>>2]=v;f[j+4>>2]=t;f[j>>2]=0;p=$(((f[B>>2]|0)+1|0)>>>0);P=$(s>>>0);o=$(n[F>>2]);do if(r|p>$(P*o)){e=(s>>>0<3|(s+-1&s|0)!=0)&1|s<<1;g=~~$(W($(p/o)))>>>0;Nh(N,e>>>0>>0?g:e);e=f[z>>2]|0;g=e+-1|0;if(!(g&e)){i=e;e=g&t;break}else{i=e;e=(t>>>0)%(e>>>0)|0;break}}else i=s;while(0);g=(f[N>>2]|0)+(e<<2)|0;e=f[g>>2]|0;if(!e){f[j>>2]=f[y>>2];f[y>>2]=j;f[g>>2]=y;e=f[j>>2]|0;if(e|0){e=f[e+4>>2]|0;g=i+-1|0;if(!(g&i))e=e&g;else e=(e>>>0)%(i>>>0)|0;e=(f[N>>2]|0)+(e<<2)|0;q=46}}else{f[j>>2]=f[e>>2];q=46}if((q|0)==46)f[e>>2]=j;f[B>>2]=(f[B>>2]|0)+1;q=48}if((q|0)==48){t=E;g=f[t>>2]|0;t=kn(g|0,f[t+4>>2]|0,v|0,((v|0)<0)<<31>>31|0)|0;Mg((f[f[A>>2]>>2]|0)+t|0,J|0,g|0)|0;f[(f[M>>2]|0)+(w<<2)>>2]=v;g=v+1|0}e=w+1|0;i=f[L>>2]|0;if((e|0)>=(i|0)){q=g;break a}s=f[z>>2]|0;w=e;v=g}}else q=0;while(0);if((q|0)!=(i|0)){m=a+84|0;if(!(b[m>>0]|0)){i=f[a+68>>2]|0;e=(f[a+72>>2]|0)-i|0;if((e|0)>0){j=f[M>>2]|0;g=e>>2;e=0;do{a=i+(e<<2)|0;f[a>>2]=f[j+(f[a>>2]<<2)>>2];e=e+1|0}while((e|0)<(g|0))}}else{b[m>>0]=0;k=a+68|0;j=a+72|0;g=f[j>>2]|0;e=f[k>>2]|0;l=g-e>>2;if(i>>>0<=l>>>0){if(i>>>0>>0?(K=e+(i<<2)|0,(g|0)!=(K|0)):0)f[j>>2]=g+(~((g+-4-K|0)>>>2)<<2)}else{ch(k,i-l|0,1416);i=f[L>>2]|0}if((i|0)>0){j=f[M>>2]|0;if(b[m>>0]|0)Ga(18230,18249,91,18290);e=f[a+68>>2]|0;g=0;do{f[e+(g<<2)>>2]=f[j+(g<<2)>>2];g=g+1|0}while((g|0)<(i|0))}}f[L>>2]=q}i=f[M>>2]|0;if(i|0){g=M+4|0;e=f[g>>2]|0;if((e|0)!=(i|0))f[g>>2]=e+(~((e+-4-i|0)>>>2)<<2);ar(i)}e=f[N+8>>2]|0;if(e|0)do{M=e;e=f[e>>2]|0;ar(M)}while((e|0)!=0);e=f[N>>2]|0;f[N>>2]=0;if(!e){u=O;return q|0}ar(e);u=O;return q|0}function Lb(a,c,e){a=a|0;c=c|0;e=e|0;var g=0,i=0,j=0,k=0,l=0,m=0,o=La,p=La,q=0,r=0,s=0,t=0,v=0,w=0,x=0,y=0,z=0,A=0,B=0,C=0,D=0,E=0,F=0,G=0,H=0,J=0,K=0,L=0,M=0,N=0,O=0,P=La;O=u;u=u+48|0;N=O+12|0;J=O+32|0;M=O;F=N+16|0;f[N>>2]=0;f[N+4>>2]=0;f[N+8>>2]=0;f[N+12>>2]=0;n[F>>2]=$(1.0);L=a+80|0;Dk(M,f[L>>2]|0);i=f[L>>2]|0;a:do if((i|0)>0){C=c+48|0;D=c+40|0;z=N+4|0;B=N+12|0;y=N+8|0;E=a+40|0;A=a+64|0;x=f[e>>2]|0;s=0;w=0;v=0;while(1){l=x+w|0;m=C;k=f[m>>2]|0;m=f[m+4>>2]|0;t=D;t=kn(l|0,((l|0)<0)<<31>>31|0,f[t>>2]|0,f[t+4>>2]|0)|0;m=Ho(t|0,I|0,k|0,m|0)|0;m=(f[f[c>>2]>>2]|0)+m|0;m=h[m>>0]|h[m+1>>0]<<8;d[J>>1]=m;k=m&255;t=(m&65535)>>>8;l=t&255;t=((m&255^318)+239<<16>>16^t)&65535;r=(s|0)==0;b:do if(!r){i=s+-1|0;g=(i&s|0)==0;if(g)j=t&i;else j=(t>>>0)%(s>>>0)|0;e=f[(f[N>>2]|0)+(j<<2)>>2]|0;do if(e|0?(H=f[e>>2]|0,H|0):0){c:do if(g){e=H;while(1){if((f[e+4>>2]&i|0)!=(j|0)){q=20;break c}if((b[e+8>>0]|0)==k<<24>>24?(b[e+9>>0]|0)==l<<24>>24:0){q=19;break c}e=f[e>>2]|0;if(!e){q=20;break}}}else{e=H;while(1){if((((f[e+4>>2]|0)>>>0)%(s>>>0)|0|0)!=(j|0)){q=20;break c}if((b[e+8>>0]|0)==k<<24>>24?(b[e+9>>0]|0)==l<<24>>24:0){q=19;break c}e=f[e>>2]|0;if(!e){q=20;break}}}while(0);if((q|0)==19){q=0;f[(f[M>>2]|0)+(w<<2)>>2]=f[e+12>>2];g=v;break b}else if((q|0)==20)if(r){e=0;q=35;break b}else break}while(0);j=s+-1|0;i=(j&s|0)==0;if(i)e=j&t;else e=(t>>>0)%(s>>>0)|0;g=f[(f[N>>2]|0)+(e<<2)>>2]|0;if((g|0)!=0?(G=f[g>>2]|0,(G|0)!=0):0)if(i){g=G;while(1){if((f[g+4>>2]&j|0)!=(e|0)){q=35;break b}if((b[g+8>>0]|0)==k<<24>>24?(b[g+9>>0]|0)==l<<24>>24:0){q=48;break b}g=f[g>>2]|0;if(!g){q=35;break}}}else{g=G;while(1){if((((f[g+4>>2]|0)>>>0)%(s>>>0)|0|0)!=(e|0)){q=35;break b}if((b[g+8>>0]|0)==k<<24>>24?(b[g+9>>0]|0)==l<<24>>24:0){q=48;break b}g=f[g>>2]|0;if(!g){q=35;break}}}else q=35}else{e=0;q=35}while(0);if((q|0)==35){q=0;j=ln(16)|0;l=j+8|0;b[l>>0]=m;b[l+1>>0]=m>>8;f[j+12>>2]=v;f[j+4>>2]=t;f[j>>2]=0;p=$(((f[B>>2]|0)+1|0)>>>0);P=$(s>>>0);o=$(n[F>>2]);do if(r|p>$(P*o)){e=(s>>>0<3|(s+-1&s|0)!=0)&1|s<<1;g=~~$(W($(p/o)))>>>0;Uh(N,e>>>0>>0?g:e);e=f[z>>2]|0;g=e+-1|0;if(!(g&e)){i=e;e=g&t;break}else{i=e;e=(t>>>0)%(e>>>0)|0;break}}else i=s;while(0);g=(f[N>>2]|0)+(e<<2)|0;e=f[g>>2]|0;if(!e){f[j>>2]=f[y>>2];f[y>>2]=j;f[g>>2]=y;e=f[j>>2]|0;if(e|0){e=f[e+4>>2]|0;g=i+-1|0;if(!(g&i))e=e&g;else e=(e>>>0)%(i>>>0)|0;e=(f[N>>2]|0)+(e<<2)|0;q=46}}else{f[j>>2]=f[e>>2];q=46}if((q|0)==46)f[e>>2]=j;f[B>>2]=(f[B>>2]|0)+1;q=48}if((q|0)==48){t=E;g=f[t>>2]|0;t=kn(g|0,f[t+4>>2]|0,v|0,((v|0)<0)<<31>>31|0)|0;Mg((f[f[A>>2]>>2]|0)+t|0,J|0,g|0)|0;f[(f[M>>2]|0)+(w<<2)>>2]=v;g=v+1|0}e=w+1|0;i=f[L>>2]|0;if((e|0)>=(i|0)){q=g;break a}s=f[z>>2]|0;w=e;v=g}}else q=0;while(0);if((q|0)!=(i|0)){m=a+84|0;if(!(b[m>>0]|0)){i=f[a+68>>2]|0;e=(f[a+72>>2]|0)-i|0;if((e|0)>0){j=f[M>>2]|0;g=e>>2;e=0;do{a=i+(e<<2)|0;f[a>>2]=f[j+(f[a>>2]<<2)>>2];e=e+1|0}while((e|0)<(g|0))}}else{b[m>>0]=0;k=a+68|0;j=a+72|0;g=f[j>>2]|0;e=f[k>>2]|0;l=g-e>>2;if(i>>>0<=l>>>0){if(i>>>0>>0?(K=e+(i<<2)|0,(g|0)!=(K|0)):0)f[j>>2]=g+(~((g+-4-K|0)>>>2)<<2)}else{ch(k,i-l|0,1416);i=f[L>>2]|0}if((i|0)>0){j=f[M>>2]|0;if(b[m>>0]|0)Ga(18230,18249,91,18290);e=f[a+68>>2]|0;g=0;do{f[e+(g<<2)>>2]=f[j+(g<<2)>>2];g=g+1|0}while((g|0)<(i|0))}}f[L>>2]=q}i=f[M>>2]|0;if(i|0){g=M+4|0;e=f[g>>2]|0;if((e|0)!=(i|0))f[g>>2]=e+(~((e+-4-i|0)>>>2)<<2);ar(i)}e=f[N+8>>2]|0;if(e|0)do{M=e;e=f[e>>2]|0;ar(M)}while((e|0)!=0);e=f[N>>2]|0;f[N>>2]=0;if(!e){u=O;return q|0}ar(e);u=O;return q|0}function Mb(a,c,d){a=a|0;c=c|0;d=d|0;var e=0,g=0,h=0,i=0,j=0,k=0;k=u;u=u+32|0;g=k+16|0;e=k+12|0;i=k+8|0;j=k+4|0;h=k;switch(f[c+28>>2]|0){case 9:{d=f[d>>2]|0;switch(b[c+24>>0]|0){case 1:{f[e>>2]=d;f[g>>2]=f[e>>2];d=_b(a,c,g)|0;break}case 2:{f[i>>2]=d;f[g>>2]=f[i>>2];d=Jb(a,c,g)|0;break}case 3:{f[j>>2]=d;f[g>>2]=f[j>>2];d=Hb(a,c,g)|0;break}case 4:{f[h>>2]=d;f[g>>2]=f[h>>2];d=Wb(a,c,g)|0;break}default:d=0}break}case 1:{d=f[d>>2]|0;switch(b[c+24>>0]|0){case 1:{f[e>>2]=d;f[g>>2]=f[e>>2];d=$b(a,c,g)|0;break}case 2:{f[i>>2]=d;f[g>>2]=f[i>>2];d=Lb(a,c,g)|0;break}case 3:{f[j>>2]=d;f[g>>2]=f[j>>2];d=Gb(a,c,g)|0;break}case 4:{f[h>>2]=d;f[g>>2]=f[h>>2];d=Ub(a,c,g)|0;break}default:d=0}break}case 11:case 2:{d=f[d>>2]|0;switch(b[c+24>>0]|0){case 1:{f[e>>2]=d;f[g>>2]=f[e>>2];d=$b(a,c,g)|0;break}case 2:{f[i>>2]=d;f[g>>2]=f[i>>2];d=Lb(a,c,g)|0;break}case 3:{f[j>>2]=d;f[g>>2]=f[j>>2];d=Gb(a,c,g)|0;break}case 4:{f[h>>2]=d;f[g>>2]=f[h>>2];d=Ub(a,c,g)|0;break}default:d=0}break}case 4:{d=f[d>>2]|0;switch(b[c+24>>0]|0){case 1:{f[e>>2]=d;f[g>>2]=f[e>>2];d=Zb(a,c,g)|0;break}case 2:{f[i>>2]=d;f[g>>2]=f[i>>2];d=Kb(a,c,g)|0;break}case 3:{f[j>>2]=d;f[g>>2]=f[j>>2];d=Eb(a,c,g)|0;break}case 4:{f[h>>2]=d;f[g>>2]=f[h>>2];d=Rb(a,c,g)|0;break}default:d=0}break}case 3:{d=f[d>>2]|0;switch(b[c+24>>0]|0){case 1:{f[e>>2]=d;f[g>>2]=f[e>>2];d=Zb(a,c,g)|0;break}case 2:{f[i>>2]=d;f[g>>2]=f[i>>2];d=Kb(a,c,g)|0;break}case 3:{f[j>>2]=d;f[g>>2]=f[j>>2];d=Eb(a,c,g)|0;break}case 4:{f[h>>2]=d;f[g>>2]=f[h>>2];d=Rb(a,c,g)|0;break}default:d=0}break}case 6:{d=f[d>>2]|0;switch(b[c+24>>0]|0){case 1:{f[e>>2]=d;f[g>>2]=f[e>>2];d=_b(a,c,g)|0;break}case 2:{f[i>>2]=d;f[g>>2]=f[i>>2];d=Jb(a,c,g)|0;break}case 3:{f[j>>2]=d;f[g>>2]=f[j>>2];d=Hb(a,c,g)|0;break}case 4:{f[h>>2]=d;f[g>>2]=f[h>>2];d=Wb(a,c,g)|0;break}default:d=0}break}case 5:{d=f[d>>2]|0;switch(b[c+24>>0]|0){case 1:{f[e>>2]=d;f[g>>2]=f[e>>2];d=_b(a,c,g)|0;break}case 2:{f[i>>2]=d;f[g>>2]=f[i>>2];d=Jb(a,c,g)|0;break}case 3:{f[j>>2]=d;f[g>>2]=f[j>>2];d=Hb(a,c,g)|0;break}case 4:{f[h>>2]=d;f[g>>2]=f[h>>2];d=Wb(a,c,g)|0;break}default:d=0}break}default:{a=-1;u=k;return a|0}}a=(d|0)==0?-1:d;u=k;return a|0}function Nb(a,b,c,d){a=a|0;b=b|0;c=c|0;d=d|0;var e=0,g=0,h=0,i=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,v=0,w=0,x=0,y=0,z=0,A=0,B=0,C=0,D=0,E=0,F=0,G=0,H=0,J=0;D=u;u=u+80|0;z=D+48|0;r=D+24|0;s=D;g=a+32|0;e=f[b>>2]|0;b=e+1|0;if((e|0)>=0){b=((b|0)%3|0|0)==0?e+-2|0:b;e=(((e>>>0)%3|0|0)==0?2:-1)+e|0;if((b|0)<0)b=-1073741824;else b=f[(f[f[g>>2]>>2]|0)+(b<<2)>>2]|0;if((e|0)<0){k=b;l=-1073741824}else{k=b;l=f[(f[f[g>>2]>>2]|0)+(e<<2)>>2]|0}}else{k=-1073741824;l=-1073741824}b=a+36|0;i=f[b>>2]|0;e=f[i+4>>2]|0;j=f[i>>2]|0;if(e-j>>2>>>0>k>>>0){b=j;g=e;h=i;e=j}else{Kp(i);h=f[b>>2]|0;b=f[h>>2]|0;g=f[h+4>>2]|0;e=f[i>>2]|0}t=f[e+(k<<2)>>2]|0;if(g-b>>2>>>0<=l>>>0){Kp(h);b=f[h>>2]|0}b=f[b+(l<<2)>>2]|0;m=(t|0)<(d|0);do if(m&(b|0)<(d|0)){p=t<<1;n=f[c+(p<<2)>>2]|0;o=((n|0)<0)<<31>>31;p=f[c+((p|1)<<2)>>2]|0;q=((p|0)<0)<<31>>31;l=b<<1;k=f[c+(l<<2)>>2]|0;l=f[c+((l|1)<<2)>>2]|0;if(!((k|0)!=(n|0)|(l|0)!=(p|0))){f[a+8>>2]=n;f[a+12>>2]=p;u=D;return}Tg(z,a,d);Tg(r,a,t);Tg(s,a,b);v=s;h=r;g=f[h>>2]|0;h=f[h+4>>2]|0;v=Xn(f[v>>2]|0,f[v+4>>2]|0,g|0,h|0)|0;w=I;x=s+8|0;j=r+8|0;i=f[j>>2]|0;j=f[j+4>>2]|0;x=Xn(f[x>>2]|0,f[x+4>>2]|0,i|0,j|0)|0;y=I;s=s+16|0;e=r+16|0;b=f[e>>2]|0;e=f[e+4>>2]|0;r=Xn(f[s>>2]|0,f[s+4>>2]|0,b|0,e|0)|0;s=I;B=kn(v|0,w|0,v|0,w|0)|0;E=I;A=kn(x|0,y|0,x|0,y|0)|0;E=Ho(A|0,I|0,B|0,E|0)|0;B=I;A=kn(r|0,s|0,r|0,s|0)|0;A=Ho(E|0,B|0,A|0,I|0)|0;B=I;if((A|0)==0&(B|0)==0)break;J=z;J=Xn(f[J>>2]|0,f[J+4>>2]|0,g|0,h|0)|0;H=I;G=z+8|0;G=Xn(f[G>>2]|0,f[G+4>>2]|0,i|0,j|0)|0;F=I;g=z+16|0;g=Xn(f[g>>2]|0,f[g+4>>2]|0,b|0,e|0)|0;h=I;E=kn(J|0,H|0,v|0,w|0)|0;b=I;j=kn(G|0,F|0,x|0,y|0)|0;b=Ho(j|0,I|0,E|0,b|0)|0;E=I;j=kn(g|0,h|0,r|0,s|0)|0;j=Ho(b|0,E|0,j|0,I|0)|0;E=I;b=Xn(k|0,((k|0)<0)<<31>>31|0,n|0,o|0)|0;k=I;t=Xn(l|0,((l|0)<0)<<31>>31|0,p|0,q|0)|0;d=I;n=kn(A|0,B|0,n|0,o|0)|0;m=I;p=kn(A|0,B|0,p|0,q|0)|0;o=I;c=kn(j|0,E|0,b|0,k|0)|0;z=I;i=kn(j|0,E|0,t|0,d|0)|0;l=I;m=Ho(c|0,z|0,n|0,m|0)|0;n=I;o=Ho(i|0,l|0,p|0,o|0)|0;p=I;l=kn(j|0,E|0,v|0,w|0)|0;i=I;z=kn(j|0,E|0,x|0,y|0)|0;c=I;E=kn(j|0,E|0,r|0,s|0)|0;j=I;i=pk(l|0,i|0,A|0,B|0)|0;l=I;c=pk(z|0,c|0,A|0,B|0)|0;z=I;j=pk(E|0,j|0,A|0,B|0)|0;E=I;l=Xn(J|0,H|0,i|0,l|0)|0;i=I;z=Xn(G|0,F|0,c|0,z|0)|0;c=I;E=Xn(g|0,h|0,j|0,E|0)|0;j=I;i=kn(l|0,i|0,l|0,i|0)|0;l=I;c=kn(z|0,c|0,z|0,c|0)|0;l=Ho(c|0,I|0,i|0,l|0)|0;i=I;j=kn(E|0,j|0,E|0,j|0)|0;j=Ho(l|0,i|0,j|0,I|0)|0;i=I;k=Xn(0,0,b|0,k|0)|0;l=I;i=kn(j|0,i|0,A|0,B|0)|0;j=I;b=j&2147483647;switch(i|0){case 0:{if(!b){e=0;b=0}else{e=1;b=0;g=i;h=j;C=19}break}case 1:{if(!b){e=1;b=0;C=20}else{e=1;b=0;g=i;h=j;C=19}break}default:{e=1;b=0;g=i;h=j;C=19}}if((C|0)==19)while(1){e=On(e|0,b|0,1)|0;b=I;J=g;g=Tn(g|0,h|0,2)|0;if(!(h>>>0>0|(h|0)==0&J>>>0>7)){C=20;break}else{h=I;C=19}}if((C|0)==20)while(1){J=Dp(i|0,j|0,e|0,b|0)|0;e=Ho(J|0,I|0,e|0,b|0)|0;e=Tn(e|0,I|0,1)|0;b=I;J=kn(e|0,b|0,e|0,b|0)|0;H=I;if(H>>>0>j>>>0|(H|0)==(j|0)&J>>>0>i>>>0)C=20;else break}E=kn(e|0,b|0,t|0,d|0)|0;F=I;C=kn(e|0,b|0,k|0,l|0)|0;G=I;H=a+20|0;c=(f[H>>2]|0)+-1|0;J=(1<<(c&31)&f[(f[a+16>>2]|0)+(c>>>5<<2)>>2]|0)!=0;f[H>>2]=c;H=Xn(0,0,E|0,F|0)|0;F=Ho(m|0,n|0,(J?E:H)|0,(J?F:I)|0)|0;H=I;E=Xn(0,0,C|0,G|0)|0;G=Ho(o|0,p|0,(J?C:E)|0,(J?G:I)|0)|0;J=I;H=pk(F|0,H|0,A|0,B|0)|0;J=pk(G|0,J|0,A|0,B|0)|0;f[a+8>>2]=H;f[a+12>>2]=J;u=D;return}while(0);do if(m)b=t<<1;else{if((d|0)>0){b=(d<<1)+-2|0;break}J=a+8|0;f[J>>2]=0;f[J+4>>2]=0;u=D;return}while(0);f[a+8>>2]=f[c+(b<<2)>>2];f[a+12>>2]=f[c+(b+1<<2)>>2];u=D;return}function Ob(a,b){a=a|0;b=b|0;var c=0,d=0,e=0,g=0,h=0,i=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,v=0,w=0,x=0;x=u;u=u+48|0;w=x;t=x+36|0;j=x+32|0;k=x+28|0;l=x+24|0;m=x+20|0;n=x+16|0;o=x+12|0;s=x+8|0;v=x+4|0;if((f[a+96>>2]|0)==(f[a+92>>2]|0)){u=x;return}d=a+56|0;c=f[d>>2]|0;if((c|0)==(f[a+60>>2]|0))Ii(a+52|0,b);else{f[c>>2]=f[b>>2];f[d>>2]=c+4}q=a+88|0;f[q>>2]=0;g=f[a>>2]|0;d=f[b>>2]|0;c=d+1|0;if((d|0)>=0){c=((c|0)%3|0|0)==0?d+-2|0:c;if((c|0)<0)e=-1073741824;else e=f[(f[g>>2]|0)+(c<<2)>>2]|0;c=(((d>>>0)%3|0|0)==0?2:-1)+d|0;if((c|0)<0)i=-1073741824;else i=f[(f[g>>2]|0)+(c<<2)>>2]|0}else{i=-1073741824;e=-1073741824}p=a+24|0;c=f[p>>2]|0;g=c+(e>>>5<<2)|0;h=1<<(e&31);d=f[g>>2]|0;if(!(d&h)){f[g>>2]=d|h;f[j>>2]=e;c=f[b>>2]|0;d=c+1|0;if((c|0)>=0)c=((d|0)%3|0|0)==0?c+-2|0:d;f[k>>2]=c;f[t>>2]=f[j>>2];f[w>>2]=f[k>>2];tg(a+36|0,t,w);c=f[p>>2]|0}d=c+(i>>>5<<2)|0;e=1<<(i&31);c=f[d>>2]|0;if(!(c&e)){f[d>>2]=c|e;d=a+36|0;f[l>>2]=i;c=f[b>>2]|0;do if((c|0)>=0)if(!((c>>>0)%3|0)){c=c+2|0;break}else{c=c+-1|0;break}while(0);f[m>>2]=c;f[t>>2]=f[l>>2];f[w>>2]=f[m>>2];tg(d,t,w)}c=f[b>>2]|0;if((c|0)<0)e=-1073741824;else e=f[(f[f[a>>2]>>2]|0)+(c<<2)>>2]|0;d=(f[p>>2]|0)+(e>>>5<<2)|0;g=1<<(e&31);c=f[d>>2]|0;if(!(g&c)){f[d>>2]=c|g;f[n>>2]=e;f[o>>2]=f[b>>2];f[t>>2]=f[n>>2];f[w>>2]=f[o>>2];tg(a+36|0,t,w)}c=f[q>>2]|0;a:do if((c|0)<3){m=a+12|0;n=a+36|0;l=a+92|0;while(1){while(1){e=a+52+(c*12|0)+4|0;d=f[e>>2]|0;if((f[a+52+(c*12|0)>>2]|0)!=(d|0))break;c=c+1|0;if((c|0)>=3)break a}o=d+-4|0;g=f[o>>2]|0;f[e>>2]=o;f[q>>2]=c;f[b>>2]=g;if((g|0)<=-1)break;o=(g>>>0)/3|0;d=f[m>>2]|0;do if(!(f[d+(o>>>5<<2)>>2]&1<<(o&31))){c=g;b:while(1){o=(c|0)/3|0;d=d+(o>>>5<<2)|0;f[d>>2]=1<<(o&31)|f[d>>2];d=f[b>>2]|0;if((d|0)<0)g=-1073741824;else g=f[(f[f[a>>2]>>2]|0)+(d<<2)>>2]|0;e=(f[p>>2]|0)+(g>>>5<<2)|0;h=1<<(g&31);c=f[e>>2]|0;if(!(h&c)){f[e>>2]=c|h;f[s>>2]=g;f[v>>2]=f[b>>2];f[t>>2]=f[s>>2];f[w>>2]=f[v>>2];tg(n,t,w);d=f[b>>2]|0}h=f[a>>2]|0;if((d|0)<0){r=69;break}c=d+1|0;c=((c|0)%3|0|0)==0?d+-2|0:c;if((c|0)<0)k=c;else k=f[(f[h+12>>2]|0)+(c<<2)>>2]|0;c=(((d>>>0)%3|0|0)==0?2:-1)+d|0;if((c|0)>=0)c=f[(f[h+12>>2]|0)+(c<<2)>>2]|0;j=(k|0)<0;d=j?-1:(k>>>0)/3|0;e=(c|0)<0;g=e?-1:(c>>>0)/3|0;if(j)i=1;else i=(f[(f[m>>2]|0)+(d>>>5<<2)>>2]&1<<(d&31)|0)!=0;do if(e)if(i){r=69;break b}else r=58;else{if(f[(f[m>>2]|0)+(g>>>5<<2)>>2]&1<<(g&31)|0)if(i){r=69;break b}else{r=58;break}d=f[(f[h>>2]|0)+(c<<2)>>2]|0;if(!(1<<(d&31)&f[(f[p>>2]|0)+(d>>>5<<2)>>2])){o=(f[l>>2]|0)+(d<<2)|0;g=f[o>>2]|0;f[o>>2]=g+1;g=(g|0)>0?1:2}else g=0;if(i?(g|0)<=(f[q>>2]|0):0)break;f[w>>2]=c;e=a+52+(g*12|0)+4|0;d=f[e>>2]|0;if((d|0)==(f[a+52+(g*12|0)+8>>2]|0))Ii(a+52+(g*12|0)|0,w);else{f[d>>2]=c;f[e>>2]=d+4}if((f[q>>2]|0)>(g|0))f[q>>2]=g;if(i){r=69;break b}else r=58}while(0);if((r|0)==58){r=0;if(j)c=-1073741824;else c=f[(f[f[a>>2]>>2]|0)+(k<<2)>>2]|0;if(!(1<<(c&31)&f[(f[p>>2]|0)+(c>>>5<<2)>>2])){o=(f[l>>2]|0)+(c<<2)|0;e=f[o>>2]|0;f[o>>2]=e+1;e=(e|0)>0?1:2}else e=0;if((e|0)>(f[q>>2]|0))break;else c=k}f[b>>2]=c;d=f[m>>2]|0}if((r|0)==69){r=0;c=f[q>>2]|0;break}f[w>>2]=k;d=a+52+(e*12|0)+4|0;c=f[d>>2]|0;if((c|0)==(f[a+52+(e*12|0)+8>>2]|0))Ii(a+52+(e*12|0)|0,w);else{f[c>>2]=k;f[d>>2]=c+4}c=f[q>>2]|0;if((c|0)>(e|0)){f[q>>2]=e;c=e}}while(0);if((c|0)>=3)break a}u=x;return}while(0);f[b>>2]=-1073741824;u=x;return}function Pb(a,b,c,d){a=a|0;b=b|0;c=c|0;d=d|0;var e=0,g=0,h=0,i=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,v=0,w=0,x=0,y=0,z=0,A=0,B=0,C=0,D=0,E=0,F=0,G=0,H=0,J=0;D=u;u=u+80|0;z=D+48|0;r=D+24|0;s=D;g=a+32|0;e=f[b>>2]|0;b=e+1|0;do if((e|0)>=0){b=((b|0)%3|0|0)==0?e+-2|0:b;if(!((e>>>0)%3|0)){e=e+2|0;break}else{e=e+-1|0;break}}else b=e;while(0);l=f[(f[g>>2]|0)+28>>2]|0;k=f[l+(b<<2)>>2]|0;l=f[l+(e<<2)>>2]|0;e=a+36|0;g=f[e>>2]|0;b=f[g+4>>2]|0;j=f[g>>2]|0;if(b-j>>2>>>0>k>>>0){h=b;i=g;e=j;b=j}else{Kp(g);b=f[e>>2]|0;h=f[b+4>>2]|0;i=b;e=f[g>>2]|0;b=f[b>>2]|0}y=f[e+(k<<2)>>2]|0;if(h-b>>2>>>0<=l>>>0){Kp(i);b=f[i>>2]|0}b=f[b+(l<<2)>>2]|0;m=(y|0)<(d|0);do if(m&(b|0)<(d|0)){p=y<<1;n=f[c+(p<<2)>>2]|0;o=((n|0)<0)<<31>>31;p=f[c+((p|1)<<2)>>2]|0;q=((p|0)<0)<<31>>31;l=b<<1;k=f[c+(l<<2)>>2]|0;l=f[c+((l|1)<<2)>>2]|0;if(!((k|0)!=(n|0)|(l|0)!=(p|0))){f[a+8>>2]=n;f[a+12>>2]=p;u=D;return}Tg(z,a,d);Tg(r,a,y);Tg(s,a,b);t=s;h=r;g=f[h>>2]|0;h=f[h+4>>2]|0;t=Xn(f[t>>2]|0,f[t+4>>2]|0,g|0,h|0)|0;v=I;w=s+8|0;j=r+8|0;i=f[j>>2]|0;j=f[j+4>>2]|0;w=Xn(f[w>>2]|0,f[w+4>>2]|0,i|0,j|0)|0;x=I;s=s+16|0;e=r+16|0;b=f[e>>2]|0;e=f[e+4>>2]|0;r=Xn(f[s>>2]|0,f[s+4>>2]|0,b|0,e|0)|0;s=I;B=kn(t|0,v|0,t|0,v|0)|0;E=I;A=kn(w|0,x|0,w|0,x|0)|0;E=Ho(A|0,I|0,B|0,E|0)|0;B=I;A=kn(r|0,s|0,r|0,s|0)|0;A=Ho(E|0,B|0,A|0,I|0)|0;B=I;if((A|0)==0&(B|0)==0)break;J=z;J=Xn(f[J>>2]|0,f[J+4>>2]|0,g|0,h|0)|0;H=I;G=z+8|0;G=Xn(f[G>>2]|0,f[G+4>>2]|0,i|0,j|0)|0;F=I;g=z+16|0;g=Xn(f[g>>2]|0,f[g+4>>2]|0,b|0,e|0)|0;h=I;E=kn(J|0,H|0,t|0,v|0)|0;b=I;j=kn(G|0,F|0,w|0,x|0)|0;b=Ho(j|0,I|0,E|0,b|0)|0;E=I;j=kn(g|0,h|0,r|0,s|0)|0;j=Ho(b|0,E|0,j|0,I|0)|0;E=I;b=Xn(k|0,((k|0)<0)<<31>>31|0,n|0,o|0)|0;k=I;y=Xn(l|0,((l|0)<0)<<31>>31|0,p|0,q|0)|0;d=I;n=kn(A|0,B|0,n|0,o|0)|0;m=I;p=kn(A|0,B|0,p|0,q|0)|0;o=I;c=kn(j|0,E|0,b|0,k|0)|0;z=I;i=kn(j|0,E|0,y|0,d|0)|0;l=I;m=Ho(c|0,z|0,n|0,m|0)|0;n=I;o=Ho(i|0,l|0,p|0,o|0)|0;p=I;l=kn(j|0,E|0,t|0,v|0)|0;i=I;z=kn(j|0,E|0,w|0,x|0)|0;c=I;E=kn(j|0,E|0,r|0,s|0)|0;j=I;i=pk(l|0,i|0,A|0,B|0)|0;l=I;c=pk(z|0,c|0,A|0,B|0)|0;z=I;j=pk(E|0,j|0,A|0,B|0)|0;E=I;l=Xn(J|0,H|0,i|0,l|0)|0;i=I;z=Xn(G|0,F|0,c|0,z|0)|0;c=I;E=Xn(g|0,h|0,j|0,E|0)|0;j=I;i=kn(l|0,i|0,l|0,i|0)|0;l=I;c=kn(z|0,c|0,z|0,c|0)|0;l=Ho(c|0,I|0,i|0,l|0)|0;i=I;j=kn(E|0,j|0,E|0,j|0)|0;j=Ho(l|0,i|0,j|0,I|0)|0;i=I;k=Xn(0,0,b|0,k|0)|0;l=I;i=kn(j|0,i|0,A|0,B|0)|0;j=I;b=j&2147483647;switch(i|0){case 0:{if(!b){e=0;b=0}else{e=1;b=0;g=i;h=j;C=18}break}case 1:{if(!b){e=1;b=0;C=19}else{e=1;b=0;g=i;h=j;C=18}break}default:{e=1;b=0;g=i;h=j;C=18}}if((C|0)==18)while(1){e=On(e|0,b|0,1)|0;b=I;J=g;g=Tn(g|0,h|0,2)|0;if(!(h>>>0>0|(h|0)==0&J>>>0>7)){C=19;break}else{h=I;C=18}}if((C|0)==19)while(1){J=Dp(i|0,j|0,e|0,b|0)|0;e=Ho(J|0,I|0,e|0,b|0)|0;e=Tn(e|0,I|0,1)|0;b=I;J=kn(e|0,b|0,e|0,b|0)|0;H=I;if(H>>>0>j>>>0|(H|0)==(j|0)&J>>>0>i>>>0)C=19;else break}E=kn(e|0,b|0,y|0,d|0)|0;F=I;C=kn(e|0,b|0,k|0,l|0)|0;G=I;H=a+20|0;c=(f[H>>2]|0)+-1|0;J=(1<<(c&31)&f[(f[a+16>>2]|0)+(c>>>5<<2)>>2]|0)!=0;f[H>>2]=c;H=Xn(0,0,E|0,F|0)|0;F=Ho(m|0,n|0,(J?E:H)|0,(J?F:I)|0)|0;H=I;E=Xn(0,0,C|0,G|0)|0;G=Ho(o|0,p|0,(J?C:E)|0,(J?G:I)|0)|0;J=I;H=pk(F|0,H|0,A|0,B|0)|0;J=pk(G|0,J|0,A|0,B|0)|0;f[a+8>>2]=H;f[a+12>>2]=J;u=D;return}while(0);do if(m)b=y<<1;else{if((d|0)>0){b=(d<<1)+-2|0;break}J=a+8|0;f[J>>2]=0;f[J+4>>2]=0;u=D;return}while(0);f[a+8>>2]=f[c+(b<<2)>>2];f[a+12>>2]=f[c+(b+1<<2)>>2];u=D;return}function Qb(a,c,d){a=a|0;c=c|0;d=d|0;var e=0,g=0,i=La,j=0,k=La,l=0,m=0,o=0,p=0,q=0,r=0,s=0,t=0,v=0,w=0,x=0,y=0,z=0,A=0,B=La;A=u;u=u+48|0;y=A+24|0;z=A;e=sd(a,c)|0;if(e|0){f[z>>2]=e;f[y>>2]=f[z>>2];Vf(a,y)|0}ml(z,c);c=z+12|0;f[c>>2]=0;x=z+16|0;f[x>>2]=0;f[z+20>>2]=0;j=d+4|0;g=(f[j>>2]|0)-(f[d>>2]|0)|0;if(g){if((g|0)<0)Lp(c);e=ln(g)|0;f[x>>2]=e;f[c>>2]=e;f[z+20>>2]=e+g;g=f[d>>2]|0;c=(f[j>>2]|0)-g|0;if((c|0)>0){Mg(e|0,g|0,c|0)|0;f[x>>2]=e+c}}else e=0;s=b[z+11>>0]|0;v=s<<24>>24<0;t=v?f[z>>2]|0:z;s=v?f[z+4>>2]|0:s&255;if(s>>>0>3){g=t;c=s;j=s;while(1){v=X(h[g>>0]|h[g+1>>0]<<8|h[g+2>>0]<<16|h[g+3>>0]<<24,1540483477)|0;c=(X(v>>>24^v,1540483477)|0)^(X(c,1540483477)|0);j=j+-4|0;if(j>>>0<=3)break;else g=g+4|0}v=s+-4|0;g=v&-4;j=t+(g+4)|0;g=v-g|0}else{j=t;c=s;g=s}switch(g|0){case 3:{c=h[j+2>>0]<<16^c;w=13;break}case 2:{w=13;break}case 1:{w=14;break}default:{}}if((w|0)==13){c=h[j+1>>0]<<8^c;w=14}if((w|0)==14)c=X(h[j>>0]^c,1540483477)|0;v=X(c>>>13^c,1540483477)|0;v=v>>>15^v;q=a+4|0;j=f[q>>2]|0;r=(j|0)==0;a:do if(!r){p=j+-1|0;d=(p&j|0)==0;if(d)c=v&p;else c=(v>>>0)%(j>>>0)|0;g=f[(f[a>>2]|0)+(c<<2)>>2]|0;if((g|0)!=0?(o=f[g>>2]|0,(o|0)!=0):0){g=(s|0)==0;if(d){if(g){g=o;while(1){if((f[g+4>>2]&p|0)!=(c|0)){w=48;break a}t=b[g+8+11>>0]|0;if(!((t<<24>>24<0?f[g+12>>2]|0:t&255)|0))break a;g=f[g>>2]|0;if(!g){w=48;break a}}}while(1){if((f[o+4>>2]&p|0)!=(c|0)){w=48;break a}g=o+8|0;l=b[g+11>>0]|0;m=l<<24>>24<0;l=l&255;do if(((m?f[o+12>>2]|0:l)|0)==(s|0)){d=f[g>>2]|0;if(m)if(!(rl(d,t,s)|0))break a;else break;if((d&255)<<24>>24==(b[t>>0]|0)){d=t;do{l=l+-1|0;g=g+1|0;if(!l)break a;d=d+1|0}while((b[g>>0]|0)==(b[d>>0]|0))}}while(0);o=f[o>>2]|0;if(!o){w=48;break}}}else{if(g){g=o;while(1){if((((f[g+4>>2]|0)>>>0)%(j>>>0)|0|0)!=(c|0)){w=48;break a}t=b[g+8+11>>0]|0;if(!((t<<24>>24<0?f[g+12>>2]|0:t&255)|0))break a;g=f[g>>2]|0;if(!g){w=48;break a}}}while(1){if((((f[o+4>>2]|0)>>>0)%(j>>>0)|0|0)!=(c|0)){w=48;break a}g=o+8|0;l=b[g+11>>0]|0;m=l<<24>>24<0;l=l&255;do if(((m?f[o+12>>2]|0:l)|0)==(s|0)){d=f[g>>2]|0;if(m)if(!(rl(d,t,s)|0))break a;else break;if((d&255)<<24>>24==(b[t>>0]|0)){d=t;do{l=l+-1|0;g=g+1|0;if(!l)break a;d=d+1|0}while((b[g>>0]|0)==(b[d>>0]|0))}}while(0);o=f[o>>2]|0;if(!o){w=48;break}}}}else w=48}else{c=0;w=48}while(0);if((w|0)==48){Xh(y,a,v,z);d=a+12|0;k=$(((f[d>>2]|0)+1|0)>>>0);B=$(j>>>0);i=$(n[a+16>>2]);do if(r|k>$(B*i)){e=(j>>>0<3|(j+-1&j|0)!=0)&1|j<<1;c=~~$(W($(k/i)))>>>0;Zh(a,e>>>0>>0?c:e);e=f[q>>2]|0;c=e+-1|0;if(!(c&e)){j=e;c=c&v;break}else{j=e;c=(v>>>0)%(e>>>0)|0;break}}while(0);e=f[(f[a>>2]|0)+(c<<2)>>2]|0;if(!e){g=a+8|0;f[f[y>>2]>>2]=f[g>>2];f[g>>2]=f[y>>2];f[(f[a>>2]|0)+(c<<2)>>2]=g;g=f[y>>2]|0;e=f[g>>2]|0;if(!e)e=y;else{e=f[e+4>>2]|0;c=j+-1|0;if(!(c&j))e=e&c;else e=(e>>>0)%(j>>>0)|0;f[(f[a>>2]|0)+(e<<2)>>2]=g;e=y}}else{f[f[y>>2]>>2]=f[e>>2];f[e>>2]=f[y>>2];e=y}f[d>>2]=(f[d>>2]|0)+1;f[e>>2]=0;e=f[z+12>>2]|0}if(!e){Lo(z);u=A;return}if((f[x>>2]|0)!=(e|0))f[x>>2]=e;ar(e);Lo(z);u=A;return}function Rb(a,c,e){a=a|0;c=c|0;e=e|0;var g=0,i=0,j=0,k=0,l=0,m=0,o=La,p=La,q=0,r=0,s=0,t=0,v=0,w=0,x=0,y=0,z=0,A=0,B=0,C=0,D=0,E=0,F=0,G=0,H=0,J=0,K=0,L=0,M=0,N=0,O=0,P=0,Q=0,R=0,S=0,T=0,U=La;T=u;u=u+48|0;S=T+28|0;N=T+8|0;O=T;R=T+16|0;L=S+16|0;f[S>>2]=0;f[S+4>>2]=0;f[S+8>>2]=0;f[S+12>>2]=0;n[L>>2]=$(1.0);Q=a+80|0;Dk(R,f[Q>>2]|0);i=f[Q>>2]|0;if((i|0)>0){B=f[e>>2]|0;G=c+48|0;H=c+40|0;E=S+4|0;F=S+12|0;D=S+8|0;J=a+40|0;C=a+64|0;K=0;z=0;while(1){w=B+K|0;y=G;x=f[y>>2]|0;y=f[y+4>>2]|0;e=H;e=kn(w|0,((w|0)<0)<<31>>31|0,f[e>>2]|0,f[e+4>>2]|0)|0;y=Ho(e|0,I|0,x|0,y|0)|0;y=(f[f[c>>2]>>2]|0)+y|0;x=y;x=h[x>>0]|h[x+1>>0]<<8|h[x+2>>0]<<16|h[x+3>>0]<<24;y=y+4|0;y=h[y>>0]|h[y+1>>0]<<8|h[y+2>>0]<<16|h[y+3>>0]<<24;e=N;f[e>>2]=x;f[e+4>>2]=y;e=O;f[e>>2]=x;f[e+4>>2]=y;e=dg(S,O)|0;if(!e){t=O;s=f[t>>2]|0;t=f[t+4>>2]|0;l=s&65535;y=Tn(s|0,t|0,16)|0;m=y&65535;q=t&65535;v=Tn(s|0,t|0,48)|0;w=I;r=v&65535;y=((((l^318)&65535)+239^y&65535)+239^t&65535)+239^v;i=f[E>>2]|0;x=(i|0)==0;a:do if(!x){k=i+-1|0;j=(k&i|0)==0;if(j)e=y&k;else e=(y>>>0)%(i>>>0)|0;g=f[(f[S>>2]|0)+(e<<2)>>2]|0;if((g|0)!=0?(M=f[g>>2]|0,(M|0)!=0):0)if(j){g=M;while(1){if((f[g+4>>2]&k|0)!=(e|0)){A=25;break a}if((((d[g+8>>1]|0)==l<<16>>16?(d[g+10>>1]|0)==m<<16>>16:0)?(d[g+12>>1]|0)==q<<16>>16:0)?(d[g+14>>1]|0)==r<<16>>16:0)break a;g=f[g>>2]|0;if(!g){A=25;break}}}else{g=M;while(1){if((((f[g+4>>2]|0)>>>0)%(i>>>0)|0|0)!=(e|0)){A=25;break a}if((((d[g+8>>1]|0)==l<<16>>16?(d[g+10>>1]|0)==m<<16>>16:0)?(d[g+12>>1]|0)==q<<16>>16:0)?(d[g+14>>1]|0)==r<<16>>16:0)break a;g=f[g>>2]|0;if(!g){A=25;break}}}else A=25}else{e=0;A=25}while(0);if((A|0)==25){A=0;j=ln(20)|0;v=On(v|0,w|0,48)|0;s=s|v;v=t&65535|I;w=j+8|0;t=w;d[t>>1]=s;d[t+2>>1]=s>>>16;w=w+4|0;d[w>>1]=v;d[w+2>>1]=v>>>16;f[j+16>>2]=z;f[j+4>>2]=y;f[j>>2]=0;p=$(((f[F>>2]|0)+1|0)>>>0);U=$(i>>>0);o=$(n[L>>2]);do if(x|p>$(U*o)){e=(i>>>0<3|(i+-1&i|0)!=0)&1|i<<1;g=~~$(W($(p/o)))>>>0;Lh(S,e>>>0>>0?g:e);e=f[E>>2]|0;g=e+-1|0;if(!(g&e)){i=e;e=g&y;break}else{i=e;e=(y>>>0)%(e>>>0)|0;break}}while(0);g=(f[S>>2]|0)+(e<<2)|0;e=f[g>>2]|0;if(!e){f[j>>2]=f[D>>2];f[D>>2]=j;f[g>>2]=D;e=f[j>>2]|0;if(e|0){e=f[e+4>>2]|0;g=i+-1|0;if(!(g&i))e=e&g;else e=(e>>>0)%(i>>>0)|0;e=(f[S>>2]|0)+(e<<2)|0;A=36}}else{f[j>>2]=f[e>>2];A=36}if((A|0)==36){A=0;f[e>>2]=j}f[F>>2]=(f[F>>2]|0)+1}y=J;e=f[y>>2]|0;y=kn(e|0,f[y+4>>2]|0,z|0,((z|0)<0)<<31>>31|0)|0;Mg((f[f[C>>2]>>2]|0)+y|0,N|0,e|0)|0;f[(f[R>>2]|0)+(K<<2)>>2]=z;e=z+1|0}else{f[(f[R>>2]|0)+(K<<2)>>2]=f[e+16>>2];e=z}K=K+1|0;i=f[Q>>2]|0;if((K|0)>=(i|0)){q=e;break}else z=e}}else q=0;if((q|0)!=(i|0)){m=a+84|0;if(!(b[m>>0]|0)){i=f[a+68>>2]|0;e=(f[a+72>>2]|0)-i|0;if((e|0)>0){j=f[R>>2]|0;g=e>>2;e=0;do{a=i+(e<<2)|0;f[a>>2]=f[j+(f[a>>2]<<2)>>2];e=e+1|0}while((e|0)<(g|0))}}else{b[m>>0]=0;k=a+68|0;j=a+72|0;g=f[j>>2]|0;e=f[k>>2]|0;l=g-e>>2;if(i>>>0<=l>>>0){if(i>>>0>>0?(P=e+(i<<2)|0,(g|0)!=(P|0)):0)f[j>>2]=g+(~((g+-4-P|0)>>>2)<<2)}else{ch(k,i-l|0,1416);i=f[Q>>2]|0}if((i|0)>0){j=f[R>>2]|0;if(b[m>>0]|0)Ga(18230,18249,91,18290);e=f[a+68>>2]|0;g=0;do{f[e+(g<<2)>>2]=f[j+(g<<2)>>2];g=g+1|0}while((g|0)<(i|0))}}f[Q>>2]=q}i=f[R>>2]|0;if(i|0){g=R+4|0;e=f[g>>2]|0;if((e|0)!=(i|0))f[g>>2]=e+(~((e+-4-i|0)>>>2)<<2);ar(i)}e=f[S+8>>2]|0;if(e|0)do{R=e;e=f[e>>2]|0;ar(R)}while((e|0)!=0);e=f[S>>2]|0;f[S>>2]=0;if(!e){u=T;return q|0}ar(e);u=T;return q|0}function Sb(a,c){a=a|0;c=c|0;var d=0,e=0,g=0,i=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,v=0,w=0,x=0,y=0,z=0,A=0,B=0,C=0,D=0;C=u;u=u+32|0;w=C+20|0;B=C+8|0;A=C+4|0;z=C;x=a+4|0;do if((h[(f[x>>2]|0)+36>>0]<<8&65535)<512){t=c+8|0;v=f[t>>2]|0;t=f[t+4>>2]|0;i=c+16|0;e=i;d=f[e>>2]|0;e=Ho(d|0,f[e+4>>2]|0,4,0)|0;g=I;if((t|0)<(g|0)|(t|0)==(g|0)&v>>>0>>0){B=-1;u=C;return B|0}else{d=(f[c>>2]|0)+d|0;d=h[d>>0]|h[d+1>>0]<<8|h[d+2>>0]<<16|h[d+3>>0]<<24;f[w>>2]=d;v=i;f[v>>2]=e;f[v+4>>2]=g;break}}else if(yj(w,c)|0){d=f[w>>2]|0;break}else{B=-1;u=C;return B|0}while(0);a:do if(d|0){v=f[x>>2]|0;if(((h[v+36>>0]<<8|h[v+37>>0])&65535)<=257){q=c+8|0;r=c+16|0;t=B+4|0;s=B+8|0;o=a+40|0;p=a+44|0;v=a+36|0;n=0;while(1){j=q;i=f[j>>2]|0;j=f[j+4>>2]|0;l=r;k=f[l>>2]|0;l=f[l+4>>2]|0;e=Ho(k|0,l|0,4,0)|0;g=I;if((j|0)<(g|0)|(j|0)==(g|0)&i>>>0>>0)break;m=f[c>>2]|0;D=m+k|0;f[B>>2]=h[D>>0]|h[D+1>>0]<<8|h[D+2>>0]<<16|h[D+3>>0]<<24;D=r;f[D>>2]=e;f[D+4>>2]=g;g=Ho(k|0,l|0,8,0)|0;D=I;if((j|0)<(D|0)|(j|0)==(D|0)&i>>>0>>0)break;e=m+e|0;f[t>>2]=h[e>>0]|h[e+1>>0]<<8|h[e+2>>0]<<16|h[e+3>>0]<<24;e=Ho(k|0,l|0,8,0)|0;D=I;g=r;f[g>>2]=e;f[g+4>>2]=D;if(!((j|0)>(D|0)|(j|0)==(D|0)&i>>>0>e>>>0))break;e=b[m+e>>0]|0;m=Ho(k|0,l|0,9,0)|0;D=r;f[D>>2]=m;f[D+4>>2]=I;b[s>>0]=e&3|b[s>>0]&-4;e=f[o>>2]|0;if((e|0)==(f[p>>2]|0)){pi(v,B);d=f[w>>2]|0}else{f[e>>2]=f[B>>2];f[e+4>>2]=f[B+4>>2];f[e+8>>2]=f[B+8>>2];f[o>>2]=(f[o>>2]|0)+12}n=n+1|0;if(n>>>0>=d>>>0)break a}D=-1;u=C;return D|0}k=B+4|0;e=a+40|0;g=a+44|0;l=a+36|0;i=0;j=0;do{yj(A,c)|0;f[k>>2]=(f[A>>2]|0)+j;yj(A,c)|0;j=f[k>>2]|0;f[B>>2]=j-(f[A>>2]|0);d=f[e>>2]|0;if((d|0)==(f[g>>2]|0))pi(l,B);else{f[d>>2]=f[B>>2];f[d+4>>2]=f[B+4>>2];f[d+8>>2]=f[B+8>>2];f[e>>2]=(f[e>>2]|0)+12}i=i+1|0}while(i>>>0<(f[w>>2]|0)>>>0);Ug(c,0,0)|0;k=f[w>>2]|0;if(k|0){o=c+36|0;l=a+36|0;p=c+32|0;m=c+24|0;n=c+28|0;d=0;q=0;do{if(b[o>>0]|0){d=f[p>>2]|0;g=f[m>>2]|0;j=f[n>>2]|0;e=g+(d>>>3)|0;if(e>>>0>>0){i=(h[e>>0]|0)>>>(d&7)&1;d=d+1|0;f[p>>2]=d}else i=0;e=g+(d>>>3)|0;if(e>>>0>>0){D=(h[e>>0]|0)>>>(d&7)&1;f[p>>2]=d+1;d=D}else d=0;d=d<<1|i}D=(f[l>>2]|0)+(q*12|0)+8|0;b[D>>0]=d&3|b[D>>0]&-4;q=q+1|0}while(q>>>0>>0)}hm(c)}while(0);if((h[(f[x>>2]|0)+36>>0]<<8&65535)<512){w=c+8|0;D=f[w>>2]|0;w=f[w+4>>2]|0;i=c+16|0;e=i;d=f[e>>2]|0;e=Ho(d|0,f[e+4>>2]|0,4,0)|0;g=I;if((w|0)<(g|0)|(w|0)==(g|0)&D>>>0>>0)d=-1;else{d=(f[c>>2]|0)+d|0;d=h[d>>0]|h[d+1>>0]<<8|h[d+2>>0]<<16|h[d+3>>0]<<24;f[B>>2]=d;y=i;f[y>>2]=e;f[y+4>>2]=g;y=35}}else if(yj(B,c)|0){d=f[B>>2]|0;y=35}else d=-1;b:do if((y|0)==35){c:do if(d|0){D=f[x>>2]|0;if(((h[D+36>>0]<<8|h[D+37>>0])&65535)>257){j=a+52|0;k=a+56|0;e=a+48|0;g=0;i=0;while(1){f[A>>2]=0;yj(z,c)|0;i=(f[z>>2]|0)+i|0;f[A>>2]=i;d=f[j>>2]|0;if((d|0)==(f[k>>2]|0))Ii(e,A);else{f[d>>2]=i;f[j>>2]=d+4}g=g+1|0;if(g>>>0>=(f[B>>2]|0)>>>0)break c}}n=c+8|0;o=c+16|0;l=a+52|0;m=a+56|0;j=a+48|0;k=0;while(1){f[A>>2]=0;a=n;D=f[a>>2]|0;a=f[a+4>>2]|0;e=o;d=f[e>>2]|0;e=Ho(d|0,f[e+4>>2]|0,4,0)|0;g=I;if((a|0)<(g|0)|(a|0)==(g|0)&D>>>0>>0)break;i=(f[c>>2]|0)+d|0;i=h[i>>0]|h[i+1>>0]<<8|h[i+2>>0]<<16|h[i+3>>0]<<24;f[A>>2]=i;d=o;f[d>>2]=e;f[d+4>>2]=g;d=f[l>>2]|0;if((d|0)==(f[m>>2]|0))Ii(j,A);else{f[d>>2]=i;f[l>>2]=d+4}k=k+1|0;if(k>>>0>=(f[B>>2]|0)>>>0)break c}d=-1;break b}while(0);d=f[c+16>>2]|0}while(0);D=d;u=C;return D|0}function Tb(a,c){a=a|0;c=c|0;var d=0,e=0,g=0,i=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,v=0,w=0,x=0,y=0,z=0,A=0;A=u;u=u+176|0;s=A+136|0;w=A+32|0;v=A;t=A+104|0;x=A+100|0;y=a+4|0;q=f[y>>2]|0;d=f[q+32>>2]|0;o=d+8|0;n=f[o>>2]|0;o=f[o+4>>2]|0;p=d+16|0;l=p;k=f[l>>2]|0;l=f[l+4>>2]|0;if(!((o|0)>(l|0)|(o|0)==(l|0)&n>>>0>k>>>0)){c=0;u=A;return c|0}j=f[d>>2]|0;r=b[j+k>>0]|0;d=Ho(k|0,l|0,1,0)|0;m=I;i=p;f[i>>2]=d;f[i+4>>2]=m;if(!((o|0)>(m|0)|(o|0)==(m|0)&n>>>0>d>>>0)){c=0;u=A;return c|0}m=b[j+d>>0]|0;d=Ho(k|0,l|0,2,0)|0;e=I;i=p;f[i>>2]=d;f[i+4>>2]=e;do if(r<<24>>24>-1){i=r<<24>>24;g=f[a+228>>2]|0;if(i>>>0<(((f[a+232>>2]|0)-g|0)/116|0)>>>0){f[g+(i*116|0)>>2]=c;break}else{c=0;u=A;return c|0}}while(0);do if((((h[q+36>>0]|0)<<8|(h[q+37>>0]|0))&65535)>257)if((o|0)>(e|0)|(o|0)==(e|0)&n>>>0>d>>>0){e=b[j+d>>0]|0;o=Ho(k|0,l|0,3,0)|0;f[p>>2]=o;f[p+4>>2]=I;e=e&255;break}else{c=0;u=A;return c|0}else e=0;while(0);n=f[q+44>>2]|0;if(!(m<<24>>24)){if(r<<24>>24<0)d=a+200|0;else{d=r<<24>>24;w=f[a+228>>2]|0;b[w+(d*116|0)+72>>0]=0;d=w+(d*116|0)+76|0}switch((e&255)<<24>>24){case 0:{Dd(s,a,d);d=f[s>>2]|0;break}case 1:{$e(s,a,d);d=f[s>>2]|0;break}default:{c=0;u=A;return c|0}}if(!d){c=0;u=A;return c|0}}else{if(e|0){c=0;u=A;return c|0}j=r<<24>>24;if(r<<24>>24<0){c=0;u=A;return c|0}d=ln(88)|0;i=f[a+228>>2]|0;k=i+(j*116|0)+76|0;f[d+4>>2]=0;f[d>>2]=4636;l=d+12|0;f[l>>2]=4660;m=d+64|0;f[m>>2]=0;f[d+68>>2]=0;f[d+72>>2]=0;e=d+16|0;g=e+44|0;do{f[e>>2]=0;e=e+4|0}while((e|0)<(g|0));f[d+76>>2]=n;f[d+80>>2]=k;f[d+84>>2]=0;p=w+4|0;f[p>>2]=4660;o=w+56|0;f[o>>2]=0;q=w+60|0;f[q>>2]=0;f[w+64>>2]=0;e=w+8|0;g=e+44|0;do{f[e>>2]=0;e=e+4|0}while((e|0)<(g|0));g=i+(j*116|0)+4|0;f[v>>2]=4660;e=v+4|0;a=e+4|0;f[a>>2]=0;f[a+4>>2]=0;f[a+8>>2]=0;f[a+12>>2]=0;f[a+16>>2]=0;f[a+20>>2]=0;f[e>>2]=g;i=f[i+(j*116|0)+68>>2]|0;i=((f[i+4>>2]|0)-(f[i>>2]|0)>>2>>>0)/3|0;b[s>>0]=0;Yg(v+8|0,i,s);Pa[f[(f[v>>2]|0)+8>>2]&127](v);Hf(t,v);Hf(s,t);f[w>>2]=f[s+4>>2];i=w+4|0;mg(i,s)|0;f[s>>2]=4660;e=f[s+20>>2]|0;if(e|0)ar(e);e=f[s+8>>2]|0;if(e|0)ar(e);f[w+36>>2]=g;f[w+40>>2]=k;f[w+44>>2]=n;f[w+48>>2]=d;f[t>>2]=4660;e=f[t+20>>2]|0;if(e|0)ar(e);e=f[t+8>>2]|0;if(e|0)ar(e);f[d+8>>2]=f[w>>2];mg(l,i)|0;e=d+44|0;t=w+36|0;f[e>>2]=f[t>>2];f[e+4>>2]=f[t+4>>2];f[e+8>>2]=f[t+8>>2];f[e+12>>2]=f[t+12>>2];b[e+16>>0]=b[t+16>>0]|0;Mf(m,f[o>>2]|0,f[q>>2]|0);f[v>>2]=4660;e=f[v+20>>2]|0;if(e|0)ar(e);e=f[v+8>>2]|0;if(e|0)ar(e);e=f[o>>2]|0;if(e|0){g=f[q>>2]|0;if((g|0)!=(e|0))f[q>>2]=g+(~((g+-4-e|0)>>>2)<<2);ar(e)}f[p>>2]=4660;e=f[w+24>>2]|0;if(e|0)ar(e);e=f[w+12>>2]|0;if(e|0)ar(e)}l=ln(64)|0;f[x>>2]=d;ql(l,x);d=f[x>>2]|0;f[x>>2]=0;if(d|0)Pa[f[(f[d>>2]|0)+4>>2]&127](d);j=f[y>>2]|0;k=j+8|0;j=j+12|0;d=f[j>>2]|0;e=f[k>>2]|0;i=d-e>>2;do if((i|0)<=(c|0)){g=c+1|0;if(g>>>0>i>>>0){ig(k,g-i|0);break}if(g>>>0>>0?(z=e+(g<<2)|0,(d|0)!=(z|0)):0)do{y=d+-4|0;f[j>>2]=y;d=f[y>>2]|0;f[y>>2]=0;if(d|0)Pa[f[(f[d>>2]|0)+4>>2]&127](d);d=f[j>>2]|0}while((d|0)!=(z|0))}while(0);c=(f[k>>2]|0)+(c<<2)|0;d=f[c>>2]|0;f[c>>2]=l;if(!d){c=1;u=A;return c|0}Pa[f[(f[d>>2]|0)+4>>2]&127](d);c=1;u=A;return c|0}function Ub(a,c,d){a=a|0;c=c|0;d=d|0;var e=0,g=0,i=0,j=0,k=0,l=0,m=La,o=La,p=0,q=0,r=0,s=0,t=0,v=0,w=0,x=0,y=0,z=0,A=0,B=0,C=0,D=0,E=0,F=0,G=0,H=0,J=0,K=0,L=0,M=0,N=0,O=0,P=0,Q=0,R=0,S=0,T=La;S=u;u=u+48|0;R=S+20|0;M=S+16|0;N=S+12|0;Q=S;K=R+16|0;f[R>>2]=0;f[R+4>>2]=0;f[R+8>>2]=0;f[R+12>>2]=0;n[K>>2]=$(1.0);P=a+80|0;Dk(Q,f[P>>2]|0);g=f[P>>2]|0;if((g|0)>0){A=f[d>>2]|0;F=c+48|0;G=c+40|0;D=R+4|0;E=R+12|0;C=R+8|0;H=a+40|0;B=a+64|0;J=0;y=0;while(1){v=A+J|0;d=F;x=f[d>>2]|0;d=f[d+4>>2]|0;w=G;w=kn(v|0,((v|0)<0)<<31>>31|0,f[w>>2]|0,f[w+4>>2]|0)|0;d=Ho(w|0,I|0,x|0,d|0)|0;d=(f[f[c>>2]>>2]|0)+d|0;d=h[d>>0]|h[d+1>>0]<<8|h[d+2>>0]<<16|h[d+3>>0]<<24;f[M>>2]=d;f[N>>2]=d;d=fg(R,N)|0;if(!d){t=f[N>>2]|0;k=t&255;r=t>>>8;l=r&255;s=t>>>16;p=s&255;v=t>>>24;q=v&255;t=t&255;r=r&255;s=s&255;x=(((t^318)+239^r)+239^s)+239^v;g=f[D>>2]|0;w=(g|0)==0;a:do if(!w){j=g+-1|0;i=(j&g|0)==0;if(i)d=x&j;else d=(x>>>0)%(g>>>0)|0;e=f[(f[R>>2]|0)+(d<<2)>>2]|0;if((e|0)!=0?(L=f[e>>2]|0,(L|0)!=0):0)if(i){e=L;while(1){if((f[e+4>>2]&j|0)!=(d|0)){z=25;break a}if((((b[e+8>>0]|0)==k<<24>>24?(b[e+9>>0]|0)==l<<24>>24:0)?(b[e+10>>0]|0)==p<<24>>24:0)?(b[e+11>>0]|0)==q<<24>>24:0)break a;e=f[e>>2]|0;if(!e){z=25;break}}}else{e=L;while(1){if((((f[e+4>>2]|0)>>>0)%(g>>>0)|0|0)!=(d|0)){z=25;break a}if((((b[e+8>>0]|0)==k<<24>>24?(b[e+9>>0]|0)==l<<24>>24:0)?(b[e+10>>0]|0)==p<<24>>24:0)?(b[e+11>>0]|0)==q<<24>>24:0)break a;e=f[e>>2]|0;if(!e){z=25;break}}}else z=25}else{d=0;z=25}while(0);if((z|0)==25){z=0;i=ln(16)|0;q=i+8|0;v=v<<24|t|s<<16|r<<8;b[q>>0]=v;b[q+1>>0]=v>>8;b[q+2>>0]=v>>16;b[q+3>>0]=v>>24;f[i+12>>2]=y;f[i+4>>2]=x;f[i>>2]=0;o=$(((f[E>>2]|0)+1|0)>>>0);T=$(g>>>0);m=$(n[K>>2]);do if(w|o>$(T*m)){d=(g>>>0<3|(g+-1&g|0)!=0)&1|g<<1;e=~~$(W($(o/m)))>>>0;Sh(R,d>>>0>>0?e:d);d=f[D>>2]|0;e=d+-1|0;if(!(e&d)){g=d;d=e&x;break}else{g=d;d=(x>>>0)%(d>>>0)|0;break}}while(0);e=(f[R>>2]|0)+(d<<2)|0;d=f[e>>2]|0;if(!d){f[i>>2]=f[C>>2];f[C>>2]=i;f[e>>2]=C;d=f[i>>2]|0;if(d|0){d=f[d+4>>2]|0;e=g+-1|0;if(!(e&g))d=d&e;else d=(d>>>0)%(g>>>0)|0;d=(f[R>>2]|0)+(d<<2)|0;z=36}}else{f[i>>2]=f[d>>2];z=36}if((z|0)==36){z=0;f[d>>2]=i}f[E>>2]=(f[E>>2]|0)+1}x=H;d=f[x>>2]|0;x=kn(d|0,f[x+4>>2]|0,y|0,((y|0)<0)<<31>>31|0)|0;Mg((f[f[B>>2]>>2]|0)+x|0,M|0,d|0)|0;f[(f[Q>>2]|0)+(J<<2)>>2]=y;d=y+1|0}else{f[(f[Q>>2]|0)+(J<<2)>>2]=f[d+12>>2];d=y}J=J+1|0;g=f[P>>2]|0;if((J|0)>=(g|0)){p=d;break}else y=d}}else p=0;if((p|0)!=(g|0)){l=a+84|0;if(!(b[l>>0]|0)){g=f[a+68>>2]|0;d=(f[a+72>>2]|0)-g|0;if((d|0)>0){i=f[Q>>2]|0;e=d>>2;d=0;do{a=g+(d<<2)|0;f[a>>2]=f[i+(f[a>>2]<<2)>>2];d=d+1|0}while((d|0)<(e|0))}}else{b[l>>0]=0;j=a+68|0;i=a+72|0;e=f[i>>2]|0;d=f[j>>2]|0;k=e-d>>2;if(g>>>0<=k>>>0){if(g>>>0>>0?(O=d+(g<<2)|0,(e|0)!=(O|0)):0)f[i>>2]=e+(~((e+-4-O|0)>>>2)<<2)}else{ch(j,g-k|0,1416);g=f[P>>2]|0}if((g|0)>0){i=f[Q>>2]|0;if(b[l>>0]|0)Ga(18230,18249,91,18290);d=f[a+68>>2]|0;e=0;do{f[d+(e<<2)>>2]=f[i+(e<<2)>>2];e=e+1|0}while((e|0)<(g|0))}}f[P>>2]=p}g=f[Q>>2]|0;if(g|0){e=Q+4|0;d=f[e>>2]|0;if((d|0)!=(g|0))f[e>>2]=d+(~((d+-4-g|0)>>>2)<<2);ar(g)}d=f[R+8>>2]|0;if(d|0)do{Q=d;d=f[d>>2]|0;ar(Q)}while((d|0)!=0);d=f[R>>2]|0;f[R>>2]=0;if(!d){u=S;return p|0}ar(d);u=S;return p|0}function Vb(a,c){a=a|0;c=c|0;var d=0,e=0,g=0,i=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,v=0,w=0,x=0,y=0,z=0,A=0,B=0,C=0,D=0,E=0;D=u;u=u+736|0;C=D+720|0;s=D+16|0;B=D+72|0;r=D+64|0;v=D+56|0;w=D+48|0;x=D+40|0;y=D+32|0;z=D+24|0;A=D+8|0;t=D;e=Wa[f[(f[a>>2]|0)+20>>2]&127](a,0)|0;a=(Sa[f[(f[a>>2]|0)+28>>2]&255](a)|0)+4|0;a=f[a>>2]|0;if((e|0)<=-1)Ga(17188,17204,71,17242);d=f[a+8>>2]|0;if(((f[a+12>>2]|0)-d>>2|0)<=(e|0))Ga(17252,17204,72,17242);a=f[d+(e<<2)>>2]|0;b[a+84>>0]=1;d=f[a+68>>2]|0;g=a+72|0;e=f[g>>2]|0;if((e|0)!=(d|0))f[g>>2]=e+(~((e+-4-d|0)>>>2)<<2);m=c+8|0;l=f[m>>2]|0;m=f[m+4>>2]|0;o=c+16|0;k=o;j=f[k>>2]|0;k=f[k+4>>2]|0;if(!((m|0)>(k|0)|(m|0)==(k|0)&l>>>0>j>>>0)){C=0;u=D;return C|0}n=f[c>>2]|0;g=b[n+j>>0]|0;d=Ho(j|0,k|0,1,0)|0;e=I;E=o;f[E>>2]=d;f[E+4>>2]=e;switch(g<<24>>24){case 0:{if(((m|0)>(e|0)|(m|0)==(e|0)&l>>>0>d>>>0?(i=Ho(j|0,k|0,2,0)|0,p=o,f[p>>2]=i,f[p+4>>2]=I,p=Ho(j|0,k|0,6,0)|0,q=I,!((m|0)<(q|0)|(m|0)==(q|0)&l>>>0

>>0)):0)?(E=n+i|0,E=h[E>>0]|h[E+1>>0]<<8|h[E+2>>0]<<16|h[E+3>>0]<<24,A=o,f[A>>2]=p,f[A+4>>2]=q,oj(a,E)|0,Do(B),f[r>>2]=a,f[r+4>>2]=0,f[C>>2]=f[r>>2],f[C+4>>2]=f[r+4>>2],De(B,c,C)|0):0){E=1;u=D;return E|0}E=0;u=D;return E|0}case 1:{a:do if((m|0)>(e|0)|(m|0)==(e|0)&l>>>0>d>>>0){i=b[n+d>>0]|0;g=Ho(j|0,k|0,2,0)|0;E=o;f[E>>2]=g;f[E+4>>2]=I;if((i&255)>6){f[s>>2]=i&255;In(17306,s)|0;break}d=Ho(j|0,k|0,6,0)|0;e=I;if(!((m|0)<(e|0)|(m|0)==(e|0)&l>>>0>>0)){E=n+g|0;E=h[E>>0]|h[E+1>>0]<<8|h[E+2>>0]<<16|h[E+3>>0]<<24;s=o;f[s>>2]=d;f[s+4>>2]=e;oj(a,E)|0;switch(i<<24>>24){case 0:{$h(B,3);f[v>>2]=a;f[v+4>>2]=0;f[C>>2]=f[v>>2];f[C+4>>2]=f[v+4>>2];E=Ve(B,c,C)|0;Uf(B);if(E)a=1;else break a;u=D;return a|0}case 1:{$h(B,3);f[w>>2]=a;f[w+4>>2]=0;f[C>>2]=f[w>>2];f[C+4>>2]=f[w+4>>2];E=Ue(B,c,C)|0;Uf(B);if(E)a=1;else break a;u=D;return a|0}case 2:{ai(B,3);f[x>>2]=a;f[x+4>>2]=0;f[C>>2]=f[x>>2];f[C+4>>2]=f[x+4>>2];E=Xe(B,c,C)|0;Xf(B);if(E)a=1;else break a;u=D;return a|0}case 3:{ai(B,3);f[y>>2]=a;f[y+4>>2]=0;f[C>>2]=f[y>>2];f[C+4>>2]=f[y+4>>2];E=We(B,c,C)|0;Xf(B);if(E)a=1;else break a;u=D;return a|0}case 4:{Kh(B,3);f[z>>2]=a;f[z+4>>2]=0;f[C>>2]=f[z>>2];f[C+4>>2]=f[z+4>>2];E=we(B,c,C)|0;Jf(B);if(E)a=1;else break a;u=D;return a|0}case 5:{Kh(B,3);f[A>>2]=a;f[A+4>>2]=0;f[C>>2]=f[A>>2];f[C+4>>2]=f[A+4>>2];E=ve(B,c,C)|0;Jf(B);if(E)a=1;else break a;u=D;return a|0}case 6:{Kh(B,3);f[t>>2]=a;f[t+4>>2]=0;f[C>>2]=f[t>>2];f[C+4>>2]=f[t+4>>2];E=ue(B,c,C)|0;Jf(B);if(E)a=1;else break a;u=D;return a|0}default:break a}}}while(0);E=0;u=D;return E|0}default:{E=0;u=D;return E|0}}return 0}function Wb(a,c,d){a=a|0;c=c|0;d=d|0;var e=0,g=0,h=0,i=0,j=0,k=0,l=0,m=La,o=La,p=0,q=0,r=0,s=0,t=0,v=0,w=0,x=0,y=0,z=0,A=0,B=0,C=0,D=0,E=0,F=0,G=0,H=0,J=0,K=0,L=0,M=0,N=0,O=0,P=0,Q=0,R=La;Q=u;u=u+80|0;P=Q+48|0;K=Q+32|0;L=Q+16|0;O=Q;H=P+16|0;f[P>>2]=0;f[P+4>>2]=0;f[P+8>>2]=0;f[P+12>>2]=0;n[H>>2]=$(1.0);N=a+80|0;Dk(O,f[N>>2]|0);g=f[N>>2]|0;if((g|0)>0){v=f[d>>2]|0;A=c+48|0;B=c+40|0;E=L+4|0;F=L+8|0;G=L+12|0;y=P+4|0;z=P+12|0;x=P+8|0;C=a+40|0;w=a+64|0;D=0;s=0;while(1){g=v+D|0;d=A;e=f[d>>2]|0;d=f[d+4>>2]|0;h=B;g=kn(f[h>>2]|0,f[h+4>>2]|0,g|0,((g|0)<0)<<31>>31|0)|0;d=Ho(g|0,I|0,e|0,d|0)|0;d=(f[f[c>>2]>>2]|0)+d|0;e=K;g=d;h=e+16|0;do{b[e>>0]=b[g>>0]|0;e=e+1|0;g=g+1|0}while((e|0)<(h|0));rm(L|0,d|0,16)|0;d=jg(P,L)|0;if(!d){i=f[L>>2]|0;j=f[E>>2]|0;k=f[F>>2]|0;l=f[G>>2]|0;r=(((i^318)+239^j)+239^k)+239^l;p=f[y>>2]|0;q=(p|0)==0;a:do if(!q){h=p+-1|0;g=(h&p|0)==0;if(g)d=r&h;else d=(r>>>0)%(p>>>0)|0;e=f[(f[P>>2]|0)+(d<<2)>>2]|0;if((e|0)!=0?(J=f[e>>2]|0,(J|0)!=0):0)if(g){e=J;while(1){if((f[e+4>>2]&h|0)!=(d|0)){t=25;break a}if((((f[e+8>>2]|0)==(i|0)?(f[e+12>>2]|0)==(j|0):0)?(f[e+16>>2]|0)==(k|0):0)?(f[e+20>>2]|0)==(l|0):0)break a;e=f[e>>2]|0;if(!e){t=25;break}}}else{e=J;while(1){if((((f[e+4>>2]|0)>>>0)%(p>>>0)|0|0)!=(d|0)){t=25;break a}if((((f[e+8>>2]|0)==(i|0)?(f[e+12>>2]|0)==(j|0):0)?(f[e+16>>2]|0)==(k|0):0)?(f[e+20>>2]|0)==(l|0):0)break a;e=f[e>>2]|0;if(!e){t=25;break}}}else t=25}else{d=0;t=25}while(0);if((t|0)==25){t=0;h=ln(28)|0;f[h+8>>2]=i;f[h+12>>2]=j;f[h+16>>2]=k;f[h+20>>2]=l;f[h+24>>2]=s;f[h+4>>2]=r;f[h>>2]=0;o=$(((f[z>>2]|0)+1|0)>>>0);R=$(p>>>0);m=$(n[H>>2]);do if(q|o>$(R*m)){d=(p>>>0<3|(p+-1&p|0)!=0)&1|p<<1;e=~~$(W($(o/m)))>>>0;Ph(P,d>>>0>>0?e:d);d=f[y>>2]|0;e=d+-1|0;if(!(e&d)){g=d;d=e&r;break}else{g=d;d=(r>>>0)%(d>>>0)|0;break}}else g=p;while(0);e=(f[P>>2]|0)+(d<<2)|0;d=f[e>>2]|0;if(!d){f[h>>2]=f[x>>2];f[x>>2]=h;f[e>>2]=x;d=f[h>>2]|0;if(d|0){d=f[d+4>>2]|0;e=g+-1|0;if(!(e&g))d=d&e;else d=(d>>>0)%(g>>>0)|0;d=(f[P>>2]|0)+(d<<2)|0;t=36}}else{f[h>>2]=f[d>>2];t=36}if((t|0)==36){t=0;f[d>>2]=h}f[z>>2]=(f[z>>2]|0)+1}r=C;d=f[r>>2]|0;r=kn(d|0,f[r+4>>2]|0,s|0,((s|0)<0)<<31>>31|0)|0;Mg((f[f[w>>2]>>2]|0)+r|0,K|0,d|0)|0;f[(f[O>>2]|0)+(D<<2)>>2]=s;d=s+1|0}else{f[(f[O>>2]|0)+(D<<2)>>2]=f[d+24>>2];d=s}D=D+1|0;g=f[N>>2]|0;if((D|0)>=(g|0)){l=d;break}else s=d}}else l=0;if((l|0)!=(g|0)){k=a+84|0;if(!(b[k>>0]|0)){g=f[a+68>>2]|0;d=(f[a+72>>2]|0)-g|0;if((d|0)>0){h=f[O>>2]|0;e=d>>2;d=0;do{a=g+(d<<2)|0;f[a>>2]=f[h+(f[a>>2]<<2)>>2];d=d+1|0}while((d|0)<(e|0))}}else{b[k>>0]=0;i=a+68|0;h=a+72|0;e=f[h>>2]|0;d=f[i>>2]|0;j=e-d>>2;if(g>>>0<=j>>>0){if(g>>>0>>0?(M=d+(g<<2)|0,(e|0)!=(M|0)):0)f[h>>2]=e+(~((e+-4-M|0)>>>2)<<2)}else{ch(i,g-j|0,1416);g=f[N>>2]|0}if((g|0)>0){h=f[O>>2]|0;if(b[k>>0]|0)Ga(18230,18249,91,18290);d=f[a+68>>2]|0;e=0;do{f[d+(e<<2)>>2]=f[h+(e<<2)>>2];e=e+1|0}while((e|0)<(g|0))}}f[N>>2]=l}g=f[O>>2]|0;if(g|0){e=O+4|0;d=f[e>>2]|0;if((d|0)!=(g|0))f[e>>2]=d+(~((d+-4-g|0)>>>2)<<2);ar(g)}d=f[P+8>>2]|0;if(d|0)do{O=d;d=f[d>>2]|0;ar(O)}while((d|0)!=0);d=f[P>>2]|0;f[P>>2]=0;if(!d){u=Q;return l|0}ar(d);u=Q;return l|0}function Xb(a,b,c,d,e,g){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;g=g|0;var h=0,i=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,B=0,C=0,D=0,E=0,F=0,G=0,H=0;C=a+8|0;f[C>>2]=e;i=a+32|0;h=a+36|0;g=f[h>>2]|0;d=f[i>>2]|0;j=g-d>>2;if(j>>>0>=e>>>0){if(j>>>0>e>>>0?(k=d+(e<<2)|0,(g|0)!=(k|0)):0)f[h>>2]=g+(~((g+-4-k|0)>>>2)<<2)}else ui(i,e-j|0);z=e>>>0>1073741823?-1:e<<2;A=Zq(z)|0;ej(A|0,0,z|0)|0;B=Zq(z)|0;ej(B|0,0,z|0)|0;if((f[C>>2]|0)>0){k=a+16|0;h=a+32|0;l=a+12|0;i=0;do{d=f[A+(i<<2)>>2]|0;g=f[k>>2]|0;if((d|0)>(g|0)){j=f[h>>2]|0;f[j+(i<<2)>>2]=g}else{z=f[l>>2]|0;j=f[h>>2]|0;f[j+(i<<2)>>2]=(d|0)<(z|0)?z:d}i=i+1|0;d=f[C>>2]|0}while((i|0)<(d|0));if((d|0)>0){i=a+20|0;h=0;do{d=(f[b+(h<<2)>>2]|0)+(f[j+(h<<2)>>2]|0)|0;g=c+(h<<2)|0;f[g>>2]=d;if((d|0)<=(f[k>>2]|0)){if((d|0)<(f[l>>2]|0)){d=(f[i>>2]|0)+d|0;H=18}}else{d=d-(f[i>>2]|0)|0;H=18}if((H|0)==18){H=0;f[g>>2]=d}h=h+1|0}while((h|0)<(f[C>>2]|0))}}s=f[a+48>>2]|0;w=a+56|0;h=f[w>>2]|0;g=f[h+4>>2]|0;d=f[h>>2]|0;y=g-d|0;z=y>>2;if((y|0)<=4){_q(B);_q(A);return 1}t=f[a+52>>2]|0;v=(e|0)>0;x=a+16|0;u=a+32|0;y=a+12|0;r=a+20|0;q=s+12|0;p=e<<2;i=g;o=1;while(1){if(i-d>>2>>>0<=o>>>0){Kp(h);d=f[h>>2]|0}n=f[d+(o<<2)>>2]|0;if(v)ej(A|0,0,p|0)|0;if((n|0)>-1){m=f[q>>2]|0;a=n;l=0;while(1){g=f[m+(a<<2)>>2]|0;if((g|0)>=0){h=f[s>>2]|0;i=f[t>>2]|0;k=f[i+(f[h+(g<<2)>>2]<<2)>>2]|0;d=g+1|0;d=((d|0)%3|0|0)==0?g+-2|0:d;if((d|0)<0)d=-1073741824;else d=f[h+(d<<2)>>2]|0;j=f[i+(d<<2)>>2]|0;d=(((g>>>0)%3|0|0)==0?2:-1)+g|0;if((d|0)<0)d=-1073741824;else d=f[h+(d<<2)>>2]|0;d=f[i+(d<<2)>>2]|0;if((k|0)<(o|0)&(j|0)<(o|0)&(d|0)<(o|0)){i=X(k,e)|0;h=X(j,e)|0;g=X(d,e)|0;if(v){d=0;do{f[B+(d<<2)>>2]=(f[c+(d+g<<2)>>2]|0)+(f[c+(d+h<<2)>>2]|0)-(f[c+(d+i<<2)>>2]|0);d=d+1|0}while((d|0)!=(e|0));if(v){d=0;do{k=A+(d<<2)|0;f[k>>2]=(f[k>>2]|0)+(f[B+(d<<2)>>2]|0);d=d+1|0}while((d|0)!=(e|0))}}h=l+1|0}else h=l}else h=l;d=(((a>>>0)%3|0|0)==0?2:-1)+a|0;do if((d|0)>=0){d=f[m+(d<<2)>>2]|0;if((d|0)>=0)if(!((d>>>0)%3|0)){d=d+2|0;break}else{d=d+-1|0;break}}while(0);a=(d|0)==(n|0)?-1073741824:d;if((a|0)<=-1)break;else l=h}g=X(o,e)|0;if(h){if(v){d=0;do{n=A+(d<<2)|0;f[n>>2]=(f[n>>2]|0)/(h|0)|0;d=d+1|0}while((d|0)!=(e|0))}k=b+(g<<2)|0;j=c+(g<<2)|0;if((f[C>>2]|0)>0){h=0;do{d=f[A+(h<<2)>>2]|0;g=f[x>>2]|0;if((d|0)>(g|0)){i=f[u>>2]|0;f[i+(h<<2)>>2]=g}else{n=f[y>>2]|0;i=f[u>>2]|0;f[i+(h<<2)>>2]=(d|0)<(n|0)?n:d}h=h+1|0;d=f[C>>2]|0}while((h|0)<(d|0));if((d|0)>0){h=0;do{d=(f[k+(h<<2)>>2]|0)+(f[i+(h<<2)>>2]|0)|0;g=j+(h<<2)|0;f[g>>2]=d;if((d|0)<=(f[x>>2]|0)){if((d|0)<(f[y>>2]|0)){d=(f[r>>2]|0)+d|0;H=72}}else{d=d-(f[r>>2]|0)|0;H=72}if((H|0)==72){H=0;f[g>>2]=d}h=h+1|0}while((h|0)<(f[C>>2]|0))}}}else{G=g;H=50}}else{G=X(o,e)|0;H=50}if((H|0)==50?(H=0,D=c+((X(o+-1|0,e)|0)<<2)|0,E=b+(G<<2)|0,F=c+(G<<2)|0,(f[C>>2]|0)>0):0){h=0;do{d=f[D+(h<<2)>>2]|0;g=f[x>>2]|0;if((d|0)>(g|0)){i=f[u>>2]|0;f[i+(h<<2)>>2]=g}else{n=f[y>>2]|0;i=f[u>>2]|0;f[i+(h<<2)>>2]=(d|0)<(n|0)?n:d}h=h+1|0;d=f[C>>2]|0}while((h|0)<(d|0));if((d|0)>0){h=0;do{d=(f[E+(h<<2)>>2]|0)+(f[i+(h<<2)>>2]|0)|0;g=F+(h<<2)|0;f[g>>2]=d;if((d|0)<=(f[x>>2]|0)){if((d|0)<(f[y>>2]|0)){d=(f[r>>2]|0)+d|0;H=60}}else{d=d-(f[r>>2]|0)|0;H=60}if((H|0)==60){H=0;f[g>>2]=d}h=h+1|0}while((h|0)<(f[C>>2]|0))}}g=o+1|0;if((g|0)>=(z|0))break;h=f[w>>2]|0;d=f[h>>2]|0;i=f[h+4>>2]|0;o=g}_q(B);_q(A);return 1}function Yb(a,b,c,d,e,g){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;g=g|0;var h=0,i=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,B=0,C=0,D=0,E=0,F=0,G=0,H=0,I=0,J=0,K=0;B=a+8|0;f[B>>2]=e;i=a+32|0;h=a+36|0;g=f[h>>2]|0;d=f[i>>2]|0;j=g-d>>2;if(j>>>0>=e>>>0){if(j>>>0>e>>>0?(k=d+(e<<2)|0,(g|0)!=(k|0)):0)f[h>>2]=g+(~((g+-4-k|0)>>>2)<<2)}else ui(i,e-j|0);y=e>>>0>1073741823?-1:e<<2;z=Zq(y)|0;ej(z|0,0,y|0)|0;A=Zq(y)|0;ej(A|0,0,y|0)|0;if((f[B>>2]|0)>0){k=a+16|0;h=a+32|0;l=a+12|0;i=0;do{d=f[z+(i<<2)>>2]|0;g=f[k>>2]|0;if((d|0)>(g|0)){j=f[h>>2]|0;f[j+(i<<2)>>2]=g}else{y=f[l>>2]|0;j=f[h>>2]|0;f[j+(i<<2)>>2]=(d|0)<(y|0)?y:d}i=i+1|0;d=f[B>>2]|0}while((i|0)<(d|0));if((d|0)>0){i=a+20|0;h=0;do{d=(f[b+(h<<2)>>2]|0)+(f[j+(h<<2)>>2]|0)|0;g=c+(h<<2)|0;f[g>>2]=d;if((d|0)<=(f[k>>2]|0)){if((d|0)<(f[l>>2]|0)){d=(f[i>>2]|0)+d|0;K=18}}else{d=d-(f[i>>2]|0)|0;K=18}if((K|0)==18){K=0;f[g>>2]=d}h=h+1|0}while((h|0)<(f[B>>2]|0))}}r=f[a+48>>2]|0;v=a+56|0;h=f[v>>2]|0;g=f[h+4>>2]|0;d=f[h>>2]|0;x=g-d|0;y=x>>2;if((x|0)<=4){_q(A);_q(z);return 1}s=f[a+52>>2]|0;u=(e|0)>0;w=a+16|0;t=a+32|0;x=a+12|0;q=a+20|0;p=r+64|0;o=r+28|0;n=e<<2;i=g;m=1;while(1){if(i-d>>2>>>0<=m>>>0){Kp(h);d=f[h>>2]|0}a=f[d+(m<<2)>>2]|0;if(u)ej(z|0,0,n|0)|0;if((a|0)>-1){l=f[r>>2]|0;k=a;j=0;do{if(((f[l+(k>>>5<<2)>>2]&1<<(k&31)|0)==0?(J=f[(f[(f[p>>2]|0)+12>>2]|0)+(k<<2)>>2]|0,(J|0)>=0):0)?(E=f[o>>2]|0,i=f[s>>2]|0,C=f[i+(f[E+(J<<2)>>2]<<2)>>2]|0,D=J+1|0,D=f[i+(f[E+((((D|0)%3|0|0)==0?J+-2|0:D)<<2)>>2]<<2)>>2]|0,E=f[i+(f[E+((((J>>>0)%3|0|0)==0?2:-1)+J<<2)>>2]<<2)>>2]|0,(C|0)<(m|0)&(D|0)<(m|0)&(E|0)<(m|0)):0){g=X(C,e)|0;h=X(D,e)|0;i=X(E,e)|0;if(u){d=0;do{f[A+(d<<2)>>2]=(f[c+(d+i<<2)>>2]|0)+(f[c+(d+h<<2)>>2]|0)-(f[c+(d+g<<2)>>2]|0);d=d+1|0}while((d|0)!=(e|0));if(u){d=0;do{i=z+(d<<2)|0;f[i>>2]=(f[i>>2]|0)+(f[A+(d<<2)>>2]|0);d=d+1|0}while((d|0)!=(e|0))}}j=j+1|0}d=(((k>>>0)%3|0|0)==0?2:-1)+k|0;do if(!(f[l+(d>>>5<<2)>>2]&1<<(d&31))){if((d|0)>=0){d=f[(f[(f[p>>2]|0)+12>>2]|0)+(d<<2)>>2]|0;if((d|0)>=0)if(!((d>>>0)%3|0)){d=d+2|0;break}else{d=d+-1|0;break}}}else d=-1073741824;while(0);k=(d|0)==(a|0)?-1073741824:d}while((k|0)>-1);g=X(m,e)|0;if(j){if(u){d=0;do{a=z+(d<<2)|0;f[a>>2]=(f[a>>2]|0)/(j|0)|0;d=d+1|0}while((d|0)!=(e|0))}k=b+(g<<2)|0;j=c+(g<<2)|0;if((f[B>>2]|0)>0){h=0;do{d=f[z+(h<<2)>>2]|0;g=f[w>>2]|0;if((d|0)>(g|0)){i=f[t>>2]|0;f[i+(h<<2)>>2]=g}else{a=f[x>>2]|0;i=f[t>>2]|0;f[i+(h<<2)>>2]=(d|0)<(a|0)?a:d}h=h+1|0;d=f[B>>2]|0}while((h|0)<(d|0));if((d|0)>0){h=0;do{d=(f[k+(h<<2)>>2]|0)+(f[i+(h<<2)>>2]|0)|0;g=j+(h<<2)|0;f[g>>2]=d;if((d|0)<=(f[w>>2]|0)){if((d|0)<(f[x>>2]|0)){d=(f[q>>2]|0)+d|0;K=70}}else{d=d-(f[q>>2]|0)|0;K=70}if((K|0)==70){K=0;f[g>>2]=d}h=h+1|0}while((h|0)<(f[B>>2]|0))}}}else{I=g;K=48}}else{I=X(m,e)|0;K=48}if((K|0)==48?(K=0,F=c+((X(m+-1|0,e)|0)<<2)|0,G=b+(I<<2)|0,H=c+(I<<2)|0,(f[B>>2]|0)>0):0){h=0;do{d=f[F+(h<<2)>>2]|0;g=f[w>>2]|0;if((d|0)>(g|0)){i=f[t>>2]|0;f[i+(h<<2)>>2]=g}else{a=f[x>>2]|0;i=f[t>>2]|0;f[i+(h<<2)>>2]=(d|0)<(a|0)?a:d}h=h+1|0;d=f[B>>2]|0}while((h|0)<(d|0));if((d|0)>0){h=0;do{d=(f[G+(h<<2)>>2]|0)+(f[i+(h<<2)>>2]|0)|0;g=H+(h<<2)|0;f[g>>2]=d;if((d|0)<=(f[w>>2]|0)){if((d|0)<(f[x>>2]|0)){d=(f[q>>2]|0)+d|0;K=58}}else{d=d-(f[q>>2]|0)|0;K=58}if((K|0)==58){K=0;f[g>>2]=d}h=h+1|0}while((h|0)<(f[B>>2]|0))}}g=m+1|0;if((g|0)>=(y|0))break;h=f[v>>2]|0;d=f[h>>2]|0;i=f[h+4>>2]|0;m=g}_q(A);_q(z);return 1}function Zb(a,c,e){a=a|0;c=c|0;e=e|0;var g=0,i=0,j=0,k=0,l=0,m=0,o=La,p=La,q=0,r=0,s=0,t=0,v=0,w=0,x=0,y=0,z=0,A=0,B=0,C=0,D=0,E=0,F=0,G=0,H=0,J=0,K=0,L=La;K=u;u=u+48|0;J=K+12|0;E=K+32|0;H=K;D=J+16|0;f[J>>2]=0;f[J+4>>2]=0;f[J+8>>2]=0;f[J+12>>2]=0;n[D>>2]=$(1.0);G=a+80|0;Dk(H,f[G>>2]|0);i=f[G>>2]|0;a:do if((i|0)>0){A=c+48|0;B=c+40|0;x=J+4|0;z=J+12|0;w=J+8|0;C=a+40|0;y=a+64|0;v=f[e>>2]|0;i=0;t=0;s=0;while(1){k=v+t|0;m=A;q=f[m>>2]|0;m=f[m+4>>2]|0;l=B;l=kn(k|0,((k|0)<0)<<31>>31|0,f[l>>2]|0,f[l+4>>2]|0)|0;m=Ho(l|0,I|0,q|0,m|0)|0;m=(f[f[c>>2]>>2]|0)+m|0;m=h[m>>0]|h[m+1>>0]<<8;d[E>>1]=m;q=(m^318)&65535;b:do if(i){l=i+-1|0;k=(l&i|0)==0;if(k)g=l&q;else g=(q>>>0)%(i>>>0)|0;j=f[J>>2]|0;e=f[j+(g<<2)>>2]|0;c:do if(e|0){if(k)do{e=f[e>>2]|0;if(!e)break c;if((f[e+4>>2]&l|0)!=(g|0))break c}while((d[e+8>>1]|0)!=m<<16>>16);else do{e=f[e>>2]|0;if(!e)break c;if((((f[e+4>>2]|0)>>>0)%(i>>>0)|0|0)!=(g|0))break c}while((d[e+8>>1]|0)!=m<<16>>16);f[(f[H>>2]|0)+(t<<2)>>2]=f[e+12>>2];g=s;break b}while(0);if(k)e=l&q;else e=(q>>>0)%(i>>>0)|0;g=f[j+(e<<2)>>2]|0;if(g)if(k)while(1){g=f[g>>2]|0;if(!g){g=0;r=28;break b}if((f[g+4>>2]&l|0)!=(e|0)){g=0;r=28;break b}if((d[g+8>>1]|0)==m<<16>>16){r=41;break}}else while(1){g=f[g>>2]|0;if(!g){g=0;r=28;break b}if((((f[g+4>>2]|0)>>>0)%(i>>>0)|0|0)!=(e|0)){g=0;r=28;break b}if((d[g+8>>1]|0)==m<<16>>16){r=41;break}}else{g=0;r=28}}else{i=0;e=0;g=1;r=28}while(0);if((r|0)==28){r=0;j=ln(16)|0;d[j+8>>1]=m;f[j+12>>2]=s;f[j+4>>2]=q;f[j>>2]=0;p=$(((f[z>>2]|0)+1|0)>>>0);L=$(i>>>0);o=$(n[D>>2]);do if(g|p>$(L*o)){e=(i>>>0<3|(i+-1&i|0)!=0)&1|i<<1;g=~~$(W($(p/o)))>>>0;Oh(J,e>>>0>>0?g:e);e=f[x>>2]|0;g=e+-1|0;if(!(g&e)){i=e;e=g&q;break}else{i=e;e=(q>>>0)%(e>>>0)|0;break}}while(0);g=(f[J>>2]|0)+(e<<2)|0;e=f[g>>2]|0;if(!e){f[j>>2]=f[w>>2];f[w>>2]=j;f[g>>2]=w;e=f[j>>2]|0;if(e|0){e=f[e+4>>2]|0;g=i+-1|0;if(!(g&i))e=e&g;else e=(e>>>0)%(i>>>0)|0;e=(f[J>>2]|0)+(e<<2)|0;r=39}}else{f[j>>2]=f[e>>2];r=39}if((r|0)==39)f[e>>2]=j;f[z>>2]=(f[z>>2]|0)+1;r=41}if((r|0)==41){r=0;q=C;g=f[q>>2]|0;q=kn(g|0,f[q+4>>2]|0,s|0,((s|0)<0)<<31>>31|0)|0;Mg((f[f[y>>2]>>2]|0)+q|0,E|0,g|0)|0;f[(f[H>>2]|0)+(t<<2)>>2]=s;g=s+1|0}e=t+1|0;i=f[G>>2]|0;if((e|0)>=(i|0)){q=g;break a}i=f[x>>2]|0;t=e;s=g}}else q=0;while(0);if((q|0)!=(i|0)){m=a+84|0;if(!(b[m>>0]|0)){i=f[a+68>>2]|0;e=(f[a+72>>2]|0)-i|0;if((e|0)>0){j=f[H>>2]|0;g=e>>2;e=0;do{a=i+(e<<2)|0;f[a>>2]=f[j+(f[a>>2]<<2)>>2];e=e+1|0}while((e|0)<(g|0))}}else{b[m>>0]=0;k=a+68|0;j=a+72|0;g=f[j>>2]|0;e=f[k>>2]|0;l=g-e>>2;if(i>>>0<=l>>>0){if(i>>>0>>0?(F=e+(i<<2)|0,(g|0)!=(F|0)):0)f[j>>2]=g+(~((g+-4-F|0)>>>2)<<2)}else{ch(k,i-l|0,1416);i=f[G>>2]|0}if((i|0)>0){j=f[H>>2]|0;if(b[m>>0]|0)Ga(18230,18249,91,18290);e=f[a+68>>2]|0;g=0;do{f[e+(g<<2)>>2]=f[j+(g<<2)>>2];g=g+1|0}while((g|0)<(i|0))}}f[G>>2]=q}i=f[H>>2]|0;if(i|0){g=H+4|0;e=f[g>>2]|0;if((e|0)!=(i|0))f[g>>2]=e+(~((e+-4-i|0)>>>2)<<2);ar(i)}e=f[J+8>>2]|0;if(e|0)do{H=e;e=f[e>>2]|0;ar(H)}while((e|0)!=0);e=f[J>>2]|0;f[J>>2]=0;if(!e){u=K;return q|0}ar(e);u=K;return q|0}function _b(a,c,d){a=a|0;c=c|0;d=d|0;var e=0,g=0,i=0,j=0,k=0,l=0,m=La,o=La,p=0,q=0,r=0,s=0,t=0,v=0,w=0,x=0,y=0,z=0,A=0,B=0,C=0,D=0,E=0,F=0,G=0,H=0,J=0,K=La;J=u;u=u+48|0;H=J+16|0;D=J+12|0;G=J;C=H+16|0;f[H>>2]=0;f[H+4>>2]=0;f[H+8>>2]=0;f[H+12>>2]=0;n[C>>2]=$(1.0);F=a+80|0;Dk(G,f[F>>2]|0);g=f[F>>2]|0;a:do if((g|0)>0){z=c+48|0;A=c+40|0;w=H+4|0;y=H+12|0;v=H+8|0;B=a+40|0;x=a+64|0;t=f[d>>2]|0;g=0;s=0;r=0;while(1){j=t+s|0;l=z;p=f[l>>2]|0;l=f[l+4>>2]|0;k=A;k=kn(j|0,((j|0)<0)<<31>>31|0,f[k>>2]|0,f[k+4>>2]|0)|0;l=Ho(k|0,I|0,p|0,l|0)|0;l=(f[f[c>>2]>>2]|0)+l|0;l=h[l>>0]|h[l+1>>0]<<8|h[l+2>>0]<<16|h[l+3>>0]<<24;f[D>>2]=l;p=l^318;b:do if(g){k=g+-1|0;j=(k&g|0)==0;if(j)e=k&p;else e=(p>>>0)%(g>>>0)|0;i=f[H>>2]|0;d=f[i+(e<<2)>>2]|0;c:do if(d|0){if(j)do{d=f[d>>2]|0;if(!d)break c;if((f[d+4>>2]&k|0)!=(e|0))break c}while((f[d+8>>2]|0)!=(l|0));else do{d=f[d>>2]|0;if(!d)break c;if((((f[d+4>>2]|0)>>>0)%(g>>>0)|0|0)!=(e|0))break c}while((f[d+8>>2]|0)!=(l|0));f[(f[G>>2]|0)+(s<<2)>>2]=f[d+12>>2];e=r;break b}while(0);if(j)d=k&p;else d=(p>>>0)%(g>>>0)|0;e=f[i+(d<<2)>>2]|0;if(e)if(j)while(1){e=f[e>>2]|0;if(!e){e=0;q=28;break b}if((f[e+4>>2]&k|0)!=(d|0)){e=0;q=28;break b}if((f[e+8>>2]|0)==(l|0)){q=41;break}}else while(1){e=f[e>>2]|0;if(!e){e=0;q=28;break b}if((((f[e+4>>2]|0)>>>0)%(g>>>0)|0|0)!=(d|0)){e=0;q=28;break b}if((f[e+8>>2]|0)==(l|0)){q=41;break}}else{e=0;q=28}}else{g=0;d=0;e=1;q=28}while(0);if((q|0)==28){q=0;i=ln(16)|0;f[i+8>>2]=l;f[i+12>>2]=r;f[i+4>>2]=p;f[i>>2]=0;o=$(((f[y>>2]|0)+1|0)>>>0);K=$(g>>>0);m=$(n[C>>2]);do if(e|o>$(K*m)){d=(g>>>0<3|(g+-1&g|0)!=0)&1|g<<1;e=~~$(W($(o/m)))>>>0;li(H,d>>>0>>0?e:d);d=f[w>>2]|0;e=d+-1|0;if(!(e&d)){g=d;d=e&p;break}else{g=d;d=(p>>>0)%(d>>>0)|0;break}}while(0);e=(f[H>>2]|0)+(d<<2)|0;d=f[e>>2]|0;if(!d){f[i>>2]=f[v>>2];f[v>>2]=i;f[e>>2]=v;d=f[i>>2]|0;if(d|0){d=f[d+4>>2]|0;e=g+-1|0;if(!(e&g))d=d&e;else d=(d>>>0)%(g>>>0)|0;d=(f[H>>2]|0)+(d<<2)|0;q=39}}else{f[i>>2]=f[d>>2];q=39}if((q|0)==39)f[d>>2]=i;f[y>>2]=(f[y>>2]|0)+1;q=41}if((q|0)==41){q=0;p=B;e=f[p>>2]|0;p=kn(e|0,f[p+4>>2]|0,r|0,((r|0)<0)<<31>>31|0)|0;Mg((f[f[x>>2]>>2]|0)+p|0,D|0,e|0)|0;f[(f[G>>2]|0)+(s<<2)>>2]=r;e=r+1|0}d=s+1|0;g=f[F>>2]|0;if((d|0)>=(g|0)){p=e;break a}g=f[w>>2]|0;s=d;r=e}}else p=0;while(0);if((p|0)!=(g|0)){l=a+84|0;if(!(b[l>>0]|0)){g=f[a+68>>2]|0;d=(f[a+72>>2]|0)-g|0;if((d|0)>0){i=f[G>>2]|0;e=d>>2;d=0;do{a=g+(d<<2)|0;f[a>>2]=f[i+(f[a>>2]<<2)>>2];d=d+1|0}while((d|0)<(e|0))}}else{b[l>>0]=0;j=a+68|0;i=a+72|0;e=f[i>>2]|0;d=f[j>>2]|0;k=e-d>>2;if(g>>>0<=k>>>0){if(g>>>0>>0?(E=d+(g<<2)|0,(e|0)!=(E|0)):0)f[i>>2]=e+(~((e+-4-E|0)>>>2)<<2)}else{ch(j,g-k|0,1416);g=f[F>>2]|0}if((g|0)>0){i=f[G>>2]|0;if(b[l>>0]|0)Ga(18230,18249,91,18290);d=f[a+68>>2]|0;e=0;do{f[d+(e<<2)>>2]=f[i+(e<<2)>>2];e=e+1|0}while((e|0)<(g|0))}}f[F>>2]=p}g=f[G>>2]|0;if(g|0){e=G+4|0;d=f[e>>2]|0;if((d|0)!=(g|0))f[e>>2]=d+(~((d+-4-g|0)>>>2)<<2);ar(g)}d=f[H+8>>2]|0;if(d|0)do{G=d;d=f[d>>2]|0;ar(G)}while((d|0)!=0);d=f[H>>2]|0;f[H>>2]=0;if(!d){u=J;return p|0}ar(d);u=J;return p|0}function $b(a,c,d){a=a|0;c=c|0;d=d|0;var e=0,g=0,h=0,i=0,j=0,k=0,l=La,m=La,o=0,p=0,q=0,r=0,s=0,t=0,v=0,w=0,x=0,y=0,z=0,A=0,B=0,C=0,D=0,E=0,F=0,G=0,H=0,J=La;H=u;u=u+48|0;G=H+12|0;C=H+32|0;F=H;B=G+16|0;f[G>>2]=0;f[G+4>>2]=0;f[G+8>>2]=0;f[G+12>>2]=0;n[B>>2]=$(1.0);E=a+80|0;Dk(F,f[E>>2]|0);g=f[E>>2]|0;a:do if((g|0)>0){y=c+48|0;z=c+40|0;v=G+4|0;x=G+12|0;t=G+8|0;A=a+40|0;w=a+64|0;s=f[d>>2]|0;g=0;r=0;q=0;while(1){i=s+r|0;k=y;o=f[k>>2]|0;k=f[k+4>>2]|0;j=z;j=kn(i|0,((i|0)<0)<<31>>31|0,f[j>>2]|0,f[j+4>>2]|0)|0;k=Ho(j|0,I|0,o|0,k|0)|0;k=b[(f[f[c>>2]>>2]|0)+k>>0]|0;b[C>>0]=k;o=k&255^318;b:do if(g){j=g+-1|0;i=(j&g|0)==0;if(i)e=j&o;else e=(o>>>0)%(g>>>0)|0;h=f[G>>2]|0;d=f[h+(e<<2)>>2]|0;c:do if(d|0){if(i)do{d=f[d>>2]|0;if(!d)break c;if((f[d+4>>2]&j|0)!=(e|0))break c}while((b[d+8>>0]|0)!=k<<24>>24);else do{d=f[d>>2]|0;if(!d)break c;if((((f[d+4>>2]|0)>>>0)%(g>>>0)|0|0)!=(e|0))break c}while((b[d+8>>0]|0)!=k<<24>>24);f[(f[F>>2]|0)+(r<<2)>>2]=f[d+12>>2];e=q;break b}while(0);if(i)d=j&o;else d=(o>>>0)%(g>>>0)|0;e=f[h+(d<<2)>>2]|0;if(e)if(i)while(1){e=f[e>>2]|0;if(!e){e=0;p=28;break b}if((f[e+4>>2]&j|0)!=(d|0)){e=0;p=28;break b}if((b[e+8>>0]|0)==k<<24>>24){p=41;break}}else while(1){e=f[e>>2]|0;if(!e){e=0;p=28;break b}if((((f[e+4>>2]|0)>>>0)%(g>>>0)|0|0)!=(d|0)){e=0;p=28;break b}if((b[e+8>>0]|0)==k<<24>>24){p=41;break}}else{e=0;p=28}}else{g=0;d=0;e=1;p=28}while(0);if((p|0)==28){p=0;h=ln(16)|0;b[h+8>>0]=k;f[h+12>>2]=q;f[h+4>>2]=o;f[h>>2]=0;m=$(((f[x>>2]|0)+1|0)>>>0);J=$(g>>>0);l=$(n[B>>2]);do if(e|m>$(J*l)){d=(g>>>0<3|(g+-1&g|0)!=0)&1|g<<1;e=~~$(W($(m/l)))>>>0;Vh(G,d>>>0>>0?e:d);d=f[v>>2]|0;e=d+-1|0;if(!(e&d)){g=d;d=e&o;break}else{g=d;d=(o>>>0)%(d>>>0)|0;break}}while(0);e=(f[G>>2]|0)+(d<<2)|0;d=f[e>>2]|0;if(!d){f[h>>2]=f[t>>2];f[t>>2]=h;f[e>>2]=t;d=f[h>>2]|0;if(d|0){d=f[d+4>>2]|0;e=g+-1|0;if(!(e&g))d=d&e;else d=(d>>>0)%(g>>>0)|0;d=(f[G>>2]|0)+(d<<2)|0;p=39}}else{f[h>>2]=f[d>>2];p=39}if((p|0)==39)f[d>>2]=h;f[x>>2]=(f[x>>2]|0)+1;p=41}if((p|0)==41){p=0;o=A;e=f[o>>2]|0;o=kn(e|0,f[o+4>>2]|0,q|0,((q|0)<0)<<31>>31|0)|0;Mg((f[f[w>>2]>>2]|0)+o|0,C|0,e|0)|0;f[(f[F>>2]|0)+(r<<2)>>2]=q;e=q+1|0}d=r+1|0;g=f[E>>2]|0;if((d|0)>=(g|0)){o=e;break a}g=f[v>>2]|0;r=d;q=e}}else o=0;while(0);if((o|0)!=(g|0)){k=a+84|0;if(!(b[k>>0]|0)){g=f[a+68>>2]|0;d=(f[a+72>>2]|0)-g|0;if((d|0)>0){h=f[F>>2]|0;e=d>>2;d=0;do{a=g+(d<<2)|0;f[a>>2]=f[h+(f[a>>2]<<2)>>2];d=d+1|0}while((d|0)<(e|0))}}else{b[k>>0]=0;i=a+68|0;h=a+72|0;e=f[h>>2]|0;d=f[i>>2]|0;j=e-d>>2;if(g>>>0<=j>>>0){if(g>>>0>>0?(D=d+(g<<2)|0,(e|0)!=(D|0)):0)f[h>>2]=e+(~((e+-4-D|0)>>>2)<<2)}else{ch(i,g-j|0,1416);g=f[E>>2]|0}if((g|0)>0){h=f[F>>2]|0;if(b[k>>0]|0)Ga(18230,18249,91,18290);d=f[a+68>>2]|0;e=0;do{f[d+(e<<2)>>2]=f[h+(e<<2)>>2];e=e+1|0}while((e|0)<(g|0))}}f[E>>2]=o}g=f[F>>2]|0;if(g|0){e=F+4|0;d=f[e>>2]|0;if((d|0)!=(g|0))f[e>>2]=d+(~((d+-4-g|0)>>>2)<<2);ar(g)}d=f[G+8>>2]|0;if(d|0)do{F=d;d=f[d>>2]|0;ar(F)}while((d|0)!=0);d=f[G>>2]|0;f[G>>2]=0;if(!d){u=H;return o|0}ar(d);u=H;return o|0}function ac(a){a=a|0;var b=0,c=0,d=0,e=0,g=0,h=0,i=0,j=0,k=0;if(!a)return;c=a+-8|0;d=f[5670]|0;a=f[a+-4>>2]|0;b=a&-8;k=c+b|0;do if(!(a&1)){e=f[c>>2]|0;if(!(a&3))return;g=c+(0-e)|0;h=e+b|0;if(g>>>0>>0)return;if((g|0)==(f[5671]|0)){b=k+4|0;a=f[b>>2]|0;if((a&3|0)!=3){i=g;j=g;b=h;break}f[5668]=h;f[b>>2]=a&-2;f[g+4>>2]=h|1;f[g+h>>2]=h;return}c=e>>>3;if(e>>>0<256){a=f[g+8>>2]|0;b=f[g+12>>2]|0;if((b|0)==(a|0)){f[5666]=f[5666]&~(1<>2]=b;f[b+8>>2]=a;i=g;j=g;b=h;break}}e=f[g+24>>2]|0;a=f[g+12>>2]|0;do if((a|0)==(g|0)){c=g+16|0;b=c+4|0;a=f[b>>2]|0;if(!a){a=f[c>>2]|0;if(!a){c=0;break}else d=c}else d=b;while(1){c=a+20|0;b=f[c>>2]|0;if(b|0){a=b;d=c;continue}c=a+16|0;b=f[c>>2]|0;if(!b)break;else{a=b;d=c}}f[d>>2]=0;c=a}else{c=f[g+8>>2]|0;f[c+12>>2]=a;f[a+8>>2]=c;c=a}while(0);if(e){a=f[g+28>>2]|0;b=22968+(a<<2)|0;if((g|0)==(f[b>>2]|0)){f[b>>2]=c;if(!c){f[5667]=f[5667]&~(1<>2]|0)!=(g|0)&1)<<2)>>2]=c;if(!c){i=g;j=g;b=h;break}}f[c+24>>2]=e;b=g+16|0;a=f[b>>2]|0;if(a|0){f[c+16>>2]=a;f[a+24>>2]=c}a=f[b+4>>2]|0;if(a){f[c+20>>2]=a;f[a+24>>2]=c;i=g;j=g;b=h}else{i=g;j=g;b=h}}else{i=g;j=g;b=h}}else{i=c;j=c}while(0);if(i>>>0>=k>>>0)return;a=k+4|0;d=f[a>>2]|0;if(!(d&1))return;if(!(d&2)){a=f[5671]|0;if((k|0)==(f[5672]|0)){k=(f[5669]|0)+b|0;f[5669]=k;f[5672]=j;f[j+4>>2]=k|1;if((j|0)!=(a|0))return;f[5671]=0;f[5668]=0;return}if((k|0)==(a|0)){k=(f[5668]|0)+b|0;f[5668]=k;f[5671]=i;f[j+4>>2]=k|1;f[i+k>>2]=k;return}e=(d&-8)+b|0;c=d>>>3;do if(d>>>0<256){b=f[k+8>>2]|0;a=f[k+12>>2]|0;if((a|0)==(b|0)){f[5666]=f[5666]&~(1<>2]=a;f[a+8>>2]=b;break}}else{g=f[k+24>>2]|0;a=f[k+12>>2]|0;do if((a|0)==(k|0)){c=k+16|0;b=c+4|0;a=f[b>>2]|0;if(!a){a=f[c>>2]|0;if(!a){c=0;break}else d=c}else d=b;while(1){c=a+20|0;b=f[c>>2]|0;if(b|0){a=b;d=c;continue}c=a+16|0;b=f[c>>2]|0;if(!b)break;else{a=b;d=c}}f[d>>2]=0;c=a}else{c=f[k+8>>2]|0;f[c+12>>2]=a;f[a+8>>2]=c;c=a}while(0);if(g|0){a=f[k+28>>2]|0;b=22968+(a<<2)|0;if((k|0)==(f[b>>2]|0)){f[b>>2]=c;if(!c){f[5667]=f[5667]&~(1<>2]|0)!=(k|0)&1)<<2)>>2]=c;if(!c)break}f[c+24>>2]=g;b=k+16|0;a=f[b>>2]|0;if(a|0){f[c+16>>2]=a;f[a+24>>2]=c}a=f[b+4>>2]|0;if(a|0){f[c+20>>2]=a;f[a+24>>2]=c}}}while(0);f[j+4>>2]=e|1;f[i+e>>2]=e;if((j|0)==(f[5671]|0)){f[5668]=e;return}}else{f[a>>2]=d&-2;f[j+4>>2]=b|1;f[i+b>>2]=b;e=b}a=e>>>3;if(e>>>0<256){c=22704+(a<<1<<2)|0;b=f[5666]|0;a=1<>2]|0}f[a>>2]=j;f[b+12>>2]=j;f[j+8>>2]=b;f[j+12>>2]=c;return}a=e>>>8;if(a)if(e>>>0>16777215)b=31;else{i=(a+1048320|0)>>>16&8;k=a<>>16&4;k=k<>>16&2;b=14-(h|i|b)+(k<>>15)|0;b=e>>>(b+7|0)&1|b<<1}else b=0;d=22968+(b<<2)|0;f[j+28>>2]=b;f[j+20>>2]=0;f[j+16>>2]=0;a=f[5667]|0;c=1<>>1)|0);c=f[d>>2]|0;while(1){if((f[c+4>>2]&-8|0)==(e|0)){a=73;break}d=c+16+(b>>>31<<2)|0;a=f[d>>2]|0;if(!a){a=72;break}else{b=b<<1;c=a}}if((a|0)==72){f[d>>2]=j;f[j+24>>2]=c;f[j+12>>2]=j;f[j+8>>2]=j;break}else if((a|0)==73){i=c+8|0;k=f[i>>2]|0;f[k+12>>2]=j;f[i>>2]=j;f[j+8>>2]=k;f[j+12>>2]=c;f[j+24>>2]=0;break}}else{f[5667]=a|c;f[d>>2]=j;f[j+24>>2]=d;f[j+12>>2]=j;f[j+8>>2]=j}while(0);k=(f[5674]|0)+-1|0;f[5674]=k;if(!k)a=23120;else return;while(1){a=f[a>>2]|0;if(!a)break;else a=a+8|0}f[5674]=-1;return}function bc(a,b){a=a|0;b=b|0;var c=0,d=0,e=0,g=0,h=0,i=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,v=0,w=0,x=0,y=0,z=0;z=u;u=u+32|0;w=z+28|0;t=z+24|0;j=z+20|0;k=z+16|0;l=z+12|0;m=z+8|0;s=z+4|0;v=z;e=f[b>>2]|0;if((e|0)<0){u=z;return}x=(e>>>0)/3|0;q=a+12|0;if(f[(f[q>>2]|0)+(x>>>5<<2)>>2]&1<<(x&31)|0){u=z;return}x=a+56|0;c=f[x>>2]|0;r=a+60|0;d=f[r>>2]|0;if((d|0)!=(c|0)){c=d+(~((d+-4-c|0)>>>2)<<2)|0;f[r>>2]=c}o=a+64|0;if((c|0)==(f[o>>2]|0))Ii(x,b);else{f[c>>2]=e;f[r>>2]=c+4}c=f[a>>2]|0;g=f[b>>2]|0;d=g+1|0;do if((g|0)>=0){c=f[c+28>>2]|0;d=f[c+((((d|0)%3|0|0)==0?g+-2|0:d)<<2)>>2]|0;if(!((g>>>0)%3|0)){e=c;c=g+2|0;break}else{e=c;c=g+-1|0;break}}else{d=f[c+28>>2]|0;e=d;d=f[d+(g<<2)>>2]|0;c=g}while(0);i=f[e+(c<<2)>>2]|0;n=a+24|0;c=f[n>>2]|0;g=c+(d>>>5<<2)|0;h=1<<(d&31);e=f[g>>2]|0;if(!(e&h)){f[g>>2]=e|h;f[j>>2]=d;c=f[b>>2]|0;d=c+1|0;if((c|0)>=0)c=((d|0)%3|0|0)==0?c+-2|0:d;f[k>>2]=c;f[t>>2]=f[j>>2];f[w>>2]=f[k>>2];tg(a+36|0,t,w);c=f[n>>2]|0}d=c+(i>>>5<<2)|0;e=1<<(i&31);c=f[d>>2]|0;if(!(c&e)){f[d>>2]=c|e;d=a+36|0;f[l>>2]=i;c=f[b>>2]|0;do if((c|0)>=0)if(!((c>>>0)%3|0)){c=c+2|0;break}else{c=c+-1|0;break}while(0);f[m>>2]=c;f[t>>2]=f[l>>2];f[w>>2]=f[m>>2];tg(d,t,w)}d=f[x>>2]|0;c=f[r>>2]|0;if((d|0)==(c|0)){u=z;return}k=a+36|0;do{e=f[c+-4>>2]|0;f[b>>2]=e;g=(e|0)/3|0;if((e|0)>=0?(p=f[q>>2]|0,(f[p+(g>>>5<<2)>>2]&1<<(g&31)|0)==0):0){c=e;d=p;e=f[a>>2]|0;a:while(1){i=(c|0)/3|0;d=d+(i>>>5<<2)|0;f[d>>2]=1<<(i&31)|f[d>>2];d=f[b>>2]|0;i=f[(f[e+28>>2]|0)+(d<<2)>>2]|0;c=f[(f[e+40>>2]|0)+(i<<2)>>2]|0;if((c|0)<0)j=1;else{j=f[(f[f[e+64>>2]>>2]|0)+(c<<2)>>2]|0;j=(1<<(j&31)&f[(f[e+12>>2]|0)+(j>>>5<<2)>>2]|0)!=0}g=(f[n>>2]|0)+(i>>>5<<2)|0;h=1<<(i&31);c=f[g>>2]|0;if(!(c&h)){f[g>>2]=c|h;f[s>>2]=i;f[v>>2]=f[b>>2];f[t>>2]=f[s>>2];f[w>>2]=f[v>>2];tg(k,t,w);e=f[a>>2]|0;c=f[b>>2]|0;if(j){d=c;y=40}else{d=c+1|0;if((c|0)>=0)c=((d|0)%3|0|0)==0?c+-2|0:d;do if(!(1<<(c&31)&f[(f[e>>2]|0)+(c>>>5<<2)>>2])){if((c|0)<0)break;c=f[(f[(f[e+64>>2]|0)+12>>2]|0)+(c<<2)>>2]|0}else c=-1073741824;while(0);f[b>>2]=c}}else y=40;if((y|0)==40){y=0;g=(d|0)<0;c=d+1|0;if(g)c=d;else c=((c|0)%3|0|0)==0?d+-2|0:c;if(!(1<<(c&31)&f[(f[e>>2]|0)+(c>>>5<<2)>>2])){if((c|0)>=0)c=f[(f[(f[e+64>>2]|0)+12>>2]|0)+(c<<2)>>2]|0}else c=-1073741824;f[w>>2]=c;do if(!g)if(!((d>>>0)%3|0)){d=d+2|0;break}else{d=d+-1|0;break}while(0);do if(!(1<<(d&31)&f[(f[e>>2]|0)+(d>>>5<<2)>>2])){if((d|0)<0)break;d=f[(f[(f[e+64>>2]|0)+12>>2]|0)+(d<<2)>>2]|0}else d=-1073741824;while(0);m=(c|0)<0;i=m?-1:(c>>>0)/3|0;h=(d|0)<0;j=h?-1:(d>>>0)/3|0;do if(!m){g=f[q>>2]|0;if(f[g+(i>>>5<<2)>>2]&1<<(i&31)|0){y=54;break}if(h)break;if(!(f[g+(j>>>5<<2)>>2]&1<<(j&31))){y=59;break a}}else y=54;while(0);if((y|0)==54){y=0;if(h){y=56;break}if(!(f[(f[q>>2]|0)+(j>>>5<<2)>>2]&1<<(j&31)))c=d;else{y=56;break}}f[b>>2]=c}d=f[q>>2]|0}do if((y|0)==56){y=0;c=(f[r>>2]|0)+-4|0;f[r>>2]=c}else if((y|0)==59){y=0;c=f[r>>2]|0;f[c+-4>>2]=d;if((c|0)==(f[o>>2]|0)){Ii(x,w);c=f[r>>2]|0;break}else{f[c>>2]=f[w>>2];c=c+4|0;f[r>>2]=c;break}}while(0);d=f[x>>2]|0}else{c=c+-4|0;f[r>>2]=c}}while((d|0)!=(c|0));u=z;return}function cc(a,c,d){a=a|0;c=c|0;d=d|0;var e=0,g=0,h=0,i=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,v=0,w=0,x=0,y=0,z=0,A=0,B=0,C=0,D=0,E=0,F=0,G=0,H=0,J=0,K=0,L=0,M=0,N=0,O=0,P=0,Q=0,R=0,S=0,T=0,U=0,V=0,W=0,X=0,Y=0,Z=0,_=0;N=u;u=u+96|0;F=N+72|0;J=N+48|0;K=N+24|0;L=N;if(!(f[a>>2]|0))Ga(10673,11041,79,11147);H=a+4|0;if(!(f[H>>2]|0))Ga(10673,11041,79,11147);G=a+12|0;k=f[G>>2]|0;n=f[c>>2]|0;f[F>>2]=k;f[F+4>>2]=n;E=F+8|0;f[E>>2]=n;b[F+12>>0]=1;m=(n|0)<0;if(m)l=-1073741824;else l=f[(f[k>>2]|0)+(n<<2)>>2]|0;D=a+16|0;k=f[D>>2]|0;c=f[k>>2]|0;if((f[k+4>>2]|0)-c>>2>>>0<=l>>>0){Kp(k);c=f[k>>2]|0}kg(J,a,f[c+(l<<2)>>2]|0);a:do if(!m){y=K+8|0;v=J+8|0;A=K+16|0;w=J+16|0;x=L+8|0;z=L+16|0;C=n+1|0;C=((C|0)%3|0|0)==0?n+-2|0:C;B=(C|0)<0;s=n+(((n>>>0)%3|0|0)==0?2:-1)|0;t=(s|0)<0;q=0;p=0;r=0;n=0;l=0;o=0;while(1){if(!(f[a>>2]|0)){c=13;break}if(!(f[H>>2]|0)){c=13;break}if(B)m=-1073741824;else m=f[(f[f[G>>2]>>2]|0)+(C<<2)>>2]|0;k=f[D>>2]|0;c=f[k>>2]|0;if((f[k+4>>2]|0)-c>>2>>>0<=m>>>0){Kp(k);c=f[k>>2]|0}kg(K,a,f[c+(m<<2)>>2]|0);if(!(f[a>>2]|0)){c=21;break}if(!(f[H>>2]|0)){c=21;break}if(t)m=-1073741824;else m=f[(f[f[G>>2]>>2]|0)+(s<<2)>>2]|0;k=f[D>>2]|0;c=f[k>>2]|0;if((f[k+4>>2]|0)-c>>2>>>0<=m>>>0){Kp(k);c=f[k>>2]|0}kg(L,a,f[c+(m<<2)>>2]|0);O=K;Y=J;X=f[Y>>2]|0;Y=f[Y+4>>2]|0;O=Xn(f[O>>2]|0,f[O+4>>2]|0,X|0,Y|0)|0;P=I;Q=y;_=v;Z=f[_>>2]|0;_=f[_+4>>2]|0;Q=Xn(f[Q>>2]|0,f[Q+4>>2]|0,Z|0,_|0)|0;R=I;T=A;k=w;S=f[k>>2]|0;k=f[k+4>>2]|0;T=Xn(f[T>>2]|0,f[T+4>>2]|0,S|0,k|0)|0;U=I;m=L;Y=Xn(f[m>>2]|0,f[m+4>>2]|0,X|0,Y|0)|0;X=I;m=x;_=Xn(f[m>>2]|0,f[m+4>>2]|0,Z|0,_|0)|0;Z=I;m=z;k=Xn(f[m>>2]|0,f[m+4>>2]|0,S|0,k|0)|0;S=I;m=kn(k|0,S|0,Q|0,R|0)|0;c=I;W=kn(_|0,Z|0,T|0,U|0)|0;V=I;U=kn(Y|0,X|0,T|0,U|0)|0;T=I;S=kn(k|0,S|0,O|0,P|0)|0;k=I;P=kn(_|0,Z|0,O|0,P|0)|0;O=I;R=kn(Y|0,X|0,Q|0,R|0)|0;Q=I;q=Xn(q|0,p|0,W|0,V|0)|0;c=Ho(q|0,I|0,m|0,c|0)|0;m=I;n=Ho(U|0,T|0,r|0,n|0)|0;k=Xn(n|0,I|0,S|0,k|0)|0;n=I;l=Xn(l|0,o|0,R|0,Q|0)|0;l=Ho(l|0,I|0,P|0,O|0)|0;o=I;Zg(F);if((f[E>>2]|0)<0){j=m;i=c;h=n;g=k;M=o;e=l;break a}else{q=c;p=m;r=k}}if((c|0)==13)Ga(10673,11041,63,11169);else if((c|0)==21)Ga(10673,11041,63,11169)}else{j=0;i=0;h=0;g=0;M=0;e=0}while(0);Z=(j|0)>-1|(j|0)==-1&i>>>0>4294967295;_=Xn(0,0,i|0,j|0)|0;c=Z?j:I;U=(h|0)>-1|(h|0)==-1&g>>>0>4294967295;V=Xn(0,0,g|0,h|0)|0;W=U?h:I;Y=(M|0)>-1|(M|0)==-1&e>>>0>4294967295;X=Xn(0,0,e|0,M|0)|0;Y=Ho((U?g:V)|0,W|0,(Y?e:X)|0,(Y?M:I)|0)|0;c=Ho(Y|0,I|0,(Z?i:_)|0,c|0)|0;if((c|0)>536870912){c=Tn(c|0,I|0,29)|0;c=c&7;i=pk(i|0,j|0,c|0,0)|0;j=I;g=pk(g|0,h|0,c|0,0)|0;h=I;e=pk(e|0,M|0,c|0,0)|0;c=I}else c=M;Y=(j|0)>-1|(j|0)==-1&i>>>0>4294967295;Z=Xn(0,0,i|0,j|0)|0;_=Y?j:I;T=(h|0)>-1|(h|0)==-1&g>>>0>4294967295;U=Xn(0,0,g|0,h|0)|0;V=T?h:I;X=(c|0)>-1|(c|0)==-1&e>>>0>4294967295;W=Xn(0,0,e|0,c|0)|0;X=Ho((T?g:U)|0,V|0,(X?e:W)|0,(X?c:I)|0)|0;_=Ho(X|0,I|0,(Y?i:Z)|0,_|0)|0;Z=I;if((Z|0)<0|(Z|0)==0&_>>>0<536870913){f[d>>2]=i;f[d+4>>2]=g;f[d+8>>2]=e;u=N;return}else Ga(11190,11041,117,11147)}function dc(a,c,d){a=a|0;c=c|0;d=d|0;var e=0,g=0,h=0,i=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,v=0,w=0,x=0,y=0,z=0,A=0,B=0,C=0,D=0,E=0,F=0,G=0,H=0,J=0,K=0,L=0,M=0,N=0,O=0,P=0,Q=0,R=0,S=0,T=0,U=0,V=0,W=0,X=0,Y=0;L=u;u=u+96|0;D=L+72|0;G=L+48|0;H=L+24|0;J=L;if(!(f[a>>2]|0))Ga(10673,11041,79,11147);F=a+4|0;if(!(f[F>>2]|0))Ga(10673,11041,79,11147);E=a+12|0;l=f[E>>2]|0;m=f[c>>2]|0;f[D>>2]=l;f[D+4>>2]=m;B=D+8|0;f[B>>2]=m;b[D+12>>0]=1;l=f[(f[l+28>>2]|0)+(m<<2)>>2]|0;C=a+16|0;k=f[C>>2]|0;c=f[k>>2]|0;if((f[k+4>>2]|0)-c>>2>>>0<=l>>>0){Kp(k);c=f[k>>2]|0}kg(G,a,f[c+(l<<2)>>2]|0);a:do if((m|0)>=0){x=H+8|0;t=G+8|0;z=H+16|0;v=G+16|0;w=J+8|0;y=J+16|0;A=m+1|0;A=((A|0)%3|0|0)==0?m+-2|0:A;s=m+(((m>>>0)%3|0|0)==0?2:-1)|0;q=0;p=0;r=0;n=0;l=0;o=0;while(1){if(!(f[a>>2]|0)){c=11;break}if(!(f[F>>2]|0)){c=11;break}m=f[(f[(f[E>>2]|0)+28>>2]|0)+(A<<2)>>2]|0;k=f[C>>2]|0;c=f[k>>2]|0;if((f[k+4>>2]|0)-c>>2>>>0<=m>>>0){Kp(k);c=f[k>>2]|0}kg(H,a,f[c+(m<<2)>>2]|0);if(!(f[a>>2]|0)){c=17;break}if(!(f[F>>2]|0)){c=17;break}m=f[(f[(f[E>>2]|0)+28>>2]|0)+(s<<2)>>2]|0;k=f[C>>2]|0;c=f[k>>2]|0;if((f[k+4>>2]|0)-c>>2>>>0<=m>>>0){Kp(k);c=f[k>>2]|0}kg(J,a,f[c+(m<<2)>>2]|0);M=H;W=G;V=f[W>>2]|0;W=f[W+4>>2]|0;M=Xn(f[M>>2]|0,f[M+4>>2]|0,V|0,W|0)|0;N=I;O=x;Y=t;X=f[Y>>2]|0;Y=f[Y+4>>2]|0;O=Xn(f[O>>2]|0,f[O+4>>2]|0,X|0,Y|0)|0;P=I;R=z;k=v;Q=f[k>>2]|0;k=f[k+4>>2]|0;R=Xn(f[R>>2]|0,f[R+4>>2]|0,Q|0,k|0)|0;S=I;m=J;W=Xn(f[m>>2]|0,f[m+4>>2]|0,V|0,W|0)|0;V=I;m=w;Y=Xn(f[m>>2]|0,f[m+4>>2]|0,X|0,Y|0)|0;X=I;m=y;k=Xn(f[m>>2]|0,f[m+4>>2]|0,Q|0,k|0)|0;Q=I;m=kn(k|0,Q|0,O|0,P|0)|0;c=I;U=kn(Y|0,X|0,R|0,S|0)|0;T=I;S=kn(W|0,V|0,R|0,S|0)|0;R=I;Q=kn(k|0,Q|0,M|0,N|0)|0;k=I;N=kn(Y|0,X|0,M|0,N|0)|0;M=I;P=kn(W|0,V|0,O|0,P|0)|0;O=I;q=Xn(q|0,p|0,U|0,T|0)|0;c=Ho(q|0,I|0,m|0,c|0)|0;m=I;n=Ho(S|0,R|0,r|0,n|0)|0;k=Xn(n|0,I|0,Q|0,k|0)|0;n=I;l=Xn(l|0,o|0,P|0,O|0)|0;l=Ho(l|0,I|0,N|0,M|0)|0;o=I;Pf(D);if((f[B>>2]|0)<0){j=m;i=c;h=n;g=k;K=o;e=l;break a}else{q=c;p=m;r=k}}if((c|0)==11)Ga(10673,11041,63,11169);else if((c|0)==17)Ga(10673,11041,63,11169)}else{j=0;i=0;h=0;g=0;K=0;e=0}while(0);X=(j|0)>-1|(j|0)==-1&i>>>0>4294967295;Y=Xn(0,0,i|0,j|0)|0;c=X?j:I;S=(h|0)>-1|(h|0)==-1&g>>>0>4294967295;T=Xn(0,0,g|0,h|0)|0;U=S?h:I;W=(K|0)>-1|(K|0)==-1&e>>>0>4294967295;V=Xn(0,0,e|0,K|0)|0;W=Ho((S?g:T)|0,U|0,(W?e:V)|0,(W?K:I)|0)|0;c=Ho(W|0,I|0,(X?i:Y)|0,c|0)|0;if((c|0)>536870912){c=Tn(c|0,I|0,29)|0;c=c&7;i=pk(i|0,j|0,c|0,0)|0;j=I;g=pk(g|0,h|0,c|0,0)|0;h=I;e=pk(e|0,K|0,c|0,0)|0;c=I}else c=K;W=(j|0)>-1|(j|0)==-1&i>>>0>4294967295;X=Xn(0,0,i|0,j|0)|0;Y=W?j:I;R=(h|0)>-1|(h|0)==-1&g>>>0>4294967295;S=Xn(0,0,g|0,h|0)|0;T=R?h:I;V=(c|0)>-1|(c|0)==-1&e>>>0>4294967295;U=Xn(0,0,e|0,c|0)|0;V=Ho((R?g:S)|0,T|0,(V?e:U)|0,(V?c:I)|0)|0;Y=Ho(V|0,I|0,(W?i:X)|0,Y|0)|0;X=I;if((X|0)<0|(X|0)==0&Y>>>0<536870913){f[d>>2]=i;f[d+4>>2]=g;f[d+8>>2]=e;u=L;return}else Ga(11190,11041,117,11147)}function ec(a,b){a=a|0;b=b|0;var c=0,d=0,e=0,g=0,h=0,i=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,v=0,w=0,x=0,y=0,z=0;z=u;u=u+32|0;w=z+28|0;t=z+24|0;j=z+20|0;k=z+16|0;l=z+12|0;m=z+8|0;s=z+4|0;v=z;e=f[b>>2]|0;if((e|0)<0){u=z;return}x=(e>>>0)/3|0;q=a+12|0;if(f[(f[q>>2]|0)+(x>>>5<<2)>>2]&1<<(x&31)|0){u=z;return}x=a+56|0;c=f[x>>2]|0;r=a+60|0;d=f[r>>2]|0;if((d|0)!=(c|0)){c=d+(~((d+-4-c|0)>>>2)<<2)|0;f[r>>2]=c}o=a+64|0;if((c|0)==(f[o>>2]|0))Ii(x,b);else{f[c>>2]=e;f[r>>2]=c+4}g=f[a>>2]|0;e=f[b>>2]|0;c=e+1|0;if((e|0)>=0){c=((c|0)%3|0|0)==0?e+-2|0:c;if((c|0)<0)d=-1073741824;else d=f[(f[g>>2]|0)+(c<<2)>>2]|0;c=(((e>>>0)%3|0|0)==0?2:-1)+e|0;if((c|0)<0)i=-1073741824;else i=f[(f[g>>2]|0)+(c<<2)>>2]|0}else{d=-1073741824;i=-1073741824}n=a+24|0;c=f[n>>2]|0;g=c+(d>>>5<<2)|0;h=1<<(d&31);e=f[g>>2]|0;if(!(e&h)){f[g>>2]=e|h;f[j>>2]=d;c=f[b>>2]|0;d=c+1|0;if((c|0)>=0)c=((d|0)%3|0|0)==0?c+-2|0:d;f[k>>2]=c;f[t>>2]=f[j>>2];f[w>>2]=f[k>>2];tg(a+36|0,t,w);c=f[n>>2]|0}d=c+(i>>>5<<2)|0;e=1<<(i&31);c=f[d>>2]|0;if(!(c&e)){f[d>>2]=c|e;d=a+36|0;f[l>>2]=i;c=f[b>>2]|0;do if((c|0)>=0)if(!((c>>>0)%3|0)){c=c+2|0;break}else{c=c+-1|0;break}while(0);f[m>>2]=c;f[t>>2]=f[l>>2];f[w>>2]=f[m>>2];tg(d,t,w)}d=f[x>>2]|0;c=f[r>>2]|0;if((d|0)==(c|0)){u=z;return}k=a+36|0;g=c;while(1){c=f[g+-4>>2]|0;f[b>>2]=c;e=(c|0)/3|0;if((c|0)>=0?(p=f[q>>2]|0,(f[p+(e>>>5<<2)>>2]&1<<(e&31)|0)==0):0){d=p;a:while(1){e=(c|0)/3|0;g=d+(e>>>5<<2)|0;f[g>>2]=1<<(e&31)|f[g>>2];g=f[b>>2]|0;e=f[a>>2]|0;if((g|0)<0)j=-1073741824;else j=f[(f[e>>2]|0)+(g<<2)>>2]|0;d=f[(f[e+24>>2]|0)+(j<<2)>>2]|0;c=d+1|0;if((d|0)>=0){c=((c|0)%3|0|0)==0?d+-2|0:c;if((c|0)>=0){d=f[(f[e+12>>2]|0)+(c<<2)>>2]|0;c=d+1|0;if((d|0)<0)i=d;else i=((c|0)%3|0|0)==0?d+-2|0:c}else i=c}else i=d;d=(f[n>>2]|0)+(j>>>5<<2)|0;h=1<<(j&31);c=f[d>>2]|0;if(!(c&h)){f[d>>2]=c|h;f[s>>2]=j;f[v>>2]=f[b>>2];f[t>>2]=f[s>>2];f[w>>2]=f[v>>2];tg(k,t,w);d=f[a>>2]|0;c=f[b>>2]|0;if((i|0)<0){g=c;e=d;y=41}else{do if((c|0)<0)c=-1073741824;else{m=c+1|0;c=((m|0)%3|0|0)==0?c+-2|0:m;if((c|0)<0)break;c=f[(f[d+12>>2]|0)+(c<<2)>>2]|0}while(0);f[b>>2]=c}}else y=41;if((y|0)==41){y=0;if((g|0)<0){y=44;break}c=g+1|0;c=((c|0)%3|0|0)==0?g+-2|0:c;if((c|0)>=0)c=f[(f[e+12>>2]|0)+(c<<2)>>2]|0;f[w>>2]=c;d=(((g>>>0)%3|0|0)==0?2:-1)+g|0;if((d|0)>=0)d=f[(f[e+12>>2]|0)+(d<<2)>>2]|0;m=(c|0)<0;h=m?-1:(c>>>0)/3|0;g=(d|0)<0;i=g?-1:(d>>>0)/3|0;do if(!m){e=f[q>>2]|0;if(f[e+(h>>>5<<2)>>2]&1<<(h&31)|0){y=49;break}if(g)break;if(!(f[e+(i>>>5<<2)>>2]&1<<(i&31))){y=54;break a}}else y=49;while(0);if((y|0)==49){y=0;if(g){y=51;break}if(!(f[(f[q>>2]|0)+(i>>>5<<2)>>2]&1<<(i&31)))c=d;else{y=51;break}}f[b>>2]=c}d=f[q>>2]|0}do if((y|0)==44){f[w>>2]=-1073741824;y=51}else if((y|0)==54){y=0;c=f[r>>2]|0;f[c+-4>>2]=d;if((c|0)==(f[o>>2]|0)){Ii(x,w);c=f[r>>2]|0;break}else{f[c>>2]=f[w>>2];c=c+4|0;f[r>>2]=c;break}}while(0);if((y|0)==51){y=0;c=(f[r>>2]|0)+-4|0;f[r>>2]=c}d=f[x>>2]|0}else{c=g+-4|0;f[r>>2]=c}if((d|0)==(c|0))break;else g=c}u=z;return}function fc(a,c,d){a=a|0;c=c|0;d=d|0;var e=0,g=0,i=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,v=0,w=0,x=0,y=0,z=0;w=u;u=u+688|0;t=w+680|0;l=w;v=w+8|0;m=w+676|0;n=w+672|0;o=w+668|0;p=w+664|0;q=w+660|0;r=w+656|0;s=w+4|0;i=c+8|0;y=i;g=f[y>>2]|0;y=f[y+4>>2]|0;k=c+16|0;j=k;e=f[j>>2]|0;j=Ho(e|0,f[j+4>>2]|0,4,0)|0;x=I;if((y|0)<(x|0)|(y|0)==(x|0)&g>>>0>>0){y=0;u=w;return y|0}y=(f[c>>2]|0)+e|0;y=h[y>>0]|h[y+1>>0]<<8|h[y+2>>0]<<16|h[y+3>>0]<<24;b[a>>0]=y;b[a+1>>0]=y>>8;b[a+2>>0]=y>>16;b[a+3>>0]=y>>24;y=k;j=f[y>>2]|0;y=f[y+4>>2]|0;e=Ho(j|0,y|0,4,0)|0;g=k;f[g>>2]=e;f[g+4>>2]=I;g=i;x=f[g>>2]|0;g=f[g+4>>2]|0;y=Ho(j|0,y|0,8,0)|0;j=I;if((g|0)<(j|0)|(g|0)==(j|0)&x>>>0>>0){y=0;u=w;return y|0}y=a+4|0;g=(f[c>>2]|0)+e|0;g=h[g>>0]|h[g+1>>0]<<8|h[g+2>>0]<<16|h[g+3>>0]<<24;b[y>>0]=g;b[y+1>>0]=g>>8;b[y+2>>0]=g>>16;b[y+3>>0]=g>>24;y=k;g=f[y>>2]|0;y=f[y+4>>2]|0;e=Ho(g|0,y|0,4,0)|0;j=k;f[j>>2]=e;f[j+4>>2]=I;j=a+12|0;z=i;x=f[z>>2]|0;z=f[z+4>>2]|0;y=Ho(g|0,y|0,8,0)|0;g=I;if((z|0)<(g|0)|(z|0)==(g|0)&x>>>0>>0){z=0;u=w;return z|0}g=(f[c>>2]|0)+e|0;g=h[g>>0]|h[g+1>>0]<<8|h[g+2>>0]<<16|h[g+3>>0]<<24;b[j>>0]=g;b[j+1>>0]=g>>8;b[j+2>>0]=g>>16;b[j+3>>0]=g>>24;z=k;x=f[z>>2]|0;z=f[z+4>>2]|0;e=Ho(x|0,z|0,4,0)|0;y=k;f[y>>2]=e;f[y+4>>2]=I;a=a+16|0;y=f[i>>2]|0;i=f[i+4>>2]|0;z=Ho(x|0,z|0,8,0)|0;x=I;if((i|0)<(x|0)|(i|0)==(x|0)&y>>>0>>0){z=0;u=w;return z|0}e=(f[c>>2]|0)+e|0;e=h[e>>0]|h[e+1>>0]<<8|h[e+2>>0]<<16|h[e+3>>0]<<24;b[a>>0]=e;b[a+1>>0]=e>>8;b[a+2>>0]=e>>16;b[a+3>>0]=e>>24;y=k;y=Ho(f[y>>2]|0,f[y+4>>2]|0,4,0)|0;z=k;f[z>>2]=y;f[z+4>>2]=I;if(e>>>0>6){f[l>>2]=e;In(17659,l)|0;z=0;u=w;return z|0}e=d;a:do if(g|0){Vi(d,g);switch(f[a>>2]|0){case 0:{$h(v,3);f[m>>2]=e;f[t>>2]=f[m>>2];Oe(v,c,t)|0;Uf(v);break a}case 1:{$h(v,3);f[n>>2]=e;f[t>>2]=f[n>>2];Ne(v,c,t)|0;Uf(v);break a}case 2:{ai(v,3);f[o>>2]=e;f[t>>2]=f[o>>2];Qe(v,c,t)|0;Xf(v);break a}case 3:{ai(v,3);f[p>>2]=e;f[t>>2]=f[p>>2];Pe(v,c,t)|0;Xf(v);break a}case 4:{Kh(v,3);f[q>>2]=e;f[t>>2]=f[q>>2];ke(v,c,t)|0;Jf(v);break a}case 5:{Kh(v,3);f[r>>2]=e;f[t>>2]=f[r>>2];je(v,c,t)|0;Jf(v);break a}case 6:{Kh(v,3);f[s>>2]=e;f[t>>2]=f[s>>2];ie(v,c,t)|0;Jf(v);break a}default:{z=0;u=w;return z|0}}}while(0);z=(((f[d+4>>2]|0)-(f[d>>2]|0)|0)/12|0|0)==(f[j>>2]|0);u=w;return z|0}function gc(a,c,d){a=a|0;c=c|0;d=d|0;var e=La,g=0,i=0,j=0,k=La,l=La,m=La;switch(b[a+24>>0]|0){case 1:{i=f[c>>2]|0;c=a+48|0;g=f[c>>2]|0;c=f[c+4>>2]|0;j=a+40|0;c=(Ho(kn(f[j>>2]|0,f[j+4>>2]|0,i|0,((i|0)<0)<<31>>31|0)|0,I|0,g|0,c|0)|0)+(f[f[a>>2]>>2]|0)|0;b[s>>0]=b[c>>0];b[s+1>>0]=b[c+1>>0];b[s+2>>0]=b[c+2>>0];b[s+3>>0]=b[c+3>>0];e=$(n[s>>2]);c=+K(+e)>=1.0?(+e>0.0?~~+Y(+J(+e/4294967296.0),4294967295.0)>>>0:~~+W((+e-+(~~+e>>>0))/4294967296.0)>>>0):0;a=d;f[a>>2]=~~+e>>>0;f[a+4>>2]=c;a=d+8|0;f[a>>2]=0;f[a+4>>2]=0;f[a+8>>2]=0;f[a+12>>2]=0;f[a+16>>2]=0;f[a+20>>2]=0;a=1;return a|0}case 2:{j=f[c>>2]|0;i=a+48|0;g=f[i>>2]|0;i=f[i+4>>2]|0;c=a+40|0;i=(Ho(kn(f[c>>2]|0,f[c+4>>2]|0,j|0,((j|0)<0)<<31>>31|0)|0,I|0,g|0,i|0)|0)+(f[f[a>>2]>>2]|0)|0;g=i;i=i+4|0;i=h[i>>0]|h[i+1>>0]<<8|h[i+2>>0]<<16|h[i+3>>0]<<24;e=(f[s>>2]=h[g>>0]|h[g+1>>0]<<8|h[g+2>>0]<<16|h[g+3>>0]<<24,$(n[s>>2]));g=+K(+e)>=1.0?(+e>0.0?~~+Y(+J(+e/4294967296.0),4294967295.0)>>>0:~~+W((+e-+(~~+e>>>0))/4294967296.0)>>>0):0;j=d;f[j>>2]=~~+e>>>0;f[j+4>>2]=g;e=(f[s>>2]=i,$(n[s>>2]));i=+K(+e)>=1.0?(+e>0.0?~~+Y(+J(+e/4294967296.0),4294967295.0)>>>0:~~+W((+e-+(~~+e>>>0))/4294967296.0)>>>0):0;j=d+8|0;f[j>>2]=~~+e>>>0;f[j+4>>2]=i;j=d+16|0;f[j>>2]=0;f[j+4>>2]=0;f[j+8>>2]=0;f[j+12>>2]=0;j=1;return j|0}case 3:{g=f[c>>2]|0;i=a+48|0;j=f[i>>2]|0;i=f[i+4>>2]|0;c=a+40|0;i=(Ho(kn(f[c>>2]|0,f[c+4>>2]|0,g|0,((g|0)<0)<<31>>31|0)|0,I|0,j|0,i|0)|0)+(f[f[a>>2]>>2]|0)|0;b[s>>0]=b[i>>0];b[s+1>>0]=b[i+1>>0];b[s+2>>0]=b[i+2>>0];b[s+3>>0]=b[i+3>>0];l=$(n[s>>2]);j=i+4|0;b[s>>0]=b[j>>0];b[s+1>>0]=b[j+1>>0];b[s+2>>0]=b[j+2>>0];b[s+3>>0]=b[j+3>>0];k=$(n[s>>2]);i=i+8|0;b[s>>0]=b[i>>0];b[s+1>>0]=b[i+1>>0];b[s+2>>0]=b[i+2>>0];b[s+3>>0]=b[i+3>>0];e=$(n[s>>2]);i=+K(+l)>=1.0?(+l>0.0?~~+Y(+J(+l/4294967296.0),4294967295.0)>>>0:~~+W((+l-+(~~+l>>>0))/4294967296.0)>>>0):0;j=d;f[j>>2]=~~+l>>>0;f[j+4>>2]=i;j=+K(+k)>=1.0?(+k>0.0?~~+Y(+J(+k/4294967296.0),4294967295.0)>>>0:~~+W((+k-+(~~+k>>>0))/4294967296.0)>>>0):0;i=d+8|0;f[i>>2]=~~+k>>>0;f[i+4>>2]=j;i=+K(+e)>=1.0?(+e>0.0?~~+Y(+J(+e/4294967296.0),4294967295.0)>>>0:~~+W((+e-+(~~+e>>>0))/4294967296.0)>>>0):0;j=d+16|0;f[j>>2]=~~+e>>>0;f[j+4>>2]=i;j=d+24|0;f[j>>2]=0;f[j+4>>2]=0;j=1;return j|0}case 4:{g=f[c>>2]|0;j=a+48|0;i=f[j>>2]|0;j=f[j+4>>2]|0;c=a+40|0;j=(Ho(kn(f[c>>2]|0,f[c+4>>2]|0,g|0,((g|0)<0)<<31>>31|0)|0,I|0,i|0,j|0)|0)+(f[f[a>>2]>>2]|0)|0;b[s>>0]=b[j>>0];b[s+1>>0]=b[j+1>>0];b[s+2>>0]=b[j+2>>0];b[s+3>>0]=b[j+3>>0];m=$(n[s>>2]);i=j+4|0;b[s>>0]=b[i>>0];b[s+1>>0]=b[i+1>>0];b[s+2>>0]=b[i+2>>0];b[s+3>>0]=b[i+3>>0];e=$(n[s>>2]);i=j+8|0;b[s>>0]=b[i>>0];b[s+1>>0]=b[i+1>>0];b[s+2>>0]=b[i+2>>0];b[s+3>>0]=b[i+3>>0];k=$(n[s>>2]);j=j+12|0;b[s>>0]=b[j>>0];b[s+1>>0]=b[j+1>>0];b[s+2>>0]=b[j+2>>0];b[s+3>>0]=b[j+3>>0];l=$(n[s>>2]);j=+K(+m)>=1.0?(+m>0.0?~~+Y(+J(+m/4294967296.0),4294967295.0)>>>0:~~+W((+m-+(~~+m>>>0))/4294967296.0)>>>0):0;i=d;f[i>>2]=~~+m>>>0;f[i+4>>2]=j;i=+K(+e)>=1.0?(+e>0.0?~~+Y(+J(+e/4294967296.0),4294967295.0)>>>0:~~+W((+e-+(~~+e>>>0))/4294967296.0)>>>0):0;j=d+8|0;f[j>>2]=~~+e>>>0;f[j+4>>2]=i;j=+K(+k)>=1.0?(+k>0.0?~~+Y(+J(+k/4294967296.0),4294967295.0)>>>0:~~+W((+k-+(~~+k>>>0))/4294967296.0)>>>0):0;i=d+16|0;f[i>>2]=~~+k>>>0;f[i+4>>2]=j;i=+K(+l)>=1.0?(+l>0.0?~~+Y(+J(+l/4294967296.0),4294967295.0)>>>0:~~+W((+l-+(~~+l>>>0))/4294967296.0)>>>0):0;j=d+24|0;f[j>>2]=~~+l>>>0;f[j+4>>2]=i;j=1;return j|0}default:{j=0;return j|0}}return 0}function hc(a,c){a=a|0;c=c|0;var d=0,e=0,g=La,i=La,j=0,k=0,l=0,m=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0,v=0,w=0,x=0,y=La;t=b[c+11>>0]|0;v=t<<24>>24<0;u=v?f[c>>2]|0:c;t=v?f[c+4>>2]|0:t&255;if(t>>>0>3){j=u;m=t;k=t;while(1){v=X(h[j>>0]|h[j+1>>0]<<8|h[j+2>>0]<<16|h[j+3>>0]<<24,1540483477)|0;m=(X(v>>>24^v,1540483477)|0)^(X(m,1540483477)|0);k=k+-4|0;if(k>>>0<=3)break;else j=j+4|0}v=t+-4|0;k=v&-4;l=u+(k+4)|0;j=m;k=v-k|0}else{l=u;j=t;k=t}switch(k|0){case 3:{o=h[l+2>>0]<<16^j;x=6;break}case 2:{o=j;x=6;break}case 1:{p=j;x=7;break}default:q=j}if((x|0)==6){p=h[l+1>>0]<<8^o;x=7}if((x|0)==7)q=X(h[l>>0]^p,1540483477)|0;v=X(q>>>13^q,1540483477)|0;v=v>>>15^v;r=a+4|0;q=f[r>>2]|0;s=(q|0)==0;a:do if(!s){o=q+-1|0;k=(o&q|0)==0;if(k)p=v&o;else p=(v>>>0)%(q>>>0)|0;j=f[(f[a>>2]|0)+(p<<2)>>2]|0;if((j|0)!=0?(e=f[j>>2]|0,(e|0)!=0):0){j=(t|0)==0;if(k){if(j){while(1){if((f[e+4>>2]&o|0)!=(p|0)){d=p;break a}u=b[e+8+11>>0]|0;if(!((u<<24>>24<0?f[e+12>>2]|0:u&255)|0))break;e=f[e>>2]|0;if(!e){d=p;break a}}a=e+20|0;return a|0}b:while(1){if((f[e+4>>2]&o|0)!=(p|0)){d=p;break a}j=e+8|0;l=b[j+11>>0]|0;m=l<<24>>24<0;l=l&255;do if(((m?f[e+12>>2]|0:l)|0)==(t|0)){k=f[j>>2]|0;if(m)if(!(rl(k,u,t)|0)){x=54;break b}else break;if((k&255)<<24>>24==(b[u>>0]|0)){k=u;do{l=l+-1|0;j=j+1|0;if(!l){x=54;break b}k=k+1|0}while((b[j>>0]|0)==(b[k>>0]|0))}}while(0);e=f[e>>2]|0;if(!e){d=p;break a}}if((x|0)==54){a=e+20|0;return a|0}}else{if(j){d=e;while(1){if((((f[d+4>>2]|0)>>>0)%(q>>>0)|0|0)!=(p|0)){d=p;break a}u=b[d+8+11>>0]|0;if(!((u<<24>>24<0?f[d+12>>2]|0:u&255)|0)){e=d;break}d=f[d>>2]|0;if(!d){d=p;break a}}a=e+20|0;return a|0}c:while(1){if((((f[e+4>>2]|0)>>>0)%(q>>>0)|0|0)!=(p|0)){d=p;break a}j=e+8|0;l=b[j+11>>0]|0;m=l<<24>>24<0;l=l&255;do if(((m?f[e+12>>2]|0:l)|0)==(t|0)){k=f[j>>2]|0;if(m)if(!(rl(k,u,t)|0)){x=54;break c}else break;if((k&255)<<24>>24==(b[u>>0]|0)){k=u;do{l=l+-1|0;j=j+1|0;if(!l){x=54;break c}k=k+1|0}while((b[j>>0]|0)==(b[k>>0]|0))}}while(0);e=f[e>>2]|0;if(!e){d=p;break a}}if((x|0)==54){a=e+20|0;return a|0}}}else d=p}else d=0;while(0);l=ln(24)|0;ml(l+8|0,c);f[l+20>>2]=0;f[l+4>>2]=v;f[l>>2]=0;k=a+12|0;i=$(((f[k>>2]|0)+1|0)>>>0);y=$(q>>>0);g=$(n[a+16>>2]);do if(s|i>$(y*g)){d=(q>>>0<3|(q+-1&q|0)!=0)&1|q<<1;e=~~$(W($(i/g)))>>>0;Zh(a,d>>>0>>0?e:d);d=f[r>>2]|0;e=d+-1|0;if(!(e&d)){j=d;d=e&v;break}else{j=d;d=(v>>>0)%(d>>>0)|0;break}}else j=q;while(0);e=(f[a>>2]|0)+(d<<2)|0;d=f[e>>2]|0;if(!d){d=a+8|0;f[l>>2]=f[d>>2];f[d>>2]=l;f[e>>2]=d;d=f[l>>2]|0;if(d|0){d=f[d+4>>2]|0;e=j+-1|0;if(!(e&j))d=d&e;else d=(d>>>0)%(j>>>0)|0;w=(f[a>>2]|0)+(d<<2)|0;x=52}}else{f[l>>2]=f[d>>2];w=d;x=52}if((x|0)==52)f[w>>2]=l;f[k>>2]=(f[k>>2]|0)+1;a=l;a=a+20|0;return a|0}function ic(a,c){a=a|0;c=c|0;var d=0,e=0,g=0,i=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,v=0,w=0,x=0,y=0,z=0,A=0,B=0,C=0,D=0,E=0,F=0,G=0,H=0,J=0;G=u;u=u+80|0;C=G+76|0;B=G;F=G+72|0;A=G+64|0;E=G+68|0;D=a+28|0;do if(((h[(f[D>>2]|0)+36>>0]|0)<<8&65535)<512){x=c+8|0;y=f[x>>2]|0;x=f[x+4>>2]|0;i=c+16|0;e=i;d=f[e>>2]|0;e=Ho(d|0,f[e+4>>2]|0,4,0)|0;g=I;if((x|0)<(g|0)|(x|0)==(g|0)&y>>>0>>0){F=0;u=G;return F|0}else{d=(f[c>>2]|0)+d|0;d=h[d>>0]|h[d+1>>0]<<8|h[d+2>>0]<<16|h[d+3>>0]<<24;f[C>>2]=d;y=i;f[y>>2]=e;f[y+4>>2]=g;break}}else if(yj(C,c)|0){d=f[C>>2]|0;break}else{F=0;u=G;return F|0}while(0);if(!d){F=0;u=G;return F|0}y=a+4|0;x=a+8|0;g=f[x>>2]|0;e=f[y>>2]|0;i=g-e>>2;if(d>>>0>i>>>0){ui(y,d-i|0);if(!(f[C>>2]|0)){F=1;u=G;return F|0}}else if(d>>>0>>0?(j=e+(d<<2)|0,(g|0)!=(j|0)):0)f[x>>2]=g+(~((g+-4-j|0)>>>2)<<2);p=f[a+32>>2]|0;s=c+8|0;v=c+16|0;w=B+60|0;r=p+8|0;q=p+12|0;t=a+16|0;n=a+20|0;o=0;while(1){g=s;e=f[g>>2]|0;g=f[g+4>>2]|0;k=v;a=f[k>>2]|0;k=f[k+4>>2]|0;if(!((g|0)>(k|0)|(g|0)==(k|0)&e>>>0>a>>>0)){d=0;e=53;break}i=f[c>>2]|0;m=b[i+a>>0]|0;d=Ho(a|0,k|0,1,0)|0;l=I;j=v;f[j>>2]=d;f[j+4>>2]=l;if(!((g|0)>(l|0)|(g|0)==(l|0)&e>>>0>d>>>0)){d=0;e=53;break}l=b[i+d>>0]|0;d=Ho(a|0,k|0,2,0)|0;j=I;H=v;f[H>>2]=d;f[H+4>>2]=j;if(!((g|0)>(j|0)|(g|0)==(j|0)&e>>>0>d>>>0)){d=0;e=53;break}j=b[i+d>>0]|0;d=Ho(a|0,k|0,3,0)|0;H=I;J=v;f[J>>2]=d;f[J+4>>2]=H;if(!((g|0)>(H|0)|(g|0)==(H|0)&e>>>0>d>>>0)){d=0;e=53;break}e=b[i+d>>0]|0;J=Ho(a|0,k|0,4,0)|0;d=v;f[d>>2]=J;f[d+4>>2]=I;d=l&255;if((l+-1&255)>10){d=0;e=53;break}Ol(B);J=X(cm(d)|0,j&255)|0;xj(B,m&255,0,j,d,e<<24>>24!=0,J,((J|0)<0)<<31>>31,0,0);J=f[D>>2]|0;if((((h[J+36>>0]|0)<<8|(h[J+37>>0]|0))&65535)>258){yj(F,c)|0;d=f[F>>2]|0}else{H=s;J=f[H>>2]|0;H=f[H+4>>2]|0;e=v;d=f[e>>2]|0;e=Ho(d|0,f[e+4>>2]|0,2,0)|0;g=I;if((H|0)<(g|0)|(H|0)==(g|0)&J>>>0>>0){e=51;break}d=(f[c>>2]|0)+d|0;d=h[d>>0]|h[d+1>>0]<<8;J=v;f[J>>2]=e;f[J+4>>2]=g;d=d&65535;f[F>>2]=d}f[w>>2]=d;a=ln(96)|0;Bl(a,B);f[A>>2]=a;a=ph(p,A)|0;i=f[A>>2]|0;f[A>>2]=0;if(i|0){J=i+88|0;d=f[J>>2]|0;f[J>>2]=0;if(d|0){e=f[d+8>>2]|0;if(e|0){g=d+12|0;if((f[g>>2]|0)!=(e|0))f[g>>2]=e;ar(e)}ar(d)}d=f[i+68>>2]|0;if(d|0){g=i+72|0;e=f[g>>2]|0;if((e|0)!=(d|0))f[g>>2]=e+(~((e+-4-d|0)>>>2)<<2);ar(d)}J=i+64|0;d=f[J>>2]|0;f[J>>2]=0;if(d|0){e=f[d>>2]|0;if(e|0){g=d+4|0;if((f[g>>2]|0)!=(e|0))f[g>>2]=e;ar(e)}ar(d)}ar(i)}if((a|0)<=-1){e=41;break}d=f[r>>2]|0;if(((f[q>>2]|0)-d>>2|0)<=(a|0)){e=43;break}f[(f[d+(a<<2)>>2]|0)+60>>2]=f[F>>2];e=f[y>>2]|0;f[e+(o<<2)>>2]=a;g=f[n>>2]|0;d=f[t>>2]|0;j=g-d>>2;if((a|0)>=(j|0)){i=a+1|0;f[E>>2]=-1;if(i>>>0<=j>>>0){if(i>>>0>>0?(z=d+(i<<2)|0,(g|0)!=(z|0)):0)f[n>>2]=g+(~((g+-4-z|0)>>>2)<<2)}else{ch(t,i-j|0,E);e=f[y>>2]|0;d=f[t>>2]|0}}f[d+(a<<2)>>2]=((f[x>>2]|0)-e>>2)+-1;o=o+1|0;if(o>>>0>=(f[C>>2]|0)>>>0){d=1;e=53;break}}if((e|0)==41)Ga(17188,17204,71,17242);else if((e|0)==43)Ga(17252,17204,72,17242);else if((e|0)==51){J=0;u=G;return J|0}else if((e|0)==53){u=G;return d|0}return 0}function jc(a,c,d){a=a|0;c=c|0;d=d|0;var e=0,g=0,h=0,i=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,v=0,w=0,x=0,y=0,z=0,A=0,B=0,C=0,D=0;D=u;u=u+16|0;A=D+8|0;x=D+4|0;B=D;y=a+64|0;e=f[y>>2]|0;if(((f[e+28>>2]|0)-(f[e+24>>2]|0)|0)<=0){u=D;return}z=c+84|0;t=c+88|0;w=a+52|0;v=d+84|0;m=d+68|0;o=a+56|0;q=a+60|0;l=a+12|0;n=a+28|0;s=a+40|0;p=a+44|0;r=a+48|0;j=0;k=0;a:while(1){h=f[(f[e+24>>2]|0)+(k<<2)>>2]|0;if((h|0)<0)c=j;else{i=j+1|0;d=(h>>>0)/3|0;c=f[z>>2]|0;if((d|0)>=(((f[t>>2]|0)-c|0)/12|0|0)){C=6;break}c=f[c+(d*12|0)+(((h>>>0)%3|0)<<2)>>2]|0;if(!(b[v>>0]|0))c=f[(f[m>>2]|0)+(c<<2)>>2]|0;f[A>>2]=c;d=f[o>>2]|0;if(d>>>0<(f[q>>2]|0)>>>0){f[d>>2]=c;f[o>>2]=d+4}else Ii(w,A);f[A>>2]=h;f[x>>2]=0;b:do if(!(f[(f[l>>2]|0)+(k>>>5<<2)>>2]&1<<(k&31)))c=h;else{c=h+1|0;c=((c|0)%3|0|0)==0?h+-2|0:c;g=f[a>>2]|0;if(!(1<<(c&31)&f[g+(c>>>5<<2)>>2])){if((c|0)>=0){c=f[(f[(f[y>>2]|0)+12>>2]|0)+(c<<2)>>2]|0;d=c+1|0;if((c|0)>=0){c=((d|0)%3|0|0)==0?c+-2|0:d;f[x>>2]=c;if((c|0)<=-1){c=h;break}while(1){f[A>>2]=c;d=c+1|0;d=((d|0)%3|0|0)==0?c+-2|0:d;if(1<<(d&31)&f[g+(d>>>5<<2)>>2]|0){d=-1073741824;break}if((d|0)<0)break;d=f[(f[(f[y>>2]|0)+12>>2]|0)+(d<<2)>>2]|0;e=d+1|0;if((d|0)<0)break;d=((e|0)%3|0|0)==0?d+-2|0:e;f[x>>2]=d;if((d|0)>-1)c=d;else break b}f[x>>2]=d;break}}}else c=-1073741824;f[x>>2]=c;c=h}while(0);f[(f[n>>2]|0)+(c<<2)>>2]=j;c=f[p>>2]|0;if((c|0)==(f[r>>2]|0))Ii(s,A);else{f[c>>2]=f[A>>2];f[p>>2]=c+4}e=f[y>>2]|0;c=f[A>>2]|0;c:do if((c|0)>=0){d=(((c>>>0)%3|0|0)==0?2:-1)+c|0;if((d|0)>=0){d=f[(f[e+12>>2]|0)+(d<<2)>>2]|0;if((d|0)>=0){d=d+(((d>>>0)%3|0|0)==0?2:-1)|0;f[x>>2]=d;if((d|0)>-1&(d|0)!=(c|0)){e=j;while(1){j=d+1|0;j=((j|0)%3|0|0)==0?d+-2|0:j;do if(f[(f[a>>2]|0)+(j>>>5<<2)>>2]&1<<(j&31)){h=i+1|0;e=(d>>>0)/3|0;c=f[z>>2]|0;if((e|0)>=(((f[t>>2]|0)-c|0)/12|0|0)){C=33;break a}c=f[c+(e*12|0)+(((d>>>0)%3|0)<<2)>>2]|0;if(!(b[v>>0]|0))c=f[(f[m>>2]|0)+(c<<2)>>2]|0;f[B>>2]=c;d=f[o>>2]|0;if(d>>>0<(f[q>>2]|0)>>>0){f[d>>2]=c;f[o>>2]=d+4}else Ii(w,B);c=f[p>>2]|0;if((c|0)==(f[r>>2]|0)){Ii(s,x);g=i;c=h;break}else{f[c>>2]=f[x>>2];f[p>>2]=c+4;g=i;c=h;break}}else{g=e;c=i}while(0);f[(f[n>>2]|0)+(f[x>>2]<<2)>>2]=g;e=f[y>>2]|0;d=f[x>>2]|0;if((d|0)<0)break;d=(((d>>>0)%3|0|0)==0?2:-1)+d|0;if((d|0)<0)break;d=f[(f[e+12>>2]|0)+(d<<2)>>2]|0;if((d|0)<0)break;d=d+(((d>>>0)%3|0|0)==0?2:-1)|0;f[x>>2]=d;if(!((d|0)>-1?(d|0)!=(f[A>>2]|0):0))break c;else{e=g;i=c}}f[x>>2]=d}else c=i}else{c=d;C=30}}else{c=d;C=30}}else C=30;while(0);if((C|0)==30){C=0;f[x>>2]=c;c=i}}k=k+1|0;if((k|0)>=((f[e+28>>2]|0)-(f[e+24>>2]|0)>>2|0)){C=3;break}else j=c}if((C|0)==3){u=D;return}else if((C|0)==6)Ga(18176,18147,64,18171);else if((C|0)==33)Ga(18176,18147,64,18171)}function kc(a,b,c,d,e,g){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;g=g|0;var h=0,i=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,B=0,C=0;x=a+8|0;f[x>>2]=e;i=a+32|0;h=a+36|0;g=f[h>>2]|0;d=f[i>>2]|0;j=g-d>>2;if(j>>>0>=e>>>0)if(j>>>0>e>>>0?(k=d+(e<<2)|0,(g|0)!=(k|0)):0){f[h>>2]=g+(~((g+-4-k|0)>>>2)<<2);d=e}else d=e;else{ui(i,e-j|0);d=f[x>>2]|0}u=f[a+48>>2]|0;v=f[a+52>>2]|0;t=e>>>0>1073741823?-1:e<<2;w=Zq(t)|0;ej(w|0,0,t|0)|0;if((d|0)>0){k=a+16|0;h=a+32|0;l=a+12|0;i=0;do{d=f[w+(i<<2)>>2]|0;g=f[k>>2]|0;if((d|0)>(g|0)){j=f[h>>2]|0;f[j+(i<<2)>>2]=g}else{t=f[l>>2]|0;j=f[h>>2]|0;f[j+(i<<2)>>2]=(d|0)<(t|0)?t:d}i=i+1|0;d=f[x>>2]|0}while((i|0)<(d|0));if((d|0)>0){i=a+20|0;h=0;do{d=(f[b+(h<<2)>>2]|0)+(f[j+(h<<2)>>2]|0)|0;g=c+(h<<2)|0;f[g>>2]=d;if((d|0)<=(f[k>>2]|0)){if((d|0)<(f[l>>2]|0)){d=(f[i>>2]|0)+d|0;C=18}}else{d=d-(f[i>>2]|0)|0;C=18}if((C|0)==18){C=0;f[g>>2]=d}h=h+1|0}while((h|0)<(f[x>>2]|0))}}q=a+56|0;h=f[q>>2]|0;g=f[h+4>>2]|0;d=f[h>>2]|0;s=g-d|0;t=s>>2;if((s|0)<=4){_q(w);return 1}r=a+16|0;p=a+32|0;s=a+12|0;o=a+20|0;m=u+12|0;n=(e|0)>0;i=g;a=1;while(1){if(i-d>>2>>>0<=a>>>0){Kp(h);d=f[h>>2]|0}d=f[d+(a<<2)>>2]|0;l=X(a,e)|0;if((d|0)>=0?(B=f[(f[m>>2]|0)+(d<<2)>>2]|0,(B|0)>=0):0){g=f[u>>2]|0;h=f[v>>2]|0;i=f[h+(f[g+(B<<2)>>2]<<2)>>2]|0;d=B+1|0;d=((d|0)%3|0|0)==0?B+-2|0:d;if((d|0)<0)d=-1073741824;else d=f[g+(d<<2)>>2]|0;j=f[h+(d<<2)>>2]|0;d=(((B>>>0)%3|0|0)==0?2:-1)+B|0;if((d|0)<0)d=-1073741824;else d=f[g+(d<<2)>>2]|0;d=f[h+(d<<2)>>2]|0;if((i|0)<(a|0)&(j|0)<(a|0)&(d|0)<(a|0)){i=X(i,e)|0;h=X(j,e)|0;g=X(d,e)|0;if(n){d=0;do{f[w+(d<<2)>>2]=(f[c+(d+g<<2)>>2]|0)+(f[c+(d+h<<2)>>2]|0)-(f[c+(d+i<<2)>>2]|0);d=d+1|0}while((d|0)!=(e|0))}j=b+(l<<2)|0;k=c+(l<<2)|0;if((f[x>>2]|0)>0){h=0;do{d=f[w+(h<<2)>>2]|0;g=f[r>>2]|0;if((d|0)>(g|0)){i=f[p>>2]|0;f[i+(h<<2)>>2]=g}else{g=f[s>>2]|0;i=f[p>>2]|0;f[i+(h<<2)>>2]=(d|0)<(g|0)?g:d}h=h+1|0;d=f[x>>2]|0}while((h|0)<(d|0));if((d|0)>0){h=0;do{d=(f[j+(h<<2)>>2]|0)+(f[i+(h<<2)>>2]|0)|0;g=k+(h<<2)|0;f[g>>2]=d;if((d|0)<=(f[r>>2]|0)){if((d|0)<(f[s>>2]|0)){d=(f[o>>2]|0)+d|0;C=57}}else{d=d-(f[o>>2]|0)|0;C=57}if((C|0)==57){C=0;f[g>>2]=d}h=h+1|0}while((h|0)<(f[x>>2]|0))}}}else C=35}else C=35;if((C|0)==35?(C=0,y=c+((X(a+-1|0,e)|0)<<2)|0,z=b+(l<<2)|0,A=c+(l<<2)|0,(f[x>>2]|0)>0):0){h=0;do{d=f[y+(h<<2)>>2]|0;g=f[r>>2]|0;if((d|0)>(g|0)){i=f[p>>2]|0;f[i+(h<<2)>>2]=g}else{l=f[s>>2]|0;i=f[p>>2]|0;f[i+(h<<2)>>2]=(d|0)<(l|0)?l:d}h=h+1|0;d=f[x>>2]|0}while((h|0)<(d|0));if((d|0)>0){h=0;do{d=(f[z+(h<<2)>>2]|0)+(f[i+(h<<2)>>2]|0)|0;g=A+(h<<2)|0;f[g>>2]=d;if((d|0)<=(f[r>>2]|0)){if((d|0)<(f[s>>2]|0)){d=(f[o>>2]|0)+d|0;C=45}}else{d=d-(f[o>>2]|0)|0;C=45}if((C|0)==45){C=0;f[g>>2]=d}h=h+1|0}while((h|0)<(f[x>>2]|0))}}g=a+1|0;if((g|0)>=(t|0))break;h=f[q>>2]|0;d=f[h>>2]|0;i=f[h+4>>2]|0;a=g}_q(w);return 1}function lc(a,b,c,d,e,g){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;g=g|0;var h=0,i=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,B=0,C=0,D=0,E=0,F=0,G=0;y=a+8|0;f[y>>2]=e;i=a+32|0;h=a+36|0;g=f[h>>2]|0;d=f[i>>2]|0;j=g-d>>2;if(j>>>0>=e>>>0)if(j>>>0>e>>>0?(k=d+(e<<2)|0,(g|0)!=(k|0)):0){f[h>>2]=g+(~((g+-4-k|0)>>>2)<<2);d=e}else d=e;else{ui(i,e-j|0);d=f[y>>2]|0}v=f[a+48>>2]|0;w=f[a+52>>2]|0;u=e>>>0>1073741823?-1:e<<2;x=Zq(u)|0;ej(x|0,0,u|0)|0;if((d|0)>0){k=a+16|0;h=a+32|0;l=a+12|0;i=0;do{d=f[x+(i<<2)>>2]|0;g=f[k>>2]|0;if((d|0)>(g|0)){j=f[h>>2]|0;f[j+(i<<2)>>2]=g}else{u=f[l>>2]|0;j=f[h>>2]|0;f[j+(i<<2)>>2]=(d|0)<(u|0)?u:d}i=i+1|0;d=f[y>>2]|0}while((i|0)<(d|0));if((d|0)>0){i=a+20|0;h=0;do{d=(f[b+(h<<2)>>2]|0)+(f[j+(h<<2)>>2]|0)|0;g=c+(h<<2)|0;f[g>>2]=d;if((d|0)<=(f[k>>2]|0)){if((d|0)<(f[l>>2]|0)){d=(f[i>>2]|0)+d|0;G=18}}else{d=d-(f[i>>2]|0)|0;G=18}if((G|0)==18){G=0;f[g>>2]=d}h=h+1|0}while((h|0)<(f[y>>2]|0))}}r=a+56|0;h=f[r>>2]|0;g=f[h+4>>2]|0;d=f[h>>2]|0;t=g-d|0;u=t>>2;if((t|0)<=4){_q(x);return 1}s=a+16|0;q=a+32|0;t=a+12|0;p=a+20|0;o=v+64|0;m=v+28|0;n=(e|0)>0;i=g;a=1;while(1){if(i-d>>2>>>0<=a>>>0){Kp(h);d=f[h>>2]|0}d=f[d+(a<<2)>>2]|0;l=X(a,e)|0;if((!((d|0)<0?1:(1<<(d&31)&f[(f[v>>2]|0)+(d>>>5<<2)>>2]|0)!=0)?(F=f[(f[(f[o>>2]|0)+12>>2]|0)+(d<<2)>>2]|0,(F|0)>=0):0)?(B=f[m>>2]|0,k=f[w>>2]|0,z=f[k+(f[B+(F<<2)>>2]<<2)>>2]|0,A=F+1|0,A=f[k+(f[B+((((A|0)%3|0|0)==0?F+-2|0:A)<<2)>>2]<<2)>>2]|0,B=f[k+(f[B+((((F>>>0)%3|0|0)==0?2:-1)+F<<2)>>2]<<2)>>2]|0,(z|0)<(a|0)&(A|0)<(a|0)&(B|0)<(a|0)):0){g=X(z,e)|0;h=X(A,e)|0;i=X(B,e)|0;if(n){d=0;do{f[x+(d<<2)>>2]=(f[c+(d+i<<2)>>2]|0)+(f[c+(d+h<<2)>>2]|0)-(f[c+(d+g<<2)>>2]|0);d=d+1|0}while((d|0)!=(e|0))}j=b+(l<<2)|0;k=c+(l<<2)|0;if((f[y>>2]|0)>0){h=0;do{d=f[x+(h<<2)>>2]|0;g=f[s>>2]|0;if((d|0)>(g|0)){i=f[q>>2]|0;f[i+(h<<2)>>2]=g}else{g=f[t>>2]|0;i=f[q>>2]|0;f[i+(h<<2)>>2]=(d|0)<(g|0)?g:d}h=h+1|0;d=f[y>>2]|0}while((h|0)<(d|0));if((d|0)>0){h=0;do{d=(f[j+(h<<2)>>2]|0)+(f[i+(h<<2)>>2]|0)|0;g=k+(h<<2)|0;f[g>>2]=d;if((d|0)<=(f[s>>2]|0)){if((d|0)<(f[t>>2]|0)){d=(f[p>>2]|0)+d|0;G=53}}else{d=d-(f[p>>2]|0)|0;G=53}if((G|0)==53){G=0;f[g>>2]=d}h=h+1|0}while((h|0)<(f[y>>2]|0))}}}else G=31;if((G|0)==31?(G=0,C=c+((X(a+-1|0,e)|0)<<2)|0,D=b+(l<<2)|0,E=c+(l<<2)|0,(f[y>>2]|0)>0):0){h=0;do{d=f[C+(h<<2)>>2]|0;g=f[s>>2]|0;if((d|0)>(g|0)){i=f[q>>2]|0;f[i+(h<<2)>>2]=g}else{l=f[t>>2]|0;i=f[q>>2]|0;f[i+(h<<2)>>2]=(d|0)<(l|0)?l:d}h=h+1|0;d=f[y>>2]|0}while((h|0)<(d|0));if((d|0)>0){h=0;do{d=(f[D+(h<<2)>>2]|0)+(f[i+(h<<2)>>2]|0)|0;g=E+(h<<2)|0;f[g>>2]=d;if((d|0)<=(f[s>>2]|0)){if((d|0)<(f[t>>2]|0)){d=(f[p>>2]|0)+d|0;G=41}}else{d=d-(f[p>>2]|0)|0;G=41}if((G|0)==41){G=0;f[g>>2]=d}h=h+1|0}while((h|0)<(f[y>>2]|0))}}g=a+1|0;if((g|0)>=(u|0))break;h=f[r>>2]|0;d=f[h>>2]|0;i=f[h+4>>2]|0;a=g}_q(x);return 1}function mc(a,c,d){a=a|0;c=c|0;d=d|0;var e=La,g=0,i=0,j=0,k=La,l=La;switch(b[a+24>>0]|0){case 1:{i=f[c>>2]|0;c=a+48|0;g=f[c>>2]|0;c=f[c+4>>2]|0;j=a+40|0;c=(Ho(kn(f[j>>2]|0,f[j+4>>2]|0,i|0,((i|0)<0)<<31>>31|0)|0,I|0,g|0,c|0)|0)+(f[f[a>>2]>>2]|0)|0;b[s>>0]=b[c>>0];b[s+1>>0]=b[c+1>>0];b[s+2>>0]=b[c+2>>0];b[s+3>>0]=b[c+3>>0];e=$(n[s>>2]);c=+K(+e)>=1.0?(+e>0.0?~~+Y(+J(+e/4294967296.0),4294967295.0)>>>0:~~+W((+e-+(~~+e>>>0))/4294967296.0)>>>0):0;a=d;f[a>>2]=~~+e>>>0;f[a+4>>2]=c;a=d+8|0;f[a>>2]=0;f[a+4>>2]=0;f[a+8>>2]=0;f[a+12>>2]=0;a=1;return a|0}case 2:{j=f[c>>2]|0;i=a+48|0;g=f[i>>2]|0;i=f[i+4>>2]|0;c=a+40|0;i=(Ho(kn(f[c>>2]|0,f[c+4>>2]|0,j|0,((j|0)<0)<<31>>31|0)|0,I|0,g|0,i|0)|0)+(f[f[a>>2]>>2]|0)|0;g=i;i=i+4|0;i=h[i>>0]|h[i+1>>0]<<8|h[i+2>>0]<<16|h[i+3>>0]<<24;e=(f[s>>2]=h[g>>0]|h[g+1>>0]<<8|h[g+2>>0]<<16|h[g+3>>0]<<24,$(n[s>>2]));g=+K(+e)>=1.0?(+e>0.0?~~+Y(+J(+e/4294967296.0),4294967295.0)>>>0:~~+W((+e-+(~~+e>>>0))/4294967296.0)>>>0):0;j=d;f[j>>2]=~~+e>>>0;f[j+4>>2]=g;e=(f[s>>2]=i,$(n[s>>2]));i=+K(+e)>=1.0?(+e>0.0?~~+Y(+J(+e/4294967296.0),4294967295.0)>>>0:~~+W((+e-+(~~+e>>>0))/4294967296.0)>>>0):0;j=d+8|0;f[j>>2]=~~+e>>>0;f[j+4>>2]=i;j=d+16|0;f[j>>2]=0;f[j+4>>2]=0;j=1;return j|0}case 3:{g=f[c>>2]|0;i=a+48|0;j=f[i>>2]|0;i=f[i+4>>2]|0;c=a+40|0;i=(Ho(kn(f[c>>2]|0,f[c+4>>2]|0,g|0,((g|0)<0)<<31>>31|0)|0,I|0,j|0,i|0)|0)+(f[f[a>>2]>>2]|0)|0;b[s>>0]=b[i>>0];b[s+1>>0]=b[i+1>>0];b[s+2>>0]=b[i+2>>0];b[s+3>>0]=b[i+3>>0];l=$(n[s>>2]);j=i+4|0;b[s>>0]=b[j>>0];b[s+1>>0]=b[j+1>>0];b[s+2>>0]=b[j+2>>0];b[s+3>>0]=b[j+3>>0];k=$(n[s>>2]);i=i+8|0;b[s>>0]=b[i>>0];b[s+1>>0]=b[i+1>>0];b[s+2>>0]=b[i+2>>0];b[s+3>>0]=b[i+3>>0];e=$(n[s>>2]);i=+K(+l)>=1.0?(+l>0.0?~~+Y(+J(+l/4294967296.0),4294967295.0)>>>0:~~+W((+l-+(~~+l>>>0))/4294967296.0)>>>0):0;j=d;f[j>>2]=~~+l>>>0;f[j+4>>2]=i;j=+K(+k)>=1.0?(+k>0.0?~~+Y(+J(+k/4294967296.0),4294967295.0)>>>0:~~+W((+k-+(~~+k>>>0))/4294967296.0)>>>0):0;i=d+8|0;f[i>>2]=~~+k>>>0;f[i+4>>2]=j;i=+K(+e)>=1.0?(+e>0.0?~~+Y(+J(+e/4294967296.0),4294967295.0)>>>0:~~+W((+e-+(~~+e>>>0))/4294967296.0)>>>0):0;j=d+16|0;f[j>>2]=~~+e>>>0;f[j+4>>2]=i;j=1;return j|0}case 4:{g=f[c>>2]|0;i=a+48|0;j=f[i>>2]|0;i=f[i+4>>2]|0;c=a+40|0;i=(Ho(kn(f[c>>2]|0,f[c+4>>2]|0,g|0,((g|0)<0)<<31>>31|0)|0,I|0,j|0,i|0)|0)+(f[f[a>>2]>>2]|0)|0;b[s>>0]=b[i>>0];b[s+1>>0]=b[i+1>>0];b[s+2>>0]=b[i+2>>0];b[s+3>>0]=b[i+3>>0];e=$(n[s>>2]);j=i+4|0;b[s>>0]=b[j>>0];b[s+1>>0]=b[j+1>>0];b[s+2>>0]=b[j+2>>0];b[s+3>>0]=b[j+3>>0];k=$(n[s>>2]);i=i+8|0;b[s>>0]=b[i>>0];b[s+1>>0]=b[i+1>>0];b[s+2>>0]=b[i+2>>0];b[s+3>>0]=b[i+3>>0];l=$(n[s>>2]);i=+K(+e)>=1.0?(+e>0.0?~~+Y(+J(+e/4294967296.0),4294967295.0)>>>0:~~+W((+e-+(~~+e>>>0))/4294967296.0)>>>0):0;j=d;f[j>>2]=~~+e>>>0;f[j+4>>2]=i;j=+K(+k)>=1.0?(+k>0.0?~~+Y(+J(+k/4294967296.0),4294967295.0)>>>0:~~+W((+k-+(~~+k>>>0))/4294967296.0)>>>0):0;i=d+8|0;f[i>>2]=~~+k>>>0;f[i+4>>2]=j;i=+K(+l)>=1.0?(+l>0.0?~~+Y(+J(+l/4294967296.0),4294967295.0)>>>0:~~+W((+l-+(~~+l>>>0))/4294967296.0)>>>0):0;j=d+16|0;f[j>>2]=~~+l>>>0;f[j+4>>2]=i;j=1;return j|0}default:{j=0;return j|0}}return 0}function nc(a,b,c,d,e,g,h){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;g=g|0;h=h|0;switch(c|0){case 1:{b=ln(60)|0;f[b>>2]=1832;f[b+4>>2]=d;d=b+8|0;f[d>>2]=f[e>>2];f[d+4>>2]=f[e+4>>2];f[d+8>>2]=f[e+8>>2];f[d+12>>2]=f[e+12>>2];f[d+16>>2]=f[e+16>>2];f[d+20>>2]=f[e+20>>2];Fj(b+32|0,e+24|0);e=b+44|0;f[e>>2]=f[g>>2];f[e+4>>2]=f[g+4>>2];f[e+8>>2]=f[g+8>>2];f[e+12>>2]=f[g+12>>2];f[b>>2]=2280;e=b;f[a>>2]=e;return}case 2:{b=ln(60)|0;f[b>>2]=1832;f[b+4>>2]=d;d=b+8|0;f[d>>2]=f[e>>2];f[d+4>>2]=f[e+4>>2];f[d+8>>2]=f[e+8>>2];f[d+12>>2]=f[e+12>>2];f[d+16>>2]=f[e+16>>2];f[d+20>>2]=f[e+20>>2];Fj(b+32|0,e+24|0);e=b+44|0;f[e>>2]=f[g>>2];f[e+4>>2]=f[g+4>>2];f[e+8>>2]=f[g+8>>2];f[e+12>>2]=f[g+12>>2];f[b>>2]=2336;e=b;f[a>>2]=e;return}case 4:{b=ln(112)|0;f[b>>2]=1832;f[b+4>>2]=d;h=b+8|0;f[h>>2]=f[e>>2];f[h+4>>2]=f[e+4>>2];f[h+8>>2]=f[e+8>>2];f[h+12>>2]=f[e+12>>2];f[h+16>>2]=f[e+16>>2];f[h+20>>2]=f[e+20>>2];Fj(b+32|0,e+24|0);h=b+44|0;f[h>>2]=f[g>>2];f[h+4>>2]=f[g+4>>2];f[h+8>>2]=f[g+8>>2];f[h+12>>2]=f[g+12>>2];f[b>>2]=2392;h=b+60|0;c=h+52|0;do{f[h>>2]=0;h=h+4|0}while((h|0)<(c|0));e=b;f[a>>2]=e;return}case 3:{b=ln(92)|0;f[b>>2]=1832;f[b+4>>2]=d;d=b+8|0;f[d>>2]=f[e>>2];f[d+4>>2]=f[e+4>>2];f[d+8>>2]=f[e+8>>2];f[d+12>>2]=f[e+12>>2];f[d+16>>2]=f[e+16>>2];f[d+20>>2]=f[e+20>>2];Fj(b+32|0,e+24|0);e=b+44|0;f[e>>2]=f[g>>2];f[e+4>>2]=f[g+4>>2];f[e+8>>2]=f[g+8>>2];f[e+12>>2]=f[g+12>>2];f[b>>2]=2448;e=b+60|0;f[e>>2]=0;f[e+4>>2]=0;f[e+8>>2]=0;f[e+12>>2]=0;f[e+16>>2]=0;f[e+20>>2]=0;f[e+24>>2]=0;f[b+88>>2]=h&65535;e=b;f[a>>2]=e;return}case 5:{b=ln(104)|0;f[b>>2]=1832;f[b+4>>2]=d;d=b+8|0;f[d>>2]=f[e>>2];f[d+4>>2]=f[e+4>>2];f[d+8>>2]=f[e+8>>2];f[d+12>>2]=f[e+12>>2];f[d+16>>2]=f[e+16>>2];f[d+20>>2]=f[e+20>>2];Fj(b+32|0,e+24|0);e=b+44|0;f[e>>2]=f[g>>2];f[e+4>>2]=f[g+4>>2];f[e+8>>2]=f[g+8>>2];f[e+12>>2]=f[g+12>>2];f[b>>2]=2504;f[b+60>>2]=0;f[b+64>>2]=0;f[b+76>>2]=0;f[b+80>>2]=0;f[b+84>>2]=0;e=b+88|0;f[e>>2]=f[g>>2];f[e+4>>2]=f[g+4>>2];f[e+8>>2]=f[g+8>>2];f[e+12>>2]=f[g+12>>2];e=b;f[a>>2]=e;return}case 6:{b=ln(116)|0;f[b>>2]=1832;f[b+4>>2]=d;d=b+8|0;f[d>>2]=f[e>>2];f[d+4>>2]=f[e+4>>2];f[d+8>>2]=f[e+8>>2];f[d+12>>2]=f[e+12>>2];f[d+16>>2]=f[e+16>>2];f[d+20>>2]=f[e+20>>2];Fj(b+32|0,e+24|0);e=b+44|0;f[e>>2]=f[g>>2];f[e+4>>2]=f[g+4>>2];f[e+8>>2]=f[g+8>>2];f[e+12>>2]=f[g+12>>2];f[b>>2]=2560;f[b+60>>2]=0;f[b+64>>2]=0;e=b+68|0;f[e>>2]=f[g>>2];f[e+4>>2]=f[g+4>>2];f[e+8>>2]=f[g+8>>2];f[e+12>>2]=f[g+12>>2];e=b+84|0;f[e>>2]=-1;f[e+4>>2]=-1;f[e+8>>2]=-1;f[e+12>>2]=-1;xq(b+100|0);e=b;f[a>>2]=e;return}default:{e=0;f[a>>2]=e;return}}}function oc(a,b,c,d,e,g,h){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;g=g|0;h=h|0;switch(c|0){case 1:{b=ln(60)|0;f[b>>2]=1832;f[b+4>>2]=d;d=b+8|0;f[d>>2]=f[e>>2];f[d+4>>2]=f[e+4>>2];f[d+8>>2]=f[e+8>>2];f[d+12>>2]=f[e+12>>2];f[d+16>>2]=f[e+16>>2];f[d+20>>2]=f[e+20>>2];Fj(b+32|0,e+24|0);e=b+44|0;f[e>>2]=f[g>>2];f[e+4>>2]=f[g+4>>2];f[e+8>>2]=f[g+8>>2];f[e+12>>2]=f[g+12>>2];f[b>>2]=1944;e=b;f[a>>2]=e;return}case 2:{b=ln(60)|0;f[b>>2]=1832;f[b+4>>2]=d;d=b+8|0;f[d>>2]=f[e>>2];f[d+4>>2]=f[e+4>>2];f[d+8>>2]=f[e+8>>2];f[d+12>>2]=f[e+12>>2];f[d+16>>2]=f[e+16>>2];f[d+20>>2]=f[e+20>>2];Fj(b+32|0,e+24|0);e=b+44|0;f[e>>2]=f[g>>2];f[e+4>>2]=f[g+4>>2];f[e+8>>2]=f[g+8>>2];f[e+12>>2]=f[g+12>>2];f[b>>2]=2e3;e=b;f[a>>2]=e;return}case 4:{b=ln(112)|0;f[b>>2]=1832;f[b+4>>2]=d;h=b+8|0;f[h>>2]=f[e>>2];f[h+4>>2]=f[e+4>>2];f[h+8>>2]=f[e+8>>2];f[h+12>>2]=f[e+12>>2];f[h+16>>2]=f[e+16>>2];f[h+20>>2]=f[e+20>>2];Fj(b+32|0,e+24|0);h=b+44|0;f[h>>2]=f[g>>2];f[h+4>>2]=f[g+4>>2];f[h+8>>2]=f[g+8>>2];f[h+12>>2]=f[g+12>>2];f[b>>2]=2056;h=b+60|0;c=h+52|0;do{f[h>>2]=0;h=h+4|0}while((h|0)<(c|0));e=b;f[a>>2]=e;return}case 3:{b=ln(92)|0;f[b>>2]=1832;f[b+4>>2]=d;d=b+8|0;f[d>>2]=f[e>>2];f[d+4>>2]=f[e+4>>2];f[d+8>>2]=f[e+8>>2];f[d+12>>2]=f[e+12>>2];f[d+16>>2]=f[e+16>>2];f[d+20>>2]=f[e+20>>2];Fj(b+32|0,e+24|0);e=b+44|0;f[e>>2]=f[g>>2];f[e+4>>2]=f[g+4>>2];f[e+8>>2]=f[g+8>>2];f[e+12>>2]=f[g+12>>2];f[b>>2]=2112;e=b+60|0;f[e>>2]=0;f[e+4>>2]=0;f[e+8>>2]=0;f[e+12>>2]=0;f[e+16>>2]=0;f[e+20>>2]=0;f[e+24>>2]=0;f[b+88>>2]=h&65535;e=b;f[a>>2]=e;return}case 5:{b=ln(104)|0;f[b>>2]=1832;f[b+4>>2]=d;d=b+8|0;f[d>>2]=f[e>>2];f[d+4>>2]=f[e+4>>2];f[d+8>>2]=f[e+8>>2];f[d+12>>2]=f[e+12>>2];f[d+16>>2]=f[e+16>>2];f[d+20>>2]=f[e+20>>2];Fj(b+32|0,e+24|0);e=b+44|0;f[e>>2]=f[g>>2];f[e+4>>2]=f[g+4>>2];f[e+8>>2]=f[g+8>>2];f[e+12>>2]=f[g+12>>2];f[b>>2]=2168;f[b+60>>2]=0;f[b+64>>2]=0;f[b+76>>2]=0;f[b+80>>2]=0;f[b+84>>2]=0;e=b+88|0;f[e>>2]=f[g>>2];f[e+4>>2]=f[g+4>>2];f[e+8>>2]=f[g+8>>2];f[e+12>>2]=f[g+12>>2];e=b;f[a>>2]=e;return}case 6:{b=ln(116)|0;f[b>>2]=1832;f[b+4>>2]=d;d=b+8|0;f[d>>2]=f[e>>2];f[d+4>>2]=f[e+4>>2];f[d+8>>2]=f[e+8>>2];f[d+12>>2]=f[e+12>>2];f[d+16>>2]=f[e+16>>2];f[d+20>>2]=f[e+20>>2];Fj(b+32|0,e+24|0);e=b+44|0;f[e>>2]=f[g>>2];f[e+4>>2]=f[g+4>>2];f[e+8>>2]=f[g+8>>2];f[e+12>>2]=f[g+12>>2];f[b>>2]=2224;f[b+60>>2]=0;f[b+64>>2]=0;e=b+68|0;f[e>>2]=f[g>>2];f[e+4>>2]=f[g+4>>2];f[e+8>>2]=f[g+8>>2];f[e+12>>2]=f[g+12>>2];e=b+84|0;f[e>>2]=-1;f[e+4>>2]=-1;f[e+8>>2]=-1;f[e+12>>2]=-1;xq(b+100|0);e=b;f[a>>2]=e;return}default:{e=0;f[a>>2]=e;return}}}function pc(a,c,d){a=a|0;c=c|0;d=d|0;var e=0,g=0,i=0,j=0,k=0,l=0,m=0,n=0,o=0;l=u;u=u+16|0;k=l;i=c+8|0;o=i;m=f[o>>2]|0;o=f[o+4>>2]|0;j=c+16|0;g=j;e=f[g>>2]|0;g=Ho(e|0,f[g+4>>2]|0,5,0)|0;n=I;if((o|0)<(n|0)|(o|0)==(n|0)&m>>>0>>0){f[k>>2]=0;f[k+4>>2]=0;f[k+8>>2]=0;Pj(k,6402,29);f[a>>2]=-2;ml(a+4|0,k);Lo(k);u=l;return}e=(f[c>>2]|0)+e|0;b[d>>0]=b[e>>0]|0;b[d+1>>0]=b[e+1>>0]|0;b[d+2>>0]=b[e+2>>0]|0;b[d+3>>0]=b[e+3>>0]|0;b[d+4>>0]=b[e+4>>0]|0;e=j;e=Ho(f[e>>2]|0,f[e+4>>2]|0,5,0)|0;g=I;o=j;f[o>>2]=e;f[o+4>>2]=g;if(rl(d,6432,5)|0){f[k>>2]=0;f[k+4>>2]=0;f[k+8>>2]=0;Pj(k,6438,17);f[a>>2]=-1;ml(a+4|0,k);Lo(k);u=l;return}o=i;n=f[o+4>>2]|0;if(!((n|0)>(g|0)|((n|0)==(g|0)?(f[o>>2]|0)>>>0>e>>>0:0))){f[k>>2]=0;f[k+4>>2]=0;f[k+8>>2]=0;Pj(k,6402,29);f[a>>2]=-2;ml(a+4|0,k);Lo(k);u=l;return}b[d+5>>0]=b[(f[c>>2]|0)+e>>0]|0;e=j;e=Ho(f[e>>2]|0,f[e+4>>2]|0,1,0)|0;n=I;o=j;f[o>>2]=e;f[o+4>>2]=n;o=i;m=f[o+4>>2]|0;if(!((m|0)>(n|0)|((m|0)==(n|0)?(f[o>>2]|0)>>>0>e>>>0:0))){f[k>>2]=0;f[k+4>>2]=0;f[k+8>>2]=0;Pj(k,6402,29);f[a>>2]=-2;ml(a+4|0,k);Lo(k);u=l;return}b[d+6>>0]=b[(f[c>>2]|0)+e>>0]|0;e=j;e=Ho(f[e>>2]|0,f[e+4>>2]|0,1,0)|0;n=I;o=j;f[o>>2]=e;f[o+4>>2]=n;o=i;m=f[o+4>>2]|0;if(!((m|0)>(n|0)|((m|0)==(n|0)?(f[o>>2]|0)>>>0>e>>>0:0))){f[k>>2]=0;f[k+4>>2]=0;f[k+8>>2]=0;Pj(k,6402,29);f[a>>2]=-2;ml(a+4|0,k);Lo(k);u=l;return}b[d+7>>0]=b[(f[c>>2]|0)+e>>0]|0;e=j;e=Ho(f[e>>2]|0,f[e+4>>2]|0,1,0)|0;n=I;o=j;f[o>>2]=e;f[o+4>>2]=n;o=i;m=f[o+4>>2]|0;if(!((m|0)>(n|0)|((m|0)==(n|0)?(f[o>>2]|0)>>>0>e>>>0:0))){f[k>>2]=0;f[k+4>>2]=0;f[k+8>>2]=0;Pj(k,6402,29);f[a>>2]=-2;ml(a+4|0,k);Lo(k);u=l;return}b[d+8>>0]=b[(f[c>>2]|0)+e>>0]|0;o=j;m=f[o>>2]|0;o=f[o+4>>2]|0;e=Ho(m|0,o|0,1,0)|0;n=j;f[n>>2]=e;f[n+4>>2]=I;n=f[i>>2]|0;i=f[i+4>>2]|0;o=Ho(m|0,o|0,3,0)|0;m=I;if((i|0)<(m|0)|(i|0)==(m|0)&n>>>0>>0){f[k>>2]=0;f[k+4>>2]=0;f[k+8>>2]=0;Pj(k,6402,29);f[a>>2]=-2;ml(a+4|0,k);Lo(k);u=l;return}else{n=d+10|0;o=(f[c>>2]|0)+e|0;o=h[o>>0]|h[o+1>>0]<<8;b[n>>0]=o;b[n+1>>0]=o>>8;n=j;n=Ho(f[n>>2]|0,f[n+4>>2]|0,2,0)|0;o=j;f[o>>2]=n;f[o+4>>2]=I;f[a>>2]=0;f[a+4>>2]=0;f[a+8>>2]=0;f[a+12>>2]=0;u=l;return}}function qc(a){a=a|0;var b=0,c=0,d=0,e=0,g=0,h=0,i=0,j=0,k=0,l=0,m=0,n=0,o=0;o=u;u=u+32|0;k=o+4|0;j=o;c=a+16|0;b=f[c>>2]|0;if(b>>>0>340){f[c>>2]=b+-341;l=a+4|0;k=f[l>>2]|0;m=f[k>>2]|0;k=k+4|0;f[l>>2]=k;n=a+8|0;b=f[n>>2]|0;j=a+12|0;i=f[j>>2]|0;d=i;g=b;do if((b|0)==(i|0)){c=f[a>>2]|0;e=c;if(k>>>0>c>>>0){b=k;e=((b-e>>2)+1|0)/-2|0;d=k+(e<<2)|0;b=g-b|0;c=b>>2;if(!c)b=k;else{rm(d|0,k|0,b|0)|0;b=f[l>>2]|0}a=d+(c<<2)|0;f[n>>2]=a;f[l>>2]=b+(e<<2);b=a;break}d=d-e>>1;d=(d|0)==0?1:d;if(d>>>0>1073741823){o=Ia(4)|0;Eq(o);sa(o|0,1344,125)}g=ln(d<<2)|0;h=g;e=g+(d>>>2<<2)|0;i=e;g=g+(d<<2)|0;if((k|0)==(b|0))b=i;else{d=e;c=k;e=i;do{f[d>>2]=f[c>>2];d=e+4|0;e=d;c=c+4|0}while((c|0)!=(b|0));c=f[a>>2]|0;b=e}f[a>>2]=h;f[l>>2]=i;f[n>>2]=b;f[j>>2]=g;if(c){ar(c);b=f[n>>2]|0}}while(0);f[b>>2]=m;f[n>>2]=(f[n>>2]|0)+4;u=o;return}n=a+8|0;b=f[n>>2]|0;m=a+4|0;e=b-(f[m>>2]|0)|0;l=a+12|0;c=f[l>>2]|0;d=c-(f[a>>2]|0)|0;if(e>>>0>=d>>>0){b=d>>1;b=(b|0)==0?1:b;f[k+12>>2]=0;f[k+16>>2]=a+12;if(b>>>0>1073741823){o=Ia(4)|0;Eq(o);sa(o|0,1344,125)}d=ln(b<<2)|0;f[k>>2]=d;h=d+(e>>2<<2)|0;i=k+8|0;f[i>>2]=h;g=k+4|0;f[g>>2]=h;h=k+12|0;f[h>>2]=d+(b<<2);e=ln(4092)|0;f[j>>2]=e;Gg(k,j);e=f[n>>2]|0;while(1){b=f[m>>2]|0;if((e|0)==(b|0))break;j=e+-4|0;Ag(k,j);e=j}c=b;d=f[a>>2]|0;f[a>>2]=f[k>>2];f[k>>2]=d;f[m>>2]=f[g>>2];f[g>>2]=c;b=f[n>>2]|0;f[n>>2]=f[i>>2];f[i>>2]=b;a=f[l>>2]|0;f[l>>2]=f[h>>2];f[h>>2]=a;if((b|0)!=(e|0))f[i>>2]=b+(~((b+-4-c|0)>>>2)<<2);if(d|0)ar(d);u=o;return}if((c|0)!=(b|0)){n=ln(4092)|0;f[k>>2]=n;Gg(a,k);u=o;return}j=ln(4092)|0;f[k>>2]=j;Ag(a,k);j=f[m>>2]|0;k=f[j>>2]|0;j=j+4|0;f[m>>2]=j;b=f[n>>2]|0;i=f[l>>2]|0;c=i;g=b;do if((b|0)==(i|0)){e=f[a>>2]|0;d=e;if(j>>>0>e>>>0){b=j;e=((b-d>>2)+1|0)/-2|0;d=j+(e<<2)|0;b=g-b|0;c=b>>2;if(!c)b=j;else{rm(d|0,j|0,b|0)|0;b=f[m>>2]|0}a=d+(c<<2)|0;f[n>>2]=a;f[m>>2]=b+(e<<2);b=a;break}c=c-d>>1;c=(c|0)==0?1:c;if(c>>>0>1073741823){o=Ia(4)|0;Eq(o);sa(o|0,1344,125)}g=ln(c<<2)|0;h=g;d=g+(c>>>2<<2)|0;i=d;g=g+(c<<2)|0;if((j|0)==(b|0)){c=e;b=i}else{c=j;e=i;do{f[d>>2]=f[c>>2];d=e+4|0;e=d;c=c+4|0}while((c|0)!=(b|0));c=f[a>>2]|0;b=e}f[a>>2]=h;f[m>>2]=i;f[n>>2]=b;f[l>>2]=g;if(c){ar(c);b=f[n>>2]|0}}while(0);f[b>>2]=k;f[n>>2]=(f[n>>2]|0)+4;u=o;return}function rc(a,b,c,d){a=a|0;b=b|0;c=c|0;d=d|0;var e=0,g=0,h=0,i=La,j=La,k=La,l=La,m=La,o=0,p=0,q=La,r=La,s=0,t=0,v=La,w=La,x=La,y=La,z=0,A=0,B=0,C=0,D=La;C=u;u=u+48|0;B=C+24|0;z=C+12|0;A=C;h=a+32|0;e=f[b>>2]|0;b=e+1|0;if((e|0)>=0){g=((b|0)%3|0|0)==0?e+-2|0:b;b=e+(((e>>>0)%3|0|0)==0?2:-1)|0;if((g|0)<0)e=-1073741824;else e=f[(f[f[h>>2]>>2]|0)+(g<<2)>>2]|0;if((b|0)<0){t=-1073741824;s=e}else{t=f[(f[f[h>>2]>>2]|0)+(b<<2)>>2]|0;s=e}}else{t=-1073741824;s=-1073741824}b=a+36|0;o=f[b>>2]|0;g=f[o+4>>2]|0;p=f[o>>2]|0;if(g-p>>2>>>0>s>>>0){e=p;h=o;b=p}else{Kp(o);h=f[b>>2]|0;e=f[h>>2]|0;g=f[h+4>>2]|0;b=f[o>>2]|0}b=f[b+(s<<2)>>2]|0;if(g-e>>2>>>0<=t>>>0){Kp(h);e=f[h>>2]|0}g=f[e+(t<<2)>>2]|0;e=(b|0)<(d|0);if(e&(g|0)<(d|0)){t=f[a+56>>2]|0;s=X(t,b)|0;x=$(f[c+(s<<2)>>2]|0);y=$(f[c+(s+1<<2)>>2]|0);t=X(t,g)|0;w=$(f[c+(t<<2)>>2]|0);v=$(f[c+(t+1<<2)>>2]|0);if(!(w!=x|v!=y)){a=f[a+52>>2]|0;f[a>>2]=~~w;f[a+4>>2]=~~v;u=C;return}Xg(B,a,d);Xg(z,a,b);Xg(A,a,g);r=$(n[A>>2]);m=$(n[z>>2]);r=$(r-m);q=$(n[A+4>>2]);j=$(n[z+4>>2]);q=$(q-j);l=$(n[A+8>>2]);i=$(n[z+8>>2]);l=$(l-i);m=$($(n[B>>2])-m);j=$($(n[B+4>>2])-j);i=$($(n[B+8>>2])-i);k=$($($($(r*r)+$(0.0))+$(q*q))+$(l*l));if(k>$(0.0)?1:(f[a+72>>2]|0)<258){D=$($($($($(r*m)+$(0.0))+$(q*j))+$(l*i))/k);r=$(m-$(r*D));q=$(j-$(q*D));i=$(i-$(l*D));j=D;i=$(L($($($(i*i)+$($(q*q)+$($(r*r)+$(0.0))))/k)))}else{j=$(0.0);i=$(0.0)}D=$(w-x);r=$(v-y);w=$(x+$(D*j));D=$(D*i);v=$(y+$(r*j));x=$(r*i);c=a+64|0;A=(f[c>>2]|0)+-1|0;B=(1<<(A&31)&f[(f[a+60>>2]|0)+(A>>>5<<2)>>2]|0)==0;f[c>>2]=A;y=$(-D);D=$(v+(B?y:D));y=$(-x);B=~~+J(+(+$(w+(B?x:y))+.5));a=f[a+52>>2]|0;f[a>>2]=B;B=~~+J(+(+D+.5));f[a+4>>2]=B;u=C;return}do if(!e){if((d|0)>0){b=d+-1|0;break}g=a+56|0;if((f[g>>2]|0)<=0){u=C;return}b=f[a+52>>2]|0;e=0;do{f[b+(e<<2)>>2]=0;e=e+1|0}while((e|0)<(f[g>>2]|0));u=C;return}while(0);h=a+56|0;B=f[h>>2]|0;g=X(B,b)|0;if((B|0)<=0){u=C;return}b=f[a+52>>2]|0;e=0;do{f[b+(e<<2)>>2]=f[c+(e+g<<2)>>2];e=e+1|0}while((e|0)<(f[h>>2]|0));u=C;return}function sc(a,b,c,d){a=a|0;b=b|0;c=c|0;d=d|0;var e=0,g=0,h=0,i=La,j=La,k=La,l=La,m=La,o=0,p=0,q=La,r=La,s=0,t=0,v=La,w=La,x=La,y=La,z=0,A=0,B=0,C=0,D=La;C=u;u=u+48|0;B=C+24|0;z=C+12|0;A=C;h=a+48|0;e=f[b>>2]|0;b=e+1|0;if((e|0)>=0){g=((b|0)%3|0|0)==0?e+-2|0:b;b=e+(((e>>>0)%3|0|0)==0?2:-1)|0;if((g|0)<0)e=-1073741824;else e=f[(f[f[h>>2]>>2]|0)+(g<<2)>>2]|0;if((b|0)<0){t=-1073741824;s=e}else{t=f[(f[f[h>>2]>>2]|0)+(b<<2)>>2]|0;s=e}}else{t=-1073741824;s=-1073741824}b=a+52|0;o=f[b>>2]|0;g=f[o+4>>2]|0;p=f[o>>2]|0;if(g-p>>2>>>0>s>>>0){e=p;h=o;b=p}else{Kp(o);h=f[b>>2]|0;e=f[h>>2]|0;g=f[h+4>>2]|0;b=f[o>>2]|0}b=f[b+(s<<2)>>2]|0;if(g-e>>2>>>0<=t>>>0){Kp(h);e=f[h>>2]|0}g=f[e+(t<<2)>>2]|0;e=(b|0)<(d|0);if(e&(g|0)<(d|0)){t=f[a+72>>2]|0;s=X(t,b)|0;x=$(f[c+(s<<2)>>2]|0);y=$(f[c+(s+1<<2)>>2]|0);t=X(t,g)|0;w=$(f[c+(t<<2)>>2]|0);v=$(f[c+(t+1<<2)>>2]|0);if(!(w!=x|v!=y)){a=f[a+68>>2]|0;f[a>>2]=~~w;f[a+4>>2]=~~v;u=C;return}_g(B,a,d);_g(z,a,b);_g(A,a,g);r=$(n[A>>2]);m=$(n[z>>2]);r=$(r-m);q=$(n[A+4>>2]);j=$(n[z+4>>2]);q=$(q-j);l=$(n[A+8>>2]);i=$(n[z+8>>2]);l=$(l-i);m=$($(n[B>>2])-m);j=$($(n[B+4>>2])-j);i=$($(n[B+8>>2])-i);k=$($($($(r*r)+$(0.0))+$(q*q))+$(l*l));if(k>$(0.0)?1:(f[a+88>>2]|0)<258){D=$($($($($(r*m)+$(0.0))+$(q*j))+$(l*i))/k);r=$(m-$(r*D));q=$(j-$(q*D));i=$(i-$(l*D));j=D;i=$(L($($($(i*i)+$($(q*q)+$($(r*r)+$(0.0))))/k)))}else{j=$(0.0);i=$(0.0)}D=$(w-x);r=$(v-y);w=$(x+$(D*j));D=$(D*i);v=$(y+$(r*j));x=$(r*i);c=a+80|0;A=(f[c>>2]|0)+-1|0;B=(1<<(A&31)&f[(f[a+76>>2]|0)+(A>>>5<<2)>>2]|0)==0;f[c>>2]=A;y=$(-D);D=$(v+(B?y:D));y=$(-x);B=~~+J(+(+$(w+(B?x:y))+.5));a=f[a+68>>2]|0;f[a>>2]=B;B=~~+J(+(+D+.5));f[a+4>>2]=B;u=C;return}do if(!e){if((d|0)>0){b=d+-1|0;break}g=a+72|0;if((f[g>>2]|0)<=0){u=C;return}b=f[a+68>>2]|0;e=0;do{f[b+(e<<2)>>2]=0;e=e+1|0}while((e|0)<(f[g>>2]|0));u=C;return}while(0);h=a+72|0;B=f[h>>2]|0;g=X(B,b)|0;if((B|0)<=0){u=C;return}b=f[a+68>>2]|0;e=0;do{f[b+(e<<2)>>2]=f[c+(e+g<<2)>>2];e=e+1|0}while((e|0)<(f[h>>2]|0));u=C;return}function tc(a,b,c,d){a=a|0;b=b|0;c=c|0;d=d|0;var e=0,g=0,h=0,i=La,j=La,k=La,l=La,m=La,o=0,p=0,q=La,r=La,s=0,t=0,v=La,w=La,x=La,y=La,z=0,A=0,B=0,C=0,D=La;C=u;u=u+48|0;B=C+24|0;z=C+12|0;A=C;g=a+32|0;e=f[b>>2]|0;b=e+1|0;do if((e|0)>=0){b=((b|0)%3|0|0)==0?e+-2|0:b;if(!((e>>>0)%3|0)){e=e+2|0;break}else{e=e+-1|0;break}}else b=e;while(0);t=f[(f[g>>2]|0)+28>>2]|0;s=f[t+(b<<2)>>2]|0;t=f[t+(e<<2)>>2]|0;e=a+36|0;g=f[e>>2]|0;b=f[g+4>>2]|0;p=f[g>>2]|0;if(b-p>>2>>>0>s>>>0){h=b;o=g;b=p;e=p}else{Kp(g);e=f[e>>2]|0;h=f[e+4>>2]|0;o=e;b=f[g>>2]|0;e=f[e>>2]|0}b=f[b+(s<<2)>>2]|0;if(h-e>>2>>>0<=t>>>0){Kp(o);e=f[o>>2]|0}g=f[e+(t<<2)>>2]|0;e=(b|0)<(d|0);if(e&(g|0)<(d|0)){t=f[a+56>>2]|0;s=X(t,b)|0;x=$(f[c+(s<<2)>>2]|0);y=$(f[c+(s+1<<2)>>2]|0);t=X(t,g)|0;w=$(f[c+(t<<2)>>2]|0);v=$(f[c+(t+1<<2)>>2]|0);if(!(w!=x|v!=y)){a=f[a+52>>2]|0;f[a>>2]=~~w;f[a+4>>2]=~~v;u=C;return}Xg(B,a,d);Xg(z,a,b);Xg(A,a,g);r=$(n[A>>2]);m=$(n[z>>2]);r=$(r-m);q=$(n[A+4>>2]);j=$(n[z+4>>2]);q=$(q-j);l=$(n[A+8>>2]);i=$(n[z+8>>2]);l=$(l-i);m=$($(n[B>>2])-m);j=$($(n[B+4>>2])-j);i=$($(n[B+8>>2])-i);k=$($($($(r*r)+$(0.0))+$(q*q))+$(l*l));if(k>$(0.0)?1:(f[a+72>>2]|0)<258){D=$($($($($(r*m)+$(0.0))+$(q*j))+$(l*i))/k);r=$(m-$(r*D));q=$(j-$(q*D));i=$(i-$(l*D));j=D;i=$(L($($($(i*i)+$($(q*q)+$($(r*r)+$(0.0))))/k)))}else{j=$(0.0);i=$(0.0)}D=$(w-x);r=$(v-y);w=$(x+$(D*j));D=$(D*i);v=$(y+$(r*j));x=$(r*i);c=a+64|0;A=(f[c>>2]|0)+-1|0;B=(1<<(A&31)&f[(f[a+60>>2]|0)+(A>>>5<<2)>>2]|0)==0;f[c>>2]=A;y=$(-D);D=$(v+(B?y:D));y=$(-x);B=~~+J(+(+$(w+(B?x:y))+.5));a=f[a+52>>2]|0;f[a>>2]=B;B=~~+J(+(+D+.5));f[a+4>>2]=B;u=C;return}do if(!e){if((d|0)>0){b=d+-1|0;break}g=a+56|0;if((f[g>>2]|0)<=0){u=C;return}b=f[a+52>>2]|0;e=0;do{f[b+(e<<2)>>2]=0;e=e+1|0}while((e|0)<(f[g>>2]|0));u=C;return}while(0);h=a+56|0;B=f[h>>2]|0;g=X(B,b)|0;if((B|0)<=0){u=C;return}b=f[a+52>>2]|0;e=0;do{f[b+(e<<2)>>2]=f[c+(e+g<<2)>>2];e=e+1|0}while((e|0)<(f[h>>2]|0));u=C;return}function uc(a,b,c){a=a|0;b=b|0;c=c|0;var d=0,e=0,g=0,h=0,i=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,v=0,w=0;v=u;u=u+16|0;r=v+8|0;q=v+4|0;o=v;p=a+64|0;c=f[p>>2]|0;if(((f[c+28>>2]|0)-(f[c+24>>2]|0)|0)<=0){u=v;return}s=a+52|0;k=a+56|0;m=a+60|0;i=a+12|0;j=a+28|0;t=a+40|0;l=a+44|0;n=a+48|0;b=0;h=0;do{d=f[(f[c+24>>2]|0)+(h<<2)>>2]|0;if((d|0)>=0){e=b+1|0;f[r>>2]=b;c=f[k>>2]|0;if((c|0)==(f[m>>2]|0))Ii(s,r);else{f[c>>2]=b;f[k>>2]=c+4}f[q>>2]=d;f[o>>2]=0;a:do if(!(f[(f[i>>2]|0)+(h>>>5<<2)>>2]&1<<(h&31)))c=d;else{c=d+1|0;c=((c|0)%3|0|0)==0?d+-2|0:c;g=f[a>>2]|0;if(!(1<<(c&31)&f[g+(c>>>5<<2)>>2])){if((c|0)>=0){c=f[(f[(f[p>>2]|0)+12>>2]|0)+(c<<2)>>2]|0;b=c+1|0;if((c|0)>=0){c=((b|0)%3|0|0)==0?c+-2|0:b;f[o>>2]=c;if((c|0)<=-1){c=d;break}while(1){f[q>>2]=c;b=c+1|0;b=((b|0)%3|0|0)==0?c+-2|0:b;if(1<<(b&31)&f[g+(b>>>5<<2)>>2]|0){b=-1073741824;break}if((b|0)<0)break;b=f[(f[(f[p>>2]|0)+12>>2]|0)+(b<<2)>>2]|0;d=b+1|0;if((b|0)<0)break;b=((d|0)%3|0|0)==0?b+-2|0:d;f[o>>2]=b;if((b|0)>-1)c=b;else break a}f[o>>2]=b;break}}}else c=-1073741824;f[o>>2]=c;c=d}while(0);f[(f[j>>2]|0)+(c<<2)>>2]=f[r>>2];c=f[l>>2]|0;if((c|0)==(f[n>>2]|0))Ii(t,q);else{f[c>>2]=f[q>>2];f[l>>2]=c+4}c=f[p>>2]|0;b=f[q>>2]|0;b:do if((b|0)>=0){d=(((b>>>0)%3|0|0)==0?2:-1)+b|0;if((d|0)>=0){d=f[(f[c+12>>2]|0)+(d<<2)>>2]|0;if((d|0)>=0){d=d+(((d>>>0)%3|0|0)==0?2:-1)|0;f[o>>2]=d;if((d|0)>-1&(d|0)!=(b|0)){b=d;while(1){g=b+1|0;g=((g|0)%3|0|0)==0?b+-2|0:g;do if(f[(f[a>>2]|0)+(g>>>5<<2)>>2]&1<<(g&31)){b=e+1|0;f[r>>2]=e;c=f[k>>2]|0;if((c|0)==(f[m>>2]|0))Ii(s,r);else{f[c>>2]=e;f[k>>2]=c+4}c=f[l>>2]|0;if((c|0)==(f[n>>2]|0)){Ii(t,o);e=b;break}else{f[c>>2]=f[o>>2];f[l>>2]=c+4;e=b;break}}while(0);f[(f[j>>2]|0)+(f[o>>2]<<2)>>2]=f[r>>2];c=f[p>>2]|0;b=f[o>>2]|0;if((b|0)<0)break;b=(((b>>>0)%3|0|0)==0?2:-1)+b|0;if((b|0)<0)break;b=f[(f[c+12>>2]|0)+(b<<2)>>2]|0;if((b|0)<0)break;b=b+(((b>>>0)%3|0|0)==0?2:-1)|0;f[o>>2]=b;if(!((b|0)>-1?(b|0)!=(f[q>>2]|0):0)){b=e;break b}}f[o>>2]=b;b=e}else b=e}else{b=d;w=26}}else{b=d;w=26}}else w=26;while(0);if((w|0)==26){w=0;f[o>>2]=b;b=e}}h=h+1|0}while((h|0)<((f[c+28>>2]|0)-(f[c+24>>2]|0)>>2|0));u=v;return}function vc(a,b,c,d){a=a|0;b=b|0;c=c|0;d=d|0;var e=0,g=0,h=0,i=La,j=La,k=La,l=La,m=La,o=0,p=0,q=La,r=La,s=0,t=0,v=La,w=La,x=La,y=La,z=0,A=0,B=0,C=0,D=La;C=u;u=u+48|0;B=C+24|0;z=C+12|0;A=C;g=a+48|0;e=f[b>>2]|0;b=e+1|0;do if((e|0)>=0){b=((b|0)%3|0|0)==0?e+-2|0:b;if(!((e>>>0)%3|0)){e=e+2|0;break}else{e=e+-1|0;break}}else b=e;while(0);t=f[(f[g>>2]|0)+28>>2]|0;s=f[t+(b<<2)>>2]|0;t=f[t+(e<<2)>>2]|0;e=a+52|0;g=f[e>>2]|0;b=f[g+4>>2]|0;p=f[g>>2]|0;if(b-p>>2>>>0>s>>>0){h=b;o=g;b=p;e=p}else{Kp(g);e=f[e>>2]|0;h=f[e+4>>2]|0;o=e;b=f[g>>2]|0;e=f[e>>2]|0}b=f[b+(s<<2)>>2]|0;if(h-e>>2>>>0<=t>>>0){Kp(o);e=f[o>>2]|0}g=f[e+(t<<2)>>2]|0;e=(b|0)<(d|0);if(e&(g|0)<(d|0)){t=f[a+72>>2]|0;s=X(t,b)|0;x=$(f[c+(s<<2)>>2]|0);y=$(f[c+(s+1<<2)>>2]|0);t=X(t,g)|0;w=$(f[c+(t<<2)>>2]|0);v=$(f[c+(t+1<<2)>>2]|0);if(!(w!=x|v!=y)){a=f[a+68>>2]|0;f[a>>2]=~~w;f[a+4>>2]=~~v;u=C;return}_g(B,a,d);_g(z,a,b);_g(A,a,g);r=$(n[A>>2]);m=$(n[z>>2]);r=$(r-m);q=$(n[A+4>>2]);j=$(n[z+4>>2]);q=$(q-j);l=$(n[A+8>>2]);i=$(n[z+8>>2]);l=$(l-i);m=$($(n[B>>2])-m);j=$($(n[B+4>>2])-j);i=$($(n[B+8>>2])-i);k=$($($($(r*r)+$(0.0))+$(q*q))+$(l*l));if(k>$(0.0)?1:(f[a+88>>2]|0)<258){D=$($($($($(r*m)+$(0.0))+$(q*j))+$(l*i))/k);r=$(m-$(r*D));q=$(j-$(q*D));i=$(i-$(l*D));j=D;i=$(L($($($(i*i)+$($(q*q)+$($(r*r)+$(0.0))))/k)))}else{j=$(0.0);i=$(0.0)}D=$(w-x);r=$(v-y);w=$(x+$(D*j));D=$(D*i);v=$(y+$(r*j));x=$(r*i);c=a+80|0;A=(f[c>>2]|0)+-1|0;B=(1<<(A&31)&f[(f[a+76>>2]|0)+(A>>>5<<2)>>2]|0)==0;f[c>>2]=A;y=$(-D);D=$(v+(B?y:D));y=$(-x);B=~~+J(+(+$(w+(B?x:y))+.5));a=f[a+68>>2]|0;f[a>>2]=B;B=~~+J(+(+D+.5));f[a+4>>2]=B;u=C;return}do if(!e){if((d|0)>0){b=d+-1|0;break}g=a+72|0;if((f[g>>2]|0)<=0){u=C;return}b=f[a+68>>2]|0;e=0;do{f[b+(e<<2)>>2]=0;e=e+1|0}while((e|0)<(f[g>>2]|0));u=C;return}while(0);h=a+72|0;B=f[h>>2]|0;g=X(B,b)|0;if((B|0)<=0){u=C;return}b=f[a+68>>2]|0;e=0;do{f[b+(e<<2)>>2]=f[c+(e+g<<2)>>2];e=e+1|0}while((e|0)<(f[h>>2]|0));u=C;return}function wc(a,c,d){a=a|0;c=c|0;d=d|0;var e=0,g=0,i=0,j=0,k=0,l=0,m=0,o=0;o=u;u=u+32|0;j=o+24|0;k=o+20|0;l=o+16|0;m=o+12|0;e=o+8|0;g=o+4|0;i=o;if(!d){a=0;u=o;return a|0}switch(f[a+28>>2]|0){case 9:{e=f[c>>2]|0;switch(b[a+24>>0]|0){case 1:{c=a+48|0;m=f[c>>2]|0;c=f[c+4>>2]|0;l=a+40|0;a=(Ho(kn(f[l>>2]|0,f[l+4>>2]|0,e|0,((e|0)<0)<<31>>31|0)|0,I|0,m|0,c|0)|0)+(f[f[a>>2]>>2]|0)|0;f[d>>2]=h[a>>0]|h[a+1>>0]<<8|h[a+2>>0]<<16|h[a+3>>0]<<24;n[d+4>>2]=$(0.0);a=1;u=o;return a|0}case 2:{c=a+48|0;m=f[c>>2]|0;c=f[c+4>>2]|0;l=a+40|0;c=(Ho(kn(f[l>>2]|0,f[l+4>>2]|0,e|0,((e|0)<0)<<31>>31|0)|0,I|0,m|0,c|0)|0)+(f[f[a>>2]>>2]|0)|0;m=c;c=c+4|0;c=h[c>>0]|h[c+1>>0]<<8|h[c+2>>0]<<16|h[c+3>>0]<<24;a=d;f[a>>2]=h[m>>0]|h[m+1>>0]<<8|h[m+2>>0]<<16|h[m+3>>0]<<24;f[a+4>>2]=c;a=1;u=o;return a|0}case 3:{c=a+48|0;m=f[c>>2]|0;c=f[c+4>>2]|0;l=a+40|0;c=(Ho(kn(f[l>>2]|0,f[l+4>>2]|0,e|0,((e|0)<0)<<31>>31|0)|0,I|0,m|0,c|0)|0)+(f[f[a>>2]>>2]|0)|0;m=c;m=h[m>>0]|h[m+1>>0]<<8|h[m+2>>0]<<16|h[m+3>>0]<<24;c=c+4|0;c=h[c>>0]|h[c+1>>0]<<8|h[c+2>>0]<<16|h[c+3>>0]<<24;a=d;d=a;b[d>>0]=m;b[d+1>>0]=m>>8;b[d+2>>0]=m>>16;b[d+3>>0]=m>>24;a=a+4|0;b[a>>0]=c;b[a+1>>0]=c>>8;b[a+2>>0]=c>>16;b[a+3>>0]=c>>24;a=1;u=o;return a|0}case 4:{c=a+48|0;m=f[c>>2]|0;c=f[c+4>>2]|0;l=a+40|0;c=(Ho(kn(f[l>>2]|0,f[l+4>>2]|0,e|0,((e|0)<0)<<31>>31|0)|0,I|0,m|0,c|0)|0)+(f[f[a>>2]>>2]|0)|0;m=c;m=h[m>>0]|h[m+1>>0]<<8|h[m+2>>0]<<16|h[m+3>>0]<<24;c=c+4|0;c=h[c>>0]|h[c+1>>0]<<8|h[c+2>>0]<<16|h[c+3>>0]<<24;a=d;d=a;b[d>>0]=m;b[d+1>>0]=m>>8;b[d+2>>0]=m>>16;b[d+3>>0]=m>>24;a=a+4|0;b[a>>0]=c;b[a+1>>0]=c>>8;b[a+2>>0]=c>>16;b[a+3>>0]=c>>24;a=1;u=o;return a|0}default:{a=0;u=o;return a|0}}}case 2:{f[k>>2]=f[c>>2];f[j>>2]=f[k>>2];a=ee(a,j,d)|0;u=o;return a|0}case 1:{f[l>>2]=f[c>>2];f[j>>2]=f[l>>2];a=ae(a,j,d)|0;u=o;return a|0}case 4:{f[m>>2]=f[c>>2];f[j>>2]=f[m>>2];a=Ld(a,j,d)|0;u=o;return a|0}case 3:{f[e>>2]=f[c>>2];f[j>>2]=f[e>>2];a=Id(a,j,d)|0;u=o;return a|0}case 6:{f[g>>2]=f[c>>2];f[j>>2]=f[g>>2];a=Bd(a,j,d)|0;u=o;return a|0}case 5:{f[i>>2]=f[c>>2];f[j>>2]=f[i>>2];a=Fd(a,j,d)|0;u=o;return a|0}default:{a=0;u=o;return a|0}}return 0}function xc(a,b,c,d,e,g){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;g=g|0;var h=0,i=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,v=0,w=0,x=0,y=0,z=0,A=0,B=0,C=0,D=0;C=u;u=u+32|0;w=C+28|0;x=C+16|0;y=C+8|0;v=C;z=a+8|0;d=f[a+12>>2]|0;if((d|0)<=1)Ga(9466,9477,60,9539);if((d|0)>=31)Ga(9559,9477,61,9539);f[a+68>>2]=d;t=1<>2]=t+-1;t=t+-2|0;s=a+76|0;f[s>>2]=t;r=a+80|0;f[r>>2]=(t|0)/2|0;t=a+44|0;f[a+48>>2]=g;if(!(Sa[f[(f[a>>2]|0)+16>>2]&255](a)|0))Ga(10673,10695,99,10799);if((e|0)!=2)Ga(10821,10695,102,10799);q=a+84|0;o=a+40|0;d=f[o>>2]|0;n=(f[d+4>>2]|0)-(f[d>>2]|0)|0;p=n>>2;f[x>>2]=0;f[x+4>>2]=0;f[x+8>>2]=0;if((n|0)<=0){u=C;return 1}m=x+4|0;n=x+8|0;l=y+4|0;g=0;while(1){e=f[d>>2]|0;if((f[d+4>>2]|0)-e>>2>>>0>g>>>0)d=e;else{Kp(d);d=f[d>>2]|0}f[v>>2]=f[d+(g<<2)>>2];f[w>>2]=f[v>>2];dc(t,w,x);d=f[x>>2]|0;h=(d|0)>-1?d:0-d|0;e=f[m>>2]|0;a=(e|0)>-1?e:0-e|0;h=Ho(a|0,((a|0)<0)<<31>>31|0,h|0,((h|0)<0)<<31>>31|0)|0;a=f[n>>2]|0;i=(a|0)>-1;a=i?a:0-a|0;a=Ho(h|0,I|0,a|0,((a|0)<0)<<31>>31|0)|0;h=I;j=f[r>>2]|0;if((a|0)==0&(h|0)==0){e=x;d=j}else{D=((j|0)<0)<<31>>31;k=kn(j|0,D|0,d|0,((d|0)<0)<<31>>31|0)|0;k=pk(k|0,I|0,a|0,h|0)|0;f[x>>2]=k;d=kn(j|0,D|0,e|0,((e|0)<0)<<31>>31|0)|0;d=pk(d|0,I|0,a|0,h|0)|0;f[m>>2]=d;d=j-((k|0)>-1?k:0-k|0)-((d|0)>-1?d:0-d|0)|0;e=n;d=i?d:0-d|0}f[e>>2]=d;k=f[x>>2]|0;i=f[m>>2]|0;D=f[n>>2]|0;if((((i|0)>-1?i:0-i|0)+((k|0)>-1?k:0-k|0)+((D|0)>-1?D:0-D|0)|0)!=(j|0)){d=18;break}D=Tk(q)|0;d=f[x>>2]|0;if(D){d=0-d|0;e=0-(f[m>>2]|0)|0;j=0-(f[n>>2]|0)|0;f[x>>2]=d;f[m>>2]=e;f[n>>2]=j}else{e=f[m>>2]|0;j=f[n>>2]|0}h=(d|0)>-1;i=(e|0)>-1?e:0-e|0;a=(j|0)>-1?j:0-j|0;k=i+(h?d:0-d|0)+a|0;if((k|0)!=(f[r>>2]|0)){d=23;break}if(!h){if((e|0)<0)d=a;else d=(f[s>>2]|0)-a|0;if((j|0)<0){e=d;d=i}else{e=d;d=(f[s>>2]|0)-i|0}}else{e=k+e|0;d=k+j|0}a=(e|0)==0;h=(d|0)==0;i=f[s>>2]|0;do if((d|e|0)!=0?(A=(i|0)==(d|0),B=(i|0)==(e|0),!(a&A|h&B)):0){if(a&(k|0)<(d|0)){e=0;d=(k<<1)-d|0;break}if((k|0)>(d|0)&B){d=(k<<1)-d|0;break}if((k|0)>(e|0)&A){e=(k<<1)-e|0;break}else{e=(k|0)<(e|0)&h?(k<<1)-e|0:e;break}}else{e=i;d=i}while(0);f[y>>2]=e;f[l>>2]=d;D=g<<1;ji(z,y,b+(D<<2)|0,c+(D<<2)|0);g=g+1|0;if((g|0)>=(p|0)){d=11;break}d=f[o>>2]|0}if((d|0)==11){u=C;return 1}else if((d|0)==18)Ga(10845,10695,118,10799);else if((d|0)==23)Ga(10912,9477,99,11e3);return 0}function yc(a,b,c,d,e,g){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;g=g|0;var h=0,i=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,v=0,w=0,x=0,y=0,z=0,A=0,B=0,C=0,D=0;C=u;u=u+32|0;w=C+28|0;x=C+16|0;y=C+8|0;v=C;z=a+8|0;d=f[a+12>>2]|0;if((d|0)<=1)Ga(9466,9477,60,9539);if((d|0)>=31)Ga(9559,9477,61,9539);f[a+68>>2]=d;t=1<>2]=t+-1;t=t+-2|0;s=a+76|0;f[s>>2]=t;r=a+80|0;f[r>>2]=(t|0)/2|0;t=a+44|0;f[a+48>>2]=g;if(!(Sa[f[(f[a>>2]|0)+16>>2]&255](a)|0))Ga(10673,10695,99,10799);if((e|0)!=2)Ga(10821,10695,102,10799);q=a+84|0;o=a+40|0;d=f[o>>2]|0;n=(f[d+4>>2]|0)-(f[d>>2]|0)|0;p=n>>2;f[x>>2]=0;f[x+4>>2]=0;f[x+8>>2]=0;if((n|0)<=0){u=C;return 1}m=x+4|0;n=x+8|0;l=y+4|0;g=0;while(1){e=f[d>>2]|0;if((f[d+4>>2]|0)-e>>2>>>0>g>>>0)d=e;else{Kp(d);d=f[d>>2]|0}f[v>>2]=f[d+(g<<2)>>2];f[w>>2]=f[v>>2];cc(t,w,x);d=f[x>>2]|0;h=(d|0)>-1?d:0-d|0;e=f[m>>2]|0;a=(e|0)>-1?e:0-e|0;h=Ho(a|0,((a|0)<0)<<31>>31|0,h|0,((h|0)<0)<<31>>31|0)|0;a=f[n>>2]|0;i=(a|0)>-1;a=i?a:0-a|0;a=Ho(h|0,I|0,a|0,((a|0)<0)<<31>>31|0)|0;h=I;j=f[r>>2]|0;if((a|0)==0&(h|0)==0){e=x;d=j}else{D=((j|0)<0)<<31>>31;k=kn(j|0,D|0,d|0,((d|0)<0)<<31>>31|0)|0;k=pk(k|0,I|0,a|0,h|0)|0;f[x>>2]=k;d=kn(j|0,D|0,e|0,((e|0)<0)<<31>>31|0)|0;d=pk(d|0,I|0,a|0,h|0)|0;f[m>>2]=d;d=j-((k|0)>-1?k:0-k|0)-((d|0)>-1?d:0-d|0)|0;e=n;d=i?d:0-d|0}f[e>>2]=d;k=f[x>>2]|0;i=f[m>>2]|0;D=f[n>>2]|0;if((((i|0)>-1?i:0-i|0)+((k|0)>-1?k:0-k|0)+((D|0)>-1?D:0-D|0)|0)!=(j|0)){d=18;break}D=Tk(q)|0;d=f[x>>2]|0;if(D){d=0-d|0;e=0-(f[m>>2]|0)|0;j=0-(f[n>>2]|0)|0;f[x>>2]=d;f[m>>2]=e;f[n>>2]=j}else{e=f[m>>2]|0;j=f[n>>2]|0}h=(d|0)>-1;i=(e|0)>-1?e:0-e|0;a=(j|0)>-1?j:0-j|0;k=i+(h?d:0-d|0)+a|0;if((k|0)!=(f[r>>2]|0)){d=23;break}if(!h){if((e|0)<0)d=a;else d=(f[s>>2]|0)-a|0;if((j|0)<0){e=d;d=i}else{e=d;d=(f[s>>2]|0)-i|0}}else{e=k+e|0;d=k+j|0}a=(e|0)==0;h=(d|0)==0;i=f[s>>2]|0;do if((d|e|0)!=0?(A=(i|0)==(d|0),B=(i|0)==(e|0),!(a&A|h&B)):0){if(a&(k|0)<(d|0)){e=0;d=(k<<1)-d|0;break}if((k|0)>(d|0)&B){d=(k<<1)-d|0;break}if((k|0)>(e|0)&A){e=(k<<1)-e|0;break}else{e=(k|0)<(e|0)&h?(k<<1)-e|0:e;break}}else{e=i;d=i}while(0);f[y>>2]=e;f[l>>2]=d;D=g<<1;ji(z,y,b+(D<<2)|0,c+(D<<2)|0);g=g+1|0;if((g|0)>=(p|0)){d=11;break}d=f[o>>2]|0}if((d|0)==11){u=C;return 1}else if((d|0)==18)Ga(10845,10695,118,10799);else if((d|0)==23)Ga(10912,9477,99,11e3);return 0}function zc(a,b,c,d,e,g){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;g=g|0;var h=0,i=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,v=0,w=0,x=0,y=0,z=0,A=0,B=0,C=0,D=0;C=u;u=u+32|0;w=C+28|0;x=C+16|0;y=C+8|0;v=C;z=a+8|0;d=f[a+12>>2]|0;if((d|0)<=1)Ga(9466,9477,60,9539);if((d|0)>=31)Ga(9559,9477,61,9539);f[a+68>>2]=d;t=1<>2]=t+-1;t=t+-2|0;s=a+76|0;f[s>>2]=t;r=a+80|0;f[r>>2]=(t|0)/2|0;t=a+44|0;f[a+48>>2]=g;if(!(Sa[f[(f[a>>2]|0)+16>>2]&255](a)|0))Ga(10673,10695,99,10799);if((e|0)!=2)Ga(10821,10695,102,10799);q=a+84|0;o=a+40|0;d=f[o>>2]|0;n=(f[d+4>>2]|0)-(f[d>>2]|0)|0;p=n>>2;f[x>>2]=0;f[x+4>>2]=0;f[x+8>>2]=0;if((n|0)<=0){u=C;return 1}m=x+4|0;n=x+8|0;l=y+4|0;g=0;while(1){e=f[d>>2]|0;if((f[d+4>>2]|0)-e>>2>>>0>g>>>0)d=e;else{Kp(d);d=f[d>>2]|0}f[v>>2]=f[d+(g<<2)>>2];f[w>>2]=f[v>>2];dc(t,w,x);d=f[x>>2]|0;h=(d|0)>-1?d:0-d|0;e=f[m>>2]|0;a=(e|0)>-1?e:0-e|0;h=Ho(a|0,((a|0)<0)<<31>>31|0,h|0,((h|0)<0)<<31>>31|0)|0;a=f[n>>2]|0;i=(a|0)>-1;a=i?a:0-a|0;a=Ho(h|0,I|0,a|0,((a|0)<0)<<31>>31|0)|0;h=I;j=f[r>>2]|0;if((a|0)==0&(h|0)==0){e=x;d=j}else{D=((j|0)<0)<<31>>31;k=kn(j|0,D|0,d|0,((d|0)<0)<<31>>31|0)|0;k=pk(k|0,I|0,a|0,h|0)|0;f[x>>2]=k;d=kn(j|0,D|0,e|0,((e|0)<0)<<31>>31|0)|0;d=pk(d|0,I|0,a|0,h|0)|0;f[m>>2]=d;d=j-((k|0)>-1?k:0-k|0)-((d|0)>-1?d:0-d|0)|0;e=n;d=i?d:0-d|0}f[e>>2]=d;k=f[x>>2]|0;i=f[m>>2]|0;D=f[n>>2]|0;if((((i|0)>-1?i:0-i|0)+((k|0)>-1?k:0-k|0)+((D|0)>-1?D:0-D|0)|0)!=(j|0)){d=18;break}D=Tk(q)|0;d=f[x>>2]|0;if(D){d=0-d|0;e=0-(f[m>>2]|0)|0;j=0-(f[n>>2]|0)|0;f[x>>2]=d;f[m>>2]=e;f[n>>2]=j}else{e=f[m>>2]|0;j=f[n>>2]|0}h=(d|0)>-1;i=(e|0)>-1?e:0-e|0;a=(j|0)>-1?j:0-j|0;k=i+(h?d:0-d|0)+a|0;if((k|0)!=(f[r>>2]|0)){d=23;break}if(!h){if((e|0)<0)d=a;else d=(f[s>>2]|0)-a|0;if((j|0)<0){e=d;d=i}else{e=d;d=(f[s>>2]|0)-i|0}}else{e=k+e|0;d=k+j|0}a=(e|0)==0;h=(d|0)==0;i=f[s>>2]|0;do if((d|e|0)!=0?(A=(i|0)==(d|0),B=(i|0)==(e|0),!(a&A|h&B)):0){if(a&(k|0)<(d|0)){e=0;d=(k<<1)-d|0;break}if((k|0)>(d|0)&B){d=(k<<1)-d|0;break}if((k|0)>(e|0)&A){e=(k<<1)-e|0;break}else{e=(k|0)<(e|0)&h?(k<<1)-e|0:e;break}}else{e=i;d=i}while(0);f[y>>2]=e;f[l>>2]=d;D=g<<1;mi(z,y,b+(D<<2)|0,c+(D<<2)|0);g=g+1|0;if((g|0)>=(p|0)){d=11;break}d=f[o>>2]|0}if((d|0)==11){u=C;return 1}else if((d|0)==18)Ga(10845,10695,118,10799);else if((d|0)==23)Ga(10912,9477,99,11e3);return 0}function Ac(a,b,c,d,e,g){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;g=g|0;var h=0,i=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,v=0,w=0,x=0,y=0,z=0,A=0,B=0,C=0,D=0;C=u;u=u+32|0;w=C+28|0;x=C+16|0;y=C+8|0;v=C;z=a+8|0;d=f[a+12>>2]|0;if((d|0)<=1)Ga(9466,9477,60,9539);if((d|0)>=31)Ga(9559,9477,61,9539);f[a+68>>2]=d;t=1<>2]=t+-1;t=t+-2|0;s=a+76|0;f[s>>2]=t;r=a+80|0;f[r>>2]=(t|0)/2|0;t=a+44|0;f[a+48>>2]=g;if(!(Sa[f[(f[a>>2]|0)+16>>2]&255](a)|0))Ga(10673,10695,99,10799);if((e|0)!=2)Ga(10821,10695,102,10799);q=a+84|0;o=a+40|0;d=f[o>>2]|0;n=(f[d+4>>2]|0)-(f[d>>2]|0)|0;p=n>>2;f[x>>2]=0;f[x+4>>2]=0;f[x+8>>2]=0;if((n|0)<=0){u=C;return 1}m=x+4|0;n=x+8|0;l=y+4|0;g=0;while(1){e=f[d>>2]|0;if((f[d+4>>2]|0)-e>>2>>>0>g>>>0)d=e;else{Kp(d);d=f[d>>2]|0}f[v>>2]=f[d+(g<<2)>>2];f[w>>2]=f[v>>2];cc(t,w,x);d=f[x>>2]|0;h=(d|0)>-1?d:0-d|0;e=f[m>>2]|0;a=(e|0)>-1?e:0-e|0;h=Ho(a|0,((a|0)<0)<<31>>31|0,h|0,((h|0)<0)<<31>>31|0)|0;a=f[n>>2]|0;i=(a|0)>-1;a=i?a:0-a|0;a=Ho(h|0,I|0,a|0,((a|0)<0)<<31>>31|0)|0;h=I;j=f[r>>2]|0;if((a|0)==0&(h|0)==0){e=x;d=j}else{D=((j|0)<0)<<31>>31;k=kn(j|0,D|0,d|0,((d|0)<0)<<31>>31|0)|0;k=pk(k|0,I|0,a|0,h|0)|0;f[x>>2]=k;d=kn(j|0,D|0,e|0,((e|0)<0)<<31>>31|0)|0;d=pk(d|0,I|0,a|0,h|0)|0;f[m>>2]=d;d=j-((k|0)>-1?k:0-k|0)-((d|0)>-1?d:0-d|0)|0;e=n;d=i?d:0-d|0}f[e>>2]=d;k=f[x>>2]|0;i=f[m>>2]|0;D=f[n>>2]|0;if((((i|0)>-1?i:0-i|0)+((k|0)>-1?k:0-k|0)+((D|0)>-1?D:0-D|0)|0)!=(j|0)){d=18;break}D=Tk(q)|0;d=f[x>>2]|0;if(D){d=0-d|0;e=0-(f[m>>2]|0)|0;j=0-(f[n>>2]|0)|0;f[x>>2]=d;f[m>>2]=e;f[n>>2]=j}else{e=f[m>>2]|0;j=f[n>>2]|0}h=(d|0)>-1;i=(e|0)>-1?e:0-e|0;a=(j|0)>-1?j:0-j|0;k=i+(h?d:0-d|0)+a|0;if((k|0)!=(f[r>>2]|0)){d=23;break}if(!h){if((e|0)<0)d=a;else d=(f[s>>2]|0)-a|0;if((j|0)<0){e=d;d=i}else{e=d;d=(f[s>>2]|0)-i|0}}else{e=k+e|0;d=k+j|0}a=(e|0)==0;h=(d|0)==0;i=f[s>>2]|0;do if((d|e|0)!=0?(A=(i|0)==(d|0),B=(i|0)==(e|0),!(a&A|h&B)):0){if(a&(k|0)<(d|0)){e=0;d=(k<<1)-d|0;break}if((k|0)>(d|0)&B){d=(k<<1)-d|0;break}if((k|0)>(e|0)&A){e=(k<<1)-e|0;break}else{e=(k|0)<(e|0)&h?(k<<1)-e|0:e;break}}else{e=i;d=i}while(0);f[y>>2]=e;f[l>>2]=d;D=g<<1;mi(z,y,b+(D<<2)|0,c+(D<<2)|0);g=g+1|0;if((g|0)>=(p|0)){d=11;break}d=f[o>>2]|0}if((d|0)==11){u=C;return 1}else if((d|0)==18)Ga(10845,10695,118,10799);else if((d|0)==23)Ga(10912,9477,99,11e3);return 0}function Bc(a,b,c,d,e,g,h){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;g=g|0;h=h|0;switch(c|0){case 1:{b=ln(44)|0;f[b+4>>2]=d;d=b+12|0;e=e+4|0;f[d>>2]=f[e>>2];f[d+4>>2]=f[e+4>>2];f[d+8>>2]=f[e+8>>2];f[d+12>>2]=f[e+12>>2];f[b+8>>2]=2764;e=b+28|0;f[e>>2]=f[g>>2];f[e+4>>2]=f[g+4>>2];f[e+8>>2]=f[g+8>>2];f[e+12>>2]=f[g+12>>2];f[b>>2]=3176;e=b;f[a>>2]=e;return}case 2:{b=ln(44)|0;f[b+4>>2]=d;d=b+12|0;e=e+4|0;f[d>>2]=f[e>>2];f[d+4>>2]=f[e+4>>2];f[d+8>>2]=f[e+8>>2];f[d+12>>2]=f[e+12>>2];f[b+8>>2]=2764;e=b+28|0;f[e>>2]=f[g>>2];f[e+4>>2]=f[g+4>>2];f[e+8>>2]=f[g+8>>2];f[e+12>>2]=f[g+12>>2];f[b>>2]=3232;e=b;f[a>>2]=e;return}case 4:{b=ln(96)|0;f[b+4>>2]=d;h=b+12|0;c=e+4|0;f[h>>2]=f[c>>2];f[h+4>>2]=f[c+4>>2];f[h+8>>2]=f[c+8>>2];f[h+12>>2]=f[c+12>>2];f[b+8>>2]=2764;h=b+28|0;f[h>>2]=f[g>>2];f[h+4>>2]=f[g+4>>2];f[h+8>>2]=f[g+8>>2];f[h+12>>2]=f[g+12>>2];f[b>>2]=3288;h=b+44|0;c=h+52|0;do{f[h>>2]=0;h=h+4|0}while((h|0)<(c|0));e=b;f[a>>2]=e;return}case 3:{b=ln(76)|0;f[b+4>>2]=d;d=b+12|0;e=e+4|0;f[d>>2]=f[e>>2];f[d+4>>2]=f[e+4>>2];f[d+8>>2]=f[e+8>>2];f[d+12>>2]=f[e+12>>2];f[b+8>>2]=2764;e=b+28|0;f[e>>2]=f[g>>2];f[e+4>>2]=f[g+4>>2];f[e+8>>2]=f[g+8>>2];f[e+12>>2]=f[g+12>>2];f[b>>2]=3344;e=b+44|0;f[e>>2]=0;f[e+4>>2]=0;f[e+8>>2]=0;f[e+12>>2]=0;f[e+16>>2]=0;f[e+20>>2]=0;f[e+24>>2]=0;f[b+72>>2]=h&65535;e=b;f[a>>2]=e;return}case 5:{b=ln(88)|0;f[b+4>>2]=d;d=b+12|0;e=e+4|0;f[d>>2]=f[e>>2];f[d+4>>2]=f[e+4>>2];f[d+8>>2]=f[e+8>>2];f[d+12>>2]=f[e+12>>2];f[b+8>>2]=2764;e=b+28|0;f[e>>2]=f[g>>2];f[e+4>>2]=f[g+4>>2];f[e+8>>2]=f[g+8>>2];f[e+12>>2]=f[g+12>>2];f[b>>2]=3400;f[b+44>>2]=0;f[b+48>>2]=0;f[b+60>>2]=0;f[b+64>>2]=0;f[b+68>>2]=0;e=b+72|0;f[e>>2]=f[g>>2];f[e+4>>2]=f[g+4>>2];f[e+8>>2]=f[g+8>>2];f[e+12>>2]=f[g+12>>2];e=b;f[a>>2]=e;return}case 6:{b=ln(100)|0;f[b+4>>2]=d;d=b+12|0;e=e+4|0;f[d>>2]=f[e>>2];f[d+4>>2]=f[e+4>>2];f[d+8>>2]=f[e+8>>2];f[d+12>>2]=f[e+12>>2];f[b+8>>2]=2764;e=b+28|0;f[e>>2]=f[g>>2];f[e+4>>2]=f[g+4>>2];f[e+8>>2]=f[g+8>>2];f[e+12>>2]=f[g+12>>2];f[b>>2]=3456;f[b+44>>2]=0;f[b+48>>2]=0;e=b+52|0;f[e>>2]=f[g>>2];f[e+4>>2]=f[g+4>>2];f[e+8>>2]=f[g+8>>2];f[e+12>>2]=f[g+12>>2];e=b+68|0;f[e>>2]=-1;f[e+4>>2]=-1;f[e+8>>2]=-1;f[e+12>>2]=-1;xq(b+84|0);e=b;f[a>>2]=e;return}default:{e=0;f[a>>2]=e;return}}}function Cc(a,b,c,d,e,g,h){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;g=g|0;h=h|0;switch(c|0){case 1:{b=ln(44)|0;f[b+4>>2]=d;d=b+12|0;e=e+4|0;f[d>>2]=f[e>>2];f[d+4>>2]=f[e+4>>2];f[d+8>>2]=f[e+8>>2];f[d+12>>2]=f[e+12>>2];f[b+8>>2]=2764;e=b+28|0;f[e>>2]=f[g>>2];f[e+4>>2]=f[g+4>>2];f[e+8>>2]=f[g+8>>2];f[e+12>>2]=f[g+12>>2];f[b>>2]=2840;e=b;f[a>>2]=e;return}case 2:{b=ln(44)|0;f[b+4>>2]=d;d=b+12|0;e=e+4|0;f[d>>2]=f[e>>2];f[d+4>>2]=f[e+4>>2];f[d+8>>2]=f[e+8>>2];f[d+12>>2]=f[e+12>>2];f[b+8>>2]=2764;e=b+28|0;f[e>>2]=f[g>>2];f[e+4>>2]=f[g+4>>2];f[e+8>>2]=f[g+8>>2];f[e+12>>2]=f[g+12>>2];f[b>>2]=2896;e=b;f[a>>2]=e;return}case 4:{b=ln(96)|0;f[b+4>>2]=d;h=b+12|0;c=e+4|0;f[h>>2]=f[c>>2];f[h+4>>2]=f[c+4>>2];f[h+8>>2]=f[c+8>>2];f[h+12>>2]=f[c+12>>2];f[b+8>>2]=2764;h=b+28|0;f[h>>2]=f[g>>2];f[h+4>>2]=f[g+4>>2];f[h+8>>2]=f[g+8>>2];f[h+12>>2]=f[g+12>>2];f[b>>2]=2952;h=b+44|0;c=h+52|0;do{f[h>>2]=0;h=h+4|0}while((h|0)<(c|0));e=b;f[a>>2]=e;return}case 3:{b=ln(76)|0;f[b+4>>2]=d;d=b+12|0;e=e+4|0;f[d>>2]=f[e>>2];f[d+4>>2]=f[e+4>>2];f[d+8>>2]=f[e+8>>2];f[d+12>>2]=f[e+12>>2];f[b+8>>2]=2764;e=b+28|0;f[e>>2]=f[g>>2];f[e+4>>2]=f[g+4>>2];f[e+8>>2]=f[g+8>>2];f[e+12>>2]=f[g+12>>2];f[b>>2]=3008;e=b+44|0;f[e>>2]=0;f[e+4>>2]=0;f[e+8>>2]=0;f[e+12>>2]=0;f[e+16>>2]=0;f[e+20>>2]=0;f[e+24>>2]=0;f[b+72>>2]=h&65535;e=b;f[a>>2]=e;return}case 5:{b=ln(88)|0;f[b+4>>2]=d;d=b+12|0;e=e+4|0;f[d>>2]=f[e>>2];f[d+4>>2]=f[e+4>>2];f[d+8>>2]=f[e+8>>2];f[d+12>>2]=f[e+12>>2];f[b+8>>2]=2764;e=b+28|0;f[e>>2]=f[g>>2];f[e+4>>2]=f[g+4>>2];f[e+8>>2]=f[g+8>>2];f[e+12>>2]=f[g+12>>2];f[b>>2]=3064;f[b+44>>2]=0;f[b+48>>2]=0;f[b+60>>2]=0;f[b+64>>2]=0;f[b+68>>2]=0;e=b+72|0;f[e>>2]=f[g>>2];f[e+4>>2]=f[g+4>>2];f[e+8>>2]=f[g+8>>2];f[e+12>>2]=f[g+12>>2];e=b;f[a>>2]=e;return}case 6:{b=ln(100)|0;f[b+4>>2]=d;d=b+12|0;e=e+4|0;f[d>>2]=f[e>>2];f[d+4>>2]=f[e+4>>2];f[d+8>>2]=f[e+8>>2];f[d+12>>2]=f[e+12>>2];f[b+8>>2]=2764;e=b+28|0;f[e>>2]=f[g>>2];f[e+4>>2]=f[g+4>>2];f[e+8>>2]=f[g+8>>2];f[e+12>>2]=f[g+12>>2];f[b>>2]=3120;f[b+44>>2]=0;f[b+48>>2]=0;e=b+52|0;f[e>>2]=f[g>>2];f[e+4>>2]=f[g+4>>2];f[e+8>>2]=f[g+8>>2];f[e+12>>2]=f[g+12>>2];e=b+68|0;f[e>>2]=-1;f[e+4>>2]=-1;f[e+8>>2]=-1;f[e+12>>2]=-1;xq(b+84|0);e=b;f[a>>2]=e;return}default:{e=0;f[a>>2]=e;return}}}function Dc(a,b,c,d,e,g,h){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;g=g|0;h=h|0;switch(c|0){case 1:{b=ln(44)|0;f[b+4>>2]=d;d=b+12|0;e=e+4|0;f[d>>2]=f[e>>2];f[d+4>>2]=f[e+4>>2];f[d+8>>2]=f[e+8>>2];f[d+12>>2]=f[e+12>>2];f[b+8>>2]=2744;e=b+28|0;f[e>>2]=f[g>>2];f[e+4>>2]=f[g+4>>2];f[e+8>>2]=f[g+8>>2];f[e+12>>2]=f[g+12>>2];f[b>>2]=3904;e=b;f[a>>2]=e;return}case 2:{b=ln(44)|0;f[b+4>>2]=d;d=b+12|0;e=e+4|0;f[d>>2]=f[e>>2];f[d+4>>2]=f[e+4>>2];f[d+8>>2]=f[e+8>>2];f[d+12>>2]=f[e+12>>2];f[b+8>>2]=2744;e=b+28|0;f[e>>2]=f[g>>2];f[e+4>>2]=f[g+4>>2];f[e+8>>2]=f[g+8>>2];f[e+12>>2]=f[g+12>>2];f[b>>2]=3960;e=b;f[a>>2]=e;return}case 4:{b=ln(96)|0;f[b+4>>2]=d;h=b+12|0;c=e+4|0;f[h>>2]=f[c>>2];f[h+4>>2]=f[c+4>>2];f[h+8>>2]=f[c+8>>2];f[h+12>>2]=f[c+12>>2];f[b+8>>2]=2744;h=b+28|0;f[h>>2]=f[g>>2];f[h+4>>2]=f[g+4>>2];f[h+8>>2]=f[g+8>>2];f[h+12>>2]=f[g+12>>2];f[b>>2]=4016;h=b+44|0;c=h+52|0;do{f[h>>2]=0;h=h+4|0}while((h|0)<(c|0));e=b;f[a>>2]=e;return}case 3:{b=ln(76)|0;f[b+4>>2]=d;d=b+12|0;e=e+4|0;f[d>>2]=f[e>>2];f[d+4>>2]=f[e+4>>2];f[d+8>>2]=f[e+8>>2];f[d+12>>2]=f[e+12>>2];f[b+8>>2]=2744;e=b+28|0;f[e>>2]=f[g>>2];f[e+4>>2]=f[g+4>>2];f[e+8>>2]=f[g+8>>2];f[e+12>>2]=f[g+12>>2];f[b>>2]=4072;e=b+44|0;f[e>>2]=0;f[e+4>>2]=0;f[e+8>>2]=0;f[e+12>>2]=0;f[e+16>>2]=0;f[e+20>>2]=0;f[e+24>>2]=0;f[b+72>>2]=h&65535;e=b;f[a>>2]=e;return}case 5:{b=ln(88)|0;f[b+4>>2]=d;d=b+12|0;e=e+4|0;f[d>>2]=f[e>>2];f[d+4>>2]=f[e+4>>2];f[d+8>>2]=f[e+8>>2];f[d+12>>2]=f[e+12>>2];f[b+8>>2]=2744;e=b+28|0;f[e>>2]=f[g>>2];f[e+4>>2]=f[g+4>>2];f[e+8>>2]=f[g+8>>2];f[e+12>>2]=f[g+12>>2];f[b>>2]=4128;f[b+44>>2]=0;f[b+48>>2]=0;f[b+60>>2]=0;f[b+64>>2]=0;f[b+68>>2]=0;e=b+72|0;f[e>>2]=f[g>>2];f[e+4>>2]=f[g+4>>2];f[e+8>>2]=f[g+8>>2];f[e+12>>2]=f[g+12>>2];e=b;f[a>>2]=e;return}case 6:{b=ln(100)|0;f[b+4>>2]=d;d=b+12|0;e=e+4|0;f[d>>2]=f[e>>2];f[d+4>>2]=f[e+4>>2];f[d+8>>2]=f[e+8>>2];f[d+12>>2]=f[e+12>>2];f[b+8>>2]=2744;e=b+28|0;f[e>>2]=f[g>>2];f[e+4>>2]=f[g+4>>2];f[e+8>>2]=f[g+8>>2];f[e+12>>2]=f[g+12>>2];f[b>>2]=4184;f[b+44>>2]=0;f[b+48>>2]=0;e=b+52|0;f[e>>2]=f[g>>2];f[e+4>>2]=f[g+4>>2];f[e+8>>2]=f[g+8>>2];f[e+12>>2]=f[g+12>>2];e=b+68|0;f[e>>2]=-1;f[e+4>>2]=-1;f[e+8>>2]=-1;f[e+12>>2]=-1;xq(b+84|0);e=b;f[a>>2]=e;return}default:{e=0;f[a>>2]=e;return}}}function Ec(a,b,c,d,e,g,h){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;g=g|0;h=h|0;switch(c|0){case 1:{b=ln(44)|0;f[b+4>>2]=d;d=b+12|0;e=e+4|0;f[d>>2]=f[e>>2];f[d+4>>2]=f[e+4>>2];f[d+8>>2]=f[e+8>>2];f[d+12>>2]=f[e+12>>2];f[b+8>>2]=2744;e=b+28|0;f[e>>2]=f[g>>2];f[e+4>>2]=f[g+4>>2];f[e+8>>2]=f[g+8>>2];f[e+12>>2]=f[g+12>>2];f[b>>2]=3568;e=b;f[a>>2]=e;return}case 2:{b=ln(44)|0;f[b+4>>2]=d;d=b+12|0;e=e+4|0;f[d>>2]=f[e>>2];f[d+4>>2]=f[e+4>>2];f[d+8>>2]=f[e+8>>2];f[d+12>>2]=f[e+12>>2];f[b+8>>2]=2744;e=b+28|0;f[e>>2]=f[g>>2];f[e+4>>2]=f[g+4>>2];f[e+8>>2]=f[g+8>>2];f[e+12>>2]=f[g+12>>2];f[b>>2]=3624;e=b;f[a>>2]=e;return}case 4:{b=ln(96)|0;f[b+4>>2]=d;h=b+12|0;c=e+4|0;f[h>>2]=f[c>>2];f[h+4>>2]=f[c+4>>2];f[h+8>>2]=f[c+8>>2];f[h+12>>2]=f[c+12>>2];f[b+8>>2]=2744;h=b+28|0;f[h>>2]=f[g>>2];f[h+4>>2]=f[g+4>>2];f[h+8>>2]=f[g+8>>2];f[h+12>>2]=f[g+12>>2];f[b>>2]=3680;h=b+44|0;c=h+52|0;do{f[h>>2]=0;h=h+4|0}while((h|0)<(c|0));e=b;f[a>>2]=e;return}case 3:{b=ln(76)|0;f[b+4>>2]=d;d=b+12|0;e=e+4|0;f[d>>2]=f[e>>2];f[d+4>>2]=f[e+4>>2];f[d+8>>2]=f[e+8>>2];f[d+12>>2]=f[e+12>>2];f[b+8>>2]=2744;e=b+28|0;f[e>>2]=f[g>>2];f[e+4>>2]=f[g+4>>2];f[e+8>>2]=f[g+8>>2];f[e+12>>2]=f[g+12>>2];f[b>>2]=3736;e=b+44|0;f[e>>2]=0;f[e+4>>2]=0;f[e+8>>2]=0;f[e+12>>2]=0;f[e+16>>2]=0;f[e+20>>2]=0;f[e+24>>2]=0;f[b+72>>2]=h&65535;e=b;f[a>>2]=e;return}case 5:{b=ln(88)|0;f[b+4>>2]=d;d=b+12|0;e=e+4|0;f[d>>2]=f[e>>2];f[d+4>>2]=f[e+4>>2];f[d+8>>2]=f[e+8>>2];f[d+12>>2]=f[e+12>>2];f[b+8>>2]=2744;e=b+28|0;f[e>>2]=f[g>>2];f[e+4>>2]=f[g+4>>2];f[e+8>>2]=f[g+8>>2];f[e+12>>2]=f[g+12>>2];f[b>>2]=3792;f[b+44>>2]=0;f[b+48>>2]=0;f[b+60>>2]=0;f[b+64>>2]=0;f[b+68>>2]=0;e=b+72|0;f[e>>2]=f[g>>2];f[e+4>>2]=f[g+4>>2];f[e+8>>2]=f[g+8>>2];f[e+12>>2]=f[g+12>>2];e=b;f[a>>2]=e;return}case 6:{b=ln(100)|0;f[b+4>>2]=d;d=b+12|0;e=e+4|0;f[d>>2]=f[e>>2];f[d+4>>2]=f[e+4>>2];f[d+8>>2]=f[e+8>>2];f[d+12>>2]=f[e+12>>2];f[b+8>>2]=2744;e=b+28|0;f[e>>2]=f[g>>2];f[e+4>>2]=f[g+4>>2];f[e+8>>2]=f[g+8>>2];f[e+12>>2]=f[g+12>>2];f[b>>2]=3848;f[b+44>>2]=0;f[b+48>>2]=0;e=b+52|0;f[e>>2]=f[g>>2];f[e+4>>2]=f[g+4>>2];f[e+8>>2]=f[g+8>>2];f[e+12>>2]=f[g+12>>2];e=b+68|0;f[e>>2]=-1;f[e+4>>2]=-1;f[e+8>>2]=-1;f[e+12>>2]=-1;xq(b+84|0);e=b;f[a>>2]=e;return}default:{e=0;f[a>>2]=e;return}}}function Fc(a,c,d){a=a|0;c=c|0;d=d|0;var e=La,g=0,i=0,j=0,k=La;switch(b[a+24>>0]|0){case 1:{i=f[c>>2]|0;c=a+48|0;g=f[c>>2]|0;c=f[c+4>>2]|0;j=a+40|0;a=(Ho(kn(f[j>>2]|0,f[j+4>>2]|0,i|0,((i|0)<0)<<31>>31|0)|0,I|0,g|0,c|0)|0)+(f[f[a>>2]>>2]|0)|0;b[s>>0]=b[a>>0];b[s+1>>0]=b[a+1>>0];b[s+2>>0]=b[a+2>>0];b[s+3>>0]=b[a+3>>0];e=$(n[s>>2]);a=+K(+e)>=1.0?(+e>0.0?~~+Y(+J(+e/4294967296.0),4294967295.0)>>>0:~~+W((+e-+(~~+e>>>0))/4294967296.0)>>>0):0;c=d;f[c>>2]=~~+e>>>0;f[c+4>>2]=a;c=0;a=0;break}case 2:{i=f[c>>2]|0;c=a+48|0;j=f[c>>2]|0;c=f[c+4>>2]|0;g=a+40|0;c=(Ho(kn(f[g>>2]|0,f[g+4>>2]|0,i|0,((i|0)<0)<<31>>31|0)|0,I|0,j|0,c|0)|0)+(f[f[a>>2]>>2]|0)|0;j=c;c=c+4|0;c=h[c>>0]|h[c+1>>0]<<8|h[c+2>>0]<<16|h[c+3>>0]<<24;e=(f[s>>2]=h[j>>0]|h[j+1>>0]<<8|h[j+2>>0]<<16|h[j+3>>0]<<24,$(n[s>>2]));j=+K(+e)>=1.0?(+e>0.0?~~+Y(+J(+e/4294967296.0),4294967295.0)>>>0:~~+W((+e-+(~~+e>>>0))/4294967296.0)>>>0):0;a=d;f[a>>2]=~~+e>>>0;f[a+4>>2]=j;e=(f[s>>2]=c,$(n[s>>2]));c=~~+e>>>0;a=+K(+e)>=1.0?(+e>0.0?~~+Y(+J(+e/4294967296.0),4294967295.0)>>>0:~~+W((+e-+(~~+e>>>0))/4294967296.0)>>>0):0;break}case 3:{i=f[c>>2]|0;c=a+48|0;j=f[c>>2]|0;c=f[c+4>>2]|0;g=a+40|0;a=(Ho(kn(f[g>>2]|0,f[g+4>>2]|0,i|0,((i|0)<0)<<31>>31|0)|0,I|0,j|0,c|0)|0)+(f[f[a>>2]>>2]|0)|0;b[s>>0]=b[a>>0];b[s+1>>0]=b[a+1>>0];b[s+2>>0]=b[a+2>>0];b[s+3>>0]=b[a+3>>0];k=$(n[s>>2]);a=a+4|0;b[s>>0]=b[a>>0];b[s+1>>0]=b[a+1>>0];b[s+2>>0]=b[a+2>>0];b[s+3>>0]=b[a+3>>0];e=$(n[s>>2]);a=+K(+k)>=1.0?(+k>0.0?~~+Y(+J(+k/4294967296.0),4294967295.0)>>>0:~~+W((+k-+(~~+k>>>0))/4294967296.0)>>>0):0;c=d;f[c>>2]=~~+k>>>0;f[c+4>>2]=a;c=~~+e>>>0;a=+K(+e)>=1.0?(+e>0.0?~~+Y(+J(+e/4294967296.0),4294967295.0)>>>0:~~+W((+e-+(~~+e>>>0))/4294967296.0)>>>0):0;break}case 4:{i=f[c>>2]|0;c=a+48|0;j=f[c>>2]|0;c=f[c+4>>2]|0;g=a+40|0;a=(Ho(kn(f[g>>2]|0,f[g+4>>2]|0,i|0,((i|0)<0)<<31>>31|0)|0,I|0,j|0,c|0)|0)+(f[f[a>>2]>>2]|0)|0;b[s>>0]=b[a>>0];b[s+1>>0]=b[a+1>>0];b[s+2>>0]=b[a+2>>0];b[s+3>>0]=b[a+3>>0];e=$(n[s>>2]);a=a+4|0;b[s>>0]=b[a>>0];b[s+1>>0]=b[a+1>>0];b[s+2>>0]=b[a+2>>0];b[s+3>>0]=b[a+3>>0];k=$(n[s>>2]);a=+K(+e)>=1.0?(+e>0.0?~~+Y(+J(+e/4294967296.0),4294967295.0)>>>0:~~+W((+e-+(~~+e>>>0))/4294967296.0)>>>0):0;c=d;f[c>>2]=~~+e>>>0;f[c+4>>2]=a;c=~~+k>>>0;a=+K(+k)>=1.0?(+k>0.0?~~+Y(+J(+k/4294967296.0),4294967295.0)>>>0:~~+W((+k-+(~~+k>>>0))/4294967296.0)>>>0):0;break}default:{j=0;return j|0}}j=d+8|0;f[j>>2]=c;f[j+4>>2]=a;j=1;return j|0}function Gc(a,c){a=a|0;c=c|0;var d=0,e=0,g=0,i=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0;t=u;u=u+16|0;i=t+4|0;s=t;if(!(Yd(a,c)|0)){s=0;u=t;return s|0}p=f[a+88>>2]|0;p=(Sa[f[(f[p>>2]|0)+32>>2]&255](p)|0)+36|0;if(((h[p>>0]|0)<<8&65535)<512){o=c+8|0;p=f[o>>2]|0;o=f[o+4>>2]|0;j=c+16|0;e=j;d=f[e>>2]|0;e=Ho(d|0,f[e+4>>2]|0,4,0)|0;g=I;if((o|0)<(g|0)|(o|0)==(g|0)&p>>>0>>0)d=0;else{d=(f[c>>2]|0)+d|0;d=h[d>>0]|h[d+1>>0]<<8|h[d+2>>0]<<16|h[d+3>>0]<<24;f[i>>2]=d;k=j;f[k>>2]=e;f[k+4>>2]=g;k=7}}else if(yj(i,c)|0){d=f[i>>2]|0;k=7}else d=0;if((k|0)==7){k=a+96|0;i=(f[k>>2]|0)+d|0;f[k>>2]=i;k=a+100|0;f[s>>2]=0;g=a+104|0;e=f[g>>2]|0;d=f[k>>2]|0;j=e-d>>2;if(i>>>0<=j>>>0){if(i>>>0>>0?(l=d+(i<<2)|0,(e|0)!=(l|0)):0)f[g>>2]=e+(~((e+-4-l|0)>>>2)<<2)}else ch(k,i-j|0,s);p=c+8|0;o=f[p+4>>2]|0;g=c+16|0;e=g;d=f[e>>2]|0;e=f[e+4>>2]|0;if((o|0)>(e|0)|((o|0)==(e|0)?(f[p>>2]|0)>>>0>d>>>0:0)?(p=b[(f[c>>2]|0)+d>>0]|0,n=Ho(d|0,e|0,1,0)|0,o=g,f[o>>2]=n,f[o+4>>2]=I,p<<24>>24==0):0){f[a+120>>2]=2;f[a+124>>2]=7;p=a+128|0;o=a+132|0;e=f[o>>2]|0;g=f[p>>2]|0;j=e-g|0;i=(j|0)/12|0;d=e;if(i>>>0>=6){if((j|0)!=72?(m=g+72|0,(d|0)!=(m|0)):0){do{e=d+-12|0;f[o>>2]=e;g=f[e>>2]|0;if(!g)d=e;else{e=d+-8|0;d=f[e>>2]|0;if((d|0)!=(g|0))f[e>>2]=d+(~((d+-4-g|0)>>>2)<<2);ar(g);d=f[o>>2]|0}}while((d|0)!=(m|0));e=d}}else{Gf(p,6-i|0);e=f[o>>2]|0}n=a+140|0;d=f[p>>2]|0;l=(e-d|0)/12|0;j=a+144|0;i=f[j>>2]|0;g=f[n>>2]|0;k=i-g>>2;if(l>>>0<=k>>>0){if(l>>>0>>0?(q=g+(l<<2)|0,(i|0)!=(q|0)):0)f[j>>2]=i+(~((i+-4-q|0)>>>2)<<2)}else{ui(n,l-k|0);e=f[o>>2]|0;d=f[p>>2]|0}if((e|0)==(d|0))d=1;else{m=0;do{yj(s,c)|0;d=f[s>>2]|0;if(d|0){e=f[p>>2]|0;k=e+(m*12|0)|0;j=e+(m*12|0)+4|0;i=f[j>>2]|0;g=f[k>>2]|0;l=i-g>>2;if(d>>>0<=l>>>0){if(d>>>0>>0?(r=g+(d<<2)|0,(i|0)!=(r|0)):0)f[j>>2]=i+(~((i+-4-r|0)>>>2)<<2)}else{ui(k,d-l|0);e=f[p>>2]|0;d=f[s>>2]|0}Xi(d,1,c,f[e+(m*12|0)>>2]|0)|0;f[(f[n>>2]|0)+(m<<2)>>2]=f[s>>2]}m=m+1|0}while(m>>>0<(((f[o>>2]|0)-(f[p>>2]|0)|0)/12|0)>>>0);d=1}}else d=0}s=d;u=t;return s|0}function Hc(a,b){a=a|0;b=b|0;var c=0,d=0,e=0,g=0,h=0,i=0,j=0,k=0,l=0,m=0;if((b|0)<0)return;m=a+12|0;l=f[m>>2]|0;c=f[a+8>>2]|0;j=l;if(l-c>>2>>>0<=b>>>0)return;d=c+(b<<2)|0;l=f[(f[d>>2]|0)+56>>2]|0;c=d+4|0;if((c|0)!=(j|0)){do{h=f[c>>2]|0;f[c>>2]=0;i=f[d>>2]|0;f[d>>2]=h;if(i|0){h=i+88|0;e=f[h>>2]|0;f[h>>2]=0;if(e|0){g=f[e+8>>2]|0;if(g|0){h=e+12|0;if((f[h>>2]|0)!=(g|0))f[h>>2]=g;ar(g)}ar(e)}e=f[i+68>>2]|0;if(e|0){h=i+72|0;g=f[h>>2]|0;if((g|0)!=(e|0))f[h>>2]=g+(~((g+-4-e|0)>>>2)<<2);ar(e)}h=i+64|0;e=f[h>>2]|0;f[h>>2]=0;if(e|0){g=f[e>>2]|0;if(g|0){h=e+4|0;if((f[h>>2]|0)!=(g|0))f[h>>2]=g;ar(g)}ar(e)}ar(i)}c=c+4|0;d=d+4|0}while((c|0)!=(j|0));c=f[m>>2]|0;if((c|0)!=(d|0)){h=d;k=24}}else{c=j;h=d;k=24}if((k|0)==24)do{k=c+-4|0;f[m>>2]=k;g=f[k>>2]|0;f[k>>2]=0;if(g|0){k=g+88|0;c=f[k>>2]|0;f[k>>2]=0;if(c|0){d=f[c+8>>2]|0;if(d|0){e=c+12|0;if((f[e>>2]|0)!=(d|0))f[e>>2]=d;ar(d)}ar(c)}c=f[g+68>>2]|0;if(c|0){e=g+72|0;d=f[e>>2]|0;if((d|0)!=(c|0))f[e>>2]=d+(~((d+-4-c|0)>>>2)<<2);ar(c)}k=g+64|0;c=f[k>>2]|0;f[k>>2]=0;if(c|0){d=f[c>>2]|0;if(d|0){e=c+4|0;if((f[e>>2]|0)!=(d|0))f[e>>2]=d;ar(d)}ar(c)}ar(g)}c=f[m>>2]|0}while((c|0)!=(h|0));a:do if((l|0)<4){c=f[a+20+(l*12|0)>>2]|0;i=a+20+(l*12|0)+4|0;d=f[i>>2]|0;e=d;b:do if((c|0)!=(d|0))while(1){if((f[c>>2]|0)==(b|0))break b;c=c+4|0;if((c|0)==(d|0))break a}while(0);if((c|0)!=(d|0)){g=c+4|0;e=e-g|0;h=e>>2;if(h){rm(c|0,g|0,e|0)|0;d=f[i>>2]|0}c=c+(h<<2)|0;if((d|0)!=(c|0))f[i>>2]=d+(~((d+-4-c|0)>>>2)<<2)}}while(0);c=f[a+24>>2]|0;d=f[a+20>>2]|0;h=d;if((c|0)!=(d|0)){g=c-d>>2;e=0;do{d=h+(e<<2)|0;c=f[d>>2]|0;if((c|0)>(b|0))f[d>>2]=c+-1;e=e+1|0}while(e>>>0>>0)}c=f[a+36>>2]|0;d=f[a+32>>2]|0;h=d;if((c|0)!=(d|0)){g=c-d>>2;e=0;do{d=h+(e<<2)|0;c=f[d>>2]|0;if((c|0)>(b|0))f[d>>2]=c+-1;e=e+1|0}while(e>>>0>>0)}c=f[a+48>>2]|0;d=f[a+44>>2]|0;h=d;if((c|0)!=(d|0)){g=c-d>>2;e=0;do{d=h+(e<<2)|0;c=f[d>>2]|0;if((c|0)>(b|0))f[d>>2]=c+-1;e=e+1|0}while(e>>>0>>0)}d=f[a+60>>2]|0;c=f[a+56>>2]|0;h=c;if((d|0)==(c|0))return;g=d-c>>2;e=0;do{d=h+(e<<2)|0;c=f[d>>2]|0;if((c|0)>(b|0))f[d>>2]=c+-1;e=e+1|0}while(e>>>0>>0);return}function Ic(a,c,d){a=a|0;c=c|0;d=d|0;var e=La,g=La,i=0,j=0,k=0;switch(b[a+24>>0]|0){case 1:{c=f[c>>2]|0;j=a+48|0;i=f[j>>2]|0;j=f[j+4>>2]|0;k=a+40|0;j=(Ho(kn(f[k>>2]|0,f[k+4>>2]|0,c|0,((c|0)<0)<<31>>31|0)|0,I|0,i|0,j|0)|0)+(f[f[a>>2]>>2]|0)|0;e=$((h[j>>0]|h[j+1>>0]<<8|h[j+2>>0]<<16|h[j+3>>0]<<24)>>>0);g=$(e*$(2.32830644e-10));n[d>>2]=(b[a+32>>0]|0)==0?e:g;d=d+4|0;f[d>>2]=0;f[d+4>>2]=0;f[d+8>>2]=0;d=1;return d|0}case 2:{j=f[c>>2]|0;c=a+48|0;k=f[c>>2]|0;c=f[c+4>>2]|0;i=a+40|0;c=(Ho(kn(f[i>>2]|0,f[i+4>>2]|0,j|0,((j|0)<0)<<31>>31|0)|0,I|0,k|0,c|0)|0)+(f[f[a>>2]>>2]|0)|0;k=c;c=c+4|0;c=h[c>>0]|h[c+1>>0]<<8|h[c+2>>0]<<16|h[c+3>>0]<<24;e=$((h[k>>0]|h[k+1>>0]<<8|h[k+2>>0]<<16|h[k+3>>0]<<24)>>>0);if(!(b[a+32>>0]|0)){n[d>>2]=e;e=$(c>>>0)}else{e=$(e*$(2.32830644e-10));n[d>>2]=e;e=$($(c>>>0)*$(2.32830644e-10))}n[d+4>>2]=e;k=d+8|0;f[k>>2]=0;f[k+4>>2]=0;k=1;return k|0}case 3:{i=f[c>>2]|0;k=a+48|0;c=f[k>>2]|0;k=f[k+4>>2]|0;j=a+40|0;k=(Ho(kn(f[j>>2]|0,f[j+4>>2]|0,i|0,((i|0)<0)<<31>>31|0)|0,I|0,c|0,k|0)|0)+(f[f[a>>2]>>2]|0)|0;c=k+4|0;c=h[c>>0]|h[c+1>>0]<<8|h[c+2>>0]<<16|h[c+3>>0]<<24;i=k+8|0;i=h[i>>0]|h[i+1>>0]<<8|h[i+2>>0]<<16|h[i+3>>0]<<24;e=$((h[k>>0]|h[k+1>>0]<<8|h[k+2>>0]<<16|h[k+3>>0]<<24)>>>0);if(!(b[a+32>>0]|0)){n[d>>2]=e;g=$(c>>>0);e=$(i>>>0)}else{g=$(e*$(2.32830644e-10));n[d>>2]=g;g=$($(c>>>0)*$(2.32830644e-10));e=$($(i>>>0)*$(2.32830644e-10))}n[d+4>>2]=g;n[d+8>>2]=e;n[d+12>>2]=$(0.0);k=1;return k|0}case 4:{i=f[c>>2]|0;k=a+48|0;c=f[k>>2]|0;k=f[k+4>>2]|0;j=a+40|0;k=(Ho(kn(f[j>>2]|0,f[j+4>>2]|0,i|0,((i|0)<0)<<31>>31|0)|0,I|0,c|0,k|0)|0)+(f[f[a>>2]>>2]|0)|0;c=k+4|0;c=h[c>>0]|h[c+1>>0]<<8|h[c+2>>0]<<16|h[c+3>>0]<<24;i=k+8|0;i=h[i>>0]|h[i+1>>0]<<8|h[i+2>>0]<<16|h[i+3>>0]<<24;j=k+12|0;j=h[j>>0]|h[j+1>>0]<<8|h[j+2>>0]<<16|h[j+3>>0]<<24;e=$((h[k>>0]|h[k+1>>0]<<8|h[k+2>>0]<<16|h[k+3>>0]<<24)>>>0);if(!(b[a+32>>0]|0)){n[d>>2]=e;g=$(c>>>0);n[d+4>>2]=g;g=$(i>>>0);n[d+8>>2]=g;g=$(j>>>0);n[d+12>>2]=g;k=1;return k|0}else{g=$(e*$(2.32830644e-10));n[d>>2]=g;g=$($(c>>>0)*$(2.32830644e-10));n[d+4>>2]=g;g=$($(i>>>0)*$(2.32830644e-10));n[d+8>>2]=g;g=$($(j>>>0)*$(2.32830644e-10));n[d+12>>2]=g;k=1;return k|0}}default:{k=0;return k|0}}return 0}function Jc(a,b){a=a|0;b=b|0;var c=0,e=0,g=0,h=0,i=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0;e=a+4|0;if(!b){c=f[a>>2]|0;f[a>>2]=0;if(c|0)ar(c);f[e>>2]=0;return}if(b>>>0>1073741823){a=Ia(4)|0;Eq(a);sa(a|0,1344,125)}q=ln(b<<2)|0;c=f[a>>2]|0;f[a>>2]=q;if(c|0)ar(c);f[e>>2]=b;c=0;do{f[(f[a>>2]|0)+(c<<2)>>2]=0;c=c+1|0}while((c|0)!=(b|0));e=a+8|0;h=f[e>>2]|0;if(!h)return;c=f[h+4>>2]|0;p=b+-1|0;q=(p&b|0)==0;if(q)g=c&p;else g=(c>>>0)%(b>>>0)|0;f[(f[a>>2]|0)+(g<<2)>>2]=e;c=f[h>>2]|0;if(!c)return;else{i=h;e=c;c=h}a:while(1){o=c;b:while(1){c:do if(q){c=e;while(1){n=f[c+4>>2]&p;if((n|0)==(g|0))break c;e=(f[a>>2]|0)+(n<<2)|0;if(!(f[e>>2]|0)){g=n;break b}m=c+10|0;k=c+12|0;l=c+14|0;e=f[c>>2]|0;d:do if(!e)e=c;else{j=d[c+8>>1]|0;h=c;while(1){if(j<<16>>16!=(d[e+8>>1]|0)){e=h;break d}if((d[m>>1]|0)!=(d[e+10>>1]|0)){e=h;break d}if((d[k>>1]|0)!=(d[e+12>>1]|0)){e=h;break d}if((d[l>>1]|0)!=(d[e+14>>1]|0)){e=h;break d}h=f[e>>2]|0;if(!h)break;else{r=e;e=h;h=r}}}while(0);f[o>>2]=f[e>>2];f[e>>2]=f[f[(f[a>>2]|0)+(n<<2)>>2]>>2];f[f[(f[a>>2]|0)+(n<<2)>>2]>>2]=c;c=f[i>>2]|0;if(!c){c=40;break a}}}else{c=e;while(1){n=((f[c+4>>2]|0)>>>0)%(b>>>0)|0;if((n|0)==(g|0))break c;e=(f[a>>2]|0)+(n<<2)|0;if(!(f[e>>2]|0)){g=n;break b}m=c+10|0;k=c+12|0;l=c+14|0;e=f[c>>2]|0;e:do if(!e)e=c;else{j=d[c+8>>1]|0;h=c;while(1){if(j<<16>>16!=(d[e+8>>1]|0)){e=h;break e}if((d[m>>1]|0)!=(d[e+10>>1]|0)){e=h;break e}if((d[k>>1]|0)!=(d[e+12>>1]|0)){e=h;break e}if((d[l>>1]|0)!=(d[e+14>>1]|0)){e=h;break e}h=f[e>>2]|0;if(!h)break;else{r=e;e=h;h=r}}}while(0);f[o>>2]=f[e>>2];f[e>>2]=f[f[(f[a>>2]|0)+(n<<2)>>2]>>2];f[f[(f[a>>2]|0)+(n<<2)>>2]>>2]=c;c=f[i>>2]|0;if(!c){c=40;break a}}}while(0);e=f[c>>2]|0;if(!e){c=40;break a}else{i=c;o=c}}f[e>>2]=o;e=f[c>>2]|0;if(!e){c=40;break}else i=c}if((c|0)==40)return}function Kc(a,b){a=a|0;b=b|0;var c=0,d=0,e=0,g=0,h=0,i=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0;d=a+4|0;if(!b){c=f[a>>2]|0;f[a>>2]=0;if(c|0)ar(c);f[d>>2]=0;return}if(b>>>0>1073741823){a=Ia(4)|0;Eq(a);sa(a|0,1344,125)}p=ln(b<<2)|0;c=f[a>>2]|0;f[a>>2]=p;if(c|0)ar(c);f[d>>2]=b;c=0;do{f[(f[a>>2]|0)+(c<<2)>>2]=0;c=c+1|0}while((c|0)!=(b|0));d=a+8|0;g=f[d>>2]|0;if(!g)return;c=f[g+4>>2]|0;o=b+-1|0;p=(o&b|0)==0;if(p)e=c&o;else e=(c>>>0)%(b>>>0)|0;f[(f[a>>2]|0)+(e<<2)>>2]=d;c=f[g>>2]|0;if(!c)return;else{h=g;d=c;c=g}a:while(1){n=c;b:while(1){c:do if(p){c=d;while(1){m=f[c+4>>2]&o;if((m|0)==(e|0))break c;d=(f[a>>2]|0)+(m<<2)|0;if(!(f[d>>2]|0)){e=m;break b}l=c+12|0;j=c+16|0;k=c+20|0;d=f[c>>2]|0;d:do if(!d)d=c;else{i=f[c+8>>2]|0;g=c;while(1){if((i|0)!=(f[d+8>>2]|0)){d=g;break d}if((f[l>>2]|0)!=(f[d+12>>2]|0)){d=g;break d}if((f[j>>2]|0)!=(f[d+16>>2]|0)){d=g;break d}if((f[k>>2]|0)!=(f[d+20>>2]|0)){d=g;break d}g=f[d>>2]|0;if(!g)break;else{q=d;d=g;g=q}}}while(0);f[n>>2]=f[d>>2];f[d>>2]=f[f[(f[a>>2]|0)+(m<<2)>>2]>>2];f[f[(f[a>>2]|0)+(m<<2)>>2]>>2]=c;c=f[h>>2]|0;if(!c){c=40;break a}}}else{c=d;while(1){m=((f[c+4>>2]|0)>>>0)%(b>>>0)|0;if((m|0)==(e|0))break c;d=(f[a>>2]|0)+(m<<2)|0;if(!(f[d>>2]|0)){e=m;break b}l=c+12|0;j=c+16|0;k=c+20|0;d=f[c>>2]|0;e:do if(!d)d=c;else{i=f[c+8>>2]|0;g=c;while(1){if((i|0)!=(f[d+8>>2]|0)){d=g;break e}if((f[l>>2]|0)!=(f[d+12>>2]|0)){d=g;break e}if((f[j>>2]|0)!=(f[d+16>>2]|0)){d=g;break e}if((f[k>>2]|0)!=(f[d+20>>2]|0)){d=g;break e}g=f[d>>2]|0;if(!g)break;else{q=d;d=g;g=q}}}while(0);f[n>>2]=f[d>>2];f[d>>2]=f[f[(f[a>>2]|0)+(m<<2)>>2]>>2];f[f[(f[a>>2]|0)+(m<<2)>>2]>>2]=c;c=f[h>>2]|0;if(!c){c=40;break a}}}while(0);d=f[c>>2]|0;if(!d){c=40;break a}else{h=c;n=c}}f[d>>2]=n;d=f[c>>2]|0;if(!d){c=40;break}else h=c}if((c|0)==40)return}function Lc(a,c,d){a=a|0;c=c|0;d=d|0;var e=La,g=La,i=0,j=0,k=0;switch(b[a+24>>0]|0){case 1:{c=f[c>>2]|0;j=a+48|0;i=f[j>>2]|0;j=f[j+4>>2]|0;k=a+40|0;j=(Ho(kn(f[k>>2]|0,f[k+4>>2]|0,c|0,((c|0)<0)<<31>>31|0)|0,I|0,i|0,j|0)|0)+(f[f[a>>2]>>2]|0)|0;e=$(h[j>>0]|h[j+1>>0]<<8|h[j+2>>0]<<16|h[j+3>>0]<<24|0);g=$(e*$(4.65661287e-10));n[d>>2]=(b[a+32>>0]|0)==0?e:g;d=d+4|0;f[d>>2]=0;f[d+4>>2]=0;f[d+8>>2]=0;d=1;return d|0}case 2:{j=f[c>>2]|0;c=a+48|0;k=f[c>>2]|0;c=f[c+4>>2]|0;i=a+40|0;c=(Ho(kn(f[i>>2]|0,f[i+4>>2]|0,j|0,((j|0)<0)<<31>>31|0)|0,I|0,k|0,c|0)|0)+(f[f[a>>2]>>2]|0)|0;k=c;c=c+4|0;c=h[c>>0]|h[c+1>>0]<<8|h[c+2>>0]<<16|h[c+3>>0]<<24;e=$(h[k>>0]|h[k+1>>0]<<8|h[k+2>>0]<<16|h[k+3>>0]<<24|0);if(!(b[a+32>>0]|0)){n[d>>2]=e;e=$(c|0)}else{e=$(e*$(4.65661287e-10));n[d>>2]=e;e=$($(c|0)*$(4.65661287e-10))}n[d+4>>2]=e;k=d+8|0;f[k>>2]=0;f[k+4>>2]=0;k=1;return k|0}case 3:{i=f[c>>2]|0;k=a+48|0;c=f[k>>2]|0;k=f[k+4>>2]|0;j=a+40|0;k=(Ho(kn(f[j>>2]|0,f[j+4>>2]|0,i|0,((i|0)<0)<<31>>31|0)|0,I|0,c|0,k|0)|0)+(f[f[a>>2]>>2]|0)|0;c=k+4|0;c=h[c>>0]|h[c+1>>0]<<8|h[c+2>>0]<<16|h[c+3>>0]<<24;i=k+8|0;i=h[i>>0]|h[i+1>>0]<<8|h[i+2>>0]<<16|h[i+3>>0]<<24;e=$(h[k>>0]|h[k+1>>0]<<8|h[k+2>>0]<<16|h[k+3>>0]<<24|0);if(!(b[a+32>>0]|0)){n[d>>2]=e;g=$(c|0);e=$(i|0)}else{g=$(e*$(4.65661287e-10));n[d>>2]=g;g=$($(c|0)*$(4.65661287e-10));e=$($(i|0)*$(4.65661287e-10))}n[d+4>>2]=g;n[d+8>>2]=e;n[d+12>>2]=$(0.0);k=1;return k|0}case 4:{i=f[c>>2]|0;k=a+48|0;c=f[k>>2]|0;k=f[k+4>>2]|0;j=a+40|0;k=(Ho(kn(f[j>>2]|0,f[j+4>>2]|0,i|0,((i|0)<0)<<31>>31|0)|0,I|0,c|0,k|0)|0)+(f[f[a>>2]>>2]|0)|0;c=k+4|0;c=h[c>>0]|h[c+1>>0]<<8|h[c+2>>0]<<16|h[c+3>>0]<<24;i=k+8|0;i=h[i>>0]|h[i+1>>0]<<8|h[i+2>>0]<<16|h[i+3>>0]<<24;j=k+12|0;j=h[j>>0]|h[j+1>>0]<<8|h[j+2>>0]<<16|h[j+3>>0]<<24;e=$(h[k>>0]|h[k+1>>0]<<8|h[k+2>>0]<<16|h[k+3>>0]<<24|0);if(!(b[a+32>>0]|0)){n[d>>2]=e;g=$(c|0);n[d+4>>2]=g;g=$(i|0);n[d+8>>2]=g;g=$(j|0);n[d+12>>2]=g;k=1;return k|0}else{g=$(e*$(4.65661287e-10));n[d>>2]=g;g=$($(c|0)*$(4.65661287e-10));n[d+4>>2]=g;g=$($(i|0)*$(4.65661287e-10));n[d+8>>2]=g;g=$($(j|0)*$(4.65661287e-10));n[d+12>>2]=g;k=1;return k|0}}default:{k=0;return k|0}}return 0}function Mc(a,c){a=a|0;c=c|0;var d=0,e=0,g=0,h=0,i=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0;e=a+4|0;if(!c){d=f[a>>2]|0;f[a>>2]=0;if(d|0)ar(d);f[e>>2]=0;return}if(c>>>0>1073741823){a=Ia(4)|0;Eq(a);sa(a|0,1344,125)}q=ln(c<<2)|0;d=f[a>>2]|0;f[a>>2]=q;if(d|0)ar(d);f[e>>2]=c;d=0;do{f[(f[a>>2]|0)+(d<<2)>>2]=0;d=d+1|0}while((d|0)!=(c|0));e=a+8|0;h=f[e>>2]|0;if(!h)return;d=f[h+4>>2]|0;p=c+-1|0;q=(p&c|0)==0;if(q)g=d&p;else g=(d>>>0)%(c>>>0)|0;f[(f[a>>2]|0)+(g<<2)>>2]=e;d=f[h>>2]|0;if(!d)return;else{i=h;e=d;d=h}a:while(1){o=d;b:while(1){c:do if(q){d=e;while(1){n=f[d+4>>2]&p;if((n|0)==(g|0))break c;e=(f[a>>2]|0)+(n<<2)|0;if(!(f[e>>2]|0)){g=n;break b}m=d+9|0;k=d+10|0;l=d+11|0;e=f[d>>2]|0;d:do if(!e)e=d;else{j=b[d+8>>0]|0;h=d;while(1){if(j<<24>>24!=(b[e+8>>0]|0)){e=h;break d}if((b[m>>0]|0)!=(b[e+9>>0]|0)){e=h;break d}if((b[k>>0]|0)!=(b[e+10>>0]|0)){e=h;break d}if((b[l>>0]|0)!=(b[e+11>>0]|0)){e=h;break d}h=f[e>>2]|0;if(!h)break;else{r=e;e=h;h=r}}}while(0);f[o>>2]=f[e>>2];f[e>>2]=f[f[(f[a>>2]|0)+(n<<2)>>2]>>2];f[f[(f[a>>2]|0)+(n<<2)>>2]>>2]=d;d=f[i>>2]|0;if(!d){d=40;break a}}}else{d=e;while(1){n=((f[d+4>>2]|0)>>>0)%(c>>>0)|0;if((n|0)==(g|0))break c;e=(f[a>>2]|0)+(n<<2)|0;if(!(f[e>>2]|0)){g=n;break b}m=d+9|0;k=d+10|0;l=d+11|0;e=f[d>>2]|0;e:do if(!e)e=d;else{j=b[d+8>>0]|0;h=d;while(1){if(j<<24>>24!=(b[e+8>>0]|0)){e=h;break e}if((b[m>>0]|0)!=(b[e+9>>0]|0)){e=h;break e}if((b[k>>0]|0)!=(b[e+10>>0]|0)){e=h;break e}if((b[l>>0]|0)!=(b[e+11>>0]|0)){e=h;break e}h=f[e>>2]|0;if(!h)break;else{r=e;e=h;h=r}}}while(0);f[o>>2]=f[e>>2];f[e>>2]=f[f[(f[a>>2]|0)+(n<<2)>>2]>>2];f[f[(f[a>>2]|0)+(n<<2)>>2]>>2]=d;d=f[i>>2]|0;if(!d){d=40;break a}}}while(0);e=f[d>>2]|0;if(!e){d=40;break a}else{i=d;o=d}}f[e>>2]=o;e=f[d>>2]|0;if(!e){d=40;break}else i=d}if((d|0)==40)return}function Nc(a,c,d){a=a|0;c=c|0;d=d|0;var e=0,g=0,i=0,j=0,k=0,l=0,m=0,o=0;o=u;u=u+32|0;j=o+24|0;k=o+20|0;l=o+16|0;m=o+12|0;e=o+8|0;g=o+4|0;i=o;if(!d){a=0;u=o;return a|0}switch(f[a+28>>2]|0){case 9:{e=f[c>>2]|0;switch(b[a+24>>0]|0){case 1:{c=a+48|0;m=f[c>>2]|0;c=f[c+4>>2]|0;l=a+40|0;a=(Ho(kn(f[l>>2]|0,f[l+4>>2]|0,e|0,((e|0)<0)<<31>>31|0)|0,I|0,m|0,c|0)|0)+(f[f[a>>2]>>2]|0)|0;f[d>>2]=h[a>>0]|h[a+1>>0]<<8|h[a+2>>0]<<16|h[a+3>>0]<<24;a=d+4|0;f[a>>2]=0;f[a+4>>2]=0;f[a+8>>2]=0;a=1;u=o;return a|0}case 2:{c=a+48|0;m=f[c>>2]|0;c=f[c+4>>2]|0;l=a+40|0;c=(Ho(kn(f[l>>2]|0,f[l+4>>2]|0,e|0,((e|0)<0)<<31>>31|0)|0,I|0,m|0,c|0)|0)+(f[f[a>>2]>>2]|0)|0;m=c;c=c+4|0;c=h[c>>0]|h[c+1>>0]<<8|h[c+2>>0]<<16|h[c+3>>0]<<24;a=d;f[a>>2]=h[m>>0]|h[m+1>>0]<<8|h[m+2>>0]<<16|h[m+3>>0]<<24;f[a+4>>2]=c;a=d+8|0;f[a>>2]=0;f[a+4>>2]=0;a=1;u=o;return a|0}case 3:{c=a+48|0;m=f[c>>2]|0;c=f[c+4>>2]|0;l=a+40|0;rm(d|0,(Ho(kn(f[l>>2]|0,f[l+4>>2]|0,e|0,((e|0)<0)<<31>>31|0)|0,I|0,m|0,c|0)|0)+(f[f[a>>2]>>2]|0)|0,12)|0;n[d+12>>2]=$(0.0);a=1;u=o;return a|0}case 4:{c=a+48|0;m=f[c>>2]|0;c=f[c+4>>2]|0;l=a+40|0;rm(d|0,(Ho(kn(f[l>>2]|0,f[l+4>>2]|0,e|0,((e|0)<0)<<31>>31|0)|0,I|0,m|0,c|0)|0)+(f[f[a>>2]>>2]|0)|0,16)|0;a=1;u=o;return a|0}default:{a=0;u=o;return a|0}}}case 2:{f[k>>2]=f[c>>2];f[j>>2]=f[k>>2];a=Ed(a,j,d)|0;u=o;return a|0}case 1:{f[l>>2]=f[c>>2];f[j>>2]=f[l>>2];a=yd(a,j,d)|0;u=o;return a|0}case 4:{f[m>>2]=f[c>>2];f[j>>2]=f[m>>2];a=jd(a,j,d)|0;u=o;return a|0}case 3:{f[e>>2]=f[c>>2];f[j>>2]=f[e>>2];a=gd(a,j,d)|0;u=o;return a|0}case 6:{f[g>>2]=f[c>>2];f[j>>2]=f[g>>2];a=Ic(a,j,d)|0;u=o;return a|0}case 5:{f[i>>2]=f[c>>2];f[j>>2]=f[i>>2];a=Lc(a,j,d)|0;u=o;return a|0}default:{a=0;u=o;return a|0}}return 0}function Oc(a,c,d){a=a|0;c=c|0;d=d|0;var e=0,g=0,i=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,v=0;v=u;u=u+64|0;t=v;e=t;g=e+40|0;do{f[e>>2]=0;e=e+4|0}while((e|0)<(g|0));a:do if(ne(t,c)|0){q=(a|0)>0;if(q?(f[t+12>>2]|0)==0:0){j=0;break}j=c+8|0;i=f[j>>2]|0;j=f[j+4>>2]|0;l=c+16|0;e=l;k=f[e>>2]|0;e=Ho(k|0,f[e+4>>2]|0,8,0)|0;g=I;if((!((j|0)<(g|0)|(j|0)==(g|0)&i>>>0>>0)?(m=f[c>>2]|0,n=m+k|0,o=n,o=h[o>>0]|h[o+1>>0]<<8|h[o+2>>0]<<16|h[o+3>>0]<<24,n=n+4|0,n=h[n>>0]|h[n+1>>0]<<8|h[n+2>>0]<<16|h[n+3>>0]<<24,c=l,f[c>>2]=e,f[c+4>>2]=g,c=Xn(i|0,j|0,e|0,g|0)|0,k=I,!(n>>>0>k>>>0|(n|0)==(k|0)&o>>>0>c>>>0)):0)?(s=m+e|0,n=Ho(o|0,n|0,e|0,g|0)|0,c=l,f[c>>2]=n,f[c+4>>2]=I,(o|0)>=1):0){f[t+40>>2]=s;g=o+-1|0;e=s+g|0;switch((h[e>>0]|0)>>>6&3){case 0:{f[t+44>>2]=g;r=g;p=b[e>>0]&63;break}case 1:{if((o|0)<2){j=0;break a}r=o+-2|0;f[t+44>>2]=r;p=s+o+-2|0;p=(h[p+1>>0]|0)<<8&16128|(h[p>>0]|0);break}case 2:{if((o|0)<3){j=0;break a}r=o+-3|0;f[t+44>>2]=r;p=s+o+-3|0;p=(h[p+1>>0]|0)<<8|(h[p>>0]|0)|(h[p+2>>0]|0)<<16&4128768;break}case 3:{r=o+-4|0;f[t+44>>2]=r;p=s+o+-4|0;p=(h[p+2>>0]|0)<<16|(h[p+3>>0]|0)<<24&1056964608|(h[p+1>>0]|0)<<8|(h[p>>0]|0);break}default:{}}m=t+48|0;g=p+4194304|0;f[m>>2]=g;e=g>>>0>1073741823;if(e|q^1)j=e^1;else{l=t+44|0;j=t+16|0;k=t+28|0;e=r;i=0;while(1){b:do if(g>>>0<4194304)do{if((e|0)<=0)break b;e=e+-1|0;f[l>>2]=e;g=h[s+e>>0]|0|g<<8;f[m>>2]=g}while(g>>>0<4194304);while(0);p=g&1048575;r=f[(f[j>>2]|0)+(p<<2)>>2]|0;q=f[k>>2]|0;g=(X(f[q+(r<<3)>>2]|0,g>>>20)|0)+p-(f[q+(r<<3)+4>>2]|0)|0;f[m>>2]=g;f[d+(i<<2)>>2]=r;i=i+1|0;if((i|0)==(a|0)){j=1;break}}}}else j=0}else j=0;while(0);e=f[t+28>>2]|0;if(e|0){i=t+32|0;g=f[i>>2]|0;if((g|0)!=(e|0))f[i>>2]=g+(~((g+-8-e|0)>>>3)<<3);ar(e)}e=f[t+16>>2]|0;if(e|0){i=t+20|0;g=f[i>>2]|0;if((g|0)!=(e|0))f[i>>2]=g+(~((g+-4-e|0)>>>2)<<2);ar(e)}i=f[t>>2]|0;if(!i){u=v;return j|0}g=t+4|0;e=f[g>>2]|0;if((e|0)!=(i|0))f[g>>2]=e+(~((e+-4-i|0)>>>2)<<2);ar(i);u=v;return j|0}function Pc(a,c,d){a=a|0;c=c|0;d=d|0;var e=0,g=0,h=0,i=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,v=0,w=0;w=u;u=u+48|0;s=w+32|0;o=w+28|0;p=w+24|0;q=w+20|0;r=w+16|0;v=w;t=c+24|0;k=b[t>>0]|0;m=k<<24>>24;n=f[a+68>>2]|0;h=X(n,m)|0;f[v>>2]=f[348];f[v+4>>2]=f[349];f[v+8>>2]=f[350];f[v+12>>2]=f[351];g=d+4|0;e=f[g>>2]|0;a=f[d>>2]|0;i=e-a>>2;if(h>>>0<=i>>>0){if(h>>>0>>0?(j=a+(h<<2)|0,(e|0)!=(j|0)):0)f[g>>2]=e+(~((e+-4-j|0)>>>2)<<2)}else ui(d,h-i|0);if((n|0)<=0){v=1;u=w;return v|0}l=c+84|0;j=c+68|0;a:do if(k<<24>>24>0){h=0;i=0;while(1){if(!(b[l>>0]|0))a=f[(f[j>>2]|0)+(i<<2)>>2]|0;else a=i;switch(b[t>>0]|0){case 1:{f[o>>2]=a;f[s>>2]=f[o>>2];a=od(c,s,v)|0;break}case 2:{f[p>>2]=a;f[s>>2]=f[p>>2];a=wc(c,s,v)|0;break}case 3:{f[q>>2]=a;f[s>>2]=f[q>>2];a=Vc(c,s,v)|0;break}case 4:{f[r>>2]=a;f[s>>2]=f[r>>2];a=Nc(c,s,v)|0;break}default:break a}if(!a){a=0;e=29;break}a=f[d>>2]|0;e=h;g=0;while(1){f[a+(e<<2)>>2]=f[v+(g<<2)>>2];g=g+1|0;if((g|0)==(m|0))break;else e=e+1|0}i=i+1|0;if((i|0)>=(n|0)){a=1;e=29;break}else h=m+h|0}if((e|0)==29){u=w;return a|0}}else{e=0;while(1){if(!(b[l>>0]|0))a=f[(f[j>>2]|0)+(e<<2)>>2]|0;else a=e;switch(b[t>>0]|0){case 1:{f[o>>2]=a;f[s>>2]=f[o>>2];a=od(c,s,v)|0;break}case 2:{f[p>>2]=a;f[s>>2]=f[p>>2];a=wc(c,s,v)|0;break}case 3:{f[q>>2]=a;f[s>>2]=f[q>>2];a=Vc(c,s,v)|0;break}case 4:{f[r>>2]=a;f[s>>2]=f[r>>2];a=Nc(c,s,v)|0;break}default:break a}if(!a){a=0;e=29;break}e=e+1|0;if((e|0)>=(n|0)){a=1;e=29;break}}if((e|0)==29){u=w;return a|0}}while(0);v=0;u=w;return v|0}function Qc(a,c,d){a=a|0;c=c|0;d=d|0;var e=0,g=0,i=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,v=0;v=u;u=u+64|0;t=v;e=t;g=e+40|0;do{f[e>>2]=0;e=e+4|0}while((e|0)<(g|0));a:do if(oe(t,c)|0){q=(a|0)>0;if(q?(f[t+12>>2]|0)==0:0){j=0;break}j=c+8|0;i=f[j>>2]|0;j=f[j+4>>2]|0;l=c+16|0;e=l;k=f[e>>2]|0;e=Ho(k|0,f[e+4>>2]|0,8,0)|0;g=I;if((!((j|0)<(g|0)|(j|0)==(g|0)&i>>>0>>0)?(m=f[c>>2]|0,n=m+k|0,o=n,o=h[o>>0]|h[o+1>>0]<<8|h[o+2>>0]<<16|h[o+3>>0]<<24,n=n+4|0,n=h[n>>0]|h[n+1>>0]<<8|h[n+2>>0]<<16|h[n+3>>0]<<24,c=l,f[c>>2]=e,f[c+4>>2]=g,c=Xn(i|0,j|0,e|0,g|0)|0,k=I,!(n>>>0>k>>>0|(n|0)==(k|0)&o>>>0>c>>>0)):0)?(s=m+e|0,n=Ho(o|0,n|0,e|0,g|0)|0,c=l,f[c>>2]=n,f[c+4>>2]=I,(o|0)>=1):0){f[t+40>>2]=s;g=o+-1|0;e=s+g|0;switch((h[e>>0]|0)>>>6&3){case 0:{f[t+44>>2]=g;r=g;p=b[e>>0]&63;break}case 1:{if((o|0)<2){j=0;break a}r=o+-2|0;f[t+44>>2]=r;p=s+o+-2|0;p=(h[p+1>>0]|0)<<8&16128|(h[p>>0]|0);break}case 2:{if((o|0)<3){j=0;break a}r=o+-3|0;f[t+44>>2]=r;p=s+o+-3|0;p=(h[p+1>>0]|0)<<8|(h[p>>0]|0)|(h[p+2>>0]|0)<<16&4128768;break}case 3:{r=o+-4|0;f[t+44>>2]=r;p=s+o+-4|0;p=(h[p+2>>0]|0)<<16|(h[p+3>>0]|0)<<24&1056964608|(h[p+1>>0]|0)<<8|(h[p>>0]|0);break}default:{}}m=t+48|0;g=p+2097152|0;f[m>>2]=g;e=g>>>0>536870911;if(e|q^1)j=e^1;else{l=t+44|0;j=t+16|0;k=t+28|0;e=r;i=0;while(1){b:do if(g>>>0<2097152)do{if((e|0)<=0)break b;e=e+-1|0;f[l>>2]=e;g=h[s+e>>0]|0|g<<8;f[m>>2]=g}while(g>>>0<2097152);while(0);p=g&524287;r=f[(f[j>>2]|0)+(p<<2)>>2]|0;q=f[k>>2]|0;g=(X(f[q+(r<<3)>>2]|0,g>>>19)|0)+p-(f[q+(r<<3)+4>>2]|0)|0;f[m>>2]=g;f[d+(i<<2)>>2]=r;i=i+1|0;if((i|0)==(a|0)){j=1;break}}}}else j=0}else j=0;while(0);e=f[t+28>>2]|0;if(e|0){i=t+32|0;g=f[i>>2]|0;if((g|0)!=(e|0))f[i>>2]=g+(~((g+-8-e|0)>>>3)<<3);ar(e)}e=f[t+16>>2]|0;if(e|0){i=t+20|0;g=f[i>>2]|0;if((g|0)!=(e|0))f[i>>2]=g+(~((g+-4-e|0)>>>2)<<2);ar(e)}i=f[t>>2]|0;if(!i){u=v;return j|0}g=t+4|0;e=f[g>>2]|0;if((e|0)!=(i|0))f[g>>2]=e+(~((e+-4-i|0)>>>2)<<2);ar(i);u=v;return j|0} +function Ya(a,c){a=a|0;c=c|0;var d=0,e=0,g=0,i=0,j=0,k=0,l=0,m=0,o=0,p=0,q=0,r=0,s=0,t=0,v=0,w=0,x=0,y=0,z=0,A=0,B=0,C=0,D=0,E=0,F=0,G=0,H=0,I=0,J=0,K=0,L=0,M=0,N=0,O=0,P=0,Q=0,R=0,S=0,T=0,U=0,V=0,W=0,X=0,Y=0,Z=0,_=0,aa=0,ba=0,ca=0,da=0,ea=0,fa=0,ga=0,ha=0,ia=0,ja=0,ka=0,la=0,ma=0,na=0,oa=0,pa=0,qa=0,ra=0,sa=0,ta=0,ua=0,va=0,wa=0,xa=0,ya=0,za=0;za=u;u=u+48|0;pa=za+40|0;wa=za+28|0;xa=za+8|0;Z=za+4|0;ra=za;f[wa>>2]=0;ya=wa+4|0;f[ya>>2]=0;f[wa+8>>2]=0;f[xa>>2]=0;f[xa+4>>2]=0;f[xa+8>>2]=0;f[xa+12>>2]=0;n[xa+16>>2]=$(1.0);qa=a+136|0;ka=f[a+140>>2]|0;a:do if((c|0)>0){ja=a+240|0;K=a+356|0;y=a+276|0;_=a+352|0;A=a+272|0;B=a+264|0;C=a+268|0;J=a+8|0;H=xa+4|0;D=a+340|0;I=wa+8|0;ia=a+36|0;G=a+40|0;ha=c+-1|0;E=a+368|0;F=a+380|0;x=0;w=0;while(1){d=x+1|0;e=f[K>>2]|0;b:do if((e|0)!=-1){v=f[E>>2]|0;t=(f[F>>2]|0)+(e<<2)|0;la=(f[t>>2]|0)+-1|0;f[t>>2]=la;la=f[(f[v+(e*12|0)>>2]|0)+(la<<2)>>2]|0;e=f[4840+(la<<2)>>2]|0;f[_>>2]=e;if(!la)la=15;else la=58}else{do if(!(b[y>>0]|0))e=1;else{g=f[A>>2]|0;j=f[B>>2]|0;k=f[C>>2]|0;e=j+(g>>>3)|0;if(e>>>0>>0?(la=h[e>>0]|0,L=g+1|0,f[A>>2]=L,la&1<<(g&7)|0):0){e=j+(L>>>3)|0;if(e>>>0>>0){i=(h[e>>0]|0)>>>(L&7)&1;g=g+2|0;f[A>>2]=g}else{g=L;i=0}e=j+(g>>>3)|0;if(e>>>0>>0){e=(h[e>>0]|0)>>>(g&7);f[A>>2]=g+1;e=e<<1&2}else e=0;e=(e|i)<<1|1;break}f[_>>2]=0;la=15;break b}while(0);f[_>>2]=e;la=58}while(0);c:do if((la|0)==15){la=0;e=f[ya>>2]|0;if((f[wa>>2]|0)==(e|0)){g=-1;break a}s=f[e+-4>>2]|0;r=(s|0)<0;d:do if(!r){e=s+(((s>>>0)%3|0|0)==0?2:-1)|0;if((e|0)<0)la=18;else{j=f[J>>2]|0;i=f[j+12>>2]|0;while(1){g=f[i+(e<<2)>>2]|0;if((g|0)<=-1){p=0;break d}e=g+(((g>>>0)%3|0|0)==0?2:-1)|0;if((e|0)<0){p=1;break}}}}else{e=s;la=18}while(0);if((la|0)==18){la=0;j=f[J>>2]|0;i=f[j+12>>2]|0;p=1}v=x*3|0;q=v+1|0;f[i+(s<<2)>>2]=q;f[i+(q<<2)>>2]=s;t=v+2|0;f[i+(e<<2)>>2]=t;f[i+(t<<2)>>2]=e;g=s+1|0;if(!r?(fa=((g|0)%3|0|0)==0?s+-2|0:g,(fa|0)>=0):0){m=f[j>>2]|0;o=f[m+(fa<<2)>>2]|0;f[m+(v<<2)>>2]=o;if((o|0)>-1){m=j+24|0;j=j+28|0;i=f[j>>2]|0;g=f[m>>2]|0;l=i-g>>2;do if(l>>>0<=o>>>0){k=o+1|0;if(k>>>0>l>>>0){ui(m,k-l|0);g=f[m>>2]|0;break}if(k>>>0>>0?(N=g+(k<<2)|0,(i|0)!=(N|0)):0)f[j>>2]=i+(~((i+-4-N|0)>>>2)<<2)}while(0);f[g+(o<<2)>>2]=v;j=f[J>>2]|0}}else{f[(f[j>>2]|0)+(v<<2)>>2]=-1073741824;o=-1073741824}g=e+1|0;if(!p?(ea=((g|0)%3|0|0)==0?e+-2|0:g,(ea|0)>=0):0){p=f[j>>2]|0;m=f[p+(ea<<2)>>2]|0;f[p+(q<<2)>>2]=m;if((m|0)>-1){l=j+24|0;i=j+28|0;g=f[i>>2]|0;e=f[l>>2]|0;k=g-e>>2;do if(k>>>0<=m>>>0){j=m+1|0;if(j>>>0>k>>>0){ui(l,j-k|0);e=f[l>>2]|0;break}if(j>>>0>>0?(R=e+(j<<2)|0,(g|0)!=(R|0)):0)f[i>>2]=g+(~((g+-4-R|0)>>>2)<<2)}while(0);f[e+(m<<2)>>2]=q;j=f[J>>2]|0}}else f[(f[j>>2]|0)+(q<<2)>>2]=-1073741824;if(!r?(ca=(((s>>>0)%3|0|0)==0?2:-1)+s|0,(ca|0)>=0):0){s=f[j>>2]|0;m=f[s+(ca<<2)>>2]|0;f[s+(t<<2)>>2]=m;if((m|0)>-1){l=j+24|0;i=j+28|0;g=f[i>>2]|0;e=f[l>>2]|0;k=g-e>>2;do if(k>>>0<=m>>>0){j=m+1|0;if(j>>>0>k>>>0){ui(l,j-k|0);e=f[l>>2]|0;break}if(j>>>0>>0?(Q=e+(j<<2)|0,(g|0)!=(Q|0)):0)f[i>>2]=g+(~((g+-4-Q|0)>>>2)<<2)}while(0);g=t;e=e+(m<<2)|0;la=55}}else{g=-1073741824;e=(f[j>>2]|0)+(t<<2)|0;la=55}if((la|0)==55){la=0;f[e>>2]=g}if((w|0)>(ka|0)){g=-1;break a}e=(f[qa>>2]|0)+(o>>>5<<2)|0;f[e>>2]=f[e>>2]&~(1<<(o&31));f[(f[ya>>2]|0)+-4>>2]=v;e=v;g=0;k=w}else if((la|0)==58){la=0;switch(e|0){case 3:case 5:{g=f[ya>>2]|0;if((f[wa>>2]|0)==(g|0)){g=-1;break a}s=f[g+-4>>2]|0;t=x*3|0;r=((e|0)==5?2:1)+t|0;e=f[J>>2]|0;v=f[e+12>>2]|0;f[v+(r<<2)>>2]=s;f[v+(s<<2)>>2]=r;v=w+1|0;f[(f[e>>2]|0)+(r<<2)>>2]=w;if((w|0)>-1){k=e+24|0;i=e+28|0;g=f[i>>2]|0;e=f[k>>2]|0;j=g-e>>2;do if(j>>>0<=w>>>0){if(v>>>0>j>>>0){ui(k,v-j|0);e=f[k>>2]|0;break}if(v>>>0>>0?(P=e+(v<<2)|0,(g|0)!=(P|0)):0)f[i>>2]=g+(~((g+-4-P|0)>>>2)<<2)}while(0);f[e+(w<<2)>>2]=r;e=f[J>>2]|0}p=(r|0)<0;g=r+1|0;if(p)m=r;else m=((g|0)%3|0|0)==0?r+-2|0:g;q=(s|0)<0;if(!q?(ba=(((s>>>0)%3|0|0)==0?2:-1)+s|0,(ba|0)>=0):0){w=f[e>>2]|0;o=f[w+(ba<<2)>>2]|0;f[w+(m<<2)>>2]=o;if((o|0)>-1){l=e+24|0;i=e+28|0;g=f[i>>2]|0;e=f[l>>2]|0;k=g-e>>2;do if(k>>>0<=o>>>0){j=o+1|0;if(j>>>0>k>>>0){ui(l,j-k|0);e=f[l>>2]|0;break}if(j>>>0>>0?(O=e+(j<<2)|0,(g|0)!=(O|0)):0)f[i>>2]=g+(~((g+-4-O|0)>>>2)<<2)}while(0);f[e+(o<<2)>>2]=m;e=f[J>>2]|0}}else f[(f[e>>2]|0)+(m<<2)>>2]=-1073741824;do if(!p)if(!((r>>>0)%3|0)){o=r+2|0;break}else{o=r+-1|0;break}else o=r;while(0);g=s+1|0;if(!q?(da=((g|0)%3|0|0)==0?s+-2|0:g,(da|0)>=0):0){w=f[e>>2]|0;m=f[w+(da<<2)>>2]|0;f[w+(o<<2)>>2]=m;if((m|0)>-1){l=e+24|0;i=e+28|0;g=f[i>>2]|0;e=f[l>>2]|0;k=g-e>>2;do if(k>>>0<=m>>>0){j=m+1|0;if(j>>>0>k>>>0){ui(l,j-k|0);e=f[l>>2]|0;break}if(j>>>0>>0?(M=e+(j<<2)|0,(g|0)!=(M|0)):0)f[i>>2]=g+(~((g+-4-M|0)>>>2)<<2)}while(0);g=o;e=e+(m<<2)|0;la=96}}else{g=-1073741824;e=(f[e>>2]|0)+(o<<2)|0;la=96}if((la|0)==96){la=0;f[e>>2]=g}f[(f[ya>>2]|0)+-4>>2]=t;e=t;g=1;k=v;break c}case 1:{g=f[wa>>2]|0;e=f[ya>>2]|0;if((g|0)==(e|0)){g=-1;break a}p=e+-4|0;m=f[p>>2]|0;f[ya>>2]=p;k=f[H>>2]|0;e:do if(k){l=k+-1|0;j=(l&k|0)==0;if(j)o=l&x;else o=(x>>>0)%(k>>>0)|0;i=f[(f[xa>>2]|0)+(o<<2)>>2]|0;if(i){if(j)do{i=f[i>>2]|0;if(!i){e=p;break e}if((f[i+4>>2]&l|0)!=(o|0)){e=p;break e}}while((f[i+8>>2]|0)!=(x|0));else do{i=f[i>>2]|0;if(!i){e=p;break e}if((((f[i+4>>2]|0)>>>0)%(k>>>0)|0|0)!=(o|0)){e=p;break e}}while((f[i+8>>2]|0)!=(x|0));i=i+12|0;if((p|0)==(f[I>>2]|0)){Ii(wa,i);g=f[wa>>2]|0;e=f[ya>>2]|0;break}else{f[p>>2]=f[i>>2];f[ya>>2]=e;break}}else e=p}else e=p;while(0);if((g|0)==(e|0)){g=-1;break a}p=f[e+-4>>2]|0;t=x*3|0;s=t+2|0;e=f[J>>2]|0;v=f[e+12>>2]|0;f[v+(p<<2)>>2]=s;f[v+(s<<2)>>2]=p;r=t+1|0;f[v+(m<<2)>>2]=r;f[v+(r<<2)>>2]=m;if((p|0)>=0){g=(((p>>>0)%3|0|0)==0?2:-1)+p|0;i=f[e>>2]|0;if((g|0)>=0){j=f[i+(g<<2)>>2]|0;f[i+(t<<2)>>2]=j;if((j|0)>-1){o=e+24|0;i=e+28|0;g=f[i>>2]|0;e=f[o>>2]|0;l=g-e>>2;do if(l>>>0<=j>>>0){k=j+1|0;if(k>>>0>l>>>0){ui(o,k-l|0);e=f[o>>2]|0;break}if(k>>>0>>0?(Y=e+(k<<2)|0,(g|0)!=(Y|0)):0)f[i>>2]=g+(~((g+-4-Y|0)>>>2)<<2)}while(0);f[e+(j<<2)>>2]=t;e=f[J>>2]|0;i=1}else i=0}else{f[i+(t<<2)>>2]=-1073741824;i=0;j=-1073741824}g=p+1|0;g=((g|0)%3|0|0)==0?p+-2|0:g;k=f[e>>2]|0;if((g|0)>=0){q=f[k+(g<<2)>>2]|0;f[k+(r<<2)>>2]=q;if((q|0)>-1){p=e+24|0;k=e+28|0;g=f[k>>2]|0;e=f[p>>2]|0;o=g-e>>2;do if(o>>>0<=q>>>0){l=q+1|0;if(l>>>0>o>>>0){ui(p,l-o|0);e=f[p>>2]|0;break}if(l>>>0>>0?(X=e+(l<<2)|0,(g|0)!=(X|0)):0)f[k>>2]=g+(~((g+-4-X|0)>>>2)<<2)}while(0);f[e+(q<<2)>>2]=r;e=f[J>>2]|0;q=i}else q=i}else{g=k;la=128}}else{g=f[e>>2]|0;f[g+(t<<2)>>2]=-1073741824;i=0;j=-1073741824;la=128}if((la|0)==128){la=0;f[g+(r<<2)>>2]=-1073741824;q=i}if((m|0)>=0){g=(((m>>>0)%3|0|0)==0?2:-1)+m|0;i=f[e>>2]|0;if((g|0)>=0){p=f[i+(g<<2)>>2]|0;f[i+(s<<2)>>2]=p;if((p|0)>-1){o=e+24|0;i=e+28|0;g=f[i>>2]|0;e=f[o>>2]|0;l=g-e>>2;do if(l>>>0<=p>>>0){k=p+1|0;if(k>>>0>l>>>0){ui(o,k-l|0);e=f[o>>2]|0;break}if(k>>>0>>0?(W=e+(k<<2)|0,(g|0)!=(W|0)):0)f[i>>2]=g+(~((g+-4-W|0)>>>2)<<2)}while(0);g=s;e=e+(p<<2)|0;la=149}}else{g=-1073741824;e=i+(s<<2)|0;la=149}if((la|0)==149){la=0;f[e>>2]=g}i=m+1|0;i=((i|0)%3|0|0)==0?m+-2|0:i;g=f[J>>2]|0;if((i|0)<0){e=g;m=i;p=-1073741824}else{e=g;m=i;p=f[(f[g>>2]|0)+(i<<2)>>2]|0}}else{f[(f[e>>2]|0)+(s<<2)>>2]=-1073741824;p=-1073741824}s=f[D>>2]|0;v=s+(j<<2)|0;f[v>>2]=(f[v>>2]|0)+(f[s+(p<<2)>>2]|0);f:do if((m|0)>-1){o=j+1|0;if(!q){k=f[e>>2]|0;l=e+12|0;g=m;while(1){f[k+(g<<2)>>2]=j;v=g+1|0;g=((v|0)%3|0|0)==0?g+-2|0:v;if((g|0)<0)break f;i=f[(f[l>>2]|0)+(g<<2)>>2]|0;g=i+1|0;if((i|0)<0)break f;g=((g|0)%3|0|0)==0?i+-2|0:g;if((g|0)<=-1)break f}}do{f[(f[e>>2]|0)+(m<<2)>>2]=j;l=e+24|0;i=e+28|0;g=f[i>>2]|0;e=f[l>>2]|0;k=g-e>>2;do if(k>>>0<=j>>>0){if(o>>>0>k>>>0){ui(l,o-k|0);e=f[l>>2]|0;break}if(o>>>0>>0?(V=e+(o<<2)|0,(g|0)!=(V|0)):0)f[i>>2]=g+(~((g+-4-V|0)>>>2)<<2)}while(0);f[e+(j<<2)>>2]=m;g=m+1|0;g=((g|0)%3|0|0)==0?m+-2|0:g;e=f[J>>2]|0;if((g|0)<0)break f;i=f[(f[e+12>>2]|0)+(g<<2)>>2]|0;g=i+1|0;if((i|0)<0)break f;m=((g|0)%3|0|0)==0?i+-2|0:g}while((m|0)>-1)}while(0);f[(f[e+24>>2]|0)+(p<<2)>>2]=-1073741824;f[(f[ya>>2]|0)+-4>>2]=t;e=t;g=0;k=w;break c}case 7:{l=x*3|0;f[pa>>2]=l;i=f[J>>2]|0;o=w+1|0;e=f[i>>2]|0;f[e+(l<<2)>>2]=w;if((w|0)<=-1){g=l+1|0;j=w+2|0;f[e+(g<<2)>>2]=o;if((w|0)==-1){e=i;m=j;la=177}else{g=l;m=j}}else{k=i+24|0;i=i+28|0;g=f[i>>2]|0;e=f[k>>2]|0;j=g-e>>2;do if(j>>>0<=w>>>0){if(o>>>0>j>>>0){ui(k,o-j|0);e=f[k>>2]|0;break}if(o>>>0>>0?(U=e+(o<<2)|0,(g|0)!=(U|0)):0)f[i>>2]=g+(~((g+-4-U|0)>>>2)<<2)}while(0);f[e+(w<<2)>>2]=l;e=f[J>>2]|0;g=(f[pa>>2]|0)+1|0;f[(f[e>>2]|0)+(g<<2)>>2]=o;m=w+2|0;la=177}if((la|0)==177){la=0;l=e+24|0;j=e+28|0;i=f[j>>2]|0;e=f[l>>2]|0;k=i-e>>2;do if(k>>>0<=o>>>0){if(m>>>0>k>>>0){ui(l,m-k|0);e=f[l>>2]|0;break}if(m>>>0>>0?(T=e+(m<<2)|0,(i|0)!=(T|0)):0)f[j>>2]=i+(~((i+-4-T|0)>>>2)<<2)}while(0);f[e+(o<<2)>>2]=g;i=f[J>>2]|0;g=f[pa>>2]|0;e=f[i>>2]|0}l=g+2|0;o=w+3|0;f[e+(l<<2)>>2]=m;if((m|0)>-1){k=i+24|0;i=i+28|0;g=f[i>>2]|0;e=f[k>>2]|0;j=g-e>>2;do if(j>>>0<=m>>>0){if(o>>>0>j>>>0){ui(k,o-j|0);e=f[k>>2]|0;break}if(o>>>0>>0?(S=e+(o<<2)|0,(g|0)!=(S|0)):0)f[i>>2]=g+(~((g+-4-S|0)>>>2)<<2)}while(0);f[e+(m<<2)>>2]=l}e=f[ya>>2]|0;if((e|0)==(f[I>>2]|0)){Ii(wa,pa);e=f[ya>>2]|0}else{f[e>>2]=f[pa>>2];e=e+4|0;f[ya>>2]=e}e=f[e+-4>>2]|0;g=1;k=o;break c}default:{g=-1;break a}}}while(0);f[Z>>2]=e;f[pa>>2]=f[Z>>2];Ud(ja,pa);g:do if(g?(aa=c-x|0,ga=aa+-1|0,z=f[G>>2]|0,(z|0)!=(f[ia>>2]|0)):0){e=z;do{g=f[e+-8>>2]|0;if((g|0)>=(aa|0)){g=-1;break a}if((g|0)!=(ga|0))break g;g=b[e+-4>>0]|0;j=f[e+-12>>2]|0;f[G>>2]=e+-12;if((j|0)<0){g=-1;break a}e=f[(f[ya>>2]|0)+-4>>2]|0;i=(e|0)<0;do if(!(g&1)){if(!i)if(!((e>>>0)%3|0)){e=e+2|0;break}else{e=e+-1|0;break}}else{g=e+1|0;if(!i)e=((g|0)%3|0|0)==0?e+-2|0:g}while(0);f[pa>>2]=ha-j;x=Ge(xa,pa)|0;f[x>>2]=e;e=f[G>>2]|0}while((e|0)!=(f[ia>>2]|0))}while(0);if((d|0)<(c|0)){x=d;w=k}else{D=k;la=210;break}}}else{d=0;D=0;la=210}while(0);do if((la|0)==210)if((D|0)<=(ka|0)){g=f[ya>>2]|0;if((g|0)==(f[wa>>2]|0))e=a+8|0;else{s=a+316|0;e=a+8|0;C=a+64|0;A=a+68|0;y=a+72|0;x=a+80|0;z=a+84|0;B=a+76|0;t=a+312|0;v=a+304|0;w=a+308|0;do{ka=g;o=f[ka+-4>>2]|0;f[pa>>2]=o;f[ya>>2]=ka+-4;do if(b[s>>0]|0){g=f[t>>2]|0;i=(f[v>>2]|0)+(g>>>3)|0;if(i>>>0<(f[w>>2]|0)>>>0?(ka=h[i>>0]|0,f[t>>2]=g+1,ka&1<<(g&7)|0):0){la=217;break}g=f[A>>2]|0;i=f[y>>2]|0;if((g|0)==(i<<5|0)){if((g+1|0)<0){Lp(C);i=f[y>>2]|0}ka=i<<6;g=g+32&-32;ri(C,i<<5>>>0<1073741823?(ka>>>0>>0?g:ka):2147483647);g=f[A>>2]|0}f[A>>2]=g+1;ka=(f[C>>2]|0)+(g>>>5<<2)|0;f[ka>>2]=f[ka>>2]&~(1<<(g&31));g=f[x>>2]|0;if((g|0)==(f[z>>2]|0)){Ii(B,pa);break}else{f[g>>2]=f[pa>>2];f[x>>2]=g+4;break}}else la=217;while(0);if((la|0)==217){la=0;k=(o|0)<0;h:do if(!k){g=o+(((o>>>0)%3|0|0)==0?2:-1)|0;if((g|0)>=0){i=f[(f[e>>2]|0)+12>>2]|0;j=g;while(1){g=f[i+(j<<2)>>2]|0;if((g|0)<=-1){i=0;g=j;break}g=g+(((g>>>0)%3|0|0)==0?2:-1)|0;if((g|0)<0){i=1;break}else j=g}if(k){k=o;la=224;break}}else i=1;k=o+1|0;k=((k|0)%3|0|0)==0?o+-2|0:k;if((k|0)<0)la=224;else{j=f[e>>2]|0;l=f[j+12>>2]|0;m=k;while(1){k=f[l+(m<<2)>>2]|0;if((k|0)<=-1){q=0;break h}ka=k+1|0;k=((ka|0)%3|0|0)==0?k+-2|0:ka;if((k|0)<0){q=1;m=k;break}else m=k}}}else{i=1;g=o;k=o;la=224}while(0);if((la|0)==224){la=0;j=f[e>>2]|0;l=f[j+12>>2]|0;q=1;m=k}r=d+1|0;d=d*3|0;f[ra>>2]=d;f[l+(d<<2)>>2]=o;f[l+(o<<2)>>2]=d;d=(f[ra>>2]|0)+1|0;f[l+(d<<2)>>2]=g;f[l+(g<<2)>>2]=d;d=(f[ra>>2]|0)+2|0;f[l+(d<<2)>>2]=m;f[l+(m<<2)>>2]=d;d=f[ra>>2]|0;k=g+1|0;if(!i?(ua=((k|0)%3|0|0)==0?g+-2|0:k,(ua|0)>=0):0){ka=f[j>>2]|0;p=f[ka+(ua<<2)>>2]|0;f[ka+(d<<2)>>2]=p;if((p|0)>-1){o=j+24|0;j=j+28|0;i=f[j>>2]|0;g=f[o>>2]|0;l=i-g>>2;do if(l>>>0<=p>>>0){k=p+1|0;if(k>>>0>l>>>0){ui(o,k-l|0);g=f[o>>2]|0;break}if(k>>>0>>0?(oa=g+(k<<2)|0,(i|0)!=(oa|0)):0)f[j>>2]=i+(~((i+-4-oa|0)>>>2)<<2)}while(0);f[g+(p<<2)>>2]=d;d=f[ra>>2]|0;j=f[e>>2]|0}}else f[(f[j>>2]|0)+(d<<2)>>2]=-1073741824;o=d+1|0;g=m+1|0;if(!q?(ta=((g|0)%3|0|0)==0?m+-2|0:g,(ta|0)>=0):0){ka=f[j>>2]|0;m=f[ka+(ta<<2)>>2]|0;f[ka+(o<<2)>>2]=m;if((m|0)>-1){l=j+24|0;i=j+28|0;g=f[i>>2]|0;d=f[l>>2]|0;k=g-d>>2;do if(k>>>0<=m>>>0){j=m+1|0;if(j>>>0>k>>>0){ui(l,j-k|0);d=f[l>>2]|0;break}if(j>>>0>>0?(na=d+(j<<2)|0,(g|0)!=(na|0)):0)f[i>>2]=g+(~((g+-4-na|0)>>>2)<<2)}while(0);f[d+(m<<2)>>2]=o;d=f[ra>>2]|0;j=f[e>>2]|0}}else f[(f[j>>2]|0)+(o<<2)>>2]=-1073741824;o=d+2|0;g=f[pa>>2]|0;i=g+1|0;if((g|0)>=0?(sa=((i|0)%3|0|0)==0?g+-2|0:i,(sa|0)>=0):0){ka=f[j>>2]|0;m=f[ka+(sa<<2)>>2]|0;f[ka+(o<<2)>>2]=m;if((m|0)>-1){l=j+24|0;i=j+28|0;g=f[i>>2]|0;d=f[l>>2]|0;k=g-d>>2;do if(k>>>0<=m>>>0){j=m+1|0;if(j>>>0>k>>>0){ui(l,j-k|0);d=f[l>>2]|0;break}if(j>>>0>>0?(ma=d+(j<<2)|0,(g|0)!=(ma|0)):0)f[i>>2]=g+(~((g+-4-ma|0)>>>2)<<2)}while(0);f[d+(m<<2)>>2]=o;d=f[ra>>2]|0}}else f[(f[j>>2]|0)+(o<<2)>>2]=-1073741824;if((d|0)<0)d=-1073741824;else d=f[(f[f[e>>2]>>2]|0)+(d<<2)>>2]|0;g=f[qa>>2]|0;ka=g+(d>>>5<<2)|0;f[ka>>2]=f[ka>>2]&~(1<<(d&31));d=f[ra>>2]|0;if((d|0)<-1)d=-1073741824;else d=f[(f[f[e>>2]>>2]|0)+(d+1<<2)>>2]|0;ka=g+(d>>>5<<2)|0;f[ka>>2]=f[ka>>2]&~(1<<(d&31));d=f[ra>>2]|0;if((d|0)<-2)d=-1073741824;else d=f[(f[f[e>>2]>>2]|0)+(d+2<<2)>>2]|0;g=g+(d>>>5<<2)|0;f[g>>2]=f[g>>2]&~(1<<(d&31));d=f[A>>2]|0;g=f[y>>2]|0;if((d|0)==(g<<5|0)){if((d+1|0)<0){Lp(C);g=f[y>>2]|0}ka=g<<6;d=d+32&-32;ri(C,g<<5>>>0<1073741823?(ka>>>0>>0?d:ka):2147483647);d=f[A>>2]|0}f[A>>2]=d+1;ka=(f[C>>2]|0)+(d>>>5<<2)|0;f[ka>>2]=f[ka>>2]|1<<(d&31);d=f[x>>2]|0;if((d|0)==(f[z>>2]|0))Ii(B,ra);else{f[d>>2]=f[ra>>2];f[x>>2]=d+4}d=r}g=f[ya>>2]|0}while((g|0)!=(f[wa>>2]|0))}ua=f[e>>2]|0;if((d|0)==(((f[ua+4>>2]|0)-(f[ua>>2]|0)>>2>>>0)/3|0|0)){j=a+88|0;g=a+92|0;e=f[g>>2]|0;d=f[j>>2]|0;i=e-d>>2;if(D>>>0>i>>>0){ui(j,D-i|0);g=D;break}if(D>>>0>>0?(va=d+(D<<2)|0,(e|0)!=(va|0)):0){f[g>>2]=e+(~((e+-4-va|0)>>>2)<<2);g=D}else g=D}else g=-1}else g=-1;while(0);d=f[xa+8>>2]|0;if(d|0)do{va=d;d=f[d>>2]|0;ar(va)}while((d|0)!=0);d=f[xa>>2]|0;f[xa>>2]=0;if(d|0)ar(d);d=f[wa>>2]|0;if(!d){u=za;return g|0}e=f[ya>>2]|0;if((e|0)!=(d|0))f[ya>>2]=e+(~((e+-4-d|0)>>>2)<<2);ar(d);u=za;return g|0}function Za(a,c){a=a|0;c=c|0;var d=0,e=0,g=0,i=0,j=0,k=0,l=0,m=0,o=0,p=0,q=0,r=0,s=0,t=0,v=0,w=0,x=0,y=0,z=0,A=0,B=0,C=0,D=0,E=0,F=0,G=0,H=0,I=0,J=0,K=0,L=0,M=0,N=0,O=0,P=0,Q=0,R=0,S=0,T=0,U=0,V=0,W=0,X=0,Y=0,Z=0,_=0,aa=0,ba=0,ca=0,da=0,ea=0,fa=0,ga=0,ha=0,ia=0,ja=0,ka=0,la=0,ma=0,na=0,oa=0,pa=0,qa=0,ra=0,sa=0,ta=0,ua=0,va=0,wa=0,xa=0,ya=0;ya=u;u=u+48|0;oa=ya+40|0;va=ya+28|0;wa=ya+8|0;W=ya+4|0;qa=ya;f[va>>2]=0;xa=va+4|0;f[xa>>2]=0;f[va+8>>2]=0;f[wa>>2]=0;f[wa+4>>2]=0;f[wa+8>>2]=0;f[wa+12>>2]=0;n[wa+16>>2]=$(1.0);pa=a+136|0;ja=f[a+140>>2]|0;a:do if((c|0)>0){ia=a+240|0;Y=a+372|0;y=a+276|0;X=a+368|0;A=a+272|0;B=a+264|0;C=a+268|0;H=a+8|0;F=wa+4|0;D=a+340|0;G=va+8|0;ha=a+36|0;E=a+40|0;ga=c+-1|0;Z=a+352|0;x=0;w=0;while(1){d=x+1|0;if((f[Y>>2]|0)!=-1?Tk(Z)|0:0){e=f[Y>>2]|0;f[X>>2]=e;if(!e)ka=16;else ka=59}else ka=5;b:do if((ka|0)==5){do if(!(b[y>>0]|0))e=1;else{g=f[A>>2]|0;j=f[B>>2]|0;k=f[C>>2]|0;e=j+(g>>>3)|0;if(e>>>0>>0?(ka=h[e>>0]|0,I=g+1|0,f[A>>2]=I,ka&1<<(g&7)|0):0){e=j+(I>>>3)|0;if(e>>>0>>0){i=(h[e>>0]|0)>>>(I&7)&1;g=g+2|0;f[A>>2]=g}else{g=I;i=0}e=j+(g>>>3)|0;if(e>>>0>>0){e=(h[e>>0]|0)>>>(g&7);f[A>>2]=g+1;e=e<<1&2}else e=0;e=(e|i)<<1|1;break}f[X>>2]=0;ka=16;break b}while(0);f[X>>2]=e;ka=59}while(0);c:do if((ka|0)==16){ka=0;e=f[xa>>2]|0;if((f[va>>2]|0)==(e|0)){g=-1;break a}s=f[e+-4>>2]|0;r=(s|0)<0;d:do if(!r){e=s+(((s>>>0)%3|0|0)==0?2:-1)|0;if((e|0)<0)ka=19;else{j=f[H>>2]|0;i=f[j+12>>2]|0;while(1){g=f[i+(e<<2)>>2]|0;if((g|0)<=-1){p=0;break d}e=g+(((g>>>0)%3|0|0)==0?2:-1)|0;if((e|0)<0){p=1;break}}}}else{e=s;ka=19}while(0);if((ka|0)==19){ka=0;j=f[H>>2]|0;i=f[j+12>>2]|0;p=1}v=x*3|0;q=v+1|0;f[i+(s<<2)>>2]=q;f[i+(q<<2)>>2]=s;t=v+2|0;f[i+(e<<2)>>2]=t;f[i+(t<<2)>>2]=e;g=s+1|0;if(!r?(ea=((g|0)%3|0|0)==0?s+-2|0:g,(ea|0)>=0):0){m=f[j>>2]|0;o=f[m+(ea<<2)>>2]|0;f[m+(v<<2)>>2]=o;if((o|0)>-1){m=j+24|0;j=j+28|0;i=f[j>>2]|0;g=f[m>>2]|0;l=i-g>>2;do if(l>>>0<=o>>>0){k=o+1|0;if(k>>>0>l>>>0){ui(m,k-l|0);g=f[m>>2]|0;break}if(k>>>0>>0?(J=g+(k<<2)|0,(i|0)!=(J|0)):0)f[j>>2]=i+(~((i+-4-J|0)>>>2)<<2)}while(0);f[g+(o<<2)>>2]=v;j=f[H>>2]|0}}else{f[(f[j>>2]|0)+(v<<2)>>2]=-1073741824;o=-1073741824}g=e+1|0;if(!p?(da=((g|0)%3|0|0)==0?e+-2|0:g,(da|0)>=0):0){p=f[j>>2]|0;m=f[p+(da<<2)>>2]|0;f[p+(q<<2)>>2]=m;if((m|0)>-1){l=j+24|0;i=j+28|0;g=f[i>>2]|0;e=f[l>>2]|0;k=g-e>>2;do if(k>>>0<=m>>>0){j=m+1|0;if(j>>>0>k>>>0){ui(l,j-k|0);e=f[l>>2]|0;break}if(j>>>0>>0?(O=e+(j<<2)|0,(g|0)!=(O|0)):0)f[i>>2]=g+(~((g+-4-O|0)>>>2)<<2)}while(0);f[e+(m<<2)>>2]=q;j=f[H>>2]|0}}else f[(f[j>>2]|0)+(q<<2)>>2]=-1073741824;if(!r?(ba=(((s>>>0)%3|0|0)==0?2:-1)+s|0,(ba|0)>=0):0){s=f[j>>2]|0;m=f[s+(ba<<2)>>2]|0;f[s+(t<<2)>>2]=m;if((m|0)>-1){l=j+24|0;i=j+28|0;g=f[i>>2]|0;e=f[l>>2]|0;k=g-e>>2;do if(k>>>0<=m>>>0){j=m+1|0;if(j>>>0>k>>>0){ui(l,j-k|0);e=f[l>>2]|0;break}if(j>>>0>>0?(N=e+(j<<2)|0,(g|0)!=(N|0)):0)f[i>>2]=g+(~((g+-4-N|0)>>>2)<<2)}while(0);g=t;e=e+(m<<2)|0;ka=56}}else{g=-1073741824;e=(f[j>>2]|0)+(t<<2)|0;ka=56}if((ka|0)==56){ka=0;f[e>>2]=g}if((w|0)>(ja|0)){g=-1;break a}e=(f[pa>>2]|0)+(o>>>5<<2)|0;f[e>>2]=f[e>>2]&~(1<<(o&31));f[(f[xa>>2]|0)+-4>>2]=v;e=v;g=0;k=w}else if((ka|0)==59){ka=0;switch(e|0){case 3:case 5:{g=f[xa>>2]|0;if((f[va>>2]|0)==(g|0)){g=-1;break a}s=f[g+-4>>2]|0;t=x*3|0;r=((e|0)==5?2:1)+t|0;e=f[H>>2]|0;v=f[e+12>>2]|0;f[v+(r<<2)>>2]=s;f[v+(s<<2)>>2]=r;v=w+1|0;f[(f[e>>2]|0)+(r<<2)>>2]=w;if((w|0)>-1){k=e+24|0;i=e+28|0;g=f[i>>2]|0;e=f[k>>2]|0;j=g-e>>2;do if(j>>>0<=w>>>0){if(v>>>0>j>>>0){ui(k,v-j|0);e=f[k>>2]|0;break}if(v>>>0>>0?(M=e+(v<<2)|0,(g|0)!=(M|0)):0)f[i>>2]=g+(~((g+-4-M|0)>>>2)<<2)}while(0);f[e+(w<<2)>>2]=r;e=f[H>>2]|0}p=(r|0)<0;g=r+1|0;if(p)m=r;else m=((g|0)%3|0|0)==0?r+-2|0:g;q=(s|0)<0;if(!q?(aa=(((s>>>0)%3|0|0)==0?2:-1)+s|0,(aa|0)>=0):0){w=f[e>>2]|0;o=f[w+(aa<<2)>>2]|0;f[w+(m<<2)>>2]=o;if((o|0)>-1){l=e+24|0;i=e+28|0;g=f[i>>2]|0;e=f[l>>2]|0;k=g-e>>2;do if(k>>>0<=o>>>0){j=o+1|0;if(j>>>0>k>>>0){ui(l,j-k|0);e=f[l>>2]|0;break}if(j>>>0>>0?(L=e+(j<<2)|0,(g|0)!=(L|0)):0)f[i>>2]=g+(~((g+-4-L|0)>>>2)<<2)}while(0);f[e+(o<<2)>>2]=m;e=f[H>>2]|0}}else f[(f[e>>2]|0)+(m<<2)>>2]=-1073741824;do if(!p)if(!((r>>>0)%3|0)){o=r+2|0;break}else{o=r+-1|0;break}else o=r;while(0);g=s+1|0;if(!q?(ca=((g|0)%3|0|0)==0?s+-2|0:g,(ca|0)>=0):0){w=f[e>>2]|0;m=f[w+(ca<<2)>>2]|0;f[w+(o<<2)>>2]=m;if((m|0)>-1){l=e+24|0;i=e+28|0;g=f[i>>2]|0;e=f[l>>2]|0;k=g-e>>2;do if(k>>>0<=m>>>0){j=m+1|0;if(j>>>0>k>>>0){ui(l,j-k|0);e=f[l>>2]|0;break}if(j>>>0>>0?(K=e+(j<<2)|0,(g|0)!=(K|0)):0)f[i>>2]=g+(~((g+-4-K|0)>>>2)<<2)}while(0);g=o;e=e+(m<<2)|0;ka=97}}else{g=-1073741824;e=(f[e>>2]|0)+(o<<2)|0;ka=97}if((ka|0)==97){ka=0;f[e>>2]=g}f[(f[xa>>2]|0)+-4>>2]=t;e=t;g=1;k=v;break c}case 1:{g=f[va>>2]|0;e=f[xa>>2]|0;if((g|0)==(e|0)){g=-1;break a}p=e+-4|0;m=f[p>>2]|0;f[xa>>2]=p;k=f[F>>2]|0;e:do if(k){l=k+-1|0;j=(l&k|0)==0;if(j)o=l&x;else o=(x>>>0)%(k>>>0)|0;i=f[(f[wa>>2]|0)+(o<<2)>>2]|0;if(i){if(j)do{i=f[i>>2]|0;if(!i){e=p;break e}if((f[i+4>>2]&l|0)!=(o|0)){e=p;break e}}while((f[i+8>>2]|0)!=(x|0));else do{i=f[i>>2]|0;if(!i){e=p;break e}if((((f[i+4>>2]|0)>>>0)%(k>>>0)|0|0)!=(o|0)){e=p;break e}}while((f[i+8>>2]|0)!=(x|0));i=i+12|0;if((p|0)==(f[G>>2]|0)){Ii(va,i);g=f[va>>2]|0;e=f[xa>>2]|0;break}else{f[p>>2]=f[i>>2];f[xa>>2]=e;break}}else e=p}else e=p;while(0);if((g|0)==(e|0)){g=-1;break a}p=f[e+-4>>2]|0;t=x*3|0;s=t+2|0;e=f[H>>2]|0;v=f[e+12>>2]|0;f[v+(p<<2)>>2]=s;f[v+(s<<2)>>2]=p;r=t+1|0;f[v+(m<<2)>>2]=r;f[v+(r<<2)>>2]=m;if((p|0)>=0){g=(((p>>>0)%3|0|0)==0?2:-1)+p|0;i=f[e>>2]|0;if((g|0)>=0){j=f[i+(g<<2)>>2]|0;f[i+(t<<2)>>2]=j;if((j|0)>-1){o=e+24|0;i=e+28|0;g=f[i>>2]|0;e=f[o>>2]|0;l=g-e>>2;do if(l>>>0<=j>>>0){k=j+1|0;if(k>>>0>l>>>0){ui(o,k-l|0);e=f[o>>2]|0;break}if(k>>>0>>0?(V=e+(k<<2)|0,(g|0)!=(V|0)):0)f[i>>2]=g+(~((g+-4-V|0)>>>2)<<2)}while(0);f[e+(j<<2)>>2]=t;e=f[H>>2]|0;i=1}else i=0}else{f[i+(t<<2)>>2]=-1073741824;i=0;j=-1073741824}g=p+1|0;g=((g|0)%3|0|0)==0?p+-2|0:g;k=f[e>>2]|0;if((g|0)>=0){q=f[k+(g<<2)>>2]|0;f[k+(r<<2)>>2]=q;if((q|0)>-1){p=e+24|0;k=e+28|0;g=f[k>>2]|0;e=f[p>>2]|0;o=g-e>>2;do if(o>>>0<=q>>>0){l=q+1|0;if(l>>>0>o>>>0){ui(p,l-o|0);e=f[p>>2]|0;break}if(l>>>0>>0?(U=e+(l<<2)|0,(g|0)!=(U|0)):0)f[k>>2]=g+(~((g+-4-U|0)>>>2)<<2)}while(0);f[e+(q<<2)>>2]=r;e=f[H>>2]|0;q=i}else q=i}else{g=k;ka=129}}else{g=f[e>>2]|0;f[g+(t<<2)>>2]=-1073741824;i=0;j=-1073741824;ka=129}if((ka|0)==129){ka=0;f[g+(r<<2)>>2]=-1073741824;q=i}if((m|0)>=0){g=(((m>>>0)%3|0|0)==0?2:-1)+m|0;i=f[e>>2]|0;if((g|0)>=0){p=f[i+(g<<2)>>2]|0;f[i+(s<<2)>>2]=p;if((p|0)>-1){o=e+24|0;i=e+28|0;g=f[i>>2]|0;e=f[o>>2]|0;l=g-e>>2;do if(l>>>0<=p>>>0){k=p+1|0;if(k>>>0>l>>>0){ui(o,k-l|0);e=f[o>>2]|0;break}if(k>>>0>>0?(T=e+(k<<2)|0,(g|0)!=(T|0)):0)f[i>>2]=g+(~((g+-4-T|0)>>>2)<<2)}while(0);g=s;e=e+(p<<2)|0;ka=150}}else{g=-1073741824;e=i+(s<<2)|0;ka=150}if((ka|0)==150){ka=0;f[e>>2]=g}i=m+1|0;i=((i|0)%3|0|0)==0?m+-2|0:i;g=f[H>>2]|0;if((i|0)<0){e=g;m=i;p=-1073741824}else{e=g;m=i;p=f[(f[g>>2]|0)+(i<<2)>>2]|0}}else{f[(f[e>>2]|0)+(s<<2)>>2]=-1073741824;p=-1073741824}s=f[D>>2]|0;v=s+(j<<2)|0;f[v>>2]=(f[v>>2]|0)+(f[s+(p<<2)>>2]|0);f:do if((m|0)>-1){o=j+1|0;if(!q){k=f[e>>2]|0;l=e+12|0;g=m;while(1){f[k+(g<<2)>>2]=j;v=g+1|0;g=((v|0)%3|0|0)==0?g+-2|0:v;if((g|0)<0)break f;i=f[(f[l>>2]|0)+(g<<2)>>2]|0;g=i+1|0;if((i|0)<0)break f;g=((g|0)%3|0|0)==0?i+-2|0:g;if((g|0)<=-1)break f}}do{f[(f[e>>2]|0)+(m<<2)>>2]=j;l=e+24|0;i=e+28|0;g=f[i>>2]|0;e=f[l>>2]|0;k=g-e>>2;do if(k>>>0<=j>>>0){if(o>>>0>k>>>0){ui(l,o-k|0);e=f[l>>2]|0;break}if(o>>>0>>0?(S=e+(o<<2)|0,(g|0)!=(S|0)):0)f[i>>2]=g+(~((g+-4-S|0)>>>2)<<2)}while(0);f[e+(j<<2)>>2]=m;g=m+1|0;g=((g|0)%3|0|0)==0?m+-2|0:g;e=f[H>>2]|0;if((g|0)<0)break f;i=f[(f[e+12>>2]|0)+(g<<2)>>2]|0;g=i+1|0;if((i|0)<0)break f;m=((g|0)%3|0|0)==0?i+-2|0:g}while((m|0)>-1)}while(0);f[(f[e+24>>2]|0)+(p<<2)>>2]=-1073741824;f[(f[xa>>2]|0)+-4>>2]=t;e=t;g=0;k=w;break c}case 7:{l=x*3|0;f[oa>>2]=l;i=f[H>>2]|0;o=w+1|0;e=f[i>>2]|0;f[e+(l<<2)>>2]=w;if((w|0)<=-1){g=l+1|0;j=w+2|0;f[e+(g<<2)>>2]=o;if((w|0)==-1){e=i;m=j;ka=178}else{g=l;m=j}}else{k=i+24|0;i=i+28|0;g=f[i>>2]|0;e=f[k>>2]|0;j=g-e>>2;do if(j>>>0<=w>>>0){if(o>>>0>j>>>0){ui(k,o-j|0);e=f[k>>2]|0;break}if(o>>>0>>0?(R=e+(o<<2)|0,(g|0)!=(R|0)):0)f[i>>2]=g+(~((g+-4-R|0)>>>2)<<2)}while(0);f[e+(w<<2)>>2]=l;e=f[H>>2]|0;g=(f[oa>>2]|0)+1|0;f[(f[e>>2]|0)+(g<<2)>>2]=o;m=w+2|0;ka=178}if((ka|0)==178){ka=0;l=e+24|0;j=e+28|0;i=f[j>>2]|0;e=f[l>>2]|0;k=i-e>>2;do if(k>>>0<=o>>>0){if(m>>>0>k>>>0){ui(l,m-k|0);e=f[l>>2]|0;break}if(m>>>0>>0?(Q=e+(m<<2)|0,(i|0)!=(Q|0)):0)f[j>>2]=i+(~((i+-4-Q|0)>>>2)<<2)}while(0);f[e+(o<<2)>>2]=g;i=f[H>>2]|0;g=f[oa>>2]|0;e=f[i>>2]|0}l=g+2|0;o=w+3|0;f[e+(l<<2)>>2]=m;if((m|0)>-1){k=i+24|0;i=i+28|0;g=f[i>>2]|0;e=f[k>>2]|0;j=g-e>>2;do if(j>>>0<=m>>>0){if(o>>>0>j>>>0){ui(k,o-j|0);e=f[k>>2]|0;break}if(o>>>0>>0?(P=e+(o<<2)|0,(g|0)!=(P|0)):0)f[i>>2]=g+(~((g+-4-P|0)>>>2)<<2)}while(0);f[e+(m<<2)>>2]=l}e=f[xa>>2]|0;if((e|0)==(f[G>>2]|0)){Ii(va,oa);e=f[xa>>2]|0}else{f[e>>2]=f[oa>>2];e=e+4|0;f[xa>>2]=e}e=f[e+-4>>2]|0;g=1;k=o;break c}default:{g=-1;break a}}}while(0);f[W>>2]=e;f[oa>>2]=f[W>>2];Od(ia,oa);g:do if(g?(_=c-x|0,fa=_+-1|0,z=f[E>>2]|0,(z|0)!=(f[ha>>2]|0)):0){e=z;do{g=f[e+-8>>2]|0;if((g|0)>=(_|0)){g=-1;break a}if((g|0)!=(fa|0))break g;g=b[e+-4>>0]|0;j=f[e+-12>>2]|0;f[E>>2]=e+-12;if((j|0)<0){g=-1;break a}e=f[(f[xa>>2]|0)+-4>>2]|0;i=(e|0)<0;do if(!(g&1)){if(!i)if(!((e>>>0)%3|0)){e=e+2|0;break}else{e=e+-1|0;break}}else{g=e+1|0;if(!i)e=((g|0)%3|0|0)==0?e+-2|0:g}while(0);f[oa>>2]=ga-j;x=Ge(wa,oa)|0;f[x>>2]=e;e=f[E>>2]|0}while((e|0)!=(f[ha>>2]|0))}while(0);if((d|0)<(c|0)){x=d;w=k}else{D=k;ka=211;break}}}else{d=0;D=0;ka=211}while(0);do if((ka|0)==211)if((D|0)<=(ja|0)){g=f[xa>>2]|0;if((g|0)==(f[va>>2]|0))e=a+8|0;else{s=a+316|0;e=a+8|0;C=a+64|0;A=a+68|0;y=a+72|0;x=a+80|0;z=a+84|0;B=a+76|0;t=a+312|0;v=a+304|0;w=a+308|0;do{ja=g;o=f[ja+-4>>2]|0;f[oa>>2]=o;f[xa>>2]=ja+-4;do if(b[s>>0]|0){g=f[t>>2]|0;i=(f[v>>2]|0)+(g>>>3)|0;if(i>>>0<(f[w>>2]|0)>>>0?(ja=h[i>>0]|0,f[t>>2]=g+1,ja&1<<(g&7)|0):0){ka=218;break}g=f[A>>2]|0;i=f[y>>2]|0;if((g|0)==(i<<5|0)){if((g+1|0)<0){Lp(C);i=f[y>>2]|0}ja=i<<6;g=g+32&-32;ri(C,i<<5>>>0<1073741823?(ja>>>0>>0?g:ja):2147483647);g=f[A>>2]|0}f[A>>2]=g+1;ja=(f[C>>2]|0)+(g>>>5<<2)|0;f[ja>>2]=f[ja>>2]&~(1<<(g&31));g=f[x>>2]|0;if((g|0)==(f[z>>2]|0)){Ii(B,oa);break}else{f[g>>2]=f[oa>>2];f[x>>2]=g+4;break}}else ka=218;while(0);if((ka|0)==218){ka=0;k=(o|0)<0;h:do if(!k){g=o+(((o>>>0)%3|0|0)==0?2:-1)|0;if((g|0)>=0){i=f[(f[e>>2]|0)+12>>2]|0;j=g;while(1){g=f[i+(j<<2)>>2]|0;if((g|0)<=-1){i=0;g=j;break}g=g+(((g>>>0)%3|0|0)==0?2:-1)|0;if((g|0)<0){i=1;break}else j=g}if(k){k=o;ka=225;break}}else i=1;k=o+1|0;k=((k|0)%3|0|0)==0?o+-2|0:k;if((k|0)<0)ka=225;else{j=f[e>>2]|0;l=f[j+12>>2]|0;m=k;while(1){k=f[l+(m<<2)>>2]|0;if((k|0)<=-1){q=0;break h}ja=k+1|0;k=((ja|0)%3|0|0)==0?k+-2|0:ja;if((k|0)<0){q=1;m=k;break}else m=k}}}else{i=1;g=o;k=o;ka=225}while(0);if((ka|0)==225){ka=0;j=f[e>>2]|0;l=f[j+12>>2]|0;q=1;m=k}r=d+1|0;d=d*3|0;f[qa>>2]=d;f[l+(d<<2)>>2]=o;f[l+(o<<2)>>2]=d;d=(f[qa>>2]|0)+1|0;f[l+(d<<2)>>2]=g;f[l+(g<<2)>>2]=d;d=(f[qa>>2]|0)+2|0;f[l+(d<<2)>>2]=m;f[l+(m<<2)>>2]=d;d=f[qa>>2]|0;k=g+1|0;if(!i?(ta=((k|0)%3|0|0)==0?g+-2|0:k,(ta|0)>=0):0){ja=f[j>>2]|0;p=f[ja+(ta<<2)>>2]|0;f[ja+(d<<2)>>2]=p;if((p|0)>-1){o=j+24|0;j=j+28|0;i=f[j>>2]|0;g=f[o>>2]|0;l=i-g>>2;do if(l>>>0<=p>>>0){k=p+1|0;if(k>>>0>l>>>0){ui(o,k-l|0);g=f[o>>2]|0;break}if(k>>>0>>0?(na=g+(k<<2)|0,(i|0)!=(na|0)):0)f[j>>2]=i+(~((i+-4-na|0)>>>2)<<2)}while(0);f[g+(p<<2)>>2]=d;d=f[qa>>2]|0;j=f[e>>2]|0}}else f[(f[j>>2]|0)+(d<<2)>>2]=-1073741824;o=d+1|0;g=m+1|0;if(!q?(sa=((g|0)%3|0|0)==0?m+-2|0:g,(sa|0)>=0):0){ja=f[j>>2]|0;m=f[ja+(sa<<2)>>2]|0;f[ja+(o<<2)>>2]=m;if((m|0)>-1){l=j+24|0;i=j+28|0;g=f[i>>2]|0;d=f[l>>2]|0;k=g-d>>2;do if(k>>>0<=m>>>0){j=m+1|0;if(j>>>0>k>>>0){ui(l,j-k|0);d=f[l>>2]|0;break}if(j>>>0>>0?(ma=d+(j<<2)|0,(g|0)!=(ma|0)):0)f[i>>2]=g+(~((g+-4-ma|0)>>>2)<<2)}while(0);f[d+(m<<2)>>2]=o;d=f[qa>>2]|0;j=f[e>>2]|0}}else f[(f[j>>2]|0)+(o<<2)>>2]=-1073741824;o=d+2|0;g=f[oa>>2]|0;i=g+1|0;if((g|0)>=0?(ra=((i|0)%3|0|0)==0?g+-2|0:i,(ra|0)>=0):0){ja=f[j>>2]|0;m=f[ja+(ra<<2)>>2]|0;f[ja+(o<<2)>>2]=m;if((m|0)>-1){l=j+24|0;i=j+28|0;g=f[i>>2]|0;d=f[l>>2]|0;k=g-d>>2;do if(k>>>0<=m>>>0){j=m+1|0;if(j>>>0>k>>>0){ui(l,j-k|0);d=f[l>>2]|0;break}if(j>>>0>>0?(la=d+(j<<2)|0,(g|0)!=(la|0)):0)f[i>>2]=g+(~((g+-4-la|0)>>>2)<<2)}while(0);f[d+(m<<2)>>2]=o;d=f[qa>>2]|0}}else f[(f[j>>2]|0)+(o<<2)>>2]=-1073741824;if((d|0)<0)d=-1073741824;else d=f[(f[f[e>>2]>>2]|0)+(d<<2)>>2]|0;g=f[pa>>2]|0;ja=g+(d>>>5<<2)|0;f[ja>>2]=f[ja>>2]&~(1<<(d&31));d=f[qa>>2]|0;if((d|0)<-1)d=-1073741824;else d=f[(f[f[e>>2]>>2]|0)+(d+1<<2)>>2]|0;ja=g+(d>>>5<<2)|0;f[ja>>2]=f[ja>>2]&~(1<<(d&31));d=f[qa>>2]|0;if((d|0)<-2)d=-1073741824;else d=f[(f[f[e>>2]>>2]|0)+(d+2<<2)>>2]|0;g=g+(d>>>5<<2)|0;f[g>>2]=f[g>>2]&~(1<<(d&31));d=f[A>>2]|0;g=f[y>>2]|0;if((d|0)==(g<<5|0)){if((d+1|0)<0){Lp(C);g=f[y>>2]|0}ja=g<<6;d=d+32&-32;ri(C,g<<5>>>0<1073741823?(ja>>>0>>0?d:ja):2147483647);d=f[A>>2]|0}f[A>>2]=d+1;ja=(f[C>>2]|0)+(d>>>5<<2)|0;f[ja>>2]=f[ja>>2]|1<<(d&31);d=f[x>>2]|0;if((d|0)==(f[z>>2]|0))Ii(B,qa);else{f[d>>2]=f[qa>>2];f[x>>2]=d+4}d=r}g=f[xa>>2]|0}while((g|0)!=(f[va>>2]|0))}ta=f[e>>2]|0;if((d|0)==(((f[ta+4>>2]|0)-(f[ta>>2]|0)>>2>>>0)/3|0|0)){j=a+88|0;g=a+92|0;e=f[g>>2]|0;d=f[j>>2]|0;i=e-d>>2;if(D>>>0>i>>>0){ui(j,D-i|0);g=D;break}if(D>>>0>>0?(ua=d+(D<<2)|0,(e|0)!=(ua|0)):0){f[g>>2]=e+(~((e+-4-ua|0)>>>2)<<2);g=D}else g=D}else g=-1}else g=-1;while(0);d=f[wa+8>>2]|0;if(d|0)do{ua=d;d=f[d>>2]|0;ar(ua)}while((d|0)!=0);d=f[wa>>2]|0;f[wa>>2]=0;if(d|0)ar(d);d=f[va>>2]|0;if(!d){u=ya;return g|0}e=f[xa>>2]|0;if((e|0)!=(d|0))f[xa>>2]=e+(~((e+-4-d|0)>>>2)<<2);ar(d);u=ya;return g|0}function _a(a,c){a=a|0;c=c|0;var d=0,e=0,g=0,i=0,j=0,k=0,l=0,m=0,o=0,p=0,q=0,r=0,s=0,t=0,v=0,w=0,x=0,y=0,z=0,A=0,B=0,C=0,D=0,E=0,F=0,G=0,H=0,I=0,J=0,K=0,L=0,M=0,N=0,O=0,P=0,Q=0,R=0,S=0,T=0,U=0,V=0,W=0,X=0,Y=0,Z=0,_=0,aa=0,ba=0,ca=0,da=0,ea=0,fa=0,ga=0,ha=0,ia=0,ja=0,ka=0,la=0,ma=0,na=0,oa=0,pa=0;pa=u;u=u+48|0;ma=pa+28|0;na=pa+8|0;fa=pa+4|0;ha=pa;f[ma>>2]=0;oa=ma+4|0;f[oa>>2]=0;f[ma+8>>2]=0;f[na>>2]=0;f[na+4>>2]=0;f[na+8>>2]=0;f[na+12>>2]=0;n[na+16>>2]=$(1.0);ga=a+136|0;aa=f[a+140>>2]|0;a:do if((c|0)>0){S=a+276|0;A=na+4|0;B=a+8|0;C=ma+8|0;T=a+272|0;Q=a+264|0;R=a+268|0;_=a+36|0;z=a+40|0;Z=c+-1|0;x=0;y=0;b:while(1){d=x+1|0;c:do if(!(b[S>>0]|0))ba=93;else{g=f[T>>2]|0;j=f[Q>>2]|0;k=f[R>>2]|0;e=j+(g>>>3)|0;if(e>>>0>>0?(w=h[e>>0]|0,E=g+1|0,f[T>>2]=E,w&1<<(g&7)|0):0){e=j+(E>>>3)|0;if(e>>>0>>0){i=(h[e>>0]|0)>>>(E&7)&1;g=g+2|0;f[T>>2]=g}else{g=E;i=0}e=j+(g>>>3)|0;if(e>>>0>>0){e=(h[e>>0]|0)>>>(g&7);f[T>>2]=g+1;e=e<<1&2}else e=0;g=(e|i)<<1|1;switch(g&7){case 1:{ba=93;break c}case 3:case 5:{e=f[oa>>2]|0;if((f[ma>>2]|0)==(e|0)){D=-1;break a}v=f[e+-4>>2]|0;w=x*3|0;t=((g|0)==5?2:1)+w|0;g=f[B>>2]|0;e=f[g+12>>2]|0;f[e+(t<<2)>>2]=v;f[e+(v<<2)>>2]=t;e=y+1|0;f[(f[g>>2]|0)+(t<<2)>>2]=y;if((y|0)>-1){l=g+24|0;j=g+28|0;i=f[j>>2]|0;g=f[l>>2]|0;k=i-g>>2;do if(k>>>0<=y>>>0){if(e>>>0>k>>>0){ui(l,e-k|0);g=f[l>>2]|0;break}if(e>>>0>>0?(G=g+(e<<2)|0,(i|0)!=(G|0)):0)f[j>>2]=i+(~((i+-4-G|0)>>>2)<<2)}while(0);f[g+(y<<2)>>2]=t;g=f[B>>2]|0}r=(t|0)<0;i=t+1|0;if(r)p=t;else p=((i|0)%3|0|0)==0?t+-2|0:i;s=(v|0)<0;if(!s?(U=(((v>>>0)%3|0|0)==0?2:-1)+v|0,(U|0)>=0):0){y=f[g>>2]|0;q=f[y+(U<<2)>>2]|0;f[y+(p<<2)>>2]=q;if((q|0)>-1){o=g+24|0;m=g+28|0;i=f[m>>2]|0;g=f[o>>2]|0;l=i-g>>2;do if(l>>>0<=q>>>0){k=q+1|0;j=i;if(k>>>0>l>>>0){ui(o,k-l|0);g=f[o>>2]|0;break}if(k>>>0>=l>>>0)break;i=g+(k<<2)|0;if((j|0)==(i|0))break;f[m>>2]=j+(~((j+-4-i|0)>>>2)<<2)}while(0);f[g+(q<<2)>>2]=p;g=f[B>>2]|0}}else f[(f[g>>2]|0)+(p<<2)>>2]=-1073741824;do if(!r)if(!((t>>>0)%3|0)){q=t+2|0;break}else{q=t+-1|0;break}else q=t;while(0);i=v+1|0;if(!s?(W=((i|0)%3|0|0)==0?v+-2|0:i,(W|0)>=0):0){y=f[g>>2]|0;p=f[y+(W<<2)>>2]|0;f[y+(q<<2)>>2]=p;if((p|0)>-1){o=g+24|0;m=g+28|0;i=f[m>>2]|0;g=f[o>>2]|0;l=i-g>>2;do if(l>>>0<=p>>>0){k=p+1|0;j=i;if(k>>>0>l>>>0){ui(o,k-l|0);g=f[o>>2]|0;break}if(k>>>0>=l>>>0)break;i=g+(k<<2)|0;if((j|0)==(i|0))break;f[m>>2]=j+(~((j+-4-i|0)>>>2)<<2)}while(0);i=q;g=g+(p<<2)|0;ba=91}}else{i=-1073741824;g=(f[g>>2]|0)+(q<<2)|0;ba=91}if((ba|0)==91){ba=0;f[g>>2]=i}f[(f[oa>>2]|0)+-4>>2]=w;break}case 7:{l=x*3|0;f[fa>>2]=l;i=f[B>>2]|0;m=y+1|0;e=f[i>>2]|0;f[e+(l<<2)>>2]=y;if((y|0)<=-1){g=l+1|0;j=y+2|0;f[e+(g<<2)>>2]=m;if((y|0)==-1){e=i;o=j;ba=170}else{g=l;o=j}}else{k=i+24|0;i=i+28|0;g=f[i>>2]|0;e=f[k>>2]|0;j=g-e>>2;do if(j>>>0<=y>>>0){if(m>>>0>j>>>0){ui(k,m-j|0);e=f[k>>2]|0;break}if(m>>>0>>0?(L=e+(m<<2)|0,(g|0)!=(L|0)):0)f[i>>2]=g+(~((g+-4-L|0)>>>2)<<2)}while(0);f[e+(y<<2)>>2]=l;e=f[B>>2]|0;g=(f[fa>>2]|0)+1|0;f[(f[e>>2]|0)+(g<<2)>>2]=m;o=y+2|0;ba=170}if((ba|0)==170){ba=0;l=e+24|0;j=e+28|0;i=f[j>>2]|0;e=f[l>>2]|0;k=i-e>>2;do if(k>>>0<=m>>>0){if(o>>>0>k>>>0){ui(l,o-k|0);e=f[l>>2]|0;break}if(o>>>0>>0?(K=e+(o<<2)|0,(i|0)!=(K|0)):0)f[j>>2]=i+(~((i+-4-K|0)>>>2)<<2)}while(0);f[e+(m<<2)>>2]=g;i=f[B>>2]|0;g=f[fa>>2]|0;e=f[i>>2]|0}l=g+2|0;m=y+3|0;f[e+(l<<2)>>2]=o;if((o|0)>-1){k=i+24|0;i=i+28|0;g=f[i>>2]|0;e=f[k>>2]|0;j=g-e>>2;do if(j>>>0<=o>>>0){if(m>>>0>j>>>0){ui(k,m-j|0);e=f[k>>2]|0;break}if(m>>>0>>0?(J=e+(m<<2)|0,(g|0)!=(J|0)):0)f[i>>2]=g+(~((g+-4-J|0)>>>2)<<2)}while(0);f[e+(o<<2)>>2]=l}e=f[oa>>2]|0;if((e|0)==(f[C>>2]|0))Ii(ma,fa);else{f[e>>2]=f[fa>>2];f[oa>>2]=e+4}e=m;break}default:break b}l=c-x|0;m=l+-1|0;g=f[z>>2]|0;if((g|0)==(f[_>>2]|0))break;while(1){i=f[g+-8>>2]|0;if((i|0)>=(l|0)){D=-1;break a}if((i|0)!=(m|0))break c;i=b[g+-4>>0]|0;k=f[g+-12>>2]|0;f[z>>2]=g+-12;if((k|0)<0){D=-1;break a}g=f[(f[oa>>2]|0)+-4>>2]|0;j=(g|0)<0;do if(!(i&1)){if(!j)if(!((g>>>0)%3|0)){g=g+2|0;break}else{g=g+-1|0;break}}else{i=g+1|0;if(!j)g=((i|0)%3|0|0)==0?g+-2|0:i}while(0);f[fa>>2]=Z-k;y=Ge(na,fa)|0;f[y>>2]=g;g=f[z>>2]|0;if((g|0)==(f[_>>2]|0))break c}}e=f[oa>>2]|0;if((f[ma>>2]|0)==(e|0)){D=-1;break a}v=f[e+-4>>2]|0;t=(v|0)<0;d:do if(!t){e=v+(((v>>>0)%3|0|0)==0?2:-1)|0;if((e|0)<0)ba=13;else{j=f[B>>2]|0;i=f[j+12>>2]|0;while(1){g=f[i+(e<<2)>>2]|0;if((g|0)<=-1){g=j;q=0;p=e;break d}e=g+(((g>>>0)%3|0|0)==0?2:-1)|0;if((e|0)<0){g=j;q=1;p=e;break}}}}else{e=v;ba=13}while(0);if((ba|0)==13){ba=0;g=f[B>>2]|0;i=f[g+12>>2]|0;q=1;p=e}e=x*3|0;r=e+1|0;f[i+(v<<2)>>2]=r;f[i+(r<<2)>>2]=v;w=e+2|0;f[i+(p<<2)>>2]=w;f[i+(w<<2)>>2]=p;i=v+1|0;if(!t?(Y=((i|0)%3|0|0)==0?v+-2|0:i,(Y|0)>=0):0){x=f[g>>2]|0;o=f[x+(Y<<2)>>2]|0;f[x+(e<<2)>>2]=o;if((o|0)>-1){m=g+24|0;j=g+28|0;i=f[j>>2]|0;g=f[m>>2]|0;l=i-g>>2;do if(l>>>0<=o>>>0){k=o+1|0;if(k>>>0>l>>>0){ui(m,k-l|0);g=f[m>>2]|0;break}if(k>>>0>>0?(F=g+(k<<2)|0,(i|0)!=(F|0)):0)f[j>>2]=i+(~((i+-4-F|0)>>>2)<<2)}while(0);f[g+(o<<2)>>2]=e;g=f[B>>2]|0;s=o}else s=o}else{f[(f[g>>2]|0)+(e<<2)>>2]=-1073741824;s=-1073741824}i=p+1|0;if(!q?(X=((i|0)%3|0|0)==0?p+-2|0:i,(X|0)>=0):0){x=f[g>>2]|0;o=f[x+(X<<2)>>2]|0;f[x+(r<<2)>>2]=o;if((o|0)>-1){m=g+24|0;j=g+28|0;i=f[j>>2]|0;g=f[m>>2]|0;l=i-g>>2;do if(l>>>0<=o>>>0){k=o+1|0;if(k>>>0>l>>>0){ui(m,k-l|0);g=f[m>>2]|0;break}if(k>>>0>>0?(I=g+(k<<2)|0,(i|0)!=(I|0)):0)f[j>>2]=i+(~((i+-4-I|0)>>>2)<<2)}while(0);f[g+(o<<2)>>2]=r;g=f[B>>2]|0}}else f[(f[g>>2]|0)+(r<<2)>>2]=-1073741824;if(!t?(V=(((v>>>0)%3|0|0)==0?2:-1)+v|0,(V|0)>=0):0){x=f[g>>2]|0;o=f[x+(V<<2)>>2]|0;f[x+(w<<2)>>2]=o;if((o|0)>-1){m=g+24|0;j=g+28|0;i=f[j>>2]|0;g=f[m>>2]|0;l=i-g>>2;do if(l>>>0<=o>>>0){k=o+1|0;if(k>>>0>l>>>0){ui(m,k-l|0);g=f[m>>2]|0;break}if(k>>>0>>0?(H=g+(k<<2)|0,(i|0)!=(H|0)):0)f[j>>2]=i+(~((i+-4-H|0)>>>2)<<2)}while(0);i=w;g=g+(o<<2)|0;ba=50}}else{i=-1073741824;g=(f[g>>2]|0)+(w<<2)|0;ba=50}if((ba|0)==50){ba=0;f[g>>2]=i}if((y|0)>(aa|0)){D=-1;break a}ba=(f[ga>>2]|0)+(s>>>5<<2)|0;f[ba>>2]=f[ba>>2]&~(1<<(s&31));ba=189}while(0);if((ba|0)==93){ba=0;g=f[ma>>2]|0;e=f[oa>>2]|0;if((g|0)==(e|0)){D=-1;break a}o=e+-4|0;t=f[o>>2]|0;f[oa>>2]=o;k=f[A>>2]|0;e:do if(k){l=k+-1|0;j=(l&k|0)==0;if(j)m=l&x;else m=(x>>>0)%(k>>>0)|0;i=f[(f[na>>2]|0)+(m<<2)>>2]|0;if(i){if(j)do{i=f[i>>2]|0;if(!i){e=o;break e}if((f[i+4>>2]&l|0)!=(m|0)){e=o;break e}}while((f[i+8>>2]|0)!=(x|0));else do{i=f[i>>2]|0;if(!i){e=o;break e}if((((f[i+4>>2]|0)>>>0)%(k>>>0)|0|0)!=(m|0)){e=o;break e}}while((f[i+8>>2]|0)!=(x|0));i=i+12|0;if((o|0)==(f[C>>2]|0)){Ii(ma,i);g=f[ma>>2]|0;e=f[oa>>2]|0;break}else{f[o>>2]=f[i>>2];f[oa>>2]=e;break}}else e=o}else e=o;while(0);if((g|0)==(e|0)){D=-1;break a}p=f[e+-4>>2]|0;e=x*3|0;s=e+2|0;i=f[B>>2]|0;x=f[i+12>>2]|0;f[x+(p<<2)>>2]=s;f[x+(s<<2)>>2]=p;r=e+1|0;f[x+(t<<2)>>2]=r;f[x+(r<<2)>>2]=t;if((p|0)>=0){g=(((p>>>0)%3|0|0)==0?2:-1)+p|0;j=f[i>>2]|0;if((g|0)>=0){k=f[j+(g<<2)>>2]|0;f[j+(e<<2)>>2]=k;if((k|0)>-1){o=i+24|0;j=i+28|0;i=f[j>>2]|0;g=f[o>>2]|0;m=i-g>>2;do if(m>>>0<=k>>>0){l=k+1|0;if(l>>>0>m>>>0){ui(o,l-m|0);g=f[o>>2]|0;break}if(l>>>0>>0?(P=g+(l<<2)|0,(i|0)!=(P|0)):0)f[j>>2]=i+(~((i+-4-P|0)>>>2)<<2)}while(0);f[g+(k<<2)>>2]=e;i=f[B>>2]|0;j=1}else j=0}else{f[j+(e<<2)>>2]=-1073741824;j=0;k=-1073741824}g=p+1|0;g=((g|0)%3|0|0)==0?p+-2|0:g;l=f[i>>2]|0;if((g|0)>=0){q=f[l+(g<<2)>>2]|0;f[l+(r<<2)>>2]=q;if((q|0)>-1){p=i+24|0;l=i+28|0;i=f[l>>2]|0;g=f[p>>2]|0;o=i-g>>2;do if(o>>>0<=q>>>0){m=q+1|0;if(m>>>0>o>>>0){ui(p,m-o|0);g=f[p>>2]|0;break}if(m>>>0>>0?(O=g+(m<<2)|0,(i|0)!=(O|0)):0)f[l>>2]=i+(~((i+-4-O|0)>>>2)<<2)}while(0);f[g+(q<<2)>>2]=r;i=f[B>>2]|0;q=j;r=k}else{q=j;r=k}}else{g=l;ba=123}}else{g=f[i>>2]|0;f[g+(e<<2)>>2]=-1073741824;j=0;k=-1073741824;ba=123}if((ba|0)==123){ba=0;f[g+(r<<2)>>2]=-1073741824;q=j;r=k}f:do if((t|0)>=0){g=(((t>>>0)%3|0|0)==0?2:-1)+t|0;j=f[i>>2]|0;if((g|0)>=0){o=f[j+(g<<2)>>2]|0;f[j+(s<<2)>>2]=o;if((o|0)>-1){m=i+24|0;j=i+28|0;i=f[j>>2]|0;g=f[m>>2]|0;l=i-g>>2;do if(l>>>0<=o>>>0){k=o+1|0;if(k>>>0>l>>>0){ui(m,k-l|0);g=f[m>>2]|0;break}if(k>>>0>>0?(N=g+(k<<2)|0,(i|0)!=(N|0)):0)f[j>>2]=i+(~((i+-4-N|0)>>>2)<<2)}while(0);i=s;g=g+(o<<2)|0;ba=144}}else{i=-1073741824;g=j+(s<<2)|0;ba=144}if((ba|0)==144)f[g>>2]=i;j=t+1|0;j=((j|0)%3|0|0)==0?t+-2|0:j;i=f[B>>2]|0;if((j|0)<0)g=-1073741824;else{g=f[(f[i>>2]|0)+(j<<2)>>2]|0;p=r+1|0;if(!q){l=f[i>>2]|0;m=i+12|0;while(1){f[l+(j<<2)>>2]=r;ba=j+1|0;j=((ba|0)%3|0|0)==0?j+-2|0:ba;if((j|0)<0)break f;k=f[(f[m>>2]|0)+(j<<2)>>2]|0;j=k+1|0;if((k|0)<0)break f;j=((j|0)%3|0|0)==0?k+-2|0:j;if((j|0)<=-1)break f}}do{f[(f[i>>2]|0)+(j<<2)>>2]=r;o=i+24|0;l=i+28|0;k=f[l>>2]|0;i=f[o>>2]|0;m=k-i>>2;do if(m>>>0<=r>>>0){if(p>>>0>m>>>0){ui(o,p-m|0);i=f[o>>2]|0;break}if(p>>>0>>0?(M=i+(p<<2)|0,(k|0)!=(M|0)):0)f[l>>2]=k+(~((k+-4-M|0)>>>2)<<2)}while(0);f[i+(r<<2)>>2]=j;i=j+1|0;j=((i|0)%3|0|0)==0?j+-2|0:i;i=f[B>>2]|0;if((j|0)<0)break f;k=f[(f[i+12>>2]|0)+(j<<2)>>2]|0;j=k+1|0;if((k|0)<0)break f;j=((j|0)%3|0|0)==0?k+-2|0:j}while((j|0)>-1)}}else{f[(f[i>>2]|0)+(s<<2)>>2]=-1073741824;g=-1073741824}while(0);f[(f[i+24>>2]|0)+(g<<2)>>2]=-1073741824;ba=189}if((ba|0)==189){ba=0;f[(f[oa>>2]|0)+-4>>2]=e;e=y}if((d|0)<(c|0)){x=d;y=e}else{D=e;ba=203;break a}}}else{d=0;D=0;ba=203}while(0);do if((ba|0)==203)if((D|0)<=(aa|0)){g=f[oa>>2]|0;if((g|0)==(f[ma>>2]|0))e=a+8|0;else{z=a+316|0;e=a+8|0;C=a+64|0;w=a+68|0;t=a+72|0;s=a+80|0;v=a+84|0;B=a+76|0;A=a+312|0;x=a+304|0;y=a+308|0;do{aa=g;o=f[aa+-4>>2]|0;f[fa>>2]=o;f[oa>>2]=aa+-4;do if(b[z>>0]|0){g=f[A>>2]|0;i=(f[x>>2]|0)+(g>>>3)|0;if(i>>>0<(f[y>>2]|0)>>>0?(aa=h[i>>0]|0,f[A>>2]=g+1,aa&1<<(g&7)|0):0){ba=210;break}g=f[w>>2]|0;i=f[t>>2]|0;if((g|0)==(i<<5|0)){if((g+1|0)<0){Lp(C);i=f[t>>2]|0}aa=i<<6;g=g+32&-32;ri(C,i<<5>>>0<1073741823?(aa>>>0>>0?g:aa):2147483647);g=f[w>>2]|0}f[w>>2]=g+1;aa=(f[C>>2]|0)+(g>>>5<<2)|0;f[aa>>2]=f[aa>>2]&~(1<<(g&31));g=f[s>>2]|0;if((g|0)==(f[v>>2]|0)){Ii(B,fa);break}else{f[g>>2]=f[fa>>2];f[s>>2]=g+4;break}}else ba=210;while(0);if((ba|0)==210){ba=0;k=(o|0)<0;g:do if(!k){g=o+(((o>>>0)%3|0|0)==0?2:-1)|0;if((g|0)>=0){i=f[(f[e>>2]|0)+12>>2]|0;j=g;while(1){g=f[i+(j<<2)>>2]|0;if((g|0)<=-1){i=0;g=j;break}g=g+(((g>>>0)%3|0|0)==0?2:-1)|0;if((g|0)<0){i=1;break}else j=g}if(k){k=o;ba=217;break}}else i=1;k=o+1|0;k=((k|0)%3|0|0)==0?o+-2|0:k;if((k|0)<0)ba=217;else{j=f[e>>2]|0;l=f[j+12>>2]|0;m=k;while(1){k=f[l+(m<<2)>>2]|0;if((k|0)<=-1){q=0;break g}aa=k+1|0;k=((aa|0)%3|0|0)==0?k+-2|0:aa;if((k|0)<0){q=1;m=k;break}else m=k}}}else{i=1;g=o;k=o;ba=217}while(0);if((ba|0)==217){ba=0;j=f[e>>2]|0;l=f[j+12>>2]|0;q=1;m=k}r=d+1|0;d=d*3|0;f[ha>>2]=d;f[l+(d<<2)>>2]=o;f[l+(o<<2)>>2]=d;d=(f[ha>>2]|0)+1|0;f[l+(d<<2)>>2]=g;f[l+(g<<2)>>2]=d;d=(f[ha>>2]|0)+2|0;f[l+(d<<2)>>2]=m;f[l+(m<<2)>>2]=d;d=f[ha>>2]|0;k=g+1|0;if(!i?(ka=((k|0)%3|0|0)==0?g+-2|0:k,(ka|0)>=0):0){aa=f[j>>2]|0;p=f[aa+(ka<<2)>>2]|0;f[aa+(d<<2)>>2]=p;if((p|0)>-1){o=j+24|0;j=j+28|0;i=f[j>>2]|0;g=f[o>>2]|0;l=i-g>>2;do if(l>>>0<=p>>>0){k=p+1|0;if(k>>>0>l>>>0){ui(o,k-l|0);g=f[o>>2]|0;break}if(k>>>0>>0?(ea=g+(k<<2)|0,(i|0)!=(ea|0)):0)f[j>>2]=i+(~((i+-4-ea|0)>>>2)<<2)}while(0);f[g+(p<<2)>>2]=d;d=f[ha>>2]|0;j=f[e>>2]|0}}else f[(f[j>>2]|0)+(d<<2)>>2]=-1073741824;o=d+1|0;g=m+1|0;if(!q?(ja=((g|0)%3|0|0)==0?m+-2|0:g,(ja|0)>=0):0){aa=f[j>>2]|0;m=f[aa+(ja<<2)>>2]|0;f[aa+(o<<2)>>2]=m;if((m|0)>-1){l=j+24|0;i=j+28|0;g=f[i>>2]|0;d=f[l>>2]|0;k=g-d>>2;do if(k>>>0<=m>>>0){j=m+1|0;if(j>>>0>k>>>0){ui(l,j-k|0);d=f[l>>2]|0;break}if(j>>>0>>0?(da=d+(j<<2)|0,(g|0)!=(da|0)):0)f[i>>2]=g+(~((g+-4-da|0)>>>2)<<2)}while(0);f[d+(m<<2)>>2]=o;d=f[ha>>2]|0;j=f[e>>2]|0}}else f[(f[j>>2]|0)+(o<<2)>>2]=-1073741824;o=d+2|0;g=f[fa>>2]|0;i=g+1|0;if((g|0)>=0?(ia=((i|0)%3|0|0)==0?g+-2|0:i,(ia|0)>=0):0){aa=f[j>>2]|0;m=f[aa+(ia<<2)>>2]|0;f[aa+(o<<2)>>2]=m;if((m|0)>-1){l=j+24|0;i=j+28|0;g=f[i>>2]|0;d=f[l>>2]|0;k=g-d>>2;do if(k>>>0<=m>>>0){j=m+1|0;if(j>>>0>k>>>0){ui(l,j-k|0);d=f[l>>2]|0;break}if(j>>>0>>0?(ca=d+(j<<2)|0,(g|0)!=(ca|0)):0)f[i>>2]=g+(~((g+-4-ca|0)>>>2)<<2)}while(0);f[d+(m<<2)>>2]=o;d=f[ha>>2]|0}}else f[(f[j>>2]|0)+(o<<2)>>2]=-1073741824;if((d|0)<0)d=-1073741824;else d=f[(f[f[e>>2]>>2]|0)+(d<<2)>>2]|0;g=f[ga>>2]|0;aa=g+(d>>>5<<2)|0;f[aa>>2]=f[aa>>2]&~(1<<(d&31));d=f[ha>>2]|0;if((d|0)<-1)d=-1073741824;else d=f[(f[f[e>>2]>>2]|0)+(d+1<<2)>>2]|0;aa=g+(d>>>5<<2)|0;f[aa>>2]=f[aa>>2]&~(1<<(d&31));d=f[ha>>2]|0;if((d|0)<-2)d=-1073741824;else d=f[(f[f[e>>2]>>2]|0)+(d+2<<2)>>2]|0;g=g+(d>>>5<<2)|0;f[g>>2]=f[g>>2]&~(1<<(d&31));d=f[w>>2]|0;g=f[t>>2]|0;if((d|0)==(g<<5|0)){if((d+1|0)<0){Lp(C);g=f[t>>2]|0}aa=g<<6;d=d+32&-32;ri(C,g<<5>>>0<1073741823?(aa>>>0>>0?d:aa):2147483647);d=f[w>>2]|0}f[w>>2]=d+1;aa=(f[C>>2]|0)+(d>>>5<<2)|0;f[aa>>2]=f[aa>>2]|1<<(d&31);d=f[s>>2]|0;if((d|0)==(f[v>>2]|0))Ii(B,ha);else{f[d>>2]=f[ha>>2];f[s>>2]=d+4}d=r}g=f[oa>>2]|0}while((g|0)!=(f[ma>>2]|0))}ka=f[e>>2]|0;if((d|0)==(((f[ka+4>>2]|0)-(f[ka>>2]|0)>>2>>>0)/3|0|0)){j=a+88|0;g=a+92|0;e=f[g>>2]|0;d=f[j>>2]|0;i=e-d>>2;if(D>>>0>i>>>0){ui(j,D-i|0);break}if(D>>>0>>0?(la=d+(D<<2)|0,(e|0)!=(la|0)):0)f[g>>2]=e+(~((e+-4-la|0)>>>2)<<2)}else D=-1}else D=-1;while(0);d=f[na+8>>2]|0;if(d|0)do{la=d;d=f[d>>2]|0;ar(la)}while((d|0)!=0);d=f[na>>2]|0;f[na>>2]=0;if(d|0)ar(d);d=f[ma>>2]|0;if(!d){u=pa;return D|0}e=f[oa>>2]|0;if((e|0)!=(d|0))f[oa>>2]=e+(~((e+-4-d|0)>>>2)<<2);ar(d);u=pa;return D|0}function $a(a){a=a|0;var b=0,c=0,d=0,e=0,g=0,h=0,i=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,v=0,w=0,x=0;x=u;u=u+16|0;n=x;do if(a>>>0<245){k=a>>>0<11?16:a+11&-8;a=k>>>3;m=f[5666]|0;c=m>>>a;if(c&3|0){d=(c&1^1)+a|0;e=22704+(d<<1<<2)|0;b=e+8|0;a=f[b>>2]|0;g=a+8|0;c=f[g>>2]|0;if((e|0)==(c|0))f[5666]=m&~(1<>2]=e;f[b>>2]=c}w=d<<3;f[a+4>>2]=w|3;w=a+w+4|0;f[w>>2]=f[w>>2]|1;w=g;u=x;return w|0}l=f[5668]|0;if(k>>>0>l>>>0){if(c|0){h=2<>>12&16;c=c>>>h;a=c>>>5&8;c=c>>>a;e=c>>>2&4;c=c>>>e;b=c>>>1&2;c=c>>>b;d=c>>>1&1;d=(a|h|e|b|d)+(c>>>d)|0;c=22704+(d<<1<<2)|0;b=c+8|0;e=f[b>>2]|0;h=e+8|0;a=f[h>>2]|0;if((c|0)==(a|0)){a=m&~(1<>2]=c;f[b>>2]=a;a=m}g=(d<<3)-k|0;f[e+4>>2]=k|3;e=e+k|0;f[e+4>>2]=g|1;f[e+g>>2]=g;if(l|0){d=f[5671]|0;b=l>>>3;c=22704+(b<<1<<2)|0;b=1<>2]|0}f[b>>2]=d;f[a+12>>2]=d;f[d+8>>2]=a;f[d+12>>2]=c}f[5668]=g;f[5671]=e;w=h;u=x;return w|0}i=f[5667]|0;if(i){c=(i&0-i)+-1|0;h=c>>>12&16;c=c>>>h;g=c>>>5&8;c=c>>>g;j=c>>>2&4;c=c>>>j;a=c>>>1&2;c=c>>>a;d=c>>>1&1;d=f[22968+((g|h|j|a|d)+(c>>>d)<<2)>>2]|0;c=(f[d+4>>2]&-8)-k|0;a=f[d+16+(((f[d+16>>2]|0)==0&1)<<2)>>2]|0;if(!a){j=c;h=d}else{do{h=(f[a+4>>2]&-8)-k|0;j=h>>>0>>0;c=j?h:c;d=j?a:d;a=f[a+16+(((f[a+16>>2]|0)==0&1)<<2)>>2]|0}while((a|0)!=0);j=c;h=d}g=h+k|0;if(h>>>0>>0){e=f[h+24>>2]|0;b=f[h+12>>2]|0;do if((b|0)==(h|0)){a=h+20|0;b=f[a>>2]|0;if(!b){a=h+16|0;b=f[a>>2]|0;if(!b){c=0;break}}while(1){d=b+20|0;c=f[d>>2]|0;if(c|0){b=c;a=d;continue}d=b+16|0;c=f[d>>2]|0;if(!c)break;else{b=c;a=d}}f[a>>2]=0;c=b}else{c=f[h+8>>2]|0;f[c+12>>2]=b;f[b+8>>2]=c;c=b}while(0);do if(e|0){b=f[h+28>>2]|0;a=22968+(b<<2)|0;if((h|0)==(f[a>>2]|0)){f[a>>2]=c;if(!c){f[5667]=i&~(1<>2]|0)!=(h|0)&1)<<2)>>2]=c;if(!c)break}f[c+24>>2]=e;b=f[h+16>>2]|0;if(b|0){f[c+16>>2]=b;f[b+24>>2]=c}b=f[h+20>>2]|0;if(b|0){f[c+20>>2]=b;f[b+24>>2]=c}}while(0);if(j>>>0<16){w=j+k|0;f[h+4>>2]=w|3;w=h+w+4|0;f[w>>2]=f[w>>2]|1}else{f[h+4>>2]=k|3;f[g+4>>2]=j|1;f[g+j>>2]=j;if(l|0){d=f[5671]|0;b=l>>>3;c=22704+(b<<1<<2)|0;b=1<>2]|0}f[b>>2]=d;f[a+12>>2]=d;f[d+8>>2]=a;f[d+12>>2]=c}f[5668]=j;f[5671]=g}w=h+8|0;u=x;return w|0}else m=k}else m=k}else m=k}else if(a>>>0<=4294967231){a=a+11|0;k=a&-8;d=f[5667]|0;if(d){c=0-k|0;a=a>>>8;if(a)if(k>>>0>16777215)j=31;else{m=(a+1048320|0)>>>16&8;v=a<>>16&4;v=v<>>16&2;j=14-(l|m|j)+(v<>>15)|0;j=k>>>(j+7|0)&1|j<<1}else j=0;a=f[22968+(j<<2)>>2]|0;a:do if(!a){e=0;a=0;v=57}else{e=0;h=k<<((j|0)==31?0:25-(j>>>1)|0);i=a;a=0;while(1){g=(f[i+4>>2]&-8)-k|0;if(g>>>0>>0)if(!g){c=0;e=i;a=i;v=61;break a}else{c=g;a=i}g=f[i+20>>2]|0;i=f[i+16+(h>>>31<<2)>>2]|0;e=(g|0)==0|(g|0)==(i|0)?e:g;g=(i|0)==0;if(g){v=57;break}else h=h<<((g^1)&1)}}while(0);if((v|0)==57){if((e|0)==0&(a|0)==0){a=2<>>12&16;a=a>>>j;i=a>>>5&8;a=a>>>i;l=a>>>2&4;a=a>>>l;m=a>>>1&2;a=a>>>m;e=a>>>1&1;e=f[22968+((i|j|l|m|e)+(a>>>e)<<2)>>2]|0;a=0}if(!e){i=c;j=a}else v=61}if((v|0)==61)while(1){v=0;l=(f[e+4>>2]&-8)-k|0;m=l>>>0>>0;c=m?l:c;a=m?e:a;e=f[e+16+(((f[e+16>>2]|0)==0&1)<<2)>>2]|0;if(!e){i=c;j=a;break}else v=61}if((j|0)!=0?i>>>0<((f[5668]|0)-k|0)>>>0:0){h=j+k|0;if(j>>>0>=h>>>0){w=0;u=x;return w|0}g=f[j+24>>2]|0;b=f[j+12>>2]|0;do if((b|0)==(j|0)){a=j+20|0;b=f[a>>2]|0;if(!b){a=j+16|0;b=f[a>>2]|0;if(!b){b=0;break}}while(1){e=b+20|0;c=f[e>>2]|0;if(c|0){b=c;a=e;continue}e=b+16|0;c=f[e>>2]|0;if(!c)break;else{b=c;a=e}}f[a>>2]=0}else{w=f[j+8>>2]|0;f[w+12>>2]=b;f[b+8>>2]=w}while(0);do if(g){a=f[j+28>>2]|0;c=22968+(a<<2)|0;if((j|0)==(f[c>>2]|0)){f[c>>2]=b;if(!b){d=d&~(1<>2]|0)!=(j|0)&1)<<2)>>2]=b;if(!b)break}f[b+24>>2]=g;a=f[j+16>>2]|0;if(a|0){f[b+16>>2]=a;f[a+24>>2]=b}a=f[j+20>>2]|0;if(a){f[b+20>>2]=a;f[a+24>>2]=b}}while(0);do if(i>>>0>=16){f[j+4>>2]=k|3;f[h+4>>2]=i|1;f[h+i>>2]=i;b=i>>>3;if(i>>>0<256){c=22704+(b<<1<<2)|0;a=f[5666]|0;b=1<>2]|0}f[b>>2]=h;f[a+12>>2]=h;f[h+8>>2]=a;f[h+12>>2]=c;break}b=i>>>8;if(b)if(i>>>0>16777215)b=31;else{v=(b+1048320|0)>>>16&8;w=b<>>16&4;w=w<>>16&2;b=14-(t|v|b)+(w<>>15)|0;b=i>>>(b+7|0)&1|b<<1}else b=0;c=22968+(b<<2)|0;f[h+28>>2]=b;a=h+16|0;f[a+4>>2]=0;f[a>>2]=0;a=1<>2]=h;f[h+24>>2]=c;f[h+12>>2]=h;f[h+8>>2]=h;break}a=i<<((b|0)==31?0:25-(b>>>1)|0);c=f[c>>2]|0;while(1){if((f[c+4>>2]&-8|0)==(i|0)){v=97;break}d=c+16+(a>>>31<<2)|0;b=f[d>>2]|0;if(!b){v=96;break}else{a=a<<1;c=b}}if((v|0)==96){f[d>>2]=h;f[h+24>>2]=c;f[h+12>>2]=h;f[h+8>>2]=h;break}else if((v|0)==97){v=c+8|0;w=f[v>>2]|0;f[w+12>>2]=h;f[v>>2]=h;f[h+8>>2]=w;f[h+12>>2]=c;f[h+24>>2]=0;break}}else{w=i+k|0;f[j+4>>2]=w|3;w=j+w+4|0;f[w>>2]=f[w>>2]|1}while(0);w=j+8|0;u=x;return w|0}else m=k}else m=k}else m=-1;while(0);c=f[5668]|0;if(c>>>0>=m>>>0){a=c-m|0;b=f[5671]|0;if(a>>>0>15){w=b+m|0;f[5671]=w;f[5668]=a;f[w+4>>2]=a|1;f[w+a>>2]=a;f[b+4>>2]=m|3}else{f[5668]=0;f[5671]=0;f[b+4>>2]=c|3;w=b+c+4|0;f[w>>2]=f[w>>2]|1}w=b+8|0;u=x;return w|0}h=f[5669]|0;if(h>>>0>m>>>0){t=h-m|0;f[5669]=t;w=f[5672]|0;v=w+m|0;f[5672]=v;f[v+4>>2]=t|1;f[w+4>>2]=m|3;w=w+8|0;u=x;return w|0}if(!(f[5784]|0)){f[5786]=4096;f[5785]=4096;f[5787]=-1;f[5788]=-1;f[5789]=0;f[5777]=0;a=n&-16^1431655768;f[n>>2]=a;f[5784]=a;a=4096}else a=f[5786]|0;i=m+48|0;j=m+47|0;g=a+j|0;d=0-a|0;k=g&d;if(k>>>0<=m>>>0){w=0;u=x;return w|0}a=f[5776]|0;if(a|0?(l=f[5774]|0,n=l+k|0,n>>>0<=l>>>0|n>>>0>a>>>0):0){w=0;u=x;return w|0}b:do if(!(f[5777]&4)){c=f[5672]|0;c:do if(c){e=23112;while(1){a=f[e>>2]|0;if(a>>>0<=c>>>0?(q=e+4|0,(a+(f[q>>2]|0)|0)>>>0>c>>>0):0)break;a=f[e+8>>2]|0;if(!a){v=118;break c}else e=a}b=g-h&d;if(b>>>0<2147483647){a=Il(b|0)|0;if((a|0)==((f[e>>2]|0)+(f[q>>2]|0)|0)){if((a|0)!=(-1|0)){h=a;g=b;v=135;break b}}else{d=a;v=126}}else b=0}else v=118;while(0);do if((v|0)==118){c=Il(0)|0;if((c|0)!=(-1|0)?(b=c,o=f[5785]|0,p=o+-1|0,b=((p&b|0)==0?0:(p+b&0-o)-b|0)+k|0,o=f[5774]|0,p=b+o|0,b>>>0>m>>>0&b>>>0<2147483647):0){q=f[5776]|0;if(q|0?p>>>0<=o>>>0|p>>>0>q>>>0:0){b=0;break}a=Il(b|0)|0;if((a|0)==(c|0)){h=c;g=b;v=135;break b}else{d=a;v=126}}else b=0}while(0);do if((v|0)==126){c=0-b|0;if(!(i>>>0>b>>>0&(b>>>0<2147483647&(d|0)!=(-1|0))))if((d|0)==(-1|0)){b=0;break}else{h=d;g=b;v=135;break b}a=f[5786]|0;a=j-b+a&0-a;if(a>>>0>=2147483647){h=d;g=b;v=135;break b}if((Il(a|0)|0)==(-1|0)){Il(c|0)|0;b=0;break}else{h=d;g=a+b|0;v=135;break b}}while(0);f[5777]=f[5777]|4;v=133}else{b=0;v=133}while(0);if(((v|0)==133?k>>>0<2147483647:0)?(r=Il(k|0)|0,q=Il(0)|0,t=q-r|0,s=t>>>0>(m+40|0)>>>0,!((r|0)==(-1|0)|s^1|r>>>0>>0&((r|0)!=(-1|0)&(q|0)!=(-1|0))^1)):0){h=r;g=s?t:b;v=135}if((v|0)==135){b=(f[5774]|0)+g|0;f[5774]=b;if(b>>>0>(f[5775]|0)>>>0)f[5775]=b;j=f[5672]|0;do if(j){e=23112;while(1){b=f[e>>2]|0;d=e+4|0;a=f[d>>2]|0;if((h|0)==(b+a|0)){v=145;break}c=f[e+8>>2]|0;if(!c)break;else e=c}if(((v|0)==145?(f[e+12>>2]&8|0)==0:0)?j>>>0>>0&j>>>0>=b>>>0:0){f[d>>2]=a+g;w=j+8|0;w=(w&7|0)==0?0:0-w&7;v=j+w|0;w=(f[5669]|0)+(g-w)|0;f[5672]=v;f[5669]=w;f[v+4>>2]=w|1;f[v+w+4>>2]=40;f[5673]=f[5788];break}if(h>>>0<(f[5670]|0)>>>0)f[5670]=h;c=h+g|0;a=23112;while(1){if((f[a>>2]|0)==(c|0)){v=153;break}b=f[a+8>>2]|0;if(!b)break;else a=b}if((v|0)==153?(f[a+12>>2]&8|0)==0:0){f[a>>2]=h;l=a+4|0;f[l>>2]=(f[l>>2]|0)+g;l=h+8|0;l=h+((l&7|0)==0?0:0-l&7)|0;b=c+8|0;b=c+((b&7|0)==0?0:0-b&7)|0;k=l+m|0;i=b-l-m|0;f[l+4>>2]=m|3;do if((b|0)!=(j|0)){if((b|0)==(f[5671]|0)){w=(f[5668]|0)+i|0;f[5668]=w;f[5671]=k;f[k+4>>2]=w|1;f[k+w>>2]=w;break}a=f[b+4>>2]|0;if((a&3|0)==1){h=a&-8;d=a>>>3;d:do if(a>>>0<256){a=f[b+8>>2]|0;c=f[b+12>>2]|0;if((c|0)==(a|0)){f[5666]=f[5666]&~(1<>2]=c;f[c+8>>2]=a;break}}else{g=f[b+24>>2]|0;a=f[b+12>>2]|0;do if((a|0)==(b|0)){d=b+16|0;c=d+4|0;a=f[c>>2]|0;if(!a){a=f[d>>2]|0;if(!a){a=0;break}else e=d}else e=c;while(1){d=a+20|0;c=f[d>>2]|0;if(c|0){a=c;e=d;continue}d=a+16|0;c=f[d>>2]|0;if(!c)break;else{a=c;e=d}}f[e>>2]=0}else{w=f[b+8>>2]|0;f[w+12>>2]=a;f[a+8>>2]=w}while(0);if(!g)break;c=f[b+28>>2]|0;d=22968+(c<<2)|0;do if((b|0)!=(f[d>>2]|0)){f[g+16+(((f[g+16>>2]|0)!=(b|0)&1)<<2)>>2]=a;if(!a)break d}else{f[d>>2]=a;if(a|0)break;f[5667]=f[5667]&~(1<>2]=g;d=b+16|0;c=f[d>>2]|0;if(c|0){f[a+16>>2]=c;f[c+24>>2]=a}c=f[d+4>>2]|0;if(!c)break;f[a+20>>2]=c;f[c+24>>2]=a}while(0);b=b+h|0;e=h+i|0}else e=i;b=b+4|0;f[b>>2]=f[b>>2]&-2;f[k+4>>2]=e|1;f[k+e>>2]=e;b=e>>>3;if(e>>>0<256){c=22704+(b<<1<<2)|0;a=f[5666]|0;b=1<>2]|0}f[b>>2]=k;f[a+12>>2]=k;f[k+8>>2]=a;f[k+12>>2]=c;break}b=e>>>8;do if(!b)a=0;else{if(e>>>0>16777215){a=31;break}v=(b+1048320|0)>>>16&8;w=b<>>16&4;w=w<>>16&2;a=14-(t|v|a)+(w<>>15)|0;a=e>>>(a+7|0)&1|a<<1}while(0);d=22968+(a<<2)|0;f[k+28>>2]=a;b=k+16|0;f[b+4>>2]=0;f[b>>2]=0;b=f[5667]|0;c=1<>2]=k;f[k+24>>2]=d;f[k+12>>2]=k;f[k+8>>2]=k;break}a=e<<((a|0)==31?0:25-(a>>>1)|0);c=f[d>>2]|0;while(1){if((f[c+4>>2]&-8|0)==(e|0)){v=194;break}d=c+16+(a>>>31<<2)|0;b=f[d>>2]|0;if(!b){v=193;break}else{a=a<<1;c=b}}if((v|0)==193){f[d>>2]=k;f[k+24>>2]=c;f[k+12>>2]=k;f[k+8>>2]=k;break}else if((v|0)==194){v=c+8|0;w=f[v>>2]|0;f[w+12>>2]=k;f[v>>2]=k;f[k+8>>2]=w;f[k+12>>2]=c;f[k+24>>2]=0;break}}else{w=(f[5669]|0)+i|0;f[5669]=w;f[5672]=k;f[k+4>>2]=w|1}while(0);w=l+8|0;u=x;return w|0}a=23112;while(1){b=f[a>>2]|0;if(b>>>0<=j>>>0?(w=b+(f[a+4>>2]|0)|0,w>>>0>j>>>0):0)break;a=f[a+8>>2]|0}e=w+-47|0;a=e+8|0;a=e+((a&7|0)==0?0:0-a&7)|0;e=j+16|0;a=a>>>0>>0?j:a;b=a+8|0;c=h+8|0;c=(c&7|0)==0?0:0-c&7;v=h+c|0;c=g+-40-c|0;f[5672]=v;f[5669]=c;f[v+4>>2]=c|1;f[v+c+4>>2]=40;f[5673]=f[5788];c=a+4|0;f[c>>2]=27;f[b>>2]=f[5778];f[b+4>>2]=f[5779];f[b+8>>2]=f[5780];f[b+12>>2]=f[5781];f[5778]=h;f[5779]=g;f[5781]=0;f[5780]=b;b=a+24|0;do{v=b;b=b+4|0;f[b>>2]=7}while((v+8|0)>>>0>>0);if((a|0)!=(j|0)){g=a-j|0;f[c>>2]=f[c>>2]&-2;f[j+4>>2]=g|1;f[a>>2]=g;b=g>>>3;if(g>>>0<256){c=22704+(b<<1<<2)|0;a=f[5666]|0;b=1<>2]|0}f[b>>2]=j;f[a+12>>2]=j;f[j+8>>2]=a;f[j+12>>2]=c;break}b=g>>>8;if(b)if(g>>>0>16777215)c=31;else{v=(b+1048320|0)>>>16&8;w=b<>>16&4;w=w<>>16&2;c=14-(t|v|c)+(w<>>15)|0;c=g>>>(c+7|0)&1|c<<1}else c=0;d=22968+(c<<2)|0;f[j+28>>2]=c;f[j+20>>2]=0;f[e>>2]=0;b=f[5667]|0;a=1<>2]=j;f[j+24>>2]=d;f[j+12>>2]=j;f[j+8>>2]=j;break}a=g<<((c|0)==31?0:25-(c>>>1)|0);c=f[d>>2]|0;while(1){if((f[c+4>>2]&-8|0)==(g|0)){v=216;break}d=c+16+(a>>>31<<2)|0;b=f[d>>2]|0;if(!b){v=215;break}else{a=a<<1;c=b}}if((v|0)==215){f[d>>2]=j;f[j+24>>2]=c;f[j+12>>2]=j;f[j+8>>2]=j;break}else if((v|0)==216){v=c+8|0;w=f[v>>2]|0;f[w+12>>2]=j;f[v>>2]=j;f[j+8>>2]=w;f[j+12>>2]=c;f[j+24>>2]=0;break}}}else{w=f[5670]|0;if((w|0)==0|h>>>0>>0)f[5670]=h;f[5778]=h;f[5779]=g;f[5781]=0;f[5675]=f[5784];f[5674]=-1;b=0;do{w=22704+(b<<1<<2)|0;f[w+12>>2]=w;f[w+8>>2]=w;b=b+1|0}while((b|0)!=32);w=h+8|0;w=(w&7|0)==0?0:0-w&7;v=h+w|0;w=g+-40-w|0;f[5672]=v;f[5669]=w;f[v+4>>2]=w|1;f[v+w+4>>2]=40;f[5673]=f[5788]}while(0);b=f[5669]|0;if(b>>>0>m>>>0){t=b-m|0;f[5669]=t;w=f[5672]|0;v=w+m|0;f[5672]=v;f[v+4>>2]=t|1;f[w+4>>2]=m|3;w=w+8|0;u=x;return w|0}}w=Oq()|0;f[w>>2]=12;w=0;u=x;return w|0}function ab(a){a=a|0;var b=0,c=0,d=0,e=0,g=0,h=0,i=0,j=0,k=0,l=0,m=0;l=u;u=u+16|0;b=l;j=l+8|0;c=l+4|0;f[j>>2]=a;do if(a>>>0>=212){i=(a>>>0)/210|0;e=i*210|0;f[c>>2]=a-e;h=(Kl(5676,5868,c,b)|0)-5676>>2;a=e;e=0;a:while(1){b=(f[5676+(h<<2)>>2]|0)+a|0;d=5;while(1){if(d>>>0>=47){g=211;c=e;k=8;break}a=f[5484+(d<<2)>>2]|0;c=(b>>>0)/(a>>>0)|0;if(c>>>0>>0){k=106;break a}if((b|0)==(X(c,a)|0)){b=e;break}else d=d+1|0}b:do if((k|0)==8){c:while(1){k=0;a=(b>>>0)/(g>>>0)|0;do if(a>>>0>=g>>>0)if((b|0)!=(X(a,g)|0)){d=g+10|0;a=(b>>>0)/(d>>>0)|0;if(a>>>0>=d>>>0)if((b|0)!=(X(a,d)|0)){d=g+12|0;a=(b>>>0)/(d>>>0)|0;if(a>>>0>=d>>>0)if((b|0)!=(X(a,d)|0)){d=g+16|0;a=(b>>>0)/(d>>>0)|0;if(a>>>0>=d>>>0)if((b|0)!=(X(a,d)|0)){d=g+18|0;a=(b>>>0)/(d>>>0)|0;if(a>>>0>=d>>>0)if((b|0)!=(X(a,d)|0)){d=g+22|0;a=(b>>>0)/(d>>>0)|0;if(a>>>0>=d>>>0)if((b|0)!=(X(a,d)|0)){d=g+28|0;a=(b>>>0)/(d>>>0)|0;if(a>>>0>=d>>>0)if((b|0)==(X(a,d)|0)){e=9;a=d}else{d=g+30|0;a=(b>>>0)/(d>>>0)|0;if(a>>>0>>0){e=1;a=d;c=b;break}if((b|0)==(X(a,d)|0)){e=9;a=d;break}d=g+36|0;a=(b>>>0)/(d>>>0)|0;if(a>>>0>>0){e=1;a=d;c=b;break}if((b|0)==(X(a,d)|0)){e=9;a=d;break}d=g+40|0;a=(b>>>0)/(d>>>0)|0;if(a>>>0>>0){e=1;a=d;c=b;break}if((b|0)==(X(a,d)|0)){e=9;a=d;break}d=g+42|0;a=(b>>>0)/(d>>>0)|0;if(a>>>0>>0){e=1;a=d;c=b;break}if((b|0)==(X(a,d)|0)){e=9;a=d;break}d=g+46|0;a=(b>>>0)/(d>>>0)|0;if(a>>>0>>0){e=1;a=d;c=b;break}if((b|0)==(X(a,d)|0)){e=9;a=d;break}d=g+52|0;a=(b>>>0)/(d>>>0)|0;if(a>>>0>>0){e=1;a=d;c=b;break}if((b|0)==(X(a,d)|0)){e=9;a=d;break}d=g+58|0;a=(b>>>0)/(d>>>0)|0;if(a>>>0>>0){e=1;a=d;c=b;break}if((b|0)==(X(a,d)|0)){e=9;a=d;break}d=g+60|0;a=(b>>>0)/(d>>>0)|0;if(a>>>0>>0){e=1;a=d;c=b;break}if((b|0)==(X(a,d)|0)){e=9;a=d;break}d=g+66|0;a=(b>>>0)/(d>>>0)|0;if(a>>>0>>0){e=1;a=d;c=b;break}if((b|0)==(X(a,d)|0)){e=9;a=d;break}d=g+70|0;a=(b>>>0)/(d>>>0)|0;if(a>>>0>>0){e=1;a=d;c=b;break}if((b|0)==(X(a,d)|0)){e=9;a=d;break}d=g+72|0;a=(b>>>0)/(d>>>0)|0;if(a>>>0>>0){e=1;a=d;c=b;break}if((b|0)==(X(a,d)|0)){e=9;a=d;break}d=g+78|0;a=(b>>>0)/(d>>>0)|0;if(a>>>0>>0){e=1;a=d;c=b;break}if((b|0)==(X(a,d)|0)){e=9;a=d;break}d=g+82|0;a=(b>>>0)/(d>>>0)|0;if(a>>>0>>0){e=1;a=d;c=b;break}if((b|0)==(X(a,d)|0)){e=9;a=d;break}d=g+88|0;a=(b>>>0)/(d>>>0)|0;if(a>>>0>>0){e=1;a=d;c=b;break}if((b|0)==(X(a,d)|0)){e=9;a=d;break}d=g+96|0;a=(b>>>0)/(d>>>0)|0;if(a>>>0>>0){e=1;a=d;c=b;break}if((b|0)==(X(a,d)|0)){e=9;a=d;break}d=g+100|0;a=(b>>>0)/(d>>>0)|0;if(a>>>0>>0){e=1;a=d;c=b;break}if((b|0)==(X(a,d)|0)){e=9;a=d;break}d=g+102|0;a=(b>>>0)/(d>>>0)|0;if(a>>>0>>0){e=1;a=d;c=b;break}if((b|0)==(X(a,d)|0)){e=9;a=d;break}d=g+106|0;a=(b>>>0)/(d>>>0)|0;if(a>>>0>>0){e=1;a=d;c=b;break}if((b|0)==(X(a,d)|0)){e=9;a=d;break}d=g+108|0;a=(b>>>0)/(d>>>0)|0;if(a>>>0>>0){e=1;a=d;c=b;break}if((b|0)==(X(a,d)|0)){e=9;a=d;break}d=g+112|0;a=(b>>>0)/(d>>>0)|0;if(a>>>0>>0){e=1;a=d;c=b;break}if((b|0)==(X(a,d)|0)){e=9;a=d;break}d=g+120|0;a=(b>>>0)/(d>>>0)|0;if(a>>>0>>0){e=1;a=d;c=b;break}if((b|0)==(X(a,d)|0)){e=9;a=d;break}d=g+126|0;a=(b>>>0)/(d>>>0)|0;if(a>>>0>>0){e=1;a=d;c=b;break}if((b|0)==(X(a,d)|0)){e=9;a=d;break}d=g+130|0;a=(b>>>0)/(d>>>0)|0;if(a>>>0>>0){e=1;a=d;c=b;break}if((b|0)==(X(a,d)|0)){e=9;a=d;break}d=g+136|0;a=(b>>>0)/(d>>>0)|0;if(a>>>0>>0){e=1;a=d;c=b;break}if((b|0)==(X(a,d)|0)){e=9;a=d;break}d=g+138|0;a=(b>>>0)/(d>>>0)|0;if(a>>>0>>0){e=1;a=d;c=b;break}if((b|0)==(X(a,d)|0)){e=9;a=d;break}d=g+142|0;a=(b>>>0)/(d>>>0)|0;if(a>>>0>>0){e=1;a=d;c=b;break}if((b|0)==(X(a,d)|0)){e=9;a=d;break}d=g+148|0;a=(b>>>0)/(d>>>0)|0;if(a>>>0>>0){e=1;a=d;c=b;break}if((b|0)==(X(a,d)|0)){e=9;a=d;break}d=g+150|0;a=(b>>>0)/(d>>>0)|0;if(a>>>0>>0){e=1;a=d;c=b;break}if((b|0)==(X(a,d)|0)){e=9;a=d;break}d=g+156|0;a=(b>>>0)/(d>>>0)|0;if(a>>>0>>0){e=1;a=d;c=b;break}if((b|0)==(X(a,d)|0)){e=9;a=d;break}d=g+162|0;a=(b>>>0)/(d>>>0)|0;if(a>>>0>>0){e=1;a=d;c=b;break}if((b|0)==(X(a,d)|0)){e=9;a=d;break}d=g+166|0;a=(b>>>0)/(d>>>0)|0;if(a>>>0>>0){e=1;a=d;c=b;break}if((b|0)==(X(a,d)|0)){e=9;a=d;break}d=g+168|0;a=(b>>>0)/(d>>>0)|0;if(a>>>0>>0){e=1;a=d;c=b;break}if((b|0)==(X(a,d)|0)){e=9;a=d;break}d=g+172|0;a=(b>>>0)/(d>>>0)|0;if(a>>>0>>0){e=1;a=d;c=b;break}if((b|0)==(X(a,d)|0)){e=9;a=d;break}d=g+178|0;a=(b>>>0)/(d>>>0)|0;if(a>>>0>>0){e=1;a=d;c=b;break}if((b|0)==(X(a,d)|0)){e=9;a=d;break}d=g+180|0;a=(b>>>0)/(d>>>0)|0;if(a>>>0>>0){e=1;a=d;c=b;break}if((b|0)==(X(a,d)|0)){e=9;a=d;break}d=g+186|0;a=(b>>>0)/(d>>>0)|0;if(a>>>0>>0){e=1;a=d;c=b;break}if((b|0)==(X(a,d)|0)){e=9;a=d;break}d=g+190|0;a=(b>>>0)/(d>>>0)|0;if(a>>>0>>0){e=1;a=d;c=b;break}if((b|0)==(X(a,d)|0)){e=9;a=d;break}d=g+192|0;a=(b>>>0)/(d>>>0)|0;if(a>>>0>>0){e=1;a=d;c=b;break}if((b|0)==(X(a,d)|0)){e=9;a=d;break}d=g+196|0;a=(b>>>0)/(d>>>0)|0;if(a>>>0>>0){e=1;a=d;c=b;break}if((b|0)==(X(a,d)|0)){e=9;a=d;break}d=g+198|0;a=(b>>>0)/(d>>>0)|0;if(a>>>0>>0){e=1;a=d;c=b;break}if((b|0)==(X(a,d)|0)){e=9;a=d;break}a=g+208|0;m=(b>>>0)/(a>>>0)|0;d=m>>>0>>0;m=(b|0)==(X(m,a)|0);e=d?1:m?9:0;a=d|m?a:g+210|0;c=d?b:c}else{e=1;a=d;c=b}}else{e=9;a=d}else{e=1;a=d;c=b}}else{e=9;a=d}else{e=1;a=d;c=b}}else{e=9;a=d}else{e=1;a=d;c=b}}else{e=9;a=d}else{e=1;a=d;c=b}}else{e=9;a=d}else{e=1;a=d;c=b}}else{e=9;a=g}else{e=1;a=g;c=b}while(0);switch(e&15){case 9:{b=c;break b}case 0:{g=a;k=8;break}default:break c}}if(!e)b=c;else{k=107;break a}}while(0);e=h+1|0;m=(e|0)==48;a=(m&1)+i|0;h=m?0:e;i=a;a=a*210|0;e=b}if((k|0)==106){f[j>>2]=b;break}else if((k|0)==107){f[j>>2]=b;b=c;break}}else{b=Kl(5484,5676,j,b)|0;b=f[b>>2]|0}while(0);u=l;return b|0}function bb(a){a=a|0;var c=0,d=0,e=0,g=0,i=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,v=0,w=0,x=0,y=0,z=0,A=0,B=0,C=0,D=0;D=u;u=u+128|0;A=D+112|0;k=D+108|0;m=D+104|0;o=D+100|0;s=D+96|0;p=D+92|0;r=D+88|0;C=D+40|0;B=D;t=D+84|0;z=D+80|0;l=a+148|0;f[l>>2]=0;g=a+164|0;if(f[g>>2]|0){d=a+160|0;c=f[d>>2]|0;if(c|0)do{y=c;c=f[c>>2]|0;ar(y)}while((c|0)!=0);f[d>>2]=0;c=f[a+156>>2]|0;if(c|0){d=a+152|0;e=0;do{f[(f[d>>2]|0)+(e<<2)>>2]=0;e=e+1|0}while((e|0)!=(c|0))}f[g>>2]=0}q=a+4|0;j=f[q>>2]|0;c=b[j+36>>0]|0;j=f[j+32>>2]|0;do if(((c&255)<<8&65535)<512){x=j+8|0;y=f[x>>2]|0;x=f[x+4>>2]|0;i=j+16|0;e=i;d=f[e>>2]|0;e=Ho(d|0,f[e+4>>2]|0,4,0)|0;g=I;if((x|0)<(g|0)|(x|0)==(g|0)&y>>>0>>0){C=0;u=D;return C|0}else{d=(f[j>>2]|0)+d|0;d=h[d>>0]|h[d+1>>0]<<8|h[d+2>>0]<<16|h[d+3>>0]<<24;f[k>>2]=d;y=i;f[y>>2]=e;f[y+4>>2]=g;break}}else if(yj(k,j)|0){j=f[q>>2]|0;d=f[k>>2]|0;c=b[j+36>>0]|0;j=f[j+32>>2]|0;break}else{C=0;u=D;return C|0}while(0);f[l>>2]=d;if(((c&255)<<8&65535)<512){x=j+8|0;y=f[x>>2]|0;x=f[x+4>>2]|0;i=j+16|0;e=i;d=f[e>>2]|0;e=Ho(d|0,f[e+4>>2]|0,4,0)|0;g=I;if((x|0)<(g|0)|(x|0)==(g|0)&y>>>0>>0)c=0;else{d=(f[j>>2]|0)+d|0;d=h[d>>0]|h[d+1>>0]<<8|h[d+2>>0]<<16|h[d+3>>0]<<24;f[m>>2]=d;f[i>>2]=e;f[i+4>>2]=g;i=j;v=18}}else if(yj(m,j)|0){i=f[q>>2]|0;d=f[m>>2]|0;c=b[i+36>>0]|0;i=f[i+32>>2]|0;v=18}else c=0;if((v|0)==18){l=a+172|0;f[l>>2]=d;if(((c&255)<<8&65535)<512){x=i+8|0;y=f[x>>2]|0;x=f[x+4>>2]|0;g=i+16|0;d=g;c=f[d>>2]|0;d=Ho(c|0,f[d+4>>2]|0,4,0)|0;e=I;if((x|0)<(e|0)|(x|0)==(e|0)&y>>>0>>0)c=0;else{v=(f[i>>2]|0)+c|0;f[o>>2]=h[v>>0]|h[v+1>>0]<<8|h[v+2>>0]<<16|h[v+3>>0]<<24;v=g;f[v>>2]=d;f[v+4>>2]=e;v=22}}else if(yj(o,i)|0)v=22;else c=0;do if((v|0)==22){c=f[a+24>>2]|0;e=a+28|0;d=f[e>>2]|0;if((d|0)!=(c|0))f[e>>2]=d+(~((d+-4-c|0)>>>2)<<2);c=ln(60)|0;Po(c);y=a+8|0;d=f[y>>2]|0;f[y>>2]=c;if(d){sj(d);ar(d);c=f[y>>2]|0;if(!c){c=0;break}}if(tl(c,f[o>>2]|0)|0){g=a+176|0;d=f[g>>2]|0;e=a+180|0;c=f[e>>2]|0;if((c|0)!=(d|0))f[e>>2]=c+(~((c+-4-d|0)>>>2)<<2);Sj(g,f[o>>2]|0);g=a+188|0;c=f[g>>2]|0;e=a+192|0;d=f[e>>2]|0;if((d|0)!=(c|0))f[e>>2]=d+(~((d+-4-c|0)>>>2)<<2);Sj(g,f[o>>2]|0);c=f[a+36>>2]|0;e=a+40|0;d=f[e>>2]|0;if((d|0)!=(c|0))f[e>>2]=d+(~(((d+-12-c|0)>>>0)/12|0)*12|0);c=f[a+48>>2]|0;e=a+52|0;d=f[e>>2]|0;if((d|0)!=(c|0))f[e>>2]=d+(~((d+-4-c|0)>>>2)<<2);f[a+68>>2]=0;c=f[a+76>>2]|0;e=a+80|0;d=f[e>>2]|0;if((d|0)!=(c|0))f[e>>2]=d+(~((d+-4-c|0)>>>2)<<2);f[a+60>>2]=0;f[a+100>>2]=-1;f[a+108>>2]=-1;f[a+104>>2]=-1;c=f[(f[q>>2]|0)+32>>2]|0;x=c+8|0;w=f[x+4>>2]|0;g=c+16|0;e=g;d=f[e>>2]|0;e=f[e+4>>2]|0;if((w|0)>(e|0)|((w|0)==(e|0)?(f[x>>2]|0)>>>0>d>>>0:0)?(n=b[(f[c>>2]|0)+d>>0]|0,w=Ho(d|0,e|0,1,0)|0,x=g,f[x>>2]=w,f[x+4>>2]=I,n<<24>>24>=0):0){x=a+228|0;i=f[x>>2]|0;w=a+232|0;c=f[w>>2]|0;if((c|0)!=(i|0))do{f[w>>2]=c+-116;d=f[c+-12>>2]|0;if(d|0){g=c+-8|0;e=f[g>>2]|0;if((e|0)!=(d|0))f[g>>2]=e+(~((e+-4-d|0)>>>2)<<2);ar(d)}d=f[c+-28>>2]|0;if(d|0){g=c+-24|0;e=f[g>>2]|0;if((e|0)!=(d|0))f[g>>2]=e+(~((e+-4-d|0)>>>2)<<2);ar(d)}d=f[c+-40>>2]|0;if(d|0){g=c+-36|0;e=f[g>>2]|0;if((e|0)!=(d|0))f[g>>2]=e+(~((e+-4-d|0)>>>2)<<2);ar(d)}Bj(c+-112|0);c=f[w>>2]|0}while((c|0)!=(i|0));k=n<<24>>24;_h(x,k);n=f[q>>2]|0;c=f[n+32>>2]|0;if(((h[n+36>>0]|0)<<8&65535)<512){m=c+8|0;n=f[m>>2]|0;m=f[m+4>>2]|0;i=c+16|0;e=i;d=f[e>>2]|0;e=Ho(d|0,f[e+4>>2]|0,4,0)|0;g=I;if((m|0)<(g|0)|(m|0)==(g|0)&n>>>0>>0)c=0;else{c=(f[c>>2]|0)+d|0;c=h[c>>0]|h[c+1>>0]<<8|h[c+2>>0]<<16|h[c+3>>0]<<24;f[s>>2]=c;v=i;f[v>>2]=e;f[v+4>>2]=g;v=58}}else if(yj(s,c)|0){c=f[s>>2]|0;v=58}else c=0;if((v|0)==58)if((f[o>>2]|0)>>>0>>0)c=0;else{o=f[q>>2]|0;c=f[o+32>>2]|0;do if(((h[o+36>>0]|0)<<8&65535)<512){n=c+8|0;o=f[n>>2]|0;n=f[n+4>>2]|0;i=c+16|0;e=i;d=f[e>>2]|0;e=Ho(d|0,f[e+4>>2]|0,4,0)|0;g=I;if((n|0)<(g|0)|(n|0)==(g|0)&o>>>0>>0){c=0;break}c=(f[c>>2]|0)+d|0;c=h[c>>0]|h[c+1>>0]<<8|h[c+2>>0]<<16|h[c+3>>0]<<24;f[p>>2]=c;v=i;f[v>>2]=e;f[v+4>>2]=g;v=64}else{if(!(yj(p,c)|0)){c=0;break}c=f[p>>2]|0;v=64}while(0);if((v|0)==64){j=a+136|0;p=c+(f[l>>2]|0)|0;b[A>>0]=1;Yg(j,p,A);p=f[q>>2]|0;c=f[p+32>>2]|0;do if(((h[p+36>>0]|0)<<8&65535)>=512)if(yj(r,c)|0)v=68;else c=0;else{o=c+8|0;p=f[o>>2]|0;o=f[o+4>>2]|0;i=c+16|0;e=i;d=f[e>>2]|0;e=Ho(d|0,f[e+4>>2]|0,4,0)|0;g=I;if((o|0)<(g|0)|(o|0)==(g|0)&p>>>0>>0){c=0;break}v=(f[c>>2]|0)+d|0;f[r>>2]=h[v>>0]|h[v+1>>0]<<8|h[v+2>>0]<<16|h[v+3>>0]<<24;v=i;f[v>>2]=e;f[v+4>>2]=g;v=68}while(0);if((v|0)==68){Ym(C);n=f[(f[q>>2]|0)+32>>2]|0;p=n+16|0;o=f[p>>2]|0;c=f[r>>2]|0;v=(f[n>>2]|0)+o+c|0;r=n+8|0;r=Xn(f[r>>2]|0,f[r+4>>2]|0,o|0,f[p+4>>2]|0)|0;c=Xn(r|0,I|0,c|0,0)|0;tn(C,v,c);c=Sb(a,C)|0;if((c|0)==-1)c=0;else{d=a+240|0;f[a+328>>2]=a;r=(Sa[f[(f[a>>2]|0)+32>>2]&255](a)|0)+32|0;r=f[r>>2]|0;p=f[r>>2]|0;r=f[r+16>>2]|0;v=(Sa[f[(f[a>>2]|0)+32>>2]&255](a)|0)+32|0;v=f[v>>2]|0;o=v+8|0;v=v+16|0;v=Xn(f[o>>2]|0,f[o+4>>2]|0,f[v>>2]|0,f[v+4>>2]|0)|0;tn(d,p+r|0,v);v=Sa[f[(f[a>>2]|0)+36>>2]&255](a)|0;f[a+332>>2]=v;f[a+336>>2]=f[l>>2];f[a+324>>2]=k;Ym(B);a:do if(sh(d,B)|0){if((Za(a,f[s>>2]|0)|0)==-1){c=0;break}r=f[(f[q>>2]|0)+32>>2]|0;v=B+16|0;p=f[v>>2]|0;s=(f[B>>2]|0)+p|0;o=B+8|0;v=Xn(f[o>>2]|0,f[o+4>>2]|0,p|0,f[v+4>>2]|0)|0;tn(r,s,v);v=(f[(f[q>>2]|0)+32>>2]|0)+16|0;s=v;s=Ho(f[s>>2]|0,f[s+4>>2]|0,c|0,((c|0)<0)<<31>>31|0)|0;f[v>>2]=s;f[v+4>>2]=I;do if((f[w>>2]|0)!=(f[x>>2]|0)){v=f[y>>2]|0;if(((f[v+4>>2]|0)-(f[v>>2]|0)|0)<=0)break;c=0;do{f[t>>2]=c;f[A>>2]=f[t>>2];c=c+3|0;if(!(kf(a,A)|0)){c=0;break a}v=f[y>>2]|0}while((c|0)<((f[v+4>>2]|0)-(f[v>>2]|0)>>2|0))}while(0);hm(d);hm(a+280|0);g=f[y>>2]|0;r=f[g+28>>2]|0;i=f[g+24>>2]|0;q=i;if((r-i|0)>0){l=f[j>>2]|0;p=r-i>>2;n=g+12|0;o=0;do{do if(f[l+(o>>>5<<2)>>2]&1<<(o&31)|0){m=q+(o<<2)|0;c=f[m>>2]|0;if((c|0)<0)break;d=c+1|0;d=((d|0)%3|0|0)==0?c+-2|0:d;if((d|0)>=0){k=f[n>>2]|0;e=f[k+(d<<2)>>2]|0;d=e+1|0;b:do if((e|0)<0)d=c;else{d=((d|0)%3|0|0)==0?e+-2|0:d;if(!((d|0)>-1&(d|0)!=(c|0))){e=d;d=c;break}while(1){e=d+1|0;e=((e|0)%3|0|0)==0?d+-2|0:e;if((e|0)<0)break b;e=f[k+(e<<2)>>2]|0;j=e+1|0;if((e|0)<0)break b;e=((j|0)%3|0|0)==0?e+-2|0:j;if((e|0)>-1&(e|0)!=(c|0))d=e;else break}}while(0);if((e|0)==(c|0))break;else c=d}f[m>>2]=c}while(0);o=o+1|0}while((o|0)<(p|0))}e=f[w>>2]|0;v=f[x>>2]|0;c=v;if((e|0)==(v|0)){g=r;d=e}else{i=0;do{Pi(c+(i*116|0)+4|0,g)|0;c=f[x>>2]|0;d=f[c+(i*116|0)+104>>2]|0;e=f[c+(i*116|0)+108>>2]|0;if((d|0)!=(e|0))do{f[z>>2]=f[d>>2];f[A>>2]=f[z>>2];zg(c+(i*116|0)+4|0,A);d=d+4|0;c=f[x>>2]|0}while((d|0)!=(e|0));Gl(c+(i*116|0)+4|0,0,0);i=i+1|0;e=f[w>>2]|0;d=f[x>>2]|0;c=d;g=f[y>>2]|0}while(i>>>0<((e-d|0)/116|0)>>>0);i=f[g+24>>2]|0;g=f[g+28>>2]|0}i=g-i>>2;k=a+212|0;m=a+216|0;l=f[m>>2]|0;g=f[k>>2]|0;j=l-g>>2;do if(i>>>0>j>>>0){ui(k,i-j|0);c=f[x>>2]|0;e=f[w>>2]|0;d=c}else{if(i>>>0>=j>>>0)break;g=g+(i<<2)|0;if((l|0)==(g|0))break;f[m>>2]=l+(~((l+-4-g|0)>>>2)<<2)}while(0);if((e|0)!=(d|0)){m=0;while(1){k=(f[c+(m*116|0)+60>>2]|0)-(f[c+(m*116|0)+56>>2]|0)>>2;l=f[y>>2]|0;l=(f[l+28>>2]|0)-(f[l+24>>2]|0)>>2;k=(k|0)<(l|0)?l:k;l=c+(m*116|0)+88|0;j=c+(m*116|0)+92|0;i=f[j>>2]|0;c=f[l>>2]|0;g=i-c>>2;do if(k>>>0>g>>>0){ui(l,k-g|0);d=f[x>>2]|0;e=f[w>>2]|0}else{if(k>>>0>=g>>>0)break;c=c+(k<<2)|0;if((i|0)==(c|0))break;f[j>>2]=i+(~((i+-4-c|0)>>>2)<<2)}while(0);m=m+1|0;if(m>>>0>=((e-d|0)/116|0)>>>0)break;else c=d}}c=wb(a)|0}else c=0;while(0);fr(B+24|0)}fr(C+24|0)}}}}else c=0}else c=0}while(0)}C=c;u=D;return C|0}function cb(a){a=a|0;var c=0,d=0,e=0,g=0,i=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,v=0,w=0,x=0,y=0,z=0,A=0,B=0,C=0,D=0;D=u;u=u+128|0;A=D+112|0;k=D+108|0;m=D+104|0;o=D+100|0;s=D+96|0;p=D+92|0;r=D+88|0;C=D+40|0;B=D;t=D+84|0;z=D+80|0;l=a+148|0;f[l>>2]=0;g=a+164|0;if(f[g>>2]|0){d=a+160|0;c=f[d>>2]|0;if(c|0)do{y=c;c=f[c>>2]|0;ar(y)}while((c|0)!=0);f[d>>2]=0;c=f[a+156>>2]|0;if(c|0){d=a+152|0;e=0;do{f[(f[d>>2]|0)+(e<<2)>>2]=0;e=e+1|0}while((e|0)!=(c|0))}f[g>>2]=0}q=a+4|0;j=f[q>>2]|0;c=b[j+36>>0]|0;j=f[j+32>>2]|0;do if(((c&255)<<8&65535)<512){x=j+8|0;y=f[x>>2]|0;x=f[x+4>>2]|0;i=j+16|0;e=i;d=f[e>>2]|0;e=Ho(d|0,f[e+4>>2]|0,4,0)|0;g=I;if((x|0)<(g|0)|(x|0)==(g|0)&y>>>0>>0){C=0;u=D;return C|0}else{d=(f[j>>2]|0)+d|0;d=h[d>>0]|h[d+1>>0]<<8|h[d+2>>0]<<16|h[d+3>>0]<<24;f[k>>2]=d;y=i;f[y>>2]=e;f[y+4>>2]=g;break}}else if(yj(k,j)|0){j=f[q>>2]|0;d=f[k>>2]|0;c=b[j+36>>0]|0;j=f[j+32>>2]|0;break}else{C=0;u=D;return C|0}while(0);f[l>>2]=d;if(((c&255)<<8&65535)<512){x=j+8|0;y=f[x>>2]|0;x=f[x+4>>2]|0;i=j+16|0;e=i;d=f[e>>2]|0;e=Ho(d|0,f[e+4>>2]|0,4,0)|0;g=I;if((x|0)<(g|0)|(x|0)==(g|0)&y>>>0>>0)c=0;else{d=(f[j>>2]|0)+d|0;d=h[d>>0]|h[d+1>>0]<<8|h[d+2>>0]<<16|h[d+3>>0]<<24;f[m>>2]=d;f[i>>2]=e;f[i+4>>2]=g;i=j;v=18}}else if(yj(m,j)|0){i=f[q>>2]|0;d=f[m>>2]|0;c=b[i+36>>0]|0;i=f[i+32>>2]|0;v=18}else c=0;if((v|0)==18){l=a+172|0;f[l>>2]=d;if(((c&255)<<8&65535)<512){x=i+8|0;y=f[x>>2]|0;x=f[x+4>>2]|0;g=i+16|0;d=g;c=f[d>>2]|0;d=Ho(c|0,f[d+4>>2]|0,4,0)|0;e=I;if((x|0)<(e|0)|(x|0)==(e|0)&y>>>0>>0)c=0;else{v=(f[i>>2]|0)+c|0;f[o>>2]=h[v>>0]|h[v+1>>0]<<8|h[v+2>>0]<<16|h[v+3>>0]<<24;v=g;f[v>>2]=d;f[v+4>>2]=e;v=22}}else if(yj(o,i)|0)v=22;else c=0;do if((v|0)==22){c=f[a+24>>2]|0;e=a+28|0;d=f[e>>2]|0;if((d|0)!=(c|0))f[e>>2]=d+(~((d+-4-c|0)>>>2)<<2);c=ln(60)|0;Po(c);y=a+8|0;d=f[y>>2]|0;f[y>>2]=c;if(d){sj(d);ar(d);c=f[y>>2]|0;if(!c){c=0;break}}if(tl(c,f[o>>2]|0)|0){g=a+176|0;d=f[g>>2]|0;e=a+180|0;c=f[e>>2]|0;if((c|0)!=(d|0))f[e>>2]=c+(~((c+-4-d|0)>>>2)<<2);Sj(g,f[o>>2]|0);g=a+188|0;c=f[g>>2]|0;e=a+192|0;d=f[e>>2]|0;if((d|0)!=(c|0))f[e>>2]=d+(~((d+-4-c|0)>>>2)<<2);Sj(g,f[o>>2]|0);c=f[a+36>>2]|0;e=a+40|0;d=f[e>>2]|0;if((d|0)!=(c|0))f[e>>2]=d+(~(((d+-12-c|0)>>>0)/12|0)*12|0);c=f[a+48>>2]|0;e=a+52|0;d=f[e>>2]|0;if((d|0)!=(c|0))f[e>>2]=d+(~((d+-4-c|0)>>>2)<<2);f[a+68>>2]=0;c=f[a+76>>2]|0;e=a+80|0;d=f[e>>2]|0;if((d|0)!=(c|0))f[e>>2]=d+(~((d+-4-c|0)>>>2)<<2);f[a+60>>2]=0;f[a+100>>2]=-1;f[a+108>>2]=-1;f[a+104>>2]=-1;c=f[(f[q>>2]|0)+32>>2]|0;x=c+8|0;w=f[x+4>>2]|0;g=c+16|0;e=g;d=f[e>>2]|0;e=f[e+4>>2]|0;if((w|0)>(e|0)|((w|0)==(e|0)?(f[x>>2]|0)>>>0>d>>>0:0)?(n=b[(f[c>>2]|0)+d>>0]|0,w=Ho(d|0,e|0,1,0)|0,x=g,f[x>>2]=w,f[x+4>>2]=I,n<<24>>24>=0):0){x=a+228|0;i=f[x>>2]|0;w=a+232|0;c=f[w>>2]|0;if((c|0)!=(i|0))do{f[w>>2]=c+-116;d=f[c+-12>>2]|0;if(d|0){g=c+-8|0;e=f[g>>2]|0;if((e|0)!=(d|0))f[g>>2]=e+(~((e+-4-d|0)>>>2)<<2);ar(d)}d=f[c+-28>>2]|0;if(d|0){g=c+-24|0;e=f[g>>2]|0;if((e|0)!=(d|0))f[g>>2]=e+(~((e+-4-d|0)>>>2)<<2);ar(d)}d=f[c+-40>>2]|0;if(d|0){g=c+-36|0;e=f[g>>2]|0;if((e|0)!=(d|0))f[g>>2]=e+(~((e+-4-d|0)>>>2)<<2);ar(d)}Bj(c+-112|0);c=f[w>>2]|0}while((c|0)!=(i|0));k=n<<24>>24;_h(x,k);n=f[q>>2]|0;c=f[n+32>>2]|0;if(((h[n+36>>0]|0)<<8&65535)<512){m=c+8|0;n=f[m>>2]|0;m=f[m+4>>2]|0;i=c+16|0;e=i;d=f[e>>2]|0;e=Ho(d|0,f[e+4>>2]|0,4,0)|0;g=I;if((m|0)<(g|0)|(m|0)==(g|0)&n>>>0>>0)c=0;else{c=(f[c>>2]|0)+d|0;c=h[c>>0]|h[c+1>>0]<<8|h[c+2>>0]<<16|h[c+3>>0]<<24;f[s>>2]=c;v=i;f[v>>2]=e;f[v+4>>2]=g;v=58}}else if(yj(s,c)|0){c=f[s>>2]|0;v=58}else c=0;if((v|0)==58)if((f[o>>2]|0)>>>0>>0)c=0;else{o=f[q>>2]|0;c=f[o+32>>2]|0;do if(((h[o+36>>0]|0)<<8&65535)<512){n=c+8|0;o=f[n>>2]|0;n=f[n+4>>2]|0;i=c+16|0;e=i;d=f[e>>2]|0;e=Ho(d|0,f[e+4>>2]|0,4,0)|0;g=I;if((n|0)<(g|0)|(n|0)==(g|0)&o>>>0>>0){c=0;break}c=(f[c>>2]|0)+d|0;c=h[c>>0]|h[c+1>>0]<<8|h[c+2>>0]<<16|h[c+3>>0]<<24;f[p>>2]=c;v=i;f[v>>2]=e;f[v+4>>2]=g;v=64}else{if(!(yj(p,c)|0)){c=0;break}c=f[p>>2]|0;v=64}while(0);if((v|0)==64){j=a+136|0;p=c+(f[l>>2]|0)|0;b[A>>0]=1;Yg(j,p,A);p=f[q>>2]|0;c=f[p+32>>2]|0;do if(((h[p+36>>0]|0)<<8&65535)>=512)if(yj(r,c)|0)v=68;else c=0;else{o=c+8|0;p=f[o>>2]|0;o=f[o+4>>2]|0;i=c+16|0;e=i;d=f[e>>2]|0;e=Ho(d|0,f[e+4>>2]|0,4,0)|0;g=I;if((o|0)<(g|0)|(o|0)==(g|0)&p>>>0>>0){c=0;break}v=(f[c>>2]|0)+d|0;f[r>>2]=h[v>>0]|h[v+1>>0]<<8|h[v+2>>0]<<16|h[v+3>>0]<<24;v=i;f[v>>2]=e;f[v+4>>2]=g;v=68}while(0);if((v|0)==68){Ym(C);n=f[(f[q>>2]|0)+32>>2]|0;p=n+16|0;o=f[p>>2]|0;c=f[r>>2]|0;v=(f[n>>2]|0)+o+c|0;r=n+8|0;r=Xn(f[r>>2]|0,f[r+4>>2]|0,o|0,f[p+4>>2]|0)|0;c=Xn(r|0,I|0,c|0,0)|0;tn(C,v,c);c=Sb(a,C)|0;if((c|0)==-1)c=0;else{d=a+240|0;f[a+328>>2]=a;r=(Sa[f[(f[a>>2]|0)+32>>2]&255](a)|0)+32|0;r=f[r>>2]|0;p=f[r>>2]|0;r=f[r+16>>2]|0;v=(Sa[f[(f[a>>2]|0)+32>>2]&255](a)|0)+32|0;v=f[v>>2]|0;o=v+8|0;v=v+16|0;v=Xn(f[o>>2]|0,f[o+4>>2]|0,f[v>>2]|0,f[v+4>>2]|0)|0;tn(d,p+r|0,v);v=Sa[f[(f[a>>2]|0)+36>>2]&255](a)|0;f[a+332>>2]=v;f[a+336>>2]=f[l>>2];f[a+324>>2]=k;Ym(B);a:do if(Gc(d,B)|0){if((Ya(a,f[s>>2]|0)|0)==-1){c=0;break}r=f[(f[q>>2]|0)+32>>2]|0;v=B+16|0;p=f[v>>2]|0;s=(f[B>>2]|0)+p|0;o=B+8|0;v=Xn(f[o>>2]|0,f[o+4>>2]|0,p|0,f[v+4>>2]|0)|0;tn(r,s,v);v=(f[(f[q>>2]|0)+32>>2]|0)+16|0;s=v;s=Ho(f[s>>2]|0,f[s+4>>2]|0,c|0,((c|0)<0)<<31>>31|0)|0;f[v>>2]=s;f[v+4>>2]=I;do if((f[w>>2]|0)!=(f[x>>2]|0)){v=f[y>>2]|0;if(((f[v+4>>2]|0)-(f[v>>2]|0)|0)<=0)break;c=0;do{f[t>>2]=c;f[A>>2]=f[t>>2];c=c+3|0;if(!(kf(a,A)|0)){c=0;break a}v=f[y>>2]|0}while((c|0)<((f[v+4>>2]|0)-(f[v>>2]|0)>>2|0))}while(0);hm(d);hm(a+280|0);g=f[y>>2]|0;r=f[g+28>>2]|0;i=f[g+24>>2]|0;q=i;if((r-i|0)>0){l=f[j>>2]|0;p=r-i>>2;n=g+12|0;o=0;do{do if(f[l+(o>>>5<<2)>>2]&1<<(o&31)|0){m=q+(o<<2)|0;c=f[m>>2]|0;if((c|0)<0)break;d=c+1|0;d=((d|0)%3|0|0)==0?c+-2|0:d;if((d|0)>=0){k=f[n>>2]|0;e=f[k+(d<<2)>>2]|0;d=e+1|0;b:do if((e|0)<0)d=c;else{d=((d|0)%3|0|0)==0?e+-2|0:d;if(!((d|0)>-1&(d|0)!=(c|0))){e=d;d=c;break}while(1){e=d+1|0;e=((e|0)%3|0|0)==0?d+-2|0:e;if((e|0)<0)break b;e=f[k+(e<<2)>>2]|0;j=e+1|0;if((e|0)<0)break b;e=((j|0)%3|0|0)==0?e+-2|0:j;if((e|0)>-1&(e|0)!=(c|0))d=e;else break}}while(0);if((e|0)==(c|0))break;else c=d}f[m>>2]=c}while(0);o=o+1|0}while((o|0)<(p|0))}e=f[w>>2]|0;v=f[x>>2]|0;c=v;if((e|0)==(v|0)){g=r;d=e}else{i=0;do{Pi(c+(i*116|0)+4|0,g)|0;c=f[x>>2]|0;d=f[c+(i*116|0)+104>>2]|0;e=f[c+(i*116|0)+108>>2]|0;if((d|0)!=(e|0))do{f[z>>2]=f[d>>2];f[A>>2]=f[z>>2];zg(c+(i*116|0)+4|0,A);d=d+4|0;c=f[x>>2]|0}while((d|0)!=(e|0));Gl(c+(i*116|0)+4|0,0,0);i=i+1|0;e=f[w>>2]|0;d=f[x>>2]|0;c=d;g=f[y>>2]|0}while(i>>>0<((e-d|0)/116|0)>>>0);i=f[g+24>>2]|0;g=f[g+28>>2]|0}i=g-i>>2;k=a+212|0;m=a+216|0;l=f[m>>2]|0;g=f[k>>2]|0;j=l-g>>2;do if(i>>>0>j>>>0){ui(k,i-j|0);c=f[x>>2]|0;e=f[w>>2]|0;d=c}else{if(i>>>0>=j>>>0)break;g=g+(i<<2)|0;if((l|0)==(g|0))break;f[m>>2]=l+(~((l+-4-g|0)>>>2)<<2)}while(0);if((e|0)!=(d|0)){m=0;while(1){k=(f[c+(m*116|0)+60>>2]|0)-(f[c+(m*116|0)+56>>2]|0)>>2;l=f[y>>2]|0;l=(f[l+28>>2]|0)-(f[l+24>>2]|0)>>2;k=(k|0)<(l|0)?l:k;l=c+(m*116|0)+88|0;j=c+(m*116|0)+92|0;i=f[j>>2]|0;c=f[l>>2]|0;g=i-c>>2;do if(k>>>0>g>>>0){ui(l,k-g|0);d=f[x>>2]|0;e=f[w>>2]|0}else{if(k>>>0>=g>>>0)break;c=c+(k<<2)|0;if((i|0)==(c|0))break;f[j>>2]=i+(~((i+-4-c|0)>>>2)<<2)}while(0);m=m+1|0;if(m>>>0>=((e-d|0)/116|0)>>>0)break;else c=d}}c=wb(a)|0}else c=0;while(0);fr(B+24|0)}fr(C+24|0)}}}}else c=0}else c=0}while(0)}C=c;u=D;return C|0}function db(a){a=a|0;var c=0,d=0,e=0,g=0,i=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,v=0,w=0,x=0,y=0,z=0,A=0,B=0,C=0,D=0;D=u;u=u+128|0;A=D+112|0;k=D+108|0;m=D+104|0;o=D+100|0;s=D+96|0;p=D+92|0;r=D+88|0;C=D+40|0;B=D;t=D+84|0;z=D+80|0;l=a+148|0;f[l>>2]=0;g=a+164|0;if(f[g>>2]|0){d=a+160|0;c=f[d>>2]|0;if(c|0)do{y=c;c=f[c>>2]|0;ar(y)}while((c|0)!=0);f[d>>2]=0;c=f[a+156>>2]|0;if(c|0){d=a+152|0;e=0;do{f[(f[d>>2]|0)+(e<<2)>>2]=0;e=e+1|0}while((e|0)!=(c|0))}f[g>>2]=0}q=a+4|0;j=f[q>>2]|0;c=b[j+36>>0]|0;j=f[j+32>>2]|0;do if(((c&255)<<8&65535)<512){x=j+8|0;y=f[x>>2]|0;x=f[x+4>>2]|0;i=j+16|0;e=i;d=f[e>>2]|0;e=Ho(d|0,f[e+4>>2]|0,4,0)|0;g=I;if((x|0)<(g|0)|(x|0)==(g|0)&y>>>0>>0){C=0;u=D;return C|0}else{d=(f[j>>2]|0)+d|0;d=h[d>>0]|h[d+1>>0]<<8|h[d+2>>0]<<16|h[d+3>>0]<<24;f[k>>2]=d;y=i;f[y>>2]=e;f[y+4>>2]=g;break}}else if(yj(k,j)|0){j=f[q>>2]|0;d=f[k>>2]|0;c=b[j+36>>0]|0;j=f[j+32>>2]|0;break}else{C=0;u=D;return C|0}while(0);f[l>>2]=d;if(((c&255)<<8&65535)<512){x=j+8|0;y=f[x>>2]|0;x=f[x+4>>2]|0;i=j+16|0;e=i;d=f[e>>2]|0;e=Ho(d|0,f[e+4>>2]|0,4,0)|0;g=I;if((x|0)<(g|0)|(x|0)==(g|0)&y>>>0>>0)c=0;else{d=(f[j>>2]|0)+d|0;d=h[d>>0]|h[d+1>>0]<<8|h[d+2>>0]<<16|h[d+3>>0]<<24;f[m>>2]=d;f[i>>2]=e;f[i+4>>2]=g;i=j;v=18}}else if(yj(m,j)|0){i=f[q>>2]|0;d=f[m>>2]|0;c=b[i+36>>0]|0;i=f[i+32>>2]|0;v=18}else c=0;if((v|0)==18){l=a+172|0;f[l>>2]=d;if(((c&255)<<8&65535)<512){x=i+8|0;y=f[x>>2]|0;x=f[x+4>>2]|0;g=i+16|0;d=g;c=f[d>>2]|0;d=Ho(c|0,f[d+4>>2]|0,4,0)|0;e=I;if((x|0)<(e|0)|(x|0)==(e|0)&y>>>0>>0)c=0;else{v=(f[i>>2]|0)+c|0;f[o>>2]=h[v>>0]|h[v+1>>0]<<8|h[v+2>>0]<<16|h[v+3>>0]<<24;v=g;f[v>>2]=d;f[v+4>>2]=e;v=22}}else if(yj(o,i)|0)v=22;else c=0;do if((v|0)==22){c=f[a+24>>2]|0;e=a+28|0;d=f[e>>2]|0;if((d|0)!=(c|0))f[e>>2]=d+(~((d+-4-c|0)>>>2)<<2);c=ln(60)|0;Po(c);y=a+8|0;d=f[y>>2]|0;f[y>>2]=c;if(d){sj(d);ar(d);c=f[y>>2]|0;if(!c){c=0;break}}if(tl(c,f[o>>2]|0)|0){g=a+176|0;d=f[g>>2]|0;e=a+180|0;c=f[e>>2]|0;if((c|0)!=(d|0))f[e>>2]=c+(~((c+-4-d|0)>>>2)<<2);Sj(g,f[o>>2]|0);g=a+188|0;c=f[g>>2]|0;e=a+192|0;d=f[e>>2]|0;if((d|0)!=(c|0))f[e>>2]=d+(~((d+-4-c|0)>>>2)<<2);Sj(g,f[o>>2]|0);c=f[a+36>>2]|0;e=a+40|0;d=f[e>>2]|0;if((d|0)!=(c|0))f[e>>2]=d+(~(((d+-12-c|0)>>>0)/12|0)*12|0);c=f[a+48>>2]|0;e=a+52|0;d=f[e>>2]|0;if((d|0)!=(c|0))f[e>>2]=d+(~((d+-4-c|0)>>>2)<<2);f[a+68>>2]=0;c=f[a+76>>2]|0;e=a+80|0;d=f[e>>2]|0;if((d|0)!=(c|0))f[e>>2]=d+(~((d+-4-c|0)>>>2)<<2);f[a+60>>2]=0;f[a+100>>2]=-1;f[a+108>>2]=-1;f[a+104>>2]=-1;c=f[(f[q>>2]|0)+32>>2]|0;x=c+8|0;w=f[x+4>>2]|0;g=c+16|0;e=g;d=f[e>>2]|0;e=f[e+4>>2]|0;if((w|0)>(e|0)|((w|0)==(e|0)?(f[x>>2]|0)>>>0>d>>>0:0)?(n=b[(f[c>>2]|0)+d>>0]|0,w=Ho(d|0,e|0,1,0)|0,x=g,f[x>>2]=w,f[x+4>>2]=I,n<<24>>24>=0):0){x=a+228|0;i=f[x>>2]|0;w=a+232|0;c=f[w>>2]|0;if((c|0)!=(i|0))do{f[w>>2]=c+-116;d=f[c+-12>>2]|0;if(d|0){g=c+-8|0;e=f[g>>2]|0;if((e|0)!=(d|0))f[g>>2]=e+(~((e+-4-d|0)>>>2)<<2);ar(d)}d=f[c+-28>>2]|0;if(d|0){g=c+-24|0;e=f[g>>2]|0;if((e|0)!=(d|0))f[g>>2]=e+(~((e+-4-d|0)>>>2)<<2);ar(d)}d=f[c+-40>>2]|0;if(d|0){g=c+-36|0;e=f[g>>2]|0;if((e|0)!=(d|0))f[g>>2]=e+(~((e+-4-d|0)>>>2)<<2);ar(d)}Bj(c+-112|0);c=f[w>>2]|0}while((c|0)!=(i|0));k=n<<24>>24;_h(x,k);n=f[q>>2]|0;c=f[n+32>>2]|0;if(((h[n+36>>0]|0)<<8&65535)<512){m=c+8|0;n=f[m>>2]|0;m=f[m+4>>2]|0;i=c+16|0;e=i;d=f[e>>2]|0;e=Ho(d|0,f[e+4>>2]|0,4,0)|0;g=I;if((m|0)<(g|0)|(m|0)==(g|0)&n>>>0>>0)c=0;else{c=(f[c>>2]|0)+d|0;c=h[c>>0]|h[c+1>>0]<<8|h[c+2>>0]<<16|h[c+3>>0]<<24;f[s>>2]=c;v=i;f[v>>2]=e;f[v+4>>2]=g;v=58}}else if(yj(s,c)|0){c=f[s>>2]|0;v=58}else c=0;if((v|0)==58)if((f[o>>2]|0)>>>0>>0)c=0;else{o=f[q>>2]|0;c=f[o+32>>2]|0;do if(((h[o+36>>0]|0)<<8&65535)<512){n=c+8|0;o=f[n>>2]|0;n=f[n+4>>2]|0;i=c+16|0;e=i;d=f[e>>2]|0;e=Ho(d|0,f[e+4>>2]|0,4,0)|0;g=I;if((n|0)<(g|0)|(n|0)==(g|0)&o>>>0>>0){c=0;break}c=(f[c>>2]|0)+d|0;c=h[c>>0]|h[c+1>>0]<<8|h[c+2>>0]<<16|h[c+3>>0]<<24;f[p>>2]=c;v=i;f[v>>2]=e;f[v+4>>2]=g;v=64}else{if(!(yj(p,c)|0)){c=0;break}c=f[p>>2]|0;v=64}while(0);if((v|0)==64){j=a+136|0;p=c+(f[l>>2]|0)|0;b[A>>0]=1;Yg(j,p,A);p=f[q>>2]|0;c=f[p+32>>2]|0;do if(((h[p+36>>0]|0)<<8&65535)>=512)if(yj(r,c)|0)v=68;else c=0;else{o=c+8|0;p=f[o>>2]|0;o=f[o+4>>2]|0;i=c+16|0;e=i;d=f[e>>2]|0;e=Ho(d|0,f[e+4>>2]|0,4,0)|0;g=I;if((o|0)<(g|0)|(o|0)==(g|0)&p>>>0>>0){c=0;break}v=(f[c>>2]|0)+d|0;f[r>>2]=h[v>>0]|h[v+1>>0]<<8|h[v+2>>0]<<16|h[v+3>>0]<<24;v=i;f[v>>2]=e;f[v+4>>2]=g;v=68}while(0);if((v|0)==68){Ym(C);n=f[(f[q>>2]|0)+32>>2]|0;p=n+16|0;o=f[p>>2]|0;c=f[r>>2]|0;v=(f[n>>2]|0)+o+c|0;r=n+8|0;r=Xn(f[r>>2]|0,f[r+4>>2]|0,o|0,f[p+4>>2]|0)|0;c=Xn(r|0,I|0,c|0,0)|0;tn(C,v,c);c=Sb(a,C)|0;if((c|0)==-1)c=0;else{d=a+240|0;f[a+328>>2]=a;r=(Sa[f[(f[a>>2]|0)+32>>2]&255](a)|0)+32|0;r=f[r>>2]|0;p=f[r>>2]|0;r=f[r+16>>2]|0;v=(Sa[f[(f[a>>2]|0)+32>>2]&255](a)|0)+32|0;v=f[v>>2]|0;o=v+8|0;v=v+16|0;v=Xn(f[o>>2]|0,f[o+4>>2]|0,f[v>>2]|0,f[v+4>>2]|0)|0;tn(d,p+r|0,v);f[a+324>>2]=k;Ym(B);a:do if(Yd(d,B)|0){if((_a(a,f[s>>2]|0)|0)==-1){c=0;break}r=f[(f[q>>2]|0)+32>>2]|0;v=B+16|0;p=f[v>>2]|0;s=(f[B>>2]|0)+p|0;o=B+8|0;v=Xn(f[o>>2]|0,f[o+4>>2]|0,p|0,f[v+4>>2]|0)|0;tn(r,s,v);v=(f[(f[q>>2]|0)+32>>2]|0)+16|0;s=v;s=Ho(f[s>>2]|0,f[s+4>>2]|0,c|0,((c|0)<0)<<31>>31|0)|0;f[v>>2]=s;f[v+4>>2]=I;do if((f[w>>2]|0)!=(f[x>>2]|0)){v=f[y>>2]|0;if(((f[v+4>>2]|0)-(f[v>>2]|0)|0)<=0)break;c=0;do{f[t>>2]=c;f[A>>2]=f[t>>2];c=c+3|0;if(!(kf(a,A)|0)){c=0;break a}v=f[y>>2]|0}while((c|0)<((f[v+4>>2]|0)-(f[v>>2]|0)>>2|0))}while(0);hm(d);hm(a+280|0);g=f[y>>2]|0;r=f[g+28>>2]|0;i=f[g+24>>2]|0;q=i;if((r-i|0)>0){l=f[j>>2]|0;p=r-i>>2;n=g+12|0;o=0;do{do if(f[l+(o>>>5<<2)>>2]&1<<(o&31)|0){m=q+(o<<2)|0;c=f[m>>2]|0;if((c|0)<0)break;d=c+1|0;d=((d|0)%3|0|0)==0?c+-2|0:d;if((d|0)>=0){k=f[n>>2]|0;e=f[k+(d<<2)>>2]|0;d=e+1|0;b:do if((e|0)<0)d=c;else{d=((d|0)%3|0|0)==0?e+-2|0:d;if(!((d|0)>-1&(d|0)!=(c|0))){e=d;d=c;break}while(1){e=d+1|0;e=((e|0)%3|0|0)==0?d+-2|0:e;if((e|0)<0)break b;e=f[k+(e<<2)>>2]|0;j=e+1|0;if((e|0)<0)break b;e=((j|0)%3|0|0)==0?e+-2|0:j;if((e|0)>-1&(e|0)!=(c|0))d=e;else break}}while(0);if((e|0)==(c|0))break;else c=d}f[m>>2]=c}while(0);o=o+1|0}while((o|0)<(p|0))}e=f[w>>2]|0;v=f[x>>2]|0;c=v;if((e|0)==(v|0)){g=r;d=e}else{i=0;do{Pi(c+(i*116|0)+4|0,g)|0;c=f[x>>2]|0;d=f[c+(i*116|0)+104>>2]|0;e=f[c+(i*116|0)+108>>2]|0;if((d|0)!=(e|0))do{f[z>>2]=f[d>>2];f[A>>2]=f[z>>2];zg(c+(i*116|0)+4|0,A);d=d+4|0;c=f[x>>2]|0}while((d|0)!=(e|0));Gl(c+(i*116|0)+4|0,0,0);i=i+1|0;e=f[w>>2]|0;d=f[x>>2]|0;c=d;g=f[y>>2]|0}while(i>>>0<((e-d|0)/116|0)>>>0);i=f[g+24>>2]|0;g=f[g+28>>2]|0}i=g-i>>2;k=a+212|0;m=a+216|0;l=f[m>>2]|0;g=f[k>>2]|0;j=l-g>>2;do if(i>>>0>j>>>0){ui(k,i-j|0);c=f[x>>2]|0;e=f[w>>2]|0;d=c}else{if(i>>>0>=j>>>0)break;g=g+(i<<2)|0;if((l|0)==(g|0))break;f[m>>2]=l+(~((l+-4-g|0)>>>2)<<2)}while(0);if((e|0)!=(d|0)){m=0;while(1){k=(f[c+(m*116|0)+60>>2]|0)-(f[c+(m*116|0)+56>>2]|0)>>2;l=f[y>>2]|0;l=(f[l+28>>2]|0)-(f[l+24>>2]|0)>>2;k=(k|0)<(l|0)?l:k;l=c+(m*116|0)+88|0;j=c+(m*116|0)+92|0;i=f[j>>2]|0;c=f[l>>2]|0;g=i-c>>2;do if(k>>>0>g>>>0){ui(l,k-g|0);d=f[x>>2]|0;e=f[w>>2]|0}else{if(k>>>0>=g>>>0)break;c=c+(k<<2)|0;if((i|0)==(c|0))break;f[j>>2]=i+(~((i+-4-c|0)>>>2)<<2)}while(0);m=m+1|0;if(m>>>0>=((e-d|0)/116|0)>>>0)break;else c=d}}c=wb(a)|0}else c=0;while(0);fr(B+24|0)}fr(C+24|0)}}}}else c=0}else c=0}while(0)}C=c;u=D;return C|0}function eb(a,c,d){a=a|0;c=c|0;d=d|0;var e=La,g=0,i=0,j=0;if(!d){d=0;return d|0}switch(f[a+28>>2]|0){case 9:{c=f[c>>2]|0;switch(b[a+24>>0]|0){case 1:{g=a+48|0;i=f[g>>2]|0;g=f[g+4>>2]|0;j=a+40|0;a=(Ho(kn(f[j>>2]|0,f[j+4>>2]|0,c|0,((c|0)<0)<<31>>31|0)|0,I|0,i|0,g|0)|0)+(f[f[a>>2]>>2]|0)|0;b[s>>0]=b[a>>0];b[s+1>>0]=b[a+1>>0];b[s+2>>0]=b[a+2>>0];b[s+3>>0]=b[a+3>>0];e=$(n[s>>2]);break}case 2:{j=a+48|0;i=f[j>>2]|0;j=f[j+4>>2]|0;g=a+40|0;j=(Ho(kn(f[g>>2]|0,f[g+4>>2]|0,c|0,((c|0)<0)<<31>>31|0)|0,I|0,i|0,j|0)|0)+(f[f[a>>2]>>2]|0)|0;e=(f[s>>2]=h[j>>0]|h[j+1>>0]<<8|h[j+2>>0]<<16|h[j+3>>0]<<24,$(n[s>>2]));break}case 3:{j=a+48|0;i=f[j>>2]|0;j=f[j+4>>2]|0;g=a+40|0;j=(Ho(kn(f[g>>2]|0,f[g+4>>2]|0,c|0,((c|0)<0)<<31>>31|0)|0,I|0,i|0,j|0)|0)+(f[f[a>>2]>>2]|0)|0;b[s>>0]=b[j>>0];b[s+1>>0]=b[j+1>>0];b[s+2>>0]=b[j+2>>0];b[s+3>>0]=b[j+3>>0];e=$(n[s>>2]);break}case 4:{j=a+48|0;i=f[j>>2]|0;j=f[j+4>>2]|0;g=a+40|0;j=(Ho(kn(f[g>>2]|0,f[g+4>>2]|0,c|0,((c|0)<0)<<31>>31|0)|0,I|0,i|0,j|0)|0)+(f[f[a>>2]>>2]|0)|0;b[s>>0]=b[j>>0];b[s+1>>0]=b[j+1>>0];b[s+2>>0]=b[j+2>>0];b[s+3>>0]=b[j+3>>0];e=$(n[s>>2]);break}default:{j=0;return j|0}}i=+K(+e)>=1.0?(+e>0.0?~~+Y(+J(+e/4294967296.0),4294967295.0)>>>0:~~+W((+e-+(~~+e>>>0))/4294967296.0)>>>0):0;j=d;f[j>>2]=~~+e>>>0;f[j+4>>2]=i;j=1;return j|0}case 2:{c=f[c>>2]|0;switch(b[a+24>>0]|0){case 1:{j=a+48|0;i=f[j>>2]|0;j=f[j+4>>2]|0;g=a+40|0;c=Ho(kn(f[g>>2]|0,f[g+4>>2]|0,c|0,((c|0)<0)<<31>>31|0)|0,I|0,i|0,j|0)|0;c=h[(f[f[a>>2]>>2]|0)+c>>0]|0;a=0;break}case 2:{j=a+48|0;i=f[j>>2]|0;j=f[j+4>>2]|0;g=a+40|0;c=(Ho(kn(f[g>>2]|0,f[g+4>>2]|0,c|0,((c|0)<0)<<31>>31|0)|0,I|0,i|0,j|0)|0)+(f[f[a>>2]>>2]|0)|0;c=(h[c>>0]|h[c+1>>0]<<8)&255;a=0;break}case 3:{j=a+48|0;i=f[j>>2]|0;j=f[j+4>>2]|0;g=a+40|0;c=Ho(kn(f[g>>2]|0,f[g+4>>2]|0,c|0,((c|0)<0)<<31>>31|0)|0,I|0,i|0,j|0)|0;c=h[(f[f[a>>2]>>2]|0)+c>>0]|0;a=0;break}case 4:{j=a+48|0;i=f[j>>2]|0;j=f[j+4>>2]|0;g=a+40|0;c=(Ho(kn(f[g>>2]|0,f[g+4>>2]|0,c|0,((c|0)<0)<<31>>31|0)|0,I|0,i|0,j|0)|0)+(f[f[a>>2]>>2]|0)|0;c=(h[c>>0]|h[c+1>>0]<<8|h[c+2>>0]<<16|h[c+3>>0]<<24)&255;a=0;break}default:{j=0;return j|0}}j=d;f[j>>2]=c;f[j+4>>2]=a;j=1;return j|0}case 1:{c=f[c>>2]|0;switch(b[a+24>>0]|0){case 1:{j=a+48|0;i=f[j>>2]|0;j=f[j+4>>2]|0;g=a+40|0;c=Ho(kn(f[g>>2]|0,f[g+4>>2]|0,c|0,((c|0)<0)<<31>>31|0)|0,I|0,i|0,j|0)|0;c=b[(f[f[a>>2]>>2]|0)+c>>0]|0;break}case 2:{j=a+48|0;i=f[j>>2]|0;j=f[j+4>>2]|0;g=a+40|0;c=(Ho(kn(f[g>>2]|0,f[g+4>>2]|0,c|0,((c|0)<0)<<31>>31|0)|0,I|0,i|0,j|0)|0)+(f[f[a>>2]>>2]|0)|0;c=(h[c>>0]|h[c+1>>0]<<8)&255;break}case 3:{j=a+48|0;i=f[j>>2]|0;j=f[j+4>>2]|0;g=a+40|0;c=Ho(kn(f[g>>2]|0,f[g+4>>2]|0,c|0,((c|0)<0)<<31>>31|0)|0,I|0,i|0,j|0)|0;c=b[(f[f[a>>2]>>2]|0)+c>>0]|0;break}case 4:{j=a+48|0;i=f[j>>2]|0;j=f[j+4>>2]|0;g=a+40|0;c=(Ho(kn(f[g>>2]|0,f[g+4>>2]|0,c|0,((c|0)<0)<<31>>31|0)|0,I|0,i|0,j|0)|0)+(f[f[a>>2]>>2]|0)|0;c=(h[c>>0]|h[c+1>>0]<<8|h[c+2>>0]<<16|h[c+3>>0]<<24)&255;break}default:{j=0;return j|0}}i=c<<24>>24;j=d;f[j>>2]=i;f[j+4>>2]=((i|0)<0)<<31>>31;j=1;return j|0}case 4:{c=f[c>>2]|0;switch(b[a+24>>0]|0){case 1:{j=a+48|0;i=f[j>>2]|0;j=f[j+4>>2]|0;g=a+40|0;c=(Ho(kn(f[g>>2]|0,f[g+4>>2]|0,c|0,((c|0)<0)<<31>>31|0)|0,I|0,i|0,j|0)|0)+(f[f[a>>2]>>2]|0)|0;c=(h[c>>0]|h[c+1>>0]<<8)&65535;a=0;break}case 2:{j=a+48|0;i=f[j>>2]|0;j=f[j+4>>2]|0;g=a+40|0;c=(Ho(kn(f[g>>2]|0,f[g+4>>2]|0,c|0,((c|0)<0)<<31>>31|0)|0,I|0,i|0,j|0)|0)+(f[f[a>>2]>>2]|0)|0;c=(h[c>>0]|h[c+1>>0]<<8|h[c+2>>0]<<16|h[c+3>>0]<<24)&65535;a=0;break}case 3:{j=a+48|0;i=f[j>>2]|0;j=f[j+4>>2]|0;g=a+40|0;c=(Ho(kn(f[g>>2]|0,f[g+4>>2]|0,c|0,((c|0)<0)<<31>>31|0)|0,I|0,i|0,j|0)|0)+(f[f[a>>2]>>2]|0)|0;c=(h[c>>0]|h[c+1>>0]<<8)&65535;a=0;break}case 4:{j=a+48|0;i=f[j>>2]|0;j=f[j+4>>2]|0;g=a+40|0;c=(Ho(kn(f[g>>2]|0,f[g+4>>2]|0,c|0,((c|0)<0)<<31>>31|0)|0,I|0,i|0,j|0)|0)+(f[f[a>>2]>>2]|0)|0;c=(h[c>>0]|h[c+1>>0]<<8|h[c+2>>0]<<16|h[c+3>>0]<<24)&65535;a=0;break}default:{j=0;return j|0}}j=d;f[j>>2]=c;f[j+4>>2]=a;j=1;return j|0}case 3:{c=f[c>>2]|0;switch(b[a+24>>0]|0){case 1:{j=a+48|0;i=f[j>>2]|0;j=f[j+4>>2]|0;g=a+40|0;a=(Ho(kn(f[g>>2]|0,f[g+4>>2]|0,c|0,((c|0)<0)<<31>>31|0)|0,I|0,i|0,j|0)|0)+(f[f[a>>2]>>2]|0)|0;a=(h[a>>0]|h[a+1>>0]<<8)<<16>>16;c=a;a=((a|0)<0)<<31>>31;break}case 2:{j=a+48|0;i=f[j>>2]|0;j=f[j+4>>2]|0;g=a+40|0;a=(Ho(kn(f[g>>2]|0,f[g+4>>2]|0,c|0,((c|0)<0)<<31>>31|0)|0,I|0,i|0,j|0)|0)+(f[f[a>>2]>>2]|0)|0;a=((h[a>>0]|h[a+1>>0]<<8|h[a+2>>0]<<16|h[a+3>>0]<<24)&65535)<<16>>16;c=a;a=((a|0)<0)<<31>>31;break}case 3:{j=a+48|0;i=f[j>>2]|0;j=f[j+4>>2]|0;g=a+40|0;a=(Ho(kn(f[g>>2]|0,f[g+4>>2]|0,c|0,((c|0)<0)<<31>>31|0)|0,I|0,i|0,j|0)|0)+(f[f[a>>2]>>2]|0)|0;a=(h[a>>0]|h[a+1>>0]<<8)<<16>>16;c=a;a=((a|0)<0)<<31>>31;break}case 4:{j=a+48|0;i=f[j>>2]|0;j=f[j+4>>2]|0;g=a+40|0;c=(Ho(kn(f[g>>2]|0,f[g+4>>2]|0,c|0,((c|0)<0)<<31>>31|0)|0,I|0,i|0,j|0)|0)+(f[f[a>>2]>>2]|0)|0;a=c;c=c+4|0;c=An(On(h[a>>0]|h[a+1>>0]<<8|h[a+2>>0]<<16|h[a+3>>0]<<24|0,h[c>>0]|h[c+1>>0]<<8|h[c+2>>0]<<16|h[c+3>>0]<<24|0,48)|0,I|0,48)|0;a=I;break}default:{j=0;return j|0}}j=d;f[j>>2]=c;f[j+4>>2]=a;j=1;return j|0}case 6:{c=f[c>>2]|0;switch(b[a+24>>0]|0){case 1:{j=a+48|0;i=f[j>>2]|0;j=f[j+4>>2]|0;g=a+40|0;c=(Ho(kn(f[g>>2]|0,f[g+4>>2]|0,c|0,((c|0)<0)<<31>>31|0)|0,I|0,i|0,j|0)|0)+(f[f[a>>2]>>2]|0)|0;c=h[c>>0]|h[c+1>>0]<<8|h[c+2>>0]<<16|h[c+3>>0]<<24;a=0;break}case 2:{j=a+48|0;i=f[j>>2]|0;j=f[j+4>>2]|0;g=a+40|0;c=(Ho(kn(f[g>>2]|0,f[g+4>>2]|0,c|0,((c|0)<0)<<31>>31|0)|0,I|0,i|0,j|0)|0)+(f[f[a>>2]>>2]|0)|0;c=h[c>>0]|h[c+1>>0]<<8|h[c+2>>0]<<16|h[c+3>>0]<<24;a=0;break}case 3:{j=a+48|0;i=f[j>>2]|0;j=f[j+4>>2]|0;g=a+40|0;c=(Ho(kn(f[g>>2]|0,f[g+4>>2]|0,c|0,((c|0)<0)<<31>>31|0)|0,I|0,i|0,j|0)|0)+(f[f[a>>2]>>2]|0)|0;c=h[c>>0]|h[c+1>>0]<<8|h[c+2>>0]<<16|h[c+3>>0]<<24;a=0;break}case 4:{j=a+48|0;i=f[j>>2]|0;j=f[j+4>>2]|0;g=a+40|0;c=(Ho(kn(f[g>>2]|0,f[g+4>>2]|0,c|0,((c|0)<0)<<31>>31|0)|0,I|0,i|0,j|0)|0)+(f[f[a>>2]>>2]|0)|0;c=h[c>>0]|h[c+1>>0]<<8|h[c+2>>0]<<16|h[c+3>>0]<<24;a=0;break}default:{j=0;return j|0}}j=d;f[j>>2]=c;f[j+4>>2]=a;j=1;return j|0}case 5:{c=f[c>>2]|0;switch(b[a+24>>0]|0){case 1:{j=a+48|0;i=f[j>>2]|0;j=f[j+4>>2]|0;g=a+40|0;a=(Ho(kn(f[g>>2]|0,f[g+4>>2]|0,c|0,((c|0)<0)<<31>>31|0)|0,I|0,i|0,j|0)|0)+(f[f[a>>2]>>2]|0)|0;a=h[a>>0]|h[a+1>>0]<<8|h[a+2>>0]<<16|h[a+3>>0]<<24;c=a;a=((a|0)<0)<<31>>31;break}case 2:{j=a+48|0;i=f[j>>2]|0;j=f[j+4>>2]|0;g=a+40|0;c=(Ho(kn(f[g>>2]|0,f[g+4>>2]|0,c|0,((c|0)<0)<<31>>31|0)|0,I|0,i|0,j|0)|0)+(f[f[a>>2]>>2]|0)|0;c=An(0,h[c>>0]|h[c+1>>0]<<8|h[c+2>>0]<<16|h[c+3>>0]<<24|0,32)|0;a=I;break}case 3:{j=a+48|0;i=f[j>>2]|0;j=f[j+4>>2]|0;g=a+40|0;a=(Ho(kn(f[g>>2]|0,f[g+4>>2]|0,c|0,((c|0)<0)<<31>>31|0)|0,I|0,i|0,j|0)|0)+(f[f[a>>2]>>2]|0)|0;a=h[a>>0]|h[a+1>>0]<<8|h[a+2>>0]<<16|h[a+3>>0]<<24;c=a;a=((a|0)<0)<<31>>31;break}case 4:{j=a+48|0;i=f[j>>2]|0;j=f[j+4>>2]|0;g=a+40|0;a=(Ho(kn(f[g>>2]|0,f[g+4>>2]|0,c|0,((c|0)<0)<<31>>31|0)|0,I|0,i|0,j|0)|0)+(f[f[a>>2]>>2]|0)|0;a=h[a>>0]|h[a+1>>0]<<8|h[a+2>>0]<<16|h[a+3>>0]<<24;c=a;a=((a|0)<0)<<31>>31;break}default:{j=0;return j|0}}j=d;f[j>>2]=c;f[j+4>>2]=a;j=1;return j|0}default:{j=0;return j|0}}return 0}function fb(a,c,d){a=a|0;c=c|0;d=d|0;var e=0,g=0,h=0,i=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,v=0,w=0,x=0,y=0,z=0,A=0,B=0,C=0,D=0,E=0,F=0,G=0,H=0,I=0,J=0,K=0,L=0,M=0;M=u;u=u+32|0;L=M+8|0;j=M;G=a+8|0;F=f[G>>2]|0;f[j>>2]=0;Oj(L,F,j);F=a+116|0;i=f[F>>2]|0;e=f[i>>2]|0;h=i+4|0;if(!e)e=i+8|0;else{g=f[h>>2]|0;if((g|0)!=(e|0))f[h>>2]=g+(~((g+-4-e|0)>>>2)<<2);ar(e);e=i+8|0;f[e>>2]=0;f[h>>2]=0;f[i>>2]=0}f[i>>2]=f[L>>2];f[h>>2]=f[L+4>>2];f[e>>2]=f[L+8>>2];E=f[G>>2]|0;f[j>>2]=0;Oj(L,E,j);E=a+128|0;i=f[E>>2]|0;e=f[i>>2]|0;h=i+4|0;if(!e)e=i+8|0;else{g=f[h>>2]|0;if((g|0)!=(e|0))f[h>>2]=g+(~((g+-4-e|0)>>>2)<<2);ar(e);e=i+8|0;f[e>>2]=0;f[h>>2]=0;f[i>>2]=0}f[i>>2]=f[L>>2];f[h>>2]=f[L+4>>2];f[e>>2]=f[L+8>>2];f[L>>2]=0;f[L+4>>2]=0;f[L+8>>2]=0;f[L+12>>2]=0;f[L+16>>2]=0;f[L+20>>2]=0;K=L+8|0;J=L+4|0;I=L+16|0;H=L+20|0;qc(L);e=f[J>>2]|0;g=(f[H>>2]|0)+(f[I>>2]|0)|0;if((f[K>>2]|0)==(e|0))e=0;else e=(f[e+(((g>>>0)/341|0)<<2)>>2]|0)+(((g>>>0)%341|0)*12|0)|0;f[e>>2]=c;f[e+4>>2]=0;f[e+8>>2]=0;e=(f[H>>2]|0)+1|0;f[H>>2]=e;a:do if(e|0){v=a+104|0;D=a+92|0;t=d+4|0;w=a+96|0;C=a+48|0;z=a+44|0;B=a+28|0;y=a+24|0;A=a+88|0;x=a+84|0;b:while(1){q=f[I>>2]|0;g=e+-1|0;m=q+g|0;r=f[J>>2]|0;p=f[r+(((m>>>0)/341|0)<<2)>>2]|0;m=(m>>>0)%341|0;s=f[p+(m*12|0)>>2]|0;h=f[p+(m*12|0)+4>>2]|0;m=f[p+(m*12|0)+8>>2]|0;f[H>>2]=g;g=f[K>>2]|0;r=g-r>>2;if((1-e-q+((r|0)==0?0:(r*341|0)+-1|0)|0)>>>0>681){ar(f[g+-4>>2]|0);f[K>>2]=(f[K>>2]|0)+-4}i=f[F>>2]|0;r=i+(m*12|0)|0;q=(f[E>>2]|0)+(m*12|0)|0;g=un(a,s,q,h)|0;e=(f[a>>2]|0)-(f[(f[q>>2]|0)+(g<<2)>>2]|0)|0;c:do if(!e)if((s|0)>0){j=i+(m*12|0)+4|0;c=f[d>>2]|0;m=c+84|0;i=c+68|0;k=c+40|0;c=c+64|0;g=f[t>>2]|0;l=0;while(1){e=g;g=g+1|0;f[t>>2]=g;h=f[r>>2]|0;if(((f[j>>2]|0)-h|0)!=12){o=23;break b}if(!(b[m>>0]|0))e=f[(f[i>>2]|0)+(e<<2)>>2]|0;p=k;q=f[p>>2]|0;p=kn(q|0,f[p+4>>2]|0,e|0,((e|0)<0)<<31>>31|0)|0;Mg((f[f[c>>2]>>2]|0)+p|0,h|0,q|0)|0;l=l+1|0;if((l|0)>=(s|0)){o=15;break}}}else o=15;else{if(!s){o=28;break b}if(s>>>0<3){i=f[v>>2]|0;f[i>>2]=g;e=f[G>>2]|0;if(e>>>0>1){h=1;do{g=(g|0)==(e+-1|0)?0:g+1|0;f[i+(h<<2)>>2]=g;h=h+1|0;e=f[G>>2]|0}while(h>>>0>>0)}g=0;while(1){if(!e)i=f[D>>2]|0;else{k=f[v>>2]|0;l=f[D>>2]|0;m=f[q>>2]|0;i=l;o=0;do{n=k+(o<<2)|0;f[l+(f[n>>2]<<2)>>2]=0;e=f[n>>2]|0;p=(f[a>>2]|0)-(f[m+(e<<2)>>2]|0)|0;do if(p|0){h=l+(e<<2)|0;if((p|0)>=33){o=42;break b}if((p|0)<=0){o=44;break b}j=f[C>>2]|0;c=32-j|0;e=f[z>>2]|0;j=f[e>>2]<(c|0)){p=p-c|0;f[C>>2]=p;e=e+4|0;f[z>>2]=e;p=32-p|0;f[h>>2]=(f[e>>2]|0)>>>p|j>>>(p-c|0);break}f[h>>2]=j>>>(32-p|0);p=(f[C>>2]|0)+p|0;f[C>>2]=p;if((p|0)!=32)break;f[z>>2]=e+4;f[C>>2]=0}while(0);n=f[n>>2]|0;p=l+(n<<2)|0;f[p>>2]=f[p>>2]|f[(f[r>>2]|0)+(n<<2)>>2];o=o+1|0}while(o>>>0<(f[G>>2]|0)>>>0)}h=f[d>>2]|0;e=f[t>>2]|0;f[t>>2]=e+1;if(((f[w>>2]|0)-i|0)!=12){o=37;break b}if(!(b[h+84>>0]|0))e=f[(f[h+68>>2]|0)+(e<<2)>>2]|0;o=h+40|0;p=f[o>>2]|0;o=kn(p|0,f[o+4>>2]|0,e|0,((e|0)<0)<<31>>31|0)|0;Mg((f[f[h+64>>2]>>2]|0)+o|0,i|0,p|0)|0;g=g+1|0;if(g>>>0>=s>>>0){o=15;break c}e=f[G>>2]|0}}c=1<>2]|0;e=f[r>>2]|0;j=e;i=f[(f[F>>2]|0)+(n*12|0)>>2]|0;if((h|0)!=(e|0)){h=h-e>>2;e=0;do{f[i+(e<<2)>>2]=f[j+(e<<2)>>2];e=e+1|0}while(e>>>0>>0)}r=i+(g<<2)|0;f[r>>2]=(f[r>>2]|0)+c;c=(_(s|0)|0)^31;if(c>>>0>=33){o=56;break b}if(!c){o=58;break b}i=f[B>>2]|0;h=32-i|0;j=f[y>>2]|0;e=f[j>>2]<>>(32-c|0);r=i+c|0;f[B>>2]=r;if((r|0)==32){f[y>>2]=j+4;f[B>>2]=0}}else{r=c-h|0;f[B>>2]=r;q=j+4|0;f[y>>2]=q;r=32-r|0;e=(f[q>>2]|0)>>>r|e>>>(r-h|0)}j=(s>>>1)-e|0;h=s-j|0;if((j|0)==(h|0)){k=j;l=j}else{s=f[A>>2]|0;e=f[x>>2]|0;i=(f[e>>2]&1<<31-s|0)!=0;s=s+1|0;f[A>>2]=s;if((s|0)==32){f[x>>2]=e+4;f[A>>2]=0}k=i?j:h;l=i?h:j}e=f[E>>2]|0;c=f[e+(m*12|0)>>2]|0;h=c+(g<<2)|0;f[h>>2]=(f[h>>2]|0)+1;h=f[e+(m*12|0)+4>>2]|0;i=c;if((h|0)!=(i|0)){j=f[e+(n*12|0)>>2]|0;h=h-i>>2;e=0;do{f[j+(e<<2)>>2]=f[c+(e<<2)>>2];e=e+1|0}while(e>>>0>>0)}if(k|0){j=f[K>>2]|0;i=f[J>>2]|0;s=j-i>>2;e=f[I>>2]|0;h=f[H>>2]|0;if((((s|0)==0?0:(s*341|0)+-1|0)|0)==(h+e|0)){qc(L);e=f[I>>2]|0;h=f[H>>2]|0;j=f[K>>2]|0;i=f[J>>2]|0}e=h+e|0;if((j|0)==(i|0))e=0;else e=(f[i+(((e>>>0)/341|0)<<2)>>2]|0)+(((e>>>0)%341|0)*12|0)|0;f[e>>2]=k;f[e+4>>2]=g;f[e+8>>2]=m;f[H>>2]=(f[H>>2]|0)+1}if(!l)o=15;else{j=f[K>>2]|0;i=f[J>>2]|0;s=j-i>>2;e=f[I>>2]|0;h=f[H>>2]|0;if((((s|0)==0?0:(s*341|0)+-1|0)|0)==(h+e|0)){qc(L);e=f[I>>2]|0;h=f[H>>2]|0;j=f[K>>2]|0;i=f[J>>2]|0}e=h+e|0;if((j|0)==(i|0))e=0;else e=(f[i+(((e>>>0)/341|0)<<2)>>2]|0)+(((e>>>0)%341|0)*12|0)|0;f[e>>2]=l;f[e+4>>2]=g;f[e+8>>2]=n;e=(f[H>>2]|0)+1|0;f[H>>2]=e}}while(0);if((o|0)==15){o=0;e=f[H>>2]|0}if(!e)break a}if((o|0)==23)Ga(17368,17398,51,17461);else if((o|0)==28)Ga(17720,17758,223,17846);else if((o|0)==37)Ga(17368,17398,51,17461);else if((o|0)==42)Ga(17861,17885,48,17934);else if((o|0)==44)Ga(17963,17885,49,17934);else if((o|0)==56)Ga(17861,17885,48,17934);else if((o|0)==58)Ga(17963,17885,49,17934)}while(0);e=f[J>>2]|0;g=f[I>>2]|0;i=e+(((g>>>0)/341|0)<<2)|0;h=f[K>>2]|0;c=h;k=e;if((h|0)==(e|0)){j=0;g=0}else{g=(f[i>>2]|0)+(((g>>>0)%341|0)*12|0)|0;j=g}d:while(1){do{if((g|0)==(j|0))break d;g=g+12|0}while((g-(f[i>>2]|0)|0)!=4092);g=i+4|0;i=g;g=f[g>>2]|0}f[H>>2]=0;g=c-k>>2;if(g>>>0>2)do{ar(f[e>>2]|0);e=(f[J>>2]|0)+4|0;f[J>>2]=e;h=f[K>>2]|0;g=h-e>>2}while(g>>>0>2);switch(g|0){case 1:{g=170;o=94;break}case 2:{g=341;o=94;break}default:{}}if((o|0)==94)f[I>>2]=g;if((e|0)!=(h|0)){do{ar(f[e>>2]|0);e=e+4|0}while((e|0)!=(h|0));e=f[J>>2]|0;g=f[K>>2]|0;if((g|0)!=(e|0))f[K>>2]=g+(~((g+-4-e|0)>>>2)<<2)}e=f[L>>2]|0;if(!e){u=M;return}ar(e);u=M;return}function gb(a,b,c){a=a|0;b=b|0;c=c|0;var d=0,e=0,g=0,h=0,i=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,v=0,w=0,x=0,y=0,z=0,A=0,B=0,C=0,D=0,E=0,F=0,G=0,H=0,I=0,J=0,K=0,L=0,M=0,N=0,O=0,P=0,Q=0;Q=u;u=u+48|0;K=Q+24|0;P=Q;J=a+8|0;I=f[J>>2]|0;f[P>>2]=0;Oj(K,I,P);I=a+116|0;h=f[I>>2]|0;d=f[h>>2]|0;g=h+4|0;if(!d)d=h+8|0;else{e=f[g>>2]|0;if((e|0)!=(d|0))f[g>>2]=e+(~((e+-4-d|0)>>>2)<<2);ar(d);d=h+8|0;f[d>>2]=0;f[g>>2]=0;f[h>>2]=0}f[h>>2]=f[K>>2];f[g>>2]=f[K+4>>2];f[d>>2]=f[K+8>>2];H=f[J>>2]|0;f[P>>2]=0;Oj(K,H,P);H=a+128|0;h=f[H>>2]|0;d=f[h>>2]|0;g=h+4|0;if(!d)d=h+8|0;else{e=f[g>>2]|0;if((e|0)!=(d|0))f[g>>2]=e+(~((e+-4-d|0)>>>2)<<2);ar(d);d=h+8|0;f[d>>2]=0;f[g>>2]=0;f[h>>2]=0}f[h>>2]=f[K>>2];f[g>>2]=f[K+4>>2];f[d>>2]=f[K+8>>2];f[P>>2]=0;f[P+4>>2]=0;f[P+8>>2]=0;f[P+12>>2]=0;f[P+16>>2]=0;f[P+20>>2]=0;O=P+8|0;N=P+4|0;M=P+16|0;L=P+20|0;qc(P);d=f[N>>2]|0;e=(f[L>>2]|0)+(f[M>>2]|0)|0;if((f[O>>2]|0)==(d|0))d=0;else d=(f[d+(((e>>>0)/341|0)<<2)>>2]|0)+(((e>>>0)%341|0)*12|0)|0;f[d>>2]=b;f[d+4>>2]=0;f[d+8>>2]=0;d=(f[L>>2]|0)+1|0;f[L>>2]=d;a:do if(d|0){w=a+104|0;v=a+92|0;A=K+4|0;C=K+8|0;G=a+48|0;z=a+44|0;F=a+28|0;y=a+24|0;E=a+88|0;x=a+84|0;B=K+4|0;D=K+8|0;b:while(1){r=f[M>>2]|0;e=d+-1|0;l=r+e|0;s=f[N>>2]|0;q=f[s+(((l>>>0)/341|0)<<2)>>2]|0;l=(l>>>0)%341|0;t=f[q+(l*12|0)>>2]|0;g=f[q+(l*12|0)+4>>2]|0;l=f[q+(l*12|0)+8>>2]|0;f[L>>2]=e;e=f[O>>2]|0;s=e-s>>2;if((1-d-r+((s|0)==0?0:(s*341|0)+-1|0)|0)>>>0>681){ar(f[e+-4>>2]|0);f[O>>2]=(f[O>>2]|0)+-4}h=f[I>>2]|0;s=h+(l*12|0)|0;r=(f[H>>2]|0)+(l*12|0)|0;e=un(a,t,r,g)|0;d=(f[a>>2]|0)-(f[(f[r>>2]|0)+(e<<2)>>2]|0)|0;c:do if(!d)if((t|0)>0){i=f[c>>2]|0;g=i+4|0;h=i+8|0;b=0;do{e=f[s>>2]|0;d=f[e>>2]|0;f[K>>2]=d;f[B>>2]=f[e+4>>2];f[D>>2]=f[e+8>>2];e=f[g>>2]|0;if(e>>>0<(f[h>>2]|0)>>>0){f[e>>2]=d;f[e+4>>2]=f[B>>2];f[e+8>>2]=f[D>>2];f[g>>2]=e+12}else mh(i,K);b=b+1|0}while((b|0)<(t|0));n=15}else n=15;else{if(!t){n=27;break b}if(t>>>0<3){h=f[w>>2]|0;f[h>>2]=e;d=f[J>>2]|0;if(d>>>0>1){g=1;do{e=(e|0)==(d+-1|0)?0:e+1|0;f[h+(g<<2)>>2]=e;g=g+1|0;d=f[J>>2]|0}while(g>>>0>>0)}q=f[c>>2]|0;o=q+4|0;p=q+8|0;e=0;while(1){if(d|0){i=f[w>>2]|0;j=f[v>>2]|0;k=f[r>>2]|0;m=0;do{l=i+(m<<2)|0;f[j+(f[l>>2]<<2)>>2]=0;d=f[l>>2]|0;n=(f[a>>2]|0)-(f[k+(d<<2)>>2]|0)|0;do if(n|0){g=j+(d<<2)|0;if((n|0)>=33){n=36;break b}if((n|0)<=0){n=38;break b}h=f[G>>2]|0;b=32-h|0;d=f[z>>2]|0;h=f[d>>2]<(b|0)){n=n-b|0;f[G>>2]=n;d=d+4|0;f[z>>2]=d;n=32-n|0;f[g>>2]=(f[d>>2]|0)>>>n|h>>>(n-b|0);break}f[g>>2]=h>>>(32-n|0);n=(f[G>>2]|0)+n|0;f[G>>2]=n;if((n|0)!=32)break;f[z>>2]=d+4;f[G>>2]=0}while(0);l=f[l>>2]|0;n=j+(l<<2)|0;f[n>>2]=f[n>>2]|f[(f[s>>2]|0)+(l<<2)>>2];m=m+1|0}while(m>>>0<(f[J>>2]|0)>>>0)}g=f[v>>2]|0;d=f[g>>2]|0;f[K>>2]=d;f[A>>2]=f[g+4>>2];f[C>>2]=f[g+8>>2];g=f[o>>2]|0;if(g>>>0<(f[p>>2]|0)>>>0){f[g>>2]=d;f[g+4>>2]=f[A>>2];f[g+8>>2]=f[C>>2];f[o>>2]=g+12}else mh(q,K);e=e+1|0;if(e>>>0>=t>>>0){n=15;break c}d=f[J>>2]|0}}i=1<>2]|0;d=f[s>>2]|0;b=d;h=f[(f[I>>2]|0)+(m*12|0)>>2]|0;if((g|0)!=(d|0)){g=g-d>>2;d=0;do{f[h+(d<<2)>>2]=f[b+(d<<2)>>2];d=d+1|0}while(d>>>0>>0)}s=h+(e<<2)|0;f[s>>2]=(f[s>>2]|0)+i;i=(_(t|0)|0)^31;if(i>>>0>=33){n=53;break b}if(!i){n=55;break b}h=f[F>>2]|0;g=32-h|0;b=f[y>>2]|0;d=f[b>>2]<>>(32-i|0);s=h+i|0;f[F>>2]=s;if((s|0)==32){f[y>>2]=b+4;f[F>>2]=0}}else{s=i-g|0;f[F>>2]=s;r=b+4|0;f[y>>2]=r;s=32-s|0;d=(f[r>>2]|0)>>>s|d>>>(s-g|0)}b=(t>>>1)-d|0;g=t-b|0;if((b|0)==(g|0)){j=b;k=b}else{t=f[E>>2]|0;d=f[x>>2]|0;h=(f[d>>2]&1<<31-t|0)!=0;t=t+1|0;f[E>>2]=t;if((t|0)==32){f[x>>2]=d+4;f[E>>2]=0}j=h?b:g;k=h?g:b}d=f[H>>2]|0;i=f[d+(l*12|0)>>2]|0;g=i+(e<<2)|0;f[g>>2]=(f[g>>2]|0)+1;g=f[d+(l*12|0)+4>>2]|0;h=i;if((g|0)!=(h|0)){b=f[d+(m*12|0)>>2]|0;g=g-h>>2;d=0;do{f[b+(d<<2)>>2]=f[i+(d<<2)>>2];d=d+1|0}while(d>>>0>>0)}if(j|0){b=f[O>>2]|0;h=f[N>>2]|0;t=b-h>>2;d=f[M>>2]|0;g=f[L>>2]|0;if((((t|0)==0?0:(t*341|0)+-1|0)|0)==(g+d|0)){qc(P);d=f[M>>2]|0;g=f[L>>2]|0;b=f[O>>2]|0;h=f[N>>2]|0}d=g+d|0;if((b|0)==(h|0))d=0;else d=(f[h+(((d>>>0)/341|0)<<2)>>2]|0)+(((d>>>0)%341|0)*12|0)|0;f[d>>2]=j;f[d+4>>2]=e;f[d+8>>2]=l;f[L>>2]=(f[L>>2]|0)+1}if(!k)n=15;else{b=f[O>>2]|0;h=f[N>>2]|0;t=b-h>>2;d=f[M>>2]|0;g=f[L>>2]|0;if((((t|0)==0?0:(t*341|0)+-1|0)|0)==(g+d|0)){qc(P);d=f[M>>2]|0;g=f[L>>2]|0;b=f[O>>2]|0;h=f[N>>2]|0}d=g+d|0;if((b|0)==(h|0))d=0;else d=(f[h+(((d>>>0)/341|0)<<2)>>2]|0)+(((d>>>0)%341|0)*12|0)|0;f[d>>2]=k;f[d+4>>2]=e;f[d+8>>2]=m;d=(f[L>>2]|0)+1|0;f[L>>2]=d}}while(0);if((n|0)==15){n=0;d=f[L>>2]|0}if(!d)break a}if((n|0)==27)Ga(17720,17758,223,17846);else if((n|0)==36)Ga(17861,17885,48,17934);else if((n|0)==38)Ga(17963,17885,49,17934);else if((n|0)==53)Ga(17861,17885,48,17934);else if((n|0)==55)Ga(17963,17885,49,17934)}while(0);d=f[N>>2]|0;e=f[M>>2]|0;h=d+(((e>>>0)/341|0)<<2)|0;g=f[O>>2]|0;i=g;j=d;if((g|0)==(d|0)){b=0;e=0}else{e=(f[h>>2]|0)+(((e>>>0)%341|0)*12|0)|0;b=e}d:while(1){do{if((e|0)==(b|0))break d;e=e+12|0}while((e-(f[h>>2]|0)|0)!=4092);e=h+4|0;h=e;e=f[e>>2]|0}f[L>>2]=0;e=i-j>>2;if(e>>>0>2)do{ar(f[d>>2]|0);d=(f[N>>2]|0)+4|0;f[N>>2]=d;g=f[O>>2]|0;e=g-d>>2}while(e>>>0>2);switch(e|0){case 1:{e=170;n=91;break}case 2:{e=341;n=91;break}default:{}}if((n|0)==91)f[M>>2]=e;if((d|0)!=(g|0)){do{ar(f[d>>2]|0);d=d+4|0}while((d|0)!=(g|0));d=f[N>>2]|0;e=f[O>>2]|0;if((e|0)!=(d|0))f[O>>2]=e+(~((e+-4-d|0)>>>2)<<2)}d=f[P>>2]|0;if(!d){u=Q;return}ar(d);u=Q;return}function hb(a,c,d){a=a|0;c=c|0;d=d|0;var e=0,g=0,h=0,i=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,v=0,w=0,x=0,y=0,z=0,A=0,B=0,C=0,D=0,E=0,F=0,G=0,H=0,I=0,J=0,K=0,L=0,M=0,N=0,O=0;O=u;u=u+32|0;N=O+8|0;j=O;I=a+8|0;H=f[I>>2]|0;f[j>>2]=0;Oj(N,H,j);H=a+116|0;i=f[H>>2]|0;e=f[i>>2]|0;h=i+4|0;if(!e)e=i+8|0;else{g=f[h>>2]|0;if((g|0)!=(e|0))f[h>>2]=g+(~((g+-4-e|0)>>>2)<<2);ar(e);e=i+8|0;f[e>>2]=0;f[h>>2]=0;f[i>>2]=0}f[i>>2]=f[N>>2];f[h>>2]=f[N+4>>2];f[e>>2]=f[N+8>>2];G=f[I>>2]|0;f[j>>2]=0;Oj(N,G,j);G=a+128|0;i=f[G>>2]|0;e=f[i>>2]|0;h=i+4|0;if(!e)e=i+8|0;else{g=f[h>>2]|0;if((g|0)!=(e|0))f[h>>2]=g+(~((g+-4-e|0)>>>2)<<2);ar(e);e=i+8|0;f[e>>2]=0;f[h>>2]=0;f[i>>2]=0}f[i>>2]=f[N>>2];f[h>>2]=f[N+4>>2];f[e>>2]=f[N+8>>2];f[N>>2]=0;f[N+4>>2]=0;f[N+8>>2]=0;f[N+12>>2]=0;f[N+16>>2]=0;f[N+20>>2]=0;M=N+8|0;L=N+4|0;K=N+16|0;J=N+20|0;qc(N);e=f[L>>2]|0;g=(f[J>>2]|0)+(f[K>>2]|0)|0;if((f[M>>2]|0)==(e|0))e=0;else e=(f[e+(((g>>>0)/341|0)<<2)>>2]|0)+(((g>>>0)%341|0)*12|0)|0;f[e>>2]=c;f[e+4>>2]=0;f[e+8>>2]=0;e=(f[J>>2]|0)+1|0;f[J>>2]=e;a:do if(e|0){x=a+104|0;F=a+92|0;w=d+4|0;y=a+96|0;E=a+48|0;B=a+44|0;D=a+28|0;A=a+24|0;C=a+88|0;z=a+84|0;b:while(1){r=f[K>>2]|0;g=e+-1|0;o=r+g|0;s=f[L>>2]|0;q=f[s+(((o>>>0)/341|0)<<2)>>2]|0;o=(o>>>0)%341|0;t=f[q+(o*12|0)>>2]|0;h=f[q+(o*12|0)+4>>2]|0;o=f[q+(o*12|0)+8>>2]|0;f[J>>2]=g;g=f[M>>2]|0;s=g-s>>2;if((1-e-r+((s|0)==0?0:(s*341|0)+-1|0)|0)>>>0>681){ar(f[g+-4>>2]|0);g=(f[M>>2]|0)+-4|0;f[M>>2]=g}i=f[H>>2]|0;r=i+(o*12|0)|0;l=f[G>>2]|0;s=((f[I>>2]|0)+-1|0)==(h|0)?0:h+1|0;q=l+(o*12|0)|0;n=f[q>>2]|0;k=n+(s<<2)|0;e=(f[a>>2]|0)-(f[k>>2]|0)|0;m=n;c:do if(!e)if((t|0)>0){j=i+(o*12|0)+4|0;c=f[d>>2]|0;m=c+84|0;i=c+68|0;k=c+40|0;c=c+64|0;g=f[w>>2]|0;l=0;while(1){e=g;g=g+1|0;f[w>>2]=g;h=f[r>>2]|0;if(((f[j>>2]|0)-h|0)!=12){v=23;break b}if(!(b[m>>0]|0))e=f[(f[i>>2]|0)+(e<<2)>>2]|0;s=k;v=f[s>>2]|0;s=kn(v|0,f[s+4>>2]|0,e|0,((e|0)<0)<<31>>31|0)|0;Mg((f[f[c>>2]>>2]|0)+s|0,h|0,v|0)|0;l=l+1|0;if((l|0)>=(t|0)){v=15;break}}}else v=15;else{if(!t){v=28;break b}if(t>>>0<3){i=f[x>>2]|0;f[i>>2]=s;e=f[I>>2]|0;if(e>>>0>1){g=s;h=1;do{g=(g|0)==(e+-1|0)?0:g+1|0;f[i+(h<<2)>>2]=g;h=h+1|0;e=f[I>>2]|0}while(h>>>0>>0)}g=0;while(1){if(!e)i=f[F>>2]|0;else{k=f[x>>2]|0;l=f[F>>2]|0;m=f[q>>2]|0;i=l;o=0;do{n=k+(o<<2)|0;f[l+(f[n>>2]<<2)>>2]=0;e=f[n>>2]|0;p=(f[a>>2]|0)-(f[m+(e<<2)>>2]|0)|0;do if(p|0){h=l+(e<<2)|0;if((p|0)>=33){v=42;break b}if((p|0)<=0){v=44;break b}j=f[E>>2]|0;c=32-j|0;e=f[B>>2]|0;j=f[e>>2]<(c|0)){v=p-c|0;f[E>>2]=v;s=e+4|0;f[B>>2]=s;v=32-v|0;f[h>>2]=(f[s>>2]|0)>>>v|j>>>(v-c|0);break}f[h>>2]=j>>>(32-p|0);v=(f[E>>2]|0)+p|0;f[E>>2]=v;if((v|0)!=32)break;f[B>>2]=e+4;f[E>>2]=0}while(0);s=f[n>>2]|0;v=l+(s<<2)|0;f[v>>2]=f[v>>2]|f[(f[r>>2]|0)+(s<<2)>>2];o=o+1|0}while(o>>>0<(f[I>>2]|0)>>>0)}h=f[d>>2]|0;e=f[w>>2]|0;f[w>>2]=e+1;if(((f[y>>2]|0)-i|0)!=12){v=37;break b}if(!(b[h+84>>0]|0))e=f[(f[h+68>>2]|0)+(e<<2)>>2]|0;s=h+40|0;v=f[s>>2]|0;s=kn(v|0,f[s+4>>2]|0,e|0,((e|0)<0)<<31>>31|0)|0;Mg((f[f[h+64>>2]>>2]|0)+s|0,i|0,v|0)|0;g=g+1|0;if(g>>>0>=t>>>0){v=15;break c}e=f[I>>2]|0}}c=1<>2]|0;e=f[r>>2]|0;j=e;i=f[i+(p*12|0)>>2]|0;if((h|0)!=(e|0)){h=h-e>>2;e=0;do{f[i+(e<<2)>>2]=f[j+(e<<2)>>2];e=e+1|0}while(e>>>0>>0)}r=i+(s<<2)|0;f[r>>2]=(f[r>>2]|0)+c;c=(_(t|0)|0)^31;if(c>>>0>=33){v=56;break b}if(!c){v=58;break b}i=f[D>>2]|0;h=32-i|0;j=f[A>>2]|0;e=f[j>>2]<>>(32-c|0);r=i+c|0;f[D>>2]=r;if((r|0)==32){f[A>>2]=j+4;f[D>>2]=0}}else{r=c-h|0;f[D>>2]=r;q=j+4|0;f[A>>2]=q;r=32-r|0;e=(f[q>>2]|0)>>>r|e>>>(r-h|0)}j=(t>>>1)-e|0;h=t-j|0;if((j|0)==(h|0))c=j;else{t=f[C>>2]|0;e=f[z>>2]|0;i=(f[e>>2]&1<<31-t|0)!=0;t=t+1|0;f[C>>2]=t;if((t|0)==32){f[z>>2]=e+4;f[C>>2]=0}c=i?j:h;j=i?h:j}f[k>>2]=(f[k>>2]|0)+1;e=f[l+(o*12|0)+4>>2]|0;if((e|0)!=(m|0)){i=f[l+(p*12|0)>>2]|0;h=e-m>>2;e=0;do{f[i+(e<<2)>>2]=f[n+(e<<2)>>2];e=e+1|0}while(e>>>0>>0)}if(c|0){i=f[L>>2]|0;t=g-i>>2;e=f[K>>2]|0;h=f[J>>2]|0;if((((t|0)==0?0:(t*341|0)+-1|0)|0)==(h+e|0)){qc(N);e=f[K>>2]|0;h=f[J>>2]|0;g=f[M>>2]|0;i=f[L>>2]|0}e=h+e|0;if((g|0)==(i|0))e=0;else e=(f[i+(((e>>>0)/341|0)<<2)>>2]|0)+(((e>>>0)%341|0)*12|0)|0;f[e>>2]=c;f[e+4>>2]=s;f[e+8>>2]=o;f[J>>2]=(f[J>>2]|0)+1}if(!j)v=15;else{i=f[M>>2]|0;h=f[L>>2]|0;t=i-h>>2;e=f[K>>2]|0;g=f[J>>2]|0;if((((t|0)==0?0:(t*341|0)+-1|0)|0)==(g+e|0)){qc(N);e=f[K>>2]|0;g=f[J>>2]|0;i=f[M>>2]|0;h=f[L>>2]|0}e=g+e|0;if((i|0)==(h|0))e=0;else e=(f[h+(((e>>>0)/341|0)<<2)>>2]|0)+(((e>>>0)%341|0)*12|0)|0;f[e>>2]=j;f[e+4>>2]=s;f[e+8>>2]=p;e=(f[J>>2]|0)+1|0;f[J>>2]=e}}while(0);if((v|0)==15){v=0;e=f[J>>2]|0}if(!e)break a}if((v|0)==23)Ga(17368,17398,51,17461);else if((v|0)==28)Ga(17720,17758,223,17846);else if((v|0)==37)Ga(17368,17398,51,17461);else if((v|0)==42)Ga(17861,17885,48,17934);else if((v|0)==44)Ga(17963,17885,49,17934);else if((v|0)==56)Ga(17861,17885,48,17934);else if((v|0)==58)Ga(17963,17885,49,17934)}while(0);e=f[L>>2]|0;g=f[K>>2]|0;i=e+(((g>>>0)/341|0)<<2)|0;h=f[M>>2]|0;c=h;k=e;if((h|0)==(e|0)){j=0;g=0}else{g=(f[i>>2]|0)+(((g>>>0)%341|0)*12|0)|0;j=g}d:while(1){do{if((g|0)==(j|0))break d;g=g+12|0}while((g-(f[i>>2]|0)|0)!=4092);g=i+4|0;i=g;g=f[g>>2]|0}f[J>>2]=0;g=c-k>>2;if(g>>>0>2)do{ar(f[e>>2]|0);e=(f[L>>2]|0)+4|0;f[L>>2]=e;h=f[M>>2]|0;g=h-e>>2}while(g>>>0>2);switch(g|0){case 1:{g=170;v=94;break}case 2:{g=341;v=94;break}default:{}}if((v|0)==94)f[K>>2]=g;if((e|0)!=(h|0)){do{ar(f[e>>2]|0);e=e+4|0}while((e|0)!=(h|0));e=f[L>>2]|0;g=f[M>>2]|0;if((g|0)!=(e|0))f[M>>2]=g+(~((g+-4-e|0)>>>2)<<2)}e=f[N>>2]|0;if(!e){u=O;return}ar(e);u=O;return}function ib(a,b,c){a=a|0;b=b|0;c=c|0;var d=0,e=0,g=0,h=0,i=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,v=0,w=0,x=0,y=0,z=0,A=0,B=0,C=0,D=0,E=0,F=0,G=0,H=0,I=0,J=0,K=0,L=0,M=0,N=0,O=0,P=0,Q=0;Q=u;u=u+48|0;K=Q+24|0;P=Q;J=a+8|0;I=f[J>>2]|0;f[P>>2]=0;Oj(K,I,P);I=a+116|0;h=f[I>>2]|0;d=f[h>>2]|0;g=h+4|0;if(!d)d=h+8|0;else{e=f[g>>2]|0;if((e|0)!=(d|0))f[g>>2]=e+(~((e+-4-d|0)>>>2)<<2);ar(d);d=h+8|0;f[d>>2]=0;f[g>>2]=0;f[h>>2]=0}f[h>>2]=f[K>>2];f[g>>2]=f[K+4>>2];f[d>>2]=f[K+8>>2];H=f[J>>2]|0;f[P>>2]=0;Oj(K,H,P);H=a+128|0;h=f[H>>2]|0;d=f[h>>2]|0;g=h+4|0;if(!d)d=h+8|0;else{e=f[g>>2]|0;if((e|0)!=(d|0))f[g>>2]=e+(~((e+-4-d|0)>>>2)<<2);ar(d);d=h+8|0;f[d>>2]=0;f[g>>2]=0;f[h>>2]=0}f[h>>2]=f[K>>2];f[g>>2]=f[K+4>>2];f[d>>2]=f[K+8>>2];f[P>>2]=0;f[P+4>>2]=0;f[P+8>>2]=0;f[P+12>>2]=0;f[P+16>>2]=0;f[P+20>>2]=0;O=P+8|0;N=P+4|0;M=P+16|0;L=P+20|0;qc(P);d=f[N>>2]|0;e=(f[L>>2]|0)+(f[M>>2]|0)|0;if((f[O>>2]|0)==(d|0))d=0;else d=(f[d+(((e>>>0)/341|0)<<2)>>2]|0)+(((e>>>0)%341|0)*12|0)|0;f[d>>2]=b;f[d+4>>2]=0;f[d+8>>2]=0;d=(f[L>>2]|0)+1|0;f[L>>2]=d;a:do if(d|0){w=a+104|0;v=a+92|0;A=K+4|0;C=K+8|0;G=a+48|0;z=a+44|0;F=a+28|0;y=a+24|0;E=a+88|0;x=a+84|0;B=K+4|0;D=K+8|0;b:while(1){r=f[M>>2]|0;e=d+-1|0;n=r+e|0;s=f[N>>2]|0;p=f[s+(((n>>>0)/341|0)<<2)>>2]|0;n=(n>>>0)%341|0;t=f[p+(n*12|0)>>2]|0;g=f[p+(n*12|0)+4>>2]|0;n=f[p+(n*12|0)+8>>2]|0;f[L>>2]=e;e=f[O>>2]|0;s=e-s>>2;if((1-d-r+((s|0)==0?0:(s*341|0)+-1|0)|0)>>>0>681){ar(f[e+-4>>2]|0);e=(f[O>>2]|0)+-4|0;f[O>>2]=e}h=f[I>>2]|0;s=h+(n*12|0)|0;k=f[H>>2]|0;p=((f[J>>2]|0)+-1|0)==(g|0)?0:g+1|0;r=k+(n*12|0)|0;m=f[r>>2]|0;j=m+(p<<2)|0;d=(f[a>>2]|0)-(f[j>>2]|0)|0;l=m;c:do if(!d)if((t|0)>0){i=f[c>>2]|0;g=i+4|0;h=i+8|0;b=0;do{e=f[s>>2]|0;d=f[e>>2]|0;f[K>>2]=d;f[B>>2]=f[e+4>>2];f[D>>2]=f[e+8>>2];e=f[g>>2]|0;if(e>>>0<(f[h>>2]|0)>>>0){f[e>>2]=d;f[e+4>>2]=f[B>>2];f[e+8>>2]=f[D>>2];f[g>>2]=e+12}else mh(i,K);b=b+1|0}while((b|0)<(t|0));q=15}else q=15;else{if(!t){q=27;break b}if(t>>>0<3){h=f[w>>2]|0;f[h>>2]=p;d=f[J>>2]|0;if(d>>>0>1){e=p;g=1;do{e=(e|0)==(d+-1|0)?0:e+1|0;f[h+(g<<2)>>2]=e;g=g+1|0;d=f[J>>2]|0}while(g>>>0>>0)}q=f[c>>2]|0;o=q+4|0;p=q+8|0;e=0;while(1){if(d|0){i=f[w>>2]|0;j=f[v>>2]|0;k=f[r>>2]|0;m=0;do{l=i+(m<<2)|0;f[j+(f[l>>2]<<2)>>2]=0;d=f[l>>2]|0;n=(f[a>>2]|0)-(f[k+(d<<2)>>2]|0)|0;do if(n|0){g=j+(d<<2)|0;if((n|0)>=33){q=36;break b}if((n|0)<=0){q=38;break b}h=f[G>>2]|0;b=32-h|0;d=f[z>>2]|0;h=f[d>>2]<(b|0)){n=n-b|0;f[G>>2]=n;d=d+4|0;f[z>>2]=d;n=32-n|0;f[g>>2]=(f[d>>2]|0)>>>n|h>>>(n-b|0);break}f[g>>2]=h>>>(32-n|0);n=(f[G>>2]|0)+n|0;f[G>>2]=n;if((n|0)!=32)break;f[z>>2]=d+4;f[G>>2]=0}while(0);l=f[l>>2]|0;n=j+(l<<2)|0;f[n>>2]=f[n>>2]|f[(f[s>>2]|0)+(l<<2)>>2];m=m+1|0}while(m>>>0<(f[J>>2]|0)>>>0)}g=f[v>>2]|0;d=f[g>>2]|0;f[K>>2]=d;f[A>>2]=f[g+4>>2];f[C>>2]=f[g+8>>2];g=f[o>>2]|0;if(g>>>0<(f[p>>2]|0)>>>0){f[g>>2]=d;f[g+4>>2]=f[A>>2];f[g+8>>2]=f[C>>2];f[o>>2]=g+12}else mh(q,K);e=e+1|0;if(e>>>0>=t>>>0){q=15;break c}d=f[J>>2]|0}}i=1<>2]|0;d=f[s>>2]|0;b=d;h=f[h+(o*12|0)>>2]|0;if((g|0)!=(d|0)){g=g-d>>2;d=0;do{f[h+(d<<2)>>2]=f[b+(d<<2)>>2];d=d+1|0}while(d>>>0>>0)}s=h+(p<<2)|0;f[s>>2]=(f[s>>2]|0)+i;i=(_(t|0)|0)^31;if(i>>>0>=33){q=53;break b}if(!i){q=55;break b}h=f[F>>2]|0;g=32-h|0;b=f[y>>2]|0;d=f[b>>2]<>>(32-i|0);s=h+i|0;f[F>>2]=s;if((s|0)==32){f[y>>2]=b+4;f[F>>2]=0}}else{s=i-g|0;f[F>>2]=s;r=b+4|0;f[y>>2]=r;s=32-s|0;d=(f[r>>2]|0)>>>s|d>>>(s-g|0)}b=(t>>>1)-d|0;g=t-b|0;if((b|0)==(g|0))i=b;else{t=f[E>>2]|0;d=f[x>>2]|0;h=(f[d>>2]&1<<31-t|0)!=0;t=t+1|0;f[E>>2]=t;if((t|0)==32){f[x>>2]=d+4;f[E>>2]=0}i=h?b:g;b=h?g:b}f[j>>2]=(f[j>>2]|0)+1;d=f[k+(n*12|0)+4>>2]|0;if((d|0)!=(l|0)){h=f[k+(o*12|0)>>2]|0;g=d-l>>2;d=0;do{f[h+(d<<2)>>2]=f[m+(d<<2)>>2];d=d+1|0}while(d>>>0>>0)}if(i|0){h=f[N>>2]|0;t=e-h>>2;d=f[M>>2]|0;g=f[L>>2]|0;if((((t|0)==0?0:(t*341|0)+-1|0)|0)==(g+d|0)){qc(P);d=f[M>>2]|0;g=f[L>>2]|0;e=f[O>>2]|0;h=f[N>>2]|0}d=g+d|0;if((e|0)==(h|0))d=0;else d=(f[h+(((d>>>0)/341|0)<<2)>>2]|0)+(((d>>>0)%341|0)*12|0)|0;f[d>>2]=i;f[d+4>>2]=p;f[d+8>>2]=n;f[L>>2]=(f[L>>2]|0)+1}if(!b)q=15;else{h=f[O>>2]|0;g=f[N>>2]|0;t=h-g>>2;d=f[M>>2]|0;e=f[L>>2]|0;if((((t|0)==0?0:(t*341|0)+-1|0)|0)==(e+d|0)){qc(P);d=f[M>>2]|0;e=f[L>>2]|0;h=f[O>>2]|0;g=f[N>>2]|0}d=e+d|0;if((h|0)==(g|0))d=0;else d=(f[g+(((d>>>0)/341|0)<<2)>>2]|0)+(((d>>>0)%341|0)*12|0)|0;f[d>>2]=b;f[d+4>>2]=p;f[d+8>>2]=o;d=(f[L>>2]|0)+1|0;f[L>>2]=d}}while(0);if((q|0)==15){q=0;d=f[L>>2]|0}if(!d)break a}if((q|0)==27)Ga(17720,17758,223,17846);else if((q|0)==36)Ga(17861,17885,48,17934);else if((q|0)==38)Ga(17963,17885,49,17934);else if((q|0)==53)Ga(17861,17885,48,17934);else if((q|0)==55)Ga(17963,17885,49,17934)}while(0);d=f[N>>2]|0;e=f[M>>2]|0;h=d+(((e>>>0)/341|0)<<2)|0;g=f[O>>2]|0;i=g;j=d;if((g|0)==(d|0)){b=0;e=0}else{e=(f[h>>2]|0)+(((e>>>0)%341|0)*12|0)|0;b=e}d:while(1){do{if((e|0)==(b|0))break d;e=e+12|0}while((e-(f[h>>2]|0)|0)!=4092);e=h+4|0;h=e;e=f[e>>2]|0}f[L>>2]=0;e=i-j>>2;if(e>>>0>2)do{ar(f[d>>2]|0);d=(f[N>>2]|0)+4|0;f[N>>2]=d;g=f[O>>2]|0;e=g-d>>2}while(e>>>0>2);switch(e|0){case 1:{e=170;q=91;break}case 2:{e=341;q=91;break}default:{}}if((q|0)==91)f[M>>2]=e;if((d|0)!=(g|0)){do{ar(f[d>>2]|0);d=d+4|0}while((d|0)!=(g|0));d=f[N>>2]|0;e=f[O>>2]|0;if((e|0)!=(d|0))f[O>>2]=e+(~((e+-4-d|0)>>>2)<<2)}d=f[P>>2]|0;if(!d){u=Q;return}ar(d);u=Q;return}function jb(a,b,c,d,e,g){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;g=g|0;var h=0,i=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,v=0,w=0,x=0,y=0,z=0,A=0,B=0,C=0,D=0,E=0,F=0,G=0,H=0,I=0,J=0,K=0,L=0,M=0,N=0,O=0,P=0,Q=0,R=0,S=0;S=u;u=u+64|0;R=S+16|0;P=S;H=a+8|0;f[H>>2]=e;i=a+32|0;h=a+36|0;g=f[h>>2]|0;d=f[i>>2]|0;j=g-d>>2;if(j>>>0>=e>>>0){if(j>>>0>e>>>0?(k=d+(e<<2)|0,(g|0)!=(k|0)):0)f[h>>2]=g+(~((g+-4-k|0)>>>2)<<2)}else ui(i,e-j|0);d=R;g=d+48|0;do{f[d>>2]=0;d=d+4|0}while((d|0)<(g|0));f[P>>2]=0;if(!e){d=0;g=0}else{ch(R,e,P);d=f[R+12>>2]|0;g=f[R+16>>2]|0}f[P>>2]=0;h=R+16|0;i=g-d>>2;if(i>>>0>=e>>>0){if(i>>>0>e>>>0?(l=d+(e<<2)|0,(g|0)!=(l|0)):0)f[h>>2]=g+(~((g+-4-l|0)>>>2)<<2)}else ch(R+12|0,e-i|0,P);i=R+24|0;f[P>>2]=0;h=R+28|0;g=f[h>>2]|0;d=f[i>>2]|0;j=g-d>>2;if(j>>>0>=e>>>0){if(j>>>0>e>>>0?(m=d+(e<<2)|0,(g|0)!=(m|0)):0)f[h>>2]=g+(~((g+-4-m|0)>>>2)<<2)}else ch(i,e-j|0,P);i=R+36|0;f[P>>2]=0;h=R+40|0;g=f[h>>2]|0;d=f[i>>2]|0;j=g-d>>2;if(j>>>0>=e>>>0){if(j>>>0>e>>>0?(n=d+(e<<2)|0,(g|0)!=(n|0)):0)f[h>>2]=g+(~((g+-4-n|0)>>>2)<<2)}else ch(i,e-j|0,P);h=f[R>>2]|0;if((f[H>>2]|0)>0){l=a+16|0;i=a+32|0;m=a+12|0;j=0;do{d=f[h+(j<<2)>>2]|0;g=f[l>>2]|0;if((d|0)>(g|0)){k=f[i>>2]|0;f[k+(j<<2)>>2]=g}else{G=f[m>>2]|0;k=f[i>>2]|0;f[k+(j<<2)>>2]=(d|0)<(G|0)?G:d}j=j+1|0;d=f[H>>2]|0}while((j|0)<(d|0));if((d|0)>0){i=a+20|0;h=0;do{d=(f[b+(h<<2)>>2]|0)+(f[k+(h<<2)>>2]|0)|0;g=c+(h<<2)|0;f[g>>2]=d;if((d|0)<=(f[l>>2]|0)){if((d|0)<(f[m>>2]|0)){d=(f[i>>2]|0)+d|0;o=18}}else{d=d-(f[i>>2]|0)|0;o=18}if((o|0)==18){o=0;f[g>>2]=d}h=h+1|0}while((h|0)<(f[H>>2]|0))}}t=f[a+48>>2]|0;v=f[a+52>>2]|0;G=ln(16)|0;f[G>>2]=0;f[G+4>>2]=0;f[G+8>>2]=0;f[G+12>>2]=0;Dk(P,e);B=a+56|0;h=f[B>>2]|0;g=f[h+4>>2]|0;d=f[h>>2]|0;E=g-d|0;F=E>>2;a:do if((E|0)>4){A=t+64|0;x=t+28|0;z=(e|0)>0;D=a+16|0;y=a+32|0;E=a+12|0;C=a+20|0;w=e<<2;i=h;h=1;while(1){if(g-d>>2>>>0<=h>>>0){Kp(i);d=f[i>>2]|0}o=f[d+(h<<2)>>2]|0;r=o+((o|0)<0?0:((o>>>0)%3|0|0)==0?2:-1)|0;q=r>>>5;s=1<<(r&31);p=(r|0)<0;g=o;n=1;d=0;b:while(1){do{if((g|0)<=-1){o=61;break b}i=f[R+(d*12|0)>>2]|0;if(((f[(f[t>>2]|0)+(g>>>5<<2)>>2]&1<<(g&31)|0)==0?(Q=f[(f[(f[A>>2]|0)+12>>2]|0)+(g<<2)>>2]|0,(Q|0)>=0):0)?(K=f[x>>2]|0,m=f[v>>2]|0,I=f[m+(f[K+(Q<<2)>>2]<<2)>>2]|0,J=Q+1|0,J=f[m+(f[K+((((J|0)%3|0|0)==0?Q+-2|0:J)<<2)>>2]<<2)>>2]|0,K=f[m+(f[K+((((Q>>>0)%3|0|0)==0?2:-1)+Q<<2)>>2]<<2)>>2]|0,(I|0)<(h|0)&(J|0)<(h|0)&(K|0)<(h|0)):0){k=X(I,e)|0;l=X(J,e)|0;m=X(K,e)|0;if(z){j=0;do{f[i+(j<<2)>>2]=(f[c+(j+m<<2)>>2]|0)+(f[c+(j+l<<2)>>2]|0)-(f[c+(j+k<<2)>>2]|0);j=j+1|0}while((j|0)!=(e|0))}d=d+1|0;if((d|0)==4){d=4;o=42;break b}}do if(n){i=g+1|0;g=((i|0)%3|0|0)==0?g+-2|0:i;i=f[t>>2]|0;if(!(f[i+(g>>>5<<2)>>2]&1<<(g&31))){if((g|0)>=0){g=f[(f[(f[A>>2]|0)+12>>2]|0)+(g<<2)>>2]|0;j=g+1|0;if((g|0)>=0)g=((j|0)%3|0|0)==0?g+-2|0:j}}else g=-1073741824}else{g=(((g>>>0)%3|0|0)==0?2:-1)+g|0;i=f[t>>2]|0;if(!(f[i+(g>>>5<<2)>>2]&1<<(g&31))){if((g|0)>=0){g=f[(f[(f[A>>2]|0)+12>>2]|0)+(g<<2)>>2]|0;if((g|0)>=0)if(!((g>>>0)%3|0)){g=g+2|0;break}else{g=g+-1|0;break}}}else g=-1073741824}while(0);if((g|0)==(o|0)){o=61;break b}}while(!(n&(g|0)<0));g=(s&f[i+(q<<2)>>2]|0)!=0;if(g|p){g=g?-1073741824:r;n=0;continue}g=f[(f[(f[A>>2]|0)+12>>2]|0)+(r<<2)>>2]|0;if((g|0)<0){n=0;continue}if(!((g>>>0)%3|0)){g=g+2|0;n=0;continue}else{g=g+-1|0;n=0;continue}}if((o|0)==61)if((d|0)>0)o=42;else{O=X(h,e)|0;o=73}if((o|0)==42){o=0;if(z){ej(f[P>>2]|0,0,w|0)|0;k=d+-1|0;m=G+(k<<2)|0;k=f[a+60+(k*12|0)>>2]|0;l=f[P>>2]|0;n=0;g=0;do{s=f[m>>2]|0;f[m>>2]=s+1;if(!(f[k+(s>>>5<<2)>>2]&1<<(s&31))){i=f[R+(n*12|0)>>2]|0;j=0;do{s=l+(j<<2)|0;f[s>>2]=(f[s>>2]|0)+(f[i+(j<<2)>>2]|0);j=j+1|0}while((j|0)!=(e|0));g=g+1|0}n=n+1|0}while((n|0)!=(d|0))}else{i=d+-1|0;k=G+(i<<2)|0;i=f[a+60+(i*12|0)>>2]|0;j=f[k>>2]|0;l=0;g=0;do{s=j;j=j+1|0;f[k>>2]=j;g=g+((f[i+(s>>>5<<2)>>2]&1<<(s&31)|0)==0&1)|0;l=l+1|0}while((l|0)!=(d|0))}i=X(h,e)|0;if(g){k=f[P>>2]|0;if(z){d=0;do{s=k+(d<<2)|0;f[s>>2]=(f[s>>2]|0)/(g|0)|0;d=d+1|0}while((d|0)!=(e|0))}m=b+(i<<2)|0;l=c+(i<<2)|0;if((f[H>>2]|0)>0){i=0;do{d=f[k+(i<<2)>>2]|0;g=f[D>>2]|0;if((d|0)>(g|0)){j=f[y>>2]|0;f[j+(i<<2)>>2]=g}else{s=f[E>>2]|0;j=f[y>>2]|0;f[j+(i<<2)>>2]=(d|0)<(s|0)?s:d}i=i+1|0;d=f[H>>2]|0}while((i|0)<(d|0));if((d|0)>0){i=0;do{d=(f[m+(i<<2)>>2]|0)+(f[j+(i<<2)>>2]|0)|0;g=l+(i<<2)|0;f[g>>2]=d;if((d|0)<=(f[D>>2]|0)){if((d|0)<(f[E>>2]|0)){d=(f[C>>2]|0)+d|0;o=95}}else{d=d-(f[C>>2]|0)|0;o=95}if((o|0)==95){o=0;f[g>>2]=d}i=i+1|0}while((i|0)<(f[H>>2]|0))}}}else{O=i;o=73}}if((o|0)==73?(o=0,L=c+((X(h+-1|0,e)|0)<<2)|0,M=b+(O<<2)|0,N=c+(O<<2)|0,(f[H>>2]|0)>0):0){i=0;do{d=f[L+(i<<2)>>2]|0;g=f[D>>2]|0;if((d|0)>(g|0)){j=f[y>>2]|0;f[j+(i<<2)>>2]=g}else{s=f[E>>2]|0;j=f[y>>2]|0;f[j+(i<<2)>>2]=(d|0)<(s|0)?s:d}i=i+1|0;d=f[H>>2]|0}while((i|0)<(d|0));if((d|0)>0){i=0;do{d=(f[M+(i<<2)>>2]|0)+(f[j+(i<<2)>>2]|0)|0;g=N+(i<<2)|0;f[g>>2]=d;if((d|0)<=(f[D>>2]|0)){if((d|0)<(f[E>>2]|0)){d=(f[C>>2]|0)+d|0;o=83}}else{d=d-(f[C>>2]|0)|0;o=83}if((o|0)==83){o=0;f[g>>2]=d}i=i+1|0}while((i|0)<(f[H>>2]|0))}}h=h+1|0;if((h|0)>=(F|0)){d=P;break a}i=f[B>>2]|0;d=f[i>>2]|0;g=f[i+4>>2]|0}}else d=P;while(0);h=f[d>>2]|0;if(h|0){g=P+4|0;d=f[g>>2]|0;if((d|0)!=(h|0))f[g>>2]=d+(~((d+-4-h|0)>>>2)<<2);ar(h)}ar(G);g=f[R+36>>2]|0;if(g|0){h=R+40|0;d=f[h>>2]|0;if((d|0)!=(g|0))f[h>>2]=d+(~((d+-4-g|0)>>>2)<<2);ar(g)}d=f[R+24>>2]|0;if(d|0){h=R+28|0;g=f[h>>2]|0;if((g|0)!=(d|0))f[h>>2]=g+(~((g+-4-d|0)>>>2)<<2);ar(d)}d=f[R+12>>2]|0;if(d|0){h=R+16|0;g=f[h>>2]|0;if((g|0)!=(d|0))f[h>>2]=g+(~((g+-4-d|0)>>>2)<<2);ar(d)}h=f[R>>2]|0;if(!h){u=S;return 1}g=R+4|0;d=f[g>>2]|0;if((d|0)!=(h|0))f[g>>2]=d+(~((d+-4-h|0)>>>2)<<2);ar(h);u=S;return 1}function kb(a,c,d){a=a|0;c=c|0;d=d|0;var e=0,g=0,h=0,i=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,v=0,w=0,x=0,y=0,z=0,A=0,B=0,C=0,D=0,E=0,F=0,G=0,H=0,I=0,J=0,K=0;K=u;u=u+32|0;J=K+8|0;j=K;E=a+8|0;D=f[E>>2]|0;f[j>>2]=0;Oj(J,D,j);D=a+624|0;i=f[D>>2]|0;e=f[i>>2]|0;h=i+4|0;if(!e)e=i+8|0;else{g=f[h>>2]|0;if((g|0)!=(e|0))f[h>>2]=g+(~((g+-4-e|0)>>>2)<<2);ar(e);e=i+8|0;f[e>>2]=0;f[h>>2]=0;f[i>>2]=0}f[i>>2]=f[J>>2];f[h>>2]=f[J+4>>2];f[e>>2]=f[J+8>>2];C=f[E>>2]|0;f[j>>2]=0;Oj(J,C,j);C=a+636|0;i=f[C>>2]|0;e=f[i>>2]|0;h=i+4|0;if(!e)e=i+8|0;else{g=f[h>>2]|0;if((g|0)!=(e|0))f[h>>2]=g+(~((g+-4-e|0)>>>2)<<2);ar(e);e=i+8|0;f[e>>2]=0;f[h>>2]=0;f[i>>2]=0}f[i>>2]=f[J>>2];f[h>>2]=f[J+4>>2];f[e>>2]=f[J+8>>2];f[J>>2]=0;f[J+4>>2]=0;f[J+8>>2]=0;f[J+12>>2]=0;f[J+16>>2]=0;f[J+20>>2]=0;I=J+8|0;H=J+4|0;G=J+16|0;F=J+20|0;qc(J);e=f[H>>2]|0;g=(f[F>>2]|0)+(f[G>>2]|0)|0;if((f[I>>2]|0)==(e|0))e=0;else e=(f[e+(((g>>>0)/341|0)<<2)>>2]|0)+(((g>>>0)%341|0)*12|0)|0;f[e>>2]=c;f[e+4>>2]=0;f[e+8>>2]=0;e=(f[F>>2]|0)+1|0;f[F>>2]=e;a:do if(e|0){v=a+612|0;B=a+600|0;t=d+4|0;w=a+604|0;A=a+556|0;y=a+552|0;z=a+596|0;x=a+592|0;b:while(1){q=f[G>>2]|0;g=e+-1|0;m=q+g|0;r=f[H>>2]|0;p=f[r+(((m>>>0)/341|0)<<2)>>2]|0;m=(m>>>0)%341|0;s=f[p+(m*12|0)>>2]|0;h=f[p+(m*12|0)+4>>2]|0;m=f[p+(m*12|0)+8>>2]|0;f[F>>2]=g;g=f[I>>2]|0;r=g-r>>2;if((1-e-q+((r|0)==0?0:(r*341|0)+-1|0)|0)>>>0>681){ar(f[g+-4>>2]|0);f[I>>2]=(f[I>>2]|0)+-4}i=f[D>>2]|0;r=i+(m*12|0)|0;q=(f[C>>2]|0)+(m*12|0)|0;g=Si(a,s,q,h)|0;e=(f[a>>2]|0)-(f[(f[q>>2]|0)+(g<<2)>>2]|0)|0;c:do if(!e)if((s|0)>0){j=i+(m*12|0)+4|0;c=f[d>>2]|0;m=c+84|0;i=c+68|0;k=c+40|0;c=c+64|0;g=f[t>>2]|0;l=0;while(1){e=g;g=g+1|0;f[t>>2]=g;h=f[r>>2]|0;if(((f[j>>2]|0)-h|0)!=12){o=23;break b}if(!(b[m>>0]|0))e=f[(f[i>>2]|0)+(e<<2)>>2]|0;p=k;q=f[p>>2]|0;p=kn(q|0,f[p+4>>2]|0,e|0,((e|0)<0)<<31>>31|0)|0;Mg((f[f[c>>2]>>2]|0)+p|0,h|0,q|0)|0;l=l+1|0;if((l|0)>=(s|0)){o=15;break}}}else o=15;else{if(!s){o=28;break b}if(s>>>0<3){i=f[v>>2]|0;f[i>>2]=g;e=f[E>>2]|0;if(e>>>0>1){h=1;do{g=(g|0)==(e+-1|0)?0:g+1|0;f[i+(h<<2)>>2]=g;h=h+1|0;e=f[E>>2]|0}while(h>>>0>>0)}g=0;while(1){if(!e)i=f[B>>2]|0;else{k=f[v>>2]|0;l=f[B>>2]|0;m=f[q>>2]|0;i=l;o=0;do{n=k+(o<<2)|0;f[l+(f[n>>2]<<2)>>2]=0;e=f[n>>2]|0;p=(f[a>>2]|0)-(f[m+(e<<2)>>2]|0)|0;do if(p|0){h=l+(e<<2)|0;if((p|0)>=33){o=42;break b}if((p|0)<=0){o=44;break b}j=f[A>>2]|0;c=32-j|0;e=f[y>>2]|0;j=f[e>>2]<(c|0)){p=p-c|0;f[A>>2]=p;e=e+4|0;f[y>>2]=e;p=32-p|0;f[h>>2]=(f[e>>2]|0)>>>p|j>>>(p-c|0);break}f[h>>2]=j>>>(32-p|0);p=(f[A>>2]|0)+p|0;f[A>>2]=p;if((p|0)!=32)break;f[y>>2]=e+4;f[A>>2]=0}while(0);n=f[n>>2]|0;p=l+(n<<2)|0;f[p>>2]=f[p>>2]|f[(f[r>>2]|0)+(n<<2)>>2];o=o+1|0}while(o>>>0<(f[E>>2]|0)>>>0)}h=f[d>>2]|0;e=f[t>>2]|0;f[t>>2]=e+1;if(((f[w>>2]|0)-i|0)!=12){o=37;break b}if(!(b[h+84>>0]|0))e=f[(f[h+68>>2]|0)+(e<<2)>>2]|0;o=h+40|0;p=f[o>>2]|0;o=kn(p|0,f[o+4>>2]|0,e|0,((e|0)<0)<<31>>31|0)|0;Mg((f[f[h+64>>2]>>2]|0)+o|0,i|0,p|0)|0;g=g+1|0;if(g>>>0>=s>>>0){o=15;break c}e=f[E>>2]|0}}c=1<>2]|0;e=f[r>>2]|0;j=e;i=f[(f[D>>2]|0)+(n*12|0)>>2]|0;if((h|0)!=(e|0)){h=h-e>>2;e=0;do{f[i+(e<<2)>>2]=f[j+(e<<2)>>2];e=e+1|0}while(e>>>0>>0)}i=i+(g<<2)|0;f[i>>2]=(f[i>>2]|0)+c;i=(_(s|0)|0)^31;if(!i)e=0;else{h=0;e=0;do{e=(Tk(a+12+(h<<4)|0)|0)&1|e<<1;h=h+1|0}while((h|0)!=(i|0))}j=(s>>>1)-e|0;h=s-j|0;if((j|0)==(h|0)){k=j;l=j}else{s=f[z>>2]|0;e=f[x>>2]|0;i=(f[e>>2]&1<<31-s|0)!=0;s=s+1|0;f[z>>2]=s;if((s|0)==32){f[x>>2]=e+4;f[z>>2]=0}k=i?j:h;l=i?h:j}e=f[C>>2]|0;c=f[e+(m*12|0)>>2]|0;h=c+(g<<2)|0;f[h>>2]=(f[h>>2]|0)+1;h=f[e+(m*12|0)+4>>2]|0;i=c;if((h|0)!=(i|0)){j=f[e+(n*12|0)>>2]|0;h=h-i>>2;e=0;do{f[j+(e<<2)>>2]=f[c+(e<<2)>>2];e=e+1|0}while(e>>>0>>0)}if(k|0){j=f[I>>2]|0;i=f[H>>2]|0;s=j-i>>2;e=f[G>>2]|0;h=f[F>>2]|0;if((((s|0)==0?0:(s*341|0)+-1|0)|0)==(h+e|0)){qc(J);e=f[G>>2]|0;h=f[F>>2]|0;j=f[I>>2]|0;i=f[H>>2]|0}e=h+e|0;if((j|0)==(i|0))e=0;else e=(f[i+(((e>>>0)/341|0)<<2)>>2]|0)+(((e>>>0)%341|0)*12|0)|0;f[e>>2]=k;f[e+4>>2]=g;f[e+8>>2]=m;f[F>>2]=(f[F>>2]|0)+1}if(!l)o=15;else{j=f[I>>2]|0;i=f[H>>2]|0;s=j-i>>2;e=f[G>>2]|0;h=f[F>>2]|0;if((((s|0)==0?0:(s*341|0)+-1|0)|0)==(h+e|0)){qc(J);e=f[G>>2]|0;h=f[F>>2]|0;j=f[I>>2]|0;i=f[H>>2]|0}e=h+e|0;if((j|0)==(i|0))e=0;else e=(f[i+(((e>>>0)/341|0)<<2)>>2]|0)+(((e>>>0)%341|0)*12|0)|0;f[e>>2]=l;f[e+4>>2]=g;f[e+8>>2]=n;e=(f[F>>2]|0)+1|0;f[F>>2]=e}}while(0);if((o|0)==15){o=0;e=f[F>>2]|0}if(!e)break a}if((o|0)==23)Ga(17368,17398,51,17461);else if((o|0)==28)Ga(17720,17758,223,17846);else if((o|0)==37)Ga(17368,17398,51,17461);else if((o|0)==42)Ga(17861,17885,48,17934);else if((o|0)==44)Ga(17963,17885,49,17934)}while(0);e=f[H>>2]|0;g=f[G>>2]|0;i=e+(((g>>>0)/341|0)<<2)|0;h=f[I>>2]|0;c=h;k=e;if((h|0)==(e|0)){j=0;g=0}else{g=(f[i>>2]|0)+(((g>>>0)%341|0)*12|0)|0;j=g}d:while(1){do{if((g|0)==(j|0))break d;g=g+12|0}while((g-(f[i>>2]|0)|0)!=4092);g=i+4|0;i=g;g=f[g>>2]|0}f[F>>2]=0;g=c-k>>2;if(g>>>0>2)do{ar(f[e>>2]|0);e=(f[H>>2]|0)+4|0;f[H>>2]=e;h=f[I>>2]|0;g=h-e>>2}while(g>>>0>2);switch(g|0){case 1:{g=170;o=88;break}case 2:{g=341;o=88;break}default:{}}if((o|0)==88)f[G>>2]=g;if((e|0)!=(h|0)){do{ar(f[e>>2]|0);e=e+4|0}while((e|0)!=(h|0));e=f[H>>2]|0;g=f[I>>2]|0;if((g|0)!=(e|0))f[I>>2]=g+(~((g+-4-e|0)>>>2)<<2)}e=f[J>>2]|0;if(!e){u=K;return}ar(e);u=K;return}function lb(a,c,d){a=a|0;c=c|0;d=d|0;var e=0,g=0,h=0,i=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,v=0,w=0,x=0,y=0,z=0,A=0,B=0,C=0,D=0,E=0,F=0,G=0,H=0,I=0,J=0,K=0;K=u;u=u+32|0;J=K+8|0;j=K;E=a+8|0;D=f[E>>2]|0;f[j>>2]=0;Oj(J,D,j);D=a+624|0;i=f[D>>2]|0;e=f[i>>2]|0;h=i+4|0;if(!e)e=i+8|0;else{g=f[h>>2]|0;if((g|0)!=(e|0))f[h>>2]=g+(~((g+-4-e|0)>>>2)<<2);ar(e);e=i+8|0;f[e>>2]=0;f[h>>2]=0;f[i>>2]=0}f[i>>2]=f[J>>2];f[h>>2]=f[J+4>>2];f[e>>2]=f[J+8>>2];C=f[E>>2]|0;f[j>>2]=0;Oj(J,C,j);C=a+636|0;i=f[C>>2]|0;e=f[i>>2]|0;h=i+4|0;if(!e)e=i+8|0;else{g=f[h>>2]|0;if((g|0)!=(e|0))f[h>>2]=g+(~((g+-4-e|0)>>>2)<<2);ar(e);e=i+8|0;f[e>>2]=0;f[h>>2]=0;f[i>>2]=0}f[i>>2]=f[J>>2];f[h>>2]=f[J+4>>2];f[e>>2]=f[J+8>>2];f[J>>2]=0;f[J+4>>2]=0;f[J+8>>2]=0;f[J+12>>2]=0;f[J+16>>2]=0;f[J+20>>2]=0;I=J+8|0;H=J+4|0;G=J+16|0;F=J+20|0;qc(J);e=f[H>>2]|0;g=(f[F>>2]|0)+(f[G>>2]|0)|0;if((f[I>>2]|0)==(e|0))e=0;else e=(f[e+(((g>>>0)/341|0)<<2)>>2]|0)+(((g>>>0)%341|0)*12|0)|0;f[e>>2]=c;f[e+4>>2]=0;f[e+8>>2]=0;e=(f[F>>2]|0)+1|0;f[F>>2]=e;a:do if(e|0){v=a+612|0;B=a+600|0;t=d+4|0;w=a+604|0;A=a+556|0;y=a+552|0;z=a+596|0;x=a+592|0;b:while(1){q=f[G>>2]|0;g=e+-1|0;m=q+g|0;r=f[H>>2]|0;p=f[r+(((m>>>0)/341|0)<<2)>>2]|0;m=(m>>>0)%341|0;s=f[p+(m*12|0)>>2]|0;h=f[p+(m*12|0)+4>>2]|0;m=f[p+(m*12|0)+8>>2]|0;f[F>>2]=g;g=f[I>>2]|0;r=g-r>>2;if((1-e-q+((r|0)==0?0:(r*341|0)+-1|0)|0)>>>0>681){ar(f[g+-4>>2]|0);f[I>>2]=(f[I>>2]|0)+-4}i=f[D>>2]|0;r=i+(m*12|0)|0;q=(f[C>>2]|0)+(m*12|0)|0;g=un(a,s,q,h)|0;e=(f[a>>2]|0)-(f[(f[q>>2]|0)+(g<<2)>>2]|0)|0;c:do if(!e)if((s|0)>0){j=i+(m*12|0)+4|0;c=f[d>>2]|0;m=c+84|0;i=c+68|0;k=c+40|0;c=c+64|0;g=f[t>>2]|0;l=0;while(1){e=g;g=g+1|0;f[t>>2]=g;h=f[r>>2]|0;if(((f[j>>2]|0)-h|0)!=12){o=23;break b}if(!(b[m>>0]|0))e=f[(f[i>>2]|0)+(e<<2)>>2]|0;p=k;q=f[p>>2]|0;p=kn(q|0,f[p+4>>2]|0,e|0,((e|0)<0)<<31>>31|0)|0;Mg((f[f[c>>2]>>2]|0)+p|0,h|0,q|0)|0;l=l+1|0;if((l|0)>=(s|0)){o=15;break}}}else o=15;else{if(!s){o=28;break b}if(s>>>0<3){i=f[v>>2]|0;f[i>>2]=g;e=f[E>>2]|0;if(e>>>0>1){h=1;do{g=(g|0)==(e+-1|0)?0:g+1|0;f[i+(h<<2)>>2]=g;h=h+1|0;e=f[E>>2]|0}while(h>>>0>>0)}g=0;while(1){if(!e)i=f[B>>2]|0;else{k=f[v>>2]|0;l=f[B>>2]|0;m=f[q>>2]|0;i=l;o=0;do{n=k+(o<<2)|0;f[l+(f[n>>2]<<2)>>2]=0;e=f[n>>2]|0;p=(f[a>>2]|0)-(f[m+(e<<2)>>2]|0)|0;do if(p|0){h=l+(e<<2)|0;if((p|0)>=33){o=42;break b}if((p|0)<=0){o=44;break b}j=f[A>>2]|0;c=32-j|0;e=f[y>>2]|0;j=f[e>>2]<(c|0)){p=p-c|0;f[A>>2]=p;e=e+4|0;f[y>>2]=e;p=32-p|0;f[h>>2]=(f[e>>2]|0)>>>p|j>>>(p-c|0);break}f[h>>2]=j>>>(32-p|0);p=(f[A>>2]|0)+p|0;f[A>>2]=p;if((p|0)!=32)break;f[y>>2]=e+4;f[A>>2]=0}while(0);n=f[n>>2]|0;p=l+(n<<2)|0;f[p>>2]=f[p>>2]|f[(f[r>>2]|0)+(n<<2)>>2];o=o+1|0}while(o>>>0<(f[E>>2]|0)>>>0)}h=f[d>>2]|0;e=f[t>>2]|0;f[t>>2]=e+1;if(((f[w>>2]|0)-i|0)!=12){o=37;break b}if(!(b[h+84>>0]|0))e=f[(f[h+68>>2]|0)+(e<<2)>>2]|0;o=h+40|0;p=f[o>>2]|0;o=kn(p|0,f[o+4>>2]|0,e|0,((e|0)<0)<<31>>31|0)|0;Mg((f[f[h+64>>2]>>2]|0)+o|0,i|0,p|0)|0;g=g+1|0;if(g>>>0>=s>>>0){o=15;break c}e=f[E>>2]|0}}c=1<>2]|0;e=f[r>>2]|0;j=e;i=f[(f[D>>2]|0)+(n*12|0)>>2]|0;if((h|0)!=(e|0)){h=h-e>>2;e=0;do{f[i+(e<<2)>>2]=f[j+(e<<2)>>2];e=e+1|0}while(e>>>0>>0)}i=i+(g<<2)|0;f[i>>2]=(f[i>>2]|0)+c;i=(_(s|0)|0)^31;if(!i)e=0;else{h=0;e=0;do{e=(Tk(a+12+(h<<4)|0)|0)&1|e<<1;h=h+1|0}while((h|0)!=(i|0))}j=(s>>>1)-e|0;h=s-j|0;if((j|0)==(h|0)){k=j;l=j}else{s=f[z>>2]|0;e=f[x>>2]|0;i=(f[e>>2]&1<<31-s|0)!=0;s=s+1|0;f[z>>2]=s;if((s|0)==32){f[x>>2]=e+4;f[z>>2]=0}k=i?j:h;l=i?h:j}e=f[C>>2]|0;c=f[e+(m*12|0)>>2]|0;h=c+(g<<2)|0;f[h>>2]=(f[h>>2]|0)+1;h=f[e+(m*12|0)+4>>2]|0;i=c;if((h|0)!=(i|0)){j=f[e+(n*12|0)>>2]|0;h=h-i>>2;e=0;do{f[j+(e<<2)>>2]=f[c+(e<<2)>>2];e=e+1|0}while(e>>>0>>0)}if(k|0){j=f[I>>2]|0;i=f[H>>2]|0;s=j-i>>2;e=f[G>>2]|0;h=f[F>>2]|0;if((((s|0)==0?0:(s*341|0)+-1|0)|0)==(h+e|0)){qc(J);e=f[G>>2]|0;h=f[F>>2]|0;j=f[I>>2]|0;i=f[H>>2]|0}e=h+e|0;if((j|0)==(i|0))e=0;else e=(f[i+(((e>>>0)/341|0)<<2)>>2]|0)+(((e>>>0)%341|0)*12|0)|0;f[e>>2]=k;f[e+4>>2]=g;f[e+8>>2]=m;f[F>>2]=(f[F>>2]|0)+1}if(!l)o=15;else{j=f[I>>2]|0;i=f[H>>2]|0;s=j-i>>2;e=f[G>>2]|0;h=f[F>>2]|0;if((((s|0)==0?0:(s*341|0)+-1|0)|0)==(h+e|0)){qc(J);e=f[G>>2]|0;h=f[F>>2]|0;j=f[I>>2]|0;i=f[H>>2]|0}e=h+e|0;if((j|0)==(i|0))e=0;else e=(f[i+(((e>>>0)/341|0)<<2)>>2]|0)+(((e>>>0)%341|0)*12|0)|0;f[e>>2]=l;f[e+4>>2]=g;f[e+8>>2]=n;e=(f[F>>2]|0)+1|0;f[F>>2]=e}}while(0);if((o|0)==15){o=0;e=f[F>>2]|0}if(!e)break a}if((o|0)==23)Ga(17368,17398,51,17461);else if((o|0)==28)Ga(17720,17758,223,17846);else if((o|0)==37)Ga(17368,17398,51,17461);else if((o|0)==42)Ga(17861,17885,48,17934);else if((o|0)==44)Ga(17963,17885,49,17934)}while(0);e=f[H>>2]|0;g=f[G>>2]|0;i=e+(((g>>>0)/341|0)<<2)|0;h=f[I>>2]|0;c=h;k=e;if((h|0)==(e|0)){j=0;g=0}else{g=(f[i>>2]|0)+(((g>>>0)%341|0)*12|0)|0;j=g}d:while(1){do{if((g|0)==(j|0))break d;g=g+12|0}while((g-(f[i>>2]|0)|0)!=4092);g=i+4|0;i=g;g=f[g>>2]|0}f[F>>2]=0;g=c-k>>2;if(g>>>0>2)do{ar(f[e>>2]|0);e=(f[H>>2]|0)+4|0;f[H>>2]=e;h=f[I>>2]|0;g=h-e>>2}while(g>>>0>2);switch(g|0){case 1:{g=170;o=88;break}case 2:{g=341;o=88;break}default:{}}if((o|0)==88)f[G>>2]=g;if((e|0)!=(h|0)){do{ar(f[e>>2]|0);e=e+4|0}while((e|0)!=(h|0));e=f[H>>2]|0;g=f[I>>2]|0;if((g|0)!=(e|0))f[I>>2]=g+(~((g+-4-e|0)>>>2)<<2)}e=f[J>>2]|0;if(!e){u=K;return}ar(e);u=K;return}function mb(a,b,c){a=a|0;b=b|0;c=c|0;var d=0,e=0,g=0,h=0,i=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,v=0,w=0,x=0,y=0,z=0,A=0,B=0,C=0,D=0,E=0,F=0,G=0,H=0,I=0,J=0,K=0,L=0,M=0,N=0,O=0;O=u;u=u+48|0;I=O+24|0;N=O;H=a+8|0;G=f[H>>2]|0;f[N>>2]=0;Oj(I,G,N);G=a+624|0;h=f[G>>2]|0;d=f[h>>2]|0;g=h+4|0;if(!d)d=h+8|0;else{e=f[g>>2]|0;if((e|0)!=(d|0))f[g>>2]=e+(~((e+-4-d|0)>>>2)<<2);ar(d);d=h+8|0;f[d>>2]=0;f[g>>2]=0;f[h>>2]=0}f[h>>2]=f[I>>2];f[g>>2]=f[I+4>>2];f[d>>2]=f[I+8>>2];F=f[H>>2]|0;f[N>>2]=0;Oj(I,F,N);F=a+636|0;h=f[F>>2]|0;d=f[h>>2]|0;g=h+4|0;if(!d)d=h+8|0;else{e=f[g>>2]|0;if((e|0)!=(d|0))f[g>>2]=e+(~((e+-4-d|0)>>>2)<<2);ar(d);d=h+8|0;f[d>>2]=0;f[g>>2]=0;f[h>>2]=0}f[h>>2]=f[I>>2];f[g>>2]=f[I+4>>2];f[d>>2]=f[I+8>>2];f[N>>2]=0;f[N+4>>2]=0;f[N+8>>2]=0;f[N+12>>2]=0;f[N+16>>2]=0;f[N+20>>2]=0;M=N+8|0;L=N+4|0;K=N+16|0;J=N+20|0;qc(N);d=f[L>>2]|0;e=(f[J>>2]|0)+(f[K>>2]|0)|0;if((f[M>>2]|0)==(d|0))d=0;else d=(f[d+(((e>>>0)/341|0)<<2)>>2]|0)+(((e>>>0)%341|0)*12|0)|0;f[d>>2]=b;f[d+4>>2]=0;f[d+8>>2]=0;d=(f[J>>2]|0)+1|0;f[J>>2]=d;a:do if(d|0){w=a+612|0;v=a+600|0;z=I+4|0;B=I+8|0;E=a+556|0;y=a+552|0;D=a+596|0;x=a+592|0;A=I+4|0;C=I+8|0;b:while(1){r=f[K>>2]|0;e=d+-1|0;l=r+e|0;s=f[L>>2]|0;q=f[s+(((l>>>0)/341|0)<<2)>>2]|0;l=(l>>>0)%341|0;t=f[q+(l*12|0)>>2]|0;g=f[q+(l*12|0)+4>>2]|0;l=f[q+(l*12|0)+8>>2]|0;f[J>>2]=e;e=f[M>>2]|0;s=e-s>>2;if((1-d-r+((s|0)==0?0:(s*341|0)+-1|0)|0)>>>0>681){ar(f[e+-4>>2]|0);f[M>>2]=(f[M>>2]|0)+-4}h=f[G>>2]|0;s=h+(l*12|0)|0;r=(f[F>>2]|0)+(l*12|0)|0;e=Si(a,t,r,g)|0;d=(f[a>>2]|0)-(f[(f[r>>2]|0)+(e<<2)>>2]|0)|0;c:do if(!d)if((t|0)>0){i=f[c>>2]|0;g=i+4|0;h=i+8|0;b=0;do{e=f[s>>2]|0;d=f[e>>2]|0;f[I>>2]=d;f[A>>2]=f[e+4>>2];f[C>>2]=f[e+8>>2];e=f[g>>2]|0;if(e>>>0<(f[h>>2]|0)>>>0){f[e>>2]=d;f[e+4>>2]=f[A>>2];f[e+8>>2]=f[C>>2];f[g>>2]=e+12}else mh(i,I);b=b+1|0}while((b|0)<(t|0));n=15}else n=15;else{if(!t){n=27;break b}if(t>>>0<3){h=f[w>>2]|0;f[h>>2]=e;d=f[H>>2]|0;if(d>>>0>1){g=1;do{e=(e|0)==(d+-1|0)?0:e+1|0;f[h+(g<<2)>>2]=e;g=g+1|0;d=f[H>>2]|0}while(g>>>0>>0)}q=f[c>>2]|0;o=q+4|0;p=q+8|0;e=0;while(1){if(d|0){i=f[w>>2]|0;j=f[v>>2]|0;k=f[r>>2]|0;m=0;do{l=i+(m<<2)|0;f[j+(f[l>>2]<<2)>>2]=0;d=f[l>>2]|0;n=(f[a>>2]|0)-(f[k+(d<<2)>>2]|0)|0;do if(n|0){g=j+(d<<2)|0;if((n|0)>=33){n=36;break b}if((n|0)<=0){n=38;break b}h=f[E>>2]|0;b=32-h|0;d=f[y>>2]|0;h=f[d>>2]<(b|0)){n=n-b|0;f[E>>2]=n;d=d+4|0;f[y>>2]=d;n=32-n|0;f[g>>2]=(f[d>>2]|0)>>>n|h>>>(n-b|0);break}f[g>>2]=h>>>(32-n|0);n=(f[E>>2]|0)+n|0;f[E>>2]=n;if((n|0)!=32)break;f[y>>2]=d+4;f[E>>2]=0}while(0);l=f[l>>2]|0;n=j+(l<<2)|0;f[n>>2]=f[n>>2]|f[(f[s>>2]|0)+(l<<2)>>2];m=m+1|0}while(m>>>0<(f[H>>2]|0)>>>0)}g=f[v>>2]|0;d=f[g>>2]|0;f[I>>2]=d;f[z>>2]=f[g+4>>2];f[B>>2]=f[g+8>>2];g=f[o>>2]|0;if(g>>>0<(f[p>>2]|0)>>>0){f[g>>2]=d;f[g+4>>2]=f[z>>2];f[g+8>>2]=f[B>>2];f[o>>2]=g+12}else mh(q,I);e=e+1|0;if(e>>>0>=t>>>0){n=15;break c}d=f[H>>2]|0}}i=1<>2]|0;d=f[s>>2]|0;b=d;h=f[(f[G>>2]|0)+(m*12|0)>>2]|0;if((g|0)!=(d|0)){g=g-d>>2;d=0;do{f[h+(d<<2)>>2]=f[b+(d<<2)>>2];d=d+1|0}while(d>>>0>>0)}h=h+(e<<2)|0;f[h>>2]=(f[h>>2]|0)+i;h=(_(t|0)|0)^31;if(!h)d=0;else{g=0;d=0;do{d=(Tk(a+12+(g<<4)|0)|0)&1|d<<1;g=g+1|0}while((g|0)!=(h|0))}b=(t>>>1)-d|0;g=t-b|0;if((b|0)==(g|0)){j=b;k=b}else{t=f[D>>2]|0;d=f[x>>2]|0;h=(f[d>>2]&1<<31-t|0)!=0;t=t+1|0;f[D>>2]=t;if((t|0)==32){f[x>>2]=d+4;f[D>>2]=0}j=h?b:g;k=h?g:b}d=f[F>>2]|0;i=f[d+(l*12|0)>>2]|0;g=i+(e<<2)|0;f[g>>2]=(f[g>>2]|0)+1;g=f[d+(l*12|0)+4>>2]|0;h=i;if((g|0)!=(h|0)){b=f[d+(m*12|0)>>2]|0;g=g-h>>2;d=0;do{f[b+(d<<2)>>2]=f[i+(d<<2)>>2];d=d+1|0}while(d>>>0>>0)}if(j|0){b=f[M>>2]|0;g=f[L>>2]|0;t=b-g>>2;d=f[K>>2]|0;h=f[J>>2]|0;if((((t|0)==0?0:(t*341|0)+-1|0)|0)==(h+d|0)){qc(N);d=f[K>>2]|0;h=f[J>>2]|0;b=f[M>>2]|0;g=f[L>>2]|0}d=h+d|0;if((b|0)==(g|0))d=0;else d=(f[g+(((d>>>0)/341|0)<<2)>>2]|0)+(((d>>>0)%341|0)*12|0)|0;f[d>>2]=j;f[d+4>>2]=e;f[d+8>>2]=l;f[J>>2]=(f[J>>2]|0)+1}if(!k)n=15;else{b=f[M>>2]|0;h=f[L>>2]|0;t=b-h>>2;d=f[K>>2]|0;g=f[J>>2]|0;if((((t|0)==0?0:(t*341|0)+-1|0)|0)==(g+d|0)){qc(N);d=f[K>>2]|0;g=f[J>>2]|0;b=f[M>>2]|0;h=f[L>>2]|0}d=g+d|0;if((b|0)==(h|0))d=0;else d=(f[h+(((d>>>0)/341|0)<<2)>>2]|0)+(((d>>>0)%341|0)*12|0)|0;f[d>>2]=k;f[d+4>>2]=e;f[d+8>>2]=m;d=(f[J>>2]|0)+1|0;f[J>>2]=d}}while(0);if((n|0)==15){n=0;d=f[J>>2]|0}if(!d)break a}if((n|0)==27)Ga(17720,17758,223,17846);else if((n|0)==36)Ga(17861,17885,48,17934);else if((n|0)==38)Ga(17963,17885,49,17934)}while(0);d=f[L>>2]|0;e=f[K>>2]|0;h=d+(((e>>>0)/341|0)<<2)|0;g=f[M>>2]|0;i=g;j=d;if((g|0)==(d|0)){b=0;e=0}else{e=(f[h>>2]|0)+(((e>>>0)%341|0)*12|0)|0;b=e}d:while(1){do{if((e|0)==(b|0))break d;e=e+12|0}while((e-(f[h>>2]|0)|0)!=4092);e=h+4|0;h=e;e=f[e>>2]|0}f[J>>2]=0;e=i-j>>2;if(e>>>0>2)do{ar(f[d>>2]|0);d=(f[L>>2]|0)+4|0;f[L>>2]=d;g=f[M>>2]|0;e=g-d>>2}while(e>>>0>2);switch(e|0){case 1:{e=170;n=85;break}case 2:{e=341;n=85;break}default:{}}if((n|0)==85)f[K>>2]=e;if((d|0)!=(g|0)){do{ar(f[d>>2]|0);d=d+4|0}while((d|0)!=(g|0));d=f[L>>2]|0;e=f[M>>2]|0;if((e|0)!=(d|0))f[M>>2]=e+(~((e+-4-d|0)>>>2)<<2)}d=f[N>>2]|0;if(!d){u=O;return}ar(d);u=O;return}function nb(a,c,d){a=a|0;c=c|0;d=d|0;var e=0,g=0,h=0,i=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,v=0,w=0,x=0,y=0,z=0,A=0,B=0,C=0,D=0,E=0,F=0,G=0,H=0,I=0,J=0,K=0;K=u;u=u+32|0;J=K+8|0;j=K;E=a+8|0;D=f[E>>2]|0;f[j>>2]=0;Oj(J,D,j);D=a+624|0;i=f[D>>2]|0;e=f[i>>2]|0;h=i+4|0;if(!e)e=i+8|0;else{g=f[h>>2]|0;if((g|0)!=(e|0))f[h>>2]=g+(~((g+-4-e|0)>>>2)<<2);ar(e);e=i+8|0;f[e>>2]=0;f[h>>2]=0;f[i>>2]=0}f[i>>2]=f[J>>2];f[h>>2]=f[J+4>>2];f[e>>2]=f[J+8>>2];C=f[E>>2]|0;f[j>>2]=0;Oj(J,C,j);C=a+636|0;i=f[C>>2]|0;e=f[i>>2]|0;h=i+4|0;if(!e)e=i+8|0;else{g=f[h>>2]|0;if((g|0)!=(e|0))f[h>>2]=g+(~((g+-4-e|0)>>>2)<<2);ar(e);e=i+8|0;f[e>>2]=0;f[h>>2]=0;f[i>>2]=0}f[i>>2]=f[J>>2];f[h>>2]=f[J+4>>2];f[e>>2]=f[J+8>>2];f[J>>2]=0;f[J+4>>2]=0;f[J+8>>2]=0;f[J+12>>2]=0;f[J+16>>2]=0;f[J+20>>2]=0;I=J+8|0;H=J+4|0;G=J+16|0;F=J+20|0;qc(J);e=f[H>>2]|0;g=(f[F>>2]|0)+(f[G>>2]|0)|0;if((f[I>>2]|0)==(e|0))e=0;else e=(f[e+(((g>>>0)/341|0)<<2)>>2]|0)+(((g>>>0)%341|0)*12|0)|0;f[e>>2]=c;f[e+4>>2]=0;f[e+8>>2]=0;e=(f[F>>2]|0)+1|0;f[F>>2]=e;a:do if(e|0){v=a+612|0;B=a+600|0;t=d+4|0;w=a+604|0;A=a+556|0;y=a+552|0;z=a+596|0;x=a+592|0;b:while(1){q=f[G>>2]|0;g=e+-1|0;m=q+g|0;r=f[H>>2]|0;p=f[r+(((m>>>0)/341|0)<<2)>>2]|0;m=(m>>>0)%341|0;s=f[p+(m*12|0)>>2]|0;h=f[p+(m*12|0)+4>>2]|0;m=f[p+(m*12|0)+8>>2]|0;f[F>>2]=g;g=f[I>>2]|0;r=g-r>>2;if((1-e-q+((r|0)==0?0:(r*341|0)+-1|0)|0)>>>0>681){ar(f[g+-4>>2]|0);f[I>>2]=(f[I>>2]|0)+-4}i=f[D>>2]|0;r=i+(m*12|0)|0;g=((f[E>>2]|0)+-1|0)==(h|0)?0:h+1|0;q=(f[C>>2]|0)+(m*12|0)|0;e=(f[a>>2]|0)-(f[(f[q>>2]|0)+(g<<2)>>2]|0)|0;c:do if(!e)if((s|0)>0){j=i+(m*12|0)+4|0;c=f[d>>2]|0;m=c+84|0;i=c+68|0;k=c+40|0;c=c+64|0;g=f[t>>2]|0;l=0;while(1){e=g;g=g+1|0;f[t>>2]=g;h=f[r>>2]|0;if(((f[j>>2]|0)-h|0)!=12){o=23;break b}if(!(b[m>>0]|0))e=f[(f[i>>2]|0)+(e<<2)>>2]|0;p=k;q=f[p>>2]|0;p=kn(q|0,f[p+4>>2]|0,e|0,((e|0)<0)<<31>>31|0)|0;Mg((f[f[c>>2]>>2]|0)+p|0,h|0,q|0)|0;l=l+1|0;if((l|0)>=(s|0)){o=15;break}}}else o=15;else{if(!s){o=28;break b}if(s>>>0<3){i=f[v>>2]|0;f[i>>2]=g;e=f[E>>2]|0;if(e>>>0>1){h=1;do{g=(g|0)==(e+-1|0)?0:g+1|0;f[i+(h<<2)>>2]=g;h=h+1|0;e=f[E>>2]|0}while(h>>>0>>0)}g=0;while(1){if(!e)i=f[B>>2]|0;else{k=f[v>>2]|0;l=f[B>>2]|0;m=f[q>>2]|0;i=l;o=0;do{n=k+(o<<2)|0;f[l+(f[n>>2]<<2)>>2]=0;e=f[n>>2]|0;p=(f[a>>2]|0)-(f[m+(e<<2)>>2]|0)|0;do if(p|0){h=l+(e<<2)|0;if((p|0)>=33){o=42;break b}if((p|0)<=0){o=44;break b}j=f[A>>2]|0;c=32-j|0;e=f[y>>2]|0;j=f[e>>2]<(c|0)){p=p-c|0;f[A>>2]=p;e=e+4|0;f[y>>2]=e;p=32-p|0;f[h>>2]=(f[e>>2]|0)>>>p|j>>>(p-c|0);break}f[h>>2]=j>>>(32-p|0);p=(f[A>>2]|0)+p|0;f[A>>2]=p;if((p|0)!=32)break;f[y>>2]=e+4;f[A>>2]=0}while(0);n=f[n>>2]|0;p=l+(n<<2)|0;f[p>>2]=f[p>>2]|f[(f[r>>2]|0)+(n<<2)>>2];o=o+1|0}while(o>>>0<(f[E>>2]|0)>>>0)}h=f[d>>2]|0;e=f[t>>2]|0;f[t>>2]=e+1;if(((f[w>>2]|0)-i|0)!=12){o=37;break b}if(!(b[h+84>>0]|0))e=f[(f[h+68>>2]|0)+(e<<2)>>2]|0;o=h+40|0;p=f[o>>2]|0;o=kn(p|0,f[o+4>>2]|0,e|0,((e|0)<0)<<31>>31|0)|0;Mg((f[f[h+64>>2]>>2]|0)+o|0,i|0,p|0)|0;g=g+1|0;if(g>>>0>=s>>>0){o=15;break c}e=f[E>>2]|0}}c=1<>2]|0;e=f[r>>2]|0;j=e;i=f[i+(n*12|0)>>2]|0;if((h|0)!=(e|0)){h=h-e>>2;e=0;do{f[i+(e<<2)>>2]=f[j+(e<<2)>>2];e=e+1|0}while(e>>>0>>0)}i=i+(g<<2)|0;f[i>>2]=(f[i>>2]|0)+c;i=(_(s|0)|0)^31;if(!i)e=0;else{h=0;e=0;do{e=(Tk(a+12+(h<<4)|0)|0)&1|e<<1;h=h+1|0}while((h|0)!=(i|0))}j=(s>>>1)-e|0;h=s-j|0;if((j|0)==(h|0)){k=j;l=j}else{s=f[z>>2]|0;e=f[x>>2]|0;i=(f[e>>2]&1<<31-s|0)!=0;s=s+1|0;f[z>>2]=s;if((s|0)==32){f[x>>2]=e+4;f[z>>2]=0}k=i?j:h;l=i?h:j}e=f[C>>2]|0;c=f[e+(m*12|0)>>2]|0;h=c+(g<<2)|0;f[h>>2]=(f[h>>2]|0)+1;h=f[e+(m*12|0)+4>>2]|0;i=c;if((h|0)!=(i|0)){j=f[e+(n*12|0)>>2]|0;h=h-i>>2;e=0;do{f[j+(e<<2)>>2]=f[c+(e<<2)>>2];e=e+1|0}while(e>>>0>>0)}if(k|0){j=f[I>>2]|0;i=f[H>>2]|0;s=j-i>>2;e=f[G>>2]|0;h=f[F>>2]|0;if((((s|0)==0?0:(s*341|0)+-1|0)|0)==(h+e|0)){qc(J);e=f[G>>2]|0;h=f[F>>2]|0;j=f[I>>2]|0;i=f[H>>2]|0}e=h+e|0;if((j|0)==(i|0))e=0;else e=(f[i+(((e>>>0)/341|0)<<2)>>2]|0)+(((e>>>0)%341|0)*12|0)|0;f[e>>2]=k;f[e+4>>2]=g;f[e+8>>2]=m;f[F>>2]=(f[F>>2]|0)+1}if(!l)o=15;else{j=f[I>>2]|0;i=f[H>>2]|0;s=j-i>>2;e=f[G>>2]|0;h=f[F>>2]|0;if((((s|0)==0?0:(s*341|0)+-1|0)|0)==(h+e|0)){qc(J);e=f[G>>2]|0;h=f[F>>2]|0;j=f[I>>2]|0;i=f[H>>2]|0}e=h+e|0;if((j|0)==(i|0))e=0;else e=(f[i+(((e>>>0)/341|0)<<2)>>2]|0)+(((e>>>0)%341|0)*12|0)|0;f[e>>2]=l;f[e+4>>2]=g;f[e+8>>2]=n;e=(f[F>>2]|0)+1|0;f[F>>2]=e}}while(0);if((o|0)==15){o=0;e=f[F>>2]|0}if(!e)break a}if((o|0)==23)Ga(17368,17398,51,17461);else if((o|0)==28)Ga(17720,17758,223,17846);else if((o|0)==37)Ga(17368,17398,51,17461);else if((o|0)==42)Ga(17861,17885,48,17934);else if((o|0)==44)Ga(17963,17885,49,17934)}while(0);e=f[H>>2]|0;g=f[G>>2]|0;i=e+(((g>>>0)/341|0)<<2)|0;h=f[I>>2]|0;c=h;k=e;if((h|0)==(e|0)){j=0;g=0}else{g=(f[i>>2]|0)+(((g>>>0)%341|0)*12|0)|0;j=g}d:while(1){do{if((g|0)==(j|0))break d;g=g+12|0}while((g-(f[i>>2]|0)|0)!=4092);g=i+4|0;i=g;g=f[g>>2]|0}f[F>>2]=0;g=c-k>>2;if(g>>>0>2)do{ar(f[e>>2]|0);e=(f[H>>2]|0)+4|0;f[H>>2]=e;h=f[I>>2]|0;g=h-e>>2}while(g>>>0>2);switch(g|0){case 1:{g=170;o=88;break}case 2:{g=341;o=88;break}default:{}}if((o|0)==88)f[G>>2]=g;if((e|0)!=(h|0)){do{ar(f[e>>2]|0);e=e+4|0}while((e|0)!=(h|0));e=f[H>>2]|0;g=f[I>>2]|0;if((g|0)!=(e|0))f[I>>2]=g+(~((g+-4-e|0)>>>2)<<2)}e=f[J>>2]|0;if(!e){u=K;return}ar(e);u=K;return}function ob(a,b,c){a=a|0;b=b|0;c=c|0;var d=0,e=0,g=0,h=0,i=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,v=0,w=0,x=0,y=0,z=0,A=0,B=0,C=0,D=0,E=0,F=0,G=0,H=0,I=0,J=0,K=0,L=0,M=0,N=0,O=0;O=u;u=u+48|0;I=O+24|0;N=O;H=a+8|0;G=f[H>>2]|0;f[N>>2]=0;Oj(I,G,N);G=a+624|0;h=f[G>>2]|0;d=f[h>>2]|0;g=h+4|0;if(!d)d=h+8|0;else{e=f[g>>2]|0;if((e|0)!=(d|0))f[g>>2]=e+(~((e+-4-d|0)>>>2)<<2);ar(d);d=h+8|0;f[d>>2]=0;f[g>>2]=0;f[h>>2]=0}f[h>>2]=f[I>>2];f[g>>2]=f[I+4>>2];f[d>>2]=f[I+8>>2];F=f[H>>2]|0;f[N>>2]=0;Oj(I,F,N);F=a+636|0;h=f[F>>2]|0;d=f[h>>2]|0;g=h+4|0;if(!d)d=h+8|0;else{e=f[g>>2]|0;if((e|0)!=(d|0))f[g>>2]=e+(~((e+-4-d|0)>>>2)<<2);ar(d);d=h+8|0;f[d>>2]=0;f[g>>2]=0;f[h>>2]=0}f[h>>2]=f[I>>2];f[g>>2]=f[I+4>>2];f[d>>2]=f[I+8>>2];f[N>>2]=0;f[N+4>>2]=0;f[N+8>>2]=0;f[N+12>>2]=0;f[N+16>>2]=0;f[N+20>>2]=0;M=N+8|0;L=N+4|0;K=N+16|0;J=N+20|0;qc(N);d=f[L>>2]|0;e=(f[J>>2]|0)+(f[K>>2]|0)|0;if((f[M>>2]|0)==(d|0))d=0;else d=(f[d+(((e>>>0)/341|0)<<2)>>2]|0)+(((e>>>0)%341|0)*12|0)|0;f[d>>2]=b;f[d+4>>2]=0;f[d+8>>2]=0;d=(f[J>>2]|0)+1|0;f[J>>2]=d;a:do if(d|0){w=a+612|0;v=a+600|0;z=I+4|0;B=I+8|0;E=a+556|0;y=a+552|0;D=a+596|0;x=a+592|0;A=I+4|0;C=I+8|0;b:while(1){r=f[K>>2]|0;e=d+-1|0;l=r+e|0;s=f[L>>2]|0;q=f[s+(((l>>>0)/341|0)<<2)>>2]|0;l=(l>>>0)%341|0;t=f[q+(l*12|0)>>2]|0;g=f[q+(l*12|0)+4>>2]|0;l=f[q+(l*12|0)+8>>2]|0;f[J>>2]=e;e=f[M>>2]|0;s=e-s>>2;if((1-d-r+((s|0)==0?0:(s*341|0)+-1|0)|0)>>>0>681){ar(f[e+-4>>2]|0);f[M>>2]=(f[M>>2]|0)+-4}h=f[G>>2]|0;s=h+(l*12|0)|0;r=(f[F>>2]|0)+(l*12|0)|0;e=un(a,t,r,g)|0;d=(f[a>>2]|0)-(f[(f[r>>2]|0)+(e<<2)>>2]|0)|0;c:do if(!d)if((t|0)>0){i=f[c>>2]|0;g=i+4|0;h=i+8|0;b=0;do{e=f[s>>2]|0;d=f[e>>2]|0;f[I>>2]=d;f[A>>2]=f[e+4>>2];f[C>>2]=f[e+8>>2];e=f[g>>2]|0;if(e>>>0<(f[h>>2]|0)>>>0){f[e>>2]=d;f[e+4>>2]=f[A>>2];f[e+8>>2]=f[C>>2];f[g>>2]=e+12}else mh(i,I);b=b+1|0}while((b|0)<(t|0));n=15}else n=15;else{if(!t){n=27;break b}if(t>>>0<3){h=f[w>>2]|0;f[h>>2]=e;d=f[H>>2]|0;if(d>>>0>1){g=1;do{e=(e|0)==(d+-1|0)?0:e+1|0;f[h+(g<<2)>>2]=e;g=g+1|0;d=f[H>>2]|0}while(g>>>0>>0)}q=f[c>>2]|0;o=q+4|0;p=q+8|0;e=0;while(1){if(d|0){i=f[w>>2]|0;j=f[v>>2]|0;k=f[r>>2]|0;m=0;do{l=i+(m<<2)|0;f[j+(f[l>>2]<<2)>>2]=0;d=f[l>>2]|0;n=(f[a>>2]|0)-(f[k+(d<<2)>>2]|0)|0;do if(n|0){g=j+(d<<2)|0;if((n|0)>=33){n=36;break b}if((n|0)<=0){n=38;break b}h=f[E>>2]|0;b=32-h|0;d=f[y>>2]|0;h=f[d>>2]<(b|0)){n=n-b|0;f[E>>2]=n;d=d+4|0;f[y>>2]=d;n=32-n|0;f[g>>2]=(f[d>>2]|0)>>>n|h>>>(n-b|0);break}f[g>>2]=h>>>(32-n|0);n=(f[E>>2]|0)+n|0;f[E>>2]=n;if((n|0)!=32)break;f[y>>2]=d+4;f[E>>2]=0}while(0);l=f[l>>2]|0;n=j+(l<<2)|0;f[n>>2]=f[n>>2]|f[(f[s>>2]|0)+(l<<2)>>2];m=m+1|0}while(m>>>0<(f[H>>2]|0)>>>0)}g=f[v>>2]|0;d=f[g>>2]|0;f[I>>2]=d;f[z>>2]=f[g+4>>2];f[B>>2]=f[g+8>>2];g=f[o>>2]|0;if(g>>>0<(f[p>>2]|0)>>>0){f[g>>2]=d;f[g+4>>2]=f[z>>2];f[g+8>>2]=f[B>>2];f[o>>2]=g+12}else mh(q,I);e=e+1|0;if(e>>>0>=t>>>0){n=15;break c}d=f[H>>2]|0}}i=1<>2]|0;d=f[s>>2]|0;b=d;h=f[(f[G>>2]|0)+(m*12|0)>>2]|0;if((g|0)!=(d|0)){g=g-d>>2;d=0;do{f[h+(d<<2)>>2]=f[b+(d<<2)>>2];d=d+1|0}while(d>>>0>>0)}h=h+(e<<2)|0;f[h>>2]=(f[h>>2]|0)+i;h=(_(t|0)|0)^31;if(!h)d=0;else{g=0;d=0;do{d=(Tk(a+12+(g<<4)|0)|0)&1|d<<1;g=g+1|0}while((g|0)!=(h|0))}b=(t>>>1)-d|0;g=t-b|0;if((b|0)==(g|0)){j=b;k=b}else{t=f[D>>2]|0;d=f[x>>2]|0;h=(f[d>>2]&1<<31-t|0)!=0;t=t+1|0;f[D>>2]=t;if((t|0)==32){f[x>>2]=d+4;f[D>>2]=0}j=h?b:g;k=h?g:b}d=f[F>>2]|0;i=f[d+(l*12|0)>>2]|0;g=i+(e<<2)|0;f[g>>2]=(f[g>>2]|0)+1;g=f[d+(l*12|0)+4>>2]|0;h=i;if((g|0)!=(h|0)){b=f[d+(m*12|0)>>2]|0;g=g-h>>2;d=0;do{f[b+(d<<2)>>2]=f[i+(d<<2)>>2];d=d+1|0}while(d>>>0>>0)}if(j|0){b=f[M>>2]|0;g=f[L>>2]|0;t=b-g>>2;d=f[K>>2]|0;h=f[J>>2]|0;if((((t|0)==0?0:(t*341|0)+-1|0)|0)==(h+d|0)){qc(N);d=f[K>>2]|0;h=f[J>>2]|0;b=f[M>>2]|0;g=f[L>>2]|0}d=h+d|0;if((b|0)==(g|0))d=0;else d=(f[g+(((d>>>0)/341|0)<<2)>>2]|0)+(((d>>>0)%341|0)*12|0)|0;f[d>>2]=j;f[d+4>>2]=e;f[d+8>>2]=l;f[J>>2]=(f[J>>2]|0)+1}if(!k)n=15;else{b=f[M>>2]|0;h=f[L>>2]|0;t=b-h>>2;d=f[K>>2]|0;g=f[J>>2]|0;if((((t|0)==0?0:(t*341|0)+-1|0)|0)==(g+d|0)){qc(N);d=f[K>>2]|0;g=f[J>>2]|0;b=f[M>>2]|0;h=f[L>>2]|0}d=g+d|0;if((b|0)==(h|0))d=0;else d=(f[h+(((d>>>0)/341|0)<<2)>>2]|0)+(((d>>>0)%341|0)*12|0)|0;f[d>>2]=k;f[d+4>>2]=e;f[d+8>>2]=m;d=(f[J>>2]|0)+1|0;f[J>>2]=d}}while(0);if((n|0)==15){n=0;d=f[J>>2]|0}if(!d)break a}if((n|0)==27)Ga(17720,17758,223,17846);else if((n|0)==36)Ga(17861,17885,48,17934);else if((n|0)==38)Ga(17963,17885,49,17934)}while(0);d=f[L>>2]|0;e=f[K>>2]|0;h=d+(((e>>>0)/341|0)<<2)|0;g=f[M>>2]|0;i=g;j=d;if((g|0)==(d|0)){b=0;e=0}else{e=(f[h>>2]|0)+(((e>>>0)%341|0)*12|0)|0;b=e}d:while(1){do{if((e|0)==(b|0))break d;e=e+12|0}while((e-(f[h>>2]|0)|0)!=4092);e=h+4|0;h=e;e=f[e>>2]|0}f[J>>2]=0;e=i-j>>2;if(e>>>0>2)do{ar(f[d>>2]|0);d=(f[L>>2]|0)+4|0;f[L>>2]=d;g=f[M>>2]|0;e=g-d>>2}while(e>>>0>2);switch(e|0){case 1:{e=170;n=85;break}case 2:{e=341;n=85;break}default:{}}if((n|0)==85)f[K>>2]=e;if((d|0)!=(g|0)){do{ar(f[d>>2]|0);d=d+4|0}while((d|0)!=(g|0));d=f[L>>2]|0;e=f[M>>2]|0;if((e|0)!=(d|0))f[M>>2]=e+(~((e+-4-d|0)>>>2)<<2)}d=f[N>>2]|0;if(!d){u=O;return}ar(d);u=O;return}function pb(a){a=a|0;var c=0,d=0,e=0,g=La,h=La,i=0,j=0,k=0,l=0,m=0,o=0,p=0,q=0,r=0,s=0,t=0,v=0,w=0,x=0,y=0,z=0,A=0,B=0,C=0,D=0,E=0,F=0,G=0,H=0,I=0,J=0,K=0,L=0,M=0,N=0,O=0,P=0,Q=0,R=0,S=0,T=0,U=La;T=u;u=u+64|0;S=T+28|0;Q=T+16|0;O=T+4|0;L=T;R=a;M=a+68|0;c=f[M>>2]|0;f[S>>2]=0;f[S+4>>2]=0;f[S+8>>2]=0;f[S+12>>2]=0;f[S+16>>2]=R;H=S+20|0;n[H>>2]=$(1.0);f[S+24>>2]=R;Gh(S,c);c=f[M>>2]|0;f[Q>>2]=0;R=Q+4|0;f[R>>2]=0;f[Q+8>>2]=0;do if(c|0)if(c>>>0>1073741823){Lp(Q);T=Ia(4)|0;Eq(T);sa(T|0,1344,125)}else{G=c<<2;F=ln(G)|0;f[Q>>2]=F;P=F+(c<<2)|0;f[Q+8>>2]=P;ej(F|0,0,G|0)|0;f[R>>2]=P;break}while(0);f[O>>2]=0;P=O+4|0;f[P>>2]=0;f[O+8>>2]=0;f[L>>2]=0;a:do if((c|0)>0){F=S+16|0;C=S+4|0;E=S+12|0;B=S+8|0;D=O+8|0;G=S+24|0;c=0;z=0;b:while(1){w=f[F>>2]|0;k=f[w+8>>2]|0;w=(f[w+12>>2]|0)-k|0;v=(w|0)>0;if(v){i=k;l=w>>>2;d=0;j=0;do{e=f[i+(j<<2)>>2]|0;if(!(b[e+84>>0]|0))e=f[(f[e+68>>2]|0)+(c<<2)>>2]|0;else e=c;d=e<<2^d<<1;j=j+1|0}while((j|0)<(l|0))}else d=0;x=f[C>>2]|0;y=(x|0)==0;c:do if(!y){q=x+-1|0;e=(q&x|0)==0;if(e)t=q&d;else t=(d>>>0)%(x>>>0)|0;d=f[(f[S>>2]|0)+(t<<2)>>2]|0;if((d|0)!=0?(K=f[d>>2]|0,(K|0)!=0):0){r=f[G>>2]|0;s=r+8|0;r=r+12|0;d:do if(e){d=K;while(1){if((f[d+4>>2]&q|0)!=(t|0)){A=45;break c}p=f[d+8>>2]|0;e=f[s>>2]|0;i=(f[r>>2]|0)-e|0;if((i|0)<=0)break d;o=i>>>2;m=0;while(1){i=f[e+(m<<2)>>2]|0;j=(b[i+84>>0]|0)==0;if(j)l=f[(f[i+68>>2]|0)+(p<<2)>>2]|0;else l=p;if((o|0)<=(m|0)){A=39;break b}if(j)i=f[(f[i+68>>2]|0)+(c<<2)>>2]|0;else i=c;m=m+1|0;if((l|0)!=(i|0))break;if((m|0)>=(o|0)){A=43;break d}}d=f[d>>2]|0;if(!d){A=45;break c}}}else{d=K;while(1){if((((f[d+4>>2]|0)>>>0)%(x>>>0)|0|0)!=(t|0)){A=45;break c}p=f[d+8>>2]|0;e=f[s>>2]|0;i=(f[r>>2]|0)-e|0;if((i|0)<=0)break d;o=i>>>2;m=0;while(1){i=f[e+(m<<2)>>2]|0;j=(b[i+84>>0]|0)==0;if(j)l=f[(f[i+68>>2]|0)+(p<<2)>>2]|0;else l=p;if((o|0)<=(m|0)){A=39;break b}if(j)i=f[(f[i+68>>2]|0)+(c<<2)>>2]|0;else i=c;m=m+1|0;if((l|0)!=(i|0))break;if((m|0)>=(o|0)){A=43;break d}}d=f[d>>2]|0;if(!d){A=45;break c}}}while(0);if((A|0)==43){A=0;if(!d){A=45;break}}f[(f[Q>>2]|0)+(c<<2)>>2]=f[d+12>>2];e=z}else A=45}else A=45;while(0);do if((A|0)==45){A=0;if(v){j=w>>>2;d=0;i=0;do{e=f[k+(i<<2)>>2]|0;if(!(b[e+84>>0]|0))e=f[(f[e+68>>2]|0)+(c<<2)>>2]|0;else e=c;d=e<<2^d<<1;i=i+1|0}while((i|0)<(j|0));t=d}else t=0;e:do if(!y){p=x+-1|0;e=(p&x|0)==0;if(e)s=p&t;else s=(t>>>0)%(x>>>0)|0;d=f[(f[S>>2]|0)+(s<<2)>>2]|0;if((d|0)!=0?(J=f[d>>2]|0,(J|0)!=0):0){q=f[G>>2]|0;r=q+8|0;q=q+12|0;if(e){m=J;while(1){if((f[m+4>>2]&p|0)!=(s|0)){d=s;A=80;break e}o=f[m+8>>2]|0;d=f[r>>2]|0;e=(f[q>>2]|0)-d|0;if((e|0)<=0)break e;l=e>>>2;k=0;while(1){e=f[d+(k<<2)>>2]|0;i=(b[e+84>>0]|0)==0;if(i)j=f[(f[e+68>>2]|0)+(o<<2)>>2]|0;else j=o;if((l|0)<=(k|0)){A=76;break b}if(i)e=f[(f[e+68>>2]|0)+(c<<2)>>2]|0;else e=c;k=k+1|0;if((j|0)!=(e|0))break;if((k|0)>=(l|0))break e}m=f[m>>2]|0;if(!m){d=s;A=80;break}}}else{m=J;while(1){if((((f[m+4>>2]|0)>>>0)%(x>>>0)|0|0)!=(s|0)){d=s;A=80;break e}o=f[m+8>>2]|0;d=f[r>>2]|0;e=(f[q>>2]|0)-d|0;if((e|0)<=0)break e;l=e>>>2;k=0;while(1){e=f[d+(k<<2)>>2]|0;i=(b[e+84>>0]|0)==0;if(i)j=f[(f[e+68>>2]|0)+(o<<2)>>2]|0;else j=o;if((l|0)<=(k|0)){A=76;break b}if(i)e=f[(f[e+68>>2]|0)+(c<<2)>>2]|0;else e=c;k=k+1|0;if((j|0)!=(e|0))break;if((k|0)>=(l|0))break e}m=f[m>>2]|0;if(!m){d=s;A=80;break}}}}else{d=s;A=80}}else{d=0;A=80}while(0);if((A|0)==80){A=0;i=ln(16)|0;f[i+8>>2]=c;f[i+12>>2]=z;f[i+4>>2]=t;f[i>>2]=0;h=$(((f[E>>2]|0)+1|0)>>>0);U=$(x>>>0);g=$(n[H>>2]);do if(y|h>$(U*g)){c=(x>>>0<3|(x+-1&x|0)!=0)&1|x<<1;d=~~$(W($(h/g)))>>>0;Gh(S,c>>>0>>0?d:c);c=f[C>>2]|0;d=c+-1|0;if(!(d&c)){e=c;c=d&t;break}else{e=c;c=(t>>>0)%(c>>>0)|0;break}}else{e=x;c=d}while(0);d=(f[S>>2]|0)+(c<<2)|0;c=f[d>>2]|0;if(!c){f[i>>2]=f[B>>2];f[B>>2]=i;f[d>>2]=B;c=f[i>>2]|0;if(c|0){c=f[c+4>>2]|0;d=e+-1|0;if(!(d&e))c=c&d;else c=(c>>>0)%(e>>>0)|0;c=(f[S>>2]|0)+(c<<2)|0;A=91}}else{f[i>>2]=f[c>>2];A=91}if((A|0)==91){A=0;f[c>>2]=i}f[E>>2]=(f[E>>2]|0)+1;c=f[L>>2]|0}e=z+1|0;f[(f[Q>>2]|0)+(c<<2)>>2]=z;c=f[P>>2]|0;if((c|0)==(f[D>>2]|0)){Ii(O,L);break}else{f[c>>2]=f[L>>2];f[P>>2]=c+4;break}}while(0);c=(f[L>>2]|0)+1|0;f[L>>2]=c;d=f[M>>2]|0;if((c|0)>=(d|0)){I=d;N=e;break a}else z=e}if((A|0)==39)Ga(17252,17204,72,17242);else if((A|0)==76)Ga(17252,17204,72,17242)}else{I=0;N=0}while(0);if((N|0)!=(I|0)){Ta[f[(f[a>>2]|0)+24>>2]&7](a,Q,O);f[M>>2]=N}c=f[O>>2]|0;if(c|0){d=f[P>>2]|0;if((d|0)!=(c|0))f[P>>2]=d+(~((d+-4-c|0)>>>2)<<2);ar(c)}c=f[Q>>2]|0;if(c|0){d=f[R>>2]|0;if((d|0)!=(c|0))f[R>>2]=d+(~((d+-4-c|0)>>>2)<<2);ar(c)}c=f[S+8>>2]|0;if(c|0)do{R=c;c=f[c>>2]|0;ar(R)}while((c|0)!=0);c=f[S>>2]|0;f[S>>2]=0;if(!c){u=T;return}ar(c);u=T;return}function qb(a,b,c){a=a|0;b=b|0;c=c|0;var d=0,e=0,g=0,h=0,i=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,v=0,w=0,x=0,y=0,z=0,A=0,B=0,C=0,D=0,E=0,F=0,G=0,H=0,I=0,J=0,K=0,L=0,M=0,N=0,O=0;O=u;u=u+48|0;I=O+24|0;N=O;H=a+8|0;G=f[H>>2]|0;f[N>>2]=0;Oj(I,G,N);G=a+624|0;h=f[G>>2]|0;d=f[h>>2]|0;g=h+4|0;if(!d)d=h+8|0;else{e=f[g>>2]|0;if((e|0)!=(d|0))f[g>>2]=e+(~((e+-4-d|0)>>>2)<<2);ar(d);d=h+8|0;f[d>>2]=0;f[g>>2]=0;f[h>>2]=0}f[h>>2]=f[I>>2];f[g>>2]=f[I+4>>2];f[d>>2]=f[I+8>>2];F=f[H>>2]|0;f[N>>2]=0;Oj(I,F,N);F=a+636|0;h=f[F>>2]|0;d=f[h>>2]|0;g=h+4|0;if(!d)d=h+8|0;else{e=f[g>>2]|0;if((e|0)!=(d|0))f[g>>2]=e+(~((e+-4-d|0)>>>2)<<2);ar(d);d=h+8|0;f[d>>2]=0;f[g>>2]=0;f[h>>2]=0}f[h>>2]=f[I>>2];f[g>>2]=f[I+4>>2];f[d>>2]=f[I+8>>2];f[N>>2]=0;f[N+4>>2]=0;f[N+8>>2]=0;f[N+12>>2]=0;f[N+16>>2]=0;f[N+20>>2]=0;M=N+8|0;L=N+4|0;K=N+16|0;J=N+20|0;qc(N);d=f[L>>2]|0;e=(f[J>>2]|0)+(f[K>>2]|0)|0;if((f[M>>2]|0)==(d|0))d=0;else d=(f[d+(((e>>>0)/341|0)<<2)>>2]|0)+(((e>>>0)%341|0)*12|0)|0;f[d>>2]=b;f[d+4>>2]=0;f[d+8>>2]=0;d=(f[J>>2]|0)+1|0;f[J>>2]=d;a:do if(d|0){w=a+612|0;v=a+600|0;z=I+4|0;B=I+8|0;E=a+556|0;y=a+552|0;D=a+596|0;x=a+592|0;A=I+4|0;C=I+8|0;b:while(1){r=f[K>>2]|0;e=d+-1|0;l=r+e|0;s=f[L>>2]|0;q=f[s+(((l>>>0)/341|0)<<2)>>2]|0;l=(l>>>0)%341|0;t=f[q+(l*12|0)>>2]|0;g=f[q+(l*12|0)+4>>2]|0;l=f[q+(l*12|0)+8>>2]|0;f[J>>2]=e;e=f[M>>2]|0;s=e-s>>2;if((1-d-r+((s|0)==0?0:(s*341|0)+-1|0)|0)>>>0>681){ar(f[e+-4>>2]|0);f[M>>2]=(f[M>>2]|0)+-4}h=f[G>>2]|0;s=h+(l*12|0)|0;e=((f[H>>2]|0)+-1|0)==(g|0)?0:g+1|0;r=(f[F>>2]|0)+(l*12|0)|0;d=(f[a>>2]|0)-(f[(f[r>>2]|0)+(e<<2)>>2]|0)|0;c:do if(!d)if((t|0)>0){i=f[c>>2]|0;g=i+4|0;h=i+8|0;b=0;do{e=f[s>>2]|0;d=f[e>>2]|0;f[I>>2]=d;f[A>>2]=f[e+4>>2];f[C>>2]=f[e+8>>2];e=f[g>>2]|0;if(e>>>0<(f[h>>2]|0)>>>0){f[e>>2]=d;f[e+4>>2]=f[A>>2];f[e+8>>2]=f[C>>2];f[g>>2]=e+12}else mh(i,I);b=b+1|0}while((b|0)<(t|0));n=15}else n=15;else{if(!t){n=27;break b}if(t>>>0<3){h=f[w>>2]|0;f[h>>2]=e;d=f[H>>2]|0;if(d>>>0>1){g=1;do{e=(e|0)==(d+-1|0)?0:e+1|0;f[h+(g<<2)>>2]=e;g=g+1|0;d=f[H>>2]|0}while(g>>>0>>0)}q=f[c>>2]|0;o=q+4|0;p=q+8|0;e=0;while(1){if(d|0){i=f[w>>2]|0;j=f[v>>2]|0;k=f[r>>2]|0;m=0;do{l=i+(m<<2)|0;f[j+(f[l>>2]<<2)>>2]=0;d=f[l>>2]|0;n=(f[a>>2]|0)-(f[k+(d<<2)>>2]|0)|0;do if(n|0){g=j+(d<<2)|0;if((n|0)>=33){n=36;break b}if((n|0)<=0){n=38;break b}h=f[E>>2]|0;b=32-h|0;d=f[y>>2]|0;h=f[d>>2]<(b|0)){n=n-b|0;f[E>>2]=n;d=d+4|0;f[y>>2]=d;n=32-n|0;f[g>>2]=(f[d>>2]|0)>>>n|h>>>(n-b|0);break}f[g>>2]=h>>>(32-n|0);n=(f[E>>2]|0)+n|0;f[E>>2]=n;if((n|0)!=32)break;f[y>>2]=d+4;f[E>>2]=0}while(0);l=f[l>>2]|0;n=j+(l<<2)|0;f[n>>2]=f[n>>2]|f[(f[s>>2]|0)+(l<<2)>>2];m=m+1|0}while(m>>>0<(f[H>>2]|0)>>>0)}g=f[v>>2]|0;d=f[g>>2]|0;f[I>>2]=d;f[z>>2]=f[g+4>>2];f[B>>2]=f[g+8>>2];g=f[o>>2]|0;if(g>>>0<(f[p>>2]|0)>>>0){f[g>>2]=d;f[g+4>>2]=f[z>>2];f[g+8>>2]=f[B>>2];f[o>>2]=g+12}else mh(q,I);e=e+1|0;if(e>>>0>=t>>>0){n=15;break c}d=f[H>>2]|0}}i=1<>2]|0;d=f[s>>2]|0;b=d;h=f[h+(m*12|0)>>2]|0;if((g|0)!=(d|0)){g=g-d>>2;d=0;do{f[h+(d<<2)>>2]=f[b+(d<<2)>>2];d=d+1|0}while(d>>>0>>0)}h=h+(e<<2)|0;f[h>>2]=(f[h>>2]|0)+i;h=(_(t|0)|0)^31;if(!h)d=0;else{g=0;d=0;do{d=(Tk(a+12+(g<<4)|0)|0)&1|d<<1;g=g+1|0}while((g|0)!=(h|0))}b=(t>>>1)-d|0;g=t-b|0;if((b|0)==(g|0)){j=b;k=b}else{t=f[D>>2]|0;d=f[x>>2]|0;h=(f[d>>2]&1<<31-t|0)!=0;t=t+1|0;f[D>>2]=t;if((t|0)==32){f[x>>2]=d+4;f[D>>2]=0}j=h?b:g;k=h?g:b}d=f[F>>2]|0;i=f[d+(l*12|0)>>2]|0;g=i+(e<<2)|0;f[g>>2]=(f[g>>2]|0)+1;g=f[d+(l*12|0)+4>>2]|0;h=i;if((g|0)!=(h|0)){b=f[d+(m*12|0)>>2]|0;g=g-h>>2;d=0;do{f[b+(d<<2)>>2]=f[i+(d<<2)>>2];d=d+1|0}while(d>>>0>>0)}if(j|0){b=f[M>>2]|0;g=f[L>>2]|0;t=b-g>>2;d=f[K>>2]|0;h=f[J>>2]|0;if((((t|0)==0?0:(t*341|0)+-1|0)|0)==(h+d|0)){qc(N);d=f[K>>2]|0;h=f[J>>2]|0;b=f[M>>2]|0;g=f[L>>2]|0}d=h+d|0;if((b|0)==(g|0))d=0;else d=(f[g+(((d>>>0)/341|0)<<2)>>2]|0)+(((d>>>0)%341|0)*12|0)|0;f[d>>2]=j;f[d+4>>2]=e;f[d+8>>2]=l;f[J>>2]=(f[J>>2]|0)+1}if(!k)n=15;else{b=f[M>>2]|0;h=f[L>>2]|0;t=b-h>>2;d=f[K>>2]|0;g=f[J>>2]|0;if((((t|0)==0?0:(t*341|0)+-1|0)|0)==(g+d|0)){qc(N);d=f[K>>2]|0;g=f[J>>2]|0;b=f[M>>2]|0;h=f[L>>2]|0}d=g+d|0;if((b|0)==(h|0))d=0;else d=(f[h+(((d>>>0)/341|0)<<2)>>2]|0)+(((d>>>0)%341|0)*12|0)|0;f[d>>2]=k;f[d+4>>2]=e;f[d+8>>2]=m;d=(f[J>>2]|0)+1|0;f[J>>2]=d}}while(0);if((n|0)==15){n=0;d=f[J>>2]|0}if(!d)break a}if((n|0)==27)Ga(17720,17758,223,17846);else if((n|0)==36)Ga(17861,17885,48,17934);else if((n|0)==38)Ga(17963,17885,49,17934)}while(0);d=f[L>>2]|0;e=f[K>>2]|0;h=d+(((e>>>0)/341|0)<<2)|0;g=f[M>>2]|0;i=g;j=d;if((g|0)==(d|0)){b=0;e=0}else{e=(f[h>>2]|0)+(((e>>>0)%341|0)*12|0)|0;b=e}d:while(1){do{if((e|0)==(b|0))break d;e=e+12|0}while((e-(f[h>>2]|0)|0)!=4092);e=h+4|0;h=e;e=f[e>>2]|0}f[J>>2]=0;e=i-j>>2;if(e>>>0>2)do{ar(f[d>>2]|0);d=(f[L>>2]|0)+4|0;f[L>>2]=d;g=f[M>>2]|0;e=g-d>>2}while(e>>>0>2);switch(e|0){case 1:{e=170;n=85;break}case 2:{e=341;n=85;break}default:{}}if((n|0)==85)f[K>>2]=e;if((d|0)!=(g|0)){do{ar(f[d>>2]|0);d=d+4|0}while((d|0)!=(g|0));d=f[L>>2]|0;e=f[M>>2]|0;if((e|0)!=(d|0))f[M>>2]=e+(~((e+-4-d|0)>>>2)<<2)}d=f[N>>2]|0;if(!d){u=O;return}ar(d);u=O;return}function rb(a,b,c,d,e,g){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;g=g|0;var h=0,i=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,v=0,w=0,x=0,y=0,z=0,A=0,B=0,C=0,D=0,E=0,F=0,G=0,H=0,I=0,J=0,K=0,L=0,M=0,N=0,O=0,P=0;P=u;u=u+64|0;O=P+16|0;N=P;I=a+8|0;f[I>>2]=e;i=a+32|0;h=a+36|0;g=f[h>>2]|0;d=f[i>>2]|0;j=g-d>>2;if(j>>>0>=e>>>0){if(j>>>0>e>>>0?(k=d+(e<<2)|0,(g|0)!=(k|0)):0)f[h>>2]=g+(~((g+-4-k|0)>>>2)<<2)}else ui(i,e-j|0);d=O;g=d+48|0;do{f[d>>2]=0;d=d+4|0}while((d|0)<(g|0));f[N>>2]=0;if(!e){d=0;g=0}else{ch(O,e,N);d=f[O+12>>2]|0;g=f[O+16>>2]|0}f[N>>2]=0;h=O+16|0;i=g-d>>2;if(i>>>0>=e>>>0){if(i>>>0>e>>>0?(l=d+(e<<2)|0,(g|0)!=(l|0)):0)f[h>>2]=g+(~((g+-4-l|0)>>>2)<<2)}else ch(O+12|0,e-i|0,N);i=O+24|0;f[N>>2]=0;h=O+28|0;g=f[h>>2]|0;d=f[i>>2]|0;j=g-d>>2;if(j>>>0>=e>>>0){if(j>>>0>e>>>0?(m=d+(e<<2)|0,(g|0)!=(m|0)):0)f[h>>2]=g+(~((g+-4-m|0)>>>2)<<2)}else ch(i,e-j|0,N);i=O+36|0;f[N>>2]=0;h=O+40|0;g=f[h>>2]|0;d=f[i>>2]|0;j=g-d>>2;if(j>>>0>=e>>>0){if(j>>>0>e>>>0?(n=d+(e<<2)|0,(g|0)!=(n|0)):0)f[h>>2]=g+(~((g+-4-n|0)>>>2)<<2)}else ch(i,e-j|0,N);h=f[O>>2]|0;if((f[I>>2]|0)>0){l=a+16|0;i=a+32|0;m=a+12|0;j=0;do{d=f[h+(j<<2)>>2]|0;g=f[l>>2]|0;if((d|0)>(g|0)){k=f[i>>2]|0;f[k+(j<<2)>>2]=g}else{H=f[m>>2]|0;k=f[i>>2]|0;f[k+(j<<2)>>2]=(d|0)<(H|0)?H:d}j=j+1|0;d=f[I>>2]|0}while((j|0)<(d|0));if((d|0)>0){i=a+20|0;h=0;do{d=(f[b+(h<<2)>>2]|0)+(f[k+(h<<2)>>2]|0)|0;g=c+(h<<2)|0;f[g>>2]=d;if((d|0)<=(f[l>>2]|0)){if((d|0)<(f[m>>2]|0)){d=(f[i>>2]|0)+d|0;o=18}}else{d=d-(f[i>>2]|0)|0;o=18}if((o|0)==18){o=0;f[g>>2]=d}h=h+1|0}while((h|0)<(f[I>>2]|0))}}w=f[a+48>>2]|0;x=f[a+52>>2]|0;H=ln(16)|0;f[H>>2]=0;f[H+4>>2]=0;f[H+8>>2]=0;f[H+12>>2]=0;Dk(N,e);C=a+56|0;h=f[C>>2]|0;g=f[h+4>>2]|0;d=f[h>>2]|0;F=g-d|0;G=F>>2;a:do if((F|0)>4){z=w+12|0;B=(e|0)>0;E=a+16|0;A=a+32|0;F=a+12|0;D=a+20|0;y=e<<2;i=h;h=1;while(1){if(g-d>>2>>>0<=h>>>0){Kp(i);d=f[i>>2]|0}s=f[d+(h<<2)>>2]|0;v=(((s>>>0)%3|0|0)==0?2:-1)+s|0;t=(s|v|0)<0;r=(s|0)<0?s:v;g=s;q=1;d=0;b:while(1){do{if((g|0)<=-1){o=62;break b}o=f[O+(d*12|0)>>2]|0;p=f[z>>2]|0;j=f[p+(g<<2)>>2]|0;if((j|0)>=0){k=f[w>>2]|0;l=f[x>>2]|0;n=f[l+(f[k+(j<<2)>>2]<<2)>>2]|0;i=j+1|0;i=((i|0)%3|0|0)==0?j+-2|0:i;if((i|0)<0)i=-1073741824;else i=f[k+(i<<2)>>2]|0;m=f[l+(i<<2)>>2]|0;i=(((j>>>0)%3|0|0)==0?2:-1)+j|0;if((i|0)<0)i=-1073741824;else i=f[k+(i<<2)>>2]|0;i=f[l+(i<<2)>>2]|0;if((n|0)<(h|0)&(m|0)<(h|0)&(i|0)<(h|0)){l=X(n,e)|0;k=X(m,e)|0;j=X(i,e)|0;if(B){i=0;do{f[o+(i<<2)>>2]=(f[c+(i+j<<2)>>2]|0)+(f[c+(i+k<<2)>>2]|0)-(f[c+(i+l<<2)>>2]|0);i=i+1|0}while((i|0)!=(e|0))}d=d+1|0;if((d|0)==4){d=4;o=45;break b}}}do if(q){o=g+1|0;g=((o|0)%3|0|0)==0?g+-2|0:o;if((g|0)>=0){g=f[p+(g<<2)>>2]|0;i=g+1|0;if((g|0)>=0)g=((i|0)%3|0|0)==0?g+-2|0:i}}else{g=(((g>>>0)%3|0|0)==0?2:-1)+g|0;if((g|0)>=0){g=f[p+(g<<2)>>2]|0;if((g|0)>=0)if(!((g>>>0)%3|0)){g=g+2|0;break}else{g=g+-1|0;break}}}while(0);if((g|0)==(s|0)){o=62;break b}}while(!(q&(g|0)<0));if(t){g=r;q=0;continue}g=f[p+(v<<2)>>2]|0;if((g|0)<0){q=0;continue}if(!((g>>>0)%3|0)){g=g+2|0;q=0;continue}else{g=g+-1|0;q=0;continue}}if((o|0)==62)if((d|0)>0)o=45;else{M=X(h,e)|0;o=74}if((o|0)==45){o=0;if(B){ej(f[N>>2]|0,0,y|0)|0;k=d+-1|0;m=H+(k<<2)|0;k=f[a+60+(k*12|0)>>2]|0;l=f[N>>2]|0;n=0;g=0;do{v=f[m>>2]|0;f[m>>2]=v+1;if(!(f[k+(v>>>5<<2)>>2]&1<<(v&31))){i=f[O+(n*12|0)>>2]|0;j=0;do{v=l+(j<<2)|0;f[v>>2]=(f[v>>2]|0)+(f[i+(j<<2)>>2]|0);j=j+1|0}while((j|0)!=(e|0));g=g+1|0}n=n+1|0}while((n|0)!=(d|0))}else{i=d+-1|0;k=H+(i<<2)|0;i=f[a+60+(i*12|0)>>2]|0;j=f[k>>2]|0;l=0;g=0;do{v=j;j=j+1|0;f[k>>2]=j;g=g+((f[i+(v>>>5<<2)>>2]&1<<(v&31)|0)==0&1)|0;l=l+1|0}while((l|0)!=(d|0))}i=X(h,e)|0;if(g){k=f[N>>2]|0;if(B){d=0;do{v=k+(d<<2)|0;f[v>>2]=(f[v>>2]|0)/(g|0)|0;d=d+1|0}while((d|0)!=(e|0))}m=b+(i<<2)|0;l=c+(i<<2)|0;if((f[I>>2]|0)>0){i=0;do{d=f[k+(i<<2)>>2]|0;g=f[E>>2]|0;if((d|0)>(g|0)){j=f[A>>2]|0;f[j+(i<<2)>>2]=g}else{v=f[F>>2]|0;j=f[A>>2]|0;f[j+(i<<2)>>2]=(d|0)<(v|0)?v:d}i=i+1|0;d=f[I>>2]|0}while((i|0)<(d|0));if((d|0)>0){i=0;do{d=(f[m+(i<<2)>>2]|0)+(f[j+(i<<2)>>2]|0)|0;g=l+(i<<2)|0;f[g>>2]=d;if((d|0)<=(f[E>>2]|0)){if((d|0)<(f[F>>2]|0)){d=(f[D>>2]|0)+d|0;o=96}}else{d=d-(f[D>>2]|0)|0;o=96}if((o|0)==96){o=0;f[g>>2]=d}i=i+1|0}while((i|0)<(f[I>>2]|0))}}}else{M=i;o=74}}if((o|0)==74?(o=0,J=c+((X(h+-1|0,e)|0)<<2)|0,K=b+(M<<2)|0,L=c+(M<<2)|0,(f[I>>2]|0)>0):0){i=0;do{d=f[J+(i<<2)>>2]|0;g=f[E>>2]|0;if((d|0)>(g|0)){j=f[A>>2]|0;f[j+(i<<2)>>2]=g}else{v=f[F>>2]|0;j=f[A>>2]|0;f[j+(i<<2)>>2]=(d|0)<(v|0)?v:d}i=i+1|0;d=f[I>>2]|0}while((i|0)<(d|0));if((d|0)>0){i=0;do{d=(f[K+(i<<2)>>2]|0)+(f[j+(i<<2)>>2]|0)|0;g=L+(i<<2)|0;f[g>>2]=d;if((d|0)<=(f[E>>2]|0)){if((d|0)<(f[F>>2]|0)){d=(f[D>>2]|0)+d|0;o=84}}else{d=d-(f[D>>2]|0)|0;o=84}if((o|0)==84){o=0;f[g>>2]=d}i=i+1|0}while((i|0)<(f[I>>2]|0))}}h=h+1|0;if((h|0)>=(G|0)){d=N;break a}i=f[C>>2]|0;d=f[i>>2]|0;g=f[i+4>>2]|0}}else d=N;while(0);h=f[d>>2]|0;if(h|0){g=N+4|0;d=f[g>>2]|0;if((d|0)!=(h|0))f[g>>2]=d+(~((d+-4-h|0)>>>2)<<2);ar(h)}ar(H);g=f[O+36>>2]|0;if(g|0){h=O+40|0;d=f[h>>2]|0;if((d|0)!=(g|0))f[h>>2]=d+(~((d+-4-g|0)>>>2)<<2);ar(g)}d=f[O+24>>2]|0;if(d|0){h=O+28|0;g=f[h>>2]|0;if((g|0)!=(d|0))f[h>>2]=g+(~((g+-4-d|0)>>>2)<<2);ar(d)}d=f[O+12>>2]|0;if(d|0){h=O+16|0;g=f[h>>2]|0;if((g|0)!=(d|0))f[h>>2]=g+(~((g+-4-d|0)>>>2)<<2);ar(d)}h=f[O>>2]|0;if(!h){u=P;return 1}g=O+4|0;d=f[g>>2]|0;if((d|0)!=(h|0))f[g>>2]=d+(~((d+-4-h|0)>>>2)<<2);ar(h);u=P;return 1}function sb(a,c,d){a=a|0;c=c|0;d=d|0;var e=0,g=0,h=0,i=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,v=0,w=0,x=0,y=0,z=0,A=0,B=0,C=0,D=0,E=0,F=0,G=0,H=0,I=0,J=0,K=0,L=0,M=0,N=0;N=u;u=u+32|0;M=N+8|0;G=N;F=a+8|0;E=f[F>>2]|0;f[G>>2]=0;Oj(M,E,G);E=a+112|0;i=f[E>>2]|0;e=f[i>>2]|0;h=i+4|0;if(!e)e=i+8|0;else{g=f[h>>2]|0;if((g|0)!=(e|0))f[h>>2]=g+(~((g+-4-e|0)>>>2)<<2);ar(e);e=i+8|0;f[e>>2]=0;f[h>>2]=0;f[i>>2]=0}f[i>>2]=f[M>>2];f[h>>2]=f[M+4>>2];f[e>>2]=f[M+8>>2];D=f[F>>2]|0;f[G>>2]=0;Oj(M,D,G);D=a+124|0;i=f[D>>2]|0;e=f[i>>2]|0;h=i+4|0;if(!e)e=i+8|0;else{g=f[h>>2]|0;if((g|0)!=(e|0))f[h>>2]=g+(~((g+-4-e|0)>>>2)<<2);ar(e);e=i+8|0;f[e>>2]=0;f[h>>2]=0;f[i>>2]=0}f[i>>2]=f[M>>2];f[h>>2]=f[M+4>>2];f[e>>2]=f[M+8>>2];f[M>>2]=0;f[M+4>>2]=0;f[M+8>>2]=0;f[M+12>>2]=0;f[M+16>>2]=0;f[M+20>>2]=0;K=M+8|0;J=M+4|0;I=M+16|0;H=M+20|0;qc(M);e=f[J>>2]|0;g=(f[H>>2]|0)+(f[I>>2]|0)|0;if((f[K>>2]|0)==(e|0))e=0;else e=(f[e+(((g>>>0)/341|0)<<2)>>2]|0)+(((g>>>0)%341|0)*12|0)|0;f[e>>2]=c;f[e+4>>2]=0;f[e+8>>2]=0;e=(f[H>>2]|0)+1|0;f[H>>2]=e;a:do if(e|0){v=a+100|0;C=a+88|0;t=d+4|0;w=a+92|0;A=a+44|0;y=a+40|0;B=a+12|0;z=a+84|0;x=a+80|0;b:while(1){q=f[I>>2]|0;g=e+-1|0;l=q+g|0;r=f[J>>2]|0;p=f[r+(((l>>>0)/341|0)<<2)>>2]|0;l=(l>>>0)%341|0;s=f[p+(l*12|0)>>2]|0;h=f[p+(l*12|0)+4>>2]|0;l=f[p+(l*12|0)+8>>2]|0;f[H>>2]=g;g=f[K>>2]|0;r=g-r>>2;if((1-e-q+((r|0)==0?0:(r*341|0)+-1|0)|0)>>>0>681){ar(f[g+-4>>2]|0);f[K>>2]=(f[K>>2]|0)+-4}g=f[E>>2]|0;r=g+(l*12|0)|0;q=(f[D>>2]|0)+(l*12|0)|0;n=un(a,s,q,h)|0;e=(f[a>>2]|0)-(f[(f[q>>2]|0)+(n<<2)>>2]|0)|0;c:do if(!e){if((s|0)>0){c=g+(l*12|0)+4|0;j=f[d>>2]|0;m=j+84|0;i=j+68|0;k=j+40|0;j=j+64|0;g=f[t>>2]|0;l=0;do{e=g;g=g+1|0;f[t>>2]=g;h=f[r>>2]|0;if(((f[c>>2]|0)-h|0)!=12){L=22;break b}if(!(b[m>>0]|0))e=f[(f[i>>2]|0)+(e<<2)>>2]|0;p=k;q=f[p>>2]|0;p=kn(q|0,f[p+4>>2]|0,e|0,((e|0)<0)<<31>>31|0)|0;Mg((f[f[j>>2]>>2]|0)+p|0,h|0,q|0)|0;l=l+1|0}while((l|0)<(s|0))}}else{if(!s){L=27;break b}if(s>>>0<3){i=f[v>>2]|0;f[i>>2]=n;e=f[F>>2]|0;if(e>>>0>1){g=n;h=1;do{g=(g|0)==(e+-1|0)?0:g+1|0;f[i+(h<<2)>>2]=g;h=h+1|0;e=f[F>>2]|0}while(h>>>0>>0)}g=0;while(1){if(!e)i=f[C>>2]|0;else{k=f[v>>2]|0;l=f[C>>2]|0;m=f[q>>2]|0;i=l;o=0;do{n=k+(o<<2)|0;f[l+(f[n>>2]<<2)>>2]=0;e=f[n>>2]|0;p=(f[a>>2]|0)-(f[m+(e<<2)>>2]|0)|0;do if(p|0){h=l+(e<<2)|0;if((p|0)>=33){L=41;break b}if((p|0)<=0){L=43;break b}c=f[A>>2]|0;j=32-c|0;e=f[y>>2]|0;c=f[e>>2]<(j|0)){p=p-j|0;f[A>>2]=p;e=e+4|0;f[y>>2]=e;p=32-p|0;f[h>>2]=(f[e>>2]|0)>>>p|c>>>(p-j|0);break}f[h>>2]=c>>>(32-p|0);p=(f[A>>2]|0)+p|0;f[A>>2]=p;if((p|0)!=32)break;f[y>>2]=e+4;f[A>>2]=0}while(0);n=f[n>>2]|0;p=l+(n<<2)|0;f[p>>2]=f[p>>2]|f[(f[r>>2]|0)+(n<<2)>>2];o=o+1|0}while(o>>>0<(f[F>>2]|0)>>>0)}h=f[d>>2]|0;e=f[t>>2]|0;f[t>>2]=e+1;if(((f[w>>2]|0)-i|0)!=12){L=36;break b}if(!(b[h+84>>0]|0))e=f[(f[h+68>>2]|0)+(e<<2)>>2]|0;o=h+40|0;p=f[o>>2]|0;o=kn(p|0,f[o+4>>2]|0,e|0,((e|0)<0)<<31>>31|0)|0;Mg((f[f[h+64>>2]>>2]|0)+o|0,i|0,p|0)|0;g=g+1|0;if(g>>>0>=s>>>0)break c;e=f[F>>2]|0}}c=1<>2]|0;e=f[r>>2]|0;i=e;h=f[(f[E>>2]|0)+(m*12|0)>>2]|0;if((g|0)!=(e|0)){g=g-e>>2;e=0;do{f[h+(e<<2)>>2]=f[i+(e<<2)>>2];e=e+1|0}while(e>>>0>>0)}i=h+(n<<2)|0;f[i>>2]=(f[i>>2]|0)+c;i=(_(s|0)|0)^31;f[G>>2]=0;uj(B,i,G);i=(s>>>1)-(f[G>>2]|0)|0;g=s-i|0;if((i|0)==(g|0)){j=i;k=i}else{s=f[z>>2]|0;e=f[x>>2]|0;h=(f[e>>2]&1<<31-s|0)!=0;s=s+1|0;f[z>>2]=s;if((s|0)==32){f[x>>2]=e+4;f[z>>2]=0}j=h?i:g;k=h?g:i}e=f[D>>2]|0;c=f[e+(l*12|0)>>2]|0;g=c+(n<<2)|0;f[g>>2]=(f[g>>2]|0)+1;g=f[e+(l*12|0)+4>>2]|0;h=c;if((g|0)!=(h|0)){i=f[e+(m*12|0)>>2]|0;g=g-h>>2;e=0;do{f[i+(e<<2)>>2]=f[c+(e<<2)>>2];e=e+1|0}while(e>>>0>>0)}if(j|0){i=f[K>>2]|0;h=f[J>>2]|0;s=i-h>>2;e=f[I>>2]|0;g=f[H>>2]|0;if((((s|0)==0?0:(s*341|0)+-1|0)|0)==(g+e|0)){qc(M);e=f[I>>2]|0;g=f[H>>2]|0;i=f[K>>2]|0;h=f[J>>2]|0}e=g+e|0;if((i|0)==(h|0))e=0;else e=(f[h+(((e>>>0)/341|0)<<2)>>2]|0)+(((e>>>0)%341|0)*12|0)|0;f[e>>2]=j;f[e+4>>2]=n;f[e+8>>2]=l;f[H>>2]=(f[H>>2]|0)+1}if(k|0){i=f[K>>2]|0;h=f[J>>2]|0;s=i-h>>2;e=f[I>>2]|0;g=f[H>>2]|0;if((((s|0)==0?0:(s*341|0)+-1|0)|0)==(g+e|0)){qc(M);e=f[I>>2]|0;g=f[H>>2]|0;i=f[K>>2]|0;h=f[J>>2]|0}e=g+e|0;if((i|0)==(h|0))e=0;else e=(f[h+(((e>>>0)/341|0)<<2)>>2]|0)+(((e>>>0)%341|0)*12|0)|0;f[e>>2]=k;f[e+4>>2]=n;f[e+8>>2]=m;f[H>>2]=(f[H>>2]|0)+1}}while(0);e=f[H>>2]|0;if(!e)break a}if((L|0)==22)Ga(17368,17398,51,17461);else if((L|0)==27)Ga(17720,17758,223,17846);else if((L|0)==36)Ga(17368,17398,51,17461);else if((L|0)==41)Ga(17861,17885,48,17934);else if((L|0)==43)Ga(17963,17885,49,17934)}while(0);e=f[J>>2]|0;g=f[I>>2]|0;i=e+(((g>>>0)/341|0)<<2)|0;h=f[K>>2]|0;j=h;k=e;if((h|0)==(e|0)){c=0;g=0}else{g=(f[i>>2]|0)+(((g>>>0)%341|0)*12|0)|0;c=g}d:while(1){do{if((g|0)==(c|0))break d;g=g+12|0}while((g-(f[i>>2]|0)|0)!=4092);g=i+4|0;i=g;g=f[g>>2]|0}f[H>>2]=0;g=j-k>>2;if(g>>>0>2)do{ar(f[e>>2]|0);e=(f[J>>2]|0)+4|0;f[J>>2]=e;h=f[K>>2]|0;g=h-e>>2}while(g>>>0>2);switch(g|0){case 1:{g=170;L=86;break}case 2:{g=341;L=86;break}default:{}}if((L|0)==86)f[I>>2]=g;if((e|0)!=(h|0)){do{ar(f[e>>2]|0);e=e+4|0}while((e|0)!=(h|0));e=f[J>>2]|0;g=f[K>>2]|0;if((g|0)!=(e|0))f[K>>2]=g+(~((g+-4-e|0)>>>2)<<2)}e=f[M>>2]|0;if(!e){u=N;return}ar(e);u=N;return}function tb(a,c,d){a=a|0;c=c|0;d=d|0;var e=0,g=0,h=0,i=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,v=0,w=0,x=0,y=0,z=0,A=0,B=0,C=0,D=0,E=0,F=0,G=0,H=0,I=0,J=0,K=0,L=0,M=0,N=0;N=u;u=u+32|0;M=N+8|0;G=N;F=a+8|0;E=f[F>>2]|0;f[G>>2]=0;Oj(M,E,G);E=a+112|0;i=f[E>>2]|0;e=f[i>>2]|0;h=i+4|0;if(!e)e=i+8|0;else{g=f[h>>2]|0;if((g|0)!=(e|0))f[h>>2]=g+(~((g+-4-e|0)>>>2)<<2);ar(e);e=i+8|0;f[e>>2]=0;f[h>>2]=0;f[i>>2]=0}f[i>>2]=f[M>>2];f[h>>2]=f[M+4>>2];f[e>>2]=f[M+8>>2];D=f[F>>2]|0;f[G>>2]=0;Oj(M,D,G);D=a+124|0;i=f[D>>2]|0;e=f[i>>2]|0;h=i+4|0;if(!e)e=i+8|0;else{g=f[h>>2]|0;if((g|0)!=(e|0))f[h>>2]=g+(~((g+-4-e|0)>>>2)<<2);ar(e);e=i+8|0;f[e>>2]=0;f[h>>2]=0;f[i>>2]=0}f[i>>2]=f[M>>2];f[h>>2]=f[M+4>>2];f[e>>2]=f[M+8>>2];f[M>>2]=0;f[M+4>>2]=0;f[M+8>>2]=0;f[M+12>>2]=0;f[M+16>>2]=0;f[M+20>>2]=0;K=M+8|0;J=M+4|0;I=M+16|0;H=M+20|0;qc(M);e=f[J>>2]|0;g=(f[H>>2]|0)+(f[I>>2]|0)|0;if((f[K>>2]|0)==(e|0))e=0;else e=(f[e+(((g>>>0)/341|0)<<2)>>2]|0)+(((g>>>0)%341|0)*12|0)|0;f[e>>2]=c;f[e+4>>2]=0;f[e+8>>2]=0;e=(f[H>>2]|0)+1|0;f[H>>2]=e;a:do if(e|0){v=a+100|0;C=a+88|0;t=d+4|0;w=a+92|0;A=a+44|0;y=a+40|0;B=a+12|0;z=a+84|0;x=a+80|0;b:while(1){q=f[I>>2]|0;g=e+-1|0;l=q+g|0;r=f[J>>2]|0;p=f[r+(((l>>>0)/341|0)<<2)>>2]|0;l=(l>>>0)%341|0;s=f[p+(l*12|0)>>2]|0;h=f[p+(l*12|0)+4>>2]|0;l=f[p+(l*12|0)+8>>2]|0;f[H>>2]=g;g=f[K>>2]|0;r=g-r>>2;if((1-e-q+((r|0)==0?0:(r*341|0)+-1|0)|0)>>>0>681){ar(f[g+-4>>2]|0);f[K>>2]=(f[K>>2]|0)+-4}c=f[E>>2]|0;r=c+(l*12|0)|0;n=((f[F>>2]|0)+-1|0)==(h|0)?0:h+1|0;q=(f[D>>2]|0)+(l*12|0)|0;e=(f[a>>2]|0)-(f[(f[q>>2]|0)+(n<<2)>>2]|0)|0;c:do if(!e){if((s|0)>0){c=c+(l*12|0)+4|0;j=f[d>>2]|0;m=j+84|0;i=j+68|0;k=j+40|0;j=j+64|0;g=f[t>>2]|0;l=0;do{e=g;g=g+1|0;f[t>>2]=g;h=f[r>>2]|0;if(((f[c>>2]|0)-h|0)!=12){L=22;break b}if(!(b[m>>0]|0))e=f[(f[i>>2]|0)+(e<<2)>>2]|0;p=k;q=f[p>>2]|0;p=kn(q|0,f[p+4>>2]|0,e|0,((e|0)<0)<<31>>31|0)|0;Mg((f[f[j>>2]>>2]|0)+p|0,h|0,q|0)|0;l=l+1|0}while((l|0)<(s|0))}}else{if(!s){L=27;break b}if(s>>>0<3){i=f[v>>2]|0;f[i>>2]=n;e=f[F>>2]|0;if(e>>>0>1){g=n;h=1;do{g=(g|0)==(e+-1|0)?0:g+1|0;f[i+(h<<2)>>2]=g;h=h+1|0;e=f[F>>2]|0}while(h>>>0>>0)}g=0;while(1){if(!e)i=f[C>>2]|0;else{k=f[v>>2]|0;l=f[C>>2]|0;m=f[q>>2]|0;i=l;o=0;do{n=k+(o<<2)|0;f[l+(f[n>>2]<<2)>>2]=0;e=f[n>>2]|0;p=(f[a>>2]|0)-(f[m+(e<<2)>>2]|0)|0;do if(p|0){h=l+(e<<2)|0;if((p|0)>=33){L=41;break b}if((p|0)<=0){L=43;break b}c=f[A>>2]|0;j=32-c|0;e=f[y>>2]|0;c=f[e>>2]<(j|0)){p=p-j|0;f[A>>2]=p;e=e+4|0;f[y>>2]=e;p=32-p|0;f[h>>2]=(f[e>>2]|0)>>>p|c>>>(p-j|0);break}f[h>>2]=c>>>(32-p|0);p=(f[A>>2]|0)+p|0;f[A>>2]=p;if((p|0)!=32)break;f[y>>2]=e+4;f[A>>2]=0}while(0);n=f[n>>2]|0;p=l+(n<<2)|0;f[p>>2]=f[p>>2]|f[(f[r>>2]|0)+(n<<2)>>2];o=o+1|0}while(o>>>0<(f[F>>2]|0)>>>0)}h=f[d>>2]|0;e=f[t>>2]|0;f[t>>2]=e+1;if(((f[w>>2]|0)-i|0)!=12){L=36;break b}if(!(b[h+84>>0]|0))e=f[(f[h+68>>2]|0)+(e<<2)>>2]|0;o=h+40|0;p=f[o>>2]|0;o=kn(p|0,f[o+4>>2]|0,e|0,((e|0)<0)<<31>>31|0)|0;Mg((f[f[h+64>>2]>>2]|0)+o|0,i|0,p|0)|0;g=g+1|0;if(g>>>0>=s>>>0)break c;e=f[F>>2]|0}}j=1<>2]|0;e=f[r>>2]|0;i=e;h=f[c+(m*12|0)>>2]|0;if((g|0)!=(e|0)){g=g-e>>2;e=0;do{f[h+(e<<2)>>2]=f[i+(e<<2)>>2];e=e+1|0}while(e>>>0>>0)}i=h+(n<<2)|0;f[i>>2]=(f[i>>2]|0)+j;i=(_(s|0)|0)^31;f[G>>2]=0;uj(B,i,G);i=(s>>>1)-(f[G>>2]|0)|0;g=s-i|0;if((i|0)==(g|0)){j=i;k=i}else{s=f[z>>2]|0;e=f[x>>2]|0;h=(f[e>>2]&1<<31-s|0)!=0;s=s+1|0;f[z>>2]=s;if((s|0)==32){f[x>>2]=e+4;f[z>>2]=0}j=h?i:g;k=h?g:i}e=f[D>>2]|0;c=f[e+(l*12|0)>>2]|0;g=c+(n<<2)|0;f[g>>2]=(f[g>>2]|0)+1;g=f[e+(l*12|0)+4>>2]|0;h=c;if((g|0)!=(h|0)){i=f[e+(m*12|0)>>2]|0;g=g-h>>2;e=0;do{f[i+(e<<2)>>2]=f[c+(e<<2)>>2];e=e+1|0}while(e>>>0>>0)}if(j|0){i=f[K>>2]|0;h=f[J>>2]|0;s=i-h>>2;e=f[I>>2]|0;g=f[H>>2]|0;if((((s|0)==0?0:(s*341|0)+-1|0)|0)==(g+e|0)){qc(M);e=f[I>>2]|0;g=f[H>>2]|0;i=f[K>>2]|0;h=f[J>>2]|0}e=g+e|0;if((i|0)==(h|0))e=0;else e=(f[h+(((e>>>0)/341|0)<<2)>>2]|0)+(((e>>>0)%341|0)*12|0)|0;f[e>>2]=j;f[e+4>>2]=n;f[e+8>>2]=l;f[H>>2]=(f[H>>2]|0)+1}if(k|0){i=f[K>>2]|0;h=f[J>>2]|0;s=i-h>>2;e=f[I>>2]|0;g=f[H>>2]|0;if((((s|0)==0?0:(s*341|0)+-1|0)|0)==(g+e|0)){qc(M);e=f[I>>2]|0;g=f[H>>2]|0;i=f[K>>2]|0;h=f[J>>2]|0}e=g+e|0;if((i|0)==(h|0))e=0;else e=(f[h+(((e>>>0)/341|0)<<2)>>2]|0)+(((e>>>0)%341|0)*12|0)|0;f[e>>2]=k;f[e+4>>2]=n;f[e+8>>2]=m;f[H>>2]=(f[H>>2]|0)+1}}while(0);e=f[H>>2]|0;if(!e)break a}if((L|0)==22)Ga(17368,17398,51,17461);else if((L|0)==27)Ga(17720,17758,223,17846);else if((L|0)==36)Ga(17368,17398,51,17461);else if((L|0)==41)Ga(17861,17885,48,17934);else if((L|0)==43)Ga(17963,17885,49,17934)}while(0);e=f[J>>2]|0;g=f[I>>2]|0;i=e+(((g>>>0)/341|0)<<2)|0;h=f[K>>2]|0;j=h;k=e;if((h|0)==(e|0)){c=0;g=0}else{g=(f[i>>2]|0)+(((g>>>0)%341|0)*12|0)|0;c=g}d:while(1){do{if((g|0)==(c|0))break d;g=g+12|0}while((g-(f[i>>2]|0)|0)!=4092);g=i+4|0;i=g;g=f[g>>2]|0}f[H>>2]=0;g=j-k>>2;if(g>>>0>2)do{ar(f[e>>2]|0);e=(f[J>>2]|0)+4|0;f[J>>2]=e;h=f[K>>2]|0;g=h-e>>2}while(g>>>0>2);switch(g|0){case 1:{g=170;L=86;break}case 2:{g=341;L=86;break}default:{}}if((L|0)==86)f[I>>2]=g;if((e|0)!=(h|0)){do{ar(f[e>>2]|0);e=e+4|0}while((e|0)!=(h|0));e=f[J>>2]|0;g=f[K>>2]|0;if((g|0)!=(e|0))f[K>>2]=g+(~((g+-4-e|0)>>>2)<<2)}e=f[M>>2]|0;if(!e){u=N;return}ar(e);u=N;return}function ub(a,b,c){a=a|0;b=b|0;c=c|0;var d=0,e=0,g=0,h=0,i=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,v=0,w=0,x=0,y=0,z=0,A=0,B=0,C=0,D=0,E=0,F=0,G=0,H=0,I=0,J=0,K=0,L=0,M=0,N=0,O=0,P=0,Q=0;Q=u;u=u+48|0;J=Q+24|0;P=Q;I=a+8|0;H=f[I>>2]|0;f[P>>2]=0;Oj(J,H,P);H=a+112|0;h=f[H>>2]|0;d=f[h>>2]|0;g=h+4|0;if(!d)d=h+8|0;else{e=f[g>>2]|0;if((e|0)!=(d|0))f[g>>2]=e+(~((e+-4-d|0)>>>2)<<2);ar(d);d=h+8|0;f[d>>2]=0;f[g>>2]=0;f[h>>2]=0}f[h>>2]=f[J>>2];f[g>>2]=f[J+4>>2];f[d>>2]=f[J+8>>2];G=f[I>>2]|0;f[P>>2]=0;Oj(J,G,P);G=a+124|0;h=f[G>>2]|0;d=f[h>>2]|0;g=h+4|0;if(!d)d=h+8|0;else{e=f[g>>2]|0;if((e|0)!=(d|0))f[g>>2]=e+(~((e+-4-d|0)>>>2)<<2);ar(d);d=h+8|0;f[d>>2]=0;f[g>>2]=0;f[h>>2]=0}f[h>>2]=f[J>>2];f[g>>2]=f[J+4>>2];f[d>>2]=f[J+8>>2];f[P>>2]=0;f[P+4>>2]=0;f[P+8>>2]=0;f[P+12>>2]=0;f[P+16>>2]=0;f[P+20>>2]=0;N=P+8|0;M=P+4|0;L=P+16|0;K=P+20|0;qc(P);d=f[M>>2]|0;e=(f[K>>2]|0)+(f[L>>2]|0)|0;if((f[N>>2]|0)==(d|0))d=0;else d=(f[d+(((e>>>0)/341|0)<<2)>>2]|0)+(((e>>>0)%341|0)*12|0)|0;f[d>>2]=b;f[d+4>>2]=0;f[d+8>>2]=0;d=(f[K>>2]|0)+1|0;f[K>>2]=d;a:do if(d|0){w=a+100|0;v=a+88|0;z=J+4|0;B=J+8|0;E=a+44|0;y=a+40|0;F=a+12|0;D=a+84|0;x=a+80|0;A=J+4|0;C=J+8|0;b:while(1){r=f[L>>2]|0;e=d+-1|0;k=r+e|0;s=f[M>>2]|0;q=f[s+(((k>>>0)/341|0)<<2)>>2]|0;k=(k>>>0)%341|0;t=f[q+(k*12|0)>>2]|0;g=f[q+(k*12|0)+4>>2]|0;k=f[q+(k*12|0)+8>>2]|0;f[K>>2]=e;e=f[N>>2]|0;s=e-s>>2;if((1-d-r+((s|0)==0?0:(s*341|0)+-1|0)|0)>>>0>681){ar(f[e+-4>>2]|0);f[N>>2]=(f[N>>2]|0)+-4}e=f[H>>2]|0;s=e+(k*12|0)|0;r=(f[G>>2]|0)+(k*12|0)|0;m=un(a,t,r,g)|0;d=(f[a>>2]|0)-(f[(f[r>>2]|0)+(m<<2)>>2]|0)|0;c:do if(!d){if((t|0)>0){i=f[c>>2]|0;g=i+4|0;h=i+8|0;b=0;do{e=f[s>>2]|0;d=f[e>>2]|0;f[J>>2]=d;f[A>>2]=f[e+4>>2];f[C>>2]=f[e+8>>2];e=f[g>>2]|0;if(e>>>0<(f[h>>2]|0)>>>0){f[e>>2]=d;f[e+4>>2]=f[A>>2];f[e+8>>2]=f[C>>2];f[g>>2]=e+12}else mh(i,J);b=b+1|0}while((b|0)<(t|0))}}else{if(!t){O=26;break b}if(t>>>0<3){h=f[w>>2]|0;f[h>>2]=m;d=f[I>>2]|0;if(d>>>0>1){e=m;g=1;do{e=(e|0)==(d+-1|0)?0:e+1|0;f[h+(g<<2)>>2]=e;g=g+1|0;d=f[I>>2]|0}while(g>>>0>>0)}q=f[c>>2]|0;o=q+4|0;p=q+8|0;e=0;while(1){if(d|0){i=f[w>>2]|0;j=f[v>>2]|0;k=f[r>>2]|0;m=0;do{l=i+(m<<2)|0;f[j+(f[l>>2]<<2)>>2]=0;d=f[l>>2]|0;n=(f[a>>2]|0)-(f[k+(d<<2)>>2]|0)|0;do if(n|0){g=j+(d<<2)|0;if((n|0)>=33){O=35;break b}if((n|0)<=0){O=37;break b}h=f[E>>2]|0;b=32-h|0;d=f[y>>2]|0;h=f[d>>2]<(b|0)){n=n-b|0;f[E>>2]=n;d=d+4|0;f[y>>2]=d;n=32-n|0;f[g>>2]=(f[d>>2]|0)>>>n|h>>>(n-b|0);break}f[g>>2]=h>>>(32-n|0);n=(f[E>>2]|0)+n|0;f[E>>2]=n;if((n|0)!=32)break;f[y>>2]=d+4;f[E>>2]=0}while(0);l=f[l>>2]|0;n=j+(l<<2)|0;f[n>>2]=f[n>>2]|f[(f[s>>2]|0)+(l<<2)>>2];m=m+1|0}while(m>>>0<(f[I>>2]|0)>>>0)}g=f[v>>2]|0;d=f[g>>2]|0;f[J>>2]=d;f[z>>2]=f[g+4>>2];f[B>>2]=f[g+8>>2];g=f[o>>2]|0;if(g>>>0<(f[p>>2]|0)>>>0){f[g>>2]=d;f[g+4>>2]=f[z>>2];f[g+8>>2]=f[B>>2];f[o>>2]=g+12}else mh(q,J);e=e+1|0;if(e>>>0>=t>>>0)break c;d=f[I>>2]|0}}b=1<>2]|0;d=f[s>>2]|0;h=d;g=f[(f[H>>2]|0)+(l*12|0)>>2]|0;if((e|0)!=(d|0)){e=e-d>>2;d=0;do{f[g+(d<<2)>>2]=f[h+(d<<2)>>2];d=d+1|0}while(d>>>0>>0)}h=g+(m<<2)|0;f[h>>2]=(f[h>>2]|0)+b;h=(_(t|0)|0)^31;f[J>>2]=0;uj(F,h,J);h=(t>>>1)-(f[J>>2]|0)|0;e=t-h|0;if((h|0)==(e|0)){i=h;j=h}else{t=f[D>>2]|0;d=f[x>>2]|0;g=(f[d>>2]&1<<31-t|0)!=0;t=t+1|0;f[D>>2]=t;if((t|0)==32){f[x>>2]=d+4;f[D>>2]=0}i=g?h:e;j=g?e:h}d=f[G>>2]|0;b=f[d+(k*12|0)>>2]|0;e=b+(m<<2)|0;f[e>>2]=(f[e>>2]|0)+1;e=f[d+(k*12|0)+4>>2]|0;g=b;if((e|0)!=(g|0)){h=f[d+(l*12|0)>>2]|0;e=e-g>>2;d=0;do{f[h+(d<<2)>>2]=f[b+(d<<2)>>2];d=d+1|0}while(d>>>0>>0)}if(i|0){h=f[N>>2]|0;e=f[M>>2]|0;t=h-e>>2;d=f[L>>2]|0;g=f[K>>2]|0;if((((t|0)==0?0:(t*341|0)+-1|0)|0)==(g+d|0)){qc(P);d=f[L>>2]|0;g=f[K>>2]|0;h=f[N>>2]|0;e=f[M>>2]|0}d=g+d|0;if((h|0)==(e|0))d=0;else d=(f[e+(((d>>>0)/341|0)<<2)>>2]|0)+(((d>>>0)%341|0)*12|0)|0;f[d>>2]=i;f[d+4>>2]=m;f[d+8>>2]=k;f[K>>2]=(f[K>>2]|0)+1}if(j|0){h=f[N>>2]|0;g=f[M>>2]|0;t=h-g>>2;d=f[L>>2]|0;e=f[K>>2]|0;if((((t|0)==0?0:(t*341|0)+-1|0)|0)==(e+d|0)){qc(P);d=f[L>>2]|0;e=f[K>>2]|0;h=f[N>>2]|0;g=f[M>>2]|0}d=e+d|0;if((h|0)==(g|0))d=0;else d=(f[g+(((d>>>0)/341|0)<<2)>>2]|0)+(((d>>>0)%341|0)*12|0)|0;f[d>>2]=j;f[d+4>>2]=m;f[d+8>>2]=l;f[K>>2]=(f[K>>2]|0)+1}}while(0);d=f[K>>2]|0;if(!d)break a}if((O|0)==26)Ga(17720,17758,223,17846);else if((O|0)==35)Ga(17861,17885,48,17934);else if((O|0)==37)Ga(17963,17885,49,17934)}while(0);d=f[M>>2]|0;e=f[L>>2]|0;h=d+(((e>>>0)/341|0)<<2)|0;g=f[N>>2]|0;i=g;j=d;if((g|0)==(d|0)){b=0;e=0}else{e=(f[h>>2]|0)+(((e>>>0)%341|0)*12|0)|0;b=e}d:while(1){do{if((e|0)==(b|0))break d;e=e+12|0}while((e-(f[h>>2]|0)|0)!=4092);e=h+4|0;h=e;e=f[e>>2]|0}f[K>>2]=0;e=i-j>>2;if(e>>>0>2)do{ar(f[d>>2]|0);d=(f[M>>2]|0)+4|0;f[M>>2]=d;g=f[N>>2]|0;e=g-d>>2}while(e>>>0>2);switch(e|0){case 1:{e=170;O=83;break}case 2:{e=341;O=83;break}default:{}}if((O|0)==83)f[L>>2]=e;if((d|0)!=(g|0)){do{ar(f[d>>2]|0);d=d+4|0}while((d|0)!=(g|0));d=f[M>>2]|0;e=f[N>>2]|0;if((e|0)!=(d|0))f[N>>2]=e+(~((e+-4-d|0)>>>2)<<2)}d=f[P>>2]|0;if(!d){u=Q;return}ar(d);u=Q;return}function vb(a,b,c){a=a|0;b=b|0;c=c|0;var d=0,e=0,g=0,h=0,i=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,v=0,w=0,x=0,y=0,z=0,A=0,B=0,C=0,D=0,E=0,F=0,G=0,H=0,I=0,J=0,K=0,L=0,M=0,N=0,O=0,P=0,Q=0;Q=u;u=u+48|0;J=Q+24|0;P=Q;I=a+8|0;H=f[I>>2]|0;f[P>>2]=0;Oj(J,H,P);H=a+112|0;h=f[H>>2]|0;d=f[h>>2]|0;g=h+4|0;if(!d)d=h+8|0;else{e=f[g>>2]|0;if((e|0)!=(d|0))f[g>>2]=e+(~((e+-4-d|0)>>>2)<<2);ar(d);d=h+8|0;f[d>>2]=0;f[g>>2]=0;f[h>>2]=0}f[h>>2]=f[J>>2];f[g>>2]=f[J+4>>2];f[d>>2]=f[J+8>>2];G=f[I>>2]|0;f[P>>2]=0;Oj(J,G,P);G=a+124|0;h=f[G>>2]|0;d=f[h>>2]|0;g=h+4|0;if(!d)d=h+8|0;else{e=f[g>>2]|0;if((e|0)!=(d|0))f[g>>2]=e+(~((e+-4-d|0)>>>2)<<2);ar(d);d=h+8|0;f[d>>2]=0;f[g>>2]=0;f[h>>2]=0}f[h>>2]=f[J>>2];f[g>>2]=f[J+4>>2];f[d>>2]=f[J+8>>2];f[P>>2]=0;f[P+4>>2]=0;f[P+8>>2]=0;f[P+12>>2]=0;f[P+16>>2]=0;f[P+20>>2]=0;N=P+8|0;M=P+4|0;L=P+16|0;K=P+20|0;qc(P);d=f[M>>2]|0;e=(f[K>>2]|0)+(f[L>>2]|0)|0;if((f[N>>2]|0)==(d|0))d=0;else d=(f[d+(((e>>>0)/341|0)<<2)>>2]|0)+(((e>>>0)%341|0)*12|0)|0;f[d>>2]=b;f[d+4>>2]=0;f[d+8>>2]=0;d=(f[K>>2]|0)+1|0;f[K>>2]=d;a:do if(d|0){w=a+100|0;v=a+88|0;z=J+4|0;B=J+8|0;E=a+44|0;y=a+40|0;F=a+12|0;D=a+84|0;x=a+80|0;A=J+4|0;C=J+8|0;b:while(1){r=f[L>>2]|0;e=d+-1|0;k=r+e|0;s=f[M>>2]|0;q=f[s+(((k>>>0)/341|0)<<2)>>2]|0;k=(k>>>0)%341|0;t=f[q+(k*12|0)>>2]|0;g=f[q+(k*12|0)+4>>2]|0;k=f[q+(k*12|0)+8>>2]|0;f[K>>2]=e;e=f[N>>2]|0;s=e-s>>2;if((1-d-r+((s|0)==0?0:(s*341|0)+-1|0)|0)>>>0>681){ar(f[e+-4>>2]|0);f[N>>2]=(f[N>>2]|0)+-4}b=f[H>>2]|0;s=b+(k*12|0)|0;m=((f[I>>2]|0)+-1|0)==(g|0)?0:g+1|0;r=(f[G>>2]|0)+(k*12|0)|0;d=(f[a>>2]|0)-(f[(f[r>>2]|0)+(m<<2)>>2]|0)|0;c:do if(!d){if((t|0)>0){i=f[c>>2]|0;g=i+4|0;h=i+8|0;b=0;do{e=f[s>>2]|0;d=f[e>>2]|0;f[J>>2]=d;f[A>>2]=f[e+4>>2];f[C>>2]=f[e+8>>2];e=f[g>>2]|0;if(e>>>0<(f[h>>2]|0)>>>0){f[e>>2]=d;f[e+4>>2]=f[A>>2];f[e+8>>2]=f[C>>2];f[g>>2]=e+12}else mh(i,J);b=b+1|0}while((b|0)<(t|0))}}else{if(!t){O=26;break b}if(t>>>0<3){h=f[w>>2]|0;f[h>>2]=m;d=f[I>>2]|0;if(d>>>0>1){e=m;g=1;do{e=(e|0)==(d+-1|0)?0:e+1|0;f[h+(g<<2)>>2]=e;g=g+1|0;d=f[I>>2]|0}while(g>>>0>>0)}q=f[c>>2]|0;o=q+4|0;p=q+8|0;e=0;while(1){if(d|0){i=f[w>>2]|0;j=f[v>>2]|0;k=f[r>>2]|0;m=0;do{l=i+(m<<2)|0;f[j+(f[l>>2]<<2)>>2]=0;d=f[l>>2]|0;n=(f[a>>2]|0)-(f[k+(d<<2)>>2]|0)|0;do if(n|0){g=j+(d<<2)|0;if((n|0)>=33){O=35;break b}if((n|0)<=0){O=37;break b}h=f[E>>2]|0;b=32-h|0;d=f[y>>2]|0;h=f[d>>2]<(b|0)){n=n-b|0;f[E>>2]=n;d=d+4|0;f[y>>2]=d;n=32-n|0;f[g>>2]=(f[d>>2]|0)>>>n|h>>>(n-b|0);break}f[g>>2]=h>>>(32-n|0);n=(f[E>>2]|0)+n|0;f[E>>2]=n;if((n|0)!=32)break;f[y>>2]=d+4;f[E>>2]=0}while(0);l=f[l>>2]|0;n=j+(l<<2)|0;f[n>>2]=f[n>>2]|f[(f[s>>2]|0)+(l<<2)>>2];m=m+1|0}while(m>>>0<(f[I>>2]|0)>>>0)}g=f[v>>2]|0;d=f[g>>2]|0;f[J>>2]=d;f[z>>2]=f[g+4>>2];f[B>>2]=f[g+8>>2];g=f[o>>2]|0;if(g>>>0<(f[p>>2]|0)>>>0){f[g>>2]=d;f[g+4>>2]=f[z>>2];f[g+8>>2]=f[B>>2];f[o>>2]=g+12}else mh(q,J);e=e+1|0;if(e>>>0>=t>>>0)break c;d=f[I>>2]|0}}i=1<>2]|0;d=f[s>>2]|0;h=d;g=f[b+(l*12|0)>>2]|0;if((e|0)!=(d|0)){e=e-d>>2;d=0;do{f[g+(d<<2)>>2]=f[h+(d<<2)>>2];d=d+1|0}while(d>>>0>>0)}h=g+(m<<2)|0;f[h>>2]=(f[h>>2]|0)+i;h=(_(t|0)|0)^31;f[J>>2]=0;uj(F,h,J);h=(t>>>1)-(f[J>>2]|0)|0;e=t-h|0;if((h|0)==(e|0)){i=h;j=h}else{t=f[D>>2]|0;d=f[x>>2]|0;g=(f[d>>2]&1<<31-t|0)!=0;t=t+1|0;f[D>>2]=t;if((t|0)==32){f[x>>2]=d+4;f[D>>2]=0}i=g?h:e;j=g?e:h}d=f[G>>2]|0;b=f[d+(k*12|0)>>2]|0;e=b+(m<<2)|0;f[e>>2]=(f[e>>2]|0)+1;e=f[d+(k*12|0)+4>>2]|0;g=b;if((e|0)!=(g|0)){h=f[d+(l*12|0)>>2]|0;e=e-g>>2;d=0;do{f[h+(d<<2)>>2]=f[b+(d<<2)>>2];d=d+1|0}while(d>>>0>>0)}if(i|0){h=f[N>>2]|0;g=f[M>>2]|0;t=h-g>>2;d=f[L>>2]|0;e=f[K>>2]|0;if((((t|0)==0?0:(t*341|0)+-1|0)|0)==(e+d|0)){qc(P);d=f[L>>2]|0;e=f[K>>2]|0;h=f[N>>2]|0;g=f[M>>2]|0}d=e+d|0;if((h|0)==(g|0))d=0;else d=(f[g+(((d>>>0)/341|0)<<2)>>2]|0)+(((d>>>0)%341|0)*12|0)|0;f[d>>2]=i;f[d+4>>2]=m;f[d+8>>2]=k;f[K>>2]=(f[K>>2]|0)+1}if(j|0){h=f[N>>2]|0;g=f[M>>2]|0;t=h-g>>2;d=f[L>>2]|0;e=f[K>>2]|0;if((((t|0)==0?0:(t*341|0)+-1|0)|0)==(e+d|0)){qc(P);d=f[L>>2]|0;e=f[K>>2]|0;h=f[N>>2]|0;g=f[M>>2]|0}d=e+d|0;if((h|0)==(g|0))d=0;else d=(f[g+(((d>>>0)/341|0)<<2)>>2]|0)+(((d>>>0)%341|0)*12|0)|0;f[d>>2]=j;f[d+4>>2]=m;f[d+8>>2]=l;f[K>>2]=(f[K>>2]|0)+1}}while(0);d=f[K>>2]|0;if(!d)break a}if((O|0)==26)Ga(17720,17758,223,17846);else if((O|0)==35)Ga(17861,17885,48,17934);else if((O|0)==37)Ga(17963,17885,49,17934)}while(0);d=f[M>>2]|0;e=f[L>>2]|0;h=d+(((e>>>0)/341|0)<<2)|0;g=f[N>>2]|0;i=g;j=d;if((g|0)==(d|0)){b=0;e=0}else{e=(f[h>>2]|0)+(((e>>>0)%341|0)*12|0)|0;b=e}d:while(1){do{if((e|0)==(b|0))break d;e=e+12|0}while((e-(f[h>>2]|0)|0)!=4092);e=h+4|0;h=e;e=f[e>>2]|0}f[K>>2]=0;e=i-j>>2;if(e>>>0>2)do{ar(f[d>>2]|0);d=(f[M>>2]|0)+4|0;f[M>>2]=d;g=f[N>>2]|0;e=g-d>>2}while(e>>>0>2);switch(e|0){case 1:{e=170;O=83;break}case 2:{e=341;O=83;break}default:{}}if((O|0)==83)f[L>>2]=e;if((d|0)!=(g|0)){do{ar(f[d>>2]|0);d=d+4|0}while((d|0)!=(g|0));d=f[M>>2]|0;e=f[N>>2]|0;if((e|0)!=(d|0))f[N>>2]=e+(~((e+-4-d|0)>>>2)<<2)}d=f[P>>2]|0;if(!d){u=Q;return}ar(d);u=Q;return}function wb(a){a=a|0;var b=0,c=0,d=0,e=0,g=0,h=0,i=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,v=0,w=0,x=0,y=0,z=0,A=0,B=0,C=0,D=0,E=0,F=0,G=0,H=0,I=0;I=u;u=u+48|0;F=I+36|0;H=I+24|0;G=I+12|0;C=I;E=a+4|0;d=f[(f[E>>2]|0)+44>>2]|0;D=a+8|0;g=f[D>>2]|0;g=((f[g+4>>2]|0)-(f[g>>2]|0)>>2>>>0)/3|0;h=d+84|0;d=d+88|0;f[F>>2]=0;f[F+4>>2]=0;f[F+8>>2]=0;c=f[d>>2]|0;b=f[h>>2]|0;i=(c-b|0)/12|0;if(g>>>0<=i>>>0){if(g>>>0>>0?(e=b+(g*12|0)|0,(c|0)!=(e|0)):0)f[d>>2]=c+(~(((c+-12-e|0)>>>0)/12|0)*12|0)}else og(h,g-i|0,F);r=a+228|0;q=a+232|0;if((f[q>>2]|0)==(f[r>>2]|0)){d=f[D>>2]|0;d=(f[d+28>>2]|0)-(f[d+24>>2]|0)>>2;f[F>>2]=-1;Oj(H,d,F);d=f[E>>2]|0;b=f[d+44>>2]|0;e=f[b+88>>2]|0;c=f[b+84>>2]|0;if((e-c|0)>0){o=G+4|0;p=G+8|0;l=b;m=c;c=d;h=d;n=0;b=0;while(1){f[G>>2]=0;f[G+4>>2]=0;f[G+8>>2]=0;i=n*3|0;if((n|0)<0)d=-1073741824;else d=f[(f[f[D>>2]>>2]|0)+(i<<2)>>2]|0;a=f[H>>2]|0;g=a+(d<<2)|0;d=f[g>>2]|0;if((d|0)==-1){f[g>>2]=b;k=b;b=b+1|0}else k=d;f[G>>2]=k;if((i|0)<-1)d=-1073741824;else d=f[(f[f[D>>2]>>2]|0)+(i+1<<2)>>2]|0;g=a+(d<<2)|0;d=f[g>>2]|0;if((d|0)==-1){f[g>>2]=b;d=b;b=b+1|0}f[o>>2]=d;if((i|0)<-2)d=-1073741824;else d=f[(f[f[D>>2]>>2]|0)+(i+2<<2)>>2]|0;g=a+(d<<2)|0;d=f[g>>2]|0;if((d|0)==-1){f[g>>2]=b;d=b;b=b+1|0}f[p>>2]=d;g=l+84|0;d=l+88|0;a=(e-m|0)/12|0;i=m;j=n;n=n+1|0;if((j|0)<(a|0)){d=l;g=m}else{c=e;f[F>>2]=0;f[F+4>>2]=0;f[F+8>>2]=0;if(n>>>0<=a>>>0)if(n>>>0>>0?(A=i+(n*12|0)|0,(c|0)!=(A|0)):0){e=c+(~(((c+-12-A|0)>>>0)/12|0)*12|0)|0;f[d>>2]=e;d=l;g=m}else{d=l;g=m}else{og(g,n-a|0,F);h=f[E>>2]|0;C=f[h+44>>2]|0;i=f[g>>2]|0;d=C;e=f[C+88>>2]|0;g=f[C+84>>2]|0}c=h}f[i+(j*12|0)>>2]=k;f[i+(j*12|0)+4>>2]=f[o>>2];f[i+(j*12|0)+8>>2]=f[p>>2];if((n|0)>=((e-g|0)/12|0|0)){d=H;break}else{l=d;m=g}}}else{c=d;d=H;b=0}f[(f[c+4>>2]|0)+68>>2]=b;d=f[d>>2]|0;if(d|0){c=H+4|0;b=f[c>>2]|0;if((b|0)!=(d|0))f[c>>2]=b+(~((b+-4-d|0)>>>2)<<2);ar(d)}u=I;return 1}f[H>>2]=0;A=H+4|0;f[A>>2]=0;f[H+8>>2]=0;b=f[D>>2]|0;Dk(G,(f[b+4>>2]|0)-(f[b>>2]|0)>>2);b=f[D>>2]|0;if(((f[b+28>>2]|0)-(f[b+24>>2]|0)|0)>0){o=a+136|0;p=H+8|0;n=0;do{h=f[(f[b+24>>2]|0)+(n<<2)>>2]|0;a:do if((h|0)>=0){b:do if((f[(f[o>>2]|0)+(n>>>5<<2)>>2]&1<<(n&31)|0)==0?(s=f[q>>2]|0,t=f[r>>2]|0,v=t,(s|0)!=(t|0)):0){a=(((h>>>0)%3|0|0)==0?2:-1)+h|0;j=(a|0)<0;l=(s-t|0)/116|0;i=b+12|0;g=b+12|0;k=0;c:while(1){m=f[(f[f[v+(k*116|0)+68>>2]>>2]|0)+(h<<2)>>2]|0;do if(1<<(m&31)&f[(f[v+(k*116|0)+16>>2]|0)+(m>>>5<<2)>>2]|0){e=f[v+(k*116|0)+32>>2]|0;m=f[e+(h<<2)>>2]|0;if(!j){c=f[(f[i>>2]|0)+(a<<2)>>2]|0;do if((c|0)>=0)if(!((c>>>0)%3|0)){c=c+2|0;break}else{c=c+-1|0;break}while(0);if((c|0)==(h|0))break;else d=c}else d=a;while(1){c=f[e+(d<<2)>>2]|0;if((d|0)<0)break c;if((c|0)!=(m|0)){h=d;break b}c=(((d>>>0)%3|0|0)==0?2:-1)+d|0;do if((c|0)>=0){c=f[(f[g>>2]|0)+(c<<2)>>2]|0;if((c|0)>=0)if(!((c>>>0)%3|0)){c=c+2|0;break}else{c=c+-1|0;break}}while(0);if((c|0)==(h|0))break;else d=c}}while(0);k=k+1|0;if(k>>>0>=l>>>0)break b}while(1)if((c|0)==(m|0))c=m;else{h=d;break}}while(0);c=f[A>>2]|0;f[(f[G>>2]|0)+(h<<2)>>2]=c-(f[H>>2]|0)>>2;f[F>>2]=h;if(c>>>0<(f[p>>2]|0)>>>0){f[c>>2]=h;f[A>>2]=c+4}else{Ii(H,F);b=f[D>>2]|0}if((((h|0)>=0?(w=(((h>>>0)%3|0|0)==0?2:-1)+h|0,(w|0)>=0):0)?(x=f[(f[b+12>>2]|0)+(w<<2)>>2]|0,(x|0)>=0):0)?(y=x+(((x>>>0)%3|0|0)==0?2:-1)|0,(y|0)>-1&(y|0)!=(h|0)):0){g=y;e=h;while(1){b=f[q>>2]|0;c=f[r>>2]|0;d=c;d:do if((b|0)!=(c|0)){c=(b-c|0)/116|0;b=0;while(1){m=f[d+(b*116|0)+32>>2]|0;b=b+1|0;if((f[m+(g<<2)>>2]|0)!=(f[m+(e<<2)>>2]|0))break;if(b>>>0>=c>>>0){z=67;break d}}b=f[A>>2]|0;f[(f[G>>2]|0)+(g<<2)>>2]=b-(f[H>>2]|0)>>2;f[F>>2]=g;if(b>>>0<(f[p>>2]|0)>>>0){f[b>>2]=g;f[A>>2]=b+4}else Ii(H,F)}else z=67;while(0);if((z|0)==67){z=0;m=f[G>>2]|0;f[m+(g<<2)>>2]=f[m+(e<<2)>>2]}b=(((g>>>0)%3|0|0)==0?2:-1)+g|0;if((b|0)<0)break a;b=f[(f[(f[D>>2]|0)+12>>2]|0)+(b<<2)>>2]|0;if((b|0)<0)break a;b=b+(((b>>>0)%3|0|0)==0?2:-1)|0;if((b|0)>-1&(b|0)!=(h|0)){e=g;g=b}else break}}}while(0);n=n+1|0;b=f[D>>2]|0}while((n|0)<((f[b+28>>2]|0)-(f[b+24>>2]|0)>>2|0))}e=f[E>>2]|0;b=f[e+44>>2]|0;d=f[b+88>>2]|0;c=f[b+84>>2]|0;if((d-c|0)>0){m=C+4|0;n=C+8|0;j=c;c=e;g=e;k=0;while(1){f[C>>2]=0;f[C+4>>2]=0;f[C+8>>2]=0;i=(f[G>>2]|0)+(k*3<<2)|0;f[C>>2]=f[i>>2];f[C+4>>2]=f[i+4>>2];f[C+8>>2]=f[i+8>>2];i=b+84|0;h=b+88|0;a=(d-j|0)/12|0;e=j;l=k;k=k+1|0;if((l|0)<(a|0))h=j;else{c=d;f[F>>2]=0;f[F+4>>2]=0;f[F+8>>2]=0;if(k>>>0<=a>>>0)if(k>>>0>>0?(B=e+(k*12|0)|0,(c|0)!=(B|0)):0){d=c+(~(((c+-12-B|0)>>>0)/12|0)*12|0)|0;f[h>>2]=d;c=j}else c=j;else{og(i,k-a|0,F);g=f[E>>2]|0;c=f[g+44>>2]|0;e=f[i>>2]|0;b=c;d=f[c+88>>2]|0;c=f[c+84>>2]|0}h=c;c=g}f[e+(l*12|0)>>2]=f[C>>2];f[e+(l*12|0)+4>>2]=f[m>>2];f[e+(l*12|0)+8>>2]=f[n>>2];if((k|0)>=((d-h|0)/12|0|0))break;else j=h}}else c=e;b=f[H>>2]|0;f[(f[c+4>>2]|0)+68>>2]=(f[A>>2]|0)-b>>2;d=f[G>>2]|0;if(d){c=G+4|0;b=f[c>>2]|0;if((b|0)!=(d|0))f[c>>2]=b+(~((b+-4-d|0)>>>2)<<2);ar(d);b=f[H>>2]|0}if(b|0){c=f[A>>2]|0;if((c|0)!=(b|0))f[A>>2]=c+(~((c+-4-b|0)>>>2)<<2);ar(b)}u=I;return 1}function xb(a,b){a=a|0;b=b|0;var c=0,d=0,e=0,g=0,h=0,i=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,v=0,w=0,x=0,y=0,z=0,A=0,B=0;B=u;u=u+32|0;A=B+16|0;z=B+4|0;x=B;f[a+36>>2]=b;y=a+24|0;w=a+28|0;d=f[w>>2]|0;c=f[y>>2]|0;g=d-c>>2;if(g>>>0>=b>>>0){if(g>>>0>b>>>0?(e=c+(b<<2)|0,(d|0)!=(e|0)):0)f[w>>2]=d+(~((d+-4-e|0)>>>2)<<2)}else ch(y,b-g|0,1408);f[A>>2]=0;v=A+4|0;f[v>>2]=0;t=A+8|0;f[t>>2]=0;if(b|0){if((b|0)<0)Lp(A);c=((b+-1|0)>>>5)+1|0;s=ln(c<<2)|0;f[A>>2]=s;f[t>>2]=c;f[v>>2]=b;c=b>>>5;ej(s|0,0,c<<2|0)|0;d=b-(c<<5)|0;c=s+(c<<2)|0;if(d|0)f[c>>2]=f[c>>2]&~(-1>>>(32-d|0))}s=a+4|0;c=(f[s>>2]|0)-(f[a>>2]|0)|0;g=c>>2;f[z>>2]=0;e=z+4|0;f[e>>2]=0;d=z+8|0;f[d>>2]=0;if(g){if((c|0)<0)Lp(z);c=((g+-1|0)>>>5)+1|0;h=ln(c<<2)|0;f[z>>2]=h;f[d>>2]=c;f[e>>2]=g;c=g>>>5;ej(h|0,0,c<<2|0)|0;d=g-(c<<5)|0;c=h+(c<<2)|0;if(d)f[c>>2]=f[c>>2]&~(-1>>>(32-d|0))}else h=0;c=f[a>>2]|0;a:do if((f[s>>2]|0)-c>>2>>>0>2){n=a+12|0;q=a+32|0;o=a+52|0;p=a+56|0;r=a+48|0;m=0;d=b;b:while(1){l=m*3|0;if((m|0)>=0){b=f[c+(l<<2)>>2]|0;e=l+1|0;e=((e|0)%3|0|0)==0?l+-2|0:e;if((e|0)<0)g=-1073741824;else g=f[c+(e<<2)>>2]|0;e=(((l>>>0)%3|0|0)==0?2:-1)+l|0;if((e|0)<0)c=-1073741824;else c=f[c+(e<<2)>>2]|0;if((b|0)!=(g|0)?!((b|0)==(c|0)|(g|0)==(c|0)):0){k=0;do{g=k+l|0;if(!(f[h+(g>>>5<<2)>>2]&1<<(g&31))){c=f[(f[a>>2]|0)+(g<<2)>>2]|0;f[x>>2]=c;e=f[A>>2]|0;if(!(f[e+(c>>>5<<2)>>2]&1<<(c&31)))b=0;else{c=f[w>>2]|0;if((c|0)==(f[q>>2]|0))Ii(y,1408);else{f[c>>2]=-1073741824;f[w>>2]=c+4}c=f[o>>2]|0;if((c|0)==(f[p>>2]|0))Ii(r,x);else{f[c>>2]=f[x>>2];f[o>>2]=c+4}c=f[v>>2]|0;e=f[t>>2]|0;if((c|0)==(e<<5|0)){if((c+1|0)<0){Lp(A);e=f[t>>2]|0}j=e<<6;c=c+32&-32;ri(A,e<<5>>>0<1073741823?(j>>>0>>0?c:j):2147483647);c=f[v>>2]|0}f[v>>2]=c+1;e=f[A>>2]|0;b=e+(c>>>5<<2)|0;f[b>>2]=f[b>>2]&~(1<<(c&31));f[x>>2]=d;c=d;b=1;d=d+1|0}j=e+(c>>>5<<2)|0;f[j>>2]=f[j>>2]|1<<(c&31);c:do if(b){c=g;while(1){if((c|0)==-1073741824){e=68;break c}h=f[z>>2]|0;e=h+(c>>>5<<2)|0;f[e>>2]=f[e>>2]|1<<(c&31);e=f[x>>2]|0;f[(f[y>>2]|0)+(e<<2)>>2]=c;f[(f[a>>2]|0)+(c<<2)>>2]=e;e=c+1|0;do if((c|0)>=0){c=((e|0)%3|0|0)==0?c+-2|0:e;if((c|0)<0)break;c=f[(f[n>>2]|0)+(c<<2)>>2]|0;e=c+1|0;if((c|0)<0)break;c=((e|0)%3|0|0)==0?c+-2|0:e}while(0);if((c|0)==(g|0)){e=67;break}}}else{c=g;while(1){if((c|0)==-1073741824){e=68;break c}h=f[z>>2]|0;e=h+(c>>>5<<2)|0;f[e>>2]=f[e>>2]|1<<(c&31);f[(f[y>>2]|0)+(f[x>>2]<<2)>>2]=c;e=c+1|0;do if((c|0)>=0){c=((e|0)%3|0|0)==0?c+-2|0:e;if((c|0)<0)break;c=f[(f[n>>2]|0)+(c<<2)>>2]|0;e=c+1|0;if((c|0)<0)break;c=((e|0)%3|0|0)==0?c+-2|0:e}while(0);if((c|0)==(g|0)){e=67;break}}}while(0);do if((e|0)==67){e=0;if((g|0)==-1073741824){c=-1073741824;e=74}}else if((e|0)==68)if((g|0)>=0){c=(((g>>>0)%3|0|0)==0?2:-1)+g|0;if((c|0)>=0){c=f[(f[n>>2]|0)+(c<<2)>>2]|0;if((c|0)<0){e=74;break}if(!((c>>>0)%3|0)){c=c+2|0;e=74;break}else{c=c+-1|0;e=74;break}}else e=74}else{c=g;e=74}while(0);d:do if((e|0)==74){h=f[z>>2]|0;g=h+(c>>>5<<2)|0;i=1<<(c&31);e=(c|0)<0;if((c|0)!=-1073741824){if(!b){b=c;c=i;while(1){if(e)break b;f[g>>2]=f[g>>2]|c;c=(((b>>>0)%3|0|0)==0?2:-1)+b|0;do if((c|0)>=0){c=f[(f[n>>2]|0)+(c<<2)>>2]|0;if((c|0)<0)break;if(!((c>>>0)%3|0)){c=c+2|0;break}else{c=c+-1|0;break}}while(0);h=f[z>>2]|0;if((c|0)==-1073741824)break d;else{b=c;g=h+(c>>>5<<2)|0;e=(c|0)<0;c=1<<(c&31)}}}j=f[a>>2]|0;b=g;h=e;e=i;while(1){g=j+(c<<2)|0;do{f[b>>2]=f[b>>2]|e;f[g>>2]=f[x>>2]}while(h);c=(((c>>>0)%3|0|0)==0?2:-1)+c|0;do if((c|0)>=0){c=f[(f[n>>2]|0)+(c<<2)>>2]|0;if((c|0)<0){e=c;break}if(!((c>>>0)%3|0)){e=c+2|0;break}else{e=c+-1|0;break}}else e=c;while(0);h=f[z>>2]|0;if((e|0)==-1073741824)break;else{c=e;b=h+(e>>>5<<2)|0;h=(e|0)<0;e=1<<(e&31)}}}}while(0)}k=k+1|0}while((k|0)<3)}}m=m+1|0;c=f[a>>2]|0;if((m|0)>=(((f[s>>2]|0)-c>>2>>>0)/3|0|0))break a}while(1){}}while(0);j=a+44|0;f[j>>2]=0;c=f[A>>2]|0;b=f[v>>2]|0;y=b>>>5;i=c+(y<<2)|0;b=b&31;e=(y|0)!=0;e:do if(y|b|0){if(!b){g=c;d=0;while(1){f:do if(e){e=0;while(1){if(!(f[g>>2]&1<>2]=d}if((e|0)==31)break;else e=e+1|0}}else{e=0;while(1){if(!(f[g>>2]&1<>2]=d}if((e|0)==31)break f;e=e+1|0;if(!e)break e}}while(0);g=g+4|0;if((g|0)==(i|0))break e;else e=1}}if(e){g=c;d=0;e=0;do{h=0;while(1){if(!(f[g>>2]&1<>2]=e;d=e}if((h|0)==31)break;else h=h+1|0}g=g+4|0}while((g|0)!=(i|0))}else{g=c;d=0}e=0;do{if(!(f[g>>2]&1<>2]=d}e=e+1|0}while((e|0)!=(b|0))}while(0);d=f[z>>2]|0;if(d){ar(d);c=f[A>>2]|0}if(!c){u=B;return 1}ar(c);u=B;return 1}function yb(a,c,d,e,g,i){a=a|0;c=+c;d=d|0;e=e|0;g=g|0;i=i|0;var j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0.0,r=0,s=0,t=0,v=0,w=0,x=0,y=0,z=0,A=0,B=0,C=0,D=0,E=0,F=0,G=0;G=u;u=u+560|0;l=G+8|0;t=G;F=G+524|0;E=F;m=G+512|0;f[t>>2]=0;D=m+12|0;Co(c)|0;if((I|0)<0){C=1;A=19801;c=-c}else{C=(g&2049|0)!=0&1;A=(g&2048|0)==0?((g&1|0)==0?19802:19807):19804}Co(c)|0;B=I&2146435072;do if(B>>>0<2146435072|(B|0)==2146435072&0<0){q=+Gq(c,t)*2.0;j=q!=0.0;if(j)f[t>>2]=(f[t>>2]|0)+-1;w=i|32;if((w|0)==97){r=i&32;p=(r|0)==0?A:A+9|0;o=C|2;j=12-e|0;do if(!(e>>>0>11|(j|0)==0)){c=8.0;do{j=j+-1|0;c=c*16.0}while((j|0)!=0);if((b[p>>0]|0)==45){c=-(c+(-q-c));break}else{c=q+c-c;break}}else c=q;while(0);k=f[t>>2]|0;j=(k|0)<0?0-k|0:k;j=tk(j,((j|0)<0)<<31>>31,D)|0;if((j|0)==(D|0)){j=m+11|0;b[j>>0]=48}b[j+-1>>0]=(k>>31&2)+43;n=j+-2|0;b[n>>0]=i+15;l=(e|0)<1;m=(g&8|0)==0;k=F;while(1){C=~~c;j=k+1|0;b[k>>0]=h[19836+C>>0]|r;c=(c-+(C|0))*16.0;if((j-E|0)==1?!(m&(l&c==0.0)):0){b[j>>0]=46;j=k+2|0}if(!(c!=0.0))break;else k=j}C=j-E|0;E=D-n|0;D=(e|0)!=0&(C+-2|0)<(e|0)?e+2|0:C;j=E+o+D|0;al(a,32,d,j,g);ip(a,p,o);al(a,48,d,j,g^65536);ip(a,F,C);al(a,48,D-C|0,0,0);ip(a,n,E);al(a,32,d,j,g^8192);break}k=(e|0)<0?6:e;if(j){j=(f[t>>2]|0)+-28|0;f[t>>2]=j;c=q*268435456.0}else{j=f[t>>2]|0;c=q}B=(j|0)<0?l:l+288|0;l=B;do{y=~~c>>>0;f[l>>2]=y;l=l+4|0;c=(c-+(y>>>0))*1.0e9}while(c!=0.0);if((j|0)>0){m=B;n=l;while(1){o=(j|0)<29?j:29;j=n+-4|0;if(j>>>0>=m>>>0){l=0;do{x=On(f[j>>2]|0,0,o|0)|0;x=Ho(x|0,I|0,l|0,0)|0;y=I;v=$m(x|0,y|0,1e9,0)|0;f[j>>2]=v;l=Dp(x|0,y|0,1e9,0)|0;j=j+-4|0}while(j>>>0>=m>>>0);if(l){m=m+-4|0;f[m>>2]=l}}l=n;while(1){if(l>>>0<=m>>>0)break;j=l+-4|0;if(!(f[j>>2]|0))l=j;else break}j=(f[t>>2]|0)-o|0;f[t>>2]=j;if((j|0)>0)n=l;else break}}else m=B;if((j|0)<0){e=((k+25|0)/9|0)+1|0;s=(w|0)==102;do{r=0-j|0;r=(r|0)<9?r:9;if(m>>>0>>0){o=(1<>>r;p=0;j=m;do{y=f[j>>2]|0;f[j>>2]=(y>>>r)+p;p=X(y&o,n)|0;j=j+4|0}while(j>>>0>>0);j=(f[m>>2]|0)==0?m+4|0:m;if(!p){m=j;j=l}else{f[l>>2]=p;m=j;j=l+4|0}}else{m=(f[m>>2]|0)==0?m+4|0:m;j=l}l=s?B:m;l=(j-l>>2|0)>(e|0)?l+(e<<2)|0:j;j=(f[t>>2]|0)+r|0;f[t>>2]=j}while((j|0)<0);j=m;e=l}else{j=m;e=l}y=B;if(j>>>0>>0){l=(y-j>>2)*9|0;n=f[j>>2]|0;if(n>>>0>=10){m=10;do{m=m*10|0;l=l+1|0}while(n>>>0>=m>>>0)}}else l=0;s=(w|0)==103;v=(k|0)!=0;m=k-((w|0)!=102?l:0)+((v&s)<<31>>31)|0;if((m|0)<(((e-y>>2)*9|0)+-9|0)){n=m+9216|0;m=B+4+(((n|0)/9|0)+-1024<<2)|0;n=((n|0)%9|0)+1|0;if((n|0)<9){o=10;do{o=o*10|0;n=n+1|0}while((n|0)!=9)}else o=10;p=f[m>>2]|0;r=(p>>>0)%(o>>>0)|0;n=(m+4|0)==(e|0);if(!(n&(r|0)==0)){q=(((p>>>0)/(o>>>0)|0)&1|0)==0?9007199254740992.0:9007199254740994.0;x=(o|0)/2|0;c=r>>>0>>0?.5:n&(r|0)==(x|0)?1.0:1.5;if(C){x=(b[A>>0]|0)==45;q=x?-q:q;c=x?-c:c}n=p-r|0;f[m>>2]=n;if(q+c!=q){x=n+o|0;f[m>>2]=x;if(x>>>0>999999999){l=m;while(1){m=l+-4|0;f[l>>2]=0;if(m>>>0>>0){j=j+-4|0;f[j>>2]=0}x=(f[m>>2]|0)+1|0;f[m>>2]=x;if(x>>>0>999999999)l=m;else break}}l=(y-j>>2)*9|0;o=f[j>>2]|0;if(o>>>0>=10){n=10;do{n=n*10|0;l=l+1|0}while(o>>>0>=n>>>0)}}}w=m+4|0;x=j;j=e>>>0>w>>>0?w:e}else{x=j;j=e}w=j;while(1){if(w>>>0<=x>>>0){t=0;break}j=w+-4|0;if(!(f[j>>2]|0))w=j;else{t=1;break}}e=0-l|0;do if(s){j=((v^1)&1)+k|0;if((j|0)>(l|0)&(l|0)>-5){k=j+-1-l|0;n=i+-1|0}else{k=j+-1|0;n=i+-2|0}j=g&8;if(!j){if(t?(z=f[w+-4>>2]|0,(z|0)!=0):0)if(!((z>>>0)%10|0)){j=10;m=0;do{j=j*10|0;m=m+1|0}while(!((z>>>0)%(j>>>0)|0|0))}else m=0;else m=9;j=((w-y>>2)*9|0)+-9|0;if((n|32|0)==102){i=j-m|0;i=(i|0)>0?i:0;r=0;k=(k|0)<(i|0)?k:i;break}else{i=j+l-m|0;i=(i|0)>0?i:0;r=0;k=(k|0)<(i|0)?k:i;break}}else r=j}else{r=g&8;n=i}while(0);s=k|r;o=(s|0)!=0&1;p=(n|32|0)==102;if(p){v=0;j=(l|0)>0?l:0}else{j=(l|0)<0?e:l;j=tk(j,((j|0)<0)<<31>>31,D)|0;m=D;if((m-j|0)<2)do{j=j+-1|0;b[j>>0]=48}while((m-j|0)<2);b[j+-1>>0]=(l>>31&2)+43;j=j+-2|0;b[j>>0]=n;v=j;j=m-j|0}j=C+1+k+o+j|0;al(a,32,d,j,g);ip(a,A,C);al(a,48,d,j,g^65536);if(p){o=x>>>0>B>>>0?B:x;r=F+9|0;p=r;n=F+8|0;m=o;do{l=tk(f[m>>2]|0,0,r)|0;if((m|0)==(o|0)){if((l|0)==(r|0)){b[n>>0]=48;l=n}}else if(l>>>0>F>>>0){ej(F|0,48,l-E|0)|0;do l=l+-1|0;while(l>>>0>F>>>0)}ip(a,l,p-l|0);m=m+4|0}while(m>>>0<=B>>>0);if(s|0)ip(a,19852,1);if(m>>>0>>0&(k|0)>0)while(1){l=tk(f[m>>2]|0,0,r)|0;if(l>>>0>F>>>0){ej(F|0,48,l-E|0)|0;do l=l+-1|0;while(l>>>0>F>>>0)}ip(a,l,(k|0)<9?k:9);m=m+4|0;l=k+-9|0;if(!(m>>>0>>0&(k|0)>9)){k=l;break}else k=l}al(a,48,k+9|0,9,0)}else{t=t?w:x+4|0;if((k|0)>-1){s=F+9|0;e=(r|0)==0;r=s;n=0-E|0;p=F+8|0;o=x;do{l=tk(f[o>>2]|0,0,s)|0;if((l|0)==(s|0)){b[p>>0]=48;l=p}do if((o|0)==(x|0)){m=l+1|0;ip(a,l,1);if(e&(k|0)<1){l=m;break}ip(a,19852,1);l=m}else{if(l>>>0<=F>>>0)break;ej(F|0,48,l+n|0)|0;do l=l+-1|0;while(l>>>0>F>>>0)}while(0);E=r-l|0;ip(a,l,(k|0)>(E|0)?E:k);k=k-E|0;o=o+4|0}while(o>>>0>>0&(k|0)>-1)}al(a,48,k+18|0,18,0);ip(a,v,D-v|0)}al(a,32,d,j,g^8192)}else{F=(i&32|0)!=0;j=C+3|0;al(a,32,d,j,g&-65537);ip(a,A,C);ip(a,c!=c|0.0!=0.0?(F?19828:19832):F?19820:19824,3);al(a,32,d,j,g^8192)}while(0);u=G;return ((j|0)<(d|0)?d:j)|0} +function Hf(a,b){a=a|0;b=b|0;var c=0,d=0,e=0,g=0,h=0,i=0,j=0,k=0,l=0,m=0,n=0,o=0;n=u;u=u+32|0;m=n+24|0;k=n+16|0;j=n+8|0;l=n;f[a>>2]=4660;f[a+4>>2]=f[b+4>>2];h=a+8|0;i=b+8|0;f[h>>2]=0;e=a+12|0;f[e>>2]=0;d=a+16|0;f[d>>2]=0;g=b+12|0;c=f[g>>2]|0;if(c|0){if((c|0)<0)Lp(h);c=((c+-1|0)>>>5)+1|0;o=ln(c<<2)|0;f[h>>2]=o;f[e>>2]=0;f[d>>2]=c;e=f[i>>2]|0;f[j>>2]=e;f[j+4>>2]=0;i=f[g>>2]|0;f[l>>2]=e+(i>>>5<<2);f[l+4>>2]=i&31;f[k>>2]=f[j>>2];f[k+4>>2]=f[j+4>>2];f[m>>2]=f[l>>2];f[m+4>>2]=f[l+4>>2];$f(h,k,m)}h=a+20|0;f[h>>2]=0;g=a+24|0;f[g>>2]=0;d=a+28|0;f[d>>2]=0;e=b+24|0;c=f[e>>2]|0;if(!c){u=n;return}if((c|0)<0)Lp(h);o=((c+-1|0)>>>5)+1|0;a=ln(o<<2)|0;f[h>>2]=a;f[g>>2]=0;f[d>>2]=o;b=f[b+20>>2]|0;f[j>>2]=b;f[j+4>>2]=0;o=f[e>>2]|0;f[l>>2]=b+(o>>>5<<2);f[l+4>>2]=o&31;f[k>>2]=f[j>>2];f[k+4>>2]=f[j+4>>2];f[m>>2]=f[l>>2];f[m+4>>2]=f[l+4>>2];$f(h,k,m);u=n;return}function If(a,b,c){a=a|0;b=b|0;c=c|0;var d=0,e=0,g=0,h=0,i=0,j=0;i=a+8|0;d=f[i>>2]|0;h=f[a>>2]|0;j=h;do if(d-h>>2>>>0>=b>>>0){a=a+4|0;i=f[a>>2]|0;h=i-h>>2;g=h>>>0>>0;d=g?h:b;if(d|0){e=j;while(1){f[e>>2]=f[c>>2];d=d+-1|0;if(!d)break;else e=e+4|0}}if(!g){d=j+(b<<2)|0;if((i|0)==(d|0))return;else{e=a;d=i+(~((i+-4-d|0)>>>2)<<2)|0;break}}else{g=b-h|0;d=i;e=g;while(1){f[d>>2]=f[c>>2];e=e+-1|0;if(!e)break;else d=d+4|0}e=a;d=i+(g<<2)|0;break}}else{g=h;if(h){e=a+4|0;d=f[e>>2]|0;if((d|0)!=(j|0))f[e>>2]=d+(~((d+-4-h|0)>>>2)<<2);ar(g);f[i>>2]=0;f[e>>2]=0;f[a>>2]=0;d=0}if(b>>>0>1073741823){Lp(a);e=f[a>>2]|0;d=f[i>>2]|0}else e=0;j=d-e|0;d=j>>1;d=j>>2>>>0<536870911?(d>>>0>>0?b:d):1073741823;if(d>>>0>1073741823){Lp(a);c=Ia(4)|0;Eq(c);sa(c|0,1344,125)}h=ln(d<<2)|0;g=a+4|0;f[g>>2]=h;f[a>>2]=h;f[i>>2]=h+(d<<2);d=h;e=b;while(1){f[d>>2]=f[c>>2];e=e+-1|0;if(!e)break;else d=d+4|0}e=g;d=h+(b<<2)|0}while(0);f[e>>2]=d;return}function Jf(a){a=a|0;var b=0,c=0,d=0,e=0,g=0,h=0;g=a+636|0;b=f[g>>2]|0;if(b|0){h=a+640|0;c=f[h>>2]|0;if((c|0)!=(b|0)){do{d=c+-12|0;f[h>>2]=d;e=f[d>>2]|0;if(!e)c=d;else{d=c+-8|0;c=f[d>>2]|0;if((c|0)!=(e|0))f[d>>2]=c+(~((c+-4-e|0)>>>2)<<2);ar(e);c=f[h>>2]|0}}while((c|0)!=(b|0));b=f[g>>2]|0}ar(b)}g=a+624|0;b=f[g>>2]|0;if(b|0){h=a+628|0;c=f[h>>2]|0;if((c|0)!=(b|0)){do{d=c+-12|0;f[h>>2]=d;e=f[d>>2]|0;if(!e)c=d;else{d=c+-8|0;c=f[d>>2]|0;if((c|0)!=(e|0))f[d>>2]=c+(~((c+-4-e|0)>>>2)<<2);ar(e);c=f[h>>2]|0}}while((c|0)!=(b|0));b=f[g>>2]|0}ar(b)}b=f[a+612>>2]|0;if(b|0){d=a+616|0;c=f[d>>2]|0;if((c|0)!=(b|0))f[d>>2]=c+(~((c+-4-b|0)>>>2)<<2);ar(b)}b=f[a+600>>2]|0;if(!b){h=a+580|0;jl(h);h=a+560|0;jl(h);h=a+540|0;jl(h);h=a+524|0;fr(h);a=a+12|0;dj(a);return}d=a+604|0;c=f[d>>2]|0;if((c|0)!=(b|0))f[d>>2]=c+(~((c+-4-b|0)>>>2)<<2);ar(b);h=a+580|0;jl(h);h=a+560|0;jl(h);h=a+540|0;jl(h);h=a+524|0;fr(h);a=a+12|0;dj(a);return}function Kf(a,c,d){a=a|0;c=c|0;d=d|0;var e=0,g=0,i=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0;p=u;u=u+16|0;n=p;o=(f[c+4>>2]|0)-(f[c>>2]|0)>>2;k=d+8|0;j=f[k>>2]|0;k=f[k+4>>2]|0;l=d+16|0;e=l;g=f[e>>2]|0;e=f[e+4>>2]|0;if((k|0)>(e|0)|(k|0)==(e|0)&j>>>0>g>>>0){i=b[(f[d>>2]|0)+g>>0]|0;g=Ho(g|0,e|0,1,0)|0;e=I;q=l;f[q>>2]=g;f[q+4>>2]=e;if(i<<24>>24!=-2)m=3}else{i=0;m=3}if((m|0)==3){if((k|0)>(e|0)|(k|0)==(e|0)&j>>>0>g>>>0){q=b[(f[d>>2]|0)+g>>0]|0;m=Ho(g|0,e|0,1,0)|0;e=l;f[e>>2]=m;f[e+4>>2]=I;e=q}else e=0;Xa[f[(f[a>>2]|0)+40>>2]&7](n,a,i<<24>>24,e<<24>>24);q=a+20|0;m=f[n>>2]|0;f[n>>2]=0;e=f[q>>2]|0;f[q>>2]=m;if(e){Pa[f[(f[e>>2]|0)+4>>2]&127](e);e=f[n>>2]|0;f[n>>2]=0;if(e|0)Pa[f[(f[e>>2]|0)+4>>2]&127](e)}else f[n>>2]=0}e=f[a+20>>2]|0;if(e|0?!(Wa[f[(f[a>>2]|0)+28>>2]&127](a,e)|0):0){q=0;u=p;return q|0}if(!(Na[f[(f[a>>2]|0)+36>>2]&31](a,c,d)|0)){q=0;u=p;return q|0}q=f[a+4>>2]|0;if((q|0?((h[q+36>>0]|0)<<8&65535)<512:0)?!(Wa[f[(f[a>>2]|0)+48>>2]&127](a,o)|0):0){q=0;u=p;return q|0}q=1;u=p;return q|0}function Lf(a,b){a=a|0;b=b|0;var c=0,d=0,e=0,g=0,h=0,i=0,j=0,k=0,l=0,m=0,n=0,o=0;n=u;u=u+32|0;m=n+24|0;k=n+16|0;j=n+8|0;l=n;f[a>>2]=4708;f[a+4>>2]=f[b+4>>2];h=a+8|0;i=b+8|0;f[h>>2]=0;e=a+12|0;f[e>>2]=0;d=a+16|0;f[d>>2]=0;g=b+12|0;c=f[g>>2]|0;if(c|0){if((c|0)<0)Lp(h);c=((c+-1|0)>>>5)+1|0;o=ln(c<<2)|0;f[h>>2]=o;f[e>>2]=0;f[d>>2]=c;e=f[i>>2]|0;f[j>>2]=e;f[j+4>>2]=0;i=f[g>>2]|0;f[l>>2]=e+(i>>>5<<2);f[l+4>>2]=i&31;f[k>>2]=f[j>>2];f[k+4>>2]=f[j+4>>2];f[m>>2]=f[l>>2];f[m+4>>2]=f[l+4>>2];$f(h,k,m)}h=a+20|0;f[h>>2]=0;g=a+24|0;f[g>>2]=0;d=a+28|0;f[d>>2]=0;e=b+24|0;c=f[e>>2]|0;if(!c){u=n;return}if((c|0)<0)Lp(h);o=((c+-1|0)>>>5)+1|0;a=ln(o<<2)|0;f[h>>2]=a;f[g>>2]=0;f[d>>2]=o;b=f[b+20>>2]|0;f[j>>2]=b;f[j+4>>2]=0;o=f[e>>2]|0;f[l>>2]=b+(o>>>5<<2);f[l+4>>2]=o&31;f[k>>2]=f[j>>2];f[k+4>>2]=f[j+4>>2];f[m>>2]=f[l>>2];f[m+4>>2]=f[l+4>>2];$f(h,k,m);u=n;return}function Mf(a,b,c){a=a|0;b=b|0;c=c|0;var d=0,e=0,g=0,h=0,i=0,j=0,k=0,l=0;k=c;e=b;j=k-e|0;h=j>>2;i=a+8|0;d=f[i>>2]|0;g=f[a>>2]|0;l=g;if(h>>>0>d-g>>2>>>0){e=g;if(g){c=a+4|0;d=f[c>>2]|0;if((d|0)!=(l|0))f[c>>2]=d+(~((d+-4-g|0)>>>2)<<2);ar(e);f[i>>2]=0;f[c>>2]=0;f[a>>2]=0;d=0}if(h>>>0>1073741823){Lp(a);c=f[a>>2]|0;d=f[i>>2]|0}else c=0;l=d-c|0;d=l>>1;d=l>>2>>>0<536870911?(d>>>0>>0?h:d):1073741823;if(d>>>0>1073741823){Lp(a);b=Ia(4)|0;Eq(b);sa(b|0,1344,125)}e=ln(d<<2)|0;c=a+4|0;f[c>>2]=e;f[a>>2]=e;f[i>>2]=e+(d<<2);if((j|0)<=0)return;Mg(e|0,b|0,j|0)|0;f[c>>2]=e+(j>>>2<<2);return}a=a+4|0;d=f[a>>2]|0;i=d-g>>2;j=h>>>0>i>>>0;i=j?b+(i<<2)|0:c;g=d;h=d;if((i|0)==(b|0))d=l;else{e=i+-4-e|0;d=b;c=l;while(1){f[c>>2]=f[d>>2];d=d+4|0;if((d|0)==(i|0))break;else c=c+4|0}d=l+((e>>>2)+1<<2)|0}if(j){d=k-i|0;if((d|0)<=0)return;Mg(h|0,i|0,d|0)|0;f[a>>2]=(f[a>>2]|0)+(d>>>2<<2);return}else{if((g|0)==(d|0))return;f[a>>2]=g+(~((g+-4-d|0)>>>2)<<2);return}}function Nf(a,b){a=a|0;b=b|0;var c=0,d=0,e=0,g=0,h=0,i=0,j=0,k=0,l=0,m=0,n=0;n=u;u=u+32|0;m=n;l=a+8|0;d=f[l>>2]|0;k=a+4|0;e=f[k>>2]|0;if(d-e>>2>>>0>=b>>>0){ej(e|0,0,b<<2|0)|0;f[k>>2]=e+(b<<2);u=n;return}c=f[a>>2]|0;g=(e-c>>2)+b|0;if(g>>>0>1073741823){Lp(a);c=f[a>>2]|0;d=f[l>>2]|0;e=f[k>>2]|0}i=d-c|0;j=i>>1;g=i>>2>>>0<536870911?(j>>>0>>0?g:j):1073741823;c=e-c>>2;f[m+12>>2]=0;f[m+16>>2]=a+8;do if(g)if(g>>>0>1073741823){n=Ia(4)|0;Eq(n);sa(n|0,1344,125)}else{d=ln(g<<2)|0;break}else d=0;while(0);f[m>>2]=d;c=d+(c<<2)|0;i=m+8|0;h=m+4|0;f[h>>2]=c;j=m+12|0;f[j>>2]=d+(g<<2);ej(c|0,0,b<<2|0)|0;f[i>>2]=c+(b<<2);d=f[a>>2]|0;c=f[k>>2]|0;if((c|0)==(d|0)){g=h;e=f[h>>2]|0}else{e=f[h>>2]|0;do{c=c+-4|0;b=f[c>>2]|0;f[c>>2]=0;f[e+-4>>2]=b;e=(f[h>>2]|0)+-4|0;f[h>>2]=e}while((c|0)!=(d|0));g=h;d=f[a>>2]|0;c=f[k>>2]|0}f[a>>2]=e;f[g>>2]=d;f[k>>2]=f[i>>2];f[i>>2]=c;a=f[l>>2]|0;f[l>>2]=f[j>>2];f[j>>2]=a;f[m>>2]=f[g>>2];ci(m);u=n;return}function Of(a,c){a=a|0;c=c|0;var d=0,e=0,g=0,i=0,j=0,k=0,l=0,m=0,n=0;g=c+8|0;e=f[g>>2]|0;g=f[g+4>>2]|0;l=c+16|0;i=l;d=f[i>>2]|0;i=Ho(d|0,f[i+4>>2]|0,8,0)|0;j=I;if((g|0)<(j|0)|(g|0)==(j|0)&e>>>0>>0){a=0;return a|0}c=f[c>>2]|0;d=c+d|0;k=d;k=h[k>>0]|h[k+1>>0]<<8|h[k+2>>0]<<16|h[k+3>>0]<<24;d=d+4|0;d=h[d>>0]|h[d+1>>0]<<8|h[d+2>>0]<<16|h[d+3>>0]<<24;n=l;f[n>>2]=i;f[n+4>>2]=j;g=Xn(e|0,g|0,i|0,j|0)|0;e=I;if(d>>>0>e>>>0|(d|0)==(e|0)&k>>>0>g>>>0){n=0;return n|0}e=c+i|0;j=Ho(k|0,d|0,i|0,j|0)|0;n=l;f[n>>2]=j;f[n+4>>2]=I;if((k|0)<1){n=0;return n|0}f[a+40>>2]=e;d=k+-1|0;c=e+d|0;a:do switch((h[c>>0]|0)>>>6&3){case 0:{f[a+44>>2]=d;m=b[c>>0]&63;break}case 1:if((k|0)<2){n=0;return n|0}else{f[a+44>>2]=k+-2;m=e+k+-2|0;m=(h[m+1>>0]|0)<<8&16128|(h[m>>0]|0);break a}case 2:if((k|0)<3){n=0;return n|0}else{f[a+44>>2]=k+-3;m=e+k+-3|0;m=(h[m+1>>0]|0)<<8|(h[m>>0]|0)|(h[m+2>>0]|0)<<16&4128768;break a}case 3:{f[a+44>>2]=k+-4;m=e+k+-4|0;m=(h[m+2>>0]|0)<<16|(h[m+3>>0]|0)<<24&1056964608|(h[m+1>>0]|0)<<8|(h[m>>0]|0);break}default:{}}while(0);n=m+16384|0;f[a+48>>2]=n;n=n>>>0<4194304;return n|0}function Pf(a){a=a|0;var c=0,d=0,e=0,g=0,h=0,i=0,j=0;i=a+12|0;h=f[a>>2]|0;j=a+8|0;c=f[j>>2]|0;d=(c|0)<0;if(!(b[i>>0]|0)){do if(!d)if(!((c>>>0)%3|0)){c=c+2|0;break}else{c=c+-1|0;break}while(0);do if(!(1<<(c&31)&f[(f[h>>2]|0)+(c>>>5<<2)>>2])){if((c|0)>=0){c=f[(f[(f[h+64>>2]|0)+12>>2]|0)+(c<<2)>>2]|0;if((c|0)>=0)if(!((c>>>0)%3|0)){c=c+2|0;break}else{c=c+-1|0;break}}}else c=-1073741824;while(0);f[j>>2]=c;return}e=c+1|0;if(!d)c=((e|0)%3|0|0)==0?c+-2|0:e;e=f[h>>2]|0;if(!(1<<(c&31)&f[e+(c>>>5<<2)>>2]))if((c|0)>=0){c=f[(f[(f[h+64>>2]|0)+12>>2]|0)+(c<<2)>>2]|0;d=c+1|0;if((c|0)>=0){c=((d|0)%3|0|0)==0?c+-2|0:d;f[j>>2]=c;if((c|0)>=0){if((c|0)!=(f[a+4>>2]|0))return;f[j>>2]=-1073741824;return}}else g=7}else g=7;else{c=-1073741824;g=7}if((g|0)==7)f[j>>2]=c;c=f[a+4>>2]|0;do if((c|0)>=0)if(!((c>>>0)%3|0)){c=c+2|0;break}else{c=c+-1|0;break}while(0);do if(!(1<<(c&31)&f[e+(c>>>5<<2)>>2])){if((c|0)>=0){c=f[(f[(f[h+64>>2]|0)+12>>2]|0)+(c<<2)>>2]|0;if((c|0)>=0)if(!((c>>>0)%3|0)){c=c+2|0;break}else{c=c+-1|0;break}}}else c=-1073741824;while(0);f[j>>2]=c;b[i>>0]=0;return}function Qf(a,b){a=a|0;b=b|0;var c=0,d=0,e=0,g=0,i=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0;m=f[a>>2]|0;p=a+4|0;c=f[p>>2]|0;l=m;d=c+(~((c+-4-l|0)>>>2)<<2)|0;if((c|0)==(m|0))d=m;else{f[p>>2]=d;c=d}s=a+16|0;f[s>>2]=0;t=a+12|0;f[t>>2]=d;k=b+8|0;d=k;n=f[d>>2]|0;d=f[d+4>>2]|0;r=b+16|0;g=r;i=f[g>>2]|0;g=Ho(i|0,f[g+4>>2]|0,4,0)|0;e=I;if((d|0)<(e|0)|(d|0)==(e|0)&n>>>0>>0){a=0;return a|0}o=(f[b>>2]|0)+i|0;o=h[o>>0]|h[o+1>>0]<<8|h[o+2>>0]<<16|h[o+3>>0]<<24;j=r;f[j>>2]=g;f[j+4>>2]=e;if(!((o|0)!=0&(o&3|0)==0)){a=0;return a|0}j=Xn(n|0,d|0,g|0,e|0)|0;i=I;if(0>(i|0)|0==(i|0)&o>>>0>j>>>0){a=0;return a|0}j=o>>>2;i=c-l>>2;if(j>>>0<=i>>>0)if(j>>>0>>0?(q=m+(j<<2)|0,(c|0)!=(q|0)):0){f[p>>2]=c+(~((c+-4-q|0)>>>2)<<2);c=n}else c=n;else{ui(a,j-i|0);c=k;e=r;g=f[e>>2]|0;e=f[e+4>>2]|0;d=f[c+4>>2]|0;c=f[c>>2]|0}q=Ho(g|0,e|0,o|0,0)|0;p=I;if((d|0)<(p|0)|(d|0)==(p|0)&c>>>0>>0){a=0;return a|0}Mg(f[a>>2]|0,(f[b>>2]|0)+g|0,o|0)|0;q=r;q=Ho(f[q>>2]|0,f[q+4>>2]|0,o|0,0)|0;b=r;f[b>>2]=q;f[b+4>>2]=I;f[t>>2]=f[a>>2];f[s>>2]=0;a=1;return a|0}function Rf(a,b,c,d){a=a|0;b=$(b);c=$(c);d=d|0;var e=La,f=La,g=0.0,h=La,i=La,j=0.0,k=0.0,l=0.0,m=0.0;if(!(b>=$(0.0)))Ga(9571,9477,191,9585);if(!(c>=$(0.0)))Ga(9614,9477,192,9585);if(!(b<=$(1.0)))Ga(9628,9477,193,9585);if(!(c<=$(1.0)))Ga(9642,9477,194,9585);f=$(b+c);e=$(b-c);if(!(e<=$(.5))|(!(e>=$(-.5))|(!(f>=$(.5))|!(f<=$(1.5))))){do if(!(f<=$(.5))){if(f>=$(1.5)){e=$($(1.5)-c);c=$($(1.5)-b);break}if(!(e<=$(-.5))){e=$(c+$(.5));c=$(b+$(-.5));break}else{e=$(c+$(-.5));c=$(b+$(.5));break}}else{e=$($(.5)-c);c=$($(.5)-b)}while(0);b=e;i=$(e-c);f=$(c+e);g=-1.0}else{i=e;g=1.0}h=$(+b*2.0+-1.0);b=$(+c*2.0+-1.0);l=+f*2.0;j=l+-1.0;l=3.0-l;m=+i*2.0;k=m+1.0;m=1.0-m;k=m>2]=$(0.0);h=$(0.0);i=$(0.0);a=d+4|0;n[a>>2]=h;d=d+8|0;n[d>>2]=i;return}else{i=$($(1.0)/$(L($(e))));f=$(c*i);n[d>>2]=f;h=$(h*i);i=$(b*i);a=d+4|0;n[a>>2]=h;d=d+8|0;n[d>>2]=i;return}}function Sf(a,c,d,e){a=a|0;c=c|0;d=d|0;e=e|0;var g=0,h=0,i=0,j=0,k=0,l=0,m=0;m=u;u=u+80|0;l=m;j=m+60|0;k=m+40|0;g=l;h=d;i=g+40|0;do{f[g>>2]=f[h>>2];g=g+4|0;h=h+4|0}while((g|0)<(i|0));pc(a,l,j);if(f[a>>2]|0){l=l+24|0;fr(l);u=m;return}h=a+4|0;Lo(h);if(b[j+7>>0]|0){f[k>>2]=0;f[k+4>>2]=0;f[k+8>>2]=0;Pj(k,19267,27);f[a>>2]=-1;ml(h,k);Lo(k);l=l+24|0;fr(l);u=m;return}gh(k,b[j+8>>0]|0);g=f[k>>2]|0;if(!g){j=k+16|0;g=f[j>>2]|0;f[j>>2]=0;Ad(a,g,c,d,e);if(!(f[a>>2]|0)){Lo(h);f[a>>2]=0;f[a+4>>2]=0;f[a+8>>2]=0;f[a+12>>2]=0}if(g|0)Pa[f[(f[g>>2]|0)+4>>2]&127](g)}else{f[a>>2]=g;ml(h,k+4|0)}c=k+16|0;g=f[c>>2]|0;f[c>>2]=0;if(g|0)Pa[f[(f[g>>2]|0)+4>>2]&127](g);Lo(k+4|0);l=l+24|0;fr(l);u=m;return}function Tf(a,c,d,e){a=a|0;c=c|0;d=d|0;e=e|0;var g=0,h=0,i=0,j=0,k=0,l=0,m=0;m=u;u=u+80|0;l=m;j=m+60|0;k=m+40|0;g=l;h=d;i=g+40|0;do{f[g>>2]=f[h>>2];g=g+4|0;h=h+4|0}while((g|0)<(i|0));pc(a,l,j);if(f[a>>2]|0){l=l+24|0;fr(l);u=m;return}h=a+4|0;Lo(h);if((b[j+7>>0]|0)!=1){f[k>>2]=0;f[k+4>>2]=0;f[k+8>>2]=0;Pj(k,19246,20);f[a>>2]=-1;ml(h,k);Lo(k);l=l+24|0;fr(l);u=m;return}qi(k,b[j+8>>0]|0);g=f[k>>2]|0;if(!g){j=k+16|0;g=f[j>>2]|0;f[j>>2]=0;lm(a,g,c,d,e);if(!(f[a>>2]|0)){Lo(h);f[a>>2]=0;f[a+4>>2]=0;f[a+8>>2]=0;f[a+12>>2]=0}if(g|0)Pa[f[(f[g>>2]|0)+4>>2]&127](g)}else{f[a>>2]=g;ml(h,k+4|0)}c=k+16|0;g=f[c>>2]|0;f[c>>2]=0;if(g|0)Pa[f[(f[g>>2]|0)+4>>2]&127](g);Lo(k+4|0);l=l+24|0;fr(l);u=m;return}function Uf(a){a=a|0;var b=0,c=0,d=0,e=0,g=0,h=0;g=a+128|0;b=f[g>>2]|0;if(b|0){h=a+132|0;c=f[h>>2]|0;if((c|0)!=(b|0)){do{d=c+-12|0;f[h>>2]=d;e=f[d>>2]|0;if(!e)c=d;else{d=c+-8|0;c=f[d>>2]|0;if((c|0)!=(e|0))f[d>>2]=c+(~((c+-4-e|0)>>>2)<<2);ar(e);c=f[h>>2]|0}}while((c|0)!=(b|0));b=f[g>>2]|0}ar(b)}g=a+116|0;b=f[g>>2]|0;if(b|0){h=a+120|0;c=f[h>>2]|0;if((c|0)!=(b|0)){do{d=c+-12|0;f[h>>2]=d;e=f[d>>2]|0;if(!e)c=d;else{d=c+-8|0;c=f[d>>2]|0;if((c|0)!=(e|0))f[d>>2]=c+(~((c+-4-e|0)>>>2)<<2);ar(e);c=f[h>>2]|0}}while((c|0)!=(b|0));b=f[g>>2]|0}ar(b)}b=f[a+104>>2]|0;if(b|0){d=a+108|0;c=f[d>>2]|0;if((c|0)!=(b|0))f[d>>2]=c+(~((c+-4-b|0)>>>2)<<2);ar(b)}b=f[a+92>>2]|0;if(!b){h=a+72|0;jl(h);h=a+52|0;jl(h);h=a+32|0;jl(h);a=a+12|0;jl(a);return}d=a+96|0;c=f[d>>2]|0;if((c|0)!=(b|0))f[d>>2]=c+(~((c+-4-b|0)>>>2)<<2);ar(b);h=a+72|0;jl(h);h=a+52|0;jl(h);h=a+32|0;jl(h);a=a+12|0;jl(a);return}function Vf(a,b){a=a|0;b=b|0;var c=0,d=0,e=0,g=0,h=0,i=0,j=0,k=0,l=0;k=f[b>>2]|0;l=f[k>>2]|0;e=f[a+4>>2]|0;b=f[k+4>>2]|0;h=e+-1|0;i=(h&e|0)==0;if(i)g=h&b;else g=(b>>>0)%(e>>>0)|0;c=(f[a>>2]|0)+(g<<2)|0;j=f[c>>2]|0;while(1){b=f[j>>2]|0;if((b|0)==(k|0))break;else j=b}if((j|0)!=(a+8|0)){b=f[j+4>>2]|0;if(i)b=b&h;else b=(b>>>0)%(e>>>0)|0;if((b|0)==(g|0)){c=l;d=18}else d=11}else d=11;do if((d|0)==11){if(l|0){b=f[l+4>>2]|0;if(i)b=b&h;else b=(b>>>0)%(e>>>0)|0;if((b|0)==(g|0)){c=l;b=l;d=19;break}}f[c>>2]=0;c=f[k>>2]|0;d=18}while(0);if((d|0)==18){b=c;if(c)d=19}if((d|0)==19){c=f[c+4>>2]|0;if(i)c=c&h;else c=(c>>>0)%(e>>>0)|0;if((c|0)!=(g|0)){f[(f[a>>2]|0)+(c<<2)>>2]=j;b=f[k>>2]|0}}f[j>>2]=b;f[k>>2]=0;a=a+12|0;f[a>>2]=(f[a>>2]|0)+-1;if(!k)return l|0;b=f[k+20>>2]|0;if(b|0){c=k+24|0;if((f[c>>2]|0)!=(b|0))f[c>>2]=b;ar(b)}Lo(k+8|0);ar(k);return l|0}function Wf(a){a=a|0;var b=0,c=0,d=0,e=0,g=0,h=0,i=0,j=0,k=0,l=0,m=0;m=u;u=u+16|0;j=m+4|0;k=m;l=a+8|0;g=a+100|0;h=f[l>>2]|0;h=(f[h+28>>2]|0)-(f[h+24>>2]|0)>>2;f[j>>2]=0;d=a+104|0;c=f[d>>2]|0;b=f[g>>2]|0;i=c-b>>2;if(h>>>0<=i>>>0){if(h>>>0>>0?(e=b+(h<<2)|0,(c|0)!=(e|0)):0)f[d>>2]=c+(~((c+-4-e|0)>>>2)<<2)}else ch(g,h-i|0,j);d=a+120|0;b=f[d>>2]|0;if(!b){a=f[l>>2]|0;a=(f[a+4>>2]|0)-(f[a>>2]|0)>>2;b=(a>>>0)/3|0;if(a>>>0<=2){u=m;return 1}c=0;do{f[k>>2]=c*3;f[j>>2]=f[k>>2];Ob(l,j);c=c+1|0}while((c|0)<(b|0));u=m;return 1}else{c=f[b>>2]|0;if((f[b+4>>2]|0)==(c|0)){u=m;return 1}b=0;do{f[k>>2]=f[c+(b<<2)>>2];f[j>>2]=f[k>>2];Ob(l,j);b=b+1|0;a=f[d>>2]|0;c=f[a>>2]|0}while(b>>>0<(f[a+4>>2]|0)-c>>2>>>0);u=m;return 1}return 0}function Xf(a){a=a|0;var b=0,c=0,d=0,e=0,g=0,h=0;g=a+124|0;b=f[g>>2]|0;if(b|0){h=a+128|0;c=f[h>>2]|0;if((c|0)!=(b|0)){do{d=c+-12|0;f[h>>2]=d;e=f[d>>2]|0;if(!e)c=d;else{d=c+-8|0;c=f[d>>2]|0;if((c|0)!=(e|0))f[d>>2]=c+(~((c+-4-e|0)>>>2)<<2);ar(e);c=f[h>>2]|0}}while((c|0)!=(b|0));b=f[g>>2]|0}ar(b)}g=a+112|0;b=f[g>>2]|0;if(b|0){h=a+116|0;c=f[h>>2]|0;if((c|0)!=(b|0)){do{d=c+-12|0;f[h>>2]=d;e=f[d>>2]|0;if(!e)c=d;else{d=c+-8|0;c=f[d>>2]|0;if((c|0)!=(e|0))f[d>>2]=c+(~((c+-4-e|0)>>>2)<<2);ar(e);c=f[h>>2]|0}}while((c|0)!=(b|0));b=f[g>>2]|0}ar(b)}b=f[a+100>>2]|0;if(b|0){d=a+104|0;c=f[d>>2]|0;if((c|0)!=(b|0))f[d>>2]=c+(~((c+-4-b|0)>>>2)<<2);ar(b)}b=f[a+88>>2]|0;if(!b){h=a+68|0;jl(h);h=a+48|0;jl(h);h=a+28|0;jl(h);a=a+12|0;fr(a);return}d=a+92|0;c=f[d>>2]|0;if((c|0)!=(b|0))f[d>>2]=c+(~((c+-4-b|0)>>>2)<<2);ar(b);h=a+68|0;jl(h);h=a+48|0;jl(h);h=a+28|0;jl(h);a=a+12|0;fr(a);return}function Yf(a,b){a=a|0;b=b|0;var c=0,d=0,e=0,g=0,h=0,i=0,j=0,k=0;k=u;u=u+112|0;h=k+96|0;j=k+16|0;i=k+4|0;g=k;c=j+76|0;d=j;e=d+76|0;do{f[d>>2]=0;d=d+4|0}while((d|0)<(e|0));f[c>>2]=-1073741824;f[i>>2]=0;e=i+4|0;f[e>>2]=0;f[i+8>>2]=0;f[g>>2]=i;f[h>>2]=f[g>>2];if(Jd(j,a,h)|0){g=f[i>>2]|0;Bf(b,g,g+((f[e>>2]|0)-g>>2<<2)|0);g=f[j+68>>2]|0}else g=0;c=f[i>>2]|0;if(c|0){d=f[e>>2]|0;if((d|0)!=(c|0))f[e>>2]=d+(~((d+-4-c|0)>>>2)<<2);ar(c)}c=f[j+56>>2]|0;if(c|0)ar(c);c=f[j+32>>2]|0;if(c|0){e=j+36|0;d=f[e>>2]|0;if((d|0)!=(c|0))f[e>>2]=d+(~((d+-4-c|0)>>>2)<<2);ar(c)}c=f[j+20>>2]|0;if(c|0){e=j+24|0;d=f[e>>2]|0;if((d|0)!=(c|0))f[e>>2]=d+(~((d+-4-c|0)>>>2)<<2);ar(c)}c=f[j+8>>2]|0;if(c|0){e=j+12|0;d=f[e>>2]|0;if((d|0)!=(c|0))f[e>>2]=d+(~((d+-4-c|0)>>>2)<<2);ar(c)}j=j+4|0;c=f[j>>2]|0;f[j>>2]=0;if(!c){u=k;return g|0}sj(c);ar(c);u=k;return g|0}function Zf(a,c){a=a|0;c=c|0;var d=0,e=0,g=0,i=0,j=0,k=0,l=0;f[c>>2]=1;e=a+4|0;l=c+8|0;k=c+12|0;c=f[l>>2]|0;d=(f[k>>2]|0)-c|0;if(d>>>0<4294967292){Gk(l,d+4|0,0);c=f[l>>2]|0}j=c+d|0;i=h[e>>0]|h[e+1>>0]<<8|h[e+2>>0]<<16|h[e+3>>0]<<24;b[j>>0]=i;b[j+1>>0]=i>>8;b[j+2>>0]=i>>16;b[j+3>>0]=i>>24;j=a+8|0;i=a+12|0;c=f[j>>2]|0;if((f[i>>2]|0)!=(c|0)){g=0;do{d=c+(g<<2)|0;c=f[l>>2]|0;e=(f[k>>2]|0)-c|0;if(e>>>0<4294967292){Gk(l,e+4|0,0);c=f[l>>2]|0}c=c+e|0;e=h[d>>0]|h[d+1>>0]<<8|h[d+2>>0]<<16|h[d+3>>0]<<24;b[c>>0]=e;b[c+1>>0]=e>>8;b[c+2>>0]=e>>16;b[c+3>>0]=e>>24;g=g+1|0;c=f[j>>2]|0}while(g>>>0<(f[i>>2]|0)-c>>2>>>0)}e=a+20|0;d=f[l>>2]|0;c=(f[k>>2]|0)-d|0;if(c>>>0<4294967292){Gk(l,c+4|0,0);l=f[l>>2]|0;l=l+c|0;k=h[e>>0]|h[e+1>>0]<<8|h[e+2>>0]<<16|h[e+3>>0]<<24;b[l>>0]=k;b[l+1>>0]=k>>8;b[l+2>>0]=k>>16;b[l+3>>0]=k>>24;return}else{l=d;l=l+c|0;k=h[e>>0]|h[e+1>>0]<<8|h[e+2>>0]<<16|h[e+3>>0]<<24;b[l>>0]=k;b[l+1>>0]=k>>8;b[l+2>>0]=k>>16;b[l+3>>0]=k>>24;return}}function _f(a,b,c){a=a|0;b=b|0;c=c|0;var d=0,e=0,g=0,h=0,i=0,j=0,k=0,l=0,m=0;k=c;i=b;j=k-i|0;g=j>>2;h=a+8|0;d=f[h>>2]|0;l=f[a>>2]|0;m=l;if(g>>>0<=d-l>>2>>>0){j=a+4|0;e=(f[j>>2]|0)-l>>2;h=g>>>0>e>>>0;g=h?b+(e<<2)|0:c;e=g;c=e-i|0;d=c>>2;if(d|0)rm(l|0,b|0,c|0)|0;c=m+(d<<2)|0;if(h){d=k-e|0;if((d|0)<=0)return;Mg(f[j>>2]|0,g|0,d|0)|0;f[j>>2]=(f[j>>2]|0)+(d>>>2<<2);return}else{d=f[j>>2]|0;if((d|0)==(c|0))return;f[j>>2]=d+(~((d+-4-c|0)>>>2)<<2);return}}e=l;if(l){c=a+4|0;d=f[c>>2]|0;if((d|0)!=(m|0))f[c>>2]=d+(~((d+-4-l|0)>>>2)<<2);ar(e);f[h>>2]=0;f[c>>2]=0;f[a>>2]=0;d=0}if(g>>>0>1073741823){Lp(a);c=f[a>>2]|0;d=f[h>>2]|0}else c=0;m=d-c|0;d=m>>1;d=m>>2>>>0<536870911?(d>>>0>>0?g:d):1073741823;if(d>>>0>1073741823){Lp(a);b=Ia(4)|0;Eq(b);sa(b|0,1344,125)}e=ln(d<<2)|0;c=a+4|0;f[c>>2]=e;f[a>>2]=e;f[h>>2]=e+(d<<2);if((j|0)<=0)return;Mg(e|0,b|0,j|0)|0;f[c>>2]=e+(j>>>2<<2);return}function $f(a,b,c){a=a|0;b=b|0;c=c|0;var d=0,e=0,g=0,h=0,i=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0;p=u;u=u+48|0;n=p+40|0;m=p+32|0;j=p+8|0;k=p;l=p+24|0;o=p+16|0;g=a+4|0;q=f[g>>2]|0;d=f[b>>2]|0;b=f[b+4>>2]|0;e=c;h=f[e>>2]|0;e=f[e+4>>2]|0;i=h-d<<3;f[g>>2]=q-b+e+i;g=(f[a>>2]|0)+(q>>>5<<2)|0;a=q&31;c=g;if((b|0)!=(a|0)){q=j;f[q>>2]=d;f[q+4>>2]=b;q=k;f[q>>2]=h;f[q+4>>2]=e;f[l>>2]=c;f[l+4>>2]=a;f[m>>2]=f[j>>2];f[m+4>>2]=f[j+4>>2];f[n>>2]=f[k>>2];f[n+4>>2]=f[k+4>>2];he(o,m,n,l);u=p;return}e=e-b+i|0;a=d;if((e|0)>0){if(!b){h=a;c=e;b=0}else{h=32-b|0;c=(e|0)<(h|0)?e:h;h=-1>>>(h-c|0)&-1<>2]=f[g>>2]&~h|f[a>>2]&h;b=c+b|0;h=a+4|0;g=g+(b>>>5<<2)|0;d=h;c=e-c|0;b=b&31}e=c>>>5;rm(g|0,d|0,e<<2|0)|0;d=c-(e<<5)|0;a=g+(e<<2)|0;c=a;if((d|0)>0){b=-1>>>(32-d|0);f[a>>2]=f[a>>2]&~b|f[h+(e<<2)>>2]&b;b=d}}f[o>>2]=c;f[o+4>>2]=b;u=p;return}function ag(a,c,d){a=a|0;c=c|0;d=d|0;var e=0,g=0,h=0,i=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,v=0;v=u;u=u+16|0;s=v;e=f[a+40>>2]|0;j=f[a+44>>2]|0;if((e|0)==(j|0)){t=0;u=v;return t|0}k=s+11|0;m=s+4|0;l=d+11|0;n=d+4|0;a=e;a:while(1){f[s>>2]=0;f[s+4>>2]=0;f[s+8>>2]=0;do if(fj(f[a>>2]|0,c,s)|0?(p=b[k>>0]|0,q=p<<24>>24<0,p=p&255,o=q?f[m>>2]|0:p,i=b[l>>0]|0,r=i<<24>>24<0,(o|0)==((r?f[n>>2]|0:i&255)|0)):0){g=f[s>>2]|0;i=q?g:s;e=r?f[d>>2]|0:d;h=(o|0)==0;if(q){if(h)break a;if(!(rl(i,e,o)|0))break a;else break}if(h)break a;if((g&255)<<24>>24==(b[e>>0]|0)){g=p;h=s;do{g=g+-1|0;h=h+1|0;if(!g)break a;e=e+1|0}while((b[h>>0]|0)==(b[e>>0]|0))}}while(0);Lo(s);a=a+4|0;if((a|0)==(j|0)){a=0;t=14;break}}if((t|0)==14){u=v;return a|0}t=f[a>>2]|0;Lo(s);u=v;return t|0}function bg(a,c,d){a=a|0;c=c|0;d=d|0;var e=0,g=0,h=0,i=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0;e=f[d>>2]|0;m=f[d+4>>2]|0;a:do if((e|0)==(m|0)){n=a+8|0;o=a+12|0;q=0}else{k=f[c>>2]|0;l=a+8|0;j=a+12|0;d=0;b:while(1){h=f[e>>2]|0;i=f[k+(h<<2)>>2]|0;if((i|0)>=(d|0)){d=f[l>>2]|0;c=(f[j>>2]|0)-d|0;if((c|0)>0){g=c>>2;a=0;do{c=f[d+(a<<2)>>2]|0;if(b[c+84>>0]|0)break b;c=f[c+68>>2]|0;f[c+(i<<2)>>2]=f[c+(h<<2)>>2];a=a+1|0}while((a|0)<(g|0))}d=i+1|0}e=e+4|0;if((e|0)==(m|0)){n=l;o=j;q=d;break a}}Ga(18230,18249,91,18290)}while(0);c=f[o>>2]|0;d=f[n>>2]|0;if((c-d|0)>0)j=0;else return;do{g=f[d+(j<<2)>>2]|0;b[g+84>>0]=0;h=g+68|0;g=g+72|0;e=f[g>>2]|0;a=f[h>>2]|0;i=e-a>>2;if(q>>>0<=i>>>0){if(q>>>0>>0?(p=a+(q<<2)|0,(e|0)!=(p|0)):0)f[g>>2]=e+(~((e+-4-p|0)>>>2)<<2)}else{ch(h,q-i|0,1512);d=f[n>>2]|0;c=f[o>>2]|0}j=j+1|0}while((j|0)<(c-d>>2|0));return}function cg(a,c){a=a|0;c=c|0;var d=0,e=La,g=La,h=0,i=0,j=0,k=0,l=0,m=0,o=0,p=0,q=0,r=0,s=0,t=0,v=0,w=La,x=La,y=0,z=0;v=u;u=u+16|0;p=v;m=f[a+24>>2]|0;r=a+8|0;d=b[(f[r>>2]|0)+24>>0]|0;o=d<<24>>24;t=o<<2;s=Zq(o>>>0>1073741823?-1:o<<2)|0;vp(p);En(p,$(n[a+32>>2]),(1<>2]|0;m=(f[f[m>>2]>>2]|0)+(f[m+48>>2]|0)|0;if(!c){_q(s);u=v;return 1}q=p+4|0;l=a+28|0;if(d<<24>>24>0){h=0;i=0;j=0}else{a=0;d=0;while(1){Mg((f[f[(f[r>>2]|0)+64>>2]>>2]|0)+d|0,s|0,t|0)|0;a=a+1|0;if((a|0)==(c|0))break;else d=d+t|0}_q(s);u=v;return 1}while(1){a=f[l>>2]|0;e=$(n[q>>2]);g=$(n[p>>2]);d=0;k=j;while(1){z=f[m+(k<<2)>>2]|0;y=(z|0)<0;w=$(e*$((y?0-z|0:z)|0));x=$(-w);w=$(g*(y?x:w));w=$($(n[a+(d<<2)>>2])+w);n[s+(d<<2)>>2]=w;d=d+1|0;if((d|0)==(o|0))break;else k=k+1|0}Mg((f[f[(f[r>>2]|0)+64>>2]>>2]|0)+i|0,s|0,t|0)|0;h=h+1|0;if((h|0)==(c|0))break;else{i=i+t|0;j=o+j|0}}_q(s);u=v;return 1}function dg(a,b){a=a|0;b=b|0;var c=0,e=0,g=0,h=0,i=0,j=0,k=0,l=0;j=d[b>>1]|0;k=d[b+2>>1]|0;l=d[b+4>>1]|0;i=d[b+6>>1]|0;b=((((j^318)&65535)+239^k&65535)+239^l&65535)+239^i&65535;e=f[a+4>>2]|0;if(!e){l=0;return l|0}h=e+-1|0;c=(h&e|0)==0;if(c)g=b&h;else g=(b>>>0)%(e>>>0)|0;b=f[(f[a>>2]|0)+(g<<2)>>2]|0;if(!b){l=0;return l|0}b=f[b>>2]|0;if(!b){l=0;return l|0}if(c){while(1){if((f[b+4>>2]&h|0)!=(g|0)){b=0;a=20;break}if((((d[b+8>>1]|0)==j<<16>>16?(d[b+10>>1]|0)==k<<16>>16:0)?(d[b+12>>1]|0)==l<<16>>16:0)?(d[b+14>>1]|0)==i<<16>>16:0){a=20;break}b=f[b>>2]|0;if(!b){b=0;a=20;break}}if((a|0)==20)return b|0}else{while(1){if((((f[b+4>>2]|0)>>>0)%(e>>>0)|0|0)!=(g|0)){b=0;a=20;break}if((((d[b+8>>1]|0)==j<<16>>16?(d[b+10>>1]|0)==k<<16>>16:0)?(d[b+12>>1]|0)==l<<16>>16:0)?(d[b+14>>1]|0)==i<<16>>16:0){a=20;break}b=f[b>>2]|0;if(!b){b=0;a=20;break}}if((a|0)==20)return b|0}return 0}function eg(a,b,c,d){a=a|0;b=b|0;c=c|0;d=d|0;var e=0,g=0,h=0,i=0,j=0,k=0,l=0;k=b+16|0;l=f[k>>2]|0;g=(f[c>>2]|0)-l|0;i=c+4|0;e=(f[i>>2]|0)-l|0;j=c;f[j>>2]=g;f[j+4>>2]=e;j=f[k>>2]|0;if((j|0)<(g|0))Ga(10070,9477,250,10093);if((j|0)<(e|0))Ga(10105,9477,251,10093);h=0-j|0;if((g|0)<(h|0))Ga(10128,9477,252,10093);if((e|0)<(h|0))Ga(10152,9477,253,10093);if((((e|0)>-1?e:0-e|0)+((g|0)>-1?g:0-g|0)|0)>(j|0)){Yh(b+4|0,c,i);g=f[c>>2]|0;e=f[i>>2]|0;h=f[k>>2]|0;i=0}else{h=j;i=1}c=(f[d>>2]|0)+g|0;f[a>>2]=c;e=(f[d+4>>2]|0)+e|0;g=a+4|0;f[g>>2]=e;if((h|0)>=(c|0)){if((c|0)<(0-h|0))c=(f[b+8>>2]|0)+c|0}else c=c-(f[b+8>>2]|0)|0;f[a>>2]=c;if((h|0)>=(e|0)){if((e|0)<(0-h|0))e=(f[b+8>>2]|0)+e|0}else e=e-(f[b+8>>2]|0)|0;f[g>>2]=e;if(i){d=c;b=e;d=d+l|0;l=b+l|0;b=a;a=b;f[a>>2]=d;b=b+4|0;f[b>>2]=l;return}Yh(b+4|0,a,g);d=f[a>>2]|0;b=f[g>>2]|0;d=d+l|0;l=b+l|0;b=a;a=b;f[a>>2]=d;b=b+4|0;f[b>>2]=l;return}function fg(a,c){a=a|0;c=c|0;var d=0,e=0,g=0,h=0,i=0,j=0,k=0,l=0;j=b[c>>0]|0;k=b[c+1>>0]|0;l=b[c+2>>0]|0;i=b[c+3>>0]|0;c=(((j&255^318)+239^k&255)+239^l&255)+239^i&255;e=f[a+4>>2]|0;if(!e){l=0;return l|0}h=e+-1|0;d=(h&e|0)==0;if(d)g=c&h;else g=(c>>>0)%(e>>>0)|0;c=f[(f[a>>2]|0)+(g<<2)>>2]|0;if(!c){l=0;return l|0}c=f[c>>2]|0;if(!c){l=0;return l|0}if(d){while(1){if((f[c+4>>2]&h|0)!=(g|0)){c=0;a=20;break}if((((b[c+8>>0]|0)==j<<24>>24?(b[c+9>>0]|0)==k<<24>>24:0)?(b[c+10>>0]|0)==l<<24>>24:0)?(b[c+11>>0]|0)==i<<24>>24:0){a=20;break}c=f[c>>2]|0;if(!c){c=0;a=20;break}}if((a|0)==20)return c|0}else{while(1){if((((f[c+4>>2]|0)>>>0)%(e>>>0)|0|0)!=(g|0)){c=0;a=20;break}if((((b[c+8>>0]|0)==j<<24>>24?(b[c+9>>0]|0)==k<<24>>24:0)?(b[c+10>>0]|0)==l<<24>>24:0)?(b[c+11>>0]|0)==i<<24>>24:0){a=20;break}c=f[c>>2]|0;if(!c){c=0;a=20;break}}if((a|0)==20)return c|0}return 0}function gg(a,b,c){a=a|0;b=b|0;c=c|0;var d=0,e=0,g=0,h=0,i=0,j=0;j=u;u=u+16|0;h=j;f[h>>2]=b;if((b|0)<=-1)Ga(6209,6221,107,6258);i=a+8|0;if(((f[a+12>>2]|0)-(f[i>>2]|0)>>2|0)<=(b|0))Ah(i,b+1|0);d=f[(f[c>>2]|0)+56>>2]|0;do if((d|0)<4){g=a+20+(d*12|0)+4|0;e=f[g>>2]|0;if((e|0)==(f[a+20+(d*12|0)+8>>2]|0)){Ii(a+20+(d*12|0)|0,h);break}else{f[e>>2]=b;f[g>>2]=e+4;break}}while(0);g=f[c>>2]|0;a=f[h>>2]|0;f[g+60>>2]=a;a=(f[i>>2]|0)+(a<<2)|0;f[c>>2]=0;b=f[a>>2]|0;f[a>>2]=g;if(!b){u=j;return}a=b+88|0;d=f[a>>2]|0;f[a>>2]=0;if(d|0){e=f[d+8>>2]|0;if(e|0){g=d+12|0;if((f[g>>2]|0)!=(e|0))f[g>>2]=e;ar(e)}ar(d)}d=f[b+68>>2]|0;if(d|0){g=b+72|0;e=f[g>>2]|0;if((e|0)!=(d|0))f[g>>2]=e+(~((e+-4-d|0)>>>2)<<2);ar(d)}a=b+64|0;d=f[a>>2]|0;f[a>>2]=0;if(d|0){e=f[d>>2]|0;if(e|0){g=d+4|0;if((f[g>>2]|0)!=(e|0))f[g>>2]=e;ar(e)}ar(d)}ar(b);u=j;return}function hg(a,c,d){a=a|0;c=c|0;d=d|0;var e=0,g=0,h=0,i=0,j=0,k=0;j=c;h=d-j|0;i=a+8|0;e=f[i>>2]|0;g=f[a>>2]|0;k=g;if(h>>>0>(e-g|0)>>>0){if(g){e=a+4|0;if((f[e>>2]|0)!=(k|0))f[e>>2]=k;ar(k);f[i>>2]=0;f[e>>2]=0;f[a>>2]=0;e=0}if((h|0)<0){Lp(a);e=f[i>>2]|0;g=f[a>>2]|0}else g=0;k=e-g|0;g=k<<1;g=k>>>0<1073741823?(g>>>0>>0?h:g):2147483647;if((g|0)<0)Lp(a);e=ln(g)|0;h=a+4|0;f[h>>2]=e;f[a>>2]=e;f[i>>2]=e+g;if((c|0)==(d|0))return;do{b[e>>0]=b[c>>0]|0;c=c+1|0;e=(f[h>>2]|0)+1|0;f[h>>2]=e}while((c|0)!=(d|0));return}else{a=a+4|0;i=(f[a>>2]|0)-g|0;h=h>>>0>i>>>0;i=c+i|0;g=h?i:d;e=g-j|0;if(e|0)rm(k|0,c|0,e|0)|0;c=k+e|0;if(!h){if((f[a>>2]|0)==(c|0))return;f[a>>2]=c;return}if((g|0)==(d|0))return;e=f[a>>2]|0;c=i;do{b[e>>0]=b[c>>0]|0;c=c+1|0;e=(f[a>>2]|0)+1|0;f[a>>2]=e}while((c|0)!=(d|0));return}}function ig(a,b){a=a|0;b=b|0;var c=0,d=0,e=0,g=0,h=0,i=0,j=0,k=0,l=0,m=0,n=0;n=a+8|0;e=f[n>>2]|0;m=a+4|0;d=f[m>>2]|0;if(e-d>>2>>>0>=b>>>0){ej(d|0,0,b<<2|0)|0;f[m>>2]=d+(b<<2);return}c=f[a>>2]|0;h=(d-c>>2)+b|0;if(h>>>0>1073741823){Lp(a);g=f[a>>2]|0;d=f[m>>2]|0;e=f[n>>2]|0}else g=c;c=d;l=g;k=e-g|0;j=k>>1;h=k>>2>>>0<536870911?(j>>>0>>0?h:j):1073741823;j=d-g>>2;do if(h)if(h>>>0>1073741823){a=Ia(4)|0;Eq(a);sa(a|0,1344,125)}else{i=ln(h<<2)|0;break}else i=0;while(0);e=i+(j<<2)|0;ej(e|0,0,b<<2|0)|0;d=e;k=i+(h<<2)|0;h=i+(j+b<<2)|0;if((c|0)!=(l|0)){do{c=c+-4|0;b=f[c>>2]|0;f[c>>2]=0;f[e+-4>>2]=b;e=d+-4|0;d=e}while((c|0)!=(l|0));g=f[a>>2]|0;c=f[m>>2]|0}f[a>>2]=d;f[m>>2]=h;f[n>>2]=k;e=g;if((c|0)!=(e|0))do{c=c+-4|0;d=f[c>>2]|0;f[c>>2]=0;if(d|0)Pa[f[(f[d>>2]|0)+4>>2]&127](d)}while((c|0)!=(e|0));if(!g)return;ar(g);return}function jg(a,b){a=a|0;b=b|0;var c=0,d=0,e=0,g=0,h=0,i=0,j=0,k=0;i=f[b>>2]|0;j=f[b+4>>2]|0;k=f[b+8>>2]|0;h=f[b+12>>2]|0;b=(((i^318)+239^j)+239^k)+239^h;d=f[a+4>>2]|0;if(!d){k=0;return k|0}g=d+-1|0;c=(g&d|0)==0;if(c)e=b&g;else e=(b>>>0)%(d>>>0)|0;b=f[(f[a>>2]|0)+(e<<2)>>2]|0;if(!b){k=0;return k|0}b=f[b>>2]|0;if(!b){k=0;return k|0}if(c){while(1){if((f[b+4>>2]&g|0)!=(e|0)){b=0;a=20;break}if((((f[b+8>>2]|0)==(i|0)?(f[b+12>>2]|0)==(j|0):0)?(f[b+16>>2]|0)==(k|0):0)?(f[b+20>>2]|0)==(h|0):0){a=20;break}b=f[b>>2]|0;if(!b){b=0;a=20;break}}if((a|0)==20)return b|0}else{while(1){if((((f[b+4>>2]|0)>>>0)%(d>>>0)|0|0)!=(e|0)){b=0;a=20;break}if((((f[b+8>>2]|0)==(i|0)?(f[b+12>>2]|0)==(j|0):0)?(f[b+16>>2]|0)==(k|0):0)?(f[b+20>>2]|0)==(h|0):0){a=20;break}b=f[b>>2]|0;if(!b){b=0;a=20;break}}if((a|0)==20)return b|0}return 0}function kg(a,c,d){a=a|0;c=c|0;d=d|0;var e=0,g=0,h=0,i=0,j=0,k=0,l=0;l=u;u=u+32|0;k=l+16|0;g=l+12|0;h=l+8|0;i=l+4|0;j=l;e=f[c>>2]|0;if(!e)Ga(10673,11041,55,11225);c=f[c+4>>2]|0;if(!c)Ga(10673,11041,55,11225);c=f[c+(d<<2)>>2]|0;if(!(b[e+84>>0]|0))c=f[(f[e+68>>2]|0)+(c<<2)>>2]|0;f[a>>2]=0;f[a+4>>2]=0;f[a+8>>2]=0;f[a+12>>2]=0;f[a+16>>2]=0;f[a+20>>2]=0;switch(b[e+24>>0]|0){case 1:{f[g>>2]=c;f[k>>2]=f[g>>2];eb(e,k,a)|0;u=l;return}case 2:{f[h>>2]=c;f[k>>2]=f[h>>2];sf(e,k,a)|0;u=l;return}case 3:{f[i>>2]=c;f[k>>2]=f[i>>2];rf(e,k,a)|0;u=l;return}case 4:{f[j>>2]=c;f[k>>2]=f[j>>2];qf(e,k,a)|0;u=l;return}default:{u=l;return}}}function lg(a){a=a|0;var c=0,d=0,e=0,g=0,h=0,i=0,j=0;c=f[a+32>>2]|0;h=c+8|0;j=f[h+4>>2]|0;g=c+16|0;d=g;e=f[d>>2]|0;d=f[d+4>>2]|0;if(!((j|0)>(d|0)|((j|0)==(d|0)?(f[h>>2]|0)>>>0>e>>>0:0))){j=0;return j|0}h=b[(f[c>>2]|0)+e>>0]|0;c=Ho(e|0,d|0,1,0)|0;e=g;f[e>>2]=c;f[e+4>>2]=I;e=a+48|0;c=f[e>>2]|0;f[e>>2]=0;if(c|0)Pa[f[(f[c>>2]|0)+4>>2]&127](c);switch(h<<24>>24){case 0:{c=ln(336)|0;Cj(c);d=f[e>>2]|0;f[e>>2]=c;if(d){Pa[f[(f[d>>2]|0)+4>>2]&127](d);i=11}break}case 1:{c=ln(376)|0;Nj(c);d=f[e>>2]|0;f[e>>2]=c;if(d){Pa[f[(f[d>>2]|0)+4>>2]&127](d);i=11}break}case 2:{c=ln(392)|0;Bi(c);d=f[e>>2]|0;f[e>>2]=c;if(d){Pa[f[(f[d>>2]|0)+4>>2]&127](d);i=11}break}default:i=11}if((i|0)==11){c=f[e>>2]|0;if(!c){j=0;return j|0}}j=Wa[f[(f[c>>2]|0)+8>>2]&127](c,a)|0;return j|0}function mg(a,b){a=a|0;b=b|0;var c=0,d=0,e=0,g=0,h=0,i=0;f[a+4>>2]=f[b+4>>2];g=a+8|0;i=b+8|0;if((a|0)==(b|0))return a|0;h=b+12|0;c=f[h>>2]|0;if(!c)c=0;else{e=a+16|0;if(c>>>0>f[e>>2]<<5>>>0){d=f[g>>2]|0;if(d){ar(d);f[g>>2]=0;f[e>>2]=0;f[a+12>>2]=0;c=f[h>>2]|0}if((c|0)<0)Lp(g);d=((c+-1|0)>>>5)+1|0;c=ln(d<<2)|0;f[g>>2]=c;f[a+12>>2]=0;f[e>>2]=d;d=f[h>>2]|0}else{d=c;c=f[g>>2]|0}rm(c|0,f[i>>2]|0,((d+-1|0)>>>5<<2)+4|0)|0;c=f[h>>2]|0}f[a+12>>2]=c;h=a+20|0;i=b+20|0;g=b+24|0;c=f[g>>2]|0;if(!c)c=0;else{e=a+28|0;if(c>>>0>f[e>>2]<<5>>>0){d=f[h>>2]|0;if(d){ar(d);f[h>>2]=0;f[e>>2]=0;f[a+24>>2]=0;c=f[g>>2]|0}if((c|0)<0)Lp(h);d=((c+-1|0)>>>5)+1|0;c=ln(d<<2)|0;f[h>>2]=c;f[a+24>>2]=0;f[e>>2]=d;d=f[g>>2]|0}else{d=c;c=f[h>>2]|0}rm(c|0,f[i>>2]|0,((d+-1|0)>>>5<<2)+4|0)|0;c=f[g>>2]|0}f[a+24>>2]=c;return a|0}function ng(a,c){a=a|0;c=c|0;var d=0,e=0,g=0,h=0,i=0,j=0,k=0,l=0,m=0,n=0;j=u;u=u+32|0;i=j+16|0;h=j;k=c+8|0;l=f[k+4>>2]|0;g=c+16|0;d=g;e=f[d>>2]|0;d=f[d+4>>2]|0;if(!((l|0)>(d|0)|((l|0)==(d|0)?(f[k>>2]|0)>>>0>e>>>0:0))){l=0;u=j;return l|0}l=b[(f[c>>2]|0)+e>>0]|0;e=Ho(e|0,d|0,1,0)|0;k=g;f[k>>2]=e;f[k+4>>2]=I;if(l<<24>>24){l=0;u=j;return l|0}g=0;do{yj(i,c)|0;d=f[i>>2]|0;if(d|0){e=a+44+(g*12|0)|0;Fe(e,d,0);xq(h);Ff(h,c)|0;if(f[i>>2]|0){d=0;do{n=Tk(h)|0;l=(f[e>>2]|0)+(d>>>5<<2)|0;k=1<<(d&31);m=f[l>>2]|0;f[l>>2]=n?m|k:m&~k;d=d+1|0}while(d>>>0<(f[i>>2]|0)>>>0)}fr(h)}g=g+1|0}while((g|0)<4);n=hi(a+8|0,c)|0;u=j;return n|0}function og(a,b,c){a=a|0;b=b|0;c=c|0;var d=0,e=0,g=0,h=0,i=0,j=0,k=0;j=a+8|0;g=f[j>>2]|0;k=a+4|0;d=f[k>>2]|0;if(((g-d|0)/12|0)>>>0>=b>>>0){do{f[d>>2]=f[c>>2];f[d+4>>2]=f[c+4>>2];f[d+8>>2]=f[c+8>>2];d=(f[k>>2]|0)+12|0;f[k>>2]=d;b=b+-1|0}while((b|0)!=0);return}e=f[a>>2]|0;h=((d-e|0)/12|0)+b|0;if(h>>>0>357913941){Lp(a);e=f[a>>2]|0;g=f[j>>2]|0;d=f[k>>2]|0}i=(g-e|0)/12|0;g=i<<1;g=i>>>0<178956970?(g>>>0>>0?h:g):357913941;d=(d-e|0)/12|0;do if(g)if(g>>>0>357913941){k=Ia(4)|0;Eq(k);sa(k|0,1344,125)}else{e=ln(g*12|0)|0;break}else e=0;while(0);i=e+(d*12|0)|0;h=e+(g*12|0)|0;d=i;g=i;do{f[d>>2]=f[c>>2];f[d+4>>2]=f[c+4>>2];f[d+8>>2]=f[c+8>>2];d=g+12|0;g=d;b=b+-1|0}while((b|0)!=0);d=f[a>>2]|0;e=(f[k>>2]|0)-d|0;b=i+(((e|0)/-12|0)*12|0)|0;if((e|0)>0)Mg(b|0,d|0,e|0)|0;f[a>>2]=b;f[k>>2]=g;f[j>>2]=h;if(!d)return;ar(d);return}function pg(a,b,c){a=a|0;b=b|0;c=c|0;var d=0,e=0;a=a+20|0;if(sd(a,b)|0){e=0;return e|0}d=hc(a,b)|0;b=f[c>>2]|0;f[c>>2]=0;e=f[d>>2]|0;f[d>>2]=b;if(!e){e=1;return e|0}a=f[e+28>>2]|0;if(a|0)do{d=a;a=f[a>>2]|0;oi(d+8|0);ar(d)}while((a|0)!=0);d=e+20|0;a=f[d>>2]|0;f[d>>2]=0;if(a|0)ar(a);a=f[e+8>>2]|0;if(a|0)do{d=a;a=f[a>>2]|0;b=f[d+20>>2]|0;if(b|0){c=d+24|0;if((f[c>>2]|0)!=(b|0))f[c>>2]=b;ar(b)}Lo(d+8|0);ar(d)}while((a|0)!=0);a=f[e>>2]|0;f[e>>2]=0;if(a|0)ar(a);ar(e);e=1;return e|0}function qg(a,b){a=a|0;b=b|0;var c=0,d=0,e=0;c=a+8|0;f[c>>2]=f[b>>2];mg(a+12|0,b+4|0)|0;d=a+44|0;e=b+36|0;f[d>>2]=f[e>>2];f[d+4>>2]=f[e+4>>2];f[d+8>>2]=f[e+8>>2];f[d+12>>2]=f[e+12>>2];if((c|0)==(b|0)){f[a+96>>2]=f[b+88>>2];return}else{Mf(a+60|0,f[b+52>>2]|0,f[b+56>>2]|0);Mf(a+72|0,f[b+64>>2]|0,f[b+68>>2]|0);Mf(a+84|0,f[b+76>>2]|0,f[b+80>>2]|0);f[a+96>>2]=f[b+88>>2];_f(a+100|0,f[b+92>>2]|0,f[b+96>>2]|0);return}}function rg(a,c){a=a|0;c=c|0;var d=0,e=0,g=0,h=0,i=0,j=0,k=0,l=0,m=0,n=0;j=u;u=u+32|0;i=j+16|0;h=j;k=c+8|0;l=f[k+4>>2]|0;g=c+16|0;d=g;e=f[d>>2]|0;d=f[d+4>>2]|0;if(!((l|0)>(d|0)|((l|0)==(d|0)?(f[k>>2]|0)>>>0>e>>>0:0))){l=0;u=j;return l|0}l=b[(f[c>>2]|0)+e>>0]|0;e=Ho(e|0,d|0,1,0)|0;k=g;f[k>>2]=e;f[k+4>>2]=I;if(l<<24>>24){l=0;u=j;return l|0}g=0;do{yj(i,c)|0;d=f[i>>2]|0;if(d|0){e=a+44+(g*12|0)|0;Fe(e,d,0);xq(h);Ff(h,c)|0;if(f[i>>2]|0){d=0;do{n=Tk(h)|0;l=(f[e>>2]|0)+(d>>>5<<2)|0;k=1<<(d&31);m=f[l>>2]|0;f[l>>2]=n?m|k:m&~k;d=d+1|0}while(d>>>0<(f[i>>2]|0)>>>0)}fr(h)}g=g+1|0}while((g|0)<4);n=ki(a+8|0,c)|0;u=j;return n|0}function sg(a,c,d){a=a|0;c=c|0;d=d|0;var e=0,g=0,h=0,i=0,j=0;j=u;u=u+80|0;g=j;i=j+64|0;Ol(g);e=f[(f[a+8>>2]|0)+56>>2]|0;h=X(cm(5)|0,d)|0;xj(g,e,0,d&255,5,0,h,((h|0)<0)<<31>>31,0,0);h=ln(96)|0;Bl(h,g);b[h+84>>0]=1;d=f[h+68>>2]|0;g=h+72|0;e=f[g>>2]|0;if((e|0)!=(d|0))f[g>>2]=e+(~((e+-4-d|0)>>>2)<<2);oj(h,c)|0;f[i>>2]=h;Ui(a,i);h=f[i>>2]|0;f[i>>2]=0;if(!h){u=j;return}i=h+88|0;d=f[i>>2]|0;f[i>>2]=0;if(d|0){e=f[d+8>>2]|0;if(e|0){g=d+12|0;if((f[g>>2]|0)!=(e|0))f[g>>2]=e;ar(e)}ar(d)}d=f[h+68>>2]|0;if(d|0){g=h+72|0;e=f[g>>2]|0;if((e|0)!=(d|0))f[g>>2]=e+(~((e+-4-d|0)>>>2)<<2);ar(d)}i=h+64|0;d=f[i>>2]|0;f[i>>2]=0;if(d|0){e=f[d>>2]|0;if(e|0){g=d+4|0;if((f[g>>2]|0)!=(e|0))f[g>>2]=e;ar(e)}ar(d)}ar(h);u=j;return}function tg(a,b,c){a=a|0;b=b|0;c=c|0;var d=0,e=0,g=0,h=0,i=0,j=0;j=u;u=u+16|0;i=j;d=f[a+8>>2]|0;e=f[c>>2]|0;h=(e|0)/3|0;if((e|0)<=-3)Ga(18122,18147,63,18171);g=f[d+84>>2]|0;if((h|0)>=(((f[d+88>>2]|0)-g|0)/12|0|0))Ga(18176,18147,64,18171);h=f[g+(h*12|0)+(((e|0)%3|0)<<2)>>2]|0;d=f[a+12>>2]|0;f[i>>2]=h;d=f[d+4>>2]|0;g=d+4|0;e=f[g>>2]|0;if((e|0)==(f[d+8>>2]|0))Ii(d,i);else{f[e>>2]=h;f[g>>2]=e+4}h=a+4|0;e=f[h>>2]|0;g=e+4|0;d=f[g>>2]|0;if((d|0)==(f[e+8>>2]|0)){Ii(e,c);i=f[h>>2]|0;c=i+24|0;a=f[c>>2]|0;b=f[b>>2]|0;i=i+12|0;i=f[i>>2]|0;b=i+(b<<2)|0;f[b>>2]=a;b=f[c>>2]|0;b=b+1|0;f[c>>2]=b;u=j;return}else{f[d>>2]=f[c>>2];f[g>>2]=d+4;i=e;c=i+24|0;a=f[c>>2]|0;b=f[b>>2]|0;i=i+12|0;i=f[i>>2]|0;b=i+(b<<2)|0;f[b>>2]=a;b=f[c>>2]|0;b=b+1|0;f[c>>2]=b;u=j;return}}function ug(a,b,c,d,e,g){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;g=g|0;var h=0,i=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0;p=u;u=u+16|0;o=p+4|0;n=p;f[a+56>>2]=e;f[a+48>>2]=g;l=Zq(e>>>0>1073741823?-1:e<<2)|0;m=a+52|0;d=f[m>>2]|0;f[m>>2]=l;if(d|0)_q(d);j=a+40|0;g=f[j>>2]|0;h=f[g+4>>2]|0;d=f[g>>2]|0;l=h-d|0;k=l>>2;if((l|0)<=0){u=p;return 1}l=a+8|0;i=h;h=0;while(1){if(i-d>>2>>>0<=h>>>0){Kp(g);d=f[g>>2]|0}f[n>>2]=f[d+(h<<2)>>2];f[o>>2]=f[n>>2];tc(a,o,c,h);i=X(h,e)|0;ji(l,f[m>>2]|0,b+(i<<2)|0,c+(i<<2)|0);h=h+1|0;if((h|0)>=(k|0))break;i=f[j>>2]|0;g=i;d=f[i>>2]|0;i=f[i+4>>2]|0}u=p;return 1}function vg(a,b,c){a=a|0;b=b|0;c=c|0;var d=0,e=0,g=0,h=0,i=0,j=0,k=0,l=0,m=0,n=0,o=0;n=u;u=u+32|0;i=n+24|0;j=n+16|0;k=n+8|0;m=n;l=a+4|0;o=f[l>>2]|0;e=f[b>>2]|0;b=f[b+4>>2]|0;h=f[c>>2]|0;d=f[c+4>>2]|0;g=h-e<<3;f[l>>2]=o-b+d+g;l=(f[a>>2]|0)+(o>>>5<<2)|0;a=o&31;c=l;if((b|0)!=(a|0)){f[i>>2]=e;f[i+4>>2]=b;f[j>>2]=h;f[j+4>>2]=d;f[k>>2]=c;f[k+4>>2]=a;ze(m,i,j,k);u=n;return}d=d-b+g|0;a=e;if((d|0)>0){if(!b){h=a;c=d;a=l;b=0}else{h=32-b|0;c=(d|0)<(h|0)?d:h;h=-1>>>(h-c|0)&-1<>2]=f[l>>2]&~h|f[a>>2]&h;b=c+b|0;h=a+4|0;e=h;c=d-c|0;a=l+(b>>>5<<2)|0;b=b&31}g=c>>>5;rm(a|0,e|0,g<<2|0)|0;d=c-(g<<5)|0;a=a+(g<<2)|0;c=a;if((d|0)>0){b=-1>>>(32-d|0);f[a>>2]=f[a>>2]&~b|f[h+(g<<2)>>2]&b;b=d}}f[m>>2]=c;f[m+4>>2]=b;u=n;return}function wg(a,b){a=a|0;b=b|0;var c=0,d=0,e=0,g=0,h=0,i=0,j=0,k=0,l=0;l=a+4|0;d=f[l>>2]|0;c=f[a>>2]|0;e=(d-c>>2)+1|0;if(e>>>0>1073741823){Lp(a);c=f[a>>2]|0;d=f[l>>2]|0}k=a+8|0;j=(f[k>>2]|0)-c|0;g=j>>1;g=j>>2>>>0<536870911?(g>>>0>>0?e:g):1073741823;c=d-c>>2;do if(g)if(g>>>0>1073741823){a=Ia(4)|0;Eq(a);sa(a|0,1344,125)}else{e=ln(g<<2)|0;break}else e=0;while(0);h=e+(c<<2)|0;d=h;j=e+(g<<2)|0;i=f[b>>2]|0;f[b>>2]=0;f[h>>2]=i;i=h+4|0;b=f[a>>2]|0;c=f[l>>2]|0;if((c|0)==(b|0)){g=b;c=b}else{e=h;do{c=c+-4|0;h=f[c>>2]|0;f[c>>2]=0;f[e+-4>>2]=h;e=d+-4|0;d=e}while((c|0)!=(b|0));g=f[a>>2]|0;c=f[l>>2]|0}f[a>>2]=d;f[l>>2]=i;f[k>>2]=j;e=g;if((c|0)!=(e|0))do{c=c+-4|0;d=f[c>>2]|0;f[c>>2]=0;if(d|0){Ri(d);ar(d)}}while((c|0)!=(e|0));if(!g)return;ar(g);return}function xg(a,b,c){a=a|0;b=b|0;c=c|0;var d=0,e=0,g=0,h=0,i=0,j=0;j=u;u=u+16|0;i=j;g=f[c>>2]|0;f[c>>2]=0;f[i>>2]=g;gg(a,b,i);g=f[i>>2]|0;f[i>>2]=0;if(g|0){i=g+88|0;c=f[i>>2]|0;f[i>>2]=0;if(c|0){d=f[c+8>>2]|0;if(d|0){e=c+12|0;if((f[e>>2]|0)!=(d|0))f[e>>2]=d;ar(d)}ar(c)}c=f[g+68>>2]|0;if(c|0){e=g+72|0;d=f[e>>2]|0;if((d|0)!=(c|0))f[e>>2]=d+(~((d+-4-c|0)>>>2)<<2);ar(c)}i=g+64|0;c=f[i>>2]|0;f[i>>2]=0;if(c|0){d=f[c>>2]|0;if(d|0){e=c+4|0;if((f[e>>2]|0)!=(d|0))f[e>>2]=d;ar(d)}ar(c)}ar(g)}i=a+72|0;h=a+76|0;c=f[h>>2]|0;g=f[i>>2]|0;a=c-g>>2;if((a|0)>(b|0)){u=j;return}e=b+1|0;d=c;if(e>>>0>a>>>0){ih(i,e-a|0);u=j;return}if(e>>>0>=a>>>0){u=j;return}c=g+(e<<2)|0;if((d|0)==(c|0)){u=j;return}f[h>>2]=d+(~((d+-4-c|0)>>>2)<<2);u=j;return}function yg(a,c,d){a=a|0;c=c|0;d=d|0;var e=0,g=0,h=0,i=0,j=0,k=0,l=0,m=0,n=0;a=a+4|0;e=f[a>>2]|0;if(!e){f[c>>2]=a;n=a;return n|0}l=b[d+11>>0]|0;k=l<<24>>24<0;l=k?f[d+4>>2]|0:l&255;k=k?f[d>>2]|0:d;while(1){g=e+16|0;d=b[g+11>>0]|0;i=d<<24>>24<0;d=i?f[e+20>>2]|0:d&255;h=d>>>0>>0;a=h?d:l;if((a|0)!=0?(n=rl(k,i?f[g>>2]|0:g,a)|0,(n|0)!=0):0)if((n|0)<0)j=7;else j=9;else if(l>>>0>>0)j=7;else j=9;if((j|0)==7){a=f[e>>2]|0;if(!a){j=8;break}}else if((j|0)==9){j=0;a=l>>>0>>0?l:d;if((a|0)!=0?(m=rl(i?f[g>>2]|0:g,k,a)|0,(m|0)!=0):0){if((m|0)>=0){j=16;break}}else j=11;if((j|0)==11?(0,!h):0){j=16;break}d=e+4|0;a=f[d>>2]|0;if(!a){j=15;break}}e=a}if((j|0)==8){f[c>>2]=e;n=e;return n|0}else if((j|0)==15){f[c>>2]=e;n=d;return n|0}else if((j|0)==16){f[c>>2]=e;n=c;return n|0}return 0}function zg(a,c){a=a|0;c=c|0;var d=0,e=0,g=0,h=0,i=0,j=0;e=f[c>>2]|0;h=f[a>>2]|0;j=h+(e>>>5<<2)|0;f[j>>2]=f[j>>2]|1<<(e&31);j=f[a+64>>2]|0;g=(e|0)<0;c=e+1|0;if(!g?(d=((c|0)%3|0|0)==0?e+-2|0:c,(d|0)>=0):0)c=f[(f[j>>2]|0)+(d<<2)>>2]|0;else c=-1073741824;i=a+12|0;d=(f[i>>2]|0)+(c>>>5<<2)|0;f[d>>2]=f[d>>2]|1<<(c&31);if(g){j=(f[i>>2]|0)+402653184|0;f[j>>2]=f[j>>2]|1;return}c=(((e>>>0)%3|0|0)==0?2:-1)+e|0;if((c|0)<0)c=-1073741824;else c=f[(f[j>>2]|0)+(c<<2)>>2]|0;d=(f[i>>2]|0)+(c>>>5<<2)|0;f[d>>2]=f[d>>2]|1<<(c&31);if(g)return;d=f[(f[j+12>>2]|0)+(e<<2)>>2]|0;if((d|0)<=-1)return;b[a+24>>0]=0;c=h+(d>>>5<<2)|0;f[c>>2]=f[c>>2]|1<<(d&31);c=d+1|0;c=((c|0)%3|0|0)==0?d+-2|0:c;if((c|0)<0)c=-1073741824;else c=f[(f[j>>2]|0)+(c<<2)>>2]|0;a=(f[i>>2]|0)+(c>>>5<<2)|0;f[a>>2]=f[a>>2]|1<<(c&31);c=(((d>>>0)%3|0|0)==0?2:-1)+d|0;if((c|0)<0)c=-1073741824;else c=f[(f[j>>2]|0)+(c<<2)>>2]|0;j=(f[i>>2]|0)+(c>>>5<<2)|0;f[j>>2]=f[j>>2]|1<<(c&31);return}function Ag(a,b){a=a|0;b=b|0;var c=0,d=0,e=0,g=0,h=0,i=0,j=0,k=0,l=0,m=0,n=0;n=a+4|0;c=f[n>>2]|0;m=f[a>>2]|0;g=m;do if((c|0)==(m|0)){m=a+8|0;d=f[m>>2]|0;l=a+12|0;k=f[l>>2]|0;e=k;if(d>>>0>>0){a=d;i=((e-a>>2)+1|0)/2|0;g=d+(i<<2)|0;e=a-c|0;a=e>>2;h=g+(0-a<<2)|0;if(!a)c=g;else{rm(h|0,c|0,e|0)|0;d=f[m>>2]|0;c=h}f[n>>2]=c;f[m>>2]=d+(i<<2);break}e=e-g>>1;e=(e|0)==0?1:e;if(e>>>0>1073741823){b=Ia(4)|0;Eq(b);sa(b|0,1344,125)}h=ln(e<<2)|0;i=h;k=h+((e+3|0)>>>2<<2)|0;j=k;h=h+(e<<2)|0;if((c|0)==(d|0))d=j;else{e=k;g=j;do{f[e>>2]=f[c>>2];e=g+4|0;g=e;c=c+4|0}while((c|0)!=(d|0));c=f[a>>2]|0;d=g}f[a>>2]=i;f[n>>2]=j;f[m>>2]=d;f[l>>2]=h;if(!c)c=k;else{ar(c);c=f[n>>2]|0}}while(0);f[c+-4>>2]=f[b>>2];f[n>>2]=(f[n>>2]|0)+-4;return}function Bg(a,b,c,d,e,g){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;g=g|0;var h=0,i=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0;p=u;u=u+16|0;o=p+4|0;n=p;f[a+56>>2]=e;f[a+48>>2]=g;l=Zq(e>>>0>1073741823?-1:e<<2)|0;m=a+52|0;d=f[m>>2]|0;f[m>>2]=l;if(d|0)_q(d);j=a+40|0;g=f[j>>2]|0;h=f[g+4>>2]|0;d=f[g>>2]|0;l=h-d|0;k=l>>2;if((l|0)<=0){u=p;return 1}l=a+8|0;i=h;h=0;while(1){if(i-d>>2>>>0<=h>>>0){Kp(g);d=f[g>>2]|0}f[n>>2]=f[d+(h<<2)>>2];f[o>>2]=f[n>>2];rc(a,o,c,h);i=X(h,e)|0;ji(l,f[m>>2]|0,b+(i<<2)|0,c+(i<<2)|0);h=h+1|0;if((h|0)>=(k|0))break;i=f[j>>2]|0;g=i;d=f[i>>2]|0;i=f[i+4>>2]|0}u=p;return 1}function Cg(a,b,c,d,e,g){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;g=g|0;var h=0,i=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0;p=u;u=u+16|0;o=p+4|0;n=p;f[a+56>>2]=e;f[a+48>>2]=g;l=Zq(e>>>0>1073741823?-1:e<<2)|0;m=a+52|0;d=f[m>>2]|0;f[m>>2]=l;if(d|0)_q(d);j=a+40|0;g=f[j>>2]|0;h=f[g+4>>2]|0;d=f[g>>2]|0;l=h-d|0;k=l>>2;if((l|0)<=0){u=p;return 1}l=a+8|0;i=h;h=0;while(1){if(i-d>>2>>>0<=h>>>0){Kp(g);d=f[g>>2]|0}f[n>>2]=f[d+(h<<2)>>2];f[o>>2]=f[n>>2];tc(a,o,c,h);i=X(h,e)|0;mi(l,f[m>>2]|0,b+(i<<2)|0,c+(i<<2)|0);h=h+1|0;if((h|0)>=(k|0))break;i=f[j>>2]|0;g=i;d=f[i>>2]|0;i=f[i+4>>2]|0}u=p;return 1}function Dg(a,c,d){a=a|0;c=c|0;d=d|0;var e=0,g=0,h=0,i=0,j=0,k=0,l=0,m=0;m=u;u=u+48|0;j=m+32|0;e=m+28|0;g=m+24|0;h=m+20|0;i=m+16|0;l=m;k=b[a+24>>0]|0;f[l>>2]=f[348];f[l+4>>2]=f[349];f[l+8>>2]=f[350];f[l+12>>2]=f[351];k=k<<24>>24;switch(k|0){case 1:{f[e>>2]=c;f[j>>2]=f[e>>2];e=od(a,j,l)|0;break}case 2:{f[g>>2]=c;f[j>>2]=f[g>>2];e=wc(a,j,l)|0;break}case 3:{f[h>>2]=c;f[j>>2]=f[h>>2];e=Vc(a,j,l)|0;break}case 4:{f[i>>2]=c;f[j>>2]=f[i>>2];e=Nc(a,j,l)|0;break}default:{l=0;u=m;return l|0}}if(!e){l=0;u=m;return l|0}zf(d,l,l+(k<<2)|0);l=1;u=m;return l|0}function Eg(a,c){a=a|0;c=c|0;var d=0,e=0,g=0,i=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0;n=c+8|0;m=f[n>>2]|0;n=f[n+4>>2]|0;p=c+16|0;k=p;o=f[k>>2]|0;k=f[k+4>>2]|0;e=Ho(o|0,k|0,4,0)|0;d=I;if((n|0)<(d|0)|(n|0)==(d|0)&m>>>0>>0){a=0;return a|0}l=f[c>>2]|0;g=l+o|0;g=h[g>>0]|h[g+1>>0]<<8|h[g+2>>0]<<16|h[g+3>>0]<<24;i=p;f[i>>2]=e;f[i+4>>2]=d;i=Ho(o|0,k|0,8,0)|0;j=I;if((n|0)<(j|0)|(n|0)==(j|0)&m>>>0>>0){a=0;return a|0}d=l+e|0;d=h[d>>0]|h[d+1>>0]<<8|h[d+2>>0]<<16|h[d+3>>0]<<24;e=p;f[e>>2]=i;f[e+4>>2]=j;f[a+12>>2]=g;f[a+16>>2]=d;g=d+(1-g)|0;f[a+20>>2]=g;d=(g|0)/2|0;e=a+24|0;f[e>>2]=d;f[a+28>>2]=0-d;if(!(g&1))f[e>>2]=d+-1;if((n|0)>(j|0)|(n|0)==(j|0)&m>>>0>i>>>0?(n=b[l+i>>0]|0,o=Ho(o|0,k|0,9,0)|0,p,f[p>>2]=o,f[p+4>>2]=I,n<<24>>24):0){a=0;return a|0}a=Ff(a+100|0,c)|0;return a|0}function Fg(a,b){a=a|0;b=b|0;var c=0,d=0,e=0,g=0,h=0,i=0,j=0,k=0;i=u;u=u+16|0;g=i+4|0;h=i;b=f[b>>2]|0;if((b|0)<0){a=-1073741824;u=i;return a|0}d=a+4|0;c=f[d>>2]|0;e=f[(f[c+12>>2]|0)+(b<<2)>>2]|0;if((e|0)<0){a=-1073741824;u=i;return a|0}k=b+1|0;f[h>>2]=((k|0)%3|0|0)==0?b+-2|0:k;k=f[a>>2]|0;f[g>>2]=f[h>>2];k=wk(g,c,k)|0;f[h>>2]=(((e>>>0)%3|0|0)==0?2:-1)+e;j=f[d>>2]|0;c=f[a>>2]|0;f[g>>2]=f[h>>2];if((k|0)!=(wk(g,j,c)|0)){k=-1073741824;u=i;return k|0}f[h>>2]=b+(((b>>>0)%3|0|0)==0?2:-1);j=f[d>>2]|0;c=f[a>>2]|0;f[g>>2]=f[h>>2];c=wk(g,j,c)|0;j=e+1|0;f[h>>2]=((j|0)%3|0|0)==0?e+-2|0:j;j=f[d>>2]|0;k=f[a>>2]|0;f[g>>2]=f[h>>2];k=(c|0)!=(wk(g,j,k)|0);k=k?-1073741824:e;u=i;return k|0}function Gg(a,b){a=a|0;b=b|0;var c=0,d=0,e=0,g=0,h=0,i=0,j=0,k=0,l=0,m=0,n=0;n=a+8|0;c=f[n>>2]|0;l=a+12|0;m=f[l>>2]|0;e=m;h=c;do if((c|0)==(m|0)){m=a+4|0;k=f[m>>2]|0;d=f[a>>2]|0;g=d;if(k>>>0>d>>>0){c=k;g=((c-g>>2)+1|0)/-2|0;e=k+(g<<2)|0;c=h-c|0;d=c>>2;if(!d)c=k;else{rm(e|0,k|0,c|0)|0;c=f[m>>2]|0}a=e+(d<<2)|0;f[n>>2]=a;f[m>>2]=c+(g<<2);c=a;break}e=e-g>>1;e=(e|0)==0?1:e;if(e>>>0>1073741823){b=Ia(4)|0;Eq(b);sa(b|0,1344,125)}h=ln(e<<2)|0;i=h;g=h+(e>>>2<<2)|0;j=g;h=h+(e<<2)|0;if((k|0)==(c|0))c=j;else{e=g;d=k;g=j;do{f[e>>2]=f[d>>2];e=g+4|0;g=e;d=d+4|0}while((d|0)!=(c|0));d=f[a>>2]|0;c=g}f[a>>2]=i;f[m>>2]=j;f[n>>2]=c;f[l>>2]=h;if(d){ar(d);c=f[n>>2]|0}}while(0);f[c>>2]=f[b>>2];f[n>>2]=(f[n>>2]|0)+4;return}function Hg(a,b,c,d,e,g){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;g=g|0;var h=0,i=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0;p=u;u=u+16|0;o=p+4|0;n=p;f[a+56>>2]=e;f[a+48>>2]=g;l=Zq(e>>>0>1073741823?-1:e<<2)|0;m=a+52|0;d=f[m>>2]|0;f[m>>2]=l;if(d|0)_q(d);j=a+40|0;g=f[j>>2]|0;h=f[g+4>>2]|0;d=f[g>>2]|0;l=h-d|0;k=l>>2;if((l|0)<=0){u=p;return 1}l=a+8|0;i=h;h=0;while(1){if(i-d>>2>>>0<=h>>>0){Kp(g);d=f[g>>2]|0}f[n>>2]=f[d+(h<<2)>>2];f[o>>2]=f[n>>2];rc(a,o,c,h);i=X(h,e)|0;mi(l,f[m>>2]|0,b+(i<<2)|0,c+(i<<2)|0);h=h+1|0;if((h|0)>=(k|0))break;i=f[j>>2]|0;g=i;d=f[i>>2]|0;i=f[i+4>>2]|0}u=p;return 1}function Ig(a,b,c){a=a|0;b=b|0;c=c|0;var d=0,e=0,g=0,h=0,i=0,j=0,k=0,l=0;j=u;u=u+16|0;h=j+8|0;g=j+4|0;e=j;if(!c){i=0;u=j;return i|0}f[a>>2]=b;f[h>>2]=0;yj(h,b)|0;a:do if(!(f[h>>2]|0))i=8;else{d=0;while(1){yj(g,f[a>>2]|0)|0;b=ln(44)|0;k=f[g>>2]|0;f[b>>2]=0;f[b+4>>2]=0;f[b+8>>2]=0;f[b+12>>2]=0;n[b+16>>2]=$(1.0);l=b+20|0;f[l>>2]=0;f[l+4>>2]=0;f[l+8>>2]=0;f[l+12>>2]=0;n[b+36>>2]=$(1.0);f[b+40>>2]=k;if(!(Td(a,b)|0))break;f[e>>2]=b;$j(c,e)|0;b=f[e>>2]|0;f[e>>2]=0;if(b|0){Ri(b);ar(b)}d=d+1|0;if(d>>>0>=(f[h>>2]|0)>>>0){i=8;break a}}Ri(b);ar(b);b=0}while(0);if((i|0)==8)b=Td(a,c)|0;l=b;u=j;return l|0}function Jg(a,b){a=a|0;b=b|0;var c=0,d=0,e=0,g=0,i=0,j=0,k=0,l=0,m=0;k=u;u=u+16|0;j=k;l=b+8|0;i=f[l>>2]|0;l=f[l+4>>2]|0;g=b+16|0;d=g;c=f[d>>2]|0;d=Ho(c|0,f[d+4>>2]|0,4,0)|0;e=I;if((l|0)<(e|0)|(l|0)==(e|0)&i>>>0>>0){l=0;u=k;return l|0}i=(f[b>>2]|0)+c|0;i=h[i>>0]|h[i+1>>0]<<8|h[i+2>>0]<<16|h[i+3>>0]<<24;l=g;f[l>>2]=d;f[l+4>>2]=e;if((i|0)<0){l=0;u=k;return l|0}Fe(a+60|0,i,0);xq(j);if(Ff(j,b)|0){if((i|0)>0){c=a+60|0;d=0;e=1;do{e=e^((Tk(j)|0)^1);l=(f[c>>2]|0)+(d>>>5<<2)|0;g=1<<(d&31);m=f[l>>2]|0;f[l>>2]=e?m|g:m&~g;d=d+1|0}while((d|0)<(i|0))}c=hi(a+8|0,b)|0}else c=0;fr(j);m=c;u=k;return m|0}function Kg(a,c){a=a|0;c=c|0;var d=0,e=0,g=0,h=0,i=0,j=0,k=0,l=0,m=0,n=0;l=a+4|0;d=f[l>>2]|0;do if(d|0){m=b[c+11>>0]|0;k=m<<24>>24<0;m=k?f[c+4>>2]|0:m&255;k=k?f[c>>2]|0:c;a=l;a:while(1){c=d;while(1){e=c+16|0;g=b[e+11>>0]|0;h=g<<24>>24<0;g=h?f[c+20>>2]|0:g&255;d=m>>>0>>0?m:g;if((d|0)!=0?(i=rl(h?f[e>>2]|0:e,k,d)|0,(i|0)!=0):0){if((i|0)>=0)break}else j=6;if((j|0)==6?(j=0,g>>>0>=m>>>0):0)break;c=f[c+4>>2]|0;if(!c)break a}d=f[c>>2]|0;if(!d){a=c;break}else a=c}if((a|0)!=(l|0)){d=a+16|0;e=b[d+11>>0]|0;g=e<<24>>24<0;e=g?f[a+20>>2]|0:e&255;c=e>>>0>>0?e:m;if(c|0?(n=rl(k,g?f[d>>2]|0:d,c)|0,n|0):0){if((n|0)<0)break;return a|0}if(m>>>0>=e>>>0){n=a;return n|0}}}while(0);n=l;return n|0}function Lg(a,b){a=a|0;b=b|0;var c=0,d=0,e=0,g=0,i=0,j=0,k=0,l=0,m=0;k=u;u=u+16|0;j=k;l=b+8|0;i=f[l>>2]|0;l=f[l+4>>2]|0;g=b+16|0;d=g;c=f[d>>2]|0;d=Ho(c|0,f[d+4>>2]|0,4,0)|0;e=I;if((l|0)<(e|0)|(l|0)==(e|0)&i>>>0>>0){l=0;u=k;return l|0}i=(f[b>>2]|0)+c|0;i=h[i>>0]|h[i+1>>0]<<8|h[i+2>>0]<<16|h[i+3>>0]<<24;l=g;f[l>>2]=d;f[l+4>>2]=e;if((i|0)<0){l=0;u=k;return l|0}e=a+60|0;Fe(e,i,0);xq(j);if(Ff(j,b)|0){if((i|0)>0){c=0;d=1;do{d=d^((Tk(j)|0)^1);l=(f[e>>2]|0)+(c>>>5<<2)|0;g=1<<(c&31);m=f[l>>2]|0;f[l>>2]=d?m|g:m&~g;c=c+1|0}while((c|0)<(i|0))}c=hi(a+8|0,b)|0}else c=0;fr(j);m=c;u=k;return m|0}function Mg(a,c,d){a=a|0;c=c|0;d=d|0;var e=0,g=0,h=0;if((d|0)>=8192)return Ba(a|0,c|0,d|0)|0;h=a|0;g=a+d|0;if((a&3)==(c&3)){while(a&3){if(!d)return h|0;b[a>>0]=b[c>>0]|0;a=a+1|0;c=c+1|0;d=d-1|0}d=g&-4|0;e=d-64|0;while((a|0)<=(e|0)){f[a>>2]=f[c>>2];f[a+4>>2]=f[c+4>>2];f[a+8>>2]=f[c+8>>2];f[a+12>>2]=f[c+12>>2];f[a+16>>2]=f[c+16>>2];f[a+20>>2]=f[c+20>>2];f[a+24>>2]=f[c+24>>2];f[a+28>>2]=f[c+28>>2];f[a+32>>2]=f[c+32>>2];f[a+36>>2]=f[c+36>>2];f[a+40>>2]=f[c+40>>2];f[a+44>>2]=f[c+44>>2];f[a+48>>2]=f[c+48>>2];f[a+52>>2]=f[c+52>>2];f[a+56>>2]=f[c+56>>2];f[a+60>>2]=f[c+60>>2];a=a+64|0;c=c+64|0}while((a|0)<(d|0)){f[a>>2]=f[c>>2];a=a+4|0;c=c+4|0}}else{d=g-4|0;while((a|0)<(d|0)){b[a>>0]=b[c>>0]|0;b[a+1>>0]=b[c+1>>0]|0;b[a+2>>0]=b[c+2>>0]|0;b[a+3>>0]=b[c+3>>0]|0;a=a+4|0;c=c+4|0}}while((a|0)<(g|0)){b[a>>0]=b[c>>0]|0;a=a+1|0;c=c+1|0}return h|0}function Ng(a){a=a|0;var b=0,c=0,d=0,e=0,g=0,h=0,i=0;h=u;u=u+16|0;d=h+4|0;e=h;g=a+8|0;c=a+84|0;a=f[c>>2]|0;if(!a){c=f[(f[g>>2]|0)+64>>2]|0;c=(f[c+4>>2]|0)-(f[c>>2]|0)>>2;a=(c>>>0)/3|0;if(c>>>0<=2){u=h;return 1}b=0;do{f[e>>2]=b*3;f[d>>2]=f[e>>2];bc(g,d);b=b+1|0}while((b|0)<(a|0));u=h;return 1}else{b=f[a>>2]|0;if((f[a+4>>2]|0)==(b|0)){u=h;return 1}a=0;do{f[e>>2]=f[b+(a<<2)>>2];f[d>>2]=f[e>>2];bc(g,d);a=a+1|0;i=f[c>>2]|0;b=f[i>>2]|0}while(a>>>0<(f[i+4>>2]|0)-b>>2>>>0);u=h;return 1}return 0}function Og(a,b){a=a|0;b=b|0;var c=0,d=0,e=0,g=0,i=0,j=0,k=0,l=0,m=0;k=u;u=u+16|0;j=k;l=b+8|0;i=f[l>>2]|0;l=f[l+4>>2]|0;g=b+16|0;d=g;c=f[d>>2]|0;d=Ho(c|0,f[d+4>>2]|0,4,0)|0;e=I;if((l|0)<(e|0)|(l|0)==(e|0)&i>>>0>>0){l=0;u=k;return l|0}i=(f[b>>2]|0)+c|0;i=h[i>>0]|h[i+1>>0]<<8|h[i+2>>0]<<16|h[i+3>>0]<<24;l=g;f[l>>2]=d;f[l+4>>2]=e;if((i|0)<0){l=0;u=k;return l|0}Fe(a+60|0,i,0);xq(j);if(Ff(j,b)|0){if((i|0)>0){c=a+60|0;d=0;e=1;do{e=e^((Tk(j)|0)^1);l=(f[c>>2]|0)+(d>>>5<<2)|0;g=1<<(d&31);m=f[l>>2]|0;f[l>>2]=e?m|g:m&~g;d=d+1|0}while((d|0)<(i|0))}c=ki(a+8|0,b)|0}else c=0;fr(j);m=c;u=k;return m|0}function Pg(a,b,c,d,e){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;var g=0,i=0;if((b|0)==-2)g=0;else{g=f[d+4>>2]|0;if((c|0)<=-1)Ga(17188,17204,63,17242);i=f[g+8>>2]|0;if(((f[g+12>>2]|0)-i>>2|0)<=(c|0))Ga(17252,17204,64,17242);g=f[i+(c<<2)>>2]|0;do if((Sa[f[(f[d>>2]|0)+8>>2]&255](d)|0)==1){of(a,d,b,c,e,((h[d+36>>0]|0)<<8|(h[d+37>>0]|0))&65535);if(!(f[a>>2]|0)){f[a>>2]=0;break}else return}while(0);b=ln(44)|0;f[b>>2]=1832;f[b+4>>2]=g;g=b+8|0;f[g>>2]=f[e>>2];f[g+4>>2]=f[e+4>>2];f[g+8>>2]=f[e+8>>2];f[g+12>>2]=f[e+12>>2];f[g+16>>2]=f[e+16>>2];f[g+20>>2]=f[e+20>>2];Fj(b+32|0,e+24|0);f[b>>2]=1888;g=b}f[a>>2]=g;return}function Qg(a,b){a=a|0;b=b|0;var c=0,d=0,e=0,g=0,h=0,i=0;i=a+60|0;c=f[i>>2]|0;if(!c){a=0;return a|0}f[c+4>>2]=a+48;if(!(Sa[f[(f[c>>2]|0)+12>>2]&255](c)|0)){a=0;return a|0}g=Sa[f[(f[a>>2]|0)+24>>2]&255](a)|0;a:do if((g|0)>0){h=0;while(1){c=(Sa[f[(f[a>>2]|0)+28>>2]&255](a)|0)+4|0;c=f[c>>2]|0;e=Wa[f[(f[a>>2]|0)+20>>2]&127](a,h)|0;if((e|0)<=-1){d=7;break}d=f[c+8>>2]|0;if(((f[c+12>>2]|0)-d>>2|0)<=(e|0)){d=9;break}c=f[i>>2]|0;h=h+1|0;if(!(Wa[f[(f[c>>2]|0)+8>>2]&127](c,f[d+(e<<2)>>2]|0)|0)){c=0;d=14;break}if((h|0)>=(g|0))break a}if((d|0)==7)Ga(17188,17204,71,17242);else if((d|0)==9)Ga(17252,17204,72,17242);else if((d|0)==14)return c|0}while(0);if(!(Wa[f[(f[a>>2]|0)+36>>2]&127](a,b)|0)){a=0;return a|0}if(!(Wa[f[(f[a>>2]|0)+40>>2]&127](a,b)|0)){a=0;return a|0}a=Sa[f[(f[a>>2]|0)+44>>2]&255](a)|0;return a|0}function Rg(a,b,c){a=a|0;b=b|0;c=c|0;var d=0,e=0,g=0,h=0,i=0,j=0,k=0,l=0,m=0,n=0,o=0;m=u;u=u+48|0;i=m+16|0;e=m;d=m+32|0;j=a+28|0;g=f[j>>2]|0;f[d>>2]=g;k=a+20|0;g=(f[k>>2]|0)-g|0;f[d+4>>2]=g;f[d+8>>2]=b;f[d+12>>2]=c;g=g+c|0;h=a+60|0;f[e>>2]=f[h>>2];f[e+4>>2]=d;f[e+8>>2]=2;b=Ro(za(146,e|0)|0)|0;a:do if((g|0)!=(b|0)){e=2;while(1){if((b|0)<0)break;g=g-b|0;o=f[d+4>>2]|0;n=b>>>0>o>>>0;d=n?d+8|0:d;e=(n<<31>>31)+e|0;o=b-(n?o:0)|0;f[d>>2]=(f[d>>2]|0)+o;n=d+4|0;f[n>>2]=(f[n>>2]|0)-o;f[i>>2]=f[h>>2];f[i+4>>2]=d;f[i+8>>2]=e;b=Ro(za(146,i|0)|0)|0;if((g|0)==(b|0)){l=3;break a}}f[a+16>>2]=0;f[j>>2]=0;f[k>>2]=0;f[a>>2]=f[a>>2]|32;if((e|0)==2)c=0;else c=c-(f[d+4>>2]|0)|0}else l=3;while(0);if((l|0)==3){o=f[a+44>>2]|0;f[a+16>>2]=o+(f[a+48>>2]|0);f[j>>2]=o;f[k>>2]=o}u=m;return c|0}function Sg(a,b){a=a|0;b=b|0;var c=0,d=0,e=0,g=0,i=0,j=0,k=0,l=0,m=0;k=u;u=u+16|0;j=k;l=b+8|0;i=f[l>>2]|0;l=f[l+4>>2]|0;g=b+16|0;d=g;c=f[d>>2]|0;d=Ho(c|0,f[d+4>>2]|0,4,0)|0;e=I;if((l|0)<(e|0)|(l|0)==(e|0)&i>>>0>>0){l=0;u=k;return l|0}i=(f[b>>2]|0)+c|0;i=h[i>>0]|h[i+1>>0]<<8|h[i+2>>0]<<16|h[i+3>>0]<<24;l=g;f[l>>2]=d;f[l+4>>2]=e;if((i|0)<0){l=0;u=k;return l|0}e=a+60|0;Fe(e,i,0);xq(j);if(Ff(j,b)|0){if((i|0)>0){c=0;d=1;do{d=d^((Tk(j)|0)^1);l=(f[e>>2]|0)+(c>>>5<<2)|0;g=1<<(c&31);m=f[l>>2]|0;f[l>>2]=d?m|g:m&~g;c=c+1|0}while((c|0)<(i|0))}c=ki(a+8|0,b)|0}else c=0;fr(j);m=c;u=k;return m|0}function Tg(a,c,d){a=a|0;c=c|0;d=d|0;var e=0,g=0,h=0,i=0,j=0,k=0;k=u;u=u+32|0;j=k+16|0;e=k+12|0;g=k+8|0;h=k+4|0;i=k;d=f[(f[c+4>>2]|0)+(d<<2)>>2]|0;f[a>>2]=0;f[a+4>>2]=0;f[a+8>>2]=0;f[a+12>>2]=0;f[a+16>>2]=0;f[a+20>>2]=0;c=f[c>>2]|0;if(!(b[c+84>>0]|0))d=f[(f[c+68>>2]|0)+(d<<2)>>2]|0;switch(b[c+24>>0]|0){case 1:{f[e>>2]=d;f[j>>2]=f[e>>2];eb(c,j,a)|0;u=k;return}case 2:{f[g>>2]=d;f[j>>2]=f[g>>2];sf(c,j,a)|0;u=k;return}case 3:{f[h>>2]=d;f[j>>2]=f[h>>2];rf(c,j,a)|0;u=k;return}case 4:{f[i>>2]=d;f[j>>2]=f[i>>2];qf(c,j,a)|0;u=k;return}default:{u=k;return}}}function Ug(a,c,d){a=a|0;c=c|0;d=d|0;var e=0,g=0,i=0,j=0,k=0,l=0;do if(c){i=a+8|0;l=i;j=f[l>>2]|0;l=f[l+4>>2]|0;e=a+16|0;g=e;c=f[g>>2]|0;g=Ho(c|0,f[g+4>>2]|0,8,0)|0;k=I;if((l|0)<(k|0)|(l|0)==(k|0)&j>>>0>>0){l=0;return l|0}else{c=(f[a>>2]|0)+c|0;l=c;l=h[l>>0]|h[l+1>>0]<<8|h[l+2>>0]<<16|h[l+3>>0]<<24;c=c+4|0;c=h[c>>0]|h[c+1>>0]<<8|h[c+2>>0]<<16|h[c+3>>0]<<24;g=d;d=g;b[d>>0]=l;b[d+1>>0]=l>>8;b[d+2>>0]=l>>16;b[d+3>>0]=l>>24;g=g+4|0;b[g>>0]=c;b[g+1>>0]=c>>8;b[g+2>>0]=c>>16;b[g+3>>0]=c>>24;g=e;g=Ho(f[g>>2]|0,f[g+4>>2]|0,8,0)|0;d=I;f[e>>2]=g;f[e+4>>2]=d;e=g;g=a;c=i;break}}else{d=a+16|0;e=f[d>>2]|0;d=f[d+4>>2]|0;g=a;c=a+8|0}while(0);b[a+36>>0]=1;k=(f[g>>2]|0)+e|0;l=c;l=Xn(f[l>>2]|0,f[l+4>>2]|0,e|0,d|0)|0;f[a+32>>2]=0;f[a+24>>2]=k;f[a+28>>2]=k+l;l=1;return l|0}function Vg(a,b){a=a|0;b=b|0;var c=0,d=0,e=0,g=0,h=0,i=0,j=0,k=0,l=0;l=u;u=u+16|0;k=l;j=ln(64)|0;i=ln(12)|0;g=f[(f[a+4>>2]|0)+68>>2]|0;f[i+4>>2]=0;f[i>>2]=4344;f[i+8>>2]=g;f[k>>2]=i;ql(j,k);i=a+8|0;g=a+12|0;a=f[g>>2]|0;c=f[i>>2]|0;e=a-c>>2;do if((e|0)<=(b|0)){d=b+1|0;if(d>>>0>e>>>0){ig(i,d-e|0);break}if(d>>>0>>0?(h=c+(d<<2)|0,(a|0)!=(h|0)):0)do{e=a+-4|0;f[g>>2]=e;a=f[e>>2]|0;f[e>>2]=0;if(a|0)Pa[f[(f[a>>2]|0)+4>>2]&127](a);a=f[g>>2]|0}while((a|0)!=(h|0))}while(0);i=(f[i>>2]|0)+(b<<2)|0;a=f[i>>2]|0;f[i>>2]=j;if(a|0)Pa[f[(f[a>>2]|0)+4>>2]&127](a);a=f[k>>2]|0;f[k>>2]=0;if(!a){u=l;return 1}Pa[f[(f[a>>2]|0)+4>>2]&127](a);u=l;return 1}function Wg(a){a=a|0;var b=0,c=0,d=0,e=0,g=0,h=0,i=0;h=u;u=u+16|0;d=h+4|0;e=h;g=a+8|0;c=a+84|0;a=f[c>>2]|0;if(!a){c=f[g>>2]|0;c=(f[c+4>>2]|0)-(f[c>>2]|0)>>2;a=(c>>>0)/3|0;if(c>>>0<=2){u=h;return 1}b=0;do{f[e>>2]=b*3;f[d>>2]=f[e>>2];ec(g,d);b=b+1|0}while((b|0)<(a|0));u=h;return 1}else{b=f[a>>2]|0;if((f[a+4>>2]|0)==(b|0)){u=h;return 1}a=0;do{f[e>>2]=f[b+(a<<2)>>2];f[d>>2]=f[e>>2];ec(g,d);a=a+1|0;i=f[c>>2]|0;b=f[i>>2]|0}while(a>>>0<(f[i+4>>2]|0)-b>>2>>>0);u=h;return 1}return 0}function Xg(a,c,d){a=a|0;c=c|0;d=d|0;var e=0,g=0,h=0,i=0,j=0,k=0;k=u;u=u+32|0;j=k+16|0;e=k+12|0;g=k+8|0;h=k+4|0;i=k;d=f[(f[c+48>>2]|0)+(d<<2)>>2]|0;f[a>>2]=0;f[a+4>>2]=0;f[a+8>>2]=0;c=f[c+44>>2]|0;if(!(b[c+84>>0]|0))d=f[(f[c+68>>2]|0)+(d<<2)>>2]|0;switch(b[c+24>>0]|0){case 1:{f[e>>2]=d;f[j>>2]=f[e>>2];od(c,j,a)|0;u=k;return}case 2:{f[g>>2]=d;f[j>>2]=f[g>>2];wc(c,j,a)|0;u=k;return}case 3:{f[h>>2]=d;f[j>>2]=f[h>>2];Vc(c,j,a)|0;u=k;return}case 4:{f[i>>2]=d;f[j>>2]=f[i>>2];Nc(c,j,a)|0;u=k;return}default:{u=k;return}}}function Yg(a,c,d){a=a|0;c=c|0;d=d|0;var e=0,g=0,h=0,i=0,j=0,k=0,l=0,m=0,n=0;l=u;u=u+16|0;k=l;i=a+4|0;f[i>>2]=0;if(!c){u=l;return}h=a+8|0;e=f[h>>2]|0;if(e<<5>>>0>>0){f[k>>2]=0;j=k+4|0;f[j>>2]=0;g=k+8|0;f[g>>2]=0;if((c|0)<0){Lp(a);e=f[h>>2]|0}m=e<<6;n=c+31&-32;ri(k,e<<5>>>0<1073741823?(m>>>0>>0?n:m):2147483647);e=f[a>>2]|0;f[a>>2]=f[k>>2];f[k>>2]=e;k=f[i>>2]|0;f[i>>2]=c;f[j>>2]=k;k=f[h>>2]|0;f[h>>2]=f[g>>2];f[g>>2]=k;if(e|0)ar(e)}else f[i>>2]=c;a=f[a>>2]|0;g=a;h=c>>>5;e=h<<2;if(!(b[d>>0]|0)){ej(a|0,0,e|0)|0;e=c-(h<<5)|0;a=g+(h<<2)|0;if(!e){u=l;return}f[a>>2]=f[a>>2]&~(-1>>>(32-e|0));u=l;return}else{ej(a|0,-1,e|0)|0;e=c-(h<<5)|0;a=g+(h<<2)|0;if(!e){u=l;return}f[a>>2]=f[a>>2]|-1>>>(32-e|0);u=l;return}}function Zg(a){a=a|0;var c=0,d=0,e=0,g=0,h=0,i=0,j=0;i=a+12|0;h=f[a>>2]|0;j=a+8|0;c=f[j>>2]|0;d=(c|0)<0;if(!(b[i>>0]|0)){do if(!d){c=(((c>>>0)%3|0|0)==0?2:-1)+c|0;if((c|0)>=0){c=f[(f[h+12>>2]|0)+(c<<2)>>2]|0;if((c|0)>=0)if(!((c>>>0)%3|0)){c=c+2|0;break}else{c=c+-1|0;break}}}while(0);f[j>>2]=c;return}e=c+1|0;if(!d){c=((e|0)%3|0|0)==0?c+-2|0:e;if((c|0)>=0){c=f[(f[h+12>>2]|0)+(c<<2)>>2]|0;d=c+1|0;if((c|0)>=0){c=((d|0)%3|0|0)==0?c+-2|0:d;f[j>>2]=c;if((c|0)>=0){if((c|0)!=(f[a+4>>2]|0))return;f[j>>2]=-1073741824;return}}else g=5}else g=5}else g=5;if((g|0)==5)f[j>>2]=c;c=f[a+4>>2]|0;do if((c|0)>=0){c=(((c>>>0)%3|0|0)==0?2:-1)+c|0;if((c|0)>=0){c=f[(f[h+12>>2]|0)+(c<<2)>>2]|0;if((c|0)>=0)if(!((c>>>0)%3|0)){c=c+2|0;break}else{c=c+-1|0;break}}}while(0);f[j>>2]=c;b[i>>0]=0;return}function _g(a,c,d){a=a|0;c=c|0;d=d|0;var e=0,g=0,h=0,i=0,j=0,k=0;k=u;u=u+32|0;j=k+16|0;e=k+12|0;g=k+8|0;h=k+4|0;i=k;d=f[(f[c+64>>2]|0)+(d<<2)>>2]|0;f[a>>2]=0;f[a+4>>2]=0;f[a+8>>2]=0;c=f[c+60>>2]|0;if(!(b[c+84>>0]|0))d=f[(f[c+68>>2]|0)+(d<<2)>>2]|0;switch(b[c+24>>0]|0){case 1:{f[e>>2]=d;f[j>>2]=f[e>>2];od(c,j,a)|0;u=k;return}case 2:{f[g>>2]=d;f[j>>2]=f[g>>2];wc(c,j,a)|0;u=k;return}case 3:{f[h>>2]=d;f[j>>2]=f[h>>2];Vc(c,j,a)|0;u=k;return}case 4:{f[i>>2]=d;f[j>>2]=f[i>>2];Nc(c,j,a)|0;u=k;return}default:{u=k;return}}}function $g(a){a=a|0;var b=0,c=0,d=0,e=0,g=0;f[a>>2]=1484;b=f[a+56>>2]|0;if(b|0){d=a+60|0;c=f[d>>2]|0;if((c|0)!=(b|0))f[d>>2]=c+(~((c+-4-b|0)>>>2)<<2);ar(b)}c=f[a+44>>2]|0;if(c|0){d=a+48|0;b=f[d>>2]|0;if((b|0)!=(c|0))f[d>>2]=b+(~((b+-4-c|0)>>>2)<<2);ar(c)}b=f[a+32>>2]|0;if(b|0){d=a+36|0;c=f[d>>2]|0;if((c|0)!=(b|0))f[d>>2]=c+(~((c+-4-b|0)>>>2)<<2);ar(b)}b=f[a+20>>2]|0;if(b|0){d=a+24|0;c=f[d>>2]|0;if((c|0)!=(b|0))f[d>>2]=c+(~((c+-4-b|0)>>>2)<<2);ar(b)}fi(a+8|0);a=a+4|0;e=f[a>>2]|0;f[a>>2]=0;if(!e)return;d=e+40|0;b=f[d>>2]|0;if(b|0){a=e+44|0;c=f[a>>2]|0;if((c|0)!=(b|0)){do{g=c+-4|0;f[a>>2]=g;c=f[g>>2]|0;f[g>>2]=0;if(c|0){Ri(c);ar(c)}c=f[a>>2]|0}while((c|0)!=(b|0));b=f[d>>2]|0}ar(b)}Ri(e);ar(e);return}function ah(a,c,d,e,g){a=a|0;c=c|0;d=d|0;e=e|0;g=g|0;var h=0,i=0,j=0,k=0;do if(!(wp(a,f[c+8>>2]|0,g)|0)){h=a+8|0;if(!(wp(a,f[c>>2]|0,g)|0)){j=f[h>>2]|0;Oa[f[(f[j>>2]|0)+24>>2]&3](j,c,d,e,g);break}a=c+32|0;if((f[c+16>>2]|0)!=(d|0)?(i=c+20|0,(f[i>>2]|0)!=(d|0)):0){f[a>>2]=e;e=c+44|0;if((f[e>>2]|0)==4)break;a=c+52|0;b[a>>0]=0;k=c+53|0;b[k>>0]=0;h=f[h>>2]|0;Va[f[(f[h>>2]|0)+20>>2]&3](h,c,d,d,1,g);if(b[k>>0]|0)if(!(b[a>>0]|0)){a=3;j=11}else a=3;else{a=4;j=11}if((j|0)==11){f[i>>2]=d;k=c+40|0;f[k>>2]=(f[k>>2]|0)+1;if((f[c+36>>2]|0)==1?(f[c+24>>2]|0)==2:0)b[c+54>>0]=1}f[e>>2]=a;break}if((e|0)==1)f[a>>2]=1}else Lm(0,c,d,e);while(0);return}function bh(a,b,c,d,e){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;var g=0,i=0;if((b|0)==-2)g=0;else{g=f[d+4>>2]|0;if((c|0)<=-1)Ga(17188,17204,63,17242);i=f[g+8>>2]|0;if(((f[g+12>>2]|0)-i>>2|0)<=(c|0))Ga(17252,17204,64,17242);g=f[i+(c<<2)>>2]|0;do if((Sa[f[(f[d>>2]|0)+8>>2]&255](d)|0)==1){jf(a,d,b,c,e,((h[d+36>>0]|0)<<8|(h[d+37>>0]|0))&65535);if(!(f[a>>2]|0)){f[a>>2]=0;break}else return}while(0);b=ln(28)|0;f[b+4>>2]=g;g=b+12|0;e=e+4|0;f[g>>2]=f[e>>2];f[g+4>>2]=f[e+4>>2];f[g+8>>2]=f[e+8>>2];f[g+12>>2]=f[e+12>>2];f[b+8>>2]=2764;f[b>>2]=2784;g=b}f[a>>2]=g;return}function ch(a,b,c){a=a|0;b=b|0;c=c|0;var d=0,e=0,g=0,h=0,i=0,j=0,k=0,l=0;k=a+8|0;e=f[k>>2]|0;l=a+4|0;h=f[l>>2]|0;g=h;if(e-h>>2>>>0>=b>>>0){d=g;e=b;while(1){f[d>>2]=f[c>>2];e=e+-1|0;if(!e)break;else d=d+4|0}f[l>>2]=g+(b<<2);return}d=f[a>>2]|0;g=(h-d>>2)+b|0;if(g>>>0>1073741823){Lp(a);d=f[a>>2]|0;e=f[k>>2]|0;j=f[l>>2]|0}else j=h;i=e-d|0;e=i>>1;g=i>>2>>>0<536870911?(e>>>0>>0?g:e):1073741823;e=j-d>>2;do if(g)if(g>>>0>1073741823){b=Ia(4)|0;Eq(b);sa(b|0,1344,125)}else{h=ln(g<<2)|0;break}else h=0;while(0);i=h+(e<<2)|0;h=h+(g<<2)|0;e=i;g=b;while(1){f[e>>2]=f[c>>2];g=g+-1|0;if(!g)break;else e=e+4|0}g=j-d|0;e=i+(0-(g>>2)<<2)|0;if((g|0)>0)Mg(e|0,d|0,g|0)|0;f[a>>2]=e;f[l>>2]=i+(b<<2);f[k>>2]=h;if(!d)return;ar(d);return}function dh(a,b,c,d,e,g){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;g=g|0;var h=0,i=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0;p=u;u=u+16|0;n=p+4|0;m=p;o=a+44|0;f[a+48>>2]=g;j=a+40|0;h=f[j>>2]|0;g=f[h+4>>2]|0;d=f[h>>2]|0;l=g-d|0;k=l>>2;if((l|0)<=0){u=p;return 1}l=a+8|0;i=a+52|0;a=g;g=0;while(1){if(a-d>>2>>>0<=g>>>0){Kp(h);d=f[h>>2]|0}f[m>>2]=f[d+(g<<2)>>2];f[n>>2]=f[m>>2];Pb(o,n,c,g);a=X(g,e)|0;ji(l,i,b+(a<<2)|0,c+(a<<2)|0);g=g+1|0;if((g|0)>=(k|0))break;h=f[j>>2]|0;d=f[h>>2]|0;a=f[h+4>>2]|0}u=p;return 1}function eh(a,b){a=a|0;b=b|0;var c=0,d=0,e=0,g=0,h=0,i=0,j=0;i=a+8|0;e=f[i>>2]|0;j=a+4|0;c=f[j>>2]|0;if(e-c>>3>>>0>=b>>>0){do{a=c;f[a>>2]=0;f[a+4>>2]=0;c=(f[j>>2]|0)+8|0;f[j>>2]=c;b=b+-1|0}while((b|0)!=0);return}d=f[a>>2]|0;g=(c-d>>3)+b|0;if(g>>>0>536870911){Lp(a);d=f[a>>2]|0;e=f[i>>2]|0;c=f[j>>2]|0}h=e-d|0;e=h>>2;e=h>>3>>>0<268435455?(e>>>0>>0?g:e):536870911;c=c-d>>3;do if(e)if(e>>>0>536870911){j=Ia(4)|0;Eq(j);sa(j|0,1344,125)}else{d=ln(e<<3)|0;break}else d=0;while(0);h=d+(c<<3)|0;g=d+(e<<3)|0;c=h;e=h;do{d=c;f[d>>2]=0;f[d+4>>2]=0;c=e+8|0;e=c;b=b+-1|0}while((b|0)!=0);c=f[a>>2]|0;d=(f[j>>2]|0)-c|0;b=h+(0-(d>>3)<<3)|0;if((d|0)>0)Mg(b|0,c|0,d|0)|0;f[a>>2]=b;f[j>>2]=e;f[i>>2]=g;if(!c)return;ar(c);return}function fh(a,b,c,d){a=a|0;b=b|0;c=c|0;d=d|0;var e=0,g=0,h=0,i=0;h=u;u=u+16|0;e=h+8|0;g=h+4|0;i=h;f[i>>2]=f[b>>2];f[e>>2]=f[i>>2];b=ld(a,e,g,c)|0;c=f[b>>2]|0;if(c|0){i=c;u=h;return i|0}e=ln(40)|0;ml(e+16|0,d);ml(e+28|0,d+12|0);c=f[g>>2]|0;f[e>>2]=0;f[e+4>>2]=0;f[e+8>>2]=c;f[b>>2]=e;c=f[f[a>>2]>>2]|0;if(!c)c=e;else{f[a>>2]=c;c=f[b>>2]|0}Me(f[a+4>>2]|0,c);i=a+8|0;f[i>>2]=(f[i>>2]|0)+1;i=e;u=h;return i|0}function gh(a,b){a=a|0;b=b|0;var c=0,d=0,e=0;e=u;u=u+32|0;c=e+16|0;d=e;switch(b<<24>>24){case 0:{b=ln(44)|0;c=b;d=c+44|0;do{f[c>>2]=0;c=c+4|0}while((c|0)<(d|0));qm(b);f[b>>2]=4300;f[a>>2]=0;f[a+4>>2]=0;f[a+8>>2]=0;f[a+12>>2]=0;f[a+16>>2]=b;u=e;return}case 1:{b=ln(44)|0;c=b;d=c+44|0;do{f[c>>2]=0;c=c+4|0}while((c|0)<(d|0));qm(b);f[b>>2]=4368;f[a>>2]=0;f[a+4>>2]=0;f[a+8>>2]=0;f[a+12>>2]=0;f[a+16>>2]=b;u=e;return}default:{f[d>>2]=0;f[d+4>>2]=0;f[d+8>>2]=0;Pj(d,19217,28);f[c>>2]=-1;b=c+4|0;ml(b,d);f[a>>2]=f[c>>2];ml(a+4|0,b);f[a+16>>2]=0;Lo(b);Lo(d);u=e;return}}}function hh(a,b,c,d,e){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;var g=0,i=0;if((b|0)==-2)g=0;else{g=f[d+4>>2]|0;if((c|0)<=-1)Ga(17188,17204,63,17242);i=f[g+8>>2]|0;if(((f[g+12>>2]|0)-i>>2|0)<=(c|0))Ga(17252,17204,64,17242);g=f[i+(c<<2)>>2]|0;do if((Sa[f[(f[d>>2]|0)+8>>2]&255](d)|0)==1){lf(a,d,b,c,e,((h[d+36>>0]|0)<<8|(h[d+37>>0]|0))&65535);if(!(f[a>>2]|0)){f[a>>2]=0;break}else return}while(0);b=ln(28)|0;f[b+4>>2]=g;g=b+12|0;e=e+4|0;f[g>>2]=f[e>>2];f[g+4>>2]=f[e+4>>2];f[g+8>>2]=f[e+8>>2];f[g+12>>2]=f[e+12>>2];f[b+8>>2]=2744;f[b>>2]=3512;g=b}f[a>>2]=g;return}function ih(a,b){a=a|0;b=b|0;var c=0,d=0,e=0,g=0,h=0,i=0,j=0,k=0;j=a+8|0;d=f[j>>2]|0;k=a+4|0;g=f[k>>2]|0;e=g;if(d-g>>2>>>0>=b>>>0){c=e;d=b;while(1){f[c>>2]=1;d=d+-1|0;if(!d)break;else c=c+4|0}f[k>>2]=e+(b<<2);return}c=f[a>>2]|0;e=(g-c>>2)+b|0;if(e>>>0>1073741823){Lp(a);c=f[a>>2]|0;d=f[j>>2]|0;i=f[k>>2]|0}else i=g;h=d-c|0;d=h>>1;e=h>>2>>>0<536870911?(d>>>0>>0?e:d):1073741823;d=i-c>>2;do if(e)if(e>>>0>1073741823){b=Ia(4)|0;Eq(b);sa(b|0,1344,125)}else{g=ln(e<<2)|0;break}else g=0;while(0);h=g+(d<<2)|0;g=g+(e<<2)|0;d=h;e=b;while(1){f[d>>2]=1;e=e+-1|0;if(!e)break;else d=d+4|0}e=i-c|0;d=h+(0-(e>>2)<<2)|0;if((e|0)>0)Mg(d|0,c|0,e|0)|0;f[a>>2]=d;f[k>>2]=h+(b<<2);f[j>>2]=g;if(!c)return;ar(c);return}function jh(a,b,c,d,e,g){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;g=g|0;var h=0,i=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0;p=u;u=u+16|0;n=p+4|0;m=p;o=a+44|0;f[a+48>>2]=g;j=a+40|0;h=f[j>>2]|0;g=f[h+4>>2]|0;d=f[h>>2]|0;l=g-d|0;k=l>>2;if((l|0)<=0){u=p;return 1}l=a+8|0;i=a+52|0;a=g;g=0;while(1){if(a-d>>2>>>0<=g>>>0){Kp(h);d=f[h>>2]|0}f[m>>2]=f[d+(g<<2)>>2];f[n>>2]=f[m>>2];Nb(o,n,c,g);a=X(g,e)|0;ji(l,i,b+(a<<2)|0,c+(a<<2)|0);g=g+1|0;if((g|0)>=(k|0))break;h=f[j>>2]|0;d=f[h>>2]|0;a=f[h+4>>2]|0}u=p;return 1}function kh(a,b,c,d,e,g){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;g=g|0;var h=0,i=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0;p=u;u=u+16|0;n=p+4|0;m=p;o=a+44|0;f[a+48>>2]=g;j=a+40|0;h=f[j>>2]|0;g=f[h+4>>2]|0;d=f[h>>2]|0;l=g-d|0;k=l>>2;if((l|0)<=0){u=p;return 1}l=a+8|0;i=a+52|0;a=g;g=0;while(1){if(a-d>>2>>>0<=g>>>0){Kp(h);d=f[h>>2]|0}f[m>>2]=f[d+(g<<2)>>2];f[n>>2]=f[m>>2];Pb(o,n,c,g);a=X(g,e)|0;mi(l,i,b+(a<<2)|0,c+(a<<2)|0);g=g+1|0;if((g|0)>=(k|0))break;h=f[j>>2]|0;d=f[h>>2]|0;a=f[h+4>>2]|0}u=p;return 1}function lh(a){a=a|0;var c=0,d=0,e=0,g=0,h=0,i=0,j=0,k=0,l=0;k=a+8|0;c=f[k>>2]|0;l=a+16|0;if(b[c+84>>0]|0){l=f[l>>2]|0;return l|0}d=f[l>>2]|0;a=d+84|0;if(!(b[a>>0]|0)){l=f[l>>2]|0;return l|0}i=(f[c+72>>2]|0)-(f[c+68>>2]|0)>>2;b[a>>0]=0;h=d+68|0;e=d+72|0;d=f[e>>2]|0;a=f[h>>2]|0;g=d-a>>2;if(i>>>0<=g>>>0){if(i>>>0>>0?(j=a+(i<<2)|0,(d|0)!=(j|0)):0)f[e>>2]=d+(~((d+-4-j|0)>>>2)<<2)}else{ch(h,i-g|0,1760);c=f[k>>2]|0}if(b[c+84>>0]|0){l=f[l>>2]|0;return l|0}k=f[c+68>>2]|0;g=k;k=(f[c+72>>2]|0)-k|0;d=k>>2;if((k|0)<=0){l=f[l>>2]|0;return l|0}c=f[l>>2]|0;e=(b[c+84>>0]|0)==0;c=c+68|0;a=0;while(1){if(!e){c=13;break}f[(f[c>>2]|0)+(a<<2)>>2]=f[g+(a<<2)>>2];a=a+1|0;if((a|0)>=(d|0)){c=14;break}}if((c|0)==13)Ga(18230,18249,91,18290);else if((c|0)==14){l=f[l>>2]|0;return l|0}return 0}function mh(a,b){a=a|0;b=b|0;var c=0,d=0,e=0,g=0,h=0,i=0,j=0,k=0,l=0,m=0;m=a+4|0;c=f[m>>2]|0;d=f[a>>2]|0;g=((c-d|0)/12|0)+1|0;if(g>>>0>357913941){Lp(a);c=f[m>>2]|0;d=f[a>>2]|0}k=d;e=c;l=a+8|0;j=((f[l>>2]|0)-d|0)/12|0;i=j<<1;g=j>>>0<178956970?(i>>>0>>0?g:i):357913941;i=(c-d|0)/12|0;do if(g)if(g>>>0>357913941){a=Ia(4)|0;Eq(a);sa(a|0,1344,125)}else{h=ln(g*12|0)|0;break}else h=0;while(0);c=h+(i*12|0)|0;j=h+(g*12|0)|0;f[c>>2]=f[b>>2];f[h+(i*12|0)+4>>2]=f[b+4>>2];f[h+(i*12|0)+8>>2]=f[b+8>>2];g=c+12|0;if((e|0)!=(k|0))do{b=e;e=e+-12|0;f[c+-12>>2]=f[e>>2];f[c+-8>>2]=f[b+-8>>2];f[c+-4>>2]=f[b+-4>>2];c=c+-12|0}while((e|0)!=(k|0));f[a>>2]=c;f[m>>2]=g;f[l>>2]=j;if(!d)return;ar(d);return}function nh(a){a=a|0;var b=0,c=0,d=0,e=0,g=0,h=0;b=f[a+140>>2]|0;if(b|0){d=a+144|0;c=f[d>>2]|0;if((c|0)!=(b|0))f[d>>2]=c+(~((c+-4-b|0)>>>2)<<2);ar(b)}g=a+128|0;b=f[g>>2]|0;if(b|0){h=a+132|0;c=f[h>>2]|0;if((c|0)!=(b|0)){do{d=c+-12|0;f[h>>2]=d;e=f[d>>2]|0;if(!e)c=d;else{d=c+-8|0;c=f[d>>2]|0;if((c|0)!=(e|0))f[d>>2]=c+(~((c+-4-e|0)>>>2)<<2);ar(e);c=f[h>>2]|0}}while((c|0)!=(b|0));b=f[g>>2]|0}ar(b)}b=f[a+100>>2]|0;if(b|0){d=a+104|0;c=f[d>>2]|0;if((c|0)!=(b|0))f[d>>2]=c+(~((c+-4-b|0)>>>2)<<2);ar(b)}h=a+80|0;c=f[h>>2]|0;f[h>>2]=0;if(!c){h=a+64|0;fr(h);a=a+24|0;fr(a);return}d=c+-4|0;b=f[d>>2]|0;if(b|0){b=c+(b<<4)|0;do{b=b+-16|0;fr(b)}while((b|0)!=(c|0))}_q(d);h=a+64|0;fr(h);a=a+24|0;fr(a);return}function oh(a,b,c,d,e,g){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;g=g|0;var h=0,i=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0;p=u;u=u+16|0;n=p+4|0;m=p;o=a+44|0;f[a+48>>2]=g;j=a+40|0;h=f[j>>2]|0;g=f[h+4>>2]|0;d=f[h>>2]|0;l=g-d|0;k=l>>2;if((l|0)<=0){u=p;return 1}l=a+8|0;i=a+52|0;a=g;g=0;while(1){if(a-d>>2>>>0<=g>>>0){Kp(h);d=f[h>>2]|0}f[m>>2]=f[d+(g<<2)>>2];f[n>>2]=f[m>>2];Nb(o,n,c,g);a=X(g,e)|0;mi(l,i,b+(a<<2)|0,c+(a<<2)|0);g=g+1|0;if((g|0)>=(k|0))break;h=f[j>>2]|0;d=f[h>>2]|0;a=f[h+4>>2]|0}u=p;return 1}function ph(a,b){a=a|0;b=b|0;var c=0,d=0,e=0,g=0,h=0,i=0,j=0;h=u;u=u+16|0;c=h;i=f[(f[a>>2]|0)+8>>2]|0;g=a+8|0;e=a+12|0;d=(f[e>>2]|0)-(f[g>>2]|0)>>2;j=f[b>>2]|0;f[b>>2]=0;f[c>>2]=j;Ta[i&7](a,d,c);d=f[c>>2]|0;f[c>>2]=0;if(!d){i=f[e>>2]|0;j=f[g>>2]|0;j=i-j|0;j=j>>2;j=j+-1|0;u=h;return j|0}j=d+88|0;b=f[j>>2]|0;f[j>>2]=0;if(b|0){a=f[b+8>>2]|0;if(a|0){c=b+12|0;if((f[c>>2]|0)!=(a|0))f[c>>2]=a;ar(a)}ar(b)}b=f[d+68>>2]|0;if(b|0){c=d+72|0;a=f[c>>2]|0;if((a|0)!=(b|0))f[c>>2]=a+(~((a+-4-b|0)>>>2)<<2);ar(b)}j=d+64|0;b=f[j>>2]|0;f[j>>2]=0;if(b|0){a=f[b>>2]|0;if(a|0){c=b+4|0;if((f[c>>2]|0)!=(a|0))f[c>>2]=a;ar(a)}ar(b)}ar(d);i=f[e>>2]|0;j=f[g>>2]|0;j=i-j|0;j=j>>2;j=j+-1|0;u=h;return j|0}function qh(a,b){a=a|0;b=b|0;var c=0,d=0,e=0,g=0,i=0;if((Sa[f[(f[b>>2]|0)+20>>2]&255](b)|0)<=0){b=1;return b|0}g=a+4|0;i=0;while(1){e=f[(f[g>>2]|0)+4>>2]|0;e=mm(e,Wa[f[(f[b>>2]|0)+24>>2]&127](b,i)|0)|0;if((e|0)==-1){a=0;c=12;break}a=f[g>>2]|0;d=f[(f[b>>2]|0)+28>>2]|0;if(((h[a+36>>0]|0)<<8&65535)<512){a=f[a+4>>2]|0;if((e|0)<=-1){c=6;break}c=f[a+8>>2]|0;if(((f[a+12>>2]|0)-c>>2|0)<=(e|0)){c=8;break}if(!(Wa[d&127](b,f[c+(e<<2)>>2]|0)|0)){a=0;c=12;break}}else{e=hl(a,e)|0;if(!(Wa[d&127](b,e)|0)){a=0;c=12;break}}i=i+1|0;if((i|0)>=(Sa[f[(f[b>>2]|0)+20>>2]&255](b)|0)){a=1;c=12;break}}if((c|0)==6)Ga(17188,17204,71,17242);else if((c|0)==8)Ga(17252,17204,72,17242);else if((c|0)==12)return a|0;return 0}function rh(a,c,d){a=a|0;c=c|0;d=d|0;var e=0,g=0,h=0,i=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0;r=u;u=u+224|0;m=r+120|0;q=r+80|0;p=r;o=r+136|0;e=q;g=e+40|0;do{f[e>>2]=0;e=e+4|0}while((e|0)<(g|0));f[m>>2]=f[d>>2];if((zb(0,c,m,p,q)|0)<0)d=-1;else{if((f[a+76>>2]|0)>-1)n=gr(a)|0;else n=0;d=f[a>>2]|0;l=d&32;if((b[a+74>>0]|0)<1)f[a>>2]=d&-33;h=a+48|0;if(!(f[h>>2]|0)){g=a+44|0;d=f[g>>2]|0;f[g>>2]=o;i=a+28|0;f[i>>2]=o;k=a+20|0;f[k>>2]=o;f[h>>2]=80;j=a+16|0;f[j>>2]=o+80;e=zb(a,c,m,p,q)|0;if(d){Na[f[a+36>>2]&31](a,0,0)|0;e=(f[k>>2]|0)==0?-1:e;f[g>>2]=d;f[h>>2]=0;f[j>>2]=0;f[i>>2]=0;f[k>>2]=0}}else e=zb(a,c,m,p,q)|0;d=f[a>>2]|0;f[a>>2]=d|l;if(n|0)fr(a);d=(d&32|0)==0?e:-1}u=r;return d|0}function sh(a,b){a=a|0;b=b|0;var c=0,d=0,e=0,g=0,i=0,j=0,k=0,l=0,m=0;m=u;u=u+16|0;l=m;if(!(Yd(a,b)|0)){a=0;u=m;return a|0}i=b+8|0;j=f[i>>2]|0;i=f[i+4>>2]|0;g=b+16|0;d=g;c=f[d>>2]|0;d=Ho(c|0,f[d+4>>2]|0,4,0)|0;e=I;if((i|0)<(e|0)|(i|0)==(e|0)&j>>>0>>0){a=0;u=m;return a|0}c=(f[b>>2]|0)+c|0;c=h[c>>0]|h[c+1>>0]<<8|h[c+2>>0]<<16|h[c+3>>0]<<24;j=g;f[j>>2]=d;f[j+4>>2]=e;if((c|0)<0){a=0;u=m;return a|0}j=a+96|0;g=(f[j>>2]|0)+c|0;f[j>>2]=g;j=a+100|0;f[l>>2]=0;e=a+104|0;d=f[e>>2]|0;c=f[j>>2]|0;i=d-c>>2;if(g>>>0<=i>>>0){if(g>>>0>>0?(k=c+(g<<2)|0,(d|0)!=(k|0)):0)f[e>>2]=d+(~((d+-4-k|0)>>>2)<<2)}else ch(j,g-i|0,l);a=Ff(a+112|0,b)|0;u=m;return a|0}function th(a,b,c){a=a|0;b=b|0;c=c|0;var d=0,e=0,g=0,h=0,i=0,j=0,k=0;g=a+4|0;e=f[g>>2]|0;d=f[a>>2]|0;i=e-d>>2;if(i>>>0>=1048576){if((i|0)!=1048576?(h=d+4194304|0,(e|0)!=(h|0)):0)f[g>>2]=e+(~((e+-4-h|0)>>>2)<<2)}else ui(a,1048576-i|0);h=a+12|0;g=a+16|0;e=f[g>>2]|0;d=f[h>>2]|0;i=e-d>>3;if(i>>>0>=c>>>0){if(i>>>0>c>>>0?(j=d+(c<<3)|0,(e|0)!=(j|0)):0)f[g>>2]=e+(~((e+-8-j|0)>>>3)<<3);if(!c){k=0;return k|0}}else eh(h,c-i|0);e=f[h>>2]|0;h=0;i=0;do{j=b+(i<<2)|0;f[e+(i<<3)>>2]=f[j>>2];f[e+(i<<3)+4>>2]=h;d=h;h=(f[j>>2]|0)+h|0;if(h>>>0>1048576){d=0;k=19;break}if(d>>>0>>0){g=f[a>>2]|0;do{f[g+(d<<2)>>2]=i;d=d+1|0}while((d|0)!=(h|0))}i=i+1|0}while(i>>>0>>0);if((k|0)==19)return d|0;k=(h|0)==1048576;return k|0}function uh(a,c,e,g){a=a|0;c=c|0;e=e|0;g=g|0;var h=0,i=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0;p=u;u=u+64|0;o=p;m=f[a>>2]|0;n=a+(f[m+-8>>2]|0)|0;m=f[m+-4>>2]|0;f[o>>2]=e;f[o+4>>2]=a;f[o+8>>2]=c;f[o+12>>2]=g;g=o+16|0;a=o+20|0;h=o+24|0;j=o+28|0;i=o+32|0;c=o+40|0;k=g;l=k+36|0;do{f[k>>2]=0;k=k+4|0}while((k|0)<(l|0));d[g+36>>1]=0;b[g+38>>0]=0;a:do if(wp(m,e,0)|0){f[o+48>>2]=1;Va[f[(f[m>>2]|0)+20>>2]&3](m,o,n,n,1,0);g=(f[h>>2]|0)==1?n:0}else{Oa[f[(f[m>>2]|0)+24>>2]&3](m,o,n,1,0);switch(f[o+36>>2]|0){case 0:{g=(f[c>>2]|0)==1&(f[j>>2]|0)==1&(f[i>>2]|0)==1?f[a>>2]|0:0;break a}case 1:break;default:{g=0;break a}}if((f[h>>2]|0)!=1?!((f[c>>2]|0)==0&(f[j>>2]|0)==1&(f[i>>2]|0)==1):0){g=0;break}g=f[g>>2]|0}while(0);u=p;return g|0}function vh(a,b){a=a|0;b=b|0;var c=0,d=0,e=0,g=0,h=0,i=0,j=0,k=0,l=0,m=0,n=0,o=0;o=u;u=u+16|0;n=o;m=b+4|0;c=f[m>>2]|0;d=f[b>>2]|0;k=((c-d|0)/12|0)*3|0;i=a+4|0;h=f[i>>2]|0;e=f[a>>2]|0;l=h-e>>2;g=d;if(k>>>0<=l>>>0){if(k>>>0>>0?(j=e+(k<<2)|0,(h|0)!=(j|0)):0)f[i>>2]=h+(~((h+-4-j|0)>>>2)<<2)}else{ui(a,k-l|0);g=f[b>>2]|0;d=g;c=f[m>>2]|0}if((c-d|0)>0){e=f[a>>2]|0;d=(c-g|0)/12|0;c=0;do{m=c*3|0;f[e+(m<<2)>>2]=f[g+(c*12|0)>>2];f[e+(m+1<<2)>>2]=f[g+(c*12|0)+4>>2];f[e+(m+2<<2)>>2]=f[g+(c*12|0)+8>>2];c=c+1|0}while((c|0)<(d|0))}f[n>>2]=-1;if(!(Ib(a,n)|0)){a=0;u=o;return a|0}xb(a,f[n>>2]|0)|0;a=1;u=o;return a|0}function wh(a,b,c){a=a|0;b=b|0;c=c|0;var d=0,e=0,g=0,h=0,i=0,j=0,k=0;g=a+4|0;e=f[g>>2]|0;d=f[a>>2]|0;i=e-d>>2;if(i>>>0>=524288){if((i|0)!=524288?(h=d+2097152|0,(e|0)!=(h|0)):0)f[g>>2]=e+(~((e+-4-h|0)>>>2)<<2)}else ui(a,524288-i|0);h=a+12|0;g=a+16|0;e=f[g>>2]|0;d=f[h>>2]|0;i=e-d>>3;if(i>>>0>=c>>>0){if(i>>>0>c>>>0?(j=d+(c<<3)|0,(e|0)!=(j|0)):0)f[g>>2]=e+(~((e+-8-j|0)>>>3)<<3);if(!c){k=0;return k|0}}else eh(h,c-i|0);e=f[h>>2]|0;h=0;i=0;do{j=b+(i<<2)|0;f[e+(i<<3)>>2]=f[j>>2];f[e+(i<<3)+4>>2]=h;d=h;h=(f[j>>2]|0)+h|0;if(h>>>0>524288){d=0;k=19;break}if(d>>>0>>0){g=f[a>>2]|0;do{f[g+(d<<2)>>2]=i;d=d+1|0}while((d|0)!=(h|0))}i=i+1|0}while(i>>>0>>0);if((k|0)==19)return d|0;k=(h|0)==524288;return k|0}function xh(a,b,c){a=a|0;b=b|0;c=c|0;var d=0,e=0,g=0,h=0,i=0,j=0,k=0;g=a+4|0;e=f[g>>2]|0;d=f[a>>2]|0;i=e-d>>2;if(i>>>0>=262144){if((i|0)!=262144?(h=d+1048576|0,(e|0)!=(h|0)):0)f[g>>2]=e+(~((e+-4-h|0)>>>2)<<2)}else ui(a,262144-i|0);h=a+12|0;g=a+16|0;e=f[g>>2]|0;d=f[h>>2]|0;i=e-d>>3;if(i>>>0>=c>>>0){if(i>>>0>c>>>0?(j=d+(c<<3)|0,(e|0)!=(j|0)):0)f[g>>2]=e+(~((e+-8-j|0)>>>3)<<3);if(!c){k=0;return k|0}}else eh(h,c-i|0);e=f[h>>2]|0;h=0;i=0;do{j=b+(i<<2)|0;f[e+(i<<3)>>2]=f[j>>2];f[e+(i<<3)+4>>2]=h;d=h;h=(f[j>>2]|0)+h|0;if(h>>>0>262144){d=0;k=19;break}if(d>>>0>>0){g=f[a>>2]|0;do{f[g+(d<<2)>>2]=i;d=d+1|0}while((d|0)!=(h|0))}i=i+1|0}while(i>>>0>>0);if((k|0)==19)return d|0;k=(h|0)==262144;return k|0}function yh(a,b,c){a=a|0;b=b|0;c=c|0;var d=0,e=0,g=0,h=0,i=0,j=0,k=0;g=a+4|0;e=f[g>>2]|0;d=f[a>>2]|0;i=e-d>>2;if(i>>>0>=65536){if((i|0)!=65536?(h=d+262144|0,(e|0)!=(h|0)):0)f[g>>2]=e+(~((e+-4-h|0)>>>2)<<2)}else ui(a,65536-i|0);h=a+12|0;g=a+16|0;e=f[g>>2]|0;d=f[h>>2]|0;i=e-d>>3;if(i>>>0>=c>>>0){if(i>>>0>c>>>0?(j=d+(c<<3)|0,(e|0)!=(j|0)):0)f[g>>2]=e+(~((e+-8-j|0)>>>3)<<3);if(!c){k=0;return k|0}}else eh(h,c-i|0);e=f[h>>2]|0;h=0;i=0;do{j=b+(i<<2)|0;f[e+(i<<3)>>2]=f[j>>2];f[e+(i<<3)+4>>2]=h;d=h;h=(f[j>>2]|0)+h|0;if(h>>>0>65536){d=0;k=19;break}if(d>>>0>>0){g=f[a>>2]|0;do{f[g+(d<<2)>>2]=i;d=d+1|0}while((d|0)!=(h|0))}i=i+1|0}while(i>>>0>>0);if((k|0)==19)return d|0;k=(h|0)==65536;return k|0}function zh(a,b,c){a=a|0;b=b|0;c=c|0;var d=0,e=0,g=0,h=0,i=0,j=0,k=0;g=a+4|0;e=f[g>>2]|0;d=f[a>>2]|0;i=e-d>>2;if(i>>>0>=32768){if((i|0)!=32768?(h=d+131072|0,(e|0)!=(h|0)):0)f[g>>2]=e+(~((e+-4-h|0)>>>2)<<2)}else ui(a,32768-i|0);h=a+12|0;g=a+16|0;e=f[g>>2]|0;d=f[h>>2]|0;i=e-d>>3;if(i>>>0>=c>>>0){if(i>>>0>c>>>0?(j=d+(c<<3)|0,(e|0)!=(j|0)):0)f[g>>2]=e+(~((e+-8-j|0)>>>3)<<3);if(!c){k=0;return k|0}}else eh(h,c-i|0);e=f[h>>2]|0;h=0;i=0;do{j=b+(i<<2)|0;f[e+(i<<3)>>2]=f[j>>2];f[e+(i<<3)+4>>2]=h;d=h;h=(f[j>>2]|0)+h|0;if(h>>>0>32768){d=0;k=19;break}if(d>>>0>>0){g=f[a>>2]|0;do{f[g+(d<<2)>>2]=i;d=d+1|0}while((d|0)!=(h|0))}i=i+1|0}while(i>>>0>>0);if((k|0)==19)return d|0;k=(h|0)==32768;return k|0}function Ah(a,b){a=a|0;b=b|0;var c=0,d=0,e=0,g=0;g=a+4|0;c=f[g>>2]|0;d=f[a>>2]|0;e=c-d>>2;if(e>>>0>>0){Nf(a,b-e|0);return}if(e>>>0<=b>>>0)return;a=d+(b<<2)|0;if((c|0)==(a|0))return;do{b=c+-4|0;f[g>>2]=b;e=f[b>>2]|0;f[b>>2]=0;if(e|0){b=e+88|0;c=f[b>>2]|0;f[b>>2]=0;if(c|0){d=f[c+8>>2]|0;if(d|0){b=c+12|0;if((f[b>>2]|0)!=(d|0))f[b>>2]=d;ar(d)}ar(c)}c=f[e+68>>2]|0;if(c|0){b=e+72|0;d=f[b>>2]|0;if((d|0)!=(c|0))f[b>>2]=d+(~((d+-4-c|0)>>>2)<<2);ar(c)}b=e+64|0;c=f[b>>2]|0;f[b>>2]=0;if(c|0){d=f[c>>2]|0;if(d|0){b=c+4|0;if((f[b>>2]|0)!=(d|0))f[b>>2]=d;ar(d)}ar(c)}ar(e)}c=f[g>>2]|0}while((c|0)!=(a|0));return}function Bh(a,b,c){a=a|0;b=b|0;c=c|0;var d=0,e=0,g=0,h=0,i=0,j=0,k=0;g=a+4|0;e=f[g>>2]|0;d=f[a>>2]|0;i=e-d>>2;if(i>>>0>=8192){if((i|0)!=8192?(h=d+32768|0,(e|0)!=(h|0)):0)f[g>>2]=e+(~((e+-4-h|0)>>>2)<<2)}else ui(a,8192-i|0);h=a+12|0;g=a+16|0;e=f[g>>2]|0;d=f[h>>2]|0;i=e-d>>3;if(i>>>0>=c>>>0){if(i>>>0>c>>>0?(j=d+(c<<3)|0,(e|0)!=(j|0)):0)f[g>>2]=e+(~((e+-8-j|0)>>>3)<<3);if(!c){k=0;return k|0}}else eh(h,c-i|0);e=f[h>>2]|0;h=0;i=0;do{j=b+(i<<2)|0;f[e+(i<<3)>>2]=f[j>>2];f[e+(i<<3)+4>>2]=h;d=h;h=(f[j>>2]|0)+h|0;if(h>>>0>8192){d=0;k=19;break}if(d>>>0>>0){g=f[a>>2]|0;do{f[g+(d<<2)>>2]=i;d=d+1|0}while((d|0)!=(h|0))}i=i+1|0}while(i>>>0>>0);if((k|0)==19)return d|0;k=(h|0)==8192;return k|0}function Ch(a,b,c){a=a|0;b=b|0;c=c|0;var d=0,e=0,g=0,h=0,i=0,j=0,k=0;g=a+4|0;e=f[g>>2]|0;d=f[a>>2]|0;i=e-d>>2;if(i>>>0>=4096){if((i|0)!=4096?(h=d+16384|0,(e|0)!=(h|0)):0)f[g>>2]=e+(~((e+-4-h|0)>>>2)<<2)}else ui(a,4096-i|0);h=a+12|0;g=a+16|0;e=f[g>>2]|0;d=f[h>>2]|0;i=e-d>>3;if(i>>>0>=c>>>0){if(i>>>0>c>>>0?(j=d+(c<<3)|0,(e|0)!=(j|0)):0)f[g>>2]=e+(~((e+-8-j|0)>>>3)<<3);if(!c){k=0;return k|0}}else eh(h,c-i|0);e=f[h>>2]|0;h=0;i=0;do{j=b+(i<<2)|0;f[e+(i<<3)>>2]=f[j>>2];f[e+(i<<3)+4>>2]=h;d=h;h=(f[j>>2]|0)+h|0;if(h>>>0>4096){d=0;k=19;break}if(d>>>0>>0){g=f[a>>2]|0;do{f[g+(d<<2)>>2]=i;d=d+1|0}while((d|0)!=(h|0))}i=i+1|0}while(i>>>0>>0);if((k|0)==19)return d|0;k=(h|0)==4096;return k|0}function Dh(a,b,c,d){a=a|0;b=b|0;c=c|0;d=d|0;var e=0,g=0,h=0,i=0;h=u;u=u+32|0;g=h+4|0;e=h;switch(d|0){case 2:{i=f[b+12>>2]|0;d=f[b+4>>2]|0;b=g+4|0;f[b>>2]=-1;f[b+4>>2]=-1;f[b+8>>2]=-1;f[b+12>>2]=-1;f[g>>2]=2744;hh(e,c,i,d,g);f[a>>2]=f[e>>2];u=h;return}case 3:{d=f[b+12>>2]|0;i=f[b+4>>2]|0;b=g+4|0;f[b>>2]=-1;f[b+4>>2]=-1;f[b+8>>2]=-1;f[b+12>>2]=-1;f[g>>2]=2764;bh(e,c,d,i,g);f[a>>2]=f[e>>2];u=h;return}default:{f[a>>2]=0;u=h;return}}}function Eh(a,c){a=a|0;c=c|0;var d=0,e=0,g=0,i=0,j=0,k=0,l=0,m=0,n=0,o=0;d=f[c+88>>2]|0;if(!d){a=0;return a|0}if((f[d>>2]|0)!=1){a=0;return a|0}m=d+8|0;j=f[m>>2]|0;f[a+4>>2]=h[j>>0]|h[j+1>>0]<<8|h[j+2>>0]<<16|h[j+3>>0]<<24;o=a+8|0;k=c+24|0;c=b[k>>0]|0;i=c<<24>>24;g=a+12|0;e=f[g>>2]|0;d=f[o>>2]|0;l=e-d>>2;if(i>>>0<=l>>>0){if(i>>>0>>0?(n=d+(i<<2)|0,(e|0)!=(n|0)):0)f[g>>2]=e+(~((e+-4-n|0)>>>2)<<2)}else{ui(o,i-l|0);c=b[k>>0]|0;j=f[m>>2]|0}d=j+4|0;d=h[d>>0]|h[d+1>>0]<<8|h[d+2>>0]<<16|h[d+3>>0]<<24;if(c<<24>>24>0){i=f[o>>2]|0;e=c<<24>>24;c=4;g=0;do{f[i+(g<<2)>>2]=d;c=c+4|0;g=g+1|0;d=j+c|0;d=h[d>>0]|h[d+1>>0]<<8|h[d+2>>0]<<16|h[d+3>>0]<<24}while((g|0)<(e|0))}f[a+20>>2]=d;a=1;return a|0}function Fh(a,c,d){a=a|0;c=c|0;d=d|0;a=sd(a,c)|0;if(!a){d=0;return d|0}c=f[a+20>>2]|0;if(((f[a+24>>2]|0)-c|0)!=8){d=0;return d|0}a=c;b[s>>0]=b[a>>0];b[s+1>>0]=b[a+1>>0];b[s+2>>0]=b[a+2>>0];b[s+3>>0]=b[a+3>>0];b[s+4>>0]=b[a+4>>0];b[s+5>>0]=b[a+5>>0];b[s+6>>0]=b[a+6>>0];b[s+7>>0]=b[a+7>>0];p[s>>3]=+p[s>>3];b[d>>0]=b[s>>0];b[d+1>>0]=b[s+1>>0];b[d+2>>0]=b[s+2>>0];b[d+3>>0]=b[s+3>>0];b[d+4>>0]=b[s+4>>0];b[d+5>>0]=b[s+5>>0];b[d+6>>0]=b[s+6>>0];b[d+7>>0]=b[s+7>>0];d=1;return d|0}function Gh(a,b){a=a|0;b=b|0;var c=0,d=0,e=La;if((b|0)!=1){if(b+-1&b)b=ab(b)|0}else b=2;d=f[a+4>>2]|0;if(b>>>0>d>>>0){Gd(a,b);return}if(b>>>0>=d>>>0)return;e=$((f[a+12>>2]|0)>>>0);c=~~$(W($(e/$(n[a+20>>2]))))>>>0;if(d>>>0>2&(d+-1&d|0)==0)c=1<<32-(_(c+-1|0)|0);else c=ab(c)|0;b=b>>>0>>0?c:b;if(b>>>0>=d>>>0)return;Gd(a,b);return}function Hh(a,c){a=a|0;c=c|0;var d=0,e=0,g=0,h=0,i=0,j=0;if(c>>>0>4294967279)Hp(a);i=a+11|0;e=b[i>>0]|0;g=e<<24>>24<0;if(g){j=f[a+4>>2]|0;d=(f[a+8>>2]&2147483647)+-1|0}else{j=e&255;d=10}h=j>>>0>c>>>0?j:c;c=h>>>0<11;h=c?10:(h+16&-16)+-1|0;do if((h|0)!=(d|0)){do if(c){d=f[a>>2]|0;if(g){c=a;e=0;g=13}else{So(a,d,(e&255)+1|0)|0;ar(d);g=15}}else{c=ln(h+1|0)|0;if(g){e=1;d=f[a>>2]|0;g=13;break}else{So(c,a,(e&255)+1|0)|0;g=14;break}}while(0);if((g|0)==13){So(c,d,(f[a+4>>2]|0)+1|0)|0;ar(d);if(e)g=14;else g=15}if((g|0)==14){f[a+8>>2]=h+1|-2147483648;f[a+4>>2]=j;f[a>>2]=c;break}else if((g|0)==15){b[i>>0]=j;break}}while(0);return}function Ih(a){a=a|0;xq(a);xq(a+16|0);xq(a+32|0);xq(a+48|0);xq(a+64|0);xq(a+80|0);xq(a+96|0);xq(a+112|0);xq(a+128|0);xq(a+144|0);xq(a+160|0);xq(a+176|0);xq(a+192|0);xq(a+208|0);xq(a+224|0);xq(a+240|0);xq(a+256|0);xq(a+272|0);xq(a+288|0);xq(a+304|0);xq(a+320|0);xq(a+336|0);xq(a+352|0);xq(a+368|0);xq(a+384|0);xq(a+400|0);xq(a+416|0);xq(a+432|0);xq(a+448|0);xq(a+464|0);xq(a+480|0);xq(a+496|0);return}function Jh(a,c,d){a=a|0;c=c|0;d=d|0;var e=0,g=0,h=0,i=0,j=0,k=0,l=0,m=0,n=0,o=0;o=(f[a>>2]|0)+1794895138|0;h=yp(f[a+8>>2]|0,o)|0;e=yp(f[a+12>>2]|0,o)|0;g=yp(f[a+16>>2]|0,o)|0;a:do if((h>>>0>>2>>>0?(n=c-(h<<2)|0,e>>>0>>0&g>>>0>>0):0)?((g|e)&3|0)==0:0){n=e>>>2;m=g>>>2;l=0;while(1){k=h>>>1;j=l+k|0;i=j<<1;g=i+n|0;e=yp(f[a+(g<<2)>>2]|0,o)|0;g=yp(f[a+(g+1<<2)>>2]|0,o)|0;if(!(g>>>0>>0&e>>>0<(c-g|0)>>>0)){e=0;break a}if(b[a+(g+e)>>0]|0){e=0;break a}e=Sl(d,a+g|0)|0;if(!e)break;e=(e|0)<0;if((h|0)==1){e=0;break a}else{l=e?l:j;h=e?k:h-k|0}}e=i+m|0;g=yp(f[a+(e<<2)>>2]|0,o)|0;e=yp(f[a+(e+1<<2)>>2]|0,o)|0;if(e>>>0>>0&g>>>0<(c-e|0)>>>0)e=(b[a+(e+g)>>0]|0)==0?a+e|0:0;else e=0}else e=0;while(0);return e|0}function Kh(a,b){a=a|0;b=b|0;var c=0,d=0,e=0,g=0,h=0,i=0,j=0;j=u;u=u+16|0;i=j+4|0;h=j;f[a>>2]=0;f[a+8>>2]=b;Ih(a+12|0);xq(a+524|0);to(a+540|0);to(a+560|0);to(a+580|0);f[i>>2]=0;Oj(a+600|0,b,i);f[i>>2]=0;Oj(a+612|0,b,i);g=b<<5|1;f[h>>2]=0;Oj(i,b,h);Jj(a+624|0,g,i);c=f[i>>2]|0;if(c|0){e=i+4|0;d=f[e>>2]|0;if((d|0)!=(c|0))f[e>>2]=d+(~((d+-4-c|0)>>>2)<<2);ar(c)}f[h>>2]=0;Oj(i,b,h);Jj(a+636|0,g,i);e=f[i>>2]|0;if(!e){u=j;return}d=i+4|0;c=f[d>>2]|0;if((c|0)!=(e|0))f[d>>2]=c+(~((c+-4-e|0)>>>2)<<2);ar(e);u=j;return}function Lh(a,b){a=a|0;b=b|0;var c=0,d=0,e=La;if((b|0)!=1){if(b+-1&b)b=ab(b)|0}else b=2;d=f[a+4>>2]|0;if(b>>>0>d>>>0){Jc(a,b);return}if(b>>>0>=d>>>0)return;e=$((f[a+12>>2]|0)>>>0);c=~~$(W($(e/$(n[a+16>>2]))))>>>0;if(d>>>0>2&(d+-1&d|0)==0)c=1<<32-(_(c+-1|0)|0);else c=ab(c)|0;b=b>>>0>>0?c:b;if(b>>>0>=d>>>0)return;Jc(a,b);return}function Mh(a,b){a=a|0;b=b|0;var c=0,d=0,e=La;if((b|0)!=1){if(b+-1&b)b=ab(b)|0}else b=2;d=f[a+4>>2]|0;if(b>>>0>d>>>0){ad(a,b);return}if(b>>>0>=d>>>0)return;e=$((f[a+12>>2]|0)>>>0);c=~~$(W($(e/$(n[a+16>>2]))))>>>0;if(d>>>0>2&(d+-1&d|0)==0)c=1<<32-(_(c+-1|0)|0);else c=ab(c)|0;b=b>>>0>>0?c:b;if(b>>>0>=d>>>0)return;ad(a,b);return}function Nh(a,b){a=a|0;b=b|0;var c=0,d=0,e=La;if((b|0)!=1){if(b+-1&b)b=ab(b)|0}else b=2;d=f[a+4>>2]|0;if(b>>>0>d>>>0){rd(a,b);return}if(b>>>0>=d>>>0)return;e=$((f[a+12>>2]|0)>>>0);c=~~$(W($(e/$(n[a+16>>2]))))>>>0;if(d>>>0>2&(d+-1&d|0)==0)c=1<<32-(_(c+-1|0)|0);else c=ab(c)|0;b=b>>>0>>0?c:b;if(b>>>0>=d>>>0)return;rd(a,b);return}function Oh(a,b){a=a|0;b=b|0;var c=0,d=0,e=La;if((b|0)!=1){if(b+-1&b)b=ab(b)|0}else b=2;d=f[a+4>>2]|0;if(b>>>0>d>>>0){Pd(a,b);return}if(b>>>0>=d>>>0)return;e=$((f[a+12>>2]|0)>>>0);c=~~$(W($(e/$(n[a+16>>2]))))>>>0;if(d>>>0>2&(d+-1&d|0)==0)c=1<<32-(_(c+-1|0)|0);else c=ab(c)|0;b=b>>>0>>0?c:b;if(b>>>0>=d>>>0)return;Pd(a,b);return}function Ph(a,b){a=a|0;b=b|0;var c=0,d=0,e=La;if((b|0)!=1){if(b+-1&b)b=ab(b)|0}else b=2;d=f[a+4>>2]|0;if(b>>>0>d>>>0){Kc(a,b);return}if(b>>>0>=d>>>0)return;e=$((f[a+12>>2]|0)>>>0);c=~~$(W($(e/$(n[a+16>>2]))))>>>0;if(d>>>0>2&(d+-1&d|0)==0)c=1<<32-(_(c+-1|0)|0);else c=ab(c)|0;b=b>>>0>>0?c:b;if(b>>>0>=d>>>0)return;Kc(a,b);return}function Qh(a,b){a=a|0;b=b|0;var c=0,d=0,e=La;if((b|0)!=1){if(b+-1&b)b=ab(b)|0}else b=2;d=f[a+4>>2]|0;if(b>>>0>d>>>0){cd(a,b);return}if(b>>>0>=d>>>0)return;e=$((f[a+12>>2]|0)>>>0);c=~~$(W($(e/$(n[a+16>>2]))))>>>0;if(d>>>0>2&(d+-1&d|0)==0)c=1<<32-(_(c+-1|0)|0);else c=ab(c)|0;b=b>>>0>>0?c:b;if(b>>>0>=d>>>0)return;cd(a,b);return}function Rh(a,b){a=a|0;b=b|0;var c=0,d=0,e=La;if((b|0)!=1){if(b+-1&b)b=ab(b)|0}else b=2;d=f[a+4>>2]|0;if(b>>>0>d>>>0){td(a,b);return}if(b>>>0>=d>>>0)return;e=$((f[a+12>>2]|0)>>>0);c=~~$(W($(e/$(n[a+16>>2]))))>>>0;if(d>>>0>2&(d+-1&d|0)==0)c=1<<32-(_(c+-1|0)|0);else c=ab(c)|0;b=b>>>0>>0?c:b;if(b>>>0>=d>>>0)return;td(a,b);return}function Sh(a,b){a=a|0;b=b|0;var c=0,d=0,e=La;if((b|0)!=1){if(b+-1&b)b=ab(b)|0}else b=2;d=f[a+4>>2]|0;if(b>>>0>d>>>0){Mc(a,b);return}if(b>>>0>=d>>>0)return;e=$((f[a+12>>2]|0)>>>0);c=~~$(W($(e/$(n[a+16>>2]))))>>>0;if(d>>>0>2&(d+-1&d|0)==0)c=1<<32-(_(c+-1|0)|0);else c=ab(c)|0;b=b>>>0>>0?c:b;if(b>>>0>=d>>>0)return;Mc(a,b);return}function Th(a,b){a=a|0;b=b|0;var c=0,d=0,e=La;if((b|0)!=1){if(b+-1&b)b=ab(b)|0}else b=2;d=f[a+4>>2]|0;if(b>>>0>d>>>0){dd(a,b);return}if(b>>>0>=d>>>0)return;e=$((f[a+12>>2]|0)>>>0);c=~~$(W($(e/$(n[a+16>>2]))))>>>0;if(d>>>0>2&(d+-1&d|0)==0)c=1<<32-(_(c+-1|0)|0);else c=ab(c)|0;b=b>>>0>>0?c:b;if(b>>>0>=d>>>0)return;dd(a,b);return}function Uh(a,b){a=a|0;b=b|0;var c=0,d=0,e=La;if((b|0)!=1){if(b+-1&b)b=ab(b)|0}else b=2;d=f[a+4>>2]|0;if(b>>>0>d>>>0){ud(a,b);return}if(b>>>0>=d>>>0)return;e=$((f[a+12>>2]|0)>>>0);c=~~$(W($(e/$(n[a+16>>2]))))>>>0;if(d>>>0>2&(d+-1&d|0)==0)c=1<<32-(_(c+-1|0)|0);else c=ab(c)|0;b=b>>>0>>0?c:b;if(b>>>0>=d>>>0)return;ud(a,b);return}function Vh(a,b){a=a|0;b=b|0;var c=0,d=0,e=La;if((b|0)!=1){if(b+-1&b)b=ab(b)|0}else b=2;d=f[a+4>>2]|0;if(b>>>0>d>>>0){Qd(a,b);return}if(b>>>0>=d>>>0)return;e=$((f[a+12>>2]|0)>>>0);c=~~$(W($(e/$(n[a+16>>2]))))>>>0;if(d>>>0>2&(d+-1&d|0)==0)c=1<<32-(_(c+-1|0)|0);else c=ab(c)|0;b=b>>>0>>0?c:b;if(b>>>0>=d>>>0)return;Qd(a,b);return}function Wh(a,c){a=a|0;c=c|0;var d=0,e=0,g=0,h=0,i=0,j=0,k=0,l=0,m=0;a=f[a+4>>2]|0;if(!a){m=0;return m|0}k=b[c+11>>0]|0;j=k<<24>>24<0;k=j?f[c+4>>2]|0:k&255;j=j?f[c>>2]|0:c;while(1){e=a+16|0;d=b[e+11>>0]|0;h=d<<24>>24<0;d=h?f[a+20>>2]|0:d&255;g=d>>>0>>0;c=g?d:k;if((c|0)!=0?(m=rl(j,h?f[e>>2]|0:e,c)|0,(m|0)!=0):0)if((m|0)<0)i=7;else i=8;else if(k>>>0>>0)i=7;else i=8;if((i|0)!=7)if((i|0)==8){i=0;c=k>>>0>>0?k:d;if((c|0)!=0?(l=rl(h?f[e>>2]|0:e,j,c)|0,(l|0)!=0):0){if((l|0)>=0){a=1;i=14;break}}else i=10;if((i|0)==10?(0,!g):0){a=1;i=14;break}a=a+4|0}a=f[a>>2]|0;if(!a){a=0;i=14;break}}if((i|0)==14)return a|0;return 0}function Xh(a,c,d,e){a=a|0;c=c|0;d=d|0;e=e|0;var g=0,h=0,i=0,j=0;h=ln(32)|0;f[a>>2]=h;f[a+4>>2]=c+8;g=a+8|0;b[g>>0]=0;i=h+8|0;f[i>>2]=f[e>>2];f[i+4>>2]=f[e+4>>2];f[i+8>>2]=f[e+8>>2];f[e>>2]=0;f[e+4>>2]=0;f[e+8>>2]=0;i=h+20|0;j=e+12|0;f[i>>2]=0;f[h+24>>2]=0;f[h+28>>2]=0;h=f[j>>2]|0;c=(f[e+16>>2]|0)-h|0;if(!c){i=0;j=h;Mg(i|0,j|0,c|0)|0;b[g>>0]=1;a=f[a>>2]|0;j=a+4|0;f[j>>2]=d;f[a>>2]=0;return}vi(i,c);i=f[i>>2]|0;j=f[j>>2]|0;Mg(i|0,j|0,c|0)|0;b[g>>0]=1;a=f[a>>2]|0;j=a+4|0;f[j>>2]=d;f[a>>2]=0;return}function Yh(a,b,c){a=a|0;b=b|0;c=c|0;var d=0,e=0,g=0,h=0,i=0;i=f[b>>2]|0;e=f[a+12>>2]|0;if((i|0)>(e|0))Ga(10176,9477,259,10200);d=f[c>>2]|0;if((d|0)>(e|0))Ga(10214,9477,260,10200);a=0-e|0;if((i|0)<(a|0))Ga(10238,9477,261,10200);if((d|0)<(a|0))Ga(10263,9477,262,10200);if((d|i|0)>-1){h=1;a=1}else{a=(i|0)<1&(d|0)<1;h=a?-1:(i|0)>0?1:-1;a=a?-1:(d|0)>0?1:-1}g=X(e,h)|0;e=X(e,a)|0;f[b>>2]=(i<<1)-g;d=(f[c>>2]<<1)-e|0;f[c>>2]=d;i=(X(h,a)|0)>-1;a=f[b>>2]|0;if(i){f[b>>2]=0-d;i=0-a|0;f[c>>2]=i;i=f[b>>2]|0;i=i+g|0;i=(i|0)/2|0;f[b>>2]=i;b=f[c>>2]|0;b=b+e|0;b=(b|0)/2|0;f[c>>2]=b;return}else{f[b>>2]=d;i=a;f[c>>2]=i;i=f[b>>2]|0;i=i+g|0;i=(i|0)/2|0;f[b>>2]=i;b=f[c>>2]|0;b=b+e|0;b=(b|0)/2|0;f[c>>2]=b;return}}function Zh(a,b){a=a|0;b=b|0;var c=0,d=0,e=La;if((b|0)!=1){if(b+-1&b)b=ab(b)|0}else b=2;d=f[a+4>>2]|0;if(b>>>0>d>>>0){$c(a,b);return}if(b>>>0>=d>>>0)return;e=$((f[a+12>>2]|0)>>>0);c=~~$(W($(e/$(n[a+16>>2]))))>>>0;if(d>>>0>2&(d+-1&d|0)==0)c=1<<32-(_(c+-1|0)|0);else c=ab(c)|0;b=b>>>0>>0?c:b;if(b>>>0>=d>>>0)return;$c(a,b);return}function _h(a,b){a=a|0;b=b|0;var c=0,d=0,e=0,g=0;g=a+4|0;e=f[g>>2]|0;c=f[a>>2]|0;d=(e-c|0)/116|0;if(d>>>0>>0){vf(a,b-d|0);return}if(d>>>0<=b>>>0)return;a=c+(b*116|0)|0;if((e|0)==(a|0))return;do{f[g>>2]=e+-116;c=f[e+-12>>2]|0;if(c|0){d=e+-8|0;b=f[d>>2]|0;if((b|0)!=(c|0))f[d>>2]=b+(~((b+-4-c|0)>>>2)<<2);ar(c)}c=f[e+-28>>2]|0;if(c|0){d=e+-24|0;b=f[d>>2]|0;if((b|0)!=(c|0))f[d>>2]=b+(~((b+-4-c|0)>>>2)<<2);ar(c)}c=f[e+-40>>2]|0;if(c|0){d=e+-36|0;b=f[d>>2]|0;if((b|0)!=(c|0))f[d>>2]=b+(~((b+-4-c|0)>>>2)<<2);ar(c)}Bj(e+-112|0);e=f[g>>2]|0}while((e|0)!=(a|0));return}function $h(a,b){a=a|0;b=b|0;var c=0,d=0,e=0,g=0,h=0,i=0,j=0;j=u;u=u+16|0;i=j+4|0;h=j;f[a>>2]=0;f[a+8>>2]=b;to(a+12|0);to(a+32|0);to(a+52|0);to(a+72|0);f[i>>2]=0;Oj(a+92|0,b,i);f[i>>2]=0;Oj(a+104|0,b,i);g=b<<5|1;f[h>>2]=0;Oj(i,b,h);Jj(a+116|0,g,i);c=f[i>>2]|0;if(c|0){e=i+4|0;d=f[e>>2]|0;if((d|0)!=(c|0))f[e>>2]=d+(~((d+-4-c|0)>>>2)<<2);ar(c)}f[h>>2]=0;Oj(i,b,h);Jj(a+128|0,g,i);e=f[i>>2]|0;if(!e){u=j;return}d=i+4|0;c=f[d>>2]|0;if((c|0)!=(e|0))f[d>>2]=c+(~((c+-4-e|0)>>>2)<<2);ar(e);u=j;return}function ai(a,b){a=a|0;b=b|0;var c=0,d=0,e=0,g=0,h=0,i=0,j=0;j=u;u=u+16|0;i=j+4|0;h=j;f[a>>2]=0;f[a+8>>2]=b;xq(a+12|0);to(a+28|0);to(a+48|0);to(a+68|0);f[i>>2]=0;Oj(a+88|0,b,i);f[i>>2]=0;Oj(a+100|0,b,i);g=b<<5|1;f[h>>2]=0;Oj(i,b,h);Jj(a+112|0,g,i);c=f[i>>2]|0;if(c|0){e=i+4|0;d=f[e>>2]|0;if((d|0)!=(c|0))f[e>>2]=d+(~((d+-4-c|0)>>>2)<<2);ar(c)}f[h>>2]=0;Oj(i,b,h);Jj(a+124|0,g,i);e=f[i>>2]|0;if(!e){u=j;return}d=i+4|0;c=f[d>>2]|0;if((c|0)!=(e|0))f[d>>2]=c+(~((c+-4-e|0)>>>2)<<2);ar(e);u=j;return}function bi(a){a=a|0;var b=0,c=0,d=0,e=0,g=0;f[a>>2]=4240;e=a+60|0;b=f[e>>2]|0;f[e>>2]=0;if(b|0)Pa[f[(f[b>>2]|0)+4>>2]&127](b);b=f[a+48>>2]|0;if(b|0){d=a+52|0;c=f[d>>2]|0;if((c|0)!=(b|0))f[d>>2]=c+(~((c+-4-b|0)>>>2)<<2);ar(b)}d=a+36|0;b=f[d>>2]|0;if(b|0){e=a+40|0;c=f[e>>2]|0;if((c|0)!=(b|0)){do{g=c+-4|0;f[e>>2]=g;c=f[g>>2]|0;f[g>>2]=0;if(c|0)Pa[f[(f[c>>2]|0)+4>>2]&127](c);c=f[e>>2]|0}while((c|0)!=(b|0));b=f[d>>2]|0}ar(b)}f[a>>2]=1564;b=f[a+16>>2]|0;if(b|0){d=a+20|0;c=f[d>>2]|0;if((c|0)!=(b|0))f[d>>2]=c+(~((c+-4-b|0)>>>2)<<2);ar(b)}d=f[a+4>>2]|0;if(!d)return;c=a+8|0;b=f[c>>2]|0;if((b|0)!=(d|0))f[c>>2]=b+(~((b+-4-d|0)>>>2)<<2);ar(d);return}function ci(a){a=a|0;var b=0,c=0,d=0,e=0,g=0,h=0;g=f[a+4>>2]|0;h=a+8|0;b=f[h>>2]|0;if((b|0)!=(g|0))do{d=b+-4|0;f[h>>2]=d;e=f[d>>2]|0;f[d>>2]=0;if(e|0){d=e+88|0;b=f[d>>2]|0;f[d>>2]=0;if(b|0){c=f[b+8>>2]|0;if(c|0){d=b+12|0;if((f[d>>2]|0)!=(c|0))f[d>>2]=c;ar(c)}ar(b)}b=f[e+68>>2]|0;if(b|0){d=e+72|0;c=f[d>>2]|0;if((c|0)!=(b|0))f[d>>2]=c+(~((c+-4-b|0)>>>2)<<2);ar(b)}d=e+64|0;b=f[d>>2]|0;f[d>>2]=0;if(b|0){c=f[b>>2]|0;if(c|0){d=b+4|0;if((f[d>>2]|0)!=(c|0))f[d>>2]=c;ar(c)}ar(b)}ar(e)}b=f[h>>2]|0}while((b|0)!=(g|0));b=f[a>>2]|0;if(!b)return;ar(b);return}function di(a,c){a=a|0;c=c|0;var e=0,g=0,h=0,i=0,j=0,k=0,l=0,m=0,n=0;l=a+8|0;e=f[l>>2]|0;g=b[e+24>>0]|0;k=g<<24>>24;n=k<<1;m=Zq(k>>>0>2147483647?-1:k<<1)|0;j=f[a+16>>2]|0;j=(f[f[j>>2]>>2]|0)+(f[j+48>>2]|0)|0;if(!c){_q(m);return}if(g<<24>>24>0){e=0;g=0;h=0;while(1){a=0;i=h;while(1){d[m+(a<<1)>>1]=f[j+(i<<2)>>2];a=a+1|0;if((a|0)==(k|0))break;else i=i+1|0}Mg((f[f[(f[l>>2]|0)+64>>2]>>2]|0)+g|0,m|0,n|0)|0;e=e+1|0;if((e|0)==(c|0))break;else{g=g+n|0;h=k+h|0}}_q(m);return}else{Mg(f[f[e+64>>2]>>2]|0,m|0,n|0)|0;if((c|0)==1){_q(m);return}else{a=1;e=0}do{e=e+n|0;Mg((f[f[(f[l>>2]|0)+64>>2]>>2]|0)+e|0,m|0,n|0)|0;a=a+1|0}while((a|0)!=(c|0));_q(m);return}}function ei(a,c){a=a|0;c=c|0;var d=0,e=0,g=0,h=0,i=0,j=0,k=0,l=0,m=0;k=a+8|0;d=f[k>>2]|0;e=b[d+24>>0]|0;j=e<<24>>24;m=j<<2;l=Zq(j>>>0>1073741823?-1:j<<2)|0;i=f[a+16>>2]|0;i=(f[f[i>>2]>>2]|0)+(f[i+48>>2]|0)|0;if(!c){_q(l);return}if(e<<24>>24>0){d=0;e=0;g=0;while(1){a=0;h=g;while(1){f[l+(a<<2)>>2]=f[i+(h<<2)>>2];a=a+1|0;if((a|0)==(j|0))break;else h=h+1|0}Mg((f[f[(f[k>>2]|0)+64>>2]>>2]|0)+e|0,l|0,m|0)|0;d=d+1|0;if((d|0)==(c|0))break;else{e=e+m|0;g=j+g|0}}_q(l);return}else{Mg(f[f[d+64>>2]>>2]|0,l|0,m|0)|0;if((c|0)==1){_q(l);return}else{a=1;d=0}do{d=d+m|0;Mg((f[f[(f[k>>2]|0)+64>>2]>>2]|0)+d|0,l|0,m|0)|0;a=a+1|0}while((a|0)!=(c|0));_q(l);return}}function fi(a){a=a|0;var b=0,c=0,d=0,e=0,g=0,h=0;b=f[a>>2]|0;if(!b)return;h=a+4|0;c=f[h>>2]|0;if((c|0)!=(b|0)){do{e=c+-4|0;f[h>>2]=e;g=f[e>>2]|0;f[e>>2]=0;if(g|0){e=g+88|0;c=f[e>>2]|0;f[e>>2]=0;if(c|0){d=f[c+8>>2]|0;if(d|0){e=c+12|0;if((f[e>>2]|0)!=(d|0))f[e>>2]=d;ar(d)}ar(c)}c=f[g+68>>2]|0;if(c|0){e=g+72|0;d=f[e>>2]|0;if((d|0)!=(c|0))f[e>>2]=d+(~((d+-4-c|0)>>>2)<<2);ar(c)}e=g+64|0;c=f[e>>2]|0;f[e>>2]=0;if(c|0){d=f[c>>2]|0;if(d|0){e=c+4|0;if((f[e>>2]|0)!=(d|0))f[e>>2]=d;ar(d)}ar(c)}ar(g)}c=f[h>>2]|0}while((c|0)!=(b|0));b=f[a>>2]|0}ar(b);return}function gi(a,b){a=a|0;b=b|0;var c=0,d=0,e=0,g=0,i=0,j=0,k=0,l=0,m=0;l=b+8|0;k=f[l>>2]|0;l=f[l+4>>2]|0;m=b+16|0;c=m;e=f[c>>2]|0;c=f[c+4>>2]|0;j=Ho(e|0,c|0,4,0)|0;d=I;if((l|0)<(d|0)|(l|0)==(d|0)&k>>>0>>0){a=0;return a|0}g=f[b>>2]|0;i=g+e|0;i=h[i>>0]|h[i+1>>0]<<8|h[i+2>>0]<<16|h[i+3>>0]<<24;b=m;f[b>>2]=j;f[b+4>>2]=d;b=Ho(e|0,c|0,8,0)|0;c=I;if((l|0)<(c|0)|(l|0)==(c|0)&k>>>0>>0){a=0;return a|0}l=g+j|0;l=h[l>>0]|h[l+1>>0]<<8|h[l+2>>0]<<16|h[l+3>>0]<<24;f[m>>2]=b;f[m+4>>2]=c;f[a+12>>2]=i;f[a+16>>2]=l;m=l+(1-i)|0;f[a+20>>2]=m;b=(m|0)/2|0;c=a+24|0;f[c>>2]=b;f[a+28>>2]=0-b;if(m&1|0){a=1;return a|0}f[c>>2]=b+-1;a=1;return a|0}function hi(a,b){a=a|0;b=b|0;var c=0,d=0,e=0,g=0,i=0,j=0,k=0,l=0;k=b+8|0;j=f[k>>2]|0;k=f[k+4>>2]|0;l=b+16|0;c=l;g=f[c>>2]|0;c=f[c+4>>2]|0;d=Ho(g|0,c|0,4,0)|0;e=I;if((k|0)<(e|0)|(k|0)==(e|0)&j>>>0>>0)return 0;i=(f[b>>2]|0)+g|0;i=h[i>>0]|h[i+1>>0]<<8|h[i+2>>0]<<16|h[i+3>>0]<<24;b=l;f[b>>2]=d;f[b+4>>2]=e;b=Ho(g|0,c|0,8,0)|0;c=I;if((k|0)<(c|0)|(k|0)==(c|0)&j>>>0>>0)return 0;f[l>>2]=b;f[l+4>>2]=c;if(((i|0)%2|0|0)!=1)Ga(10288,10321,69,10428);c=(_(i|0)|0)^31;b=c+1|0;if(!c)Ga(9466,9477,60,9539);if(b>>>0<31){f[a+4>>2]=b;l=2<>2]=l+-1;l=l+-2|0;f[a+12>>2]=l;f[a+16>>2]=(l|0)/2|0;return (c+-1|0)>>>0<29|0}else Ga(9559,9477,61,9539);return 0}function ii(a,c){a=a|0;c=c|0;var d=0,e=0,g=0,h=0,i=0,j=0,k=0,l=0,m=0,n=0,o=La;n=u;u=u+32|0;j=n+16|0;m=n;k=a+8|0;l=b[(f[k>>2]|0)+24>>0]<<2;i=f[a+16>>2]|0;i=(f[f[i>>2]>>2]|0)+(f[i+48>>2]|0)|0;a=f[a+24>>2]|0;if((a|0)<=1)Ga(9466,9477,60,9539);if((a|0)>=31)Ga(9559,9477,61,9539);f[m>>2]=a;a=1<>2]=a+-1;a=a+-2|0;h=m+8|0;f[h>>2]=a;f[m+12>>2]=(a|0)/2|0;if(!c){u=n;return 1}d=0;e=0;g=0;while(1){o=$($(1.0)/$(a|0));Rf(m,$($(f[i+(g<<2)>>2]|0)*o),$($(f[i+((g|1)<<2)>>2]|0)*o),j);Mg((f[f[(f[k>>2]|0)+64>>2]>>2]|0)+e|0,j|0,l|0)|0;d=d+1|0;if((d|0)==(c|0))break;a=f[h>>2]|0;e=e+l|0;g=g+2|0}u=n;return 1}function ji(a,b,c,d){a=a|0;b=b|0;c=c|0;d=d|0;var e=0,g=0,h=0,i=0,j=0,k=0,l=0,m=0;m=u;u=u+32|0;l=m+16|0;i=m+8|0;j=m;h=f[b>>2]|0;k=f[a+16>>2]<<1;if((h|0)>(k|0))Ga(9656,9701,69,9826);e=f[b+4>>2]|0;if((e|0)>(k|0))Ga(9847,9701,70,9826);g=f[c>>2]|0;if((g|0)>(k|0))Ga(9892,9701,71,9826);b=f[c+4>>2]|0;if((b|0)>(k|0))Ga(9937,9701,72,9826);if((h|0)<=-1)Ga(9982,9701,74,9826);if((e|0)<=-1)Ga(10004,9701,75,9826);if((g|0)<=-1)Ga(10026,9701,76,9826);if((b|0)>-1){f[i>>2]=h;f[i+4>>2]=e;f[j>>2]=g;f[j+4>>2]=b;Ce(l,a,i,j);f[d>>2]=f[l>>2];f[d+4>>2]=f[l+4>>2];u=m;return}else Ga(10048,9701,77,9826)}function ki(a,b){a=a|0;b=b|0;var c=0,d=0,e=0,g=0,i=0,j=0,k=0,l=0;k=b+8|0;j=f[k>>2]|0;k=f[k+4>>2]|0;l=b+16|0;c=l;g=f[c>>2]|0;c=f[c+4>>2]|0;d=Ho(g|0,c|0,4,0)|0;e=I;if((k|0)<(e|0)|(k|0)==(e|0)&j>>>0>>0){a=0;return a|0}i=(f[b>>2]|0)+g|0;i=h[i>>0]|h[i+1>>0]<<8|h[i+2>>0]<<16|h[i+3>>0]<<24;b=l;f[b>>2]=d;f[b+4>>2]=e;b=Ho(g|0,c|0,8,0)|0;c=I;if((k|0)<(c|0)|(k|0)==(c|0)&j>>>0>>0){a=0;return a|0}f[l>>2]=b;f[l+4>>2]=c;if(((i|0)%2|0|0)!=1)Ga(10288,10321,69,10428);c=(_(i|0)|0)^31;b=c+1|0;if(!c)Ga(9466,9477,60,9539);if(b>>>0>=31)Ga(9559,9477,61,9539);f[a+4>>2]=b;l=2<>2]=l+-1;l=l+-2|0;f[a+12>>2]=l;f[a+16>>2]=(l|0)/2|0;a=1;return a|0}function li(a,b){a=a|0;b=b|0;var c=0,d=0,e=La;if((b|0)!=1){if(b+-1&b)b=ab(b)|0}else b=2;d=f[a+4>>2]|0;if(b>>>0>d>>>0){Sd(a,b);return}if(b>>>0>=d>>>0)return;e=$((f[a+12>>2]|0)>>>0);c=~~$(W($(e/$(n[a+16>>2]))))>>>0;if(d>>>0>2&(d+-1&d|0)==0)c=1<<32-(_(c+-1|0)|0);else c=ab(c)|0;b=b>>>0>>0?c:b;if(b>>>0>=d>>>0)return;Sd(a,b);return}function mi(a,b,c,d){a=a|0;b=b|0;c=c|0;d=d|0;var e=0,g=0,h=0,i=0,j=0,k=0,l=0,m=0;m=u;u=u+32|0;j=m+16|0;l=m+8|0;i=m;h=f[b>>2]|0;k=f[a+16>>2]<<1;if((h|0)>(k|0))Ga(9656,14239,62,9826);e=f[b+4>>2]|0;if((e|0)>(k|0))Ga(9847,14239,63,9826);g=f[c>>2]|0;if((g|0)>(k|0))Ga(9892,14239,64,9826);b=f[c+4>>2]|0;if((b|0)>(k|0))Ga(9937,14239,65,9826);if((h|0)<=-1)Ga(9982,14239,67,9826);if((e|0)<=-1)Ga(10004,14239,68,9826);if((g|0)<=-1)Ga(10026,14239,69,9826);if((b|0)>-1){f[j>>2]=g;f[j+4>>2]=b;f[i>>2]=h;f[i+4>>2]=e;eg(l,a,i,j);f[d>>2]=f[l>>2];f[d+4>>2]=f[l+4>>2];u=m;return}else Ga(10048,14239,70,9826)}function ni(a,c,d){a=a|0;c=c|0;d=d|0;var e=0,g=0,h=0,i=0;h=c&255;e=(d|0)!=0;a:do if(e&(a&3|0)!=0){g=c&255;while(1){if((b[a>>0]|0)==g<<24>>24){i=6;break a}a=a+1|0;d=d+-1|0;e=(d|0)!=0;if(!(e&(a&3|0)!=0)){i=5;break}}}else i=5;while(0);if((i|0)==5)if(e)i=6;else d=0;b:do if((i|0)==6){g=c&255;if((b[a>>0]|0)!=g<<24>>24){e=X(h,16843009)|0;c:do if(d>>>0>3)while(1){h=f[a>>2]^e;if((h&-2139062144^-2139062144)&h+-16843009|0)break;a=a+4|0;d=d+-4|0;if(d>>>0<=3){i=11;break c}}else i=11;while(0);if((i|0)==11)if(!d){d=0;break}while(1){if((b[a>>0]|0)==g<<24>>24)break b;a=a+1|0;d=d+-1|0;if(!d){d=0;break}}}}while(0);return (d|0?a:0)|0}function oi(a){a=a|0;var b=0,c=0,d=0,e=0,g=0;e=a+12|0;g=f[e>>2]|0;f[e>>2]=0;if(!g){Lo(a);return}b=f[g+28>>2]|0;if(b|0)do{e=b;b=f[b>>2]|0;oi(e+8|0);ar(e)}while((b|0)!=0);e=g+20|0;b=f[e>>2]|0;f[e>>2]=0;if(b|0)ar(b);b=f[g+8>>2]|0;if(b|0)do{e=b;b=f[b>>2]|0;c=f[e+20>>2]|0;if(c|0){d=e+24|0;if((f[d>>2]|0)!=(c|0))f[d>>2]=c;ar(c)}Lo(e+8|0);ar(e)}while((b|0)!=0);b=f[g>>2]|0;f[g>>2]=0;if(b|0)ar(b);ar(g);Lo(a);return}function pi(a,b){a=a|0;b=b|0;var c=0,d=0,e=0,g=0,h=0,i=0,j=0,k=0;k=a+4|0;d=f[k>>2]|0;c=f[a>>2]|0;e=((d-c|0)/12|0)+1|0;if(e>>>0>357913941){Lp(a);c=f[a>>2]|0;d=f[k>>2]|0}j=a+8|0;i=((f[j>>2]|0)-c|0)/12|0;h=i<<1;h=i>>>0<178956970?(h>>>0>>0?e:h):357913941;e=(d-c|0)/12|0;do if(h)if(h>>>0>357913941){a=Ia(4)|0;Eq(a);sa(a|0,1344,125)}else{i=ln(h*12|0)|0;break}else i=0;while(0);g=i+(e*12|0)|0;f[g>>2]=f[b>>2];f[g+4>>2]=f[b+4>>2];f[g+8>>2]=f[b+8>>2];e=d-c|0;d=g+(((e|0)/-12|0)*12|0)|0;if((e|0)>0)Mg(d|0,c|0,e|0)|0;f[a>>2]=d;f[k>>2]=g+12;f[j>>2]=i+(h*12|0);if(!c)return;ar(c);return}function qi(a,b){a=a|0;b=b|0;var c=0,d=0,e=0;e=u;u=u+32|0;c=e+16|0;d=e;switch(b<<24>>24){case 0:{d=ln(48)|0;Op(d);f[a>>2]=0;f[a+4>>2]=0;f[a+8>>2]=0;f[a+12>>2]=0;f[a+16>>2]=d;u=e;return}case 1:{d=ln(52)|0;Xo(d);f[a>>2]=0;f[a+4>>2]=0;f[a+8>>2]=0;f[a+12>>2]=0;f[a+16>>2]=d;u=e;return}default:{f[d>>2]=0;f[d+4>>2]=0;f[d+8>>2]=0;Pj(d,19217,28);f[c>>2]=-1;b=c+4|0;ml(b,d);f[a>>2]=f[c>>2];ml(a+4|0,b);f[a+16>>2]=0;Lo(b);Lo(d);u=e;return}}}function ri(a,b){a=a|0;b=b|0;var c=0,d=0,e=0,g=0,h=0,i=0,j=0,k=0,l=0;j=u;u=u+32|0;i=j+16|0;c=j+8|0;d=j;g=a+8|0;if(f[g>>2]<<5>>>0>=b>>>0){u=j;return}f[i>>2]=0;h=i+4|0;f[h>>2]=0;e=i+8|0;f[e>>2]=0;if((b|0)<0)Lp(i);l=((b+-1|0)>>>5)+1|0;k=ln(l<<2)|0;f[i>>2]=k;f[h>>2]=0;f[e>>2]=l;l=f[a>>2]|0;f[c>>2]=l;f[c+4>>2]=0;k=a+4|0;b=f[k>>2]|0;f[d>>2]=l+(b>>>5<<2);f[d+4>>2]=b&31;vg(i,c,d);b=f[a>>2]|0;f[a>>2]=f[i>>2];f[i>>2]=b;a=f[k>>2]|0;f[k>>2]=f[h>>2];f[h>>2]=a;a=f[g>>2]|0;f[g>>2]=f[e>>2];f[e>>2]=a;if(b|0)ar(b);u=j;return}function si(a,c){a=a|0;c=c|0;var d=0,e=0,g=0,h=0,i=0,j=0,k=0,l=0;k=a+228|0;j=a+232|0;d=f[k>>2]|0;if((f[j>>2]|0)==(d|0)){l=0;return l|0}g=a+4|0;e=0;a:while(1){a=f[d+(e*116|0)>>2]|0;if(((a|0)>=0?(d=f[g>>2]|0,h=f[d+8>>2]|0,(a|0)<((f[d+12>>2]|0)-h>>2|0)):0)?(i=f[h+(a<<2)>>2]|0,(Sa[f[(f[i>>2]|0)+24>>2]&255](i)|0)>0):0){a=0;do{if((Wa[f[(f[i>>2]|0)+20>>2]&127](i,a)|0)==(c|0))break a;a=a+1|0}while((a|0)<(Sa[f[(f[i>>2]|0)+24>>2]&255](i)|0))}a=e+1|0;d=f[k>>2]|0;if(a>>>0>=(((f[j>>2]|0)-d|0)/116|0)>>>0){a=0;l=11;break}else e=a}if((l|0)==11)return a|0;l=f[k>>2]|0;l=(b[l+(e*116|0)+72>>0]|0)==0?0:l+(e*116|0)+4|0;return l|0}function ti(a,b,c){a=a|0;b=b|0;c=c|0;var d=0,e=0,g=0,h=0,i=0,j=0,k=0,l=0,m=0,n=0,o=0;k=(f[b+4>>2]|0)-(f[b>>2]|0)|0;l=k>>2;g=a+8|0;e=f[(f[g>>2]|0)+40>>2]|0;m=Zq((e|0)>-1?e:-1)|0;h=c+8|0;if((k|0)<=0){c=1;_q(m);return c|0}k=c+16|0;i=0;j=0;while(1){o=h;n=f[o>>2]|0;o=f[o+4>>2]|0;a=k;b=f[a>>2]|0;a=Ho(b|0,f[a+4>>2]|0,e|0,0)|0;d=I;if((o|0)<(d|0)|(o|0)==(d|0)&n>>>0>>0){b=0;a=5;break}Mg(m|0,(f[c>>2]|0)+b|0,e|0)|0;o=k;f[o>>2]=a;f[o+4>>2]=d;Mg((f[f[(f[g>>2]|0)+64>>2]>>2]|0)+j|0,m|0,e|0)|0;i=i+1|0;if((i|0)>=(l|0)){b=1;a=5;break}else j=j+e|0}if((a|0)==5){_q(m);return b|0}return 0}function ui(a,b){a=a|0;b=b|0;var c=0,d=0,e=0,g=0,h=0,i=0,j=0,k=0;k=a+8|0;d=f[k>>2]|0;j=a+4|0;e=f[j>>2]|0;if(d-e>>2>>>0>=b>>>0){ej(e|0,0,b<<2|0)|0;f[j>>2]=e+(b<<2);return}c=f[a>>2]|0;g=(e-c>>2)+b|0;if(g>>>0>1073741823){Lp(a);c=f[a>>2]|0;d=f[k>>2]|0;e=f[j>>2]|0}d=d-c|0;h=d>>1;h=d>>2>>>0<536870911?(h>>>0>>0?g:h):1073741823;d=e-c>>2;do if(h)if(h>>>0>1073741823){a=Ia(4)|0;Eq(a);sa(a|0,1344,125)}else{i=ln(h<<2)|0;break}else i=0;while(0);g=i+(d<<2)|0;ej(g|0,0,b<<2|0)|0;e=e-c|0;d=g+(0-(e>>2)<<2)|0;if((e|0)>0)Mg(d|0,c|0,e|0)|0;f[a>>2]=d;f[j>>2]=g+(b<<2);f[k>>2]=i+(h<<2);if(!c)return;ar(c);return}function vi(a,c){a=a|0;c=c|0;var d=0,e=0,g=0,h=0,i=0,j=0,k=0;j=a+8|0;g=f[j>>2]|0;k=a+4|0;d=f[k>>2]|0;if((g-d|0)>>>0>=c>>>0){do{b[d>>0]=0;d=(f[k>>2]|0)+1|0;f[k>>2]=d;c=c+-1|0}while((c|0)!=0);return}e=f[a>>2]|0;h=d-e+c|0;if((h|0)<0){Lp(a);e=f[a>>2]|0;g=f[j>>2]|0;d=f[k>>2]|0}i=g-e|0;g=i<<1;g=i>>>0<1073741823?(g>>>0>>0?h:g):2147483647;if(!g)h=0;else h=ln(g)|0;i=h+(d-e)|0;h=h+g|0;d=i;g=i;do{b[d>>0]=0;d=g+1|0;g=d;c=c+-1|0}while((c|0)!=0);d=f[a>>2]|0;e=(f[k>>2]|0)-d|0;c=i+(0-e)|0;if((e|0)>0)Mg(c|0,d|0,e|0)|0;f[a>>2]=c;f[k>>2]=g;f[j>>2]=h;if(!d)return;ar(d);return}function wi(a,c,d,e,g,h,i,j){a=a|0;c=c|0;d=d|0;e=e|0;g=g|0;h=h|0;i=i|0;j=j|0;var k=0,l=0,m=0,n=0,o=0;o=u;u=u+16|0;n=o;if((-18-c|0)>>>0>>0)Hp(a);if((b[a+11>>0]|0)<0)m=f[a>>2]|0;else m=a;if(c>>>0<2147483623){l=d+c|0;k=c<<1;l=l>>>0>>0?k:l;l=l>>>0<11?11:l+16&-16}else l=-17;k=ln(l)|0;if(g|0)So(k,m,g)|0;if(i|0)So(k+g|0,j,i)|0;d=e-h|0;e=d-g|0;if(e|0)So(k+g+i|0,m+g+h|0,e)|0;if((c|0)!=10)ar(m);f[a>>2]=k;f[a+8>>2]=l|-2147483648;m=d+i|0;f[a+4>>2]=m;b[n>>0]=0;Qp(k+m|0,n);u=o;return}function xi(a,c,d){a=a|0;c=c|0;d=d|0;var e=0,g=0,h=0,i=0,j=0;g=d+16|0;e=f[g>>2]|0;if(!e)if(!(Al(d)|0)){e=f[g>>2]|0;h=5}else e=0;else h=5;a:do if((h|0)==5){j=d+20|0;i=f[j>>2]|0;g=i;if((e-i|0)>>>0>>0){e=Na[f[d+36>>2]&31](d,a,c)|0;break}b:do if((b[d+75>>0]|0)>-1){i=c;while(1){if(!i){h=g;d=0;g=c;e=a;break b}e=i+-1|0;if((b[a+e>>0]|0)==10)break;else i=e}e=Na[f[d+36>>2]&31](d,a,i)|0;if(e>>>0>>0)break a;h=f[j>>2]|0;d=i;g=c-i|0;e=a+i|0}else{h=g;d=0;g=c;e=a}while(0);Mg(h|0,e|0,g|0)|0;f[j>>2]=(f[j>>2]|0)+g;e=d+g|0}while(0);return e|0}function yi(a,b){a=a|0;b=b|0;var c=0,d=0,e=0,g=0,h=0;h=u;u=u+16|0;d=h;e=yg(a,d,b)|0;c=f[e>>2]|0;if(c|0){a=c;a=a+28|0;u=h;return a|0}g=ln(40)|0;ml(g+16|0,b);c=g+28|0;f[c>>2]=0;f[c+4>>2]=0;f[c+8>>2]=0;c=f[d>>2]|0;f[g>>2]=0;f[g+4>>2]=0;f[g+8>>2]=c;f[e>>2]=g;c=f[f[a>>2]>>2]|0;if(!c)c=g;else{f[a>>2]=c;c=f[e>>2]|0}Me(f[a+4>>2]|0,c);a=a+8|0;f[a>>2]=(f[a>>2]|0)+1;a=g;a=a+28|0;u=h;return a|0}function zi(a,c,d){a=a|0;c=c|0;d=d|0;var e=0,g=0,i=0,j=0,k=0,l=0;j=u;u=u+16|0;i=j;do if(((h[(f[a+4>>2]|0)+36>>0]|0)<<8&65535)>511){k=d+8|0;l=f[k+4>>2]|0;g=d+16|0;e=g;c=f[e>>2]|0;e=f[e+4>>2]|0;if((l|0)>(e|0)|((l|0)==(e|0)?(f[k>>2]|0)>>>0>c>>>0:0)){l=b[(f[d>>2]|0)+c>>0]|0;k=Ho(c|0,e|0,1,0)|0;c=g;f[c>>2]=k;f[c+4>>2]=I;c=l&255;f[a+24>>2]=c;break}else{l=0;u=j;return l|0}}else c=f[a+24>>2]|0;while(0);f[i>>2]=1428;f[i+4>>2]=-1;Bp(i,c);l=Lk(i,f[a+16>>2]|0)|0;u=j;return l|0}function Ai(a,b){a=a|0;b=b|0;var c=0,d=0,e=0,g=0,h=0,i=0,j=0,k=0;i=a+228|0;h=a+232|0;c=f[i>>2]|0;a:do if((f[h>>2]|0)!=(c|0)){j=a+4|0;d=0;b:while(1){c=f[c+(d*116|0)>>2]|0;if(((c|0)>=0?(k=f[j>>2]|0,e=f[k+8>>2]|0,(c|0)<((f[k+12>>2]|0)-e>>2|0)):0)?(g=f[e+(c<<2)>>2]|0,(Sa[f[(f[g>>2]|0)+24>>2]&255](g)|0)>0):0){c=0;do{if((Wa[f[(f[g>>2]|0)+20>>2]&127](g,c)|0)==(b|0))break b;c=c+1|0}while((c|0)<(Sa[f[(f[g>>2]|0)+24>>2]&255](g)|0))}d=d+1|0;c=f[i>>2]|0;if(d>>>0>=(((f[h>>2]|0)-c|0)/116|0)>>>0)break a}k=(f[i>>2]|0)+(d*116|0)+76|0;return k|0}while(0);k=a+200|0;return k|0}function Bi(a){a=a|0;var b=0,c=0,d=0;f[a>>2]=4800;b=a+100|0;c=a+4|0;d=c+96|0;do{f[c>>2]=0;c=c+4|0}while((c|0)<(d|0));f[b>>2]=-1;f[a+104>>2]=-1;f[a+108>>2]=-1;b=a+168|0;c=a+112|0;d=c+56|0;do{f[c>>2]=0;c=c+4|0}while((c|0)<(d|0));n[b>>2]=$(1.0);b=a+240|0;c=a+172|0;d=c+68|0;do{f[c>>2]=0;c=c+4|0}while((c|0)<(d|0));Ym(b);Ym(a+280|0);d=a+320|0;f[d>>2]=0;f[d+4>>2]=0;f[d+8>>2]=0;f[d+12>>2]=0;f[d+16>>2]=0;f[d+20>>2]=0;f[d+24>>2]=0;f[d+28>>2]=0;f[a+352>>2]=-1;f[a+356>>2]=-1;f[a+360>>2]=2;f[a+364>>2]=7;d=a+368|0;f[d>>2]=0;f[d+4>>2]=0;f[d+8>>2]=0;f[d+12>>2]=0;f[d+16>>2]=0;f[d+20>>2]=0;return}function Ci(a){a=a|0;var b=0,c=0,d=0,e=0,g=0,h=0;g=f[a+4>>2]|0;h=a+8|0;b=f[h>>2]|0;if((b|0)!=(g|0))do{f[h>>2]=b+-116;c=f[b+-12>>2]|0;if(c|0){e=b+-8|0;d=f[e>>2]|0;if((d|0)!=(c|0))f[e>>2]=d+(~((d+-4-c|0)>>>2)<<2);ar(c)}c=f[b+-28>>2]|0;if(c|0){e=b+-24|0;d=f[e>>2]|0;if((d|0)!=(c|0))f[e>>2]=d+(~((d+-4-c|0)>>>2)<<2);ar(c)}c=f[b+-40>>2]|0;if(c|0){e=b+-36|0;d=f[e>>2]|0;if((d|0)!=(c|0))f[e>>2]=d+(~((d+-4-c|0)>>>2)<<2);ar(c)}Bj(b+-112|0);b=f[h>>2]|0}while((b|0)!=(g|0));b=f[a>>2]|0;if(!b)return;ar(b);return}function Di(a,c,d){a=a|0;c=c|0;d=d|0;var e=0,g=0;g=u;u=u+32|0;d=g;if((h[(f[a+4>>2]|0)+36>>0]<<8&65535)>511?!(Sa[f[(f[a>>2]|0)+52>>2]&255](a)|0):0){e=0;u=g;return e|0}f[d>>2]=1456;f[d+4>>2]=-1;c=d+8|0;f[c>>2]=0;f[c+4>>2]=0;f[c+8>>2]=0;f[c+12>>2]=0;Hl(d,f[a+24>>2]|0,f[a+28>>2]|0,b[(f[a+8>>2]|0)+24>>0]|0,$(n[a+32>>2]));e=Lk(d,f[a+16>>2]|0)|0;f[d>>2]=1456;a=f[c>>2]|0;if(a|0){c=d+12|0;d=f[c>>2]|0;if((d|0)!=(a|0))f[c>>2]=d+(~((d+-4-a|0)>>>2)<<2);ar(a)}u=g;return e|0}function Ei(a){a=a|0;var b=0,c=0,d=0,e=0,g=0,h=0;b=f[a>>2]|0;if(!b)return;h=a+4|0;c=f[h>>2]|0;if((c|0)!=(b|0)){do{f[h>>2]=c+-116;d=f[c+-12>>2]|0;if(d|0){g=c+-8|0;e=f[g>>2]|0;if((e|0)!=(d|0))f[g>>2]=e+(~((e+-4-d|0)>>>2)<<2);ar(d)}d=f[c+-28>>2]|0;if(d|0){g=c+-24|0;e=f[g>>2]|0;if((e|0)!=(d|0))f[g>>2]=e+(~((e+-4-d|0)>>>2)<<2);ar(d)}d=f[c+-40>>2]|0;if(d|0){g=c+-36|0;e=f[g>>2]|0;if((e|0)!=(d|0))f[g>>2]=e+(~((e+-4-d|0)>>>2)<<2);ar(d)}Bj(c+-112|0);c=f[h>>2]|0}while((c|0)!=(b|0));b=f[a>>2]|0}ar(b);return}function Fi(){var a=0,b=0,c=0,d=0,e=0,g=0,h=0,i=0;e=u;u=u+48|0;h=e+32|0;c=e+24|0;i=e+16|0;g=e;e=e+36|0;a=hn()|0;if(a|0?(d=f[a>>2]|0,d|0):0){b=d+48|0;a=f[b>>2]|0;b=f[b+4>>2]|0;if(!((a&-256|0)==1126902528&(b|0)==1129074247)){f[c>>2]=f[1468];Qn(22180,c)}if((a|0)==1126902529&(b|0)==1129074247)a=f[d+44>>2]|0;else a=d+80|0;f[e>>2]=a;d=f[d>>2]|0;a=f[d+4>>2]|0;d=Na[f[(f[320]|0)+16>>2]&31](1280,d,e)|0;b=f[1468]|0;if(d){i=f[e>>2]|0;i=Sa[f[(f[i>>2]|0)+8>>2]&255](i)|0;f[g>>2]=b;f[g+4>>2]=a;f[g+8>>2]=i;Qn(22094,g)}else{f[i>>2]=b;f[i+4>>2]=a;Qn(22139,i)}}Qn(22218,h)}function Gi(a,b){a=a|0;b=b|0;var c=0,d=0,e=0,g=0,h=0,i=0,j=0;j=ln(36)|0;xp(j);i=a+8|0;g=a+12|0;a=f[g>>2]|0;c=f[i>>2]|0;e=a-c>>2;do if((e|0)<=(b|0)){d=b+1|0;if(d>>>0>e>>>0){ig(i,d-e|0);break}if(d>>>0>>0?(h=c+(d<<2)|0,(a|0)!=(h|0)):0)do{e=a+-4|0;f[g>>2]=e;a=f[e>>2]|0;f[e>>2]=0;if(a|0)Pa[f[(f[a>>2]|0)+4>>2]&127](a);a=f[g>>2]|0}while((a|0)!=(h|0))}while(0);i=(f[i>>2]|0)+(b<<2)|0;a=f[i>>2]|0;f[i>>2]=j;if(!a)return 1;Pa[f[(f[a>>2]|0)+4>>2]&127](a);return 1}function Hi(a){a=a|0;var b=0,c=0,d=0;b=f[a+92>>2]|0;if(b|0){d=a+96|0;c=f[d>>2]|0;if((c|0)!=(b|0))f[d>>2]=c+(~((c+-4-b|0)>>>2)<<2);ar(b)}b=f[a+76>>2]|0;if(b|0){d=a+80|0;c=f[d>>2]|0;if((c|0)!=(b|0))f[d>>2]=c+(~((c+-4-b|0)>>>2)<<2);ar(b)}b=f[a+64>>2]|0;if(b|0){d=a+68|0;c=f[d>>2]|0;if((c|0)!=(b|0))f[d>>2]=c+(~((c+-4-b|0)>>>2)<<2);ar(b)}b=f[a+52>>2]|0;if(b|0){d=a+56|0;c=f[d>>2]|0;if((c|0)!=(b|0))f[d>>2]=c+(~((c+-4-b|0)>>>2)<<2);ar(b)}f[a+4>>2]=4708;b=f[a+24>>2]|0;if(b|0)ar(b);b=f[a+12>>2]|0;if(!b)return;ar(b);return}function Ii(a,b){a=a|0;b=b|0;var c=0,d=0,e=0,g=0,h=0,i=0,j=0,k=0;k=a+4|0;d=f[k>>2]|0;c=f[a>>2]|0;e=(d-c>>2)+1|0;if(e>>>0>1073741823){Lp(a);c=f[a>>2]|0;d=f[k>>2]|0}j=a+8|0;i=(f[j>>2]|0)-c|0;h=i>>1;h=i>>2>>>0<536870911?(h>>>0>>0?e:h):1073741823;e=d-c>>2;do if(h)if(h>>>0>1073741823){a=Ia(4)|0;Eq(a);sa(a|0,1344,125)}else{i=ln(h<<2)|0;break}else i=0;while(0);g=i+(e<<2)|0;f[g>>2]=f[b>>2];e=d-c|0;d=g+(0-(e>>2)<<2)|0;if((e|0)>0)Mg(d|0,c|0,e|0)|0;f[a>>2]=d;f[k>>2]=g+4;f[j>>2]=i+(h<<2);if(!c)return;ar(c);return}function Ji(a,c,d){a=a|0;c=c|0;d=d|0;var e=0,g=0,h=0,i=0;g=u;u=u+80|0;i=g;h=g+16|0;e=g+4|0;f[i>>2]=d&1;Dn(h,6306,i)|0;f[e>>2]=0;f[e+4>>2]=0;f[e+8>>2]=0;Pj(e,h,Xj(h)|0);a=yi(a,c)|0;c=a+11|0;if((b[c>>0]|0)<0){b[f[a>>2]>>0]=0;f[a+4>>2]=0}else{b[a>>0]=0;b[c>>0]=0}Hh(a,0);f[a>>2]=f[e>>2];f[a+4>>2]=f[e+4>>2];f[a+8>>2]=f[e+8>>2];f[e>>2]=0;f[e+4>>2]=0;f[e+8>>2]=0;Lo(e);u=g;return}function Ki(a,b,c){a=a|0;b=b|0;c=c|0;var d=0,e=0,g=0;g=u;u=u+32|0;d=g+12|0;e=g;f[d>>2]=0;f[d+4>>2]=0;f[d+8>>2]=0;Pj(d,b,Xj(b)|0);f[e>>2]=0;f[e+4>>2]=0;f[e+8>>2]=0;Pj(e,c,Xj(c)|0);b=ag(f[a+4>>2]|0,d,e)|0;if(!b){a=-1;Lo(e);Lo(d);u=g;return a|0}a=f[b+40>>2]|0;Lo(e);Lo(d);u=g;return a|0}function Li(a,c,d){a=a|0;c=c|0;d=d|0;do if(a){if(c>>>0<128){b[a>>0]=c;a=1;break}d=(Yq()|0)+188|0;if(!(f[f[d>>2]>>2]|0))if((c&-128|0)==57216){b[a>>0]=c;a=1;break}else{a=Oq()|0;f[a>>2]=84;a=-1;break}if(c>>>0<2048){b[a>>0]=c>>>6|192;b[a+1>>0]=c&63|128;a=2;break}if(c>>>0<55296|(c&-8192|0)==57344){b[a>>0]=c>>>12|224;b[a+1>>0]=c>>>6&63|128;b[a+2>>0]=c&63|128;a=3;break}if((c+-65536|0)>>>0<1048576){b[a>>0]=c>>>18|240;b[a+1>>0]=c>>>12&63|128;b[a+2>>0]=c>>>6&63|128;b[a+3>>0]=c&63|128;a=4;break}else{a=Oq()|0;f[a>>2]=84;a=-1;break}}else a=1;while(0);return a|0}function Mi(a){a=a|0;var b=0,c=0,d=0,e=0;e=f[a>>2]|0;f[a>>2]=0;if(!e)return;a=f[e+28>>2]|0;if(a|0)do{d=a;a=f[a>>2]|0;Mi(d+20|0);Lo(d+8|0);ar(d)}while((a|0)!=0);d=e+20|0;a=f[d>>2]|0;f[d>>2]=0;if(a|0)ar(a);a=f[e+8>>2]|0;if(a|0)do{d=a;a=f[a>>2]|0;b=f[d+20>>2]|0;if(b|0){c=d+24|0;if((f[c>>2]|0)!=(b|0))f[c>>2]=b;ar(b)}Lo(d+8|0);ar(d)}while((a|0)!=0);a=f[e>>2]|0;f[e>>2]=0;if(a|0)ar(a);ar(e);return}function Ni(a,b){a=a|0;b=b|0;var c=0,d=0,e=0;e=u;u=u+32|0;c=e+12|0;d=e;f[c>>2]=0;f[c+4>>2]=0;f[c+8>>2]=0;Pj(c,b,Xj(b)|0);f[d>>2]=0;f[d+4>>2]=0;f[d+8>>2]=0;Pj(d,5976,4);b=ag(f[a+4>>2]|0,d,c)|0;if(!b){a=-1;Lo(d);Lo(c);u=e;return a|0}a=f[b+40>>2]|0;Lo(d);Lo(c);u=e;return a|0}function Oi(a,b){a=a|0;b=b|0;var c=0,d=0,e=0,g=0,i=0,j=0;j=u;u=u+80|0;i=j;g=j+56|0;e=j+40|0;d=i;c=d+40|0;do{f[d>>2]=f[b>>2];d=d+4|0;b=b+4|0}while((d|0)<(c|0));pc(e,i,g);b=f[e>>2]|0;if(!b){Lo(e+4|0);g=h[g+7>>0]|0;f[a>>2]=0;f[a+4>>2]=0;f[a+8>>2]=0;f[a+12>>2]=0;f[a+16>>2]=g;i=i+24|0;fr(i);u=j;return}else{f[a>>2]=b;g=e+4|0;ml(a+4|0,g);Lo(g);i=i+24|0;fr(i);u=j;return}}function Pi(a,c){a=a|0;c=c|0;var d=0,e=0,g=0,h=0,i=0,j=0;e=u;u=u+16|0;d=e;if(!c){a=0;u=e;return a|0}i=c+4|0;g=(f[i>>2]|0)-(f[c>>2]|0)>>2;b[d>>0]=0;Yg(a,g,d);g=c+24|0;h=c+28|0;j=(f[h>>2]|0)-(f[g>>2]|0)>>2;b[d>>0]=0;Yg(a+12|0,j,d);If(a+28|0,(f[i>>2]|0)-(f[c>>2]|0)>>2,1552);Sj(a+52|0,(f[h>>2]|0)-(f[g>>2]|0)>>2);Sj(a+40|0,(f[h>>2]|0)-(f[g>>2]|0)>>2);f[a+64>>2]=c;b[a+24>>0]=1;a=1;u=e;return a|0}function Qi(a,b,c,d){a=a|0;b=b|0;c=c|0;d=d|0;var e=0,g=0,h=0,i=0,j=0;j=u;u=u+48|0;h=j+4|0;i=j;if((d|0)!=1){f[a>>2]=0;u=j;return}g=f[b+12>>2]|0;d=f[b+4>>2]|0;b=h;e=b+36|0;do{f[b>>2]=0;b=b+4|0}while((b|0)<(e|0));Pg(i,c,g,d,h);e=f[h+24>>2]|0;if(e|0){b=h+28|0;d=f[b>>2]|0;if((d|0)!=(e|0))f[b>>2]=d+(~((d+-4-e|0)>>>2)<<2);ar(e)}f[a>>2]=f[i>>2];u=j;return}function Ri(a){a=a|0;var b=0,c=0,d=0,e=0;b=f[a+28>>2]|0;if(b|0)do{c=b;b=f[b>>2]|0;e=c+20|0;d=f[e>>2]|0;f[e>>2]=0;if(d|0){Ri(d);ar(d)}Lo(c+8|0);ar(c)}while((b|0)!=0);e=a+20|0;b=f[e>>2]|0;f[e>>2]=0;if(b|0)ar(b);b=f[a+8>>2]|0;if(b|0)do{e=b;b=f[b>>2]|0;c=f[e+20>>2]|0;if(c|0){d=e+24|0;if((f[d>>2]|0)!=(c|0))f[d>>2]=c;ar(c)}Lo(e+8|0);ar(e)}while((b|0)!=0);b=f[a>>2]|0;f[a>>2]=0;if(!b)return;ar(b);return}function Si(a,b,c,d){a=a|0;b=b|0;c=c|0;d=d|0;var e=0,g=0,h=0;if(b>>>0<64){e=f[a+8>>2]|0;if(e>>>0<=1){h=0;return h|0}b=f[c>>2]|0;c=1;d=0;do{d=(f[b+(d<<2)>>2]|0)>>>0>(f[b+(c<<2)>>2]|0)>>>0?c:d;c=c+1|0}while(c>>>0>>0);return d|0}h=a+576|0;g=f[h>>2]|0;e=32-g|0;c=a+572|0;b=f[c>>2]|0;d=f[b>>2]<>2]=a;g=b+4|0;f[c>>2]=g;h=32-a|0;h=(f[g>>2]|0)>>>h|d>>>(h-e|0);return h|0}d=d>>>28;g=g+4|0;f[h>>2]=g;if((g|0)!=32){h=d;return h|0}f[c>>2]=b+4;f[h>>2]=0;h=d;return h|0}function Ti(a,c,d){a=a|0;c=c|0;d=d|0;var e=0,g=0,i=0,j=0,k=0;do if(((h[(f[a+4>>2]|0)+36>>0]|0)<<8&65535)<512){j=d+8|0;k=f[j+4>>2]|0;i=d+16|0;g=i;e=f[g>>2]|0;g=f[g+4>>2]|0;if((k|0)>(g|0)|((k|0)==(g|0)?(f[j>>2]|0)>>>0>e>>>0:0)){k=b[(f[d>>2]|0)+e>>0]|0;g=Ho(e|0,g|0,1,0)|0;j=i;f[j>>2]=g;f[j+4>>2]=I;f[a+24>>2]=k&255;break}else{k=0;return k|0}}while(0);k=xd(a,c,d)|0;return k|0}function Ui(a,b){a=a|0;b=b|0;var c=0,d=0;c=a+16|0;a=f[b>>2]|0;f[b>>2]=0;d=f[c>>2]|0;f[c>>2]=a;if(!d)return;c=d+88|0;b=f[c>>2]|0;f[c>>2]=0;if(b|0){a=f[b+8>>2]|0;if(a|0){c=b+12|0;if((f[c>>2]|0)!=(a|0))f[c>>2]=a;ar(a)}ar(b)}b=f[d+68>>2]|0;if(b|0){c=d+72|0;a=f[c>>2]|0;if((a|0)!=(b|0))f[c>>2]=a+(~((a+-4-b|0)>>>2)<<2);ar(b)}c=d+64|0;b=f[c>>2]|0;f[c>>2]=0;if(b|0){a=f[b>>2]|0;if(a|0){c=b+4|0;if((f[c>>2]|0)!=(a|0))f[c>>2]=a;ar(a)}ar(b)}ar(d);return}function Vi(a,b){a=a|0;b=b|0;var c=0,d=0,e=0,g=0,h=0,i=0,j=0,k=0;j=a+8|0;g=f[a>>2]|0;d=g;if((((f[j>>2]|0)-g|0)/12|0)>>>0>=b>>>0)return;i=a+4|0;if(b>>>0>357913941){a=Ia(4)|0;Eq(a);sa(a|0,1344,125)}k=f[i>>2]|0;e=ln(b*12|0)|0;c=e+(((k-g|0)/12|0)*12|0)|0;h=c;e=e+(b*12|0)|0;b=k;if((b|0)==(d|0))c=h;else do{k=b;b=b+-12|0;f[c+-12>>2]=f[b>>2];f[c+-8>>2]=f[k+-8>>2];f[c+-4>>2]=f[k+-4>>2];c=c+-12|0}while((b|0)!=(d|0));f[a>>2]=c;f[i>>2]=h;f[j>>2]=e;if(!g)return;ar(g);return}function Wi(a,c,d,e){a=a|0;c=c|0;d=d|0;e=e|0;var g=0,h=0,i=0,j=0,k=0,l=0,m=0;m=u;u=u+128|0;g=m+124|0;l=m;h=l;i=5360;j=h+124|0;do{f[h>>2]=f[i>>2];h=h+4|0;i=i+4|0}while((h|0)<(j|0));if((c+-1|0)>>>0>2147483646)if(!c){c=1;k=4}else{g=Oq()|0;f[g>>2]=75;g=-1}else{g=a;k=4}if((k|0)==4){k=-2-g|0;k=c>>>0>k>>>0?k:c;f[l+48>>2]=k;h=l+20|0;f[h>>2]=g;f[l+44>>2]=g;g=g+k|0;c=l+16|0;f[c>>2]=g;f[l+28>>2]=g;g=rh(l,d,e)|0;if(k){d=f[h>>2]|0;b[d+(((d|0)==(f[c>>2]|0))<<31>>31)>>0]=0}}u=m;return g|0}function Xi(a,c,d,e){a=a|0;c=c|0;d=d|0;e=e|0;var g=0,h=0,i=0,j=0,k=0;if((a|0)<0){d=0;return d|0}if(!a){d=1;return d|0}j=d+8|0;k=f[j+4>>2]|0;i=d+16|0;g=i;h=f[g>>2]|0;g=f[g+4>>2]|0;if(!((k|0)>(g|0)|((k|0)==(g|0)?(f[j>>2]|0)>>>0>h>>>0:0))){k=0;return k|0}k=b[(f[d>>2]|0)+h>>0]|0;h=Ho(h|0,g|0,1,0)|0;j=i;f[j>>2]=h;f[j+4>>2]=I;switch(k<<24>>24){case 0:{k=_c(a,c,d,e)|0;return k|0}case 1:{k=Zd(a,d,e)|0;return k|0}default:{k=0;return k|0}}return 0}function Yi(a,c,d){a=a|0;c=c|0;d=d|0;var e=0,g=0,h=0,i=0,j=0,k=0;k=u;u=u+16|0;j=k;h=a+11|0;e=b[h>>0]|0;g=e<<24>>24<0;if(g)i=(f[a+8>>2]&2147483647)+-1|0;else i=10;do if(i>>>0>=d>>>0){if(g)e=f[a>>2]|0;else e=a;Oo(e,c,d)|0;b[j>>0]=0;Qp(e+d|0,j);if((b[h>>0]|0)<0){f[a+4>>2]=d;break}else{b[h>>0]=d;break}}else{if(g)e=f[a+4>>2]|0;else e=e&255;wi(a,i,d-i|0,e,0,e,d,c)}while(0);u=k;return a|0}function Zi(a,c){a=a|0;c=c|0;var d=0,e=0,g=0;d=f[a>>2]|0;if(!d){a=0;return a|0}e=f[c>>2]|0;if(!e){a=0;return a|0}g=f[e>>2]|0;mj(d,g,(f[e+4>>2]|0)-g|0,0)|0;b[a+24>>0]=b[c+24>>0]|0;f[a+28>>2]=f[c+28>>2];b[a+32>>0]=b[c+32>>0]|0;e=c+40|0;d=f[e+4>>2]|0;g=a+40|0;f[g>>2]=f[e>>2];f[g+4>>2]=d;g=c+48|0;d=f[g+4>>2]|0;e=a+48|0;f[e>>2]=f[g>>2];f[e+4>>2]=d;f[a+56>>2]=f[c+56>>2];c=c+8|0;a=a+8|0;f[a>>2]=f[c>>2];f[a+4>>2]=f[c+4>>2];f[a+8>>2]=f[c+8>>2];f[a+12>>2]=f[c+12>>2];a=1;return a|0}function _i(a,c,d){a=a|0;c=c|0;d=d|0;var e=0,g=0,h=0,i=0,j=0,k=0,l=0;l=u;u=u+16|0;k=l;if(c|0){h=a+11|0;e=b[h>>0]|0;if(e<<24>>24<0){j=f[a+4>>2]|0;g=(f[a+8>>2]&2147483647)+-1|0}else{j=e&255;g=10}i=j+c|0;if((g-j|0)>>>0>>0){lj(a,g,i-g|0,j,j,0,0);e=b[h>>0]|0}if(e<<24>>24<0)e=f[a>>2]|0;else e=a;Mn(e+j|0,c,d)|0;if((b[h>>0]|0)<0)f[a+4>>2]=i;else b[h>>0]=i;b[k>>0]=0;Qp(e+i|0,k)}u=l;return a|0}function $i(a){a=a|0;var b=0,c=0,d=0,e=0,g=0,h=0,i=0,j=0;j=a+4|0;g=f[j>>2]|0;i=a+8|0;a=f[i>>2]|0;d=g+4|0;c=f[d>>2]|0;b=f[g>>2]|0;e=c-b>>2;if(a>>>0<=e>>>0){if(a>>>0>>0?(h=b+(a<<2)|0,(c|0)!=(h|0)):0)f[d>>2]=c+(~((c+-4-h|0)>>>2)<<2)}else{ui(g,a-e|0);a=f[i>>2]|0}if((a|0)>0)d=0;else return 1;do{b=f[j>>2]|0;c=f[b>>2]|0;if((f[b+4>>2]|0)-c>>2>>>0<=d>>>0){Kp(b);c=f[b>>2]|0;a=f[i>>2]|0}f[c+(d<<2)>>2]=d;d=d+1|0}while((d|0)<(a|0));return 1}function aj(a){a=a|0;var b=0,c=0,d=0,e=0,g=0;f[a>>2]=4528;e=a+48|0;b=f[e>>2]|0;f[e>>2]=0;if(b|0)Pa[f[(f[b>>2]|0)+4>>2]&127](b);f[a>>2]=1620;b=f[a+20>>2]|0;if(b|0){d=a+24|0;c=f[d>>2]|0;if((c|0)!=(b|0))f[d>>2]=c+(~((c+-4-b|0)>>>2)<<2);ar(b)}d=a+8|0;b=f[d>>2]|0;if(!b){ar(a);return}e=a+12|0;c=f[e>>2]|0;if((c|0)!=(b|0)){do{g=c+-4|0;f[e>>2]=g;c=f[g>>2]|0;f[g>>2]=0;if(c|0)Pa[f[(f[c>>2]|0)+4>>2]&127](c);c=f[e>>2]|0}while((c|0)!=(b|0));b=f[d>>2]|0}ar(b);ar(a);return}function bj(a,c){a=a|0;c=c|0;var d=0,e=0,g=0,h=0,i=0;if(!(hi(a+8|0,c)|0)){a=0;return a|0}h=c+8|0;i=f[h+4>>2]|0;g=c+16|0;d=g;e=f[d>>2]|0;d=f[d+4>>2]|0;if((i|0)>(d|0)|((i|0)==(d|0)?(f[h>>2]|0)>>>0>e>>>0:0)?(i=b[(f[c>>2]|0)+e>>0]|0,e=Ho(e|0,d|0,1,0)|0,h=g,f[h>>2]=e,f[h+4>>2]=I,i<<24>>24):0){i=0;return i|0}i=Ff(a+84|0,c)|0;return i|0}function cj(a,c,d,e,g){a=a|0;c=c|0;d=d|0;e=e|0;g=g|0;var h=0;do if(!(wp(a,f[c+8>>2]|0,g)|0)){if(wp(a,f[c>>2]|0,g)|0){a=c+32|0;if((f[c+16>>2]|0)!=(d|0)?(h=c+20|0,(f[h>>2]|0)!=(d|0)):0){f[a>>2]=e;f[h>>2]=d;e=c+40|0;f[e>>2]=(f[e>>2]|0)+1;if((f[c+36>>2]|0)==1?(f[c+24>>2]|0)==2:0)b[c+54>>0]=1;f[c+44>>2]=4;break}if((e|0)==1)f[a>>2]=1}}else Lm(0,c,d,e);while(0);return}function dj(a){a=a|0;fr(a+496|0);fr(a+480|0);fr(a+464|0);fr(a+448|0);fr(a+432|0);fr(a+416|0);fr(a+400|0);fr(a+384|0);fr(a+368|0);fr(a+352|0);fr(a+336|0);fr(a+320|0);fr(a+304|0);fr(a+288|0);fr(a+272|0);fr(a+256|0);fr(a+240|0);fr(a+224|0);fr(a+208|0);fr(a+192|0);fr(a+176|0);fr(a+160|0);fr(a+144|0);fr(a+128|0);fr(a+112|0);fr(a+96|0);fr(a+80|0);fr(a+64|0);fr(a+48|0);fr(a+32|0);fr(a+16|0);fr(a);return}function ej(a,c,d){a=a|0;c=c|0;d=d|0;var e=0,g=0,h=0,i=0;h=a+d|0;c=c&255;if((d|0)>=67){while(a&3){b[a>>0]=c;a=a+1|0}e=h&-4|0;g=e-64|0;i=c|c<<8|c<<16|c<<24;while((a|0)<=(g|0)){f[a>>2]=i;f[a+4>>2]=i;f[a+8>>2]=i;f[a+12>>2]=i;f[a+16>>2]=i;f[a+20>>2]=i;f[a+24>>2]=i;f[a+28>>2]=i;f[a+32>>2]=i;f[a+36>>2]=i;f[a+40>>2]=i;f[a+44>>2]=i;f[a+48>>2]=i;f[a+52>>2]=i;f[a+56>>2]=i;f[a+60>>2]=i;a=a+64|0}while((a|0)<(e|0)){f[a>>2]=i;a=a+4|0}}while((a|0)<(h|0)){b[a>>0]=c;a=a+1|0}return h-d|0}function fj(a,b,c){a=a|0;b=b|0;c=c|0;var d=0,e=0;b=sd(a,b)|0;if(!b){c=0;return c|0}e=b+20|0;d=f[e>>2]|0;a=b+24|0;b=f[a>>2]|0;if((d|0)==(b|0)){c=0;return c|0}Aj(c,b-d|0,0);d=wl(c,0)|0;c=f[e>>2]|0;Mg(d|0,c|0,(f[a>>2]|0)-c|0)|0;c=1;return c|0}function gj(a,c,d,e,g){a=a|0;c=c|0;d=d|0;e=e|0;g=g|0;var h=0,i=0,j=0,k=0;b[c+53>>0]=1;do if((f[c+4>>2]|0)==(e|0)){b[c+52>>0]=1;h=c+16|0;a=f[h>>2]|0;k=c+54|0;j=c+48|0;i=c+24|0;e=c+36|0;if(!a){f[h>>2]=d;f[i>>2]=g;f[e>>2]=1;if(!((f[j>>2]|0)==1&(g|0)==1))break;b[k>>0]=1;break}if((a|0)!=(d|0)){f[e>>2]=(f[e>>2]|0)+1;b[k>>0]=1;break}e=f[i>>2]|0;if((e|0)==2){f[i>>2]=g;e=g}if((f[j>>2]|0)==1&(e|0)==1)b[k>>0]=1}while(0);return}function hj(a){a=a|0;var b=0,c=0,d=0,e=0;f[a>>2]=4528;e=a+48|0;b=f[e>>2]|0;f[e>>2]=0;if(b|0)Pa[f[(f[b>>2]|0)+4>>2]&127](b);f[a>>2]=1620;b=f[a+20>>2]|0;if(b|0){d=a+24|0;c=f[d>>2]|0;if((c|0)!=(b|0))f[d>>2]=c+(~((c+-4-b|0)>>>2)<<2);ar(b)}e=a+8|0;b=f[e>>2]|0;if(!b)return;d=a+12|0;c=f[d>>2]|0;if((c|0)!=(b|0)){do{a=c+-4|0;f[d>>2]=a;c=f[a>>2]|0;f[a>>2]=0;if(c|0)Pa[f[(f[c>>2]|0)+4>>2]&127](c);c=f[d>>2]|0}while((c|0)!=(b|0));b=f[e>>2]|0}ar(b);return}function ij(a,c){a=a|0;c=c|0;var d=0,e=0,g=0,h=0,i=0;if(!(ki(a+8|0,c)|0)){a=0;return a|0}h=c+8|0;i=f[h+4>>2]|0;g=c+16|0;d=g;e=f[d>>2]|0;d=f[d+4>>2]|0;if((i|0)>(d|0)|((i|0)==(d|0)?(f[h>>2]|0)>>>0>e>>>0:0)?(i=b[(f[c>>2]|0)+e>>0]|0,e=Ho(e|0,d|0,1,0)|0,h=g,f[h>>2]=e,f[h+4>>2]=I,i<<24>>24):0){i=0;return i|0}i=Ff(a+84|0,c)|0;return i|0}function jj(a){a=a|0;var b=0,c=0,d=0;f[a>>2]=1724;c=a+16|0;d=f[c>>2]|0;f[c>>2]=0;if(!d)return;c=d+88|0;a=f[c>>2]|0;f[c>>2]=0;if(a|0){b=f[a+8>>2]|0;if(b|0){c=a+12|0;if((f[c>>2]|0)!=(b|0))f[c>>2]=b;ar(b)}ar(a)}a=f[d+68>>2]|0;if(a|0){c=d+72|0;b=f[c>>2]|0;if((b|0)!=(a|0))f[c>>2]=b+(~((b+-4-a|0)>>>2)<<2);ar(a)}c=d+64|0;a=f[c>>2]|0;f[c>>2]=0;if(a|0){b=f[a>>2]|0;if(b|0){c=a+4|0;if((f[c>>2]|0)!=(b|0))f[c>>2]=b;ar(b)}ar(a)}ar(d);return}function kj(a,b){a=a|0;b=b|0;if(!b)return;else{kj(a,f[b>>2]|0);kj(a,f[b+4>>2]|0);tj(b+20|0,f[b+24>>2]|0);ar(b);return}}function lj(a,c,d,e,g,h,i){a=a|0;c=c|0;d=d|0;e=e|0;g=g|0;h=h|0;i=i|0;var j=0,k=0,l=0;if((-17-c|0)>>>0>>0)Hp(a);if((b[a+11>>0]|0)<0)l=f[a>>2]|0;else l=a;if(c>>>0<2147483623){k=d+c|0;j=c<<1;k=k>>>0>>0?j:k;k=k>>>0<11?11:k+16&-16}else k=-17;j=ln(k)|0;if(g|0)So(j,l,g)|0;d=e-h-g|0;if(d|0)So(j+g+i|0,l+g+h|0,d)|0;if((c|0)!=10)ar(l);f[a>>2]=j;f[a+8>>2]=k|-2147483648;return}function mj(a,b,c,d){a=a|0;b=b|0;c=c|0;d=d|0;var e=0,g=0,h=0;if((d|0)<0){a=0;return a|0}do if(!b){e=a+4|0;d=f[e>>2]|0;b=f[a>>2]|0;g=d-b|0;if(c>>>0>g>>>0){vi(a,c-g|0);break}if(c>>>0>>0?(h=b+c|0,(d|0)!=(h|0)):0)f[e>>2]=h}else hg(a,b,b+c|0);while(0);a=a+24|0;h=a;h=Ho(f[h>>2]|0,f[h+4>>2]|0,1,0)|0;f[a>>2]=h;f[a+4>>2]=I;a=1;return a|0}function nj(a,b,c){a=a|0;b=b|0;c=c|0;var d=0,e=0;bg(a,b,c);d=f[a+84>>2]|0;a=(f[a+88>>2]|0)-d|0;if((a|0)<=0)return;b=f[b>>2]|0;c=(a>>>0)/12|0;a=0;do{e=d+(a*12|0)|0;f[e>>2]=f[b+(f[e>>2]<<2)>>2];e=d+(a*12|0)+4|0;f[e>>2]=f[b+(f[e>>2]<<2)>>2];e=d+(a*12|0)+8|0;f[e>>2]=f[b+(f[e>>2]<<2)>>2];a=a+1|0}while((a|0)<(c|0));return}function oj(a,c){a=a|0;c=c|0;var d=0,e=0,g=0,h=0,i=0;h=a+64|0;if((f[h>>2]|0)==0?(g=ln(32)|0,wn(g),d=f[h>>2]|0,f[h>>2]=g,d|0):0){e=f[d>>2]|0;if(e|0){g=d+4|0;if((f[g>>2]|0)!=(e|0))f[g>>2]=e;ar(e)}ar(d)}e=cm(f[a+28>>2]|0)|0;e=X(b[a+24>>0]|0,e)|0;d=((e|0)<0)<<31>>31;i=f[h>>2]|0;g=kn(e|0,d|0,c|0,0)|0;if(!(mj(i,0,g,I)|0)){i=0;return i|0}Ak(a,f[h>>2]|0,e,d,0,0);f[a+80>>2]=c;i=1;return i|0}function pj(a,c){a=a|0;c=c|0;var d=0,e=0,g=0,h=0,i=0;h=u;u=u+16|0;g=h;f[a>>2]=c;f[a+68>>2]=0;f[a+72>>2]=0;af(g,c);e=a+4|0;i=f[g>>2]|0;f[g>>2]=0;d=f[e>>2]|0;f[e>>2]=i;if(d){sj(d);ar(d);d=f[g>>2]|0;f[g>>2]=0;if(d|0){sj(d);ar(d)}}else f[g>>2]=0;if(!(f[e>>2]|0)){i=0;u=h;return i|0}i=((f[c+88>>2]|0)-(f[c+84>>2]|0)|0)/12|0;b[g>>0]=0;Yg(a+56|0,i,g);i=1;u=h;return i|0}function qj(a,b,c,d,e,f){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;f=f|0;var g=0,h=0,i=0;g=e>>>0>1073741823?-1:e<<2;h=Zq(g)|0;ej(h|0,0,g|0)|0;g=a+8|0;ji(g,h,b,c);if((e|0)>=(d|0)){_q(h);return 1}a=0-e|0;f=e;do{i=c+(f<<2)|0;ji(g,i+(a<<2)|0,b+(f<<2)|0,i);f=f+e|0}while((f|0)<(d|0));_q(h);return 1}function rj(a,b,c){a=a|0;b=b|0;c=c|0;var d=0,e=0,g=0,h=0;h=u;u=u+64|0;g=h;if(!(wp(a,b,0)|0))if((b|0)!=0?(e=uh(b,1304,1288,0)|0,(e|0)!=0):0){b=g+4|0;d=b+52|0;do{f[b>>2]=0;b=b+4|0}while((b|0)<(d|0));f[g>>2]=e;f[g+8>>2]=a;f[g+12>>2]=-1;f[g+48>>2]=1;Xa[f[(f[e>>2]|0)+28>>2]&7](e,g,f[c>>2]|0,1);if((f[g+24>>2]|0)==1){f[c>>2]=f[g+16>>2];b=1}else b=0}else b=0;else b=1;u=h;return b|0}function sj(a){a=a|0;var b=0,c=0,d=0;b=f[a+48>>2]|0;if(b|0){d=a+52|0;c=f[d>>2]|0;if((c|0)!=(b|0))f[d>>2]=c+(~((c+-4-b|0)>>>2)<<2);ar(b)}b=f[a+24>>2]|0;if(b|0){d=a+28|0;c=f[d>>2]|0;if((c|0)!=(b|0))f[d>>2]=c+(~((c+-4-b|0)>>>2)<<2);ar(b)}b=f[a+12>>2]|0;if(b|0){d=a+16|0;c=f[d>>2]|0;if((c|0)!=(b|0))f[d>>2]=c+(~((c+-4-b|0)>>>2)<<2);ar(b)}d=f[a>>2]|0;if(!d)return;c=a+4|0;b=f[c>>2]|0;if((b|0)!=(d|0))f[c>>2]=b+(~((b+-4-d|0)>>>2)<<2);ar(d);return}function tj(a,b){a=a|0;b=b|0;if(!b)return;else{tj(a,f[b>>2]|0);tj(a,f[b+4>>2]|0);Lo(b+28|0);Lo(b+16|0);ar(b);return}}function uj(a,b,c){a=a|0;b=b|0;c=c|0;var d=0,e=0,g=0,i=0,j=0,k=0,l=0,m=0;if((b|0)>=33)Ga(17861,5981,53,17934);if((b|0)<=0)Ga(17963,5981,54,17934);j=a+8|0;g=a+4|0;i=0-(h[a+12>>0]|0)&255;d=f[j>>2]|0;e=0;do{if(d>>>0<4096){l=f[a>>2]|0;k=(f[g>>2]|0)+-1|0;f[g>>2]=k;d=h[l+k>>0]|0|d<<8;f[j>>2]=d}m=d&255;k=X(d>>>8,i)|0;l=m>>>0>>0;d=l?k+m|0:d-i-k|0;f[j>>2]=d;e=l&1|e<<1;b=b+-1|0}while((b|0)!=0);f[c>>2]=e;return}function vj(a,b,c,d,e,f){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;f=f|0;var g=0,h=0,i=0;g=e>>>0>1073741823?-1:e<<2;h=Zq(g)|0;ej(h|0,0,g|0)|0;g=a+8|0;mi(g,h,b,c);if((e|0)>=(d|0)){_q(h);return 1}a=0-e|0;f=e;do{i=c+(f<<2)|0;mi(g,i+(a<<2)|0,b+(f<<2)|0,i);f=f+e|0}while((f|0)<(d|0));_q(h);return 1}function wj(a,c,d){a=a|0;c=c|0;d=d|0;a=sd(a,c)|0;if(!a){d=0;return d|0}c=f[a+20>>2]|0;if(((f[a+24>>2]|0)-c|0)!=4){d=0;return d|0}a=c;a=h[a>>0]|h[a+1>>0]<<8|h[a+2>>0]<<16|h[a+3>>0]<<24;b[d>>0]=a;b[d+1>>0]=a>>8;b[d+2>>0]=a>>16;b[d+3>>0]=a>>24;d=1;return d|0}function xj(a,c,d,e,g,h,i,j,k,l){a=a|0;c=c|0;d=d|0;e=e|0;g=g|0;h=h|0;i=i|0;j=j|0;k=k|0;l=l|0;var m=0,n=0,o=0;f[a>>2]=d;if(d|0){o=d+16|0;m=f[o+4>>2]|0;n=a+8|0;f[n>>2]=f[o>>2];f[n+4>>2]=m;n=d+24|0;m=f[n+4>>2]|0;d=a+16|0;f[d>>2]=f[n>>2];f[d+4>>2]=m}b[a+24>>0]=e;f[a+28>>2]=g;b[a+32>>0]=h&1;o=a+40|0;f[o>>2]=i;f[o+4>>2]=j;o=a+48|0;f[o>>2]=k;f[o+4>>2]=l;f[a+56>>2]=c;return}function yj(a,c){a=a|0;c=c|0;var d=0,e=0,g=0,h=0,i=0;h=c+8|0;i=f[h+4>>2]|0;g=c+16|0;d=g;e=f[d>>2]|0;d=f[d+4>>2]|0;if(!((i|0)>(d|0)|((i|0)==(d|0)?(f[h>>2]|0)>>>0>e>>>0:0))){i=0;return i|0}h=b[(f[c>>2]|0)+e>>0]|0;i=Ho(e|0,d|0,1,0)|0;d=g;f[d>>2]=i;f[d+4>>2]=I;d=h&255;do if(d&128)if(yj(a,c)|0){d=f[a>>2]<<7;f[a>>2]=d;d=d|h&127;break}else{i=0;return i|0}while(0);f[a>>2]=d;i=1;return i|0}function zj(a){a=a|0;var b=0,c=0,d=0;if(!a)return;d=a+88|0;b=f[d>>2]|0;f[d>>2]=0;if(b|0){c=f[b+8>>2]|0;if(c|0){d=b+12|0;if((f[d>>2]|0)!=(c|0))f[d>>2]=c;ar(c)}ar(b)}b=f[a+68>>2]|0;if(b|0){d=a+72|0;c=f[d>>2]|0;if((c|0)!=(b|0))f[d>>2]=c+(~((c+-4-b|0)>>>2)<<2);ar(b)}d=a+64|0;b=f[d>>2]|0;f[d>>2]=0;if(b|0){c=f[b>>2]|0;if(c|0){d=b+4|0;if((f[d>>2]|0)!=(c|0))f[d>>2]=c;ar(c)}ar(b)}ar(a);return}function Aj(a,c,d){a=a|0;c=c|0;d=d|0;var e=0,g=0,h=0,i=0,j=0;j=u;u=u+16|0;h=j;g=a+11|0;e=b[g>>0]|0;i=e<<24>>24<0;if(i)e=f[a+4>>2]|0;else e=e&255;do if(e>>>0>=c>>>0)if(i){i=(f[a>>2]|0)+c|0;b[h>>0]=0;Qp(i,h);f[a+4>>2]=c;break}else{b[h>>0]=0;Qp(a+c|0,h);b[g>>0]=c;break}else _i(a,c-e|0,d)|0;while(0);u=j;return}function Bj(a){a=a|0;var b=0,c=0,d=0;b=f[a+52>>2]|0;if(b|0){d=a+56|0;c=f[d>>2]|0;if((c|0)!=(b|0))f[d>>2]=c+(~((c+-4-b|0)>>>2)<<2);ar(b)}b=f[a+40>>2]|0;if(b|0){d=a+44|0;c=f[d>>2]|0;if((c|0)!=(b|0))f[d>>2]=c+(~((c+-4-b|0)>>>2)<<2);ar(b)}b=f[a+28>>2]|0;if(b|0){d=a+32|0;c=f[d>>2]|0;if((c|0)!=(b|0))f[d>>2]=c+(~((c+-4-b|0)>>>2)<<2);ar(b)}b=f[a+12>>2]|0;if(b|0)ar(b);b=f[a>>2]|0;if(!b)return;ar(b);return}function Cj(a){a=a|0;var b=0,c=0,d=0;f[a>>2]=4588;b=a+100|0;c=a+4|0;d=c+96|0;do{f[c>>2]=0;c=c+4|0}while((c|0)<(d|0));f[b>>2]=-1;f[a+104>>2]=-1;f[a+108>>2]=-1;b=a+168|0;c=a+112|0;d=c+56|0;do{f[c>>2]=0;c=c+4|0}while((c|0)<(d|0));n[b>>2]=$(1.0);b=a+240|0;c=a+172|0;d=c+68|0;do{f[c>>2]=0;c=c+4|0}while((c|0)<(d|0));Ym(b);Ym(a+280|0);f[a+320>>2]=0;f[a+324>>2]=0;f[a+328>>2]=0;return}function Dj(a){a=a|0;var b=0,c=0,d=0,e=0,g=0;f[a>>2]=1620;b=f[a+20>>2]|0;if(b|0){d=a+24|0;c=f[d>>2]|0;if((c|0)!=(b|0))f[d>>2]=c+(~((c+-4-b|0)>>>2)<<2);ar(b)}d=a+8|0;b=f[d>>2]|0;if(!b){ar(a);return}e=a+12|0;c=f[e>>2]|0;if((c|0)!=(b|0)){do{g=c+-4|0;f[e>>2]=g;c=f[g>>2]|0;f[g>>2]=0;if(c|0)Pa[f[(f[c>>2]|0)+4>>2]&127](c);c=f[e>>2]|0}while((c|0)!=(b|0));b=f[d>>2]|0}ar(b);ar(a);return}function Ej(a,c,d){a=a|0;c=c|0;d=d|0;var e=0,g=0,h=0;e=u;u=u+32|0;g=e+12|0;h=e;f[g>>2]=0;f[g+4>>2]=0;f[g+8>>2]=0;f[h>>2]=0;f[h+4>>2]=0;f[h+8>>2]=0;Pj(h,d,Xj(d)|0);fj(c,h,g)|0;a=(b[g+11>>0]|0)<0?f[g>>2]|0:g;Lo(h);Lo(g);u=e;return a|0}function Fj(a,b){a=a|0;b=b|0;var c=0,d=0,e=0,g=0,h=0;f[a>>2]=0;h=a+4|0;f[h>>2]=0;f[a+8>>2]=0;e=b+4|0;c=(f[e>>2]|0)-(f[b>>2]|0)|0;d=c>>2;if(!d)return;if(d>>>0>1073741823){Lp(a);h=Ia(4)|0;Eq(h);sa(h|0,1344,125)}g=ln(c)|0;f[h>>2]=g;f[a>>2]=g;f[a+8>>2]=g+(d<<2);b=f[b>>2]|0;c=(f[e>>2]|0)-b|0;if((c|0)<=0)return;Mg(g|0,b|0,c|0)|0;f[h>>2]=g+(c>>>2<<2);return}function Gj(a,c){a=a|0;c=c|0;var d=0,e=0,g=0,i=0,j=0,k=0,l=0;l=u;u=u+16|0;j=l;k=c&255;b[j>>0]=k;g=a+16|0;e=f[g>>2]|0;if(!e)if(!(Al(a)|0)){e=f[g>>2]|0;i=4}else d=-1;else i=4;do if((i|0)==4){i=a+20|0;g=f[i>>2]|0;if(g>>>0>>0?(d=c&255,(d|0)!=(b[a+75>>0]|0)):0){f[i>>2]=g+1;b[g>>0]=k;break}if((Na[f[a+36>>2]&31](a,j,1)|0)==1)d=h[j>>0]|0;else d=-1}while(0);u=l;return d|0}function Hj(a){a=a|0;var b=0,c=0,d=0,e=0;f[a>>2]=1620;b=f[a+20>>2]|0;if(b|0){d=a+24|0;c=f[d>>2]|0;if((c|0)!=(b|0))f[d>>2]=c+(~((c+-4-b|0)>>>2)<<2);ar(b)}e=a+8|0;b=f[e>>2]|0;if(!b)return;d=a+12|0;c=f[d>>2]|0;if((c|0)!=(b|0)){do{a=c+-4|0;f[d>>2]=a;c=f[a>>2]|0;f[a>>2]=0;if(c|0)Pa[f[(f[c>>2]|0)+4>>2]&127](c);c=f[d>>2]|0}while((c|0)!=(b|0));b=f[e>>2]|0}ar(b);return}function Ij(a,c){a=a|0;c=c|0;var d=0,e=0,g=0,h=0,i=0,j=0,k=0;h=a&255;d=a&255;if((f[c+76>>2]|0)>=0?(gr(c)|0)!=0:0){if((d|0)!=(b[c+75>>0]|0)?(j=c+20|0,g=f[j>>2]|0,g>>>0<(f[c+16>>2]|0)>>>0):0){f[j>>2]=g+1;b[g>>0]=h}else d=Gj(c,a)|0;fr(c)}else k=3;do if((k|0)==3){if((d|0)!=(b[c+75>>0]|0)?(i=c+20|0,e=f[i>>2]|0,e>>>0<(f[c+16>>2]|0)>>>0):0){f[i>>2]=e+1;b[e>>0]=h;break}d=Gj(c,a)|0}while(0);return d|0}function Jj(a,b,c){a=a|0;b=b|0;c=c|0;var d=0,e=0;f[a>>2]=0;d=a+4|0;f[d>>2]=0;f[a+8>>2]=0;if(!b)return;if(b>>>0>357913941){Lp(a);c=Ia(4)|0;Eq(c);sa(c|0,1344,125)}e=ln(b*12|0)|0;f[d>>2]=e;f[a>>2]=e;f[a+8>>2]=e+(b*12|0);a=e;do{Fj(a,c);a=(f[d>>2]|0)+12|0;f[d>>2]=a;b=b+-1|0}while((b|0)!=0);return}function Kj(a){a=a|0;var b=0,c=0,d=0;f[a>>2]=2392;b=f[a+96>>2]|0;if(b|0)ar(b);b=f[a+84>>2]|0;if(b|0)ar(b);b=f[a+72>>2]|0;if(b|0)ar(b);b=f[a+60>>2]|0;if(b|0)ar(b);f[a>>2]=1832;c=f[a+32>>2]|0;if(!c){ar(a);return}d=a+36|0;b=f[d>>2]|0;if((b|0)!=(c|0))f[d>>2]=b+(~((b+-4-c|0)>>>2)<<2);ar(c);ar(a);return}function Lj(a){a=a|0;var b=0,c=0,d=0;f[a>>2]=2056;b=f[a+96>>2]|0;if(b|0)ar(b);b=f[a+84>>2]|0;if(b|0)ar(b);b=f[a+72>>2]|0;if(b|0)ar(b);b=f[a+60>>2]|0;if(b|0)ar(b);f[a>>2]=1832;c=f[a+32>>2]|0;if(!c){ar(a);return}d=a+36|0;b=f[d>>2]|0;if((b|0)!=(c|0))f[d>>2]=b+(~((b+-4-c|0)>>>2)<<2);ar(c);ar(a);return}function Mj(a,b,c){a=a|0;b=b|0;c=c|0;var d=0,e=0,g=0;d=u;u=u+32|0;e=d+12|0;g=d;f[e>>2]=0;f[e+4>>2]=0;f[e+8>>2]=0;f[g>>2]=0;f[g+4>>2]=0;f[g+8>>2]=0;Pj(g,c,Xj(c)|0);a=fj(b,g,e)|0;Lo(g);Lo(e);u=d;return a|0}function Nj(a){a=a|0;var b=0,c=0,d=0;f[a>>2]=4752;b=a+100|0;c=a+4|0;d=c+96|0;do{f[c>>2]=0;c=c+4|0}while((c|0)<(d|0));f[b>>2]=-1;f[a+104>>2]=-1;f[a+108>>2]=-1;b=a+168|0;c=a+112|0;d=c+56|0;do{f[c>>2]=0;c=c+4|0}while((c|0)<(d|0));n[b>>2]=$(1.0);b=a+240|0;c=a+172|0;d=c+68|0;do{f[c>>2]=0;c=c+4|0}while((c|0)<(d|0));il(b);return}function Oj(a,b,c){a=a|0;b=b|0;c=c|0;var d=0,e=0,g=0;f[a>>2]=0;d=a+4|0;f[d>>2]=0;f[a+8>>2]=0;if(!b)return;if(b>>>0>1073741823){Lp(a);e=Ia(4)|0;Eq(e);sa(e|0,1344,125)}g=ln(b<<2)|0;f[d>>2]=g;f[a>>2]=g;e=g+(b<<2)|0;f[a+8>>2]=e;a=g;while(1){f[a>>2]=f[c>>2];b=b+-1|0;if(!b)break;else a=a+4|0}f[d>>2]=e;return}function Pj(a,c,d){a=a|0;c=c|0;d=d|0;var e=0,g=0,h=0,i=0;h=u;u=u+16|0;e=h;if(d>>>0<=4294967279)if(d>>>0<11)b[a+11>>0]=d;else g=5;else{Hp(a);g=5}if((g|0)==5){i=d+16&-16;g=ln(i)|0;f[a>>2]=g;f[a+8>>2]=i|-2147483648;f[a+4>>2]=d;a=g}So(a,c,d)|0;b[e>>0]=0;Qp(a+d|0,e);u=h;return}function Qj(a){a=a|0;var b=0,c=0;f[a>>2]=2392;b=f[a+96>>2]|0;if(b|0)ar(b);b=f[a+84>>2]|0;if(b|0)ar(b);b=f[a+72>>2]|0;if(b|0)ar(b);b=f[a+60>>2]|0;if(b|0)ar(b);f[a>>2]=1832;c=f[a+32>>2]|0;if(!c)return;a=a+36|0;b=f[a>>2]|0;if((b|0)!=(c|0))f[a>>2]=b+(~((b+-4-c|0)>>>2)<<2);ar(c);return}function Rj(a){a=a|0;var b=0,c=0,d=0,e=0,g=0,i=0,j=0;b=f[a+32>>2]|0;j=b+8|0;i=f[j>>2]|0;j=f[j+4>>2]|0;g=b+16|0;c=g;e=f[c>>2]|0;c=Ho(e|0,f[c+4>>2]|0,4,0)|0;d=I;if((j|0)<(d|0)|(j|0)==(d|0)&i>>>0>>0){j=0;return j|0}j=(f[b>>2]|0)+e|0;j=h[j>>0]|h[j+1>>0]<<8|h[j+2>>0]<<16|h[j+3>>0]<<24;i=g;f[i>>2]=c;f[i+4>>2]=d;f[(f[a+4>>2]|0)+68>>2]=j;j=1;return j|0}function Sj(a,b){a=a|0;b=b|0;var c=0,d=0,e=0,g=0,h=0,i=0,j=0;e=a+8|0;c=f[a>>2]|0;if((f[e>>2]|0)-c>>2>>>0>=b>>>0)return;d=a+4|0;if(b>>>0>1073741823){a=Ia(4)|0;Eq(a);sa(a|0,1344,125)}j=(f[d>>2]|0)-c|0;h=j>>2;i=ln(b<<2)|0;g=i+(h<<2)|0;h=g+(0-h<<2)|0;if((j|0)>0)Mg(h|0,c|0,j|0)|0;f[a>>2]=h;f[d>>2]=g;f[e>>2]=i+(b<<2);if(!c)return;ar(c);return}function Tj(a){a=a|0;var c=0,d=0,e=0,f=0,g=0;while(1){c=b[a>>0]|0;d=c<<24>>24;e=a+1|0;if(!(sq(d)|0))break;else a=e}switch(d|0){case 45:{a=1;f=5;break}case 43:{a=0;f=5;break}default:{g=0;e=a}}if((f|0)==5){c=b[e>>0]|0;g=a}a=(c<<24>>24)+-48|0;if(a>>>0<10){d=a;a=0;c=e;do{c=c+1|0;a=(a*10|0)-d|0;d=(b[c>>0]|0)+-48|0}while(d>>>0<10)}else a=0;return (g|0?a:0-a|0)|0}function Uj(a){a=a|0;var b=0,c=0;f[a>>2]=2056;b=f[a+96>>2]|0;if(b|0)ar(b);b=f[a+84>>2]|0;if(b|0)ar(b);b=f[a+72>>2]|0;if(b|0)ar(b);b=f[a+60>>2]|0;if(b|0)ar(b);f[a>>2]=1832;c=f[a+32>>2]|0;if(!c)return;a=a+36|0;b=f[a>>2]|0;if((b|0)!=(c|0))f[a>>2]=b+(~((b+-4-c|0)>>>2)<<2);ar(c);return}function Vj(a,c,d){a=a|0;c=c|0;d=d|0;c=Kg(a,c)|0;if((c|0)==(a+4|0)){a=-1;c=(a|0)==-1;a=(a|0)!=0;d=c?d:a;return d|0}c=c+28|0;if((b[c+11>>0]|0)<0)c=f[c>>2]|0;a=Tj(c)|0;c=(a|0)==-1;a=(a|0)!=0;d=c?d:a;return d|0}function Wj(a){a=a|0;var b=0,c=0,d=0;if(!(f[a+68>>2]|0)){d=0;return d|0}d=a+8|0;c=a+12|0;a=f[d>>2]|0;if(((f[c>>2]|0)-a|0)>0)b=0;else{d=1;return d|0}while(1){a=f[a+(b<<2)>>2]|0;b=b+1|0;if(!(Jl(a,a)|0)){a=0;b=5;break}a=f[d>>2]|0;if((b|0)>=((f[c>>2]|0)-a>>2|0)){a=1;b=5;break}}if((b|0)==5)return a|0;return 0}function Xj(a){a=a|0;var c=0,d=0,e=0;e=a;a:do if(!(e&3)){c=a;d=4}else{c=e;while(1){if(!(b[a>>0]|0))break a;a=a+1|0;c=a;if(!(c&3)){c=a;d=4;break}}}while(0);if((d|0)==4){while(1){a=f[c>>2]|0;if(!((a&-2139062144^-2139062144)&a+-16843009))c=c+4|0;else break}if((a&255)<<24>>24)do c=c+1|0;while((b[c>>0]|0)!=0)}return c-e|0}function Yj(a,b){a=a|0;b=b|0;var c=0,d=0,e=0;c=u;u=u+16|0;e=c;d=c+4|0;f[e>>2]=b;f[d>>2]=0;f[d+4>>2]=0;f[d+8>>2]=0;Pj(d,19295,24);Ji(id(a,e)|0,d,1);Lo(d);u=c;return}function Zj(a,b){a=a|0;b=b|0;var c=0,d=0,e=0,g=0;e=Sa[f[(f[a>>2]|0)+24>>2]&255](a)|0;if((e|0)<=0){b=1;return b|0}d=a+36|0;c=a+48|0;a=0;while(1){g=f[(f[d>>2]|0)+(a<<2)>>2]|0;a=a+1|0;if(!(Na[f[(f[g>>2]|0)+20>>2]&31](g,c,b)|0)){a=0;c=5;break}if((a|0)>=(e|0)){a=1;c=5;break}}if((c|0)==5)return a|0;return 0}function _j(a){a=a|0;var b=0,c=0,d=0;f[a>>2]=4636;b=f[a+64>>2]|0;if(b|0){d=a+68|0;c=f[d>>2]|0;if((c|0)!=(b|0))f[d>>2]=c+(~((c+-4-b|0)>>>2)<<2);ar(b)}f[a+12>>2]=4660;b=f[a+32>>2]|0;if(b|0)ar(b);b=f[a+20>>2]|0;if(!b){ar(a);return}ar(b);ar(a);return}function $j(a,b){a=a|0;b=b|0;var c=0,d=0,e=0;c=f[b>>2]|0;if(!c){a=0;return a|0}e=a+44|0;d=f[e>>2]|0;if(d>>>0<(f[a+48>>2]|0)>>>0){f[b>>2]=0;f[d>>2]=c;f[e>>2]=(f[e>>2]|0)+4;a=1;return a|0}else{wg(a+40|0,b);a=1;return a|0}return 0}function ak(a,b){a=a|0;b=b|0;var c=0,d=0,e=0,g=0;e=Sa[f[(f[a>>2]|0)+24>>2]&255](a)|0;if((e|0)<=0){b=1;return b|0}d=a+36|0;c=a+48|0;a=0;while(1){g=f[(f[d>>2]|0)+(a<<2)>>2]|0;a=a+1|0;if(!(Na[f[(f[g>>2]|0)+16>>2]&31](g,c,b)|0)){a=0;c=5;break}if((a|0)>=(e|0)){a=1;c=5;break}}if((c|0)==5)return a|0;return 0}function bk(a,b){a=+a;b=b|0;var c=0,d=0,e=0;p[s>>3]=a;c=f[s>>2]|0;d=f[s+4>>2]|0;e=Tn(c|0,d|0,52)|0;switch(e&2047){case 0:{if(a!=0.0){a=+bk(a*18446744073709551616.0,b);c=(f[b>>2]|0)+-64|0}else c=0;f[b>>2]=c;break}case 2047:break;default:{f[b>>2]=(e&2047)+-1022;f[s>>2]=c;f[s+4>>2]=d&-2146435073|1071644672;a=+p[s>>3]}}return +a}function ck(a){a=a|0;var b=0,c=0,d=0;f[a>>2]=4728;b=f[a+64>>2]|0;if(b|0){d=a+68|0;c=f[d>>2]|0;if((c|0)!=(b|0))f[d>>2]=c+(~((c+-4-b|0)>>>2)<<2);ar(b)}f[a+12>>2]=4708;b=f[a+32>>2]|0;if(b|0)ar(b);b=f[a+20>>2]|0;if(!b){ar(a);return}ar(b);ar(a);return}function dk(a){a=a|0;var b=0,c=0,d=0;f[a>>2]=2448;b=f[a+76>>2]|0;if(b|0)ar(b);d=a+68|0;b=f[d>>2]|0;f[d>>2]=0;if(b|0)_q(b);f[a>>2]=1832;b=f[a+32>>2]|0;if(!b){ar(a);return}d=a+36|0;c=f[d>>2]|0;if((c|0)!=(b|0))f[d>>2]=c+(~((c+-4-b|0)>>>2)<<2);ar(b);ar(a);return}function ek(a){a=a|0;if(!(f[a+44>>2]|0)){a=0;return a|0}if(!(f[a+48>>2]|0)){a=0;return a|0}if(!(f[a+28>>2]|0)){a=0;return a|0}if(!(f[a+32>>2]|0)){a=0;return a|0}if(!(f[a+36>>2]|0)){a=0;return a|0}if(!(f[a+40>>2]|0)){a=0;return a|0}a=(f[a+68>>2]|0)!=-1;return a|0}function fk(a,b,c){a=a|0;b=b|0;c=c|0;var d=0.0,e=0,g=0;a=u;u=u+32|0;g=a;e=a+8|0;p[g>>3]=0.0;f[e>>2]=0;f[e+4>>2]=0;f[e+8>>2]=0;Pj(e,c,Xj(c)|0);Fh(b,e,g)|0;d=+p[g>>3];Lo(e);u=a;return +d}function gk(a,c){a=a|0;c=c|0;var d=0,e=0;d=0;while(1){if((h[19854+d>>0]|0)==(a|0)){e=2;break}d=d+1|0;if((d|0)==87){d=87;a=19942;e=5;break}}if((e|0)==2)if(!d)d=19942;else{a=19942;e=5}if((e|0)==5)while(1){do{e=a;a=a+1|0}while((b[e>>0]|0)!=0);d=d+-1|0;if(!d){d=a;break}else e=5}return wq(d,f[c+20>>2]|0)|0}function hk(a){a=a|0;var b=0,c=0,d=0;f[a>>2]=4636;b=f[a+64>>2]|0;if(b|0){d=a+68|0;c=f[d>>2]|0;if((c|0)!=(b|0))f[d>>2]=c+(~((c+-4-b|0)>>>2)<<2);ar(b)}f[a+12>>2]=4660;b=f[a+32>>2]|0;if(b|0)ar(b);b=f[a+20>>2]|0;if(!b)return;ar(b);return}function ik(a){a=a|0;var b=0,c=0,d=0;f[a>>2]=2112;b=f[a+76>>2]|0;if(b|0)ar(b);d=a+68|0;b=f[d>>2]|0;f[d>>2]=0;if(b|0)_q(b);f[a>>2]=1832;b=f[a+32>>2]|0;if(!b){ar(a);return}d=a+36|0;c=f[d>>2]|0;if((c|0)!=(b|0))f[d>>2]=c+(~((c+-4-b|0)>>>2)<<2);ar(b);ar(a);return}function jk(a){a=a|0;if(!(f[a+60>>2]|0)){a=0;return a|0}if(!(f[a+64>>2]|0)){a=0;return a|0}if(!(f[a+44>>2]|0)){a=0;return a|0}if(!(f[a+48>>2]|0)){a=0;return a|0}if(!(f[a+52>>2]|0)){a=0;return a|0}if(!(f[a+56>>2]|0)){a=0;return a|0}a=(f[a+84>>2]|0)!=-1;return a|0}function kk(a,b,c){a=a|0;b=b|0;c=c|0;var d=0,e=0;d=u;u=u+16|0;a=d+12|0;e=d;f[a>>2]=0;f[e>>2]=0;f[e+4>>2]=0;f[e+8>>2]=0;Pj(e,c,Xj(c)|0);wj(b,e,a)|0;a=f[a>>2]|0;Lo(e);u=d;return a|0}function lk(a){a=a|0;var b=0,c=0,d=0;f[a>>2]=4728;b=f[a+64>>2]|0;if(b|0){d=a+68|0;c=f[d>>2]|0;if((c|0)!=(b|0))f[d>>2]=c+(~((c+-4-b|0)>>>2)<<2);ar(b)}f[a+12>>2]=4708;b=f[a+32>>2]|0;if(b|0)ar(b);b=f[a+20>>2]|0;if(!b)return;ar(b);return}function mk(a,b){a=a|0;b=b|0;var c=0,d=0,e=0;c=ln(60)|0;d=c;e=d+60|0;do{f[d>>2]=0;d=d+4|0}while((d|0)<(e|0));e=vh(c,b)|0;f[a>>2]=e?c:0;a=e?0:c;if(e)return;sj(a);ar(a);return}function nk(a){a=a|0;if(!a)return;Lo(a+28|0);kj(a+12|0,f[a+16>>2]|0);tj(a,f[a+4>>2]|0);ar(a);return}function ok(a,b,c){a=a|0;b=b|0;c=c|0;switch(c<<24>>24){case 0:{c=ln(20)|0;fo(c);break}case 1:{c=ln(24)|0;Go(c);break}case 2:{c=ln(36)|0;sn(c);break}case 3:{c=ln(28)|0;zo(c);break}default:c=0}f[a>>2]=c;return}function pk(a,b,c,d){a=a|0;b=b|0;c=c|0;d=d|0;var e=0,f=0,g=0,h=0,i=0,j=0;j=b>>31|((b|0)<0?-1:0)<<1;i=((b|0)<0?-1:0)>>31|((b|0)<0?-1:0)<<1;f=d>>31|((d|0)<0?-1:0)<<1;e=((d|0)<0?-1:0)>>31|((d|0)<0?-1:0)<<1;h=Xn(j^a|0,i^b|0,j|0,i|0)|0;g=I;a=f^j;b=e^i;return Xn((nd(h,g,Xn(f^c|0,e^d|0,f|0,e|0)|0,I,0)|0)^a|0,I^b|0,a|0,b|0)|0}function qk(a,c){a=a|0;c=c|0;var d=0,e=0;f[c>>2]=2;e=a+4|0;d=c+8|0;a=f[d>>2]|0;c=(f[c+12>>2]|0)-a|0;if(c>>>0<4294967292){Gk(d,c+4|0,0);a=f[d>>2]|0}c=a+c|0;e=h[e>>0]|h[e+1>>0]<<8|h[e+2>>0]<<16|h[e+3>>0]<<24;b[c>>0]=e;b[c+1>>0]=e>>8;b[c+2>>0]=e>>16;b[c+3>>0]=e>>24;return}function rk(a,b,c){a=a|0;b=b|0;c=c|0;var d=0,e=0;d=u;u=u+32|0;a=d;e=d+8|0;p[a>>3]=0.0;f[e>>2]=0;f[e+4>>2]=0;f[e+8>>2]=0;Pj(e,c,Xj(c)|0);a=Fh(b,e,a)|0;Lo(e);u=d;return a|0}function sk(a){a=a|0;var b=0,c=0;f[a>>2]=2448;b=f[a+76>>2]|0;if(b|0)ar(b);c=a+68|0;b=f[c>>2]|0;f[c>>2]=0;if(b|0)_q(b);f[a>>2]=1832;c=f[a+32>>2]|0;if(!c)return;a=a+36|0;b=f[a>>2]|0;if((b|0)!=(c|0))f[a>>2]=b+(~((b+-4-c|0)>>>2)<<2);ar(c);return}function tk(a,c,d){a=a|0;c=c|0;d=d|0;var e=0;if(c>>>0>0|(c|0)==0&a>>>0>4294967295)while(1){e=$m(a|0,c|0,10,0)|0;d=d+-1|0;b[d>>0]=e&255|48;e=a;a=Dp(a|0,c|0,10,0)|0;if(!(c>>>0>9|(c|0)==9&e>>>0>4294967295))break;else c=I}if(a)while(1){d=d+-1|0;b[d>>0]=(a>>>0)%10|0|48;if(a>>>0<10)break;else a=(a>>>0)/10|0}return d|0}function uk(a,b,c){a=a|0;b=b|0;c=c|0;var d=0,e=0;d=u;u=u+16|0;a=d+12|0;e=d;f[a>>2]=0;f[e>>2]=0;f[e+4>>2]=0;f[e+8>>2]=0;Pj(e,c,Xj(c)|0);a=wj(b,e,a)|0;Lo(e);u=d;return a|0}function vk(a){a=a|0;var b=0,c=0,d=0;f[a>>2]=1524;b=f[a+84>>2]|0;if(b|0){d=a+88|0;c=f[d>>2]|0;if((c|0)!=(b|0))f[d>>2]=c+(~(((c+-12-b|0)>>>0)/12|0)*12|0);ar(b)}b=f[a+72>>2]|0;if(!b){$g(a);ar(a);return}d=a+76|0;c=f[d>>2]|0;if((c|0)!=(b|0))f[d>>2]=c+(~((c+-4-b|0)>>>2)<<2);ar(b);$g(a);ar(a);return}function wk(a,b,c){a=a|0;b=b|0;c=c|0;var d=0;d=f[a>>2]|0;if((d|0)<0){c=-1073741824;return c|0}if((f[(f[b>>2]|0)+(d<<2)>>2]|0)==-1073741824){c=-1073741824;return c|0}b=(d>>>0)/3|0;a=f[c+84>>2]|0;if((b|0)>=(((f[c+88>>2]|0)-a|0)/12|0|0))Ga(18176,18147,64,18171);c=f[a+(b*12|0)+(((d>>>0)%3|0)<<2)>>2]|0;return c|0}function xk(a,c,d,e){a=a|0;c=c|0;d=d|0;e=e|0;var g=0,h=0,i=0;g=c+16|0;a=f[g>>2]|0;h=c+36|0;i=c+24|0;do if(a){if((a|0)!=(d|0)){f[h>>2]=(f[h>>2]|0)+1;f[i>>2]=2;b[c+54>>0]=1;break}if((f[i>>2]|0)==2)f[i>>2]=e}else{f[g>>2]=d;f[i>>2]=e;f[h>>2]=1}while(0);return}function yk(a,b){a=a|0;b=b|0;var c=0,d=0,e=0,g=0;Hc(a,b);if((b|0)<=-1)return;g=a+76|0;c=f[g>>2]|0;a=f[a+72>>2]|0;if((c-a>>2|0)<=(b|0))return;d=a+(b<<2)|0;a=d+4|0;b=c-a|0;e=b>>2;if(e){rm(d|0,a|0,b|0)|0;c=f[g>>2]|0}a=d+(e<<2)|0;if((c|0)==(a|0))return;f[g>>2]=c+(~((c+-4-a|0)>>>2)<<2);return}function zk(a){a=a|0;var b=0,c=0;f[a>>2]=2112;b=f[a+76>>2]|0;if(b|0)ar(b);c=a+68|0;b=f[c>>2]|0;f[c>>2]=0;if(b|0)_q(b);f[a>>2]=1832;c=f[a+32>>2]|0;if(!c)return;a=a+36|0;b=f[a>>2]|0;if((b|0)!=(c|0))f[a>>2]=b+(~((b+-4-c|0)>>>2)<<2);ar(c);return}function Ak(a,b,c,d,e,g){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;g=g|0;var h=0,i=0,j=0;f[a>>2]=b;j=b+16|0;h=f[j+4>>2]|0;i=a+8|0;f[i>>2]=f[j>>2];f[i+4>>2]=h;i=b+24|0;h=f[i+4>>2]|0;b=a+16|0;f[b>>2]=f[i>>2];f[b+4>>2]=h;b=a+40|0;f[b>>2]=c;f[b+4>>2]=d;a=a+48|0;f[a>>2]=e;f[a+4>>2]=g;return}function Bk(a,b,c){a=a|0;b=b|0;c=c|0;if(((h[(f[a+4>>2]|0)+36>>0]|0)<<8&65535)<512?!(Sa[f[(f[a>>2]|0)+52>>2]&255](a)|0):0){a=0;return a|0}a=xd(a,b,c)|0;return a|0}function Ck(a,b,c){a=a|0;b=b|0;c=c|0;var d=0;if((b|0)<=-1)Ga(18122,18147,63,18171);d=f[a+84>>2]|0;if((((f[a+88>>2]|0)-d|0)/12|0|0)>(b|0)){a=d+(b*12|0)|0;Bf(c,a,a+12|0);return 1}else Ga(18176,18147,64,18171);return 0}function Dk(a,b){a=a|0;b=b|0;var c=0,d=0,e=0;f[a>>2]=0;c=a+4|0;f[c>>2]=0;f[a+8>>2]=0;if(!b)return;if(b>>>0>1073741823){Lp(a);a=Ia(4)|0;Eq(a);sa(a|0,1344,125)}d=b<<2;e=ln(d)|0;f[a>>2]=e;b=e+(b<<2)|0;f[a+8>>2]=b;ej(e|0,0,d|0)|0;f[c>>2]=b;return}function Ek(a){a=a|0;var b=0,c=0,d=0;f[a>>2]=1524;b=f[a+84>>2]|0;if(b|0){d=a+88|0;c=f[d>>2]|0;if((c|0)!=(b|0))f[d>>2]=c+(~(((c+-12-b|0)>>>0)/12|0)*12|0);ar(b)}b=f[a+72>>2]|0;if(!b){$g(a);return}d=a+76|0;c=f[d>>2]|0;if((c|0)!=(b|0))f[d>>2]=c+(~((c+-4-b|0)>>>2)<<2);ar(b);$g(a);return}function Fk(a,b,c){a=a|0;b=b|0;c=c|0;if(!(yn(a,b,c)|0)){c=0;return c|0}b=f[b+4>>2]|0;if((c|0)<=-1)Ga(17188,17204,71,17242);a=f[b+8>>2]|0;if(((f[b+12>>2]|0)-a>>2|0)<=(c|0))Ga(17252,17204,72,17242);c=(f[(f[a+(c<<2)>>2]|0)+28>>2]|0)==9;return c|0}function Gk(a,b,c){a=a|0;b=b|0;c=c|0;var d=0,e=0,g=0,h=0;e=a+4|0;d=f[e>>2]|0;c=f[a>>2]|0;g=d-c|0;if(b>>>0<=g>>>0){if(b>>>0>>0?(h=c+b|0,(d|0)!=(h|0)):0)f[e>>2]=h}else vi(a,b-g|0);a=a+24|0;h=a;h=Ho(f[h>>2]|0,f[h+4>>2]|0,1,0)|0;f[a>>2]=h;f[a+4>>2]=I;return}function Hk(a){a=a|0;var b=0,c=0,d=0;f[a>>2]=2504;b=f[a+76>>2]|0;if(b|0)ar(b);f[a>>2]=1832;b=f[a+32>>2]|0;if(!b){ar(a);return}d=a+36|0;c=f[d>>2]|0;if((c|0)!=(b|0))f[d>>2]=c+(~((c+-4-b|0)>>>2)<<2);ar(b);ar(a);return}function Ik(a,b,c){a=a|0;b=b|0;c=c|0;var d=0,e=0;d=u;u=u+16|0;e=d;Sf(e,a,b,c);c=a+24|0;f[c>>2]=f[e>>2];b=e+4|0;em(a+28|0,b)|0;Lo(b);u=d;return c|0}function Jk(a,b,c){a=a|0;b=b|0;c=c|0;var d=0;b=f[b+4>>2]|0;if(!b){c=0;return c|0}a=f[b+40>>2]|0;d=f[b+44>>2]|0;a:do if((a|0)==(d|0))b=0;else while(1){b=f[a>>2]|0;a=a+4|0;if((f[b+40>>2]|0)==(c|0))break a;if((a|0)==(d|0)){b=0;break}}while(0);c=b;return c|0}function Kk(a){a=a|0;var b=0,c=0,d=0;f[a>>2]=2168;b=f[a+76>>2]|0;if(b|0)ar(b);f[a>>2]=1832;b=f[a+32>>2]|0;if(!b){ar(a);return}d=a+36|0;c=f[d>>2]|0;if((c|0)!=(b|0))f[d>>2]=c+(~((c+-4-b|0)>>>2)<<2);ar(b);ar(a);return}function Lk(a,b){a=a|0;b=b|0;var c=0,d=0;d=ln(40)|0;f[d>>2]=-1;wn(d+8|0);Qa[f[(f[a>>2]|0)+16>>2]&7](a,d);c=b+88|0;b=f[c>>2]|0;f[c>>2]=d;if(!b)return 1;a=f[b+8>>2]|0;if(a|0){c=b+12|0;if((f[c>>2]|0)!=(a|0))f[c>>2]=a;ar(a)}ar(b);return 1}function Mk(a){a=a|0;var b=0;f[a>>2]=3288;b=f[a+80>>2]|0;if(b|0)ar(b);b=f[a+68>>2]|0;if(b|0)ar(b);b=f[a+56>>2]|0;if(b|0)ar(b);b=f[a+44>>2]|0;if(!b){ar(a);return}ar(b);ar(a);return}function Nk(a){a=a|0;var b=0,c=0,d=0;f[a>>2]=1564;b=f[a+16>>2]|0;if(b|0){d=a+20|0;c=f[d>>2]|0;if((c|0)!=(b|0))f[d>>2]=c+(~((c+-4-b|0)>>>2)<<2);ar(b)}b=f[a+4>>2]|0;if(!b){ar(a);return}d=a+8|0;c=f[d>>2]|0;if((c|0)!=(b|0))f[d>>2]=c+(~((c+-4-b|0)>>>2)<<2);ar(b);ar(a);return}function Ok(a,b,c){a=a|0;b=b|0;c=c|0;var d=0,e=0;d=u;u=u+16|0;e=d;Tf(e,a,b,c);c=a+24|0;f[c>>2]=f[e>>2];b=e+4|0;em(a+28|0,b)|0;Lo(b);u=d;return c|0}function Pk(a){a=a|0;var b=0;f[a>>2]=2952;b=f[a+80>>2]|0;if(b|0)ar(b);b=f[a+68>>2]|0;if(b|0)ar(b);b=f[a+56>>2]|0;if(b|0)ar(b);b=f[a+44>>2]|0;if(!b){ar(a);return}ar(b);ar(a);return}function Qk(a){a=a|0;var b=0;f[a>>2]=4016;b=f[a+80>>2]|0;if(b|0)ar(b);b=f[a+68>>2]|0;if(b|0)ar(b);b=f[a+56>>2]|0;if(b|0)ar(b);b=f[a+44>>2]|0;if(!b){ar(a);return}ar(b);ar(a);return}function Rk(a){a=a|0;var b=0,c=0,d=0;b=f[a+8>>2]|0;c=f[a+12>>2]|0;if((b|0)==(c|0)){c=1;return c|0}a=a+32|0;while(1){d=f[b>>2]|0;b=b+4|0;if(!(Wa[f[(f[d>>2]|0)+16>>2]&127](d,f[a>>2]|0)|0)){b=0;a=5;break}if((b|0)==(c|0)){b=1;a=5;break}}if((a|0)==5)return b|0;return 0}function Sk(a,b,c,d,e,g){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;g=g|0;if(wp(a,f[b+8>>2]|0,g)|0)gj(0,b,c,d,e);else{a=f[a+8>>2]|0;Va[f[(f[a>>2]|0)+20>>2]&3](a,b,c,d,e,g)}return}function Tk(a){a=a|0;var b=0,c=0,d=0,e=0,g=0;c=h[a+12>>0]|0;d=a+8|0;b=f[d>>2]|0;if(b>>>0<4096){e=f[a>>2]|0;g=a+4|0;a=(f[g>>2]|0)+-1|0;f[g>>2]=a;b=h[e+a>>0]|0|b<<8;f[d>>2]=b}a=b&255;c=0-c&255;e=X(b>>>8,c)|0;g=a>>>0>>0;f[d>>2]=g?e+a|0:b-c-e|0;return g|0}function Uk(a){a=a|0;var b=0,c=0;f[a>>2]=2504;b=f[a+76>>2]|0;if(b|0)ar(b);f[a>>2]=1832;c=f[a+32>>2]|0;if(!c)return;a=a+36|0;b=f[a>>2]|0;if((b|0)!=(c|0))f[a>>2]=b+(~((b+-4-c|0)>>>2)<<2);ar(c);return}function Vk(a){a=a|0;var b=0,c=0,d=0;f[a>>2]=2560;fr(a+100|0);f[a>>2]=1832;b=f[a+32>>2]|0;if(!b){ar(a);return}d=a+36|0;c=f[d>>2]|0;if((c|0)!=(b|0))f[d>>2]=c+(~((c+-4-b|0)>>>2)<<2);ar(b);ar(a);return}function Wk(a){a=a|0;var b=0,c=0;f[a>>2]=2616;c=a+28|0;b=f[c>>2]|0;f[c>>2]=0;if(b|0)_q(b);f[a>>2]=1772;c=a+20|0;b=f[c>>2]|0;f[c>>2]=0;if(!b){jj(a);ar(a);return}Pa[f[(f[b>>2]|0)+4>>2]&127](b);jj(a);ar(a);return}function Xk(a){a=a|0;var b=0;f[a>>2]=3680;b=f[a+80>>2]|0;if(b|0)ar(b);b=f[a+68>>2]|0;if(b|0)ar(b);b=f[a+56>>2]|0;if(b|0)ar(b);b=f[a+44>>2]|0;if(!b){ar(a);return}ar(b);ar(a);return}function Yk(a){a=a|0;var b=0;f[a>>2]=3288;b=f[a+80>>2]|0;if(b|0)ar(b);b=f[a+68>>2]|0;if(b|0)ar(b);b=f[a+56>>2]|0;if(b|0)ar(b);b=f[a+44>>2]|0;if(!b)return;ar(b);return}function Zk(a){a=a|0;var b=0,c=0;f[a>>2]=2168;b=f[a+76>>2]|0;if(b|0)ar(b);f[a>>2]=1832;c=f[a+32>>2]|0;if(!c)return;a=a+36|0;b=f[a>>2]|0;if((b|0)!=(c|0))f[a>>2]=b+(~((b+-4-c|0)>>>2)<<2);ar(c);return}function _k(a){a=a|0;var b=0,c=0,d=0;f[a>>2]=2224;fr(a+100|0);f[a>>2]=1832;b=f[a+32>>2]|0;if(!b){ar(a);return}d=a+36|0;c=f[d>>2]|0;if((c|0)!=(b|0))f[d>>2]=c+(~((c+-4-b|0)>>>2)<<2);ar(b);ar(a);return}function $k(a){a=a|0;var b=0,c=0,d=0;f[a>>2]=1564;b=f[a+16>>2]|0;if(b|0){d=a+20|0;c=f[d>>2]|0;if((c|0)!=(b|0))f[d>>2]=c+(~((c+-4-b|0)>>>2)<<2);ar(b)}d=f[a+4>>2]|0;if(!d)return;c=a+8|0;b=f[c>>2]|0;if((b|0)!=(d|0))f[c>>2]=b+(~((b+-4-d|0)>>>2)<<2);ar(d);return}function al(a,b,c,d,e){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;var f=0,g=0;g=u;u=u+256|0;f=g;if((c|0)>(d|0)&(e&73728|0)==0){e=c-d|0;ej(f|0,b|0,(e>>>0<256?e:256)|0)|0;if(e>>>0>255){b=c-d|0;do{ip(a,f,256);e=e+-256|0}while(e>>>0>255);e=b&255}ip(a,f,e)}u=g;return}function bl(a){a=a|0;var b=0;f[a>>2]=2952;b=f[a+80>>2]|0;if(b|0)ar(b);b=f[a+68>>2]|0;if(b|0)ar(b);b=f[a+56>>2]|0;if(b|0)ar(b);b=f[a+44>>2]|0;if(!b)return;ar(b);return}function cl(a){a=a|0;var b=0;f[a>>2]=4016;b=f[a+80>>2]|0;if(b|0)ar(b);b=f[a+68>>2]|0;if(b|0)ar(b);b=f[a+56>>2]|0;if(b|0)ar(b);b=f[a+44>>2]|0;if(!b)return;ar(b);return}function dl(a){a=a|0;var b=0,c=0;f[a>>2]=2616;c=a+28|0;b=f[c>>2]|0;f[c>>2]=0;if(b|0)_q(b);f[a>>2]=1772;c=a+20|0;b=f[c>>2]|0;f[c>>2]=0;if(!b){jj(a);return}Pa[f[(f[b>>2]|0)+4>>2]&127](b);jj(a);return}function el(a,b,c){a=a|0;b=b|0;c=c|0;var d=0;f[a+4>>2]=b;b=f[b+4>>2]|0;if((c|0)<=-1)Ga(17188,17204,71,17242);d=f[b+8>>2]|0;if(((f[b+12>>2]|0)-d>>2|0)>(c|0)){f[a+8>>2]=f[d+(c<<2)>>2];f[a+12>>2]=c;return 1}else Ga(17252,17204,72,17242);return 0}function fl(a){a=a|0;var b=0;f[a>>2]=3680;b=f[a+80>>2]|0;if(b|0)ar(b);b=f[a+68>>2]|0;if(b|0)ar(b);b=f[a+56>>2]|0;if(b|0)ar(b);b=f[a+44>>2]|0;if(!b)return;ar(b);return}function gl(a){a=a|0;var b=0,c=0;f[a>>2]=2560;fr(a+100|0);f[a>>2]=1832;c=f[a+32>>2]|0;if(!c)return;b=a+36|0;a=f[b>>2]|0;if((a|0)!=(c|0))f[b>>2]=a+(~((a+-4-c|0)>>>2)<<2);ar(c);return}function hl(a,b){a=a|0;b=b|0;var c=0;if((b|0)<0){a=0;return a|0}c=f[a+4>>2]|0;if(((f[c+12>>2]|0)-(f[c+8>>2]|0)>>2|0)<=(b|0)){c=0;return c|0}c=f[(f[a+8>>2]|0)+(f[(f[a+20>>2]|0)+(b<<2)>>2]<<2)>>2]|0;c=Wa[f[(f[c>>2]|0)+32>>2]&127](c,b)|0;return c|0}function il(a){a=a|0;var b=0;Ym(a);Ym(a+40|0);b=a+80|0;f[b>>2]=0;f[b+4>>2]=0;f[b+8>>2]=0;f[b+12>>2]=0;f[b+16>>2]=0;f[b+20>>2]=0;f[b+24>>2]=0;f[b+28>>2]=0;xq(a+112|0);f[a+128>>2]=-1;f[a+132>>2]=-1;return}function jl(a){a=a|0;var b=0,c=0,d=0,e=0,g=0;c=f[a>>2]|0;d=a+4|0;g=f[d>>2]|0;e=c;b=g+(~((g+-4-e|0)>>>2)<<2)|0;if((g|0)==(c|0))b=c;else f[d>>2]=b;f[a+16>>2]=0;f[a+12>>2]=b;if(!c)return;if((b|0)!=(c|0))f[d>>2]=b+(~((b+-4-e|0)>>>2)<<2);ar(c);return}function kl(a,b,c,d){a=a|0;b=b|0;c=c|0;d=d|0;if(wp(a,f[b+8>>2]|0,0)|0)xk(0,b,c,d);else{a=f[a+8>>2]|0;Xa[f[(f[a>>2]|0)+28>>2]&7](a,b,c,d)}return}function ll(a){a=a|0;var b=0,c=0;f[a>>2]=2224;fr(a+100|0);f[a>>2]=1832;c=f[a+32>>2]|0;if(!c)return;b=a+36|0;a=f[b>>2]|0;if((a|0)!=(c|0))f[b>>2]=a+(~((a+-4-c|0)>>>2)<<2);ar(c);return}function ml(a,c){a=a|0;c=c|0;f[a>>2]=0;f[a+4>>2]=0;f[a+8>>2]=0;if((b[c+11>>0]|0)<0)Pj(a,f[c>>2]|0,f[c+4>>2]|0);else{f[a>>2]=f[c>>2];f[a+4>>2]=f[c+4>>2];f[a+8>>2]=f[c+8>>2]}return}function nl(a,b){a=a|0;b=b|0;var c=0;c=f[a+4>>2]|0;if(c|0?((h[c+36>>0]|0)<<8&65535)<512:0){c=1;return c|0}c=Wa[f[(f[a>>2]|0)+48>>2]&127](a,(f[b+4>>2]|0)-(f[b>>2]|0)>>2)|0;return c|0}function ol(a,b,c){a=a|0;b=b|0;c=c|0;var d=0,e=0,g=0;e=u;u=u+32|0;g=e;d=e+20|0;f[g>>2]=f[a+60>>2];f[g+4>>2]=0;f[g+8>>2]=b;f[g+12>>2]=d;f[g+16>>2]=c;if((Ro(Da(140,g|0)|0)|0)<0){f[d>>2]=-1;a=-1}else a=f[d>>2]|0;u=e;return a|0}function pl(a,b){a=a|0;b=b|0;var c=0;if((b|0)==-1|(b|0)>3){a=0;return a|0}c=f[a+20+(b*12|0)>>2]|0;if(((f[a+20+(b*12|0)+4>>2]|0)-c|0)<=0){a=0;return a|0}c=f[c>>2]|0;if((c|0)==-1){a=0;return a|0}a=f[(f[a+8>>2]|0)+(c<<2)>>2]|0;return a|0}function ql(a,b){a=a|0;b=b|0;var c=0;Sm(a);f[a>>2]=4240;c=a+36|0;f[c>>2]=0;f[c+4>>2]=0;f[c+8>>2]=0;f[c+12>>2]=0;f[c+16>>2]=0;f[c+20>>2]=0;c=f[b>>2]|0;f[b>>2]=0;f[a+60>>2]=c;return}function rl(a,c,d){a=a|0;c=c|0;d=d|0;var e=0,f=0;a:do if(!d)a=0;else{while(1){e=b[a>>0]|0;f=b[c>>0]|0;if(e<<24>>24!=f<<24>>24)break;d=d+-1|0;if(!d){a=0;break a}else{a=a+1|0;c=c+1|0}}a=(e&255)-(f&255)|0}while(0);return a|0}function sl(a,b,c){a=a|0;b=b|0;c=c|0;if(!(oj(f[a+8>>2]|0,(f[b+4>>2]|0)-(f[b>>2]|0)>>2)|0)){a=0;return a|0}a=Na[f[(f[a>>2]|0)+32>>2]&31](a,b,c)|0;return a|0}function tl(a,b){a=a|0;b=b|0;var c=0;c=b*3|0;if((b|0)<0){a=0;return a|0}If(a,c,1412);If(a+12|0,c,1408);Sj(a+24|0,c);a=1;return a|0}function ul(a,b){a=a|0;b=b|0;var c=0;c=f[a+16>>2]|0;if(((f[a+20>>2]|0)-c>>2|0)<=(b|0)){a=0;return a|0}c=f[c+(b<<2)>>2]|0;if((c|0)<0){a=0;return a|0}a=lh(f[(f[a+36>>2]|0)+(c<<2)>>2]|0)|0;return a|0}function vl(a){a=a|0;if(!(f[a+44>>2]|0))return 0;if(!(f[a+28>>2]|0))return 0;if(!(f[a+32>>2]|0))return 0;if(!(f[a+36>>2]|0))return 0;else return (f[a+40>>2]|0)!=0|0;return 0}function wl(a,c){a=a|0;c=c|0;var d=0,e=0,g=0;e=a+11|0;d=b[e>>0]|0;if(d<<24>>24<0)g=f[a+4>>2]|0;else g=d&255;if(g>>>0<=c>>>0){Gp(a);d=b[e>>0]|0}if(d<<24>>24<0)a=f[a>>2]|0;return a+c|0}function xl(a){a=a|0;var b=0,c=0;f[a>>2]=3344;b=f[a+60>>2]|0;if(b|0)ar(b);c=a+52|0;b=f[c>>2]|0;f[c>>2]=0;if(!b){ar(a);return}_q(b);ar(a);return}function yl(a){a=a|0;if(!(f[a+60>>2]|0))return 0;if(!(f[a+44>>2]|0))return 0;if(!(f[a+48>>2]|0))return 0;if(!(f[a+52>>2]|0))return 0;else return (f[a+56>>2]|0)!=0|0;return 0}function zl(a){a=a|0;if(!(f[a+28>>2]|0)){a=0;return a|0}if(!(f[a+32>>2]|0)){a=0;return a|0}if(!(f[a+36>>2]|0)){a=0;return a|0}a=(f[a+40>>2]|0)!=0;return a|0}function Al(a){a=a|0;var c=0,d=0;c=a+74|0;d=b[c>>0]|0;b[c>>0]=d+255|d;c=f[a>>2]|0;if(!(c&8)){f[a+8>>2]=0;f[a+4>>2]=0;c=f[a+44>>2]|0;f[a+28>>2]=c;f[a+20>>2]=c;f[a+16>>2]=c+(f[a+48>>2]|0);c=0}else{f[a>>2]=c|32;c=-1}return c|0}function Bl(a,c){a=a|0;c=c|0;var d=0,e=0;e=a;d=e+64|0;do{f[e>>2]=f[c>>2];e=e+4|0;c=c+4|0}while((e|0)<(d|0));e=a+64|0;f[a+88>>2]=0;f[e>>2]=0;f[e+4>>2]=0;f[e+8>>2]=0;f[e+12>>2]=0;f[e+16>>2]=0;b[e+20>>0]=0;return}function Cl(a){a=a|0;var b=0,c=0;f[a>>2]=3008;b=f[a+60>>2]|0;if(b|0)ar(b);c=a+52|0;b=f[c>>2]|0;f[c>>2]=0;if(!b){ar(a);return}_q(b);ar(a);return}function Dl(a){a=a|0;var b=0,c=0;f[a>>2]=4072;b=f[a+60>>2]|0;if(b|0)ar(b);c=a+52|0;b=f[c>>2]|0;f[c>>2]=0;if(!b){ar(a);return}_q(b);ar(a);return}function El(a,c,d){a=a|0;c=c|0;d=d|0;var e=0,g=0;g=u;u=u+32|0;e=g;f[a+36>>2]=15;if((f[a>>2]&64|0)==0?(f[e>>2]=f[a+60>>2],f[e+4>>2]=21523,f[e+8>>2]=g+16,Ca(54,e|0)|0):0)b[a+75>>0]=-1;e=Rg(a,c,d)|0;u=g;return e|0}function Fl(a){a=a|0;if(!(f[a+44>>2]|0)){a=0;return a|0}if(!(f[a+48>>2]|0)){a=0;return a|0}if(!(f[a+52>>2]|0)){a=0;return a|0}a=(f[a+56>>2]|0)!=0;return a|0}function Gl(a,b,c){a=a|0;b=b|0;c=c|0;if((b|0)!=0&(c|0)!=0){jc(a,b,c);return}else{uc(a,0,0);return}}function Hl(a,b,c,d,e){a=a|0;b=b|0;c=c|0;d=d|0;e=$(e);f[a+4>>2]=b;zf(a+8|0,c,c+(d<<2)|0);n[a+20>>2]=e;return}function Il(a){a=a|0;var b=0,c=0;c=a+15&-16|0;b=f[r>>2]|0;a=b+c|0;if((c|0)>0&(a|0)<(b|0)|(a|0)<0){ea()|0;va(12);return -1}f[r>>2]=a;if((a|0)>(da()|0)?(ca()|0)==0:0){f[r>>2]=b;va(12);return -1}return b|0}function Jl(a,b){a=a|0;b=b|0;var c=0,d=0,e=0;c=u;u=u+16|0;d=c+4|0;e=c;f[e>>2]=0;f[d>>2]=f[e>>2];a=Mb(a,b,d)|0;u=c;return a|0}function Kl(a,b,c,d){a=a|0;b=b|0;c=c|0;d=d|0;var e=0,g=0;c=f[c>>2]|0;e=a;d=b-a>>2;while(1){if(!d)break;b=(d|0)/2|0;g=e+(b<<2)|0;a=(f[g>>2]|0)>>>0>>0;e=a?g+4|0:e;d=a?d+-1-b|0:b}return e|0}function Ll(a){a=a|0;var b=0,c=0;f[a>>2]=3736;b=f[a+60>>2]|0;if(b|0)ar(b);c=a+52|0;b=f[c>>2]|0;f[c>>2]=0;if(!b){ar(a);return}_q(b);ar(a);return}function Ml(a,b){a=a|0;b=b|0;b=f[b+88>>2]|0;if(!b){a=0;return a|0}if((f[b>>2]|0)!=2){a=0;return a|0}b=f[b+8>>2]|0;f[a+4>>2]=h[b>>0]|h[b+1>>0]<<8|h[b+2>>0]<<16|h[b+3>>0]<<24;a=1;return a|0}function Nl(a,b,c,d){a=a|0;b=b|0;c=c|0;d=d|0;var e=0,g=0;e=X(c,b)|0;c=(b|0)==0?0:c;if((f[d+76>>2]|0)>-1){g=(gr(d)|0)==0;a=xi(a,e,d)|0;if(!g)fr(d)}else a=xi(a,e,d)|0;if((a|0)!=(e|0))c=(a>>>0)/(b>>>0)|0;return c|0}function Ol(a){a=a|0;var c=0;f[a>>2]=0;c=a+8|0;f[c>>2]=0;f[c+4>>2]=0;f[c+8>>2]=0;f[c+12>>2]=0;b[a+24>>0]=1;f[a+28>>2]=9;c=a+40|0;f[c>>2]=0;f[c+4>>2]=0;f[c+8>>2]=0;f[c+12>>2]=0;f[a+56>>2]=-1;f[a+60>>2]=0;return}function Pl(a,b){a=a|0;b=b|0;if(!(Wa[f[(f[a>>2]|0)+36>>2]&127](a,b)|0)){a=0;return a|0}if(!(Wa[f[(f[a>>2]|0)+40>>2]&127](a,b)|0)){a=0;return a|0}a=Sa[f[(f[a>>2]|0)+44>>2]&255](a)|0;return a|0}function Ql(a){a=a|0;var b=0;f[a>>2]=3344;b=f[a+60>>2]|0;if(b|0)ar(b);a=a+52|0;b=f[a>>2]|0;f[a>>2]=0;if(!b)return;_q(b);return}function Rl(a,c,d){a=a|0;c=c|0;d=d|0;if(!(yn(a,c,d)|0)){a=0;return a|0}d=f[a+8>>2]|0;if((b[d+24>>0]|0)!=3){a=0;return a|0}a=(f[d+28>>2]|0)==9;return a|0}function Sl(a,c){a=a|0;c=c|0;var d=0,e=0;d=b[a>>0]|0;e=b[c>>0]|0;if(!(d<<24>>24==0?1:d<<24>>24!=e<<24>>24))do{a=a+1|0;c=c+1|0;d=b[a>>0]|0;e=b[c>>0]|0}while(!(d<<24>>24==0?1:d<<24>>24!=e<<24>>24));return (d&255)-(e&255)|0}function Tl(a,b,c,d,e,g){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;g=g|0;if(wp(a,f[b+8>>2]|0,g)|0)gj(0,b,c,d,e);return}function Ul(a){a=a|0;var b=0;f[a>>2]=3008;b=f[a+60>>2]|0;if(b|0)ar(b);a=a+52|0;b=f[a>>2]|0;f[a>>2]=0;if(!b)return;_q(b);return}function Vl(a){a=a|0;var b=0;f[a>>2]=4072;b=f[a+60>>2]|0;if(b|0)ar(b);a=a+52|0;b=f[a>>2]|0;f[a>>2]=0;if(!b)return;_q(b);return}function Wl(a,c){a=a|0;c=c|0;if(f[c+56>>2]|0){a=0;return a|0}if((b[c+24>>0]|0)!=3){a=0;return a|0}f[a+44>>2]=c;a=1;return a|0}function Xl(a){a=a|0;var b=0,c=0;f[a>>2]=1772;c=a+20|0;b=f[c>>2]|0;f[c>>2]=0;if(!b){jj(a);ar(a);return}Pa[f[(f[b>>2]|0)+4>>2]&127](b);jj(a);ar(a);return}function Yl(a){a=a|0;var b=0,c=0,d=0;f[a>>2]=1832;b=f[a+32>>2]|0;if(!b){ar(a);return}d=a+36|0;c=f[d>>2]|0;if((c|0)!=(b|0))f[d>>2]=c+(~((c+-4-b|0)>>>2)<<2);ar(b);ar(a);return}function Zl(a){a=a|0;var c=0,d=0,e=0;c=u;u=u+16|0;d=c;e=f[a+4>>2]|0;e=(f[e+56>>2]|0)-(f[e+52>>2]|0)>>2;b[d>>0]=0;Yg(a+20|0,e,d);u=c;return}function _l(a,c){a=a|0;c=c|0;if(f[c+56>>2]|0){a=0;return a|0}if((b[c+24>>0]|0)!=3){a=0;return a|0}f[a+60>>2]=c;a=1;return a|0}function $l(a){a=a|0;var b=0;f[a>>2]=3736;b=f[a+60>>2]|0;if(b|0)ar(b);a=a+52|0;b=f[a>>2]|0;f[a>>2]=0;if(!b)return;_q(b);return}function am(){var a=0,b=0;a=ln(40)|0;f[a>>2]=0;f[a+4>>2]=0;f[a+8>>2]=0;f[a+12>>2]=0;n[a+16>>2]=$(1.0);b=a+20|0;f[b>>2]=0;f[b+4>>2]=0;f[b+8>>2]=0;f[b+12>>2]=0;n[a+36>>2]=$(1.0);return a|0}function bm(a){a=a|0;var c=0,d=0,e=0;c=u;u=u+16|0;d=c;e=f[a+4>>2]|0;e=(f[e+28>>2]|0)-(f[e+24>>2]|0)>>2;b[d>>0]=0;Yg(a+20|0,e,d);u=c;return}function cm(a){a=a|0;switch(a|0){case 11:case 2:case 1:{a=1;break}case 4:case 3:{a=2;break}case 6:case 5:{a=4;break}case 8:case 7:{a=8;break}case 9:{a=4;break}case 10:{a=8;break}default:a=-1}return a|0}function dm(a){a=a|0;f[a>>2]=4684;Hi(a+8|0);ar(a);return}function em(a,c){a=a|0;c=c|0;var d=0,e=0;if((a|0)!=(c|0)){d=b[c+11>>0]|0;e=d<<24>>24<0;Yi(a,e?f[c>>2]|0:c,e?f[c+4>>2]|0:d&255)|0}return a|0}function fm(a,b){a=a|0;b=b|0;var c=0,d=0;c=u;u=u+32|0;d=c;Oi(d,b);a=f[d+16>>2]|0;Lo(d+4|0);u=c;return a|0}function gm(a,b){a=a|0;b=b|0;var c=0,d=0,e=0,f=0;f=a&65535;e=b&65535;c=X(e,f)|0;d=a>>>16;a=(c>>>16)+(X(e,d)|0)|0;e=b>>>16;b=X(e,f)|0;return (I=(a>>>16)+(X(e,d)|0)+(((a&65535)+b|0)>>>16)|0,a+b<<16|c&65535|0)|0}function hm(a){a=a|0;var c=0,d=0;b[a+36>>0]=0;d=Ho(f[a+32>>2]|0,0,7,0)|0;d=Tn(d|0,I|0,3)|0;a=a+16|0;c=a;c=Ho(d|0,I|0,f[c>>2]|0,f[c+4>>2]|0)|0;f[a>>2]=c;f[a+4>>2]=I;return}function im(a){a=a|0;var b=0,c=0;f[a>>2]=1772;c=a+20|0;b=f[c>>2]|0;f[c>>2]=0;if(!b){jj(a);return}Pa[f[(f[b>>2]|0)+4>>2]&127](b);jj(a);return}function jm(a,b,c,d,e,f){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;f=f|0;Ga(7044,7050,76,7144);return 0}function km(a){a=a|0;f[a>>2]=4684;Hi(a+8|0);return}function lm(a,b,c,d,e){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;f[b+44>>2]=e;Ad(a,b,c,d,e);return}function mm(a,b){a=a|0;b=b|0;var c=0;if((b|0)==-1|(b|0)>3){b=-1;return b|0}c=f[a+20+(b*12|0)>>2]|0;if(((f[a+20+(b*12|0)+4>>2]|0)-c|0)<=0){b=-1;return b|0}b=f[c>>2]|0;return b|0}function nm(a){a=a|0;var b=0,c=0;f[a>>2]=1832;c=f[a+32>>2]|0;if(!c)return;b=a+36|0;a=f[b>>2]|0;if((a|0)!=(c|0))f[b>>2]=a+(~((a+-4-c|0)>>>2)<<2);ar(c);return}function om(a,b,c,d){a=a|0;b=b|0;c=c|0;d=d|0;if(wp(a,f[b+8>>2]|0,0)|0)xk(0,b,c,d);return}function pm(a){a=a|0;var c=0;f[a>>2]=0;f[a+4>>2]=0;f[a+8>>2]=0;f[a+12>>2]=0;f[a+16>>2]=0;f[a+20>>2]=0;b[a+24>>0]=1;a=a+28|0;c=a+40|0;do{f[a>>2]=0;a=a+4|0}while((a|0)<(c|0));return}function qm(a){a=a|0;var b=0;f[a>>2]=1620;b=a+4|0;f[a+40>>2]=0;f[b>>2]=0;f[b+4>>2]=0;f[b+8>>2]=0;f[b+12>>2]=0;f[b+16>>2]=0;f[b+20>>2]=0;f[b+24>>2]=0;f[b+28>>2]=0;d[b+32>>1]=0;return}function rm(a,c,d){a=a|0;c=c|0;d=d|0;var e=0;if((c|0)<(a|0)&(a|0)<(c+d|0)){e=a;c=c+d|0;a=a+d|0;while((d|0)>0){a=a-1|0;c=c-1|0;d=d-1|0;b[a>>0]=b[c>>0]|0}a=e}else Mg(a,c,d)|0;return a|0}function sm(a){a=a|0;var c=0,d=0,e=0;c=f[a>>2]|0;d=(b[c>>0]|0)+-48|0;if(d>>>0<10){e=c;c=0;do{c=d+(c*10|0)|0;e=e+1|0;f[a>>2]=e;d=(b[e>>0]|0)+-48|0}while(d>>>0<10)}else c=0;return c|0}function tm(a){a=a|0;var b=0,c=0,d=0;f[a>>2]=1456;b=f[a+8>>2]|0;if(!b){ar(a);return}d=a+12|0;c=f[d>>2]|0;if((c|0)!=(b|0))f[d>>2]=c+(~((c+-4-b|0)>>>2)<<2);ar(b);ar(a);return}function um(a){a=a|0;var b=0;f[a>>2]=3400;b=f[a+60>>2]|0;if(!b){ar(a);return}ar(b);ar(a);return}function vm(a,b){a=a|0;b=b|0;var c=0;if((b|0)<=-1)Ga(17188,17204,63,17242);c=f[a+8>>2]|0;if(((f[a+12>>2]|0)-c>>2|0)>(b|0))return f[c+(b<<2)>>2]|0;else Ga(17252,17204,64,17242);return 0}function wm(a,b,c){a=a|0;b=b|0;c=c|0;var d=0,e=0;if((b|0)>0)d=0;else return;do{e=f[a+(d<<2)>>2]|0;f[c+(d<<2)>>2]=e<<31>>31^e>>>1;d=d+1|0}while((d|0)!=(b|0));return}function xm(a,c,d,e){a=a|0;c=c|0;d=d|0;e=e|0;if(!((a|0)==0&(c|0)==0))do{d=d+-1|0;b[d>>0]=h[19836+(a&15)>>0]|0|e;a=Tn(a|0,c|0,4)|0;c=I}while(!((a|0)==0&(c|0)==0));return d|0}function ym(a,b,c){a=a|0;b=b|0;c=c|0;var d=0,e=0;e=u;u=u+16|0;d=e;f[d>>2]=f[c>>2];a=Na[f[(f[a>>2]|0)+16>>2]&31](a,b,d)|0;if(a)f[c>>2]=f[d>>2];u=e;return a&1|0}function zm(){var a=0,b=0;b=hn()|0;if((b|0?(a=f[b>>2]|0,a|0):0)?(b=a+48|0,(f[b>>2]&-256|0)==1126902528?(f[b+4>>2]|0)==1129074247:0):0)Vo(f[a+12>>2]|0);Vo(fq()|0)}function Am(a){a=a|0;var b=0;f[a>>2]=3064;b=f[a+60>>2]|0;if(!b){ar(a);return}ar(b);ar(a);return}function Bm(a){a=a|0;var b=0;f[a>>2]=4128;b=f[a+60>>2]|0;if(!b){ar(a);return}ar(b);ar(a);return}function Cm(a){a=a|0;var c=0;c=b[w+(a&255)>>0]|0;if((c|0)<8)return c|0;c=b[w+(a>>8&255)>>0]|0;if((c|0)<8)return c+8|0;c=b[w+(a>>16&255)>>0]|0;if((c|0)<8)return c+16|0;return (b[w+(a>>>24)>>0]|0)+24|0}function Dm(a){a=a|0;var b=0,c=0,d=0;if(!a)return;b=f[a>>2]|0;if(b|0){d=a+4|0;c=f[d>>2]|0;if((c|0)!=(b|0))f[d>>2]=c+(~((c+-4-b|0)>>>2)<<2);ar(b)}ar(a);return}function Em(a,c){a=a|0;c=c|0;var d=0;b[c+84>>0]=1;d=f[c+68>>2]|0;c=c+72|0;a=f[c>>2]|0;if((a|0)==(d|0))return 1;f[c>>2]=a+(~((a+-4-d|0)>>>2)<<2);return 1}function Fm(a){a=a|0;var b=0;f[a>>2]=3792;b=f[a+60>>2]|0;if(!b){ar(a);return}ar(b);ar(a);return}function Gm(a){a=a|0;var b=0,c=0;f[a>>2]=1456;c=f[a+8>>2]|0;if(!c)return;b=a+12|0;a=f[b>>2]|0;if((a|0)!=(c|0))f[b>>2]=a+(~((a+-4-c|0)>>>2)<<2);ar(c);return}function Hm(a,b){a=a|0;b=b|0;return hi(a+8|0,b)|0}function Im(a,b,c){a=a|0;b=b|0;c=c|0;Qb(a,b,c);return}function Jm(a){a=a|0;f[a>>2]=3400;a=f[a+60>>2]|0;if(!a)return;ar(a);return}function Km(a,b){a=a|0;b=b|0;if(!b)return 0;else Ga(11246,11617,62,11257);return 0}function Lm(a,b,c,d){a=a|0;b=b|0;c=c|0;d=d|0;var e=0;if((f[b+4>>2]|0)==(c|0)?(e=b+28|0,(f[e>>2]|0)!=1):0)f[e>>2]=d;return}function Mm(a,b){a=a|0;b=b|0;if(!b)return 0;else Ga(11246,10695,66,11257);return 0}function Nm(a){a=a|0;f[a>>2]=3064;a=f[a+60>>2]|0;if(!a)return;ar(a);return}function Om(a){a=a|0;f[a>>2]=4128;a=f[a+60>>2]|0;if(!a)return;ar(a);return}function Pm(a){a=a|0;var b=0;f[a>>2]=4660;b=f[a+20>>2]|0;if(b|0)ar(b);b=f[a+8>>2]|0;if(!b){ar(a);return}ar(b);ar(a);return}function Qm(a,c,d){a=a|0;c=c|0;d=d|0;if(!((a|0)==0&(c|0)==0))do{d=d+-1|0;b[d>>0]=a&7|48;a=Tn(a|0,c|0,3)|0;c=I}while(!((a|0)==0&(c|0)==0));return d|0}function Rm(){var a=0,b=0;a=ln(24)|0;f[a>>2]=1456;f[a+4>>2]=-1;b=a+8|0;f[b>>2]=0;f[b+4>>2]=0;f[b+8>>2]=0;f[b+12>>2]=0;return a|0}function Sm(a){a=a|0;f[a>>2]=1564;a=a+4|0;f[a>>2]=0;f[a+4>>2]=0;f[a+8>>2]=0;f[a+12>>2]=0;f[a+16>>2]=0;f[a+20>>2]=0;f[a+24>>2]=0;f[a+28>>2]=0;return}function Tm(a,b,c){a=a|0;b=b|0;c=c|0;var d=0,e=0;d=a+20|0;e=f[d>>2]|0;a=(f[a+16>>2]|0)-e|0;a=a>>>0>c>>>0?c:a;Mg(e|0,b|0,a|0)|0;f[d>>2]=(f[d>>2]|0)+a;return c|0}function Um(a,b){a=a|0;b=b|0;if(!b)return 0;else Ga(11246,11902,68,11257);return 0}function Vm(a,b){a=a|0;b=b|0;return ki(a+8|0,b)|0}function Wm(a){a=a|0;var c=0;Ol(a);c=a+64|0;f[a+88>>2]=0;f[c>>2]=0;f[c+4>>2]=0;f[c+8>>2]=0;f[c+12>>2]=0;f[c+16>>2]=0;b[c+20>>0]=0;return}function Xm(a){a=a|0;var b=0,c=0;if(!a)return;b=f[a+8>>2]|0;if(b|0){c=a+12|0;if((f[c>>2]|0)!=(b|0))f[c>>2]=b;ar(b)}ar(a);return}function Ym(a){a=a|0;f[a>>2]=0;a=a+8|0;f[a>>2]=0;f[a+4>>2]=0;f[a+8>>2]=0;f[a+12>>2]=0;f[a+16>>2]=0;f[a+20>>2]=0;f[a+24>>2]=0;b[a+28>>0]=0;return}function Zm(a){a=a|0;f[a>>2]=3792;a=f[a+60>>2]|0;if(!a)return;ar(a);return}function _m(a){a=a|0;var b=0;f[a>>2]=4708;b=f[a+20>>2]|0;if(b|0)ar(b);b=f[a+8>>2]|0;if(!b){ar(a);return}ar(b);ar(a);return}function $m(a,b,c,d){a=a|0;b=b|0;c=c|0;d=d|0;var e=0,g=0;g=u;u=u+16|0;e=g|0;nd(a,b,c,d,e)|0;u=g;return (I=f[e+4>>2]|0,f[e>>2]|0)|0}function an(a){a=a|0;f[a>>2]=3456;fr(a+84|0);ar(a);return}function bn(a){a=a|0;var b=0;f[a>>2]=4660;b=f[a+20>>2]|0;if(b|0)ar(b);b=f[a+8>>2]|0;if(!b)return;ar(b);return}function cn(a){a=a|0;Ep(a);f[a+16>>2]=0;f[a+20>>2]=0;f[a+12>>2]=a+16;a=a+24|0;f[a>>2]=0;f[a+4>>2]=0;f[a+8>>2]=0;f[a+12>>2]=0;return}function dn(a){a=a|0;Zn(a);f[a>>2]=1524;a=a+72|0;f[a>>2]=0;f[a+4>>2]=0;f[a+8>>2]=0;f[a+12>>2]=0;f[a+16>>2]=0;f[a+20>>2]=0;return}function en(a){a=a|0;f[a>>2]=3120;fr(a+84|0);ar(a);return}function fn(a){a=a|0;f[a>>2]=4184;fr(a+84|0);ar(a);return}function gn(a){a=a|0;f[a>>2]=3456;fr(a+84|0);return}function hn(){var a=0,b=0;a=u;u=u+16|0;if(!(Aa(23224,3)|0)){b=qa(f[5807]|0)|0;u=a;return b|0}else Qn(22369,a);return 0}function jn(a){a=a|0;var b=0;f[a>>2]=4708;b=f[a+20>>2]|0;if(b|0)ar(b);b=f[a+8>>2]|0;if(!b)return;ar(b);return}function kn(a,b,c,d){a=a|0;b=b|0;c=c|0;d=d|0;var e=0,f=0;e=a;f=c;c=gm(e,f)|0;a=I;return (I=(X(b,f)|0)+(X(d,e)|0)+a|a&0,c|0|0)|0}function ln(a){a=a|0;var b=0;b=(a|0)==0?1:a;while(1){a=$a(b)|0;if(a|0)break;a=dq()|0;if(!a){a=0;break}Ua[a&3]()}return a|0}function mn(a){a=a|0;var b=0,c=0;b=u;u=u+16|0;c=b;a=dr(f[a+60>>2]|0)|0;f[c>>2]=a;a=Ro(ua(6,c|0)|0)|0;u=b;return a|0}function nn(a,b,c,d){a=a|0;b=b|0;c=c|0;d=d|0;return Pc(b,c,d)|0}function on(a){a=a|0;f[a>>2]=3848;fr(a+84|0);ar(a);return}function pn(a){a=a|0;var b=0;b=u;u=u+16|0;ac(a);if(!(ra(f[5807]|0,0)|0)){u=b;return}else Qn(22468,b)}function qn(a){a=a|0;f[a>>2]=3120;fr(a+84|0);return}function rn(a){a=a|0;f[a>>2]=4184;fr(a+84|0);return}function sn(a){a=a|0;Go(a);f[a>>2]=2616;f[a+24>>2]=-1;f[a+28>>2]=0;n[a+32>>2]=$(0.0);return}function tn(a,b,c){a=a|0;b=b|0;c=c|0;f[a>>2]=b;b=a+8|0;f[b>>2]=c;f[b+4>>2]=0;a=a+16|0;f[a>>2]=0;f[a+4>>2]=0;return}function un(a,b,c,d){a=a|0;b=b|0;c=c|0;d=d|0;return (((f[a+8>>2]|0)+-1|0)==(d|0)?0:d+1|0)|0}function vn(a){a=a|0;f[a>>2]=3848;fr(a+84|0);return}function wn(a){a=a|0;f[a>>2]=0;f[a+4>>2]=0;f[a+8>>2]=0;a=a+16|0;f[a>>2]=0;f[a+4>>2]=0;f[a+8>>2]=0;f[a+12>>2]=0;return}function xn(a,b,c){a=a|0;b=b|0;c=c|0;return 1}function yn(a,b,c){a=a|0;b=b|0;c=c|0;return el(a,b,c)|0}function zn(a,b,c,d,e,f,g){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;f=f|0;g=g|0;return Ra[a&63](b|0,c|0,d|0,e|0,f|0,g|0)|0}function An(a,b,c){a=a|0;b=b|0;c=c|0;if((c|0)<32){I=b>>c;return a>>>c|(b&(1<>c-32|0}function Bn(a,b,c){a=a|0;b=b|0;c=c|0;return mm(b,c)|0}function Cn(a){a=a|0;Nd(a);ar(a);return}function Dn(a,b,c){a=a|0;b=b|0;c=c|0;var d=0,e=0;d=u;u=u+16|0;e=d;f[e>>2]=c;c=Yp(a,b,e)|0;u=d;return c|0}function En(a,b,c){a=a|0;b=$(b);c=c|0;var d=La;d=$($(1.0)/$(c|0));n[a+4>>2]=d;n[a>>2]=b;return}function Fn(a,b,c,d){a=a|0;b=b|0;c=c|0;d=d|0;return Ki(b,c,d)|0}function Gn(){var a=0;a=u;u=u+16|0;if(!(ya(23228,127)|0)){u=a;return}else Qn(22418,a)}function Hn(a){a=a|0;Ae(a);ar(a);return}function In(a,b){a=a|0;b=b|0;var c=0,d=0;c=u;u=u+16|0;d=c;f[d>>2]=b;b=rh(f[1308]|0,a,d)|0;u=c;return b|0}function Jn(a,b,c,d,e,f,g){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;f=f|0;g=g|0;Va[a&3](b|0,c|0,d|0,e|0,f|0,g|0)}function Kn(a){a=a|0;if(!(f[a+44>>2]|0))return 0;else return Sa[f[(f[a>>2]|0)+48>>2]&255](a)|0;return 0}function Ln(a,b,c,d){a=a|0;b=b|0;c=c|0;d=d|0;return Dg(b,c,d)|0}function Mn(a,b,c){a=a|0;b=b|0;c=c|0;if(b|0)ej(a|0,(zq(c)|0)&255|0,b|0)|0;return a|0}function Nn(a){a=a|0;return 4}function On(a,b,c){a=a|0;b=b|0;c=c|0;if((c|0)<32){I=b<>>32-c;return a<>2]|0;return Wa[f[(f[a>>2]|0)+16>>2]&127](a,b)|0}function Qn(a,b){a=a|0;b=b|0;var c=0;c=u;u=u+16|0;f[c>>2]=b;b=f[1215]|0;rh(b,a,c)|0;Ij(10,b)|0;wa()}function Rn(a,b){a=a|0;b=b|0;a=f[a+48>>2]|0;return Wa[f[(f[a>>2]|0)+12>>2]&127](a,b)|0}function Sn(a,b){a=a|0;b=b|0;a=f[a+48>>2]|0;return Wa[f[(f[a>>2]|0)+20>>2]&127](a,b)|0}function Tn(a,b,c){a=a|0;b=b|0;c=c|0;if((c|0)<32){I=b>>>c;return a>>>c|(b&(1<>>c-32|0}function Un(a,b,c){a=a|0;b=b|0;c=c|0;return Ik(a,b,c)|0}function Vn(a){a=a|0;_d(a);ar(a);return}function Wn(){}function Xn(a,b,c,d){a=a|0;b=b|0;c=c|0;d=d|0;d=b-d-(c>>>0>a>>>0|0)>>>0;return (I=d,a-c>>>0|0)|0}function Yn(a){a=a|0;return 5}function Zn(a){a=a|0;var b=0;f[a>>2]=1484;a=a+4|0;b=a+68|0;do{f[a>>2]=0;a=a+4|0}while((a|0)<(b|0));return}function _n(a){a=a|0;return 6}function $n(a,b,c,d){a=a|0;b=b|0;c=c|0;d=d|0;return Ck(b,c,d)|0}function ao(a,b,c){a=a|0;b=b|0;c=c|0;f[a+28>>2]=b;f[a+32>>2]=c;return 1}function bo(a,b){a=a|0;b=b|0;if(!b)b=0;else b=Jh(f[b>>2]|0,f[b+4>>2]|0,a)|0;return (b|0?b:a)|0}function co(a,b,c){a=a|0;b=b|0;c=c|0;return Bn(a,b,c)|0}function eo(a,b,c){a=a|0;b=b|0;c=c|0;return Yf(b,c)|0}function fo(a){a=a|0;f[a>>2]=1724;f[a+4>>2]=0;f[a+8>>2]=0;f[a+12>>2]=-1;f[a+16>>2]=0;return}function go(a,b){a=a|0;b=b|0;Yj(a,b);return}function ho(a){a=a|0;if(!a)return;Lo(a+4|0);ar(a);return}function io(a){a=a|0;a=a+4|0;if((b[a+11>>0]|0)<0){a=f[a>>2]|0;return a|0}else return a|0;return 0}function jo(a,b,c,d,e,f){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;f=f|0;Oa[a&3](b|0,c|0,d|0,e|0,f|0)}function ko(a,b,c){a=a|0;b=b|0;c=c|0;return Ok(a,b,c)|0}function lo(a,b,c){a=a|0;b=b|0;c=c|0;return Mj(a,b,c)|0}function mo(a,b,c){a=a|0;b=b|0;c=c|0;return rk(a,b,c)|0}function no(a,b,c){a=a|0;b=b|0;c=c|0;return Ej(a,b,c)|0}function oo(a,b,c){a=a|0;b=b|0;c=c|0;return +(+fk(a,b,c))}function po(a){a=a|0;a=f[a+48>>2]|0;return Sa[f[(f[a>>2]|0)+28>>2]&255](a)|0}function qo(a,b){a=a|0;b=b|0;return Wa[f[(f[a>>2]|0)+12>>2]&127](a,b)|0}function ro(a,b){a=a|0;b=b|0;return Wa[f[(f[a>>2]|0)+56>>2]&127](a,b)|0}function so(a){a=a|0;a=f[a+48>>2]|0;return Sa[f[(f[a>>2]|0)+24>>2]&255](a)|0}function to(a){a=a|0;f[a>>2]=0;f[a+4>>2]=0;f[a+8>>2]=0;f[a+12>>2]=0;f[a+16>>2]=0;return}function uo(a,b,c){a=a|0;b=b|0;c=c|0;return Jk(a,b,c)|0}function vo(a,b){a=a|0;b=b|0;f[a+4>>2]=b;return 1}function wo(a){a=a|0;a=f[a+48>>2]|0;return Sa[f[(f[a>>2]|0)+36>>2]&255](a)|0}function xo(a,b,c){a=a|0;b=b|0;c=c|0;return uk(a,b,c)|0}function yo(a,b,c){a=a|0;b=b|0;c=c|0;return kk(a,b,c)|0}function zo(a){a=a|0;Go(a);f[a>>2]=2684;f[a+24>>2]=-1;return}function Ao(a,b){a=a|0;b=b|0;f[a+8>>2]=b;f[a+12>>2]=-1;return 1}function Bo(a,b,c){a=a|0;b=b|0;c=c|0;return Ni(b,c)|0}function Co(a){a=+a;var b=0;p[s>>3]=a;b=f[s>>2]|0;I=f[s+4>>2]|0;return b|0}function Do(a){a=a|0;f[a+12>>2]=0;f[a+16>>2]=0;f[a>>2]=0;n[a+4>>2]=$(0.0);return}function Eo(){var a=0;a=ln(40)|0;f[a>>2]=-1;wn(a+8|0);return a|0}function Fo(){var a=0;a=ln(8)|0;f[a>>2]=1428;f[a+4>>2]=-1;return a|0}function Go(a){a=a|0;fo(a);f[a>>2]=1772;f[a+20>>2]=0;return}function Ho(a,b,c,d){a=a|0;b=b|0;c=c|0;d=d|0;c=a+c>>>0;return (I=b+d+(c>>>0>>0|0)>>>0,c|0)|0}function Io(a,b){a=a|0;b=b|0;go(a,b);return}function Jo(a,b){a=a|0;b=b|0;return $(n[(f[a+8>>2]|0)+(b<<2)>>2])}function Ko(a,b){a=a|0;b=b|0;return fm(a,b)|0}function Lo(a){a=a|0;if((b[a+11>>0]|0)<0)ar(f[a>>2]|0);return}function Mo(a){a=a|0;if(!a)return;Pa[f[(f[a>>2]|0)+4>>2]&127](a);return}function No(a,b,c,d,e){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;Xa[a&7](b|0,c|0,d|0,e|0)}function Oo(a,b,c){a=a|0;b=b|0;c=c|0;if(c|0)rm(a|0,b|0,c|0)|0;return a|0}function Po(a){a=a|0;var b=0;b=a+60|0;do{f[a>>2]=0;a=a+4|0}while((a|0)<(b|0));return}function Qo(a,b,c){a=a|0;b=b|0;c=c|0;return vm(b,c)|0}function Ro(a){a=a|0;var b=0;if(a>>>0>4294963200){b=Oq()|0;f[b>>2]=0-a;a=-1}return a|0}function So(a,b,c){a=a|0;b=b|0;c=c|0;if(c|0)Mg(a|0,b|0,c|0)|0;return a|0}function To(a,b){a=a|0;b=b|0;return -1}function Uo(a){a=a|0;if(!a)a=0;else a=(uh(a,1304,1376,0)|0)!=0;return a&1|0}function Vo(a){a=a|0;var b=0;b=u;u=u+16|0;Ua[a&3]();Qn(22521,b)}function Wo(a){a=a|0;bi(a);ar(a);return}function Xo(a){a=a|0;dp(a);f[a>>2]=4528;f[a+48>>2]=0;return}function Yo(a,b,c,d){a=a|0;b=b|0;c=c|0;d=d|0;return Na[a&31](b|0,c|0,d|0)|0}function Zo(a,b,c){a=a|0;b=b|0;c=c|0;tn(a,b,c);return}function _o(a){a=a|0;if(!a)return;fr(a+24|0);ar(a);return}function $o(a,b){a=a|0;b=b|0;return f[(f[a+4>>2]|0)+(b<<2)>>2]|0}function ap(){var a=0;a=ln(64)|0;Ol(a);return a|0}function bp(a,b){a=a|0;b=b|0;return $(hp(a,b))}function cp(a){a=a|0;return f[a+8>>2]|0}function dp(a){a=a|0;qm(a);f[a>>2]=1664;f[a+44>>2]=0;return}function ep(a){a=a|0;if(!a)return;Ri(a);ar(a);return}function fp(a,b){a=a|0;b=b|0;return Sp(a,b)|0}function gp(a){a=a|0;return b[(f[a+8>>2]|0)+24>>0]|0}function hp(a,b){a=a|0;b=b|0;return $(n[(f[a>>2]|0)+(b<<2)>>2])}function ip(a,b,c){a=a|0;b=b|0;c=c|0;if(!(f[a>>2]&32))xi(b,c,a)|0;return}function jp(a){a=a|0;return (f[a+8>>2]|0)-(f[a+4>>2]|0)>>2|0}function kp(a,b,c,d){a=a|0;b=b|0;c=c|0;d=d|0;Ta[a&7](b|0,c|0,d|0)}function lp(){var a=0;a=ln(96)|0;Wm(a);return a|0}function mp(a){a=a|0;var b=0;b=u;u=u+a|0;u=u+15&-16;return b|0}function np(a,b){a=a|0;b=b|0;if(!a)a=0;else a=Li(a,b,0)|0;return a|0}function op(a){a=a|0;var b=0;b=(Yq()|0)+188|0;return gk(a,f[b>>2]|0)|0}function pp(a){a=a|0;return ((f[a+88>>2]|0)-(f[a+84>>2]|0)|0)/12|0|0}function qp(){var a=0;a=ln(12)|0;Ip(a);return a|0}function rp(){var a=0;a=ln(40)|0;Ym(a);return a|0}function sp(a,b){a=a|0;b=b|0;return Ap(a,b)|0}function tp(a,b,c,d,e,f){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;f=f|0;aa(4);return 0}function up(a){a=a|0;jj(a);ar(a);return}function vp(a){a=a|0;n[a>>2]=$(1.0);n[a+4>>2]=$(1.0);return}function wp(a,b,c){a=a|0;b=b|0;c=c|0;return (a|0)==(b|0)|0}function xp(a){a=a|0;Sm(a);f[a>>2]=4412;return}function yp(a,b){a=a|0;b=b|0;var c=0;c=Np(a|0)|0;return ((b|0)==0?a:c)|0}function zp(a){a=a|0;return (f[a+12>>2]|0)-(f[a+8>>2]|0)>>2|0}function Ap(a,b){a=a|0;b=b|0;return f[(f[a>>2]|0)+(b<<2)>>2]|0}function Bp(a,b){a=a|0;b=b|0;f[a+4>>2]=b;return}function Cp(a,b){a=a|0;b=b|0;return 1}function Dp(a,b,c,d){a=a|0;b=b|0;c=c|0;d=d|0;return nd(a,b,c,d,0)|0}function Ep(a){a=a|0;f[a+4>>2]=0;f[a+8>>2]=0;f[a>>2]=a+4;return}function Fp(){var a=0;a=ln(72)|0;Zn(a);return a|0}function Gp(a){a=a|0;Ga(22044,21922,1194,22073)}function Hp(a){a=a|0;Ga(21893,21922,1183,22023)}function Ip(a){a=a|0;f[a>>2]=0;f[a+4>>2]=0;f[a+8>>2]=0;return}function Jp(a){a=a|0;return (f[a+4>>2]|0)-(f[a>>2]|0)>>2|0}function Kp(a){a=a|0;Ga(21870,21769,315,22073)}function Lp(a){a=a|0;Ga(21746,21769,304,22023)}function Mp(a,b,c){a=a|0;b=b|0;c=c|0;return Wa[a&127](b|0,c|0)|0}function Np(a){a=a|0;return (a&255)<<24|(a>>8&255)<<16|(a>>16&255)<<8|a>>>24|0}function Op(a){a=a|0;dp(a);f[a>>2]=4468;return}function Pp(){var a=0;a=ln(1)|0;fr(a);return a|0}function Qp(a,c){a=a|0;c=c|0;b[a>>0]=b[c>>0]|0;return}function Rp(a,b,c,d,e,f){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;f=f|0;aa(8)}function Sp(a,b){a=a|0;b=b|0;return f[b+4>>2]|0}function Tp(a){a=a|0;return $(n[a+20>>2])}function Up(a){a=a|0;return f[a+4>>2]|0}function Vp(a){a=a|0;if(!a)return;ar(a);return}function Wp(a,b){a=a|0;b=b|0;if(!x){x=a;y=b}}function Xp(a){a=a|0;return 3}function Yp(a,b,c){a=a|0;b=b|0;c=c|0;return Wi(a,2147483647,b,c)|0}function Zp(a){a=a|0;return f[a+88>>2]|0}function _p(a,b,c){a=a|0;b=b|0;c=c|0;Qa[a&7](b|0,c|0)}function $p(){var a=0;a=ln(40)|0;cn(a);return a|0}function aq(){var a=0;a=ln(96)|0;dn(a);return a|0}function bq(a){a=a|0;return (b[a+32>>0]|0)!=0|0}function cq(a,b,c,d,e){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;aa(1)}function dq(){var a=0;a=f[5808]|0;f[5808]=a+0;return a|0}function eq(a){a=a|0;return f[a+56>>2]|0}function fq(){var a=0;a=f[1467]|0;f[1467]=a+0;return a|0}function gq(a){a=a|0;$g(a);ar(a);return}function hq(a){a=a|0;return b[a+24>>0]|0}function iq(a,b){a=a|0;b=b|0;return 0}function jq(a){a=a|0;return f[a+40>>2]|0}function kq(a){a=a|0;return f[a+48>>2]|0}function lq(a,b){a=a|0;b=b|0;return Sa[a&255](b|0)|0}function mq(a){a=a|0;return f[a+60>>2]|0}function nq(a){a=a|0;return f[a+28>>2]|0}function oq(a){a=a|0;xa(a|0)|0;zm()}function pq(a){a=a|0;return f[a+80>>2]|0}function qq(a,b){a=a|0;b=b|0;u=a;v=b}function rq(a,b,c,d){a=a|0;b=b|0;c=c|0;d=d|0;aa(10)}function sq(a){a=a|0;return ((a|0)==32|(a+-9|0)>>>0<5)&1|0}function tq(a){a=a|0;return (f[a>>2]|0)==0|0}function uq(a){a=a|0;return f[a+68>>2]|0}function vq(a,b){a=a|0;b=b|0;Pa[a&127](b|0)}function wq(a,b){a=a|0;b=b|0;return bo(a,b)|0}function xq(a){a=a|0;b[a+12>>0]=0;return}function yq(a){a=a|0;fr(a);ar(a);return}function zq(a){a=a|0;return a&255|0}function Aq(a){a=a|0;f[a>>2]=0;return}function Bq(a,b,c){a=a|0;b=b|0;c=c|0;aa(0);return 0}function Cq(a){a=a|0;return f[a>>2]|0}function Dq(a){a=a|0;return 2}function Eq(a){a=a|0;f[a>>2]=5964;return}function Fq(a){a=a|0;return 1}function Gq(a,b){a=+a;b=b|0;return +(+bk(a,b))}function Hq(){return 3}function Iq(a,b,c){a=a|0;b=b|0;c=c|0;aa(6)}function Jq(){return -4}function Kq(){return 4}function Lq(){return -3}function Mq(){return 1}function Nq(){return 2}function Oq(){return (Yq()|0)+64|0}function Pq(){return -5}function Qq(a,b){a=a|0;b=b|0;aa(9);return 0}function Rq(a){a=a|0;return 22561}function Sq(a){a=a|0;Ua[a&3]()}function Tq(){return -2}function Uq(){Ha()}function Vq(){return -1}function Wq(a,b){a=a|0;b=b|0;aa(3)}function Xq(){return 0}function Yq(){return kr()|0}function Zq(a){a=a|0;return ln(a)|0}function _q(a){a=a|0;ar(a);return}function $q(a){a=a|0;u=a}function ar(a){a=a|0;ac(a);return}function br(a){a=a|0;I=a}function cr(){return 23160}function dr(a){a=a|0;return a|0}function er(a){a=a|0;aa(5);return 0}function fr(a){a=a|0;return}function gr(a){a=a|0;return 0}function hr(){return I|0}function ir(){return u|0}function jr(a){a=a|0;aa(2)}function kr(){return 4988}function lr(){aa(7)} // EMSCRIPTEN_END_FUNCS -var Ra=[Mm,dl,Zi,jj,Yg,Gk,ag,od,Ch,Ni,Qi,zj,Nh,gh,Af,gj,Th,Mm,Mm,Mm,Mm,Mm,Mm,Mm,Mm,Mm,Mm,Mm,Mm,Mm,Mm,Mm];var Sa=[qm,Mh,_f,qm];var Ta=[kn,kh,xm,Ab,Gi,yi,fk,$j,Mi,Ai,Ai,fn,an,fj,Xi,Zj,Ij,Ij,Ij,Ij,mi,hi,Li,zi,Ij,Ij,ki,gi,Ei,ti,Hi,vi,Xi,fn,an,an,an,Yi,Pi,Cj,nj,an,an,_i,Ri,Fj,uj,an,an,an,$i,Si,Gj,vj,an,an,dj,Wi,Pj,Aj,lh,El,Ai,fn,an,Ai,$j,Ai,di,$h,Ud,_k,qi,ni,ok,gk,Ej,Rj,Lj,tk,lk,Jj,si,pi,Ed,Mk,he,Pk,fn,an,fn,fn,an,fn,an,rm,zk,kn,kn,kn,kn,kn,kn,kn,kn,kn,kn,kn,kn,kn,kn,kn,kn,kn,kn,kn,kn,kn,kn,kn,kn,kn,kn,kn,kn,kn,kn,kn];var Ua=[$l,Bc,ud,Tb,ic,Hb,Sb,gb,rb,Xc,Md,Zb,kc,Ib,Vb,fb,qb,Vc,Ld,Wh,Ph,le,Ge,Ec,Zc,mb,Jb,Of,Lf,Wd,je,Cc,Sc,ob,Mb,Wf,Qf,_h,Vh,pe,Ie,Fc,bd,nb,Lb,Xf,Rf,be,oe,Dc,Wc,pb,Nb,$f,Zf,$l,$l,$l,$l,$l,$l,$l,$l,$l];var Va=[en,oi,gn,Pm,Pm,Gf,Oi,Pm,Pm,Sk,gn,Ol,Ul,gn,gn,Pm,gn,Pm,Pm,xj,ym,xj,cl,xj,Ql,oj,Pm,Pm,xj,ym,xj,cl,xj,Ql,oj,Pm,gf,ym,gn,Ul,Pm,gn,Pm,Ql,Pm,rj,ym,rj,cl,rj,Ql,kj,Pm,Pm,rj,ym,rj,cl,rj,Ql,kj,Pm,gn,Ul,Pm,gn,Pm,ym,Pm,rj,ym,rj,cl,rj,Ql,kj,Pm,Pm,rj,ym,rj,cl,rj,Ql,kj,Pm,ji,yh,ji,Kb,Ef,fl,ll,hl,lb,Pm,Ul,Ll,dg,qf,gg,jb,Pm,Ul,Ll,kb,Pm,Ul,Ll,Hk,Ym,en,en,en,en,en,en,en,en,en,en,en,en,en,en,en,en,en];var Wa=[Sm,eg,wf,og,Hh,Sm,Sm,Sm];var Xa=[mn,_m,ph,Ok];var Ya=[km,Tj,aj,km];var Za=[Xm,jd,zm,zm,nl,bh,fc,Pl,zm,hh,Uf,Le,ae,mk,Mj,xd,ee,Le,ae,mk,Mj,xd,ee,gl,pf,Tg,Pl,zm,hh,ng,Je,ie,mk,Hj,wd,Ae,Je,ie,mk,Hj,wd,Ae,Pl,zm,hh,ng,Je,ie,mk,Hj,wd,Ae,Je,ie,mk,Hj,wd,Ae,We,yf,Ki,hg,dk,rh,xb,hg,Xk,Wk,Uk,kl,Ah,Dh,ac,$e,Ve,Se,kl,Ah,Dh,ac,kl,Ah,Dh,ac,Xm,Xm,Xm,Xm,Xm,Xm,Xm,Xm,Xm,Xm,Xm,Xm,Xm,Xm,Xm,Xm,Xm,Xm,Xm,Xm,Xm,Xm,Xm,Xm,Xm,Xm,Xm,Xm,Xm,Xm,Xm,Xm,Xm,Xm,Xm,Xm,Xm,Xm,Xm,Xm,Xm,Xm,Xm,Xm];var _a=[Jm,ek,lj,Jm];return{_emscripten_bind_WebIDLWrapper_DecodeMeshFromBuffer_1:tl,_emscripten_bind_DecoderBuffer_DecoderBuffer_0:Zl,_bitshift64Shl:Tk,_emscripten_bind_Mesh___destroy___0:xl,_emscripten_bind_DracoFloat32Array_DracoFloat32Array_0:Yl,_llvm_cttz_i32:ck,_emscripten_bind_WebIDLWrapper_GetEncodedGeometryType_1:ol,_emscripten_bind_PointAttribute_byte_offset_0:Bm,___udivdi3:dm,_emscripten_bind_PointAttribute_normalized_0:pm,_bitshift64Lshr:Zk,_i64Subtract:al,___udivmoddi4:ld,_emscripten_bind_WebIDLWrapper_GetAttributeFloat_3:Fk,_i64Add:sl,_malloc:cb,_emscripten_enum_draco_GeometryAttribute_Type_NORMAL:Vm,___cxa_is_pointer_type:Bl,_emscripten_bind_PointAttribute_size_0:Gm,_emscripten_enum_draco_GeometryAttribute_Type_COLOR:Wm,_emscripten_enum_draco_GeometryAttribute_Type_POSITION:ln,_emscripten_bind_VoidPtr___destroy___0:mm,_memset:Vi,_emscripten_bind_PointAttribute_attribute_type_0:vm,_sbrk:qj,_emscripten_bind_DecoderBuffer_Init_2:Il,_emscripten_enum_draco_EncodedGeometryType_TRIANGULAR_MESH:Vm,_emscripten_bind_DecoderBuffer___destroy___0:Jl,_emscripten_bind_PointAttribute_custom_id_0:um,_emscripten_enum_draco_GeometryAttribute_Type_INVALID:Tm,_emscripten_bind_DracoInt32Array___destroy___0:Yj,_emscripten_bind_Mesh_num_points_0:Im,___uremdi3:nk,_emscripten_bind_Mesh_Mesh_0:om,_emscripten_bind_WebIDLWrapper_GetAttribute_2:ql,_emscripten_bind_PointAttribute_components_count_0:tm,_emscripten_enum_draco_EncodedGeometryType_POINT_CLOUD:ln,_emscripten_enum_draco_GeometryAttribute_Type_TEX_COORD:Rm,_emscripten_enum_draco_GeometryAttribute_Type_GENERIC:Um,_emscripten_bind_WebIDLWrapper_GetFaceFromMesh_3:Qk,_emscripten_bind_DracoInt32Array_DracoInt32Array_0:Yl,_pthread_self:ln,_emscripten_bind_PointAttribute_data_type_0:Dm,_llvm_bswap_i16:Nm,_emscripten_bind_Mesh_num_attributes_0:cm,_emscripten_bind_DracoFloat32Array_GetValue_1:Fl,_emscripten_bind_DracoFloat32Array___destroy___0:Yj,_emscripten_bind_PointCloud_num_points_0:Im,_emscripten_bind_PointCloud___destroy___0:xl,_emscripten_bind_GeometryAttribute_GeometryAttribute_0:Kl,___muldsi3:Nj,_emscripten_bind_PointAttribute_PointAttribute_0:Tl,_free:Gb,_emscripten_enum_draco_EncodedGeometryType_INVALID_GEOMETRY_TYPE:Tm,_emscripten_bind_GeometryAttribute___destroy___0:mm,_emscripten_bind_Mesh_num_faces_0:Xl,_emscripten_bind_DracoInt32Array_GetValue_1:Rl,_emscripten_bind_PointAttribute_byte_stride_0:Am,_emscripten_bind_WebIDLWrapper_GetAttributeId_2:Yk,_memcpy:Ii,_emscripten_bind_WebIDLWrapper_WebIDLWrapper_0:lm,_memmove:Wj,___muldi3:uk,_emscripten_bind_PointCloud_num_attributes_0:cm,_emscripten_bind_WebIDLWrapper___destroy___0:mm,_emscripten_bind_WebIDLWrapper_DecodePointCloudFromBuffer_1:il,_emscripten_bind_WebIDLWrapper_GetAttributeFloatForAllPoints_3:pk,_emscripten_bind_PointCloud_PointCloud_0:fm,_emscripten_bind_PointAttribute___destroy___0:Ci,___cxa_can_catch:ak,runPostSets:$k,_emscripten_replace_memory:Qa,stackAlloc:Vl,stackSave:jn,stackRestore:bn,establishStackSpace:Hm,setThrew:nm,setTempRet0:dn,getTempRet0:hn,dynCall_iiii:Hl,dynCall_viiiii:el,dynCall_vi:Km,dynCall_iiiiiii:Kk,dynCall_ii:Cm,dynCall_viii:Sl,dynCall_v:Zm,dynCall_viiiiii:Rk,dynCall_iii:im,dynCall_viiii:yl}}) +var Na=[Bq,ao,el,sl,xn,ti,yn,Kf,xd,Fk,Di,Bk,Rl,zi,Ti,Rg,ol,El,Tm,rj,Bq,Bq,Bq,Bq,Bq,Bq,Bq,Bq,Bq,Bq,Bq,Bq];var Oa=[cq,cj,ah,cq];var Pa=[jr,fr,_q,Gm,tm,$g,gq,pb,Ek,vk,$k,Nk,Hj,Dj,Dj,jj,up,im,Xl,nm,Yl,Yl,Yl,Yl,Uj,Lj,zk,ik,Zk,Kk,ll,_k,Yl,Yl,Qj,Kj,sk,dk,Uk,Hk,gl,Vk,dl,Wk,Xl,fr,_q,_q,fr,_q,_q,_q,bl,Pk,Ul,Cl,Nm,Am,qn,en,_q,_q,Yk,Mk,Ql,xl,Jm,um,gn,an,fr,_q,_q,_q,fl,Xk,$l,Ll,Zm,Fm,vn,on,_q,_q,cl,Qk,Vl,Dl,Om,Bm,rn,fn,bi,Wo,Dj,fr,_q,Dj,Nk,Dj,hj,aj,_d,Vn,hk,_j,bn,Pm,Zl,km,dm,jn,_m,bm,lk,ck,Nd,Cn,Ae,Hn,fr,yq,fr,fr,yq,fr,yq,pn];var Qa=[Wq,qk,Zf,Hc,yk,Wq,Wq,Wq];var Ra=[tp,Xd,kc,Xb,rb,ce,Be,jm,lc,Yb,jb,be,me,jm,qj,Ee,Zc,Db,Bg,jh,yc,Le,Yc,Ab,ug,dh,xc,vj,Ie,fd,Fb,Hg,oh,Ac,Se,ed,Bb,Cg,kh,zc,tp,tp,tp,tp,tp,tp,tp,tp,tp,tp,tp,tp,tp,tp,tp,tp,tp,tp,tp,tp,tp,tp,tp,tp];var Sa=[er,Dq,Fq,Wj,jp,nq,Fq,gr,Fq,Fq,le,Rk,Fq,Fq,Kn,gr,gp,Up,gr,gr,Fq,gr,Fq,Fq,Fl,Dq,Fl,Nn,Fl,Xp,yl,Fq,Yn,yl,Fq,_n,jk,Fq,Fq,Fl,Dq,Fl,Nn,Fl,Xp,yl,Fq,Yn,yl,Fq,_n,jk,Fq,Df,Dq,Dq,Xp,gr,Up,Fq,gr,Fq,Xp,Fq,zl,Dq,zl,Nn,zl,Xp,vl,Fq,Yn,vl,Fq,_n,ek,Fq,Fq,zl,Dq,zl,Nn,zl,Xp,vl,Fq,Yn,vl,Fq,_n,ek,Fq,gr,Up,Fq,gr,Fq,Dq,Fq,zl,Dq,zl,Nn,zl,Xp,vl,Fq,Yn,vl,Fq,_n,ek,Fq,Fq,zl,Dq,zl,Nn,zl,Xp,vl,Fq,Yn,vl,Fq,_n,ek,Fq,Ke,Rj,$i,Rj,Cb,lg,po,wo,so,db,Fq,Up,cp,Ng,Wf,Wg,bb,Fq,Up,cp,cb,Fq,Up,cp,mn,Rq,er,er,er,er,er,er,er,er,er,er,er,er,er,er,er,er,er,er,er,er,er,er,er,er,er,er,er,er,er,er,er,er,er,er,er,er,er,er,er,er,er,er,er,er,er,er,er,er,er,er,er,er,er,er,er,er,er,er,er,er,er,er,er,er,er,er,er,er,er,er,er,er,er,er,er,er,er,er,er,er,er,er,er,er,er,er,er,er,er,er,er,er,er,er,er,er,er,er,er,er,er];var Ta=[Iq,gg,bg,xg,nj,ok,Iq,Iq];var Ua=[lr,Uq,Fi,Gn];var Va=[Rp,Tl,Sk,Rp];var Wa=[Qq,Ml,Eh,ic,Pl,$o,iq,Cp,iq,iq,Ao,Cp,qh,nl,de,To,iq,gi,He,Um,_l,Ye,Km,_l,Te,Mm,_l,Eg,He,Um,_l,Ye,Km,_l,Te,Mm,_l,Eg,ro,cg,ii,To,iq,Hm,ng,Um,Wl,Lg,Km,Wl,Jg,Mm,Wl,bj,ng,Um,Wl,Lg,Km,Wl,Jg,Mm,Wl,bj,To,iq,Vm,rg,Um,Wl,Sg,Km,Wl,Og,Mm,Wl,ij,rg,Um,Wl,Sg,Km,Wl,Og,Mm,Wl,ij,_e,Qg,ul,ak,Zj,Vg,Em,Gi,Cp,Vb,Vg,Sn,Rn,Pn,vo,si,Ai,Tb,uf,yf,wf,vo,si,Ai,Tb,vo,si,Ai,Tb,Qq,Qq,Qq,Qq,Qq,Qq,Qq,Qq,Qq,Qq,Qq,Qq];var Xa=[rq,Qi,Dh,om,kl,rq,rq,rq];return{_emscripten_bind_Decoder_GetAttributeFloat_3:Ln,_emscripten_bind_PointAttribute_normalized_0:bq,_bitshift64Lshr:Tn,_emscripten_bind_Decoder_GetAttributeFloatForAllPoints_3:nn,_emscripten_bind_DecoderBuffer_Init_2:Zo,_emscripten_bind_PointAttribute_size_0:pq,_bitshift64Ashr:An,_sbrk:Il,_memcpy:Mg,stackSave:ir,_emscripten_enum_draco_GeometryAttribute_Type_INVALID:Vq,_emscripten_bind_Decoder_GetAttributeIdByName_2:Bo,_emscripten_enum_draco_EncodedGeometryType_POINT_CLOUD:Xq,___udivmoddi4:nd,_emscripten_bind_Status_ok_0:tq,_emscripten_bind_Mesh_num_faces_0:pp,_emscripten_get_global_libc:cr,_emscripten_bind_Decoder_DecodeBufferToPointCloud_2:Un,_emscripten_enum_draco_AttributeTransformType_ATTRIBUTE_NO_TRANSFORM:Xq,runPostSets:Wn,_emscripten_bind_Decoder_GetEncodedGeometryType_1:Ko,___cxa_can_catch:ym,_free:ac,_emscripten_bind_GeometryAttribute___destroy___0:Vp,_emscripten_enum_draco_EncodedGeometryType_INVALID_GEOMETRY_TYPE:Vq,_emscripten_bind_PointAttribute_byte_stride_0:jq,_emscripten_bind_Metadata_Metadata_0:am,_emscripten_bind_AttributeQuantizationTransform_min_value_1:Jo,_emscripten_bind_Decoder_Decoder_0:$p,_emscripten_bind_MetadataQuerier_GetStringEntry_2:no,_emscripten_bind_MetadataQuerier_GetIntEntry_2:yo,_emscripten_bind_Decoder___destroy___0:nk,_emscripten_enum_draco_AttributeTransformType_ATTRIBUTE_OCTAHEDRON_TRANSFORM:Nq,getTempRet0:hr,setThrew:Wp,_emscripten_bind_MetadataQuerier_HasStringEntry_2:lo,_emscripten_bind_AttributeTransformData___destroy___0:Xm,_emscripten_bind_PointAttribute_num_components_0:hq,___cxa_is_pointer_type:Uo,_emscripten_bind_AttributeTransformData_AttributeTransformData_0:Eo,_llvm_cttz_i32:Cm,_emscripten_bind_AttributeQuantizationTransform___destroy___0:Mo,stackAlloc:mp,_emscripten_bind_DracoInt32Array___destroy___0:Dm,_emscripten_bind_Mesh_num_points_0:uq,___divdi3:pk,_emscripten_bind_Mesh_Mesh_0:aq,_emscripten_bind_MetadataQuerier_MetadataQuerier_0:Pp,_emscripten_bind_Decoder_GetAttributeIdByMetadataEntry_3:Fn,_emscripten_bind_MetadataQuerier_HasDoubleEntry_2:mo,_emscripten_bind_MetadataQuerier_GetDoubleEntry_2:oo,_emscripten_bind_Mesh_num_attributes_0:zp,_emscripten_bind_AttributeOctahedronTransform_quantization_bits_0:Up,_emscripten_bind_AttributeOctahedronTransform___destroy___0:Mo,_llvm_bswap_i32:Np,_emscripten_bind_Decoder_GetAttributeMetadata_2:uo,_emscripten_bind_PointAttribute_unique_id_0:mq,establishStackSpace:qq,_emscripten_enum_draco_StatusCode_IO_ERROR:Tq,_emscripten_bind_MetadataQuerier_HasIntEntry_2:xo,_emscripten_bind_Decoder_GetTriangleStripsFromMesh_2:eo,_emscripten_enum_draco_GeometryAttribute_Type_TEX_COORD:Hq,_emscripten_bind_PointCloud_num_attributes_0:zp,_emscripten_bind_DecoderBuffer_DecoderBuffer_0:rp,_emscripten_enum_draco_GeometryAttribute_Type_POSITION:Xq,_emscripten_bind_DracoInt32Array_size_0:Jp,_emscripten_bind_Decoder_SkipAttributeTransform_1:Io,_emscripten_enum_draco_AttributeTransformType_ATTRIBUTE_QUANTIZATION_TRANSFORM:Mq,_emscripten_enum_draco_StatusCode_ERROR:Vq,_emscripten_bind_AttributeQuantizationTransform_quantization_bits_0:Up,_emscripten_enum_draco_StatusCode_INVALID_PARAMETER:Lq,_emscripten_enum_draco_GeometryAttribute_Type_COLOR:Nq,_emscripten_bind_VoidPtr___destroy___0:Vp,_memset:ej,_emscripten_bind_PointAttribute_attribute_type_0:eq,_emscripten_bind_MetadataQuerier___destroy___0:Vp,_emscripten_bind_DracoInt32Array_GetValue_1:sp,_emscripten_bind_DecoderBuffer___destroy___0:_o,_emscripten_bind_Decoder_GetAttribute_2:Qo,_emscripten_enum_draco_EncodedGeometryType_TRIANGULAR_MESH:Mq,_i64Subtract:Xn,setTempRet0:br,_emscripten_bind_DracoInt32Array_DracoInt32Array_0:qp,_emscripten_enum_draco_StatusCode_UNKNOWN_VERSION:Pq,_emscripten_bind_DracoFloat32Array___destroy___0:Dm,_emscripten_bind_PointCloud_num_points_0:uq,_emscripten_bind_PointCloud___destroy___0:Mo,_emscripten_bind_GeometryAttribute_GeometryAttribute_0:ap,___muldsi3:gm,_emscripten_bind_Decoder_GetFaceFromMesh_3:$n,_emscripten_bind_PointAttribute_data_type_0:nq,_emscripten_bind_DracoFloat32Array_size_0:Jp,_emscripten_bind_AttributeOctahedronTransform_InitFromAttribute_1:qo,_malloc:$a,_emscripten_bind_PointAttribute_GetAttributeTransformData_0:Zp,_emscripten_bind_PointAttribute_byte_offset_0:kq,_emscripten_replace_memory:Ma,_memmove:rm,_emscripten_bind_PointCloud_PointCloud_0:Fp,_emscripten_bind_Status_error_msg_0:io,_emscripten_bind_Mesh___destroy___0:Mo,_emscripten_bind_Metadata___destroy___0:ep,_emscripten_bind_Status___destroy___0:ho,___udivdi3:Dp,_emscripten_enum_draco_AttributeTransformType_ATTRIBUTE_INVALID_TRANSFORM:Vq,_emscripten_bind_AttributeQuantizationTransform_AttributeQuantizationTransform_0:Rm,_emscripten_bind_AttributeQuantizationTransform_range_0:Tp,_bitshift64Shl:On,_emscripten_bind_Decoder_GetAttributeId_2:co,_emscripten_enum_draco_StatusCode_OK:Xq,_emscripten_bind_AttributeTransformData_transform_type_0:Cq,_emscripten_bind_Status_code_0:Cq,___muldi3:kn,_emscripten_bind_AttributeOctahedronTransform_AttributeOctahedronTransform_0:Fo,___uremdi3:$m,_emscripten_bind_DracoFloat32Array_DracoFloat32Array_0:qp,_emscripten_enum_draco_GeometryAttribute_Type_GENERIC:Kq,_i64Add:Ho,_emscripten_bind_Decoder_DecodeBufferToMesh_2:ko,_emscripten_bind_DracoFloat32Array_GetValue_1:bp,_emscripten_bind_PointAttribute_PointAttribute_0:lp,_emscripten_bind_Decoder_GetMetadata_1:fp,_emscripten_enum_draco_GeometryAttribute_Type_NORMAL:Mq,stackRestore:$q,_emscripten_bind_AttributeQuantizationTransform_InitFromAttribute_1:qo,_emscripten_bind_PointAttribute___destroy___0:zj,_emscripten_enum_draco_StatusCode_UNSUPPORTED_VERSION:Jq,stackAlloc:mp,stackSave:ir,stackRestore:$q,establishStackSpace:qq,setThrew:Wp,setTempRet0:br,getTempRet0:hr,dynCall_iiii:Yo,dynCall_viiiii:jo,dynCall_vi:vq,dynCall_vii:_p,dynCall_iiiiiii:zn,dynCall_ii:lq,dynCall_viii:kp,dynCall_v:Sq,dynCall_viiiiii:Jn,dynCall_iii:Mp,dynCall_viiii:No}}) // EMSCRIPTEN_END_ASM -(Module.asmGlobalArg,Module.asmLibraryArg,buffer);var _emscripten_bind_WebIDLWrapper_DecodeMeshFromBuffer_1=Module["_emscripten_bind_WebIDLWrapper_DecodeMeshFromBuffer_1"]=asm["_emscripten_bind_WebIDLWrapper_DecodeMeshFromBuffer_1"];var _emscripten_bind_DecoderBuffer_DecoderBuffer_0=Module["_emscripten_bind_DecoderBuffer_DecoderBuffer_0"]=asm["_emscripten_bind_DecoderBuffer_DecoderBuffer_0"];var _emscripten_bind_Mesh___destroy___0=Module["_emscripten_bind_Mesh___destroy___0"]=asm["_emscripten_bind_Mesh___destroy___0"];var _emscripten_bind_PointCloud___destroy___0=Module["_emscripten_bind_PointCloud___destroy___0"]=asm["_emscripten_bind_PointCloud___destroy___0"];var _i64Subtract=Module["_i64Subtract"]=asm["_i64Subtract"];var ___udivdi3=Module["___udivdi3"]=asm["___udivdi3"];var _emscripten_bind_WebIDLWrapper_GetEncodedGeometryType_1=Module["_emscripten_bind_WebIDLWrapper_GetEncodedGeometryType_1"]=asm["_emscripten_bind_WebIDLWrapper_GetEncodedGeometryType_1"];var _emscripten_bind_PointAttribute_byte_offset_0=Module["_emscripten_bind_PointAttribute_byte_offset_0"]=asm["_emscripten_bind_PointAttribute_byte_offset_0"];var _emscripten_bind_WebIDLWrapper_DecodePointCloudFromBuffer_1=Module["_emscripten_bind_WebIDLWrapper_DecodePointCloudFromBuffer_1"]=asm["_emscripten_bind_WebIDLWrapper_DecodePointCloudFromBuffer_1"];var _emscripten_bind_PointAttribute_normalized_0=Module["_emscripten_bind_PointAttribute_normalized_0"]=asm["_emscripten_bind_PointAttribute_normalized_0"];var _bitshift64Lshr=Module["_bitshift64Lshr"]=asm["_bitshift64Lshr"];var ___muldsi3=Module["___muldsi3"]=asm["___muldsi3"];var _emscripten_bind_WebIDLWrapper_GetAttributeFloat_3=Module["_emscripten_bind_WebIDLWrapper_GetAttributeFloat_3"]=asm["_emscripten_bind_WebIDLWrapper_GetAttributeFloat_3"];var _emscripten_bind_WebIDLWrapper_GetAttributeId_2=Module["_emscripten_bind_WebIDLWrapper_GetAttributeId_2"]=asm["_emscripten_bind_WebIDLWrapper_GetAttributeId_2"];var _emscripten_bind_WebIDLWrapper___destroy___0=Module["_emscripten_bind_WebIDLWrapper___destroy___0"]=asm["_emscripten_bind_WebIDLWrapper___destroy___0"];var ___cxa_is_pointer_type=Module["___cxa_is_pointer_type"]=asm["___cxa_is_pointer_type"];var _emscripten_bind_PointAttribute_size_0=Module["_emscripten_bind_PointAttribute_size_0"]=asm["_emscripten_bind_PointAttribute_size_0"];var _emscripten_enum_draco_GeometryAttribute_Type_COLOR=Module["_emscripten_enum_draco_GeometryAttribute_Type_COLOR"]=asm["_emscripten_enum_draco_GeometryAttribute_Type_COLOR"];var _emscripten_enum_draco_GeometryAttribute_Type_POSITION=Module["_emscripten_enum_draco_GeometryAttribute_Type_POSITION"]=asm["_emscripten_enum_draco_GeometryAttribute_Type_POSITION"];var _emscripten_bind_VoidPtr___destroy___0=Module["_emscripten_bind_VoidPtr___destroy___0"]=asm["_emscripten_bind_VoidPtr___destroy___0"];var _llvm_cttz_i32=Module["_llvm_cttz_i32"]=asm["_llvm_cttz_i32"];var _emscripten_bind_PointAttribute_attribute_type_0=Module["_emscripten_bind_PointAttribute_attribute_type_0"]=asm["_emscripten_bind_PointAttribute_attribute_type_0"];var _sbrk=Module["_sbrk"]=asm["_sbrk"];var _emscripten_bind_DecoderBuffer_Init_2=Module["_emscripten_bind_DecoderBuffer_Init_2"]=asm["_emscripten_bind_DecoderBuffer_Init_2"];var _memcpy=Module["_memcpy"]=asm["_memcpy"];var _emscripten_bind_DecoderBuffer___destroy___0=Module["_emscripten_bind_DecoderBuffer___destroy___0"]=asm["_emscripten_bind_DecoderBuffer___destroy___0"];var _emscripten_bind_PointAttribute_custom_id_0=Module["_emscripten_bind_PointAttribute_custom_id_0"]=asm["_emscripten_bind_PointAttribute_custom_id_0"];var _emscripten_enum_draco_GeometryAttribute_Type_INVALID=Module["_emscripten_enum_draco_GeometryAttribute_Type_INVALID"]=asm["_emscripten_enum_draco_GeometryAttribute_Type_INVALID"];var _emscripten_replace_memory=Module["_emscripten_replace_memory"]=asm["_emscripten_replace_memory"];var _emscripten_enum_draco_EncodedGeometryType_TRIANGULAR_MESH=Module["_emscripten_enum_draco_EncodedGeometryType_TRIANGULAR_MESH"]=asm["_emscripten_enum_draco_EncodedGeometryType_TRIANGULAR_MESH"];var _bitshift64Shl=Module["_bitshift64Shl"]=asm["_bitshift64Shl"];var ___uremdi3=Module["___uremdi3"]=asm["___uremdi3"];var _emscripten_bind_Mesh_Mesh_0=Module["_emscripten_bind_Mesh_Mesh_0"]=asm["_emscripten_bind_Mesh_Mesh_0"];var _emscripten_bind_WebIDLWrapper_GetAttribute_2=Module["_emscripten_bind_WebIDLWrapper_GetAttribute_2"]=asm["_emscripten_bind_WebIDLWrapper_GetAttribute_2"];var _emscripten_bind_DracoFloat32Array_DracoFloat32Array_0=Module["_emscripten_bind_DracoFloat32Array_DracoFloat32Array_0"]=asm["_emscripten_bind_DracoFloat32Array_DracoFloat32Array_0"];var _emscripten_enum_draco_EncodedGeometryType_POINT_CLOUD=Module["_emscripten_enum_draco_EncodedGeometryType_POINT_CLOUD"]=asm["_emscripten_enum_draco_EncodedGeometryType_POINT_CLOUD"];var _emscripten_bind_PointAttribute_components_count_0=Module["_emscripten_bind_PointAttribute_components_count_0"]=asm["_emscripten_bind_PointAttribute_components_count_0"];var ___udivmoddi4=Module["___udivmoddi4"]=asm["___udivmoddi4"];var _emscripten_enum_draco_GeometryAttribute_Type_GENERIC=Module["_emscripten_enum_draco_GeometryAttribute_Type_GENERIC"]=asm["_emscripten_enum_draco_GeometryAttribute_Type_GENERIC"];var _i64Add=Module["_i64Add"]=asm["_i64Add"];var _emscripten_bind_DracoInt32Array_DracoInt32Array_0=Module["_emscripten_bind_DracoInt32Array_DracoInt32Array_0"]=asm["_emscripten_bind_DracoInt32Array_DracoInt32Array_0"];var _pthread_self=Module["_pthread_self"]=asm["_pthread_self"];var _emscripten_bind_PointAttribute_PointAttribute_0=Module["_emscripten_bind_PointAttribute_PointAttribute_0"]=asm["_emscripten_bind_PointAttribute_PointAttribute_0"];var _emscripten_bind_WebIDLWrapper_GetFaceFromMesh_3=Module["_emscripten_bind_WebIDLWrapper_GetFaceFromMesh_3"]=asm["_emscripten_bind_WebIDLWrapper_GetFaceFromMesh_3"];var _llvm_bswap_i16=Module["_llvm_bswap_i16"]=asm["_llvm_bswap_i16"];var _emscripten_bind_Mesh_num_attributes_0=Module["_emscripten_bind_Mesh_num_attributes_0"]=asm["_emscripten_bind_Mesh_num_attributes_0"];var _emscripten_bind_DracoFloat32Array_GetValue_1=Module["_emscripten_bind_DracoFloat32Array_GetValue_1"]=asm["_emscripten_bind_DracoFloat32Array_GetValue_1"];var _emscripten_bind_DracoFloat32Array___destroy___0=Module["_emscripten_bind_DracoFloat32Array___destroy___0"]=asm["_emscripten_bind_DracoFloat32Array___destroy___0"];var _emscripten_bind_PointCloud_num_points_0=Module["_emscripten_bind_PointCloud_num_points_0"]=asm["_emscripten_bind_PointCloud_num_points_0"];var _emscripten_bind_DracoInt32Array___destroy___0=Module["_emscripten_bind_DracoInt32Array___destroy___0"]=asm["_emscripten_bind_DracoInt32Array___destroy___0"];var _emscripten_bind_GeometryAttribute_GeometryAttribute_0=Module["_emscripten_bind_GeometryAttribute_GeometryAttribute_0"]=asm["_emscripten_bind_GeometryAttribute_GeometryAttribute_0"];var runPostSets=Module["runPostSets"]=asm["runPostSets"];var _memset=Module["_memset"]=asm["_memset"];var _emscripten_bind_PointAttribute_data_type_0=Module["_emscripten_bind_PointAttribute_data_type_0"]=asm["_emscripten_bind_PointAttribute_data_type_0"];var _emscripten_bind_Mesh_num_points_0=Module["_emscripten_bind_Mesh_num_points_0"]=asm["_emscripten_bind_Mesh_num_points_0"];var _free=Module["_free"]=asm["_free"];var _emscripten_bind_GeometryAttribute___destroy___0=Module["_emscripten_bind_GeometryAttribute___destroy___0"]=asm["_emscripten_bind_GeometryAttribute___destroy___0"];var _emscripten_enum_draco_EncodedGeometryType_INVALID_GEOMETRY_TYPE=Module["_emscripten_enum_draco_EncodedGeometryType_INVALID_GEOMETRY_TYPE"]=asm["_emscripten_enum_draco_EncodedGeometryType_INVALID_GEOMETRY_TYPE"];var _emscripten_bind_Mesh_num_faces_0=Module["_emscripten_bind_Mesh_num_faces_0"]=asm["_emscripten_bind_Mesh_num_faces_0"];var _emscripten_enum_draco_GeometryAttribute_Type_NORMAL=Module["_emscripten_enum_draco_GeometryAttribute_Type_NORMAL"]=asm["_emscripten_enum_draco_GeometryAttribute_Type_NORMAL"];var _emscripten_bind_PointAttribute_byte_stride_0=Module["_emscripten_bind_PointAttribute_byte_stride_0"]=asm["_emscripten_bind_PointAttribute_byte_stride_0"];var _malloc=Module["_malloc"]=asm["_malloc"];var _emscripten_bind_WebIDLWrapper_WebIDLWrapper_0=Module["_emscripten_bind_WebIDLWrapper_WebIDLWrapper_0"]=asm["_emscripten_bind_WebIDLWrapper_WebIDLWrapper_0"];var _memmove=Module["_memmove"]=asm["_memmove"];var ___muldi3=Module["___muldi3"]=asm["___muldi3"];var _emscripten_bind_PointCloud_num_attributes_0=Module["_emscripten_bind_PointCloud_num_attributes_0"]=asm["_emscripten_bind_PointCloud_num_attributes_0"];var _emscripten_enum_draco_GeometryAttribute_Type_TEX_COORD=Module["_emscripten_enum_draco_GeometryAttribute_Type_TEX_COORD"]=asm["_emscripten_enum_draco_GeometryAttribute_Type_TEX_COORD"];var _emscripten_bind_DracoInt32Array_GetValue_1=Module["_emscripten_bind_DracoInt32Array_GetValue_1"]=asm["_emscripten_bind_DracoInt32Array_GetValue_1"];var _emscripten_bind_WebIDLWrapper_GetAttributeFloatForAllPoints_3=Module["_emscripten_bind_WebIDLWrapper_GetAttributeFloatForAllPoints_3"]=asm["_emscripten_bind_WebIDLWrapper_GetAttributeFloatForAllPoints_3"];var _emscripten_bind_PointCloud_PointCloud_0=Module["_emscripten_bind_PointCloud_PointCloud_0"]=asm["_emscripten_bind_PointCloud_PointCloud_0"];var _emscripten_bind_PointAttribute___destroy___0=Module["_emscripten_bind_PointAttribute___destroy___0"]=asm["_emscripten_bind_PointAttribute___destroy___0"];var ___cxa_can_catch=Module["___cxa_can_catch"]=asm["___cxa_can_catch"];var dynCall_iiii=Module["dynCall_iiii"]=asm["dynCall_iiii"];var dynCall_viiiii=Module["dynCall_viiiii"]=asm["dynCall_viiiii"];var dynCall_vi=Module["dynCall_vi"]=asm["dynCall_vi"];var dynCall_iiiiiii=Module["dynCall_iiiiiii"]=asm["dynCall_iiiiiii"];var dynCall_ii=Module["dynCall_ii"]=asm["dynCall_ii"];var dynCall_viii=Module["dynCall_viii"]=asm["dynCall_viii"];var dynCall_v=Module["dynCall_v"]=asm["dynCall_v"];var dynCall_viiiiii=Module["dynCall_viiiiii"]=asm["dynCall_viiiiii"];var dynCall_iii=Module["dynCall_iii"]=asm["dynCall_iii"];var dynCall_viiii=Module["dynCall_viiii"]=asm["dynCall_viiii"];Runtime.stackAlloc=asm["stackAlloc"];Runtime.stackSave=asm["stackSave"];Runtime.stackRestore=asm["stackRestore"];Runtime.establishStackSpace=asm["establishStackSpace"];Runtime.setTempRet0=asm["setTempRet0"];Runtime.getTempRet0=asm["getTempRet0"];function ExitStatus(status){this.name="ExitStatus";this.message="Program terminated with exit("+status+")";this.status=status}ExitStatus.prototype=new Error;ExitStatus.prototype.constructor=ExitStatus;var initialStackTop;var preloadStartTime=null;var calledMain=false;dependenciesFulfilled=function runCaller(){if(!Module["calledRun"])run();if(!Module["calledRun"])dependenciesFulfilled=runCaller};Module["callMain"]=Module.callMain=function callMain(args){args=args||[];ensureInitRuntime();var argc=args.length+1;function pad(){for(var i=0;i<4-1;i++){argv.push(0)}}var argv=[allocate(intArrayFromString(Module["thisProgram"]),"i8",ALLOC_NORMAL)];pad();for(var i=0;i0){return}preRun();if(runDependencies>0)return;if(Module["calledRun"])return;function doRun(){if(Module["calledRun"])return;Module["calledRun"]=true;if(ABORT)return;ensureInitRuntime();preMain();if(Module["onRuntimeInitialized"])Module["onRuntimeInitialized"]();if(Module["_main"]&&shouldRunNow)Module["callMain"](args);postRun()}if(Module["setStatus"]){Module["setStatus"]("Running...");setTimeout((function(){setTimeout((function(){Module["setStatus"]("")}),1);doRun()}),1)}else{doRun()}}Module["run"]=Module.run=run;function exit(status,implicit){if(implicit&&Module["noExitRuntime"]){return}if(Module["noExitRuntime"]){}else{ABORT=true;EXITSTATUS=status;STACKTOP=initialStackTop;exitRuntime();if(Module["onExit"])Module["onExit"](status)}if(ENVIRONMENT_IS_NODE){process["exit"](status)}else if(ENVIRONMENT_IS_SHELL&&typeof quit==="function"){quit(status)}throw new ExitStatus(status)}Module["exit"]=Module.exit=exit;var abortDecorators=[];function abort(what){if(what!==undefined){Module.print(what);Module.printErr(what);what=JSON.stringify(what)}else{what=""}ABORT=true;EXITSTATUS=1;var extra="\nIf this abort() is unexpected, build with -s ASSERTIONS=1 which can give more information.";var output="abort("+what+") at "+stackTrace()+extra;if(abortDecorators){abortDecorators.forEach((function(decorator){output=decorator(output,what)}))}throw output}Module["abort"]=Module.abort=abort;if(Module["preInit"]){if(typeof Module["preInit"]=="function")Module["preInit"]=[Module["preInit"]];while(Module["preInit"].length>0){Module["preInit"].pop()()}}var shouldRunNow=true;if(Module["noInitialRun"]){shouldRunNow=false}run();function WrapperObject(){}WrapperObject.prototype=Object.create(WrapperObject.prototype);WrapperObject.prototype.constructor=WrapperObject;WrapperObject.prototype.__class__=WrapperObject;WrapperObject.__cache__={};Module["WrapperObject"]=WrapperObject;function getCache(__class__){return(__class__||WrapperObject).__cache__}Module["getCache"]=getCache;function wrapPointer(ptr,__class__){var cache=getCache(__class__);var ret=cache[ptr];if(ret)return ret;ret=Object.create((__class__||WrapperObject).prototype);ret.ptr=ptr;return cache[ptr]=ret}Module["wrapPointer"]=wrapPointer;function castObject(obj,__class__){return wrapPointer(obj.ptr,__class__)}Module["castObject"]=castObject;Module["NULL"]=wrapPointer(0);function destroy(obj){if(!obj["__destroy__"])throw"Error: Cannot destroy object. (Did you create it yourself?)";obj["__destroy__"]();delete getCache(obj.__class__)[obj.ptr]}Module["destroy"]=destroy;function compare(obj1,obj2){return obj1.ptr===obj2.ptr}Module["compare"]=compare;function getPointer(obj){return obj.ptr}Module["getPointer"]=getPointer;function getClass(obj){return obj.__class__}Module["getClass"]=getClass;var ensureCache={buffer:0,size:0,pos:0,temps:[],needed:0,prepare:(function(){if(this.needed){for(var i=0;i=this.size){assert(len>0);this.needed+=len;ret=Module["_malloc"](len);this.temps.push(ret)}else{ret=this.buffer+this.pos;this.pos+=len}return ret}),copy:(function(array,view,offset){var offsetShifted=offset;var bytes=view.BYTES_PER_ELEMENT;switch(bytes){case 2:offsetShifted>>=1;break;case 4:offsetShifted>>=2;break;case 8:offsetShifted>>=3;break}for(var i=0;i0){return}preRun();if(runDependencies>0)return;if(Module["calledRun"])return;function doRun(){if(Module["calledRun"])return;Module["calledRun"]=true;if(ABORT)return;ensureInitRuntime();preMain();if(Module["onRuntimeInitialized"])Module["onRuntimeInitialized"]();if(Module["_main"]&&shouldRunNow)Module["callMain"](args);postRun()}if(Module["setStatus"]){Module["setStatus"]("Running...");setTimeout((function(){setTimeout((function(){Module["setStatus"]("")}),1);doRun()}),1)}else{doRun()}}Module["run"]=Module.run=run;function exit(status,implicit){if(implicit&&Module["noExitRuntime"]){return}if(Module["noExitRuntime"]){}else{ABORT=true;EXITSTATUS=status;STACKTOP=initialStackTop;exitRuntime();if(Module["onExit"])Module["onExit"](status)}if(ENVIRONMENT_IS_NODE){process["exit"](status)}Module["quit"](status,new ExitStatus(status))}Module["exit"]=Module.exit=exit;var abortDecorators=[];function abort(what){if(Module["onAbort"]){Module["onAbort"](what)}if(what!==undefined){Module.print(what);Module.printErr(what);what=JSON.stringify(what)}else{what=""}ABORT=true;EXITSTATUS=1;var extra="\nIf this abort() is unexpected, build with -s ASSERTIONS=1 which can give more information.";var output="abort("+what+") at "+stackTrace()+extra;if(abortDecorators){abortDecorators.forEach((function(decorator){output=decorator(output,what)}))}throw output}Module["abort"]=Module.abort=abort;if(Module["preInit"]){if(typeof Module["preInit"]=="function")Module["preInit"]=[Module["preInit"]];while(Module["preInit"].length>0){Module["preInit"].pop()()}}var shouldRunNow=true;if(Module["noInitialRun"]){shouldRunNow=false}run();function WrapperObject(){}WrapperObject.prototype=Object.create(WrapperObject.prototype);WrapperObject.prototype.constructor=WrapperObject;WrapperObject.prototype.__class__=WrapperObject;WrapperObject.__cache__={};Module["WrapperObject"]=WrapperObject;function getCache(__class__){return(__class__||WrapperObject).__cache__}Module["getCache"]=getCache;function wrapPointer(ptr,__class__){var cache=getCache(__class__);var ret=cache[ptr];if(ret)return ret;ret=Object.create((__class__||WrapperObject).prototype);ret.ptr=ptr;return cache[ptr]=ret}Module["wrapPointer"]=wrapPointer;function castObject(obj,__class__){return wrapPointer(obj.ptr,__class__)}Module["castObject"]=castObject;Module["NULL"]=wrapPointer(0);function destroy(obj){if(!obj["__destroy__"])throw"Error: Cannot destroy object. (Did you create it yourself?)";obj["__destroy__"]();delete getCache(obj.__class__)[obj.ptr]}Module["destroy"]=destroy;function compare(obj1,obj2){return obj1.ptr===obj2.ptr}Module["compare"]=compare;function getPointer(obj){return obj.ptr}Module["getPointer"]=getPointer;function getClass(obj){return obj.__class__}Module["getClass"]=getClass;var ensureCache={buffer:0,size:0,pos:0,temps:[],needed:0,prepare:(function(){if(ensureCache.needed){for(var i=0;i=ensureCache.size){assert(len>0);ensureCache.needed+=len;ret=Module["_malloc"](len);ensureCache.temps.push(ret)}else{ret=ensureCache.buffer+ensureCache.pos;ensureCache.pos+=len}return ret}),copy:(function(array,view,offset){var offsetShifted=offset;var bytes=view.BYTES_PER_ELEMENT;switch(bytes){case 2:offsetShifted>>=1;break;case 4:offsetShifted>>=2;break;case 8:offsetShifted>>=3;break}for(var i=0;isi6}gExjj5QJZQ#*rgI=PBWA@RVqFHk{Sp;3@H}{)T$iEtiA~ zuNu18i=cW4o|4+j;3 z_8wlc`Nyv)F5i05wkxlix@z0i@ob>C&1<$57d?S@{(01%r!Fs^>|dnYuiZC26IkMj z9eej|pT1$o`}I@gJ-C0zbvvKB^SU5WY2#BQ@7zDLWAD_BJ8ryg|I??g-FZWhs-oppi+1mL`qXu_ZN_KoDSo3XY6(?tKX`D* z^vu*#x9{8&G+Ys`E&C5m@0dEgb9&~`_C0~M;tbzPaI)_@3ZB~WGuQ3dKeKb+UWc;= z(9j)Ga3oSe>CE;I!D4q8#XG*}icr%5s2>i@#X z{~Nps65a*+y8?j`M+v|Dlk5oX1@%V&9|L?83MLAU)r>F-P7AmpWlD`)0VzzBD*%O* zGZrSn807@^&5%Ijz(v|ntz)CAWMt(^r6=o%yN)#CI_y37u^X)N^kH;EEY=F^OoV z;I(^l@`iiza?xKs1yma~8c{eonFL9iCQxXSW+^=b>8^^C_>9%7lXNUxv-Zq0)p4RH zKIxiFCaH=NC{ax3r|DT-SBA|D@*W*)q>aYdB-dsDSENak;?rbuG>X@SjbLRumW~C{ zND?!H*6mziQvkz1@UUd-qM>xP8ygpWSi&)W+Zk zFIar(7w?-c_Uy6J4pP(AKQLF;3lBZ@sere2@6MU2M+Fx>WFTE1LibM zhi;s@etP?L`)KFB8+Xi1KfP+~)V8PZ-!XO7mDg(3G{Q*tYHJtrtFV+m@*-uAJI-b#cWt7hiex<-t#8(}(t6weR4} zHE8ePZyJxRm)ZjhG(8Mgj|?tuc@22o_PtYR!0VnCe4>#~J#~7=j^IDiP4xn6U=AzG zckk3CTdur(%eJe3d}`Z|U$rIpsg3m_45qTTsGpJ$xWbA7x+r zbTl;?c3v+6-*C=A`pb9BY`=c{%=W43W@GT=#||W`Ao$Tk+xO1w{MqeN{1xV>Zrr(d z>hShGhjvUoGWfSfXCQkiFv{!3V9Q_+lo0&rp&ipZopiYd$oJl`WiPx3Ej;$zfr5wR z*}9hwbQ#VcJ+VZSAA7D=*qsT)JiR)mL6oqqb`^sDImz8~0zm zV`gJ;Mic9A8>Z$@2d6LG>PxpD>}~a9dW473#UNCh)rGxndgLHI^$~}d_qu&I?%%g} z$KDxn@WWPm65n}nYQKawy)c8M3qINCq3`*Cm;<(r!N&hp$8m2F!>OvbJ?$|QsAzzF z*9FT5Nnx`@HJ$(HM-|i4+r=PtR@pR2l$8LprmFq<9JEP$Iv~?5O?G!4nomT$}eD!Z0s6jok86?)UF_i1Br;s2;t z9vLortTBpKl;StifvneqL3L^6X4r> zz^xTn>n_(cvR4p;X>u8x60ov>L7|t}ZYewp<Ne5$daE~yyb6b5{-evm}^iMW?nA2-Nm{URM=ev-E`er!-w z_tIQ%;hTFpw4XyNGJ)GKdrZAUYh5wSlEc<4uDIlhmlan}UB2a-OM~s1RDG%VR}CtF z{ucE=Zw&rd5B=BbuaVvpuXw^0SN_-)Q%~A*^)(uQJY}$ZtY90H&7lw1*PCewF`?E~ zbzQCa(D{<~;3{;*;PiE;4F#-QjCko_HWF*39gT#pW}93+)KiEJjVOcyBep@Z-b zVyBcoN2#(j#1vp%3VLL4Hhg1Vvf$s-LG9HCC?s9wtwfqxa~p&Iu{iU7-&3Co)zQ$0 zH#PdaaUUbjzirIhzqPL37@T$XK>s>go7yowy>EKz#)CId_}al#rbhbue~`~guJ4mB zKR!5m_qFzxc;?nRbTxh$L|dP1F9l|I6!=qD)ypy>t4bMef-dlRWALaR9lDqz8Lr+S zviyIIA#^#!v9eXe;H^C)w;C2|QsK%c1V1@wJytE~rLLKB)LhEz)n^Uh#`lLD2f(|! zXN=U_(qWcZRq?Qo8-vcEq!{GN!8ZuVp7Br(6@y~M2;!10S8Ta@>qWu!gWOaa7VcX5 zAG~#R>5%j?S$c$OO(T70VI|qe`x}EF7}UijOq5)4&Le}%dn~+#8+`>%kK(dm`}jfG zpjTs(?wj5boOaa4%24?>h?u^H^>Xkd=IXE-?LP5}Yo2)3RaaiUZOi6Lt4)nx|8(YV z_UxJ3$-m%pjV0ytVZGQHe7-T(eG~j$BkMlx4F0|`Sw327(tn|wo~M6kROPF@;ERpX zGQ(jeBC6c3vYo+~yX7nSKQ<<+t!P!Z6 zYxON1pB3L8KR13}{EzWJ#b1fP5q~rOm-xHsf2GfAyt(n-##iR}`D)|+ zjlXJqweio58(tQ@DtdMF#^_DaozdOVZ$zJqJ|F#4^c8--8~s;wTl{nJOX8RMpTCIz zGXB%}J@FgkH^sjgzslZzHvU}vsrb|JU&o(_KNf#H{!;v9@=)x{BKz~Q=%vXW$qSPg zCC^Eon>-_VW};7bCT~sNl)O24ee#CnRmrOppY)#OkCNX@en0u`cB)@4%KbU+d z`Sav2lJ_ScNZymYH~Cod@#HHi`zt{DmFRWp>(gIO-iCe zq4clPPo$qr|2F+>`i1l#(i`5>xIw?~X?(QtwZ*F|rM{%`a(?!VUfdgJBsN8^vg zAC5l|zcqeC{P*$S#h;Hq6MvHX|A>Dvd1dm7DJB`S$YYz42G0 zb6h>|CCkf_m-G9<_+`m^QwzciM< zyYZ36w;Jzje2Bl_ZoDFTZS?oi7ovZNz7&0#-!Db?a(!m}ocM+D9r2fL%=)14RUyHwOdHy|qdGfya*5v1tU*hlclh^Y1*~zeXs^PBWk1h2d zSnA)g)c<$ryT498k$f`wo8(i;=aaur{vr8t^hNI8n7$?brSwZyGDZCX0)=U*GokG~avpz-0xzuM2(i{5{S=5}AJIj1n3jb_how8OI-d9dr8#@UTx za#ykcz&VXP%re#q90`K68yT~~+~mPIjqC+>8*S1<9-cFjWk2syHMb;s+2rMD*3B_i zmNJ(8oG)cP)55oR@3&;H)&rpAL6Pk0gd2ja2rf-#^N^IO0C}aQR;5%jnOVBly8yX$ zcO%PQ>a$0)#ruNRuQxhD>sO`FF!8=8^!E-QKEVrczKYAKL5Do|8Bf%X&BThOzNP1&V%}8GG(?Io@=ehgAGAm1ea8(eQ3P?&f3GqJF86VqsL_**TR=Do~h4THG^N^?|P*;#i=1qla3Dt#=(pN2$M>yIP+$Y`@F8 zG^#hgY-FHD(q!LAFi~ryqqkoxbI%s5T={S9AqeW}gck^6SghLB0;~NE^@YszHS|y~#t!#B{&er-&y*-qKmBa^ zjfXsL{h#``r)SupM*`>(T>es+^#FZm*qigFdd{26w64^jtMa<%H;46--x6l;7-;_5 zT_!alarIlPwF4j|?pjYB6s4tndRLz)eX??F+g*&`Si+`;OlR*_Z6Q20TR40=4hTF4 zToeRH9)Cg9f(=&;u!sM6jym9ueyCeN;eq>%iLAu9c73!~q!n*6C1C=KViRbr9p{M? zUa^D}xnmPeq1YdtAqsPHtsRb|Tcl0MDwc19NS9UO&Xb}S47HlpM=LriJA|C9$~+cP zCwXk5V!`TMO@Xh;X*8?Mt4daUIL%wkmN&PQH#e6zH=e1+4LZr@!2kQ7u|P$r$Bv|92X@>8HdNPozrc=-#T?k5RoPLbMVB{$jpHpH_9xsUY4^(JRYPkPqy@I5yAW?_*A|zR$g1Gg8Xmu_< zAT*hkcLnqqw?lZ)D%79Eq3#z|YY=U6M4}FWR!}#F`?_fdS(fVb4`G`iYh&7KLa*J+PVj^_I-1vL>2{Deu|$J3kFrie8Kb*9 zqbf}TV1!hot-o!o&hjxRT*<@S>|m<|$SyW>6>_4qL3M{Eo8*y8W9l$9br|kKhFJ+o zJCxj!#5Hp)1X8LnfZ>`;CNRIin5!G%LxCghBp(sPYE;v;bxh(30w5hgsO3HOS0ahn z5MpVpyBM1J1F2;cm=^c)FMfi`ZT%{VDVNs*D@9sK8gI zDk@YIuzjkr8e)*u3=Oz`Kx-;>;!^MG^rKK;0Z_$*E0rt~Yg@B+ccLClM#5xNVluKm zSGke|;4~_68f6BQ@2gEiP)Z#Rm+fXo&+!+!NChuqyaX_dGZ0sVCxx~Wtkhyc{fN+LBq_ge}P>v zliP?F1V&A-zrU^$yEYEe4j#gm`IeN5>N11Fq!u<4QU<51ogY!teu%#Ble)s1r!ftdG{G7{HR& z!hB=~f-EzfB{mSyPy?fCK8pkwMOAguUp0W0R;N`?;+86xAIqvVOAd3Sn3c;3cuH8x z4}#@0LPHQ$=>6k6!s1i>KEC+Y9VL3*kg3BsdHlvabm*0^9p3{vKq=$9S_g{|M1RL; z2GK6J5dAGI>mY2n)~48B-;k#csoi4K;xVlYnAWA`F00%ncbE0!7%4vl$E&E{Un(h>1>cFB?VL&uo-A`~u{^z%se98IQR=M)>M%BnEg^5So9X zf>!vPehhaMIcwf9YsF&g6go@m*I_smt)(JrC@gG&JegwlBFjGUZ1wvYuHQ%KcN<8F z9gbMO5h&C074q9n2%n6fijVTJ#E`qY2w?bJ=|X84%o&*)SPdh9(w02DU{`yR3m+sd z$9J`ta#^vfy^PDMUG3#u@?C9YCdydkn8KR*s7i4rTYD8L z@c&_ckG9Xq8*L;(yAf~7CrOVPkscO3a9@NxtvfJt!0^C*yr&b1oZ>v?v+e>ck+}8B zG+(N`E&j;z=_FfQg*Wk^bb>hA zcmO0wen|=r8|Zl_dG>qO>a?r4N|rW6N+xU;!AmA5LPG0z&{4uCo#rHlRcXVoRMJxU zQYuc79jQ6CdQv+N*ev~n{Vj4=kI^+G630omnFLuMJy}B}^Xk!sqO7O5%WYyiN%=ebY@T7XmOJpEgD6~xze^%Va*S#G-Rv~bRZTt&`E4? zr6D5&92@9Fc>@lt4ITx3RgDdF8X7w`%CTcLXl#$zK!?F312l1)@Cqct9PP9kIq!?D3-}+C9@?q;RWFx1SuB; zBlT~l7x*Zj0*$y#YLA}NfWl0uGD?()9YL6m(?Z6564tyKvo123Eor;N$>U6)nt3L9 zJV6SHY6mK%7{j~f zM4KX%H+_OfMBgNLN>QfaqK3D6Kgqr1YbnY~sl#WgkmQimEF}~g+)GXTBqlYXL8mGv z=$zt~UFP?N;%LS`5ws-pII<_z126a6Wfq^wcx*#dyJO=jDsX;C$GeaklX<~jf=DCO zo{A*W9LZ=PhF}DCO;vLn9C|QgAmmkyWHd^g4@<{fH{);_V5*d+n@PIMH9O0k?x=SR zEYjC8>ClcztB!#pT&raza;H{X$KXfjKh*|u=&2GBcB$Oxlu8}6Py~=Q6Uo`@%&r}E zydt~S2}6o5jn2|Mf)P@1YJ$UjFiDZlaZw#9}#tGm^3Kg$! zRvqS+$vuZQd!GQ0`9mbY-Q=Q)PbvKne(T7Qh#x505Cj6fn8n*72NP-*$alK|3N|8G z!Avlb7Me&aW{Vti`>?Sm36RSOxTDO>#OwhE#!U}6 zu?p-#y-D@&hgyT;eF zk&4U?ANA5oCE%DvQYlpgmxirp``+VXQqsV3{bh3km`9b#3EuSCI*^NrZN0#7v7%|O z8-LL1EPI!capuTa3n&al4Vlkm1tZAfhGg+5hOi_y;MyoaBnIIz?nQM9sHDTZoS73& zMRl;8;+f8bQy8EdneI&I4*pc-riqr` zZ^QJqPD4sz)B(W+gVDly_#k`?f9dB?>o8#S(A>a=A_x+^@5Y6k$1?|zy-~VH}ET>K;mG`2ZoEVGWW7V{Ca2is_m_DJk{ z2o^HLh)?qD09+O227ClC!sJXo>YM54(CT%a+dM#;#L34lWX3Ba#ZwSz#kwchlnPjA zBc2*EBkG;)2Bqq3Rc{Ds>^^*;>@3-pz;94kr$J<*0=I`ZLgtk>8*w;jzGYGd09Uex*9v(t>l!I0qg&6>=UDR=h8Z}aC--yp853}{{4CP#7XCba zMid~rZRlg;pz?vf;Ac!yr?uabV7a{E)+0v(O)8dXG5H>eG|GI273pHIBBBN>LKW^5 z1hPcGP=!&BWzZfgaZz5S*VYOxqY<$z8Yw|D7_5kt+F_YSS3`3heX<((p9d`T%EPzc zqMMC3-MMRh5I6+RmEfU4aHqrJTq#@;U~&EgH9Ru%6_SM!`I->!9_?MVs_u(gucZT& z%v@ejK$Wac1X1gC^<+>&l}uW>?9Qn5`g$@bqDodLim3I5dNL@ZN>(S1sP)ErGPFdM zOcrgo(l^zU84X|s+%KqPfJU4<3FwDWiCPq06!7l?)M43mb7z5Ww5Dxw34>!uXtye>SJjivO+Bx!C!3pkUQ;V4L_q&DQC z7Zh_-TQP1{;87=Bn23I%-UD+J(M#&d<|d+-)|1UmM0eDa%}qovt0$YAh+bY#=85Pd z4^$$Og&l~JkWw1iErvS0EQ*wEG3h-ul?2FuXJGc#bBp03^~x{6rXd$Sfymp=olrq@(J<#a8QhX=tsI}J3= z>_vBA62bEuUPPt9W!Wm__ z8dX8~PIr$7D{r_LS%(`e5~HAns_TRg4?;$%Tq5~t)S@{nOMGQ!{RynTx|4TSUrHeI zkqb0`OF}8*@rA&_K4U1{Jgi0ws-op?>?eo_dgi96gBg-8Yd^*_Ht!3cWOvRB{P> zNak}VfMn1yCXc>%@5LvLWQx{I(HbI)RHu_gF2O~C-c&t^#J7B9?=6yu&UHj|t|KC~ zZ-9u(iiLRJaP>$}?Z+pJj-GV7NU9T12`L2R6F4wE8TGw08tHr2r{KzBdJFL6<+Jt> z*>jA@;^UG_2$8!xBS^|4k9aA5qNp@qnz;Oq(KZr-8)8S;vT^6#b&D&?eN{$Vce`pu zRoEX`Nq1)*ZWeD8t%r~hO6!BBgp!&vXJv`6Oun%GdXu~DZCQEVG@Jw6qKqN7EcSsh zE(^#*Q&CK<;iw=Fg6rxMHm`!JZzX*ga+Ik|UM4&l)bLKDhG65#p$3_r6^%J+psG?u z1>AS30o`zX)G&8tX6d*#nx#{(7wH0xRF$7FY7jI%)ZiOV$0Fd=bl<(zli1PBVf)rk z4fC7B-_f)nTYrw-VzE(E3S=5J)dn`qo1{)MNb0ky3y;~+kCfEShK-xmNLNcm2GpqU zse6%ixIrigNsLaK3)MJuu#|RjU#m^VV0VO6!#@zXnkqQTq-7!x2&)O^X}nCdxduu$ zV4M>y5rF|g!|Nj?KPEENh;jzN(OBs9QVhq{`8F03qBI;h!JY3-Y=mUgO9I}|F9$lV z_NoKQ*GEqdLxwHN&j_YuwlYD9baUyL zfY6YpOtmNpv4Ayt%wrc%uO70V(Te1!BY`*HC!>^OBLQ#l)`gFGkxH|>w3hqE2IcE= zWU_do7&+@Mn|Q9C`jFjY#5+!$Pjd_oE=~#vC$Nv53l)p?g!S>DlfW6v-mOkm z(#)=pD}U1B`F@~}`#nWvZI17U8tT2$c8FDWlzn_MKu{n5j*SY~ZFqchDGAussGw%S zrCMoboZvBktOEm9RBCoca|XT|$6w_X3LNaQos=KkD|FhtSdKM?66RcRJIz^3?{J{6 zCi}Rk+MGq>XGo~j&4Cu--bWmrd^=vIm||G+dX=c66(90MZvfQUKa3i@uwqVX9Oo0 z!Mzyn8l_=nhW2AvzU0L)r>rCTQJ_BnYB_;D_0EoZN_OlC?5TJ5MndAz#j86Tc;V9jz5xNy;YwT3KY(c1nz#1dE;{VLa=@H8a%{CJwD+WGN>7Vx&q9Q6+1 z=vR&#M`obVN;6Q71xH>v3*sSV%#W#gDqkd~=C6GKUw0fgzD(!SR@3=MgD-XN-Ntva z7J75ekEMC4oF7Z`WIQ>TF@7-}+uOeRWw$UhSIz}7Ggrn1F*8@j0nEI~w)8FS#>=sN zOsJF1oe7qT5btFY$=F%aY3*V0LdwR}YS$96b^NX+c30Y>RNGjJeSjL#wm>3}G_@@a z6_Gc0x7ftURr`>&Vb1Nv9npSF(8*fnA;I?82|eL9__M)Q_8*JoY=c#*4OVR9(*`Rx zvS}-kzOj`^8>tEE!Z!b~Q23Q)sOTlO50Xv%Bm4&OCSEP2QS3DfQVVxN?d)O#YW7x^ zOLle5)%Ln__q&x{Bs%Q~(Vp6dHetn5;cV;DOZJUYR`>IB^qIb9BbEEC9g^M8Y{H7Q z35#Xc?sFL|#1;NLeP+uzEkw}kQ~R%VvB@)7O3qLB)&G;!$!JMvxm;65zQB-~;da)<573n4FB0C~1~ za0v1uhdlpz0C|x^p8q_6yvQNXe;zC&Vu$gq`V|7A@e(u#@)7TYtLu)h_aG*~0{^A=Sc%(e(K5@|4M7E}9;`Bqv^ zdlf!T=!RiK0&kL#G>{X;)ysh>p<#=5_!+6LXlypVh2UTYgEpHH=E4G884M%6Fi5D3 z2nKc%D^iekKdU~mg^>fDF#$tE6?m0Obg!7ko#>%4(u{l3G;}|4VRBPv{2FzRz@^rF z!fgwLv-9!uWB8ds@%)JoY*9Q7OPAb*cwCZ?-~7b#1?Yjf5RoSLQpr7SDo>Gnxhg_3 zsqQwLi+SrJcd)r!{Mj)SAzNH)qZ+D(BFKT7@`;;DAcYPG>G++*$y3}FKvg9q62NXe zpf)=+$T}|xSkY?6vwt&uCl22gVjNmxp{4O-zG1$m#+|#6g=7_!mf*thrp}0JGnBGz z|HAa9PNRfTh$MK-h(je~^1Pw6;a!A5BW;B@udTuw<-x;)@wWIM!qiq~R^J@SO+oU2x-~|SQUw8R=@p}Caa^zqTu@(g zW?J>3$HF%4prpeEc+|LUxBhg(JywBkS#+pKvt--Nc6G{Q&O!llDGyZ$BL|sCCeE@i z8i*DeI4s&kDJg#cC1LTg^NJrXZhNW4=?hIQ7jJs0y*{seEr8oZ6S0;V0CFLyd1B{w zjCf08q(QxzC@I^OtWLI#-h_TYE2({K2c~_}iV8#$D$s|`O+Z8GR;)~Mn-U$)(>uiqu}LfG8iR=+OK+1P;=L_-wl5?y}xp zHqtB*e?gZ0KNFsk)5YTycQ?eB{M)wF8wGQqeFZQUF@6` zOsFQvl_7;*Q3O4>&2-Ni-8-E?Y>7?z8WIt5`8&&6zZtp$8X#WSP881v1_bX4@w@Mr5TU@ZzSBQ{^!zU0=FYkHPgofi@ z8fLCo^TkAkf(-;q)ET7_qcnmB@CG@A>?s?WX0*BqXkrc@e8q=cr1?$4i!B$_%QakZ zE!>o6AZ-Z{o<`}DWCu~>AtX-mV^pg6Fr#FiXpd#UqE|wpP^nKbpIq%@nDh=qEm6Vp z^4_R`=npQ2T&GEco7VlIh_Xd|p&{|FGX@e7V%Nw(ltr{ue<61)B9PpmSfEFI(T&N4 zv$pG9^afTW(?x1=JHZmQ^2(fuI!`|tZMGiAirGypDht)Ussl->GK;Iaw!F7?^b#** zIuv@kEN@nU&`nubj}Va&JFUPtvp`X6eTYUzjB)!+qv@s4)ndPhVmEu4ognFti zh{doXS;$N}mCDq^AYiKrAyJ`Y_LaMla!wQ$>vy%!QW=NZdA`&bL5!l# z7B;~TJ?pSKN@;KpA-gW^jMH_aL@aAJFhPhz+s@n-8(1;k8jP3;o;I6LbQ;<)s*qkj zNL`w*bP^kAM4~FCL!`iBmYC)|5*D>D^@JLz)EPvJS|$vQ3^Q(lqO7)&F>cATeDdP@ zTiBz_Of0|bV${au#naPUNP1R&7G=^TbuXzbDoVQnfl&0A;~Nrm))}I}_C(1|yj37R zk||ge1gK==08NCuaVnv3$UI)_S$nQD4nC`Q*R2&4-E4q7d^9v&yzIi}eqdrY#T;;37Sz~Em-57~%z$QW-z zro)I6bP74#!EGhHDH3rh$U~Zg=`AFWSWGx}#3N%B{Rs3&R8$E(M7MG?)YS!{LrMaM zSsDe%12Vydln%L5xG*6b@MxIDYO)ww7T!)IEr1l@*Tk5F7-B0z*6`X#4{Yi_aWFRp zGs03;Td@x2rojv~bzznXS;36JQVv952{VxSAZHF{3vwp;2t}7L*W#PiU^Y>W|FAuZ zxTqj^T~1? zURrvMexXrDS{D74g%VCg>tLKb=1EpZ2vr?p0}Nb;#`^?Zw1dYq{s}|5Ib-AujvP_Z z9NJW8HG=qg6b`|YBz1ozScfF*M|p`HpNUF%pbKGTp%^YLkw))isk+L$V2N<}n_T(!|Wib(by24%lMkN0{@FWxjB;E00bue(O}$1Aj>m<W z!U@?`@_y=zJ#av$7N&&?V+`(SqU#y(Ryhfg&^9V|hejpsAV(_GNJ!F?rZV!HIHnA- zfC5DzHiV#QvUyw0G1HLYiRTxa#QQmzS-=2s&VYtdI%p9DREZIbie>yM%f^k2xAHYs zjCK51=9Q7s86%BsA6ztD?n!b$-|Or82+QYP~|vItxwp&#E!4SRXr zZ6sY|mCJ&w4w-@$+#yp~O+Wiqoc z9~W75wnXvWWv$-|=^91al_g*gt9WSrHe`@xFSu3NIc$aQ5pQWUVI8UPgwolr3xvFw zL4(}P*6TJ;3{1u;0M{JibfH^CH<(-^#?Ux zg;MKMv)REq{88&j+{I;?B5ChfNaPwzO4pdThD99Cb~S$_FbYu8*?TiS7Dc@&wCw3u zild7l{5!&52OEEDM;;qSj$vkJ>5*q%mY{z@Pt))Y1L3_O2y!?qOV=YVVCAxrVgL?q z9R+plTs|;v-vRYVqXn!tsITg{P3CqQieGgm7=V3k zs3B_BK!LHRK-8#1qd-9`+uHa*Ew5V#rDE3mn1j2?Q5t zhGsp1M)Tt~m}N4(08Ya;1n5+=_nk-!IMWQ$9w!H2sRaL$!L%aGYZ^x#9PP^5COjEt z1CZfEBH9c|BpPKireI>m*>`EzzJpTgvEqS{eBuMlyeb=5a2aElQEeuL8II};4JWA6 zTTcc68bJe9?!lZUv3mgbjpS5@V{fDwnPW1t>|Z5vbjqij>D5@)2_3L&>VoM+jSv|O zCp{C9>JrTl(h-OmCUls9WJ=B3-|3Pl2r>O=DlOsA1Zf_KfZN~W7HN=u;5O0bDmTE- z7~tO%C}wZQ0(+)+K&>u>Ty`@yc3I_~aweq_&8<&{^rCM5hMNch0oh6NLyGE`EfdLV zAm?rCuQ|Ju4-n=CdF~Q9`*7paD%NWxTD`JDeexr6-0HL-CWkc)#kH&@EqHa6 zLpodmPLWSK=SjmI0)#5V9I`nG(Xn}Zh5xh|KfH%IHq8RbLj4niqf1fkdmLRZm_9jM z9eIP2V#TnWLnh)h{{=G0iDZ)~%Y0m6^RN$AK35SgUzYu`Eg|rX9ExdeQH3oINXyj& zGMI^JWlSq=oYtAvk@DPsX&jNBm%-Ppb7_n;N5``9i6xV*rOP~@w|?Joc?fP#=qh07bYy6RIYS`#s{^V?|*vp5kmre`hXaC1D806OR=t*uM&z5o^AL=4jgB0g+WQ3W;tBBq>T zz*}hIMDHbHCOCSRvP%(TWqBW3ZnDdJv;+9O2-_ON*k834#77n+iH{x^N!X&0;~|OWTqL2jOT)y(~1j*BK*$15gU zbJ9dSoF-cT&1vGr$1NxRVnLet%j2Snd+gM@;}H~;Fo!*H@8oc*Saymkj#E;6U_q+* zv*V(Q<2N$rwle23Gnb#DisPh;KUt6}{`B~$;<)Y1BXb&>_s(HyuJ~_G6>pRViI}00 ze=a;Xd`L$-Ih>153nrLpz(dYS0!KKrjR9isz&~R*h1&waWQt9f<(X{(U{!yB>(%xS zkOs#cBQ{dB-YXh1$Gz4APRdV`n-APi+S$Yc>uPX>`%M)riLgx-8i7W*SjycLIOgQv z>DY1!W*ZpLGFVgA`l26IpayBE&iZ+chUK?t+nOdukIV)#%5BQ^IG&H_l9@Au;WX|= z`7>DNM4Ox&lCiAzL1eUt(W0*LF+@WcJK6%pl<7asQrM0yQp*z`1LAmI0meDO1`}>F9N2Z3nEMJ3*f_dq zOwZ);bQ>Rx`OdT!Oe5uPy|%&^?C3K)G1SsnnwIWp?Q-ej*89xGk!7FPL|&BI1`>Y) znw>}*13>tQ@F6ww0AJ=AN`=gk3!67}nvjT{DH0H-lJsgiJ4GHE@ZB((HywfSt@R!e zNL7Hk3zE}fb&AtsI)BuNrU9Agy7@^}(XO}TN5@TJ+b^i3L-RzpZ+wXQnqiIIJ|=|ZHhYIwig)w!)=qkIuj zuiV3NtZa41u@`$LVNKjJSJ006H6evO(F`ZWzz=R#S{st&)+^sLugs*kSe4^RUHfc* zlM{@H6%F=;SUY{vFNk)NqOn8@DQwLE#q$KvN}sxYsG5HQGDMTmc5#;dry<^UAlZDJ z#tY=>b^=p>F|+$x3>LKmzz>|e)Sny9)T04kO>b(#%k>+Rs>-Q0X!e+8n)P)7%wDJo zOfPW(#hE0HrXj(xTNe;$=Mfx#2q9^0MnFscTDgc;6Z5xAQk(p zfCww#>xJ5B6a%fbFb-Q+}`q ziyw?tr@aPnj`;oBqU>MWBOvjMm!$FmnY?x4R|{GnWae*jQlxKkO8TCXzVl1pkDZdf z4@UFXd2MTx5UoW^U-KqQ`nuUcc~!aZdLJnI!6tp>{>OiB^O7gd{T`i?zNe(`{L=Rm zr=;(LQTh%{0c!?$QMPY20a~B`tWSSF_+~%v2~LLewYkqzuHRFx-+5NxeCm|+eK1Pj zfvGpmy#3>1JP+l>TW#L0HtqJ{n{_)WlWv-G`}JqA)+qF0uxtv88lu?MtRkaa+| z3`Wb=d_2X(t(~YMO|TrLj2+O>YL7;_+C%&CB5h;0^%riTQO?D!xlv@os^|`jIRZA@ zxy{-v;Rr0yv(`5STGGf;N0xGw!MkI>A6ctAhC%HYcMJ(`(7PN(OGLEQzT<*_T5;5< zSLPbi)@)X1*~&z=#v26h(;BT%5pYST6(@{J;&f8cWwaNaoD^zTFvfoVbu-1fLs|xO z_@K)7tAj!pQRG*xFb;hLhc(1&?GLpzx!_0(S?t3SGP^Xh>{jbIwq&#N=E9&1K^@(x zX#TmaQ3idif!WpiI~Go9N5Ahwwnb{iQir%7@?{B37EZN3uc*$t)e@yp6V_Czu_T)e zt;Je5sVH#ZT1(n&Bf8d${YKxirD`!(SzolfXU&rBiKkR`y4=l1bVJrGC1kT`Hbe=l z1ufJaS&1nE=(1Mp`!q@P#uM`@~sSPkfqrv+3X&yTHHs>X6F@|F?D6f4B7aI~;?j;L5@1$Pfb z1aU34p!r(z${tmi0|I6hDNzvyDFAebggj)0mlpb2(YDHq0ItCkSON^)Dh7^X&{)R< zB#<*=LPQO;m=gsdW&F3IU{#qmXUlDEi;=lY*f$9*7-3S#a-R?38668X^gB^EzOZ+!uh5bmDLMKj1ke?$$sNE`A=;lv>06gff?0Y=@b(bY}Q=`KG%7G}8{Z0JMd3(k*y2bMrY4hXxLMiLN_2jbbc(#4@$ zJIb1FW04{^rQ7buDxSr8XsU4tp9-ZJ~`KX0YuwYi&6)sT<-Y#U_ zY3oarn!yEO>x+IBC2iRdYgDo726-d1%`CNPl#o;2}$$GUH5kf&?U!xC%oV(Z3 z;_@DCO4JR#k5sHyzj6mPDH4DaDTxzvsfjt31FL8+)9s?Y78ViG*3MdBtxihTQWYTZ z%yiMhFBdtI7E66fJ8{usZqY4|j&3~`1Uy)9?K^rbWZ5fwD1kWa(uWfFe5SPH>v`fFRq}Rz-k%Fx~26lBGM^|9Xv3$Ef6uXg!KW;;jPlV9GE(HR5M1edj z>(Hwo3!&f^C7b#IHn-5Y8-Pp*B3hM~oG9QP^&NMjVbQ93yv0;k@aQ~l z2QeHVdiNNzP;NfjohcV;Y^X*egQ_^&`Jys~`>19S(;#mVkC+uiGb=dJn7Pi|0p1aA zgJI#tvg{2KR#8$$A}XZ<%;uy;ENS6bon{-pq%B017KF zZM`*A?~|uXOi_xb1%`&WUQ(K;}rnIArFzMO{#V#4j zqLZ+_qD}oj>aw*3;aIXTO5#R3G7^kLBeau>@t0$+mp_txJttz8GS(Vc0vWfy9_rL5 zZx&)>)mjj@zG0`iU??a(6w&kXn`WM4Ai9sD#cr|xqLZ;?%?0Df1>U#j1Ml1Of%mWT zf%k7+@I)oYjJ=Z&9-GRJ9lZZHANIa8ANKxzKJ5KR7kkjo{TV#%3OnY`J^8GGBDp_< zhe^~Vdgv^2k!$Xb>eE4H**`rOaTcHMPo77ljU&?R%))WWvgL%<#-g#K09O!g%4}7; za0tppL2%^p99El;>+qK1Ll|0$oYwkGnCmK$s%V;_Vt*4fUNMqZVfP~xPvb)AOSvE^ zmywxoXK+DjC}^8{dQt;Seo_9m18TWxIlknRd2`p>^Ho?mx8$eu_a?U^*3S0Hia&@B z64lKFC}VTPsEI-pw#EKzGuoeZR!TPtWGSRZvMKgzDcVB#HK0jy zPVQNGiF;_~I-wy`@FoF@omnP|_xC3vlA0j4W66}-4ksAlWI1Vm`3mY#nB|}nHSTm! zSiB^8!$3kpHpzSgMy7P_or8%4fxsG`3+U#|MLv~g0d|FS%p{(&q9xmun11pU5erTS z(GlrYJJ-Cy%W(!kjCFB$XH6d8ov(Np@UMO8|5o5%Tth{?)$k71i{O%J?n9kG#j!nW z?|8v4cUWa0=Lz9rThEMK_;cGQii$g+FQ`<`@Ys)1v$4hK0qnj^iqW}B3}HSXlu%~< zf$CE9ISx_)FzK;nWfc5ndXnn1ZdSLVtDV82&8b+6suV(@LP5X~#B3%Vh?u#Mj*9)4 zaY}@5v^^;dGXL{4AjJ+Ro4oxNPLW%lufEevzFPm=XkeMEZJQgS+3K3EY2ag;+5Q4GMJrX(gtesec9GZW$)Ya%}7eDZ6_V`wsj)1S@WU0cM@Py44IT>2U_$u)Q?dik!B|_ zsi17_5JQNS(uv!L20>?yhL~&a zL^mLDi?4^f@--Lcx8K>B?26xHONTI)6bOsUs$|FppN$hbZ%bzxtVRGk6Tt~0IIfFe zCs!rBVfAIDJm#E-13J~yL^7UzMkIoLoRe@SynSFHzu5@xg);{P>|bOKZ62@jD&@9B zObr5vD;B33fqhL+4{OM{*ClF5CB;!b&IzI$*9db{(FjIn@HAxQ8o`}40s~tE4~xRB z7Fcpxu!!V9hPYlKam{%+awQ=G<;6k8*+yeWn5WrcFtFU+owa##cfMTW`b;OTac@do ztB>d*6W7csAg&`0m^oA8I+nQR$U08UI}*A0rVEN|d1qrMvkh~7GMmC^F_^Z9p(a;_ zb}R#3&@Q@&xwLf#PbI%$|Up z`(?HTdsUG9N@jC98aX=_W#{n*4-6e7y|UWbNpPZMwKdbi zp}TXQC73x5&&g_4+BR8jk>TX^b+Wo45jIiEYGt2SRy#Q6lGWP8F7b+ucr>y)*p21_ zJUXST7jRDulh`sOq@w1Q*cgD;NhYy{G?UoI8HiprS00u5jv#_S7L?c`qBd^ln#5KF z*Qk`(_K;=If4(I4ny$p|HIO+lMlLrK+KAa6pjQo-RVHFYk)=v@X^sDzU!A-?b#* zk-gT?`6c`!GfUW8(A3H>Um-bT!rnKnU)Xn>heWNKH(c1erkV7nX@h3td^cwMNp>h7_Yorj)@(N)rKg%hE8m$ad2#%R6BmQ_4 zg0-wP-Zf=_YhA{>9U@EMpRPhsrE@C;v=QPL$NJm~L5jR5XLa!5$z-$D=g;xm@N2Fo;G^La9W>YIIXhg z$2z5A80I;VX=I)g94M=tMSlkK2k3{@T+k0|xM0|?b!uWI7oG@BuWw8W%FI90tBJE} zx`9LND4G8@X5~OX(+$!SxKb+JfEs>i&^#aAz!)4)0CV6u%MDup8Dfjg_Q_9+S>Hgm zsEd|XYQ$8>GCw@fr{(Tm?ABRvusv=TzM|K67%Z%tORMD6ha5xfGI*HN#?DQn42s>Q z(jz8zm-)L^zTDrf$X8rEF^cG1NCF>aAx;>tb;1}UR`xieOTu`$Gt1F962{0AoMJk) z5?_R~Mb_D=V`ijxB$H2*k$(1qGP#qV-6xa38`{AD3`rPv)qE*?c3s#qf0rY} z5V;FDM6$|-JkHTqOcR%Yx-Ou-5J9*=ECloF+3NMyX3JUCpt^y zwo_ddhPTO?&X~~lwlrgj{8_XP<+!<(q?%pCVjbcKIT7ydha;;j{H=LF9v+M?%Ei5y zT!U_Iljrk!KDrG$HaB+$-Q6oor|;dJGb``L zSqoayXXa=1S<=6-SkZoTmb9i3Wjmj2cejRNvZQT_a;>+dm*;C2iU40C#KgdJw+r$o)3m&+T^_ZiOfy_zLwc)nT9 zrAn4?!O1=8oZQu1sCRN}@dUeQD475GDzpAq<3+s1EFiyLP>5yX+%6ob-g-ea#IJ3_ zF-_e%Eeoixopc%{STKBsJGjOV>r8Y85i59Db+~hy9XQL2&Y9&1g1HzypXD@*rS7bA z52s1HY>HSS0<7|aPfM&ah40vW3Y}9u_4O)N(4yC?xP6yP%9c}LmiJ6gcJkELtF-dYfGgZQ z@;Z^EwqC_CmUD%t$GA|%n$$Bd>GrA&&P%Gco_R@@u^0~Rc>0lYUb26~4>K@+QQ@NI zCAC~NfXi7icsvVLtS;R1!xyTsg@eY-y-{s(j(L9~et`?!|%Me_!}|IX+~#I3Kt()Z_UZ`em?@~qyv9qGgqTWgyt$(aE14xvV9-?-@S0fzB%(dz!%O_GpX@)oF|l> zR1f%b7Aw$e2DFSuhD1FE^!I7O_bCtf@Xa~*iv{2JD-Zaq?t2e7u5Wq3ZCzh|w(~?T z_(sO-#84J|pBp5P4U&B9+^}5mZ4;l`!E=V*IVIqI;Cg`%99eu{IKgGZIw$zK2z}=S zKR2|!F$=H%K8nnPPVnw#pOduyyMivRn#P?qZ2>3vVsko;;I{xx$i&ywD0svP{#a@< z{m{Q5=!C8R{<)K*A5J;JPdUNwUrz8hna#guHn}Cb*@B3SmQHY6lFf$hHpf>MYyBD+ zWO&b}psojeRAYm3C+DzbFhiGrn|@g4R(daSE4{rFoWNJMp;OCXw2QOX32uwL&Ha6g z?Rvuru3emGX%}af+l7OUTemtVxaOj}yVl+M-Zam&5cjM*ol~ZfpLJpD_D=2}m-Cq4 z-f8>C6+CXdy|d0go`(BMV~9%A_-szg_)P9$-JRvK@X{f^wseS_J!uZ{mF5sX)0Ty= zTwq!FnO%qY%F-b&`?^sLG0Y}+9`Q#YD4j?A5#f^jw1qw5$68WNS__j3k$3OCkAGIa z?!t|?-Fm*jlRv!0g(-+?yZzeID|~mymWG=@{8*NTKYI>;_|Yy6@7r@f3EgNQIjONo z(r=sm_NL`pe1S_t3TXazNJ6h z+E??3vo*83PiJ5yOOHRCeFtuz&fNZRTV1lyKAjWf54XCG*&qIWv*SnWOT+D1Q`Nj3{UplOU^MO$%r^q!atnvUa+Rd@allg;0) z$Q#^Qa&1Mo9F#x7#EC1#CQ(d$Q9JU#tSqcTf1Iq!6e6k{wUPJ?g@R)ikeX7ND0_7z7@;1A^xzJ(p% zMOfr`7G`(duzLpdQ!E?reJ~NWC&5*|B)(=xLYaq_9wa{XWrZHNG7_a2 z!8t*k8>UtjG(bn#>%u&%;E_V{=rAC8<=+~L%6D!;--4h-69M5H0x;EWZn*!!-dqiC zjS^xDOho_F_li;i_H35AP9_$;&Rt@hJ5h12+kD>TT*V1tvs#yPwbZuc+9k#x5&UIb zJ0Y%Z&dIgO0N0l6YL$pxA(D1NagarwUA0fLVpkrFUB!N#aUh7n)Ob5~iwMv`;!t^J zh#lg2(TPI*_eiCAIn)`2C5IA=vuv7i=!2$d6*nf18!?!NaHH>f#9s5bIr16Wv3!zr z=`)Cg^=HPB;}u6fAa&`uapZ(?q=FC~qb`-!swtQ8MeEW5c0{cjI}$>67&{sVW}XAH z6T^WgKu6x+no)7veWLrGbrL!4S#a9(jMK)Bm(vm*nUQpl%qVrAGp0=USv20R?t`U| zM)w(U)~!~r1k7qB5DmI7gVUIEfYTU&VYNEl=YjxBxi|rsc-;qCiPjUXwKT4%@z|JY zK8xE%MyF^j7KF1`n~IVcX>BO>s@bCkU4!Dx97XLkHJoa|L!j8=Fdmgyoq? zQlA?(<`_~}jz2~1W-`fkT)0VoKf-qJ?~7r!CRE%oTT?M^n60T8H_Sd4zuyTQW}n!~ zj&qoO+es8yx4})PhS^<%{g{T?V{VwuXj{YVCH=!}h^aoz=252lD7=^_(6ZU>{=tm+ z%s(u-pANGh$j!ZPO^w@6BIn)?=bjp7JLlLj4YO-x++z@nU2DVaI=gBWK*g?F2%rbE zRPJBH><3EIDsH^bhS|?Oi5&S{IP%mmyQ@o&X_zh29bm`WFnbs~-VcY__s3>b+;*P~ zv!8zwIqmsy+Nojoi5+Ik=xo4U54>UaeFgda!|d25o#O6_!`6zs-NV%hCv-<}#;4}X~K)w6r zO!fo0x%aJ^@#2%nxi3C7#6G^6>>3&O*z{u8+7P?Wu8KBOv8w{k=;3}i#D1VOt>VV} zY>54mlgN=TIW@%Y(WS>U#1`oeuw!kAJ&YaihePc9V>2plyHAGLcbr5{yW`Xld-#0t zam-}P=xo4U54<7veFgdaL+qckQ{3%nw(M5BFQV+77 zQ{zqTr;IosE6d(%*>vJ$&dLf+ooi`1_pIl&N%U}chod-j!XEYqtB>z${e5WD>nw%V zLakk_@eLAoXJ#3P3m>6tDT2bYKkJqp6mR9+0KQPQEms#H3dLwOkY39Q7})cYLqEd4 zQ=oD?%RKv-mB-n~EJf}w&u~!|YBE|2lPOfE0@{hwLko2%EO8iSuQK1os9$ye2PtWw)d^YKXpPgF;SP&Ql-8}gu)|OqS~gC+C=NH_ zTuxK@UFhFS?iCtH865V71=`gS%^ zw&f1hi&{O&i=(C(hbG%kV@NWDIxO4T7c19DgahO`Xx$N^!0i$t>t(RIy$MYOwC#7N~$O9Vre!+9G+@sum*$iZ_S5mKriY z!Esw~V$i01x474KVradx<07b}Vxf|O)Fm*btpL`+jn-$j>?L(<^Cu-6UeM8gfuMMt zKZ#~h>|#}K@HsgiX7P+>Idh-$oTJXU!smp=j;c=K_#NO^1g>TFavu843vf25j5uV* zom?k$M8yVQ0Z510VHJ8EzU$bUB9SBAk+>29;ji@*PK3CTnQ}p5?l?_JN4Fh=MD76i z7gaRVdLxkNYxe8bJq@~t)CDa7mfYxXjv&buxs{`7+4D;!OFL91oR90xEM zPV10G+IdJaw%fs$yIQ}ZQ6(X64&ZNoUHVWL?iEwE~dshJE- z+g@j)M1|YdB1vweWKNC={=!|0dxShR`ECVG(>>H<~?vN9c-GaN}q+oloq zF!J3tRMKZ8ObTJr%XlAZFy%c5zBD@{x{*+}^@1bPfupu@f@SVTj;Z~HmN$2lDX~*` z?cgJHl21;jqip&&_2oXR_UR6}eEe0Lz z01*q?YD@JGOdNYA2L8y9VXVp0KlfhCF-h69-9)jFp|f!EM6E-o8Cm&l5(Wnd-|W_K z8ZzwQ9O&F9r&N#;)0y?7Da##FhK!-ryUk28nHH+vfao?HB?V~^QNuAVVM!h18o9Gw zi;u>x_JM|hI~}9xDJKuLufpRLGzM&@klJ&JWLXHJWH;x^=wvpbke8_)kY(uQ$XNQs z?Vs+L`Jv-FQNP2?50gbJ2)1N<5mzC$d=4Z2HXUVKBh<;Fejy6;DAd8oIx%Y29cb!} zj@T>c^-*4yc+QC`aYI?+#uHWI<2YK}L~H=}ivJ-@-iYbV+6vSm^px6dU5AmTc8g4X zy91dijD@V-*?*J5*R?bXeqh~MrUv8QV50v*_PT-_d4qJ zbV@;pFIAX;)Wrv|i(+;_jdns45R8CTWnAWE_ z|8131DIBNkDr%|HmF2xvy3C&7uu(%WBuezNv$=qRwI)~zc9WucImE7|%Q-x);-ESa zI=>bS*S0R6t$vVllX0#g6)eXwc0a-vNN68^Ije{cx0jGd8(_8d&|>hr{u|j4Y-7!N zWG7E=cFaS087GrOGwRHlgLFWwPGvWx+3G3?IskM#p03G(bQ2(69p2Rb%jJ2KmFx{l z)azg{g;4%)nj@3eDB-J|LsEev7noY-l7}d?N%p%SE4U*%G>0uhC(U-` zD8~rKS+#~(8RiUI07wH|^4LbpT*2$~Vs-BJ>Ex^RWJ*Xm#Hff!E6k314D(2}W2jKG zK=G&2Qy#upY(liEO3Lyx%GRqu#ajU~1UE-=gmtb0Z-GBbGCzk@GPYa!G8^W&Kq8hP zmtmxGvwWGACZ5q4g!-hhI%bcB?NPVGyG;w%XoEIC#iw5w7H{YGeL?Zz7ly4CP!7B^ zrfb7^Yp7vO-j;c(5bhjxO6lvPRT}?)HQu!}4mi|wjUaIcZAT=uLq>r_nO2g`9A&bx zdTdfRRK{CD7|K&!U4N4|&?0t)0S;7MwjeHo#{}E3iDDaW zcsF5O$h6XEuM^9L?2O1y$gnRT*pNGW$6+n(g^9Ac zHV`L0B=Xw7N^p)6Kt(1eTiI1Muw0;c3L7>+TX8Ig&W`M9+QFa_Yi5Mn2wR*^A+ zz1sbok6w&+H*hVgh7CHlOhhgVR0XEUs}%<>HkIxz+{Ji4uHm5Z5OqsATANJK+iqPO zL&6cz+2Qtt``$F;Rf*YrR?_yQ8FnpTBbd@=$7?i@=vx^9g(vb)=mFQm3$ z$wm&@DqP~B);StbQ*#5^KUCZ!9N%rO@uVbH=Tvkg=J^?_61&2D31ZBJ%_kDE8@`hVUh%h*W`z0|sY}SW4iVlfb z)FtBxa4dR)Ai)ulc8pSKW~|7WDh`58Lr1lYoh&%dh?xzgr2V;j7Ha>|t9s9HQu-E5NCRAdmK_?P*tJMVC|9td)$P4ym?s|y1K zpRm!oi+DUTHr`@9C*Qdv5ZRE}8&sHdyhlt*wugtrWmcex`$h4PnHpw!AtQi=rkR>> zYR9Y!Gkr~)nx!ipSFY8yCXHqHp zp50l)l#rB``UYZhCWrMOovs1de*=V7jh1?G6pAD=Tz#aRuoG4J2{SVUou@0*1+A_N zr!?upQBS($?y}xpHoD6Nj@~w9*&mnXGO{XWFXm7DBh&csX4OkP;pJrzK%LCQ_$R0U zN1rBult>JhWuJ7DNPUF_^A!U5Ss_Yf#hx`3H~HPWy0uKLGzOAB{sm6odtn5N&)M zLMmBG11dvSzuD<3Q`h!gmSozcEmWV&XDR_Y@6H>kTsLpzO2lL{dF#UCL9%Y%C^gZq z#5mb(6efSkeDg+WSM>K+Uz;~tpn3zPr=Nqa4l=$h=UN(O1o=sTR0B(_0Veobzs;P5 z`?Cf9E+goITY3jP_Zm$^O$4i|-Y*W^J zj@qzqW&PTin;|`>%psegqz9R6`&-O9m7rm{deseh6{V396#vW|BK>+cd#zEkt!{F( z@K&=&o-DDq&3g_UkS3KdiD0gFQgb1|WtbHB+Ns=2Nl}(bLZ;==pYwdh?i%tn(9j05 za^vq?ji7BR*(_VrOtPI!z?!A@|Fie*!IoWjedj*=oO56M-rMK)`z33iZ86nmWKd1H zjF3H6pT@Ff$HQbQP9{^8noz|bRCS99EzACA`XR7vl!Wk*Wn+kw2&N`7PRj_Hht0zh z#;*kP#$fORhZqWGNHAeyJ78cw-|ug&efGKc+}pRiuZ&EjR`))8@3q(Cw|?vQUcZGL zAtD=+ZXa+VR>7*N$4E{m1VS14OR+Opc+4Je1>cYdoZ(fXZ!36qMcJLi z&C0v8B**cVcVm&2E>P?d*Ewf}W9UDJ*;Tk|<$AHKu)|-M@ z0|HQLMxJ);Z_qB`lBN(mv^q>SBGu7DL$-hpbJt=-qbbHKRlU^oXRCorHDwqShO%p6 zbMPc;imgjYQ5ecrfbEY)zuC5gk|`ICSrU?3yIMz%GXn`*VOoGOE``vwrL#Z8vpRk3 zL`}Ak=!JBkRJ++jx}!%`=<8NVu(+rP0kwP+S_(O!(o0GTS}dnB{BOdxh0%{-CQAj$)=R0pL#LCE$a8-T8lo#Dhf@GQbv<-OWEnu^TBdM zEK$udk1|%M*kJT}!Hp&@9XiG`i-=%wE(y}+!s=gy{Rv>IbMoN9(N8c9lNS)tqQ-Is zqj&4+sd-N|_rM{BtnOkG`hRsoVejyCsXI{1N$Z<1;Sx$E9(6RNZOtizToS%7a)E@& zcS0Imt$WUX?MVW`udbeP)NJX;82`Lp4)FMPEgOaC;e)kdJitFb#NDa09Mf75uZCTs z&^falvN|qVjliViga#FkhA*6vH_#=8ln~UZwFJWS?O^aZpb24Q>0*r<|EK5yN!U-E zDoSI0Kp@PfY;gc~Uu$i7iT3RQHgiZ%smo54Va-tjcwAK8+2lS`1JNsk|9T>XC}qh}){MWr&q*%VyTe$HpHC~V4@*jJ$Gkq16^8`6Y< z-yB1(gwn0Zyff)Gpi#kcUS-Q*uYa1proLabTif*rT1u4#jNb``XZi#M*5vf%HWRhf z$la$cBX2uKGs)HhKzJ%gI9jZK^TRHA)69^DeUfU=zAQ)wZX`_zn9!PF6!sl1FqW1f zB*=}+(qreRqBYdXH8qQI77QVq^<{)H+}O|szg-O*k}3;om7hDjxyR$_SMWNGW?^#q zm542CFW01l$3P(fz92B9e0;1z2`_1i1`z*hI_==dAY;vfPtqmI&WQnx4^B3183TIlOSDjuK`?wdqp3XzFry$vMhp{*q$|TbG=5 z6HWzqC5y3y^1<1%hp$8RW+2h*MD=1dnh(!IMXy!OK%(#_R*2XD1=O9wM#O3^nPLGO zwk>&*ASLj2DbzM_N{>yGI$YQ=RbySaGVy7yU&)&pVuX;K*qcb{fK$RVCGsZ_C<>So zp|H%MM41Xz)&F%r(wy+5csY$j?pU_mqB*{o$touN89hmDe{StOTnvH~5`Y1g)*K?Y z?%_VAxX-=nIHJaBxPT@uWQ@BNbr(X3FdL4h(7nXRfHm|Fvfh@EnWN>MxJ`R>2c^(v z&R%Xe!nJ6(*S5RB5NxGjXiu?x+!MN{P9cc;`!1Y?zvkH6w9LyOEY1AJsB?BcI|d&l z_@k1Rat*mJo$gwQf_ubhJIlQ(n1DGTDH1QMP>oW@!mtMviWUl~zRofgD7FH4PHg}) z=CZBrMvfNv!2IZlJvkKQ17PMqmp)Q*Cg5z-)o?n!c z(S0?C^p-@}5bG8H>jitu;)RPrhI2Pq@bqNub<-ydf1hrB#D@)P;>yjkjvhHJo(^&e z<(6gQAappz#3H{ENdfWbo`jR^!4W#Kcoz{sT4PHJZ!Epm27DE+2f_nZm%PYU(e}vK zaDadcK^)1=$R{ulDrr#tB;l)DeWWaXDk)0`lPFYZUe!8pS6@uN2rMh9 zn=S|n5jNrb`uVmISr~kM#N|^0II3kjexQkh@4$p%(h)FUt?`k-|FOD8+HX;aAh)xiw zupL~7(cLTlc;CI!kLnEtffAGg{Sb1F-WPHM78sC#Cl13L_oV756q8>p5rRNjLqsS? z5U3YZ#3D#A2&Qr zPX$jxF{0AM`1zVDBv&U8xIz|ERs9DWpwhlaU?kcOKZfI}jCS^7=6#P$G%Tc(^16Zk zE+qRH8wcOd6%R`afkfdozEgKprBbe{6uO63NWP=liZ~?5AhGF60GhW8$<4h7JMGry z)M-fzZi%X0hAyk5y3aV@2p{N;Y`BBYYKR_Nd|7Py(hnH*E~Df^`G&~Ta|3reS__dH2BGXy2Rl)6ntZdRfVi~$=}gDrPzq@S1tG)$7ec(xTCkfHTMxG!O6WdN zk2Xt;XZ>+dOrpm6nQ~I|=9+v4dl3zKvw@>7A~?=fYZ6Ui*_nVbSQHjdo+vDS22)rz zlF+?nNLsU8-35`CeZ24d{-sDW)@&UNz=xoWK3s!tiUY8d1-@~)CJcV5iU_w-5pIi` zCZPl+B!#=s5{M2Lf>!fV`u9+rL4zO02`umvo+=8hUYvG7?Ey8hokcea7Z0{GWOsCx z>e5+Q^Q(gJFqRUa4%)F`q`h0ijIo$mFf_u9Vk`^J8Rq`OWT@8ML@(h%!)Bp^uPA4c zRB(7ARcpJKU3!Z`4z{>-`N`lkb|Xfs_!XndFgnd}(~(*%d6^%$K#(*Jqhn`Id6b?S zvGS&pZ~~2ZB}Qd{1~v(x{lFnB1}3eL29=D-CC+HP&kMh*e#z@B=LRSk)l}LVXey`D z7ChaPV8dCKwMt+MaC%HrgT$YtEf5{h_q>M6j2W$X&03v`;0j{&o@N#ghk5}y%N{~UtRgb9yz>N2&luFaP49YlvG|w>FKo5RxAh7u2%1w&o@>)* z9gIb5uZ*=vLC$yrN=e@JvcmL8zvV7Aa`9d(lBej9z=+4oRI4hrFyS>lOG|!&Y?@#4 z6YuGa&?Mp)j!D5oHL!kTyNwV$=wL@+iXo;$4=D~d_a@I($ABflw54e&e%Noh+E8)L zY#yr4blf`B^wdK|9&1PQ*E&=bysG+RM;k5WQ!XPE4h)wd(2JF=c?YFIBIXGs(qK?5 z;SspnK%!;w2rI`vGT1T*>rZr+1*x^`1&C&2RMB(FsCv*z>(NJGMqPLwUbfc5ajeyE zX{0x|jNXDmRHCf_%yEz+kQbGPn)_@+lMP?(^j!nt#17O}kJ-qhUI-ERl-@@qq$rxv zfsut2<614>6)p`B{6fTL02k$pNQ_WwTfgg5)`Gfl1>lv1l2Wn^!i7W>(7pNzTRzYk zDK`3GIbCj4fP+bO;y2S?=~&%7a!!p2pxoWJOPz23`=a>TqR_XWQoB7uG3KTl-2z@?7BoWiXE-% zcp-07H1WE2Y;q_sOFscY6Ar5rcv=5cu3!8feW(N-z&A522SPXGa$KV{c6P!NgfkXaLTw%IRK8Us785-Yi@oaYqeWUba2YHRfh zi?j7v&FKDvyO4ZDI^h%mNDG^9B;7hJc~#QWROLt8*0i&QO|sWrYl|ULh$?8i*lY!e zG?KWi*jwTvbVFpFv$M^?78uGhb&XV4^ z)>b-Nd{{_3Oi9RxaHNbsoe{2hZ{!V(Fe=z?gv7?rjBs_+2vOfTm!`l*)kL`UugtxnVE0ZEY{@PM}hui&W+4x;@ho5J+PC73XA zZmbXr5vqHdNLf>azOt@`6@pq)t-Oy|A}X5M$?2It=shQ9uA18jQiW>Kg|H?l(j)|h zInAlZbahKhbWD8rbA|$@XvO*{3NAupPL-#yA~Bd-n@R#M?qBnBqQ#WCTCOrUh~mGv z!`H66ef4l$h<^9^J3H&#n|f;||DE)8RCSh&r2Z9e_k~7>s?KIIy&CA%qMcS!Bus3G z;9^B44b`eF8vVfC6A`4G-t(+qL4w7|q3zbxWt*!Pr1-DU_99UsBNoa6#FxEeuq_@T z*_l2Kl1Y_3_x-H)-i7+#T2JW=8Za5TvmI4)z>+f0LhN9}DeS7XasfDL2Od82;G%w3 zRljbjiq!>~p|c6wRaUvI)PJmKfbBM0`Ch3budrPP#G5obLO zOO;R*Rnds!su%%ER@%b^?oD@5sjQ%7YNaqZ#5X2tx^YSq#l|U=GQ}KY&=AdWtq38~ z%*uAF)KCT5X69~{QYp0I5ai!GwY;F*7*zxW{BU z)sUxMk$$2Jd`isoihjk;7%IiFubnm_fQ5z3e!4Iu9ANt+<*V<+q!(>&9{rh z);+SYRMpQITO!CWE#^t_qTYWOGo`S;K1Fqj4K95)xTqXqeWK4N@jA5)1o@(qkEwK_ zk49DXgWJ8Y`)(%{`xjygW$$wDk`R|EHmdZWNAraw>mI+F!I`BCf5)^GM2WROc=YV^ zisEYudReOsC7OXcE!7DWeqMjXdgaCya{M}1=>085gPN~F1-CM|_^1mpxEk<)73e-P zJ2F)#wE*5R11eP!9aBH*$IdKXIMaX7UARE=RrN30aSL8_K^MTnkMOrw?=c@FKwd<$ z-x5h;8{omCj}!N(6=pjm%e^EpWnYyu298=Ez)4^O3_&MmL@kKRGm=tw3?N!(9D0ZL zpoc;-)!hTp`Odh=y-Xr}$ty5(^a&s=;UbDB-rr9>sj82g#QRha6DfDr0fC6~u2C#Z ziiim^OC%JKOpvXaV9GO}lkv~98ijao4+X{0TPZ%L@9_k5_2B{o%UN2Z6MF0XifP)EAxt>!eOZN7QX80c_m6Y zXsEPAcE?1iI?>;GifM%!d7(P_&hY+vpQTzaLEwdLNe9$xs;wa6w$%b>PleWT{OnJE zf^L8I01KjLZ$(cfUe=U%6hw%z@+~$_!31E%KoMExhm#3Y(-y*>W*I^%iYB42A=kM> z-h$WYH=t6-2!l({_$^fu)+DhgwcU5y@u*MnUN$+4M}~1lygN`Y>JwR z4HzXuutmv&(}Q%XEIO+hOb`kh%33zOL~K<*v(;CB6jcZ%;^NPnDKZ+>qje!a)ln44 z=yUZ(SKvm=AfH;s8t5t2v>AhwK;}CpC&ntl1sLn&xoz!Yq+zaTM+yq1_8b9p^^vwX zl^_jB)Zbl=6>R8^bqeJWKHU?z{ZE)UX^BCcwC(Sgo%w5kL8hGa&Ko?U%jM+zzm_HS z2JOaiw}KY2UU4Kuz>_AWD==T9_%)pefcs z?vVZxiDD=w^6^lpEgKtyWlAtSbZy@U$6^MyeOr=3u#>-`9$EmDcPV&`2Ce-NlC}s< zfKvulquLUHA>JZ!ir9I3y?%2?4yE4@Mi)lBPf@i&&MKK)W`SIO8O<}7FCR1i)C^FH zN`y`^{Gfrudg!=XM}8_sZ(P{!tEzf~kuqtH4<9r=K)q{1UO)r#s$^yb3*(+7wI0H0 zXLlNH+YCyRgK6sNL>C%*sgL1(^m^NmtM7VRdSZPI;Dqc0NSa-ZCDgp?&7FxrW?=+S zg<7J^Z4*pLGOCX~stn8#z_(bRkZ9z0qYr7)qzd4^ zO&>{*MY7Fzngr2nn@=#zio7_Jk@bScS+mgEQ}7gXR-ee6u{LUUZQ>WTVzr({tdfAlN_QcRda<<5na ziu2f+{?3IES|~J-WC}Dcll9lB!66EhmB_`?+r0dIOhFJ_0p>l+@SbEYt<4)zZcu&!DKD!d5w{b zB9VZRjF6O*7e`xYwZml;ImaExg@r|12iNf_4A0dg<(1Mh19tjK)5nY0!c)|az-XM> z0~bZWVRKqwF^1GV+dd7b*CuDxq6{62UilU z&=z`_&;(WMH#&sRoa9t_%jB<$^OG-tc zpx$4ARqzT3L%_T95Pgm}0&6}ppvXUZ)#Lg$ZJ?VZZY3I))ip^_ zppRr0cLV9pLnKcY0~@w2_XeNqo6~{Ion*?ELfWO2Acl|xJa0L>QLrl83S{w+-X~!^ zj1lj5_fw43o^;ya^_k7x{`cDg@sFOvf?nVv}v^VA(fTY<)) zHf+kKg~UuB@Wg{%f61?+Tn)oSLGq!bS&8+P5P8g%*d3PYHB)d&HdI!x1qG*v^%`Ve zq>b<@JZ~@y!m&^W%^78(&e0;4yEu_$uwLP}^+r}nTyGqK`pKv=D`3jiG;sFy3m1GA;i z3ax1STzGE~eGcw!zDcL#a#d=+GFNXltsdtIJK9-_4fH)YRfI&iL!B=WOWm7;o!&H+ zcOuYT4IR_J$lpK)M&yVN>xUhKu8GOMuyQ^Nos>KG7J2FvNO6ViHdi1=Ur9(feDFCx|%@X!)3K8 zC1cA`P=J-F#l3Oixl$FHPc8{4^U#W6TB0ggMBSv%@9k2pw1TykPDSw@h!<0i>9DS< zC*PnY0};4n?QwdBfjTLim2ku_R?t9V($bls%zAZyR(G8I+1E~PvgSCsWO@W*qbuQe zx2i|leW6sWx1~p6DiM~zBmCckI|`guwd$w#W+^0}x85-sqHN7+>tEh6*@(7$7>7W! zr7d@RiFJO1Jw>*=1Fo8ShY;xA?P=|})nn{WOYKq<4cVuqc9|)S7t0cmr?6Q@%DpZ$ zkuqSa43>OVQM{;dMoeKwY04~9HEYEe?58pzRPTAcnD>@bIL7_S3nYt{@rf^3lD@96 zaw?rTcMrV_cKr7>2&^|{>sWWz|NZcK?jwgr`0yOlV`4Gd7 zt-ktPQ6p1^O*<)6DUmXf&hV`$;Lft~fI^XaXU_EfiI_I#hL-*~XP|p{il$-W*rr5N zY^%ny0clSY@mWM`TBYAHN_R{6Y~r!D}4Nn?yw$4H8mlB+3Qx^LI@Cht79n`EneU z_ev|?{PCM#bd`_IUL810XCx3Wu|r@%4x5Ff;tjs4r)?)x4ira!G6OX>m&GuC@+TY2n z6JxtU6KaR-Oo+_b?qS}NL7e9(zq1N)kPkw+NS8*aDLjNCbR?SWPSdMfv8F+^T;{e8 zRB*Rc9jD;vkA=Tq2u(uBb8F|V(f?M>AWIU%|L8vxOpUSV{(_plAgj-d5SFCh4BL_X zR9;MdC>>@J`5IXKHlt%}!H(2dyk6;#sZ{-wDWC)iy{wSs^Iwx3Y$-QMO)B<^ zB#O%2Bw;sG2kxfzi8xt`roKAU+*lqeMIR6_mLT(rD6okBceNCFCGlKV7n2Q4ktIvDTCdl|WRl}9 zp_DFD&XCx~a=i3q`tp`K<A7DBlkQr*eTGXlVWnepN5gJ;1+WiD0G$%4v#e zgIEkr16B%6!;0H+$R?XI1T!x^V`prQBd(+A$1CA;jwkY?*z5s1h~o7fy@`xvQ6Q1u zbaC|N5*W!O$brT|IdsP=fJ#InC9yM+Sglp@7k*;(PVz9o!)>iiBIRR^26&n23~^os zJ+cS_4LK=|tOpGHqn|G|@ge;;EDyIHDThF6dVtt({+VG$@M!gkj?sY@_`C=( zkw~H_2hW09Tst8`wy{~KltLs)NHZ}8aicbMCmM&A&qO2{1lJmoG}~OX1l<*sJ1uFj z)x)i`I+?#6k7O|`?A0=Rqc$Vh;t_%z##BjFi3)K*nTpAyr1`{I!!qjiPjioHnkRZa zxm8goxQ5l4X^2{^_WsuuNk|mwY-U$`et8SniscSvi@E%QJ<80gdV@n~^vf)7+bSfj zc%ZWZB1z|t6)jCx!cs(!OiW^_hFbAK*EXM3)t_|z7(aT*uoE7N*-|Ql6HaSAQ_0Fa zr|^sDfDJ5~P0hxa$AN8C^PKhm;n zO`2XiU|=1FooZ@;{GhR30VZ@yUlTsj5fmm)0UHJcnT*62N)TFq`fyZ#Ai17V`8Og{ zYv~z1UN)qvkO_j%v`Hq)oMin(+{%o*2&B>OBfgOBn!AvOlw%5ch{Jub3`hh?umioP zO?j}iF~qCmLZd%rG0ZI>n+C=fO~cmllCERYqn`d;b8|Vz+>GXf^r4CRq}EBfU=NzA zHhvW6KoC(tD_+m*pK6vL6;KqZ-)C=IHF^TyxfYSK(F{g!fi_ETV#rXMQj$|JHDI=U zMuBttUhh*d_(D^`Bv^nLish};%NLr;(NBy)>^%6~3VbdFveuP2saF4~@-+X}oKGt6 zvX~(Bgk7?<4R~xxG%O$x>J~29>WA7jG0AiQ3NwvcGG;Pb9un2{>DI;0BivyL4&rI@ z>b_dUfZw4dD$0TkXARLn5g-(A=;hraoi7y*0D>|YCiKqv6*Z1VlBG_;u({UA5~pB5 z0BcUc_}HQL6bx7-k7Tw3FrWvEFkF5%h0Jr;F!Sr9jIa%l?=Gl3 zxu9{7c9sqEg^M4Vnx6BP9!LOg$$_33ITyf0W)P>xJKxfq{49Sz&N-fMiBn<{+=O%= z(v)a}%xS*-Od`&itFjUj1(q5lLMC7*wC|X@{i>=yu)Df6Z(Hk-%+M0bnLRasSymr( z%{tCjlZmQB9c6d%3+bsr)uv^mHBVXoM{#LM3PC5c@@B_y=nn@h7tKecv$IUt$h-=_ zvb%MqmG4;;a-hmLx*{XeiWUYL)G%?wIGw^$c6IE-n?E5`)1UBxN|HIi)`4)C;##xg zGeyV;UKE#|zJTg&m7o7ImoZ3lt zS+cUwXzB>2uI2*Ar;d#v8MGp9*QUw0>}+XQL^jlr;< zct8|#F(@Rc?l!y5vSg|2IRMU+o*aJc1o$IoHy7HXoOLb#-jW_)Ty%)XM)X=fUOIAJ#;w=IQX_EZc`$Iy3-$h zj|YD=!krY=V&CF!z4{(a>P}UWYv=yLgJYxC(dv&M5UGxkv-0%x4?_TXZ3+b+h$B9? zzR)ZB<#0ft0Q~T1Lqy#siD4*^jhcWPO|Txo?4=UY3`_=-C^Zr z@xbDJxgyWBmI`=g@hd?SYI`5c1sg8^adMclauVw&ku(unAr_Xcgl7^CMcDhy3LWt0 zSPbe_a1ZK~v2Ixy!r#KU0;*1N1rmhZ)kEsRCY8|TMLjT6SVm8@qOo=uUC@~&j;g~6 zUF2^|1{-1!WmAkziP}>s>PEMw$ev3I*>j&|_G@bwwb_Lb^6XY91&U|jgWtq zn#f9DO6ksLC_a@!g2bdUVo_ISWnDK+-~+@6!9^ameh8wve#O0`hk}_ogdS7@qA(%Z zY=}yJ zdoNQ;!~E)&&MR`E@f?u(BV@K#m~58r;y{|rhq2*W$H*nSQb6psP!+cdj<8$7kv-CJ zwv1Bh63Nh)B}kIY_L}kB3MX&l%1y=_5rn)ZSkYle^OBLruuAK5;-Sy>KcNR{aI_s zxm-PN>qD8W57>qY>T&pljo|~u-VSXU(DbP5AgtqV$C}omtpa#Rv^6RhLnew6$OLt4 zn3B~Kb|8}#QNJ}ji6LVxP%;AV6P4Gt{N@N11EO{RoWhKu!625omc&`7q>yCyf4@;n zfRhl=3$>h>bYX@;;T)qd57tnmN=KI`HV3gzLFurY2$DPzUmLe*5T z+?f2S(h; ztSMKexsNAKvYcet#lGTB^N2EJ_qC8^e)O?UIL?sGj}m0}39_OWN(a0>WD`gU|8}R= z+2o&F1=aJX@Jr%ZUS2lvZvu183JQ%XIAx`oc@3;x&88GWha?iBEcY1}pi$tRxXPClp;o*}2( zc2fOe<1N+(g~-2c_htk7x)l3hVltSk0T{^em!Z zi`@TvUAg}%_3w!uun?+75ssD@qcw#s9Ro_|_pP1Zw{?EMp!56o&hJ-GF2B60e!%8T zIf|+E_kX9DJc&!{eZ}NYey13XkdDI(`e<9~RC#-9zK0QWqOi_v*oQ+%{C7+VLEr-? zbdb)194qU+y_t*BSyr+#Vx5KPo2-#w%a_i=E?Ma;OSu@STA~CxP3^c~_;~0n2n^C$ z`sgerItx#e&Z5K#TXhyhtMkAB2{|b&l8Be&3nB+#cn(ObO7qJO8p8Ok(MgX3fzbON zV}RLrKl$QICf{}^8!0EBzH>B^VeWUkm>0_t4f9ov%(rRp>0Th;p7JBU=nc~yB z@M#~2qQDkoqHwBS4}6h#XrHyytzp^|BftT(Dm zdUnppS@lk|-q*YaOR5wvP%Irk;51uos^bZVKcHYnS{}toKb<&$`BHd22^~9y^ZK z28)H#Xm{mQpTDg9KX^u_>U^Xal*0T?Ie6$(4@ko&o1!)qFHaMgU_v`hg`0GKE6rGG zr1RUiZ%ZF)u=m=?OTWl292Q+{%h4K7S;S?9A+D6QimtzPvmsU9o^}b#%7_-}XaNp` zBt#MuTD>d}B_w`XAzmbr!*J$9)T{%(cC3@t&}i4(HE--i?^hmmG+NfPb#X9A7K(cD zf1vi?AY_SVAP58Iq_?djuVs-4!NY-OQl0b%Gt_1}9d6ZQ<$;@b%i0FMM-7Uixm(6x%!2r5B15h^Dg0z<+{YhNW@0VZh4F!bLhB+6T*Q)ZkvAnS7u{7QRdF01}en^2D_=nnoH{%HXmxsN^|&PbL0{W@bIMz?BU;6uV1N`uQW$5Hplh!C{K@`De5B^ z$4AQ3`A>a}g4DnNa_Zti?hj1wFVu&4un`aT)%)o2{!7h<CVOl?!cRj!6_1w``+1vR|#vX>U+OUJS6S2YBv|a^N8X~Wf_g?7E99w!>le0 zS}5!zW3?)XBkOzts})UG_!z`oVjjVE>`xE}ATU?!B>&N=vqxoW8!&Nw0vS_EIBd`~ zAVLliL2&vveL~5N=qVtdl{{16N?QPTxxPb|oGI{FTcDQ5e5z-M-k+M*(+;7(2P06-nqz6V16vvZg?8wF)N=LiQ%l=>{5#4Ba%B$& zK|YVGOoPFP1yjX#7)PpThk<~Jkl+669nhChX)ophFkjgjlkyNapK3CCtqSijkW}4O z26EdQ&)oLydp#2Rd6mfs7&`QL$3di;b{Iq|(c;uz%mj5_WhT`B`i*C5fo_L6NEPke zeKobE`%+lH+wOcF^??xDaw(Byu>@mYpMWy+8zeC?NR$V$9hi{V4onEPBPJx5JxmCF zMlSo=Kl5pMNV&mKB=_l;m`geOnf@4&EB44qVoWcmoGXgGw_7Zt@}joPzoOWa-C_}G z8^tmgi(*f8i$#{FC?=2Cv~NG#Ew<9>TUL*vw)b_51>cI=BB@Ot>CbhG8RXB{N%`?^ zSGS*(pXe6bep24uEw=rnyr)}i`$_r9Zn5nr<)^yEwx5)r?iPDyPs$H>ySn|PJl-v~ z{iOUzx7hZR@lRCs@<|EV2$FpS$tlIzA`#|D@hlUv zo@c~D32DgK*mdT~<0%4UR&<%E0#e=dAAN6BQ}@r*5Betdz|7X^%66!#DZaAMaTZ*3 zoD@ArO1)w^CXh|gG!(I$xN zg|DQ}8-y=%MiTp;of9&bGQQ7D+|_~d{GvBT>wJDuV(J7MZ70#?wEZ~% z-RC+3=p7LWPQ0m?ORwuxhAl4NQYT|Ls_wUde!!ggMgWa?EHU>+5V-~PRBCot6S&)_ z*N54+2GDQKKyN#YmX-j{^*R9F_Djk+_F2QZeW)dqf!{vNQ_wzWC*pU5rZ_Lw_2RrF z{2QE#giX>WGSZK(AK$+kn1kLVgZM_VIY4Z!v4wCT$lgFW`nNp-Unhj; zS6dHw-a`0CgI-+HA>h|bmRnJ3i>P-aGMUDc9|3MUvp26ySO{B3QJ-(RF~W zl_**+HY2+25_Z=hu3dd56KA!Q*A*BN*~p>-wkwi3g2fHBYfR78>xeJ!Ay5o5NO zUktk4bL*We5`|3c`G(doklRK8+U-ntBp(15lFu%2ZVuq)i6z$sxa}$u;O-BUvoCZi z*UWKiY7VwF^CZaz@4WqlJC+raWouQkRn2oT%rzrXaTcNm@8qj3Ziiic)pbP>RK{_( z0zywmWL-Z9l9aM55X?#?Q*+WT;1Hq+aL7_o7>oiIJHmZd?#N~ed9k*@<6rFoJd(t5 zZSd%@@fIrS*)CucVg*3R(oRo~CvaqUaG7a*MuM0JqX+i@MoDVe6^u4X2@(_M`gu34 zfDjD;K$cLF!DSbK@j`9wEB$O;nFoyT+yh`F{(p_YXxTgFXIVJ6_Zx2lOfY!>ljV+G zAxprd<>=6_Io@T{l)uv6(i@~HiI?vRBzd+n?-prgsP zTh^T;-l4nrxs*B|2bCPOu@`(1;cZNqKE4tN_1VVzdi#^%eZ+hA>Lrdme+9wM#7~|3 zTlW%nx$Iq3j>9F9j-AEJ`ixDssHyShKE*U#9>w1@`vuVl6%?xQ*x`MgBOHZEBSoE)%afW7(XS(aEHU3~YRw_Eb#?w; z21ndG!-;?8s@Hgl5Ae=*0vZ)>tP#^eAC02dcnozB@Nx5VEDt~QU?~p3F@zLvthih~ zUyJ8GCMk9q?0b~&_OZSm9lCbHL}SdZ&Xwylh>F=8D3l@QbiujJgfl$yS;;lKu^Zg= z+J!x!Dy1y#*`q%puAi`R_FmTu_j#Pm4WY6|*Ftytnx19m#_=#wg zaceSYMPM*6saAkfub2%*zwNdkngM+|rz>>p`nr5jA7a5}8T3G~ivMm7E69B}n>cZLwGY)y4Z zAzACh&%?`<=~0`T4=O-gB$l?Fvy>Vpqt1ezm(ow5>ziJM?g7R|xUd z^s?O*qAtwt3OT6H@|-dD?yeBe7y0WS1VPC)xO%bO72>pUMeK%99Ng2mDTKK1ye(uG zn?khL=mp(PA)uK0xBE>Y@xi7|A)HKareE0i-=H41-d#dzTx8g`S;M9o9f{=u^cO!*-stZAv~@>%pQ$3->4ln zQyflTKcsKIXXsYOtG-l>gq$3uskIA!t=dJq6f7 zFZ6-4p16Fj#yj-}-HO1}dk~piA1_>=1V-vpy`0CM@YlVMx>ZZAo48Ob`E$0E(6RI_ z5JXe+p+D-RL-=0&CEQE$AZKF|n@3FAHhW3_aa#Zvy+*ouFUdb?3m{%bfgJuD+g1K) zTY!d0dES*+BgXg#UKYw|n{!n?r9icEEz7rU(D=OF%lmw$SPCT9G-@+1#zD}O-M;CB469>pusPBR z>f@Llt~%>a8l?|h^~PG2)CO0iv(dk{q-yoz^bY5Z*x|fS z`?W{fuk8?30HW;dowg-;VQYyAS>JLb&ftL zKopfVHaxpm7~FsNElgtXIUxy;*nIkwPeHc?yWWvt4fZ6#N==U}hLC&jZB`QEHScZa zfsPzRUb6trwpi_LW+JzhU`L8bSqWO@3uX=7jpA}NE_GZ^)uU`n88A7@qqe35>CEd0 zp@7S(ED-!vUf*POS&^iRp@lgef>THZ+G~nT>AtTZK~PQqoNMA`i~!LhjXjs;jUrBrgQHM*pIvC z4QZJm4rupvFh?s3m}R6a$P$LorA*Ee+sRRvcus>H#ut${E+I^a?U6Tb=21!xw=A)p zym5<>-7M{-_O@>h11+?ZIwdJUF%d0LlMoFx$?o1{wW3v_TD;}esSl9g=)+WG?3U@Pz^VeHzhf0FMS zxOR85{*n~0n-EzC>dm>0{ql7D>7S-0&UesJ z7VP5@k!3vNas3<(i^Gz0L)bf&KyO)lWI6m?Z;#Z+bvepI=7^uUY*SZv*GDW|H_x4T zm-=%fRpHDo^`lZyV}Cm74dNG=Ro#8wA9u#HOw#mCpXN5JR;Wkn=TrLFke`4f&XuNs zBhJw+?m-tmW(FZ;cO1=vTO8e-B{1I|&36*d7V9JVmRu5u@}mFL>73+1iaT~cDJkq= zytpb$TD?l+!vIjAcZ_`q(l2tx0@|Vx*tMV+Wllp}IL=J7Q-Qw=^ob^-HHT9Df5j0rE4@r*>XW;XUrIKH`ZDR-9 zz~W(4o$ts;N_Bnkni^r?;H7{qUq&T>+b}RG>YHsURl-8HdiT{B1lnA^MYu5i`os`y zT+U4bP7A#RCBa|Rr&S!_|JB+*$RG@0H5}`lROP^i?O@w#@(@)*}-DtPD0-X95|} z33Sy^U}YZ4Vo-*62xNFs(thERav8C8O6AL3U_wGVP5s;!4JRC`k(u1=YYs0|S+aS@tyvq%)klB9gU~s@@=(uq3ow{P~JbP`#GV`SNJ`5;^M{zg$gUB5Gdamkd@$ zf>E-gu3X!w<2zC^|1*i%hY_dhS-wJ0!%}9M}xLFQODt7<@2p&Hp_2Hjw8{dw8Or<`V-dp-1X-{abhcom8WxN}0n$mRM( zgWGZe0j85;=s<89>ZmwaFd+!QLU_~19pP;ev1!w%xy`C8_wgxx#HD(V45GTwIb9Ib zER-xTsD06_7+t-X7idD)CN-#r{*6}}_$cRbYL+&%= zwU|e^sc^k6ECBRH%KKRw%>sb-z+_RNUEH8Ury5Oq%KBXiZR}xzAZQ9}Ez;z4$&ZrL zrP4Z9Htkr)sd=yCO#*=0QknqjgV!iiKp;n*Y7}(mr~AG(r%R^`v4D|H4Zl_fkSxp- zwa?1QFq#TU2<&vm^e4e++S?4H^(`=3-xfyeg3WKt)WA!vr-; zMvh@heNX%fNV3)G*`~gy1u5kCETxd|58A0(6d;ol;iF^uK$vEIf^;0rE_0SGtSxH^ z)5w-5!5mOcf6tw*DfLapKQx=>P=etpV@x)6jtG`cP|mtYutj^ohNuhlJpnRXFsZrOVzYCZ#nk*WF2qXd|d zs5v?1W;xz=fLRR~;Gmcy&0YZ}i>zA!(^B(koWWLV9&5X*W^zbJUiqglhxAqIzcFvt z@5+gl&k~Jn{tSCIVr>tSV$b9x-d!^{Hm+xL(C#V+?Qat>V8tM4^0PT;Lswg@caekk zhn<6VxR&J2!P;N+9C}o)>j*6L1 zJOPm*NqoGrjRDEgrUJ_%&K6rVI*{tM^|IrCP=SVu@Gx@&s7i76PJp1 zvLgUijOWvRH%>q!c$uyAG2;lf?e=jy?heq0suFn4vZQ zP;%H+<(A!0QrLr+e3Yu5;EPdW*h6G$<#g4N9*vsyi!yMNTXqz=Wh;Homq+v^H-!?- z?)OLBk!4%CXjLBN{Yt%bMHP^el^4n)OB_${NHFg<<}TZ@oT7 z2T3LC-zS__7U`{y46^$pgX}1!l|4=b(j}eJv`$)CJxtSzEyl(f0?4kGR@P`BEVyb~ zSx0Ek1Zc;>I$PM?mo`9qFFJ8!tn%5g-lU{GZDGBidN!;#>Cw0&vWYnPfT!ZNqV+ls z6pSY+toQ#hqiw@_7hts0u-?eV7h%2PjkZ*G`7EASIe~}U^I7R`oA|6ZCrz2ILv=+6 z!;Xz7PQN4h`jYr8wQCEEd92Hk!W~z(7=E1O9;{hBHgiaZ%KKo|;;}vPSo34$nvTTn z_+n*lLq>q_!(kP6L<(e1kM-Tct@DGLF zF7Z#q>Gl+V%WaC&g#y-iXsxC~w5+DvI~nINckJ)AcmLLRU7&=?>?`>Bgjj zLN6VclVV&T5MX8z?$3|Yb$MCvbGR>(fsfOOiZJQOcH{b3jjpd7r`wuu!t!YYjj&$k ziJB@lg`~y_ebn|03Q2t$`gCI){LjBvO8m_cj<|pOa76n_lZ{!FIE5qH#w;0rXP>F; za`SA<3cA>@aKxpE>+*$#9^r_-9F4m=E~o1K-Ec&QK`I;(vy#FQxy%ViT#_FUUkIwn zoNz>KXrTN393_YzpeR8fks(xW9FE92A5hjE!x5KA*BnRBLf;gQXv5x&ZyBn6wQxk# zp>08x!V#C`$@e6vA=J1%Z%9@;^fWmZI@bH-N=@O2*)c8aS5nZH9qt=;&lxXt>>`?Z zlpNF9?m6q2wnyXYj%kJ50ecT7V`ATO;+ZyMMlx^$a1Zgs*D zIRQfv|Gr#39C0PW5s7H9H)}%VFIJP0vV6~mB_4uA;%XTv4qXwlr+MBf%ANy!2>x38Tz$z_G)LlSKF39xnIBo{lYCWRUj zq~w^No#G^ySv}!C>aZH1IfTSaBNlNQISj~qQx!(qhC2mUnR%3=YBE>ZU7Td%U^t&s zyef@s$4=ChU?&RnY1xTldF0C1!+<6N zRsh7_A<@K@r$0{efZ`+(c_L2I($%%ZEb?WBB#xEmIQWEMl#Ysv)i#W;so&Dz5 zP(|(Us_OHOlRVPKNp|B(ELJ9&-yudbvMhf09pfYsxVIH#cZ`#SsHVV3$4PFqx2?w= z`eupVQc@B}2{sLtXg>}N)FahNm5!6#P@Lpy4lE(!@3j&rCBsUfBzQyt5k!desT*oy26j8{}Bw{ot6s95>-ICVH zkRnea32l}lIWQF|GD^-!N2#VY`|Hi9!$8^aU@$d&VRr$|Z3&RZjFw!*lTE)}vIpxpxU^gODg z)J#aFVk#G}9#a{^QGj9&*GPe%JH=E^;|1B;u6flm0%bbY@DyP|OQ`YjrdE-mC5FGY zgm}LqbTd6l8!$EAQ_)PUww588eWgD`~DyHS%*t_f%J6u`B4S6&4g=DPchm zXM}}K@q*LEj;bcSQe2??bMkS{$_pVzDZxVg;$&bd@4{%>+YF;Mb!`SlYumzTO;I?c z0@z&?PKw_|pi0ovK=%knS)l4nQxL>fWj`X=nj%6iKoC*898=k$hB>Bk|6JZ@ZjgAN znQe#nJsVSrMZt(|CXo$6!b+`-FXxy_nPfQkRm|>iu*W0yZkSyx&v~(xSXK(Vzm>j* zpDo!ve{TxA6iaK_6l)fA<{p+tdJw*W78#kvnE@|P(gh|5OJnOZFCbYt_HtOSZf0r7 zM6k3d*; zh7N9xsWj1=i4zQ>HS;Ki4qhA4%DiX|fMy9}JEA3u5QJSMz9sAu?nHdHNO8yo)&jQ> zt*z928dDiZDKq7W6`QH~w2M!FOl1x>UCHd4QSKFB_9mwC0VT%h4al8Gp2b)FKrfN1wl3fKkx)7-O|jiJK{)2e?*Ryfn?@}dYE$n)f@dDeolZk=67<8$-OqP zOSG7LjKb0y$7cqe{h86AO*;LGlNfryimdU7q+&D~1_?00K-o?H zW{jT8R})zB_XoFNhmfZj zeX&%E6C)P#&E&6&^SFXGio&m|>T~K&j?Ueq2C4d8$}qHDtA1Zq|1lt;M4q7Z=s{=N zR3;k`V89|EBMLkCCU5)B-sB2@KU7S9^*ei`5rZ}>6yj?~>uc*$#XgaWeRx`o8iEt* zoa*J5Rn^Bb-sv#a5&}@4)e)vN_x$3P$r9;a`y$uChNXe-Ybx+Zy|Wtw?=>wW2M&TY z!G>=?pvmb?E-Ss5Q|t7@%j1hSFj2!%{c}?PEO7=lso6;&^9b0kC!^61l!}i`HF-4_ zUP);oLmG-$n*dU4bDRCUbc@Y5)lawJoQ~)If%wce4y$bll*CG2_Z1aMm7kc$a7U?MLpIUuR3J}B1H-{ACx0mmbOeF`yh)=@GZ3!F!l7|c7i=oz@u^x46R z5k=8FUEq4#6lk+J`c);p5JpXy!23}2M!!ZC;FX4b8#WmMjQ_FK^vp+O;UWAXrJba1 z9SEG%V|gf)Affa>{3!Ztk#q&8`L{0Q`(8H83(|0mwK@?d#XS^NG3eI4QXhC!IW4g) zMIuY2F=!b%A= zMI}#Yn((qAZPiiKksxURRVawfpg;Kz6E;jXB5X(`qwiPJKi->Q5r!p_Syi9VxXL(C zt=pp@Iny4oo{0i!do+w5spetZBWS}>5O0Lfys--(SY|hbcaGg-UU3EO-J7(vvCP z-Bd!E&XkbM=ZBMwM>Gg<*Q+dP(FVpfCW}$dL(3u$7W)JkfB&6z`NW%>wTCHB>}8I& ze}W{K(2oCtV(BrR=3mU1O7#;2MJo-o)C$#-WMwi{ib|w%{9InL?pIZL(@j}k9A04R zdtPPV0CAgqJdOX!-sBGhFy-{+8-Fc;^Hlp%U*3P`Kh&2GrhevElWg*N?H^Bm!(HG~`A{=ZlXr5bA5ZcA-h1yITqrO4zPR%r4lcR?HH@QZ-Fp*D z(1pKYaN5`W@~Jy{sbIQjf^Tb&=*fqe4iEg!hhVj?uzmF8LwM~0pJPH*lg=j|@cN~6 zjQ>9SH(Dn$$$g%_6c1zX@SjBFZ5>UZ{TX z$Kg8V!w)^wQ13tck3aUv=Rf%POTH1*=?fOnTu6TU1(8X=NEQg2;RY1#eb1Yl-oq{j z1JN%NBmY_get&Gb1HlHtCYO{ksu=h9UP3AGoE1v%%rYs$2j&wI^oX~akx8FwWl~iT z3x>K-5WOJa@MxPMXHI&w2u%`sV(#jGNT#}e#l52|rV&Vq>}V)VVXA6!QaULSP9caQ zJo24rU;lZf!;YYJ&nuU{hOpP3>7TF9h2UBE)AboW<}aA}+`yPctu^M4iE2;B>@@Jb zl&rNqb;8U8DRi4@hE?EO(KIhx_2_q1kLfh)Sc*mXF>6dhR+{k&lv0|<$-*m`U0Q;& zZ<>4M)X1-H>7YfkEE;3p#z(hy1oLL;u6uSw-A=J1$ z7!z{lDjY%)*V?{}Ovkg~=&u6$)+OD9&P!1%NE8}Es)|H{D!*e@_XqNBt%|f{OiMd} zs`?I#SUiGD^hST#ufEf3k^={{gUwR${B#0%`cgUpb5{2e?dH$5X{!&PtQQbe#os75 zIEUnop4mSQyDDjnS;Apvh6b#CUoYuf%8EhtBY@a7RMm&Y)HC|D;)y0zoEJu}J!y*I zn>-E^`6PcoP)vUN*UhwrWY9Xl{o`Mcw;ycZiu2PEzkS`j)o?Z0COaZ_`_J z-t<->cQpCA^y1&OFL0yk#drKh)c5o43-ZzE#Sf+zA8B61yifxNuvjlKwNvk0Si{)LQ3Eu5$^d3S2+7jjco^X(@9y(RO&YR;kMC02?*ZTQ`jsH+!sO=H zN*YpBSWih03gXxl__nA>Phs z_`P%MeI#h5)sv8?r7>Wgr_pj*(1TJB_@(HsT$7xP15d}$(=jP3hQyR>s+0gx^Iv%K z%t5u1lD*Rt2TI6g$o^AE;W@+wx2Z>ZKn*;qNaqj;S28Iy=(4D)V1@dshb}Fpj)CF= zR`CS@lgC(+_L1qH4E|APtXN<8zJG39##s5K2b>*K##nWVOx@>BdXW#5smm_vp^I_; z53TbNE)Bmz$USRF$d09{NBPjyb20WtDd>ZoATC%{|H-5T(~8F-PY&-_gLu3 zc*fL$m&_>D3affJl!bIf_ZCo7=jAcHHGVK-&;!1|4_ZJT|GwQiEMi6-4~u))+T^rC znmM!yFrc_67FCZCEW{W5TJ*1;i#aie^C?ALAd^)WI!l5H%{l8#m#Y*<$ouzVC}qz% zvTNCg8mN{OXxV|9zH&qlv$aS)toxDoxknR28Hqp)WryzPLI_!UjM)kllQ#c$VEk|S z3)TP8-wLY#O_Q5n(@4wOs>ZQ7nYJf4zap?nw6d6h>G$zaiksMSISHLj8<9h28_^!( z#7(c*H{7BDvJ$KJypd5B(?t-!_?QL1Q1trcU`YJ%tsy^J8n72(2l+9}QnKukPdf{k z{7M4mr)y0BfZzg~-P5|?I-aTf({{#yXl6rlf80pNf7zAyCbv>e7;=5VuA(~*InaeY z#=6vTIRzxqv2U9W_al4Sr3V`$^Y&d*>qmwAm}k)wFt=wfnBRxq#5=FUCRFMoz2Mi2v!g4$7IY$R!2Pdf z^?dhpW-xqDSI>uM>)zYdbN|g(LDet)>UsCoy7VPmJ)ccIdFHL2x7RUkvpw6B)$?ZS za3#XgBw8uF(7vgvzJHrH$u0QNcx@-sc86Y^6cd$G2tldt{Jy30`&8%mODC5(7~|1g zGaUW)R6%dX{B9z3s~k4Jt+K6oJ1e5ON_&*1^1?voZHozmI6VVVzaAv>Hd=QwZ3_VC zMvqbblmA%NAG9|O^ZrUUZ(Hy~a*|56#nwxR>s(te(#Z?UmjY;bA%|32V36qc5lFEj z>ku0(K*t$BBc90MD=v+AF7739R2u8l45fko(8r6(ll=V;#pKaXSb{Zz~kxUlL=Guo+vulFZC23ZY^{mLrK#G_|Ge*4WYp zu;k)VB(hS^V-QwG7|M{%j7xJskB*_-te2nEkpT`w8z$Jxq?HrDV2zIByn9XqPv!l3uT%3Io zUl9q}uddX`FQ6r$M?)&E$gH}S9!Q6x ze!A07&2W(=KliL(okMZ*o!dCa;1Sa0#jpxWWEv7VT18Z3C6f|7u?c~6yA$fV!# z+e1UIRR;9j4C$W0UmF3e=k_a{W-ljO{SlqvLP#%QAA^fvNK_UbR#oZ_2!JE6Q75o2 z86mNla>q6{eHri!joR2l?_SwRixZgC!K9!8Xc^Vqt$s5=8+XU15Lm7nFrQd!s(twy zLjd^FCBaBSPMzG<0pSV;lW!5MV9ZiF>5Csq0hW`i>EA_E)!;5PAUz)=OH1;X!Hq

?My4~_b?Twae48HkUs*4oS4UNv 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

3OKaZ5~YEl;`3NnF1 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 literal 363294 zcmeFa3A|lpdGEibJ)E=lIcH}80t8rlLHiGFz_hhM!Ae#jU=)E1w6^#D|2Ia6%1Ow0 zlGghPoTxZf)LOO9TC0r{+Cm414%FJ#&bHNFJKJ76-CKvY)>-*~f6x1_wb$NfpCLIX zT)+^Ly@q#q-sgSh_kEug>^OKw7z9E1-e(^@8l3sma5i{qJUh$3(d=wEYuEgQx^D8E z|F{Z*rzW}#%4fk-8@lH~z-y}d0`4ZfQ|;WvP1{P%-gTF~*H1iqCxu;Y3dDEnHo8l_ zL`P=BBTsF)Dtb^}I^d2(zkW9`pB?Yqb9nOVAHKeL^0upPx#7m`H{NnnJR9g~`{rAU ztDeL&e?MmT+n-$gkbltF@wB}MW&$fbv2)Mv9S5GV^T|8!*n8kv!MHX1jGZ&L?48-M zyZ-PDt8~Mjt9IJnP`CJ9h8B#8sH6n%cYPR^P~k>bX+i z^;lo-^zA$EIC$%U+xN}v+_U|Top;>2?^)ZQcKb7eSRD;i*yI|Xq>&v55AHlLv;FBi zZr>fW9N=y&`wku0x&83%2WAfK*c}+GXZleB+1^_j&i0)@dh5=8Gq>;E+Po^vi zj@mdIGdrHPduO;W{Brzd17X~~-?HQ2&XN$UNcrFe&x4Gf*GR^LG!4eblO!0Aq9~3# zold}=`!5)u;9barXx#n_Cc-odgD6R2$}ad{5(H7&p(vads*{K(Y1m4`C=A0+r>q>s zX+&e?pEQ_E!(gf#q=KgQUzGa)=3dZ25`=mUQ%4cEAy?{#-&K$Zk7FJO8WppVL_y30 z{^$k&B~fQJH4-q;XslkXf?RUl3R{4$yGDZ!k_P_;0nc0d*WJ-Vq!#&E)9I|HZ`Lu0UU-y&)JNE6{d0_k1 zJ8#{48}jVnGp{+Y_l_-xp8j+mepirRJg1&3dB7JLyxSC9dj6aWY80-#ZRf$61ACvv z)u!OwOXifi`oNA`_g=Gm?~a-8`R?MtfgR7y~Hj+sR0>i{{k4aqsPWW{R1a1Ghiz5R&3)&*GoGPk%b14iGnOT&(<_y$9~t zvHSM_vGX>HU;N#3iq8S8>dJ<>{dB+@)!Ih_bd3XCkbO*y>)@B%R@b%=|>kZnB4~_RApac1Ld{4dL;yqt=!*w^@ z6l@-t!NqIcc*D)xZrOIj^}*xk!u5lDZ@=xvnFB*KvH|3vD|XHV4A8|@rG^J-?IIx>u&ggtAoc6h>yildCS%x+J4myH{5h} zP#otZT)Xx9tv7AED%diYbm!pXnjN?9l+-m8eoydib5UZVur_bQ_Xx(m0d{cb?xzQj zUzEgd+cASN=(uI$)b`!G58tuJL7XDH)8n* zckDhSLHv`AxhR=iVTdv}%pp3XlB;&_J#^dlLHfLKp`wG$j!;8$d1~&HO~EB|hcHC7 zL${lP3me;?eqiU$;O~;nbpUHLIEr{ZFK@qg>kUudddp2ey#1CRzHw{t{d2pY3+3QY zH}vYgn#if9^Xbr^X7Y-;G&4+SwRwEp+<6}wv?)}S{_VF(B0uIab0C<*36+xDb{n$c zeA57U2*J_DTv;|)dGKyia9&&5-K}syjc})-UrPEXQZh2TXx>D@1~tIn}RdbXVmV_YU>@|@s9-SI=4Lw4|@0R?YHw^ z@Z82^d4E_BZV&EmjQ5}5olTW@_L>6E?-$_i1&yjfH4wb8F;-SM9K5Js+qHgs@Zv^V zzE|-dYfO~4Rw8&w14KOoulgwjNS^FM0zvpO-d1n|vX8Y2#&$KM(&R{OjT`jzNcqo0fJi~cnFc=X57pG1EYeJuK&=y#)kivBrzS^V<& zp7^ElkHs&EpBFzres=tv_`&FC{Eg_F(SJl=h+Yx@MEu_PeerwZd*gS-?~Z>aJ{G?< z{^|HF@lVBXir*Z+E`ELd^2YF=A8-6s_?+mu{JA@Np8dWkdQSAZ=%@Hs&)vHZMjwto z7=3`h?~dMMrG}sUB_*CiEmz~+{C<@uU!~4hsq;CjGyJ4q{=-Wu|AF{J@dx71#$SlP z7=J1LYW$q!x#}@_Q}V9lXOmy>cOUY z^2X$y$@`M>uKax!ke-Y`uWo!U`OoCljq$(y>sKm1^d@=cVK^Jjp5N?+=Qp!p`hw>9 z&0=c0*th?JW=2qic;wL_IKP=b-!8J?f@XS;T}GRAlZ6+w()8u7RC{Zphix8?rTrS? zWh>+9D^<{XEItx+|1rsf?mvVX@ebEQ7Ho*x`X|{{M2AvD6P@dRbNUv$R;P3_m1g!> zC5s1x{lx{-s}wbPMZfvbwZ2V_ztFdnh21BXV1?Z$^)IhWUtAT*qVAK+8X-5=m+!dA z;_eNDw>J*n-jV+JFr3|gPSX0gKk3JPuZ_Du#2ahFy{vYr(NeSW=ga99n9vdwb~H2jV?5Et=>2jALe7?zPv%@_H^FVn>lR9lX|c`k7>3SWbI@&3mRFJ<}q!I?aIg0T0+$prN+9?X`Gd2<5^0O`z0s zaVG<>BS*7%xBxkfw-QQJ{Z*rN<3dQsK{ zQAvrYB&9&V!6NCd$(!A;Xl}kdRs40(Z8Ii^vtBE06aoK2gLF27@Tvo?8+DRvp6CiX zhD?g!iFD9};^Xd75p9q)h32-H#1AnWqs5Y(vWC-54HE%I!W<~Iw-P1W@s_0C2pHPH!aP&*A@&kddtsY)l${CrUF}CL> zOi)-alT43`^^OtOP4`;dt(`{E#6@?yHNeN4D3(ZYJ6WGo7kxT)n%XRHXBj*89nPi(^NnT z{@oxoMBQiBN!WAdRY2ojM|>rr#qZQkAMxNz~m{D>Ys#HSWucVx#Wv zS}7ZAn%@5irIzTbfd4MTL|vR5pc}FG(h3GAP;ha&*-^v%{B-lQTB-Tz=GI!N`RV4i zTB-TzW@oL`{B-m5S}9LAAAF?J%@%0kIEbdCGZe?7@~P;^IXV7IZA3=BKEq)Jn}yQ9o2GH9tlDaIMt*6!l+gr94Hw zRTLG)v(cRq0g3X@95ZCl2thmc?U0Lt;J&RoIKzAw+LYF3{aZJBxLf zhZhAFmAfdw@y)mk=I<==otbGYu!j0h?yKIEKxD1UAmEBF7Xt_DDi0aB290AA7F~A< zWW~C}Se{{t4#Tt@iW)MAmU@s30a*#Jfsi$-cOAf}5T;6H@v`7$k&2{2Du?0EmQ5xb zOEUT9mXk^*#k!ed-JuclN54iJz5vt4lL`Z%*6NjWwnW0&=m=+{BOHx!E|vO@Z6e&@ zZHDT-JEFO-?EIt6Bdzy}wBl$s zyz9he&|^GtJve*qN)ea15EsvjA4JjInN@G4{Lyuvn5vmvA{jjf`hn9Q6C{#98qFLs zDmxPy`C&Q{>F=w~O93R1PmrL{ym@0w_l3ty1|xtQTe9+ofZdi&uTlubjOl64Awuh%R-p&%= znF58w{U-O@)3WodZ8!%w#UYHTheBKf)@4q|gJ5)I0eNUDim448P3A#xQ(eO5RZ#V= zqz^-mDwV~{f+vF-?lWo#Hk}-5km*^`n4<=|Dpgd#b)Op04a=j3`8zX9$Boe}oqE4W z7igsFe8s3i&ok$EHbW z+DQgU{bVs;VIEIO(`?wdlMCNVMF#Y!_YLav0$P4dK1-VhHbcSK;06M06D-;@FiWgFZqk z`QTA61`y#n&u;*du(QIn3XbggEJ5&5~q<*kt*h4Cq;+d>HA>RJbQp z(RU68JeYFQ%K|0REu>=tLM}~NYDp4e5o`2>eHTx!9>O@iYEcSQ3mNQ-64b#I(Aca0!MuS$4zXVBQ4AwGl zt$a2FW?99JrYu}huYzlTy8^O82C+q9>};5 ztygM}=LQL!vFyX@-gb9$T*Z@?F~`G^qOv!~_ahDUL1}xO*1?E5J{cfrjz4H#0b5v? zx0aHCUChzC1=r9HN8<#K`4e>v*qW-<8Lb)kZXAD=ODISwkL{#<;U2LLuplSJT0#jk zeh53w+smLkFw~R1TvBh&qVX#vbn4ba=Iym_?GN=R4Z@>xjbqu(YjI0L-1r%1-rzUU))f*MnPI(-=Z+zsJ5oKQC$*>SfeKuJkCynZIfpmgFKn+l=($I*x$Qne?r3)*1n04=ai-DM6z1*4;{42| z>$nsFWmoQP#VZT-C;K6(uN)+$jXiJQ^L9JPou6ERDYTeBQz%=rZrZHC6qc6b;4u3} zZD|IUR^l8SJ0o&QNX}zf(@d(x_~-2r#Jc{6`|2b1M5c13M=Jh&`wC31S-|q_WdSdX zKOGS}BRIhb9>j3pC=Dw!bQr^mB`<|JWdSpf0{s!t%L>laeYs{zcI*ny)P2J^w5YFQ zJZ9e5-SA8;jTbmnRn62Rp%=~6yKRs6GHubAS&}U(ugfgQJ2?oF#j-_3-wVkPgp=82 z`7+wDy+zBY4`VF}2I1?MmWeMj{sgOxzZ1uoH-8LkC)m<*A@NvSA|%4ydzXnj+rI(s z%(glK+!@4*4hn52+Q@Q&Ky7$qXE7**vJWm3WoFATTC-)Afikbo1@ehDwOmjt#4QmP zq3>;@5K+r&fPtR$`a;y}Icpz;tK6~t zMtLTR<;TtW1e;LSP3Kbx)_gMOJP4bh@@D@8RI@q(#d${C?rI04u{_wzklPvFyscxY z1i7;IuI@Fc(5$UF)=&n0oj$sNin57dM@+{J;eSO>Z|A?Dte2Wi~fn|RBCE{V7FBgH&z$D2VY$8RUIH4d{JIBNSr zsa+z*oH)+9LieP#nP%Orr88U%P>1Ixo-h#>p=%$!hs8OZeHPwzd`ah77eQRK2;y`o zA7l+9E^>(TZ-)^VImG$5!-$I<;{4lT#6=!)I?N{UOT;Z@ydXdn2Y>vwKb2S?9fV<2 zK|0GYR6fn55j4{x?C?+2X{1HMpo%uIa~0_-OgUm-J2tOX38+p#ZQ6nyx@r0iJ6Y*c z4?qODHb>fNY-6j?&Rb`Az&bn~GC@Nr6LOsh#5T3oGRW(asADJjFj%SV7;Qv7t7XX& z(%+SOiN$wqe+=HM4xG^6W zFk-LHbnfY&tqWvpxG+YhFb2vrbUm>pIg)p7)=UXpI?E>Pupb24$U2wCh>UxYNRwIT z&L8llTJ#G|6Vufx(>$>g@H$G5sL9kS!ayDMCL4Mx!NUL?Tja6uQH?fn6`E)4}?QI@sC?AR2t0UJS_$f z9N)J@2tqdl;pBM#EI&S@JFFhN!|KQsNI_%oF|NT={S2<(@W{jJlD{1AA8}aS#;K7+ z1;<W0$fgph$M1V@&4D(?a@)Uc~wNc#RTUd3%@i0@F$2hP>^L0#gzlBNA=(0yY~$ zybZ}M`oN6~E)N8oP%Ff{%m%s&vY4y{8Ho#+cakiqVLDd>yy`W?Kg@pCoCY>#ENht( z>m}B*V#Om`mN-^XLIiDoj|g%QQTax5Uz_32K^K8b|VGDF{?4 z53`mNPO@y8R`%Y!#lV}DZ~{Zjk2{5}89(L-F4|oFfhMD3b~*>64IKWWd3Z7oI5rMG zCAuYcA!jzB>*baEa|u#uLnMN07(v3#U0|guOOw+)$pe<9iuO!#^qax{jGN#+n zS?JONHH`Bw3Oc6R#IA-;8ZeHMkd(3mFVGUBQJYR+GBU=&M7C!f1deBfrNhu10-U{X zdAOT;7W~K&E8Ely;sKc=RuW}_&n$+(Lt0JMdYq$->Q*p*?(V4gOUBO$>b=qe#Vl7|$7CxQZw?fwsO zYsVWXQsFj>PMVp4!sGzK0tU)DT7qKMXA$fiI_qR)CBukI2WQalxn8wUrI=X%_gV10e!Z6v8LGshLFTOX=-e$0~7y}r!7I(1562P0^n3}GREPRD!i*^jroTV z9PH=^O?0T+JV0eIc)gD`PI6(?$Ejsq<@w1PfN0Q*=-`I7utWM7TBVkTIDnmco*_tD zlw>o+KZtSV8RGmM|Al5{`8-3h%QFZooC36 z-BeN73&7U=2!^Re@qVV$f2a&;XgDfqIGRJlvOdkWX0AlfJ{_453+WE!gF-F~Eq%fj zC4I=ag>$6LC1{2qLxvwY$sM9UP$q7Aail}jIE4h}dhRqW(aZrbEww9UQx*2Fr3c{+ zGXXRqQIRo;OnxB0SAuR}0BdDT$kZlz!vT?uTtwAVauc)6XwFS-WIuQ$XwM+R`@hTh zy$!A`0Z7}W_b`q#wYgTxv3;bs2Kxx;CbP94%+_oP{>#1Dnj;_l>8k_#Z{Oy(`m0Y} z`IdL(5@6d*IB{VV5boca#nUpD4D>GW8Nj*xzFmmD;sIQCvmyj{OZosUa?O7I$F&+#b%q~eba*wX(deYMiP!<4w*r{DF9($t5gihnG~}! zDGkwNlgWB?DlRXMM%g3=gRHG^|E|2FA0iQ$Xx2fN%$|~_Z05T$QGMo z^jW0wLn4P6Xbec=l_s=XyuYgu#JyQ`?_E0S!Wi81U$*Cm>BaSiSC`Sg7_*a3XJdk? zxofwn%o29S)(0C`pN5eELNgQuFDcoWrB&;7iu0tUs)1o8YG7kFunAEgW6C-Nc$Sq7^9jHK#l&W(5#6w85_L>e_9gI4+j(1p2)O$ z@I2DS6|cIYxc`dc?yz{^3gsh;ilav#2$+E45ADVC$`?A~(-tquwL1D#`Ku2EB3YZL zaZQwFsA2a&Fit~8(z1Y$eoAQxRYrI1!L#6)e=;$qB9RGCrIl~>9;UiK3S zR#N5r;%@pG3sQI!Kd8UTkhpCucC+>qS??`{73Q_wL9m2#v;^B-VxzR&BU44DsaMc; zm&{t0?QRXMlisGAB6lWI49w(kF zUk1U`_3{Ic)627lUJfb@(`XC&1eiol#5Y8EFz13kf#Op~qiYCXWZ~B7kq$y0D*(EP zi$ILQjr4)fUHMj&Qh4x}{K$`9`PR35pA5b<{gowH*Ure!+|LI0vk8Pk_LrsUvn^Uw zhW|F@7*S?T1jS>$nSym8K1pE81rw%jh}P9=qt(pFS$b_Op{noF!dQB3++${ZVf%c> z?DNhZWqT!eo3XuRYE9o%#msz;HnT^}IydjBG2`<#%hLYhatR>r16?{E}ukK{PBS*~qvDcP)6WW86d_2@pI;MtLIZz$4 zjTYzamopy8R`1?z!ZGOaQyF6PuA-`ovENS@2081w$z*;kzo;G%{j#P3-{r9-eMy>r zz}%PAxoAqEY$$3qYk&*0=kHTw@u5SBL;xI#)`>p=#}#Uv9$i&70HhYpLzj6$D2g5>}K#&Fl+ zJa!9yMiVY7_5cFY(N`OfcccdT$A2Y7P^SxWi3NlW5ywCe{Y;}@&uf}PO@Bz z$l6JCE?d^9I#uYxYDZRk40{%I%TRK&I&P-4;u0#|*>$)#!7w}I-ko9fi9))560H(- zpGa+bn`-#Ic1q*zT|F%QtUY5abDn(LHp7Ke2%E-kh7@bj zP{k)%>WqB@J_1Z4uRJy{PF{zQYe6d{w2HU)QzCJI_93$ptpa0Kq@b)w(p z;ngyfS~SrZIR)ny&Hmjq)|eXwklIR_mL5!L*~$gT6x>d8NjRWip)Sai5evr(hVU4% zf`=-CK!jG^iPIfgnywYf3@;in-(sHrVvz<*W@82>$CLPz8nOBktB^?SGaGaCl>+{z z#AU3^#&JKhaYG`K#iF+1vaMwZhs$wVbAthMelUp!qw3{gSP`?%(bVNSl6b`gtAfN) zxsGJcxtOZLw0ctKhIVlW$Y|P9(g$U5m3e5T;mcTi@yl8FMIk6fw-FQCO|S3Ix-Zs~ zbqb9Bt9TfP~LnidjXor22%Tel!h%CPR#P1Ea*2QQ-kwMyp*gwax8N zG)*%R7N2<6C*D;HhLKM74yKQXpCFi~$R7(hVAciGwEAyM?W)1p!}WbIEy0+oq9Krz zV_!ArjI1o~1&;1~5?iA{q%TM|IiPh~1G)-CN_Cb*?XluQpyNQ)kebc|P$9`@UNmM0 z>b_hzDk;KSGz1^b$We#DBq~9C(Iq6$7~z0%+EReD3Xeu^rCh{iaC*%!2Tth1#Yim` zu#1thTf@zd@&(uDCr$r+@er{1)lEO+X0ZL~M;E&3_etBC{(;qFw>C9;`r*rdFmIYGynto$&pHgR*=2+OXu+2c{9a%hs1P;4~k{tLV-e@Es%}q9I6#YAy^B4gbNkDVjTxw6b%KnR~(Gb1bC2{uqi> z#(EJby0l?BUu`xS zvsFWm3Z8bq5}w7v9=fO4I8AKYwzjR|hiz|bji!62QSt(9_=@oVdR>0-|4!$JB4;?v zDwvIZ8({bcy|$Z}cr*PbE{;h+S|ysW1;XmOiHJC-&6t^Nt1{af=hi0^Tc7k}U_9H5 zHL_LNS`kk(Tf+~{K8P{TwjA3_M+lh(8TY(%csHBPpe+9ki*lVf?KFlsMi%)ARx??8 zonY|T-eaJpcP26Ez+&xNCnnFz&ZOk&g7&QJ4E>yK5l9;y3f9H|##q#v&O6!JlG`1v z7bit)KfeC{UWe^&Fu0os8H63}xogd6wG`(-Z(7-yI9@L?#kFHjRty)C7lsn{cxfM# zR`wBSZ0mxpv5C-Km@E)_7F<8k%+?W(4s3bcgFk*&@%hIUpLksHZ$a_TM8~uptQ^|d zS;cSJJ2K+yU5fiykpK-x-LIOx!gGlP41XwPeU3cKq<0%kz6G_SDVmjG+XVl@w78BIn`aY+RNSU z%be5=!Sjk!>Vk6dfh9$G?ccuq^S^Vn$# z`(am((-QWx&fR4Q0~DRKgqKERT;T3@q}&3&CO~M@h1H4gYj#>vACpoaQ?@0hhxB)$ zqioVCkV)*~DJhUiSZ)dhVhvF$n?i-aYrL2;6*75@@QT|eqh?|$5zKo8Lw`Dv8D)YvfHLu|T7w=Yj3`*ml!>|M z=KqFI;-eJdL2)5+Gdy^J`3oI3(Hz=ELOc*dSZaYlhHzzJM(m}v{K6NtR)lqb>J;m0 zmmB=@2w+_TpncYjSA=yV**Yi6x{XWc-QmphgLxEzWx;NK5}@MSVoO`9}HH6d$r5+#I0s(yYS~6v-!cP(fqsm6#uRu z|GxGV|2}f~S8E@A<;(ezm55id0I>}It(Gt5^6xw$t2L+icLn+P)u;IP5yZa(F)O|^ zzasp*tf&9A%>KG(>YRiSTT;*1y zSg$BIUNp0mHN!j=taiAG4IeR^VOf5N4)>DUQWNKr_D?2Z#QKxgS|EHDrF3ja3t=n) z*^X!fy3opUG{d;N4<>9h=vkr?_PE&6u6BFa2ER^L0mh25!9y%8e4xiFrxu#oB=Lj^eb3vz>D}+#_I2r06J^+IZg|HaRY726A|0S{_a|*NF-^Z< zI~3j7YfY8y<{6wS)_|N%9N3jjnN~3LSo5PjWbAX$243B|)2E}S%MOT?)SwMz)*bU2 zLlT)|d`A?oVf~yZA`?drECDLdBUGV9E1F@o(QQ!F z?p7@>mCtRvx*lqSxEr4~J!*!TbTBXC6s~RmFJ#$Yl8S|JO4zm_n&%E8QF+eWg8h`g zwj$)3y(Ufnmm%IK0D;wPu5@m*ngn6RA86Yg?t6 zJ56C54icN#UeNN4iMA!Ar-T}tr@lpm+UvYf``nU*n$Ih7^k`NSX<1F8iGvO&{t64sS|m3vuX)5`39A)46)=24 zUu!H8hq`q>+oGB}@SsN)6!nH1RX4-nPK)cV&X+NAq zyZhNJ?{MUk#hqwNP_E-d$CTIJj!OWB;;Yl$cM^Q3CxxOF4$ngulT{i4L{vt6oZx%+ z9ia=0o8LhK7e&qOfCJ|o-13Z;97t|RNLNcjcEVNX>)&9M+0X6Z^EX(3wjdDga&hm- z#l4ljS5bP4dqb0k-YRemLJ6A-%!FzR+*?i`m;G3P5=i#hj}@}#@H}yPMY}C~v&+_L z1zKsYqx3Pep!0N``6Db&?qlT$A+d2xeB41|D=?AHm{bRn6J}^2cpZ`BSgTkTw${PB zDv^Q3tD7!`vBK8z+?e&NhEAZjdx9lofUJ`AvypQCaF^zztvS(TDHjP@r8PD?Z_B!p zPL!|?q8NFd79kTQ8yLh@i6-S|aA@)i7_4{+F)k5AOJ~e$D0XCGXmjU*pjCB8WWF4m zWq&18X~Gd5&J4Y0$@10@3`70h~mHq0$BOIk191XqNQOVdA5qd_FZxCAkpPaVweUdq8oyIOZC z+3mQDtzjXUhP4#9|MDQ?iez;g_#rnnNyEf`Bn^9SzgagF9oF+ra-}9I8@ZY>HGLH& z&H#Y!yFiML3)<+IPz_Q-Ow^)CJ+9F@nx6B!jF1KR_TKX_G6+@y+^+Hw@9Xu_|qT2w@@N;s#W34vR!n42C~pB z!^1A=g|Z6UvG!OOrHmuZJGY2ENiK+4Ct6(&7s;0O-92hRv>J#~)@9M|_i(g1y!Wo| zF-diwU_>Q2%O7;#1MV~pH%i`p$WVlC&>75H&e_=UrNIDj)D_=Q4?_OAu*aBnj4Vxm zS7-f|lej#?ndzW^Tc`JQ1le+BDB&ag(PliH>_cEgn}`2s^?SVzy{2K5#LY&l6|^Fj zu7wO%&YAS`kN9()N+y9jlaC}5XfRt1$hdo7s4sNDhwf#$o~jYV-TOlwwd5qQdnr~c zhZlE$-gF02&Arr;aR22m=p!abV7Ib<;^6(_Lg4+f${j~Vi=wNTmiBIw|AxO=%U=N68 zy6Tbxa4Q=qW;yjfMy^55T<=Ts(`DcbWND;EvN`s8DcVZP3!q7|?*8obYuyc*P|PZt zTPWT)T!@qtg4iXepdk`3Vj8dyslgT*m*J}phwWMt9F|nX;Er4|kWfu>-@s9v zv-ZqEMS(!(@#tE>H*YQKS!;YTLKnh(RD_nYS$l4Zu5@@K1Ifxl#gYCFKUh^d>~0Dp z$t){(IDLP9b{5~Ct^E!FU;oPguA}Zc;2u56WnS zLumc9`bW{ zjQLqv>pgez^`SM{S;y=HL^TSq?0(8(BG~O?U!>WfX08+lHfRlwEQe&tRN9ib7jl`P zy~$K!w@eE=X#mOGyFedNvroTK9fpx}7Q#j!*Dn6QZ zUl1Au`d$@}+@8PEEp<<&Z_(^LfJd1N75>6BZA8c)zaSLf_L3TnNOVvk)?J&~sx(_n4# z8IcHJZj0m?qD8(?XReUr$6R=o%{eZcQ&Xo2m(_`(2RSj=IiD49b|@6m&KV?Ks~XKH zUyHfyAvO{gruSr!la4K90B0Q}s#1YkVY}h8?>{ElyRI*L(^B@P#tWaX?UbG}LB1c{8i=u2c{ZTM7DJzHIhXHu9V zNGhRh-#nvaC!4xv!W#^E#D+_l$07!jo5{W<*3c%+8spM#*CYneV`-KHffaG=M+}AR z8r4uLp&oCYfb1xp+m#y#_cjnbZTJlGavyKw$_9eKcQyJ0u^J3yX*DD{B)`{6emAqT z(Dt0$NZ`a$97M?%~5 zHWd^fvgt5gkMy>#O^D+&Rzh6WnYeB_V%=tE(hmQdU4aH`m=K?UsE38Pbc+1_z7TJl z25>@LnYI*e>NUIo9~9mZ{UTmX)|l{4OlX480pabG0=y~VZ6j2olSA%9ojAK$yAn zjS}H9E2OjL7vUI&HdEruTnYz4>_m7O8r6`c$L9IMfrS#Fk3~heXsCywRukbVBHS`* zN#5H{n!fQR65(g}MfjlkOul8sTuq82bqAz)-F#MTRw7&d)sD!(CC7*PH{w!S&%K6hr$$6L^Ilso_e4`SM^UL`)eL3H#%lQf7 zg&I^RoAg)YuexSJR*{Cfu*hFxWl4Yg;zeb+uNBi1GLrN!hc_hs`vb%2Jg1%7)iucwD187E%ODtX%4ZbbS<^Jccy_MS5H)%+^+ejux`uEpU77jP5Y6Ri2org-p`{@#nYE>jb{b-= zt|8R(fQC@6Hfe~a6PMn+SM_=dtiFcO$dI-RYY40e(-4G7m!l!9FLM{?8u>C@7S<3% zqcw3Z_kF1$_`I*zp`lB@DE)a7G=%K>N<-L9n!d)2{B!#nVjLqMSx-^Y{3|c$xNLlq zX05N0tsuP_VImUaAK)t^bOIn>2j{Gcw*<_E)nz0(?} z^TXYg(;BP^sKPm3Yn)qC6@35K)4kl=>=^=UHY&tF_n=h^u~g8J7&OXms(m13}O%JXrvDiqUEDCRf?wPcb+H=0I21hn)s z7>_v~K|NKD*x3JETIc`l90}^47u1tkZ+=0|2wXg-U5m%`CA2~kvA#&6xXlvG_oWMG zaq_o_aONv@HaimW`9m$7$Lqq`ZqoE?3q-$>&5C~OT;#()`i%>jr;7dA7ynLn1bibx ze$fbcRcJVja_Ko9y1YEZ98pIj$caiW(nv>7n!YAG+CPeI_XD;M4 z7(S^7Oa>$1En3A?)AVhw888E&-Kc@F@R*2l9;sXJYT8Mlg05ZqM9te?F zNirS{A@b73e%OS_-?>1D92u_=`QkFZQw2WcH!dC`C-9~ad2}*Ed(|8(+NIQuKOt!8CVt_sRR1aWWM28MU#&&TrTU@MZ7m6|6RCzV=%t7 zaQSgmmPV+BKT)8j5l(ivyn-;UhR2l+Z}D*Xaa11A4}31uIRKNFgHygaemOl_6lQos z%*ut!|8xbk#i?*PYbRKWr^4kyR_=*;*oDjAVIIMGeUCula@&t+Ve&3QotQOWvMtKp zF|2wHtgEgX5iRdHrIG13$F0}K7&Gz}CMQ~cri+&QkPLzGYB{y$ z60q@}2Khf*XD-26L>uoi+sJQ7v>nw>BeOkeqWiH?v2bTQBUJ=kt-!C>kj9q*%!okke^fO8Y`Wj>lBTZ&d+l7CpZREphsiqUR^x*4zlXH|kF- z*3D$+9LUb&6LJT#bM>7xt!s}o^E2DdVd3-hW#+F^`22#!&HVGT3x>@6KMozzhr{P{ zb}}BPnXeDRDPYcr;PjJZEZQz-C(L9yVhhj?taIkx%x6f|u;gO1GdFzx5bS;#6+Zv^qa}Q<@J*`l z4dHWzZBFtI@{7YI#LufjBV#QmVF!8H;qk@K>$R2|Kfi+UpXB)YA1>8kJ{3Pd6+gF- zIUB$qaXZLAwLttF3s&)SPVYPd;^!L_CXof>;^r1W$L961b1#x@SNTH}Jbw%#ir_gt zTlD-fp#>Ed-BiA$YX6tQ=Yz1ten^YP&zDqfAV5L@{Su+?t zoIU2J0_Xw0=R605R>;a$=(~5qR`$a#fc~EU8v%48=L(?P-og5k=}PV~N9Zd_J$uYA z4w5SZJ`H?vXaV%PygyUVoL2B5bUh%1PN9b;hAs=&#n3NC3%D5i#i5KY%_a?_p?j z&A`^0kvq;!U5t#Op9Si4BuQIq%563M7`p8%x9Is@wz-BFx(=3}tAnL!WgIGk?2=+w6sT&)=@)cGC;<^Ze~;oZ_g0Kjvxp zdQR*3TJGk&W93$KohnyAef_9_`so%>KgYJBpT5Xe^mF*pAJ$DQcChF(N$b6047d4HQZ10ASW7(>MS!J`5riY*+v)<=Rz29hM|5g#X+iT#x7l4@o0kf2!GQ|cf+Cp&~fBwVq>&tGB0`74sfaAn1HSh8$?LMJJ# z6+2{R!i?TIrC)XyR+&mpR%gm;mA=aIFe={`OTbD^S46g&q;u}!e#RAc|32xF)qxXZ zLP8$9q>Ewq0j2ijTr=4V9ojngXTf(wT^0aAybe4^PvRfiQNEL8wg`)i#oO8GXY85* z{WQz5B%ksGl?G?|mU#Do5;H!Zqs8H*rGJwjMw?0`0T8Trp-3%Ap%3(hEH`JWvTNHvCoT^kZD=p#MNi^*-i`XvE zqjg*Lcm0W_&>H^xUyP!CEe+~GnzF}qbYp^`*7v@8YPexL-X#_ z-+)J#JJU~_vS)zaPC)tPuq7Mlv2HvM>qcVTXfEqIvKI$C z!cnTI#8{V(Ag+~RT{6DFx|7Db6BX;a}V-$n0sVkd)X}ck(0=h z9|7{;HeTzVzmzmj*sR?W5Lw3V7f9a zxB^=8;Wmtl-5wh4_gg2C)qV?Bdx^2y_;Oio@Ozeh!`0bSru~#3m~7ak_JgO7NBbFd z)(uy$2F!3JJr3G0h1FP=fYtE9FkGGXvu5~k; zVUxAZrW;f}+f6Z9%_KGGnlxt?DT=2pkE#h1kw8l6|7_pil8sB{Gr~%rAma$N9q?Nx zOj!$9$!}S(BOrIG?O_eM7>Mj7qK0y0G8Ao8AnQ4n!JQQMxYaBkVX^bWYyFT*UO&wd zZgsg6%z}aXdMgV~cCFOw<+a-*@Q}FLT5EBxwiarftF46^=W1U}Bya^??Un6pnXdNl zoJ5KBJMhCPSG#YspOC9P?p$p=Zn@f%!>%^ORCl$xm9;(wFJ=j}Y^J-vF*`o>H)3nyX#sS8Wog_*MG^bn`HDwI3-% ztJv|ObG85AB(mfmz>=q2?Y=fWAy-?pJBJ@@uJ$N?d>Fdg5659t?Do*O+JAHsS?!Nt zwNtM42#0kUuD0yXChYadbG08T$QN<7zgb(sCe?vl?TrB$wDe;iY164^W?Znn|_I5%541)Q6$oC40x-bkon1>NkG?QEHD_Me{{G5AoKd&kUd_cvz4r~Zaieh{Yu79Y>F@Xcu;Uh(Pf-?0H+`wcckmyw+-QN|-Yt)jDgT9DgDB|cW@o@|KL ziP{7Dbr1L`^8s?8xbFG%JiRcD?9I>~Lo@ZXIk?9@2JWTo{DyDc1sU7RZPIPS^94<} z0i91JR`aj#KiVc`?bSBiEkXb~m}OtkRF}Rl>ggPUeOoOQ8l?X03;;9XauL~Qxl1Af z(^=yJPK|z}`pCBEax+jCcD6wK#WfzAD{Czeb`?s;#-7!XJW_rKI0N)sqjSo3f7Ts# z;PZ-XlNai9hZbiM(?WEJZ#)*EeScB=(pl1fIa_d}^Jh5$ry1`u;|!1~?=lW@x^?Zl zhZ?iKCc>DzIuAGafm=>mg#SN&S`?sNe9Rq*7tFv+w4sjF0 z)fweA`@Q*m7PuU*cIJ}`?$ZfpV0jeHMNOvoOgbM*DLG3wa&FsMNkww$lV#^4rhP~>Awe7qBW zg^Fn}&9&u8lQ(nFD9nx#jOo*yI`tp2Hy_Y-PAYG2&Ci`cL2%6%IXFbHI%~5Rt3|7; z*_Fk9ovh7XtnyDyI<+hNR!pQ(D{&sYE`txg-QI&JV}Nn}^nfHtzQH)-@S>FDEJCn&U)do+3IjLD>tMK3$ph8Sx<=-zs)6957uPUJXxF`|%Y^Jk7~ zCjg|*bSh3CHWZ|M2UkB~cBX!$v~pQiVp5hfoRXGsLKCZNY!mxVbjT-0O$<2wn35UP zk66tpw~T-p2LnjK8aIKfzfmSDMTS z347!2JW>W8&eCxr{uE#Nd{F!;f3GY)_j$g_tZz#VJu*(qVB51G!n3kWc0+)YA_FQA zaq_8X?JqtZO|J@r?DXs`xZ>#|;&|<7fJ=eb~=ZytB)f)PWXQ&ll z5mmQfMNmI*-jXe_vODbjni&89uj!%b`UjZ1&Pq~IF4Od0+Z38&5F+1gdXf4}Zr*Wr z8v3J+nW7!JV5DJ(F9Q*eF}nJO>hv+|T2lf#ViwFe3o|z3glrMk z>AA5CpyAGRZmu29{tG;mtA4`D{)*Vf3^*aYT7sib(%ynDi|u>jIu3_mjxB?-P@Kmy zz4DfhL}E;5tzE^x+V{lOGW4x}dT&!)h|N@1ersI{lfAUxR8laP1_hJGwa$QPuSUad4rX*%|pFO_rBem5({%PnKfj`O*k?X1$&cZ zim#z}AXC|KEzD!b0Qy9F*6}wfFS?>z#-x*K%6f~8#CeJQg{x7zx(&%86G{^9qi2oy;GlB5;sZFfDDeH0R@M2YL6dB zdV$&zE(aY_lNsJ2#gu|rM{s}XOstA$-m;K$*?_9SadcYVn2a04g+@+dTrlM^nYbGGZ+%}cz}G|Nmr6sv0S=W2 z)XIe0pmT`nkQ@kg1^K8wYf5t}l=|<`K%`M4<5AoJuA2Vas{U$3zrj3B7h2#1WD0lz{b(+BwYaemM$C zai~O8+>>rGPH1W7jc`!*ys7Ajaf`=7yi5+_J4)BlcjSmj6?{0|f(Y_b$({S)tE0RY zOvo|)Xfk{J*!1fG6RV$o@{eZse}$U8H2nul0>A+gs8(a_^G0Hy$Yl&diAYf6a*{}dB&h-in2-hMjzY)*;=Y|~qM7OHTjxX4m`TnOq?|Qc zwukc~xaUe~PeT?qlt=VXNa>N_rRi&pTz#DT%bEBWfNw;tzi(6mvcOw}#fZ0otW)&2bDjRx zC}6BI{!DK-OIhRnI{SLOw|06A$c~}Xj&U78@J#7!@>rs_ZUQktEGSWeeSa;Z=Q-vN zG@{^Y-{uhsVDm7^W?or{#3>cQODK$`<{$8z)Q&E8{U_bgkdw6-Uj-T~Q(P3%&Cq|wuc}dSiCEJ^4 z8eM=@Daj(*l0q=*6kQhaZWugbJqy=AVARCXx}OgzNw21mLtMXVJ&dwtNo>cmut1cw z7-+V5d9V9oVdAmVW|NsVl49#VUr#rTdMZ;647z~}XxysTSl~vq%&@AJJTuyTyvK&f zIurwxv@(4vXc$z3B?vh=%&+E5;j|nAaMy4WSqXKGhPBl^v)on7QQtP!d6J?zLue-~ z&YLctx<5}uy(#%b82h+#jouw@3W zp5r&_$EaUokC?YrFr^*jYB?+#`btnVgL4tFHVrI6F`G5bOOYwrm?7pQZRgOT;EhBa z^GR>TY>^?24j)iA6p-r!FC1TGRP26VUtXqCPll(t$!V7~XIUR}6Ek39z0k4F$;Pa0 z)6~Y~LD#g!n}mUJ_CtNpl}|8*((v{TrpHd>jz@O8ieJ9sMF2tz-9#RO;&EE;L6T1Q z&fsS~t3Lc}nC_j%&&FvytU%v+I-NK`#9#LPlz(D~0dUBN=>%`i+$(H{akmG-s`#cQ zFU+ysJ9k`9bWTV_VynbHUx|5J1^R_(MJybaZ9Xj%l<;HDWn$}0J{D$AP3dvf$cQy` z52&~ig(GE%U!hTeYaI4n6@=A_^Y+hJZnEO8>0Zne({f1>?-d2+^1V`(@j_X2P*$f} zft)#d#5^=NR85Ssw;6444Mh=F)G!SbvGoG+4R#>#k)qcTmxy~|3_?rT!^OY?zL5~& z?x|CBmZjbrg2|p6FgV4OGc{vFX26U(tsvs9_Z@AiRx4}@3OgslFZh`dcQV~RSQJ_S zU9sQOG!YmPCc)GuX;&ajuCU;R8N5cDTal0zlC+e(AR&+i-XRR~z0Km{t;sYaYf#!5CN{~G|Y*- zCq&+&RJg@Z9(k0{g7RkfKqjjmBt)he9O5Ha-MwNl$4{OFs9+ zG#Vw~g@BR$eSv7Z7$`6EN@B4%`lX=w%oim+i?4lAYc^3@e4KkdyV5^m8E3c{y?)|_ zlEaEfqa;VkVGQ^6GVw>qVXeaBuK>pzbt^Q13l*^6KX z?ikWloeW4<$0=IEb=uHKhh;)=D)yTYEr<#%Bqf&fyyqn&90P5@c_wKWl8i8`lZ+x| zI3v!PDo|KSMr{xnAsJO_P%@STj|FSw>t9C_bdhYtfeu8vBzlx&B!)FdGA;zxd=QC> z=(H{wYcSb!0|wuWau8PJAQEkoTe5-(O7xPEay)gC(OpBmrtO?$6pN{v7mixF)a;m+ znnyTl;l31(Nnbd6xPhoI6(hL_CNsr4&;ri)fC8%CF#^UQ3|Fzfk9t{0uX;fuYjbF^9)KhZ(#{gP;kMH zX@78@-L6C)gH*YG;IM3=gsTR+nO(4jKop5qG9V9_m=UN7N>p)CTC!;#lwCkvLWD3^ zV#l{#8@^C9cM=w98H5kDOsLQ3O4M>y;P=^;S6FYa8+@BZ_r2<}NS;-AnL?^{ciVYz z=Jd(Ijwz!bE#|MA?q20^c|n@KzG~80+|28}R!pV4Y5GRF&rzr^(Gu^4EUd|x4BlL^ z*Dq8q?_^8+$j#c6G$m#3YDQmo(PNp^M#4HFz(7H>jQg|EZpI$;t(e?6#-=z_RKEMruT;Kr{9NE2FT1U3TFEkL2 z(0!Wzkrj`PBa1imB%&zjGD$;YAv|Y8)F_Z^7XMX$3&elZKesl0fOe?O!SE%{wfM7a z7&c#^VIR1Bm7Ahj&9nAl8WPrO=)d+nP0rM8%;aF<=mQ7%i-fpC1pplcECtB7jGEWUID>NAlGg!J2G!tz?v~c7-J7S8a*rFNEvL zc~b z>u)j98HJG}iw<{1Y`CVHhprj(%)|K5Jop8r$Rg7sPtcIKW^I#&wV{dB>`Pm_)k&g2 zaF1VSD%-Hgv?v5xk!xZ`7pyHE(#CKrLQrJJy|TT-kMFFrujd{0GZY;ZIEbU85=Wuu zwD&vi6|EanDdJ^ng7sSoZMqcuLPm-qvyA5qCf@Xz0yn^bahU{=5GWoD_7@jSuL|Vj zmJKM*Ye>ORu+@|F#Ri1mL{J05SuhHJXqmBuMA`y9FIE5&+#W$U?cGihyiu9y2odFN`;H&pQ+Jq!~7>eSr;ekwQPlp+c4BoVK*jSNlH@ zIP6|^vegh}^*gq*Y;wh&E_IxZ)G_+DC?M;BsNPlaVCy20j1}I2)(1dTFMt6RY6c)_ z-3yr**-M8RNTdpI6s^vu!|7FtgG3YT-(|ITY5ISRq){=5Y=8$&b(u$a4%*w#XxGZL z3%!g}^OSK`g>^Lwr3gKfz5$d}XCqkXXX`9f(&IcV1VVxAli-z47XaianmzwyZKxbq`38Hq1AxCJYKYbyHd1KJX zBU}E^bu-6eVux-KUh6ouh_n)4wOTglsJ)`xIq%ojI;=xg)?Zh9FUjcy_ghWu2_YNl=X`I5(<_R<@{zMeGp)|yCBSX$2yvZMP#9I_YqexzAG+b;!5 z!KL=ZQP7=R`VGIg_wjCTFY^U5t&H|}vWF?sim0{hrGj>7TZbJOvoU8Uu;8x&Mwc>& zX4#0O$^OL(n6euaUh1j)KItMOf9uZA>^djM()1N#KB+NmYOADe#r;_?Y_Eh96~v$t z$<%1G`-2XVAYo)ra+9d5;2IR~vi#a&nt$ST{fDry|d=2U@otO^xWk~Gy!b+K-ySa%2xalfFP|1-zq5Ss$SW|+#H zc6*e}oc1mrIlem=d9L;QL4i-WmH*+kI^<35D`5|1)-*SeUt3*< zS8QD&w~a9@


Y-VMj7qS9Z@@qE;HQxi8?8V#Dfypv6q)5oWkHGN%Xg9#T>aikDh z0;&6wQuOjY&8%BC(aE~5_84y1q};$sO}=dbu^rFQkD=*|T8uggNP6;hq%%OB4hVdI^=2-o^^1a4EfX{l zlkuvjzsD9=?l0bkN!=(-YL05q;oD94$b$BE)FwqW5bOi?5Jt5mnrK%qdb#J4zg35UeL#5_$xPi4mlLwUk}5!lY? zKp4%^hVz7R3Nh}`#t6i)=SdX9Pf0O+^6p_vG17Z|ijnPm(kSK>VsJJ3tR(O1OQuv6 zoRA7}K9lA9D1Ed`O1~K!fzy+e(RMGL{n6I_(rvr6DkUGwf@{zqD&DkCJ$Qj$LJ**# z(Yt7si^Fx@ZzkP0M!9({X3Z9NnV*XLw^5;PHi$Y;N1fZDLQ{cK7$O3YV)_54oJ4a@Ii$J%mJ1~ zga&5}MI+Im`W_7g8`w}=B-?p|+i+db7Tmdg(&f<{ zoF$$0lAqxYl0i?lHezkLl@VdgY-^3LYKPE|)@I!fbj3CTQ;*b_>N=#Uqm7|;K~IHv zbC#0Fd}z5n7ZCFRwsQH-EL+)#GRx9BR{?+j_(17yAXrC9MmVfiVcQjIzzT z^;&H>5TRGwoo&07{3$XuAW`6XLx2Z!NuX2;K1|C3 zTs=%%Emg#2)pYiQT0rB&M~t ziaIH|*s%;g&su~%4hn-| zTPhV*VODABm8CtEZ1Fuwoa%;RmTa+ij~eh4<`AAZYkI5)!KXbu2#u(@D{C;p7HQUq zsHzd!2eLGxri}=NYeI;=+;CJGvi6R!>LD*By#0h>a!(YExqzcY-k(T#64~W zN9)H8v4ZN=S-}omY5@pauROI3G|4X8jg0d#0RWjxGr)ejN$&i9Iu=RBx#Ng6-Zc2J z^9!6^u})XH6Upqqiwo}_HNoa;hUJ7Ypj&cr{ z$GqV^4wmC#KHCZpnvtP>6Vx0>%@1>juFzgcVz`#;M(fR|EH45w4!JVf6 z{(PjOK9)NmQ2+qmv<(*mW(04}R=jC#N@BpC?0=Szr7`E^Y1e@a4DZn#%04&X0tdB+D4@@Vw5NAGX9fM=dH!40DyCt^%!I3Ck*+hA02GEF4ynsjl5 zs;8OpCw%BVnmQjgj1S9y;kYc;*@})QS@4Q9l<(?Le7Jqis#M?6tOvjlE6 z0oWHn2teb#DFYr5Av=fpDI0+e&p%@SvKN=DHKeI*wH4thzl#e%zPVRo-U~5d#JA1m zg2?x5CBZLpwLoSc>ymN`LJVWwiHZvAHMT0HpOj;(SN?0#Pr-@U*v{deGw*kc?c@{n zqjdm6crIb_1;eU%+@N1#%Z``_fK>BKoYhqMB}wI%ASC*JNmThI8_k)i%E!Ju?$5V@ za9a+0X#0Ktx0n5r73u$H@7;qfyYBkVeV+H+d(Q29Zok!PsrT7xSuI&MV#;NxlneK< zEz#nYN=z!5Dw3g!;-79gL9*lu6`2-bf@{V++-f^8!wiBVV;3_Jqd1rvNGxI|gyLmF z3}FT*PGW<2WKd>!n5ik4&-eRVYwvx|J@@v#t(Gj4+b#7z`?dCZ{MPUNSP;Zs>H)`x z@%mc!_zC^3-GFvPq)T9Uz|-`b`|s|co^O67xe@Grp!NBQdpu9OcUL`=gQ9R~kC3px zk!_o=I7kc87|Hu(hP3maD@cnE@4j?lDKNm55tVuY0pN26X@LoL@9wUU_AU$C$#VP? z(aeSJS45f=`{zZlxNz7EC5jqC&I0duph%JjmPA!csbYKJMJ)azEJ?+SGy~hYoAq`) z{?4}4e=9oD$jqrX=D|{LpsIWH#;?}iD82Dd*={3l>q7SpwXX)sme%hFTEAZ>9~V;G z;;sq%gKF&uasy1<{Imb6n1Ac97V}>ux!kW3qQoQN(eOilNo+WuW9w90 zHu?bFXmY_IV#0GMuK;2=+*CE3{#{tPzo!8K7G_Tg&r3nHiX`nZOeM9FP=b-Un#iqa z!v9@yiL>s!L)s~R^z;Lk2@@=2TyhNDqlx1juJ>_VUB9&IzkS|$`}9fL#GVBGou3oz z5Wgog5QD#&*JLq9Pth&M4{fRsJsU!M7wK`=UFoK-h&!h%-NmlZ|A?({S9)QQQde&D z+Bpnud>Ss245qT74XouFxHAln4t*)D6`}iLKfSYzrIE&EIQ_w+*qSQjnz*zU5_n-#JqY)IVjYrq9K+J< zlh6irr9uKxG=tPQ{Nkpg7*@Pv4N|<5HAqYqUB1E!*7_EUn>#c}42^JAb~$2TOMxW7 zAJ0(oOdrdqt7ck#{vT=C6{w^!%4ipdkJKLV&@`TUjg4+?ByLYdy?1@-xOs9 zEN(?@^nunV;dM;VNFU6bb~e|osUohI7h0Ms^1^9q*;kSrLQ}QIenO@dhpvZ_g|zOQ zr59l&O%)0tJx(xy0U8$>X-U{AqGbwH~+iGE za#tk4abf{{RU0B6Qi4SrRmjiIO0C|kTkRF%o`i4ZSk;*1%_D`FTBnb|jFez%-xz^Q z0v?E)y&dzyqNLEmk`B(Ox?a`Z^fP@?_nNH;ZquBYt@4Z{ptfMX0MsJi;aasCq@`RnBc`_&l&=Y*o!8qC4fHcP zEr?d2kM!F(JxTkz4)qtD8hFu1D6kp877PQ}+Z=%CqhRq2#K3I>#M*OhAjW};uX&UJ z6cl0lkGlpsc7q~@f#s8iWm3cQU>lwYhR;B}Wk7BPznX}9|Unl#OX}-qmdmF z=G`&Wvh^*rGwD@662YqaT3U4Uk#M@I<^c=Whv0~ltJV!_%Ek#OeFit=l!l0VGa~iN zxZiK?JGZ~IfB-LxOMgJ=mnz(Ry>TzAQ3Que%3^>_aiMz&*U_~{BH=4HpJf9O4kJL# zsZpM-rsdYx=qmG?sZt>M>>pkEn^`aWTMvso(%j>XzjQk-P#1Eq6?7n-cZ{4vp-|+8 zk{si0-MYKRU7(AO^MLq|=3cTcc-hsxSr-gifGoN^1hNPb97#pC0e#9!N`r|EG+}vZ z-sXzmmMkcAMJsseC0O+EcD6*BWcf`y7CkvtI_E22qZ{d6c|}SMQqVAH+rblWs8q~C zu*?>GOY2dQTPOrmqTMAX4o@#l0E7f2IO~YbiN7UHoK9NRZjXJ7@1*+4Ofy*h0^=Z} z|CKX}E`b`QU`Hl&;r?IE_wneD_cN0e@4q$Q@8tWM%%=UX&iDBW)o^g$EC`cJNKy$x z8YCG$<@-mHGPkD8Gdq!_M#+DBAW7%+B$;2`2a<$x^AYNI*k`9ff(n=iOt{A? zF}J?oMv^5cQJB#NBR9bnnTY`n>4h3Vu6pPpAiuk8fer2we!BY>h(uTW-vWMK%!#)^ z>uq^HY6GqBcMHV3+HcBBYkmtVk7s+DnrFcw!oVQ^JX_CJ+vQZ49$_!_4`bSFP`>pZ>|DJqbH393N zDkpsA1Q$62S#Mo83DAkYgS>I7!TKj_tiS1xjT|Da2;_G~}0NSQ?!1uUAlyiRek)e@H`nagNgKsUDnOV^&SF zu0eFR%j4IoBTv)Hb{@E&WO(|(^!l~G3EZ#ozt=u2yslQHE(WjvFxYaSJb3aQDK9Gz zo|9yQ`DEkkqPRf0C$S*%;Ax< z{n$`H#J1G^*x1pJ4Jl@Fe!C;U<<@Ky+7?81vP3!|9OdTHHCPv6+aHvLyE{=(veGe0 z$C;9jqX@IO$2=;JAUvJAgQ`q~AmX=hh5=mAUxY23HGqdh#dxK{*^ZopSWv(GF(y1^ zE>!9!csOHzW!1|isXC#r3Kz2WN=nbkO0qU7qoI2;&`LtemRAz?ku{SqgC|ZjXl4jT zjRJ`E(j215nD-v%^xUIJrE~KOlHhe8P$wh#w-86d6`_)9OcUyck`<kwAFs1Ki(wQ~B->fXH~L9y_d34eismF-Nn)p6ap!ZDUSXYB83OMZ}n+P}#N)0Y^*a zOm`xfoO$6T=vTJw)SXMV9e1v_?X2wFqHU)?{xL+@q6pj0uJ#PUtcs6yH{0J>+DDv20g*r3DS zMeD$%Hk43Gjl}1YEr*Tu(>%?aEJhatO&0@=PRo(-0pYH!5!S$XZANeg?XA;ZqLr{^ z=o}K}5ui(53+9#$2J4H64TKeanUxN+by;8NTx#6vbG9A^i|+Ir^YGU4DQ}* zD?B2_|NTXwH7qAY4NBc_^pl>k367kAh>Kwbd^jCvWgK`?LOS0D{9sF`4+%75`5{_{|&r!h*-^EWB{5X^Q4?A69X>3UM8Wg0uw5b8c@Cw+uFD!me z>XQ4I!{W=RMS4ul+{S@M&v4-0?KHufz1n~@JI{fO_jACe^coIm;P2*uP3g6~z>}{k zkE@k0D31us-{a+(JplekkH6l%7=J~2#E}xuvo7V@=2xOm#zZ0JNS(#~@e=Hr9Q|9F z?Fb(|@tE#lkOP9&2IUDcb!&hP1@-_RRNgjb$;86odK6|t^(Ea97?XBqca-<3`BOF9 zDo;}TKT5?sDlh2n$?}{IRQAcbV19f^ODGx96ke{raBg+W7gi&TkBd6# zDfBC;l=)Gsl&jj)o(fu*9;Kl>v(}{qxzMdv8pWlqq#lfUD$N(%vDL=gD2Gvuvcn!h zg)q@!Ql7S@Td3&{`obG!hbJakY2dSIK8u^Ry}_2UBZ-NQ_L69t$bW~XrJ%V&40X?B;GJ2rGVvSf3FPIHxt$~x7S*2dGgY$WCG1Ab0* zd}CwM%ur2WHH86^6o#~)cO}5Cgj+~_HYQ6E!i#{fPx)!$oecPfLV7ZkFiU=e$D9_7 z;X~SGz8_)WXU&Hpgzot6e%_=+Xc~#bjeDtksXsQ!m+NoCJ$hRORSSl@!7NjYu35E> zD;PdD=3cc8()guSYmXtVT4d-JBb?W-9EznsV_SDwc}4|Pca>kjROr{t^`P~uEbmI! zZs%$_{V33Umhq$F28qsK)n^+$R*@dhny{Sj^&d6O0K&=`Gcm^|P=HdgTsooaE{~A>{0{VQ_}D zyI>~tVdY2zKjk?I`2=-NE%&$xwy6rwYA+<|iT>v^ImZaF<;9=)0_%%VuAx@kC~tdB zQ2>ksmkkj5?D1u=&!#X%qt-*cBV`a06?9!{Jr`$L*M3J^2HNYj)q47nZprcyiZqD? zoFo^fb*owUtP~+{HEFVp9x_Q+xd(=AB@^I{4mSa&Vq8CeGO*LG>of0|K% zCZp`N^3{y7a#+uK{StB%m6P+&pln})zNI$E{1+TQit^^qBY zCF&zn=ENCH+mN5^h*xoy@eid$c@5@k6G4qZP=6qv2fS8NW;%p3x#67iM5XcLLN zV3T1Y_)Omt0@`LZKUDPp^vTKp*``9E1Am#VgHAZgMEK$;?a2 zc+zKLq|@Mi4IqVoctr)jYN@rN?Mq%!D?nGTsEi|6I~G?oI<1eUAYGs?f1F9nKfRpo z2I}xEEsHte0S7o>iCJ*K2>P?atrqI;jiRzN4z;v8Dl09pk&@_WCAC4p<6^HXDPyWm zS!khARU-zka(#A%L9N#L`fbZ82YmZ<>urRn1HL_Jy)Bo{gY}$oi(A-As-9xjLDb3< zz=XsE$U$|Lx=<4k?~ccR_zxuYmm&3UBlSOLso&y0H8$9FtRjM2Le|TIGhCjePzlbP z7D2hN!lQ358F3r=sM^13of0$fN3fd)VEG!KQt{T%qTM8Dx5UjD zft*zg^C3jbYstkxdrQh!Hh%pXz`*h|{%w+_!xCa?9f4f)gzSNFH+_g}E2au#Mj)u2 z8iwXWNY(X+Se#q_A)~T&2i&$$6l7c|N)DBXyP1qPNFP4aV6vh8oB9_-Cs7muc_IwZ z`e9Timh4e>++AS?8ZN33P6H9C8GbY>gxV<)_(Fwns=TXKA*`dHWc-{bAG)Qkq#lfU zDiPgvwZSmXOGd?OR|j6wVZFS~WPZqmRP=>6pqwztS>Ey4>3kM9PvujS(Zs~BR3Qvi z3!|k%5O2qXAbh)c64Ozu5L&aYXP9oJsFn(W>5&Qn*`5}6RUs_2asw5@NKqDT-NB6Z zrE!w(0G4R0w9}|TS`&UT-`J@;=q%_CIxtvbv4D13L|~O?D3iSg!!_1~+u%7bkm_Vi zoHFkcfHe8WOITlOnA`|IRnRe zG91upd%rk8Rv(;-80~SJOby(5bzMAx{M9qMS2rbzuled8=w7f+oDnbxkb1gEYnmo* zv}58HD5aTiQ_A)%CE2Te$&|90xQ#S%`=yj=we~-8j?`(Wt;Dkhhv~hiO>29@X_G1i z$exsU>hVkkYgvoUj@Em2J4#eRhU6`u^ZRx|RFQc8&6?%yWR`bto_{LF_b&qDzx^T@ zf4@s9nsiwLGw)bL40}BHu+_M(B_mKwPYf zF9#h-{1ZM#pMoX^{JvJPO)z7FbDpRQUWARpI~>;{0-Og^C&*B_H56 zBFqvm%&ksUM8B0vmGk5nA^BUq#76=ef9|}#ybxK%N-RM z<|#=CeK|C>9MgKtT{yFek&Cxu*44=4;xDm<7EF{6xOVz_u)xfGH>Sse;OL5^ANtdq z70eE^l4eH@&SH}2hpHE7c0^d(vqOG5xovd2b`XpD6iqy0UjdXha#I>ex<%=9`eDu& zUw{s_D@AD4oj(-`j#$8$bG|HlK7*h?^R>s7^hqP4D@v?pjoA1{?RBHNA~=6EX|vRG z7Ls-E%GaRB!tsjKo%#{-Rlye@(B&37<%6_X zJb#dPc>@~E4tuHqyvP6UyS3MDN64mE^b*?42fG*9AS{FA-?aN0J30hWeWEuaPy^Bw zcdWKeb_>BcDp8?Nww9h8&DN1wBE%2QJub6+DHsb&>;yTovd=jU{OdHP&fV zOx!yg{jtrE?DcFTI1@`+BnO6B3vnx(F=yj)%6zDocc_=+?nQcrm!K9^G7-jV>~g`M zpsqJprnLo~h=Jb->B(Z#R&YyJ3gTmh`mL6(N24KBn{W3-*vU7zX0&BRDx)dg3LWA@G~G8#04b($pJlK$Q1c zK=RqKd=@vi^63ugsnr?|RBDZni(ci%`DvWEAaaRpATKHRnFW*N;IECrnrH!9OOmd{ zgWe7yx!A4>LK%}XAmqwO&cz}NkJ{=C-}xZ?WDL12OrTU!Cs#4xX{R$&Qttq)H80%a zBZJkdoVzJvCj*93?xyx7U~$c&OSL+8Q)0laORClU%}1r?4+E?PzgS`LWd>O<$sTQF zHGi~`)%>a&9W0~x;o!8Ta5>GH_J}xh-BIge1qIbnl{YC|g!2F=Il+k;ZzfI7bv7*v z7}#dZlh|6>o0>#RF-W>}td#(3j|tGSzd|Qb-h`$z8C}+_IGmbfZ!GMy+ZNby&RLJX z!P59mXxb<)&9q!iHVLIAd;WKH?T~0pn{` z*VYw-kF!#Guh`|iG}4-%U5PUq;x=)n*m63RX(}McFd>^)qgR&tLwluFd>mO<%f6{O zNny<4sfjD_uokyj!pjTE$h5jIv{90Bt=o<@qWvO~m8%tFYLAUT8`c04pOpPFM zTR@%D*0HOR<=|$-NS*R#g_?NEleJN?<7`8*ICP#!Po16i20+<7n87I4VdT&-^Eu9i z(BOUaN*jDwYkgb8;@}FP@d}MYcSf^b+5ke~vAN{UCJHMo%|;d>ATYyv4r(`N-b9{m z)tU54e)INna7n%mT8Xp4;+$Q<;z-|i0~Tihi*uwrQ!9w^rK4Ld7H6p|sRv`8%A=q! zVsUO46~d862VT;F?0z+ilal^H0CEln#_O}%Jth>yM|Nj%n$}YCMx+LF4^2kFRV)r` zh;V1(*=tO?C#NqFuaUobgnYO!UD-_+6ZhOYePjxm{apK+W13X z#d$5Tlh%sywKl$(A^6f6a;jle-3TVJJzaawpv`iKFYYj`V{~wj z(Z5n>uvRUfv~!gqh<~73;6)re!l`2saTY1f$UiqxJy{b~I3DH!5v~^8@o`g&jo=R1 z;t?i43GQ%K78AvfruBe9(b}_%_2h7dxeY`vFbSnDmn66+wSJwOXB2|_Xi0Fla(36; zJW~I*1@{D(W(7Zw(g0UM6^E>u- z2c5b-R2K_0Mmse%Bg~uL#^XP?gSi$uMS`8(>C{qJ>NaYaW0ZFDMWQ#d1_#T8nF!Sx z6DsXsBYZPJsQ+plD2!O!H6@F;5Tse-gclNChYY9(Qf_EEgaPN_>I$UiQAJvn%C;l3 z=(MSO$#&GfTAlU_7hJR@@k$bNv@5&O4bY>Y|k9(lNU8}#^=D0 zdl|7e^lFb$Yva5^XRel4GwzU!tWXH-tpehZR|m6`3-T)G3|EMu50K9bSX8ZqGM}{@J|?r z4+EOUOogT5t(J*7;>;yvCF>8igP3nuApBy{D@ppTM9lfo5c9eRa261A*##E0%`KsG zsVk}PW7$u`6&NBN#N19Eu!SP#Qk8NTl&4H>3uY;0YzK`q$lccX(&Si3+oO%bZFo6CNDD-*T@Fyy6kBqau)DxM=y+?@YGBefyJ4^S>p_a^Ql#zw9ci9r0 zvuEGKH0b%ydG_pE&=KtW&-dlrAO{yIZtcr}MPCjGVVuSpqKhoEkp96A2zvD}MQs+u z!3UtS!xXi~FWw@KbAL_JEiQ8*?PO5-j)Zhgdxdry$p*c_kd=F!lu>Ic>E6+v#Gvh``P)2Vn0iyTDhNL za_L(t+dFLbD+nNOe_XYbYh7zU!v!l7DneU&jP1I2Ce+-;&-ggO#Q)KZ7S z)|pV%#ZYiQj6^v+KqgcTw8?~uy9+G~uh`e0R0!`7L;(%j#B-d96*%Qgm*kSa<^8BL zp`wy$_v0nWgvu^hPVpE8@Gf+}w(4kb60`#Z7EWLO6py#QUs(Y`_yowOQ9$fJ#p7>3 z1JAg37CF)}0ZQGAjS+oE7CHQ+1Z}-+M8{0EODSedyLz%+iuo@>7CDUGvQyj}DdJGj zDu(zli(Ic93o5NN4abG#!Iyc#yhP69-Y#ev6 z*D!$D)uNRLN@tV1U=C~cg$Oyg`>n}B zvScN3Xu@(fxf}^@(JV6CBPhX5VVEdn36s13;2pD*;CE-3p54ij=<(y&SYaw63sjG9 zA>$2UW$~^MZil!5OSB_~m(wvA?EbEcZrb(8T zpFLNSZ*JXL)Zln?z=Lw&r6=-(CwNd!6ly}kXpFcqi{$4p0W>iS>m*}>f8-quah2(KjD1uueRoi zELp48Z-3u(UlgQ|4nRIQX7bSi_F#85b0E1Z6;fm8F~s-*%jcoO z5U48l(91GWxKSSQM!lY9h*&k>_Sy@yQtmn~0_rFv9E77sma(m>i zI~%DSd{EKHoVzah&jf7D3&X+j1*oV^RnA=p)tcwrb!2$&$qwHJ4R(Oy$B#x(U;cOq ziFeStw+g-m$f6qOQtrBw)>bNa-HGx76G-m5J0B*8gmc%GYMR}<0TACXcOB!hk(42Q zp`0arLM)n^*iY^{IX{U}Bws&}j0!sYBbk{@4sPBIAeommcU>OI%G`DC+{WA37*l&6 zFE@arWl=a&J)MA}W$s(1H-y}ZklD4;rDKESN# zS5@AXe$AYkOV{q;>dd+8PRL?SNM*`hr>uh~)fKiRQ>zt~;si zWS856=B}GAy8Tt;F_gC|2lV_RM(z=5QzvXV3<*M%0}l* zXLs`$h|c#??z;9Rd`H%tE3R@ZEP7hDj<}dbX9Bxx*3JZrx$9z&10VVO;vG|0+BAEy zjWCpD&%kIS2erMHK8IHRRs0IS0r?Yr0cQd@d1~m6T8G*QOc_#?z#<)di9DXPq|gA zA@{s}=dN=Dbre_NfgN#Mup+a7Ew&U~X|~fz9LDnYECapJv3&ONKbi zT}RR81LUsz-S3gEA?2<+x_jIr^~yvi^{-8I+Lugp+;4lZjgkl3GSRVTYfW^5VCbX!jxlrt?LxkE9$kRhZ@1$J zflPJO{Y+idTTz#`7aJ*TxmtU%C90!uWG@G#@CTF;L7JzOyY5&BJU;A}yRLEaByC#c zuA@|~x-y+VhX&+0M=-63d9ruFrznjWKZjnxiVLTz z8NxQvn$A+2oIHSwwa)nii@?$nu%JixL`*xH9Hj- zqkStbc1*1m7b^anbO{a`t#jii#YO$q);#TBak1i?H&R?|C=Xs+V=-gma=2>JSX4_I zi?z1K0^f-I*(@4M{RMLY=P{9A=}wJBXF+4pL1R$}X1)1)%0~|JSH$4TjCse{33bLi zxmqLp)bP#@XWc9!i}Mk88}bEx3j2@3$=X`HcE-FqbA5J=PuR6Ope0W%0tT4Y+FCF?VF~0+e_}*iG!vURk_QPwC0Opjo`gj=)|A@h-$$ z?K_K?vj;C3+1gpW6z2kupLj}Tvw){u%;Keh;grQoJn3zux_~FWBl>k`gbJ^SGaV}D z_abN}Xjo(LTERCeYB-);;D?qPR5W^>q>Hc;F%PsJd?Vv!I723;ousSb8-?*(87y>K zmryd_m?&*f`KGm;q-)}!$lN%j!&IsLQc{p9Ntf~pFB$J(Om@yOeGWs|K%A1NcE^;b z>(Lxf?WmHp(d4>NGs@YvoX#tTBLbf?a_z+(Fg2QZK&0(y-+EchK*~hrw6M-&k;rw* zY}CF4caqY1O+-P+5@sS7{t!%6;tuq&<(O!FR2+VA1ued;#T~Sn{#9*c&1bZcWl#}a z^=8dBjz;s@PUj`nms(E?3j?I~lME`=t(n)wbY5E!<90f)$&N|f$tfIc5-rI$S?Cwl z$Ezmb6+DS`cyz{_ElqHp&g;xVc=Y=04C~RKTZj;X6TV&!k8b6g!adO_cQKt;*8E1& zMsfP^yUsGP?{r>Pt2lcLiKh+G%jvwl7)$(a|3#$pa(lHRSRM?^y*5 z__Ztr=^G2Gwv^7xq6;Pk1v$vFP?63H7a~F8(S>wg_U}PeCjFdLW%v^*W*W{%yAkcC z>@ZBZ(wNeDrSlT6b0T=1$gxLSl)=8zdaadPbU41NMGI_<5d-FQ2 zY+bVULu=}!U5uCE40}v_^hAPb!`=9-PR}JB8EW<{SMTI?n%0tM6T`FuHZ{(OSMfT< z97TwN&LD)nmVy%>k!sZ(*St~LUp8ykU4d!dGf^TSa*ox zTzS1>IHLMFuUASwwpU)Si1W@Hvh}i-JEd-P{uf(lBqwRJh6%TQ3AH^6O~Z(`7wc@w zz|{pl!kc)BGU%g8hXEEq^OIMsOrOi^&|~7^MOL*TR4;5M3}7Qcuq?s=%Xz(Qm*qj z=H8&=nwPzjc1h(8H83GrOxmS8YJH`EDrDWvl!W@1GHI8YUb4-(mp75L>yw3}xeICag~8rL_HK%%|aeF-4ePrqmEyD0Mv9qSVDQrG`Uj zW#pnEk!YINVQrU;Ts3WmP7&din~Z4g+P%YcF3AsxQfJ{{XKJa#j9f{)3YqHV%E)zE zQt6~TZSwH>oXD(pMm{c?Dx6f=HsIX0OjYB9EKYp@b4$_bsFqkUeOhtrKT|Om9C45A zgbSGuqw)BeZ`QLZd)H?pX_jL8y82G1>_(7FMAm)>0Xt<4z`5mL@_UQ4v)x{xwOXPA9g2IY>LNT>Q3gM+sOJwPY;~+>-RMO zg|chHn|7z~?=tkcs+kd<-Jcaqsv`5|AA6yg|0@4~$@~vqD5l$klzK&G(pU{=46^|LM-PZYt1)H3_|qfxCsBJ*`H5^Viakf#C!>pC zO&Pg+s7nPgxKm4!dZBx~>Inq<_x4cimA!j=c#wHCRrg1#wI|=&OcM?8MmhWdFfn~< zfQ(t{t#a+jFXCUdHqS8RnrGc;lB!@d`KEr|6r)be8hZ=NAHlAw)CFviHe7#c+AdlJ-@yxi*5!g2o-zTl(t>u8!Zmm=xTrti zgcGRv#O@Wi$*HnZ93kN5D8=K(&t9*Ny$4^_q!kIK!@kXWY%QLBXL+2ersM0^zL;w% z62V~#^Z=4GZjX1P880lD;$KqH%g)0@c_`2jL(^yaqEzj%&yhRR{<;We_=K=&#z0qD za!v^uJ6{%WF8K4s-3#OKvl;#FL;y_wsOquo^B#E5Kn4uPF8(>a7S;T&3P`nNjWWB43jkq117UyGiv`mnTshJ$I@+KZ z1QhxZ$f*|?-v{MmVRR$4%EI-g|FJvcOF*-**#X}Bbo)Kt*Q{PQq8VT9#73$6NVBE7 zqfH|9FS8}IB7oPM9lqR$-IYqn{^Kye1D*yn$8-9r9rEm(i{hz|UYp_MZqNtNWwGZm@wW{ySoax7N+<)w`$NEop-|2In@4wRz(84SpEsLkwQGWPq z`xkx8H=lbWHx;uRpWxlHqqmty@*26FYorp2ANkTpuVEXRf%63yYKbSxK5x8*H~I6z zM+f=W8^`Rq{!gaU;^Gfh!+h(b&&)>Y_XyqR4`6v4eI1KFXg|G{pMK*rtb3<*E8qC& zGe3@#^Wb_}>~a$#a=qNhkH4{8`vF`$*1xX*WGOe@Y7Ksi-^6RnGdf)!j(_mSt4`Uu ze(hRCyWjDj{>d|c@-II0C0_?Pb~P95c@S9oMd{1*iy{)FcI4zKruDt=tBUJ>j!Dul z*E;ntSg`TWd9SkI?0aoOCUTKOczve*up&5Q@J!V=aCX`p!WY#~@qTa!GzH={SdLme z!Mvjg@2+479MXMl=k)Z?`qTIJBB9C_h!e4mM}(l}$5qtS_(kch*p$3;ZAslJJbxjL=I7u2)Kf(Vb_isywNYWy1@5h08<-Ltp0zd+Cb7W1 z)oY{o)7mJ{-qp+V{==*TZS&vK8p&d78j?dq{vhwMhJG_RzF^_1!Gn+0FXjg> zw0Jxz3!pk6rGf0zWIYyZo&VCS&Xps5gn};k=zOd`dGYsJeU*+y5g`L0sZtc}d6omt zmZc!$Ue6_SIf<8Qd zqdw?!npNr9da#)n{pn(m7mN!pV#zS?u2`~H-`tX|Z0z~Eu>&sI%GN%3|I4~$EBo;L zjry?5l7Z|0zr^KPyy^&@ios(6lMqt%cSoex@2&g3-(UH;tAB9#}-b zqQvKoz$5wOJq@ujHisS1gkr?HBAuOu8h+bgBVrEMBRjh+lKLf#GyOf0j`X}z@`ffj zAT$exRWTqLzcj(UIrz)zD%2kIX6_aw9jZf5yF+Loz_6MRTwT>6`#$Z~Br;8EQjrfG zH~Bln8kaqJR^<8|Jj6iI{aN-w(oBQFRmMZ1N5Y=N^g(Hzb^h%m|qpH zCB~H!<0MYPG#FWT9&Nf_5)1IZr5k@(-yng4ZhSo5_@nv;u^zhd zTj|Ch*Eb}mLf(d~0c^u?rdf5>z<%WPq7;>g0NLfVJlxe8Yb?HR`n$62Nh}Xo5*gHO zgww(Nn}0ca{U`ZT7(?=kPUwoZ2O&58BGz>4wFcyUhX?#cGSm^GJX%mFxPi&5UZh;@T6 zm68?~nOj$8U9m;_pf2iCiKwN3IXE1>!>X`585#nVUXX=79={ro_m~OBAEoNo6F|gB z=fLlkdH?UU#@mrpD6K;$#>+2V=;(sS%P;U0XNXx-OJF(YG{-R8U<`%t_+Qay`DeU20w<|J{@>M1bIvcDdVriEQ^u!wZS9E z1u+Ng#srOpN9LQnWNgjoM|y7BMp8|$J`NQeSU z)N{ge>xe|&zMVjd>mufwTo!ox`;m~8jXl<8NRf=|P?H^R5$6xGQN!pG-0=JYIuNZE zS{+dAC~8&>*)Uc%;8;w%s2${DtYWu@X%6gnC$`es<1~9I10zchL=PW&l&w_I`>Gg= zKz8*=5!h3g5>g@mqN<#^XP1(Gf<${7MJIc3_R{ zirv2wdsA2WZ3?2K2s~+@V7AL3Hg-G#t?@HZ7*U#M(u9BH>!p5D+p~3aYHV(PRzYY` z+$MU1{wWa{(HlZk*x|$p2EEa#_IJO%p%q8iP@6GR#|G419+u;V+H9y5T_eFT>uPF) z`^G`2jV6)kH~U+<@~cKq@*j=GTJSU$c2LmH(ZX2RCX5B;TZ~1gJI3N@@S2c{7!^1LPoH9u||wr1OoJ2XYY`kN;`bv0nslC2mW=<6N>MvEC|kIoG!j}*6*@owUr*NCa9gv6?LIX{TaN@tgjzE z{pj(SW+qb6@g>dd9C`3@CuZosecpNd^hw&pN+kB~oD9RH!UJB##NNzn+BzV52=GIj z>O*f*pm^_@IdfOKbV{tH1Q)u}UF-_|m%*wVU4iAxUAfU~=ahy*Z}aI1*0jlh&q~fv zXBZqE`chg`XCR312=6RoY5p2R9!|ee$?9$AV43ue4A48*O0gw;Ktp7~c5Pv|mtj!~ zU?g6yKRO=&n$0qZX4robe0$k+WSY7zbwi`8n4qhuHZj|lJ=t{FTiS5t#L5Tjo;RhW z=*Q;I&lL05i9O=#^v3}!;7qiwGkpSR=b{8%a474w#_~WartbhW-Y#j*VD>nWE>?k) zh;e~KTH{qy{?TLRhs32^efy*1D%dnF1%PO0l+t6c8b#fIYwR~h)%5)JMXhOx5o!>A zZDLJ}6Y{1vHg{FDXv5CH@6(4hJLp2j|JWJ@IA=|)Hm?oC%#YQHLUb2ck^8lkt^E-F z+-Yft&7!LSCi(?IMcdLYwkOmlg^+-QHrTfcWs2>4MSgk6|22r&m5Sz61M+a$CU1o7HJ*V>~g>IgO;di2zjx{CK620h&30ZLR1e}|1Ws5%lOS}!04&>8*% zH}w9t(lzNvU2Rh>$i@&kp224;U*#k5s=g+Hfc8*bK*&^-$c7cVz(sPu0;Od~RZ3($ zRjQcU;Ds?GRUPU#_lF8w5dVs`gNdU*awG(A1i-tuGw^n#Z8~8p8cmQBFS?YkrKQm1AJc0Wi>;{;`BRI63|3 z@T2b^@^TpQPpj$>r|qgkoZh0ULl@`Y(!KN;Mqh%t`8&D(=7K-h$OW){{TeZUNBQ@} z`>OHvr|}~lV<11uMb3y5JaU~h1;iTYq&j@csAZ|mu5 zldoJOy6SjIY~<6`mQV4@00}16MF^u~r&BQ@ta2UI_~?VOsauUfb1RDuX~qfNVn|zx zQM{Io!k>EMGvD{au@K;SZf_!+@3@`Tr;FI91!Uuxo2+_3Bq4f>HHY%eHHiSmb9Kp~ zbStn2`cN^TK*OvHvM9i?@Q{L*#Gz`V2W7D?+RvL*3iq_$?x(lK=JB>#A-XMroyWGb zC3OErq{C3%h_Yvu_6698fMI489#M+cLS4f3L)m6Xcl_0YW47O0T91kaL}|=~XlKbn zfbLl1$3X}WjajFAG5=M@z7HOa`y%Yk{jbjV`O0|wAOBk+$kElwJFVp(Eg;CG?B6$nREDQr z5u`@Re|sQEc$n1)GQYYH1PMCfBPa%!5G1%huP>T~UD_VB4;S|Iq>A-_Kh~BKU8;joQS!2aWUo;6L8gW@AIz(tyqmb!nQG zT*3*YpJ(dXYP+0%4Lb|vYTj8B!Z5PrX8tF6Z z8SM+(t29&9lyFjgrm897q#{j~OE~rQFwYT!#v@U}iC_CJ;Z$RLa4>&2Gqw*rzg3<9 z+n;=2H38e7DkpsA1Xz|cko4Adqkf(6>UAnOoNBQB$r{^lzPaGfxIypw$~8yGzfLH_ zI9{Nw8Mx4WgHp$kx0`Jr+&%j3%xh}ar;wQG(?pij2n$0((d!j7V1k?8Ut+#IH|_NehWCg1pTNBIFW|E-4E3l z(d4lrLYfd_7aEZyB?Ni|qQ5oU4EhDEPgW4r&82JbeZsT9DE&tANS`MQzG^!PwbTWi z-mrN3z~U(>&p=0_p02F?>$jrCMRg9T)uQbmQ`)h#&6Xa5uCHf zrCII1NFqvIv)E|!djj^a{!4`@!4!3Mt&)MIPAVCsC1zhU4h;j>iu;#J29!6HNX9AD z6$BziTNVO|c1+_>^Dw`d(k_~tE}9$Pz<>%umcFwFC^2FRe%xSasNlxQ-#({GeW)Yo$(8(7CJ-9+v5$ncX6 zUISemvNao_rC-!+G;d4ZSoI=PS}@MgYWVT-__I4T8o~F-O3-LDJ*q#etO3T*-@ zGbrhxB`hb&*|yty#tabBoeZW{Sg?-M=VCmS9`vMBx9<_@Ji2r1JZg;x*+0BuyxV0( zSZ^`AtghFjoA)EO=jl84RB?1!ACy6A4R>a#m8K6v=XDhc-@K$p8iNcMlX{#0Pa0`* zGeHgL$*_87N%_%CPkODV-n)LfZ-NOsa|t-P5yk z+81YMuR;R>f!+uf)CbBn=xiE?({U){Z~+YE;5V7Q@h+V{B$dRJ&BkFOwV|{y@a*tr zvY(edaYk&y{=+QI2Ber}?OmBZ#GSIQyvA7Zg9(aU-AIe5j z8qR-mV$m0*QQa$Nkih=A&6-?V0GsRw_z>x_>{A)@$eYU)y zfu7`vkdCPAVynbNdXbT&0fEBVc>^4KM~CY=!vn3PJ~&w`Uo$mI6(9Jgj&&oJHWWxIE2@_AB|C>o2*EG^E+}3l6R+u0;Lelb+5?mP!5GjAbSAFNfJ1viPSTmF5hq$3{Lbfo>srGFy?oK znJHMO*`5Y>C?a+`s#)C@NY4i-0Hf5C!?Ykh8XSmfvjFW>;X13c=-B8lye})RAfE5_ zWW?xM{q)uZ)cd7luv?_%ncVF%2bTaeCq?w_bU}O+q zX&xYfc~>g3X^p$GbkRSFB)kat`jnqC5pu!@!R3l(q9+HcX4QOmKW~ofk*us{<<5;& z&1!40npM4tT+ND`v1(Mag3I-)wa1WFt>;83Vy^P~MK!D2%CSaWc}Df?uJS&nLceBZ zm421wUFp{uu9mK5bvr@YOVzB7t1I|zF}2M8ay6?h)_xOa2&ft+K5(~cR>wtiZMl<5 z03sX@DoKYL9x7~3Lm9e&w{f%WebNy2#3S>D4s=JVZ~7%IQ?z*SYF2mfrA@v|$EiuG zcA@$@oaM#|uHGH|wI0FjRQC9x+YlBV#COY%qN(Yb$zpQ>TIv!Uuf}oGb0XuvSYTPQ zg8jo7B^(G<;aTm4VBGmiKDnR7+kiD2+^TeTpWRoeE9hEQr-}Ch6j#-<(j!?WU8g_D zq*BYZYFUl7+i#+lRfNy+*}ZC6y+Zrx$TWDrfMEKae^A(%J(##EyBmVl(9?b7+AAl&uMA1d3rTP_$;<0)-xJ3lvO`1PVC)y#$JdR&F3r ztjiH-Q=f4*nlVC~1r~_IrYOgepk4wvJ>z-ujb%xKi!Dh)j}-i6>zc=a)+r?plihk-Zx z2&Q&g)A}CgjuaMr!}s-M&%b&+8Qde>+8ObV8IduILSzz^X=^e&wU8K`b2{ymZJAR#By(LVJead@j73VZTSx#h-~wA!!oQ%4|WiuFT&aS_5oQ2-cBsTR*PkjA5(N< ze=LLF#U;xQaj|WZUYqI2qotB6zm4_ zjZ?^v36$zdRWu|YEDq4?D=2fUD(ka-QMhc2JSDnxQjqjSDz_%;|3t`QqafY}GaA8+ zHUVbzZOhc*`Mf0oG7=7hgtulrc8Qo!>K+T|^l>z0A~#Cj54mwhAsjq(=Li=Qosbr- zI+b3@Z=OcPk=&%cc3Y5}+g6YpC5OHNxlyvsO=RX=^Bp}M-D;7WrLLqNjCm@Lg1$(9 zMb_;{P+6MX@RH7u7;AC^YpyrgplJOvMe$iHZ?tYIAj|W!gWR-Qlm8G;p;Hh9f;ch- zHDX(!Q5dO&+NAC2wfP4pjrIbxmV{N(lEi}?7Sch(pKYzq25qGsAf;^3F=W)4VmIB% zl-zn%Hs}q_fagV?s6!+sP?n}n!EnM_%>%^x0Vo-J#luF|0y6`)F%^>545$}ef@P&7 zgILX`32`YamCu=tez?Kt3q+>Q9S1s=A9W7dG)QZ|c}MN`+<5$6@7pFD;*r?5d+t;S zMti5i;-u3fj33lYcks3I)>j^Pm`iUA4N-ExHi?-_r-I*5uSfh7j=I{k6uQayf_;q+ zL;D)JgVC_PHAMrqWM?)A1`)W64L(rr5vk|`1|dOXrdPc^p;?H%ZRJo(^-kgQdT*lz zO7E@O+Zb%sZEf53-aeUL$#0%22bZirV{en1MoxaGSL|)2FTKIuR^InXd2;u?z0{S| zgN3~vIpI$UB$bB6TRiP;CI*}~?1es1dt1z7v$u6tZ|1mJE3S9$?WQ%wuC(^Hl#Q_% zH?y}}OVYc+-dp&w-Y2s_u1QGN20N`x0T9Vn(w@) z#gPOu(8Kak7xP>mmAb8le!9|Z@X&!Qf`3jt_e0+%6ZqCLHT4dV+}SuYS455t>ge!+ zce{7qk#3@!{yLaed(R}Fy$7pfotm~8?uXi6qR#9#5=FtqVc>XTRxnkBN||;N)5dVV zobBXUh^-_;LaeT;A7C4e>Nt7HE6ILb6zXH-*34|V6dukYh=XCAkz80CWpZ;=y}2YU zuO^Wlr+q{i#SW279PXa`2x}$#i2T*{K0@+TUmKC^hHW6-v{GQA<`7Itt!dCY?v13W z>VfLCkvb(R&P)e=R&T4gxmbWy1g=6aBAz`+hGl1(gXM*$WI_^GX?%f@=m`UxmeVUO zm8;kzR*^%f-bl*@JwsILBkW++Fd^Z5k&tX=LJ|oDq&uI}F$PuBkfle)sX#Gq3OU|I^fQ0_!U-^yQ$#UB(#QKozcn&BpMz7tMB#xVpUfZ>WeMPVR#Scq)H`{V6|$v`0^ z9X6>#N-`$GR~6%#*@;neUpjYMl|COPVQr=mmlRTxg>)FTg^&^nS+&YELQ2pbKT>lM zbx4U6RjIGxaJ=u35+bLdf1pm*?vKR`LpE|q$$A}9GF%KP;j|r6!s%g1$x9Sc;`M=q zZvbcQkP_G&(KRWR-~<+K+H=%6YPCy!EIIJL&yW&7FWxJMv&p4aZ}*X`3J9uPvxA@l zMHvo_6htx$?-%$B_%V6*e*a?8T#^G z_Rf_bO}%pwwf2gB*mbF};@$eCLLM>e*u+lU%u=z;;%0EJv;hx%m1rT;lA|9;(U50( z_vi<4hc$LujBi_vehA34ak9op!k6NT11+sp9e$1$5mOWWV8ql!KNvAN`aw|=5&fV5 ziHLqsY(&XjTVSkU=pE*Q%4g_O}G=7jvxJ=QjF5-nyCrML!Jf>7o1| zS{`Nh$=vkkB>G_l4qA?WP#3eOiL?g$kABcVo9G88MX_Q!1&z*gZV9VgG>5 z)xHz!EsyPWd2F|Q8Q>4I)5OhsY_GRGw%6sceQTQ!k8OEse+o}+e6v@0Y~!sxJI@^{ zuk9rPvr*{Gj?7D{?Bub1YW^JUoi0zQM$EmCR&){a)y6GbzS?+h-_8L(_iP;QQ$ zjp2$%ULBs>uQExV-492MVq;B;3jKwjfLxp4;*^RTd3bIgO$0>dGWl7I&BsUhBcOl^ z2h9Q7e=wFS!r&dV<8yfhDK_E`j=XcC99vm}mrD3?BM=Prwd~71mW!4&70H)-%T`nF zw=LPj+LA5L3jmP&p%RfnzIHY~7CvF4a4l{xl5bssWNtNyxJHSsRB2Zhg0W)dAY7j+*= z$-B~@Vob6U*~Kv_F&Ai%MqzCh55?F}TuQ5nPE#qeSIi}SBYNtoC*_iW#!^$bV`|kB z?WWuQ3JTj0>j)Xr_Xo{aTl0iR>ZYs0CmuuQBN<~(ldu6Sl40>8us9Leb>b(c!6x$U(_f~6Do4Cfs{J^P8P z1*to&_d3B|a}=S-)S2)TzdcZ`4@&xz{lo(k@!B)rXSIIUe&Q%D=h;tu zgDod*VH-5)bjwdXe?0u*&eEQ@%7ULb-mqG5QUSF6#E+G)3P15X9-iGvpYRhur>5tf z*#0uwY&IyP6|*$&2$7AEW3l zakPnCL_5CA7DSC|v$}Sct26tFACpQMkLYS`hQe$% zVq%Z0D{RSq_=%6ur^T%0CdLc=CspYRjk@SH#aL*U0J%fU^iSUd~3?b}Zr8i}9ys65m5 z6BqB?HYUVh?7 z!%y5S)lNV0qqDWW{lukD1&aD!crZ!9R>ESU{;l#8SLbU#@nkDQlBb{IzYgSh#g`kW zFLSH*YUu3GZ;ZDar!TY82YkD6`f`TU1HN7C^b^Ow_drfx_Awuif9SoEaFU<+_DVnT z?SuJ=Z^NZ7_=#`q?kAp}w4XS7CfT%vtil;YCMk&_ji0z$vU*TfY!uO<`r1!)syk%o zJV9Lc6PM*WnpGLd#iVaqnoILt=6=SC1Up`)TLeE?( zBKjp{FS+c(>Sv#FFu82eA7h2b0+VZnKC+62C zT)veB7qIl8Z29Twv@XhNU!FFvDx*Jr?&Ubs$z;u9jQqkaVBn5rz~^j1j2Z7+jM*`@ z7GvZFm?R6kiy+C$I+etVDEkUs3ArN#T$t7UiZLs`c_T4q6h7yR@=JF3O7hE{OY+O4 zkzee7o@V?@jri|HXywj5#lalagD675G?bt}$+Fs!f zHeB#dSD+`~@cj;3E_^A%JKb(f>$`ZT4<)m1EP1DMPNx^V)0fG( zT_$R%L#&YXG$8=tt`AlClI`P@u~h#Gv8Vx1VTFcrf|szjLgcC3@mT0~8!i@Ldl z2CSQFwPs}%cq?#UZk%Bn1-4&e0~U-_&gaTC&}(rdC=04pb6o4s!u~83&W`c8D-5H}#mDeY&Y*%uRT!aZ``RK#lwd-p>!Lc2h?wA~-XIBWlQ{ zur~wznKaO?QW#0=HrrluQ{QIV`eAX^7q;!$hqO4^-A#SB=f>mz-W&K}Zt9I^;bK4u zAl!B|OgKQgeY>b?h*(xFRN*R1h>48GcCN4e&m3EFtU(-Xa6H7l!AZ!e4PJ+#XsS@j zprgByyE<;Sd`P`+g`!wTl{PskO=zg_Cf^2hR&Vkt>vE$_PH+}a;m*Fi$?d?tEDx^fz_yJvR%!1|K3cuW&C#b#9>ZyQW@enV+FyOy?~*O4 zNzSn-`}9{oCbeI^4HkBK=wcT4LH1Yw=5LcC;6?eXZ)QrW$yB-~ZNluYPQ@4N_C%=3 zkeev!rZ(Dw-#VmdPrvnvOlc4?^RD`ixO*f?o39)Z$=u3}KXzpEt z!dHYdx>!BdT>y%(K8HRK1Zn+5QCo9+SAf>CaY{FRV5*C}*o;`fY5pyFvn&Cpc)tZ) zuUBMWVO@}Mocd%KOCbyHB12~m2ID1*cQ1^Gi z(;S9O2#Dr&kPo|%eG8vSN@|!kpVjalp5`?*F|v0zX)H%d1jY-EhqAkimyx&avZs0T zL~wK!;;PVGN&pW>$Sg{5G;gzur}<&|S{E;VG39HYkHW^crhM%OUuyx5#tv8u6$Qf1 zGOf=?YjQRDoRzQr;1_sAyZ1qg@t3)L?eo#6125UiVy_>3;3k)BWoyqzYr9XEG}yPU z;_%8oeDDizZpn}+Z$tN`c zsUFLF^!zf&`NdR^{hd!0^WV$mQRQL1P(4<6f4{z~3UNUZ5ftj`v3lk|Ej&|u=_)TQ ztc|P3>aqW;ek>I^RP|Whc%i<5`1TdNp?ZnB(Uhe{U#J_um2NbJXm_n1i|$v@h7hls z7x**ijLd*K!_}OhgX#O6Y!Gs$dn^RwPX#ifdaU~J|K!e%$L}}WzN&ic`V~C9Q}tMD zMc1!XE{I0C(z>qSu&y3E_{i7G8EDp>cLuHmwp;}dv%TzKsb=TKVii1{ig=4p!pzgb zpJ$8;2;RIt9V0ZRihc;AgnHn3qcKW3L;*Z}VQ|8}5*7VW9<8kCw?_3vsX(OqlMgpZ zo#0?n{aBJ7+U)YSsLhtu&#L&!OfsW_%}^T3R%-nKGeoXnb%U|V9U)4qF?AX%SDPxV z`1g_8Oc1WeWu>IPn+iJ$M6Ym`9#2(RRgabgG*L`+jh3~%>roz+GMROGR8<{JQ(c!w zCFrF!)c_#Mc07>bc;s!eYO2v~FHE(D%vxz$abzdWhR3KNAYUW3KS)P)PvP)#sosJC zbmA(%x>siCgt+3VR_DbmzAft3HpNlhMr&vaH8gmQ$AA7V@$v^Mjw;~(L@sHms%Q(v zQFZs%>bs6rLORoSR&i9_{q^?Uh2p5X`)}&I;Th@TsJihR^^I0>RNZI_wI(c};;6dO z)M!n3L&Z^bqbbj7yS_KKrYDM{Dy<64YQUS3fL(7l3><^$KVbH%j?Ei-gkJ(wF}Xqk z>(Xy6zm1_;FsV%2V2&&=uy!GBxF{++L8+JJCZ=TtQrIcfnq)U=%~4lf0($L8#gem& zU!g@&W%kj$fEDL~(JcVzQe6~PYw#cPa*oIUi_xQCkd5jJc(VVq4V2%8UtkH59h3ABMbG6sr!jN_rNA-|Wp>1}EV)zrO(3ePU#>Vl&XZ)yS`OpP}2y^9} z!0K5AnSeOBmZt#h2X9=u2^X(uWw3^gL}H4LsFHMyFVLgW_63M;r(ADQtJqP-1UzFmoo&)LzB<{uu7%BU(p2O9*%YcJq zDHly#awTK#h|`hqiAoD!3mmBG)C8l?w|Wk;kI7Z>u%5$G5e3o&Ec&&S#D)@Hph(d= z_GU%$(8GETxjrVLb-`gguA0I|7)k`geE^ zmd9| z<4((o{;;0IVLb;VL!qoaa=y#$I0F1++#Dh?fwI~@^vwf117+SH<#*)yd`s#%Ao}d9 zp2OmEFIhc@%zbW^g&YZ-JptU*4wNB>03J<5zaQ3f2!51^=){>qC>1SpSkEE5pjXL| z9q~47&4nm9O!_Z%JqNKP@GAR@j}b?bxSPXz4!FxGxZtp!1A>5Z!r=smYe-Y{s1WOl zw@i*wASah@1JkPK@P2W?Si$pE-e)!eL_ZTx)FCvtq@Du=;zsox>PKFxdJdu%nxG-*|SI-}o@U@nL@B z!~DjF`HdB>fyhYS?Cf!MnBVxN_M0NsB>bih^BbeGZ6_E$%x}Du-xxXQKG}S;-_++r zeq;K4nBUkriiweu-_&7#~j_ znQ3biRoms~Fu$=vrOlN^RwTk*vF71X{EnpRm*c!k-Vmm_EXM4ZTD3HDRIY z-&iS-3;v>KB)}Kf?b%^|<5x(2W0^r*B)!9 zK83y<<~P2GkH!t%wwmsIDBM)KNMe&faGUb6hgE#_DD_d2mF+NQ|J zahTtjaM06-`Hjizk`j$RT647U0Le}3m6zZ6X8pGg^BW)LH(qegYUej@oU?YzZ!B_w zC!nO2Taw=xGO)XIR^&IXA9<4_|n_686lmz8qsm(rDA zWD=7q)*-i~WatCqePo~#7ex^K~~Lb*#jniy5JR%S@*Sd)ZQ2l5fp{~6^tXWg!r zXLxT9l*>QW=3m!XXN5}p3QWq)4_uD=p#5_5O`RvdhzB(``ijf!jFB@8y2XFT4NrgA zy}V7|C$VIztvAsSRMrVhx^oCkW8ABHp6d8~&k5rq&!NAj&qfO)6non}1ybd{cBKmJ zwkM$b1Zmdi9omu(iwwKtU)IWYCReqtbGC-Vj=OnrwQ%PzSM=7~?z`DPm`G_9%QtfL=sw{thA+AY_OLj}kH1*pli#PwOVrTapx&Y?Ke zO%)x|D?-;o2p}6Rps+UiDD{GBVc=J9UwobG+s1%8Vepl4c6SEkFuyeEX0$K&#)3?G zxbpYe2~2h0c>H66j84Z3H~sSttz@bQt?EYcOdm$24^!hi7J>Y!>JVLeefNR!_%}>g zNill$uHmdt1=Za4iVQ zIxT9o+yN~CLrG)u0V=}Rm{ z+0SL+c0M2X#^YboDs@RnZE6b~YJ zZH!onIbsz%bZ`Za!YULdDeO}cZqwWDMN{iwv^3p7l}4UW&{uAXrw{@n>P3rh2Z7je+O6-e|;h^P&pB5=wqKf7~Nk+{>k*K6J!CRt{JQXV&4H@=|2KM}sw^U;H z00E(5R$Yj^1$O{A;7-j>Zv*jV)p1y|vd3038JRz~CO)nwu1*Z%PjISgsykaf{<;hpK$O)wQ1Ic(m*>Bid=?V>uoS zAh|fo<1m2L2{xPnu}c}lBV8!$xI9^&_-pi04|L-JE**c<@X6}%j&951x^T=WsufctoV z98TALd{}*qNj7qv(&8jqbnYJYadPk$fycU!&#N-5M-7i0ecW7V@uyQC`_ZfaH66bv z9pBCIVdj?^{pTRv2R8xwcH>8)af;wZ<40ap;}D*9yTU6o! z5s4n^5OTEl=EnoYT7njaG!hnag`@1Ne`1PZ6pYIBn@c04O`~-9OK~=1q4X^{o9f70 zqhPx6EX8L7N8)5$9;s0*cn;R?%8_n|j?D|oiXZvwoBcCvp(BBo_4wAC2A0bUvDx6b zxwsohqtNHC^)`F+Vlo)a{}Gi>?|VIXefr7%8C^y)rq%rDgPXlGl6`)bM^7(3 z3Yw=vGp}lt)Q?TS5Er!`@L*8Kv@#Q(1hbW+>96)geVHkfRtG6D=Mo{y4%pJ%Qc^L& z(gI;{F7UvUzb!^=@`&?>S;eHKDoK|5J7UJWeY1;+kb}&)=Zyc>V5n3E^E}WzuQAV} zKn#%nmTR8k*B9babYH8mroQXN8Hwtx7LnFaFT!y~PV2ttR;vNjSnVcg0GUJlZUQZu z8Nq=~UC=kfm^4H?uRXBh8Wd#tL2*KeSAxK55Tc9sgMbnitsj^AhPSc@XPOtKCz~Ro zRlR3e2+GmuJrp4D%;^T8!<=-1h5qzkr9JX_Hrr3+70`~B7Gil4i~0R4t^q#F55BCk z{VVls|CrIwXfN1Cds4&pcoDY8D`0zE!}cV>_8R0|FABD``&0*qB7NE%(ZEXBmguD? zGkgnp%w(1ec+q-B@S+&19-B_P0DLHEWUAGn5$hF0K{YQCOPp#-dpi~l;+~%Mx8fp{ ze|d$9Ic&ksi_h)6=s|YM_1Gb1-N2A>2GZA7Xrr)U+7HfV?~Sriqcvg4by7Ej{-z(V zSMARvMipHR_l2HVlVbjG+{^d?p>g zI~|`&#}_*3{dD|zIzE?TG?|mNk z-gEA~XWkDE#eFu1)bJsRmS~DF1bB`tN~EO92I|%hAQbvTK!q7m=Fr1wfKr;VBTKYR z+lnp6N@}!Bt3s|yBdYBw z=UzS}OCAnq_T#L*9>4WlzxVnriHmxVNUKX3m#Ht)hsNU@h&%tLLEQhfLELZASv&b& z5r(V#BR9jkY=_(+^zNiANW?o|A}%k#e3{72|J=;l*IIJ(<$sQd2RPKxE3YGNpFQn^7()Fv5A(a#P()F|HDzc^LkEN@~m7c#0+0j*GO4m=PtH_g{ zpGa4cB|U#JT}6)c{0r$SGNk9PLS}S*E?u$N`5CgK*J!C+rXTp0r8nP_nEO99nEUyk zlj!~``Bl#&x*x*^2jhYDA48Nl#^G(~O<}e~6+j@7w#S|HsWX0*`#^esb+aEi4p6cX zF;R(UbC-l$Vhiuf&rqq%zSc^moKn&8P}2NrjRdr#>1T`bIMq>&Bkwphtv@dnJfc&q z29L23K!-|=NK_tfJ_N9LAvo)k@k97tviZ9&@PKJ8o4?0*Tim_ZchZ8g`6Ki(^^nIq z^0n6^bF9s>0x1b|O8uMf{G0Elug^J^TECvu8L6WOI5L{U)=BrV)E|0rzRcuonPu2u z(Q31DEFF#0lLbP~>6Va#=yG44#K)|$Gx<)9&PRj!XgtF|G@PBFx|_y8?+q7br??>N zo#ukpy9E>x@@|oU7k?1*_*Uwsz{jToroKK=-t^|petANV+q(2;nJ#Pel*=hA|2E1mh8GaPq)C*bVCrPnr&EM`k&>4DN9%v53IBZZ1YAr{y7a_>fu}dGjU}a5mrM z3VmW_sl)EqNUjiBqrdG+eQ@8T#6pzm%S@fVN~cv>+i9J5GGg&UhlV}`Aa(st$|{0@ zE^Q9VyVdnqU8n0u>#lRNqU-&=y53jUaTk}b?sOfS!=7C?2Bxmxm7reoAGbL3GLLeG zg;Dz$z5Qfy;o> zg4=0L#MoYk|P)R2aC>H+ve>*=&9b3-j`&dG9UNn%E44c`PC?Akq#Z+yH6IPUi+lTOz+0p%X3TF44^`v5qq}W4wjR!f)yG88f@} zgSBW?CGO(8#9&$(Rc}+1B!P*wVf_-h5QybC8`(OyXTv}I(|Gl5=@skrCQ+YbXNMSAZz9GWVg&xgcPIMpyLXI)CKQ0 zs~93)C@SeY6)_OePKtEOaSVv^#!0-aegfYe^>mAZo`&=OW7-6xpeJ1R5`bJAkWkQ5 z;W(%799N=#gtA8M4tXjR@`Pu*4tYY5cgWM4NjPSHqa^}8)xztO3R0OzPi*h}te&%ks=sS}&XzEbf3&RFXC4zsqMo8^Ch31j=0Nfc5J3wF-D+ zeM0>aMdR6IEuJxLxH?sVDr4CdzQFDltDU3_8hM0kAEn>2K0^+7D37nii%Wpj3cQ&{v(>;=~e4(YbgSXnPaZa)v}oDoD+5Dr6QMb6VnPEFj$Q* zxua*$^o;P9#t3!OJx&wkNs8plx48sC^q&2jFm1FA7-%mf#$E^KbjpOBa zjC>%rSIhtsbf?;$=Q`d_bIuT-=|zy+LzMzw%WTG?El@df!hN76JabiSk&E+BWqz{) zzJ@5GumCtI4aY4Bp$!F30JPT0;%w9|(x^A^<1WFEJHwB71+4U#$O{CbdG=@pNLV+sg0?-E-`PkWw-al=`Fs z;g5vAq>!M7NJ<+bvmvMp`bVapE6S5z zdna){qQakKaG|~uX<+sBI4FqvdNbn`CQ9s>&5$q9@hgfTw$4hf2(+_X^Yir|h?j@7 zX6+u4tr-tu$Vej+A-6)x!cg$3ANs(vc~}EUn}-Qx;dK3|q1M3(r=_cSpiS8`h*}c% zu9~)-puJ|)^RH#%FXEeGPN&>UhNLBa!hM}z^JiiuHj$ur>c?AxNEGGiv|6}pWT^Vx zR`ZVKi2ps8$StdaHzJvZwN?dK#l>oa&TPu6usJsqW3v!lQ-iZoxTd?R6sGBJ3w;<~ z&opZZ%^_TjF^KWzi_};)=|Q8hNZ{)yjb%{YN?YEyz#`y3J<0e{nQCr?esU`_7*H&e zeu7$tezMuoPtXA&R3I;7MioMu_2T#RXmn!IM;jTHy98gazfFS!B=D*`WOW4&U?jsL za18tb7PFf?hji3>6$UEk=uIePQiawoXh>d^T7_*PEkoIwbRlqBCHWD;nARg*Zt<7< z&U&=AgWetM5r}9#qW-7#h$SVV3wLQa7y=g7BSS~r+hyz~(&KWbu5DT~1_bIaw7_FW zB07}Dek{g5im^L8b$QHVXD~}+Zwh(rQJ1DfB>@FABaL0FwOPBdaZT(4umwiygx()-(fJ=;zmR;pf-!^P!8gd%0{}oP9f116j?s zf{QpVZLK`_0Op)KFr87z+Z0DKLfH~6WuP2gCI}OAu~dnvZcvT2j*esGlER?-n{02R z0%*d2NF=hIzL{aPiT3vnz>&? z;R@E+^4=@)V#?2lYK|6Gv#6}?G&>(Ki`euuD(`N){wlg|NeETJ2EUOEetUNPSlxAQ zR&>2@`}QtfPgb*$41OMqx_<0BU2m;sqw>|M>*dY1%`{fCv&m|9n;=}Pf+DOkZu;HR zEehiZ? z>VD*PKawuGX49K zBIF==47~MnzY6LCyLm*;D6c1>KHZCw9em9aLkxM8M(bn(x;Wa}f ze5^u?l8GRzFm5aWsxLtGTRK0xKAYv~`xr~y5uxeGF8$e_#zl(cn6D4^f!+z)FPvm6|DbI$<3+UW>+%fqXVB&gbWi z-|KH?Uug!pMRifhiy(_BzC)o=225VCs|w|5+K7v%PqYx8CYp?CKvnUvhz1b@+?fKY zthx_RR&gle+ptE+k}wW!l!h~+qkGzgB0no1&Km{S{s*&<}%lz9aS5C9TS@n%0PdwkX5DV|RA6n!ldpSVtkr$8K#suRfqq^moF zf?!TF0$T_Q$g0tG2M;13>dcwEBm%R3nqy2 zXG7Eyr@`SH5Hn%ZxlC%$RCiz_({AG!7?o&lWr6Yd-z$JvQcyQH$|=r!V|WPQW!y$J)|#EE>DD!h)OWt{_+>c>g+c!0c;8KpjTLV7Ot` zc?+Sj(sLr(o#w<&&tOt?1Wv7qfHCSqh=DE>Db)3R5SDL)u{}#P!7Q@kwQ;zaf{}mY z4IhukAN?p((36fIxay{4yW zc~s`QqY%F^*BzBucoWkubKOzZAa5Erhod4p*1!axAImVp3W zxiQ$Sr2%B(m)A4c9hJfEgr%VqVX!+fI|jxPrpE@o-u&ZS8-v{mX~&h$nxDRpyiCJTYo|GDWwYfm_8NbKZn(u5vZq0Z4-L||nVmg|K399Pp z`cZ(bgL6*HjNxH7WzV1`Zim$k2a7#Ew(YFVGiW>}CETD!^xpVFvgc`=Iepb~K53_C zLLcxs8SxyFaZ70(bCnSf>tdP+?oy9f%P35eokr8&t3!jVGY<3fL5-Qsi`AGFvn3=bpdMF;k>;fZFo zHayD0dDKht9ca-j3Tc%MZ)=AQZ`9iGMp8_K%n`#O#pPJDD7ot{%B`^BjcXg8*V8bW z@-7mD7dE_8#=F`)Hz^M@+ox>DLXNZ@%PUpL*%ne=tW%q_NLZkf{D`d}Em6AMS)v^q zp5p*Tvv4FxrUxRj{n>`+;6dyEABkf+9m2VIg4&ryK3=ruOHdhA(Q zkKLxerLl_(?GX@X$tfb=&VpoN!yAPSFCyPw$s&sgw^N`acCvF^u#?G#7w=cv@GyFr zYf80?yFG1qhh@Xt8TqErwy@@5!cpU|;X>oG;T@I@uWkmk(9b(Hawg`kZaX2+|`D6 z3bFN0mP^Nm7eq~lusv*eN{B5R9+u3y!(AJm{a6IDXf3HIzzZAR5Ou~KcE6g)H*9!* zvC@X8%2ZVt9v33t?rys-8(tgvM$q1FHoUg$hwH9$)7bFZuJ`xqdK39p2koirhnH=5 zOI>emctp&luD>`N-bQUZgCQ!AYb$JcSdEu#crw9tYF4L*ivBn2Z|?| zG`7TL8{Ss3;cbC~%w224dw?Kc)2RN74KAtWAL_m#7}kg<6{iLan&J(?aQ^ia4FAmy z!BBc9WDe)<4Z%>l-I8!rX1fT*Hw42Qf+1pBICpOdhEgIh0?4_0Lof_=`e4r88-k%6 z{Sn~z+B(2b7Q^Qp;P=8UhWC7nSPV;r_*p(I%P<@gMkBl7*#)zqc0}52ScTc}R!U$_ zxs3~teOzOTbmHTJ*@}f^&s@E1`3mg2VHA8xjDi(Yz?Rutb@}US z6udnd1z*V(igb>P3>9}Q8wKwSqu^bQQLwT0rLC<5_Q}AvY!rMoepMn^<|(?+CK=fc zy(};azNRq%DrPrKf%i1;l2P#6!YKIKFbck|X(ky3?~TB|Z|7$M`|jg{QSkM6(G}RY zv0xOuQ-OVVbprcd7TNFhO<>=Cje<*-wbm$juPkfdzA`$lwXD4)M#1}DpzK#$*4WAW zngyfax2fwGHP>o6yNyX~yZ(|G1z*?c`az6>_ke{m#V#8KZ%=`JisK86=0@I@JGlDY z)8#oCCNrhcTrzOS!Q@Ts4@hPQY@_KVFO`;z_aAtnMszFx6R z;+FQ~EmmwUPT}i%i^-Tyq5zJd#5TV#Z!w`ka$(_|xxTk}YAsUS+u>nOqqmz;@NQ*s z?TOMZ`HCH3cPm5|Y40p0$kP4_E`$R~=2PN=imPP6+ZJU%d61X9$LrxeCNiQk+MV9x zO{sjf_qgLqUSo?_^UFcK$JphypjLU0CkOK$;}O%|4{rg(8KkFG-eWeMCvkwgj`vvX z1f_P0{1-bnye(nTd%T5psJjJ(a0n1eEwxhL*;4qZcZ!vVbG6>%t;TyCTR{5r*>^+o z`a$v(08u$^e5N~vNh)rfc&+e*yh1nRGf~wuL^~oIA_AO(P)t0N{VO;*ROkwO-HF)n z+bgq-1PZjm?mm4=J`{P7qXxZrMF@*{1?3m4cfv1(}*3Z|~11y&2BvEdv;wyPi*4iyiQ_K4~I?m;AD^3!6eqK53Oapidf5 z$R};TEI|<>1bg_TArxoW37{?lN1(X7PdaU`wA{Jr1Pe%^9((JP-cJ7b#wYEuv$X~W zySq<174q0$luw!^+}T$G2=??z?;N|#N!Qy~5$u zf|jr|8%r&I9^&Winw5$YT}_p>onG)sFNvS66+Z*sa@O>*l)*%X2kdhgO|n6c3;U>?UNRP;y@@e5}8Kr=96ag#B#y|awsh)JScXSTAdc5mc;=3?<*3x z*v3FPe1EfD-aAo>J2^Vw*mw2#?_GFx=g*O2`FZ~SdT;)Ve@x1S@jSwh9S)~7qsW{a z(?4Y&C_z{2(?5%lGMyvB7#*3~q~}<3(4eh)#70$?^fp7%V^fL4XnD1VGo=Aec;pLIdE=rWiv zatBl5-a$%R9-+-Tpy6Dvr~fiZkayY-p~EP&hv+YfZqwc+9ZI2NkDlkM)DSwHVvFk^ zaNXvrLn@|Rzr^(r*XOvBgnprOKt%fx3$40f})>Je1N|X zr@u*@zRrChKY(}xDhFfN9rh;net)q5W3`|-OQBG5TwQ$LLxGYtePp8O=T0>U4N;A_ z-vO%G=v4DN9Ew&~BZl5q^S`?{&|7!ICp#!Fy`SjKLzDHzYIus?NL)NXHKb2z2KD8F zV9ZpFNOoJz{}H_*v#5X)XE<;cNqQz*E}4W4rC%>5gmiXmM6ZgDDf;V$)yPKgZjHqG zMvYqwHU6Im=;L6qMv@9fjnetrJ|3h-He@$_{QUyaKGi5P)zGqH8BvFV)HvhsWzwk-rhwyI6fi?j`X6g(<8HWw%B(I?}1c5#}i;?pO*fS~X zvJ+gc&GG?u5T8*{a8Q90+6W5y{BN?wj(-wVyyKyWsP*`ry&pR7N5^xC0E&@lLxpF2 zBXYqhv7vfl(Rtwl-fMjxCF2aB|2>zQQA_8cc#v9pKO0lP@Qtz`xS|z7INGtlkgrn?k!ul=~*Y; z9QU#xMUq`*yN?|Ah_Bo~f<3k2By~Q`}FhlnGHq>F}7n&+?_P)^_?*>P>PR{JfOeJ}PTF zz2Hl^gSzFAAe2X$?ZabUZZBrG-?i&0v;78{1o5Tp=z4#zt~b7vIQ z+IwDPLX)X=DW|={2ppF|41u7sfjc$afON;hKD?0AUTH9hIB-t;b!~Esoc3~oM|8Y4 zo0B|LVAvFLVmzhgc*F!0`3vF^vvlN5j7M3^8-Cg5wC8|L@ym4Bi^72xa@vc}#FT|0 z)7-@Gk`9WQyy0Tp?aYRLsN7u4X>Vprl*OpdX|K^O<+NX7w;SD@_DW(H>=xS6g$PaRQg;^JpGIh+%GE*>b1DEi{9-quiCG*tG=iB- zJGyN47>Vo0aU@y#MCk*fY?r4ETy^}p++KW*+T^|($|Kaee1w7F<(#VJ?)0HY5XuS`*GT*f0x zS)^!e%3tU`gv*ME$jd@lC8X;|vU-=n?mLFmk%`XsXHu)GK-0i3>FUE6J+d(x?}(1Q zk}(<)iv9|o>5ZNtk@DcVgq~BH8ImuN+ecAd`~x@0bhPeJX6u@cW-?n3TeG#ZT@72a zwZ1@nP;MrwV*It)+ALG{FEcbqJxi&!Tq`FNrg$Y^8jt^}(s5_^gf6s{j2nS4Eky28 zuhlbwTJ&C6QYYiqc6MO=LXvTlu0VuFp>myM+*>JHlbFO#w5C&6D_n651Mwi)@*2=} zGH&M&NkLk0$kcuAQuhJF!v4@sv}T>B6430Cj61S$E5R!w^tu+w+k&2E!FFf2 za8*w3YC%VF%HWifyBn6N)Y;0(?ZXTNNoC$n50R5QJ*?qkZGM^HcU4Yq|0WOgs+`>E z!{waZN*GfMRtL_>eMa<10n-i@TosVH-UMWFmtbF%N=B6{oKafPmbD-WWV0q9lZexc z)h4JsQ97SVr1NRTiZT(V9kip;9KuL|DG=?(PU>*6kgsk@@)hwTY~7ip*hvu`q*rg-Rth7OXXuEc9w59O5o_0+ z+>=PRvuRl1V|TD=%1ceY;TM&Y+nKvkUTVl2eL86DB+9>tp0)nPd_Hwv>NY30Lo8Qq z+g>$xF$74BB63+LGhHG(IV541oZL;SoZdQG~Y-!wnt8G7Sqz$6+5Y|V9<83dx!FGCV#7_&e`%-QJq(^sJskF!M!Q<{u~!V zCGTLl#rr#%imrO^6x@pblBzBja@^fr7mGHnT&V~^2B8#Q$?EktvS-BItDASbq~NZb z*)@I7W}CieJ=A+26SpD-_s&qs!w9b_eGfM)LM2H`PVXD_{xCvKN4;N6!A)woMfLtT zYJIHX>!#pF4PTMIrwx^K3T}r=F7DK^)ZR_OJ*x9quZlNZk-lf+x+%B`25SzkyBlC6 z^oCI$DZt~cs^ZJAKg^!=yc?xgSW#>qH7P$JZ=#NLH^ z9~uR6eyQMgEyAq4-FIu{Sx`Kw_bEtn5{Y|=eQXlPpVyRJ%#eAunsm z2U}VtIZu-0{Bk7L{#RWo?tnQOljLTLwkaQGQbG@3svM1+t>j%d1W$D2xIJ<-LOTUM zYdq;tm5$!p2+zC9ado68a@-!Ncp^FD-g2B$HA;?Csz#Xk9-FO6%nx={inDG92|HR! z)rerqt8~&zXXnj}Ox0*B+p5hrTL;^0W8vjyrQTx$$?ltN_Ll9Osxd^e1Il)_MAs&5 zd||TPeo{656%p-Lr7N_CH3^w6ow{-;wuW3URU_fDQ1nRED1lAXYDcQZ*yRk3v-b8< zi*|LoLL`Ak_w49moWfkp?Tu-#S{w|pIbd~*xb}KS7dZX6$L_1kX%iTr0 zHoak!nQ@hTv_H{qDZSx~746!tCoh@ZWh*xD>~9xLSG3!87febj+4bDi8+h!Dss1X7 zcEOb-+DSMH*<{%$x+L1YEcq61hU!yNW^15^$ihk zf7ZJjBHrs^j%_CL8zSBw*1H=bo^;PJy6tzP^9>R2I@Y@zB3>2S0(Z0C{Z$e1!WaA6 z@Wmc5Z{kWT-aX$UR=l#wn|RBLyoo2~N|_B2kUH!I}LUBbbPQj)GcRAtee?2TOvN#I$PqR54M}GMsdg0 zP9N+`V5qCp)hPP<`aakd>1tX-T{m5gJKQ=lTTy7G5B8vjx;kBr9GN?gLEghqS6jOX zu~xRk)(6{7SF>x^UlK!Iovub*KZv339xy=eV>?(e)ZM|eNOAi+FHfklpA3jE)EA4@=;h0R*zv>?#uAd6g}Ex8 zZbe=r5uzNiM?-p3BE(se=FTqqWfg5lB&B>?m7=gYMlVTn*E>dU!8hBF>u@&$gCGF} zwDvGYZZE~%Eha*g3>S$I6}QzSLL@3TqIYi5O-h8wb`ALIibRMmof08(Xdc-klnC(_ z=7-|mhmaB>MhzlUDfCV!((M||w;~TWQX(4|RKX-ROMqweNiP=jaF4H>2yts6nD2Um zURY5h4?5z@*IUlgKqz;B1nqLd_%Jt{&&|9H+y2_DRCVnWcmXyMma-Qj;6lgy% z9{(3Aon=?iJd_}O=EKKRgx-K{Ju7Rw%=cs|Q#Ir))8(0{?N?T{{ksJPls!zJDVvx+ zPr=I%E8?@S&!y{E()C&v?>~~RPo?Xp()F2ieKuX6 zOV_WY>$N<6pRP}(>!;H7nRIB7L8(Po?Xp()F2ieKuX6OV_XHIv)Rq z6J~iPl;TmF3Q15PI>AC$fEw#1&^{4>Zq61%G6BD2rpZ@oG+mV{4J7zliv%CwEf}T? zv#$##U0*fpdj4vG`wis#(+XSJU+)Ah4b}@!QvD()Ek!`jvEjVi3PSm9C#o*Jso9%euZuEclJ#A{IQu z^EV0$e(gtD(fQXtT5d@Z}ACB!(skCr&LyeUn=JQb7}wo5^! zw%mMUp?sOh3q@T_;kH$#EV7m82u?40^Zhc;WFn$$`1}fc;2{TTSDd$gdMjcOo;o^y zAl-)@1MlFJ6bVC`xhY$07DnHW-TOhC$pL(Ch57)^Yo_^S5MlD2vJwf<=>V!-CD#OR6$ zX6oTl7VMLe7t{MwOp#=UgCenCUla+|Yu4j$!QUL}GYtAfKIo_)0T0bFrUU;%k|@|^ znq8^-7g?s->5^SSjUFf?d08Z*3nj_j%a`LwXJKlhkH|6&5mgWM5!8g7tE2eHrKfch zlt`u7uewy)LWOqx(-9FX$t>cStrAHmM=~3D0?ewTScBC`J1Vio;43+7WtQTw_e^|T1 z!GsLDO(VQ!$kzs^CF>2mmg!||A}50ZomiFrw3A``$2AupeVt%8{uPV3{eaiAddF{N z>~5cB)N4u9C~n5ds?;uMPD4D@1M~=Ov-k!88c8&Vl0vl@wM{}Z&h!;PkC%^oU0Hta zF~3Dr-(ys?OX;QRn+l+`Mk(#Q)pU=?|HK_1yd)iWv{x?r)1&UX_h!(5AbJn|RPV!r zNlyVz|2n{FDp2p$#th1l3t837c>FJ%k+#q&oL5avm~2E5B^wv@M{p_o$Vc;@Rs)}x z{Sb{LkMxmN#0ouGYKZA-gB8cS zg-Mz8$NWG4YWnQg_xo8fCQHx!i6UD2js1R>k1@?b_2`DlgMa}vKo>!TrDAM+KEH5C z*!)ydodwNOgd_F;Xt&gVxlkxe6`gUBFJ%`F^?T#hMb37M?AFwz+thA_rrkoT8#~!; z?C+|}yZ$A$#d!)n z!Uv=i2WD@PU_;LKp8#J;Vul*_5Lc;dx&ou=FM-47^3P`#B-}fNtlb3#ph3}VL|4cM z^txC@uc`Q4{@L#LpMx-)g6#kM&vd^>%RK1!pXz@9D+mAnDZV#p6D|tSTH6Nm%%>a( zdLN@&Eh5%u-k}#F00O}it|Dlfo*!3@?c*bhkKf;c_ixo~dH?Wwd*^esje~;g{9C|@bfh#-P`I?=qJ7=CeD`3v#ed6@N&=Tnvm`--SCQtRwulK~eN#|<_?t#9Rq~Pg> z0wwO1INtP!vqac`s$H&sS)_MA8SfzUBCp6>GKv4Z0 zKENwFxQ3j|DH<2&&-WglLFi{t1G!P52_ygl&z|o&CsHlkfpYz7Fe9N2-;!si0{J97 zAT~ZWBLlc)QKh>KHRE0{kIBs7Lq(34N4rHiu>@T}Zfxvo%)7M* zL~8bV<8>P{W)k*AJ)1-l9g_;`dh+>I&upO2mq9`!(Ut)!o8?v-q4_#Bh9!rDA+OF( zPXE1hqTg}OR|m>ZYj(dHe$?BC{hK&BIIG9a0Vx*GQuz!50=HF+@&I9 zYSnQ7HC`jadqN%Cxk<0!UkC#8&zNT+w~{<@{`vIq3RzZ(zO0qL za4w8qo{US$L{j}ZRt?US+3v48)a8 zS&Kjx$nl^Lraz;UE)!k2p&H2p9D{03xYl_@N~MERb2*j6Ef+W^ASr#+2Nq7wZ1u{X zj9pG3$KBn%>38&|I#P`8|*qg?gM$nKK8uJwM$P7IQgjyUQ&vH>|{Q>c? z6wXgxo}YYdD@XK(&;XRb-Jj+1J?s9bbq|3}Yp2X-yzLrA=J#qbDMhW(g`4R=Dy%tE zG8sO0Ri#X^dZ5p2jow&2W5NMgsNNFN9;?tg-VVT=M-Da9b`t5E7pK2ksGHo1puiNE z6B$YRz_$QnsPKTQU242fZe0JZR-;AoHhq5SCs~kn5+f&*eW4fA*(Hc1@B{RS}(!aw!vE zlB9j&hP7pudMw(+I8K5sP&0Hr4h55K^pq^-*fOm2nS12ri7=bX%y&vUAL~kM`eb=R zw!qU1UzDe!a6#eIp&&lZ5IJq3{shb5iN#M&x1XGdPY|ixb|z?_^enT6GDgTM!u+wY ziso+!o$iMyEmCO@H(?MRHBzFH6<__(3nYYlPAI<8%4h?%0t?W%^l=NPBZc-?scc-SR77MekUF8YdhpJJR`8Ll7p5QVo844dIS$R240zKYf$cClaU8pl2xrzx z6?kK%p6o6n0hjO7N|i)@GFIwP^sbS%%S2wKYu?Zi3{=2$<_W%n%7rxJX3T zx-tq)r+?noy(Xv93Aner#Ng-_`QWijfndM*`1?OG{VF(8PNyHjf;7Kstwmgt&fb@Q zR`xzzz0e+>-P^Kb(-2_gxhlsrLe0CDQFAI&w}zSiH^5)|iQa?`F#T{}*^8)PIDMi| zFE+E&HFPY1kgB$rR_Z-BbUi9c@Ducq4uD^oJ)KUsv+N<`w~#m}mZUL3@}fMCnIH?- zgT{)e;u+u5p=*G*T8`2?%?9&q8mdIlL8-W(xlO@3h7~hGB&pw}b`#45B`l zlhv4ffsCCtC7O$2k}=vZ(BY1-v?dp3N9jvZoX^jbIK7w;t|Y~0E^FW|mo8u8!$aJP ztCH;n8$PRjlNp|WKnP|xBIfxYKyS-a>U#Te2SS~r`rtSN31tdhO9~22EJDw#JV%c4MmY3fLW&E&~PbX%{MuM6$kG=hzcrAs%g$|+<-JyzNov3 zC!*pDTA}K9PzBzj@#R7$Ip(xKS5VT^rNqBa5=fk0ihx z1-~U z%2OUJ4T^(4R*fX(ZBu-7ar$OAKph@26DJSZ=(|Cf0$RRiG#awNg!8}^(!R`vB_rlq zH!=(g%!3B5k{JzGS*|Sp$)u6qnb2u)YwFZ&43^cuoy*_Qxxe3?CUQW9S$Jo(`cC>~ zA@c+J={C-oa;#ygn_~@2<4JR_LGf0DVn~caYopMh(7l6SNf_>Wm@qssnluF zdQb~69{4VIr8Nzn>wJw?b-=IBbiOVR{51wNO|iMSNP8t2UDCPUjQ^p1aLF|TocaTzK^#xRSh*h?^N#ssT)8TZBVlDoOC@CBdVG9)ib##-9X_ zwgLo?gH;fMM_U1c$H6K{f`?&)ULR`EhaI6at&L9OIzq>16i&qCIkG`4%LmOKk-~6T zV#pYU;VLlnk;SO$a1itTBOzMID|i@rghjP3Y=avuntr78$wWZ>jI13HfS$}wg8AL@ zWcN_mXIp%Jv^*l6<4DAQ^W{2elIKsiHsOkq(( z1~fh01cE@zG@o;C)s=i+ToFHUXzU>^#lfq9Z$2Mgx)aoG_PukbL?Z32t%-KPt%b& zQrXjVw2SFR??5@wbX3X`3Vse5$xif^_#{QmczwTu#T3Kn1JwbjP2v5}+nWjWq~bzz zP>5#_K^e#i?MVDReN;>&egsXu>jd(rVSuF!BaS3-qhi1`DomnLFf^Jv;^k2tW+`FU zoi!bamD|%<)Rm6{iM4B7qH^^`ouD3dq8G=7sEyQ#gzCfZR(5Vk2HD?*>WGf1;lniM z#VP7x)UW9W1O#)5N`GQJ{(B$1cCDA=od^TCj@0(4k_-}7h^kP4iIVS{^RV?2p`Q+x zJ&D|F66+;$uZ75MEk!-OCkU9~QVm7c*5CghcWMF?$~Dsf27^|=*v_Dm@Glmrmi)O| zQnyn}C0ADe|L#xe{2Jv)qA0y|>Zj|NL!_ zQpZ)vS<~O?Gb6?Vm4gWC8_BoDtOtqcrO0U&GHQz?@hftV*2$tnR!dYWlPd7Xa>(}N zab0xCN^){X!CcDCgDS>{;KXBAJ`yIXY|=FV7yuGo_1)U*nHS#?ImSWu`W2P+r0(#Y z<5$+*-MzEl(K{<&6(|$pji$Rqtoh0R5%kDzi*T${HFBI1xQ>>mIMDtSWT-k3xPC&= zNydD?;@mBff|Fsz_l0dh-_`3~`_B7)z&pC`>=xnDliBPh8&DyBF*_e6@TnsIKP}zL zuwhr*WRc}^GfyAk$0J;ER?p6IeUj^KTp^dQ-~v+<@x01L9>9mqR1$vj^2mGCblm@74eZe{xVpze@m`^6n1lK0Y2x1^YAjEA^d>79O zLpi?)o_qZKNuV_rOQh(TC?B@QGY?6q9fL9-XeB{wt|Pnj<3uB*_2E0PC10J5CL2=Hk+mC4Q|7z0cY76=9zz=Hg)K~*@YA^oy~ z|G0iPq7vF>4oS)>_ zkpv&Gej*F2aXbimwLZU!#th%y5*XJ(#H9+};SlF7kWUWXPCfH%wk1s}XogrYm1!NR z_wY8860a65DRC`k84ejgZ#0yK3gBN3gFyqRDF`>Q-q>+ovn6o&f?;kW?^=a@j5y3L zNi~&4!U2uZjgd;zdo5 z9EV;_gy`7tf*ws)BD(F4A&Cf-4f|$SPCHIBaMqD92=Tw_YhmvkXP4Tx;{-rn^hu{+ zemm=)YQ%Dyb#K|dSb&M)kcgR8>KZ16U}6z*D_}CkXknOm>$`pbyr?N!WbiUfj@J}z zHB1VlLPOC6lZ8od5wc{*S^ofl*bqr?0MR9Y2@n(rEL#Bx+ouyC!fMWpJ|>HG0|>a3 zkYgftCFHPa)_~we4G1rU$_`&0re)H;!_;gl7=X|M5p}u=5!1Aar1?r`0X~LLL{1)_ z5z*J=7a^$7JCYJz2;{<4t>vnBmDr;>G@K6NN%cssx9S&}7?iAmB}nEHe4Ljas3xEs zCpce{xqSG@7!Hysh5Vuudk4^}Aht?7&0W9TxFlzzAJC7b9Ln{uRA~6fav=$>czu9y zqV-py^%w%&X|oTS(VE5Sql)GjGsc4c)YsEKJ1{l!n`4}g!zPNF!8$B0BZ z(*`C5|7_l;-g@0Et`D}|h`=@!2z+V9<_(~_fQ+sLT`8y!H|?sd69Zg*tE6z?-+Vmo~hBS0Am-7|EnYj zOAQz{MTIeab_Z)l_JYX}=czTT4<%qH8KS_htIxW@PBMgi)~vp*&=W+4tS5BIko5$i zR*<0$k!Gw$vHEuE2@Mu;cna{378RYChV+Adez+i-2 zL5sT3FkK2n=|ThDNQeRj4rr)YAWG7j1dXIM?Hd|eM@R)ijoiY=6l=nIuwn2!e62Mb z<|hG8D+!$0!Gb~8fNObNVv?W*LDFuY*#`7Nr$;V*6sN=%YEI5A7H)%!Ymg_gL}Wb) zsjC_U zZWb8nRqsQLy3MAYpKf<~Of zwr*R8)L#H`k~Km_@y_IzI@MJ(X!r{8v1O*M%bOC~W&??ro5-J*P;CK1niTgD1Ioq5 zWMTx4W<~^-P@e>Qo4ZO(76{y=7(fw|(aR>V-kgY8kfWzO5?CCFQRKSCRp!hMuFA=E znyWIa5-h9z_MAoM4IVa*{R+>Ag|Yd0=2xDkU=##^ilOL{JEQc?$w(&MAUO{Um2ev@5GU4@nFdIgY|z>4*W=+X$FT zP@abR#KFwG(BS1;3H6EjF#tHa@4<>a=?L`rqh|Q&nN+li&2qCt@9^VNIP?js&@r_HMl>YTRlI|klgu_LZG#`U$$_KSH-)gA;JC2Roqom*yX+|N zP0edRHB=dLh9u)wZNiEvZba~QNX9DWxEYYkFTJix%uxbIwJDBt+~@+O*<2yE zNZ4%vXL>l&nNK}g;~0oYBM>^$Lda|bB(5O@(k|KU(%=(>7VUPJ5HxeB(=y(K+BFtL38DQc@e4_=E_Pg-129pP04Fo3qh|~#~mP5cL z919Wxll5+651H}=dz1*rKqZs+;+#8#3S~NARjjaaUJq8_@FJ|b0?s!ERx%Cm0jpJ@ z3PsEGxocGjVz+d#BWkjaGm|{+II|pkB3wbn6D3|DFxI{PV*qsg7tq!Qw z3Nhfs0WGslf=4lSZnSoE;{#E}y{tzn?lCk5X`KGevH`!#1p{AXtD1rozrujC$PKc-1 z#7Y{kQqOXFmij>K0ChLLu*xCHFy5tJU~*M2wy;*DUepEVsTVP_=!4|PTwT&$1CW<3 zmpX-(j@sve93z|{=v`bx04aoDGYGAyqIzfdn zIk{)8zYuz4b_miQQ>F#+CVbWLUz8BHaS;sE>o0T(Mdw$~J55%xOO{B~#TZHnT&) zrZ;s1V(_%(24GXs04=2kk_`^=R#U15Ryc zbRFq1M88@CZ@dZ?)-jkm{ckfmQ2%sBonnEcm=%SyoTf5xo)8=NdzdJ)77|bkQX=Ch z6GcVRMS0zg=pWV*{rM~#*d)MEPuaTyee4U({R=GPeJJ)^9;uGnkTAypfwVbh397~8LD>NR;Y1Pi!@&@4R;eU&WO?{q#vR$PML_V=%I9L)^v^?1)9fRLjB(A z&TLna0?A{<_#SP^Jq`xL_!{|l5TaU=9n!>r=E z4+e%n#%lcTO_{S2L|k??M7+wn5b=v;h}bS>6C$KY4cCGqod<#vA=*KgNF#vg!OaM? zSb$P`FFMeEAfq%;LR>VIu*5N^Av9`M@k<3B?Bss$kl%bZ)JOr4LD`=TbM$gSHIW@I z0myk`U%?R2T*T4}XdJLMLybX2Uxj zS`CYAmrp}4GCLfP|6Mnw8d9tUed!s}Y19+Q#N^@9X4%3@1AR(!%w3w}q&83JyloWzJ8UX+TDHE@vh~}vY>G_R&iXZH_k$$LaU!7x!=)+*qoHwWMBFu4 z%V6YCY{sG)*Zg@nr0vb?+-)L}mIR;{>?upR+bq1HMhG6nV}f!tYT)4O0WOi~>_a~! zeWHj&XNH|2-w*ku7i%nKUCY8~-a;-&iuPx_F+?ua&n4Eo%&`o%o;3RIpS7$zQv_j> zY&#zR-ru4tIXPY4PlPq-itq)g>mb4d0yjheq!tVSBeM)2!9~8NSt$p&$U%5qq4kK+ODM|O$an2fBlEob>s@#2x)i;I?x=TpJKV^Q1^Lsirm zBNH-s;M(uPoOg$OlB;3%>oHx)PC;v%Uo^K`!ofvRV*&{%Y@HFK?dXT z2Y*DEHwN>_xT(EJ&baB;&59)h)HEPCTo3_xC)0!AQ6tmz-_jH9Vt$Yd-lzR!Q%UsV zd6iZ@?IL530*eDMXsj%H)N@gdeE#&m{ol+4f@q8()9Nc)t!V?rs$%|k{`_~>9>Pne zi4#mjKMZ^l?j$A+Z82`3VBAM6`nu=Sm5(c_75%y)6O&xTByWj{MI=#^4O0`x%sH4s zsar7j!}ZMj)6NnBkZx#%XzJQ5y+H#K4tOOb4=74L6cqD-Vs0qr!DfBItEeYPx-O)Z z(50+rRZw&rEfh_;13`#!WsC)sOhyH0-a1QEcey*jt~=xeZ~G@f+)q&|`U}cSO!kL4 zU#Z4~a$~8ANjZ(e?5*Ty4HIvUF2bN07jr1Rz z%8X=TEj_3U$dIuxuV^Z5F#PS7xVGE!!B~v?4Qg7kuw>E3#L2TXCsQ zE6?$JjPG5$w4(97JMwd2R&3Eh=Fx6@kGMS->44LvI_-UhuSDbS%O3%~c8+R1{#i?A z@MBS1Q5Q-}q=)ubBMdS{s2XY8EYgUql~pE@1v-{1Ux%%#prgz;ta^wOR&I!S*VdjS z5k7eLQU&ihXa)7Q*}4bsJZJ^oZL=88t)~YkSlEL6ug$u)!U#Kpb*0>GKn9D}Oo=rt z6bY;lwE4%rU9<J~p9t+qkGZQI~@T&o7cMnBS%$U+9}pp1fKlZ9-UY5?s?(!wXPA)Uvy z&Lg3MUPRKrw%ROYh*KiLwO9{pO0pm+EC}kmQ;JDbF08mM_3Z+S(RI(uG zRdQX}hotRx&Yz?(w2mhWxz8hQumF2tr#?DA3Fp)Z=adp-t9a>$@%V`kiZhb#x<1f> z9D>@Pm+*Wv|I0-@|AUlVPZ%NZ4_N)~xV$GW@7+Ig3vJ+Ry4(|&`{M#>(M#4zITGO!Hjk+rr0b z0b3z8Yp?_USQyiH>IUn8e>@u1(l8IONW>RBzX7qz@z z$g?x@v`Q3a{YucYa2#pxkUqRVr7QBIygv{chN=OCLR8;F_7Z)vbQL?1z;g(lY#MSA z0~Q{yUXVH1Qh9zEN~@}{4(WnR!jK8OM%?Qc(F-S^* zMCSn+sR(^vcfJ=IX>XzPy*)aw^dstgNk7KpU-j&5u#_RJ^^9;QTVPMiUX#O8(uHU~ zZeUhWOTZ-!h2NPS$>78q$N(VGtQvDO7QOIN??KDmXNIixudk(ers*p@eMt8$1Z3G2 zqjYFY`U;brCq^Il<%JhM=>hi+`VDui;DBL%S$fM44RR@~6=7|7Iir80>jN2ZInrLQInzhE_;4F^?ze}q& z&(;}Brs!JL6jmVa6Cy5&c>vY7=WUZR-uSF9ApoJKEUW0DU%7XHEdB*iPjA-&ZsG+`$3 zF&l=mht#oo_83CqKz2_@rWQh<^pUbEIqtGGA-Qi-aRYj_0ZB7}F6;L;T0t-fVgyma zQ78d6E=V2*4!+ax{2(AOPHUd1c>+S!dmGrJ38&Ny#1Swm%qL)_Wm20qIn5fl%z6bY zK}#dyaI#WSWmd-idT*=}-EnoqmkeB|;K>17fGBz>Lep~(!^)uMA4~nDlV!o0qrYUe z&44exbdp!P4TfzwS_<)TgI!ejO5r*1fPJA;w4&${`_$qg=viX_{>%=9;X3%M` z8C*h;vTFK?88#V6=k$%`6Q97MYI|dK$WL1r%0r)!)4sS|Z5!6GH6dmlLxu63Z=p1m zC5=g(27|9n+x-a+)m$+c5mD^^iF9ITNOzKqHlRd5XWqiVGq8xH!54KnBS4eaUPywD z%gc&0gSck`6+@Wfw`AMPE+W-%u-PSfQ-1K0*AYfM$0W&qQHfC4_9Sg6`VJdXp0XeU z7q$NSb6FsIQMXvqfOAloo1h|477zu)EO@~E;IaRoAFa;yBc`;Rq5r zCm6HLq}w2(n%6z&L-WIB_cS`jV>!OW4{KK*RZjwl>vWoW-7N0*x5>T*aUpa=XlK5M zgCQObbTd7PW?d{$TY&{aAcJgp@yexoCPl#*u6x9lT@B?>D8l}XVYSBe#ms7{7=Bu1 zC~|xi0}z4LQ;C=+*tl=tuNL{h@`kKz-psoLLEElnM(nzCX}JK5s3#bH2eZ?M^=&X@e{WLIo;lYXiU$Y12>(%rwK>Ya+YT9HGQHP21XT-9rS?T~y z&kGI?FvH{_2d_BG`YJf9~GthqKUji@8)K-~RSjGWFm)M1mk#}q4^|=flZV+$!TLe3@p%bQ91T!Pb}TVyFR=t{R8WWcC0#fbQAa?jas``A z*#Dx$W~voGt_qbt{vCOaH5dX&=WC>*&euqtbqCDPA`mS;%`LlhK2-=n+i>U8HMeS- z)T6};dO&FBJfnvN4zKyOKkv=|@XrVX?alwcKkH2o;q{;YD)0U|f1mBmfA`Pz4i<=L zhG0Jasq>F3f;LS^*hwk-62T#vViq(D9St(37T;MFlQ8qpkiYe$aDh%eX<=QkSaSjBL-eV%yHr$JbnZ%V% zCRpXlixjov8~is9DVFRd(6t3cfB{5DQ^x58d?|>M&@FN~Sn@`YWkwj7Hs`P$NbM)d zQcvhoia0>PL_OqVabdR(Tw%Q|BuD)yqEGG`&@Ii(40+qz=kXrtS4q(hI!0!h8n>f1 z0$&xJCFM>Zr0g%uX0G)YVbzo1$e~fXx55JTE~1&7 z{FN1;{+urhlvRnU#(9K$x}_<`^P28@nDk0k^z~v<%Hlak!l= zLC{b|2~q@8L)*(s^WIx<&Uz>gcWGwCh%#wrWK)5JMV+N%Qf|6?hhjq5l9%8d+ZPrQ z;Yf`IUI@@H$_gNJT-6zf#--5N_EBe%BLJ) zXru8!JPVHWDsq6hxhU?C6jq>~XjLk*TP50rAO%gkpe7>&x1Bc6N1JA>(QC>8{5FbT z6|fpiD2B%7RhZftm>b!1V09BU75BhI`=pUG_G%N}bX8I?c;%c;dO7jS0WbtzH)~wg ziI~lJ7-)m56lb2D0|E(up^Q=J(gW-XRROrwgory6;8o=|QTf4V;Q}_8NIVJt^k9b) zvjHhf%5+v$nKs+utucB}y@tE3VVZq# zOVW-=Z3+<8V#jn~ryY3}CC#>HFiR$b?9mbnjioLM`+n5R`R8HbV&mT#TwH_(Z2MmQ z^F0-r^^s^Owan~cRbU44(-3klwLpPtLhpJJV}52p(q!$GF)V14ZU_QcZp3upCoyj6 zOd53=)*$uLccO4KKwJKdRRZ9IRs5Vxt&B=t@e)+yfu4xglwu94e$;M(S#R{neKfc9 zVN+#-^imbD@lRTYNwHG$mNi5|j2np&You)P%IQkCGkJh&D+tq+JV1OU7?|jPKYj_x zJa4etf3NDhKb%3x#(IKKcj;}_Gd{#y` zIlGt};~mlu?wZnO){%4)2_Q_n#c~#g6pgapWu!K0;aSwaM5(VUPR)dw;s?EcLzn(#BW1ng!` zs5fq0$DF_>uWP-YFmWC}RUsa}ILwE;{F00r|Kx*0Vr>!>60g}9tVj>5*-$_fXXuht ztR+3%NL}mUc9Vr3?)?4C7yBxc9`34)M6OQoW_P8Qfha2|9DAZM05cE!)5B#H)I?ej z*Z#eo3b-Tyx;-N^!VJK~p8^1-ogTvDRSGz`%};O$R-U*J5EZYo5)Q+vH+8Asssg)o zM;-3!;Sz-@6uB2uUEZ*#P1dfHo8{_|Vmj5y}LNu%<3-rIK=77dOjwEo$nW zx^`;nqZgy8|G#D%>!GR3&l~nIQ9h~CGKzJuSiV2ek)R49g$g_}zt>=4O9}TxEyJoK z3k`b-2N-oATw%n?YK5^%8f*rdf;?Rf)(bl5S8x7RDmD*VVI{!fDNF)WGB5;5bpW@7xZKo;D<_Nan4(v)cd>$n;5$BDh4bvX#`8c2*QBo^OUvVhQ$aR~0V6^9 zvwn*FlH~coGIm??M*6nR0EpM?Y#R(S0EEwzpdo9TVS_N(*cRq7(h->f*tmqA!!T7E zbfdiP@Ghh~>CpTzlo>$1&^Xs*CSfJdF_X{`@CsE#tHrqnc%yEu$C))$zuuYwz>v^7 zV|~?~vN=Q^X8K|?07^v~1h8znRd-OEQ`9Fx3oDH}gK0tJpPiuOFuCX{uRAypeXT$q{sTkycn2 z>ucDrMEnH%z$~gub!!mSz}-NjCpEXmg6&S1sT7;4w{VVE2cu(Zq&BMH^#%tBS-de7KOYG0B21XoV;c@+-Ad}QDlQ8-%&{CYxo8a!aLzD^G(dNT*U1!E zBN=`U#2qH19xN(IJK81VOg&o9quHw$PM$`~WVEA2o>F(-s&rfM9HE*fbLM@SvVZ7T z001haFqj^*nZ|E)mX_i--SPWHj34AttrF)u{iqz)3ZPw&)2^z2xC*3;xvzrv}5%SDCmi z>*0m?S0hT5YRW~s0FigQ`d44}rgzaQSLt=~uYObMb*mh!VkkHCI#k~tj#Y0)%|K?z zB-*=pPGTKU;0gue#prc^YU}0K(*yfI9MA*1L${K%(wuaE?pNCD1)vt)ub+Ck+^=GB zwhE$>dH24R*T(YERbKbyepR$VZ3!3mG$oaf7;QyffL4l}<+Xz5qhG>#PQHj+M-KgLpo$|jM?3fc-6F=1a)K9Y{+Bv%sok`!yP2Q8U5 zQZS~;Rjcz=rj}^&KZ}D{X_C}od9mw4qYJI87QIQO!_}fYGIjzs-6f5~u3Gg%L+!e1 zX{goFtWC?^7&_V{xoSDf&7D$Rj0icT)3-fbwP_Ho>PQ%Q>Xvjg^{H{y8iN!N+I7`V z%8?CsG&?QOYM7)K?W#>aT5D1k!aH7C@GEA-%5IFA4od(eos91Gixo{=3qmHdr%V*x z*{dD@HIhnkppn+GxyNVcOQN$dl!VvMLV4|@i*OO?{`TipM=s$LB=Ki?#A88#*2H0v zPqPr&DFR{YnVF`U3H2xzUSJuc!wlhwZ|kz`fdUD7jcQ zp?Gzxu#1*+V(Th)z(qBn45`angpEZd7Hm`8S_*@db28~!OhD~LC6y5$ODR(q^H*V7)nn7P(fi(|l{(@JmGd)B>8oM7ENhOcBLv*lq zhEmT-eBK191VrD0n;@G(Dw4@Y1MR@T6Eq%w{=+g>rjWx=c|T)s{v78_Kcs@6=d9;O zEdQb+fCWFSC2}%hV*y;NoJ`3tH-CmNv{Iqi7!QmCeAk$AEUW7$on)64GWtBi2Q&>4 ziw&E_^e0#^&OEIi%{i^jS5nPQe+e0ZE@s^>%JgxNE}qLj+x`A?2mk&v-S3|{`1hac ze*Y^6|NbeyH}2MemV+-Bn9f?(_)FX?J-`|0^ zc0L~v-Y?$!%-9;o?>(K)+!{K~Z)KPdD;aast$9?hm7Lcwzrk<6WHoG7H7;KCO(C`SGj$IH^;<3E~H| z4RrodPy}A0HQJkhoCk?tK)N@7s>aFdpjkhCeJ=m`%(+^OciyIGqQo@d*=dSrc$88lf+O2q|NP z%=+@S`1u>Ooh+OF5T!MDVO@g<+bZV8I%VSQo45Jerh_y_aoS?~ME4c7h*H!Y(4O@` zAfJQNbc1;7h22OpoKHWbK8Q{=Uw`JHU$a!|kI&_2yJKg)F!sguB4dB2{5{?BD_}+M zz`{3iQEW=v&fE9(-5dChY%=eT%X{PU9_td06%Z=vc+=Slwo?^r<%#d>Ad{AqP>GOj z8%s~TF-vF5A~3c%hhG$k*=Z$MD(k7WAsvGPqHlo%NruQ$B8C18w>ULqN~Bos9<+j#NFj}PBlt3M{`5x(698g{t5)hM zx|_foEA?b|5ec}g_q0-Vv>m6&YNa~zzh2L$V#O{jKT_4j@LgRP}Sh*R>?~+tIU4!@i@+yGcl$gV*NY+D{W$%hw9vye^y43 zuh8WUJsXszGbDgghx!Jr!(OK}Le0CDQFAI&w^kQC+o|ln{ByLHB<*K)i%9(&XwHm= z2onq)(_hu8u6&DR_>TzP<|LKajmrcF^=9ErD~*vG1{lpHNC?J=gF0F{ds?d|XC(-* zS{g$2plfo*3*Hwo260pc@Mpz9iN$vsE!&+KPk&U0VCfKER3j7?z7jb=xbgRshjGfw z?~YeygM+{U<;M^Xxp7HQZnFR34=-MRA^9 zA4atZBM0rwrLkk+P=N82Te*%>&UuIPI=8=+Rb~-2EspFFPT8?eAeIo!M*|#ZAbjmn zPvh((|dhDCqu&*3X}pPWQx;WT}*Y2r_YD` z&uRto0&^5psZ(m+oA;)F66LCbZVD>|Kn)_aTd{m+^78f(ufi9qb?)zXr?+FZ z;Kbu-MIhjp`0v@COX}5z?eQnw7##B^-6yDV;Q}3f;!t{<|CX5ZQ#Rw1+mxX%bT-D z#x6;X8B>TyZYDHpY0=@fNdolqVWL>yfp;NR8jbx%>Bi3dHI&2G*`1|iO( zmS#{s^yzt$li$L#PF256@3|^KS_i2g=Bk6#Z|ACm)L+RJ7pu;c!tz;ip}RWai8Eu* zaRz(;!t4%Sex9Otmd91J;t{jM>@J80K1dS~rzT%hZ`>mt(>T8>UUJv;3jdz=!HqTz zl_Z1A+M{wPqyUVnxs3oURBE;l^bfvxS)kbPmbPn7n-kcto@ z_Dorj(<$lrE))ZfQv4rF& z83Sy!pczKB*^bj@WHi?pCy7|af;5#4B!W2Auqv3dG@th2tn-7IMF6yWL;=+(bc6x{ z+_X=udmy#pAa4RN3ICT_0f|o?7cZC)eHSc_8?iVQ19ce-F9Z`lFJu3^VRDie=54EC z5^=Len;Iqyling^IZ8OaPe5=0ZwC3%UYgfS2?e=WVApOt9Ub17h`@t;jEgOrn24&CGnc)dD;%8 zefYwsL>J;5)(yU6x#FdJa|Bo=(h2>!xHZa(9)EJERZC3R8KE_dg4(Qc+@NeKn2QcU z*93a?Z()6V0gI1=!Jwh`cqQC~GHtgAI}F65NWk0P8;;^(jP+tPyyaa2@jCDZ6tN*= z9H54DEFS&H3xS$11Ax`oT83#E^3<4F>*h`iPP zmbD7`r5~#%#e$5rNy=^Z?DQSv~1aGNtV3C*m|-hTQ=S>i<1CNOI?y$-Rf>tSIaUusJ(#A z5@Nssvm_A01SWw5f-`Xf3?eXuHJB|SyPW}sBrxL)WX1_({Qdst-uLQNb+y!LgPr+C zCB43Hx$C*-oO|xM=iFJdt;-M%4#DP7$v5LiB?L?Hc^yif*|Kmi<<^&HRJ*jHt^4BCo!Y1PVQkw zO6(;A{81BxVa6nc$srlop@NF$=nH8~FXI7Vi5lYufaKWv_5(nRbl_&5j+Qt+C(U-C zC0umGnxrB)J^?}CO^=Ih1ccI9f^z2u4c{ z0l{c#MLaIfnfw|pISJEHBW68$G2+ztf~?eF#7uCSIfQ2#zWc?o)Ft#6j99pshQ`sP zgkwO%Mli>S)6hUX5Td|_9WRrv##{c4R?5&iMIU!+p4rP}sTEK>yYud@)yC*Cj?cLX&W%Mg?PPGWCX!NK1uc zBBs6={HbH7B|CsNd=Wn962TtFZ7EqCgHTP>?Yy)GDj-pdl)SiOr>*DwM4(Cb@W)Pj z*`vEv_TYtdIiz&+ok~$^4@@ekTRYiGN*IX+{(*Ae0AN_Mh>!ucsaR4(=4Jp-`=Sh;rjH#kQ2FVS<#kL(0FJ}3~ z3B^X8Qept79wcIR5cFT#h|8kE0get*X{;fYei3}teYzD|;Lw!rBxf=@)tcxm#E zum;vmsLiybs$^dSwhwft#-Bte+wb_)_|tgSsqsq)KSX#Y;X{OHxd|yf zV_xdic-C2v|IOY1xK53C`%f`PH}A1{j&3VPjZ@=K6B$rog8wYBfd8~YU2WPvRG`=B z3=y<#+OQBD=bZJ7rT`#UBJ!~GK|G7amVn}hQuTG^G`R*R;<1AXw^R0!g(KdUEZnK_ zT}WM8rPj))ijz*VN8=5}im4_;F0*8qjtaK8IszVYHf9X((5dn6EF^eha}~nQvhZ;k z$vUNXwAC}W4I1XACIu8?DL|*jD|*I7hqtKmRtQUu?$mhHu&@d0Tf{ex0c+fCMk!xY zn_37jSiZ3b+orN3)R9|ijEiCGj`%dqi2=KHF>Es88=_-g@WLYputs-UYl@JJ6 z(NnG=J#GAJwN^?rFOa4^xg?Nc_pMXoEfO2{rZfXEL5*8747Zv#1X7J#1oYM zXy&3E1hB? zJwrBvj%_3%Wx7Eq<;iB!iyhZ0fv=|m(sng#IDO+iglKR|WQWzO=cHK?)lv{I(!)D> z2~1MmSiPFnoCYRs+{1p$tzd$GYa}$WinCB1n7Gjx-vCn=?c-$(CTo19OJG_SgQ=@6 znA}X)24=$^zkmh>Xs8F%0FsZ1t88IpBle9 zJX^hk2|#QqqEq9M&XFLr;GOJ8p_Oja(O^shrz?nPrC=yPv{JQcf{-Z(dLxPr^wAib z887SLr*`}5AhAhGlqky~o$O9)VkF}#tkSF~!wi{`FLict0?IhWt-BK0Sz4MvRgv$Z z9r>P>wK?fc+QM`|ECXv2;KS5Fj5@8UcBSZ~cxv&4nPTF=IigTM;e_li($pJg&{pl+CIh+CSxvB_XbiY96RUriR2o>G6r)mU_Y#2Gxr z{>YeA=@b(td1v7?{T)GuU*JAsbFevkk52m*zF|TXSku#pm?k=Q=WZkUnJTg^nl%o% zjI_6RRG>v@`R;+eeDu{a{qVjSk9yw>>;+3lWQ%gb1;R{ZLBn@vPPjm5R5D9zA*mR) z#uzCmkLsZ#^X-hrNlT4!>)g~V(d5QjOuGN?bAk8+DCUF$i!Uf`l3&aT*2!yZ& zI$@k}fnbvS|AGs|#~LmWA3xy&;bv0N2^WYHE)Y`xo^XM9rd=Q&(}XbFdpPG@Ai9$s zT@x3GZZG0#hck0@#FE)OA@E7#@Hlxw^ve?>iN|aq#JOxB(9E_c>~DBNNVgWE$z-=0 zxA4&&pK*-t%se5qT_{rxrlP3gq$aO0QvglOIu^Yu*0Eu)&ihf}I0KmDB|BX6K^i#> z${1Fpq%pq;*(J7}te|FF686hcv#Hko&QVjRZ1sCbO>46%S>r z1=-j0(4z-4N|64~ED$PaKzsLNvtfW|EyI~5yUIHo1=eJE>sBsegW0TFghq=tp@vkJ z=}J*Lkdo$A5OsU-W@#^5NS2Odonw>qod!m!R#|$XMo!Jjy%zLsHi@ds>TjsgwRQf!DjHuux8*(ri~O_+wC6=DcU##T^3yq%$4y8a z`S6@a_+!Gg5ta~KvK7^OZ@J-lvsxX9DGk_=J&J=(E_}8k8V$)~28!|yHfGj9A3$M= zgAK}BbIM8laiAFQVB^xUex-Ei!(`(iWw#Qf9c(NCv@4fQr)XvcuO4L&NQVX;Wn%{$ z8ABuvHaYdTJ)60O)~?T^-sH1Zn3FTq6VA$}1Op{!d0~f?3dt46u!|d0GDr7q)=PiZ z1TK?DbJ!8Ok!7>PPF7m!Ey*G}oHusZNeVi;!wwm=aoBPB(AWh#>^Q2K>#$=EQr=<5 z#swC+oyuLS-9~CDJJn-5>{uQwZMr1tldHkdfaB?l9;ka1)0F&%acCf;F3BXG(UfUP!YC1XK5R{(6m3?_-S znilq&I=x|3BCip{>BLz7=zuU&+yoHmMNV?eYx?BwP;?6ANmE^>5-9X$B7M2EvpHnkoHKU?W&5Gf|S&hlGbkIP4fCWGWGxk2JVZ zSw>0?a5b+s9o=E4!MQxJoCUq-T*q+ONmD7w(^Ps?haCh$gIL312P!p(9lBJjz%6Id zEyiKTz}0r;wg_4ocCii}V^?Fj)*GrOxYcZ^+Q2O>VmIT~F&%acT#3Vu2f_jzc49^^ z1WUZ)y!WbEP^KJq)FSvl>-I!O3|hl;r2~}1P5?8r1vuYAK+Ay@e3l{Hw8IV$ zDTkewNU_6CBa+4>4DH3mLo##@J33cOb_PJv%<(mZv8}uU9Ci?UQr^5c?8pQ`m2qr> z(OmAlNM7P@$SDq+jFlY2VMn!#-OV$S2R zGd~E#j%oL?9CkE+jU9FxqMUcw5!@sKraEq3;mx!)9)M=;<@hBk7YT3p=}1n7D4d0` z*~K_k89VHFq*{Q(PLuFv4m(+AzHK;%L6>*fF?cf5aSl5mXUg#T=ngwZ*oFoGUn79i zMHykE?NW!J0!;NUXP@`<@H$3+XoL*y^y8HLniFT{KVGR)?KjZ^L0n zJ>wj9vMGlh-D}J-;am0os83dGsD(iicUo+rpANc$G*L}^&A`L6An8+d50ZH?1aNkt0xMp zB{mXEWIExnv#)Z(VP}>f=f|IL*fBS$6AnAbdJ7)Uj@MzwWFs^qDYszfuwx=ddxxE~ zZMT@Y4m(}~dGKE?p@gR$ihKY2tH)uG+lawe2Q$T{rT^cah6 z_3d2QlQUFPivyUvPtA4G$syFFom*s(;Y1xjqfYyqQXfH<77@h@M$*f-%YdpmjQ}@^ zKCVp$nxkstFwd~!^3(IuBsnSzDmS7v+IAIr=33(1bRdCex+TuR04+*vSqX(vcSQLrx5Y&8^I2y)2!ENV}cIlUnsK$2GpWB@DX|Z zbrf7a#Y#aDl1!s~X?dli^e@^n^NA(VUk4?8hYPCPck<I9v`zDCP0d*x@b`D@b9cf}#i50Yg!Pd{^N&uK!nEDA^DY+`&!=`l zhqB0OQPLF-pygj_aD!C{_;T`RnMGM(KbC;k7IoD)Qvsj_bDF7qIiU7|vNiUb2WHya zAW-GZRE_P0)XV~znjfe%EKOWpMp>YP9Ssy_%9@K)qbxq1bg7PNC>DRzbg{tPNgMp12 zMJ0GiVXey-?DCGKnX(0W@jN4I^c8mQw`^>zRgN(?TB1YXkFO;GFiN z9YpN(9&PU|APO&Bz4@%jM?VOtC5K}1w+;RoN2IU6P$e0$X52o<7NBa;6Z?xO;1Dzg zp$i6FFzAAdU9iOk*SO#&7u-t5jdLaTx~Fjh_G_+KmXN=4UQlttm4WTN{Qe9%=CW;BJb*HvblW7WLLIra=~;_k=2M(KS$`|E~qvry$}# zL0$TS1u8&% zR2WP6ErqC9zpIc{z3(Z+Xt5Hw94x>bSx=>6@t>?KbIx)zi*+;_Q2Eir=mJcTW!r3b zT^DhFh251d%E1}*mD5OI4!R33%7xrzb=XHxx)-H(7@Qw;mPyPa0}L!no|51LwhCZO zcv7VXS-6n?QNfk>xzBcG|jnZvb=`;C? zwzfi=2$&eME0jCq=-Z4zA)qSVm*o^FJ9a&zP5m`+@?Mer z(+5kT+>3bsYgs`BWxbQOt525)a;T!SrGL`GPPE!R{K%FfTpH$~u5#bcNaCY%ug|i( zQloOVN7uZSbF-x8%Ee7LaZ1L+T7UvK{I31?8VB(Gkx%-AS|M!)*p7~ z`$NlzNq<;BL>V*1^%$q_NJAo*hD5FuLqcb&ry)U?J4h5#kSNUCP0pIF848L`zhn#w z@m~$>28%p&g3$CkMwQUV;j=r+nb>E6Gs1)nmx1;XBwFe%eG#E8v1lps_SW42_5M9xmSjsB( ztKzvRDCIf)B#GGVB69MBkJ#-aYWq(+C4(e(c&PLPd2L^UMDG?z&3pm#6cxzFUc@{* zv0moWm?W!7g)!EtB0F;h>v$>~=G+=snKggKK;kEvj03dMn3@w7EQXHf(3W#~)nlyO z>kjS=T*(=A$sqA`V2*8$1$j~ptwROkSG-pcgpi{GM>A1qiY8Z~2-y-@jz*1PnZQ~X z9f#oYoirARB0}{jyWGcEpea;Sf92JcywWC$^j!(}2eu{6w}h8qyZ<>Y72fF^;iVy0#BEGO9JcVu{1&G>1Qj73}i4wBnTLi^N%8Ic=0roIuq8D{uNx5=*$j7zOD;1m{p01rn zFCZ!=2kWAD^Dr1LkJtzPtnwOebeaiFaS50FDVB<@}GsBx6+j_7wTrx%%3p>AH z=l~w~giF{*otY6F9giQ*Gzl|h8}XFhb9+{dOul$lCcA)N00qJWw1JKS`o?yNFKQWG zj~ZEXOoP`3ndqFW`!e=f>IfMD@-~Rh*{&t+kV=h#LT9RrKt(!81Ofx3$G(zZMGWBu z`zFe=PL{?Mm4UwCCK*DoX&R?PMLDg!lWR6wy}hE|?kSUyn2Bbc7mTpDq>r}UPQ(44w!cu{QPM!EVv zWX<={P^{MX3E}{TCM;1OoGG9!E%&P2u(K?orbl{HQ^V%=MRy!9BNh^C*Lm9$k|-!V zbacSdX!b}@Q(`PA-~}FBAQ?wM`;6hYytdLP3U-v|dU3=7T6r!(pqXH-y5 zNq_Y!W`X{aUI4w2c9*oevqK=vj;hlms=6}wPih2ma00~(fTGLNL-1VFw8S}E-PH0< zfgf*}auE=KgmHa1T0O3h(sT*<40+U(9r)aMRTO%9h+B14;@ThwUU8=_CF9;{(=*B+ z+E=Ln)i;n%I1?Og?Ffx!z9Yi8zVwA~vLLEpyrq9sd3FCM*tNeSx&+Oh0S!tprx`jW zx^z6c?@11K>W~FXrBCQa)WiEC^Lf+$j~&|LlRWzz`Y#dcbi*>r{i1yAFqf-s{Yi&F zXbiPH(_Ux3YuYhwEQUFiVIeafk)yDVY8nP=WY3nqY9e*~0aS%<1r6&kjVltfV4>81 z$$==h-H5$Ydc$70*DDTC-Ckj%cEIf{_Zp9iIn>cYYWB%stpDO-Z+9;!)7$v<=r$Wa z7kfLHnj`u1qBF>4dV9Ni3;I5%B&sRObv&^v$YgW*&O!%=r)Ui;Tq61eJ*|PKwR^cL ze)$1_l|(%?e)}_-#>!FC-}1&(Y1ni<+e%Xto?S*Lg{@Kj zMid%MhZh+i>BrL7Ss0Upja!%$I{!~fW`i!Y;^$aKmuG{J(OmLIDLhBPIb?UZ+@UB+ z2Fey_7K-%V4rHt-#2_rdKlxAd6spYC{_}8D-V|~eq%zp_@vXrvG$&JD8E$%ec~kT+ zw98sbg&h>^WAtOaS1dLDNj3goX*{y`D(IG65GwV1;>qCd)cy0R4P}+SnZGJMxLos|p`R@eb9^g0z1I|yr)lcUGXFLxCp2NmHRoP?;EGPqobiq}P86>X*J0HQ}kiM;6yocBge-N5mmk zhoduCx+-e$f<>d~r)gTq>i?iIf<6jyGuID>8($sveejOTg-6cx)_p|Q< zg>*o&rB*?G+mKPUwgJxdi6$gC02VE#xndx7@ZLsKrk(gG8tR7qc=`(lswo*s>;OyY zTA3TuqlF?HO&cWG&Nn)BU(~%{ytAL<3BMC;FP|#riJVCWV~pP2v^MI-v6j{$ZAz}9 zK6Q}2d`4u=2>T9}&lWp_E*(T|2{Gh7GJt9lhG!fI&mJd+U<^eROz6^9-~e1xcD18R z)$CBK0jH7`^c}yqHt}ffsUiYC7Rj$)LJ-+wJjCMGOxUk3l7n0f6A(Ct35U9d1==G^ zRNRF-%cok)>@*t=c2@eRd%R4})C<7{0WlNxSj!~r^Fht%!JrR8+2m@8M<+-B4cMIl zK$(r5ji0uFc{NqET@J^>vjIVLRvq@B_V@(X4h`=%O#^2!ct9(xar( zo^nTy=1`_V(0$Ny7SgM*8dhLJ;5~@@2KtjZKFOmar^xnguY_U$HWO_4GErU+>%bCx ze`Ujt{2iW99=)PKH}!`bwjW5|J$^;Oe|_Q#ILW4Py$%AnJQ z5=oRpo8eM-2{S?YWC^cUQ{juKqkOWGu~R%b1C=w#>+C2q9WE0kcU()!ueess6^U2a zWaCE17@U^T!as{`YnZ6?^<~K7WU^2ZLda#13iQ}5#(edJhkdom8IY=GDV1eyhBhr%XtM8zHloBs z8~s5WKwUhojRW;_QkkPr`sah;S%?Yc0l{v|2E#(Q2016LQHOXaTwO>i84vl3(u8I{3H<7vcOx$N1fX{mTuVt^ zI}m17P*P9iiRBtkR1=97z9u?j#6B66Qx%bVmI2{#1Xh6d9z+?K7&50mflXF9D@p^8 zZ2|%2fOrxTh{JeeqdgNkvg!EQBkii(!cAjPqt@UMZpFSBWs8X|T#A+sqD zRH+J3UOXAQIe&O-P~I4x)H(@#pXTPVh}>x+^2V+Ccs9svM%ylJ1SQF=JIc?f6p0ol zYBO;RZmwyL;R>e}0v3uBytt*RqCnAXr_@uBN?0g;BVPdt`#~EzT%sttBYee}#P-{e zj*W6tbMzLH=#%1+rKf> zb6uYh#U!>wpXR{Kuwc@)aZaQ(x8qQk^rx%CE@h2yCGL>9mRBi6hhFx`Fw5rMo812-#^+W8~8W z9fFWh1{!e0kM%F5c7`VbvKZB^P7Er@sZ2YN?T9M*K+lB=Q*SCTcN)?K7@K%?dKw~P z6H25hO~@=_OA?99ERiQOVJsb>f!zetr9eAV4uCdO6iHgpzfD=80jZzJO?oCC=)556 zxd!HvF&&h~;zk;>@ygLgOzu#Fs|S{dSWZF5&&{{*oShA1TWd@0VHT~wvrNi?EZNdu z>b#sl+jU80U=CEOEQ?1GYaC`vl^=6*6G))yCCe8Unb~A^ZE&6Xj(Mdv_X6uVRWr+; zOQ8-rt(fjEvV&1NED4HReM{vO=5~N$DvVV))~jr~$KqU>XtW1`k=0z4UYaee0=|j~ zc1zep*>9&Mpoja5yJ=}Ib2#(L%pKV+klzZ1wf1^7K6a1w_n6`fy;oN^=#WxkO8hEQ zL86&9S=FU5v`oi}CDoNQQOC&agNgG#CI^oqs%UASrFzGi?Qq&nW0umvQrykUnH)wfStB3tB4+E=)Q_QiVqqs9WC zoyABtOZS3vEERx6Tc6~&eRn5ATrbaGUSelkMMDK$l__F12W=jw5K0T4*2 zYD!590$zw=WR3l6)K-nI?+esCQEqO!l8gxAWESSGr5dwGSPc{8q*UUaM6TH^;yHh%?=Vwk4Teq@0>88f=H{BR zl~ty0I7mdJj07EvILm~>qSKRMUL&naa9s!k<^`h^{LKv~%*I!D6pL?02?}fj_^Tis zl>Q=b&3TP~4_Ey2eDSq!6i(POui*kM3O-)RZoTlnO74BplS>Zt&z6D(EPbAcasmP; zAaDW#Cm?VF0w*Bw|0@V!S&d8+Tow4=PDvF0>G3PyV{$|p5d+~S+OkhFhUPq3lf0Oe znG_M-b;wP-O!P+jzIXQU-CMOz%kS|k?)d~lSBTv8eTiC_cbnLfiDpglPTuHJBQtj5 zT}jG#i8LJtqazuUy!CViLZO~8GNo`{%zh}hL%|k49La63`Bc3Ju_;Vakw=oyGL4^* zWPLWXcwfz;iI7#53R-p$50E4SvWt@dBtEBdM55zG{5cop3$j4_x>gV{W=9=}p!wec z00NkV@*w&=3osJl%aS1_6*IASB{|6vTLV`IvjH`0Osz*~k8lD_brCVwYAx|}6}>sT zLV;eIohe;Y0mzRuio|FffjFQ@Y(p~&@}|givk6T|q(?$VMmS~*z1%9BR^%jly2-$p z$&}>!wN$2IW*oT{XCt$$MCQk`avPI4CJ@|zg~>o@rq4Od57Tc!0q0Xir6+8rRrJEQ z;A2x2uA+=WzmrH-C`6?s8D|@tm^8}d)G!LCS(ro8Z;xKB$^ku zY@cWPgVGEY6B9UU1r|Q=2SUP=Ty^{7>h_nHWkHVUpB)uqpNYbuoQvN7plBU6Ul0`` zim2o_Q_CH!WDjcUrFjtadO(UdSvI1fiXM5;riWd=cRHEPJHNF&br;epTeOg9>{!{I zmaVPKeIK^6XmJVcNS>Y3Dw;%vora}uuTq>16`2THhg4yz12(Q~OBDvTH+o=`swiWI zul;JXJVm1qxrUUq{$SJQFw2J4{2>F9jMWbKn*+lCAcEFQ%$mW{0!`JfHmr~FP@@Tf z-r&@j=S}jQIfx}j^E18XzhktS046VRSpRnG&Qx0LZx;5Z0aG-gQI;$ER$#D#Mqq}f=)ItSVR2zQNb_0I&ia)IGNa(h!5Gn0}VK72KgT7pD1`kZ1RfN+-3<$e2%D zT@UC}G&Z99@ZhTSdi=I|J=Wr=kA&`&xw5>3a=7WO&?q6j=~s>Ztl+HpNAeh<3iL{j z#5cn#&jqXAkC@$&$s}1&7pjVx4|q6-`ACr&lOP*{daC1&wd@wE>ujaEoN>pP>T;qw z*YRnv(03SMGH`gRgGn3JDLNl=TI%2+b(O{9hNupfDG8!es_I@xb*hR{of-XvB0Etn zr-|ek-{QZrz=dpc7owCE%a&>eTS^;BME4vv)rkqV7o8nK*fzG*?RZY~5t&IsFR7~3#LZ7|1-ycx-X zE@P*Z{M_J)2hj*imTwEOEdw7hb36;4@78BJkU0-)@6qLu9#HSthW;`$O)=&kpP>Tq zgkIKAblc$;z}#9`o-)KD^4r1;YDJmzXTzoGaS4^Ch*x%+w1vT{i3frLVb4K|i^r&* znpQ&eCgFkpIpKkgXU7BeoaTX02;!q;EZZ;uFvYA6Fd^9OsPs@L+_Ri_f*PP0C7l2C zS{igc!zW!HY93$WVVG_cpc8_P`3>HR+TvatGnfn@rr47uqGO6CubTH#!Uf5rg(>!> znWAmQS)?e*eVCLu`HB>6KD1?uGTfr{t_p^fo~v|=DT=9@{MyVEt%fw+F-0SDOjr`8 zXh2hb?U|xT&{?UADKcm9OwkU(F}B!~rhj0cutg`zo8_L|UC0TxD1-N~!1{nJ(EH*M zDCUlR@+DfS+O%><)}bADBpY!@qR^A%)xsV7V(zGTDhOaT{%RD+Ic^EYs9$4l3AVN2 zmUO)rSfE4CExBW72Z04ndXPTMp*t7qGz64HMr8(*$SFtRn58g~sg=noBxrCm`kb8n=O@8@{tNo)QDCj)*BsO0}kuNXRLr0lQFTh00w!gunktp9G<(F zO=e(|1;<@e8~`Uv9oLkp+e!+2kOamD{k9r1smvldi)#il{w}1ER^~{)M%2HxM$UV} zgbX*ai;*^SBU~1}*mm?+MdOdQq zZ-L!odxnxR%S)8PZBHOxw;RlE7FBI4dkpgW--07xO}5UKvSig{)C8?+&;jN z9kY1^1QRk<_REZFb1sGewmxEyC^h0bfaEDiF(ekQ=MT{7(=x0|r2gCcB%8&{o(6De z4kNbfs4JX_w$T2=S050`$gs%wzpGYmY)+Hy6e^67?kud5n1a+JqY1S*{%iS>8&e{+ z-!LQY8SxtCc)nyJbvVcvfJ`@c_-Y#H>qF*XbQs`1dY#U7qALUr4-!bqANv;lm36!b zfx8e&4;WSAzVG6-b$ynuhe5eMLp-s5x9yz^`?T0@-JWGZRl`3IW~W6RW$eqJys;IT z1DUV4r@%6@A5ysH>SLUrg>DR#BX*VtI#TP}l?;NgDrIDy{pCp)p}vXhtnPY7%!{QX{#~)-YbF zVIC+2F-12B3qr4{Z7%jQiW^N;e zLf;sSsoV*6dCms`=EE+?Mey)ov~gb`67*um??5A+k5fA+iI}ES(j-a5eVdaofI-X# zKOlr$!X6+pLogo|o05ocASq<13v9_`1)||%smcjxG%!|fRBZo2G<{yOW5_`f19%bY zWc!sU?4@^eapU7Zs3)8+Jp?12bxnz};TXHAPh~W@`v4eg@eD zTi8!mT4s>NyCfc~i~t^(u8UX-y1lWW>mp*92#$jJQlYu2k~#|@2uofmeI|&C-pm*PcX(>)9rCSY z*iMg^AgWig<+6rn>cyi=u?Q+Khm(M|Eb?i?Tru_}kU)m_CppsLh#x2MF&Rn8u`EHL zmbLkMbQZTJ%Q}y)pTc}yjHFn}CXy_pzLfC{P+bO4po$VWfmSkrQQ2?%|Ma4LL4V(NSM?vKs@EMJ~D(qhzv54INoy>dAPaoGMvH3@P_)NJM=) z=7w?&%CXux+ipCh94eoUP7|TnsJAA|?jE{-{2dv)@6urBzNbZf^|O zAAKvUOlZl-PWNG-bG#3`5Y>Q{de&2_^kH2{tG<3vwW`3Ltc)TAZVXArjB?hG1~6zU z!z9nsi4~$S5dklvq>hpo^DRqn@JSu>r5Wugb2FKw@)H}lLlDLt)KgIJgxH?(SyPfb#sy>84mGqo{$Yg#n`)Sm zNeu}@MOq+1)K=L-+iB9s6Z!)uz(gmp<~(_NiPhvb{9oNvQWHxA032e~Ci>2!KX>iO z6E5N>rkOCAm~y-LiK#r$Ba;Md##byp_9iV%F3~O_l6Y9PvrR=~f~v6o=$9azYnlYV z3TKZX5NNEYGP04zF0?~A$afGn087u8vC0(6;#$$;GDhx!TgH`-Z`XnS%rH|nwCg~3FcD1B4h1ASg6p)9P zOxX`7B$32YbmM+aN>x{P+Y$-FnOC4S`ng zY_!m{Pa`#jL6a`ApY?(8=!9Y&S)w(AWIEc<3*$UBFKo>-o)!q!}XB*L_E!SlUOCw!ER4kRU^+#ExoECDU&g9-nCmYiB~mD z_|RN1C&WW9qM($uRSa-La=F@H5Gzto+vJXMmemR-6^yvC?3hP(%w)IdAEOUZO?J#m zc9eKaY@6JXz)kL~=h+L6+Lw`q;>leLWE-4DD8pWzB3BE#P~kbs0{bnqm{2NttyVa- zBGQ3UB-udjG2C5Ko$Of9cmvxmxQ=t3W!=+KD1w;eLoQ%prb?nUu#-)Pm;;pqQwj-i zVmW278og&CQWlGU&nAsQrrVi+X+vAHR^#wAFc%R>!Z^)A%|^Caz!-g9%9QB-i=sy^ zhI(_Q|0+T+GqwRwK7Tbc!A$Y1nemD?_z#E`-G3?H6p;t*J5kA%k&>xOPM!Y9#WJ#y zb{WR3u8Jt!cUmr5r=^&$A-0L7l8aK@f01*6oRHpo2WR^-^*}exXP(C;{?ZLO@}jw zAIFWozq_ci9$HkYKU`F*|GcPFM;4Xp(~C;=nMI{~|k_g5tB!kr`?7j__tYu%zuT%>&2qBEnA7Ac2_?`=wB+w#}}Ji6;mndog?A7UE! zrc7z6cMOjnc(Z%|(QNcvZ`S)yTfI1&1s5aDxHC3yKz?#Dr;+@*R~a!6;24O;{bTv!uWSE-Y=?GYkSD#|V(g>=o#sHBunUwUevVd3 zU@R9(|KO+CwBF6N*W?B(9b0E#dH2@YKmEYle)!op|Hh|+=c!`R1D6s>bB(t=z|^qx zk66Vp@4!d_Yk{qICXsI@GPA(7vQ0$+tX|UmQR)IFe9^;9jG62_yo7g{K)UVL0fprb zuuY}u7K%`U*tr_t%IsU3R|hinu})X6vRT!nE;{mNCUDe7x}Ug;nxV+_jvz$EuU46t&gK5F!}Uj_-3ar92J9w{+b4edM!)Mxa;N8-*D zq;)!rP3f%UAbRI!wV4bk|I7JR5!>sO{wBXl%BM%}q>pTm2-2m_Hh}`jU#8L-;3iv_ z=#eGSktJ9={ZFC8VXBV?IPZ4mw*ZZ++nL`2R^0v0{0au39>6uotl2t&+-(l5H4diI z5ii-Pi?32_MD(b2$mznkALjNg?PT7FR?L}rfHL%z`d&s5W(KaXsQ$v(kGr>fgj6K&&w&uIUC;YegBV^T0B>Ev>YY-%cU<-AIif&c|K zEk*W^iX0LXTp+qO#t#hNysH)oSKC^J%3}{#>AX-&TpDbKkf8L<*|jnW5?cNQnk%D!7qh6KtoW0T`+fnBV|Bx9Wmd zQfH_CbfAPLfjgDfadu64r{GNOU!@IzGM!HSq4Q6U*hxkXLJR_jq-v14Q{HWW2=CW2 zjX}bwUgQqOg7AV1=0czW*q0Yy<4_VXh_#+Plt;z;asj z5i0nZ%xVRf2G0VnST1PmT_7Y15!XR`8fooHEypHXB*LLhOS@1(8rCX0rx(g^L&hmC zvJBybazqaIE$s&R-9Opqto8>F36E(7fCKlphdnODbkW~vj37eui9xnq}In>U$s z)5cGsQ-)hds7E~Jf*uq*hg9iG>7KD$cGL?CM;YDR>SFQp8fL`8gk?S(h4h%CqN5VD zYHp>F)|Vncq=99~)=cvn7@BB4qmw`kQY=)%)>>C0835P=a_M3K(n|xS~gc65?8P&s$*eHcSTE zx~BO1=|rg!5TU5_Sl$nL3_TsB{ZFLTFv_rGXFF}8SAz!t+LVV5y6Bqgb+)#=m*3MaEKRxiFW6-dsPE!c1~Je zG37$;eZvJoq7n$s?7rx%!gGRW*5Fxim3EL55_#-^$4K@gHDv8T$Q^6AtlH}xLW%&% z-3kXw?pA92vv;R^ul<2+=zz-C)r_z1>%eA&CX2TgvB2F8Y7DS<9LFgblj7pdS%H~5 zPWwtAO?w1!+f>jhuWfBzG*@{8I|dPzHA-+CMjDylm@*KF7@hT?k`x5A zJxh^%a%eyWu#HjEWFq4lVpY$TC1ohFHX5`!(EX06d4=c_xQRsZt?8Gns_-EmfQv~2 zHYW%UF#lN^1hL@ia#4Z~lCYn|dzo|;f+Bl&%?2vhrEyb{;sfzpS9Irr=v&AGnV|Rv z_rVHv^S1T{BoaithnUKDMf{MQ;H2(QFEv;~v}=Zw%ZsnGLbTCciT)}UJv+{ng7`Me zZ4xWzVkOV{rc{MSs*c8OXF7wfrUc!5N^Nj<;YWR;VX%d|Jn)7)XMA8P5uT;J=@A7SE~g=kcs`pFSrDF81&Bd=u|qmU?~{&r_-A zZ}B{v%4ccl^4UcAU@G3jJg4*7P;UPIxt8Y_RGPp470=&I?QThrX`f8hC0>ietCZH|A+dClKH)AFoieA4N= z&kusnrtBb2|QA8=Akb z-q`&7(U#}yFAReFQu%$C=X8EA-_-nl&F1FkFSR_smHt?n>YpF+9HyTCnCB;adBW?* zcve4^FK&)^#U;)8d;ytaAeGNQwmera4}$wU9o&>}@6Wh=|CKOZ-lsWvM&&(87{Ax^ z`=8TzR{9TJg{uPao26kh+vFaM!J)l1=jh*rH}K;npaM6skQ6Kl0`BCWUI3 z!gnqE)*6LspTfVsdg?5NYNx^{zWw2o?3wl|{PBvn_9|4n6&9jWUZH*p|K-lJo)F3i z4hoN~TK@M61rLSeo!|Kjg@TL1H|~AamlO&<3NM*@)KE}x(({d{efJ@Sf|tV1|MiCd zs8DcI_`JXW?5`>m{1pDllGi<;P;gZEzwiITYZVHf3h%n}&N~$ft`>gwy@wPEz6w8C zxL``5;H+@;&Xe~l6ucF7oP6uc6bkMNyU+gqtqKKyg}?L4M{ZWAeo)x4@87OfsQys+ zqE}B|rBMB%@XKGQT&__4qwtbDmtU+<{iN{MFT8w%LiLxzKY!?5YZa>B6uzdo>Dda^ ze+ri$`cYY-`cdIu?tA=nh3Zd*r{1}Ar9$grR-t|h!^b;++(jrnQ26bi-Tp&`!Uu)xUvcDn3WXO6-}r&) zZz~jjDBLpflD|MQCQjh zs!;Tz@W;zPbcI6Ejlyew?roPT6#Xdtqd$7%B??7H3NQcL2RADeJt_Q8+kShaLeZ7N z759H-P@(8cVd2Hu3lxgZ6n^E}E$1l|y(wIidEJ0Q(VfEXXaC(f3PpbkU%O}9*$PF6 z3jcWOp-`ddQQ<>BxZq5MqDzH^_dax*LeZzf?u)mbs!(*Q@R#>Kda^>%tHQ?~f7J?w zqFaRr->_+!LXCq8OPT+%M4{+d;cI$+w@;zyS>dN9URhKqx>oqcAKcQdQ1q?vKfG*1 zr$W)W!dD(XwV+V+uJC!Mb>|d{?iFS;nT$eyN7`IAUyvN2v0tGsjq_e6IKpkv#lWqx zTjQs`#c}+&euP&hw`qJ4kBRe9sGnpw)uEe9`Nny~dB*AZWOAC~_HZeT<0`GnkK^il zIxik=4pSuT_1~1g(kq>>tI7X;Jol&G$8qAkRj%^Uvwkll@e;xkm)fNK6)GRKH*TBi zqk2@A~v=#|2zUzmDr@>0{g?TJTNMpF^m+GbOh4>j~58 zV|d2(kMWUc!Na7F+su^M?l%%Ly)`(-uu=Qs^ui6nM8Eg@`m4N6T*`~7Zd3WK@DpyR zPWnCQ(<|?bxRjnL?orbVH$pD`?jybWM6kbvOX->NHl-JA&*6&eAGe8D!CumR-@uhFzZHI}i}Kd*R-azD zb0e41-^6va^l_bt7FjhkD zlj;@cAEy_r^i99dl0L?_49{_1dZ*tv`K~cnxRvF~aS1nH$OY;qG6J{3cZsX=w{R)` zi-PEL8;ak|b-FCnq&N#jyOpaoixP3k#kyM6(Y1w3ztHC+6jqf~73JB@mCmP!=eV4o zp;(8g^FqeLs z1M8d6Sl3Q2{chsDP&7tQZjW#Unqv#~gm(JAi%UPvwS`hbC!vOZv%C{}sH>IF2$y~j z@;>f%p?;j7(pR~5bM4{U%cbA@iLWkv5m%globM>__Hm7IjdSUzeh|C`XOadXJh*@p z_vT_|e-M3obFrtNw@bLz-Vj88#cNhj{&91$pgn}1459}vD!%@jxKrXxibU_@TFSMY z>l7~W=CioY;abCW9@jc9;jD06xTg-fnoGb{0|g9qv^qeIRYO(z{agpQ4s+ej^%}0% zas4vaTe*IP>({y7$Mr$3k8u4S*C)6>$@O2j{+R1)Tmrz;Ro~kwtF_L*#JhI&{*Sy* z*ZreBx7PnFyc6uN5q9xA(&>m#FcTpN@k?B4V|;NNeAmYlQKaK3ulQ2DCx|Cv5iv|~ z?V7Ar*VTq6riXTp)`v!_yCz4fwF`Fb3I=$0{^is4;d*sVc=>a}fr0gd8!ns)&kZkJ zvnIG;oh2mB1$zUfzO6P|uMSlwMw$~|)|8IK8#ZlT6AVnP2`?kd^%o2_vKkqls*fJ5 z4keYLDx(v7hNkxp*Qz5Fvuk{K|J2Y_ZF1-E&e8GF`t8BMAQ@OrQ)D_p3#MIN8`-K= zu1$M`tE=^`L`h<*3L7`935M(Sq0tdFaxj>h9GxJ=_~gvUy41ZOa!a)y)$6s(?u@ zsUT>3VH=bfP+P{mgiM^rqq3@c4Ljd~#21m`+__$3F#tY`nM~ zK%SwxY;0GTryV34+V<2>0ZkneCp_Vq!r28@;~7QZ1=jKD$L57r?CC`91=p!DFo{|3 zsn!x)Y#pCAUfhU#^UN@V*~^DDR?ST?FvUPNbZ~fl`sW8<;s*Q;$P)X959#Ghb;wB( z`-wI^O%CgZ<8gX=oszmSaA?{F!8WgkCK&F9$A>0&)ra?1M{1K3L%W72CMQOB4Udn$ zoT6c;ZcIcBxpH#<6cWIVwb4DJ6T{;#R0WV|k{Yg`r-lPaOf}aCDviLg(0Ji_;k>b`82k;;OQu^B0|j+(yaZ|s7!99F+n$2#vSEHwH8SIPhX9m3G6-=`-xe^{37O08a@lG(Z3hGUto2gQ6gAq9iJhJSZMV& zG;}X+{7EKibJR2!HKMjgnnu@LuT7#|t|jX5^_!lH>Up^4QtfK`Vyhj~bH8l3sId;x zD6O?78#Xp#T{rUlTD6+Qh*cgae$cE)9W*u1LJrGSv2uu|Di=LunMx~Nqr1@iOxG`C zMQ7uNq59?e?$&#zhc1{#6Ev^}{lN9r`rgTraAL9^PR~qDP1foxPlY`J8U-nz=6)C$ zo!C8j0V=Rv|`mE`#wFik(u>XEc}?R3|$2EoZgsB zsy8~AL`j_+&}pbW4!EpX*|X+I6*4iiKQ3Sm>wygcX`Wi`9-kbp$0_RcLVDTIm1$M8 zMKM<=Tem@377R3MqGD^+{j5`HmCscxEVBmJs?3|G8Z=(&#keA4($b~svNu4*lAuUa z!CEKOs-f2Y{6gl)sPtA%YoG$PRt}$A1to47-7_(|8-3t}Eg^2)FgL@?Rr8p|+p67B zFnNPkCAN+1scx-RQ7hGwu8K3b1XWtR+Jr!O5ZoFbzo|C43k~OFO$$;-rSwGqrA0L; z;sVo?g1$6Z`WyQLHtBOP&>E=?JzQ>)(qvE`9nk`0{q~{#!&6i0!?skHkPxM@f@+v? z{qWQ__{QxCxC|UgGZX$`%^XaD$w#R=06aw)0mF@()ei~9?3h4PSDoHA;g+6n+&NvX z0r?%bY#iFQjp*wyN!2C(Dm`7o{5BlBPOS@x3j#uFCG@K59?<%DA<0Exqpa-cr7J#cGyh(6MCsij!7#o!mLF`jnO3J^iPh zb!NJFGSG}^T{+&wy84JT`%8(t^H@%ywk=_;77cHN*%d9Krk|tlQcFDW@2&!tv_vdWf7gQauQ_ z4sM*`X?M84x?lOzjLDfAv3AZ(-yWFUQJa~fPT}$@W2dh zX!M^4u|t7IC+?UABN~sGG1MI(4CvbqRd=cH_7B&6@i8>%)tUX^RS@|bph@$r$0sND z1h?G2f9K@*=q>|tI6gT!W%w~MyuaFr^nCDR|M0}^;p7wz75uI7z7J@rb;(F|dRJ|9 zsycXWJ&ML>s=iWGy#&@;ivASqi|Fs-BlU%G?@|3*L&gY9jT zGh{xwYu8LIxJBl4p2l`fB3f7%!ru>$PR>k+^l??h(nMLvoV%*yyxKl9VN0u)ew6VF zi!MeP>n&uu>0w9)LZId9Lq{|_Oh(&1O18+_lsJM^E3&anhC>X6s>A!$5F@k(qTBo-zR^3v+nszi zLqqBzUNa3$t92?mU1x<|CINAOG%%Er*BadDo21O!Sij$6%{LC>b4xyJ-qvVm)9Yk9 z7u;f1aG5AUOY4UH! zUnX3-G&>pIY1347^v)R>0eW8A0EBNbW$kh-i*EGqRIA2I)~l_R*m{P;yRqBz{S{8{ zov9m}YK#iQHgWw@?NHfsyXs;fWE(o#%nC5KDuJ-8?hNSWrE* zt6Ck2v3_K9W!{h7rOiu0@uddrWxxcz@H^b)m=$_$;b#F;wN5+QsjMm+q{u-C5POKYc z(y*Ud&^pJ6^gKQ@Qe8Jbx^vf|L+f0b!O&2BZ*B6np>)}e8bN78le=XByQf-7;-=pQ zz?)Ja3Q+tuv;^Tf(*_c3XCV{FUoGe5rCbY++%_U0t1|0t9`w_Ux_0(k@Y# zSoy&X>j#I1Xf6i22iLFPJcRM?=>8#9X-IvrO|g@w=GYrZIX#Ny?eO$;Iz@Aq7mQBgMwr18+)`b&nKwgat40!8K*O+W`iQ#*&JtEm|OA0GHypa1{> diff --git a/javascript/draco_mesh_decoder.js b/javascript/draco_mesh_decoder.js deleted file mode 100644 index db90f639..00000000 --- a/javascript/draco_mesh_decoder.js +++ /dev/null @@ -1,26 +0,0 @@ -var DracoModule = function(DracoModule) { - DracoModule = DracoModule || {}; - var Module = DracoModule; - -var isRuntimeInitialized=false;var isModuleParsed=false;Module["onRuntimeInitialized"]=(function(){isRuntimeInitialized=true;if(isModuleParsed){if(typeof Module["onModuleLoaded"]==="function"){Module["onModuleLoaded"](Module)}}});Module["onModuleParsed"]=(function(){isModuleParsed=true;if(isRuntimeInitialized){if(typeof Module["onModuleLoaded"]==="function"){Module["onModuleLoaded"](Module)}}});function isVersionSupported(versionString){if(typeof versionString!=="string")return false;const version=versionString.split(".");if(version.length<2||version.length>3)return false;if(version[0]>0||version[1]>9)return false;return true}Module["isVersionSupported"]=isVersionSupported;var Module;if(!Module)Module=(typeof DracoModule!=="undefined"?DracoModule:null)||{};var moduleOverrides={};for(var key in Module){if(Module.hasOwnProperty(key)){moduleOverrides[key]=Module[key]}}var ENVIRONMENT_IS_WEB=false;var ENVIRONMENT_IS_WORKER=false;var ENVIRONMENT_IS_NODE=false;var ENVIRONMENT_IS_SHELL=false;if(Module["ENVIRONMENT"]){if(Module["ENVIRONMENT"]==="WEB"){ENVIRONMENT_IS_WEB=true}else if(Module["ENVIRONMENT"]==="WORKER"){ENVIRONMENT_IS_WORKER=true}else if(Module["ENVIRONMENT"]==="NODE"){ENVIRONMENT_IS_NODE=true}else if(Module["ENVIRONMENT"]==="SHELL"){ENVIRONMENT_IS_SHELL=true}else{throw new Error("The provided Module['ENVIRONMENT'] value is not valid. It must be one of: WEB|WORKER|NODE|SHELL.")}}else{ENVIRONMENT_IS_WEB=typeof window==="object";ENVIRONMENT_IS_WORKER=typeof importScripts==="function";ENVIRONMENT_IS_NODE=typeof process==="object"&&typeof require==="function"&&!ENVIRONMENT_IS_WEB&&!ENVIRONMENT_IS_WORKER;ENVIRONMENT_IS_SHELL=!ENVIRONMENT_IS_WEB&&!ENVIRONMENT_IS_NODE&&!ENVIRONMENT_IS_WORKER}if(ENVIRONMENT_IS_NODE){if(!Module["print"])Module["print"]=console.log;if(!Module["printErr"])Module["printErr"]=console.warn;var nodeFS;var nodePath;Module["read"]=function read(filename,binary){if(!nodeFS)nodeFS=require("fs");if(!nodePath)nodePath=require("path");filename=nodePath["normalize"](filename);var ret=nodeFS["readFileSync"](filename);return binary?ret:ret.toString()};Module["readBinary"]=function readBinary(filename){var ret=Module["read"](filename,true);if(!ret.buffer){ret=new Uint8Array(ret)}assert(ret.buffer);return ret};Module["load"]=function load(f){globalEval(read(f))};if(!Module["thisProgram"]){if(process["argv"].length>1){Module["thisProgram"]=process["argv"][1].replace(/\\/g,"/")}else{Module["thisProgram"]="unknown-program"}}Module["arguments"]=process["argv"].slice(2);if(typeof module!=="undefined"){module["exports"]=Module}process["on"]("uncaughtException",(function(ex){if(!(ex instanceof ExitStatus)){throw ex}}));Module["inspect"]=(function(){return"[Emscripten Module object]"})}else if(ENVIRONMENT_IS_SHELL){if(!Module["print"])Module["print"]=print;if(typeof printErr!="undefined")Module["printErr"]=printErr;if(typeof read!="undefined"){Module["read"]=read}else{Module["read"]=function read(){throw"no read() available"}}Module["readBinary"]=function readBinary(f){if(typeof readbuffer==="function"){return new Uint8Array(readbuffer(f))}var data=read(f,"binary");assert(typeof data==="object");return data};if(typeof scriptArgs!="undefined"){Module["arguments"]=scriptArgs}else if(typeof arguments!="undefined"){Module["arguments"]=arguments}}else if(ENVIRONMENT_IS_WEB||ENVIRONMENT_IS_WORKER){Module["read"]=function read(url){var xhr=new XMLHttpRequest;xhr.open("GET",url,false);xhr.send(null);return xhr.responseText};Module["readAsync"]=function readAsync(url,onload,onerror){var xhr=new XMLHttpRequest;xhr.open("GET",url,true);xhr.responseType="arraybuffer";xhr.onload=function xhr_onload(){if(xhr.status==200||xhr.status==0&&xhr.response){onload(xhr.response)}else{onerror()}};xhr.onerror=onerror;xhr.send(null)};if(typeof arguments!="undefined"){Module["arguments"]=arguments}if(typeof console!=="undefined"){if(!Module["print"])Module["print"]=function print(x){console.log(x)};if(!Module["printErr"])Module["printErr"]=function printErr(x){console.warn(x)}}else{var TRY_USE_DUMP=false;if(!Module["print"])Module["print"]=TRY_USE_DUMP&&typeof dump!=="undefined"?(function(x){dump(x)}):(function(x){})}if(ENVIRONMENT_IS_WORKER){Module["load"]=importScripts}if(typeof Module["setWindowTitle"]==="undefined"){Module["setWindowTitle"]=(function(title){document.title=title})}}else{throw"Unknown runtime environment. Where are we?"}function globalEval(x){eval.call(null,x)}if(!Module["load"]&&Module["read"]){Module["load"]=function load(f){globalEval(Module["read"](f))}}if(!Module["print"]){Module["print"]=(function(){})}if(!Module["printErr"]){Module["printErr"]=Module["print"]}if(!Module["arguments"]){Module["arguments"]=[]}if(!Module["thisProgram"]){Module["thisProgram"]="./this.program"}Module.print=Module["print"];Module.printErr=Module["printErr"];Module["preRun"]=[];Module["postRun"]=[];for(var key in moduleOverrides){if(moduleOverrides.hasOwnProperty(key)){Module[key]=moduleOverrides[key]}}moduleOverrides=undefined;var Runtime={setTempRet0:(function(value){tempRet0=value}),getTempRet0:(function(){return tempRet0}),stackSave:(function(){return STACKTOP}),stackRestore:(function(stackTop){STACKTOP=stackTop}),getNativeTypeSize:(function(type){switch(type){case"i1":case"i8":return 1;case"i16":return 2;case"i32":return 4;case"i64":return 8;case"float":return 4;case"double":return 8;default:{if(type[type.length-1]==="*"){return Runtime.QUANTUM_SIZE}else if(type[0]==="i"){var bits=parseInt(type.substr(1));assert(bits%8===0);return bits/8}else{return 0}}}}),getNativeFieldSize:(function(type){return Math.max(Runtime.getNativeTypeSize(type),Runtime.QUANTUM_SIZE)}),STACK_ALIGN:16,prepVararg:(function(ptr,type){if(type==="double"||type==="i64"){if(ptr&7){assert((ptr&7)===4);ptr+=4}}else{assert((ptr&3)===0)}return ptr}),getAlignSize:(function(type,size,vararg){if(!vararg&&(type=="i64"||type=="double"))return 8;if(!type)return Math.min(size,8);return Math.min(size||(type?Runtime.getNativeFieldSize(type):0),Runtime.QUANTUM_SIZE)}),dynCall:(function(sig,ptr,args){if(args&&args.length){return Module["dynCall_"+sig].apply(null,[ptr].concat(args))}else{return Module["dynCall_"+sig].call(null,ptr)}}),functionPointers:[],addFunction:(function(func){for(var i=0;i>2];var end=(ret+size+15|0)&-16;HEAP32[DYNAMICTOP_PTR>>2]=end;if(end>=TOTAL_MEMORY){var success=enlargeMemory();if(!success){HEAP32[DYNAMICTOP_PTR>>2]=ret;return 0}}return ret}),alignMemory:(function(size,quantum){var ret=size=Math.ceil(size/(quantum?quantum:16))*(quantum?quantum:16);return ret}),makeBigInt:(function(low,high,unsigned){var ret=unsigned?+(low>>>0)+ +(high>>>0)*+4294967296:+(low>>>0)+ +(high|0)*+4294967296;return ret}),GLOBAL_BASE:8,QUANTUM_SIZE:4,__dummy__:0};var ABORT=0;var EXITSTATUS=0;function assert(condition,text){if(!condition){abort("Assertion failed: "+text)}}function getCFunc(ident){var func=Module["_"+ident];if(!func){try{func=eval("_"+ident)}catch(e){}}assert(func,"Cannot call unknown function "+ident+" (perhaps LLVM optimizations or closure removed it?)");return func}var ccall;((function(){var JSfuncs={"stackSave":(function(){Runtime.stackSave()}),"stackRestore":(function(){Runtime.stackRestore()}),"arrayToC":(function(arr){var ret=Runtime.stackAlloc(arr.length);writeArrayToMemory(arr,ret);return ret}),"stringToC":(function(str){var ret=0;if(str!==null&&str!==undefined&&str!==0){var len=(str.length<<2)+1;ret=Runtime.stackAlloc(len);stringToUTF8(str,ret,len)}return ret})};var toC={"string":JSfuncs["stringToC"],"array":JSfuncs["arrayToC"]};ccall=function ccallFunc(ident,returnType,argTypes,args,opts){var func=getCFunc(ident);var cArgs=[];var stack=0;if(args){for(var i=0;i>0]=value;break;case"i8":HEAP8[ptr>>0]=value;break;case"i16":HEAP16[ptr>>1]=value;break;case"i32":HEAP32[ptr>>2]=value;break;case"i64":tempI64=[value>>>0,(tempDouble=value,+Math_abs(tempDouble)>=+1?tempDouble>+0?(Math_min(+Math_floor(tempDouble/+4294967296),+4294967295)|0)>>>0:~~+Math_ceil((tempDouble- +(~~tempDouble>>>0))/+4294967296)>>>0:0)],HEAP32[ptr>>2]=tempI64[0],HEAP32[ptr+4>>2]=tempI64[1];break;case"float":HEAPF32[ptr>>2]=value;break;case"double":HEAPF64[ptr>>3]=value;break;default:abort("invalid type for setValue: "+type)}}function getValue(ptr,type,noSafe){type=type||"i8";if(type.charAt(type.length-1)==="*")type="i32";switch(type){case"i1":return HEAP8[ptr>>0];case"i8":return HEAP8[ptr>>0];case"i16":return HEAP16[ptr>>1];case"i32":return HEAP32[ptr>>2];case"i64":return HEAP32[ptr>>2];case"float":return HEAPF32[ptr>>2];case"double":return HEAPF64[ptr>>3];default:abort("invalid type for setValue: "+type)}return null}var ALLOC_NORMAL=0;var ALLOC_STATIC=2;var ALLOC_NONE=4;function allocate(slab,types,allocator,ptr){var zeroinit,size;if(typeof slab==="number"){zeroinit=true;size=slab}else{zeroinit=false;size=slab.length}var singleType=typeof types==="string"?types:null;var ret;if(allocator==ALLOC_NONE){ret=ptr}else{ret=[typeof _malloc==="function"?_malloc:Runtime.staticAlloc,Runtime.stackAlloc,Runtime.staticAlloc,Runtime.dynamicAlloc][allocator===undefined?ALLOC_STATIC:allocator](Math.max(size,singleType?1:types.length))}if(zeroinit){var ptr=ret,stop;assert((ret&3)==0);stop=ret+(size&~3);for(;ptr>2]=0}stop=ret+size;while(ptr>0]=0}return ret}if(singleType==="i8"){if(slab.subarray||slab.slice){HEAPU8.set(slab,ret)}else{HEAPU8.set(new Uint8Array(slab),ret)}return ret}var i=0,type,typeSize,previousType;while(i>0];hasUtf|=t;if(t==0&&!length)break;i++;if(length&&i==length)break}if(!length)length=i;var ret="";if(hasUtf<128){var MAX_CHUNK=1024;var curr;while(length>0){curr=String.fromCharCode.apply(String,HEAPU8.subarray(ptr,ptr+Math.min(length,MAX_CHUNK)));ret=ret?ret+curr:curr;ptr+=MAX_CHUNK;length-=MAX_CHUNK}return ret}return Module["UTF8ToString"](ptr)}var UTF8Decoder=typeof TextDecoder!=="undefined"?new TextDecoder("utf8"):undefined;function UTF8ArrayToString(u8Array,idx){var endPtr=idx;while(u8Array[endPtr])++endPtr;if(endPtr-idx>16&&u8Array.subarray&&UTF8Decoder){return UTF8Decoder.decode(u8Array.subarray(idx,endPtr))}else{var u0,u1,u2,u3,u4,u5;var str="";while(1){u0=u8Array[idx++];if(!u0)return str;if(!(u0&128)){str+=String.fromCharCode(u0);continue}u1=u8Array[idx++]&63;if((u0&224)==192){str+=String.fromCharCode((u0&31)<<6|u1);continue}u2=u8Array[idx++]&63;if((u0&240)==224){u0=(u0&15)<<12|u1<<6|u2}else{u3=u8Array[idx++]&63;if((u0&248)==240){u0=(u0&7)<<18|u1<<12|u2<<6|u3}else{u4=u8Array[idx++]&63;if((u0&252)==248){u0=(u0&3)<<24|u1<<18|u2<<12|u3<<6|u4}else{u5=u8Array[idx++]&63;u0=(u0&1)<<30|u1<<24|u2<<18|u3<<12|u4<<6|u5}}}if(u0<65536){str+=String.fromCharCode(u0)}else{var ch=u0-65536;str+=String.fromCharCode(55296|ch>>10,56320|ch&1023)}}}}function stringToUTF8Array(str,outU8Array,outIdx,maxBytesToWrite){if(!(maxBytesToWrite>0))return 0;var startIdx=outIdx;var endIdx=outIdx+maxBytesToWrite-1;for(var i=0;i=55296&&u<=57343)u=65536+((u&1023)<<10)|str.charCodeAt(++i)&1023;if(u<=127){if(outIdx>=endIdx)break;outU8Array[outIdx++]=u}else if(u<=2047){if(outIdx+1>=endIdx)break;outU8Array[outIdx++]=192|u>>6;outU8Array[outIdx++]=128|u&63}else if(u<=65535){if(outIdx+2>=endIdx)break;outU8Array[outIdx++]=224|u>>12;outU8Array[outIdx++]=128|u>>6&63;outU8Array[outIdx++]=128|u&63}else if(u<=2097151){if(outIdx+3>=endIdx)break;outU8Array[outIdx++]=240|u>>18;outU8Array[outIdx++]=128|u>>12&63;outU8Array[outIdx++]=128|u>>6&63;outU8Array[outIdx++]=128|u&63}else if(u<=67108863){if(outIdx+4>=endIdx)break;outU8Array[outIdx++]=248|u>>24;outU8Array[outIdx++]=128|u>>18&63;outU8Array[outIdx++]=128|u>>12&63;outU8Array[outIdx++]=128|u>>6&63;outU8Array[outIdx++]=128|u&63}else{if(outIdx+5>=endIdx)break;outU8Array[outIdx++]=252|u>>30;outU8Array[outIdx++]=128|u>>24&63;outU8Array[outIdx++]=128|u>>18&63;outU8Array[outIdx++]=128|u>>12&63;outU8Array[outIdx++]=128|u>>6&63;outU8Array[outIdx++]=128|u&63}}outU8Array[outIdx]=0;return outIdx-startIdx}function stringToUTF8(str,outPtr,maxBytesToWrite){return stringToUTF8Array(str,HEAPU8,outPtr,maxBytesToWrite)}function lengthBytesUTF8(str){var len=0;for(var i=0;i=55296&&u<=57343)u=65536+((u&1023)<<10)|str.charCodeAt(++i)&1023;if(u<=127){++len}else if(u<=2047){len+=2}else if(u<=65535){len+=3}else if(u<=2097151){len+=4}else if(u<=67108863){len+=5}else{len+=6}}return len}var UTF16Decoder=typeof TextDecoder!=="undefined"?new TextDecoder("utf-16le"):undefined;function demangle(func){var hasLibcxxabi=!!Module["___cxa_demangle"];if(hasLibcxxabi){try{var s=func.substr(1);var len=lengthBytesUTF8(s)+1;var buf=_malloc(len);stringToUTF8(s,buf,len);var status=_malloc(4);var ret=Module["___cxa_demangle"](buf,0,0,status);if(getValue(status,"i32")===0&&ret){return Pointer_stringify(ret)}}catch(e){}finally{if(buf)_free(buf);if(status)_free(status);if(ret)_free(ret)}return func}Runtime.warnOnce("warning: build with -s DEMANGLE_SUPPORT=1 to link in libcxxabi demangling");return func}function demangleAll(text){return text.replace(/__Z[\w\d_]+/g,(function(x){var y=demangle(x);return x===y?x:x+" ["+y+"]"}))}function jsStackTrace(){var err=new Error;if(!err.stack){try{throw new Error(0)}catch(e){err=e}if(!err.stack){return"(no stack trace available)"}}return err.stack.toString()}function stackTrace(){var js=jsStackTrace();if(Module["extraStackTrace"])js+="\n"+Module["extraStackTrace"]();return demangleAll(js)}function alignMemoryPage(x){if(x%4096>0){x+=4096-x%4096}return x}var HEAP;var buffer;var HEAP8,HEAPU8,HEAP16,HEAPU16,HEAP32,HEAPU32,HEAPF32,HEAPF64;function updateGlobalBuffer(buf){Module["buffer"]=buffer=buf}function updateGlobalBufferViews(){Module["HEAP8"]=HEAP8=new Int8Array(buffer);Module["HEAP16"]=HEAP16=new Int16Array(buffer);Module["HEAP32"]=HEAP32=new Int32Array(buffer);Module["HEAPU8"]=HEAPU8=new Uint8Array(buffer);Module["HEAPU16"]=HEAPU16=new Uint16Array(buffer);Module["HEAPU32"]=HEAPU32=new Uint32Array(buffer);Module["HEAPF32"]=HEAPF32=new Float32Array(buffer);Module["HEAPF64"]=HEAPF64=new Float64Array(buffer)}var STATIC_BASE,STATICTOP,staticSealed;var STACK_BASE,STACKTOP,STACK_MAX;var DYNAMIC_BASE,DYNAMICTOP_PTR;STATIC_BASE=STATICTOP=STACK_BASE=STACKTOP=STACK_MAX=DYNAMIC_BASE=DYNAMICTOP_PTR=0;staticSealed=false;function abortOnCannotGrowMemory(){abort("Cannot enlarge memory arrays. Either (1) compile with -s TOTAL_MEMORY=X with X higher than the current value "+TOTAL_MEMORY+", (2) compile with -s ALLOW_MEMORY_GROWTH=1 which adjusts the size at runtime but prevents some optimizations, (3) set Module.TOTAL_MEMORY to a higher value before the program runs, or if you want malloc to return NULL (0) instead of this abort, compile with -s ABORTING_MALLOC=0 ")}if(!Module["reallocBuffer"])Module["reallocBuffer"]=(function(size){var ret;try{if(ArrayBuffer.transfer){ret=ArrayBuffer.transfer(buffer,size)}else{var oldHEAP8=HEAP8;ret=new ArrayBuffer(size);var temp=new Int8Array(ret);temp.set(oldHEAP8)}}catch(e){return false}var success=_emscripten_replace_memory(ret);if(!success)return false;return ret});function enlargeMemory(){var LIMIT=Math.pow(2,31);if(HEAP32[DYNAMICTOP_PTR>>2]>=LIMIT)return false;while(TOTAL_MEMORY>2]){if(TOTAL_MEMORY=LIMIT)return false;var replacement=Module["reallocBuffer"](TOTAL_MEMORY);if(!replacement)return false;updateGlobalBuffer(replacement);updateGlobalBufferViews();return true}var byteLength;try{byteLength=Function.prototype.call.bind(Object.getOwnPropertyDescriptor(ArrayBuffer.prototype,"byteLength").get);byteLength(new ArrayBuffer(4))}catch(e){byteLength=(function(buffer){return buffer.byteLength})}var TOTAL_STACK=Module["TOTAL_STACK"]||5242880;var TOTAL_MEMORY=Module["TOTAL_MEMORY"]||16777216;var WASM_PAGE_SIZE=64*1024;var totalMemory=WASM_PAGE_SIZE;while(totalMemory0){var callback=callbacks.shift();if(typeof callback=="function"){callback();continue}var func=callback.func;if(typeof func==="number"){if(callback.arg===undefined){Runtime.dynCall("v",func)}else{Runtime.dynCall("vi",func,[callback.arg])}}else{func(callback.arg===undefined?null:callback.arg)}}}var __ATPRERUN__=[];var __ATINIT__=[];var __ATMAIN__=[];var __ATEXIT__=[];var __ATPOSTRUN__=[];var runtimeInitialized=false;var runtimeExited=false;function preRun(){if(Module["preRun"]){if(typeof Module["preRun"]=="function")Module["preRun"]=[Module["preRun"]];while(Module["preRun"].length){addOnPreRun(Module["preRun"].shift())}}callRuntimeCallbacks(__ATPRERUN__)}function ensureInitRuntime(){if(runtimeInitialized)return;runtimeInitialized=true;callRuntimeCallbacks(__ATINIT__)}function preMain(){callRuntimeCallbacks(__ATMAIN__)}function exitRuntime(){callRuntimeCallbacks(__ATEXIT__);runtimeExited=true}function postRun(){if(Module["postRun"]){if(typeof Module["postRun"]=="function")Module["postRun"]=[Module["postRun"]];while(Module["postRun"].length){addOnPostRun(Module["postRun"].shift())}}callRuntimeCallbacks(__ATPOSTRUN__)}function addOnPreRun(cb){__ATPRERUN__.unshift(cb)}function addOnPreMain(cb){__ATMAIN__.unshift(cb)}function addOnPostRun(cb){__ATPOSTRUN__.unshift(cb)}function intArrayFromString(stringy,dontAddNull,length){var len=length>0?length:lengthBytesUTF8(stringy)+1;var u8array=new Array(len);var numBytesWritten=stringToUTF8Array(stringy,u8array,0,u8array.length);if(dontAddNull)u8array.length=numBytesWritten;return u8array}function writeArrayToMemory(array,buffer){HEAP8.set(array,buffer)}function writeAsciiToMemory(str,buffer,dontAddNull){for(var i=0;i>0]=str.charCodeAt(i)}if(!dontAddNull)HEAP8[buffer>>0]=0}if(!Math["imul"]||Math["imul"](4294967295,5)!==-5)Math["imul"]=function imul(a,b){var ah=a>>>16;var al=a&65535;var bh=b>>>16;var bl=b&65535;return al*bl+(ah*bl+al*bh<<16)|0};Math.imul=Math["imul"];if(!Math["fround"]){var froundBuffer=new Float32Array(1);Math["fround"]=(function(x){froundBuffer[0]=x;return froundBuffer[0]})}Math.fround=Math["fround"];if(!Math["clz32"])Math["clz32"]=(function(x){x=x>>>0;for(var i=0;i<32;i++){if(x&1<<31-i)return i}return 32});Math.clz32=Math["clz32"];if(!Math["trunc"])Math["trunc"]=(function(x){return x<0?Math.ceil(x):Math.floor(x)});Math.trunc=Math["trunc"];var Math_abs=Math.abs;var Math_cos=Math.cos;var Math_sin=Math.sin;var Math_tan=Math.tan;var Math_acos=Math.acos;var Math_asin=Math.asin;var Math_atan=Math.atan;var Math_atan2=Math.atan2;var Math_exp=Math.exp;var Math_log=Math.log;var Math_sqrt=Math.sqrt;var Math_ceil=Math.ceil;var Math_floor=Math.floor;var Math_pow=Math.pow;var Math_imul=Math.imul;var Math_fround=Math.fround;var Math_round=Math.round;var Math_min=Math.min;var Math_clz32=Math.clz32;var Math_trunc=Math.trunc;var runDependencies=0;var runDependencyWatcher=null;var dependenciesFulfilled=null;Module["preloadedImages"]={};Module["preloadedAudios"]={};var ASM_CONSTS=[];STATIC_BASE=8;STATICTOP=STATIC_BASE+18112;__ATINIT__.push();allocate([132,24,0,0,170,25,0,0,172,24,0,0,191,25,0,0,8,0,0,0,0,0,0,0,132,24,0,0,205,25,0,0,132,24,0,0,233,25,0,0,172,24,0,0,11,26,0,0,40,0,0,0,0,0,0,0,132,24,0,0,33,26,0,0,172,24,0,0,186,32,0,0,64,0,0,0,0,0,0,0,172,24,0,0,70,26,0,0,104,0,0,0,0,0,0,0,172,24,0,0,149,26,0,0,120,0,0,0,0,0,0,0,172,24,0,0,218,26,0,0,136,0,0,0,0,0,0,0,132,24,0,0,7,27,0,0,172,24,0,0,43,27,0,0,160,0,0,0,0,0,0,0,172,24,0,0,174,27,0,0,104,0,0,0,0,0,0,0,172,24,0,0,40,28,0,0,160,0,0,0,0,0,0,0,172,24,0,0,191,28,0,0,160,0,0,0,0,0,0,0,172,24,0,0,75,29,0,0,160,0,0,0,0,0,0,0,172,24,0,0,210,29,0,0,240,0,0,0,0,0,0,0,172,24,0,0,98,30,0,0,104,0,0,0,0,0,0,0,172,24,0,0,233,30,0,0,240,0,0,0,0,0,0,0,172,24,0,0,141,31,0,0,240,0,0,0,0,0,0,0,172,24,0,0,38,32,0,0,240,0,0,0,0,0,0,0,172,24,0,0,230,32,0,0,72,0,0,0,0,0,0,0,172,24,0,0,98,50,0,0,72,0,0,0,0,0,0,0,172,24,0,0,170,35,0,0,96,1,0,0,0,0,0,0,172,24,0,0,17,36,0,0,120,0,0,0,0,0,0,0,172,24,0,0,224,36,0,0,128,1,0,0,0,0,0,0,172,24,0,0,123,37,0,0,96,1,0,0,0,0,0,0,172,24,0,0,13,38,0,0,128,1,0,0,0,0,0,0,172,24,0,0,188,38,0,0,128,1,0,0,0,0,0,0,172,24,0,0,96,39,0,0,128,1,0,0,0,0,0,0,172,24,0,0,255,39,0,0,208,1,0,0,0,0,0,0,172,24,0,0,167,40,0,0,96,1,0,0,0,0,0,0,172,24,0,0,70,41,0,0,208,1,0,0,0,0,0,0,172,24,0,0,2,42,0,0,208,1,0,0,0,0,0,0,172,24,0,0,179,42,0,0,208,1,0,0,0,0,0,0,172,24,0,0,187,43,0,0,32,2,0,0,0,0,0,0,172,24,0,0,21,44,0,0,120,0,0,0,0,0,0,0,172,24,0,0,101,44,0,0,64,2,0,0,0,0,0,0,172,24,0,0,243,44,0,0,32,2,0,0,0,0,0,0,172,24,0,0,120,45,0,0,64,2,0,0,0,0,0,0,172,24,0,0,26,46,0,0,64,2,0,0,0,0,0,0,172,24,0,0,177,46,0,0,64,2,0,0,0,0,0,0,172,24,0,0,67,47,0,0,144,2,0,0,0,0,0,0,172,24,0,0,222,47,0,0,32,2,0,0,0,0,0,0,172,24,0,0,112,48,0,0,144,2,0,0,0,0,0,0,172,24,0,0,31,49,0,0,144,2,0,0,0,0,0,0,172,24,0,0,195,49,0,0,144,2,0,0,0,0,0,0,172,24,0,0,249,50,0,0,32,0,0,0,0,0,0,0,172,24,0,0,41,51,0,0,240,2,0,0,0,0,0,0,132,24,0,0,67,51,0,0,172,24,0,0,93,51,0,0,48,0,0,0,0,0,0,0,172,24,0,0,125,51,0,0,48,0,0,0,0,0,0,0,172,24,0,0,247,54,0,0,104,3,0,0,0,0,0,0,132,24,0,0,158,51,0,0,172,24,0,0,140,52,0,0,240,2,0,0,0,0,0,0,132,24,0,0,86,53,0,0,172,24,0,0,145,53,0,0,240,2,0,0,0,0,0,0,172,24,0,0,58,54,0,0,240,2,0,0,0,0,0,0,132,24,0,0,67,55,0,0,172,24,0,0,113,55,0,0,104,3,0,0,0,0,0,0,172,24,0,0,199,55,0,0,104,3,0,0,0,0,0,0,132,24,0,0,222,66,0,0,172,24,0,0,62,67,0,0,168,3,0,0,0,0,0,0,172,24,0,0,235,66,0,0,184,3,0,0,0,0,0,0,132,24,0,0,12,67,0,0,172,24,0,0,25,67,0,0,152,3,0,0,0,0,0,0,172,24,0,0,47,68,0,0,144,3,0,0,0,0,0,0,172,24,0,0,96,68,0,0,168,3,0,0,0,0,0,0,172,24,0,0,60,68,0,0,224,3,0,0,0,0,0,0,0,0,0,192,0,0,0,192,0,0,0,192,0,0,0,192,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,0,0,0,86,85,85,85,2,0,0,0,0,0,0,0,2,0,0,0,154,153,153,153,3,0,0,0,86,85,85,85,3,0,0,0,37,73,146,36,3,0,0,0,0,0,0,0,3,0,0,0,200,113,28,199,4,0,0,0,154,153,153,153,4,0,0,0,70,23,93,116,4,0,0,0,86,85,85,85,4,0,0,0,60,177,19,59,4,0,0,0,37,73,146,36,4,0,0,0,18,17,17,17,4,0,0,0,0,0,0,0,4,0,0,0,226,225,225,225,5,0,0,0,200,113,28,199,5,0,0,0,203,107,40,175,5,0,0,0,154,153,153,153,5,0,0,0,135,97,24,134,5,0,0,0,70,23,93,116,5,0,0,0,145,133,44,100,5,0,0,0,86,85,85,85,5,0,0,0,123,20,174,71,5,0,0,0,60,177,19,59,5,0,0,0,219,75,104,47,5,0,0,0,37,73,146,36,5,0,0,0,18,150,123,26,5,0,0,0,18,17,17,17,5,0,0,0,133,16,66,8,5,0,0,0,0,0,0,0,5,0,0,0,8,31,124,240,6,0,0,0,226,225,225,225,6,0,0,0,213,65,29,212,6,0,0,0,200,113,28,199,6,0,0,0,77,145,207,186,6,0,0,0,203,107,40,175,6,0,0,0,165,65,26,164,6,0,0,0,154,153,153,153,6,0,0,0,250,24,156,143,6,0,0,0,135,97,24,134,6,0,0,0,24,244,5,125,6,0,0,0,70,23,93,116,6,0,0,0,109,193,22,108,6,0,0,0,145,133,44,100,6,0,0,0,186,130,152,92,6,0,0,0,86,85,85,85,6,0,0,0,115,10,94,78,6,0,0,0,123,20,174,71,6,0,0,0,66,65,65,65,6,0,0,0,60,177,19,59,6,0,0,0,179,207,33,53,6,0,0,0,219,75,104,47,6,0,0,0,159,18,228,41,6,0,0,0,37,73,146,36,6,0,0,0,221,71,112,31,6,0,0,0,18,150,123,26,6,0,0,0,248,229,177,21,6,0,0,0,18,17,17,17,6,0,0,0,252,20,151,12,6,0,0,0,133,16,66,8,6,0,0,0,5,65,16,4,6,0,0,0,0,0,0,0,6,0,0,0,249,129,31,248,7,0,0,0,8,31,124,240,7,0,0,0,192,26,19,233,7,0,0,0,226,225,225,225,7,0,0,0,108,7,230,218,7,0,0,0,213,65,29,212,7,0,0,0,145,104,133,205,7,0,0,0,200,113,28,199,7,0,0,0,57,112,224,192,7,0,0,0,77,145,207,186,7,0,0,0,79,27,232,180,7,0,0,0,203,107,40,175,7,0,0,0,7,246,142,169,7,0,0,0,165,65,26,164,7,0,0,0,82,233,200,158,7,0,0,0,154,153,153,153,7,0,0,0,206,15,139,148,7,0,0,0,250,24,156,143,7,0,0,0,247,144,203,138,7,0,0,0,135,97,24,134,7,0,0,0,130,129,129,129,7,0,0,0,24,244,5,125,7,0,0,0,24,200,164,120,7,0,0,0,70,23,93,116,7,0,0,0,193,5,46,112,7,0,0,0,109,193,22,108,7,0,0,0,105,129,22,104,7,0,0,0,145,133,44,100,7,0,0,0,6,22,88,96,7,0,0,0,186,130,152,92,7,0,0,0,9,35,237,88,7,0,0,0,86,85,85,85,7,0,0,0,175,126,208,81,7,0,0,0,115,10,94,78,7,0,0,0,6,106,253,74,7,0,0,0,123,20,174,71,7,0,0,0,87,134,111,68,7,0,0,0,66,65,65,65,7,0,0,0,207,203,34,62,7,0,0,0,60,177,19,59,7,0,0,0,57,129,19,56,7,0,0,0,179,207,33,53,7,0,0,0,163,52,62,50,7,0,0,0,219,75,104,47,7,0,0,0,217,180,159,44,7,0,0,0,159,18,228,41,7,0,0,0,137,11,53,39,7,0,0,0,37,73,146,36,7,0,0,0,19,120,251,33,7,0,0,0,221,71,112,31,7,0,0,0,219,106,240,28,7,0,0,0,18,150,123,26,7,0,0,0,25,129,17,24,7,0,0,0,248,229,177,21,7,0,0,0,20,129,92,19,7,0,0,0,18,17,17,17,7,0,0,0,191,86,207,14,7,0,0,0,252,20,151,12,7,0,0,0,167,16,104,10,7,0,0,0,133,16,66,8,7,0,0,0,48,221,36,6,7,0,0,0,5,65,16,4,7,0,0,0,17,8,4,2,7,0,0,0,0,0,0,0,7,0,0,0,32,240,7,252,8,0,0,0,249,129,31,248,8,0,0,0,229,89,70,244,8,0,0,0,8,31,124,240,8,0,0,0,49,123,192,236,8,0,0,0,192,26,19,233,8,0,0,0,145,172,115,229,8,0,0,0,226,225,225,225,8,0,0,0,64,110,93,222,8,0,0,0,108,7,230,218,8,0,0,0,76,101,123,215,8,0,0,0,213,65,29,212,8,0,0,0,247,88,203,208,8,0,0,0,145,104,133,205,8,0,0,0,86,48,75,202,8,0,0,0,200,113,28,199,8,0,0,0,29,240,248,195,8,0,0,0,57,112,224,192,8,0,0,0,154,184,210,189,8,0,0,0,77,145,207,186,8,0,0,0,222,195,214,183,8,0,0,0,79,27,232,180,8,0,0,0,7,100,3,178,8,0,0,0,203,107,40,175,8,0,0,0,173,1,87,172,8,0,0,0,7,246,142,169,8,0,0,0,110,26,208,166,8,0,0,0,165,65,26,164,8,0,0,0,152,63,109,161,8,0,0,0,82,233,200,158,8,0,0,0,239,20,45,156,8,0,0,0,154,153,153,153,8,0,0,0,129,79,14,151,8,0,0,0,206,15,139,148,8,0,0,0,158,180,15,146,8,0,0,0,250,24,156,143,8,0,0,0,212,24,48,141,8,0,0,0,247,144,203,138,8,0,0,0,11,95,110,136,8,0,0,0,135,97,24,134,8,0,0,0,172,119,201,131,8,0,0,0,130,129,129,129,8,0,0,0,209,95,64,127,8,0,0,0,24,244,5,125,8,0,0,0,143,32,210,122,8,0,0,0,24,200,164,120,8,0,0,0,68,206,125,118,8,0,0,0,70,23,93,116,8,0,0,0,245,135,66,114,8,0,0,0,193,5,46,112,8,0,0,0,181,118,31,110,8,0,0,0,109,193,22,108,8,0,0,0,22,205,19,106,8,0,0,0,105,129,22,104,8,0,0,0,166,198,30,102,8,0,0,0,145,133,44,100,8,0,0,0,113,167,63,98,8,0,0,0,6,22,88,96,8,0,0,0,142,187,117,94,8,0,0,0,186,130,152,92,8,0,0,0,177,86,192,90,8,0,0,0,9,35,237,88,8,0,0,0,198,211,30,87,8,0,0,0,86,85,85,85,8,0,0,0,144,148,144,83,8,0,0,0,175,126,208,81,8,0,0,0,81,1,21,80,8,0,0,0,115,10,94,78,8,0,0,0,115,136,171,76,8,0,0,0,6,106,253,74,8,0,0,0,60,158,83,73,8,0,0,0,123,20,174,71,8,0,0,0,128,188,12,70,8,0,0,0,87,134,111,68,8,0,0,0,94,98,214,66,8,0,0,0,66,65,65,65,8,0,0,0,252,19,176,63,8,0,0,0,207,203,34,62,8,0,0,0,72,90,153,60,8,0,0,0,60,177,19,59,8,0,0,0,194,194,145,57,8,0,0,0,57,129,19,56,8,0,0,0,62,223,152,54,8,0,0,0,179,207,33,53,8,0,0,0,182,69,174,51,8,0,0,0,163,52,62,50,8,0,0,0,20,144,209,48,8,0,0,0,219,75,104,47,8,0,0,0,5,92,2,46,8,0,0,0,217,180,159,44,8,0,0,0,209,74,64,43,8,0,0,0,159,18,228,41,8,0,0,0,41,1,139,40,8,0,0,0,137,11,53,39,8,0,0,0,9,39,226,37,8,0,0,0,37,73,146,36,8,0,0,0,138,103,69,35,8,0,0,0,19,120,251,33,8,0,0,0,199,112,180,32,8,0,0,0,221,71,112,31,8,0,0,0,180,243,46,30,8,0,0,0,219,106,240,28,8,0,0,0,5,164,180,27,8,0,0,0,18,150,123,26,8,0,0,0,9,56,69,25,8,0,0,0,25,129,17,24,8,0,0,0,149,104,224,22,8,0,0,0,248,229,177,21,8,0,0,0,225,240,133,20,8,0,0,0,20,129,92,19,8,0,0,0,118,142,53,18,8,0,0,0,18,17,17,17,8,0,0,0,16,1,239,15,8,0,0,0,191,86,207,14,8,0,0,0,137,10,178,13,8,0,0,0,252,20,151,12,8,0,0,0,195,110,126,11,8,0,0,0,167,16,104,10,8,0,0,0,145,243,83,9,8,0,0,0,133,16,66,8,8,0,0,0,165,96,50,7,8,0,0,0,48,221,36,6,8,0,0,0,126,127,25,5,8,0,0,0,5,65,16,4,8,0,0,0,82,27,9,3,8,0,0,0,17,8,4,2,8,0,0,0,2,1,1,1,8,0,0,0,0,0,0,192,0,0,0,192,0,0,0,192,0,0,0,192,0,0,0,192,0,0,0,0,8,0,0,0,1,0,0,0,2,0,0,0,1,0,0,0,1,0,0,0,3,0,0,0,2,0,0,0,0,0,0,192,0,0,0,0,16,0,0,0,4,0,0,0,5,0,0,0,3,0,0,0,1,0,0,0,3,0,0,0,4,0,0,0,0,0,0,192,0,0,0,0,32,0,0,0,6,0,0,0,7,0,0,0,1,0,0,0,1,0,0,0,1,0,0,0,0,0,0,0,40,0,0,0,8,0,0,0,9,0,0,0,2,0,0,0,3,0,0,0,1,0,0,0,4,0,0,0,5,0,0,0,6,0,0,0,7,0,0,0,0,0,0,0,48,0,0,0,8,0,0,0,10,0,0,0,8,0,0,0,3,0,0,0,1,0,0,0,9,0,0,0,5,0,0,0,6,0,0,0,7,0,0,0,10,0,0,0,2,0,0,0,3,0,0,0,1,0,0,0,0,0,0,0,64,0,0,0,11,0,0,0,12,0,0,0,2,0,0,0,4,0,0,0,3,0,0,0,5,0,0,0,4,0,0,0,0,0,0,0,72,0,0,0,13,0,0,0,14,0,0,0,5,0,0,0,4,0,0,0,3,0,0,0,5,0,0,0,6,0,0,0,7,0,0,0,8,0,0,0,11,0,0,0,6,0,0,0,0,0,0,0,104,0,0,0,15,0,0,0,16,0,0,0,1,0,0,0,12,0,0,0,1,0,0,0,13,0,0,0,7,0,0,0,8,0,0,0,9,0,0,0,10,0,0,0,14,0,0,0,15,0,0,0,1,0,0,0,1,0,0,0,0,0,0,0,88,0,0,0,15,0,0,0,17,0,0,0,16,0,0,0,12,0,0,0,17,0,0,0,13,0,0,0,7,0,0,0,8,0,0,0,9,0,0,0,10,0,0,0,14,0,0,0,15,0,0,0,1,0,0,0,2,0,0,0,0,0,0,0,208,0,0,0,15,0,0,0,18,0,0,0,18,0,0,0,12,0,0,0,19,0,0,0,13,0,0,0,7,0,0,0,8,0,0,0,9,0,0,0,10,0,0,0,14,0,0,0,15,0,0,0,3,0,0,0,4,0,0,0,0,0,0,0,192,0,0,0,15,0,0,0,19,0,0,0,20,0,0,0,12,0,0,0,21,0,0,0,13,0,0,0,7,0,0,0,8,0,0,0,9,0,0,0,10,0,0,0,14,0,0,0,15,0,0,0,5,0,0,0,6,0,0,0,0,0,0,0,176,0,0,0,20,0,0,0,21,0,0,0,22,0,0,0,12,0,0,0,23,0,0,0,13,0,0,0,7,0,0,0,8,0,0,0,11,0,0,0,12,0,0,0,14,0,0,0,15,0,0,0,7,0,0,0,8,0,0,0,0,0,0,0,144,0,0,0,22,0,0,0,23,0,0,0,24,0,0,0,12,0,0,0,25,0,0,0,26,0,0,0,13,0,0,0,14,0,0,0,15,0,0,0,16,0,0,0,14,0,0,0,15,0,0,0,9,0,0,0,10,0,0,0,0,0,0,0,32,1,0,0,15,0,0,0,24,0,0,0,27,0,0,0,12,0,0,0,28,0,0,0,13,0,0,0,7,0,0,0,8,0,0,0,9,0,0,0,10,0,0,0,14,0,0,0,15,0,0,0,11,0,0,0,12,0,0,0,0,0,0,0,16,1,0,0,15,0,0,0,25,0,0,0,29,0,0,0,12,0,0,0,30,0,0,0,13,0,0,0,7,0,0,0,8,0,0,0,9,0,0,0,10,0,0,0,14,0,0,0,15,0,0,0,13,0,0,0,14,0,0,0,0,0,0,0,0,1,0,0,26,0,0,0,27,0,0,0,31,0,0,0,12,0,0,0,32,0,0,0,13,0,0,0,7,0,0,0,8,0,0,0,17,0,0,0,18,0,0,0,14,0,0,0,15,0,0,0,15,0,0,0,16,0,0,0,0,0,0,0,224,0,0,0,28,0,0,0,29,0,0,0,33,0,0,0,12,0,0,0,34,0,0,0,35,0,0,0,19,0,0,0,20,0,0,0,21,0,0,0,22,0,0,0,14,0,0,0,15,0,0,0,17,0,0,0,18,0,0,0,0,0,0,0,48,1,0,0,30,0,0,0,31,0,0,0,9,0,0,0,4,0,0,0,3,0,0,0,5,0,0,0,6,0,0,0,10,0,0,0,8,0,0,0,11,0,0,0,23,0,0,0,36,0,0,0,24,0,0,0,0,0,0,0,64,1,0,0,13,0,0,0,32,0,0,0,11,0,0,0,4,0,0,0,3,0,0,0,5,0,0,0,6,0,0,0,12,0,0,0,13,0,0,0,37,0,0,0,25,0,0,0,0,0,0,0,80,1,0,0,33,0,0,0,34,0,0,0,38,0,0,0,39,0,0,0,40,0,0,0,41,0,0,0,26,0,0,0,27,0,0,0,28,0,0,0,29,0,0,0,42,0,0,0,43,0,0,0,19,0,0,0,20,0,0,0,0,0,0,0,0,2,0,0,33,0,0,0,35,0,0,0,44,0,0,0,39,0,0,0,45,0,0,0,41,0,0,0,26,0,0,0,27,0,0,0,28,0,0,0,29,0,0,0,42,0,0,0,43,0,0,0,21,0,0,0,22,0,0,0,0,0,0,0,240,1,0,0,33,0,0,0,36,0,0,0,46,0,0,0,39,0,0,0,47,0,0,0,41,0,0,0,26,0,0,0,27,0,0,0,28,0,0,0,29,0,0,0,42,0,0,0,43,0,0,0,23,0,0,0,24,0,0,0,0,0,0,0,224,1,0,0,37,0,0,0,38,0,0,0,48,0,0,0,39,0,0,0,49,0,0,0,41,0,0,0,26,0,0,0,27,0,0,0,30,0,0,0,31,0,0,0,42,0,0,0,43,0,0,0,25,0,0,0,26,0,0,0,0,0,0,0,192,1,0,0,39,0,0,0,40,0,0,0,50,0,0,0,39,0,0,0,51,0,0,0,52,0,0,0,32,0,0,0,33,0,0,0,34,0,0,0,35,0,0,0,42,0,0,0,43,0,0,0,27,0,0,0,28,0,0,0,0,0,0,0,176,1,0,0,33,0,0,0,41,0,0,0,53,0,0,0,39,0,0,0,54,0,0,0,41,0,0,0,26,0,0,0,27,0,0,0,28,0,0,0,29,0,0,0,42,0,0,0,43,0,0,0,29,0,0,0,30,0,0,0,0,0,0,0,160,1,0,0,33,0,0,0,42,0,0,0,55,0,0,0,39,0,0,0,56,0,0,0,41,0,0,0,26,0,0,0,27,0,0,0,28,0,0,0,29,0,0,0,42,0,0,0,43,0,0,0,31,0,0,0,32,0,0,0,0,0,0,0,144,1,0,0,43,0,0,0,44,0,0,0,57,0,0,0,39,0,0,0,58,0,0,0,41,0,0,0,26,0,0,0,27,0,0,0,36,0,0,0,37,0,0,0,42,0,0,0,43,0,0,0,33,0,0,0,34,0,0,0,0,0,0,0,112,1,0,0,45,0,0,0,46,0,0,0,59,0,0,0,39,0,0,0,60,0,0,0,61,0,0,0,38,0,0,0,39,0,0,0,40,0,0,0,41,0,0,0,42,0,0,0,43,0,0,0,35,0,0,0,36,0,0,0,0,0,0,0,16,2,0,0,33,0,0,0,47,0,0,0,62,0,0,0,63,0,0,0,64,0,0,0,65,0,0,0,42,0,0,0,43,0,0,0,44,0,0,0,45,0,0,0,66,0,0,0,67,0,0,0,37,0,0,0,38,0,0,0,0,0,0,0,192,2,0,0,33,0,0,0,48,0,0,0,68,0,0,0,63,0,0,0,69,0,0,0,65,0,0,0,42,0,0,0,43,0,0,0,44,0,0,0,45,0,0,0,66,0,0,0,67,0,0,0,39,0,0,0,40,0,0,0,0,0,0,0,176,2,0,0,33,0,0,0,49,0,0,0,70,0,0,0,63,0,0,0,71,0,0,0,65,0,0,0,42,0,0,0,43,0,0,0,44,0,0,0,45,0,0,0,66,0,0,0,67,0,0,0,41,0,0,0,42,0,0,0,0,0,0,0,160,2,0,0,50,0,0,0,51,0,0,0,72,0,0,0,63,0,0,0,73,0,0,0,65,0,0,0,42,0,0,0,43,0,0,0,46,0,0,0,47,0,0,0,66,0,0,0,67,0,0,0,43,0,0,0,44,0,0,0,0,0,0,0,128,2,0,0,52,0,0,0,53,0,0,0,74,0,0,0,63,0,0,0,75,0,0,0,76,0,0,0,48,0,0,0,49,0,0,0,50,0,0,0,51,0,0,0,66,0,0,0,67,0,0,0,45,0,0,0,46,0,0,0,0,0,0,0,112,2,0,0,33,0,0,0,54,0,0,0,77,0,0,0,63,0,0,0,78,0,0,0,65,0,0,0,42,0,0,0,43,0,0,0,44,0,0,0,45,0,0,0,66,0,0,0,67,0,0,0,47,0,0,0,48,0,0,0,0,0,0,0,96,2,0,0,33,0,0,0,55,0,0,0,79,0,0,0,63,0,0,0,80,0,0,0,65,0,0,0,42,0,0,0,43,0,0,0,44,0,0,0,45,0,0,0,66,0,0,0,67,0,0,0,49,0,0,0,50,0,0,0,0,0,0,0,80,2,0,0,56,0,0,0,57,0,0,0,81,0,0,0,63,0,0,0,82,0,0,0,65,0,0,0,42,0,0,0,43,0,0,0,52,0,0,0,53,0,0,0,66,0,0,0,67,0,0,0,51,0,0,0,52,0,0,0,0,0,0,0,48,2,0,0,58,0,0,0,59,0,0,0,83,0,0,0,63,0,0,0,84,0,0,0,85,0,0,0,54,0,0,0,55,0,0,0,56,0,0,0,57,0,0,0,66,0,0,0,67,0,0,0,53,0,0,0,54,0,0,0,0,0,0,0,208,2,0,0,60,0,0,0,61,0,0,0,1,0,0,0,58,0,0,0,59,0,0,0,60,0,0,0,0,0,0,0,224,2,0,0,62,0,0,0,63,0,0,0,61,0,0,0,86,0,0,0,0,0,0,0,248,2,0,0,8,0,0,0,64,0,0,0,8,0,0,0,3,0,0,0,62,0,0,0,9,0,0,0,5,0,0,0,6,0,0,0,7,0,0,0,10,0,0,0,2,0,0,0,3,0,0,0,87,0,0,0,0,0,0,0,8,3,0,0,65,0,0,0,66,0,0,0,8,0,0,0,88,0,0,0,63,0,0,0,9,0,0,0,5,0,0,0,6,0,0,0,89,0,0,0,90,0,0,0,64,0,0,0,65,0,0,0,91,0,0,0,0,0,0,0,24,3,0,0,67,0,0,0,68,0,0,0,66,0,0,0,67,0,0,0,68,0,0,0,69,0,0,0,92,0,0,0,93,0,0,0,94,0,0,0,95,0,0,0,0,0,0,0,48,3,0,0,69,0,0,0,70,0,0,0,70,0,0,0,96,0,0,0,0,0,0,0,40,3,0,0,71,0,0,0,72,0,0,0,73,0,0,0,0,0,0,192,0,0,0,0,72,3,0,0,74,0,0,0,75,0,0,0,71,0,0,0,97,0,0,0,0,0,0,0,64,3,0,0,76,0,0,0,77,0,0,0,78,0,0,0,0,0,0,0,88,3,0,0,79,0,0,0,80,0,0,0,72,0,0,0,98,0,0,0,0,0,0,0,112,3,0,0,81,0,0,0,82,0,0,0,73,0,0,0,74,0,0,0,75,0,0,0,76,0,0,0,99,0,0,0,100,0,0,0,101,0,0,0,102,0,0,0,0,0,0,0,128,3,0,0,83,0,0,0,84,0,0,0,77,0,0,0,78,0,0,0,79,0,0,0,80,0,0,0,103,0,0,0,104,0,0,0,105,0,0,0,106,0,0,0,0,0,0,0,1,0,0,0,3,0,0,0,5,0,0,0,7,0,0,0,132,22,0,0,5,0,0,0,0,0,0,0,0,0,0,0,107,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,14,0,0,0,15,0,0,0,188,70,0,0,0,0,0,0,0,0,0,0,0,0,0,0,2,0,0,0,0,0,0,0,0,0,0,0,0,0,0,255,255,255,255,255,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,2,0,0,0,3,0,0,0,5,0,0,0,7,0,0,0,11,0,0,0,13,0,0,0,17,0,0,0,19,0,0,0,23,0,0,0,29,0,0,0,31,0,0,0,37,0,0,0,41,0,0,0,43,0,0,0,47,0,0,0,53,0,0,0,59,0,0,0,61,0,0,0,67,0,0,0,71,0,0,0,73,0,0,0,79,0,0,0,83,0,0,0,89,0,0,0,97,0,0,0,101,0,0,0,103,0,0,0,107,0,0,0,109,0,0,0,113,0,0,0,127,0,0,0,131,0,0,0,137,0,0,0,139,0,0,0,149,0,0,0,151,0,0,0,157,0,0,0,163,0,0,0,167,0,0,0,173,0,0,0,179,0,0,0,181,0,0,0,191,0,0,0,193,0,0,0,197,0,0,0,199,0,0,0,211,0,0,0,1,0,0,0,11,0,0,0,13,0,0,0,17,0,0,0,19,0,0,0,23,0,0,0,29,0,0,0,31,0,0,0,37,0,0,0,41,0,0,0,43,0,0,0,47,0,0,0,53,0,0,0,59,0,0,0,61,0,0,0,67,0,0,0,71,0,0,0,73,0,0,0,79,0,0,0,83,0,0,0,89,0,0,0,97,0,0,0,101,0,0,0,103,0,0,0,107,0,0,0,109,0,0,0,113,0,0,0,121,0,0,0,127,0,0,0,131,0,0,0,137,0,0,0,139,0,0,0,143,0,0,0,149,0,0,0,151,0,0,0,157,0,0,0,163,0,0,0,167,0,0,0,169,0,0,0,173,0,0,0,179,0,0,0,181,0,0,0,187,0,0,0,191,0,0,0,193,0,0,0,197,0,0,0,199,0,0,0,209,0,0,0,2,0,0,0,213,66,0,0,0,0,0,0,152,3,0,0,85,0,0,0,86,0,0,0,87,0,0,0,88,0,0,0,16,0,0,0,1,0,0,0,1,0,0,0,1,0,0,0,0,0,0,0,192,3,0,0,85,0,0,0,89,0,0,0,87,0,0,0,88,0,0,0,16,0,0,0,2,0,0,0,2,0,0,0,2,0,0,0,0,0,0,0,208,3,0,0,90,0,0,0,91,0,0,0,108,0,0,0,40,97,110,115,45,62,115,116,97,116,101,41,32,62,61,32,40,40,49,48,50,52,117,32,42,32,52,41,41,0,46,47,99,111,114,101,47,97,110,115,46,104,0,97,110,115,95,119,114,105,116,101,95,101,110,100,0,40,97,110,115,45,62,115,116,97,116,101,41,32,60,32,40,40,49,48,50,52,117,32,42,32,52,41,32,42,32,50,53,54,41,0,40,110,98,105,116,115,41,32,62,61,32,40,48,41,0,46,47,99,111,114,101,47,98,105,116,95,99,111,100,101,114,46,104,0,71,101,116,66,105,116,115,0,40,110,98,105,116,115,41,32,60,61,32,40,51,50,41,0,97,116,116,95,105,100,32,62,61,32,48,0,112,111,105,110,116,95,99,108,111,117,100,47,112,111,105,110,116,95,99,108,111,117,100,46,99,99,0,83,101,116,65,116,116,114,105,98,117,116,101,0,78,53,100,114,97,99,111,49,48,80,111,105,110,116,67,108,111,117,100,69,0,78,53,100,114,97,99,111,52,77,101,115,104,69,0,78,53,100,114,97,99,111,49,55,65,116,116,114,105,98,117,116,101,115,68,101,99,111,100,101,114,69,0,78,53,100,114,97,99,111,49,55,80,111,105,110,116,67,108,111,117,100,68,101,99,111,100,101,114,69,0,68,82,65,67,79,0,78,53,100,114,97,99,111,49,49,77,101,115,104,68,101,99,111,100,101,114,69,0,78,53,100,114,97,99,111,50,54,83,101,113,117,101,110,116,105,97,108,65,116,116,114,105,98,117,116,101,68,101,99,111,100,101,114,69,0,78,53,100,114,97,99,111,50,54,80,114,101,100,105,99,116,105,111,110,83,99,104,101,109,101,68,105,102,102,101,114,101,110,99,101,73,105,78,83,95,50,57,80,114,101,100,105,99,116,105,111,110,83,99,104,101,109,101,87,114,97,112,84,114,97,110,115,102,111,114,109,73,105,105,69,69,69,69,0,78,53,100,114,97,99,111,49,54,80,114,101,100,105,99,116,105,111,110,83,99,104,101,109,101,73,105,78,83,95,50,57,80,114,101,100,105,99,116,105,111,110,83,99,104,101,109,101,87,114,97,112,84,114,97,110,115,102,111,114,109,73,105,105,69,69,69,69,0,78,53,100,114,97,99,111,51,48,80,114,101,100,105,99,116,105,111,110,83,99,104,101,109,101,84,121,112,101,100,73,110,116,101,114,102,97,99,101,73,105,105,69,69,0,78,53,100,114,97,99,111,50,53,80,114,101,100,105,99,116,105,111,110,83,99,104,101,109,101,73,110,116,101,114,102,97,99,101,69,0,78,53,100,114,97,99,111,50,57,77,101,115,104,80,114,101,100,105,99,116,105,111,110,83,99,104,101,109,101,84,101,120,67,111,111,114,100,115,73,105,78,83,95,50,57,80,114,101,100,105,99,116,105,111,110,83,99,104,101,109,101,87,114,97,112,84,114,97,110,115,102,111,114,109,73,105,105,69,69,78,83,95,50,52,77,101,115,104,80,114,101,100,105,99,116,105,111,110,83,99,104,101,109,101,68,97,116,97,73,78,83,95,49,49,67,111,114,110,101,114,84,97,98,108,101,69,69,69,69,69,0,78,53,100,114,97,99,111,50,48,77,101,115,104,80,114,101,100,105,99,116,105,111,110,83,99,104,101,109,101,73,105,78,83,95,50,57,80,114,101,100,105,99,116,105,111,110,83,99,104,101,109,101,87,114,97,112,84,114,97,110,115,102,111,114,109,73,105,105,69,69,78,83,95,50,52,77,101,115,104,80,114,101,100,105,99,116,105,111,110,83,99,104,101,109,101,68,97,116,97,73,78,83,95,49,49,67,111,114,110,101,114,84,97,98,108,101,69,69,69,69,69,0,78,53,100,114,97,99,111,52,57,77,101,115,104,80,114,101,100,105,99,116,105,111,110,83,99,104,101,109,101,67,111,110,115,116,114,97,105,110,101,100,77,117,108,116,105,80,97,114,97,108,108,101,108,111,103,114,97,109,73,105,78,83,95,50,57,80,114,101,100,105,99,116,105,111,110,83,99,104,101,109,101,87,114,97,112,84,114,97,110,115,102,111,114,109,73,105,105,69,69,78,83,95,50,52,77,101,115,104,80,114,101,100,105,99,116,105,111,110,83,99,104,101,109,101,68,97,116,97,73,78,83,95,49,49,67,111,114,110,101,114,84,97,98,108,101,69,69,69,69,69,0,78,53,100,114,97,99,111,51,56,77,101,115,104,80,114,101,100,105,99,116,105,111,110,83,99,104,101,109,101,77,117,108,116,105,80,97,114,97,108,108,101,108,111,103,114,97,109,73,105,78,83,95,50,57,80,114,101,100,105,99,116,105,111,110,83,99,104,101,109,101,87,114,97,112,84,114,97,110,115,102,111,114,109,73,105,105,69,69,78,83,95,50,52,77,101,115,104,80,114,101,100,105,99,116,105,111,110,83,99,104,101,109,101,68,97,116,97,73,78,83,95,49,49,67,111,114,110,101,114,84,97,98,108,101,69,69,69,69,69,0,78,53,100,114,97,99,111,51,51,77,101,115,104,80,114,101,100,105,99,116,105,111,110,83,99,104,101,109,101,80,97,114,97,108,108,101,108,111,103,114,97,109,73,105,78,83,95,50,57,80,114,101,100,105,99,116,105,111,110,83,99,104,101,109,101,87,114,97,112,84,114,97,110,115,102,111,114,109,73,105,105,69,69,78,83,95,50,52,77,101,115,104,80,114,101,100,105,99,116,105,111,110,83,99,104,101,109,101,68,97,116,97,73,78,83,95,49,49,67,111,114,110,101,114,84,97,98,108,101,69,69,69,69,69,0,78,53,100,114,97,99,111,50,57,77,101,115,104,80,114,101,100,105,99,116,105,111,110,83,99,104,101,109,101,84,101,120,67,111,111,114,100,115,73,105,78,83,95,50,57,80,114,101,100,105,99,116,105,111,110,83,99,104,101,109,101,87,114,97,112,84,114,97,110,115,102,111,114,109,73,105,105,69,69,78,83,95,50,52,77,101,115,104,80,114,101,100,105,99,116,105,111,110,83,99,104,101,109,101,68,97,116,97,73,78,83,95,50,52,77,101,115,104,65,116,116,114,105,98,117,116,101,67,111,114,110,101,114,84,97,98,108,101,69,69,69,69,69,0,78,53,100,114,97,99,111,50,48,77,101,115,104,80,114,101,100,105,99,116,105,111,110,83,99,104,101,109,101,73,105,78,83,95,50,57,80,114,101,100,105,99,116,105,111,110,83,99,104,101,109,101,87,114,97,112,84,114,97,110,115,102,111,114,109,73,105,105,69,69,78,83,95,50,52,77,101,115,104,80,114,101,100,105,99,116,105,111,110,83,99,104,101,109,101,68,97,116,97,73,78,83,95,50,52,77,101,115,104,65,116,116,114,105,98,117,116,101,67,111,114,110,101,114,84,97,98,108,101,69,69,69,69,69,0,78,53,100,114,97,99,111,52,57,77,101,115,104,80,114,101,100,105,99,116,105,111,110,83,99,104,101,109,101,67,111,110,115,116,114,97,105,110,101,100,77,117,108,116,105,80,97,114,97,108,108,101,108,111,103,114,97,109,73,105,78,83,95,50,57,80,114,101,100,105,99,116,105,111,110,83,99,104,101,109,101,87,114,97,112,84,114,97,110,115,102,111,114,109,73,105,105,69,69,78,83,95,50,52,77,101,115,104,80,114,101,100,105,99,116,105,111,110,83,99,104,101,109,101,68,97,116,97,73,78,83,95,50,52,77,101,115,104,65,116,116,114,105,98,117,116,101,67,111,114,110,101,114,84,97,98,108,101,69,69,69,69,69,0,78,53,100,114,97,99,111,51,56,77,101,115,104,80,114,101,100,105,99,116,105,111,110,83,99,104,101,109,101,77,117,108,116,105,80,97,114,97,108,108,101,108,111,103,114,97,109,73,105,78,83,95,50,57,80,114,101,100,105,99,116,105,111,110,83,99,104,101,109,101,87,114,97,112,84,114,97,110,115,102,111,114,109,73,105,105,69,69,78,83,95,50,52,77,101,115,104,80,114,101,100,105,99,116,105,111,110,83,99,104,101,109,101,68,97,116,97,73,78,83,95,50,52,77,101,115,104,65,116,116,114,105,98,117,116,101,67,111,114,110,101,114,84,97,98,108,101,69,69,69,69,69,0,78,53,100,114,97,99,111,51,51,77,101,115,104,80,114,101,100,105,99,116,105,111,110,83,99,104,101,109,101,80,97,114,97,108,108,101,108,111,103,114,97,109,73,105,78,83,95,50,57,80,114,101,100,105,99,116,105,111,110,83,99,104,101,109,101,87,114,97,112,84,114,97,110,115,102,111,114,109,73,105,105,69,69,78,83,95,50,52,77,101,115,104,80,114,101,100,105,99,116,105,111,110,83,99,104,101,109,101,68,97,116,97,73,78,83,95,50,52,77,101,115,104,65,116,116,114,105,98,117,116,101,67,111,114,110,101,114,84,97,98,108,101,69,69,69,69,69,0,78,53,100,114,97,99,111,51,51,83,101,113,117,101,110,116,105,97,108,73,110,116,101,103,101,114,65,116,116,114,105,98,117,116,101,68,101,99,111,100,101,114,69,0,78,53,100,114,97,99,111,51,56,83,101,113,117,101,110,116,105,97,108,81,117,97,110,116,105,122,97,116,105,111,110,65,116,116,114,105,98,117,116,101,68,101,99,111,100,101,114,69,0,40,112,114,101,100,95,118,97,108,115,91,48,93,41,32,60,61,32,40,50,32,42,32,109,97,120,95,118,97,108,117,101,95,41,0,46,47,99,111,109,112,114,101,115,115,105,111,110,47,97,116,116,114,105,98,117,116,101,115,47,112,114,101,100,105,99,116,105,111,110,95,115,99,104,101,109,101,115,47,112,114,101,100,105,99,116,105,111,110,95,115,99,104,101,109,101,95,110,111,114,109,97,108,95,111,99,116,97,104,101,100,114,111,110,95,99,97,110,111,110,105,99,97,108,105,122,101,100,95,116,114,97,110,115,102,111,114,109,46,104,0,67,111,109,112,117,116,101,79,114,105,103,105,110,97,108,86,97,108,117,101,0,40,112,114,101,100,95,118,97,108,115,91,49,93,41,32,60,61,32,40,50,32,42,32,109,97,120,95,118,97,108,117,101,95,41,0,40,99,111,114,114,95,118,97,108,115,91,118,97,108,95,105,100,93,41,32,60,61,32,40,50,32,42,32,109,97,120,95,118,97,108,117,101,95,41,0,40,99,111,114,114,95,118,97,108,115,91,118,97,108,95,105,100,32,43,32,49,93,41,32,60,61,32,40,50,32,42,32,109,97,120,95,118,97,108,117,101,95,41,0,40,48,41,32,60,61,32,40,112,114,101,100,95,118,97,108,115,91,48,93,41,0,40,48,41,32,60,61,32,40,112,114,101,100,95,118,97,108,115,91,49,93,41,0,40,48,41,32,60,61,32,40,99,111,114,114,95,118,97,108,115,91,118,97,108,95,105,100,93,41,0,40,48,41,32,60,61,32,40,99,111,114,114,95,118,97,108,115,91,118,97,108,95,105,100,32,43,32,49,93,41,0,40,112,114,101,100,95,118,97,108,115,91,48,93,41,32,60,61,32,40,109,97,120,95,118,97,108,117,101,95,32,42,32,50,41,0,67,111,109,112,117,116,101,67,111,114,114,101,99,116,105,111,110,0,40,112,114,101,100,95,118,97,108,115,91,49,93,41,32,60,61,32,40,109,97,120,95,118,97,108,117,101,95,32,42,32,50,41,0,40,111,114,105,103,95,118,97,108,115,91,48,93,41,32,60,61,32,40,109,97,120,95,118,97,108,117,101,95,32,42,32,50,41,0,40,111,114,105,103,95,118,97,108,115,91,49,93,41,32,60,61,32,40,109,97,120,95,118,97,108,117,101,95,32,42,32,50,41,0,40,48,41,32,60,61,32,40,111,114,105,103,95,118,97,108,115,91,48,93,41,0,40,48,41,32,60,61,32,40,111,114,105,103,95,118,97,108,115,91,49,93,41,0,40,116,114,117,101,41,32,61,61,32,40,86,101,114,105,102,121,40,111,114,105,103,44,32,112,114,101,100,44,32,99,111,114,114,41,41,0,40,120,41,32,60,61,32,40,109,97,120,95,118,97,108,117,101,95,32,42,32,50,41,0,77,97,107,101,80,111,115,105,116,105,118,101,0,78,53,100,114,97,99,111,50,54,80,114,101,100,105,99,116,105,111,110,83,99,104,101,109,101,68,105,102,102,101,114,101,110,99,101,73,105,78,83,95,53,52,80,114,101,100,105,99,116,105,111,110,83,99,104,101,109,101,78,111,114,109,97,108,79,99,116,97,104,101,100,114,111,110,67,97,110,111,110,105,99,97,108,105,122,101,100,84,114,97,110,115,102,111,114,109,73,105,69,69,69,69,0,78,53,100,114,97,99,111,49,54,80,114,101,100,105,99,116,105,111,110,83,99,104,101,109,101,73,105,78,83,95,53,52,80,114,101,100,105,99,116,105,111,110,83,99,104,101,109,101,78,111,114,109,97,108,79,99,116,97,104,101,100,114,111,110,67,97,110,111,110,105,99,97,108,105,122,101,100,84,114,97,110,115,102,111,114,109,73,105,69,69,69,69,0,40,105,41,32,61,61,32,40,48,41,0,46,47,99,111,109,112,114,101,115,115,105,111,110,47,97,116,116,114,105,98,117,116,101,115,47,112,114,101,100,105,99,116,105,111,110,95,115,99,104,101,109,101,115,47,109,101,115,104,95,112,114,101,100,105,99,116,105,111,110,95,115,99,104,101,109,101,95,116,101,120,95,99,111,111,114,100,115,46,104,0,71,101,116,80,97,114,101,110,116,65,116,116,114,105,98,117,116,101,84,121,112,101,0,78,53,100,114,97,99,111,50,57,77,101,115,104,80,114,101,100,105,99,116,105,111,110,83,99,104,101,109,101,84,101,120,67,111,111,114,100,115,73,105,78,83,95,53,52,80,114,101,100,105,99,116,105,111,110,83,99,104,101,109,101,78,111,114,109,97,108,79,99,116,97,104,101,100,114,111,110,67,97,110,111,110,105,99,97,108,105,122,101,100,84,114,97,110,115,102,111,114,109,73,105,69,69,78,83,95,50,52,77,101,115,104,80,114,101,100,105,99,116,105,111,110,83,99,104,101,109,101,68,97,116,97,73,78,83,95,49,49,67,111,114,110,101,114,84,97,98,108,101,69,69,69,69,69,0,78,53,100,114,97,99,111,50,48,77,101,115,104,80,114,101,100,105,99,116,105,111,110,83,99,104,101,109,101,73,105,78,83,95,53,52,80,114,101,100,105,99,116,105,111,110,83,99,104,101,109,101,78,111,114,109,97,108,79,99,116,97,104,101,100,114,111,110,67,97,110,111,110,105,99,97,108,105,122,101,100,84,114,97,110,115,102,111,114,109,73,105,69,69,78,83,95,50,52,77,101,115,104,80,114,101,100,105,99,116,105,111,110,83,99,104,101,109,101,68,97,116,97,73,78,83,95,49,49,67,111,114,110,101,114,84,97,98,108,101,69,69,69,69,69,0,78,53,100,114,97,99,111,52,57,77,101,115,104,80,114,101,100,105,99,116,105,111,110,83,99,104,101,109,101,67,111,110,115,116,114,97,105,110,101,100,77,117,108,116,105,80,97,114,97,108,108,101,108,111,103,114,97,109,73,105,78,83,95,53,52,80,114,101,100,105,99,116,105,111,110,83,99,104,101,109,101,78,111,114,109,97,108,79,99,116,97,104,101,100,114,111,110,67,97,110,111,110,105,99,97,108,105,122,101,100,84,114,97,110,115,102,111,114,109,73,105,69,69,78,83,95,50,52,77,101,115,104,80,114,101,100,105,99,116,105,111,110,83,99,104,101,109,101,68,97,116,97,73,78,83,95,49,49,67,111,114,110,101,114,84,97,98,108,101,69,69,69,69,69,0,78,53,100,114,97,99,111,51,56,77,101,115,104,80,114,101,100,105,99,116,105,111,110,83,99,104,101,109,101,77,117,108,116,105,80,97,114,97,108,108,101,108,111,103,114,97,109,73,105,78,83,95,53,52,80,114,101,100,105,99,116,105,111,110,83,99,104,101,109,101,78,111,114,109,97,108,79,99,116,97,104,101,100,114,111,110,67,97,110,111,110,105,99,97,108,105,122,101,100,84,114,97,110,115,102,111,114,109,73,105,69,69,78,83,95,50,52,77,101,115,104,80,114,101,100,105,99,116,105,111,110,83,99,104,101,109,101,68,97,116,97,73,78,83,95,49,49,67,111,114,110,101,114,84,97,98,108,101,69,69,69,69,69,0,78,53,100,114,97,99,111,51,51,77,101,115,104,80,114,101,100,105,99,116,105,111,110,83,99,104,101,109,101,80,97,114,97,108,108,101,108,111,103,114,97,109,73,105,78,83,95,53,52,80,114,101,100,105,99,116,105,111,110,83,99,104,101,109,101,78,111,114,109,97,108,79,99,116,97,104,101,100,114,111,110,67,97,110,111,110,105,99,97,108,105,122,101,100,84,114,97,110,115,102,111,114,109,73,105,69,69,78,83,95,50,52,77,101,115,104,80,114,101,100,105,99,116,105,111,110,83,99,104,101,109,101,68,97,116,97,73,78,83,95,49,49,67,111,114,110,101,114,84,97,98,108,101,69,69,69,69,69,0,78,53,100,114,97,99,111,50,57],"i8",ALLOC_NONE,Runtime.GLOBAL_BASE);allocate([77,101,115,104,80,114,101,100,105,99,116,105,111,110,83,99,104,101,109,101,84,101,120,67,111,111,114,100,115,73,105,78,83,95,53,52,80,114,101,100,105,99,116,105,111,110,83,99,104,101,109,101,78,111,114,109,97,108,79,99,116,97,104,101,100,114,111,110,67,97,110,111,110,105,99,97,108,105,122,101,100,84,114,97,110,115,102,111,114,109,73,105,69,69,78,83,95,50,52,77,101,115,104,80,114,101,100,105,99,116,105,111,110,83,99,104,101,109,101,68,97,116,97,73,78,83,95,50,52,77,101,115,104,65,116,116,114,105,98,117,116,101,67,111,114,110,101,114,84,97,98,108,101,69,69,69,69,69,0,78,53,100,114,97,99,111,50,48,77,101,115,104,80,114,101,100,105,99,116,105,111,110,83,99,104,101,109,101,73,105,78,83,95,53,52,80,114,101,100,105,99,116,105,111,110,83,99,104,101,109,101,78,111,114,109,97,108,79,99,116,97,104,101,100,114,111,110,67,97,110,111,110,105,99,97,108,105,122,101,100,84,114,97,110,115,102,111,114,109,73,105,69,69,78,83,95,50,52,77,101,115,104,80,114,101,100,105,99,116,105,111,110,83,99,104,101,109,101,68,97,116,97,73,78,83,95,50,52,77,101,115,104,65,116,116,114,105,98,117,116,101,67,111,114,110,101,114,84,97,98,108,101,69,69,69,69,69,0,78,53,100,114,97,99,111,52,57,77,101,115,104,80,114,101,100,105,99,116,105,111,110,83,99,104,101,109,101,67,111,110,115,116,114,97,105,110,101,100,77,117,108,116,105,80,97,114,97,108,108,101,108,111,103,114,97,109,73,105,78,83,95,53,52,80,114,101,100,105,99,116,105,111,110,83,99,104,101,109,101,78,111,114,109,97,108,79,99,116,97,104,101,100,114,111,110,67,97,110,111,110,105,99,97,108,105,122,101,100,84,114,97,110,115,102,111,114,109,73,105,69,69,78,83,95,50,52,77,101,115,104,80,114,101,100,105,99,116,105,111,110,83,99,104,101,109,101,68,97,116,97,73,78,83,95,50,52,77,101,115,104,65,116,116,114,105,98,117,116,101,67,111,114,110,101,114,84,97,98,108,101,69,69,69,69,69,0,78,53,100,114,97,99,111,51,56,77,101,115,104,80,114,101,100,105,99,116,105,111,110,83,99,104,101,109,101,77,117,108,116,105,80,97,114,97,108,108,101,108,111,103,114,97,109,73,105,78,83,95,53,52,80,114,101,100,105,99,116,105,111,110,83,99,104,101,109,101,78,111,114,109,97,108,79,99,116,97,104,101,100,114,111,110,67,97,110,111,110,105,99,97,108,105,122,101,100,84,114,97,110,115,102,111,114,109,73,105,69,69,78,83,95,50,52,77,101,115,104,80,114,101,100,105,99,116,105,111,110,83,99,104,101,109,101,68,97,116,97,73,78,83,95,50,52,77,101,115,104,65,116,116,114,105,98,117,116,101,67,111,114,110,101,114,84,97,98,108,101,69,69,69,69,69,0,78,53,100,114,97,99,111,51,51,77,101,115,104,80,114,101,100,105,99,116,105,111,110,83,99,104,101,109,101,80,97,114,97,108,108,101,108,111,103,114,97,109,73,105,78,83,95,53,52,80,114,101,100,105,99,116,105,111,110,83,99,104,101,109,101,78,111,114,109,97,108,79,99,116,97,104,101,100,114,111,110,67,97,110,111,110,105,99,97,108,105,122,101,100,84,114,97,110,115,102,111,114,109,73,105,69,69,78,83,95,50,52,77,101,115,104,80,114,101,100,105,99,116,105,111,110,83,99,104,101,109,101,68,97,116,97,73,78,83,95,50,52,77,101,115,104,65,116,116,114,105,98,117,116,101,67,111,114,110,101,114,84,97,98,108,101,69,69,69,69,69,0,46,47,99,111,109,112,114,101,115,115,105,111,110,47,97,116,116,114,105,98,117,116,101,115,47,112,114,101,100,105,99,116,105,111,110,95,115,99,104,101,109,101,115,47,112,114,101,100,105,99,116,105,111,110,95,115,99,104,101,109,101,95,110,111,114,109,97,108,95,111,99,116,97,104,101,100,114,111,110,95,116,114,97,110,115,102,111,114,109,46,104,0,78,53,100,114,97,99,111,50,54,80,114,101,100,105,99,116,105,111,110,83,99,104,101,109,101,68,105,102,102,101,114,101,110,99,101,73,105,78,83,95,52,49,80,114,101,100,105,99,116,105,111,110,83,99,104,101,109,101,78,111,114,109,97,108,79,99,116,97,104,101,100,114,111,110,84,114,97,110,115,102,111,114,109,73,105,69,69,69,69,0,78,53,100,114,97,99,111,49,54,80,114,101,100,105,99,116,105,111,110,83,99,104,101,109,101,73,105,78,83,95,52,49,80,114,101,100,105,99,116,105,111,110,83,99,104,101,109,101,78,111,114,109,97,108,79,99,116,97,104,101,100,114,111,110,84,114,97,110,115,102,111,114,109,73,105,69,69,69,69,0,78,53,100,114,97,99,111,50,57,77,101,115,104,80,114,101,100,105,99,116,105,111,110,83,99,104,101,109,101,84,101,120,67,111,111,114,100,115,73,105,78,83,95,52,49,80,114,101,100,105,99,116,105,111,110,83,99,104,101,109,101,78,111,114,109,97,108,79,99,116,97,104,101,100,114,111,110,84,114,97,110,115,102,111,114,109,73,105,69,69,78,83,95,50,52,77,101,115,104,80,114,101,100,105,99,116,105,111,110,83,99,104,101,109,101,68,97,116,97,73,78,83,95,49,49,67,111,114,110,101,114,84,97,98,108,101,69,69,69,69,69,0,78,53,100,114,97,99,111,50,48,77,101,115,104,80,114,101,100,105,99,116,105,111,110,83,99,104,101,109,101,73,105,78,83,95,52,49,80,114,101,100,105,99,116,105,111,110,83,99,104,101,109,101,78,111,114,109,97,108,79,99,116,97,104,101,100,114,111,110,84,114,97,110,115,102,111,114,109,73,105,69,69,78,83,95,50,52,77,101,115,104,80,114,101,100,105,99,116,105,111,110,83,99,104,101,109,101,68,97,116,97,73,78,83,95,49,49,67,111,114,110,101,114,84,97,98,108,101,69,69,69,69,69,0,78,53,100,114,97,99,111,52,57,77,101,115,104,80,114,101,100,105,99,116,105,111,110,83,99,104,101,109,101,67,111,110,115,116,114,97,105,110,101,100,77,117,108,116,105,80,97,114,97,108,108,101,108,111,103,114,97,109,73,105,78,83,95,52,49,80,114,101,100,105,99,116,105,111,110,83,99,104,101,109,101,78,111,114,109,97,108,79,99,116,97,104,101,100,114,111,110,84,114,97,110,115,102,111,114,109,73,105,69,69,78,83,95,50,52,77,101,115,104,80,114,101,100,105,99,116,105,111,110,83,99,104,101,109,101,68,97,116,97,73,78,83,95,49,49,67,111,114,110,101,114,84,97,98,108,101,69,69,69,69,69,0,78,53,100,114,97,99,111,51,56,77,101,115,104,80,114,101,100,105,99,116,105,111,110,83,99,104,101,109,101,77,117,108,116,105,80,97,114,97,108,108,101,108,111,103,114,97,109,73,105,78,83,95,52,49,80,114,101,100,105,99,116,105,111,110,83,99,104,101,109,101,78,111,114,109,97,108,79,99,116,97,104,101,100,114,111,110,84,114,97,110,115,102,111,114,109,73,105,69,69,78,83,95,50,52,77,101,115,104,80,114,101,100,105,99,116,105,111,110,83,99,104,101,109,101,68,97,116,97,73,78,83,95,49,49,67,111,114,110,101,114,84,97,98,108,101,69,69,69,69,69,0,78,53,100,114,97,99,111,51,51,77,101,115,104,80,114,101,100,105,99,116,105,111,110,83,99,104,101,109,101,80,97,114,97,108,108,101,108,111,103,114,97,109,73,105,78,83,95,52,49,80,114,101,100,105,99,116,105,111,110,83,99,104,101,109,101,78,111,114,109,97,108,79,99,116,97,104,101,100,114,111,110,84,114,97,110,115,102,111,114,109,73,105,69,69,78,83,95,50,52,77,101,115,104,80,114,101,100,105,99,116,105,111,110,83,99,104,101,109,101,68,97,116,97,73,78,83,95,49,49,67,111,114,110,101,114,84,97,98,108,101,69,69,69,69,69,0,78,53,100,114,97,99,111,50,57,77,101,115,104,80,114,101,100,105,99,116,105,111,110,83,99,104,101,109,101,84,101,120,67,111,111,114,100,115,73,105,78,83,95,52,49,80,114,101,100,105,99,116,105,111,110,83,99,104,101,109,101,78,111,114,109,97,108,79,99,116,97,104,101,100,114,111,110,84,114,97,110,115,102,111,114,109,73,105,69,69,78,83,95,50,52,77,101,115,104,80,114,101,100,105,99,116,105,111,110,83,99,104,101,109,101,68,97,116,97,73,78,83,95,50,52,77,101,115,104,65,116,116,114,105,98,117,116,101,67,111,114,110,101,114,84,97,98,108,101,69,69,69,69,69,0,78,53,100,114,97,99,111,50,48,77,101,115,104,80,114,101,100,105,99,116,105,111,110,83,99,104,101,109,101,73,105,78,83,95,52,49,80,114,101,100,105,99,116,105,111,110,83,99,104,101,109,101,78,111,114,109,97,108,79,99,116,97,104,101,100,114,111,110,84,114,97,110,115,102,111,114,109,73,105,69,69,78,83,95,50,52,77,101,115,104,80,114,101,100,105,99,116,105,111,110,83,99,104,101,109,101,68,97,116,97,73,78,83,95,50,52,77,101,115,104,65,116,116,114,105,98,117,116,101,67,111,114,110,101,114,84,97,98,108,101,69,69,69,69,69,0,78,53,100,114,97,99,111,52,57,77,101,115,104,80,114,101,100,105,99,116,105,111,110,83,99,104,101,109,101,67,111,110,115,116,114,97,105,110,101,100,77,117,108,116,105,80,97,114,97,108,108,101,108,111,103,114,97,109,73,105,78,83,95,52,49,80,114,101,100,105,99,116,105,111,110,83,99,104,101,109,101,78,111,114,109,97,108,79,99,116,97,104,101,100,114,111,110,84,114,97,110,115,102,111,114,109,73,105,69,69,78,83,95,50,52,77,101,115,104,80,114,101,100,105,99,116,105,111,110,83,99,104,101,109,101,68,97,116,97,73,78,83,95,50,52,77,101,115,104,65,116,116,114,105,98,117,116,101,67,111,114,110,101,114,84,97,98,108,101,69,69,69,69,69,0,78,53,100,114,97,99,111,51,56,77,101,115,104,80,114,101,100,105,99,116,105,111,110,83,99,104,101,109,101,77,117,108,116,105,80,97,114,97,108,108,101,108,111,103,114,97,109,73,105,78,83,95,52,49,80,114,101,100,105,99,116,105,111,110,83,99,104,101,109,101,78,111,114,109,97,108,79,99,116,97,104,101,100,114,111,110,84,114,97,110,115,102,111,114,109,73,105,69,69,78,83,95,50,52,77,101,115,104,80,114,101,100,105,99,116,105,111,110,83,99,104,101,109,101,68,97,116,97,73,78,83,95,50,52,77,101,115,104,65,116,116,114,105,98,117,116,101,67,111,114,110,101,114,84,97,98,108,101,69,69,69,69,69,0,78,53,100,114,97,99,111,51,51,77,101,115,104,80,114,101,100,105,99,116,105,111,110,83,99,104,101,109,101,80,97,114,97,108,108,101,108,111,103,114,97,109,73,105,78,83,95,52,49,80,114,101,100,105,99,116,105,111,110,83,99,104,101,109,101,78,111,114,109,97,108,79,99,116,97,104,101,100,114,111,110,84,114,97,110,115,102,111,114,109,73,105,69,69,78,83,95,50,52,77,101,115,104,80,114,101,100,105,99,116,105,111,110,83,99,104,101,109,101,68,97,116,97,73,78,83,95,50,52,77,101,115,104,65,116,116,114,105,98,117,116,101,67,111,114,110,101,114,84,97,98,108,101,69,69,69,69,69,0,78,53,100,114,97,99,111,51,50,83,101,113,117,101,110,116,105,97,108,78,111,114,109,97,108,65,116,116,114,105,98,117,116,101,68,101,99,111,100,101,114,69,0,40,48,41,32,60,61,32,40,97,116,116,95,105,100,41,0,46,47,112,111,105,110,116,95,99,108,111,117,100,47,112,111,105,110,116,95,99,108,111,117,100,46,104,0,97,116,116,114,105,98,117,116,101,0,40,97,116,116,95,105,100,41,32,60,32,40,115,116,97,116,105,99,95,99,97,115,116,60,105,110,116,51,50,95,116,62,40,97,116,116,114,105,98,117,116,101,115,95,46,115,105,122,101,40,41,41,41,0,78,53,100,114,97,99,111,51,55,83,101,113,117,101,110,116,105,97,108,65,116,116,114,105,98,117,116,101,68,101,99,111,100,101,114,115,67,111,110,116,114,111,108,108,101,114,69,0,78,53,100,114,97,99,111,49,53,76,105,110,101,97,114,83,101,113,117,101,110,99,101,114,69,0,78,53,100,114,97,99,111,49,53,80,111,105,110,116,115,83,101,113,117,101,110,99,101,114,69,0,78,53,100,114,97,99,111,50,49,77,101,115,104,83,101,113,117,101,110,116,105,97,108,68,101,99,111,100,101,114,69,0,78,53,100,114,97,99,111,50,50,77,101,115,104,69,100,103,101,66,114,101,97,107,101,114,68,101,99,111,100,101,114,69,0,78,53,100,114,97,99,111,50,57,67,111,114,110,101,114,84,97,98,108,101,84,114,97,118,101,114,115,97,108,80,114,111,99,101,115,115,111,114,73,78,83,95,50,52,77,101,115,104,65,116,116,114,105,98,117,116,101,67,111,114,110,101,114,84,97,98,108,101,69,69,69,0,40,48,41,32,60,61,32,40,102,97,99,101,95,105,100,46,118,97,108,117,101,40,41,41,0,46,47,109,101,115,104,47,109,101,115,104,46,104,0,102,97,99,101,0,40,102,97,99,101,95,105,100,46,118,97,108,117,101,40,41,41,32,60,32,40,115,116,97,116,105,99,95,99,97,115,116,60,105,110,116,62,40,102,97,99,101,115,95,46,115,105,122,101,40,41,41,41,0,33,105,100,101,110,116,105,116,121,95,109,97,112,112,105,110,103,95,0,46,47,112,111,105,110,116,95,99,108,111,117,100,47,112,111,105,110,116,95,97,116,116,114,105,98,117,116,101,46,104,0,83,101,116,80,111,105,110,116,77,97,112,69,110,116,114,121,0,78,53,100,114,97,99,111,50,50,77,101,115,104,84,114,97,118,101,114,115,97,108,83,101,113,117,101,110,99,101,114,73,78,83,95,50,48,69,100,103,101,66,114,101,97,107,101,114,84,114,97,118,101,114,115,101,114,73,78,83,95,50,57,67,111,114,110,101,114,84,97,98,108,101,84,114,97,118,101,114,115,97,108,80,114,111,99,101,115,115,111,114,73,78,83,95,50,52,77,101,115,104,65,116,116,114,105,98,117,116,101,67,111,114,110,101,114,84,97,98,108,101,69,69,69,78,83,95,51,54,77,101,115,104,65,116,116,114,105,98,117,116,101,73,110,100,105,99,101,115,69,110,99,111,100,105,110,103,79,98,115,101,114,118,101,114,73,83,51,95,69,69,78,83,95,49,57,69,100,103,101,66,114,101,97,107,101,114,79,98,115,101,114,118,101,114,69,69,69,69,69,0,78,53,100,114,97,99,111,50,57,67,111,114,110,101,114,84,97,98,108,101,84,114,97,118,101,114,115,97,108,80,114,111,99,101,115,115,111,114,73,78,83,95,49,49,67,111,114,110,101,114,84,97,98,108,101,69,69,69,0,78,53,100,114,97,99,111,50,50,77,101,115,104,84,114,97,118,101,114,115,97,108,83,101,113,117,101,110,99,101,114,73,78,83,95,50,53,80,114,101,100,105,99,116,105,111,110,68,101,103,114,101,101,84,114,97,118,101,114,115,101,114,73,78,83,95,50,57,67,111,114,110,101,114,84,97,98,108,101,84,114,97,118,101,114,115,97,108,80,114,111,99,101,115,115,111,114,73,78,83,95,49,49,67,111,114,110,101,114,84,97,98,108,101,69,69,69,78,83,95,51,54,77,101,115,104,65,116,116,114,105,98,117,116,101,73,110,100,105,99,101,115,69,110,99,111,100,105,110,103,79,98,115,101,114,118,101,114,73,83,51,95,69,69,69,69,69,69,0,78,53,100,114,97,99,111,50,50,77,101,115,104,84,114,97,118,101,114,115,97,108,83,101,113,117,101,110,99,101,114,73,78,83,95,50,48,69,100,103,101,66,114,101,97,107,101,114,84,114,97,118,101,114,115,101,114,73,78,83,95,50,57,67,111,114,110,101,114,84,97,98,108,101,84,114,97,118,101,114,115,97,108,80,114,111,99,101,115,115,111,114,73,78,83,95,49,49,67,111,114,110,101,114,84,97,98,108,101,69,69,69,78,83,95,51,54,77,101,115,104,65,116,116,114,105,98,117,116,101,73,110,100,105,99,101,115,69,110,99,111,100,105,110,103,79,98,115,101,114,118,101,114,73,83,51,95,69,69,78,83,95,49,57,69,100,103,101,66,114,101,97,107,101,114,79,98,115,101,114,118,101,114,69,69,69,69,69,0,78,53,100,114,97,99,111,50,54,77,101,115,104,69,100,103,101,66,114,101,97,107,101,114,68,101,99,111,100,101,114,73,109,112,108,73,78,83,95,51,49,77,101,115,104,69,100,103,101,66,114,101,97,107,101,114,84,114,97,118,101,114,115,97,108,68,101,99,111,100,101,114,69,69,69,0,78,53,100,114,97,99,111,51,53,77,101,115,104,69,100,103,101,66,114,101,97,107,101,114,68,101,99,111,100,101,114,73,109,112,108,73,110,116,101,114,102,97,99,101,69,0,78,53,100,114,97,99,111,50,54,77,101,115,104,69,100,103,101,66,114,101,97,107,101,114,68,101,99,111,100,101,114,73,109,112,108,73,78,83,95,52,49,77,101,115,104,69,100,103,101,66,114,101,97,107,101,114,84,114,97,118,101,114,115,97,108,80,114,101,100,105,99,116,105,118,101,68,101,99,111,100,101,114,69,69,69,0,78,53,100,114,97,99,111,50,54,77,101,115,104,69,100,103,101,66,114,101,97,107,101,114,68,101,99,111,100,101,114,73,109,112,108,73,78,83,95,51,56,77,101,115,104,69,100,103,101,66,114,101,97,107,101,114,84,114,97,118,101,114,115,97,108,86,97,108,101,110,99,101,68,101,99,111,100,101,114,69,69,69,0,17,0,10,0,17,17,17,0,0,0,0,5,0,0,0,0,0,0,9,0,0,0,0,11,0,0,0,0,0,0,0,0,17,0,15,10,17,17,17,3,10,7,0,1,19,9,11,11,0,0,9,6,11,0,0,11,0,6,17,0,0,0,17,17,17,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,11,0,0,0,0,0,0,0,0,17,0,10,10,17,17,17,0,10,0,0,2,0,9,11,0,0,0,9,0,11,0,0,11,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,12,0,0,0,0,0,0,0,0,0,0,0,12,0,0,0,0,12,0,0,0,0,9,12,0,0,0,0,0,12,0,0,12,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,14,0,0,0,0,0,0,0,0,0,0,0,13,0,0,0,4,13,0,0,0,0,9,14,0,0,0,0,0,14,0,0,14,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,16,0,0,0,0,0,0,0,0,0,0,0,15,0,0,0,0,15,0,0,0,0,9,16,0,0,0,0,0,16,0,0,16,0,0,18,0,0,0,18,18,18,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,18,0,0,0,18,18,18,0,0,0,0,0,0,9,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,11,0,0,0,0,0,0,0,0,0,0,0,10,0,0,0,0,10,0,0,0,0,9,11,0,0,0,0,0,11,0,0,11,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,12,0,0,0,0,0,0,0,0,0,0,0,12,0,0,0,0,12,0,0,0,0,9,12,0,0,0,0,0,12,0,0,12,0,0,48,49,50,51,52,53,54,55,56,57,65,66,67,68,69,70,45,43,32,32,32,48,88,48,120,0,40,110,117,108,108,41,0,45,48,88,43,48,88,32,48,88,45,48,120,43,48,120,32,48,120,0,105,110,102,0,73,78,70,0,110,97,110,0,78,65,78,0,46,0,84,33,34,25,13,1,2,3,17,75,28,12,16,4,11,29,18,30,39,104,110,111,112,113,98,32,5,6,15,19,20,21,26,8,22,7,40,36,23,24,9,10,14,27,31,37,35,131,130,125,38,42,43,60,61,62,63,67,71,74,77,88,89,90,91,92,93,94,95,96,97,99,100,101,102,103,105,106,107,108,114,115,116,121,122,123,124,0,73,108,108,101,103,97,108,32,98,121,116,101,32,115,101,113,117,101,110,99,101,0,68,111,109,97,105,110,32,101,114,114,111,114,0,82,101,115,117,108,116,32,110,111,116,32,114,101,112,114,101,115,101,110,116,97,98,108,101,0,78,111,116,32,97,32,116,116,121,0,80,101,114,109,105,115,115,105,111,110,32,100,101,110,105,101,100,0,79,112,101,114,97,116,105,111,110,32,110,111,116,32,112,101,114,109,105,116,116,101,100,0,78,111,32,115,117,99,104,32,102,105,108,101,32,111,114,32,100,105,114,101,99,116,111,114,121,0,78,111,32,115,117,99,104,32,112,114,111,99,101,115,115,0,70,105,108,101,32,101,120,105,115,116,115,0,86,97,108,117,101,32,116,111,111,32,108,97,114,103,101,32,102,111,114,32,100,97,116,97,32,116,121,112,101,0,78,111,32,115,112,97,99,101,32,108,101,102,116,32,111,110,32,100,101,118,105,99,101,0,79,117,116,32,111,102,32,109,101,109,111,114,121,0,82,101,115,111,117,114,99,101,32,98,117,115,121,0,73,110,116,101,114,114,117,112,116,101,100,32,115,121,115,116,101,109,32,99,97,108,108,0,82,101,115,111,117,114,99,101,32,116,101,109,112,111,114,97,114,105,108,121,32,117,110,97,118,97,105,108,97,98,108,101,0,73,110,118,97,108,105,100,32,115,101,101,107,0,67,114,111,115,115,45,100,101,118,105,99,101,32,108,105,110,107,0,82,101,97,100,45,111,110,108,121,32,102,105,108,101,32,115,121,115,116,101,109,0,68,105,114,101,99,116,111,114,121,32,110,111,116,32,101,109,112,116,121,0,67,111,110,110,101,99,116,105,111,110,32,114,101,115,101,116,32,98,121,32,112,101,101,114,0,79,112,101,114,97,116,105,111,110,32,116,105,109,101,100,32,111,117,116,0,67,111,110,110,101,99,116,105,111,110,32,114,101,102,117,115,101,100,0,72,111,115,116,32,105,115,32,100,111,119,110,0,72,111,115,116,32,105,115,32,117,110,114,101,97,99,104,97,98,108,101,0,65,100,100,114,101,115,115,32,105,110,32,117,115,101,0,66,114,111,107,101,110,32,112,105,112,101,0,73,47,79,32,101,114,114,111,114,0,78,111,32,115,117,99,104,32,100,101,118,105,99,101,32,111,114,32,97,100,100,114,101,115,115,0,66,108,111,99,107,32,100,101,118,105,99,101,32,114,101,113,117,105,114,101,100,0,78,111,32,115,117,99,104,32,100,101,118,105,99,101,0,78,111,116,32,97,32,100,105,114,101,99,116,111,114,121,0,73,115,32,97,32,100,105,114,101,99,116,111,114,121,0,84,101,120,116,32,102,105,108,101,32,98,117,115,121,0,69,120,101,99,32,102,111,114,109,97,116,32,101,114,114,111,114,0,73,110,118,97,108,105,100,32,97,114,103,117,109,101,110,116,0,65,114,103,117,109,101,110,116,32,108,105,115,116,32,116,111,111,32,108,111,110,103,0,83,121,109,98,111,108,105,99,32,108,105,110,107,32,108,111,111,112,0,70,105,108,101,110,97,109,101,32,116,111,111,32,108,111,110,103,0,84,111,111,32,109,97,110,121,32,111,112,101,110,32,102,105,108,101,115,32,105,110,32,115,121,115,116,101,109,0,78,111,32,102,105,108,101,32,100,101,115,99,114,105,112,116,111,114,115,32,97,118,97,105,108,97,98,108,101,0,66,97,100,32,102,105,108,101,32,100,101,115,99,114,105,112,116,111,114,0,78,111,32,99,104,105,108,100,32,112,114,111,99,101,115,115,0,66,97,100,32,97,100,100,114,101,115,115,0,70,105,108,101,32,116,111,111,32,108,97,114,103,101,0,84,111,111,32,109,97,110,121,32,108,105,110,107,115,0,78,111,32,108,111,99,107,115,32,97,118,97,105,108,97,98,108,101,0,82,101,115,111,117,114,99,101,32,100,101,97,100,108,111,99,107,32,119,111,117,108,100,32,111,99,99,117,114,0,83,116,97,116,101,32,110,111,116,32,114,101,99,111,118,101,114,97,98,108,101,0,80,114,101,118,105,111,117,115,32,111,119,110,101,114,32,100,105,101,100,0,79,112,101,114,97,116,105,111,110,32,99,97,110,99,101,108,101,100,0,70,117,110,99,116,105,111,110,32,110,111,116,32,105,109,112,108,101,109,101,110,116,101,100,0,78,111,32,109,101,115,115,97,103,101,32,111,102,32,100,101,115,105,114,101,100,32,116,121,112,101,0,73,100,101,110,116,105,102,105,101,114,32,114,101,109,111,118,101,100,0,68,101,118,105,99,101,32,110,111,116,32,97,32,115,116,114,101,97,109,0,78,111,32,100,97,116,97,32,97,118,97,105,108,97,98,108,101,0,68,101,118,105,99,101,32,116,105,109,101,111,117,116,0,79,117,116,32,111,102,32,115,116,114,101,97,109,115,32,114,101,115,111,117,114,99,101,115,0,76,105,110,107,32,104,97,115,32,98,101,101,110,32,115,101,118,101,114,101,100,0,80,114,111,116,111,99,111,108,32,101,114,114,111,114,0,66,97,100,32,109,101,115,115,97,103,101,0,70,105,108,101,32,100,101,115,99,114,105,112,116,111,114,32,105,110,32,98,97,100,32,115,116,97,116,101,0,78,111,116,32,97,32,115,111,99,107,101,116,0,68,101,115,116,105,110,97,116,105,111,110,32,97,100,100,114,101,115,115,32,114,101,113,117,105,114,101,100,0,77,101,115,115,97,103,101,32,116,111,111,32,108,97,114,103,101,0,80,114,111,116,111,99,111,108,32,119,114,111,110,103,32,116,121,112,101,32,102,111,114,32,115,111,99,107,101,116,0,80,114,111,116,111,99,111,108,32,110,111,116,32,97,118,97,105,108,97,98,108,101,0,80,114,111,116,111,99,111,108,32,110,111,116,32,115,117,112,112,111,114,116,101,100,0,83,111,99,107,101,116,32,116,121,112,101,32,110,111,116,32,115,117,112,112,111,114,116,101,100,0,78,111,116,32,115,117,112,112,111,114,116,101,100,0,80,114,111,116,111,99,111,108,32,102,97,109,105,108,121,32,110,111,116,32,115,117,112,112,111,114,116,101,100,0,65,100,100,114,101,115,115,32,102,97,109,105,108,121,32,110,111,116,32,115,117,112,112,111,114,116,101,100,32,98,121,32,112,114,111,116,111,99,111,108,0,65,100,100,114,101,115,115,32,110,111,116,32,97,118,97,105,108,97,98,108,101,0,78,101,116,119,111,114,107,32,105,115,32,100,111,119,110,0,78,101,116,119,111,114,107,32,117,110,114,101,97,99,104,97,98,108,101,0,67,111,110,110,101,99,116,105,111,110,32,114,101,115,101,116,32,98,121,32,110,101,116,119,111,114,107,0,67,111,110,110,101,99,116,105,111,110,32,97,98,111,114,116,101,100,0,78,111,32,98,117,102,102,101,114,32,115,112,97,99,101,32,97,118,97,105,108,97,98,108,101,0,83,111,99,107,101,116,32,105,115,32,99,111,110,110,101,99,116,101,100,0,83,111,99,107,101,116,32,110,111,116,32,99,111,110,110,101,99,116,101,100,0,67,97,110,110,111,116,32,115,101,110,100,32,97,102,116,101,114,32,115,111,99,107,101,116,32,115,104,117,116,100,111,119,110,0,79,112,101,114,97,116,105,111,110,32,97,108,114,101,97,100,121,32,105,110,32,112,114,111,103,114,101,115,115,0,79,112,101,114,97,116,105,111,110,32,105,110,32,112,114,111,103,114,101,115,115,0,83,116,97,108,101,32,102,105,108,101,32,104,97,110,100,108,101,0,82,101,109,111,116,101,32,73,47,79,32,101,114,114,111,114,0,81,117,111,116,97,32,101,120,99,101,101,100,101,100,0,78,111,32,109,101,100,105,117,109,32,102,111,117,110,100,0,87,114,111,110,103,32,109,101,100,105,117,109,32,116,121,112,101,0,78,111,32,101,114,114,111,114,32,105,110,102,111,114,109,97,116,105,111,110,0,0,33,34,118,101,99,116,111,114,32,108,101,110,103,116,104,95,101,114,114,111,114,34,0,47,117,115,114,47,108,111,99,97,108,47,103,111,111,103,108,101,47,104,111,109,101,47,111,115,116,97,118,97,47,100,101,118,101,47,101,109,115,100,107,95,112,111,114,116,97,98,108,101,47,101,109,115,99,114,105,112,116,101,110,47,109,97,115,116,101,114,47,115,121,115,116,101,109,47,105,110,99,108,117,100,101,47,108,105,98,99,120,120,47,118,101,99,116,111,114,0,95,95,116,104,114,111,119,95,108,101,110,103,116,104,95,101,114,114,111,114,0,33,34,118,101,99,116,111,114,32,111,117,116,95,111,102,95,114,97,110,103,101,34,0,95,95,116,104,114,111,119,95,111,117,116,95,111,102,95,114,97,110,103,101,0,116,101,114,109,105,110,97,116,105,110,103,32,119,105,116,104,32,37,115,32,101,120,99,101,112,116,105,111,110,32,111,102,32,116,121,112,101,32,37,115,58,32,37,115,0,116,101,114,109,105,110,97,116,105,110,103,32,119,105,116,104,32,37,115,32,101,120,99,101,112,116,105,111,110,32,111,102,32,116,121,112,101,32,37,115,0,116,101,114,109,105,110,97,116,105,110,103,32,119,105,116,104,32,37,115,32,102,111,114,101,105,103,110,32,101,120,99,101,112,116,105,111,110,0,116,101,114,109,105,110,97,116,105,110,103,0,117,110,99,97,117,103,104,116,0,83,116,57,101,120,99,101,112,116,105,111,110,0,78,49,48,95,95,99,120,120,97,98,105,118,49,49,54,95,95,115,104,105,109,95,116,121,112,101,95,105,110,102,111,69,0,83,116,57,116,121,112,101,95,105,110,102,111,0,78,49,48,95,95,99,120,120,97,98,105,118,49,50,48,95,95,115,105,95,99,108,97,115,115,95,116,121,112,101,95,105,110,102,111,69,0,78,49,48,95,95,99,120,120,97,98,105,118,49,49,55,95,95,99,108,97,115,115,95,116,121,112,101,95,105,110,102,111,69,0,112,116,104,114,101,97,100,95,111,110,99,101,32,102,97,105,108,117,114,101,32,105,110,32,95,95,99,120,97,95,103,101,116,95,103,108,111,98,97,108,115,95,102,97,115,116,40,41,0,99,97,110,110,111,116,32,99,114,101,97,116,101,32,112,116,104,114,101,97,100,32,107,101,121,32,102,111,114,32,95,95,99,120,97,95,103,101,116,95,103,108,111,98,97,108,115,40,41,0,99,97,110,110,111,116,32,122,101,114,111,32,111,117,116,32,116,104,114,101,97,100,32,118,97,108,117,101,32,102,111,114,32,95,95,99,120,97,95,103,101,116,95,103,108,111,98,97,108,115,40,41,0,116,101,114,109,105,110,97,116,101,95,104,97,110,100,108,101,114,32,117,110,101,120,112,101,99,116,101,100,108,121,32,114,101,116,117,114,110,101,100,0,115,116,100,58,58,98,97,100,95,97,108,108,111,99,0,83,116,57,98,97,100,95,97,108,108,111,99,0,78,49,48,95,95,99,120,120,97,98,105,118,49,49,57,95,95,112,111,105,110,116,101,114,95,116,121,112,101,95,105,110,102,111,69,0,78,49,48,95,95,99,120,120,97,98,105,118,49,49,55,95,95,112,98,97,115,101,95,116,121,112,101,95,105,110,102,111,69,0],"i8",ALLOC_NONE,Runtime.GLOBAL_BASE+10240);var tempDoublePtr=STATICTOP;STATICTOP+=16;Module["_i64Subtract"]=_i64Subtract;function ___assert_fail(condition,filename,line,func){ABORT=true;throw"Assertion failed: "+Pointer_stringify(condition)+", at: "+[filename?Pointer_stringify(filename):"unknown filename",line,func?Pointer_stringify(func):"unknown function"]+" at "+stackTrace()}function __ZSt18uncaught_exceptionv(){return!!__ZSt18uncaught_exceptionv.uncaught_exception}var EXCEPTIONS={last:0,caught:[],infos:{},deAdjust:(function(adjusted){if(!adjusted||EXCEPTIONS.infos[adjusted])return adjusted;for(var ptr in EXCEPTIONS.infos){var info=EXCEPTIONS.infos[ptr];if(info.adjusted===adjusted){return ptr}}return adjusted}),addRef:(function(ptr){if(!ptr)return;var info=EXCEPTIONS.infos[ptr];info.refcount++}),decRef:(function(ptr){if(!ptr)return;var info=EXCEPTIONS.infos[ptr];assert(info.refcount>0);info.refcount--;if(info.refcount===0&&!info.rethrown){if(info.destructor){Runtime.dynCall("vi",info.destructor,[ptr])}delete EXCEPTIONS.infos[ptr];___cxa_free_exception(ptr)}}),clearRef:(function(ptr){if(!ptr)return;var info=EXCEPTIONS.infos[ptr];info.refcount=0})};function ___resumeException(ptr){if(!EXCEPTIONS.last){EXCEPTIONS.last=ptr}throw ptr+" - Exception catching is disabled, this exception cannot be caught. Compile with -s DISABLE_EXCEPTION_CATCHING=0 or DISABLE_EXCEPTION_CATCHING=2 to catch."}function ___cxa_find_matching_catch(){var thrown=EXCEPTIONS.last;if(!thrown){return(asm["setTempRet0"](0),0)|0}var info=EXCEPTIONS.infos[thrown];var throwntype=info.type;if(!throwntype){return(asm["setTempRet0"](0),thrown)|0}var typeArray=Array.prototype.slice.call(arguments);var pointer=Module["___cxa_is_pointer_type"](throwntype);if(!___cxa_find_matching_catch.buffer)___cxa_find_matching_catch.buffer=_malloc(4);HEAP32[___cxa_find_matching_catch.buffer>>2]=thrown;thrown=___cxa_find_matching_catch.buffer;for(var i=0;i>2];info.adjusted=thrown;return(asm["setTempRet0"](typeArray[i]),thrown)|0}}thrown=HEAP32[thrown>>2];return(asm["setTempRet0"](throwntype),thrown)|0}function ___cxa_throw(ptr,type,destructor){EXCEPTIONS.infos[ptr]={ptr:ptr,adjusted:ptr,type:type,destructor:destructor,refcount:0,caught:false,rethrown:false};EXCEPTIONS.last=ptr;if(!("uncaught_exception"in __ZSt18uncaught_exceptionv)){__ZSt18uncaught_exceptionv.uncaught_exception=1}else{__ZSt18uncaught_exceptionv.uncaught_exception++}throw ptr+" - Exception catching is disabled, this exception cannot be caught. Compile with -s DISABLE_EXCEPTION_CATCHING=0 or DISABLE_EXCEPTION_CATCHING=2 to catch."}Module["_memset"]=_memset;Module["_bitshift64Shl"]=_bitshift64Shl;function _abort(){Module["abort"]()}function _pthread_once(ptr,func){if(!_pthread_once.seen)_pthread_once.seen={};if(ptr in _pthread_once.seen)return;Runtime.dynCall("v",func);_pthread_once.seen[ptr]=1}var PTHREAD_SPECIFIC={};function _pthread_getspecific(key){return PTHREAD_SPECIFIC[key]||0}Module["_i64Add"]=_i64Add;var PTHREAD_SPECIFIC_NEXT_KEY=1;var ERRNO_CODES={EPERM:1,ENOENT:2,ESRCH:3,EINTR:4,EIO:5,ENXIO:6,E2BIG:7,ENOEXEC:8,EBADF:9,ECHILD:10,EAGAIN:11,EWOULDBLOCK:11,ENOMEM:12,EACCES:13,EFAULT:14,ENOTBLK:15,EBUSY:16,EEXIST:17,EXDEV:18,ENODEV:19,ENOTDIR:20,EISDIR:21,EINVAL:22,ENFILE:23,EMFILE:24,ENOTTY:25,ETXTBSY:26,EFBIG:27,ENOSPC:28,ESPIPE:29,EROFS:30,EMLINK:31,EPIPE:32,EDOM:33,ERANGE:34,ENOMSG:42,EIDRM:43,ECHRNG:44,EL2NSYNC:45,EL3HLT:46,EL3RST:47,ELNRNG:48,EUNATCH:49,ENOCSI:50,EL2HLT:51,EDEADLK:35,ENOLCK:37,EBADE:52,EBADR:53,EXFULL:54,ENOANO:55,EBADRQC:56,EBADSLT:57,EDEADLOCK:35,EBFONT:59,ENOSTR:60,ENODATA:61,ETIME:62,ENOSR:63,ENONET:64,ENOPKG:65,EREMOTE:66,ENOLINK:67,EADV:68,ESRMNT:69,ECOMM:70,EPROTO:71,EMULTIHOP:72,EDOTDOT:73,EBADMSG:74,ENOTUNIQ:76,EBADFD:77,EREMCHG:78,ELIBACC:79,ELIBBAD:80,ELIBSCN:81,ELIBMAX:82,ELIBEXEC:83,ENOSYS:38,ENOTEMPTY:39,ENAMETOOLONG:36,ELOOP:40,EOPNOTSUPP:95,EPFNOSUPPORT:96,ECONNRESET:104,ENOBUFS:105,EAFNOSUPPORT:97,EPROTOTYPE:91,ENOTSOCK:88,ENOPROTOOPT:92,ESHUTDOWN:108,ECONNREFUSED:111,EADDRINUSE:98,ECONNABORTED:103,ENETUNREACH:101,ENETDOWN:100,ETIMEDOUT:110,EHOSTDOWN:112,EHOSTUNREACH:113,EINPROGRESS:115,EALREADY:114,EDESTADDRREQ:89,EMSGSIZE:90,EPROTONOSUPPORT:93,ESOCKTNOSUPPORT:94,EADDRNOTAVAIL:99,ENETRESET:102,EISCONN:106,ENOTCONN:107,ETOOMANYREFS:109,EUSERS:87,EDQUOT:122,ESTALE:116,ENOTSUP:95,ENOMEDIUM:123,EILSEQ:84,EOVERFLOW:75,ECANCELED:125,ENOTRECOVERABLE:131,EOWNERDEAD:130,ESTRPIPE:86};function _pthread_key_create(key,destructor){if(key==0){return ERRNO_CODES.EINVAL}HEAP32[key>>2]=PTHREAD_SPECIFIC_NEXT_KEY;PTHREAD_SPECIFIC[PTHREAD_SPECIFIC_NEXT_KEY]=0;PTHREAD_SPECIFIC_NEXT_KEY++;return 0}function _pthread_setspecific(key,value){if(!(key in PTHREAD_SPECIFIC)){return ERRNO_CODES.EINVAL}PTHREAD_SPECIFIC[key]=value;return 0}function _malloc(bytes){var ptr=Runtime.dynamicAlloc(bytes+8);return ptr+8&4294967288}Module["_malloc"]=_malloc;function ___cxa_allocate_exception(size){return _malloc(size)}Module["_bitshift64Lshr"]=_bitshift64Lshr;function ___cxa_pure_virtual(){ABORT=true;throw"Pure virtual function called!"}function _pthread_cleanup_push(routine,arg){__ATEXIT__.push((function(){Runtime.dynCall("vi",routine,[arg])}));_pthread_cleanup_push.level=__ATEXIT__.length}function _pthread_cleanup_pop(){assert(_pthread_cleanup_push.level==__ATEXIT__.length,"cannot pop if something else added meanwhile!");__ATEXIT__.pop();_pthread_cleanup_push.level=__ATEXIT__.length}function ___cxa_begin_catch(ptr){var info=EXCEPTIONS.infos[ptr];if(info&&!info.caught){info.caught=true;__ZSt18uncaught_exceptionv.uncaught_exception--}if(info)info.rethrown=false;EXCEPTIONS.caught.push(ptr);EXCEPTIONS.addRef(EXCEPTIONS.deAdjust(ptr));return ptr}function _emscripten_memcpy_big(dest,src,num){HEAPU8.set(HEAPU8.subarray(src,src+num),dest);return dest}Module["_memcpy"]=_memcpy;var SYSCALLS={varargs:0,get:(function(varargs){SYSCALLS.varargs+=4;var ret=HEAP32[SYSCALLS.varargs-4>>2];return ret}),getStr:(function(){var ret=Pointer_stringify(SYSCALLS.get());return ret}),get64:(function(){var low=SYSCALLS.get(),high=SYSCALLS.get();if(low>=0)assert(high===0);else assert(high===-1);return low}),getZero:(function(){assert(SYSCALLS.get()===0)})};function ___syscall6(which,varargs){SYSCALLS.varargs=varargs;try{var stream=SYSCALLS.getStreamFromFD();FS.close(stream);return 0}catch(e){if(typeof FS==="undefined"||!(e instanceof FS.ErrnoError))abort(e);return-e.errno}}var cttz_i8=allocate([8,0,1,0,2,0,1,0,3,0,1,0,2,0,1,0,4,0,1,0,2,0,1,0,3,0,1,0,2,0,1,0,5,0,1,0,2,0,1,0,3,0,1,0,2,0,1,0,4,0,1,0,2,0,1,0,3,0,1,0,2,0,1,0,6,0,1,0,2,0,1,0,3,0,1,0,2,0,1,0,4,0,1,0,2,0,1,0,3,0,1,0,2,0,1,0,5,0,1,0,2,0,1,0,3,0,1,0,2,0,1,0,4,0,1,0,2,0,1,0,3,0,1,0,2,0,1,0,7,0,1,0,2,0,1,0,3,0,1,0,2,0,1,0,4,0,1,0,2,0,1,0,3,0,1,0,2,0,1,0,5,0,1,0,2,0,1,0,3,0,1,0,2,0,1,0,4,0,1,0,2,0,1,0,3,0,1,0,2,0,1,0,6,0,1,0,2,0,1,0,3,0,1,0,2,0,1,0,4,0,1,0,2,0,1,0,3,0,1,0,2,0,1,0,5,0,1,0,2,0,1,0,3,0,1,0,2,0,1,0,4,0,1,0,2,0,1,0,3,0,1,0,2,0,1,0],"i8",ALLOC_STATIC);Module["_llvm_cttz_i32"]=_llvm_cttz_i32;Module["___udivmoddi4"]=___udivmoddi4;Module["___udivdi3"]=___udivdi3;Module["___muldsi3"]=___muldsi3;Module["___muldi3"]=___muldi3;function ___setErrNo(value){if(Module["___errno_location"])HEAP32[Module["___errno_location"]()>>2]=value;return value}Module["_sbrk"]=_sbrk;Module["_memmove"]=_memmove;function ___gxx_personality_v0(){}Module["___uremdi3"]=___uremdi3;Module["_llvm_bswap_i16"]=_llvm_bswap_i16;Module["_pthread_self"]=_pthread_self;function ___syscall140(which,varargs){SYSCALLS.varargs=varargs;try{var stream=SYSCALLS.getStreamFromFD(),offset_high=SYSCALLS.get(),offset_low=SYSCALLS.get(),result=SYSCALLS.get(),whence=SYSCALLS.get();var offset=offset_low;assert(offset_high===0);FS.llseek(stream,offset,whence);HEAP32[result>>2]=stream.position;if(stream.getdents&&offset===0&&whence===0)stream.getdents=null;return 0}catch(e){if(typeof FS==="undefined"||!(e instanceof FS.ErrnoError))abort(e);return-e.errno}}function ___syscall146(which,varargs){SYSCALLS.varargs=varargs;try{var stream=SYSCALLS.get(),iov=SYSCALLS.get(),iovcnt=SYSCALLS.get();var ret=0;if(!___syscall146.buffer){___syscall146.buffers=[null,[],[]];___syscall146.printChar=(function(stream,curr){var buffer=___syscall146.buffers[stream];assert(buffer);if(curr===0||curr===10){(stream===1?Module["print"]:Module["printErr"])(UTF8ArrayToString(buffer,0));buffer.length=0}else{buffer.push(curr)}})}for(var i=0;i>2];var len=HEAP32[iov+(i*8+4)>>2];for(var j=0;j>2]=DYNAMIC_BASE;staticSealed=true;function invoke_iiii(index,a1,a2,a3){try{return Module["dynCall_iiii"](index,a1,a2,a3)}catch(e){if(typeof e!=="number"&&e!=="longjmp")throw e;asm["setThrew"](1,0)}}function invoke_viiiii(index,a1,a2,a3,a4,a5){try{Module["dynCall_viiiii"](index,a1,a2,a3,a4,a5)}catch(e){if(typeof e!=="number"&&e!=="longjmp")throw e;asm["setThrew"](1,0)}}function invoke_vi(index,a1){try{Module["dynCall_vi"](index,a1)}catch(e){if(typeof e!=="number"&&e!=="longjmp")throw e;asm["setThrew"](1,0)}}function invoke_iiiiiii(index,a1,a2,a3,a4,a5,a6){try{return Module["dynCall_iiiiiii"](index,a1,a2,a3,a4,a5,a6)}catch(e){if(typeof e!=="number"&&e!=="longjmp")throw e;asm["setThrew"](1,0)}}function invoke_ii(index,a1){try{return Module["dynCall_ii"](index,a1)}catch(e){if(typeof e!=="number"&&e!=="longjmp")throw e;asm["setThrew"](1,0)}}function invoke_viii(index,a1,a2,a3){try{Module["dynCall_viii"](index,a1,a2,a3)}catch(e){if(typeof e!=="number"&&e!=="longjmp")throw e;asm["setThrew"](1,0)}}function invoke_v(index){try{Module["dynCall_v"](index)}catch(e){if(typeof e!=="number"&&e!=="longjmp")throw e;asm["setThrew"](1,0)}}function invoke_viiiiii(index,a1,a2,a3,a4,a5,a6){try{Module["dynCall_viiiiii"](index,a1,a2,a3,a4,a5,a6)}catch(e){if(typeof e!=="number"&&e!=="longjmp")throw e;asm["setThrew"](1,0)}}function invoke_iii(index,a1,a2){try{return Module["dynCall_iii"](index,a1,a2)}catch(e){if(typeof e!=="number"&&e!=="longjmp")throw e;asm["setThrew"](1,0)}}function invoke_viiii(index,a1,a2,a3,a4){try{Module["dynCall_viiii"](index,a1,a2,a3,a4)}catch(e){if(typeof e!=="number"&&e!=="longjmp")throw e;asm["setThrew"](1,0)}}Module.asmGlobalArg={"Math":Math,"Int8Array":Int8Array,"Int16Array":Int16Array,"Int32Array":Int32Array,"Uint8Array":Uint8Array,"Uint16Array":Uint16Array,"Uint32Array":Uint32Array,"Float32Array":Float32Array,"Float64Array":Float64Array,"NaN":NaN,"Infinity":Infinity,"byteLength":byteLength};Module.asmLibraryArg={"abort":abort,"assert":assert,"enlargeMemory":enlargeMemory,"getTotalMemory":getTotalMemory,"abortOnCannotGrowMemory":abortOnCannotGrowMemory,"invoke_iiii":invoke_iiii,"invoke_viiiii":invoke_viiiii,"invoke_vi":invoke_vi,"invoke_iiiiiii":invoke_iiiiiii,"invoke_ii":invoke_ii,"invoke_viii":invoke_viii,"invoke_v":invoke_v,"invoke_viiiiii":invoke_viiiiii,"invoke_iii":invoke_iii,"invoke_viiii":invoke_viiii,"_pthread_cleanup_pop":_pthread_cleanup_pop,"_pthread_getspecific":_pthread_getspecific,"_pthread_setspecific":_pthread_setspecific,"_pthread_cleanup_push":_pthread_cleanup_push,"___cxa_throw":___cxa_throw,"_pthread_key_create":_pthread_key_create,"___syscall6":___syscall6,"___setErrNo":___setErrNo,"_abort":_abort,"_pthread_once":_pthread_once,"___syscall146":___syscall146,"___cxa_begin_catch":___cxa_begin_catch,"_emscripten_memcpy_big":_emscripten_memcpy_big,"___gxx_personality_v0":___gxx_personality_v0,"___syscall140":___syscall140,"___resumeException":___resumeException,"___cxa_find_matching_catch":___cxa_find_matching_catch,"___assert_fail":___assert_fail,"___cxa_pure_virtual":___cxa_pure_virtual,"___cxa_allocate_exception":___cxa_allocate_exception,"__ZSt18uncaught_exceptionv":__ZSt18uncaught_exceptionv,"STACKTOP":STACKTOP,"STACK_MAX":STACK_MAX,"DYNAMICTOP_PTR":DYNAMICTOP_PTR,"tempDoublePtr":tempDoublePtr,"ABORT":ABORT,"cttz_i8":cttz_i8};// EMSCRIPTEN_START_ASM -var asm=(function(global,env,buffer) { -"almost asm";var a=global.Int8Array;var b=global.Int16Array;var c=global.Int32Array;var d=global.Uint8Array;var e=global.Uint16Array;var f=global.Uint32Array;var g=global.Float32Array;var h=global.Float64Array;var i=new a(buffer);var j=new b(buffer);var k=new c(buffer);var l=new d(buffer);var m=new e(buffer);var n=new f(buffer);var o=new g(buffer);var p=new h(buffer);var q=global.byteLength;var r=env.STACKTOP|0;var s=env.STACK_MAX|0;var t=env.DYNAMICTOP_PTR|0;var u=env.tempDoublePtr|0;var v=env.ABORT|0;var w=env.cttz_i8|0;var x=0;var y=0;var z=0;var A=0;var B=global.NaN,C=global.Infinity;var D=0,E=0,F=0,G=0,H=0,I=0,J=0,K=0,L=0;var M=0;var N=global.Math.floor;var O=global.Math.abs;var P=global.Math.sqrt;var Q=global.Math.pow;var R=global.Math.cos;var S=global.Math.sin;var T=global.Math.tan;var U=global.Math.acos;var V=global.Math.asin;var W=global.Math.atan;var X=global.Math.atan2;var Y=global.Math.exp;var Z=global.Math.log;var _=global.Math.ceil;var $=global.Math.imul;var aa=global.Math.min;var ba=global.Math.max;var ca=global.Math.clz32;var da=global.Math.fround;var ea=env.abort;var fa=env.assert;var ga=env.enlargeMemory;var ha=env.getTotalMemory;var ia=env.abortOnCannotGrowMemory;var ja=env.invoke_iiii;var ka=env.invoke_viiiii;var la=env.invoke_vi;var ma=env.invoke_iiiiiii;var na=env.invoke_ii;var oa=env.invoke_viii;var pa=env.invoke_v;var qa=env.invoke_viiiiii;var ra=env.invoke_iii;var sa=env.invoke_viiii;var ta=env._pthread_cleanup_pop;var ua=env._pthread_getspecific;var va=env._pthread_setspecific;var wa=env._pthread_cleanup_push;var xa=env.___cxa_throw;var ya=env._pthread_key_create;var za=env.___syscall6;var Aa=env.___setErrNo;var Ba=env._abort;var Ca=env._pthread_once;var Da=env.___syscall146;var Ea=env.___cxa_begin_catch;var Fa=env._emscripten_memcpy_big;var Ga=env.___gxx_personality_v0;var Ha=env.___syscall140;var Ia=env.___resumeException;var Ja=env.___cxa_find_matching_catch;var Ka=env.___assert_fail;var La=env.___cxa_pure_virtual;var Ma=env.___cxa_allocate_exception;var Na=env.__ZSt18uncaught_exceptionv;var Oa=da(0);const Pa=da(0);function Qa(newBuffer){if(q(newBuffer)&16777215||q(newBuffer)<=16777215||q(newBuffer)>2147483648)return false;i=new a(newBuffer);j=new b(newBuffer);k=new c(newBuffer);l=new d(newBuffer);m=new e(newBuffer);n=new f(newBuffer);o=new g(newBuffer);p=new h(newBuffer);buffer=newBuffer;return true} -// EMSCRIPTEN_START_FUNCS -function ld(a,b,c){a=a|0;b=b|0;c=c|0;var d=Pa,e=Pa,f=0,g=0,h=0;switch(i[a+24>>0]|0){case 1:{g=k[b>>2]|0;b=a+48|0;f=k[b>>2]|0;b=k[b+4>>2]|0;h=a+40|0;b=(mk(sj(k[h>>2]|0,k[h+4>>2]|0,g|0,((g|0)<0)<<31>>31|0)|0,M|0,f|0,b|0)|0)+(k[k[a>>2]>>2]|0)|0;e=da(l[b>>0]|l[b+1>>0]<<8|l[b+2>>0]<<16|l[b+3>>0]<<24|0);d=da(e*da(4.65661287e-10));o[c>>2]=(i[a+32>>0]|0)==0?e:d;o[c+4>>2]=da(0.0);c=1;return c|0}case 2:{g=k[b>>2]|0;b=a+48|0;h=k[b>>2]|0;b=k[b+4>>2]|0;f=a+40|0;b=(mk(sj(k[f>>2]|0,k[f+4>>2]|0,g|0,((g|0)<0)<<31>>31|0)|0,M|0,h|0,b|0)|0)+(k[k[a>>2]>>2]|0)|0;h=b;b=b+4|0;b=l[b>>0]|l[b+1>>0]<<8|l[b+2>>0]<<16|l[b+3>>0]<<24;d=da(l[h>>0]|l[h+1>>0]<<8|l[h+2>>0]<<16|l[h+3>>0]<<24|0);if(!(i[a+32>>0]|0)){o[c>>2]=d;e=da(b|0);o[c+4>>2]=e;h=1;return h|0}else{e=da(d*da(4.65661287e-10));o[c>>2]=e;e=da(da(b|0)*da(4.65661287e-10));o[c+4>>2]=e;h=1;return h|0}}case 3:{g=k[b>>2]|0;h=a+48|0;b=k[h>>2]|0;h=k[h+4>>2]|0;f=a+40|0;h=(mk(sj(k[f>>2]|0,k[f+4>>2]|0,g|0,((g|0)<0)<<31>>31|0)|0,M|0,b|0,h|0)|0)+(k[k[a>>2]>>2]|0)|0;b=h+4|0;b=l[b>>0]|l[b+1>>0]<<8|l[b+2>>0]<<16|l[b+3>>0]<<24;d=da(l[h>>0]|l[h+1>>0]<<8|l[h+2>>0]<<16|l[h+3>>0]<<24|0);if(!(i[a+32>>0]|0)){o[c>>2]=d;e=da(b|0);o[c+4>>2]=e;h=1;return h|0}else{e=da(d*da(4.65661287e-10));o[c>>2]=e;e=da(da(b|0)*da(4.65661287e-10));o[c+4>>2]=e;h=1;return h|0}}case 4:{g=k[b>>2]|0;h=a+48|0;b=k[h>>2]|0;h=k[h+4>>2]|0;f=a+40|0;h=(mk(sj(k[f>>2]|0,k[f+4>>2]|0,g|0,((g|0)<0)<<31>>31|0)|0,M|0,b|0,h|0)|0)+(k[k[a>>2]>>2]|0)|0;b=h+4|0;b=l[b>>0]|l[b+1>>0]<<8|l[b+2>>0]<<16|l[b+3>>0]<<24;d=da(l[h>>0]|l[h+1>>0]<<8|l[h+2>>0]<<16|l[h+3>>0]<<24|0);if(!(i[a+32>>0]|0)){o[c>>2]=d;e=da(b|0);o[c+4>>2]=e;h=1;return h|0}else{e=da(d*da(4.65661287e-10));o[c>>2]=e;e=da(da(b|0)*da(4.65661287e-10));o[c+4>>2]=e;h=1;return h|0}}default:{h=0;return h|0}}return 0}function md(a,b){a=a|0;b=b|0;var c=0,d=0,e=0,f=0,g=0,h=0,j=0,l=0,m=0,n=0,o=0,p=0,q=0,s=0;s=r;r=r+176|0;e=s+136|0;p=s+64|0;l=s;g=s+32|0;f=k[(k[a+4>>2]|0)+28>>2]|0;q=vj(88)|0;k[q+4>>2]=0;k[q>>2]=5628;h=q+12|0;k[h>>2]=5608;j=q+64|0;k[j>>2]=0;k[q+68>>2]=0;k[q+72>>2]=0;c=q+16|0;d=c+44|0;do{k[c>>2]=0;c=c+4|0}while((c|0)<(d|0));k[q+76>>2]=f;k[q+80>>2]=b;k[q+84>>2]=0;n=p+4|0;k[n>>2]=5608;m=p+56|0;k[m>>2]=0;o=p+60|0;k[o>>2]=0;k[p+64>>2]=0;c=p+8|0;d=c+44|0;do{k[c>>2]=0;c=c+4|0}while((c|0)<(d|0));c=k[a+8>>2]|0;k[l>>2]=5608;a=l+4|0;d=a+4|0;k[d>>2]=0;k[d+4>>2]=0;k[d+8>>2]=0;k[d+12>>2]=0;k[d+16>>2]=0;k[d+20>>2]=0;d=c;k[a>>2]=d;d=((k[d+4>>2]|0)-(k[c>>2]|0)|0)/12|0;i[e>>0]=0;Af(l+8|0,d,e);Ta[k[(k[l>>2]|0)+8>>2]&127](l);Be(g,l);Be(e,g);k[p>>2]=k[e+4>>2];d=p+4|0;Ne(d,e)|0;k[e>>2]=5608;a=k[e+20>>2]|0;if(a|0)Vl(a);a=k[e+8>>2]|0;if(a|0)Vl(a);k[p+36>>2]=c;k[p+40>>2]=b;k[p+44>>2]=f;k[p+48>>2]=q;k[g>>2]=5608;a=k[g+20>>2]|0;if(a|0)Vl(a);a=k[g+8>>2]|0;if(a|0)Vl(a);k[q+8>>2]=k[p>>2];Ne(h,d)|0;a=q+44|0;h=p+36|0;k[a>>2]=k[h>>2];k[a+4>>2]=k[h+4>>2];k[a+8>>2]=k[h+8>>2];k[a+12>>2]=k[h+12>>2];i[a+16>>0]=i[h+16>>0]|0;Oe(j,k[m>>2]|0,k[o>>2]|0);k[l>>2]=5608;a=k[l+20>>2]|0;if(a|0)Vl(a);a=k[l+8>>2]|0;if(a|0)Vl(a);a=k[m>>2]|0;c=a;if(a|0){d=k[o>>2]|0;if((d|0)!=(a|0))k[o>>2]=d+(~((d+-4-c|0)>>>2)<<2);Vl(a)}k[n>>2]=5608;a=k[p+24>>2]|0;if(a|0)Vl(a);a=k[p+12>>2]|0;if(!a){r=s;return q|0}Vl(a);r=s;return q|0}function nd(a,b,c){a=a|0;b=b|0;c=c|0;var d=Pa,e=0,f=Pa,g=0,h=0;switch(i[a+24>>0]|0){case 1:{g=k[b>>2]|0;e=a+48|0;b=k[e>>2]|0;e=k[e+4>>2]|0;h=a+40|0;e=mk(sj(k[h>>2]|0,k[h+4>>2]|0,g|0,((g|0)<0)<<31>>31|0)|0,M|0,b|0,e|0)|0;f=da(i[(k[k[a>>2]>>2]|0)+e>>0]|0);d=da(f/da(127.0));o[c>>2]=(i[a+32>>0]|0)==0?f:d;c=c+4|0;k[c>>2]=0;k[c+4>>2]=0;c=1;return c|0}case 2:{g=k[b>>2]|0;h=a+48|0;b=k[h>>2]|0;h=k[h+4>>2]|0;e=a+40|0;h=(mk(sj(k[e>>2]|0,k[e+4>>2]|0,g|0,((g|0)<0)<<31>>31|0)|0,M|0,b|0,h|0)|0)+(k[k[a>>2]>>2]|0)|0;h=l[h>>0]|l[h+1>>0]<<8;b=(h&65535)>>>8&255;d=da((h&255)<<24>>24);if(!(i[a+32>>0]|0)){o[c>>2]=d;d=da(b<<24>>24)}else{d=da(d/da(127.0));o[c>>2]=d;d=da(da(b<<24>>24)/da(127.0))}o[c+4>>2]=d;o[c+8>>2]=da(0.0);h=1;return h|0}case 3:{e=k[b>>2]|0;h=a+48|0;b=k[h>>2]|0;h=k[h+4>>2]|0;g=a+40|0;h=(mk(sj(k[g>>2]|0,k[g+4>>2]|0,e|0,((e|0)<0)<<31>>31|0)|0,M|0,b|0,h|0)|0)+(k[k[a>>2]>>2]|0)|0;b=i[h+1>>0]|0;e=i[h+2>>0]|0;d=da(i[h>>0]|0);if(!(i[a+32>>0]|0)){o[c>>2]=d;f=da(b<<24>>24);o[c+4>>2]=f;f=da(e<<24>>24);o[c+8>>2]=f;h=1;return h|0}else{f=da(d/da(127.0));o[c>>2]=f;f=da(da(b<<24>>24)/da(127.0));o[c+4>>2]=f;f=da(da(e<<24>>24)/da(127.0));o[c+8>>2]=f;h=1;return h|0}}case 4:{e=k[b>>2]|0;h=a+48|0;b=k[h>>2]|0;h=k[h+4>>2]|0;g=a+40|0;h=(mk(sj(k[g>>2]|0,k[g+4>>2]|0,e|0,((e|0)<0)<<31>>31|0)|0,M|0,b|0,h|0)|0)+(k[k[a>>2]>>2]|0)|0;h=l[h>>0]|l[h+1>>0]<<8|l[h+2>>0]<<16|l[h+3>>0]<<24;b=h>>>8&255;e=h>>>16&255;d=da((h&255)<<24>>24);if(!(i[a+32>>0]|0)){o[c>>2]=d;f=da(b<<24>>24);o[c+4>>2]=f;f=da(e<<24>>24);o[c+8>>2]=f;h=1;return h|0}else{f=da(d/da(127.0));o[c>>2]=f;f=da(da(b<<24>>24)/da(127.0));o[c+4>>2]=f;f=da(da(e<<24>>24)/da(127.0));o[c+8>>2]=f;h=1;return h|0}}default:{h=0;return h|0}}return 0}function od(a,b){a=a|0;b=b|0;var c=0,d=0,e=0,f=0,g=0,h=0,j=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0;d=a+4|0;if(!b){c=k[a>>2]|0;k[a>>2]=0;if(c|0)Vl(c);k[d>>2]=0;return}if(b>>>0>1073741823){a=Ma(4)|0;Fl(a);xa(a|0,976,90)}u=vj(b<<2)|0;c=k[a>>2]|0;k[a>>2]=u;if(c|0)Vl(c);k[d>>2]=b;c=0;do{k[(k[a>>2]|0)+(c<<2)>>2]=0;c=c+1|0}while((c|0)!=(b|0));d=a+8|0;f=k[d>>2]|0;if(!f)return;c=k[f+4>>2]|0;t=b+-1|0;u=(t&b|0)==0;if(u)c=c&t;else c=(c>>>0)%(b>>>0)|0;k[(k[a>>2]|0)+(c<<2)>>2]=d;d=k[f>>2]|0;if(!d)return;s=a+24|0;r=c;e=f;c=f;a:while(1){q=c;b:while(1){c=d;while(1){d=k[c+4>>2]|0;if(u)p=d&t;else p=(d>>>0)%(b>>>0)|0;if((p|0)==(r|0))break;d=(k[a>>2]|0)+(p<<2)|0;if(!(k[d>>2]|0))break b;f=k[c>>2]|0;c:do if(!f)d=c;else{m=k[c+8>>2]|0;l=k[s>>2]|0;o=k[l+4>>2]|0;l=(k[l+8>>2]|0)-o|0;n=l>>2;if((l|0)>0)d=c;else{d=f;while(1){f=k[d>>2]|0;if(!f)break c;else d=f}}while(1){l=k[f+8>>2]|0;j=0;do{if((n|0)<=(j|0)){c=33;break a}g=k[o+(j<<2)>>2]|0;if(!(i[g+84>>0]|0)){h=k[g+68>>2]|0;g=k[h+(l<<2)>>2]|0;h=k[h+(m<<2)>>2]|0}else{g=l;h=m}j=j+1|0;if((h|0)!=(g|0))break c}while((j|0)<(n|0));d=k[f>>2]|0;if(!d){d=f;break}else{l=f;f=d;d=l}}}while(0);k[q>>2]=k[d>>2];k[d>>2]=k[k[(k[a>>2]|0)+(p<<2)>>2]>>2];k[k[(k[a>>2]|0)+(p<<2)>>2]>>2]=c;c=k[e>>2]|0;if(!c){c=38;break a}}d=k[c>>2]|0;if(!d){c=38;break a}else{e=c;q=c}}k[d>>2]=q;d=k[c>>2]|0;if(!d){c=38;break}else{r=p;e=c}}if((c|0)==33)Ka(12995,12957,63,12985);else if((c|0)==38)return}function pd(a){a=a|0;var b=0,c=0,d=0,e=0;k[a>>2]=5652;Yl(a+352|0);b=k[a+340>>2]|0;c=b;if(b|0){d=a+344|0;e=k[d>>2]|0;if((e|0)!=(b|0))k[d>>2]=e+(~((e+-4-c|0)>>>2)<<2);Vl(b)}e=a+320|0;c=k[e>>2]|0;k[e>>2]=0;if(c|0){d=c+-4|0;b=k[d>>2]|0;if(b|0){b=c+(b<<4)|0;do{b=b+-16|0;Yl(b)}while((b|0)!=(c|0))}Tl(d)}Yl(a+304|0);Yl(a+264|0);sg(a+228|0);b=k[a+212>>2]|0;c=b;if(b|0){d=a+216|0;e=k[d>>2]|0;if((e|0)!=(b|0))k[d>>2]=e+(~((e+-4-c|0)>>>2)<<2);Vl(b)}b=k[a+200>>2]|0;c=b;if(b|0){d=a+204|0;e=k[d>>2]|0;if((e|0)!=(b|0))k[d>>2]=e+(~((e+-4-c|0)>>>2)<<2);Vl(b)}b=k[a+188>>2]|0;c=b;if(b|0){d=a+192|0;e=k[d>>2]|0;if((e|0)!=(b|0))k[d>>2]=e+(~((e+-4-c|0)>>>2)<<2);Vl(b)}b=k[a+176>>2]|0;c=b;if(b|0){d=a+180|0;e=k[d>>2]|0;if((e|0)!=(b|0))k[d>>2]=e+(~((e+-4-c|0)>>>2)<<2);Vl(b)}b=k[a+160>>2]|0;if(b|0)do{e=b;b=k[b>>2]|0;Vl(e)}while((b|0)!=0);e=a+152|0;b=k[e>>2]|0;k[e>>2]=0;if(b|0)Vl(b);b=k[a+136>>2]|0;if(b|0)Vl(b);b=k[a+124>>2]|0;if(b|0)Vl(b);b=k[a+112>>2]|0;if(b|0)Vl(b);b=k[a+88>>2]|0;c=b;if(b|0){d=a+92|0;e=k[d>>2]|0;if((e|0)!=(b|0))k[d>>2]=e+(~((e+-4-c|0)>>>2)<<2);Vl(b)}e=k[a+76>>2]|0;b=e;if(e|0){c=a+80|0;d=k[c>>2]|0;if((d|0)!=(e|0))k[c>>2]=d+(~((d+-4-b|0)>>>2)<<2);Vl(e)}b=k[a+64>>2]|0;if(b|0)Vl(b);b=k[a+48>>2]|0;c=b;if(b|0){d=a+52|0;e=k[d>>2]|0;if((e|0)!=(b|0))k[d>>2]=e+(~((e+-4-c|0)>>>2)<<2);Vl(b)}b=k[a+36>>2]|0;c=b;if(b|0){d=a+40|0;e=k[d>>2]|0;if((e|0)!=(b|0))k[d>>2]=e+(~(((e+-12-c|0)>>>0)/12|0)*12|0);Vl(b)}b=k[a+24>>2]|0;c=b;if(b|0){d=a+28|0;e=k[d>>2]|0;if((e|0)!=(b|0))k[d>>2]=e+(~((e+-4-c|0)>>>2)<<2);Vl(b)}b=k[a+12>>2]|0;c=b;if(b|0){d=a+16|0;e=k[d>>2]|0;if((e|0)!=(b|0))k[d>>2]=e+(~((e+-4-c|0)>>>2)<<2);Vl(b)}a=a+8|0;b=k[a>>2]|0;k[a>>2]=0;if(!b)return;Pg(b);Vl(b);return}function qd(a,b,c){a=a|0;b=b|0;c=c|0;var d=Pa,e=Pa,f=0,g=0,h=0;switch(i[a+24>>0]|0){case 1:{g=k[b>>2]|0;b=a+48|0;f=k[b>>2]|0;b=k[b+4>>2]|0;h=a+40|0;b=(mk(sj(k[h>>2]|0,k[h+4>>2]|0,g|0,((g|0)<0)<<31>>31|0)|0,M|0,f|0,b|0)|0)+(k[k[a>>2]>>2]|0)|0;e=da((l[b>>0]|l[b+1>>0]<<8)<<16>>16);d=da(e/da(32767.0));o[c>>2]=(i[a+32>>0]|0)==0?e:d;o[c+4>>2]=da(0.0);c=1;return c|0}case 2:{g=k[b>>2]|0;h=a+48|0;b=k[h>>2]|0;h=k[h+4>>2]|0;f=a+40|0;h=(mk(sj(k[f>>2]|0,k[f+4>>2]|0,g|0,((g|0)<0)<<31>>31|0)|0,M|0,b|0,h|0)|0)+(k[k[a>>2]>>2]|0)|0;h=l[h>>0]|l[h+1>>0]<<8|l[h+2>>0]<<16|l[h+3>>0]<<24;b=h>>>16&65535;d=da((h&65535)<<16>>16);if(!(i[a+32>>0]|0)){o[c>>2]=d;e=da(b<<16>>16);o[c+4>>2]=e;h=1;return h|0}else{e=da(d/da(32767.0));o[c>>2]=e;e=da(da(b<<16>>16)/da(32767.0));o[c+4>>2]=e;h=1;return h|0}}case 3:{g=k[b>>2]|0;h=a+48|0;b=k[h>>2]|0;h=k[h+4>>2]|0;f=a+40|0;h=(mk(sj(k[f>>2]|0,k[f+4>>2]|0,g|0,((g|0)<0)<<31>>31|0)|0,M|0,b|0,h|0)|0)+(k[k[a>>2]>>2]|0)|0;b=h+2|0;b=l[b>>0]|l[b+1>>0]<<8;d=da((l[h>>0]|l[h+1>>0]<<8)<<16>>16);if(!(i[a+32>>0]|0)){o[c>>2]=d;e=da(b<<16>>16);o[c+4>>2]=e;h=1;return h|0}else{e=da(d/da(32767.0));o[c>>2]=e;e=da(da(b<<16>>16)/da(32767.0));o[c+4>>2]=e;h=1;return h|0}}case 4:{h=k[b>>2]|0;b=a+48|0;g=k[b>>2]|0;b=k[b+4>>2]|0;f=a+40|0;b=(mk(sj(k[f>>2]|0,k[f+4>>2]|0,h|0,((h|0)<0)<<31>>31|0)|0,M|0,g|0,b|0)|0)+(k[k[a>>2]>>2]|0)|0;g=b;g=l[g>>0]|l[g+1>>0]<<8|l[g+2>>0]<<16|l[g+3>>0]<<24;b=b+4|0;h=(i[a+32>>0]|0)==0;b=(Wj(g|0,l[b>>0]|l[b+1>>0]<<8|l[b+2>>0]<<16|l[b+3>>0]<<24|0,16)|0)&65535;d=da((g&65535)<<16>>16);if(h){o[c>>2]=d;e=da(b<<16>>16);o[c+4>>2]=e;h=1;return h|0}else{e=da(d/da(32767.0));o[c>>2]=e;e=da(da(b<<16>>16)/da(32767.0));o[c+4>>2]=e;h=1;return h|0}}default:{h=0;return h|0}}return 0}function rd(a,b,c,d,e){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;var f=0;switch(a|0){case 1:{f=vj(60)|0;k[f>>2]=3408;k[f+4>>2]=b;k[f+8>>2]=k[c>>2];b=f+12|0;e=c+4|0;k[b>>2]=k[e>>2];k[b+4>>2]=k[e+4>>2];k[b+8>>2]=k[e+8>>2];k[b+12>>2]=k[e+12>>2];k[b+16>>2]=k[e+16>>2];ph(f+32|0,c+24|0);c=f+44|0;k[c>>2]=k[d>>2];k[c+4>>2]=k[d+4>>2];k[c+8>>2]=k[d+8>>2];k[c+12>>2]=k[d+12>>2];k[f>>2]=3792;d=f;return d|0}case 2:{f=vj(60)|0;k[f>>2]=3408;k[f+4>>2]=b;k[f+8>>2]=k[c>>2];b=f+12|0;e=c+4|0;k[b>>2]=k[e>>2];k[b+4>>2]=k[e+4>>2];k[b+8>>2]=k[e+8>>2];k[b+12>>2]=k[e+12>>2];k[b+16>>2]=k[e+16>>2];ph(f+32|0,c+24|0);c=f+44|0;k[c>>2]=k[d>>2];k[c+4>>2]=k[d+4>>2];k[c+8>>2]=k[d+8>>2];k[c+12>>2]=k[d+12>>2];k[f>>2]=3856;d=f;return d|0}case 4:{f=vj(112)|0;k[f>>2]=3408;k[f+4>>2]=b;k[f+8>>2]=k[c>>2];a=f+12|0;e=c+4|0;k[a>>2]=k[e>>2];k[a+4>>2]=k[e+4>>2];k[a+8>>2]=k[e+8>>2];k[a+12>>2]=k[e+12>>2];k[a+16>>2]=k[e+16>>2];ph(f+32|0,c+24|0);a=f+44|0;k[a>>2]=k[d>>2];k[a+4>>2]=k[d+4>>2];k[a+8>>2]=k[d+8>>2];k[a+12>>2]=k[d+12>>2];k[f>>2]=3920;a=f+60|0;e=a+52|0;do{k[a>>2]=0;a=a+4|0}while((a|0)<(e|0));d=f;return d|0}case 3:{f=vj(92)|0;k[f>>2]=3408;k[f+4>>2]=b;k[f+8>>2]=k[c>>2];b=f+12|0;a=c+4|0;k[b>>2]=k[a>>2];k[b+4>>2]=k[a+4>>2];k[b+8>>2]=k[a+8>>2];k[b+12>>2]=k[a+12>>2];k[b+16>>2]=k[a+16>>2];ph(f+32|0,c+24|0);c=f+44|0;k[c>>2]=k[d>>2];k[c+4>>2]=k[d+4>>2];k[c+8>>2]=k[d+8>>2];k[c+12>>2]=k[d+12>>2];k[f>>2]=3984;d=f+60|0;k[d>>2]=0;k[d+4>>2]=0;k[d+8>>2]=0;k[d+12>>2]=0;k[d+16>>2]=0;k[d+20>>2]=0;k[d+24>>2]=0;k[f+88>>2]=e&65535;d=f;return d|0}default:{d=0;return d|0}}return 0}function sd(a,b,c,d,e){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;var f=0;switch(a|0){case 1:{f=vj(60)|0;k[f>>2]=3408;k[f+4>>2]=b;k[f+8>>2]=k[c>>2];b=f+12|0;e=c+4|0;k[b>>2]=k[e>>2];k[b+4>>2]=k[e+4>>2];k[b+8>>2]=k[e+8>>2];k[b+12>>2]=k[e+12>>2];k[b+16>>2]=k[e+16>>2];ph(f+32|0,c+24|0);c=f+44|0;k[c>>2]=k[d>>2];k[c+4>>2]=k[d+4>>2];k[c+8>>2]=k[d+8>>2];k[c+12>>2]=k[d+12>>2];k[f>>2]=3536;d=f;return d|0}case 2:{f=vj(60)|0;k[f>>2]=3408;k[f+4>>2]=b;k[f+8>>2]=k[c>>2];b=f+12|0;e=c+4|0;k[b>>2]=k[e>>2];k[b+4>>2]=k[e+4>>2];k[b+8>>2]=k[e+8>>2];k[b+12>>2]=k[e+12>>2];k[b+16>>2]=k[e+16>>2];ph(f+32|0,c+24|0);c=f+44|0;k[c>>2]=k[d>>2];k[c+4>>2]=k[d+4>>2];k[c+8>>2]=k[d+8>>2];k[c+12>>2]=k[d+12>>2];k[f>>2]=3600;d=f;return d|0}case 4:{f=vj(112)|0;k[f>>2]=3408;k[f+4>>2]=b;k[f+8>>2]=k[c>>2];a=f+12|0;e=c+4|0;k[a>>2]=k[e>>2];k[a+4>>2]=k[e+4>>2];k[a+8>>2]=k[e+8>>2];k[a+12>>2]=k[e+12>>2];k[a+16>>2]=k[e+16>>2];ph(f+32|0,c+24|0);a=f+44|0;k[a>>2]=k[d>>2];k[a+4>>2]=k[d+4>>2];k[a+8>>2]=k[d+8>>2];k[a+12>>2]=k[d+12>>2];k[f>>2]=3664;a=f+60|0;e=a+52|0;do{k[a>>2]=0;a=a+4|0}while((a|0)<(e|0));d=f;return d|0}case 3:{f=vj(92)|0;k[f>>2]=3408;k[f+4>>2]=b;k[f+8>>2]=k[c>>2];b=f+12|0;a=c+4|0;k[b>>2]=k[a>>2];k[b+4>>2]=k[a+4>>2];k[b+8>>2]=k[a+8>>2];k[b+12>>2]=k[a+12>>2];k[b+16>>2]=k[a+16>>2];ph(f+32|0,c+24|0);c=f+44|0;k[c>>2]=k[d>>2];k[c+4>>2]=k[d+4>>2];k[c+8>>2]=k[d+8>>2];k[c+12>>2]=k[d+12>>2];k[f>>2]=3728;d=f+60|0;k[d>>2]=0;k[d+4>>2]=0;k[d+8>>2]=0;k[d+12>>2]=0;k[d+16>>2]=0;k[d+20>>2]=0;k[d+24>>2]=0;k[f+88>>2]=e&65535;d=f;return d|0}default:{d=0;return d|0}}return 0}function td(a,b,c){a=a|0;b=b|0;c=c|0;var d=Pa,e=0,f=Pa,g=0,h=0;switch(i[a+24>>0]|0){case 1:{g=k[b>>2]|0;e=a+48|0;b=k[e>>2]|0;e=k[e+4>>2]|0;h=a+40|0;e=mk(sj(k[h>>2]|0,k[h+4>>2]|0,g|0,((g|0)<0)<<31>>31|0)|0,M|0,b|0,e|0)|0;f=da(l[(k[k[a>>2]>>2]|0)+e>>0]|0);d=da(f/da(255.0));o[c>>2]=(i[a+32>>0]|0)==0?f:d;c=c+4|0;k[c>>2]=0;k[c+4>>2]=0;c=1;return c|0}case 2:{g=k[b>>2]|0;h=a+48|0;b=k[h>>2]|0;h=k[h+4>>2]|0;e=a+40|0;h=(mk(sj(k[e>>2]|0,k[e+4>>2]|0,g|0,((g|0)<0)<<31>>31|0)|0,M|0,b|0,h|0)|0)+(k[k[a>>2]>>2]|0)|0;h=l[h>>0]|l[h+1>>0]<<8;b=(h&65535)>>>8&255;d=da(h&255);if(!(i[a+32>>0]|0)){o[c>>2]=d;d=da(b&255)}else{d=da(d/da(255.0));o[c>>2]=d;d=da(da(b&255)/da(255.0))}o[c+4>>2]=d;o[c+8>>2]=da(0.0);h=1;return h|0}case 3:{e=k[b>>2]|0;h=a+48|0;b=k[h>>2]|0;h=k[h+4>>2]|0;g=a+40|0;h=(mk(sj(k[g>>2]|0,k[g+4>>2]|0,e|0,((e|0)<0)<<31>>31|0)|0,M|0,b|0,h|0)|0)+(k[k[a>>2]>>2]|0)|0;b=i[h+1>>0]|0;e=i[h+2>>0]|0;d=da(l[h>>0]|0);if(!(i[a+32>>0]|0)){o[c>>2]=d;f=da(b&255);o[c+4>>2]=f;f=da(e&255);o[c+8>>2]=f;h=1;return h|0}else{f=da(d/da(255.0));o[c>>2]=f;f=da(da(b&255)/da(255.0));o[c+4>>2]=f;f=da(da(e&255)/da(255.0));o[c+8>>2]=f;h=1;return h|0}}case 4:{e=k[b>>2]|0;h=a+48|0;b=k[h>>2]|0;h=k[h+4>>2]|0;g=a+40|0;h=(mk(sj(k[g>>2]|0,k[g+4>>2]|0,e|0,((e|0)<0)<<31>>31|0)|0,M|0,b|0,h|0)|0)+(k[k[a>>2]>>2]|0)|0;h=l[h>>0]|l[h+1>>0]<<8|l[h+2>>0]<<16|l[h+3>>0]<<24;b=h>>>8&255;e=h>>>16&255;d=da(h&255);if(!(i[a+32>>0]|0)){o[c>>2]=d;f=da(b&255);o[c+4>>2]=f;f=da(e&255);o[c+8>>2]=f;h=1;return h|0}else{f=da(d/da(255.0));o[c>>2]=f;f=da(da(b&255)/da(255.0));o[c+4>>2]=f;f=da(da(e&255)/da(255.0));o[c+8>>2]=f;h=1;return h|0}}default:{h=0;return h|0}}return 0}function ud(a,b,c){a=a|0;b=b|0;c=c|0;var d=Pa,e=Pa,f=0,g=0,h=0;switch(i[a+24>>0]|0){case 1:{g=k[b>>2]|0;b=a+48|0;f=k[b>>2]|0;b=k[b+4>>2]|0;h=a+40|0;b=(mk(sj(k[h>>2]|0,k[h+4>>2]|0,g|0,((g|0)<0)<<31>>31|0)|0,M|0,f|0,b|0)|0)+(k[k[a>>2]>>2]|0)|0;e=da((l[b>>0]|l[b+1>>0]<<8)&65535);d=da(e/da(65535.0));o[c>>2]=(i[a+32>>0]|0)==0?e:d;o[c+4>>2]=da(0.0);c=1;return c|0}case 2:{g=k[b>>2]|0;h=a+48|0;b=k[h>>2]|0;h=k[h+4>>2]|0;f=a+40|0;h=(mk(sj(k[f>>2]|0,k[f+4>>2]|0,g|0,((g|0)<0)<<31>>31|0)|0,M|0,b|0,h|0)|0)+(k[k[a>>2]>>2]|0)|0;h=l[h>>0]|l[h+1>>0]<<8|l[h+2>>0]<<16|l[h+3>>0]<<24;b=h>>>16&65535;d=da(h&65535);if(!(i[a+32>>0]|0)){o[c>>2]=d;e=da(b&65535);o[c+4>>2]=e;h=1;return h|0}else{e=da(d/da(65535.0));o[c>>2]=e;e=da(da(b&65535)/da(65535.0));o[c+4>>2]=e;h=1;return h|0}}case 3:{g=k[b>>2]|0;h=a+48|0;b=k[h>>2]|0;h=k[h+4>>2]|0;f=a+40|0;h=(mk(sj(k[f>>2]|0,k[f+4>>2]|0,g|0,((g|0)<0)<<31>>31|0)|0,M|0,b|0,h|0)|0)+(k[k[a>>2]>>2]|0)|0;b=h+2|0;b=l[b>>0]|l[b+1>>0]<<8;d=da((l[h>>0]|l[h+1>>0]<<8)&65535);if(!(i[a+32>>0]|0)){o[c>>2]=d;e=da(b&65535);o[c+4>>2]=e;h=1;return h|0}else{e=da(d/da(65535.0));o[c>>2]=e;e=da(da(b&65535)/da(65535.0));o[c+4>>2]=e;h=1;return h|0}}case 4:{h=k[b>>2]|0;b=a+48|0;g=k[b>>2]|0;b=k[b+4>>2]|0;f=a+40|0;b=(mk(sj(k[f>>2]|0,k[f+4>>2]|0,h|0,((h|0)<0)<<31>>31|0)|0,M|0,g|0,b|0)|0)+(k[k[a>>2]>>2]|0)|0;g=b;g=l[g>>0]|l[g+1>>0]<<8|l[g+2>>0]<<16|l[g+3>>0]<<24;b=b+4|0;h=(i[a+32>>0]|0)==0;b=(Wj(g|0,l[b>>0]|l[b+1>>0]<<8|l[b+2>>0]<<16|l[b+3>>0]<<24|0,16)|0)&65535;d=da(g&65535);if(h){o[c>>2]=d;e=da(b&65535);o[c+4>>2]=e;h=1;return h|0}else{e=da(d/da(65535.0));o[c>>2]=e;e=da(da(b&65535)/da(65535.0));o[c+4>>2]=e;h=1;return h|0}}default:{h=0;return h|0}}return 0}function vd(a,b,c,d,e,f){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;f=f|0;var g=0,h=0,i=0,j=0,l=0,m=0,n=0,o=0,p=0,q=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0;z=r;r=r+16|0;x=z+4|0;y=z;k[a+72>>2]=e;k[a+64>>2]=f;w=a+68|0;v=Sl(e>>>0>1073741823?-1:e<<2)|0;d=k[w>>2]|0;k[w>>2]=v;if(d|0)Tl(d);v=a+8|0;k[v>>2]=e;d=a+32|0;f=a+36|0;i=k[f>>2]|0;h=k[d>>2]|0;g=i-h>>2;if(g>>>0>=e>>>0){if(g>>>0>e>>>0?(j=h+(e<<2)|0,(i|0)!=(j|0)):0)k[f>>2]=i+(~((i+-4-j|0)>>>2)<<2)}else wg(d,e-g|0);o=a+56|0;h=k[o>>2]|0;g=k[h+4>>2]|0;f=k[h>>2]|0;u=g-f|0;p=u>>2;if((u|0)<=0){r=z;return 1}q=a+16|0;s=a+32|0;t=a+12|0;u=a+20|0;d=0;while(1){if(g-f>>2>>>0<=d>>>0){d=13;break}k[y>>2]=k[f+(d<<2)>>2];k[x>>2]=k[y>>2];lc(a,x,c,d);m=$(d,e)|0;l=k[w>>2]|0;n=c+(m<<2)|0;if((k[v>>2]|0)>0){j=0;do{i=k[l+(j<<2)>>2]|0;f=k[q>>2]|0;do if((i|0)<=(f|0)){f=k[t>>2]|0;g=k[s>>2]|0;h=g+(j<<2)|0;if((i|0)<(f|0)){k[h>>2]=f;h=g;break}else{k[h>>2]=i;h=g;break}}else{h=k[s>>2]|0;k[h+(j<<2)>>2]=f}while(0);j=j+1|0;f=k[v>>2]|0}while((j|0)<(f|0));if((f|0)>0){f=0;do{k[n+(f<<2)>>2]=(k[b+(f+m<<2)>>2]|0)+(k[h+(f<<2)>>2]|0);f=f+1|0;g=k[v>>2]|0}while((f|0)<(g|0));if((g|0)>0){f=0;do{g=n+(f<<2)|0;h=k[g>>2]|0;if((h|0)<=(k[q>>2]|0)){if((h|0)<(k[t>>2]|0))k[g>>2]=(k[u>>2]|0)+h}else k[g>>2]=h-(k[u>>2]|0);f=f+1|0}while((f|0)<(k[v>>2]|0))}}}d=d+1|0;if((d|0)>=(p|0)){d=10;break}h=k[o>>2]|0;f=k[h>>2]|0;g=k[h+4>>2]|0}if((d|0)==10){r=z;return 1}else if((d|0)==13)_k(h);return 0}function wd(a,b,c,d,e,f){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;f=f|0;var g=0,h=0,i=0,j=0,l=0,m=0,n=0,o=0,p=0,q=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0;z=r;r=r+16|0;x=z+4|0;y=z;k[a+72>>2]=e;k[a+64>>2]=f;w=a+68|0;v=Sl(e>>>0>1073741823?-1:e<<2)|0;d=k[w>>2]|0;k[w>>2]=v;if(d|0)Tl(d);v=a+8|0;k[v>>2]=e;d=a+32|0;f=a+36|0;i=k[f>>2]|0;h=k[d>>2]|0;g=i-h>>2;if(g>>>0>=e>>>0){if(g>>>0>e>>>0?(j=h+(e<<2)|0,(i|0)!=(j|0)):0)k[f>>2]=i+(~((i+-4-j|0)>>>2)<<2)}else wg(d,e-g|0);o=a+56|0;h=k[o>>2]|0;g=k[h+4>>2]|0;f=k[h>>2]|0;u=g-f|0;p=u>>2;if((u|0)<=0){r=z;return 1}q=a+16|0;s=a+32|0;t=a+12|0;u=a+20|0;d=0;while(1){if(g-f>>2>>>0<=d>>>0){d=13;break}k[y>>2]=k[f+(d<<2)>>2];k[x>>2]=k[y>>2];gc(a,x,c,d);m=$(d,e)|0;l=k[w>>2]|0;n=c+(m<<2)|0;if((k[v>>2]|0)>0){j=0;do{i=k[l+(j<<2)>>2]|0;f=k[q>>2]|0;do if((i|0)<=(f|0)){f=k[t>>2]|0;g=k[s>>2]|0;h=g+(j<<2)|0;if((i|0)<(f|0)){k[h>>2]=f;h=g;break}else{k[h>>2]=i;h=g;break}}else{h=k[s>>2]|0;k[h+(j<<2)>>2]=f}while(0);j=j+1|0;f=k[v>>2]|0}while((j|0)<(f|0));if((f|0)>0){f=0;do{k[n+(f<<2)>>2]=(k[b+(f+m<<2)>>2]|0)+(k[h+(f<<2)>>2]|0);f=f+1|0;g=k[v>>2]|0}while((f|0)<(g|0));if((g|0)>0){f=0;do{g=n+(f<<2)|0;h=k[g>>2]|0;if((h|0)<=(k[q>>2]|0)){if((h|0)<(k[t>>2]|0))k[g>>2]=(k[u>>2]|0)+h}else k[g>>2]=h-(k[u>>2]|0);f=f+1|0}while((f|0)<(k[v>>2]|0))}}}d=d+1|0;if((d|0)>=(p|0)){d=10;break}h=k[o>>2]|0;f=k[h>>2]|0;g=k[h+4>>2]|0}if((d|0)==10){r=z;return 1}else if((d|0)==13)_k(h);return 0}function xd(a,b){a=a|0;b=b|0;var c=0,d=0,e=0,f=0,g=0,h=0,i=0,l=0,m=0,n=0;d=a+4|0;if(!b){c=k[a>>2]|0;k[a>>2]=0;if(c|0)Vl(c);k[d>>2]=0;return}if(b>>>0>1073741823){a=Ma(4)|0;Fl(a);xa(a|0,976,90)}n=vj(b<<2)|0;c=k[a>>2]|0;k[a>>2]=n;if(c|0)Vl(c);k[d>>2]=b;c=0;do{k[(k[a>>2]|0)+(c<<2)>>2]=0;c=c+1|0}while((c|0)!=(b|0));d=a+8|0;g=k[d>>2]|0;if(!g)return;c=k[g+4>>2]|0;m=b+-1|0;n=(m&b|0)==0;if(n)c=c&m;else c=(c>>>0)%(b>>>0)|0;k[(k[a>>2]|0)+(c<<2)>>2]=d;d=k[g>>2]|0;if(!d)return;else{e=c;f=g;c=g}a:while(1){b:do if(n){i=c;while(1){c=d;while(1){l=k[c+4>>2]&m;if((l|0)==(e|0))break;d=(k[a>>2]|0)+(l<<2)|0;if(!(k[d>>2]|0)){f=i;e=l;break b}h=c+8|0;d=c;while(1){g=k[d>>2]|0;if(!g)break;if((j[h>>1]|0)==(j[g+8>>1]|0))d=g;else break}k[i>>2]=g;k[d>>2]=k[k[(k[a>>2]|0)+(l<<2)>>2]>>2];k[k[(k[a>>2]|0)+(l<<2)>>2]>>2]=c;c=k[f>>2]|0;if(!c){c=34;break a}}d=k[c>>2]|0;if(!d){c=34;break a}else{f=c;i=c}}}else{i=c;while(1){c=d;while(1){l=((k[c+4>>2]|0)>>>0)%(b>>>0)|0;if((l|0)==(e|0))break;d=(k[a>>2]|0)+(l<<2)|0;if(!(k[d>>2]|0)){f=i;e=l;break b}g=c+8|0;d=c;while(1){h=k[d>>2]|0;if(!h)break;if((j[g>>1]|0)==(j[h+8>>1]|0))d=h;else break}k[i>>2]=h;k[d>>2]=k[k[(k[a>>2]|0)+(l<<2)>>2]>>2];k[k[(k[a>>2]|0)+(l<<2)>>2]>>2]=c;c=k[f>>2]|0;if(!c){c=34;break a}}d=k[c>>2]|0;if(!d){c=34;break a}else{f=c;i=c}}}while(0);k[d>>2]=f;d=k[c>>2]|0;if(!d){c=34;break}else f=c}if((c|0)==34)return}function yd(a,b){a=a|0;b=b|0;var c=0,d=0,e=0,f=0,g=0,h=0,j=0,l=0,m=0,n=0;d=a+4|0;if(!b){c=k[a>>2]|0;k[a>>2]=0;if(c|0)Vl(c);k[d>>2]=0;return}if(b>>>0>1073741823){a=Ma(4)|0;Fl(a);xa(a|0,976,90)}n=vj(b<<2)|0;c=k[a>>2]|0;k[a>>2]=n;if(c|0)Vl(c);k[d>>2]=b;c=0;do{k[(k[a>>2]|0)+(c<<2)>>2]=0;c=c+1|0}while((c|0)!=(b|0));d=a+8|0;g=k[d>>2]|0;if(!g)return;c=k[g+4>>2]|0;m=b+-1|0;n=(m&b|0)==0;if(n)c=c&m;else c=(c>>>0)%(b>>>0)|0;k[(k[a>>2]|0)+(c<<2)>>2]=d;d=k[g>>2]|0;if(!d)return;else{e=c;f=g;c=g}a:while(1){b:do if(n){j=c;while(1){c=d;while(1){l=k[c+4>>2]&m;if((l|0)==(e|0))break;d=(k[a>>2]|0)+(l<<2)|0;if(!(k[d>>2]|0)){f=j;e=l;break b}h=c+8|0;d=c;while(1){g=k[d>>2]|0;if(!g)break;if((i[h>>0]|0)==(i[g+8>>0]|0))d=g;else break}k[j>>2]=g;k[d>>2]=k[k[(k[a>>2]|0)+(l<<2)>>2]>>2];k[k[(k[a>>2]|0)+(l<<2)>>2]>>2]=c;c=k[f>>2]|0;if(!c){c=34;break a}}d=k[c>>2]|0;if(!d){c=34;break a}else{f=c;j=c}}}else{j=c;while(1){c=d;while(1){l=((k[c+4>>2]|0)>>>0)%(b>>>0)|0;if((l|0)==(e|0))break;d=(k[a>>2]|0)+(l<<2)|0;if(!(k[d>>2]|0)){f=j;e=l;break b}g=c+8|0;d=c;while(1){h=k[d>>2]|0;if(!h)break;if((i[g>>0]|0)==(i[h+8>>0]|0))d=h;else break}k[j>>2]=h;k[d>>2]=k[k[(k[a>>2]|0)+(l<<2)>>2]>>2];k[k[(k[a>>2]|0)+(l<<2)>>2]>>2]=c;c=k[f>>2]|0;if(!c){c=34;break a}}d=k[c>>2]|0;if(!d){c=34;break a}else{f=c;j=c}}}while(0);k[d>>2]=f;d=k[c>>2]|0;if(!d){c=34;break}else f=c}if((c|0)==34)return}function zd(a,b){a=a|0;b=b|0;var c=0,d=0,e=0,f=0,g=0,h=0,i=0,j=0,l=0,m=0;d=a+4|0;if(!b){c=k[a>>2]|0;k[a>>2]=0;if(c|0)Vl(c);k[d>>2]=0;return}if(b>>>0>1073741823){a=Ma(4)|0;Fl(a);xa(a|0,976,90)}m=vj(b<<2)|0;c=k[a>>2]|0;k[a>>2]=m;if(c|0)Vl(c);k[d>>2]=b;c=0;do{k[(k[a>>2]|0)+(c<<2)>>2]=0;c=c+1|0}while((c|0)!=(b|0));d=a+8|0;g=k[d>>2]|0;if(!g)return;c=k[g+4>>2]|0;l=b+-1|0;m=(l&b|0)==0;if(m)c=c&l;else c=(c>>>0)%(b>>>0)|0;k[(k[a>>2]|0)+(c<<2)>>2]=d;d=k[g>>2]|0;if(!d)return;else{e=c;f=g;c=g}a:while(1){b:do if(m){i=c;while(1){c=d;while(1){j=k[c+4>>2]&l;if((j|0)==(e|0))break;d=(k[a>>2]|0)+(j<<2)|0;if(!(k[d>>2]|0)){f=i;e=j;break b}h=c+8|0;d=c;while(1){g=k[d>>2]|0;if(!g)break;if((k[h>>2]|0)==(k[g+8>>2]|0))d=g;else break}k[i>>2]=g;k[d>>2]=k[k[(k[a>>2]|0)+(j<<2)>>2]>>2];k[k[(k[a>>2]|0)+(j<<2)>>2]>>2]=c;c=k[f>>2]|0;if(!c){c=34;break a}}d=k[c>>2]|0;if(!d){c=34;break a}else{f=c;i=c}}}else{i=c;while(1){c=d;while(1){j=((k[c+4>>2]|0)>>>0)%(b>>>0)|0;if((j|0)==(e|0))break;d=(k[a>>2]|0)+(j<<2)|0;if(!(k[d>>2]|0)){f=i;e=j;break b}g=c+8|0;d=c;while(1){h=k[d>>2]|0;if(!h)break;if((k[g>>2]|0)==(k[h+8>>2]|0))d=h;else break}k[i>>2]=h;k[d>>2]=k[k[(k[a>>2]|0)+(j<<2)>>2]>>2];k[k[(k[a>>2]|0)+(j<<2)>>2]>>2]=c;c=k[f>>2]|0;if(!c){c=34;break a}}d=k[c>>2]|0;if(!d){c=34;break a}else{f=c;i=c}}}while(0);k[d>>2]=f;d=k[c>>2]|0;if(!d){c=34;break}else f=c}if((c|0)==34)return}function Ad(a){a=a|0;var b=0,c=0,d=0,e=0;k[a>>2]=5488;e=a+320|0;c=k[e>>2]|0;k[e>>2]=0;if(c|0){d=c+-4|0;b=k[d>>2]|0;if(b|0){b=c+(b<<4)|0;do{b=b+-16|0;Yl(b)}while((b|0)!=(c|0))}Tl(d)}Yl(a+304|0);Yl(a+264|0);sg(a+228|0);b=k[a+212>>2]|0;c=b;if(b|0){d=a+216|0;e=k[d>>2]|0;if((e|0)!=(b|0))k[d>>2]=e+(~((e+-4-c|0)>>>2)<<2);Vl(b)}b=k[a+200>>2]|0;c=b;if(b|0){d=a+204|0;e=k[d>>2]|0;if((e|0)!=(b|0))k[d>>2]=e+(~((e+-4-c|0)>>>2)<<2);Vl(b)}b=k[a+188>>2]|0;c=b;if(b|0){d=a+192|0;e=k[d>>2]|0;if((e|0)!=(b|0))k[d>>2]=e+(~((e+-4-c|0)>>>2)<<2);Vl(b)}b=k[a+176>>2]|0;c=b;if(b|0){d=a+180|0;e=k[d>>2]|0;if((e|0)!=(b|0))k[d>>2]=e+(~((e+-4-c|0)>>>2)<<2);Vl(b)}b=k[a+160>>2]|0;if(b|0)do{e=b;b=k[b>>2]|0;Vl(e)}while((b|0)!=0);e=a+152|0;b=k[e>>2]|0;k[e>>2]=0;if(b|0)Vl(b);b=k[a+136>>2]|0;if(b|0)Vl(b);b=k[a+124>>2]|0;if(b|0)Vl(b);b=k[a+112>>2]|0;if(b|0)Vl(b);b=k[a+88>>2]|0;c=b;if(b|0){d=a+92|0;e=k[d>>2]|0;if((e|0)!=(b|0))k[d>>2]=e+(~((e+-4-c|0)>>>2)<<2);Vl(b)}b=k[a+76>>2]|0;c=b;if(b|0){d=a+80|0;e=k[d>>2]|0;if((e|0)!=(b|0))k[d>>2]=e+(~((e+-4-c|0)>>>2)<<2);Vl(b)}b=k[a+64>>2]|0;if(b|0)Vl(b);b=k[a+48>>2]|0;c=b;if(b|0){d=a+52|0;e=k[d>>2]|0;if((e|0)!=(b|0))k[d>>2]=e+(~((e+-4-c|0)>>>2)<<2);Vl(b)}b=k[a+36>>2]|0;c=b;if(b|0){d=a+40|0;e=k[d>>2]|0;if((e|0)!=(b|0))k[d>>2]=e+(~(((e+-12-c|0)>>>0)/12|0)*12|0);Vl(b)}b=k[a+24>>2]|0;c=b;if(b|0){d=a+28|0;e=k[d>>2]|0;if((e|0)!=(b|0))k[d>>2]=e+(~((e+-4-c|0)>>>2)<<2);Vl(b)}b=k[a+12>>2]|0;c=b;if(b|0){d=a+16|0;e=k[d>>2]|0;if((e|0)!=(b|0))k[d>>2]=e+(~((e+-4-c|0)>>>2)<<2);Vl(b)}a=a+8|0;b=k[a>>2]|0;k[a>>2]=0;if(!b)return;Pg(b);Vl(b);return}function Bd(a,b){a=a|0;b=b|0;var c=0,d=0,e=0,f=0,g=0,h=0,j=0,l=0,m=0,n=0,o=0,p=0;n=r;r=r+48|0;c=n+40|0;m=n;if(!(xf(a,1,c)|0)){m=0;r=n;return m|0}l=a+40|0;e=a+16|0;f=k[e>>2]|0;d=(k[a>>2]|0)+f|0;o=a+8|0;e=Zj(k[o>>2]|0,k[o+4>>2]|0,f|0,k[e+4>>2]|0)|0;Aj(l,d,e);e=c;d=k[e>>2]|0;e=k[e+4>>2]|0;f=a+48|0;o=f;g=a+56|0;j=g;h=k[j>>2]|0;j=k[j+4>>2]|0;o=Zj(k[o>>2]|0,k[o+4>>2]|0,h|0,j|0)|0;p=M;if(e>>>0>p>>>0|(e|0)==(p|0)&d>>>0>o>>>0){p=0;r=n;return p|0}o=mk(h|0,j|0,d|0,e|0)|0;p=g;k[p>>2]=o;k[p+4>>2]=M;if(!(xf(l,1,c)|0)){p=0;r=n;return p|0}pj(m);d=g;e=k[d>>2]|0;p=(k[l>>2]|0)+e|0;g=f;d=Zj(k[g>>2]|0,k[g+4>>2]|0,e|0,k[d+4>>2]|0)|0;Aj(m,p,d);d=c;c=k[d>>2]|0;d=k[d+4>>2]|0;p=m+8|0;e=m+16|0;g=e;f=k[g>>2]|0;g=k[g+4>>2]|0;p=Zj(k[p>>2]|0,k[p+4>>2]|0,f|0,g|0)|0;o=M;a:do if(d>>>0>o>>>0|(d|0)==(o|0)&c>>>0>p>>>0)c=0;else{c=mk(f|0,g|0,c|0,d|0)|0;h=e;k[h>>2]=c;k[h+4>>2]=M;h=a+84|0;c=k[h>>2]|0;if((c|0)>0){g=a+80|0;e=c<<4;e=Sl(c>>>0>268435455|e>>>0>4294967291?-1:e+4|0)|0;k[e>>2]=c;e=e+4|0;c=e+(c<<4)|0;d=e;do{Cl(d);d=d+16|0}while((d|0)!=(c|0));f=k[g>>2]|0;k[g>>2]=e;if(f|0){d=f+-4|0;c=k[d>>2]|0;if(c|0){c=f+(c<<4)|0;do{c=c+-16|0;Yl(c)}while((c|0)!=(f|0))}Tl(d)}if((k[h>>2]|0)>0){c=0;do{if(!(ue((k[g>>2]|0)+(c<<4)|0,m)|0)){c=0;break a}c=c+1|0}while((c|0)<(k[h>>2]|0))}}c=b;d=m;e=c+36|0;do{k[c>>2]=k[d>>2];c=c+4|0;d=d+4|0}while((c|0)<(e|0));i[b+36>>0]=i[m+36>>0]|0;c=1}while(0);Yl(m+24|0);p=c;r=n;return p|0}function Cd(a,b,c,d,e,f){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;f=f|0;var g=0,h=0,i=0,j=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0,v=0,w=0;s=a+8|0;k[s>>2]=e;q=e>>>0>1073741823?-1:e<<2;t=Sl(q)|0;Zh(t|0,0,q|0)|0;q=k[a+24>>2]|0;r=a+32|0;h=k[r>>2]|0;g=k[h+4>>2]|0;f=k[h>>2]|0;d=g-f|0;a:do if((d|0)>4){n=k[a+28>>2]|0;o=q+12|0;p=(e|0)>0;l=d>>2;a=g;d=h;while(1){m=l+-1|0;if(a-f>>2>>>0<=m>>>0)break;d=k[f+(m<<2)>>2]|0;j=$(m,e)|0;if((d|0)>=0?(v=k[(k[o>>2]|0)+(d<<2)>>2]|0,(v|0)>=0):0){a=k[q>>2]|0;f=(v>>>0)%3|0;g=k[n>>2]|0;i=k[g+(k[a+(((v>>>0)/3|0)*12|0)+(f<<2)>>2]<<2)>>2]|0;d=v+1|0;d=((d|0)%3|0|0)==0?v+-2|0:d;if((d|0)<0)d=-1073741824;else d=k[a+(((d>>>0)/3|0)*12|0)+(((d>>>0)%3|0)<<2)>>2]|0;h=k[g+(d<<2)>>2]|0;d=((f|0)==0?2:-1)+v|0;if((d|0)<0)d=-1073741824;else d=k[a+(((d>>>0)/3|0)*12|0)+(((d>>>0)%3|0)<<2)>>2]|0;d=k[g+(d<<2)>>2]|0;if((i|0)<(m|0)&(h|0)<(m|0)&(d|0)<(m|0)){g=$(i,e)|0;a=$(h,e)|0;f=$(d,e)|0;if(p){d=0;do{k[t+(d<<2)>>2]=(k[b+(d+f<<2)>>2]|0)+(k[b+(d+a<<2)>>2]|0)-(k[b+(d+g<<2)>>2]|0);d=d+1|0}while((d|0)!=(e|0))}ve(s,b+(j<<2)|0,t,c,j)}else w=17}else w=17;if((w|0)==17){w=0;ve(s,b+(j<<2)|0,b+(($(l+-2|0,e)|0)<<2)|0,c,j)}if((m|0)<=1){u=t;break a}d=k[r>>2]|0;l=m;f=k[d>>2]|0;a=k[d+4>>2]|0}_k(d)}else u=t;while(0);if((e|0)<=0){ve(s,b,u,c,0);Tl(t);return 1}Zh(t|0,0,e<<2|0)|0;ve(s,b,u,c,0);Tl(t);return 1}function Dd(a,b,c){a=a|0;b=b|0;c=c|0;var d=0,e=0,f=0,g=0,h=0;g=b+8|0;h=k[g+4>>2]|0;d=b+16|0;f=d;e=k[f>>2]|0;f=k[f+4>>2]|0;if(!((h|0)>(f|0)|((h|0)==(f|0)?(k[g>>2]|0)>>>0>e>>>0:0))){h=0;return h|0}h=i[(k[b>>2]|0)+e>>0]|0;f=mk(e|0,f|0,1,0)|0;g=d;k[g>>2]=f;k[g+4>>2]=M;do switch(h<<24>>24){case 1:{h=zc(a,b,c)|0;return h|0}case 2:{h=zc(a,b,c)|0;return h|0}case 3:{h=zc(a,b,c)|0;return h|0}case 4:{h=zc(a,b,c)|0;return h|0}case 5:{h=zc(a,b,c)|0;return h|0}case 6:{h=zc(a,b,c)|0;return h|0}case 7:{h=zc(a,b,c)|0;return h|0}case 8:{h=zc(a,b,c)|0;return h|0}case 9:{h=yc(a,b,c)|0;return h|0}case 10:{h=xc(a,b,c)|0;return h|0}case 11:{h=wc(a,b,c)|0;return h|0}case 12:{h=vc(a,b,c)|0;return h|0}case 13:{h=uc(a,b,c)|0;return h|0}case 14:{h=tc(a,b,c)|0;return h|0}case 15:{h=tc(a,b,c)|0;return h|0}case 16:{h=tc(a,b,c)|0;return h|0}case 17:{h=tc(a,b,c)|0;return h|0}case 18:{h=tc(a,b,c)|0;return h|0}default:{h=0;return h|0}}while(0);return 0}function Ed(a,b){a=a|0;b=b|0;var c=0,d=0,e=0,f=0,g=0,h=0,j=0,m=0,n=0,o=0;o=r;r=r+32|0;h=o+16|0;j=o;n=b+8|0;g=n;f=k[g+4>>2]|0;m=b+16|0;d=m;c=k[d>>2]|0;d=k[d+4>>2]|0;if(!((f|0)>(d|0)|((f|0)==(d|0)?(k[g>>2]|0)>>>0>c>>>0:0))){a=0;r=o;return a|0}g=i[(k[b>>2]|0)+c>>0]|0;e=mk(c|0,d|0,1,0)|0;f=m;k[f>>2]=e;k[f+4>>2]=M;if(g<<24>>24){a=0;r=o;return a|0}f=0;do{ih(h,b);c=k[h>>2]|0;if(c|0){g=a+60+(f*12|0)|0;$d(g,c,0);Cl(j);ue(j,b)|0;if(k[h>>2]|0){d=0;do{e=(k[g>>2]|0)+(d>>>5<<2)|0;c=1<<(d&31);if(Xh(j)|0)c=k[e>>2]|c;else c=k[e>>2]&~c;k[e>>2]=c;d=d+1|0}while(d>>>0<(k[h>>2]|0)>>>0)}Yl(j)}f=f+1|0}while((f|0)<4);f=n;h=k[f>>2]|0;f=k[f+4>>2]|0;j=m;c=k[j>>2]|0;j=mk(c|0,k[j+4>>2]|0,4,0)|0;g=M;if((f|0)<(g|0)|(f|0)==(g|0)&h>>>0>>0){a=0;r=o;return a|0}h=a+12|0;c=(k[b>>2]|0)+c|0;c=l[c>>0]|l[c+1>>0]<<8|l[c+2>>0]<<16|l[c+3>>0]<<24;i[h>>0]=c;i[h+1>>0]=c>>8;i[h+2>>0]=c>>16;i[h+3>>0]=c>>24;h=m;f=k[h>>2]|0;h=k[h+4>>2]|0;d=mk(f|0,h|0,4,0)|0;g=m;k[g>>2]=d;k[g+4>>2]=M;g=n;j=k[g>>2]|0;g=k[g+4>>2]|0;n=mk(f|0,h|0,8,0)|0;h=M;if((g|0)<(h|0)|(g|0)==(h|0)&j>>>0>>0){a=0;r=o;return a|0}j=a+16|0;n=(k[b>>2]|0)+d|0;n=l[n>>0]|l[n+1>>0]<<8|l[n+2>>0]<<16|l[n+3>>0]<<24;i[j>>0]=n;i[j+1>>0]=n>>8;i[j+2>>0]=n>>16;i[j+3>>0]=n>>24;b=m;b=mk(k[b>>2]|0,k[b+4>>2]|0,4,0)|0;d=m;k[d>>2]=b;k[d+4>>2]=M;n=n+(1-c)|0;k[a+20>>2]=n;c=(n|0)/2|0;d=a+24|0;k[d>>2]=c;k[a+28>>2]=0-c;if(n&1|0){a=1;r=o;return a|0}k[d>>2]=c+-1;a=1;r=o;return a|0}function Fd(a,b,c,d,e,f){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;f=f|0;var g=0,h=0,i=0,j=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0,v=0,w=0;s=a+8|0;k[s>>2]=e;q=e>>>0>1073741823?-1:e<<2;t=Sl(q)|0;Zh(t|0,0,q|0)|0;q=k[a+24>>2]|0;r=a+32|0;h=k[r>>2]|0;g=k[h+4>>2]|0;f=k[h>>2]|0;d=g-f|0;a:do if((d|0)>4){n=k[a+28>>2]|0;o=q+12|0;p=(e|0)>0;l=d>>2;a=g;d=h;while(1){m=l+-1|0;if(a-f>>2>>>0<=m>>>0)break;d=k[f+(m<<2)>>2]|0;j=$(m,e)|0;if((d|0)>=0?(v=k[(k[o>>2]|0)+(d<<2)>>2]|0,(v|0)>=0):0){a=k[q>>2]|0;f=(v>>>0)%3|0;g=k[n>>2]|0;i=k[g+(k[a+(((v>>>0)/3|0)*12|0)+(f<<2)>>2]<<2)>>2]|0;d=v+1|0;d=((d|0)%3|0|0)==0?v+-2|0:d;if((d|0)<0)d=-1073741824;else d=k[a+(((d>>>0)/3|0)*12|0)+(((d>>>0)%3|0)<<2)>>2]|0;h=k[g+(d<<2)>>2]|0;d=((f|0)==0?2:-1)+v|0;if((d|0)<0)d=-1073741824;else d=k[a+(((d>>>0)/3|0)*12|0)+(((d>>>0)%3|0)<<2)>>2]|0;d=k[g+(d<<2)>>2]|0;if((i|0)<(m|0)&(h|0)<(m|0)&(d|0)<(m|0)){g=$(i,e)|0;a=$(h,e)|0;f=$(d,e)|0;if(p){d=0;do{k[t+(d<<2)>>2]=(k[b+(d+f<<2)>>2]|0)+(k[b+(d+a<<2)>>2]|0)-(k[b+(d+g<<2)>>2]|0);d=d+1|0}while((d|0)!=(e|0))}Ae(s,b+(j<<2)|0,t,c,j)}else w=17}else w=17;if((w|0)==17){w=0;Ae(s,b+(j<<2)|0,b+(($(l+-2|0,e)|0)<<2)|0,c,j)}if((m|0)<=1){u=t;break a}d=k[r>>2]|0;l=m;f=k[d>>2]|0;a=k[d+4>>2]|0}_k(d)}else u=t;while(0);if((e|0)<=0){Ae(s,b,u,c,0);Tl(t);return 1}Zh(t|0,0,e<<2|0)|0;Ae(s,b,u,c,0);Tl(t);return 1}function Gd(a,b,c){a=a|0;b=b|0;c=c|0;var d=Pa,e=Pa,f=0,g=0,h=0;switch(i[a+24>>0]|0){case 1:{g=k[b>>2]|0;b=a+48|0;f=k[b>>2]|0;b=k[b+4>>2]|0;h=a+40|0;b=mk(sj(k[h>>2]|0,k[h+4>>2]|0,g|0,((g|0)<0)<<31>>31|0)|0,M|0,f|0,b|0)|0;e=da(i[(k[k[a>>2]>>2]|0)+b>>0]|0);d=da(e/da(127.0));o[c>>2]=(i[a+32>>0]|0)==0?e:d;o[c+4>>2]=da(0.0);c=1;return c|0}case 2:{g=k[b>>2]|0;h=a+48|0;b=k[h>>2]|0;h=k[h+4>>2]|0;f=a+40|0;h=(mk(sj(k[f>>2]|0,k[f+4>>2]|0,g|0,((g|0)<0)<<31>>31|0)|0,M|0,b|0,h|0)|0)+(k[k[a>>2]>>2]|0)|0;h=l[h>>0]|l[h+1>>0]<<8;b=(h&65535)>>>8&255;d=da((h&255)<<24>>24);if(!(i[a+32>>0]|0)){o[c>>2]=d;e=da(b<<24>>24);o[c+4>>2]=e;h=1;return h|0}else{e=da(d/da(127.0));o[c>>2]=e;e=da(da(b<<24>>24)/da(127.0));o[c+4>>2]=e;h=1;return h|0}}case 3:{g=k[b>>2]|0;h=a+48|0;b=k[h>>2]|0;h=k[h+4>>2]|0;f=a+40|0;h=(mk(sj(k[f>>2]|0,k[f+4>>2]|0,g|0,((g|0)<0)<<31>>31|0)|0,M|0,b|0,h|0)|0)+(k[k[a>>2]>>2]|0)|0;b=i[h+1>>0]|0;d=da(i[h>>0]|0);if(!(i[a+32>>0]|0)){o[c>>2]=d;e=da(b<<24>>24);o[c+4>>2]=e;h=1;return h|0}else{e=da(d/da(127.0));o[c>>2]=e;e=da(da(b<<24>>24)/da(127.0));o[c+4>>2]=e;h=1;return h|0}}case 4:{g=k[b>>2]|0;h=a+48|0;b=k[h>>2]|0;h=k[h+4>>2]|0;f=a+40|0;h=(mk(sj(k[f>>2]|0,k[f+4>>2]|0,g|0,((g|0)<0)<<31>>31|0)|0,M|0,b|0,h|0)|0)+(k[k[a>>2]>>2]|0)|0;h=l[h>>0]|l[h+1>>0]<<8|l[h+2>>0]<<16|l[h+3>>0]<<24;b=h>>>8&255;d=da((h&255)<<24>>24);if(!(i[a+32>>0]|0)){o[c>>2]=d;e=da(b<<24>>24);o[c+4>>2]=e;h=1;return h|0}else{e=da(d/da(127.0));o[c>>2]=e;e=da(da(b<<24>>24)/da(127.0));o[c+4>>2]=e;h=1;return h|0}}default:{h=0;return h|0}}return 0}function Hd(a,b,c){a=a|0;b=b|0;c=c|0;var d=Pa,e=Pa,f=0,g=0,h=0;switch(i[a+24>>0]|0){case 1:{g=k[b>>2]|0;b=a+48|0;f=k[b>>2]|0;b=k[b+4>>2]|0;h=a+40|0;b=mk(sj(k[h>>2]|0,k[h+4>>2]|0,g|0,((g|0)<0)<<31>>31|0)|0,M|0,f|0,b|0)|0;e=da(l[(k[k[a>>2]>>2]|0)+b>>0]|0);d=da(e/da(255.0));o[c>>2]=(i[a+32>>0]|0)==0?e:d;o[c+4>>2]=da(0.0);c=1;return c|0}case 2:{g=k[b>>2]|0;h=a+48|0;b=k[h>>2]|0;h=k[h+4>>2]|0;f=a+40|0;h=(mk(sj(k[f>>2]|0,k[f+4>>2]|0,g|0,((g|0)<0)<<31>>31|0)|0,M|0,b|0,h|0)|0)+(k[k[a>>2]>>2]|0)|0;h=l[h>>0]|l[h+1>>0]<<8;b=(h&65535)>>>8&255;d=da(h&255);if(!(i[a+32>>0]|0)){o[c>>2]=d;e=da(b&255);o[c+4>>2]=e;h=1;return h|0}else{e=da(d/da(255.0));o[c>>2]=e;e=da(da(b&255)/da(255.0));o[c+4>>2]=e;h=1;return h|0}}case 3:{g=k[b>>2]|0;h=a+48|0;b=k[h>>2]|0;h=k[h+4>>2]|0;f=a+40|0;h=(mk(sj(k[f>>2]|0,k[f+4>>2]|0,g|0,((g|0)<0)<<31>>31|0)|0,M|0,b|0,h|0)|0)+(k[k[a>>2]>>2]|0)|0;b=i[h+1>>0]|0;d=da(l[h>>0]|0);if(!(i[a+32>>0]|0)){o[c>>2]=d;e=da(b&255);o[c+4>>2]=e;h=1;return h|0}else{e=da(d/da(255.0));o[c>>2]=e;e=da(da(b&255)/da(255.0));o[c+4>>2]=e;h=1;return h|0}}case 4:{g=k[b>>2]|0;h=a+48|0;b=k[h>>2]|0;h=k[h+4>>2]|0;f=a+40|0;h=(mk(sj(k[f>>2]|0,k[f+4>>2]|0,g|0,((g|0)<0)<<31>>31|0)|0,M|0,b|0,h|0)|0)+(k[k[a>>2]>>2]|0)|0;h=l[h>>0]|l[h+1>>0]<<8|l[h+2>>0]<<16|l[h+3>>0]<<24;b=h>>>8&255;d=da(h&255);if(!(i[a+32>>0]|0)){o[c>>2]=d;e=da(b&255);o[c+4>>2]=e;h=1;return h|0}else{e=da(d/da(255.0));o[c>>2]=e;e=da(da(b&255)/da(255.0));o[c+4>>2]=e;h=1;return h|0}}default:{h=0;return h|0}}return 0}function Id(a,b){a=a|0;b=b|0;var c=0,d=0,e=0,f=0,g=0,h=0,j=0,m=0,n=0,o=0,p=0,q=0;q=r;r=r+16|0;p=q;m=b+8|0;g=m;h=k[g>>2]|0;g=k[g+4>>2]|0;j=b+16|0;d=j;c=k[d>>2]|0;d=mk(c|0,k[d+4>>2]|0,4,0)|0;e=M;if((g|0)<(e|0)|(g|0)==(e|0)&h>>>0>>0){p=0;r=q;return p|0}h=(k[b>>2]|0)+c|0;h=l[h>>0]|l[h+1>>0]<<8|l[h+2>>0]<<16|l[h+3>>0]<<24;g=j;k[g>>2]=d;k[g+4>>2]=e;if((h|0)<0){p=0;r=q;return p|0}g=a+76|0;$d(g,h,0);Cl(p);if(ue(p,b)|0){if((h|0)>0){d=1;e=0;do{d=d^((Xh(p)|0)^1);f=(k[g>>2]|0)+(e>>>5<<2)|0;c=1<<(e&31);if(d)c=k[f>>2]|c;else c=k[f>>2]&~c;k[f>>2]=c;e=e+1|0}while((e|0)<(h|0))}e=m;g=k[e>>2]|0;e=k[e+4>>2]|0;h=j;c=k[h>>2]|0;h=mk(c|0,k[h+4>>2]|0,4,0)|0;f=M;if(!((e|0)<(f|0)|(e|0)==(f|0)&g>>>0>>0)?(g=a+12|0,n=(k[b>>2]|0)+c|0,n=l[n>>0]|l[n+1>>0]<<8|l[n+2>>0]<<16|l[n+3>>0]<<24,i[g>>0]=n,i[g+1>>0]=n>>8,i[g+2>>0]=n>>16,i[g+3>>0]=n>>24,g=j,e=k[g>>2]|0,g=k[g+4>>2]|0,o=mk(e|0,g|0,4,0)|0,f=j,k[f>>2]=o,k[f+4>>2]=M,f=m,h=k[f>>2]|0,f=k[f+4>>2]|0,m=mk(e|0,g|0,8,0)|0,g=M,!((f|0)<(g|0)|(f|0)==(g|0)&h>>>0>>0)):0){d=a+16|0;o=(k[b>>2]|0)+o|0;o=l[o>>0]|l[o+1>>0]<<8|l[o+2>>0]<<16|l[o+3>>0]<<24;i[d>>0]=o;i[d+1>>0]=o>>8;i[d+2>>0]=o>>16;i[d+3>>0]=o>>24;d=j;d=mk(k[d>>2]|0,k[d+4>>2]|0,4,0)|0;c=j;k[c>>2]=d;k[c+4>>2]=M;o=o+(1-n)|0;k[a+20>>2]=o;c=(o|0)/2|0;d=a+24|0;k[d>>2]=c;k[a+28>>2]=0-c;if(!(o&1)){k[d>>2]=c+-1;c=1}else c=1}else c=0}else c=0;Yl(p);p=c;r=q;return p|0}function Jd(a){a=a|0;var b=0,c=0,d=0,e=0;k[a>>2]=5700;Bf(a+240|0);sg(a+228|0);b=k[a+212>>2]|0;c=b;if(b|0){d=a+216|0;e=k[d>>2]|0;if((e|0)!=(b|0))k[d>>2]=e+(~((e+-4-c|0)>>>2)<<2);Vl(b)}b=k[a+200>>2]|0;c=b;if(b|0){d=a+204|0;e=k[d>>2]|0;if((e|0)!=(b|0))k[d>>2]=e+(~((e+-4-c|0)>>>2)<<2);Vl(b)}b=k[a+188>>2]|0;c=b;if(b|0){d=a+192|0;e=k[d>>2]|0;if((e|0)!=(b|0))k[d>>2]=e+(~((e+-4-c|0)>>>2)<<2);Vl(b)}b=k[a+176>>2]|0;c=b;if(b|0){d=a+180|0;e=k[d>>2]|0;if((e|0)!=(b|0))k[d>>2]=e+(~((e+-4-c|0)>>>2)<<2);Vl(b)}b=k[a+160>>2]|0;if(b|0)do{e=b;b=k[b>>2]|0;Vl(e)}while((b|0)!=0);e=a+152|0;b=k[e>>2]|0;k[e>>2]=0;if(b|0)Vl(b);b=k[a+136>>2]|0;if(b|0)Vl(b);b=k[a+124>>2]|0;if(b|0)Vl(b);b=k[a+112>>2]|0;if(b|0)Vl(b);b=k[a+88>>2]|0;c=b;if(b|0){d=a+92|0;e=k[d>>2]|0;if((e|0)!=(b|0))k[d>>2]=e+(~((e+-4-c|0)>>>2)<<2);Vl(b)}b=k[a+76>>2]|0;c=b;if(b|0){d=a+80|0;e=k[d>>2]|0;if((e|0)!=(b|0))k[d>>2]=e+(~((e+-4-c|0)>>>2)<<2);Vl(b)}b=k[a+64>>2]|0;if(b|0)Vl(b);b=k[a+48>>2]|0;c=b;if(b|0){d=a+52|0;e=k[d>>2]|0;if((e|0)!=(b|0))k[d>>2]=e+(~((e+-4-c|0)>>>2)<<2);Vl(b)}b=k[a+36>>2]|0;c=b;if(b|0){d=a+40|0;e=k[d>>2]|0;if((e|0)!=(b|0))k[d>>2]=e+(~(((e+-12-c|0)>>>0)/12|0)*12|0);Vl(b)}b=k[a+24>>2]|0;c=b;if(b|0){d=a+28|0;e=k[d>>2]|0;if((e|0)!=(b|0))k[d>>2]=e+(~((e+-4-c|0)>>>2)<<2);Vl(b)}b=k[a+12>>2]|0;c=b;if(b|0){d=a+16|0;e=k[d>>2]|0;if((e|0)!=(b|0))k[d>>2]=e+(~((e+-4-c|0)>>>2)<<2);Vl(b)}a=a+8|0;b=k[a>>2]|0;k[a>>2]=0;if(!b)return;Pg(b);Vl(b);return}function Kd(a,b){a=a|0;b=b|0;var c=0,d=0,e=0,f=0,g=0,h=0,j=0,m=0,n=0,o=0;o=r;r=r+32|0;h=o+16|0;j=o;n=b+8|0;g=n;f=k[g+4>>2]|0;m=b+16|0;d=m;c=k[d>>2]|0;d=k[d+4>>2]|0;if(!((f|0)>(d|0)|((f|0)==(d|0)?(k[g>>2]|0)>>>0>c>>>0:0))){n=0;r=o;return n|0}g=i[(k[b>>2]|0)+c>>0]|0;e=mk(c|0,d|0,1,0)|0;f=m;k[f>>2]=e;k[f+4>>2]=M;if(g<<24>>24){n=0;r=o;return n|0}f=0;do{ih(h,b);c=k[h>>2]|0;if(c|0){g=a+36+(f*12|0)|0;$d(g,c,0);Cl(j);ue(j,b)|0;if(k[h>>2]|0){d=0;do{e=(k[g>>2]|0)+(d>>>5<<2)|0;c=1<<(d&31);if(Xh(j)|0)c=k[e>>2]|c;else c=k[e>>2]&~c;k[e>>2]=c;d=d+1|0}while(d>>>0<(k[h>>2]|0)>>>0)}Yl(j)}f=f+1|0}while((f|0)<4);f=n;h=k[f>>2]|0;f=k[f+4>>2]|0;j=m;c=k[j>>2]|0;j=mk(c|0,k[j+4>>2]|0,4,0)|0;g=M;if((f|0)<(g|0)|(f|0)==(g|0)&h>>>0>>0){n=0;r=o;return n|0}h=a+12|0;f=(k[b>>2]|0)+c|0;f=l[f>>0]|l[f+1>>0]<<8|l[f+2>>0]<<16|l[f+3>>0]<<24;i[h>>0]=f;i[h+1>>0]=f>>8;i[h+2>>0]=f>>16;i[h+3>>0]=f>>24;h=m;f=k[h>>2]|0;h=k[h+4>>2]|0;c=mk(f|0,h|0,4,0)|0;g=m;k[g>>2]=c;k[g+4>>2]=M;g=n;j=k[g>>2]|0;g=k[g+4>>2]|0;n=mk(f|0,h|0,8,0)|0;h=M;if((g|0)<(h|0)|(g|0)==(h|0)&j>>>0>>0){n=0;r=o;return n|0}n=a+16|0;b=(k[b>>2]|0)+c|0;b=l[b>>0]|l[b+1>>0]<<8|l[b+2>>0]<<16|l[b+3>>0]<<24;i[n>>0]=b;i[n+1>>0]=b>>8;i[n+2>>0]=b>>16;i[n+3>>0]=b>>24;b=m;b=mk(k[b>>2]|0,k[b+4>>2]|0,4,0)|0;n=m;k[n>>2]=b;k[n+4>>2]=M;n=1;r=o;return n|0}function Ld(a,b,c,d,e,f){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;f=f|0;var g=0,h=0,i=0,j=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0,v=0;s=a+8|0;k[s>>2]=e;t=k[a+24>>2]|0;q=k[a+28>>2]|0;m=e>>>0>1073741823?-1:e<<2;r=Sl(m)|0;Zh(r|0,0,m|0)|0;dg(s,r,b,c,0);m=a+32|0;a=k[m>>2]|0;g=k[a+4>>2]|0;f=k[a>>2]|0;p=g-f|0;n=p>>2;if((p|0)<=4){Tl(r);return 1}o=t+12|0;p=(e|0)>0;d=1;while(1){if(g-f>>2>>>0<=d>>>0){v=6;break}f=k[f+(d<<2)>>2]|0;l=$(d,e)|0;if((f|0)>=0?(u=k[(k[o>>2]|0)+(f<<2)>>2]|0,(u|0)>=0):0){g=k[t>>2]|0;a=(u>>>0)%3|0;h=k[q>>2]|0;j=k[h+(k[g+(((u>>>0)/3|0)*12|0)+(a<<2)>>2]<<2)>>2]|0;f=u+1|0;f=((f|0)%3|0|0)==0?u+-2|0:f;if((f|0)<0)f=-1073741824;else f=k[g+(((f>>>0)/3|0)*12|0)+(((f>>>0)%3|0)<<2)>>2]|0;i=k[h+(f<<2)>>2]|0;f=((a|0)==0?2:-1)+u|0;if((f|0)<0)f=-1073741824;else f=k[g+(((f>>>0)/3|0)*12|0)+(((f>>>0)%3|0)<<2)>>2]|0;f=k[h+(f<<2)>>2]|0;if((j|0)<(d|0)&(i|0)<(d|0)&(f|0)<(d|0)){h=$(j,e)|0;g=$(i,e)|0;a=$(f,e)|0;if(p){f=0;do{k[r+(f<<2)>>2]=(k[c+(f+a<<2)>>2]|0)+(k[c+(f+g<<2)>>2]|0)-(k[c+(f+h<<2)>>2]|0);f=f+1|0}while((f|0)!=(e|0))}dg(s,r,b,c+(l<<2)|0,l)}else v=15}else v=15;if((v|0)==15){v=0;dg(s,c+(($(d+-1|0,e)|0)<<2)|0,b,c+(l<<2)|0,l)}d=d+1|0;if((d|0)>=(n|0)){v=3;break}a=k[m>>2]|0;f=k[a>>2]|0;g=k[a+4>>2]|0}if((v|0)==3){Tl(r);return 1}else if((v|0)==6)_k(a);return 0}function Md(a,b,c,d){a=a|0;b=b|0;c=c|0;d=d|0;var e=0,f=0,g=0,h=0,i=0,j=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0;p=k[b>>2]|0;m=k[b+4>>2]|0;h=((k[c>>2]|0)-p<<3)+(k[c+4>>2]|0)-m|0;c=p;if((h|0)<=0){b=d+4|0;d=k[d>>2]|0;k[a>>2]=d;d=a+4|0;a=k[b>>2]|0;k[d>>2]=a;return}if(!m){e=d+4|0;n=e;e=k[e>>2]|0}else{g=32-m|0;l=(h|0)<(g|0)?h:g;g=-1>>>(g-l|0)&-1<>2];n=d+4|0;j=k[n>>2]|0;e=32-j|0;f=e>>>0>>0?e:l;i=k[d>>2]|0;j=k[i>>2]&~(-1>>>(e-f|0)&-1<>2]=j;e=k[n>>2]|0;k[i>>2]=j|(e>>>0>m>>>0?g<>>(m-e|0));e=(k[n>>2]|0)+f|0;i=i+(e>>>5<<2)|0;k[d>>2]=i;e=e&31;k[n>>2]=e;j=l-f|0;if((j|0)>0){k[i>>2]=k[i>>2]&~(-1>>>(32-j|0))|g>>>(m+f|0);k[n>>2]=j;e=j}c=c+4|0;k[b>>2]=c;h=h-l|0}p=32-e|0;j=-1<>>0>31){l=~j;i=k[d>>2]|0;e=h+-32|0;o=e>>>5;m=o+1|0;o=e-(o<<5)|0;e=c;f=k[i>>2]|0;g=i;while(1){q=k[e>>2]|0;r=f&l;k[g>>2]=r;k[g>>2]=r|q<>2];g=g+4|0;f=k[g>>2]&j|q>>>p;k[g>>2]=f;h=h+-32|0;if(h>>>0<=31)break;else e=e+4|0}c=c+(m<<2)|0;k[b>>2]=c;k[d>>2]=i+(m<<2);h=o}if(!h){q=n;r=k[d>>2]|0;k[a>>2]=r;r=a+4|0;q=k[q>>2]|0;k[r>>2]=q;return}g=k[c>>2]&-1>>>(32-h|0);f=(p|0)<(h|0)?p:h;e=k[d>>2]|0;c=k[e>>2]&~(-1<>2]&-1>>>(p-f|0));k[e>>2]=c;k[e>>2]=c|g<>2];c=(k[n>>2]|0)+f|0;e=e+(c>>>5<<2)|0;k[d>>2]=e;k[n>>2]=c&31;c=h-f|0;if((c|0)<=0){q=n;r=k[d>>2]|0;k[a>>2]=r;r=a+4|0;q=k[q>>2]|0;k[r>>2]=q;return}k[e>>2]=k[e>>2]&~(-1>>>(32-c|0))|g>>>f;k[n>>2]=c;q=n;r=k[d>>2]|0;k[a>>2]=r;r=a+4|0;q=k[q>>2]|0;k[r>>2]=q;return}function Nd(a,b,c,d,e,f){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;f=f|0;var g=0,h=0,i=0,j=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0,v=0,w=0,x=0;r=a+8|0;k[r>>2]=e;p=e>>>0>1073741823?-1:e<<2;s=Sl(p)|0;Zh(s|0,0,p|0)|0;p=k[a+24>>2]|0;q=a+32|0;h=k[q>>2]|0;g=k[h+4>>2]|0;f=k[h>>2]|0;d=g-f|0;a:do if((d|0)>4){l=k[a+28>>2]|0;m=p+64|0;n=p+28|0;o=(e|0)>0;i=d>>2;a=g;d=h;while(1){j=i+-1|0;if(a-f>>2>>>0<=j>>>0)break;d=k[f+(j<<2)>>2]|0;h=$(j,e)|0;if((!((d|0)<0?1:(1<<(d&31)&k[(k[p>>2]|0)+(d>>>5<<2)>>2]|0)!=0)?(u=k[(k[(k[m>>2]|0)+12>>2]|0)+(d<<2)>>2]|0,(u|0)>=0):0)?(x=k[n>>2]|0,g=k[l>>2]|0,v=k[g+(k[x+(u<<2)>>2]<<2)>>2]|0,w=u+1|0,w=k[g+(k[x+((((w|0)%3|0|0)==0?u+-2|0:w)<<2)>>2]<<2)>>2]|0,x=k[g+(k[x+((((u>>>0)%3|0|0)==0?2:-1)+u<<2)>>2]<<2)>>2]|0,(v|0)<(j|0)&(w|0)<(j|0)&(x|0)<(j|0)):0){f=$(v,e)|0;a=$(w,e)|0;g=$(x,e)|0;if(o){d=0;do{k[s+(d<<2)>>2]=(k[b+(d+g<<2)>>2]|0)+(k[b+(d+a<<2)>>2]|0)-(k[b+(d+f<<2)>>2]|0);d=d+1|0}while((d|0)!=(e|0))}ve(r,b+(h<<2)|0,s,c,h)}else ve(r,b+(h<<2)|0,b+(($(i+-2|0,e)|0)<<2)|0,c,h);if((j|0)<=1){t=s;break a}d=k[q>>2]|0;i=j;f=k[d>>2]|0;a=k[d+4>>2]|0}_k(d)}else t=s;while(0);if((e|0)<=0){ve(r,b,t,c,0);Tl(s);return 1}Zh(s|0,0,e<<2|0)|0;ve(r,b,t,c,0);Tl(s);return 1}function Od(a,b,c,d,e,f){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;f=f|0;var g=0,h=0,i=0,j=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0,v=0;s=a+8|0;k[s>>2]=e;t=k[a+24>>2]|0;q=k[a+28>>2]|0;m=e>>>0>1073741823?-1:e<<2;r=Sl(m)|0;Zh(r|0,0,m|0)|0;fg(s,r,b,c,0);m=a+32|0;a=k[m>>2]|0;g=k[a+4>>2]|0;f=k[a>>2]|0;p=g-f|0;n=p>>2;if((p|0)<=4){Tl(r);return 1}o=t+12|0;p=(e|0)>0;d=1;while(1){if(g-f>>2>>>0<=d>>>0){v=6;break}f=k[f+(d<<2)>>2]|0;l=$(d,e)|0;if((f|0)>=0?(u=k[(k[o>>2]|0)+(f<<2)>>2]|0,(u|0)>=0):0){g=k[t>>2]|0;a=(u>>>0)%3|0;h=k[q>>2]|0;j=k[h+(k[g+(((u>>>0)/3|0)*12|0)+(a<<2)>>2]<<2)>>2]|0;f=u+1|0;f=((f|0)%3|0|0)==0?u+-2|0:f;if((f|0)<0)f=-1073741824;else f=k[g+(((f>>>0)/3|0)*12|0)+(((f>>>0)%3|0)<<2)>>2]|0;i=k[h+(f<<2)>>2]|0;f=((a|0)==0?2:-1)+u|0;if((f|0)<0)f=-1073741824;else f=k[g+(((f>>>0)/3|0)*12|0)+(((f>>>0)%3|0)<<2)>>2]|0;f=k[h+(f<<2)>>2]|0;if((j|0)<(d|0)&(i|0)<(d|0)&(f|0)<(d|0)){h=$(j,e)|0;g=$(i,e)|0;a=$(f,e)|0;if(p){f=0;do{k[r+(f<<2)>>2]=(k[c+(f+a<<2)>>2]|0)+(k[c+(f+g<<2)>>2]|0)-(k[c+(f+h<<2)>>2]|0);f=f+1|0}while((f|0)!=(e|0))}fg(s,r,b,c+(l<<2)|0,l)}else v=15}else v=15;if((v|0)==15){v=0;fg(s,c+(($(d+-1|0,e)|0)<<2)|0,b,c+(l<<2)|0,l)}d=d+1|0;if((d|0)>=(n|0)){v=3;break}a=k[m>>2]|0;f=k[a>>2]|0;g=k[a+4>>2]|0}if((v|0)==3){Tl(r);return 1}else if((v|0)==6)_k(a);return 0}function Pd(a,b,c,d,e,f){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;f=f|0;var g=0,h=0,i=0,j=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0,v=0,w=0,x=0;r=a+8|0;k[r>>2]=e;p=e>>>0>1073741823?-1:e<<2;s=Sl(p)|0;Zh(s|0,0,p|0)|0;p=k[a+24>>2]|0;q=a+32|0;h=k[q>>2]|0;g=k[h+4>>2]|0;f=k[h>>2]|0;d=g-f|0;a:do if((d|0)>4){l=k[a+28>>2]|0;m=p+64|0;n=p+28|0;o=(e|0)>0;i=d>>2;a=g;d=h;while(1){j=i+-1|0;if(a-f>>2>>>0<=j>>>0)break;d=k[f+(j<<2)>>2]|0;h=$(j,e)|0;if((!((d|0)<0?1:(1<<(d&31)&k[(k[p>>2]|0)+(d>>>5<<2)>>2]|0)!=0)?(u=k[(k[(k[m>>2]|0)+12>>2]|0)+(d<<2)>>2]|0,(u|0)>=0):0)?(x=k[n>>2]|0,g=k[l>>2]|0,v=k[g+(k[x+(u<<2)>>2]<<2)>>2]|0,w=u+1|0,w=k[g+(k[x+((((w|0)%3|0|0)==0?u+-2|0:w)<<2)>>2]<<2)>>2]|0,x=k[g+(k[x+((((u>>>0)%3|0|0)==0?2:-1)+u<<2)>>2]<<2)>>2]|0,(v|0)<(j|0)&(w|0)<(j|0)&(x|0)<(j|0)):0){f=$(v,e)|0;a=$(w,e)|0;g=$(x,e)|0;if(o){d=0;do{k[s+(d<<2)>>2]=(k[b+(d+g<<2)>>2]|0)+(k[b+(d+a<<2)>>2]|0)-(k[b+(d+f<<2)>>2]|0);d=d+1|0}while((d|0)!=(e|0))}Ae(r,b+(h<<2)|0,s,c,h)}else Ae(r,b+(h<<2)|0,b+(($(i+-2|0,e)|0)<<2)|0,c,h);if((j|0)<=1){t=s;break a}d=k[q>>2]|0;i=j;f=k[d>>2]|0;a=k[d+4>>2]|0}_k(d)}else t=s;while(0);if((e|0)<=0){Ae(r,b,t,c,0);Tl(s);return 1}Zh(s|0,0,e<<2|0)|0;Ae(r,b,t,c,0);Tl(s);return 1}function Qd(a,b){a=a|0;b=b|0;var c=0,d=0,e=0,f=0,g=0,h=0,j=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0;q=a+12|0;r=b+8|0;g=r;m=k[g>>2]|0;g=k[g+4>>2]|0;p=b+16|0;n=p;c=k[n>>2]|0;n=mk(c|0,k[n+4>>2]|0,4,0)|0;j=M;if((g|0)<(j|0)|(g|0)==(j|0)&m>>>0>>0){r=0;return r|0}d=(k[b>>2]|0)+c|0;d=l[d>>0]|l[d+1>>0]<<8|l[d+2>>0]<<16|l[d+3>>0]<<24;i[q>>0]=d;i[q+1>>0]=d>>8;i[q+2>>0]=d>>16;i[q+3>>0]=d>>24;g=p;g=mk(k[g>>2]|0,k[g+4>>2]|0,4,0)|0;c=p;k[c>>2]=g;k[c+4>>2]=M;c=a+4|0;g=k[c>>2]|0;f=k[a>>2]|0;e=g-f>>2;if(d>>>0<=e>>>0){if(d>>>0>>0?(h=f+(d<<2)|0,(g|0)!=(h|0)):0)k[c>>2]=g+(~((g+-4-h|0)>>>2)<<2)}else{wg(a,d-e|0);d=k[q>>2]|0}if(!d){r=1;return r|0}c=0;g=d;a:while(1){m=r;j=k[m>>2]|0;m=k[m+4>>2]|0;e=p;d=k[e>>2]|0;e=k[e+4>>2]|0;if(!((m|0)>(e|0)|(m|0)==(e|0)&j>>>0>d>>>0)){c=0;o=18;break}n=k[b>>2]|0;s=i[n+d>>0]|0;e=mk(d|0,e|0,1,0)|0;f=M;d=p;k[d>>2]=e;k[d+4>>2]=f;d=s&255;h=d&3;d=d>>>2;switch(s&3){case 3:{e=d+c|0;if(e>>>0>=g>>>0){c=0;o=18;break a}Zh((k[a>>2]|0)+(c<<2)|0,0,(d<<2)+4|0)|0;c=e;break}case 0:{o=15;break}default:{g=0;while(1){if(!((m|0)>(f|0)|(m|0)==(f|0)&j>>>0>e>>>0)){c=0;o=18;break a}s=i[n+e>>0]|0;e=mk(e|0,f|0,1,0)|0;f=M;o=p;k[o>>2]=e;k[o+4>>2]=f;d=(s&255)<<(g<<3|6)|d;g=g+1|0;if((g|0)>=(h|0)){o=15;break}}}}if((o|0)==15){o=0;k[(k[a>>2]|0)+(c<<2)>>2]=d}c=c+1|0;g=k[q>>2]|0;if(c>>>0>=g>>>0){o=17;break}}if((o|0)==17){s=Ff(a+16|0,k[a>>2]|0,g)|0;return s|0}else if((o|0)==18)return c|0;return 0}function Rd(a,b){a=a|0;b=b|0;var c=0,d=0,e=0,f=0,g=0,h=0,j=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0;q=a+12|0;r=b+8|0;g=r;m=k[g>>2]|0;g=k[g+4>>2]|0;p=b+16|0;n=p;c=k[n>>2]|0;n=mk(c|0,k[n+4>>2]|0,4,0)|0;j=M;if((g|0)<(j|0)|(g|0)==(j|0)&m>>>0>>0){r=0;return r|0}d=(k[b>>2]|0)+c|0;d=l[d>>0]|l[d+1>>0]<<8|l[d+2>>0]<<16|l[d+3>>0]<<24;i[q>>0]=d;i[q+1>>0]=d>>8;i[q+2>>0]=d>>16;i[q+3>>0]=d>>24;g=p;g=mk(k[g>>2]|0,k[g+4>>2]|0,4,0)|0;c=p;k[c>>2]=g;k[c+4>>2]=M;c=a+4|0;g=k[c>>2]|0;f=k[a>>2]|0;e=g-f>>2;if(d>>>0<=e>>>0){if(d>>>0>>0?(h=f+(d<<2)|0,(g|0)!=(h|0)):0)k[c>>2]=g+(~((g+-4-h|0)>>>2)<<2)}else{wg(a,d-e|0);d=k[q>>2]|0}if(!d){r=1;return r|0}c=0;g=d;a:while(1){m=r;j=k[m>>2]|0;m=k[m+4>>2]|0;e=p;d=k[e>>2]|0;e=k[e+4>>2]|0;if(!((m|0)>(e|0)|(m|0)==(e|0)&j>>>0>d>>>0)){c=0;o=18;break}n=k[b>>2]|0;s=i[n+d>>0]|0;e=mk(d|0,e|0,1,0)|0;f=M;d=p;k[d>>2]=e;k[d+4>>2]=f;d=s&255;h=d&3;d=d>>>2;switch(s&3){case 3:{e=d+c|0;if(e>>>0>=g>>>0){c=0;o=18;break a}Zh((k[a>>2]|0)+(c<<2)|0,0,(d<<2)+4|0)|0;c=e;break}case 0:{o=15;break}default:{g=0;while(1){if(!((m|0)>(f|0)|(m|0)==(f|0)&j>>>0>e>>>0)){c=0;o=18;break a}s=i[n+e>>0]|0;e=mk(e|0,f|0,1,0)|0;f=M;o=p;k[o>>2]=e;k[o+4>>2]=f;d=(s&255)<<(g<<3|6)|d;g=g+1|0;if((g|0)>=(h|0)){o=15;break}}}}if((o|0)==15){o=0;k[(k[a>>2]|0)+(c<<2)>>2]=d}c=c+1|0;g=k[q>>2]|0;if(c>>>0>=g>>>0){o=17;break}}if((o|0)==17){s=Gf(a+16|0,k[a>>2]|0,g)|0;return s|0}else if((o|0)==18)return c|0;return 0}function Sd(a,b){a=a|0;b=b|0;var c=0,d=0,e=0,f=0,g=0,h=0,j=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0;q=a+12|0;r=b+8|0;g=r;m=k[g>>2]|0;g=k[g+4>>2]|0;p=b+16|0;n=p;c=k[n>>2]|0;n=mk(c|0,k[n+4>>2]|0,4,0)|0;j=M;if((g|0)<(j|0)|(g|0)==(j|0)&m>>>0>>0){r=0;return r|0}d=(k[b>>2]|0)+c|0;d=l[d>>0]|l[d+1>>0]<<8|l[d+2>>0]<<16|l[d+3>>0]<<24;i[q>>0]=d;i[q+1>>0]=d>>8;i[q+2>>0]=d>>16;i[q+3>>0]=d>>24;g=p;g=mk(k[g>>2]|0,k[g+4>>2]|0,4,0)|0;c=p;k[c>>2]=g;k[c+4>>2]=M;c=a+4|0;g=k[c>>2]|0;f=k[a>>2]|0;e=g-f>>2;if(d>>>0<=e>>>0){if(d>>>0>>0?(h=f+(d<<2)|0,(g|0)!=(h|0)):0)k[c>>2]=g+(~((g+-4-h|0)>>>2)<<2)}else{wg(a,d-e|0);d=k[q>>2]|0}if(!d){r=1;return r|0}c=0;g=d;a:while(1){m=r;j=k[m>>2]|0;m=k[m+4>>2]|0;e=p;d=k[e>>2]|0;e=k[e+4>>2]|0;if(!((m|0)>(e|0)|(m|0)==(e|0)&j>>>0>d>>>0)){c=0;o=18;break}n=k[b>>2]|0;s=i[n+d>>0]|0;e=mk(d|0,e|0,1,0)|0;f=M;d=p;k[d>>2]=e;k[d+4>>2]=f;d=s&255;h=d&3;d=d>>>2;switch(s&3){case 3:{e=d+c|0;if(e>>>0>=g>>>0){c=0;o=18;break a}Zh((k[a>>2]|0)+(c<<2)|0,0,(d<<2)+4|0)|0;c=e;break}case 0:{o=15;break}default:{g=0;while(1){if(!((m|0)>(f|0)|(m|0)==(f|0)&j>>>0>e>>>0)){c=0;o=18;break a}s=i[n+e>>0]|0;e=mk(e|0,f|0,1,0)|0;f=M;o=p;k[o>>2]=e;k[o+4>>2]=f;d=(s&255)<<(g<<3|6)|d;g=g+1|0;if((g|0)>=(h|0)){o=15;break}}}}if((o|0)==15){o=0;k[(k[a>>2]|0)+(c<<2)>>2]=d}c=c+1|0;g=k[q>>2]|0;if(c>>>0>=g>>>0){o=17;break}}if((o|0)==17){s=Hf(a+16|0,k[a>>2]|0,g)|0;return s|0}else if((o|0)==18)return c|0;return 0}function Td(a,b){a=a|0;b=b|0;var c=0,d=0,e=0,f=0,g=0,h=0,j=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0;q=a+12|0;r=b+8|0;g=r;m=k[g>>2]|0;g=k[g+4>>2]|0;p=b+16|0;n=p;c=k[n>>2]|0;n=mk(c|0,k[n+4>>2]|0,4,0)|0;j=M;if((g|0)<(j|0)|(g|0)==(j|0)&m>>>0>>0){r=0;return r|0}d=(k[b>>2]|0)+c|0;d=l[d>>0]|l[d+1>>0]<<8|l[d+2>>0]<<16|l[d+3>>0]<<24;i[q>>0]=d;i[q+1>>0]=d>>8;i[q+2>>0]=d>>16;i[q+3>>0]=d>>24;g=p;g=mk(k[g>>2]|0,k[g+4>>2]|0,4,0)|0;c=p;k[c>>2]=g;k[c+4>>2]=M;c=a+4|0;g=k[c>>2]|0;f=k[a>>2]|0;e=g-f>>2;if(d>>>0<=e>>>0){if(d>>>0>>0?(h=f+(d<<2)|0,(g|0)!=(h|0)):0)k[c>>2]=g+(~((g+-4-h|0)>>>2)<<2)}else{wg(a,d-e|0);d=k[q>>2]|0}if(!d){r=1;return r|0}c=0;g=d;a:while(1){m=r;j=k[m>>2]|0;m=k[m+4>>2]|0;e=p;d=k[e>>2]|0;e=k[e+4>>2]|0;if(!((m|0)>(e|0)|(m|0)==(e|0)&j>>>0>d>>>0)){c=0;o=18;break}n=k[b>>2]|0;s=i[n+d>>0]|0;e=mk(d|0,e|0,1,0)|0;f=M;d=p;k[d>>2]=e;k[d+4>>2]=f;d=s&255;h=d&3;d=d>>>2;switch(s&3){case 3:{e=d+c|0;if(e>>>0>=g>>>0){c=0;o=18;break a}Zh((k[a>>2]|0)+(c<<2)|0,0,(d<<2)+4|0)|0;c=e;break}case 0:{o=15;break}default:{g=0;while(1){if(!((m|0)>(f|0)|(m|0)==(f|0)&j>>>0>e>>>0)){c=0;o=18;break a}s=i[n+e>>0]|0;e=mk(e|0,f|0,1,0)|0;f=M;o=p;k[o>>2]=e;k[o+4>>2]=f;d=(s&255)<<(g<<3|6)|d;g=g+1|0;if((g|0)>=(h|0)){o=15;break}}}}if((o|0)==15){o=0;k[(k[a>>2]|0)+(c<<2)>>2]=d}c=c+1|0;g=k[q>>2]|0;if(c>>>0>=g>>>0){o=17;break}}if((o|0)==17){s=Jf(a+16|0,k[a>>2]|0,g)|0;return s|0}else if((o|0)==18)return c|0;return 0}function Ud(a,b){a=a|0;b=b|0;var c=0,d=0,e=0,f=0,g=0,h=0,j=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0;q=a+12|0;r=b+8|0;g=r;m=k[g>>2]|0;g=k[g+4>>2]|0;p=b+16|0;n=p;c=k[n>>2]|0;n=mk(c|0,k[n+4>>2]|0,4,0)|0;j=M;if((g|0)<(j|0)|(g|0)==(j|0)&m>>>0>>0){r=0;return r|0}d=(k[b>>2]|0)+c|0;d=l[d>>0]|l[d+1>>0]<<8|l[d+2>>0]<<16|l[d+3>>0]<<24;i[q>>0]=d;i[q+1>>0]=d>>8;i[q+2>>0]=d>>16;i[q+3>>0]=d>>24;g=p;g=mk(k[g>>2]|0,k[g+4>>2]|0,4,0)|0;c=p;k[c>>2]=g;k[c+4>>2]=M;c=a+4|0;g=k[c>>2]|0;f=k[a>>2]|0;e=g-f>>2;if(d>>>0<=e>>>0){if(d>>>0>>0?(h=f+(d<<2)|0,(g|0)!=(h|0)):0)k[c>>2]=g+(~((g+-4-h|0)>>>2)<<2)}else{wg(a,d-e|0);d=k[q>>2]|0}if(!d){r=1;return r|0}c=0;g=d;a:while(1){m=r;j=k[m>>2]|0;m=k[m+4>>2]|0;e=p;d=k[e>>2]|0;e=k[e+4>>2]|0;if(!((m|0)>(e|0)|(m|0)==(e|0)&j>>>0>d>>>0)){c=0;o=18;break}n=k[b>>2]|0;s=i[n+d>>0]|0;e=mk(d|0,e|0,1,0)|0;f=M;d=p;k[d>>2]=e;k[d+4>>2]=f;d=s&255;h=d&3;d=d>>>2;switch(s&3){case 3:{e=d+c|0;if(e>>>0>=g>>>0){c=0;o=18;break a}Zh((k[a>>2]|0)+(c<<2)|0,0,(d<<2)+4|0)|0;c=e;break}case 0:{o=15;break}default:{g=0;while(1){if(!((m|0)>(f|0)|(m|0)==(f|0)&j>>>0>e>>>0)){c=0;o=18;break a}s=i[n+e>>0]|0;e=mk(e|0,f|0,1,0)|0;f=M;o=p;k[o>>2]=e;k[o+4>>2]=f;d=(s&255)<<(g<<3|6)|d;g=g+1|0;if((g|0)>=(h|0)){o=15;break}}}}if((o|0)==15){o=0;k[(k[a>>2]|0)+(c<<2)>>2]=d}c=c+1|0;g=k[q>>2]|0;if(c>>>0>=g>>>0){o=17;break}}if((o|0)==17){s=Kf(a+16|0,k[a>>2]|0,g)|0;return s|0}else if((o|0)==18)return c|0;return 0}function Vd(a,b){a=a|0;b=b|0;var c=0,d=0,e=0,f=0,g=0,h=0,j=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0;q=a+12|0;r=b+8|0;g=r;m=k[g>>2]|0;g=k[g+4>>2]|0;p=b+16|0;n=p;c=k[n>>2]|0;n=mk(c|0,k[n+4>>2]|0,4,0)|0;j=M;if((g|0)<(j|0)|(g|0)==(j|0)&m>>>0>>0){r=0;return r|0}d=(k[b>>2]|0)+c|0;d=l[d>>0]|l[d+1>>0]<<8|l[d+2>>0]<<16|l[d+3>>0]<<24;i[q>>0]=d;i[q+1>>0]=d>>8;i[q+2>>0]=d>>16;i[q+3>>0]=d>>24;g=p;g=mk(k[g>>2]|0,k[g+4>>2]|0,4,0)|0;c=p;k[c>>2]=g;k[c+4>>2]=M;c=a+4|0;g=k[c>>2]|0;f=k[a>>2]|0;e=g-f>>2;if(d>>>0<=e>>>0){if(d>>>0>>0?(h=f+(d<<2)|0,(g|0)!=(h|0)):0)k[c>>2]=g+(~((g+-4-h|0)>>>2)<<2)}else{wg(a,d-e|0);d=k[q>>2]|0}if(!d){r=1;return r|0}c=0;g=d;a:while(1){m=r;j=k[m>>2]|0;m=k[m+4>>2]|0;e=p;d=k[e>>2]|0;e=k[e+4>>2]|0;if(!((m|0)>(e|0)|(m|0)==(e|0)&j>>>0>d>>>0)){c=0;o=18;break}n=k[b>>2]|0;s=i[n+d>>0]|0;e=mk(d|0,e|0,1,0)|0;f=M;d=p;k[d>>2]=e;k[d+4>>2]=f;d=s&255;h=d&3;d=d>>>2;switch(s&3){case 3:{e=d+c|0;if(e>>>0>=g>>>0){c=0;o=18;break a}Zh((k[a>>2]|0)+(c<<2)|0,0,(d<<2)+4|0)|0;c=e;break}case 0:{o=15;break}default:{g=0;while(1){if(!((m|0)>(f|0)|(m|0)==(f|0)&j>>>0>e>>>0)){c=0;o=18;break a}s=i[n+e>>0]|0;e=mk(e|0,f|0,1,0)|0;f=M;o=p;k[o>>2]=e;k[o+4>>2]=f;d=(s&255)<<(g<<3|6)|d;g=g+1|0;if((g|0)>=(h|0)){o=15;break}}}}if((o|0)==15){o=0;k[(k[a>>2]|0)+(c<<2)>>2]=d}c=c+1|0;g=k[q>>2]|0;if(c>>>0>=g>>>0){o=17;break}}if((o|0)==17){s=Mf(a+16|0,k[a>>2]|0,g)|0;return s|0}else if((o|0)==18)return c|0;return 0}function Wd(a,b){a=a|0;b=b|0;var c=0,d=0,e=0,f=0,g=0,h=0,j=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0;q=a+12|0;r=b+8|0;g=r;m=k[g>>2]|0;g=k[g+4>>2]|0;p=b+16|0;n=p;c=k[n>>2]|0;n=mk(c|0,k[n+4>>2]|0,4,0)|0;j=M;if((g|0)<(j|0)|(g|0)==(j|0)&m>>>0>>0){r=0;return r|0}d=(k[b>>2]|0)+c|0;d=l[d>>0]|l[d+1>>0]<<8|l[d+2>>0]<<16|l[d+3>>0]<<24;i[q>>0]=d;i[q+1>>0]=d>>8;i[q+2>>0]=d>>16;i[q+3>>0]=d>>24;g=p;g=mk(k[g>>2]|0,k[g+4>>2]|0,4,0)|0;c=p;k[c>>2]=g;k[c+4>>2]=M;c=a+4|0;g=k[c>>2]|0;f=k[a>>2]|0;e=g-f>>2;if(d>>>0<=e>>>0){if(d>>>0>>0?(h=f+(d<<2)|0,(g|0)!=(h|0)):0)k[c>>2]=g+(~((g+-4-h|0)>>>2)<<2)}else{wg(a,d-e|0);d=k[q>>2]|0}if(!d){r=1;return r|0}c=0;g=d;a:while(1){m=r;j=k[m>>2]|0;m=k[m+4>>2]|0;e=p;d=k[e>>2]|0;e=k[e+4>>2]|0;if(!((m|0)>(e|0)|(m|0)==(e|0)&j>>>0>d>>>0)){c=0;o=18;break}n=k[b>>2]|0;s=i[n+d>>0]|0;e=mk(d|0,e|0,1,0)|0;f=M;d=p;k[d>>2]=e;k[d+4>>2]=f;d=s&255;h=d&3;d=d>>>2;switch(s&3){case 3:{e=d+c|0;if(e>>>0>=g>>>0){c=0;o=18;break a}Zh((k[a>>2]|0)+(c<<2)|0,0,(d<<2)+4|0)|0;c=e;break}case 0:{o=15;break}default:{g=0;while(1){if(!((m|0)>(f|0)|(m|0)==(f|0)&j>>>0>e>>>0)){c=0;o=18;break a}s=i[n+e>>0]|0;e=mk(e|0,f|0,1,0)|0;f=M;o=p;k[o>>2]=e;k[o+4>>2]=f;d=(s&255)<<(g<<3|6)|d;g=g+1|0;if((g|0)>=(h|0)){o=15;break}}}}if((o|0)==15){o=0;k[(k[a>>2]|0)+(c<<2)>>2]=d}c=c+1|0;g=k[q>>2]|0;if(c>>>0>=g>>>0){o=17;break}}if((o|0)==17){s=Nf(a+16|0,k[a>>2]|0,g)|0;return s|0}else if((o|0)==18)return c|0;return 0}function Xd(a,b,c,d){a=a|0;b=b|0;c=c|0;d=d|0;var e=0,f=0,g=0,h=0,i=0,j=0,l=0,m=0,n=0;l=k[b>>2]|0;m=b+4|0;e=k[m>>2]|0;h=((k[c>>2]|0)-l<<3)+(k[c+4>>2]|0)-e|0;c=l;if((h|0)<=0){b=d+4|0;d=k[d>>2]|0;k[a>>2]=d;d=a+4|0;a=k[b>>2]|0;k[d>>2]=a;return}if(!e){e=d+4|0;j=e;e=k[e>>2]|0}else{f=32-e|0;l=(h|0)<(f|0)?h:f;f=-1>>>(f-l|0)&-1<>2];j=d+4|0;n=k[j>>2]|0;e=32-n|0;c=e>>>0>>0?e:l;g=k[d>>2]|0;n=k[g>>2]&~(-1>>>(e-c|0)&-1<>2]=n;e=k[j>>2]|0;i=k[m>>2]|0;k[g>>2]=n|(e>>>0>i>>>0?f<>>(i-e|0));e=(k[j>>2]|0)+c|0;g=g+(e>>>5<<2)|0;k[d>>2]=g;e=e&31;k[j>>2]=e;i=l-c|0;if((i|0)>0){e=k[g>>2]&~(-1>>>(32-i|0));k[g>>2]=e;k[g>>2]=e|f>>>((k[m>>2]|0)+c|0);k[j>>2]=i;e=i}c=(k[b>>2]|0)+4|0;k[b>>2]=c;h=h-l|0}i=32-e|0;f=-1<>>0>31){g=~f;e=h;do{m=k[c>>2]|0;n=k[d>>2]|0;l=k[n>>2]&g;k[n>>2]=l;k[n>>2]=l|m<>2];n=n+4|0;k[d>>2]=n;k[n>>2]=k[n>>2]&f|m>>>i;e=e+-32|0;c=(k[b>>2]|0)+4|0;k[b>>2]=c}while(e>>>0>31);h=h&31}if(!h){b=j;n=k[d>>2]|0;k[a>>2]=n;n=a+4|0;d=k[b>>2]|0;k[n>>2]=d;return}g=k[c>>2]&-1>>>(32-h|0);f=(i|0)<(h|0)?i:h;e=k[d>>2]|0;c=k[e>>2]&~(-1<>2]&-1>>>(i-f|0));k[e>>2]=c;k[e>>2]=c|g<>2];c=(k[j>>2]|0)+f|0;e=e+(c>>>5<<2)|0;k[d>>2]=e;k[j>>2]=c&31;c=h-f|0;if((c|0)<=0){b=j;n=k[d>>2]|0;k[a>>2]=n;n=a+4|0;d=k[b>>2]|0;k[n>>2]=d;return}k[e>>2]=k[e>>2]&~(-1>>>(32-c|0))|g>>>f;k[j>>2]=c;b=j;n=k[d>>2]|0;k[a>>2]=n;n=a+4|0;d=k[b>>2]|0;k[n>>2]=d;return}function Yd(a,b){a=a|0;b=b|0;var c=0,d=0,e=0,f=0,g=0,h=0,j=0;e=a+8|0;j=e;g=k[j>>2]|0;j=k[j+4>>2]|0;f=a+16|0;d=f;c=k[d>>2]|0;d=mk(c|0,k[d+4>>2]|0,5,0)|0;h=M;if((j|0)<(h|0)|(j|0)==(h|0)&g>>>0>>0){j=0;return j|0}c=(k[a>>2]|0)+c|0;i[b>>0]=i[c>>0]|0;i[b+1>>0]=i[c+1>>0]|0;i[b+2>>0]=i[c+2>>0]|0;i[b+3>>0]=i[c+3>>0]|0;i[b+4>>0]=i[c+4>>0]|0;c=f;c=mk(k[c>>2]|0,k[c+4>>2]|0,5,0)|0;d=M;j=f;k[j>>2]=c;k[j+4>>2]=d;if(li(b,6661,5)|0){j=0;return j|0}j=e;h=k[j+4>>2]|0;if(!((h|0)>(d|0)|((h|0)==(d|0)?(k[j>>2]|0)>>>0>c>>>0:0))){j=0;return j|0}i[b+5>>0]=i[(k[a>>2]|0)+c>>0]|0;c=f;c=mk(k[c>>2]|0,k[c+4>>2]|0,1,0)|0;h=M;j=f;k[j>>2]=c;k[j+4>>2]=h;j=e;g=k[j+4>>2]|0;if(!((g|0)>(h|0)|((g|0)==(h|0)?(k[j>>2]|0)>>>0>c>>>0:0))){j=0;return j|0}i[b+6>>0]=i[(k[a>>2]|0)+c>>0]|0;c=f;c=mk(k[c>>2]|0,k[c+4>>2]|0,1,0)|0;h=M;j=f;k[j>>2]=c;k[j+4>>2]=h;j=e;g=k[j+4>>2]|0;if(!((g|0)>(h|0)|((g|0)==(h|0)?(k[j>>2]|0)>>>0>c>>>0:0))){j=0;return j|0}i[b+7>>0]=i[(k[a>>2]|0)+c>>0]|0;c=f;c=mk(k[c>>2]|0,k[c+4>>2]|0,1,0)|0;h=M;j=f;k[j>>2]=c;k[j+4>>2]=h;j=e;g=k[j+4>>2]|0;if(!((g|0)>(h|0)|((g|0)==(h|0)?(k[j>>2]|0)>>>0>c>>>0:0))){j=0;return j|0}i[b+8>>0]=i[(k[a>>2]|0)+c>>0]|0;j=f;g=k[j>>2]|0;j=k[j+4>>2]|0;c=mk(g|0,j|0,1,0)|0;h=f;k[h>>2]=c;k[h+4>>2]=M;h=k[e>>2]|0;e=k[e+4>>2]|0;j=mk(g|0,j|0,3,0)|0;g=M;if((e|0)<(g|0)|(e|0)==(g|0)&h>>>0>>0){j=0;return j|0}h=b+10|0;j=(k[a>>2]|0)+c|0;j=l[j>>0]|l[j+1>>0]<<8;i[h>>0]=j;i[h+1>>0]=j>>8;h=f;h=mk(k[h>>2]|0,k[h+4>>2]|0,2,0)|0;j=f;k[j>>2]=h;k[j+4>>2]=M;j=1;return j|0}function Zd(a,b){a=a|0;b=b|0;var c=0,d=0,e=0,f=0,g=0,h=0,j=0,m=0,n=0,o=0,p=0;p=r;r=r+16|0;o=p;m=b+8|0;g=m;h=k[g>>2]|0;g=k[g+4>>2]|0;j=b+16|0;d=j;c=k[d>>2]|0;d=mk(c|0,k[d+4>>2]|0,4,0)|0;e=M;if((g|0)<(e|0)|(g|0)==(e|0)&h>>>0>>0){o=0;r=p;return o|0}h=(k[b>>2]|0)+c|0;h=l[h>>0]|l[h+1>>0]<<8|l[h+2>>0]<<16|l[h+3>>0]<<24;g=j;k[g>>2]=d;k[g+4>>2]=e;if((h|0)<0){o=0;r=p;return o|0}g=a+52|0;$d(g,h,0);Cl(o);if(ue(o,b)|0){if((h|0)>0){d=1;e=0;do{d=d^((Xh(o)|0)^1);f=(k[g>>2]|0)+(e>>>5<<2)|0;c=1<<(e&31);if(d)c=k[f>>2]|c;else c=k[f>>2]&~c;k[f>>2]=c;e=e+1|0}while((e|0)<(h|0))}e=m;g=k[e>>2]|0;e=k[e+4>>2]|0;h=j;c=k[h>>2]|0;h=mk(c|0,k[h+4>>2]|0,4,0)|0;f=M;if(!((e|0)<(f|0)|(e|0)==(f|0)&g>>>0>>0)?(g=a+12|0,e=(k[b>>2]|0)+c|0,e=l[e>>0]|l[e+1>>0]<<8|l[e+2>>0]<<16|l[e+3>>0]<<24,i[g>>0]=e,i[g+1>>0]=e>>8,i[g+2>>0]=e>>16,i[g+3>>0]=e>>24,g=j,e=k[g>>2]|0,g=k[g+4>>2]|0,n=mk(e|0,g|0,4,0)|0,f=j,k[f>>2]=n,k[f+4>>2]=M,f=m,h=k[f>>2]|0,f=k[f+4>>2]|0,m=mk(e|0,g|0,8,0)|0,g=M,!((f|0)<(g|0)|(f|0)==(g|0)&h>>>0>>0)):0){c=a+16|0;n=(k[b>>2]|0)+n|0;n=l[n>>0]|l[n+1>>0]<<8|l[n+2>>0]<<16|l[n+3>>0]<<24;i[c>>0]=n;i[c+1>>0]=n>>8;i[c+2>>0]=n>>16;i[c+3>>0]=n>>24;n=j;n=mk(k[n>>2]|0,k[n+4>>2]|0,4,0)|0;c=j;k[c>>2]=n;k[c+4>>2]=M;c=1}else c=0}else c=0;Yl(o);o=c;r=p;return o|0}function _d(a,b,c,d){a=a|0;b=b|0;c=c|0;d=d|0;var e=0,f=0,g=0,h=0,i=0,j=0,l=0,m=0,n=0,o=0,p=0,q=0.0;n=b+8|0;p=k[n>>2]|0;e=(k[c>>2]|0)-p|0;m=c+4|0;g=(k[m>>2]|0)-p|0;f=c;k[f>>2]=e;k[f+4>>2]=g;q=+O(+(+(e|0)))+ +O(+(+(g|0)));f=k[n>>2]|0;if(!(q<=+(f|0))){if((e|0)>-1)if((g|0)<=-1)if((e|0)<1){h=-1;i=-1}else o=6;else{h=1;i=1}else if((g|0)<1){h=-1;i=-1}else o=6;if((o|0)==6){h=(e|0)>0?1:-1;i=(g|0)>0?1:-1}l=$(f,h)|0;j=$(f,i)|0;e=(e<<1)-l|0;k[c>>2]=e;f=(g<<1)-j|0;k[m>>2]=f;if(($(h,i)|0)>-1){f=0-f|0;k[c>>2]=f;e=0-e|0}else k[c>>2]=f;l=(f+l|0)/2|0;k[c>>2]=l;g=(e+j|0)/2|0;k[m>>2]=g;h=0;e=l;j=k[n>>2]|0}else{h=1;j=f}f=(k[d>>2]|0)+e|0;k[a>>2]=f;e=(k[d+4>>2]|0)+g|0;l=a+4|0;k[l>>2]=e;if((j|0)>=(f|0)){if((f|0)<(0-j|0))f=(k[b+4>>2]|0)+f|0}else f=f-(k[b+4>>2]|0)|0;k[a>>2]=f;if((j|0)>=(e|0))if((e|0)<(0-j|0))i=(k[b+4>>2]|0)+e|0;else i=e;else i=e-(k[b+4>>2]|0)|0;k[l>>2]=i;if(h){o=i;b=f;b=b+p|0;o=o+p|0;p=a;a=p;k[a>>2]=b;p=p+4|0;k[p>>2]=o;return}if((f|0)>-1)if((i|0)<=-1)if((f|0)<1){g=-1;h=-1}else o=24;else{g=1;h=1}else if((i|0)<1){g=-1;h=-1}else o=24;if((o|0)==24){g=(f|0)>0?1:-1;h=(i|0)>0?1:-1}c=$(j,g)|0;j=$(j,h)|0;e=(f<<1)-c|0;k[a>>2]=e;f=(i<<1)-j|0;k[l>>2]=f;if(($(g,h)|0)>-1){f=0-f|0;k[a>>2]=f;e=0-e|0}else k[a>>2]=f;b=(f+c|0)/2|0;k[a>>2]=b;o=(e+j|0)/2|0;k[l>>2]=o;b=b+p|0;o=o+p|0;p=a;a=p;k[a>>2]=b;p=p+4|0;k[p>>2]=o;return}function $d(a,b,c){a=a|0;b=b|0;c=c|0;var d=0,e=0,f=0,g=0,h=0,i=0,j=0,l=0,m=0,n=0,o=0,p=0,q=0;p=r;r=r+32|0;m=p+8|0;i=p;n=a+4|0;e=k[n>>2]|0;if(e>>>0>=b>>>0){k[n>>2]=b;r=p;return}o=a+8|0;f=k[o>>2]|0;l=f<<5;d=b-e|0;if(l>>>0>>0|e>>>0>(l-d|0)>>>0){k[m>>2]=0;j=m+4|0;k[j>>2]=0;l=m+8|0;k[l>>2]=0;if((b|0)<0)$k(a);e=f<<6;g=b+31&-32;ig(m,f<<5>>>0<1073741823?(e>>>0>>0?g:e):2147483647);f=k[n>>2]|0;k[j>>2]=f+d;e=k[a>>2]|0;g=e;b=k[m>>2]|0;f=(g+(f>>>5<<2)-e<<3)+(f&31)|0;if((f|0)>0){h=f>>>5;Xi(b|0,e|0,h<<2|0)|0;e=f-(h<<5)|0;f=b+(h<<2)|0;b=f;if((e|0)>0){q=-1>>>(32-e|0);k[f>>2]=k[f>>2]&~q|k[g+(h<<2)>>2]&q}else e=0}else e=0;k[i>>2]=b;k[i+4>>2]=e;f=i;b=k[f>>2]|0;f=k[f+4>>2]|0;e=k[a>>2]|0;k[a>>2]=k[m>>2];k[m>>2]=e;q=k[n>>2]|0;k[n>>2]=k[j>>2];k[j>>2]=q;q=k[o>>2]|0;k[o>>2]=k[l>>2];k[l>>2]=q;if(e|0)Vl(e)}else{f=(k[a>>2]|0)+(e>>>5<<2)|0;k[n>>2]=b;b=f;f=e&31}if(!d){r=p;return}g=(f|0)==0;e=b;if(c){if(!g){q=32-f|0;b=q>>>0>d>>>0?d:q;k[e>>2]=k[e>>2]|-1>>>(q-b|0)&-1<>>5;Zh(b|0,-1,q<<2|0)|0;d=d-(q<<5)|0;b=e+(q<<2)|0;if(!d){r=p;return}k[b>>2]=k[b>>2]|-1>>>(32-d|0);r=p;return}else{if(!g){q=32-f|0;b=q>>>0>d>>>0?d:q;k[e>>2]=k[e>>2]&~(-1>>>(q-b|0)&-1<>>5;Zh(b|0,0,q<<2|0)|0;d=d-(q<<5)|0;b=e+(q<<2)|0;if(!d){r=p;return}k[b>>2]=k[b>>2]&~(-1>>>(32-d|0));r=p;return}}function ae(a,b){a=a|0;b=b|0;var c=0,d=Pa,e=Pa,f=0,g=0,h=0,i=0,j=0,l=0,m=0,n=Pa;m=k[b>>2]|0;h=a+4|0;i=k[h>>2]|0;j=(i|0)==0;a:do if(!j){f=i+-1|0;c=(f&i|0)==0;if(c)g=f&m;else g=(m>>>0)%(i>>>0)|0;b=k[(k[a>>2]|0)+(g<<2)>>2]|0;if(b)if(c){do{b=k[b>>2]|0;if(!b){b=g;break a}if((k[b+4>>2]&f|0)!=(g|0)){b=g;break a}}while((k[b+8>>2]|0)!=(m|0));a=b+12|0;return a|0}else{do{b=k[b>>2]|0;if(!b){b=g;break a}if((((k[b+4>>2]|0)>>>0)%(i>>>0)|0|0)!=(g|0)){b=g;break a}}while((k[b+8>>2]|0)!=(m|0));a=b+12|0;return a|0}else b=g}else b=0;while(0);g=vj(16)|0;k[g+8>>2]=m;k[g+12>>2]=0;k[g+4>>2]=m;k[g>>2]=0;l=a+12|0;d=da(((k[l>>2]|0)+1|0)>>>0);n=da(i>>>0);e=da(o[a+16>>2]);do if(j|d>da(n*e)){b=(i>>>0>2&(i+-1&i|0)==0&1|i<<1)^1;c=~~da(_(da(d/e)))>>>0;gg(a,b>>>0>>0?c:b);b=k[h>>2]|0;c=b+-1|0;if(!(c&b)){f=b;b=c&m;break}else{f=b;b=(m>>>0)%(b>>>0)|0;break}}else f=i;while(0);b=(k[a>>2]|0)+(b<<2)|0;c=k[b>>2]|0;if(!c){m=a+8|0;k[g>>2]=k[m>>2];k[m>>2]=g;k[b>>2]=m;b=k[g>>2]|0;if(b|0){b=k[b+4>>2]|0;c=f+-1|0;if(!(c&f))b=b&c;else b=(b>>>0)%(f>>>0)|0;k[(k[a>>2]|0)+(b<<2)>>2]=g}}else{k[g>>2]=k[c>>2];k[c>>2]=g}k[l>>2]=(k[l>>2]|0)+1;a=g;a=a+12|0;return a|0}function be(a,b,c,d){a=a|0;b=b|0;c=c|0;d=d|0;var e=0,f=0,g=0,h=0,i=0,j=0,l=0,m=0,n=0,o=0,p=0.0;n=b+8|0;f=k[n>>2]|0;o=c+4|0;m=(k[o>>2]|0)-f|0;e=c;k[e>>2]=(k[c>>2]|0)-f;k[e+4>>2]=m;e=(k[d>>2]|0)-f|0;m=d+4|0;f=(k[m>>2]|0)-f|0;i=d;k[i>>2]=e;k[i+4>>2]=f;p=+O(+(+(e|0)))+ +O(+(+(f|0)));i=k[n>>2]|0;if(!(p<=+(i|0))){e=k[c>>2]|0;f=k[o>>2]|0;if((e|0)>-1)if((f|0)<=-1)if((e|0)<1){g=-1;h=-1}else l=6;else{g=1;h=1}else if((f|0)<1){g=-1;h=-1}else l=6;if((l|0)==6){g=(e|0)>0?1:-1;h=(f|0)>0?1:-1}j=$(i,g)|0;i=$(i,h)|0;e=(e<<1)-j|0;k[c>>2]=e;f=(f<<1)-i|0;k[o>>2]=f;if(($(g,h)|0)>-1){f=0-f|0;k[c>>2]=f;e=0-e|0}else k[c>>2]=f;k[c>>2]=(f+j|0)/2|0;k[o>>2]=(e+i|0)/2|0;e=k[d>>2]|0;f=k[m>>2]|0;if((e|0)>-1)if((f|0)<=-1)if((e|0)<1){g=-1;h=-1}else l=14;else{g=1;h=1}else if((f|0)<1){g=-1;h=-1}else l=14;if((l|0)==14){g=(e|0)>0?1:-1;h=(f|0)>0?1:-1}j=k[n>>2]|0;i=$(j,g)|0;j=$(j,h)|0;e=(e<<1)-i|0;k[d>>2]=e;f=(f<<1)-j|0;k[m>>2]=f;if(($(g,h)|0)>-1){f=0-f|0;k[d>>2]=f;e=0-e|0}else k[d>>2]=f;i=(f+i|0)/2|0;k[d>>2]=i;f=(e+j|0)/2|0;k[m>>2]=f;e=i;i=k[n>>2]|0}e=(k[c>>2]|0)-e|0;k[a>>2]=e;g=(k[o>>2]|0)-f|0;h=a+4|0;k[h>>2]=g;f=i<<1;if((f|0)<(e|0))Ka(9093,11103,162,9117);if((e|0)<0)e=(k[b+4>>2]|0)+e|0;k[a>>2]=e;if((f|0)<(g|0))Ka(9093,11103,162,9117);if((g|0)>=0){b=g;k[h>>2]=b;return}b=(k[b+4>>2]|0)+g|0;k[h>>2]=b;return}function ce(a,b){a=a|0;b=b|0;var c=0,d=0,e=0,f=0,g=0,h=0,j=0,l=0,m=0,n=0;n=r;r=r+32|0;j=n;l=a+8|0;e=k[l>>2]|0;m=a+4|0;c=k[m>>2]|0;if(((e-c|0)/116|0)>>>0>=b>>>0){do{k[c>>2]=-1;Vi(c+4|0);i[c+72>>0]=1;c=c+76|0;d=c+40|0;do{k[c>>2]=0;c=c+4|0}while((c|0)<(d|0));c=(k[m>>2]|0)+116|0;k[m>>2]=c;b=b+-1|0}while((b|0)!=0);r=n;return}f=k[a>>2]|0;d=((c-f|0)/116|0)+b|0;if(d>>>0>37025580)$k(a);h=(e-f|0)/116|0;e=h<<1;e=h>>>0<18512790?(e>>>0>>0?d:e):37025580;c=(c-f|0)/116|0;k[j+12>>2]=0;k[j+16>>2]=a+8;do if(e)if(e>>>0>37025580){n=Ma(4)|0;Fl(n);xa(n|0,976,90)}else{d=vj(e*116|0)|0;break}else d=0;while(0);k[j>>2]=d;c=d+(c*116|0)|0;g=j+8|0;k[g>>2]=c;f=j+4|0;k[f>>2]=c;h=j+12|0;k[h>>2]=d+(e*116|0);do{k[c>>2]=-1;Vi(c+4|0);i[c+72>>0]=1;c=c+76|0;d=c+40|0;do{k[c>>2]=0;c=c+4|0}while((c|0)<(d|0));c=(k[g>>2]|0)+116|0;k[g>>2]=c;b=b+-1|0}while((b|0)!=0);d=k[a>>2]|0;c=k[m>>2]|0;if((c|0)==(d|0)){e=f;b=k[f>>2]|0}else{b=k[f>>2]|0;do{b=b+-116|0;c=c+-116|0;ee(b,c);k[f>>2]=b}while((c|0)!=(d|0));e=f;d=k[a>>2]|0;c=k[m>>2]|0}k[a>>2]=b;k[e>>2]=d;k[m>>2]=k[g>>2];k[g>>2]=c;m=k[l>>2]|0;k[l>>2]=k[h>>2];k[h>>2]=m;k[j>>2]=k[e>>2];qg(j);r=n;return}function de(a,b,c,d,e,f){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;f=f|0;var g=0,h=0,i=0,j=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0,v=0,w=0;q=a+8|0;k[q>>2]=e;r=k[a+24>>2]|0;p=k[a+28>>2]|0;j=e>>>0>1073741823?-1:e<<2;s=Sl(j)|0;Zh(s|0,0,j|0)|0;dg(q,s,b,c,0);j=a+32|0;g=k[j>>2]|0;a=k[g+4>>2]|0;f=k[g>>2]|0;o=a-f|0;l=o>>2;if((o|0)<=4){Tl(s);return 1}m=r+64|0;n=r+28|0;o=(e|0)>0;d=1;while(1){if(a-f>>2>>>0<=d>>>0){d=6;break}f=k[f+(d<<2)>>2]|0;i=$(d,e)|0;if((!((f|0)<0?1:(1<<(f&31)&k[(k[r>>2]|0)+(f>>>5<<2)>>2]|0)!=0)?(t=k[(k[(k[m>>2]|0)+12>>2]|0)+(f<<2)>>2]|0,(t|0)>=0):0)?(w=k[n>>2]|0,h=k[p>>2]|0,u=k[h+(k[w+(t<<2)>>2]<<2)>>2]|0,v=t+1|0,v=k[h+(k[w+((((v|0)%3|0|0)==0?t+-2|0:v)<<2)>>2]<<2)>>2]|0,w=k[h+(k[w+((((t>>>0)%3|0|0)==0?2:-1)+t<<2)>>2]<<2)>>2]|0,(u|0)<(d|0)&(v|0)<(d|0)&(w|0)<(d|0)):0){a=$(u,e)|0;g=$(v,e)|0;h=$(w,e)|0;if(o){f=0;do{k[s+(f<<2)>>2]=(k[c+(f+h<<2)>>2]|0)+(k[c+(f+g<<2)>>2]|0)-(k[c+(f+a<<2)>>2]|0);f=f+1|0}while((f|0)!=(e|0))}dg(q,s,b,c+(i<<2)|0,i)}else dg(q,c+(($(d+-1|0,e)|0)<<2)|0,b,c+(i<<2)|0,i);d=d+1|0;if((d|0)>=(l|0)){d=3;break}g=k[j>>2]|0;f=k[g>>2]|0;a=k[g+4>>2]|0}if((d|0)==3){Tl(s);return 1}else if((d|0)==6)_k(g);return 0}function ee(a,b){a=a|0;b=b|0;var c=0,d=0,e=0;k[a>>2]=k[b>>2];c=b+4|0;k[a+4>>2]=k[c>>2];d=b+8|0;k[a+8>>2]=k[d>>2];e=b+12|0;k[a+12>>2]=k[e>>2];k[c>>2]=0;k[d>>2]=0;k[e>>2]=0;e=b+16|0;k[a+16>>2]=k[e>>2];d=b+20|0;k[a+20>>2]=k[d>>2];c=b+24|0;k[a+24>>2]=k[c>>2];k[e>>2]=0;k[d>>2]=0;k[c>>2]=0;i[a+28>>0]=i[b+28>>0]|0;c=a+32|0;d=b+32|0;k[c>>2]=0;e=a+36|0;k[e>>2]=0;k[a+40>>2]=0;k[c>>2]=k[d>>2];c=b+36|0;k[e>>2]=k[c>>2];e=b+40|0;k[a+40>>2]=k[e>>2];k[e>>2]=0;k[c>>2]=0;k[d>>2]=0;d=a+44|0;c=b+44|0;k[d>>2]=0;e=a+48|0;k[e>>2]=0;k[a+52>>2]=0;k[d>>2]=k[c>>2];d=b+48|0;k[e>>2]=k[d>>2];e=b+52|0;k[a+52>>2]=k[e>>2];k[e>>2]=0;k[d>>2]=0;k[c>>2]=0;c=a+56|0;d=b+56|0;k[c>>2]=0;e=a+60|0;k[e>>2]=0;k[a+64>>2]=0;k[c>>2]=k[d>>2];c=b+60|0;k[e>>2]=k[c>>2];e=b+64|0;k[a+64>>2]=k[e>>2];k[e>>2]=0;k[c>>2]=0;k[d>>2]=0;k[a+68>>2]=k[b+68>>2];i[a+72>>0]=i[b+72>>0]|0;d=a+76|0;c=b+76|0;k[d>>2]=0;e=a+80|0;k[e>>2]=0;k[a+84>>2]=0;k[d>>2]=k[c>>2];d=b+80|0;k[e>>2]=k[d>>2];e=b+84|0;k[a+84>>2]=k[e>>2];k[e>>2]=0;k[d>>2]=0;k[c>>2]=0;c=a+88|0;d=b+88|0;k[c>>2]=0;e=a+92|0;k[e>>2]=0;k[a+96>>2]=0;k[c>>2]=k[d>>2];c=b+92|0;k[e>>2]=k[c>>2];e=b+96|0;k[a+96>>2]=k[e>>2];k[e>>2]=0;k[c>>2]=0;k[d>>2]=0;k[a+100>>2]=k[b+100>>2];d=a+104|0;c=b+104|0;k[d>>2]=0;e=a+108|0;k[e>>2]=0;k[a+112>>2]=0;k[d>>2]=k[c>>2];d=b+108|0;k[e>>2]=k[d>>2];b=b+112|0;k[a+112>>2]=k[b>>2];k[b>>2]=0;k[d>>2]=0;k[c>>2]=0;return}function fe(a,b,c,d,e,f){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;f=f|0;var g=0,h=0,i=0,j=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0,v=0,w=0;q=a+8|0;k[q>>2]=e;r=k[a+24>>2]|0;p=k[a+28>>2]|0;j=e>>>0>1073741823?-1:e<<2;s=Sl(j)|0;Zh(s|0,0,j|0)|0;fg(q,s,b,c,0);j=a+32|0;g=k[j>>2]|0;a=k[g+4>>2]|0;f=k[g>>2]|0;o=a-f|0;l=o>>2;if((o|0)<=4){Tl(s);return 1}m=r+64|0;n=r+28|0;o=(e|0)>0;d=1;while(1){if(a-f>>2>>>0<=d>>>0){d=6;break}f=k[f+(d<<2)>>2]|0;i=$(d,e)|0;if((!((f|0)<0?1:(1<<(f&31)&k[(k[r>>2]|0)+(f>>>5<<2)>>2]|0)!=0)?(t=k[(k[(k[m>>2]|0)+12>>2]|0)+(f<<2)>>2]|0,(t|0)>=0):0)?(w=k[n>>2]|0,h=k[p>>2]|0,u=k[h+(k[w+(t<<2)>>2]<<2)>>2]|0,v=t+1|0,v=k[h+(k[w+((((v|0)%3|0|0)==0?t+-2|0:v)<<2)>>2]<<2)>>2]|0,w=k[h+(k[w+((((t>>>0)%3|0|0)==0?2:-1)+t<<2)>>2]<<2)>>2]|0,(u|0)<(d|0)&(v|0)<(d|0)&(w|0)<(d|0)):0){a=$(u,e)|0;g=$(v,e)|0;h=$(w,e)|0;if(o){f=0;do{k[s+(f<<2)>>2]=(k[c+(f+h<<2)>>2]|0)+(k[c+(f+g<<2)>>2]|0)-(k[c+(f+a<<2)>>2]|0);f=f+1|0}while((f|0)!=(e|0))}fg(q,s,b,c+(i<<2)|0,i)}else fg(q,c+(($(d+-1|0,e)|0)<<2)|0,b,c+(i<<2)|0,i);d=d+1|0;if((d|0)>=(l|0)){d=3;break}g=k[j>>2]|0;f=k[g>>2]|0;a=k[g+4>>2]|0}if((d|0)==3){Tl(s);return 1}else if((d|0)==6)_k(g);return 0}function ge(a,b){a=a|0;b=b|0;var c=0,d=0,e=0,f=0,g=0,h=0,j=0,l=0,m=0,n=0;m=r;r=r+48|0;j=m+8|0;l=m;c=m+40|0;i[c>>0]=k[a+84>>2];h=b+16|0;g=h;f=k[g+4>>2]|0;if(!((f|0)>0|(f|0)==0&(k[g>>2]|0)>>>0>0)){k[l>>2]=k[b+4>>2];k[j>>2]=k[l>>2];he(b,j,c,c+1|0)|0}f=0;do{g=f;f=f+1|0;c=a+36+(g*12|0)+4|0;mg(k[c>>2]|0,b);if(k[c>>2]|0){wj(j);Ah(j);c=(k[c>>2]|0)-f|0;if((c|0)>-1){e=a+36+(g*12|0)|0;do{d=0;while(1){n=d+c|0;Mg(j,(k[(k[e>>2]|0)+(n>>>5<<2)>>2]&1<<(n&31)|0)!=0);if((d|0)<(g|0))d=d+1|0;else break}c=c-f|0}while((c|0)>-1)}dc(j,b);Wg(j)}}while((f|0)<4);c=a+12|0;n=h;g=k[n+4>>2]|0;if((g|0)>0|(g|0)==0&(k[n>>2]|0)>>>0>0){r=m;return 1}d=b+4|0;k[l>>2]=k[d>>2];k[j>>2]=k[l>>2];he(b,j,c,c+4|0)|0;n=h;h=k[n+4>>2]|0;c=a+16|0;if((h|0)>0|(h|0)==0&(k[n>>2]|0)>>>0>0){r=m;return 1}k[l>>2]=k[d>>2];k[j>>2]=k[l>>2];he(b,j,c,c+4|0)|0;r=m;return 1}function he(a,b,c,d){a=a|0;b=b|0;c=c|0;d=d|0;var e=0,f=0,g=0,h=0,j=0,l=0,m=0,n=0,o=0;l=k[a>>2]|0;h=l;b=l+((k[b>>2]|0)-h)|0;j=d-c|0;if((j|0)<=0){o=b;return o|0}n=a+8|0;f=k[n>>2]|0;o=a+4|0;m=k[o>>2]|0;e=m;if((j|0)<=(f-e|0)){g=e-b|0;if((j|0)>(g|0)){h=c+g|0;if((h|0)==(d|0))e=m;else{f=h;e=m;do{i[e>>0]=i[f>>0]|0;f=f+1|0;e=(k[o>>2]|0)+1|0;k[o>>2]=e}while((f|0)!=(d|0))}if((g|0)>0){d=h;h=e}else{o=b;return o|0}}else h=m;g=h-(b+j)|0;e=b+g|0;if(e>>>0>>0){f=h;do{i[f>>0]=i[e>>0]|0;e=e+1|0;f=(k[o>>2]|0)+1|0;k[o>>2]=f}while((e|0)!=(m|0))}if(g|0)Xi(h+(0-g)|0,b|0,g|0)|0;if((d|0)==(c|0)){o=b;return o|0}else e=b;while(1){i[e>>0]=i[c>>0]|0;c=c+1|0;if((c|0)==(d|0))break;else e=e+1|0}return b|0}e=e-h+j|0;if((e|0)<0)$k(a);j=f-h|0;f=j<<1;f=j>>>0<1073741823?(f>>>0>>0?e:f):2147483647;j=b;if(!f)g=0;else g=vj(f)|0;m=g+(j-h)|0;e=m;h=g+f|0;if((c|0)==(d|0)){c=e;f=l}else{f=m;do{i[f>>0]=i[c>>0]|0;f=e+1|0;e=f;c=c+1|0}while((c|0)!=(d|0));c=e;f=k[a>>2]|0}e=j-f|0;g=m+(0-e)|0;if((e|0)>0)Mh(g|0,f|0,e|0)|0;e=(k[o>>2]|0)-j|0;if((e|0)>0){Mh(c|0,b|0,e|0)|0;c=c+e|0;b=k[a>>2]|0}else b=f;k[a>>2]=g;k[o>>2]=c;k[n>>2]=h;if(!b){o=m;return o|0}Vl(b);o=m;return o|0}function ie(a,b){a=a|0;b=b|0;var c=0,d=0,e=0,f=0,g=0,h=0,j=0,l=0,m=0,n=0;m=r;r=r+48|0;j=m+8|0;l=m;c=m+40|0;i[c>>0]=k[a+108>>2];h=b+16|0;g=h;f=k[g+4>>2]|0;if(!((f|0)>0|(f|0)==0&(k[g>>2]|0)>>>0>0)){k[l>>2]=k[b+4>>2];k[j>>2]=k[l>>2];he(b,j,c,c+1|0)|0}f=0;do{g=f;f=f+1|0;c=a+60+(g*12|0)+4|0;mg(k[c>>2]|0,b);if(k[c>>2]|0){wj(j);Ah(j);c=(k[c>>2]|0)-f|0;if((c|0)>-1){e=a+60+(g*12|0)|0;do{d=0;while(1){n=d+c|0;Mg(j,(k[(k[e>>2]|0)+(n>>>5<<2)>>2]&1<<(n&31)|0)!=0);if((d|0)<(g|0))d=d+1|0;else break}c=c-f|0}while((c|0)>-1)}dc(j,b);Wg(j)}}while((f|0)<4);c=a+12|0;n=h;g=k[n+4>>2]|0;if((g|0)>0|(g|0)==0&(k[n>>2]|0)>>>0>0){r=m;return 1}d=b+4|0;k[l>>2]=k[d>>2];k[j>>2]=k[l>>2];he(b,j,c,c+4|0)|0;n=h;h=k[n+4>>2]|0;c=a+16|0;if((h|0)>0|(h|0)==0&(k[n>>2]|0)>>>0>0){r=m;return 1}k[l>>2]=k[d>>2];k[j>>2]=k[l>>2];he(b,j,c,c+4|0)|0;r=m;return 1}function je(a,b,c){a=a|0;b=b|0;c=c|0;var d=Pa,e=Pa,f=0,g=0,h=0;switch(i[a+24>>0]|0){case 1:{g=k[b>>2]|0;b=a+48|0;f=k[b>>2]|0;b=k[b+4>>2]|0;h=a+40|0;b=(mk(sj(k[h>>2]|0,k[h+4>>2]|0,g|0,((g|0)<0)<<31>>31|0)|0,M|0,f|0,b|0)|0)+(k[k[a>>2]>>2]|0)|0;e=da((l[b>>0]|l[b+1>>0]<<8|l[b+2>>0]<<16|l[b+3>>0]<<24)>>>0);d=da(e*da(2.32830644e-10));o[c>>2]=(i[a+32>>0]|0)==0?e:d;c=1;return c|0}case 2:{f=k[b>>2]|0;h=a+48|0;g=k[h>>2]|0;h=k[h+4>>2]|0;b=a+40|0;h=(mk(sj(k[b>>2]|0,k[b+4>>2]|0,f|0,((f|0)<0)<<31>>31|0)|0,M|0,g|0,h|0)|0)+(k[k[a>>2]>>2]|0)|0;d=da((l[h>>0]|l[h+1>>0]<<8|l[h+2>>0]<<16|l[h+3>>0]<<24)>>>0);e=da(d*da(2.32830644e-10));o[c>>2]=(i[a+32>>0]|0)==0?d:e;h=1;return h|0}case 3:{f=k[b>>2]|0;h=a+48|0;g=k[h>>2]|0;h=k[h+4>>2]|0;b=a+40|0;h=(mk(sj(k[b>>2]|0,k[b+4>>2]|0,f|0,((f|0)<0)<<31>>31|0)|0,M|0,g|0,h|0)|0)+(k[k[a>>2]>>2]|0)|0;d=da((l[h>>0]|l[h+1>>0]<<8|l[h+2>>0]<<16|l[h+3>>0]<<24)>>>0);e=da(d*da(2.32830644e-10));o[c>>2]=(i[a+32>>0]|0)==0?d:e;h=1;return h|0}case 4:{f=k[b>>2]|0;h=a+48|0;g=k[h>>2]|0;h=k[h+4>>2]|0;b=a+40|0;h=(mk(sj(k[b>>2]|0,k[b+4>>2]|0,f|0,((f|0)<0)<<31>>31|0)|0,M|0,g|0,h|0)|0)+(k[k[a>>2]>>2]|0)|0;d=da((l[h>>0]|l[h+1>>0]<<8|l[h+2>>0]<<16|l[h+3>>0]<<24)>>>0);e=da(d*da(2.32830644e-10));o[c>>2]=(i[a+32>>0]|0)==0?d:e;h=1;return h|0}default:{h=0;return h|0}}return 0}function ke(a,b,c){a=a|0;b=b|0;c=c|0;var d=Pa,e=Pa,f=0,g=0,h=0;switch(i[a+24>>0]|0){case 1:{g=k[b>>2]|0;b=a+48|0;f=k[b>>2]|0;b=k[b+4>>2]|0;h=a+40|0;b=(mk(sj(k[h>>2]|0,k[h+4>>2]|0,g|0,((g|0)<0)<<31>>31|0)|0,M|0,f|0,b|0)|0)+(k[k[a>>2]>>2]|0)|0;e=da(l[b>>0]|l[b+1>>0]<<8|l[b+2>>0]<<16|l[b+3>>0]<<24|0);d=da(e*da(4.65661287e-10));o[c>>2]=(i[a+32>>0]|0)==0?e:d;c=1;return c|0}case 2:{f=k[b>>2]|0;h=a+48|0;g=k[h>>2]|0;h=k[h+4>>2]|0;b=a+40|0;h=(mk(sj(k[b>>2]|0,k[b+4>>2]|0,f|0,((f|0)<0)<<31>>31|0)|0,M|0,g|0,h|0)|0)+(k[k[a>>2]>>2]|0)|0;d=da(l[h>>0]|l[h+1>>0]<<8|l[h+2>>0]<<16|l[h+3>>0]<<24|0);e=da(d*da(4.65661287e-10));o[c>>2]=(i[a+32>>0]|0)==0?d:e;h=1;return h|0}case 3:{f=k[b>>2]|0;h=a+48|0;g=k[h>>2]|0;h=k[h+4>>2]|0;b=a+40|0;h=(mk(sj(k[b>>2]|0,k[b+4>>2]|0,f|0,((f|0)<0)<<31>>31|0)|0,M|0,g|0,h|0)|0)+(k[k[a>>2]>>2]|0)|0;d=da(l[h>>0]|l[h+1>>0]<<8|l[h+2>>0]<<16|l[h+3>>0]<<24|0);e=da(d*da(4.65661287e-10));o[c>>2]=(i[a+32>>0]|0)==0?d:e;h=1;return h|0}case 4:{f=k[b>>2]|0;h=a+48|0;g=k[h>>2]|0;h=k[h+4>>2]|0;b=a+40|0;h=(mk(sj(k[b>>2]|0,k[b+4>>2]|0,f|0,((f|0)<0)<<31>>31|0)|0,M|0,g|0,h|0)|0)+(k[k[a>>2]>>2]|0)|0;d=da(l[h>>0]|l[h+1>>0]<<8|l[h+2>>0]<<16|l[h+3>>0]<<24|0);e=da(d*da(4.65661287e-10));o[c>>2]=(i[a+32>>0]|0)==0?d:e;h=1;return h|0}default:{h=0;return h|0}}return 0}function le(a,b){a=a|0;b=b|0;var c=0,d=0,e=0,f=0,g=0,h=0,j=0,l=0;l=r;r=r+144|0;c=l+136|0;h=l+32|0;g=l;d=k[(k[a+4>>2]|0)+28>>2]|0;j=vj(124)|0;k[j+4>>2]=0;k[j>>2]=5584;k[j+12>>2]=5608;k[j+100>>2]=0;k[j+104>>2]=0;k[j+108>>2]=0;e=j+16|0;f=e+80|0;do{k[e>>2]=0;e=e+4|0}while((e|0)<(f|0));k[j+112>>2]=d;k[j+116>>2]=b;k[j+120>>2]=0;k[h+4>>2]=5608;k[h+92>>2]=0;k[h+96>>2]=0;k[h+100>>2]=0;e=h+8|0;f=e+80|0;do{k[e>>2]=0;e=e+4|0}while((e|0)<(f|0));a=k[a+8>>2]|0;k[g>>2]=5608;f=g+4|0;e=f+4|0;k[e>>2]=0;k[e+4>>2]=0;k[e+8>>2]=0;k[e+12>>2]=0;k[e+16>>2]=0;k[e+20>>2]=0;e=a;k[f>>2]=e;e=((k[e+4>>2]|0)-(k[a>>2]|0)|0)/12|0;i[c>>0]=0;Af(g+8|0,e,c);Ta[k[(k[g>>2]|0)+8>>2]&127](g);k[h>>2]=k[f>>2];Ne(h+4|0,g)|0;k[h+36>>2]=a;k[h+40>>2]=b;k[h+44>>2]=d;k[h+48>>2]=j;bf(j,h);k[g>>2]=5608;a=k[g+20>>2]|0;if(a|0)Vl(a);a=k[g+8>>2]|0;if(!a){Ag(h);r=l;return j|0}Vl(a);Ag(h);r=l;return j|0}function me(a,b,c){a=a|0;b=b|0;c=c|0;var d=Pa,e=Pa,f=0,g=0,h=0;switch(i[a+24>>0]|0){case 1:{g=k[b>>2]|0;b=a+48|0;f=k[b>>2]|0;b=k[b+4>>2]|0;h=a+40|0;b=(mk(sj(k[h>>2]|0,k[h+4>>2]|0,g|0,((g|0)<0)<<31>>31|0)|0,M|0,f|0,b|0)|0)+(k[k[a>>2]>>2]|0)|0;e=da((l[b>>0]|l[b+1>>0]<<8)<<16>>16);d=da(e/da(32767.0));o[c>>2]=(i[a+32>>0]|0)==0?e:d;c=1;return c|0}case 2:{f=k[b>>2]|0;h=a+48|0;g=k[h>>2]|0;h=k[h+4>>2]|0;b=a+40|0;h=(mk(sj(k[b>>2]|0,k[b+4>>2]|0,f|0,((f|0)<0)<<31>>31|0)|0,M|0,g|0,h|0)|0)+(k[k[a>>2]>>2]|0)|0;d=da(((l[h>>0]|l[h+1>>0]<<8|l[h+2>>0]<<16|l[h+3>>0]<<24)&65535)<<16>>16);e=da(d/da(32767.0));o[c>>2]=(i[a+32>>0]|0)==0?d:e;h=1;return h|0}case 3:{f=k[b>>2]|0;h=a+48|0;g=k[h>>2]|0;h=k[h+4>>2]|0;b=a+40|0;h=(mk(sj(k[b>>2]|0,k[b+4>>2]|0,f|0,((f|0)<0)<<31>>31|0)|0,M|0,g|0,h|0)|0)+(k[k[a>>2]>>2]|0)|0;d=da((l[h>>0]|l[h+1>>0]<<8)<<16>>16);e=da(d/da(32767.0));o[c>>2]=(i[a+32>>0]|0)==0?d:e;h=1;return h|0}case 4:{f=k[b>>2]|0;h=a+48|0;g=k[h>>2]|0;h=k[h+4>>2]|0;b=a+40|0;h=(mk(sj(k[b>>2]|0,k[b+4>>2]|0,f|0,((f|0)<0)<<31>>31|0)|0,M|0,g|0,h|0)|0)+(k[k[a>>2]>>2]|0)|0;d=da(((l[h>>0]|l[h+1>>0]<<8|l[h+2>>0]<<16|l[h+3>>0]<<24)&65535)<<16>>16);e=da(d/da(32767.0));o[c>>2]=(i[a+32>>0]|0)==0?d:e;h=1;return h|0}default:{h=0;return h|0}}return 0}function ne(a,b,c){a=a|0;b=b|0;c=c|0;var d=0,e=0,f=0.0;a:do if(b>>>0<=20)do switch(b|0){case 9:{d=(k[c>>2]|0)+(4-1)&~(4-1);b=k[d>>2]|0;k[c>>2]=d+4;k[a>>2]=b;break a}case 10:{d=(k[c>>2]|0)+(4-1)&~(4-1);b=k[d>>2]|0;k[c>>2]=d+4;d=a;k[d>>2]=b;k[d+4>>2]=((b|0)<0)<<31>>31;break a}case 11:{d=(k[c>>2]|0)+(4-1)&~(4-1);b=k[d>>2]|0;k[c>>2]=d+4;d=a;k[d>>2]=b;k[d+4>>2]=0;break a}case 12:{d=(k[c>>2]|0)+(8-1)&~(8-1);b=d;e=k[b>>2]|0;b=k[b+4>>2]|0;k[c>>2]=d+8;d=a;k[d>>2]=e;k[d+4>>2]=b;break a}case 13:{e=(k[c>>2]|0)+(4-1)&~(4-1);d=k[e>>2]|0;k[c>>2]=e+4;d=(d&65535)<<16>>16;e=a;k[e>>2]=d;k[e+4>>2]=((d|0)<0)<<31>>31;break a}case 14:{e=(k[c>>2]|0)+(4-1)&~(4-1);d=k[e>>2]|0;k[c>>2]=e+4;e=a;k[e>>2]=d&65535;k[e+4>>2]=0;break a}case 15:{e=(k[c>>2]|0)+(4-1)&~(4-1);d=k[e>>2]|0;k[c>>2]=e+4;d=(d&255)<<24>>24;e=a;k[e>>2]=d;k[e+4>>2]=((d|0)<0)<<31>>31;break a}case 16:{e=(k[c>>2]|0)+(4-1)&~(4-1);d=k[e>>2]|0;k[c>>2]=e+4;e=a;k[e>>2]=d&255;k[e+4>>2]=0;break a}case 17:{e=(k[c>>2]|0)+(8-1)&~(8-1);f=+p[e>>3];k[c>>2]=e+8;p[a>>3]=f;break a}case 18:{e=(k[c>>2]|0)+(8-1)&~(8-1);f=+p[e>>3];k[c>>2]=e+8;p[a>>3]=f;break a}default:break a}while(0);while(0);return}function oe(a,b){a=a|0;b=b|0;var c=0,d=0,e=0,f=0,g=0,h=0,j=0,l=0,m=0,n=0,o=0,p=0,q=0;p=k[a+8>>2]|0;j=a+76|0;c=k[j>>2]|0;m=k[c+64>>2]|0;q=b+84|0;i[q>>0]=0;l=b+68|0;d=b+72|0;g=k[d>>2]|0;f=k[l>>2]|0;e=g-f>>2;if(m>>>0<=e>>>0){if(m>>>0>>0?(h=f+(m<<2)|0,(g|0)!=(h|0)):0)k[d>>2]=g+(~((g+-4-h|0)>>>2)<<2)}else{Of(l,m-e|0,5572);m=k[j>>2]|0;c=m;m=k[m+64>>2]|0}n=(k[c+84>>2]|0)-(k[c+80>>2]|0)|0;o=(n|0)/12|0;if((n|0)<=0){q=1;return q|0}n=a+80|0;l=b+68|0;a=c+80|0;j=c+84|0;h=0;while(1){c=k[a>>2]|0;if((h|0)>=(((k[j>>2]|0)-c|0)/12|0|0)){d=9;break}e=h*3|0;f=k[(k[n>>2]|0)+12>>2]|0;d=k[f+(k[(k[p>>2]|0)+(h*12|0)+(((e>>>0)%3|0)<<2)>>2]<<2)>>2]|0;if(d>>>0>=m>>>0){c=0;d=13;break}if(i[q>>0]|0){d=12;break}g=k[l>>2]|0;k[g+(k[c+(h*12|0)>>2]<<2)>>2]=d;d=e+1|0;d=k[f+(k[(k[p>>2]|0)+(((d>>>0)/3|0)*12|0)+(((d>>>0)%3|0)<<2)>>2]<<2)>>2]|0;if(d>>>0>=m>>>0){c=0;d=13;break}k[g+(k[c+(h*12|0)+4>>2]<<2)>>2]=d;d=e+2|0;d=k[f+(k[(k[p>>2]|0)+(((d>>>0)/3|0)*12|0)+(((d>>>0)%3|0)<<2)>>2]<<2)>>2]|0;if(d>>>0>=m>>>0){c=0;d=13;break}k[g+(k[c+(h*12|0)+8>>2]<<2)>>2]=d;h=h+1|0;if((h|0)>=(o|0)){c=1;d=13;break}}if((d|0)==9)Ka(13330,13311,64,13325);else if((d|0)==12)Ka(13384,13403,80,13435);else if((d|0)==13)return c|0;return 0}function pe(a,b,c){a=a|0;b=b|0;c=c|0;var d=Pa,e=Pa,f=0,g=0,h=0;switch(i[a+24>>0]|0){case 1:{g=k[b>>2]|0;b=a+48|0;f=k[b>>2]|0;b=k[b+4>>2]|0;h=a+40|0;b=(mk(sj(k[h>>2]|0,k[h+4>>2]|0,g|0,((g|0)<0)<<31>>31|0)|0,M|0,f|0,b|0)|0)+(k[k[a>>2]>>2]|0)|0;e=da((l[b>>0]|l[b+1>>0]<<8)&65535);d=da(e/da(65535.0));o[c>>2]=(i[a+32>>0]|0)==0?e:d;c=1;return c|0}case 2:{f=k[b>>2]|0;h=a+48|0;g=k[h>>2]|0;h=k[h+4>>2]|0;b=a+40|0;h=(mk(sj(k[b>>2]|0,k[b+4>>2]|0,f|0,((f|0)<0)<<31>>31|0)|0,M|0,g|0,h|0)|0)+(k[k[a>>2]>>2]|0)|0;d=da((l[h>>0]|l[h+1>>0]<<8|l[h+2>>0]<<16|l[h+3>>0]<<24)&65535);e=da(d/da(65535.0));o[c>>2]=(i[a+32>>0]|0)==0?d:e;h=1;return h|0}case 3:{f=k[b>>2]|0;h=a+48|0;g=k[h>>2]|0;h=k[h+4>>2]|0;b=a+40|0;h=(mk(sj(k[b>>2]|0,k[b+4>>2]|0,f|0,((f|0)<0)<<31>>31|0)|0,M|0,g|0,h|0)|0)+(k[k[a>>2]>>2]|0)|0;d=da((l[h>>0]|l[h+1>>0]<<8)&65535);e=da(d/da(65535.0));o[c>>2]=(i[a+32>>0]|0)==0?d:e;h=1;return h|0}case 4:{f=k[b>>2]|0;h=a+48|0;g=k[h>>2]|0;h=k[h+4>>2]|0;b=a+40|0;h=(mk(sj(k[b>>2]|0,k[b+4>>2]|0,f|0,((f|0)<0)<<31>>31|0)|0,M|0,g|0,h|0)|0)+(k[k[a>>2]>>2]|0)|0;d=da((l[h>>0]|l[h+1>>0]<<8|l[h+2>>0]<<16|l[h+3>>0]<<24)&65535);e=da(d/da(65535.0));o[c>>2]=(i[a+32>>0]|0)==0?d:e;h=1;return h|0}default:{h=0;return h|0}}return 0}function qe(a,b){a=a|0;b=b|0;var c=0,d=0,e=0,f=0,g=0,h=0,i=0,j=0,l=0,m=0,n=0,o=0,p=0,q=0,s=0,t=0;t=r;r=r+16|0;n=t+4|0;o=t;c=k[b>>2]|0;k[n>>2]=c;m=a+8|0;b=c+1|0;do if((c|0)>=0){k[n+4>>2]=((b|0)%3|0|0)==0?c+-2|0:b;if(!((c>>>0)%3|0)){b=c+2|0;break}else{b=c+-1|0;break}}else{k[n+4>>2]=c;b=c}while(0);k[n+8>>2]=b;j=a+228|0;l=a+232|0;i=a+320|0;h=0;while(1){if((c|0)>=0?(k[(k[(k[m>>2]|0)+12>>2]|0)+(c<<2)>>2]|0)>=0:0){if((k[l>>2]|0)!=(k[j>>2]|0)){b=0;do{if(Xh((k[i>>2]|0)+(b<<4)|0)|0){a=k[j>>2]|0;k[o>>2]=c;d=a+(b*116|0)+108|0;e=k[d>>2]|0;if(e>>>0<(k[a+(b*116|0)+112>>2]|0)>>>0){k[e>>2]=c;k[d>>2]=e+4}else Ig(a+(b*116|0)+104|0,o)}b=b+1|0}while(b>>>0<(((k[l>>2]|0)-(k[j>>2]|0)|0)/116|0)>>>0)}}else s=11;if((s|0)==11?(s=0,p=k[l>>2]|0,q=k[j>>2]|0,(p|0)!=(q|0)):0){g=0;b=q;a=p;do{d=b;k[o>>2]=c;e=d+(g*116|0)+108|0;f=k[e>>2]|0;if(f>>>0<(k[d+(g*116|0)+112>>2]|0)>>>0){k[f>>2]=c;k[e>>2]=f+4}else{Ig(d+(g*116|0)+104|0,o);b=k[j>>2]|0;a=k[l>>2]|0}g=g+1|0}while(g>>>0<((a-b|0)/116|0)>>>0)}b=h+1|0;if((b|0)==3)break;h=b;c=k[n+(b<<2)>>2]|0}r=t;return 1}function re(a,b){a=a|0;b=b|0;var c=0,d=0,e=0,f=0,g=0,h=0,j=0,l=0,m=0,n=0,o=0,p=0,q=0;p=k[a+8>>2]|0;j=a+112|0;c=k[j>>2]|0;m=k[c+64>>2]|0;q=b+84|0;i[q>>0]=0;l=b+68|0;d=b+72|0;g=k[d>>2]|0;f=k[l>>2]|0;e=g-f>>2;if(m>>>0<=e>>>0){if(m>>>0>>0?(h=f+(m<<2)|0,(g|0)!=(h|0)):0)k[d>>2]=g+(~((g+-4-h|0)>>>2)<<2)}else{Of(l,m-e|0,5572);m=k[j>>2]|0;c=m;m=k[m+64>>2]|0}n=(k[c+84>>2]|0)-(k[c+80>>2]|0)|0;o=(n|0)/12|0;if((n|0)<=0){q=1;return q|0}n=a+116|0;l=b+68|0;a=c+80|0;j=c+84|0;h=0;while(1){c=k[a>>2]|0;if((h|0)>=(((k[j>>2]|0)-c|0)/12|0|0)){d=9;break}e=h*3|0;f=k[(k[n>>2]|0)+12>>2]|0;d=k[f+(k[(k[p>>2]|0)+(h*12|0)+(((e>>>0)%3|0)<<2)>>2]<<2)>>2]|0;if(d>>>0>=m>>>0){c=0;d=13;break}if(i[q>>0]|0){d=12;break}g=k[l>>2]|0;k[g+(k[c+(h*12|0)>>2]<<2)>>2]=d;d=e+1|0;d=k[f+(k[(k[p>>2]|0)+(((d>>>0)/3|0)*12|0)+(((d>>>0)%3|0)<<2)>>2]<<2)>>2]|0;if(d>>>0>=m>>>0){c=0;d=13;break}k[g+(k[c+(h*12|0)+4>>2]<<2)>>2]=d;d=e+2|0;d=k[f+(k[(k[p>>2]|0)+(((d>>>0)/3|0)*12|0)+(((d>>>0)%3|0)<<2)>>2]<<2)>>2]|0;if(d>>>0>=m>>>0){c=0;d=13;break}k[g+(k[c+(h*12|0)+8>>2]<<2)>>2]=d;h=h+1|0;if((h|0)>=(o|0)){c=1;d=13;break}}if((d|0)==9)Ka(13330,13311,64,13325);else if((d|0)==12)Ka(13384,13403,80,13435);else if((d|0)==13)return c|0;return 0}function se(a,b){a=a|0;b=b|0;var c=0,d=0,e=0,f=0,g=0,h=0,j=0,l=0,m=0,n=0,o=0,p=0;if(!(Wc(a,b)|0)){n=0;return n|0}l=a+24|0;m=a+4|0;n=a+8|0;f=(k[n>>2]|0)-(k[m>>2]|0)>>2;g=a+28|0;c=k[g>>2]|0;e=k[l>>2]|0;d=c-e>>2;if(f>>>0<=d>>>0){if(f>>>0>>0?(h=e+(f<<2)|0,(c|0)!=(h|0)):0)do{j=c+-4|0;k[g>>2]=j;c=k[j>>2]|0;k[j>>2]=0;if(c|0)Ta[k[(k[c>>2]|0)+4>>2]&127](c);c=k[g>>2]|0}while((c|0)!=(h|0))}else df(l,f-d|0);f=b+8|0;if(((k[n>>2]|0)-(k[m>>2]|0)|0)<=0){n=1;return n|0}g=b+16|0;h=a+16|0;j=a+4|0;e=0;while(1){o=f;p=k[o+4>>2]|0;d=g;c=k[d>>2]|0;d=k[d+4>>2]|0;if(!((p|0)>(d|0)|((p|0)==(d|0)?(k[o>>2]|0)>>>0>c>>>0:0))){c=0;d=17;break}o=i[(k[b>>2]|0)+c>>0]|0;c=mk(c|0,d|0,1,0)|0;p=g;k[p>>2]=c;k[p+4>>2]=M;p=(k[l>>2]|0)+(e<<2)|0;o=Za[k[(k[a>>2]|0)+20>>2]&127](a,o)|0;c=k[p>>2]|0;k[p>>2]=o;if(c|0)Ta[k[(k[c>>2]|0)+4>>2]&127](c);c=k[(k[l>>2]|0)+(e<<2)>>2]|0;if(!c){c=0;d=17;break}if(!(Ra[k[(k[c>>2]|0)+8>>2]&31](c,k[h>>2]|0,k[(k[j>>2]|0)+(e<<2)>>2]|0)|0)){c=0;d=17;break}e=e+1|0;if((e|0)>=((k[n>>2]|0)-(k[m>>2]|0)>>2|0)){c=1;d=17;break}}if((d|0)==17)return c|0;return 0}function te(a,b,c){a=a|0;b=b|0;c=c|0;var d=Pa,e=Pa,f=0,g=0,h=0;switch(i[a+24>>0]|0){case 1:{g=k[b>>2]|0;b=a+48|0;f=k[b>>2]|0;b=k[b+4>>2]|0;h=a+40|0;b=mk(sj(k[h>>2]|0,k[h+4>>2]|0,g|0,((g|0)<0)<<31>>31|0)|0,M|0,f|0,b|0)|0;e=da(i[(k[k[a>>2]>>2]|0)+b>>0]|0);d=da(e/da(127.0));o[c>>2]=(i[a+32>>0]|0)==0?e:d;c=1;return c|0}case 2:{f=k[b>>2]|0;h=a+48|0;g=k[h>>2]|0;h=k[h+4>>2]|0;b=a+40|0;h=(mk(sj(k[b>>2]|0,k[b+4>>2]|0,f|0,((f|0)<0)<<31>>31|0)|0,M|0,g|0,h|0)|0)+(k[k[a>>2]>>2]|0)|0;d=da(((l[h>>0]|l[h+1>>0]<<8)&255)<<24>>24);e=da(d/da(127.0));o[c>>2]=(i[a+32>>0]|0)==0?d:e;h=1;return h|0}case 3:{f=k[b>>2]|0;h=a+48|0;g=k[h>>2]|0;h=k[h+4>>2]|0;b=a+40|0;h=mk(sj(k[b>>2]|0,k[b+4>>2]|0,f|0,((f|0)<0)<<31>>31|0)|0,M|0,g|0,h|0)|0;d=da(i[(k[k[a>>2]>>2]|0)+h>>0]|0);e=da(d/da(127.0));o[c>>2]=(i[a+32>>0]|0)==0?d:e;h=1;return h|0}case 4:{f=k[b>>2]|0;h=a+48|0;g=k[h>>2]|0;h=k[h+4>>2]|0;b=a+40|0;h=(mk(sj(k[b>>2]|0,k[b+4>>2]|0,f|0,((f|0)<0)<<31>>31|0)|0,M|0,g|0,h|0)|0)+(k[k[a>>2]>>2]|0)|0;d=da(((l[h>>0]|l[h+1>>0]<<8|l[h+2>>0]<<16|l[h+3>>0]<<24)&255)<<24>>24);e=da(d/da(127.0));o[c>>2]=(i[a+32>>0]|0)==0?d:e;h=1;return h|0}default:{h=0;return h|0}}return 0}function ue(a,b){a=a|0;b=b|0;var c=0,d=0,e=0,f=0,g=0,h=0,j=0;d=b+8|0;h=d;f=k[h+4>>2]|0;j=b+16|0;g=j;c=k[g>>2]|0;g=k[g+4>>2]|0;if(!((f|0)>(g|0)|((f|0)==(g|0)?(k[h>>2]|0)>>>0>c>>>0:0))){j=0;return j|0}i[a+12>>0]=i[(k[b>>2]|0)+c>>0]|0;g=j;h=k[g>>2]|0;g=k[g+4>>2]|0;e=mk(h|0,g|0,1,0)|0;f=j;k[f>>2]=e;k[f+4>>2]=M;f=d;d=k[f>>2]|0;f=k[f+4>>2]|0;g=mk(h|0,g|0,5,0)|0;h=M;if((f|0)<(h|0)|(f|0)==(h|0)&d>>>0>>0){j=0;return j|0}c=k[b>>2]|0;e=c+e|0;e=l[e>>0]|l[e+1>>0]<<8|l[e+2>>0]<<16|l[e+3>>0]<<24;b=j;k[b>>2]=g;k[b+4>>2]=h;f=Zj(d|0,f|0,g|0,h|0)|0;b=M;if(0>(b|0)|0==(b|0)&e>>>0>f>>>0){j=0;return j|0}c=c+g|0;if((e|0)<1){j=0;return j|0}k[a>>2]=c;d=e+-1|0;b=c+d|0;a:do switch((l[b>>0]|0)>>>6&3){case 0:{k[a+4>>2]=d;d=(l[b>>0]|0)&63;c=a+8|0;k[c>>2]=d;break}case 1:if((e|0)<2){j=0;return j|0}else{k[a+4>>2]=e+-2;d=c+e+-2|0;d=(l[d+1>>0]|0)<<8&16128|(l[d>>0]|0);c=a+8|0;k[c>>2]=d;break a}case 2:if((e|0)<3){j=0;return j|0}else{k[a+4>>2]=e+-3;d=c+e+-3|0;d=(l[d+1>>0]|0)<<8|(l[d>>0]|0)|(l[d+2>>0]|0)<<16&4128768;c=a+8|0;k[c>>2]=d;break a}default:{j=0;return j|0}}while(0);a=d+4096|0;k[c>>2]=a;if(a>>>0>1048575){j=0;return j|0}h=mk(g|0,h|0,e|0,0)|0;k[j>>2]=h;k[j+4>>2]=M;j=1;return j|0}function ve(a,b,c,d,e){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;var f=0,g=0,h=0,i=0,j=0,l=0,m=0,n=0,o=0,p=0,q=0,s=0;s=r;r=r+48|0;n=s+40|0;o=s+32|0;p=s+24|0;q=s+16|0;j=s+8|0;f=s;l=k[c>>2]|0;m=a+8|0;g=k[m>>2]<<1;if((l|0)>(g|0))Ka(8854,8506,90,8889);h=k[c+4>>2]|0;if((h|0)>(g|0))Ka(8907,8506,91,8889);i=k[b>>2]|0;if((i|0)>(g|0))Ka(8942,8506,92,8889);b=k[b+4>>2]|0;if((b|0)>(g|0))Ka(8977,8506,93,8889);if((l|0)<=-1)Ka(8752,8506,94,8889);if((h|0)<=-1)Ka(8774,8506,95,8889);if((i|0)<=-1)Ka(9012,8506,96,8889);if((b|0)<=-1)Ka(9034,8506,97,8889);k[j>>2]=i;k[j+4>>2]=b;k[f>>2]=l;k[f+4>>2]=h;Fc(q,a,j,f);g=k[q>>2]|0;c=q+4|0;j=k[c>>2]|0;k[o>>2]=l;k[o+4>>2]=h;k[p>>2]=g;k[p+4>>2]=j;ad(n,a,o,p);m=k[m>>2]|0;l=i-m|0;j=b-m|0;p=(k[n>>2]|0)-m|0;n=(k[n+4>>2]|0)-m|0;a=0-l|0;j=((j|0)<0?(((l|0)>-1?l:a)|0)==(m|0):0)?0-j|0:j;o=0-p|0;n=((n|0)<0?(((p|0)>-1?p:o)|0)==(m|0):0)?0-n|0:n;if((j|0)==(n|0)?((((l|0)<0?(((j|0)>-1?j:0-j|0)|0)==(m|0):0)?a:l)|0)==((((p|0)<0?(((n|0)>-1?n:0-n|0)|0)==(m|0):0)?o:p)|0):0){k[d+(e<<2)>>2]=k[q>>2];k[d+(e+1<<2)>>2]=k[c>>2];r=s;return}else Ka(9056,8506,102,8889)}function we(a,b,c){a=a|0;b=b|0;c=c|0;var d=Pa,e=Pa,f=0,g=0,h=0;switch(i[a+24>>0]|0){case 1:{g=k[b>>2]|0;b=a+48|0;f=k[b>>2]|0;b=k[b+4>>2]|0;h=a+40|0;b=mk(sj(k[h>>2]|0,k[h+4>>2]|0,g|0,((g|0)<0)<<31>>31|0)|0,M|0,f|0,b|0)|0;e=da(l[(k[k[a>>2]>>2]|0)+b>>0]|0);d=da(e/da(255.0));o[c>>2]=(i[a+32>>0]|0)==0?e:d;c=1;return c|0}case 2:{f=k[b>>2]|0;h=a+48|0;g=k[h>>2]|0;h=k[h+4>>2]|0;b=a+40|0;h=(mk(sj(k[b>>2]|0,k[b+4>>2]|0,f|0,((f|0)<0)<<31>>31|0)|0,M|0,g|0,h|0)|0)+(k[k[a>>2]>>2]|0)|0;d=da((l[h>>0]|l[h+1>>0]<<8)&255);e=da(d/da(255.0));o[c>>2]=(i[a+32>>0]|0)==0?d:e;h=1;return h|0}case 3:{f=k[b>>2]|0;h=a+48|0;g=k[h>>2]|0;h=k[h+4>>2]|0;b=a+40|0;h=mk(sj(k[b>>2]|0,k[b+4>>2]|0,f|0,((f|0)<0)<<31>>31|0)|0,M|0,g|0,h|0)|0;d=da(l[(k[k[a>>2]>>2]|0)+h>>0]|0);e=da(d/da(255.0));o[c>>2]=(i[a+32>>0]|0)==0?d:e;h=1;return h|0}case 4:{f=k[b>>2]|0;h=a+48|0;g=k[h>>2]|0;h=k[h+4>>2]|0;b=a+40|0;h=(mk(sj(k[b>>2]|0,k[b+4>>2]|0,f|0,((f|0)<0)<<31>>31|0)|0,M|0,g|0,h|0)|0)+(k[k[a>>2]>>2]|0)|0;d=da((l[h>>0]|l[h+1>>0]<<8|l[h+2>>0]<<16|l[h+3>>0]<<24)&255);e=da(d/da(255.0));o[c>>2]=(i[a+32>>0]|0)==0?d:e;h=1;return h|0}default:{h=0;return h|0}}return 0}function xe(a,b){a=a|0;b=b|0;var c=0,d=0,e=0,f=0,g=0,h=0,j=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0;n=k[a+8>>2]|0;j=a+76|0;c=k[j>>2]|0;m=k[c+64>>2]|0;r=b+84|0;i[r>>0]=0;l=b+68|0;d=b+72|0;g=k[d>>2]|0;f=k[l>>2]|0;e=g-f>>2;if(m>>>0<=e>>>0){if(m>>>0>>0?(h=f+(m<<2)|0,(g|0)!=(h|0)):0)k[d>>2]=g+(~((g+-4-h|0)>>>2)<<2)}else{Of(l,m-e|0,5572);m=k[j>>2]|0;c=m;m=k[m+64>>2]|0}p=(k[c+84>>2]|0)-(k[c+80>>2]|0)|0;q=(p|0)/12|0;if((p|0)<=0){r=1;return r|0}p=n+28|0;o=a+80|0;n=b+68|0;a=c+80|0;l=c+84|0;j=0;while(1){c=k[a>>2]|0;if((j|0)>=(((k[l>>2]|0)-c|0)/12|0|0)){d=9;break}e=j*3|0;f=k[p>>2]|0;g=k[(k[o>>2]|0)+12>>2]|0;d=k[g+(k[f+(e<<2)>>2]<<2)>>2]|0;if(d>>>0>=m>>>0){c=0;d=14;break}if(i[r>>0]|0){d=12;break}h=k[n>>2]|0;k[h+(k[c+(j*12|0)>>2]<<2)>>2]=d;d=k[g+(k[f+(e+1<<2)>>2]<<2)>>2]|0;if(d>>>0>=m>>>0){c=0;d=14;break}k[h+(k[c+(j*12|0)+4>>2]<<2)>>2]=d;d=k[g+(k[f+(e+2<<2)>>2]<<2)>>2]|0;if(d>>>0>=m>>>0){c=0;d=14;break}k[h+(k[c+(j*12|0)+8>>2]<<2)>>2]=d;j=j+1|0;if((j|0)>=(q|0)){c=1;d=14;break}}if((d|0)==9)Ka(13330,13311,64,13325);else if((d|0)==12)Ka(13384,13403,80,13435);else if((d|0)==14)return c|0;return 0}function ye(a,b){a=a|0;b=b|0;var c=0,d=0,e=0,f=0,g=0,h=0,i=0,j=0,l=0,m=0,n=0,o=0,p=0;o=r;r=r+32|0;m=o+12|0;l=o;d=b*3|0;k[m>>2]=0;n=m+4|0;k[n>>2]=0;k[m+8>>2]=0;do if(b)if(d>>>0>1073741823)$k(m);else{i=b*12|0;c=vj(i)|0;k[m>>2]=c;j=c+(d<<2)|0;k[m+8>>2]=j;Zh(c|0,0,i|0)|0;k[n>>2]=j;break}else c=0;while(0);if(Kg(d,1,k[a+20>>2]|0,c)|0)if((b|0)>0){e=a+28|0;f=l+4|0;g=l+8|0;a=0;c=0;d=0;while(1){k[l>>2]=0;k[l+4>>2]=0;k[l+8>>2]=0;j=k[m>>2]|0;p=k[j+(c<<2)>>2]|0;h=p>>>1;h=((p&1|0)==0?h:0-h|0)+d|0;k[l>>2]=h;p=k[j+(c+1<<2)>>2]|0;i=p>>>1;h=((p&1|0)==0?i:0-i|0)+h|0;k[f>>2]=h;j=k[j+(c+2<<2)>>2]|0;i=j>>>1;d=((j&1|0)==0?i:0-i|0)+h|0;k[g>>2]=d;h=k[e>>2]|0;i=h+84|0;j=k[i>>2]|0;if((j|0)==(k[h+88>>2]|0))rg(h+80|0,l);else{k[j>>2]=k[l>>2];k[j+4>>2]=k[l+4>>2];k[j+8>>2]=k[l+8>>2];k[i>>2]=(k[i>>2]|0)+12}a=a+1|0;if((a|0)>=(b|0)){d=1;break}else c=c+3|0}}else d=1;else d=0;a=k[m>>2]|0;if(!a){r=o;return d|0}c=k[n>>2]|0;if((c|0)!=(a|0))k[n>>2]=c+(~((c+-4-a|0)>>>2)<<2);Vl(a);r=o;return d|0}function ze(a,b){a=a|0;b=b|0;var c=0,d=0,e=0,f=0,g=0,h=0,i=0,j=0,l=0,m=0,n=0,o=0;n=r;r=r+32|0;j=n+24|0;i=n+16|0;l=n+8|0;m=n;k[a>>2]=5560;k[a+4>>2]=k[b+4>>2];f=a+8|0;g=b+8|0;k[f>>2]=0;h=a+12|0;k[h>>2]=0;c=a+16|0;k[c>>2]=0;d=b+12|0;e=k[d>>2]|0;do if(e|0)if((e|0)<0)$k(f);else{e=((e+-1|0)>>>5)+1|0;o=vj(e<<2)|0;k[f>>2]=o;k[h>>2]=0;k[c>>2]=e;g=k[g>>2]|0;k[l>>2]=g;k[l+4>>2]=0;h=k[d>>2]|0;k[m>>2]=g+(h>>>5<<2);k[m+4>>2]=h&31;k[i>>2]=k[l>>2];k[i+4>>2]=k[l+4>>2];k[j>>2]=k[m>>2];k[j+4>>2]=k[m+4>>2];Pe(f,i,j);break}while(0);f=a+20|0;k[f>>2]=0;g=a+24|0;k[g>>2]=0;c=a+28|0;k[c>>2]=0;d=b+24|0;e=k[d>>2]|0;if(!e){r=n;return}if((e|0)<0)$k(f);o=((e+-1|0)>>>5)+1|0;a=vj(o<<2)|0;k[f>>2]=a;k[g>>2]=0;k[c>>2]=o;b=k[b+20>>2]|0;k[l>>2]=b;k[l+4>>2]=0;o=k[d>>2]|0;k[m>>2]=b+(o>>>5<<2);k[m+4>>2]=o&31;k[i>>2]=k[l>>2];k[i+4>>2]=k[l+4>>2];k[j>>2]=k[m>>2];k[j+4>>2]=k[m+4>>2];Pe(f,i,j);r=n;return}function Ae(a,b,c,d,e){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;var f=0,g=0,h=0,i=0,j=0,l=0,m=0,n=0,o=0,p=0,q=0,s=0;s=r;r=r+48|0;o=s+40|0;p=s+32|0;q=s+24|0;i=s+16|0;j=s+8|0;l=s;m=k[c>>2]|0;n=a+8|0;f=k[n>>2]<<1;if((m|0)>(f|0))Ka(8854,11103,85,8889);g=k[c+4>>2]|0;if((g|0)>(f|0))Ka(8907,11103,86,8889);h=k[b>>2]|0;if((h|0)>(f|0))Ka(8942,11103,87,8889);b=k[b+4>>2]|0;if((b|0)>(f|0))Ka(8977,11103,88,8889);if((m|0)<=-1)Ka(8752,11103,89,8889);if((g|0)<=-1)Ka(8774,11103,90,8889);if((h|0)<=-1)Ka(9012,11103,91,8889);if((b|0)<=-1)Ka(9034,11103,92,8889);k[i>>2]=h;k[i+4>>2]=b;k[j>>2]=m;k[j+4>>2]=g;be(q,a,i,j);k[l>>2]=k[q>>2];c=q+4|0;k[l+4>>2]=k[c>>2];k[p>>2]=m;k[p+4>>2]=g;_d(o,a,p,l);n=k[n>>2]|0;l=h-n|0;j=b-n|0;p=(k[o>>2]|0)-n|0;m=(k[o+4>>2]|0)-n|0;a=0-l|0;j=((j|0)<0?(((l|0)>-1?l:a)|0)==(n|0):0)?0-j|0:j;o=0-p|0;m=((m|0)<0?(((p|0)>-1?p:o)|0)==(n|0):0)?0-m|0:m;if((j|0)==(m|0)?((((l|0)<0?(((j|0)>-1?j:0-j|0)|0)==(n|0):0)?a:l)|0)==((((p|0)<0?(((m|0)>-1?m:0-m|0)|0)==(n|0):0)?o:p)|0):0){k[d+(e<<2)>>2]=k[q>>2];k[d+(e+1<<2)>>2]=k[c>>2];r=s;return}else Ka(9056,11103,98,8889)}function Be(a,b){a=a|0;b=b|0;var c=0,d=0,e=0,f=0,g=0,h=0,i=0,j=0,l=0,m=0,n=0,o=0;n=r;r=r+32|0;j=n+24|0;i=n+16|0;l=n+8|0;m=n;k[a>>2]=5608;k[a+4>>2]=k[b+4>>2];f=a+8|0;g=b+8|0;k[f>>2]=0;h=a+12|0;k[h>>2]=0;c=a+16|0;k[c>>2]=0;d=b+12|0;e=k[d>>2]|0;do if(e|0)if((e|0)<0)$k(f);else{e=((e+-1|0)>>>5)+1|0;o=vj(e<<2)|0;k[f>>2]=o;k[h>>2]=0;k[c>>2]=e;g=k[g>>2]|0;k[l>>2]=g;k[l+4>>2]=0;h=k[d>>2]|0;k[m>>2]=g+(h>>>5<<2);k[m+4>>2]=h&31;k[i>>2]=k[l>>2];k[i+4>>2]=k[l+4>>2];k[j>>2]=k[m>>2];k[j+4>>2]=k[m+4>>2];Pe(f,i,j);break}while(0);f=a+20|0;k[f>>2]=0;g=a+24|0;k[g>>2]=0;c=a+28|0;k[c>>2]=0;d=b+24|0;e=k[d>>2]|0;if(!e){r=n;return}if((e|0)<0)$k(f);o=((e+-1|0)>>>5)+1|0;a=vj(o<<2)|0;k[f>>2]=a;k[g>>2]=0;k[c>>2]=o;b=k[b+20>>2]|0;k[l>>2]=b;k[l+4>>2]=0;o=k[d>>2]|0;k[m>>2]=b+(o>>>5<<2);k[m+4>>2]=o&31;k[i>>2]=k[l>>2];k[i+4>>2]=k[l+4>>2];k[j>>2]=k[m>>2];k[j+4>>2]=k[m+4>>2];Pe(f,i,j);r=n;return}function Ce(a,b,c){a=a|0;b=b|0;c=c|0;var d=0,e=0,f=0,g=0,h=0,i=0,j=0,l=0,m=0;h=a+8|0;d=k[h>>2]|0;g=k[a>>2]|0;m=g;if(((d-g|0)/12|0)>>>0>>0){f=g;if(g){d=a+4|0;e=k[d>>2]|0;if((e|0)!=(m|0))k[d>>2]=e+(~(((e+-12-g|0)>>>0)/12|0)*12|0);Vl(f);k[h>>2]=0;k[d>>2]=0;k[a>>2]=0;d=0}if(b>>>0>357913941)$k(a);m=(d-0|0)/12|0;d=m<<1;d=m>>>0<178956970?(d>>>0>>0?b:d):357913941;if(d>>>0>357913941)$k(a);m=vj(d*12|0)|0;e=a+4|0;k[e>>2]=m;k[a>>2]=m;k[h>>2]=m+(d*12|0);d=m;do{k[d>>2]=k[c>>2];k[d+4>>2]=k[c+4>>2];k[d+8>>2]=k[c+8>>2];d=(k[e>>2]|0)+12|0;k[e>>2]=d;b=b+-1|0}while((b|0)!=0);return}else{l=a+4|0;j=k[l>>2]|0;f=(j-g|0)/12|0;g=f>>>0>>0;d=g?f:b;i=j;if(d|0){a=c+4|0;h=c+8|0;e=m;while(1){k[e>>2]=k[c>>2];k[e+4>>2]=k[a>>2];k[e+8>>2]=k[h>>2];d=d+-1|0;if(!d)break;else e=e+12|0}}if(g){d=b-f|0;b=j;do{k[b>>2]=k[c>>2];k[b+4>>2]=k[c+4>>2];k[b+8>>2]=k[c+8>>2];b=(k[l>>2]|0)+12|0;k[l>>2]=b;d=d+-1|0}while((d|0)!=0);return}b=m+(b*12|0)|0;if((i|0)==(b|0))return;k[l>>2]=i+(~(((i+-12-b|0)>>>0)/12|0)*12|0);return}}function De(a,b,c,d,e){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;var f=0,g=0,h=0,i=0,j=0,l=0;l=r;r=r+16|0;j=l;g=k[a+4>>2]|0;if((c|0)<=-1)Ka(12941,12957,54,12985);f=k[g+4>>2]|0;if(((k[g+8>>2]|0)-f>>2|0)<=(c|0))Ka(12995,12957,55,12985);g=k[f+(c<<2)>>2]|0;if(!((b+-1|0)>>>0<4&(Va[k[(k[a>>2]|0)+8>>2]&127](a)|0)==1)){j=0;r=l;return j|0}h=Va[k[(k[a>>2]|0)+36>>2]&127](a)|0;i=Za[k[(k[a>>2]|0)+44>>2]&127](a,c)|0;do if(!((h|0)==0|(i|0)==0)){f=Za[k[(k[a>>2]|0)+40>>2]&127](a,c)|0;if(!f){k[j>>2]=k[a+28>>2];k[j+4>>2]=h;k[j+12>>2]=i;k[j+8>>2]=i+12;f=sd(b,g,d,j,e)|0;if(!f)f=0;else break;j=f;r=l;return j|0}else{k[j>>2]=k[a+28>>2];k[j+4>>2]=f;k[j+12>>2]=i;k[j+8>>2]=i+12;f=rd(b,g,d,j,e)|0;if(!f)f=0;else break;j=f;r=l;return j|0}}else f=0;while(0);j=f;r=l;return j|0}function Ee(a){a=a|0;var b=0,c=0,d=0,e=0,f=0,g=0,h=0,j=0,m=0,n=0;c=i[(k[a+8>>2]|0)+24>>0]|0;g=a+36|0;f=Sl(c>>>0>1073741823?-1:c<<2)|0;b=k[g>>2]|0;k[g>>2]=f;if(b|0)Tl(b);e=a+4|0;f=k[(k[e>>2]|0)+20>>2]|0;b=c<<2;n=f+8|0;j=k[n>>2]|0;n=k[n+4>>2]|0;c=f+16|0;h=c;d=k[h>>2]|0;h=mk(d|0,k[h+4>>2]|0,b|0,0)|0;m=M;if((n|0)<(m|0)|(n|0)==(m|0)&j>>>0>>0){n=0;return n|0}Mh(k[g>>2]|0,(k[f>>2]|0)+d|0,b|0)|0;h=c;h=mk(k[h>>2]|0,k[h+4>>2]|0,b|0,0)|0;b=c;k[b>>2]=h;k[b+4>>2]=M;b=(k[e>>2]|0)+20|0;c=k[b>>2]|0;h=c+8|0;m=k[h>>2]|0;h=k[h+4>>2]|0;d=c+16|0;n=d;e=k[n>>2]|0;n=mk(e|0,k[n+4>>2]|0,4,0)|0;j=M;if((h|0)<(j|0)|(h|0)==(j|0)&m>>>0>>0){n=0;return n|0}m=a+40|0;n=(k[c>>2]|0)+e|0;n=l[n>>0]|l[n+1>>0]<<8|l[n+2>>0]<<16|l[n+3>>0]<<24;i[m>>0]=n;i[m+1>>0]=n>>8;i[m+2>>0]=n>>16;i[m+3>>0]=n>>24;m=d;m=mk(k[m>>2]|0,k[m+4>>2]|0,4,0)|0;n=d;k[n>>2]=m;k[n+4>>2]=M;b=k[b>>2]|0;n=b+8|0;m=k[n+4>>2]|0;c=b+16|0;e=c;d=k[e>>2]|0;e=k[e+4>>2]|0;if(!((m|0)>(e|0)|((m|0)==(e|0)?(k[n>>2]|0)>>>0>d>>>0:0))){n=0;return n|0}b=i[(k[b>>2]|0)+d>>0]|0;m=mk(d|0,e|0,1,0)|0;n=c;k[n>>2]=m;k[n+4>>2]=M;if((b&255)>31){n=0;return n|0}k[a+32>>2]=b&255;n=1;return n|0}function Fe(a,b,c){a=a|0;b=b|0;c=c|0;var d=0,e=0,f=0,g=0,h=0,i=0,j=0,l=0,m=0;m=k[b>>2]|0;f=k[c>>2]|0;g=f-m>>2;h=a+8|0;d=k[h>>2]|0;j=k[a>>2]|0;b=m;i=j;l=f;if(g>>>0<=d-j>>2>>>0){a=a+4|0;h=(k[a>>2]|0)-j>>2;e=g>>>0>h>>>0;h=e?b+(h<<2)|0:f;b=h-m|0;d=b>>2;if(d|0)Xi(j|0,m|0,b|0)|0;d=i+(d<<2)|0;if(!e){b=k[a>>2]|0;if((b|0)==(d|0))return;k[a>>2]=b+(~((b+-4-d|0)>>>2)<<2);return}g=k[c>>2]|0;b=h;if((b|0)==(g|0))return;f=k[a>>2]|0;e=g+-4-h|0;d=f;while(1){k[d>>2]=k[b>>2];b=b+4|0;if((b|0)==(g|0))break;else d=d+4|0}k[a>>2]=f+((e>>>2)+1<<2);return}f=j;if(j){d=a+4|0;e=k[d>>2]|0;if((e|0)!=(i|0))k[d>>2]=e+(~((e+-4-j|0)>>>2)<<2);Vl(f);k[h>>2]=0;k[d>>2]=0;k[a>>2]=0;d=0}if(g>>>0>1073741823)$k(a);j=d-0|0;d=j>>1;d=j>>2>>>0<536870911?(d>>>0>>0?g:d):1073741823;if(d>>>0>1073741823)$k(a);f=vj(d<<2)|0;g=a+4|0;k[g>>2]=f;k[a>>2]=f;k[h>>2]=f+(d<<2);if((b|0)==(l|0))return;e=l+-4-m|0;d=f;while(1){k[d>>2]=k[b>>2];b=b+4|0;if((b|0)==(l|0))break;else d=d+4|0}k[g>>2]=f+((e>>>2)+1<<2);return}function Ge(a,b){a=a|0;b=b|0;var c=0,d=0,e=0,f=0,g=0,h=0,i=0,j=0,l=0,m=0,n=0,o=0;o=r;r=r+32|0;l=o;m=a+8|0;d=k[m>>2]|0;n=a+4|0;f=k[n>>2]|0;if(d-f>>2>>>0>=b>>>0){Zh(f|0,0,b<<2|0)|0;k[n>>2]=f+(b<<2);r=o;return}e=k[a>>2]|0;c=(f-e>>2)+b|0;if(c>>>0>1073741823)$k(a);j=d-e|0;g=j>>1;g=j>>2>>>0<536870911?(g>>>0>>0?c:g):1073741823;c=f-e>>2;k[l+12>>2]=0;k[l+16>>2]=a+8;do if(g)if(g>>>0>1073741823){o=Ma(4)|0;Fl(o);xa(o|0,976,90)}else{d=vj(g<<2)|0;break}else d=0;while(0);k[l>>2]=d;e=d+(c<<2)|0;i=l+8|0;h=l+4|0;k[h>>2]=e;j=l+12|0;k[j>>2]=d+(g<<2);Zh(e|0,0,b<<2|0)|0;k[i>>2]=e+(b<<2);e=k[a>>2]|0;c=k[n>>2]|0;if((c|0)==(e|0)){f=h;d=k[h>>2]|0}else{d=k[h>>2]|0;do{c=c+-4|0;b=k[c>>2]|0;k[c>>2]=0;k[d+-4>>2]=b;d=(k[h>>2]|0)+-4|0;k[h>>2]=d}while((c|0)!=(e|0));f=h;e=k[a>>2]|0;c=k[n>>2]|0}k[a>>2]=d;k[f>>2]=e;k[n>>2]=k[i>>2];k[i>>2]=c;n=k[m>>2]|0;k[m>>2]=k[j>>2];k[j>>2]=n;k[l>>2]=k[f>>2];Eg(l);r=o;return}function He(a,b,c){a=a|0;b=b|0;c=c|0;var d=0,e=0,f=0,g=0,h=0,i=0,j=0,l=0,m=0;m=b;g=c-m>>2;h=a+8|0;d=k[h>>2]|0;l=k[a>>2]|0;i=l;if(g>>>0<=d-l>>2>>>0){j=a+4|0;h=(k[j>>2]|0)-l>>2;g=g>>>0>h>>>0;h=b+(h<<2)|0;f=g?h:c;a=f;d=a-m|0;e=d>>2;if(e|0)Xi(l|0,b|0,d|0)|0;d=i+(e<<2)|0;if(!g){b=k[j>>2]|0;if((b|0)==(d|0))return;k[j>>2]=b+(~((b+-4-d|0)>>>2)<<2);return}if((f|0)==(c|0))return;f=k[j>>2]|0;e=((c+-4-a|0)>>>2)+1|0;b=h;d=f;while(1){k[d>>2]=k[b>>2];b=b+4|0;if((b|0)==(c|0))break;else d=d+4|0}k[j>>2]=f+(e<<2);return}f=l;if(l){d=a+4|0;e=k[d>>2]|0;if((e|0)!=(i|0))k[d>>2]=e+(~((e+-4-l|0)>>>2)<<2);Vl(f);k[h>>2]=0;k[d>>2]=0;k[a>>2]=0;d=0}if(g>>>0>1073741823)$k(a);l=d-0|0;d=l>>1;d=l>>2>>>0<536870911?(d>>>0>>0?g:d):1073741823;if(d>>>0>1073741823)$k(a);f=vj(d<<2)|0;g=a+4|0;k[g>>2]=f;k[a>>2]=f;k[h>>2]=f+(d<<2);if((b|0)==(c|0))return;e=((c+-4-m|0)>>>2)+1|0;d=f;while(1){k[d>>2]=k[b>>2];b=b+4|0;if((b|0)==(c|0))break;else d=d+4|0}k[g>>2]=f+(e<<2);return}function Ie(a,b,c){a=a|0;b=b|0;c=c|0;var d=0,e=0,f=0,g=0,h=0,i=0,j=0,l=0,m=0;m=b;g=c-m>>2;h=a+8|0;d=k[h>>2]|0;l=k[a>>2]|0;i=l;if(g>>>0<=d-l>>2>>>0){j=a+4|0;h=(k[j>>2]|0)-l>>2;g=g>>>0>h>>>0;h=b+(h<<2)|0;f=g?h:c;a=f;d=a-m|0;e=d>>2;if(e|0)Xi(l|0,b|0,d|0)|0;d=i+(e<<2)|0;if(!g){b=k[j>>2]|0;if((b|0)==(d|0))return;k[j>>2]=b+(~((b+-4-d|0)>>>2)<<2);return}if((f|0)==(c|0))return;f=k[j>>2]|0;e=c+-4-a|0;b=h;d=f;while(1){k[d>>2]=k[b>>2];b=b+4|0;if((b|0)==(c|0))break;else d=d+4|0}k[j>>2]=f+((e>>>2)+1<<2);return}f=l;if(l){d=a+4|0;e=k[d>>2]|0;if((e|0)!=(i|0))k[d>>2]=e+(~((e+-4-l|0)>>>2)<<2);Vl(f);k[h>>2]=0;k[d>>2]=0;k[a>>2]=0;d=0}if(g>>>0>1073741823)$k(a);l=d-0|0;d=l>>1;d=l>>2>>>0<536870911?(d>>>0>>0?g:d):1073741823;if(d>>>0>1073741823)$k(a);f=vj(d<<2)|0;g=a+4|0;k[g>>2]=f;k[a>>2]=f;k[h>>2]=f+(d<<2);if((b|0)==(c|0))return;e=c+-4-m|0;d=f;while(1){k[d>>2]=k[b>>2];b=b+4|0;if((b|0)==(c|0))break;else d=d+4|0}k[g>>2]=f+((e>>>2)+1<<2);return}function Je(a,b){a=a|0;b=b|0;var c=0,d=0,e=0,f=0,g=0,h=0,i=0,j=0,l=0,m=0;j=a+8|0;d=k[j>>2]|0;l=a+4|0;f=k[l>>2]|0;e=f;if(((d-f|0)/12|0)>>>0>=b>>>0){Zh(f|0,0,b*12|0)|0;k[l>>2]=e+(b*12|0);return}h=k[a>>2]|0;c=((f-h|0)/12|0)+b|0;if(c>>>0>357913941)$k(a);i=h;d=(d-h|0)/12|0;g=d<<1;g=d>>>0<178956970?(g>>>0>>0?c:g):357913941;c=(f-h|0)/12|0;do if(g)if(g>>>0>357913941){l=Ma(4)|0;Fl(l);xa(l|0,976,90)}else{f=vj(g*12|0)|0;break}else f=0;while(0);c=f+(c*12|0)|0;d=c;g=f+(g*12|0)|0;Zh(c|0,0,b*12|0)|0;f=c+(b*12|0)|0;if((e|0)!=(i|0)){do{h=c+-12|0;b=e;e=e+-12|0;k[h>>2]=0;m=c+-8|0;k[m>>2]=0;k[c+-4>>2]=0;k[h>>2]=k[e>>2];h=b+-8|0;k[m>>2]=k[h>>2];b=b+-4|0;k[c+-4>>2]=k[b>>2];k[b>>2]=0;k[h>>2]=0;k[e>>2]=0;c=d+-12|0;d=c}while((e|0)!=(i|0));h=k[a>>2]|0;e=k[l>>2]|0}k[a>>2]=d;k[l>>2]=f;k[j>>2]=g;b=h;if((e|0)!=(b|0))do{c=e;e=e+-12|0;f=k[e>>2]|0;g=f;if(f|0){c=c+-8|0;d=k[c>>2]|0;if((d|0)!=(f|0))k[c>>2]=d+(~((d+-4-g|0)>>>2)<<2);Vl(f)}}while((e|0)!=(b|0));if(!h)return;Vl(h);return}function Ke(a,b,c){a=a|0;b=b|0;c=c|0;var d=0,e=0,f=0,g=0,h=0,i=0,j=0,l=0,m=0;h=a+8|0;d=k[h>>2]|0;g=k[a>>2]|0;i=g;if(d-g>>3>>>0>=b>>>0){h=a+4|0;a=k[h>>2]|0;f=a-g>>3;g=f>>>0>>0;d=g?f:b;if(d|0){e=i;while(1){m=c;l=k[m+4>>2]|0;j=e;k[j>>2]=k[m>>2];k[j+4>>2]=l;d=d+-1|0;if(!d)break;else e=e+8|0}}if(g){e=b-f|0;d=e;f=a;while(1){j=c;l=k[j+4>>2]|0;m=f;k[m>>2]=k[j>>2];k[m+4>>2]=l;d=d+-1|0;if(!d)break;else f=f+8|0}k[h>>2]=a+(e<<3);return}else{d=i+(b<<3)|0;if((a|0)==(d|0))return;k[h>>2]=a+(~((a+-8-d|0)>>>3)<<3);return}}f=g;if(g){d=a+4|0;e=k[d>>2]|0;if((e|0)!=(i|0))k[d>>2]=e+(~((e+-8-g|0)>>>3)<<3);Vl(f);k[h>>2]=0;k[d>>2]=0;k[a>>2]=0;d=0}if(b>>>0>536870911)$k(a);m=d-0|0;d=m>>2;d=m>>3>>>0<268435455?(d>>>0>>0?b:d):536870911;if(d>>>0>536870911)$k(a);f=vj(d<<3)|0;g=a+4|0;k[g>>2]=f;k[a>>2]=f;k[h>>2]=f+(d<<3);d=b;e=f;while(1){j=c;l=k[j+4>>2]|0;m=e;k[m>>2]=k[j>>2];k[m+4>>2]=l;d=d+-1|0;if(!d)break;else e=e+8|0}k[g>>2]=f+(b<<3);return}function Le(a,b){a=a|0;b=b|0;var c=0,d=0,e=0,f=0,g=0,h=0,j=0,l=0,m=0,n=0,p=0,q=0,s=0,t=0,u=Pa,v=Pa,w=0,x=0;t=r;r=r+16|0;h=t;n=k[a+32>>2]|0;q=a+8|0;c=i[(k[q>>2]|0)+24>>0]|0;m=c<<24>>24;p=m<<2;s=Sl(m>>>0>1073741823?-1:m<<2)|0;Vk(h);Kj(h,da(o[a+40>>2]),(1<>24>0){e=0;f=0;a=0}else{a=0;c=0;while(1){Mh((k[k[(k[q>>2]|0)+64>>2]>>2]|0)+c|0,s|0,p|0)|0;a=a+1|0;if((a|0)==(b|0))break;else c=c+p|0}Tl(s);r=t;return 1}a:while(1){d=0;c=k[n>>2]|0;do{if((k[j>>2]|0)-c>>2>>>0<=a>>>0){a=5;break a}x=a;a=a+1|0;x=k[c+(x<<2)>>2]|0;w=(x|0)<0;u=da((w?0-x|0:x)|0);u=da(da(o[l>>2])*u);v=da(-u);u=da(da(o[h>>2])*(w?v:u));u=da(da(o[(k[g>>2]|0)+(d<<2)>>2])+u);o[s+(d<<2)>>2]=u;d=d+1|0}while((d|0)<(m|0));Mh((k[k[(k[q>>2]|0)+64>>2]>>2]|0)+f|0,s|0,p|0)|0;e=e+1|0;if(e>>>0>=b>>>0){a=9;break}else f=f+p|0}if((a|0)==5)_k(n);else if((a|0)==9){Tl(s);r=t;return 1}return 0}function Me(a){a=a|0;var b=0,c=0,d=0,e=0,f=0,g=0,h=0,i=0,j=0,l=0,m=0;m=r;r=r+16|0;i=m+4|0;j=m;l=a+8|0;h=a+100|0;b=k[l>>2]|0;b=(k[b+28>>2]|0)-(k[b+24>>2]|0)>>2;k[i>>2]=0;c=a+104|0;f=k[c>>2]|0;e=k[h>>2]|0;d=f-e>>2;if(b>>>0<=d>>>0){if(b>>>0>>0?(g=e+(b<<2)|0,(f|0)!=(g|0)):0)k[c>>2]=f+(~((f+-4-g|0)>>>2)<<2)}else Of(h,b-d|0,i);d=a+120|0;a=k[d>>2]|0;if(!a){h=k[l>>2]|0;h=(k[h+4>>2]|0)-(k[h>>2]|0)|0;b=(h|0)/12|0;if((h|0)<=0){r=m;return 1}a=0;do{k[j>>2]=a*3;k[i>>2]=k[j>>2];Cb(l,i);a=a+1|0}while((a|0)<(b|0));r=m;return 1}else{c=k[a>>2]|0;if((k[a+4>>2]|0)==(c|0)){r=m;return 1}b=0;a=c;do{k[j>>2]=k[a+(b<<2)>>2];k[i>>2]=k[j>>2];Cb(l,i);b=b+1|0;h=k[d>>2]|0;a=k[h>>2]|0}while(b>>>0<(k[h+4>>2]|0)-a>>2>>>0);r=m;return 1}return 0}function Ne(a,b){a=a|0;b=b|0;var c=0,d=0,e=0,f=0,g=0,h=0,i=0,j=0,l=0,m=0;k[a+4>>2]=k[b+4>>2];h=a+8|0;i=b+8|0;if((a|0)==(b|0))return a|0;j=b+12|0;c=k[j>>2]|0;if(!c)c=0;else{e=a+16|0;do if(c>>>0>k[e>>2]<<5>>>0){d=k[h>>2]|0;if(d){Vl(d);k[h>>2]=0;k[e>>2]=0;k[a+12>>2]=0;c=k[j>>2]|0}if((c|0)<0)$k(h);else{f=((c+-1|0)>>>5)+1|0;g=vj(f<<2)|0;k[h>>2]=g;k[a+12>>2]=0;k[e>>2]=f;f=k[j>>2]|0;break}}else{f=c;g=k[h>>2]|0}while(0);Xi(g|0,k[i>>2]|0,((f+-1|0)>>>5<<2)+4|0)|0;c=k[j>>2]|0}k[a+12>>2]=c;g=a+20|0;h=b+20|0;e=b+24|0;c=k[e>>2]|0;if(!c)c=0;else{f=a+28|0;do if(c>>>0>k[f>>2]<<5>>>0){d=k[g>>2]|0;if(d){Vl(d);k[g>>2]=0;k[f>>2]=0;k[a+24>>2]=0;c=k[e>>2]|0}if((c|0)<0)$k(g);else{l=((c+-1|0)>>>5)+1|0;m=vj(l<<2)|0;k[g>>2]=m;k[a+24>>2]=0;k[f>>2]=l;l=k[e>>2]|0;break}}else{l=c;m=k[g>>2]|0}while(0);Xi(m|0,k[h>>2]|0,((l+-1|0)>>>5<<2)+4|0)|0;c=k[e>>2]|0}k[a+24>>2]=c;return a|0}function Oe(a,b,c){a=a|0;b=b|0;c=c|0;var d=0,e=0,f=0,g=0,h=0,i=0,j=0,l=0,m=0;l=c;e=b;g=l-e|0;j=g>>2;h=a+8|0;d=k[h>>2]|0;f=k[a>>2]|0;m=f;if(j>>>0>d-f>>2>>>0){e=f;if(f){d=a+4|0;c=k[d>>2]|0;if((c|0)!=(m|0))k[d>>2]=c+(~((c+-4-f|0)>>>2)<<2);Vl(e);k[h>>2]=0;k[d>>2]=0;k[a>>2]=0;d=0}if(j>>>0>1073741823)$k(a);m=d-0|0;d=m>>1;d=m>>2>>>0<536870911?(d>>>0>>0?j:d):1073741823;if(d>>>0>1073741823)$k(a);c=vj(d<<2)|0;e=a+4|0;k[e>>2]=c;k[a>>2]=c;k[h>>2]=c+(d<<2);if((g|0)<=0)return;Mh(c|0,b|0,g|0)|0;k[e>>2]=c+(j<<2);return}i=a+4|0;h=k[i>>2]|0;a=h-f>>2;g=j>>>0>a>>>0;a=g?b+(a<<2)|0:c;f=h;if((a|0)==(b|0))d=m;else{e=a+-4-e|0;d=b;c=m;while(1){k[c>>2]=k[d>>2];d=d+4|0;if((d|0)==(a|0))break;else c=c+4|0}d=m+((e>>>2)+1<<2)|0}if(g){d=l-a|0;if((d|0)<=0)return;Mh(h|0,a|0,d|0)|0;k[i>>2]=(k[i>>2]|0)+(d>>2<<2);return}else{if((f|0)==(d|0))return;k[i>>2]=f+(~((f+-4-d|0)>>>2)<<2);return}}function Pe(a,b,c){a=a|0;b=b|0;c=c|0;var d=0,e=0,f=0,g=0,h=0,i=0,j=0,l=0,m=0,n=0,o=0,p=0,q=0,s=0;q=r;r=r+48|0;n=q+40|0;m=q+32|0;i=q+8|0;j=q;l=q+24|0;p=q+16|0;f=a+4|0;s=k[f>>2]|0;d=b;o=k[d>>2]|0;d=k[d+4>>2]|0;g=c;e=k[g>>2]|0;g=k[g+4>>2]|0;h=e-o<<3;k[f>>2]=s-d+g+h;f=(k[a>>2]|0)+(s>>>5<<2)|0;c=s&31;b=f;if((d|0)!=(c|0)){s=i;k[s>>2]=o;k[s+4>>2]=d;s=j;k[s>>2]=e;k[s+4>>2]=g;k[l>>2]=b;k[l+4>>2]=c;k[m>>2]=k[i>>2];k[m+4>>2]=k[i+4>>2];k[n>>2]=k[j>>2];k[n+4>>2]=k[j+4>>2];Md(p,m,n,l);r=q;return}c=g-d+h|0;g=o;if((c|0)>0){if(!d){d=0;b=o}else{b=32-d|0;s=(c|0)<(b|0)?c:b;b=-1>>>(b-s|0)&-1<>2]=k[f>>2]&~b|k[g>>2]&b;b=s+d|0;g=g+4|0;c=c-s|0;d=b&31;f=f+(b>>>5<<2)|0;b=g}e=c>>>5;Xi(f|0,b|0,e<<2|0)|0;a=c-(e<<5)|0;c=f+(e<<2)|0;b=c;if((a|0)>0){d=-1>>>(32-a|0);k[c>>2]=k[c>>2]&~d|k[g+(e<<2)>>2]&d;d=a}}k[p>>2]=b;k[p+4>>2]=d;r=q;return}function Qe(a,b,c){a=a|0;b=b|0;c=c|0;var d=0,e=0,f=0,g=0,h=0,j=0,l=0,m=0,n=0,o=0,p=0,q=0;d=k[c>>2]|0;m=k[c+4>>2]|0;a:do if((d|0)==(m|0)){n=0;o=a+8|0;p=a+4|0}else{j=k[b>>2]|0;l=a+4|0;h=a+8|0;c=0;b:while(1){f=k[d>>2]|0;g=k[j+(f<<2)>>2]|0;if((g|0)>=(c|0)){c=k[l>>2]|0;b=(k[h>>2]|0)-c|0;if((b|0)>0){a=b>>2;b=0;do{e=k[c+(b<<2)>>2]|0;if(i[e+84>>0]|0)break b;e=k[e+68>>2]|0;k[e+(g<<2)>>2]=k[e+(f<<2)>>2];b=b+1|0}while((b|0)<(a|0))}c=g+1|0}d=d+4|0;if((d|0)==(m|0)){n=c;o=h;p=l;break a}}Ka(13384,13403,80,13435)}while(0);b=k[o>>2]|0;c=k[p>>2]|0;if((b-c|0)>0)h=0;else return;do{d=k[c+(h<<2)>>2]|0;i[d+84>>0]=0;a=d+68|0;d=d+72|0;g=k[d>>2]|0;f=k[a>>2]|0;e=g-f>>2;if(n>>>0<=e>>>0){if(n>>>0>>0?(q=f+(n<<2)|0,(g|0)!=(q|0)):0)k[d>>2]=g+(~((g+-4-q|0)>>>2)<<2)}else{Of(a,n-e|0,3140);c=k[p>>2]|0;b=k[o>>2]|0}h=h+1|0}while((h|0)<(b-c>>2|0));return}function Re(a,b){a=a|0;b=b|0;var c=0,d=0,e=0,f=0,g=0,h=0;e=k[b>>2]|0;f=k[a>>2]|0;h=f+(e>>>5<<2)|0;k[h>>2]=k[h>>2]|1<<(e&31);h=k[a+64>>2]|0;d=(e|0)<0;b=e+1|0;if(!d?(c=((b|0)%3|0|0)==0?e+-2|0:b,(c|0)>=0):0)b=k[(k[h>>2]|0)+(((c>>>0)/3|0)*12|0)+(((c>>>0)%3|0)<<2)>>2]|0;else b=-1073741824;g=a+12|0;c=(k[g>>2]|0)+(b>>>5<<2)|0;k[c>>2]=k[c>>2]|1<<(b&31);if(d){h=(k[g>>2]|0)+402653184|0;k[h>>2]=k[h>>2]|1;return}b=(((e>>>0)%3|0|0)==0?2:-1)+e|0;if((b|0)<0)b=-1073741824;else b=k[(k[h>>2]|0)+(((b>>>0)/3|0)*12|0)+(((b>>>0)%3|0)<<2)>>2]|0;c=(k[g>>2]|0)+(b>>>5<<2)|0;k[c>>2]=k[c>>2]|1<<(b&31);if(d)return;c=k[(k[h+12>>2]|0)+(e<<2)>>2]|0;if((c|0)<=-1)return;i[a+24>>0]=0;b=f+(c>>>5<<2)|0;k[b>>2]=k[b>>2]|1<<(c&31);b=c+1|0;b=((b|0)%3|0|0)==0?c+-2|0:b;if((b|0)<0)b=-1073741824;else b=k[(k[h>>2]|0)+(((b>>>0)/3|0)*12|0)+(((b>>>0)%3|0)<<2)>>2]|0;a=(k[g>>2]|0)+(b>>>5<<2)|0;k[a>>2]=k[a>>2]|1<<(b&31);b=(((c>>>0)%3|0|0)==0?2:-1)+c|0;if((b|0)<0)b=-1073741824;else b=k[(k[h>>2]|0)+(((b>>>0)/3|0)*12|0)+(((b>>>0)%3|0)<<2)>>2]|0;h=(k[g>>2]|0)+(b>>>5<<2)|0;k[h>>2]=k[h>>2]|1<<(b&31);return}function Se(a,b){a=a|0;b=b|0;var c=0,d=0,e=0,f=0,g=0,h=0,i=0,j=0,l=0,m=0,n=0,o=0;h=a+48|0;c=k[h>>2]|0;if(!c){o=0;return o|0}o=a+36|0;k[c+4>>2]=o;if(!(Va[k[(k[c>>2]|0)+12>>2]&127](c)|0)){o=0;return o|0}m=a+4|0;n=a+8|0;c=k[n>>2]|0;d=k[m>>2]|0;a:do if((c-d|0)>0){g=a+16|0;f=0;c=d;while(1){e=k[(k[g>>2]|0)+4>>2]|0;c=k[c+(f<<2)>>2]|0;if((c|0)<=-1){c=9;break}d=k[e+4>>2]|0;if(((k[e+8>>2]|0)-d>>2|0)<=(c|0)){c=11;break}e=k[h>>2]|0;f=f+1|0;if(!(Za[k[(k[e>>2]|0)+8>>2]&127](e,k[d+(c<<2)>>2]|0)|0)){l=0;c=15;break}d=k[n>>2]|0;c=k[m>>2]|0;if((f|0)>=(d-c>>2|0)){i=c;j=d;break a}}if((c|0)==9)Ka(12941,12957,62,12985);else if((c|0)==11)Ka(12995,12957,63,12985);else if((c|0)==15)return l|0}else{i=d;j=c}while(0);if((j-i|0)<=0){o=1;return o|0}d=a+24|0;c=0;while(1){l=k[(k[d>>2]|0)+(c<<2)>>2]|0;c=c+1|0;if(!(Ra[k[(k[l>>2]|0)+16>>2]&31](l,o,b)|0)){l=0;c=15;break}if((c|0)>=((k[n>>2]|0)-(k[m>>2]|0)>>2|0)){l=1;c=15;break}}if((c|0)==15)return l|0;return 0}function Te(a,b){a=a|0;b=b|0;var c=0,d=0,e=0,f=0,g=0,h=0,i=0,l=0;i=j[b>>1]|0;l=j[b+2>>1]|0;h=j[b+4>>1]|0;g=j[b+6>>1]|0;b=(((i&65535^318)+239^l&65535)+239^h&65535)+239^g&65535;d=k[a+4>>2]|0;if(!d){l=0;return l|0}e=d+-1|0;c=(e&d|0)==0;if(c)f=b&e;else f=(b>>>0)%(d>>>0)|0;b=k[(k[a>>2]|0)+(f<<2)>>2]|0;if(!b){l=0;return l|0}b=k[b>>2]|0;if(!b){l=0;return l|0}if(c){while(1){if((k[b+4>>2]&e|0)!=(f|0)){b=0;a=20;break}if((((j[b+8>>1]|0)==i<<16>>16?(j[b+10>>1]|0)==l<<16>>16:0)?(j[b+12>>1]|0)==h<<16>>16:0)?(j[b+14>>1]|0)==g<<16>>16:0){a=20;break}b=k[b>>2]|0;if(!b){b=0;a=20;break}}if((a|0)==20)return b|0}else{while(1){if((((k[b+4>>2]|0)>>>0)%(d>>>0)|0|0)!=(f|0)){b=0;a=20;break}if((((j[b+8>>1]|0)==i<<16>>16?(j[b+10>>1]|0)==l<<16>>16:0)?(j[b+12>>1]|0)==h<<16>>16:0)?(j[b+14>>1]|0)==g<<16>>16:0){a=20;break}b=k[b>>2]|0;if(!b){b=0;a=20;break}}if((a|0)==20)return b|0}return 0}function Ue(a,b,c){a=a|0;b=b|0;c=c|0;var d=0,e=0,f=0,g=0,h=0,i=0,j=0,l=0,m=0,n=0,o=0,p=0;p=r;r=r+48|0;m=p+16|0;l=p;h=p+32|0;n=a+28|0;g=k[n>>2]|0;k[h>>2]=g;o=a+20|0;g=(k[o>>2]|0)-g|0;k[h+4>>2]=g;k[h+8>>2]=b;k[h+12>>2]=c;i=a+60|0;j=a+44|0;f=2;b=g+c|0;while(1){if(!(k[4386]|0)){k[m>>2]=k[i>>2];k[m+4>>2]=h;k[m+8>>2]=f;e=tk(Da(146,m|0)|0)|0}else{wa(92,a|0);k[l>>2]=k[i>>2];k[l+4>>2]=h;k[l+8>>2]=f;e=tk(Da(146,l|0)|0)|0;ta(0)}if((b|0)==(e|0)){b=6;break}if((e|0)<0){b=8;break}b=b-e|0;d=k[h+4>>2]|0;if(e>>>0<=d>>>0)if((f|0)==2){k[n>>2]=(k[n>>2]|0)+e;f=2;g=h}else g=h;else{g=k[j>>2]|0;k[n>>2]=g;k[o>>2]=g;e=e-d|0;f=f+-1|0;g=h+8|0;d=k[h+12>>2]|0}k[g>>2]=(k[g>>2]|0)+e;k[g+4>>2]=d-e;h=g}if((b|0)==6){m=k[j>>2]|0;k[a+16>>2]=m+(k[a+48>>2]|0);a=m;k[n>>2]=a;k[o>>2]=a}else if((b|0)==8){k[a+16>>2]=0;k[n>>2]=0;k[o>>2]=0;k[a>>2]=k[a>>2]|32;if((f|0)==2)c=0;else c=c-(k[h+4>>2]|0)|0}r=p;return c|0}function Ve(a,b){a=a|0;b=b|0;var c=0,d=0,e=0,f=0,g=0,h=0,j=0,l=0;j=i[b>>0]|0;l=i[b+1>>0]|0;h=i[b+2>>0]|0;g=i[b+3>>0]|0;b=(((j&255^318)+239^l&255)+239^h&255)+239^g&255;d=k[a+4>>2]|0;if(!d){l=0;return l|0}e=d+-1|0;c=(e&d|0)==0;if(c)f=b&e;else f=(b>>>0)%(d>>>0)|0;b=k[(k[a>>2]|0)+(f<<2)>>2]|0;if(!b){l=0;return l|0}b=k[b>>2]|0;if(!b){l=0;return l|0}if(c){while(1){if((k[b+4>>2]&e|0)!=(f|0)){b=0;a=20;break}if((((i[b+8>>0]|0)==j<<24>>24?(i[b+9>>0]|0)==l<<24>>24:0)?(i[b+10>>0]|0)==h<<24>>24:0)?(i[b+11>>0]|0)==g<<24>>24:0){a=20;break}b=k[b>>2]|0;if(!b){b=0;a=20;break}}if((a|0)==20)return b|0}else{while(1){if((((k[b+4>>2]|0)>>>0)%(d>>>0)|0|0)!=(f|0)){b=0;a=20;break}if((((i[b+8>>0]|0)==j<<24>>24?(i[b+9>>0]|0)==l<<24>>24:0)?(i[b+10>>0]|0)==h<<24>>24:0)?(i[b+11>>0]|0)==g<<24>>24:0){a=20;break}b=k[b>>2]|0;if(!b){b=0;a=20;break}}if((a|0)==20)return b|0}return 0}function We(a,b,c){a=a|0;b=b|0;c=c|0;var d=0,e=0,f=0,g=0,h=0,i=0;h=a+8|0;d=k[h>>2]|0;g=k[a>>2]|0;i=g;if(d-g>>2>>>0>=b>>>0){h=a+4|0;a=k[h>>2]|0;f=a-g>>2;g=f>>>0>>0;d=g?f:b;if(d|0){e=i;while(1){k[e>>2]=k[c>>2];d=d+-1|0;if(!d)break;else e=e+4|0}}if(g){e=b-f|0;d=e;f=a;while(1){k[f>>2]=k[c>>2];d=d+-1|0;if(!d)break;else f=f+4|0}k[h>>2]=a+(e<<2);return}else{d=i+(b<<2)|0;if((a|0)==(d|0))return;k[h>>2]=a+(~((a+-4-d|0)>>>2)<<2);return}}else{f=g;if(g){d=a+4|0;e=k[d>>2]|0;if((e|0)!=(i|0))k[d>>2]=e+(~((e+-4-g|0)>>>2)<<2);Vl(f);k[h>>2]=0;k[d>>2]=0;k[a>>2]=0;d=0}if(b>>>0>1073741823)$k(a);i=d-0|0;d=i>>1;d=i>>2>>>0<536870911?(d>>>0>>0?b:d):1073741823;if(d>>>0>1073741823)$k(a);f=vj(d<<2)|0;g=a+4|0;k[g>>2]=f;k[a>>2]=f;k[h>>2]=f+(d<<2);d=b;e=f;while(1){k[e>>2]=k[c>>2];d=d+-1|0;if(!d)break;else e=e+4|0}k[g>>2]=f+(b<<2);return}}function Xe(a,b){a=a|0;b=b|0;var c=0,d=0,e=0,f=0,g=0,h=0,i=0,j=0;h=k[b>>2]|0;i=k[b+4>>2]|0;j=k[b+8>>2]|0;g=k[b+12>>2]|0;b=(((h^318)+239^i)+239^j)+239^g;d=k[a+4>>2]|0;if(!d){j=0;return j|0}e=d+-1|0;c=(e&d|0)==0;if(c)f=b&e;else f=(b>>>0)%(d>>>0)|0;b=k[(k[a>>2]|0)+(f<<2)>>2]|0;if(!b){j=0;return j|0}b=k[b>>2]|0;if(!b){j=0;return j|0}if(c){while(1){if((k[b+4>>2]&e|0)!=(f|0)){b=0;a=20;break}if((((k[b+8>>2]|0)==(h|0)?(k[b+12>>2]|0)==(i|0):0)?(k[b+16>>2]|0)==(j|0):0)?(k[b+20>>2]|0)==(g|0):0){a=20;break}b=k[b>>2]|0;if(!b){b=0;a=20;break}}if((a|0)==20)return b|0}else{while(1){if((((k[b+4>>2]|0)>>>0)%(d>>>0)|0|0)!=(f|0)){b=0;a=20;break}if((((k[b+8>>2]|0)==(h|0)?(k[b+12>>2]|0)==(i|0):0)?(k[b+16>>2]|0)==(j|0):0)?(k[b+20>>2]|0)==(g|0):0){a=20;break}b=k[b>>2]|0;if(!b){b=0;a=20;break}}if((a|0)==20)return b|0}return 0}function Ye(a){a=a|0;var b=0,c=0,d=0,e=0,f=0,g=0,h=0;b=k[a+20>>2]|0;f=b+8|0;h=k[f+4>>2]|0;c=b+16|0;e=c;d=k[e>>2]|0;e=k[e+4>>2]|0;if(!((h|0)>(e|0)|((h|0)==(e|0)?(k[f>>2]|0)>>>0>d>>>0:0))){h=0;return h|0}f=i[(k[b>>2]|0)+d>>0]|0;b=mk(d|0,e|0,1,0)|0;d=c;k[d>>2]=b;k[d+4>>2]=M;d=a+32|0;b=k[d>>2]|0;k[d>>2]=0;if(b|0)Ta[k[(k[b>>2]|0)+4>>2]&127](b);switch(f<<24>>24){case 0:{b=vj(336)|0;dh(b);c=k[d>>2]|0;k[d>>2]=b;if(c){Ta[k[(k[c>>2]|0)+4>>2]&127](c);g=11}break}case 1:{b=vj(376)|0;nh(b);c=k[d>>2]|0;k[d>>2]=b;if(c){Ta[k[(k[c>>2]|0)+4>>2]&127](c);g=11}break}case 2:{b=vj(392)|0;vg(b);c=k[d>>2]|0;k[d>>2]=b;if(c){Ta[k[(k[c>>2]|0)+4>>2]&127](c);g=11}break}default:g=11}if((g|0)==11){b=k[d>>2]|0;if(!b){h=0;return h|0}}h=Za[k[(k[b>>2]|0)+8>>2]&127](b,a)|0;return h|0}function Ze(a,b,c){a=a|0;b=b|0;c=c|0;var d=0,e=0,f=0,g=0,h=0,i=0,j=0,l=0,m=0;i=c;g=b;f=i-g|0;j=f>>2;h=a+8|0;d=k[h>>2]|0;m=k[a>>2]|0;l=m;if(j>>>0<=d-m>>2>>>0){h=a+4|0;a=(k[h>>2]|0)-m>>2;f=j>>>0>a>>>0;a=f?b+(a<<2)|0:c;e=a;d=e-g|0;c=d>>2;if(c|0)Xi(m|0,b|0,d|0)|0;c=l+(c<<2)|0;if(f){d=i-e|0;if((d|0)<=0)return;Mh(k[h>>2]|0,a|0,d|0)|0;k[h>>2]=(k[h>>2]|0)+(d>>2<<2);return}else{d=k[h>>2]|0;if((d|0)==(c|0))return;k[h>>2]=d+(~((d+-4-c|0)>>>2)<<2);return}}e=m;if(m){d=a+4|0;c=k[d>>2]|0;if((c|0)!=(l|0))k[d>>2]=c+(~((c+-4-m|0)>>>2)<<2);Vl(e);k[h>>2]=0;k[d>>2]=0;k[a>>2]=0;d=0}if(j>>>0>1073741823)$k(a);m=d-0|0;d=m>>1;d=m>>2>>>0<536870911?(d>>>0>>0?j:d):1073741823;if(d>>>0>1073741823)$k(a);c=vj(d<<2)|0;e=a+4|0;k[e>>2]=c;k[a>>2]=c;k[h>>2]=c+(d<<2);if((f|0)<=0)return;Mh(c|0,b|0,f|0)|0;k[e>>2]=c+(j<<2);return}function _e(a){a=a|0;var b=0,c=0,d=0,e=0,f=0,g=0,h=0,j=0;h=a+20|0;e=k[h>>2]|0;g=e+8|0;f=k[g+4>>2]|0;b=e+16|0;d=b;c=k[d>>2]|0;d=k[d+4>>2]|0;if(!((f|0)>(d|0)|((f|0)==(d|0)?(k[g>>2]|0)>>>0>c>>>0:0))){h=0;return h|0}e=i[(k[e>>2]|0)+c>>0]|0;f=mk(c|0,d|0,1,0)|0;g=b;k[g>>2]=f;k[g+4>>2]=M;g=e&255;e=e<<24>>24==0;a:do if(!e){b=0;while(1){if(!(Za[k[(k[a>>2]|0)+16>>2]&127](a,b)|0)){b=0;break}b=b+1|0;if((b|0)>=(g|0))break a}return b|0}while(0);f=a+8|0;b=k[f>>2]|0;c=k[a+12>>2]|0;b:do if((b|0)!=(c|0)){d=a+4|0;while(1){j=k[b>>2]|0;b=b+4|0;if(!(Ra[k[(k[j>>2]|0)+8>>2]&31](j,a,k[d>>2]|0)|0)){b=0;break}if((b|0)==(c|0))break b}return b|0}while(0);c:do if(!e){b=0;while(1){j=k[(k[f>>2]|0)+(b<<2)>>2]|0;b=b+1|0;if(!(Za[k[(k[j>>2]|0)+12>>2]&127](j,k[h>>2]|0)|0)){b=0;break}if((b|0)>=(g|0))break c}return b|0}while(0);if(!(Va[k[(k[a>>2]|0)+28>>2]&127](a)|0)){j=0;return j|0}j=Va[k[(k[a>>2]|0)+32>>2]&127](a)|0;return j|0}function $e(a,b,c){a=a|0;b=b|0;c=c|0;var d=0,e=0,f=0,g=0,h=0,j=0;g=b;f=c-g|0;h=a+8|0;d=k[h>>2]|0;e=k[a>>2]|0;j=e;if(f>>>0>(d-e|0)>>>0){if(e){d=a+4|0;if((k[d>>2]|0)!=(j|0))k[d>>2]=j;Vl(j);k[h>>2]=0;k[d>>2]=0;k[a>>2]=0;d=0}if((f|0)<0)$k(a);j=d-0|0;e=j<<1;e=j>>>0<1073741823?(e>>>0>>0?f:e):2147483647;if((e|0)<0)$k(a);d=vj(e)|0;f=a+4|0;k[f>>2]=d;k[a>>2]=d;k[h>>2]=d+e;if((b|0)==(c|0))return;do{i[d>>0]=i[b>>0]|0;b=b+1|0;d=(k[f>>2]|0)+1|0;k[f>>2]=d}while((b|0)!=(c|0));return}else{h=a+4|0;d=(k[h>>2]|0)-e|0;a=f>>>0>d>>>0;d=b+d|0;f=a?d:c;e=f-g|0;if(e|0)Xi(j|0,b|0,e|0)|0;b=j+e|0;if(!a){if((k[h>>2]|0)==(b|0))return;k[h>>2]=b;return}if((f|0)==(c|0))return;b=k[h>>2]|0;do{i[b>>0]=i[d>>0]|0;d=d+1|0;b=(k[h>>2]|0)+1|0;k[h>>2]=b}while((d|0)!=(c|0));return}}function af(a,b,c){a=da(a);b=da(b);c=c|0;var d=Pa,e=Pa,f=Pa,g=0.0,h=0.0,i=0.0,j=0.0,k=0.0,l=0;d=da(a+b);e=da(a-b);if(!(e<=da(.5))|(!(e>=da(-.5))|(!(d>=da(.5))|!(d<=da(1.5))))){do if(!(d<=da(.5))){if(d>=da(1.5)){f=da(da(1.5)-b);b=da(da(1.5)-a);break}if(!(e<=da(-.5))){f=da(b+da(.5));b=da(a+da(-.5));break}else{f=da(b+da(-.5));b=da(a+da(.5));break}}else{f=da(da(.5)-b);b=da(da(.5)-a)}while(0);d=da(b+f);e=da(f-b);g=-1.0}else{g=1.0;f=a}a=da(+f*2.0+-1.0);f=da(+b*2.0+-1.0);j=+d*2.0;h=j+-1.0;j=3.0-j;k=+e*2.0;i=k+1.0;k=1.0-k;i=k>2]=da(0.0);a=da(0.0);b=da(0.0);l=c+4|0;o[l>>2]=b;c=c+8|0;o[c>>2]=a;return}else{e=da(da(1.0)/da(P(da(e))));b=da(d*e);o[c>>2]=b;b=da(f*e);a=da(a*e);l=c+4|0;o[l>>2]=a;l=c+8|0;o[l>>2]=b;return}}function bf(a,b){a=a|0;b=b|0;var c=0,d=0,e=0;c=a+8|0;k[c>>2]=k[b>>2];Ne(a+12|0,b+4|0)|0;d=a+44|0;e=b+36|0;k[d>>2]=k[e>>2];k[d+4>>2]=k[e+4>>2];k[d+8>>2]=k[e+8>>2];k[d+12>>2]=k[e+12>>2];if((c|0)==(b|0)){k[a+96>>2]=k[b+88>>2];return}else{Oe(a+60|0,k[b+52>>2]|0,k[b+56>>2]|0);Oe(a+72|0,k[b+64>>2]|0,k[b+68>>2]|0);Oe(a+84|0,k[b+76>>2]|0,k[b+80>>2]|0);k[a+96>>2]=k[b+88>>2];Ze(a+100|0,k[b+92>>2]|0,k[b+96>>2]|0);return}}function cf(a,b,c,d,e,f){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;f=f|0;var g=0,h=0,i=0,j=0,l=0,m=0,n=0,o=0,p=0;p=r;r=r+16|0;n=p+4|0;o=p;k[a+48>>2]=e;k[a+40>>2]=f;m=a+44|0;l=Sl(e>>>0>1073741823?-1:e<<2)|0;d=k[m>>2]|0;k[m>>2]=l;if(d|0)Tl(d);i=a+8|0;k[i>>2]=e;j=a+32|0;h=k[j>>2]|0;g=k[h+4>>2]|0;f=k[h>>2]|0;d=g-f|0;l=d>>2;if((d|0)<=0){r=p;return 1}d=0;while(1){if(g-f>>2>>>0<=d>>>0){d=8;break}k[o>>2]=k[f+(d<<2)>>2];k[n>>2]=k[o>>2];kc(a,n,c,d);h=$(d,e)|0;dg(i,k[m>>2]|0,b,c+(h<<2)|0,h);d=d+1|0;if((d|0)>=(l|0)){d=5;break}h=k[j>>2]|0;f=k[h>>2]|0;g=k[h+4>>2]|0}if((d|0)==5){r=p;return 1}else if((d|0)==8)_k(h);return 0}function df(a,b){a=a|0;b=b|0;var c=0,d=0,e=0,f=0,g=0,h=0,i=0,j=0,l=0,m=0,n=0;m=a+8|0;e=k[m>>2]|0;n=a+4|0;f=k[n>>2]|0;if(e-f>>2>>>0>=b>>>0){Zh(f|0,0,b<<2|0)|0;k[n>>2]=f+(b<<2);return}i=k[a>>2]|0;d=(f-i>>2)+b|0;if(d>>>0>1073741823)$k(a);c=f;l=i;j=e-i|0;g=j>>1;g=j>>2>>>0<536870911?(g>>>0>>0?d:g):1073741823;f=f-i>>2;do if(g)if(g>>>0>1073741823){n=Ma(4)|0;Fl(n);xa(n|0,976,90)}else{h=vj(g<<2)|0;break}else h=0;while(0);d=h+(f<<2)|0;Zh(d|0,0,b<<2|0)|0;e=d;j=h+(g<<2)|0;g=h+(f+b<<2)|0;if((c|0)==(l|0))f=i;else{do{c=c+-4|0;i=k[c>>2]|0;k[c>>2]=0;k[d+-4>>2]=i;d=e+-4|0;e=d}while((c|0)!=(l|0));f=k[a>>2]|0;c=k[n>>2]|0}k[a>>2]=e;k[n>>2]=g;k[m>>2]=j;e=f;if((c|0)!=(e|0))do{c=c+-4|0;d=k[c>>2]|0;k[c>>2]=0;if(d|0)Ta[k[(k[d>>2]|0)+4>>2]&127](d)}while((c|0)!=(e|0));if(!f)return;Vl(f);return}function ef(a,b,c){a=a|0;b=b|0;c=c|0;var d=0,e=0,f=0,g=0,h=0,i=0;i=r;r=r+16|0;h=i;e=k[a+8>>2]|0;f=k[c>>2]|0;g=(f|0)/3|0;if((f|0)<=-3)Ka(13286,13311,63,13325);d=k[e+80>>2]|0;if((g|0)>=(((k[e+84>>2]|0)-d|0)/12|0|0))Ka(13330,13311,64,13325);d=k[d+(g*12|0)+(((f|0)%3|0)<<2)>>2]|0;e=k[a+12>>2]|0;k[h>>2]=d;e=k[e+4>>2]|0;f=e+4|0;g=k[f>>2]|0;if((g|0)==(k[e+8>>2]|0))Ig(e,h);else{k[g>>2]=d;k[f>>2]=g+4}d=a+4|0;e=k[d>>2]|0;f=e+4|0;g=k[f>>2]|0;if((g|0)==(k[e+8>>2]|0)){Ig(e,c);a=k[d>>2]|0;c=a+24|0;h=k[c>>2]|0;b=k[b>>2]|0;a=a+12|0;a=k[a>>2]|0;b=a+(b<<2)|0;k[b>>2]=h;b=k[c>>2]|0;b=b+1|0;k[c>>2]=b;r=i;return}else{k[g>>2]=k[c>>2];k[f>>2]=g+4;a=e;c=a+24|0;h=k[c>>2]|0;b=k[b>>2]|0;a=a+12|0;a=k[a>>2]|0;b=a+(b<<2)|0;k[b>>2]=h;b=k[c>>2]|0;b=b+1|0;k[c>>2]=b;r=i;return}}function ff(a,b,c,d,e,f){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;f=f|0;var g=0,h=0,i=0,j=0,l=0,m=0,n=0,o=0;o=r;r=r+16|0;m=o+4|0;n=o;k[a+48>>2]=e;k[a+40>>2]=f;l=a+44|0;j=Sl(e>>>0>1073741823?-1:e<<2)|0;d=k[l>>2]|0;k[l>>2]=j;if(d|0)Tl(d);i=a+8|0;k[i>>2]=e;j=a+32|0;h=k[j>>2]|0;g=k[h+4>>2]|0;f=k[h>>2]|0;d=g-f|0;if((d|0)<=0){r=o;return 1}d=(d>>2)+-1|0;while(1){if(g-f>>2>>>0<=d>>>0){d=8;break}k[n>>2]=k[f+(d<<2)>>2];k[m>>2]=k[n>>2];ac(a,m,b,d);h=$(d,e)|0;ve(i,b+(h<<2)|0,k[l>>2]|0,c,h);d=d+-1|0;if((d|0)<=-1){d=5;break}h=k[j>>2]|0;f=k[h>>2]|0;g=k[h+4>>2]|0}if((d|0)==5){r=o;return 1}else if((d|0)==8)_k(h);return 0}function gf(a,b,c,d,e,f){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;f=f|0;var g=0,h=0,i=0,j=0,l=0,m=0,n=0,o=0,p=0;p=r;r=r+16|0;n=p+4|0;o=p;k[a+48>>2]=e;k[a+40>>2]=f;m=a+44|0;l=Sl(e>>>0>1073741823?-1:e<<2)|0;d=k[m>>2]|0;k[m>>2]=l;if(d|0)Tl(d);i=a+8|0;k[i>>2]=e;j=a+32|0;h=k[j>>2]|0;g=k[h+4>>2]|0;f=k[h>>2]|0;d=g-f|0;l=d>>2;if((d|0)<=0){r=p;return 1}d=0;while(1){if(g-f>>2>>>0<=d>>>0){d=8;break}k[o>>2]=k[f+(d<<2)>>2];k[n>>2]=k[o>>2];ec(a,n,c,d);h=$(d,e)|0;dg(i,k[m>>2]|0,b,c+(h<<2)|0,h);d=d+1|0;if((d|0)>=(l|0)){d=5;break}h=k[j>>2]|0;f=k[h>>2]|0;g=k[h+4>>2]|0}if((d|0)==5){r=p;return 1}else if((d|0)==8)_k(h);return 0}function hf(a,b,c,d,e,f){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;f=f|0;var g=0,h=0,i=0,j=0,l=0,m=0,n=0,o=0,p=0;p=r;r=r+16|0;n=p+4|0;o=p;k[a+48>>2]=e;k[a+40>>2]=f;m=a+44|0;l=Sl(e>>>0>1073741823?-1:e<<2)|0;d=k[m>>2]|0;k[m>>2]=l;if(d|0)Tl(d);i=a+8|0;k[i>>2]=e;j=a+32|0;h=k[j>>2]|0;g=k[h+4>>2]|0;f=k[h>>2]|0;d=g-f|0;l=d>>2;if((d|0)<=0){r=p;return 1}d=0;while(1){if(g-f>>2>>>0<=d>>>0){d=8;break}k[o>>2]=k[f+(d<<2)>>2];k[n>>2]=k[o>>2];kc(a,n,c,d);h=$(d,e)|0;fg(i,k[m>>2]|0,b,c+(h<<2)|0,h);d=d+1|0;if((d|0)>=(l|0)){d=5;break}h=k[j>>2]|0;f=k[h>>2]|0;g=k[h+4>>2]|0}if((d|0)==5){r=p;return 1}else if((d|0)==8)_k(h);return 0}function jf(a,b,c){a=a|0;b=b|0;c=c|0;var d=0,e=0,f=0,g=0,h=0,j=0,l=0,m=0;m=r;r=r+48|0;d=m+32|0;e=m+28|0;f=m+24|0;g=m+20|0;h=m+16|0;l=m;j=i[a+24>>0]|0;k[l>>2]=k[256];k[l+4>>2]=k[257];k[l+8>>2]=k[258];k[l+12>>2]=k[259];j=j<<24>>24;switch(j|0){case 1:{k[e>>2]=b;k[d>>2]=k[e>>2];d=Uc(a,d,l)|0;break}case 2:{k[f>>2]=b;k[d>>2]=k[f>>2];d=hc(a,d,l)|0;break}case 3:{k[g>>2]=b;k[d>>2]=k[g>>2];d=Mc(a,d,l)|0;break}case 4:{k[h>>2]=b;k[d>>2]=k[h>>2];d=Ec(a,d,l)|0;break}default:{l=0;r=m;return l|0}}if(!d){l=0;r=m;return l|0}He(c,l,l+(j<<2)|0);l=1;r=m;return l|0}function kf(a,b,c){a=a|0;b=b|0;c=c|0;var d=0,e=0,f=0,g=0,h=0,i=0,j=0,l=0,m=0,n=0,o=0,p=0;o=r;r=r+32|0;i=o+24|0;j=o+16|0;l=o+8|0;n=o;e=a+4|0;p=k[e>>2]|0;m=k[b>>2]|0;d=k[b+4>>2]|0;h=k[c>>2]|0;f=k[c+4>>2]|0;g=h-m<<3;k[e>>2]=p-d+f+g;e=(k[a>>2]|0)+(p>>>5<<2)|0;c=p&31;b=e;if((d|0)!=(c|0)){k[i>>2]=m;k[i+4>>2]=d;k[j>>2]=h;k[j+4>>2]=f;k[l>>2]=b;k[l+4>>2]=c;Xd(n,i,j,l);r=o;return}c=f-d+g|0;g=m;if((c|0)>0){if(!d){d=0;b=m}else{p=32-d|0;b=(c|0)<(p|0)?c:p;p=-1>>>(p-b|0)&-1<>2]=k[e>>2]&~p|k[g>>2]&p;d=b+d|0;g=g+4|0;c=c-b|0;e=e+(d>>>5<<2)|0;d=d&31;b=g}f=c>>>5;Xi(e|0,b|0,f<<2|0)|0;a=c-(f<<5)|0;c=e+(f<<2)|0;b=c;if((a|0)>0){d=-1>>>(32-a|0);k[c>>2]=k[c>>2]&~d|k[g+(f<<2)>>2]&d;d=a}}k[n>>2]=b;k[n+4>>2]=d;r=o;return}function lf(a,b){a=a|0;b=b|0;var c=0,d=0,e=0,f=0,g=0,h=0,j=0;e=b+8|0;j=e;g=k[j>>2]|0;j=k[j+4>>2]|0;f=b+16|0;d=f;c=k[d>>2]|0;d=mk(c|0,k[d+4>>2]|0,4,0)|0;h=M;if((j|0)<(h|0)|(j|0)==(h|0)&g>>>0>>0){j=0;return j|0}j=a+12|0;c=(k[b>>2]|0)+c|0;c=l[c>>0]|l[c+1>>0]<<8|l[c+2>>0]<<16|l[c+3>>0]<<24;i[j>>0]=c;i[j+1>>0]=c>>8;i[j+2>>0]=c>>16;i[j+3>>0]=c>>24;j=f;g=k[j>>2]|0;j=k[j+4>>2]|0;d=mk(g|0,j|0,4,0)|0;h=f;k[h>>2]=d;k[h+4>>2]=M;h=k[e>>2]|0;e=k[e+4>>2]|0;j=mk(g|0,j|0,8,0)|0;g=M;if((e|0)<(g|0)|(e|0)==(g|0)&h>>>0>>0){j=0;return j|0}h=a+16|0;j=(k[b>>2]|0)+d|0;j=l[j>>0]|l[j+1>>0]<<8|l[j+2>>0]<<16|l[j+3>>0]<<24;i[h>>0]=j;i[h+1>>0]=j>>8;i[h+2>>0]=j>>16;i[h+3>>0]=j>>24;h=f;h=mk(k[h>>2]|0,k[h+4>>2]|0,4,0)|0;d=f;k[d>>2]=h;k[d+4>>2]=M;j=1-c+j|0;k[a+20>>2]=j;c=(j|0)/2|0;d=a+24|0;k[d>>2]=c;k[a+28>>2]=0-c;if(j&1|0){j=1;return j|0}k[d>>2]=c+-1;j=1;return j|0}function mf(a,b,c){a=a|0;b=b|0;c=c|0;var d=0,e=0,f=0,g=0,h=0,i=0,j=0;i=a+8|0;f=k[i>>2]|0;j=a+4|0;d=k[j>>2]|0;if(((f-d|0)/12|0)>>>0>=b>>>0){do{k[d>>2]=k[c>>2];k[d+4>>2]=k[c+4>>2];k[d+8>>2]=k[c+8>>2];d=(k[j>>2]|0)+12|0;k[j>>2]=d;b=b+-1|0}while((b|0)!=0);return}g=k[a>>2]|0;e=((d-g|0)/12|0)+b|0;if(e>>>0>357913941)$k(a);h=(f-g|0)/12|0;f=h<<1;f=h>>>0<178956970?(f>>>0>>0?e:f):357913941;d=(d-g|0)/12|0;do if(f)if(f>>>0>357913941){j=Ma(4)|0;Fl(j);xa(j|0,976,90)}else{e=vj(f*12|0)|0;break}else e=0;while(0);h=e+(d*12|0)|0;g=e+(f*12|0)|0;d=h;f=h;do{k[d>>2]=k[c>>2];k[d+4>>2]=k[c+4>>2];k[d+8>>2]=k[c+8>>2];d=f+12|0;f=d;b=b+-1|0}while((b|0)!=0);b=k[a>>2]|0;e=(k[j>>2]|0)-b|0;d=h+(((e|0)/-12|0)*12|0)|0;if((e|0)>0)Mh(d|0,b|0,e|0)|0;k[a>>2]=d;k[j>>2]=f;k[i>>2]=g;if(!b)return;Vl(b);return}function nf(a,b,c,d,e,f){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;f=f|0;var g=0,h=0,i=0,j=0,l=0,m=0,n=0,o=0;o=r;r=r+16|0;m=o+4|0;n=o;k[a+48>>2]=e;k[a+40>>2]=f;l=a+44|0;j=Sl(e>>>0>1073741823?-1:e<<2)|0;d=k[l>>2]|0;k[l>>2]=j;if(d|0)Tl(d);i=a+8|0;k[i>>2]=e;j=a+32|0;h=k[j>>2]|0;g=k[h+4>>2]|0;f=k[h>>2]|0;d=g-f|0;if((d|0)<=0){r=o;return 1}d=(d>>2)+-1|0;while(1){if(g-f>>2>>>0<=d>>>0){d=8;break}k[n>>2]=k[f+(d<<2)>>2];k[m>>2]=k[n>>2];Zb(a,m,b,d);h=$(d,e)|0;ve(i,b+(h<<2)|0,k[l>>2]|0,c,h);d=d+-1|0;if((d|0)<=-1){d=5;break}h=k[j>>2]|0;f=k[h>>2]|0;g=k[h+4>>2]|0}if((d|0)==5){r=o;return 1}else if((d|0)==8)_k(h);return 0}function of(a,b,c,d,e,f){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;f=f|0;var g=0,h=0,i=0,j=0,l=0,m=0,n=0,o=0;o=r;r=r+16|0;m=o+4|0;n=o;k[a+48>>2]=e;k[a+40>>2]=f;l=a+44|0;j=Sl(e>>>0>1073741823?-1:e<<2)|0;d=k[l>>2]|0;k[l>>2]=j;if(d|0)Tl(d);i=a+8|0;k[i>>2]=e;j=a+32|0;h=k[j>>2]|0;g=k[h+4>>2]|0;f=k[h>>2]|0;d=g-f|0;if((d|0)<=0){r=o;return 1}d=(d>>2)+-1|0;while(1){if(g-f>>2>>>0<=d>>>0){d=8;break}k[n>>2]=k[f+(d<<2)>>2];k[m>>2]=k[n>>2];ac(a,m,b,d);h=$(d,e)|0;Ae(i,b+(h<<2)|0,k[l>>2]|0,c,h);d=d+-1|0;if((d|0)<=-1){d=5;break}h=k[j>>2]|0;f=k[h>>2]|0;g=k[h+4>>2]|0}if((d|0)==5){r=o;return 1}else if((d|0)==8)_k(h);return 0}function pf(a,b,c,d,e,f){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;f=f|0;var g=0,h=0,i=0,j=0,l=0,m=0,n=0,o=0,p=0;p=r;r=r+16|0;n=p+4|0;o=p;k[a+48>>2]=e;k[a+40>>2]=f;m=a+44|0;l=Sl(e>>>0>1073741823?-1:e<<2)|0;d=k[m>>2]|0;k[m>>2]=l;if(d|0)Tl(d);i=a+8|0;k[i>>2]=e;j=a+32|0;h=k[j>>2]|0;g=k[h+4>>2]|0;f=k[h>>2]|0;d=g-f|0;l=d>>2;if((d|0)<=0){r=p;return 1}d=0;while(1){if(g-f>>2>>>0<=d>>>0){d=8;break}k[o>>2]=k[f+(d<<2)>>2];k[n>>2]=k[o>>2];ec(a,n,c,d);h=$(d,e)|0;fg(i,k[m>>2]|0,b,c+(h<<2)|0,h);d=d+1|0;if((d|0)>=(l|0)){d=5;break}h=k[j>>2]|0;f=k[h>>2]|0;g=k[h+4>>2]|0}if((d|0)==5){r=p;return 1}else if((d|0)==8)_k(h);return 0}function qf(a,b,c,d,e){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;var f=0,g=0,h=0;do if((a|0)==(k[b+8>>2]|0)){if((k[b+4>>2]|0)==(c|0)?(f=b+28|0,(k[f>>2]|0)!=1):0)k[f>>2]=d}else{if((a|0)!=(k[b>>2]|0)){h=k[a+8>>2]|0;Sa[k[(k[h>>2]|0)+24>>2]&3](h,b,c,d,e);break}if((k[b+16>>2]|0)!=(c|0)?(h=b+20|0,(k[h>>2]|0)!=(c|0)):0){k[b+32>>2]=d;g=b+44|0;if((k[g>>2]|0)==4)break;f=b+52|0;i[f>>0]=0;d=b+53|0;i[d>>0]=0;a=k[a+8>>2]|0;Ya[k[(k[a>>2]|0)+20>>2]&3](a,b,c,c,1,e);if(i[d>>0]|0)if(!(i[f>>0]|0)){f=1;d=13}else d=17;else{f=0;d=13}do if((d|0)==13){k[h>>2]=c;c=b+40|0;k[c>>2]=(k[c>>2]|0)+1;if((k[b+36>>2]|0)==1?(k[b+24>>2]|0)==2:0){i[b+54>>0]=1;if(f){d=17;break}else{f=4;break}}if(f)d=17;else f=4}while(0);if((d|0)==17)f=3;k[g>>2]=f;break}if((d|0)==1)k[b+32>>2]=1}while(0);return}function rf(a,b,c,d,e,f){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;f=f|0;var g=0,h=0,i=0,j=0,l=0,m=0,n=0,o=0;o=r;r=r+16|0;m=o+4|0;n=o;k[a+48>>2]=e;k[a+40>>2]=f;l=a+44|0;j=Sl(e>>>0>1073741823?-1:e<<2)|0;d=k[l>>2]|0;k[l>>2]=j;if(d|0)Tl(d);i=a+8|0;k[i>>2]=e;j=a+32|0;h=k[j>>2]|0;g=k[h+4>>2]|0;f=k[h>>2]|0;d=g-f|0;if((d|0)<=0){r=o;return 1}d=(d>>2)+-1|0;while(1){if(g-f>>2>>>0<=d>>>0){d=8;break}k[n>>2]=k[f+(d<<2)>>2];k[m>>2]=k[n>>2];Zb(a,m,b,d);h=$(d,e)|0;Ae(i,b+(h<<2)|0,k[l>>2]|0,c,h);d=d+-1|0;if((d|0)<=-1){d=5;break}h=k[j>>2]|0;f=k[h>>2]|0;g=k[h+4>>2]|0}if((d|0)==5){r=o;return 1}else if((d|0)==8)_k(h);return 0}function sf(a,b,c){a=a|0;b=b|0;c=c|0;var d=0,e=0,f=0,g=0,h=0,j=0,l=0,m=0,n=0;m=(k[b+4>>2]|0)-(k[b>>2]|0)>>2;h=c+8|0;g=k[h>>2]|0;h=k[h+4>>2]|0;j=c+16|0;e=j;d=k[e>>2]|0;e=k[e+4>>2]|0;if((h|0)>(e|0)|(h|0)==(e|0)&g>>>0>d>>>0){f=i[(k[c>>2]|0)+d>>0]|0;d=mk(d|0,e|0,1,0)|0;e=M;n=j;k[n>>2]=d;k[n+4>>2]=e;if(f<<24>>24!=-2)l=3}else{f=0;l=3}if((l|0)==3){if((h|0)>(e|0)|(h|0)==(e|0)&g>>>0>d>>>0){n=i[(k[c>>2]|0)+d>>0]|0;l=mk(d|0,e|0,1,0)|0;d=j;k[d>>2]=l;k[d+4>>2]=M;d=n}else d=0;n=a+28|0;l=Ra[k[(k[a>>2]|0)+32>>2]&31](a,f<<24>>24,d<<24>>24)|0;d=k[n>>2]|0;k[n>>2]=l;if(d|0)Ta[k[(k[d>>2]|0)+4>>2]&127](d)}d=k[a+28>>2]|0;if(d|0?!(Za[k[(k[a>>2]|0)+20>>2]&127](a,d)|0):0){n=0;return n|0}if(!(Ra[k[(k[a>>2]|0)+28>>2]&31](a,b,c)|0)){n=0;return n|0}n=Za[k[(k[a>>2]|0)+40>>2]&127](a,m)|0;return n|0}function tf(a){a=a|0;var b=0,c=0,d=0,e=0,f=0,g=0,h=0;g=r;r=r+16|0;d=g+4|0;e=g;f=a+8|0;c=a+84|0;b=k[c>>2]|0;if(!b){c=k[(k[f>>2]|0)+64>>2]|0;c=(k[c+4>>2]|0)-(k[c>>2]|0)|0;b=(c|0)/12|0;if((c|0)<=0){r=g;return 1}a=0;do{k[e>>2]=a*3;k[d>>2]=k[e>>2];Ub(f,d);a=a+1|0}while((a|0)<(b|0));r=g;return 1}else{a=k[b>>2]|0;if((k[b+4>>2]|0)==(a|0)){r=g;return 1}b=0;do{k[e>>2]=k[a+(b<<2)>>2];k[d>>2]=k[e>>2];Ub(f,d);b=b+1|0;h=k[c>>2]|0;a=k[h>>2]|0}while(b>>>0<(k[h+4>>2]|0)-a>>2>>>0);r=g;return 1}return 0}function uf(a,b,c){a=a|0;b=b|0;c=c|0;var d=0,e=0,f=0,g=0,h=0,i=0;i=r;r=r+16|0;g=i;k[g>>2]=b;if((b|0)<=-1)Ka(6518,6530,93,6557);h=a+4|0;if(((k[a+8>>2]|0)-(k[h>>2]|0)>>2|0)<=(b|0))pg(h,b+1|0);d=k[(k[c>>2]|0)+56>>2]|0;do if((d|0)<4){e=a+16+(d*12|0)+4|0;f=k[e>>2]|0;if((f|0)==(k[a+16+(d*12|0)+8>>2]|0)){Ig(a+16+(d*12|0)|0,g);break}else{k[f>>2]=b;k[e>>2]=f+4;break}}while(0);h=(k[h>>2]|0)+(k[g>>2]<<2)|0;g=k[c>>2]|0;k[c>>2]=0;f=k[h>>2]|0;k[h>>2]=g;if(!f){r=i;return}a=k[f+68>>2]|0;b=a;if(a|0){d=f+72|0;e=k[d>>2]|0;if((e|0)!=(a|0))k[d>>2]=e+(~((e+-4-b|0)>>>2)<<2);Vl(a)}h=f+64|0;a=k[h>>2]|0;k[h>>2]=0;if(a|0){b=k[a>>2]|0;if(b|0){d=a+4|0;if((k[d>>2]|0)!=(b|0))k[d>>2]=b;Vl(b)}Vl(a)}Vl(f);r=i;return}function vf(a){a=a|0;var b=0,c=0,d=0,e=0,f=0,g=0,h=0;g=r;r=r+16|0;d=g+4|0;e=g;f=a+8|0;c=a+84|0;b=k[c>>2]|0;if(!b){c=k[f>>2]|0;c=(k[c+4>>2]|0)-(k[c>>2]|0)|0;b=(c|0)/12|0;if((c|0)<=0){r=g;return 1}a=0;do{k[e>>2]=a*3;k[d>>2]=k[e>>2];Xb(f,d);a=a+1|0}while((a|0)<(b|0));r=g;return 1}else{a=k[b>>2]|0;if((k[b+4>>2]|0)==(a|0)){r=g;return 1}b=0;do{k[e>>2]=k[a+(b<<2)>>2];k[d>>2]=k[e>>2];Xb(f,d);b=b+1|0;h=k[c>>2]|0;a=k[h>>2]|0}while(b>>>0<(k[h+4>>2]|0)-a>>2>>>0);r=g;return 1}return 0}function wf(a,b){a=a|0;b=b|0;var c=0,d=0,e=0,f=0,g=0,h=0,i=0,j=0,l=0;l=r;r=r+16|0;j=l;i=vj(52)|0;g=vj(12)|0;f=k[(k[a+4>>2]|0)+64>>2]|0;k[g+4>>2]=0;k[g>>2]=5344;k[g+8>>2]=f;k[j>>2]=g;ki(i,j);g=a+8|0;f=a+12|0;a=k[f>>2]|0;c=k[g>>2]|0;d=a-c>>2;do if((d|0)<=(b|0)){e=b+1|0;if(e>>>0>d>>>0){df(g,e-d|0);break}if(e>>>0>>0?(h=c+(e<<2)|0,(a|0)!=(h|0)):0)do{e=a+-4|0;k[f>>2]=e;a=k[e>>2]|0;k[e>>2]=0;if(a|0)Ta[k[(k[a>>2]|0)+4>>2]&127](a);a=k[f>>2]|0}while((a|0)!=(h|0))}while(0);h=(k[g>>2]|0)+(b<<2)|0;a=k[h>>2]|0;k[h>>2]=i;if(a|0)Ta[k[(k[a>>2]|0)+4>>2]&127](a);a=k[j>>2]|0;k[j>>2]=0;if(!a){r=l;return 1}Ta[k[(k[a>>2]|0)+4>>2]&127](a);r=l;return 1}function xf(a,b,c){a=a|0;b=b|0;c=c|0;var d=0,e=0,f=0,g=0,h=0,j=0;do if(b){b=a+8|0;j=b;g=k[j>>2]|0;j=k[j+4>>2]|0;d=a+16|0;f=d;e=k[f>>2]|0;f=mk(e|0,k[f+4>>2]|0,8,0)|0;h=M;if((j|0)<(h|0)|(j|0)==(h|0)&g>>>0>>0){j=0;return j|0}else{j=(k[a>>2]|0)+e|0;h=j;h=l[h>>0]|l[h+1>>0]<<8|l[h+2>>0]<<16|l[h+3>>0]<<24;j=j+4|0;j=l[j>>0]|l[j+1>>0]<<8|l[j+2>>0]<<16|l[j+3>>0]<<24;e=c;c=e;i[c>>0]=h;i[c+1>>0]=h>>8;i[c+2>>0]=h>>16;i[c+3>>0]=h>>24;e=e+4|0;i[e>>0]=j;i[e+1>>0]=j>>8;i[e+2>>0]=j>>16;i[e+3>>0]=j>>24;e=d;e=mk(k[e>>2]|0,k[e+4>>2]|0,8,0)|0;c=M;k[d>>2]=e;k[d+4>>2]=c;d=a;break}}else{c=a+16|0;b=a+8|0;d=a;e=k[c>>2]|0;c=k[c+4>>2]|0}while(0);i[a+36>>0]=1;h=(k[d>>2]|0)+e|0;j=b;j=Zj(k[j>>2]|0,k[j+4>>2]|0,e|0,c|0)|0;k[a+32>>2]=0;k[a+24>>2]=h;k[a+28>>2]=h+j;j=1;return j|0}function yf(a,b,c){a=a|0;b=b|0;c=c|0;var d=0,e=0,f=0,g=0,h=0,j=0;j=r;r=r+32|0;d=j+16|0;e=j+12|0;f=j+8|0;g=j+4|0;h=j;c=k[(k[b+40>>2]|0)+(c<<2)>>2]|0;k[a>>2]=0;k[a+4>>2]=0;k[a+8>>2]=0;b=k[b+36>>2]|0;if(!(i[b+84>>0]|0))c=k[(k[b+68>>2]|0)+(c<<2)>>2]|0;switch(i[b+24>>0]|0){case 1:{k[e>>2]=c;k[d>>2]=k[e>>2];Uc(b,d,a)|0;r=j;return}case 2:{k[f>>2]=c;k[d>>2]=k[f>>2];hc(b,d,a)|0;r=j;return}case 3:{k[g>>2]=c;k[d>>2]=k[g>>2];Mc(b,d,a)|0;r=j;return}case 4:{k[h>>2]=c;k[d>>2]=k[h>>2];Ec(b,d,a)|0;r=j;return}default:{r=j;return}}}function zf(a,b,c){a=a|0;b=b|0;c=c|0;var d=0,e=0,f=0,g=0,h=0,j=0;j=r;r=r+32|0;d=j+16|0;e=j+12|0;f=j+8|0;g=j+4|0;h=j;c=k[(k[b+64>>2]|0)+(c<<2)>>2]|0;k[a>>2]=0;k[a+4>>2]=0;k[a+8>>2]=0;b=k[b+60>>2]|0;if(!(i[b+84>>0]|0))c=k[(k[b+68>>2]|0)+(c<<2)>>2]|0;switch(i[b+24>>0]|0){case 1:{k[e>>2]=c;k[d>>2]=k[e>>2];Uc(b,d,a)|0;r=j;return}case 2:{k[f>>2]=c;k[d>>2]=k[f>>2];hc(b,d,a)|0;r=j;return}case 3:{k[g>>2]=c;k[d>>2]=k[g>>2];Mc(b,d,a)|0;r=j;return}case 4:{k[h>>2]=c;k[d>>2]=k[h>>2];Ec(b,d,a)|0;r=j;return}default:{r=j;return}}}function Af(a,b,c){a=a|0;b=b|0;c=c|0;var d=0,e=0,f=0,g=0,h=0,j=0,l=0,m=0,n=0;l=r;r=r+16|0;g=l;h=a+4|0;k[h>>2]=0;if(!b){r=l;return}j=a+8|0;d=k[j>>2]|0;if(d<<5>>>0>>0){k[g>>2]=0;e=g+4|0;k[e>>2]=0;f=g+8|0;k[f>>2]=0;if((b|0)<0)$k(a);m=d<<6;n=b+31&-32;ig(g,d<<5>>>0<1073741823?(m>>>0>>0?n:m):2147483647);d=k[a>>2]|0;k[a>>2]=k[g>>2];k[g>>2]=d;g=k[h>>2]|0;k[h>>2]=b;k[e>>2]=g;h=k[j>>2]|0;k[j>>2]=k[f>>2];k[f>>2]=h;if(d|0)Vl(d)}else k[h>>2]=b;a=k[a>>2]|0;e=a;f=b>>>5;d=f<<2;if(!(i[c>>0]|0)){Zh(a|0,0,d|0)|0;d=b-(f<<5)|0;a=e+(f<<2)|0;if(!d){r=l;return}k[a>>2]=k[a>>2]&~(-1>>>(32-d|0));r=l;return}else{Zh(a|0,-1,d|0)|0;d=b-(f<<5)|0;a=e+(f<<2)|0;if(!d){r=l;return}k[a>>2]=k[a>>2]|-1>>>(32-d|0);r=l;return}}function Bf(a){a=a|0;var b=0,c=0,d=0,e=0,f=0,g=0,h=0;b=k[a+140>>2]|0;c=b;if(b|0){d=a+144|0;e=k[d>>2]|0;if((e|0)!=(b|0))k[d>>2]=e+(~((e+-4-c|0)>>>2)<<2);Vl(b)}g=a+128|0;b=k[g>>2]|0;if(b|0){h=a+132|0;c=k[h>>2]|0;if((c|0)!=(b|0)){do{d=c+-12|0;k[h>>2]=d;e=k[d>>2]|0;f=e;if(!e)c=d;else{c=c+-8|0;d=k[c>>2]|0;if((d|0)!=(e|0))k[c>>2]=d+(~((d+-4-f|0)>>>2)<<2);Vl(e);c=k[h>>2]|0}}while((c|0)!=(b|0));b=k[g>>2]|0}Vl(b)}b=k[a+100>>2]|0;c=b;if(b|0){d=a+104|0;e=k[d>>2]|0;if((e|0)!=(b|0))k[d>>2]=e+(~((e+-4-c|0)>>>2)<<2);Vl(b)}h=a+80|0;c=k[h>>2]|0;k[h>>2]=0;if(!c){h=a+64|0;Yl(h);a=a+24|0;Yl(a);return}d=c+-4|0;b=k[d>>2]|0;if(b|0){b=c+(b<<4)|0;do{b=b+-16|0;Yl(b)}while((b|0)!=(c|0))}Tl(d);h=a+64|0;Yl(h);a=a+24|0;Yl(a);return}function Cf(a,b){a=a|0;b=b|0;var c=0,d=0,e=0,f=0,g=0,h=0,j=0;d=b+8|0;j=d;g=k[j>>2]|0;j=k[j+4>>2]|0;e=b+16|0;f=e;c=k[f>>2]|0;f=mk(c|0,k[f+4>>2]|0,4,0)|0;h=M;if((j|0)<(h|0)|(j|0)==(h|0)&g>>>0>>0){j=0;return j|0}j=a+12|0;g=(k[b>>2]|0)+c|0;g=l[g>>0]|l[g+1>>0]<<8|l[g+2>>0]<<16|l[g+3>>0]<<24;i[j>>0]=g;i[j+1>>0]=g>>8;i[j+2>>0]=g>>16;i[j+3>>0]=g>>24;j=e;g=k[j>>2]|0;j=k[j+4>>2]|0;c=mk(g|0,j|0,4,0)|0;f=e;k[f>>2]=c;k[f+4>>2]=M;f=d;h=k[f>>2]|0;f=k[f+4>>2]|0;j=mk(g|0,j|0,8,0)|0;g=M;if((f|0)<(g|0)|(f|0)==(g|0)&h>>>0>>0){j=0;return j|0}h=a+16|0;j=(k[b>>2]|0)+c|0;j=l[j>>0]|l[j+1>>0]<<8|l[j+2>>0]<<16|l[j+3>>0]<<24;i[h>>0]=j;i[h+1>>0]=j>>8;i[h+2>>0]=j>>16;i[h+3>>0]=j>>24;h=e;h=mk(k[h>>2]|0,k[h+4>>2]|0,4,0)|0;j=e;k[j>>2]=h;k[j+4>>2]=M;j=1;return j|0}function Df(a,b,c){a=a|0;b=b|0;c=c|0;var d=0,e=0,f=0,g=0,h=0,i=0;i=r;r=r+16|0;h=i;g=k[c>>2]|0;k[c>>2]=0;k[h>>2]=g;uf(a,b,h);g=k[h>>2]|0;k[h>>2]=0;if(g|0){f=k[g+68>>2]|0;c=f;if(f|0){d=g+72|0;e=k[d>>2]|0;if((e|0)!=(f|0))k[d>>2]=e+(~((e+-4-c|0)>>>2)<<2);Vl(f)}h=g+64|0;c=k[h>>2]|0;k[h>>2]=0;if(c|0){d=k[c>>2]|0;if(d|0){e=c+4|0;if((k[e>>2]|0)!=(d|0))k[e>>2]=d;Vl(d)}Vl(c)}Vl(g)}h=a+68|0;a=a+72|0;c=k[a>>2]|0;f=k[h>>2]|0;g=c-f>>2;if((g|0)>(b|0)){r=i;return}d=b+1|0;e=c;if(d>>>0>g>>>0){Rf(h,d-g|0);r=i;return}if(d>>>0>=g>>>0){r=i;return}c=f+(d<<2)|0;if((e|0)==(c|0)){r=i;return}k[a>>2]=e+(~((e+-4-c|0)>>>2)<<2);r=i;return}function Ef(a,b,c){a=a|0;b=b|0;c=c|0;var d=0,e=0,f=0,g=0,h=0,j=0,l=0,m=0,n=0,o=0,p=0,q=0,s=0;s=r;r=r+224|0;m=s+120|0;o=s+80|0;p=s;q=s+136|0;d=o;e=d+40|0;do{k[d>>2]=0;d=d+4|0}while((d|0)<(e|0));k[m>>2]=k[c>>2];if((db(0,b,m,p,o)|0)<0)c=-1;else{if((k[a+76>>2]|0)>-1)n=Zl(a)|0;else n=0;c=k[a>>2]|0;l=c&32;if((i[a+74>>0]|0)<1)k[a>>2]=c&-33;d=a+48|0;if(!(k[d>>2]|0)){e=a+44|0;f=k[e>>2]|0;k[e>>2]=q;g=a+28|0;k[g>>2]=q;h=a+20|0;k[h>>2]=q;k[d>>2]=80;j=a+16|0;k[j>>2]=q+80;c=db(a,b,m,p,o)|0;if(f){Ra[k[a+36>>2]&31](a,0,0)|0;c=(k[h>>2]|0)==0?-1:c;k[e>>2]=f;k[d>>2]=0;k[j>>2]=0;k[g>>2]=0;k[h>>2]=0}}else c=db(a,b,m,p,o)|0;d=k[a>>2]|0;k[a>>2]=d|l;if(n|0)Yl(a);c=(d&32|0)==0?c:-1}r=s;return c|0}function Ff(a,b,c){a=a|0;b=b|0;c=c|0;var d=0,e=0,f=0,g=0,h=0,i=0,j=0;f=a+4|0;d=k[f>>2]|0;h=k[a>>2]|0;g=d-h>>2;if(g>>>0>=1048576){if((g|0)!=1048576?(e=h+4194304|0,(d|0)!=(e|0)):0)k[f>>2]=d+(~((d+-4-e|0)>>>2)<<2)}else wg(a,1048576-g|0);d=a+12|0;e=a+16|0;h=k[e>>2]|0;g=k[d>>2]|0;f=h-g>>3;if(f>>>0>=c>>>0){if(f>>>0>c>>>0?(i=g+(c<<3)|0,(h|0)!=(i|0)):0)k[e>>2]=h+(~((h+-8-i|0)>>>3)<<3)}else Lf(d,c-f|0);if(!c){j=0;return j|0}g=k[d>>2]|0;e=0;f=0;do{i=b+(e<<2)|0;k[g+(e<<3)>>2]=k[i>>2];k[g+(e<<3)+4>>2]=f;d=f;f=(k[i>>2]|0)+f|0;if(f>>>0>1048576){d=0;j=19;break}if(d>>>0>>0){h=k[a>>2]|0;do{k[h+(d<<2)>>2]=e;d=d+1|0}while((d|0)!=(f|0))}e=e+1|0}while(e>>>0>>0);if((j|0)==19)return d|0;j=(f|0)==1048576;return j|0}function Gf(a,b,c){a=a|0;b=b|0;c=c|0;var d=0,e=0,f=0,g=0,h=0,i=0,j=0;f=a+4|0;d=k[f>>2]|0;h=k[a>>2]|0;g=d-h>>2;if(g>>>0>=524288){if((g|0)!=524288?(e=h+2097152|0,(d|0)!=(e|0)):0)k[f>>2]=d+(~((d+-4-e|0)>>>2)<<2)}else wg(a,524288-g|0);d=a+12|0;e=a+16|0;h=k[e>>2]|0;g=k[d>>2]|0;f=h-g>>3;if(f>>>0>=c>>>0){if(f>>>0>c>>>0?(i=g+(c<<3)|0,(h|0)!=(i|0)):0)k[e>>2]=h+(~((h+-8-i|0)>>>3)<<3)}else Lf(d,c-f|0);if(!c){j=0;return j|0}g=k[d>>2]|0;e=0;f=0;do{i=b+(e<<2)|0;k[g+(e<<3)>>2]=k[i>>2];k[g+(e<<3)+4>>2]=f;d=f;f=(k[i>>2]|0)+f|0;if(f>>>0>524288){d=0;j=19;break}if(d>>>0>>0){h=k[a>>2]|0;do{k[h+(d<<2)>>2]=e;d=d+1|0}while((d|0)!=(f|0))}e=e+1|0}while(e>>>0>>0);if((j|0)==19)return d|0;j=(f|0)==524288;return j|0}function Hf(a,b,c){a=a|0;b=b|0;c=c|0;var d=0,e=0,f=0,g=0,h=0,i=0,j=0;f=a+4|0;d=k[f>>2]|0;h=k[a>>2]|0;g=d-h>>2;if(g>>>0>=262144){if((g|0)!=262144?(e=h+1048576|0,(d|0)!=(e|0)):0)k[f>>2]=d+(~((d+-4-e|0)>>>2)<<2)}else wg(a,262144-g|0);d=a+12|0;e=a+16|0;h=k[e>>2]|0;g=k[d>>2]|0;f=h-g>>3;if(f>>>0>=c>>>0){if(f>>>0>c>>>0?(i=g+(c<<3)|0,(h|0)!=(i|0)):0)k[e>>2]=h+(~((h+-8-i|0)>>>3)<<3)}else Lf(d,c-f|0);if(!c){j=0;return j|0}g=k[d>>2]|0;e=0;f=0;do{i=b+(e<<2)|0;k[g+(e<<3)>>2]=k[i>>2];k[g+(e<<3)+4>>2]=f;d=f;f=(k[i>>2]|0)+f|0;if(f>>>0>262144){d=0;j=19;break}if(d>>>0>>0){h=k[a>>2]|0;do{k[h+(d<<2)>>2]=e;d=d+1|0}while((d|0)!=(f|0))}e=e+1|0}while(e>>>0>>0);if((j|0)==19)return d|0;j=(f|0)==262144;return j|0}function If(a,b,c,d){a=a|0;b=b|0;c=c|0;d=d|0;var e=0,f=0,g=0,h=0,l=0,m=0,n=0,o=0,p=0,q=0;q=r;r=r+64|0;o=q;n=k[a>>2]|0;p=a+(k[n+-8>>2]|0)|0;n=k[n+-4>>2]|0;k[o>>2]=c;k[o+4>>2]=a;k[o+8>>2]=b;k[o+12>>2]=d;a=o+16|0;b=o+20|0;d=o+24|0;e=o+28|0;f=o+32|0;g=o+40|0;h=(n|0)==(c|0);l=a;m=l+36|0;do{k[l>>2]=0;l=l+4|0}while((l|0)<(m|0));j[a+36>>1]=0;i[a+38>>0]=0;a:do if(h){k[o+48>>2]=1;Ya[k[(k[c>>2]|0)+20>>2]&3](c,o,p,p,1,0);a=(k[d>>2]|0)==1?p:0}else{Sa[k[(k[n>>2]|0)+24>>2]&3](n,o,p,1,0);switch(k[o+36>>2]|0){case 0:{a=(k[g>>2]|0)==1&(k[e>>2]|0)==1&(k[f>>2]|0)==1?k[b>>2]|0:0;break a}case 1:break;default:{a=0;break a}}if((k[d>>2]|0)!=1?!((k[g>>2]|0)==0&(k[e>>2]|0)==1&(k[f>>2]|0)==1):0){a=0;break}a=k[a>>2]|0}while(0);r=q;return a|0}function Jf(a,b,c){a=a|0;b=b|0;c=c|0;var d=0,e=0,f=0,g=0,h=0,i=0,j=0;f=a+4|0;d=k[f>>2]|0;h=k[a>>2]|0;g=d-h>>2;if(g>>>0>=65536){if((g|0)!=65536?(e=h+262144|0,(d|0)!=(e|0)):0)k[f>>2]=d+(~((d+-4-e|0)>>>2)<<2)}else wg(a,65536-g|0);d=a+12|0;e=a+16|0;h=k[e>>2]|0;g=k[d>>2]|0;f=h-g>>3;if(f>>>0>=c>>>0){if(f>>>0>c>>>0?(i=g+(c<<3)|0,(h|0)!=(i|0)):0)k[e>>2]=h+(~((h+-8-i|0)>>>3)<<3)}else Lf(d,c-f|0);if(!c){j=0;return j|0}g=k[d>>2]|0;e=0;f=0;do{i=b+(e<<2)|0;k[g+(e<<3)>>2]=k[i>>2];k[g+(e<<3)+4>>2]=f;d=f;f=(k[i>>2]|0)+f|0;if(f>>>0>65536){d=0;j=19;break}if(d>>>0>>0){h=k[a>>2]|0;do{k[h+(d<<2)>>2]=e;d=d+1|0}while((d|0)!=(f|0))}e=e+1|0}while(e>>>0>>0);if((j|0)==19)return d|0;j=(f|0)==65536;return j|0}function Kf(a,b,c){a=a|0;b=b|0;c=c|0;var d=0,e=0,f=0,g=0,h=0,i=0,j=0;f=a+4|0;d=k[f>>2]|0;h=k[a>>2]|0;g=d-h>>2;if(g>>>0>=32768){if((g|0)!=32768?(e=h+131072|0,(d|0)!=(e|0)):0)k[f>>2]=d+(~((d+-4-e|0)>>>2)<<2)}else wg(a,32768-g|0);d=a+12|0;e=a+16|0;h=k[e>>2]|0;g=k[d>>2]|0;f=h-g>>3;if(f>>>0>=c>>>0){if(f>>>0>c>>>0?(i=g+(c<<3)|0,(h|0)!=(i|0)):0)k[e>>2]=h+(~((h+-8-i|0)>>>3)<<3)}else Lf(d,c-f|0);if(!c){j=0;return j|0}g=k[d>>2]|0;e=0;f=0;do{i=b+(e<<2)|0;k[g+(e<<3)>>2]=k[i>>2];k[g+(e<<3)+4>>2]=f;d=f;f=(k[i>>2]|0)+f|0;if(f>>>0>32768){d=0;j=19;break}if(d>>>0>>0){h=k[a>>2]|0;do{k[h+(d<<2)>>2]=e;d=d+1|0}while((d|0)!=(f|0))}e=e+1|0}while(e>>>0>>0);if((j|0)==19)return d|0;j=(f|0)==32768;return j|0}function Lf(a,b){a=a|0;b=b|0;var c=0,d=0,e=0,f=0,g=0,h=0,i=0;h=a+8|0;e=k[h>>2]|0;i=a+4|0;c=k[i>>2]|0;if(e-c>>3>>>0>=b>>>0){do{h=c;k[h>>2]=0;k[h+4>>2]=0;c=(k[i>>2]|0)+8|0;k[i>>2]=c;b=b+-1|0}while((b|0)!=0);return}f=k[a>>2]|0;d=(c-f>>3)+b|0;if(d>>>0>536870911)$k(a);g=e-f|0;e=g>>2;e=g>>3>>>0<268435455?(e>>>0>>0?d:e):536870911;c=c-f>>3;do if(e)if(e>>>0>536870911){i=Ma(4)|0;Fl(i);xa(i|0,976,90)}else{d=vj(e<<3)|0;break}else d=0;while(0);g=d+(c<<3)|0;f=d+(e<<3)|0;c=g;e=g;do{d=c;k[d>>2]=0;k[d+4>>2]=0;c=e+8|0;e=c;b=b+-1|0}while((b|0)!=0);b=k[a>>2]|0;d=(k[i>>2]|0)-b|0;c=g+(0-(d>>3)<<3)|0;if((d|0)>0)Mh(c|0,b|0,d|0)|0;k[a>>2]=c;k[i>>2]=e;k[h>>2]=f;if(!b)return;Vl(b);return}function Mf(a,b,c){a=a|0;b=b|0;c=c|0;var d=0,e=0,f=0,g=0,h=0,i=0,j=0;f=a+4|0;d=k[f>>2]|0;h=k[a>>2]|0;g=d-h>>2;if(g>>>0>=8192){if((g|0)!=8192?(e=h+32768|0,(d|0)!=(e|0)):0)k[f>>2]=d+(~((d+-4-e|0)>>>2)<<2)}else wg(a,8192-g|0);d=a+12|0;e=a+16|0;h=k[e>>2]|0;g=k[d>>2]|0;f=h-g>>3;if(f>>>0>=c>>>0){if(f>>>0>c>>>0?(i=g+(c<<3)|0,(h|0)!=(i|0)):0)k[e>>2]=h+(~((h+-8-i|0)>>>3)<<3)}else Lf(d,c-f|0);if(!c){j=0;return j|0}g=k[d>>2]|0;e=0;f=0;do{i=b+(e<<2)|0;k[g+(e<<3)>>2]=k[i>>2];k[g+(e<<3)+4>>2]=f;d=f;f=(k[i>>2]|0)+f|0;if(f>>>0>8192){d=0;j=19;break}if(d>>>0>>0){h=k[a>>2]|0;do{k[h+(d<<2)>>2]=e;d=d+1|0}while((d|0)!=(f|0))}e=e+1|0}while(e>>>0>>0);if((j|0)==19)return d|0;j=(f|0)==8192;return j|0}function Nf(a,b,c){a=a|0;b=b|0;c=c|0;var d=0,e=0,f=0,g=0,h=0,i=0,j=0;f=a+4|0;d=k[f>>2]|0;h=k[a>>2]|0;g=d-h>>2;if(g>>>0>=4096){if((g|0)!=4096?(e=h+16384|0,(d|0)!=(e|0)):0)k[f>>2]=d+(~((d+-4-e|0)>>>2)<<2)}else wg(a,4096-g|0);d=a+12|0;e=a+16|0;h=k[e>>2]|0;g=k[d>>2]|0;f=h-g>>3;if(f>>>0>=c>>>0){if(f>>>0>c>>>0?(i=g+(c<<3)|0,(h|0)!=(i|0)):0)k[e>>2]=h+(~((h+-8-i|0)>>>3)<<3)}else Lf(d,c-f|0);if(!c){j=0;return j|0}g=k[d>>2]|0;e=0;f=0;do{i=b+(e<<2)|0;k[g+(e<<3)>>2]=k[i>>2];k[g+(e<<3)+4>>2]=f;d=f;f=(k[i>>2]|0)+f|0;if(f>>>0>4096){d=0;j=19;break}if(d>>>0>>0){h=k[a>>2]|0;do{k[h+(d<<2)>>2]=e;d=d+1|0}while((d|0)!=(f|0))}e=e+1|0}while(e>>>0>>0);if((j|0)==19)return d|0;j=(f|0)==4096;return j|0}function Of(a,b,c){a=a|0;b=b|0;c=c|0;var d=0,e=0,f=0,g=0,h=0,i=0,j=0,l=0;j=a+8|0;e=k[j>>2]|0;l=a+4|0;h=k[l>>2]|0;f=h;if(e-h>>2>>>0>=b>>>0){d=b;e=f;while(1){k[e>>2]=k[c>>2];d=d+-1|0;if(!d)break;else e=e+4|0}k[l>>2]=f+(b<<2);return}i=k[a>>2]|0;d=(h-i>>2)+b|0;if(d>>>0>1073741823)$k(a);g=e-i|0;e=g>>1;e=g>>2>>>0<536870911?(e>>>0>>0?d:e):1073741823;d=h-i>>2;do if(e)if(e>>>0>1073741823){l=Ma(4)|0;Fl(l);xa(l|0,976,90)}else{f=vj(e<<2)|0;break}else f=0;while(0);g=f+(d<<2)|0;f=f+(e<<2)|0;d=b;e=g;while(1){k[e>>2]=k[c>>2];d=d+-1|0;if(!d)break;else e=e+4|0}d=h-i|0;e=g+(0-(d>>2)<<2)|0;if((d|0)>0)Mh(e|0,i|0,d|0)|0;k[a>>2]=e;k[l>>2]=g+(b<<2);k[j>>2]=f;if(!i)return;Vl(i);return}function Pf(a,b){a=a|0;b=b|0;var c=0,d=0,e=Pa;if((b|0)!=1){if(b+-1&b)b=eb(b)|0}else b=2;d=k[a+4>>2]|0;if(b>>>0>d>>>0){od(a,b);return}if(b>>>0>=d>>>0)return;e=da((k[a+12>>2]|0)>>>0);c=~~da(_(da(e/da(o[a+20>>2]))))>>>0;if(d>>>0>2&(d+-1&d|0)==0)c=1<<32-(ca(c+-1|0)|0);else c=eb(c)|0;b=b>>>0>>0?c:b;if(b>>>0>=d>>>0)return;od(a,b);return}function Qf(a,b,c,d){a=a|0;b=b|0;c=c|0;d=d|0;var e=0,f=0,g=0;f=k[c+4>>2]|0;if((b|0)<=-1)Ka(12941,12957,54,12985);e=k[f+4>>2]|0;if(((k[f+8>>2]|0)-e>>2|0)<=(b|0))Ka(12995,12957,55,12985);e=k[e+(b<<2)>>2]|0;if((Va[k[(k[c>>2]|0)+8>>2]&127](c)|0)==1?(g=De(c,a,b,d,El(j[c+24>>1]|0)|0)|0,g|0):0){d=g;return d|0}if((a|0)==-2){d=0;return d|0}g=vj(44)|0;k[g>>2]=3408;k[g+4>>2]=e;k[g+8>>2]=k[d>>2];c=g+12|0;b=d+4|0;k[c>>2]=k[b>>2];k[c+4>>2]=k[b+4>>2];k[c+8>>2]=k[b+8>>2];k[c+12>>2]=k[b+12>>2];k[c+16>>2]=k[b+16>>2];ph(g+32|0,d+24|0);k[g>>2]=3472;d=g;return d|0}function Rf(a,b){a=a|0;b=b|0;var c=0,d=0,e=0,f=0,g=0,h=0,i=0,j=0;i=a+8|0;d=k[i>>2]|0;j=a+4|0;g=k[j>>2]|0;e=g;if(d-g>>2>>>0>=b>>>0){c=b;d=e;while(1){k[d>>2]=1;c=c+-1|0;if(!c)break;else d=d+4|0}k[j>>2]=e+(b<<2);return}h=k[a>>2]|0;c=(g-h>>2)+b|0;if(c>>>0>1073741823)$k(a);f=d-h|0;d=f>>1;d=f>>2>>>0<536870911?(d>>>0>>0?c:d):1073741823;c=g-h>>2;do if(d)if(d>>>0>1073741823){j=Ma(4)|0;Fl(j);xa(j|0,976,90)}else{e=vj(d<<2)|0;break}else e=0;while(0);f=e+(c<<2)|0;e=e+(d<<2)|0;c=b;d=f;while(1){k[d>>2]=1;c=c+-1|0;if(!c)break;else d=d+4|0}c=g-h|0;d=f+(0-(c>>2)<<2)|0;if((c|0)>0)Mh(d|0,h|0,c|0)|0;k[a>>2]=d;k[j>>2]=f+(b<<2);k[i>>2]=e;if(!h)return;Vl(h);return}function Sf(a,b){a=a|0;b=b|0;var c=0,d=0,e=0,f=0,g=0,h=0,i=0,j=0,m=0;m=r;r=r+16|0;i=m;if(!(Bd(a,b)|0)){j=0;r=m;return j|0}g=b+8|0;h=k[g>>2]|0;g=k[g+4>>2]|0;c=b+16|0;e=c;d=k[e>>2]|0;e=mk(d|0,k[e+4>>2]|0,4,0)|0;f=M;if((g|0)<(f|0)|(g|0)==(f|0)&h>>>0>>0){j=0;r=m;return j|0}h=(k[b>>2]|0)+d|0;h=l[h>>0]|l[h+1>>0]<<8|l[h+2>>0]<<16|l[h+3>>0]<<24;d=c;k[d>>2]=e;k[d+4>>2]=f;d=a+96|0;c=(k[d>>2]|0)+h|0;k[d>>2]=c;d=a+100|0;k[i>>2]=0;e=a+104|0;h=k[e>>2]|0;g=k[d>>2]|0;f=h-g>>2;if(c>>>0<=f>>>0){if(c>>>0>>0?(j=g+(c<<2)|0,(h|0)!=(j|0)):0)k[e>>2]=h+(~((h+-4-j|0)>>>2)<<2)}else Of(d,c-f|0,i);j=ue(a+112|0,b)|0;r=m;return j|0}function Tf(a,b){a=a|0;b=b|0;var c=0,d=0,e=Pa;if((b|0)!=1){if(b+-1&b)b=eb(b)|0}else b=2;d=k[a+4>>2]|0;if(b>>>0>d>>>0){Ac(a,b);return}if(b>>>0>=d>>>0)return;e=da((k[a+12>>2]|0)>>>0);c=~~da(_(da(e/da(o[a+16>>2]))))>>>0;if(d>>>0>2&(d+-1&d|0)==0)c=1<<32-(ca(c+-1|0)|0);else c=eb(c)|0;b=b>>>0>>0?c:b;if(b>>>0>=d>>>0)return;Ac(a,b);return}function Uf(a,b){a=a|0;b=b|0;var c=0,d=0,e=Pa;if((b|0)!=1){if(b+-1&b)b=eb(b)|0}else b=2;d=k[a+4>>2]|0;if(b>>>0>d>>>0){Rc(a,b);return}if(b>>>0>=d>>>0)return;e=da((k[a+12>>2]|0)>>>0);c=~~da(_(da(e/da(o[a+16>>2]))))>>>0;if(d>>>0>2&(d+-1&d|0)==0)c=1<<32-(ca(c+-1|0)|0);else c=eb(c)|0;b=b>>>0>>0?c:b;if(b>>>0>=d>>>0)return;Rc(a,b);return}function Vf(a,b){a=a|0;b=b|0;var c=0,d=0,e=Pa;if((b|0)!=1){if(b+-1&b)b=eb(b)|0}else b=2;d=k[a+4>>2]|0;if(b>>>0>d>>>0){bd(a,b);return}if(b>>>0>=d>>>0)return;e=da((k[a+12>>2]|0)>>>0);c=~~da(_(da(e/da(o[a+16>>2]))))>>>0;if(d>>>0>2&(d+-1&d|0)==0)c=1<<32-(ca(c+-1|0)|0);else c=eb(c)|0;b=b>>>0>>0?c:b;if(b>>>0>=d>>>0)return;bd(a,b);return}function Wf(a,b){a=a|0;b=b|0;var c=0,d=0,e=Pa;if((b|0)!=1){if(b+-1&b)b=eb(b)|0}else b=2;d=k[a+4>>2]|0;if(b>>>0>d>>>0){xd(a,b);return}if(b>>>0>=d>>>0)return;e=da((k[a+12>>2]|0)>>>0);c=~~da(_(da(e/da(o[a+16>>2]))))>>>0;if(d>>>0>2&(d+-1&d|0)==0)c=1<<32-(ca(c+-1|0)|0);else c=eb(c)|0;b=b>>>0>>0?c:b;if(b>>>0>=d>>>0)return;xd(a,b);return}function Xf(a,b){a=a|0;b=b|0;var c=0,d=0,e=Pa;if((b|0)!=1){if(b+-1&b)b=eb(b)|0}else b=2;d=k[a+4>>2]|0;if(b>>>0>d>>>0){Bc(a,b);return}if(b>>>0>=d>>>0)return;e=da((k[a+12>>2]|0)>>>0);c=~~da(_(da(e/da(o[a+16>>2]))))>>>0;if(d>>>0>2&(d+-1&d|0)==0)c=1<<32-(ca(c+-1|0)|0);else c=eb(c)|0;b=b>>>0>>0?c:b;if(b>>>0>=d>>>0)return;Bc(a,b);return}function Yf(a,b){a=a|0;b=b|0;var c=0,d=0,e=Pa;if((b|0)!=1){if(b+-1&b)b=eb(b)|0}else b=2;d=k[a+4>>2]|0;if(b>>>0>d>>>0){Sc(a,b);return}if(b>>>0>=d>>>0)return;e=da((k[a+12>>2]|0)>>>0);c=~~da(_(da(e/da(o[a+16>>2]))))>>>0;if(d>>>0>2&(d+-1&d|0)==0)c=1<<32-(ca(c+-1|0)|0);else c=eb(c)|0;b=b>>>0>>0?c:b;if(b>>>0>=d>>>0)return;Sc(a,b);return}function Zf(a,b){a=a|0;b=b|0;var c=0,d=0,e=Pa;if((b|0)!=1){if(b+-1&b)b=eb(b)|0}else b=2;d=k[a+4>>2]|0;if(b>>>0>d>>>0){cd(a,b);return}if(b>>>0>=d>>>0)return;e=da((k[a+12>>2]|0)>>>0);c=~~da(_(da(e/da(o[a+16>>2]))))>>>0;if(d>>>0>2&(d+-1&d|0)==0)c=1<<32-(ca(c+-1|0)|0);else c=eb(c)|0;b=b>>>0>>0?c:b;if(b>>>0>=d>>>0)return;cd(a,b);return}function _f(a,b){a=a|0;b=b|0;var c=0,d=0,e=Pa;if((b|0)!=1){if(b+-1&b)b=eb(b)|0}else b=2;d=k[a+4>>2]|0;if(b>>>0>d>>>0){Cc(a,b);return}if(b>>>0>=d>>>0)return;e=da((k[a+12>>2]|0)>>>0);c=~~da(_(da(e/da(o[a+16>>2]))))>>>0;if(d>>>0>2&(d+-1&d|0)==0)c=1<<32-(ca(c+-1|0)|0);else c=eb(c)|0;b=b>>>0>>0?c:b;if(b>>>0>=d>>>0)return;Cc(a,b);return}function $f(a,b){a=a|0;b=b|0;var c=0,d=0,e=Pa;if((b|0)!=1){if(b+-1&b)b=eb(b)|0}else b=2;d=k[a+4>>2]|0;if(b>>>0>d>>>0){Tc(a,b);return}if(b>>>0>=d>>>0)return;e=da((k[a+12>>2]|0)>>>0);c=~~da(_(da(e/da(o[a+16>>2]))))>>>0;if(d>>>0>2&(d+-1&d|0)==0)c=1<<32-(ca(c+-1|0)|0);else c=eb(c)|0;b=b>>>0>>0?c:b;if(b>>>0>=d>>>0)return;Tc(a,b);return}function ag(a,b){a=a|0;b=b|0;var c=0,d=0,e=Pa;if((b|0)!=1){if(b+-1&b)b=eb(b)|0}else b=2;d=k[a+4>>2]|0;if(b>>>0>d>>>0){dd(a,b);return}if(b>>>0>=d>>>0)return;e=da((k[a+12>>2]|0)>>>0);c=~~da(_(da(e/da(o[a+16>>2]))))>>>0;if(d>>>0>2&(d+-1&d|0)==0)c=1<<32-(ca(c+-1|0)|0);else c=eb(c)|0;b=b>>>0>>0?c:b;if(b>>>0>=d>>>0)return;dd(a,b);return}function bg(a,b){a=a|0;b=b|0;var c=0,d=0,e=Pa;if((b|0)!=1){if(b+-1&b)b=eb(b)|0}else b=2;d=k[a+4>>2]|0;if(b>>>0>d>>>0){yd(a,b);return}if(b>>>0>=d>>>0)return;e=da((k[a+12>>2]|0)>>>0);c=~~da(_(da(e/da(o[a+16>>2]))))>>>0;if(d>>>0>2&(d+-1&d|0)==0)c=1<<32-(ca(c+-1|0)|0);else c=eb(c)|0;b=b>>>0>>0?c:b;if(b>>>0>=d>>>0)return;yd(a,b);return}function cg(a,b){a=a|0;b=b|0;var c=0,d=0,e=0,f=0,g=0;g=a+4|0;e=k[g>>2]|0;c=k[a>>2]|0;d=(e-c|0)/116|0;if(d>>>0>>0){ce(a,b-d|0);return}if(d>>>0<=b>>>0)return;f=c+(b*116|0)|0;if((e|0)==(f|0))return;do{k[g>>2]=e+-116;a=k[e+-12>>2]|0;b=a;if(a|0){c=e+-8|0;d=k[c>>2]|0;if((d|0)!=(a|0))k[c>>2]=d+(~((d+-4-b|0)>>>2)<<2);Vl(a)}a=k[e+-28>>2]|0;b=a;if(a|0){c=e+-24|0;d=k[c>>2]|0;if((d|0)!=(a|0))k[c>>2]=d+(~((d+-4-b|0)>>>2)<<2);Vl(a)}a=k[e+-40>>2]|0;b=a;if(a|0){c=e+-36|0;d=k[c>>2]|0;if((d|0)!=(a|0))k[c>>2]=d+(~((d+-4-b|0)>>>2)<<2);Vl(a)}Zg(e+-112|0);e=k[g>>2]|0}while((e|0)!=(f|0));return}function dg(a,b,c,d,e){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;var f=0,g=0,h=0,i=0,j=0,l=0,m=0,n=0;n=r;r=r+32|0;i=n+16|0;j=n+8|0;l=n;m=k[b>>2]|0;h=k[a+8>>2]<<1;if((m|0)>(h|0))Ka(8471,8506,111,8612);f=k[b+4>>2]|0;if((f|0)>(h|0))Ka(8633,8506,112,8612);g=k[c+(e<<2)>>2]|0;if((g|0)>(h|0))Ka(8668,8506,113,8612);b=k[c+(e+1<<2)>>2]|0;if((b|0)>(h|0))Ka(8708,8506,114,8612);if((m|0)<=-1)Ka(8752,8506,116,8612);if((f|0)<=-1)Ka(8774,8506,117,8612);if((g|0)<=-1)Ka(8796,8506,118,8612);if((b|0)>-1){k[j>>2]=m;k[j+4>>2]=f;k[l>>2]=g;k[l+4>>2]=b;ad(i,a,j,l);k[d>>2]=k[i>>2];k[d+4>>2]=k[i+4>>2];r=n;return}else Ka(8823,8506,119,8612)}function eg(a,b){a=a|0;b=b|0;var c=0,d=0,e=Pa,f=0,g=0,h=0,j=0,l=0,m=0,n=0,o=0,p=0;p=r;r=r+16|0;m=p;n=a+8|0;j=i[(k[n>>2]|0)+24>>0]<<2;if(!b){r=p;return 1}o=a+16|0;l=a+20|0;e=da(da((1<>2])+-1|0)+da(-1.0));a=0;c=0;d=0;while(1){f=d|1;g=k[l>>2]|0;h=k[o>>2]|0;if(g-h>>2>>>0<=d>>>0){a=6;break}if(g-h>>2>>>0<=f>>>0){a=8;break}af(da(da(k[h+(d<<2)>>2]|0)/e),da(da(k[h+(f<<2)>>2]|0)/e),m);Mh((k[k[(k[n>>2]|0)+64>>2]>>2]|0)+a|0,m|0,j|0)|0;c=c+1|0;if((c|0)==(b|0)){a=3;break}else{a=a+j|0;d=d+2|0}}if((a|0)==3){r=p;return 1}else if((a|0)==6)_k(o);else if((a|0)==8)_k(o);return 0}function fg(a,b,c,d,e){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;var f=0,g=0,h=0,i=0,j=0,l=0,m=0,n=0;n=r;r=r+32|0;i=n+16|0;j=n+8|0;l=n;m=k[b>>2]|0;h=k[a+8>>2]<<1;if((m|0)>(h|0))Ka(8471,11103,107,8612);f=k[b+4>>2]|0;if((f|0)>(h|0))Ka(8633,11103,108,8612);g=k[c+(e<<2)>>2]|0;if((g|0)>(h|0))Ka(8668,11103,109,8612);b=k[c+(e+1<<2)>>2]|0;if((b|0)>(h|0))Ka(8708,11103,110,8612);if((m|0)<=-1)Ka(8752,11103,112,8612);if((f|0)<=-1)Ka(8774,11103,113,8612);if((g|0)<=-1)Ka(8796,11103,114,8612);if((b|0)>-1){k[i>>2]=g;k[i+4>>2]=b;k[l>>2]=m;k[l+4>>2]=f;_d(j,a,l,i);k[d>>2]=k[j>>2];k[d+4>>2]=k[j+4>>2];r=n;return}else Ka(8823,11103,115,8612)}function gg(a,b){a=a|0;b=b|0;var c=0,d=0,e=Pa;if((b|0)!=1){if(b+-1&b)b=eb(b)|0}else b=2;d=k[a+4>>2]|0;if(b>>>0>d>>>0){zd(a,b);return}if(b>>>0>=d>>>0)return;e=da((k[a+12>>2]|0)>>>0);c=~~da(_(da(e/da(o[a+16>>2]))))>>>0;if(d>>>0>2&(d+-1&d|0)==0)c=1<<32-(ca(c+-1|0)|0);else c=eb(c)|0;b=b>>>0>>0?c:b;if(b>>>0>=d>>>0)return;zd(a,b);return}function hg(a,b,c){a=a|0;b=b|0;c=c|0;var d=0,e=0,f=0,g=0;f=b&255;d=(c|0)!=0;a:do if(d&(a&3|0)!=0){e=b&255;while(1){if((i[a>>0]|0)==e<<24>>24){g=6;break a}a=a+1|0;c=c+-1|0;d=(c|0)!=0;if(!(d&(a&3|0)!=0)){g=5;break}}}else g=5;while(0);if((g|0)==5)if(d)g=6;else c=0;b:do if((g|0)==6){e=b&255;if((i[a>>0]|0)!=e<<24>>24){d=$(f,16843009)|0;c:do if(c>>>0>3)while(1){f=k[a>>2]^d;if((f&-2139062144^-2139062144)&f+-16843009|0)break;a=a+4|0;c=c+-4|0;if(c>>>0<=3){g=11;break c}}else g=11;while(0);if((g|0)==11)if(!c){c=0;break}while(1){if((i[a>>0]|0)==e<<24>>24)break b;a=a+1|0;c=c+-1|0;if(!c){c=0;break}}}}while(0);return (c|0?a:0)|0}function ig(a,b){a=a|0;b=b|0;var c=0,d=0,e=0,f=0,g=0,h=0,i=0,j=0,l=0;i=r;r=r+32|0;f=i+16|0;c=i+8|0;d=i;g=a+8|0;if(k[g>>2]<<5>>>0>=b>>>0){r=i;return}k[f>>2]=0;h=f+4|0;k[h>>2]=0;e=f+8|0;k[e>>2]=0;if((b|0)<0)$k(f);l=((b+-1|0)>>>5)+1|0;j=vj(l<<2)|0;k[f>>2]=j;k[h>>2]=0;k[e>>2]=l;l=k[a>>2]|0;k[c>>2]=l;k[c+4>>2]=0;j=a+4|0;b=k[j>>2]|0;k[d>>2]=l+(b>>>5<<2);k[d+4>>2]=b&31;kf(f,c,d);b=k[a>>2]|0;k[a>>2]=k[f>>2];k[f>>2]=b;f=k[j>>2]|0;k[j>>2]=k[h>>2];k[h>>2]=f;h=k[g>>2]|0;k[g>>2]=k[e>>2];k[e>>2]=h;if(b|0)Vl(b);r=i;return}function jg(a,b,c){a=a|0;b=b|0;c=c|0;var d=0,e=0,f=0,g=0,h=0,i=0,j=0,l=0,m=0,n=0,o=0;i=(k[b+4>>2]|0)-(k[b>>2]|0)|0;l=i>>2;j=a+8|0;d=k[(k[j>>2]|0)+40>>2]|0;m=Sl((d|0)>-1?d:-1)|0;e=c+8|0;if((i|0)<=0){c=1;Tl(m);return c|0}f=c+16|0;b=0;a=0;while(1){o=e;n=k[o>>2]|0;o=k[o+4>>2]|0;h=f;g=k[h>>2]|0;h=mk(g|0,k[h+4>>2]|0,d|0,0)|0;i=M;if((o|0)<(i|0)|(o|0)==(i|0)&n>>>0>>0){b=0;a=5;break}Mh(m|0,(k[c>>2]|0)+g|0,d|0)|0;o=f;k[o>>2]=h;k[o+4>>2]=i;Mh((k[k[(k[j>>2]|0)+64>>2]>>2]|0)+b|0,m|0,d|0)|0;a=a+1|0;if((a|0)>=(l|0)){b=1;a=5;break}else b=b+d|0}if((a|0)==5){Tl(m);return b|0}return 0}function kg(a,b){a=a|0;b=b|0;var c=0,d=0,e=0,f=0,g=0,h=0,i=0;h=r;r=r+16|0;d=h;c=k[(k[a>>2]|0)+8>>2]|0;f=a+4|0;g=a+8|0;e=(k[g>>2]|0)-(k[f>>2]|0)>>2;i=k[b>>2]|0;k[b>>2]=0;k[d>>2]=i;Wa[c&7](a,e,d);e=k[d>>2]|0;k[d>>2]=0;if(!e){g=k[g>>2]|0;i=k[f>>2]|0;i=g-i|0;i=i>>2;i=i+-1|0;r=h;return i|0}a=k[e+68>>2]|0;b=a;if(a|0){c=e+72|0;d=k[c>>2]|0;if((d|0)!=(a|0))k[c>>2]=d+(~((d+-4-b|0)>>>2)<<2);Vl(a)}i=e+64|0;a=k[i>>2]|0;k[i>>2]=0;if(a|0){b=k[a>>2]|0;if(b|0){c=a+4|0;if((k[c>>2]|0)!=(b|0))k[c>>2]=b;Vl(b)}Vl(a)}Vl(e);g=k[g>>2]|0;i=k[f>>2]|0;i=g-i|0;i=i>>2;i=i+-1|0;r=h;return i|0}function lg(a,b,c,d){a=a|0;b=b|0;c=c|0;d=d|0;var e=0,f=0,g=0;f=k[c+4>>2]|0;if((b|0)<=-1)Ka(12941,12957,54,12985);e=k[f+4>>2]|0;if(((k[f+8>>2]|0)-e>>2|0)<=(b|0))Ka(12995,12957,55,12985);e=k[e+(b<<2)>>2]|0;if((Va[k[(k[c>>2]|0)+8>>2]&127](c)|0)==1?(g=ic(c,a,b,d,El(j[c+24>>1]|0)|0)|0,g|0):0){d=g;return d|0}if((a|0)==-2){d=0;return d|0}g=vj(20)|0;k[g+4>>2]=e;c=g+8|0;k[c>>2]=k[d>>2];k[c+4>>2]=k[d+4>>2];k[c+8>>2]=k[d+8>>2];k[g>>2]=4160;d=g;return d|0}function mg(a,b){a=a|0;b=b|0;var c=0,d=0,e=0,f=0,g=0,h=0;f=r;r=r+16|0;c=f+4|0;d=f;e=f+8|0;i[e>>0]=a&127;if(a>>>0>127){i[e>>0]=a|128;g=b+16|0;h=k[g+4>>2]|0;if(!((h|0)>0|(h|0)==0&(k[g>>2]|0)>>>0>0)){k[d>>2]=k[b+4>>2];k[c>>2]=k[d>>2];he(b,c,e,e+1|0)|0}mg(a>>>7,b);r=f;return}else{h=b+16|0;g=k[h+4>>2]|0;if(!((g|0)>0|(g|0)==0&(k[h>>2]|0)>>>0>0)){k[d>>2]=k[b+4>>2];k[c>>2]=k[d>>2];he(b,c,e,e+1|0)|0}r=f;return}}function ng(a,b,c,d){a=a|0;b=b|0;c=c|0;d=d|0;var e=0,f=0,g=0;f=k[c+4>>2]|0;if((b|0)<=-1)Ka(12941,12957,54,12985);e=k[f+4>>2]|0;if(((k[f+8>>2]|0)-e>>2|0)<=(b|0))Ka(12995,12957,55,12985);e=k[e+(b<<2)>>2]|0;if((Va[k[(k[c>>2]|0)+8>>2]&127](c)|0)==1?(g=jc(c,a,b,d,El(j[c+24>>1]|0)|0)|0,g|0):0){d=g;return d|0}if((a|0)==-2){d=0;return d|0}g=vj(20)|0;k[g+4>>2]=e;c=g+8|0;k[c>>2]=k[d>>2];k[c+4>>2]=k[d+4>>2];k[c+8>>2]=k[d+8>>2];k[g>>2]=4736;d=g;return d|0}function og(a,b){a=a|0;b=b|0;var c=0,d=0,e=0,f=0;if((Va[k[(k[b>>2]|0)+20>>2]&127](b)|0)<=0){b=1;return b|0}f=a+4|0;a=0;while(1){c=k[(k[f>>2]|0)+4>>2]|0;c=Ti(c,Za[k[(k[b>>2]|0)+24>>2]&127](b,a)|0)|0;if((c|0)==-1){a=0;c=10;break}d=k[(k[f>>2]|0)+4>>2]|0;if((c|0)<=-1){c=6;break}e=k[d+4>>2]|0;if(((k[d+8>>2]|0)-e>>2|0)<=(c|0)){c=8;break}a=a+1|0;if(!(Za[k[(k[b>>2]|0)+28>>2]&127](b,k[e+(c<<2)>>2]|0)|0)){a=0;c=10;break}if((a|0)>=(Va[k[(k[b>>2]|0)+20>>2]&127](b)|0)){a=1;c=10;break}}if((c|0)==6)Ka(12941,12957,62,12985);else if((c|0)==8)Ka(12995,12957,63,12985);else if((c|0)==10)return a|0;return 0}function pg(a,b){a=a|0;b=b|0;var c=0,d=0,e=0,f=0,g=0;g=a+4|0;c=k[g>>2]|0;d=k[a>>2]|0;e=c-d>>2;if(e>>>0>>0){Ge(a,b-e|0);return}if(e>>>0<=b>>>0)return;f=d+(b<<2)|0;if((c|0)==(f|0))return;do{d=c+-4|0;k[g>>2]=d;e=k[d>>2]|0;k[d>>2]=0;if(e|0){c=k[e+68>>2]|0;a=c;if(c|0){b=e+72|0;d=k[b>>2]|0;if((d|0)!=(c|0))k[b>>2]=d+(~((d+-4-a|0)>>>2)<<2);Vl(c)}d=e+64|0;c=k[d>>2]|0;k[d>>2]=0;if(c|0){a=k[c>>2]|0;if(a|0){b=c+4|0;if((k[b>>2]|0)!=(a|0))k[b>>2]=a;Vl(a)}Vl(c)}Vl(e)}c=k[g>>2]|0}while((c|0)!=(f|0));return}function qg(a){a=a|0;var b=0,c=0,d=0,e=0,f=0,g=0,h=0;g=k[a+4>>2]|0;h=a+8|0;b=k[h>>2]|0;if((b|0)!=(g|0))do{k[h>>2]=b+-116;f=k[b+-12>>2]|0;c=f;if(f|0){d=b+-8|0;e=k[d>>2]|0;if((e|0)!=(f|0))k[d>>2]=e+(~((e+-4-c|0)>>>2)<<2);Vl(f)}c=k[b+-28>>2]|0;d=c;if(c|0){e=b+-24|0;f=k[e>>2]|0;if((f|0)!=(c|0))k[e>>2]=f+(~((f+-4-d|0)>>>2)<<2);Vl(c)}c=k[b+-40>>2]|0;d=c;if(c|0){e=b+-36|0;f=k[e>>2]|0;if((f|0)!=(c|0))k[e>>2]=f+(~((f+-4-d|0)>>>2)<<2);Vl(c)}Zg(b+-112|0);b=k[h>>2]|0}while((b|0)!=(g|0));b=k[a>>2]|0;if(!b)return;Vl(b);return}function rg(a,b){a=a|0;b=b|0;var c=0,d=0,e=0,f=0,g=0,h=0,i=0,j=0;h=a+4|0;e=k[h>>2]|0;i=k[a>>2]|0;c=((e-i|0)/12|0)+1|0;if(c>>>0>357913941)$k(a);j=a+8|0;g=((k[j>>2]|0)-i|0)/12|0;f=g<<1;f=g>>>0<178956970?(f>>>0>>0?c:f):357913941;c=(e-i|0)/12|0;do if(f)if(f>>>0>357913941){j=Ma(4)|0;Fl(j);xa(j|0,976,90)}else{g=vj(f*12|0)|0;break}else g=0;while(0);d=g+(c*12|0)|0;k[d>>2]=k[b>>2];k[d+4>>2]=k[b+4>>2];k[d+8>>2]=k[b+8>>2];c=e-i|0;b=d+(((c|0)/-12|0)*12|0)|0;if((c|0)>0)Mh(b|0,i|0,c|0)|0;k[a>>2]=b;k[h>>2]=d+12;k[j>>2]=g+(f*12|0);if(!i)return;Vl(i);return}function sg(a){a=a|0;var b=0,c=0,d=0,e=0,f=0,g=0,h=0;b=k[a>>2]|0;if(!b)return;h=a+4|0;c=k[h>>2]|0;if((c|0)!=(b|0)){do{k[h>>2]=c+-116;g=k[c+-12>>2]|0;d=g;if(g|0){e=c+-8|0;f=k[e>>2]|0;if((f|0)!=(g|0))k[e>>2]=f+(~((f+-4-d|0)>>>2)<<2);Vl(g)}d=k[c+-28>>2]|0;e=d;if(d|0){f=c+-24|0;g=k[f>>2]|0;if((g|0)!=(d|0))k[f>>2]=g+(~((g+-4-e|0)>>>2)<<2);Vl(d)}d=k[c+-40>>2]|0;e=d;if(d|0){f=c+-36|0;g=k[f>>2]|0;if((g|0)!=(d|0))k[f>>2]=g+(~((g+-4-e|0)>>>2)<<2);Vl(d)}Zg(c+-112|0);c=k[h>>2]|0}while((c|0)!=(b|0));b=k[a>>2]|0}Vl(b);return}function tg(a,b,c){a=a|0;b=b|0;c=c|0;var d=0,e=0,f=0;e=r;r=r+16|0;d=e;switch(c|0){case 2:{f=k[a+12>>2]|0;c=k[a+4>>2]|0;k[d>>2]=0;k[d+4>>2]=0;k[d+8>>2]=0;d=ng(b,f,c,d)|0;r=e;return d|0}case 3:{c=k[a+12>>2]|0;f=k[a+4>>2]|0;k[d>>2]=0;k[d+4>>2]=0;k[d+8>>2]=0;f=lg(b,c,f,d)|0;r=e;return f|0}default:{f=0;r=e;return f|0}}return 0}function ug(a,b){a=a|0;b=b|0;var c=0,d=0,e=0,f=0,g=0,h=0,i=0;h=r;r=r+16|0;e=h+4|0;g=h;c=a+12|0;d=b+16|0;f=d;i=k[f+4>>2]|0;if((i|0)>0|(i|0)==0&(k[f>>2]|0)>>>0>0){r=h;return 1}f=b+4|0;k[g>>2]=k[f>>2];k[e>>2]=k[g>>2];he(b,e,c,c+4|0)|0;i=d;d=k[i+4>>2]|0;a=a+16|0;if((d|0)>0|(d|0)==0&(k[i>>2]|0)>>>0>0){r=h;return 1}k[g>>2]=k[f>>2];k[e>>2]=k[g>>2];he(b,e,a,a+4|0)|0;r=h;return 1}function vg(a){a=a|0;var b=0,c=0,d=0;k[a>>2]=5700;b=a+100|0;c=a+4|0;d=c+96|0;do{k[c>>2]=0;c=c+4|0}while((c|0)<(d|0));k[b>>2]=-1;k[a+104>>2]=-1;k[a+108>>2]=-1;b=a+168|0;c=a+112|0;d=c+56|0;do{k[c>>2]=0;c=c+4|0}while((c|0)<(d|0));o[b>>2]=da(1.0);b=a+240|0;c=a+172|0;d=c+68|0;do{k[c>>2]=0;c=c+4|0}while((c|0)<(d|0));pj(b);pj(a+280|0);d=a+320|0;k[d>>2]=0;k[d+4>>2]=0;k[d+8>>2]=0;k[d+12>>2]=0;k[d+16>>2]=0;k[d+20>>2]=0;k[d+24>>2]=0;k[d+28>>2]=0;k[a+352>>2]=-1;k[a+356>>2]=-1;k[a+360>>2]=2;k[a+364>>2]=7;d=a+368|0;k[d>>2]=0;k[d+4>>2]=0;k[d+8>>2]=0;k[d+12>>2]=0;k[d+16>>2]=0;k[d+20>>2]=0;return}function wg(a,b){a=a|0;b=b|0;var c=0,d=0,e=0,f=0,g=0,h=0,i=0,j=0,l=0;j=a+8|0;d=k[j>>2]|0;l=a+4|0;h=k[l>>2]|0;if(d-h>>2>>>0>=b>>>0){Zh(h|0,0,b<<2|0)|0;k[l>>2]=h+(b<<2);return}i=k[a>>2]|0;c=(h-i>>2)+b|0;if(c>>>0>1073741823)$k(a);g=d-i|0;f=g>>1;f=g>>2>>>0<536870911?(f>>>0>>0?c:f):1073741823;c=h-i>>2;do if(f)if(f>>>0>1073741823){l=Ma(4)|0;Fl(l);xa(l|0,976,90)}else{g=vj(f<<2)|0;break}else g=0;while(0);e=g+(c<<2)|0;Zh(e|0,0,b<<2|0)|0;c=h-i|0;d=e+(0-(c>>2)<<2)|0;if((c|0)>0)Mh(d|0,i|0,c|0)|0;k[a>>2]=d;k[l>>2]=e+(b<<2);k[j>>2]=g+(f<<2);if(!i)return;Vl(i);return}function xg(a){a=a|0;var b=0,c=0,d=0,e=0;k[a>>2]=3116;b=k[a+52>>2]|0;c=b;if(b|0){d=a+56|0;e=k[d>>2]|0;if((e|0)!=(b|0))k[d>>2]=e+(~((e+-4-c|0)>>>2)<<2);Vl(b)}b=k[a+40>>2]|0;c=b;if(b|0){d=a+44|0;e=k[d>>2]|0;if((e|0)!=(b|0))k[d>>2]=e+(~((e+-4-c|0)>>>2)<<2);Vl(b)}b=k[a+28>>2]|0;c=b;if(b|0){d=a+32|0;e=k[d>>2]|0;if((e|0)!=(b|0))k[d>>2]=e+(~((e+-4-c|0)>>>2)<<2);Vl(b)}b=k[a+16>>2]|0;if(!b){a=a+4|0;Gg(a);return}c=a+20|0;d=k[c>>2]|0;if((d|0)!=(b|0))k[c>>2]=d+(~((d+-4-b|0)>>>2)<<2);Vl(b);a=a+4|0;Gg(a);return}function yg(a){a=a|0;var b=0,c=0,d=0,e=0,f=0;k[a>>2]=5312;e=a+48|0;b=k[e>>2]|0;k[e>>2]=0;if(b|0)Ta[k[(k[b>>2]|0)+4>>2]&127](b);e=k[a+36>>2]|0;b=e;if(e|0){c=a+40|0;d=k[c>>2]|0;if((d|0)!=(e|0))k[c>>2]=d+(~((d+-4-b|0)>>>2)<<2);Vl(e)}d=a+24|0;b=k[d>>2]|0;if(b|0){e=a+28|0;c=k[e>>2]|0;if((c|0)!=(b|0)){do{f=c+-4|0;k[e>>2]=f;c=k[f>>2]|0;k[f>>2]=0;if(c|0)Ta[k[(k[c>>2]|0)+4>>2]&127](c);c=k[e>>2]|0}while((c|0)!=(b|0));b=k[d>>2]|0}Vl(b)}k[a>>2]=3188;d=k[a+4>>2]|0;if(!d)return;b=a+8|0;c=k[b>>2]|0;if((c|0)!=(d|0))k[b>>2]=c+(~((c+-4-d|0)>>>2)<<2);Vl(d);return}function zg(a){a=a|0;var b=0,c=0,d=0,e=0,f=0,g=0;g=r;r=r+64|0;f=g;b=g+40|0;c=f;d=a;e=c+40|0;do{k[c>>2]=k[d>>2];c=c+4|0;d=d+4|0}while((c|0)<(e|0));a:do if(Yd(f,b)|0?(i[b+7>>0]|0)==1:0){switch(i[b+8>>0]|0){case 0:{d=vj(32)|0;bl(d);break}case 1:{d=vj(36)|0;zk(d);break}default:{b=0;break a}}e=vj(92)|0;oj(e);b=Cj(d,a,e)|0;c=b?0:e;if(!b)Ta[k[(k[c>>2]|0)+4>>2]&127](c);Ta[k[(k[d>>2]|0)+4>>2]&127](d);b=b?e:0}else b=0;while(0);Yl(f+24|0);r=g;return b|0}function Ag(a){a=a|0;var b=0,c=0,d=0,e=0;b=k[a+92>>2]|0;c=b;if(b|0){d=a+96|0;e=k[d>>2]|0;if((e|0)!=(b|0))k[d>>2]=e+(~((e+-4-c|0)>>>2)<<2);Vl(b)}b=k[a+76>>2]|0;c=b;if(b|0){d=a+80|0;e=k[d>>2]|0;if((e|0)!=(b|0))k[d>>2]=e+(~((e+-4-c|0)>>>2)<<2);Vl(b)}b=k[a+64>>2]|0;c=b;if(b|0){d=a+68|0;e=k[d>>2]|0;if((e|0)!=(b|0))k[d>>2]=e+(~((e+-4-c|0)>>>2)<<2);Vl(b)}b=k[a+52>>2]|0;c=b;if(b|0){d=a+56|0;e=k[d>>2]|0;if((e|0)!=(b|0))k[d>>2]=e+(~((e+-4-c|0)>>>2)<<2);Vl(b)}k[a+4>>2]=5608;b=k[a+24>>2]|0;if(b|0)Vl(b);b=k[a+12>>2]|0;if(!b)return;Vl(b);return}function Bg(a,b){a=a|0;b=b|0;var c=0,d=0,e=0,f=0,g=0,h=0,j=0;h=a+8|0;e=k[h>>2]|0;j=a+4|0;c=k[j>>2]|0;if((e-c|0)>>>0>=b>>>0){do{i[c>>0]=0;c=(k[j>>2]|0)+1|0;k[j>>2]=c;b=b+-1|0}while((b|0)!=0);return}f=k[a>>2]|0;d=c-f+b|0;if((d|0)<0)$k(a);e=e-f|0;g=e<<1;d=e>>>0<1073741823?(g>>>0>>0?d:g):2147483647;if(!d)e=0;else e=vj(d)|0;g=e+(c-f)|0;f=e+d|0;e=g;c=g;do{i[c>>0]=0;c=e+1|0;e=c;b=b+-1|0}while((b|0)!=0);b=k[a>>2]|0;d=(k[j>>2]|0)-b|0;c=g+(0-d)|0;if((d|0)>0)Mh(c|0,b|0,d|0)|0;k[a>>2]=c;k[j>>2]=e;k[h>>2]=f;if(!b)return;Vl(b);return}function Cg(){var a=0,b=0,c=0,d=0,e=0,f=0,g=0,h=0;e=r;r=r+48|0;g=e+32|0;c=e+24|0;h=e+16|0;f=e;e=e+36|0;a=qj()|0;if(a|0?(d=k[a>>2]|0,d|0):0){a=d+48|0;b=k[a>>2]|0;a=k[a+4>>2]|0;if(!((b&-256|0)==1126902528&(a|0)==1129074247)){k[c>>2]=k[1566];Sj(17059,c)}if((b|0)==1126902529&(a|0)==1129074247)a=k[d+44>>2]|0;else a=d+80|0;k[e>>2]=a;d=k[d>>2]|0;a=k[d+4>>2]|0;if(Ra[k[(k[228]|0)+16>>2]&31](912,d,e)|0){h=k[e>>2]|0;e=k[1566]|0;h=Va[k[(k[h>>2]|0)+8>>2]&127](h)|0;k[f>>2]=e;k[f+4>>2]=a;k[f+8>>2]=h;Sj(16973,f)}else{k[h>>2]=k[1566];k[h+4>>2]=a;Sj(17018,h)}}Sj(17097,g)}function Dg(a,b,c){a=a|0;b=b|0;c=c|0;var d=0,e=0,f=0,g=0;d=c+16|0;e=k[d>>2]|0;if(!e)if(!(pi(c)|0)){d=k[d>>2]|0;f=5}else d=0;else{d=e;f=5}a:do if((f|0)==5){g=c+20|0;f=k[g>>2]|0;e=f;if((d-f|0)>>>0>>0){d=Ra[k[c+36>>2]&31](c,a,b)|0;break}b:do if((i[c+75>>0]|0)>-1){d=b;while(1){if(!d){f=b;d=0;break b}f=d+-1|0;if((i[a+f>>0]|0)==10)break;else d=f}if((Ra[k[c+36>>2]&31](c,a,d)|0)>>>0>>0)break a;f=b-d|0;a=a+d|0;e=k[g>>2]|0}else{f=b;d=0}while(0);Mh(e|0,a|0,f|0)|0;k[g>>2]=(k[g>>2]|0)+f;d=d+f|0}while(0);return d|0}function Eg(a){a=a|0;var b=0,c=0,d=0,e=0,f=0,g=0,h=0;g=k[a+4>>2]|0;h=a+8|0;b=k[h>>2]|0;if((b|0)!=(g|0))do{e=b+-4|0;k[h>>2]=e;f=k[e>>2]|0;k[e>>2]=0;if(f|0){b=k[f+68>>2]|0;c=b;if(b|0){d=f+72|0;e=k[d>>2]|0;if((e|0)!=(b|0))k[d>>2]=e+(~((e+-4-c|0)>>>2)<<2);Vl(b)}e=f+64|0;b=k[e>>2]|0;k[e>>2]=0;if(b|0){c=k[b>>2]|0;if(c|0){d=b+4|0;if((k[d>>2]|0)!=(c|0))k[d>>2]=c;Vl(c)}Vl(b)}Vl(f)}b=k[h>>2]|0}while((b|0)!=(g|0));b=k[a>>2]|0;if(!b)return;Vl(b);return}function Fg(a,b){a=a|0;b=b|0;var c=0,d=0,e=0,f=0,g=0,h=0;d=r;r=r+16|0;c=d;if(!b){c=0;r=d;return c|0}g=b+4|0;e=(((k[g>>2]|0)-(k[b>>2]|0)|0)/12|0)*3|0;i[c>>0]=0;Af(a,e,c);e=b+24|0;f=b+28|0;h=(k[f>>2]|0)-(k[e>>2]|0)>>2;i[c>>0]=0;Af(a+12|0,h,c);We(a+28|0,(((k[g>>2]|0)-(k[b>>2]|0)|0)/12|0)*3|0,3176);ch(a+52|0,(k[f>>2]|0)-(k[e>>2]|0)>>2);ch(a+40|0,(k[f>>2]|0)-(k[e>>2]|0)>>2);k[a+64>>2]=b;i[a+24>>0]=1;c=1;r=d;return c|0}function Gg(a){a=a|0;var b=0,c=0,d=0,e=0,f=0,g=0,h=0;b=k[a>>2]|0;if(!b)return;h=a+4|0;c=k[h>>2]|0;if((c|0)!=(b|0)){do{f=c+-4|0;k[h>>2]=f;g=k[f>>2]|0;k[f>>2]=0;if(g|0){c=k[g+68>>2]|0;d=c;if(c|0){e=g+72|0;f=k[e>>2]|0;if((f|0)!=(c|0))k[e>>2]=f+(~((f+-4-d|0)>>>2)<<2);Vl(c)}f=g+64|0;c=k[f>>2]|0;k[f>>2]=0;if(c|0){d=k[c>>2]|0;if(d|0){e=c+4|0;if((k[e>>2]|0)!=(d|0))k[e>>2]=d;Vl(d)}Vl(c)}Vl(g)}c=k[h>>2]|0}while((c|0)!=(b|0));b=k[a>>2]|0}Vl(b);return}function Hg(a,b,c){a=a|0;b=b|0;c=c|0;var d=0,e=0;e=r;r=r+16|0;d=e;k[a+20>>2]=b;k[a+4>>2]=c;if(!(Yd(b,d)|0)){d=0;r=e;return d|0}c=l[d+7>>0]|0;if((c|0)!=(Va[k[(k[a>>2]|0)+8>>2]&127](a)|0)){d=0;r=e;return d|0}c=i[d+5>>0]|0;i[a+24>>0]=c;d=i[d+6>>0]|0;i[a+25>>0]=d;if(c<<24>>24!=1|(d&255)>2){d=0;r=e;return d|0}if(!(Va[k[(k[a>>2]|0)+12>>2]&127](a)|0)){d=0;r=e;return d|0}if(!(Va[k[(k[a>>2]|0)+20>>2]&127](a)|0)){d=0;r=e;return d|0}d=Va[k[(k[a>>2]|0)+24>>2]&127](a)|0;r=e;return d|0}function Ig(a,b){a=a|0;b=b|0;var c=0,d=0,e=0,f=0,g=0,h=0,i=0,j=0;h=a+4|0;e=k[h>>2]|0;i=k[a>>2]|0;c=(e-i>>2)+1|0;if(c>>>0>1073741823)$k(a);j=a+8|0;g=(k[j>>2]|0)-i|0;f=g>>1;f=g>>2>>>0<536870911?(f>>>0>>0?c:f):1073741823;c=e-i>>2;do if(f)if(f>>>0>1073741823){j=Ma(4)|0;Fl(j);xa(j|0,976,90)}else{g=vj(f<<2)|0;break}else g=0;while(0);d=g+(c<<2)|0;k[d>>2]=k[b>>2];c=e-i|0;b=d+(0-(c>>2)<<2)|0;if((c|0)>0)Mh(b|0,i|0,c|0)|0;k[a>>2]=b;k[h>>2]=d+4;k[j>>2]=g+(f<<2);if(!i)return;Vl(i);return}function Jg(a){a=a|0;var b=0,c=0,d=0,e=0,f=0,g=0,h=0,i=0;i=a+4|0;h=k[i>>2]|0;d=a+8|0;a=k[d>>2]|0;e=h+4|0;c=k[e>>2]|0;b=k[h>>2]|0;f=c-b>>2;if(a>>>0<=f>>>0){if(a>>>0>>0?(g=b+(a<<2)|0,(c|0)!=(g|0)):0)k[e>>2]=c+(~((c+-4-g|0)>>>2)<<2)}else{wg(h,a-f|0);a=k[d>>2]|0}if((a|0)>0)c=0;else return 1;while(1){d=k[i>>2]|0;b=k[d>>2]|0;if((k[d+4>>2]|0)-b>>2>>>0<=c>>>0){a=10;break}k[b+(c<<2)>>2]=c;c=c+1|0;if((c|0)>=(a|0)){a=7;break}}if((a|0)==7)return 1;else if((a|0)==10)_k(d);return 0}function Kg(a,b,c,d){a=a|0;b=b|0;c=c|0;d=d|0;var e=0,f=0,g=0,h=0,j=0;if((a|0)<0){d=0;return d|0}if(!a){d=1;return d|0}h=c+8|0;j=k[h+4>>2]|0;e=c+16|0;g=e;f=k[g>>2]|0;g=k[g+4>>2]|0;if(!((j|0)>(g|0)|((j|0)==(g|0)?(k[h>>2]|0)>>>0>f>>>0:0))){j=0;return j|0}j=i[(k[c>>2]|0)+f>>0]|0;g=mk(f|0,g|0,1,0)|0;h=e;k[h>>2]=g;k[h+4>>2]=M;switch(j<<24>>24){case 0:{j=cc(a,b,c,d)|0;return j|0}case 1:{j=Dd(a,c,d)|0;return j|0}default:{j=0;return j|0}}return 0}function Lg(a,b){a=a|0;b=b|0;var c=0,d=0,e=0,f=0,g=0,h=0,j=0;c=k[a+232>>2]|0;d=k[a+228>>2]|0;h=d;if((c|0)==(d|0)){j=0;return j|0}g=k[(k[a+4>>2]|0)+8>>2]|0;f=(c-d|0)/116|0;a=0;a:while(1){c=k[g+(k[h+(a*116|0)>>2]<<2)>>2]|0;e=k[c+4>>2]|0;c=(k[c+8>>2]|0)-e|0;if((c|0)>0){d=c>>2;c=0;do{if((k[e+(c<<2)>>2]|0)==(b|0))break a;c=c+1|0}while((c|0)<(d|0))}a=a+1|0;if(a>>>0>=f>>>0){a=0;j=9;break}}if((j|0)==9)return a|0;j=(i[h+(a*116|0)+72>>0]|0)==0?0:h+(a*116|0)+4|0;return j|0}function Mg(a,b){a=a|0;b=b|0;var c=0,d=0,e=0;c=k[a>>2]|0;if(b){e=c+8|0;b=e;b=mk(k[b>>2]|0,k[b+4>>2]|0,1,0)|0;k[e>>2]=b;k[e+4>>2]=M;e=a+28|0;b=k[e>>2]|0;d=a+24|0;k[d>>2]=k[d>>2]|1<>2]|0,k[e+4>>2]|0,1,0)|0;b=c;k[b>>2]=e;k[b+4>>2]=M;b=a+28|0;e=b;b=k[b>>2]|0}d=b+1|0;k[e>>2]=d;if((d|0)!=32)return;b=a+24|0;c=a+16|0;d=k[c>>2]|0;if((d|0)==(k[a+20>>2]|0))Ig(a+12|0,b);else{k[d>>2]=k[b>>2];k[c>>2]=d+4}k[e>>2]=0;k[b>>2]=0;return}function Ng(a,b,c){a=a|0;b=b|0;c=c|0;var d=0,e=0,f=0,g=0;g=r;r=r+48|0;f=g;if((c|0)!=1){f=0;r=g;return f|0}e=k[a+12>>2]|0;c=k[a+4>>2]|0;a=f;d=a+36|0;do{k[a>>2]=0;a=a+4|0}while((a|0)<(d|0));b=Qf(b,e,c,f)|0;d=k[f+24>>2]|0;e=d;if(d|0){c=f+28|0;a=k[c>>2]|0;if((a|0)!=(d|0))k[c>>2]=a+(~((a+-4-e|0)>>>2)<<2);Vl(d)}f=b;r=g;return f|0}function Og(a,b){a=a|0;b=b|0;var c=0,d=0,e=0,f=0,g=0,h=0,i=0;c=k[a+232>>2]|0;d=k[a+228>>2]|0;i=d;a:do if((c|0)!=(d|0)){h=k[(k[a+4>>2]|0)+8>>2]|0;g=(c-d|0)/116|0;c=0;b:while(1){d=k[h+(k[i+(c*116|0)>>2]<<2)>>2]|0;f=k[d+4>>2]|0;d=(k[d+8>>2]|0)-f|0;if((d|0)>0){e=d>>2;d=0;do{if((k[f+(d<<2)>>2]|0)==(b|0))break b;d=d+1|0}while((d|0)<(e|0))}c=c+1|0;if(c>>>0>=g>>>0)break a}i=i+(c*116|0)+76|0;return i|0}while(0);i=a+200|0;return i|0}function Pg(a){a=a|0;var b=0,c=0,d=0,e=0;b=k[a+48>>2]|0;c=b;if(b|0){d=a+52|0;e=k[d>>2]|0;if((e|0)!=(b|0))k[d>>2]=e+(~((e+-4-c|0)>>>2)<<2);Vl(b)}b=k[a+24>>2]|0;c=b;if(b|0){d=a+28|0;e=k[d>>2]|0;if((e|0)!=(b|0))k[d>>2]=e+(~((e+-4-c|0)>>>2)<<2);Vl(b)}b=k[a+12>>2]|0;c=b;if(b|0){d=a+16|0;e=k[d>>2]|0;if((e|0)!=(b|0))k[d>>2]=e+(~((e+-4-c|0)>>>2)<<2);Vl(b)}d=k[a>>2]|0;if(!d)return;b=a+4|0;c=k[b>>2]|0;if((c|0)!=(d|0))k[b>>2]=c+(~(((c+-12-d|0)>>>0)/12|0)*12|0);Vl(d);return}function Qg(a,b,c,d,e){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;i[b+53>>0]=1;do if((k[b+4>>2]|0)==(d|0)){i[b+52>>0]=1;a=b+16|0;d=k[a>>2]|0;if(!d){k[a>>2]=c;k[b+24>>2]=e;k[b+36>>2]=1;if(!((e|0)==1?(k[b+48>>2]|0)==1:0))break;i[b+54>>0]=1;break}if((d|0)!=(c|0)){e=b+36|0;k[e>>2]=(k[e>>2]|0)+1;i[b+54>>0]=1;break}d=b+24|0;a=k[d>>2]|0;if((a|0)==2){k[d>>2]=e;a=e}if((a|0)==1?(k[b+48>>2]|0)==1:0)i[b+54>>0]=1}while(0);return}function Rg(a,b,c){a=a|0;b=b|0;c=c|0;var d=0,e=0;Qe(a,b,c);d=k[a+84>>2]|0;c=k[a+80>>2]|0;e=c;if((d-c|0)<=0)return;b=k[b>>2]|0;a=(d-c|0)/12|0;c=0;do{d=e+(c*12|0)|0;k[d>>2]=k[b+(k[d>>2]<<2)>>2];d=e+(c*12|0)+4|0;k[d>>2]=k[b+(k[d>>2]<<2)>>2];d=e+(c*12|0)+8|0;k[d>>2]=k[b+(k[d>>2]<<2)>>2];c=c+1|0}while((c|0)<(a|0));return}function Sg(a,b,c,d){a=a|0;b=b|0;c=c|0;d=d|0;var e=0,f=0,g=0;if((d|0)<0){c=0;return c|0}do if(!b){b=a+4|0;d=k[b>>2]|0;e=k[a>>2]|0;f=d-e|0;if(c>>>0>f>>>0){Bg(a,c-f|0);break}if(c>>>0>>0?(g=e+c|0,(d|0)!=(g|0)):0)k[b>>2]=g}else $e(a,b,b+c|0);while(0);c=a+24|0;g=c;g=mk(k[g>>2]|0,k[g+4>>2]|0,1,0)|0;k[c>>2]=g;k[c+4>>2]=M;c=1;return c|0}function Tg(a,b){a=a|0;b=b|0;var c=0,d=0,e=0,f=0,g=0;f=a+64|0;if((k[f>>2]|0)==0?(e=vj(32)|0,Bj(e),d=k[f>>2]|0,k[f>>2]=e,d|0):0){e=k[d>>2]|0;if(e|0){c=d+4|0;if((k[c>>2]|0)!=(e|0))k[c>>2]=e;Vl(e)}Vl(d)}c=Mi(k[a+28>>2]|0)|0;c=$(i[a+24>>0]|0,c)|0;d=((c|0)<0)<<31>>31;g=k[f>>2]|0;e=sj(c|0,d|0,b|0,0)|0;if(!(Sg(g,0,e,M)|0)){g=0;return g|0}Jh(a,k[f>>2]|0,c,d,0,0);k[a+80>>2]=b;g=1;return g|0}function Ug(a,b,c,d,e){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;var f=0,g=0;do if((a|0)==(k[b+8>>2]|0)){if((k[b+4>>2]|0)==(c|0)?(f=b+28|0,(k[f>>2]|0)!=1):0)k[f>>2]=d}else if((a|0)==(k[b>>2]|0)){if((k[b+16>>2]|0)!=(c|0)?(g=b+20|0,(k[g>>2]|0)!=(c|0)):0){k[b+32>>2]=d;k[g>>2]=c;e=b+40|0;k[e>>2]=(k[e>>2]|0)+1;if((k[b+36>>2]|0)==1?(k[b+24>>2]|0)==2:0)i[b+54>>0]=1;k[b+44>>2]=4;break}if((d|0)==1)k[b+32>>2]=1}while(0);return}function Vg(a,b,c){a=a|0;b=b|0;c=c|0;var d=0,e=0,f=0,g=0,h=0;g=c+8|0;h=k[g+4>>2]|0;d=c+16|0;f=d;e=k[f>>2]|0;f=k[f+4>>2]|0;if(!((h|0)>(f|0)|((h|0)==(f|0)?(k[g>>2]|0)>>>0>e>>>0:0))){h=0;return h|0}h=i[(k[c>>2]|0)+e>>0]|0;f=mk(e|0,f|0,1,0)|0;g=d;k[g>>2]=f;k[g+4>>2]=M;k[a+32>>2]=h&255;h=$c(a,b,c)|0;return h|0}function Wg(a){a=a|0;var b=0,c=0,d=0,e=0,f=0;f=r;r=r+16|0;d=f;e=d;k[e>>2]=0;k[e+4>>2]=0;Ke(a,2,d);d=k[a+12>>2]|0;e=a+16|0;b=k[e>>2]|0;c=d;if((b|0)==(d|0))b=d;else{b=b+(~((b+-4-c|0)>>>2)<<2)|0;k[e>>2]=b}k[a+24>>2]=0;k[a+28>>2]=0;if(d|0){if((b|0)!=(d|0))k[e>>2]=b+(~((b+-4-c|0)>>>2)<<2);Vl(d)}d=k[a>>2]|0;if(!d){r=f;return}b=a+4|0;c=k[b>>2]|0;if((c|0)!=(d|0))k[b>>2]=c+(~((c+-8-d|0)>>>3)<<3);Vl(d);r=f;return}function Xg(a,b,c,d,e,f){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;f=f|0;var g=0,h=0,i=0;g=a+8|0;k[g>>2]=e;f=e>>>0>1073741823?-1:e<<2;h=Sl(f)|0;Zh(h|0,0,f|0)|0;dg(g,h,b,c,0);if((e|0)>=(d|0)){Tl(h);return 1}f=0-e|0;a=e;do{i=c+(a<<2)|0;dg(g,i+(f<<2)|0,b,i,a);a=a+e|0}while((a|0)<(d|0));Tl(h);return 1}function Yg(a,b,c){a=a|0;b=b|0;c=c|0;do if(a){if(b>>>0<128){i[a>>0]=b;a=1;break}if(b>>>0<2048){i[a>>0]=b>>>6|192;i[a+1>>0]=b&63|128;a=2;break}if(b>>>0<55296|(b&-8192|0)==57344){i[a>>0]=b>>>12|224;i[a+1>>0]=b>>>6&63|128;i[a+2>>0]=b&63|128;a=3;break}if((b+-65536|0)>>>0<1048576){i[a>>0]=b>>>18|240;i[a+1>>0]=b>>>12&63|128;i[a+2>>0]=b>>>6&63|128;i[a+3>>0]=b&63|128;a=4;break}else{a=ok()|0;k[a>>2]=84;a=-1;break}}else a=1;while(0);return a|0}function Zg(a){a=a|0;var b=0,c=0,d=0,e=0;b=k[a+52>>2]|0;c=b;if(b|0){d=a+56|0;e=k[d>>2]|0;if((e|0)!=(b|0))k[d>>2]=e+(~((e+-4-c|0)>>>2)<<2);Vl(b)}b=k[a+40>>2]|0;c=b;if(b|0){d=a+44|0;e=k[d>>2]|0;if((e|0)!=(b|0))k[d>>2]=e+(~((e+-4-c|0)>>>2)<<2);Vl(b)}b=k[a+28>>2]|0;c=b;if(b|0){d=a+32|0;e=k[d>>2]|0;if((e|0)!=(b|0))k[d>>2]=e+(~((e+-4-c|0)>>>2)<<2);Vl(b)}b=k[a+12>>2]|0;if(b|0)Vl(b);b=k[a>>2]|0;if(!b)return;Vl(b);return}function _g(a,b,c){a=a|0;b=b|0;c=c|0;var d=0,e=0,f=0,g=0;g=r;r=r+64|0;e=g;if((a|0)!=(b|0))if((b|0)!=0?(f=If(b,936,920,0)|0,(f|0)!=0):0){b=e+4|0;d=b+52|0;do{k[b>>2]=0;b=b+4|0}while((b|0)<(d|0));k[e>>2]=f;k[e+8>>2]=a;k[e+12>>2]=-1;k[e+48>>2]=1;_a[k[(k[f>>2]|0)+28>>2]&3](f,e,k[c>>2]|0,1);if((k[e+24>>2]|0)==1){k[c>>2]=k[e+16>>2];b=1}else b=0}else b=0;else b=1;r=g;return b|0}function $g(a,b,c,d,e,f,g,h,j,l){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;f=f|0;g=g|0;h=h|0;j=j|0;l=l|0;var m=0,n=0,o=0;k[a>>2]=c;if(c|0){o=c+16|0;m=k[o+4>>2]|0;n=a+8|0;k[n>>2]=k[o>>2];k[n+4>>2]=m;n=c+24|0;m=k[n+4>>2]|0;c=a+16|0;k[c>>2]=k[n>>2];k[c+4>>2]=m}i[a+24>>0]=d;k[a+28>>2]=e;i[a+32>>0]=f&1;o=a+40|0;k[o>>2]=g;k[o+4>>2]=h;o=a+48|0;k[o>>2]=j;k[o+4>>2]=l;k[a+56>>2]=b;return}function ah(a,b,c,d,e,f){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;f=f|0;var g=0,h=0,i=0;g=a+8|0;k[g>>2]=e;f=e>>>0>1073741823?-1:e<<2;h=Sl(f)|0;Zh(h|0,0,f|0)|0;fg(g,h,b,c,0);if((e|0)>=(d|0)){Tl(h);return 1}f=0-e|0;a=e;do{i=c+(a<<2)|0;fg(g,i+(f<<2)|0,b,i,a);a=a+e|0}while((a|0)<(d|0));Tl(h);return 1}function bh(a,b,c,d,e,f){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;f=f|0;var g=0;g=a+8|0;k[g>>2]=e;a=d-e|0;if((a|0)>0){f=0-e|0;do{d=b+(a<<2)|0;ve(g,d,d+(f<<2)|0,c,a);a=a-e|0}while((a|0)>0)}d=e>>>0>1073741823?-1:e<<2;e=Sl(d)|0;Zh(e|0,0,d|0)|0;ve(g,b,e,c,0);Tl(e);return 1}function ch(a,b){a=a|0;b=b|0;var c=0,d=0,e=0,f=0,g=0,h=0,i=0;g=a+8|0;h=k[a>>2]|0;if((k[g>>2]|0)-h>>2>>>0>=b>>>0)return;i=a+4|0;d=k[i>>2]|0;c=d-h>>2;do if(b)if(b>>>0>1073741823){i=Ma(4)|0;Fl(i);xa(i|0,976,90)}else{f=vj(b<<2)|0;break}else f=0;while(0);e=f+(c<<2)|0;c=d-h|0;d=e+(0-(c>>2)<<2)|0;if((c|0)>0)Mh(d|0,h|0,c|0)|0;k[a>>2]=d;k[i>>2]=e;k[g>>2]=f+(b<<2);if(!h)return;Vl(h);return}function dh(a){a=a|0;var b=0,c=0,d=0;k[a>>2]=5488;b=a+100|0;c=a+4|0;d=c+96|0;do{k[c>>2]=0;c=c+4|0}while((c|0)<(d|0));k[b>>2]=-1;k[a+104>>2]=-1;k[a+108>>2]=-1;b=a+168|0;c=a+112|0;d=c+56|0;do{k[c>>2]=0;c=c+4|0}while((c|0)<(d|0));o[b>>2]=da(1.0);b=a+240|0;c=a+172|0;d=c+68|0;do{k[c>>2]=0;c=c+4|0}while((c|0)<(d|0));pj(b);pj(a+280|0);k[a+320>>2]=0;k[a+324>>2]=0;k[a+328>>2]=0;return}function eh(a,b,c,d,e,f){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;f=f|0;var g=0;g=a+8|0;k[g>>2]=e;a=d-e|0;if((a|0)>0){f=0-e|0;do{d=b+(a<<2)|0;Ae(g,d,d+(f<<2)|0,c,a);a=a-e|0}while((a|0)>0)}d=e>>>0>1073741823?-1:e<<2;e=Sl(d)|0;Zh(e|0,0,d|0)|0;Ae(g,b,e,c,0);Tl(e);return 1}function fh(a){a=a|0;var b=0,c=0,d=0,e=0,f=0;k[a>>2]=5428;e=a+32|0;b=k[e>>2]|0;k[e>>2]=0;if(b|0)Ta[k[(k[b>>2]|0)+4>>2]&127](b);k[a>>2]=3216;e=a+8|0;b=k[e>>2]|0;if(!b){Vl(a);return}d=a+12|0;c=k[d>>2]|0;if((c|0)!=(b|0)){do{f=c+-4|0;k[d>>2]=f;c=k[f>>2]|0;k[f>>2]=0;if(c|0)Ta[k[(k[c>>2]|0)+4>>2]&127](c);c=k[d>>2]|0}while((c|0)!=(b|0));b=k[e>>2]|0}Vl(b);Vl(a);return}function gh(a,b,c,d,e){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;var f=0,g=0,h=0;h=r;r=r+256|0;g=h;do if((c|0)>(d|0)&(e&73728|0)==0){e=c-d|0;Zh(g|0,b|0,(e>>>0>256?256:e)|0)|0;b=k[a>>2]|0;f=(b&32|0)==0;if(e>>>0>255){c=c-d|0;do{if(f){Dg(g,256,a)|0;b=k[a>>2]|0}e=e+-256|0;f=(b&32|0)==0}while(e>>>0>255);if(f)e=c&255;else break}else if(!f)break;Dg(g,e,a)|0}while(0);r=h;return}function hh(a,b){a=a|0;b=b|0;var c=0,d=0,e=0,f=0,g=0,h=0,j=0;j=r;r=r+16|0;g=j;h=b&255;i[g>>0]=h;d=a+16|0;e=k[d>>2]|0;if(!e)if(!(pi(a)|0)){e=k[d>>2]|0;f=4}else c=-1;else f=4;do if((f|0)==4){f=a+20|0;d=k[f>>2]|0;if(d>>>0>>0?(c=b&255,(c|0)!=(i[a+75>>0]|0)):0){k[f>>2]=d+1;i[d>>0]=h;break}if((Ra[k[a+36>>2]&31](a,g,1)|0)==1)c=l[g>>0]|0;else c=-1}while(0);r=j;return c|0}function ih(a,b){a=a|0;b=b|0;var c=0,d=0,e=0,f=0,g=0;f=b+8|0;g=k[f+4>>2]|0;e=b+16|0;d=e;c=k[d>>2]|0;d=k[d+4>>2]|0;if((g|0)>(d|0)|((g|0)==(d|0)?(k[f>>2]|0)>>>0>c>>>0:0)){g=i[(k[b>>2]|0)+c>>0]|0;f=mk(c|0,d|0,1,0)|0;c=e;k[c>>2]=f;k[c+4>>2]=M;c=g}else c=0;c=c&255;if(!(c&128)){g=c;k[a>>2]=g;return}ih(a,b);g=k[a>>2]<<7;k[a>>2]=g;g=g|c&127;k[a>>2]=g;return}function jh(a){a=a|0;var b=0,c=0,d=0,e=0;k[a>>2]=5428;d=a+32|0;b=k[d>>2]|0;k[d>>2]=0;if(b|0)Ta[k[(k[b>>2]|0)+4>>2]&127](b);k[a>>2]=3216;d=a+8|0;b=k[d>>2]|0;if(!b)return;c=a+12|0;a=k[c>>2]|0;if((a|0)!=(b|0)){do{e=a+-4|0;k[c>>2]=e;a=k[e>>2]|0;k[e>>2]=0;if(a|0)Ta[k[(k[a>>2]|0)+4>>2]&127](a);a=k[c>>2]|0}while((a|0)!=(b|0));b=k[d>>2]|0}Vl(b);return}function kh(a,b){a=a|0;b=b|0;var c=0,d=0,e=0,f=0,g=0;if((k[b+76>>2]|0)>=0?(Zl(b)|0)!=0:0){if((i[b+75>>0]|0)!=(a|0)?(e=b+20|0,f=k[e>>2]|0,f>>>0<(k[b+16>>2]|0)>>>0):0){k[e>>2]=f+1;i[f>>0]=a;a=a&255}else a=hh(b,a)|0;Yl(b)}else g=3;do if((g|0)==3){if((i[b+75>>0]|0)!=(a|0)?(c=b+20|0,d=k[c>>2]|0,d>>>0<(k[b+16>>2]|0)>>>0):0){k[c>>2]=d+1;i[d>>0]=a;a=a&255;break}a=hh(b,a)|0}while(0);return a|0}function lh(a){a=a|0;var b=0,c=0,d=0;k[a>>2]=3920;b=k[a+96>>2]|0;if(b|0)Vl(b);b=k[a+84>>2]|0;if(b|0)Vl(b);b=k[a+72>>2]|0;if(b|0)Vl(b);b=k[a+60>>2]|0;if(b|0)Vl(b);k[a>>2]=3408;b=k[a+32>>2]|0;if(!b){Vl(a);return}c=a+36|0;d=k[c>>2]|0;if((d|0)!=(b|0))k[c>>2]=d+(~((d+-4-b|0)>>>2)<<2);Vl(b);Vl(a);return}function mh(a){a=a|0;var b=0,c=0,d=0;k[a>>2]=3664;b=k[a+96>>2]|0;if(b|0)Vl(b);b=k[a+84>>2]|0;if(b|0)Vl(b);b=k[a+72>>2]|0;if(b|0)Vl(b);b=k[a+60>>2]|0;if(b|0)Vl(b);k[a>>2]=3408;b=k[a+32>>2]|0;if(!b){Vl(a);return}c=a+36|0;d=k[c>>2]|0;if((d|0)!=(b|0))k[c>>2]=d+(~((d+-4-b|0)>>>2)<<2);Vl(b);Vl(a);return}function nh(a){a=a|0;var b=0,c=0,d=0;k[a>>2]=5652;b=a+100|0;c=a+4|0;d=c+96|0;do{k[c>>2]=0;c=c+4|0}while((c|0)<(d|0));k[b>>2]=-1;k[a+104>>2]=-1;k[a+108>>2]=-1;b=a+168|0;c=a+112|0;d=c+56|0;do{k[c>>2]=0;c=c+4|0}while((c|0)<(d|0));o[b>>2]=da(1.0);b=a+240|0;c=a+172|0;d=c+68|0;do{k[c>>2]=0;c=c+4|0}while((c|0)<(d|0));gi(b);return}function oh(a){a=a|0;var b=0,c=0;k[a>>2]=3920;b=k[a+96>>2]|0;if(b|0)Vl(b);b=k[a+84>>2]|0;if(b|0)Vl(b);b=k[a+72>>2]|0;if(b|0)Vl(b);b=k[a+60>>2]|0;if(b|0)Vl(b);k[a>>2]=3408;c=k[a+32>>2]|0;if(!c)return;b=a+36|0;a=k[b>>2]|0;if((a|0)!=(c|0))k[b>>2]=a+(~((a+-4-c|0)>>>2)<<2);Vl(c);return}function ph(a,b){a=a|0;b=b|0;var c=0,d=0,e=0,f=0,g=0;k[a>>2]=0;g=a+4|0;k[g>>2]=0;k[a+8>>2]=0;f=b+4|0;c=(k[f>>2]|0)-(k[b>>2]|0)|0;d=c>>2;if(!d)return;if(d>>>0>1073741823)$k(a);e=vj(c)|0;k[g>>2]=e;k[a>>2]=e;k[a+8>>2]=e+(d<<2);a=k[b>>2]|0;c=(k[f>>2]|0)-a|0;if((c|0)<=0)return;Mh(e|0,a|0,c|0)|0;k[g>>2]=e+(c>>2<<2);return}function qh(a){a=a|0;var b=0,c=0;k[a>>2]=3664;b=k[a+96>>2]|0;if(b|0)Vl(b);b=k[a+84>>2]|0;if(b|0)Vl(b);b=k[a+72>>2]|0;if(b|0)Vl(b);b=k[a+60>>2]|0;if(b|0)Vl(b);k[a>>2]=3408;c=k[a+32>>2]|0;if(!c)return;b=a+36|0;a=k[b>>2]|0;if((a|0)!=(c|0))k[b>>2]=a+(~((a+-4-c|0)>>>2)<<2);Vl(c);return}function rh(a){a=a|0;var b=0,c=0,d=0,e=0;k[a>>2]=5536;b=k[a+64>>2]|0;c=b;if(b|0){d=a+68|0;e=k[d>>2]|0;if((e|0)!=(b|0))k[d>>2]=e+(~((e+-4-c|0)>>>2)<<2);Vl(b)}k[a+12>>2]=5560;b=k[a+32>>2]|0;if(b|0)Vl(b);b=k[a+20>>2]|0;if(!b){Vl(a);return}Vl(b);Vl(a);return}function sh(a){a=a|0;var b=0,c=0,d=0;if(!(k[a+64>>2]|0)){d=0;return d|0}d=a+4|0;c=a+8|0;a=k[d>>2]|0;if(((k[c>>2]|0)-a|0)>0)b=0;else{d=1;return d|0}while(1){a=k[a+(b<<2)>>2]|0;b=b+1|0;if(!(vi(a,a)|0)){a=0;b=5;break}a=k[d>>2]|0;if((b|0)>=((k[c>>2]|0)-a>>2|0)){a=1;b=5;break}}if((b|0)==5)return a|0;return 0}function th(a){a=a|0;var b=0,c=0,d=0,e=0;k[a>>2]=5628;b=k[a+64>>2]|0;c=b;if(b|0){d=a+68|0;e=k[d>>2]|0;if((e|0)!=(b|0))k[d>>2]=e+(~((e+-4-c|0)>>>2)<<2);Vl(b)}k[a+12>>2]=5608;b=k[a+32>>2]|0;if(b|0)Vl(b);b=k[a+20>>2]|0;if(!b){Vl(a);return}Vl(b);Vl(a);return}function uh(a){a=a|0;var b=0,c=0,d=0,e=0;k[a>>2]=5536;b=k[a+64>>2]|0;c=b;if(b|0){d=a+68|0;e=k[d>>2]|0;if((e|0)!=(b|0))k[d>>2]=e+(~((e+-4-c|0)>>>2)<<2);Vl(b)}k[a+12>>2]=5560;b=k[a+32>>2]|0;if(b|0)Vl(b);b=k[a+20>>2]|0;if(!b)return;Vl(b);return}function vh(a,b){a=+a;b=b|0;var c=0,d=0,e=0;p[u>>3]=a;c=k[u>>2]|0;d=k[u+4>>2]|0;e=Wj(c|0,d|0,52)|0;switch(e&2047){case 0:{if(a!=0.0){a=+vh(a*18446744073709551616.0,b);c=(k[b>>2]|0)+-64|0}else c=0;k[b>>2]=c;break}case 2047:break;default:{k[b>>2]=(e&2047)+-1022;k[u>>2]=c;k[u+4>>2]=d&-2146435073|1071644672;a=+p[u>>3]}}return +a}function wh(a){a=a|0;var b=0,c=0,d=0,e=0;k[a>>2]=5628;b=k[a+64>>2]|0;c=b;if(b|0){d=a+68|0;e=k[d>>2]|0;if((e|0)!=(b|0))k[d>>2]=e+(~((e+-4-c|0)>>>2)<<2);Vl(b)}k[a+12>>2]=5608;b=k[a+32>>2]|0;if(b|0)Vl(b);b=k[a+20>>2]|0;if(!b)return;Vl(b);return}function xh(a){a=a|0;var b=0,c=0,d=0;k[a>>2]=3984;b=k[a+76>>2]|0;if(b|0)Vl(b);d=a+68|0;b=k[d>>2]|0;k[d>>2]=0;if(b|0)Tl(b);k[a>>2]=3408;d=k[a+32>>2]|0;if(!d){Vl(a);return}b=a+36|0;c=k[b>>2]|0;if((c|0)!=(d|0))k[b>>2]=c+(~((c+-4-d|0)>>>2)<<2);Vl(d);Vl(a);return}function yh(a,b,c){a=a|0;b=b|0;c=c|0;var d=0;if(b>>>0>0|(b|0)==0&a>>>0>4294967295){while(1){d=lj(a|0,b|0,10,0)|0;c=c+-1|0;i[c>>0]=d|48;d=a;a=Xk(a|0,b|0,10,0)|0;if(!(b>>>0>9|(b|0)==9&d>>>0>4294967295))break;else b=M}b=a}else b=a;if(b)while(1){c=c+-1|0;i[c>>0]=(b>>>0)%10|0|48;if(b>>>0<10)break;else b=(b>>>0)/10|0}return c|0}function zh(a){a=a|0;var b=0,c=0,d=0;k[a>>2]=4048;d=a+36|0;b=k[d>>2]|0;k[d>>2]=0;if(b|0)Tl(b);k[a>>2]=3356;d=a+28|0;b=k[d>>2]|0;k[d>>2]=0;if(b|0)Ta[k[(k[b>>2]|0)+4>>2]&127](b);b=k[a+16>>2]|0;if(!b){Vl(a);return}c=a+20|0;d=k[c>>2]|0;if((d|0)!=(b|0))k[c>>2]=d+(~((d+-4-b|0)>>>2)<<2);Vl(b);Vl(a);return}function Ah(a){a=a|0;var b=0,c=0,d=0,e=0;e=r;r=r+16|0;b=e;c=b;k[c>>2]=0;k[c+4>>2]=0;Ke(a,2,b);b=k[a+12>>2]|0;c=a+16|0;d=k[c>>2]|0;if((d|0)==(b|0)){d=a+24|0;k[d>>2]=0;d=a+28|0;k[d>>2]=0;r=e;return}k[c>>2]=d+(~((d+-4-b|0)>>>2)<<2);d=a+24|0;k[d>>2]=0;d=a+28|0;k[d>>2]=0;r=e;return}function Bh(a,b,c){a=a|0;b=b|0;c=c|0;var d=0,e=0,f=0;k[a>>2]=0;d=a+4|0;k[d>>2]=0;k[a+8>>2]=0;if(!b)return;if(b>>>0>1073741823)$k(a);f=vj(b<<2)|0;k[d>>2]=f;k[a>>2]=f;e=f+(b<<2)|0;k[a+8>>2]=e;a=f;while(1){k[a>>2]=k[c>>2];b=b+-1|0;if(!b)break;else a=a+4|0}k[d>>2]=e;return}function Ch(a){a=a|0;var b=0,c=0,d=0,e=0;k[a>>2]=3152;b=k[a+80>>2]|0;c=b;if(b|0){d=a+84|0;e=k[d>>2]|0;if((e|0)!=(b|0))k[d>>2]=e+(~(((e+-12-c|0)>>>0)/12|0)*12|0);Vl(b)}b=k[a+68>>2]|0;if(!b){xg(a);Vl(a);return}c=a+72|0;d=k[c>>2]|0;if((d|0)!=(b|0))k[c>>2]=d+(~((d+-4-b|0)>>>2)<<2);Vl(b);xg(a);Vl(a);return}function Dh(a){a=a|0;var b=0,c=0,d=0;k[a>>2]=3728;b=k[a+76>>2]|0;if(b|0)Vl(b);d=a+68|0;b=k[d>>2]|0;k[d>>2]=0;if(b|0)Tl(b);k[a>>2]=3408;d=k[a+32>>2]|0;if(!d){Vl(a);return}b=a+36|0;c=k[b>>2]|0;if((c|0)!=(d|0))k[b>>2]=c+(~((c+-4-d|0)>>>2)<<2);Vl(d);Vl(a);return}function Eh(a){a=a|0;var b=0,c=0,d=0,e=0,f=0;k[a>>2]=3216;d=a+8|0;b=k[d>>2]|0;if(!b){Vl(a);return}e=a+12|0;c=k[e>>2]|0;if((c|0)!=(b|0)){do{f=c+-4|0;k[e>>2]=f;c=k[f>>2]|0;k[f>>2]=0;if(c|0)Ta[k[(k[c>>2]|0)+4>>2]&127](c);c=k[e>>2]|0}while((c|0)!=(b|0));b=k[d>>2]|0}Vl(b);Vl(a);return}function Fh(a,b,c,d){a=a|0;b=b|0;c=c|0;d=d|0;var e=0;a=b+16|0;e=k[a>>2]|0;do if(e){if((e|0)!=(c|0)){d=b+36|0;k[d>>2]=(k[d>>2]|0)+1;k[b+24>>2]=2;i[b+54>>0]=1;break}a=b+24|0;if((k[a>>2]|0)==2)k[a>>2]=d}else{k[a>>2]=c;k[b+24>>2]=d;k[b+36>>2]=1}while(0);return}function Gh(a){a=a|0;var b=0,c=0,d=0,e=0;if(!a)return;b=k[a+68>>2]|0;c=b;if(b|0){d=a+72|0;e=k[d>>2]|0;if((e|0)!=(b|0))k[d>>2]=e+(~((e+-4-c|0)>>>2)<<2);Vl(b)}e=a+64|0;b=k[e>>2]|0;k[e>>2]=0;if(b|0){c=k[b>>2]|0;if(c|0){d=b+4|0;if((k[d>>2]|0)!=(c|0))k[d>>2]=c;Vl(c)}Vl(b)}Vl(a);return}function Hh(a,b,c){a=a|0;b=b|0;c=c|0;var d=0;if((b|0)<=-1)Ka(13286,13311,63,13325);d=k[a+80>>2]|0;if((((k[a+84>>2]|0)-d|0)/12|0|0)>(b|0)){d=d+(b*12|0)|0;Ie(c,d,d+12|0);return 1}else Ka(13330,13311,64,13325);return 0}function Ih(a){a=a|0;var b=0,c=0;k[a>>2]=3984;b=k[a+76>>2]|0;if(b|0)Vl(b);c=a+68|0;b=k[c>>2]|0;k[c>>2]=0;if(b|0)Tl(b);k[a>>2]=3408;c=k[a+32>>2]|0;if(!c)return;b=a+36|0;a=k[b>>2]|0;if((a|0)!=(c|0))k[b>>2]=a+(~((a+-4-c|0)>>>2)<<2);Vl(c);return}function Jh(a,b,c,d,e,f){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;f=f|0;var g=0,h=0,i=0;k[a>>2]=b;i=b+16|0;g=k[i+4>>2]|0;h=a+8|0;k[h>>2]=k[i>>2];k[h+4>>2]=g;h=b+24|0;g=k[h+4>>2]|0;b=a+16|0;k[b>>2]=k[h>>2];k[b+4>>2]=g;b=a+40|0;k[b>>2]=c;k[b+4>>2]=d;d=a+48|0;k[d>>2]=e;k[d+4>>2]=f;return}function Kh(a){a=a|0;var b=0,c=0,d=0,e=0;k[a>>2]=3152;b=k[a+80>>2]|0;c=b;if(b|0){d=a+84|0;e=k[d>>2]|0;if((e|0)!=(b|0))k[d>>2]=e+(~(((e+-12-c|0)>>>0)/12|0)*12|0);Vl(b)}b=k[a+68>>2]|0;if(!b){xg(a);return}c=a+72|0;d=k[c>>2]|0;if((d|0)!=(b|0))k[c>>2]=d+(~((d+-4-b|0)>>>2)<<2);Vl(b);xg(a);return}function Lh(a){a=a|0;var b=0,c=0;k[a>>2]=4048;c=a+36|0;b=k[c>>2]|0;k[c>>2]=0;if(b|0)Tl(b);k[a>>2]=3356;c=a+28|0;b=k[c>>2]|0;k[c>>2]=0;if(b|0)Ta[k[(k[b>>2]|0)+4>>2]&127](b);c=k[a+16>>2]|0;if(!c)return;b=a+20|0;a=k[b>>2]|0;if((a|0)!=(c|0))k[b>>2]=a+(~((a+-4-c|0)>>>2)<<2);Vl(c);return}function Mh(a,b,c){a=a|0;b=b|0;c=c|0;var d=0;if((c|0)>=4096)return Fa(a|0,b|0,c|0)|0;d=a|0;if((a&3)==(b&3)){while(a&3){if(!c)return d|0;i[a>>0]=i[b>>0]|0;a=a+1|0;b=b+1|0;c=c-1|0}while((c|0)>=4){k[a>>2]=k[b>>2];a=a+4|0;b=b+4|0;c=c-4|0}}while((c|0)>0){i[a>>0]=i[b>>0]|0;a=a+1|0;b=b+1|0;c=c-1|0}return d|0}function Nh(a){a=a|0;var b=0,c=0;c=0;while(1){if((l[14896+c>>0]|0)==(a|0)){a=2;break}b=c+1|0;if((b|0)==87){b=14984;c=87;a=5;break}else c=b}if((a|0)==2)if(!c)b=14984;else{b=14984;a=5}if((a|0)==5)while(1){do{a=b;b=b+1|0}while((i[a>>0]|0)!=0);c=c+-1|0;if(!c)break;else a=5}return b|0}function Oh(a,b){a=a|0;b=b|0;switch(b<<24>>24){case 0:{a=vj(16)|0;pk(a);break}case 1:{a=vj(32)|0;tj(a);break}case 2:{a=vj(44)|0;yj(a);break}case 3:{a=vj(36)|0;hk(a);break}default:a=0}return a|0}function Ph(a){a=a|0;var b=0,c=0;k[a>>2]=3728;b=k[a+76>>2]|0;if(b|0)Vl(b);c=a+68|0;b=k[c>>2]|0;k[c>>2]=0;if(b|0)Tl(b);k[a>>2]=3408;c=k[a+32>>2]|0;if(!c)return;b=a+36|0;a=k[b>>2]|0;if((a|0)!=(c|0))k[b>>2]=a+(~((a+-4-c|0)>>>2)<<2);Vl(c);return}function Qh(a){a=a|0;var b=0,c=0,d=0,e=0;k[a>>2]=3216;d=a+8|0;b=k[d>>2]|0;if(!b)return;c=a+12|0;a=k[c>>2]|0;if((a|0)!=(b|0)){do{e=a+-4|0;k[c>>2]=e;a=k[e>>2]|0;k[e>>2]=0;if(a|0)Ta[k[(k[a>>2]|0)+4>>2]&127](a);a=k[c>>2]|0}while((a|0)!=(b|0));b=k[d>>2]|0}Vl(b);return}function Rh(a,b,c){a=a|0;b=b|0;c=c|0;if(!(Ej(a,b,c)|0)){c=0;return c|0}b=k[b+4>>2]|0;if((c|0)<=-1)Ka(12941,12957,62,12985);a=k[b+4>>2]|0;if(((k[b+8>>2]|0)-a>>2|0)<=(c|0))Ka(12995,12957,63,12985);c=(k[(k[a+(c<<2)>>2]|0)+28>>2]|0)==9;return c|0}function Sh(a){a=a|0;var b=0,c=0,d=0;b=k[a+8>>2]|0;c=k[a+12>>2]|0;if((b|0)==(c|0)){c=1;return c|0}a=a+20|0;while(1){d=k[b>>2]|0;b=b+4|0;if(!(Za[k[(k[d>>2]|0)+16>>2]&127](d,k[a>>2]|0)|0)){b=0;a=5;break}if((b|0)==(c|0)){b=1;a=5;break}}if((a|0)==5)return b|0;return 0}function Th(a){a=a|0;var b=0;k[a>>2]=4352;b=k[a+72>>2]|0;if(b|0)Vl(b);b=k[a+60>>2]|0;if(b|0)Vl(b);b=k[a+48>>2]|0;if(b|0)Vl(b);b=k[a+36>>2]|0;if(!b){Vl(a);return}Vl(b);Vl(a);return}function Uh(a,b,c){a=a|0;b=b|0;c=c|0;if(!(Va[k[(k[a>>2]|0)+44>>2]&127](a)|0)){c=0;return c|0}c=$c(a,b,c)|0;return c|0}function Vh(a){a=a|0;var b=0;k[a>>2]=4608;b=k[a+72>>2]|0;if(b|0)Vl(b);b=k[a+60>>2]|0;if(b|0)Vl(b);b=k[a+48>>2]|0;if(b|0)Vl(b);b=k[a+36>>2]|0;if(!b){Vl(a);return}Vl(b);Vl(a);return}function Wh(a){a=a|0;var b=0;k[a>>2]=4928;b=k[a+72>>2]|0;if(b|0)Vl(b);b=k[a+60>>2]|0;if(b|0)Vl(b);b=k[a+48>>2]|0;if(b|0)Vl(b);b=k[a+36>>2]|0;if(!b){Vl(a);return}Vl(b);Vl(a);return}function Xh(a){a=a|0;var b=0,c=0,d=0,e=0,f=0;c=l[a+12>>0]|0;d=a+8|0;b=k[d>>2]|0;if(b>>>0<4096){f=a+4|0;e=(k[f>>2]|0)+-1|0;k[f>>2]=e;b=l[(k[a>>2]|0)+e>>0]|0|b<<8;k[d>>2]=b}a=b&255;c=0-c&255;e=$(b>>>8,c)|0;f=a>>>0>>0;k[d>>2]=f?e+a|0:b-c-e|0;return f|0}function Yh(a){a=a|0;var b=0,c=0,d=0,e=0,f=0;f=r;r=r+64|0;c=f;d=f+40|0;e=c;b=e+40|0;do{k[e>>2]=k[a>>2];e=e+4|0;a=a+4|0}while((e|0)<(b|0));e=Yd(c,d)|0;e=e?l[d+7>>0]|0:-1;Yl(c+24|0);r=f;return e|0}function Zh(a,b,c){a=a|0;b=b|0;c=c|0;var d=0,e=0,f=0,g=0;d=a+c|0;if((c|0)>=20){b=b&255;f=a&3;g=b|b<<8|b<<16|b<<24;e=d&~3;if(f){f=a+4-f|0;while((a|0)<(f|0)){i[a>>0]=b;a=a+1|0}}while((a|0)<(e|0)){k[a>>2]=g;a=a+4|0}}while((a|0)<(d|0)){i[a>>0]=b;a=a+1|0}return a-c|0}function _h(a){a=a|0;var b=0;k[a>>2]=5184;b=k[a+72>>2]|0;if(b|0)Vl(b);b=k[a+60>>2]|0;if(b|0)Vl(b);b=k[a+48>>2]|0;if(b|0)Vl(b);b=k[a+36>>2]|0;if(!b){Vl(a);return}Vl(b);Vl(a);return}function $h(a){a=a|0;var b=0,c=0,d=0;k[a>>2]=3356;d=a+28|0;b=k[d>>2]|0;k[d>>2]=0;if(b|0)Ta[k[(k[b>>2]|0)+4>>2]&127](b);d=k[a+16>>2]|0;if(!d){Vl(a);return}b=a+20|0;c=k[b>>2]|0;if((c|0)!=(d|0))k[b>>2]=c+(~((c+-4-d|0)>>>2)<<2);Vl(d);Vl(a);return}function ai(a){a=a|0;var b=0;k[a>>2]=4352;b=k[a+72>>2]|0;if(b|0)Vl(b);b=k[a+60>>2]|0;if(b|0)Vl(b);b=k[a+48>>2]|0;if(b|0)Vl(b);b=k[a+36>>2]|0;if(!b)return;Vl(b);return}function bi(a,b,c){a=a|0;b=b|0;c=c|0;var d=0;k[a+4>>2]=b;d=k[b+4>>2]|0;if((c|0)<=-1)Ka(12941,12957,62,12985);b=k[d+4>>2]|0;if(((k[d+8>>2]|0)-b>>2|0)>(c|0)){k[a+8>>2]=k[b+(c<<2)>>2];k[a+12>>2]=c;return 1}else Ka(12995,12957,63,12985);return 0}function ci(a){a=a|0;var b=0;k[a>>2]=4608;b=k[a+72>>2]|0;if(b|0)Vl(b);b=k[a+60>>2]|0;if(b|0)Vl(b);b=k[a+48>>2]|0;if(b|0)Vl(b);b=k[a+36>>2]|0;if(!b)return;Vl(b);return}function di(a){a=a|0;var b=0;k[a>>2]=4928;b=k[a+72>>2]|0;if(b|0)Vl(b);b=k[a+60>>2]|0;if(b|0)Vl(b);b=k[a+48>>2]|0;if(b|0)Vl(b);b=k[a+36>>2]|0;if(!b)return;Vl(b);return}function ei(a,b,c,d,e,f){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;f=f|0;if((a|0)==(k[b+8>>2]|0))Qg(0,b,c,d,e);else{a=k[a+8>>2]|0;Ya[k[(k[a>>2]|0)+20>>2]&3](a,b,c,d,e,f)}return}function fi(a,b){a=a|0;b=b|0;var c=0,d=0,e=0;k[a>>2]=0;c=a+4|0;k[c>>2]=0;k[a+8>>2]=0;if(!b)return;if(b>>>0>1073741823)$k(a);d=b<<2;e=vj(d)|0;k[a>>2]=e;b=e+(b<<2)|0;k[a+8>>2]=b;Zh(e|0,0,d|0)|0;k[c>>2]=b;return}function gi(a){a=a|0;var b=0;pj(a);pj(a+40|0);b=a+80|0;k[b>>2]=0;k[b+4>>2]=0;k[b+8>>2]=0;k[b+12>>2]=0;k[b+16>>2]=0;k[b+20>>2]=0;k[b+24>>2]=0;k[b+28>>2]=0;Cl(a+112|0);k[a+128>>2]=-1;k[a+132>>2]=-1;return}function hi(a){a=a|0;var b=0;k[a>>2]=5184;b=k[a+72>>2]|0;if(b|0)Vl(b);b=k[a+60>>2]|0;if(b|0)Vl(b);b=k[a+48>>2]|0;if(b|0)Vl(b);b=k[a+36>>2]|0;if(!b)return;Vl(b);return}function ii(a){a=a|0;var b=0,c=0;k[a>>2]=3356;c=a+28|0;b=k[c>>2]|0;k[c>>2]=0;if(b|0)Ta[k[(k[b>>2]|0)+4>>2]&127](b);c=k[a+16>>2]|0;if(!c)return;b=a+20|0;a=k[b>>2]|0;if((a|0)!=(c|0))k[b>>2]=a+(~((a+-4-c|0)>>>2)<<2);Vl(c);return}function ji(a,b,c){a=a|0;b=b|0;c=c|0;var d=0,e=0,f=0;e=r;r=r+32|0;f=e;d=e+20|0;k[f>>2]=k[a+60>>2];k[f+4>>2]=0;k[f+8>>2]=b;k[f+12>>2]=d;k[f+16>>2]=c;if((tk(Ha(140,f|0)|0)|0)<0){k[d>>2]=-1;a=-1}else a=k[d>>2]|0;r=e;return a|0}function ki(a,b){a=a|0;b=b|0;var c=0;Ij(a);k[a>>2]=5312;c=a+24|0;k[c>>2]=0;k[c+4>>2]=0;k[c+8>>2]=0;k[c+12>>2]=0;k[c+16>>2]=0;k[c+20>>2]=0;c=k[b>>2]|0;k[b>>2]=0;k[a+48>>2]=c;return}function li(a,b,c){a=a|0;b=b|0;c=c|0;var d=0,e=0;a:do if(!c)a=0;else{while(1){d=i[a>>0]|0;e=i[b>>0]|0;if(d<<24>>24!=e<<24>>24)break;c=c+-1|0;if(!c){a=0;break a}else{a=a+1|0;b=b+1|0}}a=(d&255)-(e&255)|0}while(0);return a|0}function mi(a,b,c){a=a|0;b=b|0;c=c|0;if(!(Tg(k[a+8>>2]|0,(k[b+4>>2]|0)-(k[b>>2]|0)>>2)|0)){c=0;return c|0}c=Ra[k[(k[a>>2]|0)+24>>2]&31](a,b,c)|0;return c|0}function ni(a){a=a|0;if(!(k[a+36>>2]|0))return 0;if(!(k[a+20>>2]|0))return 0;if(!(k[a+24>>2]|0))return 0;if(!(k[a+28>>2]|0))return 0;else return (k[a+32>>2]|0)!=0|0;return 0}function oi(a,b,c,d){a=a|0;b=b|0;c=c|0;d=d|0;if((a|0)==(k[b+8>>2]|0))Fh(0,b,c,d);else{a=k[a+8>>2]|0;_a[k[(k[a>>2]|0)+28>>2]&3](a,b,c,d)}return}function pi(a){a=a|0;var b=0,c=0;b=a+74|0;c=i[b>>0]|0;i[b>>0]=c+255|c;b=k[a>>2]|0;if(!(b&8)){k[a+8>>2]=0;k[a+4>>2]=0;c=k[a+44>>2]|0;k[a+28>>2]=c;k[a+20>>2]=c;k[a+16>>2]=c+(k[a+48>>2]|0);a=0}else{k[a>>2]=b|32;a=-1}return a|0}function qi(a){a=a|0;var b=0,c=0;k[a>>2]=4416;b=k[a+52>>2]|0;if(b|0)Vl(b);c=a+44|0;b=k[c>>2]|0;k[c>>2]=0;if(!b){Vl(a);return}Tl(b);Vl(a);return}function ri(a){a=a|0;if(!(k[a+60>>2]|0))return 0;if(!(k[a+44>>2]|0))return 0;if(!(k[a+48>>2]|0))return 0;if(!(k[a+52>>2]|0))return 0;else return (k[a+56>>2]|0)!=0|0;return 0}function si(a,b,c){a=a|0;b=b|0;c=c|0;if((b|0)!=0&(c|0)!=0){$b(a,b,c);return}else{fc(a,0,0);return}}function ti(a){a=a|0;var b=0,c=0;c=a+15&-16|0;b=k[t>>2]|0;a=b+c|0;if((c|0)>0&(a|0)<(b|0)|(a|0)<0){ia()|0;Aa(12);return -1}k[t>>2]=a;if((a|0)>(ha()|0)?(ga()|0)==0:0){Aa(12);k[t>>2]=b;return -1}return b|0}function ui(a){a=a|0;if(!(k[a+20>>2]|0)){a=0;return a|0}if(!(k[a+24>>2]|0)){a=0;return a|0}if(!(k[a+28>>2]|0)){a=0;return a|0}a=(k[a+32>>2]|0)!=0;return a|0}function vi(a,b){a=a|0;b=b|0;var c=0,d=0,e=0;c=r;r=r+16|0;d=c+4|0;e=c;k[e>>2]=0;k[d>>2]=k[e>>2];b=Kb(a,b,d)|0;r=c;return b|0}function wi(a,b,c,d){a=a|0;b=b|0;c=c|0;d=d|0;var e=0,f=0;e=k[c>>2]|0;d=a;c=b-a>>2;while(1){if(!c)break;b=(c|0)/2|0;f=d+(b<<2)|0;a=(k[f>>2]|0)>>>0>>0;d=a?f+4|0:d;c=a?c+-1-b|0:b}return d|0}function xi(a){a=a|0;var b=0,c=0;k[a>>2]=4672;b=k[a+52>>2]|0;if(b|0)Vl(b);c=a+44|0;b=k[c>>2]|0;k[c>>2]=0;if(!b){Vl(a);return}Tl(b);Vl(a);return}function yi(a){a=a|0;var b=0,c=0;k[a>>2]=4992;b=k[a+52>>2]|0;if(b|0)Vl(b);c=a+44|0;b=k[c>>2]|0;k[c>>2]=0;if(!b){Vl(a);return}Tl(b);Vl(a);return}function zi(a){a=a|0;var b=0;k[a>>2]=0;b=a+8|0;k[b>>2]=0;k[b+4>>2]=0;k[b+8>>2]=0;k[b+12>>2]=0;i[a+24>>0]=1;k[a+28>>2]=9;b=a+40|0;k[b>>2]=0;k[b+4>>2]=0;k[b+8>>2]=0;k[b+12>>2]=0;k[a+56>>2]=-1;j[a+60>>1]=0;return}function Ai(a){a=a|0;if(!(k[a+44>>2]|0)){a=0;return a|0}if(!(k[a+48>>2]|0)){a=0;return a|0}if(!(k[a+52>>2]|0)){a=0;return a|0}a=(k[a+56>>2]|0)!=0;return a|0}function Bi(a,b){a=a|0;b=b|0;var c=0,d=0;d=a;c=d+64|0;do{k[d>>2]=k[b>>2];d=d+4|0;b=b+4|0}while((d|0)<(c|0));d=a+64|0;k[d>>2]=0;k[d+4>>2]=0;k[d+8>>2]=0;k[d+12>>2]=0;k[d+16>>2]=0;i[d+20>>0]=0;return}function Ci(a,b,c){a=a|0;b=b|0;c=c|0;if(!(Ej(a,b,c)|0)){c=0;return c|0}a=k[a+8>>2]|0;if((i[a+24>>0]|0)!=3){c=0;return c|0}c=(k[a+28>>2]|0)==9;return c|0}function Di(a){a=a|0;var b=0,c=0;k[a>>2]=5248;b=k[a+52>>2]|0;if(b|0)Vl(b);c=a+44|0;b=k[c>>2]|0;k[c>>2]=0;if(!b){Vl(a);return}Tl(b);Vl(a);return}function Ei(a,b){a=a|0;b=b|0;Ce(a,b,3092);b=b*3|0;We(a+12|0,b,3088);ch(a+24|0,b);return}function Fi(a){a=a|0;var b=0;k[a>>2]=4416;b=k[a+52>>2]|0;if(b|0)Vl(b);b=a+44|0;a=k[b>>2]|0;k[b>>2]=0;if(!a)return;Tl(a);return}function Gi(a){a=a|0;var b=0,c=0,d=0;b=r;r=r+16|0;c=b;d=k[a+4>>2]|0;d=(k[d+56>>2]|0)-(k[d+52>>2]|0)>>2;i[c>>0]=0;Af(a+20|0,d,c);r=b;return}function Hi(a){a=a|0;var b=0;k[a>>2]=4672;b=k[a+52>>2]|0;if(b|0)Vl(b);b=a+44|0;a=k[b>>2]|0;k[b>>2]=0;if(!a)return;Tl(a);return}function Ii(a){a=a|0;var b=0;k[a>>2]=4992;b=k[a+52>>2]|0;if(b|0)Vl(b);b=a+44|0;a=k[b>>2]|0;k[b>>2]=0;if(!a)return;Tl(a);return}function Ji(a,b){a=a|0;b=b|0;if(k[b+56>>2]|0){b=0;return b|0}if((i[b+24>>0]|0)!=3){b=0;return b|0}k[a+36>>2]=b;b=1;return b|0}function Ki(a){a=a|0;var b=0,c=0,d=0;k[a>>2]=3408;b=k[a+32>>2]|0;if(!b){Vl(a);return}c=a+36|0;d=k[c>>2]|0;if((d|0)!=(b|0))k[c>>2]=d+(~((d+-4-b|0)>>>2)<<2);Vl(b);Vl(a);return}function Li(a){a=a|0;var b=0,c=0,d=0;b=r;r=r+16|0;c=b;d=k[a+4>>2]|0;d=(k[d+28>>2]|0)-(k[d+24>>2]|0)>>2;i[c>>0]=0;Af(a+20|0,d,c);r=b;return}function Mi(a){a=a|0;switch(a|0){case 11:case 2:case 1:{a=1;break}case 4:case 3:{a=2;break}case 6:case 5:{a=4;break}case 8:case 7:{a=8;break}case 9:{a=4;break}case 10:{a=8;break}default:a=-1}return a|0}function Ni(a){a=a|0;k[a>>2]=5584;Ag(a+8|0);Vl(a);return}function Oi(a,b){a=a|0;b=b|0;if(k[b+56>>2]|0){b=0;return b|0}if((i[b+24>>0]|0)!=3){b=0;return b|0}k[a+60>>2]=b;b=1;return b|0}function Pi(a,b){a=a|0;b=b|0;var c=0,d=0,e=0,f=0;f=a&65535;e=b&65535;c=$(e,f)|0;d=a>>>16;a=(c>>>16)+($(e,d)|0)|0;e=b>>>16;b=$(e,f)|0;return (M=(a>>>16)+($(e,d)|0)+(((a&65535)+b|0)>>>16)|0,a+b<<16|c&65535|0)|0}function Qi(a){a=a|0;var b=0,c=0;i[a+36>>0]=0;c=mk(k[a+32>>2]|0,0,7,0)|0;c=Wj(c|0,M|0,3)|0;a=a+16|0;b=a;b=mk(c|0,M|0,k[b>>2]|0,k[b+4>>2]|0)|0;k[a>>2]=b;k[a+4>>2]=M;return}function Ri(a){a=a|0;var b=0;k[a>>2]=5248;b=k[a+52>>2]|0;if(b|0)Vl(b);b=a+44|0;a=k[b>>2]|0;k[b>>2]=0;if(!a)return;Tl(a);return}function Si(a){a=a|0;k[a>>2]=5584;Ag(a+8|0);return}function Ti(a,b){a=a|0;b=b|0;var c=0;if((b|0)==-1|(b|0)>3){c=-1;return c|0}c=k[a+16+(b*12|0)>>2]|0;if(((k[a+16+(b*12|0)+4>>2]|0)-c|0)<=0){c=-1;return c|0}c=k[c>>2]|0;return c|0}function Ui(a,b,c,d,e,f){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;f=f|0;if((a|0)==(k[b+8>>2]|0))Qg(0,b,c,d,e);return}function Vi(a){a=a|0;var b=0;k[a>>2]=0;k[a+4>>2]=0;k[a+8>>2]=0;k[a+12>>2]=0;k[a+16>>2]=0;k[a+20>>2]=0;i[a+24>>0]=1;a=a+28|0;b=a+40|0;do{k[a>>2]=0;a=a+4|0}while((a|0)<(b|0));return}function Wi(a,b){a=a|0;b=b|0;var c=0;if((b|0)<=-1)Ka(12941,12957,54,12985);c=k[a+4>>2]|0;if(((k[a+8>>2]|0)-c>>2|0)>(b|0))return k[c+(b<<2)>>2]|0;else Ka(12995,12957,55,12985);return 0}function Xi(a,b,c){a=a|0;b=b|0;c=c|0;var d=0;if((b|0)<(a|0)&(a|0)<(b+c|0)){d=a;b=b+c|0;a=a+c|0;while((c|0)>0){a=a-1|0;b=b-1|0;c=c-1|0;i[a>>0]=i[b>>0]|0}a=d}else Mh(a,b,c)|0;return a|0}function Yi(a){a=a|0;var b=0,c=0,d=0,e=0;if(!a)return;b=k[a>>2]|0;c=b;if(b|0){d=a+4|0;e=k[d>>2]|0;if((e|0)!=(b|0))k[d>>2]=e+(~((e+-4-c|0)>>>2)<<2);Vl(b)}Vl(a);return}function Zi(a){a=a|0;var b=0,c=0;k[a>>2]=3408;c=k[a+32>>2]|0;if(!c)return;a=a+36|0;b=k[a>>2]|0;if((b|0)!=(c|0))k[a>>2]=b+(~((b+-4-c|0)>>>2)<<2);Vl(c);return}function _i(a,b,c){a=a|0;b=b|0;c=c|0;var d=0,e=0;if((b|0)>0)d=0;else return;do{e=k[a+(d<<2)>>2]|0;k[c+(d<<2)>>2]=e<<31>>31^e>>>1;d=d+1|0}while((d|0)!=(b|0));return}function $i(a){a=a|0;var b=0,c=0,d=0;k[a>>2]=3188;b=k[a+4>>2]|0;if(!b){Vl(a);return}c=a+8|0;d=k[c>>2]|0;if((d|0)!=(b|0))k[c>>2]=d+(~((d+-4-b|0)>>>2)<<2);Vl(b);Vl(a);return}function aj(a,b,c){a=a|0;b=b|0;c=c|0;var d=0,e=0;e=r;r=r+16|0;d=e;k[d>>2]=k[c>>2];a=Ra[k[(k[a>>2]|0)+16>>2]&31](a,b,d)|0;if(a)k[c>>2]=k[d>>2];r=e;return a&1|0}function bj(){var a=0,b=0;a=qj()|0;if((a|0?(b=k[a>>2]|0,b|0):0)?(a=b+48|0,(k[a>>2]&-256|0)==1126902528?(k[a+4>>2]|0)==1129074247:0):0)vk(k[b+12>>2]|0);vk(ol()|0)}function cj(a){a=a|0;var b=0;b=i[w+(a&255)>>0]|0;if((b|0)<8)return b|0;b=i[w+(a>>8&255)>>0]|0;if((b|0)<8)return b+8|0;b=i[w+(a>>16&255)>>0]|0;if((b|0)<8)return b+16|0;return (i[w+(a>>>24)>>0]|0)+24|0}function dj(a,b){a=a|0;b=b|0;var c=0;i[b+84>>0]=1;c=k[b+68>>2]|0;a=b+72|0;b=k[a>>2]|0;if((b|0)==(c|0))return 1;k[a>>2]=b+(~((b+-4-c|0)>>>2)<<2);return 1}function ej(a,b,c,d){a=a|0;b=b|0;c=c|0;d=d|0;if((a|0)==(k[b+8>>2]|0))Fh(0,b,c,d);return}function fj(a){a=a|0;var b=0,c=0;k[a>>2]=3188;c=k[a+4>>2]|0;if(!c)return;a=a+8|0;b=k[a>>2]|0;if((b|0)!=(c|0))k[a>>2]=b+(~((b+-4-c|0)>>>2)<<2);Vl(c);return}function gj(a){a=a|0;var b=0;k[a>>2]=5560;b=k[a+20>>2]|0;if(b|0)Vl(b);b=k[a+8>>2]|0;if(!b){Vl(a);return}Vl(b);Vl(a);return}function hj(a){a=a|0;var b=0,c=0;c=k[a>>2]|0;if(!c)return;a=a+4|0;b=k[a>>2]|0;if((b|0)!=(c|0))k[a>>2]=b+(~((b+-8-c|0)>>>3)<<3);Vl(c);return}function ij(a){a=a|0;var b=0,c=0;c=k[a>>2]|0;if(!c)return;a=a+4|0;b=k[a>>2]|0;if((b|0)!=(c|0))k[a>>2]=b+(~((b+-4-c|0)>>>2)<<2);Vl(c);return}function jj(a){a=a|0;var b=0;k[a>>2]=5608;b=k[a+20>>2]|0;if(b|0)Vl(b);b=k[a+8>>2]|0;if(!b){Vl(a);return}Vl(b);Vl(a);return}function kj(a,b){a=a|0;b=b|0;if(!b)return 0;else Ka(9326,9337,77,9417);return 0}function lj(a,b,c,d){a=a|0;b=b|0;c=c|0;d=d|0;var e=0,f=0;f=r;r=r+16|0;e=f|0;Yc(a,b,c,d,e)|0;r=f;return (M=k[e+4>>2]|0,k[e>>2]|0)|0}function mj(a){a=a|0;var b=0;k[a>>2]=5560;b=k[a+20>>2]|0;if(b|0)Vl(b);a=k[a+8>>2]|0;if(!a)return;Vl(a);return}function nj(a,b,c,d){a=a|0;b=b|0;c=c|0;d=d|0;return Jc(b,c,d)|0}function oj(a){a=a|0;_j(a);k[a>>2]=3152;a=a+68|0;k[a>>2]=0;k[a+4>>2]=0;k[a+8>>2]=0;k[a+12>>2]=0;k[a+16>>2]=0;k[a+20>>2]=0;return}function pj(a){a=a|0;var b=0;k[a>>2]=0;b=a+8|0;k[b>>2]=0;k[b+4>>2]=0;k[b+8>>2]=0;k[b+12>>2]=0;Yk(a+24|0);i[a+36>>0]=0;return}function qj(){var a=0,b=0;a=r;r=r+16|0;if(!(Ca(18088,3)|0)){b=ua(k[4523]|0)|0;r=a;return b|0}else Sj(17248,a);return 0}function rj(a){a=a|0;var b=0;k[a>>2]=5608;b=k[a+20>>2]|0;if(b|0)Vl(b);a=k[a+8>>2]|0;if(!a)return;Vl(a);return}function sj(a,b,c,d){a=a|0;b=b|0;c=c|0;d=d|0;var e=0,f=0;e=a;f=c;c=Pi(e,f)|0;a=M;return (M=($(b,f)|0)+($(d,e)|0)+a|a&0,c|0|0)|0}function tj(a){a=a|0;pk(a);k[a>>2]=3356;a=a+16|0;k[a>>2]=0;k[a+4>>2]=0;k[a+8>>2]=0;k[a+12>>2]=0;return}function uj(a){a=a|0;zi(a);a=a+64|0;k[a>>2]=0;k[a+4>>2]=0;k[a+8>>2]=0;k[a+12>>2]=0;k[a+16>>2]=0;i[a+20>>0]=0;return}function vj(a){a=a|0;var b=0;b=(a|0)==0?1:a;while(1){a=cb(b)|0;if(a|0)break;a=kl()|0;if(!a){a=0;break}Xa[a&3]()}return a|0}function wj(a){a=a|0;k[a>>2]=0;k[a+4>>2]=0;k[a+8>>2]=0;k[a+12>>2]=0;k[a+16>>2]=0;k[a+20>>2]=0;k[a+24>>2]=0;k[a+28>>2]=0;return}function xj(a){a=a|0;var b=0;b=r;r=r+16|0;sb(a);if(!(va(k[4523]|0,0)|0)){r=b;return}else Sj(17347,b)}function yj(a){a=a|0;tj(a);k[a>>2]=4048;k[a+32>>2]=-1;k[a+36>>2]=0;o[a+40>>2]=da(0.0);return}function zj(a){a=a|0;k[a>>2]=3216;a=a+4|0;k[a>>2]=0;k[a+4>>2]=0;k[a+8>>2]=0;k[a+12>>2]=0;k[a+16>>2]=0;j[a+20>>1]=0;return}function Aj(a,b,c){a=a|0;b=b|0;c=c|0;k[a>>2]=b;b=a+8|0;k[b>>2]=c;k[b+4>>2]=0;c=a+16|0;k[c>>2]=0;k[c+4>>2]=0;return}function Bj(a){a=a|0;k[a>>2]=0;k[a+4>>2]=0;k[a+8>>2]=0;a=a+16|0;k[a>>2]=0;k[a+4>>2]=0;k[a+8>>2]=0;k[a+12>>2]=0;return}function Cj(a,b,c){a=a|0;b=b|0;c=c|0;k[a+28>>2]=c;return Hg(a,b,c)|0}function Dj(a,b,c,d){a=a|0;b=b|0;c=c|0;d=d|0;return jf(b,c,d)|0}function Ej(a,b,c){a=a|0;b=b|0;c=c|0;return bi(a,b,c)|0}function Fj(a){a=a|0;var b=0,c=0;b=r;r=r+16|0;c=b;k[c>>2]=k[a+60>>2];a=tk(za(6,c|0)|0)|0;r=b;return a|0}function Gj(a,b,c){a=a|0;b=b|0;c=c|0;return Ti(b,c)|0}function Hj(a,b,c,d,e,f,g){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;f=f|0;g=g|0;return Ua[a&63](b|0,c|0,d|0,e|0,f|0,g|0)|0}function Ij(a){a=a|0;k[a>>2]=3188;a=a+4|0;k[a>>2]=0;k[a+4>>2]=0;k[a+8>>2]=0;k[a+12>>2]=0;k[a+16>>2]=0;return}function Jj(a){a=a|0;pd(a);Vl(a);return}function Kj(a,b,c){a=a|0;b=da(b);c=c|0;var d=Pa;d=da(da(1.0)/da(c|0));o[a+4>>2]=d;o[a>>2]=b;return}function Lj(){var a=0;a=r;r=r+16|0;if(!(ya(18092,93)|0)){r=a;return}else Sj(17297,a)}function Mj(a){a=a|0;Jd(a);Vl(a);return}function Nj(a,b,c,d){a=a|0;b=b|0;c=c|0;d=d|0;return Hh(b,c,d)|0}function Oj(a,b,c,d,e,f,g){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;f=f|0;g=g|0;Ya[a&3](b|0,c|0,d|0,e|0,f|0,g|0)}function Pj(a){a=a|0;if(!(k[a+28>>2]|0))return 0;else return Va[k[(k[a>>2]|0)+48>>2]&127](a)|0;return 0}function Qj(a,b,c){a=a|0;b=b|0;c=c|0;if((c|0)<32){M=b<>>32-c;return a<>2]|0;return Za[k[(k[a>>2]|0)+16>>2]&127](a,b)|0}function Sj(a,b){a=a|0;b=b|0;var c=0;c=r;r=r+16|0;k[c>>2]=b;b=k[1440]|0;Ef(b,a,c)|0;kh(10,b)|0;Ba()}function Tj(a,b){a=a|0;b=b|0;a=k[a+32>>2]|0;return Za[k[(k[a>>2]|0)+12>>2]&127](a,b)|0}function Uj(a,b){a=a|0;b=b|0;a=k[a+32>>2]|0;return Za[k[(k[a>>2]|0)+20>>2]&127](a,b)|0}function Vj(a,b,c){a=a|0;b=b|0;c=c|0;return Gj(a,b,c)|0}function Wj(a,b,c){a=a|0;b=b|0;c=c|0;if((c|0)<32){M=b>>>c;return a>>>c|(b&(1<>>c-32|0}function Xj(a){a=a|0;Ad(a);Vl(a);return}function Yj(){}function Zj(a,b,c,d){a=a|0;b=b|0;c=c|0;d=d|0;d=b-d-(c>>>0>a>>>0|0)>>>0;return (M=d,a-c>>>0|0)|0}function _j(a){a=a|0;var b=0;k[a>>2]=3116;a=a+4|0;b=a+64|0;do{k[a>>2]=0;a=a+4|0}while((a|0)<(b|0));return}function $j(a){a=a|0;return 4}function ak(a,b,c){a=a|0;b=b|0;c=c|0;k[a+16>>2]=b;k[a+20>>2]=c;return 1}function bk(a,b,c,d,e,f){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;f=f|0;Sa[a&3](b|0,c|0,d|0,e|0,f|0)}function ck(a){a=a|0;a=k[a+32>>2]|0;return Va[k[(k[a>>2]|0)+28>>2]&127](a)|0}function dk(a,b){a=a|0;b=b|0;return Za[k[(k[a>>2]|0)+48>>2]&127](a,b)|0}function ek(a){a=a|0;a=k[a+32>>2]|0;return Va[k[(k[a>>2]|0)+24>>2]&127](a)|0}function fk(a,b){a=a|0;b=b|0;k[a+4>>2]=b;return 1}function gk(a){a=a|0;a=k[a+32>>2]|0;return Va[k[(k[a>>2]|0)+36>>2]&127](a)|0}function hk(a){a=a|0;tj(a);k[a>>2]=4108;k[a+32>>2]=-1;return}function ik(a,b){a=a|0;b=b|0;k[a+8>>2]=b;k[a+12>>2]=-1;return 1}function jk(a,b){a=a|0;b=b|0;return lk(a,b)|0}function kk(a,b,c){a=a|0;b=b|0;c=c|0;return Wi(b,c)|0}function lk(a,b){a=a|0;b=b|0;return Yh(b)|0}function mk(a,b,c,d){a=a|0;b=b|0;c=c|0;d=d|0;c=a+c>>>0;return (M=b+d+(c>>>0>>0|0)>>>0,c|0)|0}function nk(a,b){a=a|0;b=b|0;return wk(b)|0}function ok(){var a=0;if(!(k[4386]|0))a=17588;else{a=(bm()|0)+64|0;a=k[a>>2]|0}return a|0}function pk(a){a=a|0;k[a>>2]=3320;k[a+4>>2]=0;k[a+8>>2]=0;k[a+12>>2]=-1;return}function qk(a){a=a|0;if(!a)return;Ta[k[(k[a>>2]|0)+4>>2]&127](a);return}function rk(a,b,c,d,e){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;_a[a&3](b|0,c|0,d|0,e|0)}function sk(a){a=a|0;var b=0;b=a+60|0;do{k[a>>2]=0;a=a+4|0}while((a|0)<(b|0));return}function tk(a){a=a|0;var b=0;if(a>>>0>4294963200){b=ok()|0;k[b>>2]=0-a;a=-1}return a|0}function uk(a){a=a|0;if(!a)a=0;else a=(If(a,936,1008,0)|0)!=0;return a&1|0}function vk(a){a=a|0;var b=0;b=r;r=r+16|0;Xa[a&3]();Sj(17400,b)}function wk(a){a=a|0;return zg(a)|0}function xk(a){a=a|0;yg(a);Vl(a);return}function yk(a,b){a=a|0;b=b|0;return da(Fk(a,b))}function zk(a){a=a|0;Gk(a);k[a>>2]=5428;k[a+32>>2]=0;return}function Ak(a,b,c,d){a=a|0;b=b|0;c=c|0;d=d|0;return Ra[a&31](b|0,c|0,d|0)|0}function Bk(a,b,c){a=a|0;b=b|0;c=c|0;Aj(a,b,c);return}function Ck(a){a=a|0;if(!a)return;Yl(a+24|0);Vl(a);return}function Dk(){var a=0;a=vj(64)|0;zi(a);return a|0}function Ek(a){a=a|0;return k[a+8>>2]|0}function Fk(a,b){a=a|0;b=b|0;return da(o[(k[a>>2]|0)+(b<<2)>>2])}function Gk(a){a=a|0;zj(a);k[a>>2]=3260;k[a+28>>2]=0;return}function Hk(a){a=a|0;return i[(k[a+8>>2]|0)+24>>0]|0}function Ik(a,b){a=a|0;b=b|0;return -1}function Jk(a){a=a|0;return 3}function Kk(a,b){a=a|0;b=b|0;return Tk(a,b)|0}function Lk(a,b,c,d){a=a|0;b=b|0;c=c|0;d=d|0;Wa[a&7](b|0,c|0,d|0)}function Mk(){var a=0;a=vj(88)|0;uj(a);return a|0} -function Db(a,b,c){a=a|0;b=b|0;c=c|0;var d=0,e=0,f=0,g=0,h=0,j=0,l=0,m=Pa,n=Pa,p=0,q=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,B=0,C=0,D=0,E=0,F=0,G=0,H=0,I=0,J=0,K=0,L=0,N=0,O=Pa;N=r;r=r+48|0;L=N+24|0;G=N+12|0;K=N;H=L+16|0;k[L>>2]=0;k[L+4>>2]=0;k[L+8>>2]=0;k[L+12>>2]=0;o[H>>2]=da(1.0);J=a+80|0;fi(K,k[J>>2]|0);e=k[J>>2]|0;a:do if((e|0)>0){x=b+48|0;y=b+40|0;v=G+4|0;w=G+8|0;z=L+4|0;A=L+12|0;B=L+8|0;C=a+40|0;D=a+64|0;u=k[c>>2]|0;d=0;t=0;s=0;while(1){f=u+t|0;e=x;c=k[e>>2]|0;e=k[e+4>>2]|0;q=y;f=sj(k[q>>2]|0,k[q+4>>2]|0,f|0,((f|0)<0)<<31>>31|0)|0;e=mk(f|0,M|0,c|0,e|0)|0;c=G;e=(k[k[b>>2]>>2]|0)+e|0;f=c+12|0;do{i[c>>0]=i[e>>0]|0;c=c+1|0;e=e+1|0}while((c|0)<(f|0));h=k[G>>2]|0;j=k[v>>2]|0;l=k[w>>2]|0;q=((h^318)+239^j)+239^l;p=(s|0)==0;b:do if(!p){f=s+-1|0;c=(f&s|0)==0;if(c)g=q&f;else g=(q>>>0)%(s>>>0)|0;e=k[(k[L>>2]|0)+(g<<2)>>2]|0;do if(e|0?(E=k[e>>2]|0,E|0):0){c:do if(c){c=E;while(1){if((k[c+4>>2]&f|0)!=(g|0)){e=22;break c}if(((k[c+8>>2]|0)==(h|0)?(k[c+12>>2]|0)==(j|0):0)?(k[c+16>>2]|0)==(l|0):0){e=21;break c}c=k[c>>2]|0;if(!c){e=22;break}}}else{c=E;while(1){if((((k[c+4>>2]|0)>>>0)%(s>>>0)|0|0)!=(g|0)){e=22;break c}if(((k[c+8>>2]|0)==(h|0)?(k[c+12>>2]|0)==(j|0):0)?(k[c+16>>2]|0)==(l|0):0){e=21;break c}c=k[c>>2]|0;if(!c){e=22;break}}}while(0);if((e|0)==21){e=0;k[(k[K>>2]|0)+(t<<2)>>2]=k[c+20>>2];break b}else if((e|0)==22)if(p){c=0;e=39;break b}else break}while(0);g=s+-1|0;e=(g&s|0)==0;if(e)c=g&q;else c=(q>>>0)%(s>>>0)|0;f=k[(k[L>>2]|0)+(c<<2)>>2]|0;if((f|0)!=0?(F=k[f>>2]|0,(F|0)!=0):0)if(e){e=F;while(1){if((k[e+4>>2]&g|0)!=(c|0)){e=39;break b}if(((k[e+8>>2]|0)==(h|0)?(k[e+12>>2]|0)==(j|0):0)?(k[e+16>>2]|0)==(l|0):0){e=51;break b}e=k[e>>2]|0;if(!e){e=39;break}}}else{e=F;while(1){if((((k[e+4>>2]|0)>>>0)%(s>>>0)|0|0)!=(c|0)){e=39;break b}if(((k[e+8>>2]|0)==(h|0)?(k[e+12>>2]|0)==(j|0):0)?(k[e+16>>2]|0)==(l|0):0){e=51;break b}e=k[e>>2]|0;if(!e){e=39;break}}}else e=39}else{c=0;e=39}while(0);if((e|0)==39){g=vj(24)|0;k[g+8>>2]=h;k[g+12>>2]=j;k[g+16>>2]=l;k[g+20>>2]=d;k[g+4>>2]=q;k[g>>2]=0;m=da(((k[A>>2]|0)+1|0)>>>0);O=da(s>>>0);n=da(o[H>>2]);do if(p|m>da(O*n)){c=(s>>>0>2&(s+-1&s|0)==0&1|s<<1)^1;e=~~da(_(da(m/n)))>>>0;Yf(L,c>>>0>>0?e:c);c=k[z>>2]|0;e=c+-1|0;if(!(e&c)){f=c;c=e&q;break}else{f=c;c=(q>>>0)%(c>>>0)|0;break}}else f=s;while(0);c=(k[L>>2]|0)+(c<<2)|0;e=k[c>>2]|0;if(!e){k[g>>2]=k[B>>2];k[B>>2]=g;k[c>>2]=B;c=k[g>>2]|0;if(c|0){c=k[c+4>>2]|0;e=f+-1|0;if(!(e&f))c=c&e;else c=(c>>>0)%(f>>>0)|0;k[(k[L>>2]|0)+(c<<2)>>2]=g}}else{k[g>>2]=k[e>>2];k[e>>2]=g}k[A>>2]=(k[A>>2]|0)+1;e=51}if((e|0)==51){q=C;s=k[q>>2]|0;q=sj(s|0,k[q+4>>2]|0,d|0,((d|0)<0)<<31>>31|0)|0;Mh((k[k[D>>2]>>2]|0)+q|0,G|0,s|0)|0;k[(k[K>>2]|0)+(t<<2)>>2]=d;d=d+1|0}c=t+1|0;e=k[J>>2]|0;if((c|0)>=(e|0)){l=d;break a}t=c;s=k[z>>2]|0}}else l=0;while(0);if((l|0)!=(e|0)){j=a+84|0;if(!(i[j>>0]|0)){e=k[a+68>>2]|0;c=(k[a+72>>2]|0)-e|0;if((c|0)>0){f=k[K>>2]|0;d=c>>2;c=0;do{a=e+(c<<2)|0;k[a>>2]=k[f+(k[a>>2]<<2)>>2];c=c+1|0}while((c|0)<(d|0))}}else{i[j>>0]=0;c=a+68|0;d=a+72|0;h=k[d>>2]|0;g=k[c>>2]|0;f=h-g>>2;if(e>>>0<=f>>>0){if(e>>>0>>0?(I=g+(e<<2)|0,(h|0)!=(I|0)):0)k[d>>2]=h+(~((h+-4-I|0)>>>2)<<2)}else{Of(c,e-f|0,3104);e=k[J>>2]|0}if((e|0)>0){f=k[K>>2]|0;if(i[j>>0]|0)Ka(13384,13403,80,13435);d=k[a+68>>2]|0;c=0;do{k[d+(c<<2)>>2]=k[f+(c<<2)>>2];c=c+1|0}while((c|0)<(e|0))}}k[J>>2]=l}e=k[K>>2]|0;f=e;if(e|0){c=K+4|0;d=k[c>>2]|0;if((d|0)!=(e|0))k[c>>2]=d+(~((d+-4-f|0)>>>2)<<2);Vl(e)}c=k[L+8>>2]|0;if(c|0)do{K=c;c=k[c>>2]|0;Vl(K)}while((c|0)!=0);c=k[L>>2]|0;k[L>>2]=0;if(!c){r=N;return l|0}Vl(c);r=N;return l|0}function Eb(a,b,c,d,e,f){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;f=f|0;var g=0,h=0,i=0,j=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,B=0,C=0,D=0,E=0,F=0,G=0,H=0;D=a+8|0;k[D>>2]=e;h=a+32|0;i=a+36|0;g=k[i>>2]|0;f=k[h>>2]|0;d=g-f>>2;if(d>>>0>=e>>>0){if(d>>>0>e>>>0?(j=f+(e<<2)|0,(g|0)!=(j|0)):0)k[i>>2]=g+(~((g+-4-j|0)>>>2)<<2)}else wg(h,e-d|0);A=e>>>0>1073741823?-1:e<<2;B=Sl(A)|0;Zh(B|0,0,A|0)|0;C=Sl(A)|0;Zh(C|0,0,A|0)|0;if((k[D>>2]|0)>0){l=a+16|0;j=a+32|0;m=a+12|0;i=0;do{h=k[B+(i<<2)>>2]|0;d=k[l>>2]|0;do if((h|0)<=(d|0)){d=k[m>>2]|0;f=k[j>>2]|0;g=f+(i<<2)|0;if((h|0)<(d|0)){k[g>>2]=d;g=f;break}else{k[g>>2]=h;g=f;break}}else{g=k[j>>2]|0;k[g+(i<<2)>>2]=d}while(0);i=i+1|0;d=k[D>>2]|0}while((i|0)<(d|0));if((d|0)>0){d=0;do{k[c+(d<<2)>>2]=(k[b+(d<<2)>>2]|0)+(k[g+(d<<2)>>2]|0);d=d+1|0;f=k[D>>2]|0}while((d|0)<(f|0));if((f|0)>0){f=a+20|0;d=0;do{g=c+(d<<2)|0;h=k[g>>2]|0;if((h|0)<=(k[l>>2]|0)){if((h|0)<(k[m>>2]|0))k[g>>2]=(k[f>>2]|0)+h}else k[g>>2]=h-(k[f>>2]|0);d=d+1|0}while((d|0)<(k[D>>2]|0))}}}t=k[a+48>>2]|0;u=a+56|0;f=k[u>>2]|0;h=k[f+4>>2]|0;g=k[f>>2]|0;A=h-g|0;v=A>>2;if((A|0)<=4){Tl(C);Tl(B);return 1}w=k[a+52>>2]|0;x=(e|0)>0;y=a+16|0;z=a+32|0;A=a+12|0;q=a+20|0;r=t+12|0;s=e<<2;d=1;while(1){if(h-g>>2>>>0<=d>>>0){H=28;break}p=k[g+(d<<2)>>2]|0;if(x)Zh(B|0,0,s|0)|0;if((p|0)>-1){o=k[r>>2]|0;a=0;n=p;while(1){g=k[o+(n<<2)>>2]|0;if((g|0)>=0){i=k[t>>2]|0;h=(g>>>0)%3|0;j=k[w>>2]|0;m=k[j+(k[i+(((g>>>0)/3|0)*12|0)+(h<<2)>>2]<<2)>>2]|0;f=g+1|0;f=((f|0)%3|0|0)==0?g+-2|0:f;if((f|0)<0)f=-1073741824;else f=k[i+(((f>>>0)/3|0)*12|0)+(((f>>>0)%3|0)<<2)>>2]|0;l=k[j+(f<<2)>>2]|0;f=((h|0)==0?2:-1)+g|0;if((f|0)<0)f=-1073741824;else f=k[i+(((f>>>0)/3|0)*12|0)+(((f>>>0)%3|0)<<2)>>2]|0;f=k[j+(f<<2)>>2]|0;if((m|0)<(d|0)&(l|0)<(d|0)&(f|0)<(d|0)){i=$(m,e)|0;h=$(l,e)|0;g=$(f,e)|0;if(x){f=0;do{k[C+(f<<2)>>2]=(k[c+(f+g<<2)>>2]|0)+(k[c+(f+h<<2)>>2]|0)-(k[c+(f+i<<2)>>2]|0);f=f+1|0}while((f|0)!=(e|0));if(x){f=0;do{m=B+(f<<2)|0;k[m>>2]=(k[m>>2]|0)+(k[C+(f<<2)>>2]|0);f=f+1|0}while((f|0)!=(e|0))}}g=a+1|0}else g=a}else g=a;f=(((n>>>0)%3|0|0)==0?2:-1)+n|0;do if((f|0)>=0){f=k[o+(f<<2)>>2]|0;if((f|0)>=0)if(!((f>>>0)%3|0)){f=f+2|0;break}else{f=f+-1|0;break}}while(0);n=(f|0)==(p|0)?-1073741824:f;if((n|0)<=-1)break;else a=g}l=$(d,e)|0;if(g){if(x){f=0;do{p=B+(f<<2)|0;k[p>>2]=(k[p>>2]|0)/(g|0)|0;f=f+1|0}while((f|0)!=(e|0))}m=c+(l<<2)|0;if((k[D>>2]|0)>0){j=0;do{i=k[B+(j<<2)>>2]|0;f=k[y>>2]|0;do if((i|0)<=(f|0)){f=k[A>>2]|0;g=k[z>>2]|0;h=g+(j<<2)|0;if((i|0)<(f|0)){k[h>>2]=f;h=g;break}else{k[h>>2]=i;h=g;break}}else{h=k[z>>2]|0;k[h+(j<<2)>>2]=f}while(0);j=j+1|0;f=k[D>>2]|0}while((j|0)<(f|0));if((f|0)>0){f=0;do{k[m+(f<<2)>>2]=(k[b+(f+l<<2)>>2]|0)+(k[h+(f<<2)>>2]|0);f=f+1|0;g=k[D>>2]|0}while((f|0)<(g|0));if((g|0)>0){f=0;do{g=m+(f<<2)|0;h=k[g>>2]|0;if((h|0)<=(k[y>>2]|0)){if((h|0)<(k[A>>2]|0))k[g>>2]=(k[q>>2]|0)+h}else k[g>>2]=h-(k[q>>2]|0);f=f+1|0}while((f|0)<(k[D>>2]|0))}}}}else{G=l;H=52}}else{G=$(d,e)|0;H=52}if((H|0)==52?(H=0,E=c+(($(d+-1|0,e)|0)<<2)|0,F=c+(G<<2)|0,(k[D>>2]|0)>0):0){j=0;do{i=k[E+(j<<2)>>2]|0;f=k[y>>2]|0;do if((i|0)<=(f|0)){f=k[A>>2]|0;g=k[z>>2]|0;h=g+(j<<2)|0;if((i|0)<(f|0)){k[h>>2]=f;h=g;break}else{k[h>>2]=i;h=g;break}}else{h=k[z>>2]|0;k[h+(j<<2)>>2]=f}while(0);j=j+1|0;f=k[D>>2]|0}while((j|0)<(f|0));if((f|0)>0){f=0;do{k[F+(f<<2)>>2]=(k[b+(f+G<<2)>>2]|0)+(k[h+(f<<2)>>2]|0);f=f+1|0;g=k[D>>2]|0}while((f|0)<(g|0));if((g|0)>0){f=0;do{g=F+(f<<2)|0;h=k[g>>2]|0;if((h|0)<=(k[y>>2]|0)){if((h|0)<(k[A>>2]|0))k[g>>2]=(k[q>>2]|0)+h}else k[g>>2]=h-(k[q>>2]|0);f=f+1|0}while((f|0)<(k[D>>2]|0))}}}d=d+1|0;if((d|0)>=(v|0)){H=25;break}f=k[u>>2]|0;g=k[f>>2]|0;h=k[f+4>>2]|0}if((H|0)==25){Tl(C);Tl(B);return 1}else if((H|0)==28)_k(f);return 0}function Fb(a,b,c,d,e,f){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;f=f|0;var g=0,h=0,i=0,j=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,B=0,C=0,D=0,E=0,F=0;F=a+8|0;k[F>>2]=e;do if(d|0){f=k[b>>2]|0;l=a+16|0;k[l>>2]=f;j=a+12|0;k[j>>2]=f;if((d|0)>1){i=1;h=f;while(1){g=k[b+(i<<2)>>2]|0;if((g|0)>=(h|0))if((g|0)>(f|0)){k[l>>2]=g;f=g;g=h}else g=h;else k[j>>2]=g;i=i+1|0;if((i|0)==(d|0))break;else h=g}}else g=f;z=1-g+f|0;k[a+20>>2]=z;f=(z|0)/2|0;g=a+24|0;k[g>>2]=f;k[a+28>>2]=0-f;if(!(z&1))k[g>>2]=f+-1;f=a+32|0;g=a+36|0;j=k[g>>2]|0;h=k[f>>2]|0;i=j-h>>2;if(i>>>0>>0){wg(f,e-i|0);break}if(i>>>0>e>>>0?(m=h+(e<<2)|0,(j|0)!=(m|0)):0)k[g>>2]=j+(~((j+-4-m|0)>>>2)<<2)}while(0);o=e>>>0>1073741823?-1:e<<2;z=Sl(o)|0;Zh(z|0,0,o|0)|0;o=k[a+48>>2]|0;p=a+56|0;i=k[p>>2]|0;h=k[i+4>>2]|0;g=k[i>>2]|0;f=h-g|0;a:do if((f|0)>4){q=k[a+52>>2]|0;r=a+16|0;s=a+32|0;t=a+12|0;u=a+28|0;v=a+20|0;w=a+24|0;x=o+12|0;y=(e|0)>0;d=f>>2;f=i;while(1){n=d+-1|0;if(h-g>>2>>>0<=n>>>0)break;f=k[g+(n<<2)>>2]|0;m=$(n,e)|0;if((f|0)>=0?(A=k[(k[x>>2]|0)+(f<<2)>>2]|0,(A|0)>=0):0){h=k[o>>2]|0;g=(A>>>0)%3|0;i=k[q>>2]|0;l=k[i+(k[h+(((A>>>0)/3|0)*12|0)+(g<<2)>>2]<<2)>>2]|0;f=A+1|0;f=((f|0)%3|0|0)==0?A+-2|0:f;if((f|0)<0)f=-1073741824;else f=k[h+(((f>>>0)/3|0)*12|0)+(((f>>>0)%3|0)<<2)>>2]|0;j=k[i+(f<<2)>>2]|0;f=((g|0)==0?2:-1)+A|0;if((f|0)<0)f=-1073741824;else f=k[h+(((f>>>0)/3|0)*12|0)+(((f>>>0)%3|0)<<2)>>2]|0;f=k[i+(f<<2)>>2]|0;if((l|0)<(n|0)&(j|0)<(n|0)&(f|0)<(n|0)){i=$(l,e)|0;h=$(j,e)|0;g=$(f,e)|0;if(y){f=0;do{k[z+(f<<2)>>2]=(k[b+(f+g<<2)>>2]|0)+(k[b+(f+h<<2)>>2]|0)-(k[b+(f+i<<2)>>2]|0);f=f+1|0}while((f|0)!=(e|0))}l=b+(m<<2)|0;if((k[F>>2]|0)>0){j=0;do{i=k[z+(j<<2)>>2]|0;f=k[r>>2]|0;do if((i|0)<=(f|0)){f=k[t>>2]|0;g=k[s>>2]|0;h=g+(j<<2)|0;if((i|0)<(f|0)){k[h>>2]=f;h=g;break}else{k[h>>2]=i;h=g;break}}else{h=k[s>>2]|0;k[h+(j<<2)>>2]=f}while(0);j=j+1|0;f=k[F>>2]|0}while((j|0)<(f|0));if((f|0)>0){f=0;do{k[c+(f+m<<2)>>2]=(k[l+(f<<2)>>2]|0)-(k[h+(f<<2)>>2]|0);f=f+1|0;g=k[F>>2]|0}while((f|0)<(g|0));if((g|0)>0){f=0;do{g=c+(f+m<<2)|0;h=k[g>>2]|0;if((h|0)>=(k[u>>2]|0)){if((h|0)>(k[w>>2]|0))k[g>>2]=h-(k[v>>2]|0)}else k[g>>2]=(k[v>>2]|0)+h;f=f+1|0}while((f|0)<(k[F>>2]|0))}}}}else D=31}else D=31;if((D|0)==31?(D=0,B=b+(m<<2)|0,C=b+(($(d+-2|0,e)|0)<<2)|0,(k[F>>2]|0)>0):0){j=0;do{i=k[C+(j<<2)>>2]|0;f=k[r>>2]|0;do if((i|0)<=(f|0)){f=k[t>>2]|0;g=k[s>>2]|0;h=g+(j<<2)|0;if((i|0)<(f|0)){k[h>>2]=f;h=g;break}else{k[h>>2]=i;h=g;break}}else{h=k[s>>2]|0;k[h+(j<<2)>>2]=f}while(0);j=j+1|0;f=k[F>>2]|0}while((j|0)<(f|0));if((f|0)>0){f=0;do{k[c+(f+m<<2)>>2]=(k[B+(f<<2)>>2]|0)-(k[h+(f<<2)>>2]|0);f=f+1|0;g=k[F>>2]|0}while((f|0)<(g|0));if((g|0)>0){f=0;do{g=c+(f+m<<2)|0;h=k[g>>2]|0;if((h|0)>=(k[u>>2]|0)){if((h|0)>(k[w>>2]|0))k[g>>2]=h-(k[v>>2]|0)}else k[g>>2]=(k[v>>2]|0)+h;f=f+1|0}while((f|0)<(k[F>>2]|0))}}}if((n|0)<=1){E=z;break a}f=k[p>>2]|0;d=n;g=k[f>>2]|0;h=k[f+4>>2]|0}_k(f)}else E=z;while(0);if((e|0)>0)Zh(z|0,0,e<<2|0)|0;if((k[F>>2]|0)<=0){Tl(z);return 1}l=a+16|0;d=a+32|0;m=a+12|0;j=0;do{i=k[E+(j<<2)>>2]|0;f=k[l>>2]|0;do if((i|0)<=(f|0)){f=k[m>>2]|0;g=k[d>>2]|0;h=g+(j<<2)|0;if((i|0)<(f|0)){k[h>>2]=f;h=g;break}else{k[h>>2]=i;h=g;break}}else{h=k[d>>2]|0;k[h+(j<<2)>>2]=f}while(0);j=j+1|0;f=k[F>>2]|0}while((j|0)<(f|0));if((f|0)>0)f=0;else{Tl(z);return 1}do{k[c+(f<<2)>>2]=(k[b+(f<<2)>>2]|0)-(k[h+(f<<2)>>2]|0);f=f+1|0;g=k[F>>2]|0}while((f|0)<(g|0));if((g|0)<=0){Tl(z);return 1}j=a+28|0;l=a+20|0;g=a+24|0;f=0;do{h=c+(f<<2)|0;i=k[h>>2]|0;if((i|0)>=(k[j>>2]|0)){if((i|0)>(k[g>>2]|0))k[h>>2]=i-(k[l>>2]|0)}else k[h>>2]=(k[l>>2]|0)+i;f=f+1|0}while((f|0)<(k[F>>2]|0));Tl(z);return 1}function Gb(a,b,c){a=a|0;b=b|0;c=c|0;var d=0,e=0,f=0,g=0,h=0,j=0,m=Pa,n=Pa,p=0,q=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,B=0,C=0,D=0,E=0,F=0,G=0,H=0,I=0,J=0,K=0,L=Pa;K=r;r=r+48|0;J=K+20|0;E=K;I=K+8|0;F=J+16|0;k[J>>2]=0;k[J+4>>2]=0;k[J+8>>2]=0;k[J+12>>2]=0;o[F>>2]=da(1.0);H=a+80|0;fi(I,k[H>>2]|0);e=k[H>>2]|0;a:do if((e|0)>0){v=b+48|0;w=b+40|0;x=J+4|0;y=J+12|0;z=J+8|0;A=a+40|0;B=a+64|0;u=k[c>>2]|0;c=0;t=0;p=0;while(1){q=u+c|0;j=v;h=k[j>>2]|0;j=k[j+4>>2]|0;s=w;s=sj(q|0,((q|0)<0)<<31>>31|0,k[s>>2]|0,k[s+4>>2]|0)|0;j=mk(s|0,M|0,h|0,j|0)|0;j=(k[k[b>>2]>>2]|0)+j|0;h=j;h=l[h>>0]|l[h+1>>0]<<8|l[h+2>>0]<<16|l[h+3>>0]<<24;j=j+4|0;j=l[j>>0]|l[j+1>>0]<<8|l[j+2>>0]<<16|l[j+3>>0]<<24;s=E;k[s>>2]=h;k[s+4>>2]=j;s=(h^318)+239^j;q=(p|0)==0;b:do if(!q){f=p+-1|0;d=(f&p|0)==0;if(d)g=s&f;else g=(s>>>0)%(p>>>0)|0;e=k[(k[J>>2]|0)+(g<<2)>>2]|0;do if(e|0?(C=k[e>>2]|0,C|0):0){c:do if(d){d=C;while(1){if((k[d+4>>2]&f|0)!=(g|0)){e=20;break c}if((k[d+8>>2]|0)==(h|0)?(k[d+12>>2]|0)==(j|0):0){e=19;break c}d=k[d>>2]|0;if(!d){e=20;break}}}else{d=C;while(1){if((((k[d+4>>2]|0)>>>0)%(p>>>0)|0|0)!=(g|0)){e=20;break c}if((k[d+8>>2]|0)==(h|0)?(k[d+12>>2]|0)==(j|0):0){e=19;break c}d=k[d>>2]|0;if(!d){e=20;break}}}while(0);if((e|0)==19){e=0;k[(k[I>>2]|0)+(c<<2)>>2]=k[d+16>>2];d=t;break b}else if((e|0)==20)if(q){d=0;e=35;break b}else break}while(0);g=p+-1|0;f=(g&p|0)==0;if(f)d=g&s;else d=(s>>>0)%(p>>>0)|0;e=k[(k[J>>2]|0)+(d<<2)>>2]|0;if((e|0)!=0?(D=k[e>>2]|0,(D|0)!=0):0)if(f){e=D;while(1){if((k[e+4>>2]&g|0)!=(d|0)){e=35;break b}if((k[e+8>>2]|0)==(h|0)?(k[e+12>>2]|0)==(j|0):0){e=47;break b}e=k[e>>2]|0;if(!e){e=35;break}}}else{e=D;while(1){if((((k[e+4>>2]|0)>>>0)%(p>>>0)|0|0)!=(d|0)){e=35;break b}if((k[e+8>>2]|0)==(h|0)?(k[e+12>>2]|0)==(j|0):0){e=47;break b}e=k[e>>2]|0;if(!e){e=35;break}}}else e=35}else{d=0;e=35}while(0);if((e|0)==35){g=vj(20)|0;f=g+8|0;k[f>>2]=h;k[f+4>>2]=j;k[g+16>>2]=t;k[g+4>>2]=s;k[g>>2]=0;m=da(((k[y>>2]|0)+1|0)>>>0);L=da(p>>>0);n=da(o[F>>2]);do if(q|m>da(L*n)){d=(p>>>0>2&(p+-1&p|0)==0&1|p<<1)^1;e=~~da(_(da(m/n)))>>>0;Zf(J,d>>>0>>0?e:d);d=k[x>>2]|0;e=d+-1|0;if(!(e&d)){f=d;d=e&s;break}else{f=d;d=(s>>>0)%(d>>>0)|0;break}}else f=p;while(0);d=(k[J>>2]|0)+(d<<2)|0;e=k[d>>2]|0;if(!e){k[g>>2]=k[z>>2];k[z>>2]=g;k[d>>2]=z;d=k[g>>2]|0;if(d|0){d=k[d+4>>2]|0;e=f+-1|0;if(!(e&f))d=d&e;else d=(d>>>0)%(f>>>0)|0;k[(k[J>>2]|0)+(d<<2)>>2]=g}}else{k[g>>2]=k[e>>2];k[e>>2]=g}k[y>>2]=(k[y>>2]|0)+1;e=47}if((e|0)==47){s=A;d=k[s>>2]|0;s=sj(d|0,k[s+4>>2]|0,t|0,((t|0)<0)<<31>>31|0)|0;Mh((k[k[B>>2]>>2]|0)+s|0,E|0,d|0)|0;k[(k[I>>2]|0)+(c<<2)>>2]=t;d=t+1|0}c=c+1|0;e=k[H>>2]|0;if((c|0)>=(e|0)){p=d;break a}t=d;p=k[x>>2]|0}}else p=0;while(0);if((p|0)!=(e|0)){j=a+84|0;if(!(i[j>>0]|0)){e=k[a+68>>2]|0;c=(k[a+72>>2]|0)-e|0;if((c|0)>0){f=k[I>>2]|0;d=c>>2;c=0;do{a=e+(c<<2)|0;k[a>>2]=k[f+(k[a>>2]<<2)>>2];c=c+1|0}while((c|0)<(d|0))}}else{i[j>>0]=0;c=a+68|0;d=a+72|0;h=k[d>>2]|0;g=k[c>>2]|0;f=h-g>>2;if(e>>>0<=f>>>0){if(e>>>0>>0?(G=g+(e<<2)|0,(h|0)!=(G|0)):0)k[d>>2]=h+(~((h+-4-G|0)>>>2)<<2)}else{Of(c,e-f|0,3104);e=k[H>>2]|0}if((e|0)>0){f=k[I>>2]|0;if(i[j>>0]|0)Ka(13384,13403,80,13435);d=k[a+68>>2]|0;c=0;do{k[d+(c<<2)>>2]=k[f+(c<<2)>>2];c=c+1|0}while((c|0)<(e|0))}}k[H>>2]=p}e=k[I>>2]|0;f=e;if(e|0){c=I+4|0;d=k[c>>2]|0;if((d|0)!=(e|0))k[c>>2]=d+(~((d+-4-f|0)>>>2)<<2);Vl(e)}c=k[J+8>>2]|0;if(c|0)do{I=c;c=k[c>>2]|0;Vl(I)}while((c|0)!=0);c=k[J>>2]|0;k[J>>2]=0;if(!c){r=K;return p|0}Vl(c);r=K;return p|0}function Hb(a,b,c,d,e,f){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;f=f|0;var g=0,h=0,i=0,j=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,B=0,C=0,D=0,E=0,F=0,G=0,H=0,I=0,J=0;B=a+8|0;k[B>>2]=e;h=a+32|0;i=a+36|0;g=k[i>>2]|0;f=k[h>>2]|0;d=g-f>>2;if(d>>>0>=e>>>0){if(d>>>0>e>>>0?(j=f+(e<<2)|0,(g|0)!=(j|0)):0)k[i>>2]=g+(~((g+-4-j|0)>>>2)<<2)}else wg(h,e-d|0);y=e>>>0>1073741823?-1:e<<2;z=Sl(y)|0;Zh(z|0,0,y|0)|0;A=Sl(y)|0;Zh(A|0,0,y|0)|0;if((k[B>>2]|0)>0){l=a+16|0;j=a+32|0;m=a+12|0;i=0;do{h=k[z+(i<<2)>>2]|0;d=k[l>>2]|0;do if((h|0)<=(d|0)){d=k[m>>2]|0;f=k[j>>2]|0;g=f+(i<<2)|0;if((h|0)<(d|0)){k[g>>2]=d;g=f;break}else{k[g>>2]=h;g=f;break}}else{g=k[j>>2]|0;k[g+(i<<2)>>2]=d}while(0);i=i+1|0;d=k[B>>2]|0}while((i|0)<(d|0));if((d|0)>0){d=0;do{k[c+(d<<2)>>2]=(k[b+(d<<2)>>2]|0)+(k[g+(d<<2)>>2]|0);d=d+1|0;f=k[B>>2]|0}while((d|0)<(f|0));if((f|0)>0){f=a+20|0;d=0;do{g=c+(d<<2)|0;h=k[g>>2]|0;if((h|0)<=(k[l>>2]|0)){if((h|0)<(k[m>>2]|0))k[g>>2]=(k[f>>2]|0)+h}else k[g>>2]=h-(k[f>>2]|0);d=d+1|0}while((d|0)<(k[B>>2]|0))}}}r=k[a+48>>2]|0;s=a+56|0;g=k[s>>2]|0;f=k[g+4>>2]|0;h=k[g>>2]|0;y=f-h|0;t=y>>2;if((y|0)<=4){Tl(A);Tl(z);return 1}u=k[a+52>>2]|0;v=(e|0)>0;w=a+16|0;x=a+32|0;y=a+12|0;n=a+20|0;o=r+64|0;p=r+28|0;q=e<<2;d=1;while(1){if(f-h>>2>>>0<=d>>>0){J=28;break}a=k[h+(d<<2)>>2]|0;if(v)Zh(z|0,0,q|0)|0;if((a|0)>-1){m=k[r>>2]|0;j=0;l=a;do{if(((k[m+(l>>>5<<2)>>2]&1<<(l&31)|0)==0?(C=k[(k[(k[o>>2]|0)+12>>2]|0)+(l<<2)>>2]|0,(C|0)>=0):0)?(F=k[p>>2]|0,i=k[u>>2]|0,D=k[i+(k[F+(C<<2)>>2]<<2)>>2]|0,E=C+1|0,E=k[i+(k[F+((((E|0)%3|0|0)==0?C+-2|0:E)<<2)>>2]<<2)>>2]|0,F=k[i+(k[F+((((C>>>0)%3|0|0)==0?2:-1)+C<<2)>>2]<<2)>>2]|0,(D|0)<(d|0)&(E|0)<(d|0)&(F|0)<(d|0)):0){g=$(D,e)|0;h=$(E,e)|0;i=$(F,e)|0;if(v){f=0;do{k[A+(f<<2)>>2]=(k[c+(f+i<<2)>>2]|0)+(k[c+(f+h<<2)>>2]|0)-(k[c+(f+g<<2)>>2]|0);f=f+1|0}while((f|0)!=(e|0));if(v){f=0;do{i=z+(f<<2)|0;k[i>>2]=(k[i>>2]|0)+(k[A+(f<<2)>>2]|0);f=f+1|0}while((f|0)!=(e|0))}}j=j+1|0}f=(((l>>>0)%3|0|0)==0?2:-1)+l|0;do if(!(k[m+(f>>>5<<2)>>2]&1<<(f&31))){if((f|0)>=0){f=k[(k[(k[o>>2]|0)+12>>2]|0)+(f<<2)>>2]|0;if((f|0)>=0)if(!((f>>>0)%3|0)){f=f+2|0;break}else{f=f+-1|0;break}}}else f=-1073741824;while(0);l=(f|0)==(a|0)?-1073741824:f}while((l|0)>-1);l=$(d,e)|0;if(j){if(v){f=0;do{a=z+(f<<2)|0;k[a>>2]=(k[a>>2]|0)/(j|0)|0;f=f+1|0}while((f|0)!=(e|0))}m=c+(l<<2)|0;if((k[B>>2]|0)>0){j=0;do{i=k[z+(j<<2)>>2]|0;f=k[w>>2]|0;do if((i|0)<=(f|0)){f=k[y>>2]|0;g=k[x>>2]|0;h=g+(j<<2)|0;if((i|0)<(f|0)){k[h>>2]=f;h=g;break}else{k[h>>2]=i;h=g;break}}else{h=k[x>>2]|0;k[h+(j<<2)>>2]=f}while(0);j=j+1|0;f=k[B>>2]|0}while((j|0)<(f|0));if((f|0)>0){f=0;do{k[m+(f<<2)>>2]=(k[b+(f+l<<2)>>2]|0)+(k[h+(f<<2)>>2]|0);f=f+1|0;g=k[B>>2]|0}while((f|0)<(g|0));if((g|0)>0){f=0;do{g=m+(f<<2)|0;h=k[g>>2]|0;if((h|0)<=(k[w>>2]|0)){if((h|0)<(k[y>>2]|0))k[g>>2]=(k[n>>2]|0)+h}else k[g>>2]=h-(k[n>>2]|0);f=f+1|0}while((f|0)<(k[B>>2]|0))}}}}else{I=l;J=50}}else{I=$(d,e)|0;J=50}if((J|0)==50?(J=0,G=c+(($(d+-1|0,e)|0)<<2)|0,H=c+(I<<2)|0,(k[B>>2]|0)>0):0){j=0;do{i=k[G+(j<<2)>>2]|0;f=k[w>>2]|0;do if((i|0)<=(f|0)){f=k[y>>2]|0;g=k[x>>2]|0;h=g+(j<<2)|0;if((i|0)<(f|0)){k[h>>2]=f;h=g;break}else{k[h>>2]=i;h=g;break}}else{h=k[x>>2]|0;k[h+(j<<2)>>2]=f}while(0);j=j+1|0;f=k[B>>2]|0}while((j|0)<(f|0));if((f|0)>0){f=0;do{k[H+(f<<2)>>2]=(k[b+(f+I<<2)>>2]|0)+(k[h+(f<<2)>>2]|0);f=f+1|0;g=k[B>>2]|0}while((f|0)<(g|0));if((g|0)>0){f=0;do{g=H+(f<<2)|0;h=k[g>>2]|0;if((h|0)<=(k[w>>2]|0)){if((h|0)<(k[y>>2]|0))k[g>>2]=(k[n>>2]|0)+h}else k[g>>2]=h-(k[n>>2]|0);f=f+1|0}while((f|0)<(k[B>>2]|0))}}}d=d+1|0;if((d|0)>=(t|0)){J=25;break}f=k[s>>2]|0;g=f;h=k[f>>2]|0;f=k[f+4>>2]|0}if((J|0)==25){Tl(A);Tl(z);return 1}else if((J|0)==28)_k(g);return 0}function Ib(a,b,c){a=a|0;b=b|0;c=c|0;var d=0,e=0,f=0,g=0,h=0,m=0,n=Pa,p=Pa,q=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,B=0,C=0,D=0,E=0,F=0,G=0,H=0,I=0,J=0,K=0,L=0,N=0,O=Pa;N=r;r=r+48|0;L=N+16|0;G=N+12|0;K=N;H=L+16|0;k[L>>2]=0;k[L+4>>2]=0;k[L+8>>2]=0;k[L+12>>2]=0;o[H>>2]=da(1.0);J=a+80|0;fi(K,k[J>>2]|0);e=k[J>>2]|0;a:do if((e|0)>0){x=b+48|0;y=b+40|0;z=L+4|0;A=L+12|0;B=L+8|0;C=a+40|0;D=a+64|0;w=k[c>>2]|0;c=0;v=0;s=0;while(1){m=w+c|0;q=x;h=k[q>>2]|0;q=k[q+4>>2]|0;u=y;u=sj(m|0,((m|0)<0)<<31>>31|0,k[u>>2]|0,k[u+4>>2]|0)|0;q=mk(u|0,M|0,h|0,q|0)|0;q=(k[k[b>>2]>>2]|0)+q|0;q=l[q>>0]|l[q+1>>0]<<8|l[q+2>>0]<<16|l[q+3>>0]<<24;k[G>>2]=q;h=q&65535;u=q>>>16;m=u&65535;u=(q&65535^318)+239^u;t=(s|0)==0;b:do if(!t){f=s+-1|0;d=(f&s|0)==0;if(d)g=u&f;else g=(u>>>0)%(s>>>0)|0;e=k[(k[L>>2]|0)+(g<<2)>>2]|0;do if(e|0?(E=k[e>>2]|0,E|0):0){c:do if(d){d=E;while(1){if((k[d+4>>2]&f|0)!=(g|0)){e=20;break c}if((j[d+8>>1]|0)==h<<16>>16?(j[d+10>>1]|0)==m<<16>>16:0){e=19;break c}d=k[d>>2]|0;if(!d){e=20;break}}}else{d=E;while(1){if((((k[d+4>>2]|0)>>>0)%(s>>>0)|0|0)!=(g|0)){e=20;break c}if((j[d+8>>1]|0)==h<<16>>16?(j[d+10>>1]|0)==m<<16>>16:0){e=19;break c}d=k[d>>2]|0;if(!d){e=20;break}}}while(0);if((e|0)==19){e=0;k[(k[K>>2]|0)+(c<<2)>>2]=k[d+12>>2];d=v;break b}else if((e|0)==20)if(t){d=0;e=35;break b}else break}while(0);g=s+-1|0;e=(g&s|0)==0;if(e)d=g&u;else d=(u>>>0)%(s>>>0)|0;f=k[(k[L>>2]|0)+(d<<2)>>2]|0;if((f|0)!=0?(F=k[f>>2]|0,(F|0)!=0):0)if(e){e=F;while(1){if((k[e+4>>2]&g|0)!=(d|0)){e=35;break b}if((j[e+8>>1]|0)==h<<16>>16?(j[e+10>>1]|0)==m<<16>>16:0){e=47;break b}e=k[e>>2]|0;if(!e){e=35;break}}}else{e=F;while(1){if((((k[e+4>>2]|0)>>>0)%(s>>>0)|0|0)!=(d|0)){e=35;break b}if((j[e+8>>1]|0)==h<<16>>16?(j[e+10>>1]|0)==m<<16>>16:0){e=47;break b}e=k[e>>2]|0;if(!e){e=35;break}}}else e=35}else{d=0;e=35}while(0);if((e|0)==35){g=vj(16)|0;m=g+8|0;j[m>>1]=q;j[m+2>>1]=q>>>16;k[g+12>>2]=v;k[g+4>>2]=u;k[g>>2]=0;n=da(((k[A>>2]|0)+1|0)>>>0);O=da(s>>>0);p=da(o[H>>2]);do if(t|n>da(O*p)){d=(s>>>0>2&(s+-1&s|0)==0&1|s<<1)^1;e=~~da(_(da(n/p)))>>>0;Vf(L,d>>>0>>0?e:d);d=k[z>>2]|0;e=d+-1|0;if(!(e&d)){f=d;d=e&u;break}else{f=d;d=(u>>>0)%(d>>>0)|0;break}}else f=s;while(0);d=(k[L>>2]|0)+(d<<2)|0;e=k[d>>2]|0;if(!e){k[g>>2]=k[B>>2];k[B>>2]=g;k[d>>2]=B;d=k[g>>2]|0;if(d|0){d=k[d+4>>2]|0;e=f+-1|0;if(!(e&f))d=d&e;else d=(d>>>0)%(f>>>0)|0;k[(k[L>>2]|0)+(d<<2)>>2]=g}}else{k[g>>2]=k[e>>2];k[e>>2]=g}k[A>>2]=(k[A>>2]|0)+1;e=47}if((e|0)==47){u=C;d=k[u>>2]|0;u=sj(d|0,k[u+4>>2]|0,v|0,((v|0)<0)<<31>>31|0)|0;Mh((k[k[D>>2]>>2]|0)+u|0,G|0,d|0)|0;k[(k[K>>2]|0)+(c<<2)>>2]=v;d=v+1|0}c=c+1|0;e=k[J>>2]|0;if((c|0)>=(e|0)){q=d;break a}v=d;s=k[z>>2]|0}}else q=0;while(0);if((q|0)!=(e|0)){m=a+84|0;if(!(i[m>>0]|0)){e=k[a+68>>2]|0;c=(k[a+72>>2]|0)-e|0;if((c|0)>0){f=k[K>>2]|0;d=c>>2;c=0;do{a=e+(c<<2)|0;k[a>>2]=k[f+(k[a>>2]<<2)>>2];c=c+1|0}while((c|0)<(d|0))}}else{i[m>>0]=0;c=a+68|0;d=a+72|0;h=k[d>>2]|0;g=k[c>>2]|0;f=h-g>>2;if(e>>>0<=f>>>0){if(e>>>0>>0?(I=g+(e<<2)|0,(h|0)!=(I|0)):0)k[d>>2]=h+(~((h+-4-I|0)>>>2)<<2)}else{Of(c,e-f|0,3104);e=k[J>>2]|0}if((e|0)>0){f=k[K>>2]|0;if(i[m>>0]|0)Ka(13384,13403,80,13435);d=k[a+68>>2]|0;c=0;do{k[d+(c<<2)>>2]=k[f+(c<<2)>>2];c=c+1|0}while((c|0)<(e|0))}}k[J>>2]=q}e=k[K>>2]|0;f=e;if(e|0){c=K+4|0;d=k[c>>2]|0;if((d|0)!=(e|0))k[c>>2]=d+(~((d+-4-f|0)>>>2)<<2);Vl(e)}c=k[L+8>>2]|0;if(c|0)do{K=c;c=k[c>>2]|0;Vl(K)}while((c|0)!=0);c=k[L>>2]|0;k[L>>2]=0;if(!c){r=N;return q|0}Vl(c);r=N;return q|0}function Jb(a,b,c){a=a|0;b=b|0;c=c|0;var d=0,e=0,f=0,g=0,h=0,m=0,n=Pa,p=Pa,q=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,B=0,C=0,D=0,E=0,F=0,G=0,H=0,I=0,J=0,K=0,L=0,N=0,O=Pa;N=r;r=r+48|0;L=N+12|0;G=N+32|0;K=N;H=L+16|0;k[L>>2]=0;k[L+4>>2]=0;k[L+8>>2]=0;k[L+12>>2]=0;o[H>>2]=da(1.0);J=a+80|0;fi(K,k[J>>2]|0);e=k[J>>2]|0;a:do if((e|0)>0){x=b+48|0;y=b+40|0;z=L+4|0;A=L+12|0;B=L+8|0;C=a+40|0;D=a+64|0;w=k[c>>2]|0;c=0;v=0;s=0;while(1){m=w+c|0;q=x;h=k[q>>2]|0;q=k[q+4>>2]|0;u=y;u=sj(m|0,((m|0)<0)<<31>>31|0,k[u>>2]|0,k[u+4>>2]|0)|0;q=mk(u|0,M|0,h|0,q|0)|0;q=(k[k[b>>2]>>2]|0)+q|0;q=l[q>>0]|l[q+1>>0]<<8;j[G>>1]=q;h=q&255;u=(q&65535)>>>8;m=u&255;u=(q&255^318)+239^u&65535;t=(s|0)==0;b:do if(!t){f=s+-1|0;d=(f&s|0)==0;if(d)g=u&f;else g=(u>>>0)%(s>>>0)|0;e=k[(k[L>>2]|0)+(g<<2)>>2]|0;do if(e|0?(E=k[e>>2]|0,E|0):0){c:do if(d){d=E;while(1){if((k[d+4>>2]&f|0)!=(g|0)){e=20;break c}if((i[d+8>>0]|0)==h<<24>>24?(i[d+9>>0]|0)==m<<24>>24:0){e=19;break c}d=k[d>>2]|0;if(!d){e=20;break}}}else{d=E;while(1){if((((k[d+4>>2]|0)>>>0)%(s>>>0)|0|0)!=(g|0)){e=20;break c}if((i[d+8>>0]|0)==h<<24>>24?(i[d+9>>0]|0)==m<<24>>24:0){e=19;break c}d=k[d>>2]|0;if(!d){e=20;break}}}while(0);if((e|0)==19){e=0;k[(k[K>>2]|0)+(c<<2)>>2]=k[d+12>>2];d=v;break b}else if((e|0)==20)if(t){d=0;e=35;break b}else break}while(0);g=s+-1|0;e=(g&s|0)==0;if(e)d=g&u;else d=(u>>>0)%(s>>>0)|0;f=k[(k[L>>2]|0)+(d<<2)>>2]|0;if((f|0)!=0?(F=k[f>>2]|0,(F|0)!=0):0)if(e){e=F;while(1){if((k[e+4>>2]&g|0)!=(d|0)){e=35;break b}if((i[e+8>>0]|0)==h<<24>>24?(i[e+9>>0]|0)==m<<24>>24:0){e=47;break b}e=k[e>>2]|0;if(!e){e=35;break}}}else{e=F;while(1){if((((k[e+4>>2]|0)>>>0)%(s>>>0)|0|0)!=(d|0)){e=35;break b}if((i[e+8>>0]|0)==h<<24>>24?(i[e+9>>0]|0)==m<<24>>24:0){e=47;break b}e=k[e>>2]|0;if(!e){e=35;break}}}else e=35}else{d=0;e=35}while(0);if((e|0)==35){g=vj(16)|0;m=g+8|0;i[m>>0]=q;i[m+1>>0]=q>>8;k[g+12>>2]=v;k[g+4>>2]=u;k[g>>2]=0;n=da(((k[A>>2]|0)+1|0)>>>0);O=da(s>>>0);p=da(o[H>>2]);do if(t|n>da(O*p)){d=(s>>>0>2&(s+-1&s|0)==0&1|s<<1)^1;e=~~da(_(da(n/p)))>>>0;ag(L,d>>>0>>0?e:d);d=k[z>>2]|0;e=d+-1|0;if(!(e&d)){f=d;d=e&u;break}else{f=d;d=(u>>>0)%(d>>>0)|0;break}}else f=s;while(0);d=(k[L>>2]|0)+(d<<2)|0;e=k[d>>2]|0;if(!e){k[g>>2]=k[B>>2];k[B>>2]=g;k[d>>2]=B;d=k[g>>2]|0;if(d|0){d=k[d+4>>2]|0;e=f+-1|0;if(!(e&f))d=d&e;else d=(d>>>0)%(f>>>0)|0;k[(k[L>>2]|0)+(d<<2)>>2]=g}}else{k[g>>2]=k[e>>2];k[e>>2]=g}k[A>>2]=(k[A>>2]|0)+1;e=47}if((e|0)==47){u=C;d=k[u>>2]|0;u=sj(d|0,k[u+4>>2]|0,v|0,((v|0)<0)<<31>>31|0)|0;Mh((k[k[D>>2]>>2]|0)+u|0,G|0,d|0)|0;k[(k[K>>2]|0)+(c<<2)>>2]=v;d=v+1|0}c=c+1|0;e=k[J>>2]|0;if((c|0)>=(e|0)){q=d;break a}v=d;s=k[z>>2]|0}}else q=0;while(0);if((q|0)!=(e|0)){m=a+84|0;if(!(i[m>>0]|0)){e=k[a+68>>2]|0;c=(k[a+72>>2]|0)-e|0;if((c|0)>0){f=k[K>>2]|0;d=c>>2;c=0;do{a=e+(c<<2)|0;k[a>>2]=k[f+(k[a>>2]<<2)>>2];c=c+1|0}while((c|0)<(d|0))}}else{i[m>>0]=0;c=a+68|0;d=a+72|0;h=k[d>>2]|0;g=k[c>>2]|0;f=h-g>>2;if(e>>>0<=f>>>0){if(e>>>0>>0?(I=g+(e<<2)|0,(h|0)!=(I|0)):0)k[d>>2]=h+(~((h+-4-I|0)>>>2)<<2)}else{Of(c,e-f|0,3104);e=k[J>>2]|0}if((e|0)>0){f=k[K>>2]|0;if(i[m>>0]|0)Ka(13384,13403,80,13435);d=k[a+68>>2]|0;c=0;do{k[d+(c<<2)>>2]=k[f+(c<<2)>>2];c=c+1|0}while((c|0)<(e|0))}}k[J>>2]=q}e=k[K>>2]|0;f=e;if(e|0){c=K+4|0;d=k[c>>2]|0;if((d|0)!=(e|0))k[c>>2]=d+(~((d+-4-f|0)>>>2)<<2);Vl(e)}c=k[L+8>>2]|0;if(c|0)do{K=c;c=k[c>>2]|0;Vl(K)}while((c|0)!=0);c=k[L>>2]|0;k[L>>2]=0;if(!c){r=N;return q|0}Vl(c);r=N;return q|0}function Kb(a,b,c){a=a|0;b=b|0;c=c|0;var d=0,e=0,f=0,g=0,h=0,j=0;j=r;r=r+32|0;d=j+16|0;e=j+12|0;f=j+8|0;g=j+4|0;h=j;switch(k[b+28>>2]|0){case 9:{c=k[c>>2]|0;switch(i[b+24>>0]|0){case 1:{k[e>>2]=c;k[d>>2]=k[e>>2];c=Qb(a,b,d)|0;break}case 2:{k[f>>2]=c;k[d>>2]=k[f>>2];c=Gb(a,b,d)|0;break}case 3:{k[g>>2]=c;k[d>>2]=k[g>>2];c=Db(a,b,d)|0;break}case 4:{k[h>>2]=c;k[d>>2]=k[h>>2];c=Rb(a,b,d)|0;break}default:c=0}break}case 1:{c=k[c>>2]|0;switch(i[b+24>>0]|0){case 1:{k[e>>2]=c;k[d>>2]=k[e>>2];c=Sb(a,b,d)|0;break}case 2:{k[f>>2]=c;k[d>>2]=k[f>>2];c=Jb(a,b,d)|0;break}case 3:{k[g>>2]=c;k[d>>2]=k[g>>2];c=Bb(a,b,d)|0;break}case 4:{k[h>>2]=c;k[d>>2]=k[h>>2];c=Nb(a,b,d)|0;break}default:c=0}break}case 11:case 2:{c=k[c>>2]|0;switch(i[b+24>>0]|0){case 1:{k[e>>2]=c;k[d>>2]=k[e>>2];c=Sb(a,b,d)|0;break}case 2:{k[f>>2]=c;k[d>>2]=k[f>>2];c=Jb(a,b,d)|0;break}case 3:{k[g>>2]=c;k[d>>2]=k[g>>2];c=Bb(a,b,d)|0;break}case 4:{k[h>>2]=c;k[d>>2]=k[h>>2];c=Nb(a,b,d)|0;break}default:c=0}break}case 4:{c=k[c>>2]|0;switch(i[b+24>>0]|0){case 1:{k[e>>2]=c;k[d>>2]=k[e>>2];c=Pb(a,b,d)|0;break}case 2:{k[f>>2]=c;k[d>>2]=k[f>>2];c=Ib(a,b,d)|0;break}case 3:{k[g>>2]=c;k[d>>2]=k[g>>2];c=Ab(a,b,d)|0;break}case 4:{k[h>>2]=c;k[d>>2]=k[h>>2];c=Mb(a,b,d)|0;break}default:c=0}break}case 3:{c=k[c>>2]|0;switch(i[b+24>>0]|0){case 1:{k[e>>2]=c;k[d>>2]=k[e>>2];c=Pb(a,b,d)|0;break}case 2:{k[f>>2]=c;k[d>>2]=k[f>>2];c=Ib(a,b,d)|0;break}case 3:{k[g>>2]=c;k[d>>2]=k[g>>2];c=Ab(a,b,d)|0;break}case 4:{k[h>>2]=c;k[d>>2]=k[h>>2];c=Mb(a,b,d)|0;break}default:c=0}break}case 6:{c=k[c>>2]|0;switch(i[b+24>>0]|0){case 1:{k[e>>2]=c;k[d>>2]=k[e>>2];c=Qb(a,b,d)|0;break}case 2:{k[f>>2]=c;k[d>>2]=k[f>>2];c=Gb(a,b,d)|0;break}case 3:{k[g>>2]=c;k[d>>2]=k[g>>2];c=Db(a,b,d)|0;break}case 4:{k[h>>2]=c;k[d>>2]=k[h>>2];c=Rb(a,b,d)|0;break}default:c=0}break}case 5:{c=k[c>>2]|0;switch(i[b+24>>0]|0){case 1:{k[e>>2]=c;k[d>>2]=k[e>>2];c=Qb(a,b,d)|0;break}case 2:{k[f>>2]=c;k[d>>2]=k[f>>2];c=Gb(a,b,d)|0;break}case 3:{k[g>>2]=c;k[d>>2]=k[g>>2];c=Db(a,b,d)|0;break}case 4:{k[h>>2]=c;k[d>>2]=k[h>>2];c=Rb(a,b,d)|0;break}default:c=0}break}default:{h=-1;r=j;return h|0}}h=(c|0)==0?-1:c;r=j;return h|0}function Lb(a,b,c,d,e,f){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;f=f|0;var g=0,h=0,i=0,j=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,B=0,C=0,D=0,E=0,F=0,G=0,H=0,I=0,J=0;J=a+8|0;k[J>>2]=e;do if(d|0){f=k[b>>2]|0;l=a+16|0;k[l>>2]=f;j=a+12|0;k[j>>2]=f;if((d|0)>1){i=1;h=f;while(1){g=k[b+(i<<2)>>2]|0;if((g|0)>=(h|0))if((g|0)>(f|0)){k[l>>2]=g;f=g;g=h}else g=h;else k[j>>2]=g;i=i+1|0;if((i|0)==(d|0))break;else h=g}}else g=f;A=1-g+f|0;k[a+20>>2]=A;f=(A|0)/2|0;g=a+24|0;k[g>>2]=f;k[a+28>>2]=0-f;if(!(A&1))k[g>>2]=f+-1;f=a+32|0;g=a+36|0;j=k[g>>2]|0;h=k[f>>2]|0;i=j-h>>2;if(i>>>0>>0){wg(f,e-i|0);break}if(i>>>0>e>>>0?(m=h+(e<<2)|0,(j|0)!=(m|0)):0)k[g>>2]=j+(~((j+-4-m|0)>>>2)<<2)}while(0);o=e>>>0>1073741823?-1:e<<2;A=Sl(o)|0;Zh(A|0,0,o|0)|0;o=k[a+48>>2]|0;p=a+56|0;i=k[p>>2]|0;h=k[i+4>>2]|0;g=k[i>>2]|0;f=h-g|0;a:do if((f|0)>4){q=k[a+52>>2]|0;r=a+16|0;s=a+32|0;t=a+12|0;u=a+28|0;v=a+20|0;w=a+24|0;x=o+64|0;y=o+28|0;z=(e|0)>0;d=f>>2;f=i;while(1){n=d+-1|0;if(h-g>>2>>>0<=n>>>0)break;f=k[g+(n<<2)>>2]|0;m=$(n,e)|0;if((!((f|0)<0?1:(1<<(f&31)&k[(k[o>>2]|0)+(f>>>5<<2)>>2]|0)!=0)?(B=k[(k[(k[x>>2]|0)+12>>2]|0)+(f<<2)>>2]|0,(B|0)>=0):0)?(D=k[y>>2]|0,l=k[q>>2]|0,G=k[l+(k[D+(B<<2)>>2]<<2)>>2]|0,C=B+1|0,C=k[l+(k[D+((((C|0)%3|0|0)==0?B+-2|0:C)<<2)>>2]<<2)>>2]|0,D=k[l+(k[D+((((B>>>0)%3|0|0)==0?2:-1)+B<<2)>>2]<<2)>>2]|0,(G|0)<(n|0)&(C|0)<(n|0)&(D|0)<(n|0)):0){g=$(G,e)|0;h=$(C,e)|0;i=$(D,e)|0;if(z){f=0;do{k[A+(f<<2)>>2]=(k[b+(f+i<<2)>>2]|0)+(k[b+(f+h<<2)>>2]|0)-(k[b+(f+g<<2)>>2]|0);f=f+1|0}while((f|0)!=(e|0))}l=b+(m<<2)|0;if((k[J>>2]|0)>0){j=0;do{i=k[A+(j<<2)>>2]|0;f=k[r>>2]|0;do if((i|0)<=(f|0)){f=k[t>>2]|0;g=k[s>>2]|0;h=g+(j<<2)|0;if((i|0)<(f|0)){k[h>>2]=f;h=g;break}else{k[h>>2]=i;h=g;break}}else{h=k[s>>2]|0;k[h+(j<<2)>>2]=f}while(0);j=j+1|0;f=k[J>>2]|0}while((j|0)<(f|0));if((f|0)>0){f=0;do{k[c+(f+m<<2)>>2]=(k[l+(f<<2)>>2]|0)-(k[h+(f<<2)>>2]|0);f=f+1|0;g=k[J>>2]|0}while((f|0)<(g|0));if((g|0)>0){f=0;do{g=c+(f+m<<2)|0;h=k[g>>2]|0;if((h|0)>=(k[u>>2]|0)){if((h|0)>(k[w>>2]|0))k[g>>2]=h-(k[v>>2]|0)}else k[g>>2]=(k[v>>2]|0)+h;f=f+1|0}while((f|0)<(k[J>>2]|0))}}}}else H=27;if((H|0)==27?(H=0,E=b+(m<<2)|0,F=b+(($(d+-2|0,e)|0)<<2)|0,(k[J>>2]|0)>0):0){j=0;do{i=k[F+(j<<2)>>2]|0;f=k[r>>2]|0;do if((i|0)<=(f|0)){f=k[t>>2]|0;g=k[s>>2]|0;h=g+(j<<2)|0;if((i|0)<(f|0)){k[h>>2]=f;h=g;break}else{k[h>>2]=i;h=g;break}}else{h=k[s>>2]|0;k[h+(j<<2)>>2]=f}while(0);j=j+1|0;f=k[J>>2]|0}while((j|0)<(f|0));if((f|0)>0){f=0;do{k[c+(f+m<<2)>>2]=(k[E+(f<<2)>>2]|0)-(k[h+(f<<2)>>2]|0);f=f+1|0;g=k[J>>2]|0}while((f|0)<(g|0));if((g|0)>0){f=0;do{g=c+(f+m<<2)|0;h=k[g>>2]|0;if((h|0)>=(k[u>>2]|0)){if((h|0)>(k[w>>2]|0))k[g>>2]=h-(k[v>>2]|0)}else k[g>>2]=(k[v>>2]|0)+h;f=f+1|0}while((f|0)<(k[J>>2]|0))}}}if((n|0)<=1){I=A;break a}f=k[p>>2]|0;d=n;g=k[f>>2]|0;h=k[f+4>>2]|0}_k(f)}else I=A;while(0);if((e|0)>0)Zh(A|0,0,e<<2|0)|0;if((k[J>>2]|0)<=0){Tl(A);return 1}l=a+16|0;d=a+32|0;m=a+12|0;j=0;do{i=k[I+(j<<2)>>2]|0;f=k[l>>2]|0;do if((i|0)<=(f|0)){f=k[m>>2]|0;g=k[d>>2]|0;h=g+(j<<2)|0;if((i|0)<(f|0)){k[h>>2]=f;h=g;break}else{k[h>>2]=i;h=g;break}}else{h=k[d>>2]|0;k[h+(j<<2)>>2]=f}while(0);j=j+1|0;f=k[J>>2]|0}while((j|0)<(f|0));if((f|0)>0)f=0;else{Tl(A);return 1}do{k[c+(f<<2)>>2]=(k[b+(f<<2)>>2]|0)-(k[h+(f<<2)>>2]|0);f=f+1|0;g=k[J>>2]|0}while((f|0)<(g|0));if((g|0)<=0){Tl(A);return 1}j=a+28|0;l=a+20|0;g=a+24|0;f=0;do{h=c+(f<<2)|0;i=k[h>>2]|0;if((i|0)>=(k[j>>2]|0)){if((i|0)>(k[g>>2]|0))k[h>>2]=i-(k[l>>2]|0)}else k[h>>2]=(k[l>>2]|0)+i;f=f+1|0}while((f|0)<(k[J>>2]|0));Tl(A);return 1}function Mb(a,b,c){a=a|0;b=b|0;c=c|0;var d=0,e=0,f=0,g=0,h=0,m=0,n=Pa,p=Pa,q=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,B=0,C=0,D=0,E=0,F=0,G=0,H=0,I=0,J=0,K=0,L=0,N=0,O=0,P=0,Q=0,R=0,S=0,T=0,U=Pa;T=r;r=r+48|0;S=T+28|0;K=T+8|0;L=T;R=T+16|0;N=S+16|0;k[S>>2]=0;k[S+4>>2]=0;k[S+8>>2]=0;k[S+12>>2]=0;o[N>>2]=da(1.0);Q=a+80|0;fi(R,k[Q>>2]|0);e=k[Q>>2]|0;if((e|0)>0){B=k[c>>2]|0;C=b+48|0;D=b+40|0;E=S+4|0;F=S+12|0;G=S+8|0;H=a+40|0;I=a+64|0;A=0;z=0;while(1){w=B+A|0;y=C;x=k[y>>2]|0;y=k[y+4>>2]|0;c=D;c=sj(w|0,((w|0)<0)<<31>>31|0,k[c>>2]|0,k[c+4>>2]|0)|0;y=mk(c|0,M|0,x|0,y|0)|0;y=(k[k[b>>2]>>2]|0)+y|0;x=y;x=l[x>>0]|l[x+1>>0]<<8|l[x+2>>0]<<16|l[x+3>>0]<<24;y=y+4|0;y=l[y>>0]|l[y+1>>0]<<8|l[y+2>>0]<<16|l[y+3>>0]<<24;c=K;k[c>>2]=x;k[c+4>>2]=y;c=L;k[c>>2]=x;k[c+4>>2]=y;c=Te(S,L)|0;if(!c){u=L;t=k[u>>2]|0;u=k[u+4>>2]|0;h=t&65535;y=Wj(t|0,u|0,16)|0;m=y&65535;q=u&65535;v=Wj(t|0,u|0,48)|0;w=M;s=v&65535;y=(((t&65535^318)+239^y&65535)+239^u&65535)+239^v;e=k[E>>2]|0;x=(e|0)==0;a:do if(!x){g=e+-1|0;d=(g&e|0)==0;if(d)c=y&g;else c=(y>>>0)%(e>>>0)|0;f=k[(k[S>>2]|0)+(c<<2)>>2]|0;if((f|0)!=0?(J=k[f>>2]|0,(J|0)!=0):0)if(d){d=J;while(1){if((k[d+4>>2]&g|0)!=(c|0)){O=25;break a}if((((j[d+8>>1]|0)==h<<16>>16?(j[d+10>>1]|0)==m<<16>>16:0)?(j[d+12>>1]|0)==q<<16>>16:0)?(j[d+14>>1]|0)==s<<16>>16:0)break a;d=k[d>>2]|0;if(!d){O=25;break}}}else{d=J;while(1){if((((k[d+4>>2]|0)>>>0)%(e>>>0)|0|0)!=(c|0)){O=25;break a}if((((j[d+8>>1]|0)==h<<16>>16?(j[d+10>>1]|0)==m<<16>>16:0)?(j[d+12>>1]|0)==q<<16>>16:0)?(j[d+14>>1]|0)==s<<16>>16:0)break a;d=k[d>>2]|0;if(!d){O=25;break}}}else O=25}else{c=0;O=25}while(0);if((O|0)==25){O=0;f=vj(20)|0;v=Qj(v|0,w|0,48)|0;t=t|v;v=u&65535|M;w=f+8|0;u=w;j[u>>1]=t;j[u+2>>1]=t>>>16;w=w+4|0;j[w>>1]=v;j[w+2>>1]=v>>>16;k[f+16>>2]=z;k[f+4>>2]=y;k[f>>2]=0;n=da(((k[F>>2]|0)+1|0)>>>0);U=da(e>>>0);p=da(o[N>>2]);do if(x|n>da(U*p)){c=(e>>>0>2&(e+-1&e|0)==0&1|e<<1)^1;d=~~da(_(da(n/p)))>>>0;Tf(S,c>>>0>>0?d:c);c=k[E>>2]|0;d=c+-1|0;if(!(d&c)){e=c;c=d&y;break}else{e=c;c=(y>>>0)%(c>>>0)|0;break}}while(0);c=(k[S>>2]|0)+(c<<2)|0;d=k[c>>2]|0;if(!d){k[f>>2]=k[G>>2];k[G>>2]=f;k[c>>2]=G;c=k[f>>2]|0;if(c|0){c=k[c+4>>2]|0;d=e+-1|0;if(!(d&e))c=c&d;else c=(c>>>0)%(e>>>0)|0;k[(k[S>>2]|0)+(c<<2)>>2]=f}}else{k[f>>2]=k[d>>2];k[d>>2]=f}k[F>>2]=(k[F>>2]|0)+1}y=H;c=k[y>>2]|0;y=sj(c|0,k[y+4>>2]|0,z|0,((z|0)<0)<<31>>31|0)|0;Mh((k[k[I>>2]>>2]|0)+y|0,K|0,c|0)|0;k[(k[R>>2]|0)+(A<<2)>>2]=z;c=z+1|0}else{k[(k[R>>2]|0)+(A<<2)>>2]=k[c+16>>2];c=z}A=A+1|0;e=k[Q>>2]|0;if((A|0)>=(e|0)){q=c;break}else z=c}}else q=0;if((q|0)!=(e|0)){m=a+84|0;if(!(i[m>>0]|0)){e=k[a+68>>2]|0;c=(k[a+72>>2]|0)-e|0;if((c|0)>0){f=k[R>>2]|0;d=c>>2;c=0;do{a=e+(c<<2)|0;k[a>>2]=k[f+(k[a>>2]<<2)>>2];c=c+1|0}while((c|0)<(d|0))}}else{i[m>>0]=0;c=a+68|0;d=a+72|0;h=k[d>>2]|0;g=k[c>>2]|0;f=h-g>>2;if(e>>>0<=f>>>0){if(e>>>0>>0?(P=g+(e<<2)|0,(h|0)!=(P|0)):0)k[d>>2]=h+(~((h+-4-P|0)>>>2)<<2)}else{Of(c,e-f|0,3104);e=k[Q>>2]|0}if((e|0)>0){f=k[R>>2]|0;if(i[m>>0]|0)Ka(13384,13403,80,13435);d=k[a+68>>2]|0;c=0;do{k[d+(c<<2)>>2]=k[f+(c<<2)>>2];c=c+1|0}while((c|0)<(e|0))}}k[Q>>2]=q}e=k[R>>2]|0;f=e;if(e|0){c=R+4|0;d=k[c>>2]|0;if((d|0)!=(e|0))k[c>>2]=d+(~((d+-4-f|0)>>>2)<<2);Vl(e)}c=k[S+8>>2]|0;if(c|0)do{R=c;c=k[c>>2]|0;Vl(R)}while((c|0)!=0);c=k[S>>2]|0;k[S>>2]=0;if(!c){r=T;return q|0}Vl(c);r=T;return q|0}function Nb(a,b,c){a=a|0;b=b|0;c=c|0;var d=0,e=0,f=0,g=0,h=0,j=0,m=Pa,n=Pa,p=0,q=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,B=0,C=0,D=0,E=0,F=0,G=0,H=0,I=0,J=0,K=0,L=0,N=0,O=0,P=0,Q=0,R=0,S=0,T=Pa;S=r;r=r+48|0;R=S+20|0;J=S+16|0;K=S+12|0;Q=S;L=R+16|0;k[R>>2]=0;k[R+4>>2]=0;k[R+8>>2]=0;k[R+12>>2]=0;o[L>>2]=da(1.0);P=a+80|0;fi(Q,k[P>>2]|0);e=k[P>>2]|0;if((e|0)>0){A=k[c>>2]|0;B=b+48|0;C=b+40|0;D=R+4|0;E=R+12|0;F=R+8|0;G=a+40|0;H=a+64|0;z=0;y=0;while(1){v=A+z|0;c=B;x=k[c>>2]|0;c=k[c+4>>2]|0;w=C;w=sj(v|0,((v|0)<0)<<31>>31|0,k[w>>2]|0,k[w+4>>2]|0)|0;c=mk(w|0,M|0,x|0,c|0)|0;c=(k[k[b>>2]>>2]|0)+c|0;c=l[c>>0]|l[c+1>>0]<<8|l[c+2>>0]<<16|l[c+3>>0]<<24;k[J>>2]=c;k[K>>2]=c;c=Ve(R,K)|0;if(!c){t=k[K>>2]|0;h=t&255;u=t>>>8;j=u&255;v=t>>>16;p=v&255;s=t>>>24;q=s&255;t=t&255;u=u&255;v=v&255;x=(((t^318)+239^u)+239^v)+239^s;e=k[D>>2]|0;w=(e|0)==0;a:do if(!w){g=e+-1|0;d=(g&e|0)==0;if(d)c=x&g;else c=(x>>>0)%(e>>>0)|0;f=k[(k[R>>2]|0)+(c<<2)>>2]|0;if((f|0)!=0?(I=k[f>>2]|0,(I|0)!=0):0)if(d){d=I;while(1){if((k[d+4>>2]&g|0)!=(c|0)){N=25;break a}if((((i[d+8>>0]|0)==h<<24>>24?(i[d+9>>0]|0)==j<<24>>24:0)?(i[d+10>>0]|0)==p<<24>>24:0)?(i[d+11>>0]|0)==q<<24>>24:0)break a;d=k[d>>2]|0;if(!d){N=25;break}}}else{d=I;while(1){if((((k[d+4>>2]|0)>>>0)%(e>>>0)|0|0)!=(c|0)){N=25;break a}if((((i[d+8>>0]|0)==h<<24>>24?(i[d+9>>0]|0)==j<<24>>24:0)?(i[d+10>>0]|0)==p<<24>>24:0)?(i[d+11>>0]|0)==q<<24>>24:0)break a;d=k[d>>2]|0;if(!d){N=25;break}}}else N=25}else{c=0;N=25}while(0);if((N|0)==25){N=0;f=vj(16)|0;q=f+8|0;v=s<<24|t|v<<16|u<<8;i[q>>0]=v;i[q+1>>0]=v>>8;i[q+2>>0]=v>>16;i[q+3>>0]=v>>24;k[f+12>>2]=y;k[f+4>>2]=x;k[f>>2]=0;m=da(((k[E>>2]|0)+1|0)>>>0);T=da(e>>>0);n=da(o[L>>2]);do if(w|m>da(T*n)){c=(e>>>0>2&(e+-1&e|0)==0&1|e<<1)^1;d=~~da(_(da(m/n)))>>>0;_f(R,c>>>0>>0?d:c);c=k[D>>2]|0;d=c+-1|0;if(!(d&c)){e=c;c=d&x;break}else{e=c;c=(x>>>0)%(c>>>0)|0;break}}while(0);c=(k[R>>2]|0)+(c<<2)|0;d=k[c>>2]|0;if(!d){k[f>>2]=k[F>>2];k[F>>2]=f;k[c>>2]=F;c=k[f>>2]|0;if(c|0){c=k[c+4>>2]|0;d=e+-1|0;if(!(d&e))c=c&d;else c=(c>>>0)%(e>>>0)|0;k[(k[R>>2]|0)+(c<<2)>>2]=f}}else{k[f>>2]=k[d>>2];k[d>>2]=f}k[E>>2]=(k[E>>2]|0)+1}x=G;c=k[x>>2]|0;x=sj(c|0,k[x+4>>2]|0,y|0,((y|0)<0)<<31>>31|0)|0;Mh((k[k[H>>2]>>2]|0)+x|0,J|0,c|0)|0;k[(k[Q>>2]|0)+(z<<2)>>2]=y;c=y+1|0}else{k[(k[Q>>2]|0)+(z<<2)>>2]=k[c+12>>2];c=y}z=z+1|0;e=k[P>>2]|0;if((z|0)>=(e|0)){p=c;break}else y=c}}else p=0;if((p|0)!=(e|0)){j=a+84|0;if(!(i[j>>0]|0)){e=k[a+68>>2]|0;c=(k[a+72>>2]|0)-e|0;if((c|0)>0){f=k[Q>>2]|0;d=c>>2;c=0;do{a=e+(c<<2)|0;k[a>>2]=k[f+(k[a>>2]<<2)>>2];c=c+1|0}while((c|0)<(d|0))}}else{i[j>>0]=0;c=a+68|0;d=a+72|0;h=k[d>>2]|0;g=k[c>>2]|0;f=h-g>>2;if(e>>>0<=f>>>0){if(e>>>0>>0?(O=g+(e<<2)|0,(h|0)!=(O|0)):0)k[d>>2]=h+(~((h+-4-O|0)>>>2)<<2)}else{Of(c,e-f|0,3104);e=k[P>>2]|0}if((e|0)>0){f=k[Q>>2]|0;if(i[j>>0]|0)Ka(13384,13403,80,13435);d=k[a+68>>2]|0;c=0;do{k[d+(c<<2)>>2]=k[f+(c<<2)>>2];c=c+1|0}while((c|0)<(e|0))}}k[P>>2]=p}e=k[Q>>2]|0;f=e;if(e|0){c=Q+4|0;d=k[c>>2]|0;if((d|0)!=(e|0))k[c>>2]=d+(~((d+-4-f|0)>>>2)<<2);Vl(e)}c=k[R+8>>2]|0;if(c|0)do{Q=c;c=k[c>>2]|0;Vl(Q)}while((c|0)!=0);c=k[R>>2]|0;k[R>>2]=0;if(!c){r=S;return p|0}Vl(c);r=S;return p|0}function Ob(a,b){a=a|0;b=b|0;var c=0,d=0,e=0,f=0,g=0,h=0,l=0,m=0,n=0,o=0,p=0,q=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0;A=r;r=r+176|0;t=A+144|0;w=A+72|0;v=A+8|0;u=A+40|0;x=A;y=a+4|0;q=k[y>>2]|0;c=k[q+20>>2]|0;l=c+8|0;h=k[l>>2]|0;l=k[l+4>>2]|0;m=c+16|0;o=m;n=k[o>>2]|0;o=k[o+4>>2]|0;if(!((l|0)>(o|0)|(l|0)==(o|0)&h>>>0>n>>>0)){z=0;r=A;return z|0}g=k[c>>2]|0;s=i[g+n>>0]|0;c=mk(n|0,o|0,1,0)|0;p=M;f=m;k[f>>2]=c;k[f+4>>2]=p;if(!((l|0)>(p|0)|(l|0)==(p|0)&h>>>0>c>>>0)){z=0;r=A;return z|0}p=i[g+c>>0]|0;c=mk(n|0,o|0,2,0)|0;d=M;f=m;k[f>>2]=c;k[f+4>>2]=d;do if(s<<24>>24>-1){e=s<<24>>24;f=k[a+228>>2]|0;if(e>>>0<(((k[a+232>>2]|0)-f|0)/116|0)>>>0){k[f+(e*116|0)>>2]=b;break}else{z=0;r=A;return z|0}}while(0);do if(((El(j[q+24>>1]|0)|0)&65535)>257)if((l|0)>(d|0)|(l|0)==(d|0)&h>>>0>c>>>0){d=i[g+c>>0]|0;n=mk(n|0,o|0,3,0)|0;o=m;k[o>>2]=n;k[o+4>>2]=M;d=d&255;break}else{z=0;r=A;return z|0}else d=0;while(0);n=k[q+28>>2]|0;if(!(p<<24>>24)){if(s<<24>>24<0)c=a+200|0;else{c=s<<24>>24;w=k[a+228>>2]|0;i[w+(c*116|0)+72>>0]=0;c=w+(c*116|0)+76|0}switch((d&255)<<24>>24){case 0:{c=md(a,c)|0;break}case 1:{c=le(a,c)|0;break}default:{z=0;r=A;return z|0}}if(!c){z=0;r=A;return z|0}}else{if(s<<24>>24<0|(d|0)!=0){z=0;r=A;return z|0}c=vj(88)|0;g=s<<24>>24;f=k[a+228>>2]|0;h=f+(g*116|0)+76|0;k[c+4>>2]=0;k[c>>2]=5536;l=c+12|0;k[l>>2]=5560;m=c+64|0;k[m>>2]=0;k[c+68>>2]=0;k[c+72>>2]=0;d=c+16|0;e=d+44|0;do{k[d>>2]=0;d=d+4|0}while((d|0)<(e|0));k[c+76>>2]=n;k[c+80>>2]=h;k[c+84>>2]=0;p=w+4|0;k[p>>2]=5560;o=w+56|0;k[o>>2]=0;q=w+60|0;k[q>>2]=0;k[w+64>>2]=0;d=w+8|0;e=d+44|0;do{k[d>>2]=0;d=d+4|0}while((d|0)<(e|0));e=f+(g*116|0)+4|0;k[v>>2]=5560;d=v+4|0;a=d+4|0;k[a>>2]=0;k[a+4>>2]=0;k[a+8>>2]=0;k[a+12>>2]=0;k[a+16>>2]=0;k[a+20>>2]=0;k[d>>2]=e;f=k[f+(g*116|0)+68>>2]|0;f=((k[f+4>>2]|0)-(k[f>>2]|0)|0)/12|0;i[t>>0]=0;Af(v+8|0,f,t);Ta[k[(k[v>>2]|0)+8>>2]&127](v);ze(u,v);ze(t,u);k[w>>2]=k[t+4>>2];f=w+4|0;Ne(f,t)|0;k[t>>2]=5560;d=k[t+20>>2]|0;if(d|0)Vl(d);d=k[t+8>>2]|0;if(d|0)Vl(d);k[w+36>>2]=e;k[w+40>>2]=h;k[w+44>>2]=n;k[w+48>>2]=c;k[u>>2]=5560;d=k[u+20>>2]|0;if(d|0)Vl(d);d=k[u+8>>2]|0;if(d|0)Vl(d);k[c+8>>2]=k[w>>2];Ne(l,f)|0;d=c+44|0;u=w+36|0;k[d>>2]=k[u>>2];k[d+4>>2]=k[u+4>>2];k[d+8>>2]=k[u+8>>2];k[d+12>>2]=k[u+12>>2];i[d+16>>0]=i[u+16>>0]|0;Oe(m,k[o>>2]|0,k[q>>2]|0);k[v>>2]=5560;d=k[v+20>>2]|0;if(d|0)Vl(d);d=k[v+8>>2]|0;if(d|0)Vl(d);d=k[o>>2]|0;e=d;if(d|0){f=k[q>>2]|0;if((f|0)!=(d|0))k[q>>2]=f+(~((f+-4-e|0)>>>2)<<2);Vl(d)}k[p>>2]=5560;d=k[w+24>>2]|0;if(d|0)Vl(d);d=k[w+12>>2]|0;if(d|0)Vl(d)}l=vj(52)|0;k[x>>2]=c;ki(l,x);c=k[x>>2]|0;k[x>>2]=0;if(c|0)Ta[k[(k[c>>2]|0)+4>>2]&127](c);h=k[y>>2]|0;g=h+8|0;h=h+12|0;c=k[h>>2]|0;d=k[g>>2]|0;e=c-d>>2;do if((e|0)<=(b|0)){f=b+1|0;if(f>>>0>e>>>0){df(g,f-e|0);break}if(f>>>0>>0?(z=d+(f<<2)|0,(c|0)!=(z|0)):0)do{y=c+-4|0;k[h>>2]=y;c=k[y>>2]|0;k[y>>2]=0;if(c|0)Ta[k[(k[c>>2]|0)+4>>2]&127](c);c=k[h>>2]|0}while((c|0)!=(z|0))}while(0);z=(k[g>>2]|0)+(b<<2)|0;c=k[z>>2]|0;k[z>>2]=l;if(!c){z=1;r=A;return z|0}Ta[k[(k[c>>2]|0)+4>>2]&127](c);z=1;r=A;return z|0}function Pb(a,b,c){a=a|0;b=b|0;c=c|0;var d=0,e=0,f=0,g=0,h=0,m=0,n=Pa,p=Pa,q=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,B=0,C=0,D=0,E=0,F=0,G=0,H=0,I=0,J=0,K=Pa;J=r;r=r+48|0;I=J+12|0;D=J+32|0;H=J;E=I+16|0;k[I>>2]=0;k[I+4>>2]=0;k[I+8>>2]=0;k[I+12>>2]=0;o[E>>2]=da(1.0);G=a+80|0;fi(H,k[G>>2]|0);e=k[G>>2]|0;a:do if((e|0)>0){w=b+48|0;x=b+40|0;y=I+4|0;z=I+12|0;A=I+8|0;B=a+40|0;C=a+64|0;v=k[c>>2]|0;h=0;u=0;t=0;while(1){f=v+u|0;m=w;s=k[m>>2]|0;m=k[m+4>>2]|0;g=x;g=sj(f|0,((f|0)<0)<<31>>31|0,k[g>>2]|0,k[g+4>>2]|0)|0;m=mk(g|0,M|0,s|0,m|0)|0;m=(k[k[b>>2]>>2]|0)+m|0;m=l[m>>0]|l[m+1>>0]<<8;j[D>>1]=m;s=m&65535^318;b:do if(h){g=h+-1|0;f=(g&h|0)==0;if(f)d=g&s;else d=(s>>>0)%(h>>>0)|0;e=k[I>>2]|0;c=k[e+(d<<2)>>2]|0;c:do if(c|0){if(f)do{c=k[c>>2]|0;if(!c)break c;if((k[c+4>>2]&g|0)!=(d|0))break c}while((j[c+8>>1]|0)!=m<<16>>16);else do{c=k[c>>2]|0;if(!c)break c;if((((k[c+4>>2]|0)>>>0)%(h>>>0)|0|0)!=(d|0))break c}while((j[c+8>>1]|0)!=m<<16>>16);k[(k[H>>2]|0)+(u<<2)>>2]=k[c+12>>2];d=t;break b}while(0);if(f)c=g&s;else c=(s>>>0)%(h>>>0)|0;d=k[e+(c<<2)>>2]|0;if(d)if(f)while(1){d=k[d>>2]|0;if(!d){d=h;e=0;q=28;break b}if((k[d+4>>2]&g|0)!=(c|0)){d=h;e=0;q=28;break b}if((j[d+8>>1]|0)==m<<16>>16){q=40;break}}else while(1){d=k[d>>2]|0;if(!d){d=h;e=0;q=28;break b}if((((k[d+4>>2]|0)>>>0)%(h>>>0)|0|0)!=(c|0)){d=h;e=0;q=28;break b}if((j[d+8>>1]|0)==m<<16>>16){q=40;break}}else{d=h;e=0;q=28}}else{c=0;d=0;e=1;q=28}while(0);if((q|0)==28){f=vj(16)|0;j[f+8>>1]=m;k[f+12>>2]=t;k[f+4>>2]=s;k[f>>2]=0;n=da(((k[z>>2]|0)+1|0)>>>0);K=da(d>>>0);p=da(o[E>>2]);do if(e|n>da(K*p)){c=(d>>>0>2&(d+-1&d|0)==0&1|d<<1)^1;d=~~da(_(da(n/p)))>>>0;Wf(I,c>>>0>>0?d:c);c=k[y>>2]|0;d=c+-1|0;if(!(d&c)){e=c;c=d&s;break}else{e=c;c=(s>>>0)%(c>>>0)|0;break}}else e=d;while(0);c=(k[I>>2]|0)+(c<<2)|0;d=k[c>>2]|0;if(!d){k[f>>2]=k[A>>2];k[A>>2]=f;k[c>>2]=A;c=k[f>>2]|0;if(c|0){c=k[c+4>>2]|0;d=e+-1|0;if(!(d&e))c=c&d;else c=(c>>>0)%(e>>>0)|0;k[(k[I>>2]|0)+(c<<2)>>2]=f}}else{k[f>>2]=k[d>>2];k[d>>2]=f}k[z>>2]=(k[z>>2]|0)+1;q=40}if((q|0)==40){q=0;s=B;d=k[s>>2]|0;s=sj(d|0,k[s+4>>2]|0,t|0,((t|0)<0)<<31>>31|0)|0;Mh((k[k[C>>2]>>2]|0)+s|0,D|0,d|0)|0;k[(k[H>>2]|0)+(u<<2)>>2]=t;d=t+1|0}c=u+1|0;e=k[G>>2]|0;if((c|0)>=(e|0)){q=d;break a}h=k[y>>2]|0;u=c;t=d}}else q=0;while(0);if((q|0)!=(e|0)){m=a+84|0;if(!(i[m>>0]|0)){e=k[a+68>>2]|0;c=(k[a+72>>2]|0)-e|0;if((c|0)>0){f=k[H>>2]|0;d=c>>2;c=0;do{a=e+(c<<2)|0;k[a>>2]=k[f+(k[a>>2]<<2)>>2];c=c+1|0}while((c|0)<(d|0))}}else{i[m>>0]=0;c=a+68|0;d=a+72|0;h=k[d>>2]|0;g=k[c>>2]|0;f=h-g>>2;if(e>>>0<=f>>>0){if(e>>>0>>0?(F=g+(e<<2)|0,(h|0)!=(F|0)):0)k[d>>2]=h+(~((h+-4-F|0)>>>2)<<2)}else{Of(c,e-f|0,3104);e=k[G>>2]|0}if((e|0)>0){f=k[H>>2]|0;if(i[m>>0]|0)Ka(13384,13403,80,13435);d=k[a+68>>2]|0;c=0;do{k[d+(c<<2)>>2]=k[f+(c<<2)>>2];c=c+1|0}while((c|0)<(e|0))}}k[G>>2]=q}e=k[H>>2]|0;f=e;if(e|0){c=H+4|0;d=k[c>>2]|0;if((d|0)!=(e|0))k[c>>2]=d+(~((d+-4-f|0)>>>2)<<2);Vl(e)}c=k[I+8>>2]|0;if(c|0)do{H=c;c=k[c>>2]|0;Vl(H)}while((c|0)!=0);c=k[I>>2]|0;k[I>>2]=0;if(!c){r=J;return q|0}Vl(c);r=J;return q|0}function Qb(a,b,c){a=a|0;b=b|0;c=c|0;var d=0,e=0,f=0,g=0,h=0,j=0,m=Pa,n=Pa,p=0,q=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,B=0,C=0,D=0,E=0,F=0,G=0,H=0,I=0,J=Pa;I=r;r=r+48|0;H=I+16|0;C=I+12|0;G=I;D=H+16|0;k[H>>2]=0;k[H+4>>2]=0;k[H+8>>2]=0;k[H+12>>2]=0;o[D>>2]=da(1.0);F=a+80|0;fi(G,k[F>>2]|0);e=k[F>>2]|0;a:do if((e|0)>0){v=b+48|0;w=b+40|0;x=H+4|0;y=H+12|0;z=H+8|0;A=a+40|0;B=a+64|0;u=k[c>>2]|0;h=0;t=0;s=0;while(1){f=u+t|0;j=v;q=k[j>>2]|0;j=k[j+4>>2]|0;g=w;g=sj(f|0,((f|0)<0)<<31>>31|0,k[g>>2]|0,k[g+4>>2]|0)|0;j=mk(g|0,M|0,q|0,j|0)|0;j=(k[k[b>>2]>>2]|0)+j|0;j=l[j>>0]|l[j+1>>0]<<8|l[j+2>>0]<<16|l[j+3>>0]<<24;k[C>>2]=j;q=j^318;b:do if(h){g=h+-1|0;f=(g&h|0)==0;if(f)d=g&q;else d=(q>>>0)%(h>>>0)|0;e=k[H>>2]|0;c=k[e+(d<<2)>>2]|0;c:do if(c|0){if(f)do{c=k[c>>2]|0;if(!c)break c;if((k[c+4>>2]&g|0)!=(d|0))break c}while((k[c+8>>2]|0)!=(j|0));else do{c=k[c>>2]|0;if(!c)break c;if((((k[c+4>>2]|0)>>>0)%(h>>>0)|0|0)!=(d|0))break c}while((k[c+8>>2]|0)!=(j|0));k[(k[G>>2]|0)+(t<<2)>>2]=k[c+12>>2];d=s;break b}while(0);if(f)c=g&q;else c=(q>>>0)%(h>>>0)|0;d=k[e+(c<<2)>>2]|0;if(d)if(f)while(1){d=k[d>>2]|0;if(!d){d=h;e=0;p=28;break b}if((k[d+4>>2]&g|0)!=(c|0)){d=h;e=0;p=28;break b}if((k[d+8>>2]|0)==(j|0)){p=40;break}}else while(1){d=k[d>>2]|0;if(!d){d=h;e=0;p=28;break b}if((((k[d+4>>2]|0)>>>0)%(h>>>0)|0|0)!=(c|0)){d=h;e=0;p=28;break b}if((k[d+8>>2]|0)==(j|0)){p=40;break}}else{d=h;e=0;p=28}}else{c=0;d=0;e=1;p=28}while(0);if((p|0)==28){f=vj(16)|0;k[f+8>>2]=j;k[f+12>>2]=s;k[f+4>>2]=q;k[f>>2]=0;m=da(((k[y>>2]|0)+1|0)>>>0);J=da(d>>>0);n=da(o[D>>2]);do if(e|m>da(J*n)){c=(d>>>0>2&(d+-1&d|0)==0&1|d<<1)^1;d=~~da(_(da(m/n)))>>>0;gg(H,c>>>0>>0?d:c);c=k[x>>2]|0;d=c+-1|0;if(!(d&c)){e=c;c=d&q;break}else{e=c;c=(q>>>0)%(c>>>0)|0;break}}else e=d;while(0);c=(k[H>>2]|0)+(c<<2)|0;d=k[c>>2]|0;if(!d){k[f>>2]=k[z>>2];k[z>>2]=f;k[c>>2]=z;c=k[f>>2]|0;if(c|0){c=k[c+4>>2]|0;d=e+-1|0;if(!(d&e))c=c&d;else c=(c>>>0)%(e>>>0)|0;k[(k[H>>2]|0)+(c<<2)>>2]=f}}else{k[f>>2]=k[d>>2];k[d>>2]=f}k[y>>2]=(k[y>>2]|0)+1;p=40}if((p|0)==40){p=0;q=A;d=k[q>>2]|0;q=sj(d|0,k[q+4>>2]|0,s|0,((s|0)<0)<<31>>31|0)|0;Mh((k[k[B>>2]>>2]|0)+q|0,C|0,d|0)|0;k[(k[G>>2]|0)+(t<<2)>>2]=s;d=s+1|0}c=t+1|0;e=k[F>>2]|0;if((c|0)>=(e|0)){p=d;break a}h=k[x>>2]|0;t=c;s=d}}else p=0;while(0);if((p|0)!=(e|0)){j=a+84|0;if(!(i[j>>0]|0)){e=k[a+68>>2]|0;c=(k[a+72>>2]|0)-e|0;if((c|0)>0){f=k[G>>2]|0;d=c>>2;c=0;do{a=e+(c<<2)|0;k[a>>2]=k[f+(k[a>>2]<<2)>>2];c=c+1|0}while((c|0)<(d|0))}}else{i[j>>0]=0;c=a+68|0;d=a+72|0;h=k[d>>2]|0;g=k[c>>2]|0;f=h-g>>2;if(e>>>0<=f>>>0){if(e>>>0>>0?(E=g+(e<<2)|0,(h|0)!=(E|0)):0)k[d>>2]=h+(~((h+-4-E|0)>>>2)<<2)}else{Of(c,e-f|0,3104);e=k[F>>2]|0}if((e|0)>0){f=k[G>>2]|0;if(i[j>>0]|0)Ka(13384,13403,80,13435);d=k[a+68>>2]|0;c=0;do{k[d+(c<<2)>>2]=k[f+(c<<2)>>2];c=c+1|0}while((c|0)<(e|0))}}k[F>>2]=p}e=k[G>>2]|0;f=e;if(e|0){c=G+4|0;d=k[c>>2]|0;if((d|0)!=(e|0))k[c>>2]=d+(~((d+-4-f|0)>>>2)<<2);Vl(e)}c=k[H+8>>2]|0;if(c|0)do{G=c;c=k[c>>2]|0;Vl(G)}while((c|0)!=0);c=k[H>>2]|0;k[H>>2]=0;if(!c){r=I;return p|0}Vl(c);r=I;return p|0}function Rb(a,b,c){a=a|0;b=b|0;c=c|0;var d=0,e=0,f=0,g=0,h=0,j=0,l=0,m=Pa,n=Pa,p=0,q=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,B=0,C=0,D=0,E=0,F=0,G=0,H=0,I=0,J=0,K=0,L=0,N=0,O=0,P=0,Q=0,R=Pa;Q=r;r=r+80|0;P=Q+48|0;H=Q+32|0;I=Q+16|0;O=Q;J=P+16|0;k[P>>2]=0;k[P+4>>2]=0;k[P+8>>2]=0;k[P+12>>2]=0;o[J>>2]=da(1.0);N=a+80|0;fi(O,k[N>>2]|0);e=k[N>>2]|0;if((e|0)>0){y=k[c>>2]|0;z=b+48|0;A=b+40|0;v=I+4|0;w=I+8|0;x=I+12|0;B=P+4|0;C=P+12|0;D=P+8|0;E=a+40|0;F=a+64|0;t=0;u=0;while(1){e=y+u|0;c=z;d=k[c>>2]|0;c=k[c+4>>2]|0;f=A;e=sj(k[f>>2]|0,k[f+4>>2]|0,e|0,((e|0)<0)<<31>>31|0)|0;c=mk(e|0,M|0,d|0,c|0)|0;c=(k[k[b>>2]>>2]|0)+c|0;d=H;e=c;f=d+16|0;do{i[d>>0]=i[e>>0]|0;d=d+1|0;e=e+1|0}while((d|0)<(f|0));Xi(I|0,c|0,16)|0;c=Xe(P,I)|0;if(!c){g=k[I>>2]|0;h=k[v>>2]|0;j=k[w>>2]|0;l=k[x>>2]|0;s=(((g^318)+239^h)+239^j)+239^l;p=k[B>>2]|0;q=(p|0)==0;a:do if(!q){f=p+-1|0;d=(f&p|0)==0;if(d)c=s&f;else c=(s>>>0)%(p>>>0)|0;e=k[(k[P>>2]|0)+(c<<2)>>2]|0;if((e|0)!=0?(G=k[e>>2]|0,(G|0)!=0):0)if(d){d=G;while(1){if((k[d+4>>2]&f|0)!=(c|0)){K=25;break a}if((((k[d+8>>2]|0)==(g|0)?(k[d+12>>2]|0)==(h|0):0)?(k[d+16>>2]|0)==(j|0):0)?(k[d+20>>2]|0)==(l|0):0)break a;d=k[d>>2]|0;if(!d){K=25;break}}}else{d=G;while(1){if((((k[d+4>>2]|0)>>>0)%(p>>>0)|0|0)!=(c|0)){K=25;break a}if((((k[d+8>>2]|0)==(g|0)?(k[d+12>>2]|0)==(h|0):0)?(k[d+16>>2]|0)==(j|0):0)?(k[d+20>>2]|0)==(l|0):0)break a;d=k[d>>2]|0;if(!d){K=25;break}}}else K=25}else{c=0;K=25}while(0);if((K|0)==25){K=0;f=vj(28)|0;k[f+8>>2]=g;k[f+12>>2]=h;k[f+16>>2]=j;k[f+20>>2]=l;k[f+24>>2]=t;k[f+4>>2]=s;k[f>>2]=0;m=da(((k[C>>2]|0)+1|0)>>>0);R=da(p>>>0);n=da(o[J>>2]);do if(q|m>da(R*n)){c=(p>>>0>2&(p+-1&p|0)==0&1|p<<1)^1;d=~~da(_(da(m/n)))>>>0;Xf(P,c>>>0>>0?d:c);c=k[B>>2]|0;d=c+-1|0;if(!(d&c)){e=c;c=d&s;break}else{e=c;c=(s>>>0)%(c>>>0)|0;break}}else e=p;while(0);c=(k[P>>2]|0)+(c<<2)|0;d=k[c>>2]|0;if(!d){k[f>>2]=k[D>>2];k[D>>2]=f;k[c>>2]=D;c=k[f>>2]|0;if(c|0){c=k[c+4>>2]|0;d=e+-1|0;if(!(d&e))c=c&d;else c=(c>>>0)%(e>>>0)|0;k[(k[P>>2]|0)+(c<<2)>>2]=f}}else{k[f>>2]=k[d>>2];k[d>>2]=f}k[C>>2]=(k[C>>2]|0)+1}s=E;c=k[s>>2]|0;s=sj(c|0,k[s+4>>2]|0,t|0,((t|0)<0)<<31>>31|0)|0;Mh((k[k[F>>2]>>2]|0)+s|0,H|0,c|0)|0;k[(k[O>>2]|0)+(u<<2)>>2]=t;c=t+1|0}else{k[(k[O>>2]|0)+(u<<2)>>2]=k[c+24>>2];c=t}u=u+1|0;e=k[N>>2]|0;if((u|0)>=(e|0)){l=c;break}else t=c}}else l=0;if((l|0)!=(e|0)){j=a+84|0;if(!(i[j>>0]|0)){e=k[a+68>>2]|0;c=(k[a+72>>2]|0)-e|0;if((c|0)>0){f=k[O>>2]|0;d=c>>2;c=0;do{a=e+(c<<2)|0;k[a>>2]=k[f+(k[a>>2]<<2)>>2];c=c+1|0}while((c|0)<(d|0))}}else{i[j>>0]=0;c=a+68|0;d=a+72|0;h=k[d>>2]|0;g=k[c>>2]|0;f=h-g>>2;if(e>>>0<=f>>>0){if(e>>>0>>0?(L=g+(e<<2)|0,(h|0)!=(L|0)):0)k[d>>2]=h+(~((h+-4-L|0)>>>2)<<2)}else{Of(c,e-f|0,3104);e=k[N>>2]|0}if((e|0)>0){f=k[O>>2]|0;if(i[j>>0]|0)Ka(13384,13403,80,13435);d=k[a+68>>2]|0;c=0;do{k[d+(c<<2)>>2]=k[f+(c<<2)>>2];c=c+1|0}while((c|0)<(e|0))}}k[N>>2]=l}e=k[O>>2]|0;f=e;if(e|0){c=O+4|0;d=k[c>>2]|0;if((d|0)!=(e|0))k[c>>2]=d+(~((d+-4-f|0)>>>2)<<2);Vl(e)}c=k[P+8>>2]|0;if(c|0)do{O=c;c=k[c>>2]|0;Vl(O)}while((c|0)!=0);c=k[P>>2]|0;k[P>>2]=0;if(!c){r=Q;return l|0}Vl(c);r=Q;return l|0}function Sb(a,b,c){a=a|0;b=b|0;c=c|0;var d=0,e=0,f=0,g=0,h=0,j=0,l=Pa,m=Pa,n=0,p=0,q=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,B=0,C=0,D=0,E=0,F=0,G=0,H=0,I=Pa;H=r;r=r+48|0;G=H+12|0;B=H+32|0;F=H;C=G+16|0;k[G>>2]=0;k[G+4>>2]=0;k[G+8>>2]=0;k[G+12>>2]=0;o[C>>2]=da(1.0);E=a+80|0;fi(F,k[E>>2]|0);e=k[E>>2]|0;a:do if((e|0)>0){u=b+48|0;v=b+40|0;w=G+4|0;x=G+12|0;y=G+8|0;z=a+40|0;A=a+64|0;t=k[c>>2]|0;h=0;s=0;q=0;while(1){f=t+s|0;j=u;p=k[j>>2]|0;j=k[j+4>>2]|0;g=v;g=sj(f|0,((f|0)<0)<<31>>31|0,k[g>>2]|0,k[g+4>>2]|0)|0;j=mk(g|0,M|0,p|0,j|0)|0;j=i[(k[k[b>>2]>>2]|0)+j>>0]|0;i[B>>0]=j;p=j&255^318;b:do if(h){g=h+-1|0;f=(g&h|0)==0;if(f)d=g&p;else d=(p>>>0)%(h>>>0)|0;e=k[G>>2]|0;c=k[e+(d<<2)>>2]|0;c:do if(c|0){if(f)do{c=k[c>>2]|0;if(!c)break c;if((k[c+4>>2]&g|0)!=(d|0))break c}while((i[c+8>>0]|0)!=j<<24>>24);else do{c=k[c>>2]|0;if(!c)break c;if((((k[c+4>>2]|0)>>>0)%(h>>>0)|0|0)!=(d|0))break c}while((i[c+8>>0]|0)!=j<<24>>24);k[(k[F>>2]|0)+(s<<2)>>2]=k[c+12>>2];d=q;break b}while(0);if(f)c=g&p;else c=(p>>>0)%(h>>>0)|0;d=k[e+(c<<2)>>2]|0;if(d)if(f)while(1){d=k[d>>2]|0;if(!d){d=h;e=0;n=28;break b}if((k[d+4>>2]&g|0)!=(c|0)){d=h;e=0;n=28;break b}if((i[d+8>>0]|0)==j<<24>>24){n=40;break}}else while(1){d=k[d>>2]|0;if(!d){d=h;e=0;n=28;break b}if((((k[d+4>>2]|0)>>>0)%(h>>>0)|0|0)!=(c|0)){d=h;e=0;n=28;break b}if((i[d+8>>0]|0)==j<<24>>24){n=40;break}}else{d=h;e=0;n=28}}else{c=0;d=0;e=1;n=28}while(0);if((n|0)==28){f=vj(16)|0;i[f+8>>0]=j;k[f+12>>2]=q;k[f+4>>2]=p;k[f>>2]=0;l=da(((k[x>>2]|0)+1|0)>>>0);I=da(d>>>0);m=da(o[C>>2]);do if(e|l>da(I*m)){c=(d>>>0>2&(d+-1&d|0)==0&1|d<<1)^1;d=~~da(_(da(l/m)))>>>0;bg(G,c>>>0>>0?d:c);c=k[w>>2]|0;d=c+-1|0;if(!(d&c)){e=c;c=d&p;break}else{e=c;c=(p>>>0)%(c>>>0)|0;break}}else e=d;while(0);c=(k[G>>2]|0)+(c<<2)|0;d=k[c>>2]|0;if(!d){k[f>>2]=k[y>>2];k[y>>2]=f;k[c>>2]=y;c=k[f>>2]|0;if(c|0){c=k[c+4>>2]|0;d=e+-1|0;if(!(d&e))c=c&d;else c=(c>>>0)%(e>>>0)|0;k[(k[G>>2]|0)+(c<<2)>>2]=f}}else{k[f>>2]=k[d>>2];k[d>>2]=f}k[x>>2]=(k[x>>2]|0)+1;n=40}if((n|0)==40){n=0;p=z;d=k[p>>2]|0;p=sj(d|0,k[p+4>>2]|0,q|0,((q|0)<0)<<31>>31|0)|0;Mh((k[k[A>>2]>>2]|0)+p|0,B|0,d|0)|0;k[(k[F>>2]|0)+(s<<2)>>2]=q;d=q+1|0}c=s+1|0;e=k[E>>2]|0;if((c|0)>=(e|0)){n=d;break a}h=k[w>>2]|0;s=c;q=d}}else n=0;while(0);if((n|0)!=(e|0)){j=a+84|0;if(!(i[j>>0]|0)){e=k[a+68>>2]|0;c=(k[a+72>>2]|0)-e|0;if((c|0)>0){f=k[F>>2]|0;d=c>>2;c=0;do{a=e+(c<<2)|0;k[a>>2]=k[f+(k[a>>2]<<2)>>2];c=c+1|0}while((c|0)<(d|0))}}else{i[j>>0]=0;c=a+68|0;d=a+72|0;h=k[d>>2]|0;g=k[c>>2]|0;f=h-g>>2;if(e>>>0<=f>>>0){if(e>>>0>>0?(D=g+(e<<2)|0,(h|0)!=(D|0)):0)k[d>>2]=h+(~((h+-4-D|0)>>>2)<<2)}else{Of(c,e-f|0,3104);e=k[E>>2]|0}if((e|0)>0){f=k[F>>2]|0;if(i[j>>0]|0)Ka(13384,13403,80,13435);d=k[a+68>>2]|0;c=0;do{k[d+(c<<2)>>2]=k[f+(c<<2)>>2];c=c+1|0}while((c|0)<(e|0))}}k[E>>2]=n}e=k[F>>2]|0;f=e;if(e|0){c=F+4|0;d=k[c>>2]|0;if((d|0)!=(e|0))k[c>>2]=d+(~((d+-4-f|0)>>>2)<<2);Vl(e)}c=k[G+8>>2]|0;if(c|0)do{F=c;c=k[c>>2]|0;Vl(F)}while((c|0)!=0);c=k[G>>2]|0;k[G>>2]=0;if(!c){r=H;return n|0}Vl(c);r=H;return n|0}function Tb(a,b){a=a|0;b=b|0;var c=0,d=0,e=0,f=0,g=0,h=0,l=0,m=0,n=0,o=0;o=a+8|0;d=k[o>>2]|0;switch(k[d+28>>2]|0){case 2:{c=i[d+24>>0]|0;l=c<<24>>24;h=Sl((l|0)>-1?l:-1)|0;a:do if(b|0){g=a+16|0;if(c<<24>>24>0){a=0;d=0}else{Mh(k[k[d+64>>2]>>2]|0,h|0,l|0)|0;if((b|0)==1)break;else{c=0;a=1}while(1){c=c+l|0;Mh((k[k[(k[o>>2]|0)+64>>2]>>2]|0)+c|0,h|0,l|0)|0;a=a+1|0;if((a|0)==(b|0))break a}}while(1){f=k[g>>2]|0;c=0;e=d;while(1){i[h+c>>0]=k[f+(e<<2)>>2];c=c+1|0;if((c|0)==(l|0))break;else e=e+1|0}Mh((k[k[(k[o>>2]|0)+64>>2]>>2]|0)+d|0,h|0,l|0)|0;a=a+1|0;if((a|0)==(b|0))break;else d=d+l|0}}while(0);Tl(h);o=1;return o|0}case 1:{c=i[d+24>>0]|0;h=c<<24>>24;l=Sl((h|0)>-1?h:-1)|0;b:do if(b|0){g=a+16|0;if(c<<24>>24>0){a=0;d=0}else{Mh(k[k[d+64>>2]>>2]|0,l|0,h|0)|0;if((b|0)==1)break;else{c=0;a=1}while(1){c=c+h|0;Mh((k[k[(k[o>>2]|0)+64>>2]>>2]|0)+c|0,l|0,h|0)|0;a=a+1|0;if((a|0)==(b|0))break b}}while(1){f=k[g>>2]|0;c=0;e=d;while(1){i[l+c>>0]=k[f+(e<<2)>>2];c=c+1|0;if((c|0)==(h|0))break;else e=e+1|0}Mh((k[k[(k[o>>2]|0)+64>>2]>>2]|0)+d|0,l|0,h|0)|0;a=a+1|0;if((a|0)==(b|0))break;else d=d+h|0}}while(0);Tl(l);o=1;return o|0}case 4:{c=i[d+24>>0]|0;l=c<<24>>24;m=l<<1;n=Sl(l>>>0>2147483647?-1:l<<1)|0;c:do if(b|0){h=a+16|0;if(c<<24>>24>0){a=0;d=0;e=0}else{Mh(k[k[d+64>>2]>>2]|0,n|0,m|0)|0;if((b|0)==1)break;else{c=0;a=1}while(1){c=c+m|0;Mh((k[k[(k[o>>2]|0)+64>>2]>>2]|0)+c|0,n|0,m|0)|0;a=a+1|0;if((a|0)==(b|0))break c}}while(1){g=k[h>>2]|0;c=0;f=e;while(1){j[n+(c<<1)>>1]=k[g+(f<<2)>>2];c=c+1|0;if((c|0)==(l|0))break;else f=f+1|0}Mh((k[k[(k[o>>2]|0)+64>>2]>>2]|0)+d|0,n|0,m|0)|0;a=a+1|0;if((a|0)==(b|0))break;else{d=d+m|0;e=e+l|0}}}while(0);Tl(n);o=1;return o|0}case 3:{c=i[d+24>>0]|0;l=c<<24>>24;m=l<<1;n=Sl(l>>>0>2147483647?-1:l<<1)|0;d:do if(b|0){h=a+16|0;if(c<<24>>24>0){a=0;d=0;e=0}else{Mh(k[k[d+64>>2]>>2]|0,n|0,m|0)|0;if((b|0)==1)break;else{c=0;a=1}while(1){c=c+m|0;Mh((k[k[(k[o>>2]|0)+64>>2]>>2]|0)+c|0,n|0,m|0)|0;a=a+1|0;if((a|0)==(b|0))break d}}while(1){g=k[h>>2]|0;c=0;f=e;while(1){j[n+(c<<1)>>1]=k[g+(f<<2)>>2];c=c+1|0;if((c|0)==(l|0))break;else f=f+1|0}Mh((k[k[(k[o>>2]|0)+64>>2]>>2]|0)+d|0,n|0,m|0)|0;a=a+1|0;if((a|0)==(b|0))break;else{d=d+m|0;e=e+l|0}}}while(0);Tl(n);o=1;return o|0}case 6:{c=i[d+24>>0]|0;l=c<<24>>24;m=l<<2;n=Sl(l>>>0>1073741823?-1:l<<2)|0;e:do if(b|0){h=a+16|0;if(c<<24>>24>0){a=0;d=0;e=0}else{Mh(k[k[d+64>>2]>>2]|0,n|0,m|0)|0;if((b|0)==1)break;else{c=0;a=1}while(1){c=c+m|0;Mh((k[k[(k[o>>2]|0)+64>>2]>>2]|0)+c|0,n|0,m|0)|0;a=a+1|0;if((a|0)==(b|0))break e}}while(1){g=k[h>>2]|0;c=0;f=e;while(1){k[n+(c<<2)>>2]=k[g+(f<<2)>>2];c=c+1|0;if((c|0)==(l|0))break;else f=f+1|0}Mh((k[k[(k[o>>2]|0)+64>>2]>>2]|0)+d|0,n|0,m|0)|0;a=a+1|0;if((a|0)==(b|0))break;else{d=d+m|0;e=e+l|0}}}while(0);Tl(n);o=1;return o|0}case 5:{c=i[d+24>>0]|0;l=c<<24>>24;m=l<<2;n=Sl(l>>>0>1073741823?-1:l<<2)|0;f:do if(b|0){h=a+16|0;if(c<<24>>24>0){a=0;d=0;e=0}else{Mh(k[k[d+64>>2]>>2]|0,n|0,m|0)|0;if((b|0)==1)break;else{c=0;a=1}while(1){c=c+m|0;Mh((k[k[(k[o>>2]|0)+64>>2]>>2]|0)+c|0,n|0,m|0)|0;a=a+1|0;if((a|0)==(b|0))break f}}while(1){g=k[h>>2]|0;c=0;f=e;while(1){k[n+(c<<2)>>2]=k[g+(f<<2)>>2];c=c+1|0;if((c|0)==(l|0))break;else f=f+1|0}Mh((k[k[(k[o>>2]|0)+64>>2]>>2]|0)+d|0,n|0,m|0)|0;a=a+1|0;if((a|0)==(b|0))break;else{d=d+m|0;e=e+l|0}}}while(0);Tl(n);o=1;return o|0}default:{o=0;return o|0}}return 0}function Ub(a,b){a=a|0;b=b|0;var c=0,d=0,e=0,f=0,g=0,h=0,i=0,j=0,l=0,m=0,n=0,o=0,p=0,q=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0;z=r;r=r+32|0;q=z+28|0;p=z+24|0;i=z+20|0;j=z+16|0;l=z+12|0;m=z+8|0;v=z+4|0;w=z;e=k[b>>2]|0;if((e|0)<0){r=z;return}u=(e>>>0)/3|0;s=a+12|0;if(k[(k[s>>2]|0)+(u>>>5<<2)>>2]&1<<(u&31)|0){r=z;return}t=a+56|0;c=k[t>>2]|0;u=a+60|0;d=k[u>>2]|0;if((d|0)!=(c|0)){c=d+(~((d+-4-c|0)>>>2)<<2)|0;k[u>>2]=c}o=a+64|0;if((c|0)==(k[o>>2]|0))Ig(t,b);else{k[c>>2]=e;k[u>>2]=c+4}c=k[a>>2]|0;d=k[b>>2]|0;e=d+1|0;do if((d|0)>=0){f=k[c+28>>2]|0;c=k[f+((((e|0)%3|0|0)==0?d+-2|0:e)<<2)>>2]|0;if(!((d>>>0)%3|0)){g=c;d=d+2|0;c=f;break}else{g=c;d=d+-1|0;c=f;break}}else{c=k[c+28>>2]|0;g=k[c+(d<<2)>>2]|0}while(0);h=k[c+(d<<2)>>2]|0;n=a+24|0;c=k[n>>2]|0;d=c+(g>>>5<<2)|0;e=1<<(g&31);f=k[d>>2]|0;if(!(f&e)){k[d>>2]=f|e;k[i>>2]=g;c=k[b>>2]|0;d=c+1|0;if((c|0)>=0)c=((d|0)%3|0|0)==0?c+-2|0:d;k[j>>2]=c;k[p>>2]=k[i>>2];k[q>>2]=k[j>>2];ef(a+36|0,p,q);c=k[n>>2]|0}c=c+(h>>>5<<2)|0;d=1<<(h&31);e=k[c>>2]|0;if(!(e&d)){k[c>>2]=e|d;d=a+36|0;k[l>>2]=h;c=k[b>>2]|0;do if((c|0)>=0)if(!((c>>>0)%3|0)){c=c+2|0;break}else{c=c+-1|0;break}while(0);k[m>>2]=c;k[p>>2]=k[l>>2];k[q>>2]=k[m>>2];ef(d,p,q)}d=k[t>>2]|0;c=k[u>>2]|0;if((d|0)==(c|0)){r=z;return}j=a+36|0;do{e=k[c+-4>>2]|0;k[b>>2]=e;f=(e|0)/3|0;if((e|0)>=0?(x=k[s>>2]|0,(k[x+(f>>>5<<2)>>2]&1<<(f&31)|0)==0):0){c=e;d=x;e=k[a>>2]|0;a:while(1){h=(c|0)/3|0;c=d+(h>>>5<<2)|0;k[c>>2]=1<<(h&31)|k[c>>2];c=k[b>>2]|0;h=k[(k[e+28>>2]|0)+(c<<2)>>2]|0;d=k[(k[e+40>>2]|0)+(h<<2)>>2]|0;if((d|0)<0)i=1;else{i=k[(k[k[e+64>>2]>>2]|0)+(((d>>>0)/3|0)*12|0)+(((d>>>0)%3|0)<<2)>>2]|0;i=(1<<(i&31)&k[(k[e+12>>2]|0)+(i>>>5<<2)>>2]|0)!=0}d=(k[n>>2]|0)+(h>>>5<<2)|0;f=1<<(h&31);g=k[d>>2]|0;if(!(g&f)){k[d>>2]=g|f;k[v>>2]=h;k[w>>2]=k[b>>2];k[p>>2]=k[v>>2];k[q>>2]=k[w>>2];ef(j,p,q);e=k[a>>2]|0;c=k[b>>2]|0;if(i){i=e;y=40}else{d=c+1|0;if((c|0)>=0)c=((d|0)%3|0|0)==0?c+-2|0:d;do if(!(1<<(c&31)&k[(k[e>>2]|0)+(c>>>5<<2)>>2])){if((c|0)<0)break;c=k[(k[(k[e+64>>2]|0)+12>>2]|0)+(c<<2)>>2]|0}else c=-1073741824;while(0);k[b>>2]=c}}else{i=e;y=40}if((y|0)==40){y=0;e=(c|0)<0;d=c+1|0;if(e)d=c;else d=((d|0)%3|0|0)==0?c+-2|0:d;if(!(1<<(d&31)&k[(k[i>>2]|0)+(d>>>5<<2)>>2])){if((d|0)>=0)d=k[(k[(k[i+64>>2]|0)+12>>2]|0)+(d<<2)>>2]|0}else d=-1073741824;k[q>>2]=d;do if(!e)if(!((c>>>0)%3|0)){c=c+2|0;break}else{c=c+-1|0;break}while(0);do if(!(1<<(c&31)&k[(k[i>>2]|0)+(c>>>5<<2)>>2])){if((c|0)<0)break;c=k[(k[(k[i+64>>2]|0)+12>>2]|0)+(c<<2)>>2]|0}else c=-1073741824;while(0);m=(d|0)<0;e=m?-1:(d>>>0)/3|0;f=(c|0)<0;g=f?-1:(c>>>0)/3|0;do if(!m){h=k[s>>2]|0;if(k[h+(e>>>5<<2)>>2]&1<<(e&31)|0){y=54;break}if(f){c=d;break}if(!(k[h+(g>>>5<<2)>>2]&1<<(g&31))){y=59;break a}else c=d}else y=54;while(0);if((y|0)==54){y=0;if(f){y=56;break}if(k[(k[s>>2]|0)+(g>>>5<<2)>>2]&1<<(g&31)){y=56;break}}k[b>>2]=c;e=i}d=k[s>>2]|0}do if((y|0)==56){y=0;c=(k[u>>2]|0)+-4|0;k[u>>2]=c}else if((y|0)==59){y=0;d=k[u>>2]|0;k[d+-4>>2]=c;if((d|0)==(k[o>>2]|0)){Ig(t,q);c=k[u>>2]|0;break}else{k[d>>2]=k[q>>2];c=d+4|0;k[u>>2]=c;break}}while(0);d=k[t>>2]|0}else{c=c+-4|0;k[u>>2]=c}}while((d|0)!=(c|0));r=z;return}function Vb(a,b){a=a|0;b=b|0;var c=0,d=0,e=0,f=0,g=0,h=0,m=0,n=0,o=0,p=0,q=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0;z=r;r=r+16|0;y=z+4|0;v=z;w=b+8|0;g=w;h=k[g>>2]|0;g=k[g+4>>2]|0;x=b+16|0;d=x;c=k[d>>2]|0;d=k[d+4>>2]|0;f=mk(c|0,d|0,4,0)|0;e=M;if((g|0)<(e|0)|(g|0)==(e|0)&h>>>0>>0){y=-1;r=z;return y|0}u=(k[b>>2]|0)+c|0;u=l[u>>0]|l[u+1>>0]<<8|l[u+2>>0]<<16|l[u+3>>0]<<24;t=x;k[t>>2]=f;k[t+4>>2]=e;a:do if(u|0){if(((El(j[(k[a+4>>2]|0)+24>>1]|0)|0)&65535)<=257){o=y+4|0;p=y+8|0;q=a+40|0;s=a+44|0;t=a+36|0;d=mk(c|0,d|0,8,0)|0;c=M;b:do if(!((g|0)<(c|0)|(g|0)==(c|0)&h>>>0>>0)){n=0;m=e;do{e=k[b>>2]|0;A=e+f|0;k[y>>2]=l[A>>0]|l[A+1>>0]<<8|l[A+2>>0]<<16|l[A+3>>0]<<24;A=x;k[A>>2]=d;k[A+4>>2]=c;c=mk(f|0,m|0,8,0)|0;A=M;if((g|0)<(A|0)|(g|0)==(A|0)&h>>>0>>0)break b;c=e+d|0;k[o>>2]=l[c>>0]|l[c+1>>0]<<8|l[c+2>>0]<<16|l[c+3>>0]<<24;c=mk(f|0,m|0,8,0)|0;A=M;d=x;k[d>>2]=c;k[d+4>>2]=A;if(!((g|0)>(A|0)|(g|0)==(A|0)&h>>>0>c>>>0))break b;c=i[e+c>>0]|0;m=mk(f|0,m|0,9,0)|0;A=x;k[A>>2]=m;k[A+4>>2]=M;i[p>>0]=c&3|i[p>>0]&-4;c=k[q>>2]|0;if((c|0)==(k[s>>2]|0))rg(t,y);else{k[c>>2]=k[y>>2];k[c+4>>2]=k[y+4>>2];k[c+8>>2]=k[y+8>>2];k[q>>2]=(k[q>>2]|0)+12}n=n+1|0;if(n>>>0>=u>>>0)break a;g=w;h=k[g>>2]|0;g=k[g+4>>2]|0;m=x;f=k[m>>2]|0;m=k[m+4>>2]|0;d=mk(f|0,m|0,4,0)|0;c=M}while(!((g|0)<(c|0)|(g|0)==(c|0)&h>>>0>>0))}while(0);A=-1;r=z;return A|0}e=y+4|0;f=a+40|0;g=a+44|0;h=a+36|0;c=0;d=0;do{ih(v,b);k[e>>2]=(k[v>>2]|0)+d;ih(v,b);d=k[e>>2]|0;k[y>>2]=d-(k[v>>2]|0);m=k[f>>2]|0;if((m|0)==(k[g>>2]|0))rg(h,y);else{k[m>>2]=k[y>>2];k[m+4>>2]=k[y+4>>2];k[m+8>>2]=k[y+8>>2];k[f>>2]=(k[f>>2]|0)+12}c=c+1|0}while((c|0)!=(u|0));xf(b,0,0)|0;m=b+36|0;n=a+36|0;o=b+32|0;p=b+24|0;q=b+28|0;h=0;c=0;do{if(i[m>>0]|0){d=k[o>>2]|0;e=k[p>>2]|0;g=k[q>>2]|0;c=e+(d>>>3)|0;if(c>>>0>>0){f=(l[c>>0]|0)>>>(d&7)&1;d=d+1|0;k[o>>2]=d}else f=0;c=e+(d>>>3)|0;if(c>>>0>>0){c=(l[c>>0]|0)>>>(d&7)&1;k[o>>2]=d+1}else c=0;c=c<<1|f}A=(k[n>>2]|0)+(h*12|0)+8|0;i[A>>0]=c&3|i[A>>0]&-4;h=h+1|0}while((h|0)!=(u|0));Qi(b)}while(0);h=w;g=k[h>>2]|0;h=k[h+4>>2]|0;f=x;e=k[f>>2]|0;f=k[f+4>>2]|0;d=mk(e|0,f|0,4,0)|0;c=M;if((h|0)<(c|0)|(h|0)==(c|0)&g>>>0>>0){A=-1;r=z;return A|0}p=(k[b>>2]|0)+e|0;p=l[p>>0]|l[p+1>>0]<<8|l[p+2>>0]<<16|l[p+3>>0]<<24;A=x;k[A>>2]=d;k[A+4>>2]=c;c:do if(p|0){if(((El(j[(k[a+4>>2]|0)+24>>1]|0)|0)&65535)>257){g=a+52|0;h=a+56|0;e=a+48|0;c=0;d=0;while(1){k[y>>2]=0;ih(v,b);d=(k[v>>2]|0)+d|0;k[y>>2]=d;f=k[g>>2]|0;if((f|0)==(k[h>>2]|0))Ig(e,y);else{k[f>>2]=d;k[g>>2]=f+4}c=c+1|0;if((c|0)==(p|0))break c}}n=a+52|0;o=a+56|0;m=a+48|0;k[y>>2]=0;e=mk(e|0,f|0,8,0)|0;c=M;if(!((h|0)<(c|0)|(h|0)==(c|0)&g>>>0>>0)){f=0;do{d=(k[b>>2]|0)+d|0;d=l[d>>0]|l[d+1>>0]<<8|l[d+2>>0]<<16|l[d+3>>0]<<24;k[y>>2]=d;A=x;k[A>>2]=e;k[A+4>>2]=c;c=k[n>>2]|0;if((c|0)==(k[o>>2]|0))Ig(m,y);else{k[c>>2]=d;k[n>>2]=c+4}f=f+1|0;if(f>>>0>=p>>>0)break c;v=w;A=k[v>>2]|0;v=k[v+4>>2]|0;e=x;d=k[e>>2]|0;e=k[e+4>>2]|0;k[y>>2]=0;e=mk(d|0,e|0,4,0)|0;c=M}while(!((v|0)<(c|0)|(v|0)==(c|0)&A>>>0>>0))}A=-1;r=z;return A|0}while(0);A=k[x>>2]|0;r=z;return A|0}function Wb(a,b,c,d,e,f){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;f=f|0;var g=0,h=0,i=0,j=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,B=0;x=a+8|0;k[x>>2]=e;h=a+32|0;i=a+36|0;g=k[i>>2]|0;f=k[h>>2]|0;d=g-f>>2;if(d>>>0>=e>>>0)if(d>>>0>e>>>0?(j=f+(e<<2)|0,(g|0)!=(j|0)):0){k[i>>2]=g+(~((g+-4-j|0)>>>2)<<2);d=e}else d=e;else{wg(h,e-d|0);d=k[x>>2]|0}u=k[a+48>>2]|0;v=k[a+52>>2]|0;t=e>>>0>1073741823?-1:e<<2;w=Sl(t)|0;Zh(w|0,0,t|0)|0;if((d|0)>0){l=a+16|0;j=a+32|0;m=a+12|0;i=0;do{h=k[w+(i<<2)>>2]|0;d=k[l>>2]|0;do if((h|0)<=(d|0)){d=k[m>>2]|0;f=k[j>>2]|0;g=f+(i<<2)|0;if((h|0)<(d|0)){k[g>>2]=d;g=f;break}else{k[g>>2]=h;g=f;break}}else{g=k[j>>2]|0;k[g+(i<<2)>>2]=d}while(0);i=i+1|0;d=k[x>>2]|0}while((i|0)<(d|0));if((d|0)>0){d=0;do{k[c+(d<<2)>>2]=(k[b+(d<<2)>>2]|0)+(k[g+(d<<2)>>2]|0);d=d+1|0;f=k[x>>2]|0}while((d|0)<(f|0));if((f|0)>0){f=a+20|0;d=0;do{g=c+(d<<2)|0;h=k[g>>2]|0;if((h|0)<=(k[l>>2]|0)){if((h|0)<(k[m>>2]|0))k[g>>2]=(k[f>>2]|0)+h}else k[g>>2]=h-(k[f>>2]|0);d=d+1|0}while((d|0)<(k[x>>2]|0))}}}p=a+56|0;f=k[p>>2]|0;h=k[f+4>>2]|0;g=k[f>>2]|0;t=h-g|0;q=t>>2;if((t|0)<=4){Tl(w);return 1}r=a+16|0;s=a+32|0;t=a+12|0;a=a+20|0;n=u+12|0;o=(e|0)>0;d=1;while(1){if(h-g>>2>>>0<=d>>>0){B=28;break}f=k[g+(d<<2)>>2]|0;m=$(d,e)|0;if((f|0)>=0?(y=k[(k[n>>2]|0)+(f<<2)>>2]|0,(y|0)>=0):0){h=k[u>>2]|0;g=(y>>>0)%3|0;i=k[v>>2]|0;l=k[i+(k[h+(((y>>>0)/3|0)*12|0)+(g<<2)>>2]<<2)>>2]|0;f=y+1|0;f=((f|0)%3|0|0)==0?y+-2|0:f;if((f|0)<0)f=-1073741824;else f=k[h+(((f>>>0)/3|0)*12|0)+(((f>>>0)%3|0)<<2)>>2]|0;j=k[i+(f<<2)>>2]|0;f=((g|0)==0?2:-1)+y|0;if((f|0)<0)f=-1073741824;else f=k[h+(((f>>>0)/3|0)*12|0)+(((f>>>0)%3|0)<<2)>>2]|0;f=k[i+(f<<2)>>2]|0;if((l|0)<(d|0)&(j|0)<(d|0)&(f|0)<(d|0)){i=$(l,e)|0;h=$(j,e)|0;g=$(f,e)|0;if(o){f=0;do{k[w+(f<<2)>>2]=(k[c+(f+g<<2)>>2]|0)+(k[c+(f+h<<2)>>2]|0)-(k[c+(f+i<<2)>>2]|0);f=f+1|0}while((f|0)!=(e|0))}l=c+(m<<2)|0;if((k[x>>2]|0)>0){j=0;do{i=k[w+(j<<2)>>2]|0;f=k[r>>2]|0;do if((i|0)<=(f|0)){f=k[t>>2]|0;g=k[s>>2]|0;h=g+(j<<2)|0;if((i|0)<(f|0)){k[h>>2]=f;h=g;break}else{k[h>>2]=i;h=g;break}}else{h=k[s>>2]|0;k[h+(j<<2)>>2]=f}while(0);j=j+1|0;f=k[x>>2]|0}while((j|0)<(f|0));if((f|0)>0){f=0;do{k[l+(f<<2)>>2]=(k[b+(f+m<<2)>>2]|0)+(k[h+(f<<2)>>2]|0);f=f+1|0;g=k[x>>2]|0}while((f|0)<(g|0));if((g|0)>0){f=0;do{g=l+(f<<2)|0;h=k[g>>2]|0;if((h|0)<=(k[r>>2]|0)){if((h|0)<(k[t>>2]|0))k[g>>2]=(k[a>>2]|0)+h}else k[g>>2]=h-(k[a>>2]|0);f=f+1|0}while((f|0)<(k[x>>2]|0))}}}}else B=37}else B=37;if((B|0)==37?(B=0,z=c+(($(d+-1|0,e)|0)<<2)|0,A=c+(m<<2)|0,(k[x>>2]|0)>0):0){j=0;do{i=k[z+(j<<2)>>2]|0;f=k[r>>2]|0;do if((i|0)<=(f|0)){f=k[t>>2]|0;g=k[s>>2]|0;h=g+(j<<2)|0;if((i|0)<(f|0)){k[h>>2]=f;h=g;break}else{k[h>>2]=i;h=g;break}}else{h=k[s>>2]|0;k[h+(j<<2)>>2]=f}while(0);j=j+1|0;f=k[x>>2]|0}while((j|0)<(f|0));if((f|0)>0){f=0;do{k[A+(f<<2)>>2]=(k[b+(f+m<<2)>>2]|0)+(k[h+(f<<2)>>2]|0);f=f+1|0;g=k[x>>2]|0}while((f|0)<(g|0));if((g|0)>0){f=0;do{g=A+(f<<2)|0;h=k[g>>2]|0;if((h|0)<=(k[r>>2]|0)){if((h|0)<(k[t>>2]|0))k[g>>2]=(k[a>>2]|0)+h}else k[g>>2]=h-(k[a>>2]|0);f=f+1|0}while((f|0)<(k[x>>2]|0))}}}d=d+1|0;if((d|0)>=(q|0)){B=25;break}f=k[p>>2]|0;g=k[f>>2]|0;h=k[f+4>>2]|0}if((B|0)==25){Tl(w);return 1}else if((B|0)==28)_k(f);return 0}function Xb(a,b){a=a|0;b=b|0;var c=0,d=0,e=0,f=0,g=0,h=0,i=0,j=0,l=0,m=0,n=0,o=0,p=0,q=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0;z=r;r=r+32|0;q=z+28|0;p=z+24|0;i=z+20|0;j=z+16|0;l=z+12|0;m=z+8|0;v=z+4|0;w=z;e=k[b>>2]|0;if((e|0)<0){r=z;return}u=(e>>>0)/3|0;s=a+12|0;if(k[(k[s>>2]|0)+(u>>>5<<2)>>2]&1<<(u&31)|0){r=z;return}t=a+56|0;c=k[t>>2]|0;u=a+60|0;d=k[u>>2]|0;if((d|0)!=(c|0)){c=d+(~((d+-4-c|0)>>>2)<<2)|0;k[u>>2]=c}o=a+64|0;if((c|0)==(k[o>>2]|0))Ig(t,b);else{k[c>>2]=e;k[u>>2]=c+4}e=k[a>>2]|0;d=k[b>>2]|0;c=d+1|0;if((d|0)>=0){c=((c|0)%3|0|0)==0?d+-2|0:c;if((c|0)<0)c=-1073741824;else c=k[(k[e>>2]|0)+(((c>>>0)/3|0)*12|0)+(((c>>>0)%3|0)<<2)>>2]|0;d=(((d>>>0)%3|0|0)==0?2:-1)+d|0;if((d|0)<0){g=c;h=-1073741824}else{g=c;h=k[(k[e>>2]|0)+(((d>>>0)/3|0)*12|0)+(((d>>>0)%3|0)<<2)>>2]|0}}else{g=-1073741824;h=-1073741824}n=a+24|0;c=k[n>>2]|0;d=c+(g>>>5<<2)|0;e=1<<(g&31);f=k[d>>2]|0;if(!(f&e)){k[d>>2]=f|e;k[i>>2]=g;c=k[b>>2]|0;d=c+1|0;if((c|0)>=0)c=((d|0)%3|0|0)==0?c+-2|0:d;k[j>>2]=c;k[p>>2]=k[i>>2];k[q>>2]=k[j>>2];ef(a+36|0,p,q);c=k[n>>2]|0}c=c+(h>>>5<<2)|0;d=1<<(h&31);e=k[c>>2]|0;if(!(e&d)){k[c>>2]=e|d;d=a+36|0;k[l>>2]=h;c=k[b>>2]|0;do if((c|0)>=0)if(!((c>>>0)%3|0)){c=c+2|0;break}else{c=c+-1|0;break}while(0);k[m>>2]=c;k[p>>2]=k[l>>2];k[q>>2]=k[m>>2];ef(d,p,q)}c=k[t>>2]|0;e=k[u>>2]|0;if((c|0)==(e|0)){r=z;return}j=a+36|0;d=c;while(1){c=k[e+-4>>2]|0;k[b>>2]=c;f=(c|0)/3|0;if((c|0)>=0?(x=k[s>>2]|0,(k[x+(f>>>5<<2)>>2]&1<<(f&31)|0)==0):0){d=x;a:while(1){e=(c|0)/3|0;f=d+(e>>>5<<2)|0;k[f>>2]=1<<(e&31)|k[f>>2];f=k[b>>2]|0;e=k[a>>2]|0;if((f|0)<0)i=-1073741824;else i=k[(k[e>>2]|0)+(((f>>>0)/3|0)*12|0)+(((f>>>0)%3|0)<<2)>>2]|0;c=k[(k[e+24>>2]|0)+(i<<2)>>2]|0;d=c+1|0;if((c|0)>=0){c=((d|0)%3|0|0)==0?c+-2|0:d;if((c|0)>=0){c=k[(k[e+12>>2]|0)+(c<<2)>>2]|0;d=c+1|0;if((c|0)<0)h=c;else h=((d|0)%3|0|0)==0?c+-2|0:d}else h=c}else h=c;c=(k[n>>2]|0)+(i>>>5<<2)|0;d=1<<(i&31);g=k[c>>2]|0;if(!(g&d)){k[c>>2]=g|d;k[v>>2]=i;k[w>>2]=k[b>>2];k[p>>2]=k[v>>2];k[q>>2]=k[w>>2];ef(j,p,q);d=k[a>>2]|0;c=k[b>>2]|0;if((h|0)<0){f=c;e=d;y=41}else{do if((c|0)<0)c=-1073741824;else{m=c+1|0;c=((m|0)%3|0|0)==0?c+-2|0:m;if((c|0)<0)break;c=k[(k[d+12>>2]|0)+(c<<2)>>2]|0}while(0);k[b>>2]=c}}else y=41;if((y|0)==41){y=0;if((f|0)<0){y=44;break}c=f+1|0;c=((c|0)%3|0|0)==0?f+-2|0:c;if((c|0)>=0)c=k[(k[e+12>>2]|0)+(c<<2)>>2]|0;k[q>>2]=c;d=(((f>>>0)%3|0|0)==0?2:-1)+f|0;if((d|0)>=0)d=k[(k[e+12>>2]|0)+(d<<2)>>2]|0;m=(c|0)<0;e=m?-1:(c>>>0)/3|0;f=(d|0)<0;g=f?-1:(d>>>0)/3|0;do if(!m){h=k[s>>2]|0;if(k[h+(e>>>5<<2)>>2]&1<<(e&31)|0){y=49;break}if(f)break;if(!(k[h+(g>>>5<<2)>>2]&1<<(g&31))){y=54;break a}}else y=49;while(0);if((y|0)==49){y=0;if(f){y=51;break}if(!(k[(k[s>>2]|0)+(g>>>5<<2)>>2]&1<<(g&31)))c=d;else{y=51;break}}k[b>>2]=c}d=k[s>>2]|0}do if((y|0)==44){k[q>>2]=-1073741824;y=51}else if((y|0)==54){y=0;c=k[u>>2]|0;k[c+-4>>2]=d;if((c|0)==(k[o>>2]|0)){Ig(t,q);c=k[u>>2]|0;break}else{k[c>>2]=k[q>>2];c=c+4|0;k[u>>2]=c;break}}while(0);if((y|0)==51){y=0;c=(k[u>>2]|0)+-4|0;k[u>>2]=c}d=k[t>>2]|0}else{c=e+-4|0;k[u>>2]=c}if((d|0)==(c|0))break;else e=c}r=z;return}function Yb(a,b,c,d,e,f){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;f=f|0;var g=0,h=0,i=0,j=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,B=0,C=0,D=0,E=0,F=0;y=a+8|0;k[y>>2]=e;h=a+32|0;i=a+36|0;g=k[i>>2]|0;f=k[h>>2]|0;d=g-f>>2;if(d>>>0>=e>>>0)if(d>>>0>e>>>0?(j=f+(e<<2)|0,(g|0)!=(j|0)):0){k[i>>2]=g+(~((g+-4-j|0)>>>2)<<2);d=e}else d=e;else{wg(h,e-d|0);d=k[y>>2]|0}v=k[a+48>>2]|0;w=k[a+52>>2]|0;u=e>>>0>1073741823?-1:e<<2;x=Sl(u)|0;Zh(x|0,0,u|0)|0;if((d|0)>0){l=a+16|0;j=a+32|0;m=a+12|0;i=0;do{h=k[x+(i<<2)>>2]|0;d=k[l>>2]|0;do if((h|0)<=(d|0)){d=k[m>>2]|0;f=k[j>>2]|0;g=f+(i<<2)|0;if((h|0)<(d|0)){k[g>>2]=d;g=f;break}else{k[g>>2]=h;g=f;break}}else{g=k[j>>2]|0;k[g+(i<<2)>>2]=d}while(0);i=i+1|0;d=k[y>>2]|0}while((i|0)<(d|0));if((d|0)>0){d=0;do{k[c+(d<<2)>>2]=(k[b+(d<<2)>>2]|0)+(k[g+(d<<2)>>2]|0);d=d+1|0;f=k[y>>2]|0}while((d|0)<(f|0));if((f|0)>0){f=a+20|0;d=0;do{g=c+(d<<2)|0;h=k[g>>2]|0;if((h|0)<=(k[l>>2]|0)){if((h|0)<(k[m>>2]|0))k[g>>2]=(k[f>>2]|0)+h}else k[g>>2]=h-(k[f>>2]|0);d=d+1|0}while((d|0)<(k[y>>2]|0))}}}q=a+56|0;g=k[q>>2]|0;f=k[g+4>>2]|0;h=k[g>>2]|0;u=f-h|0;r=u>>2;if((u|0)<=4){Tl(x);return 1}s=a+16|0;t=a+32|0;u=a+12|0;a=a+20|0;n=v+64|0;o=v+28|0;p=(e|0)>0;d=1;while(1){if(f-h>>2>>>0<=d>>>0){F=28;break}f=k[h+(d<<2)>>2]|0;m=$(d,e)|0;if((!((f|0)<0?1:(1<<(f&31)&k[(k[v>>2]|0)+(f>>>5<<2)>>2]|0)!=0)?(z=k[(k[(k[n>>2]|0)+12>>2]|0)+(f<<2)>>2]|0,(z|0)>=0):0)?(C=k[o>>2]|0,l=k[w>>2]|0,A=k[l+(k[C+(z<<2)>>2]<<2)>>2]|0,B=z+1|0,B=k[l+(k[C+((((B|0)%3|0|0)==0?z+-2|0:B)<<2)>>2]<<2)>>2]|0,C=k[l+(k[C+((((z>>>0)%3|0|0)==0?2:-1)+z<<2)>>2]<<2)>>2]|0,(A|0)<(d|0)&(B|0)<(d|0)&(C|0)<(d|0)):0){g=$(A,e)|0;h=$(B,e)|0;i=$(C,e)|0;if(p){f=0;do{k[x+(f<<2)>>2]=(k[c+(f+i<<2)>>2]|0)+(k[c+(f+h<<2)>>2]|0)-(k[c+(f+g<<2)>>2]|0);f=f+1|0}while((f|0)!=(e|0))}l=c+(m<<2)|0;if((k[y>>2]|0)>0){j=0;do{i=k[x+(j<<2)>>2]|0;f=k[s>>2]|0;do if((i|0)<=(f|0)){f=k[u>>2]|0;g=k[t>>2]|0;h=g+(j<<2)|0;if((i|0)<(f|0)){k[h>>2]=f;h=g;break}else{k[h>>2]=i;h=g;break}}else{h=k[t>>2]|0;k[h+(j<<2)>>2]=f}while(0);j=j+1|0;f=k[y>>2]|0}while((j|0)<(f|0));if((f|0)>0){f=0;do{k[l+(f<<2)>>2]=(k[b+(f+m<<2)>>2]|0)+(k[h+(f<<2)>>2]|0);f=f+1|0;g=k[y>>2]|0}while((f|0)<(g|0));if((g|0)>0){f=0;do{g=l+(f<<2)|0;h=k[g>>2]|0;if((h|0)<=(k[s>>2]|0)){if((h|0)<(k[u>>2]|0))k[g>>2]=(k[a>>2]|0)+h}else k[g>>2]=h-(k[a>>2]|0);f=f+1|0}while((f|0)<(k[y>>2]|0))}}}}else F=33;if((F|0)==33?(F=0,D=c+(($(d+-1|0,e)|0)<<2)|0,E=c+(m<<2)|0,(k[y>>2]|0)>0):0){j=0;do{i=k[D+(j<<2)>>2]|0;f=k[s>>2]|0;do if((i|0)<=(f|0)){f=k[u>>2]|0;g=k[t>>2]|0;h=g+(j<<2)|0;if((i|0)<(f|0)){k[h>>2]=f;h=g;break}else{k[h>>2]=i;h=g;break}}else{h=k[t>>2]|0;k[h+(j<<2)>>2]=f}while(0);j=j+1|0;f=k[y>>2]|0}while((j|0)<(f|0));if((f|0)>0){f=0;do{k[E+(f<<2)>>2]=(k[b+(f+m<<2)>>2]|0)+(k[h+(f<<2)>>2]|0);f=f+1|0;g=k[y>>2]|0}while((f|0)<(g|0));if((g|0)>0){f=0;do{g=E+(f<<2)|0;h=k[g>>2]|0;if((h|0)<=(k[s>>2]|0)){if((h|0)<(k[u>>2]|0))k[g>>2]=(k[a>>2]|0)+h}else k[g>>2]=h-(k[a>>2]|0);f=f+1|0}while((f|0)<(k[y>>2]|0))}}}d=d+1|0;if((d|0)>=(r|0)){F=25;break}f=k[q>>2]|0;g=f;h=k[f>>2]|0;f=k[f+4>>2]|0}if((F|0)==25){Tl(x);return 1}else if((F|0)==28)_k(g);return 0}function Zb(a,b,c,d){a=a|0;b=b|0;c=c|0;d=d|0;var e=Pa,f=0,g=0,h=Pa,i=0,j=0,l=Pa,m=Pa,n=Pa,p=0,q=Pa,s=Pa,t=Pa,u=Pa,v=Pa,w=Pa,x=0,y=0,z=0,A=0,B=0,C=0,D=Pa;C=r;r=r+48|0;z=C+24|0;x=C+12|0;y=C;g=a+24|0;f=k[b>>2]|0;b=f+1|0;if((f|0)>=0){b=((b|0)%3|0|0)==0?f+-2|0:b;f=f+(((f>>>0)%3|0|0)==0?2:-1)|0;if((b|0)<0)b=-1073741824;else b=k[(k[k[g>>2]>>2]|0)+(((b>>>0)/3|0)*12|0)+(((b>>>0)%3|0)<<2)>>2]|0;if((f|0)<0)f=-1073741824;else f=k[(k[k[g>>2]>>2]|0)+(((f>>>0)/3|0)*12|0)+(((f>>>0)%3|0)<<2)>>2]|0}else{b=-1073741824;f=-1073741824}g=k[a+28>>2]|0;i=k[g+4>>2]|0;j=k[g>>2]|0;if(i-j>>2>>>0<=b>>>0)_k(g);p=k[j+(b<<2)>>2]|0;if(i-j>>2>>>0<=f>>>0)_k(g);f=k[j+(f<<2)>>2]|0;b=(p|0)<(d|0);if(!(b&(f|0)<(d|0))){do if(b){i=a+48|0;b=k[i>>2]|0;g=$(b,p)|0}else{if((d|0)>0){i=a+48|0;b=k[i>>2]|0;g=$(b,d+-1|0)|0;break}g=a+48|0;if((k[g>>2]|0)<=0){r=C;return}f=k[a+44>>2]|0;b=0;do{k[f+(b<<2)>>2]=0;b=b+1|0}while((b|0)<(k[g>>2]|0));r=C;return}while(0);if((b|0)<=0){r=C;return}f=k[a+44>>2]|0;b=0;do{k[f+(b<<2)>>2]=k[c+(b+g<<2)>>2];b=b+1|0}while((b|0)<(k[i>>2]|0));r=C;return}b=a+48|0;j=k[b>>2]|0;i=$(j,p)|0;t=da(k[c+(i<<2)>>2]|0);u=da(k[c+(i+1<<2)>>2]|0);j=$(j,f)|0;v=da(k[c+(j<<2)>>2]|0);w=da(k[c+(j+1<<2)>>2]|0);if(!(v!=t|w!=u)){a=k[a+44>>2]|0;k[a>>2]=~~v;k[a+4>>2]=~~w;r=C;return}yf(z,a,d);yf(x,a,p);yf(y,a,f);q=da(o[y>>2]);l=da(o[x>>2]);q=da(q-l);s=da(o[y+4>>2]);m=da(o[x+4>>2]);s=da(s-m);h=da(o[y+8>>2]);e=da(o[x+8>>2]);h=da(h-e);l=da(da(o[z>>2])-l);m=da(da(o[z+4>>2])-m);e=da(da(o[z+8>>2])-e);n=da(da(da(da(q*q)+da(0.0))+da(s*s))+da(h*h));if(n>da(0.0)?1:(k[a+64>>2]|0)<258){D=da(da(da(da(da(q*l)+da(0.0))+da(s*m))+da(h*e))/n);q=da(l-da(q*D));s=da(m-da(s*D));e=da(e-da(h*D));h=D;e=da(P(da(da(da(e*e)+da(da(s*s)+da(da(q*q)+da(0.0))))/n)))}else{h=da(0.0);e=da(0.0)}m=da(v-t);l=da(w-u);D=da(t+da(m*h));m=da(m*e);w=da(u+da(l*h));l=da(l*e);h=da(D-l);e=da(w+m);l=da(D+l);m=da(w-m);b=$(k[b>>2]|0,d)|0;w=da(k[c+(b<<2)>>2]|0);D=da(k[c+(b+1<<2)>>2]|0);u=da(w-h);v=da(D-e);w=da(w-l);D=da(D-m);c=da(da(da(u*u)+da(0.0))+da(v*v))>2]|0;i=k[a+60>>2]|0;j=(g|0)==(i<<5|0);if(c){do if(j)if((g+1|0)<0)$k(b);else{A=i<<6;c=g+32&-32;ig(b,i<<5>>>0<1073741823?(A>>>0>>0?c:A):2147483647);A=k[f>>2]|0;break}else A=g;while(0);k[f>>2]=A+1;c=(k[b>>2]|0)+(A>>>5<<2)|0;k[c>>2]=k[c>>2]|1<<(A&31)}else{do if(j)if((g+1|0)<0)$k(b);else{B=i<<6;c=g+32&-32;ig(b,i<<5>>>0<1073741823?(B>>>0>>0?c:B):2147483647);B=k[f>>2]|0;break}else B=g;while(0);k[f>>2]=B+1;c=(k[b>>2]|0)+(B>>>5<<2)|0;k[c>>2]=k[c>>2]&~(1<<(B&31));h=l;e=m}c=~~+N(+(+h+.5));a=k[a+44>>2]|0;k[a>>2]=c;c=~~+N(+(+e+.5));k[a+4>>2]=c;r=C;return}function _b(a,b,c,d){a=a|0;b=b|0;c=c|0;d=d|0;var e=Pa,f=0,g=0,h=Pa,i=0,j=0,l=Pa,m=Pa,n=Pa,p=0,q=Pa,s=Pa,t=Pa,u=Pa,v=Pa,w=Pa,x=0,y=0,z=0,A=0,B=0,C=0,D=Pa;C=r;r=r+48|0;z=C+24|0;x=C+12|0;y=C;g=a+48|0;f=k[b>>2]|0;b=f+1|0;if((f|0)>=0){b=((b|0)%3|0|0)==0?f+-2|0:b;f=f+(((f>>>0)%3|0|0)==0?2:-1)|0;if((b|0)<0)b=-1073741824;else b=k[(k[k[g>>2]>>2]|0)+(((b>>>0)/3|0)*12|0)+(((b>>>0)%3|0)<<2)>>2]|0;if((f|0)<0)f=-1073741824;else f=k[(k[k[g>>2]>>2]|0)+(((f>>>0)/3|0)*12|0)+(((f>>>0)%3|0)<<2)>>2]|0}else{b=-1073741824;f=-1073741824}g=k[a+52>>2]|0;i=k[g+4>>2]|0;j=k[g>>2]|0;if(i-j>>2>>>0<=b>>>0)_k(g);p=k[j+(b<<2)>>2]|0;if(i-j>>2>>>0<=f>>>0)_k(g);f=k[j+(f<<2)>>2]|0;b=(p|0)<(d|0);if(!(b&(f|0)<(d|0))){do if(b){i=a+72|0;b=k[i>>2]|0;g=$(b,p)|0}else{if((d|0)>0){i=a+72|0;b=k[i>>2]|0;g=$(b,d+-1|0)|0;break}g=a+72|0;if((k[g>>2]|0)<=0){r=C;return}f=k[a+68>>2]|0;b=0;do{k[f+(b<<2)>>2]=0;b=b+1|0}while((b|0)<(k[g>>2]|0));r=C;return}while(0);if((b|0)<=0){r=C;return}f=k[a+68>>2]|0;b=0;do{k[f+(b<<2)>>2]=k[c+(b+g<<2)>>2];b=b+1|0}while((b|0)<(k[i>>2]|0));r=C;return}b=a+72|0;j=k[b>>2]|0;i=$(j,p)|0;t=da(k[c+(i<<2)>>2]|0);u=da(k[c+(i+1<<2)>>2]|0);j=$(j,f)|0;v=da(k[c+(j<<2)>>2]|0);w=da(k[c+(j+1<<2)>>2]|0);if(!(v!=t|w!=u)){a=k[a+68>>2]|0;k[a>>2]=~~v;k[a+4>>2]=~~w;r=C;return}zf(z,a,d);zf(x,a,p);zf(y,a,f);q=da(o[y>>2]);l=da(o[x>>2]);q=da(q-l);s=da(o[y+4>>2]);m=da(o[x+4>>2]);s=da(s-m);h=da(o[y+8>>2]);e=da(o[x+8>>2]);h=da(h-e);l=da(da(o[z>>2])-l);m=da(da(o[z+4>>2])-m);e=da(da(o[z+8>>2])-e);n=da(da(da(da(q*q)+da(0.0))+da(s*s))+da(h*h));if(n>da(0.0)?1:(k[a+88>>2]|0)<258){D=da(da(da(da(da(q*l)+da(0.0))+da(s*m))+da(h*e))/n);q=da(l-da(q*D));s=da(m-da(s*D));e=da(e-da(h*D));h=D;e=da(P(da(da(da(e*e)+da(da(s*s)+da(da(q*q)+da(0.0))))/n)))}else{h=da(0.0);e=da(0.0)}m=da(v-t);l=da(w-u);D=da(t+da(m*h));m=da(m*e);w=da(u+da(l*h));l=da(l*e);h=da(D-l);e=da(w+m);l=da(D+l);m=da(w-m);b=$(k[b>>2]|0,d)|0;w=da(k[c+(b<<2)>>2]|0);D=da(k[c+(b+1<<2)>>2]|0);u=da(w-h);v=da(D-e);w=da(w-l);D=da(D-m);c=da(da(da(u*u)+da(0.0))+da(v*v))>2]|0;i=k[a+84>>2]|0;j=(g|0)==(i<<5|0);if(c){do if(j)if((g+1|0)<0)$k(b);else{A=i<<6;c=g+32&-32;ig(b,i<<5>>>0<1073741823?(A>>>0>>0?c:A):2147483647);A=k[f>>2]|0;break}else A=g;while(0);k[f>>2]=A+1;c=(k[b>>2]|0)+(A>>>5<<2)|0;k[c>>2]=k[c>>2]|1<<(A&31)}else{do if(j)if((g+1|0)<0)$k(b);else{B=i<<6;c=g+32&-32;ig(b,i<<5>>>0<1073741823?(B>>>0>>0?c:B):2147483647);B=k[f>>2]|0;break}else B=g;while(0);k[f>>2]=B+1;c=(k[b>>2]|0)+(B>>>5<<2)|0;k[c>>2]=k[c>>2]&~(1<<(B&31));h=l;e=m}c=~~+N(+(+h+.5));a=k[a+68>>2]|0;k[a>>2]=c;c=~~+N(+(+e+.5));k[a+4>>2]=c;r=C;return}function $b(a,b,c){a=a|0;b=b|0;c=c|0;var d=0,e=0,f=0,g=0,h=0,j=0,l=0,m=0,n=0,o=0,p=0,q=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,B=0,C=0;C=r;r=r+16|0;x=C+8|0;y=C+4|0;z=C;A=a+64|0;d=k[A>>2]|0;if(((k[d+28>>2]|0)-(k[d+24>>2]|0)|0)<=0){r=C;return}w=b+80|0;t=b+84|0;u=a+52|0;v=c+84|0;j=c+68|0;l=a+56|0;m=a+60|0;n=a+12|0;o=a+28|0;p=a+40|0;q=a+44|0;s=a+48|0;f=0;h=0;a:while(1){b=k[(k[d+24>>2]|0)+(h<<2)>>2]|0;if((b|0)<0){c=f;b=d}else{g=f+1|0;c=(b>>>0)/3|0;d=k[w>>2]|0;if((c|0)>=(((k[t>>2]|0)-d|0)/12|0|0)){B=6;break}c=k[d+(c*12|0)+(((b>>>0)%3|0)<<2)>>2]|0;if(!(i[v>>0]|0))c=k[(k[j>>2]|0)+(c<<2)>>2]|0;k[x>>2]=c;d=k[l>>2]|0;if(d>>>0<(k[m>>2]|0)>>>0){k[d>>2]=c;k[l>>2]=d+4}else Ig(u,x);k[x>>2]=b;k[y>>2]=0;b:do if(k[(k[n>>2]|0)+(h>>>5<<2)>>2]&1<<(h&31)){c=b+1|0;c=((c|0)%3|0|0)==0?b+-2|0:c;e=k[a>>2]|0;if(!(1<<(c&31)&k[e+(c>>>5<<2)>>2])){if((c|0)>=0){c=k[(k[(k[A>>2]|0)+12>>2]|0)+(c<<2)>>2]|0;d=c+1|0;if((c|0)>=0){c=((d|0)%3|0|0)==0?c+-2|0:d;k[y>>2]=c;if((c|0)>-1)b=c;else break;while(1){k[x>>2]=b;c=b+1|0;c=((c|0)%3|0|0)==0?b+-2|0:c;if(1<<(c&31)&k[e+(c>>>5<<2)>>2]|0){c=-1073741824;break}if((c|0)<0)break;c=k[(k[(k[A>>2]|0)+12>>2]|0)+(c<<2)>>2]|0;d=c+1|0;if((c|0)<0)break;c=((d|0)%3|0|0)==0?c+-2|0:d;k[y>>2]=c;if((c|0)>-1)b=c;else break b}k[y>>2]=c;break}}}else c=-1073741824;k[y>>2]=c}while(0);k[(k[o>>2]|0)+(b<<2)>>2]=f;b=k[q>>2]|0;if((b|0)==(k[s>>2]|0))Ig(p,x);else{k[b>>2]=k[x>>2];k[q>>2]=b+4}b=k[A>>2]|0;d=k[x>>2]|0;c:do if((d|0)>=0){c=(((d>>>0)%3|0|0)==0?2:-1)+d|0;if((c|0)>=0){c=k[(k[b+12>>2]|0)+(c<<2)>>2]|0;if((c|0)>=0){c=c+(((c>>>0)%3|0|0)==0?2:-1)|0;k[y>>2]=c;if((c|0)>-1&(c|0)!=(d|0)){b=f;e=c;while(1){f=e+1|0;f=((f|0)%3|0|0)==0?e+-2|0:f;do if(k[(k[a>>2]|0)+(f>>>5<<2)>>2]&1<<(f&31)){d=g+1|0;b=(e|0)/3|0;if((e|0)<=-3){B=33;break a}c=k[w>>2]|0;if((b|0)>=(((k[t>>2]|0)-c|0)/12|0|0)){B=35;break a}b=k[c+(b*12|0)+(((e|0)%3|0)<<2)>>2]|0;if(!(i[v>>0]|0))b=k[(k[j>>2]|0)+(b<<2)>>2]|0;k[z>>2]=b;c=k[l>>2]|0;if(c>>>0<(k[m>>2]|0)>>>0){k[c>>2]=b;k[l>>2]=c+4}else Ig(u,z);b=k[q>>2]|0;if((b|0)==(k[s>>2]|0)){Ig(p,y);f=d;d=g;break}else{k[b>>2]=k[y>>2];k[q>>2]=b+4;f=d;d=g;break}}else{f=g;d=b}while(0);k[(k[o>>2]|0)+(k[y>>2]<<2)>>2]=d;b=k[A>>2]|0;c=k[y>>2]|0;if((c|0)<0)break;c=(((c>>>0)%3|0|0)==0?2:-1)+c|0;if((c|0)<0)break;c=k[(k[b+12>>2]|0)+(c<<2)>>2]|0;if((c|0)<0)break;e=c+(((c>>>0)%3|0|0)==0?2:-1)|0;k[y>>2]=e;if(!((e|0)>-1?(e|0)!=(k[x>>2]|0):0)){c=f;break c}else{g=f;b=d}}k[y>>2]=c;c=f}else c=g}else B=30}else B=30}else{c=d;B=30}while(0);if((B|0)==30){B=0;k[y>>2]=c;c=g}}h=h+1|0;if((h|0)>=((k[b+28>>2]|0)-(k[b+24>>2]|0)>>2|0)){B=3;break}else{f=c;d=b}}if((B|0)==3){r=C;return}else if((B|0)==6)Ka(13330,13311,64,13325);else if((B|0)==33)Ka(13286,13311,63,13325);else if((B|0)==35)Ka(13330,13311,64,13325)}function ac(a,b,c,d){a=a|0;b=b|0;c=c|0;d=d|0;var e=Pa,f=0,g=0,h=Pa,i=0,j=0,l=Pa,m=Pa,n=Pa,p=0,q=Pa,s=Pa,t=Pa,u=Pa,v=Pa,w=Pa,x=0,y=0,z=0,A=0,B=0,C=0,D=Pa;C=r;r=r+48|0;z=C+24|0;x=C+12|0;y=C;i=a+24|0;f=k[b>>2]|0;b=f+1|0;do if((f|0)>=0){b=((b|0)%3|0|0)==0?f+-2|0:b;if(!((f>>>0)%3|0)){g=f+2|0;break}else{g=f+-1|0;break}}else{g=f;b=f}while(0);f=k[(k[i>>2]|0)+28>>2]|0;b=k[f+(b<<2)>>2]|0;f=k[f+(g<<2)>>2]|0;g=k[a+28>>2]|0;i=k[g+4>>2]|0;j=k[g>>2]|0;if(i-j>>2>>>0<=b>>>0)_k(g);p=k[j+(b<<2)>>2]|0;if(i-j>>2>>>0<=f>>>0)_k(g);f=k[j+(f<<2)>>2]|0;b=(p|0)<(d|0);if(!(b&(f|0)<(d|0))){do if(b){i=a+48|0;b=k[i>>2]|0;g=$(b,p)|0}else{if((d|0)>0){i=a+48|0;b=k[i>>2]|0;g=$(b,d+-1|0)|0;break}g=a+48|0;if((k[g>>2]|0)<=0){r=C;return}f=k[a+44>>2]|0;b=0;do{k[f+(b<<2)>>2]=0;b=b+1|0}while((b|0)<(k[g>>2]|0));r=C;return}while(0);if((b|0)<=0){r=C;return}f=k[a+44>>2]|0;b=0;do{k[f+(b<<2)>>2]=k[c+(b+g<<2)>>2];b=b+1|0}while((b|0)<(k[i>>2]|0));r=C;return}b=a+48|0;j=k[b>>2]|0;i=$(j,p)|0;t=da(k[c+(i<<2)>>2]|0);u=da(k[c+(i+1<<2)>>2]|0);j=$(j,f)|0;v=da(k[c+(j<<2)>>2]|0);w=da(k[c+(j+1<<2)>>2]|0);if(!(v!=t|w!=u)){a=k[a+44>>2]|0;k[a>>2]=~~v;k[a+4>>2]=~~w;r=C;return}yf(z,a,d);yf(x,a,p);yf(y,a,f);q=da(o[y>>2]);l=da(o[x>>2]);q=da(q-l);s=da(o[y+4>>2]);m=da(o[x+4>>2]);s=da(s-m);h=da(o[y+8>>2]);e=da(o[x+8>>2]);h=da(h-e);l=da(da(o[z>>2])-l);m=da(da(o[z+4>>2])-m);e=da(da(o[z+8>>2])-e);n=da(da(da(da(q*q)+da(0.0))+da(s*s))+da(h*h));if(n>da(0.0)?1:(k[a+64>>2]|0)<258){D=da(da(da(da(da(q*l)+da(0.0))+da(s*m))+da(h*e))/n);q=da(l-da(q*D));s=da(m-da(s*D));e=da(e-da(h*D));h=D;e=da(P(da(da(da(e*e)+da(da(s*s)+da(da(q*q)+da(0.0))))/n)))}else{h=da(0.0);e=da(0.0)}m=da(v-t);l=da(w-u);D=da(t+da(m*h));m=da(m*e);w=da(u+da(l*h));l=da(l*e);h=da(D-l);e=da(w+m);l=da(D+l);m=da(w-m);b=$(k[b>>2]|0,d)|0;w=da(k[c+(b<<2)>>2]|0);D=da(k[c+(b+1<<2)>>2]|0);u=da(w-h);v=da(D-e);w=da(w-l);D=da(D-m);c=da(da(da(u*u)+da(0.0))+da(v*v))>2]|0;i=k[a+60>>2]|0;j=(g|0)==(i<<5|0);if(c){do if(j)if((g+1|0)<0)$k(b);else{A=i<<6;c=g+32&-32;ig(b,i<<5>>>0<1073741823?(A>>>0>>0?c:A):2147483647);A=k[f>>2]|0;break}else A=g;while(0);k[f>>2]=A+1;c=(k[b>>2]|0)+(A>>>5<<2)|0;k[c>>2]=k[c>>2]|1<<(A&31)}else{do if(j)if((g+1|0)<0)$k(b);else{B=i<<6;c=g+32&-32;ig(b,i<<5>>>0<1073741823?(B>>>0>>0?c:B):2147483647);B=k[f>>2]|0;break}else B=g;while(0);k[f>>2]=B+1;c=(k[b>>2]|0)+(B>>>5<<2)|0;k[c>>2]=k[c>>2]&~(1<<(B&31));h=l;e=m}c=~~+N(+(+h+.5));a=k[a+44>>2]|0;k[a>>2]=c;c=~~+N(+(+e+.5));k[a+4>>2]=c;r=C;return}function bc(a,b,c,d){a=a|0;b=b|0;c=c|0;d=d|0;var e=Pa,f=0,g=0,h=Pa,i=0,j=0,l=Pa,m=Pa,n=Pa,p=0,q=Pa,s=Pa,t=Pa,u=Pa,v=Pa,w=Pa,x=0,y=0,z=0,A=0,B=0,C=0,D=Pa;C=r;r=r+48|0;z=C+24|0;x=C+12|0;y=C;i=a+48|0;f=k[b>>2]|0;b=f+1|0;do if((f|0)>=0){b=((b|0)%3|0|0)==0?f+-2|0:b;if(!((f>>>0)%3|0)){g=f+2|0;break}else{g=f+-1|0;break}}else{g=f;b=f}while(0);f=k[(k[i>>2]|0)+28>>2]|0;b=k[f+(b<<2)>>2]|0;f=k[f+(g<<2)>>2]|0;g=k[a+52>>2]|0;i=k[g+4>>2]|0;j=k[g>>2]|0;if(i-j>>2>>>0<=b>>>0)_k(g);p=k[j+(b<<2)>>2]|0;if(i-j>>2>>>0<=f>>>0)_k(g);f=k[j+(f<<2)>>2]|0;b=(p|0)<(d|0);if(!(b&(f|0)<(d|0))){do if(b){i=a+72|0;b=k[i>>2]|0;g=$(b,p)|0}else{if((d|0)>0){i=a+72|0;b=k[i>>2]|0;g=$(b,d+-1|0)|0;break}g=a+72|0;if((k[g>>2]|0)<=0){r=C;return}f=k[a+68>>2]|0;b=0;do{k[f+(b<<2)>>2]=0;b=b+1|0}while((b|0)<(k[g>>2]|0));r=C;return}while(0);if((b|0)<=0){r=C;return}f=k[a+68>>2]|0;b=0;do{k[f+(b<<2)>>2]=k[c+(b+g<<2)>>2];b=b+1|0}while((b|0)<(k[i>>2]|0));r=C;return}b=a+72|0;j=k[b>>2]|0;i=$(j,p)|0;t=da(k[c+(i<<2)>>2]|0);u=da(k[c+(i+1<<2)>>2]|0);j=$(j,f)|0;v=da(k[c+(j<<2)>>2]|0);w=da(k[c+(j+1<<2)>>2]|0);if(!(v!=t|w!=u)){a=k[a+68>>2]|0;k[a>>2]=~~v;k[a+4>>2]=~~w;r=C;return}zf(z,a,d);zf(x,a,p);zf(y,a,f);q=da(o[y>>2]);l=da(o[x>>2]);q=da(q-l);s=da(o[y+4>>2]);m=da(o[x+4>>2]);s=da(s-m);h=da(o[y+8>>2]);e=da(o[x+8>>2]);h=da(h-e);l=da(da(o[z>>2])-l);m=da(da(o[z+4>>2])-m);e=da(da(o[z+8>>2])-e);n=da(da(da(da(q*q)+da(0.0))+da(s*s))+da(h*h));if(n>da(0.0)?1:(k[a+88>>2]|0)<258){D=da(da(da(da(da(q*l)+da(0.0))+da(s*m))+da(h*e))/n);q=da(l-da(q*D));s=da(m-da(s*D));e=da(e-da(h*D));h=D;e=da(P(da(da(da(e*e)+da(da(s*s)+da(da(q*q)+da(0.0))))/n)))}else{h=da(0.0);e=da(0.0)}m=da(v-t);l=da(w-u);D=da(t+da(m*h));m=da(m*e);w=da(u+da(l*h));l=da(l*e);h=da(D-l);e=da(w+m);l=da(D+l);m=da(w-m);b=$(k[b>>2]|0,d)|0;w=da(k[c+(b<<2)>>2]|0);D=da(k[c+(b+1<<2)>>2]|0);u=da(w-h);v=da(D-e);w=da(w-l);D=da(D-m);c=da(da(da(u*u)+da(0.0))+da(v*v))>2]|0;i=k[a+84>>2]|0;j=(g|0)==(i<<5|0);if(c){do if(j)if((g+1|0)<0)$k(b);else{A=i<<6;c=g+32&-32;ig(b,i<<5>>>0<1073741823?(A>>>0>>0?c:A):2147483647);A=k[f>>2]|0;break}else A=g;while(0);k[f>>2]=A+1;c=(k[b>>2]|0)+(A>>>5<<2)|0;k[c>>2]=k[c>>2]|1<<(A&31)}else{do if(j)if((g+1|0)<0)$k(b);else{B=i<<6;c=g+32&-32;ig(b,i<<5>>>0<1073741823?(B>>>0>>0?c:B):2147483647);B=k[f>>2]|0;break}else B=g;while(0);k[f>>2]=B+1;c=(k[b>>2]|0)+(B>>>5<<2)|0;k[c>>2]=k[c>>2]&~(1<<(B&31));h=l;e=m}c=~~+N(+(+h+.5));a=k[a+68>>2]|0;k[a>>2]=c;c=~~+N(+(+e+.5));k[a+4>>2]=c;r=C;return}function cc(a,b,c,d){a=a|0;b=b|0;c=c|0;d=d|0;var e=0,f=0,g=0,h=0,j=0,m=0,n=0,o=0,p=0,q=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,B=0,C=0,D=0,E=0,F=0;F=r;r=r+64|0;E=F;p=E;q=p+40|0;do{k[p>>2]=0;p=p+4|0}while((p|0)<(q|0));a:do if(((Wd(E,c)|0?(e=c+8|0,o=k[e>>2]|0,e=k[e+4>>2]|0,f=c+16|0,h=f,g=k[h>>2]|0,h=mk(g|0,k[h+4>>2]|0,8,0)|0,j=M,!((e|0)<(j|0)|(e|0)==(j|0)&o>>>0>>0)):0)?(m=k[c>>2]|0,n=m+g|0,u=n,u=l[u>>0]|l[u+1>>0]<<8|l[u+2>>0]<<16|l[u+3>>0]<<24,n=n+4|0,n=l[n>>0]|l[n+1>>0]<<8|l[n+2>>0]<<16|l[n+3>>0]<<24,D=f,k[D>>2]=h,k[D+4>>2]=j,D=Zj(o|0,e|0,h|0,j|0)|0,C=M,!(n>>>0>C>>>0|(n|0)==(C|0)&u>>>0>D>>>0)):0)?(v=m+h|0,C=mk(u|0,n|0,h|0,j|0)|0,D=f,k[D>>2]=C,k[D+4>>2]=M,(u|0)>=1):0){D=E+40|0;k[D>>2]=v;e=u+-1|0;f=v+e|0;switch((l[f>>0]|0)>>>6&3){case 0:{k[E+44>>2]=e;t=l[f>>0]&63;s=E+48|0;k[s>>2]=t;break}case 1:{if((u|0)<2){j=0;break a}k[E+44>>2]=u+-2;t=v+u+-2|0;t=l[t+1>>0]<<8&16128|l[t>>0];s=E+48|0;k[s>>2]=t;break}case 2:{if((u|0)<3){j=0;break a}k[E+44>>2]=u+-3;t=v+u+-3|0;t=l[t+1>>0]<<8|l[t>>0]|l[t+2>>0]<<16&4128768;s=E+48|0;k[s>>2]=t;break}case 3:{k[E+44>>2]=u+-4;t=v+u+-4|0;t=l[t+2>>0]<<16|l[t+3>>0]<<24&1056964608|l[t+1>>0]<<8|l[t>>0];s=E+48|0;k[s>>2]=t;break}default:{}}C=t+16384|0;k[s>>2]=C;if(C>>>0<=4194303){e=(a|0)>0;b:do if(e){if(!(k[E+12>>2]|0)){j=0;break a}xf(c,0,0)|0;if(e){u=E+48|0;v=E+44|0;w=E+16|0;x=E+28|0;y=(b|0)>0;C=c+36|0;z=c+32|0;A=c+24|0;B=c+28|0;t=0;e=0;f=k[u>>2]|0;while(1){c:do if(f>>>0<16384){g=k[v>>2]|0;do{if((g|0)<=0)break c;g=g+-1|0;k[v>>2]=g;f=l[(k[D>>2]|0)+g>>0]|f<<8;k[u>>2]=f}while(f>>>0<16384)}while(0);p=f&4095;s=k[(k[w>>2]|0)+(p<<2)>>2]|0;q=k[x>>2]|0;f=($(k[q+(s<<3)>>2]|0,f>>>12)|0)+p-(k[q+(s<<3)+4>>2]|0)|0;k[u>>2]=f;if(y){q=(s|0)>0;if((s|0)<=-1){e=33;break}if((s|0)<33)p=0;else{e=32;break}while(1){if(!(i[C>>0]|0)){j=0;break a}if(q){n=k[A>>2]|0;o=k[B>>2]|0;g=0;m=0;j=k[z>>2]|0;do{h=n+(j>>>3)|0;if(h>>>0>>0){h=(l[h>>0]|0)>>>(j&7)&1;j=j+1|0;k[z>>2]=j}else h=0;g=h<>2]=g;p=p+1|0;if((p|0)>=(b|0)){e=h;break}else e=h}}t=t+b|0;if((t|0)>=(a|0))break b}if((e|0)==32){if(!(i[C>>0]|0)){j=0;break a}Ka(6502,6475,113,6494)}else if((e|0)==33){if(!(i[C>>0]|0)){j=0;break a}Ka(6460,6475,112,6494)}}}else xf(c,0,0)|0;while(0);Qi(c);j=1}else j=0}else j=0;while(0);e=k[E+28>>2]|0;f=e;if(e|0){g=E+32|0;h=k[g>>2]|0;if((h|0)!=(e|0))k[g>>2]=h+(~((h+-8-f|0)>>>3)<<3);Vl(e)}e=k[E+16>>2]|0;f=e;if(e|0){g=E+20|0;h=k[g>>2]|0;if((h|0)!=(e|0))k[g>>2]=h+(~((h+-4-f|0)>>>2)<<2);Vl(e)}g=k[E>>2]|0;if(!g){r=F;return j|0}e=E+4|0;f=k[e>>2]|0;if((f|0)!=(g|0))k[e>>2]=f+(~((f+-4-g|0)>>>2)<<2);Vl(g);r=F;return j|0}function dc(a,b){a=a|0;b=b|0;var c=0,d=0,e=0,f=0,g=0,h=0,j=0,l=0,m=0,n=0,o=0,p=0,q=0,s=0,t=0,u=0,v=0,w=0,x=0;x=r;r=r+32|0;s=x;t=x+24|0;o=x+28|0;u=x+12|0;p=x+8|0;v=k[a>>2]|0;w=v+8|0;c=k[v>>2]|0;v=k[v+4>>2]|0;w=mk(c|0,v|0,k[w>>2]|0,k[w+4>>2]|0)|0;m=M;m=mk((w|0)==0&(m|0)==0&1|0,0,w|0,m|0)|0;m=~~((+(c>>>0)+4294967296.0*+(v>>>0))/(+(m>>>0)+4294967296.0*+(M>>>0))*256.0+.5)>>>0;m=m>>>0<255?m:255;i[o>>0]=((m&255)<<24>>24==0&1)+m;m=a+12|0;v=a+16|0;c=((k[v>>2]|0)-(k[m>>2]|0)<<1)+64|0;k[u>>2]=0;w=u+4|0;k[w>>2]=0;k[u+8>>2]=0;if(!c)n=0;else{if((c|0)<0)$k(u);d=vj(c)|0;k[w>>2]=d;k[u>>2]=d;k[u+8>>2]=d+c;do{i[d>>0]=0;d=(k[w>>2]|0)+1|0;k[w>>2]=d;c=c+-1|0}while((c|0)!=0);n=k[u>>2]|0}q=a+28|0;c=(k[q>>2]|0)+-1|0;if((c|0)>-1){j=a+24|0;e=4096;d=0;do{h=i[o>>0]|0;f=256-(h&255)|0;g=(k[j>>2]&1<>>0>=h<<12>>>0){i[n+d>>0]=e;d=d+1|0;e=e>>>8}sj(k[1040+(h<<3)>>2]|0,0,e|0,0)|0;e=e+(g?0:f&255)+($((M+e|0)>>>(k[1040+(h<<3)+4>>2]|0),256-h|0)|0)|0;c=c+-1|0}while((c|0)>-1);c=e}else{c=4096;d=0}e=k[v>>2]|0;if((e|0)==(k[m>>2]|0))f=c;else{do{e=e+-4|0;l=k[e>>2]|0;j=31;while(1){h=i[o>>0]|0;f=256-(h&255)|0;g=(1<>>0>=h<<12>>>0){i[n+d>>0]=c;d=d+1|0;c=c>>>8}sj(k[1040+(h<<3)>>2]|0,0,c|0,0)|0;c=c+(g?0:f&255)+($((M+c|0)>>>(k[1040+(h<<3)+4>>2]|0),256-h|0)|0)|0;if((j|0)<=0)break;else j=j+-1|0}}while((e|0)!=(k[m>>2]|0));f=c}if(f>>>0<=4095)Ka(6368,6398,132,6411);if(f>>>0>=1048576)Ka(6425,6398,133,6411);e=f+-4096|0;do if(e>>>0>=64){c=n+d|0;if(e>>>0<16384){f=f+12288|0;i[c>>0]=f;i[c+1>>0]=f>>>8;f=d+2|0;break}else{f=f+8384512|0;i[c>>0]=f;i[c+1>>0]=f>>>8;i[c+2>>0]=f>>>16;f=d+3|0;break}}else{i[n+d>>0]=e;f=d+1|0}while(0);c=b+16|0;e=c;d=k[e>>2]|0;e=k[e+4>>2]|0;if(!((e|0)>0|(e|0)==0&d>>>0>0)){k[t>>2]=k[b+4>>2];k[s>>2]=k[t>>2];he(b,s,o,o+1|0)|0;d=c;e=k[d+4>>2]|0;d=k[d>>2]|0}k[p>>2]=f;if(!((e|0)>0|(e|0)==0&d>>>0>0)){k[t>>2]=k[b+4>>2];k[s>>2]=k[t>>2];he(b,s,p,p+4|0)|0;d=c;e=k[d+4>>2]|0;d=k[d>>2]|0}c=k[u>>2]|0;if(!((e|0)>0|(e|0)==0&d>>>0>0)){k[t>>2]=k[b+4>>2];k[s>>2]=k[t>>2];he(b,s,c,c+f|0)|0}c=s;k[c>>2]=0;k[c+4>>2]=0;Ke(a,2,s);c=k[a+12>>2]|0;d=k[v>>2]|0;if((d|0)!=(c|0))k[v>>2]=d+(~((d+-4-c|0)>>>2)<<2);k[a+24>>2]=0;k[q>>2]=0;c=k[u>>2]|0;if(!c){r=x;return}if((k[w>>2]|0)!=(c|0))k[w>>2]=c;Vl(c);r=x;return}function ec(a,b,c,d){a=a|0;b=b|0;c=c|0;d=d|0;var e=0,f=0,g=Pa,h=0,i=Pa,j=0,l=Pa,m=Pa,n=Pa,p=Pa,q=Pa,s=0,t=Pa,u=Pa,v=Pa,w=Pa,x=0,y=0,z=0,A=0,B=Pa;A=r;r=r+48|0;z=A+24|0;x=A+12|0;y=A;f=a+24|0;e=k[b>>2]|0;b=e+1|0;if((e|0)>=0){b=((b|0)%3|0|0)==0?e+-2|0:b;e=e+(((e>>>0)%3|0|0)==0?2:-1)|0;if((b|0)<0)b=-1073741824;else b=k[(k[k[f>>2]>>2]|0)+(((b>>>0)/3|0)*12|0)+(((b>>>0)%3|0)<<2)>>2]|0;if((e|0)<0)j=-1073741824;else j=k[(k[k[f>>2]>>2]|0)+(((e>>>0)/3|0)*12|0)+(((e>>>0)%3|0)<<2)>>2]|0}else{j=-1073741824;b=-1073741824}e=k[a+28>>2]|0;f=k[e+4>>2]|0;h=k[e>>2]|0;if(f-h>>2>>>0<=b>>>0)_k(e);s=k[h+(b<<2)>>2]|0;if(f-h>>2>>>0<=j>>>0)_k(e);e=k[h+(j<<2)>>2]|0;b=(s|0)<(d|0);if(b&(e|0)<(d|0)){j=k[a+48>>2]|0;h=$(j,s)|0;u=da(k[c+(h<<2)>>2]|0);v=da(k[c+(h+1<<2)>>2]|0);j=$(j,e)|0;w=da(k[c+(j<<2)>>2]|0);t=da(k[c+(j+1<<2)>>2]|0);if(!(w!=u|t!=v)){a=k[a+44>>2]|0;k[a>>2]=~~w;k[a+4>>2]=~~t;r=A;return}yf(z,a,d);yf(x,a,s);yf(y,a,e);p=da(o[y>>2]);l=da(o[x>>2]);p=da(p-l);q=da(o[y+4>>2]);m=da(o[x+4>>2]);q=da(q-m);i=da(o[y+8>>2]);g=da(o[x+8>>2]);i=da(i-g);l=da(da(o[z>>2])-l);m=da(da(o[z+4>>2])-m);g=da(da(o[z+8>>2])-g);n=da(da(da(da(p*p)+da(0.0))+da(q*q))+da(i*i));if(n>da(0.0)?1:(k[a+64>>2]|0)<258){B=da(da(da(da(da(p*l)+da(0.0))+da(q*m))+da(i*g))/n);p=da(l-da(p*B));q=da(m-da(q*B));g=da(g-da(i*B));i=B;g=da(P(da(da(da(g*g)+da(da(q*q)+da(da(p*p)+da(0.0))))/n)))}else{i=da(0.0);g=da(0.0)}B=da(w-u);w=da(t-v);t=da(u+da(B*i));B=da(B*g);u=da(v+da(w*i));v=da(w*g);c=a+56|0;y=(k[c>>2]|0)+-1|0;z=(1<<(y&31)&k[(k[a+52>>2]|0)+(y>>>5<<2)>>2]|0)==0;k[c>>2]=y;w=da(-v);w=da(t+(z?v:w));v=da(-B);B=da(u+(z?v:B));z=~~+N(+(+w+.5));a=k[a+44>>2]|0;k[a>>2]=z;z=~~+N(+(+B+.5));k[a+4>>2]=z;r=A;return}do if(b){h=a+48|0;b=k[h>>2]|0;f=$(b,s)|0}else{if((d|0)>0){h=a+48|0;b=k[h>>2]|0;f=$(b,d+-1|0)|0;break}f=a+48|0;if((k[f>>2]|0)<=0){r=A;return}e=k[a+44>>2]|0;b=0;do{k[e+(b<<2)>>2]=0;b=b+1|0}while((b|0)<(k[f>>2]|0));r=A;return}while(0);if((b|0)<=0){r=A;return}e=k[a+44>>2]|0;b=0;do{k[e+(b<<2)>>2]=k[c+(b+f<<2)>>2];b=b+1|0}while((b|0)<(k[h>>2]|0));r=A;return}function fc(a,b,c){a=a|0;b=b|0;c=c|0;var d=0,e=0,f=0,g=0,h=0,i=0,j=0,l=0,m=0,n=0,o=0,p=0,q=0,s=0,t=0,u=0,v=0,w=0;v=r;r=r+16|0;q=v+8|0;s=v+4|0;t=v;u=a+64|0;b=k[u>>2]|0;if(((k[b+28>>2]|0)-(k[b+24>>2]|0)|0)<=0){r=v;return}h=a+52|0;i=a+56|0;j=a+60|0;l=a+12|0;m=a+28|0;n=a+40|0;o=a+44|0;p=a+48|0;c=0;g=0;do{e=k[(k[b+24>>2]|0)+(g<<2)>>2]|0;if((e|0)>=0){d=c+1|0;k[q>>2]=c;b=k[i>>2]|0;if((b|0)==(k[j>>2]|0))Ig(h,q);else{k[b>>2]=c;k[i>>2]=b+4}k[s>>2]=e;k[t>>2]=0;a:do if(!(k[(k[l>>2]|0)+(g>>>5<<2)>>2]&1<<(g&31)))b=e;else{b=e+1|0;b=((b|0)%3|0|0)==0?e+-2|0:b;f=k[a>>2]|0;if(!(1<<(b&31)&k[f+(b>>>5<<2)>>2])){if((b|0)>=0){b=k[(k[(k[u>>2]|0)+12>>2]|0)+(b<<2)>>2]|0;c=b+1|0;if((b|0)>=0){b=((c|0)%3|0|0)==0?b+-2|0:c;k[t>>2]=b;if((b|0)<=-1){b=e;break}while(1){k[s>>2]=b;c=b+1|0;c=((c|0)%3|0|0)==0?b+-2|0:c;if(1<<(c&31)&k[f+(c>>>5<<2)>>2]|0){c=-1073741824;break}if((c|0)<0)break;c=k[(k[(k[u>>2]|0)+12>>2]|0)+(c<<2)>>2]|0;e=c+1|0;if((c|0)<0)break;c=((e|0)%3|0|0)==0?c+-2|0:e;k[t>>2]=c;if((c|0)>-1)b=c;else break a}k[t>>2]=c;break}}}else b=-1073741824;k[t>>2]=b;b=e}while(0);k[(k[m>>2]|0)+(b<<2)>>2]=k[q>>2];b=k[o>>2]|0;if((b|0)==(k[p>>2]|0))Ig(n,s);else{k[b>>2]=k[s>>2];k[o>>2]=b+4}b=k[u>>2]|0;e=k[s>>2]|0;b:do if((e|0)>=0){c=(((e>>>0)%3|0|0)==0?2:-1)+e|0;if((c|0)>=0){c=k[(k[b+12>>2]|0)+(c<<2)>>2]|0;if((c|0)>=0){c=c+(((c>>>0)%3|0|0)==0?2:-1)|0;k[t>>2]=c;if((c|0)>-1&(c|0)!=(e|0)){while(1){f=c+1|0;f=((f|0)%3|0|0)==0?c+-2|0:f;do if(k[(k[a>>2]|0)+(f>>>5<<2)>>2]&1<<(f&31)){c=d+1|0;k[q>>2]=d;b=k[i>>2]|0;if((b|0)==(k[j>>2]|0))Ig(h,q);else{k[b>>2]=d;k[i>>2]=b+4}b=k[o>>2]|0;if((b|0)==(k[p>>2]|0)){Ig(n,t);d=c;break}else{k[b>>2]=k[t>>2];k[o>>2]=b+4;d=c;break}}while(0);k[(k[m>>2]|0)+(k[t>>2]<<2)>>2]=k[q>>2];b=k[u>>2]|0;c=k[t>>2]|0;if((c|0)<0)break;c=(((c>>>0)%3|0|0)==0?2:-1)+c|0;if((c|0)<0)break;c=k[(k[b+12>>2]|0)+(c<<2)>>2]|0;if((c|0)<0)break;c=c+(((c>>>0)%3|0|0)==0?2:-1)|0;k[t>>2]=c;if(!((c|0)>-1?(c|0)!=(k[s>>2]|0):0)){c=d;break b}}k[t>>2]=c;c=d}else c=d}else w=26}else w=26}else{c=e;w=26}while(0);if((w|0)==26){w=0;k[t>>2]=c;c=d}}g=g+1|0}while((g|0)<((k[b+28>>2]|0)-(k[b+24>>2]|0)>>2|0));r=v;return}function gc(a,b,c,d){a=a|0;b=b|0;c=c|0;d=d|0;var e=0,f=0,g=Pa,h=0,i=Pa,j=0,l=Pa,m=Pa,n=Pa,p=Pa,q=Pa,s=0,t=Pa,u=Pa,v=Pa,w=Pa,x=0,y=0,z=0,A=0,B=Pa;A=r;r=r+48|0;z=A+24|0;x=A+12|0;y=A;f=a+48|0;e=k[b>>2]|0;b=e+1|0;if((e|0)>=0){b=((b|0)%3|0|0)==0?e+-2|0:b;e=e+(((e>>>0)%3|0|0)==0?2:-1)|0;if((b|0)<0)b=-1073741824;else b=k[(k[k[f>>2]>>2]|0)+(((b>>>0)/3|0)*12|0)+(((b>>>0)%3|0)<<2)>>2]|0;if((e|0)<0)j=-1073741824;else j=k[(k[k[f>>2]>>2]|0)+(((e>>>0)/3|0)*12|0)+(((e>>>0)%3|0)<<2)>>2]|0}else{j=-1073741824;b=-1073741824}e=k[a+52>>2]|0;f=k[e+4>>2]|0;h=k[e>>2]|0;if(f-h>>2>>>0<=b>>>0)_k(e);s=k[h+(b<<2)>>2]|0;if(f-h>>2>>>0<=j>>>0)_k(e);e=k[h+(j<<2)>>2]|0;b=(s|0)<(d|0);if(b&(e|0)<(d|0)){j=k[a+72>>2]|0;h=$(j,s)|0;u=da(k[c+(h<<2)>>2]|0);v=da(k[c+(h+1<<2)>>2]|0);j=$(j,e)|0;w=da(k[c+(j<<2)>>2]|0);t=da(k[c+(j+1<<2)>>2]|0);if(!(w!=u|t!=v)){a=k[a+68>>2]|0;k[a>>2]=~~w;k[a+4>>2]=~~t;r=A;return}zf(z,a,d);zf(x,a,s);zf(y,a,e);p=da(o[y>>2]);l=da(o[x>>2]);p=da(p-l);q=da(o[y+4>>2]);m=da(o[x+4>>2]);q=da(q-m);i=da(o[y+8>>2]);g=da(o[x+8>>2]);i=da(i-g);l=da(da(o[z>>2])-l);m=da(da(o[z+4>>2])-m);g=da(da(o[z+8>>2])-g);n=da(da(da(da(p*p)+da(0.0))+da(q*q))+da(i*i));if(n>da(0.0)?1:(k[a+88>>2]|0)<258){B=da(da(da(da(da(p*l)+da(0.0))+da(q*m))+da(i*g))/n);p=da(l-da(p*B));q=da(m-da(q*B));g=da(g-da(i*B));i=B;g=da(P(da(da(da(g*g)+da(da(q*q)+da(da(p*p)+da(0.0))))/n)))}else{i=da(0.0);g=da(0.0)}B=da(w-u);w=da(t-v);t=da(u+da(B*i));B=da(B*g);u=da(v+da(w*i));v=da(w*g);c=a+80|0;y=(k[c>>2]|0)+-1|0;z=(1<<(y&31)&k[(k[a+76>>2]|0)+(y>>>5<<2)>>2]|0)==0;k[c>>2]=y;w=da(-v);w=da(t+(z?v:w));v=da(-B);B=da(u+(z?v:B));z=~~+N(+(+w+.5));a=k[a+68>>2]|0;k[a>>2]=z;z=~~+N(+(+B+.5));k[a+4>>2]=z;r=A;return}do if(b){h=a+72|0;b=k[h>>2]|0;f=$(b,s)|0}else{if((d|0)>0){h=a+72|0;b=k[h>>2]|0;f=$(b,d+-1|0)|0;break}f=a+72|0;if((k[f>>2]|0)<=0){r=A;return}e=k[a+68>>2]|0;b=0;do{k[e+(b<<2)>>2]=0;b=b+1|0}while((b|0)<(k[f>>2]|0));r=A;return}while(0);if((b|0)<=0){r=A;return}e=k[a+68>>2]|0;b=0;do{k[e+(b<<2)>>2]=k[c+(b+f<<2)>>2];b=b+1|0}while((b|0)<(k[h>>2]|0));r=A;return}function hc(a,b,c){a=a|0;b=b|0;c=c|0;var d=0,e=0,f=0,g=0,h=0,j=0,m=0,n=0;n=r;r=r+32|0;d=n+24|0;e=n+20|0;f=n+16|0;g=n+12|0;h=n+8|0;j=n+4|0;m=n;if(!c){c=0;r=n;return c|0}switch(k[a+28>>2]|0){case 9:{d=k[b>>2]|0;switch(i[a+24>>0]|0){case 1:{m=a+48|0;j=k[m>>2]|0;m=k[m+4>>2]|0;h=a+40|0;a=(mk(sj(k[h>>2]|0,k[h+4>>2]|0,d|0,((d|0)<0)<<31>>31|0)|0,M|0,j|0,m|0)|0)+(k[k[a>>2]>>2]|0)|0;k[c>>2]=l[a>>0]|l[a+1>>0]<<8|l[a+2>>0]<<16|l[a+3>>0]<<24;o[c+4>>2]=da(0.0);c=1;r=n;return c|0}case 2:{m=a+48|0;j=k[m>>2]|0;m=k[m+4>>2]|0;h=a+40|0;a=(mk(sj(k[h>>2]|0,k[h+4>>2]|0,d|0,((d|0)<0)<<31>>31|0)|0,M|0,j|0,m|0)|0)+(k[k[a>>2]>>2]|0)|0;m=a;a=a+4|0;a=l[a>>0]|l[a+1>>0]<<8|l[a+2>>0]<<16|l[a+3>>0]<<24;k[c>>2]=l[m>>0]|l[m+1>>0]<<8|l[m+2>>0]<<16|l[m+3>>0]<<24;k[c+4>>2]=a;c=1;r=n;return c|0}case 3:{j=a+48|0;m=k[j>>2]|0;j=k[j+4>>2]|0;h=a+40|0;a=(mk(sj(k[h>>2]|0,k[h+4>>2]|0,d|0,((d|0)<0)<<31>>31|0)|0,M|0,m|0,j|0)|0)+(k[k[a>>2]>>2]|0)|0;j=a;j=l[j>>0]|l[j+1>>0]<<8|l[j+2>>0]<<16|l[j+3>>0]<<24;a=a+4|0;a=l[a>>0]|l[a+1>>0]<<8|l[a+2>>0]<<16|l[a+3>>0]<<24;m=c;i[m>>0]=j;i[m+1>>0]=j>>8;i[m+2>>0]=j>>16;i[m+3>>0]=j>>24;c=c+4|0;i[c>>0]=a;i[c+1>>0]=a>>8;i[c+2>>0]=a>>16;i[c+3>>0]=a>>24;c=1;r=n;return c|0}case 4:{j=a+48|0;m=k[j>>2]|0;j=k[j+4>>2]|0;h=a+40|0;a=(mk(sj(k[h>>2]|0,k[h+4>>2]|0,d|0,((d|0)<0)<<31>>31|0)|0,M|0,m|0,j|0)|0)+(k[k[a>>2]>>2]|0)|0;j=a;j=l[j>>0]|l[j+1>>0]<<8|l[j+2>>0]<<16|l[j+3>>0]<<24;a=a+4|0;a=l[a>>0]|l[a+1>>0]<<8|l[a+2>>0]<<16|l[a+3>>0]<<24;m=c;i[m>>0]=j;i[m+1>>0]=j>>8;i[m+2>>0]=j>>16;i[m+3>>0]=j>>24;c=c+4|0;i[c>>0]=a;i[c+1>>0]=a>>8;i[c+2>>0]=a>>16;i[c+3>>0]=a>>24;c=1;r=n;return c|0}default:{c=0;r=n;return c|0}}}case 2:{k[e>>2]=k[b>>2];k[d>>2]=k[e>>2];c=Hd(a,d,c)|0;r=n;return c|0}case 1:{k[f>>2]=k[b>>2];k[d>>2]=k[f>>2];c=Gd(a,d,c)|0;r=n;return c|0}case 4:{k[g>>2]=k[b>>2];k[d>>2]=k[g>>2];c=ud(a,d,c)|0;r=n;return c|0}case 3:{k[h>>2]=k[b>>2];k[d>>2]=k[h>>2];c=qd(a,d,c)|0;r=n;return c|0}case 6:{k[j>>2]=k[b>>2];k[d>>2]=k[j>>2];c=jd(a,d,c)|0;r=n;return c|0}case 5:{k[m>>2]=k[b>>2];k[d>>2]=k[m>>2];c=ld(a,d,c)|0;r=n;return c|0}default:{c=0;r=n;return c|0}}return 0}function ic(a,b,c,d,e){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;var f=0,g=0,h=0,i=0,j=0;g=k[a+4>>2]|0;if((c|0)<=-1)Ka(12941,12957,54,12985);f=k[g+4>>2]|0;if(((k[g+8>>2]|0)-f>>2|0)<=(c|0))Ka(12995,12957,55,12985);i=k[f+(c<<2)>>2]|0;if(!((b+-1|0)>>>0<4&(Va[k[(k[a>>2]|0)+8>>2]&127](a)|0)==1)){d=0;return d|0}h=Va[k[(k[a>>2]|0)+36>>2]&127](a)|0;j=Za[k[(k[a>>2]|0)+44>>2]&127](a,c)|0;if((h|0)==0|(j|0)==0){d=0;return d|0}f=Za[k[(k[a>>2]|0)+40>>2]&127](a,c)|0;g=k[a+28>>2]|0;a=j+12|0;if(!f)switch(b|0){case 1:{e=vj(36)|0;k[e+4>>2]=i;i=e+8|0;k[i>>2]=k[d>>2];k[i+4>>2]=k[d+4>>2];k[i+8>>2]=k[d+8>>2];k[e+20>>2]=g;k[e+24>>2]=h;k[e+28>>2]=a;k[e+32>>2]=j;k[e>>2]=4480;d=e;return d|0}case 2:{e=vj(36)|0;k[e+4>>2]=i;i=e+8|0;k[i>>2]=k[d>>2];k[i+4>>2]=k[d+4>>2];k[i+8>>2]=k[d+8>>2];k[e+20>>2]=g;k[e+24>>2]=h;k[e+28>>2]=a;k[e+32>>2]=j;k[e>>2]=4544;d=e;return d|0}case 4:{c=vj(88)|0;k[c+4>>2]=i;f=c+8|0;k[f>>2]=k[d>>2];k[f+4>>2]=k[d+4>>2];k[f+8>>2]=k[d+8>>2];k[c+20>>2]=g;k[c+24>>2]=h;k[c+28>>2]=a;k[c+32>>2]=j;k[c>>2]=4608;f=c+36|0;g=f+52|0;do{k[f>>2]=0;f=f+4|0}while((f|0)<(g|0));d=c;return d|0}case 3:{b=vj(68)|0;k[b+4>>2]=i;i=b+8|0;k[i>>2]=k[d>>2];k[i+4>>2]=k[d+4>>2];k[i+8>>2]=k[d+8>>2];k[b+20>>2]=g;k[b+24>>2]=h;k[b+28>>2]=a;k[b+32>>2]=j;k[b>>2]=4672;d=b+36|0;k[d>>2]=0;k[d+4>>2]=0;k[d+8>>2]=0;k[d+12>>2]=0;k[d+16>>2]=0;k[d+20>>2]=0;k[d+24>>2]=0;k[b+64>>2]=e&65535;d=b;return d|0}default:{d=0;return d|0}}else switch(b|0){case 1:{e=vj(36)|0;k[e+4>>2]=i;i=e+8|0;k[i>>2]=k[d>>2];k[i+4>>2]=k[d+4>>2];k[i+8>>2]=k[d+8>>2];k[e+20>>2]=g;k[e+24>>2]=f;k[e+28>>2]=a;k[e+32>>2]=j;k[e>>2]=4224;d=e;return d|0}case 2:{e=vj(36)|0;k[e+4>>2]=i;i=e+8|0;k[i>>2]=k[d>>2];k[i+4>>2]=k[d+4>>2];k[i+8>>2]=k[d+8>>2];k[e+20>>2]=g;k[e+24>>2]=f;k[e+28>>2]=a;k[e+32>>2]=j;k[e>>2]=4288;d=e;return d|0}case 4:{c=vj(88)|0;k[c+4>>2]=i;e=c+8|0;k[e>>2]=k[d>>2];k[e+4>>2]=k[d+4>>2];k[e+8>>2]=k[d+8>>2];k[c+20>>2]=g;k[c+24>>2]=f;k[c+28>>2]=a;k[c+32>>2]=j;k[c>>2]=4352;f=c+36|0;g=f+52|0;do{k[f>>2]=0;f=f+4|0}while((f|0)<(g|0));d=c;return d|0}case 3:{b=vj(68)|0;k[b+4>>2]=i;i=b+8|0;k[i>>2]=k[d>>2];k[i+4>>2]=k[d+4>>2];k[i+8>>2]=k[d+8>>2];k[b+20>>2]=g;k[b+24>>2]=f;k[b+28>>2]=a;k[b+32>>2]=j;k[b>>2]=4416;d=b+36|0;k[d>>2]=0;k[d+4>>2]=0;k[d+8>>2]=0;k[d+12>>2]=0;k[d+16>>2]=0;k[d+20>>2]=0;k[d+24>>2]=0;k[b+64>>2]=e&65535;d=b;return d|0}default:{d=0;return d|0}}return 0}function jc(a,b,c,d,e){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;var f=0,g=0,h=0,i=0,j=0;g=k[a+4>>2]|0;if((c|0)<=-1)Ka(12941,12957,54,12985);f=k[g+4>>2]|0;if(((k[g+8>>2]|0)-f>>2|0)<=(c|0))Ka(12995,12957,55,12985);i=k[f+(c<<2)>>2]|0;if(!((b+-1|0)>>>0<4&(Va[k[(k[a>>2]|0)+8>>2]&127](a)|0)==1)){d=0;return d|0}h=Va[k[(k[a>>2]|0)+36>>2]&127](a)|0;j=Za[k[(k[a>>2]|0)+44>>2]&127](a,c)|0;if((h|0)==0|(j|0)==0){d=0;return d|0}f=Za[k[(k[a>>2]|0)+40>>2]&127](a,c)|0;g=k[a+28>>2]|0;a=j+12|0;if(!f)switch(b|0){case 1:{e=vj(36)|0;k[e+4>>2]=i;i=e+8|0;k[i>>2]=k[d>>2];k[i+4>>2]=k[d+4>>2];k[i+8>>2]=k[d+8>>2];k[e+20>>2]=g;k[e+24>>2]=h;k[e+28>>2]=a;k[e+32>>2]=j;k[e>>2]=5056;d=e;return d|0}case 2:{e=vj(36)|0;k[e+4>>2]=i;i=e+8|0;k[i>>2]=k[d>>2];k[i+4>>2]=k[d+4>>2];k[i+8>>2]=k[d+8>>2];k[e+20>>2]=g;k[e+24>>2]=h;k[e+28>>2]=a;k[e+32>>2]=j;k[e>>2]=5120;d=e;return d|0}case 4:{c=vj(88)|0;k[c+4>>2]=i;f=c+8|0;k[f>>2]=k[d>>2];k[f+4>>2]=k[d+4>>2];k[f+8>>2]=k[d+8>>2];k[c+20>>2]=g;k[c+24>>2]=h;k[c+28>>2]=a;k[c+32>>2]=j;k[c>>2]=5184;f=c+36|0;g=f+52|0;do{k[f>>2]=0;f=f+4|0}while((f|0)<(g|0));d=c;return d|0}case 3:{b=vj(68)|0;k[b+4>>2]=i;i=b+8|0;k[i>>2]=k[d>>2];k[i+4>>2]=k[d+4>>2];k[i+8>>2]=k[d+8>>2];k[b+20>>2]=g;k[b+24>>2]=h;k[b+28>>2]=a;k[b+32>>2]=j;k[b>>2]=5248;d=b+36|0;k[d>>2]=0;k[d+4>>2]=0;k[d+8>>2]=0;k[d+12>>2]=0;k[d+16>>2]=0;k[d+20>>2]=0;k[d+24>>2]=0;k[b+64>>2]=e&65535;d=b;return d|0}default:{d=0;return d|0}}else switch(b|0){case 1:{e=vj(36)|0;k[e+4>>2]=i;i=e+8|0;k[i>>2]=k[d>>2];k[i+4>>2]=k[d+4>>2];k[i+8>>2]=k[d+8>>2];k[e+20>>2]=g;k[e+24>>2]=f;k[e+28>>2]=a;k[e+32>>2]=j;k[e>>2]=4800;d=e;return d|0}case 2:{e=vj(36)|0;k[e+4>>2]=i;i=e+8|0;k[i>>2]=k[d>>2];k[i+4>>2]=k[d+4>>2];k[i+8>>2]=k[d+8>>2];k[e+20>>2]=g;k[e+24>>2]=f;k[e+28>>2]=a;k[e+32>>2]=j;k[e>>2]=4864;d=e;return d|0}case 4:{c=vj(88)|0;k[c+4>>2]=i;e=c+8|0;k[e>>2]=k[d>>2];k[e+4>>2]=k[d+4>>2];k[e+8>>2]=k[d+8>>2];k[c+20>>2]=g;k[c+24>>2]=f;k[c+28>>2]=a;k[c+32>>2]=j;k[c>>2]=4928;f=c+36|0;g=f+52|0;do{k[f>>2]=0;f=f+4|0}while((f|0)<(g|0));d=c;return d|0}case 3:{b=vj(68)|0;k[b+4>>2]=i;i=b+8|0;k[i>>2]=k[d>>2];k[i+4>>2]=k[d+4>>2];k[i+8>>2]=k[d+8>>2];k[b+20>>2]=g;k[b+24>>2]=f;k[b+28>>2]=a;k[b+32>>2]=j;k[b>>2]=4992;d=b+36|0;k[d>>2]=0;k[d+4>>2]=0;k[d+8>>2]=0;k[d+12>>2]=0;k[d+16>>2]=0;k[d+20>>2]=0;k[d+24>>2]=0;k[b+64>>2]=e&65535;d=b;return d|0}default:{d=0;return d|0}}return 0}function kc(a,b,c,d){a=a|0;b=b|0;c=c|0;d=d|0;var e=0,f=0,g=Pa,h=0,i=Pa,j=0,l=Pa,m=Pa,n=Pa,p=Pa,q=Pa,s=0,t=Pa,u=Pa,v=Pa,w=Pa,x=0,y=0,z=0,A=0,B=Pa;A=r;r=r+48|0;z=A+24|0;x=A+12|0;y=A;h=a+24|0;e=k[b>>2]|0;b=e+1|0;do if((e|0)>=0){b=((b|0)%3|0|0)==0?e+-2|0:b;if(!((e>>>0)%3|0)){f=e+2|0;break}else{f=e+-1|0;break}}else{f=e;b=e}while(0);h=k[(k[h>>2]|0)+28>>2]|0;e=k[h+(b<<2)>>2]|0;b=k[h+(f<<2)>>2]|0;f=k[a+28>>2]|0;h=k[f+4>>2]|0;j=k[f>>2]|0;if(h-j>>2>>>0<=e>>>0)_k(f);s=k[j+(e<<2)>>2]|0;if(h-j>>2>>>0<=b>>>0)_k(f);e=k[j+(b<<2)>>2]|0;b=(s|0)<(d|0);if(b&(e|0)<(d|0)){j=k[a+48>>2]|0;h=$(j,s)|0;u=da(k[c+(h<<2)>>2]|0);v=da(k[c+(h+1<<2)>>2]|0);j=$(j,e)|0;w=da(k[c+(j<<2)>>2]|0);t=da(k[c+(j+1<<2)>>2]|0);if(!(w!=u|t!=v)){a=k[a+44>>2]|0;k[a>>2]=~~w;k[a+4>>2]=~~t;r=A;return}yf(z,a,d);yf(x,a,s);yf(y,a,e);p=da(o[y>>2]);l=da(o[x>>2]);p=da(p-l);q=da(o[y+4>>2]);m=da(o[x+4>>2]);q=da(q-m);i=da(o[y+8>>2]);g=da(o[x+8>>2]);i=da(i-g);l=da(da(o[z>>2])-l);m=da(da(o[z+4>>2])-m);g=da(da(o[z+8>>2])-g);n=da(da(da(da(p*p)+da(0.0))+da(q*q))+da(i*i));if(n>da(0.0)?1:(k[a+64>>2]|0)<258){B=da(da(da(da(da(p*l)+da(0.0))+da(q*m))+da(i*g))/n);p=da(l-da(p*B));q=da(m-da(q*B));g=da(g-da(i*B));i=B;g=da(P(da(da(da(g*g)+da(da(q*q)+da(da(p*p)+da(0.0))))/n)))}else{i=da(0.0);g=da(0.0)}B=da(w-u);w=da(t-v);t=da(u+da(B*i));B=da(B*g);u=da(v+da(w*i));v=da(w*g);c=a+56|0;y=(k[c>>2]|0)+-1|0;z=(1<<(y&31)&k[(k[a+52>>2]|0)+(y>>>5<<2)>>2]|0)==0;k[c>>2]=y;w=da(-v);w=da(t+(z?v:w));v=da(-B);B=da(u+(z?v:B));z=~~+N(+(+w+.5));a=k[a+44>>2]|0;k[a>>2]=z;z=~~+N(+(+B+.5));k[a+4>>2]=z;r=A;return}do if(b){h=a+48|0;b=k[h>>2]|0;f=$(b,s)|0}else{if((d|0)>0){h=a+48|0;b=k[h>>2]|0;f=$(b,d+-1|0)|0;break}f=a+48|0;if((k[f>>2]|0)<=0){r=A;return}e=k[a+44>>2]|0;b=0;do{k[e+(b<<2)>>2]=0;b=b+1|0}while((b|0)<(k[f>>2]|0));r=A;return}while(0);if((b|0)<=0){r=A;return}e=k[a+44>>2]|0;b=0;do{k[e+(b<<2)>>2]=k[c+(b+f<<2)>>2];b=b+1|0}while((b|0)<(k[h>>2]|0));r=A;return}function lc(a,b,c,d){a=a|0;b=b|0;c=c|0;d=d|0;var e=0,f=0,g=Pa,h=0,i=Pa,j=0,l=Pa,m=Pa,n=Pa,p=Pa,q=Pa,s=0,t=Pa,u=Pa,v=Pa,w=Pa,x=0,y=0,z=0,A=0,B=Pa;A=r;r=r+48|0;z=A+24|0;x=A+12|0;y=A;h=a+48|0;e=k[b>>2]|0;b=e+1|0;do if((e|0)>=0){b=((b|0)%3|0|0)==0?e+-2|0:b;if(!((e>>>0)%3|0)){f=e+2|0;break}else{f=e+-1|0;break}}else{f=e;b=e}while(0);h=k[(k[h>>2]|0)+28>>2]|0;e=k[h+(b<<2)>>2]|0;b=k[h+(f<<2)>>2]|0;f=k[a+52>>2]|0;h=k[f+4>>2]|0;j=k[f>>2]|0;if(h-j>>2>>>0<=e>>>0)_k(f);s=k[j+(e<<2)>>2]|0;if(h-j>>2>>>0<=b>>>0)_k(f);e=k[j+(b<<2)>>2]|0;b=(s|0)<(d|0);if(b&(e|0)<(d|0)){j=k[a+72>>2]|0;h=$(j,s)|0;u=da(k[c+(h<<2)>>2]|0);v=da(k[c+(h+1<<2)>>2]|0);j=$(j,e)|0;w=da(k[c+(j<<2)>>2]|0);t=da(k[c+(j+1<<2)>>2]|0);if(!(w!=u|t!=v)){a=k[a+68>>2]|0;k[a>>2]=~~w;k[a+4>>2]=~~t;r=A;return}zf(z,a,d);zf(x,a,s);zf(y,a,e);p=da(o[y>>2]);l=da(o[x>>2]);p=da(p-l);q=da(o[y+4>>2]);m=da(o[x+4>>2]);q=da(q-m);i=da(o[y+8>>2]);g=da(o[x+8>>2]);i=da(i-g);l=da(da(o[z>>2])-l);m=da(da(o[z+4>>2])-m);g=da(da(o[z+8>>2])-g);n=da(da(da(da(p*p)+da(0.0))+da(q*q))+da(i*i));if(n>da(0.0)?1:(k[a+88>>2]|0)<258){B=da(da(da(da(da(p*l)+da(0.0))+da(q*m))+da(i*g))/n);p=da(l-da(p*B));q=da(m-da(q*B));g=da(g-da(i*B));i=B;g=da(P(da(da(da(g*g)+da(da(q*q)+da(da(p*p)+da(0.0))))/n)))}else{i=da(0.0);g=da(0.0)}B=da(w-u);w=da(t-v);t=da(u+da(B*i));B=da(B*g);u=da(v+da(w*i));v=da(w*g);c=a+80|0;y=(k[c>>2]|0)+-1|0;z=(1<<(y&31)&k[(k[a+76>>2]|0)+(y>>>5<<2)>>2]|0)==0;k[c>>2]=y;w=da(-v);w=da(t+(z?v:w));v=da(-B);B=da(u+(z?v:B));z=~~+N(+(+w+.5));a=k[a+68>>2]|0;k[a>>2]=z;z=~~+N(+(+B+.5));k[a+4>>2]=z;r=A;return}do if(b){h=a+72|0;b=k[h>>2]|0;f=$(b,s)|0}else{if((d|0)>0){h=a+72|0;b=k[h>>2]|0;f=$(b,d+-1|0)|0;break}f=a+72|0;if((k[f>>2]|0)<=0){r=A;return}e=k[a+68>>2]|0;b=0;do{k[e+(b<<2)>>2]=0;b=b+1|0}while((b|0)<(k[f>>2]|0));r=A;return}while(0);if((b|0)<=0){r=A;return}e=k[a+68>>2]|0;b=0;do{k[e+(b<<2)>>2]=k[c+(b+f<<2)>>2];b=b+1|0}while((b|0)<(k[h>>2]|0));r=A;return}function mc(a,b,c,d,e,f){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;f=f|0;var g=0,h=0,i=0,j=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0;u=a+8|0;k[u>>2]=e;do if(d){f=k[b>>2]|0;l=a+16|0;k[l>>2]=f;j=a+12|0;k[j>>2]=f;if((d|0)>1){i=1;h=f;while(1){g=k[b+(i<<2)>>2]|0;if((g|0)>=(h|0))if((g|0)>(f|0)){k[l>>2]=g;f=g;g=h}else g=h;else k[j>>2]=g;i=i+1|0;if((i|0)==(d|0))break;else h=g}}else g=f;t=1-g+f|0;k[a+20>>2]=t;f=(t|0)/2|0;g=a+24|0;k[g>>2]=f;k[a+28>>2]=0-f;if(!(t&1))k[g>>2]=f+-1;f=a+32|0;g=a+36|0;j=k[g>>2]|0;h=k[f>>2]|0;i=j-h>>2;if(i>>>0>>0){wg(f,e-i|0);break}if(i>>>0>e>>>0?(m=h+(e<<2)|0,(j|0)!=(m|0)):0)k[g>>2]=j+(~((j+-4-m|0)>>>2)<<2)}else d=0;while(0);d=d-e|0;if((d|0)>0){n=0-e|0;o=a+16|0;p=a+32|0;q=a+12|0;r=a+28|0;s=a+20|0;t=a+24|0;m=d;d=k[u>>2]|0;do{l=b+(m<<2)|0;j=l+(n<<2)|0;if((d|0)>0){i=0;do{h=k[j+(i<<2)>>2]|0;d=k[o>>2]|0;do if((h|0)<=(d|0)){d=k[q>>2]|0;f=k[p>>2]|0;g=f+(i<<2)|0;if((h|0)<(d|0)){k[g>>2]=d;g=f;break}else{k[g>>2]=h;g=f;break}}else{g=k[p>>2]|0;k[g+(i<<2)>>2]=d}while(0);i=i+1|0;d=k[u>>2]|0}while((i|0)<(d|0));if((d|0)>0){f=0;do{k[c+(f+m<<2)>>2]=(k[l+(f<<2)>>2]|0)-(k[g+(f<<2)>>2]|0);f=f+1|0;d=k[u>>2]|0}while((f|0)<(d|0));if((d|0)>0){g=0;do{d=c+(g+m<<2)|0;f=k[d>>2]|0;if((f|0)>=(k[r>>2]|0)){if((f|0)>(k[t>>2]|0))k[d>>2]=f-(k[s>>2]|0)}else k[d>>2]=(k[s>>2]|0)+f;g=g+1|0;d=k[u>>2]|0}while((g|0)<(d|0))}}}m=m-e|0}while((m|0)>0)}else d=k[u>>2]|0;e=e>>>0>1073741823?-1:e<<2;n=Sl(e)|0;Zh(n|0,0,e|0)|0;if((d|0)<=0){Tl(n);return 1}j=a+16|0;l=a+32|0;m=a+12|0;i=0;do{h=k[n+(i<<2)>>2]|0;d=k[j>>2]|0;do if((h|0)<=(d|0)){d=k[m>>2]|0;f=k[l>>2]|0;g=f+(i<<2)|0;if((h|0)<(d|0)){k[g>>2]=d;g=f;break}else{k[g>>2]=h;g=f;break}}else{g=k[l>>2]|0;k[g+(i<<2)>>2]=d}while(0);i=i+1|0;d=k[u>>2]|0}while((i|0)<(d|0));if((d|0)>0)d=0;else{Tl(n);return 1}do{k[c+(d<<2)>>2]=(k[b+(d<<2)>>2]|0)-(k[g+(d<<2)>>2]|0);d=d+1|0;f=k[u>>2]|0}while((d|0)<(f|0));if((f|0)<=0){Tl(n);return 1}i=a+28|0;j=a+20|0;f=a+24|0;d=0;do{g=c+(d<<2)|0;h=k[g>>2]|0;if((h|0)>=(k[i>>2]|0)){if((h|0)>(k[f>>2]|0))k[g>>2]=h-(k[j>>2]|0)}else k[g>>2]=(k[j>>2]|0)+h;d=d+1|0}while((d|0)<(k[u>>2]|0));Tl(n);return 1}function nc(a,b,c,d,e,f){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;f=f|0;var g=0,h=0,i=0,j=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,B=0;y=a+8|0;k[y>>2]=e;z=k[a+24>>2]|0;v=k[a+28>>2]|0;r=e>>>0>1073741823?-1:e<<2;w=Sl(r)|0;Zh(w|0,0,r|0)|0;x=Sl(r)|0;Zh(x|0,0,r|0)|0;r=a+32|0;g=k[r>>2]|0;a=k[g+4>>2]|0;f=k[g>>2]|0;d=a-f|0;a:do if((d|0)>4){s=(e|0)>0;t=z+12|0;u=e<<2;q=d>>2;d=g;while(1){p=q+-1|0;if(a-f>>2>>>0<=p>>>0)break;o=k[f+(p<<2)>>2]|0;if(s)Zh(w|0,0,u|0)|0;if((o|0)>-1){n=k[t>>2]|0;a=0;m=o;do{f=k[n+(m<<2)>>2]|0;if((f|0)>=0){h=k[z>>2]|0;g=(f>>>0)%3|0;i=k[v>>2]|0;l=k[i+(k[h+(((f>>>0)/3|0)*12|0)+(g<<2)>>2]<<2)>>2]|0;d=f+1|0;d=((d|0)%3|0|0)==0?f+-2|0:d;if((d|0)<0)d=-1073741824;else d=k[h+(((d>>>0)/3|0)*12|0)+(((d>>>0)%3|0)<<2)>>2]|0;j=k[i+(d<<2)>>2]|0;d=((g|0)==0?2:-1)+f|0;if((d|0)<0)d=-1073741824;else d=k[h+(((d>>>0)/3|0)*12|0)+(((d>>>0)%3|0)<<2)>>2]|0;d=k[i+(d<<2)>>2]|0;if((l|0)<(p|0)&(j|0)<(p|0)&(d|0)<(p|0)){h=$(l,e)|0;g=$(j,e)|0;f=$(d,e)|0;if(s){d=0;do{k[x+(d<<2)>>2]=(k[b+(d+f<<2)>>2]|0)+(k[b+(d+g<<2)>>2]|0)-(k[b+(d+h<<2)>>2]|0);d=d+1|0}while((d|0)!=(e|0));if(s){d=0;do{l=w+(d<<2)|0;k[l>>2]=(k[l>>2]|0)+(k[x+(d<<2)>>2]|0);d=d+1|0}while((d|0)!=(e|0))}}a=a+1|0}}d=(((m>>>0)%3|0|0)==0?2:-1)+m|0;do if((d|0)>=0){d=k[n+(d<<2)>>2]|0;if((d|0)>=0)if(!((d>>>0)%3|0)){d=d+2|0;break}else{d=d+-1|0;break}}while(0);m=(d|0)==(o|0)?-1073741824:d}while((m|0)>-1);d=$(p,e)|0;if(!a)B=32;else{if(s){f=0;do{q=w+(f<<2)|0;k[q>>2]=(k[q>>2]|0)/(a|0)|0;f=f+1|0}while((f|0)!=(e|0))}ve(y,b+(d<<2)|0,w,c,d)}}else{d=$(p,e)|0;B=32}if((B|0)==32){B=0;ve(y,b+(d<<2)|0,b+(($(q+-2|0,e)|0)<<2)|0,c,d)}if((p|0)<=1){A=w;break a}d=k[r>>2]|0;q=p;f=k[d>>2]|0;a=k[d+4>>2]|0}_k(d)}else A=w;while(0);if((e|0)<=0){ve(y,b,A,c,0);Tl(x);Tl(w);return 1}Zh(w|0,0,e<<2|0)|0;ve(y,b,A,c,0);Tl(x);Tl(w);return 1}function oc(a,b,c,d,e,f){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;f=f|0;var g=0,h=0,i=0,j=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,B=0;y=a+8|0;k[y>>2]=e;z=k[a+24>>2]|0;v=k[a+28>>2]|0;r=e>>>0>1073741823?-1:e<<2;w=Sl(r)|0;Zh(w|0,0,r|0)|0;x=Sl(r)|0;Zh(x|0,0,r|0)|0;r=a+32|0;g=k[r>>2]|0;a=k[g+4>>2]|0;f=k[g>>2]|0;d=a-f|0;a:do if((d|0)>4){s=(e|0)>0;t=z+12|0;u=e<<2;q=d>>2;d=g;while(1){p=q+-1|0;if(a-f>>2>>>0<=p>>>0)break;o=k[f+(p<<2)>>2]|0;if(s)Zh(w|0,0,u|0)|0;if((o|0)>-1){n=k[t>>2]|0;a=0;m=o;do{f=k[n+(m<<2)>>2]|0;if((f|0)>=0){h=k[z>>2]|0;g=(f>>>0)%3|0;i=k[v>>2]|0;l=k[i+(k[h+(((f>>>0)/3|0)*12|0)+(g<<2)>>2]<<2)>>2]|0;d=f+1|0;d=((d|0)%3|0|0)==0?f+-2|0:d;if((d|0)<0)d=-1073741824;else d=k[h+(((d>>>0)/3|0)*12|0)+(((d>>>0)%3|0)<<2)>>2]|0;j=k[i+(d<<2)>>2]|0;d=((g|0)==0?2:-1)+f|0;if((d|0)<0)d=-1073741824;else d=k[h+(((d>>>0)/3|0)*12|0)+(((d>>>0)%3|0)<<2)>>2]|0;d=k[i+(d<<2)>>2]|0;if((l|0)<(p|0)&(j|0)<(p|0)&(d|0)<(p|0)){h=$(l,e)|0;g=$(j,e)|0;f=$(d,e)|0;if(s){d=0;do{k[x+(d<<2)>>2]=(k[b+(d+f<<2)>>2]|0)+(k[b+(d+g<<2)>>2]|0)-(k[b+(d+h<<2)>>2]|0);d=d+1|0}while((d|0)!=(e|0));if(s){d=0;do{l=w+(d<<2)|0;k[l>>2]=(k[l>>2]|0)+(k[x+(d<<2)>>2]|0);d=d+1|0}while((d|0)!=(e|0))}}a=a+1|0}}d=(((m>>>0)%3|0|0)==0?2:-1)+m|0;do if((d|0)>=0){d=k[n+(d<<2)>>2]|0;if((d|0)>=0)if(!((d>>>0)%3|0)){d=d+2|0;break}else{d=d+-1|0;break}}while(0);m=(d|0)==(o|0)?-1073741824:d}while((m|0)>-1);d=$(p,e)|0;if(!a)B=32;else{if(s){f=0;do{q=w+(f<<2)|0;k[q>>2]=(k[q>>2]|0)/(a|0)|0;f=f+1|0}while((f|0)!=(e|0))}Ae(y,b+(d<<2)|0,w,c,d)}}else{d=$(p,e)|0;B=32}if((B|0)==32){B=0;Ae(y,b+(d<<2)|0,b+(($(q+-2|0,e)|0)<<2)|0,c,d)}if((p|0)<=1){A=w;break a}d=k[r>>2]|0;q=p;f=k[d>>2]|0;a=k[d+4>>2]|0}_k(d)}else A=w;while(0);if((e|0)<=0){Ae(y,b,A,c,0);Tl(x);Tl(w);return 1}Zh(w|0,0,e<<2|0)|0;Ae(y,b,A,c,0);Tl(x);Tl(w);return 1}function pc(a,b,c,d,e,f){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;f=f|0;var g=0,h=0,i=0,j=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,B=0,C=0,D=0;w=a+8|0;k[w>>2]=e;x=k[a+24>>2]|0;t=k[a+28>>2]|0;o=e>>>0>1073741823?-1:e<<2;u=Sl(o)|0;Zh(u|0,0,o|0)|0;v=Sl(o)|0;Zh(v|0,0,o|0)|0;o=a+32|0;g=k[o>>2]|0;a=k[g+4>>2]|0;f=k[g>>2]|0;d=a-f|0;a:do if((d|0)>4){p=(e|0)>0;q=x+64|0;r=x+28|0;s=e<<2;n=d>>2;d=g;while(1){m=n+-1|0;if(a-f>>2>>>0<=m>>>0)break;l=k[f+(m<<2)>>2]|0;if(p)Zh(u|0,0,s|0)|0;if((l|0)>-1){j=k[x>>2]|0;h=0;i=l;do{if(((k[j+(i>>>5<<2)>>2]&1<<(i&31)|0)==0?(z=k[(k[(k[q>>2]|0)+12>>2]|0)+(i<<2)>>2]|0,(z|0)>=0):0)?(C=k[r>>2]|0,g=k[t>>2]|0,A=k[g+(k[C+(z<<2)>>2]<<2)>>2]|0,B=z+1|0,B=k[g+(k[C+((((B|0)%3|0|0)==0?z+-2|0:B)<<2)>>2]<<2)>>2]|0,C=k[g+(k[C+((((z>>>0)%3|0|0)==0?2:-1)+z<<2)>>2]<<2)>>2]|0,(A|0)<(m|0)&(B|0)<(m|0)&(C|0)<(m|0)):0){f=$(A,e)|0;a=$(B,e)|0;g=$(C,e)|0;if(p){d=0;do{k[v+(d<<2)>>2]=(k[b+(d+g<<2)>>2]|0)+(k[b+(d+a<<2)>>2]|0)-(k[b+(d+f<<2)>>2]|0);d=d+1|0}while((d|0)!=(e|0));if(p){d=0;do{g=u+(d<<2)|0;k[g>>2]=(k[g>>2]|0)+(k[v+(d<<2)>>2]|0);d=d+1|0}while((d|0)!=(e|0))}}h=h+1|0}d=(((i>>>0)%3|0|0)==0?2:-1)+i|0;do if(!(k[j+(d>>>5<<2)>>2]&1<<(d&31))){if((d|0)>=0){d=k[(k[(k[q>>2]|0)+12>>2]|0)+(d<<2)>>2]|0;if((d|0)>=0)if(!((d>>>0)%3|0)){d=d+2|0;break}else{d=d+-1|0;break}}}else d=-1073741824;while(0);i=(d|0)==(l|0)?-1073741824:d}while((i|0)>-1);d=$(m,e)|0;if(!h)D=30;else{if(p){f=0;do{n=u+(f<<2)|0;k[n>>2]=(k[n>>2]|0)/(h|0)|0;f=f+1|0}while((f|0)!=(e|0))}ve(w,b+(d<<2)|0,u,c,d)}}else{d=$(m,e)|0;D=30}if((D|0)==30){D=0;ve(w,b+(d<<2)|0,b+(($(n+-2|0,e)|0)<<2)|0,c,d)}if((m|0)<=1){y=u;break a}d=k[o>>2]|0;n=m;f=k[d>>2]|0;a=k[d+4>>2]|0}_k(d)}else y=u;while(0);if((e|0)<=0){ve(w,b,y,c,0);Tl(v);Tl(u);return 1}Zh(u|0,0,e<<2|0)|0;ve(w,b,y,c,0);Tl(v);Tl(u);return 1}function qc(a,b,c,d,e,f){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;f=f|0;var g=0,h=0,i=0,j=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,B=0,C=0,D=0;w=a+8|0;k[w>>2]=e;x=k[a+24>>2]|0;t=k[a+28>>2]|0;o=e>>>0>1073741823?-1:e<<2;u=Sl(o)|0;Zh(u|0,0,o|0)|0;v=Sl(o)|0;Zh(v|0,0,o|0)|0;o=a+32|0;g=k[o>>2]|0;a=k[g+4>>2]|0;f=k[g>>2]|0;d=a-f|0;a:do if((d|0)>4){p=(e|0)>0;q=x+64|0;r=x+28|0;s=e<<2;n=d>>2;d=g;while(1){m=n+-1|0;if(a-f>>2>>>0<=m>>>0)break;l=k[f+(m<<2)>>2]|0;if(p)Zh(u|0,0,s|0)|0;if((l|0)>-1){j=k[x>>2]|0;h=0;i=l;do{if(((k[j+(i>>>5<<2)>>2]&1<<(i&31)|0)==0?(z=k[(k[(k[q>>2]|0)+12>>2]|0)+(i<<2)>>2]|0,(z|0)>=0):0)?(C=k[r>>2]|0,g=k[t>>2]|0,A=k[g+(k[C+(z<<2)>>2]<<2)>>2]|0,B=z+1|0,B=k[g+(k[C+((((B|0)%3|0|0)==0?z+-2|0:B)<<2)>>2]<<2)>>2]|0,C=k[g+(k[C+((((z>>>0)%3|0|0)==0?2:-1)+z<<2)>>2]<<2)>>2]|0,(A|0)<(m|0)&(B|0)<(m|0)&(C|0)<(m|0)):0){f=$(A,e)|0;a=$(B,e)|0;g=$(C,e)|0;if(p){d=0;do{k[v+(d<<2)>>2]=(k[b+(d+g<<2)>>2]|0)+(k[b+(d+a<<2)>>2]|0)-(k[b+(d+f<<2)>>2]|0);d=d+1|0}while((d|0)!=(e|0));if(p){d=0;do{g=u+(d<<2)|0;k[g>>2]=(k[g>>2]|0)+(k[v+(d<<2)>>2]|0);d=d+1|0}while((d|0)!=(e|0))}}h=h+1|0}d=(((i>>>0)%3|0|0)==0?2:-1)+i|0;do if(!(k[j+(d>>>5<<2)>>2]&1<<(d&31))){if((d|0)>=0){d=k[(k[(k[q>>2]|0)+12>>2]|0)+(d<<2)>>2]|0;if((d|0)>=0)if(!((d>>>0)%3|0)){d=d+2|0;break}else{d=d+-1|0;break}}}else d=-1073741824;while(0);i=(d|0)==(l|0)?-1073741824:d}while((i|0)>-1);d=$(m,e)|0;if(!h)D=30;else{if(p){f=0;do{n=u+(f<<2)|0;k[n>>2]=(k[n>>2]|0)/(h|0)|0;f=f+1|0}while((f|0)!=(e|0))}Ae(w,b+(d<<2)|0,u,c,d)}}else{d=$(m,e)|0;D=30}if((D|0)==30){D=0;Ae(w,b+(d<<2)|0,b+(($(n+-2|0,e)|0)<<2)|0,c,d)}if((m|0)<=1){y=u;break a}d=k[o>>2]|0;n=m;f=k[d>>2]|0;a=k[d+4>>2]|0}_k(d)}else y=u;while(0);if((e|0)<=0){Ae(w,b,y,c,0);Tl(v);Tl(u);return 1}Zh(u|0,0,e<<2|0)|0;Ae(w,b,y,c,0);Tl(v);Tl(u);return 1}function rc(a,b,c){a=a|0;b=b|0;c=c|0;var d=Pa,e=Pa,f=0,g=0,h=0;switch(i[a+24>>0]|0){case 1:{b=k[b>>2]|0;g=a+48|0;f=k[g>>2]|0;g=k[g+4>>2]|0;h=a+40|0;g=(mk(sj(k[h>>2]|0,k[h+4>>2]|0,b|0,((b|0)<0)<<31>>31|0)|0,M|0,f|0,g|0)|0)+(k[k[a>>2]>>2]|0)|0;d=da((l[g>>0]|l[g+1>>0]<<8|l[g+2>>0]<<16|l[g+3>>0]<<24)>>>0);e=da(d*da(2.32830644e-10));o[c>>2]=(i[a+32>>0]|0)==0?d:e;c=c+4|0;k[c>>2]=0;k[c+4>>2]=0;k[c+8>>2]=0;c=1;return c|0}case 2:{g=k[b>>2]|0;b=a+48|0;h=k[b>>2]|0;b=k[b+4>>2]|0;f=a+40|0;b=(mk(sj(k[f>>2]|0,k[f+4>>2]|0,g|0,((g|0)<0)<<31>>31|0)|0,M|0,h|0,b|0)|0)+(k[k[a>>2]>>2]|0)|0;h=b;b=b+4|0;b=l[b>>0]|l[b+1>>0]<<8|l[b+2>>0]<<16|l[b+3>>0]<<24;d=da((l[h>>0]|l[h+1>>0]<<8|l[h+2>>0]<<16|l[h+3>>0]<<24)>>>0);if(!(i[a+32>>0]|0)){o[c>>2]=d;d=da(b>>>0)}else{d=da(d*da(2.32830644e-10));o[c>>2]=d;d=da(da(b>>>0)*da(2.32830644e-10))}o[c+4>>2]=d;h=c+8|0;k[h>>2]=0;k[h+4>>2]=0;h=1;return h|0}case 3:{b=k[b>>2]|0;h=a+48|0;f=k[h>>2]|0;h=k[h+4>>2]|0;g=a+40|0;h=(mk(sj(k[g>>2]|0,k[g+4>>2]|0,b|0,((b|0)<0)<<31>>31|0)|0,M|0,f|0,h|0)|0)+(k[k[a>>2]>>2]|0)|0;f=h+4|0;f=l[f>>0]|l[f+1>>0]<<8|l[f+2>>0]<<16|l[f+3>>0]<<24;b=h+8|0;b=l[b>>0]|l[b+1>>0]<<8|l[b+2>>0]<<16|l[b+3>>0]<<24;d=da((l[h>>0]|l[h+1>>0]<<8|l[h+2>>0]<<16|l[h+3>>0]<<24)>>>0);if(!(i[a+32>>0]|0)){o[c>>2]=d;e=da(b>>>0);d=da(f>>>0)}else{e=da(d*da(2.32830644e-10));o[c>>2]=e;e=da(da(b>>>0)*da(2.32830644e-10));d=da(da(f>>>0)*da(2.32830644e-10))}o[c+4>>2]=d;o[c+8>>2]=e;o[c+12>>2]=da(0.0);h=1;return h|0}case 4:{f=k[b>>2]|0;h=a+48|0;b=k[h>>2]|0;h=k[h+4>>2]|0;g=a+40|0;h=(mk(sj(k[g>>2]|0,k[g+4>>2]|0,f|0,((f|0)<0)<<31>>31|0)|0,M|0,b|0,h|0)|0)+(k[k[a>>2]>>2]|0)|0;b=h+4|0;b=l[b>>0]|l[b+1>>0]<<8|l[b+2>>0]<<16|l[b+3>>0]<<24;f=h+8|0;f=l[f>>0]|l[f+1>>0]<<8|l[f+2>>0]<<16|l[f+3>>0]<<24;g=h+12|0;g=l[g>>0]|l[g+1>>0]<<8|l[g+2>>0]<<16|l[g+3>>0]<<24;d=da((l[h>>0]|l[h+1>>0]<<8|l[h+2>>0]<<16|l[h+3>>0]<<24)>>>0);if(!(i[a+32>>0]|0)){o[c>>2]=d;e=da(b>>>0);o[c+4>>2]=e;e=da(f>>>0);o[c+8>>2]=e;e=da(g>>>0);o[c+12>>2]=e;h=1;return h|0}else{e=da(d*da(2.32830644e-10));o[c>>2]=e;e=da(da(b>>>0)*da(2.32830644e-10));o[c+4>>2]=e;e=da(da(f>>>0)*da(2.32830644e-10));o[c+8>>2]=e;e=da(da(g>>>0)*da(2.32830644e-10));o[c+12>>2]=e;h=1;return h|0}}default:{h=0;return h|0}}return 0}function sc(a,b,c){a=a|0;b=b|0;c=c|0;var d=Pa,e=Pa,f=0,g=0,h=0;switch(i[a+24>>0]|0){case 1:{b=k[b>>2]|0;g=a+48|0;f=k[g>>2]|0;g=k[g+4>>2]|0;h=a+40|0;g=(mk(sj(k[h>>2]|0,k[h+4>>2]|0,b|0,((b|0)<0)<<31>>31|0)|0,M|0,f|0,g|0)|0)+(k[k[a>>2]>>2]|0)|0;d=da(l[g>>0]|l[g+1>>0]<<8|l[g+2>>0]<<16|l[g+3>>0]<<24|0);e=da(d*da(4.65661287e-10));o[c>>2]=(i[a+32>>0]|0)==0?d:e;c=c+4|0;k[c>>2]=0;k[c+4>>2]=0;k[c+8>>2]=0;c=1;return c|0}case 2:{g=k[b>>2]|0;b=a+48|0;h=k[b>>2]|0;b=k[b+4>>2]|0;f=a+40|0;b=(mk(sj(k[f>>2]|0,k[f+4>>2]|0,g|0,((g|0)<0)<<31>>31|0)|0,M|0,h|0,b|0)|0)+(k[k[a>>2]>>2]|0)|0;h=b;b=b+4|0;b=l[b>>0]|l[b+1>>0]<<8|l[b+2>>0]<<16|l[b+3>>0]<<24;d=da(l[h>>0]|l[h+1>>0]<<8|l[h+2>>0]<<16|l[h+3>>0]<<24|0);if(!(i[a+32>>0]|0)){o[c>>2]=d;d=da(b|0)}else{d=da(d*da(4.65661287e-10));o[c>>2]=d;d=da(da(b|0)*da(4.65661287e-10))}o[c+4>>2]=d;h=c+8|0;k[h>>2]=0;k[h+4>>2]=0;h=1;return h|0}case 3:{b=k[b>>2]|0;h=a+48|0;f=k[h>>2]|0;h=k[h+4>>2]|0;g=a+40|0;h=(mk(sj(k[g>>2]|0,k[g+4>>2]|0,b|0,((b|0)<0)<<31>>31|0)|0,M|0,f|0,h|0)|0)+(k[k[a>>2]>>2]|0)|0;f=h+4|0;f=l[f>>0]|l[f+1>>0]<<8|l[f+2>>0]<<16|l[f+3>>0]<<24;b=h+8|0;b=l[b>>0]|l[b+1>>0]<<8|l[b+2>>0]<<16|l[b+3>>0]<<24;d=da(l[h>>0]|l[h+1>>0]<<8|l[h+2>>0]<<16|l[h+3>>0]<<24|0);if(!(i[a+32>>0]|0)){o[c>>2]=d;e=da(b|0);d=da(f|0)}else{e=da(d*da(4.65661287e-10));o[c>>2]=e;e=da(da(b|0)*da(4.65661287e-10));d=da(da(f|0)*da(4.65661287e-10))}o[c+4>>2]=d;o[c+8>>2]=e;o[c+12>>2]=da(0.0);h=1;return h|0}case 4:{f=k[b>>2]|0;h=a+48|0;b=k[h>>2]|0;h=k[h+4>>2]|0;g=a+40|0;h=(mk(sj(k[g>>2]|0,k[g+4>>2]|0,f|0,((f|0)<0)<<31>>31|0)|0,M|0,b|0,h|0)|0)+(k[k[a>>2]>>2]|0)|0;b=h+4|0;b=l[b>>0]|l[b+1>>0]<<8|l[b+2>>0]<<16|l[b+3>>0]<<24;f=h+8|0;f=l[f>>0]|l[f+1>>0]<<8|l[f+2>>0]<<16|l[f+3>>0]<<24;g=h+12|0;g=l[g>>0]|l[g+1>>0]<<8|l[g+2>>0]<<16|l[g+3>>0]<<24;d=da(l[h>>0]|l[h+1>>0]<<8|l[h+2>>0]<<16|l[h+3>>0]<<24|0);if(!(i[a+32>>0]|0)){o[c>>2]=d;e=da(b|0);o[c+4>>2]=e;e=da(f|0);o[c+8>>2]=e;e=da(g|0);o[c+12>>2]=e;h=1;return h|0}else{e=da(d*da(4.65661287e-10));o[c>>2]=e;e=da(da(b|0)*da(4.65661287e-10));o[c+4>>2]=e;e=da(da(f|0)*da(4.65661287e-10));o[c+8>>2]=e;e=da(da(g|0)*da(4.65661287e-10));o[c+12>>2]=e;h=1;return h|0}}default:{h=0;return h|0}}return 0}function tc(a,b,c){a=a|0;b=b|0;c=c|0;var d=0,e=0,f=0,g=0,h=0,i=0,j=0,m=0,n=0,o=0,p=0,q=0,s=0,t=0,u=0;u=r;r=r+64|0;t=u;d=t;e=d+40|0;do{k[d>>2]=0;d=d+4|0}while((d|0)<(e|0));a:do if(Qd(t,b)|0){n=(a|0)>0;if(n?(k[t+12>>2]|0)==0:0){h=0;break}e=b+8|0;d=k[e>>2]|0;e=k[e+4>>2]|0;f=b+16|0;h=f;g=k[h>>2]|0;h=mk(g|0,k[h+4>>2]|0,8,0)|0;i=M;if((!((e|0)<(i|0)|(e|0)==(i|0)&d>>>0>>0)?(j=k[b>>2]|0,m=j+g|0,q=m,q=l[q>>0]|l[q+1>>0]<<8|l[q+2>>0]<<16|l[q+3>>0]<<24,m=m+4|0,m=l[m>>0]|l[m+1>>0]<<8|l[m+2>>0]<<16|l[m+3>>0]<<24,b=f,k[b>>2]=h,k[b+4>>2]=i,b=Zj(d|0,e|0,h|0,i|0)|0,g=M,!(m>>>0>g>>>0|(m|0)==(g|0)&q>>>0>b>>>0)):0)?(s=j+h|0,j=mk(q|0,m|0,h|0,i|0)|0,m=f,k[m>>2]=j,k[m+4>>2]=M,(q|0)>=1):0){j=t+40|0;k[j>>2]=s;d=q+-1|0;e=s+d|0;switch((l[e>>0]|0)>>>6&3){case 0:{k[t+44>>2]=d;p=(l[e>>0]|0)&63;o=t+48|0;k[o>>2]=p;break}case 1:{if((q|0)<2){h=0;break a}k[t+44>>2]=q+-2;p=s+q+-2|0;p=(l[p+1>>0]|0)<<8&16128|(l[p>>0]|0);o=t+48|0;k[o>>2]=p;break}case 2:{if((q|0)<3){h=0;break a}k[t+44>>2]=q+-3;p=s+q+-3|0;p=(l[p+1>>0]|0)<<8|(l[p>>0]|0)|(l[p+2>>0]|0)<<16&4128768;o=t+48|0;k[o>>2]=p;break}case 3:{k[t+44>>2]=q+-4;p=s+q+-4|0;p=(l[p+2>>0]|0)<<16|(l[p+3>>0]|0)<<24&1056964608|(l[p+1>>0]|0)<<8|(l[p>>0]|0);o=t+48|0;k[o>>2]=p;break}default:{}}d=p+4194304|0;k[o>>2]=d;d=d>>>0>1073741823;if(d|n^1)h=d^1;else{g=t+48|0;h=t+44|0;i=t+16|0;b=t+28|0;f=0;d=k[g>>2]|0;while(1){b:do if(d>>>0<4194304){e=k[h>>2]|0;do{if((e|0)<=0)break b;e=e+-1|0;k[h>>2]=e;d=l[(k[j>>2]|0)+e>>0]|0|d<<8;k[g>>2]=d}while(d>>>0<4194304)}while(0);p=d&1048575;s=k[(k[i>>2]|0)+(p<<2)>>2]|0;q=k[b>>2]|0;d=($(k[q+(s<<3)>>2]|0,d>>>20)|0)+p-(k[q+(s<<3)+4>>2]|0)|0;k[g>>2]=d;k[c+(f<<2)>>2]=s;f=f+1|0;if((f|0)==(a|0)){h=1;break}}}}else h=0}else h=0;while(0);d=k[t+28>>2]|0;e=d;if(d|0){f=t+32|0;g=k[f>>2]|0;if((g|0)!=(d|0))k[f>>2]=g+(~((g+-8-e|0)>>>3)<<3);Vl(d)}d=k[t+16>>2]|0;e=d;if(d|0){f=t+20|0;g=k[f>>2]|0;if((g|0)!=(d|0))k[f>>2]=g+(~((g+-4-e|0)>>>2)<<2);Vl(d)}f=k[t>>2]|0;if(!f){r=u;return h|0}d=t+4|0;e=k[d>>2]|0;if((e|0)!=(f|0))k[d>>2]=e+(~((e+-4-f|0)>>>2)<<2);Vl(f);r=u;return h|0}function uc(a,b,c){a=a|0;b=b|0;c=c|0;var d=0,e=0,f=0,g=0,h=0,i=0,j=0,m=0,n=0,o=0,p=0,q=0,s=0,t=0,u=0;u=r;r=r+64|0;t=u;d=t;e=d+40|0;do{k[d>>2]=0;d=d+4|0}while((d|0)<(e|0));a:do if(Rd(t,b)|0){n=(a|0)>0;if(n?(k[t+12>>2]|0)==0:0){h=0;break}e=b+8|0;d=k[e>>2]|0;e=k[e+4>>2]|0;f=b+16|0;h=f;g=k[h>>2]|0;h=mk(g|0,k[h+4>>2]|0,8,0)|0;i=M;if((!((e|0)<(i|0)|(e|0)==(i|0)&d>>>0>>0)?(j=k[b>>2]|0,m=j+g|0,q=m,q=l[q>>0]|l[q+1>>0]<<8|l[q+2>>0]<<16|l[q+3>>0]<<24,m=m+4|0,m=l[m>>0]|l[m+1>>0]<<8|l[m+2>>0]<<16|l[m+3>>0]<<24,b=f,k[b>>2]=h,k[b+4>>2]=i,b=Zj(d|0,e|0,h|0,i|0)|0,g=M,!(m>>>0>g>>>0|(m|0)==(g|0)&q>>>0>b>>>0)):0)?(s=j+h|0,j=mk(q|0,m|0,h|0,i|0)|0,m=f,k[m>>2]=j,k[m+4>>2]=M,(q|0)>=1):0){j=t+40|0;k[j>>2]=s;d=q+-1|0;e=s+d|0;switch((l[e>>0]|0)>>>6&3){case 0:{k[t+44>>2]=d;p=(l[e>>0]|0)&63;o=t+48|0;k[o>>2]=p;break}case 1:{if((q|0)<2){h=0;break a}k[t+44>>2]=q+-2;p=s+q+-2|0;p=(l[p+1>>0]|0)<<8&16128|(l[p>>0]|0);o=t+48|0;k[o>>2]=p;break}case 2:{if((q|0)<3){h=0;break a}k[t+44>>2]=q+-3;p=s+q+-3|0;p=(l[p+1>>0]|0)<<8|(l[p>>0]|0)|(l[p+2>>0]|0)<<16&4128768;o=t+48|0;k[o>>2]=p;break}case 3:{k[t+44>>2]=q+-4;p=s+q+-4|0;p=(l[p+2>>0]|0)<<16|(l[p+3>>0]|0)<<24&1056964608|(l[p+1>>0]|0)<<8|(l[p>>0]|0);o=t+48|0;k[o>>2]=p;break}default:{}}d=p+2097152|0;k[o>>2]=d;d=d>>>0>536870911;if(d|n^1)h=d^1;else{g=t+48|0;h=t+44|0;i=t+16|0;b=t+28|0;f=0;d=k[g>>2]|0;while(1){b:do if(d>>>0<2097152){e=k[h>>2]|0;do{if((e|0)<=0)break b;e=e+-1|0;k[h>>2]=e;d=l[(k[j>>2]|0)+e>>0]|0|d<<8;k[g>>2]=d}while(d>>>0<2097152)}while(0);p=d&524287;s=k[(k[i>>2]|0)+(p<<2)>>2]|0;q=k[b>>2]|0;d=($(k[q+(s<<3)>>2]|0,d>>>19)|0)+p-(k[q+(s<<3)+4>>2]|0)|0;k[g>>2]=d;k[c+(f<<2)>>2]=s;f=f+1|0;if((f|0)==(a|0)){h=1;break}}}}else h=0}else h=0;while(0);d=k[t+28>>2]|0;e=d;if(d|0){f=t+32|0;g=k[f>>2]|0;if((g|0)!=(d|0))k[f>>2]=g+(~((g+-8-e|0)>>>3)<<3);Vl(d)}d=k[t+16>>2]|0;e=d;if(d|0){f=t+20|0;g=k[f>>2]|0;if((g|0)!=(d|0))k[f>>2]=g+(~((g+-4-e|0)>>>2)<<2);Vl(d)}f=k[t>>2]|0;if(!f){r=u;return h|0}d=t+4|0;e=k[d>>2]|0;if((e|0)!=(f|0))k[d>>2]=e+(~((e+-4-f|0)>>>2)<<2);Vl(f);r=u;return h|0}function vc(a,b,c){a=a|0;b=b|0;c=c|0;var d=0,e=0,f=0,g=0,h=0,i=0,j=0,m=0,n=0,o=0,p=0,q=0,s=0,t=0,u=0;u=r;r=r+64|0;t=u;d=t;e=d+40|0;do{k[d>>2]=0;d=d+4|0}while((d|0)<(e|0));a:do if(Sd(t,b)|0){n=(a|0)>0;if(n?(k[t+12>>2]|0)==0:0){h=0;break}e=b+8|0;d=k[e>>2]|0;e=k[e+4>>2]|0;f=b+16|0;h=f;g=k[h>>2]|0;h=mk(g|0,k[h+4>>2]|0,8,0)|0;i=M;if((!((e|0)<(i|0)|(e|0)==(i|0)&d>>>0>>0)?(j=k[b>>2]|0,m=j+g|0,q=m,q=l[q>>0]|l[q+1>>0]<<8|l[q+2>>0]<<16|l[q+3>>0]<<24,m=m+4|0,m=l[m>>0]|l[m+1>>0]<<8|l[m+2>>0]<<16|l[m+3>>0]<<24,b=f,k[b>>2]=h,k[b+4>>2]=i,b=Zj(d|0,e|0,h|0,i|0)|0,g=M,!(m>>>0>g>>>0|(m|0)==(g|0)&q>>>0>b>>>0)):0)?(s=j+h|0,j=mk(q|0,m|0,h|0,i|0)|0,m=f,k[m>>2]=j,k[m+4>>2]=M,(q|0)>=1):0){j=t+40|0;k[j>>2]=s;d=q+-1|0;e=s+d|0;switch((l[e>>0]|0)>>>6&3){case 0:{k[t+44>>2]=d;p=(l[e>>0]|0)&63;o=t+48|0;k[o>>2]=p;break}case 1:{if((q|0)<2){h=0;break a}k[t+44>>2]=q+-2;p=s+q+-2|0;p=(l[p+1>>0]|0)<<8&16128|(l[p>>0]|0);o=t+48|0;k[o>>2]=p;break}case 2:{if((q|0)<3){h=0;break a}k[t+44>>2]=q+-3;p=s+q+-3|0;p=(l[p+1>>0]|0)<<8|(l[p>>0]|0)|(l[p+2>>0]|0)<<16&4128768;o=t+48|0;k[o>>2]=p;break}case 3:{k[t+44>>2]=q+-4;p=s+q+-4|0;p=(l[p+2>>0]|0)<<16|(l[p+3>>0]|0)<<24&1056964608|(l[p+1>>0]|0)<<8|(l[p>>0]|0);o=t+48|0;k[o>>2]=p;break}default:{}}d=p+1048576|0;k[o>>2]=d;d=d>>>0>268435455;if(d|n^1)h=d^1;else{g=t+48|0;h=t+44|0;i=t+16|0;b=t+28|0;f=0;d=k[g>>2]|0;while(1){b:do if(d>>>0<1048576){e=k[h>>2]|0;do{if((e|0)<=0)break b;e=e+-1|0;k[h>>2]=e;d=l[(k[j>>2]|0)+e>>0]|0|d<<8;k[g>>2]=d}while(d>>>0<1048576)}while(0);p=d&262143;s=k[(k[i>>2]|0)+(p<<2)>>2]|0;q=k[b>>2]|0;d=($(k[q+(s<<3)>>2]|0,d>>>18)|0)+p-(k[q+(s<<3)+4>>2]|0)|0;k[g>>2]=d;k[c+(f<<2)>>2]=s;f=f+1|0;if((f|0)==(a|0)){h=1;break}}}}else h=0}else h=0;while(0);d=k[t+28>>2]|0;e=d;if(d|0){f=t+32|0;g=k[f>>2]|0;if((g|0)!=(d|0))k[f>>2]=g+(~((g+-8-e|0)>>>3)<<3);Vl(d)}d=k[t+16>>2]|0;e=d;if(d|0){f=t+20|0;g=k[f>>2]|0;if((g|0)!=(d|0))k[f>>2]=g+(~((g+-4-e|0)>>>2)<<2);Vl(d)}f=k[t>>2]|0;if(!f){r=u;return h|0}d=t+4|0;e=k[d>>2]|0;if((e|0)!=(f|0))k[d>>2]=e+(~((e+-4-f|0)>>>2)<<2);Vl(f);r=u;return h|0}function wc(a,b,c){a=a|0;b=b|0;c=c|0;var d=0,e=0,f=0,g=0,h=0,i=0,j=0,m=0,n=0,o=0,p=0,q=0,s=0,t=0,u=0;u=r;r=r+64|0;t=u;d=t;e=d+40|0;do{k[d>>2]=0;d=d+4|0}while((d|0)<(e|0));a:do if(Td(t,b)|0){n=(a|0)>0;if(n?(k[t+12>>2]|0)==0:0){h=0;break}e=b+8|0;d=k[e>>2]|0;e=k[e+4>>2]|0;f=b+16|0;h=f;g=k[h>>2]|0;h=mk(g|0,k[h+4>>2]|0,8,0)|0;i=M;if((!((e|0)<(i|0)|(e|0)==(i|0)&d>>>0>>0)?(j=k[b>>2]|0,m=j+g|0,q=m,q=l[q>>0]|l[q+1>>0]<<8|l[q+2>>0]<<16|l[q+3>>0]<<24,m=m+4|0,m=l[m>>0]|l[m+1>>0]<<8|l[m+2>>0]<<16|l[m+3>>0]<<24,b=f,k[b>>2]=h,k[b+4>>2]=i,b=Zj(d|0,e|0,h|0,i|0)|0,g=M,!(m>>>0>g>>>0|(m|0)==(g|0)&q>>>0>b>>>0)):0)?(s=j+h|0,j=mk(q|0,m|0,h|0,i|0)|0,m=f,k[m>>2]=j,k[m+4>>2]=M,(q|0)>=1):0){j=t+40|0;k[j>>2]=s;d=q+-1|0;e=s+d|0;switch((l[e>>0]|0)>>>6&3){case 0:{k[t+44>>2]=d;p=(l[e>>0]|0)&63;o=t+48|0;k[o>>2]=p;break}case 1:{if((q|0)<2){h=0;break a}k[t+44>>2]=q+-2;p=s+q+-2|0;p=(l[p+1>>0]|0)<<8&16128|(l[p>>0]|0);o=t+48|0;k[o>>2]=p;break}case 2:{if((q|0)<3){h=0;break a}k[t+44>>2]=q+-3;p=s+q+-3|0;p=(l[p+1>>0]|0)<<8|(l[p>>0]|0)|(l[p+2>>0]|0)<<16&4128768;o=t+48|0;k[o>>2]=p;break}case 3:{k[t+44>>2]=q+-4;p=s+q+-4|0;p=(l[p+2>>0]|0)<<16|(l[p+3>>0]|0)<<24&1056964608|(l[p+1>>0]|0)<<8|(l[p>>0]|0);o=t+48|0;k[o>>2]=p;break}default:{}}d=p+262144|0;k[o>>2]=d;d=d>>>0>67108863;if(d|n^1)h=d^1;else{g=t+48|0;h=t+44|0;i=t+16|0;b=t+28|0;f=0;d=k[g>>2]|0;while(1){b:do if(d>>>0<262144){e=k[h>>2]|0;do{if((e|0)<=0)break b;e=e+-1|0;k[h>>2]=e;d=l[(k[j>>2]|0)+e>>0]|0|d<<8;k[g>>2]=d}while(d>>>0<262144)}while(0);p=d&65535;s=k[(k[i>>2]|0)+(p<<2)>>2]|0;q=k[b>>2]|0;d=($(k[q+(s<<3)>>2]|0,d>>>16)|0)+p-(k[q+(s<<3)+4>>2]|0)|0;k[g>>2]=d;k[c+(f<<2)>>2]=s;f=f+1|0;if((f|0)==(a|0)){h=1;break}}}}else h=0}else h=0;while(0);d=k[t+28>>2]|0;e=d;if(d|0){f=t+32|0;g=k[f>>2]|0;if((g|0)!=(d|0))k[f>>2]=g+(~((g+-8-e|0)>>>3)<<3);Vl(d)}d=k[t+16>>2]|0;e=d;if(d|0){f=t+20|0;g=k[f>>2]|0;if((g|0)!=(d|0))k[f>>2]=g+(~((g+-4-e|0)>>>2)<<2);Vl(d)}f=k[t>>2]|0;if(!f){r=u;return h|0}d=t+4|0;e=k[d>>2]|0;if((e|0)!=(f|0))k[d>>2]=e+(~((e+-4-f|0)>>>2)<<2);Vl(f);r=u;return h|0}function xc(a,b,c){a=a|0;b=b|0;c=c|0;var d=0,e=0,f=0,g=0,h=0,i=0,j=0,m=0,n=0,o=0,p=0,q=0,s=0,t=0,u=0;u=r;r=r+64|0;t=u;d=t;e=d+40|0;do{k[d>>2]=0;d=d+4|0}while((d|0)<(e|0));a:do if(Ud(t,b)|0){n=(a|0)>0;if(n?(k[t+12>>2]|0)==0:0){h=0;break}e=b+8|0;d=k[e>>2]|0;e=k[e+4>>2]|0;f=b+16|0;h=f;g=k[h>>2]|0;h=mk(g|0,k[h+4>>2]|0,8,0)|0;i=M;if((!((e|0)<(i|0)|(e|0)==(i|0)&d>>>0>>0)?(j=k[b>>2]|0,m=j+g|0,q=m,q=l[q>>0]|l[q+1>>0]<<8|l[q+2>>0]<<16|l[q+3>>0]<<24,m=m+4|0,m=l[m>>0]|l[m+1>>0]<<8|l[m+2>>0]<<16|l[m+3>>0]<<24,b=f,k[b>>2]=h,k[b+4>>2]=i,b=Zj(d|0,e|0,h|0,i|0)|0,g=M,!(m>>>0>g>>>0|(m|0)==(g|0)&q>>>0>b>>>0)):0)?(s=j+h|0,j=mk(q|0,m|0,h|0,i|0)|0,m=f,k[m>>2]=j,k[m+4>>2]=M,(q|0)>=1):0){j=t+40|0;k[j>>2]=s;d=q+-1|0;e=s+d|0;switch((l[e>>0]|0)>>>6&3){case 0:{k[t+44>>2]=d;p=(l[e>>0]|0)&63;o=t+48|0;k[o>>2]=p;break}case 1:{if((q|0)<2){h=0;break a}k[t+44>>2]=q+-2;p=s+q+-2|0;p=(l[p+1>>0]|0)<<8&16128|(l[p>>0]|0);o=t+48|0;k[o>>2]=p;break}case 2:{if((q|0)<3){h=0;break a}k[t+44>>2]=q+-3;p=s+q+-3|0;p=(l[p+1>>0]|0)<<8|(l[p>>0]|0)|(l[p+2>>0]|0)<<16&4128768;o=t+48|0;k[o>>2]=p;break}case 3:{k[t+44>>2]=q+-4;p=s+q+-4|0;p=(l[p+2>>0]|0)<<16|(l[p+3>>0]|0)<<24&1056964608|(l[p+1>>0]|0)<<8|(l[p>>0]|0);o=t+48|0;k[o>>2]=p;break}default:{}}d=p+131072|0;k[o>>2]=d;d=d>>>0>33554431;if(d|n^1)h=d^1;else{g=t+48|0;h=t+44|0;i=t+16|0;b=t+28|0;f=0;d=k[g>>2]|0;while(1){b:do if(d>>>0<131072){e=k[h>>2]|0;do{if((e|0)<=0)break b;e=e+-1|0;k[h>>2]=e;d=l[(k[j>>2]|0)+e>>0]|0|d<<8;k[g>>2]=d}while(d>>>0<131072)}while(0);p=d&32767;s=k[(k[i>>2]|0)+(p<<2)>>2]|0;q=k[b>>2]|0;d=($(k[q+(s<<3)>>2]|0,d>>>15)|0)+p-(k[q+(s<<3)+4>>2]|0)|0;k[g>>2]=d;k[c+(f<<2)>>2]=s;f=f+1|0;if((f|0)==(a|0)){h=1;break}}}}else h=0}else h=0;while(0);d=k[t+28>>2]|0;e=d;if(d|0){f=t+32|0;g=k[f>>2]|0;if((g|0)!=(d|0))k[f>>2]=g+(~((g+-8-e|0)>>>3)<<3);Vl(d)}d=k[t+16>>2]|0;e=d;if(d|0){f=t+20|0;g=k[f>>2]|0;if((g|0)!=(d|0))k[f>>2]=g+(~((g+-4-e|0)>>>2)<<2);Vl(d)}f=k[t>>2]|0;if(!f){r=u;return h|0}d=t+4|0;e=k[d>>2]|0;if((e|0)!=(f|0))k[d>>2]=e+(~((e+-4-f|0)>>>2)<<2);Vl(f);r=u;return h|0}function yc(a,b,c){a=a|0;b=b|0;c=c|0;var d=0,e=0,f=0,g=0,h=0,i=0,j=0,m=0,n=0,o=0,p=0,q=0,s=0,t=0,u=0;u=r;r=r+64|0;t=u;d=t;e=d+40|0;do{k[d>>2]=0;d=d+4|0}while((d|0)<(e|0));a:do if(Vd(t,b)|0){n=(a|0)>0;if(n?(k[t+12>>2]|0)==0:0){h=0;break}e=b+8|0;d=k[e>>2]|0;e=k[e+4>>2]|0;f=b+16|0;h=f;g=k[h>>2]|0;h=mk(g|0,k[h+4>>2]|0,8,0)|0;i=M;if((!((e|0)<(i|0)|(e|0)==(i|0)&d>>>0>>0)?(j=k[b>>2]|0,m=j+g|0,q=m,q=l[q>>0]|l[q+1>>0]<<8|l[q+2>>0]<<16|l[q+3>>0]<<24,m=m+4|0,m=l[m>>0]|l[m+1>>0]<<8|l[m+2>>0]<<16|l[m+3>>0]<<24,b=f,k[b>>2]=h,k[b+4>>2]=i,b=Zj(d|0,e|0,h|0,i|0)|0,g=M,!(m>>>0>g>>>0|(m|0)==(g|0)&q>>>0>b>>>0)):0)?(s=j+h|0,j=mk(q|0,m|0,h|0,i|0)|0,m=f,k[m>>2]=j,k[m+4>>2]=M,(q|0)>=1):0){j=t+40|0;k[j>>2]=s;d=q+-1|0;e=s+d|0;switch((l[e>>0]|0)>>>6&3){case 0:{k[t+44>>2]=d;p=(l[e>>0]|0)&63;o=t+48|0;k[o>>2]=p;break}case 1:{if((q|0)<2){h=0;break a}k[t+44>>2]=q+-2;p=s+q+-2|0;p=(l[p+1>>0]|0)<<8&16128|(l[p>>0]|0);o=t+48|0;k[o>>2]=p;break}case 2:{if((q|0)<3){h=0;break a}k[t+44>>2]=q+-3;p=s+q+-3|0;p=(l[p+1>>0]|0)<<8|(l[p>>0]|0)|(l[p+2>>0]|0)<<16&4128768;o=t+48|0;k[o>>2]=p;break}case 3:{k[t+44>>2]=q+-4;p=s+q+-4|0;p=(l[p+2>>0]|0)<<16|(l[p+3>>0]|0)<<24&1056964608|(l[p+1>>0]|0)<<8|(l[p>>0]|0);o=t+48|0;k[o>>2]=p;break}default:{}}d=p+32768|0;k[o>>2]=d;d=d>>>0>8388607;if(d|n^1)h=d^1;else{g=t+48|0;h=t+44|0;i=t+16|0;b=t+28|0;f=0;d=k[g>>2]|0;while(1){b:do if(d>>>0<32768){e=k[h>>2]|0;do{if((e|0)<=0)break b;e=e+-1|0;k[h>>2]=e;d=l[(k[j>>2]|0)+e>>0]|0|d<<8;k[g>>2]=d}while(d>>>0<32768)}while(0);p=d&8191;s=k[(k[i>>2]|0)+(p<<2)>>2]|0;q=k[b>>2]|0;d=($(k[q+(s<<3)>>2]|0,d>>>13)|0)+p-(k[q+(s<<3)+4>>2]|0)|0;k[g>>2]=d;k[c+(f<<2)>>2]=s;f=f+1|0;if((f|0)==(a|0)){h=1;break}}}}else h=0}else h=0;while(0);d=k[t+28>>2]|0;e=d;if(d|0){f=t+32|0;g=k[f>>2]|0;if((g|0)!=(d|0))k[f>>2]=g+(~((g+-8-e|0)>>>3)<<3);Vl(d)}d=k[t+16>>2]|0;e=d;if(d|0){f=t+20|0;g=k[f>>2]|0;if((g|0)!=(d|0))k[f>>2]=g+(~((g+-4-e|0)>>>2)<<2);Vl(d)}f=k[t>>2]|0;if(!f){r=u;return h|0}d=t+4|0;e=k[d>>2]|0;if((e|0)!=(f|0))k[d>>2]=e+(~((e+-4-f|0)>>>2)<<2);Vl(f);r=u;return h|0}function zc(a,b,c){a=a|0;b=b|0;c=c|0;var d=0,e=0,f=0,g=0,h=0,i=0,j=0,m=0,n=0,o=0,p=0,q=0,s=0,t=0,u=0;u=r;r=r+64|0;t=u;d=t;e=d+40|0;do{k[d>>2]=0;d=d+4|0}while((d|0)<(e|0));a:do if(Wd(t,b)|0){n=(a|0)>0;if(n?(k[t+12>>2]|0)==0:0){h=0;break}e=b+8|0;d=k[e>>2]|0;e=k[e+4>>2]|0;f=b+16|0;h=f;g=k[h>>2]|0;h=mk(g|0,k[h+4>>2]|0,8,0)|0;i=M;if((!((e|0)<(i|0)|(e|0)==(i|0)&d>>>0>>0)?(j=k[b>>2]|0,m=j+g|0,q=m,q=l[q>>0]|l[q+1>>0]<<8|l[q+2>>0]<<16|l[q+3>>0]<<24,m=m+4|0,m=l[m>>0]|l[m+1>>0]<<8|l[m+2>>0]<<16|l[m+3>>0]<<24,b=f,k[b>>2]=h,k[b+4>>2]=i,b=Zj(d|0,e|0,h|0,i|0)|0,g=M,!(m>>>0>g>>>0|(m|0)==(g|0)&q>>>0>b>>>0)):0)?(s=j+h|0,j=mk(q|0,m|0,h|0,i|0)|0,m=f,k[m>>2]=j,k[m+4>>2]=M,(q|0)>=1):0){j=t+40|0;k[j>>2]=s;d=q+-1|0;e=s+d|0;switch((l[e>>0]|0)>>>6&3){case 0:{k[t+44>>2]=d;p=(l[e>>0]|0)&63;o=t+48|0;k[o>>2]=p;break}case 1:{if((q|0)<2){h=0;break a}k[t+44>>2]=q+-2;p=s+q+-2|0;p=(l[p+1>>0]|0)<<8&16128|(l[p>>0]|0);o=t+48|0;k[o>>2]=p;break}case 2:{if((q|0)<3){h=0;break a}k[t+44>>2]=q+-3;p=s+q+-3|0;p=(l[p+1>>0]|0)<<8|(l[p>>0]|0)|(l[p+2>>0]|0)<<16&4128768;o=t+48|0;k[o>>2]=p;break}case 3:{k[t+44>>2]=q+-4;p=s+q+-4|0;p=(l[p+2>>0]|0)<<16|(l[p+3>>0]|0)<<24&1056964608|(l[p+1>>0]|0)<<8|(l[p>>0]|0);o=t+48|0;k[o>>2]=p;break}default:{}}d=p+16384|0;k[o>>2]=d;d=d>>>0>4194303;if(d|n^1)h=d^1;else{g=t+48|0;h=t+44|0;i=t+16|0;b=t+28|0;f=0;d=k[g>>2]|0;while(1){b:do if(d>>>0<16384){e=k[h>>2]|0;do{if((e|0)<=0)break b;e=e+-1|0;k[h>>2]=e;d=l[(k[j>>2]|0)+e>>0]|0|d<<8;k[g>>2]=d}while(d>>>0<16384)}while(0);p=d&4095;s=k[(k[i>>2]|0)+(p<<2)>>2]|0;q=k[b>>2]|0;d=($(k[q+(s<<3)>>2]|0,d>>>12)|0)+p-(k[q+(s<<3)+4>>2]|0)|0;k[g>>2]=d;k[c+(f<<2)>>2]=s;f=f+1|0;if((f|0)==(a|0)){h=1;break}}}}else h=0}else h=0;while(0);d=k[t+28>>2]|0;e=d;if(d|0){f=t+32|0;g=k[f>>2]|0;if((g|0)!=(d|0))k[f>>2]=g+(~((g+-8-e|0)>>>3)<<3);Vl(d)}d=k[t+16>>2]|0;e=d;if(d|0){f=t+20|0;g=k[f>>2]|0;if((g|0)!=(d|0))k[f>>2]=g+(~((g+-4-e|0)>>>2)<<2);Vl(d)}f=k[t>>2]|0;if(!f){r=u;return h|0}d=t+4|0;e=k[d>>2]|0;if((e|0)!=(f|0))k[d>>2]=e+(~((e+-4-f|0)>>>2)<<2);Vl(f);r=u;return h|0}function Ac(a,b){a=a|0;b=b|0;var c=0,d=0,e=0,f=0,g=0,h=0,i=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0;d=a+4|0;if(!b){c=k[a>>2]|0;k[a>>2]=0;if(c|0)Vl(c);k[d>>2]=0;return}if(b>>>0>1073741823){a=Ma(4)|0;Fl(a);xa(a|0,976,90)}q=vj(b<<2)|0;c=k[a>>2]|0;k[a>>2]=q;if(c|0)Vl(c);k[d>>2]=b;c=0;do{k[(k[a>>2]|0)+(c<<2)>>2]=0;c=c+1|0}while((c|0)!=(b|0));d=a+8|0;g=k[d>>2]|0;if(!g)return;c=k[g+4>>2]|0;p=b+-1|0;q=(p&b|0)==0;if(q)c=c&p;else c=(c>>>0)%(b>>>0)|0;k[(k[a>>2]|0)+(c<<2)>>2]=d;d=k[g>>2]|0;if(!d)return;else{e=c;f=g;c=g}a:while(1){o=c;b:while(1){c:do if(q){c=d;while(1){n=k[c+4>>2]&p;if((n|0)==(e|0))break c;d=(k[a>>2]|0)+(n<<2)|0;if(!(k[d>>2]|0)){e=n;break b}i=c+10|0;l=c+12|0;m=c+14|0;g=k[c>>2]|0;d:do if(!g)d=c;else{h=j[c+8>>1]|0;d=c;while(1){if(h<<16>>16!=(j[g+8>>1]|0))break d;if((j[i>>1]|0)!=(j[g+10>>1]|0))break d;if((j[l>>1]|0)!=(j[g+12>>1]|0))break d;if((j[m>>1]|0)!=(j[g+14>>1]|0))break d;d=k[g>>2]|0;if(!d){d=g;break}else{r=g;g=d;d=r}}}while(0);k[o>>2]=k[d>>2];k[d>>2]=k[k[(k[a>>2]|0)+(n<<2)>>2]>>2];k[k[(k[a>>2]|0)+(n<<2)>>2]>>2]=c;c=k[f>>2]|0;if(!c){c=40;break a}}}else{c=d;while(1){n=((k[c+4>>2]|0)>>>0)%(b>>>0)|0;if((n|0)==(e|0))break c;d=(k[a>>2]|0)+(n<<2)|0;if(!(k[d>>2]|0)){e=n;break b}h=c+10|0;i=c+12|0;l=c+14|0;g=k[c>>2]|0;e:do if(!g)d=c;else{m=j[c+8>>1]|0;d=c;while(1){if(m<<16>>16!=(j[g+8>>1]|0))break e;if((j[h>>1]|0)!=(j[g+10>>1]|0))break e;if((j[i>>1]|0)!=(j[g+12>>1]|0))break e;if((j[l>>1]|0)!=(j[g+14>>1]|0))break e;d=k[g>>2]|0;if(!d){d=g;break}else{r=g;g=d;d=r}}}while(0);k[o>>2]=k[d>>2];k[d>>2]=k[k[(k[a>>2]|0)+(n<<2)>>2]>>2];k[k[(k[a>>2]|0)+(n<<2)>>2]>>2]=c;c=k[f>>2]|0;if(!c){c=40;break a}}}while(0);d=k[c>>2]|0;if(!d){c=40;break a}else{f=c;o=c}}k[d>>2]=o;d=k[c>>2]|0;if(!d){c=40;break}else f=c}if((c|0)==40)return}function Bc(a,b){a=a|0;b=b|0;var c=0,d=0,e=0,f=0,g=0,h=0,i=0,j=0,l=0,m=0,n=0,o=0,p=0,q=0;d=a+4|0;if(!b){c=k[a>>2]|0;k[a>>2]=0;if(c|0)Vl(c);k[d>>2]=0;return}if(b>>>0>1073741823){a=Ma(4)|0;Fl(a);xa(a|0,976,90)}p=vj(b<<2)|0;c=k[a>>2]|0;k[a>>2]=p;if(c|0)Vl(c);k[d>>2]=b;c=0;do{k[(k[a>>2]|0)+(c<<2)>>2]=0;c=c+1|0}while((c|0)!=(b|0));d=a+8|0;g=k[d>>2]|0;if(!g)return;c=k[g+4>>2]|0;o=b+-1|0;p=(o&b|0)==0;if(p)c=c&o;else c=(c>>>0)%(b>>>0)|0;k[(k[a>>2]|0)+(c<<2)>>2]=d;d=k[g>>2]|0;if(!d)return;else{e=c;f=g;c=g}a:while(1){n=c;b:while(1){c:do if(p){c=d;while(1){m=k[c+4>>2]&o;if((m|0)==(e|0))break c;d=(k[a>>2]|0)+(m<<2)|0;if(!(k[d>>2]|0)){e=m;break b}i=c+12|0;j=c+16|0;l=c+20|0;g=k[c>>2]|0;d:do if(!g)d=c;else{h=k[c+8>>2]|0;d=c;while(1){if((h|0)!=(k[g+8>>2]|0))break d;if((k[i>>2]|0)!=(k[g+12>>2]|0))break d;if((k[j>>2]|0)!=(k[g+16>>2]|0))break d;if((k[l>>2]|0)!=(k[g+20>>2]|0))break d;d=k[g>>2]|0;if(!d){d=g;break}else{q=g;g=d;d=q}}}while(0);k[n>>2]=k[d>>2];k[d>>2]=k[k[(k[a>>2]|0)+(m<<2)>>2]>>2];k[k[(k[a>>2]|0)+(m<<2)>>2]>>2]=c;c=k[f>>2]|0;if(!c){c=40;break a}}}else{c=d;while(1){m=((k[c+4>>2]|0)>>>0)%(b>>>0)|0;if((m|0)==(e|0))break c;d=(k[a>>2]|0)+(m<<2)|0;if(!(k[d>>2]|0)){e=m;break b}h=c+12|0;i=c+16|0;j=c+20|0;g=k[c>>2]|0;e:do if(!g)d=c;else{l=k[c+8>>2]|0;d=c;while(1){if((l|0)!=(k[g+8>>2]|0))break e;if((k[h>>2]|0)!=(k[g+12>>2]|0))break e;if((k[i>>2]|0)!=(k[g+16>>2]|0))break e;if((k[j>>2]|0)!=(k[g+20>>2]|0))break e;d=k[g>>2]|0;if(!d){d=g;break}else{q=g;g=d;d=q}}}while(0);k[n>>2]=k[d>>2];k[d>>2]=k[k[(k[a>>2]|0)+(m<<2)>>2]>>2];k[k[(k[a>>2]|0)+(m<<2)>>2]>>2]=c;c=k[f>>2]|0;if(!c){c=40;break a}}}while(0);d=k[c>>2]|0;if(!d){c=40;break a}else{f=c;n=c}}k[d>>2]=n;d=k[c>>2]|0;if(!d){c=40;break}else f=c}if((c|0)==40)return}function Cc(a,b){a=a|0;b=b|0;var c=0,d=0,e=0,f=0,g=0,h=0,j=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0;d=a+4|0;if(!b){c=k[a>>2]|0;k[a>>2]=0;if(c|0)Vl(c);k[d>>2]=0;return}if(b>>>0>1073741823){a=Ma(4)|0;Fl(a);xa(a|0,976,90)}q=vj(b<<2)|0;c=k[a>>2]|0;k[a>>2]=q;if(c|0)Vl(c);k[d>>2]=b;c=0;do{k[(k[a>>2]|0)+(c<<2)>>2]=0;c=c+1|0}while((c|0)!=(b|0));d=a+8|0;g=k[d>>2]|0;if(!g)return;c=k[g+4>>2]|0;p=b+-1|0;q=(p&b|0)==0;if(q)c=c&p;else c=(c>>>0)%(b>>>0)|0;k[(k[a>>2]|0)+(c<<2)>>2]=d;d=k[g>>2]|0;if(!d)return;else{e=c;f=g;c=g}a:while(1){o=c;b:while(1){c:do if(q){c=d;while(1){n=k[c+4>>2]&p;if((n|0)==(e|0))break c;d=(k[a>>2]|0)+(n<<2)|0;if(!(k[d>>2]|0)){e=n;break b}j=c+9|0;l=c+10|0;m=c+11|0;g=k[c>>2]|0;d:do if(!g)d=c;else{h=i[c+8>>0]|0;d=c;while(1){if(h<<24>>24!=(i[g+8>>0]|0))break d;if((i[j>>0]|0)!=(i[g+9>>0]|0))break d;if((i[l>>0]|0)!=(i[g+10>>0]|0))break d;if((i[m>>0]|0)!=(i[g+11>>0]|0))break d;d=k[g>>2]|0;if(!d){d=g;break}else{r=g;g=d;d=r}}}while(0);k[o>>2]=k[d>>2];k[d>>2]=k[k[(k[a>>2]|0)+(n<<2)>>2]>>2];k[k[(k[a>>2]|0)+(n<<2)>>2]>>2]=c;c=k[f>>2]|0;if(!c){c=40;break a}}}else{c=d;while(1){n=((k[c+4>>2]|0)>>>0)%(b>>>0)|0;if((n|0)==(e|0))break c;d=(k[a>>2]|0)+(n<<2)|0;if(!(k[d>>2]|0)){e=n;break b}h=c+9|0;j=c+10|0;l=c+11|0;g=k[c>>2]|0;e:do if(!g)d=c;else{m=i[c+8>>0]|0;d=c;while(1){if(m<<24>>24!=(i[g+8>>0]|0))break e;if((i[h>>0]|0)!=(i[g+9>>0]|0))break e;if((i[j>>0]|0)!=(i[g+10>>0]|0))break e;if((i[l>>0]|0)!=(i[g+11>>0]|0))break e;d=k[g>>2]|0;if(!d){d=g;break}else{r=g;g=d;d=r}}}while(0);k[o>>2]=k[d>>2];k[d>>2]=k[k[(k[a>>2]|0)+(n<<2)>>2]>>2];k[k[(k[a>>2]|0)+(n<<2)>>2]>>2]=c;c=k[f>>2]|0;if(!c){c=40;break a}}}while(0);d=k[c>>2]|0;if(!d){c=40;break a}else{f=c;o=c}}k[d>>2]=o;d=k[c>>2]|0;if(!d){c=40;break}else f=c}if((c|0)==40)return}function Dc(a,b,c,d,e,f){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;f=f|0;var g=0,h=0,i=0,j=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0;x=a+8|0;k[x>>2]=e;u=e>>>0>1073741823?-1:e<<2;y=Sl(u)|0;Zh(y|0,0,u|0)|0;z=Sl(u)|0;Zh(z|0,0,u|0)|0;dg(x,y,b,c,0);u=k[a+24>>2]|0;v=a+32|0;f=k[v>>2]|0;h=k[f+4>>2]|0;g=k[f>>2]|0;t=h-g|0;w=t>>2;if((t|0)<=4){Tl(z);Tl(y);return 1}q=k[a+28>>2]|0;r=(e|0)>0;s=u+12|0;t=e<<2;d=1;a=h;while(1){if(a-g>>2>>>0<=d>>>0){A=6;break}p=k[g+(d<<2)>>2]|0;if(r)Zh(y|0,0,t|0)|0;if((p|0)>-1){o=k[s>>2]|0;g=0;n=p;do{a=k[o+(n<<2)>>2]|0;if((a|0)>=0){i=k[u>>2]|0;h=(a>>>0)%3|0;j=k[q>>2]|0;m=k[j+(k[i+(((a>>>0)/3|0)*12|0)+(h<<2)>>2]<<2)>>2]|0;f=a+1|0;f=((f|0)%3|0|0)==0?a+-2|0:f;if((f|0)<0)f=-1073741824;else f=k[i+(((f>>>0)/3|0)*12|0)+(((f>>>0)%3|0)<<2)>>2]|0;l=k[j+(f<<2)>>2]|0;f=((h|0)==0?2:-1)+a|0;if((f|0)<0)f=-1073741824;else f=k[i+(((f>>>0)/3|0)*12|0)+(((f>>>0)%3|0)<<2)>>2]|0;f=k[j+(f<<2)>>2]|0;if((m|0)<(d|0)&(l|0)<(d|0)&(f|0)<(d|0)){i=$(m,e)|0;h=$(l,e)|0;a=$(f,e)|0;if(r){f=0;do{k[z+(f<<2)>>2]=(k[c+(f+a<<2)>>2]|0)+(k[c+(f+h<<2)>>2]|0)-(k[c+(f+i<<2)>>2]|0);f=f+1|0}while((f|0)!=(e|0));if(r){f=0;do{m=y+(f<<2)|0;k[m>>2]=(k[m>>2]|0)+(k[z+(f<<2)>>2]|0);f=f+1|0}while((f|0)!=(e|0))}}g=g+1|0}}f=(((n>>>0)%3|0|0)==0?2:-1)+n|0;do if((f|0)>=0){f=k[o+(f<<2)>>2]|0;if((f|0)>=0)if(!((f>>>0)%3|0)){f=f+2|0;break}else{f=f+-1|0;break}}while(0);n=(f|0)==(p|0)?-1073741824:f}while((n|0)>-1);f=$(d,e)|0;if(!g)A=30;else{if(r){a=0;do{p=y+(a<<2)|0;k[p>>2]=(k[p>>2]|0)/(g|0)|0;a=a+1|0}while((a|0)!=(e|0))}dg(x,y,b,c+(f<<2)|0,f)}}else{f=$(d,e)|0;A=30}if((A|0)==30){A=0;dg(x,c+(($(d+-1|0,e)|0)<<2)|0,b,c+(f<<2)|0,f)}d=d+1|0;if((d|0)>=(w|0)){A=3;break}f=k[v>>2]|0;g=k[f>>2]|0;a=k[f+4>>2]|0}if((A|0)==3){Tl(z);Tl(y);return 1}else if((A|0)==6)_k(f);return 0}function Ec(a,b,c){a=a|0;b=b|0;c=c|0;var d=0,e=0,f=0,g=0,h=0,j=0,m=0,n=0;n=r;r=r+32|0;d=n+24|0;e=n+20|0;f=n+16|0;g=n+12|0;h=n+8|0;j=n+4|0;m=n;if(!c){c=0;r=n;return c|0}switch(k[a+28>>2]|0){case 9:{d=k[b>>2]|0;switch(i[a+24>>0]|0){case 1:{m=a+48|0;j=k[m>>2]|0;m=k[m+4>>2]|0;h=a+40|0;a=(mk(sj(k[h>>2]|0,k[h+4>>2]|0,d|0,((d|0)<0)<<31>>31|0)|0,M|0,j|0,m|0)|0)+(k[k[a>>2]>>2]|0)|0;k[c>>2]=l[a>>0]|l[a+1>>0]<<8|l[a+2>>0]<<16|l[a+3>>0]<<24;c=c+4|0;k[c>>2]=0;k[c+4>>2]=0;k[c+8>>2]=0;c=1;r=n;return c|0}case 2:{m=a+48|0;j=k[m>>2]|0;m=k[m+4>>2]|0;h=a+40|0;m=(mk(sj(k[h>>2]|0,k[h+4>>2]|0,d|0,((d|0)<0)<<31>>31|0)|0,M|0,j|0,m|0)|0)+(k[k[a>>2]>>2]|0)|0;j=m;m=m+4|0;m=l[m>>0]|l[m+1>>0]<<8|l[m+2>>0]<<16|l[m+3>>0]<<24;a=c;k[a>>2]=l[j>>0]|l[j+1>>0]<<8|l[j+2>>0]<<16|l[j+3>>0]<<24;k[a+4>>2]=m;c=c+8|0;k[c>>2]=0;k[c+4>>2]=0;c=1;r=n;return c|0}case 3:{m=a+48|0;j=k[m>>2]|0;m=k[m+4>>2]|0;h=a+40|0;Xi(c|0,(mk(sj(k[h>>2]|0,k[h+4>>2]|0,d|0,((d|0)<0)<<31>>31|0)|0,M|0,j|0,m|0)|0)+(k[k[a>>2]>>2]|0)|0,12)|0;o[c+12>>2]=da(0.0);c=1;r=n;return c|0}case 4:{m=a+48|0;j=k[m>>2]|0;m=k[m+4>>2]|0;h=a+40|0;Xi(c|0,(mk(sj(k[h>>2]|0,k[h+4>>2]|0,d|0,((d|0)<0)<<31>>31|0)|0,M|0,j|0,m|0)|0)+(k[k[a>>2]>>2]|0)|0,16)|0;c=1;r=n;return c|0}default:{c=0;r=n;return c|0}}}case 2:{k[e>>2]=k[b>>2];k[d>>2]=k[e>>2];c=kd(a,d,c)|0;r=n;return c|0}case 1:{k[f>>2]=k[b>>2];k[d>>2]=k[f>>2];c=gd(a,d,c)|0;r=n;return c|0}case 4:{k[g>>2]=k[b>>2];k[d>>2]=k[g>>2];c=Vc(a,d,c)|0;r=n;return c|0}case 3:{k[h>>2]=k[b>>2];k[d>>2]=k[h>>2];c=Pc(a,d,c)|0;r=n;return c|0}case 6:{k[j>>2]=k[b>>2];k[d>>2]=k[j>>2];c=rc(a,d,c)|0;r=n;return c|0}case 5:{k[m>>2]=k[b>>2];k[d>>2]=k[m>>2];c=sc(a,d,c)|0;r=n;return c|0}default:{c=0;r=n;return c|0}}return 0}function Fc(a,b,c,d){a=a|0;b=b|0;c=c|0;d=d|0;var e=0,f=0,g=0,h=0,i=0,j=0,l=0,m=0,n=0,o=0,p=0.0;o=b+8|0;f=k[o>>2]|0;n=c+4|0;l=(k[n>>2]|0)-f|0;e=c;k[e>>2]=(k[c>>2]|0)-f;k[e+4>>2]=l;e=(k[d>>2]|0)-f|0;l=d+4|0;f=(k[l>>2]|0)-f|0;g=d;k[g>>2]=e;k[g+4>>2]=f;p=+O(+(+(e|0)))+ +O(+(+(f|0)));g=k[o>>2]|0;if(!(p<=+(g|0))){e=k[c>>2]|0;f=k[n>>2]|0;if((e|0)>-1)if((f|0)<=-1)if((e|0)<1){h=-1;i=-1}else m=6;else{h=1;i=1}else if((f|0)<1){h=-1;i=-1}else m=6;if((m|0)==6){h=(e|0)>0?1:-1;i=(f|0)>0?1:-1}j=$(g,h)|0;g=$(g,i)|0;e=(e<<1)-j|0;k[c>>2]=e;f=(f<<1)-g|0;k[n>>2]=f;if(($(h,i)|0)>-1){f=0-f|0;k[c>>2]=f;e=0-e|0}else k[c>>2]=f;k[c>>2]=(f+j|0)/2|0;k[n>>2]=(e+g|0)/2|0;e=k[d>>2]|0;f=k[l>>2]|0;if((e|0)>-1)if((f|0)<=-1)if((e|0)<1){g=-1;h=-1}else m=14;else{g=1;h=1}else if((f|0)<1){g=-1;h=-1}else m=14;if((m|0)==14){g=(e|0)>0?1:-1;h=(f|0)>0?1:-1}j=k[o>>2]|0;i=$(j,g)|0;j=$(j,h)|0;e=(e<<1)-i|0;k[d>>2]=e;f=(f<<1)-j|0;k[l>>2]=f;if(($(g,h)|0)>-1){f=0-f|0;k[d>>2]=f;e=0-e|0}else k[d>>2]=f;i=(f+i|0)/2|0;k[d>>2]=i;f=(e+j|0)/2|0;k[l>>2]=f;e=i}if(!e){if(f)m=22}else if(!((e|0)<0&(f|0)<1))m=22;if((m|0)==22){do if(!e)if(!f){f=k[n>>2]|0;e=c;k[e>>2]=k[c>>2];k[e+4>>2]=f;e=k[d>>2]|0;f=k[l>>2]|0;break}else{g=(f|0)>0?3:1;m=29;break}else if((e|0)>0){g=(f>>31)+2|0;m=29;break}else{g=(f|0)<1?0:3;m=29;break}while(0);a:do if((m|0)==29){e=k[c>>2]|0;f=k[n>>2]|0;switch(g|0){case 1:{m=c;k[m>>2]=f;k[m+4>>2]=0-e;e=k[l>>2]|0;f=0-(k[d>>2]|0)|0;break a}case 2:{m=c;k[m>>2]=0-e;k[m+4>>2]=0-f;e=0-(k[d>>2]|0)|0;f=0-(k[l>>2]|0)|0;break a}case 3:{m=c;k[m>>2]=0-f;k[m+4>>2]=e;e=0-(k[l>>2]|0)|0;f=k[d>>2]|0;break a}default:{m=c;k[m>>2]=e;k[m+4>>2]=f;e=k[d>>2]|0;f=k[l>>2]|0;break a}}}while(0);m=d;k[m>>2]=e;k[m+4>>2]=f}e=(k[c>>2]|0)-e|0;k[a>>2]=e;g=(k[n>>2]|0)-f|0;h=a+4|0;k[h>>2]=g;f=k[o>>2]<<1;if((f|0)<(e|0))Ka(9093,8506,225,9117);if((e|0)<0)e=(k[b+4>>2]|0)+e|0;k[a>>2]=e;if((f|0)<(g|0))Ka(9093,8506,225,9117);if((g|0)>=0){b=g;k[h>>2]=b;return}b=(k[b+4>>2]|0)+g|0;k[h>>2]=b;return}function Gc(a,b,c,d,e,f){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;f=f|0;var g=0,h=0,i=0,j=0,l=0,m=0,n=0,o=0,p=0,q=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0;A=r;r=r+16|0;y=A+4|0;z=A;k[a+72>>2]=e;k[a+64>>2]=f;x=a+68|0;w=Sl(e>>>0>1073741823?-1:e<<2)|0;f=k[x>>2]|0;k[x>>2]=w;if(f|0)Tl(f);w=a+8|0;k[w>>2]=e;do if(d|0){f=k[b>>2]|0;j=a+16|0;k[j>>2]=f;l=a+12|0;k[l>>2]=f;if((d|0)>1){i=1;h=f;while(1){g=k[b+(i<<2)>>2]|0;if((g|0)>=(h|0))if((g|0)>(f|0)){k[j>>2]=g;f=g;g=h}else g=h;else k[l>>2]=g;i=i+1|0;if((i|0)==(d|0))break;else h=g}}else g=f;v=1-g+f|0;k[a+20>>2]=v;f=(v|0)/2|0;g=a+24|0;k[g>>2]=f;k[a+28>>2]=0-f;if(!(v&1))k[g>>2]=f+-1;f=a+32|0;g=a+36|0;j=k[g>>2]|0;h=k[f>>2]|0;i=j-h>>2;if(i>>>0>>0){wg(f,e-i|0);break}if(i>>>0>e>>>0?(m=h+(e<<2)|0,(j|0)!=(m|0)):0)k[g>>2]=j+(~((j+-4-m|0)>>>2)<<2)}while(0);o=a+56|0;i=k[o>>2]|0;h=k[i+4>>2]|0;g=k[i>>2]|0;f=h-g|0;if((f|0)<=0){r=A;return 1}p=a+16|0;q=a+32|0;s=a+12|0;t=a+28|0;u=a+20|0;v=a+24|0;f=(f>>2)+-1|0;while(1){if(h-g>>2>>>0<=f>>>0){f=22;break}k[z>>2]=k[g+(f<<2)>>2];k[y>>2]=k[z>>2];bc(a,y,b,f);n=$(f,e)|0;m=b+(n<<2)|0;d=k[x>>2]|0;if((k[w>>2]|0)>0){l=0;do{j=k[d+(l<<2)>>2]|0;g=k[p>>2]|0;do if((j|0)<=(g|0)){g=k[s>>2]|0;i=k[q>>2]|0;h=i+(l<<2)|0;if((j|0)<(g|0)){k[h>>2]=g;break}else{k[h>>2]=j;break}}else{i=k[q>>2]|0;k[i+(l<<2)>>2]=g}while(0);l=l+1|0;g=k[w>>2]|0}while((l|0)<(g|0));if((g|0)>0){g=0;do{k[c+(g+n<<2)>>2]=(k[m+(g<<2)>>2]|0)-(k[i+(g<<2)>>2]|0);g=g+1|0;h=k[w>>2]|0}while((g|0)<(h|0));if((h|0)>0){g=0;do{h=c+(g+n<<2)|0;i=k[h>>2]|0;if((i|0)>=(k[t>>2]|0)){if((i|0)>(k[v>>2]|0))k[h>>2]=i-(k[u>>2]|0)}else k[h>>2]=(k[u>>2]|0)+i;g=g+1|0}while((g|0)<(k[w>>2]|0))}}}f=f+-1|0;if((f|0)<=-1){f=19;break}i=k[o>>2]|0;g=k[i>>2]|0;h=k[i+4>>2]|0}if((f|0)==19){r=A;return 1}else if((f|0)==22)_k(i);return 0}function Hc(a,b,c,d,e,f){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;f=f|0;var g=0,h=0,i=0,j=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0;x=a+8|0;k[x>>2]=e;u=e>>>0>1073741823?-1:e<<2;y=Sl(u)|0;Zh(y|0,0,u|0)|0;z=Sl(u)|0;Zh(z|0,0,u|0)|0;fg(x,y,b,c,0);u=k[a+24>>2]|0;v=a+32|0;f=k[v>>2]|0;h=k[f+4>>2]|0;g=k[f>>2]|0;t=h-g|0;w=t>>2;if((t|0)<=4){Tl(z);Tl(y);return 1}q=k[a+28>>2]|0;r=(e|0)>0;s=u+12|0;t=e<<2;d=1;a=h;while(1){if(a-g>>2>>>0<=d>>>0){A=6;break}p=k[g+(d<<2)>>2]|0;if(r)Zh(y|0,0,t|0)|0;if((p|0)>-1){o=k[s>>2]|0;g=0;n=p;do{a=k[o+(n<<2)>>2]|0;if((a|0)>=0){i=k[u>>2]|0;h=(a>>>0)%3|0;j=k[q>>2]|0;m=k[j+(k[i+(((a>>>0)/3|0)*12|0)+(h<<2)>>2]<<2)>>2]|0;f=a+1|0;f=((f|0)%3|0|0)==0?a+-2|0:f;if((f|0)<0)f=-1073741824;else f=k[i+(((f>>>0)/3|0)*12|0)+(((f>>>0)%3|0)<<2)>>2]|0;l=k[j+(f<<2)>>2]|0;f=((h|0)==0?2:-1)+a|0;if((f|0)<0)f=-1073741824;else f=k[i+(((f>>>0)/3|0)*12|0)+(((f>>>0)%3|0)<<2)>>2]|0;f=k[j+(f<<2)>>2]|0;if((m|0)<(d|0)&(l|0)<(d|0)&(f|0)<(d|0)){i=$(m,e)|0;h=$(l,e)|0;a=$(f,e)|0;if(r){f=0;do{k[z+(f<<2)>>2]=(k[c+(f+a<<2)>>2]|0)+(k[c+(f+h<<2)>>2]|0)-(k[c+(f+i<<2)>>2]|0);f=f+1|0}while((f|0)!=(e|0));if(r){f=0;do{m=y+(f<<2)|0;k[m>>2]=(k[m>>2]|0)+(k[z+(f<<2)>>2]|0);f=f+1|0}while((f|0)!=(e|0))}}g=g+1|0}}f=(((n>>>0)%3|0|0)==0?2:-1)+n|0;do if((f|0)>=0){f=k[o+(f<<2)>>2]|0;if((f|0)>=0)if(!((f>>>0)%3|0)){f=f+2|0;break}else{f=f+-1|0;break}}while(0);n=(f|0)==(p|0)?-1073741824:f}while((n|0)>-1);f=$(d,e)|0;if(!g)A=30;else{if(r){a=0;do{p=y+(a<<2)|0;k[p>>2]=(k[p>>2]|0)/(g|0)|0;a=a+1|0}while((a|0)!=(e|0))}fg(x,y,b,c+(f<<2)|0,f)}}else{f=$(d,e)|0;A=30}if((A|0)==30){A=0;fg(x,c+(($(d+-1|0,e)|0)<<2)|0,b,c+(f<<2)|0,f)}d=d+1|0;if((d|0)>=(w|0)){A=3;break}f=k[v>>2]|0;g=k[f>>2]|0;a=k[f+4>>2]|0}if((A|0)==3){Tl(z);Tl(y);return 1}else if((A|0)==6)_k(f);return 0}function Ic(a,b,c,d,e,f){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;f=f|0;var g=0,h=0,i=0,j=0,l=0,m=0,n=0,o=0,p=0,q=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0;A=r;r=r+16|0;y=A+4|0;z=A;k[a+72>>2]=e;k[a+64>>2]=f;x=a+68|0;w=Sl(e>>>0>1073741823?-1:e<<2)|0;f=k[x>>2]|0;k[x>>2]=w;if(f|0)Tl(f);w=a+8|0;k[w>>2]=e;do if(d|0){f=k[b>>2]|0;j=a+16|0;k[j>>2]=f;l=a+12|0;k[l>>2]=f;if((d|0)>1){i=1;h=f;while(1){g=k[b+(i<<2)>>2]|0;if((g|0)>=(h|0))if((g|0)>(f|0)){k[j>>2]=g;f=g;g=h}else g=h;else k[l>>2]=g;i=i+1|0;if((i|0)==(d|0))break;else h=g}}else g=f;v=1-g+f|0;k[a+20>>2]=v;f=(v|0)/2|0;g=a+24|0;k[g>>2]=f;k[a+28>>2]=0-f;if(!(v&1))k[g>>2]=f+-1;f=a+32|0;g=a+36|0;j=k[g>>2]|0;h=k[f>>2]|0;i=j-h>>2;if(i>>>0>>0){wg(f,e-i|0);break}if(i>>>0>e>>>0?(m=h+(e<<2)|0,(j|0)!=(m|0)):0)k[g>>2]=j+(~((j+-4-m|0)>>>2)<<2)}while(0);o=a+56|0;i=k[o>>2]|0;h=k[i+4>>2]|0;g=k[i>>2]|0;f=h-g|0;if((f|0)<=0){r=A;return 1}p=a+16|0;q=a+32|0;s=a+12|0;t=a+28|0;u=a+20|0;v=a+24|0;f=(f>>2)+-1|0;while(1){if(h-g>>2>>>0<=f>>>0){f=22;break}k[z>>2]=k[g+(f<<2)>>2];k[y>>2]=k[z>>2];_b(a,y,b,f);n=$(f,e)|0;m=b+(n<<2)|0;d=k[x>>2]|0;if((k[w>>2]|0)>0){l=0;do{j=k[d+(l<<2)>>2]|0;g=k[p>>2]|0;do if((j|0)<=(g|0)){g=k[s>>2]|0;i=k[q>>2]|0;h=i+(l<<2)|0;if((j|0)<(g|0)){k[h>>2]=g;break}else{k[h>>2]=j;break}}else{i=k[q>>2]|0;k[i+(l<<2)>>2]=g}while(0);l=l+1|0;g=k[w>>2]|0}while((l|0)<(g|0));if((g|0)>0){g=0;do{k[c+(g+n<<2)>>2]=(k[m+(g<<2)>>2]|0)-(k[i+(g<<2)>>2]|0);g=g+1|0;h=k[w>>2]|0}while((g|0)<(h|0));if((h|0)>0){g=0;do{h=c+(g+n<<2)|0;i=k[h>>2]|0;if((i|0)>=(k[t>>2]|0)){if((i|0)>(k[v>>2]|0))k[h>>2]=i-(k[u>>2]|0)}else k[h>>2]=(k[u>>2]|0)+i;g=g+1|0}while((g|0)<(k[w>>2]|0))}}}f=f+-1|0;if((f|0)<=-1){f=19;break}i=k[o>>2]|0;g=k[i>>2]|0;h=k[i+4>>2]|0}if((f|0)==19){r=A;return 1}else if((f|0)==22)_k(i);return 0}function Jc(a,b,c){a=a|0;b=b|0;c=c|0;var d=0,e=0,f=0,g=0,h=0,j=0,l=0,m=0,n=0,o=0,p=0,q=0,s=0,t=0,u=0,v=0,w=0;w=r;r=r+48|0;o=w+32|0;p=w+28|0;q=w+24|0;s=w+20|0;t=w+16|0;u=w;v=b+24|0;j=i[v>>0]|0;m=j<<24>>24;n=k[a+64>>2]|0;a=$(n,m)|0;k[u>>2]=k[256];k[u+4>>2]=k[257];k[u+8>>2]=k[258];k[u+12>>2]=k[259];d=c+4|0;g=k[d>>2]|0;f=k[c>>2]|0;e=g-f>>2;if(a>>>0<=e>>>0){if(a>>>0>>0?(h=f+(a<<2)|0,(g|0)!=(h|0)):0)k[d>>2]=g+(~((g+-4-h|0)>>>2)<<2)}else wg(c,a-e|0);if((n|0)<=0){v=1;r=w;return v|0}h=b+84|0;l=b+68|0;a:do if(j<<24>>24>0){f=0;g=0;while(1){if(!(i[h>>0]|0))a=k[(k[l>>2]|0)+(g<<2)>>2]|0;else a=g;switch(i[v>>0]|0){case 1:{k[p>>2]=a;k[o>>2]=k[p>>2];a=Uc(b,o,u)|0;break}case 2:{k[q>>2]=a;k[o>>2]=k[q>>2];a=hc(b,o,u)|0;break}case 3:{k[s>>2]=a;k[o>>2]=k[s>>2];a=Mc(b,o,u)|0;break}case 4:{k[t>>2]=a;k[o>>2]=k[t>>2];a=Ec(b,o,u)|0;break}default:break a}if(!a){a=0;d=29;break}e=k[c>>2]|0;a=0;d=f;while(1){k[e+(d<<2)>>2]=k[u+(a<<2)>>2];a=a+1|0;if((a|0)==(m|0))break;else d=d+1|0}g=g+1|0;if((g|0)>=(n|0)){a=1;d=29;break}else f=m+f|0}if((d|0)==29){r=w;return a|0}}else{d=0;while(1){if(!(i[h>>0]|0))a=k[(k[l>>2]|0)+(d<<2)>>2]|0;else a=d;switch(i[v>>0]|0){case 1:{k[p>>2]=a;k[o>>2]=k[p>>2];a=Uc(b,o,u)|0;break}case 2:{k[q>>2]=a;k[o>>2]=k[q>>2];a=hc(b,o,u)|0;break}case 3:{k[s>>2]=a;k[o>>2]=k[s>>2];a=Mc(b,o,u)|0;break}case 4:{k[t>>2]=a;k[o>>2]=k[t>>2];a=Ec(b,o,u)|0;break}default:break a}if(!a){a=0;d=29;break}d=d+1|0;if((d|0)>=(n|0)){a=1;d=29;break}}if((d|0)==29){r=w;return a|0}}while(0);v=0;r=w;return v|0}function Kc(a,b,c,d,e,f){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;f=f|0;var g=0,h=0,i=0,j=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,B=0,C=0;v=a+8|0;k[v>>2]=e;s=e>>>0>1073741823?-1:e<<2;w=Sl(s)|0;Zh(w|0,0,s|0)|0;x=Sl(s)|0;Zh(x|0,0,s|0)|0;dg(v,w,b,c,0);s=k[a+24>>2]|0;t=a+32|0;f=k[t>>2]|0;h=k[f+4>>2]|0;g=k[f>>2]|0;r=h-g|0;u=r>>2;if((r|0)<=4){Tl(x);Tl(w);return 1}n=k[a+28>>2]|0;o=(e|0)>0;p=s+64|0;q=s+28|0;r=e<<2;d=1;a=h;while(1){if(a-g>>2>>>0<=d>>>0){C=6;break}m=k[g+(d<<2)>>2]|0;if(o)Zh(w|0,0,r|0)|0;if((m|0)>-1){l=k[s>>2]|0;i=0;j=m;do{if(((k[l+(j>>>5<<2)>>2]&1<<(j&31)|0)==0?(y=k[(k[(k[p>>2]|0)+12>>2]|0)+(j<<2)>>2]|0,(y|0)>=0):0)?(B=k[q>>2]|0,h=k[n>>2]|0,z=k[h+(k[B+(y<<2)>>2]<<2)>>2]|0,A=y+1|0,A=k[h+(k[B+((((A|0)%3|0|0)==0?y+-2|0:A)<<2)>>2]<<2)>>2]|0,B=k[h+(k[B+((((y>>>0)%3|0|0)==0?2:-1)+y<<2)>>2]<<2)>>2]|0,(z|0)<(d|0)&(A|0)<(d|0)&(B|0)<(d|0)):0){a=$(z,e)|0;g=$(A,e)|0;h=$(B,e)|0;if(o){f=0;do{k[x+(f<<2)>>2]=(k[c+(f+h<<2)>>2]|0)+(k[c+(f+g<<2)>>2]|0)-(k[c+(f+a<<2)>>2]|0);f=f+1|0}while((f|0)!=(e|0));if(o){f=0;do{h=w+(f<<2)|0;k[h>>2]=(k[h>>2]|0)+(k[x+(f<<2)>>2]|0);f=f+1|0}while((f|0)!=(e|0))}}i=i+1|0}f=(((j>>>0)%3|0|0)==0?2:-1)+j|0;do if(!(k[l+(f>>>5<<2)>>2]&1<<(f&31))){if((f|0)>=0){f=k[(k[(k[p>>2]|0)+12>>2]|0)+(f<<2)>>2]|0;if((f|0)>=0)if(!((f>>>0)%3|0)){f=f+2|0;break}else{f=f+-1|0;break}}}else f=-1073741824;while(0);j=(f|0)==(m|0)?-1073741824:f}while((j|0)>-1);f=$(d,e)|0;if(!i)C=28;else{if(o){a=0;do{m=w+(a<<2)|0;k[m>>2]=(k[m>>2]|0)/(i|0)|0;a=a+1|0}while((a|0)!=(e|0))}dg(v,w,b,c+(f<<2)|0,f)}}else{f=$(d,e)|0;C=28}if((C|0)==28){C=0;dg(v,c+(($(d+-1|0,e)|0)<<2)|0,b,c+(f<<2)|0,f)}d=d+1|0;if((d|0)>=(u|0)){C=3;break}f=k[t>>2]|0;g=k[f>>2]|0;a=k[f+4>>2]|0}if((C|0)==3){Tl(x);Tl(w);return 1}else if((C|0)==6)_k(f);return 0}function Lc(a,b,c){a=a|0;b=b|0;c=c|0;var d=Pa,e=0,f=Pa,g=0,h=0;switch(i[a+24>>0]|0){case 1:{g=k[b>>2]|0;e=a+48|0;b=k[e>>2]|0;e=k[e+4>>2]|0;h=a+40|0;e=(mk(sj(k[h>>2]|0,k[h+4>>2]|0,g|0,((g|0)<0)<<31>>31|0)|0,M|0,b|0,e|0)|0)+(k[k[a>>2]>>2]|0)|0;f=da((l[e>>0]|l[e+1>>0]<<8|l[e+2>>0]<<16|l[e+3>>0]<<24)>>>0);d=da(f*da(2.32830644e-10));o[c>>2]=(i[a+32>>0]|0)==0?f:d;c=c+4|0;k[c>>2]=0;k[c+4>>2]=0;c=1;return c|0}case 2:{g=k[b>>2]|0;b=a+48|0;h=k[b>>2]|0;b=k[b+4>>2]|0;e=a+40|0;b=(mk(sj(k[e>>2]|0,k[e+4>>2]|0,g|0,((g|0)<0)<<31>>31|0)|0,M|0,h|0,b|0)|0)+(k[k[a>>2]>>2]|0)|0;h=b;b=b+4|0;b=l[b>>0]|l[b+1>>0]<<8|l[b+2>>0]<<16|l[b+3>>0]<<24;d=da((l[h>>0]|l[h+1>>0]<<8|l[h+2>>0]<<16|l[h+3>>0]<<24)>>>0);if(!(i[a+32>>0]|0)){o[c>>2]=d;d=da(b>>>0)}else{d=da(d*da(2.32830644e-10));o[c>>2]=d;d=da(da(b>>>0)*da(2.32830644e-10))}o[c+4>>2]=d;o[c+8>>2]=da(0.0);h=1;return h|0}case 3:{e=k[b>>2]|0;h=a+48|0;b=k[h>>2]|0;h=k[h+4>>2]|0;g=a+40|0;h=(mk(sj(k[g>>2]|0,k[g+4>>2]|0,e|0,((e|0)<0)<<31>>31|0)|0,M|0,b|0,h|0)|0)+(k[k[a>>2]>>2]|0)|0;b=h+4|0;b=l[b>>0]|l[b+1>>0]<<8|l[b+2>>0]<<16|l[b+3>>0]<<24;e=h+8|0;e=l[e>>0]|l[e+1>>0]<<8|l[e+2>>0]<<16|l[e+3>>0]<<24;d=da((l[h>>0]|l[h+1>>0]<<8|l[h+2>>0]<<16|l[h+3>>0]<<24)>>>0);if(!(i[a+32>>0]|0)){o[c>>2]=d;f=da(b>>>0);o[c+4>>2]=f;f=da(e>>>0);o[c+8>>2]=f;h=1;return h|0}else{f=da(d*da(2.32830644e-10));o[c>>2]=f;f=da(da(b>>>0)*da(2.32830644e-10));o[c+4>>2]=f;f=da(da(e>>>0)*da(2.32830644e-10));o[c+8>>2]=f;h=1;return h|0}}case 4:{e=k[b>>2]|0;h=a+48|0;b=k[h>>2]|0;h=k[h+4>>2]|0;g=a+40|0;h=(mk(sj(k[g>>2]|0,k[g+4>>2]|0,e|0,((e|0)<0)<<31>>31|0)|0,M|0,b|0,h|0)|0)+(k[k[a>>2]>>2]|0)|0;b=h+4|0;b=l[b>>0]|l[b+1>>0]<<8|l[b+2>>0]<<16|l[b+3>>0]<<24;e=h+8|0;e=l[e>>0]|l[e+1>>0]<<8|l[e+2>>0]<<16|l[e+3>>0]<<24;d=da((l[h>>0]|l[h+1>>0]<<8|l[h+2>>0]<<16|l[h+3>>0]<<24)>>>0);if(!(i[a+32>>0]|0)){o[c>>2]=d;f=da(b>>>0);o[c+4>>2]=f;f=da(e>>>0);o[c+8>>2]=f;h=1;return h|0}else{f=da(d*da(2.32830644e-10));o[c>>2]=f;f=da(da(b>>>0)*da(2.32830644e-10));o[c+4>>2]=f;f=da(da(e>>>0)*da(2.32830644e-10));o[c+8>>2]=f;h=1;return h|0}}default:{h=0;return h|0}}return 0}function Mc(a,b,c){a=a|0;b=b|0;c=c|0;var d=0,e=0,f=0,g=0,h=0,j=0,m=0,n=0;n=r;r=r+32|0;d=n+24|0;e=n+20|0;f=n+16|0;g=n+12|0;h=n+8|0;j=n+4|0;m=n;if(!c){c=0;r=n;return c|0}switch(k[a+28>>2]|0){case 9:{d=k[b>>2]|0;switch(i[a+24>>0]|0){case 1:{m=a+48|0;j=k[m>>2]|0;m=k[m+4>>2]|0;h=a+40|0;a=(mk(sj(k[h>>2]|0,k[h+4>>2]|0,d|0,((d|0)<0)<<31>>31|0)|0,M|0,j|0,m|0)|0)+(k[k[a>>2]>>2]|0)|0;k[c>>2]=l[a>>0]|l[a+1>>0]<<8|l[a+2>>0]<<16|l[a+3>>0]<<24;c=c+4|0;k[c>>2]=0;k[c+4>>2]=0;c=1;r=n;return c|0}case 2:{m=a+48|0;j=k[m>>2]|0;m=k[m+4>>2]|0;h=a+40|0;m=(mk(sj(k[h>>2]|0,k[h+4>>2]|0,d|0,((d|0)<0)<<31>>31|0)|0,M|0,j|0,m|0)|0)+(k[k[a>>2]>>2]|0)|0;j=m;m=m+4|0;m=l[m>>0]|l[m+1>>0]<<8|l[m+2>>0]<<16|l[m+3>>0]<<24;a=c;k[a>>2]=l[j>>0]|l[j+1>>0]<<8|l[j+2>>0]<<16|l[j+3>>0]<<24;k[a+4>>2]=m;o[c+8>>2]=da(0.0);c=1;r=n;return c|0}case 3:{m=a+48|0;j=k[m>>2]|0;m=k[m+4>>2]|0;h=a+40|0;Xi(c|0,(mk(sj(k[h>>2]|0,k[h+4>>2]|0,d|0,((d|0)<0)<<31>>31|0)|0,M|0,j|0,m|0)|0)+(k[k[a>>2]>>2]|0)|0,12)|0;c=1;r=n;return c|0}case 4:{m=a+48|0;j=k[m>>2]|0;m=k[m+4>>2]|0;h=a+40|0;Xi(c|0,(mk(sj(k[h>>2]|0,k[h+4>>2]|0,d|0,((d|0)<0)<<31>>31|0)|0,M|0,j|0,m|0)|0)+(k[k[a>>2]>>2]|0)|0,12)|0;c=1;r=n;return c|0}default:{c=0;r=n;return c|0}}}case 2:{k[e>>2]=k[b>>2];k[d>>2]=k[e>>2];c=td(a,d,c)|0;r=n;return c|0}case 1:{k[f>>2]=k[b>>2];k[d>>2]=k[f>>2];c=nd(a,d,c)|0;r=n;return c|0}case 4:{k[g>>2]=k[b>>2];k[d>>2]=k[g>>2];c=ed(a,d,c)|0;r=n;return c|0}case 3:{k[h>>2]=k[b>>2];k[d>>2]=k[h>>2];c=_c(a,d,c)|0;r=n;return c|0}case 6:{k[j>>2]=k[b>>2];k[d>>2]=k[j>>2];c=Lc(a,d,c)|0;r=n;return c|0}case 5:{k[m>>2]=k[b>>2];k[d>>2]=k[m>>2];c=Nc(a,d,c)|0;r=n;return c|0}default:{c=0;r=n;return c|0}}return 0}function Nc(a,b,c){a=a|0;b=b|0;c=c|0;var d=Pa,e=0,f=Pa,g=0,h=0;switch(i[a+24>>0]|0){case 1:{g=k[b>>2]|0;e=a+48|0;b=k[e>>2]|0;e=k[e+4>>2]|0;h=a+40|0;e=(mk(sj(k[h>>2]|0,k[h+4>>2]|0,g|0,((g|0)<0)<<31>>31|0)|0,M|0,b|0,e|0)|0)+(k[k[a>>2]>>2]|0)|0;f=da(l[e>>0]|l[e+1>>0]<<8|l[e+2>>0]<<16|l[e+3>>0]<<24|0);d=da(f*da(4.65661287e-10));o[c>>2]=(i[a+32>>0]|0)==0?f:d;c=c+4|0;k[c>>2]=0;k[c+4>>2]=0;c=1;return c|0}case 2:{g=k[b>>2]|0;b=a+48|0;h=k[b>>2]|0;b=k[b+4>>2]|0;e=a+40|0;b=(mk(sj(k[e>>2]|0,k[e+4>>2]|0,g|0,((g|0)<0)<<31>>31|0)|0,M|0,h|0,b|0)|0)+(k[k[a>>2]>>2]|0)|0;h=b;b=b+4|0;b=l[b>>0]|l[b+1>>0]<<8|l[b+2>>0]<<16|l[b+3>>0]<<24;d=da(l[h>>0]|l[h+1>>0]<<8|l[h+2>>0]<<16|l[h+3>>0]<<24|0);if(!(i[a+32>>0]|0)){o[c>>2]=d;d=da(b|0)}else{d=da(d*da(4.65661287e-10));o[c>>2]=d;d=da(da(b|0)*da(4.65661287e-10))}o[c+4>>2]=d;o[c+8>>2]=da(0.0);h=1;return h|0}case 3:{e=k[b>>2]|0;h=a+48|0;b=k[h>>2]|0;h=k[h+4>>2]|0;g=a+40|0;h=(mk(sj(k[g>>2]|0,k[g+4>>2]|0,e|0,((e|0)<0)<<31>>31|0)|0,M|0,b|0,h|0)|0)+(k[k[a>>2]>>2]|0)|0;b=h+4|0;b=l[b>>0]|l[b+1>>0]<<8|l[b+2>>0]<<16|l[b+3>>0]<<24;e=h+8|0;e=l[e>>0]|l[e+1>>0]<<8|l[e+2>>0]<<16|l[e+3>>0]<<24;d=da(l[h>>0]|l[h+1>>0]<<8|l[h+2>>0]<<16|l[h+3>>0]<<24|0);if(!(i[a+32>>0]|0)){o[c>>2]=d;f=da(b|0);o[c+4>>2]=f;f=da(e|0);o[c+8>>2]=f;h=1;return h|0}else{f=da(d*da(4.65661287e-10));o[c>>2]=f;f=da(da(b|0)*da(4.65661287e-10));o[c+4>>2]=f;f=da(da(e|0)*da(4.65661287e-10));o[c+8>>2]=f;h=1;return h|0}}case 4:{e=k[b>>2]|0;h=a+48|0;b=k[h>>2]|0;h=k[h+4>>2]|0;g=a+40|0;h=(mk(sj(k[g>>2]|0,k[g+4>>2]|0,e|0,((e|0)<0)<<31>>31|0)|0,M|0,b|0,h|0)|0)+(k[k[a>>2]>>2]|0)|0;b=h+4|0;b=l[b>>0]|l[b+1>>0]<<8|l[b+2>>0]<<16|l[b+3>>0]<<24;e=h+8|0;e=l[e>>0]|l[e+1>>0]<<8|l[e+2>>0]<<16|l[e+3>>0]<<24;d=da(l[h>>0]|l[h+1>>0]<<8|l[h+2>>0]<<16|l[h+3>>0]<<24|0);if(!(i[a+32>>0]|0)){o[c>>2]=d;f=da(b|0);o[c+4>>2]=f;f=da(e|0);o[c+8>>2]=f;h=1;return h|0}else{f=da(d*da(4.65661287e-10));o[c>>2]=f;f=da(da(b|0)*da(4.65661287e-10));o[c+4>>2]=f;f=da(da(e|0)*da(4.65661287e-10));o[c+8>>2]=f;h=1;return h|0}}default:{h=0;return h|0}}return 0}function Oc(a,b,c,d,e,f){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;f=f|0;var g=0,h=0,i=0,j=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,B=0,C=0;v=a+8|0;k[v>>2]=e;s=e>>>0>1073741823?-1:e<<2;w=Sl(s)|0;Zh(w|0,0,s|0)|0;x=Sl(s)|0;Zh(x|0,0,s|0)|0;fg(v,w,b,c,0);s=k[a+24>>2]|0;t=a+32|0;f=k[t>>2]|0;h=k[f+4>>2]|0;g=k[f>>2]|0;r=h-g|0;u=r>>2;if((r|0)<=4){Tl(x);Tl(w);return 1}n=k[a+28>>2]|0;o=(e|0)>0;p=s+64|0;q=s+28|0;r=e<<2;d=1;a=h;while(1){if(a-g>>2>>>0<=d>>>0){C=6;break}m=k[g+(d<<2)>>2]|0;if(o)Zh(w|0,0,r|0)|0;if((m|0)>-1){l=k[s>>2]|0;i=0;j=m;do{if(((k[l+(j>>>5<<2)>>2]&1<<(j&31)|0)==0?(y=k[(k[(k[p>>2]|0)+12>>2]|0)+(j<<2)>>2]|0,(y|0)>=0):0)?(B=k[q>>2]|0,h=k[n>>2]|0,z=k[h+(k[B+(y<<2)>>2]<<2)>>2]|0,A=y+1|0,A=k[h+(k[B+((((A|0)%3|0|0)==0?y+-2|0:A)<<2)>>2]<<2)>>2]|0,B=k[h+(k[B+((((y>>>0)%3|0|0)==0?2:-1)+y<<2)>>2]<<2)>>2]|0,(z|0)<(d|0)&(A|0)<(d|0)&(B|0)<(d|0)):0){a=$(z,e)|0;g=$(A,e)|0;h=$(B,e)|0;if(o){f=0;do{k[x+(f<<2)>>2]=(k[c+(f+h<<2)>>2]|0)+(k[c+(f+g<<2)>>2]|0)-(k[c+(f+a<<2)>>2]|0);f=f+1|0}while((f|0)!=(e|0));if(o){f=0;do{h=w+(f<<2)|0;k[h>>2]=(k[h>>2]|0)+(k[x+(f<<2)>>2]|0);f=f+1|0}while((f|0)!=(e|0))}}i=i+1|0}f=(((j>>>0)%3|0|0)==0?2:-1)+j|0;do if(!(k[l+(f>>>5<<2)>>2]&1<<(f&31))){if((f|0)>=0){f=k[(k[(k[p>>2]|0)+12>>2]|0)+(f<<2)>>2]|0;if((f|0)>=0)if(!((f>>>0)%3|0)){f=f+2|0;break}else{f=f+-1|0;break}}}else f=-1073741824;while(0);j=(f|0)==(m|0)?-1073741824:f}while((j|0)>-1);f=$(d,e)|0;if(!i)C=28;else{if(o){a=0;do{m=w+(a<<2)|0;k[m>>2]=(k[m>>2]|0)/(i|0)|0;a=a+1|0}while((a|0)!=(e|0))}fg(v,w,b,c+(f<<2)|0,f)}}else{f=$(d,e)|0;C=28}if((C|0)==28){C=0;fg(v,c+(($(d+-1|0,e)|0)<<2)|0,b,c+(f<<2)|0,f)}d=d+1|0;if((d|0)>=(u|0)){C=3;break}f=k[t>>2]|0;g=k[f>>2]|0;a=k[f+4>>2]|0}if((C|0)==3){Tl(x);Tl(w);return 1}else if((C|0)==6)_k(f);return 0}function Pc(a,b,c){a=a|0;b=b|0;c=c|0;var d=Pa,e=Pa,f=0,g=0,h=0,j=0;switch(i[a+24>>0]|0){case 1:{g=k[b>>2]|0;f=a+48|0;b=k[f>>2]|0;f=k[f+4>>2]|0;h=a+40|0;f=(mk(sj(k[h>>2]|0,k[h+4>>2]|0,g|0,((g|0)<0)<<31>>31|0)|0,M|0,b|0,f|0)|0)+(k[k[a>>2]>>2]|0)|0;d=da((l[f>>0]|l[f+1>>0]<<8)<<16>>16);e=da(d/da(32767.0));o[c>>2]=(i[a+32>>0]|0)==0?d:e;c=c+4|0;k[c>>2]=0;k[c+4>>2]=0;k[c+8>>2]=0;c=1;return c|0}case 2:{g=k[b>>2]|0;h=a+48|0;b=k[h>>2]|0;h=k[h+4>>2]|0;f=a+40|0;h=(mk(sj(k[f>>2]|0,k[f+4>>2]|0,g|0,((g|0)<0)<<31>>31|0)|0,M|0,b|0,h|0)|0)+(k[k[a>>2]>>2]|0)|0;h=l[h>>0]|l[h+1>>0]<<8|l[h+2>>0]<<16|l[h+3>>0]<<24;b=h>>>16&65535;d=da((h&65535)<<16>>16);if(!(i[a+32>>0]|0)){o[c>>2]=d;d=da(b<<16>>16)}else{d=da(d/da(32767.0));o[c>>2]=d;d=da(da(b<<16>>16)/da(32767.0))}o[c+4>>2]=d;h=c+8|0;k[h>>2]=0;k[h+4>>2]=0;h=1;return h|0}case 3:{b=k[b>>2]|0;h=a+48|0;f=k[h>>2]|0;h=k[h+4>>2]|0;g=a+40|0;h=(mk(sj(k[g>>2]|0,k[g+4>>2]|0,b|0,((b|0)<0)<<31>>31|0)|0,M|0,f|0,h|0)|0)+(k[k[a>>2]>>2]|0)|0;f=h+2|0;f=l[f>>0]|l[f+1>>0]<<8;b=h+4|0;b=l[b>>0]|l[b+1>>0]<<8;d=da((l[h>>0]|l[h+1>>0]<<8)<<16>>16);if(!(i[a+32>>0]|0)){o[c>>2]=d;e=da(b<<16>>16);d=da(f<<16>>16)}else{e=da(d/da(32767.0));o[c>>2]=e;e=da(da(b<<16>>16)/da(32767.0));d=da(da(f<<16>>16)/da(32767.0))}o[c+4>>2]=d;o[c+8>>2]=e;o[c+12>>2]=da(0.0);h=1;return h|0}case 4:{h=k[b>>2]|0;j=a+48|0;g=k[j>>2]|0;j=k[j+4>>2]|0;b=a+40|0;j=(mk(sj(k[b>>2]|0,k[b+4>>2]|0,h|0,((h|0)<0)<<31>>31|0)|0,M|0,g|0,j|0)|0)+(k[k[a>>2]>>2]|0)|0;g=j;g=l[g>>0]|l[g+1>>0]<<8|l[g+2>>0]<<16|l[g+3>>0]<<24;j=j+4|0;j=l[j>>0]|l[j+1>>0]<<8|l[j+2>>0]<<16|l[j+3>>0]<<24;h=(i[a+32>>0]|0)==0;b=(Wj(g|0,j|0,16)|0)&65535;f=j&65535;a=(Wj(g|0,j|0,48)|0)&65535;d=da((g&65535)<<16>>16);if(h){o[c>>2]=d;e=da(b<<16>>16);o[c+4>>2]=e;e=da(f<<16>>16);o[c+8>>2]=e;e=da(a<<16>>16);o[c+12>>2]=e;j=1;return j|0}else{e=da(d/da(32767.0));o[c>>2]=e;e=da(da(b<<16>>16)/da(32767.0));o[c+4>>2]=e;e=da(da(f<<16>>16)/da(32767.0));o[c+8>>2]=e;e=da(da(a<<16>>16)/da(32767.0));o[c+12>>2]=e;j=1;return j|0}}default:{j=0;return j|0}}return 0}function Qc(a,b){a=a|0;b=b|0;var c=0,d=0,e=0,f=0,g=0,h=0,j=0,m=0,n=0,o=0,p=0,q=0,s=0,t=0,u=0,v=0,w=0,x=0;x=r;r=r+16|0;w=x;if(!(Bd(a,b)|0)){w=0;r=x;return w|0}p=b+8|0;o=p;d=k[o>>2]|0;o=k[o+4>>2]|0;s=b+16|0;c=s;f=k[c>>2]|0;c=mk(f|0,k[c+4>>2]|0,4,0)|0;e=M;if((o|0)<(e|0)|(o|0)==(e|0)&d>>>0>>0){w=0;r=x;return w|0}f=(k[b>>2]|0)+f|0;f=l[f>>0]|l[f+1>>0]<<8|l[f+2>>0]<<16|l[f+3>>0]<<24;g=s;k[g>>2]=c;k[g+4>>2]=e;g=a+96|0;f=(k[g>>2]|0)+f|0;k[g>>2]=f;g=a+100|0;k[w>>2]=0;h=a+104|0;n=k[h>>2]|0;m=k[g>>2]|0;j=n-m>>2;if(f>>>0<=j>>>0)if(f>>>0>>0?(q=m+(f<<2)|0,(n|0)!=(q|0)):0){k[h>>2]=n+(~((n+-4-q|0)>>>2)<<2);f=o}else f=o;else{Of(g,f-j|0,w);d=p;c=s;f=k[d+4>>2]|0;e=k[c+4>>2]|0;d=k[d>>2]|0;c=k[c>>2]|0}if(!((f|0)>(e|0)|(f|0)==(e|0)&d>>>0>c>>>0)){w=0;r=x;return w|0}q=i[(k[b>>2]|0)+c>>0]|0;p=mk(c|0,e|0,1,0)|0;k[s>>2]=p;k[s+4>>2]=M;if(q<<24>>24){w=0;r=x;return w|0}k[a+120>>2]=2;k[a+124>>2]=7;o=a+128|0;p=a+132|0;d=k[p>>2]|0;g=k[o>>2]|0;e=d-g|0;f=(e|0)/12|0;c=d;if(f>>>0>=6){if((e|0)!=72?(t=g+72|0,(c|0)!=(t|0)):0){do{d=c+-12|0;k[p>>2]=d;e=k[d>>2]|0;f=e;if(!e)c=d;else{c=c+-8|0;d=k[c>>2]|0;if((d|0)!=(e|0))k[c>>2]=d+(~((d+-4-f|0)>>>2)<<2);Vl(e);c=k[p>>2]|0}}while((c|0)!=(t|0));d=c}}else{Je(o,6-f|0);d=k[p>>2]|0}n=a+140|0;c=k[o>>2]|0;j=(d-c|0)/12|0;e=a+144|0;h=k[e>>2]|0;g=k[n>>2]|0;f=h-g>>2;if(j>>>0<=f>>>0){if(j>>>0>>0?(u=g+(j<<2)|0,(h|0)!=(u|0)):0)k[e>>2]=h+(~((h+-4-u|0)>>>2)<<2)}else{wg(n,j-f|0);d=k[p>>2]|0;c=k[o>>2]|0}if((d|0)==(c|0)){w=1;r=x;return w|0}m=0;do{ih(w,b);c=k[w>>2]|0;if(c|0){d=k[o>>2]|0;e=d+(m*12|0)|0;f=d+(m*12|0)+4|0;j=k[f>>2]|0;h=k[e>>2]|0;g=j-h>>2;if(c>>>0<=g>>>0){if(c>>>0>>0?(v=h+(c<<2)|0,(j|0)!=(v|0)):0)k[f>>2]=j+(~((j+-4-v|0)>>>2)<<2)}else{wg(e,c-g|0);d=k[o>>2]|0;c=k[w>>2]|0}Kg(c,1,b,k[d+(m*12|0)>>2]|0)|0;k[(k[n>>2]|0)+(m<<2)>>2]=k[w>>2]}m=m+1|0}while(m>>>0<(((k[p>>2]|0)-(k[o>>2]|0)|0)/12|0)>>>0);c=1;r=x;return c|0}function Rc(a,b){a=a|0;b=b|0;var c=0,d=0,e=0,f=0,g=0,h=0,i=0,l=0,m=0,n=0,o=0,p=0,q=0;d=a+4|0;if(!b){c=k[a>>2]|0;k[a>>2]=0;if(c|0)Vl(c);k[d>>2]=0;return}if(b>>>0>1073741823){a=Ma(4)|0;Fl(a);xa(a|0,976,90)}p=vj(b<<2)|0;c=k[a>>2]|0;k[a>>2]=p;if(c|0)Vl(c);k[d>>2]=b;c=0;do{k[(k[a>>2]|0)+(c<<2)>>2]=0;c=c+1|0}while((c|0)!=(b|0));d=a+8|0;g=k[d>>2]|0;if(!g)return;c=k[g+4>>2]|0;o=b+-1|0;p=(o&b|0)==0;if(p)c=c&o;else c=(c>>>0)%(b>>>0)|0;k[(k[a>>2]|0)+(c<<2)>>2]=d;d=k[g>>2]|0;if(!d)return;else{e=c;f=g;c=g}a:while(1){n=c;b:while(1){c:do if(p){c=d;while(1){m=k[c+4>>2]&o;if((m|0)==(e|0))break c;d=(k[a>>2]|0)+(m<<2)|0;if(!(k[d>>2]|0)){e=m;break b}i=c+10|0;l=c+12|0;g=k[c>>2]|0;d:do if(!g)d=c;else{h=j[c+8>>1]|0;d=c;while(1){if(h<<16>>16!=(j[g+8>>1]|0))break d;if((j[i>>1]|0)!=(j[g+10>>1]|0))break d;if((j[l>>1]|0)!=(j[g+12>>1]|0))break d;d=k[g>>2]|0;if(!d){d=g;break}else{q=g;g=d;d=q}}}while(0);k[n>>2]=k[d>>2];k[d>>2]=k[k[(k[a>>2]|0)+(m<<2)>>2]>>2];k[k[(k[a>>2]|0)+(m<<2)>>2]>>2]=c;c=k[f>>2]|0;if(!c){c=38;break a}}}else{c=d;while(1){m=((k[c+4>>2]|0)>>>0)%(b>>>0)|0;if((m|0)==(e|0))break c;d=(k[a>>2]|0)+(m<<2)|0;if(!(k[d>>2]|0)){e=m;break b}h=c+10|0;i=c+12|0;g=k[c>>2]|0;e:do if(!g)d=c;else{l=j[c+8>>1]|0;d=c;while(1){if(l<<16>>16!=(j[g+8>>1]|0))break e;if((j[h>>1]|0)!=(j[g+10>>1]|0))break e;if((j[i>>1]|0)!=(j[g+12>>1]|0))break e;d=k[g>>2]|0;if(!d){d=g;break}else{q=g;g=d;d=q}}}while(0);k[n>>2]=k[d>>2];k[d>>2]=k[k[(k[a>>2]|0)+(m<<2)>>2]>>2];k[k[(k[a>>2]|0)+(m<<2)>>2]>>2]=c;c=k[f>>2]|0;if(!c){c=38;break a}}}while(0);d=k[c>>2]|0;if(!d){c=38;break a}else{f=c;n=c}}k[d>>2]=n;d=k[c>>2]|0;if(!d){c=38;break}else f=c}if((c|0)==38)return}function Sc(a,b){a=a|0;b=b|0;var c=0,d=0,e=0,f=0,g=0,h=0,i=0,j=0,l=0,m=0,n=0,o=0,p=0;d=a+4|0;if(!b){c=k[a>>2]|0;k[a>>2]=0;if(c|0)Vl(c);k[d>>2]=0;return}if(b>>>0>1073741823){a=Ma(4)|0;Fl(a);xa(a|0,976,90)}o=vj(b<<2)|0;c=k[a>>2]|0;k[a>>2]=o;if(c|0)Vl(c);k[d>>2]=b;c=0;do{k[(k[a>>2]|0)+(c<<2)>>2]=0;c=c+1|0}while((c|0)!=(b|0));d=a+8|0;g=k[d>>2]|0;if(!g)return;c=k[g+4>>2]|0;n=b+-1|0;o=(n&b|0)==0;if(o)c=c&n;else c=(c>>>0)%(b>>>0)|0;k[(k[a>>2]|0)+(c<<2)>>2]=d;d=k[g>>2]|0;if(!d)return;else{e=c;f=g;c=g}a:while(1){m=c;b:while(1){c:do if(o){c=d;while(1){l=k[c+4>>2]&n;if((l|0)==(e|0))break c;d=(k[a>>2]|0)+(l<<2)|0;if(!(k[d>>2]|0)){e=l;break b}i=c+12|0;j=c+16|0;g=k[c>>2]|0;d:do if(!g)d=c;else{h=k[c+8>>2]|0;d=c;while(1){if((h|0)!=(k[g+8>>2]|0))break d;if((k[i>>2]|0)!=(k[g+12>>2]|0))break d;if((k[j>>2]|0)!=(k[g+16>>2]|0))break d;d=k[g>>2]|0;if(!d){d=g;break}else{p=g;g=d;d=p}}}while(0);k[m>>2]=k[d>>2];k[d>>2]=k[k[(k[a>>2]|0)+(l<<2)>>2]>>2];k[k[(k[a>>2]|0)+(l<<2)>>2]>>2]=c;c=k[f>>2]|0;if(!c){c=38;break a}}}else{c=d;while(1){l=((k[c+4>>2]|0)>>>0)%(b>>>0)|0;if((l|0)==(e|0))break c;d=(k[a>>2]|0)+(l<<2)|0;if(!(k[d>>2]|0)){e=l;break b}h=c+12|0;i=c+16|0;g=k[c>>2]|0;e:do if(!g)d=c;else{j=k[c+8>>2]|0;d=c;while(1){if((j|0)!=(k[g+8>>2]|0))break e;if((k[h>>2]|0)!=(k[g+12>>2]|0))break e;if((k[i>>2]|0)!=(k[g+16>>2]|0))break e;d=k[g>>2]|0;if(!d){d=g;break}else{p=g;g=d;d=p}}}while(0);k[m>>2]=k[d>>2];k[d>>2]=k[k[(k[a>>2]|0)+(l<<2)>>2]>>2];k[k[(k[a>>2]|0)+(l<<2)>>2]>>2]=c;c=k[f>>2]|0;if(!c){c=38;break a}}}while(0);d=k[c>>2]|0;if(!d){c=38;break a}else{f=c;m=c}}k[d>>2]=m;d=k[c>>2]|0;if(!d){c=38;break}else f=c}if((c|0)==38)return}function Tc(a,b){a=a|0;b=b|0;var c=0,d=0,e=0,f=0,g=0,h=0,j=0,l=0,m=0,n=0,o=0,p=0,q=0;d=a+4|0;if(!b){c=k[a>>2]|0;k[a>>2]=0;if(c|0)Vl(c);k[d>>2]=0;return}if(b>>>0>1073741823){a=Ma(4)|0;Fl(a);xa(a|0,976,90)}p=vj(b<<2)|0;c=k[a>>2]|0;k[a>>2]=p;if(c|0)Vl(c);k[d>>2]=b;c=0;do{k[(k[a>>2]|0)+(c<<2)>>2]=0;c=c+1|0}while((c|0)!=(b|0));d=a+8|0;g=k[d>>2]|0;if(!g)return;c=k[g+4>>2]|0;o=b+-1|0;p=(o&b|0)==0;if(p)c=c&o;else c=(c>>>0)%(b>>>0)|0;k[(k[a>>2]|0)+(c<<2)>>2]=d;d=k[g>>2]|0;if(!d)return;else{e=c;f=g;c=g}a:while(1){n=c;b:while(1){c:do if(p){c=d;while(1){m=k[c+4>>2]&o;if((m|0)==(e|0))break c;d=(k[a>>2]|0)+(m<<2)|0;if(!(k[d>>2]|0)){e=m;break b}j=c+9|0;l=c+10|0;g=k[c>>2]|0;d:do if(!g)d=c;else{h=i[c+8>>0]|0;d=c;while(1){if(h<<24>>24!=(i[g+8>>0]|0))break d;if((i[j>>0]|0)!=(i[g+9>>0]|0))break d;if((i[l>>0]|0)!=(i[g+10>>0]|0))break d;d=k[g>>2]|0;if(!d){d=g;break}else{q=g;g=d;d=q}}}while(0);k[n>>2]=k[d>>2];k[d>>2]=k[k[(k[a>>2]|0)+(m<<2)>>2]>>2];k[k[(k[a>>2]|0)+(m<<2)>>2]>>2]=c;c=k[f>>2]|0;if(!c){c=38;break a}}}else{c=d;while(1){m=((k[c+4>>2]|0)>>>0)%(b>>>0)|0;if((m|0)==(e|0))break c;d=(k[a>>2]|0)+(m<<2)|0;if(!(k[d>>2]|0)){e=m;break b}h=c+9|0;j=c+10|0;g=k[c>>2]|0;e:do if(!g)d=c;else{l=i[c+8>>0]|0;d=c;while(1){if(l<<24>>24!=(i[g+8>>0]|0))break e;if((i[h>>0]|0)!=(i[g+9>>0]|0))break e;if((i[j>>0]|0)!=(i[g+10>>0]|0))break e;d=k[g>>2]|0;if(!d){d=g;break}else{q=g;g=d;d=q}}}while(0);k[n>>2]=k[d>>2];k[d>>2]=k[k[(k[a>>2]|0)+(m<<2)>>2]>>2];k[k[(k[a>>2]|0)+(m<<2)>>2]>>2]=c;c=k[f>>2]|0;if(!c){c=38;break a}}}while(0);d=k[c>>2]|0;if(!d){c=38;break a}else{f=c;n=c}}k[d>>2]=n;d=k[c>>2]|0;if(!d){c=38;break}else f=c}if((c|0)==38)return}function Uc(a,b,c){a=a|0;b=b|0;c=c|0;var d=0,e=0,f=0,g=0,h=0,j=0,m=0,n=0;n=r;r=r+32|0;d=n+24|0;e=n+20|0;f=n+16|0;g=n+12|0;h=n+8|0;j=n+4|0;m=n;if(!c){c=0;r=n;return c|0}switch(k[a+28>>2]|0){case 9:{d=k[b>>2]|0;switch(i[a+24>>0]|0){case 1:{m=a+48|0;j=k[m>>2]|0;m=k[m+4>>2]|0;h=a+40|0;a=(mk(sj(k[h>>2]|0,k[h+4>>2]|0,d|0,((d|0)<0)<<31>>31|0)|0,M|0,j|0,m|0)|0)+(k[k[a>>2]>>2]|0)|0;k[c>>2]=l[a>>0]|l[a+1>>0]<<8|l[a+2>>0]<<16|l[a+3>>0]<<24;c=1;r=n;return c|0}case 2:{m=a+48|0;j=k[m>>2]|0;m=k[m+4>>2]|0;h=a+40|0;a=(mk(sj(k[h>>2]|0,k[h+4>>2]|0,d|0,((d|0)<0)<<31>>31|0)|0,M|0,j|0,m|0)|0)+(k[k[a>>2]>>2]|0)|0;k[c>>2]=l[a>>0]|l[a+1>>0]<<8|l[a+2>>0]<<16|l[a+3>>0]<<24;c=1;r=n;return c|0}case 3:{m=a+48|0;j=k[m>>2]|0;m=k[m+4>>2]|0;h=a+40|0;a=(mk(sj(k[h>>2]|0,k[h+4>>2]|0,d|0,((d|0)<0)<<31>>31|0)|0,M|0,j|0,m|0)|0)+(k[k[a>>2]>>2]|0)|0;k[c>>2]=l[a>>0]|l[a+1>>0]<<8|l[a+2>>0]<<16|l[a+3>>0]<<24;c=1;r=n;return c|0}case 4:{m=a+48|0;j=k[m>>2]|0;m=k[m+4>>2]|0;h=a+40|0;a=(mk(sj(k[h>>2]|0,k[h+4>>2]|0,d|0,((d|0)<0)<<31>>31|0)|0,M|0,j|0,m|0)|0)+(k[k[a>>2]>>2]|0)|0;k[c>>2]=l[a>>0]|l[a+1>>0]<<8|l[a+2>>0]<<16|l[a+3>>0]<<24;c=1;r=n;return c|0}default:{c=0;r=n;return c|0}}}case 2:{k[e>>2]=k[b>>2];k[d>>2]=k[e>>2];c=we(a,d,c)|0;r=n;return c|0}case 1:{k[f>>2]=k[b>>2];k[d>>2]=k[f>>2];c=te(a,d,c)|0;r=n;return c|0}case 4:{k[g>>2]=k[b>>2];k[d>>2]=k[g>>2];c=pe(a,d,c)|0;r=n;return c|0}case 3:{k[h>>2]=k[b>>2];k[d>>2]=k[h>>2];c=me(a,d,c)|0;r=n;return c|0}case 6:{k[j>>2]=k[b>>2];k[d>>2]=k[j>>2];c=je(a,d,c)|0;r=n;return c|0}case 5:{k[m>>2]=k[b>>2];k[d>>2]=k[m>>2];c=ke(a,d,c)|0;r=n;return c|0}default:{c=0;r=n;return c|0}}return 0}function Vc(a,b,c){a=a|0;b=b|0;c=c|0;var d=Pa,e=Pa,f=0,g=0,h=0,j=0;switch(i[a+24>>0]|0){case 1:{g=k[b>>2]|0;f=a+48|0;b=k[f>>2]|0;f=k[f+4>>2]|0;h=a+40|0;f=(mk(sj(k[h>>2]|0,k[h+4>>2]|0,g|0,((g|0)<0)<<31>>31|0)|0,M|0,b|0,f|0)|0)+(k[k[a>>2]>>2]|0)|0;d=da((l[f>>0]|l[f+1>>0]<<8)&65535);e=da(d/da(65535.0));o[c>>2]=(i[a+32>>0]|0)==0?d:e;c=c+4|0;k[c>>2]=0;k[c+4>>2]=0;k[c+8>>2]=0;c=1;return c|0}case 2:{g=k[b>>2]|0;h=a+48|0;b=k[h>>2]|0;h=k[h+4>>2]|0;f=a+40|0;h=(mk(sj(k[f>>2]|0,k[f+4>>2]|0,g|0,((g|0)<0)<<31>>31|0)|0,M|0,b|0,h|0)|0)+(k[k[a>>2]>>2]|0)|0;h=l[h>>0]|l[h+1>>0]<<8|l[h+2>>0]<<16|l[h+3>>0]<<24;b=h>>>16&65535;d=da(h&65535);if(!(i[a+32>>0]|0)){o[c>>2]=d;d=da(b&65535)}else{d=da(d/da(65535.0));o[c>>2]=d;d=da(da(b&65535)/da(65535.0))}o[c+4>>2]=d;h=c+8|0;k[h>>2]=0;k[h+4>>2]=0;h=1;return h|0}case 3:{b=k[b>>2]|0;h=a+48|0;f=k[h>>2]|0;h=k[h+4>>2]|0;g=a+40|0;h=(mk(sj(k[g>>2]|0,k[g+4>>2]|0,b|0,((b|0)<0)<<31>>31|0)|0,M|0,f|0,h|0)|0)+(k[k[a>>2]>>2]|0)|0;f=h+2|0;f=l[f>>0]|l[f+1>>0]<<8;b=h+4|0;b=l[b>>0]|l[b+1>>0]<<8;d=da((l[h>>0]|l[h+1>>0]<<8)&65535);if(!(i[a+32>>0]|0)){o[c>>2]=d;e=da(b&65535);d=da(f&65535)}else{e=da(d/da(65535.0));o[c>>2]=e;e=da(da(b&65535)/da(65535.0));d=da(da(f&65535)/da(65535.0))}o[c+4>>2]=d;o[c+8>>2]=e;o[c+12>>2]=da(0.0);h=1;return h|0}case 4:{h=k[b>>2]|0;j=a+48|0;g=k[j>>2]|0;j=k[j+4>>2]|0;b=a+40|0;j=(mk(sj(k[b>>2]|0,k[b+4>>2]|0,h|0,((h|0)<0)<<31>>31|0)|0,M|0,g|0,j|0)|0)+(k[k[a>>2]>>2]|0)|0;g=j;g=l[g>>0]|l[g+1>>0]<<8|l[g+2>>0]<<16|l[g+3>>0]<<24;j=j+4|0;j=l[j>>0]|l[j+1>>0]<<8|l[j+2>>0]<<16|l[j+3>>0]<<24;h=(i[a+32>>0]|0)==0;b=(Wj(g|0,j|0,16)|0)&65535;f=j&65535;a=(Wj(g|0,j|0,48)|0)&65535;d=da(g&65535);if(h){o[c>>2]=d;e=da(b&65535);o[c+4>>2]=e;e=da(f&65535);o[c+8>>2]=e;e=da(a&65535);o[c+12>>2]=e;j=1;return j|0}else{e=da(d/da(65535.0));o[c>>2]=e;e=da(da(b&65535)/da(65535.0));o[c+4>>2]=e;e=da(da(f&65535)/da(65535.0));o[c+8>>2]=e;e=da(da(a&65535)/da(65535.0));o[c+12>>2]=e;j=1;return j|0}}default:{j=0;return j|0}}return 0}function Wc(a,b){a=a|0;b=b|0;var c=0,d=0,e=0,f=0,g=0,h=0,m=0,n=0,o=0,p=0,q=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0;A=r;r=r+80|0;x=A;y=A+64|0;z=b+8|0;u=z;v=k[u>>2]|0;u=k[u+4>>2]|0;w=b+16|0;d=w;c=k[d>>2]|0;d=mk(c|0,k[d+4>>2]|0,4,0)|0;e=M;if((u|0)<(e|0)|(u|0)==(e|0)&v>>>0>>0){z=0;r=A;return z|0}v=(k[b>>2]|0)+c|0;v=l[v>>0]|l[v+1>>0]<<8|l[v+2>>0]<<16|l[v+3>>0]<<24;u=w;k[u>>2]=d;k[u+4>>2]=e;if((v|0)<1){z=0;r=A;return z|0}u=a+4|0;c=a+8|0;f=k[c>>2]|0;e=k[u>>2]|0;d=f-e>>2;if(v>>>0<=d>>>0){if(v>>>0>>0?(g=e+(v<<2)|0,(f|0)!=(g|0)):0)k[c>>2]=f+(~((f+-4-g|0)>>>2)<<2)}else wg(u,v-d|0);s=k[a+20>>2]|0;t=x+60|0;q=0;while(1){n=z;m=k[n>>2]|0;n=k[n+4>>2]|0;a=w;d=k[a>>2]|0;a=k[a+4>>2]|0;if(!((n|0)>(a|0)|(n|0)==(a|0)&m>>>0>d>>>0)){c=0;d=27;break}o=k[b>>2]|0;p=i[o+d>>0]|0;c=mk(d|0,a|0,1,0)|0;h=M;g=w;k[g>>2]=c;k[g+4>>2]=h;if(!((n|0)>(h|0)|(n|0)==(h|0)&m>>>0>c>>>0)){c=0;d=27;break}h=i[o+c>>0]|0;c=mk(d|0,a|0,2,0)|0;g=M;f=w;k[f>>2]=c;k[f+4>>2]=g;if(!((n|0)>(g|0)|(n|0)==(g|0)&m>>>0>c>>>0)){c=0;d=27;break}g=i[o+c>>0]|0;c=mk(d|0,a|0,3,0)|0;f=M;e=w;k[e>>2]=c;k[e+4>>2]=f;if(!((n|0)>(f|0)|(n|0)==(f|0)&m>>>0>c>>>0)){c=0;d=27;break}e=i[o+c>>0]|0;f=mk(d|0,a|0,4,0)|0;c=w;k[c>>2]=f;k[c+4>>2]=M;c=mk(d|0,a|0,6,0)|0;d=M;if((n|0)<(d|0)|(n|0)==(d|0)&m>>>0>>0){c=0;d=27;break}a=o+f|0;a=l[a>>0]|l[a+1>>0]<<8;n=w;k[n>>2]=c;k[n+4>>2]=d;n=h&255;zi(x);o=$(Mi(n)|0,g&255)|0;$g(x,p&255,0,g,n,e<<24>>24!=0,o,((o|0)<0)<<31>>31,0,0);j[t>>1]=a;a=vj(88)|0;Bi(a,x);k[y>>2]=a;a=kg(s,y)|0;g=k[y>>2]|0;k[y>>2]=0;if(g|0){c=k[g+68>>2]|0;d=c;if(c|0){e=g+72|0;f=k[e>>2]|0;if((f|0)!=(c|0))k[e>>2]=f+(~((f+-4-d|0)>>>2)<<2);Vl(c)}p=g+64|0;c=k[p>>2]|0;k[p>>2]=0;if(c|0){d=k[c>>2]|0;if(d|0){e=c+4|0;if((k[e>>2]|0)!=(d|0))k[e>>2]=d;Vl(d)}Vl(c)}Vl(g)}k[(k[u>>2]|0)+(q<<2)>>2]=a;q=q+1|0;if((q|0)>=(v|0)){c=1;d=27;break}}if((d|0)==27){r=A;return c|0}return 0}function Xc(a,b){a=a|0;b=b|0;var c=0,d=0,e=0,f=0,g=0,h=0,i=0,j=0,l=0;g=a+92|0;h=k[b>>2]|0;i=(h|0)<0;j=h+1|0;do if(!i){b=((j|0)%3|0|0)==0?h+-2|0:j;if(!((h>>>0)%3|0)){e=h+2|0;d=b;break}else{e=h+-1|0;d=b;break}}else{e=h;d=h}while(0);f=a+128|0;b=k[f>>2]|0;switch(b|0){case 1:case 0:{if((d|0)<0)b=-1073741824;else b=k[(k[k[g>>2]>>2]|0)+(((d>>>0)/3|0)*12|0)+(((d>>>0)%3|0)<<2)>>2]|0;c=k[a+100>>2]|0;d=c+(b<<2)|0;k[d>>2]=(k[d>>2]|0)+1;if((e|0)<0)b=-1073741824;else b=k[(k[k[g>>2]>>2]|0)+(((e>>>0)/3|0)*12|0)+(((e>>>0)%3|0)<<2)>>2]|0;c=c+(b<<2)|0;k[c>>2]=(k[c>>2]|0)+1;c=32;break}case 5:{if(i)b=-1073741824;else b=k[(k[k[g>>2]>>2]|0)+(((h>>>0)/3|0)*12|0)+(((h>>>0)%3|0)<<2)>>2]|0;c=k[a+100>>2]|0;b=c+(b<<2)|0;k[b>>2]=(k[b>>2]|0)+1;if((d|0)<0)b=-1073741824;else b=k[(k[k[g>>2]>>2]|0)+(((d>>>0)/3|0)*12|0)+(((d>>>0)%3|0)<<2)>>2]|0;d=c+(b<<2)|0;k[d>>2]=(k[d>>2]|0)+1;if((e|0)<0)b=-1073741824;else b=k[(k[k[g>>2]>>2]|0)+(((e>>>0)/3|0)*12|0)+(((e>>>0)%3|0)<<2)>>2]|0;c=c+(b<<2)|0;k[c>>2]=(k[c>>2]|0)+2;c=32;break}case 3:{if(i)b=-1073741824;else b=k[(k[k[g>>2]>>2]|0)+(((h>>>0)/3|0)*12|0)+(((h>>>0)%3|0)<<2)>>2]|0;c=k[a+100>>2]|0;b=c+(b<<2)|0;k[b>>2]=(k[b>>2]|0)+1;if((d|0)<0)b=-1073741824;else b=k[(k[k[g>>2]>>2]|0)+(((d>>>0)/3|0)*12|0)+(((d>>>0)%3|0)<<2)>>2]|0;d=c+(b<<2)|0;k[d>>2]=(k[d>>2]|0)+2;if((e|0)<0)b=-1073741824;else b=k[(k[k[g>>2]>>2]|0)+(((e>>>0)/3|0)*12|0)+(((e>>>0)%3|0)<<2)>>2]|0;c=c+(b<<2)|0;k[c>>2]=(k[c>>2]|0)+1;c=32;break}case 7:{if(i)b=-1073741824;else b=k[(k[k[g>>2]>>2]|0)+(((h>>>0)/3|0)*12|0)+(((h>>>0)%3|0)<<2)>>2]|0;c=k[a+100>>2]|0;b=c+(b<<2)|0;k[b>>2]=(k[b>>2]|0)+2;if((d|0)<0)b=-1073741824;else b=k[(k[k[g>>2]>>2]|0)+(((d>>>0)/3|0)*12|0)+(((d>>>0)%3|0)<<2)>>2]|0;d=c+(b<<2)|0;k[d>>2]=(k[d>>2]|0)+2;if((e|0)<0)b=-1073741824;else b=k[(k[k[g>>2]>>2]|0)+(((e>>>0)/3|0)*12|0)+(((e>>>0)%3|0)<<2)>>2]|0;c=c+(b<<2)|0;k[c>>2]=(k[c>>2]|0)+2;c=32;break}default:{}}if((c|0)==32)b=k[f>>2]|0;switch(b|0){case 5:case 0:break;default:{k[a+132>>2]=-1;return}}b=k[g>>2]|0;if(!i?(l=((j|0)%3|0|0)==0?h+-2|0:j,(l|0)>=0):0)b=k[(k[b>>2]|0)+(((l>>>0)/3|0)*12|0)+(((l>>>0)%3|0)<<2)>>2]|0;else b=-1073741824;k[a+132>>2]=(k[(k[a+100>>2]|0)+(b<<2)>>2]|0)<6?5:0;return}function Yc(a,b,c,d,e){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;var f=0,g=0,h=0,i=0,j=0,l=0,m=0,n=0,o=0,p=0;l=a;i=b;j=i;g=c;n=d;h=n;if(!j){f=(e|0)!=0;if(!h){if(f){k[e>>2]=(l>>>0)%(g>>>0);k[e+4>>2]=0}n=0;e=(l>>>0)/(g>>>0)>>>0;return (M=n,e)|0}else{if(!f){n=0;e=0;return (M=n,e)|0}k[e>>2]=a|0;k[e+4>>2]=b&0;n=0;e=0;return (M=n,e)|0}}f=(h|0)==0;do if(g){if(!f){f=(ca(h|0)|0)-(ca(j|0)|0)|0;if(f>>>0<=31){m=f+1|0;h=31-f|0;b=f-31>>31;g=m;a=l>>>(m>>>0)&b|j<>>(m>>>0)&b;f=0;h=l<>2]=a|0;k[e+4>>2]=i|b&0;n=0;e=0;return (M=n,e)|0}f=g-1|0;if(f&g|0){h=(ca(g|0)|0)+33-(ca(j|0)|0)|0;p=64-h|0;m=32-h|0;i=m>>31;o=h-32|0;b=o>>31;g=h;a=m-1>>31&j>>>(o>>>0)|(j<>>(h>>>0))&b;b=b&j>>>(h>>>0);f=l<>>(o>>>0))&i|l<>31;break}if(e|0){k[e>>2]=f&l;k[e+4>>2]=0}if((g|0)==1){o=i|b&0;p=a|0|0;return (M=o,p)|0}else{p=cj(g|0)|0;o=j>>>(p>>>0)|0;p=j<<32-p|l>>>(p>>>0)|0;return (M=o,p)|0}}else{if(f){if(e|0){k[e>>2]=(j>>>0)%(g>>>0);k[e+4>>2]=0}o=0;p=(j>>>0)/(g>>>0)>>>0;return (M=o,p)|0}if(!l){if(e|0){k[e>>2]=0;k[e+4>>2]=(j>>>0)%(h>>>0)}o=0;p=(j>>>0)/(h>>>0)>>>0;return (M=o,p)|0}f=h-1|0;if(!(f&h)){if(e|0){k[e>>2]=a|0;k[e+4>>2]=f&j|b&0}o=0;p=j>>>((cj(h|0)|0)>>>0);return (M=o,p)|0}f=(ca(h|0)|0)-(ca(j|0)|0)|0;if(f>>>0<=30){b=f+1|0;h=31-f|0;g=b;a=j<>>(b>>>0);b=j>>>(b>>>0);f=0;h=l<>2]=a|0;k[e+4>>2]=i|b&0;o=0;p=0;return (M=o,p)|0}while(0);if(!g){j=h;i=0;h=0}else{m=c|0|0;l=n|d&0;j=mk(m|0,l|0,-1,-1)|0;c=M;i=h;h=0;do{d=i;i=f>>>31|i<<1;f=h|f<<1;d=a<<1|d>>>31|0;n=a>>>31|b<<1|0;Zj(j|0,c|0,d|0,n|0)|0;p=M;o=p>>31|((p|0)<0?-1:0)<<1;h=o&1;a=Zj(d|0,n|0,o&m|0,(((p|0)<0?-1:0)>>31|((p|0)<0?-1:0)<<1)&l|0)|0;b=M;g=g-1|0}while((g|0)!=0);j=i;i=0}g=0;if(e|0){k[e>>2]=a;k[e+4>>2]=b}o=(f|0)>>>31|(j|g)<<1|(g<<1|f>>>31)&0|i;p=(f<<1|0>>>31)&-2|h;return (M=o,p)|0}function Zc(a,b){a=a|0;b=b|0;var c=0,d=0,e=0,f=0,g=0;g=a+92|0;c=k[b>>2]|0;d=(c|0)<0;b=c+1|0;do if(!d){b=((b|0)%3|0|0)==0?c+-2|0:b;if(!((c>>>0)%3|0)){e=c+2|0;f=b;break}else{e=c+-1|0;f=b;break}}else{e=c;f=c}while(0);switch(k[a+112>>2]|0){case 1:case 0:{if((f|0)<0)b=-1073741824;else b=k[(k[k[g>>2]>>2]|0)+(((f>>>0)/3|0)*12|0)+(((f>>>0)%3|0)<<2)>>2]|0;c=k[a+100>>2]|0;d=c+(b<<2)|0;k[d>>2]=(k[d>>2]|0)+1;if((e|0)<0)b=-1073741824;else b=k[(k[k[g>>2]>>2]|0)+(((e>>>0)/3|0)*12|0)+(((e>>>0)%3|0)<<2)>>2]|0;e=c+(b<<2)|0;k[e>>2]=(k[e>>2]|0)+1;break}case 5:{if(d)b=-1073741824;else b=k[(k[k[g>>2]>>2]|0)+(((c>>>0)/3|0)*12|0)+(((c>>>0)%3|0)<<2)>>2]|0;c=k[a+100>>2]|0;d=c+(b<<2)|0;k[d>>2]=(k[d>>2]|0)+1;if((f|0)<0)b=-1073741824;else b=k[(k[k[g>>2]>>2]|0)+(((f>>>0)/3|0)*12|0)+(((f>>>0)%3|0)<<2)>>2]|0;d=c+(b<<2)|0;k[d>>2]=(k[d>>2]|0)+1;if((e|0)<0)b=-1073741824;else b=k[(k[k[g>>2]>>2]|0)+(((e>>>0)/3|0)*12|0)+(((e>>>0)%3|0)<<2)>>2]|0;e=c+(b<<2)|0;k[e>>2]=(k[e>>2]|0)+2;break}case 3:{if(d)b=-1073741824;else b=k[(k[k[g>>2]>>2]|0)+(((c>>>0)/3|0)*12|0)+(((c>>>0)%3|0)<<2)>>2]|0;c=k[a+100>>2]|0;d=c+(b<<2)|0;k[d>>2]=(k[d>>2]|0)+1;if((f|0)<0)b=-1073741824;else b=k[(k[k[g>>2]>>2]|0)+(((f>>>0)/3|0)*12|0)+(((f>>>0)%3|0)<<2)>>2]|0;d=c+(b<<2)|0;k[d>>2]=(k[d>>2]|0)+2;if((e|0)<0)b=-1073741824;else b=k[(k[k[g>>2]>>2]|0)+(((e>>>0)/3|0)*12|0)+(((e>>>0)%3|0)<<2)>>2]|0;e=c+(b<<2)|0;k[e>>2]=(k[e>>2]|0)+1;break}case 7:{if(d)b=-1073741824;else b=k[(k[k[g>>2]>>2]|0)+(((c>>>0)/3|0)*12|0)+(((c>>>0)%3|0)<<2)>>2]|0;c=k[a+100>>2]|0;d=c+(b<<2)|0;k[d>>2]=(k[d>>2]|0)+2;if((f|0)<0)b=-1073741824;else b=k[(k[k[g>>2]>>2]|0)+(((f>>>0)/3|0)*12|0)+(((f>>>0)%3|0)<<2)>>2]|0;d=c+(b<<2)|0;k[d>>2]=(k[d>>2]|0)+2;if((e|0)<0)b=-1073741824;else b=k[(k[k[g>>2]>>2]|0)+(((e>>>0)/3|0)*12|0)+(((e>>>0)%3|0)<<2)>>2]|0;e=c+(b<<2)|0;k[e>>2]=(k[e>>2]|0)+2;break}default:{}}if((f|0)<0)b=-1073741824;else b=k[(k[k[g>>2]>>2]|0)+(((f>>>0)/3|0)*12|0)+(((f>>>0)%3|0)<<2)>>2]|0;b=k[(k[a+100>>2]|0)+(b<<2)>>2]|0;c=k[a+120>>2]|0;if((b|0)<(c|0)){g=c;g=g-c|0;a=a+116|0;k[a>>2]=g;return}g=k[a+124>>2]|0;g=(b|0)>(g|0)?g:b;g=g-c|0;a=a+116|0;k[a>>2]=g;return}function _c(a,b,c){a=a|0;b=b|0;c=c|0;var d=Pa,e=0,f=Pa,g=0,h=0;switch(i[a+24>>0]|0){case 1:{g=k[b>>2]|0;e=a+48|0;b=k[e>>2]|0;e=k[e+4>>2]|0;h=a+40|0;e=(mk(sj(k[h>>2]|0,k[h+4>>2]|0,g|0,((g|0)<0)<<31>>31|0)|0,M|0,b|0,e|0)|0)+(k[k[a>>2]>>2]|0)|0;f=da((l[e>>0]|l[e+1>>0]<<8)<<16>>16);d=da(f/da(32767.0));o[c>>2]=(i[a+32>>0]|0)==0?f:d;c=c+4|0;k[c>>2]=0;k[c+4>>2]=0;c=1;return c|0}case 2:{g=k[b>>2]|0;h=a+48|0;b=k[h>>2]|0;h=k[h+4>>2]|0;e=a+40|0;h=(mk(sj(k[e>>2]|0,k[e+4>>2]|0,g|0,((g|0)<0)<<31>>31|0)|0,M|0,b|0,h|0)|0)+(k[k[a>>2]>>2]|0)|0;h=l[h>>0]|l[h+1>>0]<<8|l[h+2>>0]<<16|l[h+3>>0]<<24;b=h>>>16&65535;d=da((h&65535)<<16>>16);if(!(i[a+32>>0]|0)){o[c>>2]=d;d=da(b<<16>>16)}else{d=da(d/da(32767.0));o[c>>2]=d;d=da(da(b<<16>>16)/da(32767.0))}o[c+4>>2]=d;o[c+8>>2]=da(0.0);h=1;return h|0}case 3:{e=k[b>>2]|0;h=a+48|0;b=k[h>>2]|0;h=k[h+4>>2]|0;g=a+40|0;h=(mk(sj(k[g>>2]|0,k[g+4>>2]|0,e|0,((e|0)<0)<<31>>31|0)|0,M|0,b|0,h|0)|0)+(k[k[a>>2]>>2]|0)|0;b=h+2|0;b=l[b>>0]|l[b+1>>0]<<8;e=h+4|0;e=l[e>>0]|l[e+1>>0]<<8;d=da((l[h>>0]|l[h+1>>0]<<8)<<16>>16);if(!(i[a+32>>0]|0)){o[c>>2]=d;f=da(b<<16>>16);o[c+4>>2]=f;f=da(e<<16>>16);o[c+8>>2]=f;h=1;return h|0}else{f=da(d/da(32767.0));o[c>>2]=f;f=da(da(b<<16>>16)/da(32767.0));o[c+4>>2]=f;f=da(da(e<<16>>16)/da(32767.0));o[c+8>>2]=f;h=1;return h|0}}case 4:{h=k[b>>2]|0;e=a+48|0;g=k[e>>2]|0;e=k[e+4>>2]|0;b=a+40|0;e=(mk(sj(k[b>>2]|0,k[b+4>>2]|0,h|0,((h|0)<0)<<31>>31|0)|0,M|0,g|0,e|0)|0)+(k[k[a>>2]>>2]|0)|0;g=e;g=l[g>>0]|l[g+1>>0]<<8|l[g+2>>0]<<16|l[g+3>>0]<<24;e=e+4|0;e=l[e>>0]|l[e+1>>0]<<8|l[e+2>>0]<<16|l[e+3>>0]<<24;h=(i[a+32>>0]|0)==0;b=(Wj(g|0,e|0,16)|0)&65535;e=e&65535;d=da((g&65535)<<16>>16);if(h){o[c>>2]=d;f=da(b<<16>>16);o[c+4>>2]=f;f=da(e<<16>>16);o[c+8>>2]=f;h=1;return h|0}else{f=da(d/da(32767.0));o[c>>2]=f;f=da(da(b<<16>>16)/da(32767.0));o[c+4>>2]=f;f=da(da(e<<16>>16)/da(32767.0));o[c+8>>2]=f;h=1;return h|0}}default:{h=0;return h|0}}return 0}function $c(a,b,c){a=a|0;b=b|0;c=c|0;var d=0,e=0,f=0,g=0,h=0,j=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0;u=Va[k[(k[a>>2]|0)+36>>2]&127](a)|0;if((u|0)<1){u=0;return u|0}s=a+16|0;h=$((k[b+4>>2]|0)-(k[b>>2]|0)>>2,u)|0;t=a+20|0;f=k[t>>2]|0;e=k[s>>2]|0;d=f-e>>2;if(h>>>0<=d>>>0){if(h>>>0>>0?(g=e+(h<<2)|0,(f|0)!=(g|0)):0)k[t>>2]=f+(~((f+-4-g|0)>>>2)<<2)}else wg(s,h-d|0);q=c+8|0;o=q;j=k[o>>2]|0;o=k[o+4>>2]|0;r=c+16|0;g=r;f=k[g>>2]|0;g=k[g+4>>2]|0;if(!((o|0)>(g|0)|(o|0)==(g|0)&j>>>0>f>>>0)){u=0;return u|0}m=k[c>>2]|0;p=i[m+f>>0]|0;d=mk(f|0,g|0,1,0)|0;e=M;n=r;k[n>>2]=d;k[n+4>>2]=e;a:do if(!(p<<24>>24)){if(!((o|0)>(e|0)|(o|0)==(e|0)&j>>>0>d>>>0)){u=0;return u|0}l=i[m+d>>0]|0;e=mk(f|0,g|0,2,0)|0;f=M;g=r;k[g>>2]=e;k[g+4>>2]=f;g=k[t>>2]|0;n=k[s>>2]|0;d=g-n|0;h=n;if(l<<24>>24==4){q=mk(e|0,f|0,d|0,0)|0;p=M;if((o|0)<(p|0)|(o|0)==(p|0)&j>>>0>>0){u=0;return u|0}else{Mh(h|0,m+e|0,d|0)|0;q=r;q=mk(k[q>>2]|0,k[q+4>>2]|0,d|0,0)|0;k[r>>2]=q;k[r+4>>2]=M;break}}if(d|0){p=l&255;m=l&255;d=0;l=o;h=n;while(1){o=mk(e|0,f|0,p|0,0)|0;n=M;if(!((l|0)<(n|0)|(l|0)==(n|0)&j>>>0>>0)){Mh(h+(d<<2)|0,(k[c>>2]|0)+e|0,m|0)|0;e=r;e=mk(k[e>>2]|0,k[e+4>>2]|0,p|0,0)|0;f=M;h=r;k[h>>2]=e;k[h+4>>2]=f;h=k[s>>2]|0;g=k[t>>2]|0}d=d+1|0;if(d>>>0>=g-h>>2>>>0)break a;j=q;l=k[j+4>>2]|0;j=k[j>>2]|0}}}else if(!(Kg(h,u,c,k[s>>2]|0)|0)){u=0;return u|0}while(0);g=k[s>>2]|0;d=k[t>>2]|0;do if((g|0)==(d|0))f=a+28|0;else{f=a+28|0;e=k[f>>2]|0;if(!e)e=g;else{if(Va[k[(k[e>>2]|0)+40>>2]&127](e)|0)break;e=k[s>>2]|0;d=k[t>>2]|0}_i(e,d-e>>2,e)}while(0);d=k[f>>2]|0;if(d|0){if(!(Za[k[(k[d>>2]|0)+36>>2]&127](d,c)|0)){u=0;return u|0}e=k[s>>2]|0;d=k[t>>2]|0;if((e|0)!=(d|0)?(t=k[f>>2]|0,!(Ua[k[(k[t>>2]|0)+52>>2]&63](t,e,e,d-e>>2,u,k[b>>2]|0)|0)):0){u=0;return u|0}}u=1;return u|0}function ad(a,b,c,d){a=a|0;b=b|0;c=c|0;d=d|0;var e=0,f=0,g=0,h=0,i=0,j=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0.0;o=b+8|0;r=k[o>>2]|0;g=(k[c>>2]|0)-r|0;n=c+4|0;h=(k[n>>2]|0)-r|0;e=c;k[e>>2]=g;k[e+4>>2]=h;s=+O(+(+(g|0)))+ +O(+(+(h|0)));e=k[o>>2]|0;p=s<=+(e|0);if(!p){if((g|0)>-1)if((h|0)<=-1)if((g|0)<1){i=-1;j=-1}else q=6;else{i=1;j=1}else if((h|0)<1){i=-1;j=-1}else q=6;if((q|0)==6){i=(g|0)>0?1:-1;j=(h|0)>0?1:-1}m=$(e,i)|0;l=$(e,j)|0;e=(g<<1)-m|0;k[c>>2]=e;f=(h<<1)-l|0;k[n>>2]=f;if(($(i,j)|0)>-1){f=0-f|0;k[c>>2]=f;e=0-e|0}else k[c>>2]=f;g=(f+m|0)/2|0;k[c>>2]=g;h=(e+l|0)/2|0;k[n>>2]=h}if(!g)e=(h|0)==0;else e=(g|0)<0&(h|0)<1;do if(!g)if(!h)l=0;else l=(h|0)>0?3:1;else if((g|0)>0){l=(h>>31)+2|0;break}else{l=(h|0)<1?0:3;break}while(0);if(e){i=1;f=g;e=h}else{switch(l|0){case 1:{f=h;e=0-g|0;break}case 2:{f=0-g|0;e=0-h|0;break}case 3:{f=0-h|0;e=g;break}default:{f=g;e=h}}i=c;k[i>>2]=f;k[i+4>>2]=e;i=0}g=(k[d>>2]|0)+f|0;k[a>>2]=g;e=(k[d+4>>2]|0)+e|0;m=a+4|0;k[m>>2]=e;j=k[o>>2]|0;if((j|0)>=(g|0)){if((g|0)<(0-j|0))g=(k[b+4>>2]|0)+g|0}else g=g-(k[b+4>>2]|0)|0;k[a>>2]=g;if((j|0)>=(e|0)){if((e|0)<(0-j|0))e=(k[b+4>>2]|0)+e|0}else e=e-(k[b+4>>2]|0)|0;k[m>>2]=e;if(i){f=g;i=e}else{switch((4-l|0)%4|0|0){case 1:{f=e;e=0-g|0;break}case 2:{f=0-g|0;e=0-e|0;break}case 3:{f=0-e|0;e=g;break}default:f=g}i=a;k[i>>2]=f;k[i+4>>2]=e;i=e}if(p){p=f;q=i;p=p+r|0;q=q+r|0;r=a;a=r;k[a>>2]=p;r=r+4|0;k[r>>2]=q;return}if((f|0)>-1)if((i|0)<=-1)if((f|0)<1){g=-1;h=-1}else q=45;else{g=1;h=1}else if((i|0)<1){g=-1;h=-1}else q=45;if((q|0)==45){g=(f|0)>0?1:-1;h=(i|0)>0?1:-1}l=$(j,g)|0;j=$(j,h)|0;e=(f<<1)-l|0;k[a>>2]=e;f=(i<<1)-j|0;k[m>>2]=f;if(($(g,h)|0)>-1){f=0-f|0;k[a>>2]=f;e=0-e|0}else k[a>>2]=f;p=(f+l|0)/2|0;k[a>>2]=p;q=(e+j|0)/2|0;k[m>>2]=q;p=p+r|0;q=q+r|0;r=a;a=r;k[a>>2]=p;r=r+4|0;k[r>>2]=q;return}function bd(a,b){a=a|0;b=b|0;var c=0,d=0,e=0,f=0,g=0,h=0,i=0,l=0,m=0,n=0,o=0,p=0;d=a+4|0;if(!b){c=k[a>>2]|0;k[a>>2]=0;if(c|0)Vl(c);k[d>>2]=0;return}if(b>>>0>1073741823){a=Ma(4)|0;Fl(a);xa(a|0,976,90)}o=vj(b<<2)|0;c=k[a>>2]|0;k[a>>2]=o;if(c|0)Vl(c);k[d>>2]=b;c=0;do{k[(k[a>>2]|0)+(c<<2)>>2]=0;c=c+1|0}while((c|0)!=(b|0));d=a+8|0;g=k[d>>2]|0;if(!g)return;c=k[g+4>>2]|0;n=b+-1|0;o=(n&b|0)==0;if(o)c=c&n;else c=(c>>>0)%(b>>>0)|0;k[(k[a>>2]|0)+(c<<2)>>2]=d;d=k[g>>2]|0;if(!d)return;else{e=c;f=g;c=g}a:while(1){m=c;b:while(1){c:do if(o){c=d;while(1){l=k[c+4>>2]&n;if((l|0)==(e|0))break c;d=(k[a>>2]|0)+(l<<2)|0;if(!(k[d>>2]|0)){e=l;break b}i=c+10|0;g=k[c>>2]|0;d:do if(!g)d=c;else{h=j[c+8>>1]|0;d=c;while(1){if(h<<16>>16!=(j[g+8>>1]|0))break d;if((j[i>>1]|0)!=(j[g+10>>1]|0))break d;d=k[g>>2]|0;if(!d){d=g;break}else{p=g;g=d;d=p}}}while(0);k[m>>2]=k[d>>2];k[d>>2]=k[k[(k[a>>2]|0)+(l<<2)>>2]>>2];k[k[(k[a>>2]|0)+(l<<2)>>2]>>2]=c;c=k[f>>2]|0;if(!c){c=36;break a}}}else{c=d;while(1){l=((k[c+4>>2]|0)>>>0)%(b>>>0)|0;if((l|0)==(e|0))break c;d=(k[a>>2]|0)+(l<<2)|0;if(!(k[d>>2]|0)){e=l;break b}h=c+10|0;g=k[c>>2]|0;e:do if(!g)d=c;else{i=j[c+8>>1]|0;d=c;while(1){if(i<<16>>16!=(j[g+8>>1]|0))break e;if((j[h>>1]|0)!=(j[g+10>>1]|0))break e;d=k[g>>2]|0;if(!d){d=g;break}else{p=g;g=d;d=p}}}while(0);k[m>>2]=k[d>>2];k[d>>2]=k[k[(k[a>>2]|0)+(l<<2)>>2]>>2];k[k[(k[a>>2]|0)+(l<<2)>>2]>>2]=c;c=k[f>>2]|0;if(!c){c=36;break a}}}while(0);d=k[c>>2]|0;if(!d){c=36;break a}else{f=c;m=c}}k[d>>2]=m;d=k[c>>2]|0;if(!d){c=36;break}else f=c}if((c|0)==36)return}function cd(a,b){a=a|0;b=b|0;var c=0,d=0,e=0,f=0,g=0,h=0,i=0,j=0,l=0,m=0,n=0,o=0;d=a+4|0;if(!b){c=k[a>>2]|0;k[a>>2]=0;if(c|0)Vl(c);k[d>>2]=0;return}if(b>>>0>1073741823){a=Ma(4)|0;Fl(a);xa(a|0,976,90)}n=vj(b<<2)|0;c=k[a>>2]|0;k[a>>2]=n;if(c|0)Vl(c);k[d>>2]=b;c=0;do{k[(k[a>>2]|0)+(c<<2)>>2]=0;c=c+1|0}while((c|0)!=(b|0));d=a+8|0;g=k[d>>2]|0;if(!g)return;c=k[g+4>>2]|0;m=b+-1|0;n=(m&b|0)==0;if(n)c=c&m;else c=(c>>>0)%(b>>>0)|0;k[(k[a>>2]|0)+(c<<2)>>2]=d;d=k[g>>2]|0;if(!d)return;else{e=c;f=g;c=g}a:while(1){l=c;b:while(1){c:do if(n){c=d;while(1){j=k[c+4>>2]&m;if((j|0)==(e|0))break c;d=(k[a>>2]|0)+(j<<2)|0;if(!(k[d>>2]|0)){e=j;break b}i=c+12|0;g=k[c>>2]|0;d:do if(!g)d=c;else{h=k[c+8>>2]|0;d=c;while(1){if((h|0)!=(k[g+8>>2]|0))break d;if((k[i>>2]|0)!=(k[g+12>>2]|0))break d;d=k[g>>2]|0;if(!d){d=g;break}else{o=g;g=d;d=o}}}while(0);k[l>>2]=k[d>>2];k[d>>2]=k[k[(k[a>>2]|0)+(j<<2)>>2]>>2];k[k[(k[a>>2]|0)+(j<<2)>>2]>>2]=c;c=k[f>>2]|0;if(!c){c=36;break a}}}else{c=d;while(1){j=((k[c+4>>2]|0)>>>0)%(b>>>0)|0;if((j|0)==(e|0))break c;d=(k[a>>2]|0)+(j<<2)|0;if(!(k[d>>2]|0)){e=j;break b}h=c+12|0;g=k[c>>2]|0;e:do if(!g)d=c;else{i=k[c+8>>2]|0;d=c;while(1){if((i|0)!=(k[g+8>>2]|0))break e;if((k[h>>2]|0)!=(k[g+12>>2]|0))break e;d=k[g>>2]|0;if(!d){d=g;break}else{o=g;g=d;d=o}}}while(0);k[l>>2]=k[d>>2];k[d>>2]=k[k[(k[a>>2]|0)+(j<<2)>>2]>>2];k[k[(k[a>>2]|0)+(j<<2)>>2]>>2]=c;c=k[f>>2]|0;if(!c){c=36;break a}}}while(0);d=k[c>>2]|0;if(!d){c=36;break a}else{f=c;l=c}}k[d>>2]=l;d=k[c>>2]|0;if(!d){c=36;break}else f=c}if((c|0)==36)return}function dd(a,b){a=a|0;b=b|0;var c=0,d=0,e=0,f=0,g=0,h=0,j=0,l=0,m=0,n=0,o=0,p=0;d=a+4|0;if(!b){c=k[a>>2]|0;k[a>>2]=0;if(c|0)Vl(c);k[d>>2]=0;return}if(b>>>0>1073741823){a=Ma(4)|0;Fl(a);xa(a|0,976,90)}o=vj(b<<2)|0;c=k[a>>2]|0;k[a>>2]=o;if(c|0)Vl(c);k[d>>2]=b;c=0;do{k[(k[a>>2]|0)+(c<<2)>>2]=0;c=c+1|0}while((c|0)!=(b|0));d=a+8|0;g=k[d>>2]|0;if(!g)return;c=k[g+4>>2]|0;n=b+-1|0;o=(n&b|0)==0;if(o)c=c&n;else c=(c>>>0)%(b>>>0)|0;k[(k[a>>2]|0)+(c<<2)>>2]=d;d=k[g>>2]|0;if(!d)return;else{e=c;f=g;c=g}a:while(1){m=c;b:while(1){c:do if(o){c=d;while(1){l=k[c+4>>2]&n;if((l|0)==(e|0))break c;d=(k[a>>2]|0)+(l<<2)|0;if(!(k[d>>2]|0)){e=l;break b}j=c+9|0;g=k[c>>2]|0;d:do if(!g)d=c;else{h=i[c+8>>0]|0;d=c;while(1){if(h<<24>>24!=(i[g+8>>0]|0))break d;if((i[j>>0]|0)!=(i[g+9>>0]|0))break d;d=k[g>>2]|0;if(!d){d=g;break}else{p=g;g=d;d=p}}}while(0);k[m>>2]=k[d>>2];k[d>>2]=k[k[(k[a>>2]|0)+(l<<2)>>2]>>2];k[k[(k[a>>2]|0)+(l<<2)>>2]>>2]=c;c=k[f>>2]|0;if(!c){c=36;break a}}}else{c=d;while(1){l=((k[c+4>>2]|0)>>>0)%(b>>>0)|0;if((l|0)==(e|0))break c;d=(k[a>>2]|0)+(l<<2)|0;if(!(k[d>>2]|0)){e=l;break b}h=c+9|0;g=k[c>>2]|0;e:do if(!g)d=c;else{j=i[c+8>>0]|0;d=c;while(1){if(j<<24>>24!=(i[g+8>>0]|0))break e;if((i[h>>0]|0)!=(i[g+9>>0]|0))break e;d=k[g>>2]|0;if(!d){d=g;break}else{p=g;g=d;d=p}}}while(0);k[m>>2]=k[d>>2];k[d>>2]=k[k[(k[a>>2]|0)+(l<<2)>>2]>>2];k[k[(k[a>>2]|0)+(l<<2)>>2]>>2]=c;c=k[f>>2]|0;if(!c){c=36;break a}}}while(0);d=k[c>>2]|0;if(!d){c=36;break a}else{f=c;m=c}}k[d>>2]=m;d=k[c>>2]|0;if(!d){c=36;break}else f=c}if((c|0)==36)return}function ed(a,b,c){a=a|0;b=b|0;c=c|0;var d=Pa,e=0,f=Pa,g=0,h=0;switch(i[a+24>>0]|0){case 1:{g=k[b>>2]|0;e=a+48|0;b=k[e>>2]|0;e=k[e+4>>2]|0;h=a+40|0;e=(mk(sj(k[h>>2]|0,k[h+4>>2]|0,g|0,((g|0)<0)<<31>>31|0)|0,M|0,b|0,e|0)|0)+(k[k[a>>2]>>2]|0)|0;f=da((l[e>>0]|l[e+1>>0]<<8)&65535);d=da(f/da(65535.0));o[c>>2]=(i[a+32>>0]|0)==0?f:d;c=c+4|0;k[c>>2]=0;k[c+4>>2]=0;c=1;return c|0}case 2:{g=k[b>>2]|0;h=a+48|0;b=k[h>>2]|0;h=k[h+4>>2]|0;e=a+40|0;h=(mk(sj(k[e>>2]|0,k[e+4>>2]|0,g|0,((g|0)<0)<<31>>31|0)|0,M|0,b|0,h|0)|0)+(k[k[a>>2]>>2]|0)|0;h=l[h>>0]|l[h+1>>0]<<8|l[h+2>>0]<<16|l[h+3>>0]<<24;b=h>>>16&65535;d=da(h&65535);if(!(i[a+32>>0]|0)){o[c>>2]=d;d=da(b&65535)}else{d=da(d/da(65535.0));o[c>>2]=d;d=da(da(b&65535)/da(65535.0))}o[c+4>>2]=d;o[c+8>>2]=da(0.0);h=1;return h|0}case 3:{e=k[b>>2]|0;h=a+48|0;b=k[h>>2]|0;h=k[h+4>>2]|0;g=a+40|0;h=(mk(sj(k[g>>2]|0,k[g+4>>2]|0,e|0,((e|0)<0)<<31>>31|0)|0,M|0,b|0,h|0)|0)+(k[k[a>>2]>>2]|0)|0;b=h+2|0;b=l[b>>0]|l[b+1>>0]<<8;e=h+4|0;e=l[e>>0]|l[e+1>>0]<<8;d=da((l[h>>0]|l[h+1>>0]<<8)&65535);if(!(i[a+32>>0]|0)){o[c>>2]=d;f=da(b&65535);o[c+4>>2]=f;f=da(e&65535);o[c+8>>2]=f;h=1;return h|0}else{f=da(d/da(65535.0));o[c>>2]=f;f=da(da(b&65535)/da(65535.0));o[c+4>>2]=f;f=da(da(e&65535)/da(65535.0));o[c+8>>2]=f;h=1;return h|0}}case 4:{h=k[b>>2]|0;e=a+48|0;g=k[e>>2]|0;e=k[e+4>>2]|0;b=a+40|0;e=(mk(sj(k[b>>2]|0,k[b+4>>2]|0,h|0,((h|0)<0)<<31>>31|0)|0,M|0,g|0,e|0)|0)+(k[k[a>>2]>>2]|0)|0;g=e;g=l[g>>0]|l[g+1>>0]<<8|l[g+2>>0]<<16|l[g+3>>0]<<24;e=e+4|0;e=l[e>>0]|l[e+1>>0]<<8|l[e+2>>0]<<16|l[e+3>>0]<<24;h=(i[a+32>>0]|0)==0;b=(Wj(g|0,e|0,16)|0)&65535;e=e&65535;d=da(g&65535);if(h){o[c>>2]=d;f=da(b&65535);o[c+4>>2]=f;f=da(e&65535);o[c+8>>2]=f;h=1;return h|0}else{f=da(d/da(65535.0));o[c>>2]=f;f=da(da(b&65535)/da(65535.0));o[c+4>>2]=f;f=da(da(e&65535)/da(65535.0));o[c+8>>2]=f;h=1;return h|0}}default:{h=0;return h|0}}return 0}function fd(a,b,c,d,e,f){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;f=f|0;var g=0,h=0,i=0,j=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0;t=a+8|0;k[t>>2]=e;i=a+32|0;j=a+36|0;h=k[j>>2]|0;g=k[i>>2]|0;f=h-g>>2;if(f>>>0>=e>>>0)if(f>>>0>e>>>0?(l=g+(e<<2)|0,(h|0)!=(l|0)):0){k[j>>2]=h+(~((h+-4-l|0)>>>2)<<2);f=e}else f=e;else{wg(i,e-f|0);f=k[t>>2]|0}r=e>>>0>1073741823?-1:e<<2;s=Sl(r)|0;Zh(s|0,0,r|0)|0;if((f|0)>0){m=a+16|0;l=a+32|0;n=a+12|0;j=0;do{i=k[s+(j<<2)>>2]|0;f=k[m>>2]|0;do if((i|0)<=(f|0)){f=k[n>>2]|0;g=k[l>>2]|0;h=g+(j<<2)|0;if((i|0)<(f|0)){k[h>>2]=f;h=g;break}else{k[h>>2]=i;h=g;break}}else{h=k[l>>2]|0;k[h+(j<<2)>>2]=f}while(0);j=j+1|0;f=k[t>>2]|0}while((j|0)<(f|0));if((f|0)>0){g=0;do{k[c+(g<<2)>>2]=(k[b+(g<<2)>>2]|0)+(k[h+(g<<2)>>2]|0);g=g+1|0;f=k[t>>2]|0}while((g|0)<(f|0));if((f|0)>0){i=a+20|0;h=0;do{f=c+(h<<2)|0;g=k[f>>2]|0;if((g|0)<=(k[m>>2]|0)){if((g|0)<(k[n>>2]|0))k[f>>2]=(k[i>>2]|0)+g}else k[f>>2]=g-(k[i>>2]|0);h=h+1|0;f=k[t>>2]|0}while((h|0)<(f|0))}}}if((e|0)>=(d|0)){Tl(s);return 1}o=0-e|0;p=a+16|0;q=a+32|0;r=a+12|0;a=a+20|0;n=e;do{m=c+(n<<2)|0;l=m+(o<<2)|0;if((f|0)>0){j=0;do{i=k[l+(j<<2)>>2]|0;f=k[p>>2]|0;do if((i|0)<=(f|0)){f=k[r>>2]|0;g=k[q>>2]|0;h=g+(j<<2)|0;if((i|0)<(f|0)){k[h>>2]=f;h=g;break}else{k[h>>2]=i;h=g;break}}else{h=k[q>>2]|0;k[h+(j<<2)>>2]=f}while(0);j=j+1|0;f=k[t>>2]|0}while((j|0)<(f|0));if((f|0)>0){g=0;do{k[m+(g<<2)>>2]=(k[b+(g+n<<2)>>2]|0)+(k[h+(g<<2)>>2]|0);g=g+1|0;f=k[t>>2]|0}while((g|0)<(f|0));if((f|0)>0){h=0;do{f=m+(h<<2)|0;g=k[f>>2]|0;if((g|0)<=(k[p>>2]|0)){if((g|0)<(k[r>>2]|0))k[f>>2]=(k[a>>2]|0)+g}else k[f>>2]=g-(k[a>>2]|0);h=h+1|0;f=k[t>>2]|0}while((h|0)<(f|0))}}}n=n+e|0}while((n|0)<(d|0));Tl(s);return 1}function gd(a,b,c){a=a|0;b=b|0;c=c|0;var d=Pa,e=Pa,f=0,g=0,h=0;switch(i[a+24>>0]|0){case 1:{b=k[b>>2]|0;g=a+48|0;f=k[g>>2]|0;g=k[g+4>>2]|0;h=a+40|0;g=mk(sj(k[h>>2]|0,k[h+4>>2]|0,b|0,((b|0)<0)<<31>>31|0)|0,M|0,f|0,g|0)|0;d=da(i[(k[k[a>>2]>>2]|0)+g>>0]|0);e=da(d/da(127.0));o[c>>2]=(i[a+32>>0]|0)==0?d:e;c=c+4|0;k[c>>2]=0;k[c+4>>2]=0;k[c+8>>2]=0;c=1;return c|0}case 2:{g=k[b>>2]|0;h=a+48|0;b=k[h>>2]|0;h=k[h+4>>2]|0;f=a+40|0;h=(mk(sj(k[f>>2]|0,k[f+4>>2]|0,g|0,((g|0)<0)<<31>>31|0)|0,M|0,b|0,h|0)|0)+(k[k[a>>2]>>2]|0)|0;h=l[h>>0]|l[h+1>>0]<<8;b=(h&65535)>>>8&255;d=da((h&255)<<24>>24);if(!(i[a+32>>0]|0)){o[c>>2]=d;d=da(b<<24>>24)}else{d=da(d/da(127.0));o[c>>2]=d;d=da(da(b<<24>>24)/da(127.0))}o[c+4>>2]=d;h=c+8|0;k[h>>2]=0;k[h+4>>2]=0;h=1;return h|0}case 3:{b=k[b>>2]|0;h=a+48|0;f=k[h>>2]|0;h=k[h+4>>2]|0;g=a+40|0;h=(mk(sj(k[g>>2]|0,k[g+4>>2]|0,b|0,((b|0)<0)<<31>>31|0)|0,M|0,f|0,h|0)|0)+(k[k[a>>2]>>2]|0)|0;f=i[h+1>>0]|0;b=i[h+2>>0]|0;d=da(i[h>>0]|0);if(!(i[a+32>>0]|0)){o[c>>2]=d;e=da(b<<24>>24);d=da(f<<24>>24)}else{e=da(d/da(127.0));o[c>>2]=e;e=da(da(b<<24>>24)/da(127.0));d=da(da(f<<24>>24)/da(127.0))}o[c+4>>2]=d;o[c+8>>2]=e;o[c+12>>2]=da(0.0);h=1;return h|0}case 4:{f=k[b>>2]|0;h=a+48|0;b=k[h>>2]|0;h=k[h+4>>2]|0;g=a+40|0;h=(mk(sj(k[g>>2]|0,k[g+4>>2]|0,f|0,((f|0)<0)<<31>>31|0)|0,M|0,b|0,h|0)|0)+(k[k[a>>2]>>2]|0)|0;h=l[h>>0]|l[h+1>>0]<<8|l[h+2>>0]<<16|l[h+3>>0]<<24;b=h>>>8&255;f=h>>>16&255;g=h>>>24&255;d=da((h&255)<<24>>24);if(!(i[a+32>>0]|0)){o[c>>2]=d;e=da(b<<24>>24);o[c+4>>2]=e;e=da(f<<24>>24);o[c+8>>2]=e;e=da(g<<24>>24);o[c+12>>2]=e;h=1;return h|0}else{e=da(d/da(127.0));o[c>>2]=e;e=da(da(b<<24>>24)/da(127.0));o[c+4>>2]=e;e=da(da(f<<24>>24)/da(127.0));o[c+8>>2]=e;e=da(da(g<<24>>24)/da(127.0));o[c+12>>2]=e;h=1;return h|0}}default:{h=0;return h|0}}return 0}function hd(a,b){a=a|0;b=b|0;var c=0,d=0,e=0,f=0,g=0,h=0,i=0,j=0,l=0,m=0,n=0;n=r;r=r+48|0;j=n+40|0;l=n+36|0;c=n+32|0;m=n;d=a+56|0;k[c>>2]=k[d>>2];i=b+16|0;h=i;g=k[h+4>>2]|0;if(!((g|0)>0|(g|0)==0&(k[h>>2]|0)>>>0>0)){k[l>>2]=k[b+4>>2];k[j>>2]=k[l>>2];he(b,j,c,c+4|0)|0}wj(m);Ah(m);e=k[a+52>>2]|0;g=k[d>>2]|0;f=g>>>5;h=e+(f<<2)|0;g=g&31;d=(f|0)!=0;a:do if(f|g|0){if(!g){c=1;f=e;while(1){if(d){d=0;while(1){e=(k[f>>2]&1<>2]&1<>2]&1<>2]&1<>2]|0;if((g|0)>0|(g|0)==0&(k[h>>2]|0)>>>0>0){Wg(m);r=n;return 1}d=b+4|0;k[l>>2]=k[d>>2];k[j>>2]=k[l>>2];he(b,j,c,c+4|0)|0;h=k[i+4>>2]|0;c=a+16|0;if((h|0)>0|(h|0)==0&(k[i>>2]|0)>>>0>0){Wg(m);r=n;return 1}k[l>>2]=k[d>>2];k[j>>2]=k[l>>2];he(b,j,c,c+4|0)|0;Wg(m);r=n;return 1}function id(a,b){a=a|0;b=b|0;var c=0,d=0,e=0,f=0,g=0,h=0,i=0,j=0,l=0,m=0,n=0;n=r;r=r+48|0;j=n+40|0;l=n+36|0;c=n+32|0;m=n;d=a+80|0;k[c>>2]=k[d>>2];i=b+16|0;h=i;g=k[h+4>>2]|0;if(!((g|0)>0|(g|0)==0&(k[h>>2]|0)>>>0>0)){k[l>>2]=k[b+4>>2];k[j>>2]=k[l>>2];he(b,j,c,c+4|0)|0}wj(m);Ah(m);e=k[a+76>>2]|0;g=k[d>>2]|0;f=g>>>5;h=e+(f<<2)|0;g=g&31;d=(f|0)!=0;a:do if(f|g|0){if(!g){c=1;f=e;while(1){if(d){d=0;while(1){e=(k[f>>2]&1<>2]&1<>2]&1<>2]&1<>2]|0;if((g|0)>0|(g|0)==0&(k[h>>2]|0)>>>0>0){Wg(m);r=n;return 1}d=b+4|0;k[l>>2]=k[d>>2];k[j>>2]=k[l>>2];he(b,j,c,c+4|0)|0;h=k[i+4>>2]|0;c=a+16|0;if((h|0)>0|(h|0)==0&(k[i>>2]|0)>>>0>0){Wg(m);r=n;return 1}k[l>>2]=k[d>>2];k[j>>2]=k[l>>2];he(b,j,c,c+4|0)|0;Wg(m);r=n;return 1}function jd(a,b,c){a=a|0;b=b|0;c=c|0;var d=Pa,e=Pa,f=0,g=0,h=0;switch(i[a+24>>0]|0){case 1:{g=k[b>>2]|0;b=a+48|0;f=k[b>>2]|0;b=k[b+4>>2]|0;h=a+40|0;b=(mk(sj(k[h>>2]|0,k[h+4>>2]|0,g|0,((g|0)<0)<<31>>31|0)|0,M|0,f|0,b|0)|0)+(k[k[a>>2]>>2]|0)|0;e=da((l[b>>0]|l[b+1>>0]<<8|l[b+2>>0]<<16|l[b+3>>0]<<24)>>>0);d=da(e*da(2.32830644e-10));o[c>>2]=(i[a+32>>0]|0)==0?e:d;o[c+4>>2]=da(0.0);c=1;return c|0}case 2:{g=k[b>>2]|0;b=a+48|0;h=k[b>>2]|0;b=k[b+4>>2]|0;f=a+40|0;b=(mk(sj(k[f>>2]|0,k[f+4>>2]|0,g|0,((g|0)<0)<<31>>31|0)|0,M|0,h|0,b|0)|0)+(k[k[a>>2]>>2]|0)|0;h=b;b=b+4|0;b=l[b>>0]|l[b+1>>0]<<8|l[b+2>>0]<<16|l[b+3>>0]<<24;d=da((l[h>>0]|l[h+1>>0]<<8|l[h+2>>0]<<16|l[h+3>>0]<<24)>>>0);if(!(i[a+32>>0]|0)){o[c>>2]=d;e=da(b>>>0);o[c+4>>2]=e;h=1;return h|0}else{e=da(d*da(2.32830644e-10));o[c>>2]=e;e=da(da(b>>>0)*da(2.32830644e-10));o[c+4>>2]=e;h=1;return h|0}}case 3:{g=k[b>>2]|0;h=a+48|0;b=k[h>>2]|0;h=k[h+4>>2]|0;f=a+40|0;h=(mk(sj(k[f>>2]|0,k[f+4>>2]|0,g|0,((g|0)<0)<<31>>31|0)|0,M|0,b|0,h|0)|0)+(k[k[a>>2]>>2]|0)|0;b=h+4|0;b=l[b>>0]|l[b+1>>0]<<8|l[b+2>>0]<<16|l[b+3>>0]<<24;d=da((l[h>>0]|l[h+1>>0]<<8|l[h+2>>0]<<16|l[h+3>>0]<<24)>>>0);if(!(i[a+32>>0]|0)){o[c>>2]=d;e=da(b>>>0);o[c+4>>2]=e;h=1;return h|0}else{e=da(d*da(2.32830644e-10));o[c>>2]=e;e=da(da(b>>>0)*da(2.32830644e-10));o[c+4>>2]=e;h=1;return h|0}}case 4:{g=k[b>>2]|0;h=a+48|0;b=k[h>>2]|0;h=k[h+4>>2]|0;f=a+40|0;h=(mk(sj(k[f>>2]|0,k[f+4>>2]|0,g|0,((g|0)<0)<<31>>31|0)|0,M|0,b|0,h|0)|0)+(k[k[a>>2]>>2]|0)|0;b=h+4|0;b=l[b>>0]|l[b+1>>0]<<8|l[b+2>>0]<<16|l[b+3>>0]<<24;d=da((l[h>>0]|l[h+1>>0]<<8|l[h+2>>0]<<16|l[h+3>>0]<<24)>>>0);if(!(i[a+32>>0]|0)){o[c>>2]=d;e=da(b>>>0);o[c+4>>2]=e;h=1;return h|0}else{e=da(d*da(2.32830644e-10));o[c>>2]=e;e=da(da(b>>>0)*da(2.32830644e-10));o[c+4>>2]=e;h=1;return h|0}}default:{h=0;return h|0}}return 0}function kd(a,b,c){a=a|0;b=b|0;c=c|0;var d=Pa,e=Pa,f=0,g=0,h=0;switch(i[a+24>>0]|0){case 1:{b=k[b>>2]|0;g=a+48|0;f=k[g>>2]|0;g=k[g+4>>2]|0;h=a+40|0;g=mk(sj(k[h>>2]|0,k[h+4>>2]|0,b|0,((b|0)<0)<<31>>31|0)|0,M|0,f|0,g|0)|0;d=da(l[(k[k[a>>2]>>2]|0)+g>>0]|0);e=da(d/da(255.0));o[c>>2]=(i[a+32>>0]|0)==0?d:e;c=c+4|0;k[c>>2]=0;k[c+4>>2]=0;k[c+8>>2]=0;c=1;return c|0}case 2:{g=k[b>>2]|0;h=a+48|0;b=k[h>>2]|0;h=k[h+4>>2]|0;f=a+40|0;h=(mk(sj(k[f>>2]|0,k[f+4>>2]|0,g|0,((g|0)<0)<<31>>31|0)|0,M|0,b|0,h|0)|0)+(k[k[a>>2]>>2]|0)|0;h=l[h>>0]|l[h+1>>0]<<8;b=(h&65535)>>>8&255;d=da(h&255);if(!(i[a+32>>0]|0)){o[c>>2]=d;d=da(b&255)}else{d=da(d/da(255.0));o[c>>2]=d;d=da(da(b&255)/da(255.0))}o[c+4>>2]=d;h=c+8|0;k[h>>2]=0;k[h+4>>2]=0;h=1;return h|0}case 3:{b=k[b>>2]|0;h=a+48|0;f=k[h>>2]|0;h=k[h+4>>2]|0;g=a+40|0;h=(mk(sj(k[g>>2]|0,k[g+4>>2]|0,b|0,((b|0)<0)<<31>>31|0)|0,M|0,f|0,h|0)|0)+(k[k[a>>2]>>2]|0)|0;f=i[h+1>>0]|0;b=i[h+2>>0]|0;d=da(l[h>>0]|0);if(!(i[a+32>>0]|0)){o[c>>2]=d;e=da(b&255);d=da(f&255)}else{e=da(d/da(255.0));o[c>>2]=e;e=da(da(b&255)/da(255.0));d=da(da(f&255)/da(255.0))}o[c+4>>2]=d;o[c+8>>2]=e;o[c+12>>2]=da(0.0);h=1;return h|0}case 4:{f=k[b>>2]|0;h=a+48|0;b=k[h>>2]|0;h=k[h+4>>2]|0;g=a+40|0;h=(mk(sj(k[g>>2]|0,k[g+4>>2]|0,f|0,((f|0)<0)<<31>>31|0)|0,M|0,b|0,h|0)|0)+(k[k[a>>2]>>2]|0)|0;h=l[h>>0]|l[h+1>>0]<<8|l[h+2>>0]<<16|l[h+3>>0]<<24;b=h>>>8&255;f=h>>>16&255;g=h>>>24&255;d=da(h&255);if(!(i[a+32>>0]|0)){o[c>>2]=d;e=da(b&255);o[c+4>>2]=e;e=da(f&255);o[c+8>>2]=e;e=da(g&255);o[c+12>>2]=e;h=1;return h|0}else{e=da(d/da(255.0));o[c>>2]=e;e=da(da(b&255)/da(255.0));o[c+4>>2]=e;e=da(da(f&255)/da(255.0));o[c+8>>2]=e;e=da(da(g&255)/da(255.0));o[c+12>>2]=e;h=1;return h|0}}default:{h=0;return h|0}}return 0} -function $a(a,b){a=a|0;b=b|0;var c=0,d=0,e=0,f=0,g=0,h=0,j=0,m=0,n=0,p=0,q=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,B=0,C=0,D=0,E=0,F=0,G=0,H=0,I=0,J=0,K=0,L=0,M=0,N=0,O=0,P=0,Q=0,R=0,S=0,T=0,U=0,V=0,W=0,X=0,Y=0,Z=0,_=0,$=0,aa=0,ba=0,ca=0,ea=0,fa=0,ga=0,ha=0,ia=0,ja=0,ka=0,la=0,ma=0,na=0,oa=0,pa=0,qa=0,ra=0,sa=0,ta=0,ua=0,va=0,wa=0,xa=0,ya=0;ya=r;r=r+48|0;oa=ya+40|0;va=ya+28|0;wa=ya+4|0;$=ya+24|0;qa=ya;k[va>>2]=0;xa=va+4|0;k[xa>>2]=0;k[va+8>>2]=0;k[wa>>2]=0;k[wa+4>>2]=0;k[wa+8>>2]=0;k[wa+12>>2]=0;o[wa+16>>2]=da(1.0);ta=a+136|0;ia=k[a+140>>2]|0;a:do if((b|0)>0){G=a+240|0;H=a+356|0;I=a+276|0;J=a+352|0;L=a+272|0;M=a+264|0;N=a+268|0;P=a+8|0;Q=a+36|0;R=a+40|0;S=b+-1|0;T=wa+4|0;V=a+340|0;W=va+8|0;X=a+368|0;Y=a+380|0;e=0;w=0;while(1){c=w+1|0;d=k[H>>2]|0;b:do if((d|0)!=-1){v=k[X>>2]|0;u=(k[Y>>2]|0)+(d<<2)|0;ja=(k[u>>2]|0)+-1|0;k[u>>2]=ja;ja=k[(k[v+(d*12|0)>>2]|0)+(ja<<2)>>2]|0;d=k[5740+(ja<<2)>>2]|0;k[J>>2]=d;if(!ja)ja=15;else ja=56}else{do if(!(i[I>>0]|0))d=1;else{f=k[L>>2]|0;h=k[M>>2]|0;j=k[N>>2]|0;d=h+(f>>>3)|0;if(d>>>0>>0?(ja=l[d>>0]|0,aa=f+1|0,k[L>>2]=aa,ja&1<<(f&7)|0):0){d=h+(aa>>>3)|0;if(d>>>0>>0){g=(l[d>>0]|0)>>>(aa&7)&1;f=f+2|0;k[L>>2]=f}else{g=0;f=aa}d=h+(f>>>3)|0;if(d>>>0>>0){d=(l[d>>0]|0)>>>(f&7);k[L>>2]=f+1;d=d<<1&2}else d=0;d=(d|g)<<1|1;break}k[J>>2]=0;ja=15;break b}while(0);k[J>>2]=d;ja=56}while(0);c:do if((ja|0)==15){ja=0;u=k[(k[xa>>2]|0)+-4>>2]|0;v=(u|0)<0;d:do if(!v){d=u+(((u>>>0)%3|0|0)==0?2:-1)|0;if((d|0)<0)ja=17;else{h=k[P>>2]|0;g=k[h+12>>2]|0;while(1){f=k[g+(d<<2)>>2]|0;if((f|0)<=-1){q=0;p=d;f=h;break d}d=f+(((f>>>0)%3|0|0)==0?2:-1)|0;if((d|0)<0){q=1;p=d;f=h;break}}}}else{d=u;ja=17}while(0);if((ja|0)==17){ja=0;g=k[P>>2]|0;q=1;p=d;f=g;g=k[g+12>>2]|0}d=w*3|0;s=d+1|0;k[g+(u<<2)>>2]=s;k[g+(s<<2)>>2]=u;w=d+2|0;k[g+(p<<2)>>2]=w;k[g+(w<<2)>>2]=p;g=u+1|0;if(!v?(x=((g|0)%3|0|0)==0?u+-2|0:g,(x|0)>=0):0)t=k[(k[f>>2]|0)+(((x>>>0)/3|0)*12|0)+(((x>>>0)%3|0)<<2)>>2]|0;else t=-1073741824;k[(k[f>>2]|0)+(((d>>>0)/3|0)*12|0)+(((d|0)%3|0)<<2)>>2]=t;if((t|0)>-1){n=f+24|0;h=f+28|0;g=k[h>>2]|0;f=k[n>>2]|0;j=g-f>>2;do if(j>>>0<=t>>>0){m=t+1|0;if(m>>>0>j>>>0){wg(n,m-j|0);f=k[n>>2]|0;break}if(m>>>0>>0?(F=f+(m<<2)|0,(g|0)!=(F|0)):0)k[h>>2]=g+(~((g+-4-F|0)>>>2)<<2)}while(0);k[f+(t<<2)>>2]=d;f=k[P>>2]|0}g=p+1|0;if(!q?(A=((g|0)%3|0|0)==0?p+-2|0:g,(A|0)>=0):0)p=k[(k[f>>2]|0)+(((A>>>0)/3|0)*12|0)+(((A>>>0)%3|0)<<2)>>2]|0;else p=-1073741824;k[(k[f>>2]|0)+(((d|0)<-1?-1073741824:(s>>>0)/3|0)*12|0)+(((s|0)%3|0)<<2)>>2]=p;if((p|0)>-1){n=f+24|0;h=f+28|0;g=k[h>>2]|0;f=k[n>>2]|0;j=g-f>>2;do if(j>>>0<=p>>>0){m=p+1|0;if(m>>>0>j>>>0){wg(n,m-j|0);f=k[n>>2]|0;break}if(m>>>0>>0?(K=f+(m<<2)|0,(g|0)!=(K|0)):0)k[h>>2]=g+(~((g+-4-K|0)>>>2)<<2)}while(0);k[f+(p<<2)>>2]=s;f=k[P>>2]|0}if(!v?(E=(((u>>>0)%3|0|0)==0?2:-1)+u|0,(E|0)>=0):0)p=k[(k[f>>2]|0)+(((E>>>0)/3|0)*12|0)+(((E>>>0)%3|0)<<2)>>2]|0;else p=-1073741824;k[(k[f>>2]|0)+(((d|0)<-2?-1073741824:(w>>>0)/3|0)*12|0)+(((w|0)%3|0)<<2)>>2]=p;if((p|0)>-1){n=f+24|0;h=f+28|0;g=k[h>>2]|0;f=k[n>>2]|0;j=g-f>>2;do if(j>>>0<=p>>>0){m=p+1|0;if(m>>>0>j>>>0){wg(n,m-j|0);f=k[n>>2]|0;break}if(m>>>0>>0?(O=f+(m<<2)|0,(g|0)!=(O|0)):0)k[h>>2]=g+(~((g+-4-O|0)>>>2)<<2)}while(0);k[f+(p<<2)>>2]=w}if((e|0)>(ia|0)){e=-1;break a}ja=(k[ta>>2]|0)+(t>>>5<<2)|0;k[ja>>2]=k[ja>>2]&~(1<<(t&31));k[(k[xa>>2]|0)+-4>>2]=d;ja=189}else if((ja|0)==56){ja=0;switch(d|0){case 3:case 5:{t=k[(k[xa>>2]|0)+-4>>2]|0;v=w*3|0;n=((d|0)==5?2:1)+v|0;d=k[P>>2]|0;u=k[d+12>>2]|0;k[u+(n<<2)>>2]=t;k[u+(t<<2)>>2]=n;u=e+1|0;s=(n|0)<0;k[(k[d>>2]|0)+((s?-1073741824:(n>>>0)/3|0)*12|0)+(((n|0)%3|0)<<2)>>2]=e;if((e|0)>-1){j=d+24|0;g=d+28|0;f=k[g>>2]|0;d=k[j>>2]|0;h=f-d>>2;do if(h>>>0<=e>>>0){if(u>>>0>h>>>0){wg(j,u-h|0);d=k[j>>2]|0;break}if(u>>>0>>0?(U=d+(u<<2)|0,(f|0)!=(U|0)):0)k[g>>2]=f+(~((f+-4-U|0)>>>2)<<2)}while(0);k[d+(e<<2)>>2]=n;e=k[P>>2]|0}else e=d;d=n+1|0;if(s)p=n;else p=((d|0)%3|0|0)==0?n+-2|0:d;q=(t|0)<0;if(!q?(D=(((t>>>0)%3|0|0)==0?2:-1)+t|0,(D|0)>=0):0)m=k[(k[e>>2]|0)+(((D>>>0)/3|0)*12|0)+(((D>>>0)%3|0)<<2)>>2]|0;else m=-1073741824;k[(k[e>>2]|0)+(((p|0)<0?-1073741824:(p>>>0)/3|0)*12|0)+(((p|0)%3|0)<<2)>>2]=m;if((m|0)>-1){j=e+24|0;f=e+28|0;e=k[f>>2]|0;d=k[j>>2]|0;g=e-d>>2;do if(g>>>0<=m>>>0){h=m+1|0;if(h>>>0>g>>>0){wg(j,h-g|0);d=k[j>>2]|0;break}if(h>>>0>>0?(Z=d+(h<<2)|0,(e|0)!=(Z|0)):0)k[f>>2]=e+(~((e+-4-Z|0)>>>2)<<2)}while(0);k[d+(m<<2)>>2]=p;e=k[P>>2]|0}do if(!s)if(!((n>>>0)%3|0)){n=n+2|0;break}else{n=n+-1|0;break}while(0);d=t+1|0;if(!q?(z=((d|0)%3|0|0)==0?t+-2|0:d,(z|0)>=0):0)m=k[(k[e>>2]|0)+(((z>>>0)/3|0)*12|0)+(((z>>>0)%3|0)<<2)>>2]|0;else m=-1073741824;k[(k[e>>2]|0)+(((n|0)<0?-1073741824:(n>>>0)/3|0)*12|0)+(((n|0)%3|0)<<2)>>2]=m;if((m|0)>-1){j=e+24|0;f=e+28|0;e=k[f>>2]|0;d=k[j>>2]|0;g=e-d>>2;do if(g>>>0<=m>>>0){h=m+1|0;if(h>>>0>g>>>0){wg(j,h-g|0);d=k[j>>2]|0;break}if(h>>>0>>0?(_=d+(h<<2)|0,(e|0)!=(_|0)):0)k[f>>2]=e+(~((e+-4-_|0)>>>2)<<2)}while(0);k[d+(m<<2)>>2]=n}k[(k[xa>>2]|0)+-4>>2]=v;e=u;d=v;break}case 1:{d=k[xa>>2]|0;p=d+-4|0;g=k[p>>2]|0;k[xa>>2]=p;j=k[T>>2]|0;e:do if(j){m=j+-1|0;h=(m&j|0)==0;if(h)n=m&w;else n=(w>>>0)%(j>>>0)|0;f=k[(k[wa>>2]|0)+(n<<2)>>2]|0;if(f){if(h)do{f=k[f>>2]|0;if(!f){d=p;break e}if((k[f+4>>2]&m|0)!=(n|0)){d=p;break e}}while((k[f+8>>2]|0)!=(w|0));else do{f=k[f>>2]|0;if(!f){d=p;break e}if((((k[f+4>>2]|0)>>>0)%(j>>>0)|0|0)!=(n|0)){d=p;break e}}while((k[f+8>>2]|0)!=(w|0));f=f+12|0;if((p|0)==(k[W>>2]|0)){Ig(va,f);d=k[xa>>2]|0;break}else{k[p>>2]=k[f>>2];k[xa>>2]=d;break}}else d=p}else d=p;while(0);s=k[d+-4>>2]|0;d=w*3|0;u=d+2|0;f=k[P>>2]|0;q=k[f+12>>2]|0;k[q+(s<<2)>>2]=u;k[q+(u<<2)>>2]=s;t=d+1|0;k[q+(g<<2)>>2]=t;k[q+(t<<2)>>2]=g;q=(s|0)<0;if(!q?(C=(((s>>>0)%3|0|0)==0?2:-1)+s|0,(C|0)>=0):0)w=k[(k[f>>2]|0)+(((C>>>0)/3|0)*12|0)+(((C>>>0)%3|0)<<2)>>2]|0;else w=-1073741824;k[(k[f>>2]|0)+(((d>>>0)/3|0)*12|0)+(((d|0)%3|0)<<2)>>2]=w;v=(w|0)>-1;if(v){p=f+24|0;j=f+28|0;h=k[j>>2]|0;f=k[p>>2]|0;m=h-f>>2;do if(m>>>0<=w>>>0){n=w+1|0;if(n>>>0>m>>>0){wg(p,n-m|0);f=k[p>>2]|0;break}if(n>>>0>>0?(ba=f+(n<<2)|0,(h|0)!=(ba|0)):0)k[j>>2]=h+(~((h+-4-ba|0)>>>2)<<2)}while(0);k[f+(w<<2)>>2]=d;f=k[P>>2]|0}h=s+1|0;if(!q?(y=((h|0)%3|0|0)==0?s+-2|0:h,(y|0)>=0):0)q=k[(k[f>>2]|0)+(((y>>>0)/3|0)*12|0)+(((y>>>0)%3|0)<<2)>>2]|0;else q=-1073741824;k[(k[f>>2]|0)+(((d|0)<-1?-1073741824:(t>>>0)/3|0)*12|0)+(((t|0)%3|0)<<2)>>2]=q;if((q|0)>-1){p=f+24|0;j=f+28|0;h=k[j>>2]|0;f=k[p>>2]|0;m=h-f>>2;do if(m>>>0<=q>>>0){n=q+1|0;if(n>>>0>m>>>0){wg(p,n-m|0);f=k[p>>2]|0;break}if(n>>>0>>0?(ca=f+(n<<2)|0,(h|0)!=(ca|0)):0)k[j>>2]=h+(~((h+-4-ca|0)>>>2)<<2)}while(0);k[f+(q<<2)>>2]=t;f=k[P>>2]|0}s=(g|0)<0;if(!s?(B=(((g>>>0)%3|0|0)==0?2:-1)+g|0,(B|0)>=0):0)q=k[(k[f>>2]|0)+(((B>>>0)/3|0)*12|0)+(((B>>>0)%3|0)<<2)>>2]|0;else q=-1073741824;k[(k[f>>2]|0)+(((d|0)<-2?-1073741824:(u>>>0)/3|0)*12|0)+(((u|0)%3|0)<<2)>>2]=q;if((q|0)>-1){p=f+24|0;j=f+28|0;h=k[j>>2]|0;f=k[p>>2]|0;m=h-f>>2;do if(m>>>0<=q>>>0){n=q+1|0;if(n>>>0>m>>>0){wg(p,n-m|0);f=k[p>>2]|0;break}if(n>>>0>>0?(ea=f+(n<<2)|0,(h|0)!=(ea|0)):0)k[j>>2]=h+(~((h+-4-ea|0)>>>2)<<2)}while(0);k[f+(q<<2)>>2]=u}f=g+1|0;if(!s){f=((f|0)%3|0|0)==0?g+-2|0:f;if((f|0)<0){s=-1073741824;g=f}else{s=k[(k[k[P>>2]>>2]|0)+(((f>>>0)/3|0)*12|0)+(((f>>>0)%3|0)<<2)>>2]|0;g=f}}else s=-1073741824;ja=k[V>>2]|0;f=ja+(w<<2)|0;k[f>>2]=(k[f>>2]|0)+(k[ja+(s<<2)>>2]|0);f=k[P>>2]|0;f:do if((g|0)>-1){q=w+1|0;if(!v){j=k[f>>2]|0;m=f+12|0;while(1){k[j+(((g>>>0)/3|0)*12|0)+(((g>>>0)%3|0)<<2)>>2]=w;ja=g+1|0;g=((ja|0)%3|0|0)==0?g+-2|0:ja;if((g|0)<0)break f;g=k[(k[m>>2]|0)+(g<<2)>>2]|0;h=g+1|0;if((g|0)<0)break f;g=((h|0)%3|0|0)==0?g+-2|0:h;if((g|0)<=-1)break f}}do{k[(k[f>>2]|0)+(((g>>>0)/3|0)*12|0)+(((g>>>0)%3|0)<<2)>>2]=w;n=f+24|0;p=f+28|0;h=k[p>>2]|0;f=k[n>>2]|0;j=h-f>>2;do if(j>>>0<=w>>>0){m=h;if(q>>>0>j>>>0){wg(n,q-j|0);f=k[n>>2]|0;break}if(q>>>0>=j>>>0)break;h=f+(q<<2)|0;if((m|0)==(h|0))break;k[p>>2]=m+(~((m+-4-h|0)>>>2)<<2)}while(0);k[f+(w<<2)>>2]=g;f=g+1|0;g=((f|0)%3|0|0)==0?g+-2|0:f;f=k[P>>2]|0;if((g|0)<0)break f;g=k[(k[f+12>>2]|0)+(g<<2)>>2]|0;h=g+1|0;if((g|0)<0)break f;g=((h|0)%3|0|0)==0?g+-2|0:h}while((g|0)>-1)}while(0);k[(k[f+24>>2]|0)+(s<<2)>>2]=-1073741824;k[(k[xa>>2]|0)+-4>>2]=d;ja=189;break c}case 7:{m=w*3|0;k[oa>>2]=m;f=k[P>>2]|0;n=e+1|0;d=k[f>>2]|0;k[d+(((m>>>0)/3|0)*12|0)+(((m|0)%3|0)<<2)>>2]=e;if((e|0)>-1){j=f+24|0;g=f+28|0;f=k[g>>2]|0;d=k[j>>2]|0;h=f-d>>2;do if(h>>>0<=e>>>0){if(n>>>0>h>>>0){wg(j,n-h|0);d=k[j>>2]|0;break}if(n>>>0>>0?(fa=d+(n<<2)|0,(f|0)!=(fa|0)):0)k[g>>2]=f+(~((f+-4-fa|0)>>>2)<<2)}while(0);k[d+(e<<2)>>2]=m;f=k[P>>2]|0;g=k[oa>>2]|0;d=k[f>>2]|0}else g=m;m=g+1|0;p=e+2|0;k[d+(((g|0)<-1?-1073741824:(m>>>0)/3|0)*12|0)+(((m|0)%3|0)<<2)>>2]=n;if((e|0)>-2){j=f+24|0;g=f+28|0;f=k[g>>2]|0;d=k[j>>2]|0;h=f-d>>2;do if(h>>>0<=n>>>0){if(p>>>0>h>>>0){wg(j,p-h|0);d=k[j>>2]|0;break}if(p>>>0>>0?(ga=d+(p<<2)|0,(f|0)!=(ga|0)):0)k[g>>2]=f+(~((f+-4-ga|0)>>>2)<<2)}while(0);k[d+(n<<2)>>2]=m;f=k[P>>2]|0;g=k[oa>>2]|0;d=k[f>>2]|0}m=g+2|0;e=e+3|0;k[d+(((g|0)<-2?-1073741824:(m>>>0)/3|0)*12|0)+(((m|0)%3|0)<<2)>>2]=p;if((p|0)>-1){j=f+24|0;g=f+28|0;f=k[g>>2]|0;d=k[j>>2]|0;h=f-d>>2;do if(h>>>0<=p>>>0){if(e>>>0>h>>>0){wg(j,e-h|0);d=k[j>>2]|0;break}if(e>>>0>>0?(ha=d+(e<<2)|0,(f|0)!=(ha|0)):0)k[g>>2]=f+(~((f+-4-ha|0)>>>2)<<2)}while(0);k[d+(p<<2)>>2]=m}d=k[xa>>2]|0;if((d|0)==(k[W>>2]|0)){Ig(va,oa);d=k[xa>>2]|0}else{k[d>>2]=k[oa>>2];d=d+4|0;k[xa>>2]=d}d=k[d+-4>>2]|0;break}default:{e=-1;break a}}k[$>>2]=d;k[oa>>2]=k[$>>2];Zc(G,oa);j=b-w|0;m=j+-1|0;d=k[R>>2]|0;if((d|0)!=(k[Q>>2]|0))do{f=k[d+-8>>2]|0;if((f|0)>=(j|0)){e=-1;break a}if((f|0)!=(m|0))break c;f=i[d+-4>>0]|0;h=k[d+-12>>2]|0;k[R>>2]=d+-12;if((h|0)<0){e=-1;break a}d=k[(k[xa>>2]|0)+-4>>2]|0;g=(d|0)<0;do if(!(f&1)){if(!g)if(!((d>>>0)%3|0)){d=d+2|0;break}else{d=d+-1|0;break}}else{f=d+1|0;if(!g)d=((f|0)%3|0|0)==0?d+-2|0:f}while(0);k[oa>>2]=S-h;w=ae(wa,oa)|0;k[w>>2]=d;d=k[R>>2]|0}while((d|0)!=(k[Q>>2]|0))}while(0);if((ja|0)==189){k[$>>2]=d;k[oa>>2]=k[$>>2];Zc(G,oa)}if((c|0)<(b|0))w=c;else{ja=203;break}}}else{e=0;c=0;ja=203}while(0);do if((ja|0)==203)if((e|0)<=(ia|0)){d=k[xa>>2]|0;g:do if((d|0)!=(k[va>>2]|0)){t=a+316|0;u=a+8|0;v=a+64|0;w=a+68|0;x=a+72|0;y=a+80|0;z=a+84|0;A=a+76|0;B=a+312|0;C=a+304|0;D=a+308|0;h:while(1){ia=d;n=k[ia+-4>>2]|0;k[oa>>2]=n;k[xa>>2]=ia+-4;do if(i[t>>0]|0){d=k[B>>2]|0;f=(k[C>>2]|0)+(d>>>3)|0;if(f>>>0<(k[D>>2]|0)>>>0?(ia=l[f>>0]|0,k[B>>2]=d+1,ia&1<<(d&7)|0):0){ja=210;break}d=k[w>>2]|0;f=k[x>>2]|0;if((d|0)==(f<<5|0)){if((d+1|0)<0){ja=266;break h}ia=f<<6;d=d+32&-32;ig(v,f<<5>>>0<1073741823?(ia>>>0>>0?d:ia):2147483647);d=k[w>>2]|0}k[w>>2]=d+1;ia=(k[v>>2]|0)+(d>>>5<<2)|0;k[ia>>2]=k[ia>>2]&~(1<<(d&31));d=k[y>>2]|0;if((d|0)==(k[z>>2]|0)){Ig(A,oa);break}else{k[d>>2]=k[oa>>2];k[y>>2]=d+4;break}}else ja=210;while(0);if((ja|0)==210){ja=0;h=(n|0)<0;i:do if(!h){d=n+(((n>>>0)%3|0|0)==0?2:-1)|0;if((d|0)>=0){f=k[(k[u>>2]|0)+12>>2]|0;g=d;while(1){d=k[f+(g<<2)>>2]|0;if((d|0)<=-1){f=0;d=g;break}d=d+(((d>>>0)%3|0|0)==0?2:-1)|0;if((d|0)<0){f=1;break}else g=d}if(h){g=n;ja=217;break}}else f=1;g=n+1|0;g=((g|0)%3|0|0)==0?n+-2|0:g;if((g|0)<0)ja=217;else{m=k[u>>2]|0;j=k[m+12>>2]|0;while(1){h=k[j+(g<<2)>>2]|0;if((h|0)<=-1){q=0;h=j;j=m;break i}g=h+1|0;g=((g|0)%3|0|0)==0?h+-2|0:g;if((g|0)<0){q=1;h=j;j=m;break}}}}else{f=1;g=n;d=n;ja=217}while(0);if((ja|0)==217){ja=0;j=k[u>>2]|0;q=1;h=k[j+12>>2]|0}s=c+1|0;c=c*3|0;k[qa>>2]=c;k[h+(c<<2)>>2]=n;k[h+(n<<2)>>2]=c;c=(k[qa>>2]|0)+1|0;k[h+(c<<2)>>2]=d;k[h+(d<<2)>>2]=c;c=(k[qa>>2]|0)+2|0;k[h+(c<<2)>>2]=g;k[h+(g<<2)>>2]=c;c=k[qa>>2]|0;h=d+1|0;if(!f?(ma=((h|0)%3|0|0)==0?d+-2|0:h,(ma|0)>=0):0)p=k[(k[j>>2]|0)+(((ma>>>0)/3|0)*12|0)+(((ma>>>0)%3|0)<<2)>>2]|0;else p=-1073741824;k[(k[j>>2]|0)+(((c|0)<0?-1073741824:(c>>>0)/3|0)*12|0)+(((c|0)%3|0)<<2)>>2]=p;if((p|0)>-1){n=j+24|0;h=j+28|0;f=k[h>>2]|0;d=k[n>>2]|0;j=f-d>>2;do if(j>>>0<=p>>>0){m=p+1|0;if(m>>>0>j>>>0){wg(n,m-j|0);d=k[n>>2]|0;break}if(m>>>0>>0?(ra=d+(m<<2)|0,(f|0)!=(ra|0)):0)k[h>>2]=f+(~((f+-4-ra|0)>>>2)<<2)}while(0);k[d+(p<<2)>>2]=c;c=k[qa>>2]|0;f=k[u>>2]|0}else f=j;n=c+1|0;d=g+1|0;if(!q?(la=((d|0)%3|0|0)==0?g+-2|0:d,(la|0)>=0):0)m=k[(k[f>>2]|0)+(((la>>>0)/3|0)*12|0)+(((la>>>0)%3|0)<<2)>>2]|0;else m=-1073741824;k[(k[f>>2]|0)+(((c|0)<-1?-1073741824:(n>>>0)/3|0)*12|0)+(((n|0)%3|0)<<2)>>2]=m;if((m|0)>-1){j=f+24|0;f=f+28|0;d=k[f>>2]|0;c=k[j>>2]|0;g=d-c>>2;do if(g>>>0<=m>>>0){h=m+1|0;if(h>>>0>g>>>0){wg(j,h-g|0);c=k[j>>2]|0;break}if(h>>>0>>0?(sa=c+(h<<2)|0,(d|0)!=(sa|0)):0)k[f>>2]=d+(~((d+-4-sa|0)>>>2)<<2)}while(0);k[c+(m<<2)>>2]=n;c=k[qa>>2]|0;g=k[u>>2]|0}else g=f;p=c+2|0;d=k[oa>>2]|0;f=d+1|0;if((d|0)>=0?(ka=((f|0)%3|0|0)==0?d+-2|0:f,(ka|0)>=0):0)n=k[(k[g>>2]|0)+(((ka>>>0)/3|0)*12|0)+(((ka>>>0)%3|0)<<2)>>2]|0;else n=-1073741824;k[(k[g>>2]|0)+(((c|0)<-2?-1073741824:(p>>>0)/3|0)*12|0)+(((p|0)%3|0)<<2)>>2]=n;if((n|0)>-1){j=g+24|0;m=g+28|0;d=k[m>>2]|0;c=k[j>>2]|0;f=d-c>>2;do if(f>>>0<=n>>>0){g=n+1|0;h=d;if(g>>>0>f>>>0){wg(j,g-f|0);c=k[j>>2]|0;break}if(g>>>0>>0){d=c+(g<<2)|0;if((h|0)==(d|0))break;k[m>>2]=h+(~((h+-4-d|0)>>>2)<<2)}}while(0);k[c+(n<<2)>>2]=p;c=k[qa>>2]|0}if((c|0)<0)c=-1073741824;else c=k[(k[k[u>>2]>>2]|0)+(((c>>>0)/3|0)*12|0)+(((c>>>0)%3|0)<<2)>>2]|0;d=k[ta>>2]|0;ia=d+(c>>>5<<2)|0;k[ia>>2]=k[ia>>2]&~(1<<(c&31));ia=k[qa>>2]|0;c=ia+1|0;if((ia|0)<-1)c=-1073741824;else c=k[(k[k[u>>2]>>2]|0)+(((c>>>0)/3|0)*12|0)+(((c>>>0)%3|0)<<2)>>2]|0;ia=d+(c>>>5<<2)|0;k[ia>>2]=k[ia>>2]&~(1<<(c&31));ia=k[qa>>2]|0;c=ia+2|0;if((ia|0)<-2)c=-1073741824;else c=k[(k[k[u>>2]>>2]|0)+(((c>>>0)/3|0)*12|0)+(((c>>>0)%3|0)<<2)>>2]|0;d=d+(c>>>5<<2)|0;k[d>>2]=k[d>>2]&~(1<<(c&31));c=k[w>>2]|0;d=k[x>>2]|0;if((c|0)==(d<<5|0)){if((c+1|0)<0){ja=256;break}ia=d<<6;c=c+32&-32;ig(v,d<<5>>>0<1073741823?(ia>>>0>>0?c:ia):2147483647);c=k[w>>2]|0}k[w>>2]=c+1;ia=(k[v>>2]|0)+(c>>>5<<2)|0;k[ia>>2]=k[ia>>2]|1<<(c&31);c=k[y>>2]|0;if((c|0)==(k[z>>2]|0))Ig(A,qa);else{k[c>>2]=k[qa>>2];k[y>>2]=c+4}c=s}d=k[xa>>2]|0;if((d|0)==(k[va>>2]|0)){na=c;pa=u;break g}}if((ja|0)==256)$k(v);else if((ja|0)==266)$k(v)}else{na=c;pa=a+8|0}while(0);ta=k[pa>>2]|0;if((na|0)==(((k[ta+4>>2]|0)-(k[ta>>2]|0)|0)/12|0|0)){h=a+88|0;c=a+92|0;g=k[c>>2]|0;d=k[h>>2]|0;f=g-d>>2;if(e>>>0>f>>>0){wg(h,e-f|0);break}if(e>>>0>>0?(ua=d+(e<<2)|0,(g|0)!=(ua|0)):0)k[c>>2]=g+(~((g+-4-ua|0)>>>2)<<2)}else e=-1}else e=-1;while(0);c=k[wa+8>>2]|0;if(c|0)do{ua=c;c=k[c>>2]|0;Vl(ua)}while((c|0)!=0);c=k[wa>>2]|0;k[wa>>2]=0;if(c|0)Vl(c);c=k[va>>2]|0;if(!c){r=ya;return e|0}d=k[xa>>2]|0;if((d|0)!=(c|0))k[xa>>2]=d+(~((d+-4-c|0)>>>2)<<2);Vl(c);r=ya;return e|0}function ab(a,b){a=a|0;b=b|0;var c=0,d=0,e=0,f=0,g=0,h=0,j=0,m=0,n=0,p=0,q=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,B=0,C=0,D=0,E=0,F=0,G=0,H=0,I=0,J=0,K=0,L=0,M=0,N=0,O=0,P=0,Q=0,R=0,S=0,T=0,U=0,V=0,W=0,X=0,Y=0,Z=0,_=0,$=0,aa=0,ba=0,ca=0,ea=0,fa=0,ga=0,ha=0,ia=0,ja=0,ka=0,la=0,ma=0,na=0,oa=0,pa=0,qa=0,ra=0,sa=0,ta=0,ua=0,va=0,wa=0,xa=0;xa=r;r=r+48|0;na=xa+40|0;ua=xa+28|0;va=xa+4|0;$=xa+24|0;pa=xa;k[ua>>2]=0;wa=ua+4|0;k[wa>>2]=0;k[ua+8>>2]=0;k[va>>2]=0;k[va+4>>2]=0;k[va+8>>2]=0;k[va+12>>2]=0;o[va+16>>2]=da(1.0);sa=a+136|0;ha=k[a+140>>2]|0;a:do if((b|0)>0){G=a+240|0;H=a+372|0;I=a+276|0;K=a+368|0;L=a+272|0;M=a+264|0;O=a+268|0;P=a+8|0;Q=a+36|0;R=a+40|0;S=b+-1|0;U=va+4|0;V=a+340|0;W=ua+8|0;X=a+352|0;e=0;w=0;while(1){c=w+1|0;if((k[H>>2]|0)!=-1?Xh(X)|0:0){d=k[H>>2]|0;k[K>>2]=d;if(!d)ia=16;else ia=57}else ia=5;b:do if((ia|0)==5){do if(!(i[I>>0]|0))d=1;else{f=k[L>>2]|0;h=k[M>>2]|0;j=k[O>>2]|0;d=h+(f>>>3)|0;if(d>>>0>>0?(ia=l[d>>0]|0,aa=f+1|0,k[L>>2]=aa,ia&1<<(f&7)|0):0){d=h+(aa>>>3)|0;if(d>>>0>>0){g=(l[d>>0]|0)>>>(aa&7)&1;f=f+2|0;k[L>>2]=f}else{g=0;f=aa}d=h+(f>>>3)|0;if(d>>>0>>0){d=(l[d>>0]|0)>>>(f&7);k[L>>2]=f+1;d=d<<1&2}else d=0;d=(d|g)<<1|1;break}k[K>>2]=0;ia=16;break b}while(0);k[K>>2]=d;ia=57}while(0);c:do if((ia|0)==16){ia=0;u=k[(k[wa>>2]|0)+-4>>2]|0;v=(u|0)<0;d:do if(!v){d=u+(((u>>>0)%3|0|0)==0?2:-1)|0;if((d|0)<0)ia=18;else{h=k[P>>2]|0;g=k[h+12>>2]|0;while(1){f=k[g+(d<<2)>>2]|0;if((f|0)<=-1){q=0;p=d;f=h;break d}d=f+(((f>>>0)%3|0|0)==0?2:-1)|0;if((d|0)<0){q=1;p=d;f=h;break}}}}else{d=u;ia=18}while(0);if((ia|0)==18){ia=0;f=k[P>>2]|0;q=1;p=d;g=k[f+12>>2]|0}d=w*3|0;s=d+1|0;k[g+(u<<2)>>2]=s;k[g+(s<<2)>>2]=u;w=d+2|0;k[g+(p<<2)>>2]=w;k[g+(w<<2)>>2]=p;g=u+1|0;if(!v?(x=((g|0)%3|0|0)==0?u+-2|0:g,(x|0)>=0):0)t=k[(k[f>>2]|0)+(((x>>>0)/3|0)*12|0)+(((x>>>0)%3|0)<<2)>>2]|0;else t=-1073741824;k[(k[f>>2]|0)+(((d>>>0)/3|0)*12|0)+(((d|0)%3|0)<<2)>>2]=t;if((t|0)>-1){n=f+24|0;h=f+28|0;g=k[h>>2]|0;f=k[n>>2]|0;j=g-f>>2;do if(j>>>0<=t>>>0){m=t+1|0;if(m>>>0>j>>>0){wg(n,m-j|0);f=k[n>>2]|0;break}if(m>>>0>>0?(F=f+(m<<2)|0,(g|0)!=(F|0)):0)k[h>>2]=g+(~((g+-4-F|0)>>>2)<<2)}while(0);k[f+(t<<2)>>2]=d;f=k[P>>2]|0}g=p+1|0;if(!q?(A=((g|0)%3|0|0)==0?p+-2|0:g,(A|0)>=0):0)p=k[(k[f>>2]|0)+(((A>>>0)/3|0)*12|0)+(((A>>>0)%3|0)<<2)>>2]|0;else p=-1073741824;k[(k[f>>2]|0)+(((d|0)<-1?-1073741824:(s>>>0)/3|0)*12|0)+(((s|0)%3|0)<<2)>>2]=p;if((p|0)>-1){n=f+24|0;h=f+28|0;g=k[h>>2]|0;f=k[n>>2]|0;j=g-f>>2;do if(j>>>0<=p>>>0){m=p+1|0;if(m>>>0>j>>>0){wg(n,m-j|0);f=k[n>>2]|0;break}if(m>>>0>>0?(J=f+(m<<2)|0,(g|0)!=(J|0)):0)k[h>>2]=g+(~((g+-4-J|0)>>>2)<<2)}while(0);k[f+(p<<2)>>2]=s;f=k[P>>2]|0}if(!v?(E=(((u>>>0)%3|0|0)==0?2:-1)+u|0,(E|0)>=0):0)p=k[(k[f>>2]|0)+(((E>>>0)/3|0)*12|0)+(((E>>>0)%3|0)<<2)>>2]|0;else p=-1073741824;k[(k[f>>2]|0)+(((d|0)<-2?-1073741824:(w>>>0)/3|0)*12|0)+(((w|0)%3|0)<<2)>>2]=p;if((p|0)>-1){n=f+24|0;h=f+28|0;g=k[h>>2]|0;f=k[n>>2]|0;j=g-f>>2;do if(j>>>0<=p>>>0){m=p+1|0;if(m>>>0>j>>>0){wg(n,m-j|0);f=k[n>>2]|0;break}if(m>>>0>>0?(N=f+(m<<2)|0,(g|0)!=(N|0)):0)k[h>>2]=g+(~((g+-4-N|0)>>>2)<<2)}while(0);k[f+(p<<2)>>2]=w}if((e|0)>(ha|0)){e=-1;break a}ia=(k[sa>>2]|0)+(t>>>5<<2)|0;k[ia>>2]=k[ia>>2]&~(1<<(t&31));k[(k[wa>>2]|0)+-4>>2]=d;ia=190}else if((ia|0)==57){ia=0;switch(d|0){case 3:case 5:{t=k[(k[wa>>2]|0)+-4>>2]|0;v=w*3|0;n=((d|0)==5?2:1)+v|0;d=k[P>>2]|0;u=k[d+12>>2]|0;k[u+(n<<2)>>2]=t;k[u+(t<<2)>>2]=n;u=e+1|0;s=(n|0)<0;k[(k[d>>2]|0)+((s?-1073741824:(n>>>0)/3|0)*12|0)+(((n|0)%3|0)<<2)>>2]=e;if((e|0)>-1){j=d+24|0;g=d+28|0;f=k[g>>2]|0;d=k[j>>2]|0;h=f-d>>2;do if(h>>>0<=e>>>0){if(u>>>0>h>>>0){wg(j,u-h|0);d=k[j>>2]|0;break}if(u>>>0>>0?(T=d+(u<<2)|0,(f|0)!=(T|0)):0)k[g>>2]=f+(~((f+-4-T|0)>>>2)<<2)}while(0);k[d+(e<<2)>>2]=n;e=k[P>>2]|0}else e=d;d=n+1|0;if(s)p=n;else p=((d|0)%3|0|0)==0?n+-2|0:d;q=(t|0)<0;if(!q?(D=(((t>>>0)%3|0|0)==0?2:-1)+t|0,(D|0)>=0):0)m=k[(k[e>>2]|0)+(((D>>>0)/3|0)*12|0)+(((D>>>0)%3|0)<<2)>>2]|0;else m=-1073741824;k[(k[e>>2]|0)+(((p|0)<0?-1073741824:(p>>>0)/3|0)*12|0)+(((p|0)%3|0)<<2)>>2]=m;if((m|0)>-1){j=e+24|0;f=e+28|0;e=k[f>>2]|0;d=k[j>>2]|0;g=e-d>>2;do if(g>>>0<=m>>>0){h=m+1|0;if(h>>>0>g>>>0){wg(j,h-g|0);d=k[j>>2]|0;break}if(h>>>0>>0?(Y=d+(h<<2)|0,(e|0)!=(Y|0)):0)k[f>>2]=e+(~((e+-4-Y|0)>>>2)<<2)}while(0);k[d+(m<<2)>>2]=p;e=k[P>>2]|0}do if(!s)if(!((n>>>0)%3|0)){n=n+2|0;break}else{n=n+-1|0;break}while(0);d=t+1|0;if(!q?(z=((d|0)%3|0|0)==0?t+-2|0:d,(z|0)>=0):0)m=k[(k[e>>2]|0)+(((z>>>0)/3|0)*12|0)+(((z>>>0)%3|0)<<2)>>2]|0;else m=-1073741824;k[(k[e>>2]|0)+(((n|0)<0?-1073741824:(n>>>0)/3|0)*12|0)+(((n|0)%3|0)<<2)>>2]=m;if((m|0)>-1){j=e+24|0;f=e+28|0;e=k[f>>2]|0;d=k[j>>2]|0;g=e-d>>2;do if(g>>>0<=m>>>0){h=m+1|0;if(h>>>0>g>>>0){wg(j,h-g|0);d=k[j>>2]|0;break}if(h>>>0>>0?(Z=d+(h<<2)|0,(e|0)!=(Z|0)):0)k[f>>2]=e+(~((e+-4-Z|0)>>>2)<<2)}while(0);k[d+(m<<2)>>2]=n}k[(k[wa>>2]|0)+-4>>2]=v;e=u;d=v;break}case 1:{d=k[wa>>2]|0;p=d+-4|0;g=k[p>>2]|0;k[wa>>2]=p;j=k[U>>2]|0;e:do if(j){m=j+-1|0;h=(m&j|0)==0;if(h)n=m&w;else n=(w>>>0)%(j>>>0)|0;f=k[(k[va>>2]|0)+(n<<2)>>2]|0;if(f){if(h)do{f=k[f>>2]|0;if(!f){d=p;break e}if((k[f+4>>2]&m|0)!=(n|0)){d=p;break e}}while((k[f+8>>2]|0)!=(w|0));else do{f=k[f>>2]|0;if(!f){d=p;break e}if((((k[f+4>>2]|0)>>>0)%(j>>>0)|0|0)!=(n|0)){d=p;break e}}while((k[f+8>>2]|0)!=(w|0));f=f+12|0;if((p|0)==(k[W>>2]|0)){Ig(ua,f);d=k[wa>>2]|0;break}else{k[p>>2]=k[f>>2];k[wa>>2]=d;break}}else d=p}else d=p;while(0);s=k[d+-4>>2]|0;d=w*3|0;u=d+2|0;f=k[P>>2]|0;q=k[f+12>>2]|0;k[q+(s<<2)>>2]=u;k[q+(u<<2)>>2]=s;t=d+1|0;k[q+(g<<2)>>2]=t;k[q+(t<<2)>>2]=g;q=(s|0)<0;if(!q?(C=(((s>>>0)%3|0|0)==0?2:-1)+s|0,(C|0)>=0):0)w=k[(k[f>>2]|0)+(((C>>>0)/3|0)*12|0)+(((C>>>0)%3|0)<<2)>>2]|0;else w=-1073741824;k[(k[f>>2]|0)+(((d>>>0)/3|0)*12|0)+(((d|0)%3|0)<<2)>>2]=w;v=(w|0)>-1;if(v){p=f+24|0;j=f+28|0;h=k[j>>2]|0;f=k[p>>2]|0;m=h-f>>2;do if(m>>>0<=w>>>0){n=w+1|0;if(n>>>0>m>>>0){wg(p,n-m|0);f=k[p>>2]|0;break}if(n>>>0>>0?(_=f+(n<<2)|0,(h|0)!=(_|0)):0)k[j>>2]=h+(~((h+-4-_|0)>>>2)<<2)}while(0);k[f+(w<<2)>>2]=d;f=k[P>>2]|0}h=s+1|0;if(!q?(y=((h|0)%3|0|0)==0?s+-2|0:h,(y|0)>=0):0)q=k[(k[f>>2]|0)+(((y>>>0)/3|0)*12|0)+(((y>>>0)%3|0)<<2)>>2]|0;else q=-1073741824;k[(k[f>>2]|0)+(((d|0)<-1?-1073741824:(t>>>0)/3|0)*12|0)+(((t|0)%3|0)<<2)>>2]=q;if((q|0)>-1){p=f+24|0;j=f+28|0;h=k[j>>2]|0;f=k[p>>2]|0;m=h-f>>2;do if(m>>>0<=q>>>0){n=q+1|0;if(n>>>0>m>>>0){wg(p,n-m|0);f=k[p>>2]|0;break}if(n>>>0>>0?(ba=f+(n<<2)|0,(h|0)!=(ba|0)):0)k[j>>2]=h+(~((h+-4-ba|0)>>>2)<<2)}while(0);k[f+(q<<2)>>2]=t;f=k[P>>2]|0}s=(g|0)<0;if(!s?(B=(((g>>>0)%3|0|0)==0?2:-1)+g|0,(B|0)>=0):0)q=k[(k[f>>2]|0)+(((B>>>0)/3|0)*12|0)+(((B>>>0)%3|0)<<2)>>2]|0;else q=-1073741824;k[(k[f>>2]|0)+(((d|0)<-2?-1073741824:(u>>>0)/3|0)*12|0)+(((u|0)%3|0)<<2)>>2]=q;if((q|0)>-1){p=f+24|0;j=f+28|0;h=k[j>>2]|0;f=k[p>>2]|0;m=h-f>>2;do if(m>>>0<=q>>>0){n=q+1|0;if(n>>>0>m>>>0){wg(p,n-m|0);f=k[p>>2]|0;break}if(n>>>0>>0?(ca=f+(n<<2)|0,(h|0)!=(ca|0)):0)k[j>>2]=h+(~((h+-4-ca|0)>>>2)<<2)}while(0);k[f+(q<<2)>>2]=u}f=g+1|0;if(!s){f=((f|0)%3|0|0)==0?g+-2|0:f;if((f|0)<0){s=-1073741824;g=f}else{s=k[(k[k[P>>2]>>2]|0)+(((f>>>0)/3|0)*12|0)+(((f>>>0)%3|0)<<2)>>2]|0;g=f}}else s=-1073741824;ia=k[V>>2]|0;f=ia+(w<<2)|0;k[f>>2]=(k[f>>2]|0)+(k[ia+(s<<2)>>2]|0);f=k[P>>2]|0;f:do if((g|0)>-1){q=w+1|0;if(!v){j=k[f>>2]|0;m=f+12|0;while(1){k[j+(((g>>>0)/3|0)*12|0)+(((g>>>0)%3|0)<<2)>>2]=w;ia=g+1|0;g=((ia|0)%3|0|0)==0?g+-2|0:ia;if((g|0)<0)break f;g=k[(k[m>>2]|0)+(g<<2)>>2]|0;h=g+1|0;if((g|0)<0)break f;g=((h|0)%3|0|0)==0?g+-2|0:h;if((g|0)<=-1)break f}}do{k[(k[f>>2]|0)+(((g>>>0)/3|0)*12|0)+(((g>>>0)%3|0)<<2)>>2]=w;n=f+24|0;p=f+28|0;h=k[p>>2]|0;f=k[n>>2]|0;j=h-f>>2;do if(j>>>0<=w>>>0){m=h;if(q>>>0>j>>>0){wg(n,q-j|0);f=k[n>>2]|0;break}if(q>>>0>=j>>>0)break;h=f+(q<<2)|0;if((m|0)==(h|0))break;k[p>>2]=m+(~((m+-4-h|0)>>>2)<<2)}while(0);k[f+(w<<2)>>2]=g;f=g+1|0;g=((f|0)%3|0|0)==0?g+-2|0:f;f=k[P>>2]|0;if((g|0)<0)break f;g=k[(k[f+12>>2]|0)+(g<<2)>>2]|0;h=g+1|0;if((g|0)<0)break f;g=((h|0)%3|0|0)==0?g+-2|0:h}while((g|0)>-1)}while(0);k[(k[f+24>>2]|0)+(s<<2)>>2]=-1073741824;k[(k[wa>>2]|0)+-4>>2]=d;ia=190;break c}case 7:{m=w*3|0;k[na>>2]=m;f=k[P>>2]|0;n=e+1|0;d=k[f>>2]|0;k[d+(((m>>>0)/3|0)*12|0)+(((m|0)%3|0)<<2)>>2]=e;if((e|0)>-1){j=f+24|0;g=f+28|0;f=k[g>>2]|0;d=k[j>>2]|0;h=f-d>>2;do if(h>>>0<=e>>>0){if(n>>>0>h>>>0){wg(j,n-h|0);d=k[j>>2]|0;break}if(n>>>0>>0?(ea=d+(n<<2)|0,(f|0)!=(ea|0)):0)k[g>>2]=f+(~((f+-4-ea|0)>>>2)<<2)}while(0);k[d+(e<<2)>>2]=m;f=k[P>>2]|0;g=k[na>>2]|0;d=k[f>>2]|0}else g=m;m=g+1|0;p=e+2|0;k[d+(((g|0)<-1?-1073741824:(m>>>0)/3|0)*12|0)+(((m|0)%3|0)<<2)>>2]=n;if((e|0)>-2){j=f+24|0;g=f+28|0;f=k[g>>2]|0;d=k[j>>2]|0;h=f-d>>2;do if(h>>>0<=n>>>0){if(p>>>0>h>>>0){wg(j,p-h|0);d=k[j>>2]|0;break}if(p>>>0>>0?(fa=d+(p<<2)|0,(f|0)!=(fa|0)):0)k[g>>2]=f+(~((f+-4-fa|0)>>>2)<<2)}while(0);k[d+(n<<2)>>2]=m;f=k[P>>2]|0;g=k[na>>2]|0;d=k[f>>2]|0}m=g+2|0;e=e+3|0;k[d+(((g|0)<-2?-1073741824:(m>>>0)/3|0)*12|0)+(((m|0)%3|0)<<2)>>2]=p;if((p|0)>-1){j=f+24|0;g=f+28|0;f=k[g>>2]|0;d=k[j>>2]|0;h=f-d>>2;do if(h>>>0<=p>>>0){if(e>>>0>h>>>0){wg(j,e-h|0);d=k[j>>2]|0;break}if(e>>>0>>0?(ga=d+(e<<2)|0,(f|0)!=(ga|0)):0)k[g>>2]=f+(~((f+-4-ga|0)>>>2)<<2)}while(0);k[d+(p<<2)>>2]=m}d=k[wa>>2]|0;if((d|0)==(k[W>>2]|0)){Ig(ua,na);d=k[wa>>2]|0}else{k[d>>2]=k[na>>2];d=d+4|0;k[wa>>2]=d}d=k[d+-4>>2]|0;break}default:{e=-1;break a}}k[$>>2]=d;k[na>>2]=k[$>>2];Xc(G,na);j=b-w|0;m=j+-1|0;d=k[R>>2]|0;if((d|0)!=(k[Q>>2]|0))do{f=k[d+-8>>2]|0;if((f|0)>=(j|0)){e=-1;break a}if((f|0)!=(m|0))break c;f=i[d+-4>>0]|0;h=k[d+-12>>2]|0;k[R>>2]=d+-12;if((h|0)<0){e=-1;break a}d=k[(k[wa>>2]|0)+-4>>2]|0;g=(d|0)<0;do if(!(f&1)){if(!g)if(!((d>>>0)%3|0)){d=d+2|0;break}else{d=d+-1|0;break}}else{f=d+1|0;if(!g)d=((f|0)%3|0|0)==0?d+-2|0:f}while(0);k[na>>2]=S-h;w=ae(va,na)|0;k[w>>2]=d;d=k[R>>2]|0}while((d|0)!=(k[Q>>2]|0))}while(0);if((ia|0)==190){k[$>>2]=d;k[na>>2]=k[$>>2];Xc(G,na)}if((c|0)<(b|0))w=c;else{ia=204;break}}}else{e=0;c=0;ia=204}while(0);do if((ia|0)==204)if((e|0)<=(ha|0)){d=k[wa>>2]|0;g:do if((d|0)!=(k[ua>>2]|0)){t=a+316|0;u=a+8|0;v=a+64|0;w=a+68|0;x=a+72|0;y=a+80|0;z=a+84|0;A=a+76|0;B=a+312|0;C=a+304|0;D=a+308|0;h:while(1){ha=d;n=k[ha+-4>>2]|0;k[na>>2]=n;k[wa>>2]=ha+-4;do if(i[t>>0]|0){d=k[B>>2]|0;f=(k[C>>2]|0)+(d>>>3)|0;if(f>>>0<(k[D>>2]|0)>>>0?(ha=l[f>>0]|0,k[B>>2]=d+1,ha&1<<(d&7)|0):0){ia=211;break}d=k[w>>2]|0;f=k[x>>2]|0;if((d|0)==(f<<5|0)){if((d+1|0)<0){ia=267;break h}ha=f<<6;d=d+32&-32;ig(v,f<<5>>>0<1073741823?(ha>>>0>>0?d:ha):2147483647);d=k[w>>2]|0}k[w>>2]=d+1;ha=(k[v>>2]|0)+(d>>>5<<2)|0;k[ha>>2]=k[ha>>2]&~(1<<(d&31));d=k[y>>2]|0;if((d|0)==(k[z>>2]|0)){Ig(A,na);break}else{k[d>>2]=k[na>>2];k[y>>2]=d+4;break}}else ia=211;while(0);if((ia|0)==211){ia=0;h=(n|0)<0;i:do if(!h){d=n+(((n>>>0)%3|0|0)==0?2:-1)|0;if((d|0)>=0){f=k[(k[u>>2]|0)+12>>2]|0;g=d;while(1){d=k[f+(g<<2)>>2]|0;if((d|0)<=-1){f=0;d=g;break}d=d+(((d>>>0)%3|0|0)==0?2:-1)|0;if((d|0)<0){f=1;break}else g=d}if(h){g=n;ia=218;break}}else f=1;g=n+1|0;g=((g|0)%3|0|0)==0?n+-2|0:g;if((g|0)<0)ia=218;else{m=k[u>>2]|0;j=k[m+12>>2]|0;while(1){h=k[j+(g<<2)>>2]|0;if((h|0)<=-1){q=0;h=j;j=m;break i}g=h+1|0;g=((g|0)%3|0|0)==0?h+-2|0:g;if((g|0)<0){q=1;h=j;j=m;break}}}}else{f=1;g=n;d=n;ia=218}while(0);if((ia|0)==218){ia=0;j=k[u>>2]|0;q=1;h=k[j+12>>2]|0}s=c+1|0;c=c*3|0;k[pa>>2]=c;k[h+(c<<2)>>2]=n;k[h+(n<<2)>>2]=c;c=(k[pa>>2]|0)+1|0;k[h+(c<<2)>>2]=d;k[h+(d<<2)>>2]=c;c=(k[pa>>2]|0)+2|0;k[h+(c<<2)>>2]=g;k[h+(g<<2)>>2]=c;c=k[pa>>2]|0;h=d+1|0;if(!f?(la=((h|0)%3|0|0)==0?d+-2|0:h,(la|0)>=0):0)p=k[(k[j>>2]|0)+(((la>>>0)/3|0)*12|0)+(((la>>>0)%3|0)<<2)>>2]|0;else p=-1073741824;k[(k[j>>2]|0)+(((c|0)<0?-1073741824:(c>>>0)/3|0)*12|0)+(((c|0)%3|0)<<2)>>2]=p;if((p|0)>-1){n=j+24|0;h=j+28|0;f=k[h>>2]|0;d=k[n>>2]|0;j=f-d>>2;do if(j>>>0<=p>>>0){m=p+1|0;if(m>>>0>j>>>0){wg(n,m-j|0);d=k[n>>2]|0;break}if(m>>>0>>0?(qa=d+(m<<2)|0,(f|0)!=(qa|0)):0)k[h>>2]=f+(~((f+-4-qa|0)>>>2)<<2)}while(0);k[d+(p<<2)>>2]=c;c=k[pa>>2]|0;f=k[u>>2]|0}else f=j;n=c+1|0;d=g+1|0;if(!q?(ka=((d|0)%3|0|0)==0?g+-2|0:d,(ka|0)>=0):0)m=k[(k[f>>2]|0)+(((ka>>>0)/3|0)*12|0)+(((ka>>>0)%3|0)<<2)>>2]|0;else m=-1073741824;k[(k[f>>2]|0)+(((c|0)<-1?-1073741824:(n>>>0)/3|0)*12|0)+(((n|0)%3|0)<<2)>>2]=m;if((m|0)>-1){j=f+24|0;f=f+28|0;d=k[f>>2]|0;c=k[j>>2]|0;g=d-c>>2;do if(g>>>0<=m>>>0){h=m+1|0;if(h>>>0>g>>>0){wg(j,h-g|0);c=k[j>>2]|0;break}if(h>>>0>>0?(ra=c+(h<<2)|0,(d|0)!=(ra|0)):0)k[f>>2]=d+(~((d+-4-ra|0)>>>2)<<2)}while(0);k[c+(m<<2)>>2]=n;c=k[pa>>2]|0;g=k[u>>2]|0}else g=f;p=c+2|0;d=k[na>>2]|0;f=d+1|0;if((d|0)>=0?(ja=((f|0)%3|0|0)==0?d+-2|0:f,(ja|0)>=0):0)n=k[(k[g>>2]|0)+(((ja>>>0)/3|0)*12|0)+(((ja>>>0)%3|0)<<2)>>2]|0;else n=-1073741824;k[(k[g>>2]|0)+(((c|0)<-2?-1073741824:(p>>>0)/3|0)*12|0)+(((p|0)%3|0)<<2)>>2]=n;if((n|0)>-1){j=g+24|0;m=g+28|0;d=k[m>>2]|0;c=k[j>>2]|0;f=d-c>>2;do if(f>>>0<=n>>>0){g=n+1|0;h=d;if(g>>>0>f>>>0){wg(j,g-f|0);c=k[j>>2]|0;break}if(g>>>0>>0){d=c+(g<<2)|0;if((h|0)==(d|0))break;k[m>>2]=h+(~((h+-4-d|0)>>>2)<<2)}}while(0);k[c+(n<<2)>>2]=p;c=k[pa>>2]|0}if((c|0)<0)c=-1073741824;else c=k[(k[k[u>>2]>>2]|0)+(((c>>>0)/3|0)*12|0)+(((c>>>0)%3|0)<<2)>>2]|0;d=k[sa>>2]|0;ha=d+(c>>>5<<2)|0;k[ha>>2]=k[ha>>2]&~(1<<(c&31));ha=k[pa>>2]|0;c=ha+1|0;if((ha|0)<-1)c=-1073741824;else c=k[(k[k[u>>2]>>2]|0)+(((c>>>0)/3|0)*12|0)+(((c>>>0)%3|0)<<2)>>2]|0;ha=d+(c>>>5<<2)|0;k[ha>>2]=k[ha>>2]&~(1<<(c&31));ha=k[pa>>2]|0;c=ha+2|0;if((ha|0)<-2)c=-1073741824;else c=k[(k[k[u>>2]>>2]|0)+(((c>>>0)/3|0)*12|0)+(((c>>>0)%3|0)<<2)>>2]|0;d=d+(c>>>5<<2)|0;k[d>>2]=k[d>>2]&~(1<<(c&31));c=k[w>>2]|0;d=k[x>>2]|0;if((c|0)==(d<<5|0)){if((c+1|0)<0){ia=257;break}ha=d<<6;c=c+32&-32;ig(v,d<<5>>>0<1073741823?(ha>>>0>>0?c:ha):2147483647);c=k[w>>2]|0}k[w>>2]=c+1;ha=(k[v>>2]|0)+(c>>>5<<2)|0;k[ha>>2]=k[ha>>2]|1<<(c&31);c=k[y>>2]|0;if((c|0)==(k[z>>2]|0))Ig(A,pa);else{k[c>>2]=k[pa>>2];k[y>>2]=c+4}c=s}d=k[wa>>2]|0;if((d|0)==(k[ua>>2]|0)){ma=c;oa=u;break g}}if((ia|0)==257)$k(v);else if((ia|0)==267)$k(v)}else{ma=c;oa=a+8|0}while(0);sa=k[oa>>2]|0;if((ma|0)==(((k[sa+4>>2]|0)-(k[sa>>2]|0)|0)/12|0|0)){h=a+88|0;c=a+92|0;g=k[c>>2]|0;d=k[h>>2]|0;f=g-d>>2;if(e>>>0>f>>>0){wg(h,e-f|0);break}if(e>>>0>>0?(ta=d+(e<<2)|0,(g|0)!=(ta|0)):0)k[c>>2]=g+(~((g+-4-ta|0)>>>2)<<2)}else e=-1}else e=-1;while(0);c=k[va+8>>2]|0;if(c|0)do{ta=c;c=k[c>>2]|0;Vl(ta)}while((c|0)!=0);c=k[va>>2]|0;k[va>>2]=0;if(c|0)Vl(c);c=k[ua>>2]|0;if(!c){r=xa;return e|0}d=k[wa>>2]|0;if((d|0)!=(c|0))k[wa>>2]=d+(~((d+-4-c|0)>>>2)<<2);Vl(c);r=xa;return e|0}function bb(a,b){a=a|0;b=b|0;var c=0,d=0,e=0,f=0,g=0,h=0,j=0,m=0,n=0,p=0,q=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,B=0,C=0,D=0,E=0,F=0,G=0,H=0,I=0,J=0,K=0,L=0,M=0,N=0,O=0,P=0,Q=0,R=0,S=0,T=0,U=0,V=0,W=0,X=0,Y=0,Z=0,_=0,$=0,aa=0,ba=0,ca=0,ea=0,fa=0,ga=0,ha=0,ia=0,ja=0,ka=0,la=0,ma=0,na=0,oa=0,pa=0,qa=0,ra=0,sa=0;sa=r;r=r+48|0;pa=sa+28|0;qa=sa+8|0;ia=sa+4|0;ja=sa;k[pa>>2]=0;ra=pa+4|0;k[ra>>2]=0;k[pa+8>>2]=0;k[qa>>2]=0;k[qa+4>>2]=0;k[qa+8>>2]=0;k[qa+12>>2]=0;o[qa+16>>2]=da(1.0);ma=a+136|0;ba=k[a+140>>2]|0;a:do if((b|0)>0){J=a+276|0;L=qa+4|0;M=a+8|0;N=pa+8|0;O=a+272|0;Q=a+264|0;R=a+268|0;S=a+36|0;T=a+40|0;U=b+-1|0;d=0;x=0;b:while(1){c=x+1|0;c:do if(!(i[J>>0]|0))na=89;else{f=k[O>>2]|0;h=k[Q>>2]|0;j=k[R>>2]|0;e=h+(f>>>3)|0;if(e>>>0>>0?(w=l[e>>0]|0,W=f+1|0,k[O>>2]=W,w&1<<(f&7)|0):0){e=h+(W>>>3)|0;if(e>>>0>>0){g=(l[e>>0]|0)>>>(W&7)&1;f=f+2|0;k[O>>2]=f}else{g=0;f=W}e=h+(f>>>3)|0;if(e>>>0>>0){e=(l[e>>0]|0)>>>(f&7);k[O>>2]=f+1;e=e<<1&2}else e=0;e=(e|g)<<1|1;switch(e&7){case 1:{na=89;break c}case 3:case 5:{u=k[(k[ra>>2]|0)+-4>>2]|0;w=x*3|0;p=((e|0)==5?2:1)+w|0;e=k[M>>2]|0;v=k[e+12>>2]|0;k[v+(p<<2)>>2]=u;k[v+(u<<2)>>2]=p;v=d+1|0;t=(p|0)<0;k[(k[e>>2]|0)+((t?-1073741824:(p>>>0)/3|0)*12|0)+(((p|0)%3|0)<<2)>>2]=d;if((d|0)>-1){j=e+24|0;g=e+28|0;f=k[g>>2]|0;e=k[j>>2]|0;h=f-e>>2;do if(h>>>0<=d>>>0){if(v>>>0>h>>>0){wg(j,v-h|0);e=k[j>>2]|0;break}if(v>>>0>>0?(V=e+(v<<2)|0,(f|0)!=(V|0)):0)k[g>>2]=f+(~((f+-4-V|0)>>>2)<<2)}while(0);k[e+(d<<2)>>2]=p;e=k[M>>2]|0}d=p+1|0;if(t)q=p;else q=((d|0)%3|0|0)==0?p+-2|0:d;s=(u|0)<0;if(!s?(G=(((u>>>0)%3|0|0)==0?2:-1)+u|0,(G|0)>=0):0)n=k[(k[e>>2]|0)+(((G>>>0)/3|0)*12|0)+(((G>>>0)%3|0)<<2)>>2]|0;else n=-1073741824;k[(k[e>>2]|0)+(((q|0)<0?-1073741824:(q>>>0)/3|0)*12|0)+(((q|0)%3|0)<<2)>>2]=n;if((n|0)>-1){j=e+24|0;m=e+28|0;e=k[m>>2]|0;d=k[j>>2]|0;f=e-d>>2;do if(f>>>0<=n>>>0){g=n+1|0;h=e;if(g>>>0>f>>>0){wg(j,g-f|0);d=k[j>>2]|0;break}if(g>>>0>>0){e=d+(g<<2)|0;if((h|0)==(e|0))break;k[m>>2]=h+(~((h+-4-e|0)>>>2)<<2)}}while(0);k[d+(n<<2)>>2]=q;e=k[M>>2]|0}do if(!t)if(!((p>>>0)%3|0)){p=p+2|0;break}else{p=p+-1|0;break}while(0);d=u+1|0;if(!s?(B=((d|0)%3|0|0)==0?u+-2|0:d,(B|0)>=0):0)n=k[(k[e>>2]|0)+(((B>>>0)/3|0)*12|0)+(((B>>>0)%3|0)<<2)>>2]|0;else n=-1073741824;k[(k[e>>2]|0)+(((p|0)<0?-1073741824:(p>>>0)/3|0)*12|0)+(((p|0)%3|0)<<2)>>2]=n;if((n|0)>-1){j=e+24|0;m=e+28|0;e=k[m>>2]|0;d=k[j>>2]|0;f=e-d>>2;do if(f>>>0<=n>>>0){g=n+1|0;h=e;if(g>>>0>f>>>0){wg(j,g-f|0);d=k[j>>2]|0;break}if(g>>>0>=f>>>0)break;e=d+(g<<2)|0;if((h|0)==(e|0))break;k[m>>2]=h+(~((h+-4-e|0)>>>2)<<2)}while(0);k[d+(n<<2)>>2]=p}k[(k[ra>>2]|0)+-4>>2]=w;d=v;break}case 7:{m=x*3|0;k[ia>>2]=m;f=k[M>>2]|0;n=d+1|0;e=k[f>>2]|0;k[e+(((m>>>0)/3|0)*12|0)+(((m|0)%3|0)<<2)>>2]=d;if((d|0)>-1){j=f+24|0;g=f+28|0;f=k[g>>2]|0;e=k[j>>2]|0;h=f-e>>2;do if(h>>>0<=d>>>0){if(n>>>0>h>>>0){wg(j,n-h|0);e=k[j>>2]|0;break}if(n>>>0>>0?(_=e+(n<<2)|0,(f|0)!=(_|0)):0)k[g>>2]=f+(~((f+-4-_|0)>>>2)<<2)}while(0);k[e+(d<<2)>>2]=m;f=k[M>>2]|0;g=k[ia>>2]|0;e=k[f>>2]|0}else g=m;m=g+1|0;p=d+2|0;k[e+(((g|0)<-1?-1073741824:(m>>>0)/3|0)*12|0)+(((m|0)%3|0)<<2)>>2]=n;if((d|0)>-2){j=f+24|0;g=f+28|0;f=k[g>>2]|0;e=k[j>>2]|0;h=f-e>>2;do if(h>>>0<=n>>>0){if(p>>>0>h>>>0){wg(j,p-h|0);e=k[j>>2]|0;break}if(p>>>0>>0?($=e+(p<<2)|0,(f|0)!=($|0)):0)k[g>>2]=f+(~((f+-4-$|0)>>>2)<<2)}while(0);k[e+(n<<2)>>2]=m;f=k[M>>2]|0;g=k[ia>>2]|0;e=k[f>>2]|0}m=g+2|0;d=d+3|0;k[e+(((g|0)<-2?-1073741824:(m>>>0)/3|0)*12|0)+(((m|0)%3|0)<<2)>>2]=p;if((p|0)>-1){j=f+24|0;g=f+28|0;f=k[g>>2]|0;e=k[j>>2]|0;h=f-e>>2;do if(h>>>0<=p>>>0){if(d>>>0>h>>>0){wg(j,d-h|0);e=k[j>>2]|0;break}if(d>>>0>>0?(aa=e+(d<<2)|0,(f|0)!=(aa|0)):0)k[g>>2]=f+(~((f+-4-aa|0)>>>2)<<2)}while(0);k[e+(p<<2)>>2]=m}e=k[ra>>2]|0;if((e|0)==(k[N>>2]|0))Ig(pa,ia);else{k[e>>2]=k[ia>>2];k[ra>>2]=e+4}break}default:break b}j=b-x|0;m=j+-1|0;e=k[T>>2]|0;if((e|0)==(k[S>>2]|0))break;while(1){f=k[e+-8>>2]|0;if((f|0)>=(j|0)){D=-1;break a}if((f|0)!=(m|0))break c;f=i[e+-4>>0]|0;h=k[e+-12>>2]|0;k[T>>2]=e+-12;if((h|0)<0){D=-1;break a}e=k[(k[ra>>2]|0)+-4>>2]|0;g=(e|0)<0;do if(!(f&1)){if(!g)if(!((e>>>0)%3|0)){e=e+2|0;break}else{e=e+-1|0;break}}else{f=e+1|0;if(!g)e=((f|0)%3|0|0)==0?e+-2|0:f}while(0);k[ia>>2]=U-h;x=ae(qa,ia)|0;k[x>>2]=e;e=k[T>>2]|0;if((e|0)==(k[S>>2]|0))break c}}t=k[(k[ra>>2]|0)+-4>>2]|0;u=(t|0)<0;d:do if(!u){e=t+(((t>>>0)%3|0|0)==0?2:-1)|0;if((e|0)<0)na=12;else{h=k[M>>2]|0;g=k[h+12>>2]|0;while(1){f=k[g+(e<<2)>>2]|0;if((f|0)<=-1){p=0;break d}e=f+(((f>>>0)%3|0|0)==0?2:-1)|0;if((e|0)<0){p=1;break}}}}else{e=t;na=12}while(0);if((na|0)==12){na=0;h=k[M>>2]|0;p=1;g=k[h+12>>2]|0}v=x*3|0;q=v+1|0;k[g+(t<<2)>>2]=q;k[g+(q<<2)>>2]=t;w=v+2|0;k[g+(e<<2)>>2]=w;k[g+(w<<2)>>2]=e;f=t+1|0;if(!u?(z=((f|0)%3|0|0)==0?t+-2|0:f,(z|0)>=0):0)s=k[(k[h>>2]|0)+(((z>>>0)/3|0)*12|0)+(((z>>>0)%3|0)<<2)>>2]|0;else s=-1073741824;k[(k[h>>2]|0)+(((v>>>0)/3|0)*12|0)+(((v|0)%3|0)<<2)>>2]=s;if((s|0)>-1){n=h+24|0;h=h+28|0;g=k[h>>2]|0;f=k[n>>2]|0;j=g-f>>2;do if(j>>>0<=s>>>0){m=s+1|0;if(m>>>0>j>>>0){wg(n,m-j|0);f=k[n>>2]|0;break}if(m>>>0>>0?(I=f+(m<<2)|0,(g|0)!=(I|0)):0)k[h>>2]=g+(~((g+-4-I|0)>>>2)<<2)}while(0);k[f+(s<<2)>>2]=v;g=k[M>>2]|0}else g=h;f=e+1|0;if(!p?(C=((f|0)%3|0|0)==0?e+-2|0:f,(C|0)>=0):0)n=k[(k[g>>2]|0)+(((C>>>0)/3|0)*12|0)+(((C>>>0)%3|0)<<2)>>2]|0;else n=-1073741824;k[(k[g>>2]|0)+(((v|0)<-1?-1073741824:(q>>>0)/3|0)*12|0)+(((q|0)%3|0)<<2)>>2]=n;if((n|0)>-1){m=g+24|0;g=g+28|0;f=k[g>>2]|0;e=k[m>>2]|0;h=f-e>>2;do if(h>>>0<=n>>>0){j=n+1|0;if(j>>>0>h>>>0){wg(m,j-h|0);e=k[m>>2]|0;break}if(j>>>0>>0?(K=e+(j<<2)|0,(f|0)!=(K|0)):0)k[g>>2]=f+(~((f+-4-K|0)>>>2)<<2)}while(0);k[e+(n<<2)>>2]=q;e=k[M>>2]|0}else e=g;if(!u?(H=(((t>>>0)%3|0|0)==0?2:-1)+t|0,(H|0)>=0):0)n=k[(k[e>>2]|0)+(((H>>>0)/3|0)*12|0)+(((H>>>0)%3|0)<<2)>>2]|0;else n=-1073741824;k[(k[e>>2]|0)+(((v|0)<-2?-1073741824:(w>>>0)/3|0)*12|0)+(((w|0)%3|0)<<2)>>2]=n;if((n|0)>-1){m=e+24|0;g=e+28|0;f=k[g>>2]|0;e=k[m>>2]|0;h=f-e>>2;do if(h>>>0<=n>>>0){j=n+1|0;if(j>>>0>h>>>0){wg(m,j-h|0);e=k[m>>2]|0;break}if(j>>>0>>0?(P=e+(j<<2)|0,(f|0)!=(P|0)):0)k[g>>2]=f+(~((f+-4-P|0)>>>2)<<2)}while(0);k[e+(n<<2)>>2]=w}if((d|0)>(ba|0)){D=-1;break a}x=(k[ma>>2]|0)+(s>>>5<<2)|0;k[x>>2]=k[x>>2]&~(1<<(s&31));k[(k[ra>>2]|0)+-4>>2]=v}while(0);if((na|0)==89){na=0;e=k[ra>>2]|0;n=e+-4|0;u=k[n>>2]|0;k[ra>>2]=n;h=k[L>>2]|0;e:do if(h){j=h+-1|0;g=(j&h|0)==0;if(g)m=j&x;else m=(x>>>0)%(h>>>0)|0;f=k[(k[qa>>2]|0)+(m<<2)>>2]|0;if(f){if(g)do{f=k[f>>2]|0;if(!f){e=n;break e}if((k[f+4>>2]&j|0)!=(m|0)){e=n;break e}}while((k[f+8>>2]|0)!=(x|0));else do{f=k[f>>2]|0;if(!f){e=n;break e}if((((k[f+4>>2]|0)>>>0)%(h>>>0)|0|0)!=(m|0)){e=n;break e}}while((k[f+8>>2]|0)!=(x|0));f=f+12|0;if((n|0)==(k[N>>2]|0)){Ig(pa,f);e=k[ra>>2]|0;break}else{k[n>>2]=k[f>>2];k[ra>>2]=e;break}}else e=n}else e=n;while(0);p=k[e+-4>>2]|0;w=x*3|0;s=w+2|0;e=k[M>>2]|0;n=k[e+12>>2]|0;k[n+(p<<2)>>2]=s;k[n+(s<<2)>>2]=p;q=w+1|0;k[n+(u<<2)>>2]=q;k[n+(q<<2)>>2]=u;n=(p|0)<0;if(!n?(F=(((p>>>0)%3|0|0)==0?2:-1)+p|0,(F|0)>=0):0)v=k[(k[e>>2]|0)+(((F>>>0)/3|0)*12|0)+(((F>>>0)%3|0)<<2)>>2]|0;else v=-1073741824;k[(k[e>>2]|0)+(((w>>>0)/3|0)*12|0)+(((w|0)%3|0)<<2)>>2]=v;t=(v|0)>-1;if(t){m=e+24|0;g=e+28|0;f=k[g>>2]|0;e=k[m>>2]|0;h=f-e>>2;do if(h>>>0<=v>>>0){j=v+1|0;if(j>>>0>h>>>0){wg(m,j-h|0);e=k[m>>2]|0;break}if(j>>>0>>0?(X=e+(j<<2)|0,(f|0)!=(X|0)):0)k[g>>2]=f+(~((f+-4-X|0)>>>2)<<2)}while(0);k[e+(v<<2)>>2]=w;e=k[M>>2]|0}f=p+1|0;if(!n?(A=((f|0)%3|0|0)==0?p+-2|0:f,(A|0)>=0):0)n=k[(k[e>>2]|0)+(((A>>>0)/3|0)*12|0)+(((A>>>0)%3|0)<<2)>>2]|0;else n=-1073741824;k[(k[e>>2]|0)+(((w|0)<-1?-1073741824:(q>>>0)/3|0)*12|0)+(((q|0)%3|0)<<2)>>2]=n;if((n|0)>-1){m=e+24|0;g=e+28|0;f=k[g>>2]|0;e=k[m>>2]|0;h=f-e>>2;do if(h>>>0<=n>>>0){j=n+1|0;if(j>>>0>h>>>0){wg(m,j-h|0);e=k[m>>2]|0;break}if(j>>>0>>0?(Y=e+(j<<2)|0,(f|0)!=(Y|0)):0)k[g>>2]=f+(~((f+-4-Y|0)>>>2)<<2)}while(0);k[e+(n<<2)>>2]=q;e=k[M>>2]|0}p=(u|0)<0;if(!p?(E=(((u>>>0)%3|0|0)==0?2:-1)+u|0,(E|0)>=0):0)n=k[(k[e>>2]|0)+(((E>>>0)/3|0)*12|0)+(((E>>>0)%3|0)<<2)>>2]|0;else n=-1073741824;k[(k[e>>2]|0)+(((w|0)<-2?-1073741824:(s>>>0)/3|0)*12|0)+(((s|0)%3|0)<<2)>>2]=n;if((n|0)>-1){m=e+24|0;g=e+28|0;f=k[g>>2]|0;e=k[m>>2]|0;h=f-e>>2;do if(h>>>0<=n>>>0){j=n+1|0;if(j>>>0>h>>>0){wg(m,j-h|0);e=k[m>>2]|0;break}if(j>>>0>>0?(Z=e+(j<<2)|0,(f|0)!=(Z|0)):0)k[g>>2]=f+(~((f+-4-Z|0)>>>2)<<2)}while(0);k[e+(n<<2)>>2]=s}e=u+1|0;f:do if(!p?(y=((e|0)%3|0|0)==0?u+-2|0:e,(y|0)>=0):0){e=k[(k[k[M>>2]>>2]|0)+(((y>>>0)/3|0)*12|0)+(((y>>>0)%3|0)<<2)>>2]|0;f=k[M>>2]|0;q=v+1|0;if(t)p=y;else{j=k[f>>2]|0;m=f+12|0;g=y;while(1){k[j+(((g>>>0)/3|0)*12|0)+(((g>>>0)%3|0)<<2)>>2]=v;x=g+1|0;g=((x|0)%3|0|0)==0?g+-2|0:x;if((g|0)<0)break f;g=k[(k[m>>2]|0)+(g<<2)>>2]|0;h=g+1|0;if((g|0)<0)break f;g=((h|0)%3|0|0)==0?g+-2|0:h;if((g|0)<=-1)break f}}do{k[(k[f>>2]|0)+(((p>>>0)/3|0)*12|0)+(((p>>>0)%3|0)<<2)>>2]=v;m=f+24|0;n=f+28|0;g=k[n>>2]|0;f=k[m>>2]|0;h=g-f>>2;do if(h>>>0<=v>>>0){j=g;if(q>>>0>h>>>0){wg(m,q-h|0);f=k[m>>2]|0;break}if(q>>>0>=h>>>0)break;g=f+(q<<2)|0;if((j|0)==(g|0))break;k[n>>2]=j+(~((j+-4-g|0)>>>2)<<2)}while(0);k[f+(v<<2)>>2]=p;g=p+1|0;g=((g|0)%3|0|0)==0?p+-2|0:g;f=k[M>>2]|0;if((g|0)<0)break f;g=k[(k[f+12>>2]|0)+(g<<2)>>2]|0;h=g+1|0;if((g|0)<0)break f;p=((h|0)%3|0|0)==0?g+-2|0:h}while((p|0)>-1)}else na=139;while(0);if((na|0)==139){na=0;f=k[M>>2]|0;e=-1073741824}k[(k[f+24>>2]|0)+(e<<2)>>2]=-1073741824;k[(k[ra>>2]|0)+-4>>2]=w}if((c|0)<(b|0))x=c;else{D=d;na=196;break a}}}else{D=0;c=0;na=196}while(0);do if((na|0)==196)if((D|0)<=(ba|0)){d=k[ra>>2]|0;g:do if((d|0)!=(k[pa>>2]|0)){s=a+316|0;t=a+8|0;u=a+64|0;v=a+68|0;w=a+72|0;x=a+80|0;y=a+84|0;z=a+76|0;A=a+312|0;B=a+304|0;C=a+308|0;h:while(1){ba=d;m=k[ba+-4>>2]|0;k[ia>>2]=m;k[ra>>2]=ba+-4;do if(i[s>>0]|0){d=k[A>>2]|0;e=(k[B>>2]|0)+(d>>>3)|0;if(e>>>0<(k[C>>2]|0)>>>0?(ba=l[e>>0]|0,k[A>>2]=d+1,ba&1<<(d&7)|0):0){na=203;break}d=k[v>>2]|0;e=k[w>>2]|0;if((d|0)==(e<<5|0)){if((d+1|0)<0){na=259;break h}ba=e<<6;d=d+32&-32;ig(u,e<<5>>>0<1073741823?(ba>>>0>>0?d:ba):2147483647);d=k[v>>2]|0}k[v>>2]=d+1;ba=(k[u>>2]|0)+(d>>>5<<2)|0;k[ba>>2]=k[ba>>2]&~(1<<(d&31));d=k[x>>2]|0;if((d|0)==(k[y>>2]|0)){Ig(z,ia);break}else{k[d>>2]=k[ia>>2];k[x>>2]=d+4;break}}else na=203;while(0);if((na|0)==203){na=0;g=(m|0)<0;i:do if(!g){d=m+(((m>>>0)%3|0|0)==0?2:-1)|0;if((d|0)>=0){e=k[(k[t>>2]|0)+12>>2]|0;f=d;while(1){d=k[e+(f<<2)>>2]|0;if((d|0)<=-1){e=0;d=f;break}d=d+(((d>>>0)%3|0|0)==0?2:-1)|0;if((d|0)<0){e=1;break}else f=d}if(g){f=m;na=210;break}}else e=1;f=m+1|0;f=((f|0)%3|0|0)==0?m+-2|0:f;if((f|0)<0)na=210;else{j=k[t>>2]|0;h=k[j+12>>2]|0;while(1){g=k[h+(f<<2)>>2]|0;if((g|0)<=-1){p=0;g=h;h=j;break i}f=g+1|0;f=((f|0)%3|0|0)==0?g+-2|0:f;if((f|0)<0){p=1;g=h;h=j;break}}}}else{e=1;f=m;d=m;na=210}while(0);if((na|0)==210){na=0;h=k[t>>2]|0;p=1;g=k[h+12>>2]|0}q=c+1|0;c=c*3|0;k[ja>>2]=c;k[g+(c<<2)>>2]=m;k[g+(m<<2)>>2]=c;c=(k[ja>>2]|0)+1|0;k[g+(c<<2)>>2]=d;k[g+(d<<2)>>2]=c;c=(k[ja>>2]|0)+2|0;k[g+(c<<2)>>2]=f;k[g+(f<<2)>>2]=c;c=k[ja>>2]|0;g=d+1|0;if(!e?(fa=((g|0)%3|0|0)==0?d+-2|0:g,(fa|0)>=0):0)n=k[(k[h>>2]|0)+(((fa>>>0)/3|0)*12|0)+(((fa>>>0)%3|0)<<2)>>2]|0;else n=-1073741824;k[(k[h>>2]|0)+(((c|0)<0?-1073741824:(c>>>0)/3|0)*12|0)+(((c|0)%3|0)<<2)>>2]=n;if((n|0)>-1){m=h+24|0;g=h+28|0;e=k[g>>2]|0;d=k[m>>2]|0;h=e-d>>2;do if(h>>>0<=n>>>0){j=n+1|0;if(j>>>0>h>>>0){wg(m,j-h|0);d=k[m>>2]|0;break}if(j>>>0>>0?(ka=d+(j<<2)|0,(e|0)!=(ka|0)):0)k[g>>2]=e+(~((e+-4-ka|0)>>>2)<<2)}while(0);k[d+(n<<2)>>2]=c;c=k[ja>>2]|0;e=k[t>>2]|0}else e=h;m=c+1|0;d=f+1|0;if(!p?(ea=((d|0)%3|0|0)==0?f+-2|0:d,(ea|0)>=0):0)j=k[(k[e>>2]|0)+(((ea>>>0)/3|0)*12|0)+(((ea>>>0)%3|0)<<2)>>2]|0;else j=-1073741824;k[(k[e>>2]|0)+(((c|0)<-1?-1073741824:(m>>>0)/3|0)*12|0)+(((m|0)%3|0)<<2)>>2]=j;if((j|0)>-1){h=e+24|0;e=e+28|0;d=k[e>>2]|0;c=k[h>>2]|0;f=d-c>>2;do if(f>>>0<=j>>>0){g=j+1|0;if(g>>>0>f>>>0){wg(h,g-f|0);c=k[h>>2]|0;break}if(g>>>0>>0?(la=c+(g<<2)|0,(d|0)!=(la|0)):0)k[e>>2]=d+(~((d+-4-la|0)>>>2)<<2)}while(0);k[c+(j<<2)>>2]=m;c=k[ja>>2]|0;f=k[t>>2]|0}else f=e;n=c+2|0;d=k[ia>>2]|0;e=d+1|0;if((d|0)>=0?(ca=((e|0)%3|0|0)==0?d+-2|0:e,(ca|0)>=0):0)m=k[(k[f>>2]|0)+(((ca>>>0)/3|0)*12|0)+(((ca>>>0)%3|0)<<2)>>2]|0;else m=-1073741824;k[(k[f>>2]|0)+(((c|0)<-2?-1073741824:(n>>>0)/3|0)*12|0)+(((n|0)%3|0)<<2)>>2]=m;if((m|0)>-1){h=f+24|0;j=f+28|0;d=k[j>>2]|0;c=k[h>>2]|0;e=d-c>>2;do if(e>>>0<=m>>>0){f=m+1|0;g=d;if(f>>>0>e>>>0){wg(h,f-e|0);c=k[h>>2]|0;break}if(f>>>0>>0){d=c+(f<<2)|0;if((g|0)==(d|0))break;k[j>>2]=g+(~((g+-4-d|0)>>>2)<<2)}}while(0);k[c+(m<<2)>>2]=n;c=k[ja>>2]|0}if((c|0)<0)c=-1073741824;else c=k[(k[k[t>>2]>>2]|0)+(((c>>>0)/3|0)*12|0)+(((c>>>0)%3|0)<<2)>>2]|0;d=k[ma>>2]|0;ba=d+(c>>>5<<2)|0;k[ba>>2]=k[ba>>2]&~(1<<(c&31));ba=k[ja>>2]|0;c=ba+1|0;if((ba|0)<-1)c=-1073741824;else c=k[(k[k[t>>2]>>2]|0)+(((c>>>0)/3|0)*12|0)+(((c>>>0)%3|0)<<2)>>2]|0;ba=d+(c>>>5<<2)|0;k[ba>>2]=k[ba>>2]&~(1<<(c&31));ba=k[ja>>2]|0;c=ba+2|0;if((ba|0)<-2)c=-1073741824;else c=k[(k[k[t>>2]>>2]|0)+(((c>>>0)/3|0)*12|0)+(((c>>>0)%3|0)<<2)>>2]|0;d=d+(c>>>5<<2)|0;k[d>>2]=k[d>>2]&~(1<<(c&31));c=k[v>>2]|0;d=k[w>>2]|0;if((c|0)==(d<<5|0)){if((c+1|0)<0){na=249;break}ba=d<<6;c=c+32&-32;ig(u,d<<5>>>0<1073741823?(ba>>>0>>0?c:ba):2147483647);c=k[v>>2]|0}k[v>>2]=c+1;ba=(k[u>>2]|0)+(c>>>5<<2)|0;k[ba>>2]=k[ba>>2]|1<<(c&31);c=k[x>>2]|0;if((c|0)==(k[y>>2]|0))Ig(z,ja);else{k[c>>2]=k[ja>>2];k[x>>2]=c+4}c=q}d=k[ra>>2]|0;if((d|0)==(k[pa>>2]|0)){ga=c;ha=t;break g}}if((na|0)==249)$k(u);else if((na|0)==259)$k(u)}else{ga=c;ha=a+8|0}while(0);na=k[ha>>2]|0;if((ga|0)==(((k[na+4>>2]|0)-(k[na>>2]|0)|0)/12|0|0)){g=a+88|0;c=a+92|0;f=k[c>>2]|0;d=k[g>>2]|0;e=f-d>>2;if(D>>>0>e>>>0){wg(g,D-e|0);break}if(D>>>0>>0?(oa=d+(D<<2)|0,(f|0)!=(oa|0)):0)k[c>>2]=f+(~((f+-4-oa|0)>>>2)<<2)}else D=-1}else D=-1;while(0);c=k[qa+8>>2]|0;if(c|0)do{oa=c;c=k[c>>2]|0;Vl(oa)}while((c|0)!=0);c=k[qa>>2]|0;k[qa>>2]=0;if(c|0)Vl(c);c=k[pa>>2]|0;if(!c){r=sa;return D|0}d=k[ra>>2]|0;if((d|0)!=(c|0))k[ra>>2]=d+(~((d+-4-c|0)>>>2)<<2);Vl(c);r=sa;return D|0}function cb(a){a=a|0;var b=0,c=0,d=0,e=0,f=0,g=0,h=0,i=0,j=0,l=0,m=0,n=0,o=0,p=0,q=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,B=0,C=0,D=0,E=0,F=0,G=0,H=0,I=0,J=0,K=0,L=0;L=r;r=r+16|0;o=L;do if(a>>>0<245){n=a>>>0<11?16:a+11&-8;a=n>>>3;t=k[4398]|0;c=t>>>a;if(c&3|0){a=(c&1^1)+a|0;c=17632+(a<<1<<2)|0;d=c+8|0;e=k[d>>2]|0;f=e+8|0;g=k[f>>2]|0;do if((c|0)!=(g|0)){if(g>>>0<(k[4402]|0)>>>0)Ba();b=g+12|0;if((k[b>>2]|0)==(e|0)){k[b>>2]=c;k[d>>2]=g;break}else Ba()}else k[4398]=t&~(1<>2]=K|3;K=e+K+4|0;k[K>>2]=k[K>>2]|1;K=f;r=L;return K|0}s=k[4400]|0;if(n>>>0>s>>>0){if(c|0){h=2<>>12&16;a=a>>>h;d=a>>>5&8;a=a>>>d;f=a>>>2&4;a=a>>>f;c=a>>>1&2;a=a>>>c;b=a>>>1&1;b=(d|h|f|c|b)+(a>>>b)|0;a=17632+(b<<1<<2)|0;c=a+8|0;f=k[c>>2]|0;h=f+8|0;d=k[h>>2]|0;do if((a|0)!=(d|0)){if(d>>>0<(k[4402]|0)>>>0)Ba();e=d+12|0;if((k[e>>2]|0)==(f|0)){k[e>>2]=a;k[c>>2]=d;i=t;break}else Ba()}else{i=t&~(1<>2]=n|3;d=f+n|0;k[d+4>>2]=g|1;k[d+g>>2]=g;if(s|0){e=k[4403]|0;b=s>>>3;c=17632+(b<<1<<2)|0;b=1<>2]|0;if(a>>>0<(k[4402]|0)>>>0)Ba();else{j=a;l=b}}else{k[4398]=i|b;j=c;l=c+8|0}k[l>>2]=e;k[j+12>>2]=e;k[e+8>>2]=j;k[e+12>>2]=c}k[4400]=g;k[4403]=d;K=h;r=L;return K|0}j=k[4399]|0;if(j){a=(j&0-j)+-1|0;J=a>>>12&16;a=a>>>J;I=a>>>5&8;a=a>>>I;K=a>>>2&4;a=a>>>K;h=a>>>1&2;a=a>>>h;i=a>>>1&1;i=k[17896+((I|J|K|h|i)+(a>>>i)<<2)>>2]|0;a=i;h=i;i=(k[i+4>>2]&-8)-n|0;while(1){b=k[a+16>>2]|0;if(!b){b=k[a+20>>2]|0;if(!b)break}K=(k[b+4>>2]&-8)-n|0;J=K>>>0>>0;a=b;h=J?b:h;i=J?K:i}e=k[4402]|0;if(h>>>0>>0)Ba();g=h+n|0;if(h>>>0>=g>>>0)Ba();f=k[h+24>>2]|0;c=k[h+12>>2]|0;do if((c|0)==(h|0)){a=h+20|0;b=k[a>>2]|0;if(!b){a=h+16|0;b=k[a>>2]|0;if(!b){m=0;break}}while(1){c=b+20|0;d=k[c>>2]|0;if(d|0){b=d;a=c;continue}c=b+16|0;d=k[c>>2]|0;if(!d)break;else{b=d;a=c}}if(a>>>0>>0)Ba();else{k[a>>2]=0;m=b;break}}else{d=k[h+8>>2]|0;if(d>>>0>>0)Ba();b=d+12|0;if((k[b>>2]|0)!=(h|0))Ba();a=c+8|0;if((k[a>>2]|0)==(h|0)){k[b>>2]=c;k[a>>2]=d;m=c;break}else Ba()}while(0);do if(f|0){b=k[h+28>>2]|0;a=17896+(b<<2)|0;if((h|0)==(k[a>>2]|0)){k[a>>2]=m;if(!m){k[4399]=j&~(1<>>0<(k[4402]|0)>>>0)Ba();b=f+16|0;if((k[b>>2]|0)==(h|0))k[b>>2]=m;else k[f+20>>2]=m;if(!m)break}a=k[4402]|0;if(m>>>0>>0)Ba();k[m+24>>2]=f;b=k[h+16>>2]|0;do if(b|0)if(b>>>0>>0)Ba();else{k[m+16>>2]=b;k[b+24>>2]=m;break}while(0);b=k[h+20>>2]|0;if(b|0)if(b>>>0<(k[4402]|0)>>>0)Ba();else{k[m+20>>2]=b;k[b+24>>2]=m;break}}while(0);if(i>>>0<16){K=i+n|0;k[h+4>>2]=K|3;K=h+K+4|0;k[K>>2]=k[K>>2]|1}else{k[h+4>>2]=n|3;k[g+4>>2]=i|1;k[g+i>>2]=i;if(s|0){d=k[4403]|0;b=s>>>3;c=17632+(b<<1<<2)|0;b=1<>2]|0;if(a>>>0<(k[4402]|0)>>>0)Ba();else{p=a;q=b}}else{k[4398]=t|b;p=c;q=c+8|0}k[q>>2]=d;k[p+12>>2]=d;k[d+8>>2]=p;k[d+12>>2]=c}k[4400]=i;k[4403]=g}K=h+8|0;r=L;return K|0}}}else if(a>>>0<=4294967231){a=a+11|0;n=a&-8;j=k[4399]|0;if(j){d=0-n|0;a=a>>>8;if(a)if(n>>>0>16777215)i=31;else{q=(a+1048320|0)>>>16&8;D=a<>>16&4;D=D<>>16&2;i=14-(p|q|i)+(D<>>15)|0;i=n>>>(i+7|0)&1|i<<1}else i=0;a=k[17896+(i<<2)>>2]|0;a:do if(!a){c=0;e=0;D=86}else{e=0;h=a;g=n<<((i|0)==31?0:25-(i>>>1)|0);c=0;while(1){a=(k[h+4>>2]&-8)-n|0;if(a>>>0>>0)if(!a){a=h;d=0;c=h;D=90;break a}else{e=h;d=a}a=k[h+20>>2]|0;h=k[h+16+(g>>>31<<2)>>2]|0;c=(a|0)==0|(a|0)==(h|0)?c:a;a=(h|0)==0;if(a){D=86;break}else g=g<<(a&1^1)}}while(0);if((D|0)==86){if((c|0)==0&(e|0)==0){a=2<>>12&16;q=q>>>l;i=q>>>5&8;q=q>>>i;m=q>>>2&4;q=q>>>m;p=q>>>1&2;q=q>>>p;c=q>>>1&1;c=k[17896+((i|l|m|p|c)+(q>>>c)<<2)>>2]|0}if(!c){i=e;h=d}else{a=e;D=90}}if((D|0)==90)while(1){D=0;q=(k[c+4>>2]&-8)-n|0;e=q>>>0>>0;d=e?q:d;a=e?c:a;e=k[c+16>>2]|0;if(e|0){c=e;D=90;continue}c=k[c+20>>2]|0;if(!c){i=a;h=d;break}else D=90}if((i|0)!=0?h>>>0<((k[4400]|0)-n|0)>>>0:0){e=k[4402]|0;if(i>>>0>>0)Ba();g=i+n|0;if(i>>>0>=g>>>0)Ba();f=k[i+24>>2]|0;c=k[i+12>>2]|0;do if((c|0)==(i|0)){a=i+20|0;b=k[a>>2]|0;if(!b){a=i+16|0;b=k[a>>2]|0;if(!b){s=0;break}}while(1){c=b+20|0;d=k[c>>2]|0;if(d|0){b=d;a=c;continue}c=b+16|0;d=k[c>>2]|0;if(!d)break;else{b=d;a=c}}if(a>>>0>>0)Ba();else{k[a>>2]=0;s=b;break}}else{d=k[i+8>>2]|0;if(d>>>0>>0)Ba();b=d+12|0;if((k[b>>2]|0)!=(i|0))Ba();a=c+8|0;if((k[a>>2]|0)==(i|0)){k[b>>2]=c;k[a>>2]=d;s=c;break}else Ba()}while(0);do if(f){b=k[i+28>>2]|0;a=17896+(b<<2)|0;if((i|0)==(k[a>>2]|0)){k[a>>2]=s;if(!s){t=j&~(1<>>0<(k[4402]|0)>>>0)Ba();b=f+16|0;if((k[b>>2]|0)==(i|0))k[b>>2]=s;else k[f+20>>2]=s;if(!s){t=j;break}}a=k[4402]|0;if(s>>>0>>0)Ba();k[s+24>>2]=f;b=k[i+16>>2]|0;do if(b|0)if(b>>>0>>0)Ba();else{k[s+16>>2]=b;k[b+24>>2]=s;break}while(0);b=k[i+20>>2]|0;if(b)if(b>>>0<(k[4402]|0)>>>0)Ba();else{k[s+20>>2]=b;k[b+24>>2]=s;t=j;break}else t=j}else t=j;while(0);do if(h>>>0>=16){k[i+4>>2]=n|3;k[g+4>>2]=h|1;k[g+h>>2]=h;b=h>>>3;if(h>>>0<256){c=17632+(b<<1<<2)|0;a=k[4398]|0;b=1<>2]|0;if(a>>>0<(k[4402]|0)>>>0)Ba();else{B=a;C=b}}else{k[4398]=a|b;B=c;C=c+8|0}k[C>>2]=g;k[B+12>>2]=g;k[g+8>>2]=B;k[g+12>>2]=c;break}b=h>>>8;if(b)if(h>>>0>16777215)b=31;else{J=(b+1048320|0)>>>16&8;K=b<>>16&4;K=K<>>16&2;b=14-(I|J|b)+(K<>>15)|0;b=h>>>(b+7|0)&1|b<<1}else b=0;c=17896+(b<<2)|0;k[g+28>>2]=b;a=g+16|0;k[a+4>>2]=0;k[a>>2]=0;a=1<>2]=g;k[g+24>>2]=c;k[g+12>>2]=g;k[g+8>>2]=g;break}a=h<<((b|0)==31?0:25-(b>>>1)|0);d=k[c>>2]|0;while(1){if((k[d+4>>2]&-8|0)==(h|0)){D=148;break}c=d+16+(a>>>31<<2)|0;b=k[c>>2]|0;if(!b){D=145;break}else{a=a<<1;d=b}}if((D|0)==145)if(c>>>0<(k[4402]|0)>>>0)Ba();else{k[c>>2]=g;k[g+24>>2]=d;k[g+12>>2]=g;k[g+8>>2]=g;break}else if((D|0)==148){b=d+8|0;a=k[b>>2]|0;K=k[4402]|0;if(a>>>0>=K>>>0&d>>>0>=K>>>0){k[a+12>>2]=g;k[b>>2]=g;k[g+8>>2]=a;k[g+12>>2]=d;k[g+24>>2]=0;break}else Ba()}}else{K=h+n|0;k[i+4>>2]=K|3;K=i+K+4|0;k[K>>2]=k[K>>2]|1}while(0);K=i+8|0;r=L;return K|0}}}else n=-1;while(0);c=k[4400]|0;if(c>>>0>=n>>>0){b=c-n|0;a=k[4403]|0;if(b>>>0>15){K=a+n|0;k[4403]=K;k[4400]=b;k[K+4>>2]=b|1;k[K+b>>2]=b;k[a+4>>2]=n|3}else{k[4400]=0;k[4403]=0;k[a+4>>2]=c|3;K=a+c+4|0;k[K>>2]=k[K>>2]|1}K=a+8|0;r=L;return K|0}h=k[4401]|0;if(h>>>0>n>>>0){I=h-n|0;k[4401]=I;K=k[4404]|0;J=K+n|0;k[4404]=J;k[J+4>>2]=I|1;k[K+4>>2]=n|3;K=K+8|0;r=L;return K|0}if(!(k[4516]|0)){k[4518]=4096;k[4517]=4096;k[4519]=-1;k[4520]=-1;k[4521]=0;k[4509]=0;a=o&-16^1431655768;k[o>>2]=a;k[4516]=a;a=4096}else a=k[4518]|0;i=n+48|0;j=n+47|0;g=a+j|0;e=0-a|0;l=g&e;if(l>>>0<=n>>>0){K=0;r=L;return K|0}a=k[4508]|0;if(a|0?(B=k[4506]|0,C=B+l|0,C>>>0<=B>>>0|C>>>0>a>>>0):0){K=0;r=L;return K|0}b:do if(!(k[4509]&4)){c=k[4404]|0;c:do if(c){d=18040;while(1){a=k[d>>2]|0;if(a>>>0<=c>>>0?(u=d+4|0,(a+(k[u>>2]|0)|0)>>>0>c>>>0):0)break;a=k[d+8>>2]|0;if(!a){D=172;break c}else d=a}c=g-h&e;if(c>>>0<2147483647){a=ti(c|0)|0;if((a|0)==((k[d>>2]|0)+(k[u>>2]|0)|0)){if((a|0)!=(-1|0)){g=c;f=a;D=190;break b}}else{b=c;D=180}}}else D=172;while(0);do if(((D|0)==172?(f=ti(0)|0,(f|0)!=(-1|0)):0)?(b=f,v=k[4517]|0,w=v+-1|0,b=((w&b|0)==0?0:(w+b&0-v)-b|0)+l|0,v=k[4506]|0,w=b+v|0,b>>>0>n>>>0&b>>>0<2147483647):0){C=k[4508]|0;if(C|0?w>>>0<=v>>>0|w>>>0>C>>>0:0)break;a=ti(b|0)|0;if((a|0)==(f|0)){g=b;D=190;break b}else D=180}while(0);d:do if((D|0)==180){c=0-b|0;do if(i>>>0>b>>>0&(b>>>0<2147483647&(a|0)!=(-1|0))?(x=k[4518]|0,x=j-b+x&0-x,x>>>0<2147483647):0)if((ti(x|0)|0)==(-1|0)){ti(c|0)|0;break d}else{b=x+b|0;break}while(0);if((a|0)!=(-1|0)){g=b;f=a;D=190;break b}}while(0);k[4509]=k[4509]|4;D=187}else D=187;while(0);if((((D|0)==187?l>>>0<2147483647:0)?(A=ti(l|0)|0,y=ti(0)|0,A>>>0>>0&((A|0)!=(-1|0)&(y|0)!=(-1|0))):0)?(z=y-A|0,z>>>0>(n+40|0)>>>0):0){g=z;f=A;D=190}if((D|0)==190){b=(k[4506]|0)+g|0;k[4506]=b;if(b>>>0>(k[4507]|0)>>>0)k[4507]=b;j=k[4404]|0;do if(j){b=18040;while(1){a=k[b>>2]|0;c=b+4|0;d=k[c>>2]|0;if((f|0)==(a+d|0)){D=200;break}e=k[b+8>>2]|0;if(!e)break;else b=e}if(((D|0)==200?(k[b+12>>2]&8|0)==0:0)?j>>>0>>0&j>>>0>=a>>>0:0){k[c>>2]=d+g;K=j+8|0;K=(K&7|0)==0?0:0-K&7;J=j+K|0;K=g-K+(k[4401]|0)|0;k[4404]=J;k[4401]=K;k[J+4>>2]=K|1;k[J+K+4>>2]=40;k[4405]=k[4520];break}b=k[4402]|0;if(f>>>0>>0){k[4402]=f;h=f}else h=b;a=f+g|0;b=18040;while(1){if((k[b>>2]|0)==(a|0)){D=208;break}b=k[b+8>>2]|0;if(!b){a=18040;break}}if((D|0)==208)if(!(k[b+12>>2]&8)){k[b>>2]=f;m=b+4|0;k[m>>2]=(k[m>>2]|0)+g;m=f+8|0;m=f+((m&7|0)==0?0:0-m&7)|0;b=a+8|0;b=a+((b&7|0)==0?0:0-b&7)|0;l=m+n|0;i=b-m-n|0;k[m+4>>2]=n|3;do if((b|0)!=(j|0)){if((b|0)==(k[4403]|0)){K=(k[4400]|0)+i|0;k[4400]=K;k[4403]=l;k[l+4>>2]=K|1;k[l+K>>2]=K;break}a=k[b+4>>2]|0;if((a&3|0)==1){g=a&-8;e=a>>>3;e:do if(a>>>0>=256){f=k[b+24>>2]|0;d=k[b+12>>2]|0;do if((d|0)==(b|0)){d=b+16|0;c=d+4|0;a=k[c>>2]|0;if(!a){a=k[d>>2]|0;if(!a){I=0;break}else c=d}while(1){d=a+20|0;e=k[d>>2]|0;if(e|0){a=e;c=d;continue}d=a+16|0;e=k[d>>2]|0;if(!e)break;else{a=e;c=d}}if(c>>>0>>0)Ba();else{k[c>>2]=0;I=a;break}}else{e=k[b+8>>2]|0;if(e>>>0>>0)Ba();a=e+12|0;if((k[a>>2]|0)!=(b|0))Ba();c=d+8|0;if((k[c>>2]|0)==(b|0)){k[a>>2]=d;k[c>>2]=e;I=d;break}else Ba()}while(0);if(!f)break;a=k[b+28>>2]|0;c=17896+(a<<2)|0;do if((b|0)!=(k[c>>2]|0)){if(f>>>0<(k[4402]|0)>>>0)Ba();a=f+16|0;if((k[a>>2]|0)==(b|0))k[a>>2]=I;else k[f+20>>2]=I;if(!I)break e}else{k[c>>2]=I;if(I|0)break;k[4399]=k[4399]&~(1<>>0>>0)Ba();k[I+24>>2]=f;a=b+16|0;c=k[a>>2]|0;do if(c|0)if(c>>>0>>0)Ba();else{k[I+16>>2]=c;k[c+24>>2]=I;break}while(0);a=k[a+4>>2]|0;if(!a)break;if(a>>>0<(k[4402]|0)>>>0)Ba();else{k[I+20>>2]=a;k[a+24>>2]=I;break}}else{c=k[b+8>>2]|0;d=k[b+12>>2]|0;a=17632+(e<<1<<2)|0;do if((c|0)!=(a|0)){if(c>>>0>>0)Ba();if((k[c+12>>2]|0)==(b|0))break;Ba()}while(0);if((d|0)==(c|0)){k[4398]=k[4398]&~(1<>>0>>0)Ba();a=d+8|0;if((k[a>>2]|0)==(b|0)){F=a;break}Ba()}while(0);k[c+12>>2]=d;k[F>>2]=c}while(0);b=b+g|0;e=g+i|0}else e=i;b=b+4|0;k[b>>2]=k[b>>2]&-2;k[l+4>>2]=e|1;k[l+e>>2]=e;b=e>>>3;if(e>>>0<256){c=17632+(b<<1<<2)|0;a=k[4398]|0;b=1<>2]|0;if(a>>>0>=(k[4402]|0)>>>0){J=a;K=b;break}Ba()}while(0);k[K>>2]=l;k[J+12>>2]=l;k[l+8>>2]=J;k[l+12>>2]=c;break}b=e>>>8;do if(!b)b=0;else{if(e>>>0>16777215){b=31;break}J=(b+1048320|0)>>>16&8;K=b<>>16&4;K=K<>>16&2;b=14-(I|J|b)+(K<>>15)|0;b=e>>>(b+7|0)&1|b<<1}while(0);d=17896+(b<<2)|0;k[l+28>>2]=b;a=l+16|0;k[a+4>>2]=0;k[a>>2]=0;a=k[4399]|0;c=1<>2]=l;k[l+24>>2]=d;k[l+12>>2]=l;k[l+8>>2]=l;break}a=e<<((b|0)==31?0:25-(b>>>1)|0);d=k[d>>2]|0;while(1){if((k[d+4>>2]&-8|0)==(e|0)){D=278;break}c=d+16+(a>>>31<<2)|0;b=k[c>>2]|0;if(!b){D=275;break}else{a=a<<1;d=b}}if((D|0)==275)if(c>>>0<(k[4402]|0)>>>0)Ba();else{k[c>>2]=l;k[l+24>>2]=d;k[l+12>>2]=l;k[l+8>>2]=l;break}else if((D|0)==278){b=d+8|0;a=k[b>>2]|0;K=k[4402]|0;if(a>>>0>=K>>>0&d>>>0>=K>>>0){k[a+12>>2]=l;k[b>>2]=l;k[l+8>>2]=a;k[l+12>>2]=d;k[l+24>>2]=0;break}else Ba()}}else{K=(k[4401]|0)+i|0;k[4401]=K;k[4404]=l;k[l+4>>2]=K|1}while(0);K=m+8|0;r=L;return K|0}else a=18040;while(1){b=k[a>>2]|0;if(b>>>0<=j>>>0?(E=b+(k[a+4>>2]|0)|0,E>>>0>j>>>0):0)break;a=k[a+8>>2]|0}e=E+-47|0;a=e+8|0;a=e+((a&7|0)==0?0:0-a&7)|0;e=j+16|0;a=a>>>0>>0?j:a;b=a+8|0;c=f+8|0;c=(c&7|0)==0?0:0-c&7;K=f+c|0;c=g+-40-c|0;k[4404]=K;k[4401]=c;k[K+4>>2]=c|1;k[K+c+4>>2]=40;k[4405]=k[4520];c=a+4|0;k[c>>2]=27;k[b>>2]=k[4510];k[b+4>>2]=k[4511];k[b+8>>2]=k[4512];k[b+12>>2]=k[4513];k[4510]=f;k[4511]=g;k[4513]=0;k[4512]=b;b=a+24|0;do{b=b+4|0;k[b>>2]=7}while((b+4|0)>>>0>>0);if((a|0)!=(j|0)){f=a-j|0;k[c>>2]=k[c>>2]&-2;k[j+4>>2]=f|1;k[a>>2]=f;b=f>>>3;if(f>>>0<256){c=17632+(b<<1<<2)|0;a=k[4398]|0;b=1<>2]|0;if(a>>>0<(k[4402]|0)>>>0)Ba();else{G=a;H=b}}else{k[4398]=a|b;G=c;H=c+8|0}k[H>>2]=j;k[G+12>>2]=j;k[j+8>>2]=G;k[j+12>>2]=c;break}b=f>>>8;if(b)if(f>>>0>16777215)c=31;else{J=(b+1048320|0)>>>16&8;K=b<>>16&4;K=K<>>16&2;c=14-(I|J|c)+(K<>>15)|0;c=f>>>(c+7|0)&1|c<<1}else c=0;d=17896+(c<<2)|0;k[j+28>>2]=c;k[j+20>>2]=0;k[e>>2]=0;b=k[4399]|0;a=1<>2]=j;k[j+24>>2]=d;k[j+12>>2]=j;k[j+8>>2]=j;break}a=f<<((c|0)==31?0:25-(c>>>1)|0);d=k[d>>2]|0;while(1){if((k[d+4>>2]&-8|0)==(f|0)){D=304;break}c=d+16+(a>>>31<<2)|0;b=k[c>>2]|0;if(!b){D=301;break}else{a=a<<1;d=b}}if((D|0)==301)if(c>>>0<(k[4402]|0)>>>0)Ba();else{k[c>>2]=j;k[j+24>>2]=d;k[j+12>>2]=j;k[j+8>>2]=j;break}else if((D|0)==304){b=d+8|0;a=k[b>>2]|0;K=k[4402]|0;if(a>>>0>=K>>>0&d>>>0>=K>>>0){k[a+12>>2]=j;k[b>>2]=j;k[j+8>>2]=a;k[j+12>>2]=d;k[j+24>>2]=0;break}else Ba()}}}else{K=k[4402]|0;if((K|0)==0|f>>>0>>0)k[4402]=f;k[4510]=f;k[4511]=g;k[4513]=0;k[4407]=k[4516];k[4406]=-1;b=0;do{K=17632+(b<<1<<2)|0;k[K+12>>2]=K;k[K+8>>2]=K;b=b+1|0}while((b|0)!=32);K=f+8|0;K=(K&7|0)==0?0:0-K&7;J=f+K|0;K=g+-40-K|0;k[4404]=J;k[4401]=K;k[J+4>>2]=K|1;k[J+K+4>>2]=40;k[4405]=k[4520]}while(0);b=k[4401]|0;if(b>>>0>n>>>0){I=b-n|0;k[4401]=I;K=k[4404]|0;J=K+n|0;k[4404]=J;k[J+4>>2]=I|1;k[K+4>>2]=n|3;K=K+8|0;r=L;return K|0}}K=ok()|0;k[K>>2]=12;K=0;r=L;return K|0}function db(a,b,c,d,e){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;var f=0,g=0,h=0,m=0,n=0.0,o=0,q=0,s=0,t=0,v=0.0,w=0,x=0,y=0,z=0,A=0,B=0,C=0,D=0,E=0,F=0,G=0,H=0,I=0,J=0,K=0,L=0,N=0,O=0,P=0,Q=0,R=0,S=0,T=0,U=0,V=0,W=0,X=0,Y=0,Z=0,_=0,aa=0,ba=0,ca=0,da=0,ea=0,fa=0,ga=0,ha=0,ia=0,ja=0;ja=r;r=r+624|0;fa=ja+24|0;ga=ja+16|0;ha=ja+588|0;X=ja+576|0;ia=ja;S=ja+536|0;N=ja+8|0;O=ja+528|0;P=(a|0)!=0;Q=S+40|0;R=Q;S=S+39|0;T=N+4|0;U=ha;V=0-U|0;W=X+12|0;X=X+11|0;Y=W;Z=Y-U|0;_=-2-U|0;aa=Y+2|0;ba=fa+288|0;ca=ha+9|0;da=ca;ea=ha+8|0;g=0;f=0;q=0;a:while(1){do if((f|0)>-1)if((g|0)>(2147483647-f|0)){f=ok()|0;k[f>>2]=75;f=-1;break}else{f=g+f|0;break}while(0);g=i[b>>0]|0;if(!(g<<24>>24)){L=243;break}else h=b;b:while(1){switch(g<<24>>24){case 37:{g=h;L=9;break b}case 0:{g=h;break b}default:{}}g=h+1|0;h=g;g=i[g>>0]|0}c:do if((L|0)==9)while(1){L=0;if((i[h+1>>0]|0)!=37)break c;g=g+1|0;h=h+2|0;if((i[h>>0]|0)==37)L=9;else break}while(0);g=g-b|0;if(P?(k[a>>2]&32|0)==0:0)Dg(b,g,a)|0;if(g|0){b=h;continue}o=h+1|0;m=i[o>>0]|0;g=(m<<24>>24)+-48|0;if(g>>>0<10){t=(i[h+2>>0]|0)==36;o=t?h+3|0:o;w=t?g:-1;t=t?1:q;g=i[o>>0]|0}else{w=-1;t=q;g=m}h=(g<<24>>24)+-32|0;d:do if(h>>>0<32){m=0;do{if(!(1<>24)+-32|m;o=o+1|0;g=i[o>>0]|0;h=(g<<24>>24)+-32|0}while(h>>>0<32)}else m=0;while(0);do if(g<<24>>24!=42){h=(g<<24>>24)+-48|0;if(h>>>0<10){q=0;do{q=(q*10|0)+h|0;o=o+1|0;g=i[o>>0]|0;h=(g<<24>>24)+-48|0}while(h>>>0<10);if((q|0)<0){f=-1;break a}else K=t}else{q=0;K=t}}else{s=o+1|0;g=i[s>>0]|0;h=(g<<24>>24)+-48|0;if(h>>>0<10?(i[o+2>>0]|0)==36:0){k[e+(h<<2)>>2]=10;g=k[d+((i[s>>0]|0)+-48<<3)>>2]|0;h=1;s=o+3|0}else{if(t|0){f=-1;break a}if(!P){q=0;K=0;o=s;break}h=(k[c>>2]|0)+(4-1)&~(4-1);g=k[h>>2]|0;k[c>>2]=h+4;h=0}K=(g|0)<0;q=K?0-g|0:g;m=K?m|8192:m;K=h;o=s;g=i[s>>0]|0}while(0);e:do if(g<<24>>24==46){g=o+1|0;h=i[g>>0]|0;if(h<<24>>24!=42){o=(h<<24>>24)+-48|0;if(o>>>0<10)h=0;else{x=0;break}while(1){h=(h*10|0)+o|0;g=g+1|0;o=(i[g>>0]|0)+-48|0;if(o>>>0>=10){x=h;break e}}}g=o+2|0;h=(i[g>>0]|0)+-48|0;if(h>>>0<10?(i[o+3>>0]|0)==36:0){k[e+(h<<2)>>2]=10;x=k[d+((i[g>>0]|0)+-48<<3)>>2]|0;g=o+4|0;break}if(K|0){f=-1;break a}if(P){J=(k[c>>2]|0)+(4-1)&~(4-1);x=k[J>>2]|0;k[c>>2]=J+4}else x=0}else{x=-1;g=o}while(0);t=0;while(1){h=(i[g>>0]|0)+-65|0;if(h>>>0>57){f=-1;break a}J=g+1|0;h=i[14362+(t*58|0)+h>>0]|0;o=h&255;if((o+-1|0)>>>0<8){t=o;g=J}else break}if(!(h<<24>>24)){f=-1;break}s=(w|0)>-1;do if(h<<24>>24==19)if(s){f=-1;break a}else L=51;else{if(s){k[e+(w<<2)>>2]=o;H=d+(w<<3)|0;I=k[H+4>>2]|0;L=ia;k[L>>2]=k[H>>2];k[L+4>>2]=I;L=51;break}if(!P){f=0;break a}ne(ia,o,c)}while(0);if((L|0)==51?(L=0,!P):0){g=0;q=K;b=J;continue}E=i[g>>0]|0;E=(t|0)!=0&(E&15|0)==3?E&-33:E;s=m&-65537;I=(m&8192|0)==0?m:s;f:do switch(E|0){case 110:switch((t&255)<<24>>24){case 0:{k[k[ia>>2]>>2]=f;g=0;q=K;b=J;continue a}case 1:{k[k[ia>>2]>>2]=f;g=0;q=K;b=J;continue a}case 2:{g=k[ia>>2]|0;k[g>>2]=f;k[g+4>>2]=((f|0)<0)<<31>>31;g=0;q=K;b=J;continue a}case 3:{j[k[ia>>2]>>1]=f;g=0;q=K;b=J;continue a}case 4:{i[k[ia>>2]>>0]=f;g=0;q=K;b=J;continue a}case 6:{k[k[ia>>2]>>2]=f;g=0;q=K;b=J;continue a}case 7:{g=k[ia>>2]|0;k[g>>2]=f;k[g+4>>2]=((f|0)<0)<<31>>31;g=0;q=K;b=J;continue a}default:{g=0;q=K;b=J;continue a}}case 112:{s=120;t=x>>>0>8?x:8;g=I|8;L=63;break}case 88:case 120:{s=E;t=x;g=I;L=63;break}case 111:{h=ia;g=k[h>>2]|0;h=k[h+4>>2]|0;if((g|0)==0&(h|0)==0)b=Q;else{b=Q;do{b=b+-1|0;i[b>>0]=g&7|48;g=Wj(g|0,h|0,3)|0;h=M}while(!((g|0)==0&(h|0)==0))}if(!(I&8)){h=0;m=14842;o=x;g=I;L=76}else{o=R-b|0;h=0;m=14842;o=(x|0)>(o|0)?x:o+1|0;g=I;L=76}break}case 105:case 100:{b=ia;g=k[b>>2]|0;b=k[b+4>>2]|0;if((b|0)<0){g=Zj(0,0,g|0,b|0)|0;b=M;h=ia;k[h>>2]=g;k[h+4>>2]=b;h=1;m=14842;L=75;break f}if(!(I&2048)){m=I&1;h=m;m=(m|0)==0?14842:14844;L=75}else{h=1;m=14843;L=75}break}case 117:{b=ia;h=0;m=14842;g=k[b>>2]|0;b=k[b+4>>2]|0;L=75;break}case 99:{i[S>>0]=k[ia>>2];b=S;w=0;t=14842;h=Q;g=1;break}case 109:{g=ok()|0;g=Nh(k[g>>2]|0)|0;L=81;break}case 115:{g=k[ia>>2]|0;g=g|0?g:14852;L=81;break}case 67:{k[N>>2]=k[ia>>2];k[T>>2]=0;k[ia>>2]=N;s=-1;h=N;L=85;break}case 83:{g=k[ia>>2]|0;if(!x){gh(a,32,q,0,I);g=0;L=96}else{s=x;h=g;L=85}break}case 65:case 71:case 70:case 69:case 97:case 103:case 102:case 101:{n=+p[ia>>3];k[ga>>2]=0;p[u>>3]=n;if((k[u+4>>2]|0)>=0){g=I&1;if(!(I&2048)){G=g;H=(g|0)==0?14860:14865}else{G=1;H=14862}}else{n=-n;G=1;H=14859}p[u>>3]=n;F=k[u+4>>2]&2146435072;do if(F>>>0<2146435072|(F|0)==2146435072&0<0){v=+Hl(n,ga)*2.0;b=v!=0.0;if(b)k[ga>>2]=(k[ga>>2]|0)+-1;z=E|32;if((z|0)==97){o=E&32;w=(o|0)==0?H:H+9|0;t=G|2;g=12-x|0;do if(!(x>>>0>11|(g|0)==0)){n=8.0;do{g=g+-1|0;n=n*16.0}while((g|0)!=0);if((i[w>>0]|0)==45){n=-(n+(-v-n));break}else{n=v+n-n;break}}else n=v;while(0);b=k[ga>>2]|0;g=(b|0)<0?0-b|0:b;g=yh(g,((g|0)<0)<<31>>31,W)|0;if((g|0)==(W|0)){i[X>>0]=48;g=X}i[g+-1>>0]=(b>>31&2)+43;s=g+-2|0;i[s>>0]=E+15;m=(x|0)<1;h=(I&8|0)==0;g=ha;do{H=~~n;b=g+1|0;i[g>>0]=l[14826+H>>0]|o;n=(n-+(H|0))*16.0;do if((b-U|0)==1){if(h&(m&n==0.0)){g=b;break}i[b>>0]=46;g=g+2|0}else g=b;while(0)}while(n!=0.0);m=s;h=(x|0)!=0&(_+g|0)<(x|0)?aa+x-m|0:Z-m+g|0;o=h+t|0;gh(a,32,q,o,I);if(!(k[a>>2]&32))Dg(w,t,a)|0;gh(a,48,q,o,I^65536);b=g-U|0;if(!(k[a>>2]&32))Dg(ha,b,a)|0;g=Y-m|0;gh(a,48,h-(b+g)|0,0,0);if(!(k[a>>2]&32))Dg(s,g,a)|0;gh(a,32,q,o,I^8192);g=(o|0)<(q|0)?q:o;break}g=(x|0)<0?6:x;if(b){b=(k[ga>>2]|0)+-28|0;k[ga>>2]=b;n=v*268435456.0}else{n=v;b=k[ga>>2]|0}F=(b|0)<0?fa:ba;h=F;do{D=~~n>>>0;k[h>>2]=D;h=h+4|0;n=(n-+(D>>>0))*1.0e9}while(n!=0.0);if((b|0)>0){m=F;s=h;while(1){o=(b|0)>29?29:b;b=s+-4|0;do if(b>>>0>=m>>>0){h=0;do{C=Qj(k[b>>2]|0,0,o|0)|0;C=mk(C|0,M|0,h|0,0)|0;D=M;B=lj(C|0,D|0,1e9,0)|0;k[b>>2]=B;h=Xk(C|0,D|0,1e9,0)|0;b=b+-4|0}while(b>>>0>=m>>>0);if(!h)break;m=m+-4|0;k[m>>2]=h}while(0);h=s;while(1){if(h>>>0<=m>>>0)break;b=h+-4|0;if(!(k[b>>2]|0))h=b;else break}b=(k[ga>>2]|0)-o|0;k[ga>>2]=b;if((b|0)>0)s=h;else break}}else m=F;if((b|0)<0){x=((g+25|0)/9|0)+1|0;y=(z|0)==102;do{w=0-b|0;w=(w|0)>9?9:w;do if(m>>>0>>0){o=(1<>>w;t=0;b=m;do{D=k[b>>2]|0;k[b>>2]=(D>>>w)+t;t=$(D&o,s)|0;b=b+4|0}while(b>>>0>>0);b=(k[m>>2]|0)==0?m+4|0:m;if(!t){m=b;b=h;break}k[h>>2]=t;m=b;b=h+4|0}else{m=(k[m>>2]|0)==0?m+4|0:m;b=h}while(0);h=y?F:m;h=(b-h>>2|0)>(x|0)?h+(x<<2)|0:b;b=(k[ga>>2]|0)+w|0;k[ga>>2]=b}while((b|0)<0)}D=F;do if(m>>>0>>0){b=(D-m>>2)*9|0;s=k[m>>2]|0;if(s>>>0<10)break;else o=10;do{o=o*10|0;b=b+1|0}while(s>>>0>=o>>>0)}else b=0;while(0);A=(z|0)==103;B=(g|0)!=0;o=g-((z|0)!=102?b:0)+((B&A)<<31>>31)|0;if((o|0)<(((h-D>>2)*9|0)+-9|0)){o=o+9216|0;t=F+4+(((o|0)/9|0)+-1024<<2)|0;o=((o|0)%9|0)+1|0;if((o|0)<9){s=10;do{s=s*10|0;o=o+1|0}while((o|0)!=9)}else s=10;x=k[t>>2]|0;y=(x>>>0)%(s>>>0)|0;o=(t+4|0)==(h|0);do if(o&(y|0)==0)o=t;else{v=(((x>>>0)/(s>>>0)|0)&1|0)==0?9007199254740992.0:9007199254740994.0;w=(s|0)/2|0;if(y>>>0>>0)n=.5;else n=o&(y|0)==(w|0)?1.0:1.5;do if(G){if((i[H>>0]|0)!=45)break;n=-n;v=-v}while(0);o=x-y|0;k[t>>2]=o;if(!(v+n!=v)){o=t;break}C=o+s|0;k[t>>2]=C;if(C>>>0>999999999){o=t;while(1){b=o+-4|0;k[o>>2]=0;if(b>>>0>>0){m=m+-4|0;k[m>>2]=0}C=(k[b>>2]|0)+1|0;k[b>>2]=C;if(C>>>0>999999999)o=b;else{t=b;break}}}b=(D-m>>2)*9|0;s=k[m>>2]|0;if(s>>>0<10){o=t;break}else o=10;do{o=o*10|0;b=b+1|0}while(s>>>0>=o>>>0);o=t}while(0);C=o+4|0;h=h>>>0>C>>>0?C:h}y=0-b|0;C=h;while(1){if(C>>>0<=m>>>0){z=0;break}h=C+-4|0;if(!(k[h>>2]|0))C=h;else{z=1;break}}do if(A){g=(B&1^1)+g|0;if((g|0)>(b|0)&(b|0)>-5){t=E+-1|0;g=g+-1-b|0}else{t=E+-2|0;g=g+-1|0}h=I&8;if(h|0){w=h;break}do if(z){s=k[C+-4>>2]|0;if(!s){o=9;break}if(!((s>>>0)%10|0)){o=0;h=10}else{o=0;break}do{h=h*10|0;o=o+1|0}while(!((s>>>0)%(h>>>0)|0|0))}else o=9;while(0);h=((C-D>>2)*9|0)+-9|0;if((t|32|0)==102){w=h-o|0;w=(w|0)<0?0:w;g=(g|0)<(w|0)?g:w;w=0;break}else{w=h+b-o|0;w=(w|0)<0?0:w;g=(g|0)<(w|0)?g:w;w=0;break}}else{t=E;w=I&8}while(0);x=g|w;o=(x|0)!=0&1;s=(t|32|0)==102;if(s){y=0;b=(b|0)>0?b:0}else{h=(b|0)<0?y:b;h=yh(h,((h|0)<0)<<31>>31,W)|0;if((Y-h|0)<2)do{h=h+-1|0;i[h>>0]=48}while((Y-h|0)<2);i[h+-1>>0]=(b>>31&2)+43;b=h+-2|0;i[b>>0]=t;y=b;b=Y-b|0}A=G+1+g+o+b|0;gh(a,32,q,A,I);if(!(k[a>>2]&32))Dg(H,G,a)|0;gh(a,48,q,A,I^65536);do if(s){m=m>>>0>F>>>0?F:m;h=m;do{b=yh(k[h>>2]|0,0,ca)|0;do if((h|0)==(m|0)){if((b|0)!=(ca|0))break;i[ea>>0]=48;b=ea}else{if(b>>>0<=ha>>>0)break;Zh(ha|0,48,b-U|0)|0;do b=b+-1|0;while(b>>>0>ha>>>0)}while(0);if(!(k[a>>2]&32))Dg(b,da-b|0,a)|0;h=h+4|0}while(h>>>0<=F>>>0);do if(x|0){if(k[a>>2]&32|0)break;Dg(14894,1,a)|0}while(0);if((g|0)>0&h>>>0>>0)while(1){b=yh(k[h>>2]|0,0,ca)|0;if(b>>>0>ha>>>0){Zh(ha|0,48,b-U|0)|0;do b=b+-1|0;while(b>>>0>ha>>>0)}if(!(k[a>>2]&32))Dg(b,(g|0)>9?9:g,a)|0;h=h+4|0;b=g+-9|0;if(!((g|0)>9&h>>>0>>0)){g=b;break}else g=b}gh(a,48,g+9|0,9,0)}else{t=z?C:m+4|0;if((g|0)>-1){s=(w|0)==0;o=m;do{b=yh(k[o>>2]|0,0,ca)|0;if((b|0)==(ca|0)){i[ea>>0]=48;b=ea}do if((o|0)==(m|0)){h=b+1|0;if(!(k[a>>2]&32))Dg(b,1,a)|0;if(s&(g|0)<1){b=h;break}if(k[a>>2]&32|0){b=h;break}Dg(14894,1,a)|0;b=h}else{if(b>>>0<=ha>>>0)break;Zh(ha|0,48,b+V|0)|0;do b=b+-1|0;while(b>>>0>ha>>>0)}while(0);h=da-b|0;if(!(k[a>>2]&32))Dg(b,(g|0)>(h|0)?h:g,a)|0;g=g-h|0;o=o+4|0}while(o>>>0>>0&(g|0)>-1)}gh(a,48,g+18|0,18,0);if(k[a>>2]&32|0)break;Dg(y,Y-y|0,a)|0}while(0);gh(a,32,q,A,I^8192);g=(A|0)<(q|0)?q:A}else{o=(E&32|0)!=0;m=n!=n|0.0!=0.0;b=m?0:G;h=b+3|0;gh(a,32,q,h,s);g=k[a>>2]|0;if(!(g&32)){Dg(H,b,a)|0;g=k[a>>2]|0}if(!(g&32))Dg(m?(o?14886:14890):o?14878:14882,3,a)|0;gh(a,32,q,h,I^8192);g=(h|0)<(q|0)?q:h}while(0);q=K;b=J;continue a}default:{w=0;t=14842;h=Q;g=x;s=I}}while(0);g:do if((L|0)==63){m=ia;h=k[m>>2]|0;m=k[m+4>>2]|0;o=s&32;if((h|0)==0&(m|0)==0){b=Q;h=0;m=0}else{b=Q;do{b=b+-1|0;i[b>>0]=l[14826+(h&15)>>0]|o;h=Wj(h|0,m|0,4)|0;m=M}while(!((h|0)==0&(m|0)==0));m=ia;h=k[m>>2]|0;m=k[m+4>>2]|0}m=(g&8|0)==0|(h|0)==0&(m|0)==0;h=m?0:2;m=m?14842:14842+(s>>4)|0;o=t;L=76}else if((L|0)==75){b=yh(g,b,Q)|0;o=x;g=I;L=76}else if((L|0)==81){L=0;I=hg(g,0,x)|0;H=(I|0)==0;b=g;w=0;t=14842;h=H?g+x|0:I;g=H?x:I-g|0}else if((L|0)==85){L=0;o=h;g=0;b=0;while(1){m=k[o>>2]|0;if(!m)break;b=Pk(O,m)|0;if((b|0)<0|b>>>0>(s-g|0)>>>0)break;g=b+g|0;if(s>>>0>g>>>0)o=o+4|0;else break}if((b|0)<0){f=-1;break a}gh(a,32,q,g,I);if(!g){g=0;L=96}else{m=0;while(1){b=k[h>>2]|0;if(!b){L=96;break g}b=Pk(O,b)|0;m=b+m|0;if((m|0)>(g|0)){L=96;break g}if(!(k[a>>2]&32))Dg(O,b,a)|0;if(m>>>0>=g>>>0){L=96;break}else h=h+4|0}}}while(0);if((L|0)==96){L=0;gh(a,32,q,g,I^8192);g=(q|0)>(g|0)?q:g;q=K;b=J;continue}if((L|0)==76){L=0;s=(o|0)>-1?g&-65537:g;g=ia;g=(k[g>>2]|0)!=0|(k[g+4>>2]|0)!=0;if((o|0)!=0|g){g=(g&1^1)+(R-b)|0;w=h;t=m;h=Q;g=(o|0)>(g|0)?o:g}else{b=Q;w=h;t=m;h=Q;g=0}}o=h-b|0;h=(g|0)<(o|0)?o:g;m=h+w|0;g=(q|0)<(m|0)?m:q;gh(a,32,g,m,s);if(!(k[a>>2]&32))Dg(t,w,a)|0;gh(a,48,g,m,s^65536);gh(a,48,h,o,0);if(!(k[a>>2]&32))Dg(b,o,a)|0;gh(a,32,g,m,s^8192);q=K;b=J}h:do if((L|0)==243)if(!a)if(!q)f=0;else{f=1;while(1){g=k[e+(f<<2)>>2]|0;if(!g)break;ne(d+(f<<3)|0,g,c);f=f+1|0;if((f|0)>=10){f=1;break h}}while(1){if(k[e+(f<<2)>>2]|0){f=-1;break h}f=f+1|0;if((f|0)>=10){f=1;break}}}while(0);r=ja;return f|0}function eb(a){a=a|0;var b=0,c=0,d=0,e=0,f=0,g=0,h=0,i=0,j=0;j=r;r=r+16|0;b=j;h=j+8|0;c=j+4|0;k[h>>2]=a;do if(a>>>0>=212){g=(a>>>0)/210|0;e=g*210|0;k[c>>2]=a-e;d=(wi(6068,6260,c,b)|0)-6068>>2;a=0;f=d;e=(k[6068+(d<<2)>>2]|0)+e|0;a:while(1){b=5;while(1){if(b>>>0>=47){d=211;i=8;break}c=k[5876+(b<<2)>>2]|0;d=(e>>>0)/(c>>>0)|0;if(d>>>0>>0){i=107;break a}if((e|0)==($(d,c)|0))break;else b=b+1|0}b:do if((i|0)==8){c:while(1){i=0;b=(e>>>0)/(d>>>0)|0;do if(b>>>0>=d>>>0)if((e|0)!=($(b,d)|0)){b=d+10|0;c=(e>>>0)/(b>>>0)|0;if(c>>>0>=b>>>0)if((e|0)!=($(c,b)|0)){b=d+12|0;c=(e>>>0)/(b>>>0)|0;if(c>>>0>=b>>>0)if((e|0)!=($(c,b)|0)){b=d+16|0;c=(e>>>0)/(b>>>0)|0;if(c>>>0>=b>>>0)if((e|0)!=($(c,b)|0)){b=d+18|0;c=(e>>>0)/(b>>>0)|0;if(c>>>0>=b>>>0)if((e|0)!=($(c,b)|0)){b=d+22|0;c=(e>>>0)/(b>>>0)|0;if(c>>>0>=b>>>0)if((e|0)!=($(c,b)|0)){b=d+28|0;c=(e>>>0)/(b>>>0)|0;if(c>>>0>=b>>>0)if((e|0)==($(c,b)|0))c=9;else{b=d+30|0;c=(e>>>0)/(b>>>0)|0;if(c>>>0>>0){c=1;a=e;break}if((e|0)==($(c,b)|0)){c=9;break}b=d+36|0;c=(e>>>0)/(b>>>0)|0;if(c>>>0>>0){c=1;a=e;break}if((e|0)==($(c,b)|0)){c=9;break}b=d+40|0;c=(e>>>0)/(b>>>0)|0;if(c>>>0>>0){c=1;a=e;break}if((e|0)==($(c,b)|0)){c=9;break}b=d+42|0;c=(e>>>0)/(b>>>0)|0;if(c>>>0>>0){c=1;a=e;break}if((e|0)==($(c,b)|0)){c=9;break}b=d+46|0;c=(e>>>0)/(b>>>0)|0;if(c>>>0>>0){c=1;a=e;break}if((e|0)==($(c,b)|0)){c=9;break}b=d+52|0;c=(e>>>0)/(b>>>0)|0;if(c>>>0>>0){c=1;a=e;break}if((e|0)==($(c,b)|0)){c=9;break}b=d+58|0;c=(e>>>0)/(b>>>0)|0;if(c>>>0>>0){c=1;a=e;break}if((e|0)==($(c,b)|0)){c=9;break}b=d+60|0;c=(e>>>0)/(b>>>0)|0;if(c>>>0>>0){c=1;a=e;break}if((e|0)==($(c,b)|0)){c=9;break}b=d+66|0;c=(e>>>0)/(b>>>0)|0;if(c>>>0>>0){c=1;a=e;break}if((e|0)==($(c,b)|0)){c=9;break}b=d+70|0;c=(e>>>0)/(b>>>0)|0;if(c>>>0>>0){c=1;a=e;break}if((e|0)==($(c,b)|0)){c=9;break}b=d+72|0;c=(e>>>0)/(b>>>0)|0;if(c>>>0>>0){c=1;a=e;break}if((e|0)==($(c,b)|0)){c=9;break}b=d+78|0;c=(e>>>0)/(b>>>0)|0;if(c>>>0>>0){c=1;a=e;break}if((e|0)==($(c,b)|0)){c=9;break}b=d+82|0;c=(e>>>0)/(b>>>0)|0;if(c>>>0>>0){c=1;a=e;break}if((e|0)==($(c,b)|0)){c=9;break}b=d+88|0;c=(e>>>0)/(b>>>0)|0;if(c>>>0>>0){c=1;a=e;break}if((e|0)==($(c,b)|0)){c=9;break}b=d+96|0;c=(e>>>0)/(b>>>0)|0;if(c>>>0>>0){c=1;a=e;break}if((e|0)==($(c,b)|0)){c=9;break}b=d+100|0;c=(e>>>0)/(b>>>0)|0;if(c>>>0>>0){c=1;a=e;break}if((e|0)==($(c,b)|0)){c=9;break}b=d+102|0;c=(e>>>0)/(b>>>0)|0;if(c>>>0>>0){c=1;a=e;break}if((e|0)==($(c,b)|0)){c=9;break}b=d+106|0;c=(e>>>0)/(b>>>0)|0;if(c>>>0>>0){c=1;a=e;break}if((e|0)==($(c,b)|0)){c=9;break}b=d+108|0;c=(e>>>0)/(b>>>0)|0;if(c>>>0>>0){c=1;a=e;break}if((e|0)==($(c,b)|0)){c=9;break}b=d+112|0;c=(e>>>0)/(b>>>0)|0;if(c>>>0>>0){c=1;a=e;break}if((e|0)==($(c,b)|0)){c=9;break}b=d+120|0;c=(e>>>0)/(b>>>0)|0;if(c>>>0>>0){c=1;a=e;break}if((e|0)==($(c,b)|0)){c=9;break}b=d+126|0;c=(e>>>0)/(b>>>0)|0;if(c>>>0>>0){c=1;a=e;break}if((e|0)==($(c,b)|0)){c=9;break}b=d+130|0;c=(e>>>0)/(b>>>0)|0;if(c>>>0>>0){c=1;a=e;break}if((e|0)==($(c,b)|0)){c=9;break}b=d+136|0;c=(e>>>0)/(b>>>0)|0;if(c>>>0>>0){c=1;a=e;break}if((e|0)==($(c,b)|0)){c=9;break}b=d+138|0;c=(e>>>0)/(b>>>0)|0;if(c>>>0>>0){c=1;a=e;break}if((e|0)==($(c,b)|0)){c=9;break}b=d+142|0;c=(e>>>0)/(b>>>0)|0;if(c>>>0>>0){c=1;a=e;break}if((e|0)==($(c,b)|0)){c=9;break}b=d+148|0;c=(e>>>0)/(b>>>0)|0;if(c>>>0>>0){c=1;a=e;break}if((e|0)==($(c,b)|0)){c=9;break}b=d+150|0;c=(e>>>0)/(b>>>0)|0;if(c>>>0>>0){c=1;a=e;break}if((e|0)==($(c,b)|0)){c=9;break}b=d+156|0;c=(e>>>0)/(b>>>0)|0;if(c>>>0>>0){c=1;a=e;break}if((e|0)==($(c,b)|0)){c=9;break}b=d+162|0;c=(e>>>0)/(b>>>0)|0;if(c>>>0>>0){c=1;a=e;break}if((e|0)==($(c,b)|0)){c=9;break}b=d+166|0;c=(e>>>0)/(b>>>0)|0;if(c>>>0>>0){c=1;a=e;break}if((e|0)==($(c,b)|0)){c=9;break}b=d+168|0;c=(e>>>0)/(b>>>0)|0;if(c>>>0>>0){c=1;a=e;break}if((e|0)==($(c,b)|0)){c=9;break}b=d+172|0;c=(e>>>0)/(b>>>0)|0;if(c>>>0>>0){c=1;a=e;break}if((e|0)==($(c,b)|0)){c=9;break}b=d+178|0;c=(e>>>0)/(b>>>0)|0;if(c>>>0>>0){c=1;a=e;break}if((e|0)==($(c,b)|0)){c=9;break}b=d+180|0;c=(e>>>0)/(b>>>0)|0;if(c>>>0>>0){c=1;a=e;break}if((e|0)==($(c,b)|0)){c=9;break}b=d+186|0;c=(e>>>0)/(b>>>0)|0;if(c>>>0>>0){c=1;a=e;break}if((e|0)==($(c,b)|0)){c=9;break}b=d+190|0;c=(e>>>0)/(b>>>0)|0;if(c>>>0>>0){c=1;a=e;break}if((e|0)==($(c,b)|0)){c=9;break}b=d+192|0;c=(e>>>0)/(b>>>0)|0;if(c>>>0>>0){c=1;a=e;break}if((e|0)==($(c,b)|0)){c=9;break}b=d+196|0;c=(e>>>0)/(b>>>0)|0;if(c>>>0>>0){c=1;a=e;break}if((e|0)==($(c,b)|0)){c=9;break}b=d+198|0;c=(e>>>0)/(b>>>0)|0;if(c>>>0>>0){c=1;a=e;break}if((e|0)==($(c,b)|0)){c=9;break}b=d+208|0;c=(e>>>0)/(b>>>0)|0;if(c>>>0>>0){c=1;a=e;break}c=(e|0)==($(c,b)|0);b=c?b:d+210|0;c=c?9:0}else{c=1;a=e}}else c=9;else{c=1;a=e}}else c=9;else{c=1;a=e}}else c=9;else{c=1;a=e}}else c=9;else{c=1;a=e}}else c=9;else{c=1;a=e}}else{b=d;c=9}else{b=d;c=1;a=e}while(0);switch(c&15){case 9:break b;case 0:{d=b;i=8;break}default:break c}}if(c){i=108;break a}}while(0);d=f+1|0;c=(d|0)==48;e=(c&1)+g|0;d=c?0:d;f=d;g=e;e=(k[6068+(d<<2)>>2]|0)+(e*210|0)|0}if((i|0)==107){k[h>>2]=e;a=e;break}else if((i|0)==108){k[h>>2]=e;break}}else{a=wi(5876,6068,h,b)|0;a=k[a>>2]|0}while(0);r=j;return a|0}function fb(a,b,c,d,e,f){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;f=f|0;var g=0,h=0,j=0,m=0,n=0,o=0,p=0,q=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,B=0,C=0,D=0,E=0,F=0,G=0,H=0,I=0,J=0,K=0,L=0,M=0,N=0,O=0,P=0,Q=0,R=0,S=0,T=0,U=0,V=0,W=0,X=0,Y=0,Z=0,_=0,aa=0,ba=0,ca=0,da=0,ea=0,fa=0,ga=0,ha=0;ha=r;r=r+112|0;V=ha+100|0;U=ha+96|0;ga=ha+48|0;fa=ha+32|0;Y=ha+104|0;Z=ha+8|0;W=ha+4|0;X=ha;ea=a+8|0;k[ea>>2]=e;do if(d|0){f=k[b>>2]|0;m=a+16|0;k[m>>2]=f;n=a+12|0;k[n>>2]=f;if((d|0)>1){j=1;h=f;while(1){g=k[b+(j<<2)>>2]|0;if((g|0)>=(h|0))if((g|0)>(f|0)){k[m>>2]=g;f=g;g=h}else g=h;else k[n>>2]=g;j=j+1|0;if((j|0)==(d|0))break;else h=g}}else g=f;T=1-g+f|0;k[a+20>>2]=T;f=(T|0)/2|0;g=a+24|0;k[g>>2]=f;k[a+28>>2]=0-f;if(!(T&1))k[g>>2]=f+-1;f=a+32|0;g=a+36|0;m=k[g>>2]|0;h=k[f>>2]|0;j=m-h>>2;if(j>>>0>>0){wg(f,e-j|0);break}if(j>>>0>e>>>0?(o=h+(e<<2)|0,(m|0)!=(o|0)):0)k[g>>2]=m+(~((m+-4-o|0)>>>2)<<2)}while(0);S=k[a+48>>2]|0;T=k[a+52>>2]|0;f=ga;g=f+48|0;do{k[f>>2]=0;f=f+4|0}while((f|0)<(g|0));if(!e){f=0;g=0}else{wg(ga,e);f=k[ga+12>>2]|0;g=k[ga+16>>2]|0}h=ga+16|0;j=g-f>>2;if(j>>>0>=e>>>0){if(j>>>0>e>>>0?(p=f+(e<<2)|0,(g|0)!=(p|0)):0)k[h>>2]=g+(~((g+-4-p|0)>>>2)<<2)}else wg(ga+12|0,e-j|0);f=ga+24|0;g=ga+28|0;m=k[g>>2]|0;j=k[f>>2]|0;h=m-j>>2;if(h>>>0>=e>>>0){if(h>>>0>e>>>0?(q=j+(e<<2)|0,(m|0)!=(q|0)):0)k[g>>2]=m+(~((m+-4-q|0)>>>2)<<2)}else wg(f,e-h|0);f=ga+36|0;g=ga+40|0;m=k[g>>2]|0;j=k[f>>2]|0;h=m-j>>2;if(h>>>0>=e>>>0){if(h>>>0>e>>>0?(s=j+(e<<2)|0,(m|0)!=(s|0)):0)k[g>>2]=m+(~((m+-4-s|0)>>>2)<<2)}else wg(f,e-h|0);fi(fa,e);A=a+56|0;g=k[A>>2]|0;j=k[g+4>>2]|0;h=k[g>>2]|0;f=j-h|0;a:do if((f|0)>4){B=S+64|0;C=S+28|0;D=(e|0)>0;E=Z+4|0;F=Z+8|0;G=Z+12|0;H=a+16|0;I=a+32|0;J=a+12|0;K=a+28|0;L=a+20|0;M=a+24|0;N=Z+16|0;O=fa+4|0;P=Y+1|0;Q=e<<2;v=f>>2;f=j;b:while(1){z=v+-1|0;if(f-h>>2>>>0<=z>>>0){R=22;break}t=k[h+(z<<2)>>2]|0;p=t+((t|0)<0?0:((t>>>0)%3|0|0)==0?2:-1)|0;u=p>>>5;q=1<<(p&31);s=(p|0)<0;o=1;f=0;g=t;c:while(1){do{if((g|0)<=-1){x=f;break c}j=k[ga+(f*12|0)>>2]|0;if(((k[(k[S>>2]|0)+(g>>>5<<2)>>2]&1<<(g&31)|0)==0?(aa=k[(k[(k[B>>2]|0)+12>>2]|0)+(g<<2)>>2]|0,(aa|0)>=0):0)?(da=k[C>>2]|0,y=k[T>>2]|0,ba=k[y+(k[da+(aa<<2)>>2]<<2)>>2]|0,ca=aa+1|0,ca=k[y+(k[da+((((ca|0)%3|0|0)==0?aa+-2|0:ca)<<2)>>2]<<2)>>2]|0,da=k[y+(k[da+((((aa>>>0)%3|0|0)==0?2:-1)+aa<<2)>>2]<<2)>>2]|0,(ba|0)<(z|0)&(ca|0)<(z|0)&(da|0)<(z|0)):0){m=$(ba,e)|0;n=$(ca,e)|0;d=$(da,e)|0;if(D){h=0;do{k[j+(h<<2)>>2]=(k[b+(h+d<<2)>>2]|0)+(k[b+(h+n<<2)>>2]|0)-(k[b+(h+m<<2)>>2]|0);h=h+1|0}while((h|0)!=(e|0))}f=f+1|0;if((f|0)==4){x=4;break c}}do if(o){h=g+1|0;g=((h|0)%3|0|0)==0?g+-2|0:h;h=k[S>>2]|0;if(!(k[h+(g>>>5<<2)>>2]&1<<(g&31))){if((g|0)>=0){g=k[(k[(k[B>>2]|0)+12>>2]|0)+(g<<2)>>2]|0;j=g+1|0;if((g|0)>=0)g=((j|0)%3|0|0)==0?g+-2|0:j}}else g=-1073741824}else{g=(((g>>>0)%3|0|0)==0?2:-1)+g|0;h=k[S>>2]|0;if(!(k[h+(g>>>5<<2)>>2]&1<<(g&31))){if((g|0)>=0){g=k[(k[(k[B>>2]|0)+12>>2]|0)+(g<<2)>>2]|0;if((g|0)>=0)if(!((g>>>0)%3|0)){g=g+2|0;break}else{g=g+-1|0;break}}}else g=-1073741824}while(0);if((g|0)==(t|0)){x=f;break c}}while(!(o&(g|0)<0));g=(q&k[h+(u<<2)>>2]|0)!=0;if(g|s){o=0;g=g?-1073741824:p;continue}g=k[(k[(k[B>>2]|0)+12>>2]|0)+(p<<2)>>2]|0;if((g|0)<0){o=0;continue}if(!((g>>>0)%3|0)){o=0;g=g+2|0;continue}else{o=0;g=g+-1|0;continue}}y=$(z,e)|0;k[Z>>2]=2147483647;i[E>>0]=0;k[F>>2]=0;k[F+4>>2]=0;k[F+8>>2]=0;k[F+12>>2]=0;h=$(v+-2|0,e)|0;if(D){g=0;f=0;do{w=(k[b+(g+y<<2)>>2]|0)-(k[b+(g+h<<2)>>2]|0)|0;f=((w|0)>-1?w:0-w|0)+f|0;g=g+1|0}while((g|0)!=(e|0))}else f=0;k[Z>>2]=f;i[E>>0]=0;k[F>>2]=0;w=b+(h<<2)|0;Ie(G,w,w+(e<<2)|0);if((x|0)>=1){p=Y+x|0;o=p+-1|0;q=(o|0)==(Y|0);s=p+-2|0;t=P>>>0>>0;u=o>>>0>Y>>>0;v=0;w=1;while(1){v=v+1|0;Zh(Y|0,1,x|0)|0;Zh(Y|0,0,v|0)|0;d:while(1){if(D){Zh(k[fa>>2]|0,0,Q|0)|0;m=k[fa>>2]|0;j=0;f=0;do{if(!(i[Y+j>>0]|0)){h=k[ga+(j*12|0)>>2]|0;g=0;do{d=m+(g<<2)|0;k[d>>2]=(k[d>>2]|0)+(k[h+(g<<2)>>2]|0);g=g+1|0}while((g|0)!=(e|0));f=(1<>0]|0))f=(1<>2]|0;h=0;g=0;do{n=j+(h<<2)|0;d=(k[n>>2]|0)/(w|0)|0;k[n>>2]=d;d=d-(k[b+(h+y<<2)>>2]|0)|0;g=((d|0)>-1?d:0-d|0)+g|0;h=h+1|0}while((h|0)!=(e|0))}else g=0;if((g|0)<(k[Z>>2]|0)){k[Z>>2]=g;i[E>>0]=f;k[F>>2]=w;k[W>>2]=k[fa>>2];k[X>>2]=k[O>>2];k[U>>2]=k[W>>2];k[V>>2]=k[X>>2];Fe(G,U,V)}if(q)break;_=i[o>>0]|0;m=-1;d=_;while(1){f=m+-1|0;n=p+f|0;j=d;d=i[n>>0]|0;if((d&255)<(j&255))break;if((n|0)==(Y|0)){R=79;break d}else m=f}f=p+m|0;if((d&255)<(_&255)){h=o;g=_}else{g=p;j=o;while(1){g=i[g+-2>>0]|0;h=j+-1|0;if((d&255)<(g&255))break;else{g=j;j=h}}}i[n>>0]=g;i[h>>0]=d;if((m|0)<-1)g=o;else continue;while(1){d=i[f>>0]|0;i[f>>0]=i[g>>0]|0;i[g>>0]=d;f=f+1|0;g=g+-1|0;if(f>>>0>=g>>>0)continue d}}if(((R|0)==79?(R=0,u):0)?(d=i[Y>>0]|0,i[Y>>0]=_,i[o>>0]=d,t):0){f=s;g=P;do{d=i[g>>0]|0;i[g>>0]=i[f>>0]|0;i[f>>0]=d;g=g+1|0;f=f+-1|0}while(g>>>0>>0)}if((w|0)>=(x|0))break;else w=w+1|0}if((x|0)>0){n=x+-1|0;d=a+60+(n*12|0)|0;m=a+60+(n*12|0)+4|0;n=a+60+(n*12|0)+8|0;j=0;do{f=k[m>>2]|0;g=k[n>>2]|0;h=(f|0)==(g<<5|0);if(!(l[E>>0]&1<>>0<1073741823?(R>>>0>>0?f:R):2147483647);f=k[m>>2]|0}k[m>>2]=f+1;R=(k[d>>2]|0)+(f>>>5<<2)|0;k[R>>2]=k[R>>2]|1<<(f&31)}else{if(h){if((f+1|0)<0){R=106;break b}R=g<<6;f=f+32&-32;ig(d,g<<5>>>0<1073741823?(R>>>0>>0?f:R):2147483647);f=k[m>>2]|0}k[m>>2]=f+1;R=(k[d>>2]|0)+(f>>>5<<2)|0;k[R>>2]=k[R>>2]&~(1<<(f&31))}j=j+1|0}while((j|0)<(x|0))}}n=b+(y<<2)|0;d=k[G>>2]|0;if((k[ea>>2]|0)>0){m=0;do{j=k[d+(m<<2)>>2]|0;f=k[H>>2]|0;do if((j|0)<=(f|0)){f=k[J>>2]|0;g=k[I>>2]|0;h=g+(m<<2)|0;if((j|0)<(f|0)){k[h>>2]=f;h=g;break}else{k[h>>2]=j;h=g;break}}else{h=k[I>>2]|0;k[h+(m<<2)>>2]=f}while(0);m=m+1|0;f=k[ea>>2]|0}while((m|0)<(f|0));if((f|0)>0){f=0;do{k[c+(f+y<<2)>>2]=(k[n+(f<<2)>>2]|0)-(k[h+(f<<2)>>2]|0);f=f+1|0;g=k[ea>>2]|0}while((f|0)<(g|0));if((g|0)>0){f=0;do{g=c+(f+y<<2)|0;h=k[g>>2]|0;if((h|0)>=(k[K>>2]|0)){if((h|0)>(k[M>>2]|0))k[g>>2]=h-(k[L>>2]|0)}else k[g>>2]=(k[L>>2]|0)+h;f=f+1|0}while((f|0)<(k[ea>>2]|0));R=110}else R=110}else R=111}else R=110;if((R|0)==110?(R=0,d|0):0)R=111;if((R|0)==111){R=0;f=k[N>>2]|0;if((f|0)!=(d|0))k[N>>2]=f+(~((f+-4-d|0)>>>2)<<2);Vl(d)}if((z|0)<=1)break a;f=k[A>>2]|0;v=z;g=f;h=k[f>>2]|0;f=k[f+4>>2]|0}if((R|0)==22)_k(g);else if((R|0)==101)$k(d);else if((R|0)==106)$k(d)}while(0);p=k[ga>>2]|0;if((e|0)>0){f=0;do{k[p+(f<<2)>>2]=0;f=f+1|0}while((f|0)!=(e|0))}if((k[ea>>2]|0)>0){n=a+16|0;d=a+32|0;o=a+12|0;m=0;do{j=k[p+(m<<2)>>2]|0;f=k[n>>2]|0;do if((j|0)<=(f|0)){f=k[o>>2]|0;g=k[d>>2]|0;h=g+(m<<2)|0;if((j|0)<(f|0)){k[h>>2]=f;h=g;break}else{k[h>>2]=j;h=g;break}}else{h=k[d>>2]|0;k[h+(m<<2)>>2]=f}while(0);m=m+1|0;f=k[ea>>2]|0}while((m|0)<(f|0));if((f|0)>0){f=0;do{k[c+(f<<2)>>2]=(k[b+(f<<2)>>2]|0)-(k[h+(f<<2)>>2]|0);f=f+1|0;g=k[ea>>2]|0}while((f|0)<(g|0));if((g|0)>0){m=a+28|0;n=a+20|0;g=a+24|0;f=0;do{h=c+(f<<2)|0;j=k[h>>2]|0;if((j|0)>=(k[m>>2]|0)){if((j|0)>(k[g>>2]|0))k[h>>2]=j-(k[n>>2]|0)}else k[h>>2]=(k[n>>2]|0)+j;f=f+1|0}while((f|0)<(k[ea>>2]|0))}}}h=k[fa>>2]|0;j=h;if(h|0){f=fa+4|0;g=k[f>>2]|0;if((g|0)!=(h|0))k[f>>2]=g+(~((g+-4-j|0)>>>2)<<2);Vl(h)}f=k[ga+36>>2]|0;g=f;if(f|0){h=ga+40|0;j=k[h>>2]|0;if((j|0)!=(f|0))k[h>>2]=j+(~((j+-4-g|0)>>>2)<<2);Vl(f)}f=k[ga+24>>2]|0;g=f;if(f|0){h=ga+28|0;j=k[h>>2]|0;if((j|0)!=(f|0))k[h>>2]=j+(~((j+-4-g|0)>>>2)<<2);Vl(f)}f=k[ga+12>>2]|0;g=f;if(f|0){h=ga+16|0;j=k[h>>2]|0;if((j|0)!=(f|0))k[h>>2]=j+(~((j+-4-g|0)>>>2)<<2);Vl(f)}h=k[ga>>2]|0;if(!h){r=ha;return 1}f=ga+4|0;g=k[f>>2]|0;if((g|0)!=(h|0))k[f>>2]=g+(~((g+-4-h|0)>>>2)<<2);Vl(h);r=ha;return 1}function gb(a,b,c,d,e,f){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;f=f|0;var g=0,h=0,j=0,m=0,n=0,o=0,p=0,q=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,B=0,C=0,D=0,E=0,F=0,G=0,H=0,I=0,J=0,K=0,L=0,M=0,N=0,O=0,P=0,Q=0,R=0,S=0,T=0,U=0,V=0,W=0,X=0,Y=0,Z=0,_=0,aa=0,ba=0,ca=0,da=0;da=r;r=r+112|0;V=da+100|0;U=da+96|0;ca=da+48|0;ba=da+32|0;Y=da+104|0;Z=da+8|0;W=da+4|0;X=da;aa=a+8|0;k[aa>>2]=e;do if(d|0){f=k[b>>2]|0;m=a+16|0;k[m>>2]=f;n=a+12|0;k[n>>2]=f;if((d|0)>1){j=1;h=f;while(1){g=k[b+(j<<2)>>2]|0;if((g|0)>=(h|0))if((g|0)>(f|0)){k[m>>2]=g;f=g;g=h}else g=h;else k[n>>2]=g;j=j+1|0;if((j|0)==(d|0))break;else h=g}}else g=f;T=1-g+f|0;k[a+20>>2]=T;f=(T|0)/2|0;g=a+24|0;k[g>>2]=f;k[a+28>>2]=0-f;if(!(T&1))k[g>>2]=f+-1;f=a+32|0;g=a+36|0;m=k[g>>2]|0;h=k[f>>2]|0;j=m-h>>2;if(j>>>0>>0){wg(f,e-j|0);break}if(j>>>0>e>>>0?(o=h+(e<<2)|0,(m|0)!=(o|0)):0)k[g>>2]=m+(~((m+-4-o|0)>>>2)<<2)}while(0);S=k[a+48>>2]|0;T=k[a+52>>2]|0;f=ca;g=f+48|0;do{k[f>>2]=0;f=f+4|0}while((f|0)<(g|0));if(!e){f=0;g=0}else{wg(ca,e);f=k[ca+12>>2]|0;g=k[ca+16>>2]|0}h=ca+16|0;j=g-f>>2;if(j>>>0>=e>>>0){if(j>>>0>e>>>0?(p=f+(e<<2)|0,(g|0)!=(p|0)):0)k[h>>2]=g+(~((g+-4-p|0)>>>2)<<2)}else wg(ca+12|0,e-j|0);f=ca+24|0;g=ca+28|0;m=k[g>>2]|0;j=k[f>>2]|0;h=m-j>>2;if(h>>>0>=e>>>0){if(h>>>0>e>>>0?(q=j+(e<<2)|0,(m|0)!=(q|0)):0)k[g>>2]=m+(~((m+-4-q|0)>>>2)<<2)}else wg(f,e-h|0);f=ca+36|0;g=ca+40|0;m=k[g>>2]|0;j=k[f>>2]|0;h=m-j>>2;if(h>>>0>=e>>>0){if(h>>>0>e>>>0?(s=j+(e<<2)|0,(m|0)!=(s|0)):0)k[g>>2]=m+(~((m+-4-s|0)>>>2)<<2)}else wg(f,e-h|0);fi(ba,e);B=a+56|0;g=k[B>>2]|0;j=k[g+4>>2]|0;h=k[g>>2]|0;f=j-h|0;a:do if((f|0)>4){C=S+12|0;D=(e|0)>0;E=Z+4|0;F=Z+8|0;G=Z+12|0;H=a+16|0;I=a+32|0;J=a+12|0;K=a+28|0;L=a+20|0;M=a+24|0;N=Z+16|0;O=ba+4|0;P=Y+1|0;Q=e<<2;y=f>>2;f=j;b:while(1){A=y+-1|0;if(f-h>>2>>>0<=A>>>0){R=22;break}w=k[h+(A<<2)>>2]|0;v=(((w>>>0)%3|0|0)==0?2:-1)+w|0;x=(w|v|0)<0;u=(w|0)<0?w:v;t=1;g=0;f=w;c:while(1){do{if((f|0)<=-1){x=g;break c}q=k[ca+(g*12|0)>>2]|0;s=k[C>>2]|0;j=k[s+(f<<2)>>2]|0;if((j|0)>=0){n=k[S>>2]|0;m=(j>>>0)%3|0;d=k[T>>2]|0;p=k[d+(k[n+(((j>>>0)/3|0)*12|0)+(m<<2)>>2]<<2)>>2]|0;h=j+1|0;h=((h|0)%3|0|0)==0?j+-2|0:h;if((h|0)<0)h=-1073741824;else h=k[n+(((h>>>0)/3|0)*12|0)+(((h>>>0)%3|0)<<2)>>2]|0;o=k[d+(h<<2)>>2]|0;h=((m|0)==0?2:-1)+j|0;if((h|0)<0)h=-1073741824;else h=k[n+(((h>>>0)/3|0)*12|0)+(((h>>>0)%3|0)<<2)>>2]|0;h=k[d+(h<<2)>>2]|0;if((p|0)<(A|0)&(o|0)<(A|0)&(h|0)<(A|0)){n=$(p,e)|0;m=$(o,e)|0;j=$(h,e)|0;if(D){h=0;do{k[q+(h<<2)>>2]=(k[b+(h+j<<2)>>2]|0)+(k[b+(h+m<<2)>>2]|0)-(k[b+(h+n<<2)>>2]|0);h=h+1|0}while((h|0)!=(e|0))}g=g+1|0;if((g|0)==4){x=4;break c}}}do if(t){z=f+1|0;f=((z|0)%3|0|0)==0?f+-2|0:z;if((f|0)>=0){f=k[s+(f<<2)>>2]|0;h=f+1|0;if((f|0)>=0)f=((h|0)%3|0|0)==0?f+-2|0:h}}else{f=(((f>>>0)%3|0|0)==0?2:-1)+f|0;if((f|0)>=0){f=k[s+(f<<2)>>2]|0;if((f|0)>=0)if(!((f>>>0)%3|0)){f=f+2|0;break}else{f=f+-1|0;break}}}while(0);if((f|0)==(w|0)){x=g;break c}}while(!(t&(f|0)<0));if(x){t=0;f=u;continue}f=k[s+(v<<2)>>2]|0;if((f|0)<0){t=0;continue}if(!((f>>>0)%3|0)){t=0;f=f+2|0;continue}else{t=0;f=f+-1|0;continue}}z=$(A,e)|0;k[Z>>2]=2147483647;i[E>>0]=0;k[F>>2]=0;k[F+4>>2]=0;k[F+8>>2]=0;k[F+12>>2]=0;h=$(y+-2|0,e)|0;if(D){g=0;f=0;do{y=(k[b+(g+z<<2)>>2]|0)-(k[b+(g+h<<2)>>2]|0)|0;f=((y|0)>-1?y:0-y|0)+f|0;g=g+1|0}while((g|0)!=(e|0))}else f=0;k[Z>>2]=f;i[E>>0]=0;k[F>>2]=0;y=b+(h<<2)|0;Ie(G,y,y+(e<<2)|0);if((x|0)>=1){p=Y+x|0;o=p+-1|0;q=(o|0)==(Y|0);s=p+-2|0;t=P>>>0>>0;u=o>>>0>Y>>>0;v=0;w=1;while(1){v=v+1|0;Zh(Y|0,1,x|0)|0;Zh(Y|0,0,v|0)|0;d:while(1){if(D){Zh(k[ba>>2]|0,0,Q|0)|0;m=k[ba>>2]|0;j=0;f=0;do{if(!(i[Y+j>>0]|0)){h=k[ca+(j*12|0)>>2]|0;g=0;do{y=m+(g<<2)|0;k[y>>2]=(k[y>>2]|0)+(k[h+(g<<2)>>2]|0);g=g+1|0}while((g|0)!=(e|0));f=(1<>0]|0))f=(1<>2]|0;h=0;g=0;do{d=j+(h<<2)|0;y=(k[d>>2]|0)/(w|0)|0;k[d>>2]=y;y=y-(k[b+(h+z<<2)>>2]|0)|0;g=((y|0)>-1?y:0-y|0)+g|0;h=h+1|0}while((h|0)!=(e|0))}else g=0;if((g|0)<(k[Z>>2]|0)){k[Z>>2]=g;i[E>>0]=f;k[F>>2]=w;k[W>>2]=k[ba>>2];k[X>>2]=k[O>>2];k[U>>2]=k[W>>2];k[V>>2]=k[X>>2];Fe(G,U,V)}if(q)break;_=i[o>>0]|0;m=-1;d=_;while(1){f=m+-1|0;n=p+f|0;y=d;d=i[n>>0]|0;if((d&255)<(y&255))break;if((n|0)==(Y|0)){R=80;break d}else m=f}f=p+m|0;if((d&255)<(_&255)){h=o;g=_}else{g=p;j=o;while(1){g=i[g+-2>>0]|0;h=j+-1|0;if((d&255)<(g&255))break;else{g=j;j=h}}}i[n>>0]=g;i[h>>0]=d;if((m|0)<-1)g=o;else continue;while(1){y=i[f>>0]|0;i[f>>0]=i[g>>0]|0;i[g>>0]=y;f=f+1|0;g=g+-1|0;if(f>>>0>=g>>>0)continue d}}if(((R|0)==80?(R=0,u):0)?(y=i[Y>>0]|0,i[Y>>0]=_,i[o>>0]=y,t):0){f=s;g=P;do{y=i[g>>0]|0;i[g>>0]=i[f>>0]|0;i[f>>0]=y;g=g+1|0;f=f+-1|0}while(g>>>0>>0)}if((w|0)>=(x|0))break;else w=w+1|0}if((x|0)>0){n=x+-1|0;d=a+60+(n*12|0)|0;m=a+60+(n*12|0)+4|0;n=a+60+(n*12|0)+8|0;j=0;do{f=k[m>>2]|0;g=k[n>>2]|0;h=(f|0)==(g<<5|0);if(!(l[E>>0]&1<>>0<1073741823?(R>>>0>>0?f:R):2147483647);f=k[m>>2]|0}k[m>>2]=f+1;R=(k[d>>2]|0)+(f>>>5<<2)|0;k[R>>2]=k[R>>2]|1<<(f&31)}else{if(h){if((f+1|0)<0){R=107;break b}R=g<<6;f=f+32&-32;ig(d,g<<5>>>0<1073741823?(R>>>0>>0?f:R):2147483647);f=k[m>>2]|0}k[m>>2]=f+1;R=(k[d>>2]|0)+(f>>>5<<2)|0;k[R>>2]=k[R>>2]&~(1<<(f&31))}j=j+1|0}while((j|0)<(x|0))}}n=b+(z<<2)|0;d=k[G>>2]|0;if((k[aa>>2]|0)>0){m=0;do{j=k[d+(m<<2)>>2]|0;f=k[H>>2]|0;do if((j|0)<=(f|0)){f=k[J>>2]|0;g=k[I>>2]|0;h=g+(m<<2)|0;if((j|0)<(f|0)){k[h>>2]=f;h=g;break}else{k[h>>2]=j;h=g;break}}else{h=k[I>>2]|0;k[h+(m<<2)>>2]=f}while(0);m=m+1|0;f=k[aa>>2]|0}while((m|0)<(f|0));if((f|0)>0){f=0;do{k[c+(f+z<<2)>>2]=(k[n+(f<<2)>>2]|0)-(k[h+(f<<2)>>2]|0);f=f+1|0;g=k[aa>>2]|0}while((f|0)<(g|0));if((g|0)>0){f=0;do{g=c+(f+z<<2)|0;h=k[g>>2]|0;if((h|0)>=(k[K>>2]|0)){if((h|0)>(k[M>>2]|0))k[g>>2]=h-(k[L>>2]|0)}else k[g>>2]=(k[L>>2]|0)+h;f=f+1|0}while((f|0)<(k[aa>>2]|0));R=111}else R=111}else R=112}else R=111;if((R|0)==111?(R=0,d|0):0)R=112;if((R|0)==112){R=0;f=k[N>>2]|0;if((f|0)!=(d|0))k[N>>2]=f+(~((f+-4-d|0)>>>2)<<2);Vl(d)}if((A|0)<=1)break a;f=k[B>>2]|0;y=A;g=f;h=k[f>>2]|0;f=k[f+4>>2]|0}if((R|0)==22)_k(g);else if((R|0)==102)$k(d);else if((R|0)==107)$k(d)}while(0);p=k[ca>>2]|0;if((e|0)>0){f=0;do{k[p+(f<<2)>>2]=0;f=f+1|0}while((f|0)!=(e|0))}if((k[aa>>2]|0)>0){n=a+16|0;d=a+32|0;o=a+12|0;m=0;do{j=k[p+(m<<2)>>2]|0;f=k[n>>2]|0;do if((j|0)<=(f|0)){f=k[o>>2]|0;g=k[d>>2]|0;h=g+(m<<2)|0;if((j|0)<(f|0)){k[h>>2]=f;h=g;break}else{k[h>>2]=j;h=g;break}}else{h=k[d>>2]|0;k[h+(m<<2)>>2]=f}while(0);m=m+1|0;f=k[aa>>2]|0}while((m|0)<(f|0));if((f|0)>0){f=0;do{k[c+(f<<2)>>2]=(k[b+(f<<2)>>2]|0)-(k[h+(f<<2)>>2]|0);f=f+1|0;g=k[aa>>2]|0}while((f|0)<(g|0));if((g|0)>0){m=a+28|0;n=a+20|0;g=a+24|0;f=0;do{h=c+(f<<2)|0;j=k[h>>2]|0;if((j|0)>=(k[m>>2]|0)){if((j|0)>(k[g>>2]|0))k[h>>2]=j-(k[n>>2]|0)}else k[h>>2]=(k[n>>2]|0)+j;f=f+1|0}while((f|0)<(k[aa>>2]|0))}}}h=k[ba>>2]|0;j=h;if(h|0){f=ba+4|0;g=k[f>>2]|0;if((g|0)!=(h|0))k[f>>2]=g+(~((g+-4-j|0)>>>2)<<2);Vl(h)}f=k[ca+36>>2]|0;g=f;if(f|0){h=ca+40|0;j=k[h>>2]|0;if((j|0)!=(f|0))k[h>>2]=j+(~((j+-4-g|0)>>>2)<<2);Vl(f)}f=k[ca+24>>2]|0;g=f;if(f|0){h=ca+28|0;j=k[h>>2]|0;if((j|0)!=(f|0))k[h>>2]=j+(~((j+-4-g|0)>>>2)<<2);Vl(f)}f=k[ca+12>>2]|0;g=f;if(f|0){h=ca+16|0;j=k[h>>2]|0;if((j|0)!=(f|0))k[h>>2]=j+(~((j+-4-g|0)>>>2)<<2);Vl(f)}h=k[ca>>2]|0;if(!h){r=da;return 1}f=ca+4|0;g=k[f>>2]|0;if((g|0)!=(h|0))k[f>>2]=g+(~((g+-4-h|0)>>>2)<<2);Vl(h);r=da;return 1}function hb(a){a=a|0;var b=0,c=0,d=0,e=0,f=0,g=0,h=0,j=0,m=0,n=0,o=0,p=0,q=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,B=0;B=r;r=r+96|0;w=B+88|0;A=B+40|0;z=B;t=B+84|0;x=B+80|0;o=a+148|0;k[o>>2]=0;e=a+164|0;if(k[e>>2]|0){c=a+160|0;b=k[c>>2]|0;if(b|0)do{y=b;b=k[b>>2]|0;Vl(y)}while((b|0)!=0);k[c>>2]=0;c=k[a+156>>2]|0;if(c|0){d=a+152|0;b=0;do{k[(k[d>>2]|0)+(b<<2)>>2]=0;b=b+1|0}while((b|0)!=(c|0))}k[e>>2]=0}s=a+4|0;b=k[(k[s>>2]|0)+20>>2]|0;m=b+8|0;j=k[m>>2]|0;m=k[m+4>>2]|0;n=b+16|0;g=n;f=k[g>>2]|0;g=k[g+4>>2]|0;d=mk(f|0,g|0,4,0)|0;c=M;if((m|0)<(c|0)|(m|0)==(c|0)&j>>>0>>0){A=0;r=B;return A|0}h=k[b>>2]|0;e=h+f|0;e=l[e>>0]|l[e+1>>0]<<8|l[e+2>>0]<<16|l[e+3>>0]<<24;b=n;k[b>>2]=d;k[b+4>>2]=c;k[o>>2]=e;e=mk(f|0,g|0,8,0)|0;b=M;if((m|0)<(b|0)|(m|0)==(b|0)&j>>>0>>0){A=0;r=B;return A|0}c=h+d|0;c=l[c>>0]|l[c+1>>0]<<8|l[c+2>>0]<<16|l[c+3>>0]<<24;q=n;k[q>>2]=e;k[q+4>>2]=b;q=a+172|0;k[q>>2]=c;b=mk(f|0,g|0,12,0)|0;c=M;if((m|0)<(c|0)|(m|0)==(c|0)&j>>>0>>0){A=0;r=B;return A|0}p=h+e|0;p=l[p>>0]|l[p+1>>0]<<8|l[p+2>>0]<<16|l[p+3>>0]<<24;d=n;k[d>>2]=b;k[d+4>>2]=c;b=k[a+24>>2]|0;c=a+28|0;d=k[c>>2]|0;if((d|0)!=(b|0))k[c>>2]=d+(~((d+-4-b|0)>>>2)<<2);y=a+8|0;b=vj(60)|0;sk(b);c=k[y>>2]|0;k[y>>2]=b;if(c){Pg(c);Vl(c);b=k[y>>2]|0;if(!b){A=0;r=B;return A|0}}Ei(b,p);c=a+176|0;d=k[c>>2]|0;e=a+180|0;b=k[e>>2]|0;if((b|0)!=(d|0))k[e>>2]=b+(~((b+-4-d|0)>>>2)<<2);ch(c,p);b=a+188|0;c=k[b>>2]|0;d=a+192|0;e=k[d>>2]|0;if((e|0)!=(c|0))k[d>>2]=e+(~((e+-4-c|0)>>>2)<<2);ch(b,p);b=k[a+36>>2]|0;c=a+40|0;d=k[c>>2]|0;if((d|0)!=(b|0))k[c>>2]=d+(~(((d+-12-b|0)>>>0)/12|0)*12|0);b=k[a+48>>2]|0;c=a+52|0;d=k[c>>2]|0;if((d|0)!=(b|0))k[c>>2]=d+(~((d+-4-b|0)>>>2)<<2);k[a+68>>2]=0;b=k[a+76>>2]|0;c=a+80|0;d=k[c>>2]|0;if((d|0)!=(b|0))k[c>>2]=d+(~((d+-4-b|0)>>>2)<<2);k[a+60>>2]=0;k[a+100>>2]=-1;k[a+108>>2]=-1;k[a+104>>2]=-1;b=k[(k[s>>2]|0)+20>>2]|0;v=b+8|0;u=k[v+4>>2]|0;c=b+16|0;e=c;d=k[e>>2]|0;e=k[e+4>>2]|0;if(!((u|0)>(e|0)|((u|0)==(e|0)?(k[v>>2]|0)>>>0>d>>>0:0))){A=0;r=B;return A|0}h=i[(k[b>>2]|0)+d>>0]|0;u=mk(d|0,e|0,1,0)|0;v=c;k[v>>2]=u;k[v+4>>2]=M;if(h<<24>>24<0){A=0;r=B;return A|0}u=a+228|0;g=k[u>>2]|0;v=a+232|0;b=k[v>>2]|0;if((b|0)!=(g|0))do{k[v>>2]=b+-116;c=k[b+-12>>2]|0;d=c;if(c|0){e=b+-8|0;f=k[e>>2]|0;if((f|0)!=(c|0))k[e>>2]=f+(~((f+-4-d|0)>>>2)<<2);Vl(c)}c=k[b+-28>>2]|0;d=c;if(c|0){e=b+-24|0;f=k[e>>2]|0;if((f|0)!=(c|0))k[e>>2]=f+(~((f+-4-d|0)>>>2)<<2);Vl(c)}c=k[b+-40>>2]|0;d=c;if(c|0){e=b+-36|0;f=k[e>>2]|0;if((f|0)!=(c|0))k[e>>2]=f+(~((f+-4-d|0)>>>2)<<2);Vl(c)}Zg(b+-112|0);b=k[v>>2]|0}while((b|0)!=(g|0));o=h<<24>>24;cg(u,o);b=k[(k[s>>2]|0)+20>>2]|0;h=b+8|0;g=k[h>>2]|0;h=k[h+4>>2]|0;j=b+16|0;d=j;c=k[d>>2]|0;d=k[d+4>>2]|0;m=mk(c|0,d|0,4,0)|0;e=M;if((h|0)<(e|0)|(h|0)==(e|0)&g>>>0>>0){A=0;r=B;return A|0}f=k[b>>2]|0;n=f+c|0;n=l[n>>0]|l[n+1>>0]<<8|l[n+2>>0]<<16|l[n+3>>0]<<24;b=j;k[b>>2]=m;k[b+4>>2]=e;if(p>>>0>>0){A=0;r=B;return A|0}b=mk(c|0,d|0,8,0)|0;c=M;if((h|0)<(c|0)|(h|0)==(c|0)&g>>>0>>0){A=0;r=B;return A|0}m=f+m|0;m=l[m>>0]|l[m+1>>0]<<8|l[m+2>>0]<<16|l[m+3>>0]<<24;g=j;k[g>>2]=b;k[g+4>>2]=c;g=a+136|0;b=(k[q>>2]|0)+m|0;i[w>>0]=1;Af(g,b,w);b=k[(k[s>>2]|0)+20>>2]|0;m=b+8|0;p=k[m>>2]|0;m=k[m+4>>2]|0;c=b+16|0;e=c;d=k[e>>2]|0;e=mk(d|0,k[e+4>>2]|0,4,0)|0;f=M;if((m|0)<(f|0)|(m|0)==(f|0)&p>>>0>>0)b=0;else{b=(k[b>>2]|0)+d|0;b=l[b>>0]|l[b+1>>0]<<8|l[b+2>>0]<<16|l[b+3>>0]<<24;p=c;k[p>>2]=e;k[p+4>>2]=f}pj(A);m=k[(k[s>>2]|0)+20>>2]|0;h=m+16|0;f=k[h>>2]|0;p=(k[m>>2]|0)+f+b|0;m=m+8|0;j=k[m>>2]|0;m=k[m+4>>2]|0;b=mk(f|0,k[h+4>>2]|0,b|0,0)|0;b=Zj(j|0,m|0,b|0,M|0)|0;Aj(A,p,b);b=Vb(a,A)|0;if((b|0)==-1)b=0;else{c=a+240|0;k[a+328>>2]=a;m=(Va[k[(k[a>>2]|0)+32>>2]&127](a)|0)+20|0;m=k[m>>2]|0;j=k[m>>2]|0;m=k[m+16>>2]|0;p=(Va[k[(k[a>>2]|0)+32>>2]&127](a)|0)+20|0;p=k[p>>2]|0;h=p+8|0;p=p+16|0;p=Zj(k[h>>2]|0,k[h+4>>2]|0,k[p>>2]|0,k[p+4>>2]|0)|0;Aj(c,j+m|0,p);p=Va[k[(k[a>>2]|0)+36>>2]&127](a)|0;k[a+332>>2]=p;k[a+336>>2]=k[q>>2];k[a+324>>2]=o;pj(z);a:do if(Sf(c,z)|0){if((ab(a,n)|0)==-1){b=0;break}o=k[(k[s>>2]|0)+20>>2]|0;q=z+16|0;n=k[q>>2]|0;p=(k[z>>2]|0)+n|0;m=z+8|0;q=Zj(k[m>>2]|0,k[m+4>>2]|0,n|0,k[q+4>>2]|0)|0;Aj(o,p,q);s=(k[(k[s>>2]|0)+20>>2]|0)+16|0;q=s;q=mk(k[q>>2]|0,k[q+4>>2]|0,b|0,((b|0)<0)<<31>>31|0)|0;k[s>>2]=q;k[s+4>>2]=M;do if((k[v>>2]|0)!=(k[u>>2]|0)){s=k[y>>2]|0;if(((k[s+4>>2]|0)-(k[s>>2]|0)|0)<=0)break;b=0;do{k[t>>2]=b;k[w>>2]=k[t>>2];b=b+3|0;if(!(qe(a,w)|0)){b=0;break a}s=k[y>>2]|0}while((b|0)<((((k[s+4>>2]|0)-(k[s>>2]|0)|0)/12|0)*3|0))}while(0);Qi(c);Qi(a+280|0);e=k[y>>2]|0;s=k[e+28>>2]|0;f=k[e+24>>2]|0;q=f;if((s-f|0)>0){m=k[g>>2]|0;n=s-f>>2;o=e+12|0;j=0;do{do if(k[m+(j>>>5<<2)>>2]&1<<(j&31)|0){p=q+(j<<2)|0;h=k[p>>2]|0;if((h|0)<0)break;b=h+1|0;b=((b|0)%3|0|0)==0?h+-2|0:b;if((b|0)>=0){g=k[o>>2]|0;c=k[g+(b<<2)>>2]|0;b=c+1|0;b:do if((c|0)<0)b=h;else{c=((b|0)%3|0|0)==0?c+-2|0:b;if((c|0)>-1&(c|0)!=(h|0))b=c;else{b=h;break}while(1){c=b+1|0;c=((c|0)%3|0|0)==0?b+-2|0:c;if((c|0)<0)break b;c=k[g+(c<<2)>>2]|0;d=c+1|0;if((c|0)<0)break b;c=((d|0)%3|0|0)==0?c+-2|0:d;if((c|0)>-1&(c|0)!=(h|0))b=c;else break}}while(0);if((c|0)==(h|0))break}else b=h;k[p>>2]=b}while(0);j=j+1|0}while((j|0)<(n|0))}d=k[v>>2]|0;t=k[u>>2]|0;b=t;if((d|0)==(t|0)){e=s;c=d}else{f=0;do{Fg(b+(f*116|0)+4|0,e)|0;b=k[u>>2]|0;c=k[b+(f*116|0)+104>>2]|0;d=k[b+(f*116|0)+108>>2]|0;if((c|0)!=(d|0))do{k[x>>2]=k[c>>2];k[w>>2]=k[x>>2];Re(b+(f*116|0)+4|0,w);c=c+4|0;b=k[u>>2]|0}while((c|0)!=(d|0));si(b+(f*116|0)+4|0,0,0);f=f+1|0;d=k[v>>2]|0;c=k[u>>2]|0;b=c;e=k[y>>2]|0}while(f>>>0<((d-c|0)/116|0)>>>0);f=k[e+24>>2]|0;e=k[e+28>>2]|0}e=e-f>>2;f=a+212|0;j=a+216|0;m=k[j>>2]|0;h=k[f>>2]|0;g=m-h>>2;do if(e>>>0>g>>>0){wg(f,e-g|0);b=k[u>>2]|0;d=k[v>>2]|0;c=b}else{if(e>>>0>=g>>>0)break;e=h+(e<<2)|0;if((m|0)==(e|0))break;k[j>>2]=m+(~((m+-4-e|0)>>>2)<<2)}while(0);if((d|0)!=(c|0)){m=0;while(1){f=(k[b+(m*116|0)+60>>2]|0)-(k[b+(m*116|0)+56>>2]|0)>>2;g=k[y>>2]|0;g=(k[g+28>>2]|0)-(k[g+24>>2]|0)>>2;f=(f|0)<(g|0)?g:f;g=b+(m*116|0)+88|0;h=b+(m*116|0)+92|0;j=k[h>>2]|0;e=k[g>>2]|0;b=j-e>>2;do if(f>>>0>b>>>0){wg(g,f-b|0);c=k[u>>2]|0;d=k[v>>2]|0}else{if(f>>>0>=b>>>0)break;b=e+(f<<2)|0;if((j|0)==(b|0))break;k[h>>2]=j+(~((j+-4-b|0)>>>2)<<2)}while(0);m=m+1|0;if(m>>>0>=((d-c|0)/116|0)>>>0)break;else b=c}}b=qb(a)|0}else b=0;while(0);Yl(z+24|0)}Yl(A+24|0);A=b;r=B;return A|0}function ib(a){a=a|0;var b=0,c=0,d=0,e=0,f=0,g=0,h=0,j=0,m=0,n=0,o=0,p=0,q=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,B=0;B=r;r=r+96|0;w=B+88|0;A=B+40|0;z=B;t=B+84|0;x=B+80|0;o=a+148|0;k[o>>2]=0;e=a+164|0;if(k[e>>2]|0){c=a+160|0;b=k[c>>2]|0;if(b|0)do{y=b;b=k[b>>2]|0;Vl(y)}while((b|0)!=0);k[c>>2]=0;c=k[a+156>>2]|0;if(c|0){d=a+152|0;b=0;do{k[(k[d>>2]|0)+(b<<2)>>2]=0;b=b+1|0}while((b|0)!=(c|0))}k[e>>2]=0}s=a+4|0;b=k[(k[s>>2]|0)+20>>2]|0;m=b+8|0;j=k[m>>2]|0;m=k[m+4>>2]|0;n=b+16|0;g=n;f=k[g>>2]|0;g=k[g+4>>2]|0;d=mk(f|0,g|0,4,0)|0;c=M;if((m|0)<(c|0)|(m|0)==(c|0)&j>>>0>>0){A=0;r=B;return A|0}h=k[b>>2]|0;e=h+f|0;e=l[e>>0]|l[e+1>>0]<<8|l[e+2>>0]<<16|l[e+3>>0]<<24;b=n;k[b>>2]=d;k[b+4>>2]=c;k[o>>2]=e;e=mk(f|0,g|0,8,0)|0;b=M;if((m|0)<(b|0)|(m|0)==(b|0)&j>>>0>>0){A=0;r=B;return A|0}c=h+d|0;c=l[c>>0]|l[c+1>>0]<<8|l[c+2>>0]<<16|l[c+3>>0]<<24;q=n;k[q>>2]=e;k[q+4>>2]=b;q=a+172|0;k[q>>2]=c;b=mk(f|0,g|0,12,0)|0;c=M;if((m|0)<(c|0)|(m|0)==(c|0)&j>>>0>>0){A=0;r=B;return A|0}p=h+e|0;p=l[p>>0]|l[p+1>>0]<<8|l[p+2>>0]<<16|l[p+3>>0]<<24;d=n;k[d>>2]=b;k[d+4>>2]=c;b=k[a+24>>2]|0;c=a+28|0;d=k[c>>2]|0;if((d|0)!=(b|0))k[c>>2]=d+(~((d+-4-b|0)>>>2)<<2);y=a+8|0;b=vj(60)|0;sk(b);c=k[y>>2]|0;k[y>>2]=b;if(c){Pg(c);Vl(c);b=k[y>>2]|0;if(!b){A=0;r=B;return A|0}}Ei(b,p);c=a+176|0;d=k[c>>2]|0;e=a+180|0;b=k[e>>2]|0;if((b|0)!=(d|0))k[e>>2]=b+(~((b+-4-d|0)>>>2)<<2);ch(c,p);b=a+188|0;c=k[b>>2]|0;d=a+192|0;e=k[d>>2]|0;if((e|0)!=(c|0))k[d>>2]=e+(~((e+-4-c|0)>>>2)<<2);ch(b,p);b=k[a+36>>2]|0;c=a+40|0;d=k[c>>2]|0;if((d|0)!=(b|0))k[c>>2]=d+(~(((d+-12-b|0)>>>0)/12|0)*12|0);b=k[a+48>>2]|0;c=a+52|0;d=k[c>>2]|0;if((d|0)!=(b|0))k[c>>2]=d+(~((d+-4-b|0)>>>2)<<2);k[a+68>>2]=0;b=k[a+76>>2]|0;c=a+80|0;d=k[c>>2]|0;if((d|0)!=(b|0))k[c>>2]=d+(~((d+-4-b|0)>>>2)<<2);k[a+60>>2]=0;k[a+100>>2]=-1;k[a+108>>2]=-1;k[a+104>>2]=-1;b=k[(k[s>>2]|0)+20>>2]|0;v=b+8|0;u=k[v+4>>2]|0;c=b+16|0;e=c;d=k[e>>2]|0;e=k[e+4>>2]|0;if(!((u|0)>(e|0)|((u|0)==(e|0)?(k[v>>2]|0)>>>0>d>>>0:0))){A=0;r=B;return A|0}h=i[(k[b>>2]|0)+d>>0]|0;u=mk(d|0,e|0,1,0)|0;v=c;k[v>>2]=u;k[v+4>>2]=M;if(h<<24>>24<0){A=0;r=B;return A|0}u=a+228|0;g=k[u>>2]|0;v=a+232|0;b=k[v>>2]|0;if((b|0)!=(g|0))do{k[v>>2]=b+-116;c=k[b+-12>>2]|0;d=c;if(c|0){e=b+-8|0;f=k[e>>2]|0;if((f|0)!=(c|0))k[e>>2]=f+(~((f+-4-d|0)>>>2)<<2);Vl(c)}c=k[b+-28>>2]|0;d=c;if(c|0){e=b+-24|0;f=k[e>>2]|0;if((f|0)!=(c|0))k[e>>2]=f+(~((f+-4-d|0)>>>2)<<2);Vl(c)}c=k[b+-40>>2]|0;d=c;if(c|0){e=b+-36|0;f=k[e>>2]|0;if((f|0)!=(c|0))k[e>>2]=f+(~((f+-4-d|0)>>>2)<<2);Vl(c)}Zg(b+-112|0);b=k[v>>2]|0}while((b|0)!=(g|0));o=h<<24>>24;cg(u,o);b=k[(k[s>>2]|0)+20>>2]|0;h=b+8|0;g=k[h>>2]|0;h=k[h+4>>2]|0;j=b+16|0;d=j;c=k[d>>2]|0;d=k[d+4>>2]|0;m=mk(c|0,d|0,4,0)|0;e=M;if((h|0)<(e|0)|(h|0)==(e|0)&g>>>0>>0){A=0;r=B;return A|0}f=k[b>>2]|0;n=f+c|0;n=l[n>>0]|l[n+1>>0]<<8|l[n+2>>0]<<16|l[n+3>>0]<<24;b=j;k[b>>2]=m;k[b+4>>2]=e;if(p>>>0>>0){A=0;r=B;return A|0}b=mk(c|0,d|0,8,0)|0;c=M;if((h|0)<(c|0)|(h|0)==(c|0)&g>>>0>>0){A=0;r=B;return A|0}m=f+m|0;m=l[m>>0]|l[m+1>>0]<<8|l[m+2>>0]<<16|l[m+3>>0]<<24;g=j;k[g>>2]=b;k[g+4>>2]=c;g=a+136|0;b=(k[q>>2]|0)+m|0;i[w>>0]=1;Af(g,b,w);b=k[(k[s>>2]|0)+20>>2]|0;m=b+8|0;p=k[m>>2]|0;m=k[m+4>>2]|0;c=b+16|0;e=c;d=k[e>>2]|0;e=mk(d|0,k[e+4>>2]|0,4,0)|0;f=M;if((m|0)<(f|0)|(m|0)==(f|0)&p>>>0>>0)b=0;else{b=(k[b>>2]|0)+d|0;b=l[b>>0]|l[b+1>>0]<<8|l[b+2>>0]<<16|l[b+3>>0]<<24;p=c;k[p>>2]=e;k[p+4>>2]=f}pj(A);m=k[(k[s>>2]|0)+20>>2]|0;h=m+16|0;f=k[h>>2]|0;p=(k[m>>2]|0)+f+b|0;m=m+8|0;j=k[m>>2]|0;m=k[m+4>>2]|0;b=mk(f|0,k[h+4>>2]|0,b|0,0)|0;b=Zj(j|0,m|0,b|0,M|0)|0;Aj(A,p,b);b=Vb(a,A)|0;if((b|0)==-1)b=0;else{c=a+240|0;k[a+328>>2]=a;m=(Va[k[(k[a>>2]|0)+32>>2]&127](a)|0)+20|0;m=k[m>>2]|0;j=k[m>>2]|0;m=k[m+16>>2]|0;p=(Va[k[(k[a>>2]|0)+32>>2]&127](a)|0)+20|0;p=k[p>>2]|0;h=p+8|0;p=p+16|0;p=Zj(k[h>>2]|0,k[h+4>>2]|0,k[p>>2]|0,k[p+4>>2]|0)|0;Aj(c,j+m|0,p);p=Va[k[(k[a>>2]|0)+36>>2]&127](a)|0;k[a+332>>2]=p;k[a+336>>2]=k[q>>2];k[a+324>>2]=o;pj(z);a:do if(Qc(c,z)|0){if(($a(a,n)|0)==-1){b=0;break}o=k[(k[s>>2]|0)+20>>2]|0;q=z+16|0;n=k[q>>2]|0;p=(k[z>>2]|0)+n|0;m=z+8|0;q=Zj(k[m>>2]|0,k[m+4>>2]|0,n|0,k[q+4>>2]|0)|0;Aj(o,p,q);s=(k[(k[s>>2]|0)+20>>2]|0)+16|0;q=s;q=mk(k[q>>2]|0,k[q+4>>2]|0,b|0,((b|0)<0)<<31>>31|0)|0;k[s>>2]=q;k[s+4>>2]=M;do if((k[v>>2]|0)!=(k[u>>2]|0)){s=k[y>>2]|0;if(((k[s+4>>2]|0)-(k[s>>2]|0)|0)<=0)break;b=0;do{k[t>>2]=b;k[w>>2]=k[t>>2];b=b+3|0;if(!(qe(a,w)|0)){b=0;break a}s=k[y>>2]|0}while((b|0)<((((k[s+4>>2]|0)-(k[s>>2]|0)|0)/12|0)*3|0))}while(0);Qi(c);Qi(a+280|0);e=k[y>>2]|0;s=k[e+28>>2]|0;f=k[e+24>>2]|0;q=f;if((s-f|0)>0){m=k[g>>2]|0;n=s-f>>2;o=e+12|0;j=0;do{do if(k[m+(j>>>5<<2)>>2]&1<<(j&31)|0){p=q+(j<<2)|0;h=k[p>>2]|0;if((h|0)<0)break;b=h+1|0;b=((b|0)%3|0|0)==0?h+-2|0:b;if((b|0)>=0){g=k[o>>2]|0;c=k[g+(b<<2)>>2]|0;b=c+1|0;b:do if((c|0)<0)b=h;else{c=((b|0)%3|0|0)==0?c+-2|0:b;if((c|0)>-1&(c|0)!=(h|0))b=c;else{b=h;break}while(1){c=b+1|0;c=((c|0)%3|0|0)==0?b+-2|0:c;if((c|0)<0)break b;c=k[g+(c<<2)>>2]|0;d=c+1|0;if((c|0)<0)break b;c=((d|0)%3|0|0)==0?c+-2|0:d;if((c|0)>-1&(c|0)!=(h|0))b=c;else break}}while(0);if((c|0)==(h|0))break}else b=h;k[p>>2]=b}while(0);j=j+1|0}while((j|0)<(n|0))}d=k[v>>2]|0;t=k[u>>2]|0;b=t;if((d|0)==(t|0)){e=s;c=d}else{f=0;do{Fg(b+(f*116|0)+4|0,e)|0;b=k[u>>2]|0;c=k[b+(f*116|0)+104>>2]|0;d=k[b+(f*116|0)+108>>2]|0;if((c|0)!=(d|0))do{k[x>>2]=k[c>>2];k[w>>2]=k[x>>2];Re(b+(f*116|0)+4|0,w);c=c+4|0;b=k[u>>2]|0}while((c|0)!=(d|0));si(b+(f*116|0)+4|0,0,0);f=f+1|0;d=k[v>>2]|0;c=k[u>>2]|0;b=c;e=k[y>>2]|0}while(f>>>0<((d-c|0)/116|0)>>>0);f=k[e+24>>2]|0;e=k[e+28>>2]|0}e=e-f>>2;f=a+212|0;j=a+216|0;m=k[j>>2]|0;h=k[f>>2]|0;g=m-h>>2;do if(e>>>0>g>>>0){wg(f,e-g|0);b=k[u>>2]|0;d=k[v>>2]|0;c=b}else{if(e>>>0>=g>>>0)break;e=h+(e<<2)|0;if((m|0)==(e|0))break;k[j>>2]=m+(~((m+-4-e|0)>>>2)<<2)}while(0);if((d|0)!=(c|0)){m=0;while(1){f=(k[b+(m*116|0)+60>>2]|0)-(k[b+(m*116|0)+56>>2]|0)>>2;g=k[y>>2]|0;g=(k[g+28>>2]|0)-(k[g+24>>2]|0)>>2;f=(f|0)<(g|0)?g:f;g=b+(m*116|0)+88|0;h=b+(m*116|0)+92|0;j=k[h>>2]|0;e=k[g>>2]|0;b=j-e>>2;do if(f>>>0>b>>>0){wg(g,f-b|0);c=k[u>>2]|0;d=k[v>>2]|0}else{if(f>>>0>=b>>>0)break;b=e+(f<<2)|0;if((j|0)==(b|0))break;k[h>>2]=j+(~((j+-4-b|0)>>>2)<<2)}while(0);m=m+1|0;if(m>>>0>=((d-c|0)/116|0)>>>0)break;else b=c}}b=qb(a)|0}else b=0;while(0);Yl(z+24|0)}Yl(A+24|0);A=b;r=B;return A|0}function jb(a){a=a|0;var b=0,c=0,d=0,e=0,f=0,g=0,h=0,j=0,m=0,n=0,o=0,p=0,q=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,B=0;B=r;r=r+96|0;w=B+88|0;A=B+40|0;z=B;t=B+84|0;x=B+80|0;o=a+148|0;k[o>>2]=0;e=a+164|0;if(k[e>>2]|0){c=a+160|0;b=k[c>>2]|0;if(b|0)do{y=b;b=k[b>>2]|0;Vl(y)}while((b|0)!=0);k[c>>2]=0;c=k[a+156>>2]|0;if(c|0){d=a+152|0;b=0;do{k[(k[d>>2]|0)+(b<<2)>>2]=0;b=b+1|0}while((b|0)!=(c|0))}k[e>>2]=0}s=a+4|0;b=k[(k[s>>2]|0)+20>>2]|0;m=b+8|0;j=k[m>>2]|0;m=k[m+4>>2]|0;n=b+16|0;g=n;f=k[g>>2]|0;g=k[g+4>>2]|0;d=mk(f|0,g|0,4,0)|0;c=M;if((m|0)<(c|0)|(m|0)==(c|0)&j>>>0>>0){A=0;r=B;return A|0}h=k[b>>2]|0;e=h+f|0;e=l[e>>0]|l[e+1>>0]<<8|l[e+2>>0]<<16|l[e+3>>0]<<24;b=n;k[b>>2]=d;k[b+4>>2]=c;k[o>>2]=e;e=mk(f|0,g|0,8,0)|0;b=M;if((m|0)<(b|0)|(m|0)==(b|0)&j>>>0>>0){A=0;r=B;return A|0}c=h+d|0;c=l[c>>0]|l[c+1>>0]<<8|l[c+2>>0]<<16|l[c+3>>0]<<24;q=n;k[q>>2]=e;k[q+4>>2]=b;q=a+172|0;k[q>>2]=c;b=mk(f|0,g|0,12,0)|0;c=M;if((m|0)<(c|0)|(m|0)==(c|0)&j>>>0>>0){A=0;r=B;return A|0}p=h+e|0;p=l[p>>0]|l[p+1>>0]<<8|l[p+2>>0]<<16|l[p+3>>0]<<24;d=n;k[d>>2]=b;k[d+4>>2]=c;b=k[a+24>>2]|0;c=a+28|0;d=k[c>>2]|0;if((d|0)!=(b|0))k[c>>2]=d+(~((d+-4-b|0)>>>2)<<2);y=a+8|0;b=vj(60)|0;sk(b);c=k[y>>2]|0;k[y>>2]=b;if(c){Pg(c);Vl(c);b=k[y>>2]|0;if(!b){A=0;r=B;return A|0}}Ei(b,p);c=a+176|0;d=k[c>>2]|0;e=a+180|0;b=k[e>>2]|0;if((b|0)!=(d|0))k[e>>2]=b+(~((b+-4-d|0)>>>2)<<2);ch(c,p);b=a+188|0;c=k[b>>2]|0;d=a+192|0;e=k[d>>2]|0;if((e|0)!=(c|0))k[d>>2]=e+(~((e+-4-c|0)>>>2)<<2);ch(b,p);b=k[a+36>>2]|0;c=a+40|0;d=k[c>>2]|0;if((d|0)!=(b|0))k[c>>2]=d+(~(((d+-12-b|0)>>>0)/12|0)*12|0);b=k[a+48>>2]|0;c=a+52|0;d=k[c>>2]|0;if((d|0)!=(b|0))k[c>>2]=d+(~((d+-4-b|0)>>>2)<<2);k[a+68>>2]=0;b=k[a+76>>2]|0;c=a+80|0;d=k[c>>2]|0;if((d|0)!=(b|0))k[c>>2]=d+(~((d+-4-b|0)>>>2)<<2);k[a+60>>2]=0;k[a+100>>2]=-1;k[a+108>>2]=-1;k[a+104>>2]=-1;b=k[(k[s>>2]|0)+20>>2]|0;v=b+8|0;u=k[v+4>>2]|0;c=b+16|0;e=c;d=k[e>>2]|0;e=k[e+4>>2]|0;if(!((u|0)>(e|0)|((u|0)==(e|0)?(k[v>>2]|0)>>>0>d>>>0:0))){A=0;r=B;return A|0}h=i[(k[b>>2]|0)+d>>0]|0;u=mk(d|0,e|0,1,0)|0;v=c;k[v>>2]=u;k[v+4>>2]=M;if(h<<24>>24<0){A=0;r=B;return A|0}u=a+228|0;g=k[u>>2]|0;v=a+232|0;b=k[v>>2]|0;if((b|0)!=(g|0))do{k[v>>2]=b+-116;c=k[b+-12>>2]|0;d=c;if(c|0){e=b+-8|0;f=k[e>>2]|0;if((f|0)!=(c|0))k[e>>2]=f+(~((f+-4-d|0)>>>2)<<2);Vl(c)}c=k[b+-28>>2]|0;d=c;if(c|0){e=b+-24|0;f=k[e>>2]|0;if((f|0)!=(c|0))k[e>>2]=f+(~((f+-4-d|0)>>>2)<<2);Vl(c)}c=k[b+-40>>2]|0;d=c;if(c|0){e=b+-36|0;f=k[e>>2]|0;if((f|0)!=(c|0))k[e>>2]=f+(~((f+-4-d|0)>>>2)<<2);Vl(c)}Zg(b+-112|0);b=k[v>>2]|0}while((b|0)!=(g|0));o=h<<24>>24;cg(u,o);b=k[(k[s>>2]|0)+20>>2]|0;h=b+8|0;g=k[h>>2]|0;h=k[h+4>>2]|0;j=b+16|0;d=j;c=k[d>>2]|0;d=k[d+4>>2]|0;m=mk(c|0,d|0,4,0)|0;e=M;if((h|0)<(e|0)|(h|0)==(e|0)&g>>>0>>0){A=0;r=B;return A|0}f=k[b>>2]|0;n=f+c|0;n=l[n>>0]|l[n+1>>0]<<8|l[n+2>>0]<<16|l[n+3>>0]<<24;b=j;k[b>>2]=m;k[b+4>>2]=e;if(p>>>0>>0){A=0;r=B;return A|0}b=mk(c|0,d|0,8,0)|0;c=M;if((h|0)<(c|0)|(h|0)==(c|0)&g>>>0>>0){A=0;r=B;return A|0}p=f+m|0;p=l[p>>0]|l[p+1>>0]<<8|l[p+2>>0]<<16|l[p+3>>0]<<24;g=j;k[g>>2]=b;k[g+4>>2]=c;g=a+136|0;b=(k[q>>2]|0)+p|0;i[w>>0]=1;Af(g,b,w);b=k[(k[s>>2]|0)+20>>2]|0;p=b+8|0;q=k[p>>2]|0;p=k[p+4>>2]|0;c=b+16|0;e=c;d=k[e>>2]|0;e=mk(d|0,k[e+4>>2]|0,4,0)|0;f=M;if((p|0)<(f|0)|(p|0)==(f|0)&q>>>0>>0)b=0;else{b=(k[b>>2]|0)+d|0;b=l[b>>0]|l[b+1>>0]<<8|l[b+2>>0]<<16|l[b+3>>0]<<24;q=c;k[q>>2]=e;k[q+4>>2]=f}pj(A);p=k[(k[s>>2]|0)+20>>2]|0;j=p+16|0;h=k[j>>2]|0;q=(k[p>>2]|0)+h+b|0;p=p+8|0;m=k[p>>2]|0;p=k[p+4>>2]|0;b=mk(h|0,k[j+4>>2]|0,b|0,0)|0;b=Zj(m|0,p|0,b|0,M|0)|0;Aj(A,q,b);b=Vb(a,A)|0;if((b|0)==-1)b=0;else{c=a+240|0;k[a+328>>2]=a;p=(Va[k[(k[a>>2]|0)+32>>2]&127](a)|0)+20|0;p=k[p>>2]|0;m=k[p>>2]|0;p=k[p+16>>2]|0;q=(Va[k[(k[a>>2]|0)+32>>2]&127](a)|0)+20|0;q=k[q>>2]|0;j=q+8|0;q=q+16|0;q=Zj(k[j>>2]|0,k[j+4>>2]|0,k[q>>2]|0,k[q+4>>2]|0)|0;Aj(c,m+p|0,q);k[a+324>>2]=o;pj(z);a:do if(Bd(c,z)|0){if((bb(a,n)|0)==-1){b=0;break}o=k[(k[s>>2]|0)+20>>2]|0;q=z+16|0;n=k[q>>2]|0;p=(k[z>>2]|0)+n|0;m=z+8|0;q=Zj(k[m>>2]|0,k[m+4>>2]|0,n|0,k[q+4>>2]|0)|0;Aj(o,p,q);s=(k[(k[s>>2]|0)+20>>2]|0)+16|0;q=s;q=mk(k[q>>2]|0,k[q+4>>2]|0,b|0,((b|0)<0)<<31>>31|0)|0;k[s>>2]=q;k[s+4>>2]=M;do if((k[v>>2]|0)!=(k[u>>2]|0)){s=k[y>>2]|0;if(((k[s+4>>2]|0)-(k[s>>2]|0)|0)<=0)break;b=0;do{k[t>>2]=b;k[w>>2]=k[t>>2];b=b+3|0;if(!(qe(a,w)|0)){b=0;break a}s=k[y>>2]|0}while((b|0)<((((k[s+4>>2]|0)-(k[s>>2]|0)|0)/12|0)*3|0))}while(0);Qi(c);Qi(a+280|0);e=k[y>>2]|0;s=k[e+28>>2]|0;f=k[e+24>>2]|0;q=f;if((s-f|0)>0){m=k[g>>2]|0;n=s-f>>2;o=e+12|0;j=0;do{do if(k[m+(j>>>5<<2)>>2]&1<<(j&31)|0){p=q+(j<<2)|0;h=k[p>>2]|0;if((h|0)<0)break;b=h+1|0;b=((b|0)%3|0|0)==0?h+-2|0:b;if((b|0)>=0){g=k[o>>2]|0;c=k[g+(b<<2)>>2]|0;b=c+1|0;b:do if((c|0)<0)b=h;else{c=((b|0)%3|0|0)==0?c+-2|0:b;if((c|0)>-1&(c|0)!=(h|0))b=c;else{b=h;break}while(1){c=b+1|0;c=((c|0)%3|0|0)==0?b+-2|0:c;if((c|0)<0)break b;c=k[g+(c<<2)>>2]|0;d=c+1|0;if((c|0)<0)break b;c=((d|0)%3|0|0)==0?c+-2|0:d;if((c|0)>-1&(c|0)!=(h|0))b=c;else break}}while(0);if((c|0)==(h|0))break}else b=h;k[p>>2]=b}while(0);j=j+1|0}while((j|0)<(n|0))}d=k[v>>2]|0;t=k[u>>2]|0;b=t;if((d|0)==(t|0)){e=s;c=d}else{f=0;do{Fg(b+(f*116|0)+4|0,e)|0;b=k[u>>2]|0;c=k[b+(f*116|0)+104>>2]|0;d=k[b+(f*116|0)+108>>2]|0;if((c|0)!=(d|0))do{k[x>>2]=k[c>>2];k[w>>2]=k[x>>2];Re(b+(f*116|0)+4|0,w);c=c+4|0;b=k[u>>2]|0}while((c|0)!=(d|0));si(b+(f*116|0)+4|0,0,0);f=f+1|0;d=k[v>>2]|0;c=k[u>>2]|0;b=c;e=k[y>>2]|0}while(f>>>0<((d-c|0)/116|0)>>>0);f=k[e+24>>2]|0;e=k[e+28>>2]|0}e=e-f>>2;f=a+212|0;j=a+216|0;m=k[j>>2]|0;h=k[f>>2]|0;g=m-h>>2;do if(e>>>0>g>>>0){wg(f,e-g|0);b=k[u>>2]|0;d=k[v>>2]|0;c=b}else{if(e>>>0>=g>>>0)break;e=h+(e<<2)|0;if((m|0)==(e|0))break;k[j>>2]=m+(~((m+-4-e|0)>>>2)<<2)}while(0);if((d|0)!=(c|0)){m=0;while(1){f=(k[b+(m*116|0)+60>>2]|0)-(k[b+(m*116|0)+56>>2]|0)>>2;g=k[y>>2]|0;g=(k[g+28>>2]|0)-(k[g+24>>2]|0)>>2;f=(f|0)<(g|0)?g:f;g=b+(m*116|0)+88|0;h=b+(m*116|0)+92|0;j=k[h>>2]|0;e=k[g>>2]|0;b=j-e>>2;do if(f>>>0>b>>>0){wg(g,f-b|0);c=k[u>>2]|0;d=k[v>>2]|0}else{if(f>>>0>=b>>>0)break;b=e+(f<<2)|0;if((j|0)==(b|0))break;k[h>>2]=j+(~((j+-4-b|0)>>>2)<<2)}while(0);m=m+1|0;if(m>>>0>=((d-c|0)/116|0)>>>0)break;else b=c}}b=qb(a)|0}else b=0;while(0);Yl(z+24|0)}Yl(A+24|0);A=b;r=B;return A|0}function kb(a,b,c,d,e,f){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;f=f|0;var g=0,h=0,j=0,m=0,n=0,o=0,p=0,q=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,B=0,C=0,D=0,E=0,F=0,G=0,H=0,I=0,J=0,K=0,L=0,M=0,N=0,O=0,P=0,Q=0,R=0,S=0,T=0,U=0,V=0,W=0,X=0,Y=0,Z=0,_=0,aa=0,ba=0,ca=0;ca=r;r=r+112|0;N=ca+100|0;M=ca+96|0;ba=ca+48|0;aa=ca+32|0;S=ca+104|0;T=ca+8|0;O=ca+4|0;P=ca;W=a+8|0;k[W>>2]=e;Q=k[a+24>>2]|0;R=k[a+28>>2]|0;d=ba;f=d+48|0;do{k[d>>2]=0;d=d+4|0}while((d|0)<(f|0));if(!e){d=0;f=0}else{wg(ba,e);d=k[ba+12>>2]|0;f=k[ba+16>>2]|0}g=ba+16|0;h=f-d>>2;if(h>>>0>=e>>>0){if(h>>>0>e>>>0?(j=d+(e<<2)|0,(f|0)!=(j|0)):0)k[g>>2]=f+(~((f+-4-j|0)>>>2)<<2)}else wg(ba+12|0,e-h|0);d=ba+24|0;f=ba+28|0;j=k[f>>2]|0;h=k[d>>2]|0;g=j-h>>2;if(g>>>0>=e>>>0){if(g>>>0>e>>>0?(m=h+(e<<2)|0,(j|0)!=(m|0)):0)k[f>>2]=j+(~((j+-4-m|0)>>>2)<<2)}else wg(d,e-g|0);d=ba+36|0;f=ba+40|0;j=k[f>>2]|0;h=k[d>>2]|0;g=j-h>>2;if(g>>>0>=e>>>0){if(g>>>0>e>>>0?(n=h+(e<<2)|0,(j|0)!=(n|0)):0)k[f>>2]=j+(~((j+-4-n|0)>>>2)<<2)}else wg(d,e-g|0);fi(aa,e);E=a+32|0;h=k[E>>2]|0;g=k[h+4>>2]|0;f=k[h>>2]|0;d=g-f|0;a:do if((d|0)>4){A=Q+64|0;B=Q+28|0;C=(e|0)>0;D=T+4|0;F=T+8|0;G=T+12|0;H=T+12|0;I=T+16|0;J=aa+4|0;K=S+1|0;L=e<<2;v=d>>2;d=h;b:while(1){z=v+-1|0;if(g-f>>2>>>0<=z>>>0){_=8;break}q=k[f+(z<<2)>>2]|0;p=q+((q|0)<0?0:((q>>>0)%3|0|0)==0?2:-1)|0;s=p>>>5;t=1<<(p&31);u=(p|0)<0;o=1;d=0;f=q;c:while(1){do{if((f|0)<=-1){x=d;break c}h=k[ba+(d*12|0)>>2]|0;if(((k[(k[Q>>2]|0)+(f>>>5<<2)>>2]&1<<(f&31)|0)==0?(V=k[(k[(k[A>>2]|0)+12>>2]|0)+(f<<2)>>2]|0,(V|0)>=0):0)?(Z=k[B>>2]|0,y=k[R>>2]|0,X=k[y+(k[Z+(V<<2)>>2]<<2)>>2]|0,Y=V+1|0,Y=k[y+(k[Z+((((Y|0)%3|0|0)==0?V+-2|0:Y)<<2)>>2]<<2)>>2]|0,Z=k[y+(k[Z+((((V>>>0)%3|0|0)==0?2:-1)+V<<2)>>2]<<2)>>2]|0,(X|0)<(z|0)&(Y|0)<(z|0)&(Z|0)<(z|0)):0){j=$(X,e)|0;m=$(Y,e)|0;n=$(Z,e)|0;if(C){g=0;do{k[h+(g<<2)>>2]=(k[b+(g+n<<2)>>2]|0)+(k[b+(g+m<<2)>>2]|0)-(k[b+(g+j<<2)>>2]|0);g=g+1|0}while((g|0)!=(e|0))}d=d+1|0;if((d|0)==4){x=4;break c}}do if(o){g=f+1|0;f=((g|0)%3|0|0)==0?f+-2|0:g;g=k[Q>>2]|0;if(!(k[g+(f>>>5<<2)>>2]&1<<(f&31))){if((f|0)>=0){f=k[(k[(k[A>>2]|0)+12>>2]|0)+(f<<2)>>2]|0;h=f+1|0;if((f|0)>=0)f=((h|0)%3|0|0)==0?f+-2|0:h}}else f=-1073741824}else{f=(((f>>>0)%3|0|0)==0?2:-1)+f|0;g=k[Q>>2]|0;if(!(k[g+(f>>>5<<2)>>2]&1<<(f&31))){if((f|0)>=0){f=k[(k[(k[A>>2]|0)+12>>2]|0)+(f<<2)>>2]|0;if((f|0)>=0)if(!((f>>>0)%3|0)){f=f+2|0;break}else{f=f+-1|0;break}}}else f=-1073741824}while(0);if((f|0)==(q|0)){x=d;break c}}while(!(o&(f|0)<0));f=(t&k[g+(s<<2)>>2]|0)!=0;if(f|u){o=0;f=f?-1073741824:p;continue}f=k[(k[(k[A>>2]|0)+12>>2]|0)+(p<<2)>>2]|0;if((f|0)<0){o=0;continue}if(!((f>>>0)%3|0)){o=0;f=f+2|0;continue}else{o=0;f=f+-1|0;continue}}y=$(z,e)|0;k[T>>2]=2147483647;i[D>>0]=0;k[F>>2]=0;k[F+4>>2]=0;k[F+8>>2]=0;k[F+12>>2]=0;g=$(v+-2|0,e)|0;if(C){f=0;d=0;do{w=(k[b+(f+y<<2)>>2]|0)-(k[b+(f+g<<2)>>2]|0)|0;d=((w|0)>-1?w:0-w|0)+d|0;f=f+1|0}while((f|0)!=(e|0))}else d=0;k[T>>2]=d;i[D>>0]=0;k[F>>2]=0;w=b+(g<<2)|0;Ie(G,w,w+(e<<2)|0);if((x|0)>=1){p=S+x|0;o=p+-1|0;q=(o|0)==(S|0);s=p+-2|0;t=K>>>0>>0;u=o>>>0>S>>>0;v=0;w=1;while(1){v=v+1|0;Zh(S|0,1,x|0)|0;Zh(S|0,0,v|0)|0;d:while(1){if(C){Zh(k[aa>>2]|0,0,L|0)|0;j=k[aa>>2]|0;h=0;d=0;do{if(!(i[S+h>>0]|0)){g=k[ba+(h*12|0)>>2]|0;f=0;do{n=j+(f<<2)|0;k[n>>2]=(k[n>>2]|0)+(k[g+(f<<2)>>2]|0);f=f+1|0}while((f|0)!=(e|0));d=(1<>0]|0))d=(1<>2]|0;g=0;f=0;do{m=h+(g<<2)|0;n=(k[m>>2]|0)/(w|0)|0;k[m>>2]=n;n=n-(k[b+(g+y<<2)>>2]|0)|0;f=((n|0)>-1?n:0-n|0)+f|0;g=g+1|0}while((g|0)!=(e|0))}else f=0;if((f|0)<(k[T>>2]|0)){k[T>>2]=f;i[D>>0]=d;k[F>>2]=w;k[O>>2]=k[aa>>2];k[P>>2]=k[J>>2];k[M>>2]=k[O>>2];k[N>>2]=k[P>>2];Fe(G,M,N)}if(q)break;U=i[o>>0]|0;j=-1;n=U;while(1){d=j+-1|0;m=p+d|0;h=n;n=i[m>>0]|0;if((n&255)<(h&255))break;if((m|0)==(S|0)){_=65;break d}else j=d}d=p+j|0;if((n&255)<(U&255)){g=o;f=U}else{f=p;h=o;while(1){f=i[f+-2>>0]|0;g=h+-1|0;if((n&255)<(f&255))break;else{f=h;h=g}}}i[m>>0]=f;i[g>>0]=n;if((j|0)<-1)f=o;else continue;while(1){n=i[d>>0]|0;i[d>>0]=i[f>>0]|0;i[f>>0]=n;d=d+1|0;f=f+-1|0;if(d>>>0>=f>>>0)continue d}}if(((_|0)==65?(_=0,u):0)?(n=i[S>>0]|0,i[S>>0]=U,i[o>>0]=n,t):0){d=s;f=K;do{n=i[f>>0]|0;i[f>>0]=i[d>>0]|0;i[d>>0]=n;f=f+1|0;d=d+-1|0}while(f>>>0>>0)}if((w|0)>=(x|0))break;else w=w+1|0}if((x|0)>0){n=x+-1|0;j=a+36+(n*12|0)|0;m=a+36+(n*12|0)+4|0;n=a+36+(n*12|0)+8|0;h=0;do{d=k[m>>2]|0;f=k[n>>2]|0;g=(d|0)==(f<<5|0);if(!(l[D>>0]&1<>>0<1073741823?(w>>>0>>0?d:w):2147483647);d=k[m>>2]|0}k[m>>2]=d+1;w=(k[j>>2]|0)+(d>>>5<<2)|0;k[w>>2]=k[w>>2]|1<<(d&31)}else{if(g){if((d+1|0)<0){_=78;break b}w=f<<6;d=d+32&-32;ig(j,f<<5>>>0<1073741823?(w>>>0>>0?d:w):2147483647);d=k[m>>2]|0}k[m>>2]=d+1;w=(k[j>>2]|0)+(d>>>5<<2)|0;k[w>>2]=k[w>>2]&~(1<<(d&31))}h=h+1|0}while((h|0)<(x|0))}}ve(W,b+(y<<2)|0,k[G>>2]|0,c,y);d=k[H>>2]|0;f=d;if(d|0){g=k[I>>2]|0;if((g|0)!=(d|0))k[I>>2]=g+(~((g+-4-f|0)>>>2)<<2);Vl(d)}if((z|0)<=1)break a;d=k[E>>2]|0;v=z;f=k[d>>2]|0;g=k[d+4>>2]|0}if((_|0)==8)_k(d);else if((_|0)==73)$k(j);else if((_|0)==78)$k(j)}while(0);f=k[ba>>2]|0;if((e|0)>0){d=0;do{k[f+(d<<2)>>2]=0;d=d+1|0}while((d|0)!=(e|0))}ve(W,b,f,c,0);g=k[aa>>2]|0;h=g;if(g|0){d=aa+4|0;f=k[d>>2]|0;if((f|0)!=(g|0))k[d>>2]=f+(~((f+-4-h|0)>>>2)<<2);Vl(g)}d=k[ba+36>>2]|0;f=d;if(d|0){g=ba+40|0;h=k[g>>2]|0;if((h|0)!=(d|0))k[g>>2]=h+(~((h+-4-f|0)>>>2)<<2);Vl(d)}d=k[ba+24>>2]|0;f=d;if(d|0){g=ba+28|0;h=k[g>>2]|0;if((h|0)!=(d|0))k[g>>2]=h+(~((h+-4-f|0)>>>2)<<2);Vl(d)}d=k[ba+12>>2]|0;f=d;if(d|0){g=ba+16|0;h=k[g>>2]|0;if((h|0)!=(d|0))k[g>>2]=h+(~((h+-4-f|0)>>>2)<<2);Vl(d)}g=k[ba>>2]|0;if(!g){r=ca;return 1}d=ba+4|0;f=k[d>>2]|0;if((f|0)!=(g|0))k[d>>2]=f+(~((f+-4-g|0)>>>2)<<2);Vl(g);r=ca;return 1}function lb(a,b,c,d,e,f){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;f=f|0;var g=0,h=0,j=0,m=0,n=0,o=0,p=0,q=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,B=0,C=0,D=0,E=0,F=0,G=0,H=0,I=0,J=0,K=0,L=0,M=0,N=0,O=0,P=0,Q=0,R=0,S=0,T=0,U=0,V=0,W=0,X=0,Y=0,Z=0,_=0,aa=0,ba=0,ca=0;ca=r;r=r+112|0;N=ca+100|0;M=ca+96|0;ba=ca+48|0;aa=ca+32|0;S=ca+104|0;T=ca+8|0;O=ca+4|0;P=ca;W=a+8|0;k[W>>2]=e;Q=k[a+24>>2]|0;R=k[a+28>>2]|0;d=ba;f=d+48|0;do{k[d>>2]=0;d=d+4|0}while((d|0)<(f|0));if(!e){d=0;f=0}else{wg(ba,e);d=k[ba+12>>2]|0;f=k[ba+16>>2]|0}g=ba+16|0;h=f-d>>2;if(h>>>0>=e>>>0){if(h>>>0>e>>>0?(j=d+(e<<2)|0,(f|0)!=(j|0)):0)k[g>>2]=f+(~((f+-4-j|0)>>>2)<<2)}else wg(ba+12|0,e-h|0);d=ba+24|0;f=ba+28|0;j=k[f>>2]|0;h=k[d>>2]|0;g=j-h>>2;if(g>>>0>=e>>>0){if(g>>>0>e>>>0?(m=h+(e<<2)|0,(j|0)!=(m|0)):0)k[f>>2]=j+(~((j+-4-m|0)>>>2)<<2)}else wg(d,e-g|0);d=ba+36|0;f=ba+40|0;j=k[f>>2]|0;h=k[d>>2]|0;g=j-h>>2;if(g>>>0>=e>>>0){if(g>>>0>e>>>0?(n=h+(e<<2)|0,(j|0)!=(n|0)):0)k[f>>2]=j+(~((j+-4-n|0)>>>2)<<2)}else wg(d,e-g|0);fi(aa,e);E=a+32|0;h=k[E>>2]|0;g=k[h+4>>2]|0;f=k[h>>2]|0;d=g-f|0;a:do if((d|0)>4){A=Q+64|0;B=Q+28|0;C=(e|0)>0;D=T+4|0;F=T+8|0;G=T+12|0;H=T+12|0;I=T+16|0;J=aa+4|0;K=S+1|0;L=e<<2;v=d>>2;d=h;b:while(1){z=v+-1|0;if(g-f>>2>>>0<=z>>>0){_=8;break}q=k[f+(z<<2)>>2]|0;p=q+((q|0)<0?0:((q>>>0)%3|0|0)==0?2:-1)|0;s=p>>>5;t=1<<(p&31);u=(p|0)<0;o=1;d=0;f=q;c:while(1){do{if((f|0)<=-1){x=d;break c}h=k[ba+(d*12|0)>>2]|0;if(((k[(k[Q>>2]|0)+(f>>>5<<2)>>2]&1<<(f&31)|0)==0?(V=k[(k[(k[A>>2]|0)+12>>2]|0)+(f<<2)>>2]|0,(V|0)>=0):0)?(Z=k[B>>2]|0,y=k[R>>2]|0,X=k[y+(k[Z+(V<<2)>>2]<<2)>>2]|0,Y=V+1|0,Y=k[y+(k[Z+((((Y|0)%3|0|0)==0?V+-2|0:Y)<<2)>>2]<<2)>>2]|0,Z=k[y+(k[Z+((((V>>>0)%3|0|0)==0?2:-1)+V<<2)>>2]<<2)>>2]|0,(X|0)<(z|0)&(Y|0)<(z|0)&(Z|0)<(z|0)):0){j=$(X,e)|0;m=$(Y,e)|0;n=$(Z,e)|0;if(C){g=0;do{k[h+(g<<2)>>2]=(k[b+(g+n<<2)>>2]|0)+(k[b+(g+m<<2)>>2]|0)-(k[b+(g+j<<2)>>2]|0);g=g+1|0}while((g|0)!=(e|0))}d=d+1|0;if((d|0)==4){x=4;break c}}do if(o){g=f+1|0;f=((g|0)%3|0|0)==0?f+-2|0:g;g=k[Q>>2]|0;if(!(k[g+(f>>>5<<2)>>2]&1<<(f&31))){if((f|0)>=0){f=k[(k[(k[A>>2]|0)+12>>2]|0)+(f<<2)>>2]|0;h=f+1|0;if((f|0)>=0)f=((h|0)%3|0|0)==0?f+-2|0:h}}else f=-1073741824}else{f=(((f>>>0)%3|0|0)==0?2:-1)+f|0;g=k[Q>>2]|0;if(!(k[g+(f>>>5<<2)>>2]&1<<(f&31))){if((f|0)>=0){f=k[(k[(k[A>>2]|0)+12>>2]|0)+(f<<2)>>2]|0;if((f|0)>=0)if(!((f>>>0)%3|0)){f=f+2|0;break}else{f=f+-1|0;break}}}else f=-1073741824}while(0);if((f|0)==(q|0)){x=d;break c}}while(!(o&(f|0)<0));f=(t&k[g+(s<<2)>>2]|0)!=0;if(f|u){o=0;f=f?-1073741824:p;continue}f=k[(k[(k[A>>2]|0)+12>>2]|0)+(p<<2)>>2]|0;if((f|0)<0){o=0;continue}if(!((f>>>0)%3|0)){o=0;f=f+2|0;continue}else{o=0;f=f+-1|0;continue}}y=$(z,e)|0;k[T>>2]=2147483647;i[D>>0]=0;k[F>>2]=0;k[F+4>>2]=0;k[F+8>>2]=0;k[F+12>>2]=0;g=$(v+-2|0,e)|0;if(C){f=0;d=0;do{w=(k[b+(f+y<<2)>>2]|0)-(k[b+(f+g<<2)>>2]|0)|0;d=((w|0)>-1?w:0-w|0)+d|0;f=f+1|0}while((f|0)!=(e|0))}else d=0;k[T>>2]=d;i[D>>0]=0;k[F>>2]=0;w=b+(g<<2)|0;Ie(G,w,w+(e<<2)|0);if((x|0)>=1){p=S+x|0;o=p+-1|0;q=(o|0)==(S|0);s=p+-2|0;t=K>>>0>>0;u=o>>>0>S>>>0;v=0;w=1;while(1){v=v+1|0;Zh(S|0,1,x|0)|0;Zh(S|0,0,v|0)|0;d:while(1){if(C){Zh(k[aa>>2]|0,0,L|0)|0;j=k[aa>>2]|0;h=0;d=0;do{if(!(i[S+h>>0]|0)){g=k[ba+(h*12|0)>>2]|0;f=0;do{n=j+(f<<2)|0;k[n>>2]=(k[n>>2]|0)+(k[g+(f<<2)>>2]|0);f=f+1|0}while((f|0)!=(e|0));d=(1<>0]|0))d=(1<>2]|0;g=0;f=0;do{m=h+(g<<2)|0;n=(k[m>>2]|0)/(w|0)|0;k[m>>2]=n;n=n-(k[b+(g+y<<2)>>2]|0)|0;f=((n|0)>-1?n:0-n|0)+f|0;g=g+1|0}while((g|0)!=(e|0))}else f=0;if((f|0)<(k[T>>2]|0)){k[T>>2]=f;i[D>>0]=d;k[F>>2]=w;k[O>>2]=k[aa>>2];k[P>>2]=k[J>>2];k[M>>2]=k[O>>2];k[N>>2]=k[P>>2];Fe(G,M,N)}if(q)break;U=i[o>>0]|0;j=-1;n=U;while(1){d=j+-1|0;m=p+d|0;h=n;n=i[m>>0]|0;if((n&255)<(h&255))break;if((m|0)==(S|0)){_=65;break d}else j=d}d=p+j|0;if((n&255)<(U&255)){g=o;f=U}else{f=p;h=o;while(1){f=i[f+-2>>0]|0;g=h+-1|0;if((n&255)<(f&255))break;else{f=h;h=g}}}i[m>>0]=f;i[g>>0]=n;if((j|0)<-1)f=o;else continue;while(1){n=i[d>>0]|0;i[d>>0]=i[f>>0]|0;i[f>>0]=n;d=d+1|0;f=f+-1|0;if(d>>>0>=f>>>0)continue d}}if(((_|0)==65?(_=0,u):0)?(n=i[S>>0]|0,i[S>>0]=U,i[o>>0]=n,t):0){d=s;f=K;do{n=i[f>>0]|0;i[f>>0]=i[d>>0]|0;i[d>>0]=n;f=f+1|0;d=d+-1|0}while(f>>>0>>0)}if((w|0)>=(x|0))break;else w=w+1|0}if((x|0)>0){n=x+-1|0;j=a+36+(n*12|0)|0;m=a+36+(n*12|0)+4|0;n=a+36+(n*12|0)+8|0;h=0;do{d=k[m>>2]|0;f=k[n>>2]|0;g=(d|0)==(f<<5|0);if(!(l[D>>0]&1<>>0<1073741823?(w>>>0>>0?d:w):2147483647);d=k[m>>2]|0}k[m>>2]=d+1;w=(k[j>>2]|0)+(d>>>5<<2)|0;k[w>>2]=k[w>>2]|1<<(d&31)}else{if(g){if((d+1|0)<0){_=78;break b}w=f<<6;d=d+32&-32;ig(j,f<<5>>>0<1073741823?(w>>>0>>0?d:w):2147483647);d=k[m>>2]|0}k[m>>2]=d+1;w=(k[j>>2]|0)+(d>>>5<<2)|0;k[w>>2]=k[w>>2]&~(1<<(d&31))}h=h+1|0}while((h|0)<(x|0))}}Ae(W,b+(y<<2)|0,k[G>>2]|0,c,y);d=k[H>>2]|0;f=d;if(d|0){g=k[I>>2]|0;if((g|0)!=(d|0))k[I>>2]=g+(~((g+-4-f|0)>>>2)<<2);Vl(d)}if((z|0)<=1)break a;d=k[E>>2]|0;v=z;f=k[d>>2]|0;g=k[d+4>>2]|0}if((_|0)==8)_k(d);else if((_|0)==73)$k(j);else if((_|0)==78)$k(j)}while(0);f=k[ba>>2]|0;if((e|0)>0){d=0;do{k[f+(d<<2)>>2]=0;d=d+1|0}while((d|0)!=(e|0))}Ae(W,b,f,c,0);g=k[aa>>2]|0;h=g;if(g|0){d=aa+4|0;f=k[d>>2]|0;if((f|0)!=(g|0))k[d>>2]=f+(~((f+-4-h|0)>>>2)<<2);Vl(g)}d=k[ba+36>>2]|0;f=d;if(d|0){g=ba+40|0;h=k[g>>2]|0;if((h|0)!=(d|0))k[g>>2]=h+(~((h+-4-f|0)>>>2)<<2);Vl(d)}d=k[ba+24>>2]|0;f=d;if(d|0){g=ba+28|0;h=k[g>>2]|0;if((h|0)!=(d|0))k[g>>2]=h+(~((h+-4-f|0)>>>2)<<2);Vl(d)}d=k[ba+12>>2]|0;f=d;if(d|0){g=ba+16|0;h=k[g>>2]|0;if((h|0)!=(d|0))k[g>>2]=h+(~((h+-4-f|0)>>>2)<<2);Vl(d)}g=k[ba>>2]|0;if(!g){r=ca;return 1}d=ba+4|0;f=k[d>>2]|0;if((f|0)!=(g|0))k[d>>2]=f+(~((f+-4-g|0)>>>2)<<2);Vl(g);r=ca;return 1}function mb(a,b,c,d,e,f){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;f=f|0;var g=0,h=0,j=0,m=0,n=0,o=0,p=0,q=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,B=0,C=0,D=0,E=0,F=0,G=0,H=0,I=0,J=0,K=0,L=0,M=0,N=0,O=0,P=0,Q=0,R=0,S=0,T=0,U=0,V=0,W=0,X=0,Y=0,Z=0;Z=r;r=r+112|0;N=Z+100|0;M=Z+96|0;Y=Z+48|0;X=Z+32|0;S=Z+104|0;T=Z+8|0;O=Z+4|0;P=Z;V=a+8|0;k[V>>2]=e;Q=k[a+24>>2]|0;R=k[a+28>>2]|0;d=Y;f=d+48|0;do{k[d>>2]=0;d=d+4|0}while((d|0)<(f|0));if(!e){d=0;f=0}else{wg(Y,e);d=k[Y+12>>2]|0;f=k[Y+16>>2]|0}g=Y+16|0;h=f-d>>2;if(h>>>0>=e>>>0){if(h>>>0>e>>>0?(j=d+(e<<2)|0,(f|0)!=(j|0)):0)k[g>>2]=f+(~((f+-4-j|0)>>>2)<<2)}else wg(Y+12|0,e-h|0);d=Y+24|0;f=Y+28|0;j=k[f>>2]|0;h=k[d>>2]|0;g=j-h>>2;if(g>>>0>=e>>>0){if(g>>>0>e>>>0?(m=h+(e<<2)|0,(j|0)!=(m|0)):0)k[f>>2]=j+(~((j+-4-m|0)>>>2)<<2)}else wg(d,e-g|0);d=Y+36|0;f=Y+40|0;j=k[f>>2]|0;h=k[d>>2]|0;g=j-h>>2;if(g>>>0>=e>>>0){if(g>>>0>e>>>0?(n=h+(e<<2)|0,(j|0)!=(n|0)):0)k[f>>2]=j+(~((j+-4-n|0)>>>2)<<2)}else wg(d,e-g|0);fi(X,e);B=a+32|0;h=k[B>>2]|0;g=k[h+4>>2]|0;f=k[h>>2]|0;d=g-f|0;a:do if((d|0)>4){C=Q+12|0;D=(e|0)>0;E=T+4|0;F=T+8|0;G=T+12|0;H=T+12|0;I=T+16|0;J=X+4|0;K=S+1|0;L=e<<2;y=d>>2;d=h;b:while(1){A=y+-1|0;if(g-f>>2>>>0<=A>>>0){W=8;break}w=k[f+(A<<2)>>2]|0;v=(((w>>>0)%3|0|0)==0?2:-1)+w|0;x=(w|v|0)<0;u=(w|0)<0?w:v;t=1;f=0;d=w;c:while(1){do{if((d|0)<=-1){x=f;break c}q=k[Y+(f*12|0)>>2]|0;s=k[C>>2]|0;h=k[s+(d<<2)>>2]|0;if((h|0)>=0){m=k[Q>>2]|0;j=(h>>>0)%3|0;n=k[R>>2]|0;p=k[n+(k[m+(((h>>>0)/3|0)*12|0)+(j<<2)>>2]<<2)>>2]|0;g=h+1|0;g=((g|0)%3|0|0)==0?h+-2|0:g;if((g|0)<0)g=-1073741824;else g=k[m+(((g>>>0)/3|0)*12|0)+(((g>>>0)%3|0)<<2)>>2]|0;o=k[n+(g<<2)>>2]|0;g=((j|0)==0?2:-1)+h|0;if((g|0)<0)g=-1073741824;else g=k[m+(((g>>>0)/3|0)*12|0)+(((g>>>0)%3|0)<<2)>>2]|0;g=k[n+(g<<2)>>2]|0;if((p|0)<(A|0)&(o|0)<(A|0)&(g|0)<(A|0)){m=$(p,e)|0;j=$(o,e)|0;h=$(g,e)|0;if(D){g=0;do{k[q+(g<<2)>>2]=(k[b+(g+h<<2)>>2]|0)+(k[b+(g+j<<2)>>2]|0)-(k[b+(g+m<<2)>>2]|0);g=g+1|0}while((g|0)!=(e|0))}f=f+1|0;if((f|0)==4){x=4;break c}}}do if(t){z=d+1|0;d=((z|0)%3|0|0)==0?d+-2|0:z;if((d|0)>=0){d=k[s+(d<<2)>>2]|0;g=d+1|0;if((d|0)>=0)d=((g|0)%3|0|0)==0?d+-2|0:g}}else{d=(((d>>>0)%3|0|0)==0?2:-1)+d|0;if((d|0)>=0){d=k[s+(d<<2)>>2]|0;if((d|0)>=0)if(!((d>>>0)%3|0)){d=d+2|0;break}else{d=d+-1|0;break}}}while(0);if((d|0)==(w|0)){x=f;break c}}while(!(t&(d|0)<0));if(x){t=0;d=u;continue}d=k[s+(v<<2)>>2]|0;if((d|0)<0){t=0;continue}if(!((d>>>0)%3|0)){t=0;d=d+2|0;continue}else{t=0;d=d+-1|0;continue}}z=$(A,e)|0;k[T>>2]=2147483647;i[E>>0]=0;k[F>>2]=0;k[F+4>>2]=0;k[F+8>>2]=0;k[F+12>>2]=0;g=$(y+-2|0,e)|0;if(D){f=0;d=0;do{y=(k[b+(f+z<<2)>>2]|0)-(k[b+(f+g<<2)>>2]|0)|0;d=((y|0)>-1?y:0-y|0)+d|0;f=f+1|0}while((f|0)!=(e|0))}else d=0;k[T>>2]=d;i[E>>0]=0;k[F>>2]=0;y=b+(g<<2)|0;Ie(G,y,y+(e<<2)|0);if((x|0)>=1){p=S+x|0;o=p+-1|0;q=(o|0)==(S|0);s=p+-2|0;t=K>>>0>>0;u=o>>>0>S>>>0;v=0;w=1;while(1){v=v+1|0;Zh(S|0,1,x|0)|0;Zh(S|0,0,v|0)|0;d:while(1){if(D){Zh(k[X>>2]|0,0,L|0)|0;j=k[X>>2]|0;h=0;d=0;do{if(!(i[S+h>>0]|0)){g=k[Y+(h*12|0)>>2]|0;f=0;do{y=j+(f<<2)|0;k[y>>2]=(k[y>>2]|0)+(k[g+(f<<2)>>2]|0);f=f+1|0}while((f|0)!=(e|0));d=(1<>0]|0))d=(1<>2]|0;g=0;f=0;do{n=h+(g<<2)|0;y=(k[n>>2]|0)/(w|0)|0;k[n>>2]=y;y=y-(k[b+(g+z<<2)>>2]|0)|0;f=((y|0)>-1?y:0-y|0)+f|0;g=g+1|0}while((g|0)!=(e|0))}else f=0;if((f|0)<(k[T>>2]|0)){k[T>>2]=f;i[E>>0]=d;k[F>>2]=w;k[O>>2]=k[X>>2];k[P>>2]=k[J>>2];k[M>>2]=k[O>>2];k[N>>2]=k[P>>2];Fe(G,M,N)}if(q)break;U=i[o>>0]|0;j=-1;n=U;while(1){d=j+-1|0;m=p+d|0;y=n;n=i[m>>0]|0;if((n&255)<(y&255))break;if((m|0)==(S|0)){W=66;break d}else j=d}d=p+j|0;if((n&255)<(U&255)){g=o;f=U}else{f=p;h=o;while(1){f=i[f+-2>>0]|0;g=h+-1|0;if((n&255)<(f&255))break;else{f=h;h=g}}}i[m>>0]=f;i[g>>0]=n;if((j|0)<-1)f=o;else continue;while(1){y=i[d>>0]|0;i[d>>0]=i[f>>0]|0;i[f>>0]=y;d=d+1|0;f=f+-1|0;if(d>>>0>=f>>>0)continue d}}if(((W|0)==66?(W=0,u):0)?(y=i[S>>0]|0,i[S>>0]=U,i[o>>0]=y,t):0){d=s;f=K;do{y=i[f>>0]|0;i[f>>0]=i[d>>0]|0;i[d>>0]=y;f=f+1|0;d=d+-1|0}while(f>>>0>>0)}if((w|0)>=(x|0))break;else w=w+1|0}if((x|0)>0){n=x+-1|0;j=a+36+(n*12|0)|0;m=a+36+(n*12|0)+4|0;n=a+36+(n*12|0)+8|0;h=0;do{d=k[m>>2]|0;f=k[n>>2]|0;g=(d|0)==(f<<5|0);if(!(l[E>>0]&1<>>0<1073741823?(y>>>0>>0?d:y):2147483647);d=k[m>>2]|0}k[m>>2]=d+1;y=(k[j>>2]|0)+(d>>>5<<2)|0;k[y>>2]=k[y>>2]|1<<(d&31)}else{if(g){if((d+1|0)<0){W=79;break b}y=f<<6;d=d+32&-32;ig(j,f<<5>>>0<1073741823?(y>>>0>>0?d:y):2147483647);d=k[m>>2]|0}k[m>>2]=d+1;y=(k[j>>2]|0)+(d>>>5<<2)|0;k[y>>2]=k[y>>2]&~(1<<(d&31))}h=h+1|0}while((h|0)<(x|0))}}ve(V,b+(z<<2)|0,k[G>>2]|0,c,z);d=k[H>>2]|0;f=d;if(d|0){g=k[I>>2]|0;if((g|0)!=(d|0))k[I>>2]=g+(~((g+-4-f|0)>>>2)<<2);Vl(d)}if((A|0)<=1)break a;d=k[B>>2]|0;y=A;f=k[d>>2]|0;g=k[d+4>>2]|0}if((W|0)==8)_k(d);else if((W|0)==74)$k(j);else if((W|0)==79)$k(j)}while(0);f=k[Y>>2]|0;if((e|0)>0){d=0;do{k[f+(d<<2)>>2]=0;d=d+1|0}while((d|0)!=(e|0))}ve(V,b,f,c,0);g=k[X>>2]|0;h=g;if(g|0){d=X+4|0;f=k[d>>2]|0;if((f|0)!=(g|0))k[d>>2]=f+(~((f+-4-h|0)>>>2)<<2);Vl(g)}d=k[Y+36>>2]|0;f=d;if(d|0){g=Y+40|0;h=k[g>>2]|0;if((h|0)!=(d|0))k[g>>2]=h+(~((h+-4-f|0)>>>2)<<2);Vl(d)}d=k[Y+24>>2]|0;f=d;if(d|0){g=Y+28|0;h=k[g>>2]|0;if((h|0)!=(d|0))k[g>>2]=h+(~((h+-4-f|0)>>>2)<<2);Vl(d)}d=k[Y+12>>2]|0;f=d;if(d|0){g=Y+16|0;h=k[g>>2]|0;if((h|0)!=(d|0))k[g>>2]=h+(~((h+-4-f|0)>>>2)<<2);Vl(d)}g=k[Y>>2]|0;if(!g){r=Z;return 1}d=Y+4|0;f=k[d>>2]|0;if((f|0)!=(g|0))k[d>>2]=f+(~((f+-4-g|0)>>>2)<<2);Vl(g);r=Z;return 1}function nb(a,b,c,d,e,f){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;f=f|0;var g=0,h=0,j=0,m=0,n=0,o=0,p=0,q=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,B=0,C=0,D=0,E=0,F=0,G=0,H=0,I=0,J=0,K=0,L=0,M=0,N=0,O=0,P=0,Q=0,R=0,S=0,T=0,U=0,V=0,W=0,X=0,Y=0,Z=0;Z=r;r=r+112|0;N=Z+100|0;M=Z+96|0;Y=Z+48|0;X=Z+32|0;S=Z+104|0;T=Z+8|0;O=Z+4|0;P=Z;V=a+8|0;k[V>>2]=e;Q=k[a+24>>2]|0;R=k[a+28>>2]|0;d=Y;f=d+48|0;do{k[d>>2]=0;d=d+4|0}while((d|0)<(f|0));if(!e){d=0;f=0}else{wg(Y,e);d=k[Y+12>>2]|0;f=k[Y+16>>2]|0}g=Y+16|0;h=f-d>>2;if(h>>>0>=e>>>0){if(h>>>0>e>>>0?(j=d+(e<<2)|0,(f|0)!=(j|0)):0)k[g>>2]=f+(~((f+-4-j|0)>>>2)<<2)}else wg(Y+12|0,e-h|0);d=Y+24|0;f=Y+28|0;j=k[f>>2]|0;h=k[d>>2]|0;g=j-h>>2;if(g>>>0>=e>>>0){if(g>>>0>e>>>0?(m=h+(e<<2)|0,(j|0)!=(m|0)):0)k[f>>2]=j+(~((j+-4-m|0)>>>2)<<2)}else wg(d,e-g|0);d=Y+36|0;f=Y+40|0;j=k[f>>2]|0;h=k[d>>2]|0;g=j-h>>2;if(g>>>0>=e>>>0){if(g>>>0>e>>>0?(n=h+(e<<2)|0,(j|0)!=(n|0)):0)k[f>>2]=j+(~((j+-4-n|0)>>>2)<<2)}else wg(d,e-g|0);fi(X,e);B=a+32|0;h=k[B>>2]|0;g=k[h+4>>2]|0;f=k[h>>2]|0;d=g-f|0;a:do if((d|0)>4){C=Q+12|0;D=(e|0)>0;E=T+4|0;F=T+8|0;G=T+12|0;H=T+12|0;I=T+16|0;J=X+4|0;K=S+1|0;L=e<<2;y=d>>2;d=h;b:while(1){A=y+-1|0;if(g-f>>2>>>0<=A>>>0){W=8;break}w=k[f+(A<<2)>>2]|0;v=(((w>>>0)%3|0|0)==0?2:-1)+w|0;x=(w|v|0)<0;u=(w|0)<0?w:v;t=1;f=0;d=w;c:while(1){do{if((d|0)<=-1){x=f;break c}q=k[Y+(f*12|0)>>2]|0;s=k[C>>2]|0;h=k[s+(d<<2)>>2]|0;if((h|0)>=0){m=k[Q>>2]|0;j=(h>>>0)%3|0;n=k[R>>2]|0;p=k[n+(k[m+(((h>>>0)/3|0)*12|0)+(j<<2)>>2]<<2)>>2]|0;g=h+1|0;g=((g|0)%3|0|0)==0?h+-2|0:g;if((g|0)<0)g=-1073741824;else g=k[m+(((g>>>0)/3|0)*12|0)+(((g>>>0)%3|0)<<2)>>2]|0;o=k[n+(g<<2)>>2]|0;g=((j|0)==0?2:-1)+h|0;if((g|0)<0)g=-1073741824;else g=k[m+(((g>>>0)/3|0)*12|0)+(((g>>>0)%3|0)<<2)>>2]|0;g=k[n+(g<<2)>>2]|0;if((p|0)<(A|0)&(o|0)<(A|0)&(g|0)<(A|0)){m=$(p,e)|0;j=$(o,e)|0;h=$(g,e)|0;if(D){g=0;do{k[q+(g<<2)>>2]=(k[b+(g+h<<2)>>2]|0)+(k[b+(g+j<<2)>>2]|0)-(k[b+(g+m<<2)>>2]|0);g=g+1|0}while((g|0)!=(e|0))}f=f+1|0;if((f|0)==4){x=4;break c}}}do if(t){z=d+1|0;d=((z|0)%3|0|0)==0?d+-2|0:z;if((d|0)>=0){d=k[s+(d<<2)>>2]|0;g=d+1|0;if((d|0)>=0)d=((g|0)%3|0|0)==0?d+-2|0:g}}else{d=(((d>>>0)%3|0|0)==0?2:-1)+d|0;if((d|0)>=0){d=k[s+(d<<2)>>2]|0;if((d|0)>=0)if(!((d>>>0)%3|0)){d=d+2|0;break}else{d=d+-1|0;break}}}while(0);if((d|0)==(w|0)){x=f;break c}}while(!(t&(d|0)<0));if(x){t=0;d=u;continue}d=k[s+(v<<2)>>2]|0;if((d|0)<0){t=0;continue}if(!((d>>>0)%3|0)){t=0;d=d+2|0;continue}else{t=0;d=d+-1|0;continue}}z=$(A,e)|0;k[T>>2]=2147483647;i[E>>0]=0;k[F>>2]=0;k[F+4>>2]=0;k[F+8>>2]=0;k[F+12>>2]=0;g=$(y+-2|0,e)|0;if(D){f=0;d=0;do{y=(k[b+(f+z<<2)>>2]|0)-(k[b+(f+g<<2)>>2]|0)|0;d=((y|0)>-1?y:0-y|0)+d|0;f=f+1|0}while((f|0)!=(e|0))}else d=0;k[T>>2]=d;i[E>>0]=0;k[F>>2]=0;y=b+(g<<2)|0;Ie(G,y,y+(e<<2)|0);if((x|0)>=1){p=S+x|0;o=p+-1|0;q=(o|0)==(S|0);s=p+-2|0;t=K>>>0>>0;u=o>>>0>S>>>0;v=0;w=1;while(1){v=v+1|0;Zh(S|0,1,x|0)|0;Zh(S|0,0,v|0)|0;d:while(1){if(D){Zh(k[X>>2]|0,0,L|0)|0;j=k[X>>2]|0;h=0;d=0;do{if(!(i[S+h>>0]|0)){g=k[Y+(h*12|0)>>2]|0;f=0;do{y=j+(f<<2)|0;k[y>>2]=(k[y>>2]|0)+(k[g+(f<<2)>>2]|0);f=f+1|0}while((f|0)!=(e|0));d=(1<>0]|0))d=(1<>2]|0;g=0;f=0;do{n=h+(g<<2)|0;y=(k[n>>2]|0)/(w|0)|0;k[n>>2]=y;y=y-(k[b+(g+z<<2)>>2]|0)|0;f=((y|0)>-1?y:0-y|0)+f|0;g=g+1|0}while((g|0)!=(e|0))}else f=0;if((f|0)<(k[T>>2]|0)){k[T>>2]=f;i[E>>0]=d;k[F>>2]=w;k[O>>2]=k[X>>2];k[P>>2]=k[J>>2];k[M>>2]=k[O>>2];k[N>>2]=k[P>>2];Fe(G,M,N)}if(q)break;U=i[o>>0]|0;j=-1;n=U;while(1){d=j+-1|0;m=p+d|0;y=n;n=i[m>>0]|0;if((n&255)<(y&255))break;if((m|0)==(S|0)){W=66;break d}else j=d}d=p+j|0;if((n&255)<(U&255)){g=o;f=U}else{f=p;h=o;while(1){f=i[f+-2>>0]|0;g=h+-1|0;if((n&255)<(f&255))break;else{f=h;h=g}}}i[m>>0]=f;i[g>>0]=n;if((j|0)<-1)f=o;else continue;while(1){y=i[d>>0]|0;i[d>>0]=i[f>>0]|0;i[f>>0]=y;d=d+1|0;f=f+-1|0;if(d>>>0>=f>>>0)continue d}}if(((W|0)==66?(W=0,u):0)?(y=i[S>>0]|0,i[S>>0]=U,i[o>>0]=y,t):0){d=s;f=K;do{y=i[f>>0]|0;i[f>>0]=i[d>>0]|0;i[d>>0]=y;f=f+1|0;d=d+-1|0}while(f>>>0>>0)}if((w|0)>=(x|0))break;else w=w+1|0}if((x|0)>0){n=x+-1|0;j=a+36+(n*12|0)|0;m=a+36+(n*12|0)+4|0;n=a+36+(n*12|0)+8|0;h=0;do{d=k[m>>2]|0;f=k[n>>2]|0;g=(d|0)==(f<<5|0);if(!(l[E>>0]&1<>>0<1073741823?(y>>>0>>0?d:y):2147483647);d=k[m>>2]|0}k[m>>2]=d+1;y=(k[j>>2]|0)+(d>>>5<<2)|0;k[y>>2]=k[y>>2]|1<<(d&31)}else{if(g){if((d+1|0)<0){W=79;break b}y=f<<6;d=d+32&-32;ig(j,f<<5>>>0<1073741823?(y>>>0>>0?d:y):2147483647);d=k[m>>2]|0}k[m>>2]=d+1;y=(k[j>>2]|0)+(d>>>5<<2)|0;k[y>>2]=k[y>>2]&~(1<<(d&31))}h=h+1|0}while((h|0)<(x|0))}}Ae(V,b+(z<<2)|0,k[G>>2]|0,c,z);d=k[H>>2]|0;f=d;if(d|0){g=k[I>>2]|0;if((g|0)!=(d|0))k[I>>2]=g+(~((g+-4-f|0)>>>2)<<2);Vl(d)}if((A|0)<=1)break a;d=k[B>>2]|0;y=A;f=k[d>>2]|0;g=k[d+4>>2]|0}if((W|0)==8)_k(d);else if((W|0)==74)$k(j);else if((W|0)==79)$k(j)}while(0);f=k[Y>>2]|0;if((e|0)>0){d=0;do{k[f+(d<<2)>>2]=0;d=d+1|0}while((d|0)!=(e|0))}Ae(V,b,f,c,0);g=k[X>>2]|0;h=g;if(g|0){d=X+4|0;f=k[d>>2]|0;if((f|0)!=(g|0))k[d>>2]=f+(~((f+-4-h|0)>>>2)<<2);Vl(g)}d=k[Y+36>>2]|0;f=d;if(d|0){g=Y+40|0;h=k[g>>2]|0;if((h|0)!=(d|0))k[g>>2]=h+(~((h+-4-f|0)>>>2)<<2);Vl(d)}d=k[Y+24>>2]|0;f=d;if(d|0){g=Y+28|0;h=k[g>>2]|0;if((h|0)!=(d|0))k[g>>2]=h+(~((h+-4-f|0)>>>2)<<2);Vl(d)}d=k[Y+12>>2]|0;f=d;if(d|0){g=Y+16|0;h=k[g>>2]|0;if((h|0)!=(d|0))k[g>>2]=h+(~((h+-4-f|0)>>>2)<<2);Vl(d)}g=k[Y>>2]|0;if(!g){r=Z;return 1}d=Y+4|0;f=k[d>>2]|0;if((f|0)!=(g|0))k[d>>2]=f+(~((f+-4-g|0)>>>2)<<2);Vl(g);r=Z;return 1}function ob(a,b,c,d,e,f){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;f=f|0;var g=0,h=0,i=0,j=0,l=0,m=0,n=0,o=0,p=0,q=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,B=0,C=0,D=0,E=0,F=0,G=0,H=0,I=0,J=0,K=0,L=0,M=0,N=0,O=0,P=0,Q=0,R=0,S=0;S=r;r=r+64|0;R=S+16|0;Q=S;H=a+8|0;k[H>>2]=e;i=a+32|0;d=a+36|0;h=k[d>>2]|0;g=k[i>>2]|0;f=h-g>>2;if(f>>>0>=e>>>0){if(f>>>0>e>>>0?(j=g+(e<<2)|0,(h|0)!=(j|0)):0)k[d>>2]=h+(~((h+-4-j|0)>>>2)<<2)}else wg(i,e-f|0);d=R;f=d+48|0;do{k[d>>2]=0;d=d+4|0}while((d|0)<(f|0));k[Q>>2]=0;if(!e){d=0;f=0}else{Of(R,e,Q);d=k[R+12>>2]|0;f=k[R+16>>2]|0}k[Q>>2]=0;g=R+16|0;h=f-d>>2;if(h>>>0>=e>>>0){if(h>>>0>e>>>0?(l=d+(e<<2)|0,(f|0)!=(l|0)):0)k[g>>2]=f+(~((f+-4-l|0)>>>2)<<2)}else Of(R+12|0,e-h|0,Q);d=R+24|0;k[Q>>2]=0;f=R+28|0;i=k[f>>2]|0;h=k[d>>2]|0;g=i-h>>2;if(g>>>0>=e>>>0){if(g>>>0>e>>>0?(m=h+(e<<2)|0,(i|0)!=(m|0)):0)k[f>>2]=i+(~((i+-4-m|0)>>>2)<<2)}else Of(d,e-g|0,Q);d=R+36|0;k[Q>>2]=0;f=R+40|0;i=k[f>>2]|0;h=k[d>>2]|0;g=i-h>>2;if(g>>>0>=e>>>0){if(g>>>0>e>>>0?(n=h+(e<<2)|0,(i|0)!=(n|0)):0)k[f>>2]=i+(~((i+-4-n|0)>>>2)<<2)}else Of(d,e-g|0,Q);l=k[R>>2]|0;if((k[H>>2]|0)>0){m=a+16|0;j=a+32|0;n=a+12|0;i=0;do{h=k[l+(i<<2)>>2]|0;d=k[m>>2]|0;do if((h|0)<=(d|0)){d=k[n>>2]|0;f=k[j>>2]|0;g=f+(i<<2)|0;if((h|0)<(d|0)){k[g>>2]=d;g=f;break}else{k[g>>2]=h;g=f;break}}else{g=k[j>>2]|0;k[g+(i<<2)>>2]=d}while(0);i=i+1|0;d=k[H>>2]|0}while((i|0)<(d|0));if((d|0)>0){d=0;do{k[c+(d<<2)>>2]=(k[b+(d<<2)>>2]|0)+(k[g+(d<<2)>>2]|0);d=d+1|0;f=k[H>>2]|0}while((d|0)<(f|0));if((f|0)>0){f=a+20|0;d=0;do{g=c+(d<<2)|0;h=k[g>>2]|0;if((h|0)<=(k[m>>2]|0)){if((h|0)<(k[n>>2]|0))k[g>>2]=(k[f>>2]|0)+h}else k[g>>2]=h-(k[f>>2]|0);d=d+1|0}while((d|0)<(k[H>>2]|0))}}}u=k[a+48>>2]|0;v=k[a+52>>2]|0;G=vj(16)|0;k[G>>2]=0;k[G+4>>2]=0;k[G+8>>2]=0;k[G+12>>2]=0;fi(Q,e);w=a+56|0;f=k[w>>2]|0;h=k[f+4>>2]|0;g=k[f>>2]|0;F=h-g|0;x=F>>2;a:do if((F|0)>4){y=u+64|0;z=u+28|0;A=(e|0)>0;B=a+16|0;C=a+32|0;D=a+12|0;E=a+20|0;F=e<<2;d=1;while(1){if(h-g>>2>>>0<=d>>>0)break;p=k[g+(d<<2)>>2]|0;o=p+((p|0)<0?0:((p>>>0)%3|0|0)==0?2:-1)|0;q=o>>>5;s=1<<(o&31);t=(o|0)<0;n=1;f=0;g=p;b:while(1){do{if((g|0)<=-1){o=63;break b}i=k[R+(f*12|0)>>2]|0;if(((k[(k[u>>2]|0)+(g>>>5<<2)>>2]&1<<(g&31)|0)==0?(J=k[(k[(k[y>>2]|0)+12>>2]|0)+(g<<2)>>2]|0,(J|0)>=0):0)?(M=k[z>>2]|0,m=k[v>>2]|0,K=k[m+(k[M+(J<<2)>>2]<<2)>>2]|0,L=J+1|0,L=k[m+(k[M+((((L|0)%3|0|0)==0?J+-2|0:L)<<2)>>2]<<2)>>2]|0,M=k[m+(k[M+((((J>>>0)%3|0|0)==0?2:-1)+J<<2)>>2]<<2)>>2]|0,(K|0)<(d|0)&(L|0)<(d|0)&(M|0)<(d|0)):0){j=$(K,e)|0;l=$(L,e)|0;m=$(M,e)|0;if(A){h=0;do{k[i+(h<<2)>>2]=(k[c+(h+m<<2)>>2]|0)+(k[c+(h+l<<2)>>2]|0)-(k[c+(h+j<<2)>>2]|0);h=h+1|0}while((h|0)!=(e|0))}f=f+1|0;if((f|0)==4){f=4;o=44;break b}}do if(n){h=g+1|0;g=((h|0)%3|0|0)==0?g+-2|0:h;h=k[u>>2]|0;if(!(k[h+(g>>>5<<2)>>2]&1<<(g&31))){if((g|0)>=0){g=k[(k[(k[y>>2]|0)+12>>2]|0)+(g<<2)>>2]|0;i=g+1|0;if((g|0)>=0)g=((i|0)%3|0|0)==0?g+-2|0:i}}else g=-1073741824}else{g=(((g>>>0)%3|0|0)==0?2:-1)+g|0;h=k[u>>2]|0;if(!(k[h+(g>>>5<<2)>>2]&1<<(g&31))){if((g|0)>=0){g=k[(k[(k[y>>2]|0)+12>>2]|0)+(g<<2)>>2]|0;if((g|0)>=0)if(!((g>>>0)%3|0)){g=g+2|0;break}else{g=g+-1|0;break}}}else g=-1073741824}while(0);if((g|0)==(p|0)){o=63;break b}}while(!(n&(g|0)<0));g=(s&k[h+(q<<2)>>2]|0)!=0;if(g|t){n=0;g=g?-1073741824:o;continue}g=k[(k[(k[y>>2]|0)+12>>2]|0)+(o<<2)>>2]|0;if((g|0)<0){n=0;continue}if(!((g>>>0)%3|0)){n=0;g=g+2|0;continue}else{n=0;g=g+-1|0;continue}}if((o|0)==63)if((f|0)>0)o=44;else{P=$(d,e)|0;o=75}if((o|0)==44){o=0;if(A){Zh(k[Q>>2]|0,0,F|0)|0;m=f+-1|0;l=G+(m<<2)|0;m=k[a+60+(m*12|0)>>2]|0;n=k[Q>>2]|0;j=0;g=0;do{t=k[l>>2]|0;k[l>>2]=t+1;if(!(k[m+(t>>>5<<2)>>2]&1<<(t&31))){i=k[R+(j*12|0)>>2]|0;h=0;do{t=n+(h<<2)|0;k[t>>2]=(k[t>>2]|0)+(k[i+(h<<2)>>2]|0);h=h+1|0}while((h|0)!=(e|0));g=g+1|0}j=j+1|0}while((j|0)!=(f|0));f=g}else{j=f+-1|0;i=G+(j<<2)|0;j=k[a+60+(j*12|0)>>2]|0;h=0;g=0;l=k[i>>2]|0;do{t=l;l=l+1|0;k[i>>2]=l;g=g+((k[j+(t>>>5<<2)>>2]&1<<(t&31)|0)==0&1)|0;h=h+1|0}while((h|0)!=(f|0));f=g}m=$(d,e)|0;if(f){l=k[Q>>2]|0;if(A){g=0;do{t=l+(g<<2)|0;k[t>>2]=(k[t>>2]|0)/(f|0)|0;g=g+1|0}while((g|0)!=(e|0))}n=c+(m<<2)|0;if((k[H>>2]|0)>0){j=0;do{i=k[l+(j<<2)>>2]|0;f=k[B>>2]|0;do if((i|0)<=(f|0)){f=k[D>>2]|0;g=k[C>>2]|0;h=g+(j<<2)|0;if((i|0)<(f|0)){k[h>>2]=f;h=g;break}else{k[h>>2]=i;h=g;break}}else{h=k[C>>2]|0;k[h+(j<<2)>>2]=f}while(0);j=j+1|0;f=k[H>>2]|0}while((j|0)<(f|0));if((f|0)>0){f=0;do{k[n+(f<<2)>>2]=(k[b+(f+m<<2)>>2]|0)+(k[h+(f<<2)>>2]|0);f=f+1|0;g=k[H>>2]|0}while((f|0)<(g|0));if((g|0)>0){f=0;do{g=n+(f<<2)|0;h=k[g>>2]|0;do if((h|0)>(k[B>>2]|0))k[g>>2]=h-(k[E>>2]|0);else{if((h|0)>=(k[D>>2]|0))break;k[g>>2]=(k[E>>2]|0)+h}while(0);f=f+1|0}while((f|0)<(k[H>>2]|0))}}}}else{P=m;o=75}}if((o|0)==75?(0,N=c+(($(d+-1|0,e)|0)<<2)|0,O=c+(P<<2)|0,(k[H>>2]|0)>0):0){j=0;do{i=k[N+(j<<2)>>2]|0;f=k[B>>2]|0;do if((i|0)<=(f|0)){f=k[D>>2]|0;g=k[C>>2]|0;h=g+(j<<2)|0;if((i|0)<(f|0)){k[h>>2]=f;h=g;break}else{k[h>>2]=i;h=g;break}}else{h=k[C>>2]|0;k[h+(j<<2)>>2]=f}while(0);j=j+1|0;f=k[H>>2]|0}while((j|0)<(f|0));if((f|0)>0){f=0;do{k[O+(f<<2)>>2]=(k[b+(f+P<<2)>>2]|0)+(k[h+(f<<2)>>2]|0);f=f+1|0;g=k[H>>2]|0}while((f|0)<(g|0));if((g|0)>0){f=0;do{g=O+(f<<2)|0;h=k[g>>2]|0;if((h|0)<=(k[B>>2]|0)){if((h|0)<(k[D>>2]|0))k[g>>2]=(k[E>>2]|0)+h}else k[g>>2]=h-(k[E>>2]|0);f=f+1|0}while((f|0)<(k[H>>2]|0))}}}d=d+1|0;if((d|0)>=(x|0)){I=Q;break a}f=k[w>>2]|0;g=k[f>>2]|0;h=k[f+4>>2]|0}_k(f)}else I=Q;while(0);g=k[I>>2]|0;h=g;if(g|0){d=Q+4|0;f=k[d>>2]|0;if((f|0)!=(g|0))k[d>>2]=f+(~((f+-4-h|0)>>>2)<<2);Vl(g)}Vl(G);d=k[R+36>>2]|0;f=d;if(d|0){g=R+40|0;h=k[g>>2]|0;if((h|0)!=(d|0))k[g>>2]=h+(~((h+-4-f|0)>>>2)<<2);Vl(d)}d=k[R+24>>2]|0;f=d;if(d|0){g=R+28|0;h=k[g>>2]|0;if((h|0)!=(d|0))k[g>>2]=h+(~((h+-4-f|0)>>>2)<<2);Vl(d)}d=k[R+12>>2]|0;f=d;if(d|0){g=R+16|0;h=k[g>>2]|0;if((h|0)!=(d|0))k[g>>2]=h+(~((h+-4-f|0)>>>2)<<2);Vl(d)}g=k[R>>2]|0;if(!g){r=S;return 1}d=R+4|0;f=k[d>>2]|0;if((f|0)!=(g|0))k[d>>2]=f+(~((f+-4-g|0)>>>2)<<2);Vl(g);r=S;return 1}function pb(a,b,c,d,e,f){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;f=f|0;var g=0,h=0,i=0,j=0,l=0,m=0,n=0,o=0,p=0,q=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,B=0,C=0,D=0,E=0,F=0,G=0,H=0,I=0,J=0,K=0,L=0,M=0,N=0,O=0,P=0,Q=0;Q=r;r=r+64|0;P=Q+16|0;O=Q;J=a+8|0;k[J>>2]=e;i=a+32|0;d=a+36|0;h=k[d>>2]|0;g=k[i>>2]|0;f=h-g>>2;if(f>>>0>=e>>>0){if(f>>>0>e>>>0?(j=g+(e<<2)|0,(h|0)!=(j|0)):0)k[d>>2]=h+(~((h+-4-j|0)>>>2)<<2)}else wg(i,e-f|0);d=P;f=d+48|0;do{k[d>>2]=0;d=d+4|0}while((d|0)<(f|0));k[O>>2]=0;if(!e){d=0;f=0}else{Of(P,e,O);d=k[P+12>>2]|0;f=k[P+16>>2]|0}k[O>>2]=0;g=P+16|0;h=f-d>>2;if(h>>>0>=e>>>0){if(h>>>0>e>>>0?(l=d+(e<<2)|0,(f|0)!=(l|0)):0)k[g>>2]=f+(~((f+-4-l|0)>>>2)<<2)}else Of(P+12|0,e-h|0,O);d=P+24|0;k[O>>2]=0;f=P+28|0;i=k[f>>2]|0;h=k[d>>2]|0;g=i-h>>2;if(g>>>0>=e>>>0){if(g>>>0>e>>>0?(m=h+(e<<2)|0,(i|0)!=(m|0)):0)k[f>>2]=i+(~((i+-4-m|0)>>>2)<<2)}else Of(d,e-g|0,O);d=P+36|0;k[O>>2]=0;f=P+40|0;i=k[f>>2]|0;h=k[d>>2]|0;g=i-h>>2;if(g>>>0>=e>>>0){if(g>>>0>e>>>0?(n=h+(e<<2)|0,(i|0)!=(n|0)):0)k[f>>2]=i+(~((i+-4-n|0)>>>2)<<2)}else Of(d,e-g|0,O);l=k[P>>2]|0;if((k[J>>2]|0)>0){m=a+16|0;j=a+32|0;n=a+12|0;i=0;do{h=k[l+(i<<2)>>2]|0;d=k[m>>2]|0;do if((h|0)<=(d|0)){d=k[n>>2]|0;f=k[j>>2]|0;g=f+(i<<2)|0;if((h|0)<(d|0)){k[g>>2]=d;g=f;break}else{k[g>>2]=h;g=f;break}}else{g=k[j>>2]|0;k[g+(i<<2)>>2]=d}while(0);i=i+1|0;d=k[J>>2]|0}while((i|0)<(d|0));if((d|0)>0){d=0;do{k[c+(d<<2)>>2]=(k[b+(d<<2)>>2]|0)+(k[g+(d<<2)>>2]|0);d=d+1|0;f=k[J>>2]|0}while((d|0)<(f|0));if((f|0)>0){f=a+20|0;d=0;do{g=c+(d<<2)|0;h=k[g>>2]|0;if((h|0)<=(k[m>>2]|0)){if((h|0)<(k[n>>2]|0))k[g>>2]=(k[f>>2]|0)+h}else k[g>>2]=h-(k[f>>2]|0);d=d+1|0}while((d|0)<(k[J>>2]|0))}}}x=k[a+48>>2]|0;y=k[a+52>>2]|0;I=vj(16)|0;k[I>>2]=0;k[I+4>>2]=0;k[I+8>>2]=0;k[I+12>>2]=0;fi(O,e);z=a+56|0;f=k[z>>2]|0;h=k[f+4>>2]|0;g=k[f>>2]|0;H=h-g|0;A=H>>2;a:do if((H|0)>4){B=x+12|0;C=(e|0)>0;D=a+16|0;E=a+32|0;F=a+12|0;G=a+20|0;H=e<<2;d=1;while(1){if(h-g>>2>>>0<=d>>>0)break;v=k[g+(d<<2)>>2]|0;u=(((v>>>0)%3|0|0)==0?2:-1)+v|0;w=(v|u|0)<0;t=(v|0)<0?v:u;s=1;f=0;g=v;b:while(1){do{if((g|0)<=-1){o=64;break b}p=k[P+(f*12|0)>>2]|0;q=k[B>>2]|0;i=k[q+(g<<2)>>2]|0;if((i|0)>=0){l=k[x>>2]|0;j=(i>>>0)%3|0;m=k[y>>2]|0;o=k[m+(k[l+(((i>>>0)/3|0)*12|0)+(j<<2)>>2]<<2)>>2]|0;h=i+1|0;h=((h|0)%3|0|0)==0?i+-2|0:h;if((h|0)<0)h=-1073741824;else h=k[l+(((h>>>0)/3|0)*12|0)+(((h>>>0)%3|0)<<2)>>2]|0;n=k[m+(h<<2)>>2]|0;h=((j|0)==0?2:-1)+i|0;if((h|0)<0)h=-1073741824;else h=k[l+(((h>>>0)/3|0)*12|0)+(((h>>>0)%3|0)<<2)>>2]|0;h=k[m+(h<<2)>>2]|0;if((o|0)<(d|0)&(n|0)<(d|0)&(h|0)<(d|0)){l=$(o,e)|0;j=$(n,e)|0;i=$(h,e)|0;if(C){h=0;do{k[p+(h<<2)>>2]=(k[c+(h+i<<2)>>2]|0)+(k[c+(h+j<<2)>>2]|0)-(k[c+(h+l<<2)>>2]|0);h=h+1|0}while((h|0)!=(e|0))}f=f+1|0;if((f|0)==4){f=4;o=47;break b}}}do if(s){p=g+1|0;g=((p|0)%3|0|0)==0?g+-2|0:p;if((g|0)>=0){g=k[q+(g<<2)>>2]|0;h=g+1|0;if((g|0)>=0)g=((h|0)%3|0|0)==0?g+-2|0:h}}else{g=(((g>>>0)%3|0|0)==0?2:-1)+g|0;if((g|0)>=0){g=k[q+(g<<2)>>2]|0;if((g|0)>=0)if(!((g>>>0)%3|0)){g=g+2|0;break}else{g=g+-1|0;break}}}while(0);if((g|0)==(v|0)){o=64;break b}}while(!(s&(g|0)<0));if(w){s=0;g=t;continue}g=k[q+(u<<2)>>2]|0;if((g|0)<0){s=0;continue}if(!((g>>>0)%3|0)){s=0;g=g+2|0;continue}else{s=0;g=g+-1|0;continue}}if((o|0)==64)if((f|0)>0)o=47;else{N=$(d,e)|0;o=76}if((o|0)==47){o=0;if(C){Zh(k[O>>2]|0,0,H|0)|0;m=f+-1|0;l=I+(m<<2)|0;m=k[a+60+(m*12|0)>>2]|0;n=k[O>>2]|0;j=0;g=0;do{w=k[l>>2]|0;k[l>>2]=w+1;if(!(k[m+(w>>>5<<2)>>2]&1<<(w&31))){i=k[P+(j*12|0)>>2]|0;h=0;do{w=n+(h<<2)|0;k[w>>2]=(k[w>>2]|0)+(k[i+(h<<2)>>2]|0);h=h+1|0}while((h|0)!=(e|0));g=g+1|0}j=j+1|0}while((j|0)!=(f|0));f=g}else{j=f+-1|0;i=I+(j<<2)|0;j=k[a+60+(j*12|0)>>2]|0;h=0;g=0;l=k[i>>2]|0;do{w=l;l=l+1|0;k[i>>2]=l;g=g+((k[j+(w>>>5<<2)>>2]&1<<(w&31)|0)==0&1)|0;h=h+1|0}while((h|0)!=(f|0));f=g}m=$(d,e)|0;if(f){l=k[O>>2]|0;if(C){g=0;do{w=l+(g<<2)|0;k[w>>2]=(k[w>>2]|0)/(f|0)|0;g=g+1|0}while((g|0)!=(e|0))}n=c+(m<<2)|0;if((k[J>>2]|0)>0){j=0;do{i=k[l+(j<<2)>>2]|0;f=k[D>>2]|0;do if((i|0)<=(f|0)){f=k[F>>2]|0;g=k[E>>2]|0;h=g+(j<<2)|0;if((i|0)<(f|0)){k[h>>2]=f;h=g;break}else{k[h>>2]=i;h=g;break}}else{h=k[E>>2]|0;k[h+(j<<2)>>2]=f}while(0);j=j+1|0;f=k[J>>2]|0}while((j|0)<(f|0));if((f|0)>0){f=0;do{k[n+(f<<2)>>2]=(k[b+(f+m<<2)>>2]|0)+(k[h+(f<<2)>>2]|0);f=f+1|0;g=k[J>>2]|0}while((f|0)<(g|0));if((g|0)>0){f=0;do{g=n+(f<<2)|0;h=k[g>>2]|0;do if((h|0)>(k[D>>2]|0))k[g>>2]=h-(k[G>>2]|0);else{if((h|0)>=(k[F>>2]|0))break;k[g>>2]=(k[G>>2]|0)+h}while(0);f=f+1|0}while((f|0)<(k[J>>2]|0))}}}}else{N=m;o=76}}if((o|0)==76?(0,L=c+(($(d+-1|0,e)|0)<<2)|0,M=c+(N<<2)|0,(k[J>>2]|0)>0):0){j=0;do{i=k[L+(j<<2)>>2]|0;f=k[D>>2]|0;do if((i|0)<=(f|0)){f=k[F>>2]|0;g=k[E>>2]|0;h=g+(j<<2)|0;if((i|0)<(f|0)){k[h>>2]=f;h=g;break}else{k[h>>2]=i;h=g;break}}else{h=k[E>>2]|0;k[h+(j<<2)>>2]=f}while(0);j=j+1|0;f=k[J>>2]|0}while((j|0)<(f|0));if((f|0)>0){f=0;do{k[M+(f<<2)>>2]=(k[b+(f+N<<2)>>2]|0)+(k[h+(f<<2)>>2]|0);f=f+1|0;g=k[J>>2]|0}while((f|0)<(g|0));if((g|0)>0){f=0;do{g=M+(f<<2)|0;h=k[g>>2]|0;if((h|0)<=(k[D>>2]|0)){if((h|0)<(k[F>>2]|0))k[g>>2]=(k[G>>2]|0)+h}else k[g>>2]=h-(k[G>>2]|0);f=f+1|0}while((f|0)<(k[J>>2]|0))}}}d=d+1|0;if((d|0)>=(A|0)){K=O;break a}f=k[z>>2]|0;g=k[f>>2]|0;h=k[f+4>>2]|0}_k(f)}else K=O;while(0);h=k[K>>2]|0;g=h;if(h|0){d=O+4|0;f=k[d>>2]|0;if((f|0)!=(h|0))k[d>>2]=f+(~((f+-4-g|0)>>>2)<<2);Vl(h)}Vl(I);d=k[P+36>>2]|0;f=d;if(d|0){g=P+40|0;h=k[g>>2]|0;if((h|0)!=(d|0))k[g>>2]=h+(~((h+-4-f|0)>>>2)<<2);Vl(d)}d=k[P+24>>2]|0;f=d;if(d|0){g=P+28|0;h=k[g>>2]|0;if((h|0)!=(d|0))k[g>>2]=h+(~((h+-4-f|0)>>>2)<<2);Vl(d)}d=k[P+12>>2]|0;f=d;if(d|0){g=P+16|0;h=k[g>>2]|0;if((h|0)!=(d|0))k[g>>2]=h+(~((h+-4-f|0)>>>2)<<2);Vl(d)}g=k[P>>2]|0;if(!g){r=Q;return 1}d=P+4|0;f=k[d>>2]|0;if((f|0)!=(g|0))k[d>>2]=f+(~((f+-4-g|0)>>>2)<<2);Vl(g);r=Q;return 1}function qb(a){a=a|0;var b=0,c=0,d=0,e=0,f=0,g=0,h=0,i=0,j=0,l=0,m=0,n=0,o=0,p=0,q=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,B=0,C=0,D=0,E=0,F=0,G=0,H=0,I=0,J=0,K=0;J=r;r=r+48|0;H=J+36|0;K=J+24|0;I=J+12|0;D=J;G=a+4|0;d=k[(k[G>>2]|0)+28>>2]|0;F=a+8|0;b=k[F>>2]|0;b=((k[b+4>>2]|0)-(k[b>>2]|0)|0)/12|0;c=d+80|0;d=d+84|0;k[H>>2]=0;k[H+4>>2]=0;k[H+8>>2]=0;g=k[d>>2]|0;f=k[c>>2]|0;e=(g-f|0)/12|0;if(b>>>0<=e>>>0){if(b>>>0>>0?(h=f+(b*12|0)|0,(g|0)!=(h|0)):0)k[d>>2]=g+(~(((g+-12-h|0)>>>0)/12|0)*12|0)}else mf(c,b-e|0,H);z=a+228|0;A=a+232|0;if((k[A>>2]|0)==(k[z>>2]|0)){f=k[F>>2]|0;f=(k[f+28>>2]|0)-(k[f+24>>2]|0)>>2;k[H>>2]=-1;Bh(K,f,H);f=k[G>>2]|0;b=k[f+28>>2]|0;e=k[b+84>>2]|0;d=k[b+80>>2]|0;if((e-d|0)>0){o=I+4|0;p=I+8|0;c=0;n=0;m=b;b=f;g=f;j=e;while(1){k[I>>2]=0;k[I+4>>2]=0;k[I+8>>2]=0;a=n*3|0;if((n|0)<0)e=-1073741824;else e=k[(k[k[F>>2]>>2]|0)+(((a>>>0)/3|0)*12|0)+(((a>>>0)%3|0)<<2)>>2]|0;i=k[K>>2]|0;e=i+(e<<2)|0;f=k[e>>2]|0;if((f|0)==-1){k[e>>2]=c;h=c+1|0;l=c}else{h=c;l=f}k[I>>2]=l;c=a+1|0;if((a|0)<-1)c=-1073741824;else c=k[(k[k[F>>2]>>2]|0)+(((c>>>0)/3|0)*12|0)+(((c>>>0)%3|0)<<2)>>2]|0;e=i+(c<<2)|0;c=k[e>>2]|0;if((c|0)==-1){k[e>>2]=h;e=h+1|0;c=h}else e=h;k[o>>2]=c;c=a+2|0;if((a|0)<-2)c=-1073741824;else c=k[(k[k[F>>2]>>2]|0)+(((c>>>0)/3|0)*12|0)+(((c>>>0)%3|0)<<2)>>2]|0;c=i+(c<<2)|0;f=k[c>>2]|0;if((f|0)==-1){k[c>>2]=e;c=e+1|0}else{c=e;e=f}k[p>>2]=e;h=m+80|0;a=m+84|0;f=(j-d|0)/12|0;e=d;i=n;n=n+1|0;if((i|0)<(f|0)){h=j;f=m}else{b=j;k[H>>2]=0;k[H+4>>2]=0;k[H+8>>2]=0;if(n>>>0<=f>>>0)if(n>>>0>>0?(q=e+(n*12|0)|0,(b|0)!=(q|0)):0){b=b+(~(((b+-12-q|0)>>>0)/12|0)*12|0)|0;k[a>>2]=b;f=m}else{f=m;b=j}else{mf(h,n-f|0,H);g=k[G>>2]|0;d=k[g+28>>2]|0;e=k[h>>2]|0;f=d;b=k[d+84>>2]|0;d=k[d+80>>2]|0}h=b;b=g}k[e+(i*12|0)>>2]=l;k[e+(i*12|0)+4>>2]=k[o>>2];k[e+(i*12|0)+8>>2]=k[p>>2];if((n|0)>=((h-d|0)/12|0|0)){d=K;break}else{m=f;j=h}}}else{c=0;d=K;b=f}k[(k[b+4>>2]|0)+64>>2]=c;d=k[d>>2]|0;e=d;if(d|0){b=K+4|0;c=k[b>>2]|0;if((c|0)!=(d|0))k[b>>2]=c+(~((c+-4-e|0)>>>2)<<2);Vl(d)}r=J;return 1}k[K>>2]=0;E=K+4|0;k[E>>2]=0;k[K+8>>2]=0;b=k[F>>2]|0;fi(I,(((k[b+4>>2]|0)-(k[b>>2]|0)|0)/12|0)*3|0);b=k[F>>2]|0;a:do if(((k[b+28>>2]|0)-(k[b+24>>2]|0)|0)>0){q=a+136|0;s=K+8|0;p=0;b:while(1){f=k[(k[b+24>>2]|0)+(p<<2)>>2]|0;c:do if((f|0)>=0){d:do if((k[(k[q>>2]|0)+(p>>>5<<2)>>2]&1<<(p&31)|0)==0?(w=k[A>>2]|0,x=k[z>>2]|0,y=x,(w|0)!=(x|0)):0){h=(f>>>0)/3|0;a=(f>>>0)%3|0;g=((a|0)==0?2:-1)+f|0;i=(g|0)<0;j=(w-x|0)/116|0;l=b+12|0;m=b+12|0;e=0;e:while(1){o=k[(k[k[y+(e*116|0)+68>>2]>>2]|0)+(h*12|0)+(a<<2)>>2]|0;do if(1<<(o&31)&k[(k[y+(e*116|0)+16>>2]|0)+(o>>>5<<2)>>2]|0){n=k[y+(e*116|0)+32>>2]|0;o=k[n+(f<<2)>>2]|0;if(!i){c=k[(k[l>>2]|0)+(g<<2)>>2]|0;do if((c|0)>=0)if(!((c>>>0)%3|0)){c=c+2|0;break}else{c=c+-1|0;break}while(0);if((c|0)==(f|0))break;else d=c}else d=g;while(1){c=k[n+(d<<2)>>2]|0;if((d|0)<0)break e;if((c|0)!=(o|0)){f=d;break d}c=(((d>>>0)%3|0|0)==0?2:-1)+d|0;do if((c|0)>=0){c=k[(k[m>>2]|0)+(c<<2)>>2]|0;if((c|0)>=0)if(!((c>>>0)%3|0)){c=c+2|0;break}else{c=c+-1|0;break}}while(0);if((c|0)==(f|0))break;else d=c}}while(0);e=e+1|0;if(e>>>0>=j>>>0)break d}while(1)if((c|0)==(o|0))c=o;else{f=d;break}}while(0);c=k[E>>2]|0;k[(k[I>>2]|0)+(f<<2)>>2]=c-(k[K>>2]|0)>>2;k[H>>2]=f;if(c>>>0<(k[s>>2]|0)>>>0){k[c>>2]=f;k[E>>2]=c+4}else{Ig(K,H);b=k[F>>2]|0}if((((f|0)>=0?(u=(((f>>>0)%3|0|0)==0?2:-1)+f|0,(u|0)>=0):0)?(t=k[(k[b+12>>2]|0)+(u<<2)>>2]|0,(t|0)>=0):0)?(v=t+(((t>>>0)%3|0|0)==0?2:-1)|0,(v|0)>-1&(v|0)!=(f|0)):0){g=v;d=f;while(1){if((g|0)<0)break b;b=k[A>>2]|0;c=k[z>>2]|0;e=c;f:do if((b|0)!=(c|0)){c=(b-c|0)/116|0;b=0;while(1){o=k[e+(b*116|0)+32>>2]|0;b=b+1|0;if((k[o+(g<<2)>>2]|0)!=(k[o+(d<<2)>>2]|0))break;if(b>>>0>=c>>>0){B=77;break f}}b=k[E>>2]|0;k[(k[I>>2]|0)+(g<<2)>>2]=b-(k[K>>2]|0)>>2;k[H>>2]=g;if(b>>>0<(k[s>>2]|0)>>>0){k[b>>2]=g;k[E>>2]=b+4}else Ig(K,H)}else B=77;while(0);if((B|0)==77){B=0;o=k[I>>2]|0;k[o+(g<<2)>>2]=k[o+(d<<2)>>2]}b=(((g>>>0)%3|0|0)==0?2:-1)+g|0;if((b|0)<0)break c;b=k[(k[(k[F>>2]|0)+12>>2]|0)+(b<<2)>>2]|0;if((b|0)<0)break c;b=b+(((b>>>0)%3|0|0)==0?2:-1)|0;if((b|0)>-1&(b|0)!=(f|0)){d=g;g=b}else break}}}while(0);p=p+1|0;b=k[F>>2]|0;if((p|0)>=((k[b+28>>2]|0)-(k[b+24>>2]|0)>>2|0))break a}g:while(1){b=k[A>>2]|0;c=k[z>>2]|0;e=c;h:do if((b|0)!=(c|0)){c=(b-c|0)/116|0;b=0;while(1){J=k[e+(b*116|0)+32>>2]|0;b=b+1|0;if((k[J+(g<<2)>>2]|0)!=(k[J+(d<<2)>>2]|0))break;if(b>>>0>=c>>>0)break h}b=k[E>>2]|0;k[(k[I>>2]|0)+(g<<2)>>2]=b-(k[K>>2]|0)>>2;k[H>>2]=g;if(b>>>0<(k[s>>2]|0)>>>0){k[b>>2]=g;k[E>>2]=b+4}else Ig(K,H);d=g;continue g}while(0);J=k[I>>2]|0;k[J+(g<<2)>>2]=k[J+(d<<2)>>2];d=g}}while(0);c=k[G>>2]|0;b=k[c+28>>2]|0;e=k[b+84>>2]|0;d=k[b+80>>2]|0;if((e-d|0)>0){n=D+4|0;o=D+8|0;m=0;i=c;j=c;while(1){k[D>>2]=0;k[D+4>>2]=0;k[D+8>>2]=0;g=(k[I>>2]|0)+(m*3<<2)|0;k[D>>2]=k[g>>2];k[D+4>>2]=k[g+4>>2];k[D+8>>2]=k[g+8>>2];g=b+80|0;h=b+84|0;a=(e-d|0)/12|0;c=d;l=m;m=m+1|0;if((l|0)<(a|0)){g=c;c=i;f=j}else{f=e;k[H>>2]=0;k[H+4>>2]=0;k[H+8>>2]=0;if(m>>>0<=a>>>0)if(m>>>0>>0?(C=c+(m*12|0)|0,(f|0)!=(C|0)):0){e=f+(~(((f+-12-C|0)>>>0)/12|0)*12|0)|0;k[h>>2]=e;f=j}else f=j;else{mf(g,m-a|0,H);f=k[G>>2]|0;d=k[f+28>>2]|0;c=k[g>>2]|0;b=d;e=k[d+84>>2]|0;d=k[d+80>>2]|0}g=c;c=f}k[g+(l*12|0)>>2]=k[D>>2];k[g+(l*12|0)+4>>2]=k[n>>2];k[g+(l*12|0)+8>>2]=k[o>>2];if((m|0)>=((e-d|0)/12|0|0))break;else{i=c;j=f}}}b=k[K>>2]|0;k[(k[c+4>>2]|0)+64>>2]=(k[E>>2]|0)-b>>2;d=k[I>>2]|0;e=d;if(d){b=I+4|0;c=k[b>>2]|0;if((c|0)!=(d|0))k[b>>2]=c+(~((c+-4-e|0)>>>2)<<2);Vl(d);b=k[K>>2]|0}c=b;if(b|0){d=k[E>>2]|0;if((d|0)!=(b|0))k[E>>2]=d+(~((d+-4-c|0)>>>2)<<2);Vl(b)}r=J;return 1}function rb(a){a=a|0;var b=0,c=0,d=0,e=Pa,f=Pa,g=0,h=0,j=0,l=0,m=0,n=0,p=0,q=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,B=0,C=0,D=0,E=0,F=0,G=0,H=0,I=0,J=0,K=0,L=0,M=0,N=0,O=0,P=0,Q=0,R=0,S=0,T=Pa;S=r;r=r+64|0;R=S+28|0;O=S+16|0;J=S+4|0;K=S;Q=a;L=a+64|0;b=k[L>>2]|0;k[R>>2]=0;k[R+4>>2]=0;k[R+8>>2]=0;k[R+12>>2]=0;k[R+16>>2]=Q;M=R+20|0;o[M>>2]=da(1.0);k[R+24>>2]=Q;Pf(R,b);b=k[L>>2]|0;k[O>>2]=0;Q=O+4|0;k[Q>>2]=0;k[O+8>>2]=0;do if(b|0)if(b>>>0>1073741823)$k(O);else{E=b<<2;D=vj(E)|0;k[O>>2]=D;P=D+(b<<2)|0;k[O+8>>2]=P;Zh(D|0,0,E|0)|0;k[Q>>2]=P;break}while(0);k[J>>2]=0;P=J+4|0;k[P>>2]=0;k[J+8>>2]=0;k[K>>2]=0;a:do if((b|0)>0){z=R+16|0;B=R+4|0;C=R+12|0;D=R+8|0;E=J+8|0;A=R+24|0;b=0;y=0;b:while(1){v=k[z>>2]|0;j=k[v+4>>2]|0;v=(k[v+8>>2]|0)-j|0;u=(v|0)>0;if(u){h=j;l=v>>2;g=0;c=0;do{d=k[h+(g<<2)>>2]|0;if(!(i[d+84>>0]|0))d=k[(k[d+68>>2]|0)+(y<<2)>>2]|0;else d=y;c=d<<2^c<<1;g=g+1|0}while((g|0)<(l|0))}else c=0;w=k[B>>2]|0;x=(w|0)==0;c:do if(!x){p=w+-1|0;d=(p&w|0)==0;if(d)t=p&c;else t=(c>>>0)%(w>>>0)|0;c=k[(k[R>>2]|0)+(t<<2)>>2]|0;if((c|0)!=0?(G=k[c>>2]|0,(G|0)!=0):0){s=k[A>>2]|0;q=s+4|0;s=s+8|0;d:do if(d){c=G;while(1){if((k[c+4>>2]&p|0)!=(t|0)){N=41;break c}n=k[c+8>>2]|0;g=k[q>>2]|0;d=(k[s>>2]|0)-g|0;if((d|0)<=0)break d;m=d>>2;l=0;while(1){if((m|0)<=(l|0)){N=35;break b}d=k[g+(l<<2)>>2]|0;if(!(i[d+84>>0]|0)){h=k[d+68>>2]|0;d=k[h+(y<<2)>>2]|0;h=k[h+(n<<2)>>2]|0}else{d=y;h=n}l=l+1|0;if((h|0)!=(d|0))break;if((l|0)>=(m|0)){N=39;break d}}c=k[c>>2]|0;if(!c){N=41;break c}}}else{c=G;while(1){if((((k[c+4>>2]|0)>>>0)%(w>>>0)|0|0)!=(t|0)){N=41;break c}n=k[c+8>>2]|0;g=k[q>>2]|0;d=(k[s>>2]|0)-g|0;if((d|0)<=0)break d;m=d>>2;l=0;while(1){if((m|0)<=(l|0)){N=35;break b}d=k[g+(l<<2)>>2]|0;if(!(i[d+84>>0]|0)){h=k[d+68>>2]|0;d=k[h+(y<<2)>>2]|0;h=k[h+(n<<2)>>2]|0}else{d=y;h=n}l=l+1|0;if((h|0)!=(d|0))break;if((l|0)>=(m|0)){N=39;break d}}c=k[c>>2]|0;if(!c){N=41;break c}}}while(0);if((N|0)==39){N=0;if(!c){N=41;break}}k[(k[O>>2]|0)+(y<<2)>>2]=k[c+12>>2]}else N=41}else N=41;while(0);do if((N|0)==41){N=0;if(u){h=v>>2;g=0;c=0;do{d=k[j+(g<<2)>>2]|0;if(!(i[d+84>>0]|0))d=k[(k[d+68>>2]|0)+(y<<2)>>2]|0;else d=y;c=d<<2^c<<1;g=g+1|0}while((g|0)<(h|0));t=c}else t=0;e:do if(!x){p=w+-1|0;g=(p&w|0)==0;if(g)c=p&t;else c=(t>>>0)%(w>>>0)|0;d=k[(k[R>>2]|0)+(c<<2)>>2]|0;if((d|0)!=0?(H=k[d>>2]|0,(H|0)!=0):0){s=k[A>>2]|0;q=s+4|0;s=s+8|0;if(g){m=H;while(1){if((k[m+4>>2]&p|0)!=(c|0)){N=72;break e}n=k[m+8>>2]|0;g=k[q>>2]|0;d=(k[s>>2]|0)-g|0;if((d|0)<=0){c=y;break e}l=d>>2;j=0;while(1){if((l|0)<=(j|0)){N=68;break b}d=k[g+(j<<2)>>2]|0;if(!(i[d+84>>0]|0)){h=k[d+68>>2]|0;d=k[h+(y<<2)>>2]|0;h=k[h+(n<<2)>>2]|0}else{d=y;h=n}j=j+1|0;if((h|0)!=(d|0))break;if((j|0)>=(l|0)){c=y;break e}}m=k[m>>2]|0;if(!m){N=72;break}}}else{m=H;while(1){if((((k[m+4>>2]|0)>>>0)%(w>>>0)|0|0)!=(c|0)){N=72;break e}n=k[m+8>>2]|0;g=k[q>>2]|0;d=(k[s>>2]|0)-g|0;if((d|0)<=0){c=y;break e}l=d>>2;j=0;while(1){if((l|0)<=(j|0)){N=68;break b}d=k[g+(j<<2)>>2]|0;if(!(i[d+84>>0]|0)){h=k[d+68>>2]|0;d=k[h+(y<<2)>>2]|0;h=k[h+(n<<2)>>2]|0}else{d=y;h=n}j=j+1|0;if((h|0)!=(d|0))break;if((j|0)>=(l|0)){c=y;break e}}m=k[m>>2]|0;if(!m){N=72;break}}}}else N=72}else{c=0;N=72}while(0);if((N|0)==72){N=0;h=vj(16)|0;k[h+8>>2]=y;k[h+12>>2]=b;k[h+4>>2]=t;k[h>>2]=0;e=da(((k[C>>2]|0)+1|0)>>>0);T=da(w>>>0);f=da(o[M>>2]);do if(x|e>da(T*f)){c=(w>>>0>2&(w+-1&w|0)==0&1|w<<1)^1;d=~~da(_(da(e/f)))>>>0;Pf(R,c>>>0>>0?d:c);c=k[B>>2]|0;d=c+-1|0;if(!(d&c)){g=c;c=d&t;break}else{g=c;c=(t>>>0)%(c>>>0)|0;break}}else g=w;while(0);c=(k[R>>2]|0)+(c<<2)|0;d=k[c>>2]|0;if(!d){k[h>>2]=k[D>>2];k[D>>2]=h;k[c>>2]=D;c=k[h>>2]|0;if(c|0){c=k[c+4>>2]|0;d=g+-1|0;if(!(d&g))c=c&d;else c=(c>>>0)%(g>>>0)|0;k[(k[R>>2]|0)+(c<<2)>>2]=h}}else{k[h>>2]=k[d>>2];k[d>>2]=h}k[C>>2]=(k[C>>2]|0)+1;c=k[K>>2]|0}d=b+1|0;k[(k[O>>2]|0)+(c<<2)>>2]=b;b=k[P>>2]|0;if((b|0)==(k[E>>2]|0)){Ig(J,K);b=d;break}else{k[b>>2]=k[K>>2];k[P>>2]=b+4;b=d;break}}while(0);y=(k[K>>2]|0)+1|0;k[K>>2]=y;c=k[L>>2]|0;if((y|0)>=(c|0)){F=b;I=c;break a}}if((N|0)==35)Ka(12995,12957,63,12985);else if((N|0)==68)Ka(12995,12957,63,12985)}else{F=0;I=0}while(0);if((F|0)!=(I|0)){Wa[k[(k[a>>2]|0)+20>>2]&7](a,O,J);k[L>>2]=F}b=k[J>>2]|0;c=b;if(b|0){d=k[P>>2]|0;if((d|0)!=(b|0))k[P>>2]=d+(~((d+-4-c|0)>>>2)<<2);Vl(b)}b=k[O>>2]|0;c=b;if(b|0){d=k[Q>>2]|0;if((d|0)!=(b|0))k[Q>>2]=d+(~((d+-4-c|0)>>>2)<<2);Vl(b)}b=k[R+8>>2]|0;if(b|0)do{Q=b;b=k[b>>2]|0;Vl(Q)}while((b|0)!=0);b=k[R>>2]|0;k[R>>2]=0;if(!b){r=S;return}Vl(b);r=S;return}function sb(a){a=a|0;var b=0,c=0,d=0,e=0,f=0,g=0,h=0,i=0,j=0,l=0,m=0,n=0,o=0,p=0,q=0;if(!a)return;c=a+-8|0;g=k[4402]|0;if(c>>>0>>0)Ba();a=k[a+-4>>2]|0;b=a&3;if((b|0)==1)Ba();d=a&-8;n=c+d|0;do if(!(a&1)){a=k[c>>2]|0;if(!b)return;j=c+(0-a)|0;i=a+d|0;if(j>>>0>>0)Ba();if((j|0)==(k[4403]|0)){a=n+4|0;b=k[a>>2]|0;if((b&3|0)!=3){q=j;e=i;break}k[4400]=i;k[a>>2]=b&-2;k[j+4>>2]=i|1;k[j+i>>2]=i;return}d=a>>>3;if(a>>>0<256){b=k[j+8>>2]|0;c=k[j+12>>2]|0;a=17632+(d<<1<<2)|0;if((b|0)!=(a|0)){if(b>>>0>>0)Ba();if((k[b+12>>2]|0)!=(j|0))Ba()}if((c|0)==(b|0)){k[4398]=k[4398]&~(1<>>0>>0)Ba();a=c+8|0;if((k[a>>2]|0)==(j|0))f=a;else Ba()}else f=c+8|0;k[b+12>>2]=c;k[f>>2]=b;q=j;e=i;break}f=k[j+24>>2]|0;c=k[j+12>>2]|0;do if((c|0)==(j|0)){c=j+16|0;b=c+4|0;a=k[b>>2]|0;if(!a){a=k[c>>2]|0;if(!a){h=0;break}else b=c}while(1){c=a+20|0;d=k[c>>2]|0;if(d|0){a=d;b=c;continue}c=a+16|0;d=k[c>>2]|0;if(!d)break;else{a=d;b=c}}if(b>>>0>>0)Ba();else{k[b>>2]=0;h=a;break}}else{d=k[j+8>>2]|0;if(d>>>0>>0)Ba();a=d+12|0;if((k[a>>2]|0)!=(j|0))Ba();b=c+8|0;if((k[b>>2]|0)==(j|0)){k[a>>2]=c;k[b>>2]=d;h=c;break}else Ba()}while(0);if(f){a=k[j+28>>2]|0;b=17896+(a<<2)|0;if((j|0)==(k[b>>2]|0)){k[b>>2]=h;if(!h){k[4399]=k[4399]&~(1<>>0<(k[4402]|0)>>>0)Ba();a=f+16|0;if((k[a>>2]|0)==(j|0))k[a>>2]=h;else k[f+20>>2]=h;if(!h){q=j;e=i;break}}c=k[4402]|0;if(h>>>0>>0)Ba();k[h+24>>2]=f;a=j+16|0;b=k[a>>2]|0;do if(b|0)if(b>>>0>>0)Ba();else{k[h+16>>2]=b;k[b+24>>2]=h;break}while(0);a=k[a+4>>2]|0;if(a)if(a>>>0<(k[4402]|0)>>>0)Ba();else{k[h+20>>2]=a;k[a+24>>2]=h;q=j;e=i;break}else{q=j;e=i}}else{q=j;e=i}}else{q=c;e=d}while(0);if(q>>>0>=n>>>0)Ba();a=n+4|0;b=k[a>>2]|0;if(!(b&1))Ba();if(!(b&2)){if((n|0)==(k[4404]|0)){p=(k[4401]|0)+e|0;k[4401]=p;k[4404]=q;k[q+4>>2]=p|1;if((q|0)!=(k[4403]|0))return;k[4403]=0;k[4400]=0;return}if((n|0)==(k[4403]|0)){p=(k[4400]|0)+e|0;k[4400]=p;k[4403]=q;k[q+4>>2]=p|1;k[q+p>>2]=p;return}e=(b&-8)+e|0;d=b>>>3;do if(b>>>0>=256){f=k[n+24>>2]|0;a=k[n+12>>2]|0;do if((a|0)==(n|0)){c=n+16|0;b=c+4|0;a=k[b>>2]|0;if(!a){a=k[c>>2]|0;if(!a){m=0;break}else b=c}while(1){c=a+20|0;d=k[c>>2]|0;if(d|0){a=d;b=c;continue}c=a+16|0;d=k[c>>2]|0;if(!d)break;else{a=d;b=c}}if(b>>>0<(k[4402]|0)>>>0)Ba();else{k[b>>2]=0;m=a;break}}else{b=k[n+8>>2]|0;if(b>>>0<(k[4402]|0)>>>0)Ba();c=b+12|0;if((k[c>>2]|0)!=(n|0))Ba();d=a+8|0;if((k[d>>2]|0)==(n|0)){k[c>>2]=a;k[d>>2]=b;m=a;break}else Ba()}while(0);if(f|0){a=k[n+28>>2]|0;b=17896+(a<<2)|0;if((n|0)==(k[b>>2]|0)){k[b>>2]=m;if(!m){k[4399]=k[4399]&~(1<>>0<(k[4402]|0)>>>0)Ba();a=f+16|0;if((k[a>>2]|0)==(n|0))k[a>>2]=m;else k[f+20>>2]=m;if(!m)break}c=k[4402]|0;if(m>>>0>>0)Ba();k[m+24>>2]=f;a=n+16|0;b=k[a>>2]|0;do if(b|0)if(b>>>0>>0)Ba();else{k[m+16>>2]=b;k[b+24>>2]=m;break}while(0);a=k[a+4>>2]|0;if(a|0)if(a>>>0<(k[4402]|0)>>>0)Ba();else{k[m+20>>2]=a;k[a+24>>2]=m;break}}}else{b=k[n+8>>2]|0;c=k[n+12>>2]|0;a=17632+(d<<1<<2)|0;if((b|0)!=(a|0)){if(b>>>0<(k[4402]|0)>>>0)Ba();if((k[b+12>>2]|0)!=(n|0))Ba()}if((c|0)==(b|0)){k[4398]=k[4398]&~(1<>>0<(k[4402]|0)>>>0)Ba();a=c+8|0;if((k[a>>2]|0)==(n|0))l=a;else Ba()}else l=c+8|0;k[b+12>>2]=c;k[l>>2]=b}while(0);k[q+4>>2]=e|1;k[q+e>>2]=e;if((q|0)==(k[4403]|0)){k[4400]=e;return}}else{k[a>>2]=b&-2;k[q+4>>2]=e|1;k[q+e>>2]=e}a=e>>>3;if(e>>>0<256){c=17632+(a<<1<<2)|0;b=k[4398]|0;a=1<>2]|0;if(b>>>0<(k[4402]|0)>>>0)Ba();else{o=b;p=a}}else{k[4398]=b|a;o=c;p=c+8|0}k[p>>2]=q;k[o+12>>2]=q;k[q+8>>2]=o;k[q+12>>2]=c;return}a=e>>>8;if(a)if(e>>>0>16777215)a=31;else{o=(a+1048320|0)>>>16&8;p=a<>>16&4;p=p<>>16&2;a=14-(n|o|a)+(p<>>15)|0;a=e>>>(a+7|0)&1|a<<1}else a=0;d=17896+(a<<2)|0;k[q+28>>2]=a;k[q+20>>2]=0;k[q+16>>2]=0;b=k[4399]|0;c=1<>>1)|0);d=k[d>>2]|0;while(1){if((k[d+4>>2]&-8|0)==(e|0)){a=130;break}c=d+16+(b>>>31<<2)|0;a=k[c>>2]|0;if(!a){a=127;break}else{b=b<<1;d=a}}if((a|0)==127)if(c>>>0<(k[4402]|0)>>>0)Ba();else{k[c>>2]=q;k[q+24>>2]=d;k[q+12>>2]=q;k[q+8>>2]=q;break}else if((a|0)==130){a=d+8|0;b=k[a>>2]|0;p=k[4402]|0;if(b>>>0>=p>>>0&d>>>0>=p>>>0){k[b+12>>2]=q;k[a>>2]=q;k[q+8>>2]=b;k[q+12>>2]=d;k[q+24>>2]=0;break}else Ba()}}else{k[4399]=b|c;k[d>>2]=q;k[q+24>>2]=d;k[q+12>>2]=q;k[q+8>>2]=q}while(0);q=(k[4406]|0)+-1|0;k[4406]=q;if(!q)a=18048;else return;while(1){a=k[a>>2]|0;if(!a)break;else a=a+8|0}k[4406]=-1;return}function tb(a,b,c,d,e,f){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;f=f|0;var g=0,h=0,i=0,j=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,B=0,C=0,D=0,E=0,F=0,G=0,H=0,I=0,J=0,K=0,L=0;L=a+8|0;k[L>>2]=e;do if(d|0){f=k[b>>2]|0;l=a+16|0;k[l>>2]=f;j=a+12|0;k[j>>2]=f;if((d|0)>1){i=1;h=f;while(1){g=k[b+(i<<2)>>2]|0;if((g|0)>=(h|0))if((g|0)>(f|0)){k[l>>2]=g;f=g;g=h}else g=h;else k[j>>2]=g;i=i+1|0;if((i|0)==(d|0))break;else h=g}}else g=f;F=1-g+f|0;k[a+20>>2]=F;f=(F|0)/2|0;g=a+24|0;k[g>>2]=f;k[a+28>>2]=0-f;if(!(F&1))k[g>>2]=f+-1;f=a+32|0;g=a+36|0;j=k[g>>2]|0;h=k[f>>2]|0;i=j-h>>2;if(i>>>0>>0){wg(f,e-i|0);break}if(i>>>0>e>>>0?(m=h+(e<<2)|0,(j|0)!=(m|0)):0)k[g>>2]=j+(~((j+-4-m|0)>>>2)<<2)}while(0);s=k[a+48>>2]|0;t=k[a+52>>2]|0;u=e>>>0>1073741823?-1:e<<2;E=Sl(u)|0;Zh(E|0,0,u|0)|0;F=Sl(u)|0;Zh(F|0,0,u|0)|0;u=a+56|0;i=k[u>>2]|0;h=k[i+4>>2]|0;g=k[i>>2]|0;f=h-g|0;a:do if((f|0)>4){v=(e|0)>0;w=a+16|0;x=a+32|0;y=a+12|0;z=a+28|0;A=a+20|0;B=a+24|0;C=s+12|0;D=e<<2;q=f>>2;f=i;while(1){r=q+-1|0;if(h-g>>2>>>0<=r>>>0)break;p=k[g+(r<<2)>>2]|0;if(v)Zh(E|0,0,D|0)|0;if((p|0)>-1){o=k[C>>2]|0;m=0;n=p;while(1){g=k[o+(n<<2)>>2]|0;if((g|0)>=0){i=k[s>>2]|0;h=(g>>>0)%3|0;l=k[t>>2]|0;d=k[l+(k[i+(((g>>>0)/3|0)*12|0)+(h<<2)>>2]<<2)>>2]|0;f=g+1|0;f=((f|0)%3|0|0)==0?g+-2|0:f;if((f|0)<0)f=-1073741824;else f=k[i+(((f>>>0)/3|0)*12|0)+(((f>>>0)%3|0)<<2)>>2]|0;j=k[l+(f<<2)>>2]|0;f=((h|0)==0?2:-1)+g|0;if((f|0)<0)f=-1073741824;else f=k[i+(((f>>>0)/3|0)*12|0)+(((f>>>0)%3|0)<<2)>>2]|0;f=k[l+(f<<2)>>2]|0;if((d|0)<(r|0)&(j|0)<(r|0)&(f|0)<(r|0)){i=$(d,e)|0;h=$(j,e)|0;g=$(f,e)|0;if(v){f=0;do{k[F+(f<<2)>>2]=(k[b+(f+g<<2)>>2]|0)+(k[b+(f+h<<2)>>2]|0)-(k[b+(f+i<<2)>>2]|0);f=f+1|0}while((f|0)!=(e|0));if(v){f=0;do{d=E+(f<<2)|0;k[d>>2]=(k[d>>2]|0)+(k[F+(f<<2)>>2]|0);f=f+1|0}while((f|0)!=(e|0))}}g=m+1|0}else g=m}else g=m;f=(((n>>>0)%3|0|0)==0?2:-1)+n|0;do if((f|0)>=0){f=k[o+(f<<2)>>2]|0;if((f|0)>=0)if(!((f>>>0)%3|0)){f=f+2|0;break}else{f=f+-1|0;break}}while(0);n=(f|0)==(p|0)?-1073741824:f;if((n|0)<=-1)break;else m=g}d=$(r,e)|0;if(g){if(v){f=0;do{p=E+(f<<2)|0;k[p>>2]=(k[p>>2]|0)/(g|0)|0;f=f+1|0}while((f|0)!=(e|0))}l=b+(d<<2)|0;if((k[L>>2]|0)>0){j=0;do{i=k[E+(j<<2)>>2]|0;f=k[w>>2]|0;do if((i|0)<=(f|0)){f=k[y>>2]|0;g=k[x>>2]|0;h=g+(j<<2)|0;if((i|0)<(f|0)){k[h>>2]=f;h=g;break}else{k[h>>2]=i;h=g;break}}else{h=k[x>>2]|0;k[h+(j<<2)>>2]=f}while(0);j=j+1|0;f=k[L>>2]|0}while((j|0)<(f|0));if((f|0)>0){f=0;do{k[c+(f+d<<2)>>2]=(k[l+(f<<2)>>2]|0)-(k[h+(f<<2)>>2]|0);f=f+1|0;g=k[L>>2]|0}while((f|0)<(g|0));if((g|0)>0){f=0;do{g=c+(f+d<<2)|0;h=k[g>>2]|0;if((h|0)>=(k[z>>2]|0)){if((h|0)>(k[B>>2]|0))k[g>>2]=h-(k[A>>2]|0)}else k[g>>2]=(k[A>>2]|0)+h;f=f+1|0}while((f|0)<(k[L>>2]|0))}}}}else{H=d;J=46}}else{H=$(r,e)|0;J=46}if((J|0)==46?(J=0,G=b+(H<<2)|0,I=b+(($(q+-2|0,e)|0)<<2)|0,(k[L>>2]|0)>0):0){j=0;do{i=k[I+(j<<2)>>2]|0;f=k[w>>2]|0;do if((i|0)<=(f|0)){f=k[y>>2]|0;g=k[x>>2]|0;h=g+(j<<2)|0;if((i|0)<(f|0)){k[h>>2]=f;h=g;break}else{k[h>>2]=i;h=g;break}}else{h=k[x>>2]|0;k[h+(j<<2)>>2]=f}while(0);j=j+1|0;f=k[L>>2]|0}while((j|0)<(f|0));if((f|0)>0){f=0;do{k[c+(f+H<<2)>>2]=(k[G+(f<<2)>>2]|0)-(k[h+(f<<2)>>2]|0);f=f+1|0;g=k[L>>2]|0}while((f|0)<(g|0));if((g|0)>0){f=0;do{g=c+(f+H<<2)|0;h=k[g>>2]|0;if((h|0)>=(k[z>>2]|0)){if((h|0)>(k[B>>2]|0))k[g>>2]=h-(k[A>>2]|0)}else k[g>>2]=(k[A>>2]|0)+h;f=f+1|0}while((f|0)<(k[L>>2]|0))}}}if((r|0)<=1){K=E;break a}f=k[u>>2]|0;q=r;g=k[f>>2]|0;h=k[f+4>>2]|0}_k(f)}else K=E;while(0);if((e|0)>0)Zh(E|0,0,e<<2|0)|0;if((k[L>>2]|0)<=0){Tl(F);Tl(E);return 1}l=a+16|0;d=a+32|0;m=a+12|0;j=0;do{i=k[K+(j<<2)>>2]|0;f=k[l>>2]|0;do if((i|0)<=(f|0)){f=k[m>>2]|0;g=k[d>>2]|0;h=g+(j<<2)|0;if((i|0)<(f|0)){k[h>>2]=f;h=g;break}else{k[h>>2]=i;h=g;break}}else{h=k[d>>2]|0;k[h+(j<<2)>>2]=f}while(0);j=j+1|0;f=k[L>>2]|0}while((j|0)<(f|0));if((f|0)>0)f=0;else{Tl(F);Tl(E);return 1}do{k[c+(f<<2)>>2]=(k[b+(f<<2)>>2]|0)-(k[h+(f<<2)>>2]|0);f=f+1|0;g=k[L>>2]|0}while((f|0)<(g|0));if((g|0)<=0){Tl(F);Tl(E);return 1}j=a+28|0;l=a+20|0;g=a+24|0;f=0;do{h=c+(f<<2)|0;i=k[h>>2]|0;if((i|0)>=(k[j>>2]|0)){if((i|0)>(k[g>>2]|0))k[h>>2]=i-(k[l>>2]|0)}else k[h>>2]=(k[l>>2]|0)+i;f=f+1|0}while((f|0)<(k[L>>2]|0));Tl(F);Tl(E);return 1}function ub(a,b,c,d,e,f){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;f=f|0;var g=0,h=0,i=0,j=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,B=0,C=0,D=0,E=0,F=0,G=0,H=0,I=0,J=0,K=0,L=0,M=0,N=0;N=a+8|0;k[N>>2]=e;do if(d|0){f=k[b>>2]|0;l=a+16|0;k[l>>2]=f;j=a+12|0;k[j>>2]=f;if((d|0)>1){i=1;h=f;while(1){g=k[b+(i<<2)>>2]|0;if((g|0)>=(h|0))if((g|0)>(f|0)){k[l>>2]=g;f=g;g=h}else g=h;else k[j>>2]=g;i=i+1|0;if((i|0)==(d|0))break;else h=g}}else g=f;D=1-g+f|0;k[a+20>>2]=D;f=(D|0)/2|0;g=a+24|0;k[g>>2]=f;k[a+28>>2]=0-f;if(!(D&1))k[g>>2]=f+-1;f=a+32|0;g=a+36|0;j=k[g>>2]|0;h=k[f>>2]|0;i=j-h>>2;if(i>>>0>>0){wg(f,e-i|0);break}if(i>>>0>e>>>0?(m=h+(e<<2)|0,(j|0)!=(m|0)):0)k[g>>2]=j+(~((j+-4-m|0)>>>2)<<2)}while(0);p=k[a+48>>2]|0;q=k[a+52>>2]|0;r=e>>>0>1073741823?-1:e<<2;C=Sl(r)|0;Zh(C|0,0,r|0)|0;D=Sl(r)|0;Zh(D|0,0,r|0)|0;r=a+56|0;i=k[r>>2]|0;h=k[i+4>>2]|0;g=k[i>>2]|0;f=h-g|0;a:do if((f|0)>4){s=(e|0)>0;t=a+16|0;u=a+32|0;v=a+12|0;w=a+28|0;x=a+20|0;y=a+24|0;z=p+64|0;A=p+28|0;B=e<<2;n=f>>2;f=i;while(1){o=n+-1|0;if(h-g>>2>>>0<=o>>>0)break;m=k[g+(o<<2)>>2]|0;if(s)Zh(C|0,0,B|0)|0;if((m|0)>-1){d=k[p>>2]|0;j=0;l=m;do{if(((k[d+(l>>>5<<2)>>2]&1<<(l&31)|0)==0?(E=k[(k[(k[z>>2]|0)+12>>2]|0)+(l<<2)>>2]|0,(E|0)>=0):0)?(H=k[A>>2]|0,i=k[q>>2]|0,F=k[i+(k[H+(E<<2)>>2]<<2)>>2]|0,G=E+1|0,G=k[i+(k[H+((((G|0)%3|0|0)==0?E+-2|0:G)<<2)>>2]<<2)>>2]|0,H=k[i+(k[H+((((E>>>0)%3|0|0)==0?2:-1)+E<<2)>>2]<<2)>>2]|0,(F|0)<(o|0)&(G|0)<(o|0)&(H|0)<(o|0)):0){g=$(F,e)|0;h=$(G,e)|0;i=$(H,e)|0;if(s){f=0;do{k[D+(f<<2)>>2]=(k[b+(f+i<<2)>>2]|0)+(k[b+(f+h<<2)>>2]|0)-(k[b+(f+g<<2)>>2]|0);f=f+1|0}while((f|0)!=(e|0));if(s){f=0;do{i=C+(f<<2)|0;k[i>>2]=(k[i>>2]|0)+(k[D+(f<<2)>>2]|0);f=f+1|0}while((f|0)!=(e|0))}}j=j+1|0}f=(((l>>>0)%3|0|0)==0?2:-1)+l|0;do if(!(k[d+(f>>>5<<2)>>2]&1<<(f&31))){if((f|0)>=0){f=k[(k[(k[z>>2]|0)+12>>2]|0)+(f<<2)>>2]|0;if((f|0)>=0)if(!((f>>>0)%3|0)){f=f+2|0;break}else{f=f+-1|0;break}}}else f=-1073741824;while(0);l=(f|0)==(m|0)?-1073741824:f}while((l|0)>-1);d=$(o,e)|0;if(j){if(s){f=0;do{m=C+(f<<2)|0;k[m>>2]=(k[m>>2]|0)/(j|0)|0;f=f+1|0}while((f|0)!=(e|0))}l=b+(d<<2)|0;if((k[N>>2]|0)>0){j=0;do{i=k[C+(j<<2)>>2]|0;f=k[t>>2]|0;do if((i|0)<=(f|0)){f=k[v>>2]|0;g=k[u>>2]|0;h=g+(j<<2)|0;if((i|0)<(f|0)){k[h>>2]=f;h=g;break}else{k[h>>2]=i;h=g;break}}else{h=k[u>>2]|0;k[h+(j<<2)>>2]=f}while(0);j=j+1|0;f=k[N>>2]|0}while((j|0)<(f|0));if((f|0)>0){f=0;do{k[c+(f+d<<2)>>2]=(k[l+(f<<2)>>2]|0)-(k[h+(f<<2)>>2]|0);f=f+1|0;g=k[N>>2]|0}while((f|0)<(g|0));if((g|0)>0){f=0;do{g=c+(f+d<<2)|0;h=k[g>>2]|0;if((h|0)>=(k[w>>2]|0)){if((h|0)>(k[y>>2]|0))k[g>>2]=h-(k[x>>2]|0)}else k[g>>2]=(k[x>>2]|0)+h;f=f+1|0}while((f|0)<(k[N>>2]|0))}}}}else{J=d;L=44}}else{J=$(o,e)|0;L=44}if((L|0)==44?(L=0,I=b+(J<<2)|0,K=b+(($(n+-2|0,e)|0)<<2)|0,(k[N>>2]|0)>0):0){j=0;do{i=k[K+(j<<2)>>2]|0;f=k[t>>2]|0;do if((i|0)<=(f|0)){f=k[v>>2]|0;g=k[u>>2]|0;h=g+(j<<2)|0;if((i|0)<(f|0)){k[h>>2]=f;h=g;break}else{k[h>>2]=i;h=g;break}}else{h=k[u>>2]|0;k[h+(j<<2)>>2]=f}while(0);j=j+1|0;f=k[N>>2]|0}while((j|0)<(f|0));if((f|0)>0){f=0;do{k[c+(f+J<<2)>>2]=(k[I+(f<<2)>>2]|0)-(k[h+(f<<2)>>2]|0);f=f+1|0;g=k[N>>2]|0}while((f|0)<(g|0));if((g|0)>0){f=0;do{g=c+(f+J<<2)|0;h=k[g>>2]|0;if((h|0)>=(k[w>>2]|0)){if((h|0)>(k[y>>2]|0))k[g>>2]=h-(k[x>>2]|0)}else k[g>>2]=(k[x>>2]|0)+h;f=f+1|0}while((f|0)<(k[N>>2]|0))}}}if((o|0)<=1){M=C;break a}f=k[r>>2]|0;n=o;g=k[f>>2]|0;h=k[f+4>>2]|0}_k(f)}else M=C;while(0);if((e|0)>0)Zh(C|0,0,e<<2|0)|0;if((k[N>>2]|0)<=0){Tl(D);Tl(C);return 1}l=a+16|0;d=a+32|0;m=a+12|0;j=0;do{i=k[M+(j<<2)>>2]|0;f=k[l>>2]|0;do if((i|0)<=(f|0)){f=k[m>>2]|0;g=k[d>>2]|0;h=g+(j<<2)|0;if((i|0)<(f|0)){k[h>>2]=f;h=g;break}else{k[h>>2]=i;h=g;break}}else{h=k[d>>2]|0;k[h+(j<<2)>>2]=f}while(0);j=j+1|0;f=k[N>>2]|0}while((j|0)<(f|0));if((f|0)>0)f=0;else{Tl(D);Tl(C);return 1}do{k[c+(f<<2)>>2]=(k[b+(f<<2)>>2]|0)-(k[h+(f<<2)>>2]|0);f=f+1|0;g=k[N>>2]|0}while((f|0)<(g|0));if((g|0)<=0){Tl(D);Tl(C);return 1}j=a+28|0;l=a+20|0;g=a+24|0;f=0;do{h=c+(f<<2)|0;i=k[h>>2]|0;if((i|0)>=(k[j>>2]|0)){if((i|0)>(k[g>>2]|0))k[h>>2]=i-(k[l>>2]|0)}else k[h>>2]=(k[l>>2]|0)+i;f=f+1|0}while((f|0)<(k[N>>2]|0));Tl(D);Tl(C);return 1}function vb(a,b,c,d,e,f){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;f=f|0;var g=0,h=0,i=0,j=0,l=0,m=0,n=0,o=0,p=0,q=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,B=0,C=0,D=0,E=0,F=0,G=0,H=0,I=0,J=0,K=0,L=0;L=r;r=r+64|0;K=L+16|0;G=L;D=a+8|0;k[D>>2]=e;d=K;f=d+48|0;do{k[d>>2]=0;d=d+4|0}while((d|0)<(f|0));k[G>>2]=0;if(!e){d=0;f=0}else{Of(K,e,G);d=k[K+12>>2]|0;f=k[K+16>>2]|0}k[G>>2]=0;g=K+16|0;h=f-d>>2;if(h>>>0>=e>>>0){if(h>>>0>e>>>0?(i=d+(e<<2)|0,(f|0)!=(i|0)):0)k[g>>2]=f+(~((f+-4-i|0)>>>2)<<2)}else Of(K+12|0,e-h|0,G);d=K+24|0;k[G>>2]=0;f=K+28|0;i=k[f>>2]|0;h=k[d>>2]|0;g=i-h>>2;if(g>>>0>=e>>>0){if(g>>>0>e>>>0?(j=h+(e<<2)|0,(i|0)!=(j|0)):0)k[f>>2]=i+(~((i+-4-j|0)>>>2)<<2)}else Of(d,e-g|0,G);d=K+36|0;k[G>>2]=0;f=K+40|0;i=k[f>>2]|0;h=k[d>>2]|0;g=i-h>>2;if(g>>>0>=e>>>0){if(g>>>0>e>>>0?(l=h+(e<<2)|0,(i|0)!=(l|0)):0)k[f>>2]=i+(~((i+-4-l|0)>>>2)<<2)}else Of(d,e-g|0,G);dg(D,k[K>>2]|0,b,c,0);v=k[a+24>>2]|0;B=k[a+28>>2]|0;C=vj(16)|0;k[C>>2]=0;k[C+4>>2]=0;k[C+8>>2]=0;k[C+12>>2]=0;fi(G,e);z=a+32|0;g=k[z>>2]|0;h=k[g+4>>2]|0;f=k[g>>2]|0;A=h-f|0;y=A>>2;a:do if((A|0)>4){u=v+64|0;w=v+28|0;x=(e|0)>0;A=e<<2;d=1;while(1){if(h-f>>2>>>0<=d>>>0)break;p=k[f+(d<<2)>>2]|0;o=p+((p|0)<0?0:((p>>>0)%3|0|0)==0?2:-1)|0;q=o>>>5;s=1<<(o&31);t=(o|0)<0;n=1;f=0;g=p;b:while(1){do{if((g|0)<=-1){o=41;break b}i=k[K+(f*12|0)>>2]|0;if(((k[(k[v>>2]|0)+(g>>>5<<2)>>2]&1<<(g&31)|0)==0?(F=k[(k[(k[u>>2]|0)+12>>2]|0)+(g<<2)>>2]|0,(F|0)>=0):0)?(J=k[w>>2]|0,m=k[B>>2]|0,H=k[m+(k[J+(F<<2)>>2]<<2)>>2]|0,I=F+1|0,I=k[m+(k[J+((((I|0)%3|0|0)==0?F+-2|0:I)<<2)>>2]<<2)>>2]|0,J=k[m+(k[J+((((F>>>0)%3|0|0)==0?2:-1)+F<<2)>>2]<<2)>>2]|0,(H|0)<(d|0)&(I|0)<(d|0)&(J|0)<(d|0)):0){j=$(H,e)|0;l=$(I,e)|0;m=$(J,e)|0;if(x){h=0;do{k[i+(h<<2)>>2]=(k[c+(h+m<<2)>>2]|0)+(k[c+(h+l<<2)>>2]|0)-(k[c+(h+j<<2)>>2]|0);h=h+1|0}while((h|0)!=(e|0))}f=f+1|0;if((f|0)==4){f=4;o=22;break b}}do if(n){h=g+1|0;g=((h|0)%3|0|0)==0?g+-2|0:h;h=k[v>>2]|0;if(!(k[h+(g>>>5<<2)>>2]&1<<(g&31))){if((g|0)>=0){g=k[(k[(k[u>>2]|0)+12>>2]|0)+(g<<2)>>2]|0;i=g+1|0;if((g|0)>=0)g=((i|0)%3|0|0)==0?g+-2|0:i}}else g=-1073741824}else{g=(((g>>>0)%3|0|0)==0?2:-1)+g|0;h=k[v>>2]|0;if(!(k[h+(g>>>5<<2)>>2]&1<<(g&31))){if((g|0)>=0){g=k[(k[(k[u>>2]|0)+12>>2]|0)+(g<<2)>>2]|0;if((g|0)>=0)if(!((g>>>0)%3|0)){g=g+2|0;break}else{g=g+-1|0;break}}}else g=-1073741824}while(0);if((g|0)==(p|0)){o=41;break b}}while(!(n&(g|0)<0));g=(s&k[h+(q<<2)>>2]|0)!=0;if(g|t){n=0;g=g?-1073741824:o;continue}g=k[(k[(k[u>>2]|0)+12>>2]|0)+(o<<2)>>2]|0;if((g|0)<0){n=0;continue}if(!((g>>>0)%3|0)){n=0;g=g+2|0;continue}else{n=0;g=g+-1|0;continue}}if((o|0)==41)if((f|0)>0)o=22;else{f=$(d,e)|0;o=53}if((o|0)==22){o=0;if(x){Zh(k[G>>2]|0,0,A|0)|0;m=f+-1|0;l=C+(m<<2)|0;m=k[a+36+(m*12|0)>>2]|0;n=k[G>>2]|0;j=0;g=0;do{t=k[l>>2]|0;k[l>>2]=t+1;if(!(k[m+(t>>>5<<2)>>2]&1<<(t&31))){i=k[K+(j*12|0)>>2]|0;h=0;do{t=n+(h<<2)|0;k[t>>2]=(k[t>>2]|0)+(k[i+(h<<2)>>2]|0);h=h+1|0}while((h|0)!=(e|0));g=g+1|0}j=j+1|0}while((j|0)!=(f|0))}else{j=f+-1|0;i=C+(j<<2)|0;j=k[a+36+(j*12|0)>>2]|0;h=0;g=0;l=k[i>>2]|0;do{t=l;l=l+1|0;k[i>>2]=l;g=g+((k[j+(t>>>5<<2)>>2]&1<<(t&31)|0)==0&1)|0;h=h+1|0}while((h|0)!=(f|0))}f=$(d,e)|0;if(!g)o=53;else{i=k[G>>2]|0;if(x){h=0;do{t=i+(h<<2)|0;k[t>>2]=(k[t>>2]|0)/(g|0)|0;h=h+1|0}while((h|0)!=(e|0))}dg(D,i,b,c+(f<<2)|0,f)}}if((o|0)==53)dg(D,c+(($(d+-1|0,e)|0)<<2)|0,b,c+(f<<2)|0,f);d=d+1|0;if((d|0)>=(y|0)){E=G;break a}g=k[z>>2]|0;f=k[g>>2]|0;h=k[g+4>>2]|0}_k(g)}else E=G;while(0);g=k[E>>2]|0;h=g;if(g|0){d=G+4|0;f=k[d>>2]|0;if((f|0)!=(g|0))k[d>>2]=f+(~((f+-4-h|0)>>>2)<<2);Vl(g)}Vl(C);g=k[K+36>>2]|0;h=g;if(g|0){d=K+40|0;f=k[d>>2]|0;if((f|0)!=(g|0))k[d>>2]=f+(~((f+-4-h|0)>>>2)<<2);Vl(g)}d=k[K+24>>2]|0;f=d;if(d|0){g=K+28|0;h=k[g>>2]|0;if((h|0)!=(d|0))k[g>>2]=h+(~((h+-4-f|0)>>>2)<<2);Vl(d)}d=k[K+12>>2]|0;f=d;if(d|0){g=K+16|0;h=k[g>>2]|0;if((h|0)!=(d|0))k[g>>2]=h+(~((h+-4-f|0)>>>2)<<2);Vl(d)}g=k[K>>2]|0;if(!g){r=L;return 1}d=K+4|0;f=k[d>>2]|0;if((f|0)!=(g|0))k[d>>2]=f+(~((f+-4-g|0)>>>2)<<2);Vl(g);r=L;return 1}function wb(a){a=a|0;var b=0,c=0,d=0,e=0,f=0,g=0,h=0,j=0,m=0,n=0,o=0,p=0,q=0,s=0,t=0,u=0,v=0,w=0,x=0;x=r;r=r+16|0;u=x;v=a+20|0;s=k[v>>2]|0;e=s+8|0;g=k[e>>2]|0;e=k[e+4>>2]|0;h=s+16|0;n=h;m=k[n>>2]|0;n=k[n+4>>2]|0;c=mk(m|0,n|0,4,0)|0;b=M;if((e|0)<(b|0)|(e|0)==(b|0)&g>>>0>>0){w=0;r=x;return w|0}f=k[s>>2]|0;w=f+m|0;w=l[w>>0]|l[w+1>>0]<<8|l[w+2>>0]<<16|l[w+3>>0]<<24;t=h;k[t>>2]=c;k[t+4>>2]=b;if((w|0)<0){w=0;r=x;return w|0}b=mk(m|0,n|0,8,0)|0;d=M;if((e|0)<(d|0)|(e|0)==(d|0)&g>>>0>>0){w=0;r=x;return w|0}t=f+c|0;t=l[t>>0]|l[t+1>>0]<<8|l[t+2>>0]<<16|l[t+3>>0]<<24;q=h;k[q>>2]=b;k[q+4>>2]=d;if(!((e|0)>(d|0)|(e|0)==(d|0)&g>>>0>b>>>0)){w=0;r=x;return w|0}q=i[f+b>>0]|0;j=mk(m|0,n|0,9,0)|0;g=M;p=h;k[p>>2]=j;k[p+4>>2]=g;a:do if(!(q<<24>>24)){if(!(ye(a,w)|0)){w=0;r=x;return w|0}}else{if((t|0)<256){if((w|0)<=0)break;n=a+28|0;o=u+4|0;p=u+8|0;k[u>>2]=0;k[u+4>>2]=0;k[u+8>>2]=0;b=s+8|0;c=k[b>>2]|0;b=k[b+4>>2]|0;b:do if((b|0)>(g|0)|(b|0)==(g|0)&c>>>0>j>>>0){m=0;f=s;h=g;g=b;e=c;do{d=f+16|0;c=k[f>>2]|0;q=i[c+j>>0]|0;b=mk(j|0,h|0,1,0)|0;s=M;f=d;k[f>>2]=b;k[f+4>>2]=s;k[u>>2]=q&255;if(!((g|0)>(s|0)|(g|0)==(s|0)&e>>>0>b>>>0))break b;q=i[c+b>>0]|0;b=mk(j|0,h|0,2,0)|0;s=M;f=d;k[f>>2]=b;k[f+4>>2]=s;k[o>>2]=q&255;if(!((g|0)>(s|0)|(g|0)==(s|0)&e>>>0>b>>>0))break b;c=i[c+b>>0]|0;s=mk(j|0,h|0,3,0)|0;b=d;k[b>>2]=s;k[b+4>>2]=M;k[p>>2]=c&255;c=k[n>>2]|0;b=c+84|0;d=k[b>>2]|0;if((d|0)==(k[c+88>>2]|0))rg(c+80|0,u);else{k[d>>2]=k[u>>2];k[d+4>>2]=k[u+4>>2];k[d+8>>2]=k[u+8>>2];k[b>>2]=(k[b>>2]|0)+12}m=m+1|0;if((m|0)>=(w|0))break a;f=k[v>>2]|0;h=f+16|0;j=k[h>>2]|0;h=k[h+4>>2]|0;k[u>>2]=0;k[u+4>>2]=0;k[u+8>>2]=0;g=f+8|0;e=k[g>>2]|0;g=k[g+4>>2]|0}while((g|0)>(h|0)|(g|0)==(h|0)&e>>>0>j>>>0)}while(0);w=0;r=x;return w|0}b=(w|0)>0;if((t|0)<65536){if(!b)break;o=a+28|0;p=u+4|0;q=u+8|0;k[u>>2]=0;k[u+4>>2]=0;k[u+8>>2]=0;e=s+8|0;h=k[e>>2]|0;e=k[e+4>>2]|0;b=mk(m|0,n|0,11,0)|0;c=M;c:do if(!((e|0)<(c|0)|(e|0)==(c|0)&h>>>0>>0)){n=0;d=s;m=e;do{f=d+16|0;e=k[d>>2]|0;d=e+j|0;d=l[d>>0]|l[d+1>>0]<<8;s=f;k[s>>2]=b;k[s+4>>2]=c;k[u>>2]=d&65535;d=mk(j|0,g|0,4,0)|0;c=M;if((m|0)<(c|0)|(m|0)==(c|0)&h>>>0>>0)break c;b=e+b|0;b=l[b>>0]|l[b+1>>0]<<8;s=f;k[s>>2]=d;k[s+4>>2]=c;k[p>>2]=b&65535;b=mk(j|0,g|0,6,0)|0;c=M;if((m|0)<(c|0)|(m|0)==(c|0)&h>>>0>>0)break c;d=e+d|0;d=l[d>>0]|l[d+1>>0]<<8;s=f;k[s>>2]=b;k[s+4>>2]=c;k[q>>2]=d&65535;d=k[o>>2]|0;c=d+84|0;b=k[c>>2]|0;if((b|0)==(k[d+88>>2]|0))rg(d+80|0,u);else{k[b>>2]=k[u>>2];k[b+4>>2]=k[u+4>>2];k[b+8>>2]=k[u+8>>2];k[c>>2]=(k[c>>2]|0)+12}n=n+1|0;if((n|0)>=(w|0))break a;d=k[v>>2]|0;g=d+16|0;j=k[g>>2]|0;g=k[g+4>>2]|0;k[u>>2]=0;k[u+4>>2]=0;k[u+8>>2]=0;m=d+8|0;h=k[m>>2]|0;m=k[m+4>>2]|0;b=mk(j|0,g|0,2,0)|0;c=M}while(!((m|0)<(c|0)|(m|0)==(c|0)&h>>>0>>0))}while(0);w=0;r=x;return w|0}else{if(!b)break;o=a+28|0;p=u+4|0;q=u+8|0;k[u>>2]=0;k[u+4>>2]=0;k[u+8>>2]=0;e=s+8|0;h=k[e>>2]|0;e=k[e+4>>2]|0;b=mk(m|0,n|0,13,0)|0;c=M;d:do if(!((e|0)<(c|0)|(e|0)==(c|0)&h>>>0>>0)){n=0;d=s;m=e;do{f=d+16|0;e=k[d>>2]|0;d=e+j|0;d=l[d>>0]|l[d+1>>0]<<8|l[d+2>>0]<<16|l[d+3>>0]<<24;s=f;k[s>>2]=b;k[s+4>>2]=c;k[u>>2]=d;d=mk(j|0,g|0,8,0)|0;c=M;if((m|0)<(c|0)|(m|0)==(c|0)&h>>>0>>0)break d;b=e+b|0;b=l[b>>0]|l[b+1>>0]<<8|l[b+2>>0]<<16|l[b+3>>0]<<24;s=f;k[s>>2]=d;k[s+4>>2]=c;k[p>>2]=b;b=mk(j|0,g|0,12,0)|0;c=M;if((m|0)<(c|0)|(m|0)==(c|0)&h>>>0>>0)break d;d=e+d|0;d=l[d>>0]|l[d+1>>0]<<8|l[d+2>>0]<<16|l[d+3>>0]<<24;s=f;k[s>>2]=b;k[s+4>>2]=c;k[q>>2]=d;d=k[o>>2]|0;c=d+84|0;b=k[c>>2]|0;if((b|0)==(k[d+88>>2]|0))rg(d+80|0,u);else{k[b>>2]=k[u>>2];k[b+4>>2]=k[u+4>>2];k[b+8>>2]=k[u+8>>2];k[c>>2]=(k[c>>2]|0)+12}n=n+1|0;if((n|0)>=(w|0))break a;d=k[v>>2]|0;g=d+16|0;j=k[g>>2]|0;g=k[g+4>>2]|0;k[u>>2]=0;k[u+4>>2]=0;k[u+8>>2]=0;m=d+8|0;h=k[m>>2]|0;m=k[m+4>>2]|0;b=mk(j|0,g|0,4,0)|0;c=M}while(!((m|0)<(c|0)|(m|0)==(c|0)&h>>>0>>0))}while(0);w=0;r=x;return w|0}}while(0);k[(k[a+4>>2]|0)+64>>2]=t;w=1;r=x;return w|0}function xb(a,b,c,d,e,f){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;f=f|0;var g=0,h=0,i=0,j=0,l=0,m=0,n=0,o=0,p=0,q=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,B=0,C=0,D=0,E=0,F=0,G=0,H=0,I=0,J=0,K=0,L=0;L=r;r=r+64|0;K=L+16|0;G=L;D=a+8|0;k[D>>2]=e;d=K;f=d+48|0;do{k[d>>2]=0;d=d+4|0}while((d|0)<(f|0));k[G>>2]=0;if(!e){d=0;f=0}else{Of(K,e,G);d=k[K+12>>2]|0;f=k[K+16>>2]|0}k[G>>2]=0;g=K+16|0;h=f-d>>2;if(h>>>0>=e>>>0){if(h>>>0>e>>>0?(i=d+(e<<2)|0,(f|0)!=(i|0)):0)k[g>>2]=f+(~((f+-4-i|0)>>>2)<<2)}else Of(K+12|0,e-h|0,G);d=K+24|0;k[G>>2]=0;f=K+28|0;i=k[f>>2]|0;h=k[d>>2]|0;g=i-h>>2;if(g>>>0>=e>>>0){if(g>>>0>e>>>0?(j=h+(e<<2)|0,(i|0)!=(j|0)):0)k[f>>2]=i+(~((i+-4-j|0)>>>2)<<2)}else Of(d,e-g|0,G);d=K+36|0;k[G>>2]=0;f=K+40|0;i=k[f>>2]|0;h=k[d>>2]|0;g=i-h>>2;if(g>>>0>=e>>>0){if(g>>>0>e>>>0?(l=h+(e<<2)|0,(i|0)!=(l|0)):0)k[f>>2]=i+(~((i+-4-l|0)>>>2)<<2)}else Of(d,e-g|0,G);fg(D,k[K>>2]|0,b,c,0);v=k[a+24>>2]|0;B=k[a+28>>2]|0;C=vj(16)|0;k[C>>2]=0;k[C+4>>2]=0;k[C+8>>2]=0;k[C+12>>2]=0;fi(G,e);z=a+32|0;g=k[z>>2]|0;h=k[g+4>>2]|0;f=k[g>>2]|0;A=h-f|0;y=A>>2;a:do if((A|0)>4){u=v+64|0;w=v+28|0;x=(e|0)>0;A=e<<2;d=1;while(1){if(h-f>>2>>>0<=d>>>0)break;p=k[f+(d<<2)>>2]|0;o=p+((p|0)<0?0:((p>>>0)%3|0|0)==0?2:-1)|0;q=o>>>5;s=1<<(o&31);t=(o|0)<0;n=1;f=0;g=p;b:while(1){do{if((g|0)<=-1){o=41;break b}i=k[K+(f*12|0)>>2]|0;if(((k[(k[v>>2]|0)+(g>>>5<<2)>>2]&1<<(g&31)|0)==0?(F=k[(k[(k[u>>2]|0)+12>>2]|0)+(g<<2)>>2]|0,(F|0)>=0):0)?(J=k[w>>2]|0,m=k[B>>2]|0,H=k[m+(k[J+(F<<2)>>2]<<2)>>2]|0,I=F+1|0,I=k[m+(k[J+((((I|0)%3|0|0)==0?F+-2|0:I)<<2)>>2]<<2)>>2]|0,J=k[m+(k[J+((((F>>>0)%3|0|0)==0?2:-1)+F<<2)>>2]<<2)>>2]|0,(H|0)<(d|0)&(I|0)<(d|0)&(J|0)<(d|0)):0){j=$(H,e)|0;l=$(I,e)|0;m=$(J,e)|0;if(x){h=0;do{k[i+(h<<2)>>2]=(k[c+(h+m<<2)>>2]|0)+(k[c+(h+l<<2)>>2]|0)-(k[c+(h+j<<2)>>2]|0);h=h+1|0}while((h|0)!=(e|0))}f=f+1|0;if((f|0)==4){f=4;o=22;break b}}do if(n){h=g+1|0;g=((h|0)%3|0|0)==0?g+-2|0:h;h=k[v>>2]|0;if(!(k[h+(g>>>5<<2)>>2]&1<<(g&31))){if((g|0)>=0){g=k[(k[(k[u>>2]|0)+12>>2]|0)+(g<<2)>>2]|0;i=g+1|0;if((g|0)>=0)g=((i|0)%3|0|0)==0?g+-2|0:i}}else g=-1073741824}else{g=(((g>>>0)%3|0|0)==0?2:-1)+g|0;h=k[v>>2]|0;if(!(k[h+(g>>>5<<2)>>2]&1<<(g&31))){if((g|0)>=0){g=k[(k[(k[u>>2]|0)+12>>2]|0)+(g<<2)>>2]|0;if((g|0)>=0)if(!((g>>>0)%3|0)){g=g+2|0;break}else{g=g+-1|0;break}}}else g=-1073741824}while(0);if((g|0)==(p|0)){o=41;break b}}while(!(n&(g|0)<0));g=(s&k[h+(q<<2)>>2]|0)!=0;if(g|t){n=0;g=g?-1073741824:o;continue}g=k[(k[(k[u>>2]|0)+12>>2]|0)+(o<<2)>>2]|0;if((g|0)<0){n=0;continue}if(!((g>>>0)%3|0)){n=0;g=g+2|0;continue}else{n=0;g=g+-1|0;continue}}if((o|0)==41)if((f|0)>0)o=22;else{f=$(d,e)|0;o=53}if((o|0)==22){o=0;if(x){Zh(k[G>>2]|0,0,A|0)|0;m=f+-1|0;l=C+(m<<2)|0;m=k[a+36+(m*12|0)>>2]|0;n=k[G>>2]|0;j=0;g=0;do{t=k[l>>2]|0;k[l>>2]=t+1;if(!(k[m+(t>>>5<<2)>>2]&1<<(t&31))){i=k[K+(j*12|0)>>2]|0;h=0;do{t=n+(h<<2)|0;k[t>>2]=(k[t>>2]|0)+(k[i+(h<<2)>>2]|0);h=h+1|0}while((h|0)!=(e|0));g=g+1|0}j=j+1|0}while((j|0)!=(f|0))}else{j=f+-1|0;i=C+(j<<2)|0;j=k[a+36+(j*12|0)>>2]|0;h=0;g=0;l=k[i>>2]|0;do{t=l;l=l+1|0;k[i>>2]=l;g=g+((k[j+(t>>>5<<2)>>2]&1<<(t&31)|0)==0&1)|0;h=h+1|0}while((h|0)!=(f|0))}f=$(d,e)|0;if(!g)o=53;else{i=k[G>>2]|0;if(x){h=0;do{t=i+(h<<2)|0;k[t>>2]=(k[t>>2]|0)/(g|0)|0;h=h+1|0}while((h|0)!=(e|0))}fg(D,i,b,c+(f<<2)|0,f)}}if((o|0)==53)fg(D,c+(($(d+-1|0,e)|0)<<2)|0,b,c+(f<<2)|0,f);d=d+1|0;if((d|0)>=(y|0)){E=G;break a}g=k[z>>2]|0;f=k[g>>2]|0;h=k[g+4>>2]|0}_k(g)}else E=G;while(0);g=k[E>>2]|0;h=g;if(g|0){d=G+4|0;f=k[d>>2]|0;if((f|0)!=(g|0))k[d>>2]=f+(~((f+-4-h|0)>>>2)<<2);Vl(g)}Vl(C);g=k[K+36>>2]|0;h=g;if(g|0){d=K+40|0;f=k[d>>2]|0;if((f|0)!=(g|0))k[d>>2]=f+(~((f+-4-h|0)>>>2)<<2);Vl(g)}d=k[K+24>>2]|0;f=d;if(d|0){g=K+28|0;h=k[g>>2]|0;if((h|0)!=(d|0))k[g>>2]=h+(~((h+-4-f|0)>>>2)<<2);Vl(d)}d=k[K+12>>2]|0;f=d;if(d|0){g=K+16|0;h=k[g>>2]|0;if((h|0)!=(d|0))k[g>>2]=h+(~((h+-4-f|0)>>>2)<<2);Vl(d)}g=k[K>>2]|0;if(!g){r=L;return 1}d=K+4|0;f=k[d>>2]|0;if((f|0)!=(g|0))k[d>>2]=f+(~((f+-4-g|0)>>>2)<<2);Vl(g);r=L;return 1}function yb(a,b,c,d,e,f){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;f=f|0;var g=0,h=0,i=0,j=0,l=0,m=0,n=0,o=0,p=0,q=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,B=0,C=0,D=0,E=0,F=0,G=0,H=0,I=0,J=0;J=r;r=r+64|0;I=J+16|0;H=J;F=a+8|0;k[F>>2]=e;d=I;f=d+48|0;do{k[d>>2]=0;d=d+4|0}while((d|0)<(f|0));k[H>>2]=0;if(!e){d=0;f=0}else{Of(I,e,H);d=k[I+12>>2]|0;f=k[I+16>>2]|0}k[H>>2]=0;g=I+16|0;h=f-d>>2;if(h>>>0>=e>>>0){if(h>>>0>e>>>0?(i=d+(e<<2)|0,(f|0)!=(i|0)):0)k[g>>2]=f+(~((f+-4-i|0)>>>2)<<2)}else Of(I+12|0,e-h|0,H);d=I+24|0;k[H>>2]=0;f=I+28|0;i=k[f>>2]|0;h=k[d>>2]|0;g=i-h>>2;if(g>>>0>=e>>>0){if(g>>>0>e>>>0?(j=h+(e<<2)|0,(i|0)!=(j|0)):0)k[f>>2]=i+(~((i+-4-j|0)>>>2)<<2)}else Of(d,e-g|0,H);d=I+36|0;k[H>>2]=0;f=I+40|0;i=k[f>>2]|0;h=k[d>>2]|0;g=i-h>>2;if(g>>>0>=e>>>0){if(g>>>0>e>>>0?(l=h+(e<<2)|0,(i|0)!=(l|0)):0)k[f>>2]=i+(~((i+-4-l|0)>>>2)<<2)}else Of(d,e-g|0,H);dg(F,k[I>>2]|0,b,c,0);A=k[a+24>>2]|0;D=k[a+28>>2]|0;E=vj(16)|0;k[E>>2]=0;k[E+4>>2]=0;k[E+8>>2]=0;k[E+12>>2]=0;fi(H,e);z=a+32|0;g=k[z>>2]|0;h=k[g+4>>2]|0;f=k[g>>2]|0;C=h-f|0;y=C>>2;a:do if((C|0)>4){x=A+12|0;B=(e|0)>0;C=e<<2;d=1;while(1){if(h-f>>2>>>0<=d>>>0)break;v=k[f+(d<<2)>>2]|0;u=(((v>>>0)%3|0|0)==0?2:-1)+v|0;w=(v|u|0)<0;t=(v|0)<0?v:u;s=1;f=0;g=v;b:while(1){do{if((g|0)<=-1){o=42;break b}p=k[I+(f*12|0)>>2]|0;q=k[x>>2]|0;i=k[q+(g<<2)>>2]|0;if((i|0)>=0){l=k[A>>2]|0;j=(i>>>0)%3|0;m=k[D>>2]|0;o=k[m+(k[l+(((i>>>0)/3|0)*12|0)+(j<<2)>>2]<<2)>>2]|0;h=i+1|0;h=((h|0)%3|0|0)==0?i+-2|0:h;if((h|0)<0)h=-1073741824;else h=k[l+(((h>>>0)/3|0)*12|0)+(((h>>>0)%3|0)<<2)>>2]|0;n=k[m+(h<<2)>>2]|0;h=((j|0)==0?2:-1)+i|0;if((h|0)<0)h=-1073741824;else h=k[l+(((h>>>0)/3|0)*12|0)+(((h>>>0)%3|0)<<2)>>2]|0;h=k[m+(h<<2)>>2]|0;if((o|0)<(d|0)&(n|0)<(d|0)&(h|0)<(d|0)){l=$(o,e)|0;j=$(n,e)|0;i=$(h,e)|0;if(B){h=0;do{k[p+(h<<2)>>2]=(k[c+(h+i<<2)>>2]|0)+(k[c+(h+j<<2)>>2]|0)-(k[c+(h+l<<2)>>2]|0);h=h+1|0}while((h|0)!=(e|0))}f=f+1|0;if((f|0)==4){f=4;o=25;break b}}}do if(s){p=g+1|0;g=((p|0)%3|0|0)==0?g+-2|0:p;if((g|0)>=0){g=k[q+(g<<2)>>2]|0;h=g+1|0;if((g|0)>=0)g=((h|0)%3|0|0)==0?g+-2|0:h}}else{g=(((g>>>0)%3|0|0)==0?2:-1)+g|0;if((g|0)>=0){g=k[q+(g<<2)>>2]|0;if((g|0)>=0)if(!((g>>>0)%3|0)){g=g+2|0;break}else{g=g+-1|0;break}}}while(0);if((g|0)==(v|0)){o=42;break b}}while(!(s&(g|0)<0));if(w){s=0;g=t;continue}g=k[q+(u<<2)>>2]|0;if((g|0)<0){s=0;continue}if(!((g>>>0)%3|0)){s=0;g=g+2|0;continue}else{s=0;g=g+-1|0;continue}}if((o|0)==42)if((f|0)>0)o=25;else{f=$(d,e)|0;o=54}if((o|0)==25){o=0;if(B){Zh(k[H>>2]|0,0,C|0)|0;m=f+-1|0;l=E+(m<<2)|0;m=k[a+36+(m*12|0)>>2]|0;n=k[H>>2]|0;j=0;g=0;do{w=k[l>>2]|0;k[l>>2]=w+1;if(!(k[m+(w>>>5<<2)>>2]&1<<(w&31))){i=k[I+(j*12|0)>>2]|0;h=0;do{w=n+(h<<2)|0;k[w>>2]=(k[w>>2]|0)+(k[i+(h<<2)>>2]|0);h=h+1|0}while((h|0)!=(e|0));g=g+1|0}j=j+1|0}while((j|0)!=(f|0))}else{j=f+-1|0;i=E+(j<<2)|0;j=k[a+36+(j*12|0)>>2]|0;h=0;g=0;l=k[i>>2]|0;do{w=l;l=l+1|0;k[i>>2]=l;g=g+((k[j+(w>>>5<<2)>>2]&1<<(w&31)|0)==0&1)|0;h=h+1|0}while((h|0)!=(f|0))}f=$(d,e)|0;if(!g)o=54;else{i=k[H>>2]|0;if(B){h=0;do{w=i+(h<<2)|0;k[w>>2]=(k[w>>2]|0)/(g|0)|0;h=h+1|0}while((h|0)!=(e|0))}dg(F,i,b,c+(f<<2)|0,f)}}if((o|0)==54)dg(F,c+(($(d+-1|0,e)|0)<<2)|0,b,c+(f<<2)|0,f);d=d+1|0;if((d|0)>=(y|0)){G=H;break a}g=k[z>>2]|0;f=k[g>>2]|0;h=k[g+4>>2]|0}_k(g)}else G=H;while(0);g=k[G>>2]|0;h=g;if(g|0){d=H+4|0;f=k[d>>2]|0;if((f|0)!=(g|0))k[d>>2]=f+(~((f+-4-h|0)>>>2)<<2);Vl(g)}Vl(E);g=k[I+36>>2]|0;h=g;if(g|0){d=I+40|0;f=k[d>>2]|0;if((f|0)!=(g|0))k[d>>2]=f+(~((f+-4-h|0)>>>2)<<2);Vl(g)}d=k[I+24>>2]|0;f=d;if(d|0){g=I+28|0;h=k[g>>2]|0;if((h|0)!=(d|0))k[g>>2]=h+(~((h+-4-f|0)>>>2)<<2);Vl(d)}d=k[I+12>>2]|0;f=d;if(d|0){g=I+16|0;h=k[g>>2]|0;if((h|0)!=(d|0))k[g>>2]=h+(~((h+-4-f|0)>>>2)<<2);Vl(d)}g=k[I>>2]|0;if(!g){r=J;return 1}d=I+4|0;f=k[d>>2]|0;if((f|0)!=(g|0))k[d>>2]=f+(~((f+-4-g|0)>>>2)<<2);Vl(g);r=J;return 1}function zb(a,b,c,d,e,f){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;f=f|0;var g=0,h=0,i=0,j=0,l=0,m=0,n=0,o=0,p=0,q=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,B=0,C=0,D=0,E=0,F=0,G=0,H=0,I=0,J=0;J=r;r=r+64|0;I=J+16|0;H=J;F=a+8|0;k[F>>2]=e;d=I;f=d+48|0;do{k[d>>2]=0;d=d+4|0}while((d|0)<(f|0));k[H>>2]=0;if(!e){d=0;f=0}else{Of(I,e,H);d=k[I+12>>2]|0;f=k[I+16>>2]|0}k[H>>2]=0;g=I+16|0;h=f-d>>2;if(h>>>0>=e>>>0){if(h>>>0>e>>>0?(i=d+(e<<2)|0,(f|0)!=(i|0)):0)k[g>>2]=f+(~((f+-4-i|0)>>>2)<<2)}else Of(I+12|0,e-h|0,H);d=I+24|0;k[H>>2]=0;f=I+28|0;i=k[f>>2]|0;h=k[d>>2]|0;g=i-h>>2;if(g>>>0>=e>>>0){if(g>>>0>e>>>0?(j=h+(e<<2)|0,(i|0)!=(j|0)):0)k[f>>2]=i+(~((i+-4-j|0)>>>2)<<2)}else Of(d,e-g|0,H);d=I+36|0;k[H>>2]=0;f=I+40|0;i=k[f>>2]|0;h=k[d>>2]|0;g=i-h>>2;if(g>>>0>=e>>>0){if(g>>>0>e>>>0?(l=h+(e<<2)|0,(i|0)!=(l|0)):0)k[f>>2]=i+(~((i+-4-l|0)>>>2)<<2)}else Of(d,e-g|0,H);fg(F,k[I>>2]|0,b,c,0);A=k[a+24>>2]|0;D=k[a+28>>2]|0;E=vj(16)|0;k[E>>2]=0;k[E+4>>2]=0;k[E+8>>2]=0;k[E+12>>2]=0;fi(H,e);z=a+32|0;g=k[z>>2]|0;h=k[g+4>>2]|0;f=k[g>>2]|0;C=h-f|0;y=C>>2;a:do if((C|0)>4){x=A+12|0;B=(e|0)>0;C=e<<2;d=1;while(1){if(h-f>>2>>>0<=d>>>0)break;v=k[f+(d<<2)>>2]|0;u=(((v>>>0)%3|0|0)==0?2:-1)+v|0;w=(v|u|0)<0;t=(v|0)<0?v:u;s=1;f=0;g=v;b:while(1){do{if((g|0)<=-1){o=42;break b}p=k[I+(f*12|0)>>2]|0;q=k[x>>2]|0;i=k[q+(g<<2)>>2]|0;if((i|0)>=0){l=k[A>>2]|0;j=(i>>>0)%3|0;m=k[D>>2]|0;o=k[m+(k[l+(((i>>>0)/3|0)*12|0)+(j<<2)>>2]<<2)>>2]|0;h=i+1|0;h=((h|0)%3|0|0)==0?i+-2|0:h;if((h|0)<0)h=-1073741824;else h=k[l+(((h>>>0)/3|0)*12|0)+(((h>>>0)%3|0)<<2)>>2]|0;n=k[m+(h<<2)>>2]|0;h=((j|0)==0?2:-1)+i|0;if((h|0)<0)h=-1073741824;else h=k[l+(((h>>>0)/3|0)*12|0)+(((h>>>0)%3|0)<<2)>>2]|0;h=k[m+(h<<2)>>2]|0;if((o|0)<(d|0)&(n|0)<(d|0)&(h|0)<(d|0)){l=$(o,e)|0;j=$(n,e)|0;i=$(h,e)|0;if(B){h=0;do{k[p+(h<<2)>>2]=(k[c+(h+i<<2)>>2]|0)+(k[c+(h+j<<2)>>2]|0)-(k[c+(h+l<<2)>>2]|0);h=h+1|0}while((h|0)!=(e|0))}f=f+1|0;if((f|0)==4){f=4;o=25;break b}}}do if(s){p=g+1|0;g=((p|0)%3|0|0)==0?g+-2|0:p;if((g|0)>=0){g=k[q+(g<<2)>>2]|0;h=g+1|0;if((g|0)>=0)g=((h|0)%3|0|0)==0?g+-2|0:h}}else{g=(((g>>>0)%3|0|0)==0?2:-1)+g|0;if((g|0)>=0){g=k[q+(g<<2)>>2]|0;if((g|0)>=0)if(!((g>>>0)%3|0)){g=g+2|0;break}else{g=g+-1|0;break}}}while(0);if((g|0)==(v|0)){o=42;break b}}while(!(s&(g|0)<0));if(w){s=0;g=t;continue}g=k[q+(u<<2)>>2]|0;if((g|0)<0){s=0;continue}if(!((g>>>0)%3|0)){s=0;g=g+2|0;continue}else{s=0;g=g+-1|0;continue}}if((o|0)==42)if((f|0)>0)o=25;else{f=$(d,e)|0;o=54}if((o|0)==25){o=0;if(B){Zh(k[H>>2]|0,0,C|0)|0;m=f+-1|0;l=E+(m<<2)|0;m=k[a+36+(m*12|0)>>2]|0;n=k[H>>2]|0;j=0;g=0;do{w=k[l>>2]|0;k[l>>2]=w+1;if(!(k[m+(w>>>5<<2)>>2]&1<<(w&31))){i=k[I+(j*12|0)>>2]|0;h=0;do{w=n+(h<<2)|0;k[w>>2]=(k[w>>2]|0)+(k[i+(h<<2)>>2]|0);h=h+1|0}while((h|0)!=(e|0));g=g+1|0}j=j+1|0}while((j|0)!=(f|0))}else{j=f+-1|0;i=E+(j<<2)|0;j=k[a+36+(j*12|0)>>2]|0;h=0;g=0;l=k[i>>2]|0;do{w=l;l=l+1|0;k[i>>2]=l;g=g+((k[j+(w>>>5<<2)>>2]&1<<(w&31)|0)==0&1)|0;h=h+1|0}while((h|0)!=(f|0))}f=$(d,e)|0;if(!g)o=54;else{i=k[H>>2]|0;if(B){h=0;do{w=i+(h<<2)|0;k[w>>2]=(k[w>>2]|0)/(g|0)|0;h=h+1|0}while((h|0)!=(e|0))}fg(F,i,b,c+(f<<2)|0,f)}}if((o|0)==54)fg(F,c+(($(d+-1|0,e)|0)<<2)|0,b,c+(f<<2)|0,f);d=d+1|0;if((d|0)>=(y|0)){G=H;break a}g=k[z>>2]|0;f=k[g>>2]|0;h=k[g+4>>2]|0}_k(g)}else G=H;while(0);g=k[G>>2]|0;h=g;if(g|0){d=H+4|0;f=k[d>>2]|0;if((f|0)!=(g|0))k[d>>2]=f+(~((f+-4-h|0)>>>2)<<2);Vl(g)}Vl(E);g=k[I+36>>2]|0;h=g;if(g|0){d=I+40|0;f=k[d>>2]|0;if((f|0)!=(g|0))k[d>>2]=f+(~((f+-4-h|0)>>>2)<<2);Vl(g)}d=k[I+24>>2]|0;f=d;if(d|0){g=I+28|0;h=k[g>>2]|0;if((h|0)!=(d|0))k[g>>2]=h+(~((h+-4-f|0)>>>2)<<2);Vl(d)}d=k[I+12>>2]|0;f=d;if(d|0){g=I+16|0;h=k[g>>2]|0;if((h|0)!=(d|0))k[g>>2]=h+(~((h+-4-f|0)>>>2)<<2);Vl(d)}g=k[I>>2]|0;if(!g){r=J;return 1}d=I+4|0;f=k[d>>2]|0;if((f|0)!=(g|0))k[d>>2]=f+(~((f+-4-g|0)>>>2)<<2);Vl(g);r=J;return 1}function Ab(a,b,c){a=a|0;b=b|0;c=c|0;var d=0,e=0,f=0,g=0,h=0,l=0,m=0,n=Pa,p=Pa,q=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,B=0,C=0,D=0,E=0,F=0,G=0,H=0,I=0,J=0,K=0,L=0,N=0,O=0,P=Pa;O=r;r=r+48|0;N=O+12|0;H=O+32|0;L=O;I=N+16|0;k[N>>2]=0;k[N+4>>2]=0;k[N+8>>2]=0;k[N+12>>2]=0;o[I>>2]=da(1.0);K=a+80|0;fi(L,k[K>>2]|0);e=k[K>>2]|0;a:do if((e|0)>0){y=b+48|0;z=b+40|0;w=H+2|0;x=H+4|0;A=N+4|0;B=N+12|0;C=N+8|0;D=a+40|0;E=a+64|0;v=k[c>>2]|0;d=0;u=0;q=0;while(1){m=v+u|0;h=y;l=k[h>>2]|0;h=k[h+4>>2]|0;t=z;m=sj(k[t>>2]|0,k[t+4>>2]|0,m|0,((m|0)<0)<<31>>31|0)|0;h=mk(m|0,M|0,l|0,h|0)|0;h=(k[k[b>>2]>>2]|0)+h|0;i[H>>0]=i[h>>0]|0;i[H+1>>0]=i[h+1>>0]|0;i[H+2>>0]=i[h+2>>0]|0;i[H+3>>0]=i[h+3>>0]|0;i[H+4>>0]=i[h+4>>0]|0;i[H+5>>0]=i[h+5>>0]|0;h=j[H>>1]|0;l=j[w>>1]|0;m=j[x>>1]|0;t=((h&65535^318)+239^l&65535)+239^m&65535;s=(q|0)==0;b:do if(!s){f=q+-1|0;c=(f&q|0)==0;if(c)g=t&f;else g=(t>>>0)%(q>>>0)|0;e=k[(k[N>>2]|0)+(g<<2)>>2]|0;do if(e|0?(F=k[e>>2]|0,F|0):0){c:do if(c){c=F;while(1){if((k[c+4>>2]&f|0)!=(g|0)){e=22;break c}if(((j[c+8>>1]|0)==h<<16>>16?(j[c+10>>1]|0)==l<<16>>16:0)?(j[c+12>>1]|0)==m<<16>>16:0){e=21;break c}c=k[c>>2]|0;if(!c){e=22;break}}}else{c=F;while(1){if((((k[c+4>>2]|0)>>>0)%(q>>>0)|0|0)!=(g|0)){e=22;break c}if(((j[c+8>>1]|0)==h<<16>>16?(j[c+10>>1]|0)==l<<16>>16:0)?(j[c+12>>1]|0)==m<<16>>16:0){e=21;break c}c=k[c>>2]|0;if(!c){e=22;break}}}while(0);if((e|0)==21){e=0;k[(k[L>>2]|0)+(u<<2)>>2]=k[c+16>>2];break b}else if((e|0)==22)if(s){c=0;e=39;break b}else break}while(0);g=q+-1|0;f=(g&q|0)==0;if(f)c=g&t;else c=(t>>>0)%(q>>>0)|0;e=k[(k[N>>2]|0)+(c<<2)>>2]|0;if((e|0)!=0?(G=k[e>>2]|0,(G|0)!=0):0)if(f){e=G;while(1){if((k[e+4>>2]&g|0)!=(c|0)){e=39;break b}if(((j[e+8>>1]|0)==h<<16>>16?(j[e+10>>1]|0)==l<<16>>16:0)?(j[e+12>>1]|0)==m<<16>>16:0){e=51;break b}e=k[e>>2]|0;if(!e){e=39;break}}}else{e=G;while(1){if((((k[e+4>>2]|0)>>>0)%(q>>>0)|0|0)!=(c|0)){e=39;break b}if(((j[e+8>>1]|0)==h<<16>>16?(j[e+10>>1]|0)==l<<16>>16:0)?(j[e+12>>1]|0)==m<<16>>16:0){e=51;break b}e=k[e>>2]|0;if(!e){e=39;break}}}else e=39}else{c=0;e=39}while(0);if((e|0)==39){g=vj(20)|0;j[g+8>>1]=h;j[g+10>>1]=l;j[g+12>>1]=m;k[g+16>>2]=d;k[g+4>>2]=t;k[g>>2]=0;n=da(((k[B>>2]|0)+1|0)>>>0);P=da(q>>>0);p=da(o[I>>2]);do if(s|n>da(P*p)){c=(q>>>0>2&(q+-1&q|0)==0&1|q<<1)^1;e=~~da(_(da(n/p)))>>>0;Uf(N,c>>>0>>0?e:c);c=k[A>>2]|0;e=c+-1|0;if(!(e&c)){f=c;c=e&t;break}else{f=c;c=(t>>>0)%(c>>>0)|0;break}}else f=q;while(0);c=(k[N>>2]|0)+(c<<2)|0;e=k[c>>2]|0;if(!e){k[g>>2]=k[C>>2];k[C>>2]=g;k[c>>2]=C;c=k[g>>2]|0;if(c|0){c=k[c+4>>2]|0;e=f+-1|0;if(!(e&f))c=c&e;else c=(c>>>0)%(f>>>0)|0;k[(k[N>>2]|0)+(c<<2)>>2]=g}}else{k[g>>2]=k[e>>2];k[e>>2]=g}k[B>>2]=(k[B>>2]|0)+1;e=51}if((e|0)==51){s=D;t=k[s>>2]|0;s=sj(t|0,k[s+4>>2]|0,d|0,((d|0)<0)<<31>>31|0)|0;Mh((k[k[E>>2]>>2]|0)+s|0,H|0,t|0)|0;k[(k[L>>2]|0)+(u<<2)>>2]=d;d=d+1|0}c=u+1|0;e=k[K>>2]|0;if((c|0)>=(e|0)){m=d;break a}u=c;q=k[A>>2]|0}}else m=0;while(0);if((m|0)!=(e|0)){l=a+84|0;if(!(i[l>>0]|0)){e=k[a+68>>2]|0;c=(k[a+72>>2]|0)-e|0;if((c|0)>0){f=k[L>>2]|0;d=c>>2;c=0;do{a=e+(c<<2)|0;k[a>>2]=k[f+(k[a>>2]<<2)>>2];c=c+1|0}while((c|0)<(d|0))}}else{i[l>>0]=0;c=a+68|0;d=a+72|0;h=k[d>>2]|0;g=k[c>>2]|0;f=h-g>>2;if(e>>>0<=f>>>0){if(e>>>0>>0?(J=g+(e<<2)|0,(h|0)!=(J|0)):0)k[d>>2]=h+(~((h+-4-J|0)>>>2)<<2)}else{Of(c,e-f|0,3104);e=k[K>>2]|0}if((e|0)>0){f=k[L>>2]|0;if(i[l>>0]|0)Ka(13384,13403,80,13435);d=k[a+68>>2]|0;c=0;do{k[d+(c<<2)>>2]=k[f+(c<<2)>>2];c=c+1|0}while((c|0)<(e|0))}}k[K>>2]=m}e=k[L>>2]|0;f=e;if(e|0){c=L+4|0;d=k[c>>2]|0;if((d|0)!=(e|0))k[c>>2]=d+(~((d+-4-f|0)>>>2)<<2);Vl(e)}c=k[N+8>>2]|0;if(c|0)do{L=c;c=k[c>>2]|0;Vl(L)}while((c|0)!=0);c=k[N>>2]|0;k[N>>2]=0;if(!c){r=O;return m|0}Vl(c);r=O;return m|0}function Bb(a,b,c){a=a|0;b=b|0;c=c|0;var d=0,e=0,f=0,g=0,h=0,j=0,l=0,m=Pa,n=Pa,p=0,q=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,B=0,C=0,D=0,E=0,F=0,G=0,H=0,I=0,J=0,K=0,L=0,N=0,O=Pa;N=r;r=r+48|0;L=N+12|0;G=N+32|0;K=N;H=L+16|0;k[L>>2]=0;k[L+4>>2]=0;k[L+8>>2]=0;k[L+12>>2]=0;o[H>>2]=da(1.0);J=a+80|0;fi(K,k[J>>2]|0);e=k[J>>2]|0;a:do if((e|0)>0){x=b+48|0;y=b+40|0;v=G+1|0;w=G+2|0;z=L+4|0;A=L+12|0;B=L+8|0;C=a+40|0;D=a+64|0;u=k[c>>2]|0;c=0;t=0;p=0;while(1){l=u+c|0;h=x;j=k[h>>2]|0;h=k[h+4>>2]|0;s=y;l=sj(k[s>>2]|0,k[s+4>>2]|0,l|0,((l|0)<0)<<31>>31|0)|0;h=mk(l|0,M|0,j|0,h|0)|0;h=(k[k[b>>2]>>2]|0)+h|0;i[G>>0]=i[h>>0]|0;i[G+1>>0]=i[h+1>>0]|0;i[G+2>>0]=i[h+2>>0]|0;h=i[G>>0]|0;j=i[v>>0]|0;l=i[w>>0]|0;s=((h&255^318)+239^j&255)+239^l&255;q=(p|0)==0;b:do if(!q){f=p+-1|0;d=(f&p|0)==0;if(d)g=s&f;else g=(s>>>0)%(p>>>0)|0;e=k[(k[L>>2]|0)+(g<<2)>>2]|0;do if(e|0?(E=k[e>>2]|0,E|0):0){c:do if(d){d=E;while(1){if((k[d+4>>2]&f|0)!=(g|0)){e=22;break c}if(((i[d+8>>0]|0)==h<<24>>24?(i[d+9>>0]|0)==j<<24>>24:0)?(i[d+10>>0]|0)==l<<24>>24:0){e=21;break c}d=k[d>>2]|0;if(!d){e=22;break}}}else{d=E;while(1){if((((k[d+4>>2]|0)>>>0)%(p>>>0)|0|0)!=(g|0)){e=22;break c}if(((i[d+8>>0]|0)==h<<24>>24?(i[d+9>>0]|0)==j<<24>>24:0)?(i[d+10>>0]|0)==l<<24>>24:0){e=21;break c}d=k[d>>2]|0;if(!d){e=22;break}}}while(0);if((e|0)==21){e=0;k[(k[K>>2]|0)+(c<<2)>>2]=k[d+12>>2];d=t;break b}else if((e|0)==22)if(q){d=0;e=39;break b}else break}while(0);g=p+-1|0;f=(g&p|0)==0;if(f)d=g&s;else d=(s>>>0)%(p>>>0)|0;e=k[(k[L>>2]|0)+(d<<2)>>2]|0;if((e|0)!=0?(F=k[e>>2]|0,(F|0)!=0):0)if(f){e=F;while(1){if((k[e+4>>2]&g|0)!=(d|0)){e=39;break b}if(((i[e+8>>0]|0)==h<<24>>24?(i[e+9>>0]|0)==j<<24>>24:0)?(i[e+10>>0]|0)==l<<24>>24:0){e=51;break b}e=k[e>>2]|0;if(!e){e=39;break}}}else{e=F;while(1){if((((k[e+4>>2]|0)>>>0)%(p>>>0)|0|0)!=(d|0)){e=39;break b}if(((i[e+8>>0]|0)==h<<24>>24?(i[e+9>>0]|0)==j<<24>>24:0)?(i[e+10>>0]|0)==l<<24>>24:0){e=51;break b}e=k[e>>2]|0;if(!e){e=39;break}}}else e=39}else{d=0;e=39}while(0);if((e|0)==39){g=vj(16)|0;i[g+8>>0]=h;i[g+9>>0]=j;i[g+10>>0]=l;k[g+12>>2]=t;k[g+4>>2]=s;k[g>>2]=0;m=da(((k[A>>2]|0)+1|0)>>>0);O=da(p>>>0);n=da(o[H>>2]);do if(q|m>da(O*n)){d=(p>>>0>2&(p+-1&p|0)==0&1|p<<1)^1;e=~~da(_(da(m/n)))>>>0;$f(L,d>>>0>>0?e:d);d=k[z>>2]|0;e=d+-1|0;if(!(e&d)){f=d;d=e&s;break}else{f=d;d=(s>>>0)%(d>>>0)|0;break}}else f=p;while(0);d=(k[L>>2]|0)+(d<<2)|0;e=k[d>>2]|0;if(!e){k[g>>2]=k[B>>2];k[B>>2]=g;k[d>>2]=B;d=k[g>>2]|0;if(d|0){d=k[d+4>>2]|0;e=f+-1|0;if(!(e&f))d=d&e;else d=(d>>>0)%(f>>>0)|0;k[(k[L>>2]|0)+(d<<2)>>2]=g}}else{k[g>>2]=k[e>>2];k[e>>2]=g}k[A>>2]=(k[A>>2]|0)+1;e=51}if((e|0)==51){s=C;d=k[s>>2]|0;s=sj(d|0,k[s+4>>2]|0,t|0,((t|0)<0)<<31>>31|0)|0;Mh((k[k[D>>2]>>2]|0)+s|0,G|0,d|0)|0;k[(k[K>>2]|0)+(c<<2)>>2]=t;d=t+1|0}c=c+1|0;e=k[J>>2]|0;if((c|0)>=(e|0)){l=d;break a}t=d;p=k[z>>2]|0}}else l=0;while(0);if((l|0)!=(e|0)){j=a+84|0;if(!(i[j>>0]|0)){e=k[a+68>>2]|0;c=(k[a+72>>2]|0)-e|0;if((c|0)>0){f=k[K>>2]|0;d=c>>2;c=0;do{a=e+(c<<2)|0;k[a>>2]=k[f+(k[a>>2]<<2)>>2];c=c+1|0}while((c|0)<(d|0))}}else{i[j>>0]=0;c=a+68|0;d=a+72|0;h=k[d>>2]|0;g=k[c>>2]|0;f=h-g>>2;if(e>>>0<=f>>>0){if(e>>>0>>0?(I=g+(e<<2)|0,(h|0)!=(I|0)):0)k[d>>2]=h+(~((h+-4-I|0)>>>2)<<2)}else{Of(c,e-f|0,3104);e=k[J>>2]|0}if((e|0)>0){f=k[K>>2]|0;if(i[j>>0]|0)Ka(13384,13403,80,13435);d=k[a+68>>2]|0;c=0;do{k[d+(c<<2)>>2]=k[f+(c<<2)>>2];c=c+1|0}while((c|0)<(e|0))}}k[J>>2]=l}e=k[K>>2]|0;f=e;if(e|0){c=K+4|0;d=k[c>>2]|0;if((d|0)!=(e|0))k[c>>2]=d+(~((d+-4-f|0)>>>2)<<2);Vl(e)}c=k[L+8>>2]|0;if(c|0)do{K=c;c=k[c>>2]|0;Vl(K)}while((c|0)!=0);c=k[L>>2]|0;k[L>>2]=0;if(!c){r=N;return l|0}Vl(c);r=N;return l|0}function Cb(a,b){a=a|0;b=b|0;var c=0,d=0,e=0,f=0,g=0,h=0,i=0,j=0,l=0,m=0,n=0,o=0,p=0,q=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0;y=r;r=r+48|0;v=y;u=y+36|0;h=y+32|0;i=y+28|0;j=y+24|0;l=y+20|0;m=y+16|0;n=y+12|0;w=y+8|0;x=y+4|0;if((k[a+96>>2]|0)==(k[a+92>>2]|0)){r=y;return}c=a+56|0;d=k[c>>2]|0;if((d|0)==(k[a+60>>2]|0)){Ig(a+52|0,b);q=b}else{k[d>>2]=k[b>>2];k[c>>2]=d+4;q=b}s=a+88|0;k[s>>2]=0;d=k[a>>2]|0;c=k[q>>2]|0;b=c+1|0;if((c|0)>=0){b=((b|0)%3|0|0)==0?c+-2|0:b;if((b|0)<0)b=-1073741824;else b=k[(k[d>>2]|0)+(((b>>>0)/3|0)*12|0)+(((b>>>0)%3|0)<<2)>>2]|0;c=(((c>>>0)%3|0|0)==0?2:-1)+c|0;if((c|0)<0){f=b;g=-1073741824}else{f=b;g=k[(k[d>>2]|0)+(((c>>>0)/3|0)*12|0)+(((c>>>0)%3|0)<<2)>>2]|0}}else{f=-1073741824;g=-1073741824}p=a+24|0;b=k[p>>2]|0;c=b+(f>>>5<<2)|0;d=1<<(f&31);e=k[c>>2]|0;if(!(e&d)){k[c>>2]=e|d;k[h>>2]=f;b=k[q>>2]|0;c=b+1|0;if((b|0)>=0)b=((c|0)%3|0|0)==0?b+-2|0:c;k[i>>2]=b;k[u>>2]=k[h>>2];k[v>>2]=k[i>>2];ef(a+36|0,u,v);b=k[p>>2]|0}b=b+(g>>>5<<2)|0;c=1<<(g&31);d=k[b>>2]|0;if(!(d&c)){k[b>>2]=d|c;c=a+36|0;k[j>>2]=g;b=k[q>>2]|0;do if((b|0)>=0)if(!((b>>>0)%3|0)){b=b+2|0;break}else{b=b+-1|0;break}while(0);k[l>>2]=b;k[u>>2]=k[j>>2];k[v>>2]=k[l>>2];ef(c,u,v)}b=k[q>>2]|0;if((b|0)<0)b=-1073741824;else b=k[(k[k[a>>2]>>2]|0)+(((b>>>0)/3|0)*12|0)+(((b>>>0)%3|0)<<2)>>2]|0;c=(k[p>>2]|0)+(b>>>5<<2)|0;d=1<<(b&31);e=k[c>>2]|0;if(!(d&e)){k[c>>2]=e|d;k[m>>2]=b;k[n>>2]=k[q>>2];k[u>>2]=k[m>>2];k[v>>2]=k[n>>2];ef(a+36|0,u,v)}b=k[s>>2]|0;a:do if((b|0)<3){m=a+12|0;n=a+36|0;o=a+92|0;while(1){while(1){e=a+52+(b*12|0)+4|0;c=k[e>>2]|0;if((k[a+52+(b*12|0)>>2]|0)!=(c|0))break;b=b+1|0;if((b|0)>=3)break a}l=c+-4|0;d=k[l>>2]|0;k[e>>2]=l;k[s>>2]=b;k[q>>2]=d;if((d|0)<=-1)break;l=(d>>>0)/3|0;c=k[m>>2]|0;do if(!(k[c+(l>>>5<<2)>>2]&1<<(l&31))){b=d;b:while(1){l=(b|0)/3|0;c=c+(l>>>5<<2)|0;k[c>>2]=1<<(l&31)|k[c>>2];c=k[q>>2]|0;if((c|0)<0)b=-1073741824;else b=k[(k[k[a>>2]>>2]|0)+(((c>>>0)/3|0)*12|0)+(((c>>>0)%3|0)<<2)>>2]|0;d=(k[p>>2]|0)+(b>>>5<<2)|0;e=1<<(b&31);f=k[d>>2]|0;if(!(e&f)){k[d>>2]=f|e;k[w>>2]=b;k[x>>2]=k[q>>2];k[u>>2]=k[w>>2];k[v>>2]=k[x>>2];ef(n,u,v);c=k[q>>2]|0}h=k[a>>2]|0;if((c|0)<0){t=68;break}b=c+1|0;b=((b|0)%3|0|0)==0?c+-2|0:b;if((b|0)<0)l=b;else l=k[(k[h+12>>2]|0)+(b<<2)>>2]|0;b=(((c>>>0)%3|0|0)==0?2:-1)+c|0;if((b|0)>=0)b=k[(k[h+12>>2]|0)+(b<<2)>>2]|0;i=(l|0)<0;j=(l>>>0)/3|0;c=i?-1:j;d=(b|0)<0;e=(b>>>0)/3|0;f=d?-1:e;if(i)g=1;else g=(k[(k[m>>2]|0)+(c>>>5<<2)>>2]&1<<(c&31)|0)!=0;do if(d)if(g){t=68;break b}else t=57;else{if(k[(k[m>>2]|0)+(f>>>5<<2)>>2]&1<<(f&31)|0)if(g){t=68;break b}else{t=57;break}c=k[(k[h>>2]|0)+(e*12|0)+(((b>>>0)%3|0)<<2)>>2]|0;if(!(1<<(c&31)&k[(k[p>>2]|0)+(c>>>5<<2)>>2])){h=(k[o>>2]|0)+(c<<2)|0;e=k[h>>2]|0;k[h>>2]=e+1;e=(e|0)>0?1:2}else e=0;if(g?(e|0)<=(k[s>>2]|0):0)break;k[v>>2]=b;c=a+52+(e*12|0)+4|0;d=k[c>>2]|0;if((d|0)==(k[a+52+(e*12|0)+8>>2]|0))Ig(a+52+(e*12|0)|0,v);else{k[d>>2]=b;k[c>>2]=d+4}if((k[s>>2]|0)>(e|0))k[s>>2]=e;if(g){t=68;break b}else t=57}while(0);if((t|0)==57){t=0;if(i)b=-1073741824;else b=k[(k[k[a>>2]>>2]|0)+(j*12|0)+(((l>>>0)%3|0)<<2)>>2]|0;if(!(1<<(b&31)&k[(k[p>>2]|0)+(b>>>5<<2)>>2])){j=(k[o>>2]|0)+(b<<2)|0;b=k[j>>2]|0;k[j>>2]=b+1;b=(b|0)>0?1:2}else b=0;if((b|0)>(k[s>>2]|0))break;else b=l}k[q>>2]=b;c=k[m>>2]|0}if((t|0)==68){t=0;b=k[s>>2]|0;break}k[v>>2]=l;c=a+52+(b*12|0)+4|0;d=k[c>>2]|0;if((d|0)==(k[a+52+(b*12|0)+8>>2]|0))Ig(a+52+(b*12|0)|0,v);else{k[d>>2]=l;k[c>>2]=d+4}c=k[s>>2]|0;if((c|0)>(b|0))k[s>>2]=b;else b=c}while(0);if((b|0)>=3)break a}r=y;return}while(0);k[q>>2]=-1073741824;r=y;return} -function Nk(a){a=a|0;return k[a+4>>2]|0}function Ok(a){a=a|0;var b=0;b=r;r=r+a|0;r=r+15&-16;return b|0}function Pk(a,b){a=a|0;b=b|0;if(!a)a=0;else a=Yg(a,b,0)|0;return a|0}function Qk(a){a=a|0;return ((k[a+84>>2]|0)-(k[a+80>>2]|0)|0)/12|0|0}function Rk(){var a=0;a=vj(12)|0;Yk(a);return a|0}function Sk(){var a=0;a=vj(40)|0;pj(a);return a|0}function Tk(a,b){a=a|0;b=b|0;return k[(k[a>>2]|0)+(b<<2)>>2]|0}function Uk(a,b,c,d,e,f){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;f=f|0;ea(3);return 0}function Vk(a){a=a|0;o[a>>2]=da(1.0);o[a+4>>2]=da(1.0);return}function Wk(a){a=a|0;return (k[a+8>>2]|0)-(k[a+4>>2]|0)>>2|0}function Xk(a,b,c,d){a=a|0;b=b|0;c=c|0;d=d|0;return Yc(a,b,c,d,0)|0}function Yk(a){a=a|0;k[a>>2]=0;k[a+4>>2]=0;k[a+8>>2]=0;return}function Zk(){var a=0;a=vj(68)|0;_j(a);return a|0}function _k(a){a=a|0;Ka(16929,16811,315,16952)}function $k(a){a=a|0;Ka(16788,16811,304,16908)}function al(a,b,c){a=a|0;b=b|0;c=c|0;return Za[a&127](b|0,c|0)|0}function bl(a){a=a|0;Gk(a);k[a>>2]=5368;return}function cl(a,b,c,d,e,f){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;f=f|0;ea(7)}function dl(){var a=0;a=vj(1)|0;Yl(a);return a|0}function el(a){a=a|0;if(!a)return;Vl(a);return}function fl(a,b){a=a|0;b=b|0;if(!x){x=a;y=b}}function gl(){var a=0;a=vj(92)|0;oj(a);return a|0}function hl(a){a=a|0;return (i[a+32>>0]|0)!=0|0}function il(a,b,c,d,e){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;ea(1)}function jl(a){a=a|0;if(!(k[a+68>>2]|0))Yl(a);return}function kl(){var a=0;a=k[4524]|0;k[4524]=a+0;return a|0}function ll(a){a=a|0;return i[a+24>>0]|0}function ml(a){a=a|0;return m[a+60>>1]|0|0}function nl(a){a=a|0;return k[a+56>>2]|0}function ol(){var a=0;a=k[1565]|0;k[1565]=a+0;return a|0}function pl(a){a=a|0;xg(a);Vl(a);return}function ql(a){a=a|0;return 2}function rl(a,b){a=a|0;b=b|0;return 0}function sl(a){a=a|0;return k[a+40>>2]|0}function tl(a){a=a|0;return k[a+48>>2]|0}function ul(a,b){a=a|0;b=b|0;return Va[a&127](b|0)|0}function vl(a){a=a|0;return k[a+28>>2]|0}function wl(a){a=a|0;Ea(a|0)|0;bj()}function xl(a){a=a|0;return k[a+80>>2]|0}function yl(a,b){a=a|0;b=b|0;r=a;s=b}function zl(a){a=a|0;return k[a+64>>2]|0}function Al(a,b,c,d){a=a|0;b=b|0;c=c|0;d=d|0;ea(9)}function Bl(a,b){a=a|0;b=b|0;Ta[a&127](b|0)}function Cl(a){a=a|0;i[a+12>>0]=0;return}function Dl(a,b,c){a=a|0;b=b|0;c=c|0;ea(0);return 0}function El(a){a=a|0;return (a&255)<<8|a>>8&255|0}function Fl(a){a=a|0;k[a>>2]=6356;return}function Gl(a){a=a|0;return 1}function Hl(a,b){a=+a;b=b|0;return +(+vh(a,b))}function Il(){return 3}function Jl(a,b,c){a=a|0;b=b|0;c=c|0;ea(5)}function Kl(){return -1}function Ll(){return 4}function Ml(){return 1}function Nl(){return 2}function Ol(a,b){a=a|0;b=b|0;ea(8);return 0}function Pl(a){a=a|0;return 17440}function Ql(a){a=a|0;Xa[a&3]()}function Rl(){La()}function Sl(a){a=a|0;return vj(a)|0}function Tl(a){a=a|0;Vl(a);return}function Ul(a){a=a|0;r=a}function Vl(a){a=a|0;sb(a);return}function Wl(a){a=a|0;M=a}function Xl(a){a=a|0;ea(4);return 0}function Yl(a){a=a|0;return}function Zl(a){a=a|0;return 0}function _l(){return M|0}function $l(){return r|0}function am(a){a=a|0;ea(2)}function bm(){return 0}function cm(){ea(6)} - -// EMSCRIPTEN_END_FUNCS -var Ra=[Dl,ak,bi,mi,jg,Ej,sf,$c,Ng,Rh,Uh,Ci,Vg,tg,Ue,ji,_g,Dl,Dl,Dl,Dl,Dl,Dl,Dl,Dl,Dl,Dl,Dl,Dl,Dl,Dl,Dl];var Sa=[il,Ug,qf,il];var Ta=[am,xg,pl,rb,Kh,Ch,fj,$i,Qh,Eh,Eh,Yl,Tl,ii,$h,Zi,Ki,Ki,Ki,Ki,qh,mh,Ph,Dh,Ki,Ki,oh,lh,Ih,xh,Lh,zh,$h,Yl,Tl,Tl,Tl,ai,Th,Fi,qi,Tl,Tl,ci,Vh,Hi,xi,Tl,Tl,Tl,di,Wh,Ii,yi,Tl,Tl,hi,_h,Ri,Di,yg,xk,Yl,Tl,Eh,jh,fh,Ad,Xj,uh,rh,mj,gj,Gi,Si,Ni,rj,jj,Li,wh,th,pd,Jj,Jd,Mj,Yl,Tl,Yl,Yl,Tl,Yl,Tl,jl,xj,am,am,am,am,am,am,am,am,am,am,am,am,am,am,am,am,am,am,am,am,am,am,am,am,am,am,am,am,am,am,am,am,am,am];var Ua=[Uk,mc,fd,Fb,Wb,tb,Eb,gb,pb,Ic,wd,Lb,Yb,ub,Hb,fb,ob,Gc,vd,bh,Xg,Nd,de,pc,Kc,kb,vb,ff,cf,Cd,Ld,nc,Dc,mb,yb,nf,gf,eh,ah,Pd,fe,qc,Oc,lb,xb,of,hf,Fd,Od,oc,Hc,nb,zb,rf,pf,Uk,Uk,Uk,Uk,Uk,Uk,Uk,Uk,Uk];var Va=[Xl,sh,Zl,Gl,Gl,_e,Sh,Gl,Gl,Pj,Zl,Hk,Nk,Zl,Zl,Gl,Zl,Gl,Gl,Ai,ql,Ai,$j,Ai,Jk,ri,Gl,Gl,Ai,ql,Ai,$j,Ai,Jk,ri,Gl,Ee,ql,Zl,Nk,Gl,Zl,Gl,Jk,Gl,ui,ql,ui,$j,ui,Jk,ni,Gl,Gl,ui,ql,ui,$j,ui,Jk,ni,Gl,Zl,Nk,Gl,Zl,Gl,ql,Gl,ui,ql,ui,$j,ui,Jk,ni,Gl,Gl,ui,ql,ui,$j,ui,Jk,ni,Gl,Jg,wb,Ye,ck,gk,ek,jb,Gl,Nk,Ek,tf,Me,vf,hb,Gl,Nk,Ek,ib,Gl,Nk,Ek,Fj,Pl,Xl,Xl,Xl,Xl,Xl,Xl,Xl,Xl,Xl,Xl,Xl,Xl,Xl,Xl,Xl,Xl,Xl,Xl,Xl];var Wa=[Jl,uf,Qe,Df,Rg,Jl,Jl,Jl];var Xa=[cm,Rl,Cg,Lj];var Ya=[cl,Ui,ei,cl];var Za=[Ol,Wc,rl,rl,ik,og,Tb,Ik,rl,ug,lf,ie,Ed,kj,Oi,id,Id,ie,Ed,kj,Oi,id,Id,dk,Le,eg,Ik,rl,ug,Cf,ge,Kd,kj,Ji,hd,Zd,ge,Kd,kj,Ji,hd,Zd,Ik,rl,ug,Cf,ge,Kd,kj,Ji,hd,Zd,ge,Kd,kj,Ji,hd,Zd,se,Se,Oh,dj,wf,Uj,Tj,Rj,fk,Lg,Og,Ob,xe,re,oe,fk,Lg,Og,Ob,fk,Lg,Og,Ob,Ol,Ol,Ol,Ol,Ol,Ol,Ol,Ol,Ol,Ol,Ol,Ol,Ol,Ol,Ol,Ol,Ol,Ol,Ol,Ol,Ol,Ol,Ol,Ol,Ol,Ol,Ol,Ol,Ol,Ol,Ol,Ol,Ol,Ol,Ol,Ol,Ol,Ol,Ol,Ol,Ol,Ol,Ol,Ol,Ol,Ol,Ol];var _a=[Al,ej,oi,Al];return{_emscripten_bind_WebIDLWrapper_DecodeMeshFromBuffer_1:nk,_emscripten_bind_DecoderBuffer_DecoderBuffer_0:Sk,_bitshift64Shl:Qj,_emscripten_bind_Mesh___destroy___0:qk,_emscripten_bind_DracoFloat32Array_DracoFloat32Array_0:Rk,_llvm_cttz_i32:cj,_emscripten_bind_WebIDLWrapper_GetEncodedGeometryType_1:jk,_emscripten_bind_PointAttribute_byte_offset_0:tl,___udivdi3:Xk,_emscripten_bind_PointAttribute_normalized_0:hl,_bitshift64Lshr:Wj,_i64Subtract:Zj,___udivmoddi4:Yc,_emscripten_bind_WebIDLWrapper_GetAttributeFloat_3:Dj,_i64Add:mk,_malloc:cb,_emscripten_enum_draco_GeometryAttribute_Type_NORMAL:Ml,___cxa_is_pointer_type:uk,_emscripten_bind_PointAttribute_size_0:xl,_emscripten_enum_draco_GeometryAttribute_Type_COLOR:Nl,_emscripten_enum_draco_GeometryAttribute_Type_POSITION:bm,_emscripten_bind_VoidPtr___destroy___0:el,_memset:Zh,_emscripten_bind_PointAttribute_attribute_type_0:nl,_sbrk:ti,_emscripten_bind_DecoderBuffer_Init_2:Bk,_emscripten_enum_draco_EncodedGeometryType_TRIANGULAR_MESH:Ml,_emscripten_bind_DecoderBuffer___destroy___0:Ck,_emscripten_bind_PointAttribute_custom_id_0:ml,_emscripten_enum_draco_GeometryAttribute_Type_INVALID:Kl,_emscripten_bind_DracoInt32Array___destroy___0:Yi,_emscripten_bind_Mesh_num_points_0:zl,___uremdi3:lj,_emscripten_bind_Mesh_Mesh_0:gl,_emscripten_bind_WebIDLWrapper_GetAttribute_2:kk,_emscripten_bind_PointAttribute_components_count_0:ll,_emscripten_enum_draco_EncodedGeometryType_POINT_CLOUD:bm,_emscripten_enum_draco_GeometryAttribute_Type_TEX_COORD:Il,_emscripten_enum_draco_GeometryAttribute_Type_GENERIC:Ll,_emscripten_bind_WebIDLWrapper_GetFaceFromMesh_3:Nj,_emscripten_bind_DracoInt32Array_DracoInt32Array_0:Rk,_pthread_self:bm,_emscripten_bind_PointAttribute_data_type_0:vl,_llvm_bswap_i16:El,_emscripten_bind_Mesh_num_attributes_0:Wk,_emscripten_bind_DracoFloat32Array_GetValue_1:yk,_emscripten_bind_DracoFloat32Array___destroy___0:Yi,_emscripten_bind_PointCloud_num_points_0:zl,_emscripten_bind_PointCloud___destroy___0:qk,_emscripten_bind_GeometryAttribute_GeometryAttribute_0:Dk,___muldsi3:Pi,_emscripten_bind_PointAttribute_PointAttribute_0:Mk,_free:sb,_emscripten_enum_draco_EncodedGeometryType_INVALID_GEOMETRY_TYPE:Kl,_emscripten_bind_GeometryAttribute___destroy___0:el,_emscripten_bind_Mesh_num_faces_0:Qk,_emscripten_bind_DracoInt32Array_GetValue_1:Kk,_emscripten_bind_PointAttribute_byte_stride_0:sl,_emscripten_bind_WebIDLWrapper_GetAttributeId_2:Vj,_memcpy:Mh,_emscripten_bind_WebIDLWrapper_WebIDLWrapper_0:dl,_memmove:Xi,___muldi3:sj,_emscripten_bind_PointCloud_num_attributes_0:Wk,_emscripten_bind_WebIDLWrapper___destroy___0:el,_emscripten_bind_WebIDLWrapper_DecodePointCloudFromBuffer_1:nk,_emscripten_bind_WebIDLWrapper_GetAttributeFloatForAllPoints_3:nj,_emscripten_bind_PointCloud_PointCloud_0:Zk,_emscripten_bind_PointAttribute___destroy___0:Gh,___cxa_can_catch:aj,runPostSets:Yj,_emscripten_replace_memory:Qa,stackAlloc:Ok,stackSave:$l,stackRestore:Ul,establishStackSpace:yl,setThrew:fl,setTempRet0:Wl,getTempRet0:_l,dynCall_iiii:Ak,dynCall_viiiii:bk,dynCall_vi:Bl,dynCall_iiiiiii:Hj,dynCall_ii:ul,dynCall_viii:Lk,dynCall_v:Ql,dynCall_viiiiii:Oj,dynCall_iii:al,dynCall_viiii:rk}}) - - -// EMSCRIPTEN_END_ASM -(Module.asmGlobalArg,Module.asmLibraryArg,buffer);var _emscripten_bind_WebIDLWrapper_DecodeMeshFromBuffer_1=Module["_emscripten_bind_WebIDLWrapper_DecodeMeshFromBuffer_1"]=asm["_emscripten_bind_WebIDLWrapper_DecodeMeshFromBuffer_1"];var _emscripten_bind_DecoderBuffer_DecoderBuffer_0=Module["_emscripten_bind_DecoderBuffer_DecoderBuffer_0"]=asm["_emscripten_bind_DecoderBuffer_DecoderBuffer_0"];var _emscripten_bind_Mesh___destroy___0=Module["_emscripten_bind_Mesh___destroy___0"]=asm["_emscripten_bind_Mesh___destroy___0"];var _emscripten_bind_PointCloud___destroy___0=Module["_emscripten_bind_PointCloud___destroy___0"]=asm["_emscripten_bind_PointCloud___destroy___0"];var _i64Subtract=Module["_i64Subtract"]=asm["_i64Subtract"];var ___udivdi3=Module["___udivdi3"]=asm["___udivdi3"];var _emscripten_bind_WebIDLWrapper_GetEncodedGeometryType_1=Module["_emscripten_bind_WebIDLWrapper_GetEncodedGeometryType_1"]=asm["_emscripten_bind_WebIDLWrapper_GetEncodedGeometryType_1"];var _emscripten_bind_PointAttribute_byte_offset_0=Module["_emscripten_bind_PointAttribute_byte_offset_0"]=asm["_emscripten_bind_PointAttribute_byte_offset_0"];var _emscripten_bind_WebIDLWrapper_DecodePointCloudFromBuffer_1=Module["_emscripten_bind_WebIDLWrapper_DecodePointCloudFromBuffer_1"]=asm["_emscripten_bind_WebIDLWrapper_DecodePointCloudFromBuffer_1"];var _emscripten_bind_PointAttribute_normalized_0=Module["_emscripten_bind_PointAttribute_normalized_0"]=asm["_emscripten_bind_PointAttribute_normalized_0"];var _bitshift64Lshr=Module["_bitshift64Lshr"]=asm["_bitshift64Lshr"];var ___muldsi3=Module["___muldsi3"]=asm["___muldsi3"];var _emscripten_bind_WebIDLWrapper_GetAttributeFloat_3=Module["_emscripten_bind_WebIDLWrapper_GetAttributeFloat_3"]=asm["_emscripten_bind_WebIDLWrapper_GetAttributeFloat_3"];var _emscripten_bind_WebIDLWrapper_GetAttributeId_2=Module["_emscripten_bind_WebIDLWrapper_GetAttributeId_2"]=asm["_emscripten_bind_WebIDLWrapper_GetAttributeId_2"];var _emscripten_bind_WebIDLWrapper___destroy___0=Module["_emscripten_bind_WebIDLWrapper___destroy___0"]=asm["_emscripten_bind_WebIDLWrapper___destroy___0"];var ___cxa_is_pointer_type=Module["___cxa_is_pointer_type"]=asm["___cxa_is_pointer_type"];var _emscripten_bind_PointAttribute_size_0=Module["_emscripten_bind_PointAttribute_size_0"]=asm["_emscripten_bind_PointAttribute_size_0"];var _emscripten_enum_draco_GeometryAttribute_Type_COLOR=Module["_emscripten_enum_draco_GeometryAttribute_Type_COLOR"]=asm["_emscripten_enum_draco_GeometryAttribute_Type_COLOR"];var _emscripten_enum_draco_GeometryAttribute_Type_POSITION=Module["_emscripten_enum_draco_GeometryAttribute_Type_POSITION"]=asm["_emscripten_enum_draco_GeometryAttribute_Type_POSITION"];var _emscripten_bind_VoidPtr___destroy___0=Module["_emscripten_bind_VoidPtr___destroy___0"]=asm["_emscripten_bind_VoidPtr___destroy___0"];var _llvm_cttz_i32=Module["_llvm_cttz_i32"]=asm["_llvm_cttz_i32"];var _emscripten_bind_PointAttribute_attribute_type_0=Module["_emscripten_bind_PointAttribute_attribute_type_0"]=asm["_emscripten_bind_PointAttribute_attribute_type_0"];var _sbrk=Module["_sbrk"]=asm["_sbrk"];var _emscripten_bind_DecoderBuffer_Init_2=Module["_emscripten_bind_DecoderBuffer_Init_2"]=asm["_emscripten_bind_DecoderBuffer_Init_2"];var _memcpy=Module["_memcpy"]=asm["_memcpy"];var _emscripten_bind_DecoderBuffer___destroy___0=Module["_emscripten_bind_DecoderBuffer___destroy___0"]=asm["_emscripten_bind_DecoderBuffer___destroy___0"];var _emscripten_bind_PointAttribute_custom_id_0=Module["_emscripten_bind_PointAttribute_custom_id_0"]=asm["_emscripten_bind_PointAttribute_custom_id_0"];var _emscripten_enum_draco_GeometryAttribute_Type_INVALID=Module["_emscripten_enum_draco_GeometryAttribute_Type_INVALID"]=asm["_emscripten_enum_draco_GeometryAttribute_Type_INVALID"];var _emscripten_replace_memory=Module["_emscripten_replace_memory"]=asm["_emscripten_replace_memory"];var _emscripten_enum_draco_EncodedGeometryType_TRIANGULAR_MESH=Module["_emscripten_enum_draco_EncodedGeometryType_TRIANGULAR_MESH"]=asm["_emscripten_enum_draco_EncodedGeometryType_TRIANGULAR_MESH"];var _bitshift64Shl=Module["_bitshift64Shl"]=asm["_bitshift64Shl"];var ___uremdi3=Module["___uremdi3"]=asm["___uremdi3"];var _emscripten_bind_Mesh_Mesh_0=Module["_emscripten_bind_Mesh_Mesh_0"]=asm["_emscripten_bind_Mesh_Mesh_0"];var _emscripten_bind_WebIDLWrapper_GetAttribute_2=Module["_emscripten_bind_WebIDLWrapper_GetAttribute_2"]=asm["_emscripten_bind_WebIDLWrapper_GetAttribute_2"];var _emscripten_bind_DracoFloat32Array_DracoFloat32Array_0=Module["_emscripten_bind_DracoFloat32Array_DracoFloat32Array_0"]=asm["_emscripten_bind_DracoFloat32Array_DracoFloat32Array_0"];var _emscripten_enum_draco_EncodedGeometryType_POINT_CLOUD=Module["_emscripten_enum_draco_EncodedGeometryType_POINT_CLOUD"]=asm["_emscripten_enum_draco_EncodedGeometryType_POINT_CLOUD"];var _emscripten_bind_PointAttribute_components_count_0=Module["_emscripten_bind_PointAttribute_components_count_0"]=asm["_emscripten_bind_PointAttribute_components_count_0"];var ___udivmoddi4=Module["___udivmoddi4"]=asm["___udivmoddi4"];var _emscripten_enum_draco_GeometryAttribute_Type_GENERIC=Module["_emscripten_enum_draco_GeometryAttribute_Type_GENERIC"]=asm["_emscripten_enum_draco_GeometryAttribute_Type_GENERIC"];var _i64Add=Module["_i64Add"]=asm["_i64Add"];var _emscripten_bind_DracoInt32Array_DracoInt32Array_0=Module["_emscripten_bind_DracoInt32Array_DracoInt32Array_0"]=asm["_emscripten_bind_DracoInt32Array_DracoInt32Array_0"];var _pthread_self=Module["_pthread_self"]=asm["_pthread_self"];var _emscripten_bind_PointAttribute_PointAttribute_0=Module["_emscripten_bind_PointAttribute_PointAttribute_0"]=asm["_emscripten_bind_PointAttribute_PointAttribute_0"];var _emscripten_bind_WebIDLWrapper_GetFaceFromMesh_3=Module["_emscripten_bind_WebIDLWrapper_GetFaceFromMesh_3"]=asm["_emscripten_bind_WebIDLWrapper_GetFaceFromMesh_3"];var _llvm_bswap_i16=Module["_llvm_bswap_i16"]=asm["_llvm_bswap_i16"];var _emscripten_bind_Mesh_num_attributes_0=Module["_emscripten_bind_Mesh_num_attributes_0"]=asm["_emscripten_bind_Mesh_num_attributes_0"];var _emscripten_bind_DracoFloat32Array_GetValue_1=Module["_emscripten_bind_DracoFloat32Array_GetValue_1"]=asm["_emscripten_bind_DracoFloat32Array_GetValue_1"];var _emscripten_bind_DracoFloat32Array___destroy___0=Module["_emscripten_bind_DracoFloat32Array___destroy___0"]=asm["_emscripten_bind_DracoFloat32Array___destroy___0"];var _emscripten_bind_PointCloud_num_points_0=Module["_emscripten_bind_PointCloud_num_points_0"]=asm["_emscripten_bind_PointCloud_num_points_0"];var _emscripten_bind_DracoInt32Array___destroy___0=Module["_emscripten_bind_DracoInt32Array___destroy___0"]=asm["_emscripten_bind_DracoInt32Array___destroy___0"];var _emscripten_bind_GeometryAttribute_GeometryAttribute_0=Module["_emscripten_bind_GeometryAttribute_GeometryAttribute_0"]=asm["_emscripten_bind_GeometryAttribute_GeometryAttribute_0"];var runPostSets=Module["runPostSets"]=asm["runPostSets"];var _memset=Module["_memset"]=asm["_memset"];var _emscripten_bind_PointAttribute_data_type_0=Module["_emscripten_bind_PointAttribute_data_type_0"]=asm["_emscripten_bind_PointAttribute_data_type_0"];var _emscripten_bind_Mesh_num_points_0=Module["_emscripten_bind_Mesh_num_points_0"]=asm["_emscripten_bind_Mesh_num_points_0"];var _free=Module["_free"]=asm["_free"];var _emscripten_bind_GeometryAttribute___destroy___0=Module["_emscripten_bind_GeometryAttribute___destroy___0"]=asm["_emscripten_bind_GeometryAttribute___destroy___0"];var _emscripten_enum_draco_EncodedGeometryType_INVALID_GEOMETRY_TYPE=Module["_emscripten_enum_draco_EncodedGeometryType_INVALID_GEOMETRY_TYPE"]=asm["_emscripten_enum_draco_EncodedGeometryType_INVALID_GEOMETRY_TYPE"];var _emscripten_bind_Mesh_num_faces_0=Module["_emscripten_bind_Mesh_num_faces_0"]=asm["_emscripten_bind_Mesh_num_faces_0"];var _emscripten_enum_draco_GeometryAttribute_Type_NORMAL=Module["_emscripten_enum_draco_GeometryAttribute_Type_NORMAL"]=asm["_emscripten_enum_draco_GeometryAttribute_Type_NORMAL"];var _emscripten_bind_PointAttribute_byte_stride_0=Module["_emscripten_bind_PointAttribute_byte_stride_0"]=asm["_emscripten_bind_PointAttribute_byte_stride_0"];var _malloc=Module["_malloc"]=asm["_malloc"];var _emscripten_bind_WebIDLWrapper_WebIDLWrapper_0=Module["_emscripten_bind_WebIDLWrapper_WebIDLWrapper_0"]=asm["_emscripten_bind_WebIDLWrapper_WebIDLWrapper_0"];var _memmove=Module["_memmove"]=asm["_memmove"];var ___muldi3=Module["___muldi3"]=asm["___muldi3"];var _emscripten_bind_PointCloud_num_attributes_0=Module["_emscripten_bind_PointCloud_num_attributes_0"]=asm["_emscripten_bind_PointCloud_num_attributes_0"];var _emscripten_enum_draco_GeometryAttribute_Type_TEX_COORD=Module["_emscripten_enum_draco_GeometryAttribute_Type_TEX_COORD"]=asm["_emscripten_enum_draco_GeometryAttribute_Type_TEX_COORD"];var _emscripten_bind_DracoInt32Array_GetValue_1=Module["_emscripten_bind_DracoInt32Array_GetValue_1"]=asm["_emscripten_bind_DracoInt32Array_GetValue_1"];var _emscripten_bind_WebIDLWrapper_GetAttributeFloatForAllPoints_3=Module["_emscripten_bind_WebIDLWrapper_GetAttributeFloatForAllPoints_3"]=asm["_emscripten_bind_WebIDLWrapper_GetAttributeFloatForAllPoints_3"];var _emscripten_bind_PointCloud_PointCloud_0=Module["_emscripten_bind_PointCloud_PointCloud_0"]=asm["_emscripten_bind_PointCloud_PointCloud_0"];var _emscripten_bind_PointAttribute___destroy___0=Module["_emscripten_bind_PointAttribute___destroy___0"]=asm["_emscripten_bind_PointAttribute___destroy___0"];var ___cxa_can_catch=Module["___cxa_can_catch"]=asm["___cxa_can_catch"];var dynCall_iiii=Module["dynCall_iiii"]=asm["dynCall_iiii"];var dynCall_viiiii=Module["dynCall_viiiii"]=asm["dynCall_viiiii"];var dynCall_vi=Module["dynCall_vi"]=asm["dynCall_vi"];var dynCall_iiiiiii=Module["dynCall_iiiiiii"]=asm["dynCall_iiiiiii"];var dynCall_ii=Module["dynCall_ii"]=asm["dynCall_ii"];var dynCall_viii=Module["dynCall_viii"]=asm["dynCall_viii"];var dynCall_v=Module["dynCall_v"]=asm["dynCall_v"];var dynCall_viiiiii=Module["dynCall_viiiiii"]=asm["dynCall_viiiiii"];var dynCall_iii=Module["dynCall_iii"]=asm["dynCall_iii"];var dynCall_viiii=Module["dynCall_viiii"]=asm["dynCall_viiii"];Runtime.stackAlloc=asm["stackAlloc"];Runtime.stackSave=asm["stackSave"];Runtime.stackRestore=asm["stackRestore"];Runtime.establishStackSpace=asm["establishStackSpace"];Runtime.setTempRet0=asm["setTempRet0"];Runtime.getTempRet0=asm["getTempRet0"];function ExitStatus(status){this.name="ExitStatus";this.message="Program terminated with exit("+status+")";this.status=status}ExitStatus.prototype=new Error;ExitStatus.prototype.constructor=ExitStatus;var initialStackTop;var preloadStartTime=null;var calledMain=false;dependenciesFulfilled=function runCaller(){if(!Module["calledRun"])run();if(!Module["calledRun"])dependenciesFulfilled=runCaller};Module["callMain"]=Module.callMain=function callMain(args){args=args||[];ensureInitRuntime();var argc=args.length+1;function pad(){for(var i=0;i<4-1;i++){argv.push(0)}}var argv=[allocate(intArrayFromString(Module["thisProgram"]),"i8",ALLOC_NORMAL)];pad();for(var i=0;i0){return}preRun();if(runDependencies>0)return;if(Module["calledRun"])return;function doRun(){if(Module["calledRun"])return;Module["calledRun"]=true;if(ABORT)return;ensureInitRuntime();preMain();if(Module["onRuntimeInitialized"])Module["onRuntimeInitialized"]();if(Module["_main"]&&shouldRunNow)Module["callMain"](args);postRun()}if(Module["setStatus"]){Module["setStatus"]("Running...");setTimeout((function(){setTimeout((function(){Module["setStatus"]("")}),1);doRun()}),1)}else{doRun()}}Module["run"]=Module.run=run;function exit(status,implicit){if(implicit&&Module["noExitRuntime"]){return}if(Module["noExitRuntime"]){}else{ABORT=true;EXITSTATUS=status;STACKTOP=initialStackTop;exitRuntime();if(Module["onExit"])Module["onExit"](status)}if(ENVIRONMENT_IS_NODE){process["exit"](status)}else if(ENVIRONMENT_IS_SHELL&&typeof quit==="function"){quit(status)}throw new ExitStatus(status)}Module["exit"]=Module.exit=exit;var abortDecorators=[];function abort(what){if(what!==undefined){Module.print(what);Module.printErr(what);what=JSON.stringify(what)}else{what=""}ABORT=true;EXITSTATUS=1;var extra="\nIf this abort() is unexpected, build with -s ASSERTIONS=1 which can give more information.";var output="abort("+what+") at "+stackTrace()+extra;if(abortDecorators){abortDecorators.forEach((function(decorator){output=decorator(output,what)}))}throw output}Module["abort"]=Module.abort=abort;if(Module["preInit"]){if(typeof Module["preInit"]=="function")Module["preInit"]=[Module["preInit"]];while(Module["preInit"].length>0){Module["preInit"].pop()()}}var shouldRunNow=true;if(Module["noInitialRun"]){shouldRunNow=false}run();function WrapperObject(){}WrapperObject.prototype=Object.create(WrapperObject.prototype);WrapperObject.prototype.constructor=WrapperObject;WrapperObject.prototype.__class__=WrapperObject;WrapperObject.__cache__={};Module["WrapperObject"]=WrapperObject;function getCache(__class__){return(__class__||WrapperObject).__cache__}Module["getCache"]=getCache;function wrapPointer(ptr,__class__){var cache=getCache(__class__);var ret=cache[ptr];if(ret)return ret;ret=Object.create((__class__||WrapperObject).prototype);ret.ptr=ptr;return cache[ptr]=ret}Module["wrapPointer"]=wrapPointer;function castObject(obj,__class__){return wrapPointer(obj.ptr,__class__)}Module["castObject"]=castObject;Module["NULL"]=wrapPointer(0);function destroy(obj){if(!obj["__destroy__"])throw"Error: Cannot destroy object. (Did you create it yourself?)";obj["__destroy__"]();delete getCache(obj.__class__)[obj.ptr]}Module["destroy"]=destroy;function compare(obj1,obj2){return obj1.ptr===obj2.ptr}Module["compare"]=compare;function getPointer(obj){return obj.ptr}Module["getPointer"]=getPointer;function getClass(obj){return obj.__class__}Module["getClass"]=getClass;var ensureCache={buffer:0,size:0,pos:0,temps:[],needed:0,prepare:(function(){if(this.needed){for(var i=0;i=this.size){assert(len>0);this.needed+=len;ret=Module["_malloc"](len);this.temps.push(ret)}else{ret=this.buffer+this.pos;this.pos+=len}return ret}),copy:(function(array,view,offset){var offsetShifted=offset;var bytes=view.BYTES_PER_ELEMENT;switch(bytes){case 2:offsetShifted>>=1;break;case 4:offsetShifted>>=2;break;case 8:offsetShifted>>=3;break}for(var i=0;i3)return false;if(version[0]>0||version[1]>9)return false;return true}Module["isVersionSupported"]=isVersionSupported;var Module;if(!Module)Module=(typeof DracoModule!=="undefined"?DracoModule:null)||{};var moduleOverrides={};for(var key in Module){if(Module.hasOwnProperty(key)){moduleOverrides[key]=Module[key]}}var ENVIRONMENT_IS_WEB=false;var ENVIRONMENT_IS_WORKER=false;var ENVIRONMENT_IS_NODE=false;var ENVIRONMENT_IS_SHELL=false;if(Module["ENVIRONMENT"]){if(Module["ENVIRONMENT"]==="WEB"){ENVIRONMENT_IS_WEB=true}else if(Module["ENVIRONMENT"]==="WORKER"){ENVIRONMENT_IS_WORKER=true}else if(Module["ENVIRONMENT"]==="NODE"){ENVIRONMENT_IS_NODE=true}else if(Module["ENVIRONMENT"]==="SHELL"){ENVIRONMENT_IS_SHELL=true}else{throw new Error("The provided Module['ENVIRONMENT'] value is not valid. It must be one of: WEB|WORKER|NODE|SHELL.")}}else{ENVIRONMENT_IS_WEB=typeof window==="object";ENVIRONMENT_IS_WORKER=typeof importScripts==="function";ENVIRONMENT_IS_NODE=typeof process==="object"&&typeof require==="function"&&!ENVIRONMENT_IS_WEB&&!ENVIRONMENT_IS_WORKER;ENVIRONMENT_IS_SHELL=!ENVIRONMENT_IS_WEB&&!ENVIRONMENT_IS_NODE&&!ENVIRONMENT_IS_WORKER}if(ENVIRONMENT_IS_NODE){if(!Module["print"])Module["print"]=console.log;if(!Module["printErr"])Module["printErr"]=console.warn;var nodeFS;var nodePath;Module["read"]=function read(filename,binary){if(!nodeFS)nodeFS=require("fs");if(!nodePath)nodePath=require("path");filename=nodePath["normalize"](filename);var ret=nodeFS["readFileSync"](filename);return binary?ret:ret.toString()};Module["readBinary"]=function readBinary(filename){var ret=Module["read"](filename,true);if(!ret.buffer){ret=new Uint8Array(ret)}assert(ret.buffer);return ret};Module["load"]=function load(f){globalEval(read(f))};if(!Module["thisProgram"]){if(process["argv"].length>1){Module["thisProgram"]=process["argv"][1].replace(/\\/g,"/")}else{Module["thisProgram"]="unknown-program"}}Module["arguments"]=process["argv"].slice(2);if(typeof module!=="undefined"){module["exports"]=Module}process["on"]("uncaughtException",(function(ex){if(!(ex instanceof ExitStatus)){throw ex}}));Module["inspect"]=(function(){return"[Emscripten Module object]"})}else if(ENVIRONMENT_IS_SHELL){if(!Module["print"])Module["print"]=print;if(typeof printErr!="undefined")Module["printErr"]=printErr;if(typeof read!="undefined"){Module["read"]=read}else{Module["read"]=function read(){throw"no read() available"}}Module["readBinary"]=function readBinary(f){if(typeof readbuffer==="function"){return new Uint8Array(readbuffer(f))}var data=read(f,"binary");assert(typeof data==="object");return data};if(typeof scriptArgs!="undefined"){Module["arguments"]=scriptArgs}else if(typeof arguments!="undefined"){Module["arguments"]=arguments}}else if(ENVIRONMENT_IS_WEB||ENVIRONMENT_IS_WORKER){Module["read"]=function read(url){var xhr=new XMLHttpRequest;xhr.open("GET",url,false);xhr.send(null);return xhr.responseText};Module["readAsync"]=function readAsync(url,onload,onerror){var xhr=new XMLHttpRequest;xhr.open("GET",url,true);xhr.responseType="arraybuffer";xhr.onload=function xhr_onload(){if(xhr.status==200||xhr.status==0&&xhr.response){onload(xhr.response)}else{onerror()}};xhr.onerror=onerror;xhr.send(null)};if(typeof arguments!="undefined"){Module["arguments"]=arguments}if(typeof console!=="undefined"){if(!Module["print"])Module["print"]=function print(x){console.log(x)};if(!Module["printErr"])Module["printErr"]=function printErr(x){console.warn(x)}}else{var TRY_USE_DUMP=false;if(!Module["print"])Module["print"]=TRY_USE_DUMP&&typeof dump!=="undefined"?(function(x){dump(x)}):(function(x){})}if(ENVIRONMENT_IS_WORKER){Module["load"]=importScripts}if(typeof Module["setWindowTitle"]==="undefined"){Module["setWindowTitle"]=(function(title){document.title=title})}}else{throw"Unknown runtime environment. Where are we?"}function globalEval(x){eval.call(null,x)}if(!Module["load"]&&Module["read"]){Module["load"]=function load(f){globalEval(Module["read"](f))}}if(!Module["print"]){Module["print"]=(function(){})}if(!Module["printErr"]){Module["printErr"]=Module["print"]}if(!Module["arguments"]){Module["arguments"]=[]}if(!Module["thisProgram"]){Module["thisProgram"]="./this.program"}Module.print=Module["print"];Module.printErr=Module["printErr"];Module["preRun"]=[];Module["postRun"]=[];for(var key in moduleOverrides){if(moduleOverrides.hasOwnProperty(key)){Module[key]=moduleOverrides[key]}}moduleOverrides=undefined;var Runtime={setTempRet0:(function(value){tempRet0=value}),getTempRet0:(function(){return tempRet0}),stackSave:(function(){return STACKTOP}),stackRestore:(function(stackTop){STACKTOP=stackTop}),getNativeTypeSize:(function(type){switch(type){case"i1":case"i8":return 1;case"i16":return 2;case"i32":return 4;case"i64":return 8;case"float":return 4;case"double":return 8;default:{if(type[type.length-1]==="*"){return Runtime.QUANTUM_SIZE}else if(type[0]==="i"){var bits=parseInt(type.substr(1));assert(bits%8===0);return bits/8}else{return 0}}}}),getNativeFieldSize:(function(type){return Math.max(Runtime.getNativeTypeSize(type),Runtime.QUANTUM_SIZE)}),STACK_ALIGN:16,prepVararg:(function(ptr,type){if(type==="double"||type==="i64"){if(ptr&7){assert((ptr&7)===4);ptr+=4}}else{assert((ptr&3)===0)}return ptr}),getAlignSize:(function(type,size,vararg){if(!vararg&&(type=="i64"||type=="double"))return 8;if(!type)return Math.min(size,8);return Math.min(size||(type?Runtime.getNativeFieldSize(type):0),Runtime.QUANTUM_SIZE)}),dynCall:(function(sig,ptr,args){if(args&&args.length){return Module["dynCall_"+sig].apply(null,[ptr].concat(args))}else{return Module["dynCall_"+sig].call(null,ptr)}}),functionPointers:[],addFunction:(function(func){for(var i=0;i>2];var end=(ret+size+15|0)&-16;HEAP32[DYNAMICTOP_PTR>>2]=end;if(end>=TOTAL_MEMORY){var success=enlargeMemory();if(!success){HEAP32[DYNAMICTOP_PTR>>2]=ret;return 0}}return ret}),alignMemory:(function(size,quantum){var ret=size=Math.ceil(size/(quantum?quantum:16))*(quantum?quantum:16);return ret}),makeBigInt:(function(low,high,unsigned){var ret=unsigned?+(low>>>0)+ +(high>>>0)*+4294967296:+(low>>>0)+ +(high|0)*+4294967296;return ret}),GLOBAL_BASE:8,QUANTUM_SIZE:4,__dummy__:0};var ABORT=0;var EXITSTATUS=0;function assert(condition,text){if(!condition){abort("Assertion failed: "+text)}}function getCFunc(ident){var func=Module["_"+ident];if(!func){try{func=eval("_"+ident)}catch(e){}}assert(func,"Cannot call unknown function "+ident+" (perhaps LLVM optimizations or closure removed it?)");return func}var ccall;((function(){var JSfuncs={"stackSave":(function(){Runtime.stackSave()}),"stackRestore":(function(){Runtime.stackRestore()}),"arrayToC":(function(arr){var ret=Runtime.stackAlloc(arr.length);writeArrayToMemory(arr,ret);return ret}),"stringToC":(function(str){var ret=0;if(str!==null&&str!==undefined&&str!==0){var len=(str.length<<2)+1;ret=Runtime.stackAlloc(len);stringToUTF8(str,ret,len)}return ret})};var toC={"string":JSfuncs["stringToC"],"array":JSfuncs["arrayToC"]};ccall=function ccallFunc(ident,returnType,argTypes,args,opts){var func=getCFunc(ident);var cArgs=[];var stack=0;if(args){for(var i=0;i>0]=value;break;case"i8":HEAP8[ptr>>0]=value;break;case"i16":HEAP16[ptr>>1]=value;break;case"i32":HEAP32[ptr>>2]=value;break;case"i64":tempI64=[value>>>0,(tempDouble=value,+Math_abs(tempDouble)>=+1?tempDouble>+0?(Math_min(+Math_floor(tempDouble/+4294967296),+4294967295)|0)>>>0:~~+Math_ceil((tempDouble- +(~~tempDouble>>>0))/+4294967296)>>>0:0)],HEAP32[ptr>>2]=tempI64[0],HEAP32[ptr+4>>2]=tempI64[1];break;case"float":HEAPF32[ptr>>2]=value;break;case"double":HEAPF64[ptr>>3]=value;break;default:abort("invalid type for setValue: "+type)}}function getValue(ptr,type,noSafe){type=type||"i8";if(type.charAt(type.length-1)==="*")type="i32";switch(type){case"i1":return HEAP8[ptr>>0];case"i8":return HEAP8[ptr>>0];case"i16":return HEAP16[ptr>>1];case"i32":return HEAP32[ptr>>2];case"i64":return HEAP32[ptr>>2];case"float":return HEAPF32[ptr>>2];case"double":return HEAPF64[ptr>>3];default:abort("invalid type for setValue: "+type)}return null}var ALLOC_NORMAL=0;var ALLOC_STATIC=2;var ALLOC_NONE=4;function allocate(slab,types,allocator,ptr){var zeroinit,size;if(typeof slab==="number"){zeroinit=true;size=slab}else{zeroinit=false;size=slab.length}var singleType=typeof types==="string"?types:null;var ret;if(allocator==ALLOC_NONE){ret=ptr}else{ret=[typeof _malloc==="function"?_malloc:Runtime.staticAlloc,Runtime.stackAlloc,Runtime.staticAlloc,Runtime.dynamicAlloc][allocator===undefined?ALLOC_STATIC:allocator](Math.max(size,singleType?1:types.length))}if(zeroinit){var ptr=ret,stop;assert((ret&3)==0);stop=ret+(size&~3);for(;ptr>2]=0}stop=ret+size;while(ptr>0]=0}return ret}if(singleType==="i8"){if(slab.subarray||slab.slice){HEAPU8.set(slab,ret)}else{HEAPU8.set(new Uint8Array(slab),ret)}return ret}var i=0,type,typeSize,previousType;while(i>0];hasUtf|=t;if(t==0&&!length)break;i++;if(length&&i==length)break}if(!length)length=i;var ret="";if(hasUtf<128){var MAX_CHUNK=1024;var curr;while(length>0){curr=String.fromCharCode.apply(String,HEAPU8.subarray(ptr,ptr+Math.min(length,MAX_CHUNK)));ret=ret?ret+curr:curr;ptr+=MAX_CHUNK;length-=MAX_CHUNK}return ret}return Module["UTF8ToString"](ptr)}var UTF8Decoder=typeof TextDecoder!=="undefined"?new TextDecoder("utf8"):undefined;function UTF8ArrayToString(u8Array,idx){var endPtr=idx;while(u8Array[endPtr])++endPtr;if(endPtr-idx>16&&u8Array.subarray&&UTF8Decoder){return UTF8Decoder.decode(u8Array.subarray(idx,endPtr))}else{var u0,u1,u2,u3,u4,u5;var str="";while(1){u0=u8Array[idx++];if(!u0)return str;if(!(u0&128)){str+=String.fromCharCode(u0);continue}u1=u8Array[idx++]&63;if((u0&224)==192){str+=String.fromCharCode((u0&31)<<6|u1);continue}u2=u8Array[idx++]&63;if((u0&240)==224){u0=(u0&15)<<12|u1<<6|u2}else{u3=u8Array[idx++]&63;if((u0&248)==240){u0=(u0&7)<<18|u1<<12|u2<<6|u3}else{u4=u8Array[idx++]&63;if((u0&252)==248){u0=(u0&3)<<24|u1<<18|u2<<12|u3<<6|u4}else{u5=u8Array[idx++]&63;u0=(u0&1)<<30|u1<<24|u2<<18|u3<<12|u4<<6|u5}}}if(u0<65536){str+=String.fromCharCode(u0)}else{var ch=u0-65536;str+=String.fromCharCode(55296|ch>>10,56320|ch&1023)}}}}function stringToUTF8Array(str,outU8Array,outIdx,maxBytesToWrite){if(!(maxBytesToWrite>0))return 0;var startIdx=outIdx;var endIdx=outIdx+maxBytesToWrite-1;for(var i=0;i=55296&&u<=57343)u=65536+((u&1023)<<10)|str.charCodeAt(++i)&1023;if(u<=127){if(outIdx>=endIdx)break;outU8Array[outIdx++]=u}else if(u<=2047){if(outIdx+1>=endIdx)break;outU8Array[outIdx++]=192|u>>6;outU8Array[outIdx++]=128|u&63}else if(u<=65535){if(outIdx+2>=endIdx)break;outU8Array[outIdx++]=224|u>>12;outU8Array[outIdx++]=128|u>>6&63;outU8Array[outIdx++]=128|u&63}else if(u<=2097151){if(outIdx+3>=endIdx)break;outU8Array[outIdx++]=240|u>>18;outU8Array[outIdx++]=128|u>>12&63;outU8Array[outIdx++]=128|u>>6&63;outU8Array[outIdx++]=128|u&63}else if(u<=67108863){if(outIdx+4>=endIdx)break;outU8Array[outIdx++]=248|u>>24;outU8Array[outIdx++]=128|u>>18&63;outU8Array[outIdx++]=128|u>>12&63;outU8Array[outIdx++]=128|u>>6&63;outU8Array[outIdx++]=128|u&63}else{if(outIdx+5>=endIdx)break;outU8Array[outIdx++]=252|u>>30;outU8Array[outIdx++]=128|u>>24&63;outU8Array[outIdx++]=128|u>>18&63;outU8Array[outIdx++]=128|u>>12&63;outU8Array[outIdx++]=128|u>>6&63;outU8Array[outIdx++]=128|u&63}}outU8Array[outIdx]=0;return outIdx-startIdx}function stringToUTF8(str,outPtr,maxBytesToWrite){return stringToUTF8Array(str,HEAPU8,outPtr,maxBytesToWrite)}function lengthBytesUTF8(str){var len=0;for(var i=0;i=55296&&u<=57343)u=65536+((u&1023)<<10)|str.charCodeAt(++i)&1023;if(u<=127){++len}else if(u<=2047){len+=2}else if(u<=65535){len+=3}else if(u<=2097151){len+=4}else if(u<=67108863){len+=5}else{len+=6}}return len}var UTF16Decoder=typeof TextDecoder!=="undefined"?new TextDecoder("utf-16le"):undefined;function demangle(func){var hasLibcxxabi=!!Module["___cxa_demangle"];if(hasLibcxxabi){try{var s=func.substr(1);var len=lengthBytesUTF8(s)+1;var buf=_malloc(len);stringToUTF8(s,buf,len);var status=_malloc(4);var ret=Module["___cxa_demangle"](buf,0,0,status);if(getValue(status,"i32")===0&&ret){return Pointer_stringify(ret)}}catch(e){}finally{if(buf)_free(buf);if(status)_free(status);if(ret)_free(ret)}return func}Runtime.warnOnce("warning: build with -s DEMANGLE_SUPPORT=1 to link in libcxxabi demangling");return func}function demangleAll(text){return text.replace(/__Z[\w\d_]+/g,(function(x){var y=demangle(x);return x===y?x:x+" ["+y+"]"}))}function jsStackTrace(){var err=new Error;if(!err.stack){try{throw new Error(0)}catch(e){err=e}if(!err.stack){return"(no stack trace available)"}}return err.stack.toString()}function stackTrace(){var js=jsStackTrace();if(Module["extraStackTrace"])js+="\n"+Module["extraStackTrace"]();return demangleAll(js)}function alignMemoryPage(x){if(x%4096>0){x+=4096-x%4096}return x}var HEAP;var buffer;var HEAP8,HEAPU8,HEAP16,HEAPU16,HEAP32,HEAPU32,HEAPF32,HEAPF64;function updateGlobalBuffer(buf){Module["buffer"]=buffer=buf}function updateGlobalBufferViews(){Module["HEAP8"]=HEAP8=new Int8Array(buffer);Module["HEAP16"]=HEAP16=new Int16Array(buffer);Module["HEAP32"]=HEAP32=new Int32Array(buffer);Module["HEAPU8"]=HEAPU8=new Uint8Array(buffer);Module["HEAPU16"]=HEAPU16=new Uint16Array(buffer);Module["HEAPU32"]=HEAPU32=new Uint32Array(buffer);Module["HEAPF32"]=HEAPF32=new Float32Array(buffer);Module["HEAPF64"]=HEAPF64=new Float64Array(buffer)}var STATIC_BASE,STATICTOP,staticSealed;var STACK_BASE,STACKTOP,STACK_MAX;var DYNAMIC_BASE,DYNAMICTOP_PTR;STATIC_BASE=STATICTOP=STACK_BASE=STACKTOP=STACK_MAX=DYNAMIC_BASE=DYNAMICTOP_PTR=0;staticSealed=false;function abortOnCannotGrowMemory(){abort("Cannot enlarge memory arrays. Either (1) compile with -s TOTAL_MEMORY=X with X higher than the current value "+TOTAL_MEMORY+", (2) compile with -s ALLOW_MEMORY_GROWTH=1 which adjusts the size at runtime but prevents some optimizations, (3) set Module.TOTAL_MEMORY to a higher value before the program runs, or if you want malloc to return NULL (0) instead of this abort, compile with -s ABORTING_MALLOC=0 ")}if(!Module["reallocBuffer"])Module["reallocBuffer"]=(function(size){var ret;try{if(ArrayBuffer.transfer){ret=ArrayBuffer.transfer(buffer,size)}else{var oldHEAP8=HEAP8;ret=new ArrayBuffer(size);var temp=new Int8Array(ret);temp.set(oldHEAP8)}}catch(e){return false}var success=_emscripten_replace_memory(ret);if(!success)return false;return ret});function enlargeMemory(){var LIMIT=Math.pow(2,31);if(HEAP32[DYNAMICTOP_PTR>>2]>=LIMIT)return false;while(TOTAL_MEMORY>2]){if(TOTAL_MEMORY=LIMIT)return false;var replacement=Module["reallocBuffer"](TOTAL_MEMORY);if(!replacement)return false;updateGlobalBuffer(replacement);updateGlobalBufferViews();return true}var byteLength;try{byteLength=Function.prototype.call.bind(Object.getOwnPropertyDescriptor(ArrayBuffer.prototype,"byteLength").get);byteLength(new ArrayBuffer(4))}catch(e){byteLength=(function(buffer){return buffer.byteLength})}var TOTAL_STACK=Module["TOTAL_STACK"]||5242880;var TOTAL_MEMORY=Module["TOTAL_MEMORY"]||16777216;var WASM_PAGE_SIZE=64*1024;var totalMemory=WASM_PAGE_SIZE;while(totalMemory0){var callback=callbacks.shift();if(typeof callback=="function"){callback();continue}var func=callback.func;if(typeof func==="number"){if(callback.arg===undefined){Runtime.dynCall("v",func)}else{Runtime.dynCall("vi",func,[callback.arg])}}else{func(callback.arg===undefined?null:callback.arg)}}}var __ATPRERUN__=[];var __ATINIT__=[];var __ATMAIN__=[];var __ATEXIT__=[];var __ATPOSTRUN__=[];var runtimeInitialized=false;var runtimeExited=false;function preRun(){if(Module["preRun"]){if(typeof Module["preRun"]=="function")Module["preRun"]=[Module["preRun"]];while(Module["preRun"].length){addOnPreRun(Module["preRun"].shift())}}callRuntimeCallbacks(__ATPRERUN__)}function ensureInitRuntime(){if(runtimeInitialized)return;runtimeInitialized=true;callRuntimeCallbacks(__ATINIT__)}function preMain(){callRuntimeCallbacks(__ATMAIN__)}function exitRuntime(){callRuntimeCallbacks(__ATEXIT__);runtimeExited=true}function postRun(){if(Module["postRun"]){if(typeof Module["postRun"]=="function")Module["postRun"]=[Module["postRun"]];while(Module["postRun"].length){addOnPostRun(Module["postRun"].shift())}}callRuntimeCallbacks(__ATPOSTRUN__)}function addOnPreRun(cb){__ATPRERUN__.unshift(cb)}function addOnPreMain(cb){__ATMAIN__.unshift(cb)}function addOnPostRun(cb){__ATPOSTRUN__.unshift(cb)}function intArrayFromString(stringy,dontAddNull,length){var len=length>0?length:lengthBytesUTF8(stringy)+1;var u8array=new Array(len);var numBytesWritten=stringToUTF8Array(stringy,u8array,0,u8array.length);if(dontAddNull)u8array.length=numBytesWritten;return u8array}function writeArrayToMemory(array,buffer){HEAP8.set(array,buffer)}function writeAsciiToMemory(str,buffer,dontAddNull){for(var i=0;i>0]=str.charCodeAt(i)}if(!dontAddNull)HEAP8[buffer>>0]=0}if(!Math["imul"]||Math["imul"](4294967295,5)!==-5)Math["imul"]=function imul(a,b){var ah=a>>>16;var al=a&65535;var bh=b>>>16;var bl=b&65535;return al*bl+(ah*bl+al*bh<<16)|0};Math.imul=Math["imul"];if(!Math["fround"]){var froundBuffer=new Float32Array(1);Math["fround"]=(function(x){froundBuffer[0]=x;return froundBuffer[0]})}Math.fround=Math["fround"];if(!Math["clz32"])Math["clz32"]=(function(x){x=x>>>0;for(var i=0;i<32;i++){if(x&1<<31-i)return i}return 32});Math.clz32=Math["clz32"];if(!Math["trunc"])Math["trunc"]=(function(x){return x<0?Math.ceil(x):Math.floor(x)});Math.trunc=Math["trunc"];var Math_abs=Math.abs;var Math_cos=Math.cos;var Math_sin=Math.sin;var Math_tan=Math.tan;var Math_acos=Math.acos;var Math_asin=Math.asin;var Math_atan=Math.atan;var Math_atan2=Math.atan2;var Math_exp=Math.exp;var Math_log=Math.log;var Math_sqrt=Math.sqrt;var Math_ceil=Math.ceil;var Math_floor=Math.floor;var Math_pow=Math.pow;var Math_imul=Math.imul;var Math_fround=Math.fround;var Math_round=Math.round;var Math_min=Math.min;var Math_clz32=Math.clz32;var Math_trunc=Math.trunc;var runDependencies=0;var runDependencyWatcher=null;var dependenciesFulfilled=null;Module["preloadedImages"]={};Module["preloadedAudios"]={};var ASM_CONSTS=[];STATIC_BASE=8;STATICTOP=STATIC_BASE+17280;__ATINIT__.push();allocate([160,22,0,0,218,24,0,0,200,22,0,0,239,24,0,0,8,0,0,0,0,0,0,0,160,22,0,0,253,24,0,0,160,22,0,0,25,25,0,0,160,22,0,0,59,25,0,0,200,22,0,0,212,31,0,0,48,0,0,0,0,0,0,0,200,22,0,0,96,25,0,0,88,0,0,0,0,0,0,0,200,22,0,0,175,25,0,0,104,0,0,0,0,0,0,0,200,22,0,0,244,25,0,0,120,0,0,0,0,0,0,0,160,22,0,0,33,26,0,0,200,22,0,0,69,26,0,0,144,0,0,0,0,0,0,0,200,22,0,0,200,26,0,0,88,0,0,0,0,0,0,0,200,22,0,0,66,27,0,0,144,0,0,0,0,0,0,0,200,22,0,0,217,27,0,0,144,0,0,0,0,0,0,0,200,22,0,0,101,28,0,0,144,0,0,0,0,0,0,0,200,22,0,0,236,28,0,0,224,0,0,0,0,0,0,0,200,22,0,0,124,29,0,0,88,0,0,0,0,0,0,0,200,22,0,0,3,30,0,0,224,0,0,0,0,0,0,0,200,22,0,0,167,30,0,0,224,0,0,0,0,0,0,0,200,22,0,0,64,31,0,0,224,0,0,0,0,0,0,0,200,22,0,0,0,32,0,0,56,0,0,0,0,0,0,0,200,22,0,0,124,49,0,0,56,0,0,0,0,0,0,0,200,22,0,0,196,34,0,0,80,1,0,0,0,0,0,0,200,22,0,0,43,35,0,0,104,0,0,0,0,0,0,0,200,22,0,0,250,35,0,0,112,1,0,0,0,0,0,0,200,22,0,0,149,36,0,0,80,1,0,0,0,0,0,0,200,22,0,0,39,37,0,0,112,1,0,0,0,0,0,0,200,22,0,0,214,37,0,0,112,1,0,0,0,0,0,0,200,22,0,0,122,38,0,0,112,1,0,0,0,0,0,0,200,22,0,0,25,39,0,0,192,1,0,0,0,0,0,0,200,22,0,0,193,39,0,0,80,1,0,0,0,0,0,0,200,22,0,0,96,40,0,0,192,1,0,0,0,0,0,0,200,22,0,0,28,41,0,0,192,1,0,0,0,0,0,0,200,22,0,0,205,41,0,0,192,1,0,0,0,0,0,0,200,22,0,0,213,42,0,0,16,2,0,0,0,0,0,0,200,22,0,0,47,43,0,0,104,0,0,0,0,0,0,0,200,22,0,0,127,43,0,0,48,2,0,0,0,0,0,0,200,22,0,0,13,44,0,0,16,2,0,0,0,0,0,0,200,22,0,0,146,44,0,0,48,2,0,0,0,0,0,0,200,22,0,0,52,45,0,0,48,2,0,0,0,0,0,0,200,22,0,0,203,45,0,0,48,2,0,0,0,0,0,0,200,22,0,0,93,46,0,0,128,2,0,0,0,0,0,0,200,22,0,0,248,46,0,0,16,2,0,0,0,0,0,0,200,22,0,0,138,47,0,0,128,2,0,0,0,0,0,0,200,22,0,0,57,48,0,0,128,2,0,0,0,0,0,0,200,22,0,0,221,48,0,0,128,2,0,0,0,0,0,0,200,22,0,0,167,49,0,0,32,0,0,0,0,0,0,0,200,22,0,0,11,50,0,0,40,0,0,0,0,0,0,0,200,22,0,0,215,49,0,0,240,2,0,0,0,0,0,0,160,22,0,0,241,49,0,0,200,22,0,0,49,50,0,0,40,0,0,0,0,0,0,0,200,22,0,0,79,51,0,0,32,0,0,0,0,0,0,0,160,22,0,0,159,63,0,0,200,22,0,0,255,63,0,0,48,3,0,0,0,0,0,0,200,22,0,0,172,63,0,0,64,3,0,0,0,0,0,0,160,22,0,0,205,63,0,0,200,22,0,0,218,63,0,0,32,3,0,0,0,0,0,0,200,22,0,0,240,64,0,0,24,3,0,0,0,0,0,0,200,22,0,0,33,65,0,0,48,3,0,0,0,0,0,0,200,22,0,0,253,64,0,0,104,3,0,0,0,0,0,0,0,0,0,192,0,0,0,192,0,0,0,192,0,0,0,192,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,0,0,0,86,85,85,85,2,0,0,0,0,0,0,0,2,0,0,0,154,153,153,153,3,0,0,0,86,85,85,85,3,0,0,0,37,73,146,36,3,0,0,0,0,0,0,0,3,0,0,0,200,113,28,199,4,0,0,0,154,153,153,153,4,0,0,0,70,23,93,116,4,0,0,0,86,85,85,85,4,0,0,0,60,177,19,59,4,0,0,0,37,73,146,36,4,0,0,0,18,17,17,17,4,0,0,0,0,0,0,0,4,0,0,0,226,225,225,225,5,0,0,0,200,113,28,199,5,0,0,0,203,107,40,175,5,0,0,0,154,153,153,153,5,0,0,0,135,97,24,134,5,0,0,0,70,23,93,116,5,0,0,0,145,133,44,100,5,0,0,0,86,85,85,85,5,0,0,0,123,20,174,71,5,0,0,0,60,177,19,59,5,0,0,0,219,75,104,47,5,0,0,0,37,73,146,36,5,0,0,0,18,150,123,26,5,0,0,0,18,17,17,17,5,0,0,0,133,16,66,8,5,0,0,0,0,0,0,0,5,0,0,0,8,31,124,240,6,0,0,0,226,225,225,225,6,0,0,0,213,65,29,212,6,0,0,0,200,113,28,199,6,0,0,0,77,145,207,186,6,0,0,0,203,107,40,175,6,0,0,0,165,65,26,164,6,0,0,0,154,153,153,153,6,0,0,0,250,24,156,143,6,0,0,0,135,97,24,134,6,0,0,0,24,244,5,125,6,0,0,0,70,23,93,116,6,0,0,0,109,193,22,108,6,0,0,0,145,133,44,100,6,0,0,0,186,130,152,92,6,0,0,0,86,85,85,85,6,0,0,0,115,10,94,78,6,0,0,0,123,20,174,71,6,0,0,0,66,65,65,65,6,0,0,0,60,177,19,59,6,0,0,0,179,207,33,53,6,0,0,0,219,75,104,47,6,0,0,0,159,18,228,41,6,0,0,0,37,73,146,36,6,0,0,0,221,71,112,31,6,0,0,0,18,150,123,26,6,0,0,0,248,229,177,21,6,0,0,0,18,17,17,17,6,0,0,0,252,20,151,12,6,0,0,0,133,16,66,8,6,0,0,0,5,65,16,4,6,0,0,0,0,0,0,0,6,0,0,0,249,129,31,248,7,0,0,0,8,31,124,240,7,0,0,0,192,26,19,233,7,0,0,0,226,225,225,225,7,0,0,0,108,7,230,218,7,0,0,0,213,65,29,212,7,0,0,0,145,104,133,205,7,0,0,0,200,113,28,199,7,0,0,0,57,112,224,192,7,0,0,0,77,145,207,186,7,0,0,0,79,27,232,180,7,0,0,0,203,107,40,175,7,0,0,0,7,246,142,169,7,0,0,0,165,65,26,164,7,0,0,0,82,233,200,158,7,0,0,0,154,153,153,153,7,0,0,0,206,15,139,148,7,0,0,0,250,24,156,143,7,0,0,0,247,144,203,138,7,0,0,0,135,97,24,134,7,0,0,0,130,129,129,129,7,0,0,0,24,244,5,125,7,0,0,0,24,200,164,120,7,0,0,0,70,23,93,116,7,0,0,0,193,5,46,112,7,0,0,0,109,193,22,108,7,0,0,0,105,129,22,104,7,0,0,0,145,133,44,100,7,0,0,0,6,22,88,96,7,0,0,0,186,130,152,92,7,0,0,0,9,35,237,88,7,0,0,0,86,85,85,85,7,0,0,0,175,126,208,81,7,0,0,0,115,10,94,78,7,0,0,0,6,106,253,74,7,0,0,0,123,20,174,71,7,0,0,0,87,134,111,68,7,0,0,0,66,65,65,65,7,0,0,0,207,203,34,62,7,0,0,0,60,177,19,59,7,0,0,0,57,129,19,56,7,0,0,0,179,207,33,53,7,0,0,0,163,52,62,50,7,0,0,0,219,75,104,47,7,0,0,0,217,180,159,44,7,0,0,0,159,18,228,41,7,0,0,0,137,11,53,39,7,0,0,0,37,73,146,36,7,0,0,0,19,120,251,33,7,0,0,0,221,71,112,31,7,0,0,0,219,106,240,28,7,0,0,0,18,150,123,26,7,0,0,0,25,129,17,24,7,0,0,0,248,229,177,21,7,0,0,0,20,129,92,19,7,0,0,0,18,17,17,17,7,0,0,0,191,86,207,14,7,0,0,0,252,20,151,12,7,0,0,0,167,16,104,10,7,0,0,0,133,16,66,8,7,0,0,0,48,221,36,6,7,0,0,0,5,65,16,4,7,0,0,0,17,8,4,2,7,0,0,0,0,0,0,0,7,0,0,0,32,240,7,252,8,0,0,0,249,129,31,248,8,0,0,0,229,89,70,244,8,0,0,0,8,31,124,240,8,0,0,0,49,123,192,236,8,0,0,0,192,26,19,233,8,0,0,0,145,172,115,229,8,0,0,0,226,225,225,225,8,0,0,0,64,110,93,222,8,0,0,0,108,7,230,218,8,0,0,0,76,101,123,215,8,0,0,0,213,65,29,212,8,0,0,0,247,88,203,208,8,0,0,0,145,104,133,205,8,0,0,0,86,48,75,202,8,0,0,0,200,113,28,199,8,0,0,0,29,240,248,195,8,0,0,0,57,112,224,192,8,0,0,0,154,184,210,189,8,0,0,0,77,145,207,186,8,0,0,0,222,195,214,183,8,0,0,0,79,27,232,180,8,0,0,0,7,100,3,178,8,0,0,0,203,107,40,175,8,0,0,0,173,1,87,172,8,0,0,0,7,246,142,169,8,0,0,0,110,26,208,166,8,0,0,0,165,65,26,164,8,0,0,0,152,63,109,161,8,0,0,0,82,233,200,158,8,0,0,0,239,20,45,156,8,0,0,0,154,153,153,153,8,0,0,0,129,79,14,151,8,0,0,0,206,15,139,148,8,0,0,0,158,180,15,146,8,0,0,0,250,24,156,143,8,0,0,0,212,24,48,141,8,0,0,0,247,144,203,138,8,0,0,0,11,95,110,136,8,0,0,0,135,97,24,134,8,0,0,0,172,119,201,131,8,0,0,0,130,129,129,129,8,0,0,0,209,95,64,127,8,0,0,0,24,244,5,125,8,0,0,0,143,32,210,122,8,0,0,0,24,200,164,120,8,0,0,0,68,206,125,118,8,0,0,0,70,23,93,116,8,0,0,0,245,135,66,114,8,0,0,0,193,5,46,112,8,0,0,0,181,118,31,110,8,0,0,0,109,193,22,108,8,0,0,0,22,205,19,106,8,0,0,0,105,129,22,104,8,0,0,0,166,198,30,102,8,0,0,0,145,133,44,100,8,0,0,0,113,167,63,98,8,0,0,0,6,22,88,96,8,0,0,0,142,187,117,94,8,0,0,0,186,130,152,92,8,0,0,0,177,86,192,90,8,0,0,0,9,35,237,88,8,0,0,0,198,211,30,87,8,0,0,0,86,85,85,85,8,0,0,0,144,148,144,83,8,0,0,0,175,126,208,81,8,0,0,0,81,1,21,80,8,0,0,0,115,10,94,78,8,0,0,0,115,136,171,76,8,0,0,0,6,106,253,74,8,0,0,0,60,158,83,73,8,0,0,0,123,20,174,71,8,0,0,0,128,188,12,70,8,0,0,0,87,134,111,68,8,0,0,0,94,98,214,66,8,0,0,0,66,65,65,65,8,0,0,0,252,19,176,63,8,0,0,0,207,203,34,62,8,0,0,0,72,90,153,60,8,0,0,0,60,177,19,59,8,0,0,0,194,194,145,57,8,0,0,0,57,129,19,56,8,0,0,0,62,223,152,54,8,0,0,0,179,207,33,53,8,0,0,0,182,69,174,51,8,0,0,0,163,52,62,50,8,0,0,0,20,144,209,48,8,0,0,0,219,75,104,47,8,0,0,0,5,92,2,46,8,0,0,0,217,180,159,44,8,0,0,0,209,74,64,43,8,0,0,0,159,18,228,41,8,0,0,0,41,1,139,40,8,0,0,0,137,11,53,39,8,0,0,0,9,39,226,37,8,0,0,0,37,73,146,36,8,0,0,0,138,103,69,35,8,0,0,0,19,120,251,33,8,0,0,0,199,112,180,32,8,0,0,0,221,71,112,31,8,0,0,0,180,243,46,30,8,0,0,0,219,106,240,28,8,0,0,0,5,164,180,27,8,0,0,0,18,150,123,26,8,0,0,0,9,56,69,25,8,0,0,0,25,129,17,24,8,0,0,0,149,104,224,22,8,0,0,0,248,229,177,21,8,0,0,0,225,240,133,20,8,0,0,0,20,129,92,19,8,0,0,0,118,142,53,18,8,0,0,0,18,17,17,17,8,0,0,0,16,1,239,15,8,0,0,0,191,86,207,14,8,0,0,0,137,10,178,13,8,0,0,0,252,20,151,12,8,0,0,0,195,110,126,11,8,0,0,0,167,16,104,10,8,0,0,0,145,243,83,9,8,0,0,0,133,16,66,8,8,0,0,0,165,96,50,7,8,0,0,0,48,221,36,6,8,0,0,0,126,127,25,5,8,0,0,0,5,65,16,4,8,0,0,0,82,27,9,3,8,0,0,0,17,8,4,2,8,0,0,0,2,1,1,1,8,0,0,0,0,0,0,192,0,0,0,0,8,0,0,0,1,0,0,0,2,0,0,0,1,0,0,0,1,0,0,0,3,0,0,0,2,0,0,0,0,0,0,192,0,0,0,0,16,0,0,0,4,0,0,0,5,0,0,0,3,0,0,0,1,0,0,0,3,0,0,0,4,0,0,0,0,0,0,0,32,0,0,0,6,0,0,0,7,0,0,0,1,0,0,0,1,0,0,0,1,0,0,0,0,0,0,0,40,0,0,0,8,0,0,0,9,0,0,0,2,0,0,0,3,0,0,0,1,0,0,0,4,0,0,0,5,0,0,0,6,0,0,0,7,0,0,0,0,0,0,0,48,0,0,0,10,0,0,0,11,0,0,0,2,0,0,0,2,0,0,0,3,0,0,0,3,0,0,0,4,0,0,0,0,0,0,0,56,0,0,0,12,0,0,0,13,0,0,0,5,0,0,0,2,0,0,0,3,0,0,0,3,0,0,0,6,0,0,0,7,0,0,0,8,0,0,0,8,0,0,0,4,0,0,0,0,0,0,0,88,0,0,0,14,0,0,0,15,0,0,0,1,0,0,0,9,0,0,0,1,0,0,0,10,0,0,0,5,0,0,0,6,0,0,0,7,0,0,0,8,0,0,0,11,0,0,0,12,0,0,0,1,0,0,0,1,0,0,0,0,0,0,0,72,0,0,0,14,0,0,0,16,0,0,0,13,0,0,0,9,0,0,0,14,0,0,0,10,0,0,0,5,0,0,0,6,0,0,0,7,0,0,0,8,0,0,0,11,0,0,0,12,0,0,0,1,0,0,0,2,0,0,0,0,0,0,0,192,0,0,0,14,0,0,0,17,0,0,0,15,0,0,0,9,0,0,0,16,0,0,0,10,0,0,0,5,0,0,0,6,0,0,0,7,0,0,0,8,0,0,0,11,0,0,0,12,0,0,0,3,0,0,0,4,0,0,0,0,0,0,0,176,0,0,0,14,0,0,0,18,0,0,0,17,0,0,0,9,0,0,0,18,0,0,0,10,0,0,0,5,0,0,0,6,0,0,0,7,0,0,0,8,0,0,0,11,0,0,0,12,0,0,0,5,0,0,0,6,0,0,0,0,0,0,0,160,0,0,0,19,0,0,0,20,0,0,0,19,0,0,0,9,0,0,0,20,0,0,0,10,0,0,0,5,0,0,0,6,0,0,0,9,0,0,0,10,0,0,0,11,0,0,0,12,0,0,0,7,0,0,0,8,0,0,0,0,0,0,0,128,0,0,0,21,0,0,0,22,0,0,0,21,0,0,0,9,0,0,0,22,0,0,0,23,0,0,0,11,0,0,0,12,0,0,0,13,0,0,0,14,0,0,0,11,0,0,0,12,0,0,0,9,0,0,0,10,0,0,0,0,0,0,0,16,1,0,0,14,0,0,0,23,0,0,0,24,0,0,0,9,0,0,0,25,0,0,0,10,0,0,0,5,0,0,0,6,0,0,0,7,0,0,0,8,0,0,0,11,0,0,0,12,0,0,0,11,0,0,0,12,0,0,0,0,0,0,0,0,1,0,0,14,0,0,0,24,0,0,0,26,0,0,0,9,0,0,0,27,0,0,0,10,0,0,0,5,0,0,0,6,0,0,0,7,0,0,0,8,0,0,0,11,0,0,0,12,0,0,0,13,0,0,0,14,0,0,0,0,0,0,0,240,0,0,0,25,0,0,0,26,0,0,0,28,0,0,0,9,0,0,0,29,0,0,0,10,0,0,0,5,0,0,0,6,0,0,0,15,0,0,0,16,0,0,0,11,0,0,0,12,0,0,0,15,0,0,0,16,0,0,0,0,0,0,0,208,0,0,0,27,0,0,0,28,0,0,0,30,0,0,0,9,0,0,0,31,0,0,0,32,0,0,0,17,0,0,0,18,0,0,0,19,0,0,0,20,0,0,0,11,0,0,0,12,0,0,0,17,0,0,0,18,0,0,0,0,0,0,0,32,1,0,0,29,0,0,0,30,0,0,0,9,0,0,0,2,0,0,0,3,0,0,0,3,0,0,0,6,0,0,0,10,0,0,0,8,0,0,0,8,0,0,0,21,0,0,0,33,0,0,0,22,0,0,0,0,0,0,0,48,1,0,0,12,0,0,0,31,0,0,0,11,0,0,0,2,0,0,0,3,0,0,0,3,0,0,0,6,0,0,0,12,0,0,0,13,0,0,0,34,0,0,0,23,0,0,0,0,0,0,0,64,1,0,0,32,0,0,0,33,0,0,0,35,0,0,0,36,0,0,0,37,0,0,0,38,0,0,0,24,0,0,0,25,0,0,0,26,0,0,0,27,0,0,0,39,0,0,0,40,0,0,0,19,0,0,0,20,0,0,0,0,0,0,0,240,1,0,0,32,0,0,0,34,0,0,0,41,0,0,0,36,0,0,0,42,0,0,0,38,0,0,0,24,0,0,0,25,0,0,0,26,0,0,0,27,0,0,0,39,0,0,0,40,0,0,0,21,0,0,0,22,0,0,0,0,0,0,0,224,1,0,0,32,0,0,0,35,0,0,0,43,0,0,0,36,0,0,0,44,0,0,0,38,0,0,0,24,0,0,0,25,0,0,0,26,0,0,0,27,0,0,0,39,0,0,0,40,0,0,0,23,0,0,0,24,0,0,0,0,0,0,0,208,1,0,0,36,0,0,0,37,0,0,0,45,0,0,0,36,0,0,0,46,0,0,0,38,0,0,0,24,0,0,0,25,0,0,0,28,0,0,0,29,0,0,0,39,0,0,0,40,0,0,0,25,0,0,0,26,0,0,0,0,0,0,0,176,1,0,0,38,0,0,0,39,0,0,0,47,0,0,0,36,0,0,0,48,0,0,0,49,0,0,0,30,0,0,0,31,0,0,0,32,0,0,0,33,0,0,0,39,0,0,0,40,0,0,0,27,0,0,0,28,0,0,0,0,0,0,0,160,1,0,0,32,0,0,0,40,0,0,0,50,0,0,0,36,0,0,0,51,0,0,0,38,0,0,0,24,0,0,0,25,0,0,0,26,0,0,0,27,0,0,0,39,0,0,0,40,0,0,0,29,0,0,0,30,0,0,0,0,0,0,0,144,1,0,0,32,0,0,0,41,0,0,0,52,0,0,0,36,0,0,0,53,0,0,0,38,0,0,0,24,0,0,0,25,0,0,0,26,0,0,0,27,0,0,0,39,0,0,0,40,0,0,0,31,0,0,0,32,0,0,0,0,0,0,0,128,1,0,0,42,0,0,0,43,0,0,0,54,0,0,0,36,0,0,0,55,0,0,0,38,0,0,0,24,0,0,0,25,0,0,0,34,0,0,0,35,0,0,0,39,0,0,0,40,0,0,0,33,0,0,0,34,0,0,0,0,0,0,0,96,1,0,0,44,0,0,0,45,0,0,0,56,0,0,0,36,0,0,0,57,0,0,0,58,0,0,0,36,0,0,0,37,0,0,0,38,0,0,0,39,0,0,0,39,0,0,0,40,0,0,0,35,0,0,0,36,0,0,0,0,0,0,0,0,2,0,0,32,0,0,0,46,0,0,0,59,0,0,0,60,0,0,0,61,0,0,0,62,0,0,0,40,0,0,0,41,0,0,0,42,0,0,0,43,0,0,0,63,0,0,0,64,0,0,0,37,0,0,0,38,0,0,0,0,0,0,0,176,2,0,0,32,0,0,0,47,0,0,0,65,0,0,0,60,0,0,0,66,0,0,0,62,0,0,0,40,0,0,0,41,0,0,0,42,0,0,0,43,0,0,0,63,0,0,0,64,0,0,0,39,0,0,0,40,0,0,0,0,0,0,0,160,2,0,0,32,0,0,0,48,0,0,0,67,0,0,0,60,0,0,0,68,0,0,0,62,0,0,0,40,0,0,0,41,0,0,0,42,0,0,0,43,0,0,0,63,0,0,0,64,0,0,0,41,0,0,0,42,0,0,0,0,0,0,0,144,2,0,0,49,0,0,0,50,0,0,0,69,0,0,0,60,0,0,0,70,0,0,0,62,0,0,0,40,0,0,0,41,0,0,0,44,0,0,0,45,0,0,0,63,0,0,0,64,0,0,0,43,0,0,0,44,0,0,0,0,0,0,0,112,2,0,0,51,0,0,0,52,0,0,0,71,0,0,0,60,0,0,0,72,0,0,0,73,0,0,0,46,0,0,0,47,0,0,0,48,0,0,0,49,0,0,0,63,0,0,0,64,0,0,0,45,0,0,0,46,0,0,0,0,0,0,0,96,2,0,0,32,0,0,0,53,0,0,0,74,0,0,0,60,0,0,0,75,0,0,0,62,0,0,0,40,0,0,0,41,0,0,0,42,0,0,0,43,0,0,0,63,0,0,0,64,0,0,0,47,0,0,0,48,0,0,0,0,0,0,0,80,2,0,0,32,0,0,0,54,0,0,0,76,0,0,0,60,0,0,0,77,0,0,0,62,0,0,0,40,0,0,0,41,0,0,0,42,0,0,0,43,0,0,0,63,0,0,0,64,0,0,0,49,0,0,0,50,0,0,0,0,0,0,0,64,2,0,0,55,0,0,0,56,0,0,0,78,0,0,0,60,0,0,0,79,0,0,0,62,0,0,0,40,0,0,0,41,0,0,0,50,0,0,0,51,0,0,0,63,0,0,0,64,0,0,0,51,0,0,0,52,0,0,0,0,0,0,0,32,2,0,0,57,0,0,0,58,0,0,0,80,0,0,0,60,0,0,0,81,0,0,0,82,0,0,0,52,0,0,0,53,0,0,0,54,0,0,0,55,0,0,0,63,0,0,0,64,0,0,0,53,0,0,0,54,0,0,0,0,0,0,0,192,2,0,0,59,0,0,0,60,0,0,0,1,0,0,0,56,0,0,0,57,0,0,0,58,0,0,0,0,0,0,0,208,2,0,0,8,0,0,0,61,0,0,0,2,0,0,0,3,0,0,0,59,0,0,0,83,0,0,0,5,0,0,0,6,0,0,0,7,0,0,0,0,0,0,0,224,2,0,0,62,0,0,0,63,0,0,0,60,0,0,0,84,0,0,0,0,0,0,0,248,2,0,0,8,0,0,0,64,0,0,0,2,0,0,0,3,0,0,0,61,0,0,0,85,0,0,0,5,0,0,0,6,0,0,0,7,0,0,0,0,0,0,0,8,3,0,0,6,0,0,0,65,0,0,0,1,0,0,0,1,0,0,0,62,0,0,0,160,20,0,0,5,0,0,0,0,0,0,0,0,0,0,0,86,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,14,0,0,0,15,0,0,0,124,67,0,0,0,0,0,0,0,0,0,0,0,0,0,0,2,0,0,0,0,0,0,0,0,0,0,0,0,0,0,255,255,255,255,255,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,2,0,0,0,3,0,0,0,5,0,0,0,7,0,0,0,11,0,0,0,13,0,0,0,17,0,0,0,19,0,0,0,23,0,0,0,29,0,0,0,31,0,0,0,37,0,0,0,41,0,0,0,43,0,0,0,47,0,0,0,53,0,0,0,59,0,0,0,61,0,0,0,67,0,0,0,71,0,0,0,73,0,0,0,79,0,0,0,83,0,0,0,89,0,0,0,97,0,0,0,101,0,0,0,103,0,0,0,107,0,0,0,109,0,0,0,113,0,0,0,127,0,0,0,131,0,0,0,137,0,0,0,139,0,0,0,149,0,0,0,151,0,0,0,157,0,0,0,163,0,0,0,167,0,0,0,173,0,0,0,179,0,0,0,181,0,0,0,191,0,0,0,193,0,0,0,197,0,0,0,199,0,0,0,211,0,0,0,1,0,0,0,11,0,0,0,13,0,0,0,17,0,0,0,19,0,0,0,23,0,0,0,29,0,0,0,31,0,0,0,37,0,0,0,41,0,0,0,43,0,0,0,47,0,0,0,53,0,0,0,59,0,0,0,61,0,0,0,67,0,0,0,71,0,0,0,73,0,0,0,79,0,0,0,83,0,0,0,89,0,0,0,97,0,0,0,101,0,0,0,103,0,0,0,107,0,0,0,109,0,0,0,113,0,0,0,121,0,0,0,127,0,0,0,131,0,0,0,137,0,0,0,139,0,0,0,143,0,0,0,149,0,0,0,151,0,0,0,157,0,0,0,163,0,0,0,167,0,0,0,169,0,0,0,173,0,0,0,179,0,0,0,181,0,0,0,187,0,0,0,191,0,0,0,193,0,0,0,197,0,0,0,199,0,0,0,209,0,0,0,2,0,0,0,150,63,0,0,0,0,0,0,32,3,0,0,66,0,0,0,67,0,0,0,68,0,0,0,69,0,0,0,16,0,0,0,1,0,0,0,1,0,0,0,1,0,0,0,0,0,0,0,72,3,0,0,66,0,0,0,70,0,0,0,68,0,0,0,69,0,0,0,16,0,0,0,2,0,0,0,2,0,0,0,2,0,0,0,0,0,0,0,88,3,0,0,71,0,0,0,72,0,0,0,87,0,0,0,40,48,41,32,60,61,32,40,102,97,99,101,95,105,100,46,118,97,108,117,101,40,41,41,0,46,47,109,101,115,104,47,109,101,115,104,46,104,0,102,97,99,101,0,40,102,97,99,101,95,105,100,46,118,97,108,117,101,40,41,41,32,60,32,40,115,116,97,116,105,99,95,99,97,115,116,60,105,110,116,62,40,102,97,99,101,115,95,46,115,105,122,101,40,41,41,41,0,99,111,114,101,47,114,97,110,115,95,98,105,116,95,100,101,99,111,100,101,114,46,99,99,0,40,97,110,115,45,62,115,116,97,116,101,41,32,62,61,32,40,40,49,48,50,52,117,32,42,32,52,41,41,0,46,47,99,111,114,101,47,97,110,115,46,104,0,97,110,115,95,119,114,105,116,101,95,101,110,100,0,40,97,110,115,45,62,115,116,97,116,101,41,32,60,32,40,40,49,48,50,52,117,32,42,32,52,41,32,42,32,50,53,54,41,0,40,112,41,32,60,61,32,40,49,46,48,41,0,46,47,99,111,114,101,47,97,100,97,112,116,105,118,101,95,114,97,110,115,95,98,105,116,95,99,111,100,105,110,103,95,115,104,97,114,101,100,46,104,0,99,108,97,109,112,95,112,114,111,98,97,98,105,108,105,116,121,0,40,48,46,48,41,32,60,61,32,40,112,41,0,40,110,98,105,116,115,41,32,62,61,32,40,48,41,0,46,47,99,111,114,101,47,98,105,116,95,99,111,100,101,114,46,104,0,71,101,116,66,105,116,115,0,40,110,98,105,116,115,41,32,60,61,32,40,51,50,41,0,33,105,100,101,110,116,105,116,121,95,109,97,112,112,105,110,103,95,0,46,47,112,111,105,110,116,95,99,108,111,117,100,47,112,111,105,110,116,95,97,116,116,114,105,98,117,116,101,46,104,0,83,101,116,80,111,105,110,116,77,97,112,69,110,116,114,121,0,97,116,116,95,105,100,32,62,61,32,48,0,112,111,105,110,116,95,99,108,111,117,100,47,112,111,105,110,116,95,99,108,111,117,100,46,99,99,0,83,101,116,65,116,116,114,105,98,117,116,101,0,78,53,100,114,97,99,111,49,48,80,111,105,110,116,67,108,111,117,100,69,0,78,53,100,114,97,99,111,52,77,101,115,104,69,0,78,53,100,114,97,99,111,49,55,65,116,116,114,105,98,117,116,101,115,68,101,99,111,100,101,114,69,0,78,53,100,114,97,99,111,49,55,80,111,105,110,116,67,108,111,117,100,68,101,99,111,100,101,114,69,0,68,82,65,67,79,0,78,53,100,114,97,99,111,50,54,83,101,113,117,101,110,116,105,97,108,65,116,116,114,105,98,117,116,101,68,101,99,111,100,101,114,69,0,78,53,100,114,97,99,111,50,54,80,114,101,100,105,99,116,105,111,110,83,99,104,101,109,101,68,105,102,102,101,114,101,110,99,101,73,105,78,83,95,50,57,80,114,101,100,105,99,116,105,111,110,83,99,104,101,109,101,87,114,97,112,84,114,97,110,115,102,111,114,109,73,105,105,69,69,69,69,0,78,53,100,114,97,99,111,49,54,80,114,101,100,105,99,116,105,111,110,83,99,104,101,109,101,73,105,78,83,95,50,57,80,114,101,100,105,99,116,105,111,110,83,99,104,101,109,101,87,114,97,112,84,114,97,110,115,102,111,114,109,73,105,105,69,69,69,69,0,78,53,100,114,97,99,111,51,48,80,114,101,100,105,99,116,105,111,110,83,99,104,101,109,101,84,121,112,101,100,73,110,116,101,114,102,97,99,101,73,105,105,69,69,0,78,53,100,114,97,99,111,50,53,80,114,101,100,105,99,116,105,111,110,83,99,104,101,109,101,73,110,116,101,114,102,97,99,101,69,0,78,53,100,114,97,99,111,50,57,77,101,115,104,80,114,101,100,105,99,116,105,111,110,83,99,104,101,109,101,84,101,120,67,111,111,114,100,115,73,105,78,83,95,50,57,80,114,101,100,105,99,116,105,111,110,83,99,104,101,109,101,87,114,97,112,84,114,97,110,115,102,111,114,109,73,105,105,69,69,78,83,95,50,52,77,101,115,104,80,114,101,100,105,99,116,105,111,110,83,99,104,101,109,101,68,97,116,97,73,78,83,95,49,49,67,111,114,110,101,114,84,97,98,108,101,69,69,69,69,69,0,78,53,100,114,97,99,111,50,48,77,101,115,104,80,114,101,100,105,99,116,105,111,110,83,99,104,101,109,101,73,105,78,83,95,50,57,80,114,101,100,105,99,116,105,111,110,83,99,104,101,109,101,87,114,97,112,84,114,97,110,115,102,111,114,109,73,105,105,69,69,78,83,95,50,52,77,101,115,104,80,114,101,100,105,99,116,105,111,110,83,99,104,101,109,101,68,97,116,97,73,78,83,95,49,49,67,111,114,110,101,114,84,97,98,108,101,69,69,69,69,69,0,78,53,100,114,97,99,111,52,57,77,101,115,104,80,114,101,100,105,99,116,105,111,110,83,99,104,101,109,101,67,111,110,115,116,114,97,105,110,101,100,77,117,108,116,105,80,97,114,97,108,108,101,108,111,103,114,97,109,73,105,78,83,95,50,57,80,114,101,100,105,99,116,105,111,110,83,99,104,101,109,101,87,114,97,112,84,114,97,110,115,102,111,114,109,73,105,105,69,69,78,83,95,50,52,77,101,115,104,80,114,101,100,105,99,116,105,111,110,83,99,104,101,109,101,68,97,116,97,73,78,83,95,49,49,67,111,114,110,101,114,84,97,98,108,101,69,69,69,69,69,0,78,53,100,114,97,99,111,51,56,77,101,115,104,80,114,101,100,105,99,116,105,111,110,83,99,104,101,109,101,77,117,108,116,105,80,97,114,97,108,108,101,108,111,103,114,97,109,73,105,78,83,95,50,57,80,114,101,100,105,99,116,105,111,110,83,99,104,101,109,101,87,114,97,112,84,114,97,110,115,102,111,114,109,73,105,105,69,69,78,83,95,50,52,77,101,115,104,80,114,101,100,105,99,116,105,111,110,83,99,104,101,109,101,68,97,116,97,73,78,83,95,49,49,67,111,114,110,101,114,84,97,98,108,101,69,69,69,69,69,0,78,53,100,114,97,99,111,51,51,77,101,115,104,80,114,101,100,105,99,116,105,111,110,83,99,104,101,109,101,80,97,114,97,108,108,101,108,111,103,114,97,109,73,105,78,83,95,50,57,80,114,101,100,105,99,116,105,111,110,83,99,104,101,109,101,87,114,97,112,84,114,97,110,115,102,111,114,109,73,105,105,69,69,78,83,95,50,52,77,101,115,104,80,114,101,100,105,99,116,105,111,110,83,99,104,101,109,101,68,97,116,97,73,78,83,95,49,49,67,111,114,110,101,114,84,97,98,108,101,69,69,69,69,69,0,78,53,100,114,97,99,111,50,57,77,101,115,104,80,114,101,100,105,99,116,105,111,110,83,99,104,101,109,101,84,101,120,67,111,111,114,100,115,73,105,78,83,95,50,57,80,114,101,100,105,99,116,105,111,110,83,99,104,101,109,101,87,114,97,112,84,114,97,110,115,102,111,114,109,73,105,105,69,69,78,83,95,50,52,77,101,115,104,80,114,101,100,105,99,116,105,111,110,83,99,104,101,109,101,68,97,116,97,73,78,83,95,50,52,77,101,115,104,65,116,116,114,105,98,117,116,101,67,111,114,110,101,114,84,97,98,108,101,69,69,69,69,69,0,78,53,100,114,97,99,111,50,48,77,101,115,104,80,114,101,100,105,99,116,105,111,110,83,99,104,101,109,101,73,105,78,83,95,50,57,80,114,101,100,105,99,116,105,111,110,83,99,104,101,109,101,87,114,97,112,84,114,97,110,115,102,111,114,109,73,105,105,69,69,78,83,95,50,52,77,101,115,104,80,114,101,100,105,99,116,105,111,110,83,99,104,101,109,101,68,97,116,97,73,78,83,95,50,52,77,101,115,104,65,116,116,114,105,98,117,116,101,67,111,114,110,101,114,84,97,98,108,101,69,69,69,69,69,0,78,53,100,114,97,99,111,52,57,77,101,115,104,80,114,101,100,105,99,116,105,111,110,83,99,104,101,109,101,67,111,110,115,116,114,97,105,110,101,100,77,117,108,116,105,80,97,114,97,108,108,101,108,111,103,114,97,109,73,105,78,83,95,50,57,80,114,101,100,105,99,116,105,111,110,83,99,104,101,109,101,87,114,97,112,84,114,97,110,115,102,111,114,109,73,105,105,69,69,78,83,95,50,52,77,101,115,104,80,114,101,100,105,99,116,105,111,110,83,99,104,101,109,101,68,97,116,97,73,78,83,95,50,52,77,101,115,104,65,116,116,114,105,98,117,116,101,67,111,114,110,101,114,84,97,98,108,101,69,69,69,69,69,0,78,53,100,114,97,99,111,51,56,77,101,115,104,80,114,101,100,105,99,116,105,111,110,83,99,104,101,109,101,77,117,108,116,105,80,97,114,97,108,108,101,108,111,103,114,97,109,73,105,78,83,95,50,57,80,114,101,100,105,99,116,105,111,110,83,99,104,101,109,101,87,114,97,112,84,114,97,110,115,102,111,114,109,73,105,105,69,69,78,83,95,50,52,77,101,115,104,80,114,101,100,105,99,116,105,111,110,83,99,104,101,109,101,68,97,116,97,73,78,83,95,50,52,77,101,115,104,65,116,116,114,105,98,117,116,101,67,111,114,110,101,114,84,97,98,108,101,69,69,69,69,69,0,78,53,100,114,97,99,111,51,51,77,101,115,104,80,114,101,100,105,99,116,105,111,110,83,99,104,101,109,101,80,97,114,97,108,108,101,108,111,103,114,97,109,73,105,78,83,95,50,57,80,114,101,100,105,99,116,105,111,110,83,99,104,101,109,101,87,114,97,112,84,114,97,110,115,102,111,114,109,73,105,105,69,69,78,83,95,50,52,77,101,115,104,80,114,101,100,105,99,116,105,111,110,83,99,104,101,109,101,68,97,116,97,73,78,83,95,50,52,77,101,115,104,65,116,116,114,105,98,117,116,101,67,111,114,110,101,114,84,97,98,108,101,69,69,69,69,69,0,78,53,100,114,97,99,111,51,51,83,101,113,117,101,110,116,105,97,108,73,110,116,101,103,101,114,65,116,116,114,105,98,117,116,101,68,101,99,111,100,101,114,69,0,78,53,100,114,97,99,111,51,56,83,101,113,117,101,110,116,105,97,108,81,117,97,110,116,105,122,97,116,105,111,110,65,116,116,114,105,98,117,116,101,68,101,99,111,100,101,114,69,0,40,112,114,101,100,95,118,97,108,115,91,48,93,41,32,60,61,32,40,50,32,42,32,109,97,120,95,118,97,108,117,101,95,41,0,46,47,99,111,109,112,114,101,115,115,105,111,110,47,97,116,116,114,105,98,117,116,101,115,47,112,114,101,100,105,99,116,105,111,110,95,115,99,104,101,109,101,115,47,112,114,101,100,105,99,116,105,111,110,95,115,99,104,101,109,101,95,110,111,114,109,97,108,95,111,99,116,97,104,101,100,114,111,110,95,99,97,110,111,110,105,99,97,108,105,122,101,100,95,116,114,97,110,115,102,111,114,109,46,104,0,67,111,109,112,117,116,101,79,114,105,103,105,110,97,108,86,97,108,117,101,0,40,112,114,101,100,95,118,97,108,115,91,49,93,41,32,60,61,32,40,50,32,42,32,109,97,120,95,118,97,108,117,101,95,41,0,40,99,111,114,114,95,118,97,108,115,91,118,97,108,95,105,100,93,41,32,60,61,32,40,50,32,42,32,109,97,120,95,118,97,108,117,101,95,41,0,40,99,111,114,114,95,118,97,108,115,91,118,97,108,95,105,100,32,43,32,49,93,41,32,60,61,32,40,50,32,42,32,109,97,120,95,118,97,108,117,101,95,41,0,40,48,41,32,60,61,32,40,112,114,101,100,95,118,97,108,115,91,48,93,41,0,40,48,41,32,60,61,32,40,112,114,101,100,95,118,97,108,115,91,49,93,41,0,40,48,41,32,60,61,32,40,99,111,114,114,95,118,97,108,115,91,118,97,108,95,105,100,93,41,0,40,48,41,32,60,61,32,40,99,111,114,114,95,118,97,108,115,91,118,97,108,95,105,100,32,43,32,49,93,41,0,40,112,114,101,100,95,118,97,108,115,91,48,93,41,32,60,61,32,40,109,97,120,95,118,97,108,117,101,95,32,42,32,50,41,0,67,111,109,112,117,116,101,67,111,114,114,101,99,116,105,111,110,0,40,112,114,101,100,95,118,97,108,115,91,49,93,41,32,60,61,32,40,109,97,120,95,118,97,108,117,101,95,32,42,32,50,41,0,40,111,114,105,103,95,118,97,108,115,91,48,93,41,32,60,61,32,40,109,97,120,95,118,97,108,117,101,95,32,42,32,50,41,0,40,111,114,105,103,95,118,97,108,115,91,49,93,41,32,60,61,32,40,109,97,120,95,118,97,108,117,101,95,32,42,32,50,41,0,40,48,41,32,60,61,32,40,111,114,105,103,95,118,97,108,115,91,48,93,41,0,40,48,41,32,60,61,32,40,111,114,105,103,95,118,97,108,115,91,49,93,41,0,40,116,114,117,101,41,32,61,61,32,40,86,101,114,105,102,121,40,111,114,105,103,44,32,112,114,101,100,44,32,99,111,114,114,41,41,0,40,120,41,32,60,61,32,40,109,97,120,95,118,97,108,117,101,95,32,42,32,50,41,0,77,97,107,101,80,111,115,105,116,105,118,101,0,78,53,100,114,97,99,111,50,54,80,114,101,100,105,99,116,105,111,110,83,99,104,101,109,101,68,105,102,102,101,114,101,110,99,101,73,105,78,83,95,53,52,80,114,101,100,105,99,116,105,111,110,83,99,104,101,109,101,78,111,114,109,97,108,79,99,116,97,104,101,100,114,111,110,67,97,110,111,110,105,99,97,108,105,122,101,100,84,114,97,110,115,102,111,114,109,73,105,69,69,69,69,0,78,53,100,114,97,99,111,49,54,80,114,101,100,105,99,116,105,111,110,83,99,104,101,109,101,73,105,78,83,95,53,52,80,114,101,100,105,99,116,105,111,110,83,99,104,101,109,101,78,111,114,109,97,108,79,99,116,97,104,101,100,114,111,110,67,97,110,111,110,105,99,97,108,105,122,101,100,84,114,97,110,115,102,111,114,109,73,105,69,69,69,69,0,40,105,41,32,61,61,32,40,48,41,0,46,47,99,111,109,112,114,101,115,115,105,111,110,47,97,116,116,114,105,98,117,116,101,115,47,112,114,101,100,105,99,116,105,111,110,95,115,99,104,101,109,101,115,47,109,101,115,104,95,112,114,101,100,105,99,116,105,111,110,95,115,99,104,101,109,101,95,116,101,120,95,99,111,111,114,100,115,46,104,0,71,101,116,80,97,114,101,110,116,65,116,116,114,105,98,117,116,101,84,121,112,101,0,78,53,100,114,97,99,111,50,57,77,101,115,104,80,114,101,100,105,99,116,105,111,110,83,99,104,101,109,101,84,101,120,67,111,111,114,100,115,73,105,78,83,95,53,52,80,114,101,100,105,99,116,105,111,110,83,99,104,101,109,101,78,111,114,109,97,108,79,99,116,97,104,101,100,114,111,110,67,97,110,111,110,105,99,97,108,105,122,101,100,84,114,97,110,115,102,111,114,109,73,105,69,69,78,83,95,50,52,77,101,115,104,80,114,101,100,105,99,116,105,111,110,83,99,104,101,109,101,68,97,116,97,73,78,83,95,49,49,67,111,114,110,101,114,84,97,98,108,101,69,69,69,69,69,0,78,53,100,114,97,99,111,50,48,77,101,115,104,80,114,101,100,105,99,116,105,111,110,83,99,104,101,109,101,73,105,78,83,95,53,52,80,114,101,100,105,99,116,105,111,110,83,99,104,101,109,101,78,111,114,109,97,108,79,99,116,97,104,101,100,114,111,110,67,97,110,111,110,105,99,97,108,105,122,101,100,84,114,97,110,115,102,111,114,109,73,105,69,69,78,83,95,50,52,77,101,115,104,80,114,101,100,105,99,116,105,111,110,83,99,104,101,109,101,68,97,116,97,73,78,83,95,49,49,67,111,114,110,101,114,84,97,98,108,101,69,69,69,69,69,0,78,53,100,114,97,99,111,52,57,77,101,115,104,80,114,101,100,105,99,116,105,111,110,83,99,104,101,109,101,67,111,110,115,116,114,97,105,110,101,100,77,117,108,116,105,80,97,114,97,108,108,101,108,111,103,114,97,109,73,105,78,83,95,53,52,80,114,101,100,105,99,116,105,111,110,83,99,104,101,109,101,78,111,114,109,97,108,79,99,116,97,104,101,100,114,111,110,67,97,110,111,110,105,99,97,108,105,122,101,100,84,114,97,110,115,102,111,114,109,73,105,69,69,78,83,95,50,52,77,101,115,104,80,114,101,100,105,99,116,105,111,110,83,99,104,101,109,101,68,97,116,97,73,78,83,95,49,49,67,111,114,110,101,114,84,97,98,108,101,69,69,69,69,69,0,78,53,100,114,97,99,111,51,56,77,101,115,104,80,114,101,100,105,99,116,105,111,110,83,99,104,101,109,101,77,117,108,116,105,80,97,114,97,108,108,101,108,111,103,114,97,109,73,105,78,83,95,53,52,80,114,101,100,105,99,116,105,111,110,83,99,104,101,109,101,78,111,114,109,97,108,79,99,116,97,104,101,100,114,111,110,67,97,110,111,110,105,99,97,108,105,122,101,100,84,114,97,110,115,102,111,114,109,73,105,69,69,78,83,95,50,52,77,101,115,104,80,114,101,100,105,99,116,105,111,110,83,99,104,101,109,101,68,97,116,97,73,78,83,95,49,49,67,111,114,110,101,114,84,97,98,108,101,69,69,69,69,69,0,78,53,100,114,97,99,111,51,51,77,101,115,104,80,114,101,100,105,99,116,105,111,110,83,99,104,101,109,101,80,97,114,97,108,108,101,108,111,103,114,97,109,73,105,78,83,95,53,52,80,114,101,100,105,99,116,105,111,110,83,99,104,101,109,101,78,111,114,109,97,108,79,99,116,97,104,101,100,114,111,110,67,97,110,111,110,105,99,97,108,105,122,101,100,84,114,97,110,115,102,111,114,109,73,105,69,69,78,83,95,50,52,77,101,115,104,80,114,101,100,105,99,116,105,111,110,83,99,104,101,109,101,68,97,116,97,73,78,83,95,49,49,67,111,114,110,101,114,84,97,98,108,101,69,69,69,69,69,0,78,53,100,114,97,99,111,50,57,77,101,115,104,80,114,101,100,105,99,116,105,111,110,83,99,104,101,109,101,84,101,120,67,111,111,114,100,115,73,105,78,83,95,53,52,80,114,101,100,105,99,116,105,111,110,83,99,104,101,109,101,78,111,114,109,97,108,79,99,116,97,104,101,100,114,111,110,67,97,110,111,110,105,99,97,108,105,122,101,100,84,114,97,110,115,102,111,114,109,73,105,69,69,78,83,95,50,52,77,101,115,104,80,114,101,100,105,99,116,105,111,110,83,99,104,101,109,101,68,97,116,97,73,78,83,95,50,52,77,101,115,104,65,116,116,114,105,98,117,116,101,67,111,114,110,101,114,84,97,98,108,101,69,69,69,69,69,0,78,53,100,114,97,99,111,50,48,77,101,115,104,80,114,101,100,105,99,116,105,111,110,83,99,104,101,109,101,73,105,78,83,95,53,52,80,114,101,100,105,99,116,105,111,110,83,99,104,101,109,101,78,111,114,109,97,108,79,99,116,97,104,101,100,114,111,110,67,97,110],"i8",ALLOC_NONE,Runtime.GLOBAL_BASE);allocate([111,110,105,99,97,108,105,122,101,100,84,114,97,110,115,102,111,114,109,73,105,69,69,78,83,95,50,52,77,101,115,104,80,114,101,100,105,99,116,105,111,110,83,99,104,101,109,101,68,97,116,97,73,78,83,95,50,52,77,101,115,104,65,116,116,114,105,98,117,116,101,67,111,114,110,101,114,84,97,98,108,101,69,69,69,69,69,0,78,53,100,114,97,99,111,52,57,77,101,115,104,80,114,101,100,105,99,116,105,111,110,83,99,104,101,109,101,67,111,110,115,116,114,97,105,110,101,100,77,117,108,116,105,80,97,114,97,108,108,101,108,111,103,114,97,109,73,105,78,83,95,53,52,80,114,101,100,105,99,116,105,111,110,83,99,104,101,109,101,78,111,114,109,97,108,79,99,116,97,104,101,100,114,111,110,67,97,110,111,110,105,99,97,108,105,122,101,100,84,114,97,110,115,102,111,114,109,73,105,69,69,78,83,95,50,52,77,101,115,104,80,114,101,100,105,99,116,105,111,110,83,99,104,101,109,101,68,97,116,97,73,78,83,95,50,52,77,101,115,104,65,116,116,114,105,98,117,116,101,67,111,114,110,101,114,84,97,98,108,101,69,69,69,69,69,0,78,53,100,114,97,99,111,51,56,77,101,115,104,80,114,101,100,105,99,116,105,111,110,83,99,104,101,109,101,77,117,108,116,105,80,97,114,97,108,108,101,108,111,103,114,97,109,73,105,78,83,95,53,52,80,114,101,100,105,99,116,105,111,110,83,99,104,101,109,101,78,111,114,109,97,108,79,99,116,97,104,101,100,114,111,110,67,97,110,111,110,105,99,97,108,105,122,101,100,84,114,97,110,115,102,111,114,109,73,105,69,69,78,83,95,50,52,77,101,115,104,80,114,101,100,105,99,116,105,111,110,83,99,104,101,109,101,68,97,116,97,73,78,83,95,50,52,77,101,115,104,65,116,116,114,105,98,117,116,101,67,111,114,110,101,114,84,97,98,108,101,69,69,69,69,69,0,78,53,100,114,97,99,111,51,51,77,101,115,104,80,114,101,100,105,99,116,105,111,110,83,99,104,101,109,101,80,97,114,97,108,108,101,108,111,103,114,97,109,73,105,78,83,95,53,52,80,114,101,100,105,99,116,105,111,110,83,99,104,101,109,101,78,111,114,109,97,108,79,99,116,97,104,101,100,114,111,110,67,97,110,111,110,105,99,97,108,105,122,101,100,84,114,97,110,115,102,111,114,109,73,105,69,69,78,83,95,50,52,77,101,115,104,80,114,101,100,105,99,116,105,111,110,83,99,104,101,109,101,68,97,116,97,73,78,83,95,50,52,77,101,115,104,65,116,116,114,105,98,117,116,101,67,111,114,110,101,114,84,97,98,108,101,69,69,69,69,69,0,46,47,99,111,109,112,114,101,115,115,105,111,110,47,97,116,116,114,105,98,117,116,101,115,47,112,114,101,100,105,99,116,105,111,110,95,115,99,104,101,109,101,115,47,112,114,101,100,105,99,116,105,111,110,95,115,99,104,101,109,101,95,110,111,114,109,97,108,95,111,99,116,97,104,101,100,114,111,110,95,116,114,97,110,115,102,111,114,109,46,104,0,78,53,100,114,97,99,111,50,54,80,114,101,100,105,99,116,105,111,110,83,99,104,101,109,101,68,105,102,102,101,114,101,110,99,101,73,105,78,83,95,52,49,80,114,101,100,105,99,116,105,111,110,83,99,104,101,109,101,78,111,114,109,97,108,79,99,116,97,104,101,100,114,111,110,84,114,97,110,115,102,111,114,109,73,105,69,69,69,69,0,78,53,100,114,97,99,111,49,54,80,114,101,100,105,99,116,105,111,110,83,99,104,101,109,101,73,105,78,83,95,52,49,80,114,101,100,105,99,116,105,111,110,83,99,104,101,109,101,78,111,114,109,97,108,79,99,116,97,104,101,100,114,111,110,84,114,97,110,115,102,111,114,109,73,105,69,69,69,69,0,78,53,100,114,97,99,111,50,57,77,101,115,104,80,114,101,100,105,99,116,105,111,110,83,99,104,101,109,101,84,101,120,67,111,111,114,100,115,73,105,78,83,95,52,49,80,114,101,100,105,99,116,105,111,110,83,99,104,101,109,101,78,111,114,109,97,108,79,99,116,97,104,101,100,114,111,110,84,114,97,110,115,102,111,114,109,73,105,69,69,78,83,95,50,52,77,101,115,104,80,114,101,100,105,99,116,105,111,110,83,99,104,101,109,101,68,97,116,97,73,78,83,95,49,49,67,111,114,110,101,114,84,97,98,108,101,69,69,69,69,69,0,78,53,100,114,97,99,111,50,48,77,101,115,104,80,114,101,100,105,99,116,105,111,110,83,99,104,101,109,101,73,105,78,83,95,52,49,80,114,101,100,105,99,116,105,111,110,83,99,104,101,109,101,78,111,114,109,97,108,79,99,116,97,104,101,100,114,111,110,84,114,97,110,115,102,111,114,109,73,105,69,69,78,83,95,50,52,77,101,115,104,80,114,101,100,105,99,116,105,111,110,83,99,104,101,109,101,68,97,116,97,73,78,83,95,49,49,67,111,114,110,101,114,84,97,98,108,101,69,69,69,69,69,0,78,53,100,114,97,99,111,52,57,77,101,115,104,80,114,101,100,105,99,116,105,111,110,83,99,104,101,109,101,67,111,110,115,116,114,97,105,110,101,100,77,117,108,116,105,80,97,114,97,108,108,101,108,111,103,114,97,109,73,105,78,83,95,52,49,80,114,101,100,105,99,116,105,111,110,83,99,104,101,109,101,78,111,114,109,97,108,79,99,116,97,104,101,100,114,111,110,84,114,97,110,115,102,111,114,109,73,105,69,69,78,83,95,50,52,77,101,115,104,80,114,101,100,105,99,116,105,111,110,83,99,104,101,109,101,68,97,116,97,73,78,83,95,49,49,67,111,114,110,101,114,84,97,98,108,101,69,69,69,69,69,0,78,53,100,114,97,99,111,51,56,77,101,115,104,80,114,101,100,105,99,116,105,111,110,83,99,104,101,109,101,77,117,108,116,105,80,97,114,97,108,108,101,108,111,103,114,97,109,73,105,78,83,95,52,49,80,114,101,100,105,99,116,105,111,110,83,99,104,101,109,101,78,111,114,109,97,108,79,99,116,97,104,101,100,114,111,110,84,114,97,110,115,102,111,114,109,73,105,69,69,78,83,95,50,52,77,101,115,104,80,114,101,100,105,99,116,105,111,110,83,99,104,101,109,101,68,97,116,97,73,78,83,95,49,49,67,111,114,110,101,114,84,97,98,108,101,69,69,69,69,69,0,78,53,100,114,97,99,111,51,51,77,101,115,104,80,114,101,100,105,99,116,105,111,110,83,99,104,101,109,101,80,97,114,97,108,108,101,108,111,103,114,97,109,73,105,78,83,95,52,49,80,114,101,100,105,99,116,105,111,110,83,99,104,101,109,101,78,111,114,109,97,108,79,99,116,97,104,101,100,114,111,110,84,114,97,110,115,102,111,114,109,73,105,69,69,78,83,95,50,52,77,101,115,104,80,114,101,100,105,99,116,105,111,110,83,99,104,101,109,101,68,97,116,97,73,78,83,95,49,49,67,111,114,110,101,114,84,97,98,108,101,69,69,69,69,69,0,78,53,100,114,97,99,111,50,57,77,101,115,104,80,114,101,100,105,99,116,105,111,110,83,99,104,101,109,101,84,101,120,67,111,111,114,100,115,73,105,78,83,95,52,49,80,114,101,100,105,99,116,105,111,110,83,99,104,101,109,101,78,111,114,109,97,108,79,99,116,97,104,101,100,114,111,110,84,114,97,110,115,102,111,114,109,73,105,69,69,78,83,95,50,52,77,101,115,104,80,114,101,100,105,99,116,105,111,110,83,99,104,101,109,101,68,97,116,97,73,78,83,95,50,52,77,101,115,104,65,116,116,114,105,98,117,116,101,67,111,114,110,101,114,84,97,98,108,101,69,69,69,69,69,0,78,53,100,114,97,99,111,50,48,77,101,115,104,80,114,101,100,105,99,116,105,111,110,83,99,104,101,109,101,73,105,78,83,95,52,49,80,114,101,100,105,99,116,105,111,110,83,99,104,101,109,101,78,111,114,109,97,108,79,99,116,97,104,101,100,114,111,110,84,114,97,110,115,102,111,114,109,73,105,69,69,78,83,95,50,52,77,101,115,104,80,114,101,100,105,99,116,105,111,110,83,99,104,101,109,101,68,97,116,97,73,78,83,95,50,52,77,101,115,104,65,116,116,114,105,98,117,116,101,67,111,114,110,101,114,84,97,98,108,101,69,69,69,69,69,0,78,53,100,114,97,99,111,52,57,77,101,115,104,80,114,101,100,105,99,116,105,111,110,83,99,104,101,109,101,67,111,110,115,116,114,97,105,110,101,100,77,117,108,116,105,80,97,114,97,108,108,101,108,111,103,114,97,109,73,105,78,83,95,52,49,80,114,101,100,105,99,116,105,111,110,83,99,104,101,109,101,78,111,114,109,97,108,79,99,116,97,104,101,100,114,111,110,84,114,97,110,115,102,111,114,109,73,105,69,69,78,83,95,50,52,77,101,115,104,80,114,101,100,105,99,116,105,111,110,83,99,104,101,109,101,68,97,116,97,73,78,83,95,50,52,77,101,115,104,65,116,116,114,105,98,117,116,101,67,111,114,110,101,114,84,97,98,108,101,69,69,69,69,69,0,78,53,100,114,97,99,111,51,56,77,101,115,104,80,114,101,100,105,99,116,105,111,110,83,99,104,101,109,101,77,117,108,116,105,80,97,114,97,108,108,101,108,111,103,114,97,109,73,105,78,83,95,52,49,80,114,101,100,105,99,116,105,111,110,83,99,104,101,109,101,78,111,114,109,97,108,79,99,116,97,104,101,100,114,111,110,84,114,97,110,115,102,111,114,109,73,105,69,69,78,83,95,50,52,77,101,115,104,80,114,101,100,105,99,116,105,111,110,83,99,104,101,109,101,68,97,116,97,73,78,83,95,50,52,77,101,115,104,65,116,116,114,105,98,117,116,101,67,111,114,110,101,114,84,97,98,108,101,69,69,69,69,69,0,78,53,100,114,97,99,111,51,51,77,101,115,104,80,114,101,100,105,99,116,105,111,110,83,99,104,101,109,101,80,97,114,97,108,108,101,108,111,103,114,97,109,73,105,78,83,95,52,49,80,114,101,100,105,99,116,105,111,110,83,99,104,101,109,101,78,111,114,109,97,108,79,99,116,97,104,101,100,114,111,110,84,114,97,110,115,102,111,114,109,73,105,69,69,78,83,95,50,52,77,101,115,104,80,114,101,100,105,99,116,105,111,110,83,99,104,101,109,101,68,97,116,97,73,78,83,95,50,52,77,101,115,104,65,116,116,114,105,98,117,116,101,67,111,114,110,101,114,84,97,98,108,101,69,69,69,69,69,0,78,53,100,114,97,99,111,51,50,83,101,113,117,101,110,116,105,97,108,78,111,114,109,97,108,65,116,116,114,105,98,117,116,101,68,101,99,111,100,101,114,69,0,78,53,100,114,97,99,111,51,55,83,101,113,117,101,110,116,105,97,108,65,116,116,114,105,98,117,116,101,68,101,99,111,100,101,114,115,67,111,110,116,114,111,108,108,101,114,69,0,78,53,100,114,97,99,111,49,53,76,105,110,101,97,114,83,101,113,117,101,110,99,101,114,69,0,78,53,100,114,97,99,111,49,53,80,111,105,110,116,115,83,101,113,117,101,110,99,101,114,69,0,78,53,100,114,97,99,111,50,55,80,111,105,110,116,67,108,111,117,100,83,101,113,117,101,110,116,105,97,108,68,101,99,111,100,101,114,69,0,78,53,100,114,97,99,111,50,51,80,111,105,110,116,67,108,111,117,100,75,100,84,114,101,101,68,101,99,111,100,101,114,69,0,40,48,41,32,60,61,32,40,97,116,116,95,105,100,41,0,46,47,112,111,105,110,116,95,99,108,111,117,100,47,112,111,105,110,116,95,99,108,111,117,100,46,104,0,97,116,116,114,105,98,117,116,101,0,40,97,116,116,95,105,100,41,32,60,32,40,115,116,97,116,105,99,95,99,97,115,116,60,105,110,116,51,50,95,116,62,40,97,116,116,114,105,98,117,116,101,115,95,46,115,105,122,101,40,41,41,41,0,77,101,116,104,111,100,32,110,111,116,32,115,117,112,112,111,114,116,101,100,46,32,10,0,86,101,114,115,105,111,110,32,110,111,116,32,115,117,112,112,111,114,116,101,100,46,32,10,0,40,105,110,102,111,46,114,97,110,103,101,41,32,62,61,32,40,48,41,0,46,47,99,111,109,112,114,101,115,115,105,111,110,47,112,111,105,110,116,95,99,108,111,117,100,47,97,108,103,111,114,105,116,104,109,115,47,113,117,97,110,116,105,122,101,95,112,111,105,110,116,115,95,51,46,104,0,68,101,113,117,97,110,116,105,122,101,80,111,105,110,116,115,51,0,78,53,100,114,97,99,111,50,51,75,100,84,114,101,101,65,116,116,114,105,98,117,116,101,115,68,101,99,111,100,101,114,69,0,40,116,114,117,101,41,32,61,61,32,40,113,112,111,105,110,116,115,45,62,115,105,122,101,40,41,32,61,61,32,110,117,109,95,112,111,105,110,116,115,95,41,0,99,111,109,112,114,101,115,115,105,111,110,47,112,111,105,110,116,95,99,108,111,117,100,47,97,108,103,111,114,105,116,104,109,115,47,102,108,111,97,116,95,112,111,105,110,116,115,95,116,114,101,101,95,100,101,99,111,100,101,114,46,99,99,0,68,101,99,111,100,101,80,111,105,110,116,67,108,111,117,100,75,100,84,114,101,101,73,110,116,101,114,110,97,108,0,40,116,114,117,101,41,32,61,61,32,40,110,117,109,95,114,101,109,97,105,110,105,110,103,95,112,111,105,110,116,115,32,33,61,32,48,41,0,46,47,99,111,109,112,114,101,115,115,105,111,110,47,112,111,105,110,116,95,99,108,111,117,100,47,97,108,103,111,114,105,116,104,109,115,47,105,110,116,101,103,101,114,95,112,111,105,110,116,115,95,107,100,95,116,114,101,101,95,100,101,99,111,100,101,114,46,104,0,79,99,116,114,101,101,68,101,99,111,100,101,0,40,116,114,117,101,41,32,61,61,32,40,110,98,105,116,115,32,60,61,32,51,50,41,0,46,47,99,111,114,101,47,100,105,114,101,99,116,95,98,105,116,95,100,101,99,111,100,101,114,46,104,0,68,101,99,111,100,101,76,101,97,115,116,83,105,103,110,105,102,105,99,97,110,116,66,105,116,115,51,50,0,40,116,114,117,101,41,32,61,61,32,40,110,98,105,116,115,32,62,32,48,41,0,17,0,10,0,17,17,17,0,0,0,0,5,0,0,0,0,0,0,9,0,0,0,0,11,0,0,0,0,0,0,0,0,17,0,15,10,17,17,17,3,10,7,0,1,19,9,11,11,0,0,9,6,11,0,0,11,0,6,17,0,0,0,17,17,17,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,11,0,0,0,0,0,0,0,0,17,0,10,10,17,17,17,0,10,0,0,2,0,9,11,0,0,0,9,0,11,0,0,11,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,12,0,0,0,0,0,0,0,0,0,0,0,12,0,0,0,0,12,0,0,0,0,9,12,0,0,0,0,0,12,0,0,12,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,14,0,0,0,0,0,0,0,0,0,0,0,13,0,0,0,4,13,0,0,0,0,9,14,0,0,0,0,0,14,0,0,14,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,16,0,0,0,0,0,0,0,0,0,0,0,15,0,0,0,0,15,0,0,0,0,9,16,0,0,0,0,0,16,0,0,16,0,0,18,0,0,0,18,18,18,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,18,0,0,0,18,18,18,0,0,0,0,0,0,9,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,11,0,0,0,0,0,0,0,0,0,0,0,10,0,0,0,0,10,0,0,0,0,9,11,0,0,0,0,0,11,0,0,11,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,12,0,0,0,0,0,0,0,0,0,0,0,12,0,0,0,0,12,0,0,0,0,9,12,0,0,0,0,0,12,0,0,12,0,0,48,49,50,51,52,53,54,55,56,57,65,66,67,68,69,70,45,43,32,32,32,48,88,48,120,0,40,110,117,108,108,41,0,45,48,88,43,48,88,32,48,88,45,48,120,43,48,120,32,48,120,0,105,110,102,0,73,78,70,0,110,97,110,0,78,65,78,0,46,0,84,33,34,25,13,1,2,3,17,75,28,12,16,4,11,29,18,30,39,104,110,111,112,113,98,32,5,6,15,19,20,21,26,8,22,7,40,36,23,24,9,10,14,27,31,37,35,131,130,125,38,42,43,60,61,62,63,67,71,74,77,88,89,90,91,92,93,94,95,96,97,99,100,101,102,103,105,106,107,108,114,115,116,121,122,123,124,0,73,108,108,101,103,97,108,32,98,121,116,101,32,115,101,113,117,101,110,99,101,0,68,111,109,97,105,110,32,101,114,114,111,114,0,82,101,115,117,108,116,32,110,111,116,32,114,101,112,114,101,115,101,110,116,97,98,108,101,0,78,111,116,32,97,32,116,116,121,0,80,101,114,109,105,115,115,105,111,110,32,100,101,110,105,101,100,0,79,112,101,114,97,116,105,111,110,32,110,111,116,32,112,101,114,109,105,116,116,101,100,0,78,111,32,115,117,99,104,32,102,105,108,101,32,111,114,32,100,105,114,101,99,116,111,114,121,0,78,111,32,115,117,99,104,32,112,114,111,99,101,115,115,0,70,105,108,101,32,101,120,105,115,116,115,0,86,97,108,117,101,32,116,111,111,32,108,97,114,103,101,32,102,111,114,32,100,97,116,97,32,116,121,112,101,0,78,111,32,115,112,97,99,101,32,108,101,102,116,32,111,110,32,100,101,118,105,99,101,0,79,117,116,32,111,102,32,109,101,109,111,114,121,0,82,101,115,111,117,114,99,101,32,98,117,115,121,0,73,110,116,101,114,114,117,112,116,101,100,32,115,121,115,116,101,109,32,99,97,108,108,0,82,101,115,111,117,114,99,101,32,116,101,109,112,111,114,97,114,105,108,121,32,117,110,97,118,97,105,108,97,98,108,101,0,73,110,118,97,108,105,100,32,115,101,101,107,0,67,114,111,115,115,45,100,101,118,105,99,101,32,108,105,110,107,0,82,101,97,100,45,111,110,108,121,32,102,105,108,101,32,115,121,115,116,101,109,0,68,105,114,101,99,116,111,114,121,32,110,111,116,32,101,109,112,116,121,0,67,111,110,110,101,99,116,105,111,110,32,114,101,115,101,116,32,98,121,32,112,101,101,114,0,79,112,101,114,97,116,105,111,110,32,116,105,109,101,100,32,111,117,116,0,67,111,110,110,101,99,116,105,111,110,32,114,101,102,117,115,101,100,0,72,111,115,116,32,105,115,32,100,111,119,110,0,72,111,115,116,32,105,115,32,117,110,114,101,97,99,104,97,98,108,101,0,65,100,100,114,101,115,115,32,105,110,32,117,115,101,0,66,114,111,107,101,110,32,112,105,112,101,0,73,47,79,32,101,114,114,111,114,0,78,111,32,115,117,99,104,32,100,101,118,105,99,101,32,111,114,32,97,100,100,114,101,115,115,0,66,108,111,99,107,32,100,101,118,105,99,101,32,114,101,113,117,105,114,101,100,0,78,111,32,115,117,99,104,32,100,101,118,105,99,101,0,78,111,116,32,97,32,100,105,114,101,99,116,111,114,121,0,73,115,32,97,32,100,105,114,101,99,116,111,114,121,0,84,101,120,116,32,102,105,108,101,32,98,117,115,121,0,69,120,101,99,32,102,111,114,109,97,116,32,101,114,114,111,114,0,73,110,118,97,108,105,100,32,97,114,103,117,109,101,110,116,0,65,114,103,117,109,101,110,116,32,108,105,115,116,32,116,111,111,32,108,111,110,103,0,83,121,109,98,111,108,105,99,32,108,105,110,107,32,108,111,111,112,0,70,105,108,101,110,97,109,101,32,116,111,111,32,108,111,110,103,0,84,111,111,32,109,97,110,121,32,111,112,101,110,32,102,105,108,101,115,32,105,110,32,115,121,115,116,101,109,0,78,111,32,102,105,108,101,32,100,101,115,99,114,105,112,116,111,114,115,32,97,118,97,105,108,97,98,108,101,0,66,97,100,32,102,105,108,101,32,100,101,115,99,114,105,112,116,111,114,0,78,111,32,99,104,105,108,100,32,112,114,111,99,101,115,115,0,66,97,100,32,97,100,100,114,101,115,115,0,70,105,108,101,32,116,111,111,32,108,97,114,103,101,0,84,111,111,32,109,97,110,121,32,108,105,110,107,115,0,78,111,32,108,111,99,107,115,32,97,118,97,105,108,97,98,108,101,0,82,101,115,111,117,114,99,101,32,100,101,97,100,108,111,99,107,32,119,111,117,108,100,32,111,99,99,117,114,0,83,116,97,116,101,32,110,111,116,32,114,101,99,111,118,101,114,97,98,108,101,0,80,114,101,118,105,111,117,115,32,111,119,110,101,114,32,100,105,101,100,0,79,112,101,114,97,116,105,111,110,32,99,97,110,99,101,108,101,100,0,70,117,110,99,116,105,111,110,32,110,111,116,32,105,109,112,108,101,109,101,110,116,101,100,0,78,111,32,109,101,115,115,97,103,101,32,111,102,32,100,101,115,105,114,101,100,32,116,121,112,101,0,73,100,101,110,116,105,102,105,101,114,32,114,101,109,111,118,101,100,0,68,101,118,105,99,101,32,110,111,116,32,97,32,115,116,114,101,97,109,0,78,111,32,100,97,116,97,32,97,118,97,105,108,97,98,108,101,0,68,101,118,105,99,101,32,116,105,109,101,111,117,116,0,79,117,116,32,111,102,32,115,116,114,101,97,109,115,32,114,101,115,111,117,114,99,101,115,0,76,105,110,107,32,104,97,115,32,98,101,101,110,32,115,101,118,101,114,101,100,0,80,114,111,116,111,99,111,108,32,101,114,114,111,114,0,66,97,100,32,109,101,115,115,97,103,101,0,70,105,108,101,32,100,101,115,99,114,105,112,116,111,114,32,105,110,32,98,97,100,32,115,116,97,116,101,0,78,111,116,32,97,32,115,111,99,107,101,116,0,68,101,115,116,105,110,97,116,105,111,110,32,97,100,100,114,101,115,115,32,114,101,113,117,105,114,101,100,0,77,101,115,115,97,103,101,32,116,111,111,32,108,97,114,103,101,0,80,114,111,116,111,99,111,108,32,119,114,111,110,103,32,116,121,112,101,32,102,111,114,32,115,111,99,107,101,116,0,80,114,111,116,111,99,111,108,32,110,111,116,32,97,118,97,105,108,97,98,108,101,0,80,114,111,116,111,99,111,108,32,110,111,116,32,115,117,112,112,111,114,116,101,100,0,83,111,99,107,101,116,32,116,121,112,101,32,110,111,116,32,115,117,112,112,111,114,116,101,100,0,78,111,116,32,115,117,112,112,111,114,116,101,100,0,80,114,111,116,111,99,111,108,32,102,97,109,105,108,121,32,110,111,116,32,115,117,112,112,111,114,116,101,100,0,65,100,100,114,101,115,115,32,102,97,109,105,108,121,32,110,111,116,32,115,117,112,112,111,114,116,101,100,32,98,121,32,112,114,111,116,111,99,111,108,0,65,100,100,114,101,115,115,32,110,111,116,32,97,118,97,105,108,97,98,108,101,0,78,101,116,119,111,114,107,32,105,115,32,100,111,119,110,0,78,101,116,119,111,114,107,32,117,110,114,101,97,99,104,97,98,108,101,0,67,111,110,110,101,99,116,105,111,110,32,114,101,115,101,116,32,98,121,32,110,101,116,119,111,114,107,0,67,111,110,110,101,99,116,105,111,110,32,97,98,111,114,116,101,100,0,78,111,32,98,117,102,102,101,114,32,115,112,97,99,101,32,97,118,97,105,108,97,98,108,101,0,83,111,99,107,101,116,32,105,115,32,99,111,110,110,101,99,116,101,100,0,83,111,99,107,101,116,32,110,111,116,32,99,111,110,110,101,99,116,101,100,0,67,97,110,110,111,116,32,115,101,110,100,32,97,102,116,101,114,32,115,111,99,107,101,116,32,115,104,117,116,100,111,119,110,0,79,112,101,114,97,116,105,111,110,32,97,108,114,101,97,100,121,32,105,110,32,112,114,111,103,114,101,115,115,0,79,112,101,114,97,116,105,111,110,32,105,110,32,112,114,111,103,114,101,115,115,0,83,116,97,108,101,32,102,105,108,101,32,104,97,110,100,108,101,0,82,101,109,111,116,101,32,73,47,79,32,101,114,114,111,114,0,81,117,111,116,97,32,101,120,99,101,101,100,101,100,0,78,111,32,109,101,100,105,117,109,32,102,111,117,110,100,0,87,114,111,110,103,32,109,101,100,105,117,109,32,116,121,112,101,0,78,111,32,101,114,114,111,114,32,105,110,102,111,114,109,97,116,105,111,110,0,0,33,34,118,101,99,116,111,114,32,108,101,110,103,116,104,95,101,114,114,111,114,34,0,47,117,115,114,47,108,111,99,97,108,47,103,111,111,103,108,101,47,104,111,109,101,47,111,115,116,97,118,97,47,100,101,118,101,47,101,109,115,100,107,95,112,111,114,116,97,98,108,101,47,101,109,115,99,114,105,112,116,101,110,47,109,97,115,116,101,114,47,115,121,115,116,101,109,47,105,110,99,108,117,100,101,47,108,105,98,99,120,120,47,118,101,99,116,111,114,0,95,95,116,104,114,111,119,95,108,101,110,103,116,104,95,101,114,114,111,114,0,33,34,118,101,99,116,111,114,32,111,117,116,95,111,102,95,114,97,110,103,101,34,0,95,95,116,104,114,111,119,95,111,117,116,95,111,102,95,114,97,110,103,101,0,116,101,114,109,105,110,97,116,105,110,103,32,119,105,116,104,32,37,115,32,101,120,99,101,112,116,105,111,110,32,111,102,32,116,121,112,101,32,37,115,58,32,37,115,0,116,101,114,109,105,110,97,116,105,110,103,32,119,105,116,104,32,37,115,32,101,120,99,101,112,116,105,111,110,32,111,102,32,116,121,112,101,32,37,115,0,116,101,114,109,105,110,97,116,105,110,103,32,119,105,116,104,32,37,115,32,102,111,114,101,105,103,110,32,101,120,99,101,112,116,105,111,110,0,116,101,114,109,105,110,97,116,105,110,103,0,117,110,99,97,117,103,104,116,0,83,116,57,101,120,99,101,112,116,105,111,110,0,78,49,48,95,95,99,120,120,97,98,105,118,49,49,54,95,95,115,104,105,109,95,116,121,112,101,95,105,110,102,111,69,0,83,116,57,116,121,112,101,95,105,110,102,111,0,78,49,48,95,95,99,120,120,97,98,105,118,49,50,48,95,95,115,105,95,99,108,97,115,115,95,116,121,112,101,95,105,110,102,111,69,0,78,49,48,95,95,99,120,120,97,98,105,118,49,49,55,95,95,99,108,97,115,115,95,116,121,112,101,95,105,110,102,111,69,0,112,116,104,114,101,97,100,95,111,110,99,101,32,102,97,105,108,117,114,101,32,105,110,32,95,95,99,120,97,95,103,101,116,95,103,108,111,98,97,108,115,95,102,97,115,116,40,41,0,99,97,110,110,111,116,32,99,114,101,97,116,101,32,112,116,104,114,101,97,100,32,107,101,121,32,102,111,114,32,95,95,99,120,97,95,103,101,116,95,103,108,111,98,97,108,115,40,41,0,99,97,110,110,111,116,32,122,101,114,111,32,111,117,116,32,116,104,114,101,97,100,32,118,97,108,117,101,32,102,111,114,32,95,95,99,120,97,95,103,101,116,95,103,108,111,98,97,108,115,40,41,0,116,101,114,109,105,110,97,116,101,95,104,97,110,100,108,101,114,32,117,110,101,120,112,101,99,116,101,100,108,121,32,114,101,116,117,114,110,101,100,0,115,116,100,58,58,98,97,100,95,97,108,108,111,99,0,83,116,57,98,97,100,95,97,108,108,111,99,0,78,49,48,95,95,99,120,120,97,98,105,118,49,49,57,95,95,112,111,105,110,116,101,114,95,116,121,112,101,95,105,110,102,111,69,0,78,49,48,95,95,99,120,120,97,98,105,118,49,49,55,95,95,112,98,97,115,101,95,116,121,112,101,95,105,110,102,111,69,0],"i8",ALLOC_NONE,Runtime.GLOBAL_BASE+10240);var tempDoublePtr=STATICTOP;STATICTOP+=16;Module["_i64Subtract"]=_i64Subtract;function ___assert_fail(condition,filename,line,func){ABORT=true;throw"Assertion failed: "+Pointer_stringify(condition)+", at: "+[filename?Pointer_stringify(filename):"unknown filename",line,func?Pointer_stringify(func):"unknown function"]+" at "+stackTrace()}function __ZSt18uncaught_exceptionv(){return!!__ZSt18uncaught_exceptionv.uncaught_exception}var EXCEPTIONS={last:0,caught:[],infos:{},deAdjust:(function(adjusted){if(!adjusted||EXCEPTIONS.infos[adjusted])return adjusted;for(var ptr in EXCEPTIONS.infos){var info=EXCEPTIONS.infos[ptr];if(info.adjusted===adjusted){return ptr}}return adjusted}),addRef:(function(ptr){if(!ptr)return;var info=EXCEPTIONS.infos[ptr];info.refcount++}),decRef:(function(ptr){if(!ptr)return;var info=EXCEPTIONS.infos[ptr];assert(info.refcount>0);info.refcount--;if(info.refcount===0&&!info.rethrown){if(info.destructor){Runtime.dynCall("vi",info.destructor,[ptr])}delete EXCEPTIONS.infos[ptr];___cxa_free_exception(ptr)}}),clearRef:(function(ptr){if(!ptr)return;var info=EXCEPTIONS.infos[ptr];info.refcount=0})};function ___resumeException(ptr){if(!EXCEPTIONS.last){EXCEPTIONS.last=ptr}throw ptr+" - Exception catching is disabled, this exception cannot be caught. Compile with -s DISABLE_EXCEPTION_CATCHING=0 or DISABLE_EXCEPTION_CATCHING=2 to catch."}function ___cxa_find_matching_catch(){var thrown=EXCEPTIONS.last;if(!thrown){return(asm["setTempRet0"](0),0)|0}var info=EXCEPTIONS.infos[thrown];var throwntype=info.type;if(!throwntype){return(asm["setTempRet0"](0),thrown)|0}var typeArray=Array.prototype.slice.call(arguments);var pointer=Module["___cxa_is_pointer_type"](throwntype);if(!___cxa_find_matching_catch.buffer)___cxa_find_matching_catch.buffer=_malloc(4);HEAP32[___cxa_find_matching_catch.buffer>>2]=thrown;thrown=___cxa_find_matching_catch.buffer;for(var i=0;i>2];info.adjusted=thrown;return(asm["setTempRet0"](typeArray[i]),thrown)|0}}thrown=HEAP32[thrown>>2];return(asm["setTempRet0"](throwntype),thrown)|0}function ___cxa_throw(ptr,type,destructor){EXCEPTIONS.infos[ptr]={ptr:ptr,adjusted:ptr,type:type,destructor:destructor,refcount:0,caught:false,rethrown:false};EXCEPTIONS.last=ptr;if(!("uncaught_exception"in __ZSt18uncaught_exceptionv)){__ZSt18uncaught_exceptionv.uncaught_exception=1}else{__ZSt18uncaught_exceptionv.uncaught_exception++}throw ptr+" - Exception catching is disabled, this exception cannot be caught. Compile with -s DISABLE_EXCEPTION_CATCHING=0 or DISABLE_EXCEPTION_CATCHING=2 to catch."}Module["_memset"]=_memset;Module["_bitshift64Shl"]=_bitshift64Shl;function _abort(){Module["abort"]()}function _pthread_once(ptr,func){if(!_pthread_once.seen)_pthread_once.seen={};if(ptr in _pthread_once.seen)return;Runtime.dynCall("v",func);_pthread_once.seen[ptr]=1}var PTHREAD_SPECIFIC={};function _pthread_getspecific(key){return PTHREAD_SPECIFIC[key]||0}Module["_i64Add"]=_i64Add;var PTHREAD_SPECIFIC_NEXT_KEY=1;var ERRNO_CODES={EPERM:1,ENOENT:2,ESRCH:3,EINTR:4,EIO:5,ENXIO:6,E2BIG:7,ENOEXEC:8,EBADF:9,ECHILD:10,EAGAIN:11,EWOULDBLOCK:11,ENOMEM:12,EACCES:13,EFAULT:14,ENOTBLK:15,EBUSY:16,EEXIST:17,EXDEV:18,ENODEV:19,ENOTDIR:20,EISDIR:21,EINVAL:22,ENFILE:23,EMFILE:24,ENOTTY:25,ETXTBSY:26,EFBIG:27,ENOSPC:28,ESPIPE:29,EROFS:30,EMLINK:31,EPIPE:32,EDOM:33,ERANGE:34,ENOMSG:42,EIDRM:43,ECHRNG:44,EL2NSYNC:45,EL3HLT:46,EL3RST:47,ELNRNG:48,EUNATCH:49,ENOCSI:50,EL2HLT:51,EDEADLK:35,ENOLCK:37,EBADE:52,EBADR:53,EXFULL:54,ENOANO:55,EBADRQC:56,EBADSLT:57,EDEADLOCK:35,EBFONT:59,ENOSTR:60,ENODATA:61,ETIME:62,ENOSR:63,ENONET:64,ENOPKG:65,EREMOTE:66,ENOLINK:67,EADV:68,ESRMNT:69,ECOMM:70,EPROTO:71,EMULTIHOP:72,EDOTDOT:73,EBADMSG:74,ENOTUNIQ:76,EBADFD:77,EREMCHG:78,ELIBACC:79,ELIBBAD:80,ELIBSCN:81,ELIBMAX:82,ELIBEXEC:83,ENOSYS:38,ENOTEMPTY:39,ENAMETOOLONG:36,ELOOP:40,EOPNOTSUPP:95,EPFNOSUPPORT:96,ECONNRESET:104,ENOBUFS:105,EAFNOSUPPORT:97,EPROTOTYPE:91,ENOTSOCK:88,ENOPROTOOPT:92,ESHUTDOWN:108,ECONNREFUSED:111,EADDRINUSE:98,ECONNABORTED:103,ENETUNREACH:101,ENETDOWN:100,ETIMEDOUT:110,EHOSTDOWN:112,EHOSTUNREACH:113,EINPROGRESS:115,EALREADY:114,EDESTADDRREQ:89,EMSGSIZE:90,EPROTONOSUPPORT:93,ESOCKTNOSUPPORT:94,EADDRNOTAVAIL:99,ENETRESET:102,EISCONN:106,ENOTCONN:107,ETOOMANYREFS:109,EUSERS:87,EDQUOT:122,ESTALE:116,ENOTSUP:95,ENOMEDIUM:123,EILSEQ:84,EOVERFLOW:75,ECANCELED:125,ENOTRECOVERABLE:131,EOWNERDEAD:130,ESTRPIPE:86};function _pthread_key_create(key,destructor){if(key==0){return ERRNO_CODES.EINVAL}HEAP32[key>>2]=PTHREAD_SPECIFIC_NEXT_KEY;PTHREAD_SPECIFIC[PTHREAD_SPECIFIC_NEXT_KEY]=0;PTHREAD_SPECIFIC_NEXT_KEY++;return 0}function _pthread_setspecific(key,value){if(!(key in PTHREAD_SPECIFIC)){return ERRNO_CODES.EINVAL}PTHREAD_SPECIFIC[key]=value;return 0}function _malloc(bytes){var ptr=Runtime.dynamicAlloc(bytes+8);return ptr+8&4294967288}Module["_malloc"]=_malloc;function ___cxa_allocate_exception(size){return _malloc(size)}Module["_bitshift64Lshr"]=_bitshift64Lshr;function ___cxa_pure_virtual(){ABORT=true;throw"Pure virtual function called!"}function _pthread_cleanup_push(routine,arg){__ATEXIT__.push((function(){Runtime.dynCall("vi",routine,[arg])}));_pthread_cleanup_push.level=__ATEXIT__.length}function _pthread_cleanup_pop(){assert(_pthread_cleanup_push.level==__ATEXIT__.length,"cannot pop if something else added meanwhile!");__ATEXIT__.pop();_pthread_cleanup_push.level=__ATEXIT__.length}function ___cxa_begin_catch(ptr){var info=EXCEPTIONS.infos[ptr];if(info&&!info.caught){info.caught=true;__ZSt18uncaught_exceptionv.uncaught_exception--}if(info)info.rethrown=false;EXCEPTIONS.caught.push(ptr);EXCEPTIONS.addRef(EXCEPTIONS.deAdjust(ptr));return ptr}function _emscripten_memcpy_big(dest,src,num){HEAPU8.set(HEAPU8.subarray(src,src+num),dest);return dest}Module["_memcpy"]=_memcpy;var SYSCALLS={varargs:0,get:(function(varargs){SYSCALLS.varargs+=4;var ret=HEAP32[SYSCALLS.varargs-4>>2];return ret}),getStr:(function(){var ret=Pointer_stringify(SYSCALLS.get());return ret}),get64:(function(){var low=SYSCALLS.get(),high=SYSCALLS.get();if(low>=0)assert(high===0);else assert(high===-1);return low}),getZero:(function(){assert(SYSCALLS.get()===0)})};function ___syscall6(which,varargs){SYSCALLS.varargs=varargs;try{var stream=SYSCALLS.getStreamFromFD();FS.close(stream);return 0}catch(e){if(typeof FS==="undefined"||!(e instanceof FS.ErrnoError))abort(e);return-e.errno}}var cttz_i8=allocate([8,0,1,0,2,0,1,0,3,0,1,0,2,0,1,0,4,0,1,0,2,0,1,0,3,0,1,0,2,0,1,0,5,0,1,0,2,0,1,0,3,0,1,0,2,0,1,0,4,0,1,0,2,0,1,0,3,0,1,0,2,0,1,0,6,0,1,0,2,0,1,0,3,0,1,0,2,0,1,0,4,0,1,0,2,0,1,0,3,0,1,0,2,0,1,0,5,0,1,0,2,0,1,0,3,0,1,0,2,0,1,0,4,0,1,0,2,0,1,0,3,0,1,0,2,0,1,0,7,0,1,0,2,0,1,0,3,0,1,0,2,0,1,0,4,0,1,0,2,0,1,0,3,0,1,0,2,0,1,0,5,0,1,0,2,0,1,0,3,0,1,0,2,0,1,0,4,0,1,0,2,0,1,0,3,0,1,0,2,0,1,0,6,0,1,0,2,0,1,0,3,0,1,0,2,0,1,0,4,0,1,0,2,0,1,0,3,0,1,0,2,0,1,0,5,0,1,0,2,0,1,0,3,0,1,0,2,0,1,0,4,0,1,0,2,0,1,0,3,0,1,0,2,0,1,0],"i8",ALLOC_STATIC);Module["_llvm_cttz_i32"]=_llvm_cttz_i32;Module["___udivmoddi4"]=___udivmoddi4;Module["___udivdi3"]=___udivdi3;Module["___muldsi3"]=___muldsi3;Module["___muldi3"]=___muldi3;function ___setErrNo(value){if(Module["___errno_location"])HEAP32[Module["___errno_location"]()>>2]=value;return value}Module["_sbrk"]=_sbrk;Module["_memmove"]=_memmove;function ___gxx_personality_v0(){}Module["___uremdi3"]=___uremdi3;Module["_llvm_bswap_i16"]=_llvm_bswap_i16;Module["_pthread_self"]=_pthread_self;function ___syscall140(which,varargs){SYSCALLS.varargs=varargs;try{var stream=SYSCALLS.getStreamFromFD(),offset_high=SYSCALLS.get(),offset_low=SYSCALLS.get(),result=SYSCALLS.get(),whence=SYSCALLS.get();var offset=offset_low;assert(offset_high===0);FS.llseek(stream,offset,whence);HEAP32[result>>2]=stream.position;if(stream.getdents&&offset===0&&whence===0)stream.getdents=null;return 0}catch(e){if(typeof FS==="undefined"||!(e instanceof FS.ErrnoError))abort(e);return-e.errno}}function ___syscall146(which,varargs){SYSCALLS.varargs=varargs;try{var stream=SYSCALLS.get(),iov=SYSCALLS.get(),iovcnt=SYSCALLS.get();var ret=0;if(!___syscall146.buffer){___syscall146.buffers=[null,[],[]];___syscall146.printChar=(function(stream,curr){var buffer=___syscall146.buffers[stream];assert(buffer);if(curr===0||curr===10){(stream===1?Module["print"]:Module["printErr"])(UTF8ArrayToString(buffer,0));buffer.length=0}else{buffer.push(curr)}})}for(var i=0;i>2];var len=HEAP32[iov+(i*8+4)>>2];for(var j=0;j>2]=DYNAMIC_BASE;staticSealed=true;function invoke_iiii(index,a1,a2,a3){try{return Module["dynCall_iiii"](index,a1,a2,a3)}catch(e){if(typeof e!=="number"&&e!=="longjmp")throw e;asm["setThrew"](1,0)}}function invoke_viiiii(index,a1,a2,a3,a4,a5){try{Module["dynCall_viiiii"](index,a1,a2,a3,a4,a5)}catch(e){if(typeof e!=="number"&&e!=="longjmp")throw e;asm["setThrew"](1,0)}}function invoke_vi(index,a1){try{Module["dynCall_vi"](index,a1)}catch(e){if(typeof e!=="number"&&e!=="longjmp")throw e;asm["setThrew"](1,0)}}function invoke_iiiiiii(index,a1,a2,a3,a4,a5,a6){try{return Module["dynCall_iiiiiii"](index,a1,a2,a3,a4,a5,a6)}catch(e){if(typeof e!=="number"&&e!=="longjmp")throw e;asm["setThrew"](1,0)}}function invoke_ii(index,a1){try{return Module["dynCall_ii"](index,a1)}catch(e){if(typeof e!=="number"&&e!=="longjmp")throw e;asm["setThrew"](1,0)}}function invoke_viii(index,a1,a2,a3){try{Module["dynCall_viii"](index,a1,a2,a3)}catch(e){if(typeof e!=="number"&&e!=="longjmp")throw e;asm["setThrew"](1,0)}}function invoke_v(index){try{Module["dynCall_v"](index)}catch(e){if(typeof e!=="number"&&e!=="longjmp")throw e;asm["setThrew"](1,0)}}function invoke_viiiiii(index,a1,a2,a3,a4,a5,a6){try{Module["dynCall_viiiiii"](index,a1,a2,a3,a4,a5,a6)}catch(e){if(typeof e!=="number"&&e!=="longjmp")throw e;asm["setThrew"](1,0)}}function invoke_iii(index,a1,a2){try{return Module["dynCall_iii"](index,a1,a2)}catch(e){if(typeof e!=="number"&&e!=="longjmp")throw e;asm["setThrew"](1,0)}}function invoke_viiii(index,a1,a2,a3,a4){try{Module["dynCall_viiii"](index,a1,a2,a3,a4)}catch(e){if(typeof e!=="number"&&e!=="longjmp")throw e;asm["setThrew"](1,0)}}Module.asmGlobalArg={"Math":Math,"Int8Array":Int8Array,"Int16Array":Int16Array,"Int32Array":Int32Array,"Uint8Array":Uint8Array,"Uint16Array":Uint16Array,"Uint32Array":Uint32Array,"Float32Array":Float32Array,"Float64Array":Float64Array,"NaN":NaN,"Infinity":Infinity,"byteLength":byteLength};Module.asmLibraryArg={"abort":abort,"assert":assert,"enlargeMemory":enlargeMemory,"getTotalMemory":getTotalMemory,"abortOnCannotGrowMemory":abortOnCannotGrowMemory,"invoke_iiii":invoke_iiii,"invoke_viiiii":invoke_viiiii,"invoke_vi":invoke_vi,"invoke_iiiiiii":invoke_iiiiiii,"invoke_ii":invoke_ii,"invoke_viii":invoke_viii,"invoke_v":invoke_v,"invoke_viiiiii":invoke_viiiiii,"invoke_iii":invoke_iii,"invoke_viiii":invoke_viiii,"_pthread_cleanup_pop":_pthread_cleanup_pop,"_pthread_getspecific":_pthread_getspecific,"_pthread_setspecific":_pthread_setspecific,"_pthread_cleanup_push":_pthread_cleanup_push,"___cxa_throw":___cxa_throw,"_pthread_key_create":_pthread_key_create,"___syscall6":___syscall6,"___setErrNo":___setErrNo,"_abort":_abort,"_pthread_once":_pthread_once,"___syscall146":___syscall146,"___cxa_begin_catch":___cxa_begin_catch,"_emscripten_memcpy_big":_emscripten_memcpy_big,"___gxx_personality_v0":___gxx_personality_v0,"___syscall140":___syscall140,"___resumeException":___resumeException,"___cxa_find_matching_catch":___cxa_find_matching_catch,"___assert_fail":___assert_fail,"___cxa_pure_virtual":___cxa_pure_virtual,"___cxa_allocate_exception":___cxa_allocate_exception,"__ZSt18uncaught_exceptionv":__ZSt18uncaught_exceptionv,"STACKTOP":STACKTOP,"STACK_MAX":STACK_MAX,"DYNAMICTOP_PTR":DYNAMICTOP_PTR,"tempDoublePtr":tempDoublePtr,"ABORT":ABORT,"cttz_i8":cttz_i8};// EMSCRIPTEN_START_ASM -var asm=(function(global,env,buffer) { -"almost asm";var a=global.Int8Array;var b=global.Int16Array;var c=global.Int32Array;var d=global.Uint8Array;var e=global.Uint16Array;var f=global.Uint32Array;var g=global.Float32Array;var h=global.Float64Array;var i=new a(buffer);var j=new b(buffer);var k=new c(buffer);var l=new d(buffer);var m=new e(buffer);var n=new f(buffer);var o=new g(buffer);var p=new h(buffer);var q=global.byteLength;var r=env.STACKTOP|0;var s=env.STACK_MAX|0;var t=env.DYNAMICTOP_PTR|0;var u=env.tempDoublePtr|0;var v=env.ABORT|0;var w=env.cttz_i8|0;var x=0;var y=0;var z=0;var A=0;var B=global.NaN,C=global.Infinity;var D=0,E=0,F=0,G=0,H=0,I=0,J=0,K=0,L=0;var M=0;var N=global.Math.floor;var O=global.Math.abs;var P=global.Math.sqrt;var Q=global.Math.pow;var R=global.Math.cos;var S=global.Math.sin;var T=global.Math.tan;var U=global.Math.acos;var V=global.Math.asin;var W=global.Math.atan;var X=global.Math.atan2;var Y=global.Math.exp;var Z=global.Math.log;var _=global.Math.ceil;var $=global.Math.imul;var aa=global.Math.min;var ba=global.Math.max;var ca=global.Math.clz32;var da=global.Math.fround;var ea=env.abort;var fa=env.assert;var ga=env.enlargeMemory;var ha=env.getTotalMemory;var ia=env.abortOnCannotGrowMemory;var ja=env.invoke_iiii;var ka=env.invoke_viiiii;var la=env.invoke_vi;var ma=env.invoke_iiiiiii;var na=env.invoke_ii;var oa=env.invoke_viii;var pa=env.invoke_v;var qa=env.invoke_viiiiii;var ra=env.invoke_iii;var sa=env.invoke_viiii;var ta=env._pthread_cleanup_pop;var ua=env._pthread_getspecific;var va=env._pthread_setspecific;var wa=env._pthread_cleanup_push;var xa=env.___cxa_throw;var ya=env._pthread_key_create;var za=env.___syscall6;var Aa=env.___setErrNo;var Ba=env._abort;var Ca=env._pthread_once;var Da=env.___syscall146;var Ea=env.___cxa_begin_catch;var Fa=env._emscripten_memcpy_big;var Ga=env.___gxx_personality_v0;var Ha=env.___syscall140;var Ia=env.___resumeException;var Ja=env.___cxa_find_matching_catch;var Ka=env.___assert_fail;var La=env.___cxa_pure_virtual;var Ma=env.___cxa_allocate_exception;var Na=env.__ZSt18uncaught_exceptionv;var Oa=da(0);const Pa=da(0);function Qa(newBuffer){if(q(newBuffer)&16777215||q(newBuffer)<=16777215||q(newBuffer)>2147483648)return false;i=new a(newBuffer);j=new b(newBuffer);k=new c(newBuffer);l=new d(newBuffer);m=new e(newBuffer);n=new f(newBuffer);o=new g(newBuffer);p=new h(newBuffer);buffer=newBuffer;return true} -// EMSCRIPTEN_START_FUNCS -function Jb(a,b,c,d,e,f){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;f=f|0;var g=0,h=0,i=0,j=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,B=0,C=0,D=0,E=0,F=0,G=0,H=0;D=a+8|0;k[D>>2]=e;h=a+32|0;i=a+36|0;g=k[i>>2]|0;f=k[h>>2]|0;d=g-f>>2;if(d>>>0>=e>>>0){if(d>>>0>e>>>0?(j=f+(e<<2)|0,(g|0)!=(j|0)):0)k[i>>2]=g+(~((g+-4-j|0)>>>2)<<2)}else eg(h,e-d|0);A=e>>>0>1073741823?-1:e<<2;B=dl(A)|0;Ah(B|0,0,A|0)|0;C=dl(A)|0;Ah(C|0,0,A|0)|0;if((k[D>>2]|0)>0){l=a+16|0;j=a+32|0;m=a+12|0;i=0;do{h=k[B+(i<<2)>>2]|0;d=k[l>>2]|0;do if((h|0)<=(d|0)){d=k[m>>2]|0;f=k[j>>2]|0;g=f+(i<<2)|0;if((h|0)<(d|0)){k[g>>2]=d;g=f;break}else{k[g>>2]=h;g=f;break}}else{g=k[j>>2]|0;k[g+(i<<2)>>2]=d}while(0);i=i+1|0;d=k[D>>2]|0}while((i|0)<(d|0));if((d|0)>0){d=0;do{k[c+(d<<2)>>2]=(k[b+(d<<2)>>2]|0)+(k[g+(d<<2)>>2]|0);d=d+1|0;f=k[D>>2]|0}while((d|0)<(f|0));if((f|0)>0){f=a+20|0;d=0;do{g=c+(d<<2)|0;h=k[g>>2]|0;if((h|0)<=(k[l>>2]|0)){if((h|0)<(k[m>>2]|0))k[g>>2]=(k[f>>2]|0)+h}else k[g>>2]=h-(k[f>>2]|0);d=d+1|0}while((d|0)<(k[D>>2]|0))}}}t=k[a+48>>2]|0;u=a+56|0;f=k[u>>2]|0;h=k[f+4>>2]|0;g=k[f>>2]|0;A=h-g|0;v=A>>2;if((A|0)<=4){el(C);el(B);return 1}w=k[a+52>>2]|0;x=(e|0)>0;y=a+16|0;z=a+32|0;A=a+12|0;q=a+20|0;r=t+12|0;s=e<<2;d=1;while(1){if(h-g>>2>>>0<=d>>>0){H=28;break}p=k[g+(d<<2)>>2]|0;if(x)Ah(B|0,0,s|0)|0;if((p|0)>-1){o=k[r>>2]|0;a=0;n=p;while(1){g=k[o+(n<<2)>>2]|0;if((g|0)>=0){i=k[t>>2]|0;h=(g>>>0)%3|0;j=k[w>>2]|0;m=k[j+(k[i+(((g>>>0)/3|0)*12|0)+(h<<2)>>2]<<2)>>2]|0;f=g+1|0;f=((f|0)%3|0|0)==0?g+-2|0:f;if((f|0)<0)f=-1073741824;else f=k[i+(((f>>>0)/3|0)*12|0)+(((f>>>0)%3|0)<<2)>>2]|0;l=k[j+(f<<2)>>2]|0;f=((h|0)==0?2:-1)+g|0;if((f|0)<0)f=-1073741824;else f=k[i+(((f>>>0)/3|0)*12|0)+(((f>>>0)%3|0)<<2)>>2]|0;f=k[j+(f<<2)>>2]|0;if((m|0)<(d|0)&(l|0)<(d|0)&(f|0)<(d|0)){i=$(m,e)|0;h=$(l,e)|0;g=$(f,e)|0;if(x){f=0;do{k[C+(f<<2)>>2]=(k[c+(f+g<<2)>>2]|0)+(k[c+(f+h<<2)>>2]|0)-(k[c+(f+i<<2)>>2]|0);f=f+1|0}while((f|0)!=(e|0));if(x){f=0;do{m=B+(f<<2)|0;k[m>>2]=(k[m>>2]|0)+(k[C+(f<<2)>>2]|0);f=f+1|0}while((f|0)!=(e|0))}}g=a+1|0}else g=a}else g=a;f=(((n>>>0)%3|0|0)==0?2:-1)+n|0;do if((f|0)>=0){f=k[o+(f<<2)>>2]|0;if((f|0)>=0)if(!((f>>>0)%3|0)){f=f+2|0;break}else{f=f+-1|0;break}}while(0);n=(f|0)==(p|0)?-1073741824:f;if((n|0)<=-1)break;else a=g}l=$(d,e)|0;if(g){if(x){f=0;do{p=B+(f<<2)|0;k[p>>2]=(k[p>>2]|0)/(g|0)|0;f=f+1|0}while((f|0)!=(e|0))}m=c+(l<<2)|0;if((k[D>>2]|0)>0){j=0;do{i=k[B+(j<<2)>>2]|0;f=k[y>>2]|0;do if((i|0)<=(f|0)){f=k[A>>2]|0;g=k[z>>2]|0;h=g+(j<<2)|0;if((i|0)<(f|0)){k[h>>2]=f;h=g;break}else{k[h>>2]=i;h=g;break}}else{h=k[z>>2]|0;k[h+(j<<2)>>2]=f}while(0);j=j+1|0;f=k[D>>2]|0}while((j|0)<(f|0));if((f|0)>0){f=0;do{k[m+(f<<2)>>2]=(k[b+(f+l<<2)>>2]|0)+(k[h+(f<<2)>>2]|0);f=f+1|0;g=k[D>>2]|0}while((f|0)<(g|0));if((g|0)>0){f=0;do{g=m+(f<<2)|0;h=k[g>>2]|0;if((h|0)<=(k[y>>2]|0)){if((h|0)<(k[A>>2]|0))k[g>>2]=(k[q>>2]|0)+h}else k[g>>2]=h-(k[q>>2]|0);f=f+1|0}while((f|0)<(k[D>>2]|0))}}}}else{G=l;H=52}}else{G=$(d,e)|0;H=52}if((H|0)==52?(H=0,E=c+(($(d+-1|0,e)|0)<<2)|0,F=c+(G<<2)|0,(k[D>>2]|0)>0):0){j=0;do{i=k[E+(j<<2)>>2]|0;f=k[y>>2]|0;do if((i|0)<=(f|0)){f=k[A>>2]|0;g=k[z>>2]|0;h=g+(j<<2)|0;if((i|0)<(f|0)){k[h>>2]=f;h=g;break}else{k[h>>2]=i;h=g;break}}else{h=k[z>>2]|0;k[h+(j<<2)>>2]=f}while(0);j=j+1|0;f=k[D>>2]|0}while((j|0)<(f|0));if((f|0)>0){f=0;do{k[F+(f<<2)>>2]=(k[b+(f+G<<2)>>2]|0)+(k[h+(f<<2)>>2]|0);f=f+1|0;g=k[D>>2]|0}while((f|0)<(g|0));if((g|0)>0){f=0;do{g=F+(f<<2)|0;h=k[g>>2]|0;if((h|0)<=(k[y>>2]|0)){if((h|0)<(k[A>>2]|0))k[g>>2]=(k[q>>2]|0)+h}else k[g>>2]=h-(k[q>>2]|0);f=f+1|0}while((f|0)<(k[D>>2]|0))}}}d=d+1|0;if((d|0)>=(v|0)){H=25;break}f=k[u>>2]|0;g=k[f>>2]|0;h=k[f+4>>2]|0}if((H|0)==25){el(C);el(B);return 1}else if((H|0)==28)lk(f);return 0}function Kb(a,b,c,d,e,f){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;f=f|0;var g=0,h=0,i=0,j=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,B=0,C=0,D=0,E=0,F=0;F=a+8|0;k[F>>2]=e;do if(d|0){f=k[b>>2]|0;l=a+16|0;k[l>>2]=f;j=a+12|0;k[j>>2]=f;if((d|0)>1){i=1;h=f;while(1){g=k[b+(i<<2)>>2]|0;if((g|0)>=(h|0))if((g|0)>(f|0)){k[l>>2]=g;f=g;g=h}else g=h;else k[j>>2]=g;i=i+1|0;if((i|0)==(d|0))break;else h=g}}else g=f;z=1-g+f|0;k[a+20>>2]=z;f=(z|0)/2|0;g=a+24|0;k[g>>2]=f;k[a+28>>2]=0-f;if(!(z&1))k[g>>2]=f+-1;f=a+32|0;g=a+36|0;j=k[g>>2]|0;h=k[f>>2]|0;i=j-h>>2;if(i>>>0>>0){eg(f,e-i|0);break}if(i>>>0>e>>>0?(m=h+(e<<2)|0,(j|0)!=(m|0)):0)k[g>>2]=j+(~((j+-4-m|0)>>>2)<<2)}while(0);o=e>>>0>1073741823?-1:e<<2;z=dl(o)|0;Ah(z|0,0,o|0)|0;o=k[a+48>>2]|0;p=a+56|0;i=k[p>>2]|0;h=k[i+4>>2]|0;g=k[i>>2]|0;f=h-g|0;a:do if((f|0)>4){q=k[a+52>>2]|0;r=a+16|0;s=a+32|0;t=a+12|0;u=a+28|0;v=a+20|0;w=a+24|0;x=o+12|0;y=(e|0)>0;d=f>>2;f=i;while(1){n=d+-1|0;if(h-g>>2>>>0<=n>>>0)break;f=k[g+(n<<2)>>2]|0;m=$(n,e)|0;if((f|0)>=0?(A=k[(k[x>>2]|0)+(f<<2)>>2]|0,(A|0)>=0):0){h=k[o>>2]|0;g=(A>>>0)%3|0;i=k[q>>2]|0;l=k[i+(k[h+(((A>>>0)/3|0)*12|0)+(g<<2)>>2]<<2)>>2]|0;f=A+1|0;f=((f|0)%3|0|0)==0?A+-2|0:f;if((f|0)<0)f=-1073741824;else f=k[h+(((f>>>0)/3|0)*12|0)+(((f>>>0)%3|0)<<2)>>2]|0;j=k[i+(f<<2)>>2]|0;f=((g|0)==0?2:-1)+A|0;if((f|0)<0)f=-1073741824;else f=k[h+(((f>>>0)/3|0)*12|0)+(((f>>>0)%3|0)<<2)>>2]|0;f=k[i+(f<<2)>>2]|0;if((l|0)<(n|0)&(j|0)<(n|0)&(f|0)<(n|0)){i=$(l,e)|0;h=$(j,e)|0;g=$(f,e)|0;if(y){f=0;do{k[z+(f<<2)>>2]=(k[b+(f+g<<2)>>2]|0)+(k[b+(f+h<<2)>>2]|0)-(k[b+(f+i<<2)>>2]|0);f=f+1|0}while((f|0)!=(e|0))}l=b+(m<<2)|0;if((k[F>>2]|0)>0){j=0;do{i=k[z+(j<<2)>>2]|0;f=k[r>>2]|0;do if((i|0)<=(f|0)){f=k[t>>2]|0;g=k[s>>2]|0;h=g+(j<<2)|0;if((i|0)<(f|0)){k[h>>2]=f;h=g;break}else{k[h>>2]=i;h=g;break}}else{h=k[s>>2]|0;k[h+(j<<2)>>2]=f}while(0);j=j+1|0;f=k[F>>2]|0}while((j|0)<(f|0));if((f|0)>0){f=0;do{k[c+(f+m<<2)>>2]=(k[l+(f<<2)>>2]|0)-(k[h+(f<<2)>>2]|0);f=f+1|0;g=k[F>>2]|0}while((f|0)<(g|0));if((g|0)>0){f=0;do{g=c+(f+m<<2)|0;h=k[g>>2]|0;if((h|0)>=(k[u>>2]|0)){if((h|0)>(k[w>>2]|0))k[g>>2]=h-(k[v>>2]|0)}else k[g>>2]=(k[v>>2]|0)+h;f=f+1|0}while((f|0)<(k[F>>2]|0))}}}}else D=31}else D=31;if((D|0)==31?(D=0,B=b+(m<<2)|0,C=b+(($(d+-2|0,e)|0)<<2)|0,(k[F>>2]|0)>0):0){j=0;do{i=k[C+(j<<2)>>2]|0;f=k[r>>2]|0;do if((i|0)<=(f|0)){f=k[t>>2]|0;g=k[s>>2]|0;h=g+(j<<2)|0;if((i|0)<(f|0)){k[h>>2]=f;h=g;break}else{k[h>>2]=i;h=g;break}}else{h=k[s>>2]|0;k[h+(j<<2)>>2]=f}while(0);j=j+1|0;f=k[F>>2]|0}while((j|0)<(f|0));if((f|0)>0){f=0;do{k[c+(f+m<<2)>>2]=(k[B+(f<<2)>>2]|0)-(k[h+(f<<2)>>2]|0);f=f+1|0;g=k[F>>2]|0}while((f|0)<(g|0));if((g|0)>0){f=0;do{g=c+(f+m<<2)|0;h=k[g>>2]|0;if((h|0)>=(k[u>>2]|0)){if((h|0)>(k[w>>2]|0))k[g>>2]=h-(k[v>>2]|0)}else k[g>>2]=(k[v>>2]|0)+h;f=f+1|0}while((f|0)<(k[F>>2]|0))}}}if((n|0)<=1){E=z;break a}f=k[p>>2]|0;d=n;g=k[f>>2]|0;h=k[f+4>>2]|0}lk(f)}else E=z;while(0);if((e|0)>0)Ah(z|0,0,e<<2|0)|0;if((k[F>>2]|0)<=0){el(z);return 1}l=a+16|0;d=a+32|0;m=a+12|0;j=0;do{i=k[E+(j<<2)>>2]|0;f=k[l>>2]|0;do if((i|0)<=(f|0)){f=k[m>>2]|0;g=k[d>>2]|0;h=g+(j<<2)|0;if((i|0)<(f|0)){k[h>>2]=f;h=g;break}else{k[h>>2]=i;h=g;break}}else{h=k[d>>2]|0;k[h+(j<<2)>>2]=f}while(0);j=j+1|0;f=k[F>>2]|0}while((j|0)<(f|0));if((f|0)>0)f=0;else{el(z);return 1}do{k[c+(f<<2)>>2]=(k[b+(f<<2)>>2]|0)-(k[h+(f<<2)>>2]|0);f=f+1|0;g=k[F>>2]|0}while((f|0)<(g|0));if((g|0)<=0){el(z);return 1}j=a+28|0;l=a+20|0;g=a+24|0;f=0;do{h=c+(f<<2)|0;i=k[h>>2]|0;if((i|0)>=(k[j>>2]|0)){if((i|0)>(k[g>>2]|0))k[h>>2]=i-(k[l>>2]|0)}else k[h>>2]=(k[l>>2]|0)+i;f=f+1|0}while((f|0)<(k[F>>2]|0));el(z);return 1}function Lb(a,b,c){a=a|0;b=b|0;c=c|0;var d=0,e=0,f=0,g=0,h=0,j=0,m=Pa,n=Pa,p=0,q=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,B=0,C=0,D=0,E=0,F=0,G=0,H=0,I=0,J=0,K=0,L=Pa;K=r;r=r+48|0;J=K+20|0;E=K;I=K+8|0;F=J+16|0;k[J>>2]=0;k[J+4>>2]=0;k[J+8>>2]=0;k[J+12>>2]=0;o[F>>2]=da(1.0);H=a+80|0;Ih(I,k[H>>2]|0);e=k[H>>2]|0;a:do if((e|0)>0){v=b+48|0;w=b+40|0;x=J+4|0;y=J+12|0;z=J+8|0;A=a+40|0;B=a+64|0;u=k[c>>2]|0;c=0;t=0;p=0;while(1){q=u+c|0;j=v;h=k[j>>2]|0;j=k[j+4>>2]|0;s=w;s=Pi(q|0,((q|0)<0)<<31>>31|0,k[s>>2]|0,k[s+4>>2]|0)|0;j=Bj(s|0,M|0,h|0,j|0)|0;j=(k[k[b>>2]>>2]|0)+j|0;h=j;h=l[h>>0]|l[h+1>>0]<<8|l[h+2>>0]<<16|l[h+3>>0]<<24;j=j+4|0;j=l[j>>0]|l[j+1>>0]<<8|l[j+2>>0]<<16|l[j+3>>0]<<24;s=E;k[s>>2]=h;k[s+4>>2]=j;s=(h^318)+239^j;q=(p|0)==0;b:do if(!q){f=p+-1|0;d=(f&p|0)==0;if(d)g=s&f;else g=(s>>>0)%(p>>>0)|0;e=k[(k[J>>2]|0)+(g<<2)>>2]|0;do if(e|0?(C=k[e>>2]|0,C|0):0){c:do if(d){d=C;while(1){if((k[d+4>>2]&f|0)!=(g|0)){e=20;break c}if((k[d+8>>2]|0)==(h|0)?(k[d+12>>2]|0)==(j|0):0){e=19;break c}d=k[d>>2]|0;if(!d){e=20;break}}}else{d=C;while(1){if((((k[d+4>>2]|0)>>>0)%(p>>>0)|0|0)!=(g|0)){e=20;break c}if((k[d+8>>2]|0)==(h|0)?(k[d+12>>2]|0)==(j|0):0){e=19;break c}d=k[d>>2]|0;if(!d){e=20;break}}}while(0);if((e|0)==19){e=0;k[(k[I>>2]|0)+(c<<2)>>2]=k[d+16>>2];d=t;break b}else if((e|0)==20)if(q){d=0;e=35;break b}else break}while(0);g=p+-1|0;f=(g&p|0)==0;if(f)d=g&s;else d=(s>>>0)%(p>>>0)|0;e=k[(k[J>>2]|0)+(d<<2)>>2]|0;if((e|0)!=0?(D=k[e>>2]|0,(D|0)!=0):0)if(f){e=D;while(1){if((k[e+4>>2]&g|0)!=(d|0)){e=35;break b}if((k[e+8>>2]|0)==(h|0)?(k[e+12>>2]|0)==(j|0):0){e=47;break b}e=k[e>>2]|0;if(!e){e=35;break}}}else{e=D;while(1){if((((k[e+4>>2]|0)>>>0)%(p>>>0)|0|0)!=(d|0)){e=35;break b}if((k[e+8>>2]|0)==(h|0)?(k[e+12>>2]|0)==(j|0):0){e=47;break b}e=k[e>>2]|0;if(!e){e=35;break}}}else e=35}else{d=0;e=35}while(0);if((e|0)==35){g=Si(20)|0;f=g+8|0;k[f>>2]=h;k[f+4>>2]=j;k[g+16>>2]=t;k[g+4>>2]=s;k[g>>2]=0;m=da(((k[y>>2]|0)+1|0)>>>0);L=da(p>>>0);n=da(o[F>>2]);do if(q|m>da(L*n)){d=(p>>>0>2&(p+-1&p|0)==0&1|p<<1)^1;e=~~da(_(da(m/n)))>>>0;Mf(J,d>>>0>>0?e:d);d=k[x>>2]|0;e=d+-1|0;if(!(e&d)){f=d;d=e&s;break}else{f=d;d=(s>>>0)%(d>>>0)|0;break}}else f=p;while(0);d=(k[J>>2]|0)+(d<<2)|0;e=k[d>>2]|0;if(!e){k[g>>2]=k[z>>2];k[z>>2]=g;k[d>>2]=z;d=k[g>>2]|0;if(d|0){d=k[d+4>>2]|0;e=f+-1|0;if(!(e&f))d=d&e;else d=(d>>>0)%(f>>>0)|0;k[(k[J>>2]|0)+(d<<2)>>2]=g}}else{k[g>>2]=k[e>>2];k[e>>2]=g}k[y>>2]=(k[y>>2]|0)+1;e=47}if((e|0)==47){s=A;d=k[s>>2]|0;s=Pi(d|0,k[s+4>>2]|0,t|0,((t|0)<0)<<31>>31|0)|0;nh((k[k[B>>2]>>2]|0)+s|0,E|0,d|0)|0;k[(k[I>>2]|0)+(c<<2)>>2]=t;d=t+1|0}c=c+1|0;e=k[H>>2]|0;if((c|0)>=(e|0)){p=d;break a}t=d;p=k[x>>2]|0}}else p=0;while(0);if((p|0)!=(e|0)){j=a+84|0;if(!(i[j>>0]|0)){e=k[a+68>>2]|0;c=(k[a+72>>2]|0)-e|0;if((c|0)>0){f=k[I>>2]|0;d=c>>2;c=0;do{a=e+(c<<2)|0;k[a>>2]=k[f+(k[a>>2]<<2)>>2];c=c+1|0}while((c|0)<(d|0))}}else{i[j>>0]=0;c=a+68|0;d=a+72|0;h=k[d>>2]|0;g=k[c>>2]|0;f=h-g>>2;if(e>>>0<=f>>>0){if(e>>>0>>0?(G=g+(e<<2)|0,(h|0)!=(G|0)):0)k[d>>2]=h+(~((h+-4-G|0)>>>2)<<2)}else{Bf(c,e-f|0,2968);e=k[H>>2]|0}if((e|0)>0){f=k[I>>2]|0;if(i[j>>0]|0)Ka(6242,6261,80,6293);d=k[a+68>>2]|0;c=0;do{k[d+(c<<2)>>2]=k[f+(c<<2)>>2];c=c+1|0}while((c|0)<(e|0))}}k[H>>2]=p}e=k[I>>2]|0;f=e;if(e|0){c=I+4|0;d=k[c>>2]|0;if((d|0)!=(e|0))k[c>>2]=d+(~((d+-4-f|0)>>>2)<<2);gl(e)}c=k[J+8>>2]|0;if(c|0)do{I=c;c=k[c>>2]|0;gl(I)}while((c|0)!=0);c=k[J>>2]|0;k[J>>2]=0;if(!c){r=K;return p|0}gl(c);r=K;return p|0}function Mb(a,b,c,d,e,f){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;f=f|0;var g=0,h=0,i=0,j=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,B=0,C=0,D=0,E=0,F=0,G=0,H=0,I=0,J=0;B=a+8|0;k[B>>2]=e;h=a+32|0;i=a+36|0;g=k[i>>2]|0;f=k[h>>2]|0;d=g-f>>2;if(d>>>0>=e>>>0){if(d>>>0>e>>>0?(j=f+(e<<2)|0,(g|0)!=(j|0)):0)k[i>>2]=g+(~((g+-4-j|0)>>>2)<<2)}else eg(h,e-d|0);y=e>>>0>1073741823?-1:e<<2;z=dl(y)|0;Ah(z|0,0,y|0)|0;A=dl(y)|0;Ah(A|0,0,y|0)|0;if((k[B>>2]|0)>0){l=a+16|0;j=a+32|0;m=a+12|0;i=0;do{h=k[z+(i<<2)>>2]|0;d=k[l>>2]|0;do if((h|0)<=(d|0)){d=k[m>>2]|0;f=k[j>>2]|0;g=f+(i<<2)|0;if((h|0)<(d|0)){k[g>>2]=d;g=f;break}else{k[g>>2]=h;g=f;break}}else{g=k[j>>2]|0;k[g+(i<<2)>>2]=d}while(0);i=i+1|0;d=k[B>>2]|0}while((i|0)<(d|0));if((d|0)>0){d=0;do{k[c+(d<<2)>>2]=(k[b+(d<<2)>>2]|0)+(k[g+(d<<2)>>2]|0);d=d+1|0;f=k[B>>2]|0}while((d|0)<(f|0));if((f|0)>0){f=a+20|0;d=0;do{g=c+(d<<2)|0;h=k[g>>2]|0;if((h|0)<=(k[l>>2]|0)){if((h|0)<(k[m>>2]|0))k[g>>2]=(k[f>>2]|0)+h}else k[g>>2]=h-(k[f>>2]|0);d=d+1|0}while((d|0)<(k[B>>2]|0))}}}r=k[a+48>>2]|0;s=a+56|0;g=k[s>>2]|0;f=k[g+4>>2]|0;h=k[g>>2]|0;y=f-h|0;t=y>>2;if((y|0)<=4){el(A);el(z);return 1}u=k[a+52>>2]|0;v=(e|0)>0;w=a+16|0;x=a+32|0;y=a+12|0;n=a+20|0;o=r+64|0;p=r+28|0;q=e<<2;d=1;while(1){if(f-h>>2>>>0<=d>>>0){J=28;break}a=k[h+(d<<2)>>2]|0;if(v)Ah(z|0,0,q|0)|0;if((a|0)>-1){m=k[r>>2]|0;j=0;l=a;do{if(((k[m+(l>>>5<<2)>>2]&1<<(l&31)|0)==0?(C=k[(k[(k[o>>2]|0)+12>>2]|0)+(l<<2)>>2]|0,(C|0)>=0):0)?(F=k[p>>2]|0,i=k[u>>2]|0,D=k[i+(k[F+(C<<2)>>2]<<2)>>2]|0,E=C+1|0,E=k[i+(k[F+((((E|0)%3|0|0)==0?C+-2|0:E)<<2)>>2]<<2)>>2]|0,F=k[i+(k[F+((((C>>>0)%3|0|0)==0?2:-1)+C<<2)>>2]<<2)>>2]|0,(D|0)<(d|0)&(E|0)<(d|0)&(F|0)<(d|0)):0){g=$(D,e)|0;h=$(E,e)|0;i=$(F,e)|0;if(v){f=0;do{k[A+(f<<2)>>2]=(k[c+(f+i<<2)>>2]|0)+(k[c+(f+h<<2)>>2]|0)-(k[c+(f+g<<2)>>2]|0);f=f+1|0}while((f|0)!=(e|0));if(v){f=0;do{i=z+(f<<2)|0;k[i>>2]=(k[i>>2]|0)+(k[A+(f<<2)>>2]|0);f=f+1|0}while((f|0)!=(e|0))}}j=j+1|0}f=(((l>>>0)%3|0|0)==0?2:-1)+l|0;do if(!(k[m+(f>>>5<<2)>>2]&1<<(f&31))){if((f|0)>=0){f=k[(k[(k[o>>2]|0)+12>>2]|0)+(f<<2)>>2]|0;if((f|0)>=0)if(!((f>>>0)%3|0)){f=f+2|0;break}else{f=f+-1|0;break}}}else f=-1073741824;while(0);l=(f|0)==(a|0)?-1073741824:f}while((l|0)>-1);l=$(d,e)|0;if(j){if(v){f=0;do{a=z+(f<<2)|0;k[a>>2]=(k[a>>2]|0)/(j|0)|0;f=f+1|0}while((f|0)!=(e|0))}m=c+(l<<2)|0;if((k[B>>2]|0)>0){j=0;do{i=k[z+(j<<2)>>2]|0;f=k[w>>2]|0;do if((i|0)<=(f|0)){f=k[y>>2]|0;g=k[x>>2]|0;h=g+(j<<2)|0;if((i|0)<(f|0)){k[h>>2]=f;h=g;break}else{k[h>>2]=i;h=g;break}}else{h=k[x>>2]|0;k[h+(j<<2)>>2]=f}while(0);j=j+1|0;f=k[B>>2]|0}while((j|0)<(f|0));if((f|0)>0){f=0;do{k[m+(f<<2)>>2]=(k[b+(f+l<<2)>>2]|0)+(k[h+(f<<2)>>2]|0);f=f+1|0;g=k[B>>2]|0}while((f|0)<(g|0));if((g|0)>0){f=0;do{g=m+(f<<2)|0;h=k[g>>2]|0;if((h|0)<=(k[w>>2]|0)){if((h|0)<(k[y>>2]|0))k[g>>2]=(k[n>>2]|0)+h}else k[g>>2]=h-(k[n>>2]|0);f=f+1|0}while((f|0)<(k[B>>2]|0))}}}}else{I=l;J=50}}else{I=$(d,e)|0;J=50}if((J|0)==50?(J=0,G=c+(($(d+-1|0,e)|0)<<2)|0,H=c+(I<<2)|0,(k[B>>2]|0)>0):0){j=0;do{i=k[G+(j<<2)>>2]|0;f=k[w>>2]|0;do if((i|0)<=(f|0)){f=k[y>>2]|0;g=k[x>>2]|0;h=g+(j<<2)|0;if((i|0)<(f|0)){k[h>>2]=f;h=g;break}else{k[h>>2]=i;h=g;break}}else{h=k[x>>2]|0;k[h+(j<<2)>>2]=f}while(0);j=j+1|0;f=k[B>>2]|0}while((j|0)<(f|0));if((f|0)>0){f=0;do{k[H+(f<<2)>>2]=(k[b+(f+I<<2)>>2]|0)+(k[h+(f<<2)>>2]|0);f=f+1|0;g=k[B>>2]|0}while((f|0)<(g|0));if((g|0)>0){f=0;do{g=H+(f<<2)|0;h=k[g>>2]|0;if((h|0)<=(k[w>>2]|0)){if((h|0)<(k[y>>2]|0))k[g>>2]=(k[n>>2]|0)+h}else k[g>>2]=h-(k[n>>2]|0);f=f+1|0}while((f|0)<(k[B>>2]|0))}}}d=d+1|0;if((d|0)>=(t|0)){J=25;break}f=k[s>>2]|0;g=f;h=k[f>>2]|0;f=k[f+4>>2]|0}if((J|0)==25){el(A);el(z);return 1}else if((J|0)==28)lk(g);return 0}function Nb(a,b,c){a=a|0;b=b|0;c=c|0;var d=0,e=0,f=0,g=0,h=0,m=0,n=Pa,p=Pa,q=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,B=0,C=0,D=0,E=0,F=0,G=0,H=0,I=0,J=0,K=0,L=0,N=0,O=Pa;N=r;r=r+48|0;L=N+16|0;G=N+12|0;K=N;H=L+16|0;k[L>>2]=0;k[L+4>>2]=0;k[L+8>>2]=0;k[L+12>>2]=0;o[H>>2]=da(1.0);J=a+80|0;Ih(K,k[J>>2]|0);e=k[J>>2]|0;a:do if((e|0)>0){x=b+48|0;y=b+40|0;z=L+4|0;A=L+12|0;B=L+8|0;C=a+40|0;D=a+64|0;w=k[c>>2]|0;c=0;v=0;s=0;while(1){m=w+c|0;q=x;h=k[q>>2]|0;q=k[q+4>>2]|0;u=y;u=Pi(m|0,((m|0)<0)<<31>>31|0,k[u>>2]|0,k[u+4>>2]|0)|0;q=Bj(u|0,M|0,h|0,q|0)|0;q=(k[k[b>>2]>>2]|0)+q|0;q=l[q>>0]|l[q+1>>0]<<8|l[q+2>>0]<<16|l[q+3>>0]<<24;k[G>>2]=q;h=q&65535;u=q>>>16;m=u&65535;u=(q&65535^318)+239^u;t=(s|0)==0;b:do if(!t){f=s+-1|0;d=(f&s|0)==0;if(d)g=u&f;else g=(u>>>0)%(s>>>0)|0;e=k[(k[L>>2]|0)+(g<<2)>>2]|0;do if(e|0?(E=k[e>>2]|0,E|0):0){c:do if(d){d=E;while(1){if((k[d+4>>2]&f|0)!=(g|0)){e=20;break c}if((j[d+8>>1]|0)==h<<16>>16?(j[d+10>>1]|0)==m<<16>>16:0){e=19;break c}d=k[d>>2]|0;if(!d){e=20;break}}}else{d=E;while(1){if((((k[d+4>>2]|0)>>>0)%(s>>>0)|0|0)!=(g|0)){e=20;break c}if((j[d+8>>1]|0)==h<<16>>16?(j[d+10>>1]|0)==m<<16>>16:0){e=19;break c}d=k[d>>2]|0;if(!d){e=20;break}}}while(0);if((e|0)==19){e=0;k[(k[K>>2]|0)+(c<<2)>>2]=k[d+12>>2];d=v;break b}else if((e|0)==20)if(t){d=0;e=35;break b}else break}while(0);g=s+-1|0;e=(g&s|0)==0;if(e)d=g&u;else d=(u>>>0)%(s>>>0)|0;f=k[(k[L>>2]|0)+(d<<2)>>2]|0;if((f|0)!=0?(F=k[f>>2]|0,(F|0)!=0):0)if(e){e=F;while(1){if((k[e+4>>2]&g|0)!=(d|0)){e=35;break b}if((j[e+8>>1]|0)==h<<16>>16?(j[e+10>>1]|0)==m<<16>>16:0){e=47;break b}e=k[e>>2]|0;if(!e){e=35;break}}}else{e=F;while(1){if((((k[e+4>>2]|0)>>>0)%(s>>>0)|0|0)!=(d|0)){e=35;break b}if((j[e+8>>1]|0)==h<<16>>16?(j[e+10>>1]|0)==m<<16>>16:0){e=47;break b}e=k[e>>2]|0;if(!e){e=35;break}}}else e=35}else{d=0;e=35}while(0);if((e|0)==35){g=Si(16)|0;m=g+8|0;j[m>>1]=q;j[m+2>>1]=q>>>16;k[g+12>>2]=v;k[g+4>>2]=u;k[g>>2]=0;n=da(((k[A>>2]|0)+1|0)>>>0);O=da(s>>>0);p=da(o[H>>2]);do if(t|n>da(O*p)){d=(s>>>0>2&(s+-1&s|0)==0&1|s<<1)^1;e=~~da(_(da(n/p)))>>>0;If(L,d>>>0>>0?e:d);d=k[z>>2]|0;e=d+-1|0;if(!(e&d)){f=d;d=e&u;break}else{f=d;d=(u>>>0)%(d>>>0)|0;break}}else f=s;while(0);d=(k[L>>2]|0)+(d<<2)|0;e=k[d>>2]|0;if(!e){k[g>>2]=k[B>>2];k[B>>2]=g;k[d>>2]=B;d=k[g>>2]|0;if(d|0){d=k[d+4>>2]|0;e=f+-1|0;if(!(e&f))d=d&e;else d=(d>>>0)%(f>>>0)|0;k[(k[L>>2]|0)+(d<<2)>>2]=g}}else{k[g>>2]=k[e>>2];k[e>>2]=g}k[A>>2]=(k[A>>2]|0)+1;e=47}if((e|0)==47){u=C;d=k[u>>2]|0;u=Pi(d|0,k[u+4>>2]|0,v|0,((v|0)<0)<<31>>31|0)|0;nh((k[k[D>>2]>>2]|0)+u|0,G|0,d|0)|0;k[(k[K>>2]|0)+(c<<2)>>2]=v;d=v+1|0}c=c+1|0;e=k[J>>2]|0;if((c|0)>=(e|0)){q=d;break a}v=d;s=k[z>>2]|0}}else q=0;while(0);if((q|0)!=(e|0)){m=a+84|0;if(!(i[m>>0]|0)){e=k[a+68>>2]|0;c=(k[a+72>>2]|0)-e|0;if((c|0)>0){f=k[K>>2]|0;d=c>>2;c=0;do{a=e+(c<<2)|0;k[a>>2]=k[f+(k[a>>2]<<2)>>2];c=c+1|0}while((c|0)<(d|0))}}else{i[m>>0]=0;c=a+68|0;d=a+72|0;h=k[d>>2]|0;g=k[c>>2]|0;f=h-g>>2;if(e>>>0<=f>>>0){if(e>>>0>>0?(I=g+(e<<2)|0,(h|0)!=(I|0)):0)k[d>>2]=h+(~((h+-4-I|0)>>>2)<<2)}else{Bf(c,e-f|0,2968);e=k[J>>2]|0}if((e|0)>0){f=k[K>>2]|0;if(i[m>>0]|0)Ka(6242,6261,80,6293);d=k[a+68>>2]|0;c=0;do{k[d+(c<<2)>>2]=k[f+(c<<2)>>2];c=c+1|0}while((c|0)<(e|0))}}k[J>>2]=q}e=k[K>>2]|0;f=e;if(e|0){c=K+4|0;d=k[c>>2]|0;if((d|0)!=(e|0))k[c>>2]=d+(~((d+-4-f|0)>>>2)<<2);gl(e)}c=k[L+8>>2]|0;if(c|0)do{K=c;c=k[c>>2]|0;gl(K)}while((c|0)!=0);c=k[L>>2]|0;k[L>>2]=0;if(!c){r=N;return q|0}gl(c);r=N;return q|0}function Ob(a,b,c){a=a|0;b=b|0;c=c|0;var d=0,e=0,f=0,g=0,h=0,m=0,n=Pa,p=Pa,q=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,B=0,C=0,D=0,E=0,F=0,G=0,H=0,I=0,J=0,K=0,L=0,N=0,O=Pa;N=r;r=r+48|0;L=N+12|0;G=N+32|0;K=N;H=L+16|0;k[L>>2]=0;k[L+4>>2]=0;k[L+8>>2]=0;k[L+12>>2]=0;o[H>>2]=da(1.0);J=a+80|0;Ih(K,k[J>>2]|0);e=k[J>>2]|0;a:do if((e|0)>0){x=b+48|0;y=b+40|0;z=L+4|0;A=L+12|0;B=L+8|0;C=a+40|0;D=a+64|0;w=k[c>>2]|0;c=0;v=0;s=0;while(1){m=w+c|0;q=x;h=k[q>>2]|0;q=k[q+4>>2]|0;u=y;u=Pi(m|0,((m|0)<0)<<31>>31|0,k[u>>2]|0,k[u+4>>2]|0)|0;q=Bj(u|0,M|0,h|0,q|0)|0;q=(k[k[b>>2]>>2]|0)+q|0;q=l[q>>0]|l[q+1>>0]<<8;j[G>>1]=q;h=q&255;u=(q&65535)>>>8;m=u&255;u=(q&255^318)+239^u&65535;t=(s|0)==0;b:do if(!t){f=s+-1|0;d=(f&s|0)==0;if(d)g=u&f;else g=(u>>>0)%(s>>>0)|0;e=k[(k[L>>2]|0)+(g<<2)>>2]|0;do if(e|0?(E=k[e>>2]|0,E|0):0){c:do if(d){d=E;while(1){if((k[d+4>>2]&f|0)!=(g|0)){e=20;break c}if((i[d+8>>0]|0)==h<<24>>24?(i[d+9>>0]|0)==m<<24>>24:0){e=19;break c}d=k[d>>2]|0;if(!d){e=20;break}}}else{d=E;while(1){if((((k[d+4>>2]|0)>>>0)%(s>>>0)|0|0)!=(g|0)){e=20;break c}if((i[d+8>>0]|0)==h<<24>>24?(i[d+9>>0]|0)==m<<24>>24:0){e=19;break c}d=k[d>>2]|0;if(!d){e=20;break}}}while(0);if((e|0)==19){e=0;k[(k[K>>2]|0)+(c<<2)>>2]=k[d+12>>2];d=v;break b}else if((e|0)==20)if(t){d=0;e=35;break b}else break}while(0);g=s+-1|0;e=(g&s|0)==0;if(e)d=g&u;else d=(u>>>0)%(s>>>0)|0;f=k[(k[L>>2]|0)+(d<<2)>>2]|0;if((f|0)!=0?(F=k[f>>2]|0,(F|0)!=0):0)if(e){e=F;while(1){if((k[e+4>>2]&g|0)!=(d|0)){e=35;break b}if((i[e+8>>0]|0)==h<<24>>24?(i[e+9>>0]|0)==m<<24>>24:0){e=47;break b}e=k[e>>2]|0;if(!e){e=35;break}}}else{e=F;while(1){if((((k[e+4>>2]|0)>>>0)%(s>>>0)|0|0)!=(d|0)){e=35;break b}if((i[e+8>>0]|0)==h<<24>>24?(i[e+9>>0]|0)==m<<24>>24:0){e=47;break b}e=k[e>>2]|0;if(!e){e=35;break}}}else e=35}else{d=0;e=35}while(0);if((e|0)==35){g=Si(16)|0;m=g+8|0;i[m>>0]=q;i[m+1>>0]=q>>8;k[g+12>>2]=v;k[g+4>>2]=u;k[g>>2]=0;n=da(((k[A>>2]|0)+1|0)>>>0);O=da(s>>>0);p=da(o[H>>2]);do if(t|n>da(O*p)){d=(s>>>0>2&(s+-1&s|0)==0&1|s<<1)^1;e=~~da(_(da(n/p)))>>>0;Qf(L,d>>>0>>0?e:d);d=k[z>>2]|0;e=d+-1|0;if(!(e&d)){f=d;d=e&u;break}else{f=d;d=(u>>>0)%(d>>>0)|0;break}}else f=s;while(0);d=(k[L>>2]|0)+(d<<2)|0;e=k[d>>2]|0;if(!e){k[g>>2]=k[B>>2];k[B>>2]=g;k[d>>2]=B;d=k[g>>2]|0;if(d|0){d=k[d+4>>2]|0;e=f+-1|0;if(!(e&f))d=d&e;else d=(d>>>0)%(f>>>0)|0;k[(k[L>>2]|0)+(d<<2)>>2]=g}}else{k[g>>2]=k[e>>2];k[e>>2]=g}k[A>>2]=(k[A>>2]|0)+1;e=47}if((e|0)==47){u=C;d=k[u>>2]|0;u=Pi(d|0,k[u+4>>2]|0,v|0,((v|0)<0)<<31>>31|0)|0;nh((k[k[D>>2]>>2]|0)+u|0,G|0,d|0)|0;k[(k[K>>2]|0)+(c<<2)>>2]=v;d=v+1|0}c=c+1|0;e=k[J>>2]|0;if((c|0)>=(e|0)){q=d;break a}v=d;s=k[z>>2]|0}}else q=0;while(0);if((q|0)!=(e|0)){m=a+84|0;if(!(i[m>>0]|0)){e=k[a+68>>2]|0;c=(k[a+72>>2]|0)-e|0;if((c|0)>0){f=k[K>>2]|0;d=c>>2;c=0;do{a=e+(c<<2)|0;k[a>>2]=k[f+(k[a>>2]<<2)>>2];c=c+1|0}while((c|0)<(d|0))}}else{i[m>>0]=0;c=a+68|0;d=a+72|0;h=k[d>>2]|0;g=k[c>>2]|0;f=h-g>>2;if(e>>>0<=f>>>0){if(e>>>0>>0?(I=g+(e<<2)|0,(h|0)!=(I|0)):0)k[d>>2]=h+(~((h+-4-I|0)>>>2)<<2)}else{Bf(c,e-f|0,2968);e=k[J>>2]|0}if((e|0)>0){f=k[K>>2]|0;if(i[m>>0]|0)Ka(6242,6261,80,6293);d=k[a+68>>2]|0;c=0;do{k[d+(c<<2)>>2]=k[f+(c<<2)>>2];c=c+1|0}while((c|0)<(e|0))}}k[J>>2]=q}e=k[K>>2]|0;f=e;if(e|0){c=K+4|0;d=k[c>>2]|0;if((d|0)!=(e|0))k[c>>2]=d+(~((d+-4-f|0)>>>2)<<2);gl(e)}c=k[L+8>>2]|0;if(c|0)do{K=c;c=k[c>>2]|0;gl(K)}while((c|0)!=0);c=k[L>>2]|0;k[L>>2]=0;if(!c){r=N;return q|0}gl(c);r=N;return q|0}function Pb(a,b,c){a=a|0;b=b|0;c=c|0;var d=0,e=0,f=0,g=0,h=0,j=0;j=r;r=r+32|0;d=j+16|0;e=j+12|0;f=j+8|0;g=j+4|0;h=j;switch(k[b+28>>2]|0){case 9:{c=k[c>>2]|0;switch(i[b+24>>0]|0){case 1:{k[e>>2]=c;k[d>>2]=k[e>>2];c=Tb(a,b,d)|0;break}case 2:{k[f>>2]=c;k[d>>2]=k[f>>2];c=Lb(a,b,d)|0;break}case 3:{k[g>>2]=c;k[d>>2]=k[g>>2];c=Ib(a,b,d)|0;break}case 4:{k[h>>2]=c;k[d>>2]=k[h>>2];c=Vb(a,b,d)|0;break}default:c=0}break}case 1:{c=k[c>>2]|0;switch(i[b+24>>0]|0){case 1:{k[e>>2]=c;k[d>>2]=k[e>>2];c=Wb(a,b,d)|0;break}case 2:{k[f>>2]=c;k[d>>2]=k[f>>2];c=Ob(a,b,d)|0;break}case 3:{k[g>>2]=c;k[d>>2]=k[g>>2];c=Hb(a,b,d)|0;break}case 4:{k[h>>2]=c;k[d>>2]=k[h>>2];c=Sb(a,b,d)|0;break}default:c=0}break}case 11:case 2:{c=k[c>>2]|0;switch(i[b+24>>0]|0){case 1:{k[e>>2]=c;k[d>>2]=k[e>>2];c=Wb(a,b,d)|0;break}case 2:{k[f>>2]=c;k[d>>2]=k[f>>2];c=Ob(a,b,d)|0;break}case 3:{k[g>>2]=c;k[d>>2]=k[g>>2];c=Hb(a,b,d)|0;break}case 4:{k[h>>2]=c;k[d>>2]=k[h>>2];c=Sb(a,b,d)|0;break}default:c=0}break}case 4:{c=k[c>>2]|0;switch(i[b+24>>0]|0){case 1:{k[e>>2]=c;k[d>>2]=k[e>>2];c=Ub(a,b,d)|0;break}case 2:{k[f>>2]=c;k[d>>2]=k[f>>2];c=Nb(a,b,d)|0;break}case 3:{k[g>>2]=c;k[d>>2]=k[g>>2];c=Gb(a,b,d)|0;break}case 4:{k[h>>2]=c;k[d>>2]=k[h>>2];c=Rb(a,b,d)|0;break}default:c=0}break}case 3:{c=k[c>>2]|0;switch(i[b+24>>0]|0){case 1:{k[e>>2]=c;k[d>>2]=k[e>>2];c=Ub(a,b,d)|0;break}case 2:{k[f>>2]=c;k[d>>2]=k[f>>2];c=Nb(a,b,d)|0;break}case 3:{k[g>>2]=c;k[d>>2]=k[g>>2];c=Gb(a,b,d)|0;break}case 4:{k[h>>2]=c;k[d>>2]=k[h>>2];c=Rb(a,b,d)|0;break}default:c=0}break}case 6:{c=k[c>>2]|0;switch(i[b+24>>0]|0){case 1:{k[e>>2]=c;k[d>>2]=k[e>>2];c=Tb(a,b,d)|0;break}case 2:{k[f>>2]=c;k[d>>2]=k[f>>2];c=Lb(a,b,d)|0;break}case 3:{k[g>>2]=c;k[d>>2]=k[g>>2];c=Ib(a,b,d)|0;break}case 4:{k[h>>2]=c;k[d>>2]=k[h>>2];c=Vb(a,b,d)|0;break}default:c=0}break}case 5:{c=k[c>>2]|0;switch(i[b+24>>0]|0){case 1:{k[e>>2]=c;k[d>>2]=k[e>>2];c=Tb(a,b,d)|0;break}case 2:{k[f>>2]=c;k[d>>2]=k[f>>2];c=Lb(a,b,d)|0;break}case 3:{k[g>>2]=c;k[d>>2]=k[g>>2];c=Ib(a,b,d)|0;break}case 4:{k[h>>2]=c;k[d>>2]=k[h>>2];c=Vb(a,b,d)|0;break}default:c=0}break}default:{h=-1;r=j;return h|0}}h=(c|0)==0?-1:c;r=j;return h|0}function Qb(a,b,c,d,e,f){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;f=f|0;var g=0,h=0,i=0,j=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,B=0,C=0,D=0,E=0,F=0,G=0,H=0,I=0,J=0;J=a+8|0;k[J>>2]=e;do if(d|0){f=k[b>>2]|0;l=a+16|0;k[l>>2]=f;j=a+12|0;k[j>>2]=f;if((d|0)>1){i=1;h=f;while(1){g=k[b+(i<<2)>>2]|0;if((g|0)>=(h|0))if((g|0)>(f|0)){k[l>>2]=g;f=g;g=h}else g=h;else k[j>>2]=g;i=i+1|0;if((i|0)==(d|0))break;else h=g}}else g=f;A=1-g+f|0;k[a+20>>2]=A;f=(A|0)/2|0;g=a+24|0;k[g>>2]=f;k[a+28>>2]=0-f;if(!(A&1))k[g>>2]=f+-1;f=a+32|0;g=a+36|0;j=k[g>>2]|0;h=k[f>>2]|0;i=j-h>>2;if(i>>>0>>0){eg(f,e-i|0);break}if(i>>>0>e>>>0?(m=h+(e<<2)|0,(j|0)!=(m|0)):0)k[g>>2]=j+(~((j+-4-m|0)>>>2)<<2)}while(0);o=e>>>0>1073741823?-1:e<<2;A=dl(o)|0;Ah(A|0,0,o|0)|0;o=k[a+48>>2]|0;p=a+56|0;i=k[p>>2]|0;h=k[i+4>>2]|0;g=k[i>>2]|0;f=h-g|0;a:do if((f|0)>4){q=k[a+52>>2]|0;r=a+16|0;s=a+32|0;t=a+12|0;u=a+28|0;v=a+20|0;w=a+24|0;x=o+64|0;y=o+28|0;z=(e|0)>0;d=f>>2;f=i;while(1){n=d+-1|0;if(h-g>>2>>>0<=n>>>0)break;f=k[g+(n<<2)>>2]|0;m=$(n,e)|0;if((!((f|0)<0?1:(1<<(f&31)&k[(k[o>>2]|0)+(f>>>5<<2)>>2]|0)!=0)?(B=k[(k[(k[x>>2]|0)+12>>2]|0)+(f<<2)>>2]|0,(B|0)>=0):0)?(D=k[y>>2]|0,l=k[q>>2]|0,G=k[l+(k[D+(B<<2)>>2]<<2)>>2]|0,C=B+1|0,C=k[l+(k[D+((((C|0)%3|0|0)==0?B+-2|0:C)<<2)>>2]<<2)>>2]|0,D=k[l+(k[D+((((B>>>0)%3|0|0)==0?2:-1)+B<<2)>>2]<<2)>>2]|0,(G|0)<(n|0)&(C|0)<(n|0)&(D|0)<(n|0)):0){g=$(G,e)|0;h=$(C,e)|0;i=$(D,e)|0;if(z){f=0;do{k[A+(f<<2)>>2]=(k[b+(f+i<<2)>>2]|0)+(k[b+(f+h<<2)>>2]|0)-(k[b+(f+g<<2)>>2]|0);f=f+1|0}while((f|0)!=(e|0))}l=b+(m<<2)|0;if((k[J>>2]|0)>0){j=0;do{i=k[A+(j<<2)>>2]|0;f=k[r>>2]|0;do if((i|0)<=(f|0)){f=k[t>>2]|0;g=k[s>>2]|0;h=g+(j<<2)|0;if((i|0)<(f|0)){k[h>>2]=f;h=g;break}else{k[h>>2]=i;h=g;break}}else{h=k[s>>2]|0;k[h+(j<<2)>>2]=f}while(0);j=j+1|0;f=k[J>>2]|0}while((j|0)<(f|0));if((f|0)>0){f=0;do{k[c+(f+m<<2)>>2]=(k[l+(f<<2)>>2]|0)-(k[h+(f<<2)>>2]|0);f=f+1|0;g=k[J>>2]|0}while((f|0)<(g|0));if((g|0)>0){f=0;do{g=c+(f+m<<2)|0;h=k[g>>2]|0;if((h|0)>=(k[u>>2]|0)){if((h|0)>(k[w>>2]|0))k[g>>2]=h-(k[v>>2]|0)}else k[g>>2]=(k[v>>2]|0)+h;f=f+1|0}while((f|0)<(k[J>>2]|0))}}}}else H=27;if((H|0)==27?(H=0,E=b+(m<<2)|0,F=b+(($(d+-2|0,e)|0)<<2)|0,(k[J>>2]|0)>0):0){j=0;do{i=k[F+(j<<2)>>2]|0;f=k[r>>2]|0;do if((i|0)<=(f|0)){f=k[t>>2]|0;g=k[s>>2]|0;h=g+(j<<2)|0;if((i|0)<(f|0)){k[h>>2]=f;h=g;break}else{k[h>>2]=i;h=g;break}}else{h=k[s>>2]|0;k[h+(j<<2)>>2]=f}while(0);j=j+1|0;f=k[J>>2]|0}while((j|0)<(f|0));if((f|0)>0){f=0;do{k[c+(f+m<<2)>>2]=(k[E+(f<<2)>>2]|0)-(k[h+(f<<2)>>2]|0);f=f+1|0;g=k[J>>2]|0}while((f|0)<(g|0));if((g|0)>0){f=0;do{g=c+(f+m<<2)|0;h=k[g>>2]|0;if((h|0)>=(k[u>>2]|0)){if((h|0)>(k[w>>2]|0))k[g>>2]=h-(k[v>>2]|0)}else k[g>>2]=(k[v>>2]|0)+h;f=f+1|0}while((f|0)<(k[J>>2]|0))}}}if((n|0)<=1){I=A;break a}f=k[p>>2]|0;d=n;g=k[f>>2]|0;h=k[f+4>>2]|0}lk(f)}else I=A;while(0);if((e|0)>0)Ah(A|0,0,e<<2|0)|0;if((k[J>>2]|0)<=0){el(A);return 1}l=a+16|0;d=a+32|0;m=a+12|0;j=0;do{i=k[I+(j<<2)>>2]|0;f=k[l>>2]|0;do if((i|0)<=(f|0)){f=k[m>>2]|0;g=k[d>>2]|0;h=g+(j<<2)|0;if((i|0)<(f|0)){k[h>>2]=f;h=g;break}else{k[h>>2]=i;h=g;break}}else{h=k[d>>2]|0;k[h+(j<<2)>>2]=f}while(0);j=j+1|0;f=k[J>>2]|0}while((j|0)<(f|0));if((f|0)>0)f=0;else{el(A);return 1}do{k[c+(f<<2)>>2]=(k[b+(f<<2)>>2]|0)-(k[h+(f<<2)>>2]|0);f=f+1|0;g=k[J>>2]|0}while((f|0)<(g|0));if((g|0)<=0){el(A);return 1}j=a+28|0;l=a+20|0;g=a+24|0;f=0;do{h=c+(f<<2)|0;i=k[h>>2]|0;if((i|0)>=(k[j>>2]|0)){if((i|0)>(k[g>>2]|0))k[h>>2]=i-(k[l>>2]|0)}else k[h>>2]=(k[l>>2]|0)+i;f=f+1|0}while((f|0)<(k[J>>2]|0));el(A);return 1}function Rb(a,b,c){a=a|0;b=b|0;c=c|0;var d=0,e=0,f=0,g=0,h=0,m=0,n=Pa,p=Pa,q=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,B=0,C=0,D=0,E=0,F=0,G=0,H=0,I=0,J=0,K=0,L=0,N=0,O=0,P=0,Q=0,R=0,S=0,T=0,U=Pa;T=r;r=r+48|0;S=T+28|0;K=T+8|0;L=T;R=T+16|0;N=S+16|0;k[S>>2]=0;k[S+4>>2]=0;k[S+8>>2]=0;k[S+12>>2]=0;o[N>>2]=da(1.0);Q=a+80|0;Ih(R,k[Q>>2]|0);e=k[Q>>2]|0;if((e|0)>0){B=k[c>>2]|0;C=b+48|0;D=b+40|0;E=S+4|0;F=S+12|0;G=S+8|0;H=a+40|0;I=a+64|0;A=0;z=0;while(1){w=B+A|0;y=C;x=k[y>>2]|0;y=k[y+4>>2]|0;c=D;c=Pi(w|0,((w|0)<0)<<31>>31|0,k[c>>2]|0,k[c+4>>2]|0)|0;y=Bj(c|0,M|0,x|0,y|0)|0;y=(k[k[b>>2]>>2]|0)+y|0;x=y;x=l[x>>0]|l[x+1>>0]<<8|l[x+2>>0]<<16|l[x+3>>0]<<24;y=y+4|0;y=l[y>>0]|l[y+1>>0]<<8|l[y+2>>0]<<16|l[y+3>>0]<<24;c=K;k[c>>2]=x;k[c+4>>2]=y;c=L;k[c>>2]=x;k[c+4>>2]=y;c=Ke(S,L)|0;if(!c){u=L;t=k[u>>2]|0;u=k[u+4>>2]|0;h=t&65535;y=lj(t|0,u|0,16)|0;m=y&65535;q=u&65535;v=lj(t|0,u|0,48)|0;w=M;s=v&65535;y=(((t&65535^318)+239^y&65535)+239^u&65535)+239^v;e=k[E>>2]|0;x=(e|0)==0;a:do if(!x){g=e+-1|0;d=(g&e|0)==0;if(d)c=y&g;else c=(y>>>0)%(e>>>0)|0;f=k[(k[S>>2]|0)+(c<<2)>>2]|0;if((f|0)!=0?(J=k[f>>2]|0,(J|0)!=0):0)if(d){d=J;while(1){if((k[d+4>>2]&g|0)!=(c|0)){O=25;break a}if((((j[d+8>>1]|0)==h<<16>>16?(j[d+10>>1]|0)==m<<16>>16:0)?(j[d+12>>1]|0)==q<<16>>16:0)?(j[d+14>>1]|0)==s<<16>>16:0)break a;d=k[d>>2]|0;if(!d){O=25;break}}}else{d=J;while(1){if((((k[d+4>>2]|0)>>>0)%(e>>>0)|0|0)!=(c|0)){O=25;break a}if((((j[d+8>>1]|0)==h<<16>>16?(j[d+10>>1]|0)==m<<16>>16:0)?(j[d+12>>1]|0)==q<<16>>16:0)?(j[d+14>>1]|0)==s<<16>>16:0)break a;d=k[d>>2]|0;if(!d){O=25;break}}}else O=25}else{c=0;O=25}while(0);if((O|0)==25){O=0;f=Si(20)|0;v=ij(v|0,w|0,48)|0;t=t|v;v=u&65535|M;w=f+8|0;u=w;j[u>>1]=t;j[u+2>>1]=t>>>16;w=w+4|0;j[w>>1]=v;j[w+2>>1]=v>>>16;k[f+16>>2]=z;k[f+4>>2]=y;k[f>>2]=0;n=da(((k[F>>2]|0)+1|0)>>>0);U=da(e>>>0);p=da(o[N>>2]);do if(x|n>da(U*p)){c=(e>>>0>2&(e+-1&e|0)==0&1|e<<1)^1;d=~~da(_(da(n/p)))>>>0;Gf(S,c>>>0>>0?d:c);c=k[E>>2]|0;d=c+-1|0;if(!(d&c)){e=c;c=d&y;break}else{e=c;c=(y>>>0)%(c>>>0)|0;break}}while(0);c=(k[S>>2]|0)+(c<<2)|0;d=k[c>>2]|0;if(!d){k[f>>2]=k[G>>2];k[G>>2]=f;k[c>>2]=G;c=k[f>>2]|0;if(c|0){c=k[c+4>>2]|0;d=e+-1|0;if(!(d&e))c=c&d;else c=(c>>>0)%(e>>>0)|0;k[(k[S>>2]|0)+(c<<2)>>2]=f}}else{k[f>>2]=k[d>>2];k[d>>2]=f}k[F>>2]=(k[F>>2]|0)+1}y=H;c=k[y>>2]|0;y=Pi(c|0,k[y+4>>2]|0,z|0,((z|0)<0)<<31>>31|0)|0;nh((k[k[I>>2]>>2]|0)+y|0,K|0,c|0)|0;k[(k[R>>2]|0)+(A<<2)>>2]=z;c=z+1|0}else{k[(k[R>>2]|0)+(A<<2)>>2]=k[c+16>>2];c=z}A=A+1|0;e=k[Q>>2]|0;if((A|0)>=(e|0)){q=c;break}else z=c}}else q=0;if((q|0)!=(e|0)){m=a+84|0;if(!(i[m>>0]|0)){e=k[a+68>>2]|0;c=(k[a+72>>2]|0)-e|0;if((c|0)>0){f=k[R>>2]|0;d=c>>2;c=0;do{a=e+(c<<2)|0;k[a>>2]=k[f+(k[a>>2]<<2)>>2];c=c+1|0}while((c|0)<(d|0))}}else{i[m>>0]=0;c=a+68|0;d=a+72|0;h=k[d>>2]|0;g=k[c>>2]|0;f=h-g>>2;if(e>>>0<=f>>>0){if(e>>>0>>0?(P=g+(e<<2)|0,(h|0)!=(P|0)):0)k[d>>2]=h+(~((h+-4-P|0)>>>2)<<2)}else{Bf(c,e-f|0,2968);e=k[Q>>2]|0}if((e|0)>0){f=k[R>>2]|0;if(i[m>>0]|0)Ka(6242,6261,80,6293);d=k[a+68>>2]|0;c=0;do{k[d+(c<<2)>>2]=k[f+(c<<2)>>2];c=c+1|0}while((c|0)<(e|0))}}k[Q>>2]=q}e=k[R>>2]|0;f=e;if(e|0){c=R+4|0;d=k[c>>2]|0;if((d|0)!=(e|0))k[c>>2]=d+(~((d+-4-f|0)>>>2)<<2);gl(e)}c=k[S+8>>2]|0;if(c|0)do{R=c;c=k[c>>2]|0;gl(R)}while((c|0)!=0);c=k[S>>2]|0;k[S>>2]=0;if(!c){r=T;return q|0}gl(c);r=T;return q|0}function Sb(a,b,c){a=a|0;b=b|0;c=c|0;var d=0,e=0,f=0,g=0,h=0,j=0,m=Pa,n=Pa,p=0,q=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,B=0,C=0,D=0,E=0,F=0,G=0,H=0,I=0,J=0,K=0,L=0,N=0,O=0,P=0,Q=0,R=0,S=0,T=Pa;S=r;r=r+48|0;R=S+20|0;J=S+16|0;K=S+12|0;Q=S;L=R+16|0;k[R>>2]=0;k[R+4>>2]=0;k[R+8>>2]=0;k[R+12>>2]=0;o[L>>2]=da(1.0);P=a+80|0;Ih(Q,k[P>>2]|0);e=k[P>>2]|0;if((e|0)>0){A=k[c>>2]|0;B=b+48|0;C=b+40|0;D=R+4|0;E=R+12|0;F=R+8|0;G=a+40|0;H=a+64|0;z=0;y=0;while(1){v=A+z|0;c=B;x=k[c>>2]|0;c=k[c+4>>2]|0;w=C;w=Pi(v|0,((v|0)<0)<<31>>31|0,k[w>>2]|0,k[w+4>>2]|0)|0;c=Bj(w|0,M|0,x|0,c|0)|0;c=(k[k[b>>2]>>2]|0)+c|0;c=l[c>>0]|l[c+1>>0]<<8|l[c+2>>0]<<16|l[c+3>>0]<<24;k[J>>2]=c;k[K>>2]=c;c=Me(R,K)|0;if(!c){t=k[K>>2]|0;h=t&255;u=t>>>8;j=u&255;v=t>>>16;p=v&255;s=t>>>24;q=s&255;t=t&255;u=u&255;v=v&255;x=(((t^318)+239^u)+239^v)+239^s;e=k[D>>2]|0;w=(e|0)==0;a:do if(!w){g=e+-1|0;d=(g&e|0)==0;if(d)c=x&g;else c=(x>>>0)%(e>>>0)|0;f=k[(k[R>>2]|0)+(c<<2)>>2]|0;if((f|0)!=0?(I=k[f>>2]|0,(I|0)!=0):0)if(d){d=I;while(1){if((k[d+4>>2]&g|0)!=(c|0)){N=25;break a}if((((i[d+8>>0]|0)==h<<24>>24?(i[d+9>>0]|0)==j<<24>>24:0)?(i[d+10>>0]|0)==p<<24>>24:0)?(i[d+11>>0]|0)==q<<24>>24:0)break a;d=k[d>>2]|0;if(!d){N=25;break}}}else{d=I;while(1){if((((k[d+4>>2]|0)>>>0)%(e>>>0)|0|0)!=(c|0)){N=25;break a}if((((i[d+8>>0]|0)==h<<24>>24?(i[d+9>>0]|0)==j<<24>>24:0)?(i[d+10>>0]|0)==p<<24>>24:0)?(i[d+11>>0]|0)==q<<24>>24:0)break a;d=k[d>>2]|0;if(!d){N=25;break}}}else N=25}else{c=0;N=25}while(0);if((N|0)==25){N=0;f=Si(16)|0;q=f+8|0;v=s<<24|t|v<<16|u<<8;i[q>>0]=v;i[q+1>>0]=v>>8;i[q+2>>0]=v>>16;i[q+3>>0]=v>>24;k[f+12>>2]=y;k[f+4>>2]=x;k[f>>2]=0;m=da(((k[E>>2]|0)+1|0)>>>0);T=da(e>>>0);n=da(o[L>>2]);do if(w|m>da(T*n)){c=(e>>>0>2&(e+-1&e|0)==0&1|e<<1)^1;d=~~da(_(da(m/n)))>>>0;Of(R,c>>>0>>0?d:c);c=k[D>>2]|0;d=c+-1|0;if(!(d&c)){e=c;c=d&x;break}else{e=c;c=(x>>>0)%(c>>>0)|0;break}}while(0);c=(k[R>>2]|0)+(c<<2)|0;d=k[c>>2]|0;if(!d){k[f>>2]=k[F>>2];k[F>>2]=f;k[c>>2]=F;c=k[f>>2]|0;if(c|0){c=k[c+4>>2]|0;d=e+-1|0;if(!(d&e))c=c&d;else c=(c>>>0)%(e>>>0)|0;k[(k[R>>2]|0)+(c<<2)>>2]=f}}else{k[f>>2]=k[d>>2];k[d>>2]=f}k[E>>2]=(k[E>>2]|0)+1}x=G;c=k[x>>2]|0;x=Pi(c|0,k[x+4>>2]|0,y|0,((y|0)<0)<<31>>31|0)|0;nh((k[k[H>>2]>>2]|0)+x|0,J|0,c|0)|0;k[(k[Q>>2]|0)+(z<<2)>>2]=y;c=y+1|0}else{k[(k[Q>>2]|0)+(z<<2)>>2]=k[c+12>>2];c=y}z=z+1|0;e=k[P>>2]|0;if((z|0)>=(e|0)){p=c;break}else y=c}}else p=0;if((p|0)!=(e|0)){j=a+84|0;if(!(i[j>>0]|0)){e=k[a+68>>2]|0;c=(k[a+72>>2]|0)-e|0;if((c|0)>0){f=k[Q>>2]|0;d=c>>2;c=0;do{a=e+(c<<2)|0;k[a>>2]=k[f+(k[a>>2]<<2)>>2];c=c+1|0}while((c|0)<(d|0))}}else{i[j>>0]=0;c=a+68|0;d=a+72|0;h=k[d>>2]|0;g=k[c>>2]|0;f=h-g>>2;if(e>>>0<=f>>>0){if(e>>>0>>0?(O=g+(e<<2)|0,(h|0)!=(O|0)):0)k[d>>2]=h+(~((h+-4-O|0)>>>2)<<2)}else{Bf(c,e-f|0,2968);e=k[P>>2]|0}if((e|0)>0){f=k[Q>>2]|0;if(i[j>>0]|0)Ka(6242,6261,80,6293);d=k[a+68>>2]|0;c=0;do{k[d+(c<<2)>>2]=k[f+(c<<2)>>2];c=c+1|0}while((c|0)<(e|0))}}k[P>>2]=p}e=k[Q>>2]|0;f=e;if(e|0){c=Q+4|0;d=k[c>>2]|0;if((d|0)!=(e|0))k[c>>2]=d+(~((d+-4-f|0)>>>2)<<2);gl(e)}c=k[R+8>>2]|0;if(c|0)do{Q=c;c=k[c>>2]|0;gl(Q)}while((c|0)!=0);c=k[R>>2]|0;k[R>>2]=0;if(!c){r=S;return p|0}gl(c);r=S;return p|0}function Tb(a,b,c){a=a|0;b=b|0;c=c|0;var d=0,e=0,f=0,g=0,h=0,j=0,m=Pa,n=Pa,p=0,q=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,B=0,C=0,D=0,E=0,F=0,G=0,H=0,I=0,J=Pa;I=r;r=r+48|0;H=I+16|0;C=I+12|0;G=I;D=H+16|0;k[H>>2]=0;k[H+4>>2]=0;k[H+8>>2]=0;k[H+12>>2]=0;o[D>>2]=da(1.0);F=a+80|0;Ih(G,k[F>>2]|0);e=k[F>>2]|0;a:do if((e|0)>0){v=b+48|0;w=b+40|0;x=H+4|0;y=H+12|0;z=H+8|0;A=a+40|0;B=a+64|0;u=k[c>>2]|0;h=0;t=0;s=0;while(1){f=u+t|0;j=v;q=k[j>>2]|0;j=k[j+4>>2]|0;g=w;g=Pi(f|0,((f|0)<0)<<31>>31|0,k[g>>2]|0,k[g+4>>2]|0)|0;j=Bj(g|0,M|0,q|0,j|0)|0;j=(k[k[b>>2]>>2]|0)+j|0;j=l[j>>0]|l[j+1>>0]<<8|l[j+2>>0]<<16|l[j+3>>0]<<24;k[C>>2]=j;q=j^318;b:do if(h){g=h+-1|0;f=(g&h|0)==0;if(f)d=g&q;else d=(q>>>0)%(h>>>0)|0;e=k[H>>2]|0;c=k[e+(d<<2)>>2]|0;c:do if(c|0){if(f)do{c=k[c>>2]|0;if(!c)break c;if((k[c+4>>2]&g|0)!=(d|0))break c}while((k[c+8>>2]|0)!=(j|0));else do{c=k[c>>2]|0;if(!c)break c;if((((k[c+4>>2]|0)>>>0)%(h>>>0)|0|0)!=(d|0))break c}while((k[c+8>>2]|0)!=(j|0));k[(k[G>>2]|0)+(t<<2)>>2]=k[c+12>>2];d=s;break b}while(0);if(f)c=g&q;else c=(q>>>0)%(h>>>0)|0;d=k[e+(c<<2)>>2]|0;if(d)if(f)while(1){d=k[d>>2]|0;if(!d){d=h;e=0;p=28;break b}if((k[d+4>>2]&g|0)!=(c|0)){d=h;e=0;p=28;break b}if((k[d+8>>2]|0)==(j|0)){p=40;break}}else while(1){d=k[d>>2]|0;if(!d){d=h;e=0;p=28;break b}if((((k[d+4>>2]|0)>>>0)%(h>>>0)|0|0)!=(c|0)){d=h;e=0;p=28;break b}if((k[d+8>>2]|0)==(j|0)){p=40;break}}else{d=h;e=0;p=28}}else{c=0;d=0;e=1;p=28}while(0);if((p|0)==28){f=Si(16)|0;k[f+8>>2]=j;k[f+12>>2]=s;k[f+4>>2]=q;k[f>>2]=0;m=da(((k[y>>2]|0)+1|0)>>>0);J=da(d>>>0);n=da(o[D>>2]);do if(e|m>da(J*n)){c=(d>>>0>2&(d+-1&d|0)==0&1|d<<1)^1;d=~~da(_(da(m/n)))>>>0;Nf(H,c>>>0>>0?d:c);c=k[x>>2]|0;d=c+-1|0;if(!(d&c)){e=c;c=d&q;break}else{e=c;c=(q>>>0)%(c>>>0)|0;break}}else e=d;while(0);c=(k[H>>2]|0)+(c<<2)|0;d=k[c>>2]|0;if(!d){k[f>>2]=k[z>>2];k[z>>2]=f;k[c>>2]=z;c=k[f>>2]|0;if(c|0){c=k[c+4>>2]|0;d=e+-1|0;if(!(d&e))c=c&d;else c=(c>>>0)%(e>>>0)|0;k[(k[H>>2]|0)+(c<<2)>>2]=f}}else{k[f>>2]=k[d>>2];k[d>>2]=f}k[y>>2]=(k[y>>2]|0)+1;p=40}if((p|0)==40){p=0;q=A;d=k[q>>2]|0;q=Pi(d|0,k[q+4>>2]|0,s|0,((s|0)<0)<<31>>31|0)|0;nh((k[k[B>>2]>>2]|0)+q|0,C|0,d|0)|0;k[(k[G>>2]|0)+(t<<2)>>2]=s;d=s+1|0}c=t+1|0;e=k[F>>2]|0;if((c|0)>=(e|0)){p=d;break a}h=k[x>>2]|0;t=c;s=d}}else p=0;while(0);if((p|0)!=(e|0)){j=a+84|0;if(!(i[j>>0]|0)){e=k[a+68>>2]|0;c=(k[a+72>>2]|0)-e|0;if((c|0)>0){f=k[G>>2]|0;d=c>>2;c=0;do{a=e+(c<<2)|0;k[a>>2]=k[f+(k[a>>2]<<2)>>2];c=c+1|0}while((c|0)<(d|0))}}else{i[j>>0]=0;c=a+68|0;d=a+72|0;h=k[d>>2]|0;g=k[c>>2]|0;f=h-g>>2;if(e>>>0<=f>>>0){if(e>>>0>>0?(E=g+(e<<2)|0,(h|0)!=(E|0)):0)k[d>>2]=h+(~((h+-4-E|0)>>>2)<<2)}else{Bf(c,e-f|0,2968);e=k[F>>2]|0}if((e|0)>0){f=k[G>>2]|0;if(i[j>>0]|0)Ka(6242,6261,80,6293);d=k[a+68>>2]|0;c=0;do{k[d+(c<<2)>>2]=k[f+(c<<2)>>2];c=c+1|0}while((c|0)<(e|0))}}k[F>>2]=p}e=k[G>>2]|0;f=e;if(e|0){c=G+4|0;d=k[c>>2]|0;if((d|0)!=(e|0))k[c>>2]=d+(~((d+-4-f|0)>>>2)<<2);gl(e)}c=k[H+8>>2]|0;if(c|0)do{G=c;c=k[c>>2]|0;gl(G)}while((c|0)!=0);c=k[H>>2]|0;k[H>>2]=0;if(!c){r=I;return p|0}gl(c);r=I;return p|0}function Ub(a,b,c){a=a|0;b=b|0;c=c|0;var d=0,e=0,f=0,g=0,h=0,m=0,n=Pa,p=Pa,q=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,B=0,C=0,D=0,E=0,F=0,G=0,H=0,I=0,J=0,K=Pa;J=r;r=r+48|0;I=J+12|0;D=J+32|0;H=J;E=I+16|0;k[I>>2]=0;k[I+4>>2]=0;k[I+8>>2]=0;k[I+12>>2]=0;o[E>>2]=da(1.0);G=a+80|0;Ih(H,k[G>>2]|0);e=k[G>>2]|0;a:do if((e|0)>0){w=b+48|0;x=b+40|0;y=I+4|0;z=I+12|0;A=I+8|0;B=a+40|0;C=a+64|0;v=k[c>>2]|0;h=0;u=0;t=0;while(1){f=v+u|0;m=w;s=k[m>>2]|0;m=k[m+4>>2]|0;g=x;g=Pi(f|0,((f|0)<0)<<31>>31|0,k[g>>2]|0,k[g+4>>2]|0)|0;m=Bj(g|0,M|0,s|0,m|0)|0;m=(k[k[b>>2]>>2]|0)+m|0;m=l[m>>0]|l[m+1>>0]<<8;j[D>>1]=m;s=m&65535^318;b:do if(h){g=h+-1|0;f=(g&h|0)==0;if(f)d=g&s;else d=(s>>>0)%(h>>>0)|0;e=k[I>>2]|0;c=k[e+(d<<2)>>2]|0;c:do if(c|0){if(f)do{c=k[c>>2]|0;if(!c)break c;if((k[c+4>>2]&g|0)!=(d|0))break c}while((j[c+8>>1]|0)!=m<<16>>16);else do{c=k[c>>2]|0;if(!c)break c;if((((k[c+4>>2]|0)>>>0)%(h>>>0)|0|0)!=(d|0))break c}while((j[c+8>>1]|0)!=m<<16>>16);k[(k[H>>2]|0)+(u<<2)>>2]=k[c+12>>2];d=t;break b}while(0);if(f)c=g&s;else c=(s>>>0)%(h>>>0)|0;d=k[e+(c<<2)>>2]|0;if(d)if(f)while(1){d=k[d>>2]|0;if(!d){d=h;e=0;q=28;break b}if((k[d+4>>2]&g|0)!=(c|0)){d=h;e=0;q=28;break b}if((j[d+8>>1]|0)==m<<16>>16){q=40;break}}else while(1){d=k[d>>2]|0;if(!d){d=h;e=0;q=28;break b}if((((k[d+4>>2]|0)>>>0)%(h>>>0)|0|0)!=(c|0)){d=h;e=0;q=28;break b}if((j[d+8>>1]|0)==m<<16>>16){q=40;break}}else{d=h;e=0;q=28}}else{c=0;d=0;e=1;q=28}while(0);if((q|0)==28){f=Si(16)|0;j[f+8>>1]=m;k[f+12>>2]=t;k[f+4>>2]=s;k[f>>2]=0;n=da(((k[z>>2]|0)+1|0)>>>0);K=da(d>>>0);p=da(o[E>>2]);do if(e|n>da(K*p)){c=(d>>>0>2&(d+-1&d|0)==0&1|d<<1)^1;d=~~da(_(da(n/p)))>>>0;Jf(I,c>>>0>>0?d:c);c=k[y>>2]|0;d=c+-1|0;if(!(d&c)){e=c;c=d&s;break}else{e=c;c=(s>>>0)%(c>>>0)|0;break}}else e=d;while(0);c=(k[I>>2]|0)+(c<<2)|0;d=k[c>>2]|0;if(!d){k[f>>2]=k[A>>2];k[A>>2]=f;k[c>>2]=A;c=k[f>>2]|0;if(c|0){c=k[c+4>>2]|0;d=e+-1|0;if(!(d&e))c=c&d;else c=(c>>>0)%(e>>>0)|0;k[(k[I>>2]|0)+(c<<2)>>2]=f}}else{k[f>>2]=k[d>>2];k[d>>2]=f}k[z>>2]=(k[z>>2]|0)+1;q=40}if((q|0)==40){q=0;s=B;d=k[s>>2]|0;s=Pi(d|0,k[s+4>>2]|0,t|0,((t|0)<0)<<31>>31|0)|0;nh((k[k[C>>2]>>2]|0)+s|0,D|0,d|0)|0;k[(k[H>>2]|0)+(u<<2)>>2]=t;d=t+1|0}c=u+1|0;e=k[G>>2]|0;if((c|0)>=(e|0)){q=d;break a}h=k[y>>2]|0;u=c;t=d}}else q=0;while(0);if((q|0)!=(e|0)){m=a+84|0;if(!(i[m>>0]|0)){e=k[a+68>>2]|0;c=(k[a+72>>2]|0)-e|0;if((c|0)>0){f=k[H>>2]|0;d=c>>2;c=0;do{a=e+(c<<2)|0;k[a>>2]=k[f+(k[a>>2]<<2)>>2];c=c+1|0}while((c|0)<(d|0))}}else{i[m>>0]=0;c=a+68|0;d=a+72|0;h=k[d>>2]|0;g=k[c>>2]|0;f=h-g>>2;if(e>>>0<=f>>>0){if(e>>>0>>0?(F=g+(e<<2)|0,(h|0)!=(F|0)):0)k[d>>2]=h+(~((h+-4-F|0)>>>2)<<2)}else{Bf(c,e-f|0,2968);e=k[G>>2]|0}if((e|0)>0){f=k[H>>2]|0;if(i[m>>0]|0)Ka(6242,6261,80,6293);d=k[a+68>>2]|0;c=0;do{k[d+(c<<2)>>2]=k[f+(c<<2)>>2];c=c+1|0}while((c|0)<(e|0))}}k[G>>2]=q}e=k[H>>2]|0;f=e;if(e|0){c=H+4|0;d=k[c>>2]|0;if((d|0)!=(e|0))k[c>>2]=d+(~((d+-4-f|0)>>>2)<<2);gl(e)}c=k[I+8>>2]|0;if(c|0)do{H=c;c=k[c>>2]|0;gl(H)}while((c|0)!=0);c=k[I>>2]|0;k[I>>2]=0;if(!c){r=J;return q|0}gl(c);r=J;return q|0}function Vb(a,b,c){a=a|0;b=b|0;c=c|0;var d=0,e=0,f=0,g=0,h=0,j=0,l=0,m=Pa,n=Pa,p=0,q=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,B=0,C=0,D=0,E=0,F=0,G=0,H=0,I=0,J=0,K=0,L=0,N=0,O=0,P=0,Q=0,R=Pa;Q=r;r=r+80|0;P=Q+48|0;H=Q+32|0;I=Q+16|0;O=Q;J=P+16|0;k[P>>2]=0;k[P+4>>2]=0;k[P+8>>2]=0;k[P+12>>2]=0;o[J>>2]=da(1.0);N=a+80|0;Ih(O,k[N>>2]|0);e=k[N>>2]|0;if((e|0)>0){y=k[c>>2]|0;z=b+48|0;A=b+40|0;v=I+4|0;w=I+8|0;x=I+12|0;B=P+4|0;C=P+12|0;D=P+8|0;E=a+40|0;F=a+64|0;t=0;u=0;while(1){e=y+u|0;c=z;d=k[c>>2]|0;c=k[c+4>>2]|0;f=A;e=Pi(k[f>>2]|0,k[f+4>>2]|0,e|0,((e|0)<0)<<31>>31|0)|0;c=Bj(e|0,M|0,d|0,c|0)|0;c=(k[k[b>>2]>>2]|0)+c|0;d=H;e=c;f=d+16|0;do{i[d>>0]=i[e>>0]|0;d=d+1|0;e=e+1|0}while((d|0)<(f|0));ti(I|0,c|0,16)|0;c=Ne(P,I)|0;if(!c){g=k[I>>2]|0;h=k[v>>2]|0;j=k[w>>2]|0;l=k[x>>2]|0;s=(((g^318)+239^h)+239^j)+239^l;p=k[B>>2]|0;q=(p|0)==0;a:do if(!q){f=p+-1|0;d=(f&p|0)==0;if(d)c=s&f;else c=(s>>>0)%(p>>>0)|0;e=k[(k[P>>2]|0)+(c<<2)>>2]|0;if((e|0)!=0?(G=k[e>>2]|0,(G|0)!=0):0)if(d){d=G;while(1){if((k[d+4>>2]&f|0)!=(c|0)){K=25;break a}if((((k[d+8>>2]|0)==(g|0)?(k[d+12>>2]|0)==(h|0):0)?(k[d+16>>2]|0)==(j|0):0)?(k[d+20>>2]|0)==(l|0):0)break a;d=k[d>>2]|0;if(!d){K=25;break}}}else{d=G;while(1){if((((k[d+4>>2]|0)>>>0)%(p>>>0)|0|0)!=(c|0)){K=25;break a}if((((k[d+8>>2]|0)==(g|0)?(k[d+12>>2]|0)==(h|0):0)?(k[d+16>>2]|0)==(j|0):0)?(k[d+20>>2]|0)==(l|0):0)break a;d=k[d>>2]|0;if(!d){K=25;break}}}else K=25}else{c=0;K=25}while(0);if((K|0)==25){K=0;f=Si(28)|0;k[f+8>>2]=g;k[f+12>>2]=h;k[f+16>>2]=j;k[f+20>>2]=l;k[f+24>>2]=t;k[f+4>>2]=s;k[f>>2]=0;m=da(((k[C>>2]|0)+1|0)>>>0);R=da(p>>>0);n=da(o[J>>2]);do if(q|m>da(R*n)){c=(p>>>0>2&(p+-1&p|0)==0&1|p<<1)^1;d=~~da(_(da(m/n)))>>>0;Kf(P,c>>>0>>0?d:c);c=k[B>>2]|0;d=c+-1|0;if(!(d&c)){e=c;c=d&s;break}else{e=c;c=(s>>>0)%(c>>>0)|0;break}}else e=p;while(0);c=(k[P>>2]|0)+(c<<2)|0;d=k[c>>2]|0;if(!d){k[f>>2]=k[D>>2];k[D>>2]=f;k[c>>2]=D;c=k[f>>2]|0;if(c|0){c=k[c+4>>2]|0;d=e+-1|0;if(!(d&e))c=c&d;else c=(c>>>0)%(e>>>0)|0;k[(k[P>>2]|0)+(c<<2)>>2]=f}}else{k[f>>2]=k[d>>2];k[d>>2]=f}k[C>>2]=(k[C>>2]|0)+1}s=E;c=k[s>>2]|0;s=Pi(c|0,k[s+4>>2]|0,t|0,((t|0)<0)<<31>>31|0)|0;nh((k[k[F>>2]>>2]|0)+s|0,H|0,c|0)|0;k[(k[O>>2]|0)+(u<<2)>>2]=t;c=t+1|0}else{k[(k[O>>2]|0)+(u<<2)>>2]=k[c+24>>2];c=t}u=u+1|0;e=k[N>>2]|0;if((u|0)>=(e|0)){l=c;break}else t=c}}else l=0;if((l|0)!=(e|0)){j=a+84|0;if(!(i[j>>0]|0)){e=k[a+68>>2]|0;c=(k[a+72>>2]|0)-e|0;if((c|0)>0){f=k[O>>2]|0;d=c>>2;c=0;do{a=e+(c<<2)|0;k[a>>2]=k[f+(k[a>>2]<<2)>>2];c=c+1|0}while((c|0)<(d|0))}}else{i[j>>0]=0;c=a+68|0;d=a+72|0;h=k[d>>2]|0;g=k[c>>2]|0;f=h-g>>2;if(e>>>0<=f>>>0){if(e>>>0>>0?(L=g+(e<<2)|0,(h|0)!=(L|0)):0)k[d>>2]=h+(~((h+-4-L|0)>>>2)<<2)}else{Bf(c,e-f|0,2968);e=k[N>>2]|0}if((e|0)>0){f=k[O>>2]|0;if(i[j>>0]|0)Ka(6242,6261,80,6293);d=k[a+68>>2]|0;c=0;do{k[d+(c<<2)>>2]=k[f+(c<<2)>>2];c=c+1|0}while((c|0)<(e|0))}}k[N>>2]=l}e=k[O>>2]|0;f=e;if(e|0){c=O+4|0;d=k[c>>2]|0;if((d|0)!=(e|0))k[c>>2]=d+(~((d+-4-f|0)>>>2)<<2);gl(e)}c=k[P+8>>2]|0;if(c|0)do{O=c;c=k[c>>2]|0;gl(O)}while((c|0)!=0);c=k[P>>2]|0;k[P>>2]=0;if(!c){r=Q;return l|0}gl(c);r=Q;return l|0}function Wb(a,b,c){a=a|0;b=b|0;c=c|0;var d=0,e=0,f=0,g=0,h=0,j=0,l=Pa,m=Pa,n=0,p=0,q=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,B=0,C=0,D=0,E=0,F=0,G=0,H=0,I=Pa;H=r;r=r+48|0;G=H+12|0;B=H+32|0;F=H;C=G+16|0;k[G>>2]=0;k[G+4>>2]=0;k[G+8>>2]=0;k[G+12>>2]=0;o[C>>2]=da(1.0);E=a+80|0;Ih(F,k[E>>2]|0);e=k[E>>2]|0;a:do if((e|0)>0){u=b+48|0;v=b+40|0;w=G+4|0;x=G+12|0;y=G+8|0;z=a+40|0;A=a+64|0;t=k[c>>2]|0;h=0;s=0;q=0;while(1){f=t+s|0;j=u;p=k[j>>2]|0;j=k[j+4>>2]|0;g=v;g=Pi(f|0,((f|0)<0)<<31>>31|0,k[g>>2]|0,k[g+4>>2]|0)|0;j=Bj(g|0,M|0,p|0,j|0)|0;j=i[(k[k[b>>2]>>2]|0)+j>>0]|0;i[B>>0]=j;p=j&255^318;b:do if(h){g=h+-1|0;f=(g&h|0)==0;if(f)d=g&p;else d=(p>>>0)%(h>>>0)|0;e=k[G>>2]|0;c=k[e+(d<<2)>>2]|0;c:do if(c|0){if(f)do{c=k[c>>2]|0;if(!c)break c;if((k[c+4>>2]&g|0)!=(d|0))break c}while((i[c+8>>0]|0)!=j<<24>>24);else do{c=k[c>>2]|0;if(!c)break c;if((((k[c+4>>2]|0)>>>0)%(h>>>0)|0|0)!=(d|0))break c}while((i[c+8>>0]|0)!=j<<24>>24);k[(k[F>>2]|0)+(s<<2)>>2]=k[c+12>>2];d=q;break b}while(0);if(f)c=g&p;else c=(p>>>0)%(h>>>0)|0;d=k[e+(c<<2)>>2]|0;if(d)if(f)while(1){d=k[d>>2]|0;if(!d){d=h;e=0;n=28;break b}if((k[d+4>>2]&g|0)!=(c|0)){d=h;e=0;n=28;break b}if((i[d+8>>0]|0)==j<<24>>24){n=40;break}}else while(1){d=k[d>>2]|0;if(!d){d=h;e=0;n=28;break b}if((((k[d+4>>2]|0)>>>0)%(h>>>0)|0|0)!=(c|0)){d=h;e=0;n=28;break b}if((i[d+8>>0]|0)==j<<24>>24){n=40;break}}else{d=h;e=0;n=28}}else{c=0;d=0;e=1;n=28}while(0);if((n|0)==28){f=Si(16)|0;i[f+8>>0]=j;k[f+12>>2]=q;k[f+4>>2]=p;k[f>>2]=0;l=da(((k[x>>2]|0)+1|0)>>>0);I=da(d>>>0);m=da(o[C>>2]);do if(e|l>da(I*m)){c=(d>>>0>2&(d+-1&d|0)==0&1|d<<1)^1;d=~~da(_(da(l/m)))>>>0;Rf(G,c>>>0>>0?d:c);c=k[w>>2]|0;d=c+-1|0;if(!(d&c)){e=c;c=d&p;break}else{e=c;c=(p>>>0)%(c>>>0)|0;break}}else e=d;while(0);c=(k[G>>2]|0)+(c<<2)|0;d=k[c>>2]|0;if(!d){k[f>>2]=k[y>>2];k[y>>2]=f;k[c>>2]=y;c=k[f>>2]|0;if(c|0){c=k[c+4>>2]|0;d=e+-1|0;if(!(d&e))c=c&d;else c=(c>>>0)%(e>>>0)|0;k[(k[G>>2]|0)+(c<<2)>>2]=f}}else{k[f>>2]=k[d>>2];k[d>>2]=f}k[x>>2]=(k[x>>2]|0)+1;n=40}if((n|0)==40){n=0;p=z;d=k[p>>2]|0;p=Pi(d|0,k[p+4>>2]|0,q|0,((q|0)<0)<<31>>31|0)|0;nh((k[k[A>>2]>>2]|0)+p|0,B|0,d|0)|0;k[(k[F>>2]|0)+(s<<2)>>2]=q;d=q+1|0}c=s+1|0;e=k[E>>2]|0;if((c|0)>=(e|0)){n=d;break a}h=k[w>>2]|0;s=c;q=d}}else n=0;while(0);if((n|0)!=(e|0)){j=a+84|0;if(!(i[j>>0]|0)){e=k[a+68>>2]|0;c=(k[a+72>>2]|0)-e|0;if((c|0)>0){f=k[F>>2]|0;d=c>>2;c=0;do{a=e+(c<<2)|0;k[a>>2]=k[f+(k[a>>2]<<2)>>2];c=c+1|0}while((c|0)<(d|0))}}else{i[j>>0]=0;c=a+68|0;d=a+72|0;h=k[d>>2]|0;g=k[c>>2]|0;f=h-g>>2;if(e>>>0<=f>>>0){if(e>>>0>>0?(D=g+(e<<2)|0,(h|0)!=(D|0)):0)k[d>>2]=h+(~((h+-4-D|0)>>>2)<<2)}else{Bf(c,e-f|0,2968);e=k[E>>2]|0}if((e|0)>0){f=k[F>>2]|0;if(i[j>>0]|0)Ka(6242,6261,80,6293);d=k[a+68>>2]|0;c=0;do{k[d+(c<<2)>>2]=k[f+(c<<2)>>2];c=c+1|0}while((c|0)<(e|0))}}k[E>>2]=n}e=k[F>>2]|0;f=e;if(e|0){c=F+4|0;d=k[c>>2]|0;if((d|0)!=(e|0))k[c>>2]=d+(~((d+-4-f|0)>>>2)<<2);gl(e)}c=k[G+8>>2]|0;if(c|0)do{F=c;c=k[c>>2]|0;gl(F)}while((c|0)!=0);c=k[G>>2]|0;k[G>>2]=0;if(!c){r=H;return n|0}gl(c);r=H;return n|0}function Xb(a,b){a=a|0;b=b|0;var c=0,d=0,e=0,f=0,g=0,h=0,l=0,m=0,n=0,o=0;o=a+8|0;d=k[o>>2]|0;switch(k[d+28>>2]|0){case 2:{c=i[d+24>>0]|0;l=c<<24>>24;h=dl((l|0)>-1?l:-1)|0;a:do if(b|0){g=a+16|0;if(c<<24>>24>0){a=0;d=0}else{nh(k[k[d+64>>2]>>2]|0,h|0,l|0)|0;if((b|0)==1)break;else{c=0;a=1}while(1){c=c+l|0;nh((k[k[(k[o>>2]|0)+64>>2]>>2]|0)+c|0,h|0,l|0)|0;a=a+1|0;if((a|0)==(b|0))break a}}while(1){f=k[g>>2]|0;c=0;e=d;while(1){i[h+c>>0]=k[f+(e<<2)>>2];c=c+1|0;if((c|0)==(l|0))break;else e=e+1|0}nh((k[k[(k[o>>2]|0)+64>>2]>>2]|0)+d|0,h|0,l|0)|0;a=a+1|0;if((a|0)==(b|0))break;else d=d+l|0}}while(0);el(h);o=1;return o|0}case 1:{c=i[d+24>>0]|0;h=c<<24>>24;l=dl((h|0)>-1?h:-1)|0;b:do if(b|0){g=a+16|0;if(c<<24>>24>0){a=0;d=0}else{nh(k[k[d+64>>2]>>2]|0,l|0,h|0)|0;if((b|0)==1)break;else{c=0;a=1}while(1){c=c+h|0;nh((k[k[(k[o>>2]|0)+64>>2]>>2]|0)+c|0,l|0,h|0)|0;a=a+1|0;if((a|0)==(b|0))break b}}while(1){f=k[g>>2]|0;c=0;e=d;while(1){i[l+c>>0]=k[f+(e<<2)>>2];c=c+1|0;if((c|0)==(h|0))break;else e=e+1|0}nh((k[k[(k[o>>2]|0)+64>>2]>>2]|0)+d|0,l|0,h|0)|0;a=a+1|0;if((a|0)==(b|0))break;else d=d+h|0}}while(0);el(l);o=1;return o|0}case 4:{c=i[d+24>>0]|0;l=c<<24>>24;m=l<<1;n=dl(l>>>0>2147483647?-1:l<<1)|0;c:do if(b|0){h=a+16|0;if(c<<24>>24>0){a=0;d=0;e=0}else{nh(k[k[d+64>>2]>>2]|0,n|0,m|0)|0;if((b|0)==1)break;else{c=0;a=1}while(1){c=c+m|0;nh((k[k[(k[o>>2]|0)+64>>2]>>2]|0)+c|0,n|0,m|0)|0;a=a+1|0;if((a|0)==(b|0))break c}}while(1){g=k[h>>2]|0;c=0;f=e;while(1){j[n+(c<<1)>>1]=k[g+(f<<2)>>2];c=c+1|0;if((c|0)==(l|0))break;else f=f+1|0}nh((k[k[(k[o>>2]|0)+64>>2]>>2]|0)+d|0,n|0,m|0)|0;a=a+1|0;if((a|0)==(b|0))break;else{d=d+m|0;e=e+l|0}}}while(0);el(n);o=1;return o|0}case 3:{c=i[d+24>>0]|0;l=c<<24>>24;m=l<<1;n=dl(l>>>0>2147483647?-1:l<<1)|0;d:do if(b|0){h=a+16|0;if(c<<24>>24>0){a=0;d=0;e=0}else{nh(k[k[d+64>>2]>>2]|0,n|0,m|0)|0;if((b|0)==1)break;else{c=0;a=1}while(1){c=c+m|0;nh((k[k[(k[o>>2]|0)+64>>2]>>2]|0)+c|0,n|0,m|0)|0;a=a+1|0;if((a|0)==(b|0))break d}}while(1){g=k[h>>2]|0;c=0;f=e;while(1){j[n+(c<<1)>>1]=k[g+(f<<2)>>2];c=c+1|0;if((c|0)==(l|0))break;else f=f+1|0}nh((k[k[(k[o>>2]|0)+64>>2]>>2]|0)+d|0,n|0,m|0)|0;a=a+1|0;if((a|0)==(b|0))break;else{d=d+m|0;e=e+l|0}}}while(0);el(n);o=1;return o|0}case 6:{c=i[d+24>>0]|0;l=c<<24>>24;m=l<<2;n=dl(l>>>0>1073741823?-1:l<<2)|0;e:do if(b|0){h=a+16|0;if(c<<24>>24>0){a=0;d=0;e=0}else{nh(k[k[d+64>>2]>>2]|0,n|0,m|0)|0;if((b|0)==1)break;else{c=0;a=1}while(1){c=c+m|0;nh((k[k[(k[o>>2]|0)+64>>2]>>2]|0)+c|0,n|0,m|0)|0;a=a+1|0;if((a|0)==(b|0))break e}}while(1){g=k[h>>2]|0;c=0;f=e;while(1){k[n+(c<<2)>>2]=k[g+(f<<2)>>2];c=c+1|0;if((c|0)==(l|0))break;else f=f+1|0}nh((k[k[(k[o>>2]|0)+64>>2]>>2]|0)+d|0,n|0,m|0)|0;a=a+1|0;if((a|0)==(b|0))break;else{d=d+m|0;e=e+l|0}}}while(0);el(n);o=1;return o|0}case 5:{c=i[d+24>>0]|0;l=c<<24>>24;m=l<<2;n=dl(l>>>0>1073741823?-1:l<<2)|0;f:do if(b|0){h=a+16|0;if(c<<24>>24>0){a=0;d=0;e=0}else{nh(k[k[d+64>>2]>>2]|0,n|0,m|0)|0;if((b|0)==1)break;else{c=0;a=1}while(1){c=c+m|0;nh((k[k[(k[o>>2]|0)+64>>2]>>2]|0)+c|0,n|0,m|0)|0;a=a+1|0;if((a|0)==(b|0))break f}}while(1){g=k[h>>2]|0;c=0;f=e;while(1){k[n+(c<<2)>>2]=k[g+(f<<2)>>2];c=c+1|0;if((c|0)==(l|0))break;else f=f+1|0}nh((k[k[(k[o>>2]|0)+64>>2]>>2]|0)+d|0,n|0,m|0)|0;a=a+1|0;if((a|0)==(b|0))break;else{d=d+m|0;e=e+l|0}}}while(0);el(n);o=1;return o|0}default:{o=0;return o|0}}return 0}function Yb(a,b,c,d,e,f){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;f=f|0;var g=0,h=0,i=0,j=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,B=0;x=a+8|0;k[x>>2]=e;h=a+32|0;i=a+36|0;g=k[i>>2]|0;f=k[h>>2]|0;d=g-f>>2;if(d>>>0>=e>>>0)if(d>>>0>e>>>0?(j=f+(e<<2)|0,(g|0)!=(j|0)):0){k[i>>2]=g+(~((g+-4-j|0)>>>2)<<2);d=e}else d=e;else{eg(h,e-d|0);d=k[x>>2]|0}u=k[a+48>>2]|0;v=k[a+52>>2]|0;t=e>>>0>1073741823?-1:e<<2;w=dl(t)|0;Ah(w|0,0,t|0)|0;if((d|0)>0){l=a+16|0;j=a+32|0;m=a+12|0;i=0;do{h=k[w+(i<<2)>>2]|0;d=k[l>>2]|0;do if((h|0)<=(d|0)){d=k[m>>2]|0;f=k[j>>2]|0;g=f+(i<<2)|0;if((h|0)<(d|0)){k[g>>2]=d;g=f;break}else{k[g>>2]=h;g=f;break}}else{g=k[j>>2]|0;k[g+(i<<2)>>2]=d}while(0);i=i+1|0;d=k[x>>2]|0}while((i|0)<(d|0));if((d|0)>0){d=0;do{k[c+(d<<2)>>2]=(k[b+(d<<2)>>2]|0)+(k[g+(d<<2)>>2]|0);d=d+1|0;f=k[x>>2]|0}while((d|0)<(f|0));if((f|0)>0){f=a+20|0;d=0;do{g=c+(d<<2)|0;h=k[g>>2]|0;if((h|0)<=(k[l>>2]|0)){if((h|0)<(k[m>>2]|0))k[g>>2]=(k[f>>2]|0)+h}else k[g>>2]=h-(k[f>>2]|0);d=d+1|0}while((d|0)<(k[x>>2]|0))}}}p=a+56|0;f=k[p>>2]|0;h=k[f+4>>2]|0;g=k[f>>2]|0;t=h-g|0;q=t>>2;if((t|0)<=4){el(w);return 1}r=a+16|0;s=a+32|0;t=a+12|0;a=a+20|0;n=u+12|0;o=(e|0)>0;d=1;while(1){if(h-g>>2>>>0<=d>>>0){B=28;break}f=k[g+(d<<2)>>2]|0;m=$(d,e)|0;if((f|0)>=0?(y=k[(k[n>>2]|0)+(f<<2)>>2]|0,(y|0)>=0):0){h=k[u>>2]|0;g=(y>>>0)%3|0;i=k[v>>2]|0;l=k[i+(k[h+(((y>>>0)/3|0)*12|0)+(g<<2)>>2]<<2)>>2]|0;f=y+1|0;f=((f|0)%3|0|0)==0?y+-2|0:f;if((f|0)<0)f=-1073741824;else f=k[h+(((f>>>0)/3|0)*12|0)+(((f>>>0)%3|0)<<2)>>2]|0;j=k[i+(f<<2)>>2]|0;f=((g|0)==0?2:-1)+y|0;if((f|0)<0)f=-1073741824;else f=k[h+(((f>>>0)/3|0)*12|0)+(((f>>>0)%3|0)<<2)>>2]|0;f=k[i+(f<<2)>>2]|0;if((l|0)<(d|0)&(j|0)<(d|0)&(f|0)<(d|0)){i=$(l,e)|0;h=$(j,e)|0;g=$(f,e)|0;if(o){f=0;do{k[w+(f<<2)>>2]=(k[c+(f+g<<2)>>2]|0)+(k[c+(f+h<<2)>>2]|0)-(k[c+(f+i<<2)>>2]|0);f=f+1|0}while((f|0)!=(e|0))}l=c+(m<<2)|0;if((k[x>>2]|0)>0){j=0;do{i=k[w+(j<<2)>>2]|0;f=k[r>>2]|0;do if((i|0)<=(f|0)){f=k[t>>2]|0;g=k[s>>2]|0;h=g+(j<<2)|0;if((i|0)<(f|0)){k[h>>2]=f;h=g;break}else{k[h>>2]=i;h=g;break}}else{h=k[s>>2]|0;k[h+(j<<2)>>2]=f}while(0);j=j+1|0;f=k[x>>2]|0}while((j|0)<(f|0));if((f|0)>0){f=0;do{k[l+(f<<2)>>2]=(k[b+(f+m<<2)>>2]|0)+(k[h+(f<<2)>>2]|0);f=f+1|0;g=k[x>>2]|0}while((f|0)<(g|0));if((g|0)>0){f=0;do{g=l+(f<<2)|0;h=k[g>>2]|0;if((h|0)<=(k[r>>2]|0)){if((h|0)<(k[t>>2]|0))k[g>>2]=(k[a>>2]|0)+h}else k[g>>2]=h-(k[a>>2]|0);f=f+1|0}while((f|0)<(k[x>>2]|0))}}}}else B=37}else B=37;if((B|0)==37?(B=0,z=c+(($(d+-1|0,e)|0)<<2)|0,A=c+(m<<2)|0,(k[x>>2]|0)>0):0){j=0;do{i=k[z+(j<<2)>>2]|0;f=k[r>>2]|0;do if((i|0)<=(f|0)){f=k[t>>2]|0;g=k[s>>2]|0;h=g+(j<<2)|0;if((i|0)<(f|0)){k[h>>2]=f;h=g;break}else{k[h>>2]=i;h=g;break}}else{h=k[s>>2]|0;k[h+(j<<2)>>2]=f}while(0);j=j+1|0;f=k[x>>2]|0}while((j|0)<(f|0));if((f|0)>0){f=0;do{k[A+(f<<2)>>2]=(k[b+(f+m<<2)>>2]|0)+(k[h+(f<<2)>>2]|0);f=f+1|0;g=k[x>>2]|0}while((f|0)<(g|0));if((g|0)>0){f=0;do{g=A+(f<<2)|0;h=k[g>>2]|0;if((h|0)<=(k[r>>2]|0)){if((h|0)<(k[t>>2]|0))k[g>>2]=(k[a>>2]|0)+h}else k[g>>2]=h-(k[a>>2]|0);f=f+1|0}while((f|0)<(k[x>>2]|0))}}}d=d+1|0;if((d|0)>=(q|0)){B=25;break}f=k[p>>2]|0;g=k[f>>2]|0;h=k[f+4>>2]|0}if((B|0)==25){el(w);return 1}else if((B|0)==28)lk(f);return 0}function Zb(a,b,c,d,e,f){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;f=f|0;var g=0,h=0,i=0,j=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,B=0,C=0,D=0,E=0,F=0;y=a+8|0;k[y>>2]=e;h=a+32|0;i=a+36|0;g=k[i>>2]|0;f=k[h>>2]|0;d=g-f>>2;if(d>>>0>=e>>>0)if(d>>>0>e>>>0?(j=f+(e<<2)|0,(g|0)!=(j|0)):0){k[i>>2]=g+(~((g+-4-j|0)>>>2)<<2);d=e}else d=e;else{eg(h,e-d|0);d=k[y>>2]|0}v=k[a+48>>2]|0;w=k[a+52>>2]|0;u=e>>>0>1073741823?-1:e<<2;x=dl(u)|0;Ah(x|0,0,u|0)|0;if((d|0)>0){l=a+16|0;j=a+32|0;m=a+12|0;i=0;do{h=k[x+(i<<2)>>2]|0;d=k[l>>2]|0;do if((h|0)<=(d|0)){d=k[m>>2]|0;f=k[j>>2]|0;g=f+(i<<2)|0;if((h|0)<(d|0)){k[g>>2]=d;g=f;break}else{k[g>>2]=h;g=f;break}}else{g=k[j>>2]|0;k[g+(i<<2)>>2]=d}while(0);i=i+1|0;d=k[y>>2]|0}while((i|0)<(d|0));if((d|0)>0){d=0;do{k[c+(d<<2)>>2]=(k[b+(d<<2)>>2]|0)+(k[g+(d<<2)>>2]|0);d=d+1|0;f=k[y>>2]|0}while((d|0)<(f|0));if((f|0)>0){f=a+20|0;d=0;do{g=c+(d<<2)|0;h=k[g>>2]|0;if((h|0)<=(k[l>>2]|0)){if((h|0)<(k[m>>2]|0))k[g>>2]=(k[f>>2]|0)+h}else k[g>>2]=h-(k[f>>2]|0);d=d+1|0}while((d|0)<(k[y>>2]|0))}}}q=a+56|0;g=k[q>>2]|0;f=k[g+4>>2]|0;h=k[g>>2]|0;u=f-h|0;r=u>>2;if((u|0)<=4){el(x);return 1}s=a+16|0;t=a+32|0;u=a+12|0;a=a+20|0;n=v+64|0;o=v+28|0;p=(e|0)>0;d=1;while(1){if(f-h>>2>>>0<=d>>>0){F=28;break}f=k[h+(d<<2)>>2]|0;m=$(d,e)|0;if((!((f|0)<0?1:(1<<(f&31)&k[(k[v>>2]|0)+(f>>>5<<2)>>2]|0)!=0)?(z=k[(k[(k[n>>2]|0)+12>>2]|0)+(f<<2)>>2]|0,(z|0)>=0):0)?(C=k[o>>2]|0,l=k[w>>2]|0,A=k[l+(k[C+(z<<2)>>2]<<2)>>2]|0,B=z+1|0,B=k[l+(k[C+((((B|0)%3|0|0)==0?z+-2|0:B)<<2)>>2]<<2)>>2]|0,C=k[l+(k[C+((((z>>>0)%3|0|0)==0?2:-1)+z<<2)>>2]<<2)>>2]|0,(A|0)<(d|0)&(B|0)<(d|0)&(C|0)<(d|0)):0){g=$(A,e)|0;h=$(B,e)|0;i=$(C,e)|0;if(p){f=0;do{k[x+(f<<2)>>2]=(k[c+(f+i<<2)>>2]|0)+(k[c+(f+h<<2)>>2]|0)-(k[c+(f+g<<2)>>2]|0);f=f+1|0}while((f|0)!=(e|0))}l=c+(m<<2)|0;if((k[y>>2]|0)>0){j=0;do{i=k[x+(j<<2)>>2]|0;f=k[s>>2]|0;do if((i|0)<=(f|0)){f=k[u>>2]|0;g=k[t>>2]|0;h=g+(j<<2)|0;if((i|0)<(f|0)){k[h>>2]=f;h=g;break}else{k[h>>2]=i;h=g;break}}else{h=k[t>>2]|0;k[h+(j<<2)>>2]=f}while(0);j=j+1|0;f=k[y>>2]|0}while((j|0)<(f|0));if((f|0)>0){f=0;do{k[l+(f<<2)>>2]=(k[b+(f+m<<2)>>2]|0)+(k[h+(f<<2)>>2]|0);f=f+1|0;g=k[y>>2]|0}while((f|0)<(g|0));if((g|0)>0){f=0;do{g=l+(f<<2)|0;h=k[g>>2]|0;if((h|0)<=(k[s>>2]|0)){if((h|0)<(k[u>>2]|0))k[g>>2]=(k[a>>2]|0)+h}else k[g>>2]=h-(k[a>>2]|0);f=f+1|0}while((f|0)<(k[y>>2]|0))}}}}else F=33;if((F|0)==33?(F=0,D=c+(($(d+-1|0,e)|0)<<2)|0,E=c+(m<<2)|0,(k[y>>2]|0)>0):0){j=0;do{i=k[D+(j<<2)>>2]|0;f=k[s>>2]|0;do if((i|0)<=(f|0)){f=k[u>>2]|0;g=k[t>>2]|0;h=g+(j<<2)|0;if((i|0)<(f|0)){k[h>>2]=f;h=g;break}else{k[h>>2]=i;h=g;break}}else{h=k[t>>2]|0;k[h+(j<<2)>>2]=f}while(0);j=j+1|0;f=k[y>>2]|0}while((j|0)<(f|0));if((f|0)>0){f=0;do{k[E+(f<<2)>>2]=(k[b+(f+m<<2)>>2]|0)+(k[h+(f<<2)>>2]|0);f=f+1|0;g=k[y>>2]|0}while((f|0)<(g|0));if((g|0)>0){f=0;do{g=E+(f<<2)|0;h=k[g>>2]|0;if((h|0)<=(k[s>>2]|0)){if((h|0)<(k[u>>2]|0))k[g>>2]=(k[a>>2]|0)+h}else k[g>>2]=h-(k[a>>2]|0);f=f+1|0}while((f|0)<(k[y>>2]|0))}}}d=d+1|0;if((d|0)>=(r|0)){F=25;break}f=k[q>>2]|0;g=f;h=k[f>>2]|0;f=k[f+4>>2]|0}if((F|0)==25){el(x);return 1}else if((F|0)==28)lk(g);return 0}function _b(a,b,c,d){a=a|0;b=b|0;c=c|0;d=d|0;var e=Pa,f=0,g=0,h=Pa,i=0,j=0,l=Pa,m=Pa,n=Pa,p=0,q=Pa,s=Pa,t=Pa,u=Pa,v=Pa,w=Pa,x=0,y=0,z=0,A=0,B=0,C=0,D=Pa;C=r;r=r+48|0;z=C+24|0;x=C+12|0;y=C;g=a+24|0;f=k[b>>2]|0;b=f+1|0;if((f|0)>=0){b=((b|0)%3|0|0)==0?f+-2|0:b;f=f+(((f>>>0)%3|0|0)==0?2:-1)|0;if((b|0)<0)b=-1073741824;else b=k[(k[k[g>>2]>>2]|0)+(((b>>>0)/3|0)*12|0)+(((b>>>0)%3|0)<<2)>>2]|0;if((f|0)<0)f=-1073741824;else f=k[(k[k[g>>2]>>2]|0)+(((f>>>0)/3|0)*12|0)+(((f>>>0)%3|0)<<2)>>2]|0}else{b=-1073741824;f=-1073741824}g=k[a+28>>2]|0;i=k[g+4>>2]|0;j=k[g>>2]|0;if(i-j>>2>>>0<=b>>>0)lk(g);p=k[j+(b<<2)>>2]|0;if(i-j>>2>>>0<=f>>>0)lk(g);f=k[j+(f<<2)>>2]|0;b=(p|0)<(d|0);if(!(b&(f|0)<(d|0))){do if(b){i=a+48|0;b=k[i>>2]|0;g=$(b,p)|0}else{if((d|0)>0){i=a+48|0;b=k[i>>2]|0;g=$(b,d+-1|0)|0;break}g=a+48|0;if((k[g>>2]|0)<=0){r=C;return}f=k[a+44>>2]|0;b=0;do{k[f+(b<<2)>>2]=0;b=b+1|0}while((b|0)<(k[g>>2]|0));r=C;return}while(0);if((b|0)<=0){r=C;return}f=k[a+44>>2]|0;b=0;do{k[f+(b<<2)>>2]=k[c+(b+g<<2)>>2];b=b+1|0}while((b|0)<(k[i>>2]|0));r=C;return}b=a+48|0;j=k[b>>2]|0;i=$(j,p)|0;t=da(k[c+(i<<2)>>2]|0);u=da(k[c+(i+1<<2)>>2]|0);j=$(j,f)|0;v=da(k[c+(j<<2)>>2]|0);w=da(k[c+(j+1<<2)>>2]|0);if(!(v!=t|w!=u)){a=k[a+44>>2]|0;k[a>>2]=~~v;k[a+4>>2]=~~w;r=C;return}mf(z,a,d);mf(x,a,p);mf(y,a,f);q=da(o[y>>2]);l=da(o[x>>2]);q=da(q-l);s=da(o[y+4>>2]);m=da(o[x+4>>2]);s=da(s-m);h=da(o[y+8>>2]);e=da(o[x+8>>2]);h=da(h-e);l=da(da(o[z>>2])-l);m=da(da(o[z+4>>2])-m);e=da(da(o[z+8>>2])-e);n=da(da(da(da(q*q)+da(0.0))+da(s*s))+da(h*h));if(n>da(0.0)?1:(k[a+64>>2]|0)<258){D=da(da(da(da(da(q*l)+da(0.0))+da(s*m))+da(h*e))/n);q=da(l-da(q*D));s=da(m-da(s*D));e=da(e-da(h*D));h=D;e=da(P(da(da(da(e*e)+da(da(s*s)+da(da(q*q)+da(0.0))))/n)))}else{h=da(0.0);e=da(0.0)}m=da(v-t);l=da(w-u);D=da(t+da(m*h));m=da(m*e);w=da(u+da(l*h));l=da(l*e);h=da(D-l);e=da(w+m);l=da(D+l);m=da(w-m);b=$(k[b>>2]|0,d)|0;w=da(k[c+(b<<2)>>2]|0);D=da(k[c+(b+1<<2)>>2]|0);u=da(w-h);v=da(D-e);w=da(w-l);D=da(D-m);c=da(da(da(u*u)+da(0.0))+da(v*v))>2]|0;i=k[a+60>>2]|0;j=(g|0)==(i<<5|0);if(c){do if(j)if((g+1|0)<0)mk(b);else{A=i<<6;c=g+32&-32;Wf(b,i<<5>>>0<1073741823?(A>>>0>>0?c:A):2147483647);A=k[f>>2]|0;break}else A=g;while(0);k[f>>2]=A+1;c=(k[b>>2]|0)+(A>>>5<<2)|0;k[c>>2]=k[c>>2]|1<<(A&31)}else{do if(j)if((g+1|0)<0)mk(b);else{B=i<<6;c=g+32&-32;Wf(b,i<<5>>>0<1073741823?(B>>>0>>0?c:B):2147483647);B=k[f>>2]|0;break}else B=g;while(0);k[f>>2]=B+1;c=(k[b>>2]|0)+(B>>>5<<2)|0;k[c>>2]=k[c>>2]&~(1<<(B&31));h=l;e=m}c=~~+N(+(+h+.5));a=k[a+44>>2]|0;k[a>>2]=c;c=~~+N(+(+e+.5));k[a+4>>2]=c;r=C;return}function $b(a,b,c,d){a=a|0;b=b|0;c=c|0;d=d|0;var e=Pa,f=0,g=0,h=Pa,i=0,j=0,l=Pa,m=Pa,n=Pa,p=0,q=Pa,s=Pa,t=Pa,u=Pa,v=Pa,w=Pa,x=0,y=0,z=0,A=0,B=0,C=0,D=Pa;C=r;r=r+48|0;z=C+24|0;x=C+12|0;y=C;g=a+48|0;f=k[b>>2]|0;b=f+1|0;if((f|0)>=0){b=((b|0)%3|0|0)==0?f+-2|0:b;f=f+(((f>>>0)%3|0|0)==0?2:-1)|0;if((b|0)<0)b=-1073741824;else b=k[(k[k[g>>2]>>2]|0)+(((b>>>0)/3|0)*12|0)+(((b>>>0)%3|0)<<2)>>2]|0;if((f|0)<0)f=-1073741824;else f=k[(k[k[g>>2]>>2]|0)+(((f>>>0)/3|0)*12|0)+(((f>>>0)%3|0)<<2)>>2]|0}else{b=-1073741824;f=-1073741824}g=k[a+52>>2]|0;i=k[g+4>>2]|0;j=k[g>>2]|0;if(i-j>>2>>>0<=b>>>0)lk(g);p=k[j+(b<<2)>>2]|0;if(i-j>>2>>>0<=f>>>0)lk(g);f=k[j+(f<<2)>>2]|0;b=(p|0)<(d|0);if(!(b&(f|0)<(d|0))){do if(b){i=a+72|0;b=k[i>>2]|0;g=$(b,p)|0}else{if((d|0)>0){i=a+72|0;b=k[i>>2]|0;g=$(b,d+-1|0)|0;break}g=a+72|0;if((k[g>>2]|0)<=0){r=C;return}f=k[a+68>>2]|0;b=0;do{k[f+(b<<2)>>2]=0;b=b+1|0}while((b|0)<(k[g>>2]|0));r=C;return}while(0);if((b|0)<=0){r=C;return}f=k[a+68>>2]|0;b=0;do{k[f+(b<<2)>>2]=k[c+(b+g<<2)>>2];b=b+1|0}while((b|0)<(k[i>>2]|0));r=C;return}b=a+72|0;j=k[b>>2]|0;i=$(j,p)|0;t=da(k[c+(i<<2)>>2]|0);u=da(k[c+(i+1<<2)>>2]|0);j=$(j,f)|0;v=da(k[c+(j<<2)>>2]|0);w=da(k[c+(j+1<<2)>>2]|0);if(!(v!=t|w!=u)){a=k[a+68>>2]|0;k[a>>2]=~~v;k[a+4>>2]=~~w;r=C;return}nf(z,a,d);nf(x,a,p);nf(y,a,f);q=da(o[y>>2]);l=da(o[x>>2]);q=da(q-l);s=da(o[y+4>>2]);m=da(o[x+4>>2]);s=da(s-m);h=da(o[y+8>>2]);e=da(o[x+8>>2]);h=da(h-e);l=da(da(o[z>>2])-l);m=da(da(o[z+4>>2])-m);e=da(da(o[z+8>>2])-e);n=da(da(da(da(q*q)+da(0.0))+da(s*s))+da(h*h));if(n>da(0.0)?1:(k[a+88>>2]|0)<258){D=da(da(da(da(da(q*l)+da(0.0))+da(s*m))+da(h*e))/n);q=da(l-da(q*D));s=da(m-da(s*D));e=da(e-da(h*D));h=D;e=da(P(da(da(da(e*e)+da(da(s*s)+da(da(q*q)+da(0.0))))/n)))}else{h=da(0.0);e=da(0.0)}m=da(v-t);l=da(w-u);D=da(t+da(m*h));m=da(m*e);w=da(u+da(l*h));l=da(l*e);h=da(D-l);e=da(w+m);l=da(D+l);m=da(w-m);b=$(k[b>>2]|0,d)|0;w=da(k[c+(b<<2)>>2]|0);D=da(k[c+(b+1<<2)>>2]|0);u=da(w-h);v=da(D-e);w=da(w-l);D=da(D-m);c=da(da(da(u*u)+da(0.0))+da(v*v))>2]|0;i=k[a+84>>2]|0;j=(g|0)==(i<<5|0);if(c){do if(j)if((g+1|0)<0)mk(b);else{A=i<<6;c=g+32&-32;Wf(b,i<<5>>>0<1073741823?(A>>>0>>0?c:A):2147483647);A=k[f>>2]|0;break}else A=g;while(0);k[f>>2]=A+1;c=(k[b>>2]|0)+(A>>>5<<2)|0;k[c>>2]=k[c>>2]|1<<(A&31)}else{do if(j)if((g+1|0)<0)mk(b);else{B=i<<6;c=g+32&-32;Wf(b,i<<5>>>0<1073741823?(B>>>0>>0?c:B):2147483647);B=k[f>>2]|0;break}else B=g;while(0);k[f>>2]=B+1;c=(k[b>>2]|0)+(B>>>5<<2)|0;k[c>>2]=k[c>>2]&~(1<<(B&31));h=l;e=m}c=~~+N(+(+h+.5));a=k[a+68>>2]|0;k[a>>2]=c;c=~~+N(+(+e+.5));k[a+4>>2]=c;r=C;return}function ac(a,b,c,d){a=a|0;b=b|0;c=c|0;d=d|0;var e=Pa,f=0,g=0,h=Pa,i=0,j=0,l=Pa,m=Pa,n=Pa,p=0,q=Pa,s=Pa,t=Pa,u=Pa,v=Pa,w=Pa,x=0,y=0,z=0,A=0,B=0,C=0,D=Pa;C=r;r=r+48|0;z=C+24|0;x=C+12|0;y=C;i=a+24|0;f=k[b>>2]|0;b=f+1|0;do if((f|0)>=0){b=((b|0)%3|0|0)==0?f+-2|0:b;if(!((f>>>0)%3|0)){g=f+2|0;break}else{g=f+-1|0;break}}else{g=f;b=f}while(0);f=k[(k[i>>2]|0)+28>>2]|0;b=k[f+(b<<2)>>2]|0;f=k[f+(g<<2)>>2]|0;g=k[a+28>>2]|0;i=k[g+4>>2]|0;j=k[g>>2]|0;if(i-j>>2>>>0<=b>>>0)lk(g);p=k[j+(b<<2)>>2]|0;if(i-j>>2>>>0<=f>>>0)lk(g);f=k[j+(f<<2)>>2]|0;b=(p|0)<(d|0);if(!(b&(f|0)<(d|0))){do if(b){i=a+48|0;b=k[i>>2]|0;g=$(b,p)|0}else{if((d|0)>0){i=a+48|0;b=k[i>>2]|0;g=$(b,d+-1|0)|0;break}g=a+48|0;if((k[g>>2]|0)<=0){r=C;return}f=k[a+44>>2]|0;b=0;do{k[f+(b<<2)>>2]=0;b=b+1|0}while((b|0)<(k[g>>2]|0));r=C;return}while(0);if((b|0)<=0){r=C;return}f=k[a+44>>2]|0;b=0;do{k[f+(b<<2)>>2]=k[c+(b+g<<2)>>2];b=b+1|0}while((b|0)<(k[i>>2]|0));r=C;return}b=a+48|0;j=k[b>>2]|0;i=$(j,p)|0;t=da(k[c+(i<<2)>>2]|0);u=da(k[c+(i+1<<2)>>2]|0);j=$(j,f)|0;v=da(k[c+(j<<2)>>2]|0);w=da(k[c+(j+1<<2)>>2]|0);if(!(v!=t|w!=u)){a=k[a+44>>2]|0;k[a>>2]=~~v;k[a+4>>2]=~~w;r=C;return}mf(z,a,d);mf(x,a,p);mf(y,a,f);q=da(o[y>>2]);l=da(o[x>>2]);q=da(q-l);s=da(o[y+4>>2]);m=da(o[x+4>>2]);s=da(s-m);h=da(o[y+8>>2]);e=da(o[x+8>>2]);h=da(h-e);l=da(da(o[z>>2])-l);m=da(da(o[z+4>>2])-m);e=da(da(o[z+8>>2])-e);n=da(da(da(da(q*q)+da(0.0))+da(s*s))+da(h*h));if(n>da(0.0)?1:(k[a+64>>2]|0)<258){D=da(da(da(da(da(q*l)+da(0.0))+da(s*m))+da(h*e))/n);q=da(l-da(q*D));s=da(m-da(s*D));e=da(e-da(h*D));h=D;e=da(P(da(da(da(e*e)+da(da(s*s)+da(da(q*q)+da(0.0))))/n)))}else{h=da(0.0);e=da(0.0)}m=da(v-t);l=da(w-u);D=da(t+da(m*h));m=da(m*e);w=da(u+da(l*h));l=da(l*e);h=da(D-l);e=da(w+m);l=da(D+l);m=da(w-m);b=$(k[b>>2]|0,d)|0;w=da(k[c+(b<<2)>>2]|0);D=da(k[c+(b+1<<2)>>2]|0);u=da(w-h);v=da(D-e);w=da(w-l);D=da(D-m);c=da(da(da(u*u)+da(0.0))+da(v*v))>2]|0;i=k[a+60>>2]|0;j=(g|0)==(i<<5|0);if(c){do if(j)if((g+1|0)<0)mk(b);else{A=i<<6;c=g+32&-32;Wf(b,i<<5>>>0<1073741823?(A>>>0>>0?c:A):2147483647);A=k[f>>2]|0;break}else A=g;while(0);k[f>>2]=A+1;c=(k[b>>2]|0)+(A>>>5<<2)|0;k[c>>2]=k[c>>2]|1<<(A&31)}else{do if(j)if((g+1|0)<0)mk(b);else{B=i<<6;c=g+32&-32;Wf(b,i<<5>>>0<1073741823?(B>>>0>>0?c:B):2147483647);B=k[f>>2]|0;break}else B=g;while(0);k[f>>2]=B+1;c=(k[b>>2]|0)+(B>>>5<<2)|0;k[c>>2]=k[c>>2]&~(1<<(B&31));h=l;e=m}c=~~+N(+(+h+.5));a=k[a+44>>2]|0;k[a>>2]=c;c=~~+N(+(+e+.5));k[a+4>>2]=c;r=C;return}function bc(a,b,c,d){a=a|0;b=b|0;c=c|0;d=d|0;var e=Pa,f=0,g=0,h=Pa,i=0,j=0,l=Pa,m=Pa,n=Pa,p=0,q=Pa,s=Pa,t=Pa,u=Pa,v=Pa,w=Pa,x=0,y=0,z=0,A=0,B=0,C=0,D=Pa;C=r;r=r+48|0;z=C+24|0;x=C+12|0;y=C;i=a+48|0;f=k[b>>2]|0;b=f+1|0;do if((f|0)>=0){b=((b|0)%3|0|0)==0?f+-2|0:b;if(!((f>>>0)%3|0)){g=f+2|0;break}else{g=f+-1|0;break}}else{g=f;b=f}while(0);f=k[(k[i>>2]|0)+28>>2]|0;b=k[f+(b<<2)>>2]|0;f=k[f+(g<<2)>>2]|0;g=k[a+52>>2]|0;i=k[g+4>>2]|0;j=k[g>>2]|0;if(i-j>>2>>>0<=b>>>0)lk(g);p=k[j+(b<<2)>>2]|0;if(i-j>>2>>>0<=f>>>0)lk(g);f=k[j+(f<<2)>>2]|0;b=(p|0)<(d|0);if(!(b&(f|0)<(d|0))){do if(b){i=a+72|0;b=k[i>>2]|0;g=$(b,p)|0}else{if((d|0)>0){i=a+72|0;b=k[i>>2]|0;g=$(b,d+-1|0)|0;break}g=a+72|0;if((k[g>>2]|0)<=0){r=C;return}f=k[a+68>>2]|0;b=0;do{k[f+(b<<2)>>2]=0;b=b+1|0}while((b|0)<(k[g>>2]|0));r=C;return}while(0);if((b|0)<=0){r=C;return}f=k[a+68>>2]|0;b=0;do{k[f+(b<<2)>>2]=k[c+(b+g<<2)>>2];b=b+1|0}while((b|0)<(k[i>>2]|0));r=C;return}b=a+72|0;j=k[b>>2]|0;i=$(j,p)|0;t=da(k[c+(i<<2)>>2]|0);u=da(k[c+(i+1<<2)>>2]|0);j=$(j,f)|0;v=da(k[c+(j<<2)>>2]|0);w=da(k[c+(j+1<<2)>>2]|0);if(!(v!=t|w!=u)){a=k[a+68>>2]|0;k[a>>2]=~~v;k[a+4>>2]=~~w;r=C;return}nf(z,a,d);nf(x,a,p);nf(y,a,f);q=da(o[y>>2]);l=da(o[x>>2]);q=da(q-l);s=da(o[y+4>>2]);m=da(o[x+4>>2]);s=da(s-m);h=da(o[y+8>>2]);e=da(o[x+8>>2]);h=da(h-e);l=da(da(o[z>>2])-l);m=da(da(o[z+4>>2])-m);e=da(da(o[z+8>>2])-e);n=da(da(da(da(q*q)+da(0.0))+da(s*s))+da(h*h));if(n>da(0.0)?1:(k[a+88>>2]|0)<258){D=da(da(da(da(da(q*l)+da(0.0))+da(s*m))+da(h*e))/n);q=da(l-da(q*D));s=da(m-da(s*D));e=da(e-da(h*D));h=D;e=da(P(da(da(da(e*e)+da(da(s*s)+da(da(q*q)+da(0.0))))/n)))}else{h=da(0.0);e=da(0.0)}m=da(v-t);l=da(w-u);D=da(t+da(m*h));m=da(m*e);w=da(u+da(l*h));l=da(l*e);h=da(D-l);e=da(w+m);l=da(D+l);m=da(w-m);b=$(k[b>>2]|0,d)|0;w=da(k[c+(b<<2)>>2]|0);D=da(k[c+(b+1<<2)>>2]|0);u=da(w-h);v=da(D-e);w=da(w-l);D=da(D-m);c=da(da(da(u*u)+da(0.0))+da(v*v))>2]|0;i=k[a+84>>2]|0;j=(g|0)==(i<<5|0);if(c){do if(j)if((g+1|0)<0)mk(b);else{A=i<<6;c=g+32&-32;Wf(b,i<<5>>>0<1073741823?(A>>>0>>0?c:A):2147483647);A=k[f>>2]|0;break}else A=g;while(0);k[f>>2]=A+1;c=(k[b>>2]|0)+(A>>>5<<2)|0;k[c>>2]=k[c>>2]|1<<(A&31)}else{do if(j)if((g+1|0)<0)mk(b);else{B=i<<6;c=g+32&-32;Wf(b,i<<5>>>0<1073741823?(B>>>0>>0?c:B):2147483647);B=k[f>>2]|0;break}else B=g;while(0);k[f>>2]=B+1;c=(k[b>>2]|0)+(B>>>5<<2)|0;k[c>>2]=k[c>>2]&~(1<<(B&31));h=l;e=m}c=~~+N(+(+h+.5));a=k[a+68>>2]|0;k[a>>2]=c;c=~~+N(+(+e+.5));k[a+4>>2]=c;r=C;return}function cc(a,b,c,d){a=a|0;b=b|0;c=c|0;d=d|0;var e=0,f=0,g=0,h=0,j=0,m=0,n=0,o=0,p=0,q=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,B=0,C=0,D=0,E=0,F=0;F=r;r=r+64|0;E=F;p=E;q=p+40|0;do{k[p>>2]=0;p=p+4|0}while((p|0)<(q|0));a:do if(((_d(E,c)|0?(e=c+8|0,o=k[e>>2]|0,e=k[e+4>>2]|0,f=c+16|0,h=f,g=k[h>>2]|0,h=Bj(g|0,k[h+4>>2]|0,8,0)|0,j=M,!((e|0)<(j|0)|(e|0)==(j|0)&o>>>0>>0)):0)?(m=k[c>>2]|0,n=m+g|0,u=n,u=l[u>>0]|l[u+1>>0]<<8|l[u+2>>0]<<16|l[u+3>>0]<<24,n=n+4|0,n=l[n>>0]|l[n+1>>0]<<8|l[n+2>>0]<<16|l[n+3>>0]<<24,D=f,k[D>>2]=h,k[D+4>>2]=j,D=nj(o|0,e|0,h|0,j|0)|0,C=M,!(n>>>0>C>>>0|(n|0)==(C|0)&u>>>0>D>>>0)):0)?(v=m+h|0,C=Bj(u|0,n|0,h|0,j|0)|0,D=f,k[D>>2]=C,k[D+4>>2]=M,(u|0)>=1):0){D=E+40|0;k[D>>2]=v;e=u+-1|0;f=v+e|0;switch((l[f>>0]|0)>>>6&3){case 0:{k[E+44>>2]=e;t=l[f>>0]&63;s=E+48|0;k[s>>2]=t;break}case 1:{if((u|0)<2){j=0;break a}k[E+44>>2]=u+-2;t=v+u+-2|0;t=l[t+1>>0]<<8&16128|l[t>>0];s=E+48|0;k[s>>2]=t;break}case 2:{if((u|0)<3){j=0;break a}k[E+44>>2]=u+-3;t=v+u+-3|0;t=l[t+1>>0]<<8|l[t>>0]|l[t+2>>0]<<16&4128768;s=E+48|0;k[s>>2]=t;break}case 3:{k[E+44>>2]=u+-4;t=v+u+-4|0;t=l[t+2>>0]<<16|l[t+3>>0]<<24&1056964608|l[t+1>>0]<<8|l[t>>0];s=E+48|0;k[s>>2]=t;break}default:{}}C=t+16384|0;k[s>>2]=C;if(C>>>0<=4194303){e=(a|0)>0;b:do if(e){if(!(k[E+12>>2]|0)){j=0;break a}lf(c,0,0)|0;if(e){u=E+48|0;v=E+44|0;w=E+16|0;x=E+28|0;y=(b|0)>0;C=c+36|0;z=c+32|0;A=c+24|0;B=c+28|0;t=0;e=0;f=k[u>>2]|0;while(1){c:do if(f>>>0<16384){g=k[v>>2]|0;do{if((g|0)<=0)break c;g=g+-1|0;k[v>>2]=g;f=l[(k[D>>2]|0)+g>>0]|f<<8;k[u>>2]=f}while(f>>>0<16384)}while(0);p=f&4095;s=k[(k[w>>2]|0)+(p<<2)>>2]|0;q=k[x>>2]|0;f=($(k[q+(s<<3)>>2]|0,f>>>12)|0)+p-(k[q+(s<<3)+4>>2]|0)|0;k[u>>2]=f;if(y){q=(s|0)>0;if((s|0)<=-1){e=33;break}if((s|0)<33)p=0;else{e=32;break}while(1){if(!(i[C>>0]|0)){j=0;break a}if(q){n=k[A>>2]|0;o=k[B>>2]|0;g=0;m=0;j=k[z>>2]|0;do{h=n+(j>>>3)|0;if(h>>>0>>0){h=(l[h>>0]|0)>>>(j&7)&1;j=j+1|0;k[z>>2]=j}else h=0;g=h<>2]=g;p=p+1|0;if((p|0)>=(b|0)){e=h;break}else e=h}}t=t+b|0;if((t|0)>=(a|0))break b}if((e|0)==32){if(!(i[C>>0]|0)){j=0;break a}Ka(6226,6199,113,6218)}else if((e|0)==33){if(!(i[C>>0]|0)){j=0;break a}Ka(6184,6199,112,6218)}}}else lf(c,0,0)|0;while(0);ni(c);j=1}else j=0}else j=0;while(0);e=k[E+28>>2]|0;f=e;if(e|0){g=E+32|0;h=k[g>>2]|0;if((h|0)!=(e|0))k[g>>2]=h+(~((h+-8-f|0)>>>3)<<3);gl(e)}e=k[E+16>>2]|0;f=e;if(e|0){g=E+20|0;h=k[g>>2]|0;if((h|0)!=(e|0))k[g>>2]=h+(~((h+-4-f|0)>>>2)<<2);gl(e)}g=k[E>>2]|0;if(!g){r=F;return j|0}e=E+4|0;f=k[e>>2]|0;if((f|0)!=(g|0))k[e>>2]=f+(~((f+-4-g|0)>>>2)<<2);gl(g);r=F;return j|0}function dc(a){a=a|0;var b=0,c=0,d=0,e=0,f=0,g=0,h=0,i=0,j=0,l=0,m=0,n=0,o=0;o=r;r=r+32|0;i=o+4|0;h=o;b=a+16|0;c=k[b>>2]|0;if(c>>>0>127){k[b>>2]=c+-128;l=a+4|0;j=k[l>>2]|0;n=k[j>>2]|0;j=j+4|0;k[l>>2]=j;m=a+8|0;h=k[m>>2]|0;i=a+12|0;g=k[i>>2]|0;b=g;f=h;do if((h|0)==(g|0)){c=k[a>>2]|0;d=c;if(j>>>0>c>>>0){b=j;d=((b-d>>2)+1|0)/-2|0;e=j+(d<<2)|0;b=f-b|0;c=b>>2;if(!c)b=j;else{ti(e|0,j|0,b|0)|0;b=k[l>>2]|0}a=e+(c<<2)|0;k[m>>2]=a;k[l>>2]=b+(d<<2);b=a;break}b=b-d>>1;b=(b|0)==0?1:b;if(b>>>0>1073741823){o=Ma(4)|0;Tk(o);xa(o|0,856,71)}e=Si(b<<2)|0;f=e;d=e+(b>>>2<<2)|0;g=d;e=e+(b<<2)|0;if((j|0)==(h|0))b=g;else{b=g;c=j;do{k[d>>2]=k[c>>2];d=b+4|0;b=d;c=c+4|0}while((c|0)!=(h|0));c=k[a>>2]|0}k[a>>2]=f;k[l>>2]=g;k[m>>2]=b;k[i>>2]=e;if(c){gl(c);b=k[m>>2]|0}}else b=h;while(0);k[b>>2]=n;k[m>>2]=(k[m>>2]|0)+4;r=o;return}n=a+8|0;b=k[n>>2]|0;m=a+4|0;e=b-(k[m>>2]|0)|0;l=a+12|0;c=k[l>>2]|0;d=c-(k[a>>2]|0)|0;if(e>>>0>=d>>>0){b=d>>1;b=(b|0)==0?1:b;k[i+12>>2]=0;k[i+16>>2]=a+12;if(b>>>0>1073741823){o=Ma(4)|0;Tk(o);xa(o|0,856,71)}j=Si(b<<2)|0;k[i>>2]=j;f=j+(e>>2<<2)|0;g=i+8|0;k[g>>2]=f;e=i+4|0;k[e>>2]=f;f=i+12|0;k[f>>2]=j+(b<<2);b=Si(4096)|0;k[h>>2]=b;af(i,h);b=k[n>>2]|0;while(1){d=k[m>>2]|0;if((b|0)==(d|0))break;j=b+-4|0;Ue(i,j);b=j}c=k[a>>2]|0;k[a>>2]=k[i>>2];k[i>>2]=c;k[m>>2]=k[e>>2];k[e>>2]=d;b=k[n>>2]|0;k[n>>2]=k[g>>2];k[g>>2]=b;a=k[l>>2]|0;k[l>>2]=k[f>>2];k[f>>2]=a;if((b|0)!=(d|0))k[g>>2]=b+(~((b+-4-d|0)>>>2)<<2);if(c|0)gl(c);r=o;return}if((c|0)!=(b|0)){n=Si(4096)|0;k[i>>2]=n;af(a,i);r=o;return}j=Si(4096)|0;k[i>>2]=j;Ue(a,i);i=k[m>>2]|0;j=k[i>>2]|0;i=i+4|0;k[m>>2]=i;h=k[n>>2]|0;g=k[l>>2]|0;b=g;f=h;do if((h|0)==(g|0)){c=k[a>>2]|0;d=c;if(i>>>0>c>>>0){b=i;d=((b-d>>2)+1|0)/-2|0;e=i+(d<<2)|0;b=f-b|0;c=b>>2;if(!c)b=i;else{ti(e|0,i|0,b|0)|0;b=k[m>>2]|0}a=e+(c<<2)|0;k[n>>2]=a;k[m>>2]=b+(d<<2);b=a;break}b=b-d>>1;b=(b|0)==0?1:b;if(b>>>0>1073741823){o=Ma(4)|0;Tk(o);xa(o|0,856,71)}e=Si(b<<2)|0;f=e;d=e+(b>>>2<<2)|0;g=d;e=e+(b<<2)|0;if((i|0)==(h|0))b=g;else{b=g;c=i;do{k[d>>2]=k[c>>2];d=b+4|0;b=d;c=c+4|0}while((c|0)!=(h|0));c=k[a>>2]|0}k[a>>2]=f;k[m>>2]=g;k[n>>2]=b;k[l>>2]=e;if(c){gl(c);b=k[n>>2]|0}}else b=h;while(0);k[b>>2]=j;k[n>>2]=(k[n>>2]|0)+4;r=o;return}function ec(a,b){a=a|0;b=b|0;var c=0,d=0,e=0,f=0,g=0,h=0,j=0,l=0,m=0,n=0,o=0,p=0,q=0,s=0,t=0,u=0,v=0,w=0,x=0;x=r;r=r+32|0;s=x;t=x+24|0;o=x+28|0;u=x+12|0;p=x+8|0;v=k[a>>2]|0;w=v+8|0;c=k[v>>2]|0;v=k[v+4>>2]|0;w=Bj(c|0,v|0,k[w>>2]|0,k[w+4>>2]|0)|0;m=M;m=Bj((w|0)==0&(m|0)==0&1|0,0,w|0,m|0)|0;m=~~((+(c>>>0)+4294967296.0*+(v>>>0))/(+(m>>>0)+4294967296.0*+(M>>>0))*256.0+.5)>>>0;m=m>>>0<255?m:255;i[o>>0]=((m&255)<<24>>24==0&1)+m;m=a+12|0;v=a+16|0;c=((k[v>>2]|0)-(k[m>>2]|0)<<1)+64|0;k[u>>2]=0;w=u+4|0;k[w>>2]=0;k[u+8>>2]=0;if(!c)n=0;else{if((c|0)<0)mk(u);d=Si(c)|0;k[w>>2]=d;k[u>>2]=d;k[u+8>>2]=d+c;do{i[d>>0]=0;d=(k[w>>2]|0)+1|0;k[w>>2]=d;c=c+-1|0}while((c|0)!=0);n=k[u>>2]|0}q=a+28|0;c=(k[q>>2]|0)+-1|0;if((c|0)>-1){j=a+24|0;e=4096;d=0;do{h=i[o>>0]|0;f=256-(h&255)|0;g=(k[j>>2]&1<>>0>=h<<12>>>0){i[n+d>>0]=e;d=d+1|0;e=e>>>8}Pi(k[920+(h<<3)>>2]|0,0,e|0,0)|0;e=e+(g?0:f&255)+($((M+e|0)>>>(k[920+(h<<3)+4>>2]|0),256-h|0)|0)|0;c=c+-1|0}while((c|0)>-1);c=e}else{c=4096;d=0}e=k[v>>2]|0;if((e|0)==(k[m>>2]|0))f=c;else{do{e=e+-4|0;l=k[e>>2]|0;j=31;while(1){h=i[o>>0]|0;f=256-(h&255)|0;g=(1<>>0>=h<<12>>>0){i[n+d>>0]=c;d=d+1|0;c=c>>>8}Pi(k[920+(h<<3)>>2]|0,0,c|0,0)|0;c=c+(g?0:f&255)+($((M+c|0)>>>(k[920+(h<<3)+4>>2]|0),256-h|0)|0)|0;if((j|0)<=0)break;else j=j+-1|0}}while((e|0)!=(k[m>>2]|0));f=c}if(f>>>0<=4095)Ka(6007,6037,132,6050);if(f>>>0>=1048576)Ka(6064,6037,133,6050);e=f+-4096|0;do if(e>>>0>=64){c=n+d|0;if(e>>>0<16384){f=f+12288|0;i[c>>0]=f;i[c+1>>0]=f>>>8;f=d+2|0;break}else{f=f+8384512|0;i[c>>0]=f;i[c+1>>0]=f>>>8;i[c+2>>0]=f>>>16;f=d+3|0;break}}else{i[n+d>>0]=e;f=d+1|0}while(0);c=b+16|0;e=c;d=k[e>>2]|0;e=k[e+4>>2]|0;if(!((e|0)>0|(e|0)==0&d>>>0>0)){k[t>>2]=k[b+4>>2];k[s>>2]=k[t>>2];je(b,s,o,o+1|0)|0;d=c;e=k[d+4>>2]|0;d=k[d>>2]|0}k[p>>2]=f;if(!((e|0)>0|(e|0)==0&d>>>0>0)){k[t>>2]=k[b+4>>2];k[s>>2]=k[t>>2];je(b,s,p,p+4|0)|0;d=c;e=k[d+4>>2]|0;d=k[d>>2]|0}c=k[u>>2]|0;if(!((e|0)>0|(e|0)==0&d>>>0>0)){k[t>>2]=k[b+4>>2];k[s>>2]=k[t>>2];je(b,s,c,c+f|0)|0}c=s;k[c>>2]=0;k[c+4>>2]=0;De(a,2,s);c=k[a+12>>2]|0;d=k[v>>2]|0;if((d|0)!=(c|0))k[v>>2]=d+(~((d+-4-c|0)>>>2)<<2);k[a+24>>2]=0;k[q>>2]=0;c=k[u>>2]|0;if(!c){r=x;return}if((k[w>>2]|0)!=(c|0))k[w>>2]=c;gl(c);r=x;return}function fc(a,b,c,d){a=a|0;b=b|0;c=c|0;d=d|0;var e=0,f=0,g=Pa,h=0,i=Pa,j=0,l=Pa,m=Pa,n=Pa,p=Pa,q=Pa,s=0,t=Pa,u=Pa,v=Pa,w=Pa,x=0,y=0,z=0,A=0,B=Pa;A=r;r=r+48|0;z=A+24|0;x=A+12|0;y=A;f=a+24|0;e=k[b>>2]|0;b=e+1|0;if((e|0)>=0){b=((b|0)%3|0|0)==0?e+-2|0:b;e=e+(((e>>>0)%3|0|0)==0?2:-1)|0;if((b|0)<0)b=-1073741824;else b=k[(k[k[f>>2]>>2]|0)+(((b>>>0)/3|0)*12|0)+(((b>>>0)%3|0)<<2)>>2]|0;if((e|0)<0)j=-1073741824;else j=k[(k[k[f>>2]>>2]|0)+(((e>>>0)/3|0)*12|0)+(((e>>>0)%3|0)<<2)>>2]|0}else{j=-1073741824;b=-1073741824}e=k[a+28>>2]|0;f=k[e+4>>2]|0;h=k[e>>2]|0;if(f-h>>2>>>0<=b>>>0)lk(e);s=k[h+(b<<2)>>2]|0;if(f-h>>2>>>0<=j>>>0)lk(e);e=k[h+(j<<2)>>2]|0;b=(s|0)<(d|0);if(b&(e|0)<(d|0)){j=k[a+48>>2]|0;h=$(j,s)|0;u=da(k[c+(h<<2)>>2]|0);v=da(k[c+(h+1<<2)>>2]|0);j=$(j,e)|0;w=da(k[c+(j<<2)>>2]|0);t=da(k[c+(j+1<<2)>>2]|0);if(!(w!=u|t!=v)){a=k[a+44>>2]|0;k[a>>2]=~~w;k[a+4>>2]=~~t;r=A;return}mf(z,a,d);mf(x,a,s);mf(y,a,e);p=da(o[y>>2]);l=da(o[x>>2]);p=da(p-l);q=da(o[y+4>>2]);m=da(o[x+4>>2]);q=da(q-m);i=da(o[y+8>>2]);g=da(o[x+8>>2]);i=da(i-g);l=da(da(o[z>>2])-l);m=da(da(o[z+4>>2])-m);g=da(da(o[z+8>>2])-g);n=da(da(da(da(p*p)+da(0.0))+da(q*q))+da(i*i));if(n>da(0.0)?1:(k[a+64>>2]|0)<258){B=da(da(da(da(da(p*l)+da(0.0))+da(q*m))+da(i*g))/n);p=da(l-da(p*B));q=da(m-da(q*B));g=da(g-da(i*B));i=B;g=da(P(da(da(da(g*g)+da(da(q*q)+da(da(p*p)+da(0.0))))/n)))}else{i=da(0.0);g=da(0.0)}B=da(w-u);w=da(t-v);t=da(u+da(B*i));B=da(B*g);u=da(v+da(w*i));v=da(w*g);c=a+56|0;y=(k[c>>2]|0)+-1|0;z=(1<<(y&31)&k[(k[a+52>>2]|0)+(y>>>5<<2)>>2]|0)==0;k[c>>2]=y;w=da(-v);w=da(t+(z?v:w));v=da(-B);B=da(u+(z?v:B));z=~~+N(+(+w+.5));a=k[a+44>>2]|0;k[a>>2]=z;z=~~+N(+(+B+.5));k[a+4>>2]=z;r=A;return}do if(b){h=a+48|0;b=k[h>>2]|0;f=$(b,s)|0}else{if((d|0)>0){h=a+48|0;b=k[h>>2]|0;f=$(b,d+-1|0)|0;break}f=a+48|0;if((k[f>>2]|0)<=0){r=A;return}e=k[a+44>>2]|0;b=0;do{k[e+(b<<2)>>2]=0;b=b+1|0}while((b|0)<(k[f>>2]|0));r=A;return}while(0);if((b|0)<=0){r=A;return}e=k[a+44>>2]|0;b=0;do{k[e+(b<<2)>>2]=k[c+(b+f<<2)>>2];b=b+1|0}while((b|0)<(k[h>>2]|0));r=A;return}function gc(a,b,c,d){a=a|0;b=b|0;c=c|0;d=d|0;var e=0,f=0,g=Pa,h=0,i=Pa,j=0,l=Pa,m=Pa,n=Pa,p=Pa,q=Pa,s=0,t=Pa,u=Pa,v=Pa,w=Pa,x=0,y=0,z=0,A=0,B=Pa;A=r;r=r+48|0;z=A+24|0;x=A+12|0;y=A;f=a+48|0;e=k[b>>2]|0;b=e+1|0;if((e|0)>=0){b=((b|0)%3|0|0)==0?e+-2|0:b;e=e+(((e>>>0)%3|0|0)==0?2:-1)|0;if((b|0)<0)b=-1073741824;else b=k[(k[k[f>>2]>>2]|0)+(((b>>>0)/3|0)*12|0)+(((b>>>0)%3|0)<<2)>>2]|0;if((e|0)<0)j=-1073741824;else j=k[(k[k[f>>2]>>2]|0)+(((e>>>0)/3|0)*12|0)+(((e>>>0)%3|0)<<2)>>2]|0}else{j=-1073741824;b=-1073741824}e=k[a+52>>2]|0;f=k[e+4>>2]|0;h=k[e>>2]|0;if(f-h>>2>>>0<=b>>>0)lk(e);s=k[h+(b<<2)>>2]|0;if(f-h>>2>>>0<=j>>>0)lk(e);e=k[h+(j<<2)>>2]|0;b=(s|0)<(d|0);if(b&(e|0)<(d|0)){j=k[a+72>>2]|0;h=$(j,s)|0;u=da(k[c+(h<<2)>>2]|0);v=da(k[c+(h+1<<2)>>2]|0);j=$(j,e)|0;w=da(k[c+(j<<2)>>2]|0);t=da(k[c+(j+1<<2)>>2]|0);if(!(w!=u|t!=v)){a=k[a+68>>2]|0;k[a>>2]=~~w;k[a+4>>2]=~~t;r=A;return}nf(z,a,d);nf(x,a,s);nf(y,a,e);p=da(o[y>>2]);l=da(o[x>>2]);p=da(p-l);q=da(o[y+4>>2]);m=da(o[x+4>>2]);q=da(q-m);i=da(o[y+8>>2]);g=da(o[x+8>>2]);i=da(i-g);l=da(da(o[z>>2])-l);m=da(da(o[z+4>>2])-m);g=da(da(o[z+8>>2])-g);n=da(da(da(da(p*p)+da(0.0))+da(q*q))+da(i*i));if(n>da(0.0)?1:(k[a+88>>2]|0)<258){B=da(da(da(da(da(p*l)+da(0.0))+da(q*m))+da(i*g))/n);p=da(l-da(p*B));q=da(m-da(q*B));g=da(g-da(i*B));i=B;g=da(P(da(da(da(g*g)+da(da(q*q)+da(da(p*p)+da(0.0))))/n)))}else{i=da(0.0);g=da(0.0)}B=da(w-u);w=da(t-v);t=da(u+da(B*i));B=da(B*g);u=da(v+da(w*i));v=da(w*g);c=a+80|0;y=(k[c>>2]|0)+-1|0;z=(1<<(y&31)&k[(k[a+76>>2]|0)+(y>>>5<<2)>>2]|0)==0;k[c>>2]=y;w=da(-v);w=da(t+(z?v:w));v=da(-B);B=da(u+(z?v:B));z=~~+N(+(+w+.5));a=k[a+68>>2]|0;k[a>>2]=z;z=~~+N(+(+B+.5));k[a+4>>2]=z;r=A;return}do if(b){h=a+72|0;b=k[h>>2]|0;f=$(b,s)|0}else{if((d|0)>0){h=a+72|0;b=k[h>>2]|0;f=$(b,d+-1|0)|0;break}f=a+72|0;if((k[f>>2]|0)<=0){r=A;return}e=k[a+68>>2]|0;b=0;do{k[e+(b<<2)>>2]=0;b=b+1|0}while((b|0)<(k[f>>2]|0));r=A;return}while(0);if((b|0)<=0){r=A;return}e=k[a+68>>2]|0;b=0;do{k[e+(b<<2)>>2]=k[c+(b+f<<2)>>2];b=b+1|0}while((b|0)<(k[h>>2]|0));r=A;return}function hc(a,b,c){a=a|0;b=b|0;c=c|0;var d=0,e=0,f=0,g=0,h=0,j=0,m=0,n=0;n=r;r=r+32|0;d=n+24|0;e=n+20|0;f=n+16|0;g=n+12|0;h=n+8|0;j=n+4|0;m=n;if(!c){c=0;r=n;return c|0}switch(k[a+28>>2]|0){case 9:{d=k[b>>2]|0;switch(i[a+24>>0]|0){case 1:{m=a+48|0;j=k[m>>2]|0;m=k[m+4>>2]|0;h=a+40|0;a=(Bj(Pi(k[h>>2]|0,k[h+4>>2]|0,d|0,((d|0)<0)<<31>>31|0)|0,M|0,j|0,m|0)|0)+(k[k[a>>2]>>2]|0)|0;k[c>>2]=l[a>>0]|l[a+1>>0]<<8|l[a+2>>0]<<16|l[a+3>>0]<<24;o[c+4>>2]=da(0.0);c=1;r=n;return c|0}case 2:{m=a+48|0;j=k[m>>2]|0;m=k[m+4>>2]|0;h=a+40|0;a=(Bj(Pi(k[h>>2]|0,k[h+4>>2]|0,d|0,((d|0)<0)<<31>>31|0)|0,M|0,j|0,m|0)|0)+(k[k[a>>2]>>2]|0)|0;m=a;a=a+4|0;a=l[a>>0]|l[a+1>>0]<<8|l[a+2>>0]<<16|l[a+3>>0]<<24;k[c>>2]=l[m>>0]|l[m+1>>0]<<8|l[m+2>>0]<<16|l[m+3>>0]<<24;k[c+4>>2]=a;c=1;r=n;return c|0}case 3:{j=a+48|0;m=k[j>>2]|0;j=k[j+4>>2]|0;h=a+40|0;a=(Bj(Pi(k[h>>2]|0,k[h+4>>2]|0,d|0,((d|0)<0)<<31>>31|0)|0,M|0,m|0,j|0)|0)+(k[k[a>>2]>>2]|0)|0;j=a;j=l[j>>0]|l[j+1>>0]<<8|l[j+2>>0]<<16|l[j+3>>0]<<24;a=a+4|0;a=l[a>>0]|l[a+1>>0]<<8|l[a+2>>0]<<16|l[a+3>>0]<<24;m=c;i[m>>0]=j;i[m+1>>0]=j>>8;i[m+2>>0]=j>>16;i[m+3>>0]=j>>24;c=c+4|0;i[c>>0]=a;i[c+1>>0]=a>>8;i[c+2>>0]=a>>16;i[c+3>>0]=a>>24;c=1;r=n;return c|0}case 4:{j=a+48|0;m=k[j>>2]|0;j=k[j+4>>2]|0;h=a+40|0;a=(Bj(Pi(k[h>>2]|0,k[h+4>>2]|0,d|0,((d|0)<0)<<31>>31|0)|0,M|0,m|0,j|0)|0)+(k[k[a>>2]>>2]|0)|0;j=a;j=l[j>>0]|l[j+1>>0]<<8|l[j+2>>0]<<16|l[j+3>>0]<<24;a=a+4|0;a=l[a>>0]|l[a+1>>0]<<8|l[a+2>>0]<<16|l[a+3>>0]<<24;m=c;i[m>>0]=j;i[m+1>>0]=j>>8;i[m+2>>0]=j>>16;i[m+3>>0]=j>>24;c=c+4|0;i[c>>0]=a;i[c+1>>0]=a>>8;i[c+2>>0]=a>>16;i[c+3>>0]=a>>24;c=1;r=n;return c|0}default:{c=0;r=n;return c|0}}}case 2:{k[e>>2]=k[b>>2];k[d>>2]=k[e>>2];c=Jd(a,d,c)|0;r=n;return c|0}case 1:{k[f>>2]=k[b>>2];k[d>>2]=k[f>>2];c=Id(a,d,c)|0;r=n;return c|0}case 4:{k[g>>2]=k[b>>2];k[d>>2]=k[g>>2];c=qd(a,d,c)|0;r=n;return c|0}case 3:{k[h>>2]=k[b>>2];k[d>>2]=k[h>>2];c=md(a,d,c)|0;r=n;return c|0}case 6:{k[j>>2]=k[b>>2];k[d>>2]=k[j>>2];c=gd(a,d,c)|0;r=n;return c|0}case 5:{k[m>>2]=k[b>>2];k[d>>2]=k[m>>2];c=id(a,d,c)|0;r=n;return c|0}default:{c=0;r=n;return c|0}}return 0}function ic(a,b,c,d,e){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;var f=0,g=0,h=0,i=0,j=0;g=k[a+4>>2]|0;if((c|0)<=-1)Ka(12883,12899,54,12927);f=k[g+4>>2]|0;if(((k[g+8>>2]|0)-f>>2|0)<=(c|0))Ka(12937,12899,55,12927);i=k[f+(c<<2)>>2]|0;if(!((b+-1|0)>>>0<4&(Va[k[(k[a>>2]|0)+8>>2]&127](a)|0)==1)){d=0;return d|0}h=Va[k[(k[a>>2]|0)+36>>2]&127](a)|0;j=Za[k[(k[a>>2]|0)+44>>2]&63](a,c)|0;if((h|0)==0|(j|0)==0){d=0;return d|0}f=Za[k[(k[a>>2]|0)+40>>2]&63](a,c)|0;g=k[a+28>>2]|0;a=j+12|0;if(!f)switch(b|0){case 1:{e=Si(36)|0;k[e+4>>2]=i;i=e+8|0;k[i>>2]=k[d>>2];k[i+4>>2]=k[d+4>>2];k[i+8>>2]=k[d+8>>2];k[e+20>>2]=g;k[e+24>>2]=h;k[e+28>>2]=a;k[e+32>>2]=j;k[e>>2]=4280;d=e;return d|0}case 2:{e=Si(36)|0;k[e+4>>2]=i;i=e+8|0;k[i>>2]=k[d>>2];k[i+4>>2]=k[d+4>>2];k[i+8>>2]=k[d+8>>2];k[e+20>>2]=g;k[e+24>>2]=h;k[e+28>>2]=a;k[e+32>>2]=j;k[e>>2]=4344;d=e;return d|0}case 4:{c=Si(88)|0;k[c+4>>2]=i;f=c+8|0;k[f>>2]=k[d>>2];k[f+4>>2]=k[d+4>>2];k[f+8>>2]=k[d+8>>2];k[c+20>>2]=g;k[c+24>>2]=h;k[c+28>>2]=a;k[c+32>>2]=j;k[c>>2]=4408;f=c+36|0;g=f+52|0;do{k[f>>2]=0;f=f+4|0}while((f|0)<(g|0));d=c;return d|0}case 3:{b=Si(68)|0;k[b+4>>2]=i;i=b+8|0;k[i>>2]=k[d>>2];k[i+4>>2]=k[d+4>>2];k[i+8>>2]=k[d+8>>2];k[b+20>>2]=g;k[b+24>>2]=h;k[b+28>>2]=a;k[b+32>>2]=j;k[b>>2]=4472;d=b+36|0;k[d>>2]=0;k[d+4>>2]=0;k[d+8>>2]=0;k[d+12>>2]=0;k[d+16>>2]=0;k[d+20>>2]=0;k[d+24>>2]=0;k[b+64>>2]=e&65535;d=b;return d|0}default:{d=0;return d|0}}else switch(b|0){case 1:{e=Si(36)|0;k[e+4>>2]=i;i=e+8|0;k[i>>2]=k[d>>2];k[i+4>>2]=k[d+4>>2];k[i+8>>2]=k[d+8>>2];k[e+20>>2]=g;k[e+24>>2]=f;k[e+28>>2]=a;k[e+32>>2]=j;k[e>>2]=4024;d=e;return d|0}case 2:{e=Si(36)|0;k[e+4>>2]=i;i=e+8|0;k[i>>2]=k[d>>2];k[i+4>>2]=k[d+4>>2];k[i+8>>2]=k[d+8>>2];k[e+20>>2]=g;k[e+24>>2]=f;k[e+28>>2]=a;k[e+32>>2]=j;k[e>>2]=4088;d=e;return d|0}case 4:{c=Si(88)|0;k[c+4>>2]=i;e=c+8|0;k[e>>2]=k[d>>2];k[e+4>>2]=k[d+4>>2];k[e+8>>2]=k[d+8>>2];k[c+20>>2]=g;k[c+24>>2]=f;k[c+28>>2]=a;k[c+32>>2]=j;k[c>>2]=4152;f=c+36|0;g=f+52|0;do{k[f>>2]=0;f=f+4|0}while((f|0)<(g|0));d=c;return d|0}case 3:{b=Si(68)|0;k[b+4>>2]=i;i=b+8|0;k[i>>2]=k[d>>2];k[i+4>>2]=k[d+4>>2];k[i+8>>2]=k[d+8>>2];k[b+20>>2]=g;k[b+24>>2]=f;k[b+28>>2]=a;k[b+32>>2]=j;k[b>>2]=4216;d=b+36|0;k[d>>2]=0;k[d+4>>2]=0;k[d+8>>2]=0;k[d+12>>2]=0;k[d+16>>2]=0;k[d+20>>2]=0;k[d+24>>2]=0;k[b+64>>2]=e&65535;d=b;return d|0}default:{d=0;return d|0}}return 0}function jc(a,b,c,d,e){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;var f=0,g=0,h=0,i=0,j=0;g=k[a+4>>2]|0;if((c|0)<=-1)Ka(12883,12899,54,12927);f=k[g+4>>2]|0;if(((k[g+8>>2]|0)-f>>2|0)<=(c|0))Ka(12937,12899,55,12927);i=k[f+(c<<2)>>2]|0;if(!((b+-1|0)>>>0<4&(Va[k[(k[a>>2]|0)+8>>2]&127](a)|0)==1)){d=0;return d|0}h=Va[k[(k[a>>2]|0)+36>>2]&127](a)|0;j=Za[k[(k[a>>2]|0)+44>>2]&63](a,c)|0;if((h|0)==0|(j|0)==0){d=0;return d|0}f=Za[k[(k[a>>2]|0)+40>>2]&63](a,c)|0;g=k[a+28>>2]|0;a=j+12|0;if(!f)switch(b|0){case 1:{e=Si(36)|0;k[e+4>>2]=i;i=e+8|0;k[i>>2]=k[d>>2];k[i+4>>2]=k[d+4>>2];k[i+8>>2]=k[d+8>>2];k[e+20>>2]=g;k[e+24>>2]=h;k[e+28>>2]=a;k[e+32>>2]=j;k[e>>2]=4856;d=e;return d|0}case 2:{e=Si(36)|0;k[e+4>>2]=i;i=e+8|0;k[i>>2]=k[d>>2];k[i+4>>2]=k[d+4>>2];k[i+8>>2]=k[d+8>>2];k[e+20>>2]=g;k[e+24>>2]=h;k[e+28>>2]=a;k[e+32>>2]=j;k[e>>2]=4920;d=e;return d|0}case 4:{c=Si(88)|0;k[c+4>>2]=i;f=c+8|0;k[f>>2]=k[d>>2];k[f+4>>2]=k[d+4>>2];k[f+8>>2]=k[d+8>>2];k[c+20>>2]=g;k[c+24>>2]=h;k[c+28>>2]=a;k[c+32>>2]=j;k[c>>2]=4984;f=c+36|0;g=f+52|0;do{k[f>>2]=0;f=f+4|0}while((f|0)<(g|0));d=c;return d|0}case 3:{b=Si(68)|0;k[b+4>>2]=i;i=b+8|0;k[i>>2]=k[d>>2];k[i+4>>2]=k[d+4>>2];k[i+8>>2]=k[d+8>>2];k[b+20>>2]=g;k[b+24>>2]=h;k[b+28>>2]=a;k[b+32>>2]=j;k[b>>2]=5048;d=b+36|0;k[d>>2]=0;k[d+4>>2]=0;k[d+8>>2]=0;k[d+12>>2]=0;k[d+16>>2]=0;k[d+20>>2]=0;k[d+24>>2]=0;k[b+64>>2]=e&65535;d=b;return d|0}default:{d=0;return d|0}}else switch(b|0){case 1:{e=Si(36)|0;k[e+4>>2]=i;i=e+8|0;k[i>>2]=k[d>>2];k[i+4>>2]=k[d+4>>2];k[i+8>>2]=k[d+8>>2];k[e+20>>2]=g;k[e+24>>2]=f;k[e+28>>2]=a;k[e+32>>2]=j;k[e>>2]=4600;d=e;return d|0}case 2:{e=Si(36)|0;k[e+4>>2]=i;i=e+8|0;k[i>>2]=k[d>>2];k[i+4>>2]=k[d+4>>2];k[i+8>>2]=k[d+8>>2];k[e+20>>2]=g;k[e+24>>2]=f;k[e+28>>2]=a;k[e+32>>2]=j;k[e>>2]=4664;d=e;return d|0}case 4:{c=Si(88)|0;k[c+4>>2]=i;e=c+8|0;k[e>>2]=k[d>>2];k[e+4>>2]=k[d+4>>2];k[e+8>>2]=k[d+8>>2];k[c+20>>2]=g;k[c+24>>2]=f;k[c+28>>2]=a;k[c+32>>2]=j;k[c>>2]=4728;f=c+36|0;g=f+52|0;do{k[f>>2]=0;f=f+4|0}while((f|0)<(g|0));d=c;return d|0}case 3:{b=Si(68)|0;k[b+4>>2]=i;i=b+8|0;k[i>>2]=k[d>>2];k[i+4>>2]=k[d+4>>2];k[i+8>>2]=k[d+8>>2];k[b+20>>2]=g;k[b+24>>2]=f;k[b+28>>2]=a;k[b+32>>2]=j;k[b>>2]=4792;d=b+36|0;k[d>>2]=0;k[d+4>>2]=0;k[d+8>>2]=0;k[d+12>>2]=0;k[d+16>>2]=0;k[d+20>>2]=0;k[d+24>>2]=0;k[b+64>>2]=e&65535;d=b;return d|0}default:{d=0;return d|0}}return 0}function kc(a,b,c,d){a=a|0;b=b|0;c=c|0;d=d|0;var e=0,f=0,g=Pa,h=0,i=Pa,j=0,l=Pa,m=Pa,n=Pa,p=Pa,q=Pa,s=0,t=Pa,u=Pa,v=Pa,w=Pa,x=0,y=0,z=0,A=0,B=Pa;A=r;r=r+48|0;z=A+24|0;x=A+12|0;y=A;h=a+24|0;e=k[b>>2]|0;b=e+1|0;do if((e|0)>=0){b=((b|0)%3|0|0)==0?e+-2|0:b;if(!((e>>>0)%3|0)){f=e+2|0;break}else{f=e+-1|0;break}}else{f=e;b=e}while(0);h=k[(k[h>>2]|0)+28>>2]|0;e=k[h+(b<<2)>>2]|0;b=k[h+(f<<2)>>2]|0;f=k[a+28>>2]|0;h=k[f+4>>2]|0;j=k[f>>2]|0;if(h-j>>2>>>0<=e>>>0)lk(f);s=k[j+(e<<2)>>2]|0;if(h-j>>2>>>0<=b>>>0)lk(f);e=k[j+(b<<2)>>2]|0;b=(s|0)<(d|0);if(b&(e|0)<(d|0)){j=k[a+48>>2]|0;h=$(j,s)|0;u=da(k[c+(h<<2)>>2]|0);v=da(k[c+(h+1<<2)>>2]|0);j=$(j,e)|0;w=da(k[c+(j<<2)>>2]|0);t=da(k[c+(j+1<<2)>>2]|0);if(!(w!=u|t!=v)){a=k[a+44>>2]|0;k[a>>2]=~~w;k[a+4>>2]=~~t;r=A;return}mf(z,a,d);mf(x,a,s);mf(y,a,e);p=da(o[y>>2]);l=da(o[x>>2]);p=da(p-l);q=da(o[y+4>>2]);m=da(o[x+4>>2]);q=da(q-m);i=da(o[y+8>>2]);g=da(o[x+8>>2]);i=da(i-g);l=da(da(o[z>>2])-l);m=da(da(o[z+4>>2])-m);g=da(da(o[z+8>>2])-g);n=da(da(da(da(p*p)+da(0.0))+da(q*q))+da(i*i));if(n>da(0.0)?1:(k[a+64>>2]|0)<258){B=da(da(da(da(da(p*l)+da(0.0))+da(q*m))+da(i*g))/n);p=da(l-da(p*B));q=da(m-da(q*B));g=da(g-da(i*B));i=B;g=da(P(da(da(da(g*g)+da(da(q*q)+da(da(p*p)+da(0.0))))/n)))}else{i=da(0.0);g=da(0.0)}B=da(w-u);w=da(t-v);t=da(u+da(B*i));B=da(B*g);u=da(v+da(w*i));v=da(w*g);c=a+56|0;y=(k[c>>2]|0)+-1|0;z=(1<<(y&31)&k[(k[a+52>>2]|0)+(y>>>5<<2)>>2]|0)==0;k[c>>2]=y;w=da(-v);w=da(t+(z?v:w));v=da(-B);B=da(u+(z?v:B));z=~~+N(+(+w+.5));a=k[a+44>>2]|0;k[a>>2]=z;z=~~+N(+(+B+.5));k[a+4>>2]=z;r=A;return}do if(b){h=a+48|0;b=k[h>>2]|0;f=$(b,s)|0}else{if((d|0)>0){h=a+48|0;b=k[h>>2]|0;f=$(b,d+-1|0)|0;break}f=a+48|0;if((k[f>>2]|0)<=0){r=A;return}e=k[a+44>>2]|0;b=0;do{k[e+(b<<2)>>2]=0;b=b+1|0}while((b|0)<(k[f>>2]|0));r=A;return}while(0);if((b|0)<=0){r=A;return}e=k[a+44>>2]|0;b=0;do{k[e+(b<<2)>>2]=k[c+(b+f<<2)>>2];b=b+1|0}while((b|0)<(k[h>>2]|0));r=A;return}function lc(a,b,c,d){a=a|0;b=b|0;c=c|0;d=d|0;var e=0,f=0,g=Pa,h=0,i=Pa,j=0,l=Pa,m=Pa,n=Pa,p=Pa,q=Pa,s=0,t=Pa,u=Pa,v=Pa,w=Pa,x=0,y=0,z=0,A=0,B=Pa;A=r;r=r+48|0;z=A+24|0;x=A+12|0;y=A;h=a+48|0;e=k[b>>2]|0;b=e+1|0;do if((e|0)>=0){b=((b|0)%3|0|0)==0?e+-2|0:b;if(!((e>>>0)%3|0)){f=e+2|0;break}else{f=e+-1|0;break}}else{f=e;b=e}while(0);h=k[(k[h>>2]|0)+28>>2]|0;e=k[h+(b<<2)>>2]|0;b=k[h+(f<<2)>>2]|0;f=k[a+52>>2]|0;h=k[f+4>>2]|0;j=k[f>>2]|0;if(h-j>>2>>>0<=e>>>0)lk(f);s=k[j+(e<<2)>>2]|0;if(h-j>>2>>>0<=b>>>0)lk(f);e=k[j+(b<<2)>>2]|0;b=(s|0)<(d|0);if(b&(e|0)<(d|0)){j=k[a+72>>2]|0;h=$(j,s)|0;u=da(k[c+(h<<2)>>2]|0);v=da(k[c+(h+1<<2)>>2]|0);j=$(j,e)|0;w=da(k[c+(j<<2)>>2]|0);t=da(k[c+(j+1<<2)>>2]|0);if(!(w!=u|t!=v)){a=k[a+68>>2]|0;k[a>>2]=~~w;k[a+4>>2]=~~t;r=A;return}nf(z,a,d);nf(x,a,s);nf(y,a,e);p=da(o[y>>2]);l=da(o[x>>2]);p=da(p-l);q=da(o[y+4>>2]);m=da(o[x+4>>2]);q=da(q-m);i=da(o[y+8>>2]);g=da(o[x+8>>2]);i=da(i-g);l=da(da(o[z>>2])-l);m=da(da(o[z+4>>2])-m);g=da(da(o[z+8>>2])-g);n=da(da(da(da(p*p)+da(0.0))+da(q*q))+da(i*i));if(n>da(0.0)?1:(k[a+88>>2]|0)<258){B=da(da(da(da(da(p*l)+da(0.0))+da(q*m))+da(i*g))/n);p=da(l-da(p*B));q=da(m-da(q*B));g=da(g-da(i*B));i=B;g=da(P(da(da(da(g*g)+da(da(q*q)+da(da(p*p)+da(0.0))))/n)))}else{i=da(0.0);g=da(0.0)}B=da(w-u);w=da(t-v);t=da(u+da(B*i));B=da(B*g);u=da(v+da(w*i));v=da(w*g);c=a+80|0;y=(k[c>>2]|0)+-1|0;z=(1<<(y&31)&k[(k[a+76>>2]|0)+(y>>>5<<2)>>2]|0)==0;k[c>>2]=y;w=da(-v);w=da(t+(z?v:w));v=da(-B);B=da(u+(z?v:B));z=~~+N(+(+w+.5));a=k[a+68>>2]|0;k[a>>2]=z;z=~~+N(+(+B+.5));k[a+4>>2]=z;r=A;return}do if(b){h=a+72|0;b=k[h>>2]|0;f=$(b,s)|0}else{if((d|0)>0){h=a+72|0;b=k[h>>2]|0;f=$(b,d+-1|0)|0;break}f=a+72|0;if((k[f>>2]|0)<=0){r=A;return}e=k[a+68>>2]|0;b=0;do{k[e+(b<<2)>>2]=0;b=b+1|0}while((b|0)<(k[f>>2]|0));r=A;return}while(0);if((b|0)<=0){r=A;return}e=k[a+68>>2]|0;b=0;do{k[e+(b<<2)>>2]=k[c+(b+f<<2)>>2];b=b+1|0}while((b|0)<(k[h>>2]|0));r=A;return}function mc(a,b,c,d,e,f){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;f=f|0;var g=0,h=0,i=0,j=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0;u=a+8|0;k[u>>2]=e;do if(d){f=k[b>>2]|0;l=a+16|0;k[l>>2]=f;j=a+12|0;k[j>>2]=f;if((d|0)>1){i=1;h=f;while(1){g=k[b+(i<<2)>>2]|0;if((g|0)>=(h|0))if((g|0)>(f|0)){k[l>>2]=g;f=g;g=h}else g=h;else k[j>>2]=g;i=i+1|0;if((i|0)==(d|0))break;else h=g}}else g=f;t=1-g+f|0;k[a+20>>2]=t;f=(t|0)/2|0;g=a+24|0;k[g>>2]=f;k[a+28>>2]=0-f;if(!(t&1))k[g>>2]=f+-1;f=a+32|0;g=a+36|0;j=k[g>>2]|0;h=k[f>>2]|0;i=j-h>>2;if(i>>>0>>0){eg(f,e-i|0);break}if(i>>>0>e>>>0?(m=h+(e<<2)|0,(j|0)!=(m|0)):0)k[g>>2]=j+(~((j+-4-m|0)>>>2)<<2)}else d=0;while(0);d=d-e|0;if((d|0)>0){n=0-e|0;o=a+16|0;p=a+32|0;q=a+12|0;r=a+28|0;s=a+20|0;t=a+24|0;m=d;d=k[u>>2]|0;do{l=b+(m<<2)|0;j=l+(n<<2)|0;if((d|0)>0){i=0;do{h=k[j+(i<<2)>>2]|0;d=k[o>>2]|0;do if((h|0)<=(d|0)){d=k[q>>2]|0;f=k[p>>2]|0;g=f+(i<<2)|0;if((h|0)<(d|0)){k[g>>2]=d;g=f;break}else{k[g>>2]=h;g=f;break}}else{g=k[p>>2]|0;k[g+(i<<2)>>2]=d}while(0);i=i+1|0;d=k[u>>2]|0}while((i|0)<(d|0));if((d|0)>0){f=0;do{k[c+(f+m<<2)>>2]=(k[l+(f<<2)>>2]|0)-(k[g+(f<<2)>>2]|0);f=f+1|0;d=k[u>>2]|0}while((f|0)<(d|0));if((d|0)>0){g=0;do{d=c+(g+m<<2)|0;f=k[d>>2]|0;if((f|0)>=(k[r>>2]|0)){if((f|0)>(k[t>>2]|0))k[d>>2]=f-(k[s>>2]|0)}else k[d>>2]=(k[s>>2]|0)+f;g=g+1|0;d=k[u>>2]|0}while((g|0)<(d|0))}}}m=m-e|0}while((m|0)>0)}else d=k[u>>2]|0;e=e>>>0>1073741823?-1:e<<2;n=dl(e)|0;Ah(n|0,0,e|0)|0;if((d|0)<=0){el(n);return 1}j=a+16|0;l=a+32|0;m=a+12|0;i=0;do{h=k[n+(i<<2)>>2]|0;d=k[j>>2]|0;do if((h|0)<=(d|0)){d=k[m>>2]|0;f=k[l>>2]|0;g=f+(i<<2)|0;if((h|0)<(d|0)){k[g>>2]=d;g=f;break}else{k[g>>2]=h;g=f;break}}else{g=k[l>>2]|0;k[g+(i<<2)>>2]=d}while(0);i=i+1|0;d=k[u>>2]|0}while((i|0)<(d|0));if((d|0)>0)d=0;else{el(n);return 1}do{k[c+(d<<2)>>2]=(k[b+(d<<2)>>2]|0)-(k[g+(d<<2)>>2]|0);d=d+1|0;f=k[u>>2]|0}while((d|0)<(f|0));if((f|0)<=0){el(n);return 1}i=a+28|0;j=a+20|0;f=a+24|0;d=0;do{g=c+(d<<2)|0;h=k[g>>2]|0;if((h|0)>=(k[i>>2]|0)){if((h|0)>(k[f>>2]|0))k[g>>2]=h-(k[j>>2]|0)}else k[g>>2]=(k[j>>2]|0)+h;d=d+1|0}while((d|0)<(k[u>>2]|0));el(n);return 1}function nc(a,b,c,d,e,f){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;f=f|0;var g=0,h=0,i=0,j=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,B=0;y=a+8|0;k[y>>2]=e;z=k[a+24>>2]|0;v=k[a+28>>2]|0;r=e>>>0>1073741823?-1:e<<2;w=dl(r)|0;Ah(w|0,0,r|0)|0;x=dl(r)|0;Ah(x|0,0,r|0)|0;r=a+32|0;g=k[r>>2]|0;a=k[g+4>>2]|0;f=k[g>>2]|0;d=a-f|0;a:do if((d|0)>4){s=(e|0)>0;t=z+12|0;u=e<<2;q=d>>2;d=g;while(1){p=q+-1|0;if(a-f>>2>>>0<=p>>>0)break;o=k[f+(p<<2)>>2]|0;if(s)Ah(w|0,0,u|0)|0;if((o|0)>-1){n=k[t>>2]|0;a=0;m=o;do{f=k[n+(m<<2)>>2]|0;if((f|0)>=0){h=k[z>>2]|0;g=(f>>>0)%3|0;i=k[v>>2]|0;l=k[i+(k[h+(((f>>>0)/3|0)*12|0)+(g<<2)>>2]<<2)>>2]|0;d=f+1|0;d=((d|0)%3|0|0)==0?f+-2|0:d;if((d|0)<0)d=-1073741824;else d=k[h+(((d>>>0)/3|0)*12|0)+(((d>>>0)%3|0)<<2)>>2]|0;j=k[i+(d<<2)>>2]|0;d=((g|0)==0?2:-1)+f|0;if((d|0)<0)d=-1073741824;else d=k[h+(((d>>>0)/3|0)*12|0)+(((d>>>0)%3|0)<<2)>>2]|0;d=k[i+(d<<2)>>2]|0;if((l|0)<(p|0)&(j|0)<(p|0)&(d|0)<(p|0)){h=$(l,e)|0;g=$(j,e)|0;f=$(d,e)|0;if(s){d=0;do{k[x+(d<<2)>>2]=(k[b+(d+f<<2)>>2]|0)+(k[b+(d+g<<2)>>2]|0)-(k[b+(d+h<<2)>>2]|0);d=d+1|0}while((d|0)!=(e|0));if(s){d=0;do{l=w+(d<<2)|0;k[l>>2]=(k[l>>2]|0)+(k[x+(d<<2)>>2]|0);d=d+1|0}while((d|0)!=(e|0))}}a=a+1|0}}d=(((m>>>0)%3|0|0)==0?2:-1)+m|0;do if((d|0)>=0){d=k[n+(d<<2)>>2]|0;if((d|0)>=0)if(!((d>>>0)%3|0)){d=d+2|0;break}else{d=d+-1|0;break}}while(0);m=(d|0)==(o|0)?-1073741824:d}while((m|0)>-1);d=$(p,e)|0;if(!a)B=32;else{if(s){f=0;do{q=w+(f<<2)|0;k[q>>2]=(k[q>>2]|0)/(a|0)|0;f=f+1|0}while((f|0)!=(e|0))}ue(y,b+(d<<2)|0,w,c,d)}}else{d=$(p,e)|0;B=32}if((B|0)==32){B=0;ue(y,b+(d<<2)|0,b+(($(q+-2|0,e)|0)<<2)|0,c,d)}if((p|0)<=1){A=w;break a}d=k[r>>2]|0;q=p;f=k[d>>2]|0;a=k[d+4>>2]|0}lk(d)}else A=w;while(0);if((e|0)<=0){ue(y,b,A,c,0);el(x);el(w);return 1}Ah(w|0,0,e<<2|0)|0;ue(y,b,A,c,0);el(x);el(w);return 1}function oc(a,b,c,d,e,f){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;f=f|0;var g=0,h=0,i=0,j=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,B=0;y=a+8|0;k[y>>2]=e;z=k[a+24>>2]|0;v=k[a+28>>2]|0;r=e>>>0>1073741823?-1:e<<2;w=dl(r)|0;Ah(w|0,0,r|0)|0;x=dl(r)|0;Ah(x|0,0,r|0)|0;r=a+32|0;g=k[r>>2]|0;a=k[g+4>>2]|0;f=k[g>>2]|0;d=a-f|0;a:do if((d|0)>4){s=(e|0)>0;t=z+12|0;u=e<<2;q=d>>2;d=g;while(1){p=q+-1|0;if(a-f>>2>>>0<=p>>>0)break;o=k[f+(p<<2)>>2]|0;if(s)Ah(w|0,0,u|0)|0;if((o|0)>-1){n=k[t>>2]|0;a=0;m=o;do{f=k[n+(m<<2)>>2]|0;if((f|0)>=0){h=k[z>>2]|0;g=(f>>>0)%3|0;i=k[v>>2]|0;l=k[i+(k[h+(((f>>>0)/3|0)*12|0)+(g<<2)>>2]<<2)>>2]|0;d=f+1|0;d=((d|0)%3|0|0)==0?f+-2|0:d;if((d|0)<0)d=-1073741824;else d=k[h+(((d>>>0)/3|0)*12|0)+(((d>>>0)%3|0)<<2)>>2]|0;j=k[i+(d<<2)>>2]|0;d=((g|0)==0?2:-1)+f|0;if((d|0)<0)d=-1073741824;else d=k[h+(((d>>>0)/3|0)*12|0)+(((d>>>0)%3|0)<<2)>>2]|0;d=k[i+(d<<2)>>2]|0;if((l|0)<(p|0)&(j|0)<(p|0)&(d|0)<(p|0)){h=$(l,e)|0;g=$(j,e)|0;f=$(d,e)|0;if(s){d=0;do{k[x+(d<<2)>>2]=(k[b+(d+f<<2)>>2]|0)+(k[b+(d+g<<2)>>2]|0)-(k[b+(d+h<<2)>>2]|0);d=d+1|0}while((d|0)!=(e|0));if(s){d=0;do{l=w+(d<<2)|0;k[l>>2]=(k[l>>2]|0)+(k[x+(d<<2)>>2]|0);d=d+1|0}while((d|0)!=(e|0))}}a=a+1|0}}d=(((m>>>0)%3|0|0)==0?2:-1)+m|0;do if((d|0)>=0){d=k[n+(d<<2)>>2]|0;if((d|0)>=0)if(!((d>>>0)%3|0)){d=d+2|0;break}else{d=d+-1|0;break}}while(0);m=(d|0)==(o|0)?-1073741824:d}while((m|0)>-1);d=$(p,e)|0;if(!a)B=32;else{if(s){f=0;do{q=w+(f<<2)|0;k[q>>2]=(k[q>>2]|0)/(a|0)|0;f=f+1|0}while((f|0)!=(e|0))}we(y,b+(d<<2)|0,w,c,d)}}else{d=$(p,e)|0;B=32}if((B|0)==32){B=0;we(y,b+(d<<2)|0,b+(($(q+-2|0,e)|0)<<2)|0,c,d)}if((p|0)<=1){A=w;break a}d=k[r>>2]|0;q=p;f=k[d>>2]|0;a=k[d+4>>2]|0}lk(d)}else A=w;while(0);if((e|0)<=0){we(y,b,A,c,0);el(x);el(w);return 1}Ah(w|0,0,e<<2|0)|0;we(y,b,A,c,0);el(x);el(w);return 1}function pc(a,b,c,d,e,f){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;f=f|0;var g=0,h=0,i=0,j=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,B=0,C=0,D=0;w=a+8|0;k[w>>2]=e;x=k[a+24>>2]|0;t=k[a+28>>2]|0;o=e>>>0>1073741823?-1:e<<2;u=dl(o)|0;Ah(u|0,0,o|0)|0;v=dl(o)|0;Ah(v|0,0,o|0)|0;o=a+32|0;g=k[o>>2]|0;a=k[g+4>>2]|0;f=k[g>>2]|0;d=a-f|0;a:do if((d|0)>4){p=(e|0)>0;q=x+64|0;r=x+28|0;s=e<<2;n=d>>2;d=g;while(1){m=n+-1|0;if(a-f>>2>>>0<=m>>>0)break;l=k[f+(m<<2)>>2]|0;if(p)Ah(u|0,0,s|0)|0;if((l|0)>-1){j=k[x>>2]|0;h=0;i=l;do{if(((k[j+(i>>>5<<2)>>2]&1<<(i&31)|0)==0?(z=k[(k[(k[q>>2]|0)+12>>2]|0)+(i<<2)>>2]|0,(z|0)>=0):0)?(C=k[r>>2]|0,g=k[t>>2]|0,A=k[g+(k[C+(z<<2)>>2]<<2)>>2]|0,B=z+1|0,B=k[g+(k[C+((((B|0)%3|0|0)==0?z+-2|0:B)<<2)>>2]<<2)>>2]|0,C=k[g+(k[C+((((z>>>0)%3|0|0)==0?2:-1)+z<<2)>>2]<<2)>>2]|0,(A|0)<(m|0)&(B|0)<(m|0)&(C|0)<(m|0)):0){f=$(A,e)|0;a=$(B,e)|0;g=$(C,e)|0;if(p){d=0;do{k[v+(d<<2)>>2]=(k[b+(d+g<<2)>>2]|0)+(k[b+(d+a<<2)>>2]|0)-(k[b+(d+f<<2)>>2]|0);d=d+1|0}while((d|0)!=(e|0));if(p){d=0;do{g=u+(d<<2)|0;k[g>>2]=(k[g>>2]|0)+(k[v+(d<<2)>>2]|0);d=d+1|0}while((d|0)!=(e|0))}}h=h+1|0}d=(((i>>>0)%3|0|0)==0?2:-1)+i|0;do if(!(k[j+(d>>>5<<2)>>2]&1<<(d&31))){if((d|0)>=0){d=k[(k[(k[q>>2]|0)+12>>2]|0)+(d<<2)>>2]|0;if((d|0)>=0)if(!((d>>>0)%3|0)){d=d+2|0;break}else{d=d+-1|0;break}}}else d=-1073741824;while(0);i=(d|0)==(l|0)?-1073741824:d}while((i|0)>-1);d=$(m,e)|0;if(!h)D=30;else{if(p){f=0;do{n=u+(f<<2)|0;k[n>>2]=(k[n>>2]|0)/(h|0)|0;f=f+1|0}while((f|0)!=(e|0))}ue(w,b+(d<<2)|0,u,c,d)}}else{d=$(m,e)|0;D=30}if((D|0)==30){D=0;ue(w,b+(d<<2)|0,b+(($(n+-2|0,e)|0)<<2)|0,c,d)}if((m|0)<=1){y=u;break a}d=k[o>>2]|0;n=m;f=k[d>>2]|0;a=k[d+4>>2]|0}lk(d)}else y=u;while(0);if((e|0)<=0){ue(w,b,y,c,0);el(v);el(u);return 1}Ah(u|0,0,e<<2|0)|0;ue(w,b,y,c,0);el(v);el(u);return 1}function qc(a,b,c,d,e,f){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;f=f|0;var g=0,h=0,i=0,j=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,B=0,C=0,D=0;w=a+8|0;k[w>>2]=e;x=k[a+24>>2]|0;t=k[a+28>>2]|0;o=e>>>0>1073741823?-1:e<<2;u=dl(o)|0;Ah(u|0,0,o|0)|0;v=dl(o)|0;Ah(v|0,0,o|0)|0;o=a+32|0;g=k[o>>2]|0;a=k[g+4>>2]|0;f=k[g>>2]|0;d=a-f|0;a:do if((d|0)>4){p=(e|0)>0;q=x+64|0;r=x+28|0;s=e<<2;n=d>>2;d=g;while(1){m=n+-1|0;if(a-f>>2>>>0<=m>>>0)break;l=k[f+(m<<2)>>2]|0;if(p)Ah(u|0,0,s|0)|0;if((l|0)>-1){j=k[x>>2]|0;h=0;i=l;do{if(((k[j+(i>>>5<<2)>>2]&1<<(i&31)|0)==0?(z=k[(k[(k[q>>2]|0)+12>>2]|0)+(i<<2)>>2]|0,(z|0)>=0):0)?(C=k[r>>2]|0,g=k[t>>2]|0,A=k[g+(k[C+(z<<2)>>2]<<2)>>2]|0,B=z+1|0,B=k[g+(k[C+((((B|0)%3|0|0)==0?z+-2|0:B)<<2)>>2]<<2)>>2]|0,C=k[g+(k[C+((((z>>>0)%3|0|0)==0?2:-1)+z<<2)>>2]<<2)>>2]|0,(A|0)<(m|0)&(B|0)<(m|0)&(C|0)<(m|0)):0){f=$(A,e)|0;a=$(B,e)|0;g=$(C,e)|0;if(p){d=0;do{k[v+(d<<2)>>2]=(k[b+(d+g<<2)>>2]|0)+(k[b+(d+a<<2)>>2]|0)-(k[b+(d+f<<2)>>2]|0);d=d+1|0}while((d|0)!=(e|0));if(p){d=0;do{g=u+(d<<2)|0;k[g>>2]=(k[g>>2]|0)+(k[v+(d<<2)>>2]|0);d=d+1|0}while((d|0)!=(e|0))}}h=h+1|0}d=(((i>>>0)%3|0|0)==0?2:-1)+i|0;do if(!(k[j+(d>>>5<<2)>>2]&1<<(d&31))){if((d|0)>=0){d=k[(k[(k[q>>2]|0)+12>>2]|0)+(d<<2)>>2]|0;if((d|0)>=0)if(!((d>>>0)%3|0)){d=d+2|0;break}else{d=d+-1|0;break}}}else d=-1073741824;while(0);i=(d|0)==(l|0)?-1073741824:d}while((i|0)>-1);d=$(m,e)|0;if(!h)D=30;else{if(p){f=0;do{n=u+(f<<2)|0;k[n>>2]=(k[n>>2]|0)/(h|0)|0;f=f+1|0}while((f|0)!=(e|0))}we(w,b+(d<<2)|0,u,c,d)}}else{d=$(m,e)|0;D=30}if((D|0)==30){D=0;we(w,b+(d<<2)|0,b+(($(n+-2|0,e)|0)<<2)|0,c,d)}if((m|0)<=1){y=u;break a}d=k[o>>2]|0;n=m;f=k[d>>2]|0;a=k[d+4>>2]|0}lk(d)}else y=u;while(0);if((e|0)<=0){we(w,b,y,c,0);el(v);el(u);return 1}Ah(u|0,0,e<<2|0)|0;we(w,b,y,c,0);el(v);el(u);return 1}function rc(a,b,c){a=a|0;b=b|0;c=c|0;var d=Pa,e=Pa,f=0,g=0,h=0;switch(i[a+24>>0]|0){case 1:{b=k[b>>2]|0;g=a+48|0;f=k[g>>2]|0;g=k[g+4>>2]|0;h=a+40|0;g=(Bj(Pi(k[h>>2]|0,k[h+4>>2]|0,b|0,((b|0)<0)<<31>>31|0)|0,M|0,f|0,g|0)|0)+(k[k[a>>2]>>2]|0)|0;d=da((l[g>>0]|l[g+1>>0]<<8|l[g+2>>0]<<16|l[g+3>>0]<<24)>>>0);e=da(d*da(2.32830644e-10));o[c>>2]=(i[a+32>>0]|0)==0?d:e;c=c+4|0;k[c>>2]=0;k[c+4>>2]=0;k[c+8>>2]=0;c=1;return c|0}case 2:{g=k[b>>2]|0;b=a+48|0;h=k[b>>2]|0;b=k[b+4>>2]|0;f=a+40|0;b=(Bj(Pi(k[f>>2]|0,k[f+4>>2]|0,g|0,((g|0)<0)<<31>>31|0)|0,M|0,h|0,b|0)|0)+(k[k[a>>2]>>2]|0)|0;h=b;b=b+4|0;b=l[b>>0]|l[b+1>>0]<<8|l[b+2>>0]<<16|l[b+3>>0]<<24;d=da((l[h>>0]|l[h+1>>0]<<8|l[h+2>>0]<<16|l[h+3>>0]<<24)>>>0);if(!(i[a+32>>0]|0)){o[c>>2]=d;d=da(b>>>0)}else{d=da(d*da(2.32830644e-10));o[c>>2]=d;d=da(da(b>>>0)*da(2.32830644e-10))}o[c+4>>2]=d;h=c+8|0;k[h>>2]=0;k[h+4>>2]=0;h=1;return h|0}case 3:{b=k[b>>2]|0;h=a+48|0;f=k[h>>2]|0;h=k[h+4>>2]|0;g=a+40|0;h=(Bj(Pi(k[g>>2]|0,k[g+4>>2]|0,b|0,((b|0)<0)<<31>>31|0)|0,M|0,f|0,h|0)|0)+(k[k[a>>2]>>2]|0)|0;f=h+4|0;f=l[f>>0]|l[f+1>>0]<<8|l[f+2>>0]<<16|l[f+3>>0]<<24;b=h+8|0;b=l[b>>0]|l[b+1>>0]<<8|l[b+2>>0]<<16|l[b+3>>0]<<24;d=da((l[h>>0]|l[h+1>>0]<<8|l[h+2>>0]<<16|l[h+3>>0]<<24)>>>0);if(!(i[a+32>>0]|0)){o[c>>2]=d;e=da(b>>>0);d=da(f>>>0)}else{e=da(d*da(2.32830644e-10));o[c>>2]=e;e=da(da(b>>>0)*da(2.32830644e-10));d=da(da(f>>>0)*da(2.32830644e-10))}o[c+4>>2]=d;o[c+8>>2]=e;o[c+12>>2]=da(0.0);h=1;return h|0}case 4:{f=k[b>>2]|0;h=a+48|0;b=k[h>>2]|0;h=k[h+4>>2]|0;g=a+40|0;h=(Bj(Pi(k[g>>2]|0,k[g+4>>2]|0,f|0,((f|0)<0)<<31>>31|0)|0,M|0,b|0,h|0)|0)+(k[k[a>>2]>>2]|0)|0;b=h+4|0;b=l[b>>0]|l[b+1>>0]<<8|l[b+2>>0]<<16|l[b+3>>0]<<24;f=h+8|0;f=l[f>>0]|l[f+1>>0]<<8|l[f+2>>0]<<16|l[f+3>>0]<<24;g=h+12|0;g=l[g>>0]|l[g+1>>0]<<8|l[g+2>>0]<<16|l[g+3>>0]<<24;d=da((l[h>>0]|l[h+1>>0]<<8|l[h+2>>0]<<16|l[h+3>>0]<<24)>>>0);if(!(i[a+32>>0]|0)){o[c>>2]=d;e=da(b>>>0);o[c+4>>2]=e;e=da(f>>>0);o[c+8>>2]=e;e=da(g>>>0);o[c+12>>2]=e;h=1;return h|0}else{e=da(d*da(2.32830644e-10));o[c>>2]=e;e=da(da(b>>>0)*da(2.32830644e-10));o[c+4>>2]=e;e=da(da(f>>>0)*da(2.32830644e-10));o[c+8>>2]=e;e=da(da(g>>>0)*da(2.32830644e-10));o[c+12>>2]=e;h=1;return h|0}}default:{h=0;return h|0}}return 0}function sc(a,b,c){a=a|0;b=b|0;c=c|0;var d=Pa,e=Pa,f=0,g=0,h=0;switch(i[a+24>>0]|0){case 1:{b=k[b>>2]|0;g=a+48|0;f=k[g>>2]|0;g=k[g+4>>2]|0;h=a+40|0;g=(Bj(Pi(k[h>>2]|0,k[h+4>>2]|0,b|0,((b|0)<0)<<31>>31|0)|0,M|0,f|0,g|0)|0)+(k[k[a>>2]>>2]|0)|0;d=da(l[g>>0]|l[g+1>>0]<<8|l[g+2>>0]<<16|l[g+3>>0]<<24|0);e=da(d*da(4.65661287e-10));o[c>>2]=(i[a+32>>0]|0)==0?d:e;c=c+4|0;k[c>>2]=0;k[c+4>>2]=0;k[c+8>>2]=0;c=1;return c|0}case 2:{g=k[b>>2]|0;b=a+48|0;h=k[b>>2]|0;b=k[b+4>>2]|0;f=a+40|0;b=(Bj(Pi(k[f>>2]|0,k[f+4>>2]|0,g|0,((g|0)<0)<<31>>31|0)|0,M|0,h|0,b|0)|0)+(k[k[a>>2]>>2]|0)|0;h=b;b=b+4|0;b=l[b>>0]|l[b+1>>0]<<8|l[b+2>>0]<<16|l[b+3>>0]<<24;d=da(l[h>>0]|l[h+1>>0]<<8|l[h+2>>0]<<16|l[h+3>>0]<<24|0);if(!(i[a+32>>0]|0)){o[c>>2]=d;d=da(b|0)}else{d=da(d*da(4.65661287e-10));o[c>>2]=d;d=da(da(b|0)*da(4.65661287e-10))}o[c+4>>2]=d;h=c+8|0;k[h>>2]=0;k[h+4>>2]=0;h=1;return h|0}case 3:{b=k[b>>2]|0;h=a+48|0;f=k[h>>2]|0;h=k[h+4>>2]|0;g=a+40|0;h=(Bj(Pi(k[g>>2]|0,k[g+4>>2]|0,b|0,((b|0)<0)<<31>>31|0)|0,M|0,f|0,h|0)|0)+(k[k[a>>2]>>2]|0)|0;f=h+4|0;f=l[f>>0]|l[f+1>>0]<<8|l[f+2>>0]<<16|l[f+3>>0]<<24;b=h+8|0;b=l[b>>0]|l[b+1>>0]<<8|l[b+2>>0]<<16|l[b+3>>0]<<24;d=da(l[h>>0]|l[h+1>>0]<<8|l[h+2>>0]<<16|l[h+3>>0]<<24|0);if(!(i[a+32>>0]|0)){o[c>>2]=d;e=da(b|0);d=da(f|0)}else{e=da(d*da(4.65661287e-10));o[c>>2]=e;e=da(da(b|0)*da(4.65661287e-10));d=da(da(f|0)*da(4.65661287e-10))}o[c+4>>2]=d;o[c+8>>2]=e;o[c+12>>2]=da(0.0);h=1;return h|0}case 4:{f=k[b>>2]|0;h=a+48|0;b=k[h>>2]|0;h=k[h+4>>2]|0;g=a+40|0;h=(Bj(Pi(k[g>>2]|0,k[g+4>>2]|0,f|0,((f|0)<0)<<31>>31|0)|0,M|0,b|0,h|0)|0)+(k[k[a>>2]>>2]|0)|0;b=h+4|0;b=l[b>>0]|l[b+1>>0]<<8|l[b+2>>0]<<16|l[b+3>>0]<<24;f=h+8|0;f=l[f>>0]|l[f+1>>0]<<8|l[f+2>>0]<<16|l[f+3>>0]<<24;g=h+12|0;g=l[g>>0]|l[g+1>>0]<<8|l[g+2>>0]<<16|l[g+3>>0]<<24;d=da(l[h>>0]|l[h+1>>0]<<8|l[h+2>>0]<<16|l[h+3>>0]<<24|0);if(!(i[a+32>>0]|0)){o[c>>2]=d;e=da(b|0);o[c+4>>2]=e;e=da(f|0);o[c+8>>2]=e;e=da(g|0);o[c+12>>2]=e;h=1;return h|0}else{e=da(d*da(4.65661287e-10));o[c>>2]=e;e=da(da(b|0)*da(4.65661287e-10));o[c+4>>2]=e;e=da(da(f|0)*da(4.65661287e-10));o[c+8>>2]=e;e=da(da(g|0)*da(4.65661287e-10));o[c+12>>2]=e;h=1;return h|0}}default:{h=0;return h|0}}return 0}function tc(a,b,c){a=a|0;b=b|0;c=c|0;var d=0,e=0,f=0,g=0,h=0,i=0,j=0,m=0,n=0,o=0,p=0,q=0,s=0,t=0,u=0;u=r;r=r+64|0;t=u;d=t;e=d+40|0;do{k[d>>2]=0;d=d+4|0}while((d|0)<(e|0));a:do if(Ud(t,b)|0){n=(a|0)>0;if(n?(k[t+12>>2]|0)==0:0){h=0;break}e=b+8|0;d=k[e>>2]|0;e=k[e+4>>2]|0;f=b+16|0;h=f;g=k[h>>2]|0;h=Bj(g|0,k[h+4>>2]|0,8,0)|0;i=M;if((!((e|0)<(i|0)|(e|0)==(i|0)&d>>>0>>0)?(j=k[b>>2]|0,m=j+g|0,q=m,q=l[q>>0]|l[q+1>>0]<<8|l[q+2>>0]<<16|l[q+3>>0]<<24,m=m+4|0,m=l[m>>0]|l[m+1>>0]<<8|l[m+2>>0]<<16|l[m+3>>0]<<24,b=f,k[b>>2]=h,k[b+4>>2]=i,b=nj(d|0,e|0,h|0,i|0)|0,g=M,!(m>>>0>g>>>0|(m|0)==(g|0)&q>>>0>b>>>0)):0)?(s=j+h|0,j=Bj(q|0,m|0,h|0,i|0)|0,m=f,k[m>>2]=j,k[m+4>>2]=M,(q|0)>=1):0){j=t+40|0;k[j>>2]=s;d=q+-1|0;e=s+d|0;switch((l[e>>0]|0)>>>6&3){case 0:{k[t+44>>2]=d;p=(l[e>>0]|0)&63;o=t+48|0;k[o>>2]=p;break}case 1:{if((q|0)<2){h=0;break a}k[t+44>>2]=q+-2;p=s+q+-2|0;p=(l[p+1>>0]|0)<<8&16128|(l[p>>0]|0);o=t+48|0;k[o>>2]=p;break}case 2:{if((q|0)<3){h=0;break a}k[t+44>>2]=q+-3;p=s+q+-3|0;p=(l[p+1>>0]|0)<<8|(l[p>>0]|0)|(l[p+2>>0]|0)<<16&4128768;o=t+48|0;k[o>>2]=p;break}case 3:{k[t+44>>2]=q+-4;p=s+q+-4|0;p=(l[p+2>>0]|0)<<16|(l[p+3>>0]|0)<<24&1056964608|(l[p+1>>0]|0)<<8|(l[p>>0]|0);o=t+48|0;k[o>>2]=p;break}default:{}}d=p+4194304|0;k[o>>2]=d;d=d>>>0>1073741823;if(d|n^1)h=d^1;else{g=t+48|0;h=t+44|0;i=t+16|0;b=t+28|0;f=0;d=k[g>>2]|0;while(1){b:do if(d>>>0<4194304){e=k[h>>2]|0;do{if((e|0)<=0)break b;e=e+-1|0;k[h>>2]=e;d=l[(k[j>>2]|0)+e>>0]|0|d<<8;k[g>>2]=d}while(d>>>0<4194304)}while(0);p=d&1048575;s=k[(k[i>>2]|0)+(p<<2)>>2]|0;q=k[b>>2]|0;d=($(k[q+(s<<3)>>2]|0,d>>>20)|0)+p-(k[q+(s<<3)+4>>2]|0)|0;k[g>>2]=d;k[c+(f<<2)>>2]=s;f=f+1|0;if((f|0)==(a|0)){h=1;break}}}}else h=0}else h=0;while(0);d=k[t+28>>2]|0;e=d;if(d|0){f=t+32|0;g=k[f>>2]|0;if((g|0)!=(d|0))k[f>>2]=g+(~((g+-8-e|0)>>>3)<<3);gl(d)}d=k[t+16>>2]|0;e=d;if(d|0){f=t+20|0;g=k[f>>2]|0;if((g|0)!=(d|0))k[f>>2]=g+(~((g+-4-e|0)>>>2)<<2);gl(d)}f=k[t>>2]|0;if(!f){r=u;return h|0}d=t+4|0;e=k[d>>2]|0;if((e|0)!=(f|0))k[d>>2]=e+(~((e+-4-f|0)>>>2)<<2);gl(f);r=u;return h|0}function uc(a,b,c){a=a|0;b=b|0;c=c|0;var d=0,e=0,f=0,g=0,h=0,i=0,j=0,m=0,n=0,o=0,p=0,q=0,s=0,t=0,u=0;u=r;r=r+64|0;t=u;d=t;e=d+40|0;do{k[d>>2]=0;d=d+4|0}while((d|0)<(e|0));a:do if(Vd(t,b)|0){n=(a|0)>0;if(n?(k[t+12>>2]|0)==0:0){h=0;break}e=b+8|0;d=k[e>>2]|0;e=k[e+4>>2]|0;f=b+16|0;h=f;g=k[h>>2]|0;h=Bj(g|0,k[h+4>>2]|0,8,0)|0;i=M;if((!((e|0)<(i|0)|(e|0)==(i|0)&d>>>0>>0)?(j=k[b>>2]|0,m=j+g|0,q=m,q=l[q>>0]|l[q+1>>0]<<8|l[q+2>>0]<<16|l[q+3>>0]<<24,m=m+4|0,m=l[m>>0]|l[m+1>>0]<<8|l[m+2>>0]<<16|l[m+3>>0]<<24,b=f,k[b>>2]=h,k[b+4>>2]=i,b=nj(d|0,e|0,h|0,i|0)|0,g=M,!(m>>>0>g>>>0|(m|0)==(g|0)&q>>>0>b>>>0)):0)?(s=j+h|0,j=Bj(q|0,m|0,h|0,i|0)|0,m=f,k[m>>2]=j,k[m+4>>2]=M,(q|0)>=1):0){j=t+40|0;k[j>>2]=s;d=q+-1|0;e=s+d|0;switch((l[e>>0]|0)>>>6&3){case 0:{k[t+44>>2]=d;p=(l[e>>0]|0)&63;o=t+48|0;k[o>>2]=p;break}case 1:{if((q|0)<2){h=0;break a}k[t+44>>2]=q+-2;p=s+q+-2|0;p=(l[p+1>>0]|0)<<8&16128|(l[p>>0]|0);o=t+48|0;k[o>>2]=p;break}case 2:{if((q|0)<3){h=0;break a}k[t+44>>2]=q+-3;p=s+q+-3|0;p=(l[p+1>>0]|0)<<8|(l[p>>0]|0)|(l[p+2>>0]|0)<<16&4128768;o=t+48|0;k[o>>2]=p;break}case 3:{k[t+44>>2]=q+-4;p=s+q+-4|0;p=(l[p+2>>0]|0)<<16|(l[p+3>>0]|0)<<24&1056964608|(l[p+1>>0]|0)<<8|(l[p>>0]|0);o=t+48|0;k[o>>2]=p;break}default:{}}d=p+2097152|0;k[o>>2]=d;d=d>>>0>536870911;if(d|n^1)h=d^1;else{g=t+48|0;h=t+44|0;i=t+16|0;b=t+28|0;f=0;d=k[g>>2]|0;while(1){b:do if(d>>>0<2097152){e=k[h>>2]|0;do{if((e|0)<=0)break b;e=e+-1|0;k[h>>2]=e;d=l[(k[j>>2]|0)+e>>0]|0|d<<8;k[g>>2]=d}while(d>>>0<2097152)}while(0);p=d&524287;s=k[(k[i>>2]|0)+(p<<2)>>2]|0;q=k[b>>2]|0;d=($(k[q+(s<<3)>>2]|0,d>>>19)|0)+p-(k[q+(s<<3)+4>>2]|0)|0;k[g>>2]=d;k[c+(f<<2)>>2]=s;f=f+1|0;if((f|0)==(a|0)){h=1;break}}}}else h=0}else h=0;while(0);d=k[t+28>>2]|0;e=d;if(d|0){f=t+32|0;g=k[f>>2]|0;if((g|0)!=(d|0))k[f>>2]=g+(~((g+-8-e|0)>>>3)<<3);gl(d)}d=k[t+16>>2]|0;e=d;if(d|0){f=t+20|0;g=k[f>>2]|0;if((g|0)!=(d|0))k[f>>2]=g+(~((g+-4-e|0)>>>2)<<2);gl(d)}f=k[t>>2]|0;if(!f){r=u;return h|0}d=t+4|0;e=k[d>>2]|0;if((e|0)!=(f|0))k[d>>2]=e+(~((e+-4-f|0)>>>2)<<2);gl(f);r=u;return h|0}function vc(a,b,c){a=a|0;b=b|0;c=c|0;var d=0,e=0,f=0,g=0,h=0,i=0,j=0,m=0,n=0,o=0,p=0,q=0,s=0,t=0,u=0;u=r;r=r+64|0;t=u;d=t;e=d+40|0;do{k[d>>2]=0;d=d+4|0}while((d|0)<(e|0));a:do if(Wd(t,b)|0){n=(a|0)>0;if(n?(k[t+12>>2]|0)==0:0){h=0;break}e=b+8|0;d=k[e>>2]|0;e=k[e+4>>2]|0;f=b+16|0;h=f;g=k[h>>2]|0;h=Bj(g|0,k[h+4>>2]|0,8,0)|0;i=M;if((!((e|0)<(i|0)|(e|0)==(i|0)&d>>>0>>0)?(j=k[b>>2]|0,m=j+g|0,q=m,q=l[q>>0]|l[q+1>>0]<<8|l[q+2>>0]<<16|l[q+3>>0]<<24,m=m+4|0,m=l[m>>0]|l[m+1>>0]<<8|l[m+2>>0]<<16|l[m+3>>0]<<24,b=f,k[b>>2]=h,k[b+4>>2]=i,b=nj(d|0,e|0,h|0,i|0)|0,g=M,!(m>>>0>g>>>0|(m|0)==(g|0)&q>>>0>b>>>0)):0)?(s=j+h|0,j=Bj(q|0,m|0,h|0,i|0)|0,m=f,k[m>>2]=j,k[m+4>>2]=M,(q|0)>=1):0){j=t+40|0;k[j>>2]=s;d=q+-1|0;e=s+d|0;switch((l[e>>0]|0)>>>6&3){case 0:{k[t+44>>2]=d;p=(l[e>>0]|0)&63;o=t+48|0;k[o>>2]=p;break}case 1:{if((q|0)<2){h=0;break a}k[t+44>>2]=q+-2;p=s+q+-2|0;p=(l[p+1>>0]|0)<<8&16128|(l[p>>0]|0);o=t+48|0;k[o>>2]=p;break}case 2:{if((q|0)<3){h=0;break a}k[t+44>>2]=q+-3;p=s+q+-3|0;p=(l[p+1>>0]|0)<<8|(l[p>>0]|0)|(l[p+2>>0]|0)<<16&4128768;o=t+48|0;k[o>>2]=p;break}case 3:{k[t+44>>2]=q+-4;p=s+q+-4|0;p=(l[p+2>>0]|0)<<16|(l[p+3>>0]|0)<<24&1056964608|(l[p+1>>0]|0)<<8|(l[p>>0]|0);o=t+48|0;k[o>>2]=p;break}default:{}}d=p+1048576|0;k[o>>2]=d;d=d>>>0>268435455;if(d|n^1)h=d^1;else{g=t+48|0;h=t+44|0;i=t+16|0;b=t+28|0;f=0;d=k[g>>2]|0;while(1){b:do if(d>>>0<1048576){e=k[h>>2]|0;do{if((e|0)<=0)break b;e=e+-1|0;k[h>>2]=e;d=l[(k[j>>2]|0)+e>>0]|0|d<<8;k[g>>2]=d}while(d>>>0<1048576)}while(0);p=d&262143;s=k[(k[i>>2]|0)+(p<<2)>>2]|0;q=k[b>>2]|0;d=($(k[q+(s<<3)>>2]|0,d>>>18)|0)+p-(k[q+(s<<3)+4>>2]|0)|0;k[g>>2]=d;k[c+(f<<2)>>2]=s;f=f+1|0;if((f|0)==(a|0)){h=1;break}}}}else h=0}else h=0;while(0);d=k[t+28>>2]|0;e=d;if(d|0){f=t+32|0;g=k[f>>2]|0;if((g|0)!=(d|0))k[f>>2]=g+(~((g+-8-e|0)>>>3)<<3);gl(d)}d=k[t+16>>2]|0;e=d;if(d|0){f=t+20|0;g=k[f>>2]|0;if((g|0)!=(d|0))k[f>>2]=g+(~((g+-4-e|0)>>>2)<<2);gl(d)}f=k[t>>2]|0;if(!f){r=u;return h|0}d=t+4|0;e=k[d>>2]|0;if((e|0)!=(f|0))k[d>>2]=e+(~((e+-4-f|0)>>>2)<<2);gl(f);r=u;return h|0}function wc(a,b,c){a=a|0;b=b|0;c=c|0;var d=0,e=0,f=0,g=0,h=0,i=0,j=0,m=0,n=0,o=0,p=0,q=0,s=0,t=0,u=0;u=r;r=r+64|0;t=u;d=t;e=d+40|0;do{k[d>>2]=0;d=d+4|0}while((d|0)<(e|0));a:do if(Xd(t,b)|0){n=(a|0)>0;if(n?(k[t+12>>2]|0)==0:0){h=0;break}e=b+8|0;d=k[e>>2]|0;e=k[e+4>>2]|0;f=b+16|0;h=f;g=k[h>>2]|0;h=Bj(g|0,k[h+4>>2]|0,8,0)|0;i=M;if((!((e|0)<(i|0)|(e|0)==(i|0)&d>>>0>>0)?(j=k[b>>2]|0,m=j+g|0,q=m,q=l[q>>0]|l[q+1>>0]<<8|l[q+2>>0]<<16|l[q+3>>0]<<24,m=m+4|0,m=l[m>>0]|l[m+1>>0]<<8|l[m+2>>0]<<16|l[m+3>>0]<<24,b=f,k[b>>2]=h,k[b+4>>2]=i,b=nj(d|0,e|0,h|0,i|0)|0,g=M,!(m>>>0>g>>>0|(m|0)==(g|0)&q>>>0>b>>>0)):0)?(s=j+h|0,j=Bj(q|0,m|0,h|0,i|0)|0,m=f,k[m>>2]=j,k[m+4>>2]=M,(q|0)>=1):0){j=t+40|0;k[j>>2]=s;d=q+-1|0;e=s+d|0;switch((l[e>>0]|0)>>>6&3){case 0:{k[t+44>>2]=d;p=(l[e>>0]|0)&63;o=t+48|0;k[o>>2]=p;break}case 1:{if((q|0)<2){h=0;break a}k[t+44>>2]=q+-2;p=s+q+-2|0;p=(l[p+1>>0]|0)<<8&16128|(l[p>>0]|0);o=t+48|0;k[o>>2]=p;break}case 2:{if((q|0)<3){h=0;break a}k[t+44>>2]=q+-3;p=s+q+-3|0;p=(l[p+1>>0]|0)<<8|(l[p>>0]|0)|(l[p+2>>0]|0)<<16&4128768;o=t+48|0;k[o>>2]=p;break}case 3:{k[t+44>>2]=q+-4;p=s+q+-4|0;p=(l[p+2>>0]|0)<<16|(l[p+3>>0]|0)<<24&1056964608|(l[p+1>>0]|0)<<8|(l[p>>0]|0);o=t+48|0;k[o>>2]=p;break}default:{}}d=p+262144|0;k[o>>2]=d;d=d>>>0>67108863;if(d|n^1)h=d^1;else{g=t+48|0;h=t+44|0;i=t+16|0;b=t+28|0;f=0;d=k[g>>2]|0;while(1){b:do if(d>>>0<262144){e=k[h>>2]|0;do{if((e|0)<=0)break b;e=e+-1|0;k[h>>2]=e;d=l[(k[j>>2]|0)+e>>0]|0|d<<8;k[g>>2]=d}while(d>>>0<262144)}while(0);p=d&65535;s=k[(k[i>>2]|0)+(p<<2)>>2]|0;q=k[b>>2]|0;d=($(k[q+(s<<3)>>2]|0,d>>>16)|0)+p-(k[q+(s<<3)+4>>2]|0)|0;k[g>>2]=d;k[c+(f<<2)>>2]=s;f=f+1|0;if((f|0)==(a|0)){h=1;break}}}}else h=0}else h=0;while(0);d=k[t+28>>2]|0;e=d;if(d|0){f=t+32|0;g=k[f>>2]|0;if((g|0)!=(d|0))k[f>>2]=g+(~((g+-8-e|0)>>>3)<<3);gl(d)}d=k[t+16>>2]|0;e=d;if(d|0){f=t+20|0;g=k[f>>2]|0;if((g|0)!=(d|0))k[f>>2]=g+(~((g+-4-e|0)>>>2)<<2);gl(d)}f=k[t>>2]|0;if(!f){r=u;return h|0}d=t+4|0;e=k[d>>2]|0;if((e|0)!=(f|0))k[d>>2]=e+(~((e+-4-f|0)>>>2)<<2);gl(f);r=u;return h|0}function xc(a,b,c){a=a|0;b=b|0;c=c|0;var d=0,e=0,f=0,g=0,h=0,i=0,j=0,m=0,n=0,o=0,p=0,q=0,s=0,t=0,u=0;u=r;r=r+64|0;t=u;d=t;e=d+40|0;do{k[d>>2]=0;d=d+4|0}while((d|0)<(e|0));a:do if(Yd(t,b)|0){n=(a|0)>0;if(n?(k[t+12>>2]|0)==0:0){h=0;break}e=b+8|0;d=k[e>>2]|0;e=k[e+4>>2]|0;f=b+16|0;h=f;g=k[h>>2]|0;h=Bj(g|0,k[h+4>>2]|0,8,0)|0;i=M;if((!((e|0)<(i|0)|(e|0)==(i|0)&d>>>0>>0)?(j=k[b>>2]|0,m=j+g|0,q=m,q=l[q>>0]|l[q+1>>0]<<8|l[q+2>>0]<<16|l[q+3>>0]<<24,m=m+4|0,m=l[m>>0]|l[m+1>>0]<<8|l[m+2>>0]<<16|l[m+3>>0]<<24,b=f,k[b>>2]=h,k[b+4>>2]=i,b=nj(d|0,e|0,h|0,i|0)|0,g=M,!(m>>>0>g>>>0|(m|0)==(g|0)&q>>>0>b>>>0)):0)?(s=j+h|0,j=Bj(q|0,m|0,h|0,i|0)|0,m=f,k[m>>2]=j,k[m+4>>2]=M,(q|0)>=1):0){j=t+40|0;k[j>>2]=s;d=q+-1|0;e=s+d|0;switch((l[e>>0]|0)>>>6&3){case 0:{k[t+44>>2]=d;p=(l[e>>0]|0)&63;o=t+48|0;k[o>>2]=p;break}case 1:{if((q|0)<2){h=0;break a}k[t+44>>2]=q+-2;p=s+q+-2|0;p=(l[p+1>>0]|0)<<8&16128|(l[p>>0]|0);o=t+48|0;k[o>>2]=p;break}case 2:{if((q|0)<3){h=0;break a}k[t+44>>2]=q+-3;p=s+q+-3|0;p=(l[p+1>>0]|0)<<8|(l[p>>0]|0)|(l[p+2>>0]|0)<<16&4128768;o=t+48|0;k[o>>2]=p;break}case 3:{k[t+44>>2]=q+-4;p=s+q+-4|0;p=(l[p+2>>0]|0)<<16|(l[p+3>>0]|0)<<24&1056964608|(l[p+1>>0]|0)<<8|(l[p>>0]|0);o=t+48|0;k[o>>2]=p;break}default:{}}d=p+131072|0;k[o>>2]=d;d=d>>>0>33554431;if(d|n^1)h=d^1;else{g=t+48|0;h=t+44|0;i=t+16|0;b=t+28|0;f=0;d=k[g>>2]|0;while(1){b:do if(d>>>0<131072){e=k[h>>2]|0;do{if((e|0)<=0)break b;e=e+-1|0;k[h>>2]=e;d=l[(k[j>>2]|0)+e>>0]|0|d<<8;k[g>>2]=d}while(d>>>0<131072)}while(0);p=d&32767;s=k[(k[i>>2]|0)+(p<<2)>>2]|0;q=k[b>>2]|0;d=($(k[q+(s<<3)>>2]|0,d>>>15)|0)+p-(k[q+(s<<3)+4>>2]|0)|0;k[g>>2]=d;k[c+(f<<2)>>2]=s;f=f+1|0;if((f|0)==(a|0)){h=1;break}}}}else h=0}else h=0;while(0);d=k[t+28>>2]|0;e=d;if(d|0){f=t+32|0;g=k[f>>2]|0;if((g|0)!=(d|0))k[f>>2]=g+(~((g+-8-e|0)>>>3)<<3);gl(d)}d=k[t+16>>2]|0;e=d;if(d|0){f=t+20|0;g=k[f>>2]|0;if((g|0)!=(d|0))k[f>>2]=g+(~((g+-4-e|0)>>>2)<<2);gl(d)}f=k[t>>2]|0;if(!f){r=u;return h|0}d=t+4|0;e=k[d>>2]|0;if((e|0)!=(f|0))k[d>>2]=e+(~((e+-4-f|0)>>>2)<<2);gl(f);r=u;return h|0}function yc(a,b,c){a=a|0;b=b|0;c=c|0;var d=0,e=0,f=0,g=0,h=0,i=0,j=0,m=0,n=0,o=0,p=0,q=0,s=0,t=0,u=0;u=r;r=r+64|0;t=u;d=t;e=d+40|0;do{k[d>>2]=0;d=d+4|0}while((d|0)<(e|0));a:do if(Zd(t,b)|0){n=(a|0)>0;if(n?(k[t+12>>2]|0)==0:0){h=0;break}e=b+8|0;d=k[e>>2]|0;e=k[e+4>>2]|0;f=b+16|0;h=f;g=k[h>>2]|0;h=Bj(g|0,k[h+4>>2]|0,8,0)|0;i=M;if((!((e|0)<(i|0)|(e|0)==(i|0)&d>>>0>>0)?(j=k[b>>2]|0,m=j+g|0,q=m,q=l[q>>0]|l[q+1>>0]<<8|l[q+2>>0]<<16|l[q+3>>0]<<24,m=m+4|0,m=l[m>>0]|l[m+1>>0]<<8|l[m+2>>0]<<16|l[m+3>>0]<<24,b=f,k[b>>2]=h,k[b+4>>2]=i,b=nj(d|0,e|0,h|0,i|0)|0,g=M,!(m>>>0>g>>>0|(m|0)==(g|0)&q>>>0>b>>>0)):0)?(s=j+h|0,j=Bj(q|0,m|0,h|0,i|0)|0,m=f,k[m>>2]=j,k[m+4>>2]=M,(q|0)>=1):0){j=t+40|0;k[j>>2]=s;d=q+-1|0;e=s+d|0;switch((l[e>>0]|0)>>>6&3){case 0:{k[t+44>>2]=d;p=(l[e>>0]|0)&63;o=t+48|0;k[o>>2]=p;break}case 1:{if((q|0)<2){h=0;break a}k[t+44>>2]=q+-2;p=s+q+-2|0;p=(l[p+1>>0]|0)<<8&16128|(l[p>>0]|0);o=t+48|0;k[o>>2]=p;break}case 2:{if((q|0)<3){h=0;break a}k[t+44>>2]=q+-3;p=s+q+-3|0;p=(l[p+1>>0]|0)<<8|(l[p>>0]|0)|(l[p+2>>0]|0)<<16&4128768;o=t+48|0;k[o>>2]=p;break}case 3:{k[t+44>>2]=q+-4;p=s+q+-4|0;p=(l[p+2>>0]|0)<<16|(l[p+3>>0]|0)<<24&1056964608|(l[p+1>>0]|0)<<8|(l[p>>0]|0);o=t+48|0;k[o>>2]=p;break}default:{}}d=p+32768|0;k[o>>2]=d;d=d>>>0>8388607;if(d|n^1)h=d^1;else{g=t+48|0;h=t+44|0;i=t+16|0;b=t+28|0;f=0;d=k[g>>2]|0;while(1){b:do if(d>>>0<32768){e=k[h>>2]|0;do{if((e|0)<=0)break b;e=e+-1|0;k[h>>2]=e;d=l[(k[j>>2]|0)+e>>0]|0|d<<8;k[g>>2]=d}while(d>>>0<32768)}while(0);p=d&8191;s=k[(k[i>>2]|0)+(p<<2)>>2]|0;q=k[b>>2]|0;d=($(k[q+(s<<3)>>2]|0,d>>>13)|0)+p-(k[q+(s<<3)+4>>2]|0)|0;k[g>>2]=d;k[c+(f<<2)>>2]=s;f=f+1|0;if((f|0)==(a|0)){h=1;break}}}}else h=0}else h=0;while(0);d=k[t+28>>2]|0;e=d;if(d|0){f=t+32|0;g=k[f>>2]|0;if((g|0)!=(d|0))k[f>>2]=g+(~((g+-8-e|0)>>>3)<<3);gl(d)}d=k[t+16>>2]|0;e=d;if(d|0){f=t+20|0;g=k[f>>2]|0;if((g|0)!=(d|0))k[f>>2]=g+(~((g+-4-e|0)>>>2)<<2);gl(d)}f=k[t>>2]|0;if(!f){r=u;return h|0}d=t+4|0;e=k[d>>2]|0;if((e|0)!=(f|0))k[d>>2]=e+(~((e+-4-f|0)>>>2)<<2);gl(f);r=u;return h|0}function zc(a,b,c){a=a|0;b=b|0;c=c|0;var d=0,e=0,f=0,g=0,h=0,i=0,j=0,m=0,n=0,o=0,p=0,q=0,s=0,t=0,u=0;u=r;r=r+64|0;t=u;d=t;e=d+40|0;do{k[d>>2]=0;d=d+4|0}while((d|0)<(e|0));a:do if(_d(t,b)|0){n=(a|0)>0;if(n?(k[t+12>>2]|0)==0:0){h=0;break}e=b+8|0;d=k[e>>2]|0;e=k[e+4>>2]|0;f=b+16|0;h=f;g=k[h>>2]|0;h=Bj(g|0,k[h+4>>2]|0,8,0)|0;i=M;if((!((e|0)<(i|0)|(e|0)==(i|0)&d>>>0>>0)?(j=k[b>>2]|0,m=j+g|0,q=m,q=l[q>>0]|l[q+1>>0]<<8|l[q+2>>0]<<16|l[q+3>>0]<<24,m=m+4|0,m=l[m>>0]|l[m+1>>0]<<8|l[m+2>>0]<<16|l[m+3>>0]<<24,b=f,k[b>>2]=h,k[b+4>>2]=i,b=nj(d|0,e|0,h|0,i|0)|0,g=M,!(m>>>0>g>>>0|(m|0)==(g|0)&q>>>0>b>>>0)):0)?(s=j+h|0,j=Bj(q|0,m|0,h|0,i|0)|0,m=f,k[m>>2]=j,k[m+4>>2]=M,(q|0)>=1):0){j=t+40|0;k[j>>2]=s;d=q+-1|0;e=s+d|0;switch((l[e>>0]|0)>>>6&3){case 0:{k[t+44>>2]=d;p=(l[e>>0]|0)&63;o=t+48|0;k[o>>2]=p;break}case 1:{if((q|0)<2){h=0;break a}k[t+44>>2]=q+-2;p=s+q+-2|0;p=(l[p+1>>0]|0)<<8&16128|(l[p>>0]|0);o=t+48|0;k[o>>2]=p;break}case 2:{if((q|0)<3){h=0;break a}k[t+44>>2]=q+-3;p=s+q+-3|0;p=(l[p+1>>0]|0)<<8|(l[p>>0]|0)|(l[p+2>>0]|0)<<16&4128768;o=t+48|0;k[o>>2]=p;break}case 3:{k[t+44>>2]=q+-4;p=s+q+-4|0;p=(l[p+2>>0]|0)<<16|(l[p+3>>0]|0)<<24&1056964608|(l[p+1>>0]|0)<<8|(l[p>>0]|0);o=t+48|0;k[o>>2]=p;break}default:{}}d=p+16384|0;k[o>>2]=d;d=d>>>0>4194303;if(d|n^1)h=d^1;else{g=t+48|0;h=t+44|0;i=t+16|0;b=t+28|0;f=0;d=k[g>>2]|0;while(1){b:do if(d>>>0<16384){e=k[h>>2]|0;do{if((e|0)<=0)break b;e=e+-1|0;k[h>>2]=e;d=l[(k[j>>2]|0)+e>>0]|0|d<<8;k[g>>2]=d}while(d>>>0<16384)}while(0);p=d&4095;s=k[(k[i>>2]|0)+(p<<2)>>2]|0;q=k[b>>2]|0;d=($(k[q+(s<<3)>>2]|0,d>>>12)|0)+p-(k[q+(s<<3)+4>>2]|0)|0;k[g>>2]=d;k[c+(f<<2)>>2]=s;f=f+1|0;if((f|0)==(a|0)){h=1;break}}}}else h=0}else h=0;while(0);d=k[t+28>>2]|0;e=d;if(d|0){f=t+32|0;g=k[f>>2]|0;if((g|0)!=(d|0))k[f>>2]=g+(~((g+-8-e|0)>>>3)<<3);gl(d)}d=k[t+16>>2]|0;e=d;if(d|0){f=t+20|0;g=k[f>>2]|0;if((g|0)!=(d|0))k[f>>2]=g+(~((g+-4-e|0)>>>2)<<2);gl(d)}f=k[t>>2]|0;if(!f){r=u;return h|0}d=t+4|0;e=k[d>>2]|0;if((e|0)!=(f|0))k[d>>2]=e+(~((e+-4-f|0)>>>2)<<2);gl(f);r=u;return h|0}function Ac(a,b){a=a|0;b=b|0;var c=0,d=0,e=0,f=0,g=0,h=0,i=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0;d=a+4|0;if(!b){c=k[a>>2]|0;k[a>>2]=0;if(c|0)gl(c);k[d>>2]=0;return}if(b>>>0>1073741823){a=Ma(4)|0;Tk(a);xa(a|0,856,71)}q=Si(b<<2)|0;c=k[a>>2]|0;k[a>>2]=q;if(c|0)gl(c);k[d>>2]=b;c=0;do{k[(k[a>>2]|0)+(c<<2)>>2]=0;c=c+1|0}while((c|0)!=(b|0));d=a+8|0;g=k[d>>2]|0;if(!g)return;c=k[g+4>>2]|0;p=b+-1|0;q=(p&b|0)==0;if(q)c=c&p;else c=(c>>>0)%(b>>>0)|0;k[(k[a>>2]|0)+(c<<2)>>2]=d;d=k[g>>2]|0;if(!d)return;else{e=c;f=g;c=g}a:while(1){o=c;b:while(1){c:do if(q){c=d;while(1){n=k[c+4>>2]&p;if((n|0)==(e|0))break c;d=(k[a>>2]|0)+(n<<2)|0;if(!(k[d>>2]|0)){e=n;break b}i=c+10|0;l=c+12|0;m=c+14|0;g=k[c>>2]|0;d:do if(!g)d=c;else{h=j[c+8>>1]|0;d=c;while(1){if(h<<16>>16!=(j[g+8>>1]|0))break d;if((j[i>>1]|0)!=(j[g+10>>1]|0))break d;if((j[l>>1]|0)!=(j[g+12>>1]|0))break d;if((j[m>>1]|0)!=(j[g+14>>1]|0))break d;d=k[g>>2]|0;if(!d){d=g;break}else{r=g;g=d;d=r}}}while(0);k[o>>2]=k[d>>2];k[d>>2]=k[k[(k[a>>2]|0)+(n<<2)>>2]>>2];k[k[(k[a>>2]|0)+(n<<2)>>2]>>2]=c;c=k[f>>2]|0;if(!c){c=40;break a}}}else{c=d;while(1){n=((k[c+4>>2]|0)>>>0)%(b>>>0)|0;if((n|0)==(e|0))break c;d=(k[a>>2]|0)+(n<<2)|0;if(!(k[d>>2]|0)){e=n;break b}h=c+10|0;i=c+12|0;l=c+14|0;g=k[c>>2]|0;e:do if(!g)d=c;else{m=j[c+8>>1]|0;d=c;while(1){if(m<<16>>16!=(j[g+8>>1]|0))break e;if((j[h>>1]|0)!=(j[g+10>>1]|0))break e;if((j[i>>1]|0)!=(j[g+12>>1]|0))break e;if((j[l>>1]|0)!=(j[g+14>>1]|0))break e;d=k[g>>2]|0;if(!d){d=g;break}else{r=g;g=d;d=r}}}while(0);k[o>>2]=k[d>>2];k[d>>2]=k[k[(k[a>>2]|0)+(n<<2)>>2]>>2];k[k[(k[a>>2]|0)+(n<<2)>>2]>>2]=c;c=k[f>>2]|0;if(!c){c=40;break a}}}while(0);d=k[c>>2]|0;if(!d){c=40;break a}else{f=c;o=c}}k[d>>2]=o;d=k[c>>2]|0;if(!d){c=40;break}else f=c}if((c|0)==40)return}function Bc(a,b){a=a|0;b=b|0;var c=0,d=0,e=0,f=0,g=0,h=0,i=0,j=0,l=0,m=0,n=0,o=0,p=0,q=0;d=a+4|0;if(!b){c=k[a>>2]|0;k[a>>2]=0;if(c|0)gl(c);k[d>>2]=0;return}if(b>>>0>1073741823){a=Ma(4)|0;Tk(a);xa(a|0,856,71)}p=Si(b<<2)|0;c=k[a>>2]|0;k[a>>2]=p;if(c|0)gl(c);k[d>>2]=b;c=0;do{k[(k[a>>2]|0)+(c<<2)>>2]=0;c=c+1|0}while((c|0)!=(b|0));d=a+8|0;g=k[d>>2]|0;if(!g)return;c=k[g+4>>2]|0;o=b+-1|0;p=(o&b|0)==0;if(p)c=c&o;else c=(c>>>0)%(b>>>0)|0;k[(k[a>>2]|0)+(c<<2)>>2]=d;d=k[g>>2]|0;if(!d)return;else{e=c;f=g;c=g}a:while(1){n=c;b:while(1){c:do if(p){c=d;while(1){m=k[c+4>>2]&o;if((m|0)==(e|0))break c;d=(k[a>>2]|0)+(m<<2)|0;if(!(k[d>>2]|0)){e=m;break b}i=c+12|0;j=c+16|0;l=c+20|0;g=k[c>>2]|0;d:do if(!g)d=c;else{h=k[c+8>>2]|0;d=c;while(1){if((h|0)!=(k[g+8>>2]|0))break d;if((k[i>>2]|0)!=(k[g+12>>2]|0))break d;if((k[j>>2]|0)!=(k[g+16>>2]|0))break d;if((k[l>>2]|0)!=(k[g+20>>2]|0))break d;d=k[g>>2]|0;if(!d){d=g;break}else{q=g;g=d;d=q}}}while(0);k[n>>2]=k[d>>2];k[d>>2]=k[k[(k[a>>2]|0)+(m<<2)>>2]>>2];k[k[(k[a>>2]|0)+(m<<2)>>2]>>2]=c;c=k[f>>2]|0;if(!c){c=40;break a}}}else{c=d;while(1){m=((k[c+4>>2]|0)>>>0)%(b>>>0)|0;if((m|0)==(e|0))break c;d=(k[a>>2]|0)+(m<<2)|0;if(!(k[d>>2]|0)){e=m;break b}h=c+12|0;i=c+16|0;j=c+20|0;g=k[c>>2]|0;e:do if(!g)d=c;else{l=k[c+8>>2]|0;d=c;while(1){if((l|0)!=(k[g+8>>2]|0))break e;if((k[h>>2]|0)!=(k[g+12>>2]|0))break e;if((k[i>>2]|0)!=(k[g+16>>2]|0))break e;if((k[j>>2]|0)!=(k[g+20>>2]|0))break e;d=k[g>>2]|0;if(!d){d=g;break}else{q=g;g=d;d=q}}}while(0);k[n>>2]=k[d>>2];k[d>>2]=k[k[(k[a>>2]|0)+(m<<2)>>2]>>2];k[k[(k[a>>2]|0)+(m<<2)>>2]>>2]=c;c=k[f>>2]|0;if(!c){c=40;break a}}}while(0);d=k[c>>2]|0;if(!d){c=40;break a}else{f=c;n=c}}k[d>>2]=n;d=k[c>>2]|0;if(!d){c=40;break}else f=c}if((c|0)==40)return}function Cc(a,b){a=a|0;b=b|0;var c=0,d=0,e=0,f=0,g=0,h=0,j=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0;d=a+4|0;if(!b){c=k[a>>2]|0;k[a>>2]=0;if(c|0)gl(c);k[d>>2]=0;return}if(b>>>0>1073741823){a=Ma(4)|0;Tk(a);xa(a|0,856,71)}q=Si(b<<2)|0;c=k[a>>2]|0;k[a>>2]=q;if(c|0)gl(c);k[d>>2]=b;c=0;do{k[(k[a>>2]|0)+(c<<2)>>2]=0;c=c+1|0}while((c|0)!=(b|0));d=a+8|0;g=k[d>>2]|0;if(!g)return;c=k[g+4>>2]|0;p=b+-1|0;q=(p&b|0)==0;if(q)c=c&p;else c=(c>>>0)%(b>>>0)|0;k[(k[a>>2]|0)+(c<<2)>>2]=d;d=k[g>>2]|0;if(!d)return;else{e=c;f=g;c=g}a:while(1){o=c;b:while(1){c:do if(q){c=d;while(1){n=k[c+4>>2]&p;if((n|0)==(e|0))break c;d=(k[a>>2]|0)+(n<<2)|0;if(!(k[d>>2]|0)){e=n;break b}j=c+9|0;l=c+10|0;m=c+11|0;g=k[c>>2]|0;d:do if(!g)d=c;else{h=i[c+8>>0]|0;d=c;while(1){if(h<<24>>24!=(i[g+8>>0]|0))break d;if((i[j>>0]|0)!=(i[g+9>>0]|0))break d;if((i[l>>0]|0)!=(i[g+10>>0]|0))break d;if((i[m>>0]|0)!=(i[g+11>>0]|0))break d;d=k[g>>2]|0;if(!d){d=g;break}else{r=g;g=d;d=r}}}while(0);k[o>>2]=k[d>>2];k[d>>2]=k[k[(k[a>>2]|0)+(n<<2)>>2]>>2];k[k[(k[a>>2]|0)+(n<<2)>>2]>>2]=c;c=k[f>>2]|0;if(!c){c=40;break a}}}else{c=d;while(1){n=((k[c+4>>2]|0)>>>0)%(b>>>0)|0;if((n|0)==(e|0))break c;d=(k[a>>2]|0)+(n<<2)|0;if(!(k[d>>2]|0)){e=n;break b}h=c+9|0;j=c+10|0;l=c+11|0;g=k[c>>2]|0;e:do if(!g)d=c;else{m=i[c+8>>0]|0;d=c;while(1){if(m<<24>>24!=(i[g+8>>0]|0))break e;if((i[h>>0]|0)!=(i[g+9>>0]|0))break e;if((i[j>>0]|0)!=(i[g+10>>0]|0))break e;if((i[l>>0]|0)!=(i[g+11>>0]|0))break e;d=k[g>>2]|0;if(!d){d=g;break}else{r=g;g=d;d=r}}}while(0);k[o>>2]=k[d>>2];k[d>>2]=k[k[(k[a>>2]|0)+(n<<2)>>2]>>2];k[k[(k[a>>2]|0)+(n<<2)>>2]>>2]=c;c=k[f>>2]|0;if(!c){c=40;break a}}}while(0);d=k[c>>2]|0;if(!d){c=40;break a}else{f=c;o=c}}k[d>>2]=o;d=k[c>>2]|0;if(!d){c=40;break}else f=c}if((c|0)==40)return}function Dc(a,b,c,d,e,f){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;f=f|0;var g=0,h=0,i=0,j=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0;x=a+8|0;k[x>>2]=e;u=e>>>0>1073741823?-1:e<<2;y=dl(u)|0;Ah(y|0,0,u|0)|0;z=dl(u)|0;Ah(z|0,0,u|0)|0;Sf(x,y,b,c,0);u=k[a+24>>2]|0;v=a+32|0;f=k[v>>2]|0;h=k[f+4>>2]|0;g=k[f>>2]|0;t=h-g|0;w=t>>2;if((t|0)<=4){el(z);el(y);return 1}q=k[a+28>>2]|0;r=(e|0)>0;s=u+12|0;t=e<<2;d=1;a=h;while(1){if(a-g>>2>>>0<=d>>>0){A=6;break}p=k[g+(d<<2)>>2]|0;if(r)Ah(y|0,0,t|0)|0;if((p|0)>-1){o=k[s>>2]|0;g=0;n=p;do{a=k[o+(n<<2)>>2]|0;if((a|0)>=0){i=k[u>>2]|0;h=(a>>>0)%3|0;j=k[q>>2]|0;m=k[j+(k[i+(((a>>>0)/3|0)*12|0)+(h<<2)>>2]<<2)>>2]|0;f=a+1|0;f=((f|0)%3|0|0)==0?a+-2|0:f;if((f|0)<0)f=-1073741824;else f=k[i+(((f>>>0)/3|0)*12|0)+(((f>>>0)%3|0)<<2)>>2]|0;l=k[j+(f<<2)>>2]|0;f=((h|0)==0?2:-1)+a|0;if((f|0)<0)f=-1073741824;else f=k[i+(((f>>>0)/3|0)*12|0)+(((f>>>0)%3|0)<<2)>>2]|0;f=k[j+(f<<2)>>2]|0;if((m|0)<(d|0)&(l|0)<(d|0)&(f|0)<(d|0)){i=$(m,e)|0;h=$(l,e)|0;a=$(f,e)|0;if(r){f=0;do{k[z+(f<<2)>>2]=(k[c+(f+a<<2)>>2]|0)+(k[c+(f+h<<2)>>2]|0)-(k[c+(f+i<<2)>>2]|0);f=f+1|0}while((f|0)!=(e|0));if(r){f=0;do{m=y+(f<<2)|0;k[m>>2]=(k[m>>2]|0)+(k[z+(f<<2)>>2]|0);f=f+1|0}while((f|0)!=(e|0))}}g=g+1|0}}f=(((n>>>0)%3|0|0)==0?2:-1)+n|0;do if((f|0)>=0){f=k[o+(f<<2)>>2]|0;if((f|0)>=0)if(!((f>>>0)%3|0)){f=f+2|0;break}else{f=f+-1|0;break}}while(0);n=(f|0)==(p|0)?-1073741824:f}while((n|0)>-1);f=$(d,e)|0;if(!g)A=30;else{if(r){a=0;do{p=y+(a<<2)|0;k[p>>2]=(k[p>>2]|0)/(g|0)|0;a=a+1|0}while((a|0)!=(e|0))}Sf(x,y,b,c+(f<<2)|0,f)}}else{f=$(d,e)|0;A=30}if((A|0)==30){A=0;Sf(x,c+(($(d+-1|0,e)|0)<<2)|0,b,c+(f<<2)|0,f)}d=d+1|0;if((d|0)>=(w|0)){A=3;break}f=k[v>>2]|0;g=k[f>>2]|0;a=k[f+4>>2]|0}if((A|0)==3){el(z);el(y);return 1}else if((A|0)==6)lk(f);return 0}function Ec(a,b,c){a=a|0;b=b|0;c=c|0;var d=0,e=0,f=0,g=0,h=0,j=0,m=0,n=0;n=r;r=r+32|0;d=n+24|0;e=n+20|0;f=n+16|0;g=n+12|0;h=n+8|0;j=n+4|0;m=n;if(!c){c=0;r=n;return c|0}switch(k[a+28>>2]|0){case 9:{d=k[b>>2]|0;switch(i[a+24>>0]|0){case 1:{m=a+48|0;j=k[m>>2]|0;m=k[m+4>>2]|0;h=a+40|0;a=(Bj(Pi(k[h>>2]|0,k[h+4>>2]|0,d|0,((d|0)<0)<<31>>31|0)|0,M|0,j|0,m|0)|0)+(k[k[a>>2]>>2]|0)|0;k[c>>2]=l[a>>0]|l[a+1>>0]<<8|l[a+2>>0]<<16|l[a+3>>0]<<24;c=c+4|0;k[c>>2]=0;k[c+4>>2]=0;k[c+8>>2]=0;c=1;r=n;return c|0}case 2:{m=a+48|0;j=k[m>>2]|0;m=k[m+4>>2]|0;h=a+40|0;m=(Bj(Pi(k[h>>2]|0,k[h+4>>2]|0,d|0,((d|0)<0)<<31>>31|0)|0,M|0,j|0,m|0)|0)+(k[k[a>>2]>>2]|0)|0;j=m;m=m+4|0;m=l[m>>0]|l[m+1>>0]<<8|l[m+2>>0]<<16|l[m+3>>0]<<24;a=c;k[a>>2]=l[j>>0]|l[j+1>>0]<<8|l[j+2>>0]<<16|l[j+3>>0]<<24;k[a+4>>2]=m;c=c+8|0;k[c>>2]=0;k[c+4>>2]=0;c=1;r=n;return c|0}case 3:{m=a+48|0;j=k[m>>2]|0;m=k[m+4>>2]|0;h=a+40|0;ti(c|0,(Bj(Pi(k[h>>2]|0,k[h+4>>2]|0,d|0,((d|0)<0)<<31>>31|0)|0,M|0,j|0,m|0)|0)+(k[k[a>>2]>>2]|0)|0,12)|0;o[c+12>>2]=da(0.0);c=1;r=n;return c|0}case 4:{m=a+48|0;j=k[m>>2]|0;m=k[m+4>>2]|0;h=a+40|0;ti(c|0,(Bj(Pi(k[h>>2]|0,k[h+4>>2]|0,d|0,((d|0)<0)<<31>>31|0)|0,M|0,j|0,m|0)|0)+(k[k[a>>2]>>2]|0)|0,16)|0;c=1;r=n;return c|0}default:{c=0;r=n;return c|0}}}case 2:{k[e>>2]=k[b>>2];k[d>>2]=k[e>>2];c=hd(a,d,c)|0;r=n;return c|0}case 1:{k[f>>2]=k[b>>2];k[d>>2]=k[f>>2];c=dd(a,d,c)|0;r=n;return c|0}case 4:{k[g>>2]=k[b>>2];k[d>>2]=k[g>>2];c=Uc(a,d,c)|0;r=n;return c|0}case 3:{k[h>>2]=k[b>>2];k[d>>2]=k[h>>2];c=Pc(a,d,c)|0;r=n;return c|0}case 6:{k[j>>2]=k[b>>2];k[d>>2]=k[j>>2];c=rc(a,d,c)|0;r=n;return c|0}case 5:{k[m>>2]=k[b>>2];k[d>>2]=k[m>>2];c=sc(a,d,c)|0;r=n;return c|0}default:{c=0;r=n;return c|0}}return 0}function Fc(a,b,c,d){a=a|0;b=b|0;c=c|0;d=d|0;var e=0,f=0,g=0,h=0,i=0,j=0,l=0,m=0,n=0,o=0,p=0.0;o=b+8|0;f=k[o>>2]|0;n=c+4|0;l=(k[n>>2]|0)-f|0;e=c;k[e>>2]=(k[c>>2]|0)-f;k[e+4>>2]=l;e=(k[d>>2]|0)-f|0;l=d+4|0;f=(k[l>>2]|0)-f|0;g=d;k[g>>2]=e;k[g+4>>2]=f;p=+O(+(+(e|0)))+ +O(+(+(f|0)));g=k[o>>2]|0;if(!(p<=+(g|0))){e=k[c>>2]|0;f=k[n>>2]|0;if((e|0)>-1)if((f|0)<=-1)if((e|0)<1){h=-1;i=-1}else m=6;else{h=1;i=1}else if((f|0)<1){h=-1;i=-1}else m=6;if((m|0)==6){h=(e|0)>0?1:-1;i=(f|0)>0?1:-1}j=$(g,h)|0;g=$(g,i)|0;e=(e<<1)-j|0;k[c>>2]=e;f=(f<<1)-g|0;k[n>>2]=f;if(($(h,i)|0)>-1){f=0-f|0;k[c>>2]=f;e=0-e|0}else k[c>>2]=f;k[c>>2]=(f+j|0)/2|0;k[n>>2]=(e+g|0)/2|0;e=k[d>>2]|0;f=k[l>>2]|0;if((e|0)>-1)if((f|0)<=-1)if((e|0)<1){g=-1;h=-1}else m=14;else{g=1;h=1}else if((f|0)<1){g=-1;h=-1}else m=14;if((m|0)==14){g=(e|0)>0?1:-1;h=(f|0)>0?1:-1}j=k[o>>2]|0;i=$(j,g)|0;j=$(j,h)|0;e=(e<<1)-i|0;k[d>>2]=e;f=(f<<1)-j|0;k[l>>2]=f;if(($(g,h)|0)>-1){f=0-f|0;k[d>>2]=f;e=0-e|0}else k[d>>2]=f;i=(f+i|0)/2|0;k[d>>2]=i;f=(e+j|0)/2|0;k[l>>2]=f;e=i}if(!e){if(f)m=22}else if(!((e|0)<0&(f|0)<1))m=22;if((m|0)==22){do if(!e)if(!f){f=k[n>>2]|0;e=c;k[e>>2]=k[c>>2];k[e+4>>2]=f;e=k[d>>2]|0;f=k[l>>2]|0;break}else{g=(f|0)>0?3:1;m=29;break}else if((e|0)>0){g=(f>>31)+2|0;m=29;break}else{g=(f|0)<1?0:3;m=29;break}while(0);a:do if((m|0)==29){e=k[c>>2]|0;f=k[n>>2]|0;switch(g|0){case 1:{m=c;k[m>>2]=f;k[m+4>>2]=0-e;e=k[l>>2]|0;f=0-(k[d>>2]|0)|0;break a}case 2:{m=c;k[m>>2]=0-e;k[m+4>>2]=0-f;e=0-(k[d>>2]|0)|0;f=0-(k[l>>2]|0)|0;break a}case 3:{m=c;k[m>>2]=0-f;k[m+4>>2]=e;e=0-(k[l>>2]|0)|0;f=k[d>>2]|0;break a}default:{m=c;k[m>>2]=e;k[m+4>>2]=f;e=k[d>>2]|0;f=k[l>>2]|0;break a}}}while(0);m=d;k[m>>2]=e;k[m+4>>2]=f}e=(k[c>>2]|0)-e|0;k[a>>2]=e;g=(k[n>>2]|0)-f|0;h=a+4|0;k[h>>2]=g;f=k[o>>2]<<1;if((f|0)<(e|0))Ka(8863,8276,225,8887);if((e|0)<0)e=(k[b+4>>2]|0)+e|0;k[a>>2]=e;if((f|0)<(g|0))Ka(8863,8276,225,8887);if((g|0)>=0){b=g;k[h>>2]=b;return}b=(k[b+4>>2]|0)+g|0;k[h>>2]=b;return}function Gc(a,b,c,d,e,f){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;f=f|0;var g=0,h=0,i=0,j=0,l=0,m=0,n=0,o=0,p=0,q=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0;A=r;r=r+16|0;y=A+4|0;z=A;k[a+72>>2]=e;k[a+64>>2]=f;x=a+68|0;w=dl(e>>>0>1073741823?-1:e<<2)|0;f=k[x>>2]|0;k[x>>2]=w;if(f|0)el(f);w=a+8|0;k[w>>2]=e;do if(d|0){f=k[b>>2]|0;j=a+16|0;k[j>>2]=f;l=a+12|0;k[l>>2]=f;if((d|0)>1){i=1;h=f;while(1){g=k[b+(i<<2)>>2]|0;if((g|0)>=(h|0))if((g|0)>(f|0)){k[j>>2]=g;f=g;g=h}else g=h;else k[l>>2]=g;i=i+1|0;if((i|0)==(d|0))break;else h=g}}else g=f;v=1-g+f|0;k[a+20>>2]=v;f=(v|0)/2|0;g=a+24|0;k[g>>2]=f;k[a+28>>2]=0-f;if(!(v&1))k[g>>2]=f+-1;f=a+32|0;g=a+36|0;j=k[g>>2]|0;h=k[f>>2]|0;i=j-h>>2;if(i>>>0>>0){eg(f,e-i|0);break}if(i>>>0>e>>>0?(m=h+(e<<2)|0,(j|0)!=(m|0)):0)k[g>>2]=j+(~((j+-4-m|0)>>>2)<<2)}while(0);o=a+56|0;i=k[o>>2]|0;h=k[i+4>>2]|0;g=k[i>>2]|0;f=h-g|0;if((f|0)<=0){r=A;return 1}p=a+16|0;q=a+32|0;s=a+12|0;t=a+28|0;u=a+20|0;v=a+24|0;f=(f>>2)+-1|0;while(1){if(h-g>>2>>>0<=f>>>0){f=22;break}k[z>>2]=k[g+(f<<2)>>2];k[y>>2]=k[z>>2];bc(a,y,b,f);n=$(f,e)|0;m=b+(n<<2)|0;d=k[x>>2]|0;if((k[w>>2]|0)>0){l=0;do{j=k[d+(l<<2)>>2]|0;g=k[p>>2]|0;do if((j|0)<=(g|0)){g=k[s>>2]|0;i=k[q>>2]|0;h=i+(l<<2)|0;if((j|0)<(g|0)){k[h>>2]=g;break}else{k[h>>2]=j;break}}else{i=k[q>>2]|0;k[i+(l<<2)>>2]=g}while(0);l=l+1|0;g=k[w>>2]|0}while((l|0)<(g|0));if((g|0)>0){g=0;do{k[c+(g+n<<2)>>2]=(k[m+(g<<2)>>2]|0)-(k[i+(g<<2)>>2]|0);g=g+1|0;h=k[w>>2]|0}while((g|0)<(h|0));if((h|0)>0){g=0;do{h=c+(g+n<<2)|0;i=k[h>>2]|0;if((i|0)>=(k[t>>2]|0)){if((i|0)>(k[v>>2]|0))k[h>>2]=i-(k[u>>2]|0)}else k[h>>2]=(k[u>>2]|0)+i;g=g+1|0}while((g|0)<(k[w>>2]|0))}}}f=f+-1|0;if((f|0)<=-1){f=19;break}i=k[o>>2]|0;g=k[i>>2]|0;h=k[i+4>>2]|0}if((f|0)==19){r=A;return 1}else if((f|0)==22)lk(i);return 0}function Hc(a,b,c,d,e,f){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;f=f|0;var g=0,h=0,i=0,j=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0;x=a+8|0;k[x>>2]=e;u=e>>>0>1073741823?-1:e<<2;y=dl(u)|0;Ah(y|0,0,u|0)|0;z=dl(u)|0;Ah(z|0,0,u|0)|0;Uf(x,y,b,c,0);u=k[a+24>>2]|0;v=a+32|0;f=k[v>>2]|0;h=k[f+4>>2]|0;g=k[f>>2]|0;t=h-g|0;w=t>>2;if((t|0)<=4){el(z);el(y);return 1}q=k[a+28>>2]|0;r=(e|0)>0;s=u+12|0;t=e<<2;d=1;a=h;while(1){if(a-g>>2>>>0<=d>>>0){A=6;break}p=k[g+(d<<2)>>2]|0;if(r)Ah(y|0,0,t|0)|0;if((p|0)>-1){o=k[s>>2]|0;g=0;n=p;do{a=k[o+(n<<2)>>2]|0;if((a|0)>=0){i=k[u>>2]|0;h=(a>>>0)%3|0;j=k[q>>2]|0;m=k[j+(k[i+(((a>>>0)/3|0)*12|0)+(h<<2)>>2]<<2)>>2]|0;f=a+1|0;f=((f|0)%3|0|0)==0?a+-2|0:f;if((f|0)<0)f=-1073741824;else f=k[i+(((f>>>0)/3|0)*12|0)+(((f>>>0)%3|0)<<2)>>2]|0;l=k[j+(f<<2)>>2]|0;f=((h|0)==0?2:-1)+a|0;if((f|0)<0)f=-1073741824;else f=k[i+(((f>>>0)/3|0)*12|0)+(((f>>>0)%3|0)<<2)>>2]|0;f=k[j+(f<<2)>>2]|0;if((m|0)<(d|0)&(l|0)<(d|0)&(f|0)<(d|0)){i=$(m,e)|0;h=$(l,e)|0;a=$(f,e)|0;if(r){f=0;do{k[z+(f<<2)>>2]=(k[c+(f+a<<2)>>2]|0)+(k[c+(f+h<<2)>>2]|0)-(k[c+(f+i<<2)>>2]|0);f=f+1|0}while((f|0)!=(e|0));if(r){f=0;do{m=y+(f<<2)|0;k[m>>2]=(k[m>>2]|0)+(k[z+(f<<2)>>2]|0);f=f+1|0}while((f|0)!=(e|0))}}g=g+1|0}}f=(((n>>>0)%3|0|0)==0?2:-1)+n|0;do if((f|0)>=0){f=k[o+(f<<2)>>2]|0;if((f|0)>=0)if(!((f>>>0)%3|0)){f=f+2|0;break}else{f=f+-1|0;break}}while(0);n=(f|0)==(p|0)?-1073741824:f}while((n|0)>-1);f=$(d,e)|0;if(!g)A=30;else{if(r){a=0;do{p=y+(a<<2)|0;k[p>>2]=(k[p>>2]|0)/(g|0)|0;a=a+1|0}while((a|0)!=(e|0))}Uf(x,y,b,c+(f<<2)|0,f)}}else{f=$(d,e)|0;A=30}if((A|0)==30){A=0;Uf(x,c+(($(d+-1|0,e)|0)<<2)|0,b,c+(f<<2)|0,f)}d=d+1|0;if((d|0)>=(w|0)){A=3;break}f=k[v>>2]|0;g=k[f>>2]|0;a=k[f+4>>2]|0}if((A|0)==3){el(z);el(y);return 1}else if((A|0)==6)lk(f);return 0}function Ic(a,b,c,d,e,f){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;f=f|0;var g=0,h=0,i=0,j=0,l=0,m=0,n=0,o=0,p=0,q=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0;A=r;r=r+16|0;y=A+4|0;z=A;k[a+72>>2]=e;k[a+64>>2]=f;x=a+68|0;w=dl(e>>>0>1073741823?-1:e<<2)|0;f=k[x>>2]|0;k[x>>2]=w;if(f|0)el(f);w=a+8|0;k[w>>2]=e;do if(d|0){f=k[b>>2]|0;j=a+16|0;k[j>>2]=f;l=a+12|0;k[l>>2]=f;if((d|0)>1){i=1;h=f;while(1){g=k[b+(i<<2)>>2]|0;if((g|0)>=(h|0))if((g|0)>(f|0)){k[j>>2]=g;f=g;g=h}else g=h;else k[l>>2]=g;i=i+1|0;if((i|0)==(d|0))break;else h=g}}else g=f;v=1-g+f|0;k[a+20>>2]=v;f=(v|0)/2|0;g=a+24|0;k[g>>2]=f;k[a+28>>2]=0-f;if(!(v&1))k[g>>2]=f+-1;f=a+32|0;g=a+36|0;j=k[g>>2]|0;h=k[f>>2]|0;i=j-h>>2;if(i>>>0>>0){eg(f,e-i|0);break}if(i>>>0>e>>>0?(m=h+(e<<2)|0,(j|0)!=(m|0)):0)k[g>>2]=j+(~((j+-4-m|0)>>>2)<<2)}while(0);o=a+56|0;i=k[o>>2]|0;h=k[i+4>>2]|0;g=k[i>>2]|0;f=h-g|0;if((f|0)<=0){r=A;return 1}p=a+16|0;q=a+32|0;s=a+12|0;t=a+28|0;u=a+20|0;v=a+24|0;f=(f>>2)+-1|0;while(1){if(h-g>>2>>>0<=f>>>0){f=22;break}k[z>>2]=k[g+(f<<2)>>2];k[y>>2]=k[z>>2];$b(a,y,b,f);n=$(f,e)|0;m=b+(n<<2)|0;d=k[x>>2]|0;if((k[w>>2]|0)>0){l=0;do{j=k[d+(l<<2)>>2]|0;g=k[p>>2]|0;do if((j|0)<=(g|0)){g=k[s>>2]|0;i=k[q>>2]|0;h=i+(l<<2)|0;if((j|0)<(g|0)){k[h>>2]=g;break}else{k[h>>2]=j;break}}else{i=k[q>>2]|0;k[i+(l<<2)>>2]=g}while(0);l=l+1|0;g=k[w>>2]|0}while((l|0)<(g|0));if((g|0)>0){g=0;do{k[c+(g+n<<2)>>2]=(k[m+(g<<2)>>2]|0)-(k[i+(g<<2)>>2]|0);g=g+1|0;h=k[w>>2]|0}while((g|0)<(h|0));if((h|0)>0){g=0;do{h=c+(g+n<<2)|0;i=k[h>>2]|0;if((i|0)>=(k[t>>2]|0)){if((i|0)>(k[v>>2]|0))k[h>>2]=i-(k[u>>2]|0)}else k[h>>2]=(k[u>>2]|0)+i;g=g+1|0}while((g|0)<(k[w>>2]|0))}}}f=f+-1|0;if((f|0)<=-1){f=19;break}i=k[o>>2]|0;g=k[i>>2]|0;h=k[i+4>>2]|0}if((f|0)==19){r=A;return 1}else if((f|0)==22)lk(i);return 0}function Jc(a,b,c){a=a|0;b=b|0;c=c|0;var d=0,e=0,f=0,g=0,h=0,j=0,l=0,m=0,n=0,o=0,p=0,q=0,s=0,t=0,u=0,v=0,w=0;w=r;r=r+48|0;o=w+32|0;p=w+28|0;q=w+24|0;s=w+20|0;t=w+16|0;u=w;v=b+24|0;j=i[v>>0]|0;m=j<<24>>24;n=k[a+64>>2]|0;a=$(n,m)|0;k[u>>2]=k[226];k[u+4>>2]=k[227];k[u+8>>2]=k[228];k[u+12>>2]=k[229];d=c+4|0;g=k[d>>2]|0;f=k[c>>2]|0;e=g-f>>2;if(a>>>0<=e>>>0){if(a>>>0>>0?(h=f+(a<<2)|0,(g|0)!=(h|0)):0)k[d>>2]=g+(~((g+-4-h|0)>>>2)<<2)}else eg(c,a-e|0);if((n|0)<=0){v=1;r=w;return v|0}h=b+84|0;l=b+68|0;a:do if(j<<24>>24>0){f=0;g=0;while(1){if(!(i[h>>0]|0))a=k[(k[l>>2]|0)+(g<<2)>>2]|0;else a=g;switch(i[v>>0]|0){case 1:{k[p>>2]=a;k[o>>2]=k[p>>2];a=Tc(b,o,u)|0;break}case 2:{k[q>>2]=a;k[o>>2]=k[q>>2];a=hc(b,o,u)|0;break}case 3:{k[s>>2]=a;k[o>>2]=k[s>>2];a=Mc(b,o,u)|0;break}case 4:{k[t>>2]=a;k[o>>2]=k[t>>2];a=Ec(b,o,u)|0;break}default:break a}if(!a){a=0;d=29;break}e=k[c>>2]|0;a=0;d=f;while(1){k[e+(d<<2)>>2]=k[u+(a<<2)>>2];a=a+1|0;if((a|0)==(m|0))break;else d=d+1|0}g=g+1|0;if((g|0)>=(n|0)){a=1;d=29;break}else f=m+f|0}if((d|0)==29){r=w;return a|0}}else{d=0;while(1){if(!(i[h>>0]|0))a=k[(k[l>>2]|0)+(d<<2)>>2]|0;else a=d;switch(i[v>>0]|0){case 1:{k[p>>2]=a;k[o>>2]=k[p>>2];a=Tc(b,o,u)|0;break}case 2:{k[q>>2]=a;k[o>>2]=k[q>>2];a=hc(b,o,u)|0;break}case 3:{k[s>>2]=a;k[o>>2]=k[s>>2];a=Mc(b,o,u)|0;break}case 4:{k[t>>2]=a;k[o>>2]=k[t>>2];a=Ec(b,o,u)|0;break}default:break a}if(!a){a=0;d=29;break}d=d+1|0;if((d|0)>=(n|0)){a=1;d=29;break}}if((d|0)==29){r=w;return a|0}}while(0);v=0;r=w;return v|0}function Kc(a,b,c,d,e,f){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;f=f|0;var g=0,h=0,i=0,j=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,B=0,C=0;v=a+8|0;k[v>>2]=e;s=e>>>0>1073741823?-1:e<<2;w=dl(s)|0;Ah(w|0,0,s|0)|0;x=dl(s)|0;Ah(x|0,0,s|0)|0;Sf(v,w,b,c,0);s=k[a+24>>2]|0;t=a+32|0;f=k[t>>2]|0;h=k[f+4>>2]|0;g=k[f>>2]|0;r=h-g|0;u=r>>2;if((r|0)<=4){el(x);el(w);return 1}n=k[a+28>>2]|0;o=(e|0)>0;p=s+64|0;q=s+28|0;r=e<<2;d=1;a=h;while(1){if(a-g>>2>>>0<=d>>>0){C=6;break}m=k[g+(d<<2)>>2]|0;if(o)Ah(w|0,0,r|0)|0;if((m|0)>-1){l=k[s>>2]|0;i=0;j=m;do{if(((k[l+(j>>>5<<2)>>2]&1<<(j&31)|0)==0?(y=k[(k[(k[p>>2]|0)+12>>2]|0)+(j<<2)>>2]|0,(y|0)>=0):0)?(B=k[q>>2]|0,h=k[n>>2]|0,z=k[h+(k[B+(y<<2)>>2]<<2)>>2]|0,A=y+1|0,A=k[h+(k[B+((((A|0)%3|0|0)==0?y+-2|0:A)<<2)>>2]<<2)>>2]|0,B=k[h+(k[B+((((y>>>0)%3|0|0)==0?2:-1)+y<<2)>>2]<<2)>>2]|0,(z|0)<(d|0)&(A|0)<(d|0)&(B|0)<(d|0)):0){a=$(z,e)|0;g=$(A,e)|0;h=$(B,e)|0;if(o){f=0;do{k[x+(f<<2)>>2]=(k[c+(f+h<<2)>>2]|0)+(k[c+(f+g<<2)>>2]|0)-(k[c+(f+a<<2)>>2]|0);f=f+1|0}while((f|0)!=(e|0));if(o){f=0;do{h=w+(f<<2)|0;k[h>>2]=(k[h>>2]|0)+(k[x+(f<<2)>>2]|0);f=f+1|0}while((f|0)!=(e|0))}}i=i+1|0}f=(((j>>>0)%3|0|0)==0?2:-1)+j|0;do if(!(k[l+(f>>>5<<2)>>2]&1<<(f&31))){if((f|0)>=0){f=k[(k[(k[p>>2]|0)+12>>2]|0)+(f<<2)>>2]|0;if((f|0)>=0)if(!((f>>>0)%3|0)){f=f+2|0;break}else{f=f+-1|0;break}}}else f=-1073741824;while(0);j=(f|0)==(m|0)?-1073741824:f}while((j|0)>-1);f=$(d,e)|0;if(!i)C=28;else{if(o){a=0;do{m=w+(a<<2)|0;k[m>>2]=(k[m>>2]|0)/(i|0)|0;a=a+1|0}while((a|0)!=(e|0))}Sf(v,w,b,c+(f<<2)|0,f)}}else{f=$(d,e)|0;C=28}if((C|0)==28){C=0;Sf(v,c+(($(d+-1|0,e)|0)<<2)|0,b,c+(f<<2)|0,f)}d=d+1|0;if((d|0)>=(u|0)){C=3;break}f=k[t>>2]|0;g=k[f>>2]|0;a=k[f+4>>2]|0}if((C|0)==3){el(x);el(w);return 1}else if((C|0)==6)lk(f);return 0}function Lc(a,b,c){a=a|0;b=b|0;c=c|0;var d=Pa,e=0,f=Pa,g=0,h=0;switch(i[a+24>>0]|0){case 1:{g=k[b>>2]|0;e=a+48|0;b=k[e>>2]|0;e=k[e+4>>2]|0;h=a+40|0;e=(Bj(Pi(k[h>>2]|0,k[h+4>>2]|0,g|0,((g|0)<0)<<31>>31|0)|0,M|0,b|0,e|0)|0)+(k[k[a>>2]>>2]|0)|0;f=da((l[e>>0]|l[e+1>>0]<<8|l[e+2>>0]<<16|l[e+3>>0]<<24)>>>0);d=da(f*da(2.32830644e-10));o[c>>2]=(i[a+32>>0]|0)==0?f:d;c=c+4|0;k[c>>2]=0;k[c+4>>2]=0;c=1;return c|0}case 2:{g=k[b>>2]|0;b=a+48|0;h=k[b>>2]|0;b=k[b+4>>2]|0;e=a+40|0;b=(Bj(Pi(k[e>>2]|0,k[e+4>>2]|0,g|0,((g|0)<0)<<31>>31|0)|0,M|0,h|0,b|0)|0)+(k[k[a>>2]>>2]|0)|0;h=b;b=b+4|0;b=l[b>>0]|l[b+1>>0]<<8|l[b+2>>0]<<16|l[b+3>>0]<<24;d=da((l[h>>0]|l[h+1>>0]<<8|l[h+2>>0]<<16|l[h+3>>0]<<24)>>>0);if(!(i[a+32>>0]|0)){o[c>>2]=d;d=da(b>>>0)}else{d=da(d*da(2.32830644e-10));o[c>>2]=d;d=da(da(b>>>0)*da(2.32830644e-10))}o[c+4>>2]=d;o[c+8>>2]=da(0.0);h=1;return h|0}case 3:{e=k[b>>2]|0;h=a+48|0;b=k[h>>2]|0;h=k[h+4>>2]|0;g=a+40|0;h=(Bj(Pi(k[g>>2]|0,k[g+4>>2]|0,e|0,((e|0)<0)<<31>>31|0)|0,M|0,b|0,h|0)|0)+(k[k[a>>2]>>2]|0)|0;b=h+4|0;b=l[b>>0]|l[b+1>>0]<<8|l[b+2>>0]<<16|l[b+3>>0]<<24;e=h+8|0;e=l[e>>0]|l[e+1>>0]<<8|l[e+2>>0]<<16|l[e+3>>0]<<24;d=da((l[h>>0]|l[h+1>>0]<<8|l[h+2>>0]<<16|l[h+3>>0]<<24)>>>0);if(!(i[a+32>>0]|0)){o[c>>2]=d;f=da(b>>>0);o[c+4>>2]=f;f=da(e>>>0);o[c+8>>2]=f;h=1;return h|0}else{f=da(d*da(2.32830644e-10));o[c>>2]=f;f=da(da(b>>>0)*da(2.32830644e-10));o[c+4>>2]=f;f=da(da(e>>>0)*da(2.32830644e-10));o[c+8>>2]=f;h=1;return h|0}}case 4:{e=k[b>>2]|0;h=a+48|0;b=k[h>>2]|0;h=k[h+4>>2]|0;g=a+40|0;h=(Bj(Pi(k[g>>2]|0,k[g+4>>2]|0,e|0,((e|0)<0)<<31>>31|0)|0,M|0,b|0,h|0)|0)+(k[k[a>>2]>>2]|0)|0;b=h+4|0;b=l[b>>0]|l[b+1>>0]<<8|l[b+2>>0]<<16|l[b+3>>0]<<24;e=h+8|0;e=l[e>>0]|l[e+1>>0]<<8|l[e+2>>0]<<16|l[e+3>>0]<<24;d=da((l[h>>0]|l[h+1>>0]<<8|l[h+2>>0]<<16|l[h+3>>0]<<24)>>>0);if(!(i[a+32>>0]|0)){o[c>>2]=d;f=da(b>>>0);o[c+4>>2]=f;f=da(e>>>0);o[c+8>>2]=f;h=1;return h|0}else{f=da(d*da(2.32830644e-10));o[c>>2]=f;f=da(da(b>>>0)*da(2.32830644e-10));o[c+4>>2]=f;f=da(da(e>>>0)*da(2.32830644e-10));o[c+8>>2]=f;h=1;return h|0}}default:{h=0;return h|0}}return 0}function Mc(a,b,c){a=a|0;b=b|0;c=c|0;var d=0,e=0,f=0,g=0,h=0,j=0,m=0,n=0;n=r;r=r+32|0;d=n+24|0;e=n+20|0;f=n+16|0;g=n+12|0;h=n+8|0;j=n+4|0;m=n;if(!c){c=0;r=n;return c|0}switch(k[a+28>>2]|0){case 9:{d=k[b>>2]|0;switch(i[a+24>>0]|0){case 1:{m=a+48|0;j=k[m>>2]|0;m=k[m+4>>2]|0;h=a+40|0;a=(Bj(Pi(k[h>>2]|0,k[h+4>>2]|0,d|0,((d|0)<0)<<31>>31|0)|0,M|0,j|0,m|0)|0)+(k[k[a>>2]>>2]|0)|0;k[c>>2]=l[a>>0]|l[a+1>>0]<<8|l[a+2>>0]<<16|l[a+3>>0]<<24;c=c+4|0;k[c>>2]=0;k[c+4>>2]=0;c=1;r=n;return c|0}case 2:{m=a+48|0;j=k[m>>2]|0;m=k[m+4>>2]|0;h=a+40|0;m=(Bj(Pi(k[h>>2]|0,k[h+4>>2]|0,d|0,((d|0)<0)<<31>>31|0)|0,M|0,j|0,m|0)|0)+(k[k[a>>2]>>2]|0)|0;j=m;m=m+4|0;m=l[m>>0]|l[m+1>>0]<<8|l[m+2>>0]<<16|l[m+3>>0]<<24;a=c;k[a>>2]=l[j>>0]|l[j+1>>0]<<8|l[j+2>>0]<<16|l[j+3>>0]<<24;k[a+4>>2]=m;o[c+8>>2]=da(0.0);c=1;r=n;return c|0}case 3:{m=a+48|0;j=k[m>>2]|0;m=k[m+4>>2]|0;h=a+40|0;ti(c|0,(Bj(Pi(k[h>>2]|0,k[h+4>>2]|0,d|0,((d|0)<0)<<31>>31|0)|0,M|0,j|0,m|0)|0)+(k[k[a>>2]>>2]|0)|0,12)|0;c=1;r=n;return c|0}case 4:{m=a+48|0;j=k[m>>2]|0;m=k[m+4>>2]|0;h=a+40|0;ti(c|0,(Bj(Pi(k[h>>2]|0,k[h+4>>2]|0,d|0,((d|0)<0)<<31>>31|0)|0,M|0,j|0,m|0)|0)+(k[k[a>>2]>>2]|0)|0,12)|0;c=1;r=n;return c|0}default:{c=0;r=n;return c|0}}}case 2:{k[e>>2]=k[b>>2];k[d>>2]=k[e>>2];c=pd(a,d,c)|0;r=n;return c|0}case 1:{k[f>>2]=k[b>>2];k[d>>2]=k[f>>2];c=jd(a,d,c)|0;r=n;return c|0}case 4:{k[g>>2]=k[b>>2];k[d>>2]=k[g>>2];c=bd(a,d,c)|0;r=n;return c|0}case 3:{k[h>>2]=k[b>>2];k[d>>2]=k[h>>2];c=Xc(a,d,c)|0;r=n;return c|0}case 6:{k[j>>2]=k[b>>2];k[d>>2]=k[j>>2];c=Lc(a,d,c)|0;r=n;return c|0}case 5:{k[m>>2]=k[b>>2];k[d>>2]=k[m>>2];c=Nc(a,d,c)|0;r=n;return c|0}default:{c=0;r=n;return c|0}}return 0}function Nc(a,b,c){a=a|0;b=b|0;c=c|0;var d=Pa,e=0,f=Pa,g=0,h=0;switch(i[a+24>>0]|0){case 1:{g=k[b>>2]|0;e=a+48|0;b=k[e>>2]|0;e=k[e+4>>2]|0;h=a+40|0;e=(Bj(Pi(k[h>>2]|0,k[h+4>>2]|0,g|0,((g|0)<0)<<31>>31|0)|0,M|0,b|0,e|0)|0)+(k[k[a>>2]>>2]|0)|0;f=da(l[e>>0]|l[e+1>>0]<<8|l[e+2>>0]<<16|l[e+3>>0]<<24|0);d=da(f*da(4.65661287e-10));o[c>>2]=(i[a+32>>0]|0)==0?f:d;c=c+4|0;k[c>>2]=0;k[c+4>>2]=0;c=1;return c|0}case 2:{g=k[b>>2]|0;b=a+48|0;h=k[b>>2]|0;b=k[b+4>>2]|0;e=a+40|0;b=(Bj(Pi(k[e>>2]|0,k[e+4>>2]|0,g|0,((g|0)<0)<<31>>31|0)|0,M|0,h|0,b|0)|0)+(k[k[a>>2]>>2]|0)|0;h=b;b=b+4|0;b=l[b>>0]|l[b+1>>0]<<8|l[b+2>>0]<<16|l[b+3>>0]<<24;d=da(l[h>>0]|l[h+1>>0]<<8|l[h+2>>0]<<16|l[h+3>>0]<<24|0);if(!(i[a+32>>0]|0)){o[c>>2]=d;d=da(b|0)}else{d=da(d*da(4.65661287e-10));o[c>>2]=d;d=da(da(b|0)*da(4.65661287e-10))}o[c+4>>2]=d;o[c+8>>2]=da(0.0);h=1;return h|0}case 3:{e=k[b>>2]|0;h=a+48|0;b=k[h>>2]|0;h=k[h+4>>2]|0;g=a+40|0;h=(Bj(Pi(k[g>>2]|0,k[g+4>>2]|0,e|0,((e|0)<0)<<31>>31|0)|0,M|0,b|0,h|0)|0)+(k[k[a>>2]>>2]|0)|0;b=h+4|0;b=l[b>>0]|l[b+1>>0]<<8|l[b+2>>0]<<16|l[b+3>>0]<<24;e=h+8|0;e=l[e>>0]|l[e+1>>0]<<8|l[e+2>>0]<<16|l[e+3>>0]<<24;d=da(l[h>>0]|l[h+1>>0]<<8|l[h+2>>0]<<16|l[h+3>>0]<<24|0);if(!(i[a+32>>0]|0)){o[c>>2]=d;f=da(b|0);o[c+4>>2]=f;f=da(e|0);o[c+8>>2]=f;h=1;return h|0}else{f=da(d*da(4.65661287e-10));o[c>>2]=f;f=da(da(b|0)*da(4.65661287e-10));o[c+4>>2]=f;f=da(da(e|0)*da(4.65661287e-10));o[c+8>>2]=f;h=1;return h|0}}case 4:{e=k[b>>2]|0;h=a+48|0;b=k[h>>2]|0;h=k[h+4>>2]|0;g=a+40|0;h=(Bj(Pi(k[g>>2]|0,k[g+4>>2]|0,e|0,((e|0)<0)<<31>>31|0)|0,M|0,b|0,h|0)|0)+(k[k[a>>2]>>2]|0)|0;b=h+4|0;b=l[b>>0]|l[b+1>>0]<<8|l[b+2>>0]<<16|l[b+3>>0]<<24;e=h+8|0;e=l[e>>0]|l[e+1>>0]<<8|l[e+2>>0]<<16|l[e+3>>0]<<24;d=da(l[h>>0]|l[h+1>>0]<<8|l[h+2>>0]<<16|l[h+3>>0]<<24|0);if(!(i[a+32>>0]|0)){o[c>>2]=d;f=da(b|0);o[c+4>>2]=f;f=da(e|0);o[c+8>>2]=f;h=1;return h|0}else{f=da(d*da(4.65661287e-10));o[c>>2]=f;f=da(da(b|0)*da(4.65661287e-10));o[c+4>>2]=f;f=da(da(e|0)*da(4.65661287e-10));o[c+8>>2]=f;h=1;return h|0}}default:{h=0;return h|0}}return 0}function Oc(a,b,c,d,e,f){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;f=f|0;var g=0,h=0,i=0,j=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,B=0,C=0;v=a+8|0;k[v>>2]=e;s=e>>>0>1073741823?-1:e<<2;w=dl(s)|0;Ah(w|0,0,s|0)|0;x=dl(s)|0;Ah(x|0,0,s|0)|0;Uf(v,w,b,c,0);s=k[a+24>>2]|0;t=a+32|0;f=k[t>>2]|0;h=k[f+4>>2]|0;g=k[f>>2]|0;r=h-g|0;u=r>>2;if((r|0)<=4){el(x);el(w);return 1}n=k[a+28>>2]|0;o=(e|0)>0;p=s+64|0;q=s+28|0;r=e<<2;d=1;a=h;while(1){if(a-g>>2>>>0<=d>>>0){C=6;break}m=k[g+(d<<2)>>2]|0;if(o)Ah(w|0,0,r|0)|0;if((m|0)>-1){l=k[s>>2]|0;i=0;j=m;do{if(((k[l+(j>>>5<<2)>>2]&1<<(j&31)|0)==0?(y=k[(k[(k[p>>2]|0)+12>>2]|0)+(j<<2)>>2]|0,(y|0)>=0):0)?(B=k[q>>2]|0,h=k[n>>2]|0,z=k[h+(k[B+(y<<2)>>2]<<2)>>2]|0,A=y+1|0,A=k[h+(k[B+((((A|0)%3|0|0)==0?y+-2|0:A)<<2)>>2]<<2)>>2]|0,B=k[h+(k[B+((((y>>>0)%3|0|0)==0?2:-1)+y<<2)>>2]<<2)>>2]|0,(z|0)<(d|0)&(A|0)<(d|0)&(B|0)<(d|0)):0){a=$(z,e)|0;g=$(A,e)|0;h=$(B,e)|0;if(o){f=0;do{k[x+(f<<2)>>2]=(k[c+(f+h<<2)>>2]|0)+(k[c+(f+g<<2)>>2]|0)-(k[c+(f+a<<2)>>2]|0);f=f+1|0}while((f|0)!=(e|0));if(o){f=0;do{h=w+(f<<2)|0;k[h>>2]=(k[h>>2]|0)+(k[x+(f<<2)>>2]|0);f=f+1|0}while((f|0)!=(e|0))}}i=i+1|0}f=(((j>>>0)%3|0|0)==0?2:-1)+j|0;do if(!(k[l+(f>>>5<<2)>>2]&1<<(f&31))){if((f|0)>=0){f=k[(k[(k[p>>2]|0)+12>>2]|0)+(f<<2)>>2]|0;if((f|0)>=0)if(!((f>>>0)%3|0)){f=f+2|0;break}else{f=f+-1|0;break}}}else f=-1073741824;while(0);j=(f|0)==(m|0)?-1073741824:f}while((j|0)>-1);f=$(d,e)|0;if(!i)C=28;else{if(o){a=0;do{m=w+(a<<2)|0;k[m>>2]=(k[m>>2]|0)/(i|0)|0;a=a+1|0}while((a|0)!=(e|0))}Uf(v,w,b,c+(f<<2)|0,f)}}else{f=$(d,e)|0;C=28}if((C|0)==28){C=0;Uf(v,c+(($(d+-1|0,e)|0)<<2)|0,b,c+(f<<2)|0,f)}d=d+1|0;if((d|0)>=(u|0)){C=3;break}f=k[t>>2]|0;g=k[f>>2]|0;a=k[f+4>>2]|0}if((C|0)==3){el(x);el(w);return 1}else if((C|0)==6)lk(f);return 0}function Pc(a,b,c){a=a|0;b=b|0;c=c|0;var d=Pa,e=Pa,f=0,g=0,h=0,j=0;switch(i[a+24>>0]|0){case 1:{g=k[b>>2]|0;f=a+48|0;b=k[f>>2]|0;f=k[f+4>>2]|0;h=a+40|0;f=(Bj(Pi(k[h>>2]|0,k[h+4>>2]|0,g|0,((g|0)<0)<<31>>31|0)|0,M|0,b|0,f|0)|0)+(k[k[a>>2]>>2]|0)|0;d=da((l[f>>0]|l[f+1>>0]<<8)<<16>>16);e=da(d/da(32767.0));o[c>>2]=(i[a+32>>0]|0)==0?d:e;c=c+4|0;k[c>>2]=0;k[c+4>>2]=0;k[c+8>>2]=0;c=1;return c|0}case 2:{g=k[b>>2]|0;h=a+48|0;b=k[h>>2]|0;h=k[h+4>>2]|0;f=a+40|0;h=(Bj(Pi(k[f>>2]|0,k[f+4>>2]|0,g|0,((g|0)<0)<<31>>31|0)|0,M|0,b|0,h|0)|0)+(k[k[a>>2]>>2]|0)|0;h=l[h>>0]|l[h+1>>0]<<8|l[h+2>>0]<<16|l[h+3>>0]<<24;b=h>>>16&65535;d=da((h&65535)<<16>>16);if(!(i[a+32>>0]|0)){o[c>>2]=d;d=da(b<<16>>16)}else{d=da(d/da(32767.0));o[c>>2]=d;d=da(da(b<<16>>16)/da(32767.0))}o[c+4>>2]=d;h=c+8|0;k[h>>2]=0;k[h+4>>2]=0;h=1;return h|0}case 3:{b=k[b>>2]|0;h=a+48|0;f=k[h>>2]|0;h=k[h+4>>2]|0;g=a+40|0;h=(Bj(Pi(k[g>>2]|0,k[g+4>>2]|0,b|0,((b|0)<0)<<31>>31|0)|0,M|0,f|0,h|0)|0)+(k[k[a>>2]>>2]|0)|0;f=h+2|0;f=l[f>>0]|l[f+1>>0]<<8;b=h+4|0;b=l[b>>0]|l[b+1>>0]<<8;d=da((l[h>>0]|l[h+1>>0]<<8)<<16>>16);if(!(i[a+32>>0]|0)){o[c>>2]=d;e=da(b<<16>>16);d=da(f<<16>>16)}else{e=da(d/da(32767.0));o[c>>2]=e;e=da(da(b<<16>>16)/da(32767.0));d=da(da(f<<16>>16)/da(32767.0))}o[c+4>>2]=d;o[c+8>>2]=e;o[c+12>>2]=da(0.0);h=1;return h|0}case 4:{h=k[b>>2]|0;j=a+48|0;g=k[j>>2]|0;j=k[j+4>>2]|0;b=a+40|0;j=(Bj(Pi(k[b>>2]|0,k[b+4>>2]|0,h|0,((h|0)<0)<<31>>31|0)|0,M|0,g|0,j|0)|0)+(k[k[a>>2]>>2]|0)|0;g=j;g=l[g>>0]|l[g+1>>0]<<8|l[g+2>>0]<<16|l[g+3>>0]<<24;j=j+4|0;j=l[j>>0]|l[j+1>>0]<<8|l[j+2>>0]<<16|l[j+3>>0]<<24;h=(i[a+32>>0]|0)==0;b=(lj(g|0,j|0,16)|0)&65535;f=j&65535;a=(lj(g|0,j|0,48)|0)&65535;d=da((g&65535)<<16>>16);if(h){o[c>>2]=d;e=da(b<<16>>16);o[c+4>>2]=e;e=da(f<<16>>16);o[c+8>>2]=e;e=da(a<<16>>16);o[c+12>>2]=e;j=1;return j|0}else{e=da(d/da(32767.0));o[c>>2]=e;e=da(da(b<<16>>16)/da(32767.0));o[c+4>>2]=e;e=da(da(f<<16>>16)/da(32767.0));o[c+8>>2]=e;e=da(da(a<<16>>16)/da(32767.0));o[c+12>>2]=e;j=1;return j|0}}default:{j=0;return j|0}}return 0}function Qc(a,b){a=a|0;b=b|0;var c=0,d=0,e=0,f=0,g=0,h=0,i=0,l=0,m=0,n=0,o=0,p=0,q=0;d=a+4|0;if(!b){c=k[a>>2]|0;k[a>>2]=0;if(c|0)gl(c);k[d>>2]=0;return}if(b>>>0>1073741823){a=Ma(4)|0;Tk(a);xa(a|0,856,71)}p=Si(b<<2)|0;c=k[a>>2]|0;k[a>>2]=p;if(c|0)gl(c);k[d>>2]=b;c=0;do{k[(k[a>>2]|0)+(c<<2)>>2]=0;c=c+1|0}while((c|0)!=(b|0));d=a+8|0;g=k[d>>2]|0;if(!g)return;c=k[g+4>>2]|0;o=b+-1|0;p=(o&b|0)==0;if(p)c=c&o;else c=(c>>>0)%(b>>>0)|0;k[(k[a>>2]|0)+(c<<2)>>2]=d;d=k[g>>2]|0;if(!d)return;else{e=c;f=g;c=g}a:while(1){n=c;b:while(1){c:do if(p){c=d;while(1){m=k[c+4>>2]&o;if((m|0)==(e|0))break c;d=(k[a>>2]|0)+(m<<2)|0;if(!(k[d>>2]|0)){e=m;break b}i=c+10|0;l=c+12|0;g=k[c>>2]|0;d:do if(!g)d=c;else{h=j[c+8>>1]|0;d=c;while(1){if(h<<16>>16!=(j[g+8>>1]|0))break d;if((j[i>>1]|0)!=(j[g+10>>1]|0))break d;if((j[l>>1]|0)!=(j[g+12>>1]|0))break d;d=k[g>>2]|0;if(!d){d=g;break}else{q=g;g=d;d=q}}}while(0);k[n>>2]=k[d>>2];k[d>>2]=k[k[(k[a>>2]|0)+(m<<2)>>2]>>2];k[k[(k[a>>2]|0)+(m<<2)>>2]>>2]=c;c=k[f>>2]|0;if(!c){c=38;break a}}}else{c=d;while(1){m=((k[c+4>>2]|0)>>>0)%(b>>>0)|0;if((m|0)==(e|0))break c;d=(k[a>>2]|0)+(m<<2)|0;if(!(k[d>>2]|0)){e=m;break b}h=c+10|0;i=c+12|0;g=k[c>>2]|0;e:do if(!g)d=c;else{l=j[c+8>>1]|0;d=c;while(1){if(l<<16>>16!=(j[g+8>>1]|0))break e;if((j[h>>1]|0)!=(j[g+10>>1]|0))break e;if((j[i>>1]|0)!=(j[g+12>>1]|0))break e;d=k[g>>2]|0;if(!d){d=g;break}else{q=g;g=d;d=q}}}while(0);k[n>>2]=k[d>>2];k[d>>2]=k[k[(k[a>>2]|0)+(m<<2)>>2]>>2];k[k[(k[a>>2]|0)+(m<<2)>>2]>>2]=c;c=k[f>>2]|0;if(!c){c=38;break a}}}while(0);d=k[c>>2]|0;if(!d){c=38;break a}else{f=c;n=c}}k[d>>2]=n;d=k[c>>2]|0;if(!d){c=38;break}else f=c}if((c|0)==38)return}function Rc(a,b){a=a|0;b=b|0;var c=0,d=0,e=0,f=0,g=0,h=0,i=0,j=0,l=0,m=0,n=0,o=0,p=0;d=a+4|0;if(!b){c=k[a>>2]|0;k[a>>2]=0;if(c|0)gl(c);k[d>>2]=0;return}if(b>>>0>1073741823){a=Ma(4)|0;Tk(a);xa(a|0,856,71)}o=Si(b<<2)|0;c=k[a>>2]|0;k[a>>2]=o;if(c|0)gl(c);k[d>>2]=b;c=0;do{k[(k[a>>2]|0)+(c<<2)>>2]=0;c=c+1|0}while((c|0)!=(b|0));d=a+8|0;g=k[d>>2]|0;if(!g)return;c=k[g+4>>2]|0;n=b+-1|0;o=(n&b|0)==0;if(o)c=c&n;else c=(c>>>0)%(b>>>0)|0;k[(k[a>>2]|0)+(c<<2)>>2]=d;d=k[g>>2]|0;if(!d)return;else{e=c;f=g;c=g}a:while(1){m=c;b:while(1){c:do if(o){c=d;while(1){l=k[c+4>>2]&n;if((l|0)==(e|0))break c;d=(k[a>>2]|0)+(l<<2)|0;if(!(k[d>>2]|0)){e=l;break b}i=c+12|0;j=c+16|0;g=k[c>>2]|0;d:do if(!g)d=c;else{h=k[c+8>>2]|0;d=c;while(1){if((h|0)!=(k[g+8>>2]|0))break d;if((k[i>>2]|0)!=(k[g+12>>2]|0))break d;if((k[j>>2]|0)!=(k[g+16>>2]|0))break d;d=k[g>>2]|0;if(!d){d=g;break}else{p=g;g=d;d=p}}}while(0);k[m>>2]=k[d>>2];k[d>>2]=k[k[(k[a>>2]|0)+(l<<2)>>2]>>2];k[k[(k[a>>2]|0)+(l<<2)>>2]>>2]=c;c=k[f>>2]|0;if(!c){c=38;break a}}}else{c=d;while(1){l=((k[c+4>>2]|0)>>>0)%(b>>>0)|0;if((l|0)==(e|0))break c;d=(k[a>>2]|0)+(l<<2)|0;if(!(k[d>>2]|0)){e=l;break b}h=c+12|0;i=c+16|0;g=k[c>>2]|0;e:do if(!g)d=c;else{j=k[c+8>>2]|0;d=c;while(1){if((j|0)!=(k[g+8>>2]|0))break e;if((k[h>>2]|0)!=(k[g+12>>2]|0))break e;if((k[i>>2]|0)!=(k[g+16>>2]|0))break e;d=k[g>>2]|0;if(!d){d=g;break}else{p=g;g=d;d=p}}}while(0);k[m>>2]=k[d>>2];k[d>>2]=k[k[(k[a>>2]|0)+(l<<2)>>2]>>2];k[k[(k[a>>2]|0)+(l<<2)>>2]>>2]=c;c=k[f>>2]|0;if(!c){c=38;break a}}}while(0);d=k[c>>2]|0;if(!d){c=38;break a}else{f=c;m=c}}k[d>>2]=m;d=k[c>>2]|0;if(!d){c=38;break}else f=c}if((c|0)==38)return}function Sc(a,b){a=a|0;b=b|0;var c=0,d=0,e=0,f=0,g=0,h=0,j=0,l=0,m=0,n=0,o=0,p=0,q=0;d=a+4|0;if(!b){c=k[a>>2]|0;k[a>>2]=0;if(c|0)gl(c);k[d>>2]=0;return}if(b>>>0>1073741823){a=Ma(4)|0;Tk(a);xa(a|0,856,71)}p=Si(b<<2)|0;c=k[a>>2]|0;k[a>>2]=p;if(c|0)gl(c);k[d>>2]=b;c=0;do{k[(k[a>>2]|0)+(c<<2)>>2]=0;c=c+1|0}while((c|0)!=(b|0));d=a+8|0;g=k[d>>2]|0;if(!g)return;c=k[g+4>>2]|0;o=b+-1|0;p=(o&b|0)==0;if(p)c=c&o;else c=(c>>>0)%(b>>>0)|0;k[(k[a>>2]|0)+(c<<2)>>2]=d;d=k[g>>2]|0;if(!d)return;else{e=c;f=g;c=g}a:while(1){n=c;b:while(1){c:do if(p){c=d;while(1){m=k[c+4>>2]&o;if((m|0)==(e|0))break c;d=(k[a>>2]|0)+(m<<2)|0;if(!(k[d>>2]|0)){e=m;break b}j=c+9|0;l=c+10|0;g=k[c>>2]|0;d:do if(!g)d=c;else{h=i[c+8>>0]|0;d=c;while(1){if(h<<24>>24!=(i[g+8>>0]|0))break d;if((i[j>>0]|0)!=(i[g+9>>0]|0))break d;if((i[l>>0]|0)!=(i[g+10>>0]|0))break d;d=k[g>>2]|0;if(!d){d=g;break}else{q=g;g=d;d=q}}}while(0);k[n>>2]=k[d>>2];k[d>>2]=k[k[(k[a>>2]|0)+(m<<2)>>2]>>2];k[k[(k[a>>2]|0)+(m<<2)>>2]>>2]=c;c=k[f>>2]|0;if(!c){c=38;break a}}}else{c=d;while(1){m=((k[c+4>>2]|0)>>>0)%(b>>>0)|0;if((m|0)==(e|0))break c;d=(k[a>>2]|0)+(m<<2)|0;if(!(k[d>>2]|0)){e=m;break b}h=c+9|0;j=c+10|0;g=k[c>>2]|0;e:do if(!g)d=c;else{l=i[c+8>>0]|0;d=c;while(1){if(l<<24>>24!=(i[g+8>>0]|0))break e;if((i[h>>0]|0)!=(i[g+9>>0]|0))break e;if((i[j>>0]|0)!=(i[g+10>>0]|0))break e;d=k[g>>2]|0;if(!d){d=g;break}else{q=g;g=d;d=q}}}while(0);k[n>>2]=k[d>>2];k[d>>2]=k[k[(k[a>>2]|0)+(m<<2)>>2]>>2];k[k[(k[a>>2]|0)+(m<<2)>>2]>>2]=c;c=k[f>>2]|0;if(!c){c=38;break a}}}while(0);d=k[c>>2]|0;if(!d){c=38;break a}else{f=c;n=c}}k[d>>2]=n;d=k[c>>2]|0;if(!d){c=38;break}else f=c}if((c|0)==38)return}function Tc(a,b,c){a=a|0;b=b|0;c=c|0;var d=0,e=0,f=0,g=0,h=0,j=0,m=0,n=0;n=r;r=r+32|0;d=n+24|0;e=n+20|0;f=n+16|0;g=n+12|0;h=n+8|0;j=n+4|0;m=n;if(!c){c=0;r=n;return c|0}switch(k[a+28>>2]|0){case 9:{d=k[b>>2]|0;switch(i[a+24>>0]|0){case 1:{m=a+48|0;j=k[m>>2]|0;m=k[m+4>>2]|0;h=a+40|0;a=(Bj(Pi(k[h>>2]|0,k[h+4>>2]|0,d|0,((d|0)<0)<<31>>31|0)|0,M|0,j|0,m|0)|0)+(k[k[a>>2]>>2]|0)|0;k[c>>2]=l[a>>0]|l[a+1>>0]<<8|l[a+2>>0]<<16|l[a+3>>0]<<24;c=1;r=n;return c|0}case 2:{m=a+48|0;j=k[m>>2]|0;m=k[m+4>>2]|0;h=a+40|0;a=(Bj(Pi(k[h>>2]|0,k[h+4>>2]|0,d|0,((d|0)<0)<<31>>31|0)|0,M|0,j|0,m|0)|0)+(k[k[a>>2]>>2]|0)|0;k[c>>2]=l[a>>0]|l[a+1>>0]<<8|l[a+2>>0]<<16|l[a+3>>0]<<24;c=1;r=n;return c|0}case 3:{m=a+48|0;j=k[m>>2]|0;m=k[m+4>>2]|0;h=a+40|0;a=(Bj(Pi(k[h>>2]|0,k[h+4>>2]|0,d|0,((d|0)<0)<<31>>31|0)|0,M|0,j|0,m|0)|0)+(k[k[a>>2]>>2]|0)|0;k[c>>2]=l[a>>0]|l[a+1>>0]<<8|l[a+2>>0]<<16|l[a+3>>0]<<24;c=1;r=n;return c|0}case 4:{m=a+48|0;j=k[m>>2]|0;m=k[m+4>>2]|0;h=a+40|0;a=(Bj(Pi(k[h>>2]|0,k[h+4>>2]|0,d|0,((d|0)<0)<<31>>31|0)|0,M|0,j|0,m|0)|0)+(k[k[a>>2]>>2]|0)|0;k[c>>2]=l[a>>0]|l[a+1>>0]<<8|l[a+2>>0]<<16|l[a+3>>0]<<24;c=1;r=n;return c|0}default:{c=0;r=n;return c|0}}}case 2:{k[e>>2]=k[b>>2];k[d>>2]=k[e>>2];c=ve(a,d,c)|0;r=n;return c|0}case 1:{k[f>>2]=k[b>>2];k[d>>2]=k[f>>2];c=se(a,d,c)|0;r=n;return c|0}case 4:{k[g>>2]=k[b>>2];k[d>>2]=k[g>>2];c=qe(a,d,c)|0;r=n;return c|0}case 3:{k[h>>2]=k[b>>2];k[d>>2]=k[h>>2];c=oe(a,d,c)|0;r=n;return c|0}case 6:{k[j>>2]=k[b>>2];k[d>>2]=k[j>>2];c=le(a,d,c)|0;r=n;return c|0}case 5:{k[m>>2]=k[b>>2];k[d>>2]=k[m>>2];c=me(a,d,c)|0;r=n;return c|0}default:{c=0;r=n;return c|0}}return 0}function Uc(a,b,c){a=a|0;b=b|0;c=c|0;var d=Pa,e=Pa,f=0,g=0,h=0,j=0;switch(i[a+24>>0]|0){case 1:{g=k[b>>2]|0;f=a+48|0;b=k[f>>2]|0;f=k[f+4>>2]|0;h=a+40|0;f=(Bj(Pi(k[h>>2]|0,k[h+4>>2]|0,g|0,((g|0)<0)<<31>>31|0)|0,M|0,b|0,f|0)|0)+(k[k[a>>2]>>2]|0)|0;d=da((l[f>>0]|l[f+1>>0]<<8)&65535);e=da(d/da(65535.0));o[c>>2]=(i[a+32>>0]|0)==0?d:e;c=c+4|0;k[c>>2]=0;k[c+4>>2]=0;k[c+8>>2]=0;c=1;return c|0}case 2:{g=k[b>>2]|0;h=a+48|0;b=k[h>>2]|0;h=k[h+4>>2]|0;f=a+40|0;h=(Bj(Pi(k[f>>2]|0,k[f+4>>2]|0,g|0,((g|0)<0)<<31>>31|0)|0,M|0,b|0,h|0)|0)+(k[k[a>>2]>>2]|0)|0;h=l[h>>0]|l[h+1>>0]<<8|l[h+2>>0]<<16|l[h+3>>0]<<24;b=h>>>16&65535;d=da(h&65535);if(!(i[a+32>>0]|0)){o[c>>2]=d;d=da(b&65535)}else{d=da(d/da(65535.0));o[c>>2]=d;d=da(da(b&65535)/da(65535.0))}o[c+4>>2]=d;h=c+8|0;k[h>>2]=0;k[h+4>>2]=0;h=1;return h|0}case 3:{b=k[b>>2]|0;h=a+48|0;f=k[h>>2]|0;h=k[h+4>>2]|0;g=a+40|0;h=(Bj(Pi(k[g>>2]|0,k[g+4>>2]|0,b|0,((b|0)<0)<<31>>31|0)|0,M|0,f|0,h|0)|0)+(k[k[a>>2]>>2]|0)|0;f=h+2|0;f=l[f>>0]|l[f+1>>0]<<8;b=h+4|0;b=l[b>>0]|l[b+1>>0]<<8;d=da((l[h>>0]|l[h+1>>0]<<8)&65535);if(!(i[a+32>>0]|0)){o[c>>2]=d;e=da(b&65535);d=da(f&65535)}else{e=da(d/da(65535.0));o[c>>2]=e;e=da(da(b&65535)/da(65535.0));d=da(da(f&65535)/da(65535.0))}o[c+4>>2]=d;o[c+8>>2]=e;o[c+12>>2]=da(0.0);h=1;return h|0}case 4:{h=k[b>>2]|0;j=a+48|0;g=k[j>>2]|0;j=k[j+4>>2]|0;b=a+40|0;j=(Bj(Pi(k[b>>2]|0,k[b+4>>2]|0,h|0,((h|0)<0)<<31>>31|0)|0,M|0,g|0,j|0)|0)+(k[k[a>>2]>>2]|0)|0;g=j;g=l[g>>0]|l[g+1>>0]<<8|l[g+2>>0]<<16|l[g+3>>0]<<24;j=j+4|0;j=l[j>>0]|l[j+1>>0]<<8|l[j+2>>0]<<16|l[j+3>>0]<<24;h=(i[a+32>>0]|0)==0;b=(lj(g|0,j|0,16)|0)&65535;f=j&65535;a=(lj(g|0,j|0,48)|0)&65535;d=da(g&65535);if(h){o[c>>2]=d;e=da(b&65535);o[c+4>>2]=e;e=da(f&65535);o[c+8>>2]=e;e=da(a&65535);o[c+12>>2]=e;j=1;return j|0}else{e=da(d/da(65535.0));o[c>>2]=e;e=da(da(b&65535)/da(65535.0));o[c+4>>2]=e;e=da(da(f&65535)/da(65535.0));o[c+8>>2]=e;e=da(da(a&65535)/da(65535.0));o[c+12>>2]=e;j=1;return j|0}}default:{j=0;return j|0}}return 0}function Vc(a,b){a=a|0;b=b|0;var c=0,d=0,e=0,f=0,g=0,h=0,m=0,n=0,o=0,p=0,q=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0;A=r;r=r+80|0;x=A;y=A+64|0;z=b+8|0;u=z;v=k[u>>2]|0;u=k[u+4>>2]|0;w=b+16|0;d=w;c=k[d>>2]|0;d=Bj(c|0,k[d+4>>2]|0,4,0)|0;e=M;if((u|0)<(e|0)|(u|0)==(e|0)&v>>>0>>0){z=0;r=A;return z|0}v=(k[b>>2]|0)+c|0;v=l[v>>0]|l[v+1>>0]<<8|l[v+2>>0]<<16|l[v+3>>0]<<24;u=w;k[u>>2]=d;k[u+4>>2]=e;if((v|0)<1){z=0;r=A;return z|0}u=a+4|0;c=a+8|0;f=k[c>>2]|0;e=k[u>>2]|0;d=f-e>>2;if(v>>>0<=d>>>0){if(v>>>0>>0?(g=e+(v<<2)|0,(f|0)!=(g|0)):0)k[c>>2]=f+(~((f+-4-g|0)>>>2)<<2)}else eg(u,v-d|0);s=k[a+20>>2]|0;t=x+60|0;q=0;while(1){n=z;m=k[n>>2]|0;n=k[n+4>>2]|0;a=w;d=k[a>>2]|0;a=k[a+4>>2]|0;if(!((n|0)>(a|0)|(n|0)==(a|0)&m>>>0>d>>>0)){c=0;d=27;break}o=k[b>>2]|0;p=i[o+d>>0]|0;c=Bj(d|0,a|0,1,0)|0;h=M;g=w;k[g>>2]=c;k[g+4>>2]=h;if(!((n|0)>(h|0)|(n|0)==(h|0)&m>>>0>c>>>0)){c=0;d=27;break}h=i[o+c>>0]|0;c=Bj(d|0,a|0,2,0)|0;g=M;f=w;k[f>>2]=c;k[f+4>>2]=g;if(!((n|0)>(g|0)|(n|0)==(g|0)&m>>>0>c>>>0)){c=0;d=27;break}g=i[o+c>>0]|0;c=Bj(d|0,a|0,3,0)|0;f=M;e=w;k[e>>2]=c;k[e+4>>2]=f;if(!((n|0)>(f|0)|(n|0)==(f|0)&m>>>0>c>>>0)){c=0;d=27;break}e=i[o+c>>0]|0;f=Bj(d|0,a|0,4,0)|0;c=w;k[c>>2]=f;k[c+4>>2]=M;c=Bj(d|0,a|0,6,0)|0;d=M;if((n|0)<(d|0)|(n|0)==(d|0)&m>>>0>>0){c=0;d=27;break}a=o+f|0;a=l[a>>0]|l[a+1>>0]<<8;n=w;k[n>>2]=c;k[n+4>>2]=d;n=h&255;$h(x);o=$(ki(n)|0,g&255)|0;Jg(x,p&255,0,g,n,e<<24>>24!=0,o,((o|0)<0)<<31>>31,0,0);j[t>>1]=a;a=Si(88)|0;bi(a,x);k[y>>2]=a;a=Yf(s,y)|0;g=k[y>>2]|0;k[y>>2]=0;if(g|0){c=k[g+68>>2]|0;d=c;if(c|0){e=g+72|0;f=k[e>>2]|0;if((f|0)!=(c|0))k[e>>2]=f+(~((f+-4-d|0)>>>2)<<2);gl(c)}p=g+64|0;c=k[p>>2]|0;k[p>>2]=0;if(c|0){d=k[c>>2]|0;if(d|0){e=c+4|0;if((k[e>>2]|0)!=(d|0))k[e>>2]=d;gl(d)}gl(c)}gl(g)}k[(k[u>>2]|0)+(q<<2)>>2]=a;q=q+1|0;if((q|0)>=(v|0)){c=1;d=27;break}}if((d|0)==27){r=A;return c|0}return 0}function Wc(a,b,c,d,e){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;var f=0,g=0,h=0,i=0,j=0,l=0,m=0,n=0,o=0,p=0;l=a;i=b;j=i;g=c;n=d;h=n;if(!j){f=(e|0)!=0;if(!h){if(f){k[e>>2]=(l>>>0)%(g>>>0);k[e+4>>2]=0}n=0;e=(l>>>0)/(g>>>0)>>>0;return (M=n,e)|0}else{if(!f){n=0;e=0;return (M=n,e)|0}k[e>>2]=a|0;k[e+4>>2]=b&0;n=0;e=0;return (M=n,e)|0}}f=(h|0)==0;do if(g){if(!f){f=(ca(h|0)|0)-(ca(j|0)|0)|0;if(f>>>0<=31){m=f+1|0;h=31-f|0;b=f-31>>31;g=m;a=l>>>(m>>>0)&b|j<>>(m>>>0)&b;f=0;h=l<>2]=a|0;k[e+4>>2]=i|b&0;n=0;e=0;return (M=n,e)|0}f=g-1|0;if(f&g|0){h=(ca(g|0)|0)+33-(ca(j|0)|0)|0;p=64-h|0;m=32-h|0;i=m>>31;o=h-32|0;b=o>>31;g=h;a=m-1>>31&j>>>(o>>>0)|(j<>>(h>>>0))&b;b=b&j>>>(h>>>0);f=l<>>(o>>>0))&i|l<>31;break}if(e|0){k[e>>2]=f&l;k[e+4>>2]=0}if((g|0)==1){o=i|b&0;p=a|0|0;return (M=o,p)|0}else{p=Bi(g|0)|0;o=j>>>(p>>>0)|0;p=j<<32-p|l>>>(p>>>0)|0;return (M=o,p)|0}}else{if(f){if(e|0){k[e>>2]=(j>>>0)%(g>>>0);k[e+4>>2]=0}o=0;p=(j>>>0)/(g>>>0)>>>0;return (M=o,p)|0}if(!l){if(e|0){k[e>>2]=0;k[e+4>>2]=(j>>>0)%(h>>>0)}o=0;p=(j>>>0)/(h>>>0)>>>0;return (M=o,p)|0}f=h-1|0;if(!(f&h)){if(e|0){k[e>>2]=a|0;k[e+4>>2]=f&j|b&0}o=0;p=j>>>((Bi(h|0)|0)>>>0);return (M=o,p)|0}f=(ca(h|0)|0)-(ca(j|0)|0)|0;if(f>>>0<=30){b=f+1|0;h=31-f|0;g=b;a=j<>>(b>>>0);b=j>>>(b>>>0);f=0;h=l<>2]=a|0;k[e+4>>2]=i|b&0;o=0;p=0;return (M=o,p)|0}while(0);if(!g){j=h;i=0;h=0}else{m=c|0|0;l=n|d&0;j=Bj(m|0,l|0,-1,-1)|0;c=M;i=h;h=0;do{d=i;i=f>>>31|i<<1;f=h|f<<1;d=a<<1|d>>>31|0;n=a>>>31|b<<1|0;nj(j|0,c|0,d|0,n|0)|0;p=M;o=p>>31|((p|0)<0?-1:0)<<1;h=o&1;a=nj(d|0,n|0,o&m|0,(((p|0)<0?-1:0)>>31|((p|0)<0?-1:0)<<1)&l|0)|0;b=M;g=g-1|0}while((g|0)!=0);j=i;i=0}g=0;if(e|0){k[e>>2]=a;k[e+4>>2]=b}o=(f|0)>>>31|(j|g)<<1|(g<<1|f>>>31)&0|i;p=(f<<1|0>>>31)&-2|h;return (M=o,p)|0}function Xc(a,b,c){a=a|0;b=b|0;c=c|0;var d=Pa,e=0,f=Pa,g=0,h=0;switch(i[a+24>>0]|0){case 1:{g=k[b>>2]|0;e=a+48|0;b=k[e>>2]|0;e=k[e+4>>2]|0;h=a+40|0;e=(Bj(Pi(k[h>>2]|0,k[h+4>>2]|0,g|0,((g|0)<0)<<31>>31|0)|0,M|0,b|0,e|0)|0)+(k[k[a>>2]>>2]|0)|0;f=da((l[e>>0]|l[e+1>>0]<<8)<<16>>16);d=da(f/da(32767.0));o[c>>2]=(i[a+32>>0]|0)==0?f:d;c=c+4|0;k[c>>2]=0;k[c+4>>2]=0;c=1;return c|0}case 2:{g=k[b>>2]|0;h=a+48|0;b=k[h>>2]|0;h=k[h+4>>2]|0;e=a+40|0;h=(Bj(Pi(k[e>>2]|0,k[e+4>>2]|0,g|0,((g|0)<0)<<31>>31|0)|0,M|0,b|0,h|0)|0)+(k[k[a>>2]>>2]|0)|0;h=l[h>>0]|l[h+1>>0]<<8|l[h+2>>0]<<16|l[h+3>>0]<<24;b=h>>>16&65535;d=da((h&65535)<<16>>16);if(!(i[a+32>>0]|0)){o[c>>2]=d;d=da(b<<16>>16)}else{d=da(d/da(32767.0));o[c>>2]=d;d=da(da(b<<16>>16)/da(32767.0))}o[c+4>>2]=d;o[c+8>>2]=da(0.0);h=1;return h|0}case 3:{e=k[b>>2]|0;h=a+48|0;b=k[h>>2]|0;h=k[h+4>>2]|0;g=a+40|0;h=(Bj(Pi(k[g>>2]|0,k[g+4>>2]|0,e|0,((e|0)<0)<<31>>31|0)|0,M|0,b|0,h|0)|0)+(k[k[a>>2]>>2]|0)|0;b=h+2|0;b=l[b>>0]|l[b+1>>0]<<8;e=h+4|0;e=l[e>>0]|l[e+1>>0]<<8;d=da((l[h>>0]|l[h+1>>0]<<8)<<16>>16);if(!(i[a+32>>0]|0)){o[c>>2]=d;f=da(b<<16>>16);o[c+4>>2]=f;f=da(e<<16>>16);o[c+8>>2]=f;h=1;return h|0}else{f=da(d/da(32767.0));o[c>>2]=f;f=da(da(b<<16>>16)/da(32767.0));o[c+4>>2]=f;f=da(da(e<<16>>16)/da(32767.0));o[c+8>>2]=f;h=1;return h|0}}case 4:{h=k[b>>2]|0;e=a+48|0;g=k[e>>2]|0;e=k[e+4>>2]|0;b=a+40|0;e=(Bj(Pi(k[b>>2]|0,k[b+4>>2]|0,h|0,((h|0)<0)<<31>>31|0)|0,M|0,g|0,e|0)|0)+(k[k[a>>2]>>2]|0)|0;g=e;g=l[g>>0]|l[g+1>>0]<<8|l[g+2>>0]<<16|l[g+3>>0]<<24;e=e+4|0;e=l[e>>0]|l[e+1>>0]<<8|l[e+2>>0]<<16|l[e+3>>0]<<24;h=(i[a+32>>0]|0)==0;b=(lj(g|0,e|0,16)|0)&65535;e=e&65535;d=da((g&65535)<<16>>16);if(h){o[c>>2]=d;f=da(b<<16>>16);o[c+4>>2]=f;f=da(e<<16>>16);o[c+8>>2]=f;h=1;return h|0}else{f=da(d/da(32767.0));o[c>>2]=f;f=da(da(b<<16>>16)/da(32767.0));o[c+4>>2]=f;f=da(da(e<<16>>16)/da(32767.0));o[c+8>>2]=f;h=1;return h|0}}default:{h=0;return h|0}}return 0}function Yc(a,b,c){a=a|0;b=b|0;c=c|0;var d=0,e=0,f=0,g=0,h=0,j=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0;u=Va[k[(k[a>>2]|0)+36>>2]&127](a)|0;if((u|0)<1){u=0;return u|0}s=a+16|0;h=$((k[b+4>>2]|0)-(k[b>>2]|0)>>2,u)|0;t=a+20|0;f=k[t>>2]|0;e=k[s>>2]|0;d=f-e>>2;if(h>>>0<=d>>>0){if(h>>>0>>0?(g=e+(h<<2)|0,(f|0)!=(g|0)):0)k[t>>2]=f+(~((f+-4-g|0)>>>2)<<2)}else eg(s,h-d|0);q=c+8|0;o=q;j=k[o>>2]|0;o=k[o+4>>2]|0;r=c+16|0;g=r;f=k[g>>2]|0;g=k[g+4>>2]|0;if(!((o|0)>(g|0)|(o|0)==(g|0)&j>>>0>f>>>0)){u=0;return u|0}m=k[c>>2]|0;p=i[m+f>>0]|0;d=Bj(f|0,g|0,1,0)|0;e=M;n=r;k[n>>2]=d;k[n+4>>2]=e;a:do if(!(p<<24>>24)){if(!((o|0)>(e|0)|(o|0)==(e|0)&j>>>0>d>>>0)){u=0;return u|0}l=i[m+d>>0]|0;e=Bj(f|0,g|0,2,0)|0;f=M;g=r;k[g>>2]=e;k[g+4>>2]=f;g=k[t>>2]|0;n=k[s>>2]|0;d=g-n|0;h=n;if(l<<24>>24==4){q=Bj(e|0,f|0,d|0,0)|0;p=M;if((o|0)<(p|0)|(o|0)==(p|0)&j>>>0>>0){u=0;return u|0}else{nh(h|0,m+e|0,d|0)|0;q=r;q=Bj(k[q>>2]|0,k[q+4>>2]|0,d|0,0)|0;k[r>>2]=q;k[r+4>>2]=M;break}}if(d|0){p=l&255;m=l&255;d=0;l=o;h=n;while(1){o=Bj(e|0,f|0,p|0,0)|0;n=M;if(!((l|0)<(n|0)|(l|0)==(n|0)&j>>>0>>0)){nh(h+(d<<2)|0,(k[c>>2]|0)+e|0,m|0)|0;e=r;e=Bj(k[e>>2]|0,k[e+4>>2]|0,p|0,0)|0;f=M;h=r;k[h>>2]=e;k[h+4>>2]=f;h=k[s>>2]|0;g=k[t>>2]|0}d=d+1|0;if(d>>>0>=g-h>>2>>>0)break a;j=q;l=k[j+4>>2]|0;j=k[j>>2]|0}}}else if(!(rg(h,u,c,k[s>>2]|0)|0)){u=0;return u|0}while(0);g=k[s>>2]|0;d=k[t>>2]|0;do if((g|0)==(d|0))f=a+28|0;else{f=a+28|0;e=k[f>>2]|0;if(!e)e=g;else{if(Va[k[(k[e>>2]|0)+40>>2]&127](e)|0)break;e=k[s>>2]|0;d=k[t>>2]|0}xi(e,d-e>>2,e)}while(0);d=k[f>>2]|0;if(d|0){if(!(Za[k[(k[d>>2]|0)+36>>2]&63](d,c)|0)){u=0;return u|0}e=k[s>>2]|0;d=k[t>>2]|0;if((e|0)!=(d|0)?(t=k[f>>2]|0,!(Ua[k[(k[t>>2]|0)+52>>2]&63](t,e,e,d-e>>2,u,k[b>>2]|0)|0)):0){u=0;return u|0}}u=1;return u|0}function Zc(a,b,c,d){a=a|0;b=b|0;c=c|0;d=d|0;var e=0,f=0,g=0,h=0,i=0,j=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0.0;o=b+8|0;r=k[o>>2]|0;g=(k[c>>2]|0)-r|0;n=c+4|0;h=(k[n>>2]|0)-r|0;e=c;k[e>>2]=g;k[e+4>>2]=h;s=+O(+(+(g|0)))+ +O(+(+(h|0)));e=k[o>>2]|0;p=s<=+(e|0);if(!p){if((g|0)>-1)if((h|0)<=-1)if((g|0)<1){i=-1;j=-1}else q=6;else{i=1;j=1}else if((h|0)<1){i=-1;j=-1}else q=6;if((q|0)==6){i=(g|0)>0?1:-1;j=(h|0)>0?1:-1}m=$(e,i)|0;l=$(e,j)|0;e=(g<<1)-m|0;k[c>>2]=e;f=(h<<1)-l|0;k[n>>2]=f;if(($(i,j)|0)>-1){f=0-f|0;k[c>>2]=f;e=0-e|0}else k[c>>2]=f;g=(f+m|0)/2|0;k[c>>2]=g;h=(e+l|0)/2|0;k[n>>2]=h}if(!g)e=(h|0)==0;else e=(g|0)<0&(h|0)<1;do if(!g)if(!h)l=0;else l=(h|0)>0?3:1;else if((g|0)>0){l=(h>>31)+2|0;break}else{l=(h|0)<1?0:3;break}while(0);if(e){i=1;f=g;e=h}else{switch(l|0){case 1:{f=h;e=0-g|0;break}case 2:{f=0-g|0;e=0-h|0;break}case 3:{f=0-h|0;e=g;break}default:{f=g;e=h}}i=c;k[i>>2]=f;k[i+4>>2]=e;i=0}g=(k[d>>2]|0)+f|0;k[a>>2]=g;e=(k[d+4>>2]|0)+e|0;m=a+4|0;k[m>>2]=e;j=k[o>>2]|0;if((j|0)>=(g|0)){if((g|0)<(0-j|0))g=(k[b+4>>2]|0)+g|0}else g=g-(k[b+4>>2]|0)|0;k[a>>2]=g;if((j|0)>=(e|0)){if((e|0)<(0-j|0))e=(k[b+4>>2]|0)+e|0}else e=e-(k[b+4>>2]|0)|0;k[m>>2]=e;if(i){f=g;i=e}else{switch((4-l|0)%4|0|0){case 1:{f=e;e=0-g|0;break}case 2:{f=0-g|0;e=0-e|0;break}case 3:{f=0-e|0;e=g;break}default:f=g}i=a;k[i>>2]=f;k[i+4>>2]=e;i=e}if(p){p=f;q=i;p=p+r|0;q=q+r|0;r=a;a=r;k[a>>2]=p;r=r+4|0;k[r>>2]=q;return}if((f|0)>-1)if((i|0)<=-1)if((f|0)<1){g=-1;h=-1}else q=45;else{g=1;h=1}else if((i|0)<1){g=-1;h=-1}else q=45;if((q|0)==45){g=(f|0)>0?1:-1;h=(i|0)>0?1:-1}l=$(j,g)|0;j=$(j,h)|0;e=(f<<1)-l|0;k[a>>2]=e;f=(i<<1)-j|0;k[m>>2]=f;if(($(g,h)|0)>-1){f=0-f|0;k[a>>2]=f;e=0-e|0}else k[a>>2]=f;p=(f+l|0)/2|0;k[a>>2]=p;q=(e+j|0)/2|0;k[m>>2]=q;p=p+r|0;q=q+r|0;r=a;a=r;k[a>>2]=p;r=r+4|0;k[r>>2]=q;return}function _c(a,b){a=a|0;b=b|0;var c=0,d=0,e=0,f=0,g=0,h=0,i=0,l=0,m=0,n=0,o=0,p=0;d=a+4|0;if(!b){c=k[a>>2]|0;k[a>>2]=0;if(c|0)gl(c);k[d>>2]=0;return}if(b>>>0>1073741823){a=Ma(4)|0;Tk(a);xa(a|0,856,71)}o=Si(b<<2)|0;c=k[a>>2]|0;k[a>>2]=o;if(c|0)gl(c);k[d>>2]=b;c=0;do{k[(k[a>>2]|0)+(c<<2)>>2]=0;c=c+1|0}while((c|0)!=(b|0));d=a+8|0;g=k[d>>2]|0;if(!g)return;c=k[g+4>>2]|0;n=b+-1|0;o=(n&b|0)==0;if(o)c=c&n;else c=(c>>>0)%(b>>>0)|0;k[(k[a>>2]|0)+(c<<2)>>2]=d;d=k[g>>2]|0;if(!d)return;else{e=c;f=g;c=g}a:while(1){m=c;b:while(1){c:do if(o){c=d;while(1){l=k[c+4>>2]&n;if((l|0)==(e|0))break c;d=(k[a>>2]|0)+(l<<2)|0;if(!(k[d>>2]|0)){e=l;break b}i=c+10|0;g=k[c>>2]|0;d:do if(!g)d=c;else{h=j[c+8>>1]|0;d=c;while(1){if(h<<16>>16!=(j[g+8>>1]|0))break d;if((j[i>>1]|0)!=(j[g+10>>1]|0))break d;d=k[g>>2]|0;if(!d){d=g;break}else{p=g;g=d;d=p}}}while(0);k[m>>2]=k[d>>2];k[d>>2]=k[k[(k[a>>2]|0)+(l<<2)>>2]>>2];k[k[(k[a>>2]|0)+(l<<2)>>2]>>2]=c;c=k[f>>2]|0;if(!c){c=36;break a}}}else{c=d;while(1){l=((k[c+4>>2]|0)>>>0)%(b>>>0)|0;if((l|0)==(e|0))break c;d=(k[a>>2]|0)+(l<<2)|0;if(!(k[d>>2]|0)){e=l;break b}h=c+10|0;g=k[c>>2]|0;e:do if(!g)d=c;else{i=j[c+8>>1]|0;d=c;while(1){if(i<<16>>16!=(j[g+8>>1]|0))break e;if((j[h>>1]|0)!=(j[g+10>>1]|0))break e;d=k[g>>2]|0;if(!d){d=g;break}else{p=g;g=d;d=p}}}while(0);k[m>>2]=k[d>>2];k[d>>2]=k[k[(k[a>>2]|0)+(l<<2)>>2]>>2];k[k[(k[a>>2]|0)+(l<<2)>>2]>>2]=c;c=k[f>>2]|0;if(!c){c=36;break a}}}while(0);d=k[c>>2]|0;if(!d){c=36;break a}else{f=c;m=c}}k[d>>2]=m;d=k[c>>2]|0;if(!d){c=36;break}else f=c}if((c|0)==36)return}function $c(a,b){a=a|0;b=b|0;var c=0,d=0,e=0,f=0,g=0,h=0,i=0,j=0,l=0,m=0,n=0,o=0;d=a+4|0;if(!b){c=k[a>>2]|0;k[a>>2]=0;if(c|0)gl(c);k[d>>2]=0;return}if(b>>>0>1073741823){a=Ma(4)|0;Tk(a);xa(a|0,856,71)}n=Si(b<<2)|0;c=k[a>>2]|0;k[a>>2]=n;if(c|0)gl(c);k[d>>2]=b;c=0;do{k[(k[a>>2]|0)+(c<<2)>>2]=0;c=c+1|0}while((c|0)!=(b|0));d=a+8|0;g=k[d>>2]|0;if(!g)return;c=k[g+4>>2]|0;m=b+-1|0;n=(m&b|0)==0;if(n)c=c&m;else c=(c>>>0)%(b>>>0)|0;k[(k[a>>2]|0)+(c<<2)>>2]=d;d=k[g>>2]|0;if(!d)return;else{e=c;f=g;c=g}a:while(1){l=c;b:while(1){c:do if(n){c=d;while(1){j=k[c+4>>2]&m;if((j|0)==(e|0))break c;d=(k[a>>2]|0)+(j<<2)|0;if(!(k[d>>2]|0)){e=j;break b}i=c+12|0;g=k[c>>2]|0;d:do if(!g)d=c;else{h=k[c+8>>2]|0;d=c;while(1){if((h|0)!=(k[g+8>>2]|0))break d;if((k[i>>2]|0)!=(k[g+12>>2]|0))break d;d=k[g>>2]|0;if(!d){d=g;break}else{o=g;g=d;d=o}}}while(0);k[l>>2]=k[d>>2];k[d>>2]=k[k[(k[a>>2]|0)+(j<<2)>>2]>>2];k[k[(k[a>>2]|0)+(j<<2)>>2]>>2]=c;c=k[f>>2]|0;if(!c){c=36;break a}}}else{c=d;while(1){j=((k[c+4>>2]|0)>>>0)%(b>>>0)|0;if((j|0)==(e|0))break c;d=(k[a>>2]|0)+(j<<2)|0;if(!(k[d>>2]|0)){e=j;break b}h=c+12|0;g=k[c>>2]|0;e:do if(!g)d=c;else{i=k[c+8>>2]|0;d=c;while(1){if((i|0)!=(k[g+8>>2]|0))break e;if((k[h>>2]|0)!=(k[g+12>>2]|0))break e;d=k[g>>2]|0;if(!d){d=g;break}else{o=g;g=d;d=o}}}while(0);k[l>>2]=k[d>>2];k[d>>2]=k[k[(k[a>>2]|0)+(j<<2)>>2]>>2];k[k[(k[a>>2]|0)+(j<<2)>>2]>>2]=c;c=k[f>>2]|0;if(!c){c=36;break a}}}while(0);d=k[c>>2]|0;if(!d){c=36;break a}else{f=c;l=c}}k[d>>2]=l;d=k[c>>2]|0;if(!d){c=36;break}else f=c}if((c|0)==36)return}function ad(a,b){a=a|0;b=b|0;var c=0,d=0,e=0,f=0,g=0,h=0,j=0,l=0,m=0,n=0,o=0,p=0;d=a+4|0;if(!b){c=k[a>>2]|0;k[a>>2]=0;if(c|0)gl(c);k[d>>2]=0;return}if(b>>>0>1073741823){a=Ma(4)|0;Tk(a);xa(a|0,856,71)}o=Si(b<<2)|0;c=k[a>>2]|0;k[a>>2]=o;if(c|0)gl(c);k[d>>2]=b;c=0;do{k[(k[a>>2]|0)+(c<<2)>>2]=0;c=c+1|0}while((c|0)!=(b|0));d=a+8|0;g=k[d>>2]|0;if(!g)return;c=k[g+4>>2]|0;n=b+-1|0;o=(n&b|0)==0;if(o)c=c&n;else c=(c>>>0)%(b>>>0)|0;k[(k[a>>2]|0)+(c<<2)>>2]=d;d=k[g>>2]|0;if(!d)return;else{e=c;f=g;c=g}a:while(1){m=c;b:while(1){c:do if(o){c=d;while(1){l=k[c+4>>2]&n;if((l|0)==(e|0))break c;d=(k[a>>2]|0)+(l<<2)|0;if(!(k[d>>2]|0)){e=l;break b}j=c+9|0;g=k[c>>2]|0;d:do if(!g)d=c;else{h=i[c+8>>0]|0;d=c;while(1){if(h<<24>>24!=(i[g+8>>0]|0))break d;if((i[j>>0]|0)!=(i[g+9>>0]|0))break d;d=k[g>>2]|0;if(!d){d=g;break}else{p=g;g=d;d=p}}}while(0);k[m>>2]=k[d>>2];k[d>>2]=k[k[(k[a>>2]|0)+(l<<2)>>2]>>2];k[k[(k[a>>2]|0)+(l<<2)>>2]>>2]=c;c=k[f>>2]|0;if(!c){c=36;break a}}}else{c=d;while(1){l=((k[c+4>>2]|0)>>>0)%(b>>>0)|0;if((l|0)==(e|0))break c;d=(k[a>>2]|0)+(l<<2)|0;if(!(k[d>>2]|0)){e=l;break b}h=c+9|0;g=k[c>>2]|0;e:do if(!g)d=c;else{j=i[c+8>>0]|0;d=c;while(1){if(j<<24>>24!=(i[g+8>>0]|0))break e;if((i[h>>0]|0)!=(i[g+9>>0]|0))break e;d=k[g>>2]|0;if(!d){d=g;break}else{p=g;g=d;d=p}}}while(0);k[m>>2]=k[d>>2];k[d>>2]=k[k[(k[a>>2]|0)+(l<<2)>>2]>>2];k[k[(k[a>>2]|0)+(l<<2)>>2]>>2]=c;c=k[f>>2]|0;if(!c){c=36;break a}}}while(0);d=k[c>>2]|0;if(!d){c=36;break a}else{f=c;m=c}}k[d>>2]=m;d=k[c>>2]|0;if(!d){c=36;break}else f=c}if((c|0)==36)return}function bd(a,b,c){a=a|0;b=b|0;c=c|0;var d=Pa,e=0,f=Pa,g=0,h=0;switch(i[a+24>>0]|0){case 1:{g=k[b>>2]|0;e=a+48|0;b=k[e>>2]|0;e=k[e+4>>2]|0;h=a+40|0;e=(Bj(Pi(k[h>>2]|0,k[h+4>>2]|0,g|0,((g|0)<0)<<31>>31|0)|0,M|0,b|0,e|0)|0)+(k[k[a>>2]>>2]|0)|0;f=da((l[e>>0]|l[e+1>>0]<<8)&65535);d=da(f/da(65535.0));o[c>>2]=(i[a+32>>0]|0)==0?f:d;c=c+4|0;k[c>>2]=0;k[c+4>>2]=0;c=1;return c|0}case 2:{g=k[b>>2]|0;h=a+48|0;b=k[h>>2]|0;h=k[h+4>>2]|0;e=a+40|0;h=(Bj(Pi(k[e>>2]|0,k[e+4>>2]|0,g|0,((g|0)<0)<<31>>31|0)|0,M|0,b|0,h|0)|0)+(k[k[a>>2]>>2]|0)|0;h=l[h>>0]|l[h+1>>0]<<8|l[h+2>>0]<<16|l[h+3>>0]<<24;b=h>>>16&65535;d=da(h&65535);if(!(i[a+32>>0]|0)){o[c>>2]=d;d=da(b&65535)}else{d=da(d/da(65535.0));o[c>>2]=d;d=da(da(b&65535)/da(65535.0))}o[c+4>>2]=d;o[c+8>>2]=da(0.0);h=1;return h|0}case 3:{e=k[b>>2]|0;h=a+48|0;b=k[h>>2]|0;h=k[h+4>>2]|0;g=a+40|0;h=(Bj(Pi(k[g>>2]|0,k[g+4>>2]|0,e|0,((e|0)<0)<<31>>31|0)|0,M|0,b|0,h|0)|0)+(k[k[a>>2]>>2]|0)|0;b=h+2|0;b=l[b>>0]|l[b+1>>0]<<8;e=h+4|0;e=l[e>>0]|l[e+1>>0]<<8;d=da((l[h>>0]|l[h+1>>0]<<8)&65535);if(!(i[a+32>>0]|0)){o[c>>2]=d;f=da(b&65535);o[c+4>>2]=f;f=da(e&65535);o[c+8>>2]=f;h=1;return h|0}else{f=da(d/da(65535.0));o[c>>2]=f;f=da(da(b&65535)/da(65535.0));o[c+4>>2]=f;f=da(da(e&65535)/da(65535.0));o[c+8>>2]=f;h=1;return h|0}}case 4:{h=k[b>>2]|0;e=a+48|0;g=k[e>>2]|0;e=k[e+4>>2]|0;b=a+40|0;e=(Bj(Pi(k[b>>2]|0,k[b+4>>2]|0,h|0,((h|0)<0)<<31>>31|0)|0,M|0,g|0,e|0)|0)+(k[k[a>>2]>>2]|0)|0;g=e;g=l[g>>0]|l[g+1>>0]<<8|l[g+2>>0]<<16|l[g+3>>0]<<24;e=e+4|0;e=l[e>>0]|l[e+1>>0]<<8|l[e+2>>0]<<16|l[e+3>>0]<<24;h=(i[a+32>>0]|0)==0;b=(lj(g|0,e|0,16)|0)&65535;e=e&65535;d=da(g&65535);if(h){o[c>>2]=d;f=da(b&65535);o[c+4>>2]=f;f=da(e&65535);o[c+8>>2]=f;h=1;return h|0}else{f=da(d/da(65535.0));o[c>>2]=f;f=da(da(b&65535)/da(65535.0));o[c+4>>2]=f;f=da(da(e&65535)/da(65535.0));o[c+8>>2]=f;h=1;return h|0}}default:{h=0;return h|0}}return 0}function cd(a,b,c,d,e,f){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;f=f|0;var g=0,h=0,i=0,j=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0;t=a+8|0;k[t>>2]=e;i=a+32|0;j=a+36|0;h=k[j>>2]|0;g=k[i>>2]|0;f=h-g>>2;if(f>>>0>=e>>>0)if(f>>>0>e>>>0?(l=g+(e<<2)|0,(h|0)!=(l|0)):0){k[j>>2]=h+(~((h+-4-l|0)>>>2)<<2);f=e}else f=e;else{eg(i,e-f|0);f=k[t>>2]|0}r=e>>>0>1073741823?-1:e<<2;s=dl(r)|0;Ah(s|0,0,r|0)|0;if((f|0)>0){m=a+16|0;l=a+32|0;n=a+12|0;j=0;do{i=k[s+(j<<2)>>2]|0;f=k[m>>2]|0;do if((i|0)<=(f|0)){f=k[n>>2]|0;g=k[l>>2]|0;h=g+(j<<2)|0;if((i|0)<(f|0)){k[h>>2]=f;h=g;break}else{k[h>>2]=i;h=g;break}}else{h=k[l>>2]|0;k[h+(j<<2)>>2]=f}while(0);j=j+1|0;f=k[t>>2]|0}while((j|0)<(f|0));if((f|0)>0){g=0;do{k[c+(g<<2)>>2]=(k[b+(g<<2)>>2]|0)+(k[h+(g<<2)>>2]|0);g=g+1|0;f=k[t>>2]|0}while((g|0)<(f|0));if((f|0)>0){i=a+20|0;h=0;do{f=c+(h<<2)|0;g=k[f>>2]|0;if((g|0)<=(k[m>>2]|0)){if((g|0)<(k[n>>2]|0))k[f>>2]=(k[i>>2]|0)+g}else k[f>>2]=g-(k[i>>2]|0);h=h+1|0;f=k[t>>2]|0}while((h|0)<(f|0))}}}if((e|0)>=(d|0)){el(s);return 1}o=0-e|0;p=a+16|0;q=a+32|0;r=a+12|0;a=a+20|0;n=e;do{m=c+(n<<2)|0;l=m+(o<<2)|0;if((f|0)>0){j=0;do{i=k[l+(j<<2)>>2]|0;f=k[p>>2]|0;do if((i|0)<=(f|0)){f=k[r>>2]|0;g=k[q>>2]|0;h=g+(j<<2)|0;if((i|0)<(f|0)){k[h>>2]=f;h=g;break}else{k[h>>2]=i;h=g;break}}else{h=k[q>>2]|0;k[h+(j<<2)>>2]=f}while(0);j=j+1|0;f=k[t>>2]|0}while((j|0)<(f|0));if((f|0)>0){g=0;do{k[m+(g<<2)>>2]=(k[b+(g+n<<2)>>2]|0)+(k[h+(g<<2)>>2]|0);g=g+1|0;f=k[t>>2]|0}while((g|0)<(f|0));if((f|0)>0){h=0;do{f=m+(h<<2)|0;g=k[f>>2]|0;if((g|0)<=(k[p>>2]|0)){if((g|0)<(k[r>>2]|0))k[f>>2]=(k[a>>2]|0)+g}else k[f>>2]=g-(k[a>>2]|0);h=h+1|0;f=k[t>>2]|0}while((h|0)<(f|0))}}}n=n+e|0}while((n|0)<(d|0));el(s);return 1}function dd(a,b,c){a=a|0;b=b|0;c=c|0;var d=Pa,e=Pa,f=0,g=0,h=0;switch(i[a+24>>0]|0){case 1:{b=k[b>>2]|0;g=a+48|0;f=k[g>>2]|0;g=k[g+4>>2]|0;h=a+40|0;g=Bj(Pi(k[h>>2]|0,k[h+4>>2]|0,b|0,((b|0)<0)<<31>>31|0)|0,M|0,f|0,g|0)|0;d=da(i[(k[k[a>>2]>>2]|0)+g>>0]|0);e=da(d/da(127.0));o[c>>2]=(i[a+32>>0]|0)==0?d:e;c=c+4|0;k[c>>2]=0;k[c+4>>2]=0;k[c+8>>2]=0;c=1;return c|0}case 2:{g=k[b>>2]|0;h=a+48|0;b=k[h>>2]|0;h=k[h+4>>2]|0;f=a+40|0;h=(Bj(Pi(k[f>>2]|0,k[f+4>>2]|0,g|0,((g|0)<0)<<31>>31|0)|0,M|0,b|0,h|0)|0)+(k[k[a>>2]>>2]|0)|0;h=l[h>>0]|l[h+1>>0]<<8;b=(h&65535)>>>8&255;d=da((h&255)<<24>>24);if(!(i[a+32>>0]|0)){o[c>>2]=d;d=da(b<<24>>24)}else{d=da(d/da(127.0));o[c>>2]=d;d=da(da(b<<24>>24)/da(127.0))}o[c+4>>2]=d;h=c+8|0;k[h>>2]=0;k[h+4>>2]=0;h=1;return h|0}case 3:{b=k[b>>2]|0;h=a+48|0;f=k[h>>2]|0;h=k[h+4>>2]|0;g=a+40|0;h=(Bj(Pi(k[g>>2]|0,k[g+4>>2]|0,b|0,((b|0)<0)<<31>>31|0)|0,M|0,f|0,h|0)|0)+(k[k[a>>2]>>2]|0)|0;f=i[h+1>>0]|0;b=i[h+2>>0]|0;d=da(i[h>>0]|0);if(!(i[a+32>>0]|0)){o[c>>2]=d;e=da(b<<24>>24);d=da(f<<24>>24)}else{e=da(d/da(127.0));o[c>>2]=e;e=da(da(b<<24>>24)/da(127.0));d=da(da(f<<24>>24)/da(127.0))}o[c+4>>2]=d;o[c+8>>2]=e;o[c+12>>2]=da(0.0);h=1;return h|0}case 4:{f=k[b>>2]|0;h=a+48|0;b=k[h>>2]|0;h=k[h+4>>2]|0;g=a+40|0;h=(Bj(Pi(k[g>>2]|0,k[g+4>>2]|0,f|0,((f|0)<0)<<31>>31|0)|0,M|0,b|0,h|0)|0)+(k[k[a>>2]>>2]|0)|0;h=l[h>>0]|l[h+1>>0]<<8|l[h+2>>0]<<16|l[h+3>>0]<<24;b=h>>>8&255;f=h>>>16&255;g=h>>>24&255;d=da((h&255)<<24>>24);if(!(i[a+32>>0]|0)){o[c>>2]=d;e=da(b<<24>>24);o[c+4>>2]=e;e=da(f<<24>>24);o[c+8>>2]=e;e=da(g<<24>>24);o[c+12>>2]=e;h=1;return h|0}else{e=da(d/da(127.0));o[c>>2]=e;e=da(da(b<<24>>24)/da(127.0));o[c+4>>2]=e;e=da(da(f<<24>>24)/da(127.0));o[c+8>>2]=e;e=da(da(g<<24>>24)/da(127.0));o[c+12>>2]=e;h=1;return h|0}}default:{h=0;return h|0}}return 0}function ed(a,b){a=a|0;b=b|0;var c=0,d=0,e=0,f=0,g=0,h=0,i=0,j=0,l=0,m=0,n=0;n=r;r=r+48|0;j=n+40|0;l=n+36|0;c=n+32|0;m=n;d=a+56|0;k[c>>2]=k[d>>2];i=b+16|0;h=i;g=k[h+4>>2]|0;if(!((g|0)>0|(g|0)==0&(k[h>>2]|0)>>>0>0)){k[l>>2]=k[b+4>>2];k[j>>2]=k[l>>2];je(b,j,c,c+4|0)|0}Ti(m);ch(m);e=k[a+52>>2]|0;g=k[d>>2]|0;f=g>>>5;h=e+(f<<2)|0;g=g&31;d=(f|0)!=0;a:do if(f|g|0){if(!g){c=1;f=e;while(1){if(d){d=0;while(1){e=(k[f>>2]&1<>2]&1<>2]&1<>2]&1<>2]|0;if((g|0)>0|(g|0)==0&(k[h>>2]|0)>>>0>0){Eg(m);r=n;return 1}d=b+4|0;k[l>>2]=k[d>>2];k[j>>2]=k[l>>2];je(b,j,c,c+4|0)|0;h=k[i+4>>2]|0;c=a+16|0;if((h|0)>0|(h|0)==0&(k[i>>2]|0)>>>0>0){Eg(m);r=n;return 1}k[l>>2]=k[d>>2];k[j>>2]=k[l>>2];je(b,j,c,c+4|0)|0;Eg(m);r=n;return 1}function fd(a,b){a=a|0;b=b|0;var c=0,d=0,e=0,f=0,g=0,h=0,i=0,j=0,l=0,m=0,n=0;n=r;r=r+48|0;j=n+40|0;l=n+36|0;c=n+32|0;m=n;d=a+80|0;k[c>>2]=k[d>>2];i=b+16|0;h=i;g=k[h+4>>2]|0;if(!((g|0)>0|(g|0)==0&(k[h>>2]|0)>>>0>0)){k[l>>2]=k[b+4>>2];k[j>>2]=k[l>>2];je(b,j,c,c+4|0)|0}Ti(m);ch(m);e=k[a+76>>2]|0;g=k[d>>2]|0;f=g>>>5;h=e+(f<<2)|0;g=g&31;d=(f|0)!=0;a:do if(f|g|0){if(!g){c=1;f=e;while(1){if(d){d=0;while(1){e=(k[f>>2]&1<>2]&1<>2]&1<>2]&1<>2]|0;if((g|0)>0|(g|0)==0&(k[h>>2]|0)>>>0>0){Eg(m);r=n;return 1}d=b+4|0;k[l>>2]=k[d>>2];k[j>>2]=k[l>>2];je(b,j,c,c+4|0)|0;h=k[i+4>>2]|0;c=a+16|0;if((h|0)>0|(h|0)==0&(k[i>>2]|0)>>>0>0){Eg(m);r=n;return 1}k[l>>2]=k[d>>2];k[j>>2]=k[l>>2];je(b,j,c,c+4|0)|0;Eg(m);r=n;return 1}function gd(a,b,c){a=a|0;b=b|0;c=c|0;var d=Pa,e=Pa,f=0,g=0,h=0;switch(i[a+24>>0]|0){case 1:{g=k[b>>2]|0;b=a+48|0;f=k[b>>2]|0;b=k[b+4>>2]|0;h=a+40|0;b=(Bj(Pi(k[h>>2]|0,k[h+4>>2]|0,g|0,((g|0)<0)<<31>>31|0)|0,M|0,f|0,b|0)|0)+(k[k[a>>2]>>2]|0)|0;e=da((l[b>>0]|l[b+1>>0]<<8|l[b+2>>0]<<16|l[b+3>>0]<<24)>>>0);d=da(e*da(2.32830644e-10));o[c>>2]=(i[a+32>>0]|0)==0?e:d;o[c+4>>2]=da(0.0);c=1;return c|0}case 2:{g=k[b>>2]|0;b=a+48|0;h=k[b>>2]|0;b=k[b+4>>2]|0;f=a+40|0;b=(Bj(Pi(k[f>>2]|0,k[f+4>>2]|0,g|0,((g|0)<0)<<31>>31|0)|0,M|0,h|0,b|0)|0)+(k[k[a>>2]>>2]|0)|0;h=b;b=b+4|0;b=l[b>>0]|l[b+1>>0]<<8|l[b+2>>0]<<16|l[b+3>>0]<<24;d=da((l[h>>0]|l[h+1>>0]<<8|l[h+2>>0]<<16|l[h+3>>0]<<24)>>>0);if(!(i[a+32>>0]|0)){o[c>>2]=d;e=da(b>>>0);o[c+4>>2]=e;h=1;return h|0}else{e=da(d*da(2.32830644e-10));o[c>>2]=e;e=da(da(b>>>0)*da(2.32830644e-10));o[c+4>>2]=e;h=1;return h|0}}case 3:{g=k[b>>2]|0;h=a+48|0;b=k[h>>2]|0;h=k[h+4>>2]|0;f=a+40|0;h=(Bj(Pi(k[f>>2]|0,k[f+4>>2]|0,g|0,((g|0)<0)<<31>>31|0)|0,M|0,b|0,h|0)|0)+(k[k[a>>2]>>2]|0)|0;b=h+4|0;b=l[b>>0]|l[b+1>>0]<<8|l[b+2>>0]<<16|l[b+3>>0]<<24;d=da((l[h>>0]|l[h+1>>0]<<8|l[h+2>>0]<<16|l[h+3>>0]<<24)>>>0);if(!(i[a+32>>0]|0)){o[c>>2]=d;e=da(b>>>0);o[c+4>>2]=e;h=1;return h|0}else{e=da(d*da(2.32830644e-10));o[c>>2]=e;e=da(da(b>>>0)*da(2.32830644e-10));o[c+4>>2]=e;h=1;return h|0}}case 4:{g=k[b>>2]|0;h=a+48|0;b=k[h>>2]|0;h=k[h+4>>2]|0;f=a+40|0;h=(Bj(Pi(k[f>>2]|0,k[f+4>>2]|0,g|0,((g|0)<0)<<31>>31|0)|0,M|0,b|0,h|0)|0)+(k[k[a>>2]>>2]|0)|0;b=h+4|0;b=l[b>>0]|l[b+1>>0]<<8|l[b+2>>0]<<16|l[b+3>>0]<<24;d=da((l[h>>0]|l[h+1>>0]<<8|l[h+2>>0]<<16|l[h+3>>0]<<24)>>>0);if(!(i[a+32>>0]|0)){o[c>>2]=d;e=da(b>>>0);o[c+4>>2]=e;h=1;return h|0}else{e=da(d*da(2.32830644e-10));o[c>>2]=e;e=da(da(b>>>0)*da(2.32830644e-10));o[c+4>>2]=e;h=1;return h|0}}default:{h=0;return h|0}}return 0}function hd(a,b,c){a=a|0;b=b|0;c=c|0;var d=Pa,e=Pa,f=0,g=0,h=0;switch(i[a+24>>0]|0){case 1:{b=k[b>>2]|0;g=a+48|0;f=k[g>>2]|0;g=k[g+4>>2]|0;h=a+40|0;g=Bj(Pi(k[h>>2]|0,k[h+4>>2]|0,b|0,((b|0)<0)<<31>>31|0)|0,M|0,f|0,g|0)|0;d=da(l[(k[k[a>>2]>>2]|0)+g>>0]|0);e=da(d/da(255.0));o[c>>2]=(i[a+32>>0]|0)==0?d:e;c=c+4|0;k[c>>2]=0;k[c+4>>2]=0;k[c+8>>2]=0;c=1;return c|0}case 2:{g=k[b>>2]|0;h=a+48|0;b=k[h>>2]|0;h=k[h+4>>2]|0;f=a+40|0;h=(Bj(Pi(k[f>>2]|0,k[f+4>>2]|0,g|0,((g|0)<0)<<31>>31|0)|0,M|0,b|0,h|0)|0)+(k[k[a>>2]>>2]|0)|0;h=l[h>>0]|l[h+1>>0]<<8;b=(h&65535)>>>8&255;d=da(h&255);if(!(i[a+32>>0]|0)){o[c>>2]=d;d=da(b&255)}else{d=da(d/da(255.0));o[c>>2]=d;d=da(da(b&255)/da(255.0))}o[c+4>>2]=d;h=c+8|0;k[h>>2]=0;k[h+4>>2]=0;h=1;return h|0}case 3:{b=k[b>>2]|0;h=a+48|0;f=k[h>>2]|0;h=k[h+4>>2]|0;g=a+40|0;h=(Bj(Pi(k[g>>2]|0,k[g+4>>2]|0,b|0,((b|0)<0)<<31>>31|0)|0,M|0,f|0,h|0)|0)+(k[k[a>>2]>>2]|0)|0;f=i[h+1>>0]|0;b=i[h+2>>0]|0;d=da(l[h>>0]|0);if(!(i[a+32>>0]|0)){o[c>>2]=d;e=da(b&255);d=da(f&255)}else{e=da(d/da(255.0));o[c>>2]=e;e=da(da(b&255)/da(255.0));d=da(da(f&255)/da(255.0))}o[c+4>>2]=d;o[c+8>>2]=e;o[c+12>>2]=da(0.0);h=1;return h|0}case 4:{f=k[b>>2]|0;h=a+48|0;b=k[h>>2]|0;h=k[h+4>>2]|0;g=a+40|0;h=(Bj(Pi(k[g>>2]|0,k[g+4>>2]|0,f|0,((f|0)<0)<<31>>31|0)|0,M|0,b|0,h|0)|0)+(k[k[a>>2]>>2]|0)|0;h=l[h>>0]|l[h+1>>0]<<8|l[h+2>>0]<<16|l[h+3>>0]<<24;b=h>>>8&255;f=h>>>16&255;g=h>>>24&255;d=da(h&255);if(!(i[a+32>>0]|0)){o[c>>2]=d;e=da(b&255);o[c+4>>2]=e;e=da(f&255);o[c+8>>2]=e;e=da(g&255);o[c+12>>2]=e;h=1;return h|0}else{e=da(d/da(255.0));o[c>>2]=e;e=da(da(b&255)/da(255.0));o[c+4>>2]=e;e=da(da(f&255)/da(255.0));o[c+8>>2]=e;e=da(da(g&255)/da(255.0));o[c+12>>2]=e;h=1;return h|0}}default:{h=0;return h|0}}return 0}function id(a,b,c){a=a|0;b=b|0;c=c|0;var d=Pa,e=Pa,f=0,g=0,h=0;switch(i[a+24>>0]|0){case 1:{g=k[b>>2]|0;b=a+48|0;f=k[b>>2]|0;b=k[b+4>>2]|0;h=a+40|0;b=(Bj(Pi(k[h>>2]|0,k[h+4>>2]|0,g|0,((g|0)<0)<<31>>31|0)|0,M|0,f|0,b|0)|0)+(k[k[a>>2]>>2]|0)|0;e=da(l[b>>0]|l[b+1>>0]<<8|l[b+2>>0]<<16|l[b+3>>0]<<24|0);d=da(e*da(4.65661287e-10));o[c>>2]=(i[a+32>>0]|0)==0?e:d;o[c+4>>2]=da(0.0);c=1;return c|0}case 2:{g=k[b>>2]|0;b=a+48|0;h=k[b>>2]|0;b=k[b+4>>2]|0;f=a+40|0;b=(Bj(Pi(k[f>>2]|0,k[f+4>>2]|0,g|0,((g|0)<0)<<31>>31|0)|0,M|0,h|0,b|0)|0)+(k[k[a>>2]>>2]|0)|0;h=b;b=b+4|0;b=l[b>>0]|l[b+1>>0]<<8|l[b+2>>0]<<16|l[b+3>>0]<<24;d=da(l[h>>0]|l[h+1>>0]<<8|l[h+2>>0]<<16|l[h+3>>0]<<24|0);if(!(i[a+32>>0]|0)){o[c>>2]=d;e=da(b|0);o[c+4>>2]=e;h=1;return h|0}else{e=da(d*da(4.65661287e-10));o[c>>2]=e;e=da(da(b|0)*da(4.65661287e-10));o[c+4>>2]=e;h=1;return h|0}}case 3:{g=k[b>>2]|0;h=a+48|0;b=k[h>>2]|0;h=k[h+4>>2]|0;f=a+40|0;h=(Bj(Pi(k[f>>2]|0,k[f+4>>2]|0,g|0,((g|0)<0)<<31>>31|0)|0,M|0,b|0,h|0)|0)+(k[k[a>>2]>>2]|0)|0;b=h+4|0;b=l[b>>0]|l[b+1>>0]<<8|l[b+2>>0]<<16|l[b+3>>0]<<24;d=da(l[h>>0]|l[h+1>>0]<<8|l[h+2>>0]<<16|l[h+3>>0]<<24|0);if(!(i[a+32>>0]|0)){o[c>>2]=d;e=da(b|0);o[c+4>>2]=e;h=1;return h|0}else{e=da(d*da(4.65661287e-10));o[c>>2]=e;e=da(da(b|0)*da(4.65661287e-10));o[c+4>>2]=e;h=1;return h|0}}case 4:{g=k[b>>2]|0;h=a+48|0;b=k[h>>2]|0;h=k[h+4>>2]|0;f=a+40|0;h=(Bj(Pi(k[f>>2]|0,k[f+4>>2]|0,g|0,((g|0)<0)<<31>>31|0)|0,M|0,b|0,h|0)|0)+(k[k[a>>2]>>2]|0)|0;b=h+4|0;b=l[b>>0]|l[b+1>>0]<<8|l[b+2>>0]<<16|l[b+3>>0]<<24;d=da(l[h>>0]|l[h+1>>0]<<8|l[h+2>>0]<<16|l[h+3>>0]<<24|0);if(!(i[a+32>>0]|0)){o[c>>2]=d;e=da(b|0);o[c+4>>2]=e;h=1;return h|0}else{e=da(d*da(4.65661287e-10));o[c>>2]=e;e=da(da(b|0)*da(4.65661287e-10));o[c+4>>2]=e;h=1;return h|0}}default:{h=0;return h|0}}return 0}function jd(a,b,c){a=a|0;b=b|0;c=c|0;var d=Pa,e=0,f=Pa,g=0,h=0;switch(i[a+24>>0]|0){case 1:{g=k[b>>2]|0;e=a+48|0;b=k[e>>2]|0;e=k[e+4>>2]|0;h=a+40|0;e=Bj(Pi(k[h>>2]|0,k[h+4>>2]|0,g|0,((g|0)<0)<<31>>31|0)|0,M|0,b|0,e|0)|0;f=da(i[(k[k[a>>2]>>2]|0)+e>>0]|0);d=da(f/da(127.0));o[c>>2]=(i[a+32>>0]|0)==0?f:d;c=c+4|0;k[c>>2]=0;k[c+4>>2]=0;c=1;return c|0}case 2:{g=k[b>>2]|0;h=a+48|0;b=k[h>>2]|0;h=k[h+4>>2]|0;e=a+40|0;h=(Bj(Pi(k[e>>2]|0,k[e+4>>2]|0,g|0,((g|0)<0)<<31>>31|0)|0,M|0,b|0,h|0)|0)+(k[k[a>>2]>>2]|0)|0;h=l[h>>0]|l[h+1>>0]<<8;b=(h&65535)>>>8&255;d=da((h&255)<<24>>24);if(!(i[a+32>>0]|0)){o[c>>2]=d;d=da(b<<24>>24)}else{d=da(d/da(127.0));o[c>>2]=d;d=da(da(b<<24>>24)/da(127.0))}o[c+4>>2]=d;o[c+8>>2]=da(0.0);h=1;return h|0}case 3:{e=k[b>>2]|0;h=a+48|0;b=k[h>>2]|0;h=k[h+4>>2]|0;g=a+40|0;h=(Bj(Pi(k[g>>2]|0,k[g+4>>2]|0,e|0,((e|0)<0)<<31>>31|0)|0,M|0,b|0,h|0)|0)+(k[k[a>>2]>>2]|0)|0;b=i[h+1>>0]|0;e=i[h+2>>0]|0;d=da(i[h>>0]|0);if(!(i[a+32>>0]|0)){o[c>>2]=d;f=da(b<<24>>24);o[c+4>>2]=f;f=da(e<<24>>24);o[c+8>>2]=f;h=1;return h|0}else{f=da(d/da(127.0));o[c>>2]=f;f=da(da(b<<24>>24)/da(127.0));o[c+4>>2]=f;f=da(da(e<<24>>24)/da(127.0));o[c+8>>2]=f;h=1;return h|0}}case 4:{e=k[b>>2]|0;h=a+48|0;b=k[h>>2]|0;h=k[h+4>>2]|0;g=a+40|0;h=(Bj(Pi(k[g>>2]|0,k[g+4>>2]|0,e|0,((e|0)<0)<<31>>31|0)|0,M|0,b|0,h|0)|0)+(k[k[a>>2]>>2]|0)|0;h=l[h>>0]|l[h+1>>0]<<8|l[h+2>>0]<<16|l[h+3>>0]<<24;b=h>>>8&255;e=h>>>16&255;d=da((h&255)<<24>>24);if(!(i[a+32>>0]|0)){o[c>>2]=d;f=da(b<<24>>24);o[c+4>>2]=f;f=da(e<<24>>24);o[c+8>>2]=f;h=1;return h|0}else{f=da(d/da(127.0));o[c>>2]=f;f=da(da(b<<24>>24)/da(127.0));o[c+4>>2]=f;f=da(da(e<<24>>24)/da(127.0));o[c+8>>2]=f;h=1;return h|0}}default:{h=0;return h|0}}return 0}function kd(a,b){a=a|0;b=b|0;var c=0,d=0,e=0,f=0,g=0,h=0,j=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0;d=a+4|0;if(!b){c=k[a>>2]|0;k[a>>2]=0;if(c|0)gl(c);k[d>>2]=0;return}if(b>>>0>1073741823){a=Ma(4)|0;Tk(a);xa(a|0,856,71)}u=Si(b<<2)|0;c=k[a>>2]|0;k[a>>2]=u;if(c|0)gl(c);k[d>>2]=b;c=0;do{k[(k[a>>2]|0)+(c<<2)>>2]=0;c=c+1|0}while((c|0)!=(b|0));d=a+8|0;f=k[d>>2]|0;if(!f)return;c=k[f+4>>2]|0;t=b+-1|0;u=(t&b|0)==0;if(u)c=c&t;else c=(c>>>0)%(b>>>0)|0;k[(k[a>>2]|0)+(c<<2)>>2]=d;d=k[f>>2]|0;if(!d)return;s=a+24|0;r=c;e=f;c=f;a:while(1){q=c;b:while(1){c=d;while(1){d=k[c+4>>2]|0;if(u)p=d&t;else p=(d>>>0)%(b>>>0)|0;if((p|0)==(r|0))break;d=(k[a>>2]|0)+(p<<2)|0;if(!(k[d>>2]|0))break b;f=k[c>>2]|0;c:do if(!f)d=c;else{m=k[c+8>>2]|0;l=k[s>>2]|0;o=k[l+4>>2]|0;l=(k[l+8>>2]|0)-o|0;n=l>>2;if((l|0)>0)d=c;else{d=f;while(1){f=k[d>>2]|0;if(!f)break c;else d=f}}while(1){l=k[f+8>>2]|0;j=0;do{if((n|0)<=(j|0)){c=33;break a}g=k[o+(j<<2)>>2]|0;if(!(i[g+84>>0]|0)){h=k[g+68>>2]|0;g=k[h+(l<<2)>>2]|0;h=k[h+(m<<2)>>2]|0}else{g=l;h=m}j=j+1|0;if((h|0)!=(g|0))break c}while((j|0)<(n|0));d=k[f>>2]|0;if(!d){d=f;break}else{l=f;f=d;d=l}}}while(0);k[q>>2]=k[d>>2];k[d>>2]=k[k[(k[a>>2]|0)+(p<<2)>>2]>>2];k[k[(k[a>>2]|0)+(p<<2)>>2]>>2]=c;c=k[e>>2]|0;if(!c){c=38;break a}}d=k[c>>2]|0;if(!d){c=38;break a}else{e=c;q=c}}k[d>>2]=q;d=k[c>>2]|0;if(!d){c=38;break}else{r=p;e=c}}if((c|0)==33)Ka(12937,12899,63,12927);else if((c|0)==38)return}function ld(a){a=a|0;var b=0,c=0,d=0,e=0,f=0,g=0,h=0,i=0,j=0,l=0,m=0,n=0,o=0,p=0,q=0,s=0;s=r;r=r+16|0;q=s;b=k[a>>2]|0;o=a+4|0;a=k[o>>2]|0;p=a-b|0;c=p>>5;if((p|0)<=32){q=k[o>>2]|0;q=q+-32|0;k[o>>2]=q;r=s;return}p=b;n=a;i=n+-32|0;a=k[p>>2]|0;d=p+4|0;j=k[d>>2]|0;e=p+8|0;l=k[e>>2]|0;g=p+12|0;m=k[g>>2]|0;h=p+16|0;k[q>>2]=k[h>>2];k[q+4>>2]=k[h+4>>2];k[q+8>>2]=k[h+8>>2];k[q+12>>2]=k[h+12>>2];f=b;k[f>>2]=k[i>>2];k[f+4>>2]=k[i+4>>2];k[f+8>>2]=k[i+8>>2];k[f+12>>2]=k[i+12>>2];k[f+16>>2]=k[i+16>>2];k[f+20>>2]=k[i+20>>2];k[f+24>>2]=k[i+24>>2];k[f+28>>2]=k[i+28>>2];k[i>>2]=a;k[n+-28>>2]=j;k[n+-24>>2]=l;k[n+-20>>2]=m;n=n+-16|0;k[n>>2]=k[q>>2];k[n+4>>2]=k[q+4>>2];k[n+8>>2]=k[q+8>>2];k[n+12>>2]=k[q+12>>2];n=c+-1|0;if((c|0)==2){q=k[o>>2]|0;q=q+-32|0;k[o>>2]=q;r=s;return}l=c+-3|0;m=(l|0)/2|0;if((l|0)<-1){q=k[o>>2]|0;q=q+-32|0;k[o>>2]=q;r=s;return}a=p+32|0;b=a;if((n|0)>2){l=p+64|0;j=(k[a>>2]|0)>>>0<(k[l>>2]|0)>>>0;a=j?2:1;b=j?l:b}else a=1;l=k[p>>2]|0;if((k[b>>2]|0)>>>0>>0){q=k[o>>2]|0;q=q+-32|0;k[o>>2]=q;r=s;return}j=k[d>>2]|0;i=k[e>>2]|0;g=k[g>>2]|0;k[q>>2]=k[h>>2];k[q+4>>2]=k[h+4>>2];k[q+8>>2]=k[h+8>>2];k[q+12>>2]=k[h+12>>2];while(1){h=f;f=b;k[h>>2]=k[f>>2];k[h+4>>2]=k[f+4>>2];k[h+8>>2]=k[f+8>>2];k[h+12>>2]=k[f+12>>2];k[h+16>>2]=k[f+16>>2];k[h+20>>2]=k[f+20>>2];k[h+24>>2]=k[f+24>>2];k[h+28>>2]=k[f+28>>2];if((m|0)<(a|0))break;a=a<<1|1;d=p+(a<<5)|0;c=d;e=a+1|0;if((e|0)<(n|0)){h=d+32|0;d=(k[d>>2]|0)>>>0<(k[h>>2]|0)>>>0;a=d?e:a;c=d?h:c}if((k[c>>2]|0)>>>0>>0)break;else b=c}p=b;k[p>>2]=l;k[p+4>>2]=j;k[p+8>>2]=i;k[p+12>>2]=g;p=p+16|0;k[p>>2]=k[q>>2];k[p+4>>2]=k[q+4>>2];k[p+8>>2]=k[q+8>>2];k[p+12>>2]=k[q+12>>2];q=k[o>>2]|0;q=q+-32|0;k[o>>2]=q;r=s;return}function md(a,b,c){a=a|0;b=b|0;c=c|0;var d=Pa,e=Pa,f=0,g=0,h=0;switch(i[a+24>>0]|0){case 1:{g=k[b>>2]|0;b=a+48|0;f=k[b>>2]|0;b=k[b+4>>2]|0;h=a+40|0;b=(Bj(Pi(k[h>>2]|0,k[h+4>>2]|0,g|0,((g|0)<0)<<31>>31|0)|0,M|0,f|0,b|0)|0)+(k[k[a>>2]>>2]|0)|0;e=da((l[b>>0]|l[b+1>>0]<<8)<<16>>16);d=da(e/da(32767.0));o[c>>2]=(i[a+32>>0]|0)==0?e:d;o[c+4>>2]=da(0.0);c=1;return c|0}case 2:{g=k[b>>2]|0;h=a+48|0;b=k[h>>2]|0;h=k[h+4>>2]|0;f=a+40|0;h=(Bj(Pi(k[f>>2]|0,k[f+4>>2]|0,g|0,((g|0)<0)<<31>>31|0)|0,M|0,b|0,h|0)|0)+(k[k[a>>2]>>2]|0)|0;h=l[h>>0]|l[h+1>>0]<<8|l[h+2>>0]<<16|l[h+3>>0]<<24;b=h>>>16&65535;d=da((h&65535)<<16>>16);if(!(i[a+32>>0]|0)){o[c>>2]=d;e=da(b<<16>>16);o[c+4>>2]=e;h=1;return h|0}else{e=da(d/da(32767.0));o[c>>2]=e;e=da(da(b<<16>>16)/da(32767.0));o[c+4>>2]=e;h=1;return h|0}}case 3:{g=k[b>>2]|0;h=a+48|0;b=k[h>>2]|0;h=k[h+4>>2]|0;f=a+40|0;h=(Bj(Pi(k[f>>2]|0,k[f+4>>2]|0,g|0,((g|0)<0)<<31>>31|0)|0,M|0,b|0,h|0)|0)+(k[k[a>>2]>>2]|0)|0;b=h+2|0;b=l[b>>0]|l[b+1>>0]<<8;d=da((l[h>>0]|l[h+1>>0]<<8)<<16>>16);if(!(i[a+32>>0]|0)){o[c>>2]=d;e=da(b<<16>>16);o[c+4>>2]=e;h=1;return h|0}else{e=da(d/da(32767.0));o[c>>2]=e;e=da(da(b<<16>>16)/da(32767.0));o[c+4>>2]=e;h=1;return h|0}}case 4:{h=k[b>>2]|0;b=a+48|0;g=k[b>>2]|0;b=k[b+4>>2]|0;f=a+40|0;b=(Bj(Pi(k[f>>2]|0,k[f+4>>2]|0,h|0,((h|0)<0)<<31>>31|0)|0,M|0,g|0,b|0)|0)+(k[k[a>>2]>>2]|0)|0;g=b;g=l[g>>0]|l[g+1>>0]<<8|l[g+2>>0]<<16|l[g+3>>0]<<24;b=b+4|0;h=(i[a+32>>0]|0)==0;b=(lj(g|0,l[b>>0]|l[b+1>>0]<<8|l[b+2>>0]<<16|l[b+3>>0]<<24|0,16)|0)&65535;d=da((g&65535)<<16>>16);if(h){o[c>>2]=d;e=da(b<<16>>16);o[c+4>>2]=e;h=1;return h|0}else{e=da(d/da(32767.0));o[c>>2]=e;e=da(da(b<<16>>16)/da(32767.0));o[c+4>>2]=e;h=1;return h|0}}default:{h=0;return h|0}}return 0}function nd(a,b,c,d,e){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;var f=0;switch(a|0){case 1:{f=Si(60)|0;k[f>>2]=3208;k[f+4>>2]=b;k[f+8>>2]=k[c>>2];b=f+12|0;e=c+4|0;k[b>>2]=k[e>>2];k[b+4>>2]=k[e+4>>2];k[b+8>>2]=k[e+8>>2];k[b+12>>2]=k[e+12>>2];k[b+16>>2]=k[e+16>>2];Xg(f+32|0,c+24|0);c=f+44|0;k[c>>2]=k[d>>2];k[c+4>>2]=k[d+4>>2];k[c+8>>2]=k[d+8>>2];k[c+12>>2]=k[d+12>>2];k[f>>2]=3592;d=f;return d|0}case 2:{f=Si(60)|0;k[f>>2]=3208;k[f+4>>2]=b;k[f+8>>2]=k[c>>2];b=f+12|0;e=c+4|0;k[b>>2]=k[e>>2];k[b+4>>2]=k[e+4>>2];k[b+8>>2]=k[e+8>>2];k[b+12>>2]=k[e+12>>2];k[b+16>>2]=k[e+16>>2];Xg(f+32|0,c+24|0);c=f+44|0;k[c>>2]=k[d>>2];k[c+4>>2]=k[d+4>>2];k[c+8>>2]=k[d+8>>2];k[c+12>>2]=k[d+12>>2];k[f>>2]=3656;d=f;return d|0}case 4:{f=Si(112)|0;k[f>>2]=3208;k[f+4>>2]=b;k[f+8>>2]=k[c>>2];a=f+12|0;e=c+4|0;k[a>>2]=k[e>>2];k[a+4>>2]=k[e+4>>2];k[a+8>>2]=k[e+8>>2];k[a+12>>2]=k[e+12>>2];k[a+16>>2]=k[e+16>>2];Xg(f+32|0,c+24|0);a=f+44|0;k[a>>2]=k[d>>2];k[a+4>>2]=k[d+4>>2];k[a+8>>2]=k[d+8>>2];k[a+12>>2]=k[d+12>>2];k[f>>2]=3720;a=f+60|0;e=a+52|0;do{k[a>>2]=0;a=a+4|0}while((a|0)<(e|0));d=f;return d|0}case 3:{f=Si(92)|0;k[f>>2]=3208;k[f+4>>2]=b;k[f+8>>2]=k[c>>2];b=f+12|0;a=c+4|0;k[b>>2]=k[a>>2];k[b+4>>2]=k[a+4>>2];k[b+8>>2]=k[a+8>>2];k[b+12>>2]=k[a+12>>2];k[b+16>>2]=k[a+16>>2];Xg(f+32|0,c+24|0);c=f+44|0;k[c>>2]=k[d>>2];k[c+4>>2]=k[d+4>>2];k[c+8>>2]=k[d+8>>2];k[c+12>>2]=k[d+12>>2];k[f>>2]=3784;d=f+60|0;k[d>>2]=0;k[d+4>>2]=0;k[d+8>>2]=0;k[d+12>>2]=0;k[d+16>>2]=0;k[d+20>>2]=0;k[d+24>>2]=0;k[f+88>>2]=e&65535;d=f;return d|0}default:{d=0;return d|0}}return 0}function od(a,b,c,d,e){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;var f=0;switch(a|0){case 1:{f=Si(60)|0;k[f>>2]=3208;k[f+4>>2]=b;k[f+8>>2]=k[c>>2];b=f+12|0;e=c+4|0;k[b>>2]=k[e>>2];k[b+4>>2]=k[e+4>>2];k[b+8>>2]=k[e+8>>2];k[b+12>>2]=k[e+12>>2];k[b+16>>2]=k[e+16>>2];Xg(f+32|0,c+24|0);c=f+44|0;k[c>>2]=k[d>>2];k[c+4>>2]=k[d+4>>2];k[c+8>>2]=k[d+8>>2];k[c+12>>2]=k[d+12>>2];k[f>>2]=3336;d=f;return d|0}case 2:{f=Si(60)|0;k[f>>2]=3208;k[f+4>>2]=b;k[f+8>>2]=k[c>>2];b=f+12|0;e=c+4|0;k[b>>2]=k[e>>2];k[b+4>>2]=k[e+4>>2];k[b+8>>2]=k[e+8>>2];k[b+12>>2]=k[e+12>>2];k[b+16>>2]=k[e+16>>2];Xg(f+32|0,c+24|0);c=f+44|0;k[c>>2]=k[d>>2];k[c+4>>2]=k[d+4>>2];k[c+8>>2]=k[d+8>>2];k[c+12>>2]=k[d+12>>2];k[f>>2]=3400;d=f;return d|0}case 4:{f=Si(112)|0;k[f>>2]=3208;k[f+4>>2]=b;k[f+8>>2]=k[c>>2];a=f+12|0;e=c+4|0;k[a>>2]=k[e>>2];k[a+4>>2]=k[e+4>>2];k[a+8>>2]=k[e+8>>2];k[a+12>>2]=k[e+12>>2];k[a+16>>2]=k[e+16>>2];Xg(f+32|0,c+24|0);a=f+44|0;k[a>>2]=k[d>>2];k[a+4>>2]=k[d+4>>2];k[a+8>>2]=k[d+8>>2];k[a+12>>2]=k[d+12>>2];k[f>>2]=3464;a=f+60|0;e=a+52|0;do{k[a>>2]=0;a=a+4|0}while((a|0)<(e|0));d=f;return d|0}case 3:{f=Si(92)|0;k[f>>2]=3208;k[f+4>>2]=b;k[f+8>>2]=k[c>>2];b=f+12|0;a=c+4|0;k[b>>2]=k[a>>2];k[b+4>>2]=k[a+4>>2];k[b+8>>2]=k[a+8>>2];k[b+12>>2]=k[a+12>>2];k[b+16>>2]=k[a+16>>2];Xg(f+32|0,c+24|0);c=f+44|0;k[c>>2]=k[d>>2];k[c+4>>2]=k[d+4>>2];k[c+8>>2]=k[d+8>>2];k[c+12>>2]=k[d+12>>2];k[f>>2]=3528;d=f+60|0;k[d>>2]=0;k[d+4>>2]=0;k[d+8>>2]=0;k[d+12>>2]=0;k[d+16>>2]=0;k[d+20>>2]=0;k[d+24>>2]=0;k[f+88>>2]=e&65535;d=f;return d|0}default:{d=0;return d|0}}return 0}function pd(a,b,c){a=a|0;b=b|0;c=c|0;var d=Pa,e=0,f=Pa,g=0,h=0;switch(i[a+24>>0]|0){case 1:{g=k[b>>2]|0;e=a+48|0;b=k[e>>2]|0;e=k[e+4>>2]|0;h=a+40|0;e=Bj(Pi(k[h>>2]|0,k[h+4>>2]|0,g|0,((g|0)<0)<<31>>31|0)|0,M|0,b|0,e|0)|0;f=da(l[(k[k[a>>2]>>2]|0)+e>>0]|0);d=da(f/da(255.0));o[c>>2]=(i[a+32>>0]|0)==0?f:d;c=c+4|0;k[c>>2]=0;k[c+4>>2]=0;c=1;return c|0}case 2:{g=k[b>>2]|0;h=a+48|0;b=k[h>>2]|0;h=k[h+4>>2]|0;e=a+40|0;h=(Bj(Pi(k[e>>2]|0,k[e+4>>2]|0,g|0,((g|0)<0)<<31>>31|0)|0,M|0,b|0,h|0)|0)+(k[k[a>>2]>>2]|0)|0;h=l[h>>0]|l[h+1>>0]<<8;b=(h&65535)>>>8&255;d=da(h&255);if(!(i[a+32>>0]|0)){o[c>>2]=d;d=da(b&255)}else{d=da(d/da(255.0));o[c>>2]=d;d=da(da(b&255)/da(255.0))}o[c+4>>2]=d;o[c+8>>2]=da(0.0);h=1;return h|0}case 3:{e=k[b>>2]|0;h=a+48|0;b=k[h>>2]|0;h=k[h+4>>2]|0;g=a+40|0;h=(Bj(Pi(k[g>>2]|0,k[g+4>>2]|0,e|0,((e|0)<0)<<31>>31|0)|0,M|0,b|0,h|0)|0)+(k[k[a>>2]>>2]|0)|0;b=i[h+1>>0]|0;e=i[h+2>>0]|0;d=da(l[h>>0]|0);if(!(i[a+32>>0]|0)){o[c>>2]=d;f=da(b&255);o[c+4>>2]=f;f=da(e&255);o[c+8>>2]=f;h=1;return h|0}else{f=da(d/da(255.0));o[c>>2]=f;f=da(da(b&255)/da(255.0));o[c+4>>2]=f;f=da(da(e&255)/da(255.0));o[c+8>>2]=f;h=1;return h|0}}case 4:{e=k[b>>2]|0;h=a+48|0;b=k[h>>2]|0;h=k[h+4>>2]|0;g=a+40|0;h=(Bj(Pi(k[g>>2]|0,k[g+4>>2]|0,e|0,((e|0)<0)<<31>>31|0)|0,M|0,b|0,h|0)|0)+(k[k[a>>2]>>2]|0)|0;h=l[h>>0]|l[h+1>>0]<<8|l[h+2>>0]<<16|l[h+3>>0]<<24;b=h>>>8&255;e=h>>>16&255;d=da(h&255);if(!(i[a+32>>0]|0)){o[c>>2]=d;f=da(b&255);o[c+4>>2]=f;f=da(e&255);o[c+8>>2]=f;h=1;return h|0}else{f=da(d/da(255.0));o[c>>2]=f;f=da(da(b&255)/da(255.0));o[c+4>>2]=f;f=da(da(e&255)/da(255.0));o[c+8>>2]=f;h=1;return h|0}}default:{h=0;return h|0}}return 0}function qd(a,b,c){a=a|0;b=b|0;c=c|0;var d=Pa,e=Pa,f=0,g=0,h=0;switch(i[a+24>>0]|0){case 1:{g=k[b>>2]|0;b=a+48|0;f=k[b>>2]|0;b=k[b+4>>2]|0;h=a+40|0;b=(Bj(Pi(k[h>>2]|0,k[h+4>>2]|0,g|0,((g|0)<0)<<31>>31|0)|0,M|0,f|0,b|0)|0)+(k[k[a>>2]>>2]|0)|0;e=da((l[b>>0]|l[b+1>>0]<<8)&65535);d=da(e/da(65535.0));o[c>>2]=(i[a+32>>0]|0)==0?e:d;o[c+4>>2]=da(0.0);c=1;return c|0}case 2:{g=k[b>>2]|0;h=a+48|0;b=k[h>>2]|0;h=k[h+4>>2]|0;f=a+40|0;h=(Bj(Pi(k[f>>2]|0,k[f+4>>2]|0,g|0,((g|0)<0)<<31>>31|0)|0,M|0,b|0,h|0)|0)+(k[k[a>>2]>>2]|0)|0;h=l[h>>0]|l[h+1>>0]<<8|l[h+2>>0]<<16|l[h+3>>0]<<24;b=h>>>16&65535;d=da(h&65535);if(!(i[a+32>>0]|0)){o[c>>2]=d;e=da(b&65535);o[c+4>>2]=e;h=1;return h|0}else{e=da(d/da(65535.0));o[c>>2]=e;e=da(da(b&65535)/da(65535.0));o[c+4>>2]=e;h=1;return h|0}}case 3:{g=k[b>>2]|0;h=a+48|0;b=k[h>>2]|0;h=k[h+4>>2]|0;f=a+40|0;h=(Bj(Pi(k[f>>2]|0,k[f+4>>2]|0,g|0,((g|0)<0)<<31>>31|0)|0,M|0,b|0,h|0)|0)+(k[k[a>>2]>>2]|0)|0;b=h+2|0;b=l[b>>0]|l[b+1>>0]<<8;d=da((l[h>>0]|l[h+1>>0]<<8)&65535);if(!(i[a+32>>0]|0)){o[c>>2]=d;e=da(b&65535);o[c+4>>2]=e;h=1;return h|0}else{e=da(d/da(65535.0));o[c>>2]=e;e=da(da(b&65535)/da(65535.0));o[c+4>>2]=e;h=1;return h|0}}case 4:{h=k[b>>2]|0;b=a+48|0;g=k[b>>2]|0;b=k[b+4>>2]|0;f=a+40|0;b=(Bj(Pi(k[f>>2]|0,k[f+4>>2]|0,h|0,((h|0)<0)<<31>>31|0)|0,M|0,g|0,b|0)|0)+(k[k[a>>2]>>2]|0)|0;g=b;g=l[g>>0]|l[g+1>>0]<<8|l[g+2>>0]<<16|l[g+3>>0]<<24;b=b+4|0;h=(i[a+32>>0]|0)==0;b=(lj(g|0,l[b>>0]|l[b+1>>0]<<8|l[b+2>>0]<<16|l[b+3>>0]<<24|0,16)|0)&65535;d=da(g&65535);if(h){o[c>>2]=d;e=da(b&65535);o[c+4>>2]=e;h=1;return h|0}else{e=da(d/da(65535.0));o[c>>2]=e;e=da(da(b&65535)/da(65535.0));o[c+4>>2]=e;h=1;return h|0}}default:{h=0;return h|0}}return 0}function rd(a,b,c,d,e,f){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;f=f|0;var g=0,h=0,i=0,j=0,l=0,m=0,n=0,o=0,p=0,q=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0;z=r;r=r+16|0;x=z+4|0;y=z;k[a+72>>2]=e;k[a+64>>2]=f;w=a+68|0;v=dl(e>>>0>1073741823?-1:e<<2)|0;d=k[w>>2]|0;k[w>>2]=v;if(d|0)el(d);v=a+8|0;k[v>>2]=e;d=a+32|0;f=a+36|0;i=k[f>>2]|0;h=k[d>>2]|0;g=i-h>>2;if(g>>>0>=e>>>0){if(g>>>0>e>>>0?(j=h+(e<<2)|0,(i|0)!=(j|0)):0)k[f>>2]=i+(~((i+-4-j|0)>>>2)<<2)}else eg(d,e-g|0);o=a+56|0;h=k[o>>2]|0;g=k[h+4>>2]|0;f=k[h>>2]|0;u=g-f|0;p=u>>2;if((u|0)<=0){r=z;return 1}q=a+16|0;s=a+32|0;t=a+12|0;u=a+20|0;d=0;while(1){if(g-f>>2>>>0<=d>>>0){d=13;break}k[y>>2]=k[f+(d<<2)>>2];k[x>>2]=k[y>>2];lc(a,x,c,d);m=$(d,e)|0;l=k[w>>2]|0;n=c+(m<<2)|0;if((k[v>>2]|0)>0){j=0;do{i=k[l+(j<<2)>>2]|0;f=k[q>>2]|0;do if((i|0)<=(f|0)){f=k[t>>2]|0;g=k[s>>2]|0;h=g+(j<<2)|0;if((i|0)<(f|0)){k[h>>2]=f;h=g;break}else{k[h>>2]=i;h=g;break}}else{h=k[s>>2]|0;k[h+(j<<2)>>2]=f}while(0);j=j+1|0;f=k[v>>2]|0}while((j|0)<(f|0));if((f|0)>0){f=0;do{k[n+(f<<2)>>2]=(k[b+(f+m<<2)>>2]|0)+(k[h+(f<<2)>>2]|0);f=f+1|0;g=k[v>>2]|0}while((f|0)<(g|0));if((g|0)>0){f=0;do{g=n+(f<<2)|0;h=k[g>>2]|0;if((h|0)<=(k[q>>2]|0)){if((h|0)<(k[t>>2]|0))k[g>>2]=(k[u>>2]|0)+h}else k[g>>2]=h-(k[u>>2]|0);f=f+1|0}while((f|0)<(k[v>>2]|0))}}}d=d+1|0;if((d|0)>=(p|0)){d=10;break}h=k[o>>2]|0;f=k[h>>2]|0;g=k[h+4>>2]|0}if((d|0)==10){r=z;return 1}else if((d|0)==13)lk(h);return 0}function sd(a,b,c,d,e,f){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;f=f|0;var g=0,h=0,i=0,j=0,l=0,m=0,n=0,o=0,p=0,q=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0;z=r;r=r+16|0;x=z+4|0;y=z;k[a+72>>2]=e;k[a+64>>2]=f;w=a+68|0;v=dl(e>>>0>1073741823?-1:e<<2)|0;d=k[w>>2]|0;k[w>>2]=v;if(d|0)el(d);v=a+8|0;k[v>>2]=e;d=a+32|0;f=a+36|0;i=k[f>>2]|0;h=k[d>>2]|0;g=i-h>>2;if(g>>>0>=e>>>0){if(g>>>0>e>>>0?(j=h+(e<<2)|0,(i|0)!=(j|0)):0)k[f>>2]=i+(~((i+-4-j|0)>>>2)<<2)}else eg(d,e-g|0);o=a+56|0;h=k[o>>2]|0;g=k[h+4>>2]|0;f=k[h>>2]|0;u=g-f|0;p=u>>2;if((u|0)<=0){r=z;return 1}q=a+16|0;s=a+32|0;t=a+12|0;u=a+20|0;d=0;while(1){if(g-f>>2>>>0<=d>>>0){d=13;break}k[y>>2]=k[f+(d<<2)>>2];k[x>>2]=k[y>>2];gc(a,x,c,d);m=$(d,e)|0;l=k[w>>2]|0;n=c+(m<<2)|0;if((k[v>>2]|0)>0){j=0;do{i=k[l+(j<<2)>>2]|0;f=k[q>>2]|0;do if((i|0)<=(f|0)){f=k[t>>2]|0;g=k[s>>2]|0;h=g+(j<<2)|0;if((i|0)<(f|0)){k[h>>2]=f;h=g;break}else{k[h>>2]=i;h=g;break}}else{h=k[s>>2]|0;k[h+(j<<2)>>2]=f}while(0);j=j+1|0;f=k[v>>2]|0}while((j|0)<(f|0));if((f|0)>0){f=0;do{k[n+(f<<2)>>2]=(k[b+(f+m<<2)>>2]|0)+(k[h+(f<<2)>>2]|0);f=f+1|0;g=k[v>>2]|0}while((f|0)<(g|0));if((g|0)>0){f=0;do{g=n+(f<<2)|0;h=k[g>>2]|0;if((h|0)<=(k[q>>2]|0)){if((h|0)<(k[t>>2]|0))k[g>>2]=(k[u>>2]|0)+h}else k[g>>2]=h-(k[u>>2]|0);f=f+1|0}while((f|0)<(k[v>>2]|0))}}}d=d+1|0;if((d|0)>=(p|0)){d=10;break}h=k[o>>2]|0;f=k[h>>2]|0;g=k[h+4>>2]|0}if((d|0)==10){r=z;return 1}else if((d|0)==13)lk(h);return 0}function td(a,b){a=a|0;b=b|0;var c=0,d=0,e=0,f=0,g=0,h=0,i=0,l=0,m=0,n=0;d=a+4|0;if(!b){c=k[a>>2]|0;k[a>>2]=0;if(c|0)gl(c);k[d>>2]=0;return}if(b>>>0>1073741823){a=Ma(4)|0;Tk(a);xa(a|0,856,71)}n=Si(b<<2)|0;c=k[a>>2]|0;k[a>>2]=n;if(c|0)gl(c);k[d>>2]=b;c=0;do{k[(k[a>>2]|0)+(c<<2)>>2]=0;c=c+1|0}while((c|0)!=(b|0));d=a+8|0;g=k[d>>2]|0;if(!g)return;c=k[g+4>>2]|0;m=b+-1|0;n=(m&b|0)==0;if(n)c=c&m;else c=(c>>>0)%(b>>>0)|0;k[(k[a>>2]|0)+(c<<2)>>2]=d;d=k[g>>2]|0;if(!d)return;else{e=c;f=g;c=g}a:while(1){b:do if(n){i=c;while(1){c=d;while(1){l=k[c+4>>2]&m;if((l|0)==(e|0))break;d=(k[a>>2]|0)+(l<<2)|0;if(!(k[d>>2]|0)){f=i;e=l;break b}h=c+8|0;d=c;while(1){g=k[d>>2]|0;if(!g)break;if((j[h>>1]|0)==(j[g+8>>1]|0))d=g;else break}k[i>>2]=g;k[d>>2]=k[k[(k[a>>2]|0)+(l<<2)>>2]>>2];k[k[(k[a>>2]|0)+(l<<2)>>2]>>2]=c;c=k[f>>2]|0;if(!c){c=34;break a}}d=k[c>>2]|0;if(!d){c=34;break a}else{f=c;i=c}}}else{i=c;while(1){c=d;while(1){l=((k[c+4>>2]|0)>>>0)%(b>>>0)|0;if((l|0)==(e|0))break;d=(k[a>>2]|0)+(l<<2)|0;if(!(k[d>>2]|0)){f=i;e=l;break b}g=c+8|0;d=c;while(1){h=k[d>>2]|0;if(!h)break;if((j[g>>1]|0)==(j[h+8>>1]|0))d=h;else break}k[i>>2]=h;k[d>>2]=k[k[(k[a>>2]|0)+(l<<2)>>2]>>2];k[k[(k[a>>2]|0)+(l<<2)>>2]>>2]=c;c=k[f>>2]|0;if(!c){c=34;break a}}d=k[c>>2]|0;if(!d){c=34;break a}else{f=c;i=c}}}while(0);k[d>>2]=f;d=k[c>>2]|0;if(!d){c=34;break}else f=c}if((c|0)==34)return}function ud(a,b){a=a|0;b=b|0;var c=0,d=0,e=0,f=0,g=0,h=0,i=0,j=0,l=0,m=0;d=a+4|0;if(!b){c=k[a>>2]|0;k[a>>2]=0;if(c|0)gl(c);k[d>>2]=0;return}if(b>>>0>1073741823){a=Ma(4)|0;Tk(a);xa(a|0,856,71)}m=Si(b<<2)|0;c=k[a>>2]|0;k[a>>2]=m;if(c|0)gl(c);k[d>>2]=b;c=0;do{k[(k[a>>2]|0)+(c<<2)>>2]=0;c=c+1|0}while((c|0)!=(b|0));d=a+8|0;g=k[d>>2]|0;if(!g)return;c=k[g+4>>2]|0;l=b+-1|0;m=(l&b|0)==0;if(m)c=c&l;else c=(c>>>0)%(b>>>0)|0;k[(k[a>>2]|0)+(c<<2)>>2]=d;d=k[g>>2]|0;if(!d)return;else{e=c;f=g;c=g}a:while(1){b:do if(m){i=c;while(1){c=d;while(1){j=k[c+4>>2]&l;if((j|0)==(e|0))break;d=(k[a>>2]|0)+(j<<2)|0;if(!(k[d>>2]|0)){f=i;e=j;break b}h=c+8|0;d=c;while(1){g=k[d>>2]|0;if(!g)break;if((k[h>>2]|0)==(k[g+8>>2]|0))d=g;else break}k[i>>2]=g;k[d>>2]=k[k[(k[a>>2]|0)+(j<<2)>>2]>>2];k[k[(k[a>>2]|0)+(j<<2)>>2]>>2]=c;c=k[f>>2]|0;if(!c){c=34;break a}}d=k[c>>2]|0;if(!d){c=34;break a}else{f=c;i=c}}}else{i=c;while(1){c=d;while(1){j=((k[c+4>>2]|0)>>>0)%(b>>>0)|0;if((j|0)==(e|0))break;d=(k[a>>2]|0)+(j<<2)|0;if(!(k[d>>2]|0)){f=i;e=j;break b}g=c+8|0;d=c;while(1){h=k[d>>2]|0;if(!h)break;if((k[g>>2]|0)==(k[h+8>>2]|0))d=h;else break}k[i>>2]=h;k[d>>2]=k[k[(k[a>>2]|0)+(j<<2)>>2]>>2];k[k[(k[a>>2]|0)+(j<<2)>>2]>>2]=c;c=k[f>>2]|0;if(!c){c=34;break a}}d=k[c>>2]|0;if(!d){c=34;break a}else{f=c;i=c}}}while(0);k[d>>2]=f;d=k[c>>2]|0;if(!d){c=34;break}else f=c}if((c|0)==34)return}function vd(a,b){a=a|0;b=b|0;var c=0,d=0,e=0,f=0,g=0,h=0,j=0,l=0,m=0,n=0;d=a+4|0;if(!b){c=k[a>>2]|0;k[a>>2]=0;if(c|0)gl(c);k[d>>2]=0;return}if(b>>>0>1073741823){a=Ma(4)|0;Tk(a);xa(a|0,856,71)}n=Si(b<<2)|0;c=k[a>>2]|0;k[a>>2]=n;if(c|0)gl(c);k[d>>2]=b;c=0;do{k[(k[a>>2]|0)+(c<<2)>>2]=0;c=c+1|0}while((c|0)!=(b|0));d=a+8|0;g=k[d>>2]|0;if(!g)return;c=k[g+4>>2]|0;m=b+-1|0;n=(m&b|0)==0;if(n)c=c&m;else c=(c>>>0)%(b>>>0)|0;k[(k[a>>2]|0)+(c<<2)>>2]=d;d=k[g>>2]|0;if(!d)return;else{e=c;f=g;c=g}a:while(1){b:do if(n){j=c;while(1){c=d;while(1){l=k[c+4>>2]&m;if((l|0)==(e|0))break;d=(k[a>>2]|0)+(l<<2)|0;if(!(k[d>>2]|0)){f=j;e=l;break b}h=c+8|0;d=c;while(1){g=k[d>>2]|0;if(!g)break;if((i[h>>0]|0)==(i[g+8>>0]|0))d=g;else break}k[j>>2]=g;k[d>>2]=k[k[(k[a>>2]|0)+(l<<2)>>2]>>2];k[k[(k[a>>2]|0)+(l<<2)>>2]>>2]=c;c=k[f>>2]|0;if(!c){c=34;break a}}d=k[c>>2]|0;if(!d){c=34;break a}else{f=c;j=c}}}else{j=c;while(1){c=d;while(1){l=((k[c+4>>2]|0)>>>0)%(b>>>0)|0;if((l|0)==(e|0))break;d=(k[a>>2]|0)+(l<<2)|0;if(!(k[d>>2]|0)){f=j;e=l;break b}g=c+8|0;d=c;while(1){h=k[d>>2]|0;if(!h)break;if((i[g>>0]|0)==(i[h+8>>0]|0))d=h;else break}k[j>>2]=h;k[d>>2]=k[k[(k[a>>2]|0)+(l<<2)>>2]>>2];k[k[(k[a>>2]|0)+(l<<2)>>2]>>2]=c;c=k[f>>2]|0;if(!c){c=34;break a}}d=k[c>>2]|0;if(!d){c=34;break a}else{f=c;j=c}}}while(0);k[d>>2]=f;d=k[c>>2]|0;if(!d){c=34;break}else f=c}if((c|0)==34)return}function wd(a,b,c){a=a|0;b=b|0;c=c|0;var d=0,e=0,f=0,g=0,h=0,j=0,m=0,n=0,o=0,p=0,q=0,s=0,t=0,u=0,v=0;t=r;r=r+64|0;q=t+48|0;m=t+32|0;n=t+20|0;o=t+8|0;p=t;f=b+8|0;h=f;e=k[h>>2]|0;h=k[h+4>>2]|0;j=b+16|0;g=j;d=k[g>>2]|0;g=k[g+4>>2]|0;u=Bj(d|0,g|0,4,0)|0;v=M;if((h|0)<(v|0)|(h|0)==(v|0)&e>>>0>>0)f=h;else{d=(k[b>>2]|0)+d|0;d=l[d>>0]|l[d+1>>0]<<8|l[d+2>>0]<<16|l[d+3>>0]<<24;i[a>>0]=d;i[a+1>>0]=d>>8;i[a+2>>0]=d>>16;i[a+3>>0]=d>>24;d=j;d=Bj(k[d>>2]|0,k[d+4>>2]|0,4,0)|0;g=M;e=j;k[e>>2]=d;k[e+4>>2]=g;e=f;f=k[e+4>>2]|0;e=k[e>>2]|0}h=a+4|0;v=Bj(d|0,g|0,4,0)|0;u=M;if((f|0)<(u|0)|(f|0)==(u|0)&e>>>0>>0)d=k[h>>2]|0;else{d=(k[b>>2]|0)+d|0;d=l[d>>0]|l[d+1>>0]<<8|l[d+2>>0]<<16|l[d+3>>0]<<24;i[h>>0]=d;i[h+1>>0]=d>>8;i[h+2>>0]=d>>16;i[h+3>>0]=d>>24;u=j;u=Bj(k[u>>2]|0,k[u+4>>2]|0,4,0)|0;v=j;k[v>>2]=u;k[v+4>>2]=M}if(!d){v=1;r=t;return v|0}else d=0;do{if(!(He(a+8+(d*24|0)|0,b)|0)){d=0;s=14;break}d=d+1|0}while((d|0)<32);if((s|0)==14){r=t;return d|0}if(!(He(a+776|0,b)|0)){v=0;r=t;return v|0}if(!(Ee(a+800|0,b)|0)){v=0;r=t;return v|0}if(!(Ee(a+820|0,b)|0)){v=0;r=t;return v|0}if(!(Ee(a+840|0,b)|0)){v=0;r=t;return v|0}v=k[h>>2]|0;k[n>>2]=0;k[n+4>>2]=0;k[n+8>>2]=0;k[o>>2]=0;k[o+4>>2]=0;k[o+8>>2]=0;s=k[c+4>>2]|0;u=p;k[u>>2]=k[c>>2];k[u+4>>2]=s;k[m>>2]=k[o>>2];k[m+4>>2]=k[o+4>>2];k[m+8>>2]=k[o+8>>2];k[q>>2]=k[p>>2];k[q+4>>2]=k[p+4>>2];eb(a,v,n,m,0,q);v=1;r=t;return v|0}function xd(a,b,c){a=a|0;b=b|0;c=c|0;var d=0,e=0,f=0,g=0,h=0,j=0,m=0,n=0,o=0,p=0,q=0,s=0,t=0,u=0,v=0;t=r;r=r+64|0;q=t+48|0;m=t+32|0;n=t+20|0;o=t+8|0;p=t;f=b+8|0;h=f;e=k[h>>2]|0;h=k[h+4>>2]|0;j=b+16|0;g=j;d=k[g>>2]|0;g=k[g+4>>2]|0;u=Bj(d|0,g|0,4,0)|0;v=M;if((h|0)<(v|0)|(h|0)==(v|0)&e>>>0>>0)f=h;else{d=(k[b>>2]|0)+d|0;d=l[d>>0]|l[d+1>>0]<<8|l[d+2>>0]<<16|l[d+3>>0]<<24;i[a>>0]=d;i[a+1>>0]=d>>8;i[a+2>>0]=d>>16;i[a+3>>0]=d>>24;d=j;d=Bj(k[d>>2]|0,k[d+4>>2]|0,4,0)|0;g=M;e=j;k[e>>2]=d;k[e+4>>2]=g;e=f;f=k[e+4>>2]|0;e=k[e>>2]|0}h=a+4|0;v=Bj(d|0,g|0,4,0)|0;u=M;if((f|0)<(u|0)|(f|0)==(u|0)&e>>>0>>0)d=k[h>>2]|0;else{d=(k[b>>2]|0)+d|0;d=l[d>>0]|l[d+1>>0]<<8|l[d+2>>0]<<16|l[d+3>>0]<<24;i[h>>0]=d;i[h+1>>0]=d>>8;i[h+2>>0]=d>>16;i[h+3>>0]=d>>24;u=j;u=Bj(k[u>>2]|0,k[u+4>>2]|0,4,0)|0;v=j;k[v>>2]=u;k[v+4>>2]=M}if(!d){v=1;r=t;return v|0}else d=0;do{if(!(He(a+8+(d*24|0)|0,b)|0)){d=0;s=14;break}d=d+1|0}while((d|0)<32);if((s|0)==14){r=t;return d|0}if(!(He(a+776|0,b)|0)){v=0;r=t;return v|0}if(!(Ee(a+800|0,b)|0)){v=0;r=t;return v|0}if(!(Ee(a+820|0,b)|0)){v=0;r=t;return v|0}if(!(Ee(a+840|0,b)|0)){v=0;r=t;return v|0}v=k[h>>2]|0;k[n>>2]=0;k[n+4>>2]=0;k[n+8>>2]=0;k[o>>2]=0;k[o+4>>2]=0;k[o+8>>2]=0;s=k[c+4>>2]|0;u=p;k[u>>2]=k[c>>2];k[u+4>>2]=s;k[m>>2]=k[o>>2];k[m+4>>2]=k[o+4>>2];k[m+8>>2]=k[o+8>>2];k[q>>2]=k[p>>2];k[q+4>>2]=k[p+4>>2];rb(a,v,n,m,0,q);v=1;r=t;return v|0} -function $a(a){a=a|0;var b=0,c=0,d=0,e=0,f=0,g=0,h=0,i=0,j=0,l=0,m=0,n=0,o=0,p=0,q=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,B=0,C=0,D=0,E=0,F=0,G=0,H=0,I=0,J=0,K=0,L=0;L=r;r=r+16|0;o=L;do if(a>>>0<245){n=a>>>0<11?16:a+11&-8;a=n>>>3;t=k[4190]|0;c=t>>>a;if(c&3|0){a=(c&1^1)+a|0;c=16800+(a<<1<<2)|0;d=c+8|0;e=k[d>>2]|0;f=e+8|0;g=k[f>>2]|0;do if((c|0)!=(g|0)){if(g>>>0<(k[4194]|0)>>>0)Ba();b=g+12|0;if((k[b>>2]|0)==(e|0)){k[b>>2]=c;k[d>>2]=g;break}else Ba()}else k[4190]=t&~(1<>2]=K|3;K=e+K+4|0;k[K>>2]=k[K>>2]|1;K=f;r=L;return K|0}s=k[4192]|0;if(n>>>0>s>>>0){if(c|0){h=2<>>12&16;a=a>>>h;d=a>>>5&8;a=a>>>d;f=a>>>2&4;a=a>>>f;c=a>>>1&2;a=a>>>c;b=a>>>1&1;b=(d|h|f|c|b)+(a>>>b)|0;a=16800+(b<<1<<2)|0;c=a+8|0;f=k[c>>2]|0;h=f+8|0;d=k[h>>2]|0;do if((a|0)!=(d|0)){if(d>>>0<(k[4194]|0)>>>0)Ba();e=d+12|0;if((k[e>>2]|0)==(f|0)){k[e>>2]=a;k[c>>2]=d;i=t;break}else Ba()}else{i=t&~(1<>2]=n|3;d=f+n|0;k[d+4>>2]=g|1;k[d+g>>2]=g;if(s|0){e=k[4195]|0;b=s>>>3;c=16800+(b<<1<<2)|0;b=1<>2]|0;if(a>>>0<(k[4194]|0)>>>0)Ba();else{j=a;l=b}}else{k[4190]=i|b;j=c;l=c+8|0}k[l>>2]=e;k[j+12>>2]=e;k[e+8>>2]=j;k[e+12>>2]=c}k[4192]=g;k[4195]=d;K=h;r=L;return K|0}j=k[4191]|0;if(j){a=(j&0-j)+-1|0;J=a>>>12&16;a=a>>>J;I=a>>>5&8;a=a>>>I;K=a>>>2&4;a=a>>>K;h=a>>>1&2;a=a>>>h;i=a>>>1&1;i=k[17064+((I|J|K|h|i)+(a>>>i)<<2)>>2]|0;a=i;h=i;i=(k[i+4>>2]&-8)-n|0;while(1){b=k[a+16>>2]|0;if(!b){b=k[a+20>>2]|0;if(!b)break}K=(k[b+4>>2]&-8)-n|0;J=K>>>0>>0;a=b;h=J?b:h;i=J?K:i}e=k[4194]|0;if(h>>>0>>0)Ba();g=h+n|0;if(h>>>0>=g>>>0)Ba();f=k[h+24>>2]|0;c=k[h+12>>2]|0;do if((c|0)==(h|0)){a=h+20|0;b=k[a>>2]|0;if(!b){a=h+16|0;b=k[a>>2]|0;if(!b){m=0;break}}while(1){c=b+20|0;d=k[c>>2]|0;if(d|0){b=d;a=c;continue}c=b+16|0;d=k[c>>2]|0;if(!d)break;else{b=d;a=c}}if(a>>>0>>0)Ba();else{k[a>>2]=0;m=b;break}}else{d=k[h+8>>2]|0;if(d>>>0>>0)Ba();b=d+12|0;if((k[b>>2]|0)!=(h|0))Ba();a=c+8|0;if((k[a>>2]|0)==(h|0)){k[b>>2]=c;k[a>>2]=d;m=c;break}else Ba()}while(0);do if(f|0){b=k[h+28>>2]|0;a=17064+(b<<2)|0;if((h|0)==(k[a>>2]|0)){k[a>>2]=m;if(!m){k[4191]=j&~(1<>>0<(k[4194]|0)>>>0)Ba();b=f+16|0;if((k[b>>2]|0)==(h|0))k[b>>2]=m;else k[f+20>>2]=m;if(!m)break}a=k[4194]|0;if(m>>>0>>0)Ba();k[m+24>>2]=f;b=k[h+16>>2]|0;do if(b|0)if(b>>>0>>0)Ba();else{k[m+16>>2]=b;k[b+24>>2]=m;break}while(0);b=k[h+20>>2]|0;if(b|0)if(b>>>0<(k[4194]|0)>>>0)Ba();else{k[m+20>>2]=b;k[b+24>>2]=m;break}}while(0);if(i>>>0<16){K=i+n|0;k[h+4>>2]=K|3;K=h+K+4|0;k[K>>2]=k[K>>2]|1}else{k[h+4>>2]=n|3;k[g+4>>2]=i|1;k[g+i>>2]=i;if(s|0){d=k[4195]|0;b=s>>>3;c=16800+(b<<1<<2)|0;b=1<>2]|0;if(a>>>0<(k[4194]|0)>>>0)Ba();else{p=a;q=b}}else{k[4190]=t|b;p=c;q=c+8|0}k[q>>2]=d;k[p+12>>2]=d;k[d+8>>2]=p;k[d+12>>2]=c}k[4192]=i;k[4195]=g}K=h+8|0;r=L;return K|0}}}else if(a>>>0<=4294967231){a=a+11|0;n=a&-8;j=k[4191]|0;if(j){d=0-n|0;a=a>>>8;if(a)if(n>>>0>16777215)i=31;else{q=(a+1048320|0)>>>16&8;D=a<>>16&4;D=D<>>16&2;i=14-(p|q|i)+(D<>>15)|0;i=n>>>(i+7|0)&1|i<<1}else i=0;a=k[17064+(i<<2)>>2]|0;a:do if(!a){c=0;e=0;D=86}else{e=0;h=a;g=n<<((i|0)==31?0:25-(i>>>1)|0);c=0;while(1){a=(k[h+4>>2]&-8)-n|0;if(a>>>0>>0)if(!a){a=h;d=0;c=h;D=90;break a}else{e=h;d=a}a=k[h+20>>2]|0;h=k[h+16+(g>>>31<<2)>>2]|0;c=(a|0)==0|(a|0)==(h|0)?c:a;a=(h|0)==0;if(a){D=86;break}else g=g<<(a&1^1)}}while(0);if((D|0)==86){if((c|0)==0&(e|0)==0){a=2<>>12&16;q=q>>>l;i=q>>>5&8;q=q>>>i;m=q>>>2&4;q=q>>>m;p=q>>>1&2;q=q>>>p;c=q>>>1&1;c=k[17064+((i|l|m|p|c)+(q>>>c)<<2)>>2]|0}if(!c){i=e;h=d}else{a=e;D=90}}if((D|0)==90)while(1){D=0;q=(k[c+4>>2]&-8)-n|0;e=q>>>0>>0;d=e?q:d;a=e?c:a;e=k[c+16>>2]|0;if(e|0){c=e;D=90;continue}c=k[c+20>>2]|0;if(!c){i=a;h=d;break}else D=90}if((i|0)!=0?h>>>0<((k[4192]|0)-n|0)>>>0:0){e=k[4194]|0;if(i>>>0>>0)Ba();g=i+n|0;if(i>>>0>=g>>>0)Ba();f=k[i+24>>2]|0;c=k[i+12>>2]|0;do if((c|0)==(i|0)){a=i+20|0;b=k[a>>2]|0;if(!b){a=i+16|0;b=k[a>>2]|0;if(!b){s=0;break}}while(1){c=b+20|0;d=k[c>>2]|0;if(d|0){b=d;a=c;continue}c=b+16|0;d=k[c>>2]|0;if(!d)break;else{b=d;a=c}}if(a>>>0>>0)Ba();else{k[a>>2]=0;s=b;break}}else{d=k[i+8>>2]|0;if(d>>>0>>0)Ba();b=d+12|0;if((k[b>>2]|0)!=(i|0))Ba();a=c+8|0;if((k[a>>2]|0)==(i|0)){k[b>>2]=c;k[a>>2]=d;s=c;break}else Ba()}while(0);do if(f){b=k[i+28>>2]|0;a=17064+(b<<2)|0;if((i|0)==(k[a>>2]|0)){k[a>>2]=s;if(!s){t=j&~(1<>>0<(k[4194]|0)>>>0)Ba();b=f+16|0;if((k[b>>2]|0)==(i|0))k[b>>2]=s;else k[f+20>>2]=s;if(!s){t=j;break}}a=k[4194]|0;if(s>>>0>>0)Ba();k[s+24>>2]=f;b=k[i+16>>2]|0;do if(b|0)if(b>>>0>>0)Ba();else{k[s+16>>2]=b;k[b+24>>2]=s;break}while(0);b=k[i+20>>2]|0;if(b)if(b>>>0<(k[4194]|0)>>>0)Ba();else{k[s+20>>2]=b;k[b+24>>2]=s;t=j;break}else t=j}else t=j;while(0);do if(h>>>0>=16){k[i+4>>2]=n|3;k[g+4>>2]=h|1;k[g+h>>2]=h;b=h>>>3;if(h>>>0<256){c=16800+(b<<1<<2)|0;a=k[4190]|0;b=1<>2]|0;if(a>>>0<(k[4194]|0)>>>0)Ba();else{B=a;C=b}}else{k[4190]=a|b;B=c;C=c+8|0}k[C>>2]=g;k[B+12>>2]=g;k[g+8>>2]=B;k[g+12>>2]=c;break}b=h>>>8;if(b)if(h>>>0>16777215)b=31;else{J=(b+1048320|0)>>>16&8;K=b<>>16&4;K=K<>>16&2;b=14-(I|J|b)+(K<>>15)|0;b=h>>>(b+7|0)&1|b<<1}else b=0;c=17064+(b<<2)|0;k[g+28>>2]=b;a=g+16|0;k[a+4>>2]=0;k[a>>2]=0;a=1<>2]=g;k[g+24>>2]=c;k[g+12>>2]=g;k[g+8>>2]=g;break}a=h<<((b|0)==31?0:25-(b>>>1)|0);d=k[c>>2]|0;while(1){if((k[d+4>>2]&-8|0)==(h|0)){D=148;break}c=d+16+(a>>>31<<2)|0;b=k[c>>2]|0;if(!b){D=145;break}else{a=a<<1;d=b}}if((D|0)==145)if(c>>>0<(k[4194]|0)>>>0)Ba();else{k[c>>2]=g;k[g+24>>2]=d;k[g+12>>2]=g;k[g+8>>2]=g;break}else if((D|0)==148){b=d+8|0;a=k[b>>2]|0;K=k[4194]|0;if(a>>>0>=K>>>0&d>>>0>=K>>>0){k[a+12>>2]=g;k[b>>2]=g;k[g+8>>2]=a;k[g+12>>2]=d;k[g+24>>2]=0;break}else Ba()}}else{K=h+n|0;k[i+4>>2]=K|3;K=i+K+4|0;k[K>>2]=k[K>>2]|1}while(0);K=i+8|0;r=L;return K|0}}}else n=-1;while(0);c=k[4192]|0;if(c>>>0>=n>>>0){b=c-n|0;a=k[4195]|0;if(b>>>0>15){K=a+n|0;k[4195]=K;k[4192]=b;k[K+4>>2]=b|1;k[K+b>>2]=b;k[a+4>>2]=n|3}else{k[4192]=0;k[4195]=0;k[a+4>>2]=c|3;K=a+c+4|0;k[K>>2]=k[K>>2]|1}K=a+8|0;r=L;return K|0}h=k[4193]|0;if(h>>>0>n>>>0){I=h-n|0;k[4193]=I;K=k[4196]|0;J=K+n|0;k[4196]=J;k[J+4>>2]=I|1;k[K+4>>2]=n|3;K=K+8|0;r=L;return K|0}if(!(k[4308]|0)){k[4310]=4096;k[4309]=4096;k[4311]=-1;k[4312]=-1;k[4313]=0;k[4301]=0;a=o&-16^1431655768;k[o>>2]=a;k[4308]=a;a=4096}else a=k[4310]|0;i=n+48|0;j=n+47|0;g=a+j|0;e=0-a|0;l=g&e;if(l>>>0<=n>>>0){K=0;r=L;return K|0}a=k[4300]|0;if(a|0?(B=k[4298]|0,C=B+l|0,C>>>0<=B>>>0|C>>>0>a>>>0):0){K=0;r=L;return K|0}b:do if(!(k[4301]&4)){c=k[4196]|0;c:do if(c){d=17208;while(1){a=k[d>>2]|0;if(a>>>0<=c>>>0?(u=d+4|0,(a+(k[u>>2]|0)|0)>>>0>c>>>0):0)break;a=k[d+8>>2]|0;if(!a){D=172;break c}else d=a}c=g-h&e;if(c>>>0<2147483647){a=Vh(c|0)|0;if((a|0)==((k[d>>2]|0)+(k[u>>2]|0)|0)){if((a|0)!=(-1|0)){g=c;f=a;D=190;break b}}else{b=c;D=180}}}else D=172;while(0);do if(((D|0)==172?(f=Vh(0)|0,(f|0)!=(-1|0)):0)?(b=f,v=k[4309]|0,w=v+-1|0,b=((w&b|0)==0?0:(w+b&0-v)-b|0)+l|0,v=k[4298]|0,w=b+v|0,b>>>0>n>>>0&b>>>0<2147483647):0){C=k[4300]|0;if(C|0?w>>>0<=v>>>0|w>>>0>C>>>0:0)break;a=Vh(b|0)|0;if((a|0)==(f|0)){g=b;D=190;break b}else D=180}while(0);d:do if((D|0)==180){c=0-b|0;do if(i>>>0>b>>>0&(b>>>0<2147483647&(a|0)!=(-1|0))?(x=k[4310]|0,x=j-b+x&0-x,x>>>0<2147483647):0)if((Vh(x|0)|0)==(-1|0)){Vh(c|0)|0;break d}else{b=x+b|0;break}while(0);if((a|0)!=(-1|0)){g=b;f=a;D=190;break b}}while(0);k[4301]=k[4301]|4;D=187}else D=187;while(0);if((((D|0)==187?l>>>0<2147483647:0)?(A=Vh(l|0)|0,y=Vh(0)|0,A>>>0>>0&((A|0)!=(-1|0)&(y|0)!=(-1|0))):0)?(z=y-A|0,z>>>0>(n+40|0)>>>0):0){g=z;f=A;D=190}if((D|0)==190){b=(k[4298]|0)+g|0;k[4298]=b;if(b>>>0>(k[4299]|0)>>>0)k[4299]=b;j=k[4196]|0;do if(j){b=17208;while(1){a=k[b>>2]|0;c=b+4|0;d=k[c>>2]|0;if((f|0)==(a+d|0)){D=200;break}e=k[b+8>>2]|0;if(!e)break;else b=e}if(((D|0)==200?(k[b+12>>2]&8|0)==0:0)?j>>>0>>0&j>>>0>=a>>>0:0){k[c>>2]=d+g;K=j+8|0;K=(K&7|0)==0?0:0-K&7;J=j+K|0;K=g-K+(k[4193]|0)|0;k[4196]=J;k[4193]=K;k[J+4>>2]=K|1;k[J+K+4>>2]=40;k[4197]=k[4312];break}b=k[4194]|0;if(f>>>0>>0){k[4194]=f;h=f}else h=b;a=f+g|0;b=17208;while(1){if((k[b>>2]|0)==(a|0)){D=208;break}b=k[b+8>>2]|0;if(!b){a=17208;break}}if((D|0)==208)if(!(k[b+12>>2]&8)){k[b>>2]=f;m=b+4|0;k[m>>2]=(k[m>>2]|0)+g;m=f+8|0;m=f+((m&7|0)==0?0:0-m&7)|0;b=a+8|0;b=a+((b&7|0)==0?0:0-b&7)|0;l=m+n|0;i=b-m-n|0;k[m+4>>2]=n|3;do if((b|0)!=(j|0)){if((b|0)==(k[4195]|0)){K=(k[4192]|0)+i|0;k[4192]=K;k[4195]=l;k[l+4>>2]=K|1;k[l+K>>2]=K;break}a=k[b+4>>2]|0;if((a&3|0)==1){g=a&-8;e=a>>>3;e:do if(a>>>0>=256){f=k[b+24>>2]|0;d=k[b+12>>2]|0;do if((d|0)==(b|0)){d=b+16|0;c=d+4|0;a=k[c>>2]|0;if(!a){a=k[d>>2]|0;if(!a){I=0;break}else c=d}while(1){d=a+20|0;e=k[d>>2]|0;if(e|0){a=e;c=d;continue}d=a+16|0;e=k[d>>2]|0;if(!e)break;else{a=e;c=d}}if(c>>>0>>0)Ba();else{k[c>>2]=0;I=a;break}}else{e=k[b+8>>2]|0;if(e>>>0>>0)Ba();a=e+12|0;if((k[a>>2]|0)!=(b|0))Ba();c=d+8|0;if((k[c>>2]|0)==(b|0)){k[a>>2]=d;k[c>>2]=e;I=d;break}else Ba()}while(0);if(!f)break;a=k[b+28>>2]|0;c=17064+(a<<2)|0;do if((b|0)!=(k[c>>2]|0)){if(f>>>0<(k[4194]|0)>>>0)Ba();a=f+16|0;if((k[a>>2]|0)==(b|0))k[a>>2]=I;else k[f+20>>2]=I;if(!I)break e}else{k[c>>2]=I;if(I|0)break;k[4191]=k[4191]&~(1<>>0>>0)Ba();k[I+24>>2]=f;a=b+16|0;c=k[a>>2]|0;do if(c|0)if(c>>>0>>0)Ba();else{k[I+16>>2]=c;k[c+24>>2]=I;break}while(0);a=k[a+4>>2]|0;if(!a)break;if(a>>>0<(k[4194]|0)>>>0)Ba();else{k[I+20>>2]=a;k[a+24>>2]=I;break}}else{c=k[b+8>>2]|0;d=k[b+12>>2]|0;a=16800+(e<<1<<2)|0;do if((c|0)!=(a|0)){if(c>>>0>>0)Ba();if((k[c+12>>2]|0)==(b|0))break;Ba()}while(0);if((d|0)==(c|0)){k[4190]=k[4190]&~(1<>>0>>0)Ba();a=d+8|0;if((k[a>>2]|0)==(b|0)){F=a;break}Ba()}while(0);k[c+12>>2]=d;k[F>>2]=c}while(0);b=b+g|0;e=g+i|0}else e=i;b=b+4|0;k[b>>2]=k[b>>2]&-2;k[l+4>>2]=e|1;k[l+e>>2]=e;b=e>>>3;if(e>>>0<256){c=16800+(b<<1<<2)|0;a=k[4190]|0;b=1<>2]|0;if(a>>>0>=(k[4194]|0)>>>0){J=a;K=b;break}Ba()}while(0);k[K>>2]=l;k[J+12>>2]=l;k[l+8>>2]=J;k[l+12>>2]=c;break}b=e>>>8;do if(!b)b=0;else{if(e>>>0>16777215){b=31;break}J=(b+1048320|0)>>>16&8;K=b<>>16&4;K=K<>>16&2;b=14-(I|J|b)+(K<>>15)|0;b=e>>>(b+7|0)&1|b<<1}while(0);d=17064+(b<<2)|0;k[l+28>>2]=b;a=l+16|0;k[a+4>>2]=0;k[a>>2]=0;a=k[4191]|0;c=1<>2]=l;k[l+24>>2]=d;k[l+12>>2]=l;k[l+8>>2]=l;break}a=e<<((b|0)==31?0:25-(b>>>1)|0);d=k[d>>2]|0;while(1){if((k[d+4>>2]&-8|0)==(e|0)){D=278;break}c=d+16+(a>>>31<<2)|0;b=k[c>>2]|0;if(!b){D=275;break}else{a=a<<1;d=b}}if((D|0)==275)if(c>>>0<(k[4194]|0)>>>0)Ba();else{k[c>>2]=l;k[l+24>>2]=d;k[l+12>>2]=l;k[l+8>>2]=l;break}else if((D|0)==278){b=d+8|0;a=k[b>>2]|0;K=k[4194]|0;if(a>>>0>=K>>>0&d>>>0>=K>>>0){k[a+12>>2]=l;k[b>>2]=l;k[l+8>>2]=a;k[l+12>>2]=d;k[l+24>>2]=0;break}else Ba()}}else{K=(k[4193]|0)+i|0;k[4193]=K;k[4196]=l;k[l+4>>2]=K|1}while(0);K=m+8|0;r=L;return K|0}else a=17208;while(1){b=k[a>>2]|0;if(b>>>0<=j>>>0?(E=b+(k[a+4>>2]|0)|0,E>>>0>j>>>0):0)break;a=k[a+8>>2]|0}e=E+-47|0;a=e+8|0;a=e+((a&7|0)==0?0:0-a&7)|0;e=j+16|0;a=a>>>0>>0?j:a;b=a+8|0;c=f+8|0;c=(c&7|0)==0?0:0-c&7;K=f+c|0;c=g+-40-c|0;k[4196]=K;k[4193]=c;k[K+4>>2]=c|1;k[K+c+4>>2]=40;k[4197]=k[4312];c=a+4|0;k[c>>2]=27;k[b>>2]=k[4302];k[b+4>>2]=k[4303];k[b+8>>2]=k[4304];k[b+12>>2]=k[4305];k[4302]=f;k[4303]=g;k[4305]=0;k[4304]=b;b=a+24|0;do{b=b+4|0;k[b>>2]=7}while((b+4|0)>>>0>>0);if((a|0)!=(j|0)){f=a-j|0;k[c>>2]=k[c>>2]&-2;k[j+4>>2]=f|1;k[a>>2]=f;b=f>>>3;if(f>>>0<256){c=16800+(b<<1<<2)|0;a=k[4190]|0;b=1<>2]|0;if(a>>>0<(k[4194]|0)>>>0)Ba();else{G=a;H=b}}else{k[4190]=a|b;G=c;H=c+8|0}k[H>>2]=j;k[G+12>>2]=j;k[j+8>>2]=G;k[j+12>>2]=c;break}b=f>>>8;if(b)if(f>>>0>16777215)c=31;else{J=(b+1048320|0)>>>16&8;K=b<>>16&4;K=K<>>16&2;c=14-(I|J|c)+(K<>>15)|0;c=f>>>(c+7|0)&1|c<<1}else c=0;d=17064+(c<<2)|0;k[j+28>>2]=c;k[j+20>>2]=0;k[e>>2]=0;b=k[4191]|0;a=1<>2]=j;k[j+24>>2]=d;k[j+12>>2]=j;k[j+8>>2]=j;break}a=f<<((c|0)==31?0:25-(c>>>1)|0);d=k[d>>2]|0;while(1){if((k[d+4>>2]&-8|0)==(f|0)){D=304;break}c=d+16+(a>>>31<<2)|0;b=k[c>>2]|0;if(!b){D=301;break}else{a=a<<1;d=b}}if((D|0)==301)if(c>>>0<(k[4194]|0)>>>0)Ba();else{k[c>>2]=j;k[j+24>>2]=d;k[j+12>>2]=j;k[j+8>>2]=j;break}else if((D|0)==304){b=d+8|0;a=k[b>>2]|0;K=k[4194]|0;if(a>>>0>=K>>>0&d>>>0>=K>>>0){k[a+12>>2]=j;k[b>>2]=j;k[j+8>>2]=a;k[j+12>>2]=d;k[j+24>>2]=0;break}else Ba()}}}else{K=k[4194]|0;if((K|0)==0|f>>>0>>0)k[4194]=f;k[4302]=f;k[4303]=g;k[4305]=0;k[4199]=k[4308];k[4198]=-1;b=0;do{K=16800+(b<<1<<2)|0;k[K+12>>2]=K;k[K+8>>2]=K;b=b+1|0}while((b|0)!=32);K=f+8|0;K=(K&7|0)==0?0:0-K&7;J=f+K|0;K=g+-40-K|0;k[4196]=J;k[4193]=K;k[J+4>>2]=K|1;k[J+K+4>>2]=40;k[4197]=k[4312]}while(0);b=k[4193]|0;if(b>>>0>n>>>0){I=b-n|0;k[4193]=I;K=k[4196]|0;J=K+n|0;k[4196]=J;k[J+4>>2]=I|1;k[K+4>>2]=n|3;K=K+8|0;r=L;return K|0}}K=Dj()|0;k[K>>2]=12;K=0;r=L;return K|0}function ab(a,b,c,d,e){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;var f=0,g=0,h=0,m=0,n=0.0,o=0,q=0,s=0,t=0,v=0.0,w=0,x=0,y=0,z=0,A=0,B=0,C=0,D=0,E=0,F=0,G=0,H=0,I=0,J=0,K=0,L=0,N=0,O=0,P=0,Q=0,R=0,S=0,T=0,U=0,V=0,W=0,X=0,Y=0,Z=0,_=0,aa=0,ba=0,ca=0,da=0,ea=0,fa=0,ga=0,ha=0,ia=0,ja=0;ja=r;r=r+624|0;fa=ja+24|0;ga=ja+16|0;ha=ja+588|0;X=ja+576|0;ia=ja;S=ja+536|0;N=ja+8|0;O=ja+528|0;P=(a|0)!=0;Q=S+40|0;R=Q;S=S+39|0;T=N+4|0;U=ha;V=0-U|0;W=X+12|0;X=X+11|0;Y=W;Z=Y-U|0;_=-2-U|0;aa=Y+2|0;ba=fa+288|0;ca=ha+9|0;da=ca;ea=ha+8|0;g=0;f=0;q=0;a:while(1){do if((f|0)>-1)if((g|0)>(2147483647-f|0)){f=Dj()|0;k[f>>2]=75;f=-1;break}else{f=g+f|0;break}while(0);g=i[b>>0]|0;if(!(g<<24>>24)){L=243;break}else h=b;b:while(1){switch(g<<24>>24){case 37:{g=h;L=9;break b}case 0:{g=h;break b}default:{}}g=h+1|0;h=g;g=i[g>>0]|0}c:do if((L|0)==9)while(1){L=0;if((i[h+1>>0]|0)!=37)break c;g=g+1|0;h=h+2|0;if((i[h>>0]|0)==37)L=9;else break}while(0);g=g-b|0;if(P?(k[a>>2]&32|0)==0:0)jg(b,g,a)|0;if(g|0){b=h;continue}o=h+1|0;m=i[o>>0]|0;g=(m<<24>>24)+-48|0;if(g>>>0<10){t=(i[h+2>>0]|0)==36;o=t?h+3|0:o;w=t?g:-1;t=t?1:q;g=i[o>>0]|0}else{w=-1;t=q;g=m}h=(g<<24>>24)+-32|0;d:do if(h>>>0<32){m=0;do{if(!(1<>24)+-32|m;o=o+1|0;g=i[o>>0]|0;h=(g<<24>>24)+-32|0}while(h>>>0<32)}else m=0;while(0);do if(g<<24>>24!=42){h=(g<<24>>24)+-48|0;if(h>>>0<10){q=0;do{q=(q*10|0)+h|0;o=o+1|0;g=i[o>>0]|0;h=(g<<24>>24)+-48|0}while(h>>>0<10);if((q|0)<0){f=-1;break a}else K=t}else{q=0;K=t}}else{s=o+1|0;g=i[s>>0]|0;h=(g<<24>>24)+-48|0;if(h>>>0<10?(i[o+2>>0]|0)==36:0){k[e+(h<<2)>>2]=10;g=k[d+((i[s>>0]|0)+-48<<3)>>2]|0;h=1;s=o+3|0}else{if(t|0){f=-1;break a}if(!P){q=0;K=0;o=s;break}h=(k[c>>2]|0)+(4-1)&~(4-1);g=k[h>>2]|0;k[c>>2]=h+4;h=0}K=(g|0)<0;q=K?0-g|0:g;m=K?m|8192:m;K=h;o=s;g=i[s>>0]|0}while(0);e:do if(g<<24>>24==46){g=o+1|0;h=i[g>>0]|0;if(h<<24>>24!=42){o=(h<<24>>24)+-48|0;if(o>>>0<10)h=0;else{x=0;break}while(1){h=(h*10|0)+o|0;g=g+1|0;o=(i[g>>0]|0)+-48|0;if(o>>>0>=10){x=h;break e}}}g=o+2|0;h=(i[g>>0]|0)+-48|0;if(h>>>0<10?(i[o+3>>0]|0)==36:0){k[e+(h<<2)>>2]=10;x=k[d+((i[g>>0]|0)+-48<<3)>>2]|0;g=o+4|0;break}if(K|0){f=-1;break a}if(P){J=(k[c>>2]|0)+(4-1)&~(4-1);x=k[J>>2]|0;k[c>>2]=J+4}else x=0}else{x=-1;g=o}while(0);t=0;while(1){h=(i[g>>0]|0)+-65|0;if(h>>>0>57){f=-1;break a}J=g+1|0;h=i[13531+(t*58|0)+h>>0]|0;o=h&255;if((o+-1|0)>>>0<8){t=o;g=J}else break}if(!(h<<24>>24)){f=-1;break}s=(w|0)>-1;do if(h<<24>>24==19)if(s){f=-1;break a}else L=51;else{if(s){k[e+(w<<2)>>2]=o;H=d+(w<<3)|0;I=k[H+4>>2]|0;L=ia;k[L>>2]=k[H>>2];k[L+4>>2]=I;L=51;break}if(!P){f=0;break a}pe(ia,o,c)}while(0);if((L|0)==51?(L=0,!P):0){g=0;q=K;b=J;continue}E=i[g>>0]|0;E=(t|0)!=0&(E&15|0)==3?E&-33:E;s=m&-65537;I=(m&8192|0)==0?m:s;f:do switch(E|0){case 110:switch((t&255)<<24>>24){case 0:{k[k[ia>>2]>>2]=f;g=0;q=K;b=J;continue a}case 1:{k[k[ia>>2]>>2]=f;g=0;q=K;b=J;continue a}case 2:{g=k[ia>>2]|0;k[g>>2]=f;k[g+4>>2]=((f|0)<0)<<31>>31;g=0;q=K;b=J;continue a}case 3:{j[k[ia>>2]>>1]=f;g=0;q=K;b=J;continue a}case 4:{i[k[ia>>2]>>0]=f;g=0;q=K;b=J;continue a}case 6:{k[k[ia>>2]>>2]=f;g=0;q=K;b=J;continue a}case 7:{g=k[ia>>2]|0;k[g>>2]=f;k[g+4>>2]=((f|0)<0)<<31>>31;g=0;q=K;b=J;continue a}default:{g=0;q=K;b=J;continue a}}case 112:{s=120;t=x>>>0>8?x:8;g=I|8;L=63;break}case 88:case 120:{s=E;t=x;g=I;L=63;break}case 111:{h=ia;g=k[h>>2]|0;h=k[h+4>>2]|0;if((g|0)==0&(h|0)==0)b=Q;else{b=Q;do{b=b+-1|0;i[b>>0]=g&7|48;g=lj(g|0,h|0,3)|0;h=M}while(!((g|0)==0&(h|0)==0))}if(!(I&8)){h=0;m=14011;o=x;g=I;L=76}else{o=R-b|0;h=0;m=14011;o=(x|0)>(o|0)?x:o+1|0;g=I;L=76}break}case 105:case 100:{b=ia;g=k[b>>2]|0;b=k[b+4>>2]|0;if((b|0)<0){g=nj(0,0,g|0,b|0)|0;b=M;h=ia;k[h>>2]=g;k[h+4>>2]=b;h=1;m=14011;L=75;break f}if(!(I&2048)){m=I&1;h=m;m=(m|0)==0?14011:14013;L=75}else{h=1;m=14012;L=75}break}case 117:{b=ia;h=0;m=14011;g=k[b>>2]|0;b=k[b+4>>2]|0;L=75;break}case 99:{i[S>>0]=k[ia>>2];b=S;w=0;t=14011;h=Q;g=1;break}case 109:{g=Dj()|0;g=oh(k[g>>2]|0)|0;L=81;break}case 115:{g=k[ia>>2]|0;g=g|0?g:14021;L=81;break}case 67:{k[N>>2]=k[ia>>2];k[T>>2]=0;k[ia>>2]=N;s=-1;h=N;L=85;break}case 83:{g=k[ia>>2]|0;if(!x){Og(a,32,q,0,I);g=0;L=96}else{s=x;h=g;L=85}break}case 65:case 71:case 70:case 69:case 97:case 103:case 102:case 101:{n=+p[ia>>3];k[ga>>2]=0;p[u>>3]=n;if((k[u+4>>2]|0)>=0){g=I&1;if(!(I&2048)){G=g;H=(g|0)==0?14029:14034}else{G=1;H=14031}}else{n=-n;G=1;H=14028}p[u>>3]=n;F=k[u+4>>2]&2146435072;do if(F>>>0<2146435072|(F|0)==2146435072&0<0){v=+Uk(n,ga)*2.0;b=v!=0.0;if(b)k[ga>>2]=(k[ga>>2]|0)+-1;z=E|32;if((z|0)==97){o=E&32;w=(o|0)==0?H:H+9|0;t=G|2;g=12-x|0;do if(!(x>>>0>11|(g|0)==0)){n=8.0;do{g=g+-1|0;n=n*16.0}while((g|0)!=0);if((i[w>>0]|0)==45){n=-(n+(-v-n));break}else{n=v+n-n;break}}else n=v;while(0);b=k[ga>>2]|0;g=(b|0)<0?0-b|0:b;g=ah(g,((g|0)<0)<<31>>31,W)|0;if((g|0)==(W|0)){i[X>>0]=48;g=X}i[g+-1>>0]=(b>>31&2)+43;s=g+-2|0;i[s>>0]=E+15;m=(x|0)<1;h=(I&8|0)==0;g=ha;do{H=~~n;b=g+1|0;i[g>>0]=l[13995+H>>0]|o;n=(n-+(H|0))*16.0;do if((b-U|0)==1){if(h&(m&n==0.0)){g=b;break}i[b>>0]=46;g=g+2|0}else g=b;while(0)}while(n!=0.0);m=s;h=(x|0)!=0&(_+g|0)<(x|0)?aa+x-m|0:Z-m+g|0;o=h+t|0;Og(a,32,q,o,I);if(!(k[a>>2]&32))jg(w,t,a)|0;Og(a,48,q,o,I^65536);b=g-U|0;if(!(k[a>>2]&32))jg(ha,b,a)|0;g=Y-m|0;Og(a,48,h-(b+g)|0,0,0);if(!(k[a>>2]&32))jg(s,g,a)|0;Og(a,32,q,o,I^8192);g=(o|0)<(q|0)?q:o;break}g=(x|0)<0?6:x;if(b){b=(k[ga>>2]|0)+-28|0;k[ga>>2]=b;n=v*268435456.0}else{n=v;b=k[ga>>2]|0}F=(b|0)<0?fa:ba;h=F;do{D=~~n>>>0;k[h>>2]=D;h=h+4|0;n=(n-+(D>>>0))*1.0e9}while(n!=0.0);if((b|0)>0){m=F;s=h;while(1){o=(b|0)>29?29:b;b=s+-4|0;do if(b>>>0>=m>>>0){h=0;do{C=ij(k[b>>2]|0,0,o|0)|0;C=Bj(C|0,M|0,h|0,0)|0;D=M;B=Ki(C|0,D|0,1e9,0)|0;k[b>>2]=B;h=ik(C|0,D|0,1e9,0)|0;b=b+-4|0}while(b>>>0>=m>>>0);if(!h)break;m=m+-4|0;k[m>>2]=h}while(0);h=s;while(1){if(h>>>0<=m>>>0)break;b=h+-4|0;if(!(k[b>>2]|0))h=b;else break}b=(k[ga>>2]|0)-o|0;k[ga>>2]=b;if((b|0)>0)s=h;else break}}else m=F;if((b|0)<0){x=((g+25|0)/9|0)+1|0;y=(z|0)==102;do{w=0-b|0;w=(w|0)>9?9:w;do if(m>>>0>>0){o=(1<>>w;t=0;b=m;do{D=k[b>>2]|0;k[b>>2]=(D>>>w)+t;t=$(D&o,s)|0;b=b+4|0}while(b>>>0>>0);b=(k[m>>2]|0)==0?m+4|0:m;if(!t){m=b;b=h;break}k[h>>2]=t;m=b;b=h+4|0}else{m=(k[m>>2]|0)==0?m+4|0:m;b=h}while(0);h=y?F:m;h=(b-h>>2|0)>(x|0)?h+(x<<2)|0:b;b=(k[ga>>2]|0)+w|0;k[ga>>2]=b}while((b|0)<0)}D=F;do if(m>>>0>>0){b=(D-m>>2)*9|0;s=k[m>>2]|0;if(s>>>0<10)break;else o=10;do{o=o*10|0;b=b+1|0}while(s>>>0>=o>>>0)}else b=0;while(0);A=(z|0)==103;B=(g|0)!=0;o=g-((z|0)!=102?b:0)+((B&A)<<31>>31)|0;if((o|0)<(((h-D>>2)*9|0)+-9|0)){o=o+9216|0;t=F+4+(((o|0)/9|0)+-1024<<2)|0;o=((o|0)%9|0)+1|0;if((o|0)<9){s=10;do{s=s*10|0;o=o+1|0}while((o|0)!=9)}else s=10;x=k[t>>2]|0;y=(x>>>0)%(s>>>0)|0;o=(t+4|0)==(h|0);do if(o&(y|0)==0)o=t;else{v=(((x>>>0)/(s>>>0)|0)&1|0)==0?9007199254740992.0:9007199254740994.0;w=(s|0)/2|0;if(y>>>0>>0)n=.5;else n=o&(y|0)==(w|0)?1.0:1.5;do if(G){if((i[H>>0]|0)!=45)break;n=-n;v=-v}while(0);o=x-y|0;k[t>>2]=o;if(!(v+n!=v)){o=t;break}C=o+s|0;k[t>>2]=C;if(C>>>0>999999999){o=t;while(1){b=o+-4|0;k[o>>2]=0;if(b>>>0>>0){m=m+-4|0;k[m>>2]=0}C=(k[b>>2]|0)+1|0;k[b>>2]=C;if(C>>>0>999999999)o=b;else{t=b;break}}}b=(D-m>>2)*9|0;s=k[m>>2]|0;if(s>>>0<10){o=t;break}else o=10;do{o=o*10|0;b=b+1|0}while(s>>>0>=o>>>0);o=t}while(0);C=o+4|0;h=h>>>0>C>>>0?C:h}y=0-b|0;C=h;while(1){if(C>>>0<=m>>>0){z=0;break}h=C+-4|0;if(!(k[h>>2]|0))C=h;else{z=1;break}}do if(A){g=(B&1^1)+g|0;if((g|0)>(b|0)&(b|0)>-5){t=E+-1|0;g=g+-1-b|0}else{t=E+-2|0;g=g+-1|0}h=I&8;if(h|0){w=h;break}do if(z){s=k[C+-4>>2]|0;if(!s){o=9;break}if(!((s>>>0)%10|0)){o=0;h=10}else{o=0;break}do{h=h*10|0;o=o+1|0}while(!((s>>>0)%(h>>>0)|0|0))}else o=9;while(0);h=((C-D>>2)*9|0)+-9|0;if((t|32|0)==102){w=h-o|0;w=(w|0)<0?0:w;g=(g|0)<(w|0)?g:w;w=0;break}else{w=h+b-o|0;w=(w|0)<0?0:w;g=(g|0)<(w|0)?g:w;w=0;break}}else{t=E;w=I&8}while(0);x=g|w;o=(x|0)!=0&1;s=(t|32|0)==102;if(s){y=0;b=(b|0)>0?b:0}else{h=(b|0)<0?y:b;h=ah(h,((h|0)<0)<<31>>31,W)|0;if((Y-h|0)<2)do{h=h+-1|0;i[h>>0]=48}while((Y-h|0)<2);i[h+-1>>0]=(b>>31&2)+43;b=h+-2|0;i[b>>0]=t;y=b;b=Y-b|0}A=G+1+g+o+b|0;Og(a,32,q,A,I);if(!(k[a>>2]&32))jg(H,G,a)|0;Og(a,48,q,A,I^65536);do if(s){m=m>>>0>F>>>0?F:m;h=m;do{b=ah(k[h>>2]|0,0,ca)|0;do if((h|0)==(m|0)){if((b|0)!=(ca|0))break;i[ea>>0]=48;b=ea}else{if(b>>>0<=ha>>>0)break;Ah(ha|0,48,b-U|0)|0;do b=b+-1|0;while(b>>>0>ha>>>0)}while(0);if(!(k[a>>2]&32))jg(b,da-b|0,a)|0;h=h+4|0}while(h>>>0<=F>>>0);do if(x|0){if(k[a>>2]&32|0)break;jg(14063,1,a)|0}while(0);if((g|0)>0&h>>>0>>0)while(1){b=ah(k[h>>2]|0,0,ca)|0;if(b>>>0>ha>>>0){Ah(ha|0,48,b-U|0)|0;do b=b+-1|0;while(b>>>0>ha>>>0)}if(!(k[a>>2]&32))jg(b,(g|0)>9?9:g,a)|0;h=h+4|0;b=g+-9|0;if(!((g|0)>9&h>>>0>>0)){g=b;break}else g=b}Og(a,48,g+9|0,9,0)}else{t=z?C:m+4|0;if((g|0)>-1){s=(w|0)==0;o=m;do{b=ah(k[o>>2]|0,0,ca)|0;if((b|0)==(ca|0)){i[ea>>0]=48;b=ea}do if((o|0)==(m|0)){h=b+1|0;if(!(k[a>>2]&32))jg(b,1,a)|0;if(s&(g|0)<1){b=h;break}if(k[a>>2]&32|0){b=h;break}jg(14063,1,a)|0;b=h}else{if(b>>>0<=ha>>>0)break;Ah(ha|0,48,b+V|0)|0;do b=b+-1|0;while(b>>>0>ha>>>0)}while(0);h=da-b|0;if(!(k[a>>2]&32))jg(b,(g|0)>(h|0)?h:g,a)|0;g=g-h|0;o=o+4|0}while(o>>>0>>0&(g|0)>-1)}Og(a,48,g+18|0,18,0);if(k[a>>2]&32|0)break;jg(y,Y-y|0,a)|0}while(0);Og(a,32,q,A,I^8192);g=(A|0)<(q|0)?q:A}else{o=(E&32|0)!=0;m=n!=n|0.0!=0.0;b=m?0:G;h=b+3|0;Og(a,32,q,h,s);g=k[a>>2]|0;if(!(g&32)){jg(H,b,a)|0;g=k[a>>2]|0}if(!(g&32))jg(m?(o?14055:14059):o?14047:14051,3,a)|0;Og(a,32,q,h,I^8192);g=(h|0)<(q|0)?q:h}while(0);q=K;b=J;continue a}default:{w=0;t=14011;h=Q;g=x;s=I}}while(0);g:do if((L|0)==63){m=ia;h=k[m>>2]|0;m=k[m+4>>2]|0;o=s&32;if((h|0)==0&(m|0)==0){b=Q;h=0;m=0}else{b=Q;do{b=b+-1|0;i[b>>0]=l[13995+(h&15)>>0]|o;h=lj(h|0,m|0,4)|0;m=M}while(!((h|0)==0&(m|0)==0));m=ia;h=k[m>>2]|0;m=k[m+4>>2]|0}m=(g&8|0)==0|(h|0)==0&(m|0)==0;h=m?0:2;m=m?14011:14011+(s>>4)|0;o=t;L=76}else if((L|0)==75){b=ah(g,b,Q)|0;o=x;g=I;L=76}else if((L|0)==81){L=0;I=Vf(g,0,x)|0;H=(I|0)==0;b=g;w=0;t=14011;h=H?g+x|0:I;g=H?x:I-g|0}else if((L|0)==85){L=0;o=h;g=0;b=0;while(1){m=k[o>>2]|0;if(!m)break;b=$j(O,m)|0;if((b|0)<0|b>>>0>(s-g|0)>>>0)break;g=b+g|0;if(s>>>0>g>>>0)o=o+4|0;else break}if((b|0)<0){f=-1;break a}Og(a,32,q,g,I);if(!g){g=0;L=96}else{m=0;while(1){b=k[h>>2]|0;if(!b){L=96;break g}b=$j(O,b)|0;m=b+m|0;if((m|0)>(g|0)){L=96;break g}if(!(k[a>>2]&32))jg(O,b,a)|0;if(m>>>0>=g>>>0){L=96;break}else h=h+4|0}}}while(0);if((L|0)==96){L=0;Og(a,32,q,g,I^8192);g=(q|0)>(g|0)?q:g;q=K;b=J;continue}if((L|0)==76){L=0;s=(o|0)>-1?g&-65537:g;g=ia;g=(k[g>>2]|0)!=0|(k[g+4>>2]|0)!=0;if((o|0)!=0|g){g=(g&1^1)+(R-b)|0;w=h;t=m;h=Q;g=(o|0)>(g|0)?o:g}else{b=Q;w=h;t=m;h=Q;g=0}}o=h-b|0;h=(g|0)<(o|0)?o:g;m=h+w|0;g=(q|0)<(m|0)?m:q;Og(a,32,g,m,s);if(!(k[a>>2]&32))jg(t,w,a)|0;Og(a,48,g,m,s^65536);Og(a,48,h,o,0);if(!(k[a>>2]&32))jg(b,o,a)|0;Og(a,32,g,m,s^8192);q=K;b=J}h:do if((L|0)==243)if(!a)if(!q)f=0;else{f=1;while(1){g=k[e+(f<<2)>>2]|0;if(!g)break;pe(d+(f<<3)|0,g,c);f=f+1|0;if((f|0)>=10){f=1;break h}}while(1){if(k[e+(f<<2)>>2]|0){f=-1;break h}f=f+1|0;if((f|0)>=10){f=1;break}}}while(0);r=ja;return f|0}function bb(a){a=a|0;var b=0,c=0,d=0,e=0,f=0,g=0,h=0,i=0,j=0;j=r;r=r+16|0;b=j;h=j+8|0;c=j+4|0;k[h>>2]=a;do if(a>>>0>=212){g=(a>>>0)/210|0;e=g*210|0;k[c>>2]=a-e;d=(Yh(5584,5776,c,b)|0)-5584>>2;a=0;f=d;e=(k[5584+(d<<2)>>2]|0)+e|0;a:while(1){b=5;while(1){if(b>>>0>=47){d=211;i=8;break}c=k[5392+(b<<2)>>2]|0;d=(e>>>0)/(c>>>0)|0;if(d>>>0>>0){i=107;break a}if((e|0)==($(d,c)|0))break;else b=b+1|0}b:do if((i|0)==8){c:while(1){i=0;b=(e>>>0)/(d>>>0)|0;do if(b>>>0>=d>>>0)if((e|0)!=($(b,d)|0)){b=d+10|0;c=(e>>>0)/(b>>>0)|0;if(c>>>0>=b>>>0)if((e|0)!=($(c,b)|0)){b=d+12|0;c=(e>>>0)/(b>>>0)|0;if(c>>>0>=b>>>0)if((e|0)!=($(c,b)|0)){b=d+16|0;c=(e>>>0)/(b>>>0)|0;if(c>>>0>=b>>>0)if((e|0)!=($(c,b)|0)){b=d+18|0;c=(e>>>0)/(b>>>0)|0;if(c>>>0>=b>>>0)if((e|0)!=($(c,b)|0)){b=d+22|0;c=(e>>>0)/(b>>>0)|0;if(c>>>0>=b>>>0)if((e|0)!=($(c,b)|0)){b=d+28|0;c=(e>>>0)/(b>>>0)|0;if(c>>>0>=b>>>0)if((e|0)==($(c,b)|0))c=9;else{b=d+30|0;c=(e>>>0)/(b>>>0)|0;if(c>>>0>>0){c=1;a=e;break}if((e|0)==($(c,b)|0)){c=9;break}b=d+36|0;c=(e>>>0)/(b>>>0)|0;if(c>>>0>>0){c=1;a=e;break}if((e|0)==($(c,b)|0)){c=9;break}b=d+40|0;c=(e>>>0)/(b>>>0)|0;if(c>>>0>>0){c=1;a=e;break}if((e|0)==($(c,b)|0)){c=9;break}b=d+42|0;c=(e>>>0)/(b>>>0)|0;if(c>>>0>>0){c=1;a=e;break}if((e|0)==($(c,b)|0)){c=9;break}b=d+46|0;c=(e>>>0)/(b>>>0)|0;if(c>>>0>>0){c=1;a=e;break}if((e|0)==($(c,b)|0)){c=9;break}b=d+52|0;c=(e>>>0)/(b>>>0)|0;if(c>>>0>>0){c=1;a=e;break}if((e|0)==($(c,b)|0)){c=9;break}b=d+58|0;c=(e>>>0)/(b>>>0)|0;if(c>>>0>>0){c=1;a=e;break}if((e|0)==($(c,b)|0)){c=9;break}b=d+60|0;c=(e>>>0)/(b>>>0)|0;if(c>>>0>>0){c=1;a=e;break}if((e|0)==($(c,b)|0)){c=9;break}b=d+66|0;c=(e>>>0)/(b>>>0)|0;if(c>>>0>>0){c=1;a=e;break}if((e|0)==($(c,b)|0)){c=9;break}b=d+70|0;c=(e>>>0)/(b>>>0)|0;if(c>>>0>>0){c=1;a=e;break}if((e|0)==($(c,b)|0)){c=9;break}b=d+72|0;c=(e>>>0)/(b>>>0)|0;if(c>>>0>>0){c=1;a=e;break}if((e|0)==($(c,b)|0)){c=9;break}b=d+78|0;c=(e>>>0)/(b>>>0)|0;if(c>>>0>>0){c=1;a=e;break}if((e|0)==($(c,b)|0)){c=9;break}b=d+82|0;c=(e>>>0)/(b>>>0)|0;if(c>>>0>>0){c=1;a=e;break}if((e|0)==($(c,b)|0)){c=9;break}b=d+88|0;c=(e>>>0)/(b>>>0)|0;if(c>>>0>>0){c=1;a=e;break}if((e|0)==($(c,b)|0)){c=9;break}b=d+96|0;c=(e>>>0)/(b>>>0)|0;if(c>>>0>>0){c=1;a=e;break}if((e|0)==($(c,b)|0)){c=9;break}b=d+100|0;c=(e>>>0)/(b>>>0)|0;if(c>>>0>>0){c=1;a=e;break}if((e|0)==($(c,b)|0)){c=9;break}b=d+102|0;c=(e>>>0)/(b>>>0)|0;if(c>>>0>>0){c=1;a=e;break}if((e|0)==($(c,b)|0)){c=9;break}b=d+106|0;c=(e>>>0)/(b>>>0)|0;if(c>>>0>>0){c=1;a=e;break}if((e|0)==($(c,b)|0)){c=9;break}b=d+108|0;c=(e>>>0)/(b>>>0)|0;if(c>>>0>>0){c=1;a=e;break}if((e|0)==($(c,b)|0)){c=9;break}b=d+112|0;c=(e>>>0)/(b>>>0)|0;if(c>>>0>>0){c=1;a=e;break}if((e|0)==($(c,b)|0)){c=9;break}b=d+120|0;c=(e>>>0)/(b>>>0)|0;if(c>>>0>>0){c=1;a=e;break}if((e|0)==($(c,b)|0)){c=9;break}b=d+126|0;c=(e>>>0)/(b>>>0)|0;if(c>>>0>>0){c=1;a=e;break}if((e|0)==($(c,b)|0)){c=9;break}b=d+130|0;c=(e>>>0)/(b>>>0)|0;if(c>>>0>>0){c=1;a=e;break}if((e|0)==($(c,b)|0)){c=9;break}b=d+136|0;c=(e>>>0)/(b>>>0)|0;if(c>>>0>>0){c=1;a=e;break}if((e|0)==($(c,b)|0)){c=9;break}b=d+138|0;c=(e>>>0)/(b>>>0)|0;if(c>>>0>>0){c=1;a=e;break}if((e|0)==($(c,b)|0)){c=9;break}b=d+142|0;c=(e>>>0)/(b>>>0)|0;if(c>>>0>>0){c=1;a=e;break}if((e|0)==($(c,b)|0)){c=9;break}b=d+148|0;c=(e>>>0)/(b>>>0)|0;if(c>>>0>>0){c=1;a=e;break}if((e|0)==($(c,b)|0)){c=9;break}b=d+150|0;c=(e>>>0)/(b>>>0)|0;if(c>>>0>>0){c=1;a=e;break}if((e|0)==($(c,b)|0)){c=9;break}b=d+156|0;c=(e>>>0)/(b>>>0)|0;if(c>>>0>>0){c=1;a=e;break}if((e|0)==($(c,b)|0)){c=9;break}b=d+162|0;c=(e>>>0)/(b>>>0)|0;if(c>>>0>>0){c=1;a=e;break}if((e|0)==($(c,b)|0)){c=9;break}b=d+166|0;c=(e>>>0)/(b>>>0)|0;if(c>>>0>>0){c=1;a=e;break}if((e|0)==($(c,b)|0)){c=9;break}b=d+168|0;c=(e>>>0)/(b>>>0)|0;if(c>>>0>>0){c=1;a=e;break}if((e|0)==($(c,b)|0)){c=9;break}b=d+172|0;c=(e>>>0)/(b>>>0)|0;if(c>>>0>>0){c=1;a=e;break}if((e|0)==($(c,b)|0)){c=9;break}b=d+178|0;c=(e>>>0)/(b>>>0)|0;if(c>>>0>>0){c=1;a=e;break}if((e|0)==($(c,b)|0)){c=9;break}b=d+180|0;c=(e>>>0)/(b>>>0)|0;if(c>>>0>>0){c=1;a=e;break}if((e|0)==($(c,b)|0)){c=9;break}b=d+186|0;c=(e>>>0)/(b>>>0)|0;if(c>>>0>>0){c=1;a=e;break}if((e|0)==($(c,b)|0)){c=9;break}b=d+190|0;c=(e>>>0)/(b>>>0)|0;if(c>>>0>>0){c=1;a=e;break}if((e|0)==($(c,b)|0)){c=9;break}b=d+192|0;c=(e>>>0)/(b>>>0)|0;if(c>>>0>>0){c=1;a=e;break}if((e|0)==($(c,b)|0)){c=9;break}b=d+196|0;c=(e>>>0)/(b>>>0)|0;if(c>>>0>>0){c=1;a=e;break}if((e|0)==($(c,b)|0)){c=9;break}b=d+198|0;c=(e>>>0)/(b>>>0)|0;if(c>>>0>>0){c=1;a=e;break}if((e|0)==($(c,b)|0)){c=9;break}b=d+208|0;c=(e>>>0)/(b>>>0)|0;if(c>>>0>>0){c=1;a=e;break}c=(e|0)==($(c,b)|0);b=c?b:d+210|0;c=c?9:0}else{c=1;a=e}}else c=9;else{c=1;a=e}}else c=9;else{c=1;a=e}}else c=9;else{c=1;a=e}}else c=9;else{c=1;a=e}}else c=9;else{c=1;a=e}}else{b=d;c=9}else{b=d;c=1;a=e}while(0);switch(c&15){case 9:break b;case 0:{d=b;i=8;break}default:break c}}if(c){i=108;break a}}while(0);d=f+1|0;c=(d|0)==48;e=(c&1)+g|0;d=c?0:d;f=d;g=e;e=(k[5584+(d<<2)>>2]|0)+(e*210|0)|0}if((i|0)==107){k[h>>2]=e;a=e;break}else if((i|0)==108){k[h>>2]=e;break}}else{a=Yh(5392,5584,h,b)|0;a=k[a>>2]|0}while(0);r=j;return a|0}function cb(a,b,c,d,e,f){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;f=f|0;var g=0,h=0,j=0,m=0,n=0,o=0,p=0,q=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,B=0,C=0,D=0,E=0,F=0,G=0,H=0,I=0,J=0,K=0,L=0,M=0,N=0,O=0,P=0,Q=0,R=0,S=0,T=0,U=0,V=0,W=0,X=0,Y=0,Z=0,_=0,aa=0,ba=0,ca=0,da=0,ea=0,fa=0,ga=0,ha=0;ha=r;r=r+112|0;V=ha+100|0;U=ha+96|0;ga=ha+48|0;fa=ha+32|0;Y=ha+104|0;Z=ha+8|0;W=ha+4|0;X=ha;ea=a+8|0;k[ea>>2]=e;do if(d|0){f=k[b>>2]|0;m=a+16|0;k[m>>2]=f;n=a+12|0;k[n>>2]=f;if((d|0)>1){j=1;h=f;while(1){g=k[b+(j<<2)>>2]|0;if((g|0)>=(h|0))if((g|0)>(f|0)){k[m>>2]=g;f=g;g=h}else g=h;else k[n>>2]=g;j=j+1|0;if((j|0)==(d|0))break;else h=g}}else g=f;T=1-g+f|0;k[a+20>>2]=T;f=(T|0)/2|0;g=a+24|0;k[g>>2]=f;k[a+28>>2]=0-f;if(!(T&1))k[g>>2]=f+-1;f=a+32|0;g=a+36|0;m=k[g>>2]|0;h=k[f>>2]|0;j=m-h>>2;if(j>>>0>>0){eg(f,e-j|0);break}if(j>>>0>e>>>0?(o=h+(e<<2)|0,(m|0)!=(o|0)):0)k[g>>2]=m+(~((m+-4-o|0)>>>2)<<2)}while(0);S=k[a+48>>2]|0;T=k[a+52>>2]|0;f=ga;g=f+48|0;do{k[f>>2]=0;f=f+4|0}while((f|0)<(g|0));if(!e){f=0;g=0}else{eg(ga,e);f=k[ga+12>>2]|0;g=k[ga+16>>2]|0}h=ga+16|0;j=g-f>>2;if(j>>>0>=e>>>0){if(j>>>0>e>>>0?(p=f+(e<<2)|0,(g|0)!=(p|0)):0)k[h>>2]=g+(~((g+-4-p|0)>>>2)<<2)}else eg(ga+12|0,e-j|0);f=ga+24|0;g=ga+28|0;m=k[g>>2]|0;j=k[f>>2]|0;h=m-j>>2;if(h>>>0>=e>>>0){if(h>>>0>e>>>0?(q=j+(e<<2)|0,(m|0)!=(q|0)):0)k[g>>2]=m+(~((m+-4-q|0)>>>2)<<2)}else eg(f,e-h|0);f=ga+36|0;g=ga+40|0;m=k[g>>2]|0;j=k[f>>2]|0;h=m-j>>2;if(h>>>0>=e>>>0){if(h>>>0>e>>>0?(s=j+(e<<2)|0,(m|0)!=(s|0)):0)k[g>>2]=m+(~((m+-4-s|0)>>>2)<<2)}else eg(f,e-h|0);Ih(fa,e);A=a+56|0;g=k[A>>2]|0;j=k[g+4>>2]|0;h=k[g>>2]|0;f=j-h|0;a:do if((f|0)>4){B=S+64|0;C=S+28|0;D=(e|0)>0;E=Z+4|0;F=Z+8|0;G=Z+12|0;H=a+16|0;I=a+32|0;J=a+12|0;K=a+28|0;L=a+20|0;M=a+24|0;N=Z+16|0;O=fa+4|0;P=Y+1|0;Q=e<<2;v=f>>2;f=j;b:while(1){z=v+-1|0;if(f-h>>2>>>0<=z>>>0){R=22;break}t=k[h+(z<<2)>>2]|0;p=t+((t|0)<0?0:((t>>>0)%3|0|0)==0?2:-1)|0;u=p>>>5;q=1<<(p&31);s=(p|0)<0;o=1;f=0;g=t;c:while(1){do{if((g|0)<=-1){x=f;break c}j=k[ga+(f*12|0)>>2]|0;if(((k[(k[S>>2]|0)+(g>>>5<<2)>>2]&1<<(g&31)|0)==0?(aa=k[(k[(k[B>>2]|0)+12>>2]|0)+(g<<2)>>2]|0,(aa|0)>=0):0)?(da=k[C>>2]|0,y=k[T>>2]|0,ba=k[y+(k[da+(aa<<2)>>2]<<2)>>2]|0,ca=aa+1|0,ca=k[y+(k[da+((((ca|0)%3|0|0)==0?aa+-2|0:ca)<<2)>>2]<<2)>>2]|0,da=k[y+(k[da+((((aa>>>0)%3|0|0)==0?2:-1)+aa<<2)>>2]<<2)>>2]|0,(ba|0)<(z|0)&(ca|0)<(z|0)&(da|0)<(z|0)):0){m=$(ba,e)|0;n=$(ca,e)|0;d=$(da,e)|0;if(D){h=0;do{k[j+(h<<2)>>2]=(k[b+(h+d<<2)>>2]|0)+(k[b+(h+n<<2)>>2]|0)-(k[b+(h+m<<2)>>2]|0);h=h+1|0}while((h|0)!=(e|0))}f=f+1|0;if((f|0)==4){x=4;break c}}do if(o){h=g+1|0;g=((h|0)%3|0|0)==0?g+-2|0:h;h=k[S>>2]|0;if(!(k[h+(g>>>5<<2)>>2]&1<<(g&31))){if((g|0)>=0){g=k[(k[(k[B>>2]|0)+12>>2]|0)+(g<<2)>>2]|0;j=g+1|0;if((g|0)>=0)g=((j|0)%3|0|0)==0?g+-2|0:j}}else g=-1073741824}else{g=(((g>>>0)%3|0|0)==0?2:-1)+g|0;h=k[S>>2]|0;if(!(k[h+(g>>>5<<2)>>2]&1<<(g&31))){if((g|0)>=0){g=k[(k[(k[B>>2]|0)+12>>2]|0)+(g<<2)>>2]|0;if((g|0)>=0)if(!((g>>>0)%3|0)){g=g+2|0;break}else{g=g+-1|0;break}}}else g=-1073741824}while(0);if((g|0)==(t|0)){x=f;break c}}while(!(o&(g|0)<0));g=(q&k[h+(u<<2)>>2]|0)!=0;if(g|s){o=0;g=g?-1073741824:p;continue}g=k[(k[(k[B>>2]|0)+12>>2]|0)+(p<<2)>>2]|0;if((g|0)<0){o=0;continue}if(!((g>>>0)%3|0)){o=0;g=g+2|0;continue}else{o=0;g=g+-1|0;continue}}y=$(z,e)|0;k[Z>>2]=2147483647;i[E>>0]=0;k[F>>2]=0;k[F+4>>2]=0;k[F+8>>2]=0;k[F+12>>2]=0;h=$(v+-2|0,e)|0;if(D){g=0;f=0;do{w=(k[b+(g+y<<2)>>2]|0)-(k[b+(g+h<<2)>>2]|0)|0;f=((w|0)>-1?w:0-w|0)+f|0;g=g+1|0}while((g|0)!=(e|0))}else f=0;k[Z>>2]=f;i[E>>0]=0;k[F>>2]=0;w=b+(h<<2)|0;Ce(G,w,w+(e<<2)|0);if((x|0)>=1){p=Y+x|0;o=p+-1|0;q=(o|0)==(Y|0);s=p+-2|0;t=P>>>0>>0;u=o>>>0>Y>>>0;v=0;w=1;while(1){v=v+1|0;Ah(Y|0,1,x|0)|0;Ah(Y|0,0,v|0)|0;d:while(1){if(D){Ah(k[fa>>2]|0,0,Q|0)|0;m=k[fa>>2]|0;j=0;f=0;do{if(!(i[Y+j>>0]|0)){h=k[ga+(j*12|0)>>2]|0;g=0;do{d=m+(g<<2)|0;k[d>>2]=(k[d>>2]|0)+(k[h+(g<<2)>>2]|0);g=g+1|0}while((g|0)!=(e|0));f=(1<>0]|0))f=(1<>2]|0;h=0;g=0;do{n=j+(h<<2)|0;d=(k[n>>2]|0)/(w|0)|0;k[n>>2]=d;d=d-(k[b+(h+y<<2)>>2]|0)|0;g=((d|0)>-1?d:0-d|0)+g|0;h=h+1|0}while((h|0)!=(e|0))}else g=0;if((g|0)<(k[Z>>2]|0)){k[Z>>2]=g;i[E>>0]=f;k[F>>2]=w;k[W>>2]=k[fa>>2];k[X>>2]=k[O>>2];k[U>>2]=k[W>>2];k[V>>2]=k[X>>2];ze(G,U,V)}if(q)break;_=i[o>>0]|0;m=-1;d=_;while(1){f=m+-1|0;n=p+f|0;j=d;d=i[n>>0]|0;if((d&255)<(j&255))break;if((n|0)==(Y|0)){R=79;break d}else m=f}f=p+m|0;if((d&255)<(_&255)){h=o;g=_}else{g=p;j=o;while(1){g=i[g+-2>>0]|0;h=j+-1|0;if((d&255)<(g&255))break;else{g=j;j=h}}}i[n>>0]=g;i[h>>0]=d;if((m|0)<-1)g=o;else continue;while(1){d=i[f>>0]|0;i[f>>0]=i[g>>0]|0;i[g>>0]=d;f=f+1|0;g=g+-1|0;if(f>>>0>=g>>>0)continue d}}if(((R|0)==79?(R=0,u):0)?(d=i[Y>>0]|0,i[Y>>0]=_,i[o>>0]=d,t):0){f=s;g=P;do{d=i[g>>0]|0;i[g>>0]=i[f>>0]|0;i[f>>0]=d;g=g+1|0;f=f+-1|0}while(g>>>0>>0)}if((w|0)>=(x|0))break;else w=w+1|0}if((x|0)>0){n=x+-1|0;d=a+60+(n*12|0)|0;m=a+60+(n*12|0)+4|0;n=a+60+(n*12|0)+8|0;j=0;do{f=k[m>>2]|0;g=k[n>>2]|0;h=(f|0)==(g<<5|0);if(!(l[E>>0]&1<>>0<1073741823?(R>>>0>>0?f:R):2147483647);f=k[m>>2]|0}k[m>>2]=f+1;R=(k[d>>2]|0)+(f>>>5<<2)|0;k[R>>2]=k[R>>2]|1<<(f&31)}else{if(h){if((f+1|0)<0){R=106;break b}R=g<<6;f=f+32&-32;Wf(d,g<<5>>>0<1073741823?(R>>>0>>0?f:R):2147483647);f=k[m>>2]|0}k[m>>2]=f+1;R=(k[d>>2]|0)+(f>>>5<<2)|0;k[R>>2]=k[R>>2]&~(1<<(f&31))}j=j+1|0}while((j|0)<(x|0))}}n=b+(y<<2)|0;d=k[G>>2]|0;if((k[ea>>2]|0)>0){m=0;do{j=k[d+(m<<2)>>2]|0;f=k[H>>2]|0;do if((j|0)<=(f|0)){f=k[J>>2]|0;g=k[I>>2]|0;h=g+(m<<2)|0;if((j|0)<(f|0)){k[h>>2]=f;h=g;break}else{k[h>>2]=j;h=g;break}}else{h=k[I>>2]|0;k[h+(m<<2)>>2]=f}while(0);m=m+1|0;f=k[ea>>2]|0}while((m|0)<(f|0));if((f|0)>0){f=0;do{k[c+(f+y<<2)>>2]=(k[n+(f<<2)>>2]|0)-(k[h+(f<<2)>>2]|0);f=f+1|0;g=k[ea>>2]|0}while((f|0)<(g|0));if((g|0)>0){f=0;do{g=c+(f+y<<2)|0;h=k[g>>2]|0;if((h|0)>=(k[K>>2]|0)){if((h|0)>(k[M>>2]|0))k[g>>2]=h-(k[L>>2]|0)}else k[g>>2]=(k[L>>2]|0)+h;f=f+1|0}while((f|0)<(k[ea>>2]|0));R=110}else R=110}else R=111}else R=110;if((R|0)==110?(R=0,d|0):0)R=111;if((R|0)==111){R=0;f=k[N>>2]|0;if((f|0)!=(d|0))k[N>>2]=f+(~((f+-4-d|0)>>>2)<<2);gl(d)}if((z|0)<=1)break a;f=k[A>>2]|0;v=z;g=f;h=k[f>>2]|0;f=k[f+4>>2]|0}if((R|0)==22)lk(g);else if((R|0)==101)mk(d);else if((R|0)==106)mk(d)}while(0);p=k[ga>>2]|0;if((e|0)>0){f=0;do{k[p+(f<<2)>>2]=0;f=f+1|0}while((f|0)!=(e|0))}if((k[ea>>2]|0)>0){n=a+16|0;d=a+32|0;o=a+12|0;m=0;do{j=k[p+(m<<2)>>2]|0;f=k[n>>2]|0;do if((j|0)<=(f|0)){f=k[o>>2]|0;g=k[d>>2]|0;h=g+(m<<2)|0;if((j|0)<(f|0)){k[h>>2]=f;h=g;break}else{k[h>>2]=j;h=g;break}}else{h=k[d>>2]|0;k[h+(m<<2)>>2]=f}while(0);m=m+1|0;f=k[ea>>2]|0}while((m|0)<(f|0));if((f|0)>0){f=0;do{k[c+(f<<2)>>2]=(k[b+(f<<2)>>2]|0)-(k[h+(f<<2)>>2]|0);f=f+1|0;g=k[ea>>2]|0}while((f|0)<(g|0));if((g|0)>0){m=a+28|0;n=a+20|0;g=a+24|0;f=0;do{h=c+(f<<2)|0;j=k[h>>2]|0;if((j|0)>=(k[m>>2]|0)){if((j|0)>(k[g>>2]|0))k[h>>2]=j-(k[n>>2]|0)}else k[h>>2]=(k[n>>2]|0)+j;f=f+1|0}while((f|0)<(k[ea>>2]|0))}}}h=k[fa>>2]|0;j=h;if(h|0){f=fa+4|0;g=k[f>>2]|0;if((g|0)!=(h|0))k[f>>2]=g+(~((g+-4-j|0)>>>2)<<2);gl(h)}f=k[ga+36>>2]|0;g=f;if(f|0){h=ga+40|0;j=k[h>>2]|0;if((j|0)!=(f|0))k[h>>2]=j+(~((j+-4-g|0)>>>2)<<2);gl(f)}f=k[ga+24>>2]|0;g=f;if(f|0){h=ga+28|0;j=k[h>>2]|0;if((j|0)!=(f|0))k[h>>2]=j+(~((j+-4-g|0)>>>2)<<2);gl(f)}f=k[ga+12>>2]|0;g=f;if(f|0){h=ga+16|0;j=k[h>>2]|0;if((j|0)!=(f|0))k[h>>2]=j+(~((j+-4-g|0)>>>2)<<2);gl(f)}h=k[ga>>2]|0;if(!h){r=ha;return 1}f=ga+4|0;g=k[f>>2]|0;if((g|0)!=(h|0))k[f>>2]=g+(~((g+-4-h|0)>>>2)<<2);gl(h);r=ha;return 1}function db(a,b,c,d,e,f){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;f=f|0;var g=0,h=0,j=0,m=0,n=0,o=0,p=0,q=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,B=0,C=0,D=0,E=0,F=0,G=0,H=0,I=0,J=0,K=0,L=0,M=0,N=0,O=0,P=0,Q=0,R=0,S=0,T=0,U=0,V=0,W=0,X=0,Y=0,Z=0,_=0,aa=0,ba=0,ca=0,da=0;da=r;r=r+112|0;V=da+100|0;U=da+96|0;ca=da+48|0;ba=da+32|0;Y=da+104|0;Z=da+8|0;W=da+4|0;X=da;aa=a+8|0;k[aa>>2]=e;do if(d|0){f=k[b>>2]|0;m=a+16|0;k[m>>2]=f;n=a+12|0;k[n>>2]=f;if((d|0)>1){j=1;h=f;while(1){g=k[b+(j<<2)>>2]|0;if((g|0)>=(h|0))if((g|0)>(f|0)){k[m>>2]=g;f=g;g=h}else g=h;else k[n>>2]=g;j=j+1|0;if((j|0)==(d|0))break;else h=g}}else g=f;T=1-g+f|0;k[a+20>>2]=T;f=(T|0)/2|0;g=a+24|0;k[g>>2]=f;k[a+28>>2]=0-f;if(!(T&1))k[g>>2]=f+-1;f=a+32|0;g=a+36|0;m=k[g>>2]|0;h=k[f>>2]|0;j=m-h>>2;if(j>>>0>>0){eg(f,e-j|0);break}if(j>>>0>e>>>0?(o=h+(e<<2)|0,(m|0)!=(o|0)):0)k[g>>2]=m+(~((m+-4-o|0)>>>2)<<2)}while(0);S=k[a+48>>2]|0;T=k[a+52>>2]|0;f=ca;g=f+48|0;do{k[f>>2]=0;f=f+4|0}while((f|0)<(g|0));if(!e){f=0;g=0}else{eg(ca,e);f=k[ca+12>>2]|0;g=k[ca+16>>2]|0}h=ca+16|0;j=g-f>>2;if(j>>>0>=e>>>0){if(j>>>0>e>>>0?(p=f+(e<<2)|0,(g|0)!=(p|0)):0)k[h>>2]=g+(~((g+-4-p|0)>>>2)<<2)}else eg(ca+12|0,e-j|0);f=ca+24|0;g=ca+28|0;m=k[g>>2]|0;j=k[f>>2]|0;h=m-j>>2;if(h>>>0>=e>>>0){if(h>>>0>e>>>0?(q=j+(e<<2)|0,(m|0)!=(q|0)):0)k[g>>2]=m+(~((m+-4-q|0)>>>2)<<2)}else eg(f,e-h|0);f=ca+36|0;g=ca+40|0;m=k[g>>2]|0;j=k[f>>2]|0;h=m-j>>2;if(h>>>0>=e>>>0){if(h>>>0>e>>>0?(s=j+(e<<2)|0,(m|0)!=(s|0)):0)k[g>>2]=m+(~((m+-4-s|0)>>>2)<<2)}else eg(f,e-h|0);Ih(ba,e);B=a+56|0;g=k[B>>2]|0;j=k[g+4>>2]|0;h=k[g>>2]|0;f=j-h|0;a:do if((f|0)>4){C=S+12|0;D=(e|0)>0;E=Z+4|0;F=Z+8|0;G=Z+12|0;H=a+16|0;I=a+32|0;J=a+12|0;K=a+28|0;L=a+20|0;M=a+24|0;N=Z+16|0;O=ba+4|0;P=Y+1|0;Q=e<<2;y=f>>2;f=j;b:while(1){A=y+-1|0;if(f-h>>2>>>0<=A>>>0){R=22;break}w=k[h+(A<<2)>>2]|0;v=(((w>>>0)%3|0|0)==0?2:-1)+w|0;x=(w|v|0)<0;u=(w|0)<0?w:v;t=1;g=0;f=w;c:while(1){do{if((f|0)<=-1){x=g;break c}q=k[ca+(g*12|0)>>2]|0;s=k[C>>2]|0;j=k[s+(f<<2)>>2]|0;if((j|0)>=0){n=k[S>>2]|0;m=(j>>>0)%3|0;d=k[T>>2]|0;p=k[d+(k[n+(((j>>>0)/3|0)*12|0)+(m<<2)>>2]<<2)>>2]|0;h=j+1|0;h=((h|0)%3|0|0)==0?j+-2|0:h;if((h|0)<0)h=-1073741824;else h=k[n+(((h>>>0)/3|0)*12|0)+(((h>>>0)%3|0)<<2)>>2]|0;o=k[d+(h<<2)>>2]|0;h=((m|0)==0?2:-1)+j|0;if((h|0)<0)h=-1073741824;else h=k[n+(((h>>>0)/3|0)*12|0)+(((h>>>0)%3|0)<<2)>>2]|0;h=k[d+(h<<2)>>2]|0;if((p|0)<(A|0)&(o|0)<(A|0)&(h|0)<(A|0)){n=$(p,e)|0;m=$(o,e)|0;j=$(h,e)|0;if(D){h=0;do{k[q+(h<<2)>>2]=(k[b+(h+j<<2)>>2]|0)+(k[b+(h+m<<2)>>2]|0)-(k[b+(h+n<<2)>>2]|0);h=h+1|0}while((h|0)!=(e|0))}g=g+1|0;if((g|0)==4){x=4;break c}}}do if(t){z=f+1|0;f=((z|0)%3|0|0)==0?f+-2|0:z;if((f|0)>=0){f=k[s+(f<<2)>>2]|0;h=f+1|0;if((f|0)>=0)f=((h|0)%3|0|0)==0?f+-2|0:h}}else{f=(((f>>>0)%3|0|0)==0?2:-1)+f|0;if((f|0)>=0){f=k[s+(f<<2)>>2]|0;if((f|0)>=0)if(!((f>>>0)%3|0)){f=f+2|0;break}else{f=f+-1|0;break}}}while(0);if((f|0)==(w|0)){x=g;break c}}while(!(t&(f|0)<0));if(x){t=0;f=u;continue}f=k[s+(v<<2)>>2]|0;if((f|0)<0){t=0;continue}if(!((f>>>0)%3|0)){t=0;f=f+2|0;continue}else{t=0;f=f+-1|0;continue}}z=$(A,e)|0;k[Z>>2]=2147483647;i[E>>0]=0;k[F>>2]=0;k[F+4>>2]=0;k[F+8>>2]=0;k[F+12>>2]=0;h=$(y+-2|0,e)|0;if(D){g=0;f=0;do{y=(k[b+(g+z<<2)>>2]|0)-(k[b+(g+h<<2)>>2]|0)|0;f=((y|0)>-1?y:0-y|0)+f|0;g=g+1|0}while((g|0)!=(e|0))}else f=0;k[Z>>2]=f;i[E>>0]=0;k[F>>2]=0;y=b+(h<<2)|0;Ce(G,y,y+(e<<2)|0);if((x|0)>=1){p=Y+x|0;o=p+-1|0;q=(o|0)==(Y|0);s=p+-2|0;t=P>>>0>>0;u=o>>>0>Y>>>0;v=0;w=1;while(1){v=v+1|0;Ah(Y|0,1,x|0)|0;Ah(Y|0,0,v|0)|0;d:while(1){if(D){Ah(k[ba>>2]|0,0,Q|0)|0;m=k[ba>>2]|0;j=0;f=0;do{if(!(i[Y+j>>0]|0)){h=k[ca+(j*12|0)>>2]|0;g=0;do{y=m+(g<<2)|0;k[y>>2]=(k[y>>2]|0)+(k[h+(g<<2)>>2]|0);g=g+1|0}while((g|0)!=(e|0));f=(1<>0]|0))f=(1<>2]|0;h=0;g=0;do{d=j+(h<<2)|0;y=(k[d>>2]|0)/(w|0)|0;k[d>>2]=y;y=y-(k[b+(h+z<<2)>>2]|0)|0;g=((y|0)>-1?y:0-y|0)+g|0;h=h+1|0}while((h|0)!=(e|0))}else g=0;if((g|0)<(k[Z>>2]|0)){k[Z>>2]=g;i[E>>0]=f;k[F>>2]=w;k[W>>2]=k[ba>>2];k[X>>2]=k[O>>2];k[U>>2]=k[W>>2];k[V>>2]=k[X>>2];ze(G,U,V)}if(q)break;_=i[o>>0]|0;m=-1;d=_;while(1){f=m+-1|0;n=p+f|0;y=d;d=i[n>>0]|0;if((d&255)<(y&255))break;if((n|0)==(Y|0)){R=80;break d}else m=f}f=p+m|0;if((d&255)<(_&255)){h=o;g=_}else{g=p;j=o;while(1){g=i[g+-2>>0]|0;h=j+-1|0;if((d&255)<(g&255))break;else{g=j;j=h}}}i[n>>0]=g;i[h>>0]=d;if((m|0)<-1)g=o;else continue;while(1){y=i[f>>0]|0;i[f>>0]=i[g>>0]|0;i[g>>0]=y;f=f+1|0;g=g+-1|0;if(f>>>0>=g>>>0)continue d}}if(((R|0)==80?(R=0,u):0)?(y=i[Y>>0]|0,i[Y>>0]=_,i[o>>0]=y,t):0){f=s;g=P;do{y=i[g>>0]|0;i[g>>0]=i[f>>0]|0;i[f>>0]=y;g=g+1|0;f=f+-1|0}while(g>>>0>>0)}if((w|0)>=(x|0))break;else w=w+1|0}if((x|0)>0){n=x+-1|0;d=a+60+(n*12|0)|0;m=a+60+(n*12|0)+4|0;n=a+60+(n*12|0)+8|0;j=0;do{f=k[m>>2]|0;g=k[n>>2]|0;h=(f|0)==(g<<5|0);if(!(l[E>>0]&1<>>0<1073741823?(R>>>0>>0?f:R):2147483647);f=k[m>>2]|0}k[m>>2]=f+1;R=(k[d>>2]|0)+(f>>>5<<2)|0;k[R>>2]=k[R>>2]|1<<(f&31)}else{if(h){if((f+1|0)<0){R=107;break b}R=g<<6;f=f+32&-32;Wf(d,g<<5>>>0<1073741823?(R>>>0>>0?f:R):2147483647);f=k[m>>2]|0}k[m>>2]=f+1;R=(k[d>>2]|0)+(f>>>5<<2)|0;k[R>>2]=k[R>>2]&~(1<<(f&31))}j=j+1|0}while((j|0)<(x|0))}}n=b+(z<<2)|0;d=k[G>>2]|0;if((k[aa>>2]|0)>0){m=0;do{j=k[d+(m<<2)>>2]|0;f=k[H>>2]|0;do if((j|0)<=(f|0)){f=k[J>>2]|0;g=k[I>>2]|0;h=g+(m<<2)|0;if((j|0)<(f|0)){k[h>>2]=f;h=g;break}else{k[h>>2]=j;h=g;break}}else{h=k[I>>2]|0;k[h+(m<<2)>>2]=f}while(0);m=m+1|0;f=k[aa>>2]|0}while((m|0)<(f|0));if((f|0)>0){f=0;do{k[c+(f+z<<2)>>2]=(k[n+(f<<2)>>2]|0)-(k[h+(f<<2)>>2]|0);f=f+1|0;g=k[aa>>2]|0}while((f|0)<(g|0));if((g|0)>0){f=0;do{g=c+(f+z<<2)|0;h=k[g>>2]|0;if((h|0)>=(k[K>>2]|0)){if((h|0)>(k[M>>2]|0))k[g>>2]=h-(k[L>>2]|0)}else k[g>>2]=(k[L>>2]|0)+h;f=f+1|0}while((f|0)<(k[aa>>2]|0));R=111}else R=111}else R=112}else R=111;if((R|0)==111?(R=0,d|0):0)R=112;if((R|0)==112){R=0;f=k[N>>2]|0;if((f|0)!=(d|0))k[N>>2]=f+(~((f+-4-d|0)>>>2)<<2);gl(d)}if((A|0)<=1)break a;f=k[B>>2]|0;y=A;g=f;h=k[f>>2]|0;f=k[f+4>>2]|0}if((R|0)==22)lk(g);else if((R|0)==102)mk(d);else if((R|0)==107)mk(d)}while(0);p=k[ca>>2]|0;if((e|0)>0){f=0;do{k[p+(f<<2)>>2]=0;f=f+1|0}while((f|0)!=(e|0))}if((k[aa>>2]|0)>0){n=a+16|0;d=a+32|0;o=a+12|0;m=0;do{j=k[p+(m<<2)>>2]|0;f=k[n>>2]|0;do if((j|0)<=(f|0)){f=k[o>>2]|0;g=k[d>>2]|0;h=g+(m<<2)|0;if((j|0)<(f|0)){k[h>>2]=f;h=g;break}else{k[h>>2]=j;h=g;break}}else{h=k[d>>2]|0;k[h+(m<<2)>>2]=f}while(0);m=m+1|0;f=k[aa>>2]|0}while((m|0)<(f|0));if((f|0)>0){f=0;do{k[c+(f<<2)>>2]=(k[b+(f<<2)>>2]|0)-(k[h+(f<<2)>>2]|0);f=f+1|0;g=k[aa>>2]|0}while((f|0)<(g|0));if((g|0)>0){m=a+28|0;n=a+20|0;g=a+24|0;f=0;do{h=c+(f<<2)|0;j=k[h>>2]|0;if((j|0)>=(k[m>>2]|0)){if((j|0)>(k[g>>2]|0))k[h>>2]=j-(k[n>>2]|0)}else k[h>>2]=(k[n>>2]|0)+j;f=f+1|0}while((f|0)<(k[aa>>2]|0))}}}h=k[ba>>2]|0;j=h;if(h|0){f=ba+4|0;g=k[f>>2]|0;if((g|0)!=(h|0))k[f>>2]=g+(~((g+-4-j|0)>>>2)<<2);gl(h)}f=k[ca+36>>2]|0;g=f;if(f|0){h=ca+40|0;j=k[h>>2]|0;if((j|0)!=(f|0))k[h>>2]=j+(~((j+-4-g|0)>>>2)<<2);gl(f)}f=k[ca+24>>2]|0;g=f;if(f|0){h=ca+28|0;j=k[h>>2]|0;if((j|0)!=(f|0))k[h>>2]=j+(~((j+-4-g|0)>>>2)<<2);gl(f)}f=k[ca+12>>2]|0;g=f;if(f|0){h=ca+16|0;j=k[h>>2]|0;if((j|0)!=(f|0))k[h>>2]=j+(~((j+-4-g|0)>>>2)<<2);gl(f)}h=k[ca>>2]|0;if(!h){r=da;return 1}f=ca+4|0;g=k[f>>2]|0;if((g|0)!=(h|0))k[f>>2]=g+(~((g+-4-h|0)>>>2)<<2);gl(h);r=da;return 1}function eb(a,b,c,d,e,f){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;f=f|0;var g=0,h=0,j=0,l=0,m=0,n=0,o=0,p=0,q=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,B=0,C=0,D=0,E=0,F=0,G=0,H=0,I=0,J=0,K=0,L=0,M=0,N=0,O=0,P=0,Q=0,R=0,S=0,T=0,U=0,V=0,W=0,X=0,Y=0,Z=0,_=0,$=0,aa=0,ba=0,da=0,ea=0,fa=0,ga=0,ha=0,ia=0,ja=0,ka=0,la=0;ka=r;r=r+128|0;ja=ka;o=ka+88|0;ga=ka+72|0;U=ka+60|0;ha=ka+48|0;ia=ka+16|0;k[o>>2]=b;k[o+4>>2]=k[c>>2];S=c+4|0;k[o+8>>2]=k[S>>2];T=c+8|0;k[o+12>>2]=k[T>>2];Q=o+16|0;k[Q>>2]=k[d>>2];k[Q+4>>2]=k[d+4>>2];k[Q+8>>2]=k[d+8>>2];k[o+28>>2]=e;k[ga>>2]=0;Q=ga+4|0;k[Q>>2]=0;k[ga+8>>2]=0;R=ga+8|0;Ge(ga,o);b=k[Q>>2]|0;o=k[ga>>2]|0;e=b-o|0;if((e|0)>32){g=((e>>5)+-2|0)/2|0;e=o+(g<<5)|0;h=b+-32|0;j=k[h>>2]|0;if((k[e>>2]|0)>>>0>>0){l=k[b+-28>>2]|0;m=k[b+-24>>2]|0;n=k[b+-20>>2]|0;b=b+-16|0;k[ja>>2]=k[b>>2];k[ja+4>>2]=k[b+4>>2];k[ja+8>>2]=k[b+8>>2];k[ja+12>>2]=k[b+12>>2];b=h;while(1){k[b>>2]=k[e>>2];k[b+4>>2]=k[e+4>>2];k[b+8>>2]=k[e+8>>2];k[b+12>>2]=k[e+12>>2];k[b+16>>2]=k[e+16>>2];k[b+20>>2]=k[e+20>>2];k[b+24>>2]=k[e+24>>2];k[b+28>>2]=k[e+28>>2];if(!g)break;g=(g+-1|0)/2|0;b=o+(g<<5)|0;if((k[b>>2]|0)>>>0>=j>>>0)break;else{P=e;e=b;b=P}}k[e>>2]=j;k[e+4>>2]=l;k[e+8>>2]=m;k[e+12>>2]=n;g=e+16|0;k[g>>2]=k[ja>>2];k[g+4>>2]=k[ja+4>>2];k[g+8>>2]=k[ja+8>>2];k[g+12>>2]=k[ja+12>>2];g=7}else g=7}else e=o;a:while(1){if((g|0)==7){e=k[ga>>2]|0;b=k[Q>>2]|0}if((e|0)==(b|0)){g=62;break}P=k[e>>2]|0;b=k[e+4>>2]|0;o=k[e+8>>2]|0;n=k[e+12>>2]|0;t=e+16|0;k[U>>2]=k[t>>2];k[U+4>>2]=k[t+4>>2];k[U+8>>2]=k[t+8>>2];t=k[e+28>>2]|0;ld(ga);k[c>>2]=b;k[S>>2]=o;k[T>>2]=n;k[d>>2]=k[U>>2];k[d+4>>2]=k[U+4>>2];k[d+8>>2]=k[U+8>>2];k[ja>>2]=k[U>>2];k[ja+4>>2]=k[U+4>>2];k[ja+8>>2]=k[U+8>>2];t=Ag(a,P,c,ja,t)|0;n=d+(t<<2)|0;o=k[n>>2]|0;b=k[a>>2]|0;O=b-o|0;b:do if(!O){if((P|0)>0){n=k[f>>2]|0;g=f+4|0;j=n+84|0;l=n+68|0;m=n+40|0;n=n+64|0;h=k[g>>2]|0;b=0;o=h;while(1){if(!(i[j>>0]|0))e=k[(k[l>>2]|0)+(o<<2)>>2]|0;else e=o;N=m;O=k[N>>2]|0;N=Pi(e|0,((e|0)<0)<<31>>31|0,O|0,k[N+4>>2]|0)|0;nh((k[k[n>>2]>>2]|0)+N|0,c|0,O|0)|0;b=b+1|0;if((b|0)==(P|0))break;else o=o+1|0}k[g>>2]=P+h}}else{if(!P){g=16;break a}if(P>>>0<3){x=(t|0)==2?0:t+1|0;u=(x|0)==2?0:x+1|0;N=b-(k[d+(x<<2)>>2]|0)|0;D=b-(k[d+(u<<2)>>2]|0)|0;E=a+816|0;F=a+812|0;J=k[f>>2]|0;C=f+4|0;G=J+84|0;H=J+68|0;I=J+40|0;J=J+64|0;K=ja+(t<<2)|0;L=(O|0)<33;M=(O|0)>0;n=c+(t<<2)|0;o=(N|0)==0;l=ja+(x<<2)|0;p=c+(x<<2)|0;q=(D|0)==0;m=ja+(u<<2)|0;s=c+(u<<2)|0;t=ja+(u<<2)|0;u=(D|0)<33;v=(D|0)>0;w=32-D|0;x=ja+(x<<2)|0;y=(N|0)<33;z=(N|0)>0;A=32-N|0;B=32-O|0;j=0;while(1){k[ja>>2]=0;k[ja+4>>2]=0;k[ja+8>>2]=0;if(!L){g=21;break a}if(!M){g=23;break a}g=k[E>>2]|0;b=32-g|0;h=k[F>>2]|0;e=k[h>>2]<>>B;k[K>>2]=b;g=g+O|0;k[E>>2]=g;if((g|0)==32){k[F>>2]=h+4;k[E>>2]=0}}else{la=O-b|0;k[E>>2]=la;g=h+4|0;k[F>>2]=g;h=32-la|0;b=(k[g>>2]|0)>>>h|e>>>(h-b|0);k[K>>2]=b}k[K>>2]=b|k[n>>2];do if(!o){if(!y){g=21;break a}if(!z){g=23;break a}g=k[E>>2]|0;b=32-g|0;h=k[F>>2]|0;e=k[h>>2]<(b|0)){la=N-b|0;k[E>>2]=la;h=h+4|0;k[F>>2]=h;la=32-la|0;b=(k[h>>2]|0)>>>la|e>>>(la-b|0);k[x>>2]=b;e=x;break}b=e>>>A;k[x>>2]=b;la=g+N|0;k[E>>2]=la;if((la|0)==32){k[F>>2]=h+4;k[E>>2]=0;e=x}else e=x}else{e=l;b=k[l>>2]|0}while(0);k[e>>2]=b|k[p>>2];do if(!q){if(!u){g=21;break a}if(!v){g=23;break a}g=k[E>>2]|0;b=32-g|0;h=k[F>>2]|0;e=k[h>>2]<(b|0)){la=D-b|0;k[E>>2]=la;h=h+4|0;k[F>>2]=h;la=32-la|0;b=(k[h>>2]|0)>>>la|e>>>(la-b|0);k[t>>2]=b;e=t;break}b=e>>>w;k[t>>2]=b;la=g+D|0;k[E>>2]=la;if((la|0)==32){k[F>>2]=h+4;k[E>>2]=0;e=t}else e=t}else{e=m;b=k[m>>2]|0}while(0);k[e>>2]=b|k[s>>2];b=k[C>>2]|0;k[C>>2]=b+1;if(!(i[G>>0]|0))b=k[(k[H>>2]|0)+(b<<2)>>2]|0;h=I;la=k[h>>2]|0;h=Pi(b|0,((b|0)<0)<<31>>31|0,la|0,k[h+4>>2]|0)|0;nh((k[k[J>>2]>>2]|0)+h|0,ja|0,la|0)|0;j=j+1|0;if(j>>>0>=P>>>0)break b}}k[ha>>2]=k[c>>2];q=ha+4|0;k[q>>2]=k[S>>2];s=ha+8|0;k[s>>2]=k[T>>2];g=ha+(t<<2)|0;k[g>>2]=(k[g>>2]|0)+(1<>>1)-b|0;h=P-l|0;if((l|0)==(h|0)){m=l;p=l}else{b=a+856|0;la=k[b>>2]|0;e=a+852|0;g=k[e>>2]|0;j=(k[g>>2]&1<<31-la|0)!=0;la=la+1|0;k[b>>2]=la;if((la|0)==32){k[e>>2]=g+4;k[b>>2]=0}m=j?l:h;p=j?h:l}k[n>>2]=o+1;if(m|0){k[ia>>2]=m;e=ia+4|0;k[e>>2]=k[c>>2];g=ia+8|0;k[g>>2]=k[S>>2];h=ia+12|0;k[h>>2]=k[T>>2];b=ia+16|0;k[b>>2]=k[d>>2];k[b+4>>2]=k[d+4>>2];k[b+8>>2]=k[d+8>>2];k[ia+28>>2]=t;j=k[Q>>2]|0;if(j>>>0<(k[R>>2]|0)>>>0){k[j>>2]=m;k[j+4>>2]=k[e>>2];k[j+8>>2]=k[g>>2];k[j+12>>2]=k[h>>2];g=j+16|0;k[g>>2]=k[b>>2];k[g+4>>2]=k[b+4>>2];k[g+8>>2]=k[b+8>>2];k[g+12>>2]=k[b+12>>2];g=j+32|0;k[Q>>2]=g}else{Ge(ga,ia);g=k[Q>>2]|0}b=k[ga>>2]|0;e=g-b|0;if((e|0)>32?(V=((e>>5)+-2|0)/2|0,W=b,X=W+(V<<5)|0,Y=g,Z=Y+-32|0,_=k[Z>>2]|0,(k[X>>2]|0)>>>0<_>>>0):0){h=k[Y+-28>>2]|0;j=k[Y+-24>>2]|0;l=k[Y+-20>>2]|0;e=Y+-16|0;k[ja>>2]=k[e>>2];k[ja+4>>2]=k[e+4>>2];k[ja+8>>2]=k[e+8>>2];k[ja+12>>2]=k[e+12>>2];e=V;b=Z;g=X;while(1){k[b>>2]=k[g>>2];k[b+4>>2]=k[g+4>>2];k[b+8>>2]=k[g+8>>2];k[b+12>>2]=k[g+12>>2];k[b+16>>2]=k[g+16>>2];k[b+20>>2]=k[g+20>>2];k[b+24>>2]=k[g+24>>2];k[b+28>>2]=k[g+28>>2];if(!e)break;e=(e+-1|0)/2|0;b=W+(e<<5)|0;if((k[b>>2]|0)>>>0>=_>>>0)break;else{la=g;g=b;b=la}}k[g>>2]=_;k[g+4>>2]=h;k[g+8>>2]=j;k[g+12>>2]=l;la=g+16|0;k[la>>2]=k[ja>>2];k[la+4>>2]=k[ja+4>>2];k[la+8>>2]=k[ja+8>>2];k[la+12>>2]=k[ja+12>>2]}}if(p|0){k[ia>>2]=p;h=ia+4|0;k[h>>2]=k[ha>>2];j=ia+8|0;k[j>>2]=k[q>>2];g=ia+12|0;k[g>>2]=k[s>>2];e=ia+16|0;k[e>>2]=k[d>>2];k[e+4>>2]=k[d+4>>2];k[e+8>>2]=k[d+8>>2];k[ia+28>>2]=t;b=k[Q>>2]|0;if(b>>>0<(k[R>>2]|0)>>>0){k[b>>2]=p;k[b+4>>2]=k[h>>2];k[b+8>>2]=k[j>>2];k[b+12>>2]=k[g>>2];g=b+16|0;k[g>>2]=k[e>>2];k[g+4>>2]=k[e+4>>2];k[g+8>>2]=k[e+8>>2];k[g+12>>2]=k[e+12>>2];g=b+32|0;k[Q>>2]=g}else{Ge(ga,ia);g=k[Q>>2]|0}b=k[ga>>2]|0;e=g-b|0;if((e|0)>32?($=((e>>5)+-2|0)/2|0,aa=b,ba=aa+($<<5)|0,da=g,ea=da+-32|0,fa=k[ea>>2]|0,(k[ba>>2]|0)>>>0>>0):0){h=k[da+-28>>2]|0;j=k[da+-24>>2]|0;l=k[da+-20>>2]|0;e=da+-16|0;k[ja>>2]=k[e>>2];k[ja+4>>2]=k[e+4>>2];k[ja+8>>2]=k[e+8>>2];k[ja+12>>2]=k[e+12>>2];e=$;b=ea;g=ba;while(1){k[b>>2]=k[g>>2];k[b+4>>2]=k[g+4>>2];k[b+8>>2]=k[g+8>>2];k[b+12>>2]=k[g+12>>2];k[b+16>>2]=k[g+16>>2];k[b+20>>2]=k[g+20>>2];k[b+24>>2]=k[g+24>>2];k[b+28>>2]=k[g+28>>2];if(!e)break;e=(e+-1|0)/2|0;b=aa+(e<<5)|0;if((k[b>>2]|0)>>>0>=fa>>>0)break;else{la=g;g=b;b=la}}k[g>>2]=fa;k[g+4>>2]=h;k[g+8>>2]=j;k[g+12>>2]=l;la=g+16|0;k[la>>2]=k[ja>>2];k[la+4>>2]=k[ja+4>>2];k[la+8>>2]=k[ja+8>>2];k[la+12>>2]=k[ja+12>>2]}}}while(0);g=7}if((g|0)==16)Ka(13307,13345,231,13415);else if((g|0)==21)Ka(13428,13452,48,13480);else if((g|0)==23)Ka(13509,13452,49,13480);else if((g|0)==62){if(!b){r=ka;return}gl(b);r=ka;return}}function fb(a,b,c,d,e,f){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;f=f|0;var g=0,h=0,i=0,j=0,l=0,m=0,n=0,o=0,p=0,q=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,B=0,C=0,D=0,E=0,F=0,G=0,H=0,I=0,J=0,K=0,L=0,M=0,N=0,O=0,P=0,Q=0,R=0,S=0,T=0,U=0,V=0,W=0,X=0,Y=0,Z=0,_=0,$=0,aa=0,ba=0,da=0,ea=0,fa=0,ga=0,ha=0,ia=0,ja=0,ka=0;ja=r;r=r+128|0;ia=ja;n=ja+88|0;fa=ja+72|0;T=ja+60|0;ga=ja+48|0;ha=ja+16|0;k[n>>2]=b;k[n+4>>2]=k[c>>2];R=c+4|0;k[n+8>>2]=k[R>>2];S=c+8|0;k[n+12>>2]=k[S>>2];P=n+16|0;k[P>>2]=k[d>>2];k[P+4>>2]=k[d+4>>2];k[P+8>>2]=k[d+8>>2];k[n+28>>2]=e;k[fa>>2]=0;P=fa+4|0;k[P>>2]=0;k[fa+8>>2]=0;Q=fa+8|0;Ge(fa,n);b=k[P>>2]|0;n=k[fa>>2]|0;e=b-n|0;if((e|0)>32){g=((e>>5)+-2|0)/2|0;e=n+(g<<5)|0;h=b+-32|0;i=k[h>>2]|0;if((k[e>>2]|0)>>>0>>0){j=k[b+-28>>2]|0;l=k[b+-24>>2]|0;m=k[b+-20>>2]|0;b=b+-16|0;k[ia>>2]=k[b>>2];k[ia+4>>2]=k[b+4>>2];k[ia+8>>2]=k[b+8>>2];k[ia+12>>2]=k[b+12>>2];b=h;while(1){k[b>>2]=k[e>>2];k[b+4>>2]=k[e+4>>2];k[b+8>>2]=k[e+8>>2];k[b+12>>2]=k[e+12>>2];k[b+16>>2]=k[e+16>>2];k[b+20>>2]=k[e+20>>2];k[b+24>>2]=k[e+24>>2];k[b+28>>2]=k[e+28>>2];if(!g)break;g=(g+-1|0)/2|0;b=n+(g<<5)|0;if((k[b>>2]|0)>>>0>=i>>>0)break;else{O=e;e=b;b=O}}k[e>>2]=i;k[e+4>>2]=j;k[e+8>>2]=l;k[e+12>>2]=m;g=e+16|0;k[g>>2]=k[ia>>2];k[g+4>>2]=k[ia+4>>2];k[g+8>>2]=k[ia+8>>2];k[g+12>>2]=k[ia+12>>2];g=7}else g=7}else e=n;a:while(1){if((g|0)==7){e=k[fa>>2]|0;b=k[P>>2]|0}if((e|0)==(b|0)){g=63;break}O=k[e>>2]|0;b=k[e+4>>2]|0;n=k[e+8>>2]|0;m=k[e+12>>2]|0;s=e+16|0;k[T>>2]=k[s>>2];k[T+4>>2]=k[s+4>>2];k[T+8>>2]=k[s+8>>2];s=k[e+28>>2]|0;ld(fa);k[c>>2]=b;k[R>>2]=n;k[S>>2]=m;k[d>>2]=k[T>>2];k[d+4>>2]=k[T+4>>2];k[d+8>>2]=k[T+8>>2];k[ia>>2]=k[T>>2];k[ia+4>>2]=k[T+4>>2];k[ia+8>>2]=k[T+8>>2];s=Ag(a,O,c,ia,s)|0;m=d+(s<<2)|0;n=k[m>>2]|0;b=k[a>>2]|0;N=b-n|0;b:do if(!N){if((O|0)>0){e=k[f>>2]|0;g=e+4|0;h=e+8|0;b=0;do{i=k[g>>2]|0;if((i|0)==(k[h>>2]|0))yf(e,c);else{k[i>>2]=k[c>>2];k[i+4>>2]=k[R>>2];k[i+8>>2]=k[S>>2];k[g>>2]=i+12}b=b+1|0}while((b|0)<(O|0))}}else{if(!O){g=17;break a}if(O>>>0<3){u=(s|0)==2?0:s+1|0;p=(u|0)==2?0:u+1|0;M=b-(k[d+(u<<2)>>2]|0)|0;C=b-(k[d+(p<<2)>>2]|0)|0;D=a+816|0;E=a+812|0;B=k[f>>2]|0;F=B+4|0;G=B+8|0;H=ia+4|0;I=ia+8|0;J=ia+(s<<2)|0;K=(N|0)<33;L=(N|0)>0;z=c+(s<<2)|0;A=(M|0)==0;j=ia+(u<<2)|0;m=c+(u<<2)|0;n=(C|0)==0;l=ia+(p<<2)|0;o=c+(p<<2)|0;p=ia+(p<<2)|0;q=(C|0)<33;s=(C|0)>0;t=32-C|0;u=ia+(u<<2)|0;v=(M|0)<33;w=(M|0)>0;x=32-M|0;y=32-N|0;i=0;while(1){k[ia>>2]=0;k[ia+4>>2]=0;k[ia+8>>2]=0;if(!K){g=23;break a}if(!L){g=25;break a}g=k[D>>2]|0;b=32-g|0;h=k[E>>2]|0;e=k[h>>2]<>>y;k[J>>2]=b;g=g+N|0;k[D>>2]=g;if((g|0)==32){k[E>>2]=h+4;k[D>>2]=0}}else{ka=N-b|0;k[D>>2]=ka;g=h+4|0;k[E>>2]=g;h=32-ka|0;b=(k[g>>2]|0)>>>h|e>>>(h-b|0);k[J>>2]=b}k[J>>2]=b|k[z>>2];do if(!A){if(!v){g=23;break a}if(!w){g=25;break a}g=k[D>>2]|0;b=32-g|0;h=k[E>>2]|0;e=k[h>>2]<(b|0)){ka=M-b|0;k[D>>2]=ka;h=h+4|0;k[E>>2]=h;ka=32-ka|0;b=(k[h>>2]|0)>>>ka|e>>>(ka-b|0);k[u>>2]=b;e=u;break}b=e>>>x;k[u>>2]=b;ka=g+M|0;k[D>>2]=ka;if((ka|0)==32){k[E>>2]=h+4;k[D>>2]=0;e=u}else e=u}else{e=j;b=k[j>>2]|0}while(0);k[e>>2]=b|k[m>>2];do if(!n){if(!q){g=23;break a}if(!s){g=25;break a}g=k[D>>2]|0;b=32-g|0;h=k[E>>2]|0;e=k[h>>2]<(b|0)){ka=C-b|0;k[D>>2]=ka;h=h+4|0;k[E>>2]=h;ka=32-ka|0;b=(k[h>>2]|0)>>>ka|e>>>(ka-b|0);k[p>>2]=b;e=p;break}b=e>>>t;k[p>>2]=b;ka=g+C|0;k[D>>2]=ka;if((ka|0)==32){k[E>>2]=h+4;k[D>>2]=0;e=p}else e=p}else{e=l;b=k[l>>2]|0}while(0);k[e>>2]=b|k[o>>2];b=k[F>>2]|0;if((b|0)==(k[G>>2]|0))yf(B,ia);else{k[b>>2]=k[ia>>2];k[b+4>>2]=k[H>>2];k[b+8>>2]=k[I>>2];k[F>>2]=b+12}i=i+1|0;if(i>>>0>=O>>>0)break b}}k[ga>>2]=k[c>>2];p=ga+4|0;k[p>>2]=k[R>>2];q=ga+8|0;k[q>>2]=k[S>>2];g=ga+(s<<2)|0;k[g>>2]=(k[g>>2]|0)+(1<>>1)-b|0;h=O-j|0;if((j|0)==(h|0)){l=j;o=j}else{b=a+856|0;ka=k[b>>2]|0;e=a+852|0;g=k[e>>2]|0;i=(k[g>>2]&1<<31-ka|0)!=0;ka=ka+1|0;k[b>>2]=ka;if((ka|0)==32){k[e>>2]=g+4;k[b>>2]=0}l=i?j:h;o=i?h:j}k[m>>2]=n+1;if(l|0){k[ha>>2]=l;e=ha+4|0;k[e>>2]=k[c>>2];g=ha+8|0;k[g>>2]=k[R>>2];h=ha+12|0;k[h>>2]=k[S>>2];b=ha+16|0;k[b>>2]=k[d>>2];k[b+4>>2]=k[d+4>>2];k[b+8>>2]=k[d+8>>2];k[ha+28>>2]=s;i=k[P>>2]|0;if(i>>>0<(k[Q>>2]|0)>>>0){k[i>>2]=l;k[i+4>>2]=k[e>>2];k[i+8>>2]=k[g>>2];k[i+12>>2]=k[h>>2];g=i+16|0;k[g>>2]=k[b>>2];k[g+4>>2]=k[b+4>>2];k[g+8>>2]=k[b+8>>2];k[g+12>>2]=k[b+12>>2];g=i+32|0;k[P>>2]=g}else{Ge(fa,ha);g=k[P>>2]|0}b=k[fa>>2]|0;e=g-b|0;if((e|0)>32?(U=((e>>5)+-2|0)/2|0,V=b,W=V+(U<<5)|0,X=g,Y=X+-32|0,Z=k[Y>>2]|0,(k[W>>2]|0)>>>0>>0):0){h=k[X+-28>>2]|0;i=k[X+-24>>2]|0;j=k[X+-20>>2]|0;e=X+-16|0;k[ia>>2]=k[e>>2];k[ia+4>>2]=k[e+4>>2];k[ia+8>>2]=k[e+8>>2];k[ia+12>>2]=k[e+12>>2];e=U;b=Y;g=W;while(1){k[b>>2]=k[g>>2];k[b+4>>2]=k[g+4>>2];k[b+8>>2]=k[g+8>>2];k[b+12>>2]=k[g+12>>2];k[b+16>>2]=k[g+16>>2];k[b+20>>2]=k[g+20>>2];k[b+24>>2]=k[g+24>>2];k[b+28>>2]=k[g+28>>2];if(!e)break;e=(e+-1|0)/2|0;b=V+(e<<5)|0;if((k[b>>2]|0)>>>0>=Z>>>0)break;else{ka=g;g=b;b=ka}}k[g>>2]=Z;k[g+4>>2]=h;k[g+8>>2]=i;k[g+12>>2]=j;ka=g+16|0;k[ka>>2]=k[ia>>2];k[ka+4>>2]=k[ia+4>>2];k[ka+8>>2]=k[ia+8>>2];k[ka+12>>2]=k[ia+12>>2]}}if(o|0){k[ha>>2]=o;h=ha+4|0;k[h>>2]=k[ga>>2];i=ha+8|0;k[i>>2]=k[p>>2];g=ha+12|0;k[g>>2]=k[q>>2];e=ha+16|0;k[e>>2]=k[d>>2];k[e+4>>2]=k[d+4>>2];k[e+8>>2]=k[d+8>>2];k[ha+28>>2]=s;b=k[P>>2]|0;if(b>>>0<(k[Q>>2]|0)>>>0){k[b>>2]=o;k[b+4>>2]=k[h>>2];k[b+8>>2]=k[i>>2];k[b+12>>2]=k[g>>2];g=b+16|0;k[g>>2]=k[e>>2];k[g+4>>2]=k[e+4>>2];k[g+8>>2]=k[e+8>>2];k[g+12>>2]=k[e+12>>2];g=b+32|0;k[P>>2]=g}else{Ge(fa,ha);g=k[P>>2]|0}b=k[fa>>2]|0;e=g-b|0;if((e|0)>32?(_=((e>>5)+-2|0)/2|0,$=b,aa=$+(_<<5)|0,ba=g,da=ba+-32|0,ea=k[da>>2]|0,(k[aa>>2]|0)>>>0>>0):0){h=k[ba+-28>>2]|0;i=k[ba+-24>>2]|0;j=k[ba+-20>>2]|0;e=ba+-16|0;k[ia>>2]=k[e>>2];k[ia+4>>2]=k[e+4>>2];k[ia+8>>2]=k[e+8>>2];k[ia+12>>2]=k[e+12>>2];e=_;b=da;g=aa;while(1){k[b>>2]=k[g>>2];k[b+4>>2]=k[g+4>>2];k[b+8>>2]=k[g+8>>2];k[b+12>>2]=k[g+12>>2];k[b+16>>2]=k[g+16>>2];k[b+20>>2]=k[g+20>>2];k[b+24>>2]=k[g+24>>2];k[b+28>>2]=k[g+28>>2];if(!e)break;e=(e+-1|0)/2|0;b=$+(e<<5)|0;if((k[b>>2]|0)>>>0>=ea>>>0)break;else{ka=g;g=b;b=ka}}k[g>>2]=ea;k[g+4>>2]=h;k[g+8>>2]=i;k[g+12>>2]=j;ka=g+16|0;k[ka>>2]=k[ia>>2];k[ka+4>>2]=k[ia+4>>2];k[ka+8>>2]=k[ia+8>>2];k[ka+12>>2]=k[ia+12>>2]}}}while(0);g=7}if((g|0)==17)Ka(13307,13345,231,13415);else if((g|0)==23)Ka(13428,13452,48,13480);else if((g|0)==25)Ka(13509,13452,49,13480);else if((g|0)==63){if(!b){r=ja;return}gl(b);r=ja;return}}function gb(a,b,c,d,e,f){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;f=f|0;var g=0,h=0,j=0,m=0,n=0,o=0,p=0,q=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,B=0,C=0,D=0,E=0,F=0,G=0,H=0,I=0,J=0,K=0,L=0,M=0,N=0,O=0,P=0,Q=0,R=0,S=0,T=0,U=0,V=0,W=0,X=0,Y=0,Z=0,_=0,aa=0,ba=0,ca=0;ca=r;r=r+112|0;N=ca+100|0;M=ca+96|0;ba=ca+48|0;aa=ca+32|0;S=ca+104|0;T=ca+8|0;O=ca+4|0;P=ca;W=a+8|0;k[W>>2]=e;Q=k[a+24>>2]|0;R=k[a+28>>2]|0;d=ba;f=d+48|0;do{k[d>>2]=0;d=d+4|0}while((d|0)<(f|0));if(!e){d=0;f=0}else{eg(ba,e);d=k[ba+12>>2]|0;f=k[ba+16>>2]|0}g=ba+16|0;h=f-d>>2;if(h>>>0>=e>>>0){if(h>>>0>e>>>0?(j=d+(e<<2)|0,(f|0)!=(j|0)):0)k[g>>2]=f+(~((f+-4-j|0)>>>2)<<2)}else eg(ba+12|0,e-h|0);d=ba+24|0;f=ba+28|0;j=k[f>>2]|0;h=k[d>>2]|0;g=j-h>>2;if(g>>>0>=e>>>0){if(g>>>0>e>>>0?(m=h+(e<<2)|0,(j|0)!=(m|0)):0)k[f>>2]=j+(~((j+-4-m|0)>>>2)<<2)}else eg(d,e-g|0);d=ba+36|0;f=ba+40|0;j=k[f>>2]|0;h=k[d>>2]|0;g=j-h>>2;if(g>>>0>=e>>>0){if(g>>>0>e>>>0?(n=h+(e<<2)|0,(j|0)!=(n|0)):0)k[f>>2]=j+(~((j+-4-n|0)>>>2)<<2)}else eg(d,e-g|0);Ih(aa,e);E=a+32|0;h=k[E>>2]|0;g=k[h+4>>2]|0;f=k[h>>2]|0;d=g-f|0;a:do if((d|0)>4){A=Q+64|0;B=Q+28|0;C=(e|0)>0;D=T+4|0;F=T+8|0;G=T+12|0;H=T+12|0;I=T+16|0;J=aa+4|0;K=S+1|0;L=e<<2;v=d>>2;d=h;b:while(1){z=v+-1|0;if(g-f>>2>>>0<=z>>>0){_=8;break}q=k[f+(z<<2)>>2]|0;p=q+((q|0)<0?0:((q>>>0)%3|0|0)==0?2:-1)|0;s=p>>>5;t=1<<(p&31);u=(p|0)<0;o=1;d=0;f=q;c:while(1){do{if((f|0)<=-1){x=d;break c}h=k[ba+(d*12|0)>>2]|0;if(((k[(k[Q>>2]|0)+(f>>>5<<2)>>2]&1<<(f&31)|0)==0?(V=k[(k[(k[A>>2]|0)+12>>2]|0)+(f<<2)>>2]|0,(V|0)>=0):0)?(Z=k[B>>2]|0,y=k[R>>2]|0,X=k[y+(k[Z+(V<<2)>>2]<<2)>>2]|0,Y=V+1|0,Y=k[y+(k[Z+((((Y|0)%3|0|0)==0?V+-2|0:Y)<<2)>>2]<<2)>>2]|0,Z=k[y+(k[Z+((((V>>>0)%3|0|0)==0?2:-1)+V<<2)>>2]<<2)>>2]|0,(X|0)<(z|0)&(Y|0)<(z|0)&(Z|0)<(z|0)):0){j=$(X,e)|0;m=$(Y,e)|0;n=$(Z,e)|0;if(C){g=0;do{k[h+(g<<2)>>2]=(k[b+(g+n<<2)>>2]|0)+(k[b+(g+m<<2)>>2]|0)-(k[b+(g+j<<2)>>2]|0);g=g+1|0}while((g|0)!=(e|0))}d=d+1|0;if((d|0)==4){x=4;break c}}do if(o){g=f+1|0;f=((g|0)%3|0|0)==0?f+-2|0:g;g=k[Q>>2]|0;if(!(k[g+(f>>>5<<2)>>2]&1<<(f&31))){if((f|0)>=0){f=k[(k[(k[A>>2]|0)+12>>2]|0)+(f<<2)>>2]|0;h=f+1|0;if((f|0)>=0)f=((h|0)%3|0|0)==0?f+-2|0:h}}else f=-1073741824}else{f=(((f>>>0)%3|0|0)==0?2:-1)+f|0;g=k[Q>>2]|0;if(!(k[g+(f>>>5<<2)>>2]&1<<(f&31))){if((f|0)>=0){f=k[(k[(k[A>>2]|0)+12>>2]|0)+(f<<2)>>2]|0;if((f|0)>=0)if(!((f>>>0)%3|0)){f=f+2|0;break}else{f=f+-1|0;break}}}else f=-1073741824}while(0);if((f|0)==(q|0)){x=d;break c}}while(!(o&(f|0)<0));f=(t&k[g+(s<<2)>>2]|0)!=0;if(f|u){o=0;f=f?-1073741824:p;continue}f=k[(k[(k[A>>2]|0)+12>>2]|0)+(p<<2)>>2]|0;if((f|0)<0){o=0;continue}if(!((f>>>0)%3|0)){o=0;f=f+2|0;continue}else{o=0;f=f+-1|0;continue}}y=$(z,e)|0;k[T>>2]=2147483647;i[D>>0]=0;k[F>>2]=0;k[F+4>>2]=0;k[F+8>>2]=0;k[F+12>>2]=0;g=$(v+-2|0,e)|0;if(C){f=0;d=0;do{w=(k[b+(f+y<<2)>>2]|0)-(k[b+(f+g<<2)>>2]|0)|0;d=((w|0)>-1?w:0-w|0)+d|0;f=f+1|0}while((f|0)!=(e|0))}else d=0;k[T>>2]=d;i[D>>0]=0;k[F>>2]=0;w=b+(g<<2)|0;Ce(G,w,w+(e<<2)|0);if((x|0)>=1){p=S+x|0;o=p+-1|0;q=(o|0)==(S|0);s=p+-2|0;t=K>>>0>>0;u=o>>>0>S>>>0;v=0;w=1;while(1){v=v+1|0;Ah(S|0,1,x|0)|0;Ah(S|0,0,v|0)|0;d:while(1){if(C){Ah(k[aa>>2]|0,0,L|0)|0;j=k[aa>>2]|0;h=0;d=0;do{if(!(i[S+h>>0]|0)){g=k[ba+(h*12|0)>>2]|0;f=0;do{n=j+(f<<2)|0;k[n>>2]=(k[n>>2]|0)+(k[g+(f<<2)>>2]|0);f=f+1|0}while((f|0)!=(e|0));d=(1<>0]|0))d=(1<>2]|0;g=0;f=0;do{m=h+(g<<2)|0;n=(k[m>>2]|0)/(w|0)|0;k[m>>2]=n;n=n-(k[b+(g+y<<2)>>2]|0)|0;f=((n|0)>-1?n:0-n|0)+f|0;g=g+1|0}while((g|0)!=(e|0))}else f=0;if((f|0)<(k[T>>2]|0)){k[T>>2]=f;i[D>>0]=d;k[F>>2]=w;k[O>>2]=k[aa>>2];k[P>>2]=k[J>>2];k[M>>2]=k[O>>2];k[N>>2]=k[P>>2];ze(G,M,N)}if(q)break;U=i[o>>0]|0;j=-1;n=U;while(1){d=j+-1|0;m=p+d|0;h=n;n=i[m>>0]|0;if((n&255)<(h&255))break;if((m|0)==(S|0)){_=65;break d}else j=d}d=p+j|0;if((n&255)<(U&255)){g=o;f=U}else{f=p;h=o;while(1){f=i[f+-2>>0]|0;g=h+-1|0;if((n&255)<(f&255))break;else{f=h;h=g}}}i[m>>0]=f;i[g>>0]=n;if((j|0)<-1)f=o;else continue;while(1){n=i[d>>0]|0;i[d>>0]=i[f>>0]|0;i[f>>0]=n;d=d+1|0;f=f+-1|0;if(d>>>0>=f>>>0)continue d}}if(((_|0)==65?(_=0,u):0)?(n=i[S>>0]|0,i[S>>0]=U,i[o>>0]=n,t):0){d=s;f=K;do{n=i[f>>0]|0;i[f>>0]=i[d>>0]|0;i[d>>0]=n;f=f+1|0;d=d+-1|0}while(f>>>0>>0)}if((w|0)>=(x|0))break;else w=w+1|0}if((x|0)>0){n=x+-1|0;j=a+36+(n*12|0)|0;m=a+36+(n*12|0)+4|0;n=a+36+(n*12|0)+8|0;h=0;do{d=k[m>>2]|0;f=k[n>>2]|0;g=(d|0)==(f<<5|0);if(!(l[D>>0]&1<>>0<1073741823?(w>>>0>>0?d:w):2147483647);d=k[m>>2]|0}k[m>>2]=d+1;w=(k[j>>2]|0)+(d>>>5<<2)|0;k[w>>2]=k[w>>2]|1<<(d&31)}else{if(g){if((d+1|0)<0){_=78;break b}w=f<<6;d=d+32&-32;Wf(j,f<<5>>>0<1073741823?(w>>>0>>0?d:w):2147483647);d=k[m>>2]|0}k[m>>2]=d+1;w=(k[j>>2]|0)+(d>>>5<<2)|0;k[w>>2]=k[w>>2]&~(1<<(d&31))}h=h+1|0}while((h|0)<(x|0))}}ue(W,b+(y<<2)|0,k[G>>2]|0,c,y);d=k[H>>2]|0;f=d;if(d|0){g=k[I>>2]|0;if((g|0)!=(d|0))k[I>>2]=g+(~((g+-4-f|0)>>>2)<<2);gl(d)}if((z|0)<=1)break a;d=k[E>>2]|0;v=z;f=k[d>>2]|0;g=k[d+4>>2]|0}if((_|0)==8)lk(d);else if((_|0)==73)mk(j);else if((_|0)==78)mk(j)}while(0);f=k[ba>>2]|0;if((e|0)>0){d=0;do{k[f+(d<<2)>>2]=0;d=d+1|0}while((d|0)!=(e|0))}ue(W,b,f,c,0);g=k[aa>>2]|0;h=g;if(g|0){d=aa+4|0;f=k[d>>2]|0;if((f|0)!=(g|0))k[d>>2]=f+(~((f+-4-h|0)>>>2)<<2);gl(g)}d=k[ba+36>>2]|0;f=d;if(d|0){g=ba+40|0;h=k[g>>2]|0;if((h|0)!=(d|0))k[g>>2]=h+(~((h+-4-f|0)>>>2)<<2);gl(d)}d=k[ba+24>>2]|0;f=d;if(d|0){g=ba+28|0;h=k[g>>2]|0;if((h|0)!=(d|0))k[g>>2]=h+(~((h+-4-f|0)>>>2)<<2);gl(d)}d=k[ba+12>>2]|0;f=d;if(d|0){g=ba+16|0;h=k[g>>2]|0;if((h|0)!=(d|0))k[g>>2]=h+(~((h+-4-f|0)>>>2)<<2);gl(d)}g=k[ba>>2]|0;if(!g){r=ca;return 1}d=ba+4|0;f=k[d>>2]|0;if((f|0)!=(g|0))k[d>>2]=f+(~((f+-4-g|0)>>>2)<<2);gl(g);r=ca;return 1}function hb(a,b,c,d,e,f){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;f=f|0;var g=0,h=0,j=0,m=0,n=0,o=0,p=0,q=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,B=0,C=0,D=0,E=0,F=0,G=0,H=0,I=0,J=0,K=0,L=0,M=0,N=0,O=0,P=0,Q=0,R=0,S=0,T=0,U=0,V=0,W=0,X=0,Y=0,Z=0,_=0,aa=0,ba=0,ca=0;ca=r;r=r+112|0;N=ca+100|0;M=ca+96|0;ba=ca+48|0;aa=ca+32|0;S=ca+104|0;T=ca+8|0;O=ca+4|0;P=ca;W=a+8|0;k[W>>2]=e;Q=k[a+24>>2]|0;R=k[a+28>>2]|0;d=ba;f=d+48|0;do{k[d>>2]=0;d=d+4|0}while((d|0)<(f|0));if(!e){d=0;f=0}else{eg(ba,e);d=k[ba+12>>2]|0;f=k[ba+16>>2]|0}g=ba+16|0;h=f-d>>2;if(h>>>0>=e>>>0){if(h>>>0>e>>>0?(j=d+(e<<2)|0,(f|0)!=(j|0)):0)k[g>>2]=f+(~((f+-4-j|0)>>>2)<<2)}else eg(ba+12|0,e-h|0);d=ba+24|0;f=ba+28|0;j=k[f>>2]|0;h=k[d>>2]|0;g=j-h>>2;if(g>>>0>=e>>>0){if(g>>>0>e>>>0?(m=h+(e<<2)|0,(j|0)!=(m|0)):0)k[f>>2]=j+(~((j+-4-m|0)>>>2)<<2)}else eg(d,e-g|0);d=ba+36|0;f=ba+40|0;j=k[f>>2]|0;h=k[d>>2]|0;g=j-h>>2;if(g>>>0>=e>>>0){if(g>>>0>e>>>0?(n=h+(e<<2)|0,(j|0)!=(n|0)):0)k[f>>2]=j+(~((j+-4-n|0)>>>2)<<2)}else eg(d,e-g|0);Ih(aa,e);E=a+32|0;h=k[E>>2]|0;g=k[h+4>>2]|0;f=k[h>>2]|0;d=g-f|0;a:do if((d|0)>4){A=Q+64|0;B=Q+28|0;C=(e|0)>0;D=T+4|0;F=T+8|0;G=T+12|0;H=T+12|0;I=T+16|0;J=aa+4|0;K=S+1|0;L=e<<2;v=d>>2;d=h;b:while(1){z=v+-1|0;if(g-f>>2>>>0<=z>>>0){_=8;break}q=k[f+(z<<2)>>2]|0;p=q+((q|0)<0?0:((q>>>0)%3|0|0)==0?2:-1)|0;s=p>>>5;t=1<<(p&31);u=(p|0)<0;o=1;d=0;f=q;c:while(1){do{if((f|0)<=-1){x=d;break c}h=k[ba+(d*12|0)>>2]|0;if(((k[(k[Q>>2]|0)+(f>>>5<<2)>>2]&1<<(f&31)|0)==0?(V=k[(k[(k[A>>2]|0)+12>>2]|0)+(f<<2)>>2]|0,(V|0)>=0):0)?(Z=k[B>>2]|0,y=k[R>>2]|0,X=k[y+(k[Z+(V<<2)>>2]<<2)>>2]|0,Y=V+1|0,Y=k[y+(k[Z+((((Y|0)%3|0|0)==0?V+-2|0:Y)<<2)>>2]<<2)>>2]|0,Z=k[y+(k[Z+((((V>>>0)%3|0|0)==0?2:-1)+V<<2)>>2]<<2)>>2]|0,(X|0)<(z|0)&(Y|0)<(z|0)&(Z|0)<(z|0)):0){j=$(X,e)|0;m=$(Y,e)|0;n=$(Z,e)|0;if(C){g=0;do{k[h+(g<<2)>>2]=(k[b+(g+n<<2)>>2]|0)+(k[b+(g+m<<2)>>2]|0)-(k[b+(g+j<<2)>>2]|0);g=g+1|0}while((g|0)!=(e|0))}d=d+1|0;if((d|0)==4){x=4;break c}}do if(o){g=f+1|0;f=((g|0)%3|0|0)==0?f+-2|0:g;g=k[Q>>2]|0;if(!(k[g+(f>>>5<<2)>>2]&1<<(f&31))){if((f|0)>=0){f=k[(k[(k[A>>2]|0)+12>>2]|0)+(f<<2)>>2]|0;h=f+1|0;if((f|0)>=0)f=((h|0)%3|0|0)==0?f+-2|0:h}}else f=-1073741824}else{f=(((f>>>0)%3|0|0)==0?2:-1)+f|0;g=k[Q>>2]|0;if(!(k[g+(f>>>5<<2)>>2]&1<<(f&31))){if((f|0)>=0){f=k[(k[(k[A>>2]|0)+12>>2]|0)+(f<<2)>>2]|0;if((f|0)>=0)if(!((f>>>0)%3|0)){f=f+2|0;break}else{f=f+-1|0;break}}}else f=-1073741824}while(0);if((f|0)==(q|0)){x=d;break c}}while(!(o&(f|0)<0));f=(t&k[g+(s<<2)>>2]|0)!=0;if(f|u){o=0;f=f?-1073741824:p;continue}f=k[(k[(k[A>>2]|0)+12>>2]|0)+(p<<2)>>2]|0;if((f|0)<0){o=0;continue}if(!((f>>>0)%3|0)){o=0;f=f+2|0;continue}else{o=0;f=f+-1|0;continue}}y=$(z,e)|0;k[T>>2]=2147483647;i[D>>0]=0;k[F>>2]=0;k[F+4>>2]=0;k[F+8>>2]=0;k[F+12>>2]=0;g=$(v+-2|0,e)|0;if(C){f=0;d=0;do{w=(k[b+(f+y<<2)>>2]|0)-(k[b+(f+g<<2)>>2]|0)|0;d=((w|0)>-1?w:0-w|0)+d|0;f=f+1|0}while((f|0)!=(e|0))}else d=0;k[T>>2]=d;i[D>>0]=0;k[F>>2]=0;w=b+(g<<2)|0;Ce(G,w,w+(e<<2)|0);if((x|0)>=1){p=S+x|0;o=p+-1|0;q=(o|0)==(S|0);s=p+-2|0;t=K>>>0>>0;u=o>>>0>S>>>0;v=0;w=1;while(1){v=v+1|0;Ah(S|0,1,x|0)|0;Ah(S|0,0,v|0)|0;d:while(1){if(C){Ah(k[aa>>2]|0,0,L|0)|0;j=k[aa>>2]|0;h=0;d=0;do{if(!(i[S+h>>0]|0)){g=k[ba+(h*12|0)>>2]|0;f=0;do{n=j+(f<<2)|0;k[n>>2]=(k[n>>2]|0)+(k[g+(f<<2)>>2]|0);f=f+1|0}while((f|0)!=(e|0));d=(1<>0]|0))d=(1<>2]|0;g=0;f=0;do{m=h+(g<<2)|0;n=(k[m>>2]|0)/(w|0)|0;k[m>>2]=n;n=n-(k[b+(g+y<<2)>>2]|0)|0;f=((n|0)>-1?n:0-n|0)+f|0;g=g+1|0}while((g|0)!=(e|0))}else f=0;if((f|0)<(k[T>>2]|0)){k[T>>2]=f;i[D>>0]=d;k[F>>2]=w;k[O>>2]=k[aa>>2];k[P>>2]=k[J>>2];k[M>>2]=k[O>>2];k[N>>2]=k[P>>2];ze(G,M,N)}if(q)break;U=i[o>>0]|0;j=-1;n=U;while(1){d=j+-1|0;m=p+d|0;h=n;n=i[m>>0]|0;if((n&255)<(h&255))break;if((m|0)==(S|0)){_=65;break d}else j=d}d=p+j|0;if((n&255)<(U&255)){g=o;f=U}else{f=p;h=o;while(1){f=i[f+-2>>0]|0;g=h+-1|0;if((n&255)<(f&255))break;else{f=h;h=g}}}i[m>>0]=f;i[g>>0]=n;if((j|0)<-1)f=o;else continue;while(1){n=i[d>>0]|0;i[d>>0]=i[f>>0]|0;i[f>>0]=n;d=d+1|0;f=f+-1|0;if(d>>>0>=f>>>0)continue d}}if(((_|0)==65?(_=0,u):0)?(n=i[S>>0]|0,i[S>>0]=U,i[o>>0]=n,t):0){d=s;f=K;do{n=i[f>>0]|0;i[f>>0]=i[d>>0]|0;i[d>>0]=n;f=f+1|0;d=d+-1|0}while(f>>>0>>0)}if((w|0)>=(x|0))break;else w=w+1|0}if((x|0)>0){n=x+-1|0;j=a+36+(n*12|0)|0;m=a+36+(n*12|0)+4|0;n=a+36+(n*12|0)+8|0;h=0;do{d=k[m>>2]|0;f=k[n>>2]|0;g=(d|0)==(f<<5|0);if(!(l[D>>0]&1<>>0<1073741823?(w>>>0>>0?d:w):2147483647);d=k[m>>2]|0}k[m>>2]=d+1;w=(k[j>>2]|0)+(d>>>5<<2)|0;k[w>>2]=k[w>>2]|1<<(d&31)}else{if(g){if((d+1|0)<0){_=78;break b}w=f<<6;d=d+32&-32;Wf(j,f<<5>>>0<1073741823?(w>>>0>>0?d:w):2147483647);d=k[m>>2]|0}k[m>>2]=d+1;w=(k[j>>2]|0)+(d>>>5<<2)|0;k[w>>2]=k[w>>2]&~(1<<(d&31))}h=h+1|0}while((h|0)<(x|0))}}we(W,b+(y<<2)|0,k[G>>2]|0,c,y);d=k[H>>2]|0;f=d;if(d|0){g=k[I>>2]|0;if((g|0)!=(d|0))k[I>>2]=g+(~((g+-4-f|0)>>>2)<<2);gl(d)}if((z|0)<=1)break a;d=k[E>>2]|0;v=z;f=k[d>>2]|0;g=k[d+4>>2]|0}if((_|0)==8)lk(d);else if((_|0)==73)mk(j);else if((_|0)==78)mk(j)}while(0);f=k[ba>>2]|0;if((e|0)>0){d=0;do{k[f+(d<<2)>>2]=0;d=d+1|0}while((d|0)!=(e|0))}we(W,b,f,c,0);g=k[aa>>2]|0;h=g;if(g|0){d=aa+4|0;f=k[d>>2]|0;if((f|0)!=(g|0))k[d>>2]=f+(~((f+-4-h|0)>>>2)<<2);gl(g)}d=k[ba+36>>2]|0;f=d;if(d|0){g=ba+40|0;h=k[g>>2]|0;if((h|0)!=(d|0))k[g>>2]=h+(~((h+-4-f|0)>>>2)<<2);gl(d)}d=k[ba+24>>2]|0;f=d;if(d|0){g=ba+28|0;h=k[g>>2]|0;if((h|0)!=(d|0))k[g>>2]=h+(~((h+-4-f|0)>>>2)<<2);gl(d)}d=k[ba+12>>2]|0;f=d;if(d|0){g=ba+16|0;h=k[g>>2]|0;if((h|0)!=(d|0))k[g>>2]=h+(~((h+-4-f|0)>>>2)<<2);gl(d)}g=k[ba>>2]|0;if(!g){r=ca;return 1}d=ba+4|0;f=k[d>>2]|0;if((f|0)!=(g|0))k[d>>2]=f+(~((f+-4-g|0)>>>2)<<2);gl(g);r=ca;return 1}function ib(a,b,c,d,e,f){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;f=f|0;var g=0,h=0,j=0,m=0,n=0,o=0,p=0,q=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,B=0,C=0,D=0,E=0,F=0,G=0,H=0,I=0,J=0,K=0,L=0,M=0,N=0,O=0,P=0,Q=0,R=0,S=0,T=0,U=0,V=0,W=0,X=0,Y=0,Z=0;Z=r;r=r+112|0;N=Z+100|0;M=Z+96|0;Y=Z+48|0;X=Z+32|0;S=Z+104|0;T=Z+8|0;O=Z+4|0;P=Z;V=a+8|0;k[V>>2]=e;Q=k[a+24>>2]|0;R=k[a+28>>2]|0;d=Y;f=d+48|0;do{k[d>>2]=0;d=d+4|0}while((d|0)<(f|0));if(!e){d=0;f=0}else{eg(Y,e);d=k[Y+12>>2]|0;f=k[Y+16>>2]|0}g=Y+16|0;h=f-d>>2;if(h>>>0>=e>>>0){if(h>>>0>e>>>0?(j=d+(e<<2)|0,(f|0)!=(j|0)):0)k[g>>2]=f+(~((f+-4-j|0)>>>2)<<2)}else eg(Y+12|0,e-h|0);d=Y+24|0;f=Y+28|0;j=k[f>>2]|0;h=k[d>>2]|0;g=j-h>>2;if(g>>>0>=e>>>0){if(g>>>0>e>>>0?(m=h+(e<<2)|0,(j|0)!=(m|0)):0)k[f>>2]=j+(~((j+-4-m|0)>>>2)<<2)}else eg(d,e-g|0);d=Y+36|0;f=Y+40|0;j=k[f>>2]|0;h=k[d>>2]|0;g=j-h>>2;if(g>>>0>=e>>>0){if(g>>>0>e>>>0?(n=h+(e<<2)|0,(j|0)!=(n|0)):0)k[f>>2]=j+(~((j+-4-n|0)>>>2)<<2)}else eg(d,e-g|0);Ih(X,e);B=a+32|0;h=k[B>>2]|0;g=k[h+4>>2]|0;f=k[h>>2]|0;d=g-f|0;a:do if((d|0)>4){C=Q+12|0;D=(e|0)>0;E=T+4|0;F=T+8|0;G=T+12|0;H=T+12|0;I=T+16|0;J=X+4|0;K=S+1|0;L=e<<2;y=d>>2;d=h;b:while(1){A=y+-1|0;if(g-f>>2>>>0<=A>>>0){W=8;break}w=k[f+(A<<2)>>2]|0;v=(((w>>>0)%3|0|0)==0?2:-1)+w|0;x=(w|v|0)<0;u=(w|0)<0?w:v;t=1;f=0;d=w;c:while(1){do{if((d|0)<=-1){x=f;break c}q=k[Y+(f*12|0)>>2]|0;s=k[C>>2]|0;h=k[s+(d<<2)>>2]|0;if((h|0)>=0){m=k[Q>>2]|0;j=(h>>>0)%3|0;n=k[R>>2]|0;p=k[n+(k[m+(((h>>>0)/3|0)*12|0)+(j<<2)>>2]<<2)>>2]|0;g=h+1|0;g=((g|0)%3|0|0)==0?h+-2|0:g;if((g|0)<0)g=-1073741824;else g=k[m+(((g>>>0)/3|0)*12|0)+(((g>>>0)%3|0)<<2)>>2]|0;o=k[n+(g<<2)>>2]|0;g=((j|0)==0?2:-1)+h|0;if((g|0)<0)g=-1073741824;else g=k[m+(((g>>>0)/3|0)*12|0)+(((g>>>0)%3|0)<<2)>>2]|0;g=k[n+(g<<2)>>2]|0;if((p|0)<(A|0)&(o|0)<(A|0)&(g|0)<(A|0)){m=$(p,e)|0;j=$(o,e)|0;h=$(g,e)|0;if(D){g=0;do{k[q+(g<<2)>>2]=(k[b+(g+h<<2)>>2]|0)+(k[b+(g+j<<2)>>2]|0)-(k[b+(g+m<<2)>>2]|0);g=g+1|0}while((g|0)!=(e|0))}f=f+1|0;if((f|0)==4){x=4;break c}}}do if(t){z=d+1|0;d=((z|0)%3|0|0)==0?d+-2|0:z;if((d|0)>=0){d=k[s+(d<<2)>>2]|0;g=d+1|0;if((d|0)>=0)d=((g|0)%3|0|0)==0?d+-2|0:g}}else{d=(((d>>>0)%3|0|0)==0?2:-1)+d|0;if((d|0)>=0){d=k[s+(d<<2)>>2]|0;if((d|0)>=0)if(!((d>>>0)%3|0)){d=d+2|0;break}else{d=d+-1|0;break}}}while(0);if((d|0)==(w|0)){x=f;break c}}while(!(t&(d|0)<0));if(x){t=0;d=u;continue}d=k[s+(v<<2)>>2]|0;if((d|0)<0){t=0;continue}if(!((d>>>0)%3|0)){t=0;d=d+2|0;continue}else{t=0;d=d+-1|0;continue}}z=$(A,e)|0;k[T>>2]=2147483647;i[E>>0]=0;k[F>>2]=0;k[F+4>>2]=0;k[F+8>>2]=0;k[F+12>>2]=0;g=$(y+-2|0,e)|0;if(D){f=0;d=0;do{y=(k[b+(f+z<<2)>>2]|0)-(k[b+(f+g<<2)>>2]|0)|0;d=((y|0)>-1?y:0-y|0)+d|0;f=f+1|0}while((f|0)!=(e|0))}else d=0;k[T>>2]=d;i[E>>0]=0;k[F>>2]=0;y=b+(g<<2)|0;Ce(G,y,y+(e<<2)|0);if((x|0)>=1){p=S+x|0;o=p+-1|0;q=(o|0)==(S|0);s=p+-2|0;t=K>>>0>>0;u=o>>>0>S>>>0;v=0;w=1;while(1){v=v+1|0;Ah(S|0,1,x|0)|0;Ah(S|0,0,v|0)|0;d:while(1){if(D){Ah(k[X>>2]|0,0,L|0)|0;j=k[X>>2]|0;h=0;d=0;do{if(!(i[S+h>>0]|0)){g=k[Y+(h*12|0)>>2]|0;f=0;do{y=j+(f<<2)|0;k[y>>2]=(k[y>>2]|0)+(k[g+(f<<2)>>2]|0);f=f+1|0}while((f|0)!=(e|0));d=(1<>0]|0))d=(1<>2]|0;g=0;f=0;do{n=h+(g<<2)|0;y=(k[n>>2]|0)/(w|0)|0;k[n>>2]=y;y=y-(k[b+(g+z<<2)>>2]|0)|0;f=((y|0)>-1?y:0-y|0)+f|0;g=g+1|0}while((g|0)!=(e|0))}else f=0;if((f|0)<(k[T>>2]|0)){k[T>>2]=f;i[E>>0]=d;k[F>>2]=w;k[O>>2]=k[X>>2];k[P>>2]=k[J>>2];k[M>>2]=k[O>>2];k[N>>2]=k[P>>2];ze(G,M,N)}if(q)break;U=i[o>>0]|0;j=-1;n=U;while(1){d=j+-1|0;m=p+d|0;y=n;n=i[m>>0]|0;if((n&255)<(y&255))break;if((m|0)==(S|0)){W=66;break d}else j=d}d=p+j|0;if((n&255)<(U&255)){g=o;f=U}else{f=p;h=o;while(1){f=i[f+-2>>0]|0;g=h+-1|0;if((n&255)<(f&255))break;else{f=h;h=g}}}i[m>>0]=f;i[g>>0]=n;if((j|0)<-1)f=o;else continue;while(1){y=i[d>>0]|0;i[d>>0]=i[f>>0]|0;i[f>>0]=y;d=d+1|0;f=f+-1|0;if(d>>>0>=f>>>0)continue d}}if(((W|0)==66?(W=0,u):0)?(y=i[S>>0]|0,i[S>>0]=U,i[o>>0]=y,t):0){d=s;f=K;do{y=i[f>>0]|0;i[f>>0]=i[d>>0]|0;i[d>>0]=y;f=f+1|0;d=d+-1|0}while(f>>>0>>0)}if((w|0)>=(x|0))break;else w=w+1|0}if((x|0)>0){n=x+-1|0;j=a+36+(n*12|0)|0;m=a+36+(n*12|0)+4|0;n=a+36+(n*12|0)+8|0;h=0;do{d=k[m>>2]|0;f=k[n>>2]|0;g=(d|0)==(f<<5|0);if(!(l[E>>0]&1<>>0<1073741823?(y>>>0>>0?d:y):2147483647);d=k[m>>2]|0}k[m>>2]=d+1;y=(k[j>>2]|0)+(d>>>5<<2)|0;k[y>>2]=k[y>>2]|1<<(d&31)}else{if(g){if((d+1|0)<0){W=79;break b}y=f<<6;d=d+32&-32;Wf(j,f<<5>>>0<1073741823?(y>>>0>>0?d:y):2147483647);d=k[m>>2]|0}k[m>>2]=d+1;y=(k[j>>2]|0)+(d>>>5<<2)|0;k[y>>2]=k[y>>2]&~(1<<(d&31))}h=h+1|0}while((h|0)<(x|0))}}ue(V,b+(z<<2)|0,k[G>>2]|0,c,z);d=k[H>>2]|0;f=d;if(d|0){g=k[I>>2]|0;if((g|0)!=(d|0))k[I>>2]=g+(~((g+-4-f|0)>>>2)<<2);gl(d)}if((A|0)<=1)break a;d=k[B>>2]|0;y=A;f=k[d>>2]|0;g=k[d+4>>2]|0}if((W|0)==8)lk(d);else if((W|0)==74)mk(j);else if((W|0)==79)mk(j)}while(0);f=k[Y>>2]|0;if((e|0)>0){d=0;do{k[f+(d<<2)>>2]=0;d=d+1|0}while((d|0)!=(e|0))}ue(V,b,f,c,0);g=k[X>>2]|0;h=g;if(g|0){d=X+4|0;f=k[d>>2]|0;if((f|0)!=(g|0))k[d>>2]=f+(~((f+-4-h|0)>>>2)<<2);gl(g)}d=k[Y+36>>2]|0;f=d;if(d|0){g=Y+40|0;h=k[g>>2]|0;if((h|0)!=(d|0))k[g>>2]=h+(~((h+-4-f|0)>>>2)<<2);gl(d)}d=k[Y+24>>2]|0;f=d;if(d|0){g=Y+28|0;h=k[g>>2]|0;if((h|0)!=(d|0))k[g>>2]=h+(~((h+-4-f|0)>>>2)<<2);gl(d)}d=k[Y+12>>2]|0;f=d;if(d|0){g=Y+16|0;h=k[g>>2]|0;if((h|0)!=(d|0))k[g>>2]=h+(~((h+-4-f|0)>>>2)<<2);gl(d)}g=k[Y>>2]|0;if(!g){r=Z;return 1}d=Y+4|0;f=k[d>>2]|0;if((f|0)!=(g|0))k[d>>2]=f+(~((f+-4-g|0)>>>2)<<2);gl(g);r=Z;return 1}function jb(a,b,c,d,e,f){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;f=f|0;var g=0,h=0,j=0,m=0,n=0,o=0,p=0,q=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,B=0,C=0,D=0,E=0,F=0,G=0,H=0,I=0,J=0,K=0,L=0,M=0,N=0,O=0,P=0,Q=0,R=0,S=0,T=0,U=0,V=0,W=0,X=0,Y=0,Z=0;Z=r;r=r+112|0;N=Z+100|0;M=Z+96|0;Y=Z+48|0;X=Z+32|0;S=Z+104|0;T=Z+8|0;O=Z+4|0;P=Z;V=a+8|0;k[V>>2]=e;Q=k[a+24>>2]|0;R=k[a+28>>2]|0;d=Y;f=d+48|0;do{k[d>>2]=0;d=d+4|0}while((d|0)<(f|0));if(!e){d=0;f=0}else{eg(Y,e);d=k[Y+12>>2]|0;f=k[Y+16>>2]|0}g=Y+16|0;h=f-d>>2;if(h>>>0>=e>>>0){if(h>>>0>e>>>0?(j=d+(e<<2)|0,(f|0)!=(j|0)):0)k[g>>2]=f+(~((f+-4-j|0)>>>2)<<2)}else eg(Y+12|0,e-h|0);d=Y+24|0;f=Y+28|0;j=k[f>>2]|0;h=k[d>>2]|0;g=j-h>>2;if(g>>>0>=e>>>0){if(g>>>0>e>>>0?(m=h+(e<<2)|0,(j|0)!=(m|0)):0)k[f>>2]=j+(~((j+-4-m|0)>>>2)<<2)}else eg(d,e-g|0);d=Y+36|0;f=Y+40|0;j=k[f>>2]|0;h=k[d>>2]|0;g=j-h>>2;if(g>>>0>=e>>>0){if(g>>>0>e>>>0?(n=h+(e<<2)|0,(j|0)!=(n|0)):0)k[f>>2]=j+(~((j+-4-n|0)>>>2)<<2)}else eg(d,e-g|0);Ih(X,e);B=a+32|0;h=k[B>>2]|0;g=k[h+4>>2]|0;f=k[h>>2]|0;d=g-f|0;a:do if((d|0)>4){C=Q+12|0;D=(e|0)>0;E=T+4|0;F=T+8|0;G=T+12|0;H=T+12|0;I=T+16|0;J=X+4|0;K=S+1|0;L=e<<2;y=d>>2;d=h;b:while(1){A=y+-1|0;if(g-f>>2>>>0<=A>>>0){W=8;break}w=k[f+(A<<2)>>2]|0;v=(((w>>>0)%3|0|0)==0?2:-1)+w|0;x=(w|v|0)<0;u=(w|0)<0?w:v;t=1;f=0;d=w;c:while(1){do{if((d|0)<=-1){x=f;break c}q=k[Y+(f*12|0)>>2]|0;s=k[C>>2]|0;h=k[s+(d<<2)>>2]|0;if((h|0)>=0){m=k[Q>>2]|0;j=(h>>>0)%3|0;n=k[R>>2]|0;p=k[n+(k[m+(((h>>>0)/3|0)*12|0)+(j<<2)>>2]<<2)>>2]|0;g=h+1|0;g=((g|0)%3|0|0)==0?h+-2|0:g;if((g|0)<0)g=-1073741824;else g=k[m+(((g>>>0)/3|0)*12|0)+(((g>>>0)%3|0)<<2)>>2]|0;o=k[n+(g<<2)>>2]|0;g=((j|0)==0?2:-1)+h|0;if((g|0)<0)g=-1073741824;else g=k[m+(((g>>>0)/3|0)*12|0)+(((g>>>0)%3|0)<<2)>>2]|0;g=k[n+(g<<2)>>2]|0;if((p|0)<(A|0)&(o|0)<(A|0)&(g|0)<(A|0)){m=$(p,e)|0;j=$(o,e)|0;h=$(g,e)|0;if(D){g=0;do{k[q+(g<<2)>>2]=(k[b+(g+h<<2)>>2]|0)+(k[b+(g+j<<2)>>2]|0)-(k[b+(g+m<<2)>>2]|0);g=g+1|0}while((g|0)!=(e|0))}f=f+1|0;if((f|0)==4){x=4;break c}}}do if(t){z=d+1|0;d=((z|0)%3|0|0)==0?d+-2|0:z;if((d|0)>=0){d=k[s+(d<<2)>>2]|0;g=d+1|0;if((d|0)>=0)d=((g|0)%3|0|0)==0?d+-2|0:g}}else{d=(((d>>>0)%3|0|0)==0?2:-1)+d|0;if((d|0)>=0){d=k[s+(d<<2)>>2]|0;if((d|0)>=0)if(!((d>>>0)%3|0)){d=d+2|0;break}else{d=d+-1|0;break}}}while(0);if((d|0)==(w|0)){x=f;break c}}while(!(t&(d|0)<0));if(x){t=0;d=u;continue}d=k[s+(v<<2)>>2]|0;if((d|0)<0){t=0;continue}if(!((d>>>0)%3|0)){t=0;d=d+2|0;continue}else{t=0;d=d+-1|0;continue}}z=$(A,e)|0;k[T>>2]=2147483647;i[E>>0]=0;k[F>>2]=0;k[F+4>>2]=0;k[F+8>>2]=0;k[F+12>>2]=0;g=$(y+-2|0,e)|0;if(D){f=0;d=0;do{y=(k[b+(f+z<<2)>>2]|0)-(k[b+(f+g<<2)>>2]|0)|0;d=((y|0)>-1?y:0-y|0)+d|0;f=f+1|0}while((f|0)!=(e|0))}else d=0;k[T>>2]=d;i[E>>0]=0;k[F>>2]=0;y=b+(g<<2)|0;Ce(G,y,y+(e<<2)|0);if((x|0)>=1){p=S+x|0;o=p+-1|0;q=(o|0)==(S|0);s=p+-2|0;t=K>>>0>>0;u=o>>>0>S>>>0;v=0;w=1;while(1){v=v+1|0;Ah(S|0,1,x|0)|0;Ah(S|0,0,v|0)|0;d:while(1){if(D){Ah(k[X>>2]|0,0,L|0)|0;j=k[X>>2]|0;h=0;d=0;do{if(!(i[S+h>>0]|0)){g=k[Y+(h*12|0)>>2]|0;f=0;do{y=j+(f<<2)|0;k[y>>2]=(k[y>>2]|0)+(k[g+(f<<2)>>2]|0);f=f+1|0}while((f|0)!=(e|0));d=(1<>0]|0))d=(1<>2]|0;g=0;f=0;do{n=h+(g<<2)|0;y=(k[n>>2]|0)/(w|0)|0;k[n>>2]=y;y=y-(k[b+(g+z<<2)>>2]|0)|0;f=((y|0)>-1?y:0-y|0)+f|0;g=g+1|0}while((g|0)!=(e|0))}else f=0;if((f|0)<(k[T>>2]|0)){k[T>>2]=f;i[E>>0]=d;k[F>>2]=w;k[O>>2]=k[X>>2];k[P>>2]=k[J>>2];k[M>>2]=k[O>>2];k[N>>2]=k[P>>2];ze(G,M,N)}if(q)break;U=i[o>>0]|0;j=-1;n=U;while(1){d=j+-1|0;m=p+d|0;y=n;n=i[m>>0]|0;if((n&255)<(y&255))break;if((m|0)==(S|0)){W=66;break d}else j=d}d=p+j|0;if((n&255)<(U&255)){g=o;f=U}else{f=p;h=o;while(1){f=i[f+-2>>0]|0;g=h+-1|0;if((n&255)<(f&255))break;else{f=h;h=g}}}i[m>>0]=f;i[g>>0]=n;if((j|0)<-1)f=o;else continue;while(1){y=i[d>>0]|0;i[d>>0]=i[f>>0]|0;i[f>>0]=y;d=d+1|0;f=f+-1|0;if(d>>>0>=f>>>0)continue d}}if(((W|0)==66?(W=0,u):0)?(y=i[S>>0]|0,i[S>>0]=U,i[o>>0]=y,t):0){d=s;f=K;do{y=i[f>>0]|0;i[f>>0]=i[d>>0]|0;i[d>>0]=y;f=f+1|0;d=d+-1|0}while(f>>>0>>0)}if((w|0)>=(x|0))break;else w=w+1|0}if((x|0)>0){n=x+-1|0;j=a+36+(n*12|0)|0;m=a+36+(n*12|0)+4|0;n=a+36+(n*12|0)+8|0;h=0;do{d=k[m>>2]|0;f=k[n>>2]|0;g=(d|0)==(f<<5|0);if(!(l[E>>0]&1<>>0<1073741823?(y>>>0>>0?d:y):2147483647);d=k[m>>2]|0}k[m>>2]=d+1;y=(k[j>>2]|0)+(d>>>5<<2)|0;k[y>>2]=k[y>>2]|1<<(d&31)}else{if(g){if((d+1|0)<0){W=79;break b}y=f<<6;d=d+32&-32;Wf(j,f<<5>>>0<1073741823?(y>>>0>>0?d:y):2147483647);d=k[m>>2]|0}k[m>>2]=d+1;y=(k[j>>2]|0)+(d>>>5<<2)|0;k[y>>2]=k[y>>2]&~(1<<(d&31))}h=h+1|0}while((h|0)<(x|0))}}we(V,b+(z<<2)|0,k[G>>2]|0,c,z);d=k[H>>2]|0;f=d;if(d|0){g=k[I>>2]|0;if((g|0)!=(d|0))k[I>>2]=g+(~((g+-4-f|0)>>>2)<<2);gl(d)}if((A|0)<=1)break a;d=k[B>>2]|0;y=A;f=k[d>>2]|0;g=k[d+4>>2]|0}if((W|0)==8)lk(d);else if((W|0)==74)mk(j);else if((W|0)==79)mk(j)}while(0);f=k[Y>>2]|0;if((e|0)>0){d=0;do{k[f+(d<<2)>>2]=0;d=d+1|0}while((d|0)!=(e|0))}we(V,b,f,c,0);g=k[X>>2]|0;h=g;if(g|0){d=X+4|0;f=k[d>>2]|0;if((f|0)!=(g|0))k[d>>2]=f+(~((f+-4-h|0)>>>2)<<2);gl(g)}d=k[Y+36>>2]|0;f=d;if(d|0){g=Y+40|0;h=k[g>>2]|0;if((h|0)!=(d|0))k[g>>2]=h+(~((h+-4-f|0)>>>2)<<2);gl(d)}d=k[Y+24>>2]|0;f=d;if(d|0){g=Y+28|0;h=k[g>>2]|0;if((h|0)!=(d|0))k[g>>2]=h+(~((h+-4-f|0)>>>2)<<2);gl(d)}d=k[Y+12>>2]|0;f=d;if(d|0){g=Y+16|0;h=k[g>>2]|0;if((h|0)!=(d|0))k[g>>2]=h+(~((h+-4-f|0)>>>2)<<2);gl(d)}g=k[Y>>2]|0;if(!g){r=Z;return 1}d=Y+4|0;f=k[d>>2]|0;if((f|0)!=(g|0))k[d>>2]=f+(~((f+-4-g|0)>>>2)<<2);gl(g);r=Z;return 1}function kb(a,b,c,d,e,f){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;f=f|0;var g=0,h=0,i=0,j=0,l=0,m=0,n=0,o=0,p=0,q=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,B=0,C=0,D=0,E=0,F=0,G=0,H=0,I=0,J=0,K=0,L=0,M=0,N=0,O=0,P=0,Q=0,R=0,S=0;S=r;r=r+64|0;R=S+16|0;Q=S;H=a+8|0;k[H>>2]=e;i=a+32|0;d=a+36|0;h=k[d>>2]|0;g=k[i>>2]|0;f=h-g>>2;if(f>>>0>=e>>>0){if(f>>>0>e>>>0?(j=g+(e<<2)|0,(h|0)!=(j|0)):0)k[d>>2]=h+(~((h+-4-j|0)>>>2)<<2)}else eg(i,e-f|0);d=R;f=d+48|0;do{k[d>>2]=0;d=d+4|0}while((d|0)<(f|0));k[Q>>2]=0;if(!e){d=0;f=0}else{Bf(R,e,Q);d=k[R+12>>2]|0;f=k[R+16>>2]|0}k[Q>>2]=0;g=R+16|0;h=f-d>>2;if(h>>>0>=e>>>0){if(h>>>0>e>>>0?(l=d+(e<<2)|0,(f|0)!=(l|0)):0)k[g>>2]=f+(~((f+-4-l|0)>>>2)<<2)}else Bf(R+12|0,e-h|0,Q);d=R+24|0;k[Q>>2]=0;f=R+28|0;i=k[f>>2]|0;h=k[d>>2]|0;g=i-h>>2;if(g>>>0>=e>>>0){if(g>>>0>e>>>0?(m=h+(e<<2)|0,(i|0)!=(m|0)):0)k[f>>2]=i+(~((i+-4-m|0)>>>2)<<2)}else Bf(d,e-g|0,Q);d=R+36|0;k[Q>>2]=0;f=R+40|0;i=k[f>>2]|0;h=k[d>>2]|0;g=i-h>>2;if(g>>>0>=e>>>0){if(g>>>0>e>>>0?(n=h+(e<<2)|0,(i|0)!=(n|0)):0)k[f>>2]=i+(~((i+-4-n|0)>>>2)<<2)}else Bf(d,e-g|0,Q);l=k[R>>2]|0;if((k[H>>2]|0)>0){m=a+16|0;j=a+32|0;n=a+12|0;i=0;do{h=k[l+(i<<2)>>2]|0;d=k[m>>2]|0;do if((h|0)<=(d|0)){d=k[n>>2]|0;f=k[j>>2]|0;g=f+(i<<2)|0;if((h|0)<(d|0)){k[g>>2]=d;g=f;break}else{k[g>>2]=h;g=f;break}}else{g=k[j>>2]|0;k[g+(i<<2)>>2]=d}while(0);i=i+1|0;d=k[H>>2]|0}while((i|0)<(d|0));if((d|0)>0){d=0;do{k[c+(d<<2)>>2]=(k[b+(d<<2)>>2]|0)+(k[g+(d<<2)>>2]|0);d=d+1|0;f=k[H>>2]|0}while((d|0)<(f|0));if((f|0)>0){f=a+20|0;d=0;do{g=c+(d<<2)|0;h=k[g>>2]|0;if((h|0)<=(k[m>>2]|0)){if((h|0)<(k[n>>2]|0))k[g>>2]=(k[f>>2]|0)+h}else k[g>>2]=h-(k[f>>2]|0);d=d+1|0}while((d|0)<(k[H>>2]|0))}}}u=k[a+48>>2]|0;v=k[a+52>>2]|0;G=Si(16)|0;k[G>>2]=0;k[G+4>>2]=0;k[G+8>>2]=0;k[G+12>>2]=0;Ih(Q,e);w=a+56|0;f=k[w>>2]|0;h=k[f+4>>2]|0;g=k[f>>2]|0;F=h-g|0;x=F>>2;a:do if((F|0)>4){y=u+64|0;z=u+28|0;A=(e|0)>0;B=a+16|0;C=a+32|0;D=a+12|0;E=a+20|0;F=e<<2;d=1;while(1){if(h-g>>2>>>0<=d>>>0)break;p=k[g+(d<<2)>>2]|0;o=p+((p|0)<0?0:((p>>>0)%3|0|0)==0?2:-1)|0;q=o>>>5;s=1<<(o&31);t=(o|0)<0;n=1;f=0;g=p;b:while(1){do{if((g|0)<=-1){o=63;break b}i=k[R+(f*12|0)>>2]|0;if(((k[(k[u>>2]|0)+(g>>>5<<2)>>2]&1<<(g&31)|0)==0?(J=k[(k[(k[y>>2]|0)+12>>2]|0)+(g<<2)>>2]|0,(J|0)>=0):0)?(M=k[z>>2]|0,m=k[v>>2]|0,K=k[m+(k[M+(J<<2)>>2]<<2)>>2]|0,L=J+1|0,L=k[m+(k[M+((((L|0)%3|0|0)==0?J+-2|0:L)<<2)>>2]<<2)>>2]|0,M=k[m+(k[M+((((J>>>0)%3|0|0)==0?2:-1)+J<<2)>>2]<<2)>>2]|0,(K|0)<(d|0)&(L|0)<(d|0)&(M|0)<(d|0)):0){j=$(K,e)|0;l=$(L,e)|0;m=$(M,e)|0;if(A){h=0;do{k[i+(h<<2)>>2]=(k[c+(h+m<<2)>>2]|0)+(k[c+(h+l<<2)>>2]|0)-(k[c+(h+j<<2)>>2]|0);h=h+1|0}while((h|0)!=(e|0))}f=f+1|0;if((f|0)==4){f=4;o=44;break b}}do if(n){h=g+1|0;g=((h|0)%3|0|0)==0?g+-2|0:h;h=k[u>>2]|0;if(!(k[h+(g>>>5<<2)>>2]&1<<(g&31))){if((g|0)>=0){g=k[(k[(k[y>>2]|0)+12>>2]|0)+(g<<2)>>2]|0;i=g+1|0;if((g|0)>=0)g=((i|0)%3|0|0)==0?g+-2|0:i}}else g=-1073741824}else{g=(((g>>>0)%3|0|0)==0?2:-1)+g|0;h=k[u>>2]|0;if(!(k[h+(g>>>5<<2)>>2]&1<<(g&31))){if((g|0)>=0){g=k[(k[(k[y>>2]|0)+12>>2]|0)+(g<<2)>>2]|0;if((g|0)>=0)if(!((g>>>0)%3|0)){g=g+2|0;break}else{g=g+-1|0;break}}}else g=-1073741824}while(0);if((g|0)==(p|0)){o=63;break b}}while(!(n&(g|0)<0));g=(s&k[h+(q<<2)>>2]|0)!=0;if(g|t){n=0;g=g?-1073741824:o;continue}g=k[(k[(k[y>>2]|0)+12>>2]|0)+(o<<2)>>2]|0;if((g|0)<0){n=0;continue}if(!((g>>>0)%3|0)){n=0;g=g+2|0;continue}else{n=0;g=g+-1|0;continue}}if((o|0)==63)if((f|0)>0)o=44;else{P=$(d,e)|0;o=75}if((o|0)==44){o=0;if(A){Ah(k[Q>>2]|0,0,F|0)|0;m=f+-1|0;l=G+(m<<2)|0;m=k[a+60+(m*12|0)>>2]|0;n=k[Q>>2]|0;j=0;g=0;do{t=k[l>>2]|0;k[l>>2]=t+1;if(!(k[m+(t>>>5<<2)>>2]&1<<(t&31))){i=k[R+(j*12|0)>>2]|0;h=0;do{t=n+(h<<2)|0;k[t>>2]=(k[t>>2]|0)+(k[i+(h<<2)>>2]|0);h=h+1|0}while((h|0)!=(e|0));g=g+1|0}j=j+1|0}while((j|0)!=(f|0));f=g}else{j=f+-1|0;i=G+(j<<2)|0;j=k[a+60+(j*12|0)>>2]|0;h=0;g=0;l=k[i>>2]|0;do{t=l;l=l+1|0;k[i>>2]=l;g=g+((k[j+(t>>>5<<2)>>2]&1<<(t&31)|0)==0&1)|0;h=h+1|0}while((h|0)!=(f|0));f=g}m=$(d,e)|0;if(f){l=k[Q>>2]|0;if(A){g=0;do{t=l+(g<<2)|0;k[t>>2]=(k[t>>2]|0)/(f|0)|0;g=g+1|0}while((g|0)!=(e|0))}n=c+(m<<2)|0;if((k[H>>2]|0)>0){j=0;do{i=k[l+(j<<2)>>2]|0;f=k[B>>2]|0;do if((i|0)<=(f|0)){f=k[D>>2]|0;g=k[C>>2]|0;h=g+(j<<2)|0;if((i|0)<(f|0)){k[h>>2]=f;h=g;break}else{k[h>>2]=i;h=g;break}}else{h=k[C>>2]|0;k[h+(j<<2)>>2]=f}while(0);j=j+1|0;f=k[H>>2]|0}while((j|0)<(f|0));if((f|0)>0){f=0;do{k[n+(f<<2)>>2]=(k[b+(f+m<<2)>>2]|0)+(k[h+(f<<2)>>2]|0);f=f+1|0;g=k[H>>2]|0}while((f|0)<(g|0));if((g|0)>0){f=0;do{g=n+(f<<2)|0;h=k[g>>2]|0;do if((h|0)>(k[B>>2]|0))k[g>>2]=h-(k[E>>2]|0);else{if((h|0)>=(k[D>>2]|0))break;k[g>>2]=(k[E>>2]|0)+h}while(0);f=f+1|0}while((f|0)<(k[H>>2]|0))}}}}else{P=m;o=75}}if((o|0)==75?(0,N=c+(($(d+-1|0,e)|0)<<2)|0,O=c+(P<<2)|0,(k[H>>2]|0)>0):0){j=0;do{i=k[N+(j<<2)>>2]|0;f=k[B>>2]|0;do if((i|0)<=(f|0)){f=k[D>>2]|0;g=k[C>>2]|0;h=g+(j<<2)|0;if((i|0)<(f|0)){k[h>>2]=f;h=g;break}else{k[h>>2]=i;h=g;break}}else{h=k[C>>2]|0;k[h+(j<<2)>>2]=f}while(0);j=j+1|0;f=k[H>>2]|0}while((j|0)<(f|0));if((f|0)>0){f=0;do{k[O+(f<<2)>>2]=(k[b+(f+P<<2)>>2]|0)+(k[h+(f<<2)>>2]|0);f=f+1|0;g=k[H>>2]|0}while((f|0)<(g|0));if((g|0)>0){f=0;do{g=O+(f<<2)|0;h=k[g>>2]|0;if((h|0)<=(k[B>>2]|0)){if((h|0)<(k[D>>2]|0))k[g>>2]=(k[E>>2]|0)+h}else k[g>>2]=h-(k[E>>2]|0);f=f+1|0}while((f|0)<(k[H>>2]|0))}}}d=d+1|0;if((d|0)>=(x|0)){I=Q;break a}f=k[w>>2]|0;g=k[f>>2]|0;h=k[f+4>>2]|0}lk(f)}else I=Q;while(0);g=k[I>>2]|0;h=g;if(g|0){d=Q+4|0;f=k[d>>2]|0;if((f|0)!=(g|0))k[d>>2]=f+(~((f+-4-h|0)>>>2)<<2);gl(g)}gl(G);d=k[R+36>>2]|0;f=d;if(d|0){g=R+40|0;h=k[g>>2]|0;if((h|0)!=(d|0))k[g>>2]=h+(~((h+-4-f|0)>>>2)<<2);gl(d)}d=k[R+24>>2]|0;f=d;if(d|0){g=R+28|0;h=k[g>>2]|0;if((h|0)!=(d|0))k[g>>2]=h+(~((h+-4-f|0)>>>2)<<2);gl(d)}d=k[R+12>>2]|0;f=d;if(d|0){g=R+16|0;h=k[g>>2]|0;if((h|0)!=(d|0))k[g>>2]=h+(~((h+-4-f|0)>>>2)<<2);gl(d)}g=k[R>>2]|0;if(!g){r=S;return 1}d=R+4|0;f=k[d>>2]|0;if((f|0)!=(g|0))k[d>>2]=f+(~((f+-4-g|0)>>>2)<<2);gl(g);r=S;return 1}function lb(a,b,c,d,e,f){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;f=f|0;var g=0,h=0,i=0,j=0,l=0,m=0,n=0,o=0,p=0,q=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,B=0,C=0,D=0,E=0,F=0,G=0,H=0,I=0,J=0,K=0,L=0,M=0,N=0,O=0,P=0,Q=0;Q=r;r=r+64|0;P=Q+16|0;O=Q;J=a+8|0;k[J>>2]=e;i=a+32|0;d=a+36|0;h=k[d>>2]|0;g=k[i>>2]|0;f=h-g>>2;if(f>>>0>=e>>>0){if(f>>>0>e>>>0?(j=g+(e<<2)|0,(h|0)!=(j|0)):0)k[d>>2]=h+(~((h+-4-j|0)>>>2)<<2)}else eg(i,e-f|0);d=P;f=d+48|0;do{k[d>>2]=0;d=d+4|0}while((d|0)<(f|0));k[O>>2]=0;if(!e){d=0;f=0}else{Bf(P,e,O);d=k[P+12>>2]|0;f=k[P+16>>2]|0}k[O>>2]=0;g=P+16|0;h=f-d>>2;if(h>>>0>=e>>>0){if(h>>>0>e>>>0?(l=d+(e<<2)|0,(f|0)!=(l|0)):0)k[g>>2]=f+(~((f+-4-l|0)>>>2)<<2)}else Bf(P+12|0,e-h|0,O);d=P+24|0;k[O>>2]=0;f=P+28|0;i=k[f>>2]|0;h=k[d>>2]|0;g=i-h>>2;if(g>>>0>=e>>>0){if(g>>>0>e>>>0?(m=h+(e<<2)|0,(i|0)!=(m|0)):0)k[f>>2]=i+(~((i+-4-m|0)>>>2)<<2)}else Bf(d,e-g|0,O);d=P+36|0;k[O>>2]=0;f=P+40|0;i=k[f>>2]|0;h=k[d>>2]|0;g=i-h>>2;if(g>>>0>=e>>>0){if(g>>>0>e>>>0?(n=h+(e<<2)|0,(i|0)!=(n|0)):0)k[f>>2]=i+(~((i+-4-n|0)>>>2)<<2)}else Bf(d,e-g|0,O);l=k[P>>2]|0;if((k[J>>2]|0)>0){m=a+16|0;j=a+32|0;n=a+12|0;i=0;do{h=k[l+(i<<2)>>2]|0;d=k[m>>2]|0;do if((h|0)<=(d|0)){d=k[n>>2]|0;f=k[j>>2]|0;g=f+(i<<2)|0;if((h|0)<(d|0)){k[g>>2]=d;g=f;break}else{k[g>>2]=h;g=f;break}}else{g=k[j>>2]|0;k[g+(i<<2)>>2]=d}while(0);i=i+1|0;d=k[J>>2]|0}while((i|0)<(d|0));if((d|0)>0){d=0;do{k[c+(d<<2)>>2]=(k[b+(d<<2)>>2]|0)+(k[g+(d<<2)>>2]|0);d=d+1|0;f=k[J>>2]|0}while((d|0)<(f|0));if((f|0)>0){f=a+20|0;d=0;do{g=c+(d<<2)|0;h=k[g>>2]|0;if((h|0)<=(k[m>>2]|0)){if((h|0)<(k[n>>2]|0))k[g>>2]=(k[f>>2]|0)+h}else k[g>>2]=h-(k[f>>2]|0);d=d+1|0}while((d|0)<(k[J>>2]|0))}}}x=k[a+48>>2]|0;y=k[a+52>>2]|0;I=Si(16)|0;k[I>>2]=0;k[I+4>>2]=0;k[I+8>>2]=0;k[I+12>>2]=0;Ih(O,e);z=a+56|0;f=k[z>>2]|0;h=k[f+4>>2]|0;g=k[f>>2]|0;H=h-g|0;A=H>>2;a:do if((H|0)>4){B=x+12|0;C=(e|0)>0;D=a+16|0;E=a+32|0;F=a+12|0;G=a+20|0;H=e<<2;d=1;while(1){if(h-g>>2>>>0<=d>>>0)break;v=k[g+(d<<2)>>2]|0;u=(((v>>>0)%3|0|0)==0?2:-1)+v|0;w=(v|u|0)<0;t=(v|0)<0?v:u;s=1;f=0;g=v;b:while(1){do{if((g|0)<=-1){o=64;break b}p=k[P+(f*12|0)>>2]|0;q=k[B>>2]|0;i=k[q+(g<<2)>>2]|0;if((i|0)>=0){l=k[x>>2]|0;j=(i>>>0)%3|0;m=k[y>>2]|0;o=k[m+(k[l+(((i>>>0)/3|0)*12|0)+(j<<2)>>2]<<2)>>2]|0;h=i+1|0;h=((h|0)%3|0|0)==0?i+-2|0:h;if((h|0)<0)h=-1073741824;else h=k[l+(((h>>>0)/3|0)*12|0)+(((h>>>0)%3|0)<<2)>>2]|0;n=k[m+(h<<2)>>2]|0;h=((j|0)==0?2:-1)+i|0;if((h|0)<0)h=-1073741824;else h=k[l+(((h>>>0)/3|0)*12|0)+(((h>>>0)%3|0)<<2)>>2]|0;h=k[m+(h<<2)>>2]|0;if((o|0)<(d|0)&(n|0)<(d|0)&(h|0)<(d|0)){l=$(o,e)|0;j=$(n,e)|0;i=$(h,e)|0;if(C){h=0;do{k[p+(h<<2)>>2]=(k[c+(h+i<<2)>>2]|0)+(k[c+(h+j<<2)>>2]|0)-(k[c+(h+l<<2)>>2]|0);h=h+1|0}while((h|0)!=(e|0))}f=f+1|0;if((f|0)==4){f=4;o=47;break b}}}do if(s){p=g+1|0;g=((p|0)%3|0|0)==0?g+-2|0:p;if((g|0)>=0){g=k[q+(g<<2)>>2]|0;h=g+1|0;if((g|0)>=0)g=((h|0)%3|0|0)==0?g+-2|0:h}}else{g=(((g>>>0)%3|0|0)==0?2:-1)+g|0;if((g|0)>=0){g=k[q+(g<<2)>>2]|0;if((g|0)>=0)if(!((g>>>0)%3|0)){g=g+2|0;break}else{g=g+-1|0;break}}}while(0);if((g|0)==(v|0)){o=64;break b}}while(!(s&(g|0)<0));if(w){s=0;g=t;continue}g=k[q+(u<<2)>>2]|0;if((g|0)<0){s=0;continue}if(!((g>>>0)%3|0)){s=0;g=g+2|0;continue}else{s=0;g=g+-1|0;continue}}if((o|0)==64)if((f|0)>0)o=47;else{N=$(d,e)|0;o=76}if((o|0)==47){o=0;if(C){Ah(k[O>>2]|0,0,H|0)|0;m=f+-1|0;l=I+(m<<2)|0;m=k[a+60+(m*12|0)>>2]|0;n=k[O>>2]|0;j=0;g=0;do{w=k[l>>2]|0;k[l>>2]=w+1;if(!(k[m+(w>>>5<<2)>>2]&1<<(w&31))){i=k[P+(j*12|0)>>2]|0;h=0;do{w=n+(h<<2)|0;k[w>>2]=(k[w>>2]|0)+(k[i+(h<<2)>>2]|0);h=h+1|0}while((h|0)!=(e|0));g=g+1|0}j=j+1|0}while((j|0)!=(f|0));f=g}else{j=f+-1|0;i=I+(j<<2)|0;j=k[a+60+(j*12|0)>>2]|0;h=0;g=0;l=k[i>>2]|0;do{w=l;l=l+1|0;k[i>>2]=l;g=g+((k[j+(w>>>5<<2)>>2]&1<<(w&31)|0)==0&1)|0;h=h+1|0}while((h|0)!=(f|0));f=g}m=$(d,e)|0;if(f){l=k[O>>2]|0;if(C){g=0;do{w=l+(g<<2)|0;k[w>>2]=(k[w>>2]|0)/(f|0)|0;g=g+1|0}while((g|0)!=(e|0))}n=c+(m<<2)|0;if((k[J>>2]|0)>0){j=0;do{i=k[l+(j<<2)>>2]|0;f=k[D>>2]|0;do if((i|0)<=(f|0)){f=k[F>>2]|0;g=k[E>>2]|0;h=g+(j<<2)|0;if((i|0)<(f|0)){k[h>>2]=f;h=g;break}else{k[h>>2]=i;h=g;break}}else{h=k[E>>2]|0;k[h+(j<<2)>>2]=f}while(0);j=j+1|0;f=k[J>>2]|0}while((j|0)<(f|0));if((f|0)>0){f=0;do{k[n+(f<<2)>>2]=(k[b+(f+m<<2)>>2]|0)+(k[h+(f<<2)>>2]|0);f=f+1|0;g=k[J>>2]|0}while((f|0)<(g|0));if((g|0)>0){f=0;do{g=n+(f<<2)|0;h=k[g>>2]|0;do if((h|0)>(k[D>>2]|0))k[g>>2]=h-(k[G>>2]|0);else{if((h|0)>=(k[F>>2]|0))break;k[g>>2]=(k[G>>2]|0)+h}while(0);f=f+1|0}while((f|0)<(k[J>>2]|0))}}}}else{N=m;o=76}}if((o|0)==76?(0,L=c+(($(d+-1|0,e)|0)<<2)|0,M=c+(N<<2)|0,(k[J>>2]|0)>0):0){j=0;do{i=k[L+(j<<2)>>2]|0;f=k[D>>2]|0;do if((i|0)<=(f|0)){f=k[F>>2]|0;g=k[E>>2]|0;h=g+(j<<2)|0;if((i|0)<(f|0)){k[h>>2]=f;h=g;break}else{k[h>>2]=i;h=g;break}}else{h=k[E>>2]|0;k[h+(j<<2)>>2]=f}while(0);j=j+1|0;f=k[J>>2]|0}while((j|0)<(f|0));if((f|0)>0){f=0;do{k[M+(f<<2)>>2]=(k[b+(f+N<<2)>>2]|0)+(k[h+(f<<2)>>2]|0);f=f+1|0;g=k[J>>2]|0}while((f|0)<(g|0));if((g|0)>0){f=0;do{g=M+(f<<2)|0;h=k[g>>2]|0;if((h|0)<=(k[D>>2]|0)){if((h|0)<(k[F>>2]|0))k[g>>2]=(k[G>>2]|0)+h}else k[g>>2]=h-(k[G>>2]|0);f=f+1|0}while((f|0)<(k[J>>2]|0))}}}d=d+1|0;if((d|0)>=(A|0)){K=O;break a}f=k[z>>2]|0;g=k[f>>2]|0;h=k[f+4>>2]|0}lk(f)}else K=O;while(0);h=k[K>>2]|0;g=h;if(h|0){d=O+4|0;f=k[d>>2]|0;if((f|0)!=(h|0))k[d>>2]=f+(~((f+-4-g|0)>>>2)<<2);gl(h)}gl(I);d=k[P+36>>2]|0;f=d;if(d|0){g=P+40|0;h=k[g>>2]|0;if((h|0)!=(d|0))k[g>>2]=h+(~((h+-4-f|0)>>>2)<<2);gl(d)}d=k[P+24>>2]|0;f=d;if(d|0){g=P+28|0;h=k[g>>2]|0;if((h|0)!=(d|0))k[g>>2]=h+(~((h+-4-f|0)>>>2)<<2);gl(d)}d=k[P+12>>2]|0;f=d;if(d|0){g=P+16|0;h=k[g>>2]|0;if((h|0)!=(d|0))k[g>>2]=h+(~((h+-4-f|0)>>>2)<<2);gl(d)}g=k[P>>2]|0;if(!g){r=Q;return 1}d=P+4|0;f=k[d>>2]|0;if((f|0)!=(g|0))k[d>>2]=f+(~((f+-4-g|0)>>>2)<<2);gl(g);r=Q;return 1}function mb(a,b,c,d,e,f){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;f=f|0;var g=0,h=0,j=0,l=0,m=0,n=0,o=0,p=0,q=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,B=0,C=0,D=0,E=0,F=0,G=0,H=0,I=0,J=0,K=0,L=0,M=0,N=0,O=0,P=0,Q=0,R=0,S=0,T=0,U=0,V=0,W=0,X=0,Y=0,Z=0,_=0,$=0,aa=0,ba=0,da=0,ea=0,fa=0,ga=0;fa=r;r=r+80|0;da=fa+64|0;j=fa+16|0;ea=fa+40|0;X=fa+28|0;W=fa;k[j>>2]=k[d>>2];k[j+4>>2]=k[d+4>>2];k[j+8>>2]=k[d+8>>2];m=k[c>>2]|0;ba=c+4|0;n=k[ba>>2]|0;Y=c+8|0;l=k[Y>>2]|0;k[ea>>2]=0;k[ea+4>>2]=0;k[ea+8>>2]=0;k[ea+12>>2]=0;k[ea+16>>2]=0;k[ea+20>>2]=0;Z=ea+8|0;_=ea+4|0;$=ea+16|0;aa=ea+20|0;dc(ea);g=k[_>>2]|0;o=k[Z>>2]|0;h=(k[aa>>2]|0)+(k[$>>2]|0)|0;if((o|0)==(g|0))g=0;else g=(k[g+(h>>>7<<2)>>2]|0)+((h&127)<<5)|0;k[g>>2]=b;k[g+4>>2]=m;k[g+8>>2]=n;k[g+12>>2]=l;V=g+16|0;k[V>>2]=k[j>>2];k[V+4>>2]=k[j+4>>2];k[V+8>>2]=k[j+8>>2];k[g+28>>2]=e;g=(k[aa>>2]|0)+1|0;k[aa>>2]=g;if(!g){jf(ea);r=fa;return}O=a+44|0;P=a+40|0;N=f+4|0;Q=da+4|0;R=da+8|0;S=a+24|0;T=a+20|0;U=a+84|0;V=a+80|0;e=o;a:while(1){K=k[$>>2]|0;J=g+-1|0;h=J+K|0;L=k[_>>2]|0;I=k[L+(h>>>7<<2)>>2]|0;h=h&127;M=k[I+(h<<5)>>2]|0;j=k[I+(h<<5)+4>>2]|0;b=k[I+(h<<5)+8>>2]|0;l=k[I+(h<<5)+12>>2]|0;H=I+(h<<5)+16|0;k[X>>2]=k[H>>2];k[X+4>>2]=k[H+4>>2];k[X+8>>2]=k[H+8>>2];h=k[I+(h<<5)+28>>2]|0;k[aa>>2]=J;L=e-L|0;if((1-g-K+((L|0)==0?0:(L<<5)+-1|0)|0)>>>0>255){gl(k[e+-4>>2]|0);k[Z>>2]=(k[Z>>2]|0)+-4}k[c>>2]=j;k[ba>>2]=b;k[Y>>2]=l;k[d>>2]=k[X>>2];k[d+4>>2]=k[X+4>>2];k[d+8>>2]=k[X+8>>2];k[da>>2]=k[X>>2];k[da+4>>2]=k[X+4>>2];k[da+8>>2]=k[X+8>>2];p=bj(a,M,c,da,h)|0;e=d+(p<<2)|0;m=k[e>>2]|0;g=k[a>>2]|0;L=g-m|0;do if(!L){if((M|0)>0){m=k[f>>2]|0;b=m+84|0;l=m+68|0;e=m+40|0;m=m+64|0;j=k[N>>2]|0;g=0;n=j;while(1){if(!(i[b>>0]|0))h=k[(k[l>>2]|0)+(n<<2)>>2]|0;else h=n;K=e;L=k[K>>2]|0;K=Pi(h|0,((h|0)<0)<<31>>31|0,L|0,k[K+4>>2]|0)|0;nh((k[k[m>>2]>>2]|0)+K|0,c|0,L|0)|0;g=g+1|0;if((g|0)==(M|0))break;else n=n+1|0}k[N>>2]=M+j}}else{if(!M){g=14;break a}if(M>>>0>=3){k[da>>2]=k[c>>2];k[Q>>2]=k[ba>>2];k[R>>2]=k[Y>>2];j=da+(p<<2)|0;k[j>>2]=(k[j>>2]|0)+(1<>>0>=33){g=30;break a}if(!j){g=32;break a}b=k[S>>2]|0;g=32-b|0;l=k[T>>2]|0;h=k[l>>2]<>>(32-j|0);L=b+j|0;k[S>>2]=L;if((L|0)==32){k[T>>2]=l+4;k[S>>2]=0}}else{L=j-g|0;k[S>>2]=L;K=l+4|0;k[T>>2]=K;L=32-L|0;g=(k[K>>2]|0)>>>L|h>>>(L-g|0)}b=(M>>>1)-g|0;h=M-b|0;if((b|0)==(h|0)){n=b;o=b}else{M=k[U>>2]|0;g=k[V>>2]|0;j=(k[g>>2]&1<<31-M|0)!=0;M=M+1|0;k[U>>2]=M;if((M|0)==32){k[V>>2]=g+4;k[U>>2]=0}n=j?b:h;o=j?h:b}k[e>>2]=m+1;if(n|0){k[W>>2]=k[d>>2];k[W+4>>2]=k[d+4>>2];k[W+8>>2]=k[d+8>>2];l=k[c>>2]|0;e=k[ba>>2]|0;m=k[Y>>2]|0;b=k[Z>>2]|0;j=k[_>>2]|0;M=b-j|0;g=k[$>>2]|0;h=k[aa>>2]|0;if((((M|0)==0?0:(M<<5)+-1|0)|0)==(h+g|0)){dc(ea);g=k[$>>2]|0;h=k[aa>>2]|0;b=k[Z>>2]|0;j=k[_>>2]|0}g=h+g|0;if((b|0)==(j|0))g=0;else g=(k[j+(g>>>7<<2)>>2]|0)+((g&127)<<5)|0;k[g>>2]=n;k[g+4>>2]=l;k[g+8>>2]=e;k[g+12>>2]=m;M=g+16|0;k[M>>2]=k[W>>2];k[M+4>>2]=k[W+4>>2];k[M+8>>2]=k[W+8>>2];k[g+28>>2]=p;k[aa>>2]=(k[aa>>2]|0)+1}if(o|0){k[W>>2]=k[d>>2];k[W+4>>2]=k[d+4>>2];k[W+8>>2]=k[d+8>>2];l=k[da>>2]|0;e=k[Q>>2]|0;m=k[R>>2]|0;b=k[Z>>2]|0;j=k[_>>2]|0;M=b-j|0;g=k[$>>2]|0;h=k[aa>>2]|0;if((((M|0)==0?0:(M<<5)+-1|0)|0)==(h+g|0)){dc(ea);g=k[$>>2]|0;h=k[aa>>2]|0;b=k[Z>>2]|0;j=k[_>>2]|0}g=h+g|0;if((b|0)==(j|0))g=0;else g=(k[j+(g>>>7<<2)>>2]|0)+((g&127)<<5)|0;k[g>>2]=o;k[g+4>>2]=l;k[g+8>>2]=e;k[g+12>>2]=m;M=g+16|0;k[M>>2]=k[W>>2];k[M+4>>2]=k[W+4>>2];k[M+8>>2]=k[W+8>>2];k[g+28>>2]=p;k[aa>>2]=(k[aa>>2]|0)+1}break}x=(p|0)==2?0:p+1|0;t=(x|0)==2?0:x+1|0;K=g-(k[d+(x<<2)>>2]|0)|0;C=g-(k[d+(t<<2)>>2]|0)|0;G=k[f>>2]|0;D=G+84|0;E=G+68|0;F=G+40|0;G=G+64|0;H=da+(p<<2)|0;I=(L|0)<33;J=(L|0)>0;n=c+(p<<2)|0;o=(K|0)==0;e=da+(x<<2)|0;p=c+(x<<2)|0;q=(C|0)==0;m=da+(t<<2)|0;s=c+(t<<2)|0;t=da+(t<<2)|0;u=(C|0)<33;v=(C|0)>0;w=32-C|0;x=da+(x<<2)|0;y=(K|0)<33;z=(K|0)>0;A=32-K|0;B=32-L|0;l=0;do{k[da>>2]=0;k[da+4>>2]=0;k[da+8>>2]=0;if(!I){g=19;break a}if(!J){g=21;break a}j=k[O>>2]|0;g=32-j|0;b=k[P>>2]|0;h=k[b>>2]<>>B;k[H>>2]=g;j=j+L|0;k[O>>2]=j;if((j|0)==32){k[P>>2]=b+4;k[O>>2]=0}}else{ga=L-g|0;k[O>>2]=ga;j=b+4|0;k[P>>2]=j;b=32-ga|0;g=(k[j>>2]|0)>>>b|h>>>(b-g|0);k[H>>2]=g}k[H>>2]=g|k[n>>2];do if(!o){if(!y){g=19;break a}if(!z){g=21;break a}j=k[O>>2]|0;g=32-j|0;b=k[P>>2]|0;h=k[b>>2]<(g|0)){ga=K-g|0;k[O>>2]=ga;b=b+4|0;k[P>>2]=b;ga=32-ga|0;g=(k[b>>2]|0)>>>ga|h>>>(ga-g|0);k[x>>2]=g;h=x;break}g=h>>>A;k[x>>2]=g;ga=j+K|0;k[O>>2]=ga;if((ga|0)==32){k[P>>2]=b+4;k[O>>2]=0;h=x}else h=x}else{h=e;g=k[e>>2]|0}while(0);k[h>>2]=g|k[p>>2];do if(!q){if(!u){g=19;break a}if(!v){g=21;break a}j=k[O>>2]|0;g=32-j|0;b=k[P>>2]|0;h=k[b>>2]<(g|0)){ga=C-g|0;k[O>>2]=ga;b=b+4|0;k[P>>2]=b;ga=32-ga|0;g=(k[b>>2]|0)>>>ga|h>>>(ga-g|0);k[t>>2]=g;h=t;break}g=h>>>w;k[t>>2]=g;ga=j+C|0;k[O>>2]=ga;if((ga|0)==32){k[P>>2]=b+4;k[O>>2]=0;h=t}else h=t}else{h=m;g=k[m>>2]|0}while(0);k[h>>2]=g|k[s>>2];g=k[N>>2]|0;k[N>>2]=g+1;if(!(i[D>>0]|0))g=k[(k[E>>2]|0)+(g<<2)>>2]|0;b=F;ga=k[b>>2]|0;b=Pi(g|0,((g|0)<0)<<31>>31|0,ga|0,k[b+4>>2]|0)|0;nh((k[k[G>>2]>>2]|0)+b|0,da|0,ga|0)|0;l=l+1|0}while(l>>>0>>0)}while(0);g=k[aa>>2]|0;if(!g){g=57;break}e=k[Z>>2]|0}if((g|0)==14)Ka(13307,13345,231,13415);else if((g|0)==19)Ka(13428,13452,48,13480);else if((g|0)==21)Ka(13509,13452,49,13480);else if((g|0)==30)Ka(13428,13452,48,13480);else if((g|0)==32)Ka(13509,13452,49,13480);else if((g|0)==57){jf(ea);r=fa;return}}function nb(a,b,c,d,e,f){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;f=f|0;var g=0,h=0,i=0,j=0,l=0,m=0,n=0,o=0,p=0,q=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,B=0,C=0,D=0,E=0,F=0,G=0,H=0,I=0,J=0,K=0,L=0,M=0,N=0,O=0,P=0,Q=0,R=0,S=0,T=0,U=0,V=0,W=0,X=0,Y=0,Z=0,_=0,$=0,aa=0,ba=0,da=0,ea=0,fa=0;ea=r;r=r+80|0;ba=ea+64|0;i=ea+16|0;da=ea+40|0;W=ea+28|0;V=ea;k[i>>2]=k[d>>2];k[i+4>>2]=k[d+4>>2];k[i+8>>2]=k[d+8>>2];l=k[c>>2]|0;aa=c+4|0;m=k[aa>>2]|0;X=c+8|0;j=k[X>>2]|0;k[da>>2]=0;k[da+4>>2]=0;k[da+8>>2]=0;k[da+12>>2]=0;k[da+16>>2]=0;k[da+20>>2]=0;Y=da+8|0;Z=da+4|0;_=da+16|0;$=da+20|0;dc(da);g=k[Z>>2]|0;n=k[Y>>2]|0;h=(k[$>>2]|0)+(k[_>>2]|0)|0;if((n|0)==(g|0))g=0;else g=(k[g+(h>>>7<<2)>>2]|0)+((h&127)<<5)|0;k[g>>2]=b;k[g+4>>2]=l;k[g+8>>2]=m;k[g+12>>2]=j;U=g+16|0;k[U>>2]=k[i>>2];k[U+4>>2]=k[i+4>>2];k[U+8>>2]=k[i+8>>2];k[g+28>>2]=e;g=(k[$>>2]|0)+1|0;k[$>>2]=g;if(!g){jf(da);r=ea;return}L=a+44|0;M=a+40|0;N=ba+4|0;O=ba+8|0;P=ba+4|0;Q=ba+8|0;R=a+24|0;S=a+20|0;T=a+84|0;U=a+80|0;e=n;a:while(1){I=k[_>>2]|0;H=g+-1|0;h=H+I|0;J=k[Z>>2]|0;G=k[J+(h>>>7<<2)>>2]|0;h=h&127;K=k[G+(h<<5)>>2]|0;i=k[G+(h<<5)+4>>2]|0;b=k[G+(h<<5)+8>>2]|0;j=k[G+(h<<5)+12>>2]|0;F=G+(h<<5)+16|0;k[W>>2]=k[F>>2];k[W+4>>2]=k[F+4>>2];k[W+8>>2]=k[F+8>>2];h=k[G+(h<<5)+28>>2]|0;k[$>>2]=H;J=e-J|0;if((1-g-I+((J|0)==0?0:(J<<5)+-1|0)|0)>>>0>255){gl(k[e+-4>>2]|0);k[Y>>2]=(k[Y>>2]|0)+-4}k[c>>2]=i;k[aa>>2]=b;k[X>>2]=j;k[d>>2]=k[W>>2];k[d+4>>2]=k[W+4>>2];k[d+8>>2]=k[W+8>>2];k[ba>>2]=k[W>>2];k[ba+4>>2]=k[W+4>>2];k[ba+8>>2]=k[W+8>>2];o=bj(a,K,c,ba,h)|0;e=d+(o<<2)|0;l=k[e>>2]|0;g=k[a>>2]|0;J=g-l|0;do if(!J){if((K|0)>0){h=k[f>>2]|0;i=h+4|0;b=h+8|0;g=0;do{j=k[i>>2]|0;if((j|0)==(k[b>>2]|0))yf(h,c);else{k[j>>2]=k[c>>2];k[j+4>>2]=k[aa>>2];k[j+8>>2]=k[X>>2];k[i>>2]=j+12}g=g+1|0}while((g|0)<(K|0))}}else{if(!K){g=15;break a}if(K>>>0>=3){k[ba>>2]=k[c>>2];k[P>>2]=k[aa>>2];k[Q>>2]=k[X>>2];i=ba+(o<<2)|0;k[i>>2]=(k[i>>2]|0)+(1<>>0>=33){g=32;break a}if(!i){g=34;break a}b=k[R>>2]|0;g=32-b|0;j=k[S>>2]|0;h=k[j>>2]<>>(32-i|0);J=b+i|0;k[R>>2]=J;if((J|0)==32){k[S>>2]=j+4;k[R>>2]=0}}else{J=i-g|0;k[R>>2]=J;I=j+4|0;k[S>>2]=I;J=32-J|0;g=(k[I>>2]|0)>>>J|h>>>(J-g|0)}b=(K>>>1)-g|0;h=K-b|0;if((b|0)==(h|0)){m=b;n=b}else{K=k[T>>2]|0;g=k[U>>2]|0;i=(k[g>>2]&1<<31-K|0)!=0;K=K+1|0;k[T>>2]=K;if((K|0)==32){k[U>>2]=g+4;k[T>>2]=0}m=i?b:h;n=i?h:b}k[e>>2]=l+1;if(m|0){k[V>>2]=k[d>>2];k[V+4>>2]=k[d+4>>2];k[V+8>>2]=k[d+8>>2];j=k[c>>2]|0;e=k[aa>>2]|0;l=k[X>>2]|0;b=k[Y>>2]|0;i=k[Z>>2]|0;K=b-i|0;g=k[_>>2]|0;h=k[$>>2]|0;if((((K|0)==0?0:(K<<5)+-1|0)|0)==(h+g|0)){dc(da);g=k[_>>2]|0;h=k[$>>2]|0;b=k[Y>>2]|0;i=k[Z>>2]|0}g=h+g|0;if((b|0)==(i|0))g=0;else g=(k[i+(g>>>7<<2)>>2]|0)+((g&127)<<5)|0;k[g>>2]=m;k[g+4>>2]=j;k[g+8>>2]=e;k[g+12>>2]=l;K=g+16|0;k[K>>2]=k[V>>2];k[K+4>>2]=k[V+4>>2];k[K+8>>2]=k[V+8>>2];k[g+28>>2]=o;k[$>>2]=(k[$>>2]|0)+1}if(n|0){k[V>>2]=k[d>>2];k[V+4>>2]=k[d+4>>2];k[V+8>>2]=k[d+8>>2];j=k[ba>>2]|0;e=k[P>>2]|0;l=k[Q>>2]|0;b=k[Y>>2]|0;i=k[Z>>2]|0;K=b-i|0;g=k[_>>2]|0;h=k[$>>2]|0;if((((K|0)==0?0:(K<<5)+-1|0)|0)==(h+g|0)){dc(da);g=k[_>>2]|0;h=k[$>>2]|0;b=k[Y>>2]|0;i=k[Z>>2]|0}g=h+g|0;if((b|0)==(i|0))g=0;else g=(k[i+(g>>>7<<2)>>2]|0)+((g&127)<<5)|0;k[g>>2]=n;k[g+4>>2]=j;k[g+8>>2]=e;k[g+12>>2]=l;K=g+16|0;k[K>>2]=k[V>>2];k[K+4>>2]=k[V+4>>2];k[K+8>>2]=k[V+8>>2];k[g+28>>2]=o;k[$>>2]=(k[$>>2]|0)+1}break}w=(o|0)==2?0:o+1|0;s=(w|0)==2?0:w+1|0;I=g-(k[d+(w<<2)>>2]|0)|0;C=g-(k[d+(s<<2)>>2]|0)|0;B=k[f>>2]|0;D=B+4|0;E=B+8|0;F=ba+(o<<2)|0;G=(J|0)<33;H=(J|0)>0;m=c+(o<<2)|0;n=(I|0)==0;e=ba+(w<<2)|0;o=c+(w<<2)|0;p=(C|0)==0;l=ba+(s<<2)|0;q=c+(s<<2)|0;s=ba+(s<<2)|0;t=(C|0)<33;u=(C|0)>0;v=32-C|0;w=ba+(w<<2)|0;x=(I|0)<33;y=(I|0)>0;z=32-I|0;A=32-J|0;j=0;do{k[ba>>2]=0;k[ba+4>>2]=0;k[ba+8>>2]=0;if(!G){g=21;break a}if(!H){g=23;break a}i=k[L>>2]|0;g=32-i|0;b=k[M>>2]|0;h=k[b>>2]<>>A;k[F>>2]=g;i=i+J|0;k[L>>2]=i;if((i|0)==32){k[M>>2]=b+4;k[L>>2]=0}}else{fa=J-g|0;k[L>>2]=fa;i=b+4|0;k[M>>2]=i;b=32-fa|0;g=(k[i>>2]|0)>>>b|h>>>(b-g|0);k[F>>2]=g}k[F>>2]=g|k[m>>2];do if(!n){if(!x){g=21;break a}if(!y){g=23;break a}i=k[L>>2]|0;g=32-i|0;b=k[M>>2]|0;h=k[b>>2]<(g|0)){fa=I-g|0;k[L>>2]=fa;b=b+4|0;k[M>>2]=b;fa=32-fa|0;g=(k[b>>2]|0)>>>fa|h>>>(fa-g|0);k[w>>2]=g;h=w;break}g=h>>>z;k[w>>2]=g;fa=i+I|0;k[L>>2]=fa;if((fa|0)==32){k[M>>2]=b+4;k[L>>2]=0;h=w}else h=w}else{h=e;g=k[e>>2]|0}while(0);k[h>>2]=g|k[o>>2];do if(!p){if(!t){g=21;break a}if(!u){g=23;break a}i=k[L>>2]|0;g=32-i|0;b=k[M>>2]|0;h=k[b>>2]<(g|0)){fa=C-g|0;k[L>>2]=fa;b=b+4|0;k[M>>2]=b;fa=32-fa|0;g=(k[b>>2]|0)>>>fa|h>>>(fa-g|0);k[s>>2]=g;h=s;break}g=h>>>v;k[s>>2]=g;fa=i+C|0;k[L>>2]=fa;if((fa|0)==32){k[M>>2]=b+4;k[L>>2]=0;h=s}else h=s}else{h=l;g=k[l>>2]|0}while(0);k[h>>2]=g|k[q>>2];g=k[D>>2]|0;if((g|0)==(k[E>>2]|0))yf(B,ba);else{k[g>>2]=k[ba>>2];k[g+4>>2]=k[N>>2];k[g+8>>2]=k[O>>2];k[D>>2]=g+12}j=j+1|0}while(j>>>0>>0)}while(0);g=k[$>>2]|0;if(!g){g=58;break}e=k[Y>>2]|0}if((g|0)==15)Ka(13307,13345,231,13415);else if((g|0)==21)Ka(13428,13452,48,13480);else if((g|0)==23)Ka(13509,13452,49,13480);else if((g|0)==32)Ka(13428,13452,48,13480);else if((g|0)==34)Ka(13509,13452,49,13480);else if((g|0)==58){jf(da);r=ea;return}}function ob(a,b,c,d,e,f){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;f=f|0;var g=0,h=0,j=0,l=0,m=0,n=0,o=0,p=0,q=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,B=0,C=0,D=0,E=0,F=0,G=0,H=0,I=0,J=0,K=0,L=0,M=0,N=0,O=0,P=0,Q=0,R=0,S=0,T=0,U=0,V=0,W=0,X=0,Y=0,Z=0,_=0,$=0,aa=0,ba=0,da=0,ea=0;da=r;r=r+80|0;aa=da+64|0;j=da+16|0;ba=da+40|0;V=da+28|0;U=da;k[j>>2]=k[d>>2];k[j+4>>2]=k[d+4>>2];k[j+8>>2]=k[d+8>>2];m=k[c>>2]|0;$=c+4|0;n=k[$>>2]|0;W=c+8|0;l=k[W>>2]|0;k[ba>>2]=0;k[ba+4>>2]=0;k[ba+8>>2]=0;k[ba+12>>2]=0;k[ba+16>>2]=0;k[ba+20>>2]=0;X=ba+8|0;Y=ba+4|0;Z=ba+16|0;_=ba+20|0;dc(ba);g=k[Y>>2]|0;o=k[X>>2]|0;h=(k[_>>2]|0)+(k[Z>>2]|0)|0;if((o|0)==(g|0))g=0;else g=(k[g+(h>>>7<<2)>>2]|0)+((h&127)<<5)|0;k[g>>2]=b;k[g+4>>2]=m;k[g+8>>2]=n;k[g+12>>2]=l;T=g+16|0;k[T>>2]=k[j>>2];k[T+4>>2]=k[j+4>>2];k[T+8>>2]=k[j+8>>2];k[g+28>>2]=e;g=(k[_>>2]|0)+1|0;k[_>>2]=g;if(!g){jf(ba);r=da;return}O=a+552|0;P=a+548|0;N=f+4|0;Q=aa+4|0;R=aa+8|0;S=a+592|0;T=a+588|0;e=o;a:while(1){K=k[Z>>2]|0;J=g+-1|0;h=J+K|0;L=k[Y>>2]|0;I=k[L+(h>>>7<<2)>>2]|0;h=h&127;M=k[I+(h<<5)>>2]|0;j=k[I+(h<<5)+4>>2]|0;b=k[I+(h<<5)+8>>2]|0;l=k[I+(h<<5)+12>>2]|0;H=I+(h<<5)+16|0;k[V>>2]=k[H>>2];k[V+4>>2]=k[H+4>>2];k[V+8>>2]=k[H+8>>2];h=k[I+(h<<5)+28>>2]|0;k[_>>2]=J;L=e-L|0;if((1-g-K+((L|0)==0?0:(L<<5)+-1|0)|0)>>>0>255){gl(k[e+-4>>2]|0);k[X>>2]=(k[X>>2]|0)+-4}k[c>>2]=j;k[$>>2]=b;k[W>>2]=l;k[d>>2]=k[V>>2];k[d+4>>2]=k[V+4>>2];k[d+8>>2]=k[V+8>>2];k[aa>>2]=k[V>>2];k[aa+4>>2]=k[V+4>>2];k[aa+8>>2]=k[V+8>>2];p=Bg(a,M,c,aa,h)|0;l=d+(p<<2)|0;e=k[l>>2]|0;g=k[a>>2]|0;L=g-e|0;do if(!L){if((M|0)>0){m=k[f>>2]|0;b=m+84|0;l=m+68|0;e=m+40|0;m=m+64|0;j=k[N>>2]|0;g=0;n=j;while(1){if(!(i[b>>0]|0))h=k[(k[l>>2]|0)+(n<<2)>>2]|0;else h=n;K=e;L=k[K>>2]|0;K=Pi(h|0,((h|0)<0)<<31>>31|0,L|0,k[K+4>>2]|0)|0;nh((k[k[m>>2]>>2]|0)+K|0,c|0,L|0)|0;g=g+1|0;if((g|0)==(M|0))break;else n=n+1|0}k[N>>2]=M+j}}else{if(!M){g=14;break a}if(M>>>0>=3){k[aa>>2]=k[c>>2];k[Q>>2]=k[$>>2];k[R>>2]=k[W>>2];j=aa+(p<<2)|0;k[j>>2]=(k[j>>2]|0)+(1<>>1)-g|0;h=M-b|0;if((b|0)==(h|0)){n=b;o=b}else{M=k[S>>2]|0;g=k[T>>2]|0;j=(k[g>>2]&1<<31-M|0)!=0;M=M+1|0;k[S>>2]=M;if((M|0)==32){k[T>>2]=g+4;k[S>>2]=0}n=j?b:h;o=j?h:b}k[l>>2]=e+1;if(n|0){k[U>>2]=k[d>>2];k[U+4>>2]=k[d+4>>2];k[U+8>>2]=k[d+8>>2];l=k[c>>2]|0;e=k[$>>2]|0;m=k[W>>2]|0;b=k[X>>2]|0;j=k[Y>>2]|0;M=b-j|0;g=k[Z>>2]|0;h=k[_>>2]|0;if((((M|0)==0?0:(M<<5)+-1|0)|0)==(h+g|0)){dc(ba);g=k[Z>>2]|0;h=k[_>>2]|0;b=k[X>>2]|0;j=k[Y>>2]|0}g=h+g|0;if((b|0)==(j|0))g=0;else g=(k[j+(g>>>7<<2)>>2]|0)+((g&127)<<5)|0;k[g>>2]=n;k[g+4>>2]=l;k[g+8>>2]=e;k[g+12>>2]=m;M=g+16|0;k[M>>2]=k[U>>2];k[M+4>>2]=k[U+4>>2];k[M+8>>2]=k[U+8>>2];k[g+28>>2]=p;k[_>>2]=(k[_>>2]|0)+1}if(o|0){k[U>>2]=k[d>>2];k[U+4>>2]=k[d+4>>2];k[U+8>>2]=k[d+8>>2];l=k[aa>>2]|0;e=k[Q>>2]|0;m=k[R>>2]|0;b=k[X>>2]|0;j=k[Y>>2]|0;M=b-j|0;g=k[Z>>2]|0;h=k[_>>2]|0;if((((M|0)==0?0:(M<<5)+-1|0)|0)==(h+g|0)){dc(ba);g=k[Z>>2]|0;h=k[_>>2]|0;b=k[X>>2]|0;j=k[Y>>2]|0}g=h+g|0;if((b|0)==(j|0))g=0;else g=(k[j+(g>>>7<<2)>>2]|0)+((g&127)<<5)|0;k[g>>2]=o;k[g+4>>2]=l;k[g+8>>2]=e;k[g+12>>2]=m;M=g+16|0;k[M>>2]=k[U>>2];k[M+4>>2]=k[U+4>>2];k[M+8>>2]=k[U+8>>2];k[g+28>>2]=p;k[_>>2]=(k[_>>2]|0)+1}break}x=(p|0)==2?0:p+1|0;t=(x|0)==2?0:x+1|0;K=g-(k[d+(x<<2)>>2]|0)|0;C=g-(k[d+(t<<2)>>2]|0)|0;G=k[f>>2]|0;D=G+84|0;E=G+68|0;F=G+40|0;G=G+64|0;H=aa+(p<<2)|0;I=(L|0)<33;J=(L|0)>0;n=c+(p<<2)|0;o=(K|0)==0;e=aa+(x<<2)|0;p=c+(x<<2)|0;q=(C|0)==0;m=aa+(t<<2)|0;s=c+(t<<2)|0;t=aa+(t<<2)|0;u=(C|0)<33;v=(C|0)>0;w=32-C|0;x=aa+(x<<2)|0;y=(K|0)<33;z=(K|0)>0;A=32-K|0;B=32-L|0;l=0;do{k[aa>>2]=0;k[aa+4>>2]=0;k[aa+8>>2]=0;if(!I){g=19;break a}if(!J){g=21;break a}j=k[O>>2]|0;g=32-j|0;b=k[P>>2]|0;h=k[b>>2]<>>B;k[H>>2]=g;j=j+L|0;k[O>>2]=j;if((j|0)==32){k[P>>2]=b+4;k[O>>2]=0}}else{ea=L-g|0;k[O>>2]=ea;j=b+4|0;k[P>>2]=j;b=32-ea|0;g=(k[j>>2]|0)>>>b|h>>>(b-g|0);k[H>>2]=g}k[H>>2]=g|k[n>>2];do if(!o){if(!y){g=19;break a}if(!z){g=21;break a}j=k[O>>2]|0;g=32-j|0;b=k[P>>2]|0;h=k[b>>2]<(g|0)){ea=K-g|0;k[O>>2]=ea;b=b+4|0;k[P>>2]=b;ea=32-ea|0;g=(k[b>>2]|0)>>>ea|h>>>(ea-g|0);k[x>>2]=g;h=x;break}g=h>>>A;k[x>>2]=g;ea=j+K|0;k[O>>2]=ea;if((ea|0)==32){k[P>>2]=b+4;k[O>>2]=0;h=x}else h=x}else{h=e;g=k[e>>2]|0}while(0);k[h>>2]=g|k[p>>2];do if(!q){if(!u){g=19;break a}if(!v){g=21;break a}j=k[O>>2]|0;g=32-j|0;b=k[P>>2]|0;h=k[b>>2]<(g|0)){ea=C-g|0;k[O>>2]=ea;b=b+4|0;k[P>>2]=b;ea=32-ea|0;g=(k[b>>2]|0)>>>ea|h>>>(ea-g|0);k[t>>2]=g;h=t;break}g=h>>>w;k[t>>2]=g;ea=j+C|0;k[O>>2]=ea;if((ea|0)==32){k[P>>2]=b+4;k[O>>2]=0;h=t}else h=t}else{h=m;g=k[m>>2]|0}while(0);k[h>>2]=g|k[s>>2];g=k[N>>2]|0;k[N>>2]=g+1;if(!(i[D>>0]|0))g=k[(k[E>>2]|0)+(g<<2)>>2]|0;b=F;ea=k[b>>2]|0;b=Pi(g|0,((g|0)<0)<<31>>31|0,ea|0,k[b+4>>2]|0)|0;nh((k[k[G>>2]>>2]|0)+b|0,aa|0,ea|0)|0;l=l+1|0}while(l>>>0>>0)}while(0);g=k[_>>2]|0;if(!g){g=51;break}e=k[X>>2]|0}if((g|0)==14)Ka(13307,13345,231,13415);else if((g|0)==19)Ka(13428,13452,48,13480);else if((g|0)==21)Ka(13509,13452,49,13480);else if((g|0)==51){jf(ba);r=da;return}}function pb(a,b,c,d,e,f){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;f=f|0;var g=0,h=0,j=0,l=0,m=0,n=0,o=0,p=0,q=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,B=0,C=0,D=0,E=0,F=0,G=0,H=0,I=0,J=0,K=0,L=0,M=0,N=0,O=0,P=0,Q=0,R=0,S=0,T=0,U=0,V=0,W=0,X=0,Y=0,Z=0,_=0,$=0,aa=0,ba=0,da=0,ea=0;da=r;r=r+80|0;aa=da+64|0;j=da+16|0;ba=da+40|0;V=da+28|0;U=da;k[j>>2]=k[d>>2];k[j+4>>2]=k[d+4>>2];k[j+8>>2]=k[d+8>>2];m=k[c>>2]|0;$=c+4|0;n=k[$>>2]|0;W=c+8|0;l=k[W>>2]|0;k[ba>>2]=0;k[ba+4>>2]=0;k[ba+8>>2]=0;k[ba+12>>2]=0;k[ba+16>>2]=0;k[ba+20>>2]=0;X=ba+8|0;Y=ba+4|0;Z=ba+16|0;_=ba+20|0;dc(ba);g=k[Y>>2]|0;o=k[X>>2]|0;h=(k[_>>2]|0)+(k[Z>>2]|0)|0;if((o|0)==(g|0))g=0;else g=(k[g+(h>>>7<<2)>>2]|0)+((h&127)<<5)|0;k[g>>2]=b;k[g+4>>2]=m;k[g+8>>2]=n;k[g+12>>2]=l;T=g+16|0;k[T>>2]=k[j>>2];k[T+4>>2]=k[j+4>>2];k[T+8>>2]=k[j+8>>2];k[g+28>>2]=e;g=(k[_>>2]|0)+1|0;k[_>>2]=g;if(!g){jf(ba);r=da;return}O=a+552|0;P=a+548|0;N=f+4|0;Q=aa+4|0;R=aa+8|0;S=a+592|0;T=a+588|0;e=o;a:while(1){K=k[Z>>2]|0;J=g+-1|0;h=J+K|0;L=k[Y>>2]|0;I=k[L+(h>>>7<<2)>>2]|0;h=h&127;M=k[I+(h<<5)>>2]|0;j=k[I+(h<<5)+4>>2]|0;b=k[I+(h<<5)+8>>2]|0;l=k[I+(h<<5)+12>>2]|0;H=I+(h<<5)+16|0;k[V>>2]=k[H>>2];k[V+4>>2]=k[H+4>>2];k[V+8>>2]=k[H+8>>2];h=k[I+(h<<5)+28>>2]|0;k[_>>2]=J;L=e-L|0;if((1-g-K+((L|0)==0?0:(L<<5)+-1|0)|0)>>>0>255){gl(k[e+-4>>2]|0);k[X>>2]=(k[X>>2]|0)+-4}k[c>>2]=j;k[$>>2]=b;k[W>>2]=l;k[d>>2]=k[V>>2];k[d+4>>2]=k[V+4>>2];k[d+8>>2]=k[V+8>>2];k[aa>>2]=k[V>>2];k[aa+4>>2]=k[V+4>>2];k[aa+8>>2]=k[V+8>>2];p=bj(a,M,c,aa,h)|0;l=d+(p<<2)|0;e=k[l>>2]|0;g=k[a>>2]|0;L=g-e|0;do if(!L){if((M|0)>0){m=k[f>>2]|0;b=m+84|0;l=m+68|0;e=m+40|0;m=m+64|0;j=k[N>>2]|0;g=0;n=j;while(1){if(!(i[b>>0]|0))h=k[(k[l>>2]|0)+(n<<2)>>2]|0;else h=n;K=e;L=k[K>>2]|0;K=Pi(h|0,((h|0)<0)<<31>>31|0,L|0,k[K+4>>2]|0)|0;nh((k[k[m>>2]>>2]|0)+K|0,c|0,L|0)|0;g=g+1|0;if((g|0)==(M|0))break;else n=n+1|0}k[N>>2]=M+j}}else{if(!M){g=14;break a}if(M>>>0>=3){k[aa>>2]=k[c>>2];k[Q>>2]=k[$>>2];k[R>>2]=k[W>>2];j=aa+(p<<2)|0;k[j>>2]=(k[j>>2]|0)+(1<>>1)-g|0;h=M-b|0;if((b|0)==(h|0)){n=b;o=b}else{M=k[S>>2]|0;g=k[T>>2]|0;j=(k[g>>2]&1<<31-M|0)!=0;M=M+1|0;k[S>>2]=M;if((M|0)==32){k[T>>2]=g+4;k[S>>2]=0}n=j?b:h;o=j?h:b}k[l>>2]=e+1;if(n|0){k[U>>2]=k[d>>2];k[U+4>>2]=k[d+4>>2];k[U+8>>2]=k[d+8>>2];l=k[c>>2]|0;e=k[$>>2]|0;m=k[W>>2]|0;b=k[X>>2]|0;j=k[Y>>2]|0;M=b-j|0;g=k[Z>>2]|0;h=k[_>>2]|0;if((((M|0)==0?0:(M<<5)+-1|0)|0)==(h+g|0)){dc(ba);g=k[Z>>2]|0;h=k[_>>2]|0;b=k[X>>2]|0;j=k[Y>>2]|0}g=h+g|0;if((b|0)==(j|0))g=0;else g=(k[j+(g>>>7<<2)>>2]|0)+((g&127)<<5)|0;k[g>>2]=n;k[g+4>>2]=l;k[g+8>>2]=e;k[g+12>>2]=m;M=g+16|0;k[M>>2]=k[U>>2];k[M+4>>2]=k[U+4>>2];k[M+8>>2]=k[U+8>>2];k[g+28>>2]=p;k[_>>2]=(k[_>>2]|0)+1}if(o|0){k[U>>2]=k[d>>2];k[U+4>>2]=k[d+4>>2];k[U+8>>2]=k[d+8>>2];l=k[aa>>2]|0;e=k[Q>>2]|0;m=k[R>>2]|0;b=k[X>>2]|0;j=k[Y>>2]|0;M=b-j|0;g=k[Z>>2]|0;h=k[_>>2]|0;if((((M|0)==0?0:(M<<5)+-1|0)|0)==(h+g|0)){dc(ba);g=k[Z>>2]|0;h=k[_>>2]|0;b=k[X>>2]|0;j=k[Y>>2]|0}g=h+g|0;if((b|0)==(j|0))g=0;else g=(k[j+(g>>>7<<2)>>2]|0)+((g&127)<<5)|0;k[g>>2]=o;k[g+4>>2]=l;k[g+8>>2]=e;k[g+12>>2]=m;M=g+16|0;k[M>>2]=k[U>>2];k[M+4>>2]=k[U+4>>2];k[M+8>>2]=k[U+8>>2];k[g+28>>2]=p;k[_>>2]=(k[_>>2]|0)+1}break}x=(p|0)==2?0:p+1|0;t=(x|0)==2?0:x+1|0;K=g-(k[d+(x<<2)>>2]|0)|0;C=g-(k[d+(t<<2)>>2]|0)|0;G=k[f>>2]|0;D=G+84|0;E=G+68|0;F=G+40|0;G=G+64|0;H=aa+(p<<2)|0;I=(L|0)<33;J=(L|0)>0;n=c+(p<<2)|0;o=(K|0)==0;e=aa+(x<<2)|0;p=c+(x<<2)|0;q=(C|0)==0;m=aa+(t<<2)|0;s=c+(t<<2)|0;t=aa+(t<<2)|0;u=(C|0)<33;v=(C|0)>0;w=32-C|0;x=aa+(x<<2)|0;y=(K|0)<33;z=(K|0)>0;A=32-K|0;B=32-L|0;l=0;do{k[aa>>2]=0;k[aa+4>>2]=0;k[aa+8>>2]=0;if(!I){g=19;break a}if(!J){g=21;break a}j=k[O>>2]|0;g=32-j|0;b=k[P>>2]|0;h=k[b>>2]<>>B;k[H>>2]=g;j=j+L|0;k[O>>2]=j;if((j|0)==32){k[P>>2]=b+4;k[O>>2]=0}}else{ea=L-g|0;k[O>>2]=ea;j=b+4|0;k[P>>2]=j;b=32-ea|0;g=(k[j>>2]|0)>>>b|h>>>(b-g|0);k[H>>2]=g}k[H>>2]=g|k[n>>2];do if(!o){if(!y){g=19;break a}if(!z){g=21;break a}j=k[O>>2]|0;g=32-j|0;b=k[P>>2]|0;h=k[b>>2]<(g|0)){ea=K-g|0;k[O>>2]=ea;b=b+4|0;k[P>>2]=b;ea=32-ea|0;g=(k[b>>2]|0)>>>ea|h>>>(ea-g|0);k[x>>2]=g;h=x;break}g=h>>>A;k[x>>2]=g;ea=j+K|0;k[O>>2]=ea;if((ea|0)==32){k[P>>2]=b+4;k[O>>2]=0;h=x}else h=x}else{h=e;g=k[e>>2]|0}while(0);k[h>>2]=g|k[p>>2];do if(!q){if(!u){g=19;break a}if(!v){g=21;break a}j=k[O>>2]|0;g=32-j|0;b=k[P>>2]|0;h=k[b>>2]<(g|0)){ea=C-g|0;k[O>>2]=ea;b=b+4|0;k[P>>2]=b;ea=32-ea|0;g=(k[b>>2]|0)>>>ea|h>>>(ea-g|0);k[t>>2]=g;h=t;break}g=h>>>w;k[t>>2]=g;ea=j+C|0;k[O>>2]=ea;if((ea|0)==32){k[P>>2]=b+4;k[O>>2]=0;h=t}else h=t}else{h=m;g=k[m>>2]|0}while(0);k[h>>2]=g|k[s>>2];g=k[N>>2]|0;k[N>>2]=g+1;if(!(i[D>>0]|0))g=k[(k[E>>2]|0)+(g<<2)>>2]|0;b=F;ea=k[b>>2]|0;b=Pi(g|0,((g|0)<0)<<31>>31|0,ea|0,k[b+4>>2]|0)|0;nh((k[k[G>>2]>>2]|0)+b|0,aa|0,ea|0)|0;l=l+1|0}while(l>>>0>>0)}while(0);g=k[_>>2]|0;if(!g){g=51;break}e=k[X>>2]|0}if((g|0)==14)Ka(13307,13345,231,13415);else if((g|0)==19)Ka(13428,13452,48,13480);else if((g|0)==21)Ka(13509,13452,49,13480);else if((g|0)==51){jf(ba);r=da;return}}function qb(a,b){a=a|0;b=b|0;var c=0,d=0,e=0,f=0,g=0,h=0,j=0,m=0,n=0,o=0,p=0,q=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,B=0,C=0,D=0,E=0,F=0,G=0,H=0,I=0,J=0,K=0,L=0;J=r;r=r+976|0;I=J+960|0;B=J+8|0;q=J+952|0;C=J+944|0;D=J+936|0;E=J+928|0;F=J+920|0;G=J+912|0;H=J+904|0;v=J+896|0;x=J+888|0;y=J+880|0;z=J+872|0;A=J;d=k[k[a+4>>2]>>2]|0;a=k[(k[a+16>>2]|0)+4>>2]|0;if((d|0)<=-1)Ka(12883,12899,62,12927);c=k[a+4>>2]|0;if(((k[a+8>>2]|0)-c>>2|0)<=(d|0))Ka(12937,12899,63,12927);a=k[c+(d<<2)>>2]|0;i[a+84>>0]=1;c=k[a+68>>2]|0;d=a+72|0;e=k[d>>2]|0;if((e|0)!=(c|0))k[d>>2]=e+(~((e+-4-c|0)>>>2)<<2);d=b+8|0;c=k[d>>2]|0;d=k[d+4>>2]|0;e=b+16|0;g=e;f=k[g>>2]|0;g=k[g+4>>2]|0;if(!((d|0)>(g|0)|(d|0)==(g|0)&c>>>0>f>>>0)){I=0;r=J;return I|0}h=k[b>>2]|0;K=i[h+f>>0]|0;j=Bj(f|0,g|0,1,0)|0;m=M;L=e;k[L>>2]=j;k[L+4>>2]=m;switch(K<<24>>24){case 0:{if(((d|0)>(m|0)|(d|0)==(m|0)&c>>>0>j>>>0?(s=Bj(f|0,g|0,2,0)|0,t=e,k[t>>2]=s,k[t+4>>2]=M,t=Bj(f|0,g|0,6,0)|0,u=M,!((d|0)<(u|0)|(d|0)==(u|0)&c>>>0>>0)):0)?(L=h+s|0,L=l[L>>0]|l[L+1>>0]<<8|l[L+2>>0]<<16|l[L+3>>0]<<24,K=e,k[K>>2]=t,k[K+4>>2]=u,zg(a,L)|0,yj(B),k[q>>2]=a,k[q+4>>2]=0,k[I>>2]=k[q>>2],k[I+4>>2]=k[q+4>>2],ae(B,b,I)|0):0){L=1;r=J;return L|0}L=0;r=J;return L|0}case 1:{a:do if((d|0)>(m|0)|(d|0)==(m|0)&c>>>0>j>>>0?(w=i[h+j>>0]|0,n=Bj(f|0,g|0,2,0)|0,o=e,k[o>>2]=n,k[o+4>>2]=M,o=Bj(f|0,g|0,6,0)|0,p=M,!((d|0)<(p|0)|(d|0)==(p|0)&c>>>0>>0)):0){L=h+n|0;L=l[L>>0]|l[L+1>>0]<<8|l[L+2>>0]<<16|l[L+3>>0]<<24;K=e;k[K>>2]=o;k[K+4>>2]=p;zg(a,L)|0;do switch(w<<24>>24){case 0:{Hi(B);k[C>>2]=a;k[C+4>>2]=0;k[I>>2]=k[C>>2];k[I+4>>2]=k[C+4>>2];L=Ld(B,b,I)|0;Kh(B+68|0);Kh(B+48|0);Kh(B+28|0);Kh(B+8|0);if(L)a=1;else break a;r=J;return a|0}case 1:{Hi(B);k[D>>2]=a;k[D+4>>2]=0;k[I>>2]=k[D>>2];k[I+4>>2]=k[D+4>>2];L=Ld(B,b,I)|0;Kh(B+68|0);Kh(B+48|0);Kh(B+28|0);Kh(B+8|0);if(L)a=1;else break a;r=J;return a|0}case 2:{Ii(B);k[E>>2]=a;k[E+4>>2]=0;k[I>>2]=k[E>>2];k[I+4>>2]=k[E+4>>2];L=Md(B,b,I)|0;Kh(B+64|0);Kh(B+44|0);Kh(B+24|0);jl(B+8|0);if(L)a=1;else break a;r=J;return a|0}case 3:{Ii(B);k[F>>2]=a;k[F+4>>2]=0;k[I>>2]=k[F>>2];k[I+4>>2]=k[F+4>>2];L=Md(B,b,I)|0;Kh(B+64|0);Kh(B+44|0);Kh(B+24|0);jl(B+8|0);if(L)a=1;else break a;r=J;return a|0}case 4:{ui(B);k[G>>2]=a;k[G+4>>2]=0;k[I>>2]=k[G>>2];k[I+4>>2]=k[G+4>>2];L=zd(B,b,I)|0;Kh(B+576|0);Kh(B+556|0);Kh(B+536|0);jl(B+520|0);vg(B+8|0);if(L)a=1;else break a;r=J;return a|0}case 5:{ui(B);k[H>>2]=a;k[H+4>>2]=0;k[I>>2]=k[H>>2];k[I+4>>2]=k[H+4>>2];L=zd(B,b,I)|0;Kh(B+576|0);Kh(B+556|0);Kh(B+536|0);jl(B+520|0);vg(B+8|0);if(L)a=1;else break a;r=J;return a|0}case 6:{ui(B);k[v>>2]=a;k[v+4>>2]=0;k[I>>2]=k[v>>2];k[I+4>>2]=k[v+4>>2];L=yd(B,b,I)|0;Kh(B+576|0);Kh(B+556|0);Kh(B+536|0);jl(B+520|0);vg(B+8|0);if(L)a=1;else break a;r=J;return a|0}case 7:{ui(B);k[x>>2]=a;k[x+4>>2]=0;k[I>>2]=k[x>>2];k[I+4>>2]=k[x+4>>2];L=yd(B,b,I)|0;Kh(B+576|0);Kh(B+556|0);Kh(B+536|0);jl(B+520|0);vg(B+8|0);if(L)a=1;else break a;r=J;return a|0}case 8:{pi(B);k[y>>2]=a;k[y+4>>2]=0;k[I>>2]=k[y>>2];k[I+4>>2]=k[y+4>>2];L=xd(B,b,I)|0;Kh(B+840|0);Kh(B+820|0);Kh(B+800|0);Jk(B+776|0);ff(B+8|0);if(L)a=1;else break a;r=J;return a|0}case 9:{pi(B);k[z>>2]=a;k[z+4>>2]=0;k[I>>2]=k[z>>2];k[I+4>>2]=k[z+4>>2];L=xd(B,b,I)|0;Kh(B+840|0);Kh(B+820|0);Kh(B+800|0);Jk(B+776|0);ff(B+8|0);if(L)a=1;else break a;r=J;return a|0}case 10:{pi(B);k[A>>2]=a;k[A+4>>2]=0;k[I>>2]=k[A>>2];k[I+4>>2]=k[A+4>>2];L=wd(B,b,I)|0;Kh(B+840|0);Kh(B+820|0);Kh(B+800|0);Jk(B+776|0);ff(B+8|0);if(L)a=1;else break a;r=J;return a|0}default:break a}while(0)}while(0);L=0;r=J;return L|0}default:{L=0;r=J;return L|0}}return 0}function rb(a,b,c,d,e,f){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;f=f|0;var g=0,h=0,j=0,l=0,m=0,n=0,o=0,p=0,q=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,B=0,C=0,D=0,E=0,F=0,G=0,H=0,I=0,J=0,K=0,L=0,M=0,N=0,O=0,P=0,Q=0,R=0,S=0,T=0,U=0,V=0,W=0,X=0,Y=0,Z=0,_=0,$=0,aa=0,ba=0,da=0,ea=0;da=r;r=r+80|0;aa=da+64|0;j=da+16|0;ba=da+40|0;V=da+28|0;U=da;k[j>>2]=k[d>>2];k[j+4>>2]=k[d+4>>2];k[j+8>>2]=k[d+8>>2];m=k[c>>2]|0;$=c+4|0;n=k[$>>2]|0;W=c+8|0;l=k[W>>2]|0;k[ba>>2]=0;k[ba+4>>2]=0;k[ba+8>>2]=0;k[ba+12>>2]=0;k[ba+16>>2]=0;k[ba+20>>2]=0;X=ba+8|0;Y=ba+4|0;Z=ba+16|0;_=ba+20|0;dc(ba);g=k[Y>>2]|0;h=(k[_>>2]|0)+(k[Z>>2]|0)|0;if((k[X>>2]|0)==(g|0))g=0;else g=(k[g+(h>>>7<<2)>>2]|0)+((h&127)<<5)|0;k[g>>2]=b;k[g+4>>2]=m;k[g+8>>2]=n;k[g+12>>2]=l;T=g+16|0;k[T>>2]=k[j>>2];k[T+4>>2]=k[j+4>>2];k[T+8>>2]=k[j+8>>2];k[g+28>>2]=e;g=(k[_>>2]|0)+1|0;k[_>>2]=g;if(!g){jf(ba);r=da;return}O=a+816|0;P=a+812|0;N=f+4|0;Q=aa+4|0;R=aa+8|0;S=a+856|0;T=a+852|0;a:while(1){j=k[Y>>2]|0;L=k[Z>>2]|0;K=k[j+(L>>>7<<2)>>2]|0;h=L&127;M=k[K+(h<<5)>>2]|0;b=k[K+(h<<5)+4>>2]|0;l=k[K+(h<<5)+8>>2]|0;e=k[K+(h<<5)+12>>2]|0;J=K+(h<<5)+16|0;k[V>>2]=k[J>>2];k[V+4>>2]=k[J+4>>2];k[V+8>>2]=k[J+8>>2];h=k[K+(h<<5)+28>>2]|0;k[_>>2]=g+-1;L=L+1|0;k[Z>>2]=L;if(L>>>0>255){gl(k[j>>2]|0);k[Y>>2]=(k[Y>>2]|0)+4;k[Z>>2]=(k[Z>>2]|0)+-128}k[c>>2]=b;k[$>>2]=l;k[W>>2]=e;k[d>>2]=k[V>>2];k[d+4>>2]=k[V+4>>2];k[d+8>>2]=k[V+8>>2];k[aa>>2]=k[V>>2];k[aa+4>>2]=k[V+4>>2];k[aa+8>>2]=k[V+8>>2];p=Ag(a,M,c,aa,h)|0;l=d+(p<<2)|0;e=k[l>>2]|0;g=k[a>>2]|0;L=g-e|0;do if(!L){if((M|0)>0){m=k[f>>2]|0;b=m+84|0;l=m+68|0;e=m+40|0;m=m+64|0;j=k[N>>2]|0;g=0;n=j;while(1){if(!(i[b>>0]|0))h=k[(k[l>>2]|0)+(n<<2)>>2]|0;else h=n;K=e;L=k[K>>2]|0;K=Pi(h|0,((h|0)<0)<<31>>31|0,L|0,k[K+4>>2]|0)|0;nh((k[k[m>>2]>>2]|0)+K|0,c|0,L|0)|0;g=g+1|0;if((g|0)==(M|0))break;else n=n+1|0}k[N>>2]=M+j}}else{if(!M){g=14;break a}if(M>>>0>=3){k[aa>>2]=k[c>>2];k[Q>>2]=k[$>>2];k[R>>2]=k[W>>2];j=aa+(p<<2)|0;k[j>>2]=(k[j>>2]|0)+(1<>>1)-g|0;h=M-b|0;if((b|0)==(h|0)){n=b;o=b}else{M=k[S>>2]|0;g=k[T>>2]|0;j=(k[g>>2]&1<<31-M|0)!=0;M=M+1|0;k[S>>2]=M;if((M|0)==32){k[T>>2]=g+4;k[S>>2]=0}n=j?b:h;o=j?h:b}k[l>>2]=e+1;if(n|0){k[U>>2]=k[d>>2];k[U+4>>2]=k[d+4>>2];k[U+8>>2]=k[d+8>>2];l=k[c>>2]|0;e=k[$>>2]|0;m=k[W>>2]|0;b=k[X>>2]|0;j=k[Y>>2]|0;M=b-j|0;g=k[Z>>2]|0;h=k[_>>2]|0;if((((M|0)==0?0:(M<<5)+-1|0)|0)==(h+g|0)){dc(ba);g=k[Z>>2]|0;h=k[_>>2]|0;b=k[X>>2]|0;j=k[Y>>2]|0}g=h+g|0;if((b|0)==(j|0))g=0;else g=(k[j+(g>>>7<<2)>>2]|0)+((g&127)<<5)|0;k[g>>2]=n;k[g+4>>2]=l;k[g+8>>2]=e;k[g+12>>2]=m;M=g+16|0;k[M>>2]=k[U>>2];k[M+4>>2]=k[U+4>>2];k[M+8>>2]=k[U+8>>2];k[g+28>>2]=p;k[_>>2]=(k[_>>2]|0)+1}if(o|0){k[U>>2]=k[d>>2];k[U+4>>2]=k[d+4>>2];k[U+8>>2]=k[d+8>>2];l=k[aa>>2]|0;e=k[Q>>2]|0;m=k[R>>2]|0;b=k[X>>2]|0;j=k[Y>>2]|0;M=b-j|0;g=k[Z>>2]|0;h=k[_>>2]|0;if((((M|0)==0?0:(M<<5)+-1|0)|0)==(h+g|0)){dc(ba);g=k[Z>>2]|0;h=k[_>>2]|0;b=k[X>>2]|0;j=k[Y>>2]|0}g=h+g|0;if((b|0)==(j|0))g=0;else g=(k[j+(g>>>7<<2)>>2]|0)+((g&127)<<5)|0;k[g>>2]=o;k[g+4>>2]=l;k[g+8>>2]=e;k[g+12>>2]=m;M=g+16|0;k[M>>2]=k[U>>2];k[M+4>>2]=k[U+4>>2];k[M+8>>2]=k[U+8>>2];k[g+28>>2]=p;k[_>>2]=(k[_>>2]|0)+1}break}x=(p|0)==2?0:p+1|0;t=(x|0)==2?0:x+1|0;K=g-(k[d+(x<<2)>>2]|0)|0;C=g-(k[d+(t<<2)>>2]|0)|0;G=k[f>>2]|0;D=G+84|0;E=G+68|0;F=G+40|0;G=G+64|0;H=aa+(p<<2)|0;I=(L|0)<33;J=(L|0)>0;n=c+(p<<2)|0;o=(K|0)==0;e=aa+(x<<2)|0;p=c+(x<<2)|0;q=(C|0)==0;m=aa+(t<<2)|0;s=c+(t<<2)|0;t=aa+(t<<2)|0;u=(C|0)<33;v=(C|0)>0;w=32-C|0;x=aa+(x<<2)|0;y=(K|0)<33;z=(K|0)>0;A=32-K|0;B=32-L|0;l=0;do{k[aa>>2]=0;k[aa+4>>2]=0;k[aa+8>>2]=0;if(!I){g=19;break a}if(!J){g=21;break a}j=k[O>>2]|0;g=32-j|0;b=k[P>>2]|0;h=k[b>>2]<>>B;k[H>>2]=g;j=j+L|0;k[O>>2]=j;if((j|0)==32){k[P>>2]=b+4;k[O>>2]=0}}else{ea=L-g|0;k[O>>2]=ea;j=b+4|0;k[P>>2]=j;b=32-ea|0;g=(k[j>>2]|0)>>>b|h>>>(b-g|0);k[H>>2]=g}k[H>>2]=g|k[n>>2];do if(!o){if(!y){g=19;break a}if(!z){g=21;break a}j=k[O>>2]|0;g=32-j|0;b=k[P>>2]|0;h=k[b>>2]<(g|0)){ea=K-g|0;k[O>>2]=ea;b=b+4|0;k[P>>2]=b;ea=32-ea|0;g=(k[b>>2]|0)>>>ea|h>>>(ea-g|0);k[x>>2]=g;h=x;break}g=h>>>A;k[x>>2]=g;ea=j+K|0;k[O>>2]=ea;if((ea|0)==32){k[P>>2]=b+4;k[O>>2]=0;h=x}else h=x}else{h=e;g=k[e>>2]|0}while(0);k[h>>2]=g|k[p>>2];do if(!q){if(!u){g=19;break a}if(!v){g=21;break a}j=k[O>>2]|0;g=32-j|0;b=k[P>>2]|0;h=k[b>>2]<(g|0)){ea=C-g|0;k[O>>2]=ea;b=b+4|0;k[P>>2]=b;ea=32-ea|0;g=(k[b>>2]|0)>>>ea|h>>>(ea-g|0);k[t>>2]=g;h=t;break}g=h>>>w;k[t>>2]=g;ea=j+C|0;k[O>>2]=ea;if((ea|0)==32){k[P>>2]=b+4;k[O>>2]=0;h=t}else h=t}else{h=m;g=k[m>>2]|0}while(0);k[h>>2]=g|k[s>>2];g=k[N>>2]|0;k[N>>2]=g+1;if(!(i[D>>0]|0))g=k[(k[E>>2]|0)+(g<<2)>>2]|0;b=F;ea=k[b>>2]|0;b=Pi(g|0,((g|0)<0)<<31>>31|0,ea|0,k[b+4>>2]|0)|0;nh((k[k[G>>2]>>2]|0)+b|0,aa|0,ea|0)|0;l=l+1|0}while(l>>>0>>0)}while(0);g=k[_>>2]|0;if(!g){g=50;break}}if((g|0)==14)Ka(13307,13345,231,13415);else if((g|0)==19)Ka(13428,13452,48,13480);else if((g|0)==21)Ka(13509,13452,49,13480);else if((g|0)==50){jf(ba);r=da;return}}function sb(a,b,c,d,e,f){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;f=f|0;var g=0,h=0,j=0,l=0,m=0,n=0,o=0,p=0,q=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,B=0,C=0,D=0,E=0,F=0,G=0,H=0,I=0,J=0,K=0,L=0,M=0,N=0,O=0,P=0,Q=0,R=0,S=0,T=0,U=0,V=0,W=0,X=0,Y=0,Z=0,_=0,$=0,aa=0,ba=0,da=0,ea=0,fa=0,ga=0;fa=r;r=r+96|0;da=fa+72|0;j=fa+16|0;ea=fa+48|0;W=fa+32|0;aa=fa+28|0;V=fa;k[j>>2]=k[d>>2];k[j+4>>2]=k[d+4>>2];k[j+8>>2]=k[d+8>>2];n=k[c>>2]|0;ba=c+4|0;l=k[ba>>2]|0;X=c+8|0;m=k[X>>2]|0;k[ea>>2]=0;k[ea+4>>2]=0;k[ea+8>>2]=0;k[ea+12>>2]=0;k[ea+16>>2]=0;k[ea+20>>2]=0;Y=ea+8|0;Z=ea+4|0;_=ea+16|0;$=ea+20|0;dc(ea);g=k[Z>>2]|0;o=k[Y>>2]|0;h=(k[$>>2]|0)+(k[_>>2]|0)|0;if((o|0)==(g|0))g=0;else g=(k[g+(h>>>7<<2)>>2]|0)+((h&127)<<5)|0;k[g>>2]=b;k[g+4>>2]=n;k[g+8>>2]=l;k[g+12>>2]=m;U=g+16|0;k[U>>2]=k[j>>2];k[U+4>>2]=k[j+4>>2];k[U+8>>2]=k[j+8>>2];k[g+28>>2]=e;g=(k[$>>2]|0)+1|0;k[$>>2]=g;if(!g){jf(ea);r=fa;return}O=a+40|0;P=a+36|0;N=f+4|0;Q=da+4|0;R=da+8|0;S=a+8|0;T=a+80|0;U=a+76|0;m=o;a:while(1){K=k[_>>2]|0;J=g+-1|0;h=J+K|0;L=k[Z>>2]|0;I=k[L+(h>>>7<<2)>>2]|0;h=h&127;M=k[I+(h<<5)>>2]|0;j=k[I+(h<<5)+4>>2]|0;b=k[I+(h<<5)+8>>2]|0;l=k[I+(h<<5)+12>>2]|0;H=I+(h<<5)+16|0;k[W>>2]=k[H>>2];k[W+4>>2]=k[H+4>>2];k[W+8>>2]=k[H+8>>2];h=k[I+(h<<5)+28>>2]|0;k[$>>2]=J;L=m-L|0;if((1-g-K+((L|0)==0?0:(L<<5)+-1|0)|0)>>>0>255){gl(k[m+-4>>2]|0);k[Y>>2]=(k[Y>>2]|0)+-4}k[c>>2]=j;k[ba>>2]=b;k[X>>2]=l;k[d>>2]=k[W>>2];k[d+4>>2]=k[W+4>>2];k[d+8>>2]=k[W+8>>2];k[da>>2]=k[W>>2];k[da+4>>2]=k[W+4>>2];k[da+8>>2]=k[W+8>>2];p=bj(a,M,c,da,h)|0;l=d+(p<<2)|0;m=k[l>>2]|0;g=k[a>>2]|0;L=g-m|0;do if(!L){if((M|0)>0){e=k[f>>2]|0;b=e+84|0;l=e+68|0;m=e+40|0;e=e+64|0;j=k[N>>2]|0;g=0;n=j;while(1){if(!(i[b>>0]|0))h=k[(k[l>>2]|0)+(n<<2)>>2]|0;else h=n;K=m;L=k[K>>2]|0;K=Pi(h|0,((h|0)<0)<<31>>31|0,L|0,k[K+4>>2]|0)|0;nh((k[k[e>>2]>>2]|0)+K|0,c|0,L|0)|0;g=g+1|0;if((g|0)==(M|0))break;else n=n+1|0}k[N>>2]=M+j}}else{if(!M){g=14;break a}if(M>>>0>=3){k[da>>2]=k[c>>2];k[Q>>2]=k[ba>>2];k[R>>2]=k[X>>2];b=da+(p<<2)|0;k[b>>2]=(k[b>>2]|0)+(1<>2]=0;Gg(S,b,aa);b=(M>>>1)-(k[aa>>2]|0)|0;h=M-b|0;if((b|0)==(h|0)){n=b;o=b}else{M=k[T>>2]|0;g=k[U>>2]|0;j=(k[g>>2]&1<<31-M|0)!=0;M=M+1|0;k[T>>2]=M;if((M|0)==32){k[U>>2]=g+4;k[T>>2]=0}n=j?b:h;o=j?h:b}k[l>>2]=m+1;if(n|0){k[V>>2]=k[d>>2];k[V+4>>2]=k[d+4>>2];k[V+8>>2]=k[d+8>>2];l=k[c>>2]|0;m=k[ba>>2]|0;e=k[X>>2]|0;b=k[Y>>2]|0;j=k[Z>>2]|0;M=b-j|0;g=k[_>>2]|0;h=k[$>>2]|0;if((((M|0)==0?0:(M<<5)+-1|0)|0)==(h+g|0)){dc(ea);g=k[_>>2]|0;h=k[$>>2]|0;b=k[Y>>2]|0;j=k[Z>>2]|0}g=h+g|0;if((b|0)==(j|0))g=0;else g=(k[j+(g>>>7<<2)>>2]|0)+((g&127)<<5)|0;k[g>>2]=n;k[g+4>>2]=l;k[g+8>>2]=m;k[g+12>>2]=e;M=g+16|0;k[M>>2]=k[V>>2];k[M+4>>2]=k[V+4>>2];k[M+8>>2]=k[V+8>>2];k[g+28>>2]=p;k[$>>2]=(k[$>>2]|0)+1}if(o|0){k[V>>2]=k[d>>2];k[V+4>>2]=k[d+4>>2];k[V+8>>2]=k[d+8>>2];l=k[da>>2]|0;m=k[Q>>2]|0;e=k[R>>2]|0;b=k[Y>>2]|0;j=k[Z>>2]|0;M=b-j|0;g=k[_>>2]|0;h=k[$>>2]|0;if((((M|0)==0?0:(M<<5)+-1|0)|0)==(h+g|0)){dc(ea);g=k[_>>2]|0;h=k[$>>2]|0;b=k[Y>>2]|0;j=k[Z>>2]|0}g=h+g|0;if((b|0)==(j|0))g=0;else g=(k[j+(g>>>7<<2)>>2]|0)+((g&127)<<5)|0;k[g>>2]=o;k[g+4>>2]=l;k[g+8>>2]=m;k[g+12>>2]=e;M=g+16|0;k[M>>2]=k[V>>2];k[M+4>>2]=k[V+4>>2];k[M+8>>2]=k[V+8>>2];k[g+28>>2]=p;k[$>>2]=(k[$>>2]|0)+1}break}x=(p|0)==2?0:p+1|0;t=(x|0)==2?0:x+1|0;K=g-(k[d+(x<<2)>>2]|0)|0;C=g-(k[d+(t<<2)>>2]|0)|0;G=k[f>>2]|0;D=G+84|0;E=G+68|0;F=G+40|0;G=G+64|0;H=da+(p<<2)|0;I=(L|0)<33;J=(L|0)>0;n=c+(p<<2)|0;o=(K|0)==0;m=da+(x<<2)|0;p=c+(x<<2)|0;q=(C|0)==0;e=da+(t<<2)|0;s=c+(t<<2)|0;t=da+(t<<2)|0;u=(C|0)<33;v=(C|0)>0;w=32-C|0;x=da+(x<<2)|0;y=(K|0)<33;z=(K|0)>0;A=32-K|0;B=32-L|0;l=0;do{k[da>>2]=0;k[da+4>>2]=0;k[da+8>>2]=0;if(!I){g=19;break a}if(!J){g=21;break a}j=k[O>>2]|0;g=32-j|0;b=k[P>>2]|0;h=k[b>>2]<>>B;k[H>>2]=g;j=j+L|0;k[O>>2]=j;if((j|0)==32){k[P>>2]=b+4;k[O>>2]=0}}else{ga=L-g|0;k[O>>2]=ga;j=b+4|0;k[P>>2]=j;b=32-ga|0;g=(k[j>>2]|0)>>>b|h>>>(b-g|0);k[H>>2]=g}k[H>>2]=g|k[n>>2];do if(!o){if(!y){g=19;break a}if(!z){g=21;break a}j=k[O>>2]|0;g=32-j|0;b=k[P>>2]|0;h=k[b>>2]<(g|0)){ga=K-g|0;k[O>>2]=ga;b=b+4|0;k[P>>2]=b;ga=32-ga|0;g=(k[b>>2]|0)>>>ga|h>>>(ga-g|0);k[x>>2]=g;h=x;break}g=h>>>A;k[x>>2]=g;ga=j+K|0;k[O>>2]=ga;if((ga|0)==32){k[P>>2]=b+4;k[O>>2]=0;h=x}else h=x}else{h=m;g=k[m>>2]|0}while(0);k[h>>2]=g|k[p>>2];do if(!q){if(!u){g=19;break a}if(!v){g=21;break a}j=k[O>>2]|0;g=32-j|0;b=k[P>>2]|0;h=k[b>>2]<(g|0)){ga=C-g|0;k[O>>2]=ga;b=b+4|0;k[P>>2]=b;ga=32-ga|0;g=(k[b>>2]|0)>>>ga|h>>>(ga-g|0);k[t>>2]=g;h=t;break}g=h>>>w;k[t>>2]=g;ga=j+C|0;k[O>>2]=ga;if((ga|0)==32){k[P>>2]=b+4;k[O>>2]=0;h=t}else h=t}else{h=e;g=k[e>>2]|0}while(0);k[h>>2]=g|k[s>>2];g=k[N>>2]|0;k[N>>2]=g+1;if(!(i[D>>0]|0))g=k[(k[E>>2]|0)+(g<<2)>>2]|0;b=F;ga=k[b>>2]|0;b=Pi(g|0,((g|0)<0)<<31>>31|0,ga|0,k[b+4>>2]|0)|0;nh((k[k[G>>2]>>2]|0)+b|0,da|0,ga|0)|0;l=l+1|0}while(l>>>0>>0)}while(0);g=k[$>>2]|0;if(!g){g=49;break}m=k[Y>>2]|0}if((g|0)==14)Ka(13307,13345,231,13415);else if((g|0)==19)Ka(13428,13452,48,13480);else if((g|0)==21)Ka(13509,13452,49,13480);else if((g|0)==49){jf(ea);r=fa;return}}function tb(a){a=a|0;var b=0,c=0,d=0,e=Pa,f=Pa,g=0,h=0,j=0,l=0,m=0,n=0,p=0,q=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,B=0,C=0,D=0,E=0,F=0,G=0,H=0,I=0,J=0,K=0,L=0,M=0,N=0,O=0,P=0,Q=0,R=0,S=0,T=Pa;S=r;r=r+64|0;R=S+28|0;O=S+16|0;J=S+4|0;K=S;Q=a;L=a+64|0;b=k[L>>2]|0;k[R>>2]=0;k[R+4>>2]=0;k[R+8>>2]=0;k[R+12>>2]=0;k[R+16>>2]=Q;M=R+20|0;o[M>>2]=da(1.0);k[R+24>>2]=Q;Cf(R,b);b=k[L>>2]|0;k[O>>2]=0;Q=O+4|0;k[Q>>2]=0;k[O+8>>2]=0;do if(b|0)if(b>>>0>1073741823)mk(O);else{E=b<<2;D=Si(E)|0;k[O>>2]=D;P=D+(b<<2)|0;k[O+8>>2]=P;Ah(D|0,0,E|0)|0;k[Q>>2]=P;break}while(0);k[J>>2]=0;P=J+4|0;k[P>>2]=0;k[J+8>>2]=0;k[K>>2]=0;a:do if((b|0)>0){z=R+16|0;B=R+4|0;C=R+12|0;D=R+8|0;E=J+8|0;A=R+24|0;b=0;y=0;b:while(1){v=k[z>>2]|0;j=k[v+4>>2]|0;v=(k[v+8>>2]|0)-j|0;u=(v|0)>0;if(u){h=j;l=v>>2;g=0;c=0;do{d=k[h+(g<<2)>>2]|0;if(!(i[d+84>>0]|0))d=k[(k[d+68>>2]|0)+(y<<2)>>2]|0;else d=y;c=d<<2^c<<1;g=g+1|0}while((g|0)<(l|0))}else c=0;w=k[B>>2]|0;x=(w|0)==0;c:do if(!x){p=w+-1|0;d=(p&w|0)==0;if(d)t=p&c;else t=(c>>>0)%(w>>>0)|0;c=k[(k[R>>2]|0)+(t<<2)>>2]|0;if((c|0)!=0?(G=k[c>>2]|0,(G|0)!=0):0){s=k[A>>2]|0;q=s+4|0;s=s+8|0;d:do if(d){c=G;while(1){if((k[c+4>>2]&p|0)!=(t|0)){N=41;break c}n=k[c+8>>2]|0;g=k[q>>2]|0;d=(k[s>>2]|0)-g|0;if((d|0)<=0)break d;m=d>>2;l=0;while(1){if((m|0)<=(l|0)){N=35;break b}d=k[g+(l<<2)>>2]|0;if(!(i[d+84>>0]|0)){h=k[d+68>>2]|0;d=k[h+(y<<2)>>2]|0;h=k[h+(n<<2)>>2]|0}else{d=y;h=n}l=l+1|0;if((h|0)!=(d|0))break;if((l|0)>=(m|0)){N=39;break d}}c=k[c>>2]|0;if(!c){N=41;break c}}}else{c=G;while(1){if((((k[c+4>>2]|0)>>>0)%(w>>>0)|0|0)!=(t|0)){N=41;break c}n=k[c+8>>2]|0;g=k[q>>2]|0;d=(k[s>>2]|0)-g|0;if((d|0)<=0)break d;m=d>>2;l=0;while(1){if((m|0)<=(l|0)){N=35;break b}d=k[g+(l<<2)>>2]|0;if(!(i[d+84>>0]|0)){h=k[d+68>>2]|0;d=k[h+(y<<2)>>2]|0;h=k[h+(n<<2)>>2]|0}else{d=y;h=n}l=l+1|0;if((h|0)!=(d|0))break;if((l|0)>=(m|0)){N=39;break d}}c=k[c>>2]|0;if(!c){N=41;break c}}}while(0);if((N|0)==39){N=0;if(!c){N=41;break}}k[(k[O>>2]|0)+(y<<2)>>2]=k[c+12>>2]}else N=41}else N=41;while(0);do if((N|0)==41){N=0;if(u){h=v>>2;g=0;c=0;do{d=k[j+(g<<2)>>2]|0;if(!(i[d+84>>0]|0))d=k[(k[d+68>>2]|0)+(y<<2)>>2]|0;else d=y;c=d<<2^c<<1;g=g+1|0}while((g|0)<(h|0));t=c}else t=0;e:do if(!x){p=w+-1|0;g=(p&w|0)==0;if(g)c=p&t;else c=(t>>>0)%(w>>>0)|0;d=k[(k[R>>2]|0)+(c<<2)>>2]|0;if((d|0)!=0?(H=k[d>>2]|0,(H|0)!=0):0){s=k[A>>2]|0;q=s+4|0;s=s+8|0;if(g){m=H;while(1){if((k[m+4>>2]&p|0)!=(c|0)){N=72;break e}n=k[m+8>>2]|0;g=k[q>>2]|0;d=(k[s>>2]|0)-g|0;if((d|0)<=0){c=y;break e}l=d>>2;j=0;while(1){if((l|0)<=(j|0)){N=68;break b}d=k[g+(j<<2)>>2]|0;if(!(i[d+84>>0]|0)){h=k[d+68>>2]|0;d=k[h+(y<<2)>>2]|0;h=k[h+(n<<2)>>2]|0}else{d=y;h=n}j=j+1|0;if((h|0)!=(d|0))break;if((j|0)>=(l|0)){c=y;break e}}m=k[m>>2]|0;if(!m){N=72;break}}}else{m=H;while(1){if((((k[m+4>>2]|0)>>>0)%(w>>>0)|0|0)!=(c|0)){N=72;break e}n=k[m+8>>2]|0;g=k[q>>2]|0;d=(k[s>>2]|0)-g|0;if((d|0)<=0){c=y;break e}l=d>>2;j=0;while(1){if((l|0)<=(j|0)){N=68;break b}d=k[g+(j<<2)>>2]|0;if(!(i[d+84>>0]|0)){h=k[d+68>>2]|0;d=k[h+(y<<2)>>2]|0;h=k[h+(n<<2)>>2]|0}else{d=y;h=n}j=j+1|0;if((h|0)!=(d|0))break;if((j|0)>=(l|0)){c=y;break e}}m=k[m>>2]|0;if(!m){N=72;break}}}}else N=72}else{c=0;N=72}while(0);if((N|0)==72){N=0;h=Si(16)|0;k[h+8>>2]=y;k[h+12>>2]=b;k[h+4>>2]=t;k[h>>2]=0;e=da(((k[C>>2]|0)+1|0)>>>0);T=da(w>>>0);f=da(o[M>>2]);do if(x|e>da(T*f)){c=(w>>>0>2&(w+-1&w|0)==0&1|w<<1)^1;d=~~da(_(da(e/f)))>>>0;Cf(R,c>>>0>>0?d:c);c=k[B>>2]|0;d=c+-1|0;if(!(d&c)){g=c;c=d&t;break}else{g=c;c=(t>>>0)%(c>>>0)|0;break}}else g=w;while(0);c=(k[R>>2]|0)+(c<<2)|0;d=k[c>>2]|0;if(!d){k[h>>2]=k[D>>2];k[D>>2]=h;k[c>>2]=D;c=k[h>>2]|0;if(c|0){c=k[c+4>>2]|0;d=g+-1|0;if(!(d&g))c=c&d;else c=(c>>>0)%(g>>>0)|0;k[(k[R>>2]|0)+(c<<2)>>2]=h}}else{k[h>>2]=k[d>>2];k[d>>2]=h}k[C>>2]=(k[C>>2]|0)+1;c=k[K>>2]|0}d=b+1|0;k[(k[O>>2]|0)+(c<<2)>>2]=b;b=k[P>>2]|0;if((b|0)==(k[E>>2]|0)){pg(J,K);b=d;break}else{k[b>>2]=k[K>>2];k[P>>2]=b+4;b=d;break}}while(0);y=(k[K>>2]|0)+1|0;k[K>>2]=y;c=k[L>>2]|0;if((y|0)>=(c|0)){F=b;I=c;break a}}if((N|0)==35)Ka(12937,12899,63,12927);else if((N|0)==68)Ka(12937,12899,63,12927)}else{F=0;I=0}while(0);if((F|0)!=(I|0)){Wa[k[(k[a>>2]|0)+20>>2]&7](a,O,J);k[L>>2]=F}b=k[J>>2]|0;c=b;if(b|0){d=k[P>>2]|0;if((d|0)!=(b|0))k[P>>2]=d+(~((d+-4-c|0)>>>2)<<2);gl(b)}b=k[O>>2]|0;c=b;if(b|0){d=k[Q>>2]|0;if((d|0)!=(b|0))k[Q>>2]=d+(~((d+-4-c|0)>>>2)<<2);gl(b)}b=k[R+8>>2]|0;if(b|0)do{Q=b;b=k[b>>2]|0;gl(Q)}while((b|0)!=0);b=k[R>>2]|0;k[R>>2]=0;if(!b){r=S;return}gl(b);r=S;return}function ub(a,b,c,d,e,f){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;f=f|0;var g=0,h=0,i=0,j=0,l=0,m=0,n=0,o=0,p=0,q=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,B=0,C=0,D=0,E=0,F=0,G=0,H=0,I=0,J=0,K=0,L=0,M=0,N=0,O=0,P=0,Q=0,R=0,S=0,T=0,U=0,V=0,W=0,X=0,Y=0,Z=0,_=0,$=0,aa=0,ba=0,da=0;ba=r;r=r+80|0;$=ba+64|0;i=ba+16|0;aa=ba+40|0;U=ba+28|0;T=ba;k[i>>2]=k[d>>2];k[i+4>>2]=k[d+4>>2];k[i+8>>2]=k[d+8>>2];l=k[c>>2]|0;_=c+4|0;m=k[_>>2]|0;V=c+8|0;j=k[V>>2]|0;k[aa>>2]=0;k[aa+4>>2]=0;k[aa+8>>2]=0;k[aa+12>>2]=0;k[aa+16>>2]=0;k[aa+20>>2]=0;W=aa+8|0;X=aa+4|0;Y=aa+16|0;Z=aa+20|0;dc(aa);g=k[X>>2]|0;n=k[W>>2]|0;h=(k[Z>>2]|0)+(k[Y>>2]|0)|0;if((n|0)==(g|0))g=0;else g=(k[g+(h>>>7<<2)>>2]|0)+((h&127)<<5)|0;k[g>>2]=b;k[g+4>>2]=l;k[g+8>>2]=m;k[g+12>>2]=j;S=g+16|0;k[S>>2]=k[i>>2];k[S+4>>2]=k[i+4>>2];k[S+8>>2]=k[i+8>>2];k[g+28>>2]=e;g=(k[Z>>2]|0)+1|0;k[Z>>2]=g;if(!g){jf(aa);r=ba;return}L=a+552|0;M=a+548|0;N=$+4|0;O=$+8|0;P=$+4|0;Q=$+8|0;R=a+592|0;S=a+588|0;e=n;a:while(1){I=k[Y>>2]|0;H=g+-1|0;h=H+I|0;J=k[X>>2]|0;G=k[J+(h>>>7<<2)>>2]|0;h=h&127;K=k[G+(h<<5)>>2]|0;i=k[G+(h<<5)+4>>2]|0;b=k[G+(h<<5)+8>>2]|0;j=k[G+(h<<5)+12>>2]|0;F=G+(h<<5)+16|0;k[U>>2]=k[F>>2];k[U+4>>2]=k[F+4>>2];k[U+8>>2]=k[F+8>>2];h=k[G+(h<<5)+28>>2]|0;k[Z>>2]=H;J=e-J|0;if((1-g-I+((J|0)==0?0:(J<<5)+-1|0)|0)>>>0>255){gl(k[e+-4>>2]|0);k[W>>2]=(k[W>>2]|0)+-4}k[c>>2]=i;k[_>>2]=b;k[V>>2]=j;k[d>>2]=k[U>>2];k[d+4>>2]=k[U+4>>2];k[d+8>>2]=k[U+8>>2];k[$>>2]=k[U>>2];k[$+4>>2]=k[U+4>>2];k[$+8>>2]=k[U+8>>2];o=Bg(a,K,c,$,h)|0;j=d+(o<<2)|0;e=k[j>>2]|0;g=k[a>>2]|0;J=g-e|0;do if(!J){if((K|0)>0){h=k[f>>2]|0;i=h+4|0;b=h+8|0;g=0;do{j=k[i>>2]|0;if((j|0)==(k[b>>2]|0))yf(h,c);else{k[j>>2]=k[c>>2];k[j+4>>2]=k[_>>2];k[j+8>>2]=k[V>>2];k[i>>2]=j+12}g=g+1|0}while((g|0)<(K|0))}}else{if(!K){g=15;break a}if(K>>>0>=3){k[$>>2]=k[c>>2];k[P>>2]=k[_>>2];k[Q>>2]=k[V>>2];i=$+(o<<2)|0;k[i>>2]=(k[i>>2]|0)+(1<>>1)-g|0;h=K-b|0;if((b|0)==(h|0)){m=b;n=b}else{K=k[R>>2]|0;g=k[S>>2]|0;i=(k[g>>2]&1<<31-K|0)!=0;K=K+1|0;k[R>>2]=K;if((K|0)==32){k[S>>2]=g+4;k[R>>2]=0}m=i?b:h;n=i?h:b}k[j>>2]=e+1;if(m|0){k[T>>2]=k[d>>2];k[T+4>>2]=k[d+4>>2];k[T+8>>2]=k[d+8>>2];j=k[c>>2]|0;e=k[_>>2]|0;l=k[V>>2]|0;b=k[W>>2]|0;i=k[X>>2]|0;K=b-i|0;g=k[Y>>2]|0;h=k[Z>>2]|0;if((((K|0)==0?0:(K<<5)+-1|0)|0)==(h+g|0)){dc(aa);g=k[Y>>2]|0;h=k[Z>>2]|0;b=k[W>>2]|0;i=k[X>>2]|0}g=h+g|0;if((b|0)==(i|0))g=0;else g=(k[i+(g>>>7<<2)>>2]|0)+((g&127)<<5)|0;k[g>>2]=m;k[g+4>>2]=j;k[g+8>>2]=e;k[g+12>>2]=l;K=g+16|0;k[K>>2]=k[T>>2];k[K+4>>2]=k[T+4>>2];k[K+8>>2]=k[T+8>>2];k[g+28>>2]=o;k[Z>>2]=(k[Z>>2]|0)+1}if(n|0){k[T>>2]=k[d>>2];k[T+4>>2]=k[d+4>>2];k[T+8>>2]=k[d+8>>2];j=k[$>>2]|0;e=k[P>>2]|0;l=k[Q>>2]|0;b=k[W>>2]|0;i=k[X>>2]|0;K=b-i|0;g=k[Y>>2]|0;h=k[Z>>2]|0;if((((K|0)==0?0:(K<<5)+-1|0)|0)==(h+g|0)){dc(aa);g=k[Y>>2]|0;h=k[Z>>2]|0;b=k[W>>2]|0;i=k[X>>2]|0}g=h+g|0;if((b|0)==(i|0))g=0;else g=(k[i+(g>>>7<<2)>>2]|0)+((g&127)<<5)|0;k[g>>2]=n;k[g+4>>2]=j;k[g+8>>2]=e;k[g+12>>2]=l;K=g+16|0;k[K>>2]=k[T>>2];k[K+4>>2]=k[T+4>>2];k[K+8>>2]=k[T+8>>2];k[g+28>>2]=o;k[Z>>2]=(k[Z>>2]|0)+1}break}w=(o|0)==2?0:o+1|0;s=(w|0)==2?0:w+1|0;I=g-(k[d+(w<<2)>>2]|0)|0;C=g-(k[d+(s<<2)>>2]|0)|0;B=k[f>>2]|0;D=B+4|0;E=B+8|0;F=$+(o<<2)|0;G=(J|0)<33;H=(J|0)>0;m=c+(o<<2)|0;n=(I|0)==0;e=$+(w<<2)|0;o=c+(w<<2)|0;p=(C|0)==0;l=$+(s<<2)|0;q=c+(s<<2)|0;s=$+(s<<2)|0;t=(C|0)<33;u=(C|0)>0;v=32-C|0;w=$+(w<<2)|0;x=(I|0)<33;y=(I|0)>0;z=32-I|0;A=32-J|0;j=0;do{k[$>>2]=0;k[$+4>>2]=0;k[$+8>>2]=0;if(!G){g=21;break a}if(!H){g=23;break a}i=k[L>>2]|0;g=32-i|0;b=k[M>>2]|0;h=k[b>>2]<>>A;k[F>>2]=g;i=i+J|0;k[L>>2]=i;if((i|0)==32){k[M>>2]=b+4;k[L>>2]=0}}else{da=J-g|0;k[L>>2]=da;i=b+4|0;k[M>>2]=i;b=32-da|0;g=(k[i>>2]|0)>>>b|h>>>(b-g|0);k[F>>2]=g}k[F>>2]=g|k[m>>2];do if(!n){if(!x){g=21;break a}if(!y){g=23;break a}i=k[L>>2]|0;g=32-i|0;b=k[M>>2]|0;h=k[b>>2]<(g|0)){da=I-g|0;k[L>>2]=da;b=b+4|0;k[M>>2]=b;da=32-da|0;g=(k[b>>2]|0)>>>da|h>>>(da-g|0);k[w>>2]=g;h=w;break}g=h>>>z;k[w>>2]=g;da=i+I|0;k[L>>2]=da;if((da|0)==32){k[M>>2]=b+4;k[L>>2]=0;h=w}else h=w}else{h=e;g=k[e>>2]|0}while(0);k[h>>2]=g|k[o>>2];do if(!p){if(!t){g=21;break a}if(!u){g=23;break a}i=k[L>>2]|0;g=32-i|0;b=k[M>>2]|0;h=k[b>>2]<(g|0)){da=C-g|0;k[L>>2]=da;b=b+4|0;k[M>>2]=b;da=32-da|0;g=(k[b>>2]|0)>>>da|h>>>(da-g|0);k[s>>2]=g;h=s;break}g=h>>>v;k[s>>2]=g;da=i+C|0;k[L>>2]=da;if((da|0)==32){k[M>>2]=b+4;k[L>>2]=0;h=s}else h=s}else{h=l;g=k[l>>2]|0}while(0);k[h>>2]=g|k[q>>2];g=k[D>>2]|0;if((g|0)==(k[E>>2]|0))yf(B,$);else{k[g>>2]=k[$>>2];k[g+4>>2]=k[N>>2];k[g+8>>2]=k[O>>2];k[D>>2]=g+12}j=j+1|0}while(j>>>0>>0)}while(0);g=k[Z>>2]|0;if(!g){g=52;break}e=k[W>>2]|0}if((g|0)==15)Ka(13307,13345,231,13415);else if((g|0)==21)Ka(13428,13452,48,13480);else if((g|0)==23)Ka(13509,13452,49,13480);else if((g|0)==52){jf(aa);r=ba;return}}function vb(a,b,c,d,e,f){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;f=f|0;var g=0,h=0,i=0,j=0,l=0,m=0,n=0,o=0,p=0,q=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,B=0,C=0,D=0,E=0,F=0,G=0,H=0,I=0,J=0,K=0,L=0,M=0,N=0,O=0,P=0,Q=0,R=0,S=0,T=0,U=0,V=0,W=0,X=0,Y=0,Z=0,_=0,$=0,aa=0,ba=0,da=0;ba=r;r=r+80|0;$=ba+64|0;i=ba+16|0;aa=ba+40|0;U=ba+28|0;T=ba;k[i>>2]=k[d>>2];k[i+4>>2]=k[d+4>>2];k[i+8>>2]=k[d+8>>2];l=k[c>>2]|0;_=c+4|0;m=k[_>>2]|0;V=c+8|0;j=k[V>>2]|0;k[aa>>2]=0;k[aa+4>>2]=0;k[aa+8>>2]=0;k[aa+12>>2]=0;k[aa+16>>2]=0;k[aa+20>>2]=0;W=aa+8|0;X=aa+4|0;Y=aa+16|0;Z=aa+20|0;dc(aa);g=k[X>>2]|0;n=k[W>>2]|0;h=(k[Z>>2]|0)+(k[Y>>2]|0)|0;if((n|0)==(g|0))g=0;else g=(k[g+(h>>>7<<2)>>2]|0)+((h&127)<<5)|0;k[g>>2]=b;k[g+4>>2]=l;k[g+8>>2]=m;k[g+12>>2]=j;S=g+16|0;k[S>>2]=k[i>>2];k[S+4>>2]=k[i+4>>2];k[S+8>>2]=k[i+8>>2];k[g+28>>2]=e;g=(k[Z>>2]|0)+1|0;k[Z>>2]=g;if(!g){jf(aa);r=ba;return}L=a+552|0;M=a+548|0;N=$+4|0;O=$+8|0;P=$+4|0;Q=$+8|0;R=a+592|0;S=a+588|0;e=n;a:while(1){I=k[Y>>2]|0;H=g+-1|0;h=H+I|0;J=k[X>>2]|0;G=k[J+(h>>>7<<2)>>2]|0;h=h&127;K=k[G+(h<<5)>>2]|0;i=k[G+(h<<5)+4>>2]|0;b=k[G+(h<<5)+8>>2]|0;j=k[G+(h<<5)+12>>2]|0;F=G+(h<<5)+16|0;k[U>>2]=k[F>>2];k[U+4>>2]=k[F+4>>2];k[U+8>>2]=k[F+8>>2];h=k[G+(h<<5)+28>>2]|0;k[Z>>2]=H;J=e-J|0;if((1-g-I+((J|0)==0?0:(J<<5)+-1|0)|0)>>>0>255){gl(k[e+-4>>2]|0);k[W>>2]=(k[W>>2]|0)+-4}k[c>>2]=i;k[_>>2]=b;k[V>>2]=j;k[d>>2]=k[U>>2];k[d+4>>2]=k[U+4>>2];k[d+8>>2]=k[U+8>>2];k[$>>2]=k[U>>2];k[$+4>>2]=k[U+4>>2];k[$+8>>2]=k[U+8>>2];o=bj(a,K,c,$,h)|0;j=d+(o<<2)|0;e=k[j>>2]|0;g=k[a>>2]|0;J=g-e|0;do if(!J){if((K|0)>0){h=k[f>>2]|0;i=h+4|0;b=h+8|0;g=0;do{j=k[i>>2]|0;if((j|0)==(k[b>>2]|0))yf(h,c);else{k[j>>2]=k[c>>2];k[j+4>>2]=k[_>>2];k[j+8>>2]=k[V>>2];k[i>>2]=j+12}g=g+1|0}while((g|0)<(K|0))}}else{if(!K){g=15;break a}if(K>>>0>=3){k[$>>2]=k[c>>2];k[P>>2]=k[_>>2];k[Q>>2]=k[V>>2];i=$+(o<<2)|0;k[i>>2]=(k[i>>2]|0)+(1<>>1)-g|0;h=K-b|0;if((b|0)==(h|0)){m=b;n=b}else{K=k[R>>2]|0;g=k[S>>2]|0;i=(k[g>>2]&1<<31-K|0)!=0;K=K+1|0;k[R>>2]=K;if((K|0)==32){k[S>>2]=g+4;k[R>>2]=0}m=i?b:h;n=i?h:b}k[j>>2]=e+1;if(m|0){k[T>>2]=k[d>>2];k[T+4>>2]=k[d+4>>2];k[T+8>>2]=k[d+8>>2];j=k[c>>2]|0;e=k[_>>2]|0;l=k[V>>2]|0;b=k[W>>2]|0;i=k[X>>2]|0;K=b-i|0;g=k[Y>>2]|0;h=k[Z>>2]|0;if((((K|0)==0?0:(K<<5)+-1|0)|0)==(h+g|0)){dc(aa);g=k[Y>>2]|0;h=k[Z>>2]|0;b=k[W>>2]|0;i=k[X>>2]|0}g=h+g|0;if((b|0)==(i|0))g=0;else g=(k[i+(g>>>7<<2)>>2]|0)+((g&127)<<5)|0;k[g>>2]=m;k[g+4>>2]=j;k[g+8>>2]=e;k[g+12>>2]=l;K=g+16|0;k[K>>2]=k[T>>2];k[K+4>>2]=k[T+4>>2];k[K+8>>2]=k[T+8>>2];k[g+28>>2]=o;k[Z>>2]=(k[Z>>2]|0)+1}if(n|0){k[T>>2]=k[d>>2];k[T+4>>2]=k[d+4>>2];k[T+8>>2]=k[d+8>>2];j=k[$>>2]|0;e=k[P>>2]|0;l=k[Q>>2]|0;b=k[W>>2]|0;i=k[X>>2]|0;K=b-i|0;g=k[Y>>2]|0;h=k[Z>>2]|0;if((((K|0)==0?0:(K<<5)+-1|0)|0)==(h+g|0)){dc(aa);g=k[Y>>2]|0;h=k[Z>>2]|0;b=k[W>>2]|0;i=k[X>>2]|0}g=h+g|0;if((b|0)==(i|0))g=0;else g=(k[i+(g>>>7<<2)>>2]|0)+((g&127)<<5)|0;k[g>>2]=n;k[g+4>>2]=j;k[g+8>>2]=e;k[g+12>>2]=l;K=g+16|0;k[K>>2]=k[T>>2];k[K+4>>2]=k[T+4>>2];k[K+8>>2]=k[T+8>>2];k[g+28>>2]=o;k[Z>>2]=(k[Z>>2]|0)+1}break}w=(o|0)==2?0:o+1|0;s=(w|0)==2?0:w+1|0;I=g-(k[d+(w<<2)>>2]|0)|0;C=g-(k[d+(s<<2)>>2]|0)|0;B=k[f>>2]|0;D=B+4|0;E=B+8|0;F=$+(o<<2)|0;G=(J|0)<33;H=(J|0)>0;m=c+(o<<2)|0;n=(I|0)==0;e=$+(w<<2)|0;o=c+(w<<2)|0;p=(C|0)==0;l=$+(s<<2)|0;q=c+(s<<2)|0;s=$+(s<<2)|0;t=(C|0)<33;u=(C|0)>0;v=32-C|0;w=$+(w<<2)|0;x=(I|0)<33;y=(I|0)>0;z=32-I|0;A=32-J|0;j=0;do{k[$>>2]=0;k[$+4>>2]=0;k[$+8>>2]=0;if(!G){g=21;break a}if(!H){g=23;break a}i=k[L>>2]|0;g=32-i|0;b=k[M>>2]|0;h=k[b>>2]<>>A;k[F>>2]=g;i=i+J|0;k[L>>2]=i;if((i|0)==32){k[M>>2]=b+4;k[L>>2]=0}}else{da=J-g|0;k[L>>2]=da;i=b+4|0;k[M>>2]=i;b=32-da|0;g=(k[i>>2]|0)>>>b|h>>>(b-g|0);k[F>>2]=g}k[F>>2]=g|k[m>>2];do if(!n){if(!x){g=21;break a}if(!y){g=23;break a}i=k[L>>2]|0;g=32-i|0;b=k[M>>2]|0;h=k[b>>2]<(g|0)){da=I-g|0;k[L>>2]=da;b=b+4|0;k[M>>2]=b;da=32-da|0;g=(k[b>>2]|0)>>>da|h>>>(da-g|0);k[w>>2]=g;h=w;break}g=h>>>z;k[w>>2]=g;da=i+I|0;k[L>>2]=da;if((da|0)==32){k[M>>2]=b+4;k[L>>2]=0;h=w}else h=w}else{h=e;g=k[e>>2]|0}while(0);k[h>>2]=g|k[o>>2];do if(!p){if(!t){g=21;break a}if(!u){g=23;break a}i=k[L>>2]|0;g=32-i|0;b=k[M>>2]|0;h=k[b>>2]<(g|0)){da=C-g|0;k[L>>2]=da;b=b+4|0;k[M>>2]=b;da=32-da|0;g=(k[b>>2]|0)>>>da|h>>>(da-g|0);k[s>>2]=g;h=s;break}g=h>>>v;k[s>>2]=g;da=i+C|0;k[L>>2]=da;if((da|0)==32){k[M>>2]=b+4;k[L>>2]=0;h=s}else h=s}else{h=l;g=k[l>>2]|0}while(0);k[h>>2]=g|k[q>>2];g=k[D>>2]|0;if((g|0)==(k[E>>2]|0))yf(B,$);else{k[g>>2]=k[$>>2];k[g+4>>2]=k[N>>2];k[g+8>>2]=k[O>>2];k[D>>2]=g+12}j=j+1|0}while(j>>>0>>0)}while(0);g=k[Z>>2]|0;if(!g){g=52;break}e=k[W>>2]|0}if((g|0)==15)Ka(13307,13345,231,13415);else if((g|0)==21)Ka(13428,13452,48,13480);else if((g|0)==23)Ka(13509,13452,49,13480);else if((g|0)==52){jf(aa);r=ba;return}}function wb(a,b,c,d,e,f){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;f=f|0;var g=0,h=0,i=0,j=0,l=0,m=0,n=0,o=0,p=0,q=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,B=0,C=0,D=0,E=0,F=0,G=0,H=0,I=0,J=0,K=0,L=0,M=0,N=0,O=0,P=0,Q=0,R=0,S=0,T=0,U=0,V=0,W=0,X=0,Y=0,Z=0,_=0,$=0,aa=0,ba=0,da=0;ba=r;r=r+80|0;$=ba+64|0;i=ba+16|0;aa=ba+40|0;U=ba+28|0;T=ba;k[i>>2]=k[d>>2];k[i+4>>2]=k[d+4>>2];k[i+8>>2]=k[d+8>>2];l=k[c>>2]|0;_=c+4|0;m=k[_>>2]|0;V=c+8|0;j=k[V>>2]|0;k[aa>>2]=0;k[aa+4>>2]=0;k[aa+8>>2]=0;k[aa+12>>2]=0;k[aa+16>>2]=0;k[aa+20>>2]=0;W=aa+8|0;X=aa+4|0;Y=aa+16|0;Z=aa+20|0;dc(aa);g=k[X>>2]|0;h=(k[Z>>2]|0)+(k[Y>>2]|0)|0;if((k[W>>2]|0)==(g|0))g=0;else g=(k[g+(h>>>7<<2)>>2]|0)+((h&127)<<5)|0;k[g>>2]=b;k[g+4>>2]=l;k[g+8>>2]=m;k[g+12>>2]=j;S=g+16|0;k[S>>2]=k[i>>2];k[S+4>>2]=k[i+4>>2];k[S+8>>2]=k[i+8>>2];k[g+28>>2]=e;g=(k[Z>>2]|0)+1|0;k[Z>>2]=g;if(!g){jf(aa);r=ba;return}L=a+816|0;M=a+812|0;N=$+4|0;O=$+8|0;P=$+4|0;Q=$+8|0;R=a+856|0;S=a+852|0;a:while(1){i=k[X>>2]|0;J=k[Y>>2]|0;I=k[i+(J>>>7<<2)>>2]|0;h=J&127;K=k[I+(h<<5)>>2]|0;b=k[I+(h<<5)+4>>2]|0;j=k[I+(h<<5)+8>>2]|0;e=k[I+(h<<5)+12>>2]|0;H=I+(h<<5)+16|0;k[U>>2]=k[H>>2];k[U+4>>2]=k[H+4>>2];k[U+8>>2]=k[H+8>>2];h=k[I+(h<<5)+28>>2]|0;k[Z>>2]=g+-1;J=J+1|0;k[Y>>2]=J;if(J>>>0>255){gl(k[i>>2]|0);k[X>>2]=(k[X>>2]|0)+4;k[Y>>2]=(k[Y>>2]|0)+-128}k[c>>2]=b;k[_>>2]=j;k[V>>2]=e;k[d>>2]=k[U>>2];k[d+4>>2]=k[U+4>>2];k[d+8>>2]=k[U+8>>2];k[$>>2]=k[U>>2];k[$+4>>2]=k[U+4>>2];k[$+8>>2]=k[U+8>>2];o=Ag(a,K,c,$,h)|0;j=d+(o<<2)|0;e=k[j>>2]|0;g=k[a>>2]|0;J=g-e|0;do if(!J){if((K|0)>0){h=k[f>>2]|0;i=h+4|0;b=h+8|0;g=0;do{j=k[i>>2]|0;if((j|0)==(k[b>>2]|0))yf(h,c);else{k[j>>2]=k[c>>2];k[j+4>>2]=k[_>>2];k[j+8>>2]=k[V>>2];k[i>>2]=j+12}g=g+1|0}while((g|0)<(K|0))}}else{if(!K){g=15;break a}if(K>>>0>=3){k[$>>2]=k[c>>2];k[P>>2]=k[_>>2];k[Q>>2]=k[V>>2];i=$+(o<<2)|0;k[i>>2]=(k[i>>2]|0)+(1<>>1)-g|0;h=K-b|0;if((b|0)==(h|0)){m=b;n=b}else{K=k[R>>2]|0;g=k[S>>2]|0;i=(k[g>>2]&1<<31-K|0)!=0;K=K+1|0;k[R>>2]=K;if((K|0)==32){k[S>>2]=g+4;k[R>>2]=0}m=i?b:h;n=i?h:b}k[j>>2]=e+1;if(m|0){k[T>>2]=k[d>>2];k[T+4>>2]=k[d+4>>2];k[T+8>>2]=k[d+8>>2];j=k[c>>2]|0;e=k[_>>2]|0;l=k[V>>2]|0;b=k[W>>2]|0;i=k[X>>2]|0;K=b-i|0;g=k[Y>>2]|0;h=k[Z>>2]|0;if((((K|0)==0?0:(K<<5)+-1|0)|0)==(h+g|0)){dc(aa);g=k[Y>>2]|0;h=k[Z>>2]|0;b=k[W>>2]|0;i=k[X>>2]|0}g=h+g|0;if((b|0)==(i|0))g=0;else g=(k[i+(g>>>7<<2)>>2]|0)+((g&127)<<5)|0;k[g>>2]=m;k[g+4>>2]=j;k[g+8>>2]=e;k[g+12>>2]=l;K=g+16|0;k[K>>2]=k[T>>2];k[K+4>>2]=k[T+4>>2];k[K+8>>2]=k[T+8>>2];k[g+28>>2]=o;k[Z>>2]=(k[Z>>2]|0)+1}if(n|0){k[T>>2]=k[d>>2];k[T+4>>2]=k[d+4>>2];k[T+8>>2]=k[d+8>>2];j=k[$>>2]|0;e=k[P>>2]|0;l=k[Q>>2]|0;b=k[W>>2]|0;i=k[X>>2]|0;K=b-i|0;g=k[Y>>2]|0;h=k[Z>>2]|0;if((((K|0)==0?0:(K<<5)+-1|0)|0)==(h+g|0)){dc(aa);g=k[Y>>2]|0;h=k[Z>>2]|0;b=k[W>>2]|0;i=k[X>>2]|0}g=h+g|0;if((b|0)==(i|0))g=0;else g=(k[i+(g>>>7<<2)>>2]|0)+((g&127)<<5)|0;k[g>>2]=n;k[g+4>>2]=j;k[g+8>>2]=e;k[g+12>>2]=l;K=g+16|0;k[K>>2]=k[T>>2];k[K+4>>2]=k[T+4>>2];k[K+8>>2]=k[T+8>>2];k[g+28>>2]=o;k[Z>>2]=(k[Z>>2]|0)+1}break}u=(o|0)==2?0:o+1|0;p=(u|0)==2?0:u+1|0;I=g-(k[d+(u<<2)>>2]|0)|0;C=g-(k[d+(p<<2)>>2]|0)|0;B=k[f>>2]|0;D=B+4|0;E=B+8|0;F=$+(o<<2)|0;G=(J|0)<33;H=(J|0)>0;z=c+(o<<2)|0;A=(I|0)==0;e=$+(u<<2)|0;m=c+(u<<2)|0;n=(C|0)==0;l=$+(p<<2)|0;o=c+(p<<2)|0;p=$+(p<<2)|0;q=(C|0)<33;s=(C|0)>0;t=32-C|0;u=$+(u<<2)|0;v=(I|0)<33;w=(I|0)>0;x=32-I|0;y=32-J|0;j=0;do{k[$>>2]=0;k[$+4>>2]=0;k[$+8>>2]=0;if(!G){g=21;break a}if(!H){g=23;break a}i=k[L>>2]|0;g=32-i|0;b=k[M>>2]|0;h=k[b>>2]<>>y;k[F>>2]=g;i=i+J|0;k[L>>2]=i;if((i|0)==32){k[M>>2]=b+4;k[L>>2]=0}}else{da=J-g|0;k[L>>2]=da;i=b+4|0;k[M>>2]=i;b=32-da|0;g=(k[i>>2]|0)>>>b|h>>>(b-g|0);k[F>>2]=g}k[F>>2]=g|k[z>>2];do if(!A){if(!v){g=21;break a}if(!w){g=23;break a}i=k[L>>2]|0;g=32-i|0;b=k[M>>2]|0;h=k[b>>2]<(g|0)){da=I-g|0;k[L>>2]=da;b=b+4|0;k[M>>2]=b;da=32-da|0;g=(k[b>>2]|0)>>>da|h>>>(da-g|0);k[u>>2]=g;h=u;break}g=h>>>x;k[u>>2]=g;da=i+I|0;k[L>>2]=da;if((da|0)==32){k[M>>2]=b+4;k[L>>2]=0;h=u}else h=u}else{h=e;g=k[e>>2]|0}while(0);k[h>>2]=g|k[m>>2];do if(!n){if(!q){g=21;break a}if(!s){g=23;break a}i=k[L>>2]|0;g=32-i|0;b=k[M>>2]|0;h=k[b>>2]<(g|0)){da=C-g|0;k[L>>2]=da;b=b+4|0;k[M>>2]=b;da=32-da|0;g=(k[b>>2]|0)>>>da|h>>>(da-g|0);k[p>>2]=g;h=p;break}g=h>>>t;k[p>>2]=g;da=i+C|0;k[L>>2]=da;if((da|0)==32){k[M>>2]=b+4;k[L>>2]=0;h=p}else h=p}else{h=l;g=k[l>>2]|0}while(0);k[h>>2]=g|k[o>>2];g=k[D>>2]|0;if((g|0)==(k[E>>2]|0))yf(B,$);else{k[g>>2]=k[$>>2];k[g+4>>2]=k[N>>2];k[g+8>>2]=k[O>>2];k[D>>2]=g+12}j=j+1|0}while(j>>>0>>0)}while(0);g=k[Z>>2]|0;if(!g){g=51;break}}if((g|0)==15)Ka(13307,13345,231,13415);else if((g|0)==21)Ka(13428,13452,48,13480);else if((g|0)==23)Ka(13509,13452,49,13480);else if((g|0)==51){jf(aa);r=ba;return}}function xb(a,b,c,d,e,f){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;f=f|0;var g=0,h=0,i=0,j=0,l=0,m=0,n=0,o=0,p=0,q=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,B=0,C=0,D=0,E=0,F=0,G=0,H=0,I=0,J=0,K=0,L=0,M=0,N=0,O=0,P=0,Q=0,R=0,S=0,T=0,U=0,V=0,W=0,X=0,Y=0,Z=0,_=0,$=0,aa=0,ba=0,da=0,ea=0,fa=0;ea=r;r=r+96|0;ba=ea+72|0;i=ea+16|0;da=ea+48|0;V=ea+32|0;$=ea+28|0;U=ea;k[i>>2]=k[d>>2];k[i+4>>2]=k[d+4>>2];k[i+8>>2]=k[d+8>>2];m=k[c>>2]|0;aa=c+4|0;j=k[aa>>2]|0;W=c+8|0;l=k[W>>2]|0;k[da>>2]=0;k[da+4>>2]=0;k[da+8>>2]=0;k[da+12>>2]=0;k[da+16>>2]=0;k[da+20>>2]=0;X=da+8|0;Y=da+4|0;Z=da+16|0;_=da+20|0;dc(da);g=k[Y>>2]|0;n=k[X>>2]|0;h=(k[_>>2]|0)+(k[Z>>2]|0)|0;if((n|0)==(g|0))g=0;else g=(k[g+(h>>>7<<2)>>2]|0)+((h&127)<<5)|0;k[g>>2]=b;k[g+4>>2]=m;k[g+8>>2]=j;k[g+12>>2]=l;T=g+16|0;k[T>>2]=k[i>>2];k[T+4>>2]=k[i+4>>2];k[T+8>>2]=k[i+8>>2];k[g+28>>2]=e;g=(k[_>>2]|0)+1|0;k[_>>2]=g;if(!g){jf(da);r=ea;return}L=a+40|0;M=a+36|0;N=ba+4|0;O=ba+8|0;P=ba+4|0;Q=ba+8|0;R=a+8|0;S=a+80|0;T=a+76|0;l=n;a:while(1){I=k[Z>>2]|0;H=g+-1|0;h=H+I|0;J=k[Y>>2]|0;G=k[J+(h>>>7<<2)>>2]|0;h=h&127;K=k[G+(h<<5)>>2]|0;i=k[G+(h<<5)+4>>2]|0;b=k[G+(h<<5)+8>>2]|0;j=k[G+(h<<5)+12>>2]|0;F=G+(h<<5)+16|0;k[V>>2]=k[F>>2];k[V+4>>2]=k[F+4>>2];k[V+8>>2]=k[F+8>>2];h=k[G+(h<<5)+28>>2]|0;k[_>>2]=H;J=l-J|0;if((1-g-I+((J|0)==0?0:(J<<5)+-1|0)|0)>>>0>255){gl(k[l+-4>>2]|0);k[X>>2]=(k[X>>2]|0)+-4}k[c>>2]=i;k[aa>>2]=b;k[W>>2]=j;k[d>>2]=k[V>>2];k[d+4>>2]=k[V+4>>2];k[d+8>>2]=k[V+8>>2];k[ba>>2]=k[V>>2];k[ba+4>>2]=k[V+4>>2];k[ba+8>>2]=k[V+8>>2];o=bj(a,K,c,ba,h)|0;j=d+(o<<2)|0;l=k[j>>2]|0;g=k[a>>2]|0;J=g-l|0;do if(!J){if((K|0)>0){h=k[f>>2]|0;i=h+4|0;b=h+8|0;g=0;do{j=k[i>>2]|0;if((j|0)==(k[b>>2]|0))yf(h,c);else{k[j>>2]=k[c>>2];k[j+4>>2]=k[aa>>2];k[j+8>>2]=k[W>>2];k[i>>2]=j+12}g=g+1|0}while((g|0)<(K|0))}}else{if(!K){g=15;break a}if(K>>>0>=3){k[ba>>2]=k[c>>2];k[P>>2]=k[aa>>2];k[Q>>2]=k[W>>2];b=ba+(o<<2)|0;k[b>>2]=(k[b>>2]|0)+(1<>2]=0;Gg(R,b,$);b=(K>>>1)-(k[$>>2]|0)|0;h=K-b|0;if((b|0)==(h|0)){m=b;n=b}else{K=k[S>>2]|0;g=k[T>>2]|0;i=(k[g>>2]&1<<31-K|0)!=0;K=K+1|0;k[S>>2]=K;if((K|0)==32){k[T>>2]=g+4;k[S>>2]=0}m=i?b:h;n=i?h:b}k[j>>2]=l+1;if(m|0){k[U>>2]=k[d>>2];k[U+4>>2]=k[d+4>>2];k[U+8>>2]=k[d+8>>2];j=k[c>>2]|0;l=k[aa>>2]|0;e=k[W>>2]|0;b=k[X>>2]|0;i=k[Y>>2]|0;K=b-i|0;g=k[Z>>2]|0;h=k[_>>2]|0;if((((K|0)==0?0:(K<<5)+-1|0)|0)==(h+g|0)){dc(da);g=k[Z>>2]|0;h=k[_>>2]|0;b=k[X>>2]|0;i=k[Y>>2]|0}g=h+g|0;if((b|0)==(i|0))g=0;else g=(k[i+(g>>>7<<2)>>2]|0)+((g&127)<<5)|0;k[g>>2]=m;k[g+4>>2]=j;k[g+8>>2]=l;k[g+12>>2]=e;K=g+16|0;k[K>>2]=k[U>>2];k[K+4>>2]=k[U+4>>2];k[K+8>>2]=k[U+8>>2];k[g+28>>2]=o;k[_>>2]=(k[_>>2]|0)+1}if(n|0){k[U>>2]=k[d>>2];k[U+4>>2]=k[d+4>>2];k[U+8>>2]=k[d+8>>2];j=k[ba>>2]|0;l=k[P>>2]|0;e=k[Q>>2]|0;b=k[X>>2]|0;i=k[Y>>2]|0;K=b-i|0;g=k[Z>>2]|0;h=k[_>>2]|0;if((((K|0)==0?0:(K<<5)+-1|0)|0)==(h+g|0)){dc(da);g=k[Z>>2]|0;h=k[_>>2]|0;b=k[X>>2]|0;i=k[Y>>2]|0}g=h+g|0;if((b|0)==(i|0))g=0;else g=(k[i+(g>>>7<<2)>>2]|0)+((g&127)<<5)|0;k[g>>2]=n;k[g+4>>2]=j;k[g+8>>2]=l;k[g+12>>2]=e;K=g+16|0;k[K>>2]=k[U>>2];k[K+4>>2]=k[U+4>>2];k[K+8>>2]=k[U+8>>2];k[g+28>>2]=o;k[_>>2]=(k[_>>2]|0)+1}break}w=(o|0)==2?0:o+1|0;s=(w|0)==2?0:w+1|0;I=g-(k[d+(w<<2)>>2]|0)|0;C=g-(k[d+(s<<2)>>2]|0)|0;B=k[f>>2]|0;D=B+4|0;E=B+8|0;F=ba+(o<<2)|0;G=(J|0)<33;H=(J|0)>0;m=c+(o<<2)|0;n=(I|0)==0;l=ba+(w<<2)|0;o=c+(w<<2)|0;p=(C|0)==0;e=ba+(s<<2)|0;q=c+(s<<2)|0;s=ba+(s<<2)|0;t=(C|0)<33;u=(C|0)>0;v=32-C|0;w=ba+(w<<2)|0;x=(I|0)<33;y=(I|0)>0;z=32-I|0;A=32-J|0;j=0;do{k[ba>>2]=0;k[ba+4>>2]=0;k[ba+8>>2]=0;if(!G){g=21;break a}if(!H){g=23;break a}i=k[L>>2]|0;g=32-i|0;b=k[M>>2]|0;h=k[b>>2]<>>A;k[F>>2]=g;i=i+J|0;k[L>>2]=i;if((i|0)==32){k[M>>2]=b+4;k[L>>2]=0}}else{fa=J-g|0;k[L>>2]=fa;i=b+4|0;k[M>>2]=i;b=32-fa|0;g=(k[i>>2]|0)>>>b|h>>>(b-g|0);k[F>>2]=g}k[F>>2]=g|k[m>>2];do if(!n){if(!x){g=21;break a}if(!y){g=23;break a}i=k[L>>2]|0;g=32-i|0;b=k[M>>2]|0;h=k[b>>2]<(g|0)){fa=I-g|0;k[L>>2]=fa;b=b+4|0;k[M>>2]=b;fa=32-fa|0;g=(k[b>>2]|0)>>>fa|h>>>(fa-g|0);k[w>>2]=g;h=w;break}g=h>>>z;k[w>>2]=g;fa=i+I|0;k[L>>2]=fa;if((fa|0)==32){k[M>>2]=b+4;k[L>>2]=0;h=w}else h=w}else{h=l;g=k[l>>2]|0}while(0);k[h>>2]=g|k[o>>2];do if(!p){if(!t){g=21;break a}if(!u){g=23;break a}i=k[L>>2]|0;g=32-i|0;b=k[M>>2]|0;h=k[b>>2]<(g|0)){fa=C-g|0;k[L>>2]=fa;b=b+4|0;k[M>>2]=b;fa=32-fa|0;g=(k[b>>2]|0)>>>fa|h>>>(fa-g|0);k[s>>2]=g;h=s;break}g=h>>>v;k[s>>2]=g;fa=i+C|0;k[L>>2]=fa;if((fa|0)==32){k[M>>2]=b+4;k[L>>2]=0;h=s}else h=s}else{h=e;g=k[e>>2]|0}while(0);k[h>>2]=g|k[q>>2];g=k[D>>2]|0;if((g|0)==(k[E>>2]|0))yf(B,ba);else{k[g>>2]=k[ba>>2];k[g+4>>2]=k[N>>2];k[g+8>>2]=k[O>>2];k[D>>2]=g+12}j=j+1|0}while(j>>>0>>0)}while(0);g=k[_>>2]|0;if(!g){g=50;break}l=k[X>>2]|0}if((g|0)==15)Ka(13307,13345,231,13415);else if((g|0)==21)Ka(13428,13452,48,13480);else if((g|0)==23)Ka(13509,13452,49,13480);else if((g|0)==50){jf(da);r=ea;return}}function yb(a,b,c){a=a|0;b=b|0;c=c|0;var d=0,e=0,f=0,g=0,h=0,j=0,m=0,n=0,o=0,p=0,q=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,B=0,C=0;z=r;r=r+912|0;h=z+908|0;s=z;t=z+904|0;u=z+900|0;v=z+896|0;w=z+892|0;x=z+888|0;y=z+884|0;j=z+880|0;m=z+876|0;n=z+872|0;o=z+868|0;p=z+864|0;g=b+8|0;B=g;e=k[B>>2]|0;B=k[B+4>>2]|0;q=b+16|0;f=q;d=k[f>>2]|0;f=Bj(d|0,k[f+4>>2]|0,4,0)|0;A=M;if((B|0)<(A|0)|(B|0)==(A|0)&e>>>0>>0){B=0;r=z;return B|0}B=(k[b>>2]|0)+d|0;B=l[B>>0]|l[B+1>>0]<<8|l[B+2>>0]<<16|l[B+3>>0]<<24;i[a>>0]=B;i[a+1>>0]=B>>8;i[a+2>>0]=B>>16;i[a+3>>0]=B>>24;B=q;f=k[B>>2]|0;B=k[B+4>>2]|0;d=Bj(f|0,B|0,4,0)|0;e=q;k[e>>2]=d;k[e+4>>2]=M;e=g;A=k[e>>2]|0;e=k[e+4>>2]|0;B=Bj(f|0,B|0,8,0)|0;f=M;if((e|0)<(f|0)|(e|0)==(f|0)&A>>>0>>0){B=0;r=z;return B|0}B=a+4|0;e=(k[b>>2]|0)+d|0;e=l[e>>0]|l[e+1>>0]<<8|l[e+2>>0]<<16|l[e+3>>0]<<24;i[B>>0]=e;i[B+1>>0]=e>>8;i[B+2>>0]=e>>16;i[B+3>>0]=e>>24;B=q;e=k[B>>2]|0;B=k[B+4>>2]|0;d=Bj(e|0,B|0,4,0)|0;f=q;k[f>>2]=d;k[f+4>>2]=M;f=a+12|0;C=g;A=k[C>>2]|0;C=k[C+4>>2]|0;B=Bj(e|0,B|0,8,0)|0;e=M;if((C|0)<(e|0)|(C|0)==(e|0)&A>>>0>>0){C=0;r=z;return C|0}e=(k[b>>2]|0)+d|0;e=l[e>>0]|l[e+1>>0]<<8|l[e+2>>0]<<16|l[e+3>>0]<<24;i[f>>0]=e;i[f+1>>0]=e>>8;i[f+2>>0]=e>>16;i[f+3>>0]=e>>24;C=q;A=k[C>>2]|0;C=k[C+4>>2]|0;d=Bj(A|0,C|0,4,0)|0;B=q;k[B>>2]=d;k[B+4>>2]=M;B=k[g>>2]|0;g=k[g+4>>2]|0;C=Bj(A|0,C|0,8,0)|0;A=M;if((g|0)<(A|0)|(g|0)==(A|0)&B>>>0>>0){C=0;r=z;return C|0}B=a+16|0;d=(k[b>>2]|0)+d|0;d=l[d>>0]|l[d+1>>0]<<8|l[d+2>>0]<<16|l[d+3>>0]<<24;i[B>>0]=d;i[B+1>>0]=d>>8;i[B+2>>0]=d>>16;i[B+3>>0]=d>>24;B=q;B=Bj(k[B>>2]|0,k[B+4>>2]|0,4,0)|0;C=q;k[C>>2]=B;k[C+4>>2]=M;a:do if(e|0)do switch(d|0){case 0:{lg(c,e);Hi(s);k[t>>2]=c;k[h>>2]=k[t>>2];Qd(s,b,h)|0;Kh(s+68|0);Kh(s+48|0);Kh(s+28|0);Kh(s+8|0);break a}case 1:{lg(c,e);Hi(s);k[u>>2]=c;k[h>>2]=k[u>>2];Qd(s,b,h)|0;Kh(s+68|0);Kh(s+48|0);Kh(s+28|0);Kh(s+8|0);break a}case 2:{lg(c,e);Ii(s);k[v>>2]=c;k[h>>2]=k[v>>2];Rd(s,b,h)|0;Kh(s+64|0);Kh(s+44|0);Kh(s+24|0);jl(s+8|0);break a}case 3:{lg(c,e);Ii(s);k[w>>2]=c;k[h>>2]=k[w>>2];Rd(s,b,h)|0;Kh(s+64|0);Kh(s+44|0);Kh(s+24|0);jl(s+8|0);break a}case 4:{lg(c,e);ui(s);k[x>>2]=c;k[h>>2]=k[x>>2];Fd(s,b,h)|0;Kh(s+576|0);Kh(s+556|0);Kh(s+536|0);jl(s+520|0);vg(s+8|0);break a}case 5:{lg(c,e);ui(s);k[y>>2]=c;k[h>>2]=k[y>>2];Fd(s,b,h)|0;Kh(s+576|0);Kh(s+556|0);Kh(s+536|0);jl(s+520|0);vg(s+8|0);break a}case 6:{lg(c,e);ui(s);k[j>>2]=c;k[h>>2]=k[j>>2];Ed(s,b,h)|0;Kh(s+576|0);Kh(s+556|0);Kh(s+536|0);jl(s+520|0);vg(s+8|0);break a}case 7:{lg(c,e);ui(s);k[m>>2]=c;k[h>>2]=k[m>>2];Ed(s,b,h)|0;Kh(s+576|0);Kh(s+556|0);Kh(s+536|0);jl(s+520|0);vg(s+8|0);break a}case 8:{lg(c,e);pi(s);k[n>>2]=c;k[h>>2]=k[n>>2];Cd(s,b,h)|0;Kh(s+840|0);Kh(s+820|0);Kh(s+800|0);Jk(s+776|0);ff(s+8|0);break a}case 9:{lg(c,e);pi(s);k[o>>2]=c;k[h>>2]=k[o>>2];Cd(s,b,h)|0;Kh(s+840|0);Kh(s+820|0);Kh(s+800|0);Jk(s+776|0);ff(s+8|0);break a}default:{lg(c,e);pi(s);k[p>>2]=c;k[h>>2]=k[p>>2];Bd(s,b,h)|0;Kh(s+840|0);Kh(s+820|0);Kh(s+800|0);Jk(s+776|0);ff(s+8|0);break a}}while(0);while(0);if((((k[c+4>>2]|0)-(k[c>>2]|0)|0)/12|0|0)==(k[f>>2]|0)){C=1;r=z;return C|0}else Ka(13169,13212,117,13276);return 0}function zb(a){a=a|0;var b=0,c=0,d=0,e=0,f=0,g=0,h=0,i=0,j=0,l=0,m=0,n=0,o=0,p=0,q=0;if(!a)return;c=a+-8|0;g=k[4194]|0;if(c>>>0>>0)Ba();a=k[a+-4>>2]|0;b=a&3;if((b|0)==1)Ba();d=a&-8;n=c+d|0;do if(!(a&1)){a=k[c>>2]|0;if(!b)return;j=c+(0-a)|0;i=a+d|0;if(j>>>0>>0)Ba();if((j|0)==(k[4195]|0)){a=n+4|0;b=k[a>>2]|0;if((b&3|0)!=3){q=j;e=i;break}k[4192]=i;k[a>>2]=b&-2;k[j+4>>2]=i|1;k[j+i>>2]=i;return}d=a>>>3;if(a>>>0<256){b=k[j+8>>2]|0;c=k[j+12>>2]|0;a=16800+(d<<1<<2)|0;if((b|0)!=(a|0)){if(b>>>0>>0)Ba();if((k[b+12>>2]|0)!=(j|0))Ba()}if((c|0)==(b|0)){k[4190]=k[4190]&~(1<>>0>>0)Ba();a=c+8|0;if((k[a>>2]|0)==(j|0))f=a;else Ba()}else f=c+8|0;k[b+12>>2]=c;k[f>>2]=b;q=j;e=i;break}f=k[j+24>>2]|0;c=k[j+12>>2]|0;do if((c|0)==(j|0)){c=j+16|0;b=c+4|0;a=k[b>>2]|0;if(!a){a=k[c>>2]|0;if(!a){h=0;break}else b=c}while(1){c=a+20|0;d=k[c>>2]|0;if(d|0){a=d;b=c;continue}c=a+16|0;d=k[c>>2]|0;if(!d)break;else{a=d;b=c}}if(b>>>0>>0)Ba();else{k[b>>2]=0;h=a;break}}else{d=k[j+8>>2]|0;if(d>>>0>>0)Ba();a=d+12|0;if((k[a>>2]|0)!=(j|0))Ba();b=c+8|0;if((k[b>>2]|0)==(j|0)){k[a>>2]=c;k[b>>2]=d;h=c;break}else Ba()}while(0);if(f){a=k[j+28>>2]|0;b=17064+(a<<2)|0;if((j|0)==(k[b>>2]|0)){k[b>>2]=h;if(!h){k[4191]=k[4191]&~(1<>>0<(k[4194]|0)>>>0)Ba();a=f+16|0;if((k[a>>2]|0)==(j|0))k[a>>2]=h;else k[f+20>>2]=h;if(!h){q=j;e=i;break}}c=k[4194]|0;if(h>>>0>>0)Ba();k[h+24>>2]=f;a=j+16|0;b=k[a>>2]|0;do if(b|0)if(b>>>0>>0)Ba();else{k[h+16>>2]=b;k[b+24>>2]=h;break}while(0);a=k[a+4>>2]|0;if(a)if(a>>>0<(k[4194]|0)>>>0)Ba();else{k[h+20>>2]=a;k[a+24>>2]=h;q=j;e=i;break}else{q=j;e=i}}else{q=j;e=i}}else{q=c;e=d}while(0);if(q>>>0>=n>>>0)Ba();a=n+4|0;b=k[a>>2]|0;if(!(b&1))Ba();if(!(b&2)){if((n|0)==(k[4196]|0)){p=(k[4193]|0)+e|0;k[4193]=p;k[4196]=q;k[q+4>>2]=p|1;if((q|0)!=(k[4195]|0))return;k[4195]=0;k[4192]=0;return}if((n|0)==(k[4195]|0)){p=(k[4192]|0)+e|0;k[4192]=p;k[4195]=q;k[q+4>>2]=p|1;k[q+p>>2]=p;return}e=(b&-8)+e|0;d=b>>>3;do if(b>>>0>=256){f=k[n+24>>2]|0;a=k[n+12>>2]|0;do if((a|0)==(n|0)){c=n+16|0;b=c+4|0;a=k[b>>2]|0;if(!a){a=k[c>>2]|0;if(!a){m=0;break}else b=c}while(1){c=a+20|0;d=k[c>>2]|0;if(d|0){a=d;b=c;continue}c=a+16|0;d=k[c>>2]|0;if(!d)break;else{a=d;b=c}}if(b>>>0<(k[4194]|0)>>>0)Ba();else{k[b>>2]=0;m=a;break}}else{b=k[n+8>>2]|0;if(b>>>0<(k[4194]|0)>>>0)Ba();c=b+12|0;if((k[c>>2]|0)!=(n|0))Ba();d=a+8|0;if((k[d>>2]|0)==(n|0)){k[c>>2]=a;k[d>>2]=b;m=a;break}else Ba()}while(0);if(f|0){a=k[n+28>>2]|0;b=17064+(a<<2)|0;if((n|0)==(k[b>>2]|0)){k[b>>2]=m;if(!m){k[4191]=k[4191]&~(1<>>0<(k[4194]|0)>>>0)Ba();a=f+16|0;if((k[a>>2]|0)==(n|0))k[a>>2]=m;else k[f+20>>2]=m;if(!m)break}c=k[4194]|0;if(m>>>0>>0)Ba();k[m+24>>2]=f;a=n+16|0;b=k[a>>2]|0;do if(b|0)if(b>>>0>>0)Ba();else{k[m+16>>2]=b;k[b+24>>2]=m;break}while(0);a=k[a+4>>2]|0;if(a|0)if(a>>>0<(k[4194]|0)>>>0)Ba();else{k[m+20>>2]=a;k[a+24>>2]=m;break}}}else{b=k[n+8>>2]|0;c=k[n+12>>2]|0;a=16800+(d<<1<<2)|0;if((b|0)!=(a|0)){if(b>>>0<(k[4194]|0)>>>0)Ba();if((k[b+12>>2]|0)!=(n|0))Ba()}if((c|0)==(b|0)){k[4190]=k[4190]&~(1<>>0<(k[4194]|0)>>>0)Ba();a=c+8|0;if((k[a>>2]|0)==(n|0))l=a;else Ba()}else l=c+8|0;k[b+12>>2]=c;k[l>>2]=b}while(0);k[q+4>>2]=e|1;k[q+e>>2]=e;if((q|0)==(k[4195]|0)){k[4192]=e;return}}else{k[a>>2]=b&-2;k[q+4>>2]=e|1;k[q+e>>2]=e}a=e>>>3;if(e>>>0<256){c=16800+(a<<1<<2)|0;b=k[4190]|0;a=1<>2]|0;if(b>>>0<(k[4194]|0)>>>0)Ba();else{o=b;p=a}}else{k[4190]=b|a;o=c;p=c+8|0}k[p>>2]=q;k[o+12>>2]=q;k[q+8>>2]=o;k[q+12>>2]=c;return}a=e>>>8;if(a)if(e>>>0>16777215)a=31;else{o=(a+1048320|0)>>>16&8;p=a<>>16&4;p=p<>>16&2;a=14-(n|o|a)+(p<>>15)|0;a=e>>>(a+7|0)&1|a<<1}else a=0;d=17064+(a<<2)|0;k[q+28>>2]=a;k[q+20>>2]=0;k[q+16>>2]=0;b=k[4191]|0;c=1<>>1)|0);d=k[d>>2]|0;while(1){if((k[d+4>>2]&-8|0)==(e|0)){a=130;break}c=d+16+(b>>>31<<2)|0;a=k[c>>2]|0;if(!a){a=127;break}else{b=b<<1;d=a}}if((a|0)==127)if(c>>>0<(k[4194]|0)>>>0)Ba();else{k[c>>2]=q;k[q+24>>2]=d;k[q+12>>2]=q;k[q+8>>2]=q;break}else if((a|0)==130){a=d+8|0;b=k[a>>2]|0;p=k[4194]|0;if(b>>>0>=p>>>0&d>>>0>=p>>>0){k[b+12>>2]=q;k[a>>2]=q;k[q+8>>2]=b;k[q+12>>2]=d;k[q+24>>2]=0;break}else Ba()}}else{k[4191]=b|c;k[d>>2]=q;k[q+24>>2]=d;k[q+12>>2]=q;k[q+8>>2]=q}while(0);q=(k[4198]|0)+-1|0;k[4198]=q;if(!q)a=17216;else return;while(1){a=k[a>>2]|0;if(!a)break;else a=a+8|0}k[4198]=-1;return}function Ab(a,b,c,d,e,f){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;f=f|0;var g=0,h=0,i=0,j=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,B=0,C=0,D=0,E=0,F=0,G=0,H=0,I=0,J=0,K=0,L=0;L=a+8|0;k[L>>2]=e;do if(d|0){f=k[b>>2]|0;l=a+16|0;k[l>>2]=f;j=a+12|0;k[j>>2]=f;if((d|0)>1){i=1;h=f;while(1){g=k[b+(i<<2)>>2]|0;if((g|0)>=(h|0))if((g|0)>(f|0)){k[l>>2]=g;f=g;g=h}else g=h;else k[j>>2]=g;i=i+1|0;if((i|0)==(d|0))break;else h=g}}else g=f;F=1-g+f|0;k[a+20>>2]=F;f=(F|0)/2|0;g=a+24|0;k[g>>2]=f;k[a+28>>2]=0-f;if(!(F&1))k[g>>2]=f+-1;f=a+32|0;g=a+36|0;j=k[g>>2]|0;h=k[f>>2]|0;i=j-h>>2;if(i>>>0>>0){eg(f,e-i|0);break}if(i>>>0>e>>>0?(m=h+(e<<2)|0,(j|0)!=(m|0)):0)k[g>>2]=j+(~((j+-4-m|0)>>>2)<<2)}while(0);s=k[a+48>>2]|0;t=k[a+52>>2]|0;u=e>>>0>1073741823?-1:e<<2;E=dl(u)|0;Ah(E|0,0,u|0)|0;F=dl(u)|0;Ah(F|0,0,u|0)|0;u=a+56|0;i=k[u>>2]|0;h=k[i+4>>2]|0;g=k[i>>2]|0;f=h-g|0;a:do if((f|0)>4){v=(e|0)>0;w=a+16|0;x=a+32|0;y=a+12|0;z=a+28|0;A=a+20|0;B=a+24|0;C=s+12|0;D=e<<2;q=f>>2;f=i;while(1){r=q+-1|0;if(h-g>>2>>>0<=r>>>0)break;p=k[g+(r<<2)>>2]|0;if(v)Ah(E|0,0,D|0)|0;if((p|0)>-1){o=k[C>>2]|0;m=0;n=p;while(1){g=k[o+(n<<2)>>2]|0;if((g|0)>=0){i=k[s>>2]|0;h=(g>>>0)%3|0;l=k[t>>2]|0;d=k[l+(k[i+(((g>>>0)/3|0)*12|0)+(h<<2)>>2]<<2)>>2]|0;f=g+1|0;f=((f|0)%3|0|0)==0?g+-2|0:f;if((f|0)<0)f=-1073741824;else f=k[i+(((f>>>0)/3|0)*12|0)+(((f>>>0)%3|0)<<2)>>2]|0;j=k[l+(f<<2)>>2]|0;f=((h|0)==0?2:-1)+g|0;if((f|0)<0)f=-1073741824;else f=k[i+(((f>>>0)/3|0)*12|0)+(((f>>>0)%3|0)<<2)>>2]|0;f=k[l+(f<<2)>>2]|0;if((d|0)<(r|0)&(j|0)<(r|0)&(f|0)<(r|0)){i=$(d,e)|0;h=$(j,e)|0;g=$(f,e)|0;if(v){f=0;do{k[F+(f<<2)>>2]=(k[b+(f+g<<2)>>2]|0)+(k[b+(f+h<<2)>>2]|0)-(k[b+(f+i<<2)>>2]|0);f=f+1|0}while((f|0)!=(e|0));if(v){f=0;do{d=E+(f<<2)|0;k[d>>2]=(k[d>>2]|0)+(k[F+(f<<2)>>2]|0);f=f+1|0}while((f|0)!=(e|0))}}g=m+1|0}else g=m}else g=m;f=(((n>>>0)%3|0|0)==0?2:-1)+n|0;do if((f|0)>=0){f=k[o+(f<<2)>>2]|0;if((f|0)>=0)if(!((f>>>0)%3|0)){f=f+2|0;break}else{f=f+-1|0;break}}while(0);n=(f|0)==(p|0)?-1073741824:f;if((n|0)<=-1)break;else m=g}d=$(r,e)|0;if(g){if(v){f=0;do{p=E+(f<<2)|0;k[p>>2]=(k[p>>2]|0)/(g|0)|0;f=f+1|0}while((f|0)!=(e|0))}l=b+(d<<2)|0;if((k[L>>2]|0)>0){j=0;do{i=k[E+(j<<2)>>2]|0;f=k[w>>2]|0;do if((i|0)<=(f|0)){f=k[y>>2]|0;g=k[x>>2]|0;h=g+(j<<2)|0;if((i|0)<(f|0)){k[h>>2]=f;h=g;break}else{k[h>>2]=i;h=g;break}}else{h=k[x>>2]|0;k[h+(j<<2)>>2]=f}while(0);j=j+1|0;f=k[L>>2]|0}while((j|0)<(f|0));if((f|0)>0){f=0;do{k[c+(f+d<<2)>>2]=(k[l+(f<<2)>>2]|0)-(k[h+(f<<2)>>2]|0);f=f+1|0;g=k[L>>2]|0}while((f|0)<(g|0));if((g|0)>0){f=0;do{g=c+(f+d<<2)|0;h=k[g>>2]|0;if((h|0)>=(k[z>>2]|0)){if((h|0)>(k[B>>2]|0))k[g>>2]=h-(k[A>>2]|0)}else k[g>>2]=(k[A>>2]|0)+h;f=f+1|0}while((f|0)<(k[L>>2]|0))}}}}else{H=d;J=46}}else{H=$(r,e)|0;J=46}if((J|0)==46?(J=0,G=b+(H<<2)|0,I=b+(($(q+-2|0,e)|0)<<2)|0,(k[L>>2]|0)>0):0){j=0;do{i=k[I+(j<<2)>>2]|0;f=k[w>>2]|0;do if((i|0)<=(f|0)){f=k[y>>2]|0;g=k[x>>2]|0;h=g+(j<<2)|0;if((i|0)<(f|0)){k[h>>2]=f;h=g;break}else{k[h>>2]=i;h=g;break}}else{h=k[x>>2]|0;k[h+(j<<2)>>2]=f}while(0);j=j+1|0;f=k[L>>2]|0}while((j|0)<(f|0));if((f|0)>0){f=0;do{k[c+(f+H<<2)>>2]=(k[G+(f<<2)>>2]|0)-(k[h+(f<<2)>>2]|0);f=f+1|0;g=k[L>>2]|0}while((f|0)<(g|0));if((g|0)>0){f=0;do{g=c+(f+H<<2)|0;h=k[g>>2]|0;if((h|0)>=(k[z>>2]|0)){if((h|0)>(k[B>>2]|0))k[g>>2]=h-(k[A>>2]|0)}else k[g>>2]=(k[A>>2]|0)+h;f=f+1|0}while((f|0)<(k[L>>2]|0))}}}if((r|0)<=1){K=E;break a}f=k[u>>2]|0;q=r;g=k[f>>2]|0;h=k[f+4>>2]|0}lk(f)}else K=E;while(0);if((e|0)>0)Ah(E|0,0,e<<2|0)|0;if((k[L>>2]|0)<=0){el(F);el(E);return 1}l=a+16|0;d=a+32|0;m=a+12|0;j=0;do{i=k[K+(j<<2)>>2]|0;f=k[l>>2]|0;do if((i|0)<=(f|0)){f=k[m>>2]|0;g=k[d>>2]|0;h=g+(j<<2)|0;if((i|0)<(f|0)){k[h>>2]=f;h=g;break}else{k[h>>2]=i;h=g;break}}else{h=k[d>>2]|0;k[h+(j<<2)>>2]=f}while(0);j=j+1|0;f=k[L>>2]|0}while((j|0)<(f|0));if((f|0)>0)f=0;else{el(F);el(E);return 1}do{k[c+(f<<2)>>2]=(k[b+(f<<2)>>2]|0)-(k[h+(f<<2)>>2]|0);f=f+1|0;g=k[L>>2]|0}while((f|0)<(g|0));if((g|0)<=0){el(F);el(E);return 1}j=a+28|0;l=a+20|0;g=a+24|0;f=0;do{h=c+(f<<2)|0;i=k[h>>2]|0;if((i|0)>=(k[j>>2]|0)){if((i|0)>(k[g>>2]|0))k[h>>2]=i-(k[l>>2]|0)}else k[h>>2]=(k[l>>2]|0)+i;f=f+1|0}while((f|0)<(k[L>>2]|0));el(F);el(E);return 1}function Bb(a,b,c,d,e,f){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;f=f|0;var g=0,h=0,i=0,j=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,B=0,C=0,D=0,E=0,F=0,G=0,H=0,I=0,J=0,K=0,L=0,M=0,N=0;N=a+8|0;k[N>>2]=e;do if(d|0){f=k[b>>2]|0;l=a+16|0;k[l>>2]=f;j=a+12|0;k[j>>2]=f;if((d|0)>1){i=1;h=f;while(1){g=k[b+(i<<2)>>2]|0;if((g|0)>=(h|0))if((g|0)>(f|0)){k[l>>2]=g;f=g;g=h}else g=h;else k[j>>2]=g;i=i+1|0;if((i|0)==(d|0))break;else h=g}}else g=f;D=1-g+f|0;k[a+20>>2]=D;f=(D|0)/2|0;g=a+24|0;k[g>>2]=f;k[a+28>>2]=0-f;if(!(D&1))k[g>>2]=f+-1;f=a+32|0;g=a+36|0;j=k[g>>2]|0;h=k[f>>2]|0;i=j-h>>2;if(i>>>0>>0){eg(f,e-i|0);break}if(i>>>0>e>>>0?(m=h+(e<<2)|0,(j|0)!=(m|0)):0)k[g>>2]=j+(~((j+-4-m|0)>>>2)<<2)}while(0);p=k[a+48>>2]|0;q=k[a+52>>2]|0;r=e>>>0>1073741823?-1:e<<2;C=dl(r)|0;Ah(C|0,0,r|0)|0;D=dl(r)|0;Ah(D|0,0,r|0)|0;r=a+56|0;i=k[r>>2]|0;h=k[i+4>>2]|0;g=k[i>>2]|0;f=h-g|0;a:do if((f|0)>4){s=(e|0)>0;t=a+16|0;u=a+32|0;v=a+12|0;w=a+28|0;x=a+20|0;y=a+24|0;z=p+64|0;A=p+28|0;B=e<<2;n=f>>2;f=i;while(1){o=n+-1|0;if(h-g>>2>>>0<=o>>>0)break;m=k[g+(o<<2)>>2]|0;if(s)Ah(C|0,0,B|0)|0;if((m|0)>-1){d=k[p>>2]|0;j=0;l=m;do{if(((k[d+(l>>>5<<2)>>2]&1<<(l&31)|0)==0?(E=k[(k[(k[z>>2]|0)+12>>2]|0)+(l<<2)>>2]|0,(E|0)>=0):0)?(H=k[A>>2]|0,i=k[q>>2]|0,F=k[i+(k[H+(E<<2)>>2]<<2)>>2]|0,G=E+1|0,G=k[i+(k[H+((((G|0)%3|0|0)==0?E+-2|0:G)<<2)>>2]<<2)>>2]|0,H=k[i+(k[H+((((E>>>0)%3|0|0)==0?2:-1)+E<<2)>>2]<<2)>>2]|0,(F|0)<(o|0)&(G|0)<(o|0)&(H|0)<(o|0)):0){g=$(F,e)|0;h=$(G,e)|0;i=$(H,e)|0;if(s){f=0;do{k[D+(f<<2)>>2]=(k[b+(f+i<<2)>>2]|0)+(k[b+(f+h<<2)>>2]|0)-(k[b+(f+g<<2)>>2]|0);f=f+1|0}while((f|0)!=(e|0));if(s){f=0;do{i=C+(f<<2)|0;k[i>>2]=(k[i>>2]|0)+(k[D+(f<<2)>>2]|0);f=f+1|0}while((f|0)!=(e|0))}}j=j+1|0}f=(((l>>>0)%3|0|0)==0?2:-1)+l|0;do if(!(k[d+(f>>>5<<2)>>2]&1<<(f&31))){if((f|0)>=0){f=k[(k[(k[z>>2]|0)+12>>2]|0)+(f<<2)>>2]|0;if((f|0)>=0)if(!((f>>>0)%3|0)){f=f+2|0;break}else{f=f+-1|0;break}}}else f=-1073741824;while(0);l=(f|0)==(m|0)?-1073741824:f}while((l|0)>-1);d=$(o,e)|0;if(j){if(s){f=0;do{m=C+(f<<2)|0;k[m>>2]=(k[m>>2]|0)/(j|0)|0;f=f+1|0}while((f|0)!=(e|0))}l=b+(d<<2)|0;if((k[N>>2]|0)>0){j=0;do{i=k[C+(j<<2)>>2]|0;f=k[t>>2]|0;do if((i|0)<=(f|0)){f=k[v>>2]|0;g=k[u>>2]|0;h=g+(j<<2)|0;if((i|0)<(f|0)){k[h>>2]=f;h=g;break}else{k[h>>2]=i;h=g;break}}else{h=k[u>>2]|0;k[h+(j<<2)>>2]=f}while(0);j=j+1|0;f=k[N>>2]|0}while((j|0)<(f|0));if((f|0)>0){f=0;do{k[c+(f+d<<2)>>2]=(k[l+(f<<2)>>2]|0)-(k[h+(f<<2)>>2]|0);f=f+1|0;g=k[N>>2]|0}while((f|0)<(g|0));if((g|0)>0){f=0;do{g=c+(f+d<<2)|0;h=k[g>>2]|0;if((h|0)>=(k[w>>2]|0)){if((h|0)>(k[y>>2]|0))k[g>>2]=h-(k[x>>2]|0)}else k[g>>2]=(k[x>>2]|0)+h;f=f+1|0}while((f|0)<(k[N>>2]|0))}}}}else{J=d;L=44}}else{J=$(o,e)|0;L=44}if((L|0)==44?(L=0,I=b+(J<<2)|0,K=b+(($(n+-2|0,e)|0)<<2)|0,(k[N>>2]|0)>0):0){j=0;do{i=k[K+(j<<2)>>2]|0;f=k[t>>2]|0;do if((i|0)<=(f|0)){f=k[v>>2]|0;g=k[u>>2]|0;h=g+(j<<2)|0;if((i|0)<(f|0)){k[h>>2]=f;h=g;break}else{k[h>>2]=i;h=g;break}}else{h=k[u>>2]|0;k[h+(j<<2)>>2]=f}while(0);j=j+1|0;f=k[N>>2]|0}while((j|0)<(f|0));if((f|0)>0){f=0;do{k[c+(f+J<<2)>>2]=(k[I+(f<<2)>>2]|0)-(k[h+(f<<2)>>2]|0);f=f+1|0;g=k[N>>2]|0}while((f|0)<(g|0));if((g|0)>0){f=0;do{g=c+(f+J<<2)|0;h=k[g>>2]|0;if((h|0)>=(k[w>>2]|0)){if((h|0)>(k[y>>2]|0))k[g>>2]=h-(k[x>>2]|0)}else k[g>>2]=(k[x>>2]|0)+h;f=f+1|0}while((f|0)<(k[N>>2]|0))}}}if((o|0)<=1){M=C;break a}f=k[r>>2]|0;n=o;g=k[f>>2]|0;h=k[f+4>>2]|0}lk(f)}else M=C;while(0);if((e|0)>0)Ah(C|0,0,e<<2|0)|0;if((k[N>>2]|0)<=0){el(D);el(C);return 1}l=a+16|0;d=a+32|0;m=a+12|0;j=0;do{i=k[M+(j<<2)>>2]|0;f=k[l>>2]|0;do if((i|0)<=(f|0)){f=k[m>>2]|0;g=k[d>>2]|0;h=g+(j<<2)|0;if((i|0)<(f|0)){k[h>>2]=f;h=g;break}else{k[h>>2]=i;h=g;break}}else{h=k[d>>2]|0;k[h+(j<<2)>>2]=f}while(0);j=j+1|0;f=k[N>>2]|0}while((j|0)<(f|0));if((f|0)>0)f=0;else{el(D);el(C);return 1}do{k[c+(f<<2)>>2]=(k[b+(f<<2)>>2]|0)-(k[h+(f<<2)>>2]|0);f=f+1|0;g=k[N>>2]|0}while((f|0)<(g|0));if((g|0)<=0){el(D);el(C);return 1}j=a+28|0;l=a+20|0;g=a+24|0;f=0;do{h=c+(f<<2)|0;i=k[h>>2]|0;if((i|0)>=(k[j>>2]|0)){if((i|0)>(k[g>>2]|0))k[h>>2]=i-(k[l>>2]|0)}else k[h>>2]=(k[l>>2]|0)+i;f=f+1|0}while((f|0)<(k[N>>2]|0));el(D);el(C);return 1}function Cb(a,b,c,d,e,f){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;f=f|0;var g=0,h=0,i=0,j=0,l=0,m=0,n=0,o=0,p=0,q=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,B=0,C=0,D=0,E=0,F=0,G=0,H=0,I=0,J=0,K=0,L=0;L=r;r=r+64|0;K=L+16|0;G=L;D=a+8|0;k[D>>2]=e;d=K;f=d+48|0;do{k[d>>2]=0;d=d+4|0}while((d|0)<(f|0));k[G>>2]=0;if(!e){d=0;f=0}else{Bf(K,e,G);d=k[K+12>>2]|0;f=k[K+16>>2]|0}k[G>>2]=0;g=K+16|0;h=f-d>>2;if(h>>>0>=e>>>0){if(h>>>0>e>>>0?(i=d+(e<<2)|0,(f|0)!=(i|0)):0)k[g>>2]=f+(~((f+-4-i|0)>>>2)<<2)}else Bf(K+12|0,e-h|0,G);d=K+24|0;k[G>>2]=0;f=K+28|0;i=k[f>>2]|0;h=k[d>>2]|0;g=i-h>>2;if(g>>>0>=e>>>0){if(g>>>0>e>>>0?(j=h+(e<<2)|0,(i|0)!=(j|0)):0)k[f>>2]=i+(~((i+-4-j|0)>>>2)<<2)}else Bf(d,e-g|0,G);d=K+36|0;k[G>>2]=0;f=K+40|0;i=k[f>>2]|0;h=k[d>>2]|0;g=i-h>>2;if(g>>>0>=e>>>0){if(g>>>0>e>>>0?(l=h+(e<<2)|0,(i|0)!=(l|0)):0)k[f>>2]=i+(~((i+-4-l|0)>>>2)<<2)}else Bf(d,e-g|0,G);Sf(D,k[K>>2]|0,b,c,0);v=k[a+24>>2]|0;B=k[a+28>>2]|0;C=Si(16)|0;k[C>>2]=0;k[C+4>>2]=0;k[C+8>>2]=0;k[C+12>>2]=0;Ih(G,e);z=a+32|0;g=k[z>>2]|0;h=k[g+4>>2]|0;f=k[g>>2]|0;A=h-f|0;y=A>>2;a:do if((A|0)>4){u=v+64|0;w=v+28|0;x=(e|0)>0;A=e<<2;d=1;while(1){if(h-f>>2>>>0<=d>>>0)break;p=k[f+(d<<2)>>2]|0;o=p+((p|0)<0?0:((p>>>0)%3|0|0)==0?2:-1)|0;q=o>>>5;s=1<<(o&31);t=(o|0)<0;n=1;f=0;g=p;b:while(1){do{if((g|0)<=-1){o=41;break b}i=k[K+(f*12|0)>>2]|0;if(((k[(k[v>>2]|0)+(g>>>5<<2)>>2]&1<<(g&31)|0)==0?(F=k[(k[(k[u>>2]|0)+12>>2]|0)+(g<<2)>>2]|0,(F|0)>=0):0)?(J=k[w>>2]|0,m=k[B>>2]|0,H=k[m+(k[J+(F<<2)>>2]<<2)>>2]|0,I=F+1|0,I=k[m+(k[J+((((I|0)%3|0|0)==0?F+-2|0:I)<<2)>>2]<<2)>>2]|0,J=k[m+(k[J+((((F>>>0)%3|0|0)==0?2:-1)+F<<2)>>2]<<2)>>2]|0,(H|0)<(d|0)&(I|0)<(d|0)&(J|0)<(d|0)):0){j=$(H,e)|0;l=$(I,e)|0;m=$(J,e)|0;if(x){h=0;do{k[i+(h<<2)>>2]=(k[c+(h+m<<2)>>2]|0)+(k[c+(h+l<<2)>>2]|0)-(k[c+(h+j<<2)>>2]|0);h=h+1|0}while((h|0)!=(e|0))}f=f+1|0;if((f|0)==4){f=4;o=22;break b}}do if(n){h=g+1|0;g=((h|0)%3|0|0)==0?g+-2|0:h;h=k[v>>2]|0;if(!(k[h+(g>>>5<<2)>>2]&1<<(g&31))){if((g|0)>=0){g=k[(k[(k[u>>2]|0)+12>>2]|0)+(g<<2)>>2]|0;i=g+1|0;if((g|0)>=0)g=((i|0)%3|0|0)==0?g+-2|0:i}}else g=-1073741824}else{g=(((g>>>0)%3|0|0)==0?2:-1)+g|0;h=k[v>>2]|0;if(!(k[h+(g>>>5<<2)>>2]&1<<(g&31))){if((g|0)>=0){g=k[(k[(k[u>>2]|0)+12>>2]|0)+(g<<2)>>2]|0;if((g|0)>=0)if(!((g>>>0)%3|0)){g=g+2|0;break}else{g=g+-1|0;break}}}else g=-1073741824}while(0);if((g|0)==(p|0)){o=41;break b}}while(!(n&(g|0)<0));g=(s&k[h+(q<<2)>>2]|0)!=0;if(g|t){n=0;g=g?-1073741824:o;continue}g=k[(k[(k[u>>2]|0)+12>>2]|0)+(o<<2)>>2]|0;if((g|0)<0){n=0;continue}if(!((g>>>0)%3|0)){n=0;g=g+2|0;continue}else{n=0;g=g+-1|0;continue}}if((o|0)==41)if((f|0)>0)o=22;else{f=$(d,e)|0;o=53}if((o|0)==22){o=0;if(x){Ah(k[G>>2]|0,0,A|0)|0;m=f+-1|0;l=C+(m<<2)|0;m=k[a+36+(m*12|0)>>2]|0;n=k[G>>2]|0;j=0;g=0;do{t=k[l>>2]|0;k[l>>2]=t+1;if(!(k[m+(t>>>5<<2)>>2]&1<<(t&31))){i=k[K+(j*12|0)>>2]|0;h=0;do{t=n+(h<<2)|0;k[t>>2]=(k[t>>2]|0)+(k[i+(h<<2)>>2]|0);h=h+1|0}while((h|0)!=(e|0));g=g+1|0}j=j+1|0}while((j|0)!=(f|0))}else{j=f+-1|0;i=C+(j<<2)|0;j=k[a+36+(j*12|0)>>2]|0;h=0;g=0;l=k[i>>2]|0;do{t=l;l=l+1|0;k[i>>2]=l;g=g+((k[j+(t>>>5<<2)>>2]&1<<(t&31)|0)==0&1)|0;h=h+1|0}while((h|0)!=(f|0))}f=$(d,e)|0;if(!g)o=53;else{i=k[G>>2]|0;if(x){h=0;do{t=i+(h<<2)|0;k[t>>2]=(k[t>>2]|0)/(g|0)|0;h=h+1|0}while((h|0)!=(e|0))}Sf(D,i,b,c+(f<<2)|0,f)}}if((o|0)==53)Sf(D,c+(($(d+-1|0,e)|0)<<2)|0,b,c+(f<<2)|0,f);d=d+1|0;if((d|0)>=(y|0)){E=G;break a}g=k[z>>2]|0;f=k[g>>2]|0;h=k[g+4>>2]|0}lk(g)}else E=G;while(0);g=k[E>>2]|0;h=g;if(g|0){d=G+4|0;f=k[d>>2]|0;if((f|0)!=(g|0))k[d>>2]=f+(~((f+-4-h|0)>>>2)<<2);gl(g)}gl(C);g=k[K+36>>2]|0;h=g;if(g|0){d=K+40|0;f=k[d>>2]|0;if((f|0)!=(g|0))k[d>>2]=f+(~((f+-4-h|0)>>>2)<<2);gl(g)}d=k[K+24>>2]|0;f=d;if(d|0){g=K+28|0;h=k[g>>2]|0;if((h|0)!=(d|0))k[g>>2]=h+(~((h+-4-f|0)>>>2)<<2);gl(d)}d=k[K+12>>2]|0;f=d;if(d|0){g=K+16|0;h=k[g>>2]|0;if((h|0)!=(d|0))k[g>>2]=h+(~((h+-4-f|0)>>>2)<<2);gl(d)}g=k[K>>2]|0;if(!g){r=L;return 1}d=K+4|0;f=k[d>>2]|0;if((f|0)!=(g|0))k[d>>2]=f+(~((f+-4-g|0)>>>2)<<2);gl(g);r=L;return 1}function Db(a,b,c,d,e,f){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;f=f|0;var g=0,h=0,i=0,j=0,l=0,m=0,n=0,o=0,p=0,q=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,B=0,C=0,D=0,E=0,F=0,G=0,H=0,I=0,J=0,K=0,L=0;L=r;r=r+64|0;K=L+16|0;G=L;D=a+8|0;k[D>>2]=e;d=K;f=d+48|0;do{k[d>>2]=0;d=d+4|0}while((d|0)<(f|0));k[G>>2]=0;if(!e){d=0;f=0}else{Bf(K,e,G);d=k[K+12>>2]|0;f=k[K+16>>2]|0}k[G>>2]=0;g=K+16|0;h=f-d>>2;if(h>>>0>=e>>>0){if(h>>>0>e>>>0?(i=d+(e<<2)|0,(f|0)!=(i|0)):0)k[g>>2]=f+(~((f+-4-i|0)>>>2)<<2)}else Bf(K+12|0,e-h|0,G);d=K+24|0;k[G>>2]=0;f=K+28|0;i=k[f>>2]|0;h=k[d>>2]|0;g=i-h>>2;if(g>>>0>=e>>>0){if(g>>>0>e>>>0?(j=h+(e<<2)|0,(i|0)!=(j|0)):0)k[f>>2]=i+(~((i+-4-j|0)>>>2)<<2)}else Bf(d,e-g|0,G);d=K+36|0;k[G>>2]=0;f=K+40|0;i=k[f>>2]|0;h=k[d>>2]|0;g=i-h>>2;if(g>>>0>=e>>>0){if(g>>>0>e>>>0?(l=h+(e<<2)|0,(i|0)!=(l|0)):0)k[f>>2]=i+(~((i+-4-l|0)>>>2)<<2)}else Bf(d,e-g|0,G);Uf(D,k[K>>2]|0,b,c,0);v=k[a+24>>2]|0;B=k[a+28>>2]|0;C=Si(16)|0;k[C>>2]=0;k[C+4>>2]=0;k[C+8>>2]=0;k[C+12>>2]=0;Ih(G,e);z=a+32|0;g=k[z>>2]|0;h=k[g+4>>2]|0;f=k[g>>2]|0;A=h-f|0;y=A>>2;a:do if((A|0)>4){u=v+64|0;w=v+28|0;x=(e|0)>0;A=e<<2;d=1;while(1){if(h-f>>2>>>0<=d>>>0)break;p=k[f+(d<<2)>>2]|0;o=p+((p|0)<0?0:((p>>>0)%3|0|0)==0?2:-1)|0;q=o>>>5;s=1<<(o&31);t=(o|0)<0;n=1;f=0;g=p;b:while(1){do{if((g|0)<=-1){o=41;break b}i=k[K+(f*12|0)>>2]|0;if(((k[(k[v>>2]|0)+(g>>>5<<2)>>2]&1<<(g&31)|0)==0?(F=k[(k[(k[u>>2]|0)+12>>2]|0)+(g<<2)>>2]|0,(F|0)>=0):0)?(J=k[w>>2]|0,m=k[B>>2]|0,H=k[m+(k[J+(F<<2)>>2]<<2)>>2]|0,I=F+1|0,I=k[m+(k[J+((((I|0)%3|0|0)==0?F+-2|0:I)<<2)>>2]<<2)>>2]|0,J=k[m+(k[J+((((F>>>0)%3|0|0)==0?2:-1)+F<<2)>>2]<<2)>>2]|0,(H|0)<(d|0)&(I|0)<(d|0)&(J|0)<(d|0)):0){j=$(H,e)|0;l=$(I,e)|0;m=$(J,e)|0;if(x){h=0;do{k[i+(h<<2)>>2]=(k[c+(h+m<<2)>>2]|0)+(k[c+(h+l<<2)>>2]|0)-(k[c+(h+j<<2)>>2]|0);h=h+1|0}while((h|0)!=(e|0))}f=f+1|0;if((f|0)==4){f=4;o=22;break b}}do if(n){h=g+1|0;g=((h|0)%3|0|0)==0?g+-2|0:h;h=k[v>>2]|0;if(!(k[h+(g>>>5<<2)>>2]&1<<(g&31))){if((g|0)>=0){g=k[(k[(k[u>>2]|0)+12>>2]|0)+(g<<2)>>2]|0;i=g+1|0;if((g|0)>=0)g=((i|0)%3|0|0)==0?g+-2|0:i}}else g=-1073741824}else{g=(((g>>>0)%3|0|0)==0?2:-1)+g|0;h=k[v>>2]|0;if(!(k[h+(g>>>5<<2)>>2]&1<<(g&31))){if((g|0)>=0){g=k[(k[(k[u>>2]|0)+12>>2]|0)+(g<<2)>>2]|0;if((g|0)>=0)if(!((g>>>0)%3|0)){g=g+2|0;break}else{g=g+-1|0;break}}}else g=-1073741824}while(0);if((g|0)==(p|0)){o=41;break b}}while(!(n&(g|0)<0));g=(s&k[h+(q<<2)>>2]|0)!=0;if(g|t){n=0;g=g?-1073741824:o;continue}g=k[(k[(k[u>>2]|0)+12>>2]|0)+(o<<2)>>2]|0;if((g|0)<0){n=0;continue}if(!((g>>>0)%3|0)){n=0;g=g+2|0;continue}else{n=0;g=g+-1|0;continue}}if((o|0)==41)if((f|0)>0)o=22;else{f=$(d,e)|0;o=53}if((o|0)==22){o=0;if(x){Ah(k[G>>2]|0,0,A|0)|0;m=f+-1|0;l=C+(m<<2)|0;m=k[a+36+(m*12|0)>>2]|0;n=k[G>>2]|0;j=0;g=0;do{t=k[l>>2]|0;k[l>>2]=t+1;if(!(k[m+(t>>>5<<2)>>2]&1<<(t&31))){i=k[K+(j*12|0)>>2]|0;h=0;do{t=n+(h<<2)|0;k[t>>2]=(k[t>>2]|0)+(k[i+(h<<2)>>2]|0);h=h+1|0}while((h|0)!=(e|0));g=g+1|0}j=j+1|0}while((j|0)!=(f|0))}else{j=f+-1|0;i=C+(j<<2)|0;j=k[a+36+(j*12|0)>>2]|0;h=0;g=0;l=k[i>>2]|0;do{t=l;l=l+1|0;k[i>>2]=l;g=g+((k[j+(t>>>5<<2)>>2]&1<<(t&31)|0)==0&1)|0;h=h+1|0}while((h|0)!=(f|0))}f=$(d,e)|0;if(!g)o=53;else{i=k[G>>2]|0;if(x){h=0;do{t=i+(h<<2)|0;k[t>>2]=(k[t>>2]|0)/(g|0)|0;h=h+1|0}while((h|0)!=(e|0))}Uf(D,i,b,c+(f<<2)|0,f)}}if((o|0)==53)Uf(D,c+(($(d+-1|0,e)|0)<<2)|0,b,c+(f<<2)|0,f);d=d+1|0;if((d|0)>=(y|0)){E=G;break a}g=k[z>>2]|0;f=k[g>>2]|0;h=k[g+4>>2]|0}lk(g)}else E=G;while(0);g=k[E>>2]|0;h=g;if(g|0){d=G+4|0;f=k[d>>2]|0;if((f|0)!=(g|0))k[d>>2]=f+(~((f+-4-h|0)>>>2)<<2);gl(g)}gl(C);g=k[K+36>>2]|0;h=g;if(g|0){d=K+40|0;f=k[d>>2]|0;if((f|0)!=(g|0))k[d>>2]=f+(~((f+-4-h|0)>>>2)<<2);gl(g)}d=k[K+24>>2]|0;f=d;if(d|0){g=K+28|0;h=k[g>>2]|0;if((h|0)!=(d|0))k[g>>2]=h+(~((h+-4-f|0)>>>2)<<2);gl(d)}d=k[K+12>>2]|0;f=d;if(d|0){g=K+16|0;h=k[g>>2]|0;if((h|0)!=(d|0))k[g>>2]=h+(~((h+-4-f|0)>>>2)<<2);gl(d)}g=k[K>>2]|0;if(!g){r=L;return 1}d=K+4|0;f=k[d>>2]|0;if((f|0)!=(g|0))k[d>>2]=f+(~((f+-4-g|0)>>>2)<<2);gl(g);r=L;return 1}function Eb(a,b,c,d,e,f){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;f=f|0;var g=0,h=0,i=0,j=0,l=0,m=0,n=0,o=0,p=0,q=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,B=0,C=0,D=0,E=0,F=0,G=0,H=0,I=0,J=0;J=r;r=r+64|0;I=J+16|0;H=J;F=a+8|0;k[F>>2]=e;d=I;f=d+48|0;do{k[d>>2]=0;d=d+4|0}while((d|0)<(f|0));k[H>>2]=0;if(!e){d=0;f=0}else{Bf(I,e,H);d=k[I+12>>2]|0;f=k[I+16>>2]|0}k[H>>2]=0;g=I+16|0;h=f-d>>2;if(h>>>0>=e>>>0){if(h>>>0>e>>>0?(i=d+(e<<2)|0,(f|0)!=(i|0)):0)k[g>>2]=f+(~((f+-4-i|0)>>>2)<<2)}else Bf(I+12|0,e-h|0,H);d=I+24|0;k[H>>2]=0;f=I+28|0;i=k[f>>2]|0;h=k[d>>2]|0;g=i-h>>2;if(g>>>0>=e>>>0){if(g>>>0>e>>>0?(j=h+(e<<2)|0,(i|0)!=(j|0)):0)k[f>>2]=i+(~((i+-4-j|0)>>>2)<<2)}else Bf(d,e-g|0,H);d=I+36|0;k[H>>2]=0;f=I+40|0;i=k[f>>2]|0;h=k[d>>2]|0;g=i-h>>2;if(g>>>0>=e>>>0){if(g>>>0>e>>>0?(l=h+(e<<2)|0,(i|0)!=(l|0)):0)k[f>>2]=i+(~((i+-4-l|0)>>>2)<<2)}else Bf(d,e-g|0,H);Sf(F,k[I>>2]|0,b,c,0);A=k[a+24>>2]|0;D=k[a+28>>2]|0;E=Si(16)|0;k[E>>2]=0;k[E+4>>2]=0;k[E+8>>2]=0;k[E+12>>2]=0;Ih(H,e);z=a+32|0;g=k[z>>2]|0;h=k[g+4>>2]|0;f=k[g>>2]|0;C=h-f|0;y=C>>2;a:do if((C|0)>4){x=A+12|0;B=(e|0)>0;C=e<<2;d=1;while(1){if(h-f>>2>>>0<=d>>>0)break;v=k[f+(d<<2)>>2]|0;u=(((v>>>0)%3|0|0)==0?2:-1)+v|0;w=(v|u|0)<0;t=(v|0)<0?v:u;s=1;f=0;g=v;b:while(1){do{if((g|0)<=-1){o=42;break b}p=k[I+(f*12|0)>>2]|0;q=k[x>>2]|0;i=k[q+(g<<2)>>2]|0;if((i|0)>=0){l=k[A>>2]|0;j=(i>>>0)%3|0;m=k[D>>2]|0;o=k[m+(k[l+(((i>>>0)/3|0)*12|0)+(j<<2)>>2]<<2)>>2]|0;h=i+1|0;h=((h|0)%3|0|0)==0?i+-2|0:h;if((h|0)<0)h=-1073741824;else h=k[l+(((h>>>0)/3|0)*12|0)+(((h>>>0)%3|0)<<2)>>2]|0;n=k[m+(h<<2)>>2]|0;h=((j|0)==0?2:-1)+i|0;if((h|0)<0)h=-1073741824;else h=k[l+(((h>>>0)/3|0)*12|0)+(((h>>>0)%3|0)<<2)>>2]|0;h=k[m+(h<<2)>>2]|0;if((o|0)<(d|0)&(n|0)<(d|0)&(h|0)<(d|0)){l=$(o,e)|0;j=$(n,e)|0;i=$(h,e)|0;if(B){h=0;do{k[p+(h<<2)>>2]=(k[c+(h+i<<2)>>2]|0)+(k[c+(h+j<<2)>>2]|0)-(k[c+(h+l<<2)>>2]|0);h=h+1|0}while((h|0)!=(e|0))}f=f+1|0;if((f|0)==4){f=4;o=25;break b}}}do if(s){p=g+1|0;g=((p|0)%3|0|0)==0?g+-2|0:p;if((g|0)>=0){g=k[q+(g<<2)>>2]|0;h=g+1|0;if((g|0)>=0)g=((h|0)%3|0|0)==0?g+-2|0:h}}else{g=(((g>>>0)%3|0|0)==0?2:-1)+g|0;if((g|0)>=0){g=k[q+(g<<2)>>2]|0;if((g|0)>=0)if(!((g>>>0)%3|0)){g=g+2|0;break}else{g=g+-1|0;break}}}while(0);if((g|0)==(v|0)){o=42;break b}}while(!(s&(g|0)<0));if(w){s=0;g=t;continue}g=k[q+(u<<2)>>2]|0;if((g|0)<0){s=0;continue}if(!((g>>>0)%3|0)){s=0;g=g+2|0;continue}else{s=0;g=g+-1|0;continue}}if((o|0)==42)if((f|0)>0)o=25;else{f=$(d,e)|0;o=54}if((o|0)==25){o=0;if(B){Ah(k[H>>2]|0,0,C|0)|0;m=f+-1|0;l=E+(m<<2)|0;m=k[a+36+(m*12|0)>>2]|0;n=k[H>>2]|0;j=0;g=0;do{w=k[l>>2]|0;k[l>>2]=w+1;if(!(k[m+(w>>>5<<2)>>2]&1<<(w&31))){i=k[I+(j*12|0)>>2]|0;h=0;do{w=n+(h<<2)|0;k[w>>2]=(k[w>>2]|0)+(k[i+(h<<2)>>2]|0);h=h+1|0}while((h|0)!=(e|0));g=g+1|0}j=j+1|0}while((j|0)!=(f|0))}else{j=f+-1|0;i=E+(j<<2)|0;j=k[a+36+(j*12|0)>>2]|0;h=0;g=0;l=k[i>>2]|0;do{w=l;l=l+1|0;k[i>>2]=l;g=g+((k[j+(w>>>5<<2)>>2]&1<<(w&31)|0)==0&1)|0;h=h+1|0}while((h|0)!=(f|0))}f=$(d,e)|0;if(!g)o=54;else{i=k[H>>2]|0;if(B){h=0;do{w=i+(h<<2)|0;k[w>>2]=(k[w>>2]|0)/(g|0)|0;h=h+1|0}while((h|0)!=(e|0))}Sf(F,i,b,c+(f<<2)|0,f)}}if((o|0)==54)Sf(F,c+(($(d+-1|0,e)|0)<<2)|0,b,c+(f<<2)|0,f);d=d+1|0;if((d|0)>=(y|0)){G=H;break a}g=k[z>>2]|0;f=k[g>>2]|0;h=k[g+4>>2]|0}lk(g)}else G=H;while(0);g=k[G>>2]|0;h=g;if(g|0){d=H+4|0;f=k[d>>2]|0;if((f|0)!=(g|0))k[d>>2]=f+(~((f+-4-h|0)>>>2)<<2);gl(g)}gl(E);g=k[I+36>>2]|0;h=g;if(g|0){d=I+40|0;f=k[d>>2]|0;if((f|0)!=(g|0))k[d>>2]=f+(~((f+-4-h|0)>>>2)<<2);gl(g)}d=k[I+24>>2]|0;f=d;if(d|0){g=I+28|0;h=k[g>>2]|0;if((h|0)!=(d|0))k[g>>2]=h+(~((h+-4-f|0)>>>2)<<2);gl(d)}d=k[I+12>>2]|0;f=d;if(d|0){g=I+16|0;h=k[g>>2]|0;if((h|0)!=(d|0))k[g>>2]=h+(~((h+-4-f|0)>>>2)<<2);gl(d)}g=k[I>>2]|0;if(!g){r=J;return 1}d=I+4|0;f=k[d>>2]|0;if((f|0)!=(g|0))k[d>>2]=f+(~((f+-4-g|0)>>>2)<<2);gl(g);r=J;return 1}function Fb(a,b,c,d,e,f){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;f=f|0;var g=0,h=0,i=0,j=0,l=0,m=0,n=0,o=0,p=0,q=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,B=0,C=0,D=0,E=0,F=0,G=0,H=0,I=0,J=0;J=r;r=r+64|0;I=J+16|0;H=J;F=a+8|0;k[F>>2]=e;d=I;f=d+48|0;do{k[d>>2]=0;d=d+4|0}while((d|0)<(f|0));k[H>>2]=0;if(!e){d=0;f=0}else{Bf(I,e,H);d=k[I+12>>2]|0;f=k[I+16>>2]|0}k[H>>2]=0;g=I+16|0;h=f-d>>2;if(h>>>0>=e>>>0){if(h>>>0>e>>>0?(i=d+(e<<2)|0,(f|0)!=(i|0)):0)k[g>>2]=f+(~((f+-4-i|0)>>>2)<<2)}else Bf(I+12|0,e-h|0,H);d=I+24|0;k[H>>2]=0;f=I+28|0;i=k[f>>2]|0;h=k[d>>2]|0;g=i-h>>2;if(g>>>0>=e>>>0){if(g>>>0>e>>>0?(j=h+(e<<2)|0,(i|0)!=(j|0)):0)k[f>>2]=i+(~((i+-4-j|0)>>>2)<<2)}else Bf(d,e-g|0,H);d=I+36|0;k[H>>2]=0;f=I+40|0;i=k[f>>2]|0;h=k[d>>2]|0;g=i-h>>2;if(g>>>0>=e>>>0){if(g>>>0>e>>>0?(l=h+(e<<2)|0,(i|0)!=(l|0)):0)k[f>>2]=i+(~((i+-4-l|0)>>>2)<<2)}else Bf(d,e-g|0,H);Uf(F,k[I>>2]|0,b,c,0);A=k[a+24>>2]|0;D=k[a+28>>2]|0;E=Si(16)|0;k[E>>2]=0;k[E+4>>2]=0;k[E+8>>2]=0;k[E+12>>2]=0;Ih(H,e);z=a+32|0;g=k[z>>2]|0;h=k[g+4>>2]|0;f=k[g>>2]|0;C=h-f|0;y=C>>2;a:do if((C|0)>4){x=A+12|0;B=(e|0)>0;C=e<<2;d=1;while(1){if(h-f>>2>>>0<=d>>>0)break;v=k[f+(d<<2)>>2]|0;u=(((v>>>0)%3|0|0)==0?2:-1)+v|0;w=(v|u|0)<0;t=(v|0)<0?v:u;s=1;f=0;g=v;b:while(1){do{if((g|0)<=-1){o=42;break b}p=k[I+(f*12|0)>>2]|0;q=k[x>>2]|0;i=k[q+(g<<2)>>2]|0;if((i|0)>=0){l=k[A>>2]|0;j=(i>>>0)%3|0;m=k[D>>2]|0;o=k[m+(k[l+(((i>>>0)/3|0)*12|0)+(j<<2)>>2]<<2)>>2]|0;h=i+1|0;h=((h|0)%3|0|0)==0?i+-2|0:h;if((h|0)<0)h=-1073741824;else h=k[l+(((h>>>0)/3|0)*12|0)+(((h>>>0)%3|0)<<2)>>2]|0;n=k[m+(h<<2)>>2]|0;h=((j|0)==0?2:-1)+i|0;if((h|0)<0)h=-1073741824;else h=k[l+(((h>>>0)/3|0)*12|0)+(((h>>>0)%3|0)<<2)>>2]|0;h=k[m+(h<<2)>>2]|0;if((o|0)<(d|0)&(n|0)<(d|0)&(h|0)<(d|0)){l=$(o,e)|0;j=$(n,e)|0;i=$(h,e)|0;if(B){h=0;do{k[p+(h<<2)>>2]=(k[c+(h+i<<2)>>2]|0)+(k[c+(h+j<<2)>>2]|0)-(k[c+(h+l<<2)>>2]|0);h=h+1|0}while((h|0)!=(e|0))}f=f+1|0;if((f|0)==4){f=4;o=25;break b}}}do if(s){p=g+1|0;g=((p|0)%3|0|0)==0?g+-2|0:p;if((g|0)>=0){g=k[q+(g<<2)>>2]|0;h=g+1|0;if((g|0)>=0)g=((h|0)%3|0|0)==0?g+-2|0:h}}else{g=(((g>>>0)%3|0|0)==0?2:-1)+g|0;if((g|0)>=0){g=k[q+(g<<2)>>2]|0;if((g|0)>=0)if(!((g>>>0)%3|0)){g=g+2|0;break}else{g=g+-1|0;break}}}while(0);if((g|0)==(v|0)){o=42;break b}}while(!(s&(g|0)<0));if(w){s=0;g=t;continue}g=k[q+(u<<2)>>2]|0;if((g|0)<0){s=0;continue}if(!((g>>>0)%3|0)){s=0;g=g+2|0;continue}else{s=0;g=g+-1|0;continue}}if((o|0)==42)if((f|0)>0)o=25;else{f=$(d,e)|0;o=54}if((o|0)==25){o=0;if(B){Ah(k[H>>2]|0,0,C|0)|0;m=f+-1|0;l=E+(m<<2)|0;m=k[a+36+(m*12|0)>>2]|0;n=k[H>>2]|0;j=0;g=0;do{w=k[l>>2]|0;k[l>>2]=w+1;if(!(k[m+(w>>>5<<2)>>2]&1<<(w&31))){i=k[I+(j*12|0)>>2]|0;h=0;do{w=n+(h<<2)|0;k[w>>2]=(k[w>>2]|0)+(k[i+(h<<2)>>2]|0);h=h+1|0}while((h|0)!=(e|0));g=g+1|0}j=j+1|0}while((j|0)!=(f|0))}else{j=f+-1|0;i=E+(j<<2)|0;j=k[a+36+(j*12|0)>>2]|0;h=0;g=0;l=k[i>>2]|0;do{w=l;l=l+1|0;k[i>>2]=l;g=g+((k[j+(w>>>5<<2)>>2]&1<<(w&31)|0)==0&1)|0;h=h+1|0}while((h|0)!=(f|0))}f=$(d,e)|0;if(!g)o=54;else{i=k[H>>2]|0;if(B){h=0;do{w=i+(h<<2)|0;k[w>>2]=(k[w>>2]|0)/(g|0)|0;h=h+1|0}while((h|0)!=(e|0))}Uf(F,i,b,c+(f<<2)|0,f)}}if((o|0)==54)Uf(F,c+(($(d+-1|0,e)|0)<<2)|0,b,c+(f<<2)|0,f);d=d+1|0;if((d|0)>=(y|0)){G=H;break a}g=k[z>>2]|0;f=k[g>>2]|0;h=k[g+4>>2]|0}lk(g)}else G=H;while(0);g=k[G>>2]|0;h=g;if(g|0){d=H+4|0;f=k[d>>2]|0;if((f|0)!=(g|0))k[d>>2]=f+(~((f+-4-h|0)>>>2)<<2);gl(g)}gl(E);g=k[I+36>>2]|0;h=g;if(g|0){d=I+40|0;f=k[d>>2]|0;if((f|0)!=(g|0))k[d>>2]=f+(~((f+-4-h|0)>>>2)<<2);gl(g)}d=k[I+24>>2]|0;f=d;if(d|0){g=I+28|0;h=k[g>>2]|0;if((h|0)!=(d|0))k[g>>2]=h+(~((h+-4-f|0)>>>2)<<2);gl(d)}d=k[I+12>>2]|0;f=d;if(d|0){g=I+16|0;h=k[g>>2]|0;if((h|0)!=(d|0))k[g>>2]=h+(~((h+-4-f|0)>>>2)<<2);gl(d)}g=k[I>>2]|0;if(!g){r=J;return 1}d=I+4|0;f=k[d>>2]|0;if((f|0)!=(g|0))k[d>>2]=f+(~((f+-4-g|0)>>>2)<<2);gl(g);r=J;return 1}function Gb(a,b,c){a=a|0;b=b|0;c=c|0;var d=0,e=0,f=0,g=0,h=0,l=0,m=0,n=Pa,p=Pa,q=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,B=0,C=0,D=0,E=0,F=0,G=0,H=0,I=0,J=0,K=0,L=0,N=0,O=0,P=Pa;O=r;r=r+48|0;N=O+12|0;H=O+32|0;L=O;I=N+16|0;k[N>>2]=0;k[N+4>>2]=0;k[N+8>>2]=0;k[N+12>>2]=0;o[I>>2]=da(1.0);K=a+80|0;Ih(L,k[K>>2]|0);e=k[K>>2]|0;a:do if((e|0)>0){y=b+48|0;z=b+40|0;w=H+2|0;x=H+4|0;A=N+4|0;B=N+12|0;C=N+8|0;D=a+40|0;E=a+64|0;v=k[c>>2]|0;d=0;u=0;q=0;while(1){m=v+u|0;h=y;l=k[h>>2]|0;h=k[h+4>>2]|0;t=z;m=Pi(k[t>>2]|0,k[t+4>>2]|0,m|0,((m|0)<0)<<31>>31|0)|0;h=Bj(m|0,M|0,l|0,h|0)|0;h=(k[k[b>>2]>>2]|0)+h|0;i[H>>0]=i[h>>0]|0;i[H+1>>0]=i[h+1>>0]|0;i[H+2>>0]=i[h+2>>0]|0;i[H+3>>0]=i[h+3>>0]|0;i[H+4>>0]=i[h+4>>0]|0;i[H+5>>0]=i[h+5>>0]|0;h=j[H>>1]|0;l=j[w>>1]|0;m=j[x>>1]|0;t=((h&65535^318)+239^l&65535)+239^m&65535;s=(q|0)==0;b:do if(!s){f=q+-1|0;c=(f&q|0)==0;if(c)g=t&f;else g=(t>>>0)%(q>>>0)|0;e=k[(k[N>>2]|0)+(g<<2)>>2]|0;do if(e|0?(F=k[e>>2]|0,F|0):0){c:do if(c){c=F;while(1){if((k[c+4>>2]&f|0)!=(g|0)){e=22;break c}if(((j[c+8>>1]|0)==h<<16>>16?(j[c+10>>1]|0)==l<<16>>16:0)?(j[c+12>>1]|0)==m<<16>>16:0){e=21;break c}c=k[c>>2]|0;if(!c){e=22;break}}}else{c=F;while(1){if((((k[c+4>>2]|0)>>>0)%(q>>>0)|0|0)!=(g|0)){e=22;break c}if(((j[c+8>>1]|0)==h<<16>>16?(j[c+10>>1]|0)==l<<16>>16:0)?(j[c+12>>1]|0)==m<<16>>16:0){e=21;break c}c=k[c>>2]|0;if(!c){e=22;break}}}while(0);if((e|0)==21){e=0;k[(k[L>>2]|0)+(u<<2)>>2]=k[c+16>>2];break b}else if((e|0)==22)if(s){c=0;e=39;break b}else break}while(0);g=q+-1|0;f=(g&q|0)==0;if(f)c=g&t;else c=(t>>>0)%(q>>>0)|0;e=k[(k[N>>2]|0)+(c<<2)>>2]|0;if((e|0)!=0?(G=k[e>>2]|0,(G|0)!=0):0)if(f){e=G;while(1){if((k[e+4>>2]&g|0)!=(c|0)){e=39;break b}if(((j[e+8>>1]|0)==h<<16>>16?(j[e+10>>1]|0)==l<<16>>16:0)?(j[e+12>>1]|0)==m<<16>>16:0){e=51;break b}e=k[e>>2]|0;if(!e){e=39;break}}}else{e=G;while(1){if((((k[e+4>>2]|0)>>>0)%(q>>>0)|0|0)!=(c|0)){e=39;break b}if(((j[e+8>>1]|0)==h<<16>>16?(j[e+10>>1]|0)==l<<16>>16:0)?(j[e+12>>1]|0)==m<<16>>16:0){e=51;break b}e=k[e>>2]|0;if(!e){e=39;break}}}else e=39}else{c=0;e=39}while(0);if((e|0)==39){g=Si(20)|0;j[g+8>>1]=h;j[g+10>>1]=l;j[g+12>>1]=m;k[g+16>>2]=d;k[g+4>>2]=t;k[g>>2]=0;n=da(((k[B>>2]|0)+1|0)>>>0);P=da(q>>>0);p=da(o[I>>2]);do if(s|n>da(P*p)){c=(q>>>0>2&(q+-1&q|0)==0&1|q<<1)^1;e=~~da(_(da(n/p)))>>>0;Hf(N,c>>>0>>0?e:c);c=k[A>>2]|0;e=c+-1|0;if(!(e&c)){f=c;c=e&t;break}else{f=c;c=(t>>>0)%(c>>>0)|0;break}}else f=q;while(0);c=(k[N>>2]|0)+(c<<2)|0;e=k[c>>2]|0;if(!e){k[g>>2]=k[C>>2];k[C>>2]=g;k[c>>2]=C;c=k[g>>2]|0;if(c|0){c=k[c+4>>2]|0;e=f+-1|0;if(!(e&f))c=c&e;else c=(c>>>0)%(f>>>0)|0;k[(k[N>>2]|0)+(c<<2)>>2]=g}}else{k[g>>2]=k[e>>2];k[e>>2]=g}k[B>>2]=(k[B>>2]|0)+1;e=51}if((e|0)==51){s=D;t=k[s>>2]|0;s=Pi(t|0,k[s+4>>2]|0,d|0,((d|0)<0)<<31>>31|0)|0;nh((k[k[E>>2]>>2]|0)+s|0,H|0,t|0)|0;k[(k[L>>2]|0)+(u<<2)>>2]=d;d=d+1|0}c=u+1|0;e=k[K>>2]|0;if((c|0)>=(e|0)){m=d;break a}u=c;q=k[A>>2]|0}}else m=0;while(0);if((m|0)!=(e|0)){l=a+84|0;if(!(i[l>>0]|0)){e=k[a+68>>2]|0;c=(k[a+72>>2]|0)-e|0;if((c|0)>0){f=k[L>>2]|0;d=c>>2;c=0;do{a=e+(c<<2)|0;k[a>>2]=k[f+(k[a>>2]<<2)>>2];c=c+1|0}while((c|0)<(d|0))}}else{i[l>>0]=0;c=a+68|0;d=a+72|0;h=k[d>>2]|0;g=k[c>>2]|0;f=h-g>>2;if(e>>>0<=f>>>0){if(e>>>0>>0?(J=g+(e<<2)|0,(h|0)!=(J|0)):0)k[d>>2]=h+(~((h+-4-J|0)>>>2)<<2)}else{Bf(c,e-f|0,2968);e=k[K>>2]|0}if((e|0)>0){f=k[L>>2]|0;if(i[l>>0]|0)Ka(6242,6261,80,6293);d=k[a+68>>2]|0;c=0;do{k[d+(c<<2)>>2]=k[f+(c<<2)>>2];c=c+1|0}while((c|0)<(e|0))}}k[K>>2]=m}e=k[L>>2]|0;f=e;if(e|0){c=L+4|0;d=k[c>>2]|0;if((d|0)!=(e|0))k[c>>2]=d+(~((d+-4-f|0)>>>2)<<2);gl(e)}c=k[N+8>>2]|0;if(c|0)do{L=c;c=k[c>>2]|0;gl(L)}while((c|0)!=0);c=k[N>>2]|0;k[N>>2]=0;if(!c){r=O;return m|0}gl(c);r=O;return m|0}function Hb(a,b,c){a=a|0;b=b|0;c=c|0;var d=0,e=0,f=0,g=0,h=0,j=0,l=0,m=Pa,n=Pa,p=0,q=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,B=0,C=0,D=0,E=0,F=0,G=0,H=0,I=0,J=0,K=0,L=0,N=0,O=Pa;N=r;r=r+48|0;L=N+12|0;G=N+32|0;K=N;H=L+16|0;k[L>>2]=0;k[L+4>>2]=0;k[L+8>>2]=0;k[L+12>>2]=0;o[H>>2]=da(1.0);J=a+80|0;Ih(K,k[J>>2]|0);e=k[J>>2]|0;a:do if((e|0)>0){x=b+48|0;y=b+40|0;v=G+1|0;w=G+2|0;z=L+4|0;A=L+12|0;B=L+8|0;C=a+40|0;D=a+64|0;u=k[c>>2]|0;c=0;t=0;p=0;while(1){l=u+c|0;h=x;j=k[h>>2]|0;h=k[h+4>>2]|0;s=y;l=Pi(k[s>>2]|0,k[s+4>>2]|0,l|0,((l|0)<0)<<31>>31|0)|0;h=Bj(l|0,M|0,j|0,h|0)|0;h=(k[k[b>>2]>>2]|0)+h|0;i[G>>0]=i[h>>0]|0;i[G+1>>0]=i[h+1>>0]|0;i[G+2>>0]=i[h+2>>0]|0;h=i[G>>0]|0;j=i[v>>0]|0;l=i[w>>0]|0;s=((h&255^318)+239^j&255)+239^l&255;q=(p|0)==0;b:do if(!q){f=p+-1|0;d=(f&p|0)==0;if(d)g=s&f;else g=(s>>>0)%(p>>>0)|0;e=k[(k[L>>2]|0)+(g<<2)>>2]|0;do if(e|0?(E=k[e>>2]|0,E|0):0){c:do if(d){d=E;while(1){if((k[d+4>>2]&f|0)!=(g|0)){e=22;break c}if(((i[d+8>>0]|0)==h<<24>>24?(i[d+9>>0]|0)==j<<24>>24:0)?(i[d+10>>0]|0)==l<<24>>24:0){e=21;break c}d=k[d>>2]|0;if(!d){e=22;break}}}else{d=E;while(1){if((((k[d+4>>2]|0)>>>0)%(p>>>0)|0|0)!=(g|0)){e=22;break c}if(((i[d+8>>0]|0)==h<<24>>24?(i[d+9>>0]|0)==j<<24>>24:0)?(i[d+10>>0]|0)==l<<24>>24:0){e=21;break c}d=k[d>>2]|0;if(!d){e=22;break}}}while(0);if((e|0)==21){e=0;k[(k[K>>2]|0)+(c<<2)>>2]=k[d+12>>2];d=t;break b}else if((e|0)==22)if(q){d=0;e=39;break b}else break}while(0);g=p+-1|0;f=(g&p|0)==0;if(f)d=g&s;else d=(s>>>0)%(p>>>0)|0;e=k[(k[L>>2]|0)+(d<<2)>>2]|0;if((e|0)!=0?(F=k[e>>2]|0,(F|0)!=0):0)if(f){e=F;while(1){if((k[e+4>>2]&g|0)!=(d|0)){e=39;break b}if(((i[e+8>>0]|0)==h<<24>>24?(i[e+9>>0]|0)==j<<24>>24:0)?(i[e+10>>0]|0)==l<<24>>24:0){e=51;break b}e=k[e>>2]|0;if(!e){e=39;break}}}else{e=F;while(1){if((((k[e+4>>2]|0)>>>0)%(p>>>0)|0|0)!=(d|0)){e=39;break b}if(((i[e+8>>0]|0)==h<<24>>24?(i[e+9>>0]|0)==j<<24>>24:0)?(i[e+10>>0]|0)==l<<24>>24:0){e=51;break b}e=k[e>>2]|0;if(!e){e=39;break}}}else e=39}else{d=0;e=39}while(0);if((e|0)==39){g=Si(16)|0;i[g+8>>0]=h;i[g+9>>0]=j;i[g+10>>0]=l;k[g+12>>2]=t;k[g+4>>2]=s;k[g>>2]=0;m=da(((k[A>>2]|0)+1|0)>>>0);O=da(p>>>0);n=da(o[H>>2]);do if(q|m>da(O*n)){d=(p>>>0>2&(p+-1&p|0)==0&1|p<<1)^1;e=~~da(_(da(m/n)))>>>0;Pf(L,d>>>0>>0?e:d);d=k[z>>2]|0;e=d+-1|0;if(!(e&d)){f=d;d=e&s;break}else{f=d;d=(s>>>0)%(d>>>0)|0;break}}else f=p;while(0);d=(k[L>>2]|0)+(d<<2)|0;e=k[d>>2]|0;if(!e){k[g>>2]=k[B>>2];k[B>>2]=g;k[d>>2]=B;d=k[g>>2]|0;if(d|0){d=k[d+4>>2]|0;e=f+-1|0;if(!(e&f))d=d&e;else d=(d>>>0)%(f>>>0)|0;k[(k[L>>2]|0)+(d<<2)>>2]=g}}else{k[g>>2]=k[e>>2];k[e>>2]=g}k[A>>2]=(k[A>>2]|0)+1;e=51}if((e|0)==51){s=C;d=k[s>>2]|0;s=Pi(d|0,k[s+4>>2]|0,t|0,((t|0)<0)<<31>>31|0)|0;nh((k[k[D>>2]>>2]|0)+s|0,G|0,d|0)|0;k[(k[K>>2]|0)+(c<<2)>>2]=t;d=t+1|0}c=c+1|0;e=k[J>>2]|0;if((c|0)>=(e|0)){l=d;break a}t=d;p=k[z>>2]|0}}else l=0;while(0);if((l|0)!=(e|0)){j=a+84|0;if(!(i[j>>0]|0)){e=k[a+68>>2]|0;c=(k[a+72>>2]|0)-e|0;if((c|0)>0){f=k[K>>2]|0;d=c>>2;c=0;do{a=e+(c<<2)|0;k[a>>2]=k[f+(k[a>>2]<<2)>>2];c=c+1|0}while((c|0)<(d|0))}}else{i[j>>0]=0;c=a+68|0;d=a+72|0;h=k[d>>2]|0;g=k[c>>2]|0;f=h-g>>2;if(e>>>0<=f>>>0){if(e>>>0>>0?(I=g+(e<<2)|0,(h|0)!=(I|0)):0)k[d>>2]=h+(~((h+-4-I|0)>>>2)<<2)}else{Bf(c,e-f|0,2968);e=k[J>>2]|0}if((e|0)>0){f=k[K>>2]|0;if(i[j>>0]|0)Ka(6242,6261,80,6293);d=k[a+68>>2]|0;c=0;do{k[d+(c<<2)>>2]=k[f+(c<<2)>>2];c=c+1|0}while((c|0)<(e|0))}}k[J>>2]=l}e=k[K>>2]|0;f=e;if(e|0){c=K+4|0;d=k[c>>2]|0;if((d|0)!=(e|0))k[c>>2]=d+(~((d+-4-f|0)>>>2)<<2);gl(e)}c=k[L+8>>2]|0;if(c|0)do{K=c;c=k[c>>2]|0;gl(K)}while((c|0)!=0);c=k[L>>2]|0;k[L>>2]=0;if(!c){r=N;return l|0}gl(c);r=N;return l|0}function Ib(a,b,c){a=a|0;b=b|0;c=c|0;var d=0,e=0,f=0,g=0,h=0,j=0,l=0,m=Pa,n=Pa,p=0,q=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,B=0,C=0,D=0,E=0,F=0,G=0,H=0,I=0,J=0,K=0,L=0,N=0,O=Pa;N=r;r=r+48|0;L=N+24|0;G=N+12|0;K=N;H=L+16|0;k[L>>2]=0;k[L+4>>2]=0;k[L+8>>2]=0;k[L+12>>2]=0;o[H>>2]=da(1.0);J=a+80|0;Ih(K,k[J>>2]|0);e=k[J>>2]|0;a:do if((e|0)>0){x=b+48|0;y=b+40|0;v=G+4|0;w=G+8|0;z=L+4|0;A=L+12|0;B=L+8|0;C=a+40|0;D=a+64|0;u=k[c>>2]|0;d=0;t=0;s=0;while(1){f=u+t|0;e=x;c=k[e>>2]|0;e=k[e+4>>2]|0;q=y;f=Pi(k[q>>2]|0,k[q+4>>2]|0,f|0,((f|0)<0)<<31>>31|0)|0;e=Bj(f|0,M|0,c|0,e|0)|0;c=G;e=(k[k[b>>2]>>2]|0)+e|0;f=c+12|0;do{i[c>>0]=i[e>>0]|0;c=c+1|0;e=e+1|0}while((c|0)<(f|0));h=k[G>>2]|0;j=k[v>>2]|0;l=k[w>>2]|0;q=((h^318)+239^j)+239^l;p=(s|0)==0;b:do if(!p){f=s+-1|0;c=(f&s|0)==0;if(c)g=q&f;else g=(q>>>0)%(s>>>0)|0;e=k[(k[L>>2]|0)+(g<<2)>>2]|0;do if(e|0?(E=k[e>>2]|0,E|0):0){c:do if(c){c=E;while(1){if((k[c+4>>2]&f|0)!=(g|0)){e=22;break c}if(((k[c+8>>2]|0)==(h|0)?(k[c+12>>2]|0)==(j|0):0)?(k[c+16>>2]|0)==(l|0):0){e=21;break c}c=k[c>>2]|0;if(!c){e=22;break}}}else{c=E;while(1){if((((k[c+4>>2]|0)>>>0)%(s>>>0)|0|0)!=(g|0)){e=22;break c}if(((k[c+8>>2]|0)==(h|0)?(k[c+12>>2]|0)==(j|0):0)?(k[c+16>>2]|0)==(l|0):0){e=21;break c}c=k[c>>2]|0;if(!c){e=22;break}}}while(0);if((e|0)==21){e=0;k[(k[K>>2]|0)+(t<<2)>>2]=k[c+20>>2];break b}else if((e|0)==22)if(p){c=0;e=39;break b}else break}while(0);g=s+-1|0;e=(g&s|0)==0;if(e)c=g&q;else c=(q>>>0)%(s>>>0)|0;f=k[(k[L>>2]|0)+(c<<2)>>2]|0;if((f|0)!=0?(F=k[f>>2]|0,(F|0)!=0):0)if(e){e=F;while(1){if((k[e+4>>2]&g|0)!=(c|0)){e=39;break b}if(((k[e+8>>2]|0)==(h|0)?(k[e+12>>2]|0)==(j|0):0)?(k[e+16>>2]|0)==(l|0):0){e=51;break b}e=k[e>>2]|0;if(!e){e=39;break}}}else{e=F;while(1){if((((k[e+4>>2]|0)>>>0)%(s>>>0)|0|0)!=(c|0)){e=39;break b}if(((k[e+8>>2]|0)==(h|0)?(k[e+12>>2]|0)==(j|0):0)?(k[e+16>>2]|0)==(l|0):0){e=51;break b}e=k[e>>2]|0;if(!e){e=39;break}}}else e=39}else{c=0;e=39}while(0);if((e|0)==39){g=Si(24)|0;k[g+8>>2]=h;k[g+12>>2]=j;k[g+16>>2]=l;k[g+20>>2]=d;k[g+4>>2]=q;k[g>>2]=0;m=da(((k[A>>2]|0)+1|0)>>>0);O=da(s>>>0);n=da(o[H>>2]);do if(p|m>da(O*n)){c=(s>>>0>2&(s+-1&s|0)==0&1|s<<1)^1;e=~~da(_(da(m/n)))>>>0;Lf(L,c>>>0>>0?e:c);c=k[z>>2]|0;e=c+-1|0;if(!(e&c)){f=c;c=e&q;break}else{f=c;c=(q>>>0)%(c>>>0)|0;break}}else f=s;while(0);c=(k[L>>2]|0)+(c<<2)|0;e=k[c>>2]|0;if(!e){k[g>>2]=k[B>>2];k[B>>2]=g;k[c>>2]=B;c=k[g>>2]|0;if(c|0){c=k[c+4>>2]|0;e=f+-1|0;if(!(e&f))c=c&e;else c=(c>>>0)%(f>>>0)|0;k[(k[L>>2]|0)+(c<<2)>>2]=g}}else{k[g>>2]=k[e>>2];k[e>>2]=g}k[A>>2]=(k[A>>2]|0)+1;e=51}if((e|0)==51){q=C;s=k[q>>2]|0;q=Pi(s|0,k[q+4>>2]|0,d|0,((d|0)<0)<<31>>31|0)|0;nh((k[k[D>>2]>>2]|0)+q|0,G|0,s|0)|0;k[(k[K>>2]|0)+(t<<2)>>2]=d;d=d+1|0}c=t+1|0;e=k[J>>2]|0;if((c|0)>=(e|0)){l=d;break a}t=c;s=k[z>>2]|0}}else l=0;while(0);if((l|0)!=(e|0)){j=a+84|0;if(!(i[j>>0]|0)){e=k[a+68>>2]|0;c=(k[a+72>>2]|0)-e|0;if((c|0)>0){f=k[K>>2]|0;d=c>>2;c=0;do{a=e+(c<<2)|0;k[a>>2]=k[f+(k[a>>2]<<2)>>2];c=c+1|0}while((c|0)<(d|0))}}else{i[j>>0]=0;c=a+68|0;d=a+72|0;h=k[d>>2]|0;g=k[c>>2]|0;f=h-g>>2;if(e>>>0<=f>>>0){if(e>>>0>>0?(I=g+(e<<2)|0,(h|0)!=(I|0)):0)k[d>>2]=h+(~((h+-4-I|0)>>>2)<<2)}else{Bf(c,e-f|0,2968);e=k[J>>2]|0}if((e|0)>0){f=k[K>>2]|0;if(i[j>>0]|0)Ka(6242,6261,80,6293);d=k[a+68>>2]|0;c=0;do{k[d+(c<<2)>>2]=k[f+(c<<2)>>2];c=c+1|0}while((c|0)<(e|0))}}k[J>>2]=l}e=k[K>>2]|0;f=e;if(e|0){c=K+4|0;d=k[c>>2]|0;if((d|0)!=(e|0))k[c>>2]=d+(~((d+-4-f|0)>>>2)<<2);gl(e)}c=k[L+8>>2]|0;if(c|0)do{K=c;c=k[c>>2]|0;gl(K)}while((c|0)!=0);c=k[L>>2]|0;k[L>>2]=0;if(!c){r=N;return l|0}gl(c);r=N;return l|0} -function yd(a,b,c){a=a|0;b=b|0;c=c|0;var d=0,e=0,f=0,g=0,h=0,j=0,m=0,n=0,o=0,p=0,q=0,s=0,t=0,u=0,v=0;t=r;r=r+64|0;q=t+48|0;m=t+32|0;n=t+20|0;o=t+8|0;p=t;f=b+8|0;h=f;e=k[h>>2]|0;h=k[h+4>>2]|0;j=b+16|0;g=j;d=k[g>>2]|0;g=k[g+4>>2]|0;u=Bj(d|0,g|0,4,0)|0;v=M;if((h|0)<(v|0)|(h|0)==(v|0)&e>>>0>>0)f=h;else{d=(k[b>>2]|0)+d|0;d=l[d>>0]|l[d+1>>0]<<8|l[d+2>>0]<<16|l[d+3>>0]<<24;i[a>>0]=d;i[a+1>>0]=d>>8;i[a+2>>0]=d>>16;i[a+3>>0]=d>>24;d=j;d=Bj(k[d>>2]|0,k[d+4>>2]|0,4,0)|0;g=M;e=j;k[e>>2]=d;k[e+4>>2]=g;e=f;f=k[e+4>>2]|0;e=k[e>>2]|0}h=a+4|0;v=Bj(d|0,g|0,4,0)|0;u=M;if((f|0)<(u|0)|(f|0)==(u|0)&e>>>0>>0)d=k[h>>2]|0;else{d=(k[b>>2]|0)+d|0;d=l[d>>0]|l[d+1>>0]<<8|l[d+2>>0]<<16|l[d+3>>0]<<24;i[h>>0]=d;i[h+1>>0]=d>>8;i[h+2>>0]=d>>16;i[h+3>>0]=d>>24;u=j;u=Bj(k[u>>2]|0,k[u+4>>2]|0,4,0)|0;v=j;k[v>>2]=u;k[v+4>>2]=M}if(!d){v=1;r=t;return v|0}else d=0;do{if(!(te(a+8+(d<<4)|0,b)|0)){d=0;s=14;break}d=d+1|0}while((d|0)<32);if((s|0)==14){r=t;return d|0}if(!(te(a+520|0,b)|0)){v=0;r=t;return v|0}if(!(Ee(a+536|0,b)|0)){v=0;r=t;return v|0}if(!(Ee(a+556|0,b)|0)){v=0;r=t;return v|0}if(!(Ee(a+576|0,b)|0)){v=0;r=t;return v|0}v=k[h>>2]|0;k[n>>2]=0;k[n+4>>2]=0;k[n+8>>2]=0;k[o>>2]=0;k[o+4>>2]=0;k[o+8>>2]=0;s=k[c+4>>2]|0;u=p;k[u>>2]=k[c>>2];k[u+4>>2]=s;k[m>>2]=k[o>>2];k[m+4>>2]=k[o+4>>2];k[m+8>>2]=k[o+8>>2];k[q>>2]=k[p>>2];k[q+4>>2]=k[p+4>>2];ob(a,v,n,m,0,q);v=1;r=t;return v|0}function zd(a,b,c){a=a|0;b=b|0;c=c|0;var d=0,e=0,f=0,g=0,h=0,j=0,m=0,n=0,o=0,p=0,q=0,s=0,t=0,u=0,v=0;t=r;r=r+64|0;q=t+48|0;m=t+32|0;n=t+20|0;o=t+8|0;p=t;f=b+8|0;h=f;e=k[h>>2]|0;h=k[h+4>>2]|0;j=b+16|0;g=j;d=k[g>>2]|0;g=k[g+4>>2]|0;u=Bj(d|0,g|0,4,0)|0;v=M;if((h|0)<(v|0)|(h|0)==(v|0)&e>>>0>>0)f=h;else{d=(k[b>>2]|0)+d|0;d=l[d>>0]|l[d+1>>0]<<8|l[d+2>>0]<<16|l[d+3>>0]<<24;i[a>>0]=d;i[a+1>>0]=d>>8;i[a+2>>0]=d>>16;i[a+3>>0]=d>>24;d=j;d=Bj(k[d>>2]|0,k[d+4>>2]|0,4,0)|0;g=M;e=j;k[e>>2]=d;k[e+4>>2]=g;e=f;f=k[e+4>>2]|0;e=k[e>>2]|0}h=a+4|0;v=Bj(d|0,g|0,4,0)|0;u=M;if((f|0)<(u|0)|(f|0)==(u|0)&e>>>0>>0)d=k[h>>2]|0;else{d=(k[b>>2]|0)+d|0;d=l[d>>0]|l[d+1>>0]<<8|l[d+2>>0]<<16|l[d+3>>0]<<24;i[h>>0]=d;i[h+1>>0]=d>>8;i[h+2>>0]=d>>16;i[h+3>>0]=d>>24;u=j;u=Bj(k[u>>2]|0,k[u+4>>2]|0,4,0)|0;v=j;k[v>>2]=u;k[v+4>>2]=M}if(!d){v=1;r=t;return v|0}else d=0;do{if(!(te(a+8+(d<<4)|0,b)|0)){d=0;s=14;break}d=d+1|0}while((d|0)<32);if((s|0)==14){r=t;return d|0}if(!(te(a+520|0,b)|0)){v=0;r=t;return v|0}if(!(Ee(a+536|0,b)|0)){v=0;r=t;return v|0}if(!(Ee(a+556|0,b)|0)){v=0;r=t;return v|0}if(!(Ee(a+576|0,b)|0)){v=0;r=t;return v|0}v=k[h>>2]|0;k[n>>2]=0;k[n+4>>2]=0;k[n+8>>2]=0;k[o>>2]=0;k[o+4>>2]=0;k[o+8>>2]=0;s=k[c+4>>2]|0;u=p;k[u>>2]=k[c>>2];k[u+4>>2]=s;k[m>>2]=k[o>>2];k[m+4>>2]=k[o+4>>2];k[m+8>>2]=k[o+8>>2];k[q>>2]=k[p>>2];k[q+4>>2]=k[p+4>>2];pb(a,v,n,m,0,q);v=1;r=t;return v|0}function Ad(a,b,c,d,e,f){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;f=f|0;var g=0,h=0,i=0,j=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0,v=0,w=0;s=a+8|0;k[s>>2]=e;q=e>>>0>1073741823?-1:e<<2;t=dl(q)|0;Ah(t|0,0,q|0)|0;q=k[a+24>>2]|0;r=a+32|0;h=k[r>>2]|0;g=k[h+4>>2]|0;f=k[h>>2]|0;d=g-f|0;a:do if((d|0)>4){n=k[a+28>>2]|0;o=q+12|0;p=(e|0)>0;l=d>>2;a=g;d=h;while(1){m=l+-1|0;if(a-f>>2>>>0<=m>>>0)break;d=k[f+(m<<2)>>2]|0;j=$(m,e)|0;if((d|0)>=0?(v=k[(k[o>>2]|0)+(d<<2)>>2]|0,(v|0)>=0):0){a=k[q>>2]|0;f=(v>>>0)%3|0;g=k[n>>2]|0;i=k[g+(k[a+(((v>>>0)/3|0)*12|0)+(f<<2)>>2]<<2)>>2]|0;d=v+1|0;d=((d|0)%3|0|0)==0?v+-2|0:d;if((d|0)<0)d=-1073741824;else d=k[a+(((d>>>0)/3|0)*12|0)+(((d>>>0)%3|0)<<2)>>2]|0;h=k[g+(d<<2)>>2]|0;d=((f|0)==0?2:-1)+v|0;if((d|0)<0)d=-1073741824;else d=k[a+(((d>>>0)/3|0)*12|0)+(((d>>>0)%3|0)<<2)>>2]|0;d=k[g+(d<<2)>>2]|0;if((i|0)<(m|0)&(h|0)<(m|0)&(d|0)<(m|0)){g=$(i,e)|0;a=$(h,e)|0;f=$(d,e)|0;if(p){d=0;do{k[t+(d<<2)>>2]=(k[b+(d+f<<2)>>2]|0)+(k[b+(d+a<<2)>>2]|0)-(k[b+(d+g<<2)>>2]|0);d=d+1|0}while((d|0)!=(e|0))}ue(s,b+(j<<2)|0,t,c,j)}else w=17}else w=17;if((w|0)==17){w=0;ue(s,b+(j<<2)|0,b+(($(l+-2|0,e)|0)<<2)|0,c,j)}if((m|0)<=1){u=t;break a}d=k[r>>2]|0;l=m;f=k[d>>2]|0;a=k[d+4>>2]|0}lk(d)}else u=t;while(0);if((e|0)<=0){ue(s,b,u,c,0);el(t);return 1}Ah(t|0,0,e<<2|0)|0;ue(s,b,u,c,0);el(t);return 1}function Bd(a,b,c){a=a|0;b=b|0;c=c|0;var d=0,e=0,f=0,g=0,h=0,j=0,m=0,n=0,o=0,p=0,q=0,s=0,t=0,u=0,v=0;t=r;r=r+48|0;n=t+40|0;m=t+28|0;o=t+16|0;p=t+4|0;q=t;f=b+8|0;h=f;e=k[h>>2]|0;h=k[h+4>>2]|0;j=b+16|0;g=j;d=k[g>>2]|0;g=k[g+4>>2]|0;u=Bj(d|0,g|0,4,0)|0;v=M;if((h|0)<(v|0)|(h|0)==(v|0)&e>>>0>>0)f=h;else{d=(k[b>>2]|0)+d|0;d=l[d>>0]|l[d+1>>0]<<8|l[d+2>>0]<<16|l[d+3>>0]<<24;i[a>>0]=d;i[a+1>>0]=d>>8;i[a+2>>0]=d>>16;i[a+3>>0]=d>>24;d=j;d=Bj(k[d>>2]|0,k[d+4>>2]|0,4,0)|0;g=M;e=j;k[e>>2]=d;k[e+4>>2]=g;e=f;f=k[e+4>>2]|0;e=k[e>>2]|0}h=a+4|0;v=Bj(d|0,g|0,4,0)|0;u=M;if((f|0)<(u|0)|(f|0)==(u|0)&e>>>0>>0)d=k[h>>2]|0;else{d=(k[b>>2]|0)+d|0;d=l[d>>0]|l[d+1>>0]<<8|l[d+2>>0]<<16|l[d+3>>0]<<24;i[h>>0]=d;i[h+1>>0]=d>>8;i[h+2>>0]=d>>16;i[h+3>>0]=d>>24;u=j;u=Bj(k[u>>2]|0,k[u+4>>2]|0,4,0)|0;v=j;k[v>>2]=u;k[v+4>>2]=M}if(!d){v=1;r=t;return v|0}else d=0;do{if(!(He(a+8+(d*24|0)|0,b)|0)){d=0;s=14;break}d=d+1|0}while((d|0)<32);if((s|0)==14){r=t;return d|0}if(!(He(a+776|0,b)|0)){v=0;r=t;return v|0}if(!(Ee(a+800|0,b)|0)){v=0;r=t;return v|0}if(!(Ee(a+820|0,b)|0)){v=0;r=t;return v|0}if(!(Ee(a+840|0,b)|0)){v=0;r=t;return v|0}v=k[h>>2]|0;k[o>>2]=0;k[o+4>>2]=0;k[o+8>>2]=0;k[p>>2]=0;k[p+4>>2]=0;k[p+8>>2]=0;k[q>>2]=k[c>>2];k[m>>2]=k[p>>2];k[m+4>>2]=k[p+4>>2];k[m+8>>2]=k[p+8>>2];k[n>>2]=k[q>>2];fb(a,v,o,m,0,n);v=1;r=t;return v|0}function Cd(a,b,c){a=a|0;b=b|0;c=c|0;var d=0,e=0,f=0,g=0,h=0,j=0,m=0,n=0,o=0,p=0,q=0,s=0,t=0,u=0,v=0;t=r;r=r+48|0;n=t+40|0;m=t+28|0;o=t+16|0;p=t+4|0;q=t;f=b+8|0;h=f;e=k[h>>2]|0;h=k[h+4>>2]|0;j=b+16|0;g=j;d=k[g>>2]|0;g=k[g+4>>2]|0;u=Bj(d|0,g|0,4,0)|0;v=M;if((h|0)<(v|0)|(h|0)==(v|0)&e>>>0>>0)f=h;else{d=(k[b>>2]|0)+d|0;d=l[d>>0]|l[d+1>>0]<<8|l[d+2>>0]<<16|l[d+3>>0]<<24;i[a>>0]=d;i[a+1>>0]=d>>8;i[a+2>>0]=d>>16;i[a+3>>0]=d>>24;d=j;d=Bj(k[d>>2]|0,k[d+4>>2]|0,4,0)|0;g=M;e=j;k[e>>2]=d;k[e+4>>2]=g;e=f;f=k[e+4>>2]|0;e=k[e>>2]|0}h=a+4|0;v=Bj(d|0,g|0,4,0)|0;u=M;if((f|0)<(u|0)|(f|0)==(u|0)&e>>>0>>0)d=k[h>>2]|0;else{d=(k[b>>2]|0)+d|0;d=l[d>>0]|l[d+1>>0]<<8|l[d+2>>0]<<16|l[d+3>>0]<<24;i[h>>0]=d;i[h+1>>0]=d>>8;i[h+2>>0]=d>>16;i[h+3>>0]=d>>24;u=j;u=Bj(k[u>>2]|0,k[u+4>>2]|0,4,0)|0;v=j;k[v>>2]=u;k[v+4>>2]=M}if(!d){v=1;r=t;return v|0}else d=0;do{if(!(He(a+8+(d*24|0)|0,b)|0)){d=0;s=14;break}d=d+1|0}while((d|0)<32);if((s|0)==14){r=t;return d|0}if(!(He(a+776|0,b)|0)){v=0;r=t;return v|0}if(!(Ee(a+800|0,b)|0)){v=0;r=t;return v|0}if(!(Ee(a+820|0,b)|0)){v=0;r=t;return v|0}if(!(Ee(a+840|0,b)|0)){v=0;r=t;return v|0}v=k[h>>2]|0;k[o>>2]=0;k[o+4>>2]=0;k[o+8>>2]=0;k[p>>2]=0;k[p+4>>2]=0;k[p+8>>2]=0;k[q>>2]=k[c>>2];k[m>>2]=k[p>>2];k[m+4>>2]=k[p+4>>2];k[m+8>>2]=k[p+8>>2];k[n>>2]=k[q>>2];wb(a,v,o,m,0,n);v=1;r=t;return v|0}function Dd(a,b,c){a=a|0;b=b|0;c=c|0;var d=0,e=0,f=0,g=0,h=0;g=b+8|0;h=k[g+4>>2]|0;d=b+16|0;f=d;e=k[f>>2]|0;f=k[f+4>>2]|0;if(!((h|0)>(f|0)|((h|0)==(f|0)?(k[g>>2]|0)>>>0>e>>>0:0))){h=0;return h|0}h=i[(k[b>>2]|0)+e>>0]|0;f=Bj(e|0,f|0,1,0)|0;g=d;k[g>>2]=f;k[g+4>>2]=M;do switch(h<<24>>24){case 1:{h=zc(a,b,c)|0;return h|0}case 2:{h=zc(a,b,c)|0;return h|0}case 3:{h=zc(a,b,c)|0;return h|0}case 4:{h=zc(a,b,c)|0;return h|0}case 5:{h=zc(a,b,c)|0;return h|0}case 6:{h=zc(a,b,c)|0;return h|0}case 7:{h=zc(a,b,c)|0;return h|0}case 8:{h=zc(a,b,c)|0;return h|0}case 9:{h=yc(a,b,c)|0;return h|0}case 10:{h=xc(a,b,c)|0;return h|0}case 11:{h=wc(a,b,c)|0;return h|0}case 12:{h=vc(a,b,c)|0;return h|0}case 13:{h=uc(a,b,c)|0;return h|0}case 14:{h=tc(a,b,c)|0;return h|0}case 15:{h=tc(a,b,c)|0;return h|0}case 16:{h=tc(a,b,c)|0;return h|0}case 17:{h=tc(a,b,c)|0;return h|0}case 18:{h=tc(a,b,c)|0;return h|0}default:{h=0;return h|0}}while(0);return 0}function Ed(a,b,c){a=a|0;b=b|0;c=c|0;var d=0,e=0,f=0,g=0,h=0,j=0,m=0,n=0,o=0,p=0,q=0,s=0,t=0,u=0,v=0;t=r;r=r+48|0;n=t+40|0;m=t+28|0;o=t+16|0;p=t+4|0;q=t;f=b+8|0;h=f;e=k[h>>2]|0;h=k[h+4>>2]|0;j=b+16|0;g=j;d=k[g>>2]|0;g=k[g+4>>2]|0;u=Bj(d|0,g|0,4,0)|0;v=M;if((h|0)<(v|0)|(h|0)==(v|0)&e>>>0>>0)f=h;else{d=(k[b>>2]|0)+d|0;d=l[d>>0]|l[d+1>>0]<<8|l[d+2>>0]<<16|l[d+3>>0]<<24;i[a>>0]=d;i[a+1>>0]=d>>8;i[a+2>>0]=d>>16;i[a+3>>0]=d>>24;d=j;d=Bj(k[d>>2]|0,k[d+4>>2]|0,4,0)|0;g=M;e=j;k[e>>2]=d;k[e+4>>2]=g;e=f;f=k[e+4>>2]|0;e=k[e>>2]|0}h=a+4|0;v=Bj(d|0,g|0,4,0)|0;u=M;if((f|0)<(u|0)|(f|0)==(u|0)&e>>>0>>0)d=k[h>>2]|0;else{d=(k[b>>2]|0)+d|0;d=l[d>>0]|l[d+1>>0]<<8|l[d+2>>0]<<16|l[d+3>>0]<<24;i[h>>0]=d;i[h+1>>0]=d>>8;i[h+2>>0]=d>>16;i[h+3>>0]=d>>24;u=j;u=Bj(k[u>>2]|0,k[u+4>>2]|0,4,0)|0;v=j;k[v>>2]=u;k[v+4>>2]=M}if(!d){v=1;r=t;return v|0}else d=0;do{if(!(te(a+8+(d<<4)|0,b)|0)){d=0;s=14;break}d=d+1|0}while((d|0)<32);if((s|0)==14){r=t;return d|0}if(!(te(a+520|0,b)|0)){v=0;r=t;return v|0}if(!(Ee(a+536|0,b)|0)){v=0;r=t;return v|0}if(!(Ee(a+556|0,b)|0)){v=0;r=t;return v|0}if(!(Ee(a+576|0,b)|0)){v=0;r=t;return v|0}v=k[h>>2]|0;k[o>>2]=0;k[o+4>>2]=0;k[o+8>>2]=0;k[p>>2]=0;k[p+4>>2]=0;k[p+8>>2]=0;k[q>>2]=k[c>>2];k[m>>2]=k[p>>2];k[m+4>>2]=k[p+4>>2];k[m+8>>2]=k[p+8>>2];k[n>>2]=k[q>>2];ub(a,v,o,m,0,n);v=1;r=t;return v|0}function Fd(a,b,c){a=a|0;b=b|0;c=c|0;var d=0,e=0,f=0,g=0,h=0,j=0,m=0,n=0,o=0,p=0,q=0,s=0,t=0,u=0,v=0;t=r;r=r+48|0;n=t+40|0;m=t+28|0;o=t+16|0;p=t+4|0;q=t;f=b+8|0;h=f;e=k[h>>2]|0;h=k[h+4>>2]|0;j=b+16|0;g=j;d=k[g>>2]|0;g=k[g+4>>2]|0;u=Bj(d|0,g|0,4,0)|0;v=M;if((h|0)<(v|0)|(h|0)==(v|0)&e>>>0>>0)f=h;else{d=(k[b>>2]|0)+d|0;d=l[d>>0]|l[d+1>>0]<<8|l[d+2>>0]<<16|l[d+3>>0]<<24;i[a>>0]=d;i[a+1>>0]=d>>8;i[a+2>>0]=d>>16;i[a+3>>0]=d>>24;d=j;d=Bj(k[d>>2]|0,k[d+4>>2]|0,4,0)|0;g=M;e=j;k[e>>2]=d;k[e+4>>2]=g;e=f;f=k[e+4>>2]|0;e=k[e>>2]|0}h=a+4|0;v=Bj(d|0,g|0,4,0)|0;u=M;if((f|0)<(u|0)|(f|0)==(u|0)&e>>>0>>0)d=k[h>>2]|0;else{d=(k[b>>2]|0)+d|0;d=l[d>>0]|l[d+1>>0]<<8|l[d+2>>0]<<16|l[d+3>>0]<<24;i[h>>0]=d;i[h+1>>0]=d>>8;i[h+2>>0]=d>>16;i[h+3>>0]=d>>24;u=j;u=Bj(k[u>>2]|0,k[u+4>>2]|0,4,0)|0;v=j;k[v>>2]=u;k[v+4>>2]=M}if(!d){v=1;r=t;return v|0}else d=0;do{if(!(te(a+8+(d<<4)|0,b)|0)){d=0;s=14;break}d=d+1|0}while((d|0)<32);if((s|0)==14){r=t;return d|0}if(!(te(a+520|0,b)|0)){v=0;r=t;return v|0}if(!(Ee(a+536|0,b)|0)){v=0;r=t;return v|0}if(!(Ee(a+556|0,b)|0)){v=0;r=t;return v|0}if(!(Ee(a+576|0,b)|0)){v=0;r=t;return v|0}v=k[h>>2]|0;k[o>>2]=0;k[o+4>>2]=0;k[o+8>>2]=0;k[p>>2]=0;k[p+4>>2]=0;k[p+8>>2]=0;k[q>>2]=k[c>>2];k[m>>2]=k[p>>2];k[m+4>>2]=k[p+4>>2];k[m+8>>2]=k[p+8>>2];k[n>>2]=k[q>>2];vb(a,v,o,m,0,n);v=1;r=t;return v|0}function Gd(a,b){a=a|0;b=b|0;var c=0,d=0,e=0,f=0,g=0,h=0,j=0,m=0,n=0,o=0;o=r;r=r+32|0;h=o+16|0;j=o;n=b+8|0;g=n;f=k[g+4>>2]|0;m=b+16|0;d=m;c=k[d>>2]|0;d=k[d+4>>2]|0;if(!((f|0)>(d|0)|((f|0)==(d|0)?(k[g>>2]|0)>>>0>c>>>0:0))){a=0;r=o;return a|0}g=i[(k[b>>2]|0)+c>>0]|0;e=Bj(c|0,d|0,1,0)|0;f=m;k[f>>2]=e;k[f+4>>2]=M;if(g<<24>>24){a=0;r=o;return a|0}f=0;do{Qg(h,b);c=k[h>>2]|0;if(c|0){g=a+60+(f*12|0)|0;ee(g,c,0);Pk(j);te(j,b)|0;if(k[h>>2]|0){d=0;do{e=(k[g>>2]|0)+(d>>>5<<2)|0;c=1<<(d&31);if(yh(j)|0)c=k[e>>2]|c;else c=k[e>>2]&~c;k[e>>2]=c;d=d+1|0}while(d>>>0<(k[h>>2]|0)>>>0)}jl(j)}f=f+1|0}while((f|0)<4);f=n;h=k[f>>2]|0;f=k[f+4>>2]|0;j=m;c=k[j>>2]|0;j=Bj(c|0,k[j+4>>2]|0,4,0)|0;g=M;if((f|0)<(g|0)|(f|0)==(g|0)&h>>>0>>0){a=0;r=o;return a|0}h=a+12|0;c=(k[b>>2]|0)+c|0;c=l[c>>0]|l[c+1>>0]<<8|l[c+2>>0]<<16|l[c+3>>0]<<24;i[h>>0]=c;i[h+1>>0]=c>>8;i[h+2>>0]=c>>16;i[h+3>>0]=c>>24;h=m;f=k[h>>2]|0;h=k[h+4>>2]|0;d=Bj(f|0,h|0,4,0)|0;g=m;k[g>>2]=d;k[g+4>>2]=M;g=n;j=k[g>>2]|0;g=k[g+4>>2]|0;n=Bj(f|0,h|0,8,0)|0;h=M;if((g|0)<(h|0)|(g|0)==(h|0)&j>>>0>>0){a=0;r=o;return a|0}j=a+16|0;n=(k[b>>2]|0)+d|0;n=l[n>>0]|l[n+1>>0]<<8|l[n+2>>0]<<16|l[n+3>>0]<<24;i[j>>0]=n;i[j+1>>0]=n>>8;i[j+2>>0]=n>>16;i[j+3>>0]=n>>24;b=m;b=Bj(k[b>>2]|0,k[b+4>>2]|0,4,0)|0;d=m;k[d>>2]=b;k[d+4>>2]=M;n=n+(1-c)|0;k[a+20>>2]=n;c=(n|0)/2|0;d=a+24|0;k[d>>2]=c;k[a+28>>2]=0-c;if(n&1|0){a=1;r=o;return a|0}k[d>>2]=c+-1;a=1;r=o;return a|0}function Hd(a,b,c,d,e,f){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;f=f|0;var g=0,h=0,i=0,j=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0,v=0,w=0;s=a+8|0;k[s>>2]=e;q=e>>>0>1073741823?-1:e<<2;t=dl(q)|0;Ah(t|0,0,q|0)|0;q=k[a+24>>2]|0;r=a+32|0;h=k[r>>2]|0;g=k[h+4>>2]|0;f=k[h>>2]|0;d=g-f|0;a:do if((d|0)>4){n=k[a+28>>2]|0;o=q+12|0;p=(e|0)>0;l=d>>2;a=g;d=h;while(1){m=l+-1|0;if(a-f>>2>>>0<=m>>>0)break;d=k[f+(m<<2)>>2]|0;j=$(m,e)|0;if((d|0)>=0?(v=k[(k[o>>2]|0)+(d<<2)>>2]|0,(v|0)>=0):0){a=k[q>>2]|0;f=(v>>>0)%3|0;g=k[n>>2]|0;i=k[g+(k[a+(((v>>>0)/3|0)*12|0)+(f<<2)>>2]<<2)>>2]|0;d=v+1|0;d=((d|0)%3|0|0)==0?v+-2|0:d;if((d|0)<0)d=-1073741824;else d=k[a+(((d>>>0)/3|0)*12|0)+(((d>>>0)%3|0)<<2)>>2]|0;h=k[g+(d<<2)>>2]|0;d=((f|0)==0?2:-1)+v|0;if((d|0)<0)d=-1073741824;else d=k[a+(((d>>>0)/3|0)*12|0)+(((d>>>0)%3|0)<<2)>>2]|0;d=k[g+(d<<2)>>2]|0;if((i|0)<(m|0)&(h|0)<(m|0)&(d|0)<(m|0)){g=$(i,e)|0;a=$(h,e)|0;f=$(d,e)|0;if(p){d=0;do{k[t+(d<<2)>>2]=(k[b+(d+f<<2)>>2]|0)+(k[b+(d+a<<2)>>2]|0)-(k[b+(d+g<<2)>>2]|0);d=d+1|0}while((d|0)!=(e|0))}we(s,b+(j<<2)|0,t,c,j)}else w=17}else w=17;if((w|0)==17){w=0;we(s,b+(j<<2)|0,b+(($(l+-2|0,e)|0)<<2)|0,c,j)}if((m|0)<=1){u=t;break a}d=k[r>>2]|0;l=m;f=k[d>>2]|0;a=k[d+4>>2]|0}lk(d)}else u=t;while(0);if((e|0)<=0){we(s,b,u,c,0);el(t);return 1}Ah(t|0,0,e<<2|0)|0;we(s,b,u,c,0);el(t);return 1}function Id(a,b,c){a=a|0;b=b|0;c=c|0;var d=Pa,e=Pa,f=0,g=0,h=0;switch(i[a+24>>0]|0){case 1:{g=k[b>>2]|0;b=a+48|0;f=k[b>>2]|0;b=k[b+4>>2]|0;h=a+40|0;b=Bj(Pi(k[h>>2]|0,k[h+4>>2]|0,g|0,((g|0)<0)<<31>>31|0)|0,M|0,f|0,b|0)|0;e=da(i[(k[k[a>>2]>>2]|0)+b>>0]|0);d=da(e/da(127.0));o[c>>2]=(i[a+32>>0]|0)==0?e:d;o[c+4>>2]=da(0.0);c=1;return c|0}case 2:{g=k[b>>2]|0;h=a+48|0;b=k[h>>2]|0;h=k[h+4>>2]|0;f=a+40|0;h=(Bj(Pi(k[f>>2]|0,k[f+4>>2]|0,g|0,((g|0)<0)<<31>>31|0)|0,M|0,b|0,h|0)|0)+(k[k[a>>2]>>2]|0)|0;h=l[h>>0]|l[h+1>>0]<<8;b=(h&65535)>>>8&255;d=da((h&255)<<24>>24);if(!(i[a+32>>0]|0)){o[c>>2]=d;e=da(b<<24>>24);o[c+4>>2]=e;h=1;return h|0}else{e=da(d/da(127.0));o[c>>2]=e;e=da(da(b<<24>>24)/da(127.0));o[c+4>>2]=e;h=1;return h|0}}case 3:{g=k[b>>2]|0;h=a+48|0;b=k[h>>2]|0;h=k[h+4>>2]|0;f=a+40|0;h=(Bj(Pi(k[f>>2]|0,k[f+4>>2]|0,g|0,((g|0)<0)<<31>>31|0)|0,M|0,b|0,h|0)|0)+(k[k[a>>2]>>2]|0)|0;b=i[h+1>>0]|0;d=da(i[h>>0]|0);if(!(i[a+32>>0]|0)){o[c>>2]=d;e=da(b<<24>>24);o[c+4>>2]=e;h=1;return h|0}else{e=da(d/da(127.0));o[c>>2]=e;e=da(da(b<<24>>24)/da(127.0));o[c+4>>2]=e;h=1;return h|0}}case 4:{g=k[b>>2]|0;h=a+48|0;b=k[h>>2]|0;h=k[h+4>>2]|0;f=a+40|0;h=(Bj(Pi(k[f>>2]|0,k[f+4>>2]|0,g|0,((g|0)<0)<<31>>31|0)|0,M|0,b|0,h|0)|0)+(k[k[a>>2]>>2]|0)|0;h=l[h>>0]|l[h+1>>0]<<8|l[h+2>>0]<<16|l[h+3>>0]<<24;b=h>>>8&255;d=da((h&255)<<24>>24);if(!(i[a+32>>0]|0)){o[c>>2]=d;e=da(b<<24>>24);o[c+4>>2]=e;h=1;return h|0}else{e=da(d/da(127.0));o[c>>2]=e;e=da(da(b<<24>>24)/da(127.0));o[c+4>>2]=e;h=1;return h|0}}default:{h=0;return h|0}}return 0}function Jd(a,b,c){a=a|0;b=b|0;c=c|0;var d=Pa,e=Pa,f=0,g=0,h=0;switch(i[a+24>>0]|0){case 1:{g=k[b>>2]|0;b=a+48|0;f=k[b>>2]|0;b=k[b+4>>2]|0;h=a+40|0;b=Bj(Pi(k[h>>2]|0,k[h+4>>2]|0,g|0,((g|0)<0)<<31>>31|0)|0,M|0,f|0,b|0)|0;e=da(l[(k[k[a>>2]>>2]|0)+b>>0]|0);d=da(e/da(255.0));o[c>>2]=(i[a+32>>0]|0)==0?e:d;o[c+4>>2]=da(0.0);c=1;return c|0}case 2:{g=k[b>>2]|0;h=a+48|0;b=k[h>>2]|0;h=k[h+4>>2]|0;f=a+40|0;h=(Bj(Pi(k[f>>2]|0,k[f+4>>2]|0,g|0,((g|0)<0)<<31>>31|0)|0,M|0,b|0,h|0)|0)+(k[k[a>>2]>>2]|0)|0;h=l[h>>0]|l[h+1>>0]<<8;b=(h&65535)>>>8&255;d=da(h&255);if(!(i[a+32>>0]|0)){o[c>>2]=d;e=da(b&255);o[c+4>>2]=e;h=1;return h|0}else{e=da(d/da(255.0));o[c>>2]=e;e=da(da(b&255)/da(255.0));o[c+4>>2]=e;h=1;return h|0}}case 3:{g=k[b>>2]|0;h=a+48|0;b=k[h>>2]|0;h=k[h+4>>2]|0;f=a+40|0;h=(Bj(Pi(k[f>>2]|0,k[f+4>>2]|0,g|0,((g|0)<0)<<31>>31|0)|0,M|0,b|0,h|0)|0)+(k[k[a>>2]>>2]|0)|0;b=i[h+1>>0]|0;d=da(l[h>>0]|0);if(!(i[a+32>>0]|0)){o[c>>2]=d;e=da(b&255);o[c+4>>2]=e;h=1;return h|0}else{e=da(d/da(255.0));o[c>>2]=e;e=da(da(b&255)/da(255.0));o[c+4>>2]=e;h=1;return h|0}}case 4:{g=k[b>>2]|0;h=a+48|0;b=k[h>>2]|0;h=k[h+4>>2]|0;f=a+40|0;h=(Bj(Pi(k[f>>2]|0,k[f+4>>2]|0,g|0,((g|0)<0)<<31>>31|0)|0,M|0,b|0,h|0)|0)+(k[k[a>>2]>>2]|0)|0;h=l[h>>0]|l[h+1>>0]<<8|l[h+2>>0]<<16|l[h+3>>0]<<24;b=h>>>8&255;d=da(h&255);if(!(i[a+32>>0]|0)){o[c>>2]=d;e=da(b&255);o[c+4>>2]=e;h=1;return h|0}else{e=da(d/da(255.0));o[c>>2]=e;e=da(da(b&255)/da(255.0));o[c+4>>2]=e;h=1;return h|0}}default:{h=0;return h|0}}return 0}function Kd(a,b){a=a|0;b=b|0;var c=0,d=0,e=0,f=0,g=0,h=0,j=0,m=0,n=0,o=0,p=0,q=0;q=r;r=r+16|0;p=q;m=b+8|0;g=m;h=k[g>>2]|0;g=k[g+4>>2]|0;j=b+16|0;d=j;c=k[d>>2]|0;d=Bj(c|0,k[d+4>>2]|0,4,0)|0;e=M;if((g|0)<(e|0)|(g|0)==(e|0)&h>>>0>>0){p=0;r=q;return p|0}h=(k[b>>2]|0)+c|0;h=l[h>>0]|l[h+1>>0]<<8|l[h+2>>0]<<16|l[h+3>>0]<<24;g=j;k[g>>2]=d;k[g+4>>2]=e;if((h|0)<0){p=0;r=q;return p|0}g=a+76|0;ee(g,h,0);Pk(p);if(te(p,b)|0){if((h|0)>0){d=1;e=0;do{d=d^((yh(p)|0)^1);f=(k[g>>2]|0)+(e>>>5<<2)|0;c=1<<(e&31);if(d)c=k[f>>2]|c;else c=k[f>>2]&~c;k[f>>2]=c;e=e+1|0}while((e|0)<(h|0))}e=m;g=k[e>>2]|0;e=k[e+4>>2]|0;h=j;c=k[h>>2]|0;h=Bj(c|0,k[h+4>>2]|0,4,0)|0;f=M;if(!((e|0)<(f|0)|(e|0)==(f|0)&g>>>0>>0)?(g=a+12|0,n=(k[b>>2]|0)+c|0,n=l[n>>0]|l[n+1>>0]<<8|l[n+2>>0]<<16|l[n+3>>0]<<24,i[g>>0]=n,i[g+1>>0]=n>>8,i[g+2>>0]=n>>16,i[g+3>>0]=n>>24,g=j,e=k[g>>2]|0,g=k[g+4>>2]|0,o=Bj(e|0,g|0,4,0)|0,f=j,k[f>>2]=o,k[f+4>>2]=M,f=m,h=k[f>>2]|0,f=k[f+4>>2]|0,m=Bj(e|0,g|0,8,0)|0,g=M,!((f|0)<(g|0)|(f|0)==(g|0)&h>>>0>>0)):0){d=a+16|0;o=(k[b>>2]|0)+o|0;o=l[o>>0]|l[o+1>>0]<<8|l[o+2>>0]<<16|l[o+3>>0]<<24;i[d>>0]=o;i[d+1>>0]=o>>8;i[d+2>>0]=o>>16;i[d+3>>0]=o>>24;d=j;d=Bj(k[d>>2]|0,k[d+4>>2]|0,4,0)|0;c=j;k[c>>2]=d;k[c+4>>2]=M;o=o+(1-n)|0;k[a+20>>2]=o;c=(o|0)/2|0;d=a+24|0;k[d>>2]=c;k[a+28>>2]=0-c;if(!(o&1)){k[d>>2]=c+-1;c=1}else c=1}else c=0}else c=0;jl(p);p=c;r=q;return p|0}function Ld(a,b,c){a=a|0;b=b|0;c=c|0;var d=0,e=0,f=0,g=0,h=0,j=0,m=0,n=0,o=0,p=0,q=0,s=0,t=0,u=0;s=r;r=r+64|0;q=s+48|0;m=s+32|0;n=s+20|0;o=s+8|0;p=s;f=b+8|0;h=f;e=k[h>>2]|0;h=k[h+4>>2]|0;j=b+16|0;g=j;d=k[g>>2]|0;g=k[g+4>>2]|0;t=Bj(d|0,g|0,4,0)|0;u=M;if(!((h|0)<(u|0)|(h|0)==(u|0)&e>>>0>>0)){d=(k[b>>2]|0)+d|0;d=l[d>>0]|l[d+1>>0]<<8|l[d+2>>0]<<16|l[d+3>>0]<<24;i[a>>0]=d;i[a+1>>0]=d>>8;i[a+2>>0]=d>>16;i[a+3>>0]=d>>24;d=j;d=Bj(k[d>>2]|0,k[d+4>>2]|0,4,0)|0;g=M;e=j;k[e>>2]=d;k[e+4>>2]=g;e=f;h=k[e+4>>2]|0;e=k[e>>2]|0}f=a+4|0;u=Bj(d|0,g|0,4,0)|0;t=M;if((h|0)<(t|0)|(h|0)==(t|0)&e>>>0>>0)d=k[f>>2]|0;else{d=(k[b>>2]|0)+d|0;d=l[d>>0]|l[d+1>>0]<<8|l[d+2>>0]<<16|l[d+3>>0]<<24;i[f>>0]=d;i[f+1>>0]=d>>8;i[f+2>>0]=d>>16;i[f+3>>0]=d>>24;t=j;t=Bj(k[t>>2]|0,k[t+4>>2]|0,4,0)|0;u=j;k[u>>2]=t;k[u+4>>2]=M}if(!d){u=1;r=s;return u|0}if(!(Ee(a+8|0,b)|0)){u=0;r=s;return u|0}if(!(Ee(a+28|0,b)|0)){u=0;r=s;return u|0}if(!(Ee(a+48|0,b)|0)){u=0;r=s;return u|0}if(!(Ee(a+68|0,b)|0)){u=0;r=s;return u|0}u=k[f>>2]|0;k[n>>2]=0;k[n+4>>2]=0;k[n+8>>2]=0;k[o>>2]=0;k[o+4>>2]=0;k[o+8>>2]=0;b=c;c=k[b+4>>2]|0;t=p;k[t>>2]=k[b>>2];k[t+4>>2]=c;k[m>>2]=k[o>>2];k[m+4>>2]=k[o+4>>2];k[m+8>>2]=k[o+8>>2];k[q>>2]=k[p>>2];k[q+4>>2]=k[p+4>>2];mb(a,u,n,m,0,q);u=1;r=s;return u|0}function Md(a,b,c){a=a|0;b=b|0;c=c|0;var d=0,e=0,f=0,g=0,h=0,j=0,m=0,n=0,o=0,p=0,q=0,s=0,t=0,u=0;s=r;r=r+64|0;q=s+48|0;m=s+32|0;n=s+20|0;o=s+8|0;p=s;f=b+8|0;h=f;e=k[h>>2]|0;h=k[h+4>>2]|0;j=b+16|0;g=j;d=k[g>>2]|0;g=k[g+4>>2]|0;t=Bj(d|0,g|0,4,0)|0;u=M;if(!((h|0)<(u|0)|(h|0)==(u|0)&e>>>0>>0)){d=(k[b>>2]|0)+d|0;d=l[d>>0]|l[d+1>>0]<<8|l[d+2>>0]<<16|l[d+3>>0]<<24;i[a>>0]=d;i[a+1>>0]=d>>8;i[a+2>>0]=d>>16;i[a+3>>0]=d>>24;d=j;d=Bj(k[d>>2]|0,k[d+4>>2]|0,4,0)|0;g=M;e=j;k[e>>2]=d;k[e+4>>2]=g;e=f;h=k[e+4>>2]|0;e=k[e>>2]|0}f=a+4|0;u=Bj(d|0,g|0,4,0)|0;t=M;if((h|0)<(t|0)|(h|0)==(t|0)&e>>>0>>0)d=k[f>>2]|0;else{d=(k[b>>2]|0)+d|0;d=l[d>>0]|l[d+1>>0]<<8|l[d+2>>0]<<16|l[d+3>>0]<<24;i[f>>0]=d;i[f+1>>0]=d>>8;i[f+2>>0]=d>>16;i[f+3>>0]=d>>24;t=j;t=Bj(k[t>>2]|0,k[t+4>>2]|0,4,0)|0;u=j;k[u>>2]=t;k[u+4>>2]=M}if(!d){u=1;r=s;return u|0}if(!(te(a+8|0,b)|0)){u=0;r=s;return u|0}if(!(Ee(a+24|0,b)|0)){u=0;r=s;return u|0}if(!(Ee(a+44|0,b)|0)){u=0;r=s;return u|0}if(!(Ee(a+64|0,b)|0)){u=0;r=s;return u|0}u=k[f>>2]|0;k[n>>2]=0;k[n+4>>2]=0;k[n+8>>2]=0;k[o>>2]=0;k[o+4>>2]=0;k[o+8>>2]=0;b=c;c=k[b+4>>2]|0;t=p;k[t>>2]=k[b>>2];k[t+4>>2]=c;k[m>>2]=k[o>>2];k[m+4>>2]=k[o+4>>2];k[m+8>>2]=k[o+8>>2];k[q>>2]=k[p>>2];k[q+4>>2]=k[p+4>>2];sb(a,u,n,m,0,q);u=1;r=s;return u|0}function Nd(a,b){a=a|0;b=b|0;var c=0,d=0,e=0,f=0,g=0,h=0,j=0,m=0,n=0,o=0;o=r;r=r+32|0;h=o+16|0;j=o;n=b+8|0;g=n;f=k[g+4>>2]|0;m=b+16|0;d=m;c=k[d>>2]|0;d=k[d+4>>2]|0;if(!((f|0)>(d|0)|((f|0)==(d|0)?(k[g>>2]|0)>>>0>c>>>0:0))){n=0;r=o;return n|0}g=i[(k[b>>2]|0)+c>>0]|0;e=Bj(c|0,d|0,1,0)|0;f=m;k[f>>2]=e;k[f+4>>2]=M;if(g<<24>>24){n=0;r=o;return n|0}f=0;do{Qg(h,b);c=k[h>>2]|0;if(c|0){g=a+36+(f*12|0)|0;ee(g,c,0);Pk(j);te(j,b)|0;if(k[h>>2]|0){d=0;do{e=(k[g>>2]|0)+(d>>>5<<2)|0;c=1<<(d&31);if(yh(j)|0)c=k[e>>2]|c;else c=k[e>>2]&~c;k[e>>2]=c;d=d+1|0}while(d>>>0<(k[h>>2]|0)>>>0)}jl(j)}f=f+1|0}while((f|0)<4);f=n;h=k[f>>2]|0;f=k[f+4>>2]|0;j=m;c=k[j>>2]|0;j=Bj(c|0,k[j+4>>2]|0,4,0)|0;g=M;if((f|0)<(g|0)|(f|0)==(g|0)&h>>>0>>0){n=0;r=o;return n|0}h=a+12|0;f=(k[b>>2]|0)+c|0;f=l[f>>0]|l[f+1>>0]<<8|l[f+2>>0]<<16|l[f+3>>0]<<24;i[h>>0]=f;i[h+1>>0]=f>>8;i[h+2>>0]=f>>16;i[h+3>>0]=f>>24;h=m;f=k[h>>2]|0;h=k[h+4>>2]|0;c=Bj(f|0,h|0,4,0)|0;g=m;k[g>>2]=c;k[g+4>>2]=M;g=n;j=k[g>>2]|0;g=k[g+4>>2]|0;n=Bj(f|0,h|0,8,0)|0;h=M;if((g|0)<(h|0)|(g|0)==(h|0)&j>>>0>>0){n=0;r=o;return n|0}n=a+16|0;b=(k[b>>2]|0)+c|0;b=l[b>>0]|l[b+1>>0]<<8|l[b+2>>0]<<16|l[b+3>>0]<<24;i[n>>0]=b;i[n+1>>0]=b>>8;i[n+2>>0]=b>>16;i[n+3>>0]=b>>24;b=m;b=Bj(k[b>>2]|0,k[b+4>>2]|0,4,0)|0;n=m;k[n>>2]=b;k[n+4>>2]=M;n=1;r=o;return n|0}function Od(a,b,c,d,e,f){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;f=f|0;var g=0,h=0,i=0,j=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0,v=0;s=a+8|0;k[s>>2]=e;t=k[a+24>>2]|0;q=k[a+28>>2]|0;m=e>>>0>1073741823?-1:e<<2;r=dl(m)|0;Ah(r|0,0,m|0)|0;Sf(s,r,b,c,0);m=a+32|0;a=k[m>>2]|0;g=k[a+4>>2]|0;f=k[a>>2]|0;p=g-f|0;n=p>>2;if((p|0)<=4){el(r);return 1}o=t+12|0;p=(e|0)>0;d=1;while(1){if(g-f>>2>>>0<=d>>>0){v=6;break}f=k[f+(d<<2)>>2]|0;l=$(d,e)|0;if((f|0)>=0?(u=k[(k[o>>2]|0)+(f<<2)>>2]|0,(u|0)>=0):0){g=k[t>>2]|0;a=(u>>>0)%3|0;h=k[q>>2]|0;j=k[h+(k[g+(((u>>>0)/3|0)*12|0)+(a<<2)>>2]<<2)>>2]|0;f=u+1|0;f=((f|0)%3|0|0)==0?u+-2|0:f;if((f|0)<0)f=-1073741824;else f=k[g+(((f>>>0)/3|0)*12|0)+(((f>>>0)%3|0)<<2)>>2]|0;i=k[h+(f<<2)>>2]|0;f=((a|0)==0?2:-1)+u|0;if((f|0)<0)f=-1073741824;else f=k[g+(((f>>>0)/3|0)*12|0)+(((f>>>0)%3|0)<<2)>>2]|0;f=k[h+(f<<2)>>2]|0;if((j|0)<(d|0)&(i|0)<(d|0)&(f|0)<(d|0)){h=$(j,e)|0;g=$(i,e)|0;a=$(f,e)|0;if(p){f=0;do{k[r+(f<<2)>>2]=(k[c+(f+a<<2)>>2]|0)+(k[c+(f+g<<2)>>2]|0)-(k[c+(f+h<<2)>>2]|0);f=f+1|0}while((f|0)!=(e|0))}Sf(s,r,b,c+(l<<2)|0,l)}else v=15}else v=15;if((v|0)==15){v=0;Sf(s,c+(($(d+-1|0,e)|0)<<2)|0,b,c+(l<<2)|0,l)}d=d+1|0;if((d|0)>=(n|0)){v=3;break}a=k[m>>2]|0;f=k[a>>2]|0;g=k[a+4>>2]|0}if((v|0)==3){el(r);return 1}else if((v|0)==6)lk(a);return 0}function Pd(a,b,c,d,e,f){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;f=f|0;var g=0,h=0,i=0,j=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0,v=0,w=0,x=0;r=a+8|0;k[r>>2]=e;p=e>>>0>1073741823?-1:e<<2;s=dl(p)|0;Ah(s|0,0,p|0)|0;p=k[a+24>>2]|0;q=a+32|0;h=k[q>>2]|0;g=k[h+4>>2]|0;f=k[h>>2]|0;d=g-f|0;a:do if((d|0)>4){l=k[a+28>>2]|0;m=p+64|0;n=p+28|0;o=(e|0)>0;i=d>>2;a=g;d=h;while(1){j=i+-1|0;if(a-f>>2>>>0<=j>>>0)break;d=k[f+(j<<2)>>2]|0;h=$(j,e)|0;if((!((d|0)<0?1:(1<<(d&31)&k[(k[p>>2]|0)+(d>>>5<<2)>>2]|0)!=0)?(u=k[(k[(k[m>>2]|0)+12>>2]|0)+(d<<2)>>2]|0,(u|0)>=0):0)?(x=k[n>>2]|0,g=k[l>>2]|0,v=k[g+(k[x+(u<<2)>>2]<<2)>>2]|0,w=u+1|0,w=k[g+(k[x+((((w|0)%3|0|0)==0?u+-2|0:w)<<2)>>2]<<2)>>2]|0,x=k[g+(k[x+((((u>>>0)%3|0|0)==0?2:-1)+u<<2)>>2]<<2)>>2]|0,(v|0)<(j|0)&(w|0)<(j|0)&(x|0)<(j|0)):0){f=$(v,e)|0;a=$(w,e)|0;g=$(x,e)|0;if(o){d=0;do{k[s+(d<<2)>>2]=(k[b+(d+g<<2)>>2]|0)+(k[b+(d+a<<2)>>2]|0)-(k[b+(d+f<<2)>>2]|0);d=d+1|0}while((d|0)!=(e|0))}ue(r,b+(h<<2)|0,s,c,h)}else ue(r,b+(h<<2)|0,b+(($(i+-2|0,e)|0)<<2)|0,c,h);if((j|0)<=1){t=s;break a}d=k[q>>2]|0;i=j;f=k[d>>2]|0;a=k[d+4>>2]|0}lk(d)}else t=s;while(0);if((e|0)<=0){ue(r,b,t,c,0);el(s);return 1}Ah(s|0,0,e<<2|0)|0;ue(r,b,t,c,0);el(s);return 1}function Qd(a,b,c){a=a|0;b=b|0;c=c|0;var d=0,e=0,f=0,g=0,h=0,j=0,m=0,n=0,o=0,p=0,q=0,s=0,t=0,u=0;s=r;r=r+48|0;n=s+40|0;m=s+28|0;o=s+16|0;p=s+4|0;q=s;f=b+8|0;h=f;e=k[h>>2]|0;h=k[h+4>>2]|0;j=b+16|0;g=j;d=k[g>>2]|0;g=k[g+4>>2]|0;t=Bj(d|0,g|0,4,0)|0;u=M;if(!((h|0)<(u|0)|(h|0)==(u|0)&e>>>0>>0)){d=(k[b>>2]|0)+d|0;d=l[d>>0]|l[d+1>>0]<<8|l[d+2>>0]<<16|l[d+3>>0]<<24;i[a>>0]=d;i[a+1>>0]=d>>8;i[a+2>>0]=d>>16;i[a+3>>0]=d>>24;d=j;d=Bj(k[d>>2]|0,k[d+4>>2]|0,4,0)|0;g=M;e=j;k[e>>2]=d;k[e+4>>2]=g;e=f;h=k[e+4>>2]|0;e=k[e>>2]|0}f=a+4|0;u=Bj(d|0,g|0,4,0)|0;t=M;if((h|0)<(t|0)|(h|0)==(t|0)&e>>>0>>0)d=k[f>>2]|0;else{d=(k[b>>2]|0)+d|0;d=l[d>>0]|l[d+1>>0]<<8|l[d+2>>0]<<16|l[d+3>>0]<<24;i[f>>0]=d;i[f+1>>0]=d>>8;i[f+2>>0]=d>>16;i[f+3>>0]=d>>24;t=j;t=Bj(k[t>>2]|0,k[t+4>>2]|0,4,0)|0;u=j;k[u>>2]=t;k[u+4>>2]=M}if(!d){u=1;r=s;return u|0}if(!(Ee(a+8|0,b)|0)){u=0;r=s;return u|0}if(!(Ee(a+28|0,b)|0)){u=0;r=s;return u|0}if(!(Ee(a+48|0,b)|0)){u=0;r=s;return u|0}if(!(Ee(a+68|0,b)|0)){u=0;r=s;return u|0}u=k[f>>2]|0;k[o>>2]=0;k[o+4>>2]=0;k[o+8>>2]=0;k[p>>2]=0;k[p+4>>2]=0;k[p+8>>2]=0;k[q>>2]=k[c>>2];k[m>>2]=k[p>>2];k[m+4>>2]=k[p+4>>2];k[m+8>>2]=k[p+8>>2];k[n>>2]=k[q>>2];nb(a,u,o,m,0,n);u=1;r=s;return u|0}function Rd(a,b,c){a=a|0;b=b|0;c=c|0;var d=0,e=0,f=0,g=0,h=0,j=0,m=0,n=0,o=0,p=0,q=0,s=0,t=0,u=0;s=r;r=r+48|0;n=s+40|0;m=s+28|0;o=s+16|0;p=s+4|0;q=s;f=b+8|0;h=f;e=k[h>>2]|0;h=k[h+4>>2]|0;j=b+16|0;g=j;d=k[g>>2]|0;g=k[g+4>>2]|0;t=Bj(d|0,g|0,4,0)|0;u=M;if(!((h|0)<(u|0)|(h|0)==(u|0)&e>>>0>>0)){d=(k[b>>2]|0)+d|0;d=l[d>>0]|l[d+1>>0]<<8|l[d+2>>0]<<16|l[d+3>>0]<<24;i[a>>0]=d;i[a+1>>0]=d>>8;i[a+2>>0]=d>>16;i[a+3>>0]=d>>24;d=j;d=Bj(k[d>>2]|0,k[d+4>>2]|0,4,0)|0;g=M;e=j;k[e>>2]=d;k[e+4>>2]=g;e=f;h=k[e+4>>2]|0;e=k[e>>2]|0}f=a+4|0;u=Bj(d|0,g|0,4,0)|0;t=M;if((h|0)<(t|0)|(h|0)==(t|0)&e>>>0>>0)d=k[f>>2]|0;else{d=(k[b>>2]|0)+d|0;d=l[d>>0]|l[d+1>>0]<<8|l[d+2>>0]<<16|l[d+3>>0]<<24;i[f>>0]=d;i[f+1>>0]=d>>8;i[f+2>>0]=d>>16;i[f+3>>0]=d>>24;t=j;t=Bj(k[t>>2]|0,k[t+4>>2]|0,4,0)|0;u=j;k[u>>2]=t;k[u+4>>2]=M}if(!d){u=1;r=s;return u|0}if(!(te(a+8|0,b)|0)){u=0;r=s;return u|0}if(!(Ee(a+24|0,b)|0)){u=0;r=s;return u|0}if(!(Ee(a+44|0,b)|0)){u=0;r=s;return u|0}if(!(Ee(a+64|0,b)|0)){u=0;r=s;return u|0}u=k[f>>2]|0;k[o>>2]=0;k[o+4>>2]=0;k[o+8>>2]=0;k[p>>2]=0;k[p+4>>2]=0;k[p+8>>2]=0;k[q>>2]=k[c>>2];k[m>>2]=k[p>>2];k[m+4>>2]=k[p+4>>2];k[m+8>>2]=k[p+8>>2];k[n>>2]=k[q>>2];xb(a,u,o,m,0,n);u=1;r=s;return u|0}function Sd(a,b,c,d,e,f){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;f=f|0;var g=0,h=0,i=0,j=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0,v=0;s=a+8|0;k[s>>2]=e;t=k[a+24>>2]|0;q=k[a+28>>2]|0;m=e>>>0>1073741823?-1:e<<2;r=dl(m)|0;Ah(r|0,0,m|0)|0;Uf(s,r,b,c,0);m=a+32|0;a=k[m>>2]|0;g=k[a+4>>2]|0;f=k[a>>2]|0;p=g-f|0;n=p>>2;if((p|0)<=4){el(r);return 1}o=t+12|0;p=(e|0)>0;d=1;while(1){if(g-f>>2>>>0<=d>>>0){v=6;break}f=k[f+(d<<2)>>2]|0;l=$(d,e)|0;if((f|0)>=0?(u=k[(k[o>>2]|0)+(f<<2)>>2]|0,(u|0)>=0):0){g=k[t>>2]|0;a=(u>>>0)%3|0;h=k[q>>2]|0;j=k[h+(k[g+(((u>>>0)/3|0)*12|0)+(a<<2)>>2]<<2)>>2]|0;f=u+1|0;f=((f|0)%3|0|0)==0?u+-2|0:f;if((f|0)<0)f=-1073741824;else f=k[g+(((f>>>0)/3|0)*12|0)+(((f>>>0)%3|0)<<2)>>2]|0;i=k[h+(f<<2)>>2]|0;f=((a|0)==0?2:-1)+u|0;if((f|0)<0)f=-1073741824;else f=k[g+(((f>>>0)/3|0)*12|0)+(((f>>>0)%3|0)<<2)>>2]|0;f=k[h+(f<<2)>>2]|0;if((j|0)<(d|0)&(i|0)<(d|0)&(f|0)<(d|0)){h=$(j,e)|0;g=$(i,e)|0;a=$(f,e)|0;if(p){f=0;do{k[r+(f<<2)>>2]=(k[c+(f+a<<2)>>2]|0)+(k[c+(f+g<<2)>>2]|0)-(k[c+(f+h<<2)>>2]|0);f=f+1|0}while((f|0)!=(e|0))}Uf(s,r,b,c+(l<<2)|0,l)}else v=15}else v=15;if((v|0)==15){v=0;Uf(s,c+(($(d+-1|0,e)|0)<<2)|0,b,c+(l<<2)|0,l)}d=d+1|0;if((d|0)>=(n|0)){v=3;break}a=k[m>>2]|0;f=k[a>>2]|0;g=k[a+4>>2]|0}if((v|0)==3){el(r);return 1}else if((v|0)==6)lk(a);return 0}function Td(a,b,c,d,e,f){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;f=f|0;var g=0,h=0,i=0,j=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0,v=0,w=0,x=0;r=a+8|0;k[r>>2]=e;p=e>>>0>1073741823?-1:e<<2;s=dl(p)|0;Ah(s|0,0,p|0)|0;p=k[a+24>>2]|0;q=a+32|0;h=k[q>>2]|0;g=k[h+4>>2]|0;f=k[h>>2]|0;d=g-f|0;a:do if((d|0)>4){l=k[a+28>>2]|0;m=p+64|0;n=p+28|0;o=(e|0)>0;i=d>>2;a=g;d=h;while(1){j=i+-1|0;if(a-f>>2>>>0<=j>>>0)break;d=k[f+(j<<2)>>2]|0;h=$(j,e)|0;if((!((d|0)<0?1:(1<<(d&31)&k[(k[p>>2]|0)+(d>>>5<<2)>>2]|0)!=0)?(u=k[(k[(k[m>>2]|0)+12>>2]|0)+(d<<2)>>2]|0,(u|0)>=0):0)?(x=k[n>>2]|0,g=k[l>>2]|0,v=k[g+(k[x+(u<<2)>>2]<<2)>>2]|0,w=u+1|0,w=k[g+(k[x+((((w|0)%3|0|0)==0?u+-2|0:w)<<2)>>2]<<2)>>2]|0,x=k[g+(k[x+((((u>>>0)%3|0|0)==0?2:-1)+u<<2)>>2]<<2)>>2]|0,(v|0)<(j|0)&(w|0)<(j|0)&(x|0)<(j|0)):0){f=$(v,e)|0;a=$(w,e)|0;g=$(x,e)|0;if(o){d=0;do{k[s+(d<<2)>>2]=(k[b+(d+g<<2)>>2]|0)+(k[b+(d+a<<2)>>2]|0)-(k[b+(d+f<<2)>>2]|0);d=d+1|0}while((d|0)!=(e|0))}we(r,b+(h<<2)|0,s,c,h)}else we(r,b+(h<<2)|0,b+(($(i+-2|0,e)|0)<<2)|0,c,h);if((j|0)<=1){t=s;break a}d=k[q>>2]|0;i=j;f=k[d>>2]|0;a=k[d+4>>2]|0}lk(d)}else t=s;while(0);if((e|0)<=0){we(r,b,t,c,0);el(s);return 1}Ah(s|0,0,e<<2|0)|0;we(r,b,t,c,0);el(s);return 1}function Ud(a,b){a=a|0;b=b|0;var c=0,d=0,e=0,f=0,g=0,h=0,j=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0;q=a+12|0;r=b+8|0;g=r;m=k[g>>2]|0;g=k[g+4>>2]|0;p=b+16|0;n=p;c=k[n>>2]|0;n=Bj(c|0,k[n+4>>2]|0,4,0)|0;j=M;if((g|0)<(j|0)|(g|0)==(j|0)&m>>>0>>0){r=0;return r|0}d=(k[b>>2]|0)+c|0;d=l[d>>0]|l[d+1>>0]<<8|l[d+2>>0]<<16|l[d+3>>0]<<24;i[q>>0]=d;i[q+1>>0]=d>>8;i[q+2>>0]=d>>16;i[q+3>>0]=d>>24;g=p;g=Bj(k[g>>2]|0,k[g+4>>2]|0,4,0)|0;c=p;k[c>>2]=g;k[c+4>>2]=M;c=a+4|0;g=k[c>>2]|0;f=k[a>>2]|0;e=g-f>>2;if(d>>>0<=e>>>0){if(d>>>0>>0?(h=f+(d<<2)|0,(g|0)!=(h|0)):0)k[c>>2]=g+(~((g+-4-h|0)>>>2)<<2)}else{eg(a,d-e|0);d=k[q>>2]|0}if(!d){r=1;return r|0}c=0;g=d;a:while(1){m=r;j=k[m>>2]|0;m=k[m+4>>2]|0;e=p;d=k[e>>2]|0;e=k[e+4>>2]|0;if(!((m|0)>(e|0)|(m|0)==(e|0)&j>>>0>d>>>0)){c=0;o=18;break}n=k[b>>2]|0;s=i[n+d>>0]|0;e=Bj(d|0,e|0,1,0)|0;f=M;d=p;k[d>>2]=e;k[d+4>>2]=f;d=s&255;h=d&3;d=d>>>2;switch(s&3){case 3:{e=d+c|0;if(e>>>0>=g>>>0){c=0;o=18;break a}Ah((k[a>>2]|0)+(c<<2)|0,0,(d<<2)+4|0)|0;c=e;break}case 0:{o=15;break}default:{g=0;while(1){if(!((m|0)>(f|0)|(m|0)==(f|0)&j>>>0>e>>>0)){c=0;o=18;break a}s=i[n+e>>0]|0;e=Bj(e|0,f|0,1,0)|0;f=M;o=p;k[o>>2]=e;k[o+4>>2]=f;d=(s&255)<<(g<<3|6)|d;g=g+1|0;if((g|0)>=(h|0)){o=15;break}}}}if((o|0)==15){o=0;k[(k[a>>2]|0)+(c<<2)>>2]=d}c=c+1|0;g=k[q>>2]|0;if(c>>>0>=g>>>0){o=17;break}}if((o|0)==17){s=rf(a+16|0,k[a>>2]|0,g)|0;return s|0}else if((o|0)==18)return c|0;return 0}function Vd(a,b){a=a|0;b=b|0;var c=0,d=0,e=0,f=0,g=0,h=0,j=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0;q=a+12|0;r=b+8|0;g=r;m=k[g>>2]|0;g=k[g+4>>2]|0;p=b+16|0;n=p;c=k[n>>2]|0;n=Bj(c|0,k[n+4>>2]|0,4,0)|0;j=M;if((g|0)<(j|0)|(g|0)==(j|0)&m>>>0>>0){r=0;return r|0}d=(k[b>>2]|0)+c|0;d=l[d>>0]|l[d+1>>0]<<8|l[d+2>>0]<<16|l[d+3>>0]<<24;i[q>>0]=d;i[q+1>>0]=d>>8;i[q+2>>0]=d>>16;i[q+3>>0]=d>>24;g=p;g=Bj(k[g>>2]|0,k[g+4>>2]|0,4,0)|0;c=p;k[c>>2]=g;k[c+4>>2]=M;c=a+4|0;g=k[c>>2]|0;f=k[a>>2]|0;e=g-f>>2;if(d>>>0<=e>>>0){if(d>>>0>>0?(h=f+(d<<2)|0,(g|0)!=(h|0)):0)k[c>>2]=g+(~((g+-4-h|0)>>>2)<<2)}else{eg(a,d-e|0);d=k[q>>2]|0}if(!d){r=1;return r|0}c=0;g=d;a:while(1){m=r;j=k[m>>2]|0;m=k[m+4>>2]|0;e=p;d=k[e>>2]|0;e=k[e+4>>2]|0;if(!((m|0)>(e|0)|(m|0)==(e|0)&j>>>0>d>>>0)){c=0;o=18;break}n=k[b>>2]|0;s=i[n+d>>0]|0;e=Bj(d|0,e|0,1,0)|0;f=M;d=p;k[d>>2]=e;k[d+4>>2]=f;d=s&255;h=d&3;d=d>>>2;switch(s&3){case 3:{e=d+c|0;if(e>>>0>=g>>>0){c=0;o=18;break a}Ah((k[a>>2]|0)+(c<<2)|0,0,(d<<2)+4|0)|0;c=e;break}case 0:{o=15;break}default:{g=0;while(1){if(!((m|0)>(f|0)|(m|0)==(f|0)&j>>>0>e>>>0)){c=0;o=18;break a}s=i[n+e>>0]|0;e=Bj(e|0,f|0,1,0)|0;f=M;o=p;k[o>>2]=e;k[o+4>>2]=f;d=(s&255)<<(g<<3|6)|d;g=g+1|0;if((g|0)>=(h|0)){o=15;break}}}}if((o|0)==15){o=0;k[(k[a>>2]|0)+(c<<2)>>2]=d}c=c+1|0;g=k[q>>2]|0;if(c>>>0>=g>>>0){o=17;break}}if((o|0)==17){s=sf(a+16|0,k[a>>2]|0,g)|0;return s|0}else if((o|0)==18)return c|0;return 0}function Wd(a,b){a=a|0;b=b|0;var c=0,d=0,e=0,f=0,g=0,h=0,j=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0;q=a+12|0;r=b+8|0;g=r;m=k[g>>2]|0;g=k[g+4>>2]|0;p=b+16|0;n=p;c=k[n>>2]|0;n=Bj(c|0,k[n+4>>2]|0,4,0)|0;j=M;if((g|0)<(j|0)|(g|0)==(j|0)&m>>>0>>0){r=0;return r|0}d=(k[b>>2]|0)+c|0;d=l[d>>0]|l[d+1>>0]<<8|l[d+2>>0]<<16|l[d+3>>0]<<24;i[q>>0]=d;i[q+1>>0]=d>>8;i[q+2>>0]=d>>16;i[q+3>>0]=d>>24;g=p;g=Bj(k[g>>2]|0,k[g+4>>2]|0,4,0)|0;c=p;k[c>>2]=g;k[c+4>>2]=M;c=a+4|0;g=k[c>>2]|0;f=k[a>>2]|0;e=g-f>>2;if(d>>>0<=e>>>0){if(d>>>0>>0?(h=f+(d<<2)|0,(g|0)!=(h|0)):0)k[c>>2]=g+(~((g+-4-h|0)>>>2)<<2)}else{eg(a,d-e|0);d=k[q>>2]|0}if(!d){r=1;return r|0}c=0;g=d;a:while(1){m=r;j=k[m>>2]|0;m=k[m+4>>2]|0;e=p;d=k[e>>2]|0;e=k[e+4>>2]|0;if(!((m|0)>(e|0)|(m|0)==(e|0)&j>>>0>d>>>0)){c=0;o=18;break}n=k[b>>2]|0;s=i[n+d>>0]|0;e=Bj(d|0,e|0,1,0)|0;f=M;d=p;k[d>>2]=e;k[d+4>>2]=f;d=s&255;h=d&3;d=d>>>2;switch(s&3){case 3:{e=d+c|0;if(e>>>0>=g>>>0){c=0;o=18;break a}Ah((k[a>>2]|0)+(c<<2)|0,0,(d<<2)+4|0)|0;c=e;break}case 0:{o=15;break}default:{g=0;while(1){if(!((m|0)>(f|0)|(m|0)==(f|0)&j>>>0>e>>>0)){c=0;o=18;break a}s=i[n+e>>0]|0;e=Bj(e|0,f|0,1,0)|0;f=M;o=p;k[o>>2]=e;k[o+4>>2]=f;d=(s&255)<<(g<<3|6)|d;g=g+1|0;if((g|0)>=(h|0)){o=15;break}}}}if((o|0)==15){o=0;k[(k[a>>2]|0)+(c<<2)>>2]=d}c=c+1|0;g=k[q>>2]|0;if(c>>>0>=g>>>0){o=17;break}}if((o|0)==17){s=tf(a+16|0,k[a>>2]|0,g)|0;return s|0}else if((o|0)==18)return c|0;return 0}function Xd(a,b){a=a|0;b=b|0;var c=0,d=0,e=0,f=0,g=0,h=0,j=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0;q=a+12|0;r=b+8|0;g=r;m=k[g>>2]|0;g=k[g+4>>2]|0;p=b+16|0;n=p;c=k[n>>2]|0;n=Bj(c|0,k[n+4>>2]|0,4,0)|0;j=M;if((g|0)<(j|0)|(g|0)==(j|0)&m>>>0>>0){r=0;return r|0}d=(k[b>>2]|0)+c|0;d=l[d>>0]|l[d+1>>0]<<8|l[d+2>>0]<<16|l[d+3>>0]<<24;i[q>>0]=d;i[q+1>>0]=d>>8;i[q+2>>0]=d>>16;i[q+3>>0]=d>>24;g=p;g=Bj(k[g>>2]|0,k[g+4>>2]|0,4,0)|0;c=p;k[c>>2]=g;k[c+4>>2]=M;c=a+4|0;g=k[c>>2]|0;f=k[a>>2]|0;e=g-f>>2;if(d>>>0<=e>>>0){if(d>>>0>>0?(h=f+(d<<2)|0,(g|0)!=(h|0)):0)k[c>>2]=g+(~((g+-4-h|0)>>>2)<<2)}else{eg(a,d-e|0);d=k[q>>2]|0}if(!d){r=1;return r|0}c=0;g=d;a:while(1){m=r;j=k[m>>2]|0;m=k[m+4>>2]|0;e=p;d=k[e>>2]|0;e=k[e+4>>2]|0;if(!((m|0)>(e|0)|(m|0)==(e|0)&j>>>0>d>>>0)){c=0;o=18;break}n=k[b>>2]|0;s=i[n+d>>0]|0;e=Bj(d|0,e|0,1,0)|0;f=M;d=p;k[d>>2]=e;k[d+4>>2]=f;d=s&255;h=d&3;d=d>>>2;switch(s&3){case 3:{e=d+c|0;if(e>>>0>=g>>>0){c=0;o=18;break a}Ah((k[a>>2]|0)+(c<<2)|0,0,(d<<2)+4|0)|0;c=e;break}case 0:{o=15;break}default:{g=0;while(1){if(!((m|0)>(f|0)|(m|0)==(f|0)&j>>>0>e>>>0)){c=0;o=18;break a}s=i[n+e>>0]|0;e=Bj(e|0,f|0,1,0)|0;f=M;o=p;k[o>>2]=e;k[o+4>>2]=f;d=(s&255)<<(g<<3|6)|d;g=g+1|0;if((g|0)>=(h|0)){o=15;break}}}}if((o|0)==15){o=0;k[(k[a>>2]|0)+(c<<2)>>2]=d}c=c+1|0;g=k[q>>2]|0;if(c>>>0>=g>>>0){o=17;break}}if((o|0)==17){s=vf(a+16|0,k[a>>2]|0,g)|0;return s|0}else if((o|0)==18)return c|0;return 0}function Yd(a,b){a=a|0;b=b|0;var c=0,d=0,e=0,f=0,g=0,h=0,j=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0;q=a+12|0;r=b+8|0;g=r;m=k[g>>2]|0;g=k[g+4>>2]|0;p=b+16|0;n=p;c=k[n>>2]|0;n=Bj(c|0,k[n+4>>2]|0,4,0)|0;j=M;if((g|0)<(j|0)|(g|0)==(j|0)&m>>>0>>0){r=0;return r|0}d=(k[b>>2]|0)+c|0;d=l[d>>0]|l[d+1>>0]<<8|l[d+2>>0]<<16|l[d+3>>0]<<24;i[q>>0]=d;i[q+1>>0]=d>>8;i[q+2>>0]=d>>16;i[q+3>>0]=d>>24;g=p;g=Bj(k[g>>2]|0,k[g+4>>2]|0,4,0)|0;c=p;k[c>>2]=g;k[c+4>>2]=M;c=a+4|0;g=k[c>>2]|0;f=k[a>>2]|0;e=g-f>>2;if(d>>>0<=e>>>0){if(d>>>0>>0?(h=f+(d<<2)|0,(g|0)!=(h|0)):0)k[c>>2]=g+(~((g+-4-h|0)>>>2)<<2)}else{eg(a,d-e|0);d=k[q>>2]|0}if(!d){r=1;return r|0}c=0;g=d;a:while(1){m=r;j=k[m>>2]|0;m=k[m+4>>2]|0;e=p;d=k[e>>2]|0;e=k[e+4>>2]|0;if(!((m|0)>(e|0)|(m|0)==(e|0)&j>>>0>d>>>0)){c=0;o=18;break}n=k[b>>2]|0;s=i[n+d>>0]|0;e=Bj(d|0,e|0,1,0)|0;f=M;d=p;k[d>>2]=e;k[d+4>>2]=f;d=s&255;h=d&3;d=d>>>2;switch(s&3){case 3:{e=d+c|0;if(e>>>0>=g>>>0){c=0;o=18;break a}Ah((k[a>>2]|0)+(c<<2)|0,0,(d<<2)+4|0)|0;c=e;break}case 0:{o=15;break}default:{g=0;while(1){if(!((m|0)>(f|0)|(m|0)==(f|0)&j>>>0>e>>>0)){c=0;o=18;break a}s=i[n+e>>0]|0;e=Bj(e|0,f|0,1,0)|0;f=M;o=p;k[o>>2]=e;k[o+4>>2]=f;d=(s&255)<<(g<<3|6)|d;g=g+1|0;if((g|0)>=(h|0)){o=15;break}}}}if((o|0)==15){o=0;k[(k[a>>2]|0)+(c<<2)>>2]=d}c=c+1|0;g=k[q>>2]|0;if(c>>>0>=g>>>0){o=17;break}}if((o|0)==17){s=wf(a+16|0,k[a>>2]|0,g)|0;return s|0}else if((o|0)==18)return c|0;return 0}function Zd(a,b){a=a|0;b=b|0;var c=0,d=0,e=0,f=0,g=0,h=0,j=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0;q=a+12|0;r=b+8|0;g=r;m=k[g>>2]|0;g=k[g+4>>2]|0;p=b+16|0;n=p;c=k[n>>2]|0;n=Bj(c|0,k[n+4>>2]|0,4,0)|0;j=M;if((g|0)<(j|0)|(g|0)==(j|0)&m>>>0>>0){r=0;return r|0}d=(k[b>>2]|0)+c|0;d=l[d>>0]|l[d+1>>0]<<8|l[d+2>>0]<<16|l[d+3>>0]<<24;i[q>>0]=d;i[q+1>>0]=d>>8;i[q+2>>0]=d>>16;i[q+3>>0]=d>>24;g=p;g=Bj(k[g>>2]|0,k[g+4>>2]|0,4,0)|0;c=p;k[c>>2]=g;k[c+4>>2]=M;c=a+4|0;g=k[c>>2]|0;f=k[a>>2]|0;e=g-f>>2;if(d>>>0<=e>>>0){if(d>>>0>>0?(h=f+(d<<2)|0,(g|0)!=(h|0)):0)k[c>>2]=g+(~((g+-4-h|0)>>>2)<<2)}else{eg(a,d-e|0);d=k[q>>2]|0}if(!d){r=1;return r|0}c=0;g=d;a:while(1){m=r;j=k[m>>2]|0;m=k[m+4>>2]|0;e=p;d=k[e>>2]|0;e=k[e+4>>2]|0;if(!((m|0)>(e|0)|(m|0)==(e|0)&j>>>0>d>>>0)){c=0;o=18;break}n=k[b>>2]|0;s=i[n+d>>0]|0;e=Bj(d|0,e|0,1,0)|0;f=M;d=p;k[d>>2]=e;k[d+4>>2]=f;d=s&255;h=d&3;d=d>>>2;switch(s&3){case 3:{e=d+c|0;if(e>>>0>=g>>>0){c=0;o=18;break a}Ah((k[a>>2]|0)+(c<<2)|0,0,(d<<2)+4|0)|0;c=e;break}case 0:{o=15;break}default:{g=0;while(1){if(!((m|0)>(f|0)|(m|0)==(f|0)&j>>>0>e>>>0)){c=0;o=18;break a}s=i[n+e>>0]|0;e=Bj(e|0,f|0,1,0)|0;f=M;o=p;k[o>>2]=e;k[o+4>>2]=f;d=(s&255)<<(g<<3|6)|d;g=g+1|0;if((g|0)>=(h|0)){o=15;break}}}}if((o|0)==15){o=0;k[(k[a>>2]|0)+(c<<2)>>2]=d}c=c+1|0;g=k[q>>2]|0;if(c>>>0>=g>>>0){o=17;break}}if((o|0)==17){s=zf(a+16|0,k[a>>2]|0,g)|0;return s|0}else if((o|0)==18)return c|0;return 0}function _d(a,b){a=a|0;b=b|0;var c=0,d=0,e=0,f=0,g=0,h=0,j=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0;q=a+12|0;r=b+8|0;g=r;m=k[g>>2]|0;g=k[g+4>>2]|0;p=b+16|0;n=p;c=k[n>>2]|0;n=Bj(c|0,k[n+4>>2]|0,4,0)|0;j=M;if((g|0)<(j|0)|(g|0)==(j|0)&m>>>0>>0){r=0;return r|0}d=(k[b>>2]|0)+c|0;d=l[d>>0]|l[d+1>>0]<<8|l[d+2>>0]<<16|l[d+3>>0]<<24;i[q>>0]=d;i[q+1>>0]=d>>8;i[q+2>>0]=d>>16;i[q+3>>0]=d>>24;g=p;g=Bj(k[g>>2]|0,k[g+4>>2]|0,4,0)|0;c=p;k[c>>2]=g;k[c+4>>2]=M;c=a+4|0;g=k[c>>2]|0;f=k[a>>2]|0;e=g-f>>2;if(d>>>0<=e>>>0){if(d>>>0>>0?(h=f+(d<<2)|0,(g|0)!=(h|0)):0)k[c>>2]=g+(~((g+-4-h|0)>>>2)<<2)}else{eg(a,d-e|0);d=k[q>>2]|0}if(!d){r=1;return r|0}c=0;g=d;a:while(1){m=r;j=k[m>>2]|0;m=k[m+4>>2]|0;e=p;d=k[e>>2]|0;e=k[e+4>>2]|0;if(!((m|0)>(e|0)|(m|0)==(e|0)&j>>>0>d>>>0)){c=0;o=18;break}n=k[b>>2]|0;s=i[n+d>>0]|0;e=Bj(d|0,e|0,1,0)|0;f=M;d=p;k[d>>2]=e;k[d+4>>2]=f;d=s&255;h=d&3;d=d>>>2;switch(s&3){case 3:{e=d+c|0;if(e>>>0>=g>>>0){c=0;o=18;break a}Ah((k[a>>2]|0)+(c<<2)|0,0,(d<<2)+4|0)|0;c=e;break}case 0:{o=15;break}default:{g=0;while(1){if(!((m|0)>(f|0)|(m|0)==(f|0)&j>>>0>e>>>0)){c=0;o=18;break a}s=i[n+e>>0]|0;e=Bj(e|0,f|0,1,0)|0;f=M;o=p;k[o>>2]=e;k[o+4>>2]=f;d=(s&255)<<(g<<3|6)|d;g=g+1|0;if((g|0)>=(h|0)){o=15;break}}}}if((o|0)==15){o=0;k[(k[a>>2]|0)+(c<<2)>>2]=d}c=c+1|0;g=k[q>>2]|0;if(c>>>0>=g>>>0){o=17;break}}if((o|0)==17){s=Af(a+16|0,k[a>>2]|0,g)|0;return s|0}else if((o|0)==18)return c|0;return 0}function $d(a,b,c,d){a=a|0;b=b|0;c=c|0;d=d|0;var e=0,f=0,g=0,h=0,i=0,j=0,l=0,m=0,n=0;l=k[b>>2]|0;m=b+4|0;e=k[m>>2]|0;h=((k[c>>2]|0)-l<<3)+(k[c+4>>2]|0)-e|0;c=l;if((h|0)<=0){b=d+4|0;d=k[d>>2]|0;k[a>>2]=d;d=a+4|0;a=k[b>>2]|0;k[d>>2]=a;return}if(!e){e=d+4|0;j=e;e=k[e>>2]|0}else{f=32-e|0;l=(h|0)<(f|0)?h:f;f=-1>>>(f-l|0)&-1<>2];j=d+4|0;n=k[j>>2]|0;e=32-n|0;c=e>>>0>>0?e:l;g=k[d>>2]|0;n=k[g>>2]&~(-1>>>(e-c|0)&-1<>2]=n;e=k[j>>2]|0;i=k[m>>2]|0;k[g>>2]=n|(e>>>0>i>>>0?f<>>(i-e|0));e=(k[j>>2]|0)+c|0;g=g+(e>>>5<<2)|0;k[d>>2]=g;e=e&31;k[j>>2]=e;i=l-c|0;if((i|0)>0){e=k[g>>2]&~(-1>>>(32-i|0));k[g>>2]=e;k[g>>2]=e|f>>>((k[m>>2]|0)+c|0);k[j>>2]=i;e=i}c=(k[b>>2]|0)+4|0;k[b>>2]=c;h=h-l|0}i=32-e|0;f=-1<>>0>31){g=~f;e=h;do{m=k[c>>2]|0;n=k[d>>2]|0;l=k[n>>2]&g;k[n>>2]=l;k[n>>2]=l|m<>2];n=n+4|0;k[d>>2]=n;k[n>>2]=k[n>>2]&f|m>>>i;e=e+-32|0;c=(k[b>>2]|0)+4|0;k[b>>2]=c}while(e>>>0>31);h=h&31}if(!h){b=j;n=k[d>>2]|0;k[a>>2]=n;n=a+4|0;d=k[b>>2]|0;k[n>>2]=d;return}g=k[c>>2]&-1>>>(32-h|0);f=(i|0)<(h|0)?i:h;e=k[d>>2]|0;c=k[e>>2]&~(-1<>2]&-1>>>(i-f|0));k[e>>2]=c;k[e>>2]=c|g<>2];c=(k[j>>2]|0)+f|0;e=e+(c>>>5<<2)|0;k[d>>2]=e;k[j>>2]=c&31;c=h-f|0;if((c|0)<=0){b=j;n=k[d>>2]|0;k[a>>2]=n;n=a+4|0;d=k[b>>2]|0;k[n>>2]=d;return}k[e>>2]=k[e>>2]&~(-1>>>(32-c|0))|g>>>f;k[j>>2]=c;b=j;n=k[d>>2]|0;k[a>>2]=n;n=a+4|0;d=k[b>>2]|0;k[n>>2]=d;return}function ae(a,b,c){a=a|0;b=b|0;c=c|0;var d=0,e=0,f=0,g=0,h=0,j=0,m=0,n=0,o=0,p=0,q=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0;w=r;r=r+48|0;t=w+40|0;u=w+24|0;o=w+20|0;p=w+16|0;q=w;s=w+8|0;k[u>>2]=0;v=u+4|0;k[v>>2]=0;k[u+8>>2]=0;e=b+8|0;d=k[e>>2]|0;e=k[e+4>>2]|0;f=b+16|0;h=f;g=k[h>>2]|0;h=k[h+4>>2]|0;j=Bj(g|0,h|0,4,0)|0;m=M;a:do if((e|0)<(m|0)|(e|0)==(m|0)&d>>>0>>0)d=0;else{n=k[b>>2]|0;x=n+g|0;x=l[x>>0]|l[x+1>>0]<<8|l[x+2>>0]<<16|l[x+3>>0]<<24;y=f;k[y>>2]=j;k[y+4>>2]=m;b:do switch(x|0){case 3:{if(!((e|0)>(m|0)|(e|0)==(m|0)&d>>>0>j>>>0)){d=0;break a}y=i[n+j>>0]|0;n=Bj(g|0,h|0,5,0)|0;x=f;k[x>>2]=n;k[x+4>>2]=M;k[a+8>>2]=y<<24>>24;if(y<<24>>24==1)if(yb(a,b,u)|0)break b;else{d=0;break a}else{fi(12991,23,1,k[1319]|0)|0;d=0;break a}}case 2:{if(!(yb(a,b,u)|0)){d=0;break a}break}default:{fi(13015,24,1,k[1319]|0)|0;d=0;break a}}while(0);k[o>>2]=k[u>>2];k[p>>2]=k[v>>2];x=c;y=k[x+4>>2]|0;d=q;k[d>>2]=k[x>>2];k[d+4>>2]=y;k[t>>2]=k[q>>2];k[t+4>>2]=k[q+4>>2];ne(s,o,p,a,t);d=1}while(0);a=k[u>>2]|0;if(!a){r=w;return d|0}b=k[v>>2]|0;if((b|0)!=(a|0))k[v>>2]=b+(~(((b+-12-a|0)>>>0)/12|0)*12|0);gl(a);r=w;return d|0}function be(a,b){a=a|0;b=b|0;var c=0,d=0,e=0,f=0,g=0,h=0,j=0;e=a+8|0;j=e;g=k[j>>2]|0;j=k[j+4>>2]|0;f=a+16|0;d=f;c=k[d>>2]|0;d=Bj(c|0,k[d+4>>2]|0,5,0)|0;h=M;if((j|0)<(h|0)|(j|0)==(h|0)&g>>>0>>0){j=0;return j|0}c=(k[a>>2]|0)+c|0;i[b>>0]=i[c>>0]|0;i[b+1>>0]=i[c+1>>0]|0;i[b+2>>0]=i[c+2>>0]|0;i[b+3>>0]=i[c+3>>0]|0;i[b+4>>0]=i[c+4>>0]|0;c=f;c=Bj(k[c>>2]|0,k[c+4>>2]|0,5,0)|0;d=M;j=f;k[j>>2]=c;k[j+4>>2]=d;if(Oh(b,6453,5)|0){j=0;return j|0}j=e;h=k[j+4>>2]|0;if(!((h|0)>(d|0)|((h|0)==(d|0)?(k[j>>2]|0)>>>0>c>>>0:0))){j=0;return j|0}i[b+5>>0]=i[(k[a>>2]|0)+c>>0]|0;c=f;c=Bj(k[c>>2]|0,k[c+4>>2]|0,1,0)|0;h=M;j=f;k[j>>2]=c;k[j+4>>2]=h;j=e;g=k[j+4>>2]|0;if(!((g|0)>(h|0)|((g|0)==(h|0)?(k[j>>2]|0)>>>0>c>>>0:0))){j=0;return j|0}i[b+6>>0]=i[(k[a>>2]|0)+c>>0]|0;c=f;c=Bj(k[c>>2]|0,k[c+4>>2]|0,1,0)|0;h=M;j=f;k[j>>2]=c;k[j+4>>2]=h;j=e;g=k[j+4>>2]|0;if(!((g|0)>(h|0)|((g|0)==(h|0)?(k[j>>2]|0)>>>0>c>>>0:0))){j=0;return j|0}i[b+7>>0]=i[(k[a>>2]|0)+c>>0]|0;c=f;c=Bj(k[c>>2]|0,k[c+4>>2]|0,1,0)|0;h=M;j=f;k[j>>2]=c;k[j+4>>2]=h;j=e;g=k[j+4>>2]|0;if(!((g|0)>(h|0)|((g|0)==(h|0)?(k[j>>2]|0)>>>0>c>>>0:0))){j=0;return j|0}i[b+8>>0]=i[(k[a>>2]|0)+c>>0]|0;j=f;g=k[j>>2]|0;j=k[j+4>>2]|0;c=Bj(g|0,j|0,1,0)|0;h=f;k[h>>2]=c;k[h+4>>2]=M;h=k[e>>2]|0;e=k[e+4>>2]|0;j=Bj(g|0,j|0,3,0)|0;g=M;if((e|0)<(g|0)|(e|0)==(g|0)&h>>>0>>0){j=0;return j|0}h=b+10|0;j=(k[a>>2]|0)+c|0;j=l[j>>0]|l[j+1>>0]<<8;i[h>>0]=j;i[h+1>>0]=j>>8;h=f;h=Bj(k[h>>2]|0,k[h+4>>2]|0,2,0)|0;j=f;k[j>>2]=h;k[j+4>>2]=M;j=1;return j|0}function ce(a,b){a=a|0;b=b|0;var c=0,d=0,e=0,f=0,g=0,h=0,j=0,m=0,n=0,o=0,p=0;p=r;r=r+16|0;o=p;m=b+8|0;g=m;h=k[g>>2]|0;g=k[g+4>>2]|0;j=b+16|0;d=j;c=k[d>>2]|0;d=Bj(c|0,k[d+4>>2]|0,4,0)|0;e=M;if((g|0)<(e|0)|(g|0)==(e|0)&h>>>0>>0){o=0;r=p;return o|0}h=(k[b>>2]|0)+c|0;h=l[h>>0]|l[h+1>>0]<<8|l[h+2>>0]<<16|l[h+3>>0]<<24;g=j;k[g>>2]=d;k[g+4>>2]=e;if((h|0)<0){o=0;r=p;return o|0}g=a+52|0;ee(g,h,0);Pk(o);if(te(o,b)|0){if((h|0)>0){d=1;e=0;do{d=d^((yh(o)|0)^1);f=(k[g>>2]|0)+(e>>>5<<2)|0;c=1<<(e&31);if(d)c=k[f>>2]|c;else c=k[f>>2]&~c;k[f>>2]=c;e=e+1|0}while((e|0)<(h|0))}e=m;g=k[e>>2]|0;e=k[e+4>>2]|0;h=j;c=k[h>>2]|0;h=Bj(c|0,k[h+4>>2]|0,4,0)|0;f=M;if(!((e|0)<(f|0)|(e|0)==(f|0)&g>>>0>>0)?(g=a+12|0,e=(k[b>>2]|0)+c|0,e=l[e>>0]|l[e+1>>0]<<8|l[e+2>>0]<<16|l[e+3>>0]<<24,i[g>>0]=e,i[g+1>>0]=e>>8,i[g+2>>0]=e>>16,i[g+3>>0]=e>>24,g=j,e=k[g>>2]|0,g=k[g+4>>2]|0,n=Bj(e|0,g|0,4,0)|0,f=j,k[f>>2]=n,k[f+4>>2]=M,f=m,h=k[f>>2]|0,f=k[f+4>>2]|0,m=Bj(e|0,g|0,8,0)|0,g=M,!((f|0)<(g|0)|(f|0)==(g|0)&h>>>0>>0)):0){c=a+16|0;n=(k[b>>2]|0)+n|0;n=l[n>>0]|l[n+1>>0]<<8|l[n+2>>0]<<16|l[n+3>>0]<<24;i[c>>0]=n;i[c+1>>0]=n>>8;i[c+2>>0]=n>>16;i[c+3>>0]=n>>24;n=j;n=Bj(k[n>>2]|0,k[n+4>>2]|0,4,0)|0;c=j;k[c>>2]=n;k[c+4>>2]=M;c=1}else c=0}else c=0;jl(o);o=c;r=p;return o|0}function de(a,b,c,d){a=a|0;b=b|0;c=c|0;d=d|0;var e=0,f=0,g=0,h=0,i=0,j=0,l=0,m=0,n=0,o=0,p=0,q=0.0;n=b+8|0;p=k[n>>2]|0;e=(k[c>>2]|0)-p|0;m=c+4|0;g=(k[m>>2]|0)-p|0;f=c;k[f>>2]=e;k[f+4>>2]=g;q=+O(+(+(e|0)))+ +O(+(+(g|0)));f=k[n>>2]|0;if(!(q<=+(f|0))){if((e|0)>-1)if((g|0)<=-1)if((e|0)<1){h=-1;i=-1}else o=6;else{h=1;i=1}else if((g|0)<1){h=-1;i=-1}else o=6;if((o|0)==6){h=(e|0)>0?1:-1;i=(g|0)>0?1:-1}l=$(f,h)|0;j=$(f,i)|0;e=(e<<1)-l|0;k[c>>2]=e;f=(g<<1)-j|0;k[m>>2]=f;if(($(h,i)|0)>-1){f=0-f|0;k[c>>2]=f;e=0-e|0}else k[c>>2]=f;l=(f+l|0)/2|0;k[c>>2]=l;g=(e+j|0)/2|0;k[m>>2]=g;h=0;e=l;j=k[n>>2]|0}else{h=1;j=f}f=(k[d>>2]|0)+e|0;k[a>>2]=f;e=(k[d+4>>2]|0)+g|0;l=a+4|0;k[l>>2]=e;if((j|0)>=(f|0)){if((f|0)<(0-j|0))f=(k[b+4>>2]|0)+f|0}else f=f-(k[b+4>>2]|0)|0;k[a>>2]=f;if((j|0)>=(e|0))if((e|0)<(0-j|0))i=(k[b+4>>2]|0)+e|0;else i=e;else i=e-(k[b+4>>2]|0)|0;k[l>>2]=i;if(h){o=i;b=f;b=b+p|0;o=o+p|0;p=a;a=p;k[a>>2]=b;p=p+4|0;k[p>>2]=o;return}if((f|0)>-1)if((i|0)<=-1)if((f|0)<1){g=-1;h=-1}else o=24;else{g=1;h=1}else if((i|0)<1){g=-1;h=-1}else o=24;if((o|0)==24){g=(f|0)>0?1:-1;h=(i|0)>0?1:-1}c=$(j,g)|0;j=$(j,h)|0;e=(f<<1)-c|0;k[a>>2]=e;f=(i<<1)-j|0;k[l>>2]=f;if(($(g,h)|0)>-1){f=0-f|0;k[a>>2]=f;e=0-e|0}else k[a>>2]=f;b=(f+c|0)/2|0;k[a>>2]=b;o=(e+j|0)/2|0;k[l>>2]=o;b=b+p|0;o=o+p|0;p=a;a=p;k[a>>2]=b;p=p+4|0;k[p>>2]=o;return}function ee(a,b,c){a=a|0;b=b|0;c=c|0;var d=0,e=0,f=0,g=0,h=0,i=0,j=0,l=0,m=0,n=0,o=0,p=0,q=0;p=r;r=r+32|0;m=p+8|0;i=p;n=a+4|0;e=k[n>>2]|0;if(e>>>0>=b>>>0){k[n>>2]=b;r=p;return}o=a+8|0;f=k[o>>2]|0;l=f<<5;d=b-e|0;if(l>>>0>>0|e>>>0>(l-d|0)>>>0){k[m>>2]=0;j=m+4|0;k[j>>2]=0;l=m+8|0;k[l>>2]=0;if((b|0)<0)mk(a);e=f<<6;g=b+31&-32;Wf(m,f<<5>>>0<1073741823?(e>>>0>>0?g:e):2147483647);f=k[n>>2]|0;k[j>>2]=f+d;e=k[a>>2]|0;g=e;b=k[m>>2]|0;f=(g+(f>>>5<<2)-e<<3)+(f&31)|0;if((f|0)>0){h=f>>>5;ti(b|0,e|0,h<<2|0)|0;e=f-(h<<5)|0;f=b+(h<<2)|0;b=f;if((e|0)>0){q=-1>>>(32-e|0);k[f>>2]=k[f>>2]&~q|k[g+(h<<2)>>2]&q}else e=0}else e=0;k[i>>2]=b;k[i+4>>2]=e;f=i;b=k[f>>2]|0;f=k[f+4>>2]|0;e=k[a>>2]|0;k[a>>2]=k[m>>2];k[m>>2]=e;q=k[n>>2]|0;k[n>>2]=k[j>>2];k[j>>2]=q;q=k[o>>2]|0;k[o>>2]=k[l>>2];k[l>>2]=q;if(e|0)gl(e)}else{f=(k[a>>2]|0)+(e>>>5<<2)|0;k[n>>2]=b;b=f;f=e&31}if(!d){r=p;return}g=(f|0)==0;e=b;if(c){if(!g){q=32-f|0;b=q>>>0>d>>>0?d:q;k[e>>2]=k[e>>2]|-1>>>(q-b|0)&-1<>>5;Ah(b|0,-1,q<<2|0)|0;d=d-(q<<5)|0;b=e+(q<<2)|0;if(!d){r=p;return}k[b>>2]=k[b>>2]|-1>>>(32-d|0);r=p;return}else{if(!g){q=32-f|0;b=q>>>0>d>>>0?d:q;k[e>>2]=k[e>>2]&~(-1>>>(q-b|0)&-1<>>5;Ah(b|0,0,q<<2|0)|0;d=d-(q<<5)|0;b=e+(q<<2)|0;if(!d){r=p;return}k[b>>2]=k[b>>2]&~(-1>>>(32-d|0));r=p;return}}function fe(a,b,c,d){a=a|0;b=b|0;c=c|0;d=d|0;var e=0,f=0,g=0,h=0,i=0,j=0,l=0,m=0,n=0,o=0,p=0.0;n=b+8|0;f=k[n>>2]|0;o=c+4|0;m=(k[o>>2]|0)-f|0;e=c;k[e>>2]=(k[c>>2]|0)-f;k[e+4>>2]=m;e=(k[d>>2]|0)-f|0;m=d+4|0;f=(k[m>>2]|0)-f|0;i=d;k[i>>2]=e;k[i+4>>2]=f;p=+O(+(+(e|0)))+ +O(+(+(f|0)));i=k[n>>2]|0;if(!(p<=+(i|0))){e=k[c>>2]|0;f=k[o>>2]|0;if((e|0)>-1)if((f|0)<=-1)if((e|0)<1){g=-1;h=-1}else l=6;else{g=1;h=1}else if((f|0)<1){g=-1;h=-1}else l=6;if((l|0)==6){g=(e|0)>0?1:-1;h=(f|0)>0?1:-1}j=$(i,g)|0;i=$(i,h)|0;e=(e<<1)-j|0;k[c>>2]=e;f=(f<<1)-i|0;k[o>>2]=f;if(($(g,h)|0)>-1){f=0-f|0;k[c>>2]=f;e=0-e|0}else k[c>>2]=f;k[c>>2]=(f+j|0)/2|0;k[o>>2]=(e+i|0)/2|0;e=k[d>>2]|0;f=k[m>>2]|0;if((e|0)>-1)if((f|0)<=-1)if((e|0)<1){g=-1;h=-1}else l=14;else{g=1;h=1}else if((f|0)<1){g=-1;h=-1}else l=14;if((l|0)==14){g=(e|0)>0?1:-1;h=(f|0)>0?1:-1}j=k[n>>2]|0;i=$(j,g)|0;j=$(j,h)|0;e=(e<<1)-i|0;k[d>>2]=e;f=(f<<1)-j|0;k[m>>2]=f;if(($(g,h)|0)>-1){f=0-f|0;k[d>>2]=f;e=0-e|0}else k[d>>2]=f;i=(f+i|0)/2|0;k[d>>2]=i;f=(e+j|0)/2|0;k[m>>2]=f;e=i;i=k[n>>2]|0}e=(k[c>>2]|0)-e|0;k[a>>2]=e;g=(k[o>>2]|0)-f|0;h=a+4|0;k[h>>2]=g;f=i<<1;if((f|0)<(e|0))Ka(8863,10873,162,8887);if((e|0)<0)e=(k[b+4>>2]|0)+e|0;k[a>>2]=e;if((f|0)<(g|0))Ka(8863,10873,162,8887);if((g|0)>=0){b=g;k[h>>2]=b;return}b=(k[b+4>>2]|0)+g|0;k[h>>2]=b;return}function ge(a,b,c,d,e,f){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;f=f|0;var g=0,h=0,i=0,j=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0,v=0,w=0;q=a+8|0;k[q>>2]=e;r=k[a+24>>2]|0;p=k[a+28>>2]|0;j=e>>>0>1073741823?-1:e<<2;s=dl(j)|0;Ah(s|0,0,j|0)|0;Sf(q,s,b,c,0);j=a+32|0;g=k[j>>2]|0;a=k[g+4>>2]|0;f=k[g>>2]|0;o=a-f|0;l=o>>2;if((o|0)<=4){el(s);return 1}m=r+64|0;n=r+28|0;o=(e|0)>0;d=1;while(1){if(a-f>>2>>>0<=d>>>0){d=6;break}f=k[f+(d<<2)>>2]|0;i=$(d,e)|0;if((!((f|0)<0?1:(1<<(f&31)&k[(k[r>>2]|0)+(f>>>5<<2)>>2]|0)!=0)?(t=k[(k[(k[m>>2]|0)+12>>2]|0)+(f<<2)>>2]|0,(t|0)>=0):0)?(w=k[n>>2]|0,h=k[p>>2]|0,u=k[h+(k[w+(t<<2)>>2]<<2)>>2]|0,v=t+1|0,v=k[h+(k[w+((((v|0)%3|0|0)==0?t+-2|0:v)<<2)>>2]<<2)>>2]|0,w=k[h+(k[w+((((t>>>0)%3|0|0)==0?2:-1)+t<<2)>>2]<<2)>>2]|0,(u|0)<(d|0)&(v|0)<(d|0)&(w|0)<(d|0)):0){a=$(u,e)|0;g=$(v,e)|0;h=$(w,e)|0;if(o){f=0;do{k[s+(f<<2)>>2]=(k[c+(f+h<<2)>>2]|0)+(k[c+(f+g<<2)>>2]|0)-(k[c+(f+a<<2)>>2]|0);f=f+1|0}while((f|0)!=(e|0))}Sf(q,s,b,c+(i<<2)|0,i)}else Sf(q,c+(($(d+-1|0,e)|0)<<2)|0,b,c+(i<<2)|0,i);d=d+1|0;if((d|0)>=(l|0)){d=3;break}g=k[j>>2]|0;f=k[g>>2]|0;a=k[g+4>>2]|0}if((d|0)==3){el(s);return 1}else if((d|0)==6)lk(g);return 0}function he(a,b,c,d,e,f){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;f=f|0;var g=0,h=0,i=0,j=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0,v=0,w=0;q=a+8|0;k[q>>2]=e;r=k[a+24>>2]|0;p=k[a+28>>2]|0;j=e>>>0>1073741823?-1:e<<2;s=dl(j)|0;Ah(s|0,0,j|0)|0;Uf(q,s,b,c,0);j=a+32|0;g=k[j>>2]|0;a=k[g+4>>2]|0;f=k[g>>2]|0;o=a-f|0;l=o>>2;if((o|0)<=4){el(s);return 1}m=r+64|0;n=r+28|0;o=(e|0)>0;d=1;while(1){if(a-f>>2>>>0<=d>>>0){d=6;break}f=k[f+(d<<2)>>2]|0;i=$(d,e)|0;if((!((f|0)<0?1:(1<<(f&31)&k[(k[r>>2]|0)+(f>>>5<<2)>>2]|0)!=0)?(t=k[(k[(k[m>>2]|0)+12>>2]|0)+(f<<2)>>2]|0,(t|0)>=0):0)?(w=k[n>>2]|0,h=k[p>>2]|0,u=k[h+(k[w+(t<<2)>>2]<<2)>>2]|0,v=t+1|0,v=k[h+(k[w+((((v|0)%3|0|0)==0?t+-2|0:v)<<2)>>2]<<2)>>2]|0,w=k[h+(k[w+((((t>>>0)%3|0|0)==0?2:-1)+t<<2)>>2]<<2)>>2]|0,(u|0)<(d|0)&(v|0)<(d|0)&(w|0)<(d|0)):0){a=$(u,e)|0;g=$(v,e)|0;h=$(w,e)|0;if(o){f=0;do{k[s+(f<<2)>>2]=(k[c+(f+h<<2)>>2]|0)+(k[c+(f+g<<2)>>2]|0)-(k[c+(f+a<<2)>>2]|0);f=f+1|0}while((f|0)!=(e|0))}Uf(q,s,b,c+(i<<2)|0,i)}else Uf(q,c+(($(d+-1|0,e)|0)<<2)|0,b,c+(i<<2)|0,i);d=d+1|0;if((d|0)>=(l|0)){d=3;break}g=k[j>>2]|0;f=k[g>>2]|0;a=k[g+4>>2]|0}if((d|0)==3){el(s);return 1}else if((d|0)==6)lk(g);return 0}function ie(a,b){a=a|0;b=b|0;var c=0,d=0,e=0,f=0,g=0,h=0,j=0,l=0,m=0,n=0;m=r;r=r+48|0;j=m+8|0;l=m;c=m+40|0;i[c>>0]=k[a+84>>2];h=b+16|0;g=h;f=k[g+4>>2]|0;if(!((f|0)>0|(f|0)==0&(k[g>>2]|0)>>>0>0)){k[l>>2]=k[b+4>>2];k[j>>2]=k[l>>2];je(b,j,c,c+1|0)|0}f=0;do{g=f;f=f+1|0;c=a+36+(g*12|0)+4|0;_f(k[c>>2]|0,b);if(k[c>>2]|0){Ti(j);ch(j);c=(k[c>>2]|0)-f|0;if((c|0)>-1){e=a+36+(g*12|0)|0;do{d=0;while(1){n=d+c|0;sg(j,(k[(k[e>>2]|0)+(n>>>5<<2)>>2]&1<<(n&31)|0)!=0);if((d|0)<(g|0))d=d+1|0;else break}c=c-f|0}while((c|0)>-1)}ec(j,b);Eg(j)}}while((f|0)<4);c=a+12|0;n=h;g=k[n+4>>2]|0;if((g|0)>0|(g|0)==0&(k[n>>2]|0)>>>0>0){r=m;return 1}d=b+4|0;k[l>>2]=k[d>>2];k[j>>2]=k[l>>2];je(b,j,c,c+4|0)|0;n=h;h=k[n+4>>2]|0;c=a+16|0;if((h|0)>0|(h|0)==0&(k[n>>2]|0)>>>0>0){r=m;return 1}k[l>>2]=k[d>>2];k[j>>2]=k[l>>2];je(b,j,c,c+4|0)|0;r=m;return 1}function je(a,b,c,d){a=a|0;b=b|0;c=c|0;d=d|0;var e=0,f=0,g=0,h=0,j=0,l=0,m=0,n=0,o=0;l=k[a>>2]|0;h=l;b=l+((k[b>>2]|0)-h)|0;j=d-c|0;if((j|0)<=0){o=b;return o|0}n=a+8|0;f=k[n>>2]|0;o=a+4|0;m=k[o>>2]|0;e=m;if((j|0)<=(f-e|0)){g=e-b|0;if((j|0)>(g|0)){h=c+g|0;if((h|0)==(d|0))e=m;else{f=h;e=m;do{i[e>>0]=i[f>>0]|0;f=f+1|0;e=(k[o>>2]|0)+1|0;k[o>>2]=e}while((f|0)!=(d|0))}if((g|0)>0){d=h;h=e}else{o=b;return o|0}}else h=m;g=h-(b+j)|0;e=b+g|0;if(e>>>0>>0){f=h;do{i[f>>0]=i[e>>0]|0;e=e+1|0;f=(k[o>>2]|0)+1|0;k[o>>2]=f}while((e|0)!=(m|0))}if(g|0)ti(h+(0-g)|0,b|0,g|0)|0;if((d|0)==(c|0)){o=b;return o|0}else e=b;while(1){i[e>>0]=i[c>>0]|0;c=c+1|0;if((c|0)==(d|0))break;else e=e+1|0}return b|0}e=e-h+j|0;if((e|0)<0)mk(a);j=f-h|0;f=j<<1;f=j>>>0<1073741823?(f>>>0>>0?e:f):2147483647;j=b;if(!f)g=0;else g=Si(f)|0;m=g+(j-h)|0;e=m;h=g+f|0;if((c|0)==(d|0)){c=e;f=l}else{f=m;do{i[f>>0]=i[c>>0]|0;f=e+1|0;e=f;c=c+1|0}while((c|0)!=(d|0));c=e;f=k[a>>2]|0}e=j-f|0;g=m+(0-e)|0;if((e|0)>0)nh(g|0,f|0,e|0)|0;e=(k[o>>2]|0)-j|0;if((e|0)>0){nh(c|0,b|0,e|0)|0;c=c+e|0;b=k[a>>2]|0}else b=f;k[a>>2]=g;k[o>>2]=c;k[n>>2]=h;if(!b){o=m;return o|0}gl(b);o=m;return o|0}function ke(a,b){a=a|0;b=b|0;var c=0,d=0,e=0,f=0,g=0,h=0,j=0,l=0,m=0,n=0;m=r;r=r+48|0;j=m+8|0;l=m;c=m+40|0;i[c>>0]=k[a+108>>2];h=b+16|0;g=h;f=k[g+4>>2]|0;if(!((f|0)>0|(f|0)==0&(k[g>>2]|0)>>>0>0)){k[l>>2]=k[b+4>>2];k[j>>2]=k[l>>2];je(b,j,c,c+1|0)|0}f=0;do{g=f;f=f+1|0;c=a+60+(g*12|0)+4|0;_f(k[c>>2]|0,b);if(k[c>>2]|0){Ti(j);ch(j);c=(k[c>>2]|0)-f|0;if((c|0)>-1){e=a+60+(g*12|0)|0;do{d=0;while(1){n=d+c|0;sg(j,(k[(k[e>>2]|0)+(n>>>5<<2)>>2]&1<<(n&31)|0)!=0);if((d|0)<(g|0))d=d+1|0;else break}c=c-f|0}while((c|0)>-1)}ec(j,b);Eg(j)}}while((f|0)<4);c=a+12|0;n=h;g=k[n+4>>2]|0;if((g|0)>0|(g|0)==0&(k[n>>2]|0)>>>0>0){r=m;return 1}d=b+4|0;k[l>>2]=k[d>>2];k[j>>2]=k[l>>2];je(b,j,c,c+4|0)|0;n=h;h=k[n+4>>2]|0;c=a+16|0;if((h|0)>0|(h|0)==0&(k[n>>2]|0)>>>0>0){r=m;return 1}k[l>>2]=k[d>>2];k[j>>2]=k[l>>2];je(b,j,c,c+4|0)|0;r=m;return 1}function le(a,b,c){a=a|0;b=b|0;c=c|0;var d=Pa,e=Pa,f=0,g=0,h=0;switch(i[a+24>>0]|0){case 1:{g=k[b>>2]|0;b=a+48|0;f=k[b>>2]|0;b=k[b+4>>2]|0;h=a+40|0;b=(Bj(Pi(k[h>>2]|0,k[h+4>>2]|0,g|0,((g|0)<0)<<31>>31|0)|0,M|0,f|0,b|0)|0)+(k[k[a>>2]>>2]|0)|0;e=da((l[b>>0]|l[b+1>>0]<<8|l[b+2>>0]<<16|l[b+3>>0]<<24)>>>0);d=da(e*da(2.32830644e-10));o[c>>2]=(i[a+32>>0]|0)==0?e:d;c=1;return c|0}case 2:{f=k[b>>2]|0;h=a+48|0;g=k[h>>2]|0;h=k[h+4>>2]|0;b=a+40|0;h=(Bj(Pi(k[b>>2]|0,k[b+4>>2]|0,f|0,((f|0)<0)<<31>>31|0)|0,M|0,g|0,h|0)|0)+(k[k[a>>2]>>2]|0)|0;d=da((l[h>>0]|l[h+1>>0]<<8|l[h+2>>0]<<16|l[h+3>>0]<<24)>>>0);e=da(d*da(2.32830644e-10));o[c>>2]=(i[a+32>>0]|0)==0?d:e;h=1;return h|0}case 3:{f=k[b>>2]|0;h=a+48|0;g=k[h>>2]|0;h=k[h+4>>2]|0;b=a+40|0;h=(Bj(Pi(k[b>>2]|0,k[b+4>>2]|0,f|0,((f|0)<0)<<31>>31|0)|0,M|0,g|0,h|0)|0)+(k[k[a>>2]>>2]|0)|0;d=da((l[h>>0]|l[h+1>>0]<<8|l[h+2>>0]<<16|l[h+3>>0]<<24)>>>0);e=da(d*da(2.32830644e-10));o[c>>2]=(i[a+32>>0]|0)==0?d:e;h=1;return h|0}case 4:{f=k[b>>2]|0;h=a+48|0;g=k[h>>2]|0;h=k[h+4>>2]|0;b=a+40|0;h=(Bj(Pi(k[b>>2]|0,k[b+4>>2]|0,f|0,((f|0)<0)<<31>>31|0)|0,M|0,g|0,h|0)|0)+(k[k[a>>2]>>2]|0)|0;d=da((l[h>>0]|l[h+1>>0]<<8|l[h+2>>0]<<16|l[h+3>>0]<<24)>>>0);e=da(d*da(2.32830644e-10));o[c>>2]=(i[a+32>>0]|0)==0?d:e;h=1;return h|0}default:{h=0;return h|0}}return 0}function me(a,b,c){a=a|0;b=b|0;c=c|0;var d=Pa,e=Pa,f=0,g=0,h=0;switch(i[a+24>>0]|0){case 1:{g=k[b>>2]|0;b=a+48|0;f=k[b>>2]|0;b=k[b+4>>2]|0;h=a+40|0;b=(Bj(Pi(k[h>>2]|0,k[h+4>>2]|0,g|0,((g|0)<0)<<31>>31|0)|0,M|0,f|0,b|0)|0)+(k[k[a>>2]>>2]|0)|0;e=da(l[b>>0]|l[b+1>>0]<<8|l[b+2>>0]<<16|l[b+3>>0]<<24|0);d=da(e*da(4.65661287e-10));o[c>>2]=(i[a+32>>0]|0)==0?e:d;c=1;return c|0}case 2:{f=k[b>>2]|0;h=a+48|0;g=k[h>>2]|0;h=k[h+4>>2]|0;b=a+40|0;h=(Bj(Pi(k[b>>2]|0,k[b+4>>2]|0,f|0,((f|0)<0)<<31>>31|0)|0,M|0,g|0,h|0)|0)+(k[k[a>>2]>>2]|0)|0;d=da(l[h>>0]|l[h+1>>0]<<8|l[h+2>>0]<<16|l[h+3>>0]<<24|0);e=da(d*da(4.65661287e-10));o[c>>2]=(i[a+32>>0]|0)==0?d:e;h=1;return h|0}case 3:{f=k[b>>2]|0;h=a+48|0;g=k[h>>2]|0;h=k[h+4>>2]|0;b=a+40|0;h=(Bj(Pi(k[b>>2]|0,k[b+4>>2]|0,f|0,((f|0)<0)<<31>>31|0)|0,M|0,g|0,h|0)|0)+(k[k[a>>2]>>2]|0)|0;d=da(l[h>>0]|l[h+1>>0]<<8|l[h+2>>0]<<16|l[h+3>>0]<<24|0);e=da(d*da(4.65661287e-10));o[c>>2]=(i[a+32>>0]|0)==0?d:e;h=1;return h|0}case 4:{f=k[b>>2]|0;h=a+48|0;g=k[h>>2]|0;h=k[h+4>>2]|0;b=a+40|0;h=(Bj(Pi(k[b>>2]|0,k[b+4>>2]|0,f|0,((f|0)<0)<<31>>31|0)|0,M|0,g|0,h|0)|0)+(k[k[a>>2]>>2]|0)|0;d=da(l[h>>0]|l[h+1>>0]<<8|l[h+2>>0]<<16|l[h+3>>0]<<24|0);e=da(d*da(4.65661287e-10));o[c>>2]=(i[a+32>>0]|0)==0?d:e;h=1;return h|0}default:{h=0;return h|0}}return 0}function ne(a,b,c,d,e){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;var f=Pa,g=0,h=0,j=0,l=0,m=0,n=0,p=0,q=0,s=0,t=0,u=0,v=0,w=0,x=Pa,y=Pa,z=Pa,A=Pa,B=0,C=0;w=r;r=r+32|0;v=w+16|0;u=w;f=da(o[d+4>>2]);if(!(f>=da(0.0)))Ka(13040,13060,66,13117);t=(1<>2])+-1|0;fk(v);ej(v,f,t);d=k[b>>2]|0;if((d|0)==(k[c>>2]|0)){u=e;u=k[u>>2]|0;e=e+4|0;e=k[e>>2]|0;v=a;c=v;k[c>>2]=u;v=v+4|0;k[v>>2]=e;r=w;return}m=v+4|0;l=e+4|0;h=u+4|0;j=u+8|0;s=k[e>>2]|0;n=s+84|0;p=s+68|0;q=s+40|0;s=s+64|0;g=k[l>>2]|0;do{B=(k[d>>2]|0)-t|0;b=(B|0)<0;y=da((b?0-B|0:B)|0);f=da(o[m>>2]);y=da(f*y);x=da(-y);A=da(o[v>>2]);y=da(A*(b?x:y));b=(k[d+4>>2]|0)-t|0;B=(b|0)<0;x=da(f*da((B?0-b|0:b)|0));z=da(-x);x=da(A*(B?z:x));B=(k[d+8>>2]|0)-t|0;b=(B|0)<0;f=da(f*da((b?0-B|0:B)|0));z=da(-f);f=da(A*(b?z:f));b=g;g=g+1|0;k[l>>2]=g;o[u>>2]=y;o[h>>2]=x;o[j>>2]=f;if(!(i[n>>0]|0))b=k[(k[p>>2]|0)+(b<<2)>>2]|0;C=q;B=k[C>>2]|0;b=Pi(b|0,((b|0)<0)<<31>>31|0,B|0,k[C+4>>2]|0)|0;nh((k[k[s>>2]>>2]|0)+b|0,u|0,B|0)|0;d=d+12|0}while((d|0)!=(k[c>>2]|0));B=e;e=B;e=k[e>>2]|0;B=B+4|0;B=k[B>>2]|0;C=a;v=C;k[v>>2]=e;C=C+4|0;k[C>>2]=B;r=w;return}function oe(a,b,c){a=a|0;b=b|0;c=c|0;var d=Pa,e=Pa,f=0,g=0,h=0;switch(i[a+24>>0]|0){case 1:{g=k[b>>2]|0;b=a+48|0;f=k[b>>2]|0;b=k[b+4>>2]|0;h=a+40|0;b=(Bj(Pi(k[h>>2]|0,k[h+4>>2]|0,g|0,((g|0)<0)<<31>>31|0)|0,M|0,f|0,b|0)|0)+(k[k[a>>2]>>2]|0)|0;e=da((l[b>>0]|l[b+1>>0]<<8)<<16>>16);d=da(e/da(32767.0));o[c>>2]=(i[a+32>>0]|0)==0?e:d;c=1;return c|0}case 2:{f=k[b>>2]|0;h=a+48|0;g=k[h>>2]|0;h=k[h+4>>2]|0;b=a+40|0;h=(Bj(Pi(k[b>>2]|0,k[b+4>>2]|0,f|0,((f|0)<0)<<31>>31|0)|0,M|0,g|0,h|0)|0)+(k[k[a>>2]>>2]|0)|0;d=da(((l[h>>0]|l[h+1>>0]<<8|l[h+2>>0]<<16|l[h+3>>0]<<24)&65535)<<16>>16);e=da(d/da(32767.0));o[c>>2]=(i[a+32>>0]|0)==0?d:e;h=1;return h|0}case 3:{f=k[b>>2]|0;h=a+48|0;g=k[h>>2]|0;h=k[h+4>>2]|0;b=a+40|0;h=(Bj(Pi(k[b>>2]|0,k[b+4>>2]|0,f|0,((f|0)<0)<<31>>31|0)|0,M|0,g|0,h|0)|0)+(k[k[a>>2]>>2]|0)|0;d=da((l[h>>0]|l[h+1>>0]<<8)<<16>>16);e=da(d/da(32767.0));o[c>>2]=(i[a+32>>0]|0)==0?d:e;h=1;return h|0}case 4:{f=k[b>>2]|0;h=a+48|0;g=k[h>>2]|0;h=k[h+4>>2]|0;b=a+40|0;h=(Bj(Pi(k[b>>2]|0,k[b+4>>2]|0,f|0,((f|0)<0)<<31>>31|0)|0,M|0,g|0,h|0)|0)+(k[k[a>>2]>>2]|0)|0;d=da(((l[h>>0]|l[h+1>>0]<<8|l[h+2>>0]<<16|l[h+3>>0]<<24)&65535)<<16>>16);e=da(d/da(32767.0));o[c>>2]=(i[a+32>>0]|0)==0?d:e;h=1;return h|0}default:{h=0;return h|0}}return 0}function pe(a,b,c){a=a|0;b=b|0;c=c|0;var d=0,e=0,f=0.0;a:do if(b>>>0<=20)do switch(b|0){case 9:{d=(k[c>>2]|0)+(4-1)&~(4-1);b=k[d>>2]|0;k[c>>2]=d+4;k[a>>2]=b;break a}case 10:{d=(k[c>>2]|0)+(4-1)&~(4-1);b=k[d>>2]|0;k[c>>2]=d+4;d=a;k[d>>2]=b;k[d+4>>2]=((b|0)<0)<<31>>31;break a}case 11:{d=(k[c>>2]|0)+(4-1)&~(4-1);b=k[d>>2]|0;k[c>>2]=d+4;d=a;k[d>>2]=b;k[d+4>>2]=0;break a}case 12:{d=(k[c>>2]|0)+(8-1)&~(8-1);b=d;e=k[b>>2]|0;b=k[b+4>>2]|0;k[c>>2]=d+8;d=a;k[d>>2]=e;k[d+4>>2]=b;break a}case 13:{e=(k[c>>2]|0)+(4-1)&~(4-1);d=k[e>>2]|0;k[c>>2]=e+4;d=(d&65535)<<16>>16;e=a;k[e>>2]=d;k[e+4>>2]=((d|0)<0)<<31>>31;break a}case 14:{e=(k[c>>2]|0)+(4-1)&~(4-1);d=k[e>>2]|0;k[c>>2]=e+4;e=a;k[e>>2]=d&65535;k[e+4>>2]=0;break a}case 15:{e=(k[c>>2]|0)+(4-1)&~(4-1);d=k[e>>2]|0;k[c>>2]=e+4;d=(d&255)<<24>>24;e=a;k[e>>2]=d;k[e+4>>2]=((d|0)<0)<<31>>31;break a}case 16:{e=(k[c>>2]|0)+(4-1)&~(4-1);d=k[e>>2]|0;k[c>>2]=e+4;e=a;k[e>>2]=d&255;k[e+4>>2]=0;break a}case 17:{e=(k[c>>2]|0)+(8-1)&~(8-1);f=+p[e>>3];k[c>>2]=e+8;p[a>>3]=f;break a}case 18:{e=(k[c>>2]|0)+(8-1)&~(8-1);f=+p[e>>3];k[c>>2]=e+8;p[a>>3]=f;break a}default:break a}while(0);while(0);return}function qe(a,b,c){a=a|0;b=b|0;c=c|0;var d=Pa,e=Pa,f=0,g=0,h=0;switch(i[a+24>>0]|0){case 1:{g=k[b>>2]|0;b=a+48|0;f=k[b>>2]|0;b=k[b+4>>2]|0;h=a+40|0;b=(Bj(Pi(k[h>>2]|0,k[h+4>>2]|0,g|0,((g|0)<0)<<31>>31|0)|0,M|0,f|0,b|0)|0)+(k[k[a>>2]>>2]|0)|0;e=da((l[b>>0]|l[b+1>>0]<<8)&65535);d=da(e/da(65535.0));o[c>>2]=(i[a+32>>0]|0)==0?e:d;c=1;return c|0}case 2:{f=k[b>>2]|0;h=a+48|0;g=k[h>>2]|0;h=k[h+4>>2]|0;b=a+40|0;h=(Bj(Pi(k[b>>2]|0,k[b+4>>2]|0,f|0,((f|0)<0)<<31>>31|0)|0,M|0,g|0,h|0)|0)+(k[k[a>>2]>>2]|0)|0;d=da((l[h>>0]|l[h+1>>0]<<8|l[h+2>>0]<<16|l[h+3>>0]<<24)&65535);e=da(d/da(65535.0));o[c>>2]=(i[a+32>>0]|0)==0?d:e;h=1;return h|0}case 3:{f=k[b>>2]|0;h=a+48|0;g=k[h>>2]|0;h=k[h+4>>2]|0;b=a+40|0;h=(Bj(Pi(k[b>>2]|0,k[b+4>>2]|0,f|0,((f|0)<0)<<31>>31|0)|0,M|0,g|0,h|0)|0)+(k[k[a>>2]>>2]|0)|0;d=da((l[h>>0]|l[h+1>>0]<<8)&65535);e=da(d/da(65535.0));o[c>>2]=(i[a+32>>0]|0)==0?d:e;h=1;return h|0}case 4:{f=k[b>>2]|0;h=a+48|0;g=k[h>>2]|0;h=k[h+4>>2]|0;b=a+40|0;h=(Bj(Pi(k[b>>2]|0,k[b+4>>2]|0,f|0,((f|0)<0)<<31>>31|0)|0,M|0,g|0,h|0)|0)+(k[k[a>>2]>>2]|0)|0;d=da((l[h>>0]|l[h+1>>0]<<8|l[h+2>>0]<<16|l[h+3>>0]<<24)&65535);e=da(d/da(65535.0));o[c>>2]=(i[a+32>>0]|0)==0?d:e;h=1;return h|0}default:{h=0;return h|0}}return 0}function re(a,b){a=a|0;b=b|0;var c=0,d=0,e=0,f=0,g=0,h=0,j=0,l=0,m=0,n=0,o=0,p=0;if(!(Vc(a,b)|0)){n=0;return n|0}l=a+24|0;m=a+4|0;n=a+8|0;f=(k[n>>2]|0)-(k[m>>2]|0)>>2;g=a+28|0;c=k[g>>2]|0;e=k[l>>2]|0;d=c-e>>2;if(f>>>0<=d>>>0){if(f>>>0>>0?(h=e+(f<<2)|0,(c|0)!=(h|0)):0)do{j=c+-4|0;k[g>>2]=j;c=k[j>>2]|0;k[j>>2]=0;if(c|0)Ta[k[(k[c>>2]|0)+4>>2]&127](c);c=k[g>>2]|0}while((c|0)!=(h|0))}else Se(l,f-d|0);f=b+8|0;if(((k[n>>2]|0)-(k[m>>2]|0)|0)<=0){n=1;return n|0}g=b+16|0;h=a+16|0;j=a+4|0;e=0;while(1){o=f;p=k[o+4>>2]|0;d=g;c=k[d>>2]|0;d=k[d+4>>2]|0;if(!((p|0)>(d|0)|((p|0)==(d|0)?(k[o>>2]|0)>>>0>c>>>0:0))){c=0;d=17;break}o=i[(k[b>>2]|0)+c>>0]|0;c=Bj(c|0,d|0,1,0)|0;p=g;k[p>>2]=c;k[p+4>>2]=M;p=(k[l>>2]|0)+(e<<2)|0;o=Za[k[(k[a>>2]|0)+20>>2]&63](a,o)|0;c=k[p>>2]|0;k[p>>2]=o;if(c|0)Ta[k[(k[c>>2]|0)+4>>2]&127](c);c=k[(k[l>>2]|0)+(e<<2)>>2]|0;if(!c){c=0;d=17;break}if(!(Ra[k[(k[c>>2]|0)+8>>2]&31](c,k[h>>2]|0,k[(k[j>>2]|0)+(e<<2)>>2]|0)|0)){c=0;d=17;break}e=e+1|0;if((e|0)>=((k[n>>2]|0)-(k[m>>2]|0)>>2|0)){c=1;d=17;break}}if((d|0)==17)return c|0;return 0}function se(a,b,c){a=a|0;b=b|0;c=c|0;var d=Pa,e=Pa,f=0,g=0,h=0;switch(i[a+24>>0]|0){case 1:{g=k[b>>2]|0;b=a+48|0;f=k[b>>2]|0;b=k[b+4>>2]|0;h=a+40|0;b=Bj(Pi(k[h>>2]|0,k[h+4>>2]|0,g|0,((g|0)<0)<<31>>31|0)|0,M|0,f|0,b|0)|0;e=da(i[(k[k[a>>2]>>2]|0)+b>>0]|0);d=da(e/da(127.0));o[c>>2]=(i[a+32>>0]|0)==0?e:d;c=1;return c|0}case 2:{f=k[b>>2]|0;h=a+48|0;g=k[h>>2]|0;h=k[h+4>>2]|0;b=a+40|0;h=(Bj(Pi(k[b>>2]|0,k[b+4>>2]|0,f|0,((f|0)<0)<<31>>31|0)|0,M|0,g|0,h|0)|0)+(k[k[a>>2]>>2]|0)|0;d=da(((l[h>>0]|l[h+1>>0]<<8)&255)<<24>>24);e=da(d/da(127.0));o[c>>2]=(i[a+32>>0]|0)==0?d:e;h=1;return h|0}case 3:{f=k[b>>2]|0;h=a+48|0;g=k[h>>2]|0;h=k[h+4>>2]|0;b=a+40|0;h=Bj(Pi(k[b>>2]|0,k[b+4>>2]|0,f|0,((f|0)<0)<<31>>31|0)|0,M|0,g|0,h|0)|0;d=da(i[(k[k[a>>2]>>2]|0)+h>>0]|0);e=da(d/da(127.0));o[c>>2]=(i[a+32>>0]|0)==0?d:e;h=1;return h|0}case 4:{f=k[b>>2]|0;h=a+48|0;g=k[h>>2]|0;h=k[h+4>>2]|0;b=a+40|0;h=(Bj(Pi(k[b>>2]|0,k[b+4>>2]|0,f|0,((f|0)<0)<<31>>31|0)|0,M|0,g|0,h|0)|0)+(k[k[a>>2]>>2]|0)|0;d=da(((l[h>>0]|l[h+1>>0]<<8|l[h+2>>0]<<16|l[h+3>>0]<<24)&255)<<24>>24);e=da(d/da(127.0));o[c>>2]=(i[a+32>>0]|0)==0?d:e;h=1;return h|0}default:{h=0;return h|0}}return 0}function te(a,b){a=a|0;b=b|0;var c=0,d=0,e=0,f=0,g=0,h=0,j=0;d=b+8|0;h=d;f=k[h+4>>2]|0;j=b+16|0;g=j;c=k[g>>2]|0;g=k[g+4>>2]|0;if(!((f|0)>(g|0)|((f|0)==(g|0)?(k[h>>2]|0)>>>0>c>>>0:0))){j=0;return j|0}i[a+12>>0]=i[(k[b>>2]|0)+c>>0]|0;g=j;h=k[g>>2]|0;g=k[g+4>>2]|0;e=Bj(h|0,g|0,1,0)|0;f=j;k[f>>2]=e;k[f+4>>2]=M;f=d;d=k[f>>2]|0;f=k[f+4>>2]|0;g=Bj(h|0,g|0,5,0)|0;h=M;if((f|0)<(h|0)|(f|0)==(h|0)&d>>>0>>0){j=0;return j|0}c=k[b>>2]|0;e=c+e|0;e=l[e>>0]|l[e+1>>0]<<8|l[e+2>>0]<<16|l[e+3>>0]<<24;b=j;k[b>>2]=g;k[b+4>>2]=h;f=nj(d|0,f|0,g|0,h|0)|0;b=M;if(0>(b|0)|0==(b|0)&e>>>0>f>>>0){j=0;return j|0}c=c+g|0;if((e|0)<1){j=0;return j|0}k[a>>2]=c;d=e+-1|0;b=c+d|0;a:do switch((l[b>>0]|0)>>>6&3){case 0:{k[a+4>>2]=d;d=(l[b>>0]|0)&63;c=a+8|0;k[c>>2]=d;break}case 1:if((e|0)<2){j=0;return j|0}else{k[a+4>>2]=e+-2;d=c+e+-2|0;d=(l[d+1>>0]|0)<<8&16128|(l[d>>0]|0);c=a+8|0;k[c>>2]=d;break a}case 2:if((e|0)<3){j=0;return j|0}else{k[a+4>>2]=e+-3;d=c+e+-3|0;d=(l[d+1>>0]|0)<<8|(l[d>>0]|0)|(l[d+2>>0]|0)<<16&4128768;c=a+8|0;k[c>>2]=d;break a}default:{j=0;return j|0}}while(0);a=d+4096|0;k[c>>2]=a;if(a>>>0>1048575){j=0;return j|0}h=Bj(g|0,h|0,e|0,0)|0;k[j>>2]=h;k[j+4>>2]=M;j=1;return j|0}function ue(a,b,c,d,e){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;var f=0,g=0,h=0,i=0,j=0,l=0,m=0,n=0,o=0,p=0,q=0,s=0;s=r;r=r+48|0;n=s+40|0;o=s+32|0;p=s+24|0;q=s+16|0;j=s+8|0;f=s;l=k[c>>2]|0;m=a+8|0;g=k[m>>2]<<1;if((l|0)>(g|0))Ka(8624,8276,90,8659);h=k[c+4>>2]|0;if((h|0)>(g|0))Ka(8677,8276,91,8659);i=k[b>>2]|0;if((i|0)>(g|0))Ka(8712,8276,92,8659);b=k[b+4>>2]|0;if((b|0)>(g|0))Ka(8747,8276,93,8659);if((l|0)<=-1)Ka(8522,8276,94,8659);if((h|0)<=-1)Ka(8544,8276,95,8659);if((i|0)<=-1)Ka(8782,8276,96,8659);if((b|0)<=-1)Ka(8804,8276,97,8659);k[j>>2]=i;k[j+4>>2]=b;k[f>>2]=l;k[f+4>>2]=h;Fc(q,a,j,f);g=k[q>>2]|0;c=q+4|0;j=k[c>>2]|0;k[o>>2]=l;k[o+4>>2]=h;k[p>>2]=g;k[p+4>>2]=j;Zc(n,a,o,p);m=k[m>>2]|0;l=i-m|0;j=b-m|0;p=(k[n>>2]|0)-m|0;n=(k[n+4>>2]|0)-m|0;a=0-l|0;j=((j|0)<0?(((l|0)>-1?l:a)|0)==(m|0):0)?0-j|0:j;o=0-p|0;n=((n|0)<0?(((p|0)>-1?p:o)|0)==(m|0):0)?0-n|0:n;if((j|0)==(n|0)?((((l|0)<0?(((j|0)>-1?j:0-j|0)|0)==(m|0):0)?a:l)|0)==((((p|0)<0?(((n|0)>-1?n:0-n|0)|0)==(m|0):0)?o:p)|0):0){k[d+(e<<2)>>2]=k[q>>2];k[d+(e+1<<2)>>2]=k[c>>2];r=s;return}else Ka(8826,8276,102,8659)}function ve(a,b,c){a=a|0;b=b|0;c=c|0;var d=Pa,e=Pa,f=0,g=0,h=0;switch(i[a+24>>0]|0){case 1:{g=k[b>>2]|0;b=a+48|0;f=k[b>>2]|0;b=k[b+4>>2]|0;h=a+40|0;b=Bj(Pi(k[h>>2]|0,k[h+4>>2]|0,g|0,((g|0)<0)<<31>>31|0)|0,M|0,f|0,b|0)|0;e=da(l[(k[k[a>>2]>>2]|0)+b>>0]|0);d=da(e/da(255.0));o[c>>2]=(i[a+32>>0]|0)==0?e:d;c=1;return c|0}case 2:{f=k[b>>2]|0;h=a+48|0;g=k[h>>2]|0;h=k[h+4>>2]|0;b=a+40|0;h=(Bj(Pi(k[b>>2]|0,k[b+4>>2]|0,f|0,((f|0)<0)<<31>>31|0)|0,M|0,g|0,h|0)|0)+(k[k[a>>2]>>2]|0)|0;d=da((l[h>>0]|l[h+1>>0]<<8)&255);e=da(d/da(255.0));o[c>>2]=(i[a+32>>0]|0)==0?d:e;h=1;return h|0}case 3:{f=k[b>>2]|0;h=a+48|0;g=k[h>>2]|0;h=k[h+4>>2]|0;b=a+40|0;h=Bj(Pi(k[b>>2]|0,k[b+4>>2]|0,f|0,((f|0)<0)<<31>>31|0)|0,M|0,g|0,h|0)|0;d=da(l[(k[k[a>>2]>>2]|0)+h>>0]|0);e=da(d/da(255.0));o[c>>2]=(i[a+32>>0]|0)==0?d:e;h=1;return h|0}case 4:{f=k[b>>2]|0;h=a+48|0;g=k[h>>2]|0;h=k[h+4>>2]|0;b=a+40|0;h=(Bj(Pi(k[b>>2]|0,k[b+4>>2]|0,f|0,((f|0)<0)<<31>>31|0)|0,M|0,g|0,h|0)|0)+(k[k[a>>2]>>2]|0)|0;d=da((l[h>>0]|l[h+1>>0]<<8|l[h+2>>0]<<16|l[h+3>>0]<<24)&255);e=da(d/da(255.0));o[c>>2]=(i[a+32>>0]|0)==0?d:e;h=1;return h|0}default:{h=0;return h|0}}return 0}function we(a,b,c,d,e){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;var f=0,g=0,h=0,i=0,j=0,l=0,m=0,n=0,o=0,p=0,q=0,s=0;s=r;r=r+48|0;o=s+40|0;p=s+32|0;q=s+24|0;i=s+16|0;j=s+8|0;l=s;m=k[c>>2]|0;n=a+8|0;f=k[n>>2]<<1;if((m|0)>(f|0))Ka(8624,10873,85,8659);g=k[c+4>>2]|0;if((g|0)>(f|0))Ka(8677,10873,86,8659);h=k[b>>2]|0;if((h|0)>(f|0))Ka(8712,10873,87,8659);b=k[b+4>>2]|0;if((b|0)>(f|0))Ka(8747,10873,88,8659);if((m|0)<=-1)Ka(8522,10873,89,8659);if((g|0)<=-1)Ka(8544,10873,90,8659);if((h|0)<=-1)Ka(8782,10873,91,8659);if((b|0)<=-1)Ka(8804,10873,92,8659);k[i>>2]=h;k[i+4>>2]=b;k[j>>2]=m;k[j+4>>2]=g;fe(q,a,i,j);k[l>>2]=k[q>>2];c=q+4|0;k[l+4>>2]=k[c>>2];k[p>>2]=m;k[p+4>>2]=g;de(o,a,p,l);n=k[n>>2]|0;l=h-n|0;j=b-n|0;p=(k[o>>2]|0)-n|0;m=(k[o+4>>2]|0)-n|0;a=0-l|0;j=((j|0)<0?(((l|0)>-1?l:a)|0)==(n|0):0)?0-j|0:j;o=0-p|0;m=((m|0)<0?(((p|0)>-1?p:o)|0)==(n|0):0)?0-m|0:m;if((j|0)==(m|0)?((((l|0)<0?(((j|0)>-1?j:0-j|0)|0)==(n|0):0)?a:l)|0)==((((p|0)<0?(((m|0)>-1?m:0-m|0)|0)==(n|0):0)?o:p)|0):0){k[d+(e<<2)>>2]=k[q>>2];k[d+(e+1<<2)>>2]=k[c>>2];r=s;return}else Ka(8826,10873,98,8659)}function xe(a,b,c,d,e){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;var f=0,g=0,h=0,i=0,j=0,l=0;l=r;r=r+16|0;j=l;g=k[a+4>>2]|0;if((c|0)<=-1)Ka(12883,12899,54,12927);f=k[g+4>>2]|0;if(((k[g+8>>2]|0)-f>>2|0)<=(c|0))Ka(12937,12899,55,12927);g=k[f+(c<<2)>>2]|0;if(!((b+-1|0)>>>0<4&(Va[k[(k[a>>2]|0)+8>>2]&127](a)|0)==1)){j=0;r=l;return j|0}h=Va[k[(k[a>>2]|0)+36>>2]&127](a)|0;i=Za[k[(k[a>>2]|0)+44>>2]&63](a,c)|0;do if(!((h|0)==0|(i|0)==0)){f=Za[k[(k[a>>2]|0)+40>>2]&63](a,c)|0;if(!f){k[j>>2]=k[a+28>>2];k[j+4>>2]=h;k[j+12>>2]=i;k[j+8>>2]=i+12;f=od(b,g,d,j,e)|0;if(!f)f=0;else break;j=f;r=l;return j|0}else{k[j>>2]=k[a+28>>2];k[j+4>>2]=f;k[j+12>>2]=i;k[j+8>>2]=i+12;f=nd(b,g,d,j,e)|0;if(!f)f=0;else break;j=f;r=l;return j|0}}else f=0;while(0);j=f;r=l;return j|0}function ye(a){a=a|0;var b=0,c=0,d=0,e=0,f=0,g=0,h=0,j=0,m=0,n=0;c=i[(k[a+8>>2]|0)+24>>0]|0;g=a+36|0;f=dl(c>>>0>1073741823?-1:c<<2)|0;b=k[g>>2]|0;k[g>>2]=f;if(b|0)el(b);e=a+4|0;f=k[(k[e>>2]|0)+20>>2]|0;b=c<<2;n=f+8|0;j=k[n>>2]|0;n=k[n+4>>2]|0;c=f+16|0;h=c;d=k[h>>2]|0;h=Bj(d|0,k[h+4>>2]|0,b|0,0)|0;m=M;if((n|0)<(m|0)|(n|0)==(m|0)&j>>>0>>0){n=0;return n|0}nh(k[g>>2]|0,(k[f>>2]|0)+d|0,b|0)|0;h=c;h=Bj(k[h>>2]|0,k[h+4>>2]|0,b|0,0)|0;b=c;k[b>>2]=h;k[b+4>>2]=M;b=(k[e>>2]|0)+20|0;c=k[b>>2]|0;h=c+8|0;m=k[h>>2]|0;h=k[h+4>>2]|0;d=c+16|0;n=d;e=k[n>>2]|0;n=Bj(e|0,k[n+4>>2]|0,4,0)|0;j=M;if((h|0)<(j|0)|(h|0)==(j|0)&m>>>0>>0){n=0;return n|0}m=a+40|0;n=(k[c>>2]|0)+e|0;n=l[n>>0]|l[n+1>>0]<<8|l[n+2>>0]<<16|l[n+3>>0]<<24;i[m>>0]=n;i[m+1>>0]=n>>8;i[m+2>>0]=n>>16;i[m+3>>0]=n>>24;m=d;m=Bj(k[m>>2]|0,k[m+4>>2]|0,4,0)|0;n=d;k[n>>2]=m;k[n+4>>2]=M;b=k[b>>2]|0;n=b+8|0;m=k[n+4>>2]|0;c=b+16|0;e=c;d=k[e>>2]|0;e=k[e+4>>2]|0;if(!((m|0)>(e|0)|((m|0)==(e|0)?(k[n>>2]|0)>>>0>d>>>0:0))){n=0;return n|0}b=i[(k[b>>2]|0)+d>>0]|0;m=Bj(d|0,e|0,1,0)|0;n=c;k[n>>2]=m;k[n+4>>2]=M;if((b&255)>31){n=0;return n|0}k[a+32>>2]=b&255;n=1;return n|0}function ze(a,b,c){a=a|0;b=b|0;c=c|0;var d=0,e=0,f=0,g=0,h=0,i=0,j=0,l=0,m=0;m=k[b>>2]|0;f=k[c>>2]|0;g=f-m>>2;h=a+8|0;d=k[h>>2]|0;j=k[a>>2]|0;b=m;i=j;l=f;if(g>>>0<=d-j>>2>>>0){a=a+4|0;h=(k[a>>2]|0)-j>>2;e=g>>>0>h>>>0;h=e?b+(h<<2)|0:f;b=h-m|0;d=b>>2;if(d|0)ti(j|0,m|0,b|0)|0;d=i+(d<<2)|0;if(!e){b=k[a>>2]|0;if((b|0)==(d|0))return;k[a>>2]=b+(~((b+-4-d|0)>>>2)<<2);return}g=k[c>>2]|0;b=h;if((b|0)==(g|0))return;f=k[a>>2]|0;e=g+-4-h|0;d=f;while(1){k[d>>2]=k[b>>2];b=b+4|0;if((b|0)==(g|0))break;else d=d+4|0}k[a>>2]=f+((e>>>2)+1<<2);return}f=j;if(j){d=a+4|0;e=k[d>>2]|0;if((e|0)!=(i|0))k[d>>2]=e+(~((e+-4-j|0)>>>2)<<2);gl(f);k[h>>2]=0;k[d>>2]=0;k[a>>2]=0;d=0}if(g>>>0>1073741823)mk(a);j=d-0|0;d=j>>1;d=j>>2>>>0<536870911?(d>>>0>>0?g:d):1073741823;if(d>>>0>1073741823)mk(a);f=Si(d<<2)|0;g=a+4|0;k[g>>2]=f;k[a>>2]=f;k[h>>2]=f+(d<<2);if((b|0)==(l|0))return;e=l+-4-m|0;d=f;while(1){k[d>>2]=k[b>>2];b=b+4|0;if((b|0)==(l|0))break;else d=d+4|0}k[g>>2]=f+((e>>>2)+1<<2);return}function Ae(a,b){a=a|0;b=b|0;var c=0,d=0,e=0,f=0,g=0,h=0,i=0,j=0,l=0,m=0,n=0,o=0;o=r;r=r+32|0;l=o;m=a+8|0;d=k[m>>2]|0;n=a+4|0;f=k[n>>2]|0;if(d-f>>2>>>0>=b>>>0){Ah(f|0,0,b<<2|0)|0;k[n>>2]=f+(b<<2);r=o;return}e=k[a>>2]|0;c=(f-e>>2)+b|0;if(c>>>0>1073741823)mk(a);j=d-e|0;g=j>>1;g=j>>2>>>0<536870911?(g>>>0>>0?c:g):1073741823;c=f-e>>2;k[l+12>>2]=0;k[l+16>>2]=a+8;do if(g)if(g>>>0>1073741823){o=Ma(4)|0;Tk(o);xa(o|0,856,71)}else{d=Si(g<<2)|0;break}else d=0;while(0);k[l>>2]=d;e=d+(c<<2)|0;i=l+8|0;h=l+4|0;k[h>>2]=e;j=l+12|0;k[j>>2]=d+(g<<2);Ah(e|0,0,b<<2|0)|0;k[i>>2]=e+(b<<2);e=k[a>>2]|0;c=k[n>>2]|0;if((c|0)==(e|0)){f=h;d=k[h>>2]|0}else{d=k[h>>2]|0;do{c=c+-4|0;b=k[c>>2]|0;k[c>>2]=0;k[d+-4>>2]=b;d=(k[h>>2]|0)+-4|0;k[h>>2]=d}while((c|0)!=(e|0));f=h;e=k[a>>2]|0;c=k[n>>2]|0}k[a>>2]=d;k[f>>2]=e;k[n>>2]=k[i>>2];k[i>>2]=c;n=k[m>>2]|0;k[m>>2]=k[j>>2];k[j>>2]=n;k[l>>2]=k[f>>2];mg(l);r=o;return}function Be(a,b,c){a=a|0;b=b|0;c=c|0;var d=0,e=0,f=0,g=0,h=0,i=0,j=0,l=0,m=0;m=b;g=c-m>>2;h=a+8|0;d=k[h>>2]|0;l=k[a>>2]|0;i=l;if(g>>>0<=d-l>>2>>>0){j=a+4|0;h=(k[j>>2]|0)-l>>2;g=g>>>0>h>>>0;h=b+(h<<2)|0;f=g?h:c;a=f;d=a-m|0;e=d>>2;if(e|0)ti(l|0,b|0,d|0)|0;d=i+(e<<2)|0;if(!g){b=k[j>>2]|0;if((b|0)==(d|0))return;k[j>>2]=b+(~((b+-4-d|0)>>>2)<<2);return}if((f|0)==(c|0))return;f=k[j>>2]|0;e=((c+-4-a|0)>>>2)+1|0;b=h;d=f;while(1){k[d>>2]=k[b>>2];b=b+4|0;if((b|0)==(c|0))break;else d=d+4|0}k[j>>2]=f+(e<<2);return}f=l;if(l){d=a+4|0;e=k[d>>2]|0;if((e|0)!=(i|0))k[d>>2]=e+(~((e+-4-l|0)>>>2)<<2);gl(f);k[h>>2]=0;k[d>>2]=0;k[a>>2]=0;d=0}if(g>>>0>1073741823)mk(a);l=d-0|0;d=l>>1;d=l>>2>>>0<536870911?(d>>>0>>0?g:d):1073741823;if(d>>>0>1073741823)mk(a);f=Si(d<<2)|0;g=a+4|0;k[g>>2]=f;k[a>>2]=f;k[h>>2]=f+(d<<2);if((b|0)==(c|0))return;e=((c+-4-m|0)>>>2)+1|0;d=f;while(1){k[d>>2]=k[b>>2];b=b+4|0;if((b|0)==(c|0))break;else d=d+4|0}k[g>>2]=f+(e<<2);return}function Ce(a,b,c){a=a|0;b=b|0;c=c|0;var d=0,e=0,f=0,g=0,h=0,i=0,j=0,l=0,m=0;m=b;g=c-m>>2;h=a+8|0;d=k[h>>2]|0;l=k[a>>2]|0;i=l;if(g>>>0<=d-l>>2>>>0){j=a+4|0;h=(k[j>>2]|0)-l>>2;g=g>>>0>h>>>0;h=b+(h<<2)|0;f=g?h:c;a=f;d=a-m|0;e=d>>2;if(e|0)ti(l|0,b|0,d|0)|0;d=i+(e<<2)|0;if(!g){b=k[j>>2]|0;if((b|0)==(d|0))return;k[j>>2]=b+(~((b+-4-d|0)>>>2)<<2);return}if((f|0)==(c|0))return;f=k[j>>2]|0;e=c+-4-a|0;b=h;d=f;while(1){k[d>>2]=k[b>>2];b=b+4|0;if((b|0)==(c|0))break;else d=d+4|0}k[j>>2]=f+((e>>>2)+1<<2);return}f=l;if(l){d=a+4|0;e=k[d>>2]|0;if((e|0)!=(i|0))k[d>>2]=e+(~((e+-4-l|0)>>>2)<<2);gl(f);k[h>>2]=0;k[d>>2]=0;k[a>>2]=0;d=0}if(g>>>0>1073741823)mk(a);l=d-0|0;d=l>>1;d=l>>2>>>0<536870911?(d>>>0>>0?g:d):1073741823;if(d>>>0>1073741823)mk(a);f=Si(d<<2)|0;g=a+4|0;k[g>>2]=f;k[a>>2]=f;k[h>>2]=f+(d<<2);if((b|0)==(c|0))return;e=c+-4-m|0;d=f;while(1){k[d>>2]=k[b>>2];b=b+4|0;if((b|0)==(c|0))break;else d=d+4|0}k[g>>2]=f+((e>>>2)+1<<2);return}function De(a,b,c){a=a|0;b=b|0;c=c|0;var d=0,e=0,f=0,g=0,h=0,i=0,j=0,l=0,m=0;h=a+8|0;d=k[h>>2]|0;g=k[a>>2]|0;i=g;if(d-g>>3>>>0>=b>>>0){h=a+4|0;a=k[h>>2]|0;f=a-g>>3;g=f>>>0>>0;d=g?f:b;if(d|0){e=i;while(1){m=c;l=k[m+4>>2]|0;j=e;k[j>>2]=k[m>>2];k[j+4>>2]=l;d=d+-1|0;if(!d)break;else e=e+8|0}}if(g){e=b-f|0;d=e;f=a;while(1){j=c;l=k[j+4>>2]|0;m=f;k[m>>2]=k[j>>2];k[m+4>>2]=l;d=d+-1|0;if(!d)break;else f=f+8|0}k[h>>2]=a+(e<<3);return}else{d=i+(b<<3)|0;if((a|0)==(d|0))return;k[h>>2]=a+(~((a+-8-d|0)>>>3)<<3);return}}f=g;if(g){d=a+4|0;e=k[d>>2]|0;if((e|0)!=(i|0))k[d>>2]=e+(~((e+-8-g|0)>>>3)<<3);gl(f);k[h>>2]=0;k[d>>2]=0;k[a>>2]=0;d=0}if(b>>>0>536870911)mk(a);m=d-0|0;d=m>>2;d=m>>3>>>0<268435455?(d>>>0>>0?b:d):536870911;if(d>>>0>536870911)mk(a);f=Si(d<<3)|0;g=a+4|0;k[g>>2]=f;k[a>>2]=f;k[h>>2]=f+(d<<3);d=b;e=f;while(1){j=c;l=k[j+4>>2]|0;m=e;k[m>>2]=k[j>>2];k[m+4>>2]=l;d=d+-1|0;if(!d)break;else e=e+8|0}k[g>>2]=f+(b<<3);return}function Ee(a,b){a=a|0;b=b|0;var c=0,d=0,e=0,f=0,g=0,h=0,i=0,j=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0;m=k[a>>2]|0;n=a+4|0;c=k[n>>2]|0;j=m;if((c|0)==(m|0))d=m;else{d=c+(~((c+-4-j|0)>>>2)<<2)|0;k[n>>2]=d;c=d}s=a+16|0;k[s>>2]=0;t=a+12|0;k[t>>2]=d;i=b+8|0;d=i;p=k[d>>2]|0;d=k[d+4>>2]|0;r=b+16|0;f=r;g=k[f>>2]|0;f=Bj(g|0,k[f+4>>2]|0,4,0)|0;e=M;if((d|0)<(e|0)|(d|0)==(e|0)&p>>>0>>0){b=0;return b|0}q=(k[b>>2]|0)+g|0;q=l[q>>0]|l[q+1>>0]<<8|l[q+2>>0]<<16|l[q+3>>0]<<24;h=r;k[h>>2]=f;k[h+4>>2]=e;h=nj(p|0,d|0,f|0,e|0)|0;g=M;if(0>(g|0)|0==(g|0)&q>>>0>h>>>0){b=0;return b|0}h=q>>>2;g=c-j>>2;if(h>>>0<=g>>>0)if(h>>>0>>0?(o=m+(h<<2)|0,(c|0)!=(o|0)):0){k[n>>2]=c+(~((c+-4-o|0)>>>2)<<2);c=p}else c=p;else{eg(a,h-g|0);c=i;e=r;f=k[e>>2]|0;e=k[e+4>>2]|0;d=k[c+4>>2]|0;c=k[c>>2]|0}p=Bj(f|0,e|0,q|0,0)|0;o=M;if((d|0)<(o|0)|(d|0)==(o|0)&c>>>0

>>0){b=0;return b|0}nh(k[a>>2]|0,(k[b>>2]|0)+f|0,q|0)|0;b=r;q=Bj(k[b>>2]|0,k[b+4>>2]|0,q|0,0)|0;b=r;k[b>>2]=q;k[b+4>>2]=M;k[t>>2]=k[a>>2];k[s>>2]=0;b=1;return b|0}function Fe(a,b){a=a|0;b=b|0;var c=0,d=0,e=0,f=0,g=0,h=0,j=0,l=0,m=0,n=0,p=0,q=0,s=0,t=0,u=Pa,v=Pa,w=0,x=0;t=r;r=r+16|0;h=t;n=k[a+32>>2]|0;q=a+8|0;c=i[(k[q>>2]|0)+24>>0]|0;m=c<<24>>24;p=m<<2;s=dl(m>>>0>1073741823?-1:m<<2)|0;fk(h);ej(h,da(o[a+40>>2]),(1<>24>0){e=0;f=0;a=0}else{a=0;c=0;while(1){nh((k[k[(k[q>>2]|0)+64>>2]>>2]|0)+c|0,s|0,p|0)|0;a=a+1|0;if((a|0)==(b|0))break;else c=c+p|0}el(s);r=t;return 1}a:while(1){d=0;c=k[n>>2]|0;do{if((k[j>>2]|0)-c>>2>>>0<=a>>>0){a=5;break a}x=a;a=a+1|0;x=k[c+(x<<2)>>2]|0;w=(x|0)<0;u=da((w?0-x|0:x)|0);u=da(da(o[l>>2])*u);v=da(-u);u=da(da(o[h>>2])*(w?v:u));u=da(da(o[(k[g>>2]|0)+(d<<2)>>2])+u);o[s+(d<<2)>>2]=u;d=d+1|0}while((d|0)<(m|0));nh((k[k[(k[q>>2]|0)+64>>2]>>2]|0)+f|0,s|0,p|0)|0;e=e+1|0;if(e>>>0>=b>>>0){a=9;break}else f=f+p|0}if((a|0)==5)lk(n);else if((a|0)==9){el(s);r=t;return 1}return 0}function Ge(a,b){a=a|0;b=b|0;var c=0,d=0,e=0,f=0,g=0,h=0,i=0,j=0,l=0,m=0,n=0;n=a+4|0;c=k[n>>2]|0;e=k[a>>2]|0;d=(c-e>>5)+1|0;if(d>>>0>134217727)mk(a);l=e;h=c;m=a+8|0;j=(k[m>>2]|0)-e|0;f=j>>4;f=j>>5>>>0<67108863?(f>>>0>>0?d:f):134217727;e=c-e>>5;do if(f)if(f>>>0>134217727){n=Ma(4)|0;Tk(n);xa(n|0,856,71)}else{g=Si(f<<5)|0;break}else g=0;while(0);i=g+(e<<5)|0;d=i;j=g+(f<<5)|0;k[i>>2]=k[b>>2];k[g+(e<<5)+4>>2]=k[b+4>>2];k[g+(e<<5)+8>>2]=k[b+8>>2];k[g+(e<<5)+12>>2]=k[b+12>>2];f=g+(e<<5)+16|0;b=b+16|0;k[f>>2]=k[b>>2];k[f+4>>2]=k[b+4>>2];k[f+8>>2]=k[b+8>>2];k[f+12>>2]=k[b+12>>2];f=i+32|0;if((h|0)!=(l|0)){e=h;c=i;do{h=e;e=e+-32|0;k[c+-32>>2]=k[e>>2];k[c+-28>>2]=k[h+-28>>2];k[c+-24>>2]=k[h+-24>>2];k[c+-20>>2]=k[h+-20>>2];i=c+-16|0;h=h+-16|0;k[i>>2]=k[h>>2];k[i+4>>2]=k[h+4>>2];k[i+8>>2]=k[h+8>>2];k[i+12>>2]=k[h+12>>2];c=d+-32|0;d=c}while((e|0)!=(l|0));c=k[a>>2]|0}k[a>>2]=d;k[n>>2]=f;k[m>>2]=j;if(!c)return;gl(c);return}function He(a,b){a=a|0;b=b|0;var c=0,d=0,e=0,f=0,g=0,h=0,i=0;p[a+16>>3]=.5;e=b+8|0;d=k[e>>2]|0;e=k[e+4>>2]|0;g=b+16|0;h=g;c=k[h>>2]|0;h=Bj(c|0,k[h+4>>2]|0,4,0)|0;i=M;if((e|0)<(i|0)|(e|0)==(i|0)&d>>>0>>0){i=0;return i|0}b=k[b>>2]|0;f=b+c|0;f=l[f>>0]|l[f+1>>0]<<8|l[f+2>>0]<<16|l[f+3>>0]<<24;c=g;k[c>>2]=h;k[c+4>>2]=i;e=nj(d|0,e|0,h|0,i|0)|0;d=M;if(0>(d|0)|0==(d|0)&f>>>0>e>>>0){i=0;return i|0}b=b+h|0;if((f|0)<1){i=0;return i|0}k[a>>2]=b;c=f+-1|0;d=b+c|0;a:do switch((l[d>>0]|0)>>>6&3){case 0:{k[a+4>>2]=c;c=(l[d>>0]|0)&63;b=a+8|0;k[b>>2]=c;break}case 1:if((f|0)<2){i=0;return i|0}else{k[a+4>>2]=f+-2;c=b+f+-2|0;c=(l[c+1>>0]|0)<<8&16128|(l[c>>0]|0);b=a+8|0;k[b>>2]=c;break a}case 2:if((f|0)<3){i=0;return i|0}else{k[a+4>>2]=f+-3;c=b+f+-3|0;c=(l[c+1>>0]|0)<<8|(l[c>>0]|0)|(l[c+2>>0]|0)<<16&4128768;b=a+8|0;k[b>>2]=c;break a}default:{i=0;return i|0}}while(0);a=c+4096|0;k[b>>2]=a;if(a>>>0>1048575){i=0;return i|0}h=Bj(h|0,i|0,f|0,0)|0;i=g;k[i>>2]=h;k[i+4>>2]=M;i=1;return i|0}function Ie(a,b,c){a=a|0;b=b|0;c=c|0;var d=0,e=0,f=0,g=0,h=0,j=0,l=0,m=0,n=0,o=0,p=0,q=0;d=k[c>>2]|0;m=k[c+4>>2]|0;a:do if((d|0)==(m|0)){n=0;o=a+8|0;p=a+4|0}else{j=k[b>>2]|0;l=a+4|0;h=a+8|0;c=0;b:while(1){f=k[d>>2]|0;g=k[j+(f<<2)>>2]|0;if((g|0)>=(c|0)){c=k[l>>2]|0;b=(k[h>>2]|0)-c|0;if((b|0)>0){a=b>>2;b=0;do{e=k[c+(b<<2)>>2]|0;if(i[e+84>>0]|0)break b;e=k[e+68>>2]|0;k[e+(g<<2)>>2]=k[e+(f<<2)>>2];b=b+1|0}while((b|0)<(a|0))}c=g+1|0}d=d+4|0;if((d|0)==(m|0)){n=c;o=h;p=l;break a}}Ka(6242,6261,80,6293)}while(0);b=k[o>>2]|0;c=k[p>>2]|0;if((b-c|0)>0)h=0;else return;do{d=k[c+(h<<2)>>2]|0;i[d+84>>0]=0;a=d+68|0;d=d+72|0;g=k[d>>2]|0;f=k[a>>2]|0;e=g-f>>2;if(n>>>0<=e>>>0){if(n>>>0>>0?(q=f+(n<<2)|0,(g|0)!=(q|0)):0)k[d>>2]=g+(~((g+-4-q|0)>>>2)<<2)}else{Bf(a,n-e|0,3004);c=k[p>>2]|0;b=k[o>>2]|0}h=h+1|0}while((h|0)<(b-c>>2|0));return}function Je(a,b){a=a|0;b=b|0;var c=0,d=0,e=0,f=0,g=0,h=0,i=0,j=0,l=0,m=0,n=0,o=0;h=a+48|0;c=k[h>>2]|0;if(!c){o=0;return o|0}o=a+36|0;k[c+4>>2]=o;if(!(Va[k[(k[c>>2]|0)+12>>2]&127](c)|0)){o=0;return o|0}m=a+4|0;n=a+8|0;c=k[n>>2]|0;d=k[m>>2]|0;a:do if((c-d|0)>0){g=a+16|0;f=0;c=d;while(1){e=k[(k[g>>2]|0)+4>>2]|0;c=k[c+(f<<2)>>2]|0;if((c|0)<=-1){c=9;break}d=k[e+4>>2]|0;if(((k[e+8>>2]|0)-d>>2|0)<=(c|0)){c=11;break}e=k[h>>2]|0;f=f+1|0;if(!(Za[k[(k[e>>2]|0)+8>>2]&63](e,k[d+(c<<2)>>2]|0)|0)){l=0;c=15;break}d=k[n>>2]|0;c=k[m>>2]|0;if((f|0)>=(d-c>>2|0)){i=c;j=d;break a}}if((c|0)==9)Ka(12883,12899,62,12927);else if((c|0)==11)Ka(12937,12899,63,12927);else if((c|0)==15)return l|0}else{i=d;j=c}while(0);if((j-i|0)<=0){o=1;return o|0}d=a+24|0;c=0;while(1){l=k[(k[d>>2]|0)+(c<<2)>>2]|0;c=c+1|0;if(!(Ra[k[(k[l>>2]|0)+16>>2]&31](l,o,b)|0)){l=0;c=15;break}if((c|0)>=((k[n>>2]|0)-(k[m>>2]|0)>>2|0)){l=1;c=15;break}}if((c|0)==15)return l|0;return 0}function Ke(a,b){a=a|0;b=b|0;var c=0,d=0,e=0,f=0,g=0,h=0,i=0,l=0;i=j[b>>1]|0;l=j[b+2>>1]|0;h=j[b+4>>1]|0;g=j[b+6>>1]|0;b=(((i&65535^318)+239^l&65535)+239^h&65535)+239^g&65535;d=k[a+4>>2]|0;if(!d){l=0;return l|0}e=d+-1|0;c=(e&d|0)==0;if(c)f=b&e;else f=(b>>>0)%(d>>>0)|0;b=k[(k[a>>2]|0)+(f<<2)>>2]|0;if(!b){l=0;return l|0}b=k[b>>2]|0;if(!b){l=0;return l|0}if(c){while(1){if((k[b+4>>2]&e|0)!=(f|0)){b=0;a=20;break}if((((j[b+8>>1]|0)==i<<16>>16?(j[b+10>>1]|0)==l<<16>>16:0)?(j[b+12>>1]|0)==h<<16>>16:0)?(j[b+14>>1]|0)==g<<16>>16:0){a=20;break}b=k[b>>2]|0;if(!b){b=0;a=20;break}}if((a|0)==20)return b|0}else{while(1){if((((k[b+4>>2]|0)>>>0)%(d>>>0)|0|0)!=(f|0)){b=0;a=20;break}if((((j[b+8>>1]|0)==i<<16>>16?(j[b+10>>1]|0)==l<<16>>16:0)?(j[b+12>>1]|0)==h<<16>>16:0)?(j[b+14>>1]|0)==g<<16>>16:0){a=20;break}b=k[b>>2]|0;if(!b){b=0;a=20;break}}if((a|0)==20)return b|0}return 0}function Le(a,b,c){a=a|0;b=b|0;c=c|0;var d=0,e=0,f=0,g=0,h=0,i=0,j=0,l=0,m=0,n=0,o=0,p=0;p=r;r=r+48|0;m=p+16|0;l=p;h=p+32|0;n=a+28|0;g=k[n>>2]|0;k[h>>2]=g;o=a+20|0;g=(k[o>>2]|0)-g|0;k[h+4>>2]=g;k[h+8>>2]=b;k[h+12>>2]=c;i=a+60|0;j=a+44|0;f=2;b=g+c|0;while(1){if(!(k[4178]|0)){k[m>>2]=k[i>>2];k[m+4>>2]=h;k[m+8>>2]=f;e=Ij(Da(146,m|0)|0)|0}else{wa(73,a|0);k[l>>2]=k[i>>2];k[l+4>>2]=h;k[l+8>>2]=f;e=Ij(Da(146,l|0)|0)|0;ta(0)}if((b|0)==(e|0)){b=6;break}if((e|0)<0){b=8;break}b=b-e|0;d=k[h+4>>2]|0;if(e>>>0<=d>>>0)if((f|0)==2){k[n>>2]=(k[n>>2]|0)+e;f=2;g=h}else g=h;else{g=k[j>>2]|0;k[n>>2]=g;k[o>>2]=g;e=e-d|0;f=f+-1|0;g=h+8|0;d=k[h+12>>2]|0}k[g>>2]=(k[g>>2]|0)+e;k[g+4>>2]=d-e;h=g}if((b|0)==6){m=k[j>>2]|0;k[a+16>>2]=m+(k[a+48>>2]|0);a=m;k[n>>2]=a;k[o>>2]=a}else if((b|0)==8){k[a+16>>2]=0;k[n>>2]=0;k[o>>2]=0;k[a>>2]=k[a>>2]|32;if((f|0)==2)c=0;else c=c-(k[h+4>>2]|0)|0}r=p;return c|0}function Me(a,b){a=a|0;b=b|0;var c=0,d=0,e=0,f=0,g=0,h=0,j=0,l=0;j=i[b>>0]|0;l=i[b+1>>0]|0;h=i[b+2>>0]|0;g=i[b+3>>0]|0;b=(((j&255^318)+239^l&255)+239^h&255)+239^g&255;d=k[a+4>>2]|0;if(!d){l=0;return l|0}e=d+-1|0;c=(e&d|0)==0;if(c)f=b&e;else f=(b>>>0)%(d>>>0)|0;b=k[(k[a>>2]|0)+(f<<2)>>2]|0;if(!b){l=0;return l|0}b=k[b>>2]|0;if(!b){l=0;return l|0}if(c){while(1){if((k[b+4>>2]&e|0)!=(f|0)){b=0;a=20;break}if((((i[b+8>>0]|0)==j<<24>>24?(i[b+9>>0]|0)==l<<24>>24:0)?(i[b+10>>0]|0)==h<<24>>24:0)?(i[b+11>>0]|0)==g<<24>>24:0){a=20;break}b=k[b>>2]|0;if(!b){b=0;a=20;break}}if((a|0)==20)return b|0}else{while(1){if((((k[b+4>>2]|0)>>>0)%(d>>>0)|0|0)!=(f|0)){b=0;a=20;break}if((((i[b+8>>0]|0)==j<<24>>24?(i[b+9>>0]|0)==l<<24>>24:0)?(i[b+10>>0]|0)==h<<24>>24:0)?(i[b+11>>0]|0)==g<<24>>24:0){a=20;break}b=k[b>>2]|0;if(!b){b=0;a=20;break}}if((a|0)==20)return b|0}return 0}function Ne(a,b){a=a|0;b=b|0;var c=0,d=0,e=0,f=0,g=0,h=0,i=0,j=0;h=k[b>>2]|0;i=k[b+4>>2]|0;j=k[b+8>>2]|0;g=k[b+12>>2]|0;b=(((h^318)+239^i)+239^j)+239^g;d=k[a+4>>2]|0;if(!d){j=0;return j|0}e=d+-1|0;c=(e&d|0)==0;if(c)f=b&e;else f=(b>>>0)%(d>>>0)|0;b=k[(k[a>>2]|0)+(f<<2)>>2]|0;if(!b){j=0;return j|0}b=k[b>>2]|0;if(!b){j=0;return j|0}if(c){while(1){if((k[b+4>>2]&e|0)!=(f|0)){b=0;a=20;break}if((((k[b+8>>2]|0)==(h|0)?(k[b+12>>2]|0)==(i|0):0)?(k[b+16>>2]|0)==(j|0):0)?(k[b+20>>2]|0)==(g|0):0){a=20;break}b=k[b>>2]|0;if(!b){b=0;a=20;break}}if((a|0)==20)return b|0}else{while(1){if((((k[b+4>>2]|0)>>>0)%(d>>>0)|0|0)!=(f|0)){b=0;a=20;break}if((((k[b+8>>2]|0)==(h|0)?(k[b+12>>2]|0)==(i|0):0)?(k[b+16>>2]|0)==(j|0):0)?(k[b+20>>2]|0)==(g|0):0){a=20;break}b=k[b>>2]|0;if(!b){b=0;a=20;break}}if((a|0)==20)return b|0}return 0}function Oe(a,b,c){a=a|0;b=b|0;c=c|0;var d=0,e=0,f=0,g=0,h=0,j=0;g=b;f=c-g|0;h=a+8|0;d=k[h>>2]|0;e=k[a>>2]|0;j=e;if(f>>>0>(d-e|0)>>>0){if(e){d=a+4|0;if((k[d>>2]|0)!=(j|0))k[d>>2]=j;gl(j);k[h>>2]=0;k[d>>2]=0;k[a>>2]=0;d=0}if((f|0)<0)mk(a);j=d-0|0;e=j<<1;e=j>>>0<1073741823?(e>>>0>>0?f:e):2147483647;if((e|0)<0)mk(a);d=Si(e)|0;f=a+4|0;k[f>>2]=d;k[a>>2]=d;k[h>>2]=d+e;if((b|0)==(c|0))return;do{i[d>>0]=i[b>>0]|0;b=b+1|0;d=(k[f>>2]|0)+1|0;k[f>>2]=d}while((b|0)!=(c|0));return}else{h=a+4|0;d=(k[h>>2]|0)-e|0;a=f>>>0>d>>>0;d=b+d|0;f=a?d:c;e=f-g|0;if(e|0)ti(j|0,b|0,e|0)|0;b=j+e|0;if(!a){if((k[h>>2]|0)==(b|0))return;k[h>>2]=b;return}if((f|0)==(c|0))return;b=k[h>>2]|0;do{i[b>>0]=i[d>>0]|0;d=d+1|0;b=(k[h>>2]|0)+1|0;k[h>>2]=b}while((d|0)!=(c|0));return}}function Pe(a){a=a|0;var b=0,c=0,d=0,e=0,f=0,g=0,h=0,j=0;h=a+20|0;e=k[h>>2]|0;g=e+8|0;f=k[g+4>>2]|0;b=e+16|0;d=b;c=k[d>>2]|0;d=k[d+4>>2]|0;if(!((f|0)>(d|0)|((f|0)==(d|0)?(k[g>>2]|0)>>>0>c>>>0:0))){h=0;return h|0}e=i[(k[e>>2]|0)+c>>0]|0;f=Bj(c|0,d|0,1,0)|0;g=b;k[g>>2]=f;k[g+4>>2]=M;g=e&255;e=e<<24>>24==0;a:do if(!e){b=0;while(1){if(!(Za[k[(k[a>>2]|0)+16>>2]&63](a,b)|0)){b=0;break}b=b+1|0;if((b|0)>=(g|0))break a}return b|0}while(0);f=a+8|0;b=k[f>>2]|0;c=k[a+12>>2]|0;b:do if((b|0)!=(c|0)){d=a+4|0;while(1){j=k[b>>2]|0;b=b+4|0;if(!(Ra[k[(k[j>>2]|0)+8>>2]&31](j,a,k[d>>2]|0)|0)){b=0;break}if((b|0)==(c|0))break b}return b|0}while(0);c:do if(!e){b=0;while(1){j=k[(k[f>>2]|0)+(b<<2)>>2]|0;b=b+1|0;if(!(Za[k[(k[j>>2]|0)+12>>2]&63](j,k[h>>2]|0)|0)){b=0;break}if((b|0)>=(g|0))break c}return b|0}while(0);if(!(Va[k[(k[a>>2]|0)+28>>2]&127](a)|0)){j=0;return j|0}j=Va[k[(k[a>>2]|0)+32>>2]&127](a)|0;return j|0}function Qe(a,b,c){a=da(a);b=da(b);c=c|0;var d=Pa,e=Pa,f=Pa,g=0.0,h=0.0,i=0.0,j=0.0,k=0.0,l=0;d=da(a+b);e=da(a-b);if(!(e<=da(.5))|(!(e>=da(-.5))|(!(d>=da(.5))|!(d<=da(1.5))))){do if(!(d<=da(.5))){if(d>=da(1.5)){f=da(da(1.5)-b);b=da(da(1.5)-a);break}if(!(e<=da(-.5))){f=da(b+da(.5));b=da(a+da(-.5));break}else{f=da(b+da(-.5));b=da(a+da(.5));break}}else{f=da(da(.5)-b);b=da(da(.5)-a)}while(0);d=da(b+f);e=da(f-b);g=-1.0}else{g=1.0;f=a}a=da(+f*2.0+-1.0);f=da(+b*2.0+-1.0);j=+d*2.0;h=j+-1.0;j=3.0-j;k=+e*2.0;i=k+1.0;k=1.0-k;i=k>2]=da(0.0);a=da(0.0);b=da(0.0);l=c+4|0;o[l>>2]=b;c=c+8|0;o[c>>2]=a;return}else{e=da(da(1.0)/da(P(da(e))));b=da(d*e);o[c>>2]=b;b=da(f*e);a=da(a*e);l=c+4|0;o[l>>2]=a;l=c+8|0;o[l>>2]=b;return}}function Re(a,b,c,d,e,f){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;f=f|0;var g=0,h=0,i=0,j=0,l=0,m=0,n=0,o=0,p=0;p=r;r=r+16|0;n=p+4|0;o=p;k[a+48>>2]=e;k[a+40>>2]=f;m=a+44|0;l=dl(e>>>0>1073741823?-1:e<<2)|0;d=k[m>>2]|0;k[m>>2]=l;if(d|0)el(d);i=a+8|0;k[i>>2]=e;j=a+32|0;h=k[j>>2]|0;g=k[h+4>>2]|0;f=k[h>>2]|0;d=g-f|0;l=d>>2;if((d|0)<=0){r=p;return 1}d=0;while(1){if(g-f>>2>>>0<=d>>>0){d=8;break}k[o>>2]=k[f+(d<<2)>>2];k[n>>2]=k[o>>2];kc(a,n,c,d);h=$(d,e)|0;Sf(i,k[m>>2]|0,b,c+(h<<2)|0,h);d=d+1|0;if((d|0)>=(l|0)){d=5;break}h=k[j>>2]|0;f=k[h>>2]|0;g=k[h+4>>2]|0}if((d|0)==5){r=p;return 1}else if((d|0)==8)lk(h);return 0}function Se(a,b){a=a|0;b=b|0;var c=0,d=0,e=0,f=0,g=0,h=0,i=0,j=0,l=0,m=0,n=0;m=a+8|0;e=k[m>>2]|0;n=a+4|0;f=k[n>>2]|0;if(e-f>>2>>>0>=b>>>0){Ah(f|0,0,b<<2|0)|0;k[n>>2]=f+(b<<2);return}i=k[a>>2]|0;d=(f-i>>2)+b|0;if(d>>>0>1073741823)mk(a);c=f;l=i;j=e-i|0;g=j>>1;g=j>>2>>>0<536870911?(g>>>0>>0?d:g):1073741823;f=f-i>>2;do if(g)if(g>>>0>1073741823){n=Ma(4)|0;Tk(n);xa(n|0,856,71)}else{h=Si(g<<2)|0;break}else h=0;while(0);d=h+(f<<2)|0;Ah(d|0,0,b<<2|0)|0;e=d;j=h+(g<<2)|0;g=h+(f+b<<2)|0;if((c|0)==(l|0))f=i;else{do{c=c+-4|0;i=k[c>>2]|0;k[c>>2]=0;k[d+-4>>2]=i;d=e+-4|0;e=d}while((c|0)!=(l|0));f=k[a>>2]|0;c=k[n>>2]|0}k[a>>2]=e;k[n>>2]=g;k[m>>2]=j;e=f;if((c|0)!=(e|0))do{c=c+-4|0;d=k[c>>2]|0;k[c>>2]=0;if(d|0)Ta[k[(k[d>>2]|0)+4>>2]&127](d)}while((c|0)!=(e|0));if(!f)return;gl(f);return}function Te(a,b,c,d,e,f){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;f=f|0;var g=0,h=0,i=0,j=0,l=0,m=0,n=0,o=0;o=r;r=r+16|0;m=o+4|0;n=o;k[a+48>>2]=e;k[a+40>>2]=f;l=a+44|0;j=dl(e>>>0>1073741823?-1:e<<2)|0;d=k[l>>2]|0;k[l>>2]=j;if(d|0)el(d);i=a+8|0;k[i>>2]=e;j=a+32|0;h=k[j>>2]|0;g=k[h+4>>2]|0;f=k[h>>2]|0;d=g-f|0;if((d|0)<=0){r=o;return 1}d=(d>>2)+-1|0;while(1){if(g-f>>2>>>0<=d>>>0){d=8;break}k[n>>2]=k[f+(d<<2)>>2];k[m>>2]=k[n>>2];ac(a,m,b,d);h=$(d,e)|0;ue(i,b+(h<<2)|0,k[l>>2]|0,c,h);d=d+-1|0;if((d|0)<=-1){d=5;break}h=k[j>>2]|0;f=k[h>>2]|0;g=k[h+4>>2]|0}if((d|0)==5){r=o;return 1}else if((d|0)==8)lk(h);return 0}function Ue(a,b){a=a|0;b=b|0;var c=0,d=0,e=0,f=0,g=0,h=0,i=0,j=0,l=0,m=0,n=0,o=0;o=a+4|0;m=k[o>>2]|0;n=k[a>>2]|0;e=n;do if((m|0)==(n|0)){n=a+8|0;d=k[n>>2]|0;l=a+12|0;j=k[l>>2]|0;c=j;if(d>>>0>>0){e=d;g=((c-e>>2)+1|0)/2|0;c=d+(g<<2)|0;e=e-m|0;l=e>>2;f=c+(0-l<<2)|0;if(l){ti(f|0,m|0,e|0)|0;c=f;d=k[n>>2]|0}k[o>>2]=c;k[n>>2]=d+(g<<2);break}e=c-e>>1;e=(e|0)==0?1:e;if(e>>>0>1073741823){o=Ma(4)|0;Tk(o);xa(o|0,856,71)}h=Si(e<<2)|0;i=h;c=h+((e+3|0)>>>2<<2)|0;j=c;h=h+(e<<2)|0;if((m|0)==(d|0)){e=j;d=m}else{g=c;e=j;f=m;do{k[g>>2]=k[f>>2];g=e+4|0;e=g;f=f+4|0}while((f|0)!=(d|0));d=k[a>>2]|0}k[a>>2]=i;k[o>>2]=j;k[n>>2]=e;k[l>>2]=h;if(d){gl(d);c=k[o>>2]|0}}else c=m;while(0);k[c+-4>>2]=k[b>>2];k[o>>2]=(k[o>>2]|0)+-4;return}function Ve(a,b,c,d,e,f){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;f=f|0;var g=0,h=0,i=0,j=0,l=0,m=0,n=0,o=0,p=0;p=r;r=r+16|0;n=p+4|0;o=p;k[a+48>>2]=e;k[a+40>>2]=f;m=a+44|0;l=dl(e>>>0>1073741823?-1:e<<2)|0;d=k[m>>2]|0;k[m>>2]=l;if(d|0)el(d);i=a+8|0;k[i>>2]=e;j=a+32|0;h=k[j>>2]|0;g=k[h+4>>2]|0;f=k[h>>2]|0;d=g-f|0;l=d>>2;if((d|0)<=0){r=p;return 1}d=0;while(1){if(g-f>>2>>>0<=d>>>0){d=8;break}k[o>>2]=k[f+(d<<2)>>2];k[n>>2]=k[o>>2];fc(a,n,c,d);h=$(d,e)|0;Sf(i,k[m>>2]|0,b,c+(h<<2)|0,h);d=d+1|0;if((d|0)>=(l|0)){d=5;break}h=k[j>>2]|0;f=k[h>>2]|0;g=k[h+4>>2]|0}if((d|0)==5){r=p;return 1}else if((d|0)==8)lk(h);return 0}function We(a,b,c,d,e,f){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;f=f|0;var g=0,h=0,i=0,j=0,l=0,m=0,n=0,o=0,p=0;p=r;r=r+16|0;n=p+4|0;o=p;k[a+48>>2]=e;k[a+40>>2]=f;m=a+44|0;l=dl(e>>>0>1073741823?-1:e<<2)|0;d=k[m>>2]|0;k[m>>2]=l;if(d|0)el(d);i=a+8|0;k[i>>2]=e;j=a+32|0;h=k[j>>2]|0;g=k[h+4>>2]|0;f=k[h>>2]|0;d=g-f|0;l=d>>2;if((d|0)<=0){r=p;return 1}d=0;while(1){if(g-f>>2>>>0<=d>>>0){d=8;break}k[o>>2]=k[f+(d<<2)>>2];k[n>>2]=k[o>>2];kc(a,n,c,d);h=$(d,e)|0;Uf(i,k[m>>2]|0,b,c+(h<<2)|0,h);d=d+1|0;if((d|0)>=(l|0)){d=5;break}h=k[j>>2]|0;f=k[h>>2]|0;g=k[h+4>>2]|0}if((d|0)==5){r=p;return 1}else if((d|0)==8)lk(h);return 0}function Xe(a,b,c){a=a|0;b=b|0;c=c|0;var d=0,e=0,f=0,g=0,h=0,j=0,l=0,m=0;m=r;r=r+48|0;d=m+32|0;e=m+28|0;f=m+24|0;g=m+20|0;h=m+16|0;l=m;j=i[a+24>>0]|0;k[l>>2]=k[226];k[l+4>>2]=k[227];k[l+8>>2]=k[228];k[l+12>>2]=k[229];j=j<<24>>24;switch(j|0){case 1:{k[e>>2]=b;k[d>>2]=k[e>>2];d=Tc(a,d,l)|0;break}case 2:{k[f>>2]=b;k[d>>2]=k[f>>2];d=hc(a,d,l)|0;break}case 3:{k[g>>2]=b;k[d>>2]=k[g>>2];d=Mc(a,d,l)|0;break}case 4:{k[h>>2]=b;k[d>>2]=k[h>>2];d=Ec(a,d,l)|0;break}default:{l=0;r=m;return l|0}}if(!d){l=0;r=m;return l|0}Be(c,l,l+(j<<2)|0);l=1;r=m;return l|0}function Ye(a,b,c){a=a|0;b=b|0;c=c|0;var d=0,e=0,f=0,g=0,h=0,i=0,j=0,l=0,m=0,n=0,o=0,p=0;o=r;r=r+32|0;i=o+24|0;j=o+16|0;l=o+8|0;n=o;e=a+4|0;p=k[e>>2]|0;m=k[b>>2]|0;d=k[b+4>>2]|0;h=k[c>>2]|0;f=k[c+4>>2]|0;g=h-m<<3;k[e>>2]=p-d+f+g;e=(k[a>>2]|0)+(p>>>5<<2)|0;c=p&31;b=e;if((d|0)!=(c|0)){k[i>>2]=m;k[i+4>>2]=d;k[j>>2]=h;k[j+4>>2]=f;k[l>>2]=b;k[l+4>>2]=c;$d(n,i,j,l);r=o;return}c=f-d+g|0;g=m;if((c|0)>0){if(!d){d=0;b=m}else{p=32-d|0;b=(c|0)<(p|0)?c:p;p=-1>>>(p-b|0)&-1<>2]=k[e>>2]&~p|k[g>>2]&p;d=b+d|0;g=g+4|0;c=c-b|0;e=e+(d>>>5<<2)|0;d=d&31;b=g}f=c>>>5;ti(e|0,b|0,f<<2|0)|0;a=c-(f<<5)|0;c=e+(f<<2)|0;b=c;if((a|0)>0){d=-1>>>(32-a|0);k[c>>2]=k[c>>2]&~d|k[g+(f<<2)>>2]&d;d=a}}k[n>>2]=b;k[n+4>>2]=d;r=o;return}function Ze(a,b){a=a|0;b=b|0;var c=0,d=0,e=0,f=0,g=0,h=0,j=0;e=b+8|0;j=e;g=k[j>>2]|0;j=k[j+4>>2]|0;f=b+16|0;d=f;c=k[d>>2]|0;d=Bj(c|0,k[d+4>>2]|0,4,0)|0;h=M;if((j|0)<(h|0)|(j|0)==(h|0)&g>>>0>>0){j=0;return j|0}j=a+12|0;c=(k[b>>2]|0)+c|0;c=l[c>>0]|l[c+1>>0]<<8|l[c+2>>0]<<16|l[c+3>>0]<<24;i[j>>0]=c;i[j+1>>0]=c>>8;i[j+2>>0]=c>>16;i[j+3>>0]=c>>24;j=f;g=k[j>>2]|0;j=k[j+4>>2]|0;d=Bj(g|0,j|0,4,0)|0;h=f;k[h>>2]=d;k[h+4>>2]=M;h=k[e>>2]|0;e=k[e+4>>2]|0;j=Bj(g|0,j|0,8,0)|0;g=M;if((e|0)<(g|0)|(e|0)==(g|0)&h>>>0>>0){j=0;return j|0}h=a+16|0;j=(k[b>>2]|0)+d|0;j=l[j>>0]|l[j+1>>0]<<8|l[j+2>>0]<<16|l[j+3>>0]<<24;i[h>>0]=j;i[h+1>>0]=j>>8;i[h+2>>0]=j>>16;i[h+3>>0]=j>>24;h=f;h=Bj(k[h>>2]|0,k[h+4>>2]|0,4,0)|0;d=f;k[d>>2]=h;k[d+4>>2]=M;j=1-c+j|0;k[a+20>>2]=j;c=(j|0)/2|0;d=a+24|0;k[d>>2]=c;k[a+28>>2]=0-c;if(j&1|0){j=1;return j|0}k[d>>2]=c+-1;j=1;return j|0}function _e(a,b,c,d,e,f){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;f=f|0;var g=0,h=0,i=0,j=0,l=0,m=0,n=0,o=0;o=r;r=r+16|0;m=o+4|0;n=o;k[a+48>>2]=e;k[a+40>>2]=f;l=a+44|0;j=dl(e>>>0>1073741823?-1:e<<2)|0;d=k[l>>2]|0;k[l>>2]=j;if(d|0)el(d);i=a+8|0;k[i>>2]=e;j=a+32|0;h=k[j>>2]|0;g=k[h+4>>2]|0;f=k[h>>2]|0;d=g-f|0;if((d|0)<=0){r=o;return 1}d=(d>>2)+-1|0;while(1){if(g-f>>2>>>0<=d>>>0){d=8;break}k[n>>2]=k[f+(d<<2)>>2];k[m>>2]=k[n>>2];_b(a,m,b,d);h=$(d,e)|0;ue(i,b+(h<<2)|0,k[l>>2]|0,c,h);d=d+-1|0;if((d|0)<=-1){d=5;break}h=k[j>>2]|0;f=k[h>>2]|0;g=k[h+4>>2]|0}if((d|0)==5){r=o;return 1}else if((d|0)==8)lk(h);return 0}function $e(a,b,c,d,e,f){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;f=f|0;var g=0,h=0,i=0,j=0,l=0,m=0,n=0,o=0;o=r;r=r+16|0;m=o+4|0;n=o;k[a+48>>2]=e;k[a+40>>2]=f;l=a+44|0;j=dl(e>>>0>1073741823?-1:e<<2)|0;d=k[l>>2]|0;k[l>>2]=j;if(d|0)el(d);i=a+8|0;k[i>>2]=e;j=a+32|0;h=k[j>>2]|0;g=k[h+4>>2]|0;f=k[h>>2]|0;d=g-f|0;if((d|0)<=0){r=o;return 1}d=(d>>2)+-1|0;while(1){if(g-f>>2>>>0<=d>>>0){d=8;break}k[n>>2]=k[f+(d<<2)>>2];k[m>>2]=k[n>>2];ac(a,m,b,d);h=$(d,e)|0;we(i,b+(h<<2)|0,k[l>>2]|0,c,h);d=d+-1|0;if((d|0)<=-1){d=5;break}h=k[j>>2]|0;f=k[h>>2]|0;g=k[h+4>>2]|0}if((d|0)==5){r=o;return 1}else if((d|0)==8)lk(h);return 0}function af(a,b){a=a|0;b=b|0;var c=0,d=0,e=0,f=0,g=0,h=0,i=0,j=0,l=0,m=0,n=0;n=a+8|0;i=k[n>>2]|0;j=a+12|0;m=k[j>>2]|0;e=m;g=i;do if((i|0)==(m|0)){m=a+4|0;l=k[m>>2]|0;d=k[a>>2]|0;c=d;if(l>>>0>d>>>0){d=l;e=((d-c>>2)+1|0)/-2|0;f=l+(e<<2)|0;c=g-d|0;d=c>>2;if(!d)c=l;else{ti(f|0,l|0,c|0)|0;c=k[m>>2]|0}l=f+(d<<2)|0;k[n>>2]=l;k[m>>2]=c+(e<<2);c=l;break}c=e-c>>1;c=(c|0)==0?1:c;if(c>>>0>1073741823){n=Ma(4)|0;Tk(n);xa(n|0,856,71)}f=Si(c<<2)|0;g=f;e=f+(c>>>2<<2)|0;h=e;f=f+(c<<2)|0;if((l|0)==(i|0))c=h;else{c=h;d=l;do{k[e>>2]=k[d>>2];e=c+4|0;c=e;d=d+4|0}while((d|0)!=(i|0));d=k[a>>2]|0}k[a>>2]=g;k[m>>2]=h;k[n>>2]=c;k[j>>2]=f;if(d){gl(d);c=k[n>>2]|0}}else c=i;while(0);k[c>>2]=k[b>>2];k[n>>2]=(k[n>>2]|0)+4;return}function bf(a,b,c,d,e,f){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;f=f|0;var g=0,h=0,i=0,j=0,l=0,m=0,n=0,o=0,p=0;p=r;r=r+16|0;n=p+4|0;o=p;k[a+48>>2]=e;k[a+40>>2]=f;m=a+44|0;l=dl(e>>>0>1073741823?-1:e<<2)|0;d=k[m>>2]|0;k[m>>2]=l;if(d|0)el(d);i=a+8|0;k[i>>2]=e;j=a+32|0;h=k[j>>2]|0;g=k[h+4>>2]|0;f=k[h>>2]|0;d=g-f|0;l=d>>2;if((d|0)<=0){r=p;return 1}d=0;while(1){if(g-f>>2>>>0<=d>>>0){d=8;break}k[o>>2]=k[f+(d<<2)>>2];k[n>>2]=k[o>>2];fc(a,n,c,d);h=$(d,e)|0;Uf(i,k[m>>2]|0,b,c+(h<<2)|0,h);d=d+1|0;if((d|0)>=(l|0)){d=5;break}h=k[j>>2]|0;f=k[h>>2]|0;g=k[h+4>>2]|0}if((d|0)==5){r=p;return 1}else if((d|0)==8)lk(h);return 0}function cf(a,b,c,d,e){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;var f=0,g=0,h=0;do if((a|0)==(k[b+8>>2]|0)){if((k[b+4>>2]|0)==(c|0)?(f=b+28|0,(k[f>>2]|0)!=1):0)k[f>>2]=d}else{if((a|0)!=(k[b>>2]|0)){h=k[a+8>>2]|0;Sa[k[(k[h>>2]|0)+24>>2]&3](h,b,c,d,e);break}if((k[b+16>>2]|0)!=(c|0)?(h=b+20|0,(k[h>>2]|0)!=(c|0)):0){k[b+32>>2]=d;g=b+44|0;if((k[g>>2]|0)==4)break;f=b+52|0;i[f>>0]=0;d=b+53|0;i[d>>0]=0;a=k[a+8>>2]|0;Ya[k[(k[a>>2]|0)+20>>2]&3](a,b,c,c,1,e);if(i[d>>0]|0)if(!(i[f>>0]|0)){f=1;d=13}else d=17;else{f=0;d=13}do if((d|0)==13){k[h>>2]=c;c=b+40|0;k[c>>2]=(k[c>>2]|0)+1;if((k[b+36>>2]|0)==1?(k[b+24>>2]|0)==2:0){i[b+54>>0]=1;if(f){d=17;break}else{f=4;break}}if(f)d=17;else f=4}while(0);if((d|0)==17)f=3;k[g>>2]=f;break}if((d|0)==1)k[b+32>>2]=1}while(0);return}function df(a,b,c,d,e,f){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;f=f|0;var g=0,h=0,i=0,j=0,l=0,m=0,n=0,o=0;o=r;r=r+16|0;m=o+4|0;n=o;k[a+48>>2]=e;k[a+40>>2]=f;l=a+44|0;j=dl(e>>>0>1073741823?-1:e<<2)|0;d=k[l>>2]|0;k[l>>2]=j;if(d|0)el(d);i=a+8|0;k[i>>2]=e;j=a+32|0;h=k[j>>2]|0;g=k[h+4>>2]|0;f=k[h>>2]|0;d=g-f|0;if((d|0)<=0){r=o;return 1}d=(d>>2)+-1|0;while(1){if(g-f>>2>>>0<=d>>>0){d=8;break}k[n>>2]=k[f+(d<<2)>>2];k[m>>2]=k[n>>2];_b(a,m,b,d);h=$(d,e)|0;we(i,b+(h<<2)|0,k[l>>2]|0,c,h);d=d+-1|0;if((d|0)<=-1){d=5;break}h=k[j>>2]|0;f=k[h>>2]|0;g=k[h+4>>2]|0}if((d|0)==5){r=o;return 1}else if((d|0)==8)lk(h);return 0}function ef(a,b,c){a=a|0;b=b|0;c=c|0;var d=0,e=0,f=0,g=0,h=0,j=0,l=0,m=0,n=0;m=(k[b+4>>2]|0)-(k[b>>2]|0)>>2;h=c+8|0;g=k[h>>2]|0;h=k[h+4>>2]|0;j=c+16|0;e=j;d=k[e>>2]|0;e=k[e+4>>2]|0;if((h|0)>(e|0)|(h|0)==(e|0)&g>>>0>d>>>0){f=i[(k[c>>2]|0)+d>>0]|0;d=Bj(d|0,e|0,1,0)|0;e=M;n=j;k[n>>2]=d;k[n+4>>2]=e;if(f<<24>>24!=-2)l=3}else{f=0;l=3}if((l|0)==3){if((h|0)>(e|0)|(h|0)==(e|0)&g>>>0>d>>>0){n=i[(k[c>>2]|0)+d>>0]|0;l=Bj(d|0,e|0,1,0)|0;d=j;k[d>>2]=l;k[d+4>>2]=M;d=n}else d=0;n=a+28|0;l=Ra[k[(k[a>>2]|0)+32>>2]&31](a,f<<24>>24,d<<24>>24)|0;d=k[n>>2]|0;k[n>>2]=l;if(d|0)Ta[k[(k[d>>2]|0)+4>>2]&127](d)}d=k[a+28>>2]|0;if(d|0?!(Za[k[(k[a>>2]|0)+20>>2]&63](a,d)|0):0){n=0;return n|0}if(!(Ra[k[(k[a>>2]|0)+28>>2]&31](a,b,c)|0)){n=0;return n|0}n=Za[k[(k[a>>2]|0)+40>>2]&63](a,m)|0;return n|0}function ff(a){a=a|0;Jk(a+744|0);Jk(a+720|0);Jk(a+696|0);Jk(a+672|0);Jk(a+648|0);Jk(a+624|0);Jk(a+600|0);Jk(a+576|0);Jk(a+552|0);Jk(a+528|0);Jk(a+504|0);Jk(a+480|0);Jk(a+456|0);Jk(a+432|0);Jk(a+408|0);Jk(a+384|0);Jk(a+360|0);Jk(a+336|0);Jk(a+312|0);Jk(a+288|0);Jk(a+264|0);Jk(a+240|0);Jk(a+216|0);Jk(a+192|0);Jk(a+168|0);Jk(a+144|0);Jk(a+120|0);Jk(a+96|0);Jk(a+72|0);Jk(a+48|0);Jk(a+24|0);Jk(a);return}function gf(a){a=a|0;Jk(a);Jk(a+24|0);Jk(a+48|0);Jk(a+72|0);Jk(a+96|0);Jk(a+120|0);Jk(a+144|0);Jk(a+168|0);Jk(a+192|0);Jk(a+216|0);Jk(a+240|0);Jk(a+264|0);Jk(a+288|0);Jk(a+312|0);Jk(a+336|0);Jk(a+360|0);Jk(a+384|0);Jk(a+408|0);Jk(a+432|0);Jk(a+456|0);Jk(a+480|0);Jk(a+504|0);Jk(a+528|0);Jk(a+552|0);Jk(a+576|0);Jk(a+600|0);Jk(a+624|0);Jk(a+648|0);Jk(a+672|0);Jk(a+696|0);Jk(a+720|0);Jk(a+744|0);return}function hf(a,b,c){a=a|0;b=b|0;c=c|0;var d=0,e=0,f=0,g=0,h=0,i=0;i=r;r=r+16|0;g=i;k[g>>2]=b;if((b|0)<=-1)Ka(6310,6322,93,6349);h=a+4|0;if(((k[a+8>>2]|0)-(k[h>>2]|0)>>2|0)<=(b|0))bg(h,b+1|0);d=k[(k[c>>2]|0)+56>>2]|0;do if((d|0)<4){e=a+16+(d*12|0)+4|0;f=k[e>>2]|0;if((f|0)==(k[a+16+(d*12|0)+8>>2]|0)){pg(a+16+(d*12|0)|0,g);break}else{k[f>>2]=b;k[e>>2]=f+4;break}}while(0);h=(k[h>>2]|0)+(k[g>>2]<<2)|0;g=k[c>>2]|0;k[c>>2]=0;f=k[h>>2]|0;k[h>>2]=g;if(!f){r=i;return}a=k[f+68>>2]|0;b=a;if(a|0){d=f+72|0;e=k[d>>2]|0;if((e|0)!=(a|0))k[d>>2]=e+(~((e+-4-b|0)>>>2)<<2);gl(a)}h=f+64|0;a=k[h>>2]|0;k[h>>2]=0;if(a|0){b=k[a>>2]|0;if(b|0){d=a+4|0;if((k[d>>2]|0)!=(b|0))k[d>>2]=b;gl(b)}gl(a)}gl(f);r=i;return}function jf(a){a=a|0;var b=0,c=0,d=0,e=0,f=0,g=0,h=0,i=0,j=0,l=0;j=a+4|0;c=k[j>>2]|0;i=a+16|0;b=k[i>>2]|0;d=c+(b>>>7<<2)|0;l=a+8|0;h=k[l>>2]|0;e=h;f=c;if((h|0)==(c|0)){g=0;h=a+20|0;b=0}else{h=a+20|0;g=(k[h>>2]|0)+b|0;g=(k[c+(g>>>7<<2)>>2]|0)+((g&127)<<5)|0;b=(k[d>>2]|0)+((b&127)<<5)|0}a:while(1){do{if((b|0)==(g|0))break a;b=b+32|0}while((b-(k[d>>2]|0)|0)!=4096);b=d+4|0;d=b;b=k[b>>2]|0}k[h>>2]=0;b=e-f>>2;if(b>>>0>2)do{gl(k[c>>2]|0);c=(k[j>>2]|0)+4|0;k[j>>2]=c;b=(k[l>>2]|0)-c>>2}while(b>>>0>2);switch(b|0){case 1:{k[i>>2]=64;break}case 2:{k[i>>2]=128;break}default:{}}b=k[j>>2]|0;c=k[l>>2]|0;if((b|0)!=(c|0)){do{gl(k[b>>2]|0);b=b+4|0}while((b|0)!=(c|0));b=k[j>>2]|0;c=k[l>>2]|0;if((c|0)!=(b|0))k[l>>2]=c+(~((c+-4-b|0)>>>2)<<2)}b=k[a>>2]|0;if(!b)return;gl(b);return}function kf(a,b){a=a|0;b=b|0;var c=0,d=0,e=0,f=0,g=0,h=0,i=0,j=0,l=0;l=r;r=r+16|0;j=l;i=Si(52)|0;g=Si(12)|0;f=k[(k[a+4>>2]|0)+64>>2]|0;k[g+4>>2]=0;k[g>>2]=5188;k[g+8>>2]=f;k[j>>2]=g;Nh(i,j);g=a+8|0;f=a+12|0;a=k[f>>2]|0;c=k[g>>2]|0;d=a-c>>2;do if((d|0)<=(b|0)){e=b+1|0;if(e>>>0>d>>>0){Se(g,e-d|0);break}if(e>>>0>>0?(h=c+(e<<2)|0,(a|0)!=(h|0)):0)do{e=a+-4|0;k[f>>2]=e;a=k[e>>2]|0;k[e>>2]=0;if(a|0)Ta[k[(k[a>>2]|0)+4>>2]&127](a);a=k[f>>2]|0}while((a|0)!=(h|0))}while(0);h=(k[g>>2]|0)+(b<<2)|0;a=k[h>>2]|0;k[h>>2]=i;if(a|0)Ta[k[(k[a>>2]|0)+4>>2]&127](a);a=k[j>>2]|0;k[j>>2]=0;if(!a){r=l;return 1}Ta[k[(k[a>>2]|0)+4>>2]&127](a);r=l;return 1}function lf(a,b,c){a=a|0;b=b|0;c=c|0;var d=0,e=0,f=0,g=0,h=0,j=0;do if(b){b=a+8|0;j=b;g=k[j>>2]|0;j=k[j+4>>2]|0;d=a+16|0;f=d;e=k[f>>2]|0;f=Bj(e|0,k[f+4>>2]|0,8,0)|0;h=M;if((j|0)<(h|0)|(j|0)==(h|0)&g>>>0>>0){j=0;return j|0}else{j=(k[a>>2]|0)+e|0;h=j;h=l[h>>0]|l[h+1>>0]<<8|l[h+2>>0]<<16|l[h+3>>0]<<24;j=j+4|0;j=l[j>>0]|l[j+1>>0]<<8|l[j+2>>0]<<16|l[j+3>>0]<<24;e=c;c=e;i[c>>0]=h;i[c+1>>0]=h>>8;i[c+2>>0]=h>>16;i[c+3>>0]=h>>24;e=e+4|0;i[e>>0]=j;i[e+1>>0]=j>>8;i[e+2>>0]=j>>16;i[e+3>>0]=j>>24;e=d;e=Bj(k[e>>2]|0,k[e+4>>2]|0,8,0)|0;c=M;k[d>>2]=e;k[d+4>>2]=c;d=a;break}}else{c=a+16|0;b=a+8|0;d=a;e=k[c>>2]|0;c=k[c+4>>2]|0}while(0);i[a+36>>0]=1;h=(k[d>>2]|0)+e|0;j=b;j=nj(k[j>>2]|0,k[j+4>>2]|0,e|0,c|0)|0;k[a+32>>2]=0;k[a+24>>2]=h;k[a+28>>2]=h+j;j=1;return j|0}function mf(a,b,c){a=a|0;b=b|0;c=c|0;var d=0,e=0,f=0,g=0,h=0,j=0;j=r;r=r+32|0;d=j+16|0;e=j+12|0;f=j+8|0;g=j+4|0;h=j;c=k[(k[b+40>>2]|0)+(c<<2)>>2]|0;k[a>>2]=0;k[a+4>>2]=0;k[a+8>>2]=0;b=k[b+36>>2]|0;if(!(i[b+84>>0]|0))c=k[(k[b+68>>2]|0)+(c<<2)>>2]|0;switch(i[b+24>>0]|0){case 1:{k[e>>2]=c;k[d>>2]=k[e>>2];Tc(b,d,a)|0;r=j;return}case 2:{k[f>>2]=c;k[d>>2]=k[f>>2];hc(b,d,a)|0;r=j;return}case 3:{k[g>>2]=c;k[d>>2]=k[g>>2];Mc(b,d,a)|0;r=j;return}case 4:{k[h>>2]=c;k[d>>2]=k[h>>2];Ec(b,d,a)|0;r=j;return}default:{r=j;return}}}function nf(a,b,c){a=a|0;b=b|0;c=c|0;var d=0,e=0,f=0,g=0,h=0,j=0;j=r;r=r+32|0;d=j+16|0;e=j+12|0;f=j+8|0;g=j+4|0;h=j;c=k[(k[b+64>>2]|0)+(c<<2)>>2]|0;k[a>>2]=0;k[a+4>>2]=0;k[a+8>>2]=0;b=k[b+60>>2]|0;if(!(i[b+84>>0]|0))c=k[(k[b+68>>2]|0)+(c<<2)>>2]|0;switch(i[b+24>>0]|0){case 1:{k[e>>2]=c;k[d>>2]=k[e>>2];Tc(b,d,a)|0;r=j;return}case 2:{k[f>>2]=c;k[d>>2]=k[f>>2];hc(b,d,a)|0;r=j;return}case 3:{k[g>>2]=c;k[d>>2]=k[g>>2];Mc(b,d,a)|0;r=j;return}case 4:{k[h>>2]=c;k[d>>2]=k[h>>2];Ec(b,d,a)|0;r=j;return}default:{r=j;return}}}function of(a,b){a=a|0;b=b|0;var c=0,d=0,e=0,f=0,g=0,h=0,j=0;d=b+8|0;j=d;g=k[j>>2]|0;j=k[j+4>>2]|0;e=b+16|0;f=e;c=k[f>>2]|0;f=Bj(c|0,k[f+4>>2]|0,4,0)|0;h=M;if((j|0)<(h|0)|(j|0)==(h|0)&g>>>0>>0){j=0;return j|0}j=a+12|0;g=(k[b>>2]|0)+c|0;g=l[g>>0]|l[g+1>>0]<<8|l[g+2>>0]<<16|l[g+3>>0]<<24;i[j>>0]=g;i[j+1>>0]=g>>8;i[j+2>>0]=g>>16;i[j+3>>0]=g>>24;j=e;g=k[j>>2]|0;j=k[j+4>>2]|0;c=Bj(g|0,j|0,4,0)|0;f=e;k[f>>2]=c;k[f+4>>2]=M;f=d;h=k[f>>2]|0;f=k[f+4>>2]|0;j=Bj(g|0,j|0,8,0)|0;g=M;if((f|0)<(g|0)|(f|0)==(g|0)&h>>>0>>0){j=0;return j|0}h=a+16|0;j=(k[b>>2]|0)+c|0;j=l[j>>0]|l[j+1>>0]<<8|l[j+2>>0]<<16|l[j+3>>0]<<24;i[h>>0]=j;i[h+1>>0]=j>>8;i[h+2>>0]=j>>16;i[h+3>>0]=j>>24;h=e;h=Bj(k[h>>2]|0,k[h+4>>2]|0,4,0)|0;j=e;k[j>>2]=h;k[j+4>>2]=M;j=1;return j|0}function pf(a,b,c){a=a|0;b=b|0;c=c|0;var d=0,e=0,f=0,g=0,h=0,i=0;i=r;r=r+16|0;h=i;g=k[c>>2]|0;k[c>>2]=0;k[h>>2]=g;hf(a,b,h);g=k[h>>2]|0;k[h>>2]=0;if(g|0){f=k[g+68>>2]|0;c=f;if(f|0){d=g+72|0;e=k[d>>2]|0;if((e|0)!=(f|0))k[d>>2]=e+(~((e+-4-c|0)>>>2)<<2);gl(f)}h=g+64|0;c=k[h>>2]|0;k[h>>2]=0;if(c|0){d=k[c>>2]|0;if(d|0){e=c+4|0;if((k[e>>2]|0)!=(d|0))k[e>>2]=d;gl(d)}gl(c)}gl(g)}h=a+68|0;a=a+72|0;c=k[a>>2]|0;f=k[h>>2]|0;g=c-f>>2;if((g|0)>(b|0)){r=i;return}d=b+1|0;e=c;if(d>>>0>g>>>0){Ff(h,d-g|0);r=i;return}if(d>>>0>=g>>>0){r=i;return}c=f+(d<<2)|0;if((e|0)==(c|0)){r=i;return}k[a>>2]=e+(~((e+-4-c|0)>>>2)<<2);r=i;return}function qf(a,b,c){a=a|0;b=b|0;c=c|0;var d=0,e=0,f=0,g=0,h=0,j=0,l=0,m=0,n=0,o=0,p=0,q=0,s=0;s=r;r=r+224|0;m=s+120|0;o=s+80|0;p=s;q=s+136|0;d=o;e=d+40|0;do{k[d>>2]=0;d=d+4|0}while((d|0)<(e|0));k[m>>2]=k[c>>2];if((ab(0,b,m,p,o)|0)<0)c=-1;else{if((k[a+76>>2]|0)>-1)n=kl(a)|0;else n=0;c=k[a>>2]|0;l=c&32;if((i[a+74>>0]|0)<1)k[a>>2]=c&-33;d=a+48|0;if(!(k[d>>2]|0)){e=a+44|0;f=k[e>>2]|0;k[e>>2]=q;g=a+28|0;k[g>>2]=q;h=a+20|0;k[h>>2]=q;k[d>>2]=80;j=a+16|0;k[j>>2]=q+80;c=ab(a,b,m,p,o)|0;if(f){Ra[k[a+36>>2]&31](a,0,0)|0;c=(k[h>>2]|0)==0?-1:c;k[e>>2]=f;k[d>>2]=0;k[j>>2]=0;k[g>>2]=0;k[h>>2]=0}}else c=ab(a,b,m,p,o)|0;d=k[a>>2]|0;k[a>>2]=d|l;if(n|0)jl(a);c=(d&32|0)==0?c:-1}r=s;return c|0}function rf(a,b,c){a=a|0;b=b|0;c=c|0;var d=0,e=0,f=0,g=0,h=0,i=0,j=0;f=a+4|0;d=k[f>>2]|0;h=k[a>>2]|0;g=d-h>>2;if(g>>>0>=1048576){if((g|0)!=1048576?(e=h+4194304|0,(d|0)!=(e|0)):0)k[f>>2]=d+(~((d+-4-e|0)>>>2)<<2)}else eg(a,1048576-g|0);d=a+12|0;e=a+16|0;h=k[e>>2]|0;g=k[d>>2]|0;f=h-g>>3;if(f>>>0>=c>>>0){if(f>>>0>c>>>0?(i=g+(c<<3)|0,(h|0)!=(i|0)):0)k[e>>2]=h+(~((h+-8-i|0)>>>3)<<3)}else xf(d,c-f|0);if(!c){j=0;return j|0}g=k[d>>2]|0;e=0;f=0;do{i=b+(e<<2)|0;k[g+(e<<3)>>2]=k[i>>2];k[g+(e<<3)+4>>2]=f;d=f;f=(k[i>>2]|0)+f|0;if(f>>>0>1048576){d=0;j=19;break}if(d>>>0>>0){h=k[a>>2]|0;do{k[h+(d<<2)>>2]=e;d=d+1|0}while((d|0)!=(f|0))}e=e+1|0}while(e>>>0>>0);if((j|0)==19)return d|0;j=(f|0)==1048576;return j|0}function sf(a,b,c){a=a|0;b=b|0;c=c|0;var d=0,e=0,f=0,g=0,h=0,i=0,j=0;f=a+4|0;d=k[f>>2]|0;h=k[a>>2]|0;g=d-h>>2;if(g>>>0>=524288){if((g|0)!=524288?(e=h+2097152|0,(d|0)!=(e|0)):0)k[f>>2]=d+(~((d+-4-e|0)>>>2)<<2)}else eg(a,524288-g|0);d=a+12|0;e=a+16|0;h=k[e>>2]|0;g=k[d>>2]|0;f=h-g>>3;if(f>>>0>=c>>>0){if(f>>>0>c>>>0?(i=g+(c<<3)|0,(h|0)!=(i|0)):0)k[e>>2]=h+(~((h+-8-i|0)>>>3)<<3)}else xf(d,c-f|0);if(!c){j=0;return j|0}g=k[d>>2]|0;e=0;f=0;do{i=b+(e<<2)|0;k[g+(e<<3)>>2]=k[i>>2];k[g+(e<<3)+4>>2]=f;d=f;f=(k[i>>2]|0)+f|0;if(f>>>0>524288){d=0;j=19;break}if(d>>>0>>0){h=k[a>>2]|0;do{k[h+(d<<2)>>2]=e;d=d+1|0}while((d|0)!=(f|0))}e=e+1|0}while(e>>>0>>0);if((j|0)==19)return d|0;j=(f|0)==524288;return j|0}function tf(a,b,c){a=a|0;b=b|0;c=c|0;var d=0,e=0,f=0,g=0,h=0,i=0,j=0;f=a+4|0;d=k[f>>2]|0;h=k[a>>2]|0;g=d-h>>2;if(g>>>0>=262144){if((g|0)!=262144?(e=h+1048576|0,(d|0)!=(e|0)):0)k[f>>2]=d+(~((d+-4-e|0)>>>2)<<2)}else eg(a,262144-g|0);d=a+12|0;e=a+16|0;h=k[e>>2]|0;g=k[d>>2]|0;f=h-g>>3;if(f>>>0>=c>>>0){if(f>>>0>c>>>0?(i=g+(c<<3)|0,(h|0)!=(i|0)):0)k[e>>2]=h+(~((h+-8-i|0)>>>3)<<3)}else xf(d,c-f|0);if(!c){j=0;return j|0}g=k[d>>2]|0;e=0;f=0;do{i=b+(e<<2)|0;k[g+(e<<3)>>2]=k[i>>2];k[g+(e<<3)+4>>2]=f;d=f;f=(k[i>>2]|0)+f|0;if(f>>>0>262144){d=0;j=19;break}if(d>>>0>>0){h=k[a>>2]|0;do{k[h+(d<<2)>>2]=e;d=d+1|0}while((d|0)!=(f|0))}e=e+1|0}while(e>>>0>>0);if((j|0)==19)return d|0;j=(f|0)==262144;return j|0}function uf(a,b,c,d){a=a|0;b=b|0;c=c|0;d=d|0;var e=0,f=0,g=0,h=0,l=0,m=0,n=0,o=0,p=0,q=0;q=r;r=r+64|0;o=q;n=k[a>>2]|0;p=a+(k[n+-8>>2]|0)|0;n=k[n+-4>>2]|0;k[o>>2]=c;k[o+4>>2]=a;k[o+8>>2]=b;k[o+12>>2]=d;a=o+16|0;b=o+20|0;d=o+24|0;e=o+28|0;f=o+32|0;g=o+40|0;h=(n|0)==(c|0);l=a;m=l+36|0;do{k[l>>2]=0;l=l+4|0}while((l|0)<(m|0));j[a+36>>1]=0;i[a+38>>0]=0;a:do if(h){k[o+48>>2]=1;Ya[k[(k[c>>2]|0)+20>>2]&3](c,o,p,p,1,0);a=(k[d>>2]|0)==1?p:0}else{Sa[k[(k[n>>2]|0)+24>>2]&3](n,o,p,1,0);switch(k[o+36>>2]|0){case 0:{a=(k[g>>2]|0)==1&(k[e>>2]|0)==1&(k[f>>2]|0)==1?k[b>>2]|0:0;break a}case 1:break;default:{a=0;break a}}if((k[d>>2]|0)!=1?!((k[g>>2]|0)==0&(k[e>>2]|0)==1&(k[f>>2]|0)==1):0){a=0;break}a=k[a>>2]|0}while(0);r=q;return a|0}function vf(a,b,c){a=a|0;b=b|0;c=c|0;var d=0,e=0,f=0,g=0,h=0,i=0,j=0;f=a+4|0;d=k[f>>2]|0;h=k[a>>2]|0;g=d-h>>2;if(g>>>0>=65536){if((g|0)!=65536?(e=h+262144|0,(d|0)!=(e|0)):0)k[f>>2]=d+(~((d+-4-e|0)>>>2)<<2)}else eg(a,65536-g|0);d=a+12|0;e=a+16|0;h=k[e>>2]|0;g=k[d>>2]|0;f=h-g>>3;if(f>>>0>=c>>>0){if(f>>>0>c>>>0?(i=g+(c<<3)|0,(h|0)!=(i|0)):0)k[e>>2]=h+(~((h+-8-i|0)>>>3)<<3)}else xf(d,c-f|0);if(!c){j=0;return j|0}g=k[d>>2]|0;e=0;f=0;do{i=b+(e<<2)|0;k[g+(e<<3)>>2]=k[i>>2];k[g+(e<<3)+4>>2]=f;d=f;f=(k[i>>2]|0)+f|0;if(f>>>0>65536){d=0;j=19;break}if(d>>>0>>0){h=k[a>>2]|0;do{k[h+(d<<2)>>2]=e;d=d+1|0}while((d|0)!=(f|0))}e=e+1|0}while(e>>>0>>0);if((j|0)==19)return d|0;j=(f|0)==65536;return j|0}function wf(a,b,c){a=a|0;b=b|0;c=c|0;var d=0,e=0,f=0,g=0,h=0,i=0,j=0;f=a+4|0;d=k[f>>2]|0;h=k[a>>2]|0;g=d-h>>2;if(g>>>0>=32768){if((g|0)!=32768?(e=h+131072|0,(d|0)!=(e|0)):0)k[f>>2]=d+(~((d+-4-e|0)>>>2)<<2)}else eg(a,32768-g|0);d=a+12|0;e=a+16|0;h=k[e>>2]|0;g=k[d>>2]|0;f=h-g>>3;if(f>>>0>=c>>>0){if(f>>>0>c>>>0?(i=g+(c<<3)|0,(h|0)!=(i|0)):0)k[e>>2]=h+(~((h+-8-i|0)>>>3)<<3)}else xf(d,c-f|0);if(!c){j=0;return j|0}g=k[d>>2]|0;e=0;f=0;do{i=b+(e<<2)|0;k[g+(e<<3)>>2]=k[i>>2];k[g+(e<<3)+4>>2]=f;d=f;f=(k[i>>2]|0)+f|0;if(f>>>0>32768){d=0;j=19;break}if(d>>>0>>0){h=k[a>>2]|0;do{k[h+(d<<2)>>2]=e;d=d+1|0}while((d|0)!=(f|0))}e=e+1|0}while(e>>>0>>0);if((j|0)==19)return d|0;j=(f|0)==32768;return j|0}function xf(a,b){a=a|0;b=b|0;var c=0,d=0,e=0,f=0,g=0,h=0,i=0;h=a+8|0;e=k[h>>2]|0;i=a+4|0;c=k[i>>2]|0;if(e-c>>3>>>0>=b>>>0){do{h=c;k[h>>2]=0;k[h+4>>2]=0;c=(k[i>>2]|0)+8|0;k[i>>2]=c;b=b+-1|0}while((b|0)!=0);return}f=k[a>>2]|0;d=(c-f>>3)+b|0;if(d>>>0>536870911)mk(a);g=e-f|0;e=g>>2;e=g>>3>>>0<268435455?(e>>>0>>0?d:e):536870911;c=c-f>>3;do if(e)if(e>>>0>536870911){i=Ma(4)|0;Tk(i);xa(i|0,856,71)}else{d=Si(e<<3)|0;break}else d=0;while(0);g=d+(c<<3)|0;f=d+(e<<3)|0;c=g;e=g;do{d=c;k[d>>2]=0;k[d+4>>2]=0;c=e+8|0;e=c;b=b+-1|0}while((b|0)!=0);b=k[a>>2]|0;d=(k[i>>2]|0)-b|0;c=g+(0-(d>>3)<<3)|0;if((d|0)>0)nh(c|0,b|0,d|0)|0;k[a>>2]=c;k[i>>2]=e;k[h>>2]=f;if(!b)return;gl(b);return}function yf(a,b){a=a|0;b=b|0;var c=0,d=0,e=0,f=0,g=0,h=0,i=0,j=0,l=0,m=0;l=a+4|0;d=k[l>>2]|0;m=k[a>>2]|0;c=((d-m|0)/12|0)+1|0;if(c>>>0>357913941)mk(a);i=m;g=d;j=a+8|0;h=((k[j>>2]|0)-m|0)/12|0;e=h<<1;e=h>>>0<178956970?(e>>>0>>0?c:e):357913941;d=(d-m|0)/12|0;do if(e)if(e>>>0>357913941){m=Ma(4)|0;Tk(m);xa(m|0,856,71)}else{f=Si(e*12|0)|0;break}else f=0;while(0);c=f+(d*12|0)|0;h=f+(e*12|0)|0;k[c>>2]=k[b>>2];k[f+(d*12|0)+4>>2]=k[b+4>>2];k[f+(d*12|0)+8>>2]=k[b+8>>2];e=c+12|0;if((g|0)!=(i|0)){d=g;do{g=d;d=d+-12|0;k[c+-12>>2]=k[d>>2];k[c+-8>>2]=k[g+-8>>2];k[c+-4>>2]=k[g+-4>>2];c=c+-12|0}while((d|0)!=(i|0))}k[a>>2]=c;k[l>>2]=e;k[j>>2]=h;if(!m)return;gl(m);return}function zf(a,b,c){a=a|0;b=b|0;c=c|0;var d=0,e=0,f=0,g=0,h=0,i=0,j=0;f=a+4|0;d=k[f>>2]|0;h=k[a>>2]|0;g=d-h>>2;if(g>>>0>=8192){if((g|0)!=8192?(e=h+32768|0,(d|0)!=(e|0)):0)k[f>>2]=d+(~((d+-4-e|0)>>>2)<<2)}else eg(a,8192-g|0);d=a+12|0;e=a+16|0;h=k[e>>2]|0;g=k[d>>2]|0;f=h-g>>3;if(f>>>0>=c>>>0){if(f>>>0>c>>>0?(i=g+(c<<3)|0,(h|0)!=(i|0)):0)k[e>>2]=h+(~((h+-8-i|0)>>>3)<<3)}else xf(d,c-f|0);if(!c){j=0;return j|0}g=k[d>>2]|0;e=0;f=0;do{i=b+(e<<2)|0;k[g+(e<<3)>>2]=k[i>>2];k[g+(e<<3)+4>>2]=f;d=f;f=(k[i>>2]|0)+f|0;if(f>>>0>8192){d=0;j=19;break}if(d>>>0>>0){h=k[a>>2]|0;do{k[h+(d<<2)>>2]=e;d=d+1|0}while((d|0)!=(f|0))}e=e+1|0}while(e>>>0>>0);if((j|0)==19)return d|0;j=(f|0)==8192;return j|0}function Af(a,b,c){a=a|0;b=b|0;c=c|0;var d=0,e=0,f=0,g=0,h=0,i=0,j=0;f=a+4|0;d=k[f>>2]|0;h=k[a>>2]|0;g=d-h>>2;if(g>>>0>=4096){if((g|0)!=4096?(e=h+16384|0,(d|0)!=(e|0)):0)k[f>>2]=d+(~((d+-4-e|0)>>>2)<<2)}else eg(a,4096-g|0);d=a+12|0;e=a+16|0;h=k[e>>2]|0;g=k[d>>2]|0;f=h-g>>3;if(f>>>0>=c>>>0){if(f>>>0>c>>>0?(i=g+(c<<3)|0,(h|0)!=(i|0)):0)k[e>>2]=h+(~((h+-8-i|0)>>>3)<<3)}else xf(d,c-f|0);if(!c){j=0;return j|0}g=k[d>>2]|0;e=0;f=0;do{i=b+(e<<2)|0;k[g+(e<<3)>>2]=k[i>>2];k[g+(e<<3)+4>>2]=f;d=f;f=(k[i>>2]|0)+f|0;if(f>>>0>4096){d=0;j=19;break}if(d>>>0>>0){h=k[a>>2]|0;do{k[h+(d<<2)>>2]=e;d=d+1|0}while((d|0)!=(f|0))}e=e+1|0}while(e>>>0>>0);if((j|0)==19)return d|0;j=(f|0)==4096;return j|0}function Bf(a,b,c){a=a|0;b=b|0;c=c|0;var d=0,e=0,f=0,g=0,h=0,i=0,j=0,l=0;j=a+8|0;e=k[j>>2]|0;l=a+4|0;h=k[l>>2]|0;f=h;if(e-h>>2>>>0>=b>>>0){d=b;e=f;while(1){k[e>>2]=k[c>>2];d=d+-1|0;if(!d)break;else e=e+4|0}k[l>>2]=f+(b<<2);return}i=k[a>>2]|0;d=(h-i>>2)+b|0;if(d>>>0>1073741823)mk(a);g=e-i|0;e=g>>1;e=g>>2>>>0<536870911?(e>>>0>>0?d:e):1073741823;d=h-i>>2;do if(e)if(e>>>0>1073741823){l=Ma(4)|0;Tk(l);xa(l|0,856,71)}else{f=Si(e<<2)|0;break}else f=0;while(0);g=f+(d<<2)|0;f=f+(e<<2)|0;d=b;e=g;while(1){k[e>>2]=k[c>>2];d=d+-1|0;if(!d)break;else e=e+4|0}d=h-i|0;e=g+(0-(d>>2)<<2)|0;if((d|0)>0)nh(e|0,i|0,d|0)|0;k[a>>2]=e;k[l>>2]=g+(b<<2);k[j>>2]=f;if(!i)return;gl(i);return}function Cf(a,b){a=a|0;b=b|0;var c=0,d=0,e=Pa;if((b|0)!=1){if(b+-1&b)b=bb(b)|0}else b=2;d=k[a+4>>2]|0;if(b>>>0>d>>>0){kd(a,b);return}if(b>>>0>=d>>>0)return;e=da((k[a+12>>2]|0)>>>0);c=~~da(_(da(e/da(o[a+20>>2]))))>>>0;if(d>>>0>2&(d+-1&d|0)==0)c=1<<32-(ca(c+-1|0)|0);else c=bb(c)|0;b=b>>>0>>0?c:b;if(b>>>0>=d>>>0)return;kd(a,b);return}function Df(a,b,c,d){a=a|0;b=b|0;c=c|0;d=d|0;var e=0,f=0,g=0;f=k[c+4>>2]|0;if((b|0)<=-1)Ka(12883,12899,54,12927);e=k[f+4>>2]|0;if(((k[f+8>>2]|0)-e>>2|0)<=(b|0))Ka(12937,12899,55,12927);e=k[e+(b<<2)>>2]|0;if((Va[k[(k[c>>2]|0)+8>>2]&127](c)|0)==1?(g=xe(c,a,b,d,Sk(j[c+24>>1]|0)|0)|0,g|0):0){d=g;return d|0}if((a|0)==-2){d=0;return d|0}g=Si(44)|0;k[g>>2]=3208;k[g+4>>2]=e;k[g+8>>2]=k[d>>2];c=g+12|0;b=d+4|0;k[c>>2]=k[b>>2];k[c+4>>2]=k[b+4>>2];k[c+8>>2]=k[b+8>>2];k[c+12>>2]=k[b+12>>2];k[c+16>>2]=k[b+16>>2];Xg(g+32|0,d+24|0);k[g>>2]=3272;d=g;return d|0}function Ef(a){a=a|0;Pk(a);Pk(a+16|0);Pk(a+32|0);Pk(a+48|0);Pk(a+64|0);Pk(a+80|0);Pk(a+96|0);Pk(a+112|0);Pk(a+128|0);Pk(a+144|0);Pk(a+160|0);Pk(a+176|0);Pk(a+192|0);Pk(a+208|0);Pk(a+224|0);Pk(a+240|0);Pk(a+256|0);Pk(a+272|0);Pk(a+288|0);Pk(a+304|0);Pk(a+320|0);Pk(a+336|0);Pk(a+352|0);Pk(a+368|0);Pk(a+384|0);Pk(a+400|0);Pk(a+416|0);Pk(a+432|0);Pk(a+448|0);Pk(a+464|0);Pk(a+480|0);Pk(a+496|0);return}function Ff(a,b){a=a|0;b=b|0;var c=0,d=0,e=0,f=0,g=0,h=0,i=0,j=0;i=a+8|0;d=k[i>>2]|0;j=a+4|0;g=k[j>>2]|0;e=g;if(d-g>>2>>>0>=b>>>0){c=b;d=e;while(1){k[d>>2]=1;c=c+-1|0;if(!c)break;else d=d+4|0}k[j>>2]=e+(b<<2);return}h=k[a>>2]|0;c=(g-h>>2)+b|0;if(c>>>0>1073741823)mk(a);f=d-h|0;d=f>>1;d=f>>2>>>0<536870911?(d>>>0>>0?c:d):1073741823;c=g-h>>2;do if(d)if(d>>>0>1073741823){j=Ma(4)|0;Tk(j);xa(j|0,856,71)}else{e=Si(d<<2)|0;break}else e=0;while(0);f=e+(c<<2)|0;e=e+(d<<2)|0;c=b;d=f;while(1){k[d>>2]=1;c=c+-1|0;if(!c)break;else d=d+4|0}c=g-h|0;d=f+(0-(c>>2)<<2)|0;if((c|0)>0)nh(d|0,h|0,c|0)|0;k[a>>2]=d;k[j>>2]=f+(b<<2);k[i>>2]=e;if(!h)return;gl(h);return}function Gf(a,b){a=a|0;b=b|0;var c=0,d=0,e=Pa;if((b|0)!=1){if(b+-1&b)b=bb(b)|0}else b=2;d=k[a+4>>2]|0;if(b>>>0>d>>>0){Ac(a,b);return}if(b>>>0>=d>>>0)return;e=da((k[a+12>>2]|0)>>>0);c=~~da(_(da(e/da(o[a+16>>2]))))>>>0;if(d>>>0>2&(d+-1&d|0)==0)c=1<<32-(ca(c+-1|0)|0);else c=bb(c)|0;b=b>>>0>>0?c:b;if(b>>>0>=d>>>0)return;Ac(a,b);return}function Hf(a,b){a=a|0;b=b|0;var c=0,d=0,e=Pa;if((b|0)!=1){if(b+-1&b)b=bb(b)|0}else b=2;d=k[a+4>>2]|0;if(b>>>0>d>>>0){Qc(a,b);return}if(b>>>0>=d>>>0)return;e=da((k[a+12>>2]|0)>>>0);c=~~da(_(da(e/da(o[a+16>>2]))))>>>0;if(d>>>0>2&(d+-1&d|0)==0)c=1<<32-(ca(c+-1|0)|0);else c=bb(c)|0;b=b>>>0>>0?c:b;if(b>>>0>=d>>>0)return;Qc(a,b);return}function If(a,b){a=a|0;b=b|0;var c=0,d=0,e=Pa;if((b|0)!=1){if(b+-1&b)b=bb(b)|0}else b=2;d=k[a+4>>2]|0;if(b>>>0>d>>>0){_c(a,b);return}if(b>>>0>=d>>>0)return;e=da((k[a+12>>2]|0)>>>0);c=~~da(_(da(e/da(o[a+16>>2]))))>>>0;if(d>>>0>2&(d+-1&d|0)==0)c=1<<32-(ca(c+-1|0)|0);else c=bb(c)|0;b=b>>>0>>0?c:b;if(b>>>0>=d>>>0)return;_c(a,b);return}function Jf(a,b){a=a|0;b=b|0;var c=0,d=0,e=Pa;if((b|0)!=1){if(b+-1&b)b=bb(b)|0}else b=2;d=k[a+4>>2]|0;if(b>>>0>d>>>0){td(a,b);return}if(b>>>0>=d>>>0)return;e=da((k[a+12>>2]|0)>>>0);c=~~da(_(da(e/da(o[a+16>>2]))))>>>0;if(d>>>0>2&(d+-1&d|0)==0)c=1<<32-(ca(c+-1|0)|0);else c=bb(c)|0;b=b>>>0>>0?c:b;if(b>>>0>=d>>>0)return;td(a,b);return}function Kf(a,b){a=a|0;b=b|0;var c=0,d=0,e=Pa;if((b|0)!=1){if(b+-1&b)b=bb(b)|0}else b=2;d=k[a+4>>2]|0;if(b>>>0>d>>>0){Bc(a,b);return}if(b>>>0>=d>>>0)return;e=da((k[a+12>>2]|0)>>>0);c=~~da(_(da(e/da(o[a+16>>2]))))>>>0;if(d>>>0>2&(d+-1&d|0)==0)c=1<<32-(ca(c+-1|0)|0);else c=bb(c)|0;b=b>>>0>>0?c:b;if(b>>>0>=d>>>0)return;Bc(a,b);return}function Lf(a,b){a=a|0;b=b|0;var c=0,d=0,e=Pa;if((b|0)!=1){if(b+-1&b)b=bb(b)|0}else b=2;d=k[a+4>>2]|0;if(b>>>0>d>>>0){Rc(a,b);return}if(b>>>0>=d>>>0)return;e=da((k[a+12>>2]|0)>>>0);c=~~da(_(da(e/da(o[a+16>>2]))))>>>0;if(d>>>0>2&(d+-1&d|0)==0)c=1<<32-(ca(c+-1|0)|0);else c=bb(c)|0;b=b>>>0>>0?c:b;if(b>>>0>=d>>>0)return;Rc(a,b);return}function Mf(a,b){a=a|0;b=b|0;var c=0,d=0,e=Pa;if((b|0)!=1){if(b+-1&b)b=bb(b)|0}else b=2;d=k[a+4>>2]|0;if(b>>>0>d>>>0){$c(a,b);return}if(b>>>0>=d>>>0)return;e=da((k[a+12>>2]|0)>>>0);c=~~da(_(da(e/da(o[a+16>>2]))))>>>0;if(d>>>0>2&(d+-1&d|0)==0)c=1<<32-(ca(c+-1|0)|0);else c=bb(c)|0;b=b>>>0>>0?c:b;if(b>>>0>=d>>>0)return;$c(a,b);return}function Nf(a,b){a=a|0;b=b|0;var c=0,d=0,e=Pa;if((b|0)!=1){if(b+-1&b)b=bb(b)|0}else b=2;d=k[a+4>>2]|0;if(b>>>0>d>>>0){ud(a,b);return}if(b>>>0>=d>>>0)return;e=da((k[a+12>>2]|0)>>>0);c=~~da(_(da(e/da(o[a+16>>2]))))>>>0;if(d>>>0>2&(d+-1&d|0)==0)c=1<<32-(ca(c+-1|0)|0);else c=bb(c)|0;b=b>>>0>>0?c:b;if(b>>>0>=d>>>0)return;ud(a,b);return}function Of(a,b){a=a|0;b=b|0;var c=0,d=0,e=Pa;if((b|0)!=1){if(b+-1&b)b=bb(b)|0}else b=2;d=k[a+4>>2]|0;if(b>>>0>d>>>0){Cc(a,b);return}if(b>>>0>=d>>>0)return;e=da((k[a+12>>2]|0)>>>0);c=~~da(_(da(e/da(o[a+16>>2]))))>>>0;if(d>>>0>2&(d+-1&d|0)==0)c=1<<32-(ca(c+-1|0)|0);else c=bb(c)|0;b=b>>>0>>0?c:b;if(b>>>0>=d>>>0)return;Cc(a,b);return}function Pf(a,b){a=a|0;b=b|0;var c=0,d=0,e=Pa;if((b|0)!=1){if(b+-1&b)b=bb(b)|0}else b=2;d=k[a+4>>2]|0;if(b>>>0>d>>>0){Sc(a,b);return}if(b>>>0>=d>>>0)return;e=da((k[a+12>>2]|0)>>>0);c=~~da(_(da(e/da(o[a+16>>2]))))>>>0;if(d>>>0>2&(d+-1&d|0)==0)c=1<<32-(ca(c+-1|0)|0);else c=bb(c)|0;b=b>>>0>>0?c:b;if(b>>>0>=d>>>0)return;Sc(a,b);return}function Qf(a,b){a=a|0;b=b|0;var c=0,d=0,e=Pa;if((b|0)!=1){if(b+-1&b)b=bb(b)|0}else b=2;d=k[a+4>>2]|0;if(b>>>0>d>>>0){ad(a,b);return}if(b>>>0>=d>>>0)return;e=da((k[a+12>>2]|0)>>>0);c=~~da(_(da(e/da(o[a+16>>2]))))>>>0;if(d>>>0>2&(d+-1&d|0)==0)c=1<<32-(ca(c+-1|0)|0);else c=bb(c)|0;b=b>>>0>>0?c:b;if(b>>>0>=d>>>0)return;ad(a,b);return}function Rf(a,b){a=a|0;b=b|0;var c=0,d=0,e=Pa;if((b|0)!=1){if(b+-1&b)b=bb(b)|0}else b=2;d=k[a+4>>2]|0;if(b>>>0>d>>>0){vd(a,b);return}if(b>>>0>=d>>>0)return;e=da((k[a+12>>2]|0)>>>0);c=~~da(_(da(e/da(o[a+16>>2]))))>>>0;if(d>>>0>2&(d+-1&d|0)==0)c=1<<32-(ca(c+-1|0)|0);else c=bb(c)|0;b=b>>>0>>0?c:b;if(b>>>0>=d>>>0)return;vd(a,b);return}function Sf(a,b,c,d,e){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;var f=0,g=0,h=0,i=0,j=0,l=0,m=0,n=0;n=r;r=r+32|0;i=n+16|0;j=n+8|0;l=n;m=k[b>>2]|0;h=k[a+8>>2]<<1;if((m|0)>(h|0))Ka(8241,8276,111,8382);f=k[b+4>>2]|0;if((f|0)>(h|0))Ka(8403,8276,112,8382);g=k[c+(e<<2)>>2]|0;if((g|0)>(h|0))Ka(8438,8276,113,8382);b=k[c+(e+1<<2)>>2]|0;if((b|0)>(h|0))Ka(8478,8276,114,8382);if((m|0)<=-1)Ka(8522,8276,116,8382);if((f|0)<=-1)Ka(8544,8276,117,8382);if((g|0)<=-1)Ka(8566,8276,118,8382);if((b|0)>-1){k[j>>2]=m;k[j+4>>2]=f;k[l>>2]=g;k[l+4>>2]=b;Zc(i,a,j,l);k[d>>2]=k[i>>2];k[d+4>>2]=k[i+4>>2];r=n;return}else Ka(8593,8276,119,8382)}function Tf(a,b){a=a|0;b=b|0;var c=0,d=0,e=Pa,f=0,g=0,h=0,j=0,l=0,m=0,n=0,o=0,p=0;p=r;r=r+16|0;m=p;n=a+8|0;j=i[(k[n>>2]|0)+24>>0]<<2;if(!b){r=p;return 1}o=a+16|0;l=a+20|0;e=da(da((1<>2])+-1|0)+da(-1.0));a=0;c=0;d=0;while(1){f=d|1;g=k[l>>2]|0;h=k[o>>2]|0;if(g-h>>2>>>0<=d>>>0){a=6;break}if(g-h>>2>>>0<=f>>>0){a=8;break}Qe(da(da(k[h+(d<<2)>>2]|0)/e),da(da(k[h+(f<<2)>>2]|0)/e),m);nh((k[k[(k[n>>2]|0)+64>>2]>>2]|0)+a|0,m|0,j|0)|0;c=c+1|0;if((c|0)==(b|0)){a=3;break}else{a=a+j|0;d=d+2|0}}if((a|0)==3){r=p;return 1}else if((a|0)==6)lk(o);else if((a|0)==8)lk(o);return 0}function Uf(a,b,c,d,e){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;var f=0,g=0,h=0,i=0,j=0,l=0,m=0,n=0;n=r;r=r+32|0;i=n+16|0;j=n+8|0;l=n;m=k[b>>2]|0;h=k[a+8>>2]<<1;if((m|0)>(h|0))Ka(8241,10873,107,8382);f=k[b+4>>2]|0;if((f|0)>(h|0))Ka(8403,10873,108,8382);g=k[c+(e<<2)>>2]|0;if((g|0)>(h|0))Ka(8438,10873,109,8382);b=k[c+(e+1<<2)>>2]|0;if((b|0)>(h|0))Ka(8478,10873,110,8382);if((m|0)<=-1)Ka(8522,10873,112,8382);if((f|0)<=-1)Ka(8544,10873,113,8382);if((g|0)<=-1)Ka(8566,10873,114,8382);if((b|0)>-1){k[i>>2]=g;k[i+4>>2]=b;k[l>>2]=m;k[l+4>>2]=f;de(j,a,l,i);k[d>>2]=k[j>>2];k[d+4>>2]=k[j+4>>2];r=n;return}else Ka(8593,10873,115,8382)}function Vf(a,b,c){a=a|0;b=b|0;c=c|0;var d=0,e=0,f=0,g=0;f=b&255;d=(c|0)!=0;a:do if(d&(a&3|0)!=0){e=b&255;while(1){if((i[a>>0]|0)==e<<24>>24){g=6;break a}a=a+1|0;c=c+-1|0;d=(c|0)!=0;if(!(d&(a&3|0)!=0)){g=5;break}}}else g=5;while(0);if((g|0)==5)if(d)g=6;else c=0;b:do if((g|0)==6){e=b&255;if((i[a>>0]|0)!=e<<24>>24){d=$(f,16843009)|0;c:do if(c>>>0>3)while(1){f=k[a>>2]^d;if((f&-2139062144^-2139062144)&f+-16843009|0)break;a=a+4|0;c=c+-4|0;if(c>>>0<=3){g=11;break c}}else g=11;while(0);if((g|0)==11)if(!c){c=0;break}while(1){if((i[a>>0]|0)==e<<24>>24)break b;a=a+1|0;c=c+-1|0;if(!c){c=0;break}}}}while(0);return (c|0?a:0)|0}function Wf(a,b){a=a|0;b=b|0;var c=0,d=0,e=0,f=0,g=0,h=0,i=0,j=0,l=0;i=r;r=r+32|0;f=i+16|0;c=i+8|0;d=i;g=a+8|0;if(k[g>>2]<<5>>>0>=b>>>0){r=i;return}k[f>>2]=0;h=f+4|0;k[h>>2]=0;e=f+8|0;k[e>>2]=0;if((b|0)<0)mk(f);l=((b+-1|0)>>>5)+1|0;j=Si(l<<2)|0;k[f>>2]=j;k[h>>2]=0;k[e>>2]=l;l=k[a>>2]|0;k[c>>2]=l;k[c+4>>2]=0;j=a+4|0;b=k[j>>2]|0;k[d>>2]=l+(b>>>5<<2);k[d+4>>2]=b&31;Ye(f,c,d);b=k[a>>2]|0;k[a>>2]=k[f>>2];k[f>>2]=b;f=k[j>>2]|0;k[j>>2]=k[h>>2];k[h>>2]=f;h=k[g>>2]|0;k[g>>2]=k[e>>2];k[e>>2]=h;if(b|0)gl(b);r=i;return}function Xf(a,b,c){a=a|0;b=b|0;c=c|0;var d=0,e=0,f=0,g=0,h=0,i=0,j=0,l=0,m=0,n=0,o=0;i=(k[b+4>>2]|0)-(k[b>>2]|0)|0;l=i>>2;j=a+8|0;d=k[(k[j>>2]|0)+40>>2]|0;m=dl((d|0)>-1?d:-1)|0;e=c+8|0;if((i|0)<=0){c=1;el(m);return c|0}f=c+16|0;b=0;a=0;while(1){o=e;n=k[o>>2]|0;o=k[o+4>>2]|0;h=f;g=k[h>>2]|0;h=Bj(g|0,k[h+4>>2]|0,d|0,0)|0;i=M;if((o|0)<(i|0)|(o|0)==(i|0)&n>>>0>>0){b=0;a=5;break}nh(m|0,(k[c>>2]|0)+g|0,d|0)|0;o=f;k[o>>2]=h;k[o+4>>2]=i;nh((k[k[(k[j>>2]|0)+64>>2]>>2]|0)+b|0,m|0,d|0)|0;a=a+1|0;if((a|0)>=(l|0)){b=1;a=5;break}else b=b+d|0}if((a|0)==5){el(m);return b|0}return 0}function Yf(a,b){a=a|0;b=b|0;var c=0,d=0,e=0,f=0,g=0,h=0,i=0;h=r;r=r+16|0;d=h;c=k[(k[a>>2]|0)+8>>2]|0;f=a+4|0;g=a+8|0;e=(k[g>>2]|0)-(k[f>>2]|0)>>2;i=k[b>>2]|0;k[b>>2]=0;k[d>>2]=i;Wa[c&7](a,e,d);e=k[d>>2]|0;k[d>>2]=0;if(!e){g=k[g>>2]|0;i=k[f>>2]|0;i=g-i|0;i=i>>2;i=i+-1|0;r=h;return i|0}a=k[e+68>>2]|0;b=a;if(a|0){c=e+72|0;d=k[c>>2]|0;if((d|0)!=(a|0))k[c>>2]=d+(~((d+-4-b|0)>>>2)<<2);gl(a)}i=e+64|0;a=k[i>>2]|0;k[i>>2]=0;if(a|0){b=k[a>>2]|0;if(b|0){c=a+4|0;if((k[c>>2]|0)!=(b|0))k[c>>2]=b;gl(b)}gl(a)}gl(e);g=k[g>>2]|0;i=k[f>>2]|0;i=g-i|0;i=i>>2;i=i+-1|0;r=h;return i|0}function Zf(a,b,c,d){a=a|0;b=b|0;c=c|0;d=d|0;var e=0,f=0,g=0;f=k[c+4>>2]|0;if((b|0)<=-1)Ka(12883,12899,54,12927);e=k[f+4>>2]|0;if(((k[f+8>>2]|0)-e>>2|0)<=(b|0))Ka(12937,12899,55,12927);e=k[e+(b<<2)>>2]|0;if((Va[k[(k[c>>2]|0)+8>>2]&127](c)|0)==1?(g=ic(c,a,b,d,Sk(j[c+24>>1]|0)|0)|0,g|0):0){d=g;return d|0}if((a|0)==-2){d=0;return d|0}g=Si(20)|0;k[g+4>>2]=e;c=g+8|0;k[c>>2]=k[d>>2];k[c+4>>2]=k[d+4>>2];k[c+8>>2]=k[d+8>>2];k[g>>2]=3960;d=g;return d|0}function _f(a,b){a=a|0;b=b|0;var c=0,d=0,e=0,f=0,g=0,h=0;f=r;r=r+16|0;c=f+4|0;d=f;e=f+8|0;i[e>>0]=a&127;if(a>>>0>127){i[e>>0]=a|128;g=b+16|0;h=k[g+4>>2]|0;if(!((h|0)>0|(h|0)==0&(k[g>>2]|0)>>>0>0)){k[d>>2]=k[b+4>>2];k[c>>2]=k[d>>2];je(b,c,e,e+1|0)|0}_f(a>>>7,b);r=f;return}else{h=b+16|0;g=k[h+4>>2]|0;if(!((g|0)>0|(g|0)==0&(k[h>>2]|0)>>>0>0)){k[d>>2]=k[b+4>>2];k[c>>2]=k[d>>2];je(b,c,e,e+1|0)|0}r=f;return}}function $f(a,b,c,d){a=a|0;b=b|0;c=c|0;d=d|0;var e=0,f=0,g=0;f=k[c+4>>2]|0;if((b|0)<=-1)Ka(12883,12899,54,12927);e=k[f+4>>2]|0;if(((k[f+8>>2]|0)-e>>2|0)<=(b|0))Ka(12937,12899,55,12927);e=k[e+(b<<2)>>2]|0;if((Va[k[(k[c>>2]|0)+8>>2]&127](c)|0)==1?(g=jc(c,a,b,d,Sk(j[c+24>>1]|0)|0)|0,g|0):0){d=g;return d|0}if((a|0)==-2){d=0;return d|0}g=Si(20)|0;k[g+4>>2]=e;c=g+8|0;k[c>>2]=k[d>>2];k[c+4>>2]=k[d+4>>2];k[c+8>>2]=k[d+8>>2];k[g>>2]=4536;d=g;return d|0}function ag(a,b){a=a|0;b=b|0;var c=0,d=0,e=0,f=0;if((Va[k[(k[b>>2]|0)+20>>2]&127](b)|0)<=0){b=1;return b|0}f=a+4|0;a=0;while(1){c=k[(k[f>>2]|0)+4>>2]|0;c=qi(c,Za[k[(k[b>>2]|0)+24>>2]&63](b,a)|0)|0;if((c|0)==-1){a=0;c=10;break}d=k[(k[f>>2]|0)+4>>2]|0;if((c|0)<=-1){c=6;break}e=k[d+4>>2]|0;if(((k[d+8>>2]|0)-e>>2|0)<=(c|0)){c=8;break}a=a+1|0;if(!(Za[k[(k[b>>2]|0)+28>>2]&63](b,k[e+(c<<2)>>2]|0)|0)){a=0;c=10;break}if((a|0)>=(Va[k[(k[b>>2]|0)+20>>2]&127](b)|0)){a=1;c=10;break}}if((c|0)==6)Ka(12883,12899,62,12927);else if((c|0)==8)Ka(12937,12899,63,12927);else if((c|0)==10)return a|0;return 0}function bg(a,b){a=a|0;b=b|0;var c=0,d=0,e=0,f=0,g=0;g=a+4|0;c=k[g>>2]|0;d=k[a>>2]|0;e=c-d>>2;if(e>>>0>>0){Ae(a,b-e|0);return}if(e>>>0<=b>>>0)return;f=d+(b<<2)|0;if((c|0)==(f|0))return;do{d=c+-4|0;k[g>>2]=d;e=k[d>>2]|0;k[d>>2]=0;if(e|0){c=k[e+68>>2]|0;a=c;if(c|0){b=e+72|0;d=k[b>>2]|0;if((d|0)!=(c|0))k[b>>2]=d+(~((d+-4-a|0)>>>2)<<2);gl(c)}d=e+64|0;c=k[d>>2]|0;k[d>>2]=0;if(c|0){a=k[c>>2]|0;if(a|0){b=c+4|0;if((k[b>>2]|0)!=(a|0))k[b>>2]=a;gl(a)}gl(c)}gl(e)}c=k[g>>2]|0}while((c|0)!=(f|0));return}function cg(a,b,c){a=a|0;b=b|0;c=c|0;var d=0,e=0,f=0;e=r;r=r+16|0;d=e;switch(c|0){case 2:{f=k[a+12>>2]|0;c=k[a+4>>2]|0;k[d>>2]=0;k[d+4>>2]=0;k[d+8>>2]=0;d=$f(b,f,c,d)|0;r=e;return d|0}case 3:{c=k[a+12>>2]|0;f=k[a+4>>2]|0;k[d>>2]=0;k[d+4>>2]=0;k[d+8>>2]=0;f=Zf(b,c,f,d)|0;r=e;return f|0}default:{f=0;r=e;return f|0}}return 0}function dg(a,b){a=a|0;b=b|0;var c=0,d=0,e=0,f=0,g=0,h=0,i=0;h=r;r=r+16|0;e=h+4|0;g=h;c=a+12|0;d=b+16|0;f=d;i=k[f+4>>2]|0;if((i|0)>0|(i|0)==0&(k[f>>2]|0)>>>0>0){r=h;return 1}f=b+4|0;k[g>>2]=k[f>>2];k[e>>2]=k[g>>2];je(b,e,c,c+4|0)|0;i=d;d=k[i+4>>2]|0;a=a+16|0;if((d|0)>0|(d|0)==0&(k[i>>2]|0)>>>0>0){r=h;return 1}k[g>>2]=k[f>>2];k[e>>2]=k[g>>2];je(b,e,a,a+4|0)|0;r=h;return 1}function eg(a,b){a=a|0;b=b|0;var c=0,d=0,e=0,f=0,g=0,h=0,i=0,j=0,l=0;j=a+8|0;d=k[j>>2]|0;l=a+4|0;h=k[l>>2]|0;if(d-h>>2>>>0>=b>>>0){Ah(h|0,0,b<<2|0)|0;k[l>>2]=h+(b<<2);return}i=k[a>>2]|0;c=(h-i>>2)+b|0;if(c>>>0>1073741823)mk(a);g=d-i|0;f=g>>1;f=g>>2>>>0<536870911?(f>>>0>>0?c:f):1073741823;c=h-i>>2;do if(f)if(f>>>0>1073741823){l=Ma(4)|0;Tk(l);xa(l|0,856,71)}else{g=Si(f<<2)|0;break}else g=0;while(0);e=g+(c<<2)|0;Ah(e|0,0,b<<2|0)|0;c=h-i|0;d=e+(0-(c>>2)<<2)|0;if((c|0)>0)nh(d|0,i|0,c|0)|0;k[a>>2]=d;k[l>>2]=e+(b<<2);k[j>>2]=g+(f<<2);if(!i)return;gl(i);return}function fg(a){a=a|0;var b=0,c=0,d=0,e=0;k[a>>2]=2980;b=k[a+52>>2]|0;c=b;if(b|0){d=a+56|0;e=k[d>>2]|0;if((e|0)!=(b|0))k[d>>2]=e+(~((e+-4-c|0)>>>2)<<2);gl(b)}b=k[a+40>>2]|0;c=b;if(b|0){d=a+44|0;e=k[d>>2]|0;if((e|0)!=(b|0))k[d>>2]=e+(~((e+-4-c|0)>>>2)<<2);gl(b)}b=k[a+28>>2]|0;c=b;if(b|0){d=a+32|0;e=k[d>>2]|0;if((e|0)!=(b|0))k[d>>2]=e+(~((e+-4-c|0)>>>2)<<2);gl(b)}b=k[a+16>>2]|0;if(!b){a=a+4|0;ng(a);return}c=a+20|0;d=k[c>>2]|0;if((d|0)!=(b|0))k[c>>2]=d+(~((d+-4-b|0)>>>2)<<2);gl(b);a=a+4|0;ng(a);return}function gg(a){a=a|0;var b=0,c=0,d=0,e=0,f=0;k[a>>2]=5112;e=a+48|0;b=k[e>>2]|0;k[e>>2]=0;if(b|0)Ta[k[(k[b>>2]|0)+4>>2]&127](b);e=k[a+36>>2]|0;b=e;if(e|0){c=a+40|0;d=k[c>>2]|0;if((d|0)!=(e|0))k[c>>2]=d+(~((d+-4-b|0)>>>2)<<2);gl(e)}d=a+24|0;b=k[d>>2]|0;if(b|0){e=a+28|0;c=k[e>>2]|0;if((c|0)!=(b|0)){do{f=c+-4|0;k[e>>2]=f;c=k[f>>2]|0;k[f>>2]=0;if(c|0)Ta[k[(k[c>>2]|0)+4>>2]&127](c);c=k[e>>2]|0}while((c|0)!=(b|0));b=k[d>>2]|0}gl(b)}k[a>>2]=3048;d=k[a+4>>2]|0;if(!d)return;b=a+8|0;c=k[b>>2]|0;if((c|0)!=(d|0))k[b>>2]=c+(~((c+-4-d|0)>>>2)<<2);gl(d);return}function hg(a,b){a=a|0;b=b|0;var c=0,d=0,e=0,f=0,g=0,h=0,j=0;h=a+8|0;e=k[h>>2]|0;j=a+4|0;c=k[j>>2]|0;if((e-c|0)>>>0>=b>>>0){do{i[c>>0]=0;c=(k[j>>2]|0)+1|0;k[j>>2]=c;b=b+-1|0}while((b|0)!=0);return}f=k[a>>2]|0;d=c-f+b|0;if((d|0)<0)mk(a);e=e-f|0;g=e<<1;d=e>>>0<1073741823?(g>>>0>>0?d:g):2147483647;if(!d)e=0;else e=Si(d)|0;g=e+(c-f)|0;f=e+d|0;e=g;c=g;do{i[c>>0]=0;c=e+1|0;e=c;b=b+-1|0}while((b|0)!=0);b=k[a>>2]|0;d=(k[j>>2]|0)-b|0;c=g+(0-d)|0;if((d|0)>0)nh(c|0,b|0,d|0)|0;k[a>>2]=c;k[j>>2]=e;k[h>>2]=f;if(!b)return;gl(b);return}function ig(){var a=0,b=0,c=0,d=0,e=0,f=0,g=0,h=0;e=r;r=r+48|0;g=e+32|0;c=e+24|0;h=e+16|0;f=e;e=e+36|0;a=Oi()|0;if(a|0?(d=k[a>>2]|0,d|0):0){a=d+48|0;b=k[a>>2]|0;a=k[a+4>>2]|0;if(!((b&-256|0)==1126902528&(a|0)==1129074247)){k[c>>2]=k[1445];jj(16228,c)}if((b|0)==1126902529&(a|0)==1129074247)a=k[d+44>>2]|0;else a=d+80|0;k[e>>2]=a;d=k[d>>2]|0;a=k[d+4>>2]|0;if(Ra[k[(k[198]|0)+16>>2]&31](792,d,e)|0){h=k[e>>2]|0;e=k[1445]|0;h=Va[k[(k[h>>2]|0)+8>>2]&127](h)|0;k[f>>2]=e;k[f+4>>2]=a;k[f+8>>2]=h;jj(16142,f)}else{k[h>>2]=k[1445];k[h+4>>2]=a;jj(16187,h)}}jj(16266,g)}function jg(a,b,c){a=a|0;b=b|0;c=c|0;var d=0,e=0,f=0,g=0;d=c+16|0;e=k[d>>2]|0;if(!e)if(!(Sh(c)|0)){d=k[d>>2]|0;f=5}else d=0;else{d=e;f=5}a:do if((f|0)==5){g=c+20|0;f=k[g>>2]|0;e=f;if((d-f|0)>>>0>>0){d=Ra[k[c+36>>2]&31](c,a,b)|0;break}b:do if((i[c+75>>0]|0)>-1){d=b;while(1){if(!d){f=b;d=0;break b}f=d+-1|0;if((i[a+f>>0]|0)==10)break;else d=f}if((Ra[k[c+36>>2]&31](c,a,d)|0)>>>0>>0)break a;f=b-d|0;a=a+d|0;e=k[g>>2]|0}else{f=b;d=0}while(0);nh(e|0,a|0,f|0)|0;k[g>>2]=(k[g>>2]|0)+f;d=d+f|0}while(0);return d|0}function kg(a,b){a=a|0;b=b|0;var c=0,d=0,e=0,f=0,g=0,h=0,i=0;i=Si(24)|0;gk(i);h=a+8|0;f=a+12|0;a=k[f>>2]|0;d=k[h>>2]|0;e=a-d>>2;do if((e|0)<=(b|0)){c=b+1|0;if(c>>>0>e>>>0){Se(h,c-e|0);break}if(c>>>0>>0?(g=d+(c<<2)|0,(a|0)!=(g|0)):0)do{e=a+-4|0;k[f>>2]=e;a=k[e>>2]|0;k[e>>2]=0;if(a|0)Ta[k[(k[a>>2]|0)+4>>2]&127](a);a=k[f>>2]|0}while((a|0)!=(g|0))}while(0);h=(k[h>>2]|0)+(b<<2)|0;a=k[h>>2]|0;k[h>>2]=i;if(!a)return 1;Ta[k[(k[a>>2]|0)+4>>2]&127](a);return 1}function lg(a,b){a=a|0;b=b|0;var c=0,d=0,e=0,f=0,g=0,h=0,i=0,j=0;h=a+8|0;i=k[a>>2]|0;g=i;if((((k[h>>2]|0)-i|0)/12|0)>>>0>=b>>>0)return;j=a+4|0;d=k[j>>2]|0;c=(d-i|0)/12|0;do if(b)if(b>>>0>357913941){j=Ma(4)|0;Tk(j);xa(j|0,856,71)}else{e=Si(b*12|0)|0;break}else e=0;while(0);c=e+(c*12|0)|0;f=c;b=e+(b*12|0)|0;if((d|0)==(g|0))c=f;else do{e=d;d=d+-12|0;k[c+-12>>2]=k[d>>2];k[c+-8>>2]=k[e+-8>>2];k[c+-4>>2]=k[e+-4>>2];c=c+-12|0}while((d|0)!=(g|0));k[a>>2]=c;k[j>>2]=f;k[h>>2]=b;if(!i)return;gl(i);return}function mg(a){a=a|0;var b=0,c=0,d=0,e=0,f=0,g=0,h=0;g=k[a+4>>2]|0;h=a+8|0;b=k[h>>2]|0;if((b|0)!=(g|0))do{e=b+-4|0;k[h>>2]=e;f=k[e>>2]|0;k[e>>2]=0;if(f|0){b=k[f+68>>2]|0;c=b;if(b|0){d=f+72|0;e=k[d>>2]|0;if((e|0)!=(b|0))k[d>>2]=e+(~((e+-4-c|0)>>>2)<<2);gl(b)}e=f+64|0;b=k[e>>2]|0;k[e>>2]=0;if(b|0){c=k[b>>2]|0;if(c|0){d=b+4|0;if((k[d>>2]|0)!=(c|0))k[d>>2]=c;gl(c)}gl(b)}gl(f)}b=k[h>>2]|0}while((b|0)!=(g|0));b=k[a>>2]|0;if(!b)return;gl(b);return}function ng(a){a=a|0;var b=0,c=0,d=0,e=0,f=0,g=0,h=0;b=k[a>>2]|0;if(!b)return;h=a+4|0;c=k[h>>2]|0;if((c|0)!=(b|0)){do{f=c+-4|0;k[h>>2]=f;g=k[f>>2]|0;k[f>>2]=0;if(g|0){c=k[g+68>>2]|0;d=c;if(c|0){e=g+72|0;f=k[e>>2]|0;if((f|0)!=(c|0))k[e>>2]=f+(~((f+-4-d|0)>>>2)<<2);gl(c)}f=g+64|0;c=k[f>>2]|0;k[f>>2]=0;if(c|0){d=k[c>>2]|0;if(d|0){e=c+4|0;if((k[e>>2]|0)!=(d|0))k[e>>2]=d;gl(d)}gl(c)}gl(g)}c=k[h>>2]|0}while((c|0)!=(b|0));b=k[a>>2]|0}gl(b);return}function og(a,b,c){a=a|0;b=b|0;c=c|0;var d=0,e=0;e=r;r=r+16|0;d=e;k[a+20>>2]=b;k[a+4>>2]=c;if(!(be(b,d)|0)){d=0;r=e;return d|0}c=l[d+7>>0]|0;if((c|0)!=(Va[k[(k[a>>2]|0)+8>>2]&127](a)|0)){d=0;r=e;return d|0}c=i[d+5>>0]|0;i[a+24>>0]=c;d=i[d+6>>0]|0;i[a+25>>0]=d;if(c<<24>>24!=1|(d&255)>2){d=0;r=e;return d|0}if(!(Va[k[(k[a>>2]|0)+12>>2]&127](a)|0)){d=0;r=e;return d|0}if(!(Va[k[(k[a>>2]|0)+20>>2]&127](a)|0)){d=0;r=e;return d|0}d=Va[k[(k[a>>2]|0)+24>>2]&127](a)|0;r=e;return d|0}function pg(a,b){a=a|0;b=b|0;var c=0,d=0,e=0,f=0,g=0,h=0,i=0,j=0;h=a+4|0;e=k[h>>2]|0;i=k[a>>2]|0;c=(e-i>>2)+1|0;if(c>>>0>1073741823)mk(a);j=a+8|0;g=(k[j>>2]|0)-i|0;f=g>>1;f=g>>2>>>0<536870911?(f>>>0>>0?c:f):1073741823;c=e-i>>2;do if(f)if(f>>>0>1073741823){j=Ma(4)|0;Tk(j);xa(j|0,856,71)}else{g=Si(f<<2)|0;break}else g=0;while(0);d=g+(c<<2)|0;k[d>>2]=k[b>>2];c=e-i|0;b=d+(0-(c>>2)<<2)|0;if((c|0)>0)nh(b|0,i|0,c|0)|0;k[a>>2]=b;k[h>>2]=d+4;k[j>>2]=g+(f<<2);if(!i)return;gl(i);return}function qg(a){a=a|0;var b=0,c=0,d=0,e=0,f=0,g=0,h=0,i=0;i=a+4|0;h=k[i>>2]|0;d=a+8|0;a=k[d>>2]|0;e=h+4|0;c=k[e>>2]|0;b=k[h>>2]|0;f=c-b>>2;if(a>>>0<=f>>>0){if(a>>>0>>0?(g=b+(a<<2)|0,(c|0)!=(g|0)):0)k[e>>2]=c+(~((c+-4-g|0)>>>2)<<2)}else{eg(h,a-f|0);a=k[d>>2]|0}if((a|0)>0)c=0;else return 1;while(1){d=k[i>>2]|0;b=k[d>>2]|0;if((k[d+4>>2]|0)-b>>2>>>0<=c>>>0){a=10;break}k[b+(c<<2)>>2]=c;c=c+1|0;if((c|0)>=(a|0)){a=7;break}}if((a|0)==7)return 1;else if((a|0)==10)lk(d);return 0}function rg(a,b,c,d){a=a|0;b=b|0;c=c|0;d=d|0;var e=0,f=0,g=0,h=0,j=0;if((a|0)<0){d=0;return d|0}if(!a){d=1;return d|0}h=c+8|0;j=k[h+4>>2]|0;e=c+16|0;g=e;f=k[g>>2]|0;g=k[g+4>>2]|0;if(!((j|0)>(g|0)|((j|0)==(g|0)?(k[h>>2]|0)>>>0>f>>>0:0))){j=0;return j|0}j=i[(k[c>>2]|0)+f>>0]|0;g=Bj(f|0,g|0,1,0)|0;h=e;k[h>>2]=g;k[h+4>>2]=M;switch(j<<24>>24){case 0:{j=cc(a,b,c,d)|0;return j|0}case 1:{j=Dd(a,c,d)|0;return j|0}default:{j=0;return j|0}}return 0}function sg(a,b){a=a|0;b=b|0;var c=0,d=0,e=0;c=k[a>>2]|0;if(b){e=c+8|0;b=e;b=Bj(k[b>>2]|0,k[b+4>>2]|0,1,0)|0;k[e>>2]=b;k[e+4>>2]=M;e=a+28|0;b=k[e>>2]|0;d=a+24|0;k[d>>2]=k[d>>2]|1<>2]|0,k[e+4>>2]|0,1,0)|0;b=c;k[b>>2]=e;k[b+4>>2]=M;b=a+28|0;e=b;b=k[b>>2]|0}d=b+1|0;k[e>>2]=d;if((d|0)!=32)return;b=a+24|0;c=a+16|0;d=k[c>>2]|0;if((d|0)==(k[a+20>>2]|0))pg(a+12|0,b);else{k[d>>2]=k[b>>2];k[c>>2]=d+4}k[e>>2]=0;k[b>>2]=0;return}function tg(a){a=a|0;var b=0,c=0,d=0,e=0,f=0,g=0,h=0;h=r;r=r+64|0;g=h;b=h+40|0;c=g;d=a;e=c+40|0;do{k[c>>2]=k[d>>2];c=c+4|0;d=d+4|0}while((c|0)<(e|0));if((be(g,b)|0?(i[b+7>>0]|0)==0:0)?(f=Sg(i[b+8>>0]|0)|0,(f|0)!=0):0){d=Si(68)|0;oj(d);b=og(f,a,d)|0;c=b?0:d;if(!b)Ta[k[(k[c>>2]|0)+4>>2]&127](c);Ta[k[(k[f>>2]|0)+4>>2]&127](f);b=b?d:0}else b=0;jl(g+24|0);r=h;return b|0}function ug(a,b,c){a=a|0;b=b|0;c=c|0;var d=0,e=0,f=0,g=0;g=r;r=r+48|0;f=g;if((c|0)!=1){f=0;r=g;return f|0}e=k[a+12>>2]|0;c=k[a+4>>2]|0;a=f;d=a+36|0;do{k[a>>2]=0;a=a+4|0}while((a|0)<(d|0));b=Df(b,e,c,f)|0;d=k[f+24>>2]|0;e=d;if(d|0){c=f+28|0;a=k[c>>2]|0;if((a|0)!=(d|0))k[c>>2]=a+(~((a+-4-e|0)>>>2)<<2);gl(d)}f=b;r=g;return f|0}function vg(a){a=a|0;jl(a+496|0);jl(a+480|0);jl(a+464|0);jl(a+448|0);jl(a+432|0);jl(a+416|0);jl(a+400|0);jl(a+384|0);jl(a+368|0);jl(a+352|0);jl(a+336|0);jl(a+320|0);jl(a+304|0);jl(a+288|0);jl(a+272|0);jl(a+256|0);jl(a+240|0);jl(a+224|0);jl(a+208|0);jl(a+192|0);jl(a+176|0);jl(a+160|0);jl(a+144|0);jl(a+128|0);jl(a+112|0);jl(a+96|0);jl(a+80|0);jl(a+64|0);jl(a+48|0);jl(a+32|0);jl(a+16|0);jl(a);return}function wg(a,b,c,d,e){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;i[b+53>>0]=1;do if((k[b+4>>2]|0)==(d|0)){i[b+52>>0]=1;a=b+16|0;d=k[a>>2]|0;if(!d){k[a>>2]=c;k[b+24>>2]=e;k[b+36>>2]=1;if(!((e|0)==1?(k[b+48>>2]|0)==1:0))break;i[b+54>>0]=1;break}if((d|0)!=(c|0)){e=b+36|0;k[e>>2]=(k[e>>2]|0)+1;i[b+54>>0]=1;break}d=b+24|0;a=k[d>>2]|0;if((a|0)==2){k[d>>2]=e;a=e}if((a|0)==1?(k[b+48>>2]|0)==1:0)i[b+54>>0]=1}while(0);return}function xg(a,b,c){a=a|0;b=b|0;c=c|0;var d=0,e=0;Ie(a,b,c);d=k[a+84>>2]|0;c=k[a+80>>2]|0;e=c;if((d-c|0)<=0)return;b=k[b>>2]|0;a=(d-c|0)/12|0;c=0;do{d=e+(c*12|0)|0;k[d>>2]=k[b+(k[d>>2]<<2)>>2];d=e+(c*12|0)+4|0;k[d>>2]=k[b+(k[d>>2]<<2)>>2];d=e+(c*12|0)+8|0;k[d>>2]=k[b+(k[d>>2]<<2)>>2];c=c+1|0}while((c|0)<(a|0));return}function yg(a,b,c,d){a=a|0;b=b|0;c=c|0;d=d|0;var e=0,f=0,g=0;if((d|0)<0){c=0;return c|0}do if(!b){b=a+4|0;d=k[b>>2]|0;e=k[a>>2]|0;f=d-e|0;if(c>>>0>f>>>0){hg(a,c-f|0);break}if(c>>>0>>0?(g=e+c|0,(d|0)!=(g|0)):0)k[b>>2]=g}else Oe(a,b,b+c|0);while(0);c=a+24|0;g=c;g=Bj(k[g>>2]|0,k[g+4>>2]|0,1,0)|0;k[c>>2]=g;k[c+4>>2]=M;c=1;return c|0}function zg(a,b){a=a|0;b=b|0;var c=0,d=0,e=0,f=0,g=0;f=a+64|0;if((k[f>>2]|0)==0?(e=Si(32)|0,Yi(e),d=k[f>>2]|0,k[f>>2]=e,d|0):0){e=k[d>>2]|0;if(e|0){c=d+4|0;if((k[c>>2]|0)!=(e|0))k[c>>2]=e;gl(e)}gl(d)}c=ki(k[a+28>>2]|0)|0;c=$(i[a+24>>0]|0,c)|0;d=((c|0)<0)<<31>>31;g=k[f>>2]|0;e=Pi(c|0,d|0,b|0,0)|0;if(!(yg(g,0,e,M)|0)){g=0;return g|0}jh(a,k[f>>2]|0,c,d,0,0);k[a+80>>2]=b;g=1;return g|0}function Ag(a,b,c,d,e){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;var f=0,g=0;if(b>>>0<64){g=(k[d>>2]|0)>>>0>(k[d+4>>2]|0)>>>0&1;g=(k[d+(g<<2)>>2]|0)>>>0>(k[d+8>>2]|0)>>>0?2:g;return g|0}f=a+836|0;g=k[f>>2]|0;c=32-g|0;d=a+832|0;e=k[d>>2]|0;b=k[e>>2]<>2]=g;f=e+4|0;k[d>>2]=f;g=32-g|0;g=(k[f>>2]|0)>>>g|b>>>(g-c|0);return g|0}b=b>>>28;g=g+4|0;k[f>>2]=g;if((g|0)!=32){g=b;return g|0}k[d>>2]=e+4;k[f>>2]=0;g=b;return g|0}function Bg(a,b,c,d,e){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;var f=0,g=0;if(b>>>0<64){g=(k[d>>2]|0)>>>0>(k[d+4>>2]|0)>>>0&1;g=(k[d+(g<<2)>>2]|0)>>>0>(k[d+8>>2]|0)>>>0?2:g;return g|0}f=a+572|0;g=k[f>>2]|0;c=32-g|0;d=a+568|0;e=k[d>>2]|0;b=k[e>>2]<>2]=g;f=e+4|0;k[d>>2]=f;g=32-g|0;g=(k[f>>2]|0)>>>g|b>>>(g-c|0);return g|0}b=b>>>28;g=g+4|0;k[f>>2]=g;if((g|0)!=32){g=b;return g|0}k[d>>2]=e+4;k[f>>2]=0;g=b;return g|0}function Cg(a,b,c,d,e){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;var f=0,g=0;do if((a|0)==(k[b+8>>2]|0)){if((k[b+4>>2]|0)==(c|0)?(f=b+28|0,(k[f>>2]|0)!=1):0)k[f>>2]=d}else if((a|0)==(k[b>>2]|0)){if((k[b+16>>2]|0)!=(c|0)?(g=b+20|0,(k[g>>2]|0)!=(c|0)):0){k[b+32>>2]=d;k[g>>2]=c;e=b+40|0;k[e>>2]=(k[e>>2]|0)+1;if((k[b+36>>2]|0)==1?(k[b+24>>2]|0)==2:0)i[b+54>>0]=1;k[b+44>>2]=4;break}if((d|0)==1)k[b+32>>2]=1}while(0);return}function Dg(a,b,c){a=a|0;b=b|0;c=c|0;var d=0,e=0,f=0,g=0,h=0;g=c+8|0;h=k[g+4>>2]|0;d=c+16|0;f=d;e=k[f>>2]|0;f=k[f+4>>2]|0;if(!((h|0)>(f|0)|((h|0)==(f|0)?(k[g>>2]|0)>>>0>e>>>0:0))){h=0;return h|0}h=i[(k[c>>2]|0)+e>>0]|0;f=Bj(e|0,f|0,1,0)|0;g=d;k[g>>2]=f;k[g+4>>2]=M;k[a+32>>2]=h&255;h=Yc(a,b,c)|0;return h|0}function Eg(a){a=a|0;var b=0,c=0,d=0,e=0,f=0;f=r;r=r+16|0;d=f;e=d;k[e>>2]=0;k[e+4>>2]=0;De(a,2,d);d=k[a+12>>2]|0;e=a+16|0;b=k[e>>2]|0;c=d;if((b|0)==(d|0))b=d;else{b=b+(~((b+-4-c|0)>>>2)<<2)|0;k[e>>2]=b}k[a+24>>2]=0;k[a+28>>2]=0;if(d|0){if((b|0)!=(d|0))k[e>>2]=b+(~((b+-4-c|0)>>>2)<<2);gl(d)}d=k[a>>2]|0;if(!d){r=f;return}b=a+4|0;c=k[b>>2]|0;if((c|0)!=(d|0))k[b>>2]=c+(~((c+-8-d|0)>>>3)<<3);gl(d);r=f;return}function Fg(a,b,c,d,e,f){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;f=f|0;var g=0,h=0,i=0;g=a+8|0;k[g>>2]=e;f=e>>>0>1073741823?-1:e<<2;h=dl(f)|0;Ah(h|0,0,f|0)|0;Sf(g,h,b,c,0);if((e|0)>=(d|0)){el(h);return 1}f=0-e|0;a=e;do{i=c+(a<<2)|0;Sf(g,i+(f<<2)|0,b,i,a);a=a+e|0}while((a|0)<(d|0));el(h);return 1}function Gg(a,b,c){a=a|0;b=b|0;c=c|0;var d=0,e=0,f=0,g=0,h=0,i=0,j=0,m=0;if((b|0)>=33)Ka(13428,5982,53,13480);if((b|0)<=0)Ka(13509,5982,54,13480);g=a+8|0;h=a+4|0;f=0-(l[a+12>>0]|0)&255;e=0;d=k[g>>2]|0;do{if(d>>>0<4096){i=(k[h>>2]|0)+-1|0;k[h>>2]=i;d=l[(k[a>>2]|0)+i>>0]|0|d<<8;k[g>>2]=d}m=d&255;j=$(d>>>8,f)|0;i=m>>>0>>0;d=i?j+m|0:d-f-j|0;k[g>>2]=d;e=i&1|e<<1;b=b+-1|0}while((b|0)!=0);k[c>>2]=e;return}function Hg(a,b,c){a=a|0;b=b|0;c=c|0;do if(a){if(b>>>0<128){i[a>>0]=b;a=1;break}if(b>>>0<2048){i[a>>0]=b>>>6|192;i[a+1>>0]=b&63|128;a=2;break}if(b>>>0<55296|(b&-8192|0)==57344){i[a>>0]=b>>>12|224;i[a+1>>0]=b>>>6&63|128;i[a+2>>0]=b&63|128;a=3;break}if((b+-65536|0)>>>0<1048576){i[a>>0]=b>>>18|240;i[a+1>>0]=b>>>12&63|128;i[a+2>>0]=b>>>6&63|128;i[a+3>>0]=b&63|128;a=4;break}else{a=Dj()|0;k[a>>2]=84;a=-1;break}}else a=1;while(0);return a|0}function Ig(a,b,c){a=a|0;b=b|0;c=c|0;var d=0,e=0,f=0,g=0;g=r;r=r+64|0;e=g;if((a|0)!=(b|0))if((b|0)!=0?(f=uf(b,816,800,0)|0,(f|0)!=0):0){b=e+4|0;d=b+52|0;do{k[b>>2]=0;b=b+4|0}while((b|0)<(d|0));k[e>>2]=f;k[e+8>>2]=a;k[e+12>>2]=-1;k[e+48>>2]=1;_a[k[(k[f>>2]|0)+28>>2]&3](f,e,k[c>>2]|0,1);if((k[e+24>>2]|0)==1){k[c>>2]=k[e+16>>2];b=1}else b=0}else b=0;else b=1;r=g;return b|0}function Jg(a,b,c,d,e,f,g,h,j,l){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;f=f|0;g=g|0;h=h|0;j=j|0;l=l|0;var m=0,n=0,o=0;k[a>>2]=c;if(c|0){o=c+16|0;m=k[o+4>>2]|0;n=a+8|0;k[n>>2]=k[o>>2];k[n+4>>2]=m;n=c+24|0;m=k[n+4>>2]|0;c=a+16|0;k[c>>2]=k[n>>2];k[c+4>>2]=m}i[a+24>>0]=d;k[a+28>>2]=e;i[a+32>>0]=f&1;o=a+40|0;k[o>>2]=g;k[o+4>>2]=h;o=a+48|0;k[o>>2]=j;k[o+4>>2]=l;k[a+56>>2]=b;return}function Kg(a,b,c,d,e,f){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;f=f|0;var g=0,h=0,i=0;g=a+8|0;k[g>>2]=e;f=e>>>0>1073741823?-1:e<<2;h=dl(f)|0;Ah(h|0,0,f|0)|0;Uf(g,h,b,c,0);if((e|0)>=(d|0)){el(h);return 1}f=0-e|0;a=e;do{i=c+(a<<2)|0;Uf(g,i+(f<<2)|0,b,i,a);a=a+e|0}while((a|0)<(d|0));el(h);return 1}function Lg(a,b,c,d,e,f){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;f=f|0;var g=0;g=a+8|0;k[g>>2]=e;a=d-e|0;if((a|0)>0){f=0-e|0;do{d=b+(a<<2)|0;ue(g,d,d+(f<<2)|0,c,a);a=a-e|0}while((a|0)>0)}d=e>>>0>1073741823?-1:e<<2;e=dl(d)|0;Ah(e|0,0,d|0)|0;ue(g,b,e,c,0);el(e);return 1}function Mg(a){a=a|0;var b=0,c=0,d=0,e=0,f=0.0,g=0,h=0;c=a+16|0;f=+p[c>>3];if(!(f<=1.0))Ka(6099,6112,25,6153);if(!(f>=0.0))Ka(6171,6112,26,6153);d=~~(f*256.0+.5)>>>0;d=d-((d|0)==256&1)|0;e=a+8|0;b=k[e>>2]|0;if(b>>>0<4096){h=a+4|0;g=(k[h>>2]|0)+-1|0;k[h>>2]=g;b=l[(k[a>>2]|0)+g>>0]|0|b<<8;k[e>>2]=b}a=b&255;d=0-(d+((d|0)==0&1))&255;g=$(b>>>8,d)|0;h=a>>>0>>0;k[e>>2]=h?g+a|0:b-d-g|0;p[c>>3]=f*.9921875+ +(h&1^1|0)*.0078125;return h|0}function Ng(a,b,c,d,e,f){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;f=f|0;var g=0;g=a+8|0;k[g>>2]=e;a=d-e|0;if((a|0)>0){f=0-e|0;do{d=b+(a<<2)|0;we(g,d,d+(f<<2)|0,c,a);a=a-e|0}while((a|0)>0)}d=e>>>0>1073741823?-1:e<<2;e=dl(d)|0;Ah(e|0,0,d|0)|0;we(g,b,e,c,0);el(e);return 1}function Og(a,b,c,d,e){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;var f=0,g=0,h=0;h=r;r=r+256|0;g=h;do if((c|0)>(d|0)&(e&73728|0)==0){e=c-d|0;Ah(g|0,b|0,(e>>>0>256?256:e)|0)|0;b=k[a>>2]|0;f=(b&32|0)==0;if(e>>>0>255){c=c-d|0;do{if(f){jg(g,256,a)|0;b=k[a>>2]|0}e=e+-256|0;f=(b&32|0)==0}while(e>>>0>255);if(f)e=c&255;else break}else if(!f)break;jg(g,e,a)|0}while(0);r=h;return}function Pg(a,b){a=a|0;b=b|0;var c=0,d=0,e=0,f=0,g=0,h=0,j=0;j=r;r=r+16|0;g=j;h=b&255;i[g>>0]=h;d=a+16|0;e=k[d>>2]|0;if(!e)if(!(Sh(a)|0)){e=k[d>>2]|0;f=4}else c=-1;else f=4;do if((f|0)==4){f=a+20|0;d=k[f>>2]|0;if(d>>>0>>0?(c=b&255,(c|0)!=(i[a+75>>0]|0)):0){k[f>>2]=d+1;i[d>>0]=h;break}if((Ra[k[a+36>>2]&31](a,g,1)|0)==1)c=l[g>>0]|0;else c=-1}while(0);r=j;return c|0}function Qg(a,b){a=a|0;b=b|0;var c=0,d=0,e=0,f=0,g=0;f=b+8|0;g=k[f+4>>2]|0;e=b+16|0;d=e;c=k[d>>2]|0;d=k[d+4>>2]|0;if((g|0)>(d|0)|((g|0)==(d|0)?(k[f>>2]|0)>>>0>c>>>0:0)){g=i[(k[b>>2]|0)+c>>0]|0;f=Bj(c|0,d|0,1,0)|0;c=e;k[c>>2]=f;k[c+4>>2]=M;c=g}else c=0;c=c&255;if(!(c&128)){g=c;k[a>>2]=g;return}Qg(a,b);g=k[a>>2]<<7;k[a>>2]=g;g=g|c&127;k[a>>2]=g;return}function Rg(a,b){a=a|0;b=b|0;var c=0,d=0,e=0,f=0,g=0;if((k[b+76>>2]|0)>=0?(kl(b)|0)!=0:0){if((i[b+75>>0]|0)!=(a|0)?(e=b+20|0,f=k[e>>2]|0,f>>>0<(k[b+16>>2]|0)>>>0):0){k[e>>2]=f+1;i[f>>0]=a;a=a&255}else a=Pg(b,a)|0;jl(b)}else g=3;do if((g|0)==3){if((i[b+75>>0]|0)!=(a|0)?(c=b+20|0,d=k[c>>2]|0,d>>>0<(k[b+16>>2]|0)>>>0):0){k[c>>2]=d+1;i[d>>0]=a;a=a&255;break}a=Pg(b,a)|0}while(0);return a|0}function Sg(a){a=a|0;switch(a<<24>>24){case 0:{a=Si(28)|0;k[a>>2]=0;k[a+4>>2]=0;k[a+8>>2]=0;k[a+12>>2]=0;k[a+16>>2]=0;k[a+20>>2]=0;k[a+24>>2]=0;Wi(a);k[a>>2]=5144;return a|0}case 1:{a=Si(28)|0;k[a>>2]=0;k[a+4>>2]=0;k[a+8>>2]=0;k[a+12>>2]=0;k[a+16>>2]=0;k[a+20>>2]=0;k[a+24>>2]=0;Wi(a);k[a>>2]=5212;return a|0}default:{a=0;return a|0}}return 0}function Tg(a){a=a|0;var b=0,c=0,d=0;k[a>>2]=3720;b=k[a+96>>2]|0;if(b|0)gl(b);b=k[a+84>>2]|0;if(b|0)gl(b);b=k[a+72>>2]|0;if(b|0)gl(b);b=k[a+60>>2]|0;if(b|0)gl(b);k[a>>2]=3208;b=k[a+32>>2]|0;if(!b){gl(a);return}c=a+36|0;d=k[c>>2]|0;if((d|0)!=(b|0))k[c>>2]=d+(~((d+-4-b|0)>>>2)<<2);gl(b);gl(a);return}function Ug(a){a=a|0;var b=0,c=0,d=0;k[a>>2]=3464;b=k[a+96>>2]|0;if(b|0)gl(b);b=k[a+84>>2]|0;if(b|0)gl(b);b=k[a+72>>2]|0;if(b|0)gl(b);b=k[a+60>>2]|0;if(b|0)gl(b);k[a>>2]=3208;b=k[a+32>>2]|0;if(!b){gl(a);return}c=a+36|0;d=k[c>>2]|0;if((d|0)!=(b|0))k[c>>2]=d+(~((d+-4-b|0)>>>2)<<2);gl(b);gl(a);return}function Vg(a){a=a|0;var b=0,c=0,d=0,e=0,f=0,g=0,h=0;f=k[a+20>>2]|0;h=f+8|0;g=k[h>>2]|0;h=k[h+4>>2]|0;b=f+16|0;d=b;c=k[d>>2]|0;d=Bj(c|0,k[d+4>>2]|0,4,0)|0;e=M;if((h|0)<(e|0)|(h|0)==(e|0)&g>>>0>>0){h=0;return h|0}h=(k[f>>2]|0)+c|0;h=l[h>>0]|l[h+1>>0]<<8|l[h+2>>0]<<16|l[h+3>>0]<<24;g=b;k[g>>2]=d;k[g+4>>2]=e;k[(k[a+4>>2]|0)+64>>2]=h;h=1;return h|0}function Wg(a){a=a|0;var b=0,c=0;k[a>>2]=3720;b=k[a+96>>2]|0;if(b|0)gl(b);b=k[a+84>>2]|0;if(b|0)gl(b);b=k[a+72>>2]|0;if(b|0)gl(b);b=k[a+60>>2]|0;if(b|0)gl(b);k[a>>2]=3208;c=k[a+32>>2]|0;if(!c)return;b=a+36|0;a=k[b>>2]|0;if((a|0)!=(c|0))k[b>>2]=a+(~((a+-4-c|0)>>>2)<<2);gl(c);return}function Xg(a,b){a=a|0;b=b|0;var c=0,d=0,e=0,f=0,g=0;k[a>>2]=0;g=a+4|0;k[g>>2]=0;k[a+8>>2]=0;f=b+4|0;c=(k[f>>2]|0)-(k[b>>2]|0)|0;d=c>>2;if(!d)return;if(d>>>0>1073741823)mk(a);e=Si(c)|0;k[g>>2]=e;k[a>>2]=e;k[a+8>>2]=e+(d<<2);a=k[b>>2]|0;c=(k[f>>2]|0)-a|0;if((c|0)<=0)return;nh(e|0,a|0,c|0)|0;k[g>>2]=e+(c>>2<<2);return}function Yg(a){a=a|0;var b=0,c=0;k[a>>2]=3464;b=k[a+96>>2]|0;if(b|0)gl(b);b=k[a+84>>2]|0;if(b|0)gl(b);b=k[a+72>>2]|0;if(b|0)gl(b);b=k[a+60>>2]|0;if(b|0)gl(b);k[a>>2]=3208;c=k[a+32>>2]|0;if(!c)return;b=a+36|0;a=k[b>>2]|0;if((a|0)!=(c|0))k[b>>2]=a+(~((a+-4-c|0)>>>2)<<2);gl(c);return}function Zg(a){a=a|0;var b=0,c=0,d=0;if(!(k[a+64>>2]|0)){d=0;return d|0}d=a+4|0;c=a+8|0;a=k[d>>2]|0;if(((k[c>>2]|0)-a|0)>0)b=0;else{d=1;return d|0}while(1){a=k[a+(b<<2)>>2]|0;b=b+1|0;if(!(Xh(a,a)|0)){a=0;b=5;break}a=k[d>>2]|0;if((b|0)>=((k[c>>2]|0)-a>>2|0)){a=1;b=5;break}}if((b|0)==5)return a|0;return 0}function _g(a,b){a=+a;b=b|0;var c=0,d=0,e=0;p[u>>3]=a;c=k[u>>2]|0;d=k[u+4>>2]|0;e=lj(c|0,d|0,52)|0;switch(e&2047){case 0:{if(a!=0.0){a=+_g(a*18446744073709551616.0,b);c=(k[b>>2]|0)+-64|0}else c=0;k[b>>2]=c;break}case 2047:break;default:{k[b>>2]=(e&2047)+-1022;k[u>>2]=c;k[u+4>>2]=d&-2146435073|1071644672;a=+p[u>>3]}}return +a}function $g(a){a=a|0;var b=0,c=0,d=0;k[a>>2]=3784;b=k[a+76>>2]|0;if(b|0)gl(b);d=a+68|0;b=k[d>>2]|0;k[d>>2]=0;if(b|0)el(b);k[a>>2]=3208;d=k[a+32>>2]|0;if(!d){gl(a);return}b=a+36|0;c=k[b>>2]|0;if((c|0)!=(d|0))k[b>>2]=c+(~((c+-4-d|0)>>>2)<<2);gl(d);gl(a);return}function ah(a,b,c){a=a|0;b=b|0;c=c|0;var d=0;if(b>>>0>0|(b|0)==0&a>>>0>4294967295){while(1){d=Ki(a|0,b|0,10,0)|0;c=c+-1|0;i[c>>0]=d|48;d=a;a=ik(a|0,b|0,10,0)|0;if(!(b>>>0>9|(b|0)==9&d>>>0>4294967295))break;else b=M}b=a}else b=a;if(b)while(1){c=c+-1|0;i[c>>0]=(b>>>0)%10|0|48;if(b>>>0<10)break;else b=(b>>>0)/10|0}return c|0}function bh(a){a=a|0;var b=0,c=0,d=0;k[a>>2]=3848;d=a+36|0;b=k[d>>2]|0;k[d>>2]=0;if(b|0)el(b);k[a>>2]=3156;d=a+28|0;b=k[d>>2]|0;k[d>>2]=0;if(b|0)Ta[k[(k[b>>2]|0)+4>>2]&127](b);b=k[a+16>>2]|0;if(!b){gl(a);return}c=a+20|0;d=k[c>>2]|0;if((d|0)!=(b|0))k[c>>2]=d+(~((d+-4-b|0)>>>2)<<2);gl(b);gl(a);return}function ch(a){a=a|0;var b=0,c=0,d=0,e=0;e=r;r=r+16|0;b=e;c=b;k[c>>2]=0;k[c+4>>2]=0;De(a,2,b);b=k[a+12>>2]|0;c=a+16|0;d=k[c>>2]|0;if((d|0)==(b|0)){d=a+24|0;k[d>>2]=0;d=a+28|0;k[d>>2]=0;r=e;return}k[c>>2]=d+(~((d+-4-b|0)>>>2)<<2);d=a+24|0;k[d>>2]=0;d=a+28|0;k[d>>2]=0;r=e;return}function dh(a){a=a|0;var b=0,c=0,d=0,e=0;k[a>>2]=3016;b=k[a+80>>2]|0;c=b;if(b|0){d=a+84|0;e=k[d>>2]|0;if((e|0)!=(b|0))k[d>>2]=e+(~(((e+-12-c|0)>>>0)/12|0)*12|0);gl(b)}b=k[a+68>>2]|0;if(!b){fg(a);gl(a);return}c=a+72|0;d=k[c>>2]|0;if((d|0)!=(b|0))k[c>>2]=d+(~((d+-4-b|0)>>>2)<<2);gl(b);fg(a);gl(a);return}function eh(a){a=a|0;var b=0,c=0,d=0;k[a>>2]=3528;b=k[a+76>>2]|0;if(b|0)gl(b);d=a+68|0;b=k[d>>2]|0;k[d>>2]=0;if(b|0)el(b);k[a>>2]=3208;d=k[a+32>>2]|0;if(!d){gl(a);return}b=a+36|0;c=k[b>>2]|0;if((c|0)!=(d|0))k[b>>2]=c+(~((c+-4-d|0)>>>2)<<2);gl(d);gl(a);return}function fh(a){a=a|0;var b=0,c=0,d=0,e=0,f=0;k[a>>2]=3076;d=a+8|0;b=k[d>>2]|0;if(!b){gl(a);return}e=a+12|0;c=k[e>>2]|0;if((c|0)!=(b|0)){do{f=c+-4|0;k[e>>2]=f;c=k[f>>2]|0;k[f>>2]=0;if(c|0)Ta[k[(k[c>>2]|0)+4>>2]&127](c);c=k[e>>2]|0}while((c|0)!=(b|0));b=k[d>>2]|0}gl(b);gl(a);return}function gh(a,b,c,d){a=a|0;b=b|0;c=c|0;d=d|0;var e=0;a=b+16|0;e=k[a>>2]|0;do if(e){if((e|0)!=(c|0)){d=b+36|0;k[d>>2]=(k[d>>2]|0)+1;k[b+24>>2]=2;i[b+54>>0]=1;break}a=b+24|0;if((k[a>>2]|0)==2)k[a>>2]=d}else{k[a>>2]=c;k[b+24>>2]=d;k[b+36>>2]=1}while(0);return}function hh(a){a=a|0;var b=0,c=0,d=0,e=0;if(!a)return;b=k[a+68>>2]|0;c=b;if(b|0){d=a+72|0;e=k[d>>2]|0;if((e|0)!=(b|0))k[d>>2]=e+(~((e+-4-c|0)>>>2)<<2);gl(b)}e=a+64|0;b=k[e>>2]|0;k[e>>2]=0;if(b|0){c=k[b>>2]|0;if(c|0){d=b+4|0;if((k[d>>2]|0)!=(c|0))k[d>>2]=c;gl(c)}gl(b)}gl(a);return}function ih(a){a=a|0;var b=0,c=0;k[a>>2]=3784;b=k[a+76>>2]|0;if(b|0)gl(b);c=a+68|0;b=k[c>>2]|0;k[c>>2]=0;if(b|0)el(b);k[a>>2]=3208;c=k[a+32>>2]|0;if(!c)return;b=a+36|0;a=k[b>>2]|0;if((a|0)!=(c|0))k[b>>2]=a+(~((a+-4-c|0)>>>2)<<2);gl(c);return}function jh(a,b,c,d,e,f){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;f=f|0;var g=0,h=0,i=0;k[a>>2]=b;i=b+16|0;g=k[i+4>>2]|0;h=a+8|0;k[h>>2]=k[i>>2];k[h+4>>2]=g;h=b+24|0;g=k[h+4>>2]|0;b=a+16|0;k[b>>2]=k[h>>2];k[b+4>>2]=g;b=a+40|0;k[b>>2]=c;k[b+4>>2]=d;d=a+48|0;k[d>>2]=e;k[d+4>>2]=f;return}function kh(a){a=a|0;var b=0,c=0,d=0,e=0;k[a>>2]=3016;b=k[a+80>>2]|0;c=b;if(b|0){d=a+84|0;e=k[d>>2]|0;if((e|0)!=(b|0))k[d>>2]=e+(~(((e+-12-c|0)>>>0)/12|0)*12|0);gl(b)}b=k[a+68>>2]|0;if(!b){fg(a);return}c=a+72|0;d=k[c>>2]|0;if((d|0)!=(b|0))k[c>>2]=d+(~((d+-4-b|0)>>>2)<<2);gl(b);fg(a);return}function lh(a,b,c){a=a|0;b=b|0;c=c|0;var d=0;if((b|0)<=-1)Ka(5884,5909,63,5923);d=k[a+80>>2]|0;if((((k[a+84>>2]|0)-d|0)/12|0|0)>(b|0)){d=d+(b*12|0)|0;Ce(c,d,d+12|0);return 1}else Ka(5928,5909,64,5923);return 0}function mh(a){a=a|0;var b=0,c=0;k[a>>2]=3848;c=a+36|0;b=k[c>>2]|0;k[c>>2]=0;if(b|0)el(b);k[a>>2]=3156;c=a+28|0;b=k[c>>2]|0;k[c>>2]=0;if(b|0)Ta[k[(k[b>>2]|0)+4>>2]&127](b);c=k[a+16>>2]|0;if(!c)return;b=a+20|0;a=k[b>>2]|0;if((a|0)!=(c|0))k[b>>2]=a+(~((a+-4-c|0)>>>2)<<2);gl(c);return}function nh(a,b,c){a=a|0;b=b|0;c=c|0;var d=0;if((c|0)>=4096)return Fa(a|0,b|0,c|0)|0;d=a|0;if((a&3)==(b&3)){while(a&3){if(!c)return d|0;i[a>>0]=i[b>>0]|0;a=a+1|0;b=b+1|0;c=c-1|0}while((c|0)>=4){k[a>>2]=k[b>>2];a=a+4|0;b=b+4|0;c=c-4|0}}while((c|0)>0){i[a>>0]=i[b>>0]|0;a=a+1|0;b=b+1|0;c=c-1|0}return d|0}function oh(a){a=a|0;var b=0,c=0;c=0;while(1){if((l[14065+c>>0]|0)==(a|0)){a=2;break}b=c+1|0;if((b|0)==87){b=14153;c=87;a=5;break}else c=b}if((a|0)==2)if(!c)b=14153;else{b=14153;a=5}if((a|0)==5)while(1){do{a=b;b=b+1|0}while((i[a>>0]|0)!=0);c=c+-1|0;if(!c)break;else a=5}return b|0}function ph(a,b){a=a|0;b=b|0;switch(b<<24>>24){case 0:{a=Si(16)|0;Ej(a);break}case 1:{a=Si(32)|0;Qi(a);break}case 2:{a=Si(44)|0;Vi(a);break}case 3:{a=Si(36)|0;vj(a);break}default:a=0}return a|0}function qh(a){a=a|0;var b=0,c=0;k[a>>2]=3528;b=k[a+76>>2]|0;if(b|0)gl(b);c=a+68|0;b=k[c>>2]|0;k[c>>2]=0;if(b|0)el(b);k[a>>2]=3208;c=k[a+32>>2]|0;if(!c)return;b=a+36|0;a=k[b>>2]|0;if((a|0)!=(c|0))k[b>>2]=a+(~((a+-4-c|0)>>>2)<<2);gl(c);return}function rh(a){a=a|0;var b=0,c=0,d=0,e=0;k[a>>2]=3076;d=a+8|0;b=k[d>>2]|0;if(!b)return;c=a+12|0;a=k[c>>2]|0;if((a|0)!=(b|0)){do{e=a+-4|0;k[c>>2]=e;a=k[e>>2]|0;k[e>>2]=0;if(a|0)Ta[k[(k[a>>2]|0)+4>>2]&127](a);a=k[c>>2]|0}while((a|0)!=(b|0));b=k[d>>2]|0}gl(b);return}function sh(a,b,c){a=a|0;b=b|0;c=c|0;if(!(_i(a,b,c)|0)){c=0;return c|0}b=k[b+4>>2]|0;if((c|0)<=-1)Ka(12883,12899,62,12927);a=k[b+4>>2]|0;if(((k[b+8>>2]|0)-a>>2|0)<=(c|0))Ka(12937,12899,63,12927);c=(k[(k[a+(c<<2)>>2]|0)+28>>2]|0)==9;return c|0}function th(a){a=a|0;var b=0,c=0,d=0;b=k[a+8>>2]|0;c=k[a+12>>2]|0;if((b|0)==(c|0)){c=1;return c|0}a=a+20|0;while(1){d=k[b>>2]|0;b=b+4|0;if(!(Za[k[(k[d>>2]|0)+16>>2]&63](d,k[a>>2]|0)|0)){b=0;a=5;break}if((b|0)==(c|0)){b=1;a=5;break}}if((a|0)==5)return b|0;return 0}function uh(a){a=a|0;var b=0;k[a>>2]=4152;b=k[a+72>>2]|0;if(b|0)gl(b);b=k[a+60>>2]|0;if(b|0)gl(b);b=k[a+48>>2]|0;if(b|0)gl(b);b=k[a+36>>2]|0;if(!b){gl(a);return}gl(b);gl(a);return}function vh(a,b,c){a=a|0;b=b|0;c=c|0;if(!(Va[k[(k[a>>2]|0)+44>>2]&127](a)|0)){c=0;return c|0}c=Yc(a,b,c)|0;return c|0}function wh(a){a=a|0;var b=0;k[a>>2]=4408;b=k[a+72>>2]|0;if(b|0)gl(b);b=k[a+60>>2]|0;if(b|0)gl(b);b=k[a+48>>2]|0;if(b|0)gl(b);b=k[a+36>>2]|0;if(!b){gl(a);return}gl(b);gl(a);return}function xh(a){a=a|0;var b=0;k[a>>2]=4728;b=k[a+72>>2]|0;if(b|0)gl(b);b=k[a+60>>2]|0;if(b|0)gl(b);b=k[a+48>>2]|0;if(b|0)gl(b);b=k[a+36>>2]|0;if(!b){gl(a);return}gl(b);gl(a);return}function yh(a){a=a|0;var b=0,c=0,d=0,e=0,f=0;c=l[a+12>>0]|0;d=a+8|0;b=k[d>>2]|0;if(b>>>0<4096){f=a+4|0;e=(k[f>>2]|0)+-1|0;k[f>>2]=e;b=l[(k[a>>2]|0)+e>>0]|0|b<<8;k[d>>2]=b}a=b&255;c=0-c&255;e=$(b>>>8,c)|0;f=a>>>0>>0;k[d>>2]=f?e+a|0:b-c-e|0;return f|0}function zh(a){a=a|0;var b=0,c=0,d=0,e=0,f=0;f=r;r=r+64|0;c=f;d=f+40|0;e=c;b=e+40|0;do{k[e>>2]=k[a>>2];e=e+4|0;a=a+4|0}while((e|0)<(b|0));e=be(c,d)|0;e=e?l[d+7>>0]|0:-1;jl(c+24|0);r=f;return e|0}function Ah(a,b,c){a=a|0;b=b|0;c=c|0;var d=0,e=0,f=0,g=0;d=a+c|0;if((c|0)>=20){b=b&255;f=a&3;g=b|b<<8|b<<16|b<<24;e=d&~3;if(f){f=a+4-f|0;while((a|0)<(f|0)){i[a>>0]=b;a=a+1|0}}while((a|0)<(e|0)){k[a>>2]=g;a=a+4|0}}while((a|0)<(d|0)){i[a>>0]=b;a=a+1|0}return a-c|0}function Bh(a){a=a|0;var b=0;k[a>>2]=4984;b=k[a+72>>2]|0;if(b|0)gl(b);b=k[a+60>>2]|0;if(b|0)gl(b);b=k[a+48>>2]|0;if(b|0)gl(b);b=k[a+36>>2]|0;if(!b){gl(a);return}gl(b);gl(a);return}function Ch(a){a=a|0;var b=0,c=0,d=0;k[a>>2]=3156;d=a+28|0;b=k[d>>2]|0;k[d>>2]=0;if(b|0)Ta[k[(k[b>>2]|0)+4>>2]&127](b);d=k[a+16>>2]|0;if(!d){gl(a);return}b=a+20|0;c=k[b>>2]|0;if((c|0)!=(d|0))k[b>>2]=c+(~((c+-4-d|0)>>>2)<<2);gl(d);gl(a);return}function Dh(a){a=a|0;var b=0;k[a>>2]=4152;b=k[a+72>>2]|0;if(b|0)gl(b);b=k[a+60>>2]|0;if(b|0)gl(b);b=k[a+48>>2]|0;if(b|0)gl(b);b=k[a+36>>2]|0;if(!b)return;gl(b);return}function Eh(a,b,c){a=a|0;b=b|0;c=c|0;var d=0;k[a+4>>2]=b;d=k[b+4>>2]|0;if((c|0)<=-1)Ka(12883,12899,62,12927);b=k[d+4>>2]|0;if(((k[d+8>>2]|0)-b>>2|0)>(c|0)){k[a+8>>2]=k[b+(c<<2)>>2];k[a+12>>2]=c;return 1}else Ka(12937,12899,63,12927);return 0}function Fh(a){a=a|0;var b=0;k[a>>2]=4408;b=k[a+72>>2]|0;if(b|0)gl(b);b=k[a+60>>2]|0;if(b|0)gl(b);b=k[a+48>>2]|0;if(b|0)gl(b);b=k[a+36>>2]|0;if(!b)return;gl(b);return}function Gh(a){a=a|0;var b=0;k[a>>2]=4728;b=k[a+72>>2]|0;if(b|0)gl(b);b=k[a+60>>2]|0;if(b|0)gl(b);b=k[a+48>>2]|0;if(b|0)gl(b);b=k[a+36>>2]|0;if(!b)return;gl(b);return}function Hh(a,b,c,d,e,f){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;f=f|0;if((a|0)==(k[b+8>>2]|0))wg(0,b,c,d,e);else{a=k[a+8>>2]|0;Ya[k[(k[a>>2]|0)+20>>2]&3](a,b,c,d,e,f)}return}function Ih(a,b){a=a|0;b=b|0;var c=0,d=0,e=0;k[a>>2]=0;c=a+4|0;k[c>>2]=0;k[a+8>>2]=0;if(!b)return;if(b>>>0>1073741823)mk(a);d=b<<2;e=Si(d)|0;k[a>>2]=e;b=e+(b<<2)|0;k[a+8>>2]=b;Ah(e|0,0,d|0)|0;k[c>>2]=b;return}function Jh(a){a=a|0;var b=0;k[a>>2]=4984;b=k[a+72>>2]|0;if(b|0)gl(b);b=k[a+60>>2]|0;if(b|0)gl(b);b=k[a+48>>2]|0;if(b|0)gl(b);b=k[a+36>>2]|0;if(!b)return;gl(b);return}function Kh(a){a=a|0;var b=0,c=0,d=0,e=0;d=k[a>>2]|0;e=a+4|0;b=k[e>>2]|0;c=d;if((b|0)==(d|0))b=d;else{b=b+(~((b+-4-c|0)>>>2)<<2)|0;k[e>>2]=b}k[a+16>>2]=0;k[a+12>>2]=b;if(!d)return;if((b|0)!=(d|0))k[e>>2]=b+(~((b+-4-c|0)>>>2)<<2);gl(d);return}function Lh(a){a=a|0;var b=0,c=0;k[a>>2]=3156;c=a+28|0;b=k[c>>2]|0;k[c>>2]=0;if(b|0)Ta[k[(k[b>>2]|0)+4>>2]&127](b);c=k[a+16>>2]|0;if(!c)return;b=a+20|0;a=k[b>>2]|0;if((a|0)!=(c|0))k[b>>2]=a+(~((a+-4-c|0)>>>2)<<2);gl(c);return}function Mh(a,b,c){a=a|0;b=b|0;c=c|0;var d=0,e=0,f=0;e=r;r=r+32|0;f=e;d=e+20|0;k[f>>2]=k[a+60>>2];k[f+4>>2]=0;k[f+8>>2]=b;k[f+12>>2]=d;k[f+16>>2]=c;if((Ij(Ha(140,f|0)|0)|0)<0){k[d>>2]=-1;a=-1}else a=k[d>>2]|0;r=e;return a|0}function Nh(a,b){a=a|0;b=b|0;var c=0;dj(a);k[a>>2]=5112;c=a+24|0;k[c>>2]=0;k[c+4>>2]=0;k[c+8>>2]=0;k[c+12>>2]=0;k[c+16>>2]=0;k[c+20>>2]=0;c=k[b>>2]|0;k[b>>2]=0;k[a+48>>2]=c;return}function Oh(a,b,c){a=a|0;b=b|0;c=c|0;var d=0,e=0;a:do if(!c)a=0;else{while(1){d=i[a>>0]|0;e=i[b>>0]|0;if(d<<24>>24!=e<<24>>24)break;c=c+-1|0;if(!c){a=0;break a}else{a=a+1|0;b=b+1|0}}a=(d&255)-(e&255)|0}while(0);return a|0}function Ph(a,b,c){a=a|0;b=b|0;c=c|0;if(!(zg(k[a+8>>2]|0,(k[b+4>>2]|0)-(k[b>>2]|0)>>2)|0)){c=0;return c|0}c=Ra[k[(k[a>>2]|0)+24>>2]&31](a,b,c)|0;return c|0}function Qh(a){a=a|0;if(!(k[a+36>>2]|0))return 0;if(!(k[a+20>>2]|0))return 0;if(!(k[a+24>>2]|0))return 0;if(!(k[a+28>>2]|0))return 0;else return (k[a+32>>2]|0)!=0|0;return 0}function Rh(a,b,c,d){a=a|0;b=b|0;c=c|0;d=d|0;if((a|0)==(k[b+8>>2]|0))gh(0,b,c,d);else{a=k[a+8>>2]|0;_a[k[(k[a>>2]|0)+28>>2]&3](a,b,c,d)}return}function Sh(a){a=a|0;var b=0,c=0;b=a+74|0;c=i[b>>0]|0;i[b>>0]=c+255|c;b=k[a>>2]|0;if(!(b&8)){k[a+8>>2]=0;k[a+4>>2]=0;c=k[a+44>>2]|0;k[a+28>>2]=c;k[a+20>>2]=c;k[a+16>>2]=c+(k[a+48>>2]|0);a=0}else{k[a>>2]=b|32;a=-1}return a|0}function Th(a){a=a|0;var b=0,c=0;k[a>>2]=4216;b=k[a+52>>2]|0;if(b|0)gl(b);c=a+44|0;b=k[c>>2]|0;k[c>>2]=0;if(!b){gl(a);return}el(b);gl(a);return}function Uh(a){a=a|0;if(!(k[a+60>>2]|0))return 0;if(!(k[a+44>>2]|0))return 0;if(!(k[a+48>>2]|0))return 0;if(!(k[a+52>>2]|0))return 0;else return (k[a+56>>2]|0)!=0|0;return 0}function Vh(a){a=a|0;var b=0,c=0;c=a+15&-16|0;b=k[t>>2]|0;a=b+c|0;if((c|0)>0&(a|0)<(b|0)|(a|0)<0){ia()|0;Aa(12);return -1}k[t>>2]=a;if((a|0)>(ha()|0)?(ga()|0)==0:0){Aa(12);k[t>>2]=b;return -1}return b|0}function Wh(a){a=a|0;if(!(k[a+20>>2]|0)){a=0;return a|0}if(!(k[a+24>>2]|0)){a=0;return a|0}if(!(k[a+28>>2]|0)){a=0;return a|0}a=(k[a+32>>2]|0)!=0;return a|0}function Xh(a,b){a=a|0;b=b|0;var c=0,d=0,e=0;c=r;r=r+16|0;d=c+4|0;e=c;k[e>>2]=0;k[d>>2]=k[e>>2];b=Pb(a,b,d)|0;r=c;return b|0}function Yh(a,b,c,d){a=a|0;b=b|0;c=c|0;d=d|0;var e=0,f=0;e=k[c>>2]|0;d=a;c=b-a>>2;while(1){if(!c)break;b=(c|0)/2|0;f=d+(b<<2)|0;a=(k[f>>2]|0)>>>0>>0;d=a?f+4|0:d;c=a?c+-1-b|0:b}return d|0}function Zh(a){a=a|0;var b=0,c=0;k[a>>2]=4472;b=k[a+52>>2]|0;if(b|0)gl(b);c=a+44|0;b=k[c>>2]|0;k[c>>2]=0;if(!b){gl(a);return}el(b);gl(a);return}function _h(a){a=a|0;var b=0,c=0;k[a>>2]=4792;b=k[a+52>>2]|0;if(b|0)gl(b);c=a+44|0;b=k[c>>2]|0;k[c>>2]=0;if(!b){gl(a);return}el(b);gl(a);return}function $h(a){a=a|0;var b=0;k[a>>2]=0;b=a+8|0;k[b>>2]=0;k[b+4>>2]=0;k[b+8>>2]=0;k[b+12>>2]=0;i[a+24>>0]=1;k[a+28>>2]=9;b=a+40|0;k[b>>2]=0;k[b+4>>2]=0;k[b+8>>2]=0;k[b+12>>2]=0;k[a+56>>2]=-1;j[a+60>>1]=0;return}function ai(a){a=a|0;if(!(k[a+44>>2]|0)){a=0;return a|0}if(!(k[a+48>>2]|0)){a=0;return a|0}if(!(k[a+52>>2]|0)){a=0;return a|0}a=(k[a+56>>2]|0)!=0;return a|0}function bi(a,b){a=a|0;b=b|0;var c=0,d=0;d=a;c=d+64|0;do{k[d>>2]=k[b>>2];d=d+4|0;b=b+4|0}while((d|0)<(c|0));d=a+64|0;k[d>>2]=0;k[d+4>>2]=0;k[d+8>>2]=0;k[d+12>>2]=0;k[d+16>>2]=0;i[d+20>>0]=0;return}function ci(a,b,c){a=a|0;b=b|0;c=c|0;if(!(_i(a,b,c)|0)){c=0;return c|0}a=k[a+8>>2]|0;if((i[a+24>>0]|0)!=3){c=0;return c|0}c=(k[a+28>>2]|0)==9;return c|0}function di(a){a=a|0;var b=0,c=0;k[a>>2]=5048;b=k[a+52>>2]|0;if(b|0)gl(b);c=a+44|0;b=k[c>>2]|0;k[c>>2]=0;if(!b){gl(a);return}el(b);gl(a);return}function ei(a){a=a|0;var b=0;k[a>>2]=4216;b=k[a+52>>2]|0;if(b|0)gl(b);b=a+44|0;a=k[b>>2]|0;k[b>>2]=0;if(!a)return;el(a);return}function fi(a,b,c,d){a=a|0;b=b|0;c=c|0;d=d|0;var e=0,f=0;e=$(c,b)|0;if((k[d+76>>2]|0)>-1){f=(kl(d)|0)==0;a=jg(a,e,d)|0;if(!f)jl(d)}else a=jg(a,e,d)|0;if((a|0)!=(e|0))c=(a>>>0)/(b>>>0)|0;return c|0}function gi(a){a=a|0;var b=0;k[a>>2]=4472;b=k[a+52>>2]|0;if(b|0)gl(b);b=a+44|0;a=k[b>>2]|0;k[b>>2]=0;if(!a)return;el(a);return}function hi(a){a=a|0;var b=0;k[a>>2]=4792;b=k[a+52>>2]|0;if(b|0)gl(b);b=a+44|0;a=k[b>>2]|0;k[b>>2]=0;if(!a)return;el(a);return}function ii(a,b){a=a|0;b=b|0;if(k[b+56>>2]|0){b=0;return b|0}if((i[b+24>>0]|0)!=3){b=0;return b|0}k[a+36>>2]=b;b=1;return b|0}function ji(a){a=a|0;var b=0,c=0,d=0;k[a>>2]=3208;b=k[a+32>>2]|0;if(!b){gl(a);return}c=a+36|0;d=k[c>>2]|0;if((d|0)!=(b|0))k[c>>2]=d+(~((d+-4-b|0)>>>2)<<2);gl(b);gl(a);return}function ki(a){a=a|0;switch(a|0){case 11:case 2:case 1:{a=1;break}case 4:case 3:{a=2;break}case 6:case 5:{a=4;break}case 8:case 7:{a=8;break}case 9:{a=4;break}case 10:{a=8;break}default:a=-1}return a|0}function li(a,b){a=a|0;b=b|0;if(k[b+56>>2]|0){b=0;return b|0}if((i[b+24>>0]|0)!=3){b=0;return b|0}k[a+60>>2]=b;b=1;return b|0}function mi(a,b){a=a|0;b=b|0;var c=0,d=0,e=0,f=0;f=a&65535;e=b&65535;c=$(e,f)|0;d=a>>>16;a=(c>>>16)+($(e,d)|0)|0;e=b>>>16;b=$(e,f)|0;return (M=(a>>>16)+($(e,d)|0)+(((a&65535)+b|0)>>>16)|0,a+b<<16|c&65535|0)|0}function ni(a){a=a|0;var b=0,c=0;i[a+36>>0]=0;c=Bj(k[a+32>>2]|0,0,7,0)|0;c=lj(c|0,M|0,3)|0;a=a+16|0;b=a;b=Bj(c|0,M|0,k[b>>2]|0,k[b+4>>2]|0)|0;k[a>>2]=b;k[a+4>>2]=M;return}function oi(a){a=a|0;var b=0;k[a>>2]=5048;b=k[a+52>>2]|0;if(b|0)gl(b);b=a+44|0;a=k[b>>2]|0;k[b>>2]=0;if(!a)return;el(a);return}function pi(a){a=a|0;k[a>>2]=0;gf(a+8|0);Jk(a+776|0);uj(a+800|0);uj(a+820|0);uj(a+840|0);return}function qi(a,b){a=a|0;b=b|0;var c=0;if((b|0)==-1|(b|0)>3){c=-1;return c|0}c=k[a+16+(b*12|0)>>2]|0;if(((k[a+16+(b*12|0)+4>>2]|0)-c|0)<=0){c=-1;return c|0}c=k[c>>2]|0;return c|0}function ri(a,b,c,d,e,f){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;f=f|0;if((a|0)==(k[b+8>>2]|0))wg(0,b,c,d,e);return}function si(a,b){a=a|0;b=b|0;var c=0;if((b|0)<=-1)Ka(12883,12899,54,12927);c=k[a+4>>2]|0;if(((k[a+8>>2]|0)-c>>2|0)>(b|0))return k[c+(b<<2)>>2]|0;else Ka(12937,12899,55,12927);return 0}function ti(a,b,c){a=a|0;b=b|0;c=c|0;var d=0;if((b|0)<(a|0)&(a|0)<(b+c|0)){d=a;b=b+c|0;a=a+c|0;while((c|0)>0){a=a-1|0;b=b-1|0;c=c-1|0;i[a>>0]=i[b>>0]|0}a=d}else nh(a,b,c)|0;return a|0}function ui(a){a=a|0;k[a>>2]=0;Ef(a+8|0);Pk(a+520|0);uj(a+536|0);uj(a+556|0);uj(a+576|0);return}function vi(a){a=a|0;var b=0,c=0,d=0,e=0;if(!a)return;b=k[a>>2]|0;c=b;if(b|0){d=a+4|0;e=k[d>>2]|0;if((e|0)!=(b|0))k[d>>2]=e+(~((e+-4-c|0)>>>2)<<2);gl(b)}gl(a);return}function wi(a){a=a|0;var b=0,c=0;k[a>>2]=3208;c=k[a+32>>2]|0;if(!c)return;a=a+36|0;b=k[a>>2]|0;if((b|0)!=(c|0))k[a>>2]=b+(~((b+-4-c|0)>>>2)<<2);gl(c);return}function xi(a,b,c){a=a|0;b=b|0;c=c|0;var d=0,e=0;if((b|0)>0)d=0;else return;do{e=k[a+(d<<2)>>2]|0;k[c+(d<<2)>>2]=e<<31>>31^e>>>1;d=d+1|0}while((d|0)!=(b|0));return}function yi(a){a=a|0;var b=0,c=0,d=0;k[a>>2]=3048;b=k[a+4>>2]|0;if(!b){gl(a);return}c=a+8|0;d=k[c>>2]|0;if((d|0)!=(b|0))k[c>>2]=d+(~((d+-4-b|0)>>>2)<<2);gl(b);gl(a);return}function zi(a,b,c){a=a|0;b=b|0;c=c|0;var d=0,e=0;e=r;r=r+16|0;d=e;k[d>>2]=k[c>>2];a=Ra[k[(k[a>>2]|0)+16>>2]&31](a,b,d)|0;if(a)k[c>>2]=k[d>>2];r=e;return a&1|0}function Ai(){var a=0,b=0;a=Oi()|0;if((a|0?(b=k[a>>2]|0,b|0):0)?(a=b+48|0,(k[a>>2]&-256|0)==1126902528?(k[a+4>>2]|0)==1129074247:0):0)Kj(k[b+12>>2]|0);Kj(Bk()|0)}function Bi(a){a=a|0;var b=0;b=i[w+(a&255)>>0]|0;if((b|0)<8)return b|0;b=i[w+(a>>8&255)>>0]|0;if((b|0)<8)return b+8|0;b=i[w+(a>>16&255)>>0]|0;if((b|0)<8)return b+16|0;return (i[w+(a>>>24)>>0]|0)+24|0}function Ci(a,b){a=a|0;b=b|0;var c=0;i[b+84>>0]=1;c=k[b+68>>2]|0;a=b+72|0;b=k[a>>2]|0;if((b|0)==(c|0))return 1;k[a>>2]=b+(~((b+-4-c|0)>>>2)<<2);return 1}function Di(a,b,c,d){a=a|0;b=b|0;c=c|0;d=d|0;if((a|0)==(k[b+8>>2]|0))gh(0,b,c,d);return}function Ei(a){a=a|0;var b=0,c=0;k[a>>2]=3048;c=k[a+4>>2]|0;if(!c)return;a=a+8|0;b=k[a>>2]|0;if((b|0)!=(c|0))k[a>>2]=b+(~((b+-4-c|0)>>>2)<<2);gl(c);return}function Fi(a){a=a|0;var b=0,c=0;c=k[a>>2]|0;if(!c)return;a=a+4|0;b=k[a>>2]|0;if((b|0)!=(c|0))k[a>>2]=b+(~((b+-8-c|0)>>>3)<<3);gl(c);return}function Gi(a){a=a|0;var b=0,c=0;c=k[a>>2]|0;if(!c)return;a=a+4|0;b=k[a>>2]|0;if((b|0)!=(c|0))k[a>>2]=b+(~((b+-4-c|0)>>>2)<<2);gl(c);return}function Hi(a){a=a|0;k[a>>2]=0;uj(a+8|0);uj(a+28|0);uj(a+48|0);uj(a+68|0);return}function Ii(a){a=a|0;k[a>>2]=0;Pk(a+8|0);uj(a+24|0);uj(a+44|0);uj(a+64|0);return}function Ji(a,b){a=a|0;b=b|0;if(!b)return 0;else Ka(9096,9107,77,9187);return 0}function Ki(a,b,c,d){a=a|0;b=b|0;c=c|0;d=d|0;var e=0,f=0;f=r;r=r+16|0;e=f|0;Wc(a,b,c,d,e)|0;r=f;return (M=k[e+4>>2]|0,k[e>>2]|0)|0}function Li(a,b,c,d){a=a|0;b=b|0;c=c|0;d=d|0;return Jc(b,c,d)|0}function Mi(a){a=a|0;oj(a);k[a>>2]=3016;a=a+68|0;k[a>>2]=0;k[a+4>>2]=0;k[a+8>>2]=0;k[a+12>>2]=0;k[a+16>>2]=0;k[a+20>>2]=0;return}function Ni(a){a=a|0;var b=0;k[a>>2]=0;b=a+8|0;k[b>>2]=0;k[b+4>>2]=0;k[b+8>>2]=0;k[b+12>>2]=0;jk(a+24|0);i[a+36>>0]=0;return}function Oi(){var a=0,b=0;a=r;r=r+16|0;if(!(Ca(17256,3)|0)){b=ua(k[4315]|0)|0;r=a;return b|0}else jj(16417,a);return 0}function Pi(a,b,c,d){a=a|0;b=b|0;c=c|0;d=d|0;var e=0,f=0;e=a;f=c;c=mi(e,f)|0;a=M;return (M=($(b,f)|0)+($(d,e)|0)+a|a&0,c|0|0)|0}function Qi(a){a=a|0;Ej(a);k[a>>2]=3156;a=a+16|0;k[a>>2]=0;k[a+4>>2]=0;k[a+8>>2]=0;k[a+12>>2]=0;return}function Ri(a){a=a|0;$h(a);a=a+64|0;k[a>>2]=0;k[a+4>>2]=0;k[a+8>>2]=0;k[a+12>>2]=0;k[a+16>>2]=0;i[a+20>>0]=0;return}function Si(a){a=a|0;var b=0;b=(a|0)==0?1:a;while(1){a=$a(b)|0;if(a|0)break;a=xk()|0;if(!a){a=0;break}Xa[a&3]()}return a|0}function Ti(a){a=a|0;k[a>>2]=0;k[a+4>>2]=0;k[a+8>>2]=0;k[a+12>>2]=0;k[a+16>>2]=0;k[a+20>>2]=0;k[a+24>>2]=0;k[a+28>>2]=0;return}function Ui(a){a=a|0;var b=0;b=r;r=r+16|0;zb(a);if(!(va(k[4315]|0,0)|0)){r=b;return}else jj(16516,b)}function Vi(a){a=a|0;Qi(a);k[a>>2]=3848;k[a+32>>2]=-1;k[a+36>>2]=0;o[a+40>>2]=da(0.0);return}function Wi(a){a=a|0;k[a>>2]=3076;a=a+4|0;k[a>>2]=0;k[a+4>>2]=0;k[a+8>>2]=0;k[a+12>>2]=0;k[a+16>>2]=0;j[a+20>>1]=0;return}function Xi(a,b,c){a=a|0;b=b|0;c=c|0;k[a>>2]=b;b=a+8|0;k[b>>2]=c;k[b+4>>2]=0;c=a+16|0;k[c>>2]=0;k[c+4>>2]=0;return}function Yi(a){a=a|0;k[a>>2]=0;k[a+4>>2]=0;k[a+8>>2]=0;a=a+16|0;k[a>>2]=0;k[a+4>>2]=0;k[a+8>>2]=0;k[a+12>>2]=0;return}function Zi(a,b,c,d){a=a|0;b=b|0;c=c|0;d=d|0;return Xe(b,c,d)|0}function _i(a,b,c){a=a|0;b=b|0;c=c|0;return Eh(a,b,c)|0}function $i(a){a=a|0;var b=0,c=0;b=r;r=r+16|0;c=b;k[c>>2]=k[a+60>>2];a=Ij(za(6,c|0)|0)|0;r=b;return a|0}function aj(a,b,c){a=a|0;b=b|0;c=c|0;return qi(b,c)|0}function bj(a,b,c,d,e){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;return ((e|0)==2?0:e+1|0)|0}function cj(a,b,c,d,e,f,g){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;f=f|0;g=g|0;return Ua[a&63](b|0,c|0,d|0,e|0,f|0,g|0)|0}function dj(a){a=a|0;k[a>>2]=3048;a=a+4|0;k[a>>2]=0;k[a+4>>2]=0;k[a+8>>2]=0;k[a+12>>2]=0;k[a+16>>2]=0;return}function ej(a,b,c){a=a|0;b=da(b);c=c|0;var d=Pa;d=da(da(1.0)/da(c|0));o[a+4>>2]=d;o[a>>2]=b;return}function fj(){var a=0;a=r;r=r+16|0;if(!(ya(17260,74)|0)){r=a;return}else jj(16466,a)}function gj(a,b,c,d){a=a|0;b=b|0;c=c|0;d=d|0;return lh(b,c,d)|0}function hj(a,b,c,d,e,f,g){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;f=f|0;g=g|0;Ya[a&3](b|0,c|0,d|0,e|0,f|0,g|0)}function ij(a,b,c){a=a|0;b=b|0;c=c|0;if((c|0)<32){M=b<>>32-c;return a<>2]=b;b=k[1319]|0;qf(b,a,c)|0;Rg(10,b)|0;Ba()}function kj(a,b,c){a=a|0;b=b|0;c=c|0;return aj(a,b,c)|0}function lj(a,b,c){a=a|0;b=b|0;c=c|0;if((c|0)<32){M=b>>>c;return a>>>c|(b&(1<>>c-32|0}function mj(){}function nj(a,b,c,d){a=a|0;b=b|0;c=c|0;d=d|0;d=b-d-(c>>>0>a>>>0|0)>>>0;return (M=d,a-c>>>0|0)|0}function oj(a){a=a|0;var b=0;k[a>>2]=2980;a=a+4|0;b=a+64|0;do{k[a>>2]=0;a=a+4|0}while((a|0)<(b|0));return}function pj(a){a=a|0;return 4}function qj(a,b,c){a=a|0;b=b|0;c=c|0;k[a+16>>2]=b;k[a+20>>2]=c;return 1}function rj(a,b,c,d,e,f){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;f=f|0;Sa[a&3](b|0,c|0,d|0,e|0,f|0)}function sj(a,b){a=a|0;b=b|0;return Fj(b)|0}function tj(a,b){a=a|0;b=b|0;return Za[k[(k[a>>2]|0)+48>>2]&63](a,b)|0}function uj(a){a=a|0;k[a>>2]=0;k[a+4>>2]=0;k[a+8>>2]=0;k[a+12>>2]=0;k[a+16>>2]=0;return}function vj(a){a=a|0;Qi(a);k[a>>2]=3908;k[a+32>>2]=-1;return}function wj(a,b){a=a|0;b=b|0;k[a+8>>2]=b;k[a+12>>2]=-1;return 1}function xj(a,b){a=a|0;b=b|0;return Aj(a,b)|0}function yj(a){a=a|0;k[a+12>>2]=0;k[a+16>>2]=0;k[a>>2]=0;o[a+4>>2]=da(0.0);return}function zj(a,b,c){a=a|0;b=b|0;c=c|0;return si(b,c)|0}function Aj(a,b){a=a|0;b=b|0;return zh(b)|0}function Bj(a,b,c,d){a=a|0;b=b|0;c=c|0;d=d|0;c=a+c>>>0;return (M=b+d+(c>>>0>>0|0)>>>0,c|0)|0}function Cj(a,b){a=a|0;b=b|0;return qk(b)|0}function Dj(){var a=0;if(!(k[4178]|0))a=16756;else{a=(ol()|0)+64|0;a=k[a>>2]|0}return a|0}function Ej(a){a=a|0;k[a>>2]=3120;k[a+4>>2]=0;k[a+8>>2]=0;k[a+12>>2]=-1;return}function Fj(a){a=a|0;return tg(a)|0}function Gj(a){a=a|0;if(!a)return;Ta[k[(k[a>>2]|0)+4>>2]&127](a);return}function Hj(a,b,c,d,e){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;_a[a&3](b|0,c|0,d|0,e|0)}function Ij(a){a=a|0;var b=0;if(a>>>0>4294963200){b=Dj()|0;k[b>>2]=0-a;a=-1}return a|0}function Jj(a,b){a=a|0;b=b|0;return 0}function Kj(a){a=a|0;var b=0;b=r;r=r+16|0;Xa[a&3]();jj(16569,b)}function Lj(a){a=a|0;if(!a)a=0;else a=(uf(a,816,888,0)|0)!=0;return a&1|0}function Mj(a){a=a|0;gg(a);gl(a);return}function Nj(a,b){a=a|0;b=b|0;return da(Sj(a,b))}function Oj(a,b,c,d){a=a|0;b=b|0;c=c|0;d=d|0;return Ra[a&31](b|0,c|0,d|0)|0}function Pj(a,b,c){a=a|0;b=b|0;c=c|0;Xi(a,b,c);return}function Qj(a){a=a|0;if(!a)return;jl(a+24|0);gl(a);return}function Rj(){var a=0;a=Si(64)|0;$h(a);return a|0}function Sj(a,b){a=a|0;b=b|0;return da(o[(k[a>>2]|0)+(b<<2)>>2])}function Tj(a){a=a|0;return i[(k[a+8>>2]|0)+24>>0]|0}function Uj(a,b){a=a|0;b=b|0;return -1}function Vj(a){a=a|0;return 3}function Wj(a,b){a=a|0;b=b|0;return dk(a,b)|0}function Xj(a,b,c,d){a=a|0;b=b|0;c=c|0;d=d|0;Wa[a&7](b|0,c|0,d|0)}function Yj(){var a=0;a=Si(88)|0;Ri(a);return a|0}function Zj(a){a=a|0;return k[a+4>>2]|0}function _j(a){a=a|0;var b=0;b=r;r=r+a|0;r=r+15&-16;return b|0}function $j(a,b){a=a|0;b=b|0;if(!a)a=0;else a=Hg(a,b,0)|0;return a|0}function ak(a){a=a|0;return ((k[a+84>>2]|0)-(k[a+80>>2]|0)|0)/12|0|0}function bk(){var a=0;a=Si(12)|0;jk(a);return a|0}function ck(){var a=0;a=Si(40)|0;Ni(a);return a|0}function dk(a,b){a=a|0;b=b|0;return k[(k[a>>2]|0)+(b<<2)>>2]|0}function ek(a,b,c,d,e,f){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;f=f|0;ea(3);return 0}function fk(a){a=a|0;o[a>>2]=da(1.0);o[a+4>>2]=da(1.0);return}function gk(a){a=a|0;dj(a);k[a>>2]=5256;return}function hk(a){a=a|0;return (k[a+8>>2]|0)-(k[a+4>>2]|0)>>2|0}function ik(a,b,c,d){a=a|0;b=b|0;c=c|0;d=d|0;return Wc(a,b,c,d,0)|0}function jk(a){a=a|0;k[a>>2]=0;k[a+4>>2]=0;k[a+8>>2]=0;return}function kk(){var a=0;a=Si(68)|0;oj(a);return a|0}function lk(a){a=a|0;Ka(16098,15980,315,16121)}function mk(a){a=a|0;Ka(15957,15980,304,16077)}function nk(a,b,c){a=a|0;b=b|0;c=c|0;return Za[a&63](b|0,c|0)|0}function ok(a,b,c,d,e,f){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;f=f|0;ea(7)}function pk(){var a=0;a=Si(1)|0;jl(a);return a|0}function qk(a){a=a|0;return kl(a)|0}function rk(a){a=a|0;if(!a)return;gl(a);return}function sk(a,b){a=a|0;b=b|0;if(!x){x=a;y=b}}function tk(){var a=0;a=Si(92)|0;Mi(a);return a|0}function uk(a){a=a|0;return (i[a+32>>0]|0)!=0|0}function vk(a,b,c,d,e){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;ea(1)}function wk(a){a=a|0;if(!(k[a+68>>2]|0))jl(a);return}function xk(){var a=0;a=k[4316]|0;k[4316]=a+0;return a|0}function yk(a){a=a|0;return i[a+24>>0]|0}function zk(a){a=a|0;return m[a+60>>1]|0|0}function Ak(a){a=a|0;return k[a+56>>2]|0}function Bk(){var a=0;a=k[1444]|0;k[1444]=a+0;return a|0}function Ck(a){a=a|0;fg(a);gl(a);return}function Dk(a){a=a|0;return 2}function Ek(a){a=a|0;return k[a+40>>2]|0}function Fk(a){a=a|0;return k[a+48>>2]|0}function Gk(a,b){a=a|0;b=b|0;return Va[a&127](b|0)|0}function Hk(a){a=a|0;return k[a+28>>2]|0}function Ik(a){a=a|0;Ea(a|0)|0;Ai()}function Jk(a){a=a|0;p[a+16>>3]=.5;return}function Kk(a){a=a|0;return k[a+80>>2]|0}function Lk(a,b){a=a|0;b=b|0;r=a;s=b}function Mk(a){a=a|0;return k[a+64>>2]|0}function Nk(a,b,c,d){a=a|0;b=b|0;c=c|0;d=d|0;ea(9)}function Ok(a,b){a=a|0;b=b|0;Ta[a&127](b|0)}function Pk(a){a=a|0;i[a+12>>0]=0;return}function Qk(a){a=a|0;return 1}function Rk(a,b,c){a=a|0;b=b|0;c=c|0;ea(0);return 0}function Sk(a){a=a|0;return (a&255)<<8|a>>8&255|0}function Tk(a){a=a|0;k[a>>2]=5872;return}function Uk(a,b){a=+a;b=b|0;return +(+_g(a,b))}function Vk(){return 3}function Wk(a,b,c){a=a|0;b=b|0;c=c|0;ea(5)}function Xk(){return -1}function Yk(){return 4}function Zk(){return 1}function _k(){return 2}function $k(a,b){a=a|0;b=b|0;ea(8);return 0}function al(a){a=a|0;return 16609}function bl(a){a=a|0;Xa[a&3]()}function cl(){La()}function dl(a){a=a|0;return Si(a)|0}function el(a){a=a|0;gl(a);return}function fl(a){a=a|0;r=a}function gl(a){a=a|0;zb(a);return}function hl(a){a=a|0;M=a}function il(a){a=a|0;ea(4);return 0}function jl(a){a=a|0;return}function kl(a){a=a|0;return 0}function ll(){return M|0}function ml(){return r|0}function nl(a){a=a|0;ea(2)}function ol(){return 0}function pl(){ea(6)} - -// EMSCRIPTEN_END_FUNCS -var Ra=[Rk,qj,Eh,Ph,Xf,_i,ef,Yc,ug,sh,vh,ci,Dg,cg,Le,Mh,Ig,Rk,Rk,Rk,Rk,Rk,Rk,Rk,Rk,Rk,Rk,Rk,Rk,Rk,Rk,Rk];var Sa=[vk,Cg,cf,vk];var Ta=[nl,fg,Ck,tb,kh,dh,Ei,yi,rh,fh,jl,el,Lh,Ch,wi,ji,ji,ji,ji,Yg,Ug,qh,eh,ji,ji,Wg,Tg,ih,$g,mh,bh,Ch,jl,el,el,el,Dh,uh,ei,Th,el,el,Fh,wh,gi,Zh,el,el,el,Gh,xh,hi,_h,el,el,Jh,Bh,oi,di,gg,Mj,fh,jl,el,fh,yi,jl,el,jl,jl,el,jl,el,wk,Ui,nl,nl,nl,nl,nl,nl,nl,nl,nl,nl,nl,nl,nl,nl,nl,nl,nl,nl,nl,nl,nl,nl,nl,nl,nl,nl,nl,nl,nl,nl,nl,nl,nl,nl,nl,nl,nl,nl,nl,nl,nl,nl,nl,nl,nl,nl,nl,nl,nl,nl,nl,nl,nl];var Ua=[ek,mc,cd,Kb,Yb,Ab,Jb,db,lb,Ic,sd,Qb,Zb,Bb,Mb,cb,kb,Gc,rd,Lg,Fg,Pd,ge,pc,Kc,gb,Cb,Te,Re,Ad,Od,nc,Dc,ib,Eb,_e,Ve,Ng,Kg,Td,he,qc,Oc,hb,Db,$e,We,Hd,Sd,oc,Hc,jb,Fb,df,bf,ek,ek,ek,ek,ek,ek,ek,ek,ek];var Va=[il,Zg,kl,Qk,Qk,Pe,th,Qk,Tj,Zj,kl,kl,Qk,kl,Qk,Qk,ai,Dk,ai,pj,ai,Vj,Uh,Qk,Qk,ai,Dk,ai,pj,ai,Vj,Uh,Qk,ye,Dk,kl,Zj,Qk,kl,Qk,Vj,Qk,Wh,Dk,Wh,pj,Wh,Vj,Qh,Qk,Qk,Wh,Dk,Wh,pj,Wh,Vj,Qh,Qk,kl,Zj,Qk,kl,Qk,Dk,Qk,Wh,Dk,Wh,pj,Wh,Vj,Qh,Qk,Qk,Wh,Dk,Wh,pj,Wh,Vj,Qh,Qk,Vg,qg,Vg,$i,al,il,il,il,il,il,il,il,il,il,il,il,il,il,il,il,il,il,il,il,il,il,il,il,il,il,il,il,il,il,il,il,il,il,il,il,il,il,il,il,il];var Wa=[Wk,hf,Ie,pf,xg,Wk,Wk,Wk];var Xa=[pl,cl,ig,fj];var Ya=[ok,ri,Hh,ok];var Za=[$k,Vc,wj,ag,Xb,Uj,Jj,dg,Ze,ke,Gd,Ji,li,fd,Kd,ke,Gd,Ji,li,fd,Kd,tj,Fe,Tf,Uj,Jj,dg,of,ie,Nd,Ji,ii,ed,ce,ie,Nd,Ji,ii,ed,ce,Uj,Jj,dg,of,ie,Nd,Ji,ii,ed,ce,ie,Nd,Ji,ii,ed,ce,re,Je,ph,kf,Ci,kg,qb,$k];var _a=[Nk,Di,Rh,Nk];return{_emscripten_bind_WebIDLWrapper_DecodeMeshFromBuffer_1:Cj,_emscripten_bind_DecoderBuffer_DecoderBuffer_0:ck,_bitshift64Shl:ij,_emscripten_bind_Mesh___destroy___0:Gj,_emscripten_bind_DracoFloat32Array_DracoFloat32Array_0:bk,_llvm_cttz_i32:Bi,_emscripten_bind_WebIDLWrapper_GetEncodedGeometryType_1:xj,_emscripten_bind_PointAttribute_byte_offset_0:Fk,___udivdi3:ik,_emscripten_bind_PointAttribute_normalized_0:uk,_bitshift64Lshr:lj,_i64Subtract:nj,___udivmoddi4:Wc,_emscripten_bind_WebIDLWrapper_GetAttributeFloat_3:Zi,_i64Add:Bj,_malloc:$a,_emscripten_enum_draco_GeometryAttribute_Type_NORMAL:Zk,___cxa_is_pointer_type:Lj,_emscripten_bind_PointAttribute_size_0:Kk,_emscripten_enum_draco_GeometryAttribute_Type_COLOR:_k,_emscripten_enum_draco_GeometryAttribute_Type_POSITION:ol,_emscripten_bind_VoidPtr___destroy___0:rk,_memset:Ah,_emscripten_bind_PointAttribute_attribute_type_0:Ak,_sbrk:Vh,_emscripten_bind_DecoderBuffer_Init_2:Pj,_emscripten_enum_draco_EncodedGeometryType_TRIANGULAR_MESH:Zk,_emscripten_bind_DecoderBuffer___destroy___0:Qj,_emscripten_bind_PointAttribute_custom_id_0:zk,_emscripten_enum_draco_GeometryAttribute_Type_INVALID:Xk,_emscripten_bind_DracoInt32Array___destroy___0:vi,_emscripten_bind_Mesh_num_points_0:Mk,___uremdi3:Ki,_emscripten_bind_Mesh_Mesh_0:tk,_emscripten_bind_WebIDLWrapper_GetAttribute_2:zj,_emscripten_bind_PointAttribute_components_count_0:yk,_emscripten_enum_draco_EncodedGeometryType_POINT_CLOUD:ol,_emscripten_enum_draco_GeometryAttribute_Type_TEX_COORD:Vk,_emscripten_enum_draco_GeometryAttribute_Type_GENERIC:Yk,_emscripten_bind_WebIDLWrapper_GetFaceFromMesh_3:gj,_emscripten_bind_DracoInt32Array_DracoInt32Array_0:bk,_pthread_self:ol,_emscripten_bind_PointAttribute_data_type_0:Hk,_llvm_bswap_i16:Sk,_emscripten_bind_Mesh_num_attributes_0:hk,_emscripten_bind_DracoFloat32Array_GetValue_1:Nj,_emscripten_bind_DracoFloat32Array___destroy___0:vi,_emscripten_bind_PointCloud_num_points_0:Mk,_emscripten_bind_PointCloud___destroy___0:Gj,_emscripten_bind_GeometryAttribute_GeometryAttribute_0:Rj,___muldsi3:mi,_emscripten_bind_PointAttribute_PointAttribute_0:Yj,_free:zb,_emscripten_enum_draco_EncodedGeometryType_INVALID_GEOMETRY_TYPE:Xk,_emscripten_bind_GeometryAttribute___destroy___0:rk,_emscripten_bind_Mesh_num_faces_0:ak,_emscripten_bind_DracoInt32Array_GetValue_1:Wj,_emscripten_bind_PointAttribute_byte_stride_0:Ek,_emscripten_bind_WebIDLWrapper_GetAttributeId_2:kj,_memcpy:nh,_emscripten_bind_WebIDLWrapper_WebIDLWrapper_0:pk,_memmove:ti,___muldi3:Pi,_emscripten_bind_PointCloud_num_attributes_0:hk,_emscripten_bind_WebIDLWrapper___destroy___0:rk,_emscripten_bind_WebIDLWrapper_DecodePointCloudFromBuffer_1:sj,_emscripten_bind_WebIDLWrapper_GetAttributeFloatForAllPoints_3:Li,_emscripten_bind_PointCloud_PointCloud_0:kk,_emscripten_bind_PointAttribute___destroy___0:hh,___cxa_can_catch:zi,runPostSets:mj,_emscripten_replace_memory:Qa,stackAlloc:_j,stackSave:ml,stackRestore:fl,establishStackSpace:Lk,setThrew:sk,setTempRet0:hl,getTempRet0:ll,dynCall_iiii:Oj,dynCall_viiiii:rj,dynCall_vi:Ok,dynCall_iiiiiii:cj,dynCall_ii:Gk,dynCall_viii:Xj,dynCall_v:bl,dynCall_viiiiii:hj,dynCall_iii:nk,dynCall_viiii:Hj}}) - - -// EMSCRIPTEN_END_ASM -(Module.asmGlobalArg,Module.asmLibraryArg,buffer);var _emscripten_bind_WebIDLWrapper_DecodeMeshFromBuffer_1=Module["_emscripten_bind_WebIDLWrapper_DecodeMeshFromBuffer_1"]=asm["_emscripten_bind_WebIDLWrapper_DecodeMeshFromBuffer_1"];var _emscripten_bind_DecoderBuffer_DecoderBuffer_0=Module["_emscripten_bind_DecoderBuffer_DecoderBuffer_0"]=asm["_emscripten_bind_DecoderBuffer_DecoderBuffer_0"];var _emscripten_bind_Mesh___destroy___0=Module["_emscripten_bind_Mesh___destroy___0"]=asm["_emscripten_bind_Mesh___destroy___0"];var _emscripten_bind_PointCloud___destroy___0=Module["_emscripten_bind_PointCloud___destroy___0"]=asm["_emscripten_bind_PointCloud___destroy___0"];var _i64Subtract=Module["_i64Subtract"]=asm["_i64Subtract"];var ___udivdi3=Module["___udivdi3"]=asm["___udivdi3"];var _emscripten_bind_WebIDLWrapper_GetEncodedGeometryType_1=Module["_emscripten_bind_WebIDLWrapper_GetEncodedGeometryType_1"]=asm["_emscripten_bind_WebIDLWrapper_GetEncodedGeometryType_1"];var _emscripten_bind_PointAttribute_byte_offset_0=Module["_emscripten_bind_PointAttribute_byte_offset_0"]=asm["_emscripten_bind_PointAttribute_byte_offset_0"];var _emscripten_bind_WebIDLWrapper_DecodePointCloudFromBuffer_1=Module["_emscripten_bind_WebIDLWrapper_DecodePointCloudFromBuffer_1"]=asm["_emscripten_bind_WebIDLWrapper_DecodePointCloudFromBuffer_1"];var _emscripten_bind_PointAttribute_normalized_0=Module["_emscripten_bind_PointAttribute_normalized_0"]=asm["_emscripten_bind_PointAttribute_normalized_0"];var _bitshift64Lshr=Module["_bitshift64Lshr"]=asm["_bitshift64Lshr"];var ___muldsi3=Module["___muldsi3"]=asm["___muldsi3"];var _emscripten_bind_WebIDLWrapper_GetAttributeFloat_3=Module["_emscripten_bind_WebIDLWrapper_GetAttributeFloat_3"]=asm["_emscripten_bind_WebIDLWrapper_GetAttributeFloat_3"];var _emscripten_bind_WebIDLWrapper_GetAttributeId_2=Module["_emscripten_bind_WebIDLWrapper_GetAttributeId_2"]=asm["_emscripten_bind_WebIDLWrapper_GetAttributeId_2"];var _emscripten_bind_WebIDLWrapper___destroy___0=Module["_emscripten_bind_WebIDLWrapper___destroy___0"]=asm["_emscripten_bind_WebIDLWrapper___destroy___0"];var ___cxa_is_pointer_type=Module["___cxa_is_pointer_type"]=asm["___cxa_is_pointer_type"];var _emscripten_bind_PointAttribute_size_0=Module["_emscripten_bind_PointAttribute_size_0"]=asm["_emscripten_bind_PointAttribute_size_0"];var _emscripten_enum_draco_GeometryAttribute_Type_COLOR=Module["_emscripten_enum_draco_GeometryAttribute_Type_COLOR"]=asm["_emscripten_enum_draco_GeometryAttribute_Type_COLOR"];var _emscripten_enum_draco_GeometryAttribute_Type_POSITION=Module["_emscripten_enum_draco_GeometryAttribute_Type_POSITION"]=asm["_emscripten_enum_draco_GeometryAttribute_Type_POSITION"];var _emscripten_bind_VoidPtr___destroy___0=Module["_emscripten_bind_VoidPtr___destroy___0"]=asm["_emscripten_bind_VoidPtr___destroy___0"];var _llvm_cttz_i32=Module["_llvm_cttz_i32"]=asm["_llvm_cttz_i32"];var _emscripten_bind_PointAttribute_attribute_type_0=Module["_emscripten_bind_PointAttribute_attribute_type_0"]=asm["_emscripten_bind_PointAttribute_attribute_type_0"];var _sbrk=Module["_sbrk"]=asm["_sbrk"];var _emscripten_bind_DecoderBuffer_Init_2=Module["_emscripten_bind_DecoderBuffer_Init_2"]=asm["_emscripten_bind_DecoderBuffer_Init_2"];var _memcpy=Module["_memcpy"]=asm["_memcpy"];var _emscripten_bind_DecoderBuffer___destroy___0=Module["_emscripten_bind_DecoderBuffer___destroy___0"]=asm["_emscripten_bind_DecoderBuffer___destroy___0"];var _emscripten_bind_PointAttribute_custom_id_0=Module["_emscripten_bind_PointAttribute_custom_id_0"]=asm["_emscripten_bind_PointAttribute_custom_id_0"];var _emscripten_enum_draco_GeometryAttribute_Type_INVALID=Module["_emscripten_enum_draco_GeometryAttribute_Type_INVALID"]=asm["_emscripten_enum_draco_GeometryAttribute_Type_INVALID"];var _emscripten_replace_memory=Module["_emscripten_replace_memory"]=asm["_emscripten_replace_memory"];var _emscripten_enum_draco_EncodedGeometryType_TRIANGULAR_MESH=Module["_emscripten_enum_draco_EncodedGeometryType_TRIANGULAR_MESH"]=asm["_emscripten_enum_draco_EncodedGeometryType_TRIANGULAR_MESH"];var _bitshift64Shl=Module["_bitshift64Shl"]=asm["_bitshift64Shl"];var ___uremdi3=Module["___uremdi3"]=asm["___uremdi3"];var _emscripten_bind_Mesh_Mesh_0=Module["_emscripten_bind_Mesh_Mesh_0"]=asm["_emscripten_bind_Mesh_Mesh_0"];var _emscripten_bind_WebIDLWrapper_GetAttribute_2=Module["_emscripten_bind_WebIDLWrapper_GetAttribute_2"]=asm["_emscripten_bind_WebIDLWrapper_GetAttribute_2"];var _emscripten_bind_DracoFloat32Array_DracoFloat32Array_0=Module["_emscripten_bind_DracoFloat32Array_DracoFloat32Array_0"]=asm["_emscripten_bind_DracoFloat32Array_DracoFloat32Array_0"];var _emscripten_enum_draco_EncodedGeometryType_POINT_CLOUD=Module["_emscripten_enum_draco_EncodedGeometryType_POINT_CLOUD"]=asm["_emscripten_enum_draco_EncodedGeometryType_POINT_CLOUD"];var _emscripten_bind_PointAttribute_components_count_0=Module["_emscripten_bind_PointAttribute_components_count_0"]=asm["_emscripten_bind_PointAttribute_components_count_0"];var ___udivmoddi4=Module["___udivmoddi4"]=asm["___udivmoddi4"];var _emscripten_enum_draco_GeometryAttribute_Type_GENERIC=Module["_emscripten_enum_draco_GeometryAttribute_Type_GENERIC"]=asm["_emscripten_enum_draco_GeometryAttribute_Type_GENERIC"];var _i64Add=Module["_i64Add"]=asm["_i64Add"];var _emscripten_bind_DracoInt32Array_DracoInt32Array_0=Module["_emscripten_bind_DracoInt32Array_DracoInt32Array_0"]=asm["_emscripten_bind_DracoInt32Array_DracoInt32Array_0"];var _pthread_self=Module["_pthread_self"]=asm["_pthread_self"];var _emscripten_bind_PointAttribute_PointAttribute_0=Module["_emscripten_bind_PointAttribute_PointAttribute_0"]=asm["_emscripten_bind_PointAttribute_PointAttribute_0"];var _emscripten_bind_WebIDLWrapper_GetFaceFromMesh_3=Module["_emscripten_bind_WebIDLWrapper_GetFaceFromMesh_3"]=asm["_emscripten_bind_WebIDLWrapper_GetFaceFromMesh_3"];var _llvm_bswap_i16=Module["_llvm_bswap_i16"]=asm["_llvm_bswap_i16"];var _emscripten_bind_Mesh_num_attributes_0=Module["_emscripten_bind_Mesh_num_attributes_0"]=asm["_emscripten_bind_Mesh_num_attributes_0"];var _emscripten_bind_DracoFloat32Array_GetValue_1=Module["_emscripten_bind_DracoFloat32Array_GetValue_1"]=asm["_emscripten_bind_DracoFloat32Array_GetValue_1"];var _emscripten_bind_DracoFloat32Array___destroy___0=Module["_emscripten_bind_DracoFloat32Array___destroy___0"]=asm["_emscripten_bind_DracoFloat32Array___destroy___0"];var _emscripten_bind_PointCloud_num_points_0=Module["_emscripten_bind_PointCloud_num_points_0"]=asm["_emscripten_bind_PointCloud_num_points_0"];var _emscripten_bind_DracoInt32Array___destroy___0=Module["_emscripten_bind_DracoInt32Array___destroy___0"]=asm["_emscripten_bind_DracoInt32Array___destroy___0"];var _emscripten_bind_GeometryAttribute_GeometryAttribute_0=Module["_emscripten_bind_GeometryAttribute_GeometryAttribute_0"]=asm["_emscripten_bind_GeometryAttribute_GeometryAttribute_0"];var runPostSets=Module["runPostSets"]=asm["runPostSets"];var _memset=Module["_memset"]=asm["_memset"];var _emscripten_bind_PointAttribute_data_type_0=Module["_emscripten_bind_PointAttribute_data_type_0"]=asm["_emscripten_bind_PointAttribute_data_type_0"];var _emscripten_bind_Mesh_num_points_0=Module["_emscripten_bind_Mesh_num_points_0"]=asm["_emscripten_bind_Mesh_num_points_0"];var _free=Module["_free"]=asm["_free"];var _emscripten_bind_GeometryAttribute___destroy___0=Module["_emscripten_bind_GeometryAttribute___destroy___0"]=asm["_emscripten_bind_GeometryAttribute___destroy___0"];var _emscripten_enum_draco_EncodedGeometryType_INVALID_GEOMETRY_TYPE=Module["_emscripten_enum_draco_EncodedGeometryType_INVALID_GEOMETRY_TYPE"]=asm["_emscripten_enum_draco_EncodedGeometryType_INVALID_GEOMETRY_TYPE"];var _emscripten_bind_Mesh_num_faces_0=Module["_emscripten_bind_Mesh_num_faces_0"]=asm["_emscripten_bind_Mesh_num_faces_0"];var _emscripten_enum_draco_GeometryAttribute_Type_NORMAL=Module["_emscripten_enum_draco_GeometryAttribute_Type_NORMAL"]=asm["_emscripten_enum_draco_GeometryAttribute_Type_NORMAL"];var _emscripten_bind_PointAttribute_byte_stride_0=Module["_emscripten_bind_PointAttribute_byte_stride_0"]=asm["_emscripten_bind_PointAttribute_byte_stride_0"];var _malloc=Module["_malloc"]=asm["_malloc"];var _emscripten_bind_WebIDLWrapper_WebIDLWrapper_0=Module["_emscripten_bind_WebIDLWrapper_WebIDLWrapper_0"]=asm["_emscripten_bind_WebIDLWrapper_WebIDLWrapper_0"];var _memmove=Module["_memmove"]=asm["_memmove"];var ___muldi3=Module["___muldi3"]=asm["___muldi3"];var _emscripten_bind_PointCloud_num_attributes_0=Module["_emscripten_bind_PointCloud_num_attributes_0"]=asm["_emscripten_bind_PointCloud_num_attributes_0"];var _emscripten_enum_draco_GeometryAttribute_Type_TEX_COORD=Module["_emscripten_enum_draco_GeometryAttribute_Type_TEX_COORD"]=asm["_emscripten_enum_draco_GeometryAttribute_Type_TEX_COORD"];var _emscripten_bind_DracoInt32Array_GetValue_1=Module["_emscripten_bind_DracoInt32Array_GetValue_1"]=asm["_emscripten_bind_DracoInt32Array_GetValue_1"];var _emscripten_bind_WebIDLWrapper_GetAttributeFloatForAllPoints_3=Module["_emscripten_bind_WebIDLWrapper_GetAttributeFloatForAllPoints_3"]=asm["_emscripten_bind_WebIDLWrapper_GetAttributeFloatForAllPoints_3"];var _emscripten_bind_PointCloud_PointCloud_0=Module["_emscripten_bind_PointCloud_PointCloud_0"]=asm["_emscripten_bind_PointCloud_PointCloud_0"];var _emscripten_bind_PointAttribute___destroy___0=Module["_emscripten_bind_PointAttribute___destroy___0"]=asm["_emscripten_bind_PointAttribute___destroy___0"];var ___cxa_can_catch=Module["___cxa_can_catch"]=asm["___cxa_can_catch"];var dynCall_iiii=Module["dynCall_iiii"]=asm["dynCall_iiii"];var dynCall_viiiii=Module["dynCall_viiiii"]=asm["dynCall_viiiii"];var dynCall_vi=Module["dynCall_vi"]=asm["dynCall_vi"];var dynCall_iiiiiii=Module["dynCall_iiiiiii"]=asm["dynCall_iiiiiii"];var dynCall_ii=Module["dynCall_ii"]=asm["dynCall_ii"];var dynCall_viii=Module["dynCall_viii"]=asm["dynCall_viii"];var dynCall_v=Module["dynCall_v"]=asm["dynCall_v"];var dynCall_viiiiii=Module["dynCall_viiiiii"]=asm["dynCall_viiiiii"];var dynCall_iii=Module["dynCall_iii"]=asm["dynCall_iii"];var dynCall_viiii=Module["dynCall_viiii"]=asm["dynCall_viiii"];Runtime.stackAlloc=asm["stackAlloc"];Runtime.stackSave=asm["stackSave"];Runtime.stackRestore=asm["stackRestore"];Runtime.establishStackSpace=asm["establishStackSpace"];Runtime.setTempRet0=asm["setTempRet0"];Runtime.getTempRet0=asm["getTempRet0"];function ExitStatus(status){this.name="ExitStatus";this.message="Program terminated with exit("+status+")";this.status=status}ExitStatus.prototype=new Error;ExitStatus.prototype.constructor=ExitStatus;var initialStackTop;var preloadStartTime=null;var calledMain=false;dependenciesFulfilled=function runCaller(){if(!Module["calledRun"])run();if(!Module["calledRun"])dependenciesFulfilled=runCaller};Module["callMain"]=Module.callMain=function callMain(args){args=args||[];ensureInitRuntime();var argc=args.length+1;function pad(){for(var i=0;i<4-1;i++){argv.push(0)}}var argv=[allocate(intArrayFromString(Module["thisProgram"]),"i8",ALLOC_NORMAL)];pad();for(var i=0;i0){return}preRun();if(runDependencies>0)return;if(Module["calledRun"])return;function doRun(){if(Module["calledRun"])return;Module["calledRun"]=true;if(ABORT)return;ensureInitRuntime();preMain();if(Module["onRuntimeInitialized"])Module["onRuntimeInitialized"]();if(Module["_main"]&&shouldRunNow)Module["callMain"](args);postRun()}if(Module["setStatus"]){Module["setStatus"]("Running...");setTimeout((function(){setTimeout((function(){Module["setStatus"]("")}),1);doRun()}),1)}else{doRun()}}Module["run"]=Module.run=run;function exit(status,implicit){if(implicit&&Module["noExitRuntime"]){return}if(Module["noExitRuntime"]){}else{ABORT=true;EXITSTATUS=status;STACKTOP=initialStackTop;exitRuntime();if(Module["onExit"])Module["onExit"](status)}if(ENVIRONMENT_IS_NODE){process["exit"](status)}else if(ENVIRONMENT_IS_SHELL&&typeof quit==="function"){quit(status)}throw new ExitStatus(status)}Module["exit"]=Module.exit=exit;var abortDecorators=[];function abort(what){if(what!==undefined){Module.print(what);Module.printErr(what);what=JSON.stringify(what)}else{what=""}ABORT=true;EXITSTATUS=1;var extra="\nIf this abort() is unexpected, build with -s ASSERTIONS=1 which can give more information.";var output="abort("+what+") at "+stackTrace()+extra;if(abortDecorators){abortDecorators.forEach((function(decorator){output=decorator(output,what)}))}throw output}Module["abort"]=Module.abort=abort;if(Module["preInit"]){if(typeof Module["preInit"]=="function")Module["preInit"]=[Module["preInit"]];while(Module["preInit"].length>0){Module["preInit"].pop()()}}var shouldRunNow=true;if(Module["noInitialRun"]){shouldRunNow=false}run();function WrapperObject(){}WrapperObject.prototype=Object.create(WrapperObject.prototype);WrapperObject.prototype.constructor=WrapperObject;WrapperObject.prototype.__class__=WrapperObject;WrapperObject.__cache__={};Module["WrapperObject"]=WrapperObject;function getCache(__class__){return(__class__||WrapperObject).__cache__}Module["getCache"]=getCache;function wrapPointer(ptr,__class__){var cache=getCache(__class__);var ret=cache[ptr];if(ret)return ret;ret=Object.create((__class__||WrapperObject).prototype);ret.ptr=ptr;return cache[ptr]=ret}Module["wrapPointer"]=wrapPointer;function castObject(obj,__class__){return wrapPointer(obj.ptr,__class__)}Module["castObject"]=castObject;Module["NULL"]=wrapPointer(0);function destroy(obj){if(!obj["__destroy__"])throw"Error: Cannot destroy object. (Did you create it yourself?)";obj["__destroy__"]();delete getCache(obj.__class__)[obj.ptr]}Module["destroy"]=destroy;function compare(obj1,obj2){return obj1.ptr===obj2.ptr}Module["compare"]=compare;function getPointer(obj){return obj.ptr}Module["getPointer"]=getPointer;function getClass(obj){return obj.__class__}Module["getClass"]=getClass;var ensureCache={buffer:0,size:0,pos:0,temps:[],needed:0,prepare:(function(){if(this.needed){for(var i=0;i=this.size){assert(len>0);this.needed+=len;ret=Module["_malloc"](len);this.temps.push(ret)}else{ret=this.buffer+this.pos;this.pos+=len}return ret}),copy:(function(array,view,offset){var offsetShifted=offset;var bytes=view.BYTES_PER_ELEMENT;switch(bytes){case 2:offsetShifted>>=1;break;case 4:offsetShifted>>=2;break;case 8:offsetShifted>>=3;break}for(var i=0;i>>16&65535)*H+n*(k>>>16&65535)<<16>>>0)|0}},"es6-impl","es3"); -$jscomp.polyfill("Math.clz32",function(n){return n?n:function(f){f=Number(f)>>>0;if(0===f)return 32;var k=0;0===(f&4294901760)&&(f<<=16,k+=16);0===(f&4278190080)&&(f<<=8,k+=8);0===(f&4026531840)&&(f<<=4,k+=4);0===(f&3221225472)&&(f<<=2,k+=2);0===(f&2147483648)&&k++;return k}},"es6-impl","es3");$jscomp.polyfill("Math.trunc",function(n){return n?n:function(f){f=Number(f);if(isNaN(f)||Infinity===f||-Infinity===f||0===f)return f;var k=Math.floor(Math.abs(f));return 0>f?-k:k}},"es6-impl","es3"); -var DracoModule=function(n){function f(a){eval.call(null,a)}function k(a,c){a||L("Assertion failed: "+c)}function P(a,c,d){c=c||"i8";"*"===c.charAt(c.length-1)&&(c="i32");switch(c){case "i1":return M[a>>0];case "i8":return M[a>>0];case "i16":return fa[a>>1];case "i32":return t[a>>2];case "i64":return t[a>>2];case "float":return ma[a>>2];case "double":return na[a>>3];default:L("invalid type for setValue: "+c)}return null}function H(a,c,d,e){var b,f;"number"===typeof a?(b=!0,f=a):(b=!1,f=a.length); -var g="string"===typeof c?c:null;d=4==d?e:["function"===typeof S?S:h.staticAlloc,h.stackAlloc,h.staticAlloc,h.dynamicAlloc][void 0===d?2:d](Math.max(f,g?1:c.length));if(b){e=d;k(0==(d&3));for(a=d+(f&-4);e>2]=0;for(a=d+f;e>0]=0;return d}if("i8"===g)return a.subarray||a.slice?D.set(a,d):D.set(new Uint8Array(a),d),d;e=0;for(var n,q;e>0]=m;break;case "i8":M[p>>0]=m;break;case "i16":fa[p>>1]=m;break;case "i32":t[p>>2]=m;break;case "i64":tempI64=[m>>>0,(tempDouble=m,1<=+gb(tempDouble)?0>>0:~~+jb((tempDouble-+(~~tempDouble>>>0))/4294967296)>>>0:0)];t[p>>2]=tempI64[0];t[p+4>>2]=tempI64[1];break;case "float":ma[p>>2]=m;break;case "double":na[p>>3]=m;break;default:L("invalid type for setValue: "+u)}q!==b&&(n=h.getNativeTypeSize(b),q=b);e+= -n}}return d}function ga(b,c){if(0===c||!b)return"";for(var d=0,e,l=0;;){e=D[b+l>>0];d|=e;if(0==e&&!c)break;l++;if(c&&l==c)break}c||(c=l);e="";if(128>d){for(;0=g&&(g=65536+((g&1023)<<10)|a.charCodeAt(++k)&1023);if(127>=g){if(d>=e)break;c[d++]=g}else{if(2047>= -g){if(d+1>=e)break;c[d++]=192|g>>6}else{if(65535>=g){if(d+2>=e)break;c[d++]=224|g>>12}else{if(2097151>=g){if(d+3>=e)break;c[d++]=240|g>>18}else{if(67108863>=g){if(d+4>=e)break;c[d++]=248|g>>24}else{if(d+5>=e)break;c[d++]=252|g>>30;c[d++]=128|g>>24&63}c[d++]=128|g>>18&63}c[d++]=128|g>>12&63}c[d++]=128|g>>6&63}c[d++]=128|g&63}}c[d]=0;return d-b}function Ja(a){for(var b=0,d=0;d=e&&(e=65536+((e&1023)<<10)|a.charCodeAt(++d)&1023);127>=e?++b:b=2047>= -e?b+2:65535>=e?b+3:2097151>=e?b+4:67108863>=e?b+5:b+6}return b}function kb(b){return b.replace(/__Z[\w\d_]+/g,function(b){var c;a:{var e=a.___cxa_demangle||a.__cxa_demangle;if(e)try{var l=b.substr(1),k=Ja(l)+1,g=S(k);Ia(l,D,g,k);var f=S(4),m=e(g,0,0,f);if(0===P(f,"i32")&&m){c=ga(m);break a}}catch(tc){}finally{g&&va(g),f&&va(f),m&&va(m)}else h.warnOnce("warning: build with -s DEMANGLE_SUPPORT=1 to link in libcxxabi demangling");c=b}return b===c?b:b+" ["+c+"]"})}function Ka(){var b;a:{b=Error();if(!b.stack){try{throw Error(0); -}catch(c){b=c}if(!b.stack){b="(no stack trace available)";break a}}b=b.stack.toString()}a.extraStackTrace&&(b+="\n"+a.extraStackTrace());return kb(b)}function wa(a,c){0>2]>c)return!1;for(A=Math.max(A,lb);A>2];)A=536870912>=A?wa(2*A,b):Math.min(wa((3*A+2147483648)/4,b),c);b=a.reallocBuffer(A);if(!b||b.byteLength!=A)return!1;a.buffer=z=b;xa();return!0}function Y(b){for(;0>2]=b;for(var b=ia.buffer,l= -0;l>2],c.adjusted=b,(h.setTempRet0(e[l]),b)|0;b=t[b>>2];return(h.setTempRet0(d),b)|0}function oa(b,c){W.push(function(){a.dynCall_vi(b,c)});oa.level=W.length}function ja(b,c){ja.seen||(ja.seen={});b in ja.seen||(a.dynCall_v(c),ja.seen[b]=1)}function T(b,c){u.varargs=c;try{var d=u.get(),e=u.get(),l=u.get(),f=0;T.buffer||(T.buffers=[null,[],[]],T.printChar=function(b,c){var d=T.buffers[b];k(d);if(0===c||10===c){var e=1===b?a.print:a.printErr, -l;a:{for(var f=l=0;d[f];)++f;if(16g?f+=String.fromCharCode(g):(g-=65536,f+=String.fromCharCode(55296|g>>10,56320| -g&1023)))):f+=String.fromCharCode(g)}}e(l);d.length=0}else d.push(c)});for(var g=0;g>2],h=t[e+(8*g+4)>>2],n=0;na.length||3>2];a=(b+a+15|0)&-16;t[Q>>2]=a;return a>=A&&!Na()?(t[Q>>2]=b,0):b},alignMemory:function(a, -c){return Math.ceil(a/(c?c:16))*(c?c:16)},makeBigInt:function(a,c,d){return d?+(a>>>0)+4294967296*+(c>>>0):+(a>>>0)+4294967296*+(c|0)},GLOBAL_BASE:1024,QUANTUM_SIZE:4,__dummy__:0},ba=0,Sa="undefined"!==typeof TextDecoder?new TextDecoder("utf8"):void 0;"undefined"!==typeof TextDecoder&&new TextDecoder("utf-16le");var ya=65536,Oa=16777216,lb=16777216,z,M,D,fa,La,t,Ma,ma,na,qa,O,Ea,I,ra,Fa,Q;qa=O=Ea=I=ra=Fa=Q=0;a.reallocBuffer||(a.reallocBuffer=function(a){var b;try{if(ArrayBuffer.transfer)b=ArrayBuffer.transfer(z, -a);else{var d=M;b=new ArrayBuffer(a);(new Int8Array(b)).set(d)}}catch(e){return!1}return vb(b)?b:!1});var sa;try{sa=Function.prototype.call.bind(Object.getOwnPropertyDescriptor(ArrayBuffer.prototype,"byteLength").get),sa(new ArrayBuffer(4))}catch(b){sa=function(a){return a.byteLength}}var Ga=a.TOTAL_STACK||5242880,A=a.TOTAL_MEMORY||16777216;A>>16)*e+b*(c>>>16)<<16)|0});Math.imul=Math.imul;if(!Math.fround){var bb=new Float32Array(1);Math.fround=function(a){bb[0]=a;return bb[0]}}Math.fround=Math.fround;Math.clz32||(Math.clz32=function(a){a>>>=0;for(var b=0;32>b;b++)if(a&1<<31-b)return b;return 32});Math.clz32=Math.clz32;Math.trunc||(Math.trunc=function(a){return 0>a?Math.ceil(a):Math.floor(a)});Math.trunc=Math.trunc;var gb=Math.abs,jb=Math.ceil,ib=Math.floor,hb=Math.min,V=0,za=null,ha=null;a.preloadedImages={};a.preloadedAudios={}; -var K=null;(function(b){function c(a,b){var c=p;if(0>a.indexOf("."))c=(c||{})[a];else var d=a.split("."),c=(c||{})[d[0]],c=(c||{})[d[1]];b&&(c=(c||{})[b]);void 0===c&&L("bad lookupImport to ("+a+")."+b);return c}function d(c){var d=b.buffer;c.byteLength>>0)/(b>>>0)>>>0},"i32s-rem":function(a,b){return(a|0)%(b|0)|0},"i32u-rem":function(a,b){return(a>>>0)%(b>>>0)>>>0}, -"debugger":function(){debugger}},parent:b},q=null;b.asmPreload=b.asm;b.reallocBuffer=function(a){a=wa(a,b.usingWasm?ya:Oa);var c=b.buffer,d=c.byteLength;if(b.usingWasm)try{return-1!==b.wasmMemory.grow((a-d)/65536)?b.buffer=b.wasmMemory.buffer:null}catch(uc){return null}else return q.__growWasmMemory((a-d)/65536),b.buffer!==c?b.buffer:null};b.asm=function(a,h,u){if(!h.table){var t=b.wasmTableSize;void 0===t&&(t=1024);var w=b.wasmMaxTableSize;h.table="object"===typeof WebAssembly&&"function"===typeof WebAssembly.Table? -void 0!==w?new WebAssembly.Table({initial:t,maximum:w,element:"anyfunc"}):new WebAssembly.Table({initial:t,element:"anyfunc"}):Array(t);b.wasmTable=h.table}h.memoryBase||(h.memoryBase=b.STATIC_BASE);h.tableBase||(h.tableBase=0);for(var v,t=g.split(","),w=0;w>2]},getStr:function(){return ga(u.get())},get64:function(){var a=u.get(),c=u.get();0<=a?k(0===c):k(-1===c);return a},getZero:function(){k(0===u.get())}},ta={};a._sbrk=Ab;a._memmove=Bb;var Ha=1;a._pthread_self=Cb;a._malloc=S;W.push(function(){var b= -a._fflush;b&&b(0);if(b=T.printChar){var c=T.buffers;c[1].length&&b(1,10);c[2].length&&b(2,10)}});Q=H(1,"i32",2);Ea=I=h.alignMemory(O);ra=Ea+Ga;Fa=h.alignMemory(ra);t[Q>>2]=Fa;a.wasmTableSize=504;a.wasmMaxTableSize=504;a.asmGlobalArg={Math:Math,Int8Array:Int8Array,Int16Array:Int16Array,Int32Array:Int32Array,Uint8Array:Uint8Array,Uint16Array:Uint16Array,Uint32Array:Uint32Array,Float32Array:Float32Array,Float64Array:Float64Array,NaN:NaN,Infinity:Infinity,byteLength:sa};a.asmLibraryArg={abort:L,assert:k, -enlargeMemory:Na,getTotalMemory:function(){return A},abortOnCannotGrowMemory:function(){L("Cannot enlarge memory arrays. Either (1) compile with -s TOTAL_MEMORY=X with X higher than the current value "+A+", (2) compile with -s ALLOW_MEMORY_GROWTH=1 which adjusts the size at runtime but prevents some optimizations, (3) set Module.TOTAL_MEMORY to a higher value before the program runs, or if you want malloc to return NULL (0) instead of this abort, compile with -s ABORTING_MALLOC=0 ")},invoke_iiii:function(b, -c,d,e){try{return a.dynCall_iiii(b,c,d,e)}catch(l){if("number"!==typeof l&&"longjmp"!==l)throw l;a.setThrew(1,0)}},invoke_viiiii:function(b,c,d,e,l,f){try{a.dynCall_viiiii(b,c,d,e,l,f)}catch(g){if("number"!==typeof g&&"longjmp"!==g)throw g;a.setThrew(1,0)}},invoke_vi:function(b,c){try{a.dynCall_vi(b,c)}catch(d){if("number"!==typeof d&&"longjmp"!==d)throw d;a.setThrew(1,0)}},invoke_iiiiiii:function(b,c,d,e,l,f,g){try{return a.dynCall_iiiiiii(b,c,d,e,l,f,g)}catch(w){if("number"!==typeof w&&"longjmp"!== -w)throw w;a.setThrew(1,0)}},invoke_ii:function(b,c){try{return a.dynCall_ii(b,c)}catch(d){if("number"!==typeof d&&"longjmp"!==d)throw d;a.setThrew(1,0)}},invoke_viii:function(b,c,d,e){try{a.dynCall_viii(b,c,d,e)}catch(l){if("number"!==typeof l&&"longjmp"!==l)throw l;a.setThrew(1,0)}},invoke_v:function(b){try{a.dynCall_v(b)}catch(c){if("number"!==typeof c&&"longjmp"!==c)throw c;a.setThrew(1,0)}},invoke_viiiiii:function(b,c,d,e,l,f,g){try{a.dynCall_viiiiii(b,c,d,e,l,f,g)}catch(w){if("number"!==typeof w&& -"longjmp"!==w)throw w;a.setThrew(1,0)}},invoke_iii:function(b,c,d){try{return a.dynCall_iii(b,c,d)}catch(e){if("number"!==typeof e&&"longjmp"!==e)throw e;a.setThrew(1,0)}},invoke_viiii:function(b,c,d,e,l){try{a.dynCall_viiii(b,c,d,e,l)}catch(C){if("number"!==typeof C&&"longjmp"!==C)throw C;a.setThrew(1,0)}},_pthread_cleanup_pop:function(){k(oa.level==W.length,"cannot pop if something else added meanwhile!");W.pop();oa.level=W.length},_pthread_getspecific:function(a){return ta[a]||0},_pthread_setspecific:function(a, -c){if(!(a in ta))return 22;ta[a]=c;return 0},_pthread_cleanup_push:oa,___cxa_throw:function(a,c,d){y.infos[a]={ptr:a,adjusted:a,type:c,destructor:d,refcount:0,caught:!1,rethrown:!1};y.last=a;"uncaught_exception"in Z?Z.uncaught_exception++:Z.uncaught_exception=1;throw a+" - Exception catching is disabled, this exception cannot be caught. Compile with -s DISABLE_EXCEPTION_CATCHING=0 or DISABLE_EXCEPTION_CATCHING=2 to catch.";},_pthread_key_create:function(a,c){if(0==a)return 22;t[a>>2]=Ha;ta[Ha]=0; -Ha++;return 0},_abort:function(){a.abort()},___setErrNo:function(b){a.___errno_location&&(t[a.___errno_location()>>2]=b);return b},___syscall6:function(a,c){u.varargs=c;try{var b=u.getStreamFromFD();FS.close(b);return 0}catch(e){return"undefined"!==typeof FS&&e instanceof FS.ErrnoError||L(e),-e.errno}},_pthread_once:ja,___syscall146:T,___cxa_begin_catch:function(a){var b=y.infos[a];b&&!b.caught&&(b.caught=!0,Z.uncaught_exception--);b&&(b.rethrown=!1);y.caught.push(a);y.addRef(y.deAdjust(a));return a}, -_emscripten_memcpy_big:function(a,c,d){D.set(D.subarray(c,c+d),a);return a},___gxx_personality_v0:function(){},___syscall140:function(a,c){u.varargs=c;try{var b=u.getStreamFromFD(),e=u.get(),l=u.get(),f=u.get(),g=u.get();k(0===e);FS.llseek(b,l,g);t[f>>2]=b.position;b.getdents&&0===l&&0===g&&(b.getdents=null);return 0}catch(w){return"undefined"!==typeof FS&&w instanceof FS.ErrnoError||L(w),-w.errno}},___resumeException:function(a){y.last||(y.last=a);throw a+" - Exception catching is disabled, this exception cannot be caught. Compile with -s DISABLE_EXCEPTION_CATCHING=0 or DISABLE_EXCEPTION_CATCHING=2 to catch."; -},___cxa_find_matching_catch:ia,___assert_fail:function(a,c,d,e){ba=!0;throw"Assertion failed: "+ga(a)+", at: "+[c?ga(c):"unknown filename",d,e?ga(e):"unknown function"]+" at "+Ka();},___cxa_pure_virtual:function(){ba=!0;throw"Pure virtual function called!";},___cxa_allocate_exception:function(a){return S(a)},__ZSt18uncaught_exceptionv:Z,DYNAMICTOP_PTR:Q,tempDoublePtr:wb,ABORT:ba,STACKTOP:I,STACK_MAX:ra};var cb=a.asm(a.asmGlobalArg,a.asmLibraryArg,z);a.asm=cb;var Db=a._emscripten_bind_WebIDLWrapper_DecodeMeshFromBuffer_1= -function(){return a.asm._emscripten_bind_WebIDLWrapper_DecodeMeshFromBuffer_1.apply(null,arguments)},sb=a._emscripten_bind_DecoderBuffer_DecoderBuffer_0=function(){return a.asm._emscripten_bind_DecoderBuffer_DecoderBuffer_0.apply(null,arguments)},Eb=a._emscripten_bind_Mesh___destroy___0=function(){return a.asm._emscripten_bind_Mesh___destroy___0.apply(null,arguments)};a.stackSave=function(){return a.asm.stackSave.apply(null,arguments)};var Fb=a._emscripten_bind_PointAttribute_components_count_0=function(){return a.asm._emscripten_bind_PointAttribute_components_count_0.apply(null, -arguments)},Gb=a._emscripten_bind_WebIDLWrapper_GetEncodedGeometryType_1=function(){return a.asm._emscripten_bind_WebIDLWrapper_GetEncodedGeometryType_1.apply(null,arguments)},Hb=a._emscripten_bind_PointAttribute_byte_offset_0=function(){return a.asm._emscripten_bind_PointAttribute_byte_offset_0.apply(null,arguments)},Ib=a._emscripten_bind_WebIDLWrapper_DecodePointCloudFromBuffer_1=function(){return a.asm._emscripten_bind_WebIDLWrapper_DecodePointCloudFromBuffer_1.apply(null,arguments)},Jb=a._emscripten_bind_PointAttribute_normalized_0= -function(){return a.asm._emscripten_bind_PointAttribute_normalized_0.apply(null,arguments)},Kb=a._emscripten_bind_PointCloud___destroy___0=function(){return a.asm._emscripten_bind_PointCloud___destroy___0.apply(null,arguments)},Lb=a._emscripten_bind_WebIDLWrapper_GetAttributeFloat_3=function(){return a.asm._emscripten_bind_WebIDLWrapper_GetAttributeFloat_3.apply(null,arguments)},Mb=a._emscripten_bind_WebIDLWrapper_GetAttributeId_2=function(){return a.asm._emscripten_bind_WebIDLWrapper_GetAttributeId_2.apply(null, -arguments)};a.setTempRet0=function(){return a.asm.setTempRet0.apply(null,arguments)};a.setThrew=function(){return a.asm.setThrew.apply(null,arguments)};a.___cxa_is_pointer_type=function(){return a.asm.___cxa_is_pointer_type.apply(null,arguments)};var Nb=a._emscripten_bind_PointAttribute_size_0=function(){return a.asm._emscripten_bind_PointAttribute_size_0.apply(null,arguments)},Ob=a._emscripten_enum_draco_GeometryAttribute_Type_COLOR=function(){return a.asm._emscripten_enum_draco_GeometryAttribute_Type_COLOR.apply(null, -arguments)},Pb=a._emscripten_enum_draco_GeometryAttribute_Type_POSITION=function(){return a.asm._emscripten_enum_draco_GeometryAttribute_Type_POSITION.apply(null,arguments)},Qb=a._emscripten_bind_VoidPtr___destroy___0=function(){return a.asm._emscripten_bind_VoidPtr___destroy___0.apply(null,arguments)},yb=a._memset=function(){return a.asm._memset.apply(null,arguments)},Rb=a._emscripten_bind_PointAttribute_attribute_type_0=function(){return a.asm._emscripten_bind_PointAttribute_attribute_type_0.apply(null, -arguments)},Ab=a._sbrk=function(){return a.asm._sbrk.apply(null,arguments)},Sb=a._emscripten_bind_DecoderBuffer_Init_2=function(){return a.asm._emscripten_bind_DecoderBuffer_Init_2.apply(null,arguments)},zb=a._memcpy=function(){return a.asm._memcpy.apply(null,arguments)},Tb=a._emscripten_bind_DecoderBuffer___destroy___0=function(){return a.asm._emscripten_bind_DecoderBuffer___destroy___0.apply(null,arguments)};a.stackAlloc=function(){return a.asm.stackAlloc.apply(null,arguments)};var Ub=a._emscripten_bind_PointAttribute_custom_id_0= -function(){return a.asm._emscripten_bind_PointAttribute_custom_id_0.apply(null,arguments)},Vb=a._emscripten_enum_draco_GeometryAttribute_Type_INVALID=function(){return a.asm._emscripten_enum_draco_GeometryAttribute_Type_INVALID.apply(null,arguments)},Wb=a._emscripten_enum_draco_EncodedGeometryType_TRIANGULAR_MESH=function(){return a.asm._emscripten_enum_draco_EncodedGeometryType_TRIANGULAR_MESH.apply(null,arguments)},Xb=a._emscripten_bind_Mesh_num_points_0=function(){return a.asm._emscripten_bind_Mesh_num_points_0.apply(null, -arguments)},tb=a._emscripten_bind_Mesh_Mesh_0=function(){return a.asm._emscripten_bind_Mesh_Mesh_0.apply(null,arguments)},Yb=a._emscripten_bind_WebIDLWrapper_GetAttribute_2=function(){return a.asm._emscripten_bind_WebIDLWrapper_GetAttribute_2.apply(null,arguments)},qb=a._emscripten_bind_DracoFloat32Array_DracoFloat32Array_0=function(){return a.asm._emscripten_bind_DracoFloat32Array_DracoFloat32Array_0.apply(null,arguments)},Zb=a._emscripten_enum_draco_EncodedGeometryType_POINT_CLOUD=function(){return a.asm._emscripten_enum_draco_EncodedGeometryType_POINT_CLOUD.apply(null, -arguments)},$b=a._emscripten_bind_WebIDLWrapper___destroy___0=function(){return a.asm._emscripten_bind_WebIDLWrapper___destroy___0.apply(null,arguments)},ac=a._emscripten_enum_draco_GeometryAttribute_Type_GENERIC=function(){return a.asm._emscripten_enum_draco_GeometryAttribute_Type_GENERIC.apply(null,arguments)},bc=a._emscripten_bind_WebIDLWrapper_GetFaceFromMesh_3=function(){return a.asm._emscripten_bind_WebIDLWrapper_GetFaceFromMesh_3.apply(null,arguments)},ub=a._emscripten_bind_DracoInt32Array_DracoInt32Array_0= -function(){return a.asm._emscripten_bind_DracoInt32Array_DracoInt32Array_0.apply(null,arguments)},Cb=a._pthread_self=function(){return a.asm._pthread_self.apply(null,arguments)},pb=a._emscripten_bind_PointAttribute_PointAttribute_0=function(){return a.asm._emscripten_bind_PointAttribute_PointAttribute_0.apply(null,arguments)},xb=a._llvm_bswap_i16=function(){return a.asm._llvm_bswap_i16.apply(null,arguments)},cc=a._emscripten_bind_Mesh_num_attributes_0=function(){return a.asm._emscripten_bind_Mesh_num_attributes_0.apply(null, -arguments)},dc=a._emscripten_bind_DracoFloat32Array_GetValue_1=function(){return a.asm._emscripten_bind_DracoFloat32Array_GetValue_1.apply(null,arguments)},ec=a._emscripten_bind_DracoFloat32Array___destroy___0=function(){return a.asm._emscripten_bind_DracoFloat32Array___destroy___0.apply(null,arguments)},fc=a._emscripten_bind_PointCloud_num_points_0=function(){return a.asm._emscripten_bind_PointCloud_num_points_0.apply(null,arguments)},gc=a._emscripten_bind_DracoInt32Array___destroy___0=function(){return a.asm._emscripten_bind_DracoInt32Array___destroy___0.apply(null, -arguments)},rb=a._emscripten_bind_GeometryAttribute_GeometryAttribute_0=function(){return a.asm._emscripten_bind_GeometryAttribute_GeometryAttribute_0.apply(null,arguments)};a.runPostSets=function(){return a.asm.runPostSets.apply(null,arguments)};var hc=a._emscripten_bind_PointAttribute_data_type_0=function(){return a.asm._emscripten_bind_PointAttribute_data_type_0.apply(null,arguments)};a.getTempRet0=function(){return a.asm.getTempRet0.apply(null,arguments)};var va=a._free=function(){return a.asm._free.apply(null, -arguments)},ic=a._emscripten_bind_GeometryAttribute___destroy___0=function(){return a.asm._emscripten_bind_GeometryAttribute___destroy___0.apply(null,arguments)},jc=a._emscripten_enum_draco_EncodedGeometryType_INVALID_GEOMETRY_TYPE=function(){return a.asm._emscripten_enum_draco_EncodedGeometryType_INVALID_GEOMETRY_TYPE.apply(null,arguments)},kc=a._emscripten_bind_Mesh_num_faces_0=function(){return a.asm._emscripten_bind_Mesh_num_faces_0.apply(null,arguments)};a.establishStackSpace=function(){return a.asm.establishStackSpace.apply(null, -arguments)};var lc=a._emscripten_enum_draco_GeometryAttribute_Type_NORMAL=function(){return a.asm._emscripten_enum_draco_GeometryAttribute_Type_NORMAL.apply(null,arguments)},mc=a._emscripten_bind_PointAttribute_byte_stride_0=function(){return a.asm._emscripten_bind_PointAttribute_byte_stride_0.apply(null,arguments)},S=a._malloc=function(){return a.asm._malloc.apply(null,arguments)},ob=a._emscripten_bind_WebIDLWrapper_WebIDLWrapper_0=function(){return a.asm._emscripten_bind_WebIDLWrapper_WebIDLWrapper_0.apply(null, -arguments)},Bb=a._memmove=function(){return a.asm._memmove.apply(null,arguments)},vb=a._emscripten_replace_memory=function(){return a.asm._emscripten_replace_memory.apply(null,arguments)},nc=a._emscripten_bind_PointCloud_num_attributes_0=function(){return a.asm._emscripten_bind_PointCloud_num_attributes_0.apply(null,arguments)},oc=a._emscripten_enum_draco_GeometryAttribute_Type_TEX_COORD=function(){return a.asm._emscripten_enum_draco_GeometryAttribute_Type_TEX_COORD.apply(null,arguments)},pc=a._emscripten_bind_DracoInt32Array_GetValue_1= -function(){return a.asm._emscripten_bind_DracoInt32Array_GetValue_1.apply(null,arguments)},qc=a._emscripten_bind_WebIDLWrapper_GetAttributeFloatForAllPoints_3=function(){return a.asm._emscripten_bind_WebIDLWrapper_GetAttributeFloatForAllPoints_3.apply(null,arguments)};a.stackRestore=function(){return a.asm.stackRestore.apply(null,arguments)};var nb=a._emscripten_bind_PointCloud_PointCloud_0=function(){return a.asm._emscripten_bind_PointCloud_PointCloud_0.apply(null,arguments)},rc=a._emscripten_bind_PointAttribute___destroy___0= -function(){return a.asm._emscripten_bind_PointAttribute___destroy___0.apply(null,arguments)};a.___cxa_can_catch=function(){return a.asm.___cxa_can_catch.apply(null,arguments)};a.dynCall_iiii=function(){return a.asm.dynCall_iiii.apply(null,arguments)};a.dynCall_viiiii=function(){return a.asm.dynCall_viiiii.apply(null,arguments)};a.dynCall_vi=function(){return a.asm.dynCall_vi.apply(null,arguments)};a.dynCall_iiiiiii=function(){return a.asm.dynCall_iiiiiii.apply(null,arguments)};a.dynCall_ii=function(){return a.asm.dynCall_ii.apply(null, -arguments)};a.dynCall_viii=function(){return a.asm.dynCall_viii.apply(null,arguments)};a.dynCall_v=function(){return a.asm.dynCall_v.apply(null,arguments)};a.dynCall_viiiiii=function(){return a.asm.dynCall_viiiiii.apply(null,arguments)};a.dynCall_iii=function(){return a.asm.dynCall_iii.apply(null,arguments)};a.dynCall_viiii=function(){return a.asm.dynCall_viiii.apply(null,arguments)};h.stackAlloc=a.stackAlloc;h.stackSave=a.stackSave;h.stackRestore=a.stackRestore;h.establishStackSpace=a.establishStackSpace; -h.setTempRet0=a.setTempRet0;h.getTempRet0=a.getTempRet0;a.asm=cb;if(K)if("function"===typeof a.locateFile?K=a.locateFile(K):a.memoryInitializerPrefixURL&&(K=a.memoryInitializerPrefixURL+K),ca||ka){var sc=a.readBinary(K);D.set(sc,h.GLOBAL_BASE)}else{var eb=function(){a.readAsync(K,db,function(){throw"could not load memory initializer "+K;})};Qa("memory initializer");var db=function(b){b.byteLength&&(b=new Uint8Array(b));D.set(b,h.GLOBAL_BASE);a.memoryInitializerRequest&&delete a.memoryInitializerRequest.response; -Ra("memory initializer")};if(a.memoryInitializerRequest){var fb=function(){var b=a.memoryInitializerRequest;200!==b.status&&0!==b.status?(console.warn("a problem seems to have happened with Module.memoryInitializerRequest, status: "+b.status+", retrying "+K),eb()):db(b.response)};a.memoryInitializerRequest.response?setTimeout(fb,0):a.memoryInitializerRequest.addEventListener("load",fb)}else eb()}aa.prototype=Error();aa.prototype.constructor=aa;var mb,Wa=null,ha=function c(){a.calledRun||Aa();a.calledRun|| -(ha=c)};a.callMain=a.callMain=function(c){function d(){for(var a=0;3>a;a++)l.push(0)}c=c||[];pa||(pa=!0,Y(Ba));var e=c.length+1,l=[H(Pa(a.thisProgram),"i8",0)];d();for(var f=0;f=q.size?(k(0>=1;break;case 4:e>>=2;break;case 8:e>>=3}for(var c=0;c>>16&65535)*k+m*(f>>>16&65535)<<16>>>0)|0}},"es6","es3"); +$jscomp.polyfill("Math.clz32",function(e){return e?e:function(e){e=Number(e)>>>0;if(0===e)return 32;var f=0;0===(e&4294901760)&&(e<<=16,f+=16);0===(e&4278190080)&&(e<<=8,f+=8);0===(e&4026531840)&&(e<<=4,f+=4);0===(e&3221225472)&&(e<<=2,f+=2);0===(e&2147483648)&&f++;return f}},"es6","es3");$jscomp.polyfill("Math.trunc",function(e){return e?e:function(e){e=Number(e);if(isNaN(e)||Infinity===e||-Infinity===e||0===e)return e;var f=Math.floor(Math.abs(e));return 0>e?-f:f}},"es6","es3"); +$jscomp.SYMBOL_PREFIX="jscomp_symbol_";$jscomp.initSymbol=function(){$jscomp.initSymbol=function(){};$jscomp.global.Symbol||($jscomp.global.Symbol=$jscomp.Symbol)};$jscomp.symbolCounter_=0;$jscomp.Symbol=function(e){return $jscomp.SYMBOL_PREFIX+(e||"")+$jscomp.symbolCounter_++}; +$jscomp.initSymbolIterator=function(){$jscomp.initSymbol();var e=$jscomp.global.Symbol.iterator;e||(e=$jscomp.global.Symbol.iterator=$jscomp.global.Symbol("iterator"));"function"!=typeof Array.prototype[e]&&$jscomp.defineProperty(Array.prototype,e,{configurable:!0,writable:!0,value:function(){return $jscomp.arrayIterator(this)}});$jscomp.initSymbolIterator=function(){}};$jscomp.arrayIterator=function(e){var m=0;return $jscomp.iteratorPrototype(function(){return m>0];case "i8":return N[a>>0];case "i16":return sa[a>>1];case "i32":return u[a>>2];case "i64":return u[a>>2];case "float":return ya[a>> +2];case "double":return za[a>>3];default:M("invalid type for setValue: "+b)}return null}function R(a,b,d,g){if("number"===typeof a){var c=!0;var e=a}else c=!1,e=a.length;var S="string"===typeof b?b:null;d=4==d?g:["function"===typeof la?la:n.staticAlloc,n.stackAlloc,n.staticAlloc,n.dynamicAlloc][void 0===d?2:d](Math.max(e,S?1:b.length));if(c){g=d;f(0==(d&3));for(a=d+(e&-4);g>2]=0;for(a=d+e;g>0]=0;return d}if("i8"===S)return a.subarray||a.slice?G.set(a,d):G.set(new Uint8Array(a), +d),d;g=0;for(var k,m;g>0]=h;break;case "i8":N[l>>0]=h;break;case "i16":sa[l>>1]=h;break;case "i32":u[l>>2]=h;break;case "i64":tempI64=[h>>>0,(tempDouble=h,1<=+qb(tempDouble)?0>>0:~~+tb((tempDouble-+(~~tempDouble>>>0))/4294967296)>>>0:0)]; +u[l>>2]=tempI64[0];u[l+4>>2]=tempI64[1];break;case "float":ya[l>>2]=h;break;case "double":za[l>>3]=h;break;default:M("invalid type for setValue: "+ea)}m!==c&&(k=n.getNativeTypeSize(c),m=c);g+=k}}return d}function t(c,b){if(0===b||!c)return"";for(var d=0,g,e=0;;){g=G[c+e>>0];d|=g;if(0==g&&!b)break;e++;if(b&&e==b)break}b||(b=e);g="";if(128>d){for(;0=f&&(f=65536+((f&1023)<<10)|a.charCodeAt(++e)&1023);if(127>=f){if(d>=g)break;b[d++]=f}else{if(2047>=f){if(d+1>=g)break;b[d++]=192|f>>6}else{if(65535>=f){if(d+2>=g)break;b[d++]=224|f>>12}else{if(2097151>=f){if(d+3>=g)break;b[d++]=240|f>>18}else{if(67108863>=f){if(d+4>=g)break;b[d++]=248|f>>24}else{if(d+5>=g)break;b[d++]=252|f>>30;b[d++]=128|f>>24&63}b[d++]=128|f>>18&63}b[d++]=128|f>>12&63}b[d++]=128|f>>6& +63}b[d++]=128|f&63}}b[d]=0;return d-c}function ia(a){for(var b=0,c=0;c=g&&(g=65536+((g&1023)<<10)|a.charCodeAt(++c)&1023);127>=g?++b:b=2047>=g?b+2:65535>=g?b+3:2097151>=g?b+4:67108863>=g?b+5:b+6}return b}function qa(c){return c.replace(/__Z[\w\d_]+/g,function(b){a:{var c=a.___cxa_demangle||a.__cxa_demangle;if(c)try{var g=b.substr(1),e=ia(g)+1;var f=la(e);Ea(g,G,f,e);var h=la(4);var l=c(f,0,0,h);if(0===k(h,"i32")&&l){var m=t(l);break a}}catch(wd){}finally{f&& +Ia(f),h&&Ia(h),l&&Ia(l)}else n.warnOnce("warning: build with -s DEMANGLE_SUPPORT=1 to link in libcxxabi demangling");m=b}return b===m?b:b+" ["+m+"]"})}function ja(){a:{var c=Error();if(!c.stack){try{throw Error(0);}catch(b){c=b}if(!c.stack){c="(no stack trace available)";break a}}c=c.stack.toString()}a.extraStackTrace&&(c+="\n"+a.extraStackTrace());return qa(c)}function Fa(a,b){0>2]>b)return!1;var d=y;for(y=Math.max(y,ub);y>2];)y=536870912>=y?Fa(2*y,c):Math.min(Fa((3*y+2147483648)/4,c),b);c=a.reallocBuffer(y);if(!c||c.byteLength!=y)return y=d,!1;a.buffer=H=c;ba();return!0}function ka(c){for(;0>2]=c;c=ua.buffer;for(var e=0;e>2],b.adjusted=c,(n.setTempRet0(g[e]),c)|0;c=u[c>>2];return(n.setTempRet0(d),c)|0}function va(c,b){va.seen||(va.seen={});c in va.seen||(a.dynCall_v(b),va.seen[c]=1)}function ca(c,b){r.varargs=b;try{var d=r.get(),e=r.get(),h=r.get(); +c=0;ca.buffer||(ca.buffers=[null,[],[]],ca.printChar=function(b,c){var d=ca.buffers[b];f(d);if(0===c||10===c){b=1===b?a.print:a.printErr;a:{for(var e=c=0;d[e];)++e;if(16g?e+=String.fromCharCode(g):(g-=65536,e+=String.fromCharCode(55296|g>>10,56320|g&1023))}}else e+=String.fromCharCode(g)}}b(c);d.length=0}else d.push(c)});for(b=0;b>2],l=u[e+(8*b+4)>>2],m=0;ma.length||3>2];a=(b+a+15|0)&-16;u[X>>2]=a;return a>=y&&!Va()?(u[X>>2]=b,0):b},alignMemory:function(a,b){return Math.ceil(a/(b?b:16))*(b?b:16)},makeBigInt:function(a,b,d){return d?+(a>>>0)+4294967296*+(b>>>0):+(a>>>0)+4294967296*+(b|0)},GLOBAL_BASE:1024,QUANTUM_SIZE:4,__dummy__:0},oa=0;(function(){function a(a){a=a.toString().match(e).slice(1);return{arguments:a[0], +body:a[1],returnValue:a[2]}}function b(){if(!f){f={};for(var b in d)d.hasOwnProperty(b)&&(f[b]=a(d[b]))}}var d={stackSave:function(){n.stackSave()},stackRestore:function(){n.stackRestore()},arrayToC:function(a){var b=n.stackAlloc(a.length);N.set(a,b);return b},stringToC:function(a){var b=0;if(null!==a&&void 0!==a&&0!==a){var c=(a.length<<2)+1;b=n.stackAlloc(c);Ea(a,G,b,c)}return b}},e=/^function\s*[a-zA-Z$_0-9]*\s*\(([^)]*)\)\s*{\s*([^*]*?)[\s;]*(?:return\s*(.*?)[;\s]*)?}$/,f=null;cwrap=function(c, +d,e){e=e||[];var g=A(c);c=e.every(function(a){return"number"===a});var h="string"!==d;if(h&&c)return g;var k=e.map(function(a,b){return"$"+b});d="(function("+k.join(",")+") {";var l=e.length;if(!c){b();d+="var stack = "+f.stackSave.body+";";for(var m=0;m>>16)*e+c*(b>>>16)<<16)|0});Math.imul=Math.imul;if(!Math.fround){var lb= +new Float32Array(1);Math.fround=function(a){lb[0]=a;return lb[0]}}Math.fround=Math.fround;Math.clz32||(Math.clz32=function(a){a>>>=0;for(var b=0;32>b;b++)if(a&1<<31-b)return b;return 32});Math.clz32=Math.clz32;Math.trunc||(Math.trunc=function(a){return 0>a?Math.ceil(a):Math.floor(a)});Math.trunc=Math.trunc;var qb=Math.abs,tb=Math.ceil,sb=Math.floor,rb=Math.min,fa=0,Ka=null,ta=null;a.preloadedImages={};a.preloadedAudios={};var U=null;(function(c){function b(a,b){var c=t;if(0>a.indexOf("."))c=(c||{})[a]; +else{var d=a.split(".");c=(c||{})[d[0]];c=(c||{})[d[1]]}b&&(c=(c||{})[b]);void 0===c&&M("bad lookupImport to ("+a+")."+b);return c}function d(b){var d=c.buffer;b.byteLength>>0)/(b>>>0)>>>0},"i32s-rem":function(a,b){return(a|0)%(b|0)|0},"i32u-rem":function(a,b){return(a>>>0)%(b>>>0)>>>0},"debugger":function(){debugger}}, +parent:c},u=null;c.asmPreload=c.asm;var q=c.reallocBuffer,r=function(a){a=Fa(a,c.usingWasm?Ja:Ya);var b=c.buffer,d=b.byteLength;if(c.usingWasm)try{return-1!==c.wasmMemory.grow((a-d)/65536)?c.buffer=c.wasmMemory.buffer:null}catch(xd){return null}else return u.__growWasmMemory((a-d)/65536),c.buffer!==b?c.buffer:null};c.reallocBuffer=function(a){return"asmjs"===A?q(a):r(a)};var A="";c.asm=function(a,g,h){if(!g.table){var x=c.wasmTableSize;void 0===x&&(x=1024);var p=c.wasmMaxTableSize;g.table="object"=== +typeof WebAssembly&&"function"===typeof WebAssembly.Table?void 0!==p?new WebAssembly.Table({initial:x,maximum:p,element:"anyfunc"}):new WebAssembly.Table({initial:x,element:"anyfunc"}):Array(x);c.wasmTable=g.table}g.memoryBase||(g.memoryBase=c.STATIC_BASE);g.tableBase||(g.tableBase=0);var q;x=m.split(",");for(p=0;p>2]},getStr:function(){return t(r.get())},get64:function(){var a=r.get(),b=r.get();0<=a?f(0===b):f(-1===b);return a},getZero:function(){f(0===r.get())}},Da={};a._sbrk=Pb;a._memmove=Qb;var Ua=1;a._llvm_bswap_i32=Rb;hb.push(function(){var c=a._fflush;c&&c(0); +if(c=ca.printChar){var b=ca.buffers;b[1].length&&c(1,10);b[2].length&&c(2,10)}});X=R(1,"i32",2);Pa=T=n.alignMemory(W);Ca=Pa+Ta;Qa=n.alignMemory(Ca);u[X>>2]=Qa;a.wasmTableSize=644;a.wasmMaxTableSize=644;a.asmGlobalArg={Math:Math,Int8Array:Int8Array,Int16Array:Int16Array,Int32Array:Int32Array,Uint8Array:Uint8Array,Uint16Array:Uint16Array,Uint32Array:Uint32Array,Float32Array:Float32Array,Float64Array:Float64Array,NaN:NaN,Infinity:Infinity,byteLength:Sa};a.asmLibraryArg={abort:M,assert:f,enlargeMemory:Va, +getTotalMemory:function(){return y},abortOnCannotGrowMemory:function(){M("Cannot enlarge memory arrays. Either (1) compile with -s TOTAL_MEMORY=X with X higher than the current value "+y+", (2) compile with -s ALLOW_MEMORY_GROWTH=1 which allows increasing the size at runtime, or (3) if you want malloc to return NULL (0) instead of this abort, compile with -s ABORTING_MALLOC=0 ")},invoke_iiii:function(c,b,d,e){try{return a.dynCall_iiii(c,b,d,e)}catch(x){if("number"!==typeof x&&"longjmp"!==x)throw x; +a.setThrew(1,0)}},invoke_viiiii:function(c,b,d,e,f,h){try{a.dynCall_viiiii(c,b,d,e,f,h)}catch(S){if("number"!==typeof S&&"longjmp"!==S)throw S;a.setThrew(1,0)}},invoke_vi:function(c,b){try{a.dynCall_vi(c,b)}catch(d){if("number"!==typeof d&&"longjmp"!==d)throw d;a.setThrew(1,0)}},invoke_vii:function(c,b,d){try{a.dynCall_vii(c,b,d)}catch(g){if("number"!==typeof g&&"longjmp"!==g)throw g;a.setThrew(1,0)}},invoke_iiiiiii:function(c,b,d,e,f,h,k){try{return a.dynCall_iiiiiii(c,b,d,e,f,h,k)}catch(z){if("number"!== +typeof z&&"longjmp"!==z)throw z;a.setThrew(1,0)}},invoke_ii:function(c,b){try{return a.dynCall_ii(c,b)}catch(d){if("number"!==typeof d&&"longjmp"!==d)throw d;a.setThrew(1,0)}},invoke_viii:function(c,b,d,e){try{a.dynCall_viii(c,b,d,e)}catch(x){if("number"!==typeof x&&"longjmp"!==x)throw x;a.setThrew(1,0)}},invoke_v:function(c){try{a.dynCall_v(c)}catch(b){if("number"!==typeof b&&"longjmp"!==b)throw b;a.setThrew(1,0)}},invoke_viiiiii:function(c,b,d,e,f,h,k){try{a.dynCall_viiiiii(c,b,d,e,f,h,k)}catch(z){if("number"!== +typeof z&&"longjmp"!==z)throw z;a.setThrew(1,0)}},invoke_iii:function(c,b,d){try{return a.dynCall_iii(c,b,d)}catch(g){if("number"!==typeof g&&"longjmp"!==g)throw g;a.setThrew(1,0)}},invoke_viiii:function(c,b,d,e,f){try{a.dynCall_viiii(c,b,d,e,f)}catch(Ga){if("number"!==typeof Ga&&"longjmp"!==Ga)throw Ga;a.setThrew(1,0)}},_pthread_getspecific:function(a){return Da[a]||0},___syscall54:function(a,b){r.varargs=b;return 0},_pthread_setspecific:function(a,b){if(!(a in Da))return 22;Da[a]=b;return 0},___cxa_throw:function(a, +b,d){C.infos[a]={ptr:a,adjusted:a,type:b,destructor:d,refcount:0,caught:!1,rethrown:!1};C.last=a;"uncaught_exception"in ma?ma.uncaught_exception++:ma.uncaught_exception=1;throw a+" - Exception catching is disabled, this exception cannot be caught. Compile with -s DISABLE_EXCEPTION_CATCHING=0 or DISABLE_EXCEPTION_CATCHING=2 to catch.";},___gxx_personality_v0:function(){},_abort:function(){a.abort()},___setErrNo:function(c){a.___errno_location&&(u[a.___errno_location()>>2]=c);return c},___syscall6:function(a, +b){r.varargs=b;try{var c=r.getStreamFromFD();FS.close(c);return 0}catch(g){return"undefined"!==typeof FS&&g instanceof FS.ErrnoError||M(g),-g.errno}},___cxa_begin_catch:function(a){var b=C.infos[a];b&&!b.caught&&(b.caught=!0,ma.uncaught_exception--);b&&(b.rethrown=!1);C.caught.push(a);C.addRef(C.deAdjust(a));return a},___syscall146:ca,_pthread_once:va,_emscripten_memcpy_big:function(a,b,d){G.set(G.subarray(b,b+d),a);return a},_pthread_key_create:function(a,b){if(0==a)return 22;u[a>>2]=Ua;Da[Ua]=0; +Ua++;return 0},___syscall140:function(a,b){r.varargs=b;try{var d=r.getStreamFromFD();r.get();var c=r.get(),e=r.get(),f=r.get();FS.llseek(d,c,f);u[e>>2]=d.position;d.getdents&&0===c&&0===f&&(d.getdents=null);return 0}catch(S){return"undefined"!==typeof FS&&S instanceof FS.ErrnoError||M(S),-S.errno}},___resumeException:function(a){C.last||(C.last=a);throw a+" - Exception catching is disabled, this exception cannot be caught. Compile with -s DISABLE_EXCEPTION_CATCHING=0 or DISABLE_EXCEPTION_CATCHING=2 to catch."; +},___cxa_find_matching_catch:ua,___assert_fail:function(a,b,d,e){oa=!0;throw"Assertion failed: "+t(a)+", at: "+[b?t(b):"unknown filename",d,e?t(e):"unknown function"]+" at "+ja();},___cxa_pure_virtual:function(){oa=!0;throw"Pure virtual function called!";},___cxa_allocate_exception:function(a){return la(a)},__ZSt18uncaught_exceptionv:ma,DYNAMICTOP_PTR:X,tempDoublePtr:Mb,ABORT:oa,STACKTOP:T,STACK_MAX:Ca};var mb=a.asm(a.asmGlobalArg,a.asmLibraryArg,H);a.asm=mb;var Sb=a._emscripten_bind_Decoder_GetAttributeFloat_3= +function(){return a.asm._emscripten_bind_Decoder_GetAttributeFloat_3.apply(null,arguments)},Tb=a._emscripten_bind_PointAttribute_normalized_0=function(){return a.asm._emscripten_bind_PointAttribute_normalized_0.apply(null,arguments)},Ub=a._emscripten_bind_Decoder_GetAttributeFloatForAllPoints_3=function(){return a.asm._emscripten_bind_Decoder_GetAttributeFloatForAllPoints_3.apply(null,arguments)},Vb=a._emscripten_bind_DecoderBuffer_Init_2=function(){return a.asm._emscripten_bind_DecoderBuffer_Init_2.apply(null, +arguments)},Wb=a._emscripten_bind_PointAttribute_size_0=function(){return a.asm._emscripten_bind_PointAttribute_size_0.apply(null,arguments)},Xb=a._emscripten_enum_draco_GeometryAttribute_Type_POSITION=function(){return a.asm._emscripten_enum_draco_GeometryAttribute_Type_POSITION.apply(null,arguments)},Pb=a._sbrk=function(){return a.asm._sbrk.apply(null,arguments)},Ob=a._memcpy=function(){return a.asm._memcpy.apply(null,arguments)};a.stackSave=function(){return a.asm.stackSave.apply(null,arguments)}; +var Yb=a._emscripten_enum_draco_GeometryAttribute_Type_INVALID=function(){return a.asm._emscripten_enum_draco_GeometryAttribute_Type_INVALID.apply(null,arguments)},Zb=a._emscripten_bind_Decoder_GetAttributeIdByName_2=function(){return a.asm._emscripten_bind_Decoder_GetAttributeIdByName_2.apply(null,arguments)},$b=a._emscripten_enum_draco_EncodedGeometryType_POINT_CLOUD=function(){return a.asm._emscripten_enum_draco_EncodedGeometryType_POINT_CLOUD.apply(null,arguments)},ac=a._emscripten_bind_Status_ok_0= +function(){return a.asm._emscripten_bind_Status_ok_0.apply(null,arguments)},bc=a._emscripten_bind_Mesh_num_faces_0=function(){return a.asm._emscripten_bind_Mesh_num_faces_0.apply(null,arguments)};a._emscripten_get_global_libc=function(){return a.asm._emscripten_get_global_libc.apply(null,arguments)};var cc=a._emscripten_bind_Decoder_DecodeBufferToPointCloud_2=function(){return a.asm._emscripten_bind_Decoder_DecodeBufferToPointCloud_2.apply(null,arguments)},dc=a._emscripten_enum_draco_AttributeTransformType_ATTRIBUTE_NO_TRANSFORM= +function(){return a.asm._emscripten_enum_draco_AttributeTransformType_ATTRIBUTE_NO_TRANSFORM.apply(null,arguments)};a.runPostSets=function(){return a.asm.runPostSets.apply(null,arguments)};var ec=a._emscripten_bind_Decoder_GetEncodedGeometryType_1=function(){return a.asm._emscripten_bind_Decoder_GetEncodedGeometryType_1.apply(null,arguments)};a.___cxa_can_catch=function(){return a.asm.___cxa_can_catch.apply(null,arguments)};var Ia=a._free=function(){return a.asm._free.apply(null,arguments)},fc=a._emscripten_enum_draco_EncodedGeometryType_INVALID_GEOMETRY_TYPE= +function(){return a.asm._emscripten_enum_draco_EncodedGeometryType_INVALID_GEOMETRY_TYPE.apply(null,arguments)},gc=a._emscripten_bind_GeometryAttribute___destroy___0=function(){return a.asm._emscripten_bind_GeometryAttribute___destroy___0.apply(null,arguments)},hc=a._emscripten_bind_PointAttribute_byte_stride_0=function(){return a.asm._emscripten_bind_PointAttribute_byte_stride_0.apply(null,arguments)},Ib=a._emscripten_bind_Metadata_Metadata_0=function(){return a.asm._emscripten_bind_Metadata_Metadata_0.apply(null, +arguments)},ic=a._emscripten_bind_AttributeQuantizationTransform_min_value_1=function(){return a.asm._emscripten_bind_AttributeQuantizationTransform_min_value_1.apply(null,arguments)},Fb=a._emscripten_bind_Decoder_Decoder_0=function(){return a.asm._emscripten_bind_Decoder_Decoder_0.apply(null,arguments)},jc=a._emscripten_bind_MetadataQuerier_GetStringEntry_2=function(){return a.asm._emscripten_bind_MetadataQuerier_GetStringEntry_2.apply(null,arguments)},kc=a._emscripten_bind_MetadataQuerier_GetIntEntry_2= +function(){return a.asm._emscripten_bind_MetadataQuerier_GetIntEntry_2.apply(null,arguments)},lc=a._emscripten_bind_Decoder___destroy___0=function(){return a.asm._emscripten_bind_Decoder___destroy___0.apply(null,arguments)},mc=a._emscripten_enum_draco_AttributeTransformType_ATTRIBUTE_OCTAHEDRON_TRANSFORM=function(){return a.asm._emscripten_enum_draco_AttributeTransformType_ATTRIBUTE_OCTAHEDRON_TRANSFORM.apply(null,arguments)};a.getTempRet0=function(){return a.asm.getTempRet0.apply(null,arguments)}; +a.setThrew=function(){return a.asm.setThrew.apply(null,arguments)};var nc=a._emscripten_bind_MetadataQuerier_HasStringEntry_2=function(){return a.asm._emscripten_bind_MetadataQuerier_HasStringEntry_2.apply(null,arguments)},oc=a._emscripten_bind_AttributeTransformData___destroy___0=function(){return a.asm._emscripten_bind_AttributeTransformData___destroy___0.apply(null,arguments)},pc=a._emscripten_bind_PointAttribute_num_components_0=function(){return a.asm._emscripten_bind_PointAttribute_num_components_0.apply(null, +arguments)};a.___cxa_is_pointer_type=function(){return a.asm.___cxa_is_pointer_type.apply(null,arguments)};var zb=a._emscripten_bind_AttributeTransformData_AttributeTransformData_0=function(){return a.asm._emscripten_bind_AttributeTransformData_AttributeTransformData_0.apply(null,arguments)},qc=a._emscripten_bind_AttributeQuantizationTransform___destroy___0=function(){return a.asm._emscripten_bind_AttributeQuantizationTransform___destroy___0.apply(null,arguments)};a.stackAlloc=function(){return a.asm.stackAlloc.apply(null, +arguments)};var rc=a._emscripten_bind_DracoInt32Array___destroy___0=function(){return a.asm._emscripten_bind_DracoInt32Array___destroy___0.apply(null,arguments)},sc=a._emscripten_bind_Mesh_num_points_0=function(){return a.asm._emscripten_bind_Mesh_num_points_0.apply(null,arguments)},tc=a._emscripten_bind_PointCloud_num_attributes_0=function(){return a.asm._emscripten_bind_PointCloud_num_attributes_0.apply(null,arguments)},Gb=a._emscripten_bind_Mesh_Mesh_0=function(){return a.asm._emscripten_bind_Mesh_Mesh_0.apply(null, +arguments)},Bb=a._emscripten_bind_MetadataQuerier_MetadataQuerier_0=function(){return a.asm._emscripten_bind_MetadataQuerier_MetadataQuerier_0.apply(null,arguments)},uc=a._emscripten_bind_Decoder_GetAttributeIdByMetadataEntry_3=function(){return a.asm._emscripten_bind_Decoder_GetAttributeIdByMetadataEntry_3.apply(null,arguments)},vc=a._emscripten_bind_MetadataQuerier_HasDoubleEntry_2=function(){return a.asm._emscripten_bind_MetadataQuerier_HasDoubleEntry_2.apply(null,arguments)},wc=a._emscripten_bind_MetadataQuerier_GetDoubleEntry_2= +function(){return a.asm._emscripten_bind_MetadataQuerier_GetDoubleEntry_2.apply(null,arguments)},xc=a._emscripten_bind_Mesh_num_attributes_0=function(){return a.asm._emscripten_bind_Mesh_num_attributes_0.apply(null,arguments)},yc=a._emscripten_bind_AttributeOctahedronTransform_quantization_bits_0=function(){return a.asm._emscripten_bind_AttributeOctahedronTransform_quantization_bits_0.apply(null,arguments)},zc=a._emscripten_bind_AttributeOctahedronTransform___destroy___0=function(){return a.asm._emscripten_bind_AttributeOctahedronTransform___destroy___0.apply(null, +arguments)},Rb=a._llvm_bswap_i32=function(){return a.asm._llvm_bswap_i32.apply(null,arguments)},Ac=a._emscripten_bind_Decoder_GetAttributeMetadata_2=function(){return a.asm._emscripten_bind_Decoder_GetAttributeMetadata_2.apply(null,arguments)},Bc=a._emscripten_bind_PointAttribute_unique_id_0=function(){return a.asm._emscripten_bind_PointAttribute_unique_id_0.apply(null,arguments)};a.establishStackSpace=function(){return a.asm.establishStackSpace.apply(null,arguments)};var Cc=a._emscripten_enum_draco_StatusCode_IO_ERROR= +function(){return a.asm._emscripten_enum_draco_StatusCode_IO_ERROR.apply(null,arguments)},Dc=a._emscripten_bind_MetadataQuerier_HasIntEntry_2=function(){return a.asm._emscripten_bind_MetadataQuerier_HasIntEntry_2.apply(null,arguments)},Ec=a._emscripten_bind_Decoder_GetTriangleStripsFromMesh_2=function(){return a.asm._emscripten_bind_Decoder_GetTriangleStripsFromMesh_2.apply(null,arguments)},Fc=a._emscripten_enum_draco_GeometryAttribute_Type_TEX_COORD=function(){return a.asm._emscripten_enum_draco_GeometryAttribute_Type_TEX_COORD.apply(null, +arguments)},Eb=a._emscripten_bind_DecoderBuffer_DecoderBuffer_0=function(){return a.asm._emscripten_bind_DecoderBuffer_DecoderBuffer_0.apply(null,arguments)},Gc=a._emscripten_bind_DracoInt32Array_size_0=function(){return a.asm._emscripten_bind_DracoInt32Array_size_0.apply(null,arguments)},Hc=a._emscripten_bind_Decoder_SkipAttributeTransform_1=function(){return a.asm._emscripten_bind_Decoder_SkipAttributeTransform_1.apply(null,arguments)},Ic=a._emscripten_enum_draco_AttributeTransformType_ATTRIBUTE_QUANTIZATION_TRANSFORM= +function(){return a.asm._emscripten_enum_draco_AttributeTransformType_ATTRIBUTE_QUANTIZATION_TRANSFORM.apply(null,arguments)},Jc=a._emscripten_enum_draco_StatusCode_ERROR=function(){return a.asm._emscripten_enum_draco_StatusCode_ERROR.apply(null,arguments)},Kc=a._emscripten_bind_AttributeQuantizationTransform_quantization_bits_0=function(){return a.asm._emscripten_bind_AttributeQuantizationTransform_quantization_bits_0.apply(null,arguments)},Lc=a._emscripten_enum_draco_StatusCode_INVALID_PARAMETER= +function(){return a.asm._emscripten_enum_draco_StatusCode_INVALID_PARAMETER.apply(null,arguments)},Mc=a._emscripten_enum_draco_GeometryAttribute_Type_COLOR=function(){return a.asm._emscripten_enum_draco_GeometryAttribute_Type_COLOR.apply(null,arguments)},Nc=a._emscripten_bind_VoidPtr___destroy___0=function(){return a.asm._emscripten_bind_VoidPtr___destroy___0.apply(null,arguments)},Nb=a._memset=function(){return a.asm._memset.apply(null,arguments)},Oc=a._emscripten_bind_PointAttribute_attribute_type_0= +function(){return a.asm._emscripten_bind_PointAttribute_attribute_type_0.apply(null,arguments)},Pc=a._emscripten_bind_MetadataQuerier___destroy___0=function(){return a.asm._emscripten_bind_MetadataQuerier___destroy___0.apply(null,arguments)},Qc=a._emscripten_bind_DracoInt32Array_GetValue_1=function(){return a.asm._emscripten_bind_DracoInt32Array_GetValue_1.apply(null,arguments)},Rc=a._emscripten_bind_DecoderBuffer___destroy___0=function(){return a.asm._emscripten_bind_DecoderBuffer___destroy___0.apply(null, +arguments)},Sc=a._emscripten_bind_Decoder_GetAttribute_2=function(){return a.asm._emscripten_bind_Decoder_GetAttribute_2.apply(null,arguments)},Tc=a._emscripten_enum_draco_EncodedGeometryType_TRIANGULAR_MESH=function(){return a.asm._emscripten_enum_draco_EncodedGeometryType_TRIANGULAR_MESH.apply(null,arguments)};a.setTempRet0=function(){return a.asm.setTempRet0.apply(null,arguments)};var Hb=a._emscripten_bind_DracoInt32Array_DracoInt32Array_0=function(){return a.asm._emscripten_bind_DracoInt32Array_DracoInt32Array_0.apply(null, +arguments)},Uc=a._emscripten_enum_draco_StatusCode_UNKNOWN_VERSION=function(){return a.asm._emscripten_enum_draco_StatusCode_UNKNOWN_VERSION.apply(null,arguments)},Vc=a._emscripten_bind_DracoFloat32Array___destroy___0=function(){return a.asm._emscripten_bind_DracoFloat32Array___destroy___0.apply(null,arguments)},Wc=a._emscripten_bind_PointCloud_num_points_0=function(){return a.asm._emscripten_bind_PointCloud_num_points_0.apply(null,arguments)},Xc=a._emscripten_bind_PointCloud___destroy___0=function(){return a.asm._emscripten_bind_PointCloud___destroy___0.apply(null, +arguments)},Db=a._emscripten_bind_GeometryAttribute_GeometryAttribute_0=function(){return a.asm._emscripten_bind_GeometryAttribute_GeometryAttribute_0.apply(null,arguments)},Yc=a._emscripten_bind_Decoder_GetFaceFromMesh_3=function(){return a.asm._emscripten_bind_Decoder_GetFaceFromMesh_3.apply(null,arguments)},Zc=a._emscripten_bind_PointAttribute_data_type_0=function(){return a.asm._emscripten_bind_PointAttribute_data_type_0.apply(null,arguments)},$c=a._emscripten_bind_DracoFloat32Array_size_0=function(){return a.asm._emscripten_bind_DracoFloat32Array_size_0.apply(null, +arguments)},ad=a._emscripten_bind_AttributeOctahedronTransform_InitFromAttribute_1=function(){return a.asm._emscripten_bind_AttributeOctahedronTransform_InitFromAttribute_1.apply(null,arguments)},la=a._malloc=function(){return a.asm._malloc.apply(null,arguments)},bd=a._emscripten_bind_PointAttribute_GetAttributeTransformData_0=function(){return a.asm._emscripten_bind_PointAttribute_GetAttributeTransformData_0.apply(null,arguments)},cd=a._emscripten_bind_PointAttribute_byte_offset_0=function(){return a.asm._emscripten_bind_PointAttribute_byte_offset_0.apply(null, +arguments)},Jb=a._emscripten_replace_memory=function(){return a.asm._emscripten_replace_memory.apply(null,arguments)},Qb=a._memmove=function(){return a.asm._memmove.apply(null,arguments)},wb=a._emscripten_bind_PointCloud_PointCloud_0=function(){return a.asm._emscripten_bind_PointCloud_PointCloud_0.apply(null,arguments)},dd=a._emscripten_bind_Status_error_msg_0=function(){return a.asm._emscripten_bind_Status_error_msg_0.apply(null,arguments)},ed=a._emscripten_bind_Mesh___destroy___0=function(){return a.asm._emscripten_bind_Mesh___destroy___0.apply(null, +arguments)},fd=a._emscripten_bind_Metadata___destroy___0=function(){return a.asm._emscripten_bind_Metadata___destroy___0.apply(null,arguments)},gd=a._emscripten_bind_Status___destroy___0=function(){return a.asm._emscripten_bind_Status___destroy___0.apply(null,arguments)},hd=a._emscripten_enum_draco_AttributeTransformType_ATTRIBUTE_INVALID_TRANSFORM=function(){return a.asm._emscripten_enum_draco_AttributeTransformType_ATTRIBUTE_INVALID_TRANSFORM.apply(null,arguments)},Ab=a._emscripten_bind_AttributeQuantizationTransform_AttributeQuantizationTransform_0= +function(){return a.asm._emscripten_bind_AttributeQuantizationTransform_AttributeQuantizationTransform_0.apply(null,arguments)},id=a._emscripten_bind_AttributeQuantizationTransform_range_0=function(){return a.asm._emscripten_bind_AttributeQuantizationTransform_range_0.apply(null,arguments)},jd=a._emscripten_bind_Decoder_GetAttributeId_2=function(){return a.asm._emscripten_bind_Decoder_GetAttributeId_2.apply(null,arguments)},kd=a._emscripten_enum_draco_StatusCode_OK=function(){return a.asm._emscripten_enum_draco_StatusCode_OK.apply(null, +arguments)},ld=a._emscripten_bind_AttributeTransformData_transform_type_0=function(){return a.asm._emscripten_bind_AttributeTransformData_transform_type_0.apply(null,arguments)},md=a._emscripten_bind_Status_code_0=function(){return a.asm._emscripten_bind_Status_code_0.apply(null,arguments)},xb=a._emscripten_bind_AttributeOctahedronTransform_AttributeOctahedronTransform_0=function(){return a.asm._emscripten_bind_AttributeOctahedronTransform_AttributeOctahedronTransform_0.apply(null,arguments)},Cb= +a._emscripten_bind_DracoFloat32Array_DracoFloat32Array_0=function(){return a.asm._emscripten_bind_DracoFloat32Array_DracoFloat32Array_0.apply(null,arguments)},nd=a._emscripten_enum_draco_GeometryAttribute_Type_GENERIC=function(){return a.asm._emscripten_enum_draco_GeometryAttribute_Type_GENERIC.apply(null,arguments)},od=a._emscripten_bind_Decoder_DecodeBufferToMesh_2=function(){return a.asm._emscripten_bind_Decoder_DecodeBufferToMesh_2.apply(null,arguments)},pd=a._emscripten_bind_DracoFloat32Array_GetValue_1= +function(){return a.asm._emscripten_bind_DracoFloat32Array_GetValue_1.apply(null,arguments)},yb=a._emscripten_bind_PointAttribute_PointAttribute_0=function(){return a.asm._emscripten_bind_PointAttribute_PointAttribute_0.apply(null,arguments)},qd=a._emscripten_bind_Decoder_GetMetadata_1=function(){return a.asm._emscripten_bind_Decoder_GetMetadata_1.apply(null,arguments)},rd=a._emscripten_enum_draco_GeometryAttribute_Type_NORMAL=function(){return a.asm._emscripten_enum_draco_GeometryAttribute_Type_NORMAL.apply(null, +arguments)};a.stackRestore=function(){return a.asm.stackRestore.apply(null,arguments)};var sd=a._emscripten_bind_AttributeQuantizationTransform_InitFromAttribute_1=function(){return a.asm._emscripten_bind_AttributeQuantizationTransform_InitFromAttribute_1.apply(null,arguments)},td=a._emscripten_bind_PointAttribute___destroy___0=function(){return a.asm._emscripten_bind_PointAttribute___destroy___0.apply(null,arguments)},ud=a._emscripten_enum_draco_StatusCode_UNSUPPORTED_VERSION=function(){return a.asm._emscripten_enum_draco_StatusCode_UNSUPPORTED_VERSION.apply(null, +arguments)};a.dynCall_iiii=function(){return a.asm.dynCall_iiii.apply(null,arguments)};a.dynCall_viiiii=function(){return a.asm.dynCall_viiiii.apply(null,arguments)};a.dynCall_vi=function(){return a.asm.dynCall_vi.apply(null,arguments)};a.dynCall_vii=function(){return a.asm.dynCall_vii.apply(null,arguments)};a.dynCall_iiiiiii=function(){return a.asm.dynCall_iiiiiii.apply(null,arguments)};a.dynCall_ii=function(){return a.asm.dynCall_ii.apply(null,arguments)};a.dynCall_viii=function(){return a.asm.dynCall_viii.apply(null, +arguments)};a.dynCall_v=function(){return a.asm.dynCall_v.apply(null,arguments)};a.dynCall_viiiiii=function(){return a.asm.dynCall_viiiiii.apply(null,arguments)};a.dynCall_iii=function(){return a.asm.dynCall_iii.apply(null,arguments)};a.dynCall_viiii=function(){return a.asm.dynCall_viiii.apply(null,arguments)};n.stackAlloc=a.stackAlloc;n.stackSave=a.stackSave;n.stackRestore=a.stackRestore;n.establishStackSpace=a.establishStackSpace;n.setTempRet0=a.setTempRet0;n.getTempRet0=a.getTempRet0;a.asm=mb; +if(U)if("function"===typeof a.locateFile?U=a.locateFile(U):a.memoryInitializerPrefixURL&&(U=a.memoryInitializerPrefixURL+U),pa||Ba){var vd=a.readBinary(U);G.set(vd,n.GLOBAL_BASE)}else{var ob=function(){a.readAsync(U,nb,function(){throw"could not load memory initializer "+U;})};Za("memory initializer");var nb=function(c){c.byteLength&&(c=new Uint8Array(c));G.set(c,n.GLOBAL_BASE);a.memoryInitializerRequest&&delete a.memoryInitializerRequest.response;$a("memory initializer")};if(a.memoryInitializerRequest){var pb= +function(){var c=a.memoryInitializerRequest;200!==c.status&&0!==c.status?(console.warn("a problem seems to have happened with Module.memoryInitializerRequest, status: "+c.status+", retrying "+U),ob()):nb(c.response)};a.memoryInitializerRequest.response?setTimeout(pb,0):a.memoryInitializerRequest.addEventListener("load",pb)}else ob()}a.then=function(c){if(a.calledRun)c(a);else{var b=a.onRuntimeInitialized;a.onRuntimeInitialized=function(){b&&b();c(a)}}return a};na.prototype=Error();na.prototype.constructor= +na;var vb,eb=null;ta=function b(){a.calledRun||La();a.calledRun||(ta=b)};a.callMain=a.callMain=function(b){function d(){for(var a=0;3>a;a++)f.push(0)}b=b||[];Aa||(Aa=!0,ka(Ma));var e=b.length+1,f=[R(ra(a.thisProgram),"i8",0)];d();for(var h=0;h=h.size?(f(0>=1;break;case 4:e>>=2;break;case 8:e>>=3}for(var b=0;b pc(draco::DecodePointCloudFromBuffer(in_buffer)); - return pc.release(); -} - -Mesh *WebIDLWrapper::DecodeMeshFromBuffer(DecoderBuffer *in_buffer) { - std::unique_ptr mesh(draco::DecodeMeshFromBuffer(in_buffer)); - return mesh.release(); -} - -long WebIDLWrapper::GetAttributeId(const PointCloud &pc, - draco_GeometryAttribute_Type type) { - return pc.GetNamedAttributeId(type); -} - -const PointAttribute *WebIDLWrapper::GetAttribute(const PointCloud &pc, - long att_id) { - return pc.attribute(att_id); -} - -bool WebIDLWrapper::GetFaceFromMesh(const Mesh &m, FaceIndex::ValueType face_id, - DracoInt32Array *out_values) { - const Mesh::Face &face = m.face(FaceIndex(face_id)); - return out_values->SetValues(reinterpret_cast(face.data()), - face.size()); -} - -bool WebIDLWrapper::GetAttributeFloat(const PointAttribute &pa, - AttributeValueIndex::ValueType val_index, - DracoFloat32Array *out_values) { - const int kMaxAttributeFloatValues = 4; - const int components = pa.components_count(); - float values[kMaxAttributeFloatValues] = {-2.0, -2.0, -2.0, -2.0}; - if (!pa.ConvertValue(AttributeValueIndex(val_index), values)) - return false; - return out_values->SetValues(values, components); -} - -bool WebIDLWrapper::GetAttributeFloatForAllPoints( - const PointCloud &pc, const PointAttribute &pa, - DracoFloat32Array *out_values) { - const int components = pa.components_count(); - const int num_points = pc.num_points(); - const int num_entries = num_points * components; - const int kMaxAttributeFloatValues = 4; - float values[kMaxAttributeFloatValues] = {-2.0, -2.0, -2.0, -2.0}; - int entry_id = 0; - - out_values->SetValues(nullptr, num_entries); - for (PointIndex i(0); i < num_points; ++i) { - const AttributeValueIndex val_index = pa.mapped_index(i); - if (!pa.ConvertValue(val_index, values)) - return false; - for (int j = 0; j < components; ++j) { - out_values->SetValue(entry_id++, values[j]); - } - } - return true; -} - -} // namespace draco diff --git a/javascript/emscripten/webidl_wrapper.h b/javascript/emscripten/webidl_wrapper.h deleted file mode 100644 index 771e5195..00000000 --- a/javascript/emscripten/webidl_wrapper.h +++ /dev/null @@ -1,101 +0,0 @@ -// Copyright 2016 The Draco Authors. -// -// Licensed under the Apache License, Version 2.0 (the "License"); -// you may not use this file except in compliance with the License. -// You may obtain a copy of the License at -// -// http://www.apache.org/licenses/LICENSE-2.0 -// -// Unless required by applicable law or agreed to in writing, software -// distributed under the License is distributed on an "AS IS" BASIS, -// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -// See the License for the specific language governing permissions and -// limitations under the License. -// -#ifndef DRACO_JAVASCRIPT_EMSCRITPEN_WEBIDL_WRAPPER_H_ -#define DRACO_JAVASCRIPT_EMSCRITPEN_WEBIDL_WRAPPER_H_ - -#include - -#include "compression/config/compression_shared.h" -#include "core/decoder_buffer.h" -#include "mesh/mesh.h" -#include "point_cloud/point_attribute.h" - -typedef draco::GeometryAttribute draco_GeometryAttribute; -typedef draco_GeometryAttribute::Type draco_GeometryAttribute_Type; -typedef draco::EncodedGeometryType draco_EncodedGeometryType; - -// To generate Draco JabvaScript bindings you must have emscripten installed. -// Then run make -f Makefile.emcc jslib. -namespace draco { - -class DracoFloat32Array { - public: - DracoFloat32Array(); - float GetValue(int index) const; - - // In case |values| is nullptr, the data is allocated but not initialized. - bool SetValues(const float *values, int count); - - // Directly sets a value for a specific index. The array has to be already - // allocated at this point (using SetValues() method). - void SetValue(int index, float val) { values_[index] = val; } - - private: - std::vector values_; -}; - -class DracoInt32Array { - public: - DracoInt32Array(); - int GetValue(int index) const; - bool SetValues(const int *values, int count); - - private: - std::vector values_; -}; - -// Class used by emscripten WebIDL Binder [1] to wrap calls to decode Draco -// data. -// [1]http://kripken.github.io/emscripten-site/docs/porting/connecting_cpp_and_javascript/WebIDL-Binder.html -class WebIDLWrapper { - public: - WebIDLWrapper(); - - // Returns the geometry type stored in the |in_buffer|. Return values can be - // INVALID_GEOMETRY_TYPE, POINT_CLOUD, or MESH. - draco_EncodedGeometryType GetEncodedGeometryType(DecoderBuffer *in_buffer); - - // Decodes a point cloud from the provided buffer. The caller is responsible - // for deleting the PointCloud pointer. - static PointCloud *DecodePointCloudFromBuffer(DecoderBuffer *in_buffer); - - // Decodes a triangular mesh from the provided buffer. The caller is - // responsible for deleting the Mesh pointer. - static Mesh *DecodeMeshFromBuffer(DecoderBuffer *in_buffer); - - // Returns an attribute id for the first attribute of a given type. - long GetAttributeId(const PointCloud &pc, draco_GeometryAttribute_Type type); - - // Returns a PointAttribute pointer from |att_id| index. - static const PointAttribute *GetAttribute(const PointCloud &pc, long att_id); - - // Returns Mesh::Face values in |out_values| from |face_id| index. - static bool GetFaceFromMesh(const Mesh &m, FaceIndex::ValueType face_id, - DracoInt32Array *out_values); - // Returns float attribute values in |out_values| from |entry_index| index. - static bool GetAttributeFloat(const PointAttribute &pa, - AttributeValueIndex::ValueType entry_index, - DracoFloat32Array *out_values); - - // Returns float attribute values for all point ids of the point cloud. - // I.e., the |out_values| is going to contain m.num_points() entries. - static bool GetAttributeFloatForAllPoints(const PointCloud &pc, - const PointAttribute &pa, - DracoFloat32Array *out_values); -}; - -} // namespace draco - -#endif // DRACO_JAVASCRIPT_EMSCRITPEN_WEBIDL_WRAPPER_H_ diff --git a/javascript/example/DRACOLoader.js b/javascript/example/DRACOLoader.js index 185c5865..fcac379d 100644 --- a/javascript/example/DRACOLoader.js +++ b/javascript/example/DRACOLoader.js @@ -19,7 +19,9 @@ THREE.DRACOLoader = function(manager) { THREE.DefaultLoadingManager; this.materials = null; this.verbosity = 0; + this.attributeOptions = {}; this.dracoDecoderType = {}; + this.drawMode = THREE.TrianglesDrawMode; }; @@ -28,10 +30,13 @@ THREE.DRACOLoader.prototype = { constructor: THREE.DRACOLoader, load: function(url, onLoad, onProgress, onError) { - const scope = this; - const loader = new THREE.FileLoader(scope.manager); + var scope = this; + var loader = new THREE.FileLoader(scope.manager); loader.setPath(this.path); loader.setResponseType('arraybuffer'); + if (this.crossOrigin !== undefined) { + loader.crossOrigin = this.crossOrigin; + } loader.load(url, function(blob) { scope.decodeDracoFile(blob, onLoad); }, onProgress, onError); @@ -41,6 +46,10 @@ THREE.DRACOLoader.prototype = { this.path = value; }, + setCrossOrigin: function(value) { + this.crossOrigin = value; + }, + setVerbosity: function(level) { this.verbosity = level; }, @@ -49,8 +58,32 @@ THREE.DRACOLoader.prototype = { this.dracoDecoderType = dracoDecoderType; }, + /** + * Sets desired mode for generated geometry indices. + * Can be either: + * THREE.TrianglesDrawMode + * THREE.TriangleStripDrawMode + */ + setDrawMode: function(drawMode) { + this.drawMode = drawMode; + }, + + /** + * Skips dequantization for a specific attribute. + * |attributeName| is the THREE.js name of the given attribute type. + * The only currently supported |attributeName| is 'position', more may be + * added in future. + */ + setSkipDequantization: function(attributeName, skip) { + var skipDequantization = true; + if (typeof skip !== 'undefined') + skipDequantization = skip; + this.getAttributeOptions(attributeName).skipDequantization = + skipDequantization; + }, + decodeDracoFile: function(rawBuffer, callback) { - const scope = this; + var scope = this; THREE.DRACOLoader.getDecoder(this.dracoDecoderType, function(dracoDecoder) { scope.decodeDracoFileInternal(rawBuffer, dracoDecoder, callback); @@ -61,14 +94,14 @@ THREE.DRACOLoader.prototype = { /* * Here is how to use Draco Javascript decoder and get the geometry. */ - const buffer = new dracoDecoder.DecoderBuffer(); + var buffer = new dracoDecoder.DecoderBuffer(); buffer.Init(new Int8Array(rawBuffer), rawBuffer.byteLength); - const wrapper = new dracoDecoder.WebIDLWrapper(); + var decoder = new dracoDecoder.Decoder(); /* * Determine what type is this file: mesh or point cloud. */ - const geometryType = wrapper.GetEncodedGeometryType(buffer); + var geometryType = decoder.GetEncodedGeometryType(buffer); if (geometryType == dracoDecoder.TRIANGULAR_MESH) { if (this.verbosity > 0) { console.log('Loaded a mesh.'); @@ -78,34 +111,50 @@ THREE.DRACOLoader.prototype = { console.log('Loaded a point cloud.'); } } else { - const errorMsg = 'THREE.DRACOLoader: Unknown geometry type.' + var errorMsg = 'THREE.DRACOLoader: Unknown geometry type.' console.error(errorMsg); throw new Error(errorMsg); } - callback(this.convertDracoGeometryTo3JS(dracoDecoder, wrapper, + callback(this.convertDracoGeometryTo3JS(dracoDecoder, decoder, geometryType, buffer)); }, - convertDracoGeometryTo3JS: function(dracoDecoder, wrapper, geometryType, + convertDracoGeometryTo3JS: function(dracoDecoder, decoder, geometryType, buffer) { - let dracoGeometry; + if (this.getAttributeOptions('position').skipDequantization === true) { + decoder.SkipAttributeTransform(dracoDecoder.POSITION); + } + var dracoGeometry; + var decodingStatus; const start_time = performance.now(); - if (geometryType == dracoDecoder.TRIANGULAR_MESH) { - dracoGeometry = wrapper.DecodeMeshFromBuffer(buffer); + if (geometryType === dracoDecoder.TRIANGULAR_MESH) { + dracoGeometry = new dracoDecoder.Mesh(); + decodingStatus = decoder.DecodeBufferToMesh(buffer, dracoGeometry); } else { - dracoGeometry = wrapper.DecodePointCloudFromBuffer(buffer); + dracoGeometry = new dracoDecoder.PointCloud(); + decodingStatus = + decoder.DecodeBufferToPointCloud(buffer, dracoGeometry); + } + if (!decodingStatus.ok() || dracoGeometry.ptr == 0) { + var errorMsg = 'THREE.DRACOLoader: Decoding failed: '; + errorMsg += decodingStatus.error_msg(); + console.error(errorMsg); + dracoDecoder.destroy(decoder); + dracoDecoder.destroy(dracoGeometry); + throw new Error(errorMsg); } - const decode_end = performance.now(); + + var decode_end = performance.now(); dracoDecoder.destroy(buffer); /* * Example on how to retrieve mesh and attributes. */ - let numFaces, numPoints; - let numVertexCoordinates, numTextureCoordinates, numColorCoordinates; - let numAttributes; - let numColorCoordinateComponents = 3; + var numFaces, numPoints; + var numVertexCoordinates, numTextureCoordinates, numColorCoordinates; + var numAttributes; + var numColorCoordinateComponents = 3; // For output basic geometry information. - let geometryInfoStr; + var geometryInfoStr; if (geometryType == dracoDecoder.TRIANGULAR_MESH) { numFaces = dracoGeometry.num_faces(); if (this.verbosity > 0) { @@ -126,78 +175,76 @@ THREE.DRACOLoader.prototype = { } // Get position attribute. Must exists. - const posAttId = wrapper.GetAttributeId(dracoGeometry, + var posAttId = decoder.GetAttributeId(dracoGeometry, dracoDecoder.POSITION); if (posAttId == -1) { - const errorMsg = 'THREE.DRACOLoader: No position attribute found.'; + var errorMsg = 'THREE.DRACOLoader: No position attribute found.'; console.error(errorMsg); - dracoDecoder.destroy(wrapper); + dracoDecoder.destroy(decoder); dracoDecoder.destroy(dracoGeometry); throw new Error(errorMsg); } - const posAttribute = wrapper.GetAttribute(dracoGeometry, posAttId); - const posAttributeData = new dracoDecoder.DracoFloat32Array(); - wrapper.GetAttributeFloatForAllPoints( + var posAttribute = decoder.GetAttribute(dracoGeometry, posAttId); + var posAttributeData = new dracoDecoder.DracoFloat32Array(); + decoder.GetAttributeFloatForAllPoints( dracoGeometry, posAttribute, posAttributeData); // Get color attributes if exists. - const colorAttId = wrapper.GetAttributeId(dracoGeometry, + var colorAttId = decoder.GetAttributeId(dracoGeometry, dracoDecoder.COLOR); - let colAttributeData; + var colAttributeData; if (colorAttId != -1) { if (this.verbosity > 0) { console.log('Loaded color attribute.'); } - const colAttribute = wrapper.GetAttribute(dracoGeometry, colorAttId); - if (colAttribute.components_count() === 4) { + var colAttribute = decoder.GetAttribute(dracoGeometry, colorAttId); + if (colAttribute.num_components() === 4) { numColorCoordinates = numPoints * 4; numColorCoordinateComponents = 4; } colAttributeData = new dracoDecoder.DracoFloat32Array(); - wrapper.GetAttributeFloatForAllPoints(dracoGeometry, colAttribute, + decoder.GetAttributeFloatForAllPoints(dracoGeometry, colAttribute, colAttributeData); } // Get normal attributes if exists. - const normalAttId = - wrapper.GetAttributeId(dracoGeometry, dracoDecoder.NORMAL); - let norAttributeData; + var normalAttId = + decoder.GetAttributeId(dracoGeometry, dracoDecoder.NORMAL); + var norAttributeData; if (normalAttId != -1) { if (this.verbosity > 0) { console.log('Loaded normal attribute.'); } - const norAttribute = wrapper.GetAttribute(dracoGeometry, normalAttId); + var norAttribute = decoder.GetAttribute(dracoGeometry, normalAttId); norAttributeData = new dracoDecoder.DracoFloat32Array(); - wrapper.GetAttributeFloatForAllPoints(dracoGeometry, norAttribute, + decoder.GetAttributeFloatForAllPoints(dracoGeometry, norAttribute, norAttributeData); } // Get texture coord attributes if exists. - const texCoordAttId = - wrapper.GetAttributeId(dracoGeometry, dracoDecoder.TEX_COORD); - let textCoordAttributeData; + var texCoordAttId = + decoder.GetAttributeId(dracoGeometry, dracoDecoder.TEX_COORD); + var textCoordAttributeData; if (texCoordAttId != -1) { if (this.verbosity > 0) { console.log('Loaded texture coordinate attribute.'); } - const texCoordAttribute = wrapper.GetAttribute(dracoGeometry, + var texCoordAttribute = decoder.GetAttribute(dracoGeometry, texCoordAttId); textCoordAttributeData = new dracoDecoder.DracoFloat32Array(); - wrapper.GetAttributeFloatForAllPoints(dracoGeometry, + decoder.GetAttributeFloatForAllPoints(dracoGeometry, texCoordAttribute, textCoordAttributeData); } // Structure for converting to THREEJS geometry later. - const numIndices = numFaces * 3; - const geometryBuffer = { - indices: new Uint32Array(numIndices), + var geometryBuffer = { vertices: new Float32Array(numVertexCoordinates), normals: new Float32Array(numVertexCoordinates), uvs: new Float32Array(numTextureCoordinates), colors: new Float32Array(numColorCoordinates) }; - for (let i = 0; i < numVertexCoordinates; i += 3) { + for (var i = 0; i < numVertexCoordinates; i += 3) { geometryBuffer.vertices[i] = posAttributeData.GetValue(i); geometryBuffer.vertices[i + 1] = posAttributeData.GetValue(i + 1); geometryBuffer.vertices[i + 2] = posAttributeData.GetValue(i + 2); @@ -210,7 +257,7 @@ THREE.DRACOLoader.prototype = { } // Add color. - for (let i = 0; i < numColorCoordinates; i += 1) { + for (var i = 0; i < numColorCoordinates; i += 1) { if (colorAttId != -1) { // Draco colors are already normalized. geometryBuffer.colors[i] = colAttributeData.GetValue(i); @@ -222,7 +269,7 @@ THREE.DRACOLoader.prototype = { // Add texture coordinates. if (texCoordAttId != -1) { - for (let i = 0; i < numTextureCoordinates; i += 2) { + for (var i = 0; i < numTextureCoordinates; i += 2) { geometryBuffer.uvs[i] = textCoordAttributeData.GetValue(i); geometryBuffer.uvs[i + 1] = textCoordAttributeData.GetValue(i + 1); } @@ -238,21 +285,33 @@ THREE.DRACOLoader.prototype = { // For mesh, we need to generate the faces. if (geometryType == dracoDecoder.TRIANGULAR_MESH) { - const ia = new dracoDecoder.DracoInt32Array(); - for (let i = 0; i < numFaces; ++i) { - wrapper.GetFaceFromMesh(dracoGeometry, i, ia); - const index = i * 3; - geometryBuffer.indices[index] = ia.GetValue(0); - geometryBuffer.indices[index + 1] = ia.GetValue(1); - geometryBuffer.indices[index + 2] = ia.GetValue(2); - } - dracoDecoder.destroy(ia); + if (this.drawMode === THREE.TriangleStripDrawMode) { + var stripsArray = new dracoDecoder.DracoInt32Array(); + var numStrips = decoder.GetTriangleStripsFromMesh( + dracoGeometry, stripsArray); + geometryBuffer.indices = new Uint32Array(stripsArray.size()); + for (var i = 0; i < stripsArray.size(); ++i) { + geometryBuffer.indices[i] = stripsArray.GetValue(i); + } + dracoDecoder.destroy(stripsArray); + } else { + var numIndices = numFaces * 3; + geometryBuffer.indices = new Uint32Array(numIndices); + var ia = new dracoDecoder.DracoInt32Array(); + for (var i = 0; i < numFaces; ++i) { + decoder.GetFaceFromMesh(dracoGeometry, i, ia); + var index = i * 3; + geometryBuffer.indices[index] = ia.GetValue(0); + geometryBuffer.indices[index + 1] = ia.GetValue(1); + geometryBuffer.indices[index + 2] = ia.GetValue(2); + } + dracoDecoder.destroy(ia); + } } - dracoDecoder.destroy(wrapper); - dracoDecoder.destroy(dracoGeometry); // Import data to Three JS geometry. - const geometry = new THREE.BufferGeometry(); + var geometry = new THREE.BufferGeometry(); + geometry.drawMode = this.drawMode; if (geometryType == dracoDecoder.TRIANGULAR_MESH) { geometry.setIndex(new(geometryBuffer.indices.length > 65535 ? THREE.Uint32BufferAttribute : THREE.Uint16BufferAttribute) @@ -260,6 +319,21 @@ THREE.DRACOLoader.prototype = { } geometry.addAttribute('position', new THREE.Float32BufferAttribute(geometryBuffer.vertices, 3)); + var posTransform = new dracoDecoder.AttributeQuantizationTransform(); + if (posTransform.InitFromAttribute(posAttribute)) { + // Quantized attribute. Store the quantization parameters into the + // THREE.js attribute. + geometry.attributes['position'].isQuantized = true; + geometry.attributes['position'].maxRange = posTransform.range(); + geometry.attributes['position'].numQuantizationBits = + posTransform.quantization_bits(); + geometry.attributes['position'].minValues = new Float32Array(3); + for (var i = 0; i < 3; ++i) { + geometry.attributes['position'].minValues[i] = + posTransform.min_value(i); + } + } + dracoDecoder.destroy(posTransform); geometry.addAttribute('color', new THREE.Float32BufferAttribute(geometryBuffer.colors, numColorCoordinateComponents)); @@ -271,6 +345,10 @@ THREE.DRACOLoader.prototype = { geometry.addAttribute('uv', new THREE.Float32BufferAttribute(geometryBuffer.uvs, 2)); } + + dracoDecoder.destroy(decoder); + dracoDecoder.destroy(dracoGeometry); + this.decode_time = decode_end - start_time; this.import_time = performance.now() - decode_end; @@ -282,36 +360,45 @@ THREE.DRACOLoader.prototype = { }, isVersionSupported: function(version, callback) { - return THREE.DRACOLoader.getDecoder(this.dracoDecoderType, - function(decoder) { return decoder.isVersionSupported(version); }); + THREE.DRACOLoader.getDecoder(this.dracoDecoderType, + function(decoder) { + callback(decoder.isVersionSupported(version)); + }); + }, + + getAttributeOptions: function(attributeName) { + if (typeof this.attributeOptions[attributeName] === 'undefined') + this.attributeOptions[attributeName] = {}; + return this.attributeOptions[attributeName]; } }; /** - * Creates and returns a singleton instance of the DracoModule decoder. + * Creates and returns a singleton instance of the DracoDecoderModule. * The module loading is done asynchronously for WebAssembly. Initialized module - * can be accessed through the callback function |onDracoModuleLoadedCallback|. + * can be accessed through the callback function + * |onDracoDecoderModuleLoadedCallback|. */ THREE.DRACOLoader.getDecoder = (function() { - let decoder; + var decoder; - return function(dracoDecoderType, onDracoModuleLoadedCallback) { - if (typeof DracoModule === 'undefined') { - throw new Error('THREE.DRACOLoader: DracoModule not found.'); + return function(dracoDecoderType, onDracoDecoderModuleLoadedCallback) { + if (typeof DracoDecoderModule === 'undefined') { + throw new Error('THREE.DRACOLoader: DracoDecoderModule not found.'); } if (typeof decoder !== 'undefined') { // Module already initialized. - if (typeof onDracoModuleLoadedCallback !== 'undefined') { - onDracoModuleLoadedCallback(decoder); + if (typeof onDracoDecoderModuleLoadedCallback !== 'undefined') { + onDracoDecoderModuleLoadedCallback(decoder); } } else { dracoDecoderType['onModuleLoaded'] = function(module) { - if (typeof onDracoModuleLoadedCallback === 'function') { + if (typeof onDracoDecoderModuleLoadedCallback === 'function') { decoder = module; - onDracoModuleLoadedCallback(module); + onDracoDecoderModuleLoadedCallback(module); } }; - DracoModule(dracoDecoderType); + DracoDecoderModule(dracoDecoderType); } }; diff --git a/javascript/example/geometry_helper.js b/javascript/example/geometry_helper.js new file mode 100644 index 00000000..095f7970 --- /dev/null +++ b/javascript/example/geometry_helper.js @@ -0,0 +1,102 @@ +// Copyright 2017 The Draco Authors. +// +// Licensed under the Apache License, Version 2.0 (the "License"); +// you may not use this file except in compliance with the License. +// You may obtain a copy of the License at +// +// http://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an "AS IS" BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// See the License for the specific language governing permissions and +// limitations under the License. +// + +/** + * @fileoverview Helper class implementing various utilities for THREE.js + * geometry. + */ + +function GeometryHelper() {} + +GeometryHelper.prototype = { + constructor: GeometryHelper, + + // Computes vertex normals on THREE.js buffer geometry, even when the mesh + // uses triangle strip connectivity. + computeVertexNormals: function (bufferGeometry) { + if (bufferGeometry.drawMode === THREE.TrianglesDrawMode) { + bufferGeometry.computeVertexNormals(); + return; + } else if (bufferGeometry.drawMode === THREE.TriangleStripDrawMode) { + if (bufferGeometry.attributes.position === undefined) { + return; + } + const inPositions = bufferGeometry.attributes.position.array; + if (bufferGeometry.attributes.normal === undefined) { + bufferGeometry.addAttribute( + 'normal', + new THREE.BufferAttribute(new Float32Array(inPositions.length), + 3)); + } else { + // Reset existing normals to zero. + const array = bufferGeometry.attributes.normal.array; + for (let i = 0; i < array.length; ++i) { + array[ i ] = 0; + } + } + let outNormals = bufferGeometry.attributes.normal.array; + + let pos0 = new THREE.Vector3(); + let pos1 = new THREE.Vector3(); + let pos2 = new THREE.Vector3(); + let posDif0 = new THREE.Vector3(), posDif1 = new THREE.Vector3(); + let localNormal = new THREE.Vector3(); + + const stripIndices = bufferGeometry.index.array; + for (let i = 2; i < stripIndices.length; ++i) { + let index0 = stripIndices[i - 2] * 3; + let index1 = stripIndices[i - 1] * 3; + let index2 = stripIndices[i] * 3; + // Skip degenerate triangles. + if (index0 === index1 || index0 === index2 || index1 === index2) { + continue; + } + if ((i & 1) !== 0) { + // Swap index 1 and 0 on odd indexed triangles. + const tmpIndex = index1; + index1 = index2; + index2 = tmpIndex; + } + + // Get position values. + pos0.fromArray(inPositions, index0); + pos1.fromArray(inPositions, index1); + pos2.fromArray(inPositions, index2); + + // Position differences + posDif0.subVectors(pos2, pos0); + posDif1.subVectors(pos1, pos0); + + // Weighted normal. + localNormal.crossVectors(posDif1, posDif0); + + // Update normals on vertices + outNormals[index0] += localNormal.x; + outNormals[index0 + 1] += localNormal.y; + outNormals[index0 + 2] += localNormal.z; + + outNormals[index1] += localNormal.x; + outNormals[index1 + 1] += localNormal.y; + outNormals[index1 + 2] += localNormal.z; + + outNormals[index2] += localNormal.x; + outNormals[index2 + 1] += localNormal.y; + outNormals[index2 + 2] += localNormal.z; + } + bufferGeometry.normalizeNormals(); + bufferGeometry.attributes.normal.needsUpdate = true; + } + }, +}; diff --git a/javascript/example/webgl_loader_draco.html b/javascript/example/webgl_loader_draco.html index a1a84ca0..c07e0e4b 100644 --- a/javascript/example/webgl_loader_draco.html +++ b/javascript/example/webgl_loader_draco.html @@ -3,8 +3,6 @@ three.js webgl - loaders - Draco loader - -

+
+
+    
+
     
- + + diff --git a/javascript/npm/draco3d/README.md b/javascript/npm/draco3d/README.md new file mode 100644 index 00000000..40604289 --- /dev/null +++ b/javascript/npm/draco3d/README.md @@ -0,0 +1,79 @@ + +

+ +

+ +News +======= +### Version 1.0.0 release +The latest version of Draco brings many new enhancements to improve the +development experience: +* Stable API release +* Support for npm Javascript package management +* Javascript based encoder +* Generalized metadata for meshes and point clouds + * Now supporting material properties included along with encoded file +* Improved compression rates: + * 15% better compression on smaller models + * 40% better compression of normals +* Performance improvements (~10% faster encoding, decoding) +* Reduced GPU memory usage: + * Option to store decoded quantized attributes + * Support for triangle strip connectivity on decoded meshes +* iOS 9 Javascript decoder +* Bitstream specification now available + +Description +=========== + +[Draco] is a library for compressing and decompressing 3D geometric [meshes] and +[point clouds]. It is intended to improve the storage and transmission of 3D +graphics. + +Draco was designed and built for compression efficiency and speed. The code +supports compressing points, connectivity information, texture coordinates, +color information, normals, and any other generic attributes associated with +geometry. With Draco, applications using 3D graphics can be significantly +smaller without compromising visual fidelity. For users, this means apps can +now be downloaded faster, 3D graphics in the browser can load quicker, and VR +and AR scenes can now be transmitted with a fraction of the bandwidth and +rendered quickly. + +[Draco] is released as C++/Javascript source code that can be used to compress 3D +graphics as well as decoders for the encoded data. + +NPM Package +=========== + +The code shows a simple example of using Draco encoder and decoder with Node.js. +`draco_encoder_node.js` and `draco_decoder_node.js` are modified Javascript +encoding/decoding files that are compatible with Node.js. +`draco_nodejs_example.js` has the example code for usage. + +How to run the code: + +(1) Install draco3d package : + +~~~~~ bash +$ npm install draco3d +~~~~~ + +(2) Run example code to test: + +~~~~~ bash +$ cp node_modules/draco3d/draco_nodejs_example.js . +$ cp node_modules/draco3d/bunny.drc . +$ nodejs draco_nodejs_example.js +~~~~~ + +The code loads the [Bunny] model, it will first decode to a mesh +and then encode it with different settings. + +References +========== +[Draco]: https://github.com/google/draco +[meshes]: https://en.wikipedia.org/wiki/Polygon_mesh +[point clouds]: https://en.wikipedia.org/wiki/Point_cloud +[Bunny]: https://graphics.stanford.edu/data/3Dscanrep/ + +Bunny model from Stanford's graphic department diff --git a/javascript/npm/draco3d/bunny.drc b/javascript/npm/draco3d/bunny.drc new file mode 100644 index 0000000000000000000000000000000000000000..1e80a755c5011b8b053862faa14b382408cf9cb9 GIT binary patch literal 96018 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
p)#dR7MeU53nrd~>$q>f{1)$AHk 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 LLCbo84bj?C&r4KF%(pT2 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 false;if(version[0]>0||version[1]>9)return false;return true}Module["isVersionSupported"]=isVersionSupported;var Module;if(!Module)Module=(typeof DracoDecoderModule!=="undefined"?DracoDecoderModule:null)||{};var moduleOverrides={};for(var key in Module){if(Module.hasOwnProperty(key)){moduleOverrides[key]=Module[key]}}var ENVIRONMENT_IS_WEB=false;var ENVIRONMENT_IS_WORKER=false;var ENVIRONMENT_IS_NODE=false;var ENVIRONMENT_IS_SHELL=false;if(Module["ENVIRONMENT"]){if(Module["ENVIRONMENT"]==="WEB"){ENVIRONMENT_IS_WEB=true}else if(Module["ENVIRONMENT"]==="WORKER"){ENVIRONMENT_IS_WORKER=true}else if(Module["ENVIRONMENT"]==="NODE"){ENVIRONMENT_IS_NODE=true}else if(Module["ENVIRONMENT"]==="SHELL"){ENVIRONMENT_IS_SHELL=true}else{throw new Error("The provided Module['ENVIRONMENT'] value is not valid. It must be one of: WEB|WORKER|NODE|SHELL.")}}else{ENVIRONMENT_IS_WEB=typeof window==="object";ENVIRONMENT_IS_WORKER=typeof importScripts==="function";ENVIRONMENT_IS_NODE=typeof process==="object"&&typeof require==="function"&&!ENVIRONMENT_IS_WEB&&!ENVIRONMENT_IS_WORKER;ENVIRONMENT_IS_SHELL=!ENVIRONMENT_IS_WEB&&!ENVIRONMENT_IS_NODE&&!ENVIRONMENT_IS_WORKER}if(ENVIRONMENT_IS_NODE){if(!Module["print"])Module["print"]=console.log;if(!Module["printErr"])Module["printErr"]=console.warn;var nodeFS;var nodePath;Module["read"]=function shell_read(filename,binary){if(!nodeFS)nodeFS=require("fs");if(!nodePath)nodePath=require("path");filename=nodePath["normalize"](filename);var ret=nodeFS["readFileSync"](filename);return binary?ret:ret.toString()};Module["readBinary"]=function readBinary(filename){var ret=Module["read"](filename,true);if(!ret.buffer){ret=new Uint8Array(ret)}assert(ret.buffer);return ret};Module["load"]=function load(f){globalEval(read(f))};if(!Module["thisProgram"]){if(process["argv"].length>1){Module["thisProgram"]=process["argv"][1].replace(/\\/g,"/")}else{Module["thisProgram"]="unknown-program"}}Module["arguments"]=process["argv"].slice(2);if(typeof module!=="undefined"){module["exports"]=Module}process["on"]("uncaughtException",(function(ex){if(!(ex instanceof ExitStatus)){throw ex}}));Module["inspect"]=(function(){return"[Emscripten Module object]"})}else if(ENVIRONMENT_IS_SHELL){if(!Module["print"])Module["print"]=print;if(typeof printErr!="undefined")Module["printErr"]=printErr;if(typeof read!="undefined"){Module["read"]=read}else{Module["read"]=function shell_read(){throw"no read() available"}}Module["readBinary"]=function readBinary(f){if(typeof readbuffer==="function"){return new Uint8Array(readbuffer(f))}var data=read(f,"binary");assert(typeof data==="object");return data};if(typeof scriptArgs!="undefined"){Module["arguments"]=scriptArgs}else if(typeof arguments!="undefined"){Module["arguments"]=arguments}if(typeof quit==="function"){Module["quit"]=(function(status,toThrow){quit(status)})}}else if(ENVIRONMENT_IS_WEB||ENVIRONMENT_IS_WORKER){Module["read"]=function shell_read(url){var xhr=new XMLHttpRequest;xhr.open("GET",url,false);xhr.send(null);return xhr.responseText};if(ENVIRONMENT_IS_WORKER){Module["readBinary"]=function readBinary(url){var xhr=new XMLHttpRequest;xhr.open("GET",url,false);xhr.responseType="arraybuffer";xhr.send(null);return new Uint8Array(xhr.response)}}Module["readAsync"]=function readAsync(url,onload,onerror){var xhr=new XMLHttpRequest;xhr.open("GET",url,true);xhr.responseType="arraybuffer";xhr.onload=function xhr_onload(){if(xhr.status==200||xhr.status==0&&xhr.response){onload(xhr.response)}else{onerror()}};xhr.onerror=onerror;xhr.send(null)};if(typeof arguments!="undefined"){Module["arguments"]=arguments}if(typeof console!=="undefined"){if(!Module["print"])Module["print"]=function shell_print(x){console.log(x)};if(!Module["printErr"])Module["printErr"]=function shell_printErr(x){console.warn(x)}}else{var TRY_USE_DUMP=false;if(!Module["print"])Module["print"]=TRY_USE_DUMP&&typeof dump!=="undefined"?(function(x){dump(x)}):(function(x){})}if(ENVIRONMENT_IS_WORKER){Module["load"]=importScripts}if(typeof Module["setWindowTitle"]==="undefined"){Module["setWindowTitle"]=(function(title){document.title=title})}}else{throw"Unknown runtime environment. Where are we?"}function globalEval(x){eval.call(null,x)}if(!Module["load"]&&Module["read"]){Module["load"]=function load(f){globalEval(Module["read"](f))}}if(!Module["print"]){Module["print"]=(function(){})}if(!Module["printErr"]){Module["printErr"]=Module["print"]}if(!Module["arguments"]){Module["arguments"]=[]}if(!Module["thisProgram"]){Module["thisProgram"]="./this.program"}if(!Module["quit"]){Module["quit"]=(function(status,toThrow){throw toThrow})}Module.print=Module["print"];Module.printErr=Module["printErr"];Module["preRun"]=[];Module["postRun"]=[];for(var key in moduleOverrides){if(moduleOverrides.hasOwnProperty(key)){Module[key]=moduleOverrides[key]}}moduleOverrides=undefined;var Runtime={setTempRet0:(function(value){tempRet0=value;return value}),getTempRet0:(function(){return tempRet0}),stackSave:(function(){return STACKTOP}),stackRestore:(function(stackTop){STACKTOP=stackTop}),getNativeTypeSize:(function(type){switch(type){case"i1":case"i8":return 1;case"i16":return 2;case"i32":return 4;case"i64":return 8;case"float":return 4;case"double":return 8;default:{if(type[type.length-1]==="*"){return Runtime.QUANTUM_SIZE}else if(type[0]==="i"){var bits=parseInt(type.substr(1));assert(bits%8===0);return bits/8}else{return 0}}}}),getNativeFieldSize:(function(type){return Math.max(Runtime.getNativeTypeSize(type),Runtime.QUANTUM_SIZE)}),STACK_ALIGN:16,prepVararg:(function(ptr,type){if(type==="double"||type==="i64"){if(ptr&7){assert((ptr&7)===4);ptr+=4}}else{assert((ptr&3)===0)}return ptr}),getAlignSize:(function(type,size,vararg){if(!vararg&&(type=="i64"||type=="double"))return 8;if(!type)return Math.min(size,8);return Math.min(size||(type?Runtime.getNativeFieldSize(type):0),Runtime.QUANTUM_SIZE)}),dynCall:(function(sig,ptr,args){if(args&&args.length){return Module["dynCall_"+sig].apply(null,[ptr].concat(args))}else{return Module["dynCall_"+sig].call(null,ptr)}}),functionPointers:[],addFunction:(function(func){for(var i=0;i>2];var end=(ret+size+15|0)&-16;HEAP32[DYNAMICTOP_PTR>>2]=end;if(end>=TOTAL_MEMORY){var success=enlargeMemory();if(!success){HEAP32[DYNAMICTOP_PTR>>2]=ret;return 0}}return ret}),alignMemory:(function(size,quantum){var ret=size=Math.ceil(size/(quantum?quantum:16))*(quantum?quantum:16);return ret}),makeBigInt:(function(low,high,unsigned){var ret=unsigned?+(low>>>0)+ +(high>>>0)*+4294967296:+(low>>>0)+ +(high|0)*+4294967296;return ret}),GLOBAL_BASE:8,QUANTUM_SIZE:4,__dummy__:0};var ABORT=0;var EXITSTATUS=0;function assert(condition,text){if(!condition){abort("Assertion failed: "+text)}}function getCFunc(ident){var func=Module["_"+ident];if(!func){try{func=eval("_"+ident)}catch(e){}}assert(func,"Cannot call unknown function "+ident+" (perhaps LLVM optimizations or closure removed it?)");return func}var ccall;((function(){var JSfuncs={"stackSave":(function(){Runtime.stackSave()}),"stackRestore":(function(){Runtime.stackRestore()}),"arrayToC":(function(arr){var ret=Runtime.stackAlloc(arr.length);writeArrayToMemory(arr,ret);return ret}),"stringToC":(function(str){var ret=0;if(str!==null&&str!==undefined&&str!==0){var len=(str.length<<2)+1;ret=Runtime.stackAlloc(len);stringToUTF8(str,ret,len)}return ret})};var toC={"string":JSfuncs["stringToC"],"array":JSfuncs["arrayToC"]};ccall=function ccallFunc(ident,returnType,argTypes,args,opts){var func=getCFunc(ident);var cArgs=[];var stack=0;if(args){for(var i=0;i>0]=value;break;case"i8":HEAP8[ptr>>0]=value;break;case"i16":HEAP16[ptr>>1]=value;break;case"i32":HEAP32[ptr>>2]=value;break;case"i64":tempI64=[value>>>0,(tempDouble=value,+Math_abs(tempDouble)>=+1?tempDouble>+0?(Math_min(+Math_floor(tempDouble/+4294967296),+4294967295)|0)>>>0:~~+Math_ceil((tempDouble- +(~~tempDouble>>>0))/+4294967296)>>>0:0)],HEAP32[ptr>>2]=tempI64[0],HEAP32[ptr+4>>2]=tempI64[1];break;case"float":HEAPF32[ptr>>2]=value;break;case"double":HEAPF64[ptr>>3]=value;break;default:abort("invalid type for setValue: "+type)}}function getValue(ptr,type,noSafe){type=type||"i8";if(type.charAt(type.length-1)==="*")type="i32";switch(type){case"i1":return HEAP8[ptr>>0];case"i8":return HEAP8[ptr>>0];case"i16":return HEAP16[ptr>>1];case"i32":return HEAP32[ptr>>2];case"i64":return HEAP32[ptr>>2];case"float":return HEAPF32[ptr>>2];case"double":return HEAPF64[ptr>>3];default:abort("invalid type for setValue: "+type)}return null}var ALLOC_NORMAL=0;var ALLOC_STATIC=2;var ALLOC_NONE=4;function allocate(slab,types,allocator,ptr){var zeroinit,size;if(typeof slab==="number"){zeroinit=true;size=slab}else{zeroinit=false;size=slab.length}var singleType=typeof types==="string"?types:null;var ret;if(allocator==ALLOC_NONE){ret=ptr}else{ret=[typeof _malloc==="function"?_malloc:Runtime.staticAlloc,Runtime.stackAlloc,Runtime.staticAlloc,Runtime.dynamicAlloc][allocator===undefined?ALLOC_STATIC:allocator](Math.max(size,singleType?1:types.length))}if(zeroinit){var ptr=ret,stop;assert((ret&3)==0);stop=ret+(size&~3);for(;ptr>2]=0}stop=ret+size;while(ptr>0]=0}return ret}if(singleType==="i8"){if(slab.subarray||slab.slice){HEAPU8.set(slab,ret)}else{HEAPU8.set(new Uint8Array(slab),ret)}return ret}var i=0,type,typeSize,previousType;while(i>0];hasUtf|=t;if(t==0&&!length)break;i++;if(length&&i==length)break}if(!length)length=i;var ret="";if(hasUtf<128){var MAX_CHUNK=1024;var curr;while(length>0){curr=String.fromCharCode.apply(String,HEAPU8.subarray(ptr,ptr+Math.min(length,MAX_CHUNK)));ret=ret?ret+curr:curr;ptr+=MAX_CHUNK;length-=MAX_CHUNK}return ret}return Module["UTF8ToString"](ptr)}var UTF8Decoder=typeof TextDecoder!=="undefined"?new TextDecoder("utf8"):undefined;function UTF8ArrayToString(u8Array,idx){var endPtr=idx;while(u8Array[endPtr])++endPtr;if(endPtr-idx>16&&u8Array.subarray&&UTF8Decoder){return UTF8Decoder.decode(u8Array.subarray(idx,endPtr))}else{var u0,u1,u2,u3,u4,u5;var str="";while(1){u0=u8Array[idx++];if(!u0)return str;if(!(u0&128)){str+=String.fromCharCode(u0);continue}u1=u8Array[idx++]&63;if((u0&224)==192){str+=String.fromCharCode((u0&31)<<6|u1);continue}u2=u8Array[idx++]&63;if((u0&240)==224){u0=(u0&15)<<12|u1<<6|u2}else{u3=u8Array[idx++]&63;if((u0&248)==240){u0=(u0&7)<<18|u1<<12|u2<<6|u3}else{u4=u8Array[idx++]&63;if((u0&252)==248){u0=(u0&3)<<24|u1<<18|u2<<12|u3<<6|u4}else{u5=u8Array[idx++]&63;u0=(u0&1)<<30|u1<<24|u2<<18|u3<<12|u4<<6|u5}}}if(u0<65536){str+=String.fromCharCode(u0)}else{var ch=u0-65536;str+=String.fromCharCode(55296|ch>>10,56320|ch&1023)}}}}function stringToUTF8Array(str,outU8Array,outIdx,maxBytesToWrite){if(!(maxBytesToWrite>0))return 0;var startIdx=outIdx;var endIdx=outIdx+maxBytesToWrite-1;for(var i=0;i=55296&&u<=57343)u=65536+((u&1023)<<10)|str.charCodeAt(++i)&1023;if(u<=127){if(outIdx>=endIdx)break;outU8Array[outIdx++]=u}else if(u<=2047){if(outIdx+1>=endIdx)break;outU8Array[outIdx++]=192|u>>6;outU8Array[outIdx++]=128|u&63}else if(u<=65535){if(outIdx+2>=endIdx)break;outU8Array[outIdx++]=224|u>>12;outU8Array[outIdx++]=128|u>>6&63;outU8Array[outIdx++]=128|u&63}else if(u<=2097151){if(outIdx+3>=endIdx)break;outU8Array[outIdx++]=240|u>>18;outU8Array[outIdx++]=128|u>>12&63;outU8Array[outIdx++]=128|u>>6&63;outU8Array[outIdx++]=128|u&63}else if(u<=67108863){if(outIdx+4>=endIdx)break;outU8Array[outIdx++]=248|u>>24;outU8Array[outIdx++]=128|u>>18&63;outU8Array[outIdx++]=128|u>>12&63;outU8Array[outIdx++]=128|u>>6&63;outU8Array[outIdx++]=128|u&63}else{if(outIdx+5>=endIdx)break;outU8Array[outIdx++]=252|u>>30;outU8Array[outIdx++]=128|u>>24&63;outU8Array[outIdx++]=128|u>>18&63;outU8Array[outIdx++]=128|u>>12&63;outU8Array[outIdx++]=128|u>>6&63;outU8Array[outIdx++]=128|u&63}}outU8Array[outIdx]=0;return outIdx-startIdx}function stringToUTF8(str,outPtr,maxBytesToWrite){return stringToUTF8Array(str,HEAPU8,outPtr,maxBytesToWrite)}function lengthBytesUTF8(str){var len=0;for(var i=0;i=55296&&u<=57343)u=65536+((u&1023)<<10)|str.charCodeAt(++i)&1023;if(u<=127){++len}else if(u<=2047){len+=2}else if(u<=65535){len+=3}else if(u<=2097151){len+=4}else if(u<=67108863){len+=5}else{len+=6}}return len}var UTF16Decoder=typeof TextDecoder!=="undefined"?new TextDecoder("utf-16le"):undefined;function demangle(func){var __cxa_demangle_func=Module["___cxa_demangle"]||Module["__cxa_demangle"];if(__cxa_demangle_func){try{var s=func.substr(1);var len=lengthBytesUTF8(s)+1;var buf=_malloc(len);stringToUTF8(s,buf,len);var status=_malloc(4);var ret=__cxa_demangle_func(buf,0,0,status);if(getValue(status,"i32")===0&&ret){return Pointer_stringify(ret)}}catch(e){}finally{if(buf)_free(buf);if(status)_free(status);if(ret)_free(ret)}return func}Runtime.warnOnce("warning: build with -s DEMANGLE_SUPPORT=1 to link in libcxxabi demangling");return func}function demangleAll(text){var regex=/__Z[\w\d_]+/g;return text.replace(regex,(function(x){var y=demangle(x);return x===y?x:x+" ["+y+"]"}))}function jsStackTrace(){var err=new Error;if(!err.stack){try{throw new Error(0)}catch(e){err=e}if(!err.stack){return"(no stack trace available)"}}return err.stack.toString()}function stackTrace(){var js=jsStackTrace();if(Module["extraStackTrace"])js+="\n"+Module["extraStackTrace"]();return demangleAll(js)}var WASM_PAGE_SIZE=65536;var ASMJS_PAGE_SIZE=16777216;var MIN_TOTAL_MEMORY=16777216;function alignUp(x,multiple){if(x%multiple>0){x+=multiple-x%multiple}return x}var HEAP,buffer,HEAP8,HEAPU8,HEAP16,HEAPU16,HEAP32,HEAPU32,HEAPF32,HEAPF64;function updateGlobalBuffer(buf){Module["buffer"]=buffer=buf}function updateGlobalBufferViews(){Module["HEAP8"]=HEAP8=new Int8Array(buffer);Module["HEAP16"]=HEAP16=new Int16Array(buffer);Module["HEAP32"]=HEAP32=new Int32Array(buffer);Module["HEAPU8"]=HEAPU8=new Uint8Array(buffer);Module["HEAPU16"]=HEAPU16=new Uint16Array(buffer);Module["HEAPU32"]=HEAPU32=new Uint32Array(buffer);Module["HEAPF32"]=HEAPF32=new Float32Array(buffer);Module["HEAPF64"]=HEAPF64=new Float64Array(buffer)}var STATIC_BASE,STATICTOP,staticSealed;var STACK_BASE,STACKTOP,STACK_MAX;var DYNAMIC_BASE,DYNAMICTOP_PTR;STATIC_BASE=STATICTOP=STACK_BASE=STACKTOP=STACK_MAX=DYNAMIC_BASE=DYNAMICTOP_PTR=0;staticSealed=false;function abortOnCannotGrowMemory(){abort("Cannot enlarge memory arrays. Either (1) compile with -s TOTAL_MEMORY=X with X higher than the current value "+TOTAL_MEMORY+", (2) compile with -s ALLOW_MEMORY_GROWTH=1 which allows increasing the size at runtime but prevents some optimizations, (3) set Module.TOTAL_MEMORY to a higher value before the program runs, or (4) if you want malloc to return NULL (0) instead of this abort, compile with -s ABORTING_MALLOC=0 ")}if(!Module["reallocBuffer"])Module["reallocBuffer"]=(function(size){var ret;try{if(ArrayBuffer.transfer){ret=ArrayBuffer.transfer(buffer,size)}else{var oldHEAP8=HEAP8;ret=new ArrayBuffer(size);var temp=new Int8Array(ret);temp.set(oldHEAP8)}}catch(e){return false}var success=_emscripten_replace_memory(ret);if(!success)return false;return ret});function enlargeMemory(){var PAGE_MULTIPLE=Module["usingWasm"]?WASM_PAGE_SIZE:ASMJS_PAGE_SIZE;var LIMIT=2147483648-PAGE_MULTIPLE;if(HEAP32[DYNAMICTOP_PTR>>2]>LIMIT){return false}var OLD_TOTAL_MEMORY=TOTAL_MEMORY;TOTAL_MEMORY=Math.max(TOTAL_MEMORY,MIN_TOTAL_MEMORY);while(TOTAL_MEMORY>2]){if(TOTAL_MEMORY<=536870912){TOTAL_MEMORY=alignUp(2*TOTAL_MEMORY,PAGE_MULTIPLE)}else{TOTAL_MEMORY=Math.min(alignUp((3*TOTAL_MEMORY+2147483648)/4,PAGE_MULTIPLE),LIMIT)}}var replacement=Module["reallocBuffer"](TOTAL_MEMORY);if(!replacement||replacement.byteLength!=TOTAL_MEMORY){TOTAL_MEMORY=OLD_TOTAL_MEMORY;return false}updateGlobalBuffer(replacement);updateGlobalBufferViews();return true}var byteLength;try{byteLength=Function.prototype.call.bind(Object.getOwnPropertyDescriptor(ArrayBuffer.prototype,"byteLength").get);byteLength(new ArrayBuffer(4))}catch(e){byteLength=(function(buffer){return buffer.byteLength})}var TOTAL_STACK=Module["TOTAL_STACK"]||5242880;var TOTAL_MEMORY=Module["TOTAL_MEMORY"]||16777216;if(TOTAL_MEMORY0){var callback=callbacks.shift();if(typeof callback=="function"){callback();continue}var func=callback.func;if(typeof func==="number"){if(callback.arg===undefined){Module["dynCall_v"](func)}else{Module["dynCall_vi"](func,callback.arg)}}else{func(callback.arg===undefined?null:callback.arg)}}}var __ATPRERUN__=[];var __ATINIT__=[];var __ATMAIN__=[];var __ATEXIT__=[];var __ATPOSTRUN__=[];var runtimeInitialized=false;var runtimeExited=false;function preRun(){if(Module["preRun"]){if(typeof Module["preRun"]=="function")Module["preRun"]=[Module["preRun"]];while(Module["preRun"].length){addOnPreRun(Module["preRun"].shift())}}callRuntimeCallbacks(__ATPRERUN__)}function ensureInitRuntime(){if(runtimeInitialized)return;runtimeInitialized=true;callRuntimeCallbacks(__ATINIT__)}function preMain(){callRuntimeCallbacks(__ATMAIN__)}function exitRuntime(){callRuntimeCallbacks(__ATEXIT__);runtimeExited=true}function postRun(){if(Module["postRun"]){if(typeof Module["postRun"]=="function")Module["postRun"]=[Module["postRun"]];while(Module["postRun"].length){addOnPostRun(Module["postRun"].shift())}}callRuntimeCallbacks(__ATPOSTRUN__)}function addOnPreRun(cb){__ATPRERUN__.unshift(cb)}function addOnPreMain(cb){__ATMAIN__.unshift(cb)}function addOnPostRun(cb){__ATPOSTRUN__.unshift(cb)}function intArrayFromString(stringy,dontAddNull,length){var len=length>0?length:lengthBytesUTF8(stringy)+1;var u8array=new Array(len);var numBytesWritten=stringToUTF8Array(stringy,u8array,0,u8array.length);if(dontAddNull)u8array.length=numBytesWritten;return u8array}function writeArrayToMemory(array,buffer){HEAP8.set(array,buffer)}function writeAsciiToMemory(str,buffer,dontAddNull){for(var i=0;i>0]=str.charCodeAt(i)}if(!dontAddNull)HEAP8[buffer>>0]=0}if(!Math["imul"]||Math["imul"](4294967295,5)!==-5)Math["imul"]=function imul(a,b){var ah=a>>>16;var al=a&65535;var bh=b>>>16;var bl=b&65535;return al*bl+(ah*bl+al*bh<<16)|0};Math.imul=Math["imul"];if(!Math["fround"]){var froundBuffer=new Float32Array(1);Math["fround"]=(function(x){froundBuffer[0]=x;return froundBuffer[0]})}Math.fround=Math["fround"];if(!Math["clz32"])Math["clz32"]=(function(x){x=x>>>0;for(var i=0;i<32;i++){if(x&1<<31-i)return i}return 32});Math.clz32=Math["clz32"];if(!Math["trunc"])Math["trunc"]=(function(x){return x<0?Math.ceil(x):Math.floor(x)});Math.trunc=Math["trunc"];var Math_abs=Math.abs;var Math_cos=Math.cos;var Math_sin=Math.sin;var Math_tan=Math.tan;var Math_acos=Math.acos;var Math_asin=Math.asin;var Math_atan=Math.atan;var Math_atan2=Math.atan2;var Math_exp=Math.exp;var Math_log=Math.log;var Math_sqrt=Math.sqrt;var Math_ceil=Math.ceil;var Math_floor=Math.floor;var Math_pow=Math.pow;var Math_imul=Math.imul;var Math_fround=Math.fround;var Math_round=Math.round;var Math_min=Math.min;var Math_clz32=Math.clz32;var Math_trunc=Math.trunc;var runDependencies=0;var runDependencyWatcher=null;var dependenciesFulfilled=null;Module["preloadedImages"]={};Module["preloadedAudios"]={};var ASM_CONSTS=[];STATIC_BASE=Runtime.GLOBAL_BASE;STATICTOP=STATIC_BASE+24288;__ATINIT__.push();allocate([36,23,0,0,212,23,0,0,24,0,0,0,0,0,0,0,252,22,0,0,251,23,0,0,36,23,0,0,24,24,0,0,24,0,0,0,0,0,0,0,252,22,0,0,127,24,0,0,36,23,0,0,148,24,0,0,48,0,0,0,0,0,0,0,36,23,0,0,165,24,0,0,88,0,0,0,0,0,0,0,252,22,0,0,193,24,0,0,252,22,0,0,230,24,0,0,36,23,0,0,25,26,0,0,96,0,0,0,0,0,0,0,252,22,0,0,47,26,0,0,36,23,0,0,157,36,0,0,120,0,0,0,0,0,0,0,36,23,0,0,84,26,0,0,160,0,0,0,0,0,0,0,36,23,0,0,173,26,0,0,176,0,0,0,0,0,0,0,36,23,0,0,1,27,0,0,192,0,0,0,0,0,0,0,36,23,0,0,53,27,0,0,208,0,0,0,0,0,0,0,252,22,0,0,96,27,0,0,36,23,0,0,250,27,0,0,232,0,0,0,0,0,0,0,36,23,0,0,146,28,0,0,160,0,0,0,0,0,0,0,36,23,0,0,27,29,0,0,232,0,0,0,0,0,0,0,36,23,0,0,181,29,0,0,232,0,0,0,0,0,0,0,36,23,0,0,71,30,0,0,232,0,0,0,0,0,0,0,36,23,0,0,237,30,0,0,232,0,0,0,0,0,0,0,36,23,0,0,136,31,0,0,232,0,0,0,0,0,0,0,36,23,0,0,30,32,0,0,88,1,0,0,0,0,0,0,36,23,0,0,195,32,0,0,160,0,0,0,0,0,0,0,36,23,0,0,89,33,0,0,88,1,0,0,0,0,0,0,36,23,0,0,0,34,0,0,88,1,0,0,0,0,0,0,36,23,0,0,159,34,0,0,88,1,0,0,0,0,0,0,36,23,0,0,82,35,0,0,88,1,0,0,0,0,0,0,36,23,0,0,250,35,0,0,88,1,0,0,0,0,0,0,36,23,0,0,201,36,0,0,128,0,0,0,0,0,0,0,36,23,0,0,77,66,0,0,128,0,0,0,0,0,0,0,36,23,0,0,212,40,0,0,232,1,0,0,0,0,0,0,36,23,0,0,69,41,0,0,176,0,0,0,0,0,0,0,36,23,0,0,16,44,0,0,8,2,0,0,0,0,0,0,36,23,0,0,192,44,0,0,232,1,0,0,0,0,0,0,36,23,0,0,204,45,0,0,8,2,0,0,0,0,0,0,36,23,0,0,224,46,0,0,8,2,0,0,0,0,0,0,36,23,0,0,138,47,0,0,8,2,0,0,0,0,0,0,36,23,0,0,72,48,0,0,8,2,0,0,0,0,0,0,36,23,0,0,251,48,0,0,8,2,0,0,0,0,0,0,36,23,0,0,169,49,0,0,120,2,0,0,0,0,0,0,36,23,0,0,102,50,0,0,232,1,0,0,0,0,0,0,36,23,0,0,20,51,0,0,120,2,0,0,0,0,0,0,36,23,0,0,211,51,0,0,120,2,0,0,0,0,0,0,36,23,0,0,138,52,0,0,120,2,0,0,0,0,0,0,36,23,0,0,85,53,0,0,120,2,0,0,0,0,0,0,36,23,0,0,21,54,0,0,120,2,0,0,0,0,0,0,36,23,0,0,208,54,0,0,232,2,0,0,0,0,0,0,36,23,0,0,28,55,0,0,248,2,0,0,0,0,0,0,252,22,0,0,100,55,0,0,36,23,0,0,14,56,0,0,16,3,0,0,0,0,0,0,36,23,0,0,114,56,0,0,176,0,0,0,0,0,0,0,36,23,0,0,209,56,0,0,48,3,0,0,0,0,0,0,36,23,0,0,116,57,0,0,16,3,0,0,0,0,0,0,36,23,0,0,8,58,0,0,48,3,0,0,0,0,0,0,36,23,0,0,173,58,0,0,48,3,0,0,0,0,0,0,36,23,0,0,74,59,0,0,48,3,0,0,0,0,0,0,36,23,0,0,251,59,0,0,48,3,0,0,0,0,0,0,36,23,0,0,161,60,0,0,48,3,0,0,0,0,0,0,36,23,0,0,66,61,0,0,160,3,0,0,0,0,0,0,36,23,0,0,242,61,0,0,16,3,0,0,0,0,0,0,36,23,0,0,147,62,0,0,160,3,0,0,0,0,0,0,36,23,0,0,69,63,0,0,160,3,0,0,0,0,0,0,36,23,0,0,239,63,0,0,160,3,0,0,0,0,0,0,36,23,0,0,173,64,0,0,160,3,0,0,0,0,0,0,36,23,0,0,96,65,0,0,160,3,0,0,0,0,0,0,36,23,0,0,14,66,0,0,248,2,0,0,0,0,0,0,36,23,0,0,120,66,0,0,72,0,0,0,0,0,0,0,36,23,0,0,220,66,0,0,96,0,0,0,0,0,0,0,36,23,0,0,168,66,0,0,64,4,0,0,0,0,0,0,252,22,0,0,194,66,0,0,36,23,0,0,2,67,0,0,96,0,0,0,0,0,0,0,36,23,0,0,217,68,0,0,72,0,0,0,0,0,0,0,36,23,0,0,65,70,0,0,104,0,0,0,0,0,0,0,36,23,0,0,97,70,0,0,104,0,0,0,0,0,0,0,36,23,0,0,238,73,0,0,216,4,0,0,0,0,0,0,252,22,0,0,130,70,0,0,36,23,0,0,131,71,0,0,64,4,0,0,0,0,0,0,252,22,0,0,77,72,0,0,36,23,0,0,136,72,0,0,64,4,0,0,0,0,0,0,36,23,0,0,49,73,0,0,64,4,0,0,0,0,0,0,252,22,0,0,58,74,0,0,36,23,0,0,104,74,0,0,216,4,0,0,0,0,0,0,36,23,0,0,190,74,0,0,216,4,0,0,0,0,0,0,252,22,0,0,223,86,0,0,36,23,0,0,63,87,0,0,24,5,0,0,0,0,0,0,36,23,0,0,236,86,0,0,40,5,0,0,0,0,0,0,252,22,0,0,13,87,0,0,36,23,0,0,26,87,0,0,8,5,0,0,0,0,0,0,36,23,0,0,48,88,0,0,0,5,0,0,0,0,0,0,36,23,0,0,97,88,0,0,24,5,0,0,0,0,0,0,36,23,0,0,61,88,0,0,80,5,0,0,0,0,0,0,0,0,0,192,0,0,0,192,0,0,0,192,0,0,0,192,0,0,0,192,0,0,0,192,0,0,0,192,0,0,0,0,8,0,0,0,1,0,0,0,2,0,0,0,1,0,0,0,1,0,0,0,1,0,0,0,0,0,0,0,32,0,0,0,3,0,0,0,4,0,0,0,2,0,0,0,2,0,0,0,2,0,0,0,0,0,0,0,48,0,0,0,5,0,0,0,6,0,0,0,1,0,0,0,3,0,0,0,3,0,0,0,7,0,0,0,2,0,0,0,0,0,0,192,0,0,0,0,56,0,0,0,8,0,0,0,9,0,0,0,3,0,0,0,4,0,0,0,3,0,0,0,7,0,0,0,4,0,0,0,0,0,0,192,0,0,0,0,72,0,0,0,10,0,0,0,11,0,0,0,1,0,0,0,3,0,0,0,4,0,0,0,5,0,0,0,4,0,0,0,5,0,0,0,6,0,0,0,1,0,0,0,7,0,0,0,6,0,0,0,0,0,0,0,96,0,0,0,12,0,0,0,13,0,0,0,7,0,0,0,8,0,0,0,1,0,0,0,9,0,0,0,10,0,0,0,11,0,0,0,12,0,0,0,0,0,0,0,104,0,0,0,12,0,0,0,14,0,0,0,13,0,0,0,8,0,0,0,1,0,0,0,14,0,0,0,10,0,0,0,11,0,0,0,12,0,0,0,15,0,0,0,8,0,0,0,9,0,0,0,1,0,0,0,0,0,0,0,120,0,0,0,15,0,0,0,16,0,0,0,2,0,0,0,10,0,0,0,3,0,0,0,4,0,0,0,11,0,0,0,12,0,0,0,5,0,0,0,0,0,0,192,0,0,0,0,128,0,0,0,17,0,0,0,18,0,0,0,6,0,0,0,10,0,0,0,3,0,0,0,4,0,0,0,13,0,0,0,12,0,0,0,7,0,0,0,8,0,0,0,1,0,0,0,16,0,0,0,14,0,0,0,0,0,0,0,160,0,0,0,19,0,0,0,20,0,0,0,1,0,0,0,17,0,0,0,1,0,0,0,18,0,0,0,15,0,0,0,16,0,0,0,19,0,0,0,20,0,0,0,17,0,0,0,1,0,0,0,0,0,0,0,144,0,0,0,19,0,0,0,21,0,0,0,21,0,0,0,17,0,0,0,22,0,0,0,18,0,0,0,15,0,0,0,16,0,0,0,19,0,0,0,20,0,0,0,17,0,0,0,1,0,0,0,0,0,0,0,56,1,0,0,19,0,0,0,22,0,0,0,23,0,0,0,17,0,0,0,24,0,0,0,18,0,0,0,15,0,0,0,16,0,0,0,19,0,0,0,20,0,0,0,17,0,0,0,2,0,0,0,0,0,0,0,40,1,0,0,19,0,0,0,23,0,0,0,25,0,0,0,17,0,0,0,26,0,0,0,18,0,0,0,15,0,0,0,16,0,0,0,19,0,0,0,20,0,0,0,17,0,0,0,3,0,0,0,0,0,0,0,24,1,0,0,24,0,0,0,25,0,0,0,27,0,0,0,17,0,0,0,28,0,0,0,18,0,0,0,15,0,0,0,16,0,0,0,19,0,0,0,20,0,0,0,18,0,0,0,4,0,0,0,0,0,0,0,8,1,0,0,26,0,0,0,27,0,0,0,29,0,0,0,17,0,0,0,30,0,0,0,31,0,0,0,19,0,0,0,20,0,0,0,19,0,0,0,20,0,0,0,21,0,0,0,5,0,0,0,0,0,0,0,248,0,0,0,28,0,0,0,29,0,0,0,32,0,0,0,17,0,0,0,33,0,0,0,34,0,0,0,22,0,0,0,23,0,0,0,19,0,0,0,20,0,0,0,24,0,0,0,6,0,0,0,0,0,0,0,216,0,0,0,30,0,0,0,31,0,0,0,35,0,0,0,17,0,0,0,36,0,0,0,37,0,0,0,25,0,0,0,26,0,0,0,19,0,0,0,20,0,0,0,27,0,0,0,7,0,0,0,0,0,0,0,168,1,0,0,19,0,0,0,32,0,0,0,38,0,0,0,17,0,0,0,39,0,0,0,18,0,0,0,15,0,0,0,16,0,0,0,19,0,0,0,20,0,0,0,17,0,0,0,8,0,0,0,0,0,0,0,152,1,0,0,19,0,0,0,33,0,0,0,40,0,0,0,17,0,0,0,41,0,0,0,18,0,0,0,15,0,0,0,16,0,0,0,19,0,0,0,20,0,0,0,17,0,0,0,9,0,0,0,0,0,0,0,136,1,0,0,34,0,0,0,35,0,0,0,42,0,0,0,17,0,0,0,43,0,0,0,18,0,0,0,15,0,0,0,16,0,0,0,19,0,0,0,20,0,0,0,28,0,0,0,10,0,0,0,0,0,0,0,120,1,0,0,36,0,0,0,37,0,0,0,44,0,0,0,17,0,0,0,45,0,0,0,46,0,0,0,29,0,0,0,30,0,0,0,19,0,0,0,20,0,0,0,31,0,0,0,11,0,0,0,0,0,0,0,104,1,0,0,38,0,0,0,39,0,0,0,47,0,0,0,17,0,0,0,48,0,0,0,49,0,0,0,32,0,0,0,33,0,0,0,19,0,0,0,20,0,0,0,34,0,0,0,12,0,0,0,0,0,0,0,72,1,0,0,40,0,0,0,41,0,0,0,50,0,0,0,17,0,0,0,51,0,0,0,52,0,0,0,35,0,0,0,36,0,0,0,19,0,0,0,20,0,0,0,37,0,0,0,13,0,0,0,0,0,0,0,184,1,0,0,42,0,0,0,43,0,0,0,9,0,0,0,10,0,0,0,3,0,0,0,10,0,0,0,13,0,0,0,12,0,0,0,7,0,0,0,11,0,0,0,1,0,0,0,16,0,0,0,38,0,0,0,53,0,0,0,39,0,0,0,0,0,0,0,200,1,0,0,17,0,0,0,44,0,0,0,12,0,0,0,10,0,0,0,3,0,0,0,13,0,0,0,13,0,0,0,12,0,0,0,7,0,0,0,14,0,0,0,2,0,0,0,54,0,0,0,40,0,0,0,0,0,0,0,0,4,0,0,45,0,0,0,46,0,0,0,55,0,0,0,0,0,0,0,216,2,0,0,45,0,0,0,47,0,0,0,56,0,0,0,0,0,0,0,216,1,0,0,48,0,0,0,49,0,0,0,57,0,0,0,58,0,0,0,59,0,0,0,60,0,0,0,41,0,0,0,42,0,0,0,61,0,0,0,62,0,0,0,43,0,0,0,14,0,0,0,0,0,0,0,88,2,0,0,48,0,0,0,50,0,0,0,63,0,0,0,58,0,0,0,64,0,0,0,60,0,0,0,41,0,0,0,42,0,0,0,61,0,0,0,62,0,0,0,43,0,0,0,15,0,0,0,0,0,0,0,72,2,0,0,48,0,0,0,51,0,0,0,65,0,0,0,58,0,0,0,66,0,0,0,60,0,0,0,41,0,0,0,42,0,0,0,61,0,0,0,62,0,0,0,43,0,0,0,16,0,0,0,0,0,0,0,56,2,0,0,52,0,0,0,53,0,0,0,67,0,0,0,58,0,0,0,68,0,0,0,60,0,0,0,41,0,0,0,42,0,0,0,61,0,0,0,62,0,0,0,44,0,0,0,17,0,0,0,0,0,0,0,40,2,0,0,54,0,0,0,55,0,0,0,69,0,0,0,58,0,0,0,70,0,0,0,71,0,0,0,45,0,0,0,46,0,0,0,61,0,0,0,62,0,0,0,47,0,0,0,18,0,0,0,0,0,0,0,24,2,0,0,56,0,0,0,57,0,0,0,72,0,0,0,58,0,0,0,73,0,0,0,74,0,0,0,48,0,0,0,49,0,0,0,61,0,0,0,62,0,0,0,50,0,0,0,19,0,0,0,0,0,0,0,248,1,0,0,58,0,0,0,59,0,0,0,75,0,0,0,58,0,0,0,76,0,0,0,77,0,0,0,51,0,0,0,52,0,0,0,61,0,0,0,62,0,0,0,53,0,0,0,20,0,0,0,0,0,0,0,200,2,0,0,48,0,0,0,60,0,0,0,78,0,0,0,58,0,0,0,79,0,0,0,60,0,0,0,41,0,0,0,42,0,0,0,61,0,0,0,62,0,0,0,43,0,0,0,21,0,0,0,0,0,0,0,184,2,0,0,48,0,0,0,61,0,0,0,80,0,0,0,58,0,0,0,81,0,0,0,60,0,0,0,41,0,0,0,42,0,0,0,61,0,0,0,62,0,0,0,43,0,0,0,22,0,0,0,0,0,0,0,168,2,0,0,62,0,0,0,63,0,0,0,82,0,0,0,58,0,0,0,83,0,0,0,60,0,0,0,41,0,0,0,42,0,0,0,61,0,0,0,62,0,0,0,54,0,0,0,23,0,0,0,0,0,0,0,152,2,0,0,64,0,0,0,65,0,0,0,84,0,0,0,58,0,0,0,85,0,0,0,86,0,0,0,55,0,0,0,56,0,0,0,61,0,0,0,62,0,0,0,57,0,0,0,24,0,0,0,0,0,0,0,136,2,0,0,66,0,0,0,67,0,0,0,87,0,0,0,58,0,0,0,88,0,0,0,89,0,0,0,58,0,0,0,59,0,0,0,61,0,0,0,62,0,0,0,60,0,0,0,25,0,0,0,0,0,0,0,104,2,0,0,68,0,0,0,69,0,0,0,90,0,0,0,58,0,0,0,91,0,0,0,92,0,0,0,61,0,0,0,62,0,0,0,61,0,0,0,62,0,0,0,63,0,0,0,26,0,0,0,0,0,0,0,0,3,0,0,70,0,0,0,71,0,0,0,93,0,0,0,94,0,0,0,95,0,0,0,96,0,0,0,64,0,0,0,65,0,0,0,97,0,0,0,98,0,0,0,66,0,0,0,27,0,0,0,0,0,0,0,128,3,0,0,70,0,0,0,72,0,0,0,99,0,0,0,94,0,0,0,100,0,0,0,96,0,0,0,64,0,0,0,65,0,0,0,97,0,0,0,98,0,0,0,66,0,0,0,28,0,0,0,0,0,0,0,112,3,0,0,70,0,0,0,73,0,0,0,101,0,0,0,94,0,0,0,102,0,0,0,96,0,0,0,64,0,0,0,65,0,0,0,97,0,0,0,98,0,0,0,66,0,0,0,29,0,0,0,0,0,0,0,96,3,0,0,74,0,0,0,75,0,0,0,103,0,0,0,94,0,0,0,104,0,0,0,96,0,0,0,64,0,0,0,65,0,0,0,97,0,0,0,98,0,0,0,67,0,0,0,30,0,0,0,0,0,0,0,80,3,0,0,76,0,0,0,77,0,0,0,105,0,0,0,94,0,0,0,106,0,0,0,107,0,0,0,68,0,0,0,69,0,0,0,97,0,0,0,98,0,0,0,70,0,0,0,31,0,0,0,0,0,0,0,64,3,0,0,78,0,0,0,79,0,0,0,108,0,0,0,94,0,0,0,109,0,0,0,110,0,0,0,71,0,0,0,72,0,0,0,97,0,0,0,98,0,0,0,73,0,0,0,32,0,0,0,0,0,0,0,32,3,0,0,80,0,0,0,81,0,0,0,111,0,0,0,94,0,0,0,112,0,0,0,113,0,0,0,74,0,0,0,75,0,0,0,97,0,0,0,98,0,0,0,76,0,0,0,33,0,0,0,0,0,0,0,240,3,0,0,70,0,0,0,82,0,0,0,114,0,0,0,94,0,0,0,115,0,0,0,96,0,0,0,64,0,0,0,65,0,0,0,97,0,0,0,98,0,0,0,66,0,0,0,34,0,0,0,0,0,0,0,224,3,0,0,70,0,0,0,83,0,0,0,116,0,0,0,94,0,0,0,117,0,0,0,96,0,0,0,64,0,0,0,65,0,0,0,97,0,0,0,98,0,0,0,66,0,0,0,35,0,0,0,0,0,0,0,208,3,0,0,84,0,0,0,85,0,0,0,118,0,0,0,94,0,0,0,119,0,0,0,96,0,0,0,64,0,0,0,65,0,0,0,97,0,0,0,98,0,0,0,77,0,0,0,36,0,0,0,0,0,0,0,192,3,0,0,86,0,0,0,87,0,0,0,120,0,0,0,94,0,0,0,121,0,0,0,122,0,0,0,78,0,0,0,79,0,0,0,97,0,0,0,98,0,0,0,80,0,0,0,37,0,0,0,0,0,0,0,176,3,0,0,88,0,0,0,89,0,0,0,123,0,0,0,94,0,0,0,124,0,0,0,125,0,0,0,81,0,0,0,82,0,0,0,97,0,0,0,98,0,0,0,83,0,0,0,38,0,0,0,0,0,0,0,144,3,0,0,90,0,0,0,91,0,0,0,126,0,0,0,94,0,0,0,127,0,0,0,128,0,0,0,84,0,0,0,85,0,0,0,97,0,0,0,98,0,0,0,86,0,0,0,39,0,0,0,0,0,0,0,16,4,0,0,92,0,0,0,93,0,0,0,1,0,0,0,87,0,0,0,88,0,0,0,5,0,0,0,4,0,0,0,5,0,0,0,89,0,0,0,90,0,0,0,91,0,0,0,129,0,0,0,5,0,0,0,0,0,0,0,32,4,0,0,12,0,0,0,94,0,0,0,7,0,0,0,8,0,0,0,92,0,0,0,130,0,0,0,10,0,0,0,11,0,0,0,12,0,0,0,0,0,0,0,48,4,0,0,95,0,0,0,96,0,0,0,93,0,0,0,131,0,0,0,0,0,0,0,72,4,0,0,12,0,0,0,97,0,0,0,7,0,0,0,8,0,0,0,94,0,0,0,132,0,0,0,10,0,0,0,11,0,0,0,12,0,0,0,0,0,0,0,88,4,0,0,10,0,0,0,98,0,0,0,1,0,0,0,3,0,0,0,4,0,0,0,5,0,0,0,4,0,0,0,5,0,0,0,6,0,0,0,95,0,0,0,96,0,0,0,6,0,0,0,0,0,0,0,104,4,0,0,12,0,0,0,99,0,0,0,13,0,0,0,8,0,0,0,97,0,0,0,14,0,0,0,10,0,0,0,11,0,0,0,12,0,0,0,15,0,0,0,8,0,0,0,9,0,0,0,133,0,0,0,0,0,0,0,120,4,0,0,100,0,0,0,101,0,0,0,13,0,0,0,134,0,0,0,98,0,0,0,14,0,0,0,10,0,0,0,11,0,0,0,135,0,0,0,136,0,0,0,99,0,0,0,100,0,0,0,137,0,0,0,0,0,0,0,136,4,0,0,102,0,0,0,103,0,0,0,101,0,0,0,102,0,0,0,103,0,0,0,104,0,0,0,138,0,0,0,139,0,0,0,140,0,0,0,141,0,0,0,0,0,0,0,160,4,0,0,104,0,0,0,105,0,0,0,105,0,0,0,142,0,0,0,0,0,0,0,152,4,0,0,106,0,0,0,107,0,0,0,108,0,0,0,0,0,0,192,0,0,0,0,184,4,0,0,109,0,0,0,110,0,0,0,106,0,0,0,143,0,0,0,0,0,0,0,176,4,0,0,111,0,0,0,112,0,0,0,113,0,0,0,0,0,0,0,200,4,0,0,114,0,0,0,115,0,0,0,107,0,0,0,144,0,0,0,0,0,0,0,224,4,0,0,116,0,0,0,117,0,0,0,108,0,0,0,109,0,0,0,110,0,0,0,111,0,0,0,145,0,0,0,146,0,0,0,147,0,0,0,148,0,0,0,0,0,0,0,240,4,0,0,118,0,0,0,119,0,0,0,112,0,0,0,113,0,0,0,114,0,0,0,115,0,0,0,149,0,0,0,150,0,0,0,151,0,0,0,152,0,0,0,0,0,0,0,1,0,0,0,3,0,0,0,5,0,0,0,7,0,0,0,0,19,0,0,5,0,0,0,0,0,0,0,0,0,0,0,153,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,15,0,0,0,16,0,0,0,204,90,0,0,0,0,0,0,0,0,0,0,0,0,0,0,2,0,0,0,0,0,0,0,0,0,0,0,0,0,0,255,255,255,255,255,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,160,90,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,116,20,0,0,5,0,0,0,0,0,0,0,0,0,0,0,153,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,17,0,0,0,16,0,0,0,212,90,0,0,0,4,0,0,0,0,0,0,0,0,0,0,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,10,255,255,255,255,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,18,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,255,255,255,255,255,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,2,0,0,0,3,0,0,0,5,0,0,0,7,0,0,0,11,0,0,0,13,0,0,0,17,0,0,0,19,0,0,0,23,0,0,0,29,0,0,0,31,0,0,0,37,0,0,0,41,0,0,0,43,0,0,0,47,0,0,0,53,0,0,0,59,0,0,0,61,0,0,0,67,0,0,0,71,0,0,0,73,0,0,0,79,0,0,0,83,0,0,0,89,0,0,0,97,0,0,0,101,0,0,0,103,0,0,0,107,0,0,0,109,0,0,0,113,0,0,0,127,0,0,0,131,0,0,0,137,0,0,0,139,0,0,0,149,0,0,0,151,0,0,0,157,0,0,0,163,0,0,0,167,0,0,0,173,0,0,0,179,0,0,0,181,0,0,0,191,0,0,0,193,0,0,0,197,0,0,0,199,0,0,0,211,0,0,0,1,0,0,0,11,0,0,0,13,0,0,0,17,0,0,0,19,0,0,0,23,0,0,0,29,0,0,0,31,0,0,0,37,0,0,0,41,0,0,0,43,0,0,0,47,0,0,0,53,0,0,0,59,0,0,0,61,0,0,0,67,0,0,0,71,0,0,0,73,0,0,0,79,0,0,0,83,0,0,0,89,0,0,0,97,0,0,0,101,0,0,0,103,0,0,0,107,0,0,0,109,0,0,0,113,0,0,0,121,0,0,0,127,0,0,0,131,0,0,0,137,0,0,0,139,0,0,0,143,0,0,0,149,0,0,0,151,0,0,0,157,0,0,0,163,0,0,0,167,0,0,0,169,0,0,0,173,0,0,0,179,0,0,0,181,0,0,0,187,0,0,0,191,0,0,0,193,0,0,0,197,0,0,0,199,0,0,0,209,0,0,0,2,0,0,0,214,86,0,0,0,0,0,0,8,5,0,0,120,0,0,0,121,0,0,0,122,0,0,0,123,0,0,0,19,0,0,0,1,0,0,0,1,0,0,0,3,0,0,0,0,0,0,0,48,5,0,0,120,0,0,0,124,0,0,0,122,0,0,0,123,0,0,0,19,0,0,0,2,0,0,0,2,0,0,0,4,0,0,0,0,0,0,0,64,5,0,0,125,0,0,0,126,0,0,0,154,0,0,0,110,97,109,101,0,115,114,99,47,100,114,97,99,111,47,99,111,114,101,47,98,105,116,95,99,111,100,101,114,115,47,114,97,110,115,95,98,105,116,95,100,101,99,111,100,101,114,46,99,99,0,40,110,98,105,116,115,41,32,62,61,32,40,48,41,0,46,47,115,114,99,47,100,114,97,99,111,47,99,111,114,101,47,100,101,99,111,100,101,114,95,98,117,102,102,101,114,46,104,0,71,101,116,66,105,116,115,0,40,110,98,105,116,115,41,32,60,61,32,40,51,50,41,0,78,53,100,114,97,99,111,50,56,65,116,116,114,105,98,117,116,101,79,99,116,97,104,101,100,114,111,110,84,114,97,110,115,102,111,114,109,69,0,78,53,100,114,97,99,111,49,56,65,116,116,114,105,98,117,116,101,84,114,97,110,115,102,111,114,109,69,0,78,53,100,114,97,99,111,51,48,65,116,116,114,105,98,117,116,101,81,117,97,110,116,105,122,97,116,105,111,110,84,114,97,110,115,102,111,114,109,69,0,97,116,116,95,105,100,32,62,61,32,48,0,115,114,99,47,100,114,97,99,111,47,112,111,105,110,116,95,99,108,111,117,100,47,112,111,105,110,116,95,99,108,111,117,100,46,99,99,0,83,101,116,65,116,116,114,105,98,117,116,101,0,78,53,100,114,97,99,111,49,48,80,111,105,110,116,67,108,111,117,100,69,0,78,53,100,114,97,99,111,52,77,101,115,104,69,0,37,100,0,78,53,100,114,97,99,111,49,55,65,116,116,114,105,98,117,116,101,115,68,101,99,111,100,101,114,69,0,78,53,100,114,97,99,111,50,54,65,116,116,114,105,98,117,116,101,115,68,101,99,111,100,101,114,73,110,116,101,114,102,97,99,101,69,0,78,53,100,114,97,99,111,49,55,80,111,105,110,116,67,108,111,117,100,68,101,99,111,100,101,114,69,0,70,97,105,108,101,100,32,116,111,32,112,97,114,115,101,32,68,114,97,99,111,32,104,101,97,100,101,114,46,0,68,82,65,67,79,0,78,111,116,32,97,32,68,114,97,99,111,32,102,105,108,101,46,0,70,97,105,108,101,100,32,116,111,32,100,101,99,111,100,101,32,109,101,116,97,100,97,116,97,46,0,85,115,105,110,103,32,105,110,99,111,109,112,97,116,105,98,108,101,32,100,101,99,111,100,101,114,32,102,111,114,32,116,104,101,32,105,110,112,117,116,32,103,101,111,109,101,116,114,121,46,0,85,110,107,110,111,119,110,32,109,97,106,111,114,32,118,101,114,115,105,111,110,46,0,85,110,107,110,111,119,110,32,109,105,110,111,114,32,118,101,114,115,105,111,110,46,0,70,97,105,108,101,100,32,116,111,32,105,110,105,116,105,97,108,105,122,101,32,116,104,101,32,100,101,99,111,100,101,114,46,0,70,97,105,108,101,100,32,116,111,32,100,101,99,111,100,101,32,103,101,111,109,101,116,114,121,32,100,97,116,97,46,0,70,97,105,108,101,100,32,116,111,32,100,101,99,111,100,101,32,112,111,105,110,116,32,97,116,116,114,105,98,117,116,101,115,46,0,78,53,100,114,97,99,111,49,49,77,101,115,104,68,101,99,111,100,101,114,69,0,78,53,100,114,97,99,111,50,54,83,101,113,117,101,110,116,105,97,108,65,116,116,114,105,98,117,116,101,68,101,99,111,100,101,114,69,0,78,53,100,114,97,99,111,50,56,80,114,101,100,105,99,116,105,111,110,83,99,104,101,109,101,68,101,108,116,97,68,101,99,111,100,101,114,73,105,78,83,95,51,55,80,114,101,100,105,99,116,105,111,110,83,99,104,101,109,101,87,114,97,112,68,101,99,111,100,105,110,103,84,114,97,110,115,102,111,114,109,73,105,105,69,69,69,69,0,78,53,100,114,97,99,111,50,51,80,114,101,100,105,99,116,105,111,110,83,99,104,101,109,101,68,101,99,111,100,101,114,73,105,78,83,95,51,55,80,114,101,100,105,99,116,105,111,110,83,99,104,101,109,101,87,114,97,112,68,101,99,111,100,105,110,103,84,114,97,110,115,102,111,114,109,73,105,105,69,69,69,69,0,78,53,100,114,97,99,111,51,55,80,114,101,100,105,99,116,105,111,110,83,99,104,101,109,101,84,121,112,101,100,68,101,99,111,100,101,114,73,110,116,101,114,102,97,99,101,73,105,105,69,69,0,78,53,100,114,97,99,111,51,50,80,114,101,100,105,99,116,105,111,110,83,99,104,101,109,101,68,101,99,111,100,101,114,73,110,116,101,114,102,97,99,101,69,0,78,53,100,114,97,99,111,50,53,80,114,101,100,105,99,116,105,111,110,83,99,104,101,109,101,73,110,116,101,114,102,97,99,101,69,0,102,97,108,115,101,0,46,47,115,114,99,47,100,114,97,99,111,47,99,111,109,112,114,101,115,115,105,111,110,47,97,116,116,114,105,98,117,116,101,115,47,112,114,101,100,105,99,116,105,111,110,95,115,99,104,101,109,101,115,47,112,114,101,100,105,99,116,105,111,110,95,115,99,104,101,109,101,95,119,114,97,112,95,116,114,97,110,115,102,111,114,109,95,98,97,115,101,46,104,0,113,117,97,110,116,105,122,97,116,105,111,110,95,98,105,116,115,0,78,53,100,114,97,99,111,52,50,77,101,115,104,80,114,101,100,105,99,116,105,111,110,83,99,104,101,109,101,71,101,111,109,101,116,114,105,99,78,111,114,109,97,108,68,101,99,111,100,101,114,73,105,78,83,95,51,55,80,114,101,100,105,99,116,105,111,110,83,99,104,101,109,101,87,114,97,112,68,101,99,111,100,105,110,103,84,114,97,110,115,102,111,114,109,73,105,105,69,69,78,83,95,50,52,77,101,115,104,80,114,101,100,105,99,116,105,111,110,83,99,104,101,109,101,68,97,116,97,73,78,83,95,49,49,67,111,114,110,101,114,84,97,98,108,101,69,69,69,69,69,0,78,53,100,114,97,99,111,50,55,77,101,115,104,80,114,101,100,105,99,116,105,111,110,83,99,104,101,109,101,68,101,99,111,100,101,114,73,105,78,83,95,51,55,80,114,101,100,105,99,116,105,111,110,83,99,104,101,109,101,87,114,97,112,68,101,99,111,100,105,110,103,84,114,97,110,115,102,111,114,109,73,105,105,69,69,78,83,95,50,52,77,101,115,104,80,114,101,100,105,99,116,105,111,110,83,99,104,101,109,101,68,97,116,97,73,78,83,95,49,49,67,111,114,110,101,114,84,97,98,108,101,69,69,69,69,69,0,78,53,100,114,97,99,111,52,52,77,101,115,104,80,114,101,100,105,99,116,105,111,110,83,99,104,101,109,101,84,101,120,67,111,111,114,100,115,80,111,114,116,97,98,108,101,68,101,99,111,100,101,114,73,105,78,83,95,51,55,80,114,101,100,105,99,116,105,111,110,83,99,104,101,109,101,87,114,97,112,68,101,99,111,100,105,110,103,84,114,97,110,115,102,111,114,109,73,105,105,69,69,78,83,95,50,52,77,101,115,104,80,114,101,100,105,99,116,105,111,110,83,99,104,101,109,101,68,97,116,97,73,78,83,95,49,49,67,111,114,110,101,114,84,97,98,108,101,69,69,69,69,69,0,78,53,100,114,97,99,111,51,54,77,101,115,104,80,114,101,100,105,99,116,105,111,110,83,99,104,101,109,101,84,101,120,67,111,111,114,100,115,68,101,99,111,100,101,114,73,105,78,83,95,51,55,80,114,101,100,105,99,116,105,111,110,83,99,104,101,109,101,87,114,97,112,68,101,99,111,100,105,110,103,84,114,97,110,115,102,111,114,109,73,105,105,69,69,78,83,95,50,52,77,101,115,104,80,114,101,100,105,99,116,105,111,110,83,99,104,101,109,101,68,97,116,97,73,78,83,95,49,49,67,111,114,110,101,114,84,97,98,108,101,69,69,69,69,69,0,78,53,100,114,97,99,111,53,54,77,101,115,104,80,114,101,100,105,99,116,105,111,110,83,99,104,101,109,101,67,111,110,115,116,114,97,105,110,101,100,77,117,108,116,105,80,97,114,97,108,108,101,108,111,103,114,97,109,68,101,99,111,100,101,114,73,105,78,83,95,51,55,80,114,101,100,105,99,116,105,111,110,83,99,104,101,109,101,87,114,97,112,68,101,99,111,100,105,110,103,84,114,97,110,115,102,111,114,109,73,105,105,69,69,78,83,95,50,52,77,101,115,104,80,114,101,100,105,99,116,105,111,110,83,99,104,101,109,101,68,97,116,97,73,78,83,95,49,49,67,111,114,110,101,114,84,97,98,108,101,69,69,69,69,69,0,78,53,100,114,97,99,111,52,53,77,101,115,104,80,114,101,100,105,99,116,105,111,110,83,99,104,101,109,101,77,117,108,116,105,80,97,114,97,108,108,101,108,111,103,114,97,109,68,101,99,111,100,101,114,73,105,78,83,95,51,55,80,114,101,100,105,99,116,105,111,110,83,99,104,101,109,101,87,114,97,112,68,101,99,111,100,105,110,103,84,114,97,110,115,102,111,114,109,73,105,105,69,69,78,83,95,50,52,77,101,115,104,80,114,101,100,105,99,116,105,111,110,83,99,104,101,109,101,68,97,116,97,73,78,83,95,49,49,67,111,114,110,101,114,84,97,98,108,101,69,69,69,69,69,0,78,53,100,114,97,99,111,52,48,77,101,115,104,80,114,101,100,105,99,116,105,111,110,83,99,104,101,109,101,80,97,114,97,108,108,101,108,111,103,114,97,109,68,101,99,111,100,101,114,73,105,78,83,95,51,55,80,114,101,100,105,99,116,105,111,110,83,99,104,101,109,101,87,114,97,112,68,101,99,111,100,105,110,103,84,114,97,110,115,102,111,114,109,73,105,105,69,69,78,83,95,50,52,77,101,115,104,80,114,101,100,105,99,116,105,111,110,83,99,104,101,109,101,68,97,116,97,73,78,83,95,49,49,67,111,114,110,101,114,84,97,98,108,101,69,69,69,69,69,0,78,53,100,114,97,99,111,52,50,77,101,115,104,80,114,101,100,105,99,116,105,111,110,83,99,104,101,109,101,71,101,111,109,101,116,114,105,99,78,111,114,109,97,108,68,101,99,111,100,101,114,73,105,78,83,95,51,55,80,114,101,100,105,99,116,105,111,110,83,99,104,101,109,101,87,114,97,112,68,101,99,111,100,105,110,103,84,114,97,110,115,102,111,114,109,73,105,105,69,69,78,83,95,50,52,77,101,115,104,80,114,101,100,105,99,116,105,111,110,83,99,104,101,109,101,68,97,116,97,73,78,83,95,50,52,77,101,115,104,65,116,116,114,105,98,117,116,101,67,111,114,110,101,114,84,97,98,108,101,69,69,69,69,69,0,78,53,100,114,97,99,111,50,55,77,101,115,104,80,114,101,100,105,99,116,105,111,110,83,99,104,101,109,101,68,101,99,111,100,101,114,73,105,78,83,95,51,55,80,114,101,100,105,99,116,105,111,110,83,99,104,101,109,101,87,114,97,112,68,101,99,111,100,105,110,103,84,114,97,110,115,102,111,114,109,73,105,105,69,69,78,83,95,50,52,77,101,115,104,80,114,101,100,105,99,116,105,111,110,83,99,104,101,109,101,68,97,116,97,73,78,83,95,50,52,77,101,115,104,65,116,116,114,105,98,117,116,101,67,111,114,110,101,114,84,97,98,108,101,69,69,69,69,69,0,78,53,100,114,97,99,111,52,52,77,101,115,104,80,114,101,100,105,99,116,105,111,110,83,99,104,101,109,101,84,101,120,67,111,111,114,100,115,80,111,114,116,97,98,108,101,68,101,99,111,100,101,114,73,105,78,83,95,51,55,80,114,101,100,105,99,116,105,111,110,83,99,104,101,109,101,87,114,97,112,68,101,99,111,100,105,110,103,84,114,97,110,115,102,111,114,109,73,105,105,69,69,78,83,95,50,52,77,101,115,104,80,114,101,100,105,99,116,105,111,110,83,99,104,101,109,101,68,97,116,97,73,78,83,95,50,52,77,101,115,104,65,116,116,114,105,98,117,116,101,67,111,114,110,101,114,84,97,98,108,101,69,69,69,69,69,0,78,53,100,114,97,99,111,51,54,77,101,115,104,80,114,101,100,105,99,116,105,111,110,83,99,104,101,109,101,84,101,120,67,111,111,114,100,115,68,101,99,111,100,101,114,73,105,78,83,95,51,55,80,114,101,100,105,99,116,105,111,110,83,99,104,101,109,101,87,114,97,112,68,101,99,111,100,105,110,103,84,114,97,110,115,102,111,114,109,73,105,105,69,69,78,83,95,50,52,77,101,115,104,80,114,101,100,105,99,116,105,111,110,83,99,104,101,109,101,68,97,116,97,73,78,83,95,50,52,77,101,115,104,65,116,116,114,105,98,117,116,101,67,111,114,110,101,114,84,97,98,108,101,69,69,69,69,69,0,78,53,100,114,97,99,111,53,54,77,101,115,104,80,114,101,100,105,99,116,105,111,110,83,99,104,101,109,101,67,111,110,115,116,114,97,105,110,101,100,77,117,108,116,105,80,97,114,97,108,108,101,108,111,103,114,97,109,68,101,99,111,100,101,114,73,105,78,83,95,51,55,80,114,101,100,105,99,116,105,111,110,83,99,104,101,109,101,87,114,97,112,68,101,99,111,100,105,110,103,84,114,97,110,115,102,111,114,109,73,105,105,69,69,78,83,95,50,52,77,101,115,104,80,114,101,100,105,99,116,105,111,110,83,99,104,101,109,101,68,97,116,97,73,78,83,95,50,52,77,101,115,104,65,116,116,114,105,98,117,116,101,67,111,114,110,101,114,84,97,98,108,101,69,69,69,69,69,0,78,53,100,114,97,99,111,52,53,77,101,115,104,80,114,101,100,105,99,116,105,111,110,83,99,104,101,109,101,77,117,108,116,105,80,97,114,97,108,108,101,108,111,103,114,97,109,68,101,99,111,100,101,114,73,105,78,83,95,51,55,80,114,101,100,105,99,116,105,111,110,83,99,104,101,109,101,87,114,97,112,68,101,99,111,100,105,110,103,84,114,97,110,115,102,111,114,109,73,105,105,69,69,78,83,95,50,52,77,101,115,104,80,114,101,100,105,99,116,105,111,110,83,99,104,101,109,101,68,97,116,97,73,78,83,95,50,52,77,101,115,104,65,116,116,114,105,98,117,116,101,67,111,114,110,101,114,84,97,98,108,101,69,69,69,69,69,0,78,53,100,114,97,99,111,52,48,77,101,115,104,80,114,101,100,105,99,116,105,111,110,83,99,104,101,109,101,80,97,114,97,108,108,101,108,111,103,114,97,109,68,101,99,111,100,101,114,73,105,78,83,95,51,55,80,114,101,100,105,99,116,105,111,110,83,99,104,101,109,101,87,114,97,112,68,101,99,111,100,105,110,103,84,114,97,110,115,102,111,114,109,73,105,105,69,69,78,83,95,50,52,77,101,115,104,80,114,101,100,105,99,116,105,111,110,83,99,104,101,109,101,68,97,116,97,73,78,83,95,50,52,77,101,115,104,65,116,116,114,105,98,117,116,101,67,111,114,110,101,114,84,97,98,108,101,69,69,69,69,69,0,78,53,100,114,97,99,111,51,51,83,101,113,117,101,110,116,105,97,108,73,110,116,101,103,101,114,65,116,116,114,105,98,117,116,101,68,101,99,111,100,101,114,69,0,78,53,100,114,97,99,111,51,56,83,101,113,117,101,110,116,105,97,108,81,117,97,110,116,105,122,97,116,105,111,110,65,116,116,114,105,98,117,116,101,68,101,99,111,100,101,114,69,0,40,113,41,32,62,61,32,40,50,41,0,46,47,115,114,99,47,100,114,97,99,111,47,99,111,109,112,114,101,115,115,105,111,110,47,97,116,116,114,105,98,117,116,101,115,47,110,111,114,109,97,108,95,99,111,109,112,114,101,115,115,105,111,110,95,117,116,105,108,115,46,104,0,83,101,116,81,117,97,110,116,105,122,97,116,105,111,110,66,105,116,115,0,40,113,41,32,60,61,32,40,51,48,41,0,40,105,110,95,115,41,32,62,61,32,40,48,41,0,79,99,116,97,104,101,114,100,97,108,67,111,111,114,100,115,84,111,85,110,105,116,86,101,99,116,111,114,0,40,105,110,95,116,41,32,62,61,32,40,48,41,0,40,105,110,95,115,41,32,60,61,32,40,49,41,0,40,105,110,95,116,41,32,60,61,32,40,49,41,0,40,112,114,101,100,95,118,97,108,115,91,48,93,41,32,60,61,32,40,50,32,42,32,116,104,105,115,45,62,99,101,110,116,101,114,95,118,97,108,117,101,40,41,41,0,46,47,115,114,99,47,100,114,97,99,111,47,99,111,109,112,114,101,115,115,105,111,110,47,97,116,116,114,105,98,117,116,101,115,47,112,114,101,100,105,99,116,105,111,110,95,115,99,104,101,109,101,115,47,112,114,101,100,105,99,116,105,111,110,95,115,99,104,101,109,101,95,110,111,114,109,97,108,95,111,99,116,97,104,101,100,114,111,110,95,99,97,110,111,110,105,99,97,108,105,122,101,100,95,100,101,99,111,100,105,110,103,95,116,114,97,110,115,102,111,114,109,46,104,0,67,111,109,112,117,116,101,79,114,105,103,105,110,97,108,86,97,108,117,101,0,40,112,114,101,100,95,118,97,108,115,91,49,93,41,32,60,61,32,40,50,32,42,32,116,104,105,115,45,62,99,101,110,116,101,114,95,118,97,108,117,101,40,41,41,0,40,99,111,114,114,95,118,97,108,115,91,48,93,41,32,60,61,32,40,50,32,42,32,116,104,105,115,45,62,99,101,110,116,101,114,95,118,97,108,117,101,40,41,41,0,40,99,111,114,114,95,118,97,108,115,91,49,93,41,32,60,61,32,40,50,32,42,32,116,104,105,115,45,62,99,101,110,116,101,114,95,118,97,108,117,101,40,41,41,0,40,48,41,32,60,61,32,40,112,114,101,100,95,118,97,108,115,91,48,93,41,0,40,48,41,32,60,61,32,40,112,114,101,100,95,118,97,108,115,91,49,93,41,0,40,48,41,32,60,61,32,40,99,111,114,114,95,118,97,108,115,91,48,93,41,0,40,48,41,32,60,61,32,40,99,111,114,114,95,118,97,108,115,91,49,93,41,0,40,115,41,32,60,61,32,40,99,101,110,116,101,114,95,118,97,108,117,101,95,41,0,73,115,73,110,68,105,97,109,111,110,100,0,40,116,41,32,60,61,32,40,99,101,110,116,101,114,95,118,97,108,117,101,95,41,0,40,115,41,32,62,61,32,40,45,99,101,110,116,101,114,95,118,97,108,117,101,95,41,0,40,116,41,32,62,61,32,40,45,99,101,110,116,101,114,95,118,97,108,117,101,95,41,0,40,42,115,41,32,60,61,32,40,99,101,110,116,101,114,95,118,97,108,117,101,95,41,0,73,110,118,101,114,116,68,105,97,109,111,110,100,0,40,42,116,41,32,60,61,32,40,99,101,110,116,101,114,95,118,97,108,117,101,95,41,0,40,42,115,41,32,62,61,32,40,45],"i8",ALLOC_NONE,Runtime.GLOBAL_BASE);allocate([99,101,110,116,101,114,95,118,97,108,117,101,95,41,0,40,42,116,41,32,62,61,32,40,45,99,101,110,116,101,114,95,118,97,108,117,101,95,41,0,40,109,97,120,95,113,117,97,110,116,105,122,101,100,95,118,97,108,117,101,32,37,32,50,41,32,61,61,32,40,49,41,0,46,47,115,114,99,47,100,114,97,99,111,47,99,111,109,112,114,101,115,115,105,111,110,47,97,116,116,114,105,98,117,116,101,115,47,112,114,101,100,105,99,116,105,111,110,95,115,99,104,101,109,101,115,47,112,114,101,100,105,99,116,105,111,110,95,115,99,104,101,109,101,95,110,111,114,109,97,108,95,111,99,116,97,104,101,100,114,111,110,95,116,114,97,110,115,102,111,114,109,95,98,97,115,101,46,104,0,115,101,116,95,109,97,120,95,113,117,97,110,116,105,122,101,100,95,118,97,108,117,101,0,78,53,100,114,97,99,111,50,56,80,114,101,100,105,99,116,105,111,110,83,99,104,101,109,101,68,101,108,116,97,68,101,99,111,100,101,114,73,105,78,83,95,54,50,80,114,101,100,105,99,116,105,111,110,83,99,104,101,109,101,78,111,114,109,97,108,79,99,116,97,104,101,100,114,111,110,67,97,110,111,110,105,99,97,108,105,122,101,100,68,101,99,111,100,105,110,103,84,114,97,110,115,102,111,114,109,73,105,69,69,69,69,0,78,53,100,114,97,99,111,50,51,80,114,101,100,105,99,116,105,111,110,83,99,104,101,109,101,68,101,99,111,100,101,114,73,105,78,83,95,54,50,80,114,101,100,105,99,116,105,111,110,83,99,104,101,109,101,78,111,114,109,97,108,79,99,116,97,104,101,100,114,111,110,67,97,110,111,110,105,99,97,108,105,122,101,100,68,101,99,111,100,105,110,103,84,114,97,110,115,102,111,114,109,73,105,69,69,69,69,0,116,104,105,115,45,62,73,115,73,110,105,116,105,97,108,105,122,101,100,40,41,0,46,47,115,114,99,47,100,114,97,99,111,47,99,111,109,112,114,101,115,115,105,111,110,47,97,116,116,114,105,98,117,116,101,115,47,112,114,101,100,105,99,116,105,111,110,95,115,99,104,101,109,101,115,47,109,101,115,104,95,112,114,101,100,105,99,116,105,111,110,95,115,99,104,101,109,101,95,103,101,111,109,101,116,114,105,99,95,110,111,114,109,97,108,95,100,101,99,111,100,101,114,46,104,0,67,111,109,112,117,116,101,79,114,105,103,105,110,97,108,86,97,108,117,101,115,0,40,110,117,109,95,99,111,109,112,111,110,101,110,116,115,41,32,61,61,32,40,50,41,0,40,112,114,101,100,95,110,111,114,109,97,108,95,51,100,46,65,98,115,83,117,109,40,41,41,32,61,61,32,40,111,99,116,97,104,101,100,114,111,110,95,116,111,111,108,95,98,111,120,95,46,99,101,110,116,101,114,95,118,97,108,117,101,40,41,41,0,40,115,116,100,58,58,97,98,115,40,105,110,116,95,118,101,99,91,48,93,41,32,43,32,115,116,100,58,58,97,98,115,40,105,110,116,95,118,101,99,91,49,93,41,32,43,32,115,116,100,58,58,97,98,115,40,105,110,116,95,118,101,99,91,50,93,41,41,32,61,61,32,40,99,101,110,116,101,114,95,118,97,108,117,101,95,41,0,73,110,116,101,103,101,114,86,101,99,116,111,114,84,111,81,117,97,110,116,105,122,101,100,79,99,116,97,104,101,100,114,97,108,67,111,111,114,100,115,0,46,47,115,114,99,47,100,114,97,99,111,47,99,111,109,112,114,101,115,115,105,111,110,47,97,116,116,114,105,98,117,116,101,115,47,112,114,101,100,105,99,116,105,111,110,95,115,99,104,101,109,101,115,47,109,101,115,104,95,112,114,101,100,105,99,116,105,111,110,95,115,99,104,101,109,101,95,103,101,111,109,101,116,114,105,99,95,110,111,114,109,97,108,95,112,114,101,100,105,99,116,111,114,46,104,0,67,111,109,112,117,116,101,80,114,101,100,105,99,116,101,100,86,97,108,117,101,0,71,101,116,80,111,115,105,116,105,111,110,70,111,114,67,111,114,110,101,114,0,40,110,111,114,109,97,108,46,65,98,115,83,117,109,40,41,41,32,60,61,32,40,117,112,112,101,114,95,98,111,117,110,100,41,0,71,101,116,80,111,115,105,116,105,111,110,70,111,114,68,97,116,97,73,100,0,40,105,41,32,61,61,32,40,48,41,0,71,101,116,80,97,114,101,110,116,65,116,116,114,105,98,117,116,101,84,121,112,101,0,78,53,100,114,97,99,111,52,50,77,101,115,104,80,114,101,100,105,99,116,105,111,110,83,99,104,101,109,101,71,101,111,109,101,116,114,105,99,78,111,114,109,97,108,68,101,99,111,100,101,114,73,105,78,83,95,54,50,80,114,101,100,105,99,116,105,111,110,83,99,104,101,109,101,78,111,114,109,97,108,79,99,116,97,104,101,100,114,111,110,67,97,110,111,110,105,99,97,108,105,122,101,100,68,101,99,111,100,105,110,103,84,114,97,110,115,102,111,114,109,73,105,69,69,78,83,95,50,52,77,101,115,104,80,114,101,100,105,99,116,105,111,110,83,99,104,101,109,101,68,97,116,97,73,78,83,95,49,49,67,111,114,110,101,114,84,97,98,108,101,69,69,69,69,69,0,78,53,100,114,97,99,111,50,55,77,101,115,104,80,114,101,100,105,99,116,105,111,110,83,99,104,101,109,101,68,101,99,111,100,101,114,73,105,78,83,95,54,50,80,114,101,100,105,99,116,105,111,110,83,99,104,101,109,101,78,111,114,109,97,108,79,99,116,97,104,101,100,114,111,110,67,97,110,111,110,105,99,97,108,105,122,101,100,68,101,99,111,100,105,110,103,84,114,97,110,115,102,111,114,109,73,105,69,69,78,83,95,50,52,77,101,115,104,80,114,101,100,105,99,116,105,111,110,83,99,104,101,109,101,68,97,116,97,73,78,83,95,49,49,67,111,114,110,101,114,84,97,98,108,101,69,69,69,69,69,0,46,47,115,114,99,47,100,114,97,99,111,47,99,111,109,112,114,101,115,115,105,111,110,47,97,116,116,114,105,98,117,116,101,115,47,112,114,101,100,105,99,116,105,111,110,95,115,99,104,101,109,101,115,47,109,101,115,104,95,112,114,101,100,105,99,116,105,111,110,95,115,99,104,101,109,101,95,116,101,120,95,99,111,111,114,100,115,95,112,111,114,116,97,98,108,101,95,100,101,99,111,100,101,114,46,104,0,78,53,100,114,97,99,111,52,52,77,101,115,104,80,114,101,100,105,99,116,105,111,110,83,99,104,101,109,101,84,101,120,67,111,111,114,100,115,80,111,114,116,97,98,108,101,68,101,99,111,100,101,114,73,105,78,83,95,54,50,80,114,101,100,105,99,116,105,111,110,83,99,104,101,109,101,78,111,114,109,97,108,79,99,116,97,104,101,100,114,111,110,67,97,110,111,110,105,99,97,108,105,122,101,100,68,101,99,111,100,105,110,103,84,114,97,110,115,102,111,114,109,73,105,69,69,78,83,95,50,52,77,101,115,104,80,114,101,100,105,99,116,105,111,110,83,99,104,101,109,101,68,97,116,97,73,78,83,95,49,49,67,111,114,110,101,114,84,97,98,108,101,69,69,69,69,69,0,46,47,115,114,99,47,100,114,97,99,111,47,99,111,109,112,114,101,115,115,105,111,110,47,97,116,116,114,105,98,117,116,101,115,47,112,114,101,100,105,99,116,105,111,110,95,115,99,104,101,109,101,115,47,109,101,115,104,95,112,114,101,100,105,99,116,105,111,110,95,115,99,104,101,109,101,95,116,101,120,95,99,111,111,114,100,115,95,100,101,99,111,100,101,114,46,104,0,78,53,100,114,97,99,111,51,54,77,101,115,104,80,114,101,100,105,99,116,105,111,110,83,99,104,101,109,101,84,101,120,67,111,111,114,100,115,68,101,99,111,100,101,114,73,105,78,83,95,54,50,80,114,101,100,105,99,116,105,111,110,83,99,104,101,109,101,78,111,114,109,97,108,79,99,116,97,104,101,100,114,111,110,67,97,110,111,110,105,99,97,108,105,122,101,100,68,101,99,111,100,105,110,103,84,114,97,110,115,102,111,114,109,73,105,69,69,78,83,95,50,52,77,101,115,104,80,114,101,100,105,99,116,105,111,110,83,99,104,101,109,101,68,97,116,97,73,78,83,95,49,49,67,111,114,110,101,114,84,97,98,108,101,69,69,69,69,69,0,78,53,100,114,97,99,111,53,54,77,101,115,104,80,114,101,100,105,99,116,105,111,110,83,99,104,101,109,101,67,111,110,115,116,114,97,105,110,101,100,77,117,108,116,105,80,97,114,97,108,108,101,108,111,103,114,97,109,68,101,99,111,100,101,114,73,105,78,83,95,54,50,80,114,101,100,105,99,116,105,111,110,83,99,104,101,109,101,78,111,114,109,97,108,79,99,116,97,104,101,100,114,111,110,67,97,110,111,110,105,99,97,108,105,122,101,100,68,101,99,111,100,105,110,103,84,114,97,110,115,102,111,114,109,73,105,69,69,78,83,95,50,52,77,101,115,104,80,114,101,100,105,99,116,105,111,110,83,99,104,101,109,101,68,97,116,97,73,78,83,95,49,49,67,111,114,110,101,114,84,97,98,108,101,69,69,69,69,69,0,78,53,100,114,97,99,111,52,53,77,101,115,104,80,114,101,100,105,99,116,105,111,110,83,99,104,101,109,101,77,117,108,116,105,80,97,114,97,108,108,101,108,111,103,114,97,109,68,101,99,111,100,101,114,73,105,78,83,95,54,50,80,114,101,100,105,99,116,105,111,110,83,99,104,101,109,101,78,111,114,109,97,108,79,99,116,97,104,101,100,114,111,110,67,97,110,111,110,105,99,97,108,105,122,101,100,68,101,99,111,100,105,110,103,84,114,97,110,115,102,111,114,109,73,105,69,69,78,83,95,50,52,77,101,115,104,80,114,101,100,105,99,116,105,111,110,83,99,104,101,109,101,68,97,116,97,73,78,83,95,49,49,67,111,114,110,101,114,84,97,98,108,101,69,69,69,69,69,0,78,53,100,114,97,99,111,52,48,77,101,115,104,80,114,101,100,105,99,116,105,111,110,83,99,104,101,109,101,80,97,114,97,108,108,101,108,111,103,114,97,109,68,101,99,111,100,101,114,73,105,78,83,95,54,50,80,114,101,100,105,99,116,105,111,110,83,99,104,101,109,101,78,111,114,109,97,108,79,99,116,97,104,101,100,114,111,110,67,97,110,111,110,105,99,97,108,105,122,101,100,68,101,99,111,100,105,110,103,84,114,97,110,115,102,111,114,109,73,105,69,69,78,83,95,50,52,77,101,115,104,80,114,101,100,105,99,116,105,111,110,83,99,104,101,109,101,68,97,116,97,73,78,83,95,49,49,67,111,114,110,101,114,84,97,98,108,101,69,69,69,69,69,0,78,53,100,114,97,99,111,52,50,77,101,115,104,80,114,101,100,105,99,116,105,111,110,83,99,104,101,109,101,71,101,111,109,101,116,114,105,99,78,111,114,109,97,108,68,101,99,111,100,101,114,73,105,78,83,95,54,50,80,114,101,100,105,99,116,105,111,110,83,99,104,101,109,101,78,111,114,109,97,108,79,99,116,97,104,101,100,114,111,110,67,97,110,111,110,105,99,97,108,105,122,101,100,68,101,99,111,100,105,110,103,84,114,97,110,115,102,111,114,109,73,105,69,69,78,83,95,50,52,77,101,115,104,80,114,101,100,105,99,116,105,111,110,83,99,104,101,109,101,68,97,116,97,73,78,83,95,50,52,77,101,115,104,65,116,116,114,105,98,117,116,101,67,111,114,110,101,114,84,97,98,108,101,69,69,69,69,69,0,78,53,100,114,97,99,111,50,55,77,101,115,104,80,114,101,100,105,99,116,105,111,110,83,99,104,101,109,101,68,101,99,111,100,101,114,73,105,78,83,95,54,50,80,114,101,100,105,99,116,105,111,110,83,99,104,101,109,101,78,111,114,109,97,108,79,99,116,97,104,101,100,114,111,110,67,97,110,111,110,105,99,97,108,105,122,101,100,68,101,99,111,100,105,110,103,84,114,97,110,115,102,111,114,109,73,105,69,69,78,83,95,50,52,77,101,115,104,80,114,101,100,105,99,116,105,111,110,83,99,104,101,109,101,68,97,116,97,73,78,83,95,50,52,77,101,115,104,65,116,116,114,105,98,117,116,101,67,111,114,110,101,114,84,97,98,108,101,69,69,69,69,69,0,78,53,100,114,97,99,111,52,52,77,101,115,104,80,114,101,100,105,99,116,105,111,110,83,99,104,101,109,101,84,101,120,67,111,111,114,100,115,80,111,114,116,97,98,108,101,68,101,99,111,100,101,114,73,105,78,83,95,54,50,80,114,101,100,105,99,116,105,111,110,83,99,104,101,109,101,78,111,114,109,97,108,79,99,116,97,104,101,100,114,111,110,67,97,110,111,110,105,99,97,108,105,122,101,100,68,101,99,111,100,105,110,103,84,114,97,110,115,102,111,114,109,73,105,69,69,78,83,95,50,52,77,101,115,104,80,114,101,100,105,99,116,105,111,110,83,99,104,101,109,101,68,97,116,97,73,78,83,95,50,52,77,101,115,104,65,116,116,114,105,98,117,116,101,67,111,114,110,101,114,84,97,98,108,101,69,69,69,69,69,0,78,53,100,114,97,99,111,51,54,77,101,115,104,80,114,101,100,105,99,116,105,111,110,83,99,104,101,109,101,84,101,120,67,111,111,114,100,115,68,101,99,111,100,101,114,73,105,78,83,95,54,50,80,114,101,100,105,99,116,105,111,110,83,99,104,101,109,101,78,111,114,109,97,108,79,99,116,97,104,101,100,114,111,110,67,97,110,111,110,105,99,97,108,105,122,101,100,68,101,99,111,100,105,110,103,84,114,97,110,115,102,111,114,109,73,105,69,69,78,83,95,50,52,77,101,115,104,80,114,101,100,105,99,116,105,111,110,83,99,104,101,109,101,68,97,116,97,73,78,83,95,50,52,77,101,115,104,65,116,116,114,105,98,117,116,101,67,111,114,110,101,114,84,97,98,108,101,69,69,69,69,69,0,78,53,100,114,97,99,111,53,54,77,101,115,104,80,114,101,100,105,99,116,105,111,110,83,99,104,101,109,101,67,111,110,115,116,114,97,105,110,101,100,77,117,108,116,105,80,97,114,97,108,108,101,108,111,103,114,97,109,68,101,99,111,100,101,114,73,105,78,83,95,54,50,80,114,101,100,105,99,116,105,111,110,83,99,104,101,109,101,78,111,114,109,97,108,79,99,116,97,104,101,100,114,111,110,67,97,110,111,110,105,99,97,108,105,122,101,100,68,101,99,111,100,105,110,103,84,114,97,110,115,102,111,114,109,73,105,69,69,78,83,95,50,52,77,101,115,104,80,114,101,100,105,99,116,105,111,110,83,99,104,101,109,101,68,97,116,97,73,78,83,95,50,52,77,101,115,104,65,116,116,114,105,98,117,116,101,67,111,114,110,101,114,84,97,98,108,101,69,69,69,69,69,0,78,53,100,114,97,99,111,52,53,77,101,115,104,80,114,101,100,105,99,116,105,111,110,83,99,104,101,109,101,77,117,108,116,105,80,97,114,97,108,108,101,108,111,103,114,97,109,68,101,99,111,100,101,114,73,105,78,83,95,54,50,80,114,101,100,105,99,116,105,111,110,83,99,104,101,109,101,78,111,114,109,97,108,79,99,116,97,104,101,100,114,111,110,67,97,110,111,110,105,99,97,108,105,122,101,100,68,101,99,111,100,105,110,103,84,114,97,110,115,102,111,114,109,73,105,69,69,78,83,95,50,52,77,101,115,104,80,114,101,100,105,99,116,105,111,110,83,99,104,101,109,101,68,97,116,97,73,78,83,95,50,52,77,101,115,104,65,116,116,114,105,98,117,116,101,67,111,114,110,101,114,84,97,98,108,101,69,69,69,69,69,0,78,53,100,114,97,99,111,52,48,77,101,115,104,80,114,101,100,105,99,116,105,111,110,83,99,104,101,109,101,80,97,114,97,108,108,101,108,111,103,114,97,109,68,101,99,111,100,101,114,73,105,78,83,95,54,50,80,114,101,100,105,99,116,105,111,110,83,99,104,101,109,101,78,111,114,109,97,108,79,99,116,97,104,101,100,114,111,110,67,97,110,111,110,105,99,97,108,105,122,101,100,68,101,99,111,100,105,110,103,84,114,97,110,115,102,111,114,109,73,105,69,69,78,83,95,50,52,77,101,115,104,80,114,101,100,105,99,116,105,111,110,83,99,104,101,109,101,68,97,116,97,73,78,83,95,50,52,77,101,115,104,65,116,116,114,105,98,117,116,101,67,111,114,110,101,114,84,97,98,108,101,69,69,69,69,69,0,78,53,100,114,97,99,111,54,50,80,114,101,100,105,99,116,105,111,110,83,99,104,101,109,101,78,111,114,109,97,108,79,99,116,97,104,101,100,114,111,110,67,97,110,111,110,105,99,97,108,105,122,101,100,68,101,99,111,100,105,110,103,84,114,97,110,115,102,111,114,109,73,105,69,69,0,78,53,100,114,97,99,111,53,56,80,114,101,100,105,99,116,105,111,110,83,99,104,101,109,101,78,111,114,109,97,108,79,99,116,97,104,101,100,114,111,110,67,97,110,111,110,105,99,97,108,105,122,101,100,84,114,97,110,115,102,111,114,109,66,97,115,101,73,105,69,69,0,78,53,100,114,97,99,111,52,53,80,114,101,100,105,99,116,105,111,110,83,99,104,101,109,101,78,111,114,109,97,108,79,99,116,97,104,101,100,114,111,110,84,114,97,110,115,102,111,114,109,66,97,115,101,73,105,69,69,0,46,47,115,114,99,47,100,114,97,99,111,47,99,111,109,112,114,101,115,115,105,111,110,47,97,116,116,114,105,98,117,116,101,115,47,112,114,101,100,105,99,116,105,111,110,95,115,99,104,101,109,101,115,47,112,114,101,100,105,99,116,105,111,110,95,115,99,104,101,109,101,95,110,111,114,109,97,108,95,111,99,116,97,104,101,100,114,111,110,95,100,101,99,111,100,105,110,103,95,116,114,97,110,115,102,111,114,109,46,104,0,78,53,100,114,97,99,111,50,56,80,114,101,100,105,99,116,105,111,110,83,99,104,101,109,101,68,101,108,116,97,68,101,99,111,100,101,114,73,105,78,83,95,52,57,80,114,101,100,105,99,116,105,111,110,83,99,104,101,109,101,78,111,114,109,97,108,79,99,116,97,104,101,100,114,111,110,68,101,99,111,100,105,110,103,84,114,97,110,115,102,111,114,109,73,105,69,69,69,69,0,78,53,100,114,97,99,111,50,51,80,114,101,100,105,99,116,105,111,110,83,99,104,101,109,101,68,101,99,111,100,101,114,73,105,78,83,95,52,57,80,114,101,100,105,99,116,105,111,110,83,99,104,101,109,101,78,111,114,109,97,108,79,99,116,97,104,101,100,114,111,110,68,101,99,111,100,105,110,103,84,114,97,110,115,102,111,114,109,73,105,69,69,69,69,0,78,53,100,114,97,99,111,52,50,77,101,115,104,80,114,101,100,105,99,116,105,111,110,83,99,104,101,109,101,71,101,111,109,101,116,114,105,99,78,111,114,109,97,108,68,101,99,111,100,101,114,73,105,78,83,95,52,57,80,114,101,100,105,99,116,105,111,110,83,99,104,101,109,101,78,111,114,109,97,108,79,99,116,97,104,101,100,114,111,110,68,101,99,111,100,105,110,103,84,114,97,110,115,102,111,114,109,73,105,69,69,78,83,95,50,52,77,101,115,104,80,114,101,100,105,99,116,105,111,110,83,99,104,101,109,101,68,97,116,97,73,78,83,95,49,49,67,111,114,110,101,114,84,97,98,108,101,69,69,69,69,69,0,78,53,100,114,97,99,111,50,55,77,101,115,104,80,114,101,100,105,99,116,105,111,110,83,99,104,101,109,101,68,101,99,111,100,101,114,73,105,78,83,95,52,57,80,114,101,100,105,99,116,105,111,110,83,99,104,101,109,101,78,111,114,109,97,108,79,99,116,97,104,101,100,114,111,110,68,101,99,111,100,105,110,103,84,114,97,110,115,102,111,114,109,73,105,69,69,78,83,95,50,52,77,101,115,104,80,114,101,100,105,99,116,105,111,110,83,99,104,101,109,101,68,97,116,97,73,78,83,95,49,49,67,111,114,110,101,114,84,97,98,108,101,69,69,69,69,69,0,78,53,100,114,97,99,111,52,52,77,101,115,104,80,114,101,100,105,99,116,105,111,110,83,99,104,101,109,101,84,101,120,67,111,111,114,100,115,80,111,114,116,97,98,108,101,68,101,99,111,100,101,114,73,105,78,83,95,52,57,80,114,101,100,105,99,116,105,111,110,83,99,104,101,109,101,78,111,114,109,97,108,79,99,116,97,104,101,100,114,111,110,68,101,99,111,100,105,110,103,84,114,97,110,115,102,111,114,109,73,105,69,69,78,83,95,50,52,77,101,115,104,80,114,101,100,105,99,116,105,111,110,83,99,104,101,109,101,68,97,116,97,73,78,83,95,49,49,67,111,114,110,101,114,84,97,98,108,101,69,69,69,69,69,0,78,53,100,114,97,99,111,51,54,77,101,115,104,80,114,101,100,105,99,116,105,111,110,83,99,104,101,109,101,84,101,120,67,111,111,114,100,115,68,101,99,111,100,101,114,73,105,78,83,95,52,57,80,114,101,100,105,99,116,105,111,110,83,99,104,101,109,101,78,111,114,109,97,108,79,99,116,97,104,101,100,114,111,110,68,101,99,111,100,105,110,103,84,114,97,110,115,102,111,114,109,73,105,69,69,78,83,95,50,52,77,101,115,104,80,114,101,100,105,99,116,105,111,110,83,99,104,101,109,101,68,97,116,97,73,78,83,95,49,49,67,111,114,110,101,114,84,97,98,108,101,69,69,69,69,69,0,78,53,100,114,97,99,111,53,54,77,101,115,104,80,114,101,100,105,99,116,105,111,110,83,99,104,101,109,101,67,111,110,115,116,114,97,105,110,101,100,77,117,108,116,105,80,97,114,97,108,108,101,108,111,103,114,97,109,68,101,99,111,100,101,114,73,105,78,83,95,52,57,80,114,101,100,105,99,116,105,111,110,83,99,104,101,109,101,78,111,114,109,97,108,79,99,116,97,104,101,100,114,111,110,68,101,99,111,100,105,110,103,84,114,97,110,115,102,111,114,109,73,105,69,69,78,83,95,50,52,77,101,115,104,80,114,101,100,105,99,116,105,111,110,83,99,104,101,109,101,68,97,116,97,73,78,83,95,49,49,67,111,114,110,101,114,84,97,98,108,101,69,69,69,69,69,0,78,53,100,114,97,99,111,52,53,77,101,115,104,80,114,101,100,105,99,116,105,111,110,83,99,104,101,109,101,77,117,108,116,105,80,97,114,97,108,108,101,108,111,103,114,97,109,68,101,99,111,100,101,114,73,105,78,83,95,52,57,80,114,101,100,105,99,116,105,111,110,83,99,104,101,109,101,78,111,114,109,97,108,79,99,116,97,104,101,100,114,111,110,68,101,99,111,100,105,110,103,84,114,97,110,115,102,111,114,109,73,105,69,69,78,83,95,50,52,77,101,115,104,80,114,101,100,105,99,116,105,111,110,83,99,104,101,109,101,68,97,116,97,73,78,83,95,49,49,67,111,114,110,101,114,84,97,98,108,101,69,69,69,69,69,0,78,53,100,114,97,99,111,52,48,77,101,115,104,80,114,101,100,105,99,116,105,111,110,83,99,104,101,109,101,80,97,114,97,108,108,101,108,111,103,114,97,109,68,101,99,111,100,101,114,73,105,78,83,95,52,57,80,114,101,100,105,99,116,105,111,110,83,99,104,101,109,101,78,111,114,109,97,108,79,99,116,97,104,101,100,114,111,110,68,101,99,111,100,105,110,103,84,114,97,110,115,102,111,114,109,73,105,69,69,78,83,95,50,52,77,101,115,104,80,114,101,100,105,99,116,105,111,110,83,99,104,101,109,101,68,97,116,97,73,78,83,95,49,49,67,111,114,110,101,114,84,97,98,108,101,69,69,69,69,69,0,78,53,100,114,97,99,111,52,50,77,101,115,104,80,114,101,100,105,99,116,105,111,110,83,99,104,101,109,101,71,101,111,109,101,116,114,105,99,78,111,114,109,97,108,68,101,99,111,100,101,114,73,105,78,83,95,52,57,80,114,101,100,105,99,116,105,111,110,83,99,104,101,109,101,78,111,114,109,97,108,79,99,116,97,104,101,100,114,111,110,68,101,99,111,100,105,110,103,84,114,97,110,115,102,111,114,109,73,105,69,69,78,83,95,50,52,77,101,115,104,80,114,101,100,105,99,116,105,111,110,83,99,104,101,109,101,68,97,116,97,73,78,83,95,50,52,77,101,115,104,65,116,116,114,105,98,117,116,101,67,111,114,110,101,114,84,97,98,108,101,69,69,69,69,69,0,78,53,100,114,97,99,111,50,55,77,101,115,104,80,114,101,100,105,99,116,105,111,110,83,99,104,101,109,101,68,101,99,111,100,101,114,73,105,78,83,95,52,57,80,114,101,100,105,99,116,105,111,110,83,99,104,101,109,101,78,111,114,109,97,108,79,99,116,97,104,101,100,114,111,110,68,101,99,111,100,105,110,103,84,114,97,110,115,102,111,114,109,73,105,69,69,78,83,95,50,52,77,101,115,104,80,114,101,100,105,99,116,105,111,110,83,99,104,101,109,101,68,97,116,97,73,78,83,95,50,52,77,101,115,104,65,116,116,114,105,98,117,116,101,67,111,114,110,101,114,84,97,98,108,101,69,69,69,69,69,0,78,53,100,114,97,99,111,52,52,77,101,115,104,80,114,101,100,105,99,116,105,111,110,83,99,104,101,109,101,84,101,120,67,111,111,114,100,115,80,111,114,116,97,98,108,101,68,101,99,111,100,101,114,73,105,78,83,95,52,57,80,114,101,100,105,99,116,105,111,110,83,99,104,101,109,101,78,111,114,109,97,108,79,99,116,97,104,101,100,114,111,110,68,101,99,111,100,105,110,103,84,114,97,110,115,102,111,114,109,73,105,69,69,78,83,95,50,52,77,101,115,104,80,114,101,100,105,99,116,105,111,110,83,99,104,101,109,101,68,97,116,97,73,78,83,95,50,52,77,101,115,104,65,116,116,114,105,98,117,116,101,67,111,114,110,101,114,84,97,98,108,101,69,69,69,69,69,0,78,53,100,114,97,99,111,51,54,77,101,115,104,80,114,101,100,105,99,116,105,111,110,83,99,104,101,109,101,84,101,120,67,111,111,114,100,115,68,101,99,111,100,101,114,73,105,78,83,95,52,57,80,114,101,100,105,99,116,105,111,110,83,99,104,101,109,101,78,111,114,109,97,108,79,99,116,97,104,101,100,114,111,110,68,101,99,111,100,105,110,103,84,114,97,110,115,102,111,114,109,73,105,69,69,78,83,95,50,52,77,101,115,104,80,114,101,100,105,99,116,105,111,110,83,99,104,101,109,101,68,97,116,97,73,78,83,95,50,52,77,101,115,104,65,116,116,114,105,98,117,116,101,67,111,114,110,101,114,84,97,98,108,101,69,69,69,69,69,0,78,53,100,114,97,99,111,53,54,77,101,115,104,80,114,101,100,105,99,116,105,111,110,83,99,104,101,109,101,67,111,110,115,116,114,97,105,110,101,100,77,117,108,116,105,80,97,114,97,108,108,101,108,111,103,114,97,109,68,101,99,111,100,101,114,73,105,78,83,95,52,57,80,114,101,100,105,99,116,105,111,110,83,99,104,101,109,101,78,111,114,109,97,108,79,99,116,97,104,101,100,114,111,110,68,101,99,111,100,105,110,103,84,114,97,110,115,102,111,114,109,73,105,69,69,78,83,95,50,52,77,101,115,104,80,114,101,100,105,99,116,105,111,110,83,99,104,101,109,101,68,97,116,97,73,78,83,95,50,52,77,101,115,104,65,116,116,114,105,98,117,116,101,67,111,114,110,101,114,84,97,98,108,101,69,69,69,69,69,0,78,53,100,114,97,99,111,52,53,77,101,115,104,80,114,101,100,105,99,116,105,111,110,83,99,104,101,109,101,77,117,108,116,105,80,97,114,97,108,108,101,108,111,103,114,97,109,68,101,99,111,100,101,114,73,105,78,83,95,52,57,80,114,101,100,105,99,116,105,111,110,83,99,104,101,109,101,78,111,114,109,97,108,79,99,116,97,104,101,100,114,111,110,68,101,99,111,100,105,110,103,84,114,97,110,115,102,111,114,109,73,105,69,69,78,83,95,50,52,77,101,115,104,80,114,101,100,105,99,116,105,111,110,83,99,104,101,109,101,68,97,116,97,73,78,83,95,50,52,77,101,115,104,65,116,116,114,105,98,117,116,101,67,111,114,110,101,114,84,97,98,108,101,69,69,69,69,69,0,78,53,100,114,97,99,111,52,48,77,101,115,104,80,114,101,100,105,99,116,105,111,110,83,99,104,101,109,101,80,97,114,97,108,108,101,108,111,103,114,97,109,68,101,99,111,100,101,114,73,105,78,83,95,52,57,80,114,101,100,105,99,116,105,111,110,83,99,104,101,109,101,78,111,114,109,97,108,79,99,116,97,104,101,100,114,111,110,68,101,99,111,100,105,110,103,84,114,97,110,115,102,111,114,109,73,105,69,69,78,83,95,50,52,77,101,115,104,80,114,101,100,105,99,116,105,111,110,83,99,104,101,109,101,68,97,116,97,73,78,83,95,50,52,77,101,115,104,65,116,116,114,105,98,117,116,101,67,111,114,110,101,114,84,97,98,108,101,69,69,69,69,69,0,78,53,100,114,97,99,111,52,57,80,114,101,100,105,99,116,105,111,110,83,99,104,101,109,101,78,111,114,109,97,108,79,99,116,97,104,101,100,114,111,110,68,101,99,111,100,105,110,103,84,114,97,110,115,102,111,114,109,73,105,69,69,0,78,53,100,114,97,99,111,51,50,83,101,113,117,101,110,116,105,97,108,78,111,114,109,97,108,65,116,116,114,105,98,117,116,101,68,101,99,111,100,101,114,69,0,78,53,100,114,97,99,111,51,55,83,101,113,117,101,110,116,105,97,108,65,116,116,114,105,98,117,116,101,68,101,99,111,100,101,114,115,67,111,110,116,114,111,108,108,101,114,69,0,78,53,100,114,97,99,111,49,53,76,105,110,101,97,114,83,101,113,117,101,110,99,101,114,69,0,78,53,100,114,97,99,111,49,53,80,111,105,110,116,115,83,101,113,117,101,110,99,101,114,69,0,78,53,100,114,97,99,111,50,55,80,111,105,110,116,67,108,111,117,100,83,101,113,117,101,110,116,105,97,108,68,101,99,111,100,101,114,69,0,78,53,100,114,97,99,111,50,51,80,111,105,110,116,67,108,111,117,100,75,100,84,114,101,101,68,101,99,111,100,101,114,69,0,40,48,41,32,60,61,32,40,97,116,116,95,105,100,41,0,46,47,115,114,99,47,100,114,97,99,111,47,112,111,105,110,116,95,99,108,111,117,100,47,112,111,105,110,116,95,99,108,111,117,100,46,104,0,97,116,116,114,105,98,117,116,101,0,40,97,116,116,95,105,100,41,32,60,32,40,115,116,97,116,105,99,95,99,97,115,116,60,105,110,116,51,50,95,116,62,40,97,116,116,114,105,98,117,116,101,115,95,46,115,105,122,101,40,41,41,41,0,75,100,84,114,101,101,65,116,116,114,105,98,117,116,101,115,68,101,99,111,100,101,114,58,32,99,111,109,112,114,101,115,115,105,111,110,32,108,101,118,101,108,32,37,105,32,110,111,116,32,115,117,112,112,111,114,116,101,100,46,10,0,40,118,97,108,46,115,105,122,101,40,41,41,32,61,61,32,40,100,105,109,101,110,115,105,111,110,95,116,41,0,115,114,99,47,100,114,97,99,111,47,99,111,109,112,114,101,115,115,105,111,110,47,97,116,116,114,105,98,117,116,101,115,47,107,100,95,116,114,101,101,95,97,116,116,114,105,98,117,116,101,115,95,100,101,99,111,100,101,114,46,99,99,0,111,112,101,114,97,116,111,114,61,0,77,101,116,104,111,100,32,110,111,116,32,115,117,112,112,111,114,116,101,100,46,32,10,0,86,101,114,115,105,111,110,32,110,111,116,32,115,117,112,112,111,114,116,101,100,46,32,10,0,40,105,110,102,111,46,114,97,110,103,101,41,32,62,61,32,40,48,41,0,46,47,115,114,99,47,100,114,97,99,111,47,99,111,109,112,114,101,115,115,105,111,110,47,112,111,105,110,116,95,99,108,111,117,100,47,97,108,103,111,114,105,116,104,109,115,47,113,117,97,110,116,105,122,101,95,112,111,105,110,116,115,95,51,46,104,0,68,101,113,117,97,110,116,105,122,101,80,111,105,110,116,115,51,0,78,53,100,114,97,99,111,50,51,75,100,84,114,101,101,65,116,116,114,105,98,117,116,101,115,68,101,99,111,100,101,114,69,0,70,108,111,97,116,80,111,105,110,116,115,84,114,101,101,68,101,99,111,100,101,114,58,32,99,111,109,112,114,101,115,115,105,111,110,32,108,101,118,101,108,32,37,105,32,110,111,116,32,115,117,112,112,111,114,116,101,100,46,10,0,40,116,114,117,101,41,32,61,61,32,40,110,117,109,95,114,101,109,97,105,110,105,110,103,95,112,111,105,110,116,115,32,33,61,32,48,41,0,46,47,115,114,99,47,100,114,97,99,111,47,99,111,109,112,114,101,115,115,105,111,110,47,112,111,105,110,116,95,99,108,111,117,100,47,97,108,103,111,114,105,116,104,109,115,47,100,121,110,97,109,105,99,95,105,110,116,101,103,101,114,95,112,111,105,110,116,115,95,107,100,95,116,114,101,101,95,100,101,99,111,100,101,114,46,104,0,68,101,99,111,100,101,73,110,116,101,114,110,97,108,0,40,116,114,117,101,41,32,61,61,32,40,110,98,105,116,115,32,60,61,32,51,50,41,0,46,47,115,114,99,47,100,114,97,99,111,47,99,111,114,101,47,98,105,116,95,99,111,100,101,114,115,47,100,105,114,101,99,116,95,98,105,116,95,100,101,99,111,100,101,114,46,104,0,68,101,99,111,100,101,76,101,97,115,116,83,105,103,110,105,102,105,99,97,110,116,66,105,116,115,51,50,0,40,116,114,117,101,41,32,61,61,32,40,110,98,105,116,115,32,62,32,48,41,0,78,53,100,114,97,99,111,50,49,77,101,115,104,83,101,113,117,101,110,116,105,97,108,68,101,99,111,100,101,114,69,0,78,53,100,114,97,99,111,50,50,77,101,115,104,69,100,103,101,66,114,101,97,107,101,114,68,101,99,111,100,101,114,69,0,78,53,100,114,97,99,111,50,57,67,111,114,110,101,114,84,97,98,108,101,84,114,97,118,101,114,115,97,108,80,114,111,99,101,115,115,111,114,73,78,83,95,50,52,77,101,115,104,65,116,116,114,105,98,117,116,101,67,111,114,110,101,114,84,97,98,108,101,69,69,69,0,40,48,41,32,60,61,32,40,102,97,99,101,95,105,100,46,118,97,108,117,101,40,41,41,0,46,47,115,114,99,47,100,114,97,99,111,47,109,101,115,104,47,109,101,115,104,46,104,0,102,97,99,101,0,40,102,97,99,101,95,105,100,46,118,97,108,117,101,40,41,41,32,60,32,40,115,116,97,116,105,99,95,99,97,115,116,60,105,110,116,62,40,102,97,99,101,115,95,46,115,105,122,101,40,41,41,41,0,33,105,100,101,110,116,105,116,121,95,109,97,112,112,105,110,103,95,0,46,47,115,114,99,47,100,114,97,99,111,47,97,116,116,114,105,98,117,116,101,115,47,112,111,105,110,116,95,97,116,116,114,105,98,117,116,101,46,104,0,83,101,116,80,111,105,110,116,77,97,112,69,110,116,114,121,0,78,53,100,114,97,99,111,50,50,77,101,115,104,84,114,97,118,101,114,115,97,108,83,101,113,117,101,110,99,101,114,73,78,83,95,50,48,69,100,103,101,66,114,101,97,107,101,114,84,114,97,118,101,114,115,101,114,73,78,83,95,50,57,67,111,114,110,101,114,84,97,98,108,101,84,114,97,118,101,114,115,97,108,80,114,111,99,101,115,115,111,114,73,78,83,95,50,52,77,101,115,104,65,116,116,114,105,98,117,116,101,67,111,114,110,101,114,84,97,98,108,101,69,69,69,78,83,95,51,54,77,101,115,104,65,116,116,114,105,98,117,116,101,73,110,100,105,99,101,115,69,110,99,111,100,105,110,103,79,98,115,101,114,118,101,114,73,83,51,95,69,69,78,83,95,49,57,69,100,103,101,66,114,101,97,107,101,114,79,98,115,101,114,118,101,114,69,69,69,69,69,0,78,53,100,114,97,99,111,50,57,67,111,114,110,101,114,84,97,98,108,101,84,114,97,118,101,114,115,97,108,80,114,111,99,101,115,115,111,114,73,78,83,95,49,49,67,111,114,110,101,114,84,97,98,108,101,69,69,69,0,78,53,100,114,97,99,111,50,50,77,101,115,104,84,114,97,118,101,114,115,97,108,83,101,113,117,101,110,99,101,114,73,78,83,95,50,53,80,114,101,100,105,99,116,105,111,110,68,101,103,114,101,101,84,114,97,118,101,114,115,101,114,73,78,83,95,50,57,67,111,114,110,101,114,84,97,98,108,101,84,114,97,118,101,114,115,97,108,80,114,111,99,101,115,115,111,114,73,78,83,95,49,49,67,111,114,110,101,114,84,97,98,108,101,69,69,69,78,83,95,51,54,77,101,115,104,65,116,116,114,105,98,117,116,101,73,110,100,105,99,101,115,69,110,99,111,100,105,110,103,79,98,115,101,114,118,101,114,73,83,51,95,69,69,69,69,69,69,0,78,53,100,114,97,99,111,50,50,77,101,115,104,84,114,97,118,101,114,115,97,108,83,101,113,117,101,110,99,101,114,73,78,83,95,50,48,69,100,103,101,66,114,101,97,107,101,114,84,114,97,118,101,114,115,101,114,73,78,83,95,50,57,67,111,114,110,101,114,84,97,98,108,101,84,114,97,118,101,114,115,97,108,80,114,111,99,101,115,115,111,114,73,78,83,95,49,49,67,111,114,110,101,114,84,97,98,108,101,69,69,69,78,83,95,51,54,77,101,115,104,65,116,116,114,105,98,117,116,101,73,110,100,105,99,101,115,69,110,99,111,100,105,110,103,79,98,115,101,114,118,101,114,73,83,51,95,69,69,78,83,95,49,57,69,100,103,101,66,114,101,97,107,101,114,79,98,115,101,114,118,101,114,69,69,69,69,69,0,78,53,100,114,97,99,111,50,54,77,101,115,104,69,100,103,101,66,114,101,97,107,101,114,68,101,99,111,100,101,114,73,109,112,108,73,78,83,95,51,49,77,101,115,104,69,100,103,101,66,114,101,97,107,101,114,84,114,97,118,101,114,115,97,108,68,101,99,111,100,101,114,69,69,69,0,78,53,100,114,97,99,111,51,53,77,101,115,104,69,100,103,101,66,114,101,97,107,101,114,68,101,99,111,100,101,114,73,109,112,108,73,110,116,101,114,102,97,99,101,69,0,78,53,100,114,97,99,111,50,54,77,101,115,104,69,100,103,101,66,114,101,97,107,101,114,68,101,99,111,100,101,114,73,109,112,108,73,78,83,95,52,49,77,101,115,104,69,100,103,101,66,114,101,97,107,101,114,84,114,97,118,101,114,115,97,108,80,114,101,100,105,99,116,105,118,101,68,101,99,111,100,101,114,69,69,69,0,78,53,100,114,97,99,111,50,54,77,101,115,104,69,100,103,101,66,114,101,97,107,101,114,68,101,99,111,100,101,114,73,109,112,108,73,78,83,95,51,56,77,101,115,104,69,100,103,101,66,114,101,97,107,101,114,84,114,97,118,101,114,115,97,108,86,97,108,101,110,99,101,68,101,99,111,100,101,114,69,69,69,0,85,110,115,117,112,112,111,114,116,101,100,32,101,110,99,111,100,105,110,103,32,109,101,116,104,111,100,46,0,73,110,112,117,116,32,105,115,32,110,111,116,32,97,32,109,101,115,104,46,0,73,110,112,117,116,32,105,115,32,110,111,116,32,97,32,112,111,105,110,116,32,99,108,111,117,100,46,0,115,107,105,112,95,97,116,116,114,105,98,117,116,101,95,116,114,97,110,115,102,111,114,109,0,17,0,10,0,17,17,17,0,0,0,0,5,0,0,0,0,0,0,9,0,0,0,0,11,0,0,0,0,0,0,0,0,17,0,15,10,17,17,17,3,10,7,0,1,19,9,11,11,0,0,9,6,11,0,0,11,0,6,17,0,0,0,17,17,17,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,11,0,0,0,0,0,0,0,0,17,0,10,10,17,17,17,0,10,0,0,2,0,9,11,0,0,0,9,0,11,0,0,11,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,12,0,0,0,0,0,0,0,0,0,0,0,12,0,0,0,0,12,0,0,0,0,9,12,0,0,0,0,0,12,0,0,12,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,14,0,0,0,0,0,0,0,0,0,0,0,13,0,0,0,4,13,0,0,0,0,9,14,0,0,0,0,0,14,0,0,14,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,16,0,0,0,0,0,0,0,0,0,0,0,15,0,0,0,0,15,0,0,0,0,9,16,0,0,0,0,0,16,0,0,16,0,0,18,0,0,0,18,18,18,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,18,0,0,0,18,18,18,0,0,0,0,0,0,9,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,11,0,0,0,0,0,0,0,0,0,0,0,10,0,0,0,0,10,0,0,0,0,9,11,0,0,0,0,0,11,0,0,11,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,12,0,0,0,0,0,0,0,0,0,0,0,12,0,0,0,0,12,0,0,0,0,9,12,0,0,0,0,0,12,0,0,12,0,0,45,43,32,32,32,48,88,48,120,0,40,110,117,108,108,41,0,45,48,88,43,48,88,32,48,88,45,48,120,43,48,120,32,48,120,0,105,110,102,0,73,78,70,0,110,97,110,0,78,65,78,0,48,49,50,51,52,53,54,55,56,57,65,66,67,68,69,70,46,0,84,33,34,25,13,1,2,3,17,75,28,12,16,4,11,29,18,30,39,104,110,111,112,113,98,32,5,6,15,19,20,21,26,8,22,7,40,36,23,24,9,10,14,27,31,37,35,131,130,125,38,42,43,60,61,62,63,67,71,74,77,88,89,90,91,92,93,94,95,96,97,99,100,101,102,103,105,106,107,108,114,115,116,121,122,123,124,0,73,108,108,101,103,97,108,32,98,121,116,101,32,115,101,113,117,101,110,99,101,0,68,111,109,97,105,110,32,101,114,114,111,114,0,82,101,115,117,108,116,32,110,111,116,32,114,101,112,114,101,115,101,110,116,97,98,108,101,0,78,111,116,32,97,32,116,116,121,0,80,101,114,109,105,115,115,105,111,110,32,100,101,110,105,101,100,0,79,112,101,114,97,116,105,111,110,32,110,111,116,32,112,101,114,109,105,116,116,101,100,0,78,111,32,115,117,99,104,32,102,105,108,101,32,111,114,32,100,105,114,101,99,116,111,114,121,0,78,111,32,115,117,99,104,32,112,114,111,99,101,115,115,0,70,105,108,101,32,101,120,105,115,116,115,0,86,97,108,117,101,32,116,111,111,32,108,97,114,103,101,32,102,111,114,32,100,97,116,97,32,116,121,112,101,0,78,111,32,115,112,97,99,101,32,108,101,102,116,32,111,110,32,100,101,118,105,99,101,0,79,117,116,32,111,102,32,109,101,109,111,114,121,0,82,101,115,111,117,114,99,101,32,98,117,115,121,0,73,110,116,101,114,114,117,112,116,101,100,32,115,121,115,116,101,109,32,99,97,108,108,0,82,101,115,111,117,114,99,101,32,116,101,109,112,111,114,97,114,105,108,121,32,117,110,97,118,97,105,108,97,98,108,101,0,73,110,118,97,108,105,100,32,115,101,101,107,0,67,114,111,115,115,45,100,101,118,105,99,101,32,108,105,110,107,0,82,101,97,100,45,111,110,108,121,32,102,105,108,101,32,115,121,115,116,101,109,0,68,105,114,101,99,116,111,114,121,32,110,111,116,32,101,109,112,116,121,0,67,111,110,110,101,99,116,105,111,110,32,114,101,115,101,116,32,98,121,32,112,101,101,114,0,79,112,101,114,97,116,105,111,110,32,116,105,109,101,100,32,111,117,116,0,67,111,110,110,101,99,116,105,111,110,32,114,101,102,117,115,101,100,0,72,111,115,116,32,105,115,32,100,111,119,110,0,72,111,115,116,32,105,115,32,117,110,114,101,97,99,104,97,98,108,101,0,65,100,100,114,101,115,115,32,105,110,32,117,115,101,0,66,114,111,107,101,110,32,112,105,112,101,0,73,47,79,32,101,114,114,111,114,0,78,111,32,115,117,99,104,32,100,101,118,105,99,101,32,111,114,32,97,100,100,114,101,115,115,0,66,108,111,99,107,32,100,101],"i8",ALLOC_NONE,Runtime.GLOBAL_BASE+10240);allocate([118,105,99,101,32,114,101,113,117,105,114,101,100,0,78,111,32,115,117,99,104,32,100,101,118,105,99,101,0,78,111,116,32,97,32,100,105,114,101,99,116,111,114,121,0,73,115,32,97,32,100,105,114,101,99,116,111,114,121,0,84,101,120,116,32,102,105,108,101,32,98,117,115,121,0,69,120,101,99,32,102,111,114,109,97,116,32,101,114,114,111,114,0,73,110,118,97,108,105,100,32,97,114,103,117,109,101,110,116,0,65,114,103,117,109,101,110,116,32,108,105,115,116,32,116,111,111,32,108,111,110,103,0,83,121,109,98,111,108,105,99,32,108,105,110,107,32,108,111,111,112,0,70,105,108,101,110,97,109,101,32,116,111,111,32,108,111,110,103,0,84,111,111,32,109,97,110,121,32,111,112,101,110,32,102,105,108,101,115,32,105,110,32,115,121,115,116,101,109,0,78,111,32,102,105,108,101,32,100,101,115,99,114,105,112,116,111,114,115,32,97,118,97,105,108,97,98,108,101,0,66,97,100,32,102,105,108,101,32,100,101,115,99,114,105,112,116,111,114,0,78,111,32,99,104,105,108,100,32,112,114,111,99,101,115,115,0,66,97,100,32,97,100,100,114,101,115,115,0,70,105,108,101,32,116,111,111,32,108,97,114,103,101,0,84,111,111,32,109,97,110,121,32,108,105,110,107,115,0,78,111,32,108,111,99,107,115,32,97,118,97,105,108,97,98,108,101,0,82,101,115,111,117,114,99,101,32,100,101,97,100,108,111,99,107,32,119,111,117,108,100,32,111,99,99,117,114,0,83,116,97,116,101,32,110,111,116,32,114,101,99,111,118,101,114,97,98,108,101,0,80,114,101,118,105,111,117,115,32,111,119,110,101,114,32,100,105,101,100,0,79,112,101,114,97,116,105,111,110,32,99,97,110,99,101,108,101,100,0,70,117,110,99,116,105,111,110,32,110,111,116,32,105,109,112,108,101,109,101,110,116,101,100,0,78,111,32,109,101,115,115,97,103,101,32,111,102,32,100,101,115,105,114,101,100,32,116,121,112,101,0,73,100,101,110,116,105,102,105,101,114,32,114,101,109,111,118,101,100,0,68,101,118,105,99,101,32,110,111,116,32,97,32,115,116,114,101,97,109,0,78,111,32,100,97,116,97,32,97,118,97,105,108,97,98,108,101,0,68,101,118,105,99,101,32,116,105,109,101,111,117,116,0,79,117,116,32,111,102,32,115,116,114,101,97,109,115,32,114,101,115,111,117,114,99,101,115,0,76,105,110,107,32,104,97,115,32,98,101,101,110,32,115,101,118,101,114,101,100,0,80,114,111,116,111,99,111,108,32,101,114,114,111,114,0,66,97,100,32,109,101,115,115,97,103,101,0,70,105,108,101,32,100,101,115,99,114,105,112,116,111,114,32,105,110,32,98,97,100,32,115,116,97,116,101,0,78,111,116,32,97,32,115,111,99,107,101,116,0,68,101,115,116,105,110,97,116,105,111,110,32,97,100,100,114,101,115,115,32,114,101,113,117,105,114,101,100,0,77,101,115,115,97,103,101,32,116,111,111,32,108,97,114,103,101,0,80,114,111,116,111,99,111,108,32,119,114,111,110,103,32,116,121,112,101,32,102,111,114,32,115,111,99,107,101,116,0,80,114,111,116,111,99,111,108,32,110,111,116,32,97,118,97,105,108,97,98,108,101,0,80,114,111,116,111,99,111,108,32,110,111,116,32,115,117,112,112,111,114,116,101,100,0,83,111,99,107,101,116,32,116,121,112,101,32,110,111,116,32,115,117,112,112,111,114,116,101,100,0,78,111,116,32,115,117,112,112,111,114,116,101,100,0,80,114,111,116,111,99,111,108,32,102,97,109,105,108,121,32,110,111,116,32,115,117,112,112,111,114,116,101,100,0,65,100,100,114,101,115,115,32,102,97,109,105,108,121,32,110,111,116,32,115,117,112,112,111,114,116,101,100,32,98,121,32,112,114,111,116,111,99,111,108,0,65,100,100,114,101,115,115,32,110,111,116,32,97,118,97,105,108,97,98,108,101,0,78,101,116,119,111,114,107,32,105,115,32,100,111,119,110,0,78,101,116,119,111,114,107,32,117,110,114,101,97,99,104,97,98,108,101,0,67,111,110,110,101,99,116,105,111,110,32,114,101,115,101,116,32,98,121,32,110,101,116,119,111,114,107,0,67,111,110,110,101,99,116,105,111,110,32,97,98,111,114,116,101,100,0,78,111,32,98,117,102,102,101,114,32,115,112,97,99,101,32,97,118,97,105,108,97,98,108,101,0,83,111,99,107,101,116,32,105,115,32,99,111,110,110,101,99,116,101,100,0,83,111,99,107,101,116,32,110,111,116,32,99,111,110,110,101,99,116,101,100,0,67,97,110,110,111,116,32,115,101,110,100,32,97,102,116,101,114,32,115,111,99,107,101,116,32,115,104,117,116,100,111,119,110,0,79,112,101,114,97,116,105,111,110,32,97,108,114,101,97,100,121,32,105,110,32,112,114,111,103,114,101,115,115,0,79,112,101,114,97,116,105,111,110,32,105,110,32,112,114,111,103,114,101,115,115,0,83,116,97,108,101,32,102,105,108,101,32,104,97,110,100,108,101,0,82,101,109,111,116,101,32,73,47,79,32,101,114,114,111,114,0,81,117,111,116,97,32,101,120,99,101,101,100,101,100,0,78,111,32,109,101,100,105,117,109,32,102,111,117,110,100,0,87,114,111,110,103,32,109,101,100,105,117,109,32,116,121,112,101,0,78,111,32,101,114,114,111,114,32,105,110,102,111,114,109,97,116,105,111,110,0,0,33,34,118,101,99,116,111,114,32,108,101,110,103,116,104,95,101,114,114,111,114,34,0,47,117,115,114,47,108,111,99,97,108,47,103,111,111,103,108,101,47,104,111,109,101,47,111,115,116,97,118,97,47,100,101,118,101,47,101,109,115,100,107,95,119,97,115,109,47,101,109,115,100,107,47,101,109,115,99,114,105,112,116,101,110,47,105,110,99,111,109,105,110,103,47,115,121,115,116,101,109,47,105,110,99,108,117,100,101,47,108,105,98,99,120,120,47,118,101,99,116,111,114,0,33,34,118,101,99,116,111,114,32,111,117,116,95,111,102,95,114,97,110,103,101,34,0,33,34,98,97,115,105,99,95,115,116,114,105,110,103,32,108,101,110,103,116,104,95,101,114,114,111,114,34,0,47,117,115,114,47,108,111,99,97,108,47,103,111,111,103,108,101,47,104,111,109,101,47,111,115,116,97,118,97,47,100,101,118,101,47,101,109,115,100,107,95,119,97,115,109,47,101,109,115,100,107,47,101,109,115,99,114,105,112,116,101,110,47,105,110,99,111,109,105,110,103,47,115,121,115,116,101,109,47,105,110,99,108,117,100,101,47,108,105,98,99,120,120,47,115,116,114,105,110,103,0,95,95,116,104,114,111,119,95,108,101,110,103,116,104,95,101,114,114,111,114,0,33,34,98,97,115,105,99,95,115,116,114,105,110,103,32,111,117,116,95,111,102,95,114,97,110,103,101,34,0,95,95,116,104,114,111,119,95,111,117,116,95,111,102,95,114,97,110,103,101,0,116,101,114,109,105,110,97,116,105,110,103,32,119,105,116,104,32,37,115,32,101,120,99,101,112,116,105,111,110,32,111,102,32,116,121,112,101,32,37,115,58,32,37,115,0,116,101,114,109,105,110,97,116,105,110,103,32,119,105,116,104,32,37,115,32,101,120,99,101,112,116,105,111,110,32,111,102,32,116,121,112,101,32,37,115,0,116,101,114,109,105,110,97,116,105,110,103,32,119,105,116,104,32,37,115,32,102,111,114,101,105,103,110,32,101,120,99,101,112,116,105,111,110,0,116,101,114,109,105,110,97,116,105,110,103,0,117,110,99,97,117,103,104,116,0,83,116,57,101,120,99,101,112,116,105,111,110,0,78,49,48,95,95,99,120,120,97,98,105,118,49,49,54,95,95,115,104,105,109,95,116,121,112,101,95,105,110,102,111,69,0,83,116,57,116,121,112,101,95,105,110,102,111,0,78,49,48,95,95,99,120,120,97,98,105,118,49,50,48,95,95,115,105,95,99,108,97,115,115,95,116,121,112,101,95,105,110,102,111,69,0,78,49,48,95,95,99,120,120,97,98,105,118,49,49,55,95,95,99,108,97,115,115,95,116,121,112,101,95,105,110,102,111,69,0,112,116,104,114,101,97,100,95,111,110,99,101,32,102,97,105,108,117,114,101,32,105,110,32,95,95,99,120,97,95,103,101,116,95,103,108,111,98,97,108,115,95,102,97,115,116,40,41,0,99,97,110,110,111,116,32,99,114,101,97,116,101,32,112,116,104,114,101,97,100,32,107,101,121,32,102,111,114,32,95,95,99,120,97,95,103,101,116,95,103,108,111,98,97,108,115,40,41,0,99,97,110,110,111,116,32,122,101,114,111,32,111,117,116,32,116,104,114,101,97,100,32,118,97,108,117,101,32,102,111,114,32,95,95,99,120,97,95,103,101,116,95,103,108,111,98,97,108,115,40,41,0,116,101,114,109,105,110,97,116,101,95,104,97,110,100,108,101,114,32,117,110,101,120,112,101,99,116,101,100,108,121,32,114,101,116,117,114,110,101,100,0,115,116,100,58,58,98,97,100,95,97,108,108,111,99,0,83,116,57,98,97,100,95,97,108,108,111,99,0,78,49,48,95,95,99,120,120,97,98,105,118,49,49,57,95,95,112,111,105,110,116,101,114,95,116,121,112,101,95,105,110,102,111,69,0,78,49,48,95,95,99,120,120,97,98,105,118,49,49,55,95,95,112,98,97,115,101,95,116,121,112,101,95,105,110,102,111,69,0],"i8",ALLOC_NONE,Runtime.GLOBAL_BASE+20480);var tempDoublePtr=STATICTOP;STATICTOP+=16;Module["_i64Subtract"]=_i64Subtract;function ___assert_fail(condition,filename,line,func){ABORT=true;throw"Assertion failed: "+Pointer_stringify(condition)+", at: "+[filename?Pointer_stringify(filename):"unknown filename",line,func?Pointer_stringify(func):"unknown function"]+" at "+stackTrace()}function __ZSt18uncaught_exceptionv(){return!!__ZSt18uncaught_exceptionv.uncaught_exception}var EXCEPTIONS={last:0,caught:[],infos:{},deAdjust:(function(adjusted){if(!adjusted||EXCEPTIONS.infos[adjusted])return adjusted;for(var ptr in EXCEPTIONS.infos){var info=EXCEPTIONS.infos[ptr];if(info.adjusted===adjusted){return ptr}}return adjusted}),addRef:(function(ptr){if(!ptr)return;var info=EXCEPTIONS.infos[ptr];info.refcount++}),decRef:(function(ptr){if(!ptr)return;var info=EXCEPTIONS.infos[ptr];assert(info.refcount>0);info.refcount--;if(info.refcount===0&&!info.rethrown){if(info.destructor){Module["dynCall_vi"](info.destructor,ptr)}delete EXCEPTIONS.infos[ptr];___cxa_free_exception(ptr)}}),clearRef:(function(ptr){if(!ptr)return;var info=EXCEPTIONS.infos[ptr];info.refcount=0})};function ___resumeException(ptr){if(!EXCEPTIONS.last){EXCEPTIONS.last=ptr}throw ptr+" - Exception catching is disabled, this exception cannot be caught. Compile with -s DISABLE_EXCEPTION_CATCHING=0 or DISABLE_EXCEPTION_CATCHING=2 to catch."}function ___cxa_find_matching_catch(){var thrown=EXCEPTIONS.last;if(!thrown){return(Runtime.setTempRet0(0),0)|0}var info=EXCEPTIONS.infos[thrown];var throwntype=info.type;if(!throwntype){return(Runtime.setTempRet0(0),thrown)|0}var typeArray=Array.prototype.slice.call(arguments);var pointer=Module["___cxa_is_pointer_type"](throwntype);if(!___cxa_find_matching_catch.buffer)___cxa_find_matching_catch.buffer=_malloc(4);HEAP32[___cxa_find_matching_catch.buffer>>2]=thrown;thrown=___cxa_find_matching_catch.buffer;for(var i=0;i>2];info.adjusted=thrown;return(Runtime.setTempRet0(typeArray[i]),thrown)|0}}thrown=HEAP32[thrown>>2];return(Runtime.setTempRet0(throwntype),thrown)|0}function ___cxa_throw(ptr,type,destructor){EXCEPTIONS.infos[ptr]={ptr:ptr,adjusted:ptr,type:type,destructor:destructor,refcount:0,caught:false,rethrown:false};EXCEPTIONS.last=ptr;if(!("uncaught_exception"in __ZSt18uncaught_exceptionv)){__ZSt18uncaught_exceptionv.uncaught_exception=1}else{__ZSt18uncaught_exceptionv.uncaught_exception++}throw ptr+" - Exception catching is disabled, this exception cannot be caught. Compile with -s DISABLE_EXCEPTION_CATCHING=0 or DISABLE_EXCEPTION_CATCHING=2 to catch."}Module["_memset"]=_memset;Module["_bitshift64Shl"]=_bitshift64Shl;function _abort(){Module["abort"]()}function _pthread_once(ptr,func){if(!_pthread_once.seen)_pthread_once.seen={};if(ptr in _pthread_once.seen)return;Module["dynCall_v"](func);_pthread_once.seen[ptr]=1}Module["_i64Add"]=_i64Add;var cttz_i8=allocate([8,0,1,0,2,0,1,0,3,0,1,0,2,0,1,0,4,0,1,0,2,0,1,0,3,0,1,0,2,0,1,0,5,0,1,0,2,0,1,0,3,0,1,0,2,0,1,0,4,0,1,0,2,0,1,0,3,0,1,0,2,0,1,0,6,0,1,0,2,0,1,0,3,0,1,0,2,0,1,0,4,0,1,0,2,0,1,0,3,0,1,0,2,0,1,0,5,0,1,0,2,0,1,0,3,0,1,0,2,0,1,0,4,0,1,0,2,0,1,0,3,0,1,0,2,0,1,0,7,0,1,0,2,0,1,0,3,0,1,0,2,0,1,0,4,0,1,0,2,0,1,0,3,0,1,0,2,0,1,0,5,0,1,0,2,0,1,0,3,0,1,0,2,0,1,0,4,0,1,0,2,0,1,0,3,0,1,0,2,0,1,0,6,0,1,0,2,0,1,0,3,0,1,0,2,0,1,0,4,0,1,0,2,0,1,0,3,0,1,0,2,0,1,0,5,0,1,0,2,0,1,0,3,0,1,0,2,0,1,0,4,0,1,0,2,0,1,0,3,0,1,0,2,0,1,0],"i8",ALLOC_STATIC);Module["_llvm_cttz_i32"]=_llvm_cttz_i32;Module["___udivmoddi4"]=___udivmoddi4;Module["___divdi3"]=___divdi3;var PTHREAD_SPECIFIC={};function _pthread_getspecific(key){return PTHREAD_SPECIFIC[key]||0}var PTHREAD_SPECIFIC_NEXT_KEY=1;var ERRNO_CODES={EPERM:1,ENOENT:2,ESRCH:3,EINTR:4,EIO:5,ENXIO:6,E2BIG:7,ENOEXEC:8,EBADF:9,ECHILD:10,EAGAIN:11,EWOULDBLOCK:11,ENOMEM:12,EACCES:13,EFAULT:14,ENOTBLK:15,EBUSY:16,EEXIST:17,EXDEV:18,ENODEV:19,ENOTDIR:20,EISDIR:21,EINVAL:22,ENFILE:23,EMFILE:24,ENOTTY:25,ETXTBSY:26,EFBIG:27,ENOSPC:28,ESPIPE:29,EROFS:30,EMLINK:31,EPIPE:32,EDOM:33,ERANGE:34,ENOMSG:42,EIDRM:43,ECHRNG:44,EL2NSYNC:45,EL3HLT:46,EL3RST:47,ELNRNG:48,EUNATCH:49,ENOCSI:50,EL2HLT:51,EDEADLK:35,ENOLCK:37,EBADE:52,EBADR:53,EXFULL:54,ENOANO:55,EBADRQC:56,EBADSLT:57,EDEADLOCK:35,EBFONT:59,ENOSTR:60,ENODATA:61,ETIME:62,ENOSR:63,ENONET:64,ENOPKG:65,EREMOTE:66,ENOLINK:67,EADV:68,ESRMNT:69,ECOMM:70,EPROTO:71,EMULTIHOP:72,EDOTDOT:73,EBADMSG:74,ENOTUNIQ:76,EBADFD:77,EREMCHG:78,ELIBACC:79,ELIBBAD:80,ELIBSCN:81,ELIBMAX:82,ELIBEXEC:83,ENOSYS:38,ENOTEMPTY:39,ENAMETOOLONG:36,ELOOP:40,EOPNOTSUPP:95,EPFNOSUPPORT:96,ECONNRESET:104,ENOBUFS:105,EAFNOSUPPORT:97,EPROTOTYPE:91,ENOTSOCK:88,ENOPROTOOPT:92,ESHUTDOWN:108,ECONNREFUSED:111,EADDRINUSE:98,ECONNABORTED:103,ENETUNREACH:101,ENETDOWN:100,ETIMEDOUT:110,EHOSTDOWN:112,EHOSTUNREACH:113,EINPROGRESS:115,EALREADY:114,EDESTADDRREQ:89,EMSGSIZE:90,EPROTONOSUPPORT:93,ESOCKTNOSUPPORT:94,EADDRNOTAVAIL:99,ENETRESET:102,EISCONN:106,ENOTCONN:107,ETOOMANYREFS:109,EUSERS:87,EDQUOT:122,ESTALE:116,ENOTSUP:95,ENOMEDIUM:123,EILSEQ:84,EOVERFLOW:75,ECANCELED:125,ENOTRECOVERABLE:131,EOWNERDEAD:130,ESTRPIPE:86};function _pthread_key_create(key,destructor){if(key==0){return ERRNO_CODES.EINVAL}HEAP32[key>>2]=PTHREAD_SPECIFIC_NEXT_KEY;PTHREAD_SPECIFIC[PTHREAD_SPECIFIC_NEXT_KEY]=0;PTHREAD_SPECIFIC_NEXT_KEY++;return 0}function _pthread_setspecific(key,value){if(!(key in PTHREAD_SPECIFIC)){return ERRNO_CODES.EINVAL}PTHREAD_SPECIFIC[key]=value;return 0}function ___cxa_allocate_exception(size){return _malloc(size)}var SYSCALLS={varargs:0,get:(function(varargs){SYSCALLS.varargs+=4;var ret=HEAP32[SYSCALLS.varargs-4>>2];return ret}),getStr:(function(){var ret=Pointer_stringify(SYSCALLS.get());return ret}),get64:(function(){var low=SYSCALLS.get(),high=SYSCALLS.get();if(low>=0)assert(high===0);else assert(high===-1);return low}),getZero:(function(){assert(SYSCALLS.get()===0)})};function ___syscall54(which,varargs){SYSCALLS.varargs=varargs;try{return 0}catch(e){if(typeof FS==="undefined"||!(e instanceof FS.ErrnoError))abort(e);return-e.errno}}Module["_bitshift64Ashr"]=_bitshift64Ashr;Module["_bitshift64Lshr"]=_bitshift64Lshr;function ___cxa_pure_virtual(){ABORT=true;throw"Pure virtual function called!"}function ___cxa_begin_catch(ptr){var info=EXCEPTIONS.infos[ptr];if(info&&!info.caught){info.caught=true;__ZSt18uncaught_exceptionv.uncaught_exception--}if(info)info.rethrown=false;EXCEPTIONS.caught.push(ptr);EXCEPTIONS.addRef(EXCEPTIONS.deAdjust(ptr));return ptr}function _emscripten_memcpy_big(dest,src,num){HEAPU8.set(HEAPU8.subarray(src,src+num),dest);return dest}Module["_memcpy"]=_memcpy;function ___syscall6(which,varargs){SYSCALLS.varargs=varargs;try{var stream=SYSCALLS.getStreamFromFD();FS.close(stream);return 0}catch(e){if(typeof FS==="undefined"||!(e instanceof FS.ErrnoError))abort(e);return-e.errno}}Module["___udivdi3"]=___udivdi3;Module["___muldsi3"]=___muldsi3;Module["___muldi3"]=___muldi3;function ___setErrNo(value){if(Module["___errno_location"])HEAP32[Module["___errno_location"]()>>2]=value;return value}Module["_sbrk"]=_sbrk;Module["_memmove"]=_memmove;function ___gxx_personality_v0(){}Module["___uremdi3"]=___uremdi3;Module["_llvm_bswap_i32"]=_llvm_bswap_i32;function ___syscall140(which,varargs){SYSCALLS.varargs=varargs;try{var stream=SYSCALLS.getStreamFromFD(),offset_high=SYSCALLS.get(),offset_low=SYSCALLS.get(),result=SYSCALLS.get(),whence=SYSCALLS.get();var offset=offset_low;FS.llseek(stream,offset,whence);HEAP32[result>>2]=stream.position;if(stream.getdents&&offset===0&&whence===0)stream.getdents=null;return 0}catch(e){if(typeof FS==="undefined"||!(e instanceof FS.ErrnoError))abort(e);return-e.errno}}function ___syscall146(which,varargs){SYSCALLS.varargs=varargs;try{var stream=SYSCALLS.get(),iov=SYSCALLS.get(),iovcnt=SYSCALLS.get();var ret=0;if(!___syscall146.buffer){___syscall146.buffers=[null,[],[]];___syscall146.printChar=(function(stream,curr){var buffer=___syscall146.buffers[stream];assert(buffer);if(curr===0||curr===10){(stream===1?Module["print"]:Module["printErr"])(UTF8ArrayToString(buffer,0));buffer.length=0}else{buffer.push(curr)}})}for(var i=0;i>2];var len=HEAP32[iov+(i*8+4)>>2];for(var j=0;j>2]=DYNAMIC_BASE;staticSealed=true;function invoke_iiii(index,a1,a2,a3){try{return Module["dynCall_iiii"](index,a1,a2,a3)}catch(e){if(typeof e!=="number"&&e!=="longjmp")throw e;Module["setThrew"](1,0)}}function invoke_viiiii(index,a1,a2,a3,a4,a5){try{Module["dynCall_viiiii"](index,a1,a2,a3,a4,a5)}catch(e){if(typeof e!=="number"&&e!=="longjmp")throw e;Module["setThrew"](1,0)}}function invoke_vi(index,a1){try{Module["dynCall_vi"](index,a1)}catch(e){if(typeof e!=="number"&&e!=="longjmp")throw e;Module["setThrew"](1,0)}}function invoke_vii(index,a1,a2){try{Module["dynCall_vii"](index,a1,a2)}catch(e){if(typeof e!=="number"&&e!=="longjmp")throw e;Module["setThrew"](1,0)}}function invoke_iiiiiii(index,a1,a2,a3,a4,a5,a6){try{return Module["dynCall_iiiiiii"](index,a1,a2,a3,a4,a5,a6)}catch(e){if(typeof e!=="number"&&e!=="longjmp")throw e;Module["setThrew"](1,0)}}function invoke_ii(index,a1){try{return Module["dynCall_ii"](index,a1)}catch(e){if(typeof e!=="number"&&e!=="longjmp")throw e;Module["setThrew"](1,0)}}function invoke_viii(index,a1,a2,a3){try{Module["dynCall_viii"](index,a1,a2,a3)}catch(e){if(typeof e!=="number"&&e!=="longjmp")throw e;Module["setThrew"](1,0)}}function invoke_v(index){try{Module["dynCall_v"](index)}catch(e){if(typeof e!=="number"&&e!=="longjmp")throw e;Module["setThrew"](1,0)}}function invoke_viiiiii(index,a1,a2,a3,a4,a5,a6){try{Module["dynCall_viiiiii"](index,a1,a2,a3,a4,a5,a6)}catch(e){if(typeof e!=="number"&&e!=="longjmp")throw e;Module["setThrew"](1,0)}}function invoke_iii(index,a1,a2){try{return Module["dynCall_iii"](index,a1,a2)}catch(e){if(typeof e!=="number"&&e!=="longjmp")throw e;Module["setThrew"](1,0)}}function invoke_viiii(index,a1,a2,a3,a4){try{Module["dynCall_viiii"](index,a1,a2,a3,a4)}catch(e){if(typeof e!=="number"&&e!=="longjmp")throw e;Module["setThrew"](1,0)}}Module.asmGlobalArg={"Math":Math,"Int8Array":Int8Array,"Int16Array":Int16Array,"Int32Array":Int32Array,"Uint8Array":Uint8Array,"Uint16Array":Uint16Array,"Uint32Array":Uint32Array,"Float32Array":Float32Array,"Float64Array":Float64Array,"NaN":NaN,"Infinity":Infinity,"byteLength":byteLength};Module.asmLibraryArg={"abort":abort,"assert":assert,"enlargeMemory":enlargeMemory,"getTotalMemory":getTotalMemory,"abortOnCannotGrowMemory":abortOnCannotGrowMemory,"invoke_iiii":invoke_iiii,"invoke_viiiii":invoke_viiiii,"invoke_vi":invoke_vi,"invoke_vii":invoke_vii,"invoke_iiiiiii":invoke_iiiiiii,"invoke_ii":invoke_ii,"invoke_viii":invoke_viii,"invoke_v":invoke_v,"invoke_viiiiii":invoke_viiiiii,"invoke_iii":invoke_iii,"invoke_viiii":invoke_viiii,"_pthread_getspecific":_pthread_getspecific,"_pthread_setspecific":_pthread_setspecific,"___cxa_throw":___cxa_throw,"___gxx_personality_v0":___gxx_personality_v0,"___syscall6":___syscall6,"___setErrNo":___setErrNo,"_abort":_abort,"___cxa_begin_catch":___cxa_begin_catch,"_pthread_key_create":_pthread_key_create,"___syscall146":___syscall146,"_pthread_once":_pthread_once,"_emscripten_memcpy_big":_emscripten_memcpy_big,"___syscall54":___syscall54,"___syscall140":___syscall140,"___resumeException":___resumeException,"___cxa_find_matching_catch":___cxa_find_matching_catch,"___assert_fail":___assert_fail,"___cxa_pure_virtual":___cxa_pure_virtual,"___cxa_allocate_exception":___cxa_allocate_exception,"__ZSt18uncaught_exceptionv":__ZSt18uncaught_exceptionv,"DYNAMICTOP_PTR":DYNAMICTOP_PTR,"tempDoublePtr":tempDoublePtr,"ABORT":ABORT,"STACKTOP":STACKTOP,"STACK_MAX":STACK_MAX,"cttz_i8":cttz_i8};// EMSCRIPTEN_START_ASM +var asm=(function(global,env,buffer) { +"almost asm";var a=global.Int8Array;var b=new a(buffer);var c=global.Int16Array;var d=new c(buffer);var e=global.Int32Array;var f=new e(buffer);var g=global.Uint8Array;var h=new g(buffer);var i=global.Uint16Array;var j=new i(buffer);var k=global.Uint32Array;var l=new k(buffer);var m=global.Float32Array;var n=new m(buffer);var o=global.Float64Array;var p=new o(buffer);var q=global.byteLength;var r=env.DYNAMICTOP_PTR|0;var s=env.tempDoublePtr|0;var t=env.ABORT|0;var u=env.STACKTOP|0;var v=env.STACK_MAX|0;var w=env.cttz_i8|0;var x=0;var y=0;var z=0;var A=0;var B=global.NaN,C=global.Infinity;var D=0,E=0,F=0,G=0,H=0.0;var I=0;var J=global.Math.floor;var K=global.Math.abs;var L=global.Math.sqrt;var M=global.Math.pow;var N=global.Math.cos;var O=global.Math.sin;var P=global.Math.tan;var Q=global.Math.acos;var R=global.Math.asin;var S=global.Math.atan;var T=global.Math.atan2;var U=global.Math.exp;var V=global.Math.log;var W=global.Math.ceil;var X=global.Math.imul;var Y=global.Math.min;var Z=global.Math.max;var _=global.Math.clz32;var $=global.Math.fround;var aa=env.abort;var ba=env.assert;var ca=env.enlargeMemory;var da=env.getTotalMemory;var ea=env.abortOnCannotGrowMemory;var fa=env.invoke_iiii;var ga=env.invoke_viiiii;var ha=env.invoke_vi;var ia=env.invoke_vii;var ja=env.invoke_iiiiiii;var ka=env.invoke_ii;var la=env.invoke_viii;var ma=env.invoke_v;var na=env.invoke_viiiiii;var oa=env.invoke_iii;var pa=env.invoke_viiii;var qa=env._pthread_getspecific;var ra=env._pthread_setspecific;var sa=env.___cxa_throw;var ta=env.___gxx_personality_v0;var ua=env.___syscall6;var va=env.___setErrNo;var wa=env._abort;var xa=env.___cxa_begin_catch;var ya=env._pthread_key_create;var za=env.___syscall146;var Aa=env._pthread_once;var Ba=env._emscripten_memcpy_big;var Ca=env.___syscall54;var Da=env.___syscall140;var Ea=env.___resumeException;var Fa=env.___cxa_find_matching_catch;var Ga=env.___assert_fail;var Ha=env.___cxa_pure_virtual;var Ia=env.___cxa_allocate_exception;var Ja=env.__ZSt18uncaught_exceptionv;var Ka=$(0);const La=$(0);function Ma(newBuffer){if(q(newBuffer)&16777215||q(newBuffer)<=16777215||q(newBuffer)>2147483648)return false;b=new a(newBuffer);d=new c(newBuffer);f=new e(newBuffer);h=new g(newBuffer);j=new i(newBuffer);l=new k(newBuffer);n=new m(newBuffer);p=new o(newBuffer);buffer=newBuffer;return true} +// EMSCRIPTEN_START_FUNCS +function Rc(a,c,d){a=a|0;c=c|0;d=d|0;var e=0,g=0,i=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,v=0;v=u;u=u+64|0;t=v;e=t;g=e+40|0;do{f[e>>2]=0;e=e+4|0}while((e|0)<(g|0));a:do if(pe(t,c)|0){q=(a|0)>0;if(q?(f[t+12>>2]|0)==0:0){j=0;break}j=c+8|0;i=f[j>>2]|0;j=f[j+4>>2]|0;l=c+16|0;e=l;k=f[e>>2]|0;e=Ho(k|0,f[e+4>>2]|0,8,0)|0;g=I;if((!((j|0)<(g|0)|(j|0)==(g|0)&i>>>0>>0)?(m=f[c>>2]|0,n=m+k|0,o=n,o=h[o>>0]|h[o+1>>0]<<8|h[o+2>>0]<<16|h[o+3>>0]<<24,n=n+4|0,n=h[n>>0]|h[n+1>>0]<<8|h[n+2>>0]<<16|h[n+3>>0]<<24,c=l,f[c>>2]=e,f[c+4>>2]=g,c=Xn(i|0,j|0,e|0,g|0)|0,k=I,!(n>>>0>k>>>0|(n|0)==(k|0)&o>>>0>c>>>0)):0)?(s=m+e|0,n=Ho(o|0,n|0,e|0,g|0)|0,c=l,f[c>>2]=n,f[c+4>>2]=I,(o|0)>=1):0){f[t+40>>2]=s;g=o+-1|0;e=s+g|0;switch((h[e>>0]|0)>>>6&3){case 0:{f[t+44>>2]=g;r=g;p=b[e>>0]&63;break}case 1:{if((o|0)<2){j=0;break a}r=o+-2|0;f[t+44>>2]=r;p=s+o+-2|0;p=(h[p+1>>0]|0)<<8&16128|(h[p>>0]|0);break}case 2:{if((o|0)<3){j=0;break a}r=o+-3|0;f[t+44>>2]=r;p=s+o+-3|0;p=(h[p+1>>0]|0)<<8|(h[p>>0]|0)|(h[p+2>>0]|0)<<16&4128768;break}case 3:{r=o+-4|0;f[t+44>>2]=r;p=s+o+-4|0;p=(h[p+2>>0]|0)<<16|(h[p+3>>0]|0)<<24&1056964608|(h[p+1>>0]|0)<<8|(h[p>>0]|0);break}default:{}}m=t+48|0;g=p+1048576|0;f[m>>2]=g;e=g>>>0>268435455;if(e|q^1)j=e^1;else{l=t+44|0;j=t+16|0;k=t+28|0;e=r;i=0;while(1){b:do if(g>>>0<1048576)do{if((e|0)<=0)break b;e=e+-1|0;f[l>>2]=e;g=h[s+e>>0]|0|g<<8;f[m>>2]=g}while(g>>>0<1048576);while(0);p=g&262143;r=f[(f[j>>2]|0)+(p<<2)>>2]|0;q=f[k>>2]|0;g=(X(f[q+(r<<3)>>2]|0,g>>>18)|0)+p-(f[q+(r<<3)+4>>2]|0)|0;f[m>>2]=g;f[d+(i<<2)>>2]=r;i=i+1|0;if((i|0)==(a|0)){j=1;break}}}}else j=0}else j=0;while(0);e=f[t+28>>2]|0;if(e|0){i=t+32|0;g=f[i>>2]|0;if((g|0)!=(e|0))f[i>>2]=g+(~((g+-8-e|0)>>>3)<<3);ar(e)}e=f[t+16>>2]|0;if(e|0){i=t+20|0;g=f[i>>2]|0;if((g|0)!=(e|0))f[i>>2]=g+(~((g+-4-e|0)>>>2)<<2);ar(e)}i=f[t>>2]|0;if(!i){u=v;return j|0}g=t+4|0;e=f[g>>2]|0;if((e|0)!=(i|0))f[g>>2]=e+(~((e+-4-i|0)>>>2)<<2);ar(i);u=v;return j|0}function Sc(a,c,d){a=a|0;c=c|0;d=d|0;var e=La,g=0,i=La,j=0,k=0;switch(b[a+24>>0]|0){case 1:{j=f[c>>2]|0;g=a+48|0;c=f[g>>2]|0;g=f[g+4>>2]|0;k=a+40|0;g=(Ho(kn(f[k>>2]|0,f[k+4>>2]|0,j|0,((j|0)<0)<<31>>31|0)|0,I|0,c|0,g|0)|0)+(f[f[a>>2]>>2]|0)|0;i=$((h[g>>0]|h[g+1>>0]<<8|h[g+2>>0]<<16|h[g+3>>0]<<24)>>>0);e=$(i*$(2.32830644e-10));n[d>>2]=(b[a+32>>0]|0)==0?i:e;d=d+4|0;f[d>>2]=0;f[d+4>>2]=0;d=1;return d|0}case 2:{j=f[c>>2]|0;c=a+48|0;k=f[c>>2]|0;c=f[c+4>>2]|0;g=a+40|0;c=(Ho(kn(f[g>>2]|0,f[g+4>>2]|0,j|0,((j|0)<0)<<31>>31|0)|0,I|0,k|0,c|0)|0)+(f[f[a>>2]>>2]|0)|0;k=c;c=c+4|0;c=h[c>>0]|h[c+1>>0]<<8|h[c+2>>0]<<16|h[c+3>>0]<<24;e=$((h[k>>0]|h[k+1>>0]<<8|h[k+2>>0]<<16|h[k+3>>0]<<24)>>>0);if(!(b[a+32>>0]|0)){n[d>>2]=e;e=$(c>>>0)}else{e=$(e*$(2.32830644e-10));n[d>>2]=e;e=$($(c>>>0)*$(2.32830644e-10))}n[d+4>>2]=e;n[d+8>>2]=$(0.0);k=1;return k|0}case 3:{g=f[c>>2]|0;k=a+48|0;c=f[k>>2]|0;k=f[k+4>>2]|0;j=a+40|0;k=(Ho(kn(f[j>>2]|0,f[j+4>>2]|0,g|0,((g|0)<0)<<31>>31|0)|0,I|0,c|0,k|0)|0)+(f[f[a>>2]>>2]|0)|0;c=k+4|0;c=h[c>>0]|h[c+1>>0]<<8|h[c+2>>0]<<16|h[c+3>>0]<<24;g=k+8|0;g=h[g>>0]|h[g+1>>0]<<8|h[g+2>>0]<<16|h[g+3>>0]<<24;e=$((h[k>>0]|h[k+1>>0]<<8|h[k+2>>0]<<16|h[k+3>>0]<<24)>>>0);if(!(b[a+32>>0]|0)){n[d>>2]=e;i=$(c>>>0);n[d+4>>2]=i;i=$(g>>>0);n[d+8>>2]=i;k=1;return k|0}else{i=$(e*$(2.32830644e-10));n[d>>2]=i;i=$($(c>>>0)*$(2.32830644e-10));n[d+4>>2]=i;i=$($(g>>>0)*$(2.32830644e-10));n[d+8>>2]=i;k=1;return k|0}}case 4:{g=f[c>>2]|0;k=a+48|0;c=f[k>>2]|0;k=f[k+4>>2]|0;j=a+40|0;k=(Ho(kn(f[j>>2]|0,f[j+4>>2]|0,g|0,((g|0)<0)<<31>>31|0)|0,I|0,c|0,k|0)|0)+(f[f[a>>2]>>2]|0)|0;c=k+4|0;c=h[c>>0]|h[c+1>>0]<<8|h[c+2>>0]<<16|h[c+3>>0]<<24;g=k+8|0;g=h[g>>0]|h[g+1>>0]<<8|h[g+2>>0]<<16|h[g+3>>0]<<24;e=$((h[k>>0]|h[k+1>>0]<<8|h[k+2>>0]<<16|h[k+3>>0]<<24)>>>0);if(!(b[a+32>>0]|0)){n[d>>2]=e;i=$(c>>>0);n[d+4>>2]=i;i=$(g>>>0);n[d+8>>2]=i;k=1;return k|0}else{i=$(e*$(2.32830644e-10));n[d>>2]=i;i=$($(c>>>0)*$(2.32830644e-10));n[d+4>>2]=i;i=$($(g>>>0)*$(2.32830644e-10));n[d+8>>2]=i;k=1;return k|0}}default:{k=0;return k|0}}return 0}function Tc(a,c,d){a=a|0;c=c|0;d=d|0;var e=0,g=0,i=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,v=0;v=u;u=u+64|0;t=v;e=t;g=e+40|0;do{f[e>>2]=0;e=e+4|0}while((e|0)<(g|0));a:do if(qe(t,c)|0){q=(a|0)>0;if(q?(f[t+12>>2]|0)==0:0){j=0;break}j=c+8|0;i=f[j>>2]|0;j=f[j+4>>2]|0;l=c+16|0;e=l;k=f[e>>2]|0;e=Ho(k|0,f[e+4>>2]|0,8,0)|0;g=I;if((!((j|0)<(g|0)|(j|0)==(g|0)&i>>>0>>0)?(m=f[c>>2]|0,n=m+k|0,o=n,o=h[o>>0]|h[o+1>>0]<<8|h[o+2>>0]<<16|h[o+3>>0]<<24,n=n+4|0,n=h[n>>0]|h[n+1>>0]<<8|h[n+2>>0]<<16|h[n+3>>0]<<24,c=l,f[c>>2]=e,f[c+4>>2]=g,c=Xn(i|0,j|0,e|0,g|0)|0,k=I,!(n>>>0>k>>>0|(n|0)==(k|0)&o>>>0>c>>>0)):0)?(s=m+e|0,n=Ho(o|0,n|0,e|0,g|0)|0,c=l,f[c>>2]=n,f[c+4>>2]=I,(o|0)>=1):0){f[t+40>>2]=s;g=o+-1|0;e=s+g|0;switch((h[e>>0]|0)>>>6&3){case 0:{f[t+44>>2]=g;r=g;p=b[e>>0]&63;break}case 1:{if((o|0)<2){j=0;break a}r=o+-2|0;f[t+44>>2]=r;p=s+o+-2|0;p=(h[p+1>>0]|0)<<8&16128|(h[p>>0]|0);break}case 2:{if((o|0)<3){j=0;break a}r=o+-3|0;f[t+44>>2]=r;p=s+o+-3|0;p=(h[p+1>>0]|0)<<8|(h[p>>0]|0)|(h[p+2>>0]|0)<<16&4128768;break}case 3:{r=o+-4|0;f[t+44>>2]=r;p=s+o+-4|0;p=(h[p+2>>0]|0)<<16|(h[p+3>>0]|0)<<24&1056964608|(h[p+1>>0]|0)<<8|(h[p>>0]|0);break}default:{}}m=t+48|0;g=p+262144|0;f[m>>2]=g;e=g>>>0>67108863;if(e|q^1)j=e^1;else{l=t+44|0;j=t+16|0;k=t+28|0;e=r;i=0;while(1){b:do if(g>>>0<262144)do{if((e|0)<=0)break b;e=e+-1|0;f[l>>2]=e;g=h[s+e>>0]|0|g<<8;f[m>>2]=g}while(g>>>0<262144);while(0);p=g&65535;r=f[(f[j>>2]|0)+(p<<2)>>2]|0;q=f[k>>2]|0;g=(X(f[q+(r<<3)>>2]|0,g>>>16)|0)+p-(f[q+(r<<3)+4>>2]|0)|0;f[m>>2]=g;f[d+(i<<2)>>2]=r;i=i+1|0;if((i|0)==(a|0)){j=1;break}}}}else j=0}else j=0;while(0);e=f[t+28>>2]|0;if(e|0){i=t+32|0;g=f[i>>2]|0;if((g|0)!=(e|0))f[i>>2]=g+(~((g+-8-e|0)>>>3)<<3);ar(e)}e=f[t+16>>2]|0;if(e|0){i=t+20|0;g=f[i>>2]|0;if((g|0)!=(e|0))f[i>>2]=g+(~((g+-4-e|0)>>>2)<<2);ar(e)}i=f[t>>2]|0;if(!i){u=v;return j|0}g=t+4|0;e=f[g>>2]|0;if((e|0)!=(i|0))f[g>>2]=e+(~((e+-4-i|0)>>>2)<<2);ar(i);u=v;return j|0}function Uc(a,c,d){a=a|0;c=c|0;d=d|0;var e=0,g=0,i=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,v=0;v=u;u=u+64|0;t=v;e=t;g=e+40|0;do{f[e>>2]=0;e=e+4|0}while((e|0)<(g|0));a:do if(re(t,c)|0){q=(a|0)>0;if(q?(f[t+12>>2]|0)==0:0){j=0;break}j=c+8|0;i=f[j>>2]|0;j=f[j+4>>2]|0;l=c+16|0;e=l;k=f[e>>2]|0;e=Ho(k|0,f[e+4>>2]|0,8,0)|0;g=I;if((!((j|0)<(g|0)|(j|0)==(g|0)&i>>>0>>0)?(m=f[c>>2]|0,n=m+k|0,o=n,o=h[o>>0]|h[o+1>>0]<<8|h[o+2>>0]<<16|h[o+3>>0]<<24,n=n+4|0,n=h[n>>0]|h[n+1>>0]<<8|h[n+2>>0]<<16|h[n+3>>0]<<24,c=l,f[c>>2]=e,f[c+4>>2]=g,c=Xn(i|0,j|0,e|0,g|0)|0,k=I,!(n>>>0>k>>>0|(n|0)==(k|0)&o>>>0>c>>>0)):0)?(s=m+e|0,n=Ho(o|0,n|0,e|0,g|0)|0,c=l,f[c>>2]=n,f[c+4>>2]=I,(o|0)>=1):0){f[t+40>>2]=s;g=o+-1|0;e=s+g|0;switch((h[e>>0]|0)>>>6&3){case 0:{f[t+44>>2]=g;r=g;p=b[e>>0]&63;break}case 1:{if((o|0)<2){j=0;break a}r=o+-2|0;f[t+44>>2]=r;p=s+o+-2|0;p=(h[p+1>>0]|0)<<8&16128|(h[p>>0]|0);break}case 2:{if((o|0)<3){j=0;break a}r=o+-3|0;f[t+44>>2]=r;p=s+o+-3|0;p=(h[p+1>>0]|0)<<8|(h[p>>0]|0)|(h[p+2>>0]|0)<<16&4128768;break}case 3:{r=o+-4|0;f[t+44>>2]=r;p=s+o+-4|0;p=(h[p+2>>0]|0)<<16|(h[p+3>>0]|0)<<24&1056964608|(h[p+1>>0]|0)<<8|(h[p>>0]|0);break}default:{}}m=t+48|0;g=p+131072|0;f[m>>2]=g;e=g>>>0>33554431;if(e|q^1)j=e^1;else{l=t+44|0;j=t+16|0;k=t+28|0;e=r;i=0;while(1){b:do if(g>>>0<131072)do{if((e|0)<=0)break b;e=e+-1|0;f[l>>2]=e;g=h[s+e>>0]|0|g<<8;f[m>>2]=g}while(g>>>0<131072);while(0);p=g&32767;r=f[(f[j>>2]|0)+(p<<2)>>2]|0;q=f[k>>2]|0;g=(X(f[q+(r<<3)>>2]|0,g>>>15)|0)+p-(f[q+(r<<3)+4>>2]|0)|0;f[m>>2]=g;f[d+(i<<2)>>2]=r;i=i+1|0;if((i|0)==(a|0)){j=1;break}}}}else j=0}else j=0;while(0);e=f[t+28>>2]|0;if(e|0){i=t+32|0;g=f[i>>2]|0;if((g|0)!=(e|0))f[i>>2]=g+(~((g+-8-e|0)>>>3)<<3);ar(e)}e=f[t+16>>2]|0;if(e|0){i=t+20|0;g=f[i>>2]|0;if((g|0)!=(e|0))f[i>>2]=g+(~((g+-4-e|0)>>>2)<<2);ar(e)}i=f[t>>2]|0;if(!i){u=v;return j|0}g=t+4|0;e=f[g>>2]|0;if((e|0)!=(i|0))f[g>>2]=e+(~((e+-4-i|0)>>>2)<<2);ar(i);u=v;return j|0}function Vc(a,c,d){a=a|0;c=c|0;d=d|0;var e=0,g=0,i=0,j=0,k=0,l=0,m=0,o=0;o=u;u=u+32|0;j=o+24|0;k=o+20|0;l=o+16|0;m=o+12|0;e=o+8|0;g=o+4|0;i=o;if(!d){a=0;u=o;return a|0}switch(f[a+28>>2]|0){case 9:{e=f[c>>2]|0;switch(b[a+24>>0]|0){case 1:{c=a+48|0;m=f[c>>2]|0;c=f[c+4>>2]|0;l=a+40|0;a=(Ho(kn(f[l>>2]|0,f[l+4>>2]|0,e|0,((e|0)<0)<<31>>31|0)|0,I|0,m|0,c|0)|0)+(f[f[a>>2]>>2]|0)|0;f[d>>2]=h[a>>0]|h[a+1>>0]<<8|h[a+2>>0]<<16|h[a+3>>0]<<24;a=d+4|0;f[a>>2]=0;f[a+4>>2]=0;a=1;u=o;return a|0}case 2:{c=a+48|0;m=f[c>>2]|0;c=f[c+4>>2]|0;l=a+40|0;c=(Ho(kn(f[l>>2]|0,f[l+4>>2]|0,e|0,((e|0)<0)<<31>>31|0)|0,I|0,m|0,c|0)|0)+(f[f[a>>2]>>2]|0)|0;m=c;c=c+4|0;c=h[c>>0]|h[c+1>>0]<<8|h[c+2>>0]<<16|h[c+3>>0]<<24;a=d;f[a>>2]=h[m>>0]|h[m+1>>0]<<8|h[m+2>>0]<<16|h[m+3>>0]<<24;f[a+4>>2]=c;n[d+8>>2]=$(0.0);a=1;u=o;return a|0}case 3:{c=a+48|0;m=f[c>>2]|0;c=f[c+4>>2]|0;l=a+40|0;rm(d|0,(Ho(kn(f[l>>2]|0,f[l+4>>2]|0,e|0,((e|0)<0)<<31>>31|0)|0,I|0,m|0,c|0)|0)+(f[f[a>>2]>>2]|0)|0,12)|0;a=1;u=o;return a|0}case 4:{c=a+48|0;m=f[c>>2]|0;c=f[c+4>>2]|0;l=a+40|0;rm(d|0,(Ho(kn(f[l>>2]|0,f[l+4>>2]|0,e|0,((e|0)<0)<<31>>31|0)|0,I|0,m|0,c|0)|0)+(f[f[a>>2]>>2]|0)|0,12)|0;a=1;u=o;return a|0}default:{a=0;u=o;return a|0}}}case 2:{f[k>>2]=f[c>>2];f[j>>2]=f[k>>2];a=Kd(a,j,d)|0;u=o;return a|0}case 1:{f[l>>2]=f[c>>2];f[j>>2]=f[l>>2];a=Hd(a,j,d)|0;u=o;return a|0}case 4:{f[m>>2]=f[c>>2];f[j>>2]=f[m>>2];a=vd(a,j,d)|0;u=o;return a|0}case 3:{f[e>>2]=f[c>>2];f[j>>2]=f[e>>2];a=qd(a,j,d)|0;u=o;return a|0}case 6:{f[g>>2]=f[c>>2];f[j>>2]=f[g>>2];a=Sc(a,j,d)|0;u=o;return a|0}case 5:{f[i>>2]=f[c>>2];f[j>>2]=f[i>>2];a=bd(a,j,d)|0;u=o;return a|0}default:{a=0;u=o;return a|0}}return 0}function Wc(a,c,d){a=a|0;c=c|0;d=d|0;var e=0,g=0,i=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,v=0;v=u;u=u+64|0;t=v;e=t;g=e+40|0;do{f[e>>2]=0;e=e+4|0}while((e|0)<(g|0));a:do if(se(t,c)|0){q=(a|0)>0;if(q?(f[t+12>>2]|0)==0:0){j=0;break}j=c+8|0;i=f[j>>2]|0;j=f[j+4>>2]|0;l=c+16|0;e=l;k=f[e>>2]|0;e=Ho(k|0,f[e+4>>2]|0,8,0)|0;g=I;if((!((j|0)<(g|0)|(j|0)==(g|0)&i>>>0>>0)?(m=f[c>>2]|0,n=m+k|0,o=n,o=h[o>>0]|h[o+1>>0]<<8|h[o+2>>0]<<16|h[o+3>>0]<<24,n=n+4|0,n=h[n>>0]|h[n+1>>0]<<8|h[n+2>>0]<<16|h[n+3>>0]<<24,c=l,f[c>>2]=e,f[c+4>>2]=g,c=Xn(i|0,j|0,e|0,g|0)|0,k=I,!(n>>>0>k>>>0|(n|0)==(k|0)&o>>>0>c>>>0)):0)?(s=m+e|0,n=Ho(o|0,n|0,e|0,g|0)|0,c=l,f[c>>2]=n,f[c+4>>2]=I,(o|0)>=1):0){f[t+40>>2]=s;g=o+-1|0;e=s+g|0;switch((h[e>>0]|0)>>>6&3){case 0:{f[t+44>>2]=g;r=g;p=b[e>>0]&63;break}case 1:{if((o|0)<2){j=0;break a}r=o+-2|0;f[t+44>>2]=r;p=s+o+-2|0;p=(h[p+1>>0]|0)<<8&16128|(h[p>>0]|0);break}case 2:{if((o|0)<3){j=0;break a}r=o+-3|0;f[t+44>>2]=r;p=s+o+-3|0;p=(h[p+1>>0]|0)<<8|(h[p>>0]|0)|(h[p+2>>0]|0)<<16&4128768;break}case 3:{r=o+-4|0;f[t+44>>2]=r;p=s+o+-4|0;p=(h[p+2>>0]|0)<<16|(h[p+3>>0]|0)<<24&1056964608|(h[p+1>>0]|0)<<8|(h[p>>0]|0);break}default:{}}m=t+48|0;g=p+32768|0;f[m>>2]=g;e=g>>>0>8388607;if(e|q^1)j=e^1;else{l=t+44|0;j=t+16|0;k=t+28|0;e=r;i=0;while(1){b:do if(g>>>0<32768)do{if((e|0)<=0)break b;e=e+-1|0;f[l>>2]=e;g=h[s+e>>0]|0|g<<8;f[m>>2]=g}while(g>>>0<32768);while(0);p=g&8191;r=f[(f[j>>2]|0)+(p<<2)>>2]|0;q=f[k>>2]|0;g=(X(f[q+(r<<3)>>2]|0,g>>>13)|0)+p-(f[q+(r<<3)+4>>2]|0)|0;f[m>>2]=g;f[d+(i<<2)>>2]=r;i=i+1|0;if((i|0)==(a|0)){j=1;break}}}}else j=0}else j=0;while(0);e=f[t+28>>2]|0;if(e|0){i=t+32|0;g=f[i>>2]|0;if((g|0)!=(e|0))f[i>>2]=g+(~((g+-8-e|0)>>>3)<<3);ar(e)}e=f[t+16>>2]|0;if(e|0){i=t+20|0;g=f[i>>2]|0;if((g|0)!=(e|0))f[i>>2]=g+(~((g+-4-e|0)>>>2)<<2);ar(e)}i=f[t>>2]|0;if(!i){u=v;return j|0}g=t+4|0;e=f[g>>2]|0;if((e|0)!=(i|0))f[g>>2]=e+(~((e+-4-i|0)>>>2)<<2);ar(i);u=v;return j|0}function Xc(a,c,d){a=a|0;c=c|0;d=d|0;var e=0,g=0,i=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,v=0;v=u;u=u+64|0;t=v;e=t;g=e+40|0;do{f[e>>2]=0;e=e+4|0}while((e|0)<(g|0));a:do if(te(t,c)|0){q=(a|0)>0;if(q?(f[t+12>>2]|0)==0:0){j=0;break}j=c+8|0;i=f[j>>2]|0;j=f[j+4>>2]|0;l=c+16|0;e=l;k=f[e>>2]|0;e=Ho(k|0,f[e+4>>2]|0,8,0)|0;g=I;if((!((j|0)<(g|0)|(j|0)==(g|0)&i>>>0>>0)?(m=f[c>>2]|0,n=m+k|0,o=n,o=h[o>>0]|h[o+1>>0]<<8|h[o+2>>0]<<16|h[o+3>>0]<<24,n=n+4|0,n=h[n>>0]|h[n+1>>0]<<8|h[n+2>>0]<<16|h[n+3>>0]<<24,c=l,f[c>>2]=e,f[c+4>>2]=g,c=Xn(i|0,j|0,e|0,g|0)|0,k=I,!(n>>>0>k>>>0|(n|0)==(k|0)&o>>>0>c>>>0)):0)?(s=m+e|0,n=Ho(o|0,n|0,e|0,g|0)|0,c=l,f[c>>2]=n,f[c+4>>2]=I,(o|0)>=1):0){f[t+40>>2]=s;g=o+-1|0;e=s+g|0;switch((h[e>>0]|0)>>>6&3){case 0:{f[t+44>>2]=g;r=g;p=b[e>>0]&63;break}case 1:{if((o|0)<2){j=0;break a}r=o+-2|0;f[t+44>>2]=r;p=s+o+-2|0;p=(h[p+1>>0]|0)<<8&16128|(h[p>>0]|0);break}case 2:{if((o|0)<3){j=0;break a}r=o+-3|0;f[t+44>>2]=r;p=s+o+-3|0;p=(h[p+1>>0]|0)<<8|(h[p>>0]|0)|(h[p+2>>0]|0)<<16&4128768;break}case 3:{r=o+-4|0;f[t+44>>2]=r;p=s+o+-4|0;p=(h[p+2>>0]|0)<<16|(h[p+3>>0]|0)<<24&1056964608|(h[p+1>>0]|0)<<8|(h[p>>0]|0);break}default:{}}m=t+48|0;g=p+16384|0;f[m>>2]=g;e=g>>>0>4194303;if(e|q^1)j=e^1;else{l=t+44|0;j=t+16|0;k=t+28|0;e=r;i=0;while(1){b:do if(g>>>0<16384)do{if((e|0)<=0)break b;e=e+-1|0;f[l>>2]=e;g=h[s+e>>0]|0|g<<8;f[m>>2]=g}while(g>>>0<16384);while(0);p=g&4095;r=f[(f[j>>2]|0)+(p<<2)>>2]|0;q=f[k>>2]|0;g=(X(f[q+(r<<3)>>2]|0,g>>>12)|0)+p-(f[q+(r<<3)+4>>2]|0)|0;f[m>>2]=g;f[d+(i<<2)>>2]=r;i=i+1|0;if((i|0)==(a|0)){j=1;break}}}}else j=0}else j=0;while(0);e=f[t+28>>2]|0;if(e|0){i=t+32|0;g=f[i>>2]|0;if((g|0)!=(e|0))f[i>>2]=g+(~((g+-8-e|0)>>>3)<<3);ar(e)}e=f[t+16>>2]|0;if(e|0){i=t+20|0;g=f[i>>2]|0;if((g|0)!=(e|0))f[i>>2]=g+(~((g+-4-e|0)>>>2)<<2);ar(e)}i=f[t>>2]|0;if(!i){u=v;return j|0}g=t+4|0;e=f[g>>2]|0;if((e|0)!=(i|0))f[g>>2]=e+(~((e+-4-i|0)>>>2)<<2);ar(i);u=v;return j|0}function Yc(a,b,c,d,e,g){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;g=g|0;var h=0,i=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,B=0,C=0;x=e>>>0>1073741823?-1:e<<2;t=Zq(x)|0;ej(t|0,0,x|0)|0;u=Zq(x)|0;ej(u|0,0,x|0)|0;x=a+8|0;ji(x,t,b,c);s=f[a+32>>2]|0;v=a+40|0;h=f[v>>2]|0;g=f[h+4>>2]|0;d=f[h>>2]|0;r=g-d|0;w=r>>2;if((r|0)<=4){_q(u);_q(t);return 1}n=f[a+36>>2]|0;q=(e|0)>0;r=s+64|0;p=s+28|0;o=e<<2;a=1;while(1){if(g-d>>2>>>0<=a>>>0){Kp(h);d=f[h>>2]|0}m=f[d+(a<<2)>>2]|0;if(q)ej(t|0,0,o|0)|0;if((m|0)>-1){l=f[s>>2]|0;k=m;j=0;do{if(((f[l+(k>>>5<<2)>>2]&1<<(k&31)|0)==0?(B=f[(f[(f[r>>2]|0)+12>>2]|0)+(k<<2)>>2]|0,(B|0)>=0):0)?(A=f[p>>2]|0,i=f[n>>2]|0,y=f[i+(f[A+(B<<2)>>2]<<2)>>2]|0,z=B+1|0,z=f[i+(f[A+((((z|0)%3|0|0)==0?B+-2|0:z)<<2)>>2]<<2)>>2]|0,A=f[i+(f[A+((((B>>>0)%3|0|0)==0?2:-1)+B<<2)>>2]<<2)>>2]|0,(y|0)<(a|0)&(z|0)<(a|0)&(A|0)<(a|0)):0){g=X(y,e)|0;h=X(z,e)|0;i=X(A,e)|0;if(q){d=0;do{f[u+(d<<2)>>2]=(f[c+(d+i<<2)>>2]|0)+(f[c+(d+h<<2)>>2]|0)-(f[c+(d+g<<2)>>2]|0);d=d+1|0}while((d|0)!=(e|0));if(q){d=0;do{i=t+(d<<2)|0;f[i>>2]=(f[i>>2]|0)+(f[u+(d<<2)>>2]|0);d=d+1|0}while((d|0)!=(e|0))}}j=j+1|0}d=(((k>>>0)%3|0|0)==0?2:-1)+k|0;do if(!(f[l+(d>>>5<<2)>>2]&1<<(d&31))){if((d|0)>=0){d=f[(f[(f[r>>2]|0)+12>>2]|0)+(d<<2)>>2]|0;if((d|0)>=0)if(!((d>>>0)%3|0)){d=d+2|0;break}else{d=d+-1|0;break}}}else d=-1073741824;while(0);k=(d|0)==(m|0)?-1073741824:d}while((k|0)>-1);d=X(a,e)|0;if(!j)C=29;else{if(q){g=0;do{m=t+(g<<2)|0;f[m>>2]=(f[m>>2]|0)/(j|0)|0;g=g+1|0}while((g|0)!=(e|0))}ji(x,t,b+(d<<2)|0,c+(d<<2)|0)}}else{d=X(a,e)|0;C=29}if((C|0)==29){C=0;ji(x,c+((X(a+-1|0,e)|0)<<2)|0,b+(d<<2)|0,c+(d<<2)|0)}a=a+1|0;if((a|0)>=(w|0))break;d=f[v>>2]|0;g=f[d+4>>2]|0;h=d;d=f[d>>2]|0}_q(u);_q(t);return 1}function Zc(a,b,c,d,e,g){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;g=g|0;var h=0,i=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0;y=e>>>0>1073741823?-1:e<<2;u=Zq(y)|0;ej(u|0,0,y|0)|0;v=Zq(y)|0;ej(v|0,0,y|0)|0;y=a+8|0;ji(y,u,b,c);t=f[a+32>>2]|0;w=a+40|0;h=f[w>>2]|0;g=f[h+4>>2]|0;d=f[h>>2]|0;s=g-d|0;x=s>>2;if((s|0)<=4){_q(v);_q(u);return 1}p=f[a+36>>2]|0;s=(e|0)>0;r=t+12|0;q=e<<2;a=1;while(1){if(g-d>>2>>>0<=a>>>0){Kp(h);d=f[h>>2]|0}o=f[d+(a<<2)>>2]|0;if(s)ej(u|0,0,q|0)|0;if((o|0)>-1){n=f[r>>2]|0;m=o;l=0;while(1){g=f[n+(m<<2)>>2]|0;if((g|0)>=0){h=f[t>>2]|0;i=f[p>>2]|0;k=f[i+(f[h+(g<<2)>>2]<<2)>>2]|0;d=g+1|0;d=((d|0)%3|0|0)==0?g+-2|0:d;if((d|0)<0)d=-1073741824;else d=f[h+(d<<2)>>2]|0;j=f[i+(d<<2)>>2]|0;d=(((g>>>0)%3|0|0)==0?2:-1)+g|0;if((d|0)<0)d=-1073741824;else d=f[h+(d<<2)>>2]|0;d=f[i+(d<<2)>>2]|0;if((k|0)<(a|0)&(j|0)<(a|0)&(d|0)<(a|0)){i=X(k,e)|0;h=X(j,e)|0;g=X(d,e)|0;if(s){d=0;do{f[v+(d<<2)>>2]=(f[c+(d+g<<2)>>2]|0)+(f[c+(d+h<<2)>>2]|0)-(f[c+(d+i<<2)>>2]|0);d=d+1|0}while((d|0)!=(e|0));if(s){d=0;do{k=u+(d<<2)|0;f[k>>2]=(f[k>>2]|0)+(f[v+(d<<2)>>2]|0);d=d+1|0}while((d|0)!=(e|0))}}h=l+1|0}else h=l}else h=l;d=(((m>>>0)%3|0|0)==0?2:-1)+m|0;do if((d|0)>=0){d=f[n+(d<<2)>>2]|0;if((d|0)>=0)if(!((d>>>0)%3|0)){d=d+2|0;break}else{d=d+-1|0;break}}while(0);m=(d|0)==(o|0)?-1073741824:d;if((m|0)<=-1)break;else l=h}d=X(a,e)|0;if(!h)z=31;else{if(s){g=0;do{o=u+(g<<2)|0;f[o>>2]=(f[o>>2]|0)/(h|0)|0;g=g+1|0}while((g|0)!=(e|0))}ji(y,u,b+(d<<2)|0,c+(d<<2)|0)}}else{d=X(a,e)|0;z=31}if((z|0)==31){z=0;ji(y,c+((X(a+-1|0,e)|0)<<2)|0,b+(d<<2)|0,c+(d<<2)|0)}a=a+1|0;if((a|0)>=(x|0))break;d=f[w>>2]|0;g=f[d+4>>2]|0;h=d;d=f[d>>2]|0}_q(v);_q(u);return 1}function _c(a,c,d,e){a=a|0;c=c|0;d=d|0;e=e|0;var g=0,i=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,v=0,w=0,x=0,y=0,z=0,A=0,B=0,C=0,D=0,E=0,F=0;F=u;u=u+64|0;E=F;g=E;i=g+40|0;do{f[g>>2]=0;g=g+4|0}while((g|0)<(i|0));a:do if(te(E,d)|0?Of(E,d)|0:0){g=(a|0)>0;b:do if(g){if(!(f[E+12>>2]|0)){k=0;break a}Ug(d,0,0)|0;if(g){z=E+44|0;C=E+48|0;y=E+40|0;s=E+16|0;t=E+28|0;A=(c|0)>0;D=d+36|0;x=d+32|0;v=d+24|0;w=d+28|0;i=f[C>>2]|0;B=0;g=0;while(1){c:do if(i>>>0<16384){j=f[z>>2]|0;do{if((j|0)<=0)break c;r=f[y>>2]|0;j=j+-1|0;f[z>>2]=j;i=h[r+j>>0]|i<<8;f[C>>2]=i}while(i>>>0<16384)}while(0);p=i&4095;r=f[(f[s>>2]|0)+(p<<2)>>2]|0;q=f[t>>2]|0;i=(X(f[q+(r<<3)>>2]|0,i>>>12)|0)+p-(f[q+(r<<3)+4>>2]|0)|0;f[C>>2]=i;if(A){p=(r|0)>0;if((r|0)<=-1){g=22;break}if((r|0)<33){q=0;o=g}else{g=21;break}while(1){if(!(b[D>>0]|0)){k=0;break a}if(p){l=f[v>>2]|0;m=f[w>>2]|0;k=f[x>>2]|0;n=0;j=0;do{g=l+(k>>>3)|0;if(g>>>0>>0){g=(h[g>>0]|0)>>>(k&7)&1;k=k+1|0;f[x>>2]=k}else g=0;j=g<>2]=j;q=q+1|0;if((q|0)>=(c|0))break;else o=g}}B=B+c|0;if((B|0)>=(a|0))break b}if((g|0)==21){if(!(b[D>>0]|0)){k=0;break a}Ga(6084,6042,148,6076)}else if((g|0)==22){if(!(b[D>>0]|0)){k=0;break a}Ga(6027,6042,147,6076)}}}else Ug(d,0,0)|0;while(0);hm(d);k=1}else k=0;while(0);g=f[E+28>>2]|0;if(g|0){j=E+32|0;i=f[j>>2]|0;if((i|0)!=(g|0))f[j>>2]=i+(~((i+-8-g|0)>>>3)<<3);ar(g)}g=f[E+16>>2]|0;if(g|0){j=E+20|0;i=f[j>>2]|0;if((i|0)!=(g|0))f[j>>2]=i+(~((i+-4-g|0)>>>2)<<2);ar(g)}j=f[E>>2]|0;if(!j){u=F;return k|0}i=E+4|0;g=f[i>>2]|0;if((g|0)!=(j|0))f[i>>2]=g+(~((g+-4-j|0)>>>2)<<2);ar(j);u=F;return k|0}function $c(a,c){a=a|0;c=c|0;var d=0,e=0,g=0,h=0,i=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0;e=a+4|0;if(!c){d=f[a>>2]|0;f[a>>2]=0;if(d|0)ar(d);f[e>>2]=0;return}if(c>>>0>1073741823){a=Ia(4)|0;Eq(a);sa(a|0,1344,125)}s=ln(c<<2)|0;d=f[a>>2]|0;f[a>>2]=s;if(d|0)ar(d);f[e>>2]=c;d=0;do{f[(f[a>>2]|0)+(d<<2)>>2]=0;d=d+1|0}while((d|0)!=(c|0));e=a+8|0;h=f[e>>2]|0;if(!h)return;d=f[h+4>>2]|0;r=c+-1|0;s=(r&c|0)==0;if(s)g=d&r;else g=(d>>>0)%(c>>>0)|0;f[(f[a>>2]|0)+(g<<2)>>2]=e;d=f[h>>2]|0;if(!d)return;else{i=h;e=d;d=h}a:while(1){q=d;b:while(1){d=e;while(1){e=f[d+4>>2]|0;if(s)p=e&r;else p=(e>>>0)%(c>>>0)|0;if((p|0)==(g|0))break;e=(f[a>>2]|0)+(p<<2)|0;if(!(f[e>>2]|0))break b;e=f[d>>2]|0;c:do if(!e)e=d;else{n=d+8|0;m=b[n+11>>0]|0;k=m<<24>>24<0;m=m&255;o=k?f[d+12>>2]|0:m;l=(o|0)==0;if(k){h=d;while(1){j=e+8|0;m=b[j+11>>0]|0;k=m<<24>>24<0;if((o|0)!=((k?f[e+12>>2]|0:m&255)|0)){e=h;break c}if(!l?rl(f[n>>2]|0,k?f[j>>2]|0:j,o)|0:0){e=h;break c}h=f[e>>2]|0;if(!h)break c;else{m=e;e=h;h=m}}}if(l){h=d;while(1){o=b[e+8+11>>0]|0;if((o<<24>>24<0?f[e+12>>2]|0:o&255)|0){e=h;break c}h=f[e>>2]|0;if(!h)break c;else{o=e;e=h;h=o}}}l=d;while(1){h=e+8|0;k=b[h+11>>0]|0;j=k<<24>>24<0;if((o|0)!=((j?f[e+12>>2]|0:k&255)|0)){e=l;break c}h=j?f[h>>2]|0:h;if((f[n>>2]&255)<<24>>24==(b[h>>0]|0)){j=m;k=n}else{e=l;break c}while(1){j=j+-1|0;k=k+1|0;if(!j)break;h=h+1|0;if((b[k>>0]|0)!=(b[h>>0]|0)){e=l;break c}}h=f[e>>2]|0;if(!h)break;else{l=e;e=h}}}while(0);f[q>>2]=f[e>>2];f[e>>2]=f[f[(f[a>>2]|0)+(p<<2)>>2]>>2];f[f[(f[a>>2]|0)+(p<<2)>>2]>>2]=d;d=f[i>>2]|0;if(!d){d=41;break a}}e=f[d>>2]|0;if(!e){d=41;break a}else{i=d;q=d}}f[e>>2]=q;e=f[d>>2]|0;if(!e){d=41;break}else{i=d;g=p}}if((d|0)==41)return}function ad(a,b){a=a|0;b=b|0;var c=0,e=0,g=0,h=0,i=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0;e=a+4|0;if(!b){c=f[a>>2]|0;f[a>>2]=0;if(c|0)ar(c);f[e>>2]=0;return}if(b>>>0>1073741823){a=Ia(4)|0;Eq(a);sa(a|0,1344,125)}p=ln(b<<2)|0;c=f[a>>2]|0;f[a>>2]=p;if(c|0)ar(c);f[e>>2]=b;c=0;do{f[(f[a>>2]|0)+(c<<2)>>2]=0;c=c+1|0}while((c|0)!=(b|0));e=a+8|0;h=f[e>>2]|0;if(!h)return;c=f[h+4>>2]|0;o=b+-1|0;p=(o&b|0)==0;if(p)g=c&o;else g=(c>>>0)%(b>>>0)|0;f[(f[a>>2]|0)+(g<<2)>>2]=e;c=f[h>>2]|0;if(!c)return;else{i=h;e=c;c=h}a:while(1){n=c;b:while(1){c:do if(p){c=e;while(1){m=f[c+4>>2]&o;if((m|0)==(g|0))break c;e=(f[a>>2]|0)+(m<<2)|0;if(!(f[e>>2]|0)){g=m;break b}l=c+10|0;k=c+12|0;e=f[c>>2]|0;d:do if(!e)e=c;else{j=d[c+8>>1]|0;h=c;while(1){if(j<<16>>16!=(d[e+8>>1]|0)){e=h;break d}if((d[l>>1]|0)!=(d[e+10>>1]|0)){e=h;break d}if((d[k>>1]|0)!=(d[e+12>>1]|0)){e=h;break d}h=f[e>>2]|0;if(!h)break;else{q=e;e=h;h=q}}}while(0);f[n>>2]=f[e>>2];f[e>>2]=f[f[(f[a>>2]|0)+(m<<2)>>2]>>2];f[f[(f[a>>2]|0)+(m<<2)>>2]>>2]=c;c=f[i>>2]|0;if(!c){c=38;break a}}}else{c=e;while(1){m=((f[c+4>>2]|0)>>>0)%(b>>>0)|0;if((m|0)==(g|0))break c;e=(f[a>>2]|0)+(m<<2)|0;if(!(f[e>>2]|0)){g=m;break b}l=c+10|0;k=c+12|0;e=f[c>>2]|0;e:do if(!e)e=c;else{j=d[c+8>>1]|0;h=c;while(1){if(j<<16>>16!=(d[e+8>>1]|0)){e=h;break e}if((d[l>>1]|0)!=(d[e+10>>1]|0)){e=h;break e}if((d[k>>1]|0)!=(d[e+12>>1]|0)){e=h;break e}h=f[e>>2]|0;if(!h)break;else{q=e;e=h;h=q}}}while(0);f[n>>2]=f[e>>2];f[e>>2]=f[f[(f[a>>2]|0)+(m<<2)>>2]>>2];f[f[(f[a>>2]|0)+(m<<2)>>2]>>2]=c;c=f[i>>2]|0;if(!c){c=38;break a}}}while(0);e=f[c>>2]|0;if(!e){c=38;break a}else{i=c;n=c}}f[e>>2]=n;e=f[c>>2]|0;if(!e){c=38;break}else i=c}if((c|0)==38)return}function bd(a,c,d){a=a|0;c=c|0;d=d|0;var e=La,g=0,i=La,j=0,k=0;switch(b[a+24>>0]|0){case 1:{j=f[c>>2]|0;g=a+48|0;c=f[g>>2]|0;g=f[g+4>>2]|0;k=a+40|0;g=(Ho(kn(f[k>>2]|0,f[k+4>>2]|0,j|0,((j|0)<0)<<31>>31|0)|0,I|0,c|0,g|0)|0)+(f[f[a>>2]>>2]|0)|0;i=$(h[g>>0]|h[g+1>>0]<<8|h[g+2>>0]<<16|h[g+3>>0]<<24|0);e=$(i*$(4.65661287e-10));n[d>>2]=(b[a+32>>0]|0)==0?i:e;d=d+4|0;f[d>>2]=0;f[d+4>>2]=0;d=1;return d|0}case 2:{j=f[c>>2]|0;c=a+48|0;k=f[c>>2]|0;c=f[c+4>>2]|0;g=a+40|0;c=(Ho(kn(f[g>>2]|0,f[g+4>>2]|0,j|0,((j|0)<0)<<31>>31|0)|0,I|0,k|0,c|0)|0)+(f[f[a>>2]>>2]|0)|0;k=c;c=c+4|0;c=h[c>>0]|h[c+1>>0]<<8|h[c+2>>0]<<16|h[c+3>>0]<<24;e=$(h[k>>0]|h[k+1>>0]<<8|h[k+2>>0]<<16|h[k+3>>0]<<24|0);if(!(b[a+32>>0]|0)){n[d>>2]=e;e=$(c|0)}else{e=$(e*$(4.65661287e-10));n[d>>2]=e;e=$($(c|0)*$(4.65661287e-10))}n[d+4>>2]=e;n[d+8>>2]=$(0.0);k=1;return k|0}case 3:{g=f[c>>2]|0;k=a+48|0;c=f[k>>2]|0;k=f[k+4>>2]|0;j=a+40|0;k=(Ho(kn(f[j>>2]|0,f[j+4>>2]|0,g|0,((g|0)<0)<<31>>31|0)|0,I|0,c|0,k|0)|0)+(f[f[a>>2]>>2]|0)|0;c=k+4|0;c=h[c>>0]|h[c+1>>0]<<8|h[c+2>>0]<<16|h[c+3>>0]<<24;g=k+8|0;g=h[g>>0]|h[g+1>>0]<<8|h[g+2>>0]<<16|h[g+3>>0]<<24;e=$(h[k>>0]|h[k+1>>0]<<8|h[k+2>>0]<<16|h[k+3>>0]<<24|0);if(!(b[a+32>>0]|0)){n[d>>2]=e;i=$(c|0);n[d+4>>2]=i;i=$(g|0);n[d+8>>2]=i;k=1;return k|0}else{i=$(e*$(4.65661287e-10));n[d>>2]=i;i=$($(c|0)*$(4.65661287e-10));n[d+4>>2]=i;i=$($(g|0)*$(4.65661287e-10));n[d+8>>2]=i;k=1;return k|0}}case 4:{g=f[c>>2]|0;k=a+48|0;c=f[k>>2]|0;k=f[k+4>>2]|0;j=a+40|0;k=(Ho(kn(f[j>>2]|0,f[j+4>>2]|0,g|0,((g|0)<0)<<31>>31|0)|0,I|0,c|0,k|0)|0)+(f[f[a>>2]>>2]|0)|0;c=k+4|0;c=h[c>>0]|h[c+1>>0]<<8|h[c+2>>0]<<16|h[c+3>>0]<<24;g=k+8|0;g=h[g>>0]|h[g+1>>0]<<8|h[g+2>>0]<<16|h[g+3>>0]<<24;e=$(h[k>>0]|h[k+1>>0]<<8|h[k+2>>0]<<16|h[k+3>>0]<<24|0);if(!(b[a+32>>0]|0)){n[d>>2]=e;i=$(c|0);n[d+4>>2]=i;i=$(g|0);n[d+8>>2]=i;k=1;return k|0}else{i=$(e*$(4.65661287e-10));n[d>>2]=i;i=$($(c|0)*$(4.65661287e-10));n[d+4>>2]=i;i=$($(g|0)*$(4.65661287e-10));n[d+8>>2]=i;k=1;return k|0}}default:{k=0;return k|0}}return 0}function cd(a,b){a=a|0;b=b|0;var c=0,d=0,e=0,g=0,h=0,i=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0;d=a+4|0;if(!b){c=f[a>>2]|0;f[a>>2]=0;if(c|0)ar(c);f[d>>2]=0;return}if(b>>>0>1073741823){a=Ia(4)|0;Eq(a);sa(a|0,1344,125)}o=ln(b<<2)|0;c=f[a>>2]|0;f[a>>2]=o;if(c|0)ar(c);f[d>>2]=b;c=0;do{f[(f[a>>2]|0)+(c<<2)>>2]=0;c=c+1|0}while((c|0)!=(b|0));d=a+8|0;g=f[d>>2]|0;if(!g)return;c=f[g+4>>2]|0;n=b+-1|0;o=(n&b|0)==0;if(o)e=c&n;else e=(c>>>0)%(b>>>0)|0;f[(f[a>>2]|0)+(e<<2)>>2]=d;c=f[g>>2]|0;if(!c)return;else{h=g;d=c;c=g}a:while(1){m=c;b:while(1){c:do if(o){c=d;while(1){l=f[c+4>>2]&n;if((l|0)==(e|0))break c;d=(f[a>>2]|0)+(l<<2)|0;if(!(f[d>>2]|0)){e=l;break b}k=c+12|0;j=c+16|0;d=f[c>>2]|0;d:do if(!d)d=c;else{i=f[c+8>>2]|0;g=c;while(1){if((i|0)!=(f[d+8>>2]|0)){d=g;break d}if((f[k>>2]|0)!=(f[d+12>>2]|0)){d=g;break d}if((f[j>>2]|0)!=(f[d+16>>2]|0)){d=g;break d}g=f[d>>2]|0;if(!g)break;else{p=d;d=g;g=p}}}while(0);f[m>>2]=f[d>>2];f[d>>2]=f[f[(f[a>>2]|0)+(l<<2)>>2]>>2];f[f[(f[a>>2]|0)+(l<<2)>>2]>>2]=c;c=f[h>>2]|0;if(!c){c=38;break a}}}else{c=d;while(1){l=((f[c+4>>2]|0)>>>0)%(b>>>0)|0;if((l|0)==(e|0))break c;d=(f[a>>2]|0)+(l<<2)|0;if(!(f[d>>2]|0)){e=l;break b}k=c+12|0;j=c+16|0;d=f[c>>2]|0;e:do if(!d)d=c;else{i=f[c+8>>2]|0;g=c;while(1){if((i|0)!=(f[d+8>>2]|0)){d=g;break e}if((f[k>>2]|0)!=(f[d+12>>2]|0)){d=g;break e}if((f[j>>2]|0)!=(f[d+16>>2]|0)){d=g;break e}g=f[d>>2]|0;if(!g)break;else{p=d;d=g;g=p}}}while(0);f[m>>2]=f[d>>2];f[d>>2]=f[f[(f[a>>2]|0)+(l<<2)>>2]>>2];f[f[(f[a>>2]|0)+(l<<2)>>2]>>2]=c;c=f[h>>2]|0;if(!c){c=38;break a}}}while(0);d=f[c>>2]|0;if(!d){c=38;break a}else{h=c;m=c}}f[d>>2]=m;d=f[c>>2]|0;if(!d){c=38;break}else h=c}if((c|0)==38)return}function dd(a,c){a=a|0;c=c|0;var d=0,e=0,g=0,h=0,i=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0;e=a+4|0;if(!c){d=f[a>>2]|0;f[a>>2]=0;if(d|0)ar(d);f[e>>2]=0;return}if(c>>>0>1073741823){a=Ia(4)|0;Eq(a);sa(a|0,1344,125)}p=ln(c<<2)|0;d=f[a>>2]|0;f[a>>2]=p;if(d|0)ar(d);f[e>>2]=c;d=0;do{f[(f[a>>2]|0)+(d<<2)>>2]=0;d=d+1|0}while((d|0)!=(c|0));e=a+8|0;h=f[e>>2]|0;if(!h)return;d=f[h+4>>2]|0;o=c+-1|0;p=(o&c|0)==0;if(p)g=d&o;else g=(d>>>0)%(c>>>0)|0;f[(f[a>>2]|0)+(g<<2)>>2]=e;d=f[h>>2]|0;if(!d)return;else{i=h;e=d;d=h}a:while(1){n=d;b:while(1){c:do if(p){d=e;while(1){m=f[d+4>>2]&o;if((m|0)==(g|0))break c;e=(f[a>>2]|0)+(m<<2)|0;if(!(f[e>>2]|0)){g=m;break b}l=d+9|0;k=d+10|0;e=f[d>>2]|0;d:do if(!e)e=d;else{j=b[d+8>>0]|0;h=d;while(1){if(j<<24>>24!=(b[e+8>>0]|0)){e=h;break d}if((b[l>>0]|0)!=(b[e+9>>0]|0)){e=h;break d}if((b[k>>0]|0)!=(b[e+10>>0]|0)){e=h;break d}h=f[e>>2]|0;if(!h)break;else{q=e;e=h;h=q}}}while(0);f[n>>2]=f[e>>2];f[e>>2]=f[f[(f[a>>2]|0)+(m<<2)>>2]>>2];f[f[(f[a>>2]|0)+(m<<2)>>2]>>2]=d;d=f[i>>2]|0;if(!d){d=38;break a}}}else{d=e;while(1){m=((f[d+4>>2]|0)>>>0)%(c>>>0)|0;if((m|0)==(g|0))break c;e=(f[a>>2]|0)+(m<<2)|0;if(!(f[e>>2]|0)){g=m;break b}l=d+9|0;k=d+10|0;e=f[d>>2]|0;e:do if(!e)e=d;else{j=b[d+8>>0]|0;h=d;while(1){if(j<<24>>24!=(b[e+8>>0]|0)){e=h;break e}if((b[l>>0]|0)!=(b[e+9>>0]|0)){e=h;break e}if((b[k>>0]|0)!=(b[e+10>>0]|0)){e=h;break e}h=f[e>>2]|0;if(!h)break;else{q=e;e=h;h=q}}}while(0);f[n>>2]=f[e>>2];f[e>>2]=f[f[(f[a>>2]|0)+(m<<2)>>2]>>2];f[f[(f[a>>2]|0)+(m<<2)>>2]>>2]=d;d=f[i>>2]|0;if(!d){d=38;break a}}}while(0);e=f[d>>2]|0;if(!e){d=38;break a}else{i=d;n=d}}f[e>>2]=n;e=f[d>>2]|0;if(!e){d=38;break}else i=d}if((d|0)==38)return}function ed(a,b,c,d,e,g){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;g=g|0;var h=0,i=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,B=0,C=0;x=e>>>0>1073741823?-1:e<<2;t=Zq(x)|0;ej(t|0,0,x|0)|0;u=Zq(x)|0;ej(u|0,0,x|0)|0;x=a+8|0;mi(x,t,b,c);s=f[a+32>>2]|0;v=a+40|0;h=f[v>>2]|0;g=f[h+4>>2]|0;d=f[h>>2]|0;r=g-d|0;w=r>>2;if((r|0)<=4){_q(u);_q(t);return 1}n=f[a+36>>2]|0;q=(e|0)>0;r=s+64|0;p=s+28|0;o=e<<2;a=1;while(1){if(g-d>>2>>>0<=a>>>0){Kp(h);d=f[h>>2]|0}m=f[d+(a<<2)>>2]|0;if(q)ej(t|0,0,o|0)|0;if((m|0)>-1){l=f[s>>2]|0;k=m;j=0;do{if(((f[l+(k>>>5<<2)>>2]&1<<(k&31)|0)==0?(B=f[(f[(f[r>>2]|0)+12>>2]|0)+(k<<2)>>2]|0,(B|0)>=0):0)?(A=f[p>>2]|0,i=f[n>>2]|0,y=f[i+(f[A+(B<<2)>>2]<<2)>>2]|0,z=B+1|0,z=f[i+(f[A+((((z|0)%3|0|0)==0?B+-2|0:z)<<2)>>2]<<2)>>2]|0,A=f[i+(f[A+((((B>>>0)%3|0|0)==0?2:-1)+B<<2)>>2]<<2)>>2]|0,(y|0)<(a|0)&(z|0)<(a|0)&(A|0)<(a|0)):0){g=X(y,e)|0;h=X(z,e)|0;i=X(A,e)|0;if(q){d=0;do{f[u+(d<<2)>>2]=(f[c+(d+i<<2)>>2]|0)+(f[c+(d+h<<2)>>2]|0)-(f[c+(d+g<<2)>>2]|0);d=d+1|0}while((d|0)!=(e|0));if(q){d=0;do{i=t+(d<<2)|0;f[i>>2]=(f[i>>2]|0)+(f[u+(d<<2)>>2]|0);d=d+1|0}while((d|0)!=(e|0))}}j=j+1|0}d=(((k>>>0)%3|0|0)==0?2:-1)+k|0;do if(!(f[l+(d>>>5<<2)>>2]&1<<(d&31))){if((d|0)>=0){d=f[(f[(f[r>>2]|0)+12>>2]|0)+(d<<2)>>2]|0;if((d|0)>=0)if(!((d>>>0)%3|0)){d=d+2|0;break}else{d=d+-1|0;break}}}else d=-1073741824;while(0);k=(d|0)==(m|0)?-1073741824:d}while((k|0)>-1);d=X(a,e)|0;if(!j)C=29;else{if(q){g=0;do{m=t+(g<<2)|0;f[m>>2]=(f[m>>2]|0)/(j|0)|0;g=g+1|0}while((g|0)!=(e|0))}mi(x,t,b+(d<<2)|0,c+(d<<2)|0)}}else{d=X(a,e)|0;C=29}if((C|0)==29){C=0;mi(x,c+((X(a+-1|0,e)|0)<<2)|0,b+(d<<2)|0,c+(d<<2)|0)}a=a+1|0;if((a|0)>=(w|0))break;d=f[v>>2]|0;g=f[d+4>>2]|0;h=d;d=f[d>>2]|0}_q(u);_q(t);return 1}function fd(a,b,c,d,e,g){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;g=g|0;var h=0,i=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0;y=e>>>0>1073741823?-1:e<<2;u=Zq(y)|0;ej(u|0,0,y|0)|0;v=Zq(y)|0;ej(v|0,0,y|0)|0;y=a+8|0;mi(y,u,b,c);t=f[a+32>>2]|0;w=a+40|0;h=f[w>>2]|0;g=f[h+4>>2]|0;d=f[h>>2]|0;s=g-d|0;x=s>>2;if((s|0)<=4){_q(v);_q(u);return 1}p=f[a+36>>2]|0;s=(e|0)>0;r=t+12|0;q=e<<2;a=1;while(1){if(g-d>>2>>>0<=a>>>0){Kp(h);d=f[h>>2]|0}o=f[d+(a<<2)>>2]|0;if(s)ej(u|0,0,q|0)|0;if((o|0)>-1){n=f[r>>2]|0;m=o;l=0;while(1){g=f[n+(m<<2)>>2]|0;if((g|0)>=0){h=f[t>>2]|0;i=f[p>>2]|0;k=f[i+(f[h+(g<<2)>>2]<<2)>>2]|0;d=g+1|0;d=((d|0)%3|0|0)==0?g+-2|0:d;if((d|0)<0)d=-1073741824;else d=f[h+(d<<2)>>2]|0;j=f[i+(d<<2)>>2]|0;d=(((g>>>0)%3|0|0)==0?2:-1)+g|0;if((d|0)<0)d=-1073741824;else d=f[h+(d<<2)>>2]|0;d=f[i+(d<<2)>>2]|0;if((k|0)<(a|0)&(j|0)<(a|0)&(d|0)<(a|0)){i=X(k,e)|0;h=X(j,e)|0;g=X(d,e)|0;if(s){d=0;do{f[v+(d<<2)>>2]=(f[c+(d+g<<2)>>2]|0)+(f[c+(d+h<<2)>>2]|0)-(f[c+(d+i<<2)>>2]|0);d=d+1|0}while((d|0)!=(e|0));if(s){d=0;do{k=u+(d<<2)|0;f[k>>2]=(f[k>>2]|0)+(f[v+(d<<2)>>2]|0);d=d+1|0}while((d|0)!=(e|0))}}h=l+1|0}else h=l}else h=l;d=(((m>>>0)%3|0|0)==0?2:-1)+m|0;do if((d|0)>=0){d=f[n+(d<<2)>>2]|0;if((d|0)>=0)if(!((d>>>0)%3|0)){d=d+2|0;break}else{d=d+-1|0;break}}while(0);m=(d|0)==(o|0)?-1073741824:d;if((m|0)<=-1)break;else l=h}d=X(a,e)|0;if(!h)z=31;else{if(s){g=0;do{o=u+(g<<2)|0;f[o>>2]=(f[o>>2]|0)/(h|0)|0;g=g+1|0}while((g|0)!=(e|0))}mi(y,u,b+(d<<2)|0,c+(d<<2)|0)}}else{d=X(a,e)|0;z=31}if((z|0)==31){z=0;mi(y,c+((X(a+-1|0,e)|0)<<2)|0,b+(d<<2)|0,c+(d<<2)|0)}a=a+1|0;if((a|0)>=(x|0))break;d=f[w>>2]|0;g=f[d+4>>2]|0;h=d;d=f[d>>2]|0}_q(v);_q(u);return 1}function gd(a,c,d){a=a|0;c=c|0;d=d|0;var e=La,g=La,i=0,j=0,k=0,l=0;switch(b[a+24>>0]|0){case 1:{j=f[c>>2]|0;i=a+48|0;c=f[i>>2]|0;i=f[i+4>>2]|0;k=a+40|0;i=(Ho(kn(f[k>>2]|0,f[k+4>>2]|0,j|0,((j|0)<0)<<31>>31|0)|0,I|0,c|0,i|0)|0)+(f[f[a>>2]>>2]|0)|0;e=$((h[i>>0]|h[i+1>>0]<<8)<<16>>16);g=$(e/$(32767.0));n[d>>2]=(b[a+32>>0]|0)==0?e:g;d=d+4|0;f[d>>2]=0;f[d+4>>2]=0;f[d+8>>2]=0;d=1;return d|0}case 2:{j=f[c>>2]|0;k=a+48|0;c=f[k>>2]|0;k=f[k+4>>2]|0;i=a+40|0;k=(Ho(kn(f[i>>2]|0,f[i+4>>2]|0,j|0,((j|0)<0)<<31>>31|0)|0,I|0,c|0,k|0)|0)+(f[f[a>>2]>>2]|0)|0;k=h[k>>0]|h[k+1>>0]<<8|h[k+2>>0]<<16|h[k+3>>0]<<24;c=k>>>16&65535;e=$((k&65535)<<16>>16);if(!(b[a+32>>0]|0)){n[d>>2]=e;e=$(c<<16>>16)}else{e=$(e/$(32767.0));n[d>>2]=e;e=$($(c<<16>>16)/$(32767.0))}n[d+4>>2]=e;k=d+8|0;f[k>>2]=0;f[k+4>>2]=0;k=1;return k|0}case 3:{i=f[c>>2]|0;k=a+48|0;c=f[k>>2]|0;k=f[k+4>>2]|0;j=a+40|0;k=(Ho(kn(f[j>>2]|0,f[j+4>>2]|0,i|0,((i|0)<0)<<31>>31|0)|0,I|0,c|0,k|0)|0)+(f[f[a>>2]>>2]|0)|0;c=k+2|0;c=h[c>>0]|h[c+1>>0]<<8;i=k+4|0;i=h[i>>0]|h[i+1>>0]<<8;e=$((h[k>>0]|h[k+1>>0]<<8)<<16>>16);if(!(b[a+32>>0]|0)){n[d>>2]=e;g=$(c<<16>>16);e=$(i<<16>>16)}else{g=$(e/$(32767.0));n[d>>2]=g;g=$($(c<<16>>16)/$(32767.0));e=$($(i<<16>>16)/$(32767.0))}n[d+4>>2]=g;n[d+8>>2]=e;n[d+12>>2]=$(0.0);k=1;return k|0}case 4:{k=f[c>>2]|0;l=a+48|0;j=f[l>>2]|0;l=f[l+4>>2]|0;c=a+40|0;l=(Ho(kn(f[c>>2]|0,f[c+4>>2]|0,k|0,((k|0)<0)<<31>>31|0)|0,I|0,j|0,l|0)|0)+(f[f[a>>2]>>2]|0)|0;j=l;j=h[j>>0]|h[j+1>>0]<<8|h[j+2>>0]<<16|h[j+3>>0]<<24;l=l+4|0;l=h[l>>0]|h[l+1>>0]<<8|h[l+2>>0]<<16|h[l+3>>0]<<24;k=(b[a+32>>0]|0)==0;c=(Tn(j|0,l|0,16)|0)&65535;i=l&65535;a=(Tn(j|0,l|0,48)|0)&65535;e=$((j&65535)<<16>>16);if(k){n[d>>2]=e;g=$(c<<16>>16);n[d+4>>2]=g;g=$(i<<16>>16);n[d+8>>2]=g;g=$(a<<16>>16);n[d+12>>2]=g;l=1;return l|0}else{g=$(e/$(32767.0));n[d>>2]=g;g=$($(c<<16>>16)/$(32767.0));n[d+4>>2]=g;g=$($(i<<16>>16)/$(32767.0));n[d+8>>2]=g;g=$($(a<<16>>16)/$(32767.0));n[d+12>>2]=g;l=1;return l|0}}default:{l=0;return l|0}}return 0}function hd(a,c){a=a|0;c=c|0;var d=0,e=0,g=0,h=0,i=0,j=0,k=0,l=0,m=0;e=f[a>>2]|0;i=a+4|0;d=f[i>>2]|0;h=c+4|0;if((d|0)==(e|0)){g=h;d=a;j=f[h>>2]|0;h=e;f[d>>2]=j;f[g>>2]=h;h=c+8|0;e=f[i>>2]|0;d=f[h>>2]|0;f[i>>2]=d;f[h>>2]=e;h=a+8|0;a=c+12|0;i=f[h>>2]|0;e=f[a>>2]|0;f[h>>2]=e;f[a>>2]=i;a=f[g>>2]|0;f[c>>2]=a;return}g=f[h>>2]|0;do{l=d;d=d+-116|0;f[g+-116>>2]=f[d>>2];j=l+-112|0;f[g+-112>>2]=f[j>>2];k=l+-108|0;f[g+-108>>2]=f[k>>2];m=l+-104|0;f[g+-104>>2]=f[m>>2];f[j>>2]=0;f[k>>2]=0;f[m>>2]=0;m=l+-100|0;f[g+-100>>2]=f[m>>2];k=l+-96|0;f[g+-96>>2]=f[k>>2];j=l+-92|0;f[g+-92>>2]=f[j>>2];f[m>>2]=0;f[k>>2]=0;f[j>>2]=0;b[g+-88>>0]=b[l+-88>>0]|0;j=g+-84|0;k=l+-84|0;f[j>>2]=0;m=g+-80|0;f[m>>2]=0;f[g+-76>>2]=0;f[j>>2]=f[k>>2];j=l+-80|0;f[m>>2]=f[j>>2];m=l+-76|0;f[g+-76>>2]=f[m>>2];f[m>>2]=0;f[j>>2]=0;f[k>>2]=0;k=g+-72|0;j=l+-72|0;f[k>>2]=0;m=g+-68|0;f[m>>2]=0;f[g+-64>>2]=0;f[k>>2]=f[j>>2];k=l+-68|0;f[m>>2]=f[k>>2];m=l+-64|0;f[g+-64>>2]=f[m>>2];f[m>>2]=0;f[k>>2]=0;f[j>>2]=0;j=g+-60|0;k=l+-60|0;f[j>>2]=0;m=g+-56|0;f[m>>2]=0;f[g+-52>>2]=0;f[j>>2]=f[k>>2];j=l+-56|0;f[m>>2]=f[j>>2];m=l+-52|0;f[g+-52>>2]=f[m>>2];f[m>>2]=0;f[j>>2]=0;f[k>>2]=0;f[g+-48>>2]=f[l+-48>>2];b[g+-44>>0]=b[l+-44>>0]|0;k=g+-40|0;j=l+-40|0;f[k>>2]=0;m=g+-36|0;f[m>>2]=0;f[g+-32>>2]=0;f[k>>2]=f[j>>2];k=l+-36|0;f[m>>2]=f[k>>2];m=l+-32|0;f[g+-32>>2]=f[m>>2];f[m>>2]=0;f[k>>2]=0;f[j>>2]=0;j=g+-28|0;k=l+-28|0;f[j>>2]=0;m=g+-24|0;f[m>>2]=0;f[g+-20>>2]=0;f[j>>2]=f[k>>2];j=l+-24|0;f[m>>2]=f[j>>2];m=l+-20|0;f[g+-20>>2]=f[m>>2];f[m>>2]=0;f[j>>2]=0;f[k>>2]=0;f[g+-16>>2]=f[l+-16>>2];k=g+-12|0;j=l+-12|0;f[k>>2]=0;m=g+-8|0;f[m>>2]=0;f[g+-4>>2]=0;f[k>>2]=f[j>>2];k=l+-8|0;f[m>>2]=f[k>>2];l=l+-4|0;f[g+-4>>2]=f[l>>2];f[l>>2]=0;f[k>>2]=0;f[j>>2]=0;g=(f[h>>2]|0)+-116|0;f[h>>2]=g}while((d|0)!=(e|0));m=h;l=a;k=g;j=f[a>>2]|0;f[l>>2]=k;f[m>>2]=j;j=c+8|0;l=f[i>>2]|0;k=f[j>>2]|0;f[i>>2]=k;f[j>>2]=l;j=a+8|0;l=c+12|0;k=f[j>>2]|0;a=f[l>>2]|0;f[j>>2]=a;f[l>>2]=k;m=f[m>>2]|0;f[c>>2]=m;return}function id(a,b){a=a|0;b=b|0;var c=0,d=0,e=0,g=0,h=0,i=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0;r=u;u=u+48|0;m=r+32|0;h=r+28|0;p=r+16|0;q=r;j=a+16|0;d=f[j>>2]|0;if(d|0){g=f[b>>2]|0;c=j;a:while(1){e=d;while(1){if((f[e+16>>2]|0)>=(g|0))break;d=f[e+4>>2]|0;if(!d)break a;else e=d}d=f[e>>2]|0;if(!d){c=e;break}else c=e}if((c|0)!=(j|0)?(g|0)>=(f[c+16>>2]|0):0){q=c;q=q+20|0;u=r;return q|0}}Ep(p);f[q>>2]=f[b>>2];l=q+4|0;f[q+8>>2]=0;k=q+12|0;f[k>>2]=0;n=q+8|0;f[l>>2]=n;c=f[p>>2]|0;o=p+4|0;if((c|0)!=(o|0)){g=n;e=c;d=c;while(1){c=e+16|0;f[h>>2]=g;f[m>>2]=f[h>>2];fh(l,m,c,c)|0;c=f[d+4>>2]|0;if(!c)while(1){c=f[d+8>>2]|0;if((f[c>>2]|0)==(d|0))break;else d=c}else while(1){d=f[c>>2]|0;if(!d)break;else c=d}if((c|0)==(o|0))break;else{e=c;d=c}}}i=a+12|0;c=f[j>>2]|0;do if(c){e=f[q>>2]|0;g=c;while(1){c=f[g+16>>2]|0;if((e|0)<(c|0)){c=f[g>>2]|0;if(!c){c=19;break}}else{if((c|0)>=(e|0)){c=24;break}d=g+4|0;c=f[d>>2]|0;if(!c){c=23;break}}g=c}if((c|0)==19){f[m>>2]=g;h=g;b=g;break}else if((c|0)==23){f[m>>2]=g;h=g;b=d;break}else if((c|0)==24){f[m>>2]=g;h=g;b=m;break}}else{f[m>>2]=j;h=j;b=j}while(0);c=f[b>>2]|0;if(!c){c=ln(32)|0;f[c+16>>2]=f[q>>2];g=c+20|0;f[g>>2]=f[l>>2];e=c+24|0;d=f[q+8>>2]|0;f[e>>2]=d;m=f[k>>2]|0;f[c+28>>2]=m;if(!m)f[g>>2]=e;else{f[d+8>>2]=e;f[l>>2]=n;f[n>>2]=0;f[k>>2]=0}f[c>>2]=0;f[c+4>>2]=0;f[c+8>>2]=h;f[b>>2]=c;d=f[f[i>>2]>>2]|0;if(!d)d=c;else{f[i>>2]=d;d=f[b>>2]|0}Me(f[a+16>>2]|0,d);a=a+20|0;f[a>>2]=(f[a>>2]|0)+1}tj(q+4|0,f[n>>2]|0);tj(p,f[o>>2]|0);q=c;q=q+20|0;u=r;return q|0}function jd(a,c,d){a=a|0;c=c|0;d=d|0;var e=La,g=La,i=0,j=0,k=0,l=0;switch(b[a+24>>0]|0){case 1:{j=f[c>>2]|0;i=a+48|0;c=f[i>>2]|0;i=f[i+4>>2]|0;k=a+40|0;i=(Ho(kn(f[k>>2]|0,f[k+4>>2]|0,j|0,((j|0)<0)<<31>>31|0)|0,I|0,c|0,i|0)|0)+(f[f[a>>2]>>2]|0)|0;e=$((h[i>>0]|h[i+1>>0]<<8)&65535);g=$(e/$(65535.0));n[d>>2]=(b[a+32>>0]|0)==0?e:g;d=d+4|0;f[d>>2]=0;f[d+4>>2]=0;f[d+8>>2]=0;d=1;return d|0}case 2:{j=f[c>>2]|0;k=a+48|0;c=f[k>>2]|0;k=f[k+4>>2]|0;i=a+40|0;k=(Ho(kn(f[i>>2]|0,f[i+4>>2]|0,j|0,((j|0)<0)<<31>>31|0)|0,I|0,c|0,k|0)|0)+(f[f[a>>2]>>2]|0)|0;k=h[k>>0]|h[k+1>>0]<<8|h[k+2>>0]<<16|h[k+3>>0]<<24;c=k>>>16&65535;e=$(k&65535);if(!(b[a+32>>0]|0)){n[d>>2]=e;e=$(c&65535)}else{e=$(e/$(65535.0));n[d>>2]=e;e=$($(c&65535)/$(65535.0))}n[d+4>>2]=e;k=d+8|0;f[k>>2]=0;f[k+4>>2]=0;k=1;return k|0}case 3:{i=f[c>>2]|0;k=a+48|0;c=f[k>>2]|0;k=f[k+4>>2]|0;j=a+40|0;k=(Ho(kn(f[j>>2]|0,f[j+4>>2]|0,i|0,((i|0)<0)<<31>>31|0)|0,I|0,c|0,k|0)|0)+(f[f[a>>2]>>2]|0)|0;c=k+2|0;c=h[c>>0]|h[c+1>>0]<<8;i=k+4|0;i=h[i>>0]|h[i+1>>0]<<8;e=$((h[k>>0]|h[k+1>>0]<<8)&65535);if(!(b[a+32>>0]|0)){n[d>>2]=e;g=$(c&65535);e=$(i&65535)}else{g=$(e/$(65535.0));n[d>>2]=g;g=$($(c&65535)/$(65535.0));e=$($(i&65535)/$(65535.0))}n[d+4>>2]=g;n[d+8>>2]=e;n[d+12>>2]=$(0.0);k=1;return k|0}case 4:{k=f[c>>2]|0;l=a+48|0;j=f[l>>2]|0;l=f[l+4>>2]|0;c=a+40|0;l=(Ho(kn(f[c>>2]|0,f[c+4>>2]|0,k|0,((k|0)<0)<<31>>31|0)|0,I|0,j|0,l|0)|0)+(f[f[a>>2]>>2]|0)|0;j=l;j=h[j>>0]|h[j+1>>0]<<8|h[j+2>>0]<<16|h[j+3>>0]<<24;l=l+4|0;l=h[l>>0]|h[l+1>>0]<<8|h[l+2>>0]<<16|h[l+3>>0]<<24;k=(b[a+32>>0]|0)==0;c=(Tn(j|0,l|0,16)|0)&65535;i=l&65535;a=(Tn(j|0,l|0,48)|0)&65535;e=$(j&65535);if(k){n[d>>2]=e;g=$(c&65535);n[d+4>>2]=g;g=$(i&65535);n[d+8>>2]=g;g=$(a&65535);n[d+12>>2]=g;l=1;return l|0}else{g=$(e/$(65535.0));n[d>>2]=g;g=$($(c&65535)/$(65535.0));n[d+4>>2]=g;g=$($(i&65535)/$(65535.0));n[d+8>>2]=g;g=$($(a&65535)/$(65535.0));n[d+12>>2]=g;l=1;return l|0}}default:{l=0;return l|0}}return 0}function kd(a,b,c){a=a|0;b=b|0;c=c|0;var d=0,e=0,g=0,h=0,i=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,v=0,w=0,x=0,y=0;y=u;u=u+16|0;r=y+12|0;s=y+4|0;p=y+8|0;q=y;x=a+8+(b*12|0)|0;d=f[x>>2]|0;t=a+8+(b*12|0)+4|0;e=f[t>>2]|0;if((e|0)!=(d|0))f[t>>2]=e+(~((e+-4-d|0)>>>2)<<2);d=f[c>>2]|0;m=a+4|0;f[s>>2]=(d|0)<0?-1073741824:(d>>>0)/3|0;w=a+56|0;l=a+8+(b*12|0)+8|0;e=d;o=0;do{n=(o|0)==1;if(n){g=(d|0)<0;do if(!g)if(!((d>>>0)%3|0)){e=d+2|0;break}else{e=d+-1|0;break}else e=d;while(0);f[p>>2]=e;f[r>>2]=f[p>>2];if((Fg(a,r)|0)<0)break;e=d+1|0;if(g){v=12;break}e=((e|0)%3|0|0)==0?d+-2|0:e;f[c>>2]=e;g=e+1|0;if((e|0)<0){v=16;break}e=((g|0)%3|0|0)==0?e+-2|0:g;if((e|0)<0){v=16;break}e=f[(f[(f[m>>2]|0)+12>>2]|0)+(e<<2)>>2]|0;g=e+1|0;if((e|0)<0){v=16;break}e=((g|0)%3|0|0)==0?e+-2|0:g;f[c>>2]=e;if((e|0)<0)break;else{g=0;v=18}}else{i=f[s>>2]|0;k=e;j=0}while(1){if((v|0)==18){v=0;i=(e>>>0)/3|0;f[s>>2]=i;k=e;j=g}h=(f[w>>2]|0)+(i>>>5<<2)|0;g=1<<(i&31);e=f[h>>2]|0;if(g&e|0){e=k;g=j;break}f[h>>2]=e|g;e=f[t>>2]|0;if((e|0)==(f[l>>2]|0))Ii(x,s);else{f[e>>2]=f[s>>2];f[t>>2]=e+4}g=j+1|0;if((j|0)>0){do if(!(g&1)){d=n?k:d;if((k|0)>=0)if(!((k>>>0)%3|0)){e=k+2|0;break}else{e=k+-1|0;break}else e=k}else{e=k+1|0;if((k|0)<0)e=k;else e=((e|0)%3|0|0)==0?k+-2|0:e}while(0);f[c>>2]=e}else e=k;f[q>>2]=e;f[r>>2]=f[q>>2];e=Fg(a,r)|0;f[c>>2]=e;if((e|0)<0)break;else v=18}if(!((g&1|0)==0|n^1)){n=f[t>>2]|0;j=f[n+-4>>2]|0;k=(f[w>>2]|0)+(j>>>5<<2)|0;f[k>>2]=f[k>>2]&~(1<<(j&31));f[t>>2]=n+-4}o=o+1|0}while((o|0)<2);if((v|0)==12){f[c>>2]=d;e=d;v=16}if((v|0)==16)f[c>>2]=e;f[a+44+(b<<2)>>2]=d;e=f[t>>2]|0;d=f[x>>2]|0;h=d;if((e|0)==(d|0)){u=y;return}g=f[w>>2]|0;e=e-d>>2;d=0;do{w=f[h+(d<<2)>>2]|0;x=g+(w>>>5<<2)|0;f[x>>2]=f[x>>2]&~(1<<(w&31));d=d+1|0}while(d>>>0>>0);u=y;return}function ld(a,c,d,e){a=a|0;c=c|0;d=d|0;e=e|0;var g=0,h=0,i=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0;n=a+4|0;s=f[c>>2]|0;c=s;do if((s|0)!=(n|0)){i=s+16|0;o=b[e+11>>0]|0;p=o<<24>>24<0;o=p?f[e+4>>2]|0:o&255;h=b[i+11>>0]|0;l=h<<24>>24<0;h=l?f[s+20>>2]|0:h&255;k=h>>>0>>0;g=k?h:o;if((g|0)!=0?(j=rl(p?f[e>>2]|0:e,l?f[i>>2]|0:i,g)|0,(j|0)!=0):0){if((j|0)<0)break}else t=4;if((t|0)==4?o>>>0>>0:0)break;g=o>>>0>>0?o:h;if((g|0)!=0?(m=rl(l?f[i>>2]|0:i,p?f[e>>2]|0:e,g)|0,(m|0)!=0):0){if((m|0)>=0)t=34}else t=20;if((t|0)==20?!k:0)t=34;if((t|0)==34){f[d>>2]=c;return d|0}k=s+4|0;c=f[k>>2]|0;l=(c|0)==0;if(l){g=s;while(1){c=f[g+8>>2]|0;if((f[c>>2]|0)==(g|0))break;else g=c}}else while(1){g=f[c>>2]|0;if(!g)break;else c=g}do if((c|0)!=(n|0)){h=c+16|0;i=b[h+11>>0]|0;j=i<<24>>24<0;i=j?f[c+20>>2]|0:i&255;g=i>>>0>>0?i:o;if((g|0)!=0?(q=rl(p?f[e>>2]|0:e,j?f[h>>2]|0:h,g)|0,(q|0)!=0):0){if((q|0)<0)break}else t=28;if((t|0)==28?o>>>0>>0:0)break;d=yg(a,d,e)|0;return d|0}while(0);if(l){f[d>>2]=s;d=k;return d|0}else{f[d>>2]=c;d=c;return d|0}}while(0);do if((s|0)!=(f[a>>2]|0)){c=f[s>>2]|0;if(!c){g=s;while(1){c=f[g+8>>2]|0;if((f[c>>2]|0)==(g|0))g=c;else{g=c;break}}}else while(1){g=f[c+4>>2]|0;if(!g){g=c;break}else c=g}c=g;k=g+16|0;h=b[k+11>>0]|0;l=h<<24>>24<0;h=l?f[g+20>>2]|0:h&255;i=b[e+11>>0]|0;j=i<<24>>24<0;i=j?f[e+4>>2]|0:i&255;g=i>>>0>>0?i:h;if((g|0)!=0?(r=rl(l?f[k>>2]|0:k,j?f[e>>2]|0:e,g)|0,(r|0)!=0):0){if((r|0)<0)break}else t=12;if((t|0)==12?h>>>0>>0:0)break;d=yg(a,d,e)|0;return d|0}while(0);if(!(f[s>>2]|0)){f[d>>2]=s;d=s;return d|0}else{t=c;f[d>>2]=t;d=t+4|0;return d|0}return 0}function md(a,c,d){a=a|0;c=c|0;d=d|0;var e=0,g=0,i=0;switch(b[a+24>>0]|0){case 1:{g=f[c>>2]|0;c=a+48|0;e=f[c>>2]|0;c=f[c+4>>2]|0;i=a+40|0;c=(Ho(kn(f[i>>2]|0,f[i+4>>2]|0,g|0,((g|0)<0)<<31>>31|0)|0,I|0,e|0,c|0)|0)+(f[f[a>>2]>>2]|0)|0;c=h[c>>0]|h[c+1>>0]<<8|h[c+2>>0]<<16|h[c+3>>0]<<24;a=d;f[a>>2]=c;f[a+4>>2]=((c|0)<0)<<31>>31;a=d+8|0;f[a>>2]=0;f[a+4>>2]=0;f[a+8>>2]=0;f[a+12>>2]=0;f[a+16>>2]=0;f[a+20>>2]=0;a=1;return a|0}case 2:{e=f[c>>2]|0;g=a+48|0;i=f[g>>2]|0;g=f[g+4>>2]|0;c=a+40|0;g=(Ho(kn(f[c>>2]|0,f[c+4>>2]|0,e|0,((e|0)<0)<<31>>31|0)|0,I|0,i|0,g|0)|0)+(f[f[a>>2]>>2]|0)|0;i=g;i=h[i>>0]|h[i+1>>0]<<8|h[i+2>>0]<<16|h[i+3>>0]<<24;g=g+4|0;g=h[g>>0]|h[g+1>>0]<<8|h[g+2>>0]<<16|h[g+3>>0]<<24;a=An(0,i|0,32)|0;e=d;f[e>>2]=a;f[e+4>>2]=I;g=An(i|0,g|0,32)|0;i=d+8|0;f[i>>2]=g;f[i+4>>2]=I;i=d+16|0;f[i>>2]=0;f[i+4>>2]=0;f[i+8>>2]=0;f[i+12>>2]=0;i=1;return i|0}case 3:{i=f[c>>2]|0;g=a+48|0;e=f[g>>2]|0;g=f[g+4>>2]|0;c=a+40|0;g=(Ho(kn(f[c>>2]|0,f[c+4>>2]|0,i|0,((i|0)<0)<<31>>31|0)|0,I|0,e|0,g|0)|0)+(f[f[a>>2]>>2]|0)|0;a=h[g>>0]|h[g+1>>0]<<8|h[g+2>>0]<<16|h[g+3>>0]<<24;e=g+4|0;e=h[e>>0]|h[e+1>>0]<<8|h[e+2>>0]<<16|h[e+3>>0]<<24;g=g+8|0;g=h[g>>0]|h[g+1>>0]<<8|h[g+2>>0]<<16|h[g+3>>0]<<24;i=d;f[i>>2]=a;f[i+4>>2]=((a|0)<0)<<31>>31;i=d+8|0;f[i>>2]=e;f[i+4>>2]=((e|0)<0)<<31>>31;i=d+16|0;f[i>>2]=g;f[i+4>>2]=((g|0)<0)<<31>>31;i=d+24|0;f[i>>2]=0;f[i+4>>2]=0;i=1;return i|0}case 4:{e=f[c>>2]|0;g=a+48|0;c=f[g>>2]|0;g=f[g+4>>2]|0;i=a+40|0;g=(Ho(kn(f[i>>2]|0,f[i+4>>2]|0,e|0,((e|0)<0)<<31>>31|0)|0,I|0,c|0,g|0)|0)+(f[f[a>>2]>>2]|0)|0;c=h[g>>0]|h[g+1>>0]<<8|h[g+2>>0]<<16|h[g+3>>0]<<24;a=g+4|0;a=h[a>>0]|h[a+1>>0]<<8|h[a+2>>0]<<16|h[a+3>>0]<<24;e=g+8|0;e=h[e>>0]|h[e+1>>0]<<8|h[e+2>>0]<<16|h[e+3>>0]<<24;g=g+12|0;g=h[g>>0]|h[g+1>>0]<<8|h[g+2>>0]<<16|h[g+3>>0]<<24;i=d;f[i>>2]=c;f[i+4>>2]=((c|0)<0)<<31>>31;i=d+8|0;f[i>>2]=a;f[i+4>>2]=((a|0)<0)<<31>>31;i=d+16|0;f[i>>2]=e;f[i+4>>2]=((e|0)<0)<<31>>31;i=d+24|0;f[i>>2]=g;f[i+4>>2]=((g|0)<0)<<31>>31;i=1;return i|0}default:{i=0;return i|0}}return 0}function nd(a,b,c,d,e){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;var g=0,h=0,i=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0;l=a;j=b;k=j;h=c;n=d;i=n;if(!k){g=(e|0)!=0;if(!i){if(g){f[e>>2]=(l>>>0)%(h>>>0);f[e+4>>2]=0}n=0;e=(l>>>0)/(h>>>0)>>>0;return (I=n,e)|0}else{if(!g){n=0;e=0;return (I=n,e)|0}f[e>>2]=a|0;f[e+4>>2]=b&0;n=0;e=0;return (I=n,e)|0}}g=(i|0)==0;do if(h){if(!g){g=(_(i|0)|0)-(_(k|0)|0)|0;if(g>>>0<=31){m=g+1|0;i=31-g|0;b=g-31>>31;h=m;a=l>>>(m>>>0)&b|k<>>(m>>>0)&b;g=0;i=l<>2]=a|0;f[e+4>>2]=j|b&0;n=0;e=0;return (I=n,e)|0}g=h-1|0;if(g&h|0){i=(_(h|0)|0)+33-(_(k|0)|0)|0;p=64-i|0;m=32-i|0;j=m>>31;o=i-32|0;b=o>>31;h=i;a=m-1>>31&k>>>(o>>>0)|(k<>>(i>>>0))&b;b=b&k>>>(i>>>0);g=l<>>(o>>>0))&j|l<>31;break}if(e|0){f[e>>2]=g&l;f[e+4>>2]=0}if((h|0)==1){o=j|b&0;p=a|0|0;return (I=o,p)|0}else{p=Cm(h|0)|0;o=k>>>(p>>>0)|0;p=k<<32-p|l>>>(p>>>0)|0;return (I=o,p)|0}}else{if(g){if(e|0){f[e>>2]=(k>>>0)%(h>>>0);f[e+4>>2]=0}o=0;p=(k>>>0)/(h>>>0)>>>0;return (I=o,p)|0}if(!l){if(e|0){f[e>>2]=0;f[e+4>>2]=(k>>>0)%(i>>>0)}o=0;p=(k>>>0)/(i>>>0)>>>0;return (I=o,p)|0}g=i-1|0;if(!(g&i)){if(e|0){f[e>>2]=a|0;f[e+4>>2]=g&k|b&0}o=0;p=k>>>((Cm(i|0)|0)>>>0);return (I=o,p)|0}g=(_(i|0)|0)-(_(k|0)|0)|0;if(g>>>0<=30){b=g+1|0;i=31-g|0;h=b;a=k<>>(b>>>0);b=k>>>(b>>>0);g=0;i=l<>2]=a|0;f[e+4>>2]=j|b&0;o=0;p=0;return (I=o,p)|0}while(0);if(!h){k=i;j=0;i=0}else{m=c|0|0;l=n|d&0;k=Ho(m|0,l|0,-1,-1)|0;c=I;j=i;i=0;do{d=j;j=g>>>31|j<<1;g=i|g<<1;d=a<<1|d>>>31|0;n=a>>>31|b<<1|0;Xn(k|0,c|0,d|0,n|0)|0;p=I;o=p>>31|((p|0)<0?-1:0)<<1;i=o&1;a=Xn(d|0,n|0,o&m|0,(((p|0)<0?-1:0)>>31|((p|0)<0?-1:0)<<1)&l|0)|0;b=I;h=h-1|0}while((h|0)!=0);k=j;j=0}h=0;if(e|0){f[e>>2]=a;f[e+4>>2]=b}o=(g|0)>>>31|(k|h)<<1|(h<<1|g>>>31)&0|j;p=(g<<1|0>>>31)&-2|i;return (I=o,p)|0}function od(a,c,d){a=a|0;c=c|0;d=d|0;var e=0,g=0,i=0,j=0,k=0,l=0,m=0,n=0;n=u;u=u+32|0;j=n+24|0;k=n+20|0;l=n+16|0;m=n+12|0;e=n+8|0;g=n+4|0;i=n;if(!d){d=0;u=n;return d|0}switch(f[a+28>>2]|0){case 9:{e=f[c>>2]|0;switch(b[a+24>>0]|0){case 1:{c=a+48|0;m=f[c>>2]|0;c=f[c+4>>2]|0;l=a+40|0;e=(Ho(kn(f[l>>2]|0,f[l+4>>2]|0,e|0,((e|0)<0)<<31>>31|0)|0,I|0,m|0,c|0)|0)+(f[f[a>>2]>>2]|0)|0;e=h[e>>0]|h[e+1>>0]<<8|h[e+2>>0]<<16|h[e+3>>0]<<24;break}case 2:{c=a+48|0;m=f[c>>2]|0;c=f[c+4>>2]|0;l=a+40|0;e=(Ho(kn(f[l>>2]|0,f[l+4>>2]|0,e|0,((e|0)<0)<<31>>31|0)|0,I|0,m|0,c|0)|0)+(f[f[a>>2]>>2]|0)|0;e=h[e>>0]|h[e+1>>0]<<8|h[e+2>>0]<<16|h[e+3>>0]<<24;break}case 3:{c=a+48|0;m=f[c>>2]|0;c=f[c+4>>2]|0;l=a+40|0;e=(Ho(kn(f[l>>2]|0,f[l+4>>2]|0,e|0,((e|0)<0)<<31>>31|0)|0,I|0,m|0,c|0)|0)+(f[f[a>>2]>>2]|0)|0;e=h[e>>0]|h[e+1>>0]<<8|h[e+2>>0]<<16|h[e+3>>0]<<24;break}case 4:{c=a+48|0;m=f[c>>2]|0;c=f[c+4>>2]|0;l=a+40|0;e=(Ho(kn(f[l>>2]|0,f[l+4>>2]|0,e|0,((e|0)<0)<<31>>31|0)|0,I|0,m|0,c|0)|0)+(f[f[a>>2]>>2]|0)|0;e=h[e>>0]|h[e+1>>0]<<8|h[e+2>>0]<<16|h[e+3>>0]<<24;break}default:{d=0;u=n;return d|0}}f[d>>2]=e;d=1;u=n;return d|0}case 2:{f[k>>2]=f[c>>2];f[j>>2]=f[k>>2];d=Cf(a,j,d)|0;u=n;return d|0}case 1:{f[l>>2]=f[c>>2];f[j>>2]=f[l>>2];d=Af(a,j,d)|0;u=n;return d|0}case 4:{f[m>>2]=f[c>>2];f[j>>2]=f[m>>2];d=pf(a,j,d)|0;u=n;return d|0}case 3:{f[e>>2]=f[c>>2];f[j>>2]=f[e>>2];d=nf(a,j,d)|0;u=n;return d|0}case 6:{f[g>>2]=f[c>>2];f[j>>2]=f[g>>2];d=ef(a,j,d)|0;u=n;return d|0}case 5:{f[i>>2]=f[c>>2];f[j>>2]=f[i>>2];d=gf(a,j,d)|0;u=n;return d|0}default:{d=0;u=n;return d|0}}return 0}function pd(a,b,c){a=a|0;b=b|0;c=c|0;var d=0,e=0,g=0,h=0,i=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0;t=u;u=u+16|0;o=t+8|0;p=t+4|0;r=t;q=a+68|0;f[q>>2]=(f[q>>2]|0)+1;q=(f[a+8+(b*12|0)+4>>2]|0)-(f[a+8+(b*12|0)>>2]|0)|0;s=q>>2;if((q|0)<=0){u=t;return}n=a+4|0;m=a+56|0;q=a+72|0;k=f[c>>2]|0;i=k+4|0;j=k+8|0;l=a+76|0;c=f[a+44+(b<<2)>>2]|0;h=0;do{g=(c|0)<0;b=g?-1073741824:(c>>>0)/3|0;d=(f[m>>2]|0)+(b>>>5<<2)|0;f[d>>2]=f[d>>2]|1<<(b&31);f[q>>2]=(f[q>>2]|0)+1;do if(h){f[p>>2]=c;b=f[n>>2]|0;d=f[a>>2]|0;f[o>>2]=f[p>>2];d=wk(o,b,d)|0;f[l>>2]=d;f[o>>2]=d;b=f[i>>2]|0;if(b>>>0<(f[j>>2]|0)>>>0){f[b>>2]=d;f[i>>2]=b+4}else Ii(k,o);if(!(h&1)){b=c+1|0;if(g)break;c=((b|0)%3|0|0)==0?c+-2|0:b;e=31;break}if(!g)if(!((c>>>0)%3|0)){c=c+2|0;e=31;break}else{c=c+-1|0;e=31;break}}else{f[p>>2]=c;b=f[n>>2]|0;d=f[a>>2]|0;f[o>>2]=f[p>>2];d=wk(o,b,d)|0;f[r>>2]=d;b=f[i>>2]|0;if(b>>>0<(f[j>>2]|0)>>>0){f[b>>2]=d;f[i>>2]=b+4}else Ii(k,r);b=c+1|0;if(g)b=c;else b=((b|0)%3|0|0)==0?c+-2|0:b;f[p>>2]=b;b=f[n>>2]|0;d=f[a>>2]|0;f[o>>2]=f[p>>2];d=wk(o,b,d)|0;f[r>>2]=d;b=f[i>>2]|0;if(b>>>0<(f[j>>2]|0)>>>0){f[b>>2]=d;f[i>>2]=b+4}else Ii(k,r);do if(!g)if(!((c>>>0)%3|0)){b=c+2|0;break}else{b=c+-1|0;break}else b=c;while(0);f[p>>2]=b;b=f[n>>2]|0;d=f[a>>2]|0;f[o>>2]=f[p>>2];d=wk(o,b,d)|0;f[l>>2]=d;f[o>>2]=d;b=f[i>>2]|0;if(b>>>0<(f[j>>2]|0)>>>0){f[b>>2]=d;f[i>>2]=b+4}else Ii(k,o);e=31}while(0);if((e|0)==31){e=0;if((c|0)>=0)c=f[(f[(f[n>>2]|0)+12>>2]|0)+(c<<2)>>2]|0}h=h+1|0}while((h|0)<(s|0));u=t;return}function qd(a,c,d){a=a|0;c=c|0;d=d|0;var e=La,g=0,i=La,j=0,k=0;switch(b[a+24>>0]|0){case 1:{j=f[c>>2]|0;g=a+48|0;c=f[g>>2]|0;g=f[g+4>>2]|0;k=a+40|0;g=(Ho(kn(f[k>>2]|0,f[k+4>>2]|0,j|0,((j|0)<0)<<31>>31|0)|0,I|0,c|0,g|0)|0)+(f[f[a>>2]>>2]|0)|0;i=$((h[g>>0]|h[g+1>>0]<<8)<<16>>16);e=$(i/$(32767.0));n[d>>2]=(b[a+32>>0]|0)==0?i:e;d=d+4|0;f[d>>2]=0;f[d+4>>2]=0;d=1;return d|0}case 2:{j=f[c>>2]|0;k=a+48|0;c=f[k>>2]|0;k=f[k+4>>2]|0;g=a+40|0;k=(Ho(kn(f[g>>2]|0,f[g+4>>2]|0,j|0,((j|0)<0)<<31>>31|0)|0,I|0,c|0,k|0)|0)+(f[f[a>>2]>>2]|0)|0;k=h[k>>0]|h[k+1>>0]<<8|h[k+2>>0]<<16|h[k+3>>0]<<24;c=k>>>16&65535;e=$((k&65535)<<16>>16);if(!(b[a+32>>0]|0)){n[d>>2]=e;e=$(c<<16>>16)}else{e=$(e/$(32767.0));n[d>>2]=e;e=$($(c<<16>>16)/$(32767.0))}n[d+4>>2]=e;n[d+8>>2]=$(0.0);k=1;return k|0}case 3:{g=f[c>>2]|0;k=a+48|0;c=f[k>>2]|0;k=f[k+4>>2]|0;j=a+40|0;k=(Ho(kn(f[j>>2]|0,f[j+4>>2]|0,g|0,((g|0)<0)<<31>>31|0)|0,I|0,c|0,k|0)|0)+(f[f[a>>2]>>2]|0)|0;c=k+2|0;c=h[c>>0]|h[c+1>>0]<<8;g=k+4|0;g=h[g>>0]|h[g+1>>0]<<8;e=$((h[k>>0]|h[k+1>>0]<<8)<<16>>16);if(!(b[a+32>>0]|0)){n[d>>2]=e;i=$(c<<16>>16);n[d+4>>2]=i;i=$(g<<16>>16);n[d+8>>2]=i;k=1;return k|0}else{i=$(e/$(32767.0));n[d>>2]=i;i=$($(c<<16>>16)/$(32767.0));n[d+4>>2]=i;i=$($(g<<16>>16)/$(32767.0));n[d+8>>2]=i;k=1;return k|0}}case 4:{k=f[c>>2]|0;g=a+48|0;j=f[g>>2]|0;g=f[g+4>>2]|0;c=a+40|0;g=(Ho(kn(f[c>>2]|0,f[c+4>>2]|0,k|0,((k|0)<0)<<31>>31|0)|0,I|0,j|0,g|0)|0)+(f[f[a>>2]>>2]|0)|0;j=g;j=h[j>>0]|h[j+1>>0]<<8|h[j+2>>0]<<16|h[j+3>>0]<<24;g=g+4|0;g=h[g>>0]|h[g+1>>0]<<8|h[g+2>>0]<<16|h[g+3>>0]<<24;k=(b[a+32>>0]|0)==0;c=(Tn(j|0,g|0,16)|0)&65535;g=g&65535;e=$((j&65535)<<16>>16);if(k){n[d>>2]=e;i=$(c<<16>>16);n[d+4>>2]=i;i=$(g<<16>>16);n[d+8>>2]=i;k=1;return k|0}else{i=$(e/$(32767.0));n[d>>2]=i;i=$($(c<<16>>16)/$(32767.0));n[d+4>>2]=i;i=$($(g<<16>>16)/$(32767.0));n[d+8>>2]=i;k=1;return k|0}}default:{k=0;return k|0}}return 0}function rd(a,b){a=a|0;b=b|0;var c=0,e=0,g=0,h=0,i=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0;e=a+4|0;if(!b){c=f[a>>2]|0;f[a>>2]=0;if(c|0)ar(c);f[e>>2]=0;return}if(b>>>0>1073741823){a=Ia(4)|0;Eq(a);sa(a|0,1344,125)}o=ln(b<<2)|0;c=f[a>>2]|0;f[a>>2]=o;if(c|0)ar(c);f[e>>2]=b;c=0;do{f[(f[a>>2]|0)+(c<<2)>>2]=0;c=c+1|0}while((c|0)!=(b|0));e=a+8|0;h=f[e>>2]|0;if(!h)return;c=f[h+4>>2]|0;n=b+-1|0;o=(n&b|0)==0;if(o)g=c&n;else g=(c>>>0)%(b>>>0)|0;f[(f[a>>2]|0)+(g<<2)>>2]=e;c=f[h>>2]|0;if(!c)return;else{i=h;e=c;c=h}a:while(1){m=c;b:while(1){c:do if(o){c=e;while(1){l=f[c+4>>2]&n;if((l|0)==(g|0))break c;e=(f[a>>2]|0)+(l<<2)|0;if(!(f[e>>2]|0)){g=l;break b}k=c+10|0;e=f[c>>2]|0;d:do if(!e)e=c;else{j=d[c+8>>1]|0;h=c;while(1){if(j<<16>>16!=(d[e+8>>1]|0)){e=h;break d}if((d[k>>1]|0)!=(d[e+10>>1]|0)){e=h;break d}h=f[e>>2]|0;if(!h)break;else{p=e;e=h;h=p}}}while(0);f[m>>2]=f[e>>2];f[e>>2]=f[f[(f[a>>2]|0)+(l<<2)>>2]>>2];f[f[(f[a>>2]|0)+(l<<2)>>2]>>2]=c;c=f[i>>2]|0;if(!c){c=36;break a}}}else{c=e;while(1){l=((f[c+4>>2]|0)>>>0)%(b>>>0)|0;if((l|0)==(g|0))break c;e=(f[a>>2]|0)+(l<<2)|0;if(!(f[e>>2]|0)){g=l;break b}k=c+10|0;e=f[c>>2]|0;e:do if(!e)e=c;else{j=d[c+8>>1]|0;h=c;while(1){if(j<<16>>16!=(d[e+8>>1]|0)){e=h;break e}if((d[k>>1]|0)!=(d[e+10>>1]|0)){e=h;break e}h=f[e>>2]|0;if(!h)break;else{p=e;e=h;h=p}}}while(0);f[m>>2]=f[e>>2];f[e>>2]=f[f[(f[a>>2]|0)+(l<<2)>>2]>>2];f[f[(f[a>>2]|0)+(l<<2)>>2]>>2]=c;c=f[i>>2]|0;if(!c){c=36;break a}}}while(0);e=f[c>>2]|0;if(!e){c=36;break a}else{i=c;m=c}}f[e>>2]=m;e=f[c>>2]|0;if(!e){c=36;break}else i=c}if((c|0)==36)return}function sd(a,c){a=a|0;c=c|0;var d=0,e=0,g=0,i=0,j=0,k=0,l=0,m=0,n=0,o=0;n=b[c+11>>0]|0;m=n<<24>>24<0;o=m?f[c>>2]|0:c;n=m?f[c+4>>2]|0:n&255;if(n>>>0>3){c=o;g=n;d=n;while(1){m=X(h[c>>0]|h[c+1>>0]<<8|h[c+2>>0]<<16|h[c+3>>0]<<24,1540483477)|0;g=(X(m>>>24^m,1540483477)|0)^(X(g,1540483477)|0);d=d+-4|0;if(d>>>0<=3)break;else c=c+4|0}m=n+-4|0;d=m&-4;e=o+(d+4)|0;c=g;d=m-d|0}else{e=o;c=n;d=n}switch(d|0){case 3:{i=h[e+2>>0]<<16^c;l=6;break}case 2:{i=c;l=6;break}case 1:{j=c;l=7;break}default:k=c}if((l|0)==6){j=h[e+1>>0]<<8^i;l=7}if((l|0)==7)k=X(h[e>>0]^j,1540483477)|0;c=X(k>>>13^k,1540483477)|0;c=c>>>15^c;k=f[a+4>>2]|0;if(!k){o=0;return o|0}l=k+-1|0;d=(l&k|0)==0;if(d)m=c&l;else m=(c>>>0)%(k>>>0)|0;c=f[(f[a>>2]|0)+(m<<2)>>2]|0;if(!c){o=0;return o|0}c=f[c>>2]|0;if(!c){o=0;return o|0}a=(n|0)==0;if(d){a:while(1){if((f[c+4>>2]&l|0)!=(m|0)){c=0;l=35;break}d=c+8|0;g=b[d+11>>0]|0;j=g<<24>>24<0;g=g&255;do if(((j?f[c+12>>2]|0:g)|0)==(n|0)){e=f[d>>2]|0;i=j?e:d;if(j){if(a){l=35;break a}if(!(rl(i,o,n)|0)){l=35;break a}else break}if(a){l=35;break a}if((e&255)<<24>>24==(b[o>>0]|0)){e=o;do{g=g+-1|0;d=d+1|0;if(!g){l=35;break a}e=e+1|0}while((b[d>>0]|0)==(b[e>>0]|0))}}while(0);c=f[c>>2]|0;if(!c){c=0;l=35;break}}if((l|0)==35)return c|0}else{b:while(1){if((((f[c+4>>2]|0)>>>0)%(k>>>0)|0|0)!=(m|0)){c=0;l=35;break}d=c+8|0;g=b[d+11>>0]|0;j=g<<24>>24<0;g=g&255;do if(((j?f[c+12>>2]|0:g)|0)==(n|0)){e=f[d>>2]|0;i=j?e:d;if(j){if(a){l=35;break b}if(!(rl(i,o,n)|0)){l=35;break b}else break}if(a){l=35;break b}if((e&255)<<24>>24==(b[o>>0]|0)){e=o;do{g=g+-1|0;d=d+1|0;if(!g){l=35;break b}e=e+1|0}while((b[d>>0]|0)==(b[e>>0]|0))}}while(0);c=f[c>>2]|0;if(!c){c=0;l=35;break}}if((l|0)==35)return c|0}return 0}function td(a,b){a=a|0;b=b|0;var c=0,d=0,e=0,g=0,h=0,i=0,j=0,k=0,l=0,m=0,n=0,o=0;d=a+4|0;if(!b){c=f[a>>2]|0;f[a>>2]=0;if(c|0)ar(c);f[d>>2]=0;return}if(b>>>0>1073741823){a=Ia(4)|0;Eq(a);sa(a|0,1344,125)}n=ln(b<<2)|0;c=f[a>>2]|0;f[a>>2]=n;if(c|0)ar(c);f[d>>2]=b;c=0;do{f[(f[a>>2]|0)+(c<<2)>>2]=0;c=c+1|0}while((c|0)!=(b|0));d=a+8|0;g=f[d>>2]|0;if(!g)return;c=f[g+4>>2]|0;m=b+-1|0;n=(m&b|0)==0;if(n)e=c&m;else e=(c>>>0)%(b>>>0)|0;f[(f[a>>2]|0)+(e<<2)>>2]=d;c=f[g>>2]|0;if(!c)return;else{h=g;d=c;c=g}a:while(1){l=c;b:while(1){c:do if(n){c=d;while(1){k=f[c+4>>2]&m;if((k|0)==(e|0))break c;d=(f[a>>2]|0)+(k<<2)|0;if(!(f[d>>2]|0)){e=k;break b}j=c+12|0;d=f[c>>2]|0;d:do if(!d)d=c;else{i=f[c+8>>2]|0;g=c;while(1){if((i|0)!=(f[d+8>>2]|0)){d=g;break d}if((f[j>>2]|0)!=(f[d+12>>2]|0)){d=g;break d}g=f[d>>2]|0;if(!g)break;else{o=d;d=g;g=o}}}while(0);f[l>>2]=f[d>>2];f[d>>2]=f[f[(f[a>>2]|0)+(k<<2)>>2]>>2];f[f[(f[a>>2]|0)+(k<<2)>>2]>>2]=c;c=f[h>>2]|0;if(!c){c=36;break a}}}else{c=d;while(1){k=((f[c+4>>2]|0)>>>0)%(b>>>0)|0;if((k|0)==(e|0))break c;d=(f[a>>2]|0)+(k<<2)|0;if(!(f[d>>2]|0)){e=k;break b}j=c+12|0;d=f[c>>2]|0;e:do if(!d)d=c;else{i=f[c+8>>2]|0;g=c;while(1){if((i|0)!=(f[d+8>>2]|0)){d=g;break e}if((f[j>>2]|0)!=(f[d+12>>2]|0)){d=g;break e}g=f[d>>2]|0;if(!g)break;else{o=d;d=g;g=o}}}while(0);f[l>>2]=f[d>>2];f[d>>2]=f[f[(f[a>>2]|0)+(k<<2)>>2]>>2];f[f[(f[a>>2]|0)+(k<<2)>>2]>>2]=c;c=f[h>>2]|0;if(!c){c=36;break a}}}while(0);d=f[c>>2]|0;if(!d){c=36;break a}else{h=c;l=c}}f[d>>2]=l;d=f[c>>2]|0;if(!d){c=36;break}else h=c}if((c|0)==36)return}function ud(a,c){a=a|0;c=c|0;var d=0,e=0,g=0,h=0,i=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0;e=a+4|0;if(!c){d=f[a>>2]|0;f[a>>2]=0;if(d|0)ar(d);f[e>>2]=0;return}if(c>>>0>1073741823){a=Ia(4)|0;Eq(a);sa(a|0,1344,125)}o=ln(c<<2)|0;d=f[a>>2]|0;f[a>>2]=o;if(d|0)ar(d);f[e>>2]=c;d=0;do{f[(f[a>>2]|0)+(d<<2)>>2]=0;d=d+1|0}while((d|0)!=(c|0));e=a+8|0;h=f[e>>2]|0;if(!h)return;d=f[h+4>>2]|0;n=c+-1|0;o=(n&c|0)==0;if(o)g=d&n;else g=(d>>>0)%(c>>>0)|0;f[(f[a>>2]|0)+(g<<2)>>2]=e;d=f[h>>2]|0;if(!d)return;else{i=h;e=d;d=h}a:while(1){m=d;b:while(1){c:do if(o){d=e;while(1){l=f[d+4>>2]&n;if((l|0)==(g|0))break c;e=(f[a>>2]|0)+(l<<2)|0;if(!(f[e>>2]|0)){g=l;break b}k=d+9|0;e=f[d>>2]|0;d:do if(!e)e=d;else{j=b[d+8>>0]|0;h=d;while(1){if(j<<24>>24!=(b[e+8>>0]|0)){e=h;break d}if((b[k>>0]|0)!=(b[e+9>>0]|0)){e=h;break d}h=f[e>>2]|0;if(!h)break;else{p=e;e=h;h=p}}}while(0);f[m>>2]=f[e>>2];f[e>>2]=f[f[(f[a>>2]|0)+(l<<2)>>2]>>2];f[f[(f[a>>2]|0)+(l<<2)>>2]>>2]=d;d=f[i>>2]|0;if(!d){d=36;break a}}}else{d=e;while(1){l=((f[d+4>>2]|0)>>>0)%(c>>>0)|0;if((l|0)==(g|0))break c;e=(f[a>>2]|0)+(l<<2)|0;if(!(f[e>>2]|0)){g=l;break b}k=d+9|0;e=f[d>>2]|0;e:do if(!e)e=d;else{j=b[d+8>>0]|0;h=d;while(1){if(j<<24>>24!=(b[e+8>>0]|0)){e=h;break e}if((b[k>>0]|0)!=(b[e+9>>0]|0)){e=h;break e}h=f[e>>2]|0;if(!h)break;else{p=e;e=h;h=p}}}while(0);f[m>>2]=f[e>>2];f[e>>2]=f[f[(f[a>>2]|0)+(l<<2)>>2]>>2];f[f[(f[a>>2]|0)+(l<<2)>>2]>>2]=d;d=f[i>>2]|0;if(!d){d=36;break a}}}while(0);e=f[d>>2]|0;if(!e){d=36;break a}else{i=d;m=d}}f[e>>2]=m;e=f[d>>2]|0;if(!e){d=36;break}else i=d}if((d|0)==36)return}function vd(a,c,d){a=a|0;c=c|0;d=d|0;var e=La,g=0,i=La,j=0,k=0;switch(b[a+24>>0]|0){case 1:{j=f[c>>2]|0;g=a+48|0;c=f[g>>2]|0;g=f[g+4>>2]|0;k=a+40|0;g=(Ho(kn(f[k>>2]|0,f[k+4>>2]|0,j|0,((j|0)<0)<<31>>31|0)|0,I|0,c|0,g|0)|0)+(f[f[a>>2]>>2]|0)|0;i=$((h[g>>0]|h[g+1>>0]<<8)&65535);e=$(i/$(65535.0));n[d>>2]=(b[a+32>>0]|0)==0?i:e;d=d+4|0;f[d>>2]=0;f[d+4>>2]=0;d=1;return d|0}case 2:{j=f[c>>2]|0;k=a+48|0;c=f[k>>2]|0;k=f[k+4>>2]|0;g=a+40|0;k=(Ho(kn(f[g>>2]|0,f[g+4>>2]|0,j|0,((j|0)<0)<<31>>31|0)|0,I|0,c|0,k|0)|0)+(f[f[a>>2]>>2]|0)|0;k=h[k>>0]|h[k+1>>0]<<8|h[k+2>>0]<<16|h[k+3>>0]<<24;c=k>>>16&65535;e=$(k&65535);if(!(b[a+32>>0]|0)){n[d>>2]=e;e=$(c&65535)}else{e=$(e/$(65535.0));n[d>>2]=e;e=$($(c&65535)/$(65535.0))}n[d+4>>2]=e;n[d+8>>2]=$(0.0);k=1;return k|0}case 3:{g=f[c>>2]|0;k=a+48|0;c=f[k>>2]|0;k=f[k+4>>2]|0;j=a+40|0;k=(Ho(kn(f[j>>2]|0,f[j+4>>2]|0,g|0,((g|0)<0)<<31>>31|0)|0,I|0,c|0,k|0)|0)+(f[f[a>>2]>>2]|0)|0;c=k+2|0;c=h[c>>0]|h[c+1>>0]<<8;g=k+4|0;g=h[g>>0]|h[g+1>>0]<<8;e=$((h[k>>0]|h[k+1>>0]<<8)&65535);if(!(b[a+32>>0]|0)){n[d>>2]=e;i=$(c&65535);n[d+4>>2]=i;i=$(g&65535);n[d+8>>2]=i;k=1;return k|0}else{i=$(e/$(65535.0));n[d>>2]=i;i=$($(c&65535)/$(65535.0));n[d+4>>2]=i;i=$($(g&65535)/$(65535.0));n[d+8>>2]=i;k=1;return k|0}}case 4:{k=f[c>>2]|0;g=a+48|0;j=f[g>>2]|0;g=f[g+4>>2]|0;c=a+40|0;g=(Ho(kn(f[c>>2]|0,f[c+4>>2]|0,k|0,((k|0)<0)<<31>>31|0)|0,I|0,j|0,g|0)|0)+(f[f[a>>2]>>2]|0)|0;j=g;j=h[j>>0]|h[j+1>>0]<<8|h[j+2>>0]<<16|h[j+3>>0]<<24;g=g+4|0;g=h[g>>0]|h[g+1>>0]<<8|h[g+2>>0]<<16|h[g+3>>0]<<24;k=(b[a+32>>0]|0)==0;c=(Tn(j|0,g|0,16)|0)&65535;g=g&65535;e=$(j&65535);if(k){n[d>>2]=e;i=$(c&65535);n[d+4>>2]=i;i=$(g&65535);n[d+8>>2]=i;k=1;return k|0}else{i=$(e/$(65535.0));n[d>>2]=i;i=$($(c&65535)/$(65535.0));n[d+4>>2]=i;i=$($(g&65535)/$(65535.0));n[d+8>>2]=i;k=1;return k|0}}default:{k=0;return k|0}}return 0}function wd(a,c,d){a=a|0;c=c|0;d=d|0;var e=0,g=0,i=0;switch(b[a+24>>0]|0){case 1:{g=f[c>>2]|0;c=a+48|0;e=f[c>>2]|0;c=f[c+4>>2]|0;i=a+40|0;c=(Ho(kn(f[i>>2]|0,f[i+4>>2]|0,g|0,((g|0)<0)<<31>>31|0)|0,I|0,e|0,c|0)|0)+(f[f[a>>2]>>2]|0)|0;c=(h[c>>0]|h[c+1>>0]<<8)<<16>>16;a=d;f[a>>2]=c;f[a+4>>2]=((c|0)<0)<<31>>31;a=d+8|0;f[a>>2]=0;f[a+4>>2]=0;f[a+8>>2]=0;f[a+12>>2]=0;f[a+16>>2]=0;f[a+20>>2]=0;a=1;return a|0}case 2:{i=f[c>>2]|0;g=a+48|0;e=f[g>>2]|0;g=f[g+4>>2]|0;c=a+40|0;g=(Ho(kn(f[c>>2]|0,f[c+4>>2]|0,i|0,((i|0)<0)<<31>>31|0)|0,I|0,e|0,g|0)|0)+(f[f[a>>2]>>2]|0)|0;g=h[g>>0]|h[g+1>>0]<<8|h[g+2>>0]<<16|h[g+3>>0]<<24;e=(g&65535)<<16>>16;i=d;f[i>>2]=e;f[i+4>>2]=((e|0)<0)<<31>>31;g=(g>>>16&65535)<<16>>16;i=d+8|0;f[i>>2]=g;f[i+4>>2]=((g|0)<0)<<31>>31;i=d+16|0;f[i>>2]=0;f[i+4>>2]=0;f[i+8>>2]=0;f[i+12>>2]=0;i=1;return i|0}case 3:{i=f[c>>2]|0;e=a+48|0;g=f[e>>2]|0;e=f[e+4>>2]|0;c=a+40|0;a=(Ho(kn(f[c>>2]|0,f[c+4>>2]|0,i|0,((i|0)<0)<<31>>31|0)|0,I|0,g|0,e|0)|0)+(f[f[a>>2]>>2]|0)|0;e=a+2|0;e=h[e>>0]|h[e+1>>0]<<8;g=a+4|0;g=h[g>>0]|h[g+1>>0]<<8;a=(h[a>>0]|h[a+1>>0]<<8)<<16>>16;i=d;f[i>>2]=a;f[i+4>>2]=((a|0)<0)<<31>>31;e=e<<16>>16;i=d+8|0;f[i>>2]=e;f[i+4>>2]=((e|0)<0)<<31>>31;g=g<<16>>16;i=d+16|0;f[i>>2]=g;f[i+4>>2]=((g|0)<0)<<31>>31;i=d+24|0;f[i>>2]=0;f[i+4>>2]=0;i=1;return i|0}case 4:{e=f[c>>2]|0;g=a+48|0;i=f[g>>2]|0;g=f[g+4>>2]|0;c=a+40|0;g=(Ho(kn(f[c>>2]|0,f[c+4>>2]|0,e|0,((e|0)<0)<<31>>31|0)|0,I|0,i|0,g|0)|0)+(f[f[a>>2]>>2]|0)|0;i=g;i=h[i>>0]|h[i+1>>0]<<8|h[i+2>>0]<<16|h[i+3>>0]<<24;g=g+4|0;g=h[g>>0]|h[g+1>>0]<<8|h[g+2>>0]<<16|h[g+3>>0]<<24;a=An(On(i|0,g|0,48)|0,I|0,48)|0;e=d;f[e>>2]=a;f[e+4>>2]=I;e=An(0,i|0,48)|0;a=d+8|0;f[a>>2]=e;f[a+4>>2]=I;a=An(On(i|0,g|0,16)|0,I|0,48)|0;e=d+16|0;f[e>>2]=a;f[e+4>>2]=I;g=An(i|0,g|0,48)|0;i=d+24|0;f[i>>2]=g;f[i+4>>2]=I;i=1;return i|0}default:{i=0;return i|0}}return 0}function xd(a,c,d){a=a|0;c=c|0;d=d|0;var e=0,g=0,h=0,i=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0;p=Sa[f[(f[a>>2]|0)+44>>2]&255](a)|0;if((p|0)<1){c=0;return c|0}o=(f[c+4>>2]|0)-(f[c>>2]|0)>>2;q=X(o,p)|0;sg(a,o,p);o=f[a+16>>2]|0;o=(f[f[o>>2]>>2]|0)+(f[o+48>>2]|0)|0;m=d+8|0;g=m;e=f[g>>2]|0;g=f[g+4>>2]|0;n=d+16|0;l=n;k=f[l>>2]|0;l=f[l+4>>2]|0;if(!((g|0)>(l|0)|(g|0)==(l|0)&e>>>0>k>>>0)){c=0;return c|0}h=f[d>>2]|0;r=b[h+k>>0]|0;i=Ho(k|0,l|0,1,0)|0;j=I;s=n;f[s>>2]=i;f[s+4>>2]=j;do if(!(r<<24>>24)){if(!((g|0)>(j|0)|(g|0)==(j|0)&e>>>0>i>>>0)){s=0;return s|0}e=b[h+i>>0]|0;s=Ho(k|0,l|0,2,0)|0;j=n;f[j>>2]=s;f[j+4>>2]=I;j=e&255;if((j|0)==(cm(5)|0)){g=q<<2;l=m;r=f[l>>2]|0;l=f[l+4>>2]|0;s=n;e=f[s>>2]|0;s=Ho(e|0,f[s+4>>2]|0,g|0,0)|0;m=I;if((l|0)<(m|0)|(l|0)==(m|0)&r>>>0>>0){s=0;return s|0}else{Mg(o|0,(f[d>>2]|0)+e|0,g|0)|0;s=n;s=Ho(f[s>>2]|0,f[s+4>>2]|0,g|0,0)|0;i=n;f[i>>2]=s;f[i+4>>2]=I;i=14;break}}if(!q)i=15;else{h=e&255;g=n;e=f[g>>2]|0;g=f[g+4>>2]|0;i=0;do{k=m;r=f[k>>2]|0;k=f[k+4>>2]|0;s=Ho(e|0,g|0,h|0,0)|0;l=I;if(!((k|0)<(l|0)|(k|0)==(l|0)&r>>>0>>0)){Mg(o+(i<<2)|0,(f[d>>2]|0)+e|0,j|0)|0;e=n;e=Ho(f[e>>2]|0,f[e+4>>2]|0,h|0,0)|0;g=I;s=n;f[s>>2]=e;f[s+4>>2]=g}i=i+1|0}while((i|0)!=(q|0));i=14}}else if(Xi(q,p,d,o)|0)i=14;else{s=0;return s|0}while(0);do if((i|0)==14)if((q|0)>0){g=a+20|0;e=f[g>>2]|0;if(e|0?Sa[f[(f[e>>2]|0)+32>>2]&255](e)|0:0){h=1;break}wm(o,q,o);h=1}else i=15;while(0);if((i|0)==15){g=a+20|0;h=0}e=f[g>>2]|0;if(e|0){if(!(Wa[f[(f[e>>2]|0)+40>>2]&127](e,d)|0)){s=0;return s|0}if(h?(s=f[g>>2]|0,!(Ra[f[(f[s>>2]|0)+44>>2]&63](s,o,o,q,p,f[c>>2]|0)|0)):0){s=0;return s|0}}s=1;return s|0}function yd(a,c,d){a=a|0;c=c|0;d=d|0;var e=La,g=La,i=0,j=0,k=0;switch(b[a+24>>0]|0){case 1:{c=f[c>>2]|0;j=a+48|0;i=f[j>>2]|0;j=f[j+4>>2]|0;k=a+40|0;j=Ho(kn(f[k>>2]|0,f[k+4>>2]|0,c|0,((c|0)<0)<<31>>31|0)|0,I|0,i|0,j|0)|0;e=$(b[(f[f[a>>2]>>2]|0)+j>>0]|0);g=$(e/$(127.0));n[d>>2]=(b[a+32>>0]|0)==0?e:g;d=d+4|0;f[d>>2]=0;f[d+4>>2]=0;f[d+8>>2]=0;d=1;return d|0}case 2:{j=f[c>>2]|0;k=a+48|0;c=f[k>>2]|0;k=f[k+4>>2]|0;i=a+40|0;k=(Ho(kn(f[i>>2]|0,f[i+4>>2]|0,j|0,((j|0)<0)<<31>>31|0)|0,I|0,c|0,k|0)|0)+(f[f[a>>2]>>2]|0)|0;k=h[k>>0]|h[k+1>>0]<<8;c=(k&65535)>>>8&255;e=$((k&255)<<24>>24);if(!(b[a+32>>0]|0)){n[d>>2]=e;e=$(c<<24>>24)}else{e=$(e/$(127.0));n[d>>2]=e;e=$($(c<<24>>24)/$(127.0))}n[d+4>>2]=e;k=d+8|0;f[k>>2]=0;f[k+4>>2]=0;k=1;return k|0}case 3:{i=f[c>>2]|0;k=a+48|0;c=f[k>>2]|0;k=f[k+4>>2]|0;j=a+40|0;k=(Ho(kn(f[j>>2]|0,f[j+4>>2]|0,i|0,((i|0)<0)<<31>>31|0)|0,I|0,c|0,k|0)|0)+(f[f[a>>2]>>2]|0)|0;c=b[k+1>>0]|0;i=b[k+2>>0]|0;e=$(b[k>>0]|0);if(!(b[a+32>>0]|0)){n[d>>2]=e;g=$(c<<24>>24);e=$(i<<24>>24)}else{g=$(e/$(127.0));n[d>>2]=g;g=$($(c<<24>>24)/$(127.0));e=$($(i<<24>>24)/$(127.0))}n[d+4>>2]=g;n[d+8>>2]=e;n[d+12>>2]=$(0.0);k=1;return k|0}case 4:{i=f[c>>2]|0;k=a+48|0;c=f[k>>2]|0;k=f[k+4>>2]|0;j=a+40|0;k=(Ho(kn(f[j>>2]|0,f[j+4>>2]|0,i|0,((i|0)<0)<<31>>31|0)|0,I|0,c|0,k|0)|0)+(f[f[a>>2]>>2]|0)|0;k=h[k>>0]|h[k+1>>0]<<8|h[k+2>>0]<<16|h[k+3>>0]<<24;c=k>>>8&255;i=k>>>16&255;j=k>>>24&255;e=$((k&255)<<24>>24);if(!(b[a+32>>0]|0)){n[d>>2]=e;g=$(c<<24>>24);n[d+4>>2]=g;g=$(i<<24>>24);n[d+8>>2]=g;g=$(j<<24>>24);n[d+12>>2]=g;k=1;return k|0}else{g=$(e/$(127.0));n[d>>2]=g;g=$($(c<<24>>24)/$(127.0));n[d+4>>2]=g;g=$($(i<<24>>24)/$(127.0));n[d+8>>2]=g;g=$($(j<<24>>24)/$(127.0));n[d+12>>2]=g;k=1;return k|0}}default:{k=0;return k|0}}return 0}function zd(a,c,d){a=a|0;c=c|0;d=d|0;var e=0,g=0,i=0;switch(b[a+24>>0]|0){case 1:{g=f[c>>2]|0;c=a+48|0;e=f[c>>2]|0;c=f[c+4>>2]|0;i=a+40|0;c=(Ho(kn(f[i>>2]|0,f[i+4>>2]|0,g|0,((g|0)<0)<<31>>31|0)|0,I|0,e|0,c|0)|0)+(f[f[a>>2]>>2]|0)|0;a=d;f[a>>2]=h[c>>0]|h[c+1>>0]<<8|h[c+2>>0]<<16|h[c+3>>0]<<24;f[a+4>>2]=0;a=d+8|0;f[a>>2]=0;f[a+4>>2]=0;f[a+8>>2]=0;f[a+12>>2]=0;f[a+16>>2]=0;f[a+20>>2]=0;a=1;return a|0}case 2:{i=f[c>>2]|0;g=a+48|0;e=f[g>>2]|0;g=f[g+4>>2]|0;c=a+40|0;g=(Ho(kn(f[c>>2]|0,f[c+4>>2]|0,i|0,((i|0)<0)<<31>>31|0)|0,I|0,e|0,g|0)|0)+(f[f[a>>2]>>2]|0)|0;e=g;g=g+4|0;g=h[g>>0]|h[g+1>>0]<<8|h[g+2>>0]<<16|h[g+3>>0]<<24;i=d;f[i>>2]=h[e>>0]|h[e+1>>0]<<8|h[e+2>>0]<<16|h[e+3>>0]<<24;f[i+4>>2]=0;i=d+8|0;f[i>>2]=g;f[i+4>>2]=0;i=d+16|0;f[i>>2]=0;f[i+4>>2]=0;f[i+8>>2]=0;f[i+12>>2]=0;i=1;return i|0}case 3:{i=f[c>>2]|0;e=a+48|0;g=f[e>>2]|0;e=f[e+4>>2]|0;c=a+40|0;a=(Ho(kn(f[c>>2]|0,f[c+4>>2]|0,i|0,((i|0)<0)<<31>>31|0)|0,I|0,g|0,e|0)|0)+(f[f[a>>2]>>2]|0)|0;e=a+4|0;e=h[e>>0]|h[e+1>>0]<<8|h[e+2>>0]<<16|h[e+3>>0]<<24;g=a+8|0;g=h[g>>0]|h[g+1>>0]<<8|h[g+2>>0]<<16|h[g+3>>0]<<24;i=d;f[i>>2]=h[a>>0]|h[a+1>>0]<<8|h[a+2>>0]<<16|h[a+3>>0]<<24;f[i+4>>2]=0;i=d+8|0;f[i>>2]=e;f[i+4>>2]=0;i=d+16|0;f[i>>2]=g;f[i+4>>2]=0;i=d+24|0;f[i>>2]=0;f[i+4>>2]=0;i=1;return i|0}case 4:{g=f[c>>2]|0;c=a+48|0;e=f[c>>2]|0;c=f[c+4>>2]|0;i=a+40|0;c=(Ho(kn(f[i>>2]|0,f[i+4>>2]|0,g|0,((g|0)<0)<<31>>31|0)|0,I|0,e|0,c|0)|0)+(f[f[a>>2]>>2]|0)|0;a=c+4|0;a=h[a>>0]|h[a+1>>0]<<8|h[a+2>>0]<<16|h[a+3>>0]<<24;e=c+8|0;e=h[e>>0]|h[e+1>>0]<<8|h[e+2>>0]<<16|h[e+3>>0]<<24;g=c+12|0;g=h[g>>0]|h[g+1>>0]<<8|h[g+2>>0]<<16|h[g+3>>0]<<24;i=d;f[i>>2]=h[c>>0]|h[c+1>>0]<<8|h[c+2>>0]<<16|h[c+3>>0]<<24;f[i+4>>2]=0;i=d+8|0;f[i>>2]=a;f[i+4>>2]=0;i=d+16|0;f[i>>2]=e;f[i+4>>2]=0;i=d+24|0;f[i>>2]=g;f[i+4>>2]=0;i=1;return i|0}default:{i=0;return i|0}}return 0}function Ad(a,c,e,g,i){a=a|0;c=c|0;e=e|0;g=g|0;i=i|0;var j=0,k=0,l=0;l=u;u=u+32|0;j=l+12|0;k=l;f[c+40>>2]=e;f[c+32>>2]=g;f[c+4>>2]=i;pc(a,g,j);if(f[a>>2]|0){u=l;return}i=a+4|0;Lo(i);e=h[j+7>>0]|0;if((e|0)!=(Sa[f[(f[c>>2]|0)+8>>2]&255](c)|0)){f[k>>2]=0;f[k+4>>2]=0;f[k+8>>2]=0;Pj(k,6483,50);f[a>>2]=-1;ml(i,k);Lo(k);u=l;return}g=b[j+5>>0]|0;b[c+36>>0]=g;e=b[j+6>>0]|0;b[c+37>>0]=e;if((g+-1&255)>1){f[k>>2]=0;f[k+4>>2]=0;f[k+8>>2]=0;Pj(k,6534,22);f[a>>2]=-5;ml(i,k);Lo(k);u=l;return}if(!(g<<24>>24!=2|e<<24>>24==0)){f[k>>2]=0;f[k+4>>2]=0;f[k+8>>2]=0;Pj(k,6557,22);f[a>>2]=-5;ml(i,k);Lo(k);u=l;return}do if((((g&255)<<8|e&255)&65535)>258?(d[j+10>>1]|0)<0:0){tf(a,c);if(!(f[a>>2]|0)){Lo(i);break}else{u=l;return}}while(0);if(!(Sa[f[(f[c>>2]|0)+12>>2]&255](c)|0)){f[k>>2]=0;f[k+4>>2]=0;f[k+8>>2]=0;Pj(k,6580,33);f[a>>2]=-1;ml(i,k);Lo(k);u=l;return}if(!(Sa[f[(f[c>>2]|0)+20>>2]&255](c)|0)){f[k>>2]=0;f[k+4>>2]=0;f[k+8>>2]=0;Pj(k,6614,31);f[a>>2]=-1;ml(i,k);Lo(k);u=l;return}if(Sa[f[(f[c>>2]|0)+24>>2]&255](c)|0){f[a>>2]=0;f[a+4>>2]=0;f[a+8>>2]=0;f[a+12>>2]=0;u=l;return}else{f[k>>2]=0;f[k+4>>2]=0;f[k+8>>2]=0;Pj(k,6646,34);f[a>>2]=-1;ml(i,k);Lo(k);u=l;return}}function Bd(a,c,d){a=a|0;c=c|0;d=d|0;var e=La,g=La,i=0,j=0,k=0;switch(b[a+24>>0]|0){case 1:{j=f[c>>2]|0;c=a+48|0;i=f[c>>2]|0;c=f[c+4>>2]|0;k=a+40|0;c=(Ho(kn(f[k>>2]|0,f[k+4>>2]|0,j|0,((j|0)<0)<<31>>31|0)|0,I|0,i|0,c|0)|0)+(f[f[a>>2]>>2]|0)|0;g=$((h[c>>0]|h[c+1>>0]<<8|h[c+2>>0]<<16|h[c+3>>0]<<24)>>>0);e=$(g*$(2.32830644e-10));n[d>>2]=(b[a+32>>0]|0)==0?g:e;n[d+4>>2]=$(0.0);a=1;return a|0}case 2:{j=f[c>>2]|0;c=a+48|0;k=f[c>>2]|0;c=f[c+4>>2]|0;i=a+40|0;c=(Ho(kn(f[i>>2]|0,f[i+4>>2]|0,j|0,((j|0)<0)<<31>>31|0)|0,I|0,k|0,c|0)|0)+(f[f[a>>2]>>2]|0)|0;k=c;c=c+4|0;c=h[c>>0]|h[c+1>>0]<<8|h[c+2>>0]<<16|h[c+3>>0]<<24;e=$((h[k>>0]|h[k+1>>0]<<8|h[k+2>>0]<<16|h[k+3>>0]<<24)>>>0);if(!(b[a+32>>0]|0)){n[d>>2]=e;g=$(c>>>0);n[d+4>>2]=g;k=1;return k|0}else{g=$(e*$(2.32830644e-10));n[d>>2]=g;g=$($(c>>>0)*$(2.32830644e-10));n[d+4>>2]=g;k=1;return k|0}}case 3:{j=f[c>>2]|0;k=a+48|0;c=f[k>>2]|0;k=f[k+4>>2]|0;i=a+40|0;k=(Ho(kn(f[i>>2]|0,f[i+4>>2]|0,j|0,((j|0)<0)<<31>>31|0)|0,I|0,c|0,k|0)|0)+(f[f[a>>2]>>2]|0)|0;c=k+4|0;c=h[c>>0]|h[c+1>>0]<<8|h[c+2>>0]<<16|h[c+3>>0]<<24;e=$((h[k>>0]|h[k+1>>0]<<8|h[k+2>>0]<<16|h[k+3>>0]<<24)>>>0);if(!(b[a+32>>0]|0)){n[d>>2]=e;g=$(c>>>0);n[d+4>>2]=g;k=1;return k|0}else{g=$(e*$(2.32830644e-10));n[d>>2]=g;g=$($(c>>>0)*$(2.32830644e-10));n[d+4>>2]=g;k=1;return k|0}}case 4:{j=f[c>>2]|0;k=a+48|0;c=f[k>>2]|0;k=f[k+4>>2]|0;i=a+40|0;k=(Ho(kn(f[i>>2]|0,f[i+4>>2]|0,j|0,((j|0)<0)<<31>>31|0)|0,I|0,c|0,k|0)|0)+(f[f[a>>2]>>2]|0)|0;c=k+4|0;c=h[c>>0]|h[c+1>>0]<<8|h[c+2>>0]<<16|h[c+3>>0]<<24;e=$((h[k>>0]|h[k+1>>0]<<8|h[k+2>>0]<<16|h[k+3>>0]<<24)>>>0);if(!(b[a+32>>0]|0)){n[d>>2]=e;g=$(c>>>0);n[d+4>>2]=g;k=1;return k|0}else{g=$(e*$(2.32830644e-10));n[d>>2]=g;g=$($(c>>>0)*$(2.32830644e-10));n[d+4>>2]=g;k=1;return k|0}}default:{k=0;return k|0}}return 0}function Cd(a,c,d){a=a|0;c=c|0;d=d|0;var e=0,g=0,i=0;switch(b[a+24>>0]|0){case 1:{g=f[c>>2]|0;c=a+48|0;e=f[c>>2]|0;c=f[c+4>>2]|0;i=a+40|0;c=(Ho(kn(f[i>>2]|0,f[i+4>>2]|0,g|0,((g|0)<0)<<31>>31|0)|0,I|0,e|0,c|0)|0)+(f[f[a>>2]>>2]|0)|0;c=h[c>>0]|h[c+1>>0]<<8|h[c+2>>0]<<16|h[c+3>>0]<<24;a=d;f[a>>2]=c;f[a+4>>2]=((c|0)<0)<<31>>31;a=d+8|0;f[a>>2]=0;f[a+4>>2]=0;f[a+8>>2]=0;f[a+12>>2]=0;a=1;return a|0}case 2:{e=f[c>>2]|0;g=a+48|0;i=f[g>>2]|0;g=f[g+4>>2]|0;c=a+40|0;g=(Ho(kn(f[c>>2]|0,f[c+4>>2]|0,e|0,((e|0)<0)<<31>>31|0)|0,I|0,i|0,g|0)|0)+(f[f[a>>2]>>2]|0)|0;i=g;i=h[i>>0]|h[i+1>>0]<<8|h[i+2>>0]<<16|h[i+3>>0]<<24;g=g+4|0;g=h[g>>0]|h[g+1>>0]<<8|h[g+2>>0]<<16|h[g+3>>0]<<24;a=An(0,i|0,32)|0;e=d;f[e>>2]=a;f[e+4>>2]=I;g=An(i|0,g|0,32)|0;i=d+8|0;f[i>>2]=g;f[i+4>>2]=I;i=d+16|0;f[i>>2]=0;f[i+4>>2]=0;i=1;return i|0}case 3:{i=f[c>>2]|0;g=a+48|0;e=f[g>>2]|0;g=f[g+4>>2]|0;c=a+40|0;g=(Ho(kn(f[c>>2]|0,f[c+4>>2]|0,i|0,((i|0)<0)<<31>>31|0)|0,I|0,e|0,g|0)|0)+(f[f[a>>2]>>2]|0)|0;a=h[g>>0]|h[g+1>>0]<<8|h[g+2>>0]<<16|h[g+3>>0]<<24;e=g+4|0;e=h[e>>0]|h[e+1>>0]<<8|h[e+2>>0]<<16|h[e+3>>0]<<24;g=g+8|0;g=h[g>>0]|h[g+1>>0]<<8|h[g+2>>0]<<16|h[g+3>>0]<<24;i=d;f[i>>2]=a;f[i+4>>2]=((a|0)<0)<<31>>31;i=d+8|0;f[i>>2]=e;f[i+4>>2]=((e|0)<0)<<31>>31;i=d+16|0;f[i>>2]=g;f[i+4>>2]=((g|0)<0)<<31>>31;i=1;return i|0}case 4:{i=f[c>>2]|0;g=a+48|0;e=f[g>>2]|0;g=f[g+4>>2]|0;c=a+40|0;g=(Ho(kn(f[c>>2]|0,f[c+4>>2]|0,i|0,((i|0)<0)<<31>>31|0)|0,I|0,e|0,g|0)|0)+(f[f[a>>2]>>2]|0)|0;a=h[g>>0]|h[g+1>>0]<<8|h[g+2>>0]<<16|h[g+3>>0]<<24;e=g+4|0;e=h[e>>0]|h[e+1>>0]<<8|h[e+2>>0]<<16|h[e+3>>0]<<24;g=g+8|0;g=h[g>>0]|h[g+1>>0]<<8|h[g+2>>0]<<16|h[g+3>>0]<<24;i=d;f[i>>2]=a;f[i+4>>2]=((a|0)<0)<<31>>31;i=d+8|0;f[i>>2]=e;f[i+4>>2]=((e|0)<0)<<31>>31;i=d+16|0;f[i>>2]=g;f[i+4>>2]=((g|0)<0)<<31>>31;i=1;return i|0}default:{i=0;return i|0}}return 0}function Dd(a,c,d){a=a|0;c=c|0;d=d|0;var e=0,g=0,h=0,i=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0;t=u;u=u+176|0;h=t+136|0;s=t+64|0;o=t;j=t+32|0;i=f[(f[c+4>>2]|0)+44>>2]|0;n=ln(88)|0;f[n+4>>2]=0;f[n>>2]=4728;k=n+12|0;f[k>>2]=4708;m=n+64|0;f[m>>2]=0;f[n+68>>2]=0;f[n+72>>2]=0;e=n+16|0;g=e+44|0;do{f[e>>2]=0;e=e+4|0}while((e|0)<(g|0));f[n+76>>2]=i;f[n+80>>2]=d;f[n+84>>2]=0;l=n;q=s+4|0;f[q>>2]=4708;p=s+56|0;f[p>>2]=0;r=s+60|0;f[r>>2]=0;f[s+64>>2]=0;e=s+8|0;g=e+44|0;do{f[e>>2]=0;e=e+4|0}while((e|0)<(g|0));e=f[c+8>>2]|0;f[o>>2]=4708;c=o+4|0;g=c+4|0;f[g>>2]=0;f[g+4>>2]=0;f[g+8>>2]=0;f[g+12>>2]=0;f[g+16>>2]=0;f[g+20>>2]=0;g=e;f[c>>2]=g;g=((f[g+4>>2]|0)-(f[e>>2]|0)>>2>>>0)/3|0;b[h>>0]=0;Yg(o+8|0,g,h);Pa[f[(f[o>>2]|0)+8>>2]&127](o);Lf(j,o);Lf(h,j);f[s>>2]=f[h+4>>2];g=s+4|0;mg(g,h)|0;f[h>>2]=4708;c=f[h+20>>2]|0;if(c|0)ar(c);c=f[h+8>>2]|0;if(c|0)ar(c);f[s+36>>2]=e;f[s+40>>2]=d;f[s+44>>2]=i;f[s+48>>2]=n;f[j>>2]=4708;c=f[j+20>>2]|0;if(c|0)ar(c);c=f[j+8>>2]|0;if(c|0)ar(c);f[n+8>>2]=f[s>>2];mg(k,g)|0;c=n+44|0;n=s+36|0;f[c>>2]=f[n>>2];f[c+4>>2]=f[n+4>>2];f[c+8>>2]=f[n+8>>2];f[c+12>>2]=f[n+12>>2];b[c+16>>0]=b[n+16>>0]|0;Mf(m,f[p>>2]|0,f[r>>2]|0);f[a>>2]=l;f[o>>2]=4708;c=f[o+20>>2]|0;if(c|0)ar(c);c=f[o+8>>2]|0;if(c|0)ar(c);c=f[p>>2]|0;if(c|0){e=f[r>>2]|0;if((e|0)!=(c|0))f[r>>2]=e+(~((e+-4-c|0)>>>2)<<2);ar(c)}f[q>>2]=4708;c=f[s+24>>2]|0;if(c|0)ar(c);c=f[s+12>>2]|0;if(!c){u=t;return}ar(c);u=t;return}function Ed(a,c,d){a=a|0;c=c|0;d=d|0;var e=La,g=La,i=0,j=0,k=0;switch(b[a+24>>0]|0){case 1:{c=f[c>>2]|0;j=a+48|0;i=f[j>>2]|0;j=f[j+4>>2]|0;k=a+40|0;j=Ho(kn(f[k>>2]|0,f[k+4>>2]|0,c|0,((c|0)<0)<<31>>31|0)|0,I|0,i|0,j|0)|0;e=$(h[(f[f[a>>2]>>2]|0)+j>>0]|0);g=$(e/$(255.0));n[d>>2]=(b[a+32>>0]|0)==0?e:g;d=d+4|0;f[d>>2]=0;f[d+4>>2]=0;f[d+8>>2]=0;d=1;return d|0}case 2:{j=f[c>>2]|0;k=a+48|0;c=f[k>>2]|0;k=f[k+4>>2]|0;i=a+40|0;k=(Ho(kn(f[i>>2]|0,f[i+4>>2]|0,j|0,((j|0)<0)<<31>>31|0)|0,I|0,c|0,k|0)|0)+(f[f[a>>2]>>2]|0)|0;k=h[k>>0]|h[k+1>>0]<<8;c=(k&65535)>>>8&255;e=$(k&255);if(!(b[a+32>>0]|0)){n[d>>2]=e;e=$(c&255)}else{e=$(e/$(255.0));n[d>>2]=e;e=$($(c&255)/$(255.0))}n[d+4>>2]=e;k=d+8|0;f[k>>2]=0;f[k+4>>2]=0;k=1;return k|0}case 3:{i=f[c>>2]|0;k=a+48|0;c=f[k>>2]|0;k=f[k+4>>2]|0;j=a+40|0;k=(Ho(kn(f[j>>2]|0,f[j+4>>2]|0,i|0,((i|0)<0)<<31>>31|0)|0,I|0,c|0,k|0)|0)+(f[f[a>>2]>>2]|0)|0;c=b[k+1>>0]|0;i=b[k+2>>0]|0;e=$(h[k>>0]|0);if(!(b[a+32>>0]|0)){n[d>>2]=e;g=$(c&255);e=$(i&255)}else{g=$(e/$(255.0));n[d>>2]=g;g=$($(c&255)/$(255.0));e=$($(i&255)/$(255.0))}n[d+4>>2]=g;n[d+8>>2]=e;n[d+12>>2]=$(0.0);k=1;return k|0}case 4:{i=f[c>>2]|0;k=a+48|0;c=f[k>>2]|0;k=f[k+4>>2]|0;j=a+40|0;k=(Ho(kn(f[j>>2]|0,f[j+4>>2]|0,i|0,((i|0)<0)<<31>>31|0)|0,I|0,c|0,k|0)|0)+(f[f[a>>2]>>2]|0)|0;k=h[k>>0]|h[k+1>>0]<<8|h[k+2>>0]<<16|h[k+3>>0]<<24;c=k>>>8&255;i=k>>>16&255;j=k>>>24&255;e=$(k&255);if(!(b[a+32>>0]|0)){n[d>>2]=e;g=$(c&255);n[d+4>>2]=g;g=$(i&255);n[d+8>>2]=g;g=$(j&255);n[d+12>>2]=g;k=1;return k|0}else{g=$(e/$(255.0));n[d>>2]=g;g=$($(c&255)/$(255.0));n[d+4>>2]=g;g=$($(i&255)/$(255.0));n[d+8>>2]=g;g=$($(j&255)/$(255.0));n[d+12>>2]=g;k=1;return k|0}}default:{k=0;return k|0}}return 0}function Fd(a,c,d){a=a|0;c=c|0;d=d|0;var e=La,g=La,i=0,j=0,k=0;switch(b[a+24>>0]|0){case 1:{j=f[c>>2]|0;c=a+48|0;i=f[c>>2]|0;c=f[c+4>>2]|0;k=a+40|0;c=(Ho(kn(f[k>>2]|0,f[k+4>>2]|0,j|0,((j|0)<0)<<31>>31|0)|0,I|0,i|0,c|0)|0)+(f[f[a>>2]>>2]|0)|0;g=$(h[c>>0]|h[c+1>>0]<<8|h[c+2>>0]<<16|h[c+3>>0]<<24|0);e=$(g*$(4.65661287e-10));n[d>>2]=(b[a+32>>0]|0)==0?g:e;n[d+4>>2]=$(0.0);a=1;return a|0}case 2:{j=f[c>>2]|0;c=a+48|0;k=f[c>>2]|0;c=f[c+4>>2]|0;i=a+40|0;c=(Ho(kn(f[i>>2]|0,f[i+4>>2]|0,j|0,((j|0)<0)<<31>>31|0)|0,I|0,k|0,c|0)|0)+(f[f[a>>2]>>2]|0)|0;k=c;c=c+4|0;c=h[c>>0]|h[c+1>>0]<<8|h[c+2>>0]<<16|h[c+3>>0]<<24;e=$(h[k>>0]|h[k+1>>0]<<8|h[k+2>>0]<<16|h[k+3>>0]<<24|0);if(!(b[a+32>>0]|0)){n[d>>2]=e;g=$(c|0);n[d+4>>2]=g;k=1;return k|0}else{g=$(e*$(4.65661287e-10));n[d>>2]=g;g=$($(c|0)*$(4.65661287e-10));n[d+4>>2]=g;k=1;return k|0}}case 3:{j=f[c>>2]|0;k=a+48|0;c=f[k>>2]|0;k=f[k+4>>2]|0;i=a+40|0;k=(Ho(kn(f[i>>2]|0,f[i+4>>2]|0,j|0,((j|0)<0)<<31>>31|0)|0,I|0,c|0,k|0)|0)+(f[f[a>>2]>>2]|0)|0;c=k+4|0;c=h[c>>0]|h[c+1>>0]<<8|h[c+2>>0]<<16|h[c+3>>0]<<24;e=$(h[k>>0]|h[k+1>>0]<<8|h[k+2>>0]<<16|h[k+3>>0]<<24|0);if(!(b[a+32>>0]|0)){n[d>>2]=e;g=$(c|0);n[d+4>>2]=g;k=1;return k|0}else{g=$(e*$(4.65661287e-10));n[d>>2]=g;g=$($(c|0)*$(4.65661287e-10));n[d+4>>2]=g;k=1;return k|0}}case 4:{j=f[c>>2]|0;k=a+48|0;c=f[k>>2]|0;k=f[k+4>>2]|0;i=a+40|0;k=(Ho(kn(f[i>>2]|0,f[i+4>>2]|0,j|0,((j|0)<0)<<31>>31|0)|0,I|0,c|0,k|0)|0)+(f[f[a>>2]>>2]|0)|0;c=k+4|0;c=h[c>>0]|h[c+1>>0]<<8|h[c+2>>0]<<16|h[c+3>>0]<<24;e=$(h[k>>0]|h[k+1>>0]<<8|h[k+2>>0]<<16|h[k+3>>0]<<24|0);if(!(b[a+32>>0]|0)){n[d>>2]=e;g=$(c|0);n[d+4>>2]=g;k=1;return k|0}else{g=$(e*$(4.65661287e-10));n[d>>2]=g;g=$($(c|0)*$(4.65661287e-10));n[d+4>>2]=g;k=1;return k|0}}default:{k=0;return k|0}}return 0}function Gd(a,c){a=a|0;c=c|0;var d=0,e=0,g=0,h=0,i=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0,v=0;e=a+4|0;if(!c){d=f[a>>2]|0;f[a>>2]=0;if(d|0)ar(d);f[e>>2]=0;return}if(c>>>0>1073741823){a=Ia(4)|0;Eq(a);sa(a|0,1344,125)}v=ln(c<<2)|0;d=f[a>>2]|0;f[a>>2]=v;if(d|0)ar(d);f[e>>2]=c;d=0;do{f[(f[a>>2]|0)+(d<<2)>>2]=0;d=d+1|0}while((d|0)!=(c|0));e=a+8|0;h=f[e>>2]|0;if(!h)return;d=f[h+4>>2]|0;u=c+-1|0;v=(u&c|0)==0;if(v)g=d&u;else g=(d>>>0)%(c>>>0)|0;f[(f[a>>2]|0)+(g<<2)>>2]=e;d=f[h>>2]|0;if(!d)return;t=a+24|0;i=h;e=d;d=h;a:while(1){s=d;b:while(1){d=e;while(1){e=f[d+4>>2]|0;if(v)r=e&u;else r=(e>>>0)%(c>>>0)|0;if((r|0)==(g|0))break;e=(f[a>>2]|0)+(r<<2)|0;if(!(f[e>>2]|0))break b;e=f[d>>2]|0;c:do if(!e)e=d;else{p=f[d+8>>2]|0;n=f[t>>2]|0;o=f[n+8>>2]|0;n=(f[n+12>>2]|0)-o|0;q=n>>>2;if((n|0)>0)l=d;else while(1){h=f[e>>2]|0;if(!h)break c;else e=h}while(1){m=f[e+8>>2]|0;n=0;do{h=f[o+(n<<2)>>2]|0;j=(b[h+84>>0]|0)==0;if(j)k=f[(f[h+68>>2]|0)+(p<<2)>>2]|0;else k=p;if((q|0)<=(n|0)){d=35;break a}if(j)h=f[(f[h+68>>2]|0)+(m<<2)>>2]|0;else h=m;n=n+1|0;if((k|0)!=(h|0)){e=l;break c}}while((n|0)<(q|0));h=f[e>>2]|0;if(!h)break;else{l=e;e=h}}}while(0);f[s>>2]=f[e>>2];f[e>>2]=f[f[(f[a>>2]|0)+(r<<2)>>2]>>2];f[f[(f[a>>2]|0)+(r<<2)>>2]>>2]=d;d=f[i>>2]|0;if(!d){d=40;break a}}e=f[d>>2]|0;if(!e){d=40;break a}else{i=d;s=d}}f[e>>2]=s;e=f[d>>2]|0;if(!e){d=40;break}else{i=d;g=r}}if((d|0)==35)Ga(17252,17204,72,17242);else if((d|0)==40)return}function Hd(a,c,d){a=a|0;c=c|0;d=d|0;var e=La,g=0,i=La,j=0,k=0;switch(b[a+24>>0]|0){case 1:{j=f[c>>2]|0;g=a+48|0;c=f[g>>2]|0;g=f[g+4>>2]|0;k=a+40|0;g=Ho(kn(f[k>>2]|0,f[k+4>>2]|0,j|0,((j|0)<0)<<31>>31|0)|0,I|0,c|0,g|0)|0;i=$(b[(f[f[a>>2]>>2]|0)+g>>0]|0);e=$(i/$(127.0));n[d>>2]=(b[a+32>>0]|0)==0?i:e;d=d+4|0;f[d>>2]=0;f[d+4>>2]=0;d=1;return d|0}case 2:{j=f[c>>2]|0;k=a+48|0;c=f[k>>2]|0;k=f[k+4>>2]|0;g=a+40|0;k=(Ho(kn(f[g>>2]|0,f[g+4>>2]|0,j|0,((j|0)<0)<<31>>31|0)|0,I|0,c|0,k|0)|0)+(f[f[a>>2]>>2]|0)|0;k=h[k>>0]|h[k+1>>0]<<8;c=(k&65535)>>>8&255;e=$((k&255)<<24>>24);if(!(b[a+32>>0]|0)){n[d>>2]=e;e=$(c<<24>>24)}else{e=$(e/$(127.0));n[d>>2]=e;e=$($(c<<24>>24)/$(127.0))}n[d+4>>2]=e;n[d+8>>2]=$(0.0);k=1;return k|0}case 3:{g=f[c>>2]|0;k=a+48|0;c=f[k>>2]|0;k=f[k+4>>2]|0;j=a+40|0;k=(Ho(kn(f[j>>2]|0,f[j+4>>2]|0,g|0,((g|0)<0)<<31>>31|0)|0,I|0,c|0,k|0)|0)+(f[f[a>>2]>>2]|0)|0;c=b[k+1>>0]|0;g=b[k+2>>0]|0;e=$(b[k>>0]|0);if(!(b[a+32>>0]|0)){n[d>>2]=e;i=$(c<<24>>24);n[d+4>>2]=i;i=$(g<<24>>24);n[d+8>>2]=i;k=1;return k|0}else{i=$(e/$(127.0));n[d>>2]=i;i=$($(c<<24>>24)/$(127.0));n[d+4>>2]=i;i=$($(g<<24>>24)/$(127.0));n[d+8>>2]=i;k=1;return k|0}}case 4:{g=f[c>>2]|0;k=a+48|0;c=f[k>>2]|0;k=f[k+4>>2]|0;j=a+40|0;k=(Ho(kn(f[j>>2]|0,f[j+4>>2]|0,g|0,((g|0)<0)<<31>>31|0)|0,I|0,c|0,k|0)|0)+(f[f[a>>2]>>2]|0)|0;k=h[k>>0]|h[k+1>>0]<<8|h[k+2>>0]<<16|h[k+3>>0]<<24;c=k>>>8&255;g=k>>>16&255;e=$((k&255)<<24>>24);if(!(b[a+32>>0]|0)){n[d>>2]=e;i=$(c<<24>>24);n[d+4>>2]=i;i=$(g<<24>>24);n[d+8>>2]=i;k=1;return k|0}else{i=$(e/$(127.0));n[d>>2]=i;i=$($(c<<24>>24)/$(127.0));n[d+4>>2]=i;i=$($(g<<24>>24)/$(127.0));n[d+8>>2]=i;k=1;return k|0}}default:{k=0;return k|0}}return 0}function Id(a,c,d){a=a|0;c=c|0;d=d|0;var e=La,g=La,i=0,j=0,k=0;switch(b[a+24>>0]|0){case 1:{j=f[c>>2]|0;c=a+48|0;i=f[c>>2]|0;c=f[c+4>>2]|0;k=a+40|0;c=(Ho(kn(f[k>>2]|0,f[k+4>>2]|0,j|0,((j|0)<0)<<31>>31|0)|0,I|0,i|0,c|0)|0)+(f[f[a>>2]>>2]|0)|0;g=$((h[c>>0]|h[c+1>>0]<<8)<<16>>16);e=$(g/$(32767.0));n[d>>2]=(b[a+32>>0]|0)==0?g:e;n[d+4>>2]=$(0.0);d=1;return d|0}case 2:{j=f[c>>2]|0;k=a+48|0;c=f[k>>2]|0;k=f[k+4>>2]|0;i=a+40|0;k=(Ho(kn(f[i>>2]|0,f[i+4>>2]|0,j|0,((j|0)<0)<<31>>31|0)|0,I|0,c|0,k|0)|0)+(f[f[a>>2]>>2]|0)|0;k=h[k>>0]|h[k+1>>0]<<8|h[k+2>>0]<<16|h[k+3>>0]<<24;c=k>>>16&65535;e=$((k&65535)<<16>>16);if(!(b[a+32>>0]|0)){n[d>>2]=e;g=$(c<<16>>16);n[d+4>>2]=g;k=1;return k|0}else{g=$(e/$(32767.0));n[d>>2]=g;g=$($(c<<16>>16)/$(32767.0));n[d+4>>2]=g;k=1;return k|0}}case 3:{j=f[c>>2]|0;k=a+48|0;c=f[k>>2]|0;k=f[k+4>>2]|0;i=a+40|0;k=(Ho(kn(f[i>>2]|0,f[i+4>>2]|0,j|0,((j|0)<0)<<31>>31|0)|0,I|0,c|0,k|0)|0)+(f[f[a>>2]>>2]|0)|0;c=k+2|0;c=h[c>>0]|h[c+1>>0]<<8;e=$((h[k>>0]|h[k+1>>0]<<8)<<16>>16);if(!(b[a+32>>0]|0)){n[d>>2]=e;g=$(c<<16>>16);n[d+4>>2]=g;k=1;return k|0}else{g=$(e/$(32767.0));n[d>>2]=g;g=$($(c<<16>>16)/$(32767.0));n[d+4>>2]=g;k=1;return k|0}}case 4:{k=f[c>>2]|0;c=a+48|0;j=f[c>>2]|0;c=f[c+4>>2]|0;i=a+40|0;c=(Ho(kn(f[i>>2]|0,f[i+4>>2]|0,k|0,((k|0)<0)<<31>>31|0)|0,I|0,j|0,c|0)|0)+(f[f[a>>2]>>2]|0)|0;j=c;j=h[j>>0]|h[j+1>>0]<<8|h[j+2>>0]<<16|h[j+3>>0]<<24;c=c+4|0;k=(b[a+32>>0]|0)==0;c=(Tn(j|0,h[c>>0]|h[c+1>>0]<<8|h[c+2>>0]<<16|h[c+3>>0]<<24|0,16)|0)&65535;e=$((j&65535)<<16>>16);if(k){n[d>>2]=e;g=$(c<<16>>16);n[d+4>>2]=g;k=1;return k|0}else{g=$(e/$(32767.0));n[d>>2]=g;g=$($(c<<16>>16)/$(32767.0));n[d+4>>2]=g;k=1;return k|0}}default:{k=0;return k|0}}return 0}function Jd(a,b,c){a=a|0;b=b|0;c=c|0;var d=0,e=0,g=0,h=0,i=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,v=0,w=0,x=0,y=0,z=0,A=0,B=0,C=0;B=u;u=u+16|0;z=B+8|0;x=B;y=B+4|0;if(!(pj(a,b)|0)){a=0;u=B;return a|0}A=b+84|0;n=b+88|0;d=f[n>>2]|0;b=f[A>>2]|0;if((d-b|0)<=0){a=1;u=B;return a|0}m=a+56|0;t=a+8|0;q=a+12|0;r=a+20|0;o=a+24|0;s=a+32|0;p=a+36|0;v=a+68|0;w=a+76|0;l=f[c>>2]|0;h=l+4|0;j=l+8|0;i=a+4|0;k=a+72|0;g=l;e=0;do{if(!(f[(f[m>>2]|0)+(e>>>5<<2)>>2]&1<<(e&31))){C=e*3|0;f[x>>2]=C;f[z>>2]=f[x>>2];kd(a,0,z);d=(f[q>>2]|0)-(f[t>>2]|0)>>2;f[x>>2]=C+1;f[z>>2]=f[x>>2];kd(a,1,z);b=(f[o>>2]|0)-(f[r>>2]|0)>>2;c=b>>>0>d>>>0;f[x>>2]=C+2;f[z>>2]=f[x>>2];kd(a,2,z);d=(f[p>>2]|0)-(f[s>>2]|0)>>2>>>0>(c?b:d)>>>0?2:c?1:((d|0)==0)<<31>>31;if((f[v>>2]|0)>0){b=f[w>>2]|0;f[z>>2]=b;c=f[h>>2]|0;if(c>>>0<(f[j>>2]|0)>>>0){f[c>>2]=b;f[h>>2]=c+4}else Ii(l,z);f[x>>2]=f[a+44+(d<<2)>>2];b=f[i>>2]|0;c=f[a>>2]|0;f[z>>2]=f[x>>2];c=wk(z,b,c)|0;f[z>>2]=c;b=f[h>>2]|0;if(b>>>0<(f[j>>2]|0)>>>0){f[b>>2]=c;f[h>>2]=b+4}else Ii(l,z);C=(f[k>>2]|0)+2|0;f[k>>2]=C;if(C&1|0){f[z>>2]=c;b=f[h>>2]|0;if(b>>>0<(f[j>>2]|0)>>>0){f[b>>2]=c;f[h>>2]=b+4}else Ii(l,z);f[k>>2]=(f[k>>2]|0)+1}}f[y>>2]=g;f[z>>2]=f[y>>2];pd(a,d,z);b=f[A>>2]|0;d=f[n>>2]|0}e=e+1|0}while((e|0)<((d-b|0)/12|0|0));b=1;u=B;return b|0}function Kd(a,c,d){a=a|0;c=c|0;d=d|0;var e=La,g=0,i=La,j=0,k=0;switch(b[a+24>>0]|0){case 1:{j=f[c>>2]|0;g=a+48|0;c=f[g>>2]|0;g=f[g+4>>2]|0;k=a+40|0;g=Ho(kn(f[k>>2]|0,f[k+4>>2]|0,j|0,((j|0)<0)<<31>>31|0)|0,I|0,c|0,g|0)|0;i=$(h[(f[f[a>>2]>>2]|0)+g>>0]|0);e=$(i/$(255.0));n[d>>2]=(b[a+32>>0]|0)==0?i:e;d=d+4|0;f[d>>2]=0;f[d+4>>2]=0;d=1;return d|0}case 2:{j=f[c>>2]|0;k=a+48|0;c=f[k>>2]|0;k=f[k+4>>2]|0;g=a+40|0;k=(Ho(kn(f[g>>2]|0,f[g+4>>2]|0,j|0,((j|0)<0)<<31>>31|0)|0,I|0,c|0,k|0)|0)+(f[f[a>>2]>>2]|0)|0;k=h[k>>0]|h[k+1>>0]<<8;c=(k&65535)>>>8&255;e=$(k&255);if(!(b[a+32>>0]|0)){n[d>>2]=e;e=$(c&255)}else{e=$(e/$(255.0));n[d>>2]=e;e=$($(c&255)/$(255.0))}n[d+4>>2]=e;n[d+8>>2]=$(0.0);k=1;return k|0}case 3:{g=f[c>>2]|0;k=a+48|0;c=f[k>>2]|0;k=f[k+4>>2]|0;j=a+40|0;k=(Ho(kn(f[j>>2]|0,f[j+4>>2]|0,g|0,((g|0)<0)<<31>>31|0)|0,I|0,c|0,k|0)|0)+(f[f[a>>2]>>2]|0)|0;c=b[k+1>>0]|0;g=b[k+2>>0]|0;e=$(h[k>>0]|0);if(!(b[a+32>>0]|0)){n[d>>2]=e;i=$(c&255);n[d+4>>2]=i;i=$(g&255);n[d+8>>2]=i;k=1;return k|0}else{i=$(e/$(255.0));n[d>>2]=i;i=$($(c&255)/$(255.0));n[d+4>>2]=i;i=$($(g&255)/$(255.0));n[d+8>>2]=i;k=1;return k|0}}case 4:{g=f[c>>2]|0;k=a+48|0;c=f[k>>2]|0;k=f[k+4>>2]|0;j=a+40|0;k=(Ho(kn(f[j>>2]|0,f[j+4>>2]|0,g|0,((g|0)<0)<<31>>31|0)|0,I|0,c|0,k|0)|0)+(f[f[a>>2]>>2]|0)|0;k=h[k>>0]|h[k+1>>0]<<8|h[k+2>>0]<<16|h[k+3>>0]<<24;c=k>>>8&255;g=k>>>16&255;e=$(k&255);if(!(b[a+32>>0]|0)){n[d>>2]=e;i=$(c&255);n[d+4>>2]=i;i=$(g&255);n[d+8>>2]=i;k=1;return k|0}else{i=$(e/$(255.0));n[d>>2]=i;i=$($(c&255)/$(255.0));n[d+4>>2]=i;i=$($(g&255)/$(255.0));n[d+8>>2]=i;k=1;return k|0}}default:{k=0;return k|0}}return 0}function Ld(a,c,d){a=a|0;c=c|0;d=d|0;var e=La,g=La,i=0,j=0,k=0;switch(b[a+24>>0]|0){case 1:{j=f[c>>2]|0;c=a+48|0;i=f[c>>2]|0;c=f[c+4>>2]|0;k=a+40|0;c=(Ho(kn(f[k>>2]|0,f[k+4>>2]|0,j|0,((j|0)<0)<<31>>31|0)|0,I|0,i|0,c|0)|0)+(f[f[a>>2]>>2]|0)|0;g=$((h[c>>0]|h[c+1>>0]<<8)&65535);e=$(g/$(65535.0));n[d>>2]=(b[a+32>>0]|0)==0?g:e;n[d+4>>2]=$(0.0);d=1;return d|0}case 2:{j=f[c>>2]|0;k=a+48|0;c=f[k>>2]|0;k=f[k+4>>2]|0;i=a+40|0;k=(Ho(kn(f[i>>2]|0,f[i+4>>2]|0,j|0,((j|0)<0)<<31>>31|0)|0,I|0,c|0,k|0)|0)+(f[f[a>>2]>>2]|0)|0;k=h[k>>0]|h[k+1>>0]<<8|h[k+2>>0]<<16|h[k+3>>0]<<24;c=k>>>16&65535;e=$(k&65535);if(!(b[a+32>>0]|0)){n[d>>2]=e;g=$(c&65535);n[d+4>>2]=g;k=1;return k|0}else{g=$(e/$(65535.0));n[d>>2]=g;g=$($(c&65535)/$(65535.0));n[d+4>>2]=g;k=1;return k|0}}case 3:{j=f[c>>2]|0;k=a+48|0;c=f[k>>2]|0;k=f[k+4>>2]|0;i=a+40|0;k=(Ho(kn(f[i>>2]|0,f[i+4>>2]|0,j|0,((j|0)<0)<<31>>31|0)|0,I|0,c|0,k|0)|0)+(f[f[a>>2]>>2]|0)|0;c=k+2|0;c=h[c>>0]|h[c+1>>0]<<8;e=$((h[k>>0]|h[k+1>>0]<<8)&65535);if(!(b[a+32>>0]|0)){n[d>>2]=e;g=$(c&65535);n[d+4>>2]=g;k=1;return k|0}else{g=$(e/$(65535.0));n[d>>2]=g;g=$($(c&65535)/$(65535.0));n[d+4>>2]=g;k=1;return k|0}}case 4:{k=f[c>>2]|0;c=a+48|0;j=f[c>>2]|0;c=f[c+4>>2]|0;i=a+40|0;c=(Ho(kn(f[i>>2]|0,f[i+4>>2]|0,k|0,((k|0)<0)<<31>>31|0)|0,I|0,j|0,c|0)|0)+(f[f[a>>2]>>2]|0)|0;j=c;j=h[j>>0]|h[j+1>>0]<<8|h[j+2>>0]<<16|h[j+3>>0]<<24;c=c+4|0;k=(b[a+32>>0]|0)==0;c=(Tn(j|0,h[c>>0]|h[c+1>>0]<<8|h[c+2>>0]<<16|h[c+3>>0]<<24|0,16)|0)&65535;e=$(j&65535);if(k){n[d>>2]=e;g=$(c&65535);n[d+4>>2]=g;k=1;return k|0}else{g=$(e/$(65535.0));n[d>>2]=g;g=$($(c&65535)/$(65535.0));n[d+4>>2]=g;k=1;return k|0}}default:{k=0;return k|0}}return 0}function Md(a,c,d){a=a|0;c=c|0;d=d|0;var e=0,g=0,i=0;switch(b[a+24>>0]|0){case 1:{g=f[c>>2]|0;c=a+48|0;e=f[c>>2]|0;c=f[c+4>>2]|0;i=a+40|0;c=(Ho(kn(f[i>>2]|0,f[i+4>>2]|0,g|0,((g|0)<0)<<31>>31|0)|0,I|0,e|0,c|0)|0)+(f[f[a>>2]>>2]|0)|0;c=(h[c>>0]|h[c+1>>0]<<8)<<16>>16;a=d;f[a>>2]=c;f[a+4>>2]=((c|0)<0)<<31>>31;a=d+8|0;f[a>>2]=0;f[a+4>>2]=0;f[a+8>>2]=0;f[a+12>>2]=0;a=1;return a|0}case 2:{i=f[c>>2]|0;g=a+48|0;e=f[g>>2]|0;g=f[g+4>>2]|0;c=a+40|0;g=(Ho(kn(f[c>>2]|0,f[c+4>>2]|0,i|0,((i|0)<0)<<31>>31|0)|0,I|0,e|0,g|0)|0)+(f[f[a>>2]>>2]|0)|0;g=h[g>>0]|h[g+1>>0]<<8|h[g+2>>0]<<16|h[g+3>>0]<<24;e=(g&65535)<<16>>16;i=d;f[i>>2]=e;f[i+4>>2]=((e|0)<0)<<31>>31;g=(g>>>16&65535)<<16>>16;i=d+8|0;f[i>>2]=g;f[i+4>>2]=((g|0)<0)<<31>>31;i=d+16|0;f[i>>2]=0;f[i+4>>2]=0;i=1;return i|0}case 3:{i=f[c>>2]|0;e=a+48|0;g=f[e>>2]|0;e=f[e+4>>2]|0;c=a+40|0;a=(Ho(kn(f[c>>2]|0,f[c+4>>2]|0,i|0,((i|0)<0)<<31>>31|0)|0,I|0,g|0,e|0)|0)+(f[f[a>>2]>>2]|0)|0;e=a+2|0;e=h[e>>0]|h[e+1>>0]<<8;g=a+4|0;g=h[g>>0]|h[g+1>>0]<<8;a=(h[a>>0]|h[a+1>>0]<<8)<<16>>16;i=d;f[i>>2]=a;f[i+4>>2]=((a|0)<0)<<31>>31;e=e<<16>>16;i=d+8|0;f[i>>2]=e;f[i+4>>2]=((e|0)<0)<<31>>31;g=g<<16>>16;i=d+16|0;f[i>>2]=g;f[i+4>>2]=((g|0)<0)<<31>>31;i=1;return i|0}case 4:{e=f[c>>2]|0;g=a+48|0;i=f[g>>2]|0;g=f[g+4>>2]|0;c=a+40|0;g=(Ho(kn(f[c>>2]|0,f[c+4>>2]|0,e|0,((e|0)<0)<<31>>31|0)|0,I|0,i|0,g|0)|0)+(f[f[a>>2]>>2]|0)|0;i=g;i=h[i>>0]|h[i+1>>0]<<8|h[i+2>>0]<<16|h[i+3>>0]<<24;g=g+4|0;g=h[g>>0]|h[g+1>>0]<<8|h[g+2>>0]<<16|h[g+3>>0]<<24;e=An(On(i|0,g|0,48)|0,I|0,48)|0;a=d;f[a>>2]=e;f[a+4>>2]=I;a=An(0,i|0,48)|0;e=d+8|0;f[e>>2]=a;f[e+4>>2]=I;g=An(On(i|0,g|0,16)|0,I|0,48)|0;i=d+16|0;f[i>>2]=g;f[i+4>>2]=I;i=1;return i|0}default:{i=0;return i|0}}return 0}function Nd(a){a=a|0;var b=0,c=0,d=0;f[a>>2]=4752;fr(a+352|0);b=f[a+340>>2]|0;if(b|0){d=a+344|0;c=f[d>>2]|0;if((c|0)!=(b|0))f[d>>2]=c+(~((c+-4-b|0)>>>2)<<2);ar(b)}d=a+320|0;c=f[d>>2]|0;f[d>>2]=0;if(c|0){d=c+-4|0;b=f[d>>2]|0;if(b|0){b=c+(b<<4)|0;do{b=b+-16|0;fr(b)}while((b|0)!=(c|0))}_q(d)}fr(a+304|0);fr(a+264|0);Ei(a+228|0);b=f[a+212>>2]|0;if(b|0){d=a+216|0;c=f[d>>2]|0;if((c|0)!=(b|0))f[d>>2]=c+(~((c+-4-b|0)>>>2)<<2);ar(b)}b=f[a+200>>2]|0;if(b|0){d=a+204|0;c=f[d>>2]|0;if((c|0)!=(b|0))f[d>>2]=c+(~((c+-4-b|0)>>>2)<<2);ar(b)}b=f[a+188>>2]|0;if(b|0){d=a+192|0;c=f[d>>2]|0;if((c|0)!=(b|0))f[d>>2]=c+(~((c+-4-b|0)>>>2)<<2);ar(b)}b=f[a+176>>2]|0;if(b|0){d=a+180|0;c=f[d>>2]|0;if((c|0)!=(b|0))f[d>>2]=c+(~((c+-4-b|0)>>>2)<<2);ar(b)}b=f[a+160>>2]|0;if(b|0)do{d=b;b=f[b>>2]|0;ar(d)}while((b|0)!=0);d=a+152|0;b=f[d>>2]|0;f[d>>2]=0;if(b|0)ar(b);b=f[a+136>>2]|0;if(b|0)ar(b);b=f[a+124>>2]|0;if(b|0)ar(b);b=f[a+112>>2]|0;if(b|0)ar(b);b=f[a+88>>2]|0;if(b|0){d=a+92|0;c=f[d>>2]|0;if((c|0)!=(b|0))f[d>>2]=c+(~((c+-4-b|0)>>>2)<<2);ar(b)}b=f[a+76>>2]|0;if(b|0){d=a+80|0;c=f[d>>2]|0;if((c|0)!=(b|0))f[d>>2]=c+(~((c+-4-b|0)>>>2)<<2);ar(b)}b=f[a+64>>2]|0;if(b|0)ar(b);b=f[a+48>>2]|0;if(b|0){d=a+52|0;c=f[d>>2]|0;if((c|0)!=(b|0))f[d>>2]=c+(~((c+-4-b|0)>>>2)<<2);ar(b)}b=f[a+36>>2]|0;if(b|0){d=a+40|0;c=f[d>>2]|0;if((c|0)!=(b|0))f[d>>2]=c+(~(((c+-12-b|0)>>>0)/12|0)*12|0);ar(b)}b=f[a+24>>2]|0;if(b|0){d=a+28|0;c=f[d>>2]|0;if((c|0)!=(b|0))f[d>>2]=c+(~((c+-4-b|0)>>>2)<<2);ar(b)}b=f[a+12>>2]|0;if(b|0){d=a+16|0;c=f[d>>2]|0;if((c|0)!=(b|0))f[d>>2]=c+(~((c+-4-b|0)>>>2)<<2);ar(b)}a=a+8|0;b=f[a>>2]|0;f[a>>2]=0;if(!b)return;sj(b);ar(b);return}function Od(a,b){a=a|0;b=b|0;var c=0,d=0,e=0,g=0,h=0,i=0,j=0,k=0,l=0,m=0;k=a+92|0;i=f[b>>2]|0;j=(i|0)<0;l=i+1|0;do if(!j){b=((l|0)%3|0|0)==0?i+-2|0:l;if(!((i>>>0)%3|0)){d=b;g=i+2|0;break}else{d=b;g=i+-1|0;break}}else{d=i;g=i}while(0);h=a+128|0;b=f[h>>2]|0;switch(b|0){case 1:case 0:{if((d|0)<0)b=-1073741824;else b=f[(f[f[k>>2]>>2]|0)+(d<<2)>>2]|0;c=f[a+100>>2]|0;e=c+(b<<2)|0;f[e>>2]=(f[e>>2]|0)+1;if((g|0)<0){d=1;b=-1073741824;e=28}else{d=1;b=f[(f[f[k>>2]>>2]|0)+(g<<2)>>2]|0;e=28}break}case 5:{if(j)b=-1073741824;else b=f[(f[f[k>>2]>>2]|0)+(i<<2)>>2]|0;c=f[a+100>>2]|0;e=c+(b<<2)|0;f[e>>2]=(f[e>>2]|0)+1;if((d|0)<0)b=-1073741824;else b=f[(f[f[k>>2]>>2]|0)+(d<<2)>>2]|0;e=c+(b<<2)|0;f[e>>2]=(f[e>>2]|0)+1;if((g|0)<0){d=2;b=-1073741824;e=28}else{d=2;b=f[(f[f[k>>2]>>2]|0)+(g<<2)>>2]|0;e=28}break}case 3:{if(j)b=-1073741824;else b=f[(f[f[k>>2]>>2]|0)+(i<<2)>>2]|0;c=f[a+100>>2]|0;e=c+(b<<2)|0;f[e>>2]=(f[e>>2]|0)+1;if((d|0)<0)b=-1073741824;else b=f[(f[f[k>>2]>>2]|0)+(d<<2)>>2]|0;e=c+(b<<2)|0;f[e>>2]=(f[e>>2]|0)+2;if((g|0)<0){d=1;b=-1073741824;e=28}else{d=1;b=f[(f[f[k>>2]>>2]|0)+(g<<2)>>2]|0;e=28}break}case 7:{if(j)b=-1073741824;else b=f[(f[f[k>>2]>>2]|0)+(i<<2)>>2]|0;c=f[a+100>>2]|0;e=c+(b<<2)|0;f[e>>2]=(f[e>>2]|0)+2;if((d|0)<0)b=-1073741824;else b=f[(f[f[k>>2]>>2]|0)+(d<<2)>>2]|0;e=c+(b<<2)|0;f[e>>2]=(f[e>>2]|0)+2;if((g|0)<0){d=2;b=-1073741824;e=28}else{d=2;b=f[(f[f[k>>2]>>2]|0)+(g<<2)>>2]|0;e=28}break}default:{}}if((e|0)==28){b=c+(b<<2)|0;f[b>>2]=(f[b>>2]|0)+d;b=f[h>>2]|0}switch(b|0){case 5:case 0:break;default:{f[a+132>>2]=-1;return}}b=f[k>>2]|0;if(!j?(m=((l|0)%3|0|0)==0?i+-2|0:l,(m|0)>=0):0)b=f[(f[b>>2]|0)+(m<<2)>>2]|0;else b=-1073741824;f[a+132>>2]=(f[(f[a+100>>2]|0)+(b<<2)>>2]|0)<6?5:0;return}function Pd(a,b){a=a|0;b=b|0;var c=0,e=0,g=0,h=0,i=0,j=0,k=0,l=0,m=0,n=0;e=a+4|0;if(!b){c=f[a>>2]|0;f[a>>2]=0;if(c|0)ar(c);f[e>>2]=0;return}if(b>>>0>1073741823){a=Ia(4)|0;Eq(a);sa(a|0,1344,125)}n=ln(b<<2)|0;c=f[a>>2]|0;f[a>>2]=n;if(c|0)ar(c);f[e>>2]=b;c=0;do{f[(f[a>>2]|0)+(c<<2)>>2]=0;c=c+1|0}while((c|0)!=(b|0));e=a+8|0;h=f[e>>2]|0;if(!h)return;c=f[h+4>>2]|0;m=b+-1|0;n=(m&b|0)==0;if(n)g=c&m;else g=(c>>>0)%(b>>>0)|0;f[(f[a>>2]|0)+(g<<2)>>2]=e;c=f[h>>2]|0;if(!c)return;else{i=h;e=c;c=h}a:while(1){b:do if(n){l=i;j=c;while(1){c=e;while(1){k=f[c+4>>2]&m;if((k|0)==(g|0))break;e=(f[a>>2]|0)+(k<<2)|0;if(!(f[e>>2]|0)){h=j;g=k;break b}i=c+8|0;h=c;while(1){e=f[h>>2]|0;if(!e)break;if((d[i>>1]|0)==(d[e+8>>1]|0))h=e;else break}f[j>>2]=e;f[h>>2]=f[f[(f[a>>2]|0)+(k<<2)>>2]>>2];f[f[(f[a>>2]|0)+(k<<2)>>2]>>2]=c;c=f[l>>2]|0;if(!c){c=34;break a}}e=f[c>>2]|0;if(!e){c=34;break a}else{l=c;j=c}}}else{l=i;j=c;while(1){c=e;while(1){k=((f[c+4>>2]|0)>>>0)%(b>>>0)|0;if((k|0)==(g|0))break;e=(f[a>>2]|0)+(k<<2)|0;if(!(f[e>>2]|0)){h=j;g=k;break b}i=c+8|0;h=c;while(1){e=f[h>>2]|0;if(!e)break;if((d[i>>1]|0)==(d[e+8>>1]|0))h=e;else break}f[j>>2]=e;f[h>>2]=f[f[(f[a>>2]|0)+(k<<2)>>2]>>2];f[f[(f[a>>2]|0)+(k<<2)>>2]>>2]=c;c=f[l>>2]|0;if(!c){c=34;break a}}e=f[c>>2]|0;if(!e){c=34;break a}else{l=c;j=c}}}while(0);f[e>>2]=h;e=f[c>>2]|0;if(!e){c=34;break}else i=c}if((c|0)==34)return}function Qd(a,c){a=a|0;c=c|0;var d=0,e=0,g=0,h=0,i=0,j=0,k=0,l=0,m=0,n=0;e=a+4|0;if(!c){d=f[a>>2]|0;f[a>>2]=0;if(d|0)ar(d);f[e>>2]=0;return}if(c>>>0>1073741823){a=Ia(4)|0;Eq(a);sa(a|0,1344,125)}n=ln(c<<2)|0;d=f[a>>2]|0;f[a>>2]=n;if(d|0)ar(d);f[e>>2]=c;d=0;do{f[(f[a>>2]|0)+(d<<2)>>2]=0;d=d+1|0}while((d|0)!=(c|0));e=a+8|0;h=f[e>>2]|0;if(!h)return;d=f[h+4>>2]|0;m=c+-1|0;n=(m&c|0)==0;if(n)g=d&m;else g=(d>>>0)%(c>>>0)|0;f[(f[a>>2]|0)+(g<<2)>>2]=e;d=f[h>>2]|0;if(!d)return;else{i=h;e=d;d=h}a:while(1){b:do if(n){l=i;j=d;while(1){d=e;while(1){k=f[d+4>>2]&m;if((k|0)==(g|0))break;e=(f[a>>2]|0)+(k<<2)|0;if(!(f[e>>2]|0)){h=j;g=k;break b}i=d+8|0;h=d;while(1){e=f[h>>2]|0;if(!e)break;if((b[i>>0]|0)==(b[e+8>>0]|0))h=e;else break}f[j>>2]=e;f[h>>2]=f[f[(f[a>>2]|0)+(k<<2)>>2]>>2];f[f[(f[a>>2]|0)+(k<<2)>>2]>>2]=d;d=f[l>>2]|0;if(!d){d=34;break a}}e=f[d>>2]|0;if(!e){d=34;break a}else{l=d;j=d}}}else{l=i;j=d;while(1){d=e;while(1){k=((f[d+4>>2]|0)>>>0)%(c>>>0)|0;if((k|0)==(g|0))break;e=(f[a>>2]|0)+(k<<2)|0;if(!(f[e>>2]|0)){h=j;g=k;break b}i=d+8|0;h=d;while(1){e=f[h>>2]|0;if(!e)break;if((b[i>>0]|0)==(b[e+8>>0]|0))h=e;else break}f[j>>2]=e;f[h>>2]=f[f[(f[a>>2]|0)+(k<<2)>>2]>>2];f[f[(f[a>>2]|0)+(k<<2)>>2]>>2]=d;d=f[l>>2]|0;if(!d){d=34;break a}}e=f[d>>2]|0;if(!e){d=34;break a}else{l=d;j=d}}}while(0);f[e>>2]=h;e=f[d>>2]|0;if(!e){d=34;break}else i=d}if((d|0)==34)return}function Rd(a,c,d){a=a|0;c=c|0;d=d|0;var e=0,g=0,i=0;switch(b[a+24>>0]|0){case 1:{g=f[c>>2]|0;c=a+48|0;e=f[c>>2]|0;c=f[c+4>>2]|0;i=a+40|0;c=Ho(kn(f[i>>2]|0,f[i+4>>2]|0,g|0,((g|0)<0)<<31>>31|0)|0,I|0,e|0,c|0)|0;c=b[(f[f[a>>2]>>2]|0)+c>>0]|0;a=d;f[a>>2]=c;f[a+4>>2]=((c|0)<0)<<31>>31;a=d+8|0;f[a>>2]=0;f[a+4>>2]=0;f[a+8>>2]=0;f[a+12>>2]=0;f[a+16>>2]=0;f[a+20>>2]=0;a=1;return a|0}case 2:{i=f[c>>2]|0;g=a+48|0;e=f[g>>2]|0;g=f[g+4>>2]|0;c=a+40|0;g=(Ho(kn(f[c>>2]|0,f[c+4>>2]|0,i|0,((i|0)<0)<<31>>31|0)|0,I|0,e|0,g|0)|0)+(f[f[a>>2]>>2]|0)|0;g=h[g>>0]|h[g+1>>0]<<8;e=(g&255)<<24>>24;i=d;f[i>>2]=e;f[i+4>>2]=((e|0)<0)<<31>>31;g=((g&65535)>>>8&255)<<24>>24;i=d+8|0;f[i>>2]=g;f[i+4>>2]=((g|0)<0)<<31>>31;i=d+16|0;f[i>>2]=0;f[i+4>>2]=0;f[i+8>>2]=0;f[i+12>>2]=0;i=1;return i|0}case 3:{i=f[c>>2]|0;e=a+48|0;g=f[e>>2]|0;e=f[e+4>>2]|0;c=a+40|0;a=(Ho(kn(f[c>>2]|0,f[c+4>>2]|0,i|0,((i|0)<0)<<31>>31|0)|0,I|0,g|0,e|0)|0)+(f[f[a>>2]>>2]|0)|0;e=b[a+1>>0]|0;g=b[a+2>>0]|0;a=b[a>>0]|0;i=d;f[i>>2]=a;f[i+4>>2]=((a|0)<0)<<31>>31;e=e<<24>>24;i=d+8|0;f[i>>2]=e;f[i+4>>2]=((e|0)<0)<<31>>31;g=g<<24>>24;i=d+16|0;f[i>>2]=g;f[i+4>>2]=((g|0)<0)<<31>>31;i=d+24|0;f[i>>2]=0;f[i+4>>2]=0;i=1;return i|0}case 4:{i=f[c>>2]|0;g=a+48|0;e=f[g>>2]|0;g=f[g+4>>2]|0;c=a+40|0;g=(Ho(kn(f[c>>2]|0,f[c+4>>2]|0,i|0,((i|0)<0)<<31>>31|0)|0,I|0,e|0,g|0)|0)+(f[f[a>>2]>>2]|0)|0;g=h[g>>0]|h[g+1>>0]<<8|h[g+2>>0]<<16|h[g+3>>0]<<24;e=(g&255)<<24>>24;i=d;f[i>>2]=e;f[i+4>>2]=((e|0)<0)<<31>>31;i=(g>>>8&255)<<24>>24;e=d+8|0;f[e>>2]=i;f[e+4>>2]=((i|0)<0)<<31>>31;e=(g>>>16&255)<<24>>24;i=d+16|0;f[i>>2]=e;f[i+4>>2]=((e|0)<0)<<31>>31;g=(g>>>24&255)<<24>>24;i=d+24|0;f[i>>2]=g;f[i+4>>2]=((g|0)<0)<<31>>31;i=1;return i|0}default:{i=0;return i|0}}return 0}function Sd(a,b){a=a|0;b=b|0;var c=0,d=0,e=0,g=0,h=0,i=0,j=0,k=0,l=0,m=0;d=a+4|0;if(!b){c=f[a>>2]|0;f[a>>2]=0;if(c|0)ar(c);f[d>>2]=0;return}if(b>>>0>1073741823){a=Ia(4)|0;Eq(a);sa(a|0,1344,125)}m=ln(b<<2)|0;c=f[a>>2]|0;f[a>>2]=m;if(c|0)ar(c);f[d>>2]=b;c=0;do{f[(f[a>>2]|0)+(c<<2)>>2]=0;c=c+1|0}while((c|0)!=(b|0));d=a+8|0;g=f[d>>2]|0;if(!g)return;c=f[g+4>>2]|0;l=b+-1|0;m=(l&b|0)==0;if(m)e=c&l;else e=(c>>>0)%(b>>>0)|0;f[(f[a>>2]|0)+(e<<2)>>2]=d;c=f[g>>2]|0;if(!c)return;else{h=g;d=c;c=g}a:while(1){b:do if(m){k=h;i=c;while(1){c=d;while(1){j=f[c+4>>2]&l;if((j|0)==(e|0))break;d=(f[a>>2]|0)+(j<<2)|0;if(!(f[d>>2]|0)){g=i;e=j;break b}h=c+8|0;g=c;while(1){d=f[g>>2]|0;if(!d)break;if((f[h>>2]|0)==(f[d+8>>2]|0))g=d;else break}f[i>>2]=d;f[g>>2]=f[f[(f[a>>2]|0)+(j<<2)>>2]>>2];f[f[(f[a>>2]|0)+(j<<2)>>2]>>2]=c;c=f[k>>2]|0;if(!c){c=34;break a}}d=f[c>>2]|0;if(!d){c=34;break a}else{k=c;i=c}}}else{k=h;i=c;while(1){c=d;while(1){j=((f[c+4>>2]|0)>>>0)%(b>>>0)|0;if((j|0)==(e|0))break;d=(f[a>>2]|0)+(j<<2)|0;if(!(f[d>>2]|0)){g=i;e=j;break b}h=c+8|0;g=c;while(1){d=f[g>>2]|0;if(!d)break;if((f[h>>2]|0)==(f[d+8>>2]|0))g=d;else break}f[i>>2]=d;f[g>>2]=f[f[(f[a>>2]|0)+(j<<2)>>2]>>2];f[f[(f[a>>2]|0)+(j<<2)>>2]>>2]=c;c=f[k>>2]|0;if(!c){c=34;break a}}d=f[c>>2]|0;if(!d){c=34;break a}else{k=c;i=c}}}while(0);f[d>>2]=g;d=f[c>>2]|0;if(!d){c=34;break}else h=c}if((c|0)==34)return}function Td(a,c){a=a|0;c=c|0;var d=0,e=0,g=0,h=0,i=0,j=0,k=0,l=0,m=0,o=0,p=0,q=0,r=0,s=0,t=0,v=0,w=0,x=0;v=u;u=u+32|0;e=v+24|0;q=v+20|0;t=v+8|0;s=v+4|0;m=v;f[e>>2]=0;yj(e,f[a>>2]|0)|0;a:do if(f[e>>2]|0){d=0;while(1){d=d+1|0;if(!($d(a,c)|0)){d=0;break}if(d>>>0>=(f[e>>2]|0)>>>0)break a}u=v;return d|0}while(0);f[q>>2]=0;yj(q,f[a>>2]|0)|0;b:do if(!(f[q>>2]|0))d=1;else{i=0;while(1){f[t>>2]=0;f[t+4>>2]=0;f[t+8>>2]=0;g=f[a>>2]|0;w=g+8|0;x=f[w+4>>2]|0;h=g+16|0;e=h;d=f[e>>2]|0;e=f[e+4>>2]|0;if((x|0)>(e|0)|((x|0)==(e|0)?(f[w>>2]|0)>>>0>d>>>0:0)?(l=b[(f[g>>2]|0)+d>>0]|0,j=Ho(d|0,e|0,1,0)|0,p=h,f[p>>2]=j,f[p+4>>2]=I,p=l&255,Aj(t,p,0),j=f[a>>2]|0,o=wl(t,0)|0,g=j+8|0,w=f[g>>2]|0,g=f[g+4>>2]|0,r=j+16|0,x=r,k=f[x>>2]|0,l=l&255,x=Ho(k|0,f[x+4>>2]|0,l|0,0)|0,h=I,!((g|0)<(h|0)|(g|0)==(h|0)&w>>>0>>0)):0){Mg(o|0,(f[j>>2]|0)+k|0,p|0)|0;w=r;w=Ho(f[w>>2]|0,f[w+4>>2]|0,l|0,0)|0;x=r;f[x>>2]=w;f[x+4>>2]=I;x=ln(40)|0;f[x>>2]=0;f[x+4>>2]=0;f[x+8>>2]=0;f[x+12>>2]=0;n[x+16>>2]=$(1.0);w=x+20|0;f[w>>2]=0;f[w+4>>2]=0;f[w+8>>2]=0;f[w+12>>2]=0;n[x+36>>2]=$(1.0);f[s>>2]=x;if(Td(a,x)|0){d=f[s>>2]|0;f[s>>2]=0;f[m>>2]=d;pg(c,t,m)|0;Mi(m);d=0}else d=1;Mi(s)}else d=1;Lo(t);i=i+1|0;if(d|0){d=0;break b}if(i>>>0>=(f[q>>2]|0)>>>0){d=1;break}}}while(0);x=d;u=v;return x|0}function Ud(a,b){a=a|0;b=b|0;var c=0,d=0,e=0,g=0,h=0,i=0;i=a+92|0;c=f[b>>2]|0;d=(c|0)<0;b=c+1|0;do if(!d){b=((b|0)%3|0|0)==0?c+-2|0:b;if(!((c>>>0)%3|0)){h=b;g=c+2|0;break}else{h=b;g=c+-1|0;break}}else{h=c;g=c}while(0);switch(f[a+112>>2]|0){case 1:case 0:{if((h|0)<0)b=-1073741824;else b=f[(f[f[i>>2]>>2]|0)+(h<<2)>>2]|0;c=f[a+100>>2]|0;e=c+(b<<2)|0;f[e>>2]=(f[e>>2]|0)+1;if((g|0)<0){d=1;b=-1073741824;e=28}else{d=1;b=f[(f[f[i>>2]>>2]|0)+(g<<2)>>2]|0;e=28}break}case 5:{if(d)b=-1073741824;else b=f[(f[f[i>>2]>>2]|0)+(c<<2)>>2]|0;c=f[a+100>>2]|0;e=c+(b<<2)|0;f[e>>2]=(f[e>>2]|0)+1;if((h|0)<0)b=-1073741824;else b=f[(f[f[i>>2]>>2]|0)+(h<<2)>>2]|0;e=c+(b<<2)|0;f[e>>2]=(f[e>>2]|0)+1;if((g|0)<0){d=2;b=-1073741824;e=28}else{d=2;b=f[(f[f[i>>2]>>2]|0)+(g<<2)>>2]|0;e=28}break}case 3:{if(d)b=-1073741824;else b=f[(f[f[i>>2]>>2]|0)+(c<<2)>>2]|0;c=f[a+100>>2]|0;e=c+(b<<2)|0;f[e>>2]=(f[e>>2]|0)+1;if((h|0)<0)b=-1073741824;else b=f[(f[f[i>>2]>>2]|0)+(h<<2)>>2]|0;e=c+(b<<2)|0;f[e>>2]=(f[e>>2]|0)+2;if((g|0)<0){d=1;b=-1073741824;e=28}else{d=1;b=f[(f[f[i>>2]>>2]|0)+(g<<2)>>2]|0;e=28}break}case 7:{if(d)b=-1073741824;else b=f[(f[f[i>>2]>>2]|0)+(c<<2)>>2]|0;c=f[a+100>>2]|0;e=c+(b<<2)|0;f[e>>2]=(f[e>>2]|0)+2;if((h|0)<0)b=-1073741824;else b=f[(f[f[i>>2]>>2]|0)+(h<<2)>>2]|0;e=c+(b<<2)|0;f[e>>2]=(f[e>>2]|0)+2;if((g|0)<0){d=2;b=-1073741824;e=28}else{d=2;b=f[(f[f[i>>2]>>2]|0)+(g<<2)>>2]|0;e=28}break}default:{}}if((e|0)==28){g=c+(b<<2)|0;f[g>>2]=(f[g>>2]|0)+d}if((h|0)<0)b=-1073741824;else b=f[(f[f[i>>2]>>2]|0)+(h<<2)>>2]|0;b=f[(f[a+100>>2]|0)+(b<<2)>>2]|0;c=f[a+120>>2]|0;if((b|0)<(c|0)){i=c;i=i-c|0;a=a+116|0;f[a>>2]=i;return}i=f[a+124>>2]|0;i=(b|0)>(i|0)?i:b;i=i-c|0;a=a+116|0;f[a>>2]=i;return}function Vd(a,c,d){a=a|0;c=c|0;d=d|0;var e=0,g=0,i=0;switch(b[a+24>>0]|0){case 1:{g=f[c>>2]|0;c=a+48|0;e=f[c>>2]|0;c=f[c+4>>2]|0;i=a+40|0;c=(Ho(kn(f[i>>2]|0,f[i+4>>2]|0,g|0,((g|0)<0)<<31>>31|0)|0,I|0,e|0,c|0)|0)+(f[f[a>>2]>>2]|0)|0;a=d;f[a>>2]=h[c>>0]|h[c+1>>0]<<8|h[c+2>>0]<<16|h[c+3>>0]<<24;f[a+4>>2]=0;a=d+8|0;f[a>>2]=0;f[a+4>>2]=0;f[a+8>>2]=0;f[a+12>>2]=0;a=1;return a|0}case 2:{i=f[c>>2]|0;g=a+48|0;e=f[g>>2]|0;g=f[g+4>>2]|0;c=a+40|0;g=(Ho(kn(f[c>>2]|0,f[c+4>>2]|0,i|0,((i|0)<0)<<31>>31|0)|0,I|0,e|0,g|0)|0)+(f[f[a>>2]>>2]|0)|0;e=g;g=g+4|0;g=h[g>>0]|h[g+1>>0]<<8|h[g+2>>0]<<16|h[g+3>>0]<<24;i=d;f[i>>2]=h[e>>0]|h[e+1>>0]<<8|h[e+2>>0]<<16|h[e+3>>0]<<24;f[i+4>>2]=0;i=d+8|0;f[i>>2]=g;f[i+4>>2]=0;i=d+16|0;f[i>>2]=0;f[i+4>>2]=0;i=1;return i|0}case 3:{i=f[c>>2]|0;e=a+48|0;g=f[e>>2]|0;e=f[e+4>>2]|0;c=a+40|0;a=(Ho(kn(f[c>>2]|0,f[c+4>>2]|0,i|0,((i|0)<0)<<31>>31|0)|0,I|0,g|0,e|0)|0)+(f[f[a>>2]>>2]|0)|0;e=a+4|0;e=h[e>>0]|h[e+1>>0]<<8|h[e+2>>0]<<16|h[e+3>>0]<<24;g=a+8|0;g=h[g>>0]|h[g+1>>0]<<8|h[g+2>>0]<<16|h[g+3>>0]<<24;i=d;f[i>>2]=h[a>>0]|h[a+1>>0]<<8|h[a+2>>0]<<16|h[a+3>>0]<<24;f[i+4>>2]=0;i=d+8|0;f[i>>2]=e;f[i+4>>2]=0;i=d+16|0;f[i>>2]=g;f[i+4>>2]=0;i=1;return i|0}case 4:{i=f[c>>2]|0;e=a+48|0;g=f[e>>2]|0;e=f[e+4>>2]|0;c=a+40|0;a=(Ho(kn(f[c>>2]|0,f[c+4>>2]|0,i|0,((i|0)<0)<<31>>31|0)|0,I|0,g|0,e|0)|0)+(f[f[a>>2]>>2]|0)|0;e=a+4|0;e=h[e>>0]|h[e+1>>0]<<8|h[e+2>>0]<<16|h[e+3>>0]<<24;g=a+8|0;g=h[g>>0]|h[g+1>>0]<<8|h[g+2>>0]<<16|h[g+3>>0]<<24;i=d;f[i>>2]=h[a>>0]|h[a+1>>0]<<8|h[a+2>>0]<<16|h[a+3>>0]<<24;f[i+4>>2]=0;i=d+8|0;f[i>>2]=e;f[i+4>>2]=0;i=d+16|0;f[i>>2]=g;f[i+4>>2]=0;i=1;return i|0}default:{i=0;return i|0}}return 0}function Wd(a,c,d){a=a|0;c=c|0;d=d|0;var e=0,g=0,i=0;switch(b[a+24>>0]|0){case 1:{g=f[c>>2]|0;c=a+48|0;e=f[c>>2]|0;c=f[c+4>>2]|0;i=a+40|0;c=(Ho(kn(f[i>>2]|0,f[i+4>>2]|0,g|0,((g|0)<0)<<31>>31|0)|0,I|0,e|0,c|0)|0)+(f[f[a>>2]>>2]|0)|0;a=d;f[a>>2]=(h[c>>0]|h[c+1>>0]<<8)&65535;f[a+4>>2]=0;a=d+8|0;f[a>>2]=0;f[a+4>>2]=0;f[a+8>>2]=0;f[a+12>>2]=0;f[a+16>>2]=0;f[a+20>>2]=0;a=1;return a|0}case 2:{e=f[c>>2]|0;g=a+48|0;i=f[g>>2]|0;g=f[g+4>>2]|0;c=a+40|0;g=(Ho(kn(f[c>>2]|0,f[c+4>>2]|0,e|0,((e|0)<0)<<31>>31|0)|0,I|0,i|0,g|0)|0)+(f[f[a>>2]>>2]|0)|0;g=h[g>>0]|h[g+1>>0]<<8|h[g+2>>0]<<16|h[g+3>>0]<<24;i=d;f[i>>2]=g&65535;f[i+4>>2]=0;i=d+8|0;f[i>>2]=g>>>16;f[i+4>>2]=0;i=d+16|0;f[i>>2]=0;f[i+4>>2]=0;f[i+8>>2]=0;f[i+12>>2]=0;i=1;return i|0}case 3:{i=f[c>>2]|0;e=a+48|0;g=f[e>>2]|0;e=f[e+4>>2]|0;c=a+40|0;a=(Ho(kn(f[c>>2]|0,f[c+4>>2]|0,i|0,((i|0)<0)<<31>>31|0)|0,I|0,g|0,e|0)|0)+(f[f[a>>2]>>2]|0)|0;e=a+2|0;e=h[e>>0]|h[e+1>>0]<<8;g=a+4|0;g=h[g>>0]|h[g+1>>0]<<8;i=d;f[i>>2]=(h[a>>0]|h[a+1>>0]<<8)&65535;f[i+4>>2]=0;i=d+8|0;f[i>>2]=e&65535;f[i+4>>2]=0;i=d+16|0;f[i>>2]=g&65535;f[i+4>>2]=0;i=d+24|0;f[i>>2]=0;f[i+4>>2]=0;i=1;return i|0}case 4:{e=f[c>>2]|0;g=a+48|0;i=f[g>>2]|0;g=f[g+4>>2]|0;c=a+40|0;g=(Ho(kn(f[c>>2]|0,f[c+4>>2]|0,e|0,((e|0)<0)<<31>>31|0)|0,I|0,i|0,g|0)|0)+(f[f[a>>2]>>2]|0)|0;i=g;i=h[i>>0]|h[i+1>>0]<<8|h[i+2>>0]<<16|h[i+3>>0]<<24;g=g+4|0;g=h[g>>0]|h[g+1>>0]<<8|h[g+2>>0]<<16|h[g+3>>0]<<24;a=d;f[a>>2]=i&65535;f[a+4>>2]=0;a=Tn(i|0,g|0,16)|0;e=d+8|0;f[e>>2]=a&65535;f[e+4>>2]=0;e=d+16|0;f[e>>2]=g&65535;f[e+4>>2]=0;g=Tn(i|0,g|0,48)|0;i=d+24|0;f[i>>2]=g;f[i+4>>2]=I;i=1;return i|0}default:{i=0;return i|0}}return 0}function Xd(a,b,c,d,e,g){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;g=g|0;var h=0,i=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0;t=a+8|0;f[t>>2]=e;j=a+32|0;i=a+36|0;h=f[i>>2]|0;g=f[j>>2]|0;k=h-g>>2;if(k>>>0>=e>>>0)if(k>>>0>e>>>0?(l=g+(e<<2)|0,(h|0)!=(l|0)):0){f[i>>2]=h+(~((h+-4-l|0)>>>2)<<2);g=e}else g=e;else{ui(j,e-k|0);g=f[t>>2]|0}r=e>>>0>1073741823?-1:e<<2;s=Zq(r)|0;ej(s|0,0,r|0)|0;if((g|0)>0){l=a+16|0;i=a+32|0;m=a+12|0;j=0;do{g=f[s+(j<<2)>>2]|0;h=f[l>>2]|0;if((g|0)>(h|0)){k=f[i>>2]|0;f[k+(j<<2)>>2]=h}else{r=f[m>>2]|0;k=f[i>>2]|0;f[k+(j<<2)>>2]=(g|0)<(r|0)?r:g}j=j+1|0;g=f[t>>2]|0}while((j|0)<(g|0));if((g|0)>0){j=a+20|0;i=0;do{g=(f[b+(i<<2)>>2]|0)+(f[k+(i<<2)>>2]|0)|0;h=c+(i<<2)|0;f[h>>2]=g;if((g|0)<=(f[l>>2]|0)){if((g|0)<(f[m>>2]|0)){g=(f[j>>2]|0)+g|0;u=18}}else{g=g-(f[j>>2]|0)|0;u=18}if((u|0)==18){u=0;f[h>>2]=g}i=i+1|0;g=f[t>>2]|0}while((i|0)<(g|0))}}if((e|0)>=(d|0)){_q(s);return 1}p=0-e|0;q=a+16|0;o=a+32|0;r=a+12|0;n=a+20|0;a=e;do{l=c+(a<<2)|0;j=l+(p<<2)|0;m=b+(a<<2)|0;if((g|0)>0){i=0;do{g=f[j+(i<<2)>>2]|0;h=f[q>>2]|0;if((g|0)>(h|0)){k=f[o>>2]|0;f[k+(i<<2)>>2]=h}else{h=f[r>>2]|0;k=f[o>>2]|0;f[k+(i<<2)>>2]=(g|0)<(h|0)?h:g}i=i+1|0;g=f[t>>2]|0}while((i|0)<(g|0));if((g|0)>0){i=0;do{g=(f[m+(i<<2)>>2]|0)+(f[k+(i<<2)>>2]|0)|0;h=l+(i<<2)|0;f[h>>2]=g;if((g|0)<=(f[q>>2]|0)){if((g|0)<(f[r>>2]|0)){g=(f[n>>2]|0)+g|0;u=33}}else{g=g-(f[n>>2]|0)|0;u=33}if((u|0)==33){u=0;f[h>>2]=g}i=i+1|0;g=f[t>>2]|0}while((i|0)<(g|0))}}a=a+e|0}while((a|0)<(d|0));_q(s);return 1}function Yd(a,c){a=a|0;c=c|0;var d=0,e=0,g=0,h=0,i=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0;n=u;u=u+48|0;l=n+40|0;m=n;if(!(Ug(a,1,l)|0)){m=0;u=n;return m|0}k=a+40|0;e=a+16|0;i=f[e>>2]|0;d=(f[a>>2]|0)+i|0;o=a+8|0;e=Xn(f[o>>2]|0,f[o+4>>2]|0,i|0,f[e+4>>2]|0)|0;tn(k,d,e);e=l;d=f[e>>2]|0;e=f[e+4>>2]|0;i=a+48|0;o=i;j=a+56|0;h=j;g=f[h>>2]|0;h=f[h+4>>2]|0;o=Xn(f[o>>2]|0,f[o+4>>2]|0,g|0,h|0)|0;p=I;if(e>>>0>p>>>0|(e|0)==(p|0)&d>>>0>o>>>0){p=0;u=n;return p|0}o=Ho(g|0,h|0,d|0,e|0)|0;p=j;f[p>>2]=o;f[p+4>>2]=I;if(!(Ug(k,1,l)|0)){p=0;u=n;return p|0}Ym(m);e=j;p=f[e>>2]|0;d=(f[k>>2]|0)+p|0;e=Xn(f[i>>2]|0,f[i+4>>2]|0,p|0,f[e+4>>2]|0)|0;tn(m,d,e);e=l;d=f[e>>2]|0;e=f[e+4>>2]|0;p=m+8|0;i=m+16|0;h=i;g=f[h>>2]|0;h=f[h+4>>2]|0;p=Xn(f[p>>2]|0,f[p+4>>2]|0,g|0,h|0)|0;o=I;a:do if(e>>>0>o>>>0|(e|0)==(o|0)&d>>>0>p>>>0)d=0;else{d=Ho(g|0,h|0,d|0,e|0)|0;j=i;f[j>>2]=d;f[j+4>>2]=I;j=a+84|0;d=f[j>>2]|0;if((d|0)>0){h=d<<4;h=Zq(d>>>0>268435455|h>>>0>4294967291?-1:h+4|0)|0;f[h>>2]=d;h=h+4|0;e=h+(d<<4)|0;d=h;do{xq(d);d=d+16|0}while((d|0)!=(e|0));i=a+80|0;g=f[i>>2]|0;f[i>>2]=h;if(g|0){e=g+-4|0;d=f[e>>2]|0;if(d|0){d=g+(d<<4)|0;do{d=d+-16|0;fr(d)}while((d|0)!=(g|0))}_q(e)}if((f[j>>2]|0)>0){d=0;do{if(!(Ff((f[i>>2]|0)+(d<<4)|0,m)|0)){d=0;break a}d=d+1|0}while((d|0)<(f[j>>2]|0))}}d=c;e=m;g=d+36|0;do{f[d>>2]=f[e>>2];d=d+4|0;e=e+4|0}while((d|0)<(g|0));b[c+36>>0]=b[m+36>>0]|0;d=1}while(0);fr(m+24|0);p=d;u=n;return p|0}function Zd(a,c,d){a=a|0;c=c|0;d=d|0;var e=0,g=0,h=0,i=0,j=0;i=c+8|0;j=f[i+4>>2]|0;h=c+16|0;e=h;g=f[e>>2]|0;e=f[e+4>>2]|0;if(!((j|0)>(e|0)|((j|0)==(e|0)?(f[i>>2]|0)>>>0>g>>>0:0))){j=0;return j|0}j=b[(f[c>>2]|0)+g>>0]|0;g=Ho(g|0,e|0,1,0)|0;i=h;f[i>>2]=g;f[i+4>>2]=I;do switch(j<<24>>24){case 1:{j=Xc(a,c,d)|0;return j|0}case 2:{j=Xc(a,c,d)|0;return j|0}case 3:{j=Xc(a,c,d)|0;return j|0}case 4:{j=Xc(a,c,d)|0;return j|0}case 5:{j=xf(a,c,d)|0;return j|0}case 6:{j=Xc(a,c,d)|0;return j|0}case 7:{j=Xc(a,c,d)|0;return j|0}case 8:{j=Xc(a,c,d)|0;return j|0}case 9:{j=Wc(a,c,d)|0;return j|0}case 10:{j=Uc(a,c,d)|0;return j|0}case 11:{j=Tc(a,c,d)|0;return j|0}case 12:{j=Rc(a,c,d)|0;return j|0}case 13:{j=Qc(a,c,d)|0;return j|0}case 14:{j=Oc(a,c,d)|0;return j|0}case 15:{j=Oc(a,c,d)|0;return j|0}case 16:{j=Oc(a,c,d)|0;return j|0}case 17:{j=Oc(a,c,d)|0;return j|0}case 18:{j=Oc(a,c,d)|0;return j|0}default:{j=0;return j|0}}while(0);return 0}function _d(a){a=a|0;var b=0,c=0,d=0;f[a>>2]=4588;d=a+320|0;c=f[d>>2]|0;f[d>>2]=0;if(c|0){d=c+-4|0;b=f[d>>2]|0;if(b|0){b=c+(b<<4)|0;do{b=b+-16|0;fr(b)}while((b|0)!=(c|0))}_q(d)}fr(a+304|0);fr(a+264|0);Ei(a+228|0);b=f[a+212>>2]|0;if(b|0){d=a+216|0;c=f[d>>2]|0;if((c|0)!=(b|0))f[d>>2]=c+(~((c+-4-b|0)>>>2)<<2);ar(b)}b=f[a+200>>2]|0;if(b|0){d=a+204|0;c=f[d>>2]|0;if((c|0)!=(b|0))f[d>>2]=c+(~((c+-4-b|0)>>>2)<<2);ar(b)}b=f[a+188>>2]|0;if(b|0){d=a+192|0;c=f[d>>2]|0;if((c|0)!=(b|0))f[d>>2]=c+(~((c+-4-b|0)>>>2)<<2);ar(b)}b=f[a+176>>2]|0;if(b|0){d=a+180|0;c=f[d>>2]|0;if((c|0)!=(b|0))f[d>>2]=c+(~((c+-4-b|0)>>>2)<<2);ar(b)}b=f[a+160>>2]|0;if(b|0)do{d=b;b=f[b>>2]|0;ar(d)}while((b|0)!=0);d=a+152|0;b=f[d>>2]|0;f[d>>2]=0;if(b|0)ar(b);b=f[a+136>>2]|0;if(b|0)ar(b);b=f[a+124>>2]|0;if(b|0)ar(b);b=f[a+112>>2]|0;if(b|0)ar(b);b=f[a+88>>2]|0;if(b|0){d=a+92|0;c=f[d>>2]|0;if((c|0)!=(b|0))f[d>>2]=c+(~((c+-4-b|0)>>>2)<<2);ar(b)}b=f[a+76>>2]|0;if(b|0){d=a+80|0;c=f[d>>2]|0;if((c|0)!=(b|0))f[d>>2]=c+(~((c+-4-b|0)>>>2)<<2);ar(b)}b=f[a+64>>2]|0;if(b|0)ar(b);b=f[a+48>>2]|0;if(b|0){d=a+52|0;c=f[d>>2]|0;if((c|0)!=(b|0))f[d>>2]=c+(~((c+-4-b|0)>>>2)<<2);ar(b)}b=f[a+36>>2]|0;if(b|0){d=a+40|0;c=f[d>>2]|0;if((c|0)!=(b|0))f[d>>2]=c+(~(((c+-12-b|0)>>>0)/12|0)*12|0);ar(b)}b=f[a+24>>2]|0;if(b|0){d=a+28|0;c=f[d>>2]|0;if((c|0)!=(b|0))f[d>>2]=c+(~((c+-4-b|0)>>>2)<<2);ar(b)}b=f[a+12>>2]|0;if(b|0){d=a+16|0;c=f[d>>2]|0;if((c|0)!=(b|0))f[d>>2]=c+(~((c+-4-b|0)>>>2)<<2);ar(b)}a=a+8|0;b=f[a>>2]|0;f[a>>2]=0;if(!b)return;sj(b);ar(b);return}function $d(a,c){a=a|0;c=c|0;var d=0,e=0,g=0,h=0,i=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0;n=u;u=u+32|0;m=n+16|0;k=n+12|0;l=n;f[m>>2]=0;f[m+4>>2]=0;f[m+8>>2]=0;d=f[a>>2]|0;j=d+8|0;i=f[j+4>>2]|0;h=d+16|0;e=h;g=f[e>>2]|0;e=f[e+4>>2]|0;if(!((i|0)>(e|0)|((i|0)==(e|0)?(f[j>>2]|0)>>>0>g>>>0:0))){l=0;Lo(m);u=n;return l|0}q=b[(f[d>>2]|0)+g>>0]|0;d=Ho(g|0,e|0,1,0)|0;i=h;f[i>>2]=d;f[i+4>>2]=I;i=q&255;Aj(m,i,0);d=f[a>>2]|0;h=wl(m,0)|0;r=d+8|0;p=f[r>>2]|0;r=f[r+4>>2]|0;j=d+16|0;o=j;e=f[o>>2]|0;g=q&255;o=Ho(e|0,f[o+4>>2]|0,g|0,0)|0;q=I;if((r|0)<(q|0)|(r|0)==(q|0)&p>>>0>>0){r=0;Lo(m);u=n;return r|0}Mg(h|0,(f[d>>2]|0)+e|0,i|0)|0;i=j;i=Ho(f[i>>2]|0,f[i+4>>2]|0,g|0,0)|0;d=j;f[d>>2]=i;f[d+4>>2]=I;f[k>>2]=0;yj(k,f[a>>2]|0)|0;d=f[k>>2]|0;f[l>>2]=0;i=l+4|0;f[i>>2]=0;f[l+8>>2]=0;if(!d)h=0;else{if((d|0)<0)Lp(l);e=ln(d)|0;f[i>>2]=e;f[l>>2]=e;f[l+8>>2]=e+d;do{b[e>>0]=0;e=(f[i>>2]|0)+1|0;f[i>>2]=e;d=d+-1|0}while((d|0)!=0);h=f[k>>2]|0}d=f[a>>2]|0;o=d+8|0;q=f[o>>2]|0;o=f[o+4>>2]|0;g=d+16|0;r=g;e=f[r>>2]|0;r=Ho(e|0,f[r+4>>2]|0,h|0,0)|0;p=I;if((o|0)<(p|0)|(o|0)==(p|0)&q>>>0>>0)e=0;else{Mg(f[l>>2]|0,(f[d>>2]|0)+e|0,h|0)|0;r=g;r=Ho(f[r>>2]|0,f[r+4>>2]|0,h|0,0)|0;e=g;f[e>>2]=r;f[e+4>>2]=I;Im(c,m,l);e=1}d=f[l>>2]|0;if(d|0){if((f[i>>2]|0)!=(d|0))f[i>>2]=d;ar(d)}r=e;Lo(m);u=n;return r|0}function ae(a,c,d){a=a|0;c=c|0;d=d|0;var e=La,g=La,i=0,j=0,k=0;switch(b[a+24>>0]|0){case 1:{j=f[c>>2]|0;c=a+48|0;i=f[c>>2]|0;c=f[c+4>>2]|0;k=a+40|0;c=Ho(kn(f[k>>2]|0,f[k+4>>2]|0,j|0,((j|0)<0)<<31>>31|0)|0,I|0,i|0,c|0)|0;g=$(b[(f[f[a>>2]>>2]|0)+c>>0]|0);e=$(g/$(127.0));n[d>>2]=(b[a+32>>0]|0)==0?g:e;n[d+4>>2]=$(0.0);a=1;return a|0}case 2:{j=f[c>>2]|0;k=a+48|0;c=f[k>>2]|0;k=f[k+4>>2]|0;i=a+40|0;k=(Ho(kn(f[i>>2]|0,f[i+4>>2]|0,j|0,((j|0)<0)<<31>>31|0)|0,I|0,c|0,k|0)|0)+(f[f[a>>2]>>2]|0)|0;k=h[k>>0]|h[k+1>>0]<<8;c=(k&65535)>>>8&255;e=$((k&255)<<24>>24);if(!(b[a+32>>0]|0)){n[d>>2]=e;g=$(c<<24>>24);n[d+4>>2]=g;k=1;return k|0}else{g=$(e/$(127.0));n[d>>2]=g;g=$($(c<<24>>24)/$(127.0));n[d+4>>2]=g;k=1;return k|0}}case 3:{j=f[c>>2]|0;k=a+48|0;c=f[k>>2]|0;k=f[k+4>>2]|0;i=a+40|0;k=(Ho(kn(f[i>>2]|0,f[i+4>>2]|0,j|0,((j|0)<0)<<31>>31|0)|0,I|0,c|0,k|0)|0)+(f[f[a>>2]>>2]|0)|0;c=b[k+1>>0]|0;e=$(b[k>>0]|0);if(!(b[a+32>>0]|0)){n[d>>2]=e;g=$(c<<24>>24);n[d+4>>2]=g;k=1;return k|0}else{g=$(e/$(127.0));n[d>>2]=g;g=$($(c<<24>>24)/$(127.0));n[d+4>>2]=g;k=1;return k|0}}case 4:{j=f[c>>2]|0;k=a+48|0;c=f[k>>2]|0;k=f[k+4>>2]|0;i=a+40|0;k=(Ho(kn(f[i>>2]|0,f[i+4>>2]|0,j|0,((j|0)<0)<<31>>31|0)|0,I|0,c|0,k|0)|0)+(f[f[a>>2]>>2]|0)|0;k=h[k>>0]|h[k+1>>0]<<8|h[k+2>>0]<<16|h[k+3>>0]<<24;c=k>>>8&255;e=$((k&255)<<24>>24);if(!(b[a+32>>0]|0)){n[d>>2]=e;g=$(c<<24>>24);n[d+4>>2]=g;k=1;return k|0}else{g=$(e/$(127.0));n[d>>2]=g;g=$($(c<<24>>24)/$(127.0));n[d+4>>2]=g;k=1;return k|0}}default:{k=0;return k|0}}return 0}function be(a,b,c,d,e,g){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;g=g|0;var h=0,i=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,v=0,w=0,x=0,y=0,z=0;y=u;u=u+16|0;x=y+4|0;w=y;f[a+72>>2]=e;f[a+64>>2]=g;t=Zq(e>>>0>1073741823?-1:e<<2)|0;v=a+68|0;d=f[v>>2]|0;f[v>>2]=t;if(d|0)_q(d);t=a+8|0;f[t>>2]=e;i=a+32|0;h=a+36|0;g=f[h>>2]|0;d=f[i>>2]|0;j=g-d>>2;if(j>>>0>=e>>>0){if(j>>>0>e>>>0?(k=d+(e<<2)|0,(g|0)!=(k|0)):0)f[h>>2]=g+(~((g+-4-k|0)>>>2)<<2)}else ui(i,e-j|0);o=a+56|0;h=f[o>>2]|0;g=f[h+4>>2]|0;d=f[h>>2]|0;r=g-d|0;s=r>>2;if((r|0)<=0){u=y;return 1}q=a+16|0;n=a+32|0;r=a+12|0;p=a+20|0;i=h;h=0;while(1){if(g-d>>2>>>0<=h>>>0){Kp(i);d=f[i>>2]|0}f[w>>2]=f[d+(h<<2)>>2];f[x>>2]=f[w>>2];vc(a,x,c,h);m=X(h,e)|0;i=f[v>>2]|0;l=b+(m<<2)|0;m=c+(m<<2)|0;if((f[t>>2]|0)>0){j=0;do{d=f[i+(j<<2)>>2]|0;g=f[q>>2]|0;if((d|0)>(g|0)){k=f[n>>2]|0;f[k+(j<<2)>>2]=g}else{g=f[r>>2]|0;k=f[n>>2]|0;f[k+(j<<2)>>2]=(d|0)<(g|0)?g:d}j=j+1|0;d=f[t>>2]|0}while((j|0)<(d|0));if((d|0)>0){i=0;do{d=(f[l+(i<<2)>>2]|0)+(f[k+(i<<2)>>2]|0)|0;g=m+(i<<2)|0;f[g>>2]=d;if((d|0)<=(f[q>>2]|0)){if((d|0)<(f[r>>2]|0)){d=(f[p>>2]|0)+d|0;z=24}}else{d=d-(f[p>>2]|0)|0;z=24}if((z|0)==24){z=0;f[g>>2]=d}i=i+1|0}while((i|0)<(f[t>>2]|0))}}h=h+1|0;if((h|0)>=(s|0))break;i=f[o>>2]|0;d=f[i>>2]|0;g=f[i+4>>2]|0}u=y;return 1}function ce(a,b,c,d,e,g){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;g=g|0;var h=0,i=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,v=0,w=0,x=0,y=0,z=0;y=u;u=u+16|0;x=y+4|0;w=y;f[a+72>>2]=e;f[a+64>>2]=g;t=Zq(e>>>0>1073741823?-1:e<<2)|0;v=a+68|0;d=f[v>>2]|0;f[v>>2]=t;if(d|0)_q(d);t=a+8|0;f[t>>2]=e;i=a+32|0;h=a+36|0;g=f[h>>2]|0;d=f[i>>2]|0;j=g-d>>2;if(j>>>0>=e>>>0){if(j>>>0>e>>>0?(k=d+(e<<2)|0,(g|0)!=(k|0)):0)f[h>>2]=g+(~((g+-4-k|0)>>>2)<<2)}else ui(i,e-j|0);o=a+56|0;h=f[o>>2]|0;g=f[h+4>>2]|0;d=f[h>>2]|0;r=g-d|0;s=r>>2;if((r|0)<=0){u=y;return 1}q=a+16|0;n=a+32|0;r=a+12|0;p=a+20|0;i=h;h=0;while(1){if(g-d>>2>>>0<=h>>>0){Kp(i);d=f[i>>2]|0}f[w>>2]=f[d+(h<<2)>>2];f[x>>2]=f[w>>2];sc(a,x,c,h);m=X(h,e)|0;i=f[v>>2]|0;l=b+(m<<2)|0;m=c+(m<<2)|0;if((f[t>>2]|0)>0){j=0;do{d=f[i+(j<<2)>>2]|0;g=f[q>>2]|0;if((d|0)>(g|0)){k=f[n>>2]|0;f[k+(j<<2)>>2]=g}else{g=f[r>>2]|0;k=f[n>>2]|0;f[k+(j<<2)>>2]=(d|0)<(g|0)?g:d}j=j+1|0;d=f[t>>2]|0}while((j|0)<(d|0));if((d|0)>0){i=0;do{d=(f[l+(i<<2)>>2]|0)+(f[k+(i<<2)>>2]|0)|0;g=m+(i<<2)|0;f[g>>2]=d;if((d|0)<=(f[q>>2]|0)){if((d|0)<(f[r>>2]|0)){d=(f[p>>2]|0)+d|0;z=24}}else{d=d-(f[p>>2]|0)|0;z=24}if((z|0)==24){z=0;f[g>>2]=d}i=i+1|0}while((i|0)<(f[t>>2]|0))}}h=h+1|0;if((h|0)>=(s|0))break;i=f[o>>2]|0;d=f[i>>2]|0;g=f[i+4>>2]|0}u=y;return 1}function de(a,c){a=a|0;c=c|0;var d=0,e=0,g=0,h=0,i=0,j=0,k=0;k=a+8|0;e=f[k>>2]|0;switch(f[e+28>>2]|0){case 2:{d=b[e+24>>0]|0;j=d<<24>>24;i=Zq((j|0)>-1?j:-1)|0;h=f[a+16>>2]|0;h=(f[f[h>>2]>>2]|0)+(f[h+48>>2]|0)|0;a:do if(c|0){if(d<<24>>24>0){a=0;e=0}else{Mg(f[f[e+64>>2]>>2]|0,i|0,j|0)|0;if((c|0)==1)break;else{d=1;a=0}while(1){a=a+j|0;Mg((f[f[(f[k>>2]|0)+64>>2]>>2]|0)+a|0,i|0,j|0)|0;d=d+1|0;if((d|0)==(c|0))break a}}while(1){d=0;g=e;while(1){b[i+d>>0]=f[h+(g<<2)>>2];d=d+1|0;if((d|0)==(j|0))break;else g=g+1|0}Mg((f[f[(f[k>>2]|0)+64>>2]>>2]|0)+e|0,i|0,j|0)|0;a=a+1|0;if((a|0)==(c|0))break;else e=e+j|0}}while(0);_q(i);c=1;return c|0}case 1:{d=b[e+24>>0]|0;j=d<<24>>24;i=Zq((j|0)>-1?j:-1)|0;h=f[a+16>>2]|0;h=(f[f[h>>2]>>2]|0)+(f[h+48>>2]|0)|0;b:do if(c|0){if(d<<24>>24>0){a=0;e=0}else{Mg(f[f[e+64>>2]>>2]|0,i|0,j|0)|0;if((c|0)==1)break;else{d=1;a=0}while(1){a=a+j|0;Mg((f[f[(f[k>>2]|0)+64>>2]>>2]|0)+a|0,i|0,j|0)|0;d=d+1|0;if((d|0)==(c|0))break b}}while(1){d=0;g=e;while(1){b[i+d>>0]=f[h+(g<<2)>>2];d=d+1|0;if((d|0)==(j|0))break;else g=g+1|0}Mg((f[f[(f[k>>2]|0)+64>>2]>>2]|0)+e|0,i|0,j|0)|0;a=a+1|0;if((a|0)==(c|0))break;else e=e+j|0}}while(0);_q(i);c=1;return c|0}case 4:{di(a,c);c=1;return c|0}case 3:{di(a,c);c=1;return c|0}case 6:{ei(a,c);c=1;return c|0}case 5:{ei(a,c);c=1;return c|0}default:{c=0;return c|0}}return 0}function ee(a,c,d){a=a|0;c=c|0;d=d|0;var e=La,g=La,i=0,j=0,k=0;switch(b[a+24>>0]|0){case 1:{j=f[c>>2]|0;c=a+48|0;i=f[c>>2]|0;c=f[c+4>>2]|0;k=a+40|0;c=Ho(kn(f[k>>2]|0,f[k+4>>2]|0,j|0,((j|0)<0)<<31>>31|0)|0,I|0,i|0,c|0)|0;g=$(h[(f[f[a>>2]>>2]|0)+c>>0]|0);e=$(g/$(255.0));n[d>>2]=(b[a+32>>0]|0)==0?g:e;n[d+4>>2]=$(0.0);a=1;return a|0}case 2:{j=f[c>>2]|0;k=a+48|0;c=f[k>>2]|0;k=f[k+4>>2]|0;i=a+40|0;k=(Ho(kn(f[i>>2]|0,f[i+4>>2]|0,j|0,((j|0)<0)<<31>>31|0)|0,I|0,c|0,k|0)|0)+(f[f[a>>2]>>2]|0)|0;k=h[k>>0]|h[k+1>>0]<<8;c=(k&65535)>>>8&255;e=$(k&255);if(!(b[a+32>>0]|0)){n[d>>2]=e;g=$(c&255);n[d+4>>2]=g;k=1;return k|0}else{g=$(e/$(255.0));n[d>>2]=g;g=$($(c&255)/$(255.0));n[d+4>>2]=g;k=1;return k|0}}case 3:{j=f[c>>2]|0;k=a+48|0;c=f[k>>2]|0;k=f[k+4>>2]|0;i=a+40|0;k=(Ho(kn(f[i>>2]|0,f[i+4>>2]|0,j|0,((j|0)<0)<<31>>31|0)|0,I|0,c|0,k|0)|0)+(f[f[a>>2]>>2]|0)|0;c=b[k+1>>0]|0;e=$(h[k>>0]|0);if(!(b[a+32>>0]|0)){n[d>>2]=e;g=$(c&255);n[d+4>>2]=g;k=1;return k|0}else{g=$(e/$(255.0));n[d>>2]=g;g=$($(c&255)/$(255.0));n[d+4>>2]=g;k=1;return k|0}}case 4:{j=f[c>>2]|0;k=a+48|0;c=f[k>>2]|0;k=f[k+4>>2]|0;i=a+40|0;k=(Ho(kn(f[i>>2]|0,f[i+4>>2]|0,j|0,((j|0)<0)<<31>>31|0)|0,I|0,c|0,k|0)|0)+(f[f[a>>2]>>2]|0)|0;k=h[k>>0]|h[k+1>>0]<<8|h[k+2>>0]<<16|h[k+3>>0]<<24;c=k>>>8&255;e=$(k&255);if(!(b[a+32>>0]|0)){n[d>>2]=e;g=$(c&255);n[d+4>>2]=g;k=1;return k|0}else{g=$(e/$(255.0));n[d>>2]=g;g=$($(c&255)/$(255.0));n[d+4>>2]=g;k=1;return k|0}}default:{k=0;return k|0}}return 0}function fe(a,c,d){a=a|0;c=c|0;d=d|0;var e=0,g=0,i=0;switch(b[a+24>>0]|0){case 1:{g=f[c>>2]|0;c=a+48|0;e=f[c>>2]|0;c=f[c+4>>2]|0;i=a+40|0;c=Ho(kn(f[i>>2]|0,f[i+4>>2]|0,g|0,((g|0)<0)<<31>>31|0)|0,I|0,e|0,c|0)|0;c=b[(f[f[a>>2]>>2]|0)+c>>0]|0;a=d;f[a>>2]=c;f[a+4>>2]=((c|0)<0)<<31>>31;a=d+8|0;f[a>>2]=0;f[a+4>>2]=0;f[a+8>>2]=0;f[a+12>>2]=0;a=1;return a|0}case 2:{i=f[c>>2]|0;g=a+48|0;e=f[g>>2]|0;g=f[g+4>>2]|0;c=a+40|0;g=(Ho(kn(f[c>>2]|0,f[c+4>>2]|0,i|0,((i|0)<0)<<31>>31|0)|0,I|0,e|0,g|0)|0)+(f[f[a>>2]>>2]|0)|0;g=h[g>>0]|h[g+1>>0]<<8;e=(g&255)<<24>>24;i=d;f[i>>2]=e;f[i+4>>2]=((e|0)<0)<<31>>31;g=((g&65535)>>>8&255)<<24>>24;i=d+8|0;f[i>>2]=g;f[i+4>>2]=((g|0)<0)<<31>>31;i=d+16|0;f[i>>2]=0;f[i+4>>2]=0;i=1;return i|0}case 3:{i=f[c>>2]|0;e=a+48|0;g=f[e>>2]|0;e=f[e+4>>2]|0;c=a+40|0;a=(Ho(kn(f[c>>2]|0,f[c+4>>2]|0,i|0,((i|0)<0)<<31>>31|0)|0,I|0,g|0,e|0)|0)+(f[f[a>>2]>>2]|0)|0;e=b[a+1>>0]|0;g=b[a+2>>0]|0;a=b[a>>0]|0;i=d;f[i>>2]=a;f[i+4>>2]=((a|0)<0)<<31>>31;e=e<<24>>24;i=d+8|0;f[i>>2]=e;f[i+4>>2]=((e|0)<0)<<31>>31;g=g<<24>>24;i=d+16|0;f[i>>2]=g;f[i+4>>2]=((g|0)<0)<<31>>31;i=1;return i|0}case 4:{e=f[c>>2]|0;g=a+48|0;i=f[g>>2]|0;g=f[g+4>>2]|0;c=a+40|0;g=(Ho(kn(f[c>>2]|0,f[c+4>>2]|0,e|0,((e|0)<0)<<31>>31|0)|0,I|0,i|0,g|0)|0)+(f[f[a>>2]>>2]|0)|0;g=h[g>>0]|h[g+1>>0]<<8|h[g+2>>0]<<16|h[g+3>>0]<<24;i=(g&255)<<24>>24;e=d;f[e>>2]=i;f[e+4>>2]=((i|0)<0)<<31>>31;e=(g>>>8&255)<<24>>24;i=d+8|0;f[i>>2]=e;f[i+4>>2]=((e|0)<0)<<31>>31;g=(g>>>16&255)<<24>>24;i=d+16|0;f[i>>2]=g;f[i+4>>2]=((g|0)<0)<<31>>31;i=1;return i|0}default:{i=0;return i|0}}return 0}function ge(a,c,d){a=a|0;c=c|0;d=d|0;var e=0,g=0,i=0;switch(b[a+24>>0]|0){case 1:{g=f[c>>2]|0;c=a+48|0;e=f[c>>2]|0;c=f[c+4>>2]|0;i=a+40|0;c=(Ho(kn(f[i>>2]|0,f[i+4>>2]|0,g|0,((g|0)<0)<<31>>31|0)|0,I|0,e|0,c|0)|0)+(f[f[a>>2]>>2]|0)|0;a=d;f[a>>2]=(h[c>>0]|h[c+1>>0]<<8)&65535;f[a+4>>2]=0;a=d+8|0;f[a>>2]=0;f[a+4>>2]=0;f[a+8>>2]=0;f[a+12>>2]=0;a=1;return a|0}case 2:{e=f[c>>2]|0;g=a+48|0;i=f[g>>2]|0;g=f[g+4>>2]|0;c=a+40|0;g=(Ho(kn(f[c>>2]|0,f[c+4>>2]|0,e|0,((e|0)<0)<<31>>31|0)|0,I|0,i|0,g|0)|0)+(f[f[a>>2]>>2]|0)|0;g=h[g>>0]|h[g+1>>0]<<8|h[g+2>>0]<<16|h[g+3>>0]<<24;i=d;f[i>>2]=g&65535;f[i+4>>2]=0;i=d+8|0;f[i>>2]=g>>>16;f[i+4>>2]=0;i=d+16|0;f[i>>2]=0;f[i+4>>2]=0;i=1;return i|0}case 3:{i=f[c>>2]|0;e=a+48|0;g=f[e>>2]|0;e=f[e+4>>2]|0;c=a+40|0;a=(Ho(kn(f[c>>2]|0,f[c+4>>2]|0,i|0,((i|0)<0)<<31>>31|0)|0,I|0,g|0,e|0)|0)+(f[f[a>>2]>>2]|0)|0;e=a+2|0;e=h[e>>0]|h[e+1>>0]<<8;g=a+4|0;g=h[g>>0]|h[g+1>>0]<<8;i=d;f[i>>2]=(h[a>>0]|h[a+1>>0]<<8)&65535;f[i+4>>2]=0;i=d+8|0;f[i>>2]=e&65535;f[i+4>>2]=0;i=d+16|0;f[i>>2]=g&65535;f[i+4>>2]=0;i=1;return i|0}case 4:{i=f[c>>2]|0;g=a+48|0;e=f[g>>2]|0;g=f[g+4>>2]|0;c=a+40|0;g=(Ho(kn(f[c>>2]|0,f[c+4>>2]|0,i|0,((i|0)<0)<<31>>31|0)|0,I|0,e|0,g|0)|0)+(f[f[a>>2]>>2]|0)|0;e=g;e=h[e>>0]|h[e+1>>0]<<8|h[e+2>>0]<<16|h[e+3>>0]<<24;g=g+4|0;g=h[g>>0]|h[g+1>>0]<<8|h[g+2>>0]<<16|h[g+3>>0]<<24;i=d;f[i>>2]=e&65535;f[i+4>>2]=0;e=Tn(e|0,g|0,16)|0;i=d+8|0;f[i>>2]=e&65535;f[i+4>>2]=0;i=d+16|0;f[i>>2]=g&65535;f[i+4>>2]=0;i=1;return i|0}default:{i=0;return i|0}}return 0}function he(a,b,c,d){a=a|0;b=b|0;c=c|0;d=d|0;var e=0,g=0,h=0,i=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0;p=f[b>>2]|0;k=f[b+4>>2]|0;n=((f[c>>2]|0)-p<<3)+(f[c+4>>2]|0)-k|0;c=p;if((n|0)<=0){b=d+4|0;d=f[d>>2]|0;f[a>>2]=d;a=a+4|0;d=f[b>>2]|0;f[a>>2]=d;return}if(!k){l=d+4|0;e=f[l>>2]|0;g=n}else{i=32-k|0;m=(n|0)<(i|0)?n:i;i=-1>>>(i-m|0)&-1<>2];l=d+4|0;e=f[l>>2]|0;j=32-e|0;g=j>>>0>>0?j:m;h=f[d>>2]|0;e=f[h>>2]&~(-1>>>(j-g|0)&-1<>2]=e;j=f[l>>2]|0;f[h>>2]=(j>>>0>k>>>0?i<>>(k-j|0))|e;e=(f[l>>2]|0)+g|0;h=h+(e>>>5<<2)|0;f[d>>2]=h;e=e&31;f[l>>2]=e;j=m-g|0;if((j|0)>0){f[h>>2]=i>>>(k+g|0)|f[h>>2]&~(-1>>>(32-j|0));f[l>>2]=j;e=j}c=c+4|0;f[b>>2]=c;g=n-m|0}p=32-e|0;o=-1<>>0>31){n=~o;m=f[d>>2]|0;j=g+-32|0;h=j>>>5;i=h+1|0;h=j-(h<<5)|0;j=f[m>>2]|0;k=m;e=g;g=c;while(1){q=f[g>>2]|0;r=j&n;f[k>>2]=r;f[k>>2]=q<>2]|r;k=k+4|0;j=f[k>>2]&o|q>>>p;f[k>>2]=j;e=e+-32|0;if(e>>>0<=31)break;else g=g+4|0}c=c+(i<<2)|0;f[b>>2]=c;f[d>>2]=m+(i<<2)}else h=g;if(!h){q=l;r=f[d>>2]|0;f[a>>2]=r;r=a+4|0;q=f[q>>2]|0;f[r>>2]=q;return}i=f[c>>2]&-1>>>(32-h|0);g=(p|0)<(h|0)?p:h;e=f[d>>2]|0;c=f[e>>2]&~(-1<>2]&-1>>>(p-g|0));f[e>>2]=c;f[e>>2]=c|i<>2];c=(f[l>>2]|0)+g|0;e=e+(c>>>5<<2)|0;f[d>>2]=e;f[l>>2]=c&31;c=h-g|0;if((c|0)<=0){q=l;r=f[d>>2]|0;f[a>>2]=r;r=a+4|0;q=f[q>>2]|0;f[r>>2]=q;return}f[e>>2]=f[e>>2]&~(-1>>>(32-c|0))|i>>>g;f[l>>2]=c;q=l;r=f[d>>2]|0;f[a>>2]=r;r=a+4|0;q=f[q>>2]|0;f[r>>2]=q;return}function ie(a,c,d){a=a|0;c=c|0;d=d|0;var e=0,g=0,i=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0;p=u;u=u+16|0;n=p+4|0;m=p;i=c+8|0;k=i;e=f[k>>2]|0;k=f[k+4>>2]|0;l=c+16|0;j=l;g=f[j>>2]|0;j=f[j+4>>2]|0;q=Ho(g|0,j|0,4,0)|0;r=I;if((k|0)<(r|0)|(k|0)==(r|0)&e>>>0>>0)i=k;else{g=(f[c>>2]|0)+g|0;g=h[g>>0]|h[g+1>>0]<<8|h[g+2>>0]<<16|h[g+3>>0]<<24;b[a>>0]=g;b[a+1>>0]=g>>8;b[a+2>>0]=g>>16;b[a+3>>0]=g>>24;g=l;g=Ho(f[g>>2]|0,f[g+4>>2]|0,4,0)|0;j=I;e=l;f[e>>2]=g;f[e+4>>2]=j;e=i;i=f[e+4>>2]|0;e=f[e>>2]|0}k=a+4|0;r=Ho(g|0,j|0,4,0)|0;q=I;if((i|0)<(q|0)|(i|0)==(q|0)&e>>>0>>0)e=f[k>>2]|0;else{e=(f[c>>2]|0)+g|0;e=h[e>>0]|h[e+1>>0]<<8|h[e+2>>0]<<16|h[e+3>>0]<<24;b[k>>0]=e;b[k+1>>0]=e>>8;b[k+2>>0]=e>>16;b[k+3>>0]=e>>24;q=l;q=Ho(f[q>>2]|0,f[q+4>>2]|0,4,0)|0;r=l;f[r>>2]=q;f[r+4>>2]=I}if(!e){r=1;u=p;return r|0}else e=0;do{if(!(Ff(a+12+(e<<4)|0,c)|0)){e=0;o=14;break}e=e+1|0}while((e|0)<32);if((o|0)==14){u=p;return e|0}if(!(Ff(a+524|0,c)|0)){r=0;u=p;return r|0}if(!(Qf(a+540|0,c)|0)){r=0;u=p;return r|0}if(!(Qf(a+560|0,c)|0)){r=0;u=p;return r|0}if(!(Qf(a+580|0,c)|0)){r=0;u=p;return r|0}r=f[k>>2]|0;f[m>>2]=f[d>>2];f[n>>2]=f[m>>2];mb(a,r,n);r=1;u=p;return r|0}function je(a,c,d){a=a|0;c=c|0;d=d|0;var e=0,g=0,i=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0;p=u;u=u+16|0;n=p+4|0;m=p;i=c+8|0;k=i;e=f[k>>2]|0;k=f[k+4>>2]|0;l=c+16|0;j=l;g=f[j>>2]|0;j=f[j+4>>2]|0;q=Ho(g|0,j|0,4,0)|0;r=I;if((k|0)<(r|0)|(k|0)==(r|0)&e>>>0>>0)i=k;else{g=(f[c>>2]|0)+g|0;g=h[g>>0]|h[g+1>>0]<<8|h[g+2>>0]<<16|h[g+3>>0]<<24;b[a>>0]=g;b[a+1>>0]=g>>8;b[a+2>>0]=g>>16;b[a+3>>0]=g>>24;g=l;g=Ho(f[g>>2]|0,f[g+4>>2]|0,4,0)|0;j=I;e=l;f[e>>2]=g;f[e+4>>2]=j;e=i;i=f[e+4>>2]|0;e=f[e>>2]|0}k=a+4|0;r=Ho(g|0,j|0,4,0)|0;q=I;if((i|0)<(q|0)|(i|0)==(q|0)&e>>>0>>0)e=f[k>>2]|0;else{e=(f[c>>2]|0)+g|0;e=h[e>>0]|h[e+1>>0]<<8|h[e+2>>0]<<16|h[e+3>>0]<<24;b[k>>0]=e;b[k+1>>0]=e>>8;b[k+2>>0]=e>>16;b[k+3>>0]=e>>24;q=l;q=Ho(f[q>>2]|0,f[q+4>>2]|0,4,0)|0;r=l;f[r>>2]=q;f[r+4>>2]=I}if(!e){r=1;u=p;return r|0}else e=0;do{if(!(Ff(a+12+(e<<4)|0,c)|0)){e=0;o=14;break}e=e+1|0}while((e|0)<32);if((o|0)==14){u=p;return e|0}if(!(Ff(a+524|0,c)|0)){r=0;u=p;return r|0}if(!(Qf(a+540|0,c)|0)){r=0;u=p;return r|0}if(!(Qf(a+560|0,c)|0)){r=0;u=p;return r|0}if(!(Qf(a+580|0,c)|0)){r=0;u=p;return r|0}r=f[k>>2]|0;f[m>>2]=f[d>>2];f[n>>2]=f[m>>2];qb(a,r,n);r=1;u=p;return r|0}function ke(a,c,d){a=a|0;c=c|0;d=d|0;var e=0,g=0,i=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0;p=u;u=u+16|0;n=p+4|0;m=p;i=c+8|0;k=i;e=f[k>>2]|0;k=f[k+4>>2]|0;l=c+16|0;j=l;g=f[j>>2]|0;j=f[j+4>>2]|0;q=Ho(g|0,j|0,4,0)|0;r=I;if((k|0)<(r|0)|(k|0)==(r|0)&e>>>0>>0)i=k;else{g=(f[c>>2]|0)+g|0;g=h[g>>0]|h[g+1>>0]<<8|h[g+2>>0]<<16|h[g+3>>0]<<24;b[a>>0]=g;b[a+1>>0]=g>>8;b[a+2>>0]=g>>16;b[a+3>>0]=g>>24;g=l;g=Ho(f[g>>2]|0,f[g+4>>2]|0,4,0)|0;j=I;e=l;f[e>>2]=g;f[e+4>>2]=j;e=i;i=f[e+4>>2]|0;e=f[e>>2]|0}k=a+4|0;r=Ho(g|0,j|0,4,0)|0;q=I;if((i|0)<(q|0)|(i|0)==(q|0)&e>>>0>>0)e=f[k>>2]|0;else{e=(f[c>>2]|0)+g|0;e=h[e>>0]|h[e+1>>0]<<8|h[e+2>>0]<<16|h[e+3>>0]<<24;b[k>>0]=e;b[k+1>>0]=e>>8;b[k+2>>0]=e>>16;b[k+3>>0]=e>>24;q=l;q=Ho(f[q>>2]|0,f[q+4>>2]|0,4,0)|0;r=l;f[r>>2]=q;f[r+4>>2]=I}if(!e){r=1;u=p;return r|0}else e=0;do{if(!(Ff(a+12+(e<<4)|0,c)|0)){e=0;o=14;break}e=e+1|0}while((e|0)<32);if((o|0)==14){u=p;return e|0}if(!(Ff(a+524|0,c)|0)){r=0;u=p;return r|0}if(!(Qf(a+540|0,c)|0)){r=0;u=p;return r|0}if(!(Qf(a+560|0,c)|0)){r=0;u=p;return r|0}if(!(Qf(a+580|0,c)|0)){r=0;u=p;return r|0}r=f[k>>2]|0;f[m>>2]=f[d>>2];f[n>>2]=f[m>>2];ob(a,r,n);r=1;u=p;return r|0}function le(a){a=a|0;var c=0,d=0,e=0,g=0,h=0,i=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0;h=a+32|0;c=f[h>>2]|0;o=c+8|0;n=f[o+4>>2]|0;g=c+16|0;d=g;e=f[d>>2]|0;d=f[d+4>>2]|0;if(!((n|0)>(d|0)|((n|0)==(d|0)?(f[o>>2]|0)>>>0>e>>>0:0))){a=0;return a|0}n=b[(f[c>>2]|0)+e>>0]|0;m=Ho(e|0,d|0,1,0)|0;o=g;f[o>>2]=m;f[o+4>>2]=I;o=n&255;g=n<<24>>24==0;a:do if(!g){c=0;while(1){if(!(Wa[f[(f[a>>2]|0)+16>>2]&127](a,c)|0)){c=0;break}c=c+1|0;if((c|0)>=(o|0))break a}return c|0}while(0);n=a+8|0;c=f[n>>2]|0;d=f[a+12>>2]|0;b:do if((c|0)!=(d|0)){e=a+4|0;while(1){m=f[c>>2]|0;c=c+4|0;if(!(Na[f[(f[m>>2]|0)+8>>2]&31](m,a,f[e>>2]|0)|0)){c=0;break}if((c|0)==(d|0))break b}return c|0}while(0);if(!g){c=0;do{m=f[(f[n>>2]|0)+(c<<2)>>2]|0;c=c+1|0;if(!(Wa[f[(f[m>>2]|0)+12>>2]&127](m,f[h>>2]|0)|0)){c=0;i=26;break}}while((c|0)<(o|0));if((i|0)==26)return c|0;if(!g){i=a+20|0;h=a+24|0;l=0;do{j=f[(f[n>>2]|0)+(l<<2)>>2]|0;j=Sa[f[(f[j>>2]|0)+24>>2]&255](j)|0;if((j|0)>0){m=0;do{k=f[(f[n>>2]|0)+(l<<2)>>2]|0;k=Wa[f[(f[k>>2]|0)+20>>2]&127](k,m)|0;d=f[h>>2]|0;c=f[i>>2]|0;g=d-c>>2;do if(k>>>0>=g>>>0){e=k+1|0;if(e>>>0>g>>>0){ui(i,e-g|0);c=f[i>>2]|0;break}if(e>>>0>>0?(p=c+(e<<2)|0,(d|0)!=(p|0)):0)f[h>>2]=d+(~((d+-4-p|0)>>>2)<<2)}while(0);f[c+(k<<2)>>2]=l;m=m+1|0}while((m|0)!=(j|0))}l=l+1|0}while((l|0)!=(o|0))}}if(!(Sa[f[(f[a>>2]|0)+28>>2]&255](a)|0)){a=0;return a|0}a=Sa[f[(f[a>>2]|0)+32>>2]&255](a)|0;return a|0}function me(a,b,c,d,e,g){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;g=g|0;var h=0,i=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,v=0,w=0,x=0,y=0;x=u;u=u+16|0;v=x+4|0;t=x;w=a+60|0;f[a+64>>2]=g;s=a+8|0;f[s>>2]=e;i=a+32|0;h=a+36|0;g=f[h>>2]|0;d=f[i>>2]|0;j=g-d>>2;if(j>>>0>=e>>>0){if(j>>>0>e>>>0?(k=d+(e<<2)|0,(g|0)!=(k|0)):0)f[h>>2]=g+(~((g+-4-k|0)>>>2)<<2)}else ui(i,e-j|0);n=a+56|0;i=f[n>>2]|0;g=f[i+4>>2]|0;d=f[i>>2]|0;q=g-d|0;r=q>>2;if((q|0)<=0){u=x;return 1}p=a+16|0;m=a+32|0;q=a+12|0;o=a+20|0;h=0;while(1){if(g-d>>2>>>0<=h>>>0){Kp(i);d=f[i>>2]|0}f[t>>2]=f[d+(h<<2)>>2];f[v>>2]=f[t>>2];Pb(w,v,c,h);l=X(h,e)|0;k=b+(l<<2)|0;l=c+(l<<2)|0;if((f[s>>2]|0)>0){i=0;do{d=f[a+68+(i<<2)>>2]|0;g=f[p>>2]|0;if((d|0)>(g|0)){j=f[m>>2]|0;f[j+(i<<2)>>2]=g}else{g=f[q>>2]|0;j=f[m>>2]|0;f[j+(i<<2)>>2]=(d|0)<(g|0)?g:d}i=i+1|0;d=f[s>>2]|0}while((i|0)<(d|0));if((d|0)>0){i=0;do{d=(f[k+(i<<2)>>2]|0)+(f[j+(i<<2)>>2]|0)|0;g=l+(i<<2)|0;f[g>>2]=d;if((d|0)<=(f[p>>2]|0)){if((d|0)<(f[q>>2]|0)){d=(f[o>>2]|0)+d|0;y=22}}else{d=d-(f[o>>2]|0)|0;y=22}if((y|0)==22){y=0;f[g>>2]=d}i=i+1|0}while((i|0)<(f[s>>2]|0))}}h=h+1|0;if((h|0)>=(r|0))break;i=f[n>>2]|0;d=f[i>>2]|0;g=f[i+4>>2]|0}u=x;return 1}function ne(a,c){a=a|0;c=c|0;var d=0,e=0,g=0,i=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0;r=a+12|0;q=c+8|0;l=q;n=f[l>>2]|0;l=f[l+4>>2]|0;s=c+16|0;o=s;d=f[o>>2]|0;o=Ho(d|0,f[o+4>>2]|0,4,0)|0;m=I;if((l|0)<(m|0)|(l|0)==(m|0)&n>>>0>>0){a=0;return a|0}d=(f[c>>2]|0)+d|0;d=h[d>>0]|h[d+1>>0]<<8|h[d+2>>0]<<16|h[d+3>>0]<<24;b[r>>0]=d;b[r+1>>0]=d>>8;b[r+2>>0]=d>>16;b[r+3>>0]=d>>24;g=s;g=Ho(f[g>>2]|0,f[g+4>>2]|0,4,0)|0;i=s;f[i>>2]=g;f[i+4>>2]=I;i=a+4|0;g=f[i>>2]|0;e=f[a>>2]|0;j=g-e>>2;if(d>>>0<=j>>>0){if(d>>>0>>0?(k=e+(d<<2)|0,(g|0)!=(k|0)):0)f[i>>2]=g+(~((g+-4-k|0)>>>2)<<2)}else{ui(a,d-j|0);d=f[r>>2]|0}if(!d){a=1;return a|0}o=0;a:while(1){m=q;l=f[m>>2]|0;m=f[m+4>>2]|0;g=s;e=f[g>>2]|0;g=f[g+4>>2]|0;if(!((m|0)>(g|0)|(m|0)==(g|0)&l>>>0>e>>>0)){d=0;p=18;break}n=f[c>>2]|0;i=b[n+e>>0]|0;g=Ho(e|0,g|0,1,0)|0;e=I;j=s;f[j>>2]=g;f[j+4>>2]=e;j=i&255;k=j&3;j=j>>>2;switch(i&3){case 3:{e=j+o|0;if(e>>>0>=d>>>0){d=0;p=18;break a}ej((f[a>>2]|0)+(o<<2)|0,0,(j<<2)+4|0)|0;d=e;break}case 0:{d=j;p=15;break}default:{i=0;d=j;while(1){if(!((m|0)>(e|0)|(m|0)==(e|0)&l>>>0>g>>>0)){d=0;p=18;break a}p=b[n+g>>0]|0;g=Ho(g|0,e|0,1,0)|0;e=I;j=s;f[j>>2]=g;f[j+4>>2]=e;d=(p&255)<<(i<<3|6)|d;i=i+1|0;if((i|0)>=(k|0)){p=15;break}}}}if((p|0)==15){p=0;f[(f[a>>2]|0)+(o<<2)>>2]=d;d=o}o=d+1|0;d=f[r>>2]|0;if(o>>>0>=d>>>0){p=17;break}}if((p|0)==17){a=th(a+16|0,f[a>>2]|0,d)|0;return a|0}else if((p|0)==18)return d|0;return 0}function oe(a,c){a=a|0;c=c|0;var d=0,e=0,g=0,i=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0;r=a+12|0;q=c+8|0;l=q;n=f[l>>2]|0;l=f[l+4>>2]|0;s=c+16|0;o=s;d=f[o>>2]|0;o=Ho(d|0,f[o+4>>2]|0,4,0)|0;m=I;if((l|0)<(m|0)|(l|0)==(m|0)&n>>>0>>0){a=0;return a|0}d=(f[c>>2]|0)+d|0;d=h[d>>0]|h[d+1>>0]<<8|h[d+2>>0]<<16|h[d+3>>0]<<24;b[r>>0]=d;b[r+1>>0]=d>>8;b[r+2>>0]=d>>16;b[r+3>>0]=d>>24;g=s;g=Ho(f[g>>2]|0,f[g+4>>2]|0,4,0)|0;i=s;f[i>>2]=g;f[i+4>>2]=I;i=a+4|0;g=f[i>>2]|0;e=f[a>>2]|0;j=g-e>>2;if(d>>>0<=j>>>0){if(d>>>0>>0?(k=e+(d<<2)|0,(g|0)!=(k|0)):0)f[i>>2]=g+(~((g+-4-k|0)>>>2)<<2)}else{ui(a,d-j|0);d=f[r>>2]|0}if(!d){a=1;return a|0}o=0;a:while(1){m=q;l=f[m>>2]|0;m=f[m+4>>2]|0;g=s;e=f[g>>2]|0;g=f[g+4>>2]|0;if(!((m|0)>(g|0)|(m|0)==(g|0)&l>>>0>e>>>0)){d=0;p=18;break}n=f[c>>2]|0;i=b[n+e>>0]|0;g=Ho(e|0,g|0,1,0)|0;e=I;j=s;f[j>>2]=g;f[j+4>>2]=e;j=i&255;k=j&3;j=j>>>2;switch(i&3){case 3:{e=j+o|0;if(e>>>0>=d>>>0){d=0;p=18;break a}ej((f[a>>2]|0)+(o<<2)|0,0,(j<<2)+4|0)|0;d=e;break}case 0:{d=j;p=15;break}default:{i=0;d=j;while(1){if(!((m|0)>(e|0)|(m|0)==(e|0)&l>>>0>g>>>0)){d=0;p=18;break a}p=b[n+g>>0]|0;g=Ho(g|0,e|0,1,0)|0;e=I;j=s;f[j>>2]=g;f[j+4>>2]=e;d=(p&255)<<(i<<3|6)|d;i=i+1|0;if((i|0)>=(k|0)){p=15;break}}}}if((p|0)==15){p=0;f[(f[a>>2]|0)+(o<<2)>>2]=d;d=o}o=d+1|0;d=f[r>>2]|0;if(o>>>0>=d>>>0){p=17;break}}if((p|0)==17){a=wh(a+16|0,f[a>>2]|0,d)|0;return a|0}else if((p|0)==18)return d|0;return 0}function pe(a,c){a=a|0;c=c|0;var d=0,e=0,g=0,i=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0;r=a+12|0;q=c+8|0;l=q;n=f[l>>2]|0;l=f[l+4>>2]|0;s=c+16|0;o=s;d=f[o>>2]|0;o=Ho(d|0,f[o+4>>2]|0,4,0)|0;m=I;if((l|0)<(m|0)|(l|0)==(m|0)&n>>>0>>0){a=0;return a|0}d=(f[c>>2]|0)+d|0;d=h[d>>0]|h[d+1>>0]<<8|h[d+2>>0]<<16|h[d+3>>0]<<24;b[r>>0]=d;b[r+1>>0]=d>>8;b[r+2>>0]=d>>16;b[r+3>>0]=d>>24;g=s;g=Ho(f[g>>2]|0,f[g+4>>2]|0,4,0)|0;i=s;f[i>>2]=g;f[i+4>>2]=I;i=a+4|0;g=f[i>>2]|0;e=f[a>>2]|0;j=g-e>>2;if(d>>>0<=j>>>0){if(d>>>0>>0?(k=e+(d<<2)|0,(g|0)!=(k|0)):0)f[i>>2]=g+(~((g+-4-k|0)>>>2)<<2)}else{ui(a,d-j|0);d=f[r>>2]|0}if(!d){a=1;return a|0}o=0;a:while(1){m=q;l=f[m>>2]|0;m=f[m+4>>2]|0;g=s;e=f[g>>2]|0;g=f[g+4>>2]|0;if(!((m|0)>(g|0)|(m|0)==(g|0)&l>>>0>e>>>0)){d=0;p=18;break}n=f[c>>2]|0;i=b[n+e>>0]|0;g=Ho(e|0,g|0,1,0)|0;e=I;j=s;f[j>>2]=g;f[j+4>>2]=e;j=i&255;k=j&3;j=j>>>2;switch(i&3){case 3:{e=j+o|0;if(e>>>0>=d>>>0){d=0;p=18;break a}ej((f[a>>2]|0)+(o<<2)|0,0,(j<<2)+4|0)|0;d=e;break}case 0:{d=j;p=15;break}default:{i=0;d=j;while(1){if(!((m|0)>(e|0)|(m|0)==(e|0)&l>>>0>g>>>0)){d=0;p=18;break a}p=b[n+g>>0]|0;g=Ho(g|0,e|0,1,0)|0;e=I;j=s;f[j>>2]=g;f[j+4>>2]=e;d=(p&255)<<(i<<3|6)|d;i=i+1|0;if((i|0)>=(k|0)){p=15;break}}}}if((p|0)==15){p=0;f[(f[a>>2]|0)+(o<<2)>>2]=d;d=o}o=d+1|0;d=f[r>>2]|0;if(o>>>0>=d>>>0){p=17;break}}if((p|0)==17){a=xh(a+16|0,f[a>>2]|0,d)|0;return a|0}else if((p|0)==18)return d|0;return 0}function qe(a,c){a=a|0;c=c|0;var d=0,e=0,g=0,i=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0;r=a+12|0;q=c+8|0;l=q;n=f[l>>2]|0;l=f[l+4>>2]|0;s=c+16|0;o=s;d=f[o>>2]|0;o=Ho(d|0,f[o+4>>2]|0,4,0)|0;m=I;if((l|0)<(m|0)|(l|0)==(m|0)&n>>>0>>0){a=0;return a|0}d=(f[c>>2]|0)+d|0;d=h[d>>0]|h[d+1>>0]<<8|h[d+2>>0]<<16|h[d+3>>0]<<24;b[r>>0]=d;b[r+1>>0]=d>>8;b[r+2>>0]=d>>16;b[r+3>>0]=d>>24;g=s;g=Ho(f[g>>2]|0,f[g+4>>2]|0,4,0)|0;i=s;f[i>>2]=g;f[i+4>>2]=I;i=a+4|0;g=f[i>>2]|0;e=f[a>>2]|0;j=g-e>>2;if(d>>>0<=j>>>0){if(d>>>0>>0?(k=e+(d<<2)|0,(g|0)!=(k|0)):0)f[i>>2]=g+(~((g+-4-k|0)>>>2)<<2)}else{ui(a,d-j|0);d=f[r>>2]|0}if(!d){a=1;return a|0}o=0;a:while(1){m=q;l=f[m>>2]|0;m=f[m+4>>2]|0;g=s;e=f[g>>2]|0;g=f[g+4>>2]|0;if(!((m|0)>(g|0)|(m|0)==(g|0)&l>>>0>e>>>0)){d=0;p=18;break}n=f[c>>2]|0;i=b[n+e>>0]|0;g=Ho(e|0,g|0,1,0)|0;e=I;j=s;f[j>>2]=g;f[j+4>>2]=e;j=i&255;k=j&3;j=j>>>2;switch(i&3){case 3:{e=j+o|0;if(e>>>0>=d>>>0){d=0;p=18;break a}ej((f[a>>2]|0)+(o<<2)|0,0,(j<<2)+4|0)|0;d=e;break}case 0:{d=j;p=15;break}default:{i=0;d=j;while(1){if(!((m|0)>(e|0)|(m|0)==(e|0)&l>>>0>g>>>0)){d=0;p=18;break a}p=b[n+g>>0]|0;g=Ho(g|0,e|0,1,0)|0;e=I;j=s;f[j>>2]=g;f[j+4>>2]=e;d=(p&255)<<(i<<3|6)|d;i=i+1|0;if((i|0)>=(k|0)){p=15;break}}}}if((p|0)==15){p=0;f[(f[a>>2]|0)+(o<<2)>>2]=d;d=o}o=d+1|0;d=f[r>>2]|0;if(o>>>0>=d>>>0){p=17;break}}if((p|0)==17){a=yh(a+16|0,f[a>>2]|0,d)|0;return a|0}else if((p|0)==18)return d|0;return 0}function re(a,c){a=a|0;c=c|0;var d=0,e=0,g=0,i=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0;r=a+12|0;q=c+8|0;l=q;n=f[l>>2]|0;l=f[l+4>>2]|0;s=c+16|0;o=s;d=f[o>>2]|0;o=Ho(d|0,f[o+4>>2]|0,4,0)|0;m=I;if((l|0)<(m|0)|(l|0)==(m|0)&n>>>0>>0){a=0;return a|0}d=(f[c>>2]|0)+d|0;d=h[d>>0]|h[d+1>>0]<<8|h[d+2>>0]<<16|h[d+3>>0]<<24;b[r>>0]=d;b[r+1>>0]=d>>8;b[r+2>>0]=d>>16;b[r+3>>0]=d>>24;g=s;g=Ho(f[g>>2]|0,f[g+4>>2]|0,4,0)|0;i=s;f[i>>2]=g;f[i+4>>2]=I;i=a+4|0;g=f[i>>2]|0;e=f[a>>2]|0;j=g-e>>2;if(d>>>0<=j>>>0){if(d>>>0>>0?(k=e+(d<<2)|0,(g|0)!=(k|0)):0)f[i>>2]=g+(~((g+-4-k|0)>>>2)<<2)}else{ui(a,d-j|0);d=f[r>>2]|0}if(!d){a=1;return a|0}o=0;a:while(1){m=q;l=f[m>>2]|0;m=f[m+4>>2]|0;g=s;e=f[g>>2]|0;g=f[g+4>>2]|0;if(!((m|0)>(g|0)|(m|0)==(g|0)&l>>>0>e>>>0)){d=0;p=18;break}n=f[c>>2]|0;i=b[n+e>>0]|0;g=Ho(e|0,g|0,1,0)|0;e=I;j=s;f[j>>2]=g;f[j+4>>2]=e;j=i&255;k=j&3;j=j>>>2;switch(i&3){case 3:{e=j+o|0;if(e>>>0>=d>>>0){d=0;p=18;break a}ej((f[a>>2]|0)+(o<<2)|0,0,(j<<2)+4|0)|0;d=e;break}case 0:{d=j;p=15;break}default:{i=0;d=j;while(1){if(!((m|0)>(e|0)|(m|0)==(e|0)&l>>>0>g>>>0)){d=0;p=18;break a}p=b[n+g>>0]|0;g=Ho(g|0,e|0,1,0)|0;e=I;j=s;f[j>>2]=g;f[j+4>>2]=e;d=(p&255)<<(i<<3|6)|d;i=i+1|0;if((i|0)>=(k|0)){p=15;break}}}}if((p|0)==15){p=0;f[(f[a>>2]|0)+(o<<2)>>2]=d;d=o}o=d+1|0;d=f[r>>2]|0;if(o>>>0>=d>>>0){p=17;break}}if((p|0)==17){a=zh(a+16|0,f[a>>2]|0,d)|0;return a|0}else if((p|0)==18)return d|0;return 0}function se(a,c){a=a|0;c=c|0;var d=0,e=0,g=0,i=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0;r=a+12|0;q=c+8|0;l=q;n=f[l>>2]|0;l=f[l+4>>2]|0;s=c+16|0;o=s;d=f[o>>2]|0;o=Ho(d|0,f[o+4>>2]|0,4,0)|0;m=I;if((l|0)<(m|0)|(l|0)==(m|0)&n>>>0>>0){a=0;return a|0}d=(f[c>>2]|0)+d|0;d=h[d>>0]|h[d+1>>0]<<8|h[d+2>>0]<<16|h[d+3>>0]<<24;b[r>>0]=d;b[r+1>>0]=d>>8;b[r+2>>0]=d>>16;b[r+3>>0]=d>>24;g=s;g=Ho(f[g>>2]|0,f[g+4>>2]|0,4,0)|0;i=s;f[i>>2]=g;f[i+4>>2]=I;i=a+4|0;g=f[i>>2]|0;e=f[a>>2]|0;j=g-e>>2;if(d>>>0<=j>>>0){if(d>>>0>>0?(k=e+(d<<2)|0,(g|0)!=(k|0)):0)f[i>>2]=g+(~((g+-4-k|0)>>>2)<<2)}else{ui(a,d-j|0);d=f[r>>2]|0}if(!d){a=1;return a|0}o=0;a:while(1){m=q;l=f[m>>2]|0;m=f[m+4>>2]|0;g=s;e=f[g>>2]|0;g=f[g+4>>2]|0;if(!((m|0)>(g|0)|(m|0)==(g|0)&l>>>0>e>>>0)){d=0;p=18;break}n=f[c>>2]|0;i=b[n+e>>0]|0;g=Ho(e|0,g|0,1,0)|0;e=I;j=s;f[j>>2]=g;f[j+4>>2]=e;j=i&255;k=j&3;j=j>>>2;switch(i&3){case 3:{e=j+o|0;if(e>>>0>=d>>>0){d=0;p=18;break a}ej((f[a>>2]|0)+(o<<2)|0,0,(j<<2)+4|0)|0;d=e;break}case 0:{d=j;p=15;break}default:{i=0;d=j;while(1){if(!((m|0)>(e|0)|(m|0)==(e|0)&l>>>0>g>>>0)){d=0;p=18;break a}p=b[n+g>>0]|0;g=Ho(g|0,e|0,1,0)|0;e=I;j=s;f[j>>2]=g;f[j+4>>2]=e;d=(p&255)<<(i<<3|6)|d;i=i+1|0;if((i|0)>=(k|0)){p=15;break}}}}if((p|0)==15){p=0;f[(f[a>>2]|0)+(o<<2)>>2]=d;d=o}o=d+1|0;d=f[r>>2]|0;if(o>>>0>=d>>>0){p=17;break}}if((p|0)==17){a=Bh(a+16|0,f[a>>2]|0,d)|0;return a|0}else if((p|0)==18)return d|0;return 0}function te(a,c){a=a|0;c=c|0;var d=0,e=0,g=0,i=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0;r=a+12|0;q=c+8|0;l=q;n=f[l>>2]|0;l=f[l+4>>2]|0;s=c+16|0;o=s;d=f[o>>2]|0;o=Ho(d|0,f[o+4>>2]|0,4,0)|0;m=I;if((l|0)<(m|0)|(l|0)==(m|0)&n>>>0>>0){a=0;return a|0}d=(f[c>>2]|0)+d|0;d=h[d>>0]|h[d+1>>0]<<8|h[d+2>>0]<<16|h[d+3>>0]<<24;b[r>>0]=d;b[r+1>>0]=d>>8;b[r+2>>0]=d>>16;b[r+3>>0]=d>>24;g=s;g=Ho(f[g>>2]|0,f[g+4>>2]|0,4,0)|0;i=s;f[i>>2]=g;f[i+4>>2]=I;i=a+4|0;g=f[i>>2]|0;e=f[a>>2]|0;j=g-e>>2;if(d>>>0<=j>>>0){if(d>>>0>>0?(k=e+(d<<2)|0,(g|0)!=(k|0)):0)f[i>>2]=g+(~((g+-4-k|0)>>>2)<<2)}else{ui(a,d-j|0);d=f[r>>2]|0}if(!d){a=1;return a|0}o=0;a:while(1){m=q;l=f[m>>2]|0;m=f[m+4>>2]|0;g=s;e=f[g>>2]|0;g=f[g+4>>2]|0;if(!((m|0)>(g|0)|(m|0)==(g|0)&l>>>0>e>>>0)){d=0;p=18;break}n=f[c>>2]|0;i=b[n+e>>0]|0;g=Ho(e|0,g|0,1,0)|0;e=I;j=s;f[j>>2]=g;f[j+4>>2]=e;j=i&255;k=j&3;j=j>>>2;switch(i&3){case 3:{e=j+o|0;if(e>>>0>=d>>>0){d=0;p=18;break a}ej((f[a>>2]|0)+(o<<2)|0,0,(j<<2)+4|0)|0;d=e;break}case 0:{d=j;p=15;break}default:{i=0;d=j;while(1){if(!((m|0)>(e|0)|(m|0)==(e|0)&l>>>0>g>>>0)){d=0;p=18;break a}p=b[n+g>>0]|0;g=Ho(g|0,e|0,1,0)|0;e=I;j=s;f[j>>2]=g;f[j+4>>2]=e;d=(p&255)<<(i<<3|6)|d;i=i+1|0;if((i|0)>=(k|0)){p=15;break}}}}if((p|0)==15){p=0;f[(f[a>>2]|0)+(o<<2)>>2]=d;d=o}o=d+1|0;d=f[r>>2]|0;if(o>>>0>=d>>>0){p=17;break}}if((p|0)==17){a=Ch(a+16|0,f[a>>2]|0,d)|0;return a|0}else if((p|0)==18)return d|0;return 0}function ue(a,c,d){a=a|0;c=c|0;d=d|0;var e=0,g=0,i=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0;p=u;u=u+16|0;n=p+8|0;m=p;i=c+8|0;k=i;e=f[k>>2]|0;k=f[k+4>>2]|0;l=c+16|0;j=l;g=f[j>>2]|0;j=f[j+4>>2]|0;q=Ho(g|0,j|0,4,0)|0;r=I;if((k|0)<(r|0)|(k|0)==(r|0)&e>>>0>>0)i=k;else{g=(f[c>>2]|0)+g|0;g=h[g>>0]|h[g+1>>0]<<8|h[g+2>>0]<<16|h[g+3>>0]<<24;b[a>>0]=g;b[a+1>>0]=g>>8;b[a+2>>0]=g>>16;b[a+3>>0]=g>>24;g=l;g=Ho(f[g>>2]|0,f[g+4>>2]|0,4,0)|0;j=I;e=l;f[e>>2]=g;f[e+4>>2]=j;e=i;i=f[e+4>>2]|0;e=f[e>>2]|0}k=a+4|0;r=Ho(g|0,j|0,4,0)|0;q=I;if((i|0)<(q|0)|(i|0)==(q|0)&e>>>0>>0)e=f[k>>2]|0;else{e=(f[c>>2]|0)+g|0;e=h[e>>0]|h[e+1>>0]<<8|h[e+2>>0]<<16|h[e+3>>0]<<24;b[k>>0]=e;b[k+1>>0]=e>>8;b[k+2>>0]=e>>16;b[k+3>>0]=e>>24;q=l;q=Ho(f[q>>2]|0,f[q+4>>2]|0,4,0)|0;r=l;f[r>>2]=q;f[r+4>>2]=I}if(!e){r=1;u=p;return r|0}else e=0;do{if(!(Ff(a+12+(e<<4)|0,c)|0)){e=0;o=14;break}e=e+1|0}while((e|0)<32);if((o|0)==14){u=p;return e|0}if(!(Ff(a+524|0,c)|0)){r=0;u=p;return r|0}if(!(Qf(a+540|0,c)|0)){r=0;u=p;return r|0}if(!(Qf(a+560|0,c)|0)){r=0;u=p;return r|0}if(!(Qf(a+580|0,c)|0)){r=0;u=p;return r|0}r=f[k>>2]|0;o=f[d+4>>2]|0;q=m;f[q>>2]=f[d>>2];f[q+4>>2]=o;f[n>>2]=f[m>>2];f[n+4>>2]=f[m+4>>2];kb(a,r,n);r=1;u=p;return r|0}function ve(a,c,d){a=a|0;c=c|0;d=d|0;var e=0,g=0,i=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0;p=u;u=u+16|0;n=p+8|0;m=p;i=c+8|0;k=i;e=f[k>>2]|0;k=f[k+4>>2]|0;l=c+16|0;j=l;g=f[j>>2]|0;j=f[j+4>>2]|0;q=Ho(g|0,j|0,4,0)|0;r=I;if((k|0)<(r|0)|(k|0)==(r|0)&e>>>0>>0)i=k;else{g=(f[c>>2]|0)+g|0;g=h[g>>0]|h[g+1>>0]<<8|h[g+2>>0]<<16|h[g+3>>0]<<24;b[a>>0]=g;b[a+1>>0]=g>>8;b[a+2>>0]=g>>16;b[a+3>>0]=g>>24;g=l;g=Ho(f[g>>2]|0,f[g+4>>2]|0,4,0)|0;j=I;e=l;f[e>>2]=g;f[e+4>>2]=j;e=i;i=f[e+4>>2]|0;e=f[e>>2]|0}k=a+4|0;r=Ho(g|0,j|0,4,0)|0;q=I;if((i|0)<(q|0)|(i|0)==(q|0)&e>>>0>>0)e=f[k>>2]|0;else{e=(f[c>>2]|0)+g|0;e=h[e>>0]|h[e+1>>0]<<8|h[e+2>>0]<<16|h[e+3>>0]<<24;b[k>>0]=e;b[k+1>>0]=e>>8;b[k+2>>0]=e>>16;b[k+3>>0]=e>>24;q=l;q=Ho(f[q>>2]|0,f[q+4>>2]|0,4,0)|0;r=l;f[r>>2]=q;f[r+4>>2]=I}if(!e){r=1;u=p;return r|0}else e=0;do{if(!(Ff(a+12+(e<<4)|0,c)|0)){e=0;o=14;break}e=e+1|0}while((e|0)<32);if((o|0)==14){u=p;return e|0}if(!(Ff(a+524|0,c)|0)){r=0;u=p;return r|0}if(!(Qf(a+540|0,c)|0)){r=0;u=p;return r|0}if(!(Qf(a+560|0,c)|0)){r=0;u=p;return r|0}if(!(Qf(a+580|0,c)|0)){r=0;u=p;return r|0}r=f[k>>2]|0;o=f[d+4>>2]|0;q=m;f[q>>2]=f[d>>2];f[q+4>>2]=o;f[n>>2]=f[m>>2];f[n+4>>2]=f[m+4>>2];nb(a,r,n);r=1;u=p;return r|0}function we(a,c,d){a=a|0;c=c|0;d=d|0;var e=0,g=0,i=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0;p=u;u=u+16|0;n=p+8|0;m=p;i=c+8|0;k=i;e=f[k>>2]|0;k=f[k+4>>2]|0;l=c+16|0;j=l;g=f[j>>2]|0;j=f[j+4>>2]|0;q=Ho(g|0,j|0,4,0)|0;r=I;if((k|0)<(r|0)|(k|0)==(r|0)&e>>>0>>0)i=k;else{g=(f[c>>2]|0)+g|0;g=h[g>>0]|h[g+1>>0]<<8|h[g+2>>0]<<16|h[g+3>>0]<<24;b[a>>0]=g;b[a+1>>0]=g>>8;b[a+2>>0]=g>>16;b[a+3>>0]=g>>24;g=l;g=Ho(f[g>>2]|0,f[g+4>>2]|0,4,0)|0;j=I;e=l;f[e>>2]=g;f[e+4>>2]=j;e=i;i=f[e+4>>2]|0;e=f[e>>2]|0}k=a+4|0;r=Ho(g|0,j|0,4,0)|0;q=I;if((i|0)<(q|0)|(i|0)==(q|0)&e>>>0>>0)e=f[k>>2]|0;else{e=(f[c>>2]|0)+g|0;e=h[e>>0]|h[e+1>>0]<<8|h[e+2>>0]<<16|h[e+3>>0]<<24;b[k>>0]=e;b[k+1>>0]=e>>8;b[k+2>>0]=e>>16;b[k+3>>0]=e>>24;q=l;q=Ho(f[q>>2]|0,f[q+4>>2]|0,4,0)|0;r=l;f[r>>2]=q;f[r+4>>2]=I}if(!e){r=1;u=p;return r|0}else e=0;do{if(!(Ff(a+12+(e<<4)|0,c)|0)){e=0;o=14;break}e=e+1|0}while((e|0)<32);if((o|0)==14){u=p;return e|0}if(!(Ff(a+524|0,c)|0)){r=0;u=p;return r|0}if(!(Qf(a+540|0,c)|0)){r=0;u=p;return r|0}if(!(Qf(a+560|0,c)|0)){r=0;u=p;return r|0}if(!(Qf(a+580|0,c)|0)){r=0;u=p;return r|0}r=f[k>>2]|0;o=f[d+4>>2]|0;q=m;f[q>>2]=f[d>>2];f[q+4>>2]=o;f[n>>2]=f[m>>2];f[n+4>>2]=f[m+4>>2];lb(a,r,n);r=1;u=p;return r|0}function xe(a,c,d){a=a|0;c=c|0;d=d|0;var e=0,g=0,i=0;switch(b[a+24>>0]|0){case 1:{g=f[c>>2]|0;e=a+48|0;c=f[e>>2]|0;e=f[e+4>>2]|0;i=a+40|0;e=Ho(kn(f[i>>2]|0,f[i+4>>2]|0,g|0,((g|0)<0)<<31>>31|0)|0,I|0,c|0,e|0)|0;c=d;f[c>>2]=h[(f[f[a>>2]>>2]|0)+e>>0];f[c+4>>2]=0;a=d+8|0;f[a>>2]=0;f[a+4>>2]=0;f[a+8>>2]=0;f[a+12>>2]=0;f[a+16>>2]=0;f[a+20>>2]=0;a=1;return a|0}case 2:{e=f[c>>2]|0;g=a+48|0;i=f[g>>2]|0;g=f[g+4>>2]|0;c=a+40|0;g=(Ho(kn(f[c>>2]|0,f[c+4>>2]|0,e|0,((e|0)<0)<<31>>31|0)|0,I|0,i|0,g|0)|0)+(f[f[a>>2]>>2]|0)|0;g=h[g>>0]|h[g+1>>0]<<8;i=d;f[i>>2]=g&255;f[i+4>>2]=0;i=d+8|0;f[i>>2]=(g&65535)>>>8&65535;f[i+4>>2]=0;i=d+16|0;f[i>>2]=0;f[i+4>>2]=0;f[i+8>>2]=0;f[i+12>>2]=0;i=1;return i|0}case 3:{i=f[c>>2]|0;e=a+48|0;g=f[e>>2]|0;e=f[e+4>>2]|0;c=a+40|0;a=(Ho(kn(f[c>>2]|0,f[c+4>>2]|0,i|0,((i|0)<0)<<31>>31|0)|0,I|0,g|0,e|0)|0)+(f[f[a>>2]>>2]|0)|0;e=b[a+1>>0]|0;g=b[a+2>>0]|0;i=d;f[i>>2]=h[a>>0];f[i+4>>2]=0;i=d+8|0;f[i>>2]=e&255;f[i+4>>2]=0;i=d+16|0;f[i>>2]=g&255;f[i+4>>2]=0;i=d+24|0;f[i>>2]=0;f[i+4>>2]=0;i=1;return i|0}case 4:{e=f[c>>2]|0;g=a+48|0;i=f[g>>2]|0;g=f[g+4>>2]|0;c=a+40|0;g=(Ho(kn(f[c>>2]|0,f[c+4>>2]|0,e|0,((e|0)<0)<<31>>31|0)|0,I|0,i|0,g|0)|0)+(f[f[a>>2]>>2]|0)|0;g=h[g>>0]|h[g+1>>0]<<8|h[g+2>>0]<<16|h[g+3>>0]<<24;i=d;f[i>>2]=g&255;f[i+4>>2]=0;i=d+8|0;f[i>>2]=g>>>8&255;f[i+4>>2]=0;i=d+16|0;f[i>>2]=g>>>16&255;f[i+4>>2]=0;i=d+24|0;f[i>>2]=g>>>24;f[i+4>>2]=0;i=1;return i|0}default:{i=0;return i|0}}return 0}function ye(a,c,d){a=a|0;c=c|0;d=d|0;var e=0,g=0,i=0;switch(b[a+24>>0]|0){case 1:{g=f[c>>2]|0;c=a+48|0;e=f[c>>2]|0;c=f[c+4>>2]|0;i=a+40|0;a=(Ho(kn(f[i>>2]|0,f[i+4>>2]|0,g|0,((g|0)<0)<<31>>31|0)|0,I|0,e|0,c|0)|0)+(f[f[a>>2]>>2]|0)|0;a=h[a>>0]|h[a+1>>0]<<8|h[a+2>>0]<<16|h[a+3>>0]<<24;c=d;f[c>>2]=a;f[c+4>>2]=((a|0)<0)<<31>>31;c=0;a=0;break}case 2:{i=f[c>>2]|0;c=a+48|0;g=f[c>>2]|0;c=f[c+4>>2]|0;e=a+40|0;c=(Ho(kn(f[e>>2]|0,f[e+4>>2]|0,i|0,((i|0)<0)<<31>>31|0)|0,I|0,g|0,c|0)|0)+(f[f[a>>2]>>2]|0)|0;a=c;a=h[a>>0]|h[a+1>>0]<<8|h[a+2>>0]<<16|h[a+3>>0]<<24;c=c+4|0;c=h[c>>0]|h[c+1>>0]<<8|h[c+2>>0]<<16|h[c+3>>0]<<24;g=An(0,a|0,32)|0;i=d;f[i>>2]=g;f[i+4>>2]=I;c=An(a|0,c|0,32)|0;a=I;break}case 3:{g=f[c>>2]|0;i=a+48|0;c=f[i>>2]|0;i=f[i+4>>2]|0;e=a+40|0;a=(Ho(kn(f[e>>2]|0,f[e+4>>2]|0,g|0,((g|0)<0)<<31>>31|0)|0,I|0,c|0,i|0)|0)+(f[f[a>>2]>>2]|0)|0;i=h[a>>0]|h[a+1>>0]<<8|h[a+2>>0]<<16|h[a+3>>0]<<24;a=a+4|0;a=h[a>>0]|h[a+1>>0]<<8|h[a+2>>0]<<16|h[a+3>>0]<<24;c=d;f[c>>2]=i;f[c+4>>2]=((i|0)<0)<<31>>31;c=a;a=((a|0)<0)<<31>>31;break}case 4:{g=f[c>>2]|0;i=a+48|0;c=f[i>>2]|0;i=f[i+4>>2]|0;e=a+40|0;a=(Ho(kn(f[e>>2]|0,f[e+4>>2]|0,g|0,((g|0)<0)<<31>>31|0)|0,I|0,c|0,i|0)|0)+(f[f[a>>2]>>2]|0)|0;i=h[a>>0]|h[a+1>>0]<<8|h[a+2>>0]<<16|h[a+3>>0]<<24;a=a+4|0;a=h[a>>0]|h[a+1>>0]<<8|h[a+2>>0]<<16|h[a+3>>0]<<24;c=d;f[c>>2]=i;f[c+4>>2]=((i|0)<0)<<31>>31;c=a;a=((a|0)<0)<<31>>31;break}default:{i=0;return i|0}}i=d+8|0;f[i>>2]=c;f[i+4>>2]=a;i=1;return i|0}function ze(a,b,c,d){a=a|0;b=b|0;c=c|0;d=d|0;var e=0,g=0,h=0,i=0,j=0,k=0,l=0,m=0,n=0;m=f[b>>2]|0;k=b+4|0;e=f[k>>2]|0;h=((f[c>>2]|0)-m<<3)+(f[c+4>>2]|0)-e|0;c=m;if((h|0)<=0){b=d+4|0;d=f[d>>2]|0;f[a>>2]=d;a=a+4|0;d=f[b>>2]|0;f[a>>2]=d;return}if(!e){l=d+4|0;e=f[l>>2]|0}else{i=32-e|0;m=(h|0)<(i|0)?h:i;i=-1>>>(i-m|0)&-1<>2];l=d+4|0;c=f[l>>2]|0;j=32-c|0;e=j>>>0>>0?j:m;g=f[d>>2]|0;c=f[g>>2]&~(-1>>>(j-e|0)&-1<>2]=c;j=f[l>>2]|0;n=f[k>>2]|0;f[g>>2]=(j>>>0>n>>>0?i<>>(n-j|0))|c;c=(f[l>>2]|0)+e|0;g=g+(c>>>5<<2)|0;f[d>>2]=g;c=c&31;f[l>>2]=c;j=m-e|0;if((j|0)>0){c=f[g>>2]&~(-1>>>(32-j|0));f[g>>2]=c;f[g>>2]=i>>>((f[k>>2]|0)+e|0)|c;f[l>>2]=j;c=j}n=(f[b>>2]|0)+4|0;f[b>>2]=n;e=c;c=n;h=h-m|0}j=32-e|0;i=-1<>>0>31){g=~i;e=h;do{m=f[c>>2]|0;n=f[d>>2]|0;k=f[n>>2]&g;f[n>>2]=k;f[n>>2]=m<>2]|k;n=n+4|0;f[d>>2]=n;f[n>>2]=f[n>>2]&i|m>>>j;e=e+-32|0;c=(f[b>>2]|0)+4|0;f[b>>2]=c}while(e>>>0>31);h=h&31}if(!h){b=l;n=f[d>>2]|0;f[a>>2]=n;n=a+4|0;a=f[b>>2]|0;f[n>>2]=a;return}i=f[c>>2]&-1>>>(32-h|0);g=(j|0)<(h|0)?j:h;e=f[d>>2]|0;c=f[e>>2]&~(-1<>2]&-1>>>(j-g|0));f[e>>2]=c;f[e>>2]=c|i<>2];c=(f[l>>2]|0)+g|0;e=e+(c>>>5<<2)|0;f[d>>2]=e;f[l>>2]=c&31;c=h-g|0;if((c|0)<=0){b=l;n=f[d>>2]|0;f[a>>2]=n;n=a+4|0;a=f[b>>2]|0;f[n>>2]=a;return}f[e>>2]=f[e>>2]&~(-1>>>(32-c|0))|i>>>g;f[l>>2]=c;b=l;n=f[d>>2]|0;f[a>>2]=n;n=a+4|0;a=f[b>>2]|0;f[n>>2]=a;return}function Ae(a){a=a|0;var b=0,c=0,d=0;f[a>>2]=4800;nh(a+240|0);Ei(a+228|0);b=f[a+212>>2]|0;if(b|0){d=a+216|0;c=f[d>>2]|0;if((c|0)!=(b|0))f[d>>2]=c+(~((c+-4-b|0)>>>2)<<2);ar(b)}b=f[a+200>>2]|0;if(b|0){d=a+204|0;c=f[d>>2]|0;if((c|0)!=(b|0))f[d>>2]=c+(~((c+-4-b|0)>>>2)<<2);ar(b)}b=f[a+188>>2]|0;if(b|0){d=a+192|0;c=f[d>>2]|0;if((c|0)!=(b|0))f[d>>2]=c+(~((c+-4-b|0)>>>2)<<2);ar(b)}b=f[a+176>>2]|0;if(b|0){d=a+180|0;c=f[d>>2]|0;if((c|0)!=(b|0))f[d>>2]=c+(~((c+-4-b|0)>>>2)<<2);ar(b)}b=f[a+160>>2]|0;if(b|0)do{d=b;b=f[b>>2]|0;ar(d)}while((b|0)!=0);d=a+152|0;b=f[d>>2]|0;f[d>>2]=0;if(b|0)ar(b);b=f[a+136>>2]|0;if(b|0)ar(b);b=f[a+124>>2]|0;if(b|0)ar(b);b=f[a+112>>2]|0;if(b|0)ar(b);b=f[a+88>>2]|0;if(b|0){d=a+92|0;c=f[d>>2]|0;if((c|0)!=(b|0))f[d>>2]=c+(~((c+-4-b|0)>>>2)<<2);ar(b)}b=f[a+76>>2]|0;if(b|0){d=a+80|0;c=f[d>>2]|0;if((c|0)!=(b|0))f[d>>2]=c+(~((c+-4-b|0)>>>2)<<2);ar(b)}b=f[a+64>>2]|0;if(b|0)ar(b);b=f[a+48>>2]|0;if(b|0){d=a+52|0;c=f[d>>2]|0;if((c|0)!=(b|0))f[d>>2]=c+(~((c+-4-b|0)>>>2)<<2);ar(b)}b=f[a+36>>2]|0;if(b|0){d=a+40|0;c=f[d>>2]|0;if((c|0)!=(b|0))f[d>>2]=c+(~(((c+-12-b|0)>>>0)/12|0)*12|0);ar(b)}b=f[a+24>>2]|0;if(b|0){d=a+28|0;c=f[d>>2]|0;if((c|0)!=(b|0))f[d>>2]=c+(~((c+-4-b|0)>>>2)<<2);ar(b)}b=f[a+12>>2]|0;if(b|0){d=a+16|0;c=f[d>>2]|0;if((c|0)!=(b|0))f[d>>2]=c+(~((c+-4-b|0)>>>2)<<2);ar(b)}a=a+8|0;b=f[a>>2]|0;f[a>>2]=0;if(!b)return;sj(b);ar(b);return}function Be(a,b,c,d,e,g){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;g=g|0;var h=0,i=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,v=0,w=0,x=0,y=0;x=u;u=u+16|0;v=x+4|0;t=x;w=a+60|0;f[a+64>>2]=g;s=a+8|0;f[s>>2]=e;i=a+32|0;h=a+36|0;g=f[h>>2]|0;d=f[i>>2]|0;j=g-d>>2;if(j>>>0>=e>>>0){if(j>>>0>e>>>0?(k=d+(e<<2)|0,(g|0)!=(k|0)):0)f[h>>2]=g+(~((g+-4-k|0)>>>2)<<2)}else ui(i,e-j|0);n=a+56|0;i=f[n>>2]|0;g=f[i+4>>2]|0;d=f[i>>2]|0;q=g-d|0;r=q>>2;if((q|0)<=0){u=x;return 1}p=a+16|0;m=a+32|0;q=a+12|0;o=a+20|0;h=0;while(1){if(g-d>>2>>>0<=h>>>0){Kp(i);d=f[i>>2]|0}f[t>>2]=f[d+(h<<2)>>2];f[v>>2]=f[t>>2];Nb(w,v,c,h);l=X(h,e)|0;k=b+(l<<2)|0;l=c+(l<<2)|0;if((f[s>>2]|0)>0){i=0;do{d=f[a+68+(i<<2)>>2]|0;g=f[p>>2]|0;if((d|0)>(g|0)){j=f[m>>2]|0;f[j+(i<<2)>>2]=g}else{g=f[q>>2]|0;j=f[m>>2]|0;f[j+(i<<2)>>2]=(d|0)<(g|0)?g:d}i=i+1|0;d=f[s>>2]|0}while((i|0)<(d|0));if((d|0)>0){i=0;do{d=(f[k+(i<<2)>>2]|0)+(f[j+(i<<2)>>2]|0)|0;g=l+(i<<2)|0;f[g>>2]=d;if((d|0)<=(f[p>>2]|0)){if((d|0)<(f[q>>2]|0)){d=(f[o>>2]|0)+d|0;y=22}}else{d=d-(f[o>>2]|0)|0;y=22}if((y|0)==22){y=0;f[g>>2]=d}i=i+1|0}while((i|0)<(f[s>>2]|0))}}h=h+1|0;if((h|0)>=(r|0))break;i=f[n>>2]|0;d=f[i>>2]|0;g=f[i+4>>2]|0}u=x;return 1}function Ce(a,b,c,d){a=a|0;b=b|0;c=c|0;d=d|0;var e=0,g=0,h=0,i=0,j=0,k=0,l=0,m=0,n=0;l=b+16|0;n=f[l>>2]|0;i=(f[c>>2]|0)-n|0;j=c+4|0;g=(f[j>>2]|0)-n|0;e=c;f[e>>2]=i;f[e+4>>2]=g;e=f[l>>2]|0;if((e|0)<(i|0))Ga(10070,9477,250,10093);if((e|0)<(g|0))Ga(10105,9477,251,10093);h=0-e|0;if((i|0)<(h|0))Ga(10128,9477,252,10093);if((g|0)<(h|0))Ga(10152,9477,253,10093);m=(((g|0)>-1?g:0-g|0)+((i|0)>-1?i:0-i|0)|0)<=(e|0);if(!m){Yh(b+4|0,c,j);i=f[c>>2]|0}if(!i){e=f[j>>2]|0;g=e;e=(e|0)==0}else{e=f[j>>2]|0;g=e;e=(i|0)<0&(e|0)<1}if(!i)k=(g|0)==0?0:(g|0)>0?3:1;else k=(i|0)>0?(g>>31)+2|0:(g|0)<1?0:3;if(e){e=i;i=1}else{switch(k|0){case 1:{e=g;g=0-i|0;break}case 2:{e=0-i|0;g=0-g|0;break}case 3:{e=0-g|0;g=i;break}default:e=i}i=c;f[i>>2]=e;f[i+4>>2]=g;i=0}e=(f[d>>2]|0)+e|0;f[a>>2]=e;g=(f[d+4>>2]|0)+g|0;j=a+4|0;f[j>>2]=g;h=f[l>>2]|0;if((h|0)>=(e|0)){if((e|0)<(0-h|0))e=(f[b+8>>2]|0)+e|0}else e=e-(f[b+8>>2]|0)|0;f[a>>2]=e;if((h|0)>=(g|0)){if((g|0)<(0-h|0))g=(f[b+8>>2]|0)+g|0}else g=g-(f[b+8>>2]|0)|0;f[j>>2]=g;if(!i){switch((4-k|0)%4|0|0){case 1:{h=g;e=0-e|0;break}case 2:{h=0-e|0;e=0-g|0;break}case 3:{h=0-g|0;break}default:{h=e;e=g}}g=a;f[g>>2]=h;f[g+4>>2]=e;g=e;e=h}if(m){m=e;b=g;m=m+n|0;n=b+n|0;b=a;a=b;f[a>>2]=m;b=b+4|0;f[b>>2]=n;return}Yh(b+4|0,a,j);m=f[a>>2]|0;b=f[j>>2]|0;m=m+n|0;n=b+n|0;b=a;a=b;f[a>>2]=m;b=b+4|0;f[b>>2]=n;return}function De(a,c,d){a=a|0;c=c|0;d=d|0;var e=0,g=0,i=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,v=0,w=0,x=0,y=0;w=u;u=u+48|0;s=w+40|0;t=w+24|0;p=w+20|0;q=w+16|0;n=w;r=w+8|0;f[t>>2]=0;v=t+4|0;f[v>>2]=0;f[t+8>>2]=0;l=c+8|0;k=f[l>>2]|0;l=f[l+4>>2]|0;o=c+16|0;e=o;m=f[e>>2]|0;e=f[e+4>>2]|0;g=Ho(m|0,e|0,4,0)|0;i=I;a:do if((l|0)<(i|0)|(l|0)==(i|0)&k>>>0>>0)i=0;else{j=f[c>>2]|0;x=j+m|0;x=h[x>>0]|h[x+1>>0]<<8|h[x+2>>0]<<16|h[x+3>>0]<<24;y=o;f[y>>2]=g;f[y+4>>2]=i;b:do switch(x|0){case 3:{if(!((l|0)>(i|0)|(l|0)==(i|0)&k>>>0>g>>>0)){i=0;break a}y=b[j+g>>0]|0;m=Ho(m|0,e|0,5,0)|0;x=o;f[x>>2]=m;f[x+4>>2]=I;f[a+8>>2]=y<<24>>24;if(y<<24>>24==1)if(fc(a,c,t)|0)break b;else{i=0;break a}else{Nl(17471,23,1,f[1215]|0)|0;i=0;break a}}case 2:{if(!(fc(a,c,t)|0)){i=0;break a}break}default:{Nl(17495,24,1,f[1215]|0)|0;i=0;break a}}while(0);f[p>>2]=f[t>>2];f[q>>2]=f[v>>2];x=d;y=f[x+4>>2]|0;i=n;f[i>>2]=f[x>>2];f[i+4>>2]=y;f[s>>2]=f[n>>2];f[s+4>>2]=f[n+4>>2];cf(r,p,q,a,s);i=1}while(0);e=f[t>>2]|0;if(!e){u=w;return i|0}g=f[v>>2]|0;if((g|0)!=(e|0))f[v>>2]=g+(~(((g+-12-e|0)>>>0)/12|0)*12|0);ar(e);u=w;return i|0}function Ee(a,b,c,d,e,g){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;g=g|0;var h=0,i=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0;p=f[a+32>>2]|0;q=f[a+36>>2]|0;s=e>>>0>1073741823?-1:e<<2;r=Zq(s)|0;ej(r|0,0,s|0)|0;s=a+8|0;ji(s,r,b,c);n=a+40|0;g=f[n>>2]|0;a=f[g+4>>2]|0;d=f[g>>2]|0;m=a-d|0;o=m>>2;if((m|0)<=4){_q(r);return 1}l=p+12|0;m=(e|0)>0;h=a;a=1;while(1){if(h-d>>2>>>0<=a>>>0){Kp(g);d=f[g>>2]|0}d=f[d+(a<<2)>>2]|0;k=X(a,e)|0;if((d|0)>=0?(t=f[(f[l>>2]|0)+(d<<2)>>2]|0,(t|0)>=0):0){g=f[p>>2]|0;h=f[q>>2]|0;i=f[h+(f[g+(t<<2)>>2]<<2)>>2]|0;d=t+1|0;d=((d|0)%3|0|0)==0?t+-2|0:d;if((d|0)<0)d=-1073741824;else d=f[g+(d<<2)>>2]|0;j=f[h+(d<<2)>>2]|0;d=(((t>>>0)%3|0|0)==0?2:-1)+t|0;if((d|0)<0)d=-1073741824;else d=f[g+(d<<2)>>2]|0;d=f[h+(d<<2)>>2]|0;if((i|0)<(a|0)&(j|0)<(a|0)&(d|0)<(a|0)){i=X(i,e)|0;h=X(j,e)|0;g=X(d,e)|0;if(m){d=0;do{f[r+(d<<2)>>2]=(f[c+(d+g<<2)>>2]|0)+(f[c+(d+h<<2)>>2]|0)-(f[c+(d+i<<2)>>2]|0);d=d+1|0}while((d|0)!=(e|0))}ji(s,r,b+(k<<2)|0,c+(k<<2)|0)}else u=16}else u=16;if((u|0)==16){u=0;ji(s,c+((X(a+-1|0,e)|0)<<2)|0,b+(k<<2)|0,c+(k<<2)|0)}a=a+1|0;if((a|0)>=(o|0))break;h=f[n>>2]|0;g=h;d=f[h>>2]|0;h=f[h+4>>2]|0}_q(r);return 1}function Fe(a,b,c){a=a|0;b=b|0;c=c|0;var d=0,e=0,g=0,h=0,i=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0;p=u;u=u+32|0;o=p+8|0;j=p;n=a+4|0;g=f[n>>2]|0;if(g>>>0>=b>>>0){f[n>>2]=b;u=p;return}m=a+8|0;e=f[m>>2]|0;l=e<<5;d=b-g|0;if(l>>>0>>0|g>>>0>(l-d|0)>>>0){f[o>>2]=0;l=o+4|0;f[l>>2]=0;k=o+8|0;f[k>>2]=0;if((b|0)<0){Lp(a);e=f[m>>2]|0}h=e<<6;b=b+31&-32;ri(o,e<<5>>>0<1073741823?(h>>>0>>0?b:h):2147483647);b=f[n>>2]|0;f[l>>2]=b+d;e=f[a>>2]|0;h=e;g=f[o>>2]|0;b=(h+(b>>>5<<2)-e<<3)+(b&31)|0;if((b|0)>0){i=b>>>5;rm(g|0,e|0,i<<2|0)|0;e=b-(i<<5)|0;b=g+(i<<2)|0;g=b;if((e|0)>0){q=-1>>>(32-e|0);f[b>>2]=f[b>>2]&~q|f[h+(i<<2)>>2]&q}else e=0}else e=0;f[j>>2]=g;f[j+4>>2]=e;b=j;e=f[b>>2]|0;b=f[b+4>>2]|0;g=f[a>>2]|0;f[a>>2]=f[o>>2];f[o>>2]=g;q=f[n>>2]|0;f[n>>2]=f[l>>2];f[l>>2]=q;q=f[m>>2]|0;f[m>>2]=f[k>>2];f[k>>2]=q;if(g|0)ar(g)}else{e=(f[a>>2]|0)+(g>>>5<<2)|0;f[n>>2]=b;b=g&31}if(!d){u=p;return}h=(b|0)==0;g=e;if(c){if(!h){e=32-b|0;q=e>>>0>d>>>0?d:e;f[g>>2]=f[g>>2]|-1>>>(e-q|0)&-1<>>5;ej(e|0,-1,q<<2|0)|0;e=d-(q<<5)|0;d=g+(q<<2)|0;if(!e){u=p;return}f[d>>2]=f[d>>2]|-1>>>(32-e|0);u=p;return}else{if(!h){e=32-b|0;q=e>>>0>d>>>0?d:e;f[g>>2]=f[g>>2]&~(-1>>>(e-q|0)&-1<>>5;ej(e|0,0,q<<2|0)|0;e=d-(q<<5)|0;d=g+(q<<2)|0;if(!e){u=p;return}f[d>>2]=f[d>>2]&~(-1>>>(32-e|0));u=p;return}}function Ge(a,b){a=a|0;b=b|0;var c=0,d=La,e=La,g=0,h=0,i=0,j=0,k=0,l=0,m=0,o=0,p=La;l=f[b>>2]|0;j=a+4|0;i=f[j>>2]|0;k=(i|0)==0;a:do if(!k){g=i+-1|0;c=(g&i|0)==0;if(c)h=g&l;else h=(l>>>0)%(i>>>0)|0;b=f[(f[a>>2]|0)+(h<<2)>>2]|0;if(b)if(c){do{b=f[b>>2]|0;if(!b){b=h;break a}if((f[b+4>>2]&g|0)!=(h|0)){b=h;break a}}while((f[b+8>>2]|0)!=(l|0));a=b+12|0;return a|0}else{do{b=f[b>>2]|0;if(!b){b=h;break a}if((((f[b+4>>2]|0)>>>0)%(i>>>0)|0|0)!=(h|0)){b=h;break a}}while((f[b+8>>2]|0)!=(l|0));a=b+12|0;return a|0}else b=h}else b=0;while(0);m=ln(16)|0;f[m+8>>2]=l;f[m+12>>2]=0;f[m+4>>2]=l;f[m>>2]=0;h=a+12|0;e=$(((f[h>>2]|0)+1|0)>>>0);p=$(i>>>0);d=$(n[a+16>>2]);do if(k|e>$(p*d)){b=(i>>>0<3|(i+-1&i|0)!=0)&1|i<<1;c=~~$(W($(e/d)))>>>0;li(a,b>>>0>>0?c:b);b=f[j>>2]|0;c=b+-1|0;if(!(c&b)){g=b;b=c&l;break}else{g=b;b=(l>>>0)%(b>>>0)|0;break}}else g=i;while(0);c=(f[a>>2]|0)+(b<<2)|0;b=f[c>>2]|0;if(!b){b=a+8|0;f[m>>2]=f[b>>2];f[b>>2]=m;f[c>>2]=b;b=f[m>>2]|0;if(b|0){b=f[b+4>>2]|0;c=g+-1|0;if(!(c&g))b=b&c;else b=(b>>>0)%(g>>>0)|0;b=(f[a>>2]|0)+(b<<2)|0;o=24}}else{f[m>>2]=f[b>>2];o=24}if((o|0)==24)f[b>>2]=m;f[h>>2]=(f[h>>2]|0)+1;a=m;a=a+12|0;return a|0}function He(a,c){a=a|0;c=c|0;var d=0,e=0,g=0,i=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0;o=u;u=u+32|0;k=o+16|0;j=o;i=c+8|0;m=i;l=f[m+4>>2]|0;n=c+16|0;d=n;e=f[d>>2]|0;d=f[d+4>>2]|0;if(!((l|0)>(d|0)|((l|0)==(d|0)?(f[m>>2]|0)>>>0>e>>>0:0))){a=0;u=o;return a|0}m=b[(f[c>>2]|0)+e>>0]|0;g=Ho(e|0,d|0,1,0)|0;l=n;f[l>>2]=g;f[l+4>>2]=I;if(m<<24>>24){a=0;u=o;return a|0}g=0;do{yj(k,c)|0;d=f[k>>2]|0;if(d|0){e=a+60+(g*12|0)|0;Fe(e,d,0);xq(j);Ff(j,c)|0;if(f[k>>2]|0){d=0;do{q=Tk(j)|0;m=(f[e>>2]|0)+(d>>>5<<2)|0;l=1<<(d&31);p=f[m>>2]|0;f[m>>2]=q?p|l:p&~l;d=d+1|0}while(d>>>0<(f[k>>2]|0)>>>0)}fr(j)}g=g+1|0}while((g|0)<4);l=i;k=f[l>>2]|0;l=f[l+4>>2]|0;e=n;d=f[e>>2]|0;e=f[e+4>>2]|0;m=Ho(d|0,e|0,4,0)|0;g=I;if((l|0)<(g|0)|(l|0)==(g|0)&k>>>0>>0){q=0;u=o;return q|0}i=f[c>>2]|0;j=i+d|0;j=h[j>>0]|h[j+1>>0]<<8|h[j+2>>0]<<16|h[j+3>>0]<<24;q=n;f[q>>2]=m;f[q+4>>2]=g;d=Ho(d|0,e|0,8,0)|0;e=I;if((l|0)<(e|0)|(l|0)==(e|0)&k>>>0>>0){q=0;u=o;return q|0}q=i+m|0;q=h[q>>0]|h[q+1>>0]<<8|h[q+2>>0]<<16|h[q+3>>0]<<24;p=n;f[p>>2]=d;f[p+4>>2]=e;f[a+12>>2]=j;f[a+16>>2]=q;q=q+(1-j)|0;f[a+20>>2]=q;d=(q|0)/2|0;e=a+24|0;f[e>>2]=d;f[a+28>>2]=0-d;if(q&1|0){q=1;u=o;return q|0}f[e>>2]=d+-1;q=1;u=o;return q|0}function Ie(a,b,c,d,e,g){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;g=g|0;var h=0,i=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0;p=f[a+32>>2]|0;q=f[a+36>>2]|0;s=e>>>0>1073741823?-1:e<<2;r=Zq(s)|0;ej(r|0,0,s|0)|0;s=a+8|0;mi(s,r,b,c);n=a+40|0;g=f[n>>2]|0;a=f[g+4>>2]|0;d=f[g>>2]|0;m=a-d|0;o=m>>2;if((m|0)<=4){_q(r);return 1}l=p+12|0;m=(e|0)>0;h=a;a=1;while(1){if(h-d>>2>>>0<=a>>>0){Kp(g);d=f[g>>2]|0}d=f[d+(a<<2)>>2]|0;k=X(a,e)|0;if((d|0)>=0?(t=f[(f[l>>2]|0)+(d<<2)>>2]|0,(t|0)>=0):0){g=f[p>>2]|0;h=f[q>>2]|0;i=f[h+(f[g+(t<<2)>>2]<<2)>>2]|0;d=t+1|0;d=((d|0)%3|0|0)==0?t+-2|0:d;if((d|0)<0)d=-1073741824;else d=f[g+(d<<2)>>2]|0;j=f[h+(d<<2)>>2]|0;d=(((t>>>0)%3|0|0)==0?2:-1)+t|0;if((d|0)<0)d=-1073741824;else d=f[g+(d<<2)>>2]|0;d=f[h+(d<<2)>>2]|0;if((i|0)<(a|0)&(j|0)<(a|0)&(d|0)<(a|0)){i=X(i,e)|0;h=X(j,e)|0;g=X(d,e)|0;if(m){d=0;do{f[r+(d<<2)>>2]=(f[c+(d+g<<2)>>2]|0)+(f[c+(d+h<<2)>>2]|0)-(f[c+(d+i<<2)>>2]|0);d=d+1|0}while((d|0)!=(e|0))}mi(s,r,b+(k<<2)|0,c+(k<<2)|0)}else u=16}else u=16;if((u|0)==16){u=0;mi(s,c+((X(a+-1|0,e)|0)<<2)|0,b+(k<<2)|0,c+(k<<2)|0)}a=a+1|0;if((a|0)>=(o|0))break;h=f[n>>2]|0;g=h;d=f[h>>2]|0;h=f[h+4>>2]|0}_q(r);return 1}function Je(a,c,d){a=a|0;c=c|0;d=d|0;var e=0,g=0,i=0;switch(b[a+24>>0]|0){case 1:{g=f[c>>2]|0;c=a+48|0;e=f[c>>2]|0;c=f[c+4>>2]|0;i=a+40|0;a=(Ho(kn(f[i>>2]|0,f[i+4>>2]|0,g|0,((g|0)<0)<<31>>31|0)|0,I|0,e|0,c|0)|0)+(f[f[a>>2]>>2]|0)|0;a=(h[a>>0]|h[a+1>>0]<<8)<<16>>16;c=d;f[c>>2]=a;f[c+4>>2]=((a|0)<0)<<31>>31;c=0;a=0;break}case 2:{g=f[c>>2]|0;i=a+48|0;c=f[i>>2]|0;i=f[i+4>>2]|0;e=a+40|0;a=(Ho(kn(f[e>>2]|0,f[e+4>>2]|0,g|0,((g|0)<0)<<31>>31|0)|0,I|0,c|0,i|0)|0)+(f[f[a>>2]>>2]|0)|0;a=h[a>>0]|h[a+1>>0]<<8|h[a+2>>0]<<16|h[a+3>>0]<<24;i=(a&65535)<<16>>16;c=d;f[c>>2]=i;f[c+4>>2]=((i|0)<0)<<31>>31;a=(a>>>16&65535)<<16>>16;c=a;a=((a|0)<0)<<31>>31;break}case 3:{g=f[c>>2]|0;i=a+48|0;c=f[i>>2]|0;i=f[i+4>>2]|0;e=a+40|0;i=(Ho(kn(f[e>>2]|0,f[e+4>>2]|0,g|0,((g|0)<0)<<31>>31|0)|0,I|0,c|0,i|0)|0)+(f[f[a>>2]>>2]|0)|0;a=i+2|0;a=h[a>>0]|h[a+1>>0]<<8;i=(h[i>>0]|h[i+1>>0]<<8)<<16>>16;c=d;f[c>>2]=i;f[c+4>>2]=((i|0)<0)<<31>>31;a=a<<16>>16;c=a;a=((a|0)<0)<<31>>31;break}case 4:{g=f[c>>2]|0;i=a+48|0;c=f[i>>2]|0;i=f[i+4>>2]|0;e=a+40|0;i=(Ho(kn(f[e>>2]|0,f[e+4>>2]|0,g|0,((g|0)<0)<<31>>31|0)|0,I|0,c|0,i|0)|0)+(f[f[a>>2]>>2]|0)|0;c=i;c=h[c>>0]|h[c+1>>0]<<8|h[c+2>>0]<<16|h[c+3>>0]<<24;i=i+4|0;i=An(On(c|0,h[i>>0]|h[i+1>>0]<<8|h[i+2>>0]<<16|h[i+3>>0]<<24|0,48)|0,I|0,48)|0;a=d;f[a>>2]=i;f[a+4>>2]=I;c=An(0,c|0,48)|0;a=I;break}default:{i=0;return i|0}}i=d+8|0;f[i>>2]=c;f[i+4>>2]=a;i=1;return i|0}function Ke(a){a=a|0;var b=0,c=0,d=0,e=0,g=0,h=0,i=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0;p=u;u=u+16|0;m=p;k=Sa[f[(f[a>>2]|0)+24>>2]&255](a)|0;if((k|0)<=0){a=1;o=1;o=a|o;u=p;return o|0}j=a+36|0;l=a+48|0;b=0;while(1){i=(Sa[f[(f[a>>2]|0)+28>>2]&255](a)|0)+40|0;if(f[i>>2]|0){h=f[(f[(f[j>>2]|0)+(b<<2)>>2]|0)+8>>2]|0;g=(Sa[f[(f[a>>2]|0)+28>>2]&255](a)|0)+40|0;g=f[g>>2]|0;h=f[h+56>>2]|0;f[m>>2]=0;f[m+4>>2]=0;f[m+8>>2]=0;Pj(m,19295,24);i=g+16|0;d=f[i>>2]|0;if(d){c=i;e=d;a:while(1){d=e;while(1){if((f[d+16>>2]|0)>=(h|0))break;d=f[d+4>>2]|0;if(!d)break a}e=f[d>>2]|0;if(!e){c=d;break}else c=d}if(((c|0)!=(i|0)?(n=c+20|0,(h|0)>=(f[c+16>>2]|0)):0)?(Wh(n,m)|0)!=0:0)c=Vj(n,m,0)|0;else o=13}else o=13;if((o|0)==13){o=0;c=Vj(g,m,0)|0}Lo(m);if(c){o=15;break}}i=f[(f[j>>2]|0)+(b<<2)>>2]|0;if(!(Wa[f[(f[i>>2]|0)+24>>2]&127](i,l)|0)){b=0;c=0;o=18;break}b=b+1|0;if((b|0)>=(k|0)){b=1;c=1;o=18;break}}if((o|0)==15){a=f[(f[j>>2]|0)+(b<<2)>>2]|0;o=f[a+8>>2]|0;ff(o,lh(a)|0);a=0;o=1;o=a|o;u=p;return o|0}else if((o|0)==18){o=b|c;u=p;return o|0}return 0}function Le(a,b,c,d,e,g){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;g=g|0;var h=0,i=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0,v=0,w=0;p=f[a+32>>2]|0;q=f[a+36>>2]|0;s=e>>>0>1073741823?-1:e<<2;r=Zq(s)|0;ej(r|0,0,s|0)|0;s=a+8|0;ji(s,r,b,c);n=a+40|0;g=f[n>>2]|0;a=f[g+4>>2]|0;d=f[g>>2]|0;m=a-d|0;o=m>>2;if((m|0)<=4){_q(r);return 1}m=p+64|0;k=p+28|0;l=(e|0)>0;h=a;a=1;while(1){if(h-d>>2>>>0<=a>>>0){Kp(g);d=f[g>>2]|0}d=f[d+(a<<2)>>2]|0;j=X(a,e)|0;if((!((d|0)<0?1:(1<<(d&31)&f[(f[p>>2]|0)+(d>>>5<<2)>>2]|0)!=0)?(w=f[(f[(f[m>>2]|0)+12>>2]|0)+(d<<2)>>2]|0,(w|0)>=0):0)?(v=f[k>>2]|0,i=f[q>>2]|0,t=f[i+(f[v+(w<<2)>>2]<<2)>>2]|0,u=w+1|0,u=f[i+(f[v+((((u|0)%3|0|0)==0?w+-2|0:u)<<2)>>2]<<2)>>2]|0,v=f[i+(f[v+((((w>>>0)%3|0|0)==0?2:-1)+w<<2)>>2]<<2)>>2]|0,(t|0)<(a|0)&(u|0)<(a|0)&(v|0)<(a|0)):0){g=X(t,e)|0;h=X(u,e)|0;i=X(v,e)|0;if(l){d=0;do{f[r+(d<<2)>>2]=(f[c+(d+i<<2)>>2]|0)+(f[c+(d+h<<2)>>2]|0)-(f[c+(d+g<<2)>>2]|0);d=d+1|0}while((d|0)!=(e|0))}ji(s,r,b+(j<<2)|0,c+(j<<2)|0)}else ji(s,c+((X(a+-1|0,e)|0)<<2)|0,b+(j<<2)|0,c+(j<<2)|0);a=a+1|0;if((a|0)>=(o|0))break;h=f[n>>2]|0;g=h;d=f[h>>2]|0;h=f[h+4>>2]|0}_q(r);return 1}function Me(a,c){a=a|0;c=c|0;var d=0,e=0,g=0,h=0,i=0;i=(c|0)==(a|0);b[c+12>>0]=i&1;if(i)return;while(1){h=f[c+8>>2]|0;g=h+12|0;if(b[g>>0]|0){e=23;break}i=h+8|0;d=f[i>>2]|0;e=f[d>>2]|0;if((e|0)==(h|0)){e=f[d+4>>2]|0;if(!e){e=7;break}e=e+12|0;if(!(b[e>>0]|0))c=e;else{e=7;break}}else{if(!e){e=16;break}e=e+12|0;if(!(b[e>>0]|0))c=e;else{e=16;break}}b[g>>0]=1;i=(d|0)==(a|0);b[d+12>>0]=i&1;b[c>>0]=1;if(i){e=23;break}else c=d}if((e|0)==7){if((f[h>>2]|0)==(c|0))c=h;else{a=h+4|0;c=f[a>>2]|0;e=f[c>>2]|0;f[a>>2]=e;if(e){f[e+8>>2]=h;d=f[i>>2]|0}a=c+8|0;f[a>>2]=d;d=f[i>>2]|0;f[((f[d>>2]|0)==(h|0)?d:d+4|0)>>2]=c;f[c>>2]=h;f[i>>2]=c;d=f[a>>2]|0}b[c+12>>0]=1;b[d+12>>0]=0;c=f[d>>2]|0;g=c+4|0;e=f[g>>2]|0;f[d>>2]=e;if(e|0)f[e+8>>2]=d;i=d+8|0;f[c+8>>2]=f[i>>2];h=f[i>>2]|0;f[((f[h>>2]|0)==(d|0)?h:h+4|0)>>2]=c;f[g>>2]=d;f[i>>2]=c;return}else if((e|0)==16){if((f[h>>2]|0)==(c|0)){c=f[h>>2]|0;g=c+4|0;e=f[g>>2]|0;f[h>>2]=e;if(e){f[e+8>>2]=h;d=f[i>>2]|0}e=c+8|0;f[e>>2]=d;a=f[i>>2]|0;f[((f[a>>2]|0)==(h|0)?a:a+4|0)>>2]=c;f[g>>2]=h;f[i>>2]=c;e=f[e>>2]|0}else{c=h;e=d}b[c+12>>0]=1;b[e+12>>0]=0;i=e+4|0;c=f[i>>2]|0;d=f[c>>2]|0;f[i>>2]=d;if(d|0)f[d+8>>2]=e;i=e+8|0;f[c+8>>2]=f[i>>2];h=f[i>>2]|0;f[((f[h>>2]|0)==(e|0)?h:h+4|0)>>2]=c;f[c>>2]=e;f[i>>2]=c;return}else if((e|0)==23)return}function Ne(a,c,d){a=a|0;c=c|0;d=d|0;var e=0,g=0,i=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0;o=u;u=u+16|0;n=o+4|0;m=o;i=c+8|0;k=i;e=f[k>>2]|0;k=f[k+4>>2]|0;l=c+16|0;j=l;g=f[j>>2]|0;j=f[j+4>>2]|0;p=Ho(g|0,j|0,4,0)|0;q=I;if((k|0)<(q|0)|(k|0)==(q|0)&e>>>0

>>0)i=k;else{g=(f[c>>2]|0)+g|0;g=h[g>>0]|h[g+1>>0]<<8|h[g+2>>0]<<16|h[g+3>>0]<<24;b[a>>0]=g;b[a+1>>0]=g>>8;b[a+2>>0]=g>>16;b[a+3>>0]=g>>24;g=l;g=Ho(f[g>>2]|0,f[g+4>>2]|0,4,0)|0;j=I;e=l;f[e>>2]=g;f[e+4>>2]=j;e=i;i=f[e+4>>2]|0;e=f[e>>2]|0}k=a+4|0;q=Ho(g|0,j|0,4,0)|0;p=I;if((i|0)<(p|0)|(i|0)==(p|0)&e>>>0>>0)e=f[k>>2]|0;else{e=(f[c>>2]|0)+g|0;e=h[e>>0]|h[e+1>>0]<<8|h[e+2>>0]<<16|h[e+3>>0]<<24;b[k>>0]=e;b[k+1>>0]=e>>8;b[k+2>>0]=e>>16;b[k+3>>0]=e>>24;p=l;p=Ho(f[p>>2]|0,f[p+4>>2]|0,4,0)|0;q=l;f[q>>2]=p;f[q+4>>2]=I}if(!e){q=1;u=o;return q|0}if(!(Qf(a+12|0,c)|0)){q=0;u=o;return q|0}if(!(Qf(a+32|0,c)|0)){q=0;u=o;return q|0}if(!(Qf(a+52|0,c)|0)){q=0;u=o;return q|0}if(!(Qf(a+72|0,c)|0)){q=0;u=o;return q|0}q=f[k>>2]|0;f[m>>2]=f[d>>2];f[n>>2]=f[m>>2];ib(a,q,n);q=1;u=o;return q|0}function Oe(a,c,d){a=a|0;c=c|0;d=d|0;var e=0,g=0,i=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0;o=u;u=u+16|0;n=o+4|0;m=o;i=c+8|0;k=i;e=f[k>>2]|0;k=f[k+4>>2]|0;l=c+16|0;j=l;g=f[j>>2]|0;j=f[j+4>>2]|0;p=Ho(g|0,j|0,4,0)|0;q=I;if((k|0)<(q|0)|(k|0)==(q|0)&e>>>0

>>0)i=k;else{g=(f[c>>2]|0)+g|0;g=h[g>>0]|h[g+1>>0]<<8|h[g+2>>0]<<16|h[g+3>>0]<<24;b[a>>0]=g;b[a+1>>0]=g>>8;b[a+2>>0]=g>>16;b[a+3>>0]=g>>24;g=l;g=Ho(f[g>>2]|0,f[g+4>>2]|0,4,0)|0;j=I;e=l;f[e>>2]=g;f[e+4>>2]=j;e=i;i=f[e+4>>2]|0;e=f[e>>2]|0}k=a+4|0;q=Ho(g|0,j|0,4,0)|0;p=I;if((i|0)<(p|0)|(i|0)==(p|0)&e>>>0>>0)e=f[k>>2]|0;else{e=(f[c>>2]|0)+g|0;e=h[e>>0]|h[e+1>>0]<<8|h[e+2>>0]<<16|h[e+3>>0]<<24;b[k>>0]=e;b[k+1>>0]=e>>8;b[k+2>>0]=e>>16;b[k+3>>0]=e>>24;p=l;p=Ho(f[p>>2]|0,f[p+4>>2]|0,4,0)|0;q=l;f[q>>2]=p;f[q+4>>2]=I}if(!e){q=1;u=o;return q|0}if(!(Qf(a+12|0,c)|0)){q=0;u=o;return q|0}if(!(Qf(a+32|0,c)|0)){q=0;u=o;return q|0}if(!(Qf(a+52|0,c)|0)){q=0;u=o;return q|0}if(!(Qf(a+72|0,c)|0)){q=0;u=o;return q|0}q=f[k>>2]|0;f[m>>2]=f[d>>2];f[n>>2]=f[m>>2];gb(a,q,n);q=1;u=o;return q|0}function Pe(a,c,d){a=a|0;c=c|0;d=d|0;var e=0,g=0,i=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0;o=u;u=u+16|0;n=o+4|0;m=o;i=c+8|0;k=i;e=f[k>>2]|0;k=f[k+4>>2]|0;l=c+16|0;j=l;g=f[j>>2]|0;j=f[j+4>>2]|0;p=Ho(g|0,j|0,4,0)|0;q=I;if((k|0)<(q|0)|(k|0)==(q|0)&e>>>0

>>0)i=k;else{g=(f[c>>2]|0)+g|0;g=h[g>>0]|h[g+1>>0]<<8|h[g+2>>0]<<16|h[g+3>>0]<<24;b[a>>0]=g;b[a+1>>0]=g>>8;b[a+2>>0]=g>>16;b[a+3>>0]=g>>24;g=l;g=Ho(f[g>>2]|0,f[g+4>>2]|0,4,0)|0;j=I;e=l;f[e>>2]=g;f[e+4>>2]=j;e=i;i=f[e+4>>2]|0;e=f[e>>2]|0}k=a+4|0;q=Ho(g|0,j|0,4,0)|0;p=I;if((i|0)<(p|0)|(i|0)==(p|0)&e>>>0>>0)e=f[k>>2]|0;else{e=(f[c>>2]|0)+g|0;e=h[e>>0]|h[e+1>>0]<<8|h[e+2>>0]<<16|h[e+3>>0]<<24;b[k>>0]=e;b[k+1>>0]=e>>8;b[k+2>>0]=e>>16;b[k+3>>0]=e>>24;p=l;p=Ho(f[p>>2]|0,f[p+4>>2]|0,4,0)|0;q=l;f[q>>2]=p;f[q+4>>2]=I}if(!e){q=1;u=o;return q|0}if(!(Ff(a+12|0,c)|0)){q=0;u=o;return q|0}if(!(Qf(a+28|0,c)|0)){q=0;u=o;return q|0}if(!(Qf(a+48|0,c)|0)){q=0;u=o;return q|0}if(!(Qf(a+68|0,c)|0)){q=0;u=o;return q|0}q=f[k>>2]|0;f[m>>2]=f[d>>2];f[n>>2]=f[m>>2];vb(a,q,n);q=1;u=o;return q|0}function Qe(a,c,d){a=a|0;c=c|0;d=d|0;var e=0,g=0,i=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0;o=u;u=u+16|0;n=o+4|0;m=o;i=c+8|0;k=i;e=f[k>>2]|0;k=f[k+4>>2]|0;l=c+16|0;j=l;g=f[j>>2]|0;j=f[j+4>>2]|0;p=Ho(g|0,j|0,4,0)|0;q=I;if((k|0)<(q|0)|(k|0)==(q|0)&e>>>0

>>0)i=k;else{g=(f[c>>2]|0)+g|0;g=h[g>>0]|h[g+1>>0]<<8|h[g+2>>0]<<16|h[g+3>>0]<<24;b[a>>0]=g;b[a+1>>0]=g>>8;b[a+2>>0]=g>>16;b[a+3>>0]=g>>24;g=l;g=Ho(f[g>>2]|0,f[g+4>>2]|0,4,0)|0;j=I;e=l;f[e>>2]=g;f[e+4>>2]=j;e=i;i=f[e+4>>2]|0;e=f[e>>2]|0}k=a+4|0;q=Ho(g|0,j|0,4,0)|0;p=I;if((i|0)<(p|0)|(i|0)==(p|0)&e>>>0>>0)e=f[k>>2]|0;else{e=(f[c>>2]|0)+g|0;e=h[e>>0]|h[e+1>>0]<<8|h[e+2>>0]<<16|h[e+3>>0]<<24;b[k>>0]=e;b[k+1>>0]=e>>8;b[k+2>>0]=e>>16;b[k+3>>0]=e>>24;p=l;p=Ho(f[p>>2]|0,f[p+4>>2]|0,4,0)|0;q=l;f[q>>2]=p;f[q+4>>2]=I}if(!e){q=1;u=o;return q|0}if(!(Ff(a+12|0,c)|0)){q=0;u=o;return q|0}if(!(Qf(a+28|0,c)|0)){q=0;u=o;return q|0}if(!(Qf(a+48|0,c)|0)){q=0;u=o;return q|0}if(!(Qf(a+68|0,c)|0)){q=0;u=o;return q|0}q=f[k>>2]|0;f[m>>2]=f[d>>2];f[n>>2]=f[m>>2];ub(a,q,n);q=1;u=o;return q|0}function Re(a,c,d){a=a|0;c=c|0;d=d|0;var e=0,g=0,i=0;switch(b[a+24>>0]|0){case 1:{g=f[c>>2]|0;e=a+48|0;c=f[e>>2]|0;e=f[e+4>>2]|0;i=a+40|0;e=Ho(kn(f[i>>2]|0,f[i+4>>2]|0,g|0,((g|0)<0)<<31>>31|0)|0,I|0,c|0,e|0)|0;c=d;f[c>>2]=h[(f[f[a>>2]>>2]|0)+e>>0];f[c+4>>2]=0;a=d+8|0;f[a>>2]=0;f[a+4>>2]=0;f[a+8>>2]=0;f[a+12>>2]=0;a=1;return a|0}case 2:{e=f[c>>2]|0;g=a+48|0;i=f[g>>2]|0;g=f[g+4>>2]|0;c=a+40|0;g=(Ho(kn(f[c>>2]|0,f[c+4>>2]|0,e|0,((e|0)<0)<<31>>31|0)|0,I|0,i|0,g|0)|0)+(f[f[a>>2]>>2]|0)|0;g=h[g>>0]|h[g+1>>0]<<8;i=d;f[i>>2]=g&255;f[i+4>>2]=0;i=d+8|0;f[i>>2]=(g&65535)>>>8&65535;f[i+4>>2]=0;i=d+16|0;f[i>>2]=0;f[i+4>>2]=0;i=1;return i|0}case 3:{i=f[c>>2]|0;e=a+48|0;g=f[e>>2]|0;e=f[e+4>>2]|0;c=a+40|0;a=(Ho(kn(f[c>>2]|0,f[c+4>>2]|0,i|0,((i|0)<0)<<31>>31|0)|0,I|0,g|0,e|0)|0)+(f[f[a>>2]>>2]|0)|0;e=b[a+1>>0]|0;g=b[a+2>>0]|0;i=d;f[i>>2]=h[a>>0];f[i+4>>2]=0;i=d+8|0;f[i>>2]=e&255;f[i+4>>2]=0;i=d+16|0;f[i>>2]=g&255;f[i+4>>2]=0;i=1;return i|0}case 4:{e=f[c>>2]|0;g=a+48|0;i=f[g>>2]|0;g=f[g+4>>2]|0;c=a+40|0;g=(Ho(kn(f[c>>2]|0,f[c+4>>2]|0,e|0,((e|0)<0)<<31>>31|0)|0,I|0,i|0,g|0)|0)+(f[f[a>>2]>>2]|0)|0;g=h[g>>0]|h[g+1>>0]<<8|h[g+2>>0]<<16|h[g+3>>0]<<24;i=d;f[i>>2]=g&255;f[i+4>>2]=0;i=d+8|0;f[i>>2]=g>>>8&255;f[i+4>>2]=0;i=d+16|0;f[i>>2]=g>>>16&255;f[i+4>>2]=0;i=1;return i|0}default:{i=0;return i|0}}return 0}function Se(a,b,c,d,e,g){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;g=g|0;var h=0,i=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0,v=0,w=0;p=f[a+32>>2]|0;q=f[a+36>>2]|0;s=e>>>0>1073741823?-1:e<<2;r=Zq(s)|0;ej(r|0,0,s|0)|0;s=a+8|0;mi(s,r,b,c);n=a+40|0;g=f[n>>2]|0;a=f[g+4>>2]|0;d=f[g>>2]|0;m=a-d|0;o=m>>2;if((m|0)<=4){_q(r);return 1}m=p+64|0;k=p+28|0;l=(e|0)>0;h=a;a=1;while(1){if(h-d>>2>>>0<=a>>>0){Kp(g);d=f[g>>2]|0}d=f[d+(a<<2)>>2]|0;j=X(a,e)|0;if((!((d|0)<0?1:(1<<(d&31)&f[(f[p>>2]|0)+(d>>>5<<2)>>2]|0)!=0)?(w=f[(f[(f[m>>2]|0)+12>>2]|0)+(d<<2)>>2]|0,(w|0)>=0):0)?(v=f[k>>2]|0,i=f[q>>2]|0,t=f[i+(f[v+(w<<2)>>2]<<2)>>2]|0,u=w+1|0,u=f[i+(f[v+((((u|0)%3|0|0)==0?w+-2|0:u)<<2)>>2]<<2)>>2]|0,v=f[i+(f[v+((((w>>>0)%3|0|0)==0?2:-1)+w<<2)>>2]<<2)>>2]|0,(t|0)<(a|0)&(u|0)<(a|0)&(v|0)<(a|0)):0){g=X(t,e)|0;h=X(u,e)|0;i=X(v,e)|0;if(l){d=0;do{f[r+(d<<2)>>2]=(f[c+(d+i<<2)>>2]|0)+(f[c+(d+h<<2)>>2]|0)-(f[c+(d+g<<2)>>2]|0);d=d+1|0}while((d|0)!=(e|0))}mi(s,r,b+(j<<2)|0,c+(j<<2)|0)}else mi(s,c+((X(a+-1|0,e)|0)<<2)|0,b+(j<<2)|0,c+(j<<2)|0);a=a+1|0;if((a|0)>=(o|0))break;h=f[n>>2]|0;g=h;d=f[h>>2]|0;h=f[h+4>>2]|0}_q(r);return 1}function Te(a,b){a=a|0;b=b|0;var c=0,d=0,e=0,g=0,i=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0;q=u;u=u+16|0;p=q;i=b+8|0;g=i;j=f[g>>2]|0;g=f[g+4>>2]|0;o=b+16|0;d=o;c=f[d>>2]|0;d=Ho(c|0,f[d+4>>2]|0,4,0)|0;e=I;if((g|0)<(e|0)|(g|0)==(e|0)&j>>>0>>0){p=0;u=q;return p|0}g=(f[b>>2]|0)+c|0;g=h[g>>0]|h[g+1>>0]<<8|h[g+2>>0]<<16|h[g+3>>0]<<24;j=o;f[j>>2]=d;f[j+4>>2]=e;if((g|0)<0){p=0;u=q;return p|0}Fe(a+76|0,g,0);xq(p);if(Ff(p,b)|0){if((g|0)>0){c=a+76|0;d=0;e=1;do{e=e^((Tk(p)|0)^1);j=(f[c>>2]|0)+(d>>>5<<2)|0;r=1<<(d&31);s=f[j>>2]|0;f[j>>2]=e?s|r:s&~r;d=d+1|0}while((d|0)<(g|0))}d=i;c=f[d>>2]|0;d=f[d+4>>2]|0;g=o;e=f[g>>2]|0;g=f[g+4>>2]|0;i=Ho(e|0,g|0,4,0)|0;j=I;if(!((d|0)<(j|0)|(d|0)==(j|0)&c>>>0>>0)?(k=f[b>>2]|0,l=k+e|0,l=h[l>>0]|h[l+1>>0]<<8|h[l+2>>0]<<16|h[l+3>>0]<<24,m=o,f[m>>2]=i,f[m+4>>2]=j,m=Ho(e|0,g|0,8,0)|0,n=I,!((d|0)<(n|0)|(d|0)==(n|0)&c>>>0>>0)):0){s=k+i|0;s=h[s>>0]|h[s+1>>0]<<8|h[s+2>>0]<<16|h[s+3>>0]<<24;c=o;f[c>>2]=m;f[c+4>>2]=n;f[a+12>>2]=l;f[a+16>>2]=s;s=s+(1-l)|0;f[a+20>>2]=s;c=(s|0)/2|0;d=a+24|0;f[d>>2]=c;f[a+28>>2]=0-c;if(!(s&1)){f[d>>2]=c+-1;c=1}else c=1}else c=0}else c=0;fr(p);s=c;u=q;return s|0}function Ue(a,c,d){a=a|0;c=c|0;d=d|0;var e=0,g=0,i=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0;o=u;u=u+16|0;n=o+8|0;m=o;i=c+8|0;k=i;e=f[k>>2]|0;k=f[k+4>>2]|0;l=c+16|0;j=l;g=f[j>>2]|0;j=f[j+4>>2]|0;p=Ho(g|0,j|0,4,0)|0;q=I;if((k|0)<(q|0)|(k|0)==(q|0)&e>>>0

>>0)i=k;else{g=(f[c>>2]|0)+g|0;g=h[g>>0]|h[g+1>>0]<<8|h[g+2>>0]<<16|h[g+3>>0]<<24;b[a>>0]=g;b[a+1>>0]=g>>8;b[a+2>>0]=g>>16;b[a+3>>0]=g>>24;g=l;g=Ho(f[g>>2]|0,f[g+4>>2]|0,4,0)|0;j=I;e=l;f[e>>2]=g;f[e+4>>2]=j;e=i;i=f[e+4>>2]|0;e=f[e>>2]|0}k=a+4|0;q=Ho(g|0,j|0,4,0)|0;p=I;if((i|0)<(p|0)|(i|0)==(p|0)&e>>>0>>0)e=f[k>>2]|0;else{e=(f[c>>2]|0)+g|0;e=h[e>>0]|h[e+1>>0]<<8|h[e+2>>0]<<16|h[e+3>>0]<<24;b[k>>0]=e;b[k+1>>0]=e>>8;b[k+2>>0]=e>>16;b[k+3>>0]=e>>24;p=l;p=Ho(f[p>>2]|0,f[p+4>>2]|0,4,0)|0;q=l;f[q>>2]=p;f[q+4>>2]=I}if(!e){q=1;u=o;return q|0}if(!(Qf(a+12|0,c)|0)){q=0;u=o;return q|0}if(!(Qf(a+32|0,c)|0)){q=0;u=o;return q|0}if(!(Qf(a+52|0,c)|0)){q=0;u=o;return q|0}if(!(Qf(a+72|0,c)|0)){q=0;u=o;return q|0}q=f[k>>2]|0;c=d;d=f[c+4>>2]|0;p=m;f[p>>2]=f[c>>2];f[p+4>>2]=d;f[n>>2]=f[m>>2];f[n+4>>2]=f[m+4>>2];hb(a,q,n);q=1;u=o;return q|0}function Ve(a,c,d){a=a|0;c=c|0;d=d|0;var e=0,g=0,i=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0;o=u;u=u+16|0;n=o+8|0;m=o;i=c+8|0;k=i;e=f[k>>2]|0;k=f[k+4>>2]|0;l=c+16|0;j=l;g=f[j>>2]|0;j=f[j+4>>2]|0;p=Ho(g|0,j|0,4,0)|0;q=I;if((k|0)<(q|0)|(k|0)==(q|0)&e>>>0

>>0)i=k;else{g=(f[c>>2]|0)+g|0;g=h[g>>0]|h[g+1>>0]<<8|h[g+2>>0]<<16|h[g+3>>0]<<24;b[a>>0]=g;b[a+1>>0]=g>>8;b[a+2>>0]=g>>16;b[a+3>>0]=g>>24;g=l;g=Ho(f[g>>2]|0,f[g+4>>2]|0,4,0)|0;j=I;e=l;f[e>>2]=g;f[e+4>>2]=j;e=i;i=f[e+4>>2]|0;e=f[e>>2]|0}k=a+4|0;q=Ho(g|0,j|0,4,0)|0;p=I;if((i|0)<(p|0)|(i|0)==(p|0)&e>>>0>>0)e=f[k>>2]|0;else{e=(f[c>>2]|0)+g|0;e=h[e>>0]|h[e+1>>0]<<8|h[e+2>>0]<<16|h[e+3>>0]<<24;b[k>>0]=e;b[k+1>>0]=e>>8;b[k+2>>0]=e>>16;b[k+3>>0]=e>>24;p=l;p=Ho(f[p>>2]|0,f[p+4>>2]|0,4,0)|0;q=l;f[q>>2]=p;f[q+4>>2]=I}if(!e){q=1;u=o;return q|0}if(!(Qf(a+12|0,c)|0)){q=0;u=o;return q|0}if(!(Qf(a+32|0,c)|0)){q=0;u=o;return q|0}if(!(Qf(a+52|0,c)|0)){q=0;u=o;return q|0}if(!(Qf(a+72|0,c)|0)){q=0;u=o;return q|0}q=f[k>>2]|0;c=d;d=f[c+4>>2]|0;p=m;f[p>>2]=f[c>>2];f[p+4>>2]=d;f[n>>2]=f[m>>2];f[n+4>>2]=f[m+4>>2];fb(a,q,n);q=1;u=o;return q|0}function We(a,c,d){a=a|0;c=c|0;d=d|0;var e=0,g=0,i=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0;o=u;u=u+16|0;n=o+8|0;m=o;i=c+8|0;k=i;e=f[k>>2]|0;k=f[k+4>>2]|0;l=c+16|0;j=l;g=f[j>>2]|0;j=f[j+4>>2]|0;p=Ho(g|0,j|0,4,0)|0;q=I;if((k|0)<(q|0)|(k|0)==(q|0)&e>>>0

>>0)i=k;else{g=(f[c>>2]|0)+g|0;g=h[g>>0]|h[g+1>>0]<<8|h[g+2>>0]<<16|h[g+3>>0]<<24;b[a>>0]=g;b[a+1>>0]=g>>8;b[a+2>>0]=g>>16;b[a+3>>0]=g>>24;g=l;g=Ho(f[g>>2]|0,f[g+4>>2]|0,4,0)|0;j=I;e=l;f[e>>2]=g;f[e+4>>2]=j;e=i;i=f[e+4>>2]|0;e=f[e>>2]|0}k=a+4|0;q=Ho(g|0,j|0,4,0)|0;p=I;if((i|0)<(p|0)|(i|0)==(p|0)&e>>>0>>0)e=f[k>>2]|0;else{e=(f[c>>2]|0)+g|0;e=h[e>>0]|h[e+1>>0]<<8|h[e+2>>0]<<16|h[e+3>>0]<<24;b[k>>0]=e;b[k+1>>0]=e>>8;b[k+2>>0]=e>>16;b[k+3>>0]=e>>24;p=l;p=Ho(f[p>>2]|0,f[p+4>>2]|0,4,0)|0;q=l;f[q>>2]=p;f[q+4>>2]=I}if(!e){q=1;u=o;return q|0}if(!(Ff(a+12|0,c)|0)){q=0;u=o;return q|0}if(!(Qf(a+28|0,c)|0)){q=0;u=o;return q|0}if(!(Qf(a+48|0,c)|0)){q=0;u=o;return q|0}if(!(Qf(a+68|0,c)|0)){q=0;u=o;return q|0}q=f[k>>2]|0;c=d;d=f[c+4>>2]|0;p=m;f[p>>2]=f[c>>2];f[p+4>>2]=d;f[n>>2]=f[m>>2];f[n+4>>2]=f[m+4>>2];tb(a,q,n);q=1;u=o;return q|0}function Xe(a,c,d){a=a|0;c=c|0;d=d|0;var e=0,g=0,i=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0;o=u;u=u+16|0;n=o+8|0;m=o;i=c+8|0;k=i;e=f[k>>2]|0;k=f[k+4>>2]|0;l=c+16|0;j=l;g=f[j>>2]|0;j=f[j+4>>2]|0;p=Ho(g|0,j|0,4,0)|0;q=I;if((k|0)<(q|0)|(k|0)==(q|0)&e>>>0

>>0)i=k;else{g=(f[c>>2]|0)+g|0;g=h[g>>0]|h[g+1>>0]<<8|h[g+2>>0]<<16|h[g+3>>0]<<24;b[a>>0]=g;b[a+1>>0]=g>>8;b[a+2>>0]=g>>16;b[a+3>>0]=g>>24;g=l;g=Ho(f[g>>2]|0,f[g+4>>2]|0,4,0)|0;j=I;e=l;f[e>>2]=g;f[e+4>>2]=j;e=i;i=f[e+4>>2]|0;e=f[e>>2]|0}k=a+4|0;q=Ho(g|0,j|0,4,0)|0;p=I;if((i|0)<(p|0)|(i|0)==(p|0)&e>>>0>>0)e=f[k>>2]|0;else{e=(f[c>>2]|0)+g|0;e=h[e>>0]|h[e+1>>0]<<8|h[e+2>>0]<<16|h[e+3>>0]<<24;b[k>>0]=e;b[k+1>>0]=e>>8;b[k+2>>0]=e>>16;b[k+3>>0]=e>>24;p=l;p=Ho(f[p>>2]|0,f[p+4>>2]|0,4,0)|0;q=l;f[q>>2]=p;f[q+4>>2]=I}if(!e){q=1;u=o;return q|0}if(!(Ff(a+12|0,c)|0)){q=0;u=o;return q|0}if(!(Qf(a+28|0,c)|0)){q=0;u=o;return q|0}if(!(Qf(a+48|0,c)|0)){q=0;u=o;return q|0}if(!(Qf(a+68|0,c)|0)){q=0;u=o;return q|0}q=f[k>>2]|0;c=d;d=f[c+4>>2]|0;p=m;f[p>>2]=f[c>>2];f[p+4>>2]=d;f[n>>2]=f[m>>2];f[n+4>>2]=f[m+4>>2];sb(a,q,n);q=1;u=o;return q|0}function Ye(a,b){a=a|0;b=b|0;var c=0,d=0,e=0,g=0,i=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0;q=u;u=u+16|0;p=q;i=b+8|0;g=i;j=f[g>>2]|0;g=f[g+4>>2]|0;o=b+16|0;d=o;c=f[d>>2]|0;d=Ho(c|0,f[d+4>>2]|0,4,0)|0;e=I;if((g|0)<(e|0)|(g|0)==(e|0)&j>>>0>>0){p=0;u=q;return p|0}g=(f[b>>2]|0)+c|0;g=h[g>>0]|h[g+1>>0]<<8|h[g+2>>0]<<16|h[g+3>>0]<<24;j=o;f[j>>2]=d;f[j+4>>2]=e;if((g|0)<0){p=0;u=q;return p|0}e=a+76|0;Fe(e,g,0);xq(p);if(Ff(p,b)|0){if((g|0)>0){c=0;d=1;do{d=d^((Tk(p)|0)^1);j=(f[e>>2]|0)+(c>>>5<<2)|0;r=1<<(c&31);s=f[j>>2]|0;f[j>>2]=d?s|r:s&~r;c=c+1|0}while((c|0)<(g|0))}d=i;c=f[d>>2]|0;d=f[d+4>>2]|0;g=o;e=f[g>>2]|0;g=f[g+4>>2]|0;i=Ho(e|0,g|0,4,0)|0;j=I;if(!((d|0)<(j|0)|(d|0)==(j|0)&c>>>0>>0)?(k=f[b>>2]|0,l=k+e|0,l=h[l>>0]|h[l+1>>0]<<8|h[l+2>>0]<<16|h[l+3>>0]<<24,m=o,f[m>>2]=i,f[m+4>>2]=j,m=Ho(e|0,g|0,8,0)|0,n=I,!((d|0)<(n|0)|(d|0)==(n|0)&c>>>0>>0)):0){s=k+i|0;s=h[s>>0]|h[s+1>>0]<<8|h[s+2>>0]<<16|h[s+3>>0]<<24;c=o;f[c>>2]=m;f[c+4>>2]=n;f[a+12>>2]=l;f[a+16>>2]=s;s=s+(1-l)|0;f[a+20>>2]=s;c=(s|0)/2|0;d=a+24|0;f[d>>2]=c;f[a+28>>2]=0-c;if(!(s&1)){f[d>>2]=c+-1;c=1}else c=1}else c=0}else c=0;fr(p);s=c;u=q;return s|0}function Ze(a,c,d){a=a|0;c=c|0;d=d|0;var e=0,g=0,i=0;switch(b[a+24>>0]|0){case 1:{g=f[c>>2]|0;c=a+48|0;e=f[c>>2]|0;c=f[c+4>>2]|0;i=a+40|0;a=(Ho(kn(f[i>>2]|0,f[i+4>>2]|0,g|0,((g|0)<0)<<31>>31|0)|0,I|0,e|0,c|0)|0)+(f[f[a>>2]>>2]|0)|0;c=d;f[c>>2]=h[a>>0]|h[a+1>>0]<<8|h[a+2>>0]<<16|h[a+3>>0]<<24;f[c+4>>2]=0;c=0;a=0;break}case 2:{g=f[c>>2]|0;c=a+48|0;i=f[c>>2]|0;c=f[c+4>>2]|0;e=a+40|0;c=(Ho(kn(f[e>>2]|0,f[e+4>>2]|0,g|0,((g|0)<0)<<31>>31|0)|0,I|0,i|0,c|0)|0)+(f[f[a>>2]>>2]|0)|0;i=c;c=c+4|0;c=h[c>>0]|h[c+1>>0]<<8|h[c+2>>0]<<16|h[c+3>>0]<<24;a=d;f[a>>2]=h[i>>0]|h[i+1>>0]<<8|h[i+2>>0]<<16|h[i+3>>0]<<24;f[a+4>>2]=0;a=0;break}case 3:{g=f[c>>2]|0;i=a+48|0;c=f[i>>2]|0;i=f[i+4>>2]|0;e=a+40|0;i=(Ho(kn(f[e>>2]|0,f[e+4>>2]|0,g|0,((g|0)<0)<<31>>31|0)|0,I|0,c|0,i|0)|0)+(f[f[a>>2]>>2]|0)|0;c=i+4|0;c=h[c>>0]|h[c+1>>0]<<8|h[c+2>>0]<<16|h[c+3>>0]<<24;a=d;f[a>>2]=h[i>>0]|h[i+1>>0]<<8|h[i+2>>0]<<16|h[i+3>>0]<<24;f[a+4>>2]=0;a=0;break}case 4:{g=f[c>>2]|0;i=a+48|0;c=f[i>>2]|0;i=f[i+4>>2]|0;e=a+40|0;i=(Ho(kn(f[e>>2]|0,f[e+4>>2]|0,g|0,((g|0)<0)<<31>>31|0)|0,I|0,c|0,i|0)|0)+(f[f[a>>2]>>2]|0)|0;c=i+4|0;c=h[c>>0]|h[c+1>>0]<<8|h[c+2>>0]<<16|h[c+3>>0]<<24;a=d;f[a>>2]=h[i>>0]|h[i+1>>0]<<8|h[i+2>>0]<<16|h[i+3>>0]<<24;f[a+4>>2]=0;a=0;break}default:{i=0;return i|0}}i=d+8|0;f[i>>2]=c;f[i+4>>2]=a;i=1;return i|0}function _e(a,c){a=a|0;c=c|0;var d=0,e=0,g=0,h=0,i=0,j=0,k=0,l=0,m=0,n=0,o=0;m=u;u=u+16|0;k=m;if(!(ic(a,c)|0)){a=0;u=m;return a|0}j=Sa[f[(f[a>>2]|0)+24>>2]&255](a)|0;l=a+36|0;h=a+40|0;d=f[h>>2]|0;e=f[l>>2]|0;g=d-e>>2;if(j>>>0<=g>>>0){if(j>>>0>>0?(i=e+(j<<2)|0,(d|0)!=(i|0)):0)do{g=d+-4|0;f[h>>2]=g;d=f[g>>2]|0;f[g>>2]=0;if(d|0)Pa[f[(f[d>>2]|0)+4>>2]&127](d);d=f[h>>2]|0}while((d|0)!=(i|0))}else ig(l,j-g|0);g=c+8|0;if((j|0)<=0){a=1;u=m;return a|0}i=c+16|0;h=0;while(1){n=g;o=f[n+4>>2]|0;e=i;d=f[e>>2]|0;e=f[e+4>>2]|0;if(!((o|0)>(e|0)|((o|0)==(e|0)?(f[n>>2]|0)>>>0>d>>>0:0))){d=0;e=19;break}o=b[(f[c>>2]|0)+d>>0]|0;d=Ho(d|0,e|0,1,0)|0;n=i;f[n>>2]=d;f[n+4>>2]=I;Ta[f[(f[a>>2]|0)+48>>2]&7](k,a,o);o=(f[l>>2]|0)+(h<<2)|0;n=f[k>>2]|0;f[k>>2]=0;d=f[o>>2]|0;f[o>>2]=n;if(d|0)Pa[f[(f[d>>2]|0)+4>>2]&127](d);d=f[k>>2]|0;f[k>>2]=0;if(d|0)Pa[f[(f[d>>2]|0)+4>>2]&127](d);d=f[(f[l>>2]|0)+(h<<2)>>2]|0;if(!d){d=0;e=19;break}e=f[(f[d>>2]|0)+8>>2]|0;n=Sa[f[(f[a>>2]|0)+28>>2]&255](a)|0;o=Wa[f[(f[a>>2]|0)+20>>2]&127](a,h)|0;h=h+1|0;if(!(Na[e&31](d,n,o)|0)){d=0;e=19;break}if((h|0)>=(j|0)){d=1;e=19;break}}if((e|0)==19){u=m;return d|0}return 0}function $e(a,c,d){a=a|0;c=c|0;d=d|0;var e=0,g=0,h=0,i=0,j=0,k=0,l=0,m=0,n=0;n=u;u=u+144|0;i=n+136|0;m=n+32|0;l=n;e=f[(f[c+4>>2]|0)+44>>2]|0;h=ln(124)|0;f[h+4>>2]=0;f[h>>2]=4684;f[h+12>>2]=4708;f[h+100>>2]=0;f[h+104>>2]=0;f[h+108>>2]=0;j=h+16|0;k=j+80|0;do{f[j>>2]=0;j=j+4|0}while((j|0)<(k|0));f[h+112>>2]=e;f[h+116>>2]=d;f[h+120>>2]=0;g=h;f[m+4>>2]=4708;f[m+92>>2]=0;f[m+96>>2]=0;f[m+100>>2]=0;j=m+8|0;k=j+80|0;do{f[j>>2]=0;j=j+4|0}while((j|0)<(k|0));k=f[c+8>>2]|0;f[l>>2]=4708;j=l+4|0;c=j+4|0;f[c>>2]=0;f[c+4>>2]=0;f[c+8>>2]=0;f[c+12>>2]=0;f[c+16>>2]=0;f[c+20>>2]=0;c=k;f[j>>2]=c;c=((f[c+4>>2]|0)-(f[k>>2]|0)>>2>>>0)/3|0;b[i>>0]=0;Yg(l+8|0,c,i);Pa[f[(f[l>>2]|0)+8>>2]&127](l);f[m>>2]=f[j>>2];mg(m+4|0,l)|0;f[m+36>>2]=k;f[m+40>>2]=d;f[m+44>>2]=e;f[m+48>>2]=h;qg(h,m);f[a>>2]=g;f[l>>2]=4708;e=f[l+20>>2]|0;if(e|0)ar(e);e=f[l+8>>2]|0;if(!e){Hi(m);u=n;return}ar(e);Hi(m);u=n;return}function af(a,c){a=a|0;c=c|0;var d=0,e=0,g=0,h=0,i=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0;r=u;u=u+32|0;o=r+12|0;p=r;n=pl(c,0)|0;if(!n){f[a>>2]=0;u=r;return}j=c+84|0;i=c+88|0;c=f[i>>2]|0;e=f[j>>2]|0;d=c-e|0;h=(d|0)/12|0;f[o>>2]=0;q=o+4|0;f[q>>2]=0;f[o+8>>2]=0;if(!d)g=0;else{if(h>>>0>357913941){Lp(o);r=Ia(4)|0;Eq(r);sa(r|0,1344,125)}g=ln(d)|0;f[q>>2]=g;f[o>>2]=g;f[o+8>>2]=g+(h*12|0);e=g;d=g;c=h;while(1){f[e>>2]=0;f[e+4>>2]=0;f[e+8>>2]=0;d=d+12|0;c=c+-1|0;if(!c)break;else e=d}f[q>>2]=d;e=f[j>>2]|0;c=f[i>>2]|0}f[p>>2]=0;f[p+4>>2]=0;f[p+8>>2]=0;c=c-e|0;if((c|0)>0){k=n+68|0;l=p+4|0;m=p+8|0;j=(b[n+84>>0]|0)==0;i=(c|0)/12|0;h=0;do{c=f[e+(h*12|0)>>2]|0;if(j){d=f[k>>2]|0;c=f[d+(c<<2)>>2]|0;f[p>>2]=c;f[l>>2]=f[d+(f[e+(h*12|0)+4>>2]<<2)>>2];d=d+(f[e+(h*12|0)+8>>2]<<2)|0}else{f[p>>2]=c;f[l>>2]=f[e+(h*12|0)+4>>2];d=e+(h*12|0)+8|0}n=f[d>>2]|0;f[m>>2]=n;f[g+(h*12|0)>>2]=c;f[g+(h*12|0)+4>>2]=f[l>>2];f[g+(h*12|0)+8>>2]=n;h=h+1|0}while((h|0)<(i|0))}mk(a,o);d=f[o>>2]|0;if(d|0){c=f[q>>2]|0;if((c|0)!=(d|0))f[q>>2]=c+(~(((c+-12-d|0)>>>0)/12|0)*12|0);ar(d)}u=r;return}function bf(a,c,d){a=a|0;c=c|0;d=d|0;var e=0,g=0,i=0;switch(b[a+24>>0]|0){case 1:{g=f[c>>2]|0;c=a+48|0;e=f[c>>2]|0;c=f[c+4>>2]|0;i=a+40|0;a=(Ho(kn(f[i>>2]|0,f[i+4>>2]|0,g|0,((g|0)<0)<<31>>31|0)|0,I|0,e|0,c|0)|0)+(f[f[a>>2]>>2]|0)|0;c=d;f[c>>2]=(h[a>>0]|h[a+1>>0]<<8)&65535;f[c+4>>2]=0;c=0;a=0;break}case 2:{g=f[c>>2]|0;c=a+48|0;i=f[c>>2]|0;c=f[c+4>>2]|0;e=a+40|0;c=(Ho(kn(f[e>>2]|0,f[e+4>>2]|0,g|0,((g|0)<0)<<31>>31|0)|0,I|0,i|0,c|0)|0)+(f[f[a>>2]>>2]|0)|0;c=h[c>>0]|h[c+1>>0]<<8|h[c+2>>0]<<16|h[c+3>>0]<<24;a=d;f[a>>2]=c&65535;f[a+4>>2]=0;c=c>>>16;a=0;break}case 3:{g=f[c>>2]|0;i=a+48|0;c=f[i>>2]|0;i=f[i+4>>2]|0;e=a+40|0;i=(Ho(kn(f[e>>2]|0,f[e+4>>2]|0,g|0,((g|0)<0)<<31>>31|0)|0,I|0,c|0,i|0)|0)+(f[f[a>>2]>>2]|0)|0;c=i+2|0;c=h[c>>0]|h[c+1>>0]<<8;a=d;f[a>>2]=(h[i>>0]|h[i+1>>0]<<8)&65535;f[a+4>>2]=0;c=c&65535;a=0;break}case 4:{g=f[c>>2]|0;c=a+48|0;i=f[c>>2]|0;c=f[c+4>>2]|0;e=a+40|0;c=(Ho(kn(f[e>>2]|0,f[e+4>>2]|0,g|0,((g|0)<0)<<31>>31|0)|0,I|0,i|0,c|0)|0)+(f[f[a>>2]>>2]|0)|0;a=c;a=h[a>>0]|h[a+1>>0]<<8|h[a+2>>0]<<16|h[a+3>>0]<<24;c=c+4|0;c=h[c>>0]|h[c+1>>0]<<8|h[c+2>>0]<<16|h[c+3>>0]<<24;i=d;f[i>>2]=a&65535;f[i+4>>2]=0;c=(Tn(a|0,c|0,16)|0)&65535;a=0;break}default:{i=0;return i|0}}i=d+8|0;f[i>>2]=c;f[i+4>>2]=a;i=1;return i|0}function cf(a,c,d,e,g){a=a|0;c=c|0;d=d|0;e=e|0;g=g|0;var h=La,i=0,j=0,k=0,l=0,m=0,o=0,p=0,q=0,r=0,s=0,t=0,v=0,w=0,x=La,y=La,z=La,A=La,B=0,C=0;w=u;u=u+32|0;t=w+16|0;v=w;h=$(n[e+4>>2]);if(!(h>=$(0.0)))Ga(17520,17540,66,17607);s=(1<>2])+-1|0;vp(t);En(t,h,s);e=f[c>>2]|0;if((e|0)==(f[d>>2]|0)){t=g;t=f[t>>2]|0;g=g+4|0;g=f[g>>2]|0;v=a;d=v;f[d>>2]=t;v=v+4|0;f[v>>2]=g;u=w;return}p=t+4|0;q=v+4|0;r=v+8|0;j=g+4|0;l=f[g>>2]|0;o=l+84|0;k=l+68|0;m=l+40|0;l=l+64|0;i=f[j>>2]|0;do{B=(f[e>>2]|0)-s|0;c=(B|0)<0;y=$((c?0-B|0:B)|0);h=$(n[p>>2]);y=$(h*y);x=$(-y);A=$(n[t>>2]);y=$(A*(c?x:y));c=(f[e+4>>2]|0)-s|0;B=(c|0)<0;x=$(h*$((B?0-c|0:c)|0));z=$(-x);x=$(A*(B?z:x));B=(f[e+8>>2]|0)-s|0;c=(B|0)<0;h=$(h*$((c?0-B|0:B)|0));z=$(-h);h=$(A*(c?z:h));n[v>>2]=y;n[q>>2]=x;n[r>>2]=h;c=i;i=i+1|0;f[j>>2]=i;if(!(b[o>>0]|0))c=f[(f[k>>2]|0)+(c<<2)>>2]|0;C=m;B=f[C>>2]|0;c=kn(c|0,((c|0)<0)<<31>>31|0,B|0,f[C+4>>2]|0)|0;Mg((f[f[l>>2]>>2]|0)+c|0,v|0,B|0)|0;e=e+12|0}while((e|0)!=(f[d>>2]|0));B=g;g=B;g=f[g>>2]|0;B=B+4|0;B=f[B>>2]|0;C=a;v=C;f[v>>2]=g;C=C+4|0;f[C>>2]=B;u=w;return}function df(a,c,d){a=a|0;c=c|0;d=d|0;var e=0,g=0,i=0;switch(b[a+24>>0]|0){case 1:{g=f[c>>2]|0;c=a+48|0;e=f[c>>2]|0;c=f[c+4>>2]|0;i=a+40|0;c=Ho(kn(f[i>>2]|0,f[i+4>>2]|0,g|0,((g|0)<0)<<31>>31|0)|0,I|0,e|0,c|0)|0;a=b[(f[f[a>>2]>>2]|0)+c>>0]|0;c=d;f[c>>2]=a;f[c+4>>2]=((a|0)<0)<<31>>31;c=0;a=0;break}case 2:{g=f[c>>2]|0;i=a+48|0;c=f[i>>2]|0;i=f[i+4>>2]|0;e=a+40|0;a=(Ho(kn(f[e>>2]|0,f[e+4>>2]|0,g|0,((g|0)<0)<<31>>31|0)|0,I|0,c|0,i|0)|0)+(f[f[a>>2]>>2]|0)|0;a=h[a>>0]|h[a+1>>0]<<8;i=(a&255)<<24>>24;c=d;f[c>>2]=i;f[c+4>>2]=((i|0)<0)<<31>>31;a=((a&65535)>>>8&255)<<24>>24;c=a;a=((a|0)<0)<<31>>31;break}case 3:{g=f[c>>2]|0;i=a+48|0;c=f[i>>2]|0;i=f[i+4>>2]|0;e=a+40|0;i=(Ho(kn(f[e>>2]|0,f[e+4>>2]|0,g|0,((g|0)<0)<<31>>31|0)|0,I|0,c|0,i|0)|0)+(f[f[a>>2]>>2]|0)|0;a=b[i+1>>0]|0;i=b[i>>0]|0;c=d;f[c>>2]=i;f[c+4>>2]=((i|0)<0)<<31>>31;a=a<<24>>24;c=a;a=((a|0)<0)<<31>>31;break}case 4:{g=f[c>>2]|0;i=a+48|0;c=f[i>>2]|0;i=f[i+4>>2]|0;e=a+40|0;a=(Ho(kn(f[e>>2]|0,f[e+4>>2]|0,g|0,((g|0)<0)<<31>>31|0)|0,I|0,c|0,i|0)|0)+(f[f[a>>2]>>2]|0)|0;a=h[a>>0]|h[a+1>>0]<<8|h[a+2>>0]<<16|h[a+3>>0]<<24;i=(a&255)<<24>>24;c=d;f[c>>2]=i;f[c+4>>2]=((i|0)<0)<<31>>31;a=(a>>>8&255)<<24>>24;c=a;a=((a|0)<0)<<31>>31;break}default:{i=0;return i|0}}i=d+8|0;f[i>>2]=c;f[i+4>>2]=a;i=1;return i|0}function ef(a,c,d){a=a|0;c=c|0;d=d|0;var e=La,g=La,i=0,j=0,k=0;switch(b[a+24>>0]|0){case 1:{j=f[c>>2]|0;c=a+48|0;i=f[c>>2]|0;c=f[c+4>>2]|0;k=a+40|0;c=(Ho(kn(f[k>>2]|0,f[k+4>>2]|0,j|0,((j|0)<0)<<31>>31|0)|0,I|0,i|0,c|0)|0)+(f[f[a>>2]>>2]|0)|0;g=$((h[c>>0]|h[c+1>>0]<<8|h[c+2>>0]<<16|h[c+3>>0]<<24)>>>0);e=$(g*$(2.32830644e-10));e=(b[a+32>>0]|0)==0?g:e;break}case 2:{i=f[c>>2]|0;k=a+48|0;j=f[k>>2]|0;k=f[k+4>>2]|0;c=a+40|0;k=(Ho(kn(f[c>>2]|0,f[c+4>>2]|0,i|0,((i|0)<0)<<31>>31|0)|0,I|0,j|0,k|0)|0)+(f[f[a>>2]>>2]|0)|0;g=$((h[k>>0]|h[k+1>>0]<<8|h[k+2>>0]<<16|h[k+3>>0]<<24)>>>0);e=$(g*$(2.32830644e-10));e=(b[a+32>>0]|0)==0?g:e;break}case 3:{i=f[c>>2]|0;k=a+48|0;j=f[k>>2]|0;k=f[k+4>>2]|0;c=a+40|0;k=(Ho(kn(f[c>>2]|0,f[c+4>>2]|0,i|0,((i|0)<0)<<31>>31|0)|0,I|0,j|0,k|0)|0)+(f[f[a>>2]>>2]|0)|0;g=$((h[k>>0]|h[k+1>>0]<<8|h[k+2>>0]<<16|h[k+3>>0]<<24)>>>0);e=$(g*$(2.32830644e-10));e=(b[a+32>>0]|0)==0?g:e;break}case 4:{i=f[c>>2]|0;k=a+48|0;j=f[k>>2]|0;k=f[k+4>>2]|0;c=a+40|0;k=(Ho(kn(f[c>>2]|0,f[c+4>>2]|0,i|0,((i|0)<0)<<31>>31|0)|0,I|0,j|0,k|0)|0)+(f[f[a>>2]>>2]|0)|0;g=$((h[k>>0]|h[k+1>>0]<<8|h[k+2>>0]<<16|h[k+3>>0]<<24)>>>0);e=$(g*$(2.32830644e-10));e=(b[a+32>>0]|0)==0?g:e;break}default:{k=0;return k|0}}n[d>>2]=e;k=1;return k|0}function ff(a,c){a=a|0;c=c|0;var d=0,e=0,g=0,h=0,i=0,j=0,k=0,l=0;if(!(f[a+64>>2]|0)){d=ln(32)|0;wn(d);h=a+64|0;g=f[h>>2]|0;f[h>>2]=d;if(g){d=f[g>>2]|0;if(d|0){e=g+4|0;if((f[e>>2]|0)!=(d|0))f[e>>2]=d;ar(d)}ar(g);d=f[h>>2]|0}Ak(a,d,0,0,0,0);d=a}else d=a;if(!(Zi(d,c)|0))return;b[a+84>>0]=b[c+84>>0]|0;f[a+80>>2]=f[c+80>>2];if((a|0)!=(c|0))Mf(a+68|0,f[c+68>>2]|0,f[c+72>>2]|0);i=f[c+88>>2]|0;if(!i){a=a+88|0;d=f[a>>2]|0;f[a>>2]=0;if(!d)return;e=f[d+8>>2]|0;if(e|0){g=d+12|0;if((f[g>>2]|0)!=(e|0))f[g>>2]=e;ar(e)}ar(d);return}l=ln(40)|0;f[l>>2]=f[i>>2];e=l+8|0;g=i+8|0;f[e>>2]=0;j=l+12|0;f[j>>2]=0;d=l+16|0;f[d>>2]=0;c=i+12|0;h=(f[c>>2]|0)-(f[g>>2]|0)|0;if(h|0){if((h|0)<0)Lp(e);k=ln(h)|0;f[j>>2]=k;f[e>>2]=k;f[d>>2]=k+h;e=f[g>>2]|0;d=(f[c>>2]|0)-e|0;if((d|0)>0){Mg(k|0,e|0,d|0)|0;f[j>>2]=k+d}}g=l+24|0;k=i+24|0;f[g>>2]=f[k>>2];f[g+4>>2]=f[k+4>>2];f[g+8>>2]=f[k+8>>2];f[g+12>>2]=f[k+12>>2];a=a+88|0;g=f[a>>2]|0;f[a>>2]=l;if(!g)return;d=f[g+8>>2]|0;if(d|0){e=g+12|0;if((f[e>>2]|0)!=(d|0))f[e>>2]=d;ar(d)}ar(g);return}function gf(a,c,d){a=a|0;c=c|0;d=d|0;var e=La,g=La,i=0,j=0,k=0;switch(b[a+24>>0]|0){case 1:{j=f[c>>2]|0;c=a+48|0;i=f[c>>2]|0;c=f[c+4>>2]|0;k=a+40|0;c=(Ho(kn(f[k>>2]|0,f[k+4>>2]|0,j|0,((j|0)<0)<<31>>31|0)|0,I|0,i|0,c|0)|0)+(f[f[a>>2]>>2]|0)|0;g=$(h[c>>0]|h[c+1>>0]<<8|h[c+2>>0]<<16|h[c+3>>0]<<24|0);e=$(g*$(4.65661287e-10));e=(b[a+32>>0]|0)==0?g:e;break}case 2:{i=f[c>>2]|0;k=a+48|0;j=f[k>>2]|0;k=f[k+4>>2]|0;c=a+40|0;k=(Ho(kn(f[c>>2]|0,f[c+4>>2]|0,i|0,((i|0)<0)<<31>>31|0)|0,I|0,j|0,k|0)|0)+(f[f[a>>2]>>2]|0)|0;g=$(h[k>>0]|h[k+1>>0]<<8|h[k+2>>0]<<16|h[k+3>>0]<<24|0);e=$(g*$(4.65661287e-10));e=(b[a+32>>0]|0)==0?g:e;break}case 3:{i=f[c>>2]|0;k=a+48|0;j=f[k>>2]|0;k=f[k+4>>2]|0;c=a+40|0;k=(Ho(kn(f[c>>2]|0,f[c+4>>2]|0,i|0,((i|0)<0)<<31>>31|0)|0,I|0,j|0,k|0)|0)+(f[f[a>>2]>>2]|0)|0;g=$(h[k>>0]|h[k+1>>0]<<8|h[k+2>>0]<<16|h[k+3>>0]<<24|0);e=$(g*$(4.65661287e-10));e=(b[a+32>>0]|0)==0?g:e;break}case 4:{i=f[c>>2]|0;k=a+48|0;j=f[k>>2]|0;k=f[k+4>>2]|0;c=a+40|0;k=(Ho(kn(f[c>>2]|0,f[c+4>>2]|0,i|0,((i|0)<0)<<31>>31|0)|0,I|0,j|0,k|0)|0)+(f[f[a>>2]>>2]|0)|0;g=$(h[k>>0]|h[k+1>>0]<<8|h[k+2>>0]<<16|h[k+3>>0]<<24|0);e=$(g*$(4.65661287e-10));e=(b[a+32>>0]|0)==0?g:e;break}default:{k=0;return k|0}}n[d>>2]=e;k=1;return k|0}function hf(a,b,c){a=a|0;b=b|0;c=c|0;var d=0,e=0,g=0.0;a:do if(b>>>0<=20)do switch(b|0){case 9:{d=(f[c>>2]|0)+(4-1)&~(4-1);b=f[d>>2]|0;f[c>>2]=d+4;f[a>>2]=b;break a}case 10:{d=(f[c>>2]|0)+(4-1)&~(4-1);b=f[d>>2]|0;f[c>>2]=d+4;d=a;f[d>>2]=b;f[d+4>>2]=((b|0)<0)<<31>>31;break a}case 11:{d=(f[c>>2]|0)+(4-1)&~(4-1);b=f[d>>2]|0;f[c>>2]=d+4;d=a;f[d>>2]=b;f[d+4>>2]=0;break a}case 12:{d=(f[c>>2]|0)+(8-1)&~(8-1);b=d;e=f[b>>2]|0;b=f[b+4>>2]|0;f[c>>2]=d+8;d=a;f[d>>2]=e;f[d+4>>2]=b;break a}case 13:{e=(f[c>>2]|0)+(4-1)&~(4-1);d=f[e>>2]|0;f[c>>2]=e+4;d=(d&65535)<<16>>16;e=a;f[e>>2]=d;f[e+4>>2]=((d|0)<0)<<31>>31;break a}case 14:{e=(f[c>>2]|0)+(4-1)&~(4-1);d=f[e>>2]|0;f[c>>2]=e+4;e=a;f[e>>2]=d&65535;f[e+4>>2]=0;break a}case 15:{e=(f[c>>2]|0)+(4-1)&~(4-1);d=f[e>>2]|0;f[c>>2]=e+4;d=(d&255)<<24>>24;e=a;f[e>>2]=d;f[e+4>>2]=((d|0)<0)<<31>>31;break a}case 16:{e=(f[c>>2]|0)+(4-1)&~(4-1);d=f[e>>2]|0;f[c>>2]=e+4;e=a;f[e>>2]=d&255;f[e+4>>2]=0;break a}case 17:{e=(f[c>>2]|0)+(8-1)&~(8-1);g=+p[e>>3];f[c>>2]=e+8;p[a>>3]=g;break a}case 18:{e=(f[c>>2]|0)+(8-1)&~(8-1);g=+p[e>>3];f[c>>2]=e+8;p[a>>3]=g;break a}default:break a}while(0);while(0);return}function jf(a,b,c,d,e,g){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;g=g|0;var h=0,i=0,j=0,k=0,l=0,m=0,n=0;n=u;u=u+32|0;m=n;l=n+16|0;h=f[b+4>>2]|0;if((d|0)<=-1)Ga(17188,17204,63,17242);i=f[h+8>>2]|0;if(((f[h+12>>2]|0)-i>>2|0)<=(d|0))Ga(17252,17204,64,17242);i=f[i+(d<<2)>>2]|0;do if((c+-1|0)>>>0<6&(Sa[f[(f[b>>2]|0)+8>>2]&255](b)|0)==1){j=Sa[f[(f[b>>2]|0)+36>>2]&255](b)|0;k=Wa[f[(f[b>>2]|0)+44>>2]&127](b,d)|0;if((j|0)==0|(k|0)==0){f[a>>2]=0;u=n;return}h=Wa[f[(f[b>>2]|0)+40>>2]&127](b,d)|0;if(!h){f[m>>2]=f[b+44>>2];f[m+4>>2]=j;f[m+12>>2]=k;f[m+8>>2]=k+12;Cc(a,l,c,i,e,m,g);if(!(f[a>>2]|0)){f[a>>2]=0;break}u=n;return}else{f[m>>2]=f[b+44>>2];f[m+4>>2]=h;f[m+12>>2]=k;f[m+8>>2]=k+12;Bc(a,l,c,i,e,m,g);if(!(f[a>>2]|0)){f[a>>2]=0;break}u=n;return}}while(0);f[a>>2]=0;u=n;return}function kf(a,b){a=a|0;b=b|0;var c=0,d=0,e=0,g=0,h=0,i=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0;s=u;u=u+16|0;p=s+4|0;q=s;c=f[b>>2]|0;f[p>>2]=c;m=a+8|0;b=c+1|0;do if((c|0)>=0){f[p+4>>2]=((b|0)%3|0|0)==0?c+-2|0:b;if(!((c>>>0)%3|0)){b=c+2|0;break}else{b=c+-1|0;break}}else{f[p+4>>2]=c;b=c}while(0);f[p+8>>2]=b;l=a+228|0;k=a+232|0;j=a+320|0;b=0;while(1){if((c|0)>=0?(f[(f[(f[m>>2]|0)+12>>2]|0)+(c<<2)>>2]|0)>=0:0){if((f[k>>2]|0)!=(f[l>>2]|0)){g=0;do{if(Tk((f[j>>2]|0)+(g<<4)|0)|0){a=f[l>>2]|0;f[q>>2]=c;e=a+(g*116|0)+108|0;d=f[e>>2]|0;if(d>>>0<(f[a+(g*116|0)+112>>2]|0)>>>0){f[d>>2]=c;f[e>>2]=d+4}else Ii(a+(g*116|0)+104|0,q)}g=g+1|0}while(g>>>0<(((f[k>>2]|0)-(f[l>>2]|0)|0)/116|0)>>>0)}}else r=11;if((r|0)==11?(r=0,n=f[k>>2]|0,o=f[l>>2]|0,(n|0)!=(o|0)):0){a=o;d=n;i=0;do{e=a;f[q>>2]=c;h=e+(i*116|0)+108|0;g=f[h>>2]|0;if(g>>>0<(f[e+(i*116|0)+112>>2]|0)>>>0){f[g>>2]=c;f[h>>2]=g+4}else{Ii(e+(i*116|0)+104|0,q);a=f[l>>2]|0;d=f[k>>2]|0}i=i+1|0}while(i>>>0<((d-a|0)/116|0)>>>0)}b=b+1|0;if((b|0)==3)break;c=f[p+(b<<2)>>2]|0}u=s;return 1}function lf(a,b,c,d,e,g){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;g=g|0;var h=0,i=0,j=0,k=0,l=0,m=0,n=0;n=u;u=u+32|0;m=n;l=n+16|0;h=f[b+4>>2]|0;if((d|0)<=-1)Ga(17188,17204,63,17242);i=f[h+8>>2]|0;if(((f[h+12>>2]|0)-i>>2|0)<=(d|0))Ga(17252,17204,64,17242);i=f[i+(d<<2)>>2]|0;do if((c+-1|0)>>>0<6&(Sa[f[(f[b>>2]|0)+8>>2]&255](b)|0)==1){j=Sa[f[(f[b>>2]|0)+36>>2]&255](b)|0;k=Wa[f[(f[b>>2]|0)+44>>2]&127](b,d)|0;if((j|0)==0|(k|0)==0){f[a>>2]=0;u=n;return}h=Wa[f[(f[b>>2]|0)+40>>2]&127](b,d)|0;if(!h){f[m>>2]=f[b+44>>2];f[m+4>>2]=j;f[m+12>>2]=k;f[m+8>>2]=k+12;Ec(a,l,c,i,e,m,g);if(!(f[a>>2]|0)){f[a>>2]=0;break}u=n;return}else{f[m>>2]=f[b+44>>2];f[m+4>>2]=h;f[m+12>>2]=k;f[m+8>>2]=k+12;Dc(a,l,c,i,e,m,g);if(!(f[a>>2]|0)){f[a>>2]=0;break}u=n;return}}while(0);f[a>>2]=0;u=n;return}function mf(a,b){a=a|0;b=b|0;var c=0,d=0,e=0,g=0,h=0,i=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0;o=u;u=u+32|0;m=o+12|0;l=o;d=b*3|0;f[m>>2]=0;n=m+4|0;f[n>>2]=0;f[m+8>>2]=0;do if(b)if(d>>>0>1073741823){Lp(m);o=Ia(4)|0;Eq(o);sa(o|0,1344,125)}else{j=b*12|0;c=ln(j)|0;f[m>>2]=c;k=c+(d<<2)|0;f[m+8>>2]=k;ej(c|0,0,j|0)|0;f[n>>2]=k;break}else c=0;while(0);if(Xi(d,1,f[a+32>>2]|0,c)|0)if((b|0)>0){h=a+44|0;i=l+4|0;j=l+8|0;e=0;g=0;k=0;while(1){f[l>>2]=0;f[l+4>>2]=0;f[l+8>>2]=0;d=f[m>>2]|0;p=f[d+(k<<2)>>2]|0;c=p>>>1;c=((p&1|0)==0?c:0-c|0)+g|0;f[l>>2]=c;p=f[d+(k+1<<2)>>2]|0;a=p>>>1;c=((p&1|0)==0?a:0-a|0)+c|0;f[i>>2]=c;d=f[d+(k+2<<2)>>2]|0;a=d>>>1;g=((d&1|0)==0?a:0-a|0)+c|0;f[j>>2]=g;c=f[h>>2]|0;a=c+88|0;d=f[a>>2]|0;if((d|0)==(f[c+92>>2]|0))pi(c+84|0,l);else{f[d>>2]=f[l>>2];f[d+4>>2]=f[l+4>>2];f[d+8>>2]=f[l+8>>2];f[a>>2]=(f[a>>2]|0)+12}e=e+1|0;if((e|0)>=(b|0)){a=1;break}else k=k+3|0}}else a=1;else a=0;c=f[m>>2]|0;if(!c){u=o;return a|0}d=f[n>>2]|0;if((d|0)!=(c|0))f[n>>2]=d+(~((d+-4-c|0)>>>2)<<2);ar(c);u=o;return a|0}function nf(a,c,d){a=a|0;c=c|0;d=d|0;var e=La,g=La,i=0,j=0,k=0;switch(b[a+24>>0]|0){case 1:{j=f[c>>2]|0;c=a+48|0;i=f[c>>2]|0;c=f[c+4>>2]|0;k=a+40|0;c=(Ho(kn(f[k>>2]|0,f[k+4>>2]|0,j|0,((j|0)<0)<<31>>31|0)|0,I|0,i|0,c|0)|0)+(f[f[a>>2]>>2]|0)|0;g=$((h[c>>0]|h[c+1>>0]<<8)<<16>>16);e=$(g/$(32767.0));e=(b[a+32>>0]|0)==0?g:e;break}case 2:{i=f[c>>2]|0;k=a+48|0;j=f[k>>2]|0;k=f[k+4>>2]|0;c=a+40|0;k=(Ho(kn(f[c>>2]|0,f[c+4>>2]|0,i|0,((i|0)<0)<<31>>31|0)|0,I|0,j|0,k|0)|0)+(f[f[a>>2]>>2]|0)|0;g=$(((h[k>>0]|h[k+1>>0]<<8|h[k+2>>0]<<16|h[k+3>>0]<<24)&65535)<<16>>16);e=$(g/$(32767.0));e=(b[a+32>>0]|0)==0?g:e;break}case 3:{i=f[c>>2]|0;k=a+48|0;j=f[k>>2]|0;k=f[k+4>>2]|0;c=a+40|0;k=(Ho(kn(f[c>>2]|0,f[c+4>>2]|0,i|0,((i|0)<0)<<31>>31|0)|0,I|0,j|0,k|0)|0)+(f[f[a>>2]>>2]|0)|0;g=$((h[k>>0]|h[k+1>>0]<<8)<<16>>16);e=$(g/$(32767.0));e=(b[a+32>>0]|0)==0?g:e;break}case 4:{i=f[c>>2]|0;k=a+48|0;j=f[k>>2]|0;k=f[k+4>>2]|0;c=a+40|0;k=(Ho(kn(f[c>>2]|0,f[c+4>>2]|0,i|0,((i|0)<0)<<31>>31|0)|0,I|0,j|0,k|0)|0)+(f[f[a>>2]>>2]|0)|0;g=$(((h[k>>0]|h[k+1>>0]<<8|h[k+2>>0]<<16|h[k+3>>0]<<24)&65535)<<16>>16);e=$(g/$(32767.0));e=(b[a+32>>0]|0)==0?g:e;break}default:{k=0;return k|0}}n[d>>2]=e;k=1;return k|0}function of(a,b,c,d,e,g){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;g=g|0;var h=0,i=0,j=0,k=0,l=0,m=0,n=0;n=u;u=u+32|0;m=n;l=n+16|0;h=f[b+4>>2]|0;if((d|0)<=-1)Ga(17188,17204,63,17242);i=f[h+8>>2]|0;if(((f[h+12>>2]|0)-i>>2|0)<=(d|0))Ga(17252,17204,64,17242);i=f[i+(d<<2)>>2]|0;do if((c+-1|0)>>>0<6&(Sa[f[(f[b>>2]|0)+8>>2]&255](b)|0)==1){j=Sa[f[(f[b>>2]|0)+36>>2]&255](b)|0;k=Wa[f[(f[b>>2]|0)+44>>2]&127](b,d)|0;if((j|0)==0|(k|0)==0){f[a>>2]=0;u=n;return}h=Wa[f[(f[b>>2]|0)+40>>2]&127](b,d)|0;if(!h){f[m>>2]=f[b+44>>2];f[m+4>>2]=j;f[m+12>>2]=k;f[m+8>>2]=k+12;oc(a,l,c,i,e,m,g);if(!(f[a>>2]|0)){f[a>>2]=0;break}u=n;return}else{f[m>>2]=f[b+44>>2];f[m+4>>2]=h;f[m+12>>2]=k;f[m+8>>2]=k+12;nc(a,l,c,i,e,m,g);if(!(f[a>>2]|0)){f[a>>2]=0;break}u=n;return}}while(0);f[a>>2]=0;u=n;return}function pf(a,c,d){a=a|0;c=c|0;d=d|0;var e=La,g=La,i=0,j=0,k=0;switch(b[a+24>>0]|0){case 1:{j=f[c>>2]|0;c=a+48|0;i=f[c>>2]|0;c=f[c+4>>2]|0;k=a+40|0;c=(Ho(kn(f[k>>2]|0,f[k+4>>2]|0,j|0,((j|0)<0)<<31>>31|0)|0,I|0,i|0,c|0)|0)+(f[f[a>>2]>>2]|0)|0;g=$((h[c>>0]|h[c+1>>0]<<8)&65535);e=$(g/$(65535.0));e=(b[a+32>>0]|0)==0?g:e;break}case 2:{i=f[c>>2]|0;k=a+48|0;j=f[k>>2]|0;k=f[k+4>>2]|0;c=a+40|0;k=(Ho(kn(f[c>>2]|0,f[c+4>>2]|0,i|0,((i|0)<0)<<31>>31|0)|0,I|0,j|0,k|0)|0)+(f[f[a>>2]>>2]|0)|0;g=$((h[k>>0]|h[k+1>>0]<<8|h[k+2>>0]<<16|h[k+3>>0]<<24)&65535);e=$(g/$(65535.0));e=(b[a+32>>0]|0)==0?g:e;break}case 3:{i=f[c>>2]|0;k=a+48|0;j=f[k>>2]|0;k=f[k+4>>2]|0;c=a+40|0;k=(Ho(kn(f[c>>2]|0,f[c+4>>2]|0,i|0,((i|0)<0)<<31>>31|0)|0,I|0,j|0,k|0)|0)+(f[f[a>>2]>>2]|0)|0;g=$((h[k>>0]|h[k+1>>0]<<8)&65535);e=$(g/$(65535.0));e=(b[a+32>>0]|0)==0?g:e;break}case 4:{i=f[c>>2]|0;k=a+48|0;j=f[k>>2]|0;k=f[k+4>>2]|0;c=a+40|0;k=(Ho(kn(f[c>>2]|0,f[c+4>>2]|0,i|0,((i|0)<0)<<31>>31|0)|0,I|0,j|0,k|0)|0)+(f[f[a>>2]>>2]|0)|0;g=$((h[k>>0]|h[k+1>>0]<<8|h[k+2>>0]<<16|h[k+3>>0]<<24)&65535);e=$(g/$(65535.0));e=(b[a+32>>0]|0)==0?g:e;break}default:{k=0;return k|0}}n[d>>2]=e;k=1;return k|0}function qf(a,b,c){a=a|0;b=b|0;c=c|0;var d=0,e=0,g=0,h=0,i=0,j=0,k=0,l=0,m=0;m=u;u=u+32|0;i=m+28|0;d=m+24|0;j=m+20|0;k=m+16|0;l=m+12|0;e=m+8|0;g=m+4|0;h=m;if(!c){a=0;u=m;return a|0}switch(f[a+28>>2]|0){case 9:{f[d>>2]=f[b>>2];f[i>>2]=f[d>>2];a=gc(a,i,c)|0;u=m;return a|0}case 2:{f[j>>2]=f[b>>2];f[i>>2]=f[j>>2];a=xe(a,i,c)|0;u=m;return a|0}case 1:{f[k>>2]=f[b>>2];f[i>>2]=f[k>>2];a=Rd(a,i,c)|0;u=m;return a|0}case 4:{f[l>>2]=f[b>>2];f[i>>2]=f[l>>2];a=Wd(a,i,c)|0;u=m;return a|0}case 3:{f[e>>2]=f[b>>2];f[i>>2]=f[e>>2];a=wd(a,i,c)|0;u=m;return a|0}case 6:{f[g>>2]=f[b>>2];f[i>>2]=f[g>>2];a=zd(a,i,c)|0;u=m;return a|0}case 5:{f[h>>2]=f[b>>2];f[i>>2]=f[h>>2];a=md(a,i,c)|0;u=m;return a|0}default:{a=0;u=m;return a|0}}return 0}function rf(a,b,c){a=a|0;b=b|0;c=c|0;var d=0,e=0,g=0,h=0,i=0,j=0,k=0,l=0,m=0;m=u;u=u+32|0;i=m+28|0;d=m+24|0;j=m+20|0;k=m+16|0;l=m+12|0;e=m+8|0;g=m+4|0;h=m;if(!c){a=0;u=m;return a|0}switch(f[a+28>>2]|0){case 9:{f[d>>2]=f[b>>2];f[i>>2]=f[d>>2];a=mc(a,i,c)|0;u=m;return a|0}case 2:{f[j>>2]=f[b>>2];f[i>>2]=f[j>>2];a=Re(a,i,c)|0;u=m;return a|0}case 1:{f[k>>2]=f[b>>2];f[i>>2]=f[k>>2];a=fe(a,i,c)|0;u=m;return a|0}case 4:{f[l>>2]=f[b>>2];f[i>>2]=f[l>>2];a=ge(a,i,c)|0;u=m;return a|0}case 3:{f[e>>2]=f[b>>2];f[i>>2]=f[e>>2];a=Md(a,i,c)|0;u=m;return a|0}case 6:{f[g>>2]=f[b>>2];f[i>>2]=f[g>>2];a=Vd(a,i,c)|0;u=m;return a|0}case 5:{f[h>>2]=f[b>>2];f[i>>2]=f[h>>2];a=Cd(a,i,c)|0;u=m;return a|0}default:{a=0;u=m;return a|0}}return 0}function sf(a,b,c){a=a|0;b=b|0;c=c|0;var d=0,e=0,g=0,h=0,i=0,j=0,k=0,l=0,m=0;m=u;u=u+32|0;i=m+28|0;d=m+24|0;j=m+20|0;k=m+16|0;l=m+12|0;e=m+8|0;g=m+4|0;h=m;if(!c){a=0;u=m;return a|0}switch(f[a+28>>2]|0){case 9:{f[d>>2]=f[b>>2];f[i>>2]=f[d>>2];a=Fc(a,i,c)|0;u=m;return a|0}case 2:{f[j>>2]=f[b>>2];f[i>>2]=f[j>>2];a=Ef(a,i,c)|0;u=m;return a|0}case 1:{f[k>>2]=f[b>>2];f[i>>2]=f[k>>2];a=df(a,i,c)|0;u=m;return a|0}case 4:{f[l>>2]=f[b>>2];f[i>>2]=f[l>>2];a=bf(a,i,c)|0;u=m;return a|0}case 3:{f[e>>2]=f[b>>2];f[i>>2]=f[e>>2];a=Je(a,i,c)|0;u=m;return a|0}case 6:{f[g>>2]=f[b>>2];f[i>>2]=f[g>>2];a=Ze(a,i,c)|0;u=m;return a|0}case 5:{f[h>>2]=f[b>>2];f[i>>2]=f[h>>2];a=ye(a,i,c)|0;u=m;return a|0}default:{a=0;u=m;return a|0}}return 0}function tf(a,b){a=a|0;b=b|0;var c=0,d=0,e=0,g=0,h=0,i=0;h=u;u=u+16|0;e=h+12|0;c=h;g=ln(52)|0;f[g>>2]=0;f[g+4>>2]=0;f[g+8>>2]=0;f[g+12>>2]=0;n[g+16>>2]=$(1.0);d=g+20|0;f[d>>2]=0;f[d+4>>2]=0;f[d+8>>2]=0;f[d+12>>2]=0;n[g+36>>2]=$(1.0);f[g+40>>2]=0;f[g+44>>2]=0;f[g+48>>2]=0;d=g;Aq(e);if(!(Ig(e,f[b+32>>2]|0,g)|0)){f[c>>2]=0;f[c+4>>2]=0;f[c+8>>2]=0;Pj(c,6456,26);f[a>>2]=-1;ml(a+4|0,c);Lo(c);d=g+40|0;c=f[d>>2]|0;if(c|0){e=g+44|0;b=f[e>>2]|0;if((b|0)!=(c|0)){do{a=b+-4|0;f[e>>2]=a;b=f[a>>2]|0;f[a>>2]=0;if(b|0){Ri(b);ar(b)}b=f[e>>2]|0}while((b|0)!=(c|0));c=f[d>>2]|0}ar(c)}Ri(g);ar(g);u=h;return}e=(f[b+4>>2]|0)+4|0;g=f[e>>2]|0;f[e>>2]=d;if(g|0){d=g+40|0;c=f[d>>2]|0;if(c|0){e=g+44|0;b=f[e>>2]|0;if((b|0)!=(c|0)){do{i=b+-4|0;f[e>>2]=i;b=f[i>>2]|0;f[i>>2]=0;if(b|0){Ri(b);ar(b)}b=f[e>>2]|0}while((b|0)!=(c|0));c=f[d>>2]|0}ar(c)}Ri(g);ar(g)}f[a>>2]=0;f[a+4>>2]=0;f[a+8>>2]=0;f[a+12>>2]=0;u=h;return}function uf(a,c){a=a|0;c=c|0;var d=0,e=0,g=0,h=0,i=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0;n=f[a+8>>2]|0;k=a+76|0;d=f[k>>2]|0;m=f[d+68>>2]|0;r=c+84|0;b[r>>0]=0;j=c+68|0;h=c+72|0;g=f[h>>2]|0;e=f[j>>2]|0;l=g-e>>2;if(m>>>0<=l>>>0){if(m>>>0>>0?(i=e+(m<<2)|0,(g|0)!=(i|0)):0)f[h>>2]=g+(~((g+-4-i|0)>>>2)<<2)}else{ch(j,m-l|0,4672);m=f[k>>2]|0;d=m;m=f[m+68>>2]|0}p=(f[d+88>>2]|0)-(f[d+84>>2]|0)|0;q=(p|0)/12|0;if((p|0)<=0){r=1;return r|0}p=n+28|0;o=a+80|0;n=c+68|0;a=d+84|0;k=d+88|0;l=0;while(1){d=f[a>>2]|0;if((l|0)>=(((f[k>>2]|0)-d|0)/12|0|0)){e=9;break}i=l*3|0;g=f[p>>2]|0;h=f[(f[o>>2]|0)+12>>2]|0;e=f[h+(f[g+(i<<2)>>2]<<2)>>2]|0;if(e>>>0>=m>>>0){d=0;e=14;break}if(b[r>>0]|0){e=12;break}j=f[n>>2]|0;f[j+(f[d+(l*12|0)>>2]<<2)>>2]=e;e=f[h+(f[g+(i+1<<2)>>2]<<2)>>2]|0;if(e>>>0>=m>>>0){d=0;e=14;break}f[j+(f[d+(l*12|0)+4>>2]<<2)>>2]=e;e=f[h+(f[g+(i+2<<2)>>2]<<2)>>2]|0;if(e>>>0>=m>>>0){d=0;e=14;break}f[j+(f[d+(l*12|0)+8>>2]<<2)>>2]=e;l=l+1|0;if((l|0)>=(q|0)){d=1;e=14;break}}if((e|0)==9)Ga(18176,18147,64,18171);else if((e|0)==12)Ga(18230,18249,91,18290);else if((e|0)==14)return d|0;return 0}function vf(a,c){a=a|0;c=c|0;var d=0,e=0,g=0,h=0,i=0,j=0,k=0,l=0;l=u;u=u+32|0;k=l;h=a+8|0;g=f[h>>2]|0;j=a+4|0;d=f[j>>2]|0;if(((g-d|0)/116|0)>>>0>=c>>>0){do{f[d>>2]=-1;pm(d+4|0);b[d+72>>0]=1;d=d+76|0;e=d+40|0;do{f[d>>2]=0;d=d+4|0}while((d|0)<(e|0));d=(f[j>>2]|0)+116|0;f[j>>2]=d;c=c+-1|0}while((c|0)!=0);u=l;return}e=f[a>>2]|0;i=((d-e|0)/116|0)+c|0;if(i>>>0>37025580){Lp(a);e=f[a>>2]|0;g=f[h>>2]|0;d=f[j>>2]|0}j=(g-e|0)/116|0;g=j<<1;g=j>>>0<18512790?(g>>>0>>0?i:g):37025580;d=(d-e|0)/116|0;f[k+12>>2]=0;f[k+16>>2]=a+8;do if(g)if(g>>>0>37025580){l=Ia(4)|0;Eq(l);sa(l|0,1344,125)}else{e=ln(g*116|0)|0;break}else e=0;while(0);f[k>>2]=e;d=e+(d*116|0)|0;h=k+8|0;f[h>>2]=d;f[k+4>>2]=d;f[k+12>>2]=e+(g*116|0);do{f[d>>2]=-1;pm(d+4|0);b[d+72>>0]=1;d=d+76|0;e=d+40|0;do{f[d>>2]=0;d=d+4|0}while((d|0)<(e|0));d=(f[h>>2]|0)+116|0;f[h>>2]=d;c=c+-1|0}while((c|0)!=0);hd(a,k);Ci(k);u=l;return}function wf(a,c){a=a|0;c=c|0;var d=0,e=0,g=0,h=0,i=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0;p=f[a+8>>2]|0;k=a+76|0;d=f[k>>2]|0;m=f[d+68>>2]|0;q=c+84|0;b[q>>0]=0;j=c+68|0;h=c+72|0;g=f[h>>2]|0;e=f[j>>2]|0;l=g-e>>2;if(m>>>0<=l>>>0){if(m>>>0>>0?(i=e+(m<<2)|0,(g|0)!=(i|0)):0)f[h>>2]=g+(~((g+-4-i|0)>>>2)<<2)}else{ch(j,m-l|0,4672);m=f[k>>2]|0;d=m;m=f[m+68>>2]|0}n=(f[d+88>>2]|0)-(f[d+84>>2]|0)|0;o=(n|0)/12|0;if((n|0)<=0){q=1;return q|0}n=a+80|0;l=c+68|0;a=d+84|0;j=d+88|0;k=0;while(1){d=f[a>>2]|0;if((k|0)>=(((f[j>>2]|0)-d|0)/12|0|0)){e=9;break}h=k*3|0;g=f[(f[n>>2]|0)+12>>2]|0;e=f[g+(f[(f[p>>2]|0)+(h<<2)>>2]<<2)>>2]|0;if(e>>>0>=m>>>0){d=0;e=13;break}if(b[q>>0]|0){e=12;break}i=f[l>>2]|0;f[i+(f[d+(k*12|0)>>2]<<2)>>2]=e;e=f[g+(f[(f[p>>2]|0)+(h+1<<2)>>2]<<2)>>2]|0;if(e>>>0>=m>>>0){d=0;e=13;break}f[i+(f[d+(k*12|0)+4>>2]<<2)>>2]=e;e=f[g+(f[(f[p>>2]|0)+(h+2<<2)>>2]<<2)>>2]|0;if(e>>>0>=m>>>0){d=0;e=13;break}f[i+(f[d+(k*12|0)+8>>2]<<2)>>2]=e;k=k+1|0;if((k|0)>=(o|0)){d=1;e=13;break}}if((e|0)==9)Ga(18176,18147,64,18171);else if((e|0)==12)Ga(18230,18249,91,18290);else if((e|0)==13)return d|0;return 0}function xf(a,b,c){a=a|0;b=b|0;c=c|0;var d=0,e=0,g=0,i=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0;n=u;u=u+64|0;m=n;d=m;e=d+40|0;do{f[d>>2]=0;d=d+4|0}while((d|0)<(e|0));do if(te(m,b)|0){e=(a|0)>0;if(e?(f[m+12>>2]|0)==0:0){g=0;break}d=Of(m,b)|0;if(d&e){j=m+44|0;l=m+48|0;i=m+40|0;b=m+16|0;g=m+28|0;d=f[l>>2]|0;k=0;while(1){a:do if(d>>>0<16384){e=f[j>>2]|0;do{if((e|0)<=0)break a;o=f[i>>2]|0;e=e+-1|0;f[j>>2]=e;d=h[o+e>>0]|0|d<<8;f[l>>2]=d}while(d>>>0<16384)}while(0);p=d&4095;o=f[(f[b>>2]|0)+(p<<2)>>2]|0;e=f[g>>2]|0;d=(X(f[e+(o<<3)>>2]|0,d>>>12)|0)+p-(f[e+(o<<3)+4>>2]|0)|0;f[l>>2]=d;f[c+(k<<2)>>2]=o;k=k+1|0;if((k|0)==(a|0)){g=1;break}}}else g=d}else g=0;while(0);d=f[m+28>>2]|0;if(d|0){b=m+32|0;e=f[b>>2]|0;if((e|0)!=(d|0))f[b>>2]=e+(~((e+-8-d|0)>>>3)<<3);ar(d)}d=f[m+16>>2]|0;if(d|0){b=m+20|0;e=f[b>>2]|0;if((e|0)!=(d|0))f[b>>2]=e+(~((e+-4-d|0)>>>2)<<2);ar(d)}b=f[m>>2]|0;if(!b){u=n;return g|0}e=m+4|0;d=f[e>>2]|0;if((d|0)!=(b|0))f[e>>2]=d+(~((d+-4-b|0)>>>2)<<2);ar(b);u=n;return g|0}function yf(a,c){a=a|0;c=c|0;var d=0,e=0,g=0,h=0,i=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0;p=f[a+8>>2]|0;k=a+112|0;d=f[k>>2]|0;m=f[d+68>>2]|0;q=c+84|0;b[q>>0]=0;j=c+68|0;h=c+72|0;g=f[h>>2]|0;e=f[j>>2]|0;l=g-e>>2;if(m>>>0<=l>>>0){if(m>>>0>>0?(i=e+(m<<2)|0,(g|0)!=(i|0)):0)f[h>>2]=g+(~((g+-4-i|0)>>>2)<<2)}else{ch(j,m-l|0,4672);m=f[k>>2]|0;d=m;m=f[m+68>>2]|0}n=(f[d+88>>2]|0)-(f[d+84>>2]|0)|0;o=(n|0)/12|0;if((n|0)<=0){q=1;return q|0}n=a+116|0;l=c+68|0;a=d+84|0;j=d+88|0;k=0;while(1){d=f[a>>2]|0;if((k|0)>=(((f[j>>2]|0)-d|0)/12|0|0)){e=9;break}h=k*3|0;g=f[(f[n>>2]|0)+12>>2]|0;e=f[g+(f[(f[p>>2]|0)+(h<<2)>>2]<<2)>>2]|0;if(e>>>0>=m>>>0){d=0;e=13;break}if(b[q>>0]|0){e=12;break}i=f[l>>2]|0;f[i+(f[d+(k*12|0)>>2]<<2)>>2]=e;e=f[g+(f[(f[p>>2]|0)+(h+1<<2)>>2]<<2)>>2]|0;if(e>>>0>=m>>>0){d=0;e=13;break}f[i+(f[d+(k*12|0)+4>>2]<<2)>>2]=e;e=f[g+(f[(f[p>>2]|0)+(h+2<<2)>>2]<<2)>>2]|0;if(e>>>0>=m>>>0){d=0;e=13;break}f[i+(f[d+(k*12|0)+8>>2]<<2)>>2]=e;k=k+1|0;if((k|0)>=(o|0)){d=1;e=13;break}}if((e|0)==9)Ga(18176,18147,64,18171);else if((e|0)==12)Ga(18230,18249,91,18290);else if((e|0)==13)return d|0;return 0}function zf(a,b,c){a=a|0;b=b|0;c=c|0;var d=0,e=0,g=0,h=0,i=0,j=0,k=0,l=0,m=0;m=b;h=c-m>>2;i=a+8|0;d=f[i>>2]|0;j=f[a>>2]|0;k=j;if(h>>>0<=d-j>>2>>>0){l=a+4|0;a=(f[l>>2]|0)-j>>2;h=h>>>0>a>>>0;a=b+(a<<2)|0;g=h?a:c;i=g;e=i-m|0;d=e>>2;if(d|0)rm(j|0,b|0,e|0)|0;d=k+(d<<2)|0;if(!h){b=f[l>>2]|0;if((b|0)==(d|0))return;f[l>>2]=b+(~((b+-4-d|0)>>>2)<<2);return}if((g|0)==(c|0))return;g=f[l>>2]|0;e=((c+-4-i|0)>>>2)+1|0;d=g;b=a;while(1){f[d>>2]=f[b>>2];b=b+4|0;if((b|0)==(c|0))break;else d=d+4|0}f[l>>2]=g+(e<<2);return}g=j;if(j){e=a+4|0;d=f[e>>2]|0;if((d|0)!=(k|0))f[e>>2]=d+(~((d+-4-j|0)>>>2)<<2);ar(g);f[i>>2]=0;f[e>>2]=0;f[a>>2]=0;d=0}if(h>>>0>1073741823){Lp(a);e=f[a>>2]|0;d=f[i>>2]|0}else e=0;l=d-e|0;d=l>>1;d=l>>2>>>0<536870911?(d>>>0>>0?h:d):1073741823;if(d>>>0>1073741823){Lp(a);c=Ia(4)|0;Eq(c);sa(c|0,1344,125)}h=ln(d<<2)|0;g=a+4|0;f[g>>2]=h;f[a>>2]=h;f[i>>2]=h+(d<<2);if((b|0)==(c|0))return;d=((c+-4-m|0)>>>2)+1|0;e=h;while(1){f[e>>2]=f[b>>2];b=b+4|0;if((b|0)==(c|0))break;else e=e+4|0}f[g>>2]=h+(d<<2);return}function Af(a,c,d){a=a|0;c=c|0;d=d|0;var e=La,g=La,i=0,j=0,k=0;switch(b[a+24>>0]|0){case 1:{j=f[c>>2]|0;c=a+48|0;i=f[c>>2]|0;c=f[c+4>>2]|0;k=a+40|0;c=Ho(kn(f[k>>2]|0,f[k+4>>2]|0,j|0,((j|0)<0)<<31>>31|0)|0,I|0,i|0,c|0)|0;g=$(b[(f[f[a>>2]>>2]|0)+c>>0]|0);e=$(g/$(127.0));e=(b[a+32>>0]|0)==0?g:e;break}case 2:{i=f[c>>2]|0;k=a+48|0;j=f[k>>2]|0;k=f[k+4>>2]|0;c=a+40|0;k=(Ho(kn(f[c>>2]|0,f[c+4>>2]|0,i|0,((i|0)<0)<<31>>31|0)|0,I|0,j|0,k|0)|0)+(f[f[a>>2]>>2]|0)|0;g=$(((h[k>>0]|h[k+1>>0]<<8)&255)<<24>>24);e=$(g/$(127.0));e=(b[a+32>>0]|0)==0?g:e;break}case 3:{i=f[c>>2]|0;k=a+48|0;j=f[k>>2]|0;k=f[k+4>>2]|0;c=a+40|0;k=Ho(kn(f[c>>2]|0,f[c+4>>2]|0,i|0,((i|0)<0)<<31>>31|0)|0,I|0,j|0,k|0)|0;g=$(b[(f[f[a>>2]>>2]|0)+k>>0]|0);e=$(g/$(127.0));e=(b[a+32>>0]|0)==0?g:e;break}case 4:{i=f[c>>2]|0;k=a+48|0;j=f[k>>2]|0;k=f[k+4>>2]|0;c=a+40|0;k=(Ho(kn(f[c>>2]|0,f[c+4>>2]|0,i|0,((i|0)<0)<<31>>31|0)|0,I|0,j|0,k|0)|0)+(f[f[a>>2]>>2]|0)|0;g=$(((h[k>>0]|h[k+1>>0]<<8|h[k+2>>0]<<16|h[k+3>>0]<<24)&255)<<24>>24);e=$(g/$(127.0));e=(b[a+32>>0]|0)==0?g:e;break}default:{k=0;return k|0}}n[d>>2]=e;k=1;return k|0}function Bf(a,b,c){a=a|0;b=b|0;c=c|0;var d=0,e=0,g=0,h=0,i=0,j=0,k=0,l=0,m=0;m=b;h=c-m>>2;i=a+8|0;d=f[i>>2]|0;j=f[a>>2]|0;k=j;if(h>>>0<=d-j>>2>>>0){l=a+4|0;a=(f[l>>2]|0)-j>>2;h=h>>>0>a>>>0;a=b+(a<<2)|0;g=h?a:c;i=g;e=i-m|0;d=e>>2;if(d|0)rm(j|0,b|0,e|0)|0;d=k+(d<<2)|0;if(!h){b=f[l>>2]|0;if((b|0)==(d|0))return;f[l>>2]=b+(~((b+-4-d|0)>>>2)<<2);return}if((g|0)==(c|0))return;g=f[l>>2]|0;d=c+-4-i|0;e=g;b=a;while(1){f[e>>2]=f[b>>2];b=b+4|0;if((b|0)==(c|0))break;else e=e+4|0}f[l>>2]=g+((d>>>2)+1<<2);return}g=j;if(j){e=a+4|0;d=f[e>>2]|0;if((d|0)!=(k|0))f[e>>2]=d+(~((d+-4-j|0)>>>2)<<2);ar(g);f[i>>2]=0;f[e>>2]=0;f[a>>2]=0;d=0}if(h>>>0>1073741823){Lp(a);e=f[a>>2]|0;d=f[i>>2]|0}else e=0;l=d-e|0;d=l>>1;d=l>>2>>>0<536870911?(d>>>0>>0?h:d):1073741823;if(d>>>0>1073741823){Lp(a);c=Ia(4)|0;Eq(c);sa(c|0,1344,125)}h=ln(d<<2)|0;g=a+4|0;f[g>>2]=h;f[a>>2]=h;f[i>>2]=h+(d<<2);if((b|0)==(c|0))return;d=c+-4-m|0;e=h;while(1){f[e>>2]=f[b>>2];b=b+4|0;if((b|0)==(c|0))break;else e=e+4|0}f[g>>2]=h+((d>>>2)+1<<2);return}function Cf(a,c,d){a=a|0;c=c|0;d=d|0;var e=La,g=La,i=0,j=0,k=0;switch(b[a+24>>0]|0){case 1:{j=f[c>>2]|0;c=a+48|0;i=f[c>>2]|0;c=f[c+4>>2]|0;k=a+40|0;c=Ho(kn(f[k>>2]|0,f[k+4>>2]|0,j|0,((j|0)<0)<<31>>31|0)|0,I|0,i|0,c|0)|0;g=$(h[(f[f[a>>2]>>2]|0)+c>>0]|0);e=$(g/$(255.0));e=(b[a+32>>0]|0)==0?g:e;break}case 2:{i=f[c>>2]|0;k=a+48|0;j=f[k>>2]|0;k=f[k+4>>2]|0;c=a+40|0;k=(Ho(kn(f[c>>2]|0,f[c+4>>2]|0,i|0,((i|0)<0)<<31>>31|0)|0,I|0,j|0,k|0)|0)+(f[f[a>>2]>>2]|0)|0;g=$((h[k>>0]|h[k+1>>0]<<8)&255);e=$(g/$(255.0));e=(b[a+32>>0]|0)==0?g:e;break}case 3:{i=f[c>>2]|0;k=a+48|0;j=f[k>>2]|0;k=f[k+4>>2]|0;c=a+40|0;k=Ho(kn(f[c>>2]|0,f[c+4>>2]|0,i|0,((i|0)<0)<<31>>31|0)|0,I|0,j|0,k|0)|0;g=$(h[(f[f[a>>2]>>2]|0)+k>>0]|0);e=$(g/$(255.0));e=(b[a+32>>0]|0)==0?g:e;break}case 4:{i=f[c>>2]|0;k=a+48|0;j=f[k>>2]|0;k=f[k+4>>2]|0;c=a+40|0;k=(Ho(kn(f[c>>2]|0,f[c+4>>2]|0,i|0,((i|0)<0)<<31>>31|0)|0,I|0,j|0,k|0)|0)+(f[f[a>>2]>>2]|0)|0;g=$((h[k>>0]|h[k+1>>0]<<8|h[k+2>>0]<<16|h[k+3>>0]<<24)&255);e=$(g/$(255.0));e=(b[a+32>>0]|0)==0?g:e;break}default:{k=0;return k|0}}n[d>>2]=e;k=1;return k|0}function Df(a){a=a|0;var c=0,d=0,e=0,g=0,i=0,j=0,k=0,l=0,m=0,n=0;d=b[(f[a+8>>2]|0)+24>>0]|0;i=Zq(d>>>0>1073741823?-1:d<<2)|0;j=a+28|0;c=f[j>>2]|0;f[j>>2]=i;if(c|0)_q(c);i=a+4|0;g=f[(f[i>>2]|0)+32>>2]|0;d=d<<2;n=g+8|0;l=f[n>>2]|0;n=f[n+4>>2]|0;e=g+16|0;k=e;c=f[k>>2]|0;k=Ho(c|0,f[k+4>>2]|0,d|0,0)|0;m=I;if((n|0)<(m|0)|(n|0)==(m|0)&l>>>0>>0){n=0;return n|0}Mg(f[j>>2]|0,(f[g>>2]|0)+c|0,d|0)|0;c=e;c=Ho(f[c>>2]|0,f[c+4>>2]|0,d|0,0)|0;f[e>>2]=c;f[e+4>>2]=I;e=(f[i>>2]|0)+32|0;c=f[e>>2]|0;k=c+8|0;m=f[k>>2]|0;k=f[k+4>>2]|0;g=c+16|0;n=g;d=f[n>>2]|0;n=Ho(d|0,f[n+4>>2]|0,4,0)|0;l=I;if((k|0)<(l|0)|(k|0)==(l|0)&m>>>0>>0){n=0;return n|0}n=a+32|0;c=(f[c>>2]|0)+d|0;c=h[c>>0]|h[c+1>>0]<<8|h[c+2>>0]<<16|h[c+3>>0]<<24;b[n>>0]=c;b[n+1>>0]=c>>8;b[n+2>>0]=c>>16;b[n+3>>0]=c>>24;n=g;n=Ho(f[n>>2]|0,f[n+4>>2]|0,4,0)|0;c=g;f[c>>2]=n;f[c+4>>2]=I;c=f[e>>2]|0;n=c+8|0;m=f[n+4>>2]|0;g=c+16|0;e=g;d=f[e>>2]|0;e=f[e+4>>2]|0;if(!((m|0)>(e|0)|((m|0)==(e|0)?(f[n>>2]|0)>>>0>d>>>0:0))){n=0;return n|0}c=b[(f[c>>2]|0)+d>>0]|0;m=Ho(d|0,e|0,1,0)|0;n=g;f[n>>2]=m;f[n+4>>2]=I;if((c&255)>31){n=0;return n|0}f[a+24>>2]=c&255;n=1;return n|0}function Ef(a,c,d){a=a|0;c=c|0;d=d|0;var e=0,g=0,i=0;switch(b[a+24>>0]|0){case 1:{g=f[c>>2]|0;e=a+48|0;c=f[e>>2]|0;e=f[e+4>>2]|0;i=a+40|0;e=Ho(kn(f[i>>2]|0,f[i+4>>2]|0,g|0,((g|0)<0)<<31>>31|0)|0,I|0,c|0,e|0)|0;c=d;f[c>>2]=h[(f[f[a>>2]>>2]|0)+e>>0];f[c+4>>2]=0;c=0;a=0;break}case 2:{g=f[c>>2]|0;c=a+48|0;i=f[c>>2]|0;c=f[c+4>>2]|0;e=a+40|0;c=(Ho(kn(f[e>>2]|0,f[e+4>>2]|0,g|0,((g|0)<0)<<31>>31|0)|0,I|0,i|0,c|0)|0)+(f[f[a>>2]>>2]|0)|0;c=h[c>>0]|h[c+1>>0]<<8;a=d;f[a>>2]=c&255;f[a+4>>2]=0;c=(c&65535)>>>8&65535;a=0;break}case 3:{g=f[c>>2]|0;i=a+48|0;c=f[i>>2]|0;i=f[i+4>>2]|0;e=a+40|0;i=(Ho(kn(f[e>>2]|0,f[e+4>>2]|0,g|0,((g|0)<0)<<31>>31|0)|0,I|0,c|0,i|0)|0)+(f[f[a>>2]>>2]|0)|0;c=b[i+1>>0]|0;a=d;f[a>>2]=h[i>>0];f[a+4>>2]=0;c=c&255;a=0;break}case 4:{g=f[c>>2]|0;c=a+48|0;i=f[c>>2]|0;c=f[c+4>>2]|0;e=a+40|0;c=(Ho(kn(f[e>>2]|0,f[e+4>>2]|0,g|0,((g|0)<0)<<31>>31|0)|0,I|0,i|0,c|0)|0)+(f[f[a>>2]>>2]|0)|0;c=h[c>>0]|h[c+1>>0]<<8|h[c+2>>0]<<16|h[c+3>>0]<<24;a=d;f[a>>2]=c&255;f[a+4>>2]=0;c=c>>>8&255;a=0;break}default:{i=0;return i|0}}i=d+8|0;f[i>>2]=c;f[i+4>>2]=a;i=1;return i|0}function Ff(a,c){a=a|0;c=c|0;var d=0,e=0,g=0,i=0,j=0,k=0,l=0;e=c+8|0;k=e;i=f[k+4>>2]|0;l=c+16|0;j=l;d=f[j>>2]|0;j=f[j+4>>2]|0;if(!((i|0)>(j|0)|((i|0)==(j|0)?(f[k>>2]|0)>>>0>d>>>0:0))){a=0;return a|0}b[a+12>>0]=b[(f[c>>2]|0)+d>>0]|0;j=l;k=f[j>>2]|0;j=f[j+4>>2]|0;g=Ho(k|0,j|0,1,0)|0;i=l;f[i>>2]=g;f[i+4>>2]=I;i=e;e=f[i>>2]|0;i=f[i+4>>2]|0;j=Ho(k|0,j|0,5,0)|0;k=I;if((i|0)<(k|0)|(i|0)==(k|0)&e>>>0>>0){a=0;return a|0}d=f[c>>2]|0;c=d+g|0;c=h[c>>0]|h[c+1>>0]<<8|h[c+2>>0]<<16|h[c+3>>0]<<24;g=l;f[g>>2]=j;f[g+4>>2]=k;i=Xn(e|0,i|0,j|0,k|0)|0;g=I;if(0>(g|0)|0==(g|0)&c>>>0>i>>>0){a=0;return a|0}d=d+j|0;if((c|0)<1){a=0;return a|0}f[a>>2]=d;g=c+-1|0;e=d+g|0;a:do switch((h[e>>0]|0)>>>6&3){case 0:{f[a+4>>2]=g;d=b[e>>0]&63;break}case 1:if((c|0)<2){a=0;return a|0}else{f[a+4>>2]=c+-2;d=d+c+-2|0;d=(h[d+1>>0]|0)<<8&16128|(h[d>>0]|0);break a}case 2:if((c|0)<3){a=0;return a|0}else{f[a+4>>2]=c+-3;d=d+c+-3|0;d=(h[d+1>>0]|0)<<8|(h[d>>0]|0)|(h[d+2>>0]|0)<<16&4128768;break a}default:{a=0;return a|0}}while(0);i=d+4096|0;f[a+8>>2]=i;if(i>>>0>1048575){a=0;return a|0}k=Ho(j|0,k|0,c|0,0)|0;a=l;f[a>>2]=k;f[a+4>>2]=I;a=1;return a|0}function Gf(a,b){a=a|0;b=b|0;var c=0,d=0,e=0,g=0,h=0,i=0,j=0,k=0,l=0,m=0;m=a+8|0;d=f[m>>2]|0;l=a+4|0;g=f[l>>2]|0;e=g;if(((d-g|0)/12|0)>>>0>=b>>>0){ej(g|0,0,b*12|0)|0;f[l>>2]=e+(b*12|0);return}c=f[a>>2]|0;h=((g-c|0)/12|0)+b|0;if(h>>>0>357913941){Lp(a);g=f[l>>2]|0;c=f[a>>2]|0;e=g;d=f[m>>2]|0}k=c;d=(d-c|0)/12|0;i=d<<1;i=d>>>0<178956970?(i>>>0>>0?h:i):357913941;d=(g-c|0)/12|0;do if(i)if(i>>>0>357913941){a=Ia(4)|0;Eq(a);sa(a|0,1344,125)}else{h=ln(i*12|0)|0;break}else h=0;while(0);g=h+(d*12|0)|0;d=g;j=h+(i*12|0)|0;ej(g|0,0,b*12|0)|0;h=g+(b*12|0)|0;if((e|0)==(k|0))i=c;else{c=d;do{b=g+-12|0;i=e;e=e+-12|0;f[b>>2]=0;d=g+-8|0;f[d>>2]=0;f[g+-4>>2]=0;f[b>>2]=f[e>>2];b=i+-8|0;f[d>>2]=f[b>>2];i=i+-4|0;f[g+-4>>2]=f[i>>2];f[i>>2]=0;f[b>>2]=0;f[e>>2]=0;g=c+-12|0;c=g}while((e|0)!=(k|0));d=c;i=f[a>>2]|0;e=f[l>>2]|0}f[a>>2]=d;f[l>>2]=h;f[m>>2]=j;h=i;if((e|0)!=(h|0))do{c=e;e=e+-12|0;g=f[e>>2]|0;if(g|0){d=c+-8|0;c=f[d>>2]|0;if((c|0)!=(g|0))f[d>>2]=c+(~((c+-4-g|0)>>>2)<<2);ar(g)}}while((e|0)!=(h|0));if(!i)return;ar(i);return} +function zb(a,c,e,g,h){a=a|0;c=c|0;e=e|0;g=g|0;h=h|0;var i=0,j=0,k=0,l=0,m=0,n=0,o=0,q=0,r=0,s=0,t=0,v=0,w=0,x=0,y=0,z=0,A=0,B=0,C=0,D=0,E=0,F=0,G=0;G=u;u=u+64|0;C=G+16|0;z=G;y=G+24|0;F=G+8|0;B=G+20|0;f[C>>2]=c;E=(a|0)!=0;x=y+40|0;D=x;y=y+39|0;A=F+4|0;o=c;c=0;i=0;l=0;a:while(1){do if((c|0)>-1)if((i|0)>(2147483647-c|0)){c=Oq()|0;f[c>>2]=75;c=-1;break}else{c=i+c|0;break}while(0);i=b[o>>0]|0;if(!(i<<24>>24)){w=87;break}else j=o;b:while(1){switch(i<<24>>24){case 37:{i=j;w=9;break b}case 0:{i=j;break b}default:{}}v=j+1|0;f[C>>2]=v;i=b[v>>0]|0;j=v}c:do if((w|0)==9)while(1){w=0;if((b[i+1>>0]|0)!=37)break c;j=j+1|0;i=i+2|0;f[C>>2]=i;if((b[i>>0]|0)==37)w=9;else break}while(0);j=j-o|0;if(E)ip(a,o,j);if(j|0){o=i;i=j;continue}k=i+1|0;j=(b[k>>0]|0)+-48|0;if(j>>>0<10){v=(b[i+2>>0]|0)==36;r=v?j:-1;n=v?1:l;k=v?i+3|0:k}else{r=-1;n=l}f[C>>2]=k;i=b[k>>0]|0;j=(i<<24>>24)+-32|0;d:do if(j>>>0<32){l=0;while(1){j=1<>2]=k;i=b[k>>0]|0;j=(i<<24>>24)+-32|0;if(j>>>0>=32){m=l;break}}}else m=0;while(0);if(i<<24>>24==42){j=k+1|0;i=(b[j>>0]|0)+-48|0;if(i>>>0<10?(b[k+2>>0]|0)==36:0){f[h+(i<<2)>>2]=10;l=1;i=k+3|0;j=f[g+((b[j>>0]|0)+-48<<3)>>2]|0}else{if(n|0){c=-1;break}if(E){l=(f[e>>2]|0)+(4-1)&~(4-1);v=f[l>>2]|0;f[e>>2]=l+4;l=0;i=j;j=v}else{l=0;i=j;j=0}}f[C>>2]=i;t=(j|0)<0;q=t?m|8192:m;v=l;t=t?0-j|0:j}else{j=sm(C)|0;if((j|0)<0){c=-1;break}i=f[C>>2]|0;q=m;v=n;t=j}do if((b[i>>0]|0)==46){if((b[i+1>>0]|0)!=42){f[C>>2]=i+1;m=sm(C)|0;i=f[C>>2]|0;break}k=i+2|0;j=(b[k>>0]|0)+-48|0;if(j>>>0<10?(b[i+3>>0]|0)==36:0){f[h+(j<<2)>>2]=10;m=f[g+((b[k>>0]|0)+-48<<3)>>2]|0;i=i+4|0;f[C>>2]=i;break}if(v|0){c=-1;break a}if(E){s=(f[e>>2]|0)+(4-1)&~(4-1);j=f[s>>2]|0;f[e>>2]=s+4}else j=0;f[C>>2]=k;i=k;m=j}else m=-1;while(0);n=0;while(1){if(((b[i>>0]|0)+-65|0)>>>0>57){c=-1;break a}s=i+1|0;f[C>>2]=s;j=b[(b[i>>0]|0)+-65+(19320+(n*58|0))>>0]|0;l=j&255;if((l+-1|0)>>>0<8){i=s;n=l}else break}if(!(j<<24>>24)){c=-1;break}k=(r|0)>-1;do if(j<<24>>24==19)if(k){c=-1;break a}else w=49;else{if(k){f[h+(r<<2)>>2]=l;l=g+(r<<3)|0;r=f[l+4>>2]|0;w=z;f[w>>2]=f[l>>2];f[w+4>>2]=r;w=49;break}if(!E){c=0;break a}hf(z,l,e)}while(0);if((w|0)==49?(w=0,!E):0){o=s;i=0;l=v;continue}l=b[i>>0]|0;l=(n|0)!=0&(l&15|0)==3?l&-33:l;j=q&-65537;r=(q&8192|0)==0?q:j;e:do switch(l|0){case 110:switch((n&255)<<24>>24){case 0:{f[f[z>>2]>>2]=c;o=s;i=0;l=v;continue a}case 1:{f[f[z>>2]>>2]=c;o=s;i=0;l=v;continue a}case 2:{o=f[z>>2]|0;f[o>>2]=c;f[o+4>>2]=((c|0)<0)<<31>>31;o=s;i=0;l=v;continue a}case 3:{d[f[z>>2]>>1]=c;o=s;i=0;l=v;continue a}case 4:{b[f[z>>2]>>0]=c;o=s;i=0;l=v;continue a}case 6:{f[f[z>>2]>>2]=c;o=s;i=0;l=v;continue a}case 7:{o=f[z>>2]|0;f[o>>2]=c;f[o+4>>2]=((c|0)<0)<<31>>31;o=s;i=0;l=v;continue a}default:{o=s;i=0;l=v;continue a}}case 112:{i=r|8;j=m>>>0>8?m:8;l=120;w=61;break}case 88:case 120:{i=r;j=m;w=61;break}case 111:{q=z;o=f[q>>2]|0;q=f[q+4>>2]|0;n=Qm(o,q,x)|0;j=D-n|0;i=r;j=(r&8|0)==0|(m|0)>(j|0)?m:j+1|0;k=0;m=19784;w=67;break}case 105:case 100:{j=z;i=f[j>>2]|0;j=f[j+4>>2]|0;if((j|0)<0){i=Xn(0,0,i|0,j|0)|0;j=I;k=z;f[k>>2]=i;f[k+4>>2]=j;k=1;l=19784;w=66;break e}else{k=(r&2049|0)!=0&1;l=(r&2048|0)==0?((r&1|0)==0?19784:19786):19785;w=66;break e}}case 117:{j=z;i=f[j>>2]|0;j=f[j+4>>2]|0;k=0;l=19784;w=66;break}case 99:{b[y>>0]=f[z>>2];o=y;n=j;l=1;k=0;j=19784;i=x;break}case 109:{i=Oq()|0;i=op(f[i>>2]|0)|0;w=71;break}case 115:{i=f[z>>2]|0;i=i|0?i:19794;w=71;break}case 67:{f[F>>2]=f[z>>2];f[A>>2]=0;f[z>>2]=F;i=F;m=-1;w=75;break}case 83:{i=f[z>>2]|0;if(!m){al(a,32,t,0,r);i=0;w=84}else w=75;break}case 65:case 71:case 70:case 69:case 97:case 103:case 102:case 101:{o=s;i=yb(a,+p[z>>3],t,m,r,l)|0;l=v;continue a}default:{n=r;l=m;k=0;j=19784;i=x}}while(0);f:do if((w|0)==61){q=z;o=f[q>>2]|0;q=f[q+4>>2]|0;n=xm(o,q,x,l&32)|0;m=(i&8|0)==0|(o|0)==0&(q|0)==0;k=m?0:2;m=m?19784:19784+(l>>4)|0;w=67}else if((w|0)==66){o=i;q=j;n=tk(i,j,x)|0;i=r;j=m;m=l;w=67}else if((w|0)==71){w=0;r=ni(i,0,m)|0;q=(r|0)==0;o=i;n=j;l=q?m:r-i|0;k=0;j=19784;i=q?i+m|0:r}else if((w|0)==75){w=0;k=0;j=0;n=i;while(1){l=f[n>>2]|0;if(!l)break;j=np(B,l)|0;if((j|0)<0|j>>>0>(m-k|0)>>>0)break;k=j+k|0;if(m>>>0>k>>>0)n=n+4|0;else break}if((j|0)<0){c=-1;break a}al(a,32,t,k,r);if(!k){i=0;w=84}else{l=0;while(1){j=f[i>>2]|0;if(!j){i=k;w=84;break f}j=np(B,j)|0;l=j+l|0;if((l|0)>(k|0)){i=k;w=84;break f}ip(a,B,j);if(l>>>0>=k>>>0){i=k;w=84;break}else i=i+4|0}}}while(0);if((w|0)==67){w=0;l=(o|0)!=0|(q|0)!=0;r=(j|0)!=0|l;l=((l^1)&1)+(D-n)|0;o=r?n:x;n=(j|0)>-1?i&-65537:i;l=r?((j|0)>(l|0)?j:l):j;j=m;i=x}else if((w|0)==84){w=0;al(a,32,t,i,r^8192);o=s;i=(t|0)>(i|0)?t:i;l=v;continue}r=i-o|0;q=(l|0)<(r|0)?r:l;l=q+k|0;i=(t|0)<(l|0)?l:t;al(a,32,i,l,n);ip(a,j,k);al(a,48,i,l,n^65536);al(a,48,q,r,0);ip(a,o,r);al(a,32,i,l,n^8192);o=s;l=v}g:do if((w|0)==87)if(!a)if(!l)c=0;else{c=1;while(1){i=f[h+(c<<2)>>2]|0;if(!i)break;hf(g+(c<<3)|0,i,e);c=c+1|0;if((c|0)>=10){c=1;break g}}while(1){if(f[h+(c<<2)>>2]|0){c=-1;break g}c=c+1|0;if((c|0)>=10){c=1;break}}}while(0);u=G;return c|0}function Ab(a,b,c,d,e,g){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;g=g|0;var h=0,i=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,v=0,w=0,x=0,y=0,z=0,A=0,B=0,C=0,D=0,E=0,F=0,G=0,H=0,I=0,J=0,K=0;K=u;u=u+64|0;J=K+16|0;H=K;d=J;g=d+48|0;do{f[d>>2]=0;d=d+4|0}while((d|0)<(g|0));f[H>>2]=0;if(!e){d=0;g=0}else{ch(J,e,H);d=f[J+12>>2]|0;g=f[J+16>>2]|0}f[H>>2]=0;h=J+16|0;i=g-d>>2;if(i>>>0>=e>>>0){if(i>>>0>e>>>0?(j=d+(e<<2)|0,(g|0)!=(j|0)):0)f[h>>2]=g+(~((g+-4-j|0)>>>2)<<2)}else ch(J+12|0,e-i|0,H);i=J+24|0;f[H>>2]=0;h=J+28|0;g=f[h>>2]|0;d=f[i>>2]|0;j=g-d>>2;if(j>>>0>=e>>>0){if(j>>>0>e>>>0?(k=d+(e<<2)|0,(g|0)!=(k|0)):0)f[h>>2]=g+(~((g+-4-k|0)>>>2)<<2)}else ch(i,e-j|0,H);i=J+36|0;f[H>>2]=0;h=J+40|0;g=f[h>>2]|0;d=f[i>>2]|0;j=g-d>>2;if(j>>>0>=e>>>0){if(j>>>0>e>>>0?(l=d+(e<<2)|0,(g|0)!=(l|0)):0)f[h>>2]=g+(~((g+-4-l|0)>>>2)<<2)}else ch(i,e-j|0,H);C=a+8|0;ji(C,f[J>>2]|0,b,c);v=f[a+32>>2]|0;t=f[a+36>>2]|0;D=ln(16)|0;f[D>>2]=0;f[D+4>>2]=0;f[D+8>>2]=0;f[D+12>>2]=0;Dk(H,e);A=a+40|0;h=f[A>>2]|0;g=f[h+4>>2]|0;d=f[h>>2]|0;z=g-d|0;B=z>>2;a:do if((z|0)>4){z=v+64|0;x=v+28|0;y=(e|0)>0;w=e<<2;i=h;h=1;while(1){if(g-d>>2>>>0<=h>>>0){Kp(i);d=f[i>>2]|0}o=f[d+(h<<2)>>2]|0;r=o+((o|0)<0?0:((o>>>0)%3|0|0)==0?2:-1)|0;q=r>>>5;s=1<<(r&31);p=(r|0)<0;g=o;n=1;d=0;b:while(1){do{if((g|0)<=-1){o=42;break b}i=f[J+(d*12|0)>>2]|0;if(((f[(f[v>>2]|0)+(g>>>5<<2)>>2]&1<<(g&31)|0)==0?(I=f[(f[(f[z>>2]|0)+12>>2]|0)+(g<<2)>>2]|0,(I|0)>=0):0)?(G=f[x>>2]|0,m=f[t>>2]|0,E=f[m+(f[G+(I<<2)>>2]<<2)>>2]|0,F=I+1|0,F=f[m+(f[G+((((F|0)%3|0|0)==0?I+-2|0:F)<<2)>>2]<<2)>>2]|0,G=f[m+(f[G+((((I>>>0)%3|0|0)==0?2:-1)+I<<2)>>2]<<2)>>2]|0,(E|0)<(h|0)&(F|0)<(h|0)&(G|0)<(h|0)):0){k=X(E,e)|0;l=X(F,e)|0;m=X(G,e)|0;if(y){j=0;do{f[i+(j<<2)>>2]=(f[c+(j+m<<2)>>2]|0)+(f[c+(j+l<<2)>>2]|0)-(f[c+(j+k<<2)>>2]|0);j=j+1|0}while((j|0)!=(e|0))}d=d+1|0;if((d|0)==4){d=4;o=23;break b}}do if(n){i=g+1|0;g=((i|0)%3|0|0)==0?g+-2|0:i;i=f[v>>2]|0;if(!(f[i+(g>>>5<<2)>>2]&1<<(g&31))){if((g|0)>=0){g=f[(f[(f[z>>2]|0)+12>>2]|0)+(g<<2)>>2]|0;j=g+1|0;if((g|0)>=0)g=((j|0)%3|0|0)==0?g+-2|0:j}}else g=-1073741824}else{g=(((g>>>0)%3|0|0)==0?2:-1)+g|0;i=f[v>>2]|0;if(!(f[i+(g>>>5<<2)>>2]&1<<(g&31))){if((g|0)>=0){g=f[(f[(f[z>>2]|0)+12>>2]|0)+(g<<2)>>2]|0;if((g|0)>=0)if(!((g>>>0)%3|0)){g=g+2|0;break}else{g=g+-1|0;break}}}else g=-1073741824}while(0);if((g|0)==(o|0)){o=42;break b}}while(!(n&(g|0)<0));g=(s&f[i+(q<<2)>>2]|0)!=0;if(g|p){g=g?-1073741824:r;n=0;continue}g=f[(f[(f[z>>2]|0)+12>>2]|0)+(r<<2)>>2]|0;if((g|0)<0){n=0;continue}if(!((g>>>0)%3|0)){g=g+2|0;n=0;continue}else{g=g+-1|0;n=0;continue}}if((o|0)==42)if((d|0)>0)o=23;else{d=X(h,e)|0;o=54}if((o|0)==23){o=0;if(y){ej(f[H>>2]|0,0,w|0)|0;k=d+-1|0;m=D+(k<<2)|0;k=f[a+44+(k*12|0)>>2]|0;l=f[H>>2]|0;n=0;j=0;do{s=f[m>>2]|0;f[m>>2]=s+1;if(!(f[k+(s>>>5<<2)>>2]&1<<(s&31))){g=f[J+(n*12|0)>>2]|0;i=0;do{s=l+(i<<2)|0;f[s>>2]=(f[s>>2]|0)+(f[g+(i<<2)>>2]|0);i=i+1|0}while((i|0)!=(e|0));j=j+1|0}n=n+1|0}while((n|0)!=(d|0))}else{g=d+-1|0;k=D+(g<<2)|0;g=f[a+44+(g*12|0)>>2]|0;i=f[k>>2]|0;l=0;j=0;do{s=i;i=i+1|0;f[k>>2]=i;j=j+((f[g+(s>>>5<<2)>>2]&1<<(s&31)|0)==0&1)|0;l=l+1|0}while((l|0)!=(d|0))}d=X(h,e)|0;if(!j)o=54;else{g=f[H>>2]|0;if(y){i=0;do{s=g+(i<<2)|0;f[s>>2]=(f[s>>2]|0)/(j|0)|0;i=i+1|0}while((i|0)!=(e|0))}ji(C,g,b+(d<<2)|0,c+(d<<2)|0)}}if((o|0)==54)ji(C,c+((X(h+-1|0,e)|0)<<2)|0,b+(d<<2)|0,c+(d<<2)|0);h=h+1|0;if((h|0)>=(B|0)){d=H;break a}i=f[A>>2]|0;d=f[i>>2]|0;g=f[i+4>>2]|0}}else d=H;while(0);h=f[d>>2]|0;if(h|0){g=H+4|0;d=f[g>>2]|0;if((d|0)!=(h|0))f[g>>2]=d+(~((d+-4-h|0)>>>2)<<2);ar(h)}ar(D);d=f[J+36>>2]|0;if(d|0){h=J+40|0;g=f[h>>2]|0;if((g|0)!=(d|0))f[h>>2]=g+(~((g+-4-d|0)>>>2)<<2);ar(d)}d=f[J+24>>2]|0;if(d|0){h=J+28|0;g=f[h>>2]|0;if((g|0)!=(d|0))f[h>>2]=g+(~((g+-4-d|0)>>>2)<<2);ar(d)}d=f[J+12>>2]|0;if(d|0){h=J+16|0;g=f[h>>2]|0;if((g|0)!=(d|0))f[h>>2]=g+(~((g+-4-d|0)>>>2)<<2);ar(d)}h=f[J>>2]|0;if(!h){u=K;return 1}g=J+4|0;d=f[g>>2]|0;if((d|0)!=(h|0))f[g>>2]=d+(~((d+-4-h|0)>>>2)<<2);ar(h);u=K;return 1}function Bb(a,b,c,d,e,g){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;g=g|0;var h=0,i=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,v=0,w=0,x=0,y=0,z=0,A=0,B=0,C=0,D=0,E=0,F=0,G=0,H=0,I=0,J=0,K=0;K=u;u=u+64|0;J=K+16|0;H=K;d=J;g=d+48|0;do{f[d>>2]=0;d=d+4|0}while((d|0)<(g|0));f[H>>2]=0;if(!e){d=0;g=0}else{ch(J,e,H);d=f[J+12>>2]|0;g=f[J+16>>2]|0}f[H>>2]=0;h=J+16|0;i=g-d>>2;if(i>>>0>=e>>>0){if(i>>>0>e>>>0?(j=d+(e<<2)|0,(g|0)!=(j|0)):0)f[h>>2]=g+(~((g+-4-j|0)>>>2)<<2)}else ch(J+12|0,e-i|0,H);i=J+24|0;f[H>>2]=0;h=J+28|0;g=f[h>>2]|0;d=f[i>>2]|0;j=g-d>>2;if(j>>>0>=e>>>0){if(j>>>0>e>>>0?(k=d+(e<<2)|0,(g|0)!=(k|0)):0)f[h>>2]=g+(~((g+-4-k|0)>>>2)<<2)}else ch(i,e-j|0,H);i=J+36|0;f[H>>2]=0;h=J+40|0;g=f[h>>2]|0;d=f[i>>2]|0;j=g-d>>2;if(j>>>0>=e>>>0){if(j>>>0>e>>>0?(l=d+(e<<2)|0,(g|0)!=(l|0)):0)f[h>>2]=g+(~((g+-4-l|0)>>>2)<<2)}else ch(i,e-j|0,H);C=a+8|0;mi(C,f[J>>2]|0,b,c);v=f[a+32>>2]|0;t=f[a+36>>2]|0;D=ln(16)|0;f[D>>2]=0;f[D+4>>2]=0;f[D+8>>2]=0;f[D+12>>2]=0;Dk(H,e);A=a+40|0;h=f[A>>2]|0;g=f[h+4>>2]|0;d=f[h>>2]|0;z=g-d|0;B=z>>2;a:do if((z|0)>4){z=v+64|0;x=v+28|0;y=(e|0)>0;w=e<<2;i=h;h=1;while(1){if(g-d>>2>>>0<=h>>>0){Kp(i);d=f[i>>2]|0}o=f[d+(h<<2)>>2]|0;r=o+((o|0)<0?0:((o>>>0)%3|0|0)==0?2:-1)|0;q=r>>>5;s=1<<(r&31);p=(r|0)<0;g=o;n=1;d=0;b:while(1){do{if((g|0)<=-1){o=42;break b}i=f[J+(d*12|0)>>2]|0;if(((f[(f[v>>2]|0)+(g>>>5<<2)>>2]&1<<(g&31)|0)==0?(I=f[(f[(f[z>>2]|0)+12>>2]|0)+(g<<2)>>2]|0,(I|0)>=0):0)?(G=f[x>>2]|0,m=f[t>>2]|0,E=f[m+(f[G+(I<<2)>>2]<<2)>>2]|0,F=I+1|0,F=f[m+(f[G+((((F|0)%3|0|0)==0?I+-2|0:F)<<2)>>2]<<2)>>2]|0,G=f[m+(f[G+((((I>>>0)%3|0|0)==0?2:-1)+I<<2)>>2]<<2)>>2]|0,(E|0)<(h|0)&(F|0)<(h|0)&(G|0)<(h|0)):0){k=X(E,e)|0;l=X(F,e)|0;m=X(G,e)|0;if(y){j=0;do{f[i+(j<<2)>>2]=(f[c+(j+m<<2)>>2]|0)+(f[c+(j+l<<2)>>2]|0)-(f[c+(j+k<<2)>>2]|0);j=j+1|0}while((j|0)!=(e|0))}d=d+1|0;if((d|0)==4){d=4;o=23;break b}}do if(n){i=g+1|0;g=((i|0)%3|0|0)==0?g+-2|0:i;i=f[v>>2]|0;if(!(f[i+(g>>>5<<2)>>2]&1<<(g&31))){if((g|0)>=0){g=f[(f[(f[z>>2]|0)+12>>2]|0)+(g<<2)>>2]|0;j=g+1|0;if((g|0)>=0)g=((j|0)%3|0|0)==0?g+-2|0:j}}else g=-1073741824}else{g=(((g>>>0)%3|0|0)==0?2:-1)+g|0;i=f[v>>2]|0;if(!(f[i+(g>>>5<<2)>>2]&1<<(g&31))){if((g|0)>=0){g=f[(f[(f[z>>2]|0)+12>>2]|0)+(g<<2)>>2]|0;if((g|0)>=0)if(!((g>>>0)%3|0)){g=g+2|0;break}else{g=g+-1|0;break}}}else g=-1073741824}while(0);if((g|0)==(o|0)){o=42;break b}}while(!(n&(g|0)<0));g=(s&f[i+(q<<2)>>2]|0)!=0;if(g|p){g=g?-1073741824:r;n=0;continue}g=f[(f[(f[z>>2]|0)+12>>2]|0)+(r<<2)>>2]|0;if((g|0)<0){n=0;continue}if(!((g>>>0)%3|0)){g=g+2|0;n=0;continue}else{g=g+-1|0;n=0;continue}}if((o|0)==42)if((d|0)>0)o=23;else{d=X(h,e)|0;o=54}if((o|0)==23){o=0;if(y){ej(f[H>>2]|0,0,w|0)|0;k=d+-1|0;m=D+(k<<2)|0;k=f[a+44+(k*12|0)>>2]|0;l=f[H>>2]|0;n=0;j=0;do{s=f[m>>2]|0;f[m>>2]=s+1;if(!(f[k+(s>>>5<<2)>>2]&1<<(s&31))){g=f[J+(n*12|0)>>2]|0;i=0;do{s=l+(i<<2)|0;f[s>>2]=(f[s>>2]|0)+(f[g+(i<<2)>>2]|0);i=i+1|0}while((i|0)!=(e|0));j=j+1|0}n=n+1|0}while((n|0)!=(d|0))}else{g=d+-1|0;k=D+(g<<2)|0;g=f[a+44+(g*12|0)>>2]|0;i=f[k>>2]|0;l=0;j=0;do{s=i;i=i+1|0;f[k>>2]=i;j=j+((f[g+(s>>>5<<2)>>2]&1<<(s&31)|0)==0&1)|0;l=l+1|0}while((l|0)!=(d|0))}d=X(h,e)|0;if(!j)o=54;else{g=f[H>>2]|0;if(y){i=0;do{s=g+(i<<2)|0;f[s>>2]=(f[s>>2]|0)/(j|0)|0;i=i+1|0}while((i|0)!=(e|0))}mi(C,g,b+(d<<2)|0,c+(d<<2)|0)}}if((o|0)==54)mi(C,c+((X(h+-1|0,e)|0)<<2)|0,b+(d<<2)|0,c+(d<<2)|0);h=h+1|0;if((h|0)>=(B|0)){d=H;break a}i=f[A>>2]|0;d=f[i>>2]|0;g=f[i+4>>2]|0}}else d=H;while(0);h=f[d>>2]|0;if(h|0){g=H+4|0;d=f[g>>2]|0;if((d|0)!=(h|0))f[g>>2]=d+(~((d+-4-h|0)>>>2)<<2);ar(h)}ar(D);d=f[J+36>>2]|0;if(d|0){h=J+40|0;g=f[h>>2]|0;if((g|0)!=(d|0))f[h>>2]=g+(~((g+-4-d|0)>>>2)<<2);ar(d)}d=f[J+24>>2]|0;if(d|0){h=J+28|0;g=f[h>>2]|0;if((g|0)!=(d|0))f[h>>2]=g+(~((g+-4-d|0)>>>2)<<2);ar(d)}d=f[J+12>>2]|0;if(d|0){h=J+16|0;g=f[h>>2]|0;if((g|0)!=(d|0))f[h>>2]=g+(~((g+-4-d|0)>>>2)<<2);ar(d)}h=f[J>>2]|0;if(!h){u=K;return 1}g=J+4|0;d=f[g>>2]|0;if((d|0)!=(h|0))f[g>>2]=d+(~((d+-4-h|0)>>>2)<<2);ar(h);u=K;return 1}function Cb(a){a=a|0;var c=0,d=0,e=0,g=0,i=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,v=0,w=0,x=0;x=u;u=u+16|0;w=x;v=a+32|0;r=f[v>>2]|0;j=r+8|0;i=f[j>>2]|0;j=f[j+4>>2]|0;k=r+16|0;l=k;n=f[l>>2]|0;l=f[l+4>>2]|0;d=Ho(n|0,l|0,4,0)|0;c=I;if((j|0)<(c|0)|(j|0)==(c|0)&i>>>0>>0){a=0;u=x;return a|0}g=f[r>>2]|0;t=g+n|0;t=h[t>>0]|h[t+1>>0]<<8|h[t+2>>0]<<16|h[t+3>>0]<<24;s=k;f[s>>2]=d;f[s+4>>2]=c;if((t|0)<0){a=0;u=x;return a|0}c=Ho(n|0,l|0,8,0)|0;e=I;if((j|0)<(e|0)|(j|0)==(e|0)&i>>>0>>0){a=0;u=x;return a|0}s=g+d|0;s=h[s>>0]|h[s+1>>0]<<8|h[s+2>>0]<<16|h[s+3>>0]<<24;q=k;f[q>>2]=c;f[q+4>>2]=e;if(!((s|0)>-1&((j|0)>(e|0)|(j|0)==(e|0)&i>>>0>c>>>0))){a=0;u=x;return a|0}q=b[g+c>>0]|0;m=Ho(n|0,l|0,9,0)|0;j=I;p=k;f[p>>2]=m;f[p+4>>2]=j;a:do if(!(q<<24>>24)){if(!(mf(a,t)|0)){a=0;u=x;return a|0}}else{if((s|0)<256){if((t|0)<=0)break;n=a+44|0;o=w+4|0;p=w+8|0;f[w>>2]=0;f[w+4>>2]=0;f[w+8>>2]=0;c=r+8|0;d=f[c>>2]|0;c=f[c+4>>2]|0;b:do if((c|0)>(j|0)|(c|0)==(j|0)&d>>>0>m>>>0){e=r;k=m;i=c;l=0;do{g=e+16|0;e=f[e>>2]|0;q=b[e+k>>0]|0;c=Ho(k|0,j|0,1,0)|0;r=I;m=g;f[m>>2]=c;f[m+4>>2]=r;f[w>>2]=q&255;if(!((i|0)>(r|0)|(i|0)==(r|0)&d>>>0>c>>>0))break b;q=b[e+c>>0]|0;c=Ho(k|0,j|0,2,0)|0;r=I;m=g;f[m>>2]=c;f[m+4>>2]=r;f[o>>2]=q&255;if(!((i|0)>(r|0)|(i|0)==(r|0)&d>>>0>c>>>0))break b;d=b[e+c>>0]|0;c=Ho(k|0,j|0,3,0)|0;e=g;f[e>>2]=c;f[e+4>>2]=I;f[p>>2]=d&255;d=f[n>>2]|0;e=d+88|0;c=f[e>>2]|0;if((c|0)==(f[d+92>>2]|0))pi(d+84|0,w);else{f[c>>2]=f[w>>2];f[c+4>>2]=f[w+4>>2];f[c+8>>2]=f[w+8>>2];f[e>>2]=(f[e>>2]|0)+12}l=l+1|0;if((l|0)>=(t|0))break a;e=f[v>>2]|0;j=e+16|0;k=f[j>>2]|0;j=f[j+4>>2]|0;f[w>>2]=0;f[w+4>>2]=0;f[w+8>>2]=0;i=e+8|0;d=f[i>>2]|0;i=f[i+4>>2]|0}while((i|0)>(j|0)|(i|0)==(j|0)&d>>>0>k>>>0)}while(0);a=0;u=x;return a|0}c=(t|0)>0;if((s|0)<65536){if(!c)break;o=a+44|0;p=w+4|0;q=w+8|0;f[w>>2]=0;f[w+4>>2]=0;f[w+8>>2]=0;e=r+8|0;i=f[e>>2]|0;e=f[e+4>>2]|0;c=Ho(n|0,l|0,11,0)|0;d=I;c:do if(!((e|0)<(d|0)|(e|0)==(d|0)&i>>>0>>0)){g=r;l=e;n=0;do{k=g+16|0;g=f[g>>2]|0;e=g+m|0;e=h[e>>0]|h[e+1>>0]<<8;r=k;f[r>>2]=c;f[r+4>>2]=d;f[w>>2]=e&65535;e=Ho(m|0,j|0,4,0)|0;d=I;if((l|0)<(d|0)|(l|0)==(d|0)&i>>>0>>0)break c;c=g+c|0;c=h[c>>0]|h[c+1>>0]<<8;r=k;f[r>>2]=e;f[r+4>>2]=d;f[p>>2]=c&65535;c=Ho(m|0,j|0,6,0)|0;d=I;if((l|0)<(d|0)|(l|0)==(d|0)&i>>>0>>0)break c;e=g+e|0;e=h[e>>0]|h[e+1>>0]<<8;r=k;f[r>>2]=c;f[r+4>>2]=d;f[q>>2]=e&65535;d=f[o>>2]|0;e=d+88|0;c=f[e>>2]|0;if((c|0)==(f[d+92>>2]|0))pi(d+84|0,w);else{f[c>>2]=f[w>>2];f[c+4>>2]=f[w+4>>2];f[c+8>>2]=f[w+8>>2];f[e>>2]=(f[e>>2]|0)+12}n=n+1|0;if((n|0)>=(t|0))break a;g=f[v>>2]|0;j=g+16|0;m=f[j>>2]|0;j=f[j+4>>2]|0;f[w>>2]=0;f[w+4>>2]=0;f[w+8>>2]=0;l=g+8|0;i=f[l>>2]|0;l=f[l+4>>2]|0;c=Ho(m|0,j|0,2,0)|0;d=I}while(!((l|0)<(d|0)|(l|0)==(d|0)&i>>>0>>0))}while(0);a=0;u=x;return a|0}else{if(!c)break;o=a+44|0;p=w+4|0;q=w+8|0;f[w>>2]=0;f[w+4>>2]=0;f[w+8>>2]=0;e=r+8|0;i=f[e>>2]|0;e=f[e+4>>2]|0;c=Ho(n|0,l|0,13,0)|0;d=I;d:do if(!((e|0)<(d|0)|(e|0)==(d|0)&i>>>0>>0)){g=r;l=e;n=0;do{k=g+16|0;g=f[g>>2]|0;e=g+m|0;e=h[e>>0]|h[e+1>>0]<<8|h[e+2>>0]<<16|h[e+3>>0]<<24;r=k;f[r>>2]=c;f[r+4>>2]=d;f[w>>2]=e;e=Ho(m|0,j|0,8,0)|0;d=I;if((l|0)<(d|0)|(l|0)==(d|0)&i>>>0>>0)break d;c=g+c|0;c=h[c>>0]|h[c+1>>0]<<8|h[c+2>>0]<<16|h[c+3>>0]<<24;r=k;f[r>>2]=e;f[r+4>>2]=d;f[p>>2]=c;c=Ho(m|0,j|0,12,0)|0;d=I;if((l|0)<(d|0)|(l|0)==(d|0)&i>>>0>>0)break d;e=g+e|0;e=h[e>>0]|h[e+1>>0]<<8|h[e+2>>0]<<16|h[e+3>>0]<<24;r=k;f[r>>2]=c;f[r+4>>2]=d;f[q>>2]=e;d=f[o>>2]|0;e=d+88|0;c=f[e>>2]|0;if((c|0)==(f[d+92>>2]|0))pi(d+84|0,w);else{f[c>>2]=f[w>>2];f[c+4>>2]=f[w+4>>2];f[c+8>>2]=f[w+8>>2];f[e>>2]=(f[e>>2]|0)+12}n=n+1|0;if((n|0)>=(t|0))break a;g=f[v>>2]|0;j=g+16|0;m=f[j>>2]|0;j=f[j+4>>2]|0;f[w>>2]=0;f[w+4>>2]=0;f[w+8>>2]=0;l=g+8|0;i=f[l>>2]|0;l=f[l+4>>2]|0;c=Ho(m|0,j|0,4,0)|0;d=I}while(!((l|0)<(d|0)|(l|0)==(d|0)&i>>>0>>0))}while(0);a=0;u=x;return a|0}}while(0);f[(f[a+4>>2]|0)+68>>2]=s;a=1;u=x;return a|0}function Db(a,b,c,d,e,g){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;g=g|0;var h=0,i=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,v=0,w=0,x=0,y=0,z=0,A=0,B=0,C=0,D=0,E=0,F=0,G=0,H=0;H=u;u=u+64|0;G=H+16|0;F=H;d=G;g=d+48|0;do{f[d>>2]=0;d=d+4|0}while((d|0)<(g|0));f[F>>2]=0;if(!e){d=0;g=0}else{ch(G,e,F);d=f[G+12>>2]|0;g=f[G+16>>2]|0}f[F>>2]=0;h=G+16|0;i=g-d>>2;if(i>>>0>=e>>>0){if(i>>>0>e>>>0?(j=d+(e<<2)|0,(g|0)!=(j|0)):0)f[h>>2]=g+(~((g+-4-j|0)>>>2)<<2)}else ch(G+12|0,e-i|0,F);i=G+24|0;f[F>>2]=0;h=G+28|0;g=f[h>>2]|0;d=f[i>>2]|0;j=g-d>>2;if(j>>>0>=e>>>0){if(j>>>0>e>>>0?(k=d+(e<<2)|0,(g|0)!=(k|0)):0)f[h>>2]=g+(~((g+-4-k|0)>>>2)<<2)}else ch(i,e-j|0,F);i=G+36|0;f[F>>2]=0;h=G+40|0;g=f[h>>2]|0;d=f[i>>2]|0;j=g-d>>2;if(j>>>0>=e>>>0){if(j>>>0>e>>>0?(l=d+(e<<2)|0,(g|0)!=(l|0)):0)f[h>>2]=g+(~((g+-4-l|0)>>>2)<<2)}else ch(i,e-j|0,F);D=a+8|0;ji(D,f[G>>2]|0,b,c);x=f[a+32>>2]|0;w=f[a+36>>2]|0;E=ln(16)|0;f[E>>2]=0;f[E+4>>2]=0;f[E+8>>2]=0;f[E+12>>2]=0;Dk(F,e);B=a+40|0;i=f[B>>2]|0;g=f[i+4>>2]|0;d=f[i>>2]|0;A=g-d|0;C=A>>2;a:do if((A|0)>4){z=x+12|0;A=(e|0)>0;y=e<<2;h=1;while(1){if(g-d>>2>>>0<=h>>>0){Kp(i);d=f[i>>2]|0}s=f[d+(h<<2)>>2]|0;v=(((s>>>0)%3|0|0)==0?2:-1)+s|0;t=(s|v|0)<0;r=(s|0)<0?s:v;g=s;q=1;d=0;b:while(1){do{if((g|0)<=-1){o=43;break b}o=f[G+(d*12|0)>>2]|0;p=f[z>>2]|0;j=f[p+(g<<2)>>2]|0;if((j|0)>=0){k=f[x>>2]|0;l=f[w>>2]|0;n=f[l+(f[k+(j<<2)>>2]<<2)>>2]|0;i=j+1|0;i=((i|0)%3|0|0)==0?j+-2|0:i;if((i|0)<0)i=-1073741824;else i=f[k+(i<<2)>>2]|0;m=f[l+(i<<2)>>2]|0;i=(((j>>>0)%3|0|0)==0?2:-1)+j|0;if((i|0)<0)i=-1073741824;else i=f[k+(i<<2)>>2]|0;i=f[l+(i<<2)>>2]|0;if((n|0)<(h|0)&(m|0)<(h|0)&(i|0)<(h|0)){l=X(n,e)|0;k=X(m,e)|0;j=X(i,e)|0;if(A){i=0;do{f[o+(i<<2)>>2]=(f[c+(i+j<<2)>>2]|0)+(f[c+(i+k<<2)>>2]|0)-(f[c+(i+l<<2)>>2]|0);i=i+1|0}while((i|0)!=(e|0))}d=d+1|0;if((d|0)==4){d=4;o=26;break b}}}do if(q){o=g+1|0;g=((o|0)%3|0|0)==0?g+-2|0:o;if((g|0)>=0){g=f[p+(g<<2)>>2]|0;i=g+1|0;if((g|0)>=0)g=((i|0)%3|0|0)==0?g+-2|0:i}}else{g=(((g>>>0)%3|0|0)==0?2:-1)+g|0;if((g|0)>=0){g=f[p+(g<<2)>>2]|0;if((g|0)>=0)if(!((g>>>0)%3|0)){g=g+2|0;break}else{g=g+-1|0;break}}}while(0);if((g|0)==(s|0)){o=43;break b}}while(!(q&(g|0)<0));if(t){g=r;q=0;continue}g=f[p+(v<<2)>>2]|0;if((g|0)<0){q=0;continue}if(!((g>>>0)%3|0)){g=g+2|0;q=0;continue}else{g=g+-1|0;q=0;continue}}if((o|0)==43)if((d|0)>0)o=26;else{d=X(h,e)|0;o=55}if((o|0)==26){o=0;if(A){ej(f[F>>2]|0,0,y|0)|0;k=d+-1|0;m=E+(k<<2)|0;k=f[a+44+(k*12|0)>>2]|0;l=f[F>>2]|0;n=0;j=0;do{v=f[m>>2]|0;f[m>>2]=v+1;if(!(f[k+(v>>>5<<2)>>2]&1<<(v&31))){g=f[G+(n*12|0)>>2]|0;i=0;do{v=l+(i<<2)|0;f[v>>2]=(f[v>>2]|0)+(f[g+(i<<2)>>2]|0);i=i+1|0}while((i|0)!=(e|0));j=j+1|0}n=n+1|0}while((n|0)!=(d|0))}else{g=d+-1|0;k=E+(g<<2)|0;g=f[a+44+(g*12|0)>>2]|0;i=f[k>>2]|0;l=0;j=0;do{v=i;i=i+1|0;f[k>>2]=i;j=j+((f[g+(v>>>5<<2)>>2]&1<<(v&31)|0)==0&1)|0;l=l+1|0}while((l|0)!=(d|0))}d=X(h,e)|0;if(!j)o=55;else{g=f[F>>2]|0;if(A){i=0;do{v=g+(i<<2)|0;f[v>>2]=(f[v>>2]|0)/(j|0)|0;i=i+1|0}while((i|0)!=(e|0))}ji(D,g,b+(d<<2)|0,c+(d<<2)|0)}}if((o|0)==55)ji(D,c+((X(h+-1|0,e)|0)<<2)|0,b+(d<<2)|0,c+(d<<2)|0);h=h+1|0;if((h|0)>=(C|0)){d=F;break a}i=f[B>>2]|0;d=f[i>>2]|0;g=f[i+4>>2]|0}}else d=F;while(0);h=f[d>>2]|0;if(h|0){g=F+4|0;d=f[g>>2]|0;if((d|0)!=(h|0))f[g>>2]=d+(~((d+-4-h|0)>>>2)<<2);ar(h)}ar(E);d=f[G+36>>2]|0;if(d|0){h=G+40|0;g=f[h>>2]|0;if((g|0)!=(d|0))f[h>>2]=g+(~((g+-4-d|0)>>>2)<<2);ar(d)}d=f[G+24>>2]|0;if(d|0){h=G+28|0;g=f[h>>2]|0;if((g|0)!=(d|0))f[h>>2]=g+(~((g+-4-d|0)>>>2)<<2);ar(d)}d=f[G+12>>2]|0;if(d|0){h=G+16|0;g=f[h>>2]|0;if((g|0)!=(d|0))f[h>>2]=g+(~((g+-4-d|0)>>>2)<<2);ar(d)}h=f[G>>2]|0;if(!h){u=H;return 1}g=G+4|0;d=f[g>>2]|0;if((d|0)!=(h|0))f[g>>2]=d+(~((d+-4-h|0)>>>2)<<2);ar(h);u=H;return 1}function Eb(a,c,e){a=a|0;c=c|0;e=e|0;var g=0,h=0,i=0,j=0,k=0,l=0,m=0,o=La,p=La,q=0,r=0,s=0,t=0,v=0,w=0,x=0,y=0,z=0,A=0,B=0,C=0,D=0,E=0,F=0,G=0,H=0,J=0,K=0,L=0,M=0,N=0,O=0,P=0,Q=La;P=u;u=u+48|0;O=P+12|0;K=P+32|0;N=P;G=O+16|0;f[O>>2]=0;f[O+4>>2]=0;f[O+8>>2]=0;f[O+12>>2]=0;n[G>>2]=$(1.0);M=a+80|0;Dk(N,f[M>>2]|0);h=f[M>>2]|0;a:do if((h|0)>0){D=c+48|0;E=c+40|0;B=K+2|0;C=K+4|0;x=O+4|0;A=O+12|0;y=O+8|0;F=a+40|0;z=a+64|0;w=f[e>>2]|0;r=0;v=0;t=0;while(1){l=w+v|0;j=D;k=f[j>>2]|0;j=f[j+4>>2]|0;s=E;l=kn(f[s>>2]|0,f[s+4>>2]|0,l|0,((l|0)<0)<<31>>31|0)|0;j=Ho(l|0,I|0,k|0,j|0)|0;j=(f[f[c>>2]>>2]|0)+j|0;b[K>>0]=b[j>>0]|0;b[K+1>>0]=b[j+1>>0]|0;b[K+2>>0]=b[j+2>>0]|0;b[K+3>>0]=b[j+3>>0]|0;b[K+4>>0]=b[j+4>>0]|0;b[K+5>>0]=b[j+5>>0]|0;j=d[K>>1]|0;k=d[B>>1]|0;l=d[C>>1]|0;s=(((j^318)&65535)+239^k&65535)+239^l&65535;q=(r|0)==0;b:do if(!q){h=r+-1|0;g=(h&r|0)==0;if(g)i=s&h;else i=(s>>>0)%(r>>>0)|0;e=f[(f[O>>2]|0)+(i<<2)>>2]|0;do if(e|0?(J=f[e>>2]|0,J|0):0){c:do if(g){e=J;while(1){if((f[e+4>>2]&h|0)!=(i|0)){i=22;break c}if(((d[e+8>>1]|0)==j<<16>>16?(d[e+10>>1]|0)==k<<16>>16:0)?(d[e+12>>1]|0)==l<<16>>16:0){i=21;break c}e=f[e>>2]|0;if(!e){i=22;break}}}else{e=J;while(1){if((((f[e+4>>2]|0)>>>0)%(r>>>0)|0|0)!=(i|0)){i=22;break c}if(((d[e+8>>1]|0)==j<<16>>16?(d[e+10>>1]|0)==k<<16>>16:0)?(d[e+12>>1]|0)==l<<16>>16:0){i=21;break c}e=f[e>>2]|0;if(!e){i=22;break}}}while(0);if((i|0)==21){i=0;f[(f[N>>2]|0)+(v<<2)>>2]=f[e+16>>2];g=t;break b}else if((i|0)==22)if(q){e=0;i=39;break b}else break}while(0);i=r+-1|0;h=(i&r|0)==0;if(h)e=i&s;else e=(s>>>0)%(r>>>0)|0;g=f[(f[O>>2]|0)+(e<<2)>>2]|0;if((g|0)!=0?(H=f[g>>2]|0,(H|0)!=0):0)if(h){g=H;while(1){if((f[g+4>>2]&i|0)!=(e|0)){i=39;break b}if(((d[g+8>>1]|0)==j<<16>>16?(d[g+10>>1]|0)==k<<16>>16:0)?(d[g+12>>1]|0)==l<<16>>16:0){i=52;break b}g=f[g>>2]|0;if(!g){i=39;break}}}else{g=H;while(1){if((((f[g+4>>2]|0)>>>0)%(r>>>0)|0|0)!=(e|0)){i=39;break b}if(((d[g+8>>1]|0)==j<<16>>16?(d[g+10>>1]|0)==k<<16>>16:0)?(d[g+12>>1]|0)==l<<16>>16:0){i=52;break b}g=f[g>>2]|0;if(!g){i=39;break}}}else i=39}else{e=0;i=39}while(0);if((i|0)==39){i=0;m=ln(20)|0;d[m+8>>1]=j;d[m+10>>1]=k;d[m+12>>1]=l;f[m+16>>2]=t;f[m+4>>2]=s;f[m>>2]=0;p=$(((f[A>>2]|0)+1|0)>>>0);Q=$(r>>>0);o=$(n[G>>2]);do if(q|p>$(Q*o)){e=(r>>>0<3|(r+-1&r|0)!=0)&1|r<<1;g=~~$(W($(p/o)))>>>0;Mh(O,e>>>0>>0?g:e);e=f[x>>2]|0;g=e+-1|0;if(!(g&e)){h=e;e=g&s;break}else{h=e;e=(s>>>0)%(e>>>0)|0;break}}else h=r;while(0);g=(f[O>>2]|0)+(e<<2)|0;e=f[g>>2]|0;if(!e){f[m>>2]=f[y>>2];f[y>>2]=m;f[g>>2]=y;e=f[m>>2]|0;if(e|0){e=f[e+4>>2]|0;g=h+-1|0;if(!(g&h))e=e&g;else e=(e>>>0)%(h>>>0)|0;e=(f[O>>2]|0)+(e<<2)|0;i=50}}else{f[m>>2]=f[e>>2];i=50}if((i|0)==50)f[e>>2]=m;f[A>>2]=(f[A>>2]|0)+1;i=52}if((i|0)==52){s=F;g=f[s>>2]|0;s=kn(g|0,f[s+4>>2]|0,t|0,((t|0)<0)<<31>>31|0)|0;Mg((f[f[z>>2]>>2]|0)+s|0,K|0,g|0)|0;f[(f[N>>2]|0)+(v<<2)>>2]=t;g=t+1|0}e=v+1|0;h=f[M>>2]|0;if((e|0)>=(h|0)){m=g;break a}r=f[x>>2]|0;v=e;t=g}}else m=0;while(0);if((m|0)!=(h|0)){l=a+84|0;if(!(b[l>>0]|0)){h=f[a+68>>2]|0;e=(f[a+72>>2]|0)-h|0;if((e|0)>0){i=f[N>>2]|0;g=e>>2;e=0;do{a=h+(e<<2)|0;f[a>>2]=f[i+(f[a>>2]<<2)>>2];e=e+1|0}while((e|0)<(g|0))}}else{b[l>>0]=0;j=a+68|0;i=a+72|0;g=f[i>>2]|0;e=f[j>>2]|0;k=g-e>>2;if(h>>>0<=k>>>0){if(h>>>0>>0?(L=e+(h<<2)|0,(g|0)!=(L|0)):0)f[i>>2]=g+(~((g+-4-L|0)>>>2)<<2)}else{ch(j,h-k|0,1416);h=f[M>>2]|0}if((h|0)>0){i=f[N>>2]|0;if(b[l>>0]|0)Ga(18230,18249,91,18290);e=f[a+68>>2]|0;g=0;do{f[e+(g<<2)>>2]=f[i+(g<<2)>>2];g=g+1|0}while((g|0)<(h|0))}}f[M>>2]=m}h=f[N>>2]|0;if(h|0){g=N+4|0;e=f[g>>2]|0;if((e|0)!=(h|0))f[g>>2]=e+(~((e+-4-h|0)>>>2)<<2);ar(h)}e=f[O+8>>2]|0;if(e|0)do{N=e;e=f[e>>2]|0;ar(N)}while((e|0)!=0);e=f[O>>2]|0;f[O>>2]=0;if(!e){u=P;return m|0}ar(e);u=P;return m|0}function Fb(a,b,c,d,e,g){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;g=g|0;var h=0,i=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,v=0,w=0,x=0,y=0,z=0,A=0,B=0,C=0,D=0,E=0,F=0,G=0,H=0;H=u;u=u+64|0;G=H+16|0;F=H;d=G;g=d+48|0;do{f[d>>2]=0;d=d+4|0}while((d|0)<(g|0));f[F>>2]=0;if(!e){d=0;g=0}else{ch(G,e,F);d=f[G+12>>2]|0;g=f[G+16>>2]|0}f[F>>2]=0;h=G+16|0;i=g-d>>2;if(i>>>0>=e>>>0){if(i>>>0>e>>>0?(j=d+(e<<2)|0,(g|0)!=(j|0)):0)f[h>>2]=g+(~((g+-4-j|0)>>>2)<<2)}else ch(G+12|0,e-i|0,F);i=G+24|0;f[F>>2]=0;h=G+28|0;g=f[h>>2]|0;d=f[i>>2]|0;j=g-d>>2;if(j>>>0>=e>>>0){if(j>>>0>e>>>0?(k=d+(e<<2)|0,(g|0)!=(k|0)):0)f[h>>2]=g+(~((g+-4-k|0)>>>2)<<2)}else ch(i,e-j|0,F);i=G+36|0;f[F>>2]=0;h=G+40|0;g=f[h>>2]|0;d=f[i>>2]|0;j=g-d>>2;if(j>>>0>=e>>>0){if(j>>>0>e>>>0?(l=d+(e<<2)|0,(g|0)!=(l|0)):0)f[h>>2]=g+(~((g+-4-l|0)>>>2)<<2)}else ch(i,e-j|0,F);D=a+8|0;mi(D,f[G>>2]|0,b,c);x=f[a+32>>2]|0;w=f[a+36>>2]|0;E=ln(16)|0;f[E>>2]=0;f[E+4>>2]=0;f[E+8>>2]=0;f[E+12>>2]=0;Dk(F,e);B=a+40|0;i=f[B>>2]|0;g=f[i+4>>2]|0;d=f[i>>2]|0;A=g-d|0;C=A>>2;a:do if((A|0)>4){z=x+12|0;A=(e|0)>0;y=e<<2;h=1;while(1){if(g-d>>2>>>0<=h>>>0){Kp(i);d=f[i>>2]|0}s=f[d+(h<<2)>>2]|0;v=(((s>>>0)%3|0|0)==0?2:-1)+s|0;t=(s|v|0)<0;r=(s|0)<0?s:v;g=s;q=1;d=0;b:while(1){do{if((g|0)<=-1){o=43;break b}o=f[G+(d*12|0)>>2]|0;p=f[z>>2]|0;j=f[p+(g<<2)>>2]|0;if((j|0)>=0){k=f[x>>2]|0;l=f[w>>2]|0;n=f[l+(f[k+(j<<2)>>2]<<2)>>2]|0;i=j+1|0;i=((i|0)%3|0|0)==0?j+-2|0:i;if((i|0)<0)i=-1073741824;else i=f[k+(i<<2)>>2]|0;m=f[l+(i<<2)>>2]|0;i=(((j>>>0)%3|0|0)==0?2:-1)+j|0;if((i|0)<0)i=-1073741824;else i=f[k+(i<<2)>>2]|0;i=f[l+(i<<2)>>2]|0;if((n|0)<(h|0)&(m|0)<(h|0)&(i|0)<(h|0)){l=X(n,e)|0;k=X(m,e)|0;j=X(i,e)|0;if(A){i=0;do{f[o+(i<<2)>>2]=(f[c+(i+j<<2)>>2]|0)+(f[c+(i+k<<2)>>2]|0)-(f[c+(i+l<<2)>>2]|0);i=i+1|0}while((i|0)!=(e|0))}d=d+1|0;if((d|0)==4){d=4;o=26;break b}}}do if(q){o=g+1|0;g=((o|0)%3|0|0)==0?g+-2|0:o;if((g|0)>=0){g=f[p+(g<<2)>>2]|0;i=g+1|0;if((g|0)>=0)g=((i|0)%3|0|0)==0?g+-2|0:i}}else{g=(((g>>>0)%3|0|0)==0?2:-1)+g|0;if((g|0)>=0){g=f[p+(g<<2)>>2]|0;if((g|0)>=0)if(!((g>>>0)%3|0)){g=g+2|0;break}else{g=g+-1|0;break}}}while(0);if((g|0)==(s|0)){o=43;break b}}while(!(q&(g|0)<0));if(t){g=r;q=0;continue}g=f[p+(v<<2)>>2]|0;if((g|0)<0){q=0;continue}if(!((g>>>0)%3|0)){g=g+2|0;q=0;continue}else{g=g+-1|0;q=0;continue}}if((o|0)==43)if((d|0)>0)o=26;else{d=X(h,e)|0;o=55}if((o|0)==26){o=0;if(A){ej(f[F>>2]|0,0,y|0)|0;k=d+-1|0;m=E+(k<<2)|0;k=f[a+44+(k*12|0)>>2]|0;l=f[F>>2]|0;n=0;j=0;do{v=f[m>>2]|0;f[m>>2]=v+1;if(!(f[k+(v>>>5<<2)>>2]&1<<(v&31))){g=f[G+(n*12|0)>>2]|0;i=0;do{v=l+(i<<2)|0;f[v>>2]=(f[v>>2]|0)+(f[g+(i<<2)>>2]|0);i=i+1|0}while((i|0)!=(e|0));j=j+1|0}n=n+1|0}while((n|0)!=(d|0))}else{g=d+-1|0;k=E+(g<<2)|0;g=f[a+44+(g*12|0)>>2]|0;i=f[k>>2]|0;l=0;j=0;do{v=i;i=i+1|0;f[k>>2]=i;j=j+((f[g+(v>>>5<<2)>>2]&1<<(v&31)|0)==0&1)|0;l=l+1|0}while((l|0)!=(d|0))}d=X(h,e)|0;if(!j)o=55;else{g=f[F>>2]|0;if(A){i=0;do{v=g+(i<<2)|0;f[v>>2]=(f[v>>2]|0)/(j|0)|0;i=i+1|0}while((i|0)!=(e|0))}mi(D,g,b+(d<<2)|0,c+(d<<2)|0)}}if((o|0)==55)mi(D,c+((X(h+-1|0,e)|0)<<2)|0,b+(d<<2)|0,c+(d<<2)|0);h=h+1|0;if((h|0)>=(C|0)){d=F;break a}i=f[B>>2]|0;d=f[i>>2]|0;g=f[i+4>>2]|0}}else d=F;while(0);h=f[d>>2]|0;if(h|0){g=F+4|0;d=f[g>>2]|0;if((d|0)!=(h|0))f[g>>2]=d+(~((d+-4-h|0)>>>2)<<2);ar(h)}ar(E);d=f[G+36>>2]|0;if(d|0){h=G+40|0;g=f[h>>2]|0;if((g|0)!=(d|0))f[h>>2]=g+(~((g+-4-d|0)>>>2)<<2);ar(d)}d=f[G+24>>2]|0;if(d|0){h=G+28|0;g=f[h>>2]|0;if((g|0)!=(d|0))f[h>>2]=g+(~((g+-4-d|0)>>>2)<<2);ar(d)}d=f[G+12>>2]|0;if(d|0){h=G+16|0;g=f[h>>2]|0;if((g|0)!=(d|0))f[h>>2]=g+(~((g+-4-d|0)>>>2)<<2);ar(d)}h=f[G>>2]|0;if(!h){u=H;return 1}g=G+4|0;d=f[g>>2]|0;if((d|0)!=(h|0))f[g>>2]=d+(~((d+-4-h|0)>>>2)<<2);ar(h);u=H;return 1}function Gb(a,c,d){a=a|0;c=c|0;d=d|0;var e=0,g=0,h=0,i=0,j=0,k=0,l=0,m=La,o=La,p=0,q=0,r=0,s=0,t=0,v=0,w=0,x=0,y=0,z=0,A=0,B=0,C=0,D=0,E=0,F=0,G=0,H=0,J=0,K=0,L=0,M=0,N=0,O=0,P=La;O=u;u=u+48|0;N=O+12|0;J=O+32|0;M=O;F=N+16|0;f[N>>2]=0;f[N+4>>2]=0;f[N+8>>2]=0;f[N+12>>2]=0;n[F>>2]=$(1.0);L=a+80|0;Dk(M,f[L>>2]|0);g=f[L>>2]|0;a:do if((g|0)>0){C=c+48|0;D=c+40|0;A=J+1|0;B=J+2|0;w=N+4|0;z=N+12|0;x=N+8|0;E=a+40|0;y=a+64|0;v=f[d>>2]|0;q=0;t=0;s=0;while(1){k=v+t|0;i=C;j=f[i>>2]|0;i=f[i+4>>2]|0;r=D;k=kn(f[r>>2]|0,f[r+4>>2]|0,k|0,((k|0)<0)<<31>>31|0)|0;i=Ho(k|0,I|0,j|0,i|0)|0;i=(f[f[c>>2]>>2]|0)+i|0;b[J>>0]=b[i>>0]|0;b[J+1>>0]=b[i+1>>0]|0;b[J+2>>0]=b[i+2>>0]|0;i=b[J>>0]|0;j=b[A>>0]|0;k=b[B>>0]|0;r=((i&255^318)+239^j&255)+239^k&255;p=(q|0)==0;b:do if(!p){g=q+-1|0;e=(g&q|0)==0;if(e)h=r&g;else h=(r>>>0)%(q>>>0)|0;d=f[(f[N>>2]|0)+(h<<2)>>2]|0;do if(d|0?(H=f[d>>2]|0,H|0):0){c:do if(e){d=H;while(1){if((f[d+4>>2]&g|0)!=(h|0)){h=22;break c}if(((b[d+8>>0]|0)==i<<24>>24?(b[d+9>>0]|0)==j<<24>>24:0)?(b[d+10>>0]|0)==k<<24>>24:0){h=21;break c}d=f[d>>2]|0;if(!d){h=22;break}}}else{d=H;while(1){if((((f[d+4>>2]|0)>>>0)%(q>>>0)|0|0)!=(h|0)){h=22;break c}if(((b[d+8>>0]|0)==i<<24>>24?(b[d+9>>0]|0)==j<<24>>24:0)?(b[d+10>>0]|0)==k<<24>>24:0){h=21;break c}d=f[d>>2]|0;if(!d){h=22;break}}}while(0);if((h|0)==21){h=0;f[(f[M>>2]|0)+(t<<2)>>2]=f[d+12>>2];e=s;break b}else if((h|0)==22)if(p){d=0;h=39;break b}else break}while(0);h=q+-1|0;g=(h&q|0)==0;if(g)d=h&r;else d=(r>>>0)%(q>>>0)|0;e=f[(f[N>>2]|0)+(d<<2)>>2]|0;if((e|0)!=0?(G=f[e>>2]|0,(G|0)!=0):0)if(g){e=G;while(1){if((f[e+4>>2]&h|0)!=(d|0)){h=39;break b}if(((b[e+8>>0]|0)==i<<24>>24?(b[e+9>>0]|0)==j<<24>>24:0)?(b[e+10>>0]|0)==k<<24>>24:0){h=52;break b}e=f[e>>2]|0;if(!e){h=39;break}}}else{e=G;while(1){if((((f[e+4>>2]|0)>>>0)%(q>>>0)|0|0)!=(d|0)){h=39;break b}if(((b[e+8>>0]|0)==i<<24>>24?(b[e+9>>0]|0)==j<<24>>24:0)?(b[e+10>>0]|0)==k<<24>>24:0){h=52;break b}e=f[e>>2]|0;if(!e){h=39;break}}}else h=39}else{d=0;h=39}while(0);if((h|0)==39){h=0;l=ln(16)|0;b[l+8>>0]=i;b[l+9>>0]=j;b[l+10>>0]=k;f[l+12>>2]=s;f[l+4>>2]=r;f[l>>2]=0;o=$(((f[z>>2]|0)+1|0)>>>0);P=$(q>>>0);m=$(n[F>>2]);do if(p|o>$(P*m)){d=(q>>>0<3|(q+-1&q|0)!=0)&1|q<<1;e=~~$(W($(o/m)))>>>0;Th(N,d>>>0>>0?e:d);d=f[w>>2]|0;e=d+-1|0;if(!(e&d)){g=d;d=e&r;break}else{g=d;d=(r>>>0)%(d>>>0)|0;break}}else g=q;while(0);e=(f[N>>2]|0)+(d<<2)|0;d=f[e>>2]|0;if(!d){f[l>>2]=f[x>>2];f[x>>2]=l;f[e>>2]=x;d=f[l>>2]|0;if(d|0){d=f[d+4>>2]|0;e=g+-1|0;if(!(e&g))d=d&e;else d=(d>>>0)%(g>>>0)|0;d=(f[N>>2]|0)+(d<<2)|0;h=50}}else{f[l>>2]=f[d>>2];h=50}if((h|0)==50)f[d>>2]=l;f[z>>2]=(f[z>>2]|0)+1;h=52}if((h|0)==52){r=E;e=f[r>>2]|0;r=kn(e|0,f[r+4>>2]|0,s|0,((s|0)<0)<<31>>31|0)|0;Mg((f[f[y>>2]>>2]|0)+r|0,J|0,e|0)|0;f[(f[M>>2]|0)+(t<<2)>>2]=s;e=s+1|0}d=t+1|0;g=f[L>>2]|0;if((d|0)>=(g|0)){l=e;break a}q=f[w>>2]|0;t=d;s=e}}else l=0;while(0);if((l|0)!=(g|0)){k=a+84|0;if(!(b[k>>0]|0)){g=f[a+68>>2]|0;d=(f[a+72>>2]|0)-g|0;if((d|0)>0){h=f[M>>2]|0;e=d>>2;d=0;do{a=g+(d<<2)|0;f[a>>2]=f[h+(f[a>>2]<<2)>>2];d=d+1|0}while((d|0)<(e|0))}}else{b[k>>0]=0;i=a+68|0;h=a+72|0;e=f[h>>2]|0;d=f[i>>2]|0;j=e-d>>2;if(g>>>0<=j>>>0){if(g>>>0>>0?(K=d+(g<<2)|0,(e|0)!=(K|0)):0)f[h>>2]=e+(~((e+-4-K|0)>>>2)<<2)}else{ch(i,g-j|0,1416);g=f[L>>2]|0}if((g|0)>0){h=f[M>>2]|0;if(b[k>>0]|0)Ga(18230,18249,91,18290);d=f[a+68>>2]|0;e=0;do{f[d+(e<<2)>>2]=f[h+(e<<2)>>2];e=e+1|0}while((e|0)<(g|0))}}f[L>>2]=l}g=f[M>>2]|0;if(g|0){e=M+4|0;d=f[e>>2]|0;if((d|0)!=(g|0))f[e>>2]=d+(~((d+-4-g|0)>>>2)<<2);ar(g)}d=f[N+8>>2]|0;if(d|0)do{M=d;d=f[d>>2]|0;ar(M)}while((d|0)!=0);d=f[N>>2]|0;f[N>>2]=0;if(!d){u=O;return l|0}ar(d);u=O;return l|0}function Hb(a,c,d){a=a|0;c=c|0;d=d|0;var e=0,g=0,h=0,i=0,j=0,k=0,l=0,m=La,o=La,p=0,q=0,r=0,s=0,t=0,v=0,w=0,x=0,y=0,z=0,A=0,B=0,C=0,D=0,E=0,F=0,G=0,H=0,J=0,K=0,L=0,M=0,N=0,O=0,P=La;O=u;u=u+48|0;N=O+24|0;J=O+12|0;M=O;F=N+16|0;f[N>>2]=0;f[N+4>>2]=0;f[N+8>>2]=0;f[N+12>>2]=0;n[F>>2]=$(1.0);L=a+80|0;Dk(M,f[L>>2]|0);g=f[L>>2]|0;a:do if((g|0)>0){C=c+48|0;D=c+40|0;A=J+4|0;B=J+8|0;w=N+4|0;z=N+12|0;x=N+8|0;E=a+40|0;y=a+64|0;v=f[d>>2]|0;r=0;t=0;s=0;while(1){g=v+t|0;e=C;d=f[e>>2]|0;e=f[e+4>>2]|0;q=D;g=kn(f[q>>2]|0,f[q+4>>2]|0,g|0,((g|0)<0)<<31>>31|0)|0;e=Ho(g|0,I|0,d|0,e|0)|0;d=J;e=(f[f[c>>2]>>2]|0)+e|0;g=d+12|0;do{b[d>>0]=b[e>>0]|0;d=d+1|0;e=e+1|0}while((d|0)<(g|0));i=f[J>>2]|0;j=f[A>>2]|0;k=f[B>>2]|0;q=((i^318)+239^j)+239^k;p=(r|0)==0;b:do if(!p){g=r+-1|0;e=(g&r|0)==0;if(e)h=q&g;else h=(q>>>0)%(r>>>0)|0;d=f[(f[N>>2]|0)+(h<<2)>>2]|0;do if(d|0?(H=f[d>>2]|0,H|0):0){c:do if(e){d=H;while(1){if((f[d+4>>2]&g|0)!=(h|0)){h=22;break c}if(((f[d+8>>2]|0)==(i|0)?(f[d+12>>2]|0)==(j|0):0)?(f[d+16>>2]|0)==(k|0):0){h=21;break c}d=f[d>>2]|0;if(!d){h=22;break}}}else{d=H;while(1){if((((f[d+4>>2]|0)>>>0)%(r>>>0)|0|0)!=(h|0)){h=22;break c}if(((f[d+8>>2]|0)==(i|0)?(f[d+12>>2]|0)==(j|0):0)?(f[d+16>>2]|0)==(k|0):0){h=21;break c}d=f[d>>2]|0;if(!d){h=22;break}}}while(0);if((h|0)==21){h=0;f[(f[M>>2]|0)+(t<<2)>>2]=f[d+20>>2];e=s;break b}else if((h|0)==22)if(p){d=0;h=39;break b}else break}while(0);h=r+-1|0;g=(h&r|0)==0;if(g)d=h&q;else d=(q>>>0)%(r>>>0)|0;e=f[(f[N>>2]|0)+(d<<2)>>2]|0;if((e|0)!=0?(G=f[e>>2]|0,(G|0)!=0):0)if(g){e=G;while(1){if((f[e+4>>2]&h|0)!=(d|0)){h=39;break b}if(((f[e+8>>2]|0)==(i|0)?(f[e+12>>2]|0)==(j|0):0)?(f[e+16>>2]|0)==(k|0):0){h=52;break b}e=f[e>>2]|0;if(!e){h=39;break}}}else{e=G;while(1){if((((f[e+4>>2]|0)>>>0)%(r>>>0)|0|0)!=(d|0)){h=39;break b}if(((f[e+8>>2]|0)==(i|0)?(f[e+12>>2]|0)==(j|0):0)?(f[e+16>>2]|0)==(k|0):0){h=52;break b}e=f[e>>2]|0;if(!e){h=39;break}}}else h=39}else{d=0;h=39}while(0);if((h|0)==39){h=0;l=ln(24)|0;f[l+8>>2]=i;f[l+12>>2]=j;f[l+16>>2]=k;f[l+20>>2]=s;f[l+4>>2]=q;f[l>>2]=0;o=$(((f[z>>2]|0)+1|0)>>>0);P=$(r>>>0);m=$(n[F>>2]);do if(p|o>$(P*m)){d=(r>>>0<3|(r+-1&r|0)!=0)&1|r<<1;e=~~$(W($(o/m)))>>>0;Qh(N,d>>>0>>0?e:d);d=f[w>>2]|0;e=d+-1|0;if(!(e&d)){g=d;d=e&q;break}else{g=d;d=(q>>>0)%(d>>>0)|0;break}}else g=r;while(0);e=(f[N>>2]|0)+(d<<2)|0;d=f[e>>2]|0;if(!d){f[l>>2]=f[x>>2];f[x>>2]=l;f[e>>2]=x;d=f[l>>2]|0;if(d|0){d=f[d+4>>2]|0;e=g+-1|0;if(!(e&g))d=d&e;else d=(d>>>0)%(g>>>0)|0;d=(f[N>>2]|0)+(d<<2)|0;h=50}}else{f[l>>2]=f[d>>2];h=50}if((h|0)==50)f[d>>2]=l;f[z>>2]=(f[z>>2]|0)+1;h=52}if((h|0)==52){r=E;e=f[r>>2]|0;r=kn(e|0,f[r+4>>2]|0,s|0,((s|0)<0)<<31>>31|0)|0;Mg((f[f[y>>2]>>2]|0)+r|0,J|0,e|0)|0;f[(f[M>>2]|0)+(t<<2)>>2]=s;e=s+1|0}d=t+1|0;g=f[L>>2]|0;if((d|0)>=(g|0)){l=e;break a}r=f[w>>2]|0;t=d;s=e}}else l=0;while(0);if((l|0)!=(g|0)){k=a+84|0;if(!(b[k>>0]|0)){g=f[a+68>>2]|0;d=(f[a+72>>2]|0)-g|0;if((d|0)>0){h=f[M>>2]|0;e=d>>2;d=0;do{a=g+(d<<2)|0;f[a>>2]=f[h+(f[a>>2]<<2)>>2];d=d+1|0}while((d|0)<(e|0))}}else{b[k>>0]=0;i=a+68|0;h=a+72|0;e=f[h>>2]|0;d=f[i>>2]|0;j=e-d>>2;if(g>>>0<=j>>>0){if(g>>>0>>0?(K=d+(g<<2)|0,(e|0)!=(K|0)):0)f[h>>2]=e+(~((e+-4-K|0)>>>2)<<2)}else{ch(i,g-j|0,1416);g=f[L>>2]|0}if((g|0)>0){h=f[M>>2]|0;if(b[k>>0]|0)Ga(18230,18249,91,18290);d=f[a+68>>2]|0;e=0;do{f[d+(e<<2)>>2]=f[h+(e<<2)>>2];e=e+1|0}while((e|0)<(g|0))}}f[L>>2]=l}g=f[M>>2]|0;if(g|0){e=M+4|0;d=f[e>>2]|0;if((d|0)!=(g|0))f[e>>2]=d+(~((d+-4-g|0)>>>2)<<2);ar(g)}d=f[N+8>>2]|0;if(d|0)do{M=d;d=f[d>>2]|0;ar(M)}while((d|0)!=0);d=f[N>>2]|0;f[N>>2]=0;if(!d){u=O;return l|0}ar(d);u=O;return l|0}function Ib(a,b){a=a|0;b=b|0;var c=0,d=0,e=0,g=0,h=0,i=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,v=0,w=0,x=0,y=0,z=0,A=0,B=0,C=0,D=0,E=0,F=0,G=0,H=0,I=0,J=0,K=0,L=0,M=0;M=u;u=u+48|0;L=M+24|0;J=M+12|0;z=M;if(!b){L=0;u=M;return L|0}I=a+12|0;A=a+4|0;k=f[A>>2]|0;c=f[a>>2]|0;i=k-c>>2;g=a+16|0;e=f[g>>2]|0;d=f[I>>2]|0;j=e-d>>2;l=c;if(i>>>0<=j>>>0)if(i>>>0>>0?(h=d+(i<<2)|0,(e|0)!=(h|0)):0){f[g>>2]=e+(~((e+-4-h|0)>>>2)<<2);g=c}else g=c;else{ch(I,i-j|0,1408);l=f[a>>2]|0;g=l;k=f[A>>2]|0}f[L>>2]=0;H=L+4|0;f[H>>2]=0;f[L+8>>2]=0;e=k-g|0;d=e>>2;c=L+8|0;do if(d)if(d>>>0>1073741823){M=Ia(4)|0;Eq(M);sa(M|0,1344,125)}else{i=ln(e)|0;h=i;f[L>>2]=h;f[H>>2]=h;f[c>>2]=i+(d<<2);break}else{i=0;h=0}while(0);if((e|0)>0){v=i;w=k;x=g;d=h;o=h;p=i;q=i;r=i;s=h;j=h;n=g;e=i;t=0;while(1){l=f[l+(t<<2)>>2]|0;c=f[H>>2]|0;if((l|0)<(c-d>>2|0)){g=v;h=w;i=x;m=e;c=n}else{e=l+1|0;f[J>>2]=0;g=c-d>>2;if(e>>>0<=g>>>0)if(e>>>0>>0?(y=d+(e<<2)|0,(c|0)!=(y|0)):0){f[H>>2]=c+(~((c+-4-y|0)>>>2)<<2);d=v;e=w;c=x}else{d=v;e=w;c=x}else{ch(L,e-g|0,J);d=f[L>>2]|0;e=f[A>>2]|0;c=f[a>>2]|0}j=d;g=d;h=e;i=c;o=j;p=d;q=d;r=d;s=j;m=d;k=e}G=m+(l<<2)|0;f[G>>2]=(f[G>>2]|0)+1;t=t+1|0;if((t|0)>=(k-c>>2|0)){l=s;i=q;break}else{v=g;w=h;x=i;l=c;d=m;n=c;e=m}}}else{c=g;j=h;l=h;r=i;o=h;p=i}c=k-c|0;h=c>>2;f[J>>2]=0;G=J+4|0;f[G>>2]=0;f[J+8>>2]=0;if(!h){d=0;e=0}else{if(h>>>0>536870911){Lp(J);M=Ia(4)|0;Eq(M);sa(M|0,1344,125)}g=ln(c<<1)|0;f[G>>2]=g;f[J>>2]=g;f[J+8>>2]=g+(h<<3);e=g;c=h;d=g;while(1){F=e;f[F>>2]=-1;f[F+4>>2]=-1;d=d+8|0;c=c+-1|0;if(!c)break;else e=d}f[G>>2]=g+(h<<3);d=g;e=g}F=f[H>>2]|0;g=F-j|0;c=g>>2;f[z>>2]=0;E=z+4|0;f[E>>2]=0;f[z+8>>2]=0;do if(c)if(c>>>0>1073741823){Lp(z);M=Ia(4)|0;Eq(M);sa(M|0,1344,125)}else{D=ln(g)|0;f[z>>2]=D;C=D+(c<<2)|0;f[z+8>>2]=C;ej(D|0,0,g|0)|0;f[E>>2]=C;B=D;break}else{B=0;C=0;D=0}while(0);if((F|0)!=(l|0)){h=F-r>>2;c=0;g=0;do{f[B+(c<<2)>>2]=g;g=(f[r+(c<<2)>>2]|0)+g|0;c=c+1|0}while(c>>>0>>0)}z=f[a>>2]|0;c=(f[A>>2]|0)-z|0;A=z;if((c|0)>0){z=a+40|0;y=c>>2;k=i;m=B;j=0;v=e;t=e;w=e;s=e;x=e;while(1){i=(j|0)<0;c=j+1|0;if(!i){c=((c|0)%3|0|0)==0?j+-2|0:c;if((c|0)<0)h=-1073741824;else h=f[A+(c<<2)>>2]|0;c=(j>>>0)%3|0;g=((c|0)==0?2:-1)+j|0;if((g|0)<0){r=-1073741824;q=h}else{r=f[A+(g<<2)>>2]|0;q=h}}else{c=(j>>>0)%3|0;r=-1073741824;q=-1073741824}if((j|0)==((i?-1073741824:j-c|0)|0)){if(i)c=-1073741824;else c=f[A+(j<<2)>>2]|0;if((q|0)==(r|0)|((c|0)==(q|0)|(c|0)==(r|0))){f[z>>2]=(f[z>>2]|0)+1;j=j+2|0;c=v;g=t;l=w;h=s;i=x}else K=60}else K=60;a:do if((K|0)==60){K=0;n=f[k+(r<<2)>>2]|0;b:do if((n|0)>0){c=0;i=f[m+(r<<2)>>2]|0;while(1){g=f[s+(i<<3)>>2]|0;if((g|0)<0){c=v;g=t;h=s;break b}if((g|0)==(q|0))break;c=c+1|0;if((c|0)<(n|0))i=i+1|0;else{c=v;g=t;h=s;break b}}l=f[s+(i<<3)+4>>2]|0;h=t;while(1){c=c+1|0;if((c|0)>=(n|0))break;g=i+1|0;f[h+(i<<3)>>2]=f[h+(g<<3)>>2];f[h+(i<<3)+4>>2]=f[h+(g<<3)+4>>2];if((f[v+(i<<3)>>2]|0)<0)break;else{i=g;h=v}}f[w+(i<<3)>>2]=-1;if((l|0)<0){c=w;g=w;h=w}else{c=f[I>>2]|0;f[c+(j<<2)>>2]=l;f[c+(l<<2)>>2]=j;c=w;g=w;l=w;h=w;i=x;break a}}else{c=v;g=t;h=s}while(0);i=f[p+(q<<2)>>2]|0;if((i|0)>0){h=0;c=f[B+(q<<2)>>2]|0;while(1){g=x+(c<<3)|0;if((f[g>>2]|0)<0)break;h=h+1|0;if((h|0)>=(i|0)){m=B;k=p;c=x;g=x;l=x;h=x;i=x;break a}else c=c+1|0}f[g>>2]=r;f[e+(c<<3)+4>>2]=j;m=B;k=p;c=e;g=e;l=e;h=e;i=e}else{k=p;l=w;i=x}}while(0);j=j+1|0;if((j|0)>=(y|0))break;else{v=c;t=g;w=l;s=h;x=i}}}f[b>>2]=F-o>>2;if(B){if((C|0)!=(B|0))f[E>>2]=C+(~((C+-4-B|0)>>>2)<<2);ar(D);d=f[J>>2]|0;e=d}if(e|0){c=f[G>>2]|0;if((c|0)!=(e|0))f[G>>2]=c+(~((c+-8-e|0)>>>3)<<3);ar(d)}c=f[L>>2]|0;if(c|0){d=f[H>>2]|0;if((d|0)!=(c|0))f[H>>2]=d+(~((d+-4-c|0)>>>2)<<2);ar(c)}L=1;u=M;return L|0}function Jb(a,c,d){a=a|0;c=c|0;d=d|0;var e=0,g=0,i=0,j=0,k=0,l=0,m=La,o=La,p=0,q=0,r=0,s=0,t=0,v=0,w=0,x=0,y=0,z=0,A=0,B=0,C=0,D=0,E=0,F=0,G=0,H=0,J=0,K=0,L=0,M=0,N=La;M=u;u=u+48|0;L=M+20|0;G=M;K=M+8|0;D=L+16|0;f[L>>2]=0;f[L+4>>2]=0;f[L+8>>2]=0;f[L+12>>2]=0;n[D>>2]=$(1.0);J=a+80|0;Dk(K,f[J>>2]|0);g=f[J>>2]|0;a:do if((g|0)>0){A=c+48|0;B=c+40|0;x=L+4|0;z=L+12|0;w=L+8|0;C=a+40|0;y=a+64|0;v=f[d>>2]|0;q=0;t=0;s=0;while(1){p=v+t|0;k=A;j=f[k>>2]|0;k=f[k+4>>2]|0;r=B;r=kn(p|0,((p|0)<0)<<31>>31|0,f[r>>2]|0,f[r+4>>2]|0)|0;k=Ho(r|0,I|0,j|0,k|0)|0;k=(f[f[c>>2]>>2]|0)+k|0;j=k;j=h[j>>0]|h[j+1>>0]<<8|h[j+2>>0]<<16|h[j+3>>0]<<24;k=k+4|0;k=h[k>>0]|h[k+1>>0]<<8|h[k+2>>0]<<16|h[k+3>>0]<<24;r=G;f[r>>2]=j;f[r+4>>2]=k;r=(j^318)+239^k;p=(q|0)==0;b:do if(!p){g=q+-1|0;e=(g&q|0)==0;if(e)i=r&g;else i=(r>>>0)%(q>>>0)|0;d=f[(f[L>>2]|0)+(i<<2)>>2]|0;do if(d|0?(F=f[d>>2]|0,F|0):0){c:do if(e){d=F;while(1){if((f[d+4>>2]&g|0)!=(i|0)){i=20;break c}if((f[d+8>>2]|0)==(j|0)?(f[d+12>>2]|0)==(k|0):0){i=19;break c}d=f[d>>2]|0;if(!d){i=20;break}}}else{d=F;while(1){if((((f[d+4>>2]|0)>>>0)%(q>>>0)|0|0)!=(i|0)){i=20;break c}if((f[d+8>>2]|0)==(j|0)?(f[d+12>>2]|0)==(k|0):0){i=19;break c}d=f[d>>2]|0;if(!d){i=20;break}}}while(0);if((i|0)==19){i=0;f[(f[K>>2]|0)+(t<<2)>>2]=f[d+16>>2];e=s;break b}else if((i|0)==20)if(p){d=0;i=35;break b}else break}while(0);i=q+-1|0;g=(i&q|0)==0;if(g)d=i&r;else d=(r>>>0)%(q>>>0)|0;e=f[(f[L>>2]|0)+(d<<2)>>2]|0;if((e|0)!=0?(E=f[e>>2]|0,(E|0)!=0):0)if(g){e=E;while(1){if((f[e+4>>2]&i|0)!=(d|0)){i=35;break b}if((f[e+8>>2]|0)==(j|0)?(f[e+12>>2]|0)==(k|0):0){i=48;break b}e=f[e>>2]|0;if(!e){i=35;break}}}else{e=E;while(1){if((((f[e+4>>2]|0)>>>0)%(q>>>0)|0|0)!=(d|0)){i=35;break b}if((f[e+8>>2]|0)==(j|0)?(f[e+12>>2]|0)==(k|0):0){i=48;break b}e=f[e>>2]|0;if(!e){i=35;break}}}else i=35}else{d=0;i=35}while(0);if((i|0)==35){i=0;l=ln(20)|0;g=l+8|0;f[g>>2]=j;f[g+4>>2]=k;f[l+16>>2]=s;f[l+4>>2]=r;f[l>>2]=0;o=$(((f[z>>2]|0)+1|0)>>>0);N=$(q>>>0);m=$(n[D>>2]);do if(p|o>$(N*m)){d=(q>>>0<3|(q+-1&q|0)!=0)&1|q<<1;e=~~$(W($(o/m)))>>>0;Rh(L,d>>>0>>0?e:d);d=f[x>>2]|0;e=d+-1|0;if(!(e&d)){g=d;d=e&r;break}else{g=d;d=(r>>>0)%(d>>>0)|0;break}}else g=q;while(0);e=(f[L>>2]|0)+(d<<2)|0;d=f[e>>2]|0;if(!d){f[l>>2]=f[w>>2];f[w>>2]=l;f[e>>2]=w;d=f[l>>2]|0;if(d|0){d=f[d+4>>2]|0;e=g+-1|0;if(!(e&g))d=d&e;else d=(d>>>0)%(g>>>0)|0;d=(f[L>>2]|0)+(d<<2)|0;i=46}}else{f[l>>2]=f[d>>2];i=46}if((i|0)==46)f[d>>2]=l;f[z>>2]=(f[z>>2]|0)+1;i=48}if((i|0)==48){r=C;e=f[r>>2]|0;r=kn(e|0,f[r+4>>2]|0,s|0,((s|0)<0)<<31>>31|0)|0;Mg((f[f[y>>2]>>2]|0)+r|0,G|0,e|0)|0;f[(f[K>>2]|0)+(t<<2)>>2]=s;e=s+1|0}d=t+1|0;g=f[J>>2]|0;if((d|0)>=(g|0)){p=e;break a}q=f[x>>2]|0;t=d;s=e}}else p=0;while(0);if((p|0)!=(g|0)){l=a+84|0;if(!(b[l>>0]|0)){g=f[a+68>>2]|0;d=(f[a+72>>2]|0)-g|0;if((d|0)>0){i=f[K>>2]|0;e=d>>2;d=0;do{a=g+(d<<2)|0;f[a>>2]=f[i+(f[a>>2]<<2)>>2];d=d+1|0}while((d|0)<(e|0))}}else{b[l>>0]=0;j=a+68|0;i=a+72|0;e=f[i>>2]|0;d=f[j>>2]|0;k=e-d>>2;if(g>>>0<=k>>>0){if(g>>>0>>0?(H=d+(g<<2)|0,(e|0)!=(H|0)):0)f[i>>2]=e+(~((e+-4-H|0)>>>2)<<2)}else{ch(j,g-k|0,1416);g=f[J>>2]|0}if((g|0)>0){i=f[K>>2]|0;if(b[l>>0]|0)Ga(18230,18249,91,18290);d=f[a+68>>2]|0;e=0;do{f[d+(e<<2)>>2]=f[i+(e<<2)>>2];e=e+1|0}while((e|0)<(g|0))}}f[J>>2]=p}g=f[K>>2]|0;if(g|0){e=K+4|0;d=f[e>>2]|0;if((d|0)!=(g|0))f[e>>2]=d+(~((d+-4-g|0)>>>2)<<2);ar(g)}d=f[L+8>>2]|0;if(d|0)do{K=d;d=f[d>>2]|0;ar(K)}while((d|0)!=0);d=f[L>>2]|0;f[L>>2]=0;if(!d){u=M;return p|0}ar(d);u=M;return p|0}function Kb(a,c,e){a=a|0;c=c|0;e=e|0;var g=0,i=0,j=0,k=0,l=0,m=0,o=La,p=La,q=0,r=0,s=0,t=0,v=0,w=0,x=0,y=0,z=0,A=0,B=0,C=0,D=0,E=0,F=0,G=0,H=0,J=0,K=0,L=0,M=0,N=0,O=0,P=La;O=u;u=u+48|0;N=O+16|0;J=O+12|0;M=O;F=N+16|0;f[N>>2]=0;f[N+4>>2]=0;f[N+8>>2]=0;f[N+12>>2]=0;n[F>>2]=$(1.0);L=a+80|0;Dk(M,f[L>>2]|0);i=f[L>>2]|0;a:do if((i|0)>0){C=c+48|0;D=c+40|0;z=N+4|0;B=N+12|0;y=N+8|0;E=a+40|0;A=a+64|0;x=f[e>>2]|0;s=0;w=0;v=0;while(1){l=x+w|0;m=C;k=f[m>>2]|0;m=f[m+4>>2]|0;t=D;t=kn(l|0,((l|0)<0)<<31>>31|0,f[t>>2]|0,f[t+4>>2]|0)|0;m=Ho(t|0,I|0,k|0,m|0)|0;m=(f[f[c>>2]>>2]|0)+m|0;m=h[m>>0]|h[m+1>>0]<<8|h[m+2>>0]<<16|h[m+3>>0]<<24;f[J>>2]=m;k=m&65535;t=m>>>16;l=t&65535;t=(m&65535^318)+239^t;r=(s|0)==0;b:do if(!r){i=s+-1|0;g=(i&s|0)==0;if(g)j=t&i;else j=(t>>>0)%(s>>>0)|0;e=f[(f[N>>2]|0)+(j<<2)>>2]|0;do if(e|0?(H=f[e>>2]|0,H|0):0){c:do if(g){e=H;while(1){if((f[e+4>>2]&i|0)!=(j|0)){q=20;break c}if((d[e+8>>1]|0)==k<<16>>16?(d[e+10>>1]|0)==l<<16>>16:0){q=19;break c}e=f[e>>2]|0;if(!e){q=20;break}}}else{e=H;while(1){if((((f[e+4>>2]|0)>>>0)%(s>>>0)|0|0)!=(j|0)){q=20;break c}if((d[e+8>>1]|0)==k<<16>>16?(d[e+10>>1]|0)==l<<16>>16:0){q=19;break c}e=f[e>>2]|0;if(!e){q=20;break}}}while(0);if((q|0)==19){q=0;f[(f[M>>2]|0)+(w<<2)>>2]=f[e+12>>2];g=v;break b}else if((q|0)==20)if(r){e=0;q=35;break b}else break}while(0);j=s+-1|0;i=(j&s|0)==0;if(i)e=j&t;else e=(t>>>0)%(s>>>0)|0;g=f[(f[N>>2]|0)+(e<<2)>>2]|0;if((g|0)!=0?(G=f[g>>2]|0,(G|0)!=0):0)if(i){g=G;while(1){if((f[g+4>>2]&j|0)!=(e|0)){q=35;break b}if((d[g+8>>1]|0)==k<<16>>16?(d[g+10>>1]|0)==l<<16>>16:0){q=48;break b}g=f[g>>2]|0;if(!g){q=35;break}}}else{g=G;while(1){if((((f[g+4>>2]|0)>>>0)%(s>>>0)|0|0)!=(e|0)){q=35;break b}if((d[g+8>>1]|0)==k<<16>>16?(d[g+10>>1]|0)==l<<16>>16:0){q=48;break b}g=f[g>>2]|0;if(!g){q=35;break}}}else q=35}else{e=0;q=35}while(0);if((q|0)==35){q=0;j=ln(16)|0;l=j+8|0;d[l>>1]=m;d[l+2>>1]=m>>>16;f[j+12>>2]=v;f[j+4>>2]=t;f[j>>2]=0;p=$(((f[B>>2]|0)+1|0)>>>0);P=$(s>>>0);o=$(n[F>>2]);do if(r|p>$(P*o)){e=(s>>>0<3|(s+-1&s|0)!=0)&1|s<<1;g=~~$(W($(p/o)))>>>0;Nh(N,e>>>0>>0?g:e);e=f[z>>2]|0;g=e+-1|0;if(!(g&e)){i=e;e=g&t;break}else{i=e;e=(t>>>0)%(e>>>0)|0;break}}else i=s;while(0);g=(f[N>>2]|0)+(e<<2)|0;e=f[g>>2]|0;if(!e){f[j>>2]=f[y>>2];f[y>>2]=j;f[g>>2]=y;e=f[j>>2]|0;if(e|0){e=f[e+4>>2]|0;g=i+-1|0;if(!(g&i))e=e&g;else e=(e>>>0)%(i>>>0)|0;e=(f[N>>2]|0)+(e<<2)|0;q=46}}else{f[j>>2]=f[e>>2];q=46}if((q|0)==46)f[e>>2]=j;f[B>>2]=(f[B>>2]|0)+1;q=48}if((q|0)==48){t=E;g=f[t>>2]|0;t=kn(g|0,f[t+4>>2]|0,v|0,((v|0)<0)<<31>>31|0)|0;Mg((f[f[A>>2]>>2]|0)+t|0,J|0,g|0)|0;f[(f[M>>2]|0)+(w<<2)>>2]=v;g=v+1|0}e=w+1|0;i=f[L>>2]|0;if((e|0)>=(i|0)){q=g;break a}s=f[z>>2]|0;w=e;v=g}}else q=0;while(0);if((q|0)!=(i|0)){m=a+84|0;if(!(b[m>>0]|0)){i=f[a+68>>2]|0;e=(f[a+72>>2]|0)-i|0;if((e|0)>0){j=f[M>>2]|0;g=e>>2;e=0;do{a=i+(e<<2)|0;f[a>>2]=f[j+(f[a>>2]<<2)>>2];e=e+1|0}while((e|0)<(g|0))}}else{b[m>>0]=0;k=a+68|0;j=a+72|0;g=f[j>>2]|0;e=f[k>>2]|0;l=g-e>>2;if(i>>>0<=l>>>0){if(i>>>0>>0?(K=e+(i<<2)|0,(g|0)!=(K|0)):0)f[j>>2]=g+(~((g+-4-K|0)>>>2)<<2)}else{ch(k,i-l|0,1416);i=f[L>>2]|0}if((i|0)>0){j=f[M>>2]|0;if(b[m>>0]|0)Ga(18230,18249,91,18290);e=f[a+68>>2]|0;g=0;do{f[e+(g<<2)>>2]=f[j+(g<<2)>>2];g=g+1|0}while((g|0)<(i|0))}}f[L>>2]=q}i=f[M>>2]|0;if(i|0){g=M+4|0;e=f[g>>2]|0;if((e|0)!=(i|0))f[g>>2]=e+(~((e+-4-i|0)>>>2)<<2);ar(i)}e=f[N+8>>2]|0;if(e|0)do{M=e;e=f[e>>2]|0;ar(M)}while((e|0)!=0);e=f[N>>2]|0;f[N>>2]=0;if(!e){u=O;return q|0}ar(e);u=O;return q|0}function Lb(a,c,e){a=a|0;c=c|0;e=e|0;var g=0,i=0,j=0,k=0,l=0,m=0,o=La,p=La,q=0,r=0,s=0,t=0,v=0,w=0,x=0,y=0,z=0,A=0,B=0,C=0,D=0,E=0,F=0,G=0,H=0,J=0,K=0,L=0,M=0,N=0,O=0,P=La;O=u;u=u+48|0;N=O+12|0;J=O+32|0;M=O;F=N+16|0;f[N>>2]=0;f[N+4>>2]=0;f[N+8>>2]=0;f[N+12>>2]=0;n[F>>2]=$(1.0);L=a+80|0;Dk(M,f[L>>2]|0);i=f[L>>2]|0;a:do if((i|0)>0){C=c+48|0;D=c+40|0;z=N+4|0;B=N+12|0;y=N+8|0;E=a+40|0;A=a+64|0;x=f[e>>2]|0;s=0;w=0;v=0;while(1){l=x+w|0;m=C;k=f[m>>2]|0;m=f[m+4>>2]|0;t=D;t=kn(l|0,((l|0)<0)<<31>>31|0,f[t>>2]|0,f[t+4>>2]|0)|0;m=Ho(t|0,I|0,k|0,m|0)|0;m=(f[f[c>>2]>>2]|0)+m|0;m=h[m>>0]|h[m+1>>0]<<8;d[J>>1]=m;k=m&255;t=(m&65535)>>>8;l=t&255;t=((m&255^318)+239<<16>>16^t)&65535;r=(s|0)==0;b:do if(!r){i=s+-1|0;g=(i&s|0)==0;if(g)j=t&i;else j=(t>>>0)%(s>>>0)|0;e=f[(f[N>>2]|0)+(j<<2)>>2]|0;do if(e|0?(H=f[e>>2]|0,H|0):0){c:do if(g){e=H;while(1){if((f[e+4>>2]&i|0)!=(j|0)){q=20;break c}if((b[e+8>>0]|0)==k<<24>>24?(b[e+9>>0]|0)==l<<24>>24:0){q=19;break c}e=f[e>>2]|0;if(!e){q=20;break}}}else{e=H;while(1){if((((f[e+4>>2]|0)>>>0)%(s>>>0)|0|0)!=(j|0)){q=20;break c}if((b[e+8>>0]|0)==k<<24>>24?(b[e+9>>0]|0)==l<<24>>24:0){q=19;break c}e=f[e>>2]|0;if(!e){q=20;break}}}while(0);if((q|0)==19){q=0;f[(f[M>>2]|0)+(w<<2)>>2]=f[e+12>>2];g=v;break b}else if((q|0)==20)if(r){e=0;q=35;break b}else break}while(0);j=s+-1|0;i=(j&s|0)==0;if(i)e=j&t;else e=(t>>>0)%(s>>>0)|0;g=f[(f[N>>2]|0)+(e<<2)>>2]|0;if((g|0)!=0?(G=f[g>>2]|0,(G|0)!=0):0)if(i){g=G;while(1){if((f[g+4>>2]&j|0)!=(e|0)){q=35;break b}if((b[g+8>>0]|0)==k<<24>>24?(b[g+9>>0]|0)==l<<24>>24:0){q=48;break b}g=f[g>>2]|0;if(!g){q=35;break}}}else{g=G;while(1){if((((f[g+4>>2]|0)>>>0)%(s>>>0)|0|0)!=(e|0)){q=35;break b}if((b[g+8>>0]|0)==k<<24>>24?(b[g+9>>0]|0)==l<<24>>24:0){q=48;break b}g=f[g>>2]|0;if(!g){q=35;break}}}else q=35}else{e=0;q=35}while(0);if((q|0)==35){q=0;j=ln(16)|0;l=j+8|0;b[l>>0]=m;b[l+1>>0]=m>>8;f[j+12>>2]=v;f[j+4>>2]=t;f[j>>2]=0;p=$(((f[B>>2]|0)+1|0)>>>0);P=$(s>>>0);o=$(n[F>>2]);do if(r|p>$(P*o)){e=(s>>>0<3|(s+-1&s|0)!=0)&1|s<<1;g=~~$(W($(p/o)))>>>0;Uh(N,e>>>0>>0?g:e);e=f[z>>2]|0;g=e+-1|0;if(!(g&e)){i=e;e=g&t;break}else{i=e;e=(t>>>0)%(e>>>0)|0;break}}else i=s;while(0);g=(f[N>>2]|0)+(e<<2)|0;e=f[g>>2]|0;if(!e){f[j>>2]=f[y>>2];f[y>>2]=j;f[g>>2]=y;e=f[j>>2]|0;if(e|0){e=f[e+4>>2]|0;g=i+-1|0;if(!(g&i))e=e&g;else e=(e>>>0)%(i>>>0)|0;e=(f[N>>2]|0)+(e<<2)|0;q=46}}else{f[j>>2]=f[e>>2];q=46}if((q|0)==46)f[e>>2]=j;f[B>>2]=(f[B>>2]|0)+1;q=48}if((q|0)==48){t=E;g=f[t>>2]|0;t=kn(g|0,f[t+4>>2]|0,v|0,((v|0)<0)<<31>>31|0)|0;Mg((f[f[A>>2]>>2]|0)+t|0,J|0,g|0)|0;f[(f[M>>2]|0)+(w<<2)>>2]=v;g=v+1|0}e=w+1|0;i=f[L>>2]|0;if((e|0)>=(i|0)){q=g;break a}s=f[z>>2]|0;w=e;v=g}}else q=0;while(0);if((q|0)!=(i|0)){m=a+84|0;if(!(b[m>>0]|0)){i=f[a+68>>2]|0;e=(f[a+72>>2]|0)-i|0;if((e|0)>0){j=f[M>>2]|0;g=e>>2;e=0;do{a=i+(e<<2)|0;f[a>>2]=f[j+(f[a>>2]<<2)>>2];e=e+1|0}while((e|0)<(g|0))}}else{b[m>>0]=0;k=a+68|0;j=a+72|0;g=f[j>>2]|0;e=f[k>>2]|0;l=g-e>>2;if(i>>>0<=l>>>0){if(i>>>0>>0?(K=e+(i<<2)|0,(g|0)!=(K|0)):0)f[j>>2]=g+(~((g+-4-K|0)>>>2)<<2)}else{ch(k,i-l|0,1416);i=f[L>>2]|0}if((i|0)>0){j=f[M>>2]|0;if(b[m>>0]|0)Ga(18230,18249,91,18290);e=f[a+68>>2]|0;g=0;do{f[e+(g<<2)>>2]=f[j+(g<<2)>>2];g=g+1|0}while((g|0)<(i|0))}}f[L>>2]=q}i=f[M>>2]|0;if(i|0){g=M+4|0;e=f[g>>2]|0;if((e|0)!=(i|0))f[g>>2]=e+(~((e+-4-i|0)>>>2)<<2);ar(i)}e=f[N+8>>2]|0;if(e|0)do{M=e;e=f[e>>2]|0;ar(M)}while((e|0)!=0);e=f[N>>2]|0;f[N>>2]=0;if(!e){u=O;return q|0}ar(e);u=O;return q|0}function Mb(a,c,d){a=a|0;c=c|0;d=d|0;var e=0,g=0,h=0,i=0,j=0,k=0;k=u;u=u+32|0;g=k+16|0;e=k+12|0;i=k+8|0;j=k+4|0;h=k;switch(f[c+28>>2]|0){case 9:{d=f[d>>2]|0;switch(b[c+24>>0]|0){case 1:{f[e>>2]=d;f[g>>2]=f[e>>2];d=_b(a,c,g)|0;break}case 2:{f[i>>2]=d;f[g>>2]=f[i>>2];d=Jb(a,c,g)|0;break}case 3:{f[j>>2]=d;f[g>>2]=f[j>>2];d=Hb(a,c,g)|0;break}case 4:{f[h>>2]=d;f[g>>2]=f[h>>2];d=Wb(a,c,g)|0;break}default:d=0}break}case 1:{d=f[d>>2]|0;switch(b[c+24>>0]|0){case 1:{f[e>>2]=d;f[g>>2]=f[e>>2];d=$b(a,c,g)|0;break}case 2:{f[i>>2]=d;f[g>>2]=f[i>>2];d=Lb(a,c,g)|0;break}case 3:{f[j>>2]=d;f[g>>2]=f[j>>2];d=Gb(a,c,g)|0;break}case 4:{f[h>>2]=d;f[g>>2]=f[h>>2];d=Ub(a,c,g)|0;break}default:d=0}break}case 11:case 2:{d=f[d>>2]|0;switch(b[c+24>>0]|0){case 1:{f[e>>2]=d;f[g>>2]=f[e>>2];d=$b(a,c,g)|0;break}case 2:{f[i>>2]=d;f[g>>2]=f[i>>2];d=Lb(a,c,g)|0;break}case 3:{f[j>>2]=d;f[g>>2]=f[j>>2];d=Gb(a,c,g)|0;break}case 4:{f[h>>2]=d;f[g>>2]=f[h>>2];d=Ub(a,c,g)|0;break}default:d=0}break}case 4:{d=f[d>>2]|0;switch(b[c+24>>0]|0){case 1:{f[e>>2]=d;f[g>>2]=f[e>>2];d=Zb(a,c,g)|0;break}case 2:{f[i>>2]=d;f[g>>2]=f[i>>2];d=Kb(a,c,g)|0;break}case 3:{f[j>>2]=d;f[g>>2]=f[j>>2];d=Eb(a,c,g)|0;break}case 4:{f[h>>2]=d;f[g>>2]=f[h>>2];d=Rb(a,c,g)|0;break}default:d=0}break}case 3:{d=f[d>>2]|0;switch(b[c+24>>0]|0){case 1:{f[e>>2]=d;f[g>>2]=f[e>>2];d=Zb(a,c,g)|0;break}case 2:{f[i>>2]=d;f[g>>2]=f[i>>2];d=Kb(a,c,g)|0;break}case 3:{f[j>>2]=d;f[g>>2]=f[j>>2];d=Eb(a,c,g)|0;break}case 4:{f[h>>2]=d;f[g>>2]=f[h>>2];d=Rb(a,c,g)|0;break}default:d=0}break}case 6:{d=f[d>>2]|0;switch(b[c+24>>0]|0){case 1:{f[e>>2]=d;f[g>>2]=f[e>>2];d=_b(a,c,g)|0;break}case 2:{f[i>>2]=d;f[g>>2]=f[i>>2];d=Jb(a,c,g)|0;break}case 3:{f[j>>2]=d;f[g>>2]=f[j>>2];d=Hb(a,c,g)|0;break}case 4:{f[h>>2]=d;f[g>>2]=f[h>>2];d=Wb(a,c,g)|0;break}default:d=0}break}case 5:{d=f[d>>2]|0;switch(b[c+24>>0]|0){case 1:{f[e>>2]=d;f[g>>2]=f[e>>2];d=_b(a,c,g)|0;break}case 2:{f[i>>2]=d;f[g>>2]=f[i>>2];d=Jb(a,c,g)|0;break}case 3:{f[j>>2]=d;f[g>>2]=f[j>>2];d=Hb(a,c,g)|0;break}case 4:{f[h>>2]=d;f[g>>2]=f[h>>2];d=Wb(a,c,g)|0;break}default:d=0}break}default:{a=-1;u=k;return a|0}}a=(d|0)==0?-1:d;u=k;return a|0}function Nb(a,b,c,d){a=a|0;b=b|0;c=c|0;d=d|0;var e=0,g=0,h=0,i=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,v=0,w=0,x=0,y=0,z=0,A=0,B=0,C=0,D=0,E=0,F=0,G=0,H=0,J=0;D=u;u=u+80|0;z=D+48|0;r=D+24|0;s=D;g=a+32|0;e=f[b>>2]|0;b=e+1|0;if((e|0)>=0){b=((b|0)%3|0|0)==0?e+-2|0:b;e=(((e>>>0)%3|0|0)==0?2:-1)+e|0;if((b|0)<0)b=-1073741824;else b=f[(f[f[g>>2]>>2]|0)+(b<<2)>>2]|0;if((e|0)<0){k=b;l=-1073741824}else{k=b;l=f[(f[f[g>>2]>>2]|0)+(e<<2)>>2]|0}}else{k=-1073741824;l=-1073741824}b=a+36|0;i=f[b>>2]|0;e=f[i+4>>2]|0;j=f[i>>2]|0;if(e-j>>2>>>0>k>>>0){b=j;g=e;h=i;e=j}else{Kp(i);h=f[b>>2]|0;b=f[h>>2]|0;g=f[h+4>>2]|0;e=f[i>>2]|0}t=f[e+(k<<2)>>2]|0;if(g-b>>2>>>0<=l>>>0){Kp(h);b=f[h>>2]|0}b=f[b+(l<<2)>>2]|0;m=(t|0)<(d|0);do if(m&(b|0)<(d|0)){p=t<<1;n=f[c+(p<<2)>>2]|0;o=((n|0)<0)<<31>>31;p=f[c+((p|1)<<2)>>2]|0;q=((p|0)<0)<<31>>31;l=b<<1;k=f[c+(l<<2)>>2]|0;l=f[c+((l|1)<<2)>>2]|0;if(!((k|0)!=(n|0)|(l|0)!=(p|0))){f[a+8>>2]=n;f[a+12>>2]=p;u=D;return}Tg(z,a,d);Tg(r,a,t);Tg(s,a,b);v=s;h=r;g=f[h>>2]|0;h=f[h+4>>2]|0;v=Xn(f[v>>2]|0,f[v+4>>2]|0,g|0,h|0)|0;w=I;x=s+8|0;j=r+8|0;i=f[j>>2]|0;j=f[j+4>>2]|0;x=Xn(f[x>>2]|0,f[x+4>>2]|0,i|0,j|0)|0;y=I;s=s+16|0;e=r+16|0;b=f[e>>2]|0;e=f[e+4>>2]|0;r=Xn(f[s>>2]|0,f[s+4>>2]|0,b|0,e|0)|0;s=I;B=kn(v|0,w|0,v|0,w|0)|0;E=I;A=kn(x|0,y|0,x|0,y|0)|0;E=Ho(A|0,I|0,B|0,E|0)|0;B=I;A=kn(r|0,s|0,r|0,s|0)|0;A=Ho(E|0,B|0,A|0,I|0)|0;B=I;if((A|0)==0&(B|0)==0)break;J=z;J=Xn(f[J>>2]|0,f[J+4>>2]|0,g|0,h|0)|0;H=I;G=z+8|0;G=Xn(f[G>>2]|0,f[G+4>>2]|0,i|0,j|0)|0;F=I;g=z+16|0;g=Xn(f[g>>2]|0,f[g+4>>2]|0,b|0,e|0)|0;h=I;E=kn(J|0,H|0,v|0,w|0)|0;b=I;j=kn(G|0,F|0,x|0,y|0)|0;b=Ho(j|0,I|0,E|0,b|0)|0;E=I;j=kn(g|0,h|0,r|0,s|0)|0;j=Ho(b|0,E|0,j|0,I|0)|0;E=I;b=Xn(k|0,((k|0)<0)<<31>>31|0,n|0,o|0)|0;k=I;t=Xn(l|0,((l|0)<0)<<31>>31|0,p|0,q|0)|0;d=I;n=kn(A|0,B|0,n|0,o|0)|0;m=I;p=kn(A|0,B|0,p|0,q|0)|0;o=I;c=kn(j|0,E|0,b|0,k|0)|0;z=I;i=kn(j|0,E|0,t|0,d|0)|0;l=I;m=Ho(c|0,z|0,n|0,m|0)|0;n=I;o=Ho(i|0,l|0,p|0,o|0)|0;p=I;l=kn(j|0,E|0,v|0,w|0)|0;i=I;z=kn(j|0,E|0,x|0,y|0)|0;c=I;E=kn(j|0,E|0,r|0,s|0)|0;j=I;i=pk(l|0,i|0,A|0,B|0)|0;l=I;c=pk(z|0,c|0,A|0,B|0)|0;z=I;j=pk(E|0,j|0,A|0,B|0)|0;E=I;l=Xn(J|0,H|0,i|0,l|0)|0;i=I;z=Xn(G|0,F|0,c|0,z|0)|0;c=I;E=Xn(g|0,h|0,j|0,E|0)|0;j=I;i=kn(l|0,i|0,l|0,i|0)|0;l=I;c=kn(z|0,c|0,z|0,c|0)|0;l=Ho(c|0,I|0,i|0,l|0)|0;i=I;j=kn(E|0,j|0,E|0,j|0)|0;j=Ho(l|0,i|0,j|0,I|0)|0;i=I;k=Xn(0,0,b|0,k|0)|0;l=I;i=kn(j|0,i|0,A|0,B|0)|0;j=I;b=j&2147483647;switch(i|0){case 0:{if(!b){e=0;b=0}else{e=1;b=0;g=i;h=j;C=19}break}case 1:{if(!b){e=1;b=0;C=20}else{e=1;b=0;g=i;h=j;C=19}break}default:{e=1;b=0;g=i;h=j;C=19}}if((C|0)==19)while(1){e=On(e|0,b|0,1)|0;b=I;J=g;g=Tn(g|0,h|0,2)|0;if(!(h>>>0>0|(h|0)==0&J>>>0>7)){C=20;break}else{h=I;C=19}}if((C|0)==20)while(1){J=Dp(i|0,j|0,e|0,b|0)|0;e=Ho(J|0,I|0,e|0,b|0)|0;e=Tn(e|0,I|0,1)|0;b=I;J=kn(e|0,b|0,e|0,b|0)|0;H=I;if(H>>>0>j>>>0|(H|0)==(j|0)&J>>>0>i>>>0)C=20;else break}E=kn(e|0,b|0,t|0,d|0)|0;F=I;C=kn(e|0,b|0,k|0,l|0)|0;G=I;H=a+20|0;c=(f[H>>2]|0)+-1|0;J=(1<<(c&31)&f[(f[a+16>>2]|0)+(c>>>5<<2)>>2]|0)!=0;f[H>>2]=c;H=Xn(0,0,E|0,F|0)|0;F=Ho(m|0,n|0,(J?E:H)|0,(J?F:I)|0)|0;H=I;E=Xn(0,0,C|0,G|0)|0;G=Ho(o|0,p|0,(J?C:E)|0,(J?G:I)|0)|0;J=I;H=pk(F|0,H|0,A|0,B|0)|0;J=pk(G|0,J|0,A|0,B|0)|0;f[a+8>>2]=H;f[a+12>>2]=J;u=D;return}while(0);do if(m)b=t<<1;else{if((d|0)>0){b=(d<<1)+-2|0;break}J=a+8|0;f[J>>2]=0;f[J+4>>2]=0;u=D;return}while(0);f[a+8>>2]=f[c+(b<<2)>>2];f[a+12>>2]=f[c+(b+1<<2)>>2];u=D;return}function Ob(a,b){a=a|0;b=b|0;var c=0,d=0,e=0,g=0,h=0,i=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,v=0,w=0,x=0;x=u;u=u+48|0;w=x;t=x+36|0;j=x+32|0;k=x+28|0;l=x+24|0;m=x+20|0;n=x+16|0;o=x+12|0;s=x+8|0;v=x+4|0;if((f[a+96>>2]|0)==(f[a+92>>2]|0)){u=x;return}d=a+56|0;c=f[d>>2]|0;if((c|0)==(f[a+60>>2]|0))Ii(a+52|0,b);else{f[c>>2]=f[b>>2];f[d>>2]=c+4}q=a+88|0;f[q>>2]=0;g=f[a>>2]|0;d=f[b>>2]|0;c=d+1|0;if((d|0)>=0){c=((c|0)%3|0|0)==0?d+-2|0:c;if((c|0)<0)e=-1073741824;else e=f[(f[g>>2]|0)+(c<<2)>>2]|0;c=(((d>>>0)%3|0|0)==0?2:-1)+d|0;if((c|0)<0)i=-1073741824;else i=f[(f[g>>2]|0)+(c<<2)>>2]|0}else{i=-1073741824;e=-1073741824}p=a+24|0;c=f[p>>2]|0;g=c+(e>>>5<<2)|0;h=1<<(e&31);d=f[g>>2]|0;if(!(d&h)){f[g>>2]=d|h;f[j>>2]=e;c=f[b>>2]|0;d=c+1|0;if((c|0)>=0)c=((d|0)%3|0|0)==0?c+-2|0:d;f[k>>2]=c;f[t>>2]=f[j>>2];f[w>>2]=f[k>>2];tg(a+36|0,t,w);c=f[p>>2]|0}d=c+(i>>>5<<2)|0;e=1<<(i&31);c=f[d>>2]|0;if(!(c&e)){f[d>>2]=c|e;d=a+36|0;f[l>>2]=i;c=f[b>>2]|0;do if((c|0)>=0)if(!((c>>>0)%3|0)){c=c+2|0;break}else{c=c+-1|0;break}while(0);f[m>>2]=c;f[t>>2]=f[l>>2];f[w>>2]=f[m>>2];tg(d,t,w)}c=f[b>>2]|0;if((c|0)<0)e=-1073741824;else e=f[(f[f[a>>2]>>2]|0)+(c<<2)>>2]|0;d=(f[p>>2]|0)+(e>>>5<<2)|0;g=1<<(e&31);c=f[d>>2]|0;if(!(g&c)){f[d>>2]=c|g;f[n>>2]=e;f[o>>2]=f[b>>2];f[t>>2]=f[n>>2];f[w>>2]=f[o>>2];tg(a+36|0,t,w)}c=f[q>>2]|0;a:do if((c|0)<3){m=a+12|0;n=a+36|0;l=a+92|0;while(1){while(1){e=a+52+(c*12|0)+4|0;d=f[e>>2]|0;if((f[a+52+(c*12|0)>>2]|0)!=(d|0))break;c=c+1|0;if((c|0)>=3)break a}o=d+-4|0;g=f[o>>2]|0;f[e>>2]=o;f[q>>2]=c;f[b>>2]=g;if((g|0)<=-1)break;o=(g>>>0)/3|0;d=f[m>>2]|0;do if(!(f[d+(o>>>5<<2)>>2]&1<<(o&31))){c=g;b:while(1){o=(c|0)/3|0;d=d+(o>>>5<<2)|0;f[d>>2]=1<<(o&31)|f[d>>2];d=f[b>>2]|0;if((d|0)<0)g=-1073741824;else g=f[(f[f[a>>2]>>2]|0)+(d<<2)>>2]|0;e=(f[p>>2]|0)+(g>>>5<<2)|0;h=1<<(g&31);c=f[e>>2]|0;if(!(h&c)){f[e>>2]=c|h;f[s>>2]=g;f[v>>2]=f[b>>2];f[t>>2]=f[s>>2];f[w>>2]=f[v>>2];tg(n,t,w);d=f[b>>2]|0}h=f[a>>2]|0;if((d|0)<0){r=69;break}c=d+1|0;c=((c|0)%3|0|0)==0?d+-2|0:c;if((c|0)<0)k=c;else k=f[(f[h+12>>2]|0)+(c<<2)>>2]|0;c=(((d>>>0)%3|0|0)==0?2:-1)+d|0;if((c|0)>=0)c=f[(f[h+12>>2]|0)+(c<<2)>>2]|0;j=(k|0)<0;d=j?-1:(k>>>0)/3|0;e=(c|0)<0;g=e?-1:(c>>>0)/3|0;if(j)i=1;else i=(f[(f[m>>2]|0)+(d>>>5<<2)>>2]&1<<(d&31)|0)!=0;do if(e)if(i){r=69;break b}else r=58;else{if(f[(f[m>>2]|0)+(g>>>5<<2)>>2]&1<<(g&31)|0)if(i){r=69;break b}else{r=58;break}d=f[(f[h>>2]|0)+(c<<2)>>2]|0;if(!(1<<(d&31)&f[(f[p>>2]|0)+(d>>>5<<2)>>2])){o=(f[l>>2]|0)+(d<<2)|0;g=f[o>>2]|0;f[o>>2]=g+1;g=(g|0)>0?1:2}else g=0;if(i?(g|0)<=(f[q>>2]|0):0)break;f[w>>2]=c;e=a+52+(g*12|0)+4|0;d=f[e>>2]|0;if((d|0)==(f[a+52+(g*12|0)+8>>2]|0))Ii(a+52+(g*12|0)|0,w);else{f[d>>2]=c;f[e>>2]=d+4}if((f[q>>2]|0)>(g|0))f[q>>2]=g;if(i){r=69;break b}else r=58}while(0);if((r|0)==58){r=0;if(j)c=-1073741824;else c=f[(f[f[a>>2]>>2]|0)+(k<<2)>>2]|0;if(!(1<<(c&31)&f[(f[p>>2]|0)+(c>>>5<<2)>>2])){o=(f[l>>2]|0)+(c<<2)|0;e=f[o>>2]|0;f[o>>2]=e+1;e=(e|0)>0?1:2}else e=0;if((e|0)>(f[q>>2]|0))break;else c=k}f[b>>2]=c;d=f[m>>2]|0}if((r|0)==69){r=0;c=f[q>>2]|0;break}f[w>>2]=k;d=a+52+(e*12|0)+4|0;c=f[d>>2]|0;if((c|0)==(f[a+52+(e*12|0)+8>>2]|0))Ii(a+52+(e*12|0)|0,w);else{f[c>>2]=k;f[d>>2]=c+4}c=f[q>>2]|0;if((c|0)>(e|0)){f[q>>2]=e;c=e}}while(0);if((c|0)>=3)break a}u=x;return}while(0);f[b>>2]=-1073741824;u=x;return}function Pb(a,b,c,d){a=a|0;b=b|0;c=c|0;d=d|0;var e=0,g=0,h=0,i=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,v=0,w=0,x=0,y=0,z=0,A=0,B=0,C=0,D=0,E=0,F=0,G=0,H=0,J=0;D=u;u=u+80|0;z=D+48|0;r=D+24|0;s=D;g=a+32|0;e=f[b>>2]|0;b=e+1|0;do if((e|0)>=0){b=((b|0)%3|0|0)==0?e+-2|0:b;if(!((e>>>0)%3|0)){e=e+2|0;break}else{e=e+-1|0;break}}else b=e;while(0);l=f[(f[g>>2]|0)+28>>2]|0;k=f[l+(b<<2)>>2]|0;l=f[l+(e<<2)>>2]|0;e=a+36|0;g=f[e>>2]|0;b=f[g+4>>2]|0;j=f[g>>2]|0;if(b-j>>2>>>0>k>>>0){h=b;i=g;e=j;b=j}else{Kp(g);b=f[e>>2]|0;h=f[b+4>>2]|0;i=b;e=f[g>>2]|0;b=f[b>>2]|0}y=f[e+(k<<2)>>2]|0;if(h-b>>2>>>0<=l>>>0){Kp(i);b=f[i>>2]|0}b=f[b+(l<<2)>>2]|0;m=(y|0)<(d|0);do if(m&(b|0)<(d|0)){p=y<<1;n=f[c+(p<<2)>>2]|0;o=((n|0)<0)<<31>>31;p=f[c+((p|1)<<2)>>2]|0;q=((p|0)<0)<<31>>31;l=b<<1;k=f[c+(l<<2)>>2]|0;l=f[c+((l|1)<<2)>>2]|0;if(!((k|0)!=(n|0)|(l|0)!=(p|0))){f[a+8>>2]=n;f[a+12>>2]=p;u=D;return}Tg(z,a,d);Tg(r,a,y);Tg(s,a,b);t=s;h=r;g=f[h>>2]|0;h=f[h+4>>2]|0;t=Xn(f[t>>2]|0,f[t+4>>2]|0,g|0,h|0)|0;v=I;w=s+8|0;j=r+8|0;i=f[j>>2]|0;j=f[j+4>>2]|0;w=Xn(f[w>>2]|0,f[w+4>>2]|0,i|0,j|0)|0;x=I;s=s+16|0;e=r+16|0;b=f[e>>2]|0;e=f[e+4>>2]|0;r=Xn(f[s>>2]|0,f[s+4>>2]|0,b|0,e|0)|0;s=I;B=kn(t|0,v|0,t|0,v|0)|0;E=I;A=kn(w|0,x|0,w|0,x|0)|0;E=Ho(A|0,I|0,B|0,E|0)|0;B=I;A=kn(r|0,s|0,r|0,s|0)|0;A=Ho(E|0,B|0,A|0,I|0)|0;B=I;if((A|0)==0&(B|0)==0)break;J=z;J=Xn(f[J>>2]|0,f[J+4>>2]|0,g|0,h|0)|0;H=I;G=z+8|0;G=Xn(f[G>>2]|0,f[G+4>>2]|0,i|0,j|0)|0;F=I;g=z+16|0;g=Xn(f[g>>2]|0,f[g+4>>2]|0,b|0,e|0)|0;h=I;E=kn(J|0,H|0,t|0,v|0)|0;b=I;j=kn(G|0,F|0,w|0,x|0)|0;b=Ho(j|0,I|0,E|0,b|0)|0;E=I;j=kn(g|0,h|0,r|0,s|0)|0;j=Ho(b|0,E|0,j|0,I|0)|0;E=I;b=Xn(k|0,((k|0)<0)<<31>>31|0,n|0,o|0)|0;k=I;y=Xn(l|0,((l|0)<0)<<31>>31|0,p|0,q|0)|0;d=I;n=kn(A|0,B|0,n|0,o|0)|0;m=I;p=kn(A|0,B|0,p|0,q|0)|0;o=I;c=kn(j|0,E|0,b|0,k|0)|0;z=I;i=kn(j|0,E|0,y|0,d|0)|0;l=I;m=Ho(c|0,z|0,n|0,m|0)|0;n=I;o=Ho(i|0,l|0,p|0,o|0)|0;p=I;l=kn(j|0,E|0,t|0,v|0)|0;i=I;z=kn(j|0,E|0,w|0,x|0)|0;c=I;E=kn(j|0,E|0,r|0,s|0)|0;j=I;i=pk(l|0,i|0,A|0,B|0)|0;l=I;c=pk(z|0,c|0,A|0,B|0)|0;z=I;j=pk(E|0,j|0,A|0,B|0)|0;E=I;l=Xn(J|0,H|0,i|0,l|0)|0;i=I;z=Xn(G|0,F|0,c|0,z|0)|0;c=I;E=Xn(g|0,h|0,j|0,E|0)|0;j=I;i=kn(l|0,i|0,l|0,i|0)|0;l=I;c=kn(z|0,c|0,z|0,c|0)|0;l=Ho(c|0,I|0,i|0,l|0)|0;i=I;j=kn(E|0,j|0,E|0,j|0)|0;j=Ho(l|0,i|0,j|0,I|0)|0;i=I;k=Xn(0,0,b|0,k|0)|0;l=I;i=kn(j|0,i|0,A|0,B|0)|0;j=I;b=j&2147483647;switch(i|0){case 0:{if(!b){e=0;b=0}else{e=1;b=0;g=i;h=j;C=18}break}case 1:{if(!b){e=1;b=0;C=19}else{e=1;b=0;g=i;h=j;C=18}break}default:{e=1;b=0;g=i;h=j;C=18}}if((C|0)==18)while(1){e=On(e|0,b|0,1)|0;b=I;J=g;g=Tn(g|0,h|0,2)|0;if(!(h>>>0>0|(h|0)==0&J>>>0>7)){C=19;break}else{h=I;C=18}}if((C|0)==19)while(1){J=Dp(i|0,j|0,e|0,b|0)|0;e=Ho(J|0,I|0,e|0,b|0)|0;e=Tn(e|0,I|0,1)|0;b=I;J=kn(e|0,b|0,e|0,b|0)|0;H=I;if(H>>>0>j>>>0|(H|0)==(j|0)&J>>>0>i>>>0)C=19;else break}E=kn(e|0,b|0,y|0,d|0)|0;F=I;C=kn(e|0,b|0,k|0,l|0)|0;G=I;H=a+20|0;c=(f[H>>2]|0)+-1|0;J=(1<<(c&31)&f[(f[a+16>>2]|0)+(c>>>5<<2)>>2]|0)!=0;f[H>>2]=c;H=Xn(0,0,E|0,F|0)|0;F=Ho(m|0,n|0,(J?E:H)|0,(J?F:I)|0)|0;H=I;E=Xn(0,0,C|0,G|0)|0;G=Ho(o|0,p|0,(J?C:E)|0,(J?G:I)|0)|0;J=I;H=pk(F|0,H|0,A|0,B|0)|0;J=pk(G|0,J|0,A|0,B|0)|0;f[a+8>>2]=H;f[a+12>>2]=J;u=D;return}while(0);do if(m)b=y<<1;else{if((d|0)>0){b=(d<<1)+-2|0;break}J=a+8|0;f[J>>2]=0;f[J+4>>2]=0;u=D;return}while(0);f[a+8>>2]=f[c+(b<<2)>>2];f[a+12>>2]=f[c+(b+1<<2)>>2];u=D;return}function Qb(a,c,d){a=a|0;c=c|0;d=d|0;var e=0,g=0,i=La,j=0,k=La,l=0,m=0,o=0,p=0,q=0,r=0,s=0,t=0,v=0,w=0,x=0,y=0,z=0,A=0,B=La;A=u;u=u+48|0;y=A+24|0;z=A;e=sd(a,c)|0;if(e|0){f[z>>2]=e;f[y>>2]=f[z>>2];Vf(a,y)|0}ml(z,c);c=z+12|0;f[c>>2]=0;x=z+16|0;f[x>>2]=0;f[z+20>>2]=0;j=d+4|0;g=(f[j>>2]|0)-(f[d>>2]|0)|0;if(g){if((g|0)<0)Lp(c);e=ln(g)|0;f[x>>2]=e;f[c>>2]=e;f[z+20>>2]=e+g;g=f[d>>2]|0;c=(f[j>>2]|0)-g|0;if((c|0)>0){Mg(e|0,g|0,c|0)|0;f[x>>2]=e+c}}else e=0;s=b[z+11>>0]|0;v=s<<24>>24<0;t=v?f[z>>2]|0:z;s=v?f[z+4>>2]|0:s&255;if(s>>>0>3){g=t;c=s;j=s;while(1){v=X(h[g>>0]|h[g+1>>0]<<8|h[g+2>>0]<<16|h[g+3>>0]<<24,1540483477)|0;c=(X(v>>>24^v,1540483477)|0)^(X(c,1540483477)|0);j=j+-4|0;if(j>>>0<=3)break;else g=g+4|0}v=s+-4|0;g=v&-4;j=t+(g+4)|0;g=v-g|0}else{j=t;c=s;g=s}switch(g|0){case 3:{c=h[j+2>>0]<<16^c;w=13;break}case 2:{w=13;break}case 1:{w=14;break}default:{}}if((w|0)==13){c=h[j+1>>0]<<8^c;w=14}if((w|0)==14)c=X(h[j>>0]^c,1540483477)|0;v=X(c>>>13^c,1540483477)|0;v=v>>>15^v;q=a+4|0;j=f[q>>2]|0;r=(j|0)==0;a:do if(!r){p=j+-1|0;d=(p&j|0)==0;if(d)c=v&p;else c=(v>>>0)%(j>>>0)|0;g=f[(f[a>>2]|0)+(c<<2)>>2]|0;if((g|0)!=0?(o=f[g>>2]|0,(o|0)!=0):0){g=(s|0)==0;if(d){if(g){g=o;while(1){if((f[g+4>>2]&p|0)!=(c|0)){w=48;break a}t=b[g+8+11>>0]|0;if(!((t<<24>>24<0?f[g+12>>2]|0:t&255)|0))break a;g=f[g>>2]|0;if(!g){w=48;break a}}}while(1){if((f[o+4>>2]&p|0)!=(c|0)){w=48;break a}g=o+8|0;l=b[g+11>>0]|0;m=l<<24>>24<0;l=l&255;do if(((m?f[o+12>>2]|0:l)|0)==(s|0)){d=f[g>>2]|0;if(m)if(!(rl(d,t,s)|0))break a;else break;if((d&255)<<24>>24==(b[t>>0]|0)){d=t;do{l=l+-1|0;g=g+1|0;if(!l)break a;d=d+1|0}while((b[g>>0]|0)==(b[d>>0]|0))}}while(0);o=f[o>>2]|0;if(!o){w=48;break}}}else{if(g){g=o;while(1){if((((f[g+4>>2]|0)>>>0)%(j>>>0)|0|0)!=(c|0)){w=48;break a}t=b[g+8+11>>0]|0;if(!((t<<24>>24<0?f[g+12>>2]|0:t&255)|0))break a;g=f[g>>2]|0;if(!g){w=48;break a}}}while(1){if((((f[o+4>>2]|0)>>>0)%(j>>>0)|0|0)!=(c|0)){w=48;break a}g=o+8|0;l=b[g+11>>0]|0;m=l<<24>>24<0;l=l&255;do if(((m?f[o+12>>2]|0:l)|0)==(s|0)){d=f[g>>2]|0;if(m)if(!(rl(d,t,s)|0))break a;else break;if((d&255)<<24>>24==(b[t>>0]|0)){d=t;do{l=l+-1|0;g=g+1|0;if(!l)break a;d=d+1|0}while((b[g>>0]|0)==(b[d>>0]|0))}}while(0);o=f[o>>2]|0;if(!o){w=48;break}}}}else w=48}else{c=0;w=48}while(0);if((w|0)==48){Xh(y,a,v,z);d=a+12|0;k=$(((f[d>>2]|0)+1|0)>>>0);B=$(j>>>0);i=$(n[a+16>>2]);do if(r|k>$(B*i)){e=(j>>>0<3|(j+-1&j|0)!=0)&1|j<<1;c=~~$(W($(k/i)))>>>0;Zh(a,e>>>0>>0?c:e);e=f[q>>2]|0;c=e+-1|0;if(!(c&e)){j=e;c=c&v;break}else{j=e;c=(v>>>0)%(e>>>0)|0;break}}while(0);e=f[(f[a>>2]|0)+(c<<2)>>2]|0;if(!e){g=a+8|0;f[f[y>>2]>>2]=f[g>>2];f[g>>2]=f[y>>2];f[(f[a>>2]|0)+(c<<2)>>2]=g;g=f[y>>2]|0;e=f[g>>2]|0;if(!e)e=y;else{e=f[e+4>>2]|0;c=j+-1|0;if(!(c&j))e=e&c;else e=(e>>>0)%(j>>>0)|0;f[(f[a>>2]|0)+(e<<2)>>2]=g;e=y}}else{f[f[y>>2]>>2]=f[e>>2];f[e>>2]=f[y>>2];e=y}f[d>>2]=(f[d>>2]|0)+1;f[e>>2]=0;e=f[z+12>>2]|0}if(!e){Lo(z);u=A;return}if((f[x>>2]|0)!=(e|0))f[x>>2]=e;ar(e);Lo(z);u=A;return}function Rb(a,c,e){a=a|0;c=c|0;e=e|0;var g=0,i=0,j=0,k=0,l=0,m=0,o=La,p=La,q=0,r=0,s=0,t=0,v=0,w=0,x=0,y=0,z=0,A=0,B=0,C=0,D=0,E=0,F=0,G=0,H=0,J=0,K=0,L=0,M=0,N=0,O=0,P=0,Q=0,R=0,S=0,T=0,U=La;T=u;u=u+48|0;S=T+28|0;N=T+8|0;O=T;R=T+16|0;L=S+16|0;f[S>>2]=0;f[S+4>>2]=0;f[S+8>>2]=0;f[S+12>>2]=0;n[L>>2]=$(1.0);Q=a+80|0;Dk(R,f[Q>>2]|0);i=f[Q>>2]|0;if((i|0)>0){B=f[e>>2]|0;G=c+48|0;H=c+40|0;E=S+4|0;F=S+12|0;D=S+8|0;J=a+40|0;C=a+64|0;K=0;z=0;while(1){w=B+K|0;y=G;x=f[y>>2]|0;y=f[y+4>>2]|0;e=H;e=kn(w|0,((w|0)<0)<<31>>31|0,f[e>>2]|0,f[e+4>>2]|0)|0;y=Ho(e|0,I|0,x|0,y|0)|0;y=(f[f[c>>2]>>2]|0)+y|0;x=y;x=h[x>>0]|h[x+1>>0]<<8|h[x+2>>0]<<16|h[x+3>>0]<<24;y=y+4|0;y=h[y>>0]|h[y+1>>0]<<8|h[y+2>>0]<<16|h[y+3>>0]<<24;e=N;f[e>>2]=x;f[e+4>>2]=y;e=O;f[e>>2]=x;f[e+4>>2]=y;e=dg(S,O)|0;if(!e){t=O;s=f[t>>2]|0;t=f[t+4>>2]|0;l=s&65535;y=Tn(s|0,t|0,16)|0;m=y&65535;q=t&65535;v=Tn(s|0,t|0,48)|0;w=I;r=v&65535;y=((((l^318)&65535)+239^y&65535)+239^t&65535)+239^v;i=f[E>>2]|0;x=(i|0)==0;a:do if(!x){k=i+-1|0;j=(k&i|0)==0;if(j)e=y&k;else e=(y>>>0)%(i>>>0)|0;g=f[(f[S>>2]|0)+(e<<2)>>2]|0;if((g|0)!=0?(M=f[g>>2]|0,(M|0)!=0):0)if(j){g=M;while(1){if((f[g+4>>2]&k|0)!=(e|0)){A=25;break a}if((((d[g+8>>1]|0)==l<<16>>16?(d[g+10>>1]|0)==m<<16>>16:0)?(d[g+12>>1]|0)==q<<16>>16:0)?(d[g+14>>1]|0)==r<<16>>16:0)break a;g=f[g>>2]|0;if(!g){A=25;break}}}else{g=M;while(1){if((((f[g+4>>2]|0)>>>0)%(i>>>0)|0|0)!=(e|0)){A=25;break a}if((((d[g+8>>1]|0)==l<<16>>16?(d[g+10>>1]|0)==m<<16>>16:0)?(d[g+12>>1]|0)==q<<16>>16:0)?(d[g+14>>1]|0)==r<<16>>16:0)break a;g=f[g>>2]|0;if(!g){A=25;break}}}else A=25}else{e=0;A=25}while(0);if((A|0)==25){A=0;j=ln(20)|0;v=On(v|0,w|0,48)|0;s=s|v;v=t&65535|I;w=j+8|0;t=w;d[t>>1]=s;d[t+2>>1]=s>>>16;w=w+4|0;d[w>>1]=v;d[w+2>>1]=v>>>16;f[j+16>>2]=z;f[j+4>>2]=y;f[j>>2]=0;p=$(((f[F>>2]|0)+1|0)>>>0);U=$(i>>>0);o=$(n[L>>2]);do if(x|p>$(U*o)){e=(i>>>0<3|(i+-1&i|0)!=0)&1|i<<1;g=~~$(W($(p/o)))>>>0;Lh(S,e>>>0>>0?g:e);e=f[E>>2]|0;g=e+-1|0;if(!(g&e)){i=e;e=g&y;break}else{i=e;e=(y>>>0)%(e>>>0)|0;break}}while(0);g=(f[S>>2]|0)+(e<<2)|0;e=f[g>>2]|0;if(!e){f[j>>2]=f[D>>2];f[D>>2]=j;f[g>>2]=D;e=f[j>>2]|0;if(e|0){e=f[e+4>>2]|0;g=i+-1|0;if(!(g&i))e=e&g;else e=(e>>>0)%(i>>>0)|0;e=(f[S>>2]|0)+(e<<2)|0;A=36}}else{f[j>>2]=f[e>>2];A=36}if((A|0)==36){A=0;f[e>>2]=j}f[F>>2]=(f[F>>2]|0)+1}y=J;e=f[y>>2]|0;y=kn(e|0,f[y+4>>2]|0,z|0,((z|0)<0)<<31>>31|0)|0;Mg((f[f[C>>2]>>2]|0)+y|0,N|0,e|0)|0;f[(f[R>>2]|0)+(K<<2)>>2]=z;e=z+1|0}else{f[(f[R>>2]|0)+(K<<2)>>2]=f[e+16>>2];e=z}K=K+1|0;i=f[Q>>2]|0;if((K|0)>=(i|0)){q=e;break}else z=e}}else q=0;if((q|0)!=(i|0)){m=a+84|0;if(!(b[m>>0]|0)){i=f[a+68>>2]|0;e=(f[a+72>>2]|0)-i|0;if((e|0)>0){j=f[R>>2]|0;g=e>>2;e=0;do{a=i+(e<<2)|0;f[a>>2]=f[j+(f[a>>2]<<2)>>2];e=e+1|0}while((e|0)<(g|0))}}else{b[m>>0]=0;k=a+68|0;j=a+72|0;g=f[j>>2]|0;e=f[k>>2]|0;l=g-e>>2;if(i>>>0<=l>>>0){if(i>>>0>>0?(P=e+(i<<2)|0,(g|0)!=(P|0)):0)f[j>>2]=g+(~((g+-4-P|0)>>>2)<<2)}else{ch(k,i-l|0,1416);i=f[Q>>2]|0}if((i|0)>0){j=f[R>>2]|0;if(b[m>>0]|0)Ga(18230,18249,91,18290);e=f[a+68>>2]|0;g=0;do{f[e+(g<<2)>>2]=f[j+(g<<2)>>2];g=g+1|0}while((g|0)<(i|0))}}f[Q>>2]=q}i=f[R>>2]|0;if(i|0){g=R+4|0;e=f[g>>2]|0;if((e|0)!=(i|0))f[g>>2]=e+(~((e+-4-i|0)>>>2)<<2);ar(i)}e=f[S+8>>2]|0;if(e|0)do{R=e;e=f[e>>2]|0;ar(R)}while((e|0)!=0);e=f[S>>2]|0;f[S>>2]=0;if(!e){u=T;return q|0}ar(e);u=T;return q|0}function Sb(a,c){a=a|0;c=c|0;var d=0,e=0,g=0,i=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,v=0,w=0,x=0,y=0,z=0,A=0,B=0,C=0,D=0;C=u;u=u+32|0;w=C+20|0;B=C+8|0;A=C+4|0;z=C;x=a+4|0;do if((h[(f[x>>2]|0)+36>>0]<<8&65535)<512){t=c+8|0;v=f[t>>2]|0;t=f[t+4>>2]|0;i=c+16|0;e=i;d=f[e>>2]|0;e=Ho(d|0,f[e+4>>2]|0,4,0)|0;g=I;if((t|0)<(g|0)|(t|0)==(g|0)&v>>>0>>0){B=-1;u=C;return B|0}else{d=(f[c>>2]|0)+d|0;d=h[d>>0]|h[d+1>>0]<<8|h[d+2>>0]<<16|h[d+3>>0]<<24;f[w>>2]=d;v=i;f[v>>2]=e;f[v+4>>2]=g;break}}else if(yj(w,c)|0){d=f[w>>2]|0;break}else{B=-1;u=C;return B|0}while(0);a:do if(d|0){v=f[x>>2]|0;if(((h[v+36>>0]<<8|h[v+37>>0])&65535)<=257){q=c+8|0;r=c+16|0;t=B+4|0;s=B+8|0;o=a+40|0;p=a+44|0;v=a+36|0;n=0;while(1){j=q;i=f[j>>2]|0;j=f[j+4>>2]|0;l=r;k=f[l>>2]|0;l=f[l+4>>2]|0;e=Ho(k|0,l|0,4,0)|0;g=I;if((j|0)<(g|0)|(j|0)==(g|0)&i>>>0>>0)break;m=f[c>>2]|0;D=m+k|0;f[B>>2]=h[D>>0]|h[D+1>>0]<<8|h[D+2>>0]<<16|h[D+3>>0]<<24;D=r;f[D>>2]=e;f[D+4>>2]=g;g=Ho(k|0,l|0,8,0)|0;D=I;if((j|0)<(D|0)|(j|0)==(D|0)&i>>>0>>0)break;e=m+e|0;f[t>>2]=h[e>>0]|h[e+1>>0]<<8|h[e+2>>0]<<16|h[e+3>>0]<<24;e=Ho(k|0,l|0,8,0)|0;D=I;g=r;f[g>>2]=e;f[g+4>>2]=D;if(!((j|0)>(D|0)|(j|0)==(D|0)&i>>>0>e>>>0))break;e=b[m+e>>0]|0;m=Ho(k|0,l|0,9,0)|0;D=r;f[D>>2]=m;f[D+4>>2]=I;b[s>>0]=e&3|b[s>>0]&-4;e=f[o>>2]|0;if((e|0)==(f[p>>2]|0)){pi(v,B);d=f[w>>2]|0}else{f[e>>2]=f[B>>2];f[e+4>>2]=f[B+4>>2];f[e+8>>2]=f[B+8>>2];f[o>>2]=(f[o>>2]|0)+12}n=n+1|0;if(n>>>0>=d>>>0)break a}D=-1;u=C;return D|0}k=B+4|0;e=a+40|0;g=a+44|0;l=a+36|0;i=0;j=0;do{yj(A,c)|0;f[k>>2]=(f[A>>2]|0)+j;yj(A,c)|0;j=f[k>>2]|0;f[B>>2]=j-(f[A>>2]|0);d=f[e>>2]|0;if((d|0)==(f[g>>2]|0))pi(l,B);else{f[d>>2]=f[B>>2];f[d+4>>2]=f[B+4>>2];f[d+8>>2]=f[B+8>>2];f[e>>2]=(f[e>>2]|0)+12}i=i+1|0}while(i>>>0<(f[w>>2]|0)>>>0);Ug(c,0,0)|0;k=f[w>>2]|0;if(k|0){o=c+36|0;l=a+36|0;p=c+32|0;m=c+24|0;n=c+28|0;d=0;q=0;do{if(b[o>>0]|0){d=f[p>>2]|0;g=f[m>>2]|0;j=f[n>>2]|0;e=g+(d>>>3)|0;if(e>>>0>>0){i=(h[e>>0]|0)>>>(d&7)&1;d=d+1|0;f[p>>2]=d}else i=0;e=g+(d>>>3)|0;if(e>>>0>>0){D=(h[e>>0]|0)>>>(d&7)&1;f[p>>2]=d+1;d=D}else d=0;d=d<<1|i}D=(f[l>>2]|0)+(q*12|0)+8|0;b[D>>0]=d&3|b[D>>0]&-4;q=q+1|0}while(q>>>0>>0)}hm(c)}while(0);if((h[(f[x>>2]|0)+36>>0]<<8&65535)<512){w=c+8|0;D=f[w>>2]|0;w=f[w+4>>2]|0;i=c+16|0;e=i;d=f[e>>2]|0;e=Ho(d|0,f[e+4>>2]|0,4,0)|0;g=I;if((w|0)<(g|0)|(w|0)==(g|0)&D>>>0>>0)d=-1;else{d=(f[c>>2]|0)+d|0;d=h[d>>0]|h[d+1>>0]<<8|h[d+2>>0]<<16|h[d+3>>0]<<24;f[B>>2]=d;y=i;f[y>>2]=e;f[y+4>>2]=g;y=35}}else if(yj(B,c)|0){d=f[B>>2]|0;y=35}else d=-1;b:do if((y|0)==35){c:do if(d|0){D=f[x>>2]|0;if(((h[D+36>>0]<<8|h[D+37>>0])&65535)>257){j=a+52|0;k=a+56|0;e=a+48|0;g=0;i=0;while(1){f[A>>2]=0;yj(z,c)|0;i=(f[z>>2]|0)+i|0;f[A>>2]=i;d=f[j>>2]|0;if((d|0)==(f[k>>2]|0))Ii(e,A);else{f[d>>2]=i;f[j>>2]=d+4}g=g+1|0;if(g>>>0>=(f[B>>2]|0)>>>0)break c}}n=c+8|0;o=c+16|0;l=a+52|0;m=a+56|0;j=a+48|0;k=0;while(1){f[A>>2]=0;a=n;D=f[a>>2]|0;a=f[a+4>>2]|0;e=o;d=f[e>>2]|0;e=Ho(d|0,f[e+4>>2]|0,4,0)|0;g=I;if((a|0)<(g|0)|(a|0)==(g|0)&D>>>0>>0)break;i=(f[c>>2]|0)+d|0;i=h[i>>0]|h[i+1>>0]<<8|h[i+2>>0]<<16|h[i+3>>0]<<24;f[A>>2]=i;d=o;f[d>>2]=e;f[d+4>>2]=g;d=f[l>>2]|0;if((d|0)==(f[m>>2]|0))Ii(j,A);else{f[d>>2]=i;f[l>>2]=d+4}k=k+1|0;if(k>>>0>=(f[B>>2]|0)>>>0)break c}d=-1;break b}while(0);d=f[c+16>>2]|0}while(0);D=d;u=C;return D|0}function Tb(a,c){a=a|0;c=c|0;var d=0,e=0,g=0,i=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,v=0,w=0,x=0,y=0,z=0,A=0;A=u;u=u+176|0;s=A+136|0;w=A+32|0;v=A;t=A+104|0;x=A+100|0;y=a+4|0;q=f[y>>2]|0;d=f[q+32>>2]|0;o=d+8|0;n=f[o>>2]|0;o=f[o+4>>2]|0;p=d+16|0;l=p;k=f[l>>2]|0;l=f[l+4>>2]|0;if(!((o|0)>(l|0)|(o|0)==(l|0)&n>>>0>k>>>0)){c=0;u=A;return c|0}j=f[d>>2]|0;r=b[j+k>>0]|0;d=Ho(k|0,l|0,1,0)|0;m=I;i=p;f[i>>2]=d;f[i+4>>2]=m;if(!((o|0)>(m|0)|(o|0)==(m|0)&n>>>0>d>>>0)){c=0;u=A;return c|0}m=b[j+d>>0]|0;d=Ho(k|0,l|0,2,0)|0;e=I;i=p;f[i>>2]=d;f[i+4>>2]=e;do if(r<<24>>24>-1){i=r<<24>>24;g=f[a+228>>2]|0;if(i>>>0<(((f[a+232>>2]|0)-g|0)/116|0)>>>0){f[g+(i*116|0)>>2]=c;break}else{c=0;u=A;return c|0}}while(0);do if((((h[q+36>>0]|0)<<8|(h[q+37>>0]|0))&65535)>257)if((o|0)>(e|0)|(o|0)==(e|0)&n>>>0>d>>>0){e=b[j+d>>0]|0;o=Ho(k|0,l|0,3,0)|0;f[p>>2]=o;f[p+4>>2]=I;e=e&255;break}else{c=0;u=A;return c|0}else e=0;while(0);n=f[q+44>>2]|0;if(!(m<<24>>24)){if(r<<24>>24<0)d=a+200|0;else{d=r<<24>>24;w=f[a+228>>2]|0;b[w+(d*116|0)+72>>0]=0;d=w+(d*116|0)+76|0}switch((e&255)<<24>>24){case 0:{Dd(s,a,d);d=f[s>>2]|0;break}case 1:{$e(s,a,d);d=f[s>>2]|0;break}default:{c=0;u=A;return c|0}}if(!d){c=0;u=A;return c|0}}else{if(e|0){c=0;u=A;return c|0}j=r<<24>>24;if(r<<24>>24<0){c=0;u=A;return c|0}d=ln(88)|0;i=f[a+228>>2]|0;k=i+(j*116|0)+76|0;f[d+4>>2]=0;f[d>>2]=4636;l=d+12|0;f[l>>2]=4660;m=d+64|0;f[m>>2]=0;f[d+68>>2]=0;f[d+72>>2]=0;e=d+16|0;g=e+44|0;do{f[e>>2]=0;e=e+4|0}while((e|0)<(g|0));f[d+76>>2]=n;f[d+80>>2]=k;f[d+84>>2]=0;p=w+4|0;f[p>>2]=4660;o=w+56|0;f[o>>2]=0;q=w+60|0;f[q>>2]=0;f[w+64>>2]=0;e=w+8|0;g=e+44|0;do{f[e>>2]=0;e=e+4|0}while((e|0)<(g|0));g=i+(j*116|0)+4|0;f[v>>2]=4660;e=v+4|0;a=e+4|0;f[a>>2]=0;f[a+4>>2]=0;f[a+8>>2]=0;f[a+12>>2]=0;f[a+16>>2]=0;f[a+20>>2]=0;f[e>>2]=g;i=f[i+(j*116|0)+68>>2]|0;i=((f[i+4>>2]|0)-(f[i>>2]|0)>>2>>>0)/3|0;b[s>>0]=0;Yg(v+8|0,i,s);Pa[f[(f[v>>2]|0)+8>>2]&127](v);Hf(t,v);Hf(s,t);f[w>>2]=f[s+4>>2];i=w+4|0;mg(i,s)|0;f[s>>2]=4660;e=f[s+20>>2]|0;if(e|0)ar(e);e=f[s+8>>2]|0;if(e|0)ar(e);f[w+36>>2]=g;f[w+40>>2]=k;f[w+44>>2]=n;f[w+48>>2]=d;f[t>>2]=4660;e=f[t+20>>2]|0;if(e|0)ar(e);e=f[t+8>>2]|0;if(e|0)ar(e);f[d+8>>2]=f[w>>2];mg(l,i)|0;e=d+44|0;t=w+36|0;f[e>>2]=f[t>>2];f[e+4>>2]=f[t+4>>2];f[e+8>>2]=f[t+8>>2];f[e+12>>2]=f[t+12>>2];b[e+16>>0]=b[t+16>>0]|0;Mf(m,f[o>>2]|0,f[q>>2]|0);f[v>>2]=4660;e=f[v+20>>2]|0;if(e|0)ar(e);e=f[v+8>>2]|0;if(e|0)ar(e);e=f[o>>2]|0;if(e|0){g=f[q>>2]|0;if((g|0)!=(e|0))f[q>>2]=g+(~((g+-4-e|0)>>>2)<<2);ar(e)}f[p>>2]=4660;e=f[w+24>>2]|0;if(e|0)ar(e);e=f[w+12>>2]|0;if(e|0)ar(e)}l=ln(64)|0;f[x>>2]=d;ql(l,x);d=f[x>>2]|0;f[x>>2]=0;if(d|0)Pa[f[(f[d>>2]|0)+4>>2]&127](d);j=f[y>>2]|0;k=j+8|0;j=j+12|0;d=f[j>>2]|0;e=f[k>>2]|0;i=d-e>>2;do if((i|0)<=(c|0)){g=c+1|0;if(g>>>0>i>>>0){ig(k,g-i|0);break}if(g>>>0>>0?(z=e+(g<<2)|0,(d|0)!=(z|0)):0)do{y=d+-4|0;f[j>>2]=y;d=f[y>>2]|0;f[y>>2]=0;if(d|0)Pa[f[(f[d>>2]|0)+4>>2]&127](d);d=f[j>>2]|0}while((d|0)!=(z|0))}while(0);c=(f[k>>2]|0)+(c<<2)|0;d=f[c>>2]|0;f[c>>2]=l;if(!d){c=1;u=A;return c|0}Pa[f[(f[d>>2]|0)+4>>2]&127](d);c=1;u=A;return c|0}function Ub(a,c,d){a=a|0;c=c|0;d=d|0;var e=0,g=0,i=0,j=0,k=0,l=0,m=La,o=La,p=0,q=0,r=0,s=0,t=0,v=0,w=0,x=0,y=0,z=0,A=0,B=0,C=0,D=0,E=0,F=0,G=0,H=0,J=0,K=0,L=0,M=0,N=0,O=0,P=0,Q=0,R=0,S=0,T=La;S=u;u=u+48|0;R=S+20|0;M=S+16|0;N=S+12|0;Q=S;K=R+16|0;f[R>>2]=0;f[R+4>>2]=0;f[R+8>>2]=0;f[R+12>>2]=0;n[K>>2]=$(1.0);P=a+80|0;Dk(Q,f[P>>2]|0);g=f[P>>2]|0;if((g|0)>0){A=f[d>>2]|0;F=c+48|0;G=c+40|0;D=R+4|0;E=R+12|0;C=R+8|0;H=a+40|0;B=a+64|0;J=0;y=0;while(1){v=A+J|0;d=F;x=f[d>>2]|0;d=f[d+4>>2]|0;w=G;w=kn(v|0,((v|0)<0)<<31>>31|0,f[w>>2]|0,f[w+4>>2]|0)|0;d=Ho(w|0,I|0,x|0,d|0)|0;d=(f[f[c>>2]>>2]|0)+d|0;d=h[d>>0]|h[d+1>>0]<<8|h[d+2>>0]<<16|h[d+3>>0]<<24;f[M>>2]=d;f[N>>2]=d;d=fg(R,N)|0;if(!d){t=f[N>>2]|0;k=t&255;r=t>>>8;l=r&255;s=t>>>16;p=s&255;v=t>>>24;q=v&255;t=t&255;r=r&255;s=s&255;x=(((t^318)+239^r)+239^s)+239^v;g=f[D>>2]|0;w=(g|0)==0;a:do if(!w){j=g+-1|0;i=(j&g|0)==0;if(i)d=x&j;else d=(x>>>0)%(g>>>0)|0;e=f[(f[R>>2]|0)+(d<<2)>>2]|0;if((e|0)!=0?(L=f[e>>2]|0,(L|0)!=0):0)if(i){e=L;while(1){if((f[e+4>>2]&j|0)!=(d|0)){z=25;break a}if((((b[e+8>>0]|0)==k<<24>>24?(b[e+9>>0]|0)==l<<24>>24:0)?(b[e+10>>0]|0)==p<<24>>24:0)?(b[e+11>>0]|0)==q<<24>>24:0)break a;e=f[e>>2]|0;if(!e){z=25;break}}}else{e=L;while(1){if((((f[e+4>>2]|0)>>>0)%(g>>>0)|0|0)!=(d|0)){z=25;break a}if((((b[e+8>>0]|0)==k<<24>>24?(b[e+9>>0]|0)==l<<24>>24:0)?(b[e+10>>0]|0)==p<<24>>24:0)?(b[e+11>>0]|0)==q<<24>>24:0)break a;e=f[e>>2]|0;if(!e){z=25;break}}}else z=25}else{d=0;z=25}while(0);if((z|0)==25){z=0;i=ln(16)|0;q=i+8|0;v=v<<24|t|s<<16|r<<8;b[q>>0]=v;b[q+1>>0]=v>>8;b[q+2>>0]=v>>16;b[q+3>>0]=v>>24;f[i+12>>2]=y;f[i+4>>2]=x;f[i>>2]=0;o=$(((f[E>>2]|0)+1|0)>>>0);T=$(g>>>0);m=$(n[K>>2]);do if(w|o>$(T*m)){d=(g>>>0<3|(g+-1&g|0)!=0)&1|g<<1;e=~~$(W($(o/m)))>>>0;Sh(R,d>>>0>>0?e:d);d=f[D>>2]|0;e=d+-1|0;if(!(e&d)){g=d;d=e&x;break}else{g=d;d=(x>>>0)%(d>>>0)|0;break}}while(0);e=(f[R>>2]|0)+(d<<2)|0;d=f[e>>2]|0;if(!d){f[i>>2]=f[C>>2];f[C>>2]=i;f[e>>2]=C;d=f[i>>2]|0;if(d|0){d=f[d+4>>2]|0;e=g+-1|0;if(!(e&g))d=d&e;else d=(d>>>0)%(g>>>0)|0;d=(f[R>>2]|0)+(d<<2)|0;z=36}}else{f[i>>2]=f[d>>2];z=36}if((z|0)==36){z=0;f[d>>2]=i}f[E>>2]=(f[E>>2]|0)+1}x=H;d=f[x>>2]|0;x=kn(d|0,f[x+4>>2]|0,y|0,((y|0)<0)<<31>>31|0)|0;Mg((f[f[B>>2]>>2]|0)+x|0,M|0,d|0)|0;f[(f[Q>>2]|0)+(J<<2)>>2]=y;d=y+1|0}else{f[(f[Q>>2]|0)+(J<<2)>>2]=f[d+12>>2];d=y}J=J+1|0;g=f[P>>2]|0;if((J|0)>=(g|0)){p=d;break}else y=d}}else p=0;if((p|0)!=(g|0)){l=a+84|0;if(!(b[l>>0]|0)){g=f[a+68>>2]|0;d=(f[a+72>>2]|0)-g|0;if((d|0)>0){i=f[Q>>2]|0;e=d>>2;d=0;do{a=g+(d<<2)|0;f[a>>2]=f[i+(f[a>>2]<<2)>>2];d=d+1|0}while((d|0)<(e|0))}}else{b[l>>0]=0;j=a+68|0;i=a+72|0;e=f[i>>2]|0;d=f[j>>2]|0;k=e-d>>2;if(g>>>0<=k>>>0){if(g>>>0>>0?(O=d+(g<<2)|0,(e|0)!=(O|0)):0)f[i>>2]=e+(~((e+-4-O|0)>>>2)<<2)}else{ch(j,g-k|0,1416);g=f[P>>2]|0}if((g|0)>0){i=f[Q>>2]|0;if(b[l>>0]|0)Ga(18230,18249,91,18290);d=f[a+68>>2]|0;e=0;do{f[d+(e<<2)>>2]=f[i+(e<<2)>>2];e=e+1|0}while((e|0)<(g|0))}}f[P>>2]=p}g=f[Q>>2]|0;if(g|0){e=Q+4|0;d=f[e>>2]|0;if((d|0)!=(g|0))f[e>>2]=d+(~((d+-4-g|0)>>>2)<<2);ar(g)}d=f[R+8>>2]|0;if(d|0)do{Q=d;d=f[d>>2]|0;ar(Q)}while((d|0)!=0);d=f[R>>2]|0;f[R>>2]=0;if(!d){u=S;return p|0}ar(d);u=S;return p|0}function Vb(a,c){a=a|0;c=c|0;var d=0,e=0,g=0,i=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,v=0,w=0,x=0,y=0,z=0,A=0,B=0,C=0,D=0,E=0;D=u;u=u+736|0;C=D+720|0;s=D+16|0;B=D+72|0;r=D+64|0;v=D+56|0;w=D+48|0;x=D+40|0;y=D+32|0;z=D+24|0;A=D+8|0;t=D;e=Wa[f[(f[a>>2]|0)+20>>2]&127](a,0)|0;a=(Sa[f[(f[a>>2]|0)+28>>2]&255](a)|0)+4|0;a=f[a>>2]|0;if((e|0)<=-1)Ga(17188,17204,71,17242);d=f[a+8>>2]|0;if(((f[a+12>>2]|0)-d>>2|0)<=(e|0))Ga(17252,17204,72,17242);a=f[d+(e<<2)>>2]|0;b[a+84>>0]=1;d=f[a+68>>2]|0;g=a+72|0;e=f[g>>2]|0;if((e|0)!=(d|0))f[g>>2]=e+(~((e+-4-d|0)>>>2)<<2);m=c+8|0;l=f[m>>2]|0;m=f[m+4>>2]|0;o=c+16|0;k=o;j=f[k>>2]|0;k=f[k+4>>2]|0;if(!((m|0)>(k|0)|(m|0)==(k|0)&l>>>0>j>>>0)){C=0;u=D;return C|0}n=f[c>>2]|0;g=b[n+j>>0]|0;d=Ho(j|0,k|0,1,0)|0;e=I;E=o;f[E>>2]=d;f[E+4>>2]=e;switch(g<<24>>24){case 0:{if(((m|0)>(e|0)|(m|0)==(e|0)&l>>>0>d>>>0?(i=Ho(j|0,k|0,2,0)|0,p=o,f[p>>2]=i,f[p+4>>2]=I,p=Ho(j|0,k|0,6,0)|0,q=I,!((m|0)<(q|0)|(m|0)==(q|0)&l>>>0

>>0)):0)?(E=n+i|0,E=h[E>>0]|h[E+1>>0]<<8|h[E+2>>0]<<16|h[E+3>>0]<<24,A=o,f[A>>2]=p,f[A+4>>2]=q,oj(a,E)|0,Do(B),f[r>>2]=a,f[r+4>>2]=0,f[C>>2]=f[r>>2],f[C+4>>2]=f[r+4>>2],De(B,c,C)|0):0){E=1;u=D;return E|0}E=0;u=D;return E|0}case 1:{a:do if((m|0)>(e|0)|(m|0)==(e|0)&l>>>0>d>>>0){i=b[n+d>>0]|0;g=Ho(j|0,k|0,2,0)|0;E=o;f[E>>2]=g;f[E+4>>2]=I;if((i&255)>6){f[s>>2]=i&255;In(17306,s)|0;break}d=Ho(j|0,k|0,6,0)|0;e=I;if(!((m|0)<(e|0)|(m|0)==(e|0)&l>>>0>>0)){E=n+g|0;E=h[E>>0]|h[E+1>>0]<<8|h[E+2>>0]<<16|h[E+3>>0]<<24;s=o;f[s>>2]=d;f[s+4>>2]=e;oj(a,E)|0;switch(i<<24>>24){case 0:{$h(B,3);f[v>>2]=a;f[v+4>>2]=0;f[C>>2]=f[v>>2];f[C+4>>2]=f[v+4>>2];E=Ve(B,c,C)|0;Uf(B);if(E)a=1;else break a;u=D;return a|0}case 1:{$h(B,3);f[w>>2]=a;f[w+4>>2]=0;f[C>>2]=f[w>>2];f[C+4>>2]=f[w+4>>2];E=Ue(B,c,C)|0;Uf(B);if(E)a=1;else break a;u=D;return a|0}case 2:{ai(B,3);f[x>>2]=a;f[x+4>>2]=0;f[C>>2]=f[x>>2];f[C+4>>2]=f[x+4>>2];E=Xe(B,c,C)|0;Xf(B);if(E)a=1;else break a;u=D;return a|0}case 3:{ai(B,3);f[y>>2]=a;f[y+4>>2]=0;f[C>>2]=f[y>>2];f[C+4>>2]=f[y+4>>2];E=We(B,c,C)|0;Xf(B);if(E)a=1;else break a;u=D;return a|0}case 4:{Kh(B,3);f[z>>2]=a;f[z+4>>2]=0;f[C>>2]=f[z>>2];f[C+4>>2]=f[z+4>>2];E=we(B,c,C)|0;Jf(B);if(E)a=1;else break a;u=D;return a|0}case 5:{Kh(B,3);f[A>>2]=a;f[A+4>>2]=0;f[C>>2]=f[A>>2];f[C+4>>2]=f[A+4>>2];E=ve(B,c,C)|0;Jf(B);if(E)a=1;else break a;u=D;return a|0}case 6:{Kh(B,3);f[t>>2]=a;f[t+4>>2]=0;f[C>>2]=f[t>>2];f[C+4>>2]=f[t+4>>2];E=ue(B,c,C)|0;Jf(B);if(E)a=1;else break a;u=D;return a|0}default:break a}}}while(0);E=0;u=D;return E|0}default:{E=0;u=D;return E|0}}return 0}function Wb(a,c,d){a=a|0;c=c|0;d=d|0;var e=0,g=0,h=0,i=0,j=0,k=0,l=0,m=La,o=La,p=0,q=0,r=0,s=0,t=0,v=0,w=0,x=0,y=0,z=0,A=0,B=0,C=0,D=0,E=0,F=0,G=0,H=0,J=0,K=0,L=0,M=0,N=0,O=0,P=0,Q=0,R=La;Q=u;u=u+80|0;P=Q+48|0;K=Q+32|0;L=Q+16|0;O=Q;H=P+16|0;f[P>>2]=0;f[P+4>>2]=0;f[P+8>>2]=0;f[P+12>>2]=0;n[H>>2]=$(1.0);N=a+80|0;Dk(O,f[N>>2]|0);g=f[N>>2]|0;if((g|0)>0){v=f[d>>2]|0;A=c+48|0;B=c+40|0;E=L+4|0;F=L+8|0;G=L+12|0;y=P+4|0;z=P+12|0;x=P+8|0;C=a+40|0;w=a+64|0;D=0;s=0;while(1){g=v+D|0;d=A;e=f[d>>2]|0;d=f[d+4>>2]|0;h=B;g=kn(f[h>>2]|0,f[h+4>>2]|0,g|0,((g|0)<0)<<31>>31|0)|0;d=Ho(g|0,I|0,e|0,d|0)|0;d=(f[f[c>>2]>>2]|0)+d|0;e=K;g=d;h=e+16|0;do{b[e>>0]=b[g>>0]|0;e=e+1|0;g=g+1|0}while((e|0)<(h|0));rm(L|0,d|0,16)|0;d=jg(P,L)|0;if(!d){i=f[L>>2]|0;j=f[E>>2]|0;k=f[F>>2]|0;l=f[G>>2]|0;r=(((i^318)+239^j)+239^k)+239^l;p=f[y>>2]|0;q=(p|0)==0;a:do if(!q){h=p+-1|0;g=(h&p|0)==0;if(g)d=r&h;else d=(r>>>0)%(p>>>0)|0;e=f[(f[P>>2]|0)+(d<<2)>>2]|0;if((e|0)!=0?(J=f[e>>2]|0,(J|0)!=0):0)if(g){e=J;while(1){if((f[e+4>>2]&h|0)!=(d|0)){t=25;break a}if((((f[e+8>>2]|0)==(i|0)?(f[e+12>>2]|0)==(j|0):0)?(f[e+16>>2]|0)==(k|0):0)?(f[e+20>>2]|0)==(l|0):0)break a;e=f[e>>2]|0;if(!e){t=25;break}}}else{e=J;while(1){if((((f[e+4>>2]|0)>>>0)%(p>>>0)|0|0)!=(d|0)){t=25;break a}if((((f[e+8>>2]|0)==(i|0)?(f[e+12>>2]|0)==(j|0):0)?(f[e+16>>2]|0)==(k|0):0)?(f[e+20>>2]|0)==(l|0):0)break a;e=f[e>>2]|0;if(!e){t=25;break}}}else t=25}else{d=0;t=25}while(0);if((t|0)==25){t=0;h=ln(28)|0;f[h+8>>2]=i;f[h+12>>2]=j;f[h+16>>2]=k;f[h+20>>2]=l;f[h+24>>2]=s;f[h+4>>2]=r;f[h>>2]=0;o=$(((f[z>>2]|0)+1|0)>>>0);R=$(p>>>0);m=$(n[H>>2]);do if(q|o>$(R*m)){d=(p>>>0<3|(p+-1&p|0)!=0)&1|p<<1;e=~~$(W($(o/m)))>>>0;Ph(P,d>>>0>>0?e:d);d=f[y>>2]|0;e=d+-1|0;if(!(e&d)){g=d;d=e&r;break}else{g=d;d=(r>>>0)%(d>>>0)|0;break}}else g=p;while(0);e=(f[P>>2]|0)+(d<<2)|0;d=f[e>>2]|0;if(!d){f[h>>2]=f[x>>2];f[x>>2]=h;f[e>>2]=x;d=f[h>>2]|0;if(d|0){d=f[d+4>>2]|0;e=g+-1|0;if(!(e&g))d=d&e;else d=(d>>>0)%(g>>>0)|0;d=(f[P>>2]|0)+(d<<2)|0;t=36}}else{f[h>>2]=f[d>>2];t=36}if((t|0)==36){t=0;f[d>>2]=h}f[z>>2]=(f[z>>2]|0)+1}r=C;d=f[r>>2]|0;r=kn(d|0,f[r+4>>2]|0,s|0,((s|0)<0)<<31>>31|0)|0;Mg((f[f[w>>2]>>2]|0)+r|0,K|0,d|0)|0;f[(f[O>>2]|0)+(D<<2)>>2]=s;d=s+1|0}else{f[(f[O>>2]|0)+(D<<2)>>2]=f[d+24>>2];d=s}D=D+1|0;g=f[N>>2]|0;if((D|0)>=(g|0)){l=d;break}else s=d}}else l=0;if((l|0)!=(g|0)){k=a+84|0;if(!(b[k>>0]|0)){g=f[a+68>>2]|0;d=(f[a+72>>2]|0)-g|0;if((d|0)>0){h=f[O>>2]|0;e=d>>2;d=0;do{a=g+(d<<2)|0;f[a>>2]=f[h+(f[a>>2]<<2)>>2];d=d+1|0}while((d|0)<(e|0))}}else{b[k>>0]=0;i=a+68|0;h=a+72|0;e=f[h>>2]|0;d=f[i>>2]|0;j=e-d>>2;if(g>>>0<=j>>>0){if(g>>>0>>0?(M=d+(g<<2)|0,(e|0)!=(M|0)):0)f[h>>2]=e+(~((e+-4-M|0)>>>2)<<2)}else{ch(i,g-j|0,1416);g=f[N>>2]|0}if((g|0)>0){h=f[O>>2]|0;if(b[k>>0]|0)Ga(18230,18249,91,18290);d=f[a+68>>2]|0;e=0;do{f[d+(e<<2)>>2]=f[h+(e<<2)>>2];e=e+1|0}while((e|0)<(g|0))}}f[N>>2]=l}g=f[O>>2]|0;if(g|0){e=O+4|0;d=f[e>>2]|0;if((d|0)!=(g|0))f[e>>2]=d+(~((d+-4-g|0)>>>2)<<2);ar(g)}d=f[P+8>>2]|0;if(d|0)do{O=d;d=f[d>>2]|0;ar(O)}while((d|0)!=0);d=f[P>>2]|0;f[P>>2]=0;if(!d){u=Q;return l|0}ar(d);u=Q;return l|0}function Xb(a,b,c,d,e,g){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;g=g|0;var h=0,i=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,B=0,C=0,D=0,E=0,F=0,G=0,H=0;C=a+8|0;f[C>>2]=e;i=a+32|0;h=a+36|0;g=f[h>>2]|0;d=f[i>>2]|0;j=g-d>>2;if(j>>>0>=e>>>0){if(j>>>0>e>>>0?(k=d+(e<<2)|0,(g|0)!=(k|0)):0)f[h>>2]=g+(~((g+-4-k|0)>>>2)<<2)}else ui(i,e-j|0);z=e>>>0>1073741823?-1:e<<2;A=Zq(z)|0;ej(A|0,0,z|0)|0;B=Zq(z)|0;ej(B|0,0,z|0)|0;if((f[C>>2]|0)>0){k=a+16|0;h=a+32|0;l=a+12|0;i=0;do{d=f[A+(i<<2)>>2]|0;g=f[k>>2]|0;if((d|0)>(g|0)){j=f[h>>2]|0;f[j+(i<<2)>>2]=g}else{z=f[l>>2]|0;j=f[h>>2]|0;f[j+(i<<2)>>2]=(d|0)<(z|0)?z:d}i=i+1|0;d=f[C>>2]|0}while((i|0)<(d|0));if((d|0)>0){i=a+20|0;h=0;do{d=(f[b+(h<<2)>>2]|0)+(f[j+(h<<2)>>2]|0)|0;g=c+(h<<2)|0;f[g>>2]=d;if((d|0)<=(f[k>>2]|0)){if((d|0)<(f[l>>2]|0)){d=(f[i>>2]|0)+d|0;H=18}}else{d=d-(f[i>>2]|0)|0;H=18}if((H|0)==18){H=0;f[g>>2]=d}h=h+1|0}while((h|0)<(f[C>>2]|0))}}s=f[a+48>>2]|0;w=a+56|0;h=f[w>>2]|0;g=f[h+4>>2]|0;d=f[h>>2]|0;y=g-d|0;z=y>>2;if((y|0)<=4){_q(B);_q(A);return 1}t=f[a+52>>2]|0;v=(e|0)>0;x=a+16|0;u=a+32|0;y=a+12|0;r=a+20|0;q=s+12|0;p=e<<2;i=g;o=1;while(1){if(i-d>>2>>>0<=o>>>0){Kp(h);d=f[h>>2]|0}n=f[d+(o<<2)>>2]|0;if(v)ej(A|0,0,p|0)|0;if((n|0)>-1){m=f[q>>2]|0;a=n;l=0;while(1){g=f[m+(a<<2)>>2]|0;if((g|0)>=0){h=f[s>>2]|0;i=f[t>>2]|0;k=f[i+(f[h+(g<<2)>>2]<<2)>>2]|0;d=g+1|0;d=((d|0)%3|0|0)==0?g+-2|0:d;if((d|0)<0)d=-1073741824;else d=f[h+(d<<2)>>2]|0;j=f[i+(d<<2)>>2]|0;d=(((g>>>0)%3|0|0)==0?2:-1)+g|0;if((d|0)<0)d=-1073741824;else d=f[h+(d<<2)>>2]|0;d=f[i+(d<<2)>>2]|0;if((k|0)<(o|0)&(j|0)<(o|0)&(d|0)<(o|0)){i=X(k,e)|0;h=X(j,e)|0;g=X(d,e)|0;if(v){d=0;do{f[B+(d<<2)>>2]=(f[c+(d+g<<2)>>2]|0)+(f[c+(d+h<<2)>>2]|0)-(f[c+(d+i<<2)>>2]|0);d=d+1|0}while((d|0)!=(e|0));if(v){d=0;do{k=A+(d<<2)|0;f[k>>2]=(f[k>>2]|0)+(f[B+(d<<2)>>2]|0);d=d+1|0}while((d|0)!=(e|0))}}h=l+1|0}else h=l}else h=l;d=(((a>>>0)%3|0|0)==0?2:-1)+a|0;do if((d|0)>=0){d=f[m+(d<<2)>>2]|0;if((d|0)>=0)if(!((d>>>0)%3|0)){d=d+2|0;break}else{d=d+-1|0;break}}while(0);a=(d|0)==(n|0)?-1073741824:d;if((a|0)<=-1)break;else l=h}g=X(o,e)|0;if(h){if(v){d=0;do{n=A+(d<<2)|0;f[n>>2]=(f[n>>2]|0)/(h|0)|0;d=d+1|0}while((d|0)!=(e|0))}k=b+(g<<2)|0;j=c+(g<<2)|0;if((f[C>>2]|0)>0){h=0;do{d=f[A+(h<<2)>>2]|0;g=f[x>>2]|0;if((d|0)>(g|0)){i=f[u>>2]|0;f[i+(h<<2)>>2]=g}else{n=f[y>>2]|0;i=f[u>>2]|0;f[i+(h<<2)>>2]=(d|0)<(n|0)?n:d}h=h+1|0;d=f[C>>2]|0}while((h|0)<(d|0));if((d|0)>0){h=0;do{d=(f[k+(h<<2)>>2]|0)+(f[i+(h<<2)>>2]|0)|0;g=j+(h<<2)|0;f[g>>2]=d;if((d|0)<=(f[x>>2]|0)){if((d|0)<(f[y>>2]|0)){d=(f[r>>2]|0)+d|0;H=72}}else{d=d-(f[r>>2]|0)|0;H=72}if((H|0)==72){H=0;f[g>>2]=d}h=h+1|0}while((h|0)<(f[C>>2]|0))}}}else{G=g;H=50}}else{G=X(o,e)|0;H=50}if((H|0)==50?(H=0,D=c+((X(o+-1|0,e)|0)<<2)|0,E=b+(G<<2)|0,F=c+(G<<2)|0,(f[C>>2]|0)>0):0){h=0;do{d=f[D+(h<<2)>>2]|0;g=f[x>>2]|0;if((d|0)>(g|0)){i=f[u>>2]|0;f[i+(h<<2)>>2]=g}else{n=f[y>>2]|0;i=f[u>>2]|0;f[i+(h<<2)>>2]=(d|0)<(n|0)?n:d}h=h+1|0;d=f[C>>2]|0}while((h|0)<(d|0));if((d|0)>0){h=0;do{d=(f[E+(h<<2)>>2]|0)+(f[i+(h<<2)>>2]|0)|0;g=F+(h<<2)|0;f[g>>2]=d;if((d|0)<=(f[x>>2]|0)){if((d|0)<(f[y>>2]|0)){d=(f[r>>2]|0)+d|0;H=60}}else{d=d-(f[r>>2]|0)|0;H=60}if((H|0)==60){H=0;f[g>>2]=d}h=h+1|0}while((h|0)<(f[C>>2]|0))}}g=o+1|0;if((g|0)>=(z|0))break;h=f[w>>2]|0;d=f[h>>2]|0;i=f[h+4>>2]|0;o=g}_q(B);_q(A);return 1}function Yb(a,b,c,d,e,g){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;g=g|0;var h=0,i=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,B=0,C=0,D=0,E=0,F=0,G=0,H=0,I=0,J=0,K=0;B=a+8|0;f[B>>2]=e;i=a+32|0;h=a+36|0;g=f[h>>2]|0;d=f[i>>2]|0;j=g-d>>2;if(j>>>0>=e>>>0){if(j>>>0>e>>>0?(k=d+(e<<2)|0,(g|0)!=(k|0)):0)f[h>>2]=g+(~((g+-4-k|0)>>>2)<<2)}else ui(i,e-j|0);y=e>>>0>1073741823?-1:e<<2;z=Zq(y)|0;ej(z|0,0,y|0)|0;A=Zq(y)|0;ej(A|0,0,y|0)|0;if((f[B>>2]|0)>0){k=a+16|0;h=a+32|0;l=a+12|0;i=0;do{d=f[z+(i<<2)>>2]|0;g=f[k>>2]|0;if((d|0)>(g|0)){j=f[h>>2]|0;f[j+(i<<2)>>2]=g}else{y=f[l>>2]|0;j=f[h>>2]|0;f[j+(i<<2)>>2]=(d|0)<(y|0)?y:d}i=i+1|0;d=f[B>>2]|0}while((i|0)<(d|0));if((d|0)>0){i=a+20|0;h=0;do{d=(f[b+(h<<2)>>2]|0)+(f[j+(h<<2)>>2]|0)|0;g=c+(h<<2)|0;f[g>>2]=d;if((d|0)<=(f[k>>2]|0)){if((d|0)<(f[l>>2]|0)){d=(f[i>>2]|0)+d|0;K=18}}else{d=d-(f[i>>2]|0)|0;K=18}if((K|0)==18){K=0;f[g>>2]=d}h=h+1|0}while((h|0)<(f[B>>2]|0))}}r=f[a+48>>2]|0;v=a+56|0;h=f[v>>2]|0;g=f[h+4>>2]|0;d=f[h>>2]|0;x=g-d|0;y=x>>2;if((x|0)<=4){_q(A);_q(z);return 1}s=f[a+52>>2]|0;u=(e|0)>0;w=a+16|0;t=a+32|0;x=a+12|0;q=a+20|0;p=r+64|0;o=r+28|0;n=e<<2;i=g;m=1;while(1){if(i-d>>2>>>0<=m>>>0){Kp(h);d=f[h>>2]|0}a=f[d+(m<<2)>>2]|0;if(u)ej(z|0,0,n|0)|0;if((a|0)>-1){l=f[r>>2]|0;k=a;j=0;do{if(((f[l+(k>>>5<<2)>>2]&1<<(k&31)|0)==0?(J=f[(f[(f[p>>2]|0)+12>>2]|0)+(k<<2)>>2]|0,(J|0)>=0):0)?(E=f[o>>2]|0,i=f[s>>2]|0,C=f[i+(f[E+(J<<2)>>2]<<2)>>2]|0,D=J+1|0,D=f[i+(f[E+((((D|0)%3|0|0)==0?J+-2|0:D)<<2)>>2]<<2)>>2]|0,E=f[i+(f[E+((((J>>>0)%3|0|0)==0?2:-1)+J<<2)>>2]<<2)>>2]|0,(C|0)<(m|0)&(D|0)<(m|0)&(E|0)<(m|0)):0){g=X(C,e)|0;h=X(D,e)|0;i=X(E,e)|0;if(u){d=0;do{f[A+(d<<2)>>2]=(f[c+(d+i<<2)>>2]|0)+(f[c+(d+h<<2)>>2]|0)-(f[c+(d+g<<2)>>2]|0);d=d+1|0}while((d|0)!=(e|0));if(u){d=0;do{i=z+(d<<2)|0;f[i>>2]=(f[i>>2]|0)+(f[A+(d<<2)>>2]|0);d=d+1|0}while((d|0)!=(e|0))}}j=j+1|0}d=(((k>>>0)%3|0|0)==0?2:-1)+k|0;do if(!(f[l+(d>>>5<<2)>>2]&1<<(d&31))){if((d|0)>=0){d=f[(f[(f[p>>2]|0)+12>>2]|0)+(d<<2)>>2]|0;if((d|0)>=0)if(!((d>>>0)%3|0)){d=d+2|0;break}else{d=d+-1|0;break}}}else d=-1073741824;while(0);k=(d|0)==(a|0)?-1073741824:d}while((k|0)>-1);g=X(m,e)|0;if(j){if(u){d=0;do{a=z+(d<<2)|0;f[a>>2]=(f[a>>2]|0)/(j|0)|0;d=d+1|0}while((d|0)!=(e|0))}k=b+(g<<2)|0;j=c+(g<<2)|0;if((f[B>>2]|0)>0){h=0;do{d=f[z+(h<<2)>>2]|0;g=f[w>>2]|0;if((d|0)>(g|0)){i=f[t>>2]|0;f[i+(h<<2)>>2]=g}else{a=f[x>>2]|0;i=f[t>>2]|0;f[i+(h<<2)>>2]=(d|0)<(a|0)?a:d}h=h+1|0;d=f[B>>2]|0}while((h|0)<(d|0));if((d|0)>0){h=0;do{d=(f[k+(h<<2)>>2]|0)+(f[i+(h<<2)>>2]|0)|0;g=j+(h<<2)|0;f[g>>2]=d;if((d|0)<=(f[w>>2]|0)){if((d|0)<(f[x>>2]|0)){d=(f[q>>2]|0)+d|0;K=70}}else{d=d-(f[q>>2]|0)|0;K=70}if((K|0)==70){K=0;f[g>>2]=d}h=h+1|0}while((h|0)<(f[B>>2]|0))}}}else{I=g;K=48}}else{I=X(m,e)|0;K=48}if((K|0)==48?(K=0,F=c+((X(m+-1|0,e)|0)<<2)|0,G=b+(I<<2)|0,H=c+(I<<2)|0,(f[B>>2]|0)>0):0){h=0;do{d=f[F+(h<<2)>>2]|0;g=f[w>>2]|0;if((d|0)>(g|0)){i=f[t>>2]|0;f[i+(h<<2)>>2]=g}else{a=f[x>>2]|0;i=f[t>>2]|0;f[i+(h<<2)>>2]=(d|0)<(a|0)?a:d}h=h+1|0;d=f[B>>2]|0}while((h|0)<(d|0));if((d|0)>0){h=0;do{d=(f[G+(h<<2)>>2]|0)+(f[i+(h<<2)>>2]|0)|0;g=H+(h<<2)|0;f[g>>2]=d;if((d|0)<=(f[w>>2]|0)){if((d|0)<(f[x>>2]|0)){d=(f[q>>2]|0)+d|0;K=58}}else{d=d-(f[q>>2]|0)|0;K=58}if((K|0)==58){K=0;f[g>>2]=d}h=h+1|0}while((h|0)<(f[B>>2]|0))}}g=m+1|0;if((g|0)>=(y|0))break;h=f[v>>2]|0;d=f[h>>2]|0;i=f[h+4>>2]|0;m=g}_q(A);_q(z);return 1}function Zb(a,c,e){a=a|0;c=c|0;e=e|0;var g=0,i=0,j=0,k=0,l=0,m=0,o=La,p=La,q=0,r=0,s=0,t=0,v=0,w=0,x=0,y=0,z=0,A=0,B=0,C=0,D=0,E=0,F=0,G=0,H=0,J=0,K=0,L=La;K=u;u=u+48|0;J=K+12|0;E=K+32|0;H=K;D=J+16|0;f[J>>2]=0;f[J+4>>2]=0;f[J+8>>2]=0;f[J+12>>2]=0;n[D>>2]=$(1.0);G=a+80|0;Dk(H,f[G>>2]|0);i=f[G>>2]|0;a:do if((i|0)>0){A=c+48|0;B=c+40|0;x=J+4|0;z=J+12|0;w=J+8|0;C=a+40|0;y=a+64|0;v=f[e>>2]|0;i=0;t=0;s=0;while(1){k=v+t|0;m=A;q=f[m>>2]|0;m=f[m+4>>2]|0;l=B;l=kn(k|0,((k|0)<0)<<31>>31|0,f[l>>2]|0,f[l+4>>2]|0)|0;m=Ho(l|0,I|0,q|0,m|0)|0;m=(f[f[c>>2]>>2]|0)+m|0;m=h[m>>0]|h[m+1>>0]<<8;d[E>>1]=m;q=(m^318)&65535;b:do if(i){l=i+-1|0;k=(l&i|0)==0;if(k)g=l&q;else g=(q>>>0)%(i>>>0)|0;j=f[J>>2]|0;e=f[j+(g<<2)>>2]|0;c:do if(e|0){if(k)do{e=f[e>>2]|0;if(!e)break c;if((f[e+4>>2]&l|0)!=(g|0))break c}while((d[e+8>>1]|0)!=m<<16>>16);else do{e=f[e>>2]|0;if(!e)break c;if((((f[e+4>>2]|0)>>>0)%(i>>>0)|0|0)!=(g|0))break c}while((d[e+8>>1]|0)!=m<<16>>16);f[(f[H>>2]|0)+(t<<2)>>2]=f[e+12>>2];g=s;break b}while(0);if(k)e=l&q;else e=(q>>>0)%(i>>>0)|0;g=f[j+(e<<2)>>2]|0;if(g)if(k)while(1){g=f[g>>2]|0;if(!g){g=0;r=28;break b}if((f[g+4>>2]&l|0)!=(e|0)){g=0;r=28;break b}if((d[g+8>>1]|0)==m<<16>>16){r=41;break}}else while(1){g=f[g>>2]|0;if(!g){g=0;r=28;break b}if((((f[g+4>>2]|0)>>>0)%(i>>>0)|0|0)!=(e|0)){g=0;r=28;break b}if((d[g+8>>1]|0)==m<<16>>16){r=41;break}}else{g=0;r=28}}else{i=0;e=0;g=1;r=28}while(0);if((r|0)==28){r=0;j=ln(16)|0;d[j+8>>1]=m;f[j+12>>2]=s;f[j+4>>2]=q;f[j>>2]=0;p=$(((f[z>>2]|0)+1|0)>>>0);L=$(i>>>0);o=$(n[D>>2]);do if(g|p>$(L*o)){e=(i>>>0<3|(i+-1&i|0)!=0)&1|i<<1;g=~~$(W($(p/o)))>>>0;Oh(J,e>>>0>>0?g:e);e=f[x>>2]|0;g=e+-1|0;if(!(g&e)){i=e;e=g&q;break}else{i=e;e=(q>>>0)%(e>>>0)|0;break}}while(0);g=(f[J>>2]|0)+(e<<2)|0;e=f[g>>2]|0;if(!e){f[j>>2]=f[w>>2];f[w>>2]=j;f[g>>2]=w;e=f[j>>2]|0;if(e|0){e=f[e+4>>2]|0;g=i+-1|0;if(!(g&i))e=e&g;else e=(e>>>0)%(i>>>0)|0;e=(f[J>>2]|0)+(e<<2)|0;r=39}}else{f[j>>2]=f[e>>2];r=39}if((r|0)==39)f[e>>2]=j;f[z>>2]=(f[z>>2]|0)+1;r=41}if((r|0)==41){r=0;q=C;g=f[q>>2]|0;q=kn(g|0,f[q+4>>2]|0,s|0,((s|0)<0)<<31>>31|0)|0;Mg((f[f[y>>2]>>2]|0)+q|0,E|0,g|0)|0;f[(f[H>>2]|0)+(t<<2)>>2]=s;g=s+1|0}e=t+1|0;i=f[G>>2]|0;if((e|0)>=(i|0)){q=g;break a}i=f[x>>2]|0;t=e;s=g}}else q=0;while(0);if((q|0)!=(i|0)){m=a+84|0;if(!(b[m>>0]|0)){i=f[a+68>>2]|0;e=(f[a+72>>2]|0)-i|0;if((e|0)>0){j=f[H>>2]|0;g=e>>2;e=0;do{a=i+(e<<2)|0;f[a>>2]=f[j+(f[a>>2]<<2)>>2];e=e+1|0}while((e|0)<(g|0))}}else{b[m>>0]=0;k=a+68|0;j=a+72|0;g=f[j>>2]|0;e=f[k>>2]|0;l=g-e>>2;if(i>>>0<=l>>>0){if(i>>>0>>0?(F=e+(i<<2)|0,(g|0)!=(F|0)):0)f[j>>2]=g+(~((g+-4-F|0)>>>2)<<2)}else{ch(k,i-l|0,1416);i=f[G>>2]|0}if((i|0)>0){j=f[H>>2]|0;if(b[m>>0]|0)Ga(18230,18249,91,18290);e=f[a+68>>2]|0;g=0;do{f[e+(g<<2)>>2]=f[j+(g<<2)>>2];g=g+1|0}while((g|0)<(i|0))}}f[G>>2]=q}i=f[H>>2]|0;if(i|0){g=H+4|0;e=f[g>>2]|0;if((e|0)!=(i|0))f[g>>2]=e+(~((e+-4-i|0)>>>2)<<2);ar(i)}e=f[J+8>>2]|0;if(e|0)do{H=e;e=f[e>>2]|0;ar(H)}while((e|0)!=0);e=f[J>>2]|0;f[J>>2]=0;if(!e){u=K;return q|0}ar(e);u=K;return q|0}function _b(a,c,d){a=a|0;c=c|0;d=d|0;var e=0,g=0,i=0,j=0,k=0,l=0,m=La,o=La,p=0,q=0,r=0,s=0,t=0,v=0,w=0,x=0,y=0,z=0,A=0,B=0,C=0,D=0,E=0,F=0,G=0,H=0,J=0,K=La;J=u;u=u+48|0;H=J+16|0;D=J+12|0;G=J;C=H+16|0;f[H>>2]=0;f[H+4>>2]=0;f[H+8>>2]=0;f[H+12>>2]=0;n[C>>2]=$(1.0);F=a+80|0;Dk(G,f[F>>2]|0);g=f[F>>2]|0;a:do if((g|0)>0){z=c+48|0;A=c+40|0;w=H+4|0;y=H+12|0;v=H+8|0;B=a+40|0;x=a+64|0;t=f[d>>2]|0;g=0;s=0;r=0;while(1){j=t+s|0;l=z;p=f[l>>2]|0;l=f[l+4>>2]|0;k=A;k=kn(j|0,((j|0)<0)<<31>>31|0,f[k>>2]|0,f[k+4>>2]|0)|0;l=Ho(k|0,I|0,p|0,l|0)|0;l=(f[f[c>>2]>>2]|0)+l|0;l=h[l>>0]|h[l+1>>0]<<8|h[l+2>>0]<<16|h[l+3>>0]<<24;f[D>>2]=l;p=l^318;b:do if(g){k=g+-1|0;j=(k&g|0)==0;if(j)e=k&p;else e=(p>>>0)%(g>>>0)|0;i=f[H>>2]|0;d=f[i+(e<<2)>>2]|0;c:do if(d|0){if(j)do{d=f[d>>2]|0;if(!d)break c;if((f[d+4>>2]&k|0)!=(e|0))break c}while((f[d+8>>2]|0)!=(l|0));else do{d=f[d>>2]|0;if(!d)break c;if((((f[d+4>>2]|0)>>>0)%(g>>>0)|0|0)!=(e|0))break c}while((f[d+8>>2]|0)!=(l|0));f[(f[G>>2]|0)+(s<<2)>>2]=f[d+12>>2];e=r;break b}while(0);if(j)d=k&p;else d=(p>>>0)%(g>>>0)|0;e=f[i+(d<<2)>>2]|0;if(e)if(j)while(1){e=f[e>>2]|0;if(!e){e=0;q=28;break b}if((f[e+4>>2]&k|0)!=(d|0)){e=0;q=28;break b}if((f[e+8>>2]|0)==(l|0)){q=41;break}}else while(1){e=f[e>>2]|0;if(!e){e=0;q=28;break b}if((((f[e+4>>2]|0)>>>0)%(g>>>0)|0|0)!=(d|0)){e=0;q=28;break b}if((f[e+8>>2]|0)==(l|0)){q=41;break}}else{e=0;q=28}}else{g=0;d=0;e=1;q=28}while(0);if((q|0)==28){q=0;i=ln(16)|0;f[i+8>>2]=l;f[i+12>>2]=r;f[i+4>>2]=p;f[i>>2]=0;o=$(((f[y>>2]|0)+1|0)>>>0);K=$(g>>>0);m=$(n[C>>2]);do if(e|o>$(K*m)){d=(g>>>0<3|(g+-1&g|0)!=0)&1|g<<1;e=~~$(W($(o/m)))>>>0;li(H,d>>>0>>0?e:d);d=f[w>>2]|0;e=d+-1|0;if(!(e&d)){g=d;d=e&p;break}else{g=d;d=(p>>>0)%(d>>>0)|0;break}}while(0);e=(f[H>>2]|0)+(d<<2)|0;d=f[e>>2]|0;if(!d){f[i>>2]=f[v>>2];f[v>>2]=i;f[e>>2]=v;d=f[i>>2]|0;if(d|0){d=f[d+4>>2]|0;e=g+-1|0;if(!(e&g))d=d&e;else d=(d>>>0)%(g>>>0)|0;d=(f[H>>2]|0)+(d<<2)|0;q=39}}else{f[i>>2]=f[d>>2];q=39}if((q|0)==39)f[d>>2]=i;f[y>>2]=(f[y>>2]|0)+1;q=41}if((q|0)==41){q=0;p=B;e=f[p>>2]|0;p=kn(e|0,f[p+4>>2]|0,r|0,((r|0)<0)<<31>>31|0)|0;Mg((f[f[x>>2]>>2]|0)+p|0,D|0,e|0)|0;f[(f[G>>2]|0)+(s<<2)>>2]=r;e=r+1|0}d=s+1|0;g=f[F>>2]|0;if((d|0)>=(g|0)){p=e;break a}g=f[w>>2]|0;s=d;r=e}}else p=0;while(0);if((p|0)!=(g|0)){l=a+84|0;if(!(b[l>>0]|0)){g=f[a+68>>2]|0;d=(f[a+72>>2]|0)-g|0;if((d|0)>0){i=f[G>>2]|0;e=d>>2;d=0;do{a=g+(d<<2)|0;f[a>>2]=f[i+(f[a>>2]<<2)>>2];d=d+1|0}while((d|0)<(e|0))}}else{b[l>>0]=0;j=a+68|0;i=a+72|0;e=f[i>>2]|0;d=f[j>>2]|0;k=e-d>>2;if(g>>>0<=k>>>0){if(g>>>0>>0?(E=d+(g<<2)|0,(e|0)!=(E|0)):0)f[i>>2]=e+(~((e+-4-E|0)>>>2)<<2)}else{ch(j,g-k|0,1416);g=f[F>>2]|0}if((g|0)>0){i=f[G>>2]|0;if(b[l>>0]|0)Ga(18230,18249,91,18290);d=f[a+68>>2]|0;e=0;do{f[d+(e<<2)>>2]=f[i+(e<<2)>>2];e=e+1|0}while((e|0)<(g|0))}}f[F>>2]=p}g=f[G>>2]|0;if(g|0){e=G+4|0;d=f[e>>2]|0;if((d|0)!=(g|0))f[e>>2]=d+(~((d+-4-g|0)>>>2)<<2);ar(g)}d=f[H+8>>2]|0;if(d|0)do{G=d;d=f[d>>2]|0;ar(G)}while((d|0)!=0);d=f[H>>2]|0;f[H>>2]=0;if(!d){u=J;return p|0}ar(d);u=J;return p|0}function $b(a,c,d){a=a|0;c=c|0;d=d|0;var e=0,g=0,h=0,i=0,j=0,k=0,l=La,m=La,o=0,p=0,q=0,r=0,s=0,t=0,v=0,w=0,x=0,y=0,z=0,A=0,B=0,C=0,D=0,E=0,F=0,G=0,H=0,J=La;H=u;u=u+48|0;G=H+12|0;C=H+32|0;F=H;B=G+16|0;f[G>>2]=0;f[G+4>>2]=0;f[G+8>>2]=0;f[G+12>>2]=0;n[B>>2]=$(1.0);E=a+80|0;Dk(F,f[E>>2]|0);g=f[E>>2]|0;a:do if((g|0)>0){y=c+48|0;z=c+40|0;v=G+4|0;x=G+12|0;t=G+8|0;A=a+40|0;w=a+64|0;s=f[d>>2]|0;g=0;r=0;q=0;while(1){i=s+r|0;k=y;o=f[k>>2]|0;k=f[k+4>>2]|0;j=z;j=kn(i|0,((i|0)<0)<<31>>31|0,f[j>>2]|0,f[j+4>>2]|0)|0;k=Ho(j|0,I|0,o|0,k|0)|0;k=b[(f[f[c>>2]>>2]|0)+k>>0]|0;b[C>>0]=k;o=k&255^318;b:do if(g){j=g+-1|0;i=(j&g|0)==0;if(i)e=j&o;else e=(o>>>0)%(g>>>0)|0;h=f[G>>2]|0;d=f[h+(e<<2)>>2]|0;c:do if(d|0){if(i)do{d=f[d>>2]|0;if(!d)break c;if((f[d+4>>2]&j|0)!=(e|0))break c}while((b[d+8>>0]|0)!=k<<24>>24);else do{d=f[d>>2]|0;if(!d)break c;if((((f[d+4>>2]|0)>>>0)%(g>>>0)|0|0)!=(e|0))break c}while((b[d+8>>0]|0)!=k<<24>>24);f[(f[F>>2]|0)+(r<<2)>>2]=f[d+12>>2];e=q;break b}while(0);if(i)d=j&o;else d=(o>>>0)%(g>>>0)|0;e=f[h+(d<<2)>>2]|0;if(e)if(i)while(1){e=f[e>>2]|0;if(!e){e=0;p=28;break b}if((f[e+4>>2]&j|0)!=(d|0)){e=0;p=28;break b}if((b[e+8>>0]|0)==k<<24>>24){p=41;break}}else while(1){e=f[e>>2]|0;if(!e){e=0;p=28;break b}if((((f[e+4>>2]|0)>>>0)%(g>>>0)|0|0)!=(d|0)){e=0;p=28;break b}if((b[e+8>>0]|0)==k<<24>>24){p=41;break}}else{e=0;p=28}}else{g=0;d=0;e=1;p=28}while(0);if((p|0)==28){p=0;h=ln(16)|0;b[h+8>>0]=k;f[h+12>>2]=q;f[h+4>>2]=o;f[h>>2]=0;m=$(((f[x>>2]|0)+1|0)>>>0);J=$(g>>>0);l=$(n[B>>2]);do if(e|m>$(J*l)){d=(g>>>0<3|(g+-1&g|0)!=0)&1|g<<1;e=~~$(W($(m/l)))>>>0;Vh(G,d>>>0>>0?e:d);d=f[v>>2]|0;e=d+-1|0;if(!(e&d)){g=d;d=e&o;break}else{g=d;d=(o>>>0)%(d>>>0)|0;break}}while(0);e=(f[G>>2]|0)+(d<<2)|0;d=f[e>>2]|0;if(!d){f[h>>2]=f[t>>2];f[t>>2]=h;f[e>>2]=t;d=f[h>>2]|0;if(d|0){d=f[d+4>>2]|0;e=g+-1|0;if(!(e&g))d=d&e;else d=(d>>>0)%(g>>>0)|0;d=(f[G>>2]|0)+(d<<2)|0;p=39}}else{f[h>>2]=f[d>>2];p=39}if((p|0)==39)f[d>>2]=h;f[x>>2]=(f[x>>2]|0)+1;p=41}if((p|0)==41){p=0;o=A;e=f[o>>2]|0;o=kn(e|0,f[o+4>>2]|0,q|0,((q|0)<0)<<31>>31|0)|0;Mg((f[f[w>>2]>>2]|0)+o|0,C|0,e|0)|0;f[(f[F>>2]|0)+(r<<2)>>2]=q;e=q+1|0}d=r+1|0;g=f[E>>2]|0;if((d|0)>=(g|0)){o=e;break a}g=f[v>>2]|0;r=d;q=e}}else o=0;while(0);if((o|0)!=(g|0)){k=a+84|0;if(!(b[k>>0]|0)){g=f[a+68>>2]|0;d=(f[a+72>>2]|0)-g|0;if((d|0)>0){h=f[F>>2]|0;e=d>>2;d=0;do{a=g+(d<<2)|0;f[a>>2]=f[h+(f[a>>2]<<2)>>2];d=d+1|0}while((d|0)<(e|0))}}else{b[k>>0]=0;i=a+68|0;h=a+72|0;e=f[h>>2]|0;d=f[i>>2]|0;j=e-d>>2;if(g>>>0<=j>>>0){if(g>>>0>>0?(D=d+(g<<2)|0,(e|0)!=(D|0)):0)f[h>>2]=e+(~((e+-4-D|0)>>>2)<<2)}else{ch(i,g-j|0,1416);g=f[E>>2]|0}if((g|0)>0){h=f[F>>2]|0;if(b[k>>0]|0)Ga(18230,18249,91,18290);d=f[a+68>>2]|0;e=0;do{f[d+(e<<2)>>2]=f[h+(e<<2)>>2];e=e+1|0}while((e|0)<(g|0))}}f[E>>2]=o}g=f[F>>2]|0;if(g|0){e=F+4|0;d=f[e>>2]|0;if((d|0)!=(g|0))f[e>>2]=d+(~((d+-4-g|0)>>>2)<<2);ar(g)}d=f[G+8>>2]|0;if(d|0)do{F=d;d=f[d>>2]|0;ar(F)}while((d|0)!=0);d=f[G>>2]|0;f[G>>2]=0;if(!d){u=H;return o|0}ar(d);u=H;return o|0}function ac(a){a=a|0;var b=0,c=0,d=0,e=0,g=0,h=0,i=0,j=0,k=0;if(!a)return;c=a+-8|0;d=f[5670]|0;a=f[a+-4>>2]|0;b=a&-8;k=c+b|0;do if(!(a&1)){e=f[c>>2]|0;if(!(a&3))return;g=c+(0-e)|0;h=e+b|0;if(g>>>0>>0)return;if((g|0)==(f[5671]|0)){b=k+4|0;a=f[b>>2]|0;if((a&3|0)!=3){i=g;j=g;b=h;break}f[5668]=h;f[b>>2]=a&-2;f[g+4>>2]=h|1;f[g+h>>2]=h;return}c=e>>>3;if(e>>>0<256){a=f[g+8>>2]|0;b=f[g+12>>2]|0;if((b|0)==(a|0)){f[5666]=f[5666]&~(1<>2]=b;f[b+8>>2]=a;i=g;j=g;b=h;break}}e=f[g+24>>2]|0;a=f[g+12>>2]|0;do if((a|0)==(g|0)){c=g+16|0;b=c+4|0;a=f[b>>2]|0;if(!a){a=f[c>>2]|0;if(!a){c=0;break}else d=c}else d=b;while(1){c=a+20|0;b=f[c>>2]|0;if(b|0){a=b;d=c;continue}c=a+16|0;b=f[c>>2]|0;if(!b)break;else{a=b;d=c}}f[d>>2]=0;c=a}else{c=f[g+8>>2]|0;f[c+12>>2]=a;f[a+8>>2]=c;c=a}while(0);if(e){a=f[g+28>>2]|0;b=22968+(a<<2)|0;if((g|0)==(f[b>>2]|0)){f[b>>2]=c;if(!c){f[5667]=f[5667]&~(1<>2]|0)!=(g|0)&1)<<2)>>2]=c;if(!c){i=g;j=g;b=h;break}}f[c+24>>2]=e;b=g+16|0;a=f[b>>2]|0;if(a|0){f[c+16>>2]=a;f[a+24>>2]=c}a=f[b+4>>2]|0;if(a){f[c+20>>2]=a;f[a+24>>2]=c;i=g;j=g;b=h}else{i=g;j=g;b=h}}else{i=g;j=g;b=h}}else{i=c;j=c}while(0);if(i>>>0>=k>>>0)return;a=k+4|0;d=f[a>>2]|0;if(!(d&1))return;if(!(d&2)){a=f[5671]|0;if((k|0)==(f[5672]|0)){k=(f[5669]|0)+b|0;f[5669]=k;f[5672]=j;f[j+4>>2]=k|1;if((j|0)!=(a|0))return;f[5671]=0;f[5668]=0;return}if((k|0)==(a|0)){k=(f[5668]|0)+b|0;f[5668]=k;f[5671]=i;f[j+4>>2]=k|1;f[i+k>>2]=k;return}e=(d&-8)+b|0;c=d>>>3;do if(d>>>0<256){b=f[k+8>>2]|0;a=f[k+12>>2]|0;if((a|0)==(b|0)){f[5666]=f[5666]&~(1<>2]=a;f[a+8>>2]=b;break}}else{g=f[k+24>>2]|0;a=f[k+12>>2]|0;do if((a|0)==(k|0)){c=k+16|0;b=c+4|0;a=f[b>>2]|0;if(!a){a=f[c>>2]|0;if(!a){c=0;break}else d=c}else d=b;while(1){c=a+20|0;b=f[c>>2]|0;if(b|0){a=b;d=c;continue}c=a+16|0;b=f[c>>2]|0;if(!b)break;else{a=b;d=c}}f[d>>2]=0;c=a}else{c=f[k+8>>2]|0;f[c+12>>2]=a;f[a+8>>2]=c;c=a}while(0);if(g|0){a=f[k+28>>2]|0;b=22968+(a<<2)|0;if((k|0)==(f[b>>2]|0)){f[b>>2]=c;if(!c){f[5667]=f[5667]&~(1<>2]|0)!=(k|0)&1)<<2)>>2]=c;if(!c)break}f[c+24>>2]=g;b=k+16|0;a=f[b>>2]|0;if(a|0){f[c+16>>2]=a;f[a+24>>2]=c}a=f[b+4>>2]|0;if(a|0){f[c+20>>2]=a;f[a+24>>2]=c}}}while(0);f[j+4>>2]=e|1;f[i+e>>2]=e;if((j|0)==(f[5671]|0)){f[5668]=e;return}}else{f[a>>2]=d&-2;f[j+4>>2]=b|1;f[i+b>>2]=b;e=b}a=e>>>3;if(e>>>0<256){c=22704+(a<<1<<2)|0;b=f[5666]|0;a=1<>2]|0}f[a>>2]=j;f[b+12>>2]=j;f[j+8>>2]=b;f[j+12>>2]=c;return}a=e>>>8;if(a)if(e>>>0>16777215)b=31;else{i=(a+1048320|0)>>>16&8;k=a<>>16&4;k=k<>>16&2;b=14-(h|i|b)+(k<>>15)|0;b=e>>>(b+7|0)&1|b<<1}else b=0;d=22968+(b<<2)|0;f[j+28>>2]=b;f[j+20>>2]=0;f[j+16>>2]=0;a=f[5667]|0;c=1<>>1)|0);c=f[d>>2]|0;while(1){if((f[c+4>>2]&-8|0)==(e|0)){a=73;break}d=c+16+(b>>>31<<2)|0;a=f[d>>2]|0;if(!a){a=72;break}else{b=b<<1;c=a}}if((a|0)==72){f[d>>2]=j;f[j+24>>2]=c;f[j+12>>2]=j;f[j+8>>2]=j;break}else if((a|0)==73){i=c+8|0;k=f[i>>2]|0;f[k+12>>2]=j;f[i>>2]=j;f[j+8>>2]=k;f[j+12>>2]=c;f[j+24>>2]=0;break}}else{f[5667]=a|c;f[d>>2]=j;f[j+24>>2]=d;f[j+12>>2]=j;f[j+8>>2]=j}while(0);k=(f[5674]|0)+-1|0;f[5674]=k;if(!k)a=23120;else return;while(1){a=f[a>>2]|0;if(!a)break;else a=a+8|0}f[5674]=-1;return}function bc(a,b){a=a|0;b=b|0;var c=0,d=0,e=0,g=0,h=0,i=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,v=0,w=0,x=0,y=0,z=0;z=u;u=u+32|0;w=z+28|0;t=z+24|0;j=z+20|0;k=z+16|0;l=z+12|0;m=z+8|0;s=z+4|0;v=z;e=f[b>>2]|0;if((e|0)<0){u=z;return}x=(e>>>0)/3|0;q=a+12|0;if(f[(f[q>>2]|0)+(x>>>5<<2)>>2]&1<<(x&31)|0){u=z;return}x=a+56|0;c=f[x>>2]|0;r=a+60|0;d=f[r>>2]|0;if((d|0)!=(c|0)){c=d+(~((d+-4-c|0)>>>2)<<2)|0;f[r>>2]=c}o=a+64|0;if((c|0)==(f[o>>2]|0))Ii(x,b);else{f[c>>2]=e;f[r>>2]=c+4}c=f[a>>2]|0;g=f[b>>2]|0;d=g+1|0;do if((g|0)>=0){c=f[c+28>>2]|0;d=f[c+((((d|0)%3|0|0)==0?g+-2|0:d)<<2)>>2]|0;if(!((g>>>0)%3|0)){e=c;c=g+2|0;break}else{e=c;c=g+-1|0;break}}else{d=f[c+28>>2]|0;e=d;d=f[d+(g<<2)>>2]|0;c=g}while(0);i=f[e+(c<<2)>>2]|0;n=a+24|0;c=f[n>>2]|0;g=c+(d>>>5<<2)|0;h=1<<(d&31);e=f[g>>2]|0;if(!(e&h)){f[g>>2]=e|h;f[j>>2]=d;c=f[b>>2]|0;d=c+1|0;if((c|0)>=0)c=((d|0)%3|0|0)==0?c+-2|0:d;f[k>>2]=c;f[t>>2]=f[j>>2];f[w>>2]=f[k>>2];tg(a+36|0,t,w);c=f[n>>2]|0}d=c+(i>>>5<<2)|0;e=1<<(i&31);c=f[d>>2]|0;if(!(c&e)){f[d>>2]=c|e;d=a+36|0;f[l>>2]=i;c=f[b>>2]|0;do if((c|0)>=0)if(!((c>>>0)%3|0)){c=c+2|0;break}else{c=c+-1|0;break}while(0);f[m>>2]=c;f[t>>2]=f[l>>2];f[w>>2]=f[m>>2];tg(d,t,w)}d=f[x>>2]|0;c=f[r>>2]|0;if((d|0)==(c|0)){u=z;return}k=a+36|0;do{e=f[c+-4>>2]|0;f[b>>2]=e;g=(e|0)/3|0;if((e|0)>=0?(p=f[q>>2]|0,(f[p+(g>>>5<<2)>>2]&1<<(g&31)|0)==0):0){c=e;d=p;e=f[a>>2]|0;a:while(1){i=(c|0)/3|0;d=d+(i>>>5<<2)|0;f[d>>2]=1<<(i&31)|f[d>>2];d=f[b>>2]|0;i=f[(f[e+28>>2]|0)+(d<<2)>>2]|0;c=f[(f[e+40>>2]|0)+(i<<2)>>2]|0;if((c|0)<0)j=1;else{j=f[(f[f[e+64>>2]>>2]|0)+(c<<2)>>2]|0;j=(1<<(j&31)&f[(f[e+12>>2]|0)+(j>>>5<<2)>>2]|0)!=0}g=(f[n>>2]|0)+(i>>>5<<2)|0;h=1<<(i&31);c=f[g>>2]|0;if(!(c&h)){f[g>>2]=c|h;f[s>>2]=i;f[v>>2]=f[b>>2];f[t>>2]=f[s>>2];f[w>>2]=f[v>>2];tg(k,t,w);e=f[a>>2]|0;c=f[b>>2]|0;if(j){d=c;y=40}else{d=c+1|0;if((c|0)>=0)c=((d|0)%3|0|0)==0?c+-2|0:d;do if(!(1<<(c&31)&f[(f[e>>2]|0)+(c>>>5<<2)>>2])){if((c|0)<0)break;c=f[(f[(f[e+64>>2]|0)+12>>2]|0)+(c<<2)>>2]|0}else c=-1073741824;while(0);f[b>>2]=c}}else y=40;if((y|0)==40){y=0;g=(d|0)<0;c=d+1|0;if(g)c=d;else c=((c|0)%3|0|0)==0?d+-2|0:c;if(!(1<<(c&31)&f[(f[e>>2]|0)+(c>>>5<<2)>>2])){if((c|0)>=0)c=f[(f[(f[e+64>>2]|0)+12>>2]|0)+(c<<2)>>2]|0}else c=-1073741824;f[w>>2]=c;do if(!g)if(!((d>>>0)%3|0)){d=d+2|0;break}else{d=d+-1|0;break}while(0);do if(!(1<<(d&31)&f[(f[e>>2]|0)+(d>>>5<<2)>>2])){if((d|0)<0)break;d=f[(f[(f[e+64>>2]|0)+12>>2]|0)+(d<<2)>>2]|0}else d=-1073741824;while(0);m=(c|0)<0;i=m?-1:(c>>>0)/3|0;h=(d|0)<0;j=h?-1:(d>>>0)/3|0;do if(!m){g=f[q>>2]|0;if(f[g+(i>>>5<<2)>>2]&1<<(i&31)|0){y=54;break}if(h)break;if(!(f[g+(j>>>5<<2)>>2]&1<<(j&31))){y=59;break a}}else y=54;while(0);if((y|0)==54){y=0;if(h){y=56;break}if(!(f[(f[q>>2]|0)+(j>>>5<<2)>>2]&1<<(j&31)))c=d;else{y=56;break}}f[b>>2]=c}d=f[q>>2]|0}do if((y|0)==56){y=0;c=(f[r>>2]|0)+-4|0;f[r>>2]=c}else if((y|0)==59){y=0;c=f[r>>2]|0;f[c+-4>>2]=d;if((c|0)==(f[o>>2]|0)){Ii(x,w);c=f[r>>2]|0;break}else{f[c>>2]=f[w>>2];c=c+4|0;f[r>>2]=c;break}}while(0);d=f[x>>2]|0}else{c=c+-4|0;f[r>>2]=c}}while((d|0)!=(c|0));u=z;return}function cc(a,c,d){a=a|0;c=c|0;d=d|0;var e=0,g=0,h=0,i=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,v=0,w=0,x=0,y=0,z=0,A=0,B=0,C=0,D=0,E=0,F=0,G=0,H=0,J=0,K=0,L=0,M=0,N=0,O=0,P=0,Q=0,R=0,S=0,T=0,U=0,V=0,W=0,X=0,Y=0,Z=0,_=0;N=u;u=u+96|0;F=N+72|0;J=N+48|0;K=N+24|0;L=N;if(!(f[a>>2]|0))Ga(10673,11041,79,11147);H=a+4|0;if(!(f[H>>2]|0))Ga(10673,11041,79,11147);G=a+12|0;k=f[G>>2]|0;n=f[c>>2]|0;f[F>>2]=k;f[F+4>>2]=n;E=F+8|0;f[E>>2]=n;b[F+12>>0]=1;m=(n|0)<0;if(m)l=-1073741824;else l=f[(f[k>>2]|0)+(n<<2)>>2]|0;D=a+16|0;k=f[D>>2]|0;c=f[k>>2]|0;if((f[k+4>>2]|0)-c>>2>>>0<=l>>>0){Kp(k);c=f[k>>2]|0}kg(J,a,f[c+(l<<2)>>2]|0);a:do if(!m){y=K+8|0;v=J+8|0;A=K+16|0;w=J+16|0;x=L+8|0;z=L+16|0;C=n+1|0;C=((C|0)%3|0|0)==0?n+-2|0:C;B=(C|0)<0;s=n+(((n>>>0)%3|0|0)==0?2:-1)|0;t=(s|0)<0;q=0;p=0;r=0;n=0;l=0;o=0;while(1){if(!(f[a>>2]|0)){c=13;break}if(!(f[H>>2]|0)){c=13;break}if(B)m=-1073741824;else m=f[(f[f[G>>2]>>2]|0)+(C<<2)>>2]|0;k=f[D>>2]|0;c=f[k>>2]|0;if((f[k+4>>2]|0)-c>>2>>>0<=m>>>0){Kp(k);c=f[k>>2]|0}kg(K,a,f[c+(m<<2)>>2]|0);if(!(f[a>>2]|0)){c=21;break}if(!(f[H>>2]|0)){c=21;break}if(t)m=-1073741824;else m=f[(f[f[G>>2]>>2]|0)+(s<<2)>>2]|0;k=f[D>>2]|0;c=f[k>>2]|0;if((f[k+4>>2]|0)-c>>2>>>0<=m>>>0){Kp(k);c=f[k>>2]|0}kg(L,a,f[c+(m<<2)>>2]|0);O=K;Y=J;X=f[Y>>2]|0;Y=f[Y+4>>2]|0;O=Xn(f[O>>2]|0,f[O+4>>2]|0,X|0,Y|0)|0;P=I;Q=y;_=v;Z=f[_>>2]|0;_=f[_+4>>2]|0;Q=Xn(f[Q>>2]|0,f[Q+4>>2]|0,Z|0,_|0)|0;R=I;T=A;k=w;S=f[k>>2]|0;k=f[k+4>>2]|0;T=Xn(f[T>>2]|0,f[T+4>>2]|0,S|0,k|0)|0;U=I;m=L;Y=Xn(f[m>>2]|0,f[m+4>>2]|0,X|0,Y|0)|0;X=I;m=x;_=Xn(f[m>>2]|0,f[m+4>>2]|0,Z|0,_|0)|0;Z=I;m=z;k=Xn(f[m>>2]|0,f[m+4>>2]|0,S|0,k|0)|0;S=I;m=kn(k|0,S|0,Q|0,R|0)|0;c=I;W=kn(_|0,Z|0,T|0,U|0)|0;V=I;U=kn(Y|0,X|0,T|0,U|0)|0;T=I;S=kn(k|0,S|0,O|0,P|0)|0;k=I;P=kn(_|0,Z|0,O|0,P|0)|0;O=I;R=kn(Y|0,X|0,Q|0,R|0)|0;Q=I;q=Xn(q|0,p|0,W|0,V|0)|0;c=Ho(q|0,I|0,m|0,c|0)|0;m=I;n=Ho(U|0,T|0,r|0,n|0)|0;k=Xn(n|0,I|0,S|0,k|0)|0;n=I;l=Xn(l|0,o|0,R|0,Q|0)|0;l=Ho(l|0,I|0,P|0,O|0)|0;o=I;Zg(F);if((f[E>>2]|0)<0){j=m;i=c;h=n;g=k;M=o;e=l;break a}else{q=c;p=m;r=k}}if((c|0)==13)Ga(10673,11041,63,11169);else if((c|0)==21)Ga(10673,11041,63,11169)}else{j=0;i=0;h=0;g=0;M=0;e=0}while(0);Z=(j|0)>-1|(j|0)==-1&i>>>0>4294967295;_=Xn(0,0,i|0,j|0)|0;c=Z?j:I;U=(h|0)>-1|(h|0)==-1&g>>>0>4294967295;V=Xn(0,0,g|0,h|0)|0;W=U?h:I;Y=(M|0)>-1|(M|0)==-1&e>>>0>4294967295;X=Xn(0,0,e|0,M|0)|0;Y=Ho((U?g:V)|0,W|0,(Y?e:X)|0,(Y?M:I)|0)|0;c=Ho(Y|0,I|0,(Z?i:_)|0,c|0)|0;if((c|0)>536870912){c=Tn(c|0,I|0,29)|0;c=c&7;i=pk(i|0,j|0,c|0,0)|0;j=I;g=pk(g|0,h|0,c|0,0)|0;h=I;e=pk(e|0,M|0,c|0,0)|0;c=I}else c=M;Y=(j|0)>-1|(j|0)==-1&i>>>0>4294967295;Z=Xn(0,0,i|0,j|0)|0;_=Y?j:I;T=(h|0)>-1|(h|0)==-1&g>>>0>4294967295;U=Xn(0,0,g|0,h|0)|0;V=T?h:I;X=(c|0)>-1|(c|0)==-1&e>>>0>4294967295;W=Xn(0,0,e|0,c|0)|0;X=Ho((T?g:U)|0,V|0,(X?e:W)|0,(X?c:I)|0)|0;_=Ho(X|0,I|0,(Y?i:Z)|0,_|0)|0;Z=I;if((Z|0)<0|(Z|0)==0&_>>>0<536870913){f[d>>2]=i;f[d+4>>2]=g;f[d+8>>2]=e;u=N;return}else Ga(11190,11041,117,11147)}function dc(a,c,d){a=a|0;c=c|0;d=d|0;var e=0,g=0,h=0,i=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,v=0,w=0,x=0,y=0,z=0,A=0,B=0,C=0,D=0,E=0,F=0,G=0,H=0,J=0,K=0,L=0,M=0,N=0,O=0,P=0,Q=0,R=0,S=0,T=0,U=0,V=0,W=0,X=0,Y=0;L=u;u=u+96|0;D=L+72|0;G=L+48|0;H=L+24|0;J=L;if(!(f[a>>2]|0))Ga(10673,11041,79,11147);F=a+4|0;if(!(f[F>>2]|0))Ga(10673,11041,79,11147);E=a+12|0;l=f[E>>2]|0;m=f[c>>2]|0;f[D>>2]=l;f[D+4>>2]=m;B=D+8|0;f[B>>2]=m;b[D+12>>0]=1;l=f[(f[l+28>>2]|0)+(m<<2)>>2]|0;C=a+16|0;k=f[C>>2]|0;c=f[k>>2]|0;if((f[k+4>>2]|0)-c>>2>>>0<=l>>>0){Kp(k);c=f[k>>2]|0}kg(G,a,f[c+(l<<2)>>2]|0);a:do if((m|0)>=0){x=H+8|0;t=G+8|0;z=H+16|0;v=G+16|0;w=J+8|0;y=J+16|0;A=m+1|0;A=((A|0)%3|0|0)==0?m+-2|0:A;s=m+(((m>>>0)%3|0|0)==0?2:-1)|0;q=0;p=0;r=0;n=0;l=0;o=0;while(1){if(!(f[a>>2]|0)){c=11;break}if(!(f[F>>2]|0)){c=11;break}m=f[(f[(f[E>>2]|0)+28>>2]|0)+(A<<2)>>2]|0;k=f[C>>2]|0;c=f[k>>2]|0;if((f[k+4>>2]|0)-c>>2>>>0<=m>>>0){Kp(k);c=f[k>>2]|0}kg(H,a,f[c+(m<<2)>>2]|0);if(!(f[a>>2]|0)){c=17;break}if(!(f[F>>2]|0)){c=17;break}m=f[(f[(f[E>>2]|0)+28>>2]|0)+(s<<2)>>2]|0;k=f[C>>2]|0;c=f[k>>2]|0;if((f[k+4>>2]|0)-c>>2>>>0<=m>>>0){Kp(k);c=f[k>>2]|0}kg(J,a,f[c+(m<<2)>>2]|0);M=H;W=G;V=f[W>>2]|0;W=f[W+4>>2]|0;M=Xn(f[M>>2]|0,f[M+4>>2]|0,V|0,W|0)|0;N=I;O=x;Y=t;X=f[Y>>2]|0;Y=f[Y+4>>2]|0;O=Xn(f[O>>2]|0,f[O+4>>2]|0,X|0,Y|0)|0;P=I;R=z;k=v;Q=f[k>>2]|0;k=f[k+4>>2]|0;R=Xn(f[R>>2]|0,f[R+4>>2]|0,Q|0,k|0)|0;S=I;m=J;W=Xn(f[m>>2]|0,f[m+4>>2]|0,V|0,W|0)|0;V=I;m=w;Y=Xn(f[m>>2]|0,f[m+4>>2]|0,X|0,Y|0)|0;X=I;m=y;k=Xn(f[m>>2]|0,f[m+4>>2]|0,Q|0,k|0)|0;Q=I;m=kn(k|0,Q|0,O|0,P|0)|0;c=I;U=kn(Y|0,X|0,R|0,S|0)|0;T=I;S=kn(W|0,V|0,R|0,S|0)|0;R=I;Q=kn(k|0,Q|0,M|0,N|0)|0;k=I;N=kn(Y|0,X|0,M|0,N|0)|0;M=I;P=kn(W|0,V|0,O|0,P|0)|0;O=I;q=Xn(q|0,p|0,U|0,T|0)|0;c=Ho(q|0,I|0,m|0,c|0)|0;m=I;n=Ho(S|0,R|0,r|0,n|0)|0;k=Xn(n|0,I|0,Q|0,k|0)|0;n=I;l=Xn(l|0,o|0,P|0,O|0)|0;l=Ho(l|0,I|0,N|0,M|0)|0;o=I;Pf(D);if((f[B>>2]|0)<0){j=m;i=c;h=n;g=k;K=o;e=l;break a}else{q=c;p=m;r=k}}if((c|0)==11)Ga(10673,11041,63,11169);else if((c|0)==17)Ga(10673,11041,63,11169)}else{j=0;i=0;h=0;g=0;K=0;e=0}while(0);X=(j|0)>-1|(j|0)==-1&i>>>0>4294967295;Y=Xn(0,0,i|0,j|0)|0;c=X?j:I;S=(h|0)>-1|(h|0)==-1&g>>>0>4294967295;T=Xn(0,0,g|0,h|0)|0;U=S?h:I;W=(K|0)>-1|(K|0)==-1&e>>>0>4294967295;V=Xn(0,0,e|0,K|0)|0;W=Ho((S?g:T)|0,U|0,(W?e:V)|0,(W?K:I)|0)|0;c=Ho(W|0,I|0,(X?i:Y)|0,c|0)|0;if((c|0)>536870912){c=Tn(c|0,I|0,29)|0;c=c&7;i=pk(i|0,j|0,c|0,0)|0;j=I;g=pk(g|0,h|0,c|0,0)|0;h=I;e=pk(e|0,K|0,c|0,0)|0;c=I}else c=K;W=(j|0)>-1|(j|0)==-1&i>>>0>4294967295;X=Xn(0,0,i|0,j|0)|0;Y=W?j:I;R=(h|0)>-1|(h|0)==-1&g>>>0>4294967295;S=Xn(0,0,g|0,h|0)|0;T=R?h:I;V=(c|0)>-1|(c|0)==-1&e>>>0>4294967295;U=Xn(0,0,e|0,c|0)|0;V=Ho((R?g:S)|0,T|0,(V?e:U)|0,(V?c:I)|0)|0;Y=Ho(V|0,I|0,(W?i:X)|0,Y|0)|0;X=I;if((X|0)<0|(X|0)==0&Y>>>0<536870913){f[d>>2]=i;f[d+4>>2]=g;f[d+8>>2]=e;u=L;return}else Ga(11190,11041,117,11147)}function ec(a,b){a=a|0;b=b|0;var c=0,d=0,e=0,g=0,h=0,i=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,v=0,w=0,x=0,y=0,z=0;z=u;u=u+32|0;w=z+28|0;t=z+24|0;j=z+20|0;k=z+16|0;l=z+12|0;m=z+8|0;s=z+4|0;v=z;e=f[b>>2]|0;if((e|0)<0){u=z;return}x=(e>>>0)/3|0;q=a+12|0;if(f[(f[q>>2]|0)+(x>>>5<<2)>>2]&1<<(x&31)|0){u=z;return}x=a+56|0;c=f[x>>2]|0;r=a+60|0;d=f[r>>2]|0;if((d|0)!=(c|0)){c=d+(~((d+-4-c|0)>>>2)<<2)|0;f[r>>2]=c}o=a+64|0;if((c|0)==(f[o>>2]|0))Ii(x,b);else{f[c>>2]=e;f[r>>2]=c+4}g=f[a>>2]|0;e=f[b>>2]|0;c=e+1|0;if((e|0)>=0){c=((c|0)%3|0|0)==0?e+-2|0:c;if((c|0)<0)d=-1073741824;else d=f[(f[g>>2]|0)+(c<<2)>>2]|0;c=(((e>>>0)%3|0|0)==0?2:-1)+e|0;if((c|0)<0)i=-1073741824;else i=f[(f[g>>2]|0)+(c<<2)>>2]|0}else{d=-1073741824;i=-1073741824}n=a+24|0;c=f[n>>2]|0;g=c+(d>>>5<<2)|0;h=1<<(d&31);e=f[g>>2]|0;if(!(e&h)){f[g>>2]=e|h;f[j>>2]=d;c=f[b>>2]|0;d=c+1|0;if((c|0)>=0)c=((d|0)%3|0|0)==0?c+-2|0:d;f[k>>2]=c;f[t>>2]=f[j>>2];f[w>>2]=f[k>>2];tg(a+36|0,t,w);c=f[n>>2]|0}d=c+(i>>>5<<2)|0;e=1<<(i&31);c=f[d>>2]|0;if(!(c&e)){f[d>>2]=c|e;d=a+36|0;f[l>>2]=i;c=f[b>>2]|0;do if((c|0)>=0)if(!((c>>>0)%3|0)){c=c+2|0;break}else{c=c+-1|0;break}while(0);f[m>>2]=c;f[t>>2]=f[l>>2];f[w>>2]=f[m>>2];tg(d,t,w)}d=f[x>>2]|0;c=f[r>>2]|0;if((d|0)==(c|0)){u=z;return}k=a+36|0;g=c;while(1){c=f[g+-4>>2]|0;f[b>>2]=c;e=(c|0)/3|0;if((c|0)>=0?(p=f[q>>2]|0,(f[p+(e>>>5<<2)>>2]&1<<(e&31)|0)==0):0){d=p;a:while(1){e=(c|0)/3|0;g=d+(e>>>5<<2)|0;f[g>>2]=1<<(e&31)|f[g>>2];g=f[b>>2]|0;e=f[a>>2]|0;if((g|0)<0)j=-1073741824;else j=f[(f[e>>2]|0)+(g<<2)>>2]|0;d=f[(f[e+24>>2]|0)+(j<<2)>>2]|0;c=d+1|0;if((d|0)>=0){c=((c|0)%3|0|0)==0?d+-2|0:c;if((c|0)>=0){d=f[(f[e+12>>2]|0)+(c<<2)>>2]|0;c=d+1|0;if((d|0)<0)i=d;else i=((c|0)%3|0|0)==0?d+-2|0:c}else i=c}else i=d;d=(f[n>>2]|0)+(j>>>5<<2)|0;h=1<<(j&31);c=f[d>>2]|0;if(!(c&h)){f[d>>2]=c|h;f[s>>2]=j;f[v>>2]=f[b>>2];f[t>>2]=f[s>>2];f[w>>2]=f[v>>2];tg(k,t,w);d=f[a>>2]|0;c=f[b>>2]|0;if((i|0)<0){g=c;e=d;y=41}else{do if((c|0)<0)c=-1073741824;else{m=c+1|0;c=((m|0)%3|0|0)==0?c+-2|0:m;if((c|0)<0)break;c=f[(f[d+12>>2]|0)+(c<<2)>>2]|0}while(0);f[b>>2]=c}}else y=41;if((y|0)==41){y=0;if((g|0)<0){y=44;break}c=g+1|0;c=((c|0)%3|0|0)==0?g+-2|0:c;if((c|0)>=0)c=f[(f[e+12>>2]|0)+(c<<2)>>2]|0;f[w>>2]=c;d=(((g>>>0)%3|0|0)==0?2:-1)+g|0;if((d|0)>=0)d=f[(f[e+12>>2]|0)+(d<<2)>>2]|0;m=(c|0)<0;h=m?-1:(c>>>0)/3|0;g=(d|0)<0;i=g?-1:(d>>>0)/3|0;do if(!m){e=f[q>>2]|0;if(f[e+(h>>>5<<2)>>2]&1<<(h&31)|0){y=49;break}if(g)break;if(!(f[e+(i>>>5<<2)>>2]&1<<(i&31))){y=54;break a}}else y=49;while(0);if((y|0)==49){y=0;if(g){y=51;break}if(!(f[(f[q>>2]|0)+(i>>>5<<2)>>2]&1<<(i&31)))c=d;else{y=51;break}}f[b>>2]=c}d=f[q>>2]|0}do if((y|0)==44){f[w>>2]=-1073741824;y=51}else if((y|0)==54){y=0;c=f[r>>2]|0;f[c+-4>>2]=d;if((c|0)==(f[o>>2]|0)){Ii(x,w);c=f[r>>2]|0;break}else{f[c>>2]=f[w>>2];c=c+4|0;f[r>>2]=c;break}}while(0);if((y|0)==51){y=0;c=(f[r>>2]|0)+-4|0;f[r>>2]=c}d=f[x>>2]|0}else{c=g+-4|0;f[r>>2]=c}if((d|0)==(c|0))break;else g=c}u=z;return}function fc(a,c,d){a=a|0;c=c|0;d=d|0;var e=0,g=0,i=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,v=0,w=0,x=0,y=0,z=0;w=u;u=u+688|0;t=w+680|0;l=w;v=w+8|0;m=w+676|0;n=w+672|0;o=w+668|0;p=w+664|0;q=w+660|0;r=w+656|0;s=w+4|0;i=c+8|0;y=i;g=f[y>>2]|0;y=f[y+4>>2]|0;k=c+16|0;j=k;e=f[j>>2]|0;j=Ho(e|0,f[j+4>>2]|0,4,0)|0;x=I;if((y|0)<(x|0)|(y|0)==(x|0)&g>>>0>>0){y=0;u=w;return y|0}y=(f[c>>2]|0)+e|0;y=h[y>>0]|h[y+1>>0]<<8|h[y+2>>0]<<16|h[y+3>>0]<<24;b[a>>0]=y;b[a+1>>0]=y>>8;b[a+2>>0]=y>>16;b[a+3>>0]=y>>24;y=k;j=f[y>>2]|0;y=f[y+4>>2]|0;e=Ho(j|0,y|0,4,0)|0;g=k;f[g>>2]=e;f[g+4>>2]=I;g=i;x=f[g>>2]|0;g=f[g+4>>2]|0;y=Ho(j|0,y|0,8,0)|0;j=I;if((g|0)<(j|0)|(g|0)==(j|0)&x>>>0>>0){y=0;u=w;return y|0}y=a+4|0;g=(f[c>>2]|0)+e|0;g=h[g>>0]|h[g+1>>0]<<8|h[g+2>>0]<<16|h[g+3>>0]<<24;b[y>>0]=g;b[y+1>>0]=g>>8;b[y+2>>0]=g>>16;b[y+3>>0]=g>>24;y=k;g=f[y>>2]|0;y=f[y+4>>2]|0;e=Ho(g|0,y|0,4,0)|0;j=k;f[j>>2]=e;f[j+4>>2]=I;j=a+12|0;z=i;x=f[z>>2]|0;z=f[z+4>>2]|0;y=Ho(g|0,y|0,8,0)|0;g=I;if((z|0)<(g|0)|(z|0)==(g|0)&x>>>0>>0){z=0;u=w;return z|0}g=(f[c>>2]|0)+e|0;g=h[g>>0]|h[g+1>>0]<<8|h[g+2>>0]<<16|h[g+3>>0]<<24;b[j>>0]=g;b[j+1>>0]=g>>8;b[j+2>>0]=g>>16;b[j+3>>0]=g>>24;z=k;x=f[z>>2]|0;z=f[z+4>>2]|0;e=Ho(x|0,z|0,4,0)|0;y=k;f[y>>2]=e;f[y+4>>2]=I;a=a+16|0;y=f[i>>2]|0;i=f[i+4>>2]|0;z=Ho(x|0,z|0,8,0)|0;x=I;if((i|0)<(x|0)|(i|0)==(x|0)&y>>>0>>0){z=0;u=w;return z|0}e=(f[c>>2]|0)+e|0;e=h[e>>0]|h[e+1>>0]<<8|h[e+2>>0]<<16|h[e+3>>0]<<24;b[a>>0]=e;b[a+1>>0]=e>>8;b[a+2>>0]=e>>16;b[a+3>>0]=e>>24;y=k;y=Ho(f[y>>2]|0,f[y+4>>2]|0,4,0)|0;z=k;f[z>>2]=y;f[z+4>>2]=I;if(e>>>0>6){f[l>>2]=e;In(17659,l)|0;z=0;u=w;return z|0}e=d;a:do if(g|0){Vi(d,g);switch(f[a>>2]|0){case 0:{$h(v,3);f[m>>2]=e;f[t>>2]=f[m>>2];Oe(v,c,t)|0;Uf(v);break a}case 1:{$h(v,3);f[n>>2]=e;f[t>>2]=f[n>>2];Ne(v,c,t)|0;Uf(v);break a}case 2:{ai(v,3);f[o>>2]=e;f[t>>2]=f[o>>2];Qe(v,c,t)|0;Xf(v);break a}case 3:{ai(v,3);f[p>>2]=e;f[t>>2]=f[p>>2];Pe(v,c,t)|0;Xf(v);break a}case 4:{Kh(v,3);f[q>>2]=e;f[t>>2]=f[q>>2];ke(v,c,t)|0;Jf(v);break a}case 5:{Kh(v,3);f[r>>2]=e;f[t>>2]=f[r>>2];je(v,c,t)|0;Jf(v);break a}case 6:{Kh(v,3);f[s>>2]=e;f[t>>2]=f[s>>2];ie(v,c,t)|0;Jf(v);break a}default:{z=0;u=w;return z|0}}}while(0);z=(((f[d+4>>2]|0)-(f[d>>2]|0)|0)/12|0|0)==(f[j>>2]|0);u=w;return z|0}function gc(a,c,d){a=a|0;c=c|0;d=d|0;var e=La,g=0,i=0,j=0,k=La,l=La,m=La;switch(b[a+24>>0]|0){case 1:{i=f[c>>2]|0;c=a+48|0;g=f[c>>2]|0;c=f[c+4>>2]|0;j=a+40|0;c=(Ho(kn(f[j>>2]|0,f[j+4>>2]|0,i|0,((i|0)<0)<<31>>31|0)|0,I|0,g|0,c|0)|0)+(f[f[a>>2]>>2]|0)|0;b[s>>0]=b[c>>0];b[s+1>>0]=b[c+1>>0];b[s+2>>0]=b[c+2>>0];b[s+3>>0]=b[c+3>>0];e=$(n[s>>2]);c=+K(+e)>=1.0?(+e>0.0?~~+Y(+J(+e/4294967296.0),4294967295.0)>>>0:~~+W((+e-+(~~+e>>>0))/4294967296.0)>>>0):0;a=d;f[a>>2]=~~+e>>>0;f[a+4>>2]=c;a=d+8|0;f[a>>2]=0;f[a+4>>2]=0;f[a+8>>2]=0;f[a+12>>2]=0;f[a+16>>2]=0;f[a+20>>2]=0;a=1;return a|0}case 2:{j=f[c>>2]|0;i=a+48|0;g=f[i>>2]|0;i=f[i+4>>2]|0;c=a+40|0;i=(Ho(kn(f[c>>2]|0,f[c+4>>2]|0,j|0,((j|0)<0)<<31>>31|0)|0,I|0,g|0,i|0)|0)+(f[f[a>>2]>>2]|0)|0;g=i;i=i+4|0;i=h[i>>0]|h[i+1>>0]<<8|h[i+2>>0]<<16|h[i+3>>0]<<24;e=(f[s>>2]=h[g>>0]|h[g+1>>0]<<8|h[g+2>>0]<<16|h[g+3>>0]<<24,$(n[s>>2]));g=+K(+e)>=1.0?(+e>0.0?~~+Y(+J(+e/4294967296.0),4294967295.0)>>>0:~~+W((+e-+(~~+e>>>0))/4294967296.0)>>>0):0;j=d;f[j>>2]=~~+e>>>0;f[j+4>>2]=g;e=(f[s>>2]=i,$(n[s>>2]));i=+K(+e)>=1.0?(+e>0.0?~~+Y(+J(+e/4294967296.0),4294967295.0)>>>0:~~+W((+e-+(~~+e>>>0))/4294967296.0)>>>0):0;j=d+8|0;f[j>>2]=~~+e>>>0;f[j+4>>2]=i;j=d+16|0;f[j>>2]=0;f[j+4>>2]=0;f[j+8>>2]=0;f[j+12>>2]=0;j=1;return j|0}case 3:{g=f[c>>2]|0;i=a+48|0;j=f[i>>2]|0;i=f[i+4>>2]|0;c=a+40|0;i=(Ho(kn(f[c>>2]|0,f[c+4>>2]|0,g|0,((g|0)<0)<<31>>31|0)|0,I|0,j|0,i|0)|0)+(f[f[a>>2]>>2]|0)|0;b[s>>0]=b[i>>0];b[s+1>>0]=b[i+1>>0];b[s+2>>0]=b[i+2>>0];b[s+3>>0]=b[i+3>>0];l=$(n[s>>2]);j=i+4|0;b[s>>0]=b[j>>0];b[s+1>>0]=b[j+1>>0];b[s+2>>0]=b[j+2>>0];b[s+3>>0]=b[j+3>>0];k=$(n[s>>2]);i=i+8|0;b[s>>0]=b[i>>0];b[s+1>>0]=b[i+1>>0];b[s+2>>0]=b[i+2>>0];b[s+3>>0]=b[i+3>>0];e=$(n[s>>2]);i=+K(+l)>=1.0?(+l>0.0?~~+Y(+J(+l/4294967296.0),4294967295.0)>>>0:~~+W((+l-+(~~+l>>>0))/4294967296.0)>>>0):0;j=d;f[j>>2]=~~+l>>>0;f[j+4>>2]=i;j=+K(+k)>=1.0?(+k>0.0?~~+Y(+J(+k/4294967296.0),4294967295.0)>>>0:~~+W((+k-+(~~+k>>>0))/4294967296.0)>>>0):0;i=d+8|0;f[i>>2]=~~+k>>>0;f[i+4>>2]=j;i=+K(+e)>=1.0?(+e>0.0?~~+Y(+J(+e/4294967296.0),4294967295.0)>>>0:~~+W((+e-+(~~+e>>>0))/4294967296.0)>>>0):0;j=d+16|0;f[j>>2]=~~+e>>>0;f[j+4>>2]=i;j=d+24|0;f[j>>2]=0;f[j+4>>2]=0;j=1;return j|0}case 4:{g=f[c>>2]|0;j=a+48|0;i=f[j>>2]|0;j=f[j+4>>2]|0;c=a+40|0;j=(Ho(kn(f[c>>2]|0,f[c+4>>2]|0,g|0,((g|0)<0)<<31>>31|0)|0,I|0,i|0,j|0)|0)+(f[f[a>>2]>>2]|0)|0;b[s>>0]=b[j>>0];b[s+1>>0]=b[j+1>>0];b[s+2>>0]=b[j+2>>0];b[s+3>>0]=b[j+3>>0];m=$(n[s>>2]);i=j+4|0;b[s>>0]=b[i>>0];b[s+1>>0]=b[i+1>>0];b[s+2>>0]=b[i+2>>0];b[s+3>>0]=b[i+3>>0];e=$(n[s>>2]);i=j+8|0;b[s>>0]=b[i>>0];b[s+1>>0]=b[i+1>>0];b[s+2>>0]=b[i+2>>0];b[s+3>>0]=b[i+3>>0];k=$(n[s>>2]);j=j+12|0;b[s>>0]=b[j>>0];b[s+1>>0]=b[j+1>>0];b[s+2>>0]=b[j+2>>0];b[s+3>>0]=b[j+3>>0];l=$(n[s>>2]);j=+K(+m)>=1.0?(+m>0.0?~~+Y(+J(+m/4294967296.0),4294967295.0)>>>0:~~+W((+m-+(~~+m>>>0))/4294967296.0)>>>0):0;i=d;f[i>>2]=~~+m>>>0;f[i+4>>2]=j;i=+K(+e)>=1.0?(+e>0.0?~~+Y(+J(+e/4294967296.0),4294967295.0)>>>0:~~+W((+e-+(~~+e>>>0))/4294967296.0)>>>0):0;j=d+8|0;f[j>>2]=~~+e>>>0;f[j+4>>2]=i;j=+K(+k)>=1.0?(+k>0.0?~~+Y(+J(+k/4294967296.0),4294967295.0)>>>0:~~+W((+k-+(~~+k>>>0))/4294967296.0)>>>0):0;i=d+16|0;f[i>>2]=~~+k>>>0;f[i+4>>2]=j;i=+K(+l)>=1.0?(+l>0.0?~~+Y(+J(+l/4294967296.0),4294967295.0)>>>0:~~+W((+l-+(~~+l>>>0))/4294967296.0)>>>0):0;j=d+24|0;f[j>>2]=~~+l>>>0;f[j+4>>2]=i;j=1;return j|0}default:{j=0;return j|0}}return 0}function hc(a,c){a=a|0;c=c|0;var d=0,e=0,g=La,i=La,j=0,k=0,l=0,m=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0,v=0,w=0,x=0,y=La;t=b[c+11>>0]|0;v=t<<24>>24<0;u=v?f[c>>2]|0:c;t=v?f[c+4>>2]|0:t&255;if(t>>>0>3){j=u;m=t;k=t;while(1){v=X(h[j>>0]|h[j+1>>0]<<8|h[j+2>>0]<<16|h[j+3>>0]<<24,1540483477)|0;m=(X(v>>>24^v,1540483477)|0)^(X(m,1540483477)|0);k=k+-4|0;if(k>>>0<=3)break;else j=j+4|0}v=t+-4|0;k=v&-4;l=u+(k+4)|0;j=m;k=v-k|0}else{l=u;j=t;k=t}switch(k|0){case 3:{o=h[l+2>>0]<<16^j;x=6;break}case 2:{o=j;x=6;break}case 1:{p=j;x=7;break}default:q=j}if((x|0)==6){p=h[l+1>>0]<<8^o;x=7}if((x|0)==7)q=X(h[l>>0]^p,1540483477)|0;v=X(q>>>13^q,1540483477)|0;v=v>>>15^v;r=a+4|0;q=f[r>>2]|0;s=(q|0)==0;a:do if(!s){o=q+-1|0;k=(o&q|0)==0;if(k)p=v&o;else p=(v>>>0)%(q>>>0)|0;j=f[(f[a>>2]|0)+(p<<2)>>2]|0;if((j|0)!=0?(e=f[j>>2]|0,(e|0)!=0):0){j=(t|0)==0;if(k){if(j){while(1){if((f[e+4>>2]&o|0)!=(p|0)){d=p;break a}u=b[e+8+11>>0]|0;if(!((u<<24>>24<0?f[e+12>>2]|0:u&255)|0))break;e=f[e>>2]|0;if(!e){d=p;break a}}a=e+20|0;return a|0}b:while(1){if((f[e+4>>2]&o|0)!=(p|0)){d=p;break a}j=e+8|0;l=b[j+11>>0]|0;m=l<<24>>24<0;l=l&255;do if(((m?f[e+12>>2]|0:l)|0)==(t|0)){k=f[j>>2]|0;if(m)if(!(rl(k,u,t)|0)){x=54;break b}else break;if((k&255)<<24>>24==(b[u>>0]|0)){k=u;do{l=l+-1|0;j=j+1|0;if(!l){x=54;break b}k=k+1|0}while((b[j>>0]|0)==(b[k>>0]|0))}}while(0);e=f[e>>2]|0;if(!e){d=p;break a}}if((x|0)==54){a=e+20|0;return a|0}}else{if(j){d=e;while(1){if((((f[d+4>>2]|0)>>>0)%(q>>>0)|0|0)!=(p|0)){d=p;break a}u=b[d+8+11>>0]|0;if(!((u<<24>>24<0?f[d+12>>2]|0:u&255)|0)){e=d;break}d=f[d>>2]|0;if(!d){d=p;break a}}a=e+20|0;return a|0}c:while(1){if((((f[e+4>>2]|0)>>>0)%(q>>>0)|0|0)!=(p|0)){d=p;break a}j=e+8|0;l=b[j+11>>0]|0;m=l<<24>>24<0;l=l&255;do if(((m?f[e+12>>2]|0:l)|0)==(t|0)){k=f[j>>2]|0;if(m)if(!(rl(k,u,t)|0)){x=54;break c}else break;if((k&255)<<24>>24==(b[u>>0]|0)){k=u;do{l=l+-1|0;j=j+1|0;if(!l){x=54;break c}k=k+1|0}while((b[j>>0]|0)==(b[k>>0]|0))}}while(0);e=f[e>>2]|0;if(!e){d=p;break a}}if((x|0)==54){a=e+20|0;return a|0}}}else d=p}else d=0;while(0);l=ln(24)|0;ml(l+8|0,c);f[l+20>>2]=0;f[l+4>>2]=v;f[l>>2]=0;k=a+12|0;i=$(((f[k>>2]|0)+1|0)>>>0);y=$(q>>>0);g=$(n[a+16>>2]);do if(s|i>$(y*g)){d=(q>>>0<3|(q+-1&q|0)!=0)&1|q<<1;e=~~$(W($(i/g)))>>>0;Zh(a,d>>>0>>0?e:d);d=f[r>>2]|0;e=d+-1|0;if(!(e&d)){j=d;d=e&v;break}else{j=d;d=(v>>>0)%(d>>>0)|0;break}}else j=q;while(0);e=(f[a>>2]|0)+(d<<2)|0;d=f[e>>2]|0;if(!d){d=a+8|0;f[l>>2]=f[d>>2];f[d>>2]=l;f[e>>2]=d;d=f[l>>2]|0;if(d|0){d=f[d+4>>2]|0;e=j+-1|0;if(!(e&j))d=d&e;else d=(d>>>0)%(j>>>0)|0;w=(f[a>>2]|0)+(d<<2)|0;x=52}}else{f[l>>2]=f[d>>2];w=d;x=52}if((x|0)==52)f[w>>2]=l;f[k>>2]=(f[k>>2]|0)+1;a=l;a=a+20|0;return a|0}function ic(a,c){a=a|0;c=c|0;var d=0,e=0,g=0,i=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,v=0,w=0,x=0,y=0,z=0,A=0,B=0,C=0,D=0,E=0,F=0,G=0,H=0,J=0;G=u;u=u+80|0;C=G+76|0;B=G;F=G+72|0;A=G+64|0;E=G+68|0;D=a+28|0;do if(((h[(f[D>>2]|0)+36>>0]|0)<<8&65535)<512){x=c+8|0;y=f[x>>2]|0;x=f[x+4>>2]|0;i=c+16|0;e=i;d=f[e>>2]|0;e=Ho(d|0,f[e+4>>2]|0,4,0)|0;g=I;if((x|0)<(g|0)|(x|0)==(g|0)&y>>>0>>0){F=0;u=G;return F|0}else{d=(f[c>>2]|0)+d|0;d=h[d>>0]|h[d+1>>0]<<8|h[d+2>>0]<<16|h[d+3>>0]<<24;f[C>>2]=d;y=i;f[y>>2]=e;f[y+4>>2]=g;break}}else if(yj(C,c)|0){d=f[C>>2]|0;break}else{F=0;u=G;return F|0}while(0);if(!d){F=0;u=G;return F|0}y=a+4|0;x=a+8|0;g=f[x>>2]|0;e=f[y>>2]|0;i=g-e>>2;if(d>>>0>i>>>0){ui(y,d-i|0);if(!(f[C>>2]|0)){F=1;u=G;return F|0}}else if(d>>>0>>0?(j=e+(d<<2)|0,(g|0)!=(j|0)):0)f[x>>2]=g+(~((g+-4-j|0)>>>2)<<2);p=f[a+32>>2]|0;s=c+8|0;v=c+16|0;w=B+60|0;r=p+8|0;q=p+12|0;t=a+16|0;n=a+20|0;o=0;while(1){g=s;e=f[g>>2]|0;g=f[g+4>>2]|0;k=v;a=f[k>>2]|0;k=f[k+4>>2]|0;if(!((g|0)>(k|0)|(g|0)==(k|0)&e>>>0>a>>>0)){d=0;e=53;break}i=f[c>>2]|0;m=b[i+a>>0]|0;d=Ho(a|0,k|0,1,0)|0;l=I;j=v;f[j>>2]=d;f[j+4>>2]=l;if(!((g|0)>(l|0)|(g|0)==(l|0)&e>>>0>d>>>0)){d=0;e=53;break}l=b[i+d>>0]|0;d=Ho(a|0,k|0,2,0)|0;j=I;H=v;f[H>>2]=d;f[H+4>>2]=j;if(!((g|0)>(j|0)|(g|0)==(j|0)&e>>>0>d>>>0)){d=0;e=53;break}j=b[i+d>>0]|0;d=Ho(a|0,k|0,3,0)|0;H=I;J=v;f[J>>2]=d;f[J+4>>2]=H;if(!((g|0)>(H|0)|(g|0)==(H|0)&e>>>0>d>>>0)){d=0;e=53;break}e=b[i+d>>0]|0;J=Ho(a|0,k|0,4,0)|0;d=v;f[d>>2]=J;f[d+4>>2]=I;d=l&255;if((l+-1&255)>10){d=0;e=53;break}Ol(B);J=X(cm(d)|0,j&255)|0;xj(B,m&255,0,j,d,e<<24>>24!=0,J,((J|0)<0)<<31>>31,0,0);J=f[D>>2]|0;if((((h[J+36>>0]|0)<<8|(h[J+37>>0]|0))&65535)>258){yj(F,c)|0;d=f[F>>2]|0}else{H=s;J=f[H>>2]|0;H=f[H+4>>2]|0;e=v;d=f[e>>2]|0;e=Ho(d|0,f[e+4>>2]|0,2,0)|0;g=I;if((H|0)<(g|0)|(H|0)==(g|0)&J>>>0>>0){e=51;break}d=(f[c>>2]|0)+d|0;d=h[d>>0]|h[d+1>>0]<<8;J=v;f[J>>2]=e;f[J+4>>2]=g;d=d&65535;f[F>>2]=d}f[w>>2]=d;a=ln(96)|0;Bl(a,B);f[A>>2]=a;a=ph(p,A)|0;i=f[A>>2]|0;f[A>>2]=0;if(i|0){J=i+88|0;d=f[J>>2]|0;f[J>>2]=0;if(d|0){e=f[d+8>>2]|0;if(e|0){g=d+12|0;if((f[g>>2]|0)!=(e|0))f[g>>2]=e;ar(e)}ar(d)}d=f[i+68>>2]|0;if(d|0){g=i+72|0;e=f[g>>2]|0;if((e|0)!=(d|0))f[g>>2]=e+(~((e+-4-d|0)>>>2)<<2);ar(d)}J=i+64|0;d=f[J>>2]|0;f[J>>2]=0;if(d|0){e=f[d>>2]|0;if(e|0){g=d+4|0;if((f[g>>2]|0)!=(e|0))f[g>>2]=e;ar(e)}ar(d)}ar(i)}if((a|0)<=-1){e=41;break}d=f[r>>2]|0;if(((f[q>>2]|0)-d>>2|0)<=(a|0)){e=43;break}f[(f[d+(a<<2)>>2]|0)+60>>2]=f[F>>2];e=f[y>>2]|0;f[e+(o<<2)>>2]=a;g=f[n>>2]|0;d=f[t>>2]|0;j=g-d>>2;if((a|0)>=(j|0)){i=a+1|0;f[E>>2]=-1;if(i>>>0<=j>>>0){if(i>>>0>>0?(z=d+(i<<2)|0,(g|0)!=(z|0)):0)f[n>>2]=g+(~((g+-4-z|0)>>>2)<<2)}else{ch(t,i-j|0,E);e=f[y>>2]|0;d=f[t>>2]|0}}f[d+(a<<2)>>2]=((f[x>>2]|0)-e>>2)+-1;o=o+1|0;if(o>>>0>=(f[C>>2]|0)>>>0){d=1;e=53;break}}if((e|0)==41)Ga(17188,17204,71,17242);else if((e|0)==43)Ga(17252,17204,72,17242);else if((e|0)==51){J=0;u=G;return J|0}else if((e|0)==53){u=G;return d|0}return 0}function jc(a,c,d){a=a|0;c=c|0;d=d|0;var e=0,g=0,h=0,i=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,v=0,w=0,x=0,y=0,z=0,A=0,B=0,C=0,D=0;D=u;u=u+16|0;A=D+8|0;x=D+4|0;B=D;y=a+64|0;e=f[y>>2]|0;if(((f[e+28>>2]|0)-(f[e+24>>2]|0)|0)<=0){u=D;return}z=c+84|0;t=c+88|0;w=a+52|0;v=d+84|0;m=d+68|0;o=a+56|0;q=a+60|0;l=a+12|0;n=a+28|0;s=a+40|0;p=a+44|0;r=a+48|0;j=0;k=0;a:while(1){h=f[(f[e+24>>2]|0)+(k<<2)>>2]|0;if((h|0)<0)c=j;else{i=j+1|0;d=(h>>>0)/3|0;c=f[z>>2]|0;if((d|0)>=(((f[t>>2]|0)-c|0)/12|0|0)){C=6;break}c=f[c+(d*12|0)+(((h>>>0)%3|0)<<2)>>2]|0;if(!(b[v>>0]|0))c=f[(f[m>>2]|0)+(c<<2)>>2]|0;f[A>>2]=c;d=f[o>>2]|0;if(d>>>0<(f[q>>2]|0)>>>0){f[d>>2]=c;f[o>>2]=d+4}else Ii(w,A);f[A>>2]=h;f[x>>2]=0;b:do if(!(f[(f[l>>2]|0)+(k>>>5<<2)>>2]&1<<(k&31)))c=h;else{c=h+1|0;c=((c|0)%3|0|0)==0?h+-2|0:c;g=f[a>>2]|0;if(!(1<<(c&31)&f[g+(c>>>5<<2)>>2])){if((c|0)>=0){c=f[(f[(f[y>>2]|0)+12>>2]|0)+(c<<2)>>2]|0;d=c+1|0;if((c|0)>=0){c=((d|0)%3|0|0)==0?c+-2|0:d;f[x>>2]=c;if((c|0)<=-1){c=h;break}while(1){f[A>>2]=c;d=c+1|0;d=((d|0)%3|0|0)==0?c+-2|0:d;if(1<<(d&31)&f[g+(d>>>5<<2)>>2]|0){d=-1073741824;break}if((d|0)<0)break;d=f[(f[(f[y>>2]|0)+12>>2]|0)+(d<<2)>>2]|0;e=d+1|0;if((d|0)<0)break;d=((e|0)%3|0|0)==0?d+-2|0:e;f[x>>2]=d;if((d|0)>-1)c=d;else break b}f[x>>2]=d;break}}}else c=-1073741824;f[x>>2]=c;c=h}while(0);f[(f[n>>2]|0)+(c<<2)>>2]=j;c=f[p>>2]|0;if((c|0)==(f[r>>2]|0))Ii(s,A);else{f[c>>2]=f[A>>2];f[p>>2]=c+4}e=f[y>>2]|0;c=f[A>>2]|0;c:do if((c|0)>=0){d=(((c>>>0)%3|0|0)==0?2:-1)+c|0;if((d|0)>=0){d=f[(f[e+12>>2]|0)+(d<<2)>>2]|0;if((d|0)>=0){d=d+(((d>>>0)%3|0|0)==0?2:-1)|0;f[x>>2]=d;if((d|0)>-1&(d|0)!=(c|0)){e=j;while(1){j=d+1|0;j=((j|0)%3|0|0)==0?d+-2|0:j;do if(f[(f[a>>2]|0)+(j>>>5<<2)>>2]&1<<(j&31)){h=i+1|0;e=(d>>>0)/3|0;c=f[z>>2]|0;if((e|0)>=(((f[t>>2]|0)-c|0)/12|0|0)){C=33;break a}c=f[c+(e*12|0)+(((d>>>0)%3|0)<<2)>>2]|0;if(!(b[v>>0]|0))c=f[(f[m>>2]|0)+(c<<2)>>2]|0;f[B>>2]=c;d=f[o>>2]|0;if(d>>>0<(f[q>>2]|0)>>>0){f[d>>2]=c;f[o>>2]=d+4}else Ii(w,B);c=f[p>>2]|0;if((c|0)==(f[r>>2]|0)){Ii(s,x);g=i;c=h;break}else{f[c>>2]=f[x>>2];f[p>>2]=c+4;g=i;c=h;break}}else{g=e;c=i}while(0);f[(f[n>>2]|0)+(f[x>>2]<<2)>>2]=g;e=f[y>>2]|0;d=f[x>>2]|0;if((d|0)<0)break;d=(((d>>>0)%3|0|0)==0?2:-1)+d|0;if((d|0)<0)break;d=f[(f[e+12>>2]|0)+(d<<2)>>2]|0;if((d|0)<0)break;d=d+(((d>>>0)%3|0|0)==0?2:-1)|0;f[x>>2]=d;if(!((d|0)>-1?(d|0)!=(f[A>>2]|0):0))break c;else{e=g;i=c}}f[x>>2]=d}else c=i}else{c=d;C=30}}else{c=d;C=30}}else C=30;while(0);if((C|0)==30){C=0;f[x>>2]=c;c=i}}k=k+1|0;if((k|0)>=((f[e+28>>2]|0)-(f[e+24>>2]|0)>>2|0)){C=3;break}else j=c}if((C|0)==3){u=D;return}else if((C|0)==6)Ga(18176,18147,64,18171);else if((C|0)==33)Ga(18176,18147,64,18171)}function kc(a,b,c,d,e,g){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;g=g|0;var h=0,i=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,B=0,C=0;x=a+8|0;f[x>>2]=e;i=a+32|0;h=a+36|0;g=f[h>>2]|0;d=f[i>>2]|0;j=g-d>>2;if(j>>>0>=e>>>0)if(j>>>0>e>>>0?(k=d+(e<<2)|0,(g|0)!=(k|0)):0){f[h>>2]=g+(~((g+-4-k|0)>>>2)<<2);d=e}else d=e;else{ui(i,e-j|0);d=f[x>>2]|0}u=f[a+48>>2]|0;v=f[a+52>>2]|0;t=e>>>0>1073741823?-1:e<<2;w=Zq(t)|0;ej(w|0,0,t|0)|0;if((d|0)>0){k=a+16|0;h=a+32|0;l=a+12|0;i=0;do{d=f[w+(i<<2)>>2]|0;g=f[k>>2]|0;if((d|0)>(g|0)){j=f[h>>2]|0;f[j+(i<<2)>>2]=g}else{t=f[l>>2]|0;j=f[h>>2]|0;f[j+(i<<2)>>2]=(d|0)<(t|0)?t:d}i=i+1|0;d=f[x>>2]|0}while((i|0)<(d|0));if((d|0)>0){i=a+20|0;h=0;do{d=(f[b+(h<<2)>>2]|0)+(f[j+(h<<2)>>2]|0)|0;g=c+(h<<2)|0;f[g>>2]=d;if((d|0)<=(f[k>>2]|0)){if((d|0)<(f[l>>2]|0)){d=(f[i>>2]|0)+d|0;C=18}}else{d=d-(f[i>>2]|0)|0;C=18}if((C|0)==18){C=0;f[g>>2]=d}h=h+1|0}while((h|0)<(f[x>>2]|0))}}q=a+56|0;h=f[q>>2]|0;g=f[h+4>>2]|0;d=f[h>>2]|0;s=g-d|0;t=s>>2;if((s|0)<=4){_q(w);return 1}r=a+16|0;p=a+32|0;s=a+12|0;o=a+20|0;m=u+12|0;n=(e|0)>0;i=g;a=1;while(1){if(i-d>>2>>>0<=a>>>0){Kp(h);d=f[h>>2]|0}d=f[d+(a<<2)>>2]|0;l=X(a,e)|0;if((d|0)>=0?(B=f[(f[m>>2]|0)+(d<<2)>>2]|0,(B|0)>=0):0){g=f[u>>2]|0;h=f[v>>2]|0;i=f[h+(f[g+(B<<2)>>2]<<2)>>2]|0;d=B+1|0;d=((d|0)%3|0|0)==0?B+-2|0:d;if((d|0)<0)d=-1073741824;else d=f[g+(d<<2)>>2]|0;j=f[h+(d<<2)>>2]|0;d=(((B>>>0)%3|0|0)==0?2:-1)+B|0;if((d|0)<0)d=-1073741824;else d=f[g+(d<<2)>>2]|0;d=f[h+(d<<2)>>2]|0;if((i|0)<(a|0)&(j|0)<(a|0)&(d|0)<(a|0)){i=X(i,e)|0;h=X(j,e)|0;g=X(d,e)|0;if(n){d=0;do{f[w+(d<<2)>>2]=(f[c+(d+g<<2)>>2]|0)+(f[c+(d+h<<2)>>2]|0)-(f[c+(d+i<<2)>>2]|0);d=d+1|0}while((d|0)!=(e|0))}j=b+(l<<2)|0;k=c+(l<<2)|0;if((f[x>>2]|0)>0){h=0;do{d=f[w+(h<<2)>>2]|0;g=f[r>>2]|0;if((d|0)>(g|0)){i=f[p>>2]|0;f[i+(h<<2)>>2]=g}else{g=f[s>>2]|0;i=f[p>>2]|0;f[i+(h<<2)>>2]=(d|0)<(g|0)?g:d}h=h+1|0;d=f[x>>2]|0}while((h|0)<(d|0));if((d|0)>0){h=0;do{d=(f[j+(h<<2)>>2]|0)+(f[i+(h<<2)>>2]|0)|0;g=k+(h<<2)|0;f[g>>2]=d;if((d|0)<=(f[r>>2]|0)){if((d|0)<(f[s>>2]|0)){d=(f[o>>2]|0)+d|0;C=57}}else{d=d-(f[o>>2]|0)|0;C=57}if((C|0)==57){C=0;f[g>>2]=d}h=h+1|0}while((h|0)<(f[x>>2]|0))}}}else C=35}else C=35;if((C|0)==35?(C=0,y=c+((X(a+-1|0,e)|0)<<2)|0,z=b+(l<<2)|0,A=c+(l<<2)|0,(f[x>>2]|0)>0):0){h=0;do{d=f[y+(h<<2)>>2]|0;g=f[r>>2]|0;if((d|0)>(g|0)){i=f[p>>2]|0;f[i+(h<<2)>>2]=g}else{l=f[s>>2]|0;i=f[p>>2]|0;f[i+(h<<2)>>2]=(d|0)<(l|0)?l:d}h=h+1|0;d=f[x>>2]|0}while((h|0)<(d|0));if((d|0)>0){h=0;do{d=(f[z+(h<<2)>>2]|0)+(f[i+(h<<2)>>2]|0)|0;g=A+(h<<2)|0;f[g>>2]=d;if((d|0)<=(f[r>>2]|0)){if((d|0)<(f[s>>2]|0)){d=(f[o>>2]|0)+d|0;C=45}}else{d=d-(f[o>>2]|0)|0;C=45}if((C|0)==45){C=0;f[g>>2]=d}h=h+1|0}while((h|0)<(f[x>>2]|0))}}g=a+1|0;if((g|0)>=(t|0))break;h=f[q>>2]|0;d=f[h>>2]|0;i=f[h+4>>2]|0;a=g}_q(w);return 1}function lc(a,b,c,d,e,g){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;g=g|0;var h=0,i=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,B=0,C=0,D=0,E=0,F=0,G=0;y=a+8|0;f[y>>2]=e;i=a+32|0;h=a+36|0;g=f[h>>2]|0;d=f[i>>2]|0;j=g-d>>2;if(j>>>0>=e>>>0)if(j>>>0>e>>>0?(k=d+(e<<2)|0,(g|0)!=(k|0)):0){f[h>>2]=g+(~((g+-4-k|0)>>>2)<<2);d=e}else d=e;else{ui(i,e-j|0);d=f[y>>2]|0}v=f[a+48>>2]|0;w=f[a+52>>2]|0;u=e>>>0>1073741823?-1:e<<2;x=Zq(u)|0;ej(x|0,0,u|0)|0;if((d|0)>0){k=a+16|0;h=a+32|0;l=a+12|0;i=0;do{d=f[x+(i<<2)>>2]|0;g=f[k>>2]|0;if((d|0)>(g|0)){j=f[h>>2]|0;f[j+(i<<2)>>2]=g}else{u=f[l>>2]|0;j=f[h>>2]|0;f[j+(i<<2)>>2]=(d|0)<(u|0)?u:d}i=i+1|0;d=f[y>>2]|0}while((i|0)<(d|0));if((d|0)>0){i=a+20|0;h=0;do{d=(f[b+(h<<2)>>2]|0)+(f[j+(h<<2)>>2]|0)|0;g=c+(h<<2)|0;f[g>>2]=d;if((d|0)<=(f[k>>2]|0)){if((d|0)<(f[l>>2]|0)){d=(f[i>>2]|0)+d|0;G=18}}else{d=d-(f[i>>2]|0)|0;G=18}if((G|0)==18){G=0;f[g>>2]=d}h=h+1|0}while((h|0)<(f[y>>2]|0))}}r=a+56|0;h=f[r>>2]|0;g=f[h+4>>2]|0;d=f[h>>2]|0;t=g-d|0;u=t>>2;if((t|0)<=4){_q(x);return 1}s=a+16|0;q=a+32|0;t=a+12|0;p=a+20|0;o=v+64|0;m=v+28|0;n=(e|0)>0;i=g;a=1;while(1){if(i-d>>2>>>0<=a>>>0){Kp(h);d=f[h>>2]|0}d=f[d+(a<<2)>>2]|0;l=X(a,e)|0;if((!((d|0)<0?1:(1<<(d&31)&f[(f[v>>2]|0)+(d>>>5<<2)>>2]|0)!=0)?(F=f[(f[(f[o>>2]|0)+12>>2]|0)+(d<<2)>>2]|0,(F|0)>=0):0)?(B=f[m>>2]|0,k=f[w>>2]|0,z=f[k+(f[B+(F<<2)>>2]<<2)>>2]|0,A=F+1|0,A=f[k+(f[B+((((A|0)%3|0|0)==0?F+-2|0:A)<<2)>>2]<<2)>>2]|0,B=f[k+(f[B+((((F>>>0)%3|0|0)==0?2:-1)+F<<2)>>2]<<2)>>2]|0,(z|0)<(a|0)&(A|0)<(a|0)&(B|0)<(a|0)):0){g=X(z,e)|0;h=X(A,e)|0;i=X(B,e)|0;if(n){d=0;do{f[x+(d<<2)>>2]=(f[c+(d+i<<2)>>2]|0)+(f[c+(d+h<<2)>>2]|0)-(f[c+(d+g<<2)>>2]|0);d=d+1|0}while((d|0)!=(e|0))}j=b+(l<<2)|0;k=c+(l<<2)|0;if((f[y>>2]|0)>0){h=0;do{d=f[x+(h<<2)>>2]|0;g=f[s>>2]|0;if((d|0)>(g|0)){i=f[q>>2]|0;f[i+(h<<2)>>2]=g}else{g=f[t>>2]|0;i=f[q>>2]|0;f[i+(h<<2)>>2]=(d|0)<(g|0)?g:d}h=h+1|0;d=f[y>>2]|0}while((h|0)<(d|0));if((d|0)>0){h=0;do{d=(f[j+(h<<2)>>2]|0)+(f[i+(h<<2)>>2]|0)|0;g=k+(h<<2)|0;f[g>>2]=d;if((d|0)<=(f[s>>2]|0)){if((d|0)<(f[t>>2]|0)){d=(f[p>>2]|0)+d|0;G=53}}else{d=d-(f[p>>2]|0)|0;G=53}if((G|0)==53){G=0;f[g>>2]=d}h=h+1|0}while((h|0)<(f[y>>2]|0))}}}else G=31;if((G|0)==31?(G=0,C=c+((X(a+-1|0,e)|0)<<2)|0,D=b+(l<<2)|0,E=c+(l<<2)|0,(f[y>>2]|0)>0):0){h=0;do{d=f[C+(h<<2)>>2]|0;g=f[s>>2]|0;if((d|0)>(g|0)){i=f[q>>2]|0;f[i+(h<<2)>>2]=g}else{l=f[t>>2]|0;i=f[q>>2]|0;f[i+(h<<2)>>2]=(d|0)<(l|0)?l:d}h=h+1|0;d=f[y>>2]|0}while((h|0)<(d|0));if((d|0)>0){h=0;do{d=(f[D+(h<<2)>>2]|0)+(f[i+(h<<2)>>2]|0)|0;g=E+(h<<2)|0;f[g>>2]=d;if((d|0)<=(f[s>>2]|0)){if((d|0)<(f[t>>2]|0)){d=(f[p>>2]|0)+d|0;G=41}}else{d=d-(f[p>>2]|0)|0;G=41}if((G|0)==41){G=0;f[g>>2]=d}h=h+1|0}while((h|0)<(f[y>>2]|0))}}g=a+1|0;if((g|0)>=(u|0))break;h=f[r>>2]|0;d=f[h>>2]|0;i=f[h+4>>2]|0;a=g}_q(x);return 1}function mc(a,c,d){a=a|0;c=c|0;d=d|0;var e=La,g=0,i=0,j=0,k=La,l=La;switch(b[a+24>>0]|0){case 1:{i=f[c>>2]|0;c=a+48|0;g=f[c>>2]|0;c=f[c+4>>2]|0;j=a+40|0;c=(Ho(kn(f[j>>2]|0,f[j+4>>2]|0,i|0,((i|0)<0)<<31>>31|0)|0,I|0,g|0,c|0)|0)+(f[f[a>>2]>>2]|0)|0;b[s>>0]=b[c>>0];b[s+1>>0]=b[c+1>>0];b[s+2>>0]=b[c+2>>0];b[s+3>>0]=b[c+3>>0];e=$(n[s>>2]);c=+K(+e)>=1.0?(+e>0.0?~~+Y(+J(+e/4294967296.0),4294967295.0)>>>0:~~+W((+e-+(~~+e>>>0))/4294967296.0)>>>0):0;a=d;f[a>>2]=~~+e>>>0;f[a+4>>2]=c;a=d+8|0;f[a>>2]=0;f[a+4>>2]=0;f[a+8>>2]=0;f[a+12>>2]=0;a=1;return a|0}case 2:{j=f[c>>2]|0;i=a+48|0;g=f[i>>2]|0;i=f[i+4>>2]|0;c=a+40|0;i=(Ho(kn(f[c>>2]|0,f[c+4>>2]|0,j|0,((j|0)<0)<<31>>31|0)|0,I|0,g|0,i|0)|0)+(f[f[a>>2]>>2]|0)|0;g=i;i=i+4|0;i=h[i>>0]|h[i+1>>0]<<8|h[i+2>>0]<<16|h[i+3>>0]<<24;e=(f[s>>2]=h[g>>0]|h[g+1>>0]<<8|h[g+2>>0]<<16|h[g+3>>0]<<24,$(n[s>>2]));g=+K(+e)>=1.0?(+e>0.0?~~+Y(+J(+e/4294967296.0),4294967295.0)>>>0:~~+W((+e-+(~~+e>>>0))/4294967296.0)>>>0):0;j=d;f[j>>2]=~~+e>>>0;f[j+4>>2]=g;e=(f[s>>2]=i,$(n[s>>2]));i=+K(+e)>=1.0?(+e>0.0?~~+Y(+J(+e/4294967296.0),4294967295.0)>>>0:~~+W((+e-+(~~+e>>>0))/4294967296.0)>>>0):0;j=d+8|0;f[j>>2]=~~+e>>>0;f[j+4>>2]=i;j=d+16|0;f[j>>2]=0;f[j+4>>2]=0;j=1;return j|0}case 3:{g=f[c>>2]|0;i=a+48|0;j=f[i>>2]|0;i=f[i+4>>2]|0;c=a+40|0;i=(Ho(kn(f[c>>2]|0,f[c+4>>2]|0,g|0,((g|0)<0)<<31>>31|0)|0,I|0,j|0,i|0)|0)+(f[f[a>>2]>>2]|0)|0;b[s>>0]=b[i>>0];b[s+1>>0]=b[i+1>>0];b[s+2>>0]=b[i+2>>0];b[s+3>>0]=b[i+3>>0];l=$(n[s>>2]);j=i+4|0;b[s>>0]=b[j>>0];b[s+1>>0]=b[j+1>>0];b[s+2>>0]=b[j+2>>0];b[s+3>>0]=b[j+3>>0];k=$(n[s>>2]);i=i+8|0;b[s>>0]=b[i>>0];b[s+1>>0]=b[i+1>>0];b[s+2>>0]=b[i+2>>0];b[s+3>>0]=b[i+3>>0];e=$(n[s>>2]);i=+K(+l)>=1.0?(+l>0.0?~~+Y(+J(+l/4294967296.0),4294967295.0)>>>0:~~+W((+l-+(~~+l>>>0))/4294967296.0)>>>0):0;j=d;f[j>>2]=~~+l>>>0;f[j+4>>2]=i;j=+K(+k)>=1.0?(+k>0.0?~~+Y(+J(+k/4294967296.0),4294967295.0)>>>0:~~+W((+k-+(~~+k>>>0))/4294967296.0)>>>0):0;i=d+8|0;f[i>>2]=~~+k>>>0;f[i+4>>2]=j;i=+K(+e)>=1.0?(+e>0.0?~~+Y(+J(+e/4294967296.0),4294967295.0)>>>0:~~+W((+e-+(~~+e>>>0))/4294967296.0)>>>0):0;j=d+16|0;f[j>>2]=~~+e>>>0;f[j+4>>2]=i;j=1;return j|0}case 4:{g=f[c>>2]|0;i=a+48|0;j=f[i>>2]|0;i=f[i+4>>2]|0;c=a+40|0;i=(Ho(kn(f[c>>2]|0,f[c+4>>2]|0,g|0,((g|0)<0)<<31>>31|0)|0,I|0,j|0,i|0)|0)+(f[f[a>>2]>>2]|0)|0;b[s>>0]=b[i>>0];b[s+1>>0]=b[i+1>>0];b[s+2>>0]=b[i+2>>0];b[s+3>>0]=b[i+3>>0];e=$(n[s>>2]);j=i+4|0;b[s>>0]=b[j>>0];b[s+1>>0]=b[j+1>>0];b[s+2>>0]=b[j+2>>0];b[s+3>>0]=b[j+3>>0];k=$(n[s>>2]);i=i+8|0;b[s>>0]=b[i>>0];b[s+1>>0]=b[i+1>>0];b[s+2>>0]=b[i+2>>0];b[s+3>>0]=b[i+3>>0];l=$(n[s>>2]);i=+K(+e)>=1.0?(+e>0.0?~~+Y(+J(+e/4294967296.0),4294967295.0)>>>0:~~+W((+e-+(~~+e>>>0))/4294967296.0)>>>0):0;j=d;f[j>>2]=~~+e>>>0;f[j+4>>2]=i;j=+K(+k)>=1.0?(+k>0.0?~~+Y(+J(+k/4294967296.0),4294967295.0)>>>0:~~+W((+k-+(~~+k>>>0))/4294967296.0)>>>0):0;i=d+8|0;f[i>>2]=~~+k>>>0;f[i+4>>2]=j;i=+K(+l)>=1.0?(+l>0.0?~~+Y(+J(+l/4294967296.0),4294967295.0)>>>0:~~+W((+l-+(~~+l>>>0))/4294967296.0)>>>0):0;j=d+16|0;f[j>>2]=~~+l>>>0;f[j+4>>2]=i;j=1;return j|0}default:{j=0;return j|0}}return 0}function nc(a,b,c,d,e,g,h){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;g=g|0;h=h|0;switch(c|0){case 1:{b=ln(60)|0;f[b>>2]=1832;f[b+4>>2]=d;d=b+8|0;f[d>>2]=f[e>>2];f[d+4>>2]=f[e+4>>2];f[d+8>>2]=f[e+8>>2];f[d+12>>2]=f[e+12>>2];f[d+16>>2]=f[e+16>>2];f[d+20>>2]=f[e+20>>2];Fj(b+32|0,e+24|0);e=b+44|0;f[e>>2]=f[g>>2];f[e+4>>2]=f[g+4>>2];f[e+8>>2]=f[g+8>>2];f[e+12>>2]=f[g+12>>2];f[b>>2]=2280;e=b;f[a>>2]=e;return}case 2:{b=ln(60)|0;f[b>>2]=1832;f[b+4>>2]=d;d=b+8|0;f[d>>2]=f[e>>2];f[d+4>>2]=f[e+4>>2];f[d+8>>2]=f[e+8>>2];f[d+12>>2]=f[e+12>>2];f[d+16>>2]=f[e+16>>2];f[d+20>>2]=f[e+20>>2];Fj(b+32|0,e+24|0);e=b+44|0;f[e>>2]=f[g>>2];f[e+4>>2]=f[g+4>>2];f[e+8>>2]=f[g+8>>2];f[e+12>>2]=f[g+12>>2];f[b>>2]=2336;e=b;f[a>>2]=e;return}case 4:{b=ln(112)|0;f[b>>2]=1832;f[b+4>>2]=d;h=b+8|0;f[h>>2]=f[e>>2];f[h+4>>2]=f[e+4>>2];f[h+8>>2]=f[e+8>>2];f[h+12>>2]=f[e+12>>2];f[h+16>>2]=f[e+16>>2];f[h+20>>2]=f[e+20>>2];Fj(b+32|0,e+24|0);h=b+44|0;f[h>>2]=f[g>>2];f[h+4>>2]=f[g+4>>2];f[h+8>>2]=f[g+8>>2];f[h+12>>2]=f[g+12>>2];f[b>>2]=2392;h=b+60|0;c=h+52|0;do{f[h>>2]=0;h=h+4|0}while((h|0)<(c|0));e=b;f[a>>2]=e;return}case 3:{b=ln(92)|0;f[b>>2]=1832;f[b+4>>2]=d;d=b+8|0;f[d>>2]=f[e>>2];f[d+4>>2]=f[e+4>>2];f[d+8>>2]=f[e+8>>2];f[d+12>>2]=f[e+12>>2];f[d+16>>2]=f[e+16>>2];f[d+20>>2]=f[e+20>>2];Fj(b+32|0,e+24|0);e=b+44|0;f[e>>2]=f[g>>2];f[e+4>>2]=f[g+4>>2];f[e+8>>2]=f[g+8>>2];f[e+12>>2]=f[g+12>>2];f[b>>2]=2448;e=b+60|0;f[e>>2]=0;f[e+4>>2]=0;f[e+8>>2]=0;f[e+12>>2]=0;f[e+16>>2]=0;f[e+20>>2]=0;f[e+24>>2]=0;f[b+88>>2]=h&65535;e=b;f[a>>2]=e;return}case 5:{b=ln(104)|0;f[b>>2]=1832;f[b+4>>2]=d;d=b+8|0;f[d>>2]=f[e>>2];f[d+4>>2]=f[e+4>>2];f[d+8>>2]=f[e+8>>2];f[d+12>>2]=f[e+12>>2];f[d+16>>2]=f[e+16>>2];f[d+20>>2]=f[e+20>>2];Fj(b+32|0,e+24|0);e=b+44|0;f[e>>2]=f[g>>2];f[e+4>>2]=f[g+4>>2];f[e+8>>2]=f[g+8>>2];f[e+12>>2]=f[g+12>>2];f[b>>2]=2504;f[b+60>>2]=0;f[b+64>>2]=0;f[b+76>>2]=0;f[b+80>>2]=0;f[b+84>>2]=0;e=b+88|0;f[e>>2]=f[g>>2];f[e+4>>2]=f[g+4>>2];f[e+8>>2]=f[g+8>>2];f[e+12>>2]=f[g+12>>2];e=b;f[a>>2]=e;return}case 6:{b=ln(116)|0;f[b>>2]=1832;f[b+4>>2]=d;d=b+8|0;f[d>>2]=f[e>>2];f[d+4>>2]=f[e+4>>2];f[d+8>>2]=f[e+8>>2];f[d+12>>2]=f[e+12>>2];f[d+16>>2]=f[e+16>>2];f[d+20>>2]=f[e+20>>2];Fj(b+32|0,e+24|0);e=b+44|0;f[e>>2]=f[g>>2];f[e+4>>2]=f[g+4>>2];f[e+8>>2]=f[g+8>>2];f[e+12>>2]=f[g+12>>2];f[b>>2]=2560;f[b+60>>2]=0;f[b+64>>2]=0;e=b+68|0;f[e>>2]=f[g>>2];f[e+4>>2]=f[g+4>>2];f[e+8>>2]=f[g+8>>2];f[e+12>>2]=f[g+12>>2];e=b+84|0;f[e>>2]=-1;f[e+4>>2]=-1;f[e+8>>2]=-1;f[e+12>>2]=-1;xq(b+100|0);e=b;f[a>>2]=e;return}default:{e=0;f[a>>2]=e;return}}}function oc(a,b,c,d,e,g,h){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;g=g|0;h=h|0;switch(c|0){case 1:{b=ln(60)|0;f[b>>2]=1832;f[b+4>>2]=d;d=b+8|0;f[d>>2]=f[e>>2];f[d+4>>2]=f[e+4>>2];f[d+8>>2]=f[e+8>>2];f[d+12>>2]=f[e+12>>2];f[d+16>>2]=f[e+16>>2];f[d+20>>2]=f[e+20>>2];Fj(b+32|0,e+24|0);e=b+44|0;f[e>>2]=f[g>>2];f[e+4>>2]=f[g+4>>2];f[e+8>>2]=f[g+8>>2];f[e+12>>2]=f[g+12>>2];f[b>>2]=1944;e=b;f[a>>2]=e;return}case 2:{b=ln(60)|0;f[b>>2]=1832;f[b+4>>2]=d;d=b+8|0;f[d>>2]=f[e>>2];f[d+4>>2]=f[e+4>>2];f[d+8>>2]=f[e+8>>2];f[d+12>>2]=f[e+12>>2];f[d+16>>2]=f[e+16>>2];f[d+20>>2]=f[e+20>>2];Fj(b+32|0,e+24|0);e=b+44|0;f[e>>2]=f[g>>2];f[e+4>>2]=f[g+4>>2];f[e+8>>2]=f[g+8>>2];f[e+12>>2]=f[g+12>>2];f[b>>2]=2e3;e=b;f[a>>2]=e;return}case 4:{b=ln(112)|0;f[b>>2]=1832;f[b+4>>2]=d;h=b+8|0;f[h>>2]=f[e>>2];f[h+4>>2]=f[e+4>>2];f[h+8>>2]=f[e+8>>2];f[h+12>>2]=f[e+12>>2];f[h+16>>2]=f[e+16>>2];f[h+20>>2]=f[e+20>>2];Fj(b+32|0,e+24|0);h=b+44|0;f[h>>2]=f[g>>2];f[h+4>>2]=f[g+4>>2];f[h+8>>2]=f[g+8>>2];f[h+12>>2]=f[g+12>>2];f[b>>2]=2056;h=b+60|0;c=h+52|0;do{f[h>>2]=0;h=h+4|0}while((h|0)<(c|0));e=b;f[a>>2]=e;return}case 3:{b=ln(92)|0;f[b>>2]=1832;f[b+4>>2]=d;d=b+8|0;f[d>>2]=f[e>>2];f[d+4>>2]=f[e+4>>2];f[d+8>>2]=f[e+8>>2];f[d+12>>2]=f[e+12>>2];f[d+16>>2]=f[e+16>>2];f[d+20>>2]=f[e+20>>2];Fj(b+32|0,e+24|0);e=b+44|0;f[e>>2]=f[g>>2];f[e+4>>2]=f[g+4>>2];f[e+8>>2]=f[g+8>>2];f[e+12>>2]=f[g+12>>2];f[b>>2]=2112;e=b+60|0;f[e>>2]=0;f[e+4>>2]=0;f[e+8>>2]=0;f[e+12>>2]=0;f[e+16>>2]=0;f[e+20>>2]=0;f[e+24>>2]=0;f[b+88>>2]=h&65535;e=b;f[a>>2]=e;return}case 5:{b=ln(104)|0;f[b>>2]=1832;f[b+4>>2]=d;d=b+8|0;f[d>>2]=f[e>>2];f[d+4>>2]=f[e+4>>2];f[d+8>>2]=f[e+8>>2];f[d+12>>2]=f[e+12>>2];f[d+16>>2]=f[e+16>>2];f[d+20>>2]=f[e+20>>2];Fj(b+32|0,e+24|0);e=b+44|0;f[e>>2]=f[g>>2];f[e+4>>2]=f[g+4>>2];f[e+8>>2]=f[g+8>>2];f[e+12>>2]=f[g+12>>2];f[b>>2]=2168;f[b+60>>2]=0;f[b+64>>2]=0;f[b+76>>2]=0;f[b+80>>2]=0;f[b+84>>2]=0;e=b+88|0;f[e>>2]=f[g>>2];f[e+4>>2]=f[g+4>>2];f[e+8>>2]=f[g+8>>2];f[e+12>>2]=f[g+12>>2];e=b;f[a>>2]=e;return}case 6:{b=ln(116)|0;f[b>>2]=1832;f[b+4>>2]=d;d=b+8|0;f[d>>2]=f[e>>2];f[d+4>>2]=f[e+4>>2];f[d+8>>2]=f[e+8>>2];f[d+12>>2]=f[e+12>>2];f[d+16>>2]=f[e+16>>2];f[d+20>>2]=f[e+20>>2];Fj(b+32|0,e+24|0);e=b+44|0;f[e>>2]=f[g>>2];f[e+4>>2]=f[g+4>>2];f[e+8>>2]=f[g+8>>2];f[e+12>>2]=f[g+12>>2];f[b>>2]=2224;f[b+60>>2]=0;f[b+64>>2]=0;e=b+68|0;f[e>>2]=f[g>>2];f[e+4>>2]=f[g+4>>2];f[e+8>>2]=f[g+8>>2];f[e+12>>2]=f[g+12>>2];e=b+84|0;f[e>>2]=-1;f[e+4>>2]=-1;f[e+8>>2]=-1;f[e+12>>2]=-1;xq(b+100|0);e=b;f[a>>2]=e;return}default:{e=0;f[a>>2]=e;return}}}function pc(a,c,d){a=a|0;c=c|0;d=d|0;var e=0,g=0,i=0,j=0,k=0,l=0,m=0,n=0,o=0;l=u;u=u+16|0;k=l;i=c+8|0;o=i;m=f[o>>2]|0;o=f[o+4>>2]|0;j=c+16|0;g=j;e=f[g>>2]|0;g=Ho(e|0,f[g+4>>2]|0,5,0)|0;n=I;if((o|0)<(n|0)|(o|0)==(n|0)&m>>>0>>0){f[k>>2]=0;f[k+4>>2]=0;f[k+8>>2]=0;Pj(k,6402,29);f[a>>2]=-2;ml(a+4|0,k);Lo(k);u=l;return}e=(f[c>>2]|0)+e|0;b[d>>0]=b[e>>0]|0;b[d+1>>0]=b[e+1>>0]|0;b[d+2>>0]=b[e+2>>0]|0;b[d+3>>0]=b[e+3>>0]|0;b[d+4>>0]=b[e+4>>0]|0;e=j;e=Ho(f[e>>2]|0,f[e+4>>2]|0,5,0)|0;g=I;o=j;f[o>>2]=e;f[o+4>>2]=g;if(rl(d,6432,5)|0){f[k>>2]=0;f[k+4>>2]=0;f[k+8>>2]=0;Pj(k,6438,17);f[a>>2]=-1;ml(a+4|0,k);Lo(k);u=l;return}o=i;n=f[o+4>>2]|0;if(!((n|0)>(g|0)|((n|0)==(g|0)?(f[o>>2]|0)>>>0>e>>>0:0))){f[k>>2]=0;f[k+4>>2]=0;f[k+8>>2]=0;Pj(k,6402,29);f[a>>2]=-2;ml(a+4|0,k);Lo(k);u=l;return}b[d+5>>0]=b[(f[c>>2]|0)+e>>0]|0;e=j;e=Ho(f[e>>2]|0,f[e+4>>2]|0,1,0)|0;n=I;o=j;f[o>>2]=e;f[o+4>>2]=n;o=i;m=f[o+4>>2]|0;if(!((m|0)>(n|0)|((m|0)==(n|0)?(f[o>>2]|0)>>>0>e>>>0:0))){f[k>>2]=0;f[k+4>>2]=0;f[k+8>>2]=0;Pj(k,6402,29);f[a>>2]=-2;ml(a+4|0,k);Lo(k);u=l;return}b[d+6>>0]=b[(f[c>>2]|0)+e>>0]|0;e=j;e=Ho(f[e>>2]|0,f[e+4>>2]|0,1,0)|0;n=I;o=j;f[o>>2]=e;f[o+4>>2]=n;o=i;m=f[o+4>>2]|0;if(!((m|0)>(n|0)|((m|0)==(n|0)?(f[o>>2]|0)>>>0>e>>>0:0))){f[k>>2]=0;f[k+4>>2]=0;f[k+8>>2]=0;Pj(k,6402,29);f[a>>2]=-2;ml(a+4|0,k);Lo(k);u=l;return}b[d+7>>0]=b[(f[c>>2]|0)+e>>0]|0;e=j;e=Ho(f[e>>2]|0,f[e+4>>2]|0,1,0)|0;n=I;o=j;f[o>>2]=e;f[o+4>>2]=n;o=i;m=f[o+4>>2]|0;if(!((m|0)>(n|0)|((m|0)==(n|0)?(f[o>>2]|0)>>>0>e>>>0:0))){f[k>>2]=0;f[k+4>>2]=0;f[k+8>>2]=0;Pj(k,6402,29);f[a>>2]=-2;ml(a+4|0,k);Lo(k);u=l;return}b[d+8>>0]=b[(f[c>>2]|0)+e>>0]|0;o=j;m=f[o>>2]|0;o=f[o+4>>2]|0;e=Ho(m|0,o|0,1,0)|0;n=j;f[n>>2]=e;f[n+4>>2]=I;n=f[i>>2]|0;i=f[i+4>>2]|0;o=Ho(m|0,o|0,3,0)|0;m=I;if((i|0)<(m|0)|(i|0)==(m|0)&n>>>0>>0){f[k>>2]=0;f[k+4>>2]=0;f[k+8>>2]=0;Pj(k,6402,29);f[a>>2]=-2;ml(a+4|0,k);Lo(k);u=l;return}else{n=d+10|0;o=(f[c>>2]|0)+e|0;o=h[o>>0]|h[o+1>>0]<<8;b[n>>0]=o;b[n+1>>0]=o>>8;n=j;n=Ho(f[n>>2]|0,f[n+4>>2]|0,2,0)|0;o=j;f[o>>2]=n;f[o+4>>2]=I;f[a>>2]=0;f[a+4>>2]=0;f[a+8>>2]=0;f[a+12>>2]=0;u=l;return}}function qc(a){a=a|0;var b=0,c=0,d=0,e=0,g=0,h=0,i=0,j=0,k=0,l=0,m=0,n=0,o=0;o=u;u=u+32|0;k=o+4|0;j=o;c=a+16|0;b=f[c>>2]|0;if(b>>>0>340){f[c>>2]=b+-341;l=a+4|0;k=f[l>>2]|0;m=f[k>>2]|0;k=k+4|0;f[l>>2]=k;n=a+8|0;b=f[n>>2]|0;j=a+12|0;i=f[j>>2]|0;d=i;g=b;do if((b|0)==(i|0)){c=f[a>>2]|0;e=c;if(k>>>0>c>>>0){b=k;e=((b-e>>2)+1|0)/-2|0;d=k+(e<<2)|0;b=g-b|0;c=b>>2;if(!c)b=k;else{rm(d|0,k|0,b|0)|0;b=f[l>>2]|0}a=d+(c<<2)|0;f[n>>2]=a;f[l>>2]=b+(e<<2);b=a;break}d=d-e>>1;d=(d|0)==0?1:d;if(d>>>0>1073741823){o=Ia(4)|0;Eq(o);sa(o|0,1344,125)}g=ln(d<<2)|0;h=g;e=g+(d>>>2<<2)|0;i=e;g=g+(d<<2)|0;if((k|0)==(b|0))b=i;else{d=e;c=k;e=i;do{f[d>>2]=f[c>>2];d=e+4|0;e=d;c=c+4|0}while((c|0)!=(b|0));c=f[a>>2]|0;b=e}f[a>>2]=h;f[l>>2]=i;f[n>>2]=b;f[j>>2]=g;if(c){ar(c);b=f[n>>2]|0}}while(0);f[b>>2]=m;f[n>>2]=(f[n>>2]|0)+4;u=o;return}n=a+8|0;b=f[n>>2]|0;m=a+4|0;e=b-(f[m>>2]|0)|0;l=a+12|0;c=f[l>>2]|0;d=c-(f[a>>2]|0)|0;if(e>>>0>=d>>>0){b=d>>1;b=(b|0)==0?1:b;f[k+12>>2]=0;f[k+16>>2]=a+12;if(b>>>0>1073741823){o=Ia(4)|0;Eq(o);sa(o|0,1344,125)}d=ln(b<<2)|0;f[k>>2]=d;h=d+(e>>2<<2)|0;i=k+8|0;f[i>>2]=h;g=k+4|0;f[g>>2]=h;h=k+12|0;f[h>>2]=d+(b<<2);e=ln(4092)|0;f[j>>2]=e;Gg(k,j);e=f[n>>2]|0;while(1){b=f[m>>2]|0;if((e|0)==(b|0))break;j=e+-4|0;Ag(k,j);e=j}c=b;d=f[a>>2]|0;f[a>>2]=f[k>>2];f[k>>2]=d;f[m>>2]=f[g>>2];f[g>>2]=c;b=f[n>>2]|0;f[n>>2]=f[i>>2];f[i>>2]=b;a=f[l>>2]|0;f[l>>2]=f[h>>2];f[h>>2]=a;if((b|0)!=(e|0))f[i>>2]=b+(~((b+-4-c|0)>>>2)<<2);if(d|0)ar(d);u=o;return}if((c|0)!=(b|0)){n=ln(4092)|0;f[k>>2]=n;Gg(a,k);u=o;return}j=ln(4092)|0;f[k>>2]=j;Ag(a,k);j=f[m>>2]|0;k=f[j>>2]|0;j=j+4|0;f[m>>2]=j;b=f[n>>2]|0;i=f[l>>2]|0;c=i;g=b;do if((b|0)==(i|0)){e=f[a>>2]|0;d=e;if(j>>>0>e>>>0){b=j;e=((b-d>>2)+1|0)/-2|0;d=j+(e<<2)|0;b=g-b|0;c=b>>2;if(!c)b=j;else{rm(d|0,j|0,b|0)|0;b=f[m>>2]|0}a=d+(c<<2)|0;f[n>>2]=a;f[m>>2]=b+(e<<2);b=a;break}c=c-d>>1;c=(c|0)==0?1:c;if(c>>>0>1073741823){o=Ia(4)|0;Eq(o);sa(o|0,1344,125)}g=ln(c<<2)|0;h=g;d=g+(c>>>2<<2)|0;i=d;g=g+(c<<2)|0;if((j|0)==(b|0)){c=e;b=i}else{c=j;e=i;do{f[d>>2]=f[c>>2];d=e+4|0;e=d;c=c+4|0}while((c|0)!=(b|0));c=f[a>>2]|0;b=e}f[a>>2]=h;f[m>>2]=i;f[n>>2]=b;f[l>>2]=g;if(c){ar(c);b=f[n>>2]|0}}while(0);f[b>>2]=k;f[n>>2]=(f[n>>2]|0)+4;u=o;return}function rc(a,b,c,d){a=a|0;b=b|0;c=c|0;d=d|0;var e=0,g=0,h=0,i=La,j=La,k=La,l=La,m=La,o=0,p=0,q=La,r=La,s=0,t=0,v=La,w=La,x=La,y=La,z=0,A=0,B=0,C=0,D=La;C=u;u=u+48|0;B=C+24|0;z=C+12|0;A=C;h=a+32|0;e=f[b>>2]|0;b=e+1|0;if((e|0)>=0){g=((b|0)%3|0|0)==0?e+-2|0:b;b=e+(((e>>>0)%3|0|0)==0?2:-1)|0;if((g|0)<0)e=-1073741824;else e=f[(f[f[h>>2]>>2]|0)+(g<<2)>>2]|0;if((b|0)<0){t=-1073741824;s=e}else{t=f[(f[f[h>>2]>>2]|0)+(b<<2)>>2]|0;s=e}}else{t=-1073741824;s=-1073741824}b=a+36|0;o=f[b>>2]|0;g=f[o+4>>2]|0;p=f[o>>2]|0;if(g-p>>2>>>0>s>>>0){e=p;h=o;b=p}else{Kp(o);h=f[b>>2]|0;e=f[h>>2]|0;g=f[h+4>>2]|0;b=f[o>>2]|0}b=f[b+(s<<2)>>2]|0;if(g-e>>2>>>0<=t>>>0){Kp(h);e=f[h>>2]|0}g=f[e+(t<<2)>>2]|0;e=(b|0)<(d|0);if(e&(g|0)<(d|0)){t=f[a+56>>2]|0;s=X(t,b)|0;x=$(f[c+(s<<2)>>2]|0);y=$(f[c+(s+1<<2)>>2]|0);t=X(t,g)|0;w=$(f[c+(t<<2)>>2]|0);v=$(f[c+(t+1<<2)>>2]|0);if(!(w!=x|v!=y)){a=f[a+52>>2]|0;f[a>>2]=~~w;f[a+4>>2]=~~v;u=C;return}Xg(B,a,d);Xg(z,a,b);Xg(A,a,g);r=$(n[A>>2]);m=$(n[z>>2]);r=$(r-m);q=$(n[A+4>>2]);j=$(n[z+4>>2]);q=$(q-j);l=$(n[A+8>>2]);i=$(n[z+8>>2]);l=$(l-i);m=$($(n[B>>2])-m);j=$($(n[B+4>>2])-j);i=$($(n[B+8>>2])-i);k=$($($($(r*r)+$(0.0))+$(q*q))+$(l*l));if(k>$(0.0)?1:(f[a+72>>2]|0)<258){D=$($($($($(r*m)+$(0.0))+$(q*j))+$(l*i))/k);r=$(m-$(r*D));q=$(j-$(q*D));i=$(i-$(l*D));j=D;i=$(L($($($(i*i)+$($(q*q)+$($(r*r)+$(0.0))))/k)))}else{j=$(0.0);i=$(0.0)}D=$(w-x);r=$(v-y);w=$(x+$(D*j));D=$(D*i);v=$(y+$(r*j));x=$(r*i);c=a+64|0;A=(f[c>>2]|0)+-1|0;B=(1<<(A&31)&f[(f[a+60>>2]|0)+(A>>>5<<2)>>2]|0)==0;f[c>>2]=A;y=$(-D);D=$(v+(B?y:D));y=$(-x);B=~~+J(+(+$(w+(B?x:y))+.5));a=f[a+52>>2]|0;f[a>>2]=B;B=~~+J(+(+D+.5));f[a+4>>2]=B;u=C;return}do if(!e){if((d|0)>0){b=d+-1|0;break}g=a+56|0;if((f[g>>2]|0)<=0){u=C;return}b=f[a+52>>2]|0;e=0;do{f[b+(e<<2)>>2]=0;e=e+1|0}while((e|0)<(f[g>>2]|0));u=C;return}while(0);h=a+56|0;B=f[h>>2]|0;g=X(B,b)|0;if((B|0)<=0){u=C;return}b=f[a+52>>2]|0;e=0;do{f[b+(e<<2)>>2]=f[c+(e+g<<2)>>2];e=e+1|0}while((e|0)<(f[h>>2]|0));u=C;return}function sc(a,b,c,d){a=a|0;b=b|0;c=c|0;d=d|0;var e=0,g=0,h=0,i=La,j=La,k=La,l=La,m=La,o=0,p=0,q=La,r=La,s=0,t=0,v=La,w=La,x=La,y=La,z=0,A=0,B=0,C=0,D=La;C=u;u=u+48|0;B=C+24|0;z=C+12|0;A=C;h=a+48|0;e=f[b>>2]|0;b=e+1|0;if((e|0)>=0){g=((b|0)%3|0|0)==0?e+-2|0:b;b=e+(((e>>>0)%3|0|0)==0?2:-1)|0;if((g|0)<0)e=-1073741824;else e=f[(f[f[h>>2]>>2]|0)+(g<<2)>>2]|0;if((b|0)<0){t=-1073741824;s=e}else{t=f[(f[f[h>>2]>>2]|0)+(b<<2)>>2]|0;s=e}}else{t=-1073741824;s=-1073741824}b=a+52|0;o=f[b>>2]|0;g=f[o+4>>2]|0;p=f[o>>2]|0;if(g-p>>2>>>0>s>>>0){e=p;h=o;b=p}else{Kp(o);h=f[b>>2]|0;e=f[h>>2]|0;g=f[h+4>>2]|0;b=f[o>>2]|0}b=f[b+(s<<2)>>2]|0;if(g-e>>2>>>0<=t>>>0){Kp(h);e=f[h>>2]|0}g=f[e+(t<<2)>>2]|0;e=(b|0)<(d|0);if(e&(g|0)<(d|0)){t=f[a+72>>2]|0;s=X(t,b)|0;x=$(f[c+(s<<2)>>2]|0);y=$(f[c+(s+1<<2)>>2]|0);t=X(t,g)|0;w=$(f[c+(t<<2)>>2]|0);v=$(f[c+(t+1<<2)>>2]|0);if(!(w!=x|v!=y)){a=f[a+68>>2]|0;f[a>>2]=~~w;f[a+4>>2]=~~v;u=C;return}_g(B,a,d);_g(z,a,b);_g(A,a,g);r=$(n[A>>2]);m=$(n[z>>2]);r=$(r-m);q=$(n[A+4>>2]);j=$(n[z+4>>2]);q=$(q-j);l=$(n[A+8>>2]);i=$(n[z+8>>2]);l=$(l-i);m=$($(n[B>>2])-m);j=$($(n[B+4>>2])-j);i=$($(n[B+8>>2])-i);k=$($($($(r*r)+$(0.0))+$(q*q))+$(l*l));if(k>$(0.0)?1:(f[a+88>>2]|0)<258){D=$($($($($(r*m)+$(0.0))+$(q*j))+$(l*i))/k);r=$(m-$(r*D));q=$(j-$(q*D));i=$(i-$(l*D));j=D;i=$(L($($($(i*i)+$($(q*q)+$($(r*r)+$(0.0))))/k)))}else{j=$(0.0);i=$(0.0)}D=$(w-x);r=$(v-y);w=$(x+$(D*j));D=$(D*i);v=$(y+$(r*j));x=$(r*i);c=a+80|0;A=(f[c>>2]|0)+-1|0;B=(1<<(A&31)&f[(f[a+76>>2]|0)+(A>>>5<<2)>>2]|0)==0;f[c>>2]=A;y=$(-D);D=$(v+(B?y:D));y=$(-x);B=~~+J(+(+$(w+(B?x:y))+.5));a=f[a+68>>2]|0;f[a>>2]=B;B=~~+J(+(+D+.5));f[a+4>>2]=B;u=C;return}do if(!e){if((d|0)>0){b=d+-1|0;break}g=a+72|0;if((f[g>>2]|0)<=0){u=C;return}b=f[a+68>>2]|0;e=0;do{f[b+(e<<2)>>2]=0;e=e+1|0}while((e|0)<(f[g>>2]|0));u=C;return}while(0);h=a+72|0;B=f[h>>2]|0;g=X(B,b)|0;if((B|0)<=0){u=C;return}b=f[a+68>>2]|0;e=0;do{f[b+(e<<2)>>2]=f[c+(e+g<<2)>>2];e=e+1|0}while((e|0)<(f[h>>2]|0));u=C;return}function tc(a,b,c,d){a=a|0;b=b|0;c=c|0;d=d|0;var e=0,g=0,h=0,i=La,j=La,k=La,l=La,m=La,o=0,p=0,q=La,r=La,s=0,t=0,v=La,w=La,x=La,y=La,z=0,A=0,B=0,C=0,D=La;C=u;u=u+48|0;B=C+24|0;z=C+12|0;A=C;g=a+32|0;e=f[b>>2]|0;b=e+1|0;do if((e|0)>=0){b=((b|0)%3|0|0)==0?e+-2|0:b;if(!((e>>>0)%3|0)){e=e+2|0;break}else{e=e+-1|0;break}}else b=e;while(0);t=f[(f[g>>2]|0)+28>>2]|0;s=f[t+(b<<2)>>2]|0;t=f[t+(e<<2)>>2]|0;e=a+36|0;g=f[e>>2]|0;b=f[g+4>>2]|0;p=f[g>>2]|0;if(b-p>>2>>>0>s>>>0){h=b;o=g;b=p;e=p}else{Kp(g);e=f[e>>2]|0;h=f[e+4>>2]|0;o=e;b=f[g>>2]|0;e=f[e>>2]|0}b=f[b+(s<<2)>>2]|0;if(h-e>>2>>>0<=t>>>0){Kp(o);e=f[o>>2]|0}g=f[e+(t<<2)>>2]|0;e=(b|0)<(d|0);if(e&(g|0)<(d|0)){t=f[a+56>>2]|0;s=X(t,b)|0;x=$(f[c+(s<<2)>>2]|0);y=$(f[c+(s+1<<2)>>2]|0);t=X(t,g)|0;w=$(f[c+(t<<2)>>2]|0);v=$(f[c+(t+1<<2)>>2]|0);if(!(w!=x|v!=y)){a=f[a+52>>2]|0;f[a>>2]=~~w;f[a+4>>2]=~~v;u=C;return}Xg(B,a,d);Xg(z,a,b);Xg(A,a,g);r=$(n[A>>2]);m=$(n[z>>2]);r=$(r-m);q=$(n[A+4>>2]);j=$(n[z+4>>2]);q=$(q-j);l=$(n[A+8>>2]);i=$(n[z+8>>2]);l=$(l-i);m=$($(n[B>>2])-m);j=$($(n[B+4>>2])-j);i=$($(n[B+8>>2])-i);k=$($($($(r*r)+$(0.0))+$(q*q))+$(l*l));if(k>$(0.0)?1:(f[a+72>>2]|0)<258){D=$($($($($(r*m)+$(0.0))+$(q*j))+$(l*i))/k);r=$(m-$(r*D));q=$(j-$(q*D));i=$(i-$(l*D));j=D;i=$(L($($($(i*i)+$($(q*q)+$($(r*r)+$(0.0))))/k)))}else{j=$(0.0);i=$(0.0)}D=$(w-x);r=$(v-y);w=$(x+$(D*j));D=$(D*i);v=$(y+$(r*j));x=$(r*i);c=a+64|0;A=(f[c>>2]|0)+-1|0;B=(1<<(A&31)&f[(f[a+60>>2]|0)+(A>>>5<<2)>>2]|0)==0;f[c>>2]=A;y=$(-D);D=$(v+(B?y:D));y=$(-x);B=~~+J(+(+$(w+(B?x:y))+.5));a=f[a+52>>2]|0;f[a>>2]=B;B=~~+J(+(+D+.5));f[a+4>>2]=B;u=C;return}do if(!e){if((d|0)>0){b=d+-1|0;break}g=a+56|0;if((f[g>>2]|0)<=0){u=C;return}b=f[a+52>>2]|0;e=0;do{f[b+(e<<2)>>2]=0;e=e+1|0}while((e|0)<(f[g>>2]|0));u=C;return}while(0);h=a+56|0;B=f[h>>2]|0;g=X(B,b)|0;if((B|0)<=0){u=C;return}b=f[a+52>>2]|0;e=0;do{f[b+(e<<2)>>2]=f[c+(e+g<<2)>>2];e=e+1|0}while((e|0)<(f[h>>2]|0));u=C;return}function uc(a,b,c){a=a|0;b=b|0;c=c|0;var d=0,e=0,g=0,h=0,i=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,v=0,w=0;v=u;u=u+16|0;r=v+8|0;q=v+4|0;o=v;p=a+64|0;c=f[p>>2]|0;if(((f[c+28>>2]|0)-(f[c+24>>2]|0)|0)<=0){u=v;return}s=a+52|0;k=a+56|0;m=a+60|0;i=a+12|0;j=a+28|0;t=a+40|0;l=a+44|0;n=a+48|0;b=0;h=0;do{d=f[(f[c+24>>2]|0)+(h<<2)>>2]|0;if((d|0)>=0){e=b+1|0;f[r>>2]=b;c=f[k>>2]|0;if((c|0)==(f[m>>2]|0))Ii(s,r);else{f[c>>2]=b;f[k>>2]=c+4}f[q>>2]=d;f[o>>2]=0;a:do if(!(f[(f[i>>2]|0)+(h>>>5<<2)>>2]&1<<(h&31)))c=d;else{c=d+1|0;c=((c|0)%3|0|0)==0?d+-2|0:c;g=f[a>>2]|0;if(!(1<<(c&31)&f[g+(c>>>5<<2)>>2])){if((c|0)>=0){c=f[(f[(f[p>>2]|0)+12>>2]|0)+(c<<2)>>2]|0;b=c+1|0;if((c|0)>=0){c=((b|0)%3|0|0)==0?c+-2|0:b;f[o>>2]=c;if((c|0)<=-1){c=d;break}while(1){f[q>>2]=c;b=c+1|0;b=((b|0)%3|0|0)==0?c+-2|0:b;if(1<<(b&31)&f[g+(b>>>5<<2)>>2]|0){b=-1073741824;break}if((b|0)<0)break;b=f[(f[(f[p>>2]|0)+12>>2]|0)+(b<<2)>>2]|0;d=b+1|0;if((b|0)<0)break;b=((d|0)%3|0|0)==0?b+-2|0:d;f[o>>2]=b;if((b|0)>-1)c=b;else break a}f[o>>2]=b;break}}}else c=-1073741824;f[o>>2]=c;c=d}while(0);f[(f[j>>2]|0)+(c<<2)>>2]=f[r>>2];c=f[l>>2]|0;if((c|0)==(f[n>>2]|0))Ii(t,q);else{f[c>>2]=f[q>>2];f[l>>2]=c+4}c=f[p>>2]|0;b=f[q>>2]|0;b:do if((b|0)>=0){d=(((b>>>0)%3|0|0)==0?2:-1)+b|0;if((d|0)>=0){d=f[(f[c+12>>2]|0)+(d<<2)>>2]|0;if((d|0)>=0){d=d+(((d>>>0)%3|0|0)==0?2:-1)|0;f[o>>2]=d;if((d|0)>-1&(d|0)!=(b|0)){b=d;while(1){g=b+1|0;g=((g|0)%3|0|0)==0?b+-2|0:g;do if(f[(f[a>>2]|0)+(g>>>5<<2)>>2]&1<<(g&31)){b=e+1|0;f[r>>2]=e;c=f[k>>2]|0;if((c|0)==(f[m>>2]|0))Ii(s,r);else{f[c>>2]=e;f[k>>2]=c+4}c=f[l>>2]|0;if((c|0)==(f[n>>2]|0)){Ii(t,o);e=b;break}else{f[c>>2]=f[o>>2];f[l>>2]=c+4;e=b;break}}while(0);f[(f[j>>2]|0)+(f[o>>2]<<2)>>2]=f[r>>2];c=f[p>>2]|0;b=f[o>>2]|0;if((b|0)<0)break;b=(((b>>>0)%3|0|0)==0?2:-1)+b|0;if((b|0)<0)break;b=f[(f[c+12>>2]|0)+(b<<2)>>2]|0;if((b|0)<0)break;b=b+(((b>>>0)%3|0|0)==0?2:-1)|0;f[o>>2]=b;if(!((b|0)>-1?(b|0)!=(f[q>>2]|0):0)){b=e;break b}}f[o>>2]=b;b=e}else b=e}else{b=d;w=26}}else{b=d;w=26}}else w=26;while(0);if((w|0)==26){w=0;f[o>>2]=b;b=e}}h=h+1|0}while((h|0)<((f[c+28>>2]|0)-(f[c+24>>2]|0)>>2|0));u=v;return}function vc(a,b,c,d){a=a|0;b=b|0;c=c|0;d=d|0;var e=0,g=0,h=0,i=La,j=La,k=La,l=La,m=La,o=0,p=0,q=La,r=La,s=0,t=0,v=La,w=La,x=La,y=La,z=0,A=0,B=0,C=0,D=La;C=u;u=u+48|0;B=C+24|0;z=C+12|0;A=C;g=a+48|0;e=f[b>>2]|0;b=e+1|0;do if((e|0)>=0){b=((b|0)%3|0|0)==0?e+-2|0:b;if(!((e>>>0)%3|0)){e=e+2|0;break}else{e=e+-1|0;break}}else b=e;while(0);t=f[(f[g>>2]|0)+28>>2]|0;s=f[t+(b<<2)>>2]|0;t=f[t+(e<<2)>>2]|0;e=a+52|0;g=f[e>>2]|0;b=f[g+4>>2]|0;p=f[g>>2]|0;if(b-p>>2>>>0>s>>>0){h=b;o=g;b=p;e=p}else{Kp(g);e=f[e>>2]|0;h=f[e+4>>2]|0;o=e;b=f[g>>2]|0;e=f[e>>2]|0}b=f[b+(s<<2)>>2]|0;if(h-e>>2>>>0<=t>>>0){Kp(o);e=f[o>>2]|0}g=f[e+(t<<2)>>2]|0;e=(b|0)<(d|0);if(e&(g|0)<(d|0)){t=f[a+72>>2]|0;s=X(t,b)|0;x=$(f[c+(s<<2)>>2]|0);y=$(f[c+(s+1<<2)>>2]|0);t=X(t,g)|0;w=$(f[c+(t<<2)>>2]|0);v=$(f[c+(t+1<<2)>>2]|0);if(!(w!=x|v!=y)){a=f[a+68>>2]|0;f[a>>2]=~~w;f[a+4>>2]=~~v;u=C;return}_g(B,a,d);_g(z,a,b);_g(A,a,g);r=$(n[A>>2]);m=$(n[z>>2]);r=$(r-m);q=$(n[A+4>>2]);j=$(n[z+4>>2]);q=$(q-j);l=$(n[A+8>>2]);i=$(n[z+8>>2]);l=$(l-i);m=$($(n[B>>2])-m);j=$($(n[B+4>>2])-j);i=$($(n[B+8>>2])-i);k=$($($($(r*r)+$(0.0))+$(q*q))+$(l*l));if(k>$(0.0)?1:(f[a+88>>2]|0)<258){D=$($($($($(r*m)+$(0.0))+$(q*j))+$(l*i))/k);r=$(m-$(r*D));q=$(j-$(q*D));i=$(i-$(l*D));j=D;i=$(L($($($(i*i)+$($(q*q)+$($(r*r)+$(0.0))))/k)))}else{j=$(0.0);i=$(0.0)}D=$(w-x);r=$(v-y);w=$(x+$(D*j));D=$(D*i);v=$(y+$(r*j));x=$(r*i);c=a+80|0;A=(f[c>>2]|0)+-1|0;B=(1<<(A&31)&f[(f[a+76>>2]|0)+(A>>>5<<2)>>2]|0)==0;f[c>>2]=A;y=$(-D);D=$(v+(B?y:D));y=$(-x);B=~~+J(+(+$(w+(B?x:y))+.5));a=f[a+68>>2]|0;f[a>>2]=B;B=~~+J(+(+D+.5));f[a+4>>2]=B;u=C;return}do if(!e){if((d|0)>0){b=d+-1|0;break}g=a+72|0;if((f[g>>2]|0)<=0){u=C;return}b=f[a+68>>2]|0;e=0;do{f[b+(e<<2)>>2]=0;e=e+1|0}while((e|0)<(f[g>>2]|0));u=C;return}while(0);h=a+72|0;B=f[h>>2]|0;g=X(B,b)|0;if((B|0)<=0){u=C;return}b=f[a+68>>2]|0;e=0;do{f[b+(e<<2)>>2]=f[c+(e+g<<2)>>2];e=e+1|0}while((e|0)<(f[h>>2]|0));u=C;return}function wc(a,c,d){a=a|0;c=c|0;d=d|0;var e=0,g=0,i=0,j=0,k=0,l=0,m=0,o=0;o=u;u=u+32|0;j=o+24|0;k=o+20|0;l=o+16|0;m=o+12|0;e=o+8|0;g=o+4|0;i=o;if(!d){a=0;u=o;return a|0}switch(f[a+28>>2]|0){case 9:{e=f[c>>2]|0;switch(b[a+24>>0]|0){case 1:{c=a+48|0;m=f[c>>2]|0;c=f[c+4>>2]|0;l=a+40|0;a=(Ho(kn(f[l>>2]|0,f[l+4>>2]|0,e|0,((e|0)<0)<<31>>31|0)|0,I|0,m|0,c|0)|0)+(f[f[a>>2]>>2]|0)|0;f[d>>2]=h[a>>0]|h[a+1>>0]<<8|h[a+2>>0]<<16|h[a+3>>0]<<24;n[d+4>>2]=$(0.0);a=1;u=o;return a|0}case 2:{c=a+48|0;m=f[c>>2]|0;c=f[c+4>>2]|0;l=a+40|0;c=(Ho(kn(f[l>>2]|0,f[l+4>>2]|0,e|0,((e|0)<0)<<31>>31|0)|0,I|0,m|0,c|0)|0)+(f[f[a>>2]>>2]|0)|0;m=c;c=c+4|0;c=h[c>>0]|h[c+1>>0]<<8|h[c+2>>0]<<16|h[c+3>>0]<<24;a=d;f[a>>2]=h[m>>0]|h[m+1>>0]<<8|h[m+2>>0]<<16|h[m+3>>0]<<24;f[a+4>>2]=c;a=1;u=o;return a|0}case 3:{c=a+48|0;m=f[c>>2]|0;c=f[c+4>>2]|0;l=a+40|0;c=(Ho(kn(f[l>>2]|0,f[l+4>>2]|0,e|0,((e|0)<0)<<31>>31|0)|0,I|0,m|0,c|0)|0)+(f[f[a>>2]>>2]|0)|0;m=c;m=h[m>>0]|h[m+1>>0]<<8|h[m+2>>0]<<16|h[m+3>>0]<<24;c=c+4|0;c=h[c>>0]|h[c+1>>0]<<8|h[c+2>>0]<<16|h[c+3>>0]<<24;a=d;d=a;b[d>>0]=m;b[d+1>>0]=m>>8;b[d+2>>0]=m>>16;b[d+3>>0]=m>>24;a=a+4|0;b[a>>0]=c;b[a+1>>0]=c>>8;b[a+2>>0]=c>>16;b[a+3>>0]=c>>24;a=1;u=o;return a|0}case 4:{c=a+48|0;m=f[c>>2]|0;c=f[c+4>>2]|0;l=a+40|0;c=(Ho(kn(f[l>>2]|0,f[l+4>>2]|0,e|0,((e|0)<0)<<31>>31|0)|0,I|0,m|0,c|0)|0)+(f[f[a>>2]>>2]|0)|0;m=c;m=h[m>>0]|h[m+1>>0]<<8|h[m+2>>0]<<16|h[m+3>>0]<<24;c=c+4|0;c=h[c>>0]|h[c+1>>0]<<8|h[c+2>>0]<<16|h[c+3>>0]<<24;a=d;d=a;b[d>>0]=m;b[d+1>>0]=m>>8;b[d+2>>0]=m>>16;b[d+3>>0]=m>>24;a=a+4|0;b[a>>0]=c;b[a+1>>0]=c>>8;b[a+2>>0]=c>>16;b[a+3>>0]=c>>24;a=1;u=o;return a|0}default:{a=0;u=o;return a|0}}}case 2:{f[k>>2]=f[c>>2];f[j>>2]=f[k>>2];a=ee(a,j,d)|0;u=o;return a|0}case 1:{f[l>>2]=f[c>>2];f[j>>2]=f[l>>2];a=ae(a,j,d)|0;u=o;return a|0}case 4:{f[m>>2]=f[c>>2];f[j>>2]=f[m>>2];a=Ld(a,j,d)|0;u=o;return a|0}case 3:{f[e>>2]=f[c>>2];f[j>>2]=f[e>>2];a=Id(a,j,d)|0;u=o;return a|0}case 6:{f[g>>2]=f[c>>2];f[j>>2]=f[g>>2];a=Bd(a,j,d)|0;u=o;return a|0}case 5:{f[i>>2]=f[c>>2];f[j>>2]=f[i>>2];a=Fd(a,j,d)|0;u=o;return a|0}default:{a=0;u=o;return a|0}}return 0}function xc(a,b,c,d,e,g){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;g=g|0;var h=0,i=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,v=0,w=0,x=0,y=0,z=0,A=0,B=0,C=0,D=0;C=u;u=u+32|0;w=C+28|0;x=C+16|0;y=C+8|0;v=C;z=a+8|0;d=f[a+12>>2]|0;if((d|0)<=1)Ga(9466,9477,60,9539);if((d|0)>=31)Ga(9559,9477,61,9539);f[a+68>>2]=d;t=1<>2]=t+-1;t=t+-2|0;s=a+76|0;f[s>>2]=t;r=a+80|0;f[r>>2]=(t|0)/2|0;t=a+44|0;f[a+48>>2]=g;if(!(Sa[f[(f[a>>2]|0)+16>>2]&255](a)|0))Ga(10673,10695,99,10799);if((e|0)!=2)Ga(10821,10695,102,10799);q=a+84|0;o=a+40|0;d=f[o>>2]|0;n=(f[d+4>>2]|0)-(f[d>>2]|0)|0;p=n>>2;f[x>>2]=0;f[x+4>>2]=0;f[x+8>>2]=0;if((n|0)<=0){u=C;return 1}m=x+4|0;n=x+8|0;l=y+4|0;g=0;while(1){e=f[d>>2]|0;if((f[d+4>>2]|0)-e>>2>>>0>g>>>0)d=e;else{Kp(d);d=f[d>>2]|0}f[v>>2]=f[d+(g<<2)>>2];f[w>>2]=f[v>>2];dc(t,w,x);d=f[x>>2]|0;h=(d|0)>-1?d:0-d|0;e=f[m>>2]|0;a=(e|0)>-1?e:0-e|0;h=Ho(a|0,((a|0)<0)<<31>>31|0,h|0,((h|0)<0)<<31>>31|0)|0;a=f[n>>2]|0;i=(a|0)>-1;a=i?a:0-a|0;a=Ho(h|0,I|0,a|0,((a|0)<0)<<31>>31|0)|0;h=I;j=f[r>>2]|0;if((a|0)==0&(h|0)==0){e=x;d=j}else{D=((j|0)<0)<<31>>31;k=kn(j|0,D|0,d|0,((d|0)<0)<<31>>31|0)|0;k=pk(k|0,I|0,a|0,h|0)|0;f[x>>2]=k;d=kn(j|0,D|0,e|0,((e|0)<0)<<31>>31|0)|0;d=pk(d|0,I|0,a|0,h|0)|0;f[m>>2]=d;d=j-((k|0)>-1?k:0-k|0)-((d|0)>-1?d:0-d|0)|0;e=n;d=i?d:0-d|0}f[e>>2]=d;k=f[x>>2]|0;i=f[m>>2]|0;D=f[n>>2]|0;if((((i|0)>-1?i:0-i|0)+((k|0)>-1?k:0-k|0)+((D|0)>-1?D:0-D|0)|0)!=(j|0)){d=18;break}D=Tk(q)|0;d=f[x>>2]|0;if(D){d=0-d|0;e=0-(f[m>>2]|0)|0;j=0-(f[n>>2]|0)|0;f[x>>2]=d;f[m>>2]=e;f[n>>2]=j}else{e=f[m>>2]|0;j=f[n>>2]|0}h=(d|0)>-1;i=(e|0)>-1?e:0-e|0;a=(j|0)>-1?j:0-j|0;k=i+(h?d:0-d|0)+a|0;if((k|0)!=(f[r>>2]|0)){d=23;break}if(!h){if((e|0)<0)d=a;else d=(f[s>>2]|0)-a|0;if((j|0)<0){e=d;d=i}else{e=d;d=(f[s>>2]|0)-i|0}}else{e=k+e|0;d=k+j|0}a=(e|0)==0;h=(d|0)==0;i=f[s>>2]|0;do if((d|e|0)!=0?(A=(i|0)==(d|0),B=(i|0)==(e|0),!(a&A|h&B)):0){if(a&(k|0)<(d|0)){e=0;d=(k<<1)-d|0;break}if((k|0)>(d|0)&B){d=(k<<1)-d|0;break}if((k|0)>(e|0)&A){e=(k<<1)-e|0;break}else{e=(k|0)<(e|0)&h?(k<<1)-e|0:e;break}}else{e=i;d=i}while(0);f[y>>2]=e;f[l>>2]=d;D=g<<1;ji(z,y,b+(D<<2)|0,c+(D<<2)|0);g=g+1|0;if((g|0)>=(p|0)){d=11;break}d=f[o>>2]|0}if((d|0)==11){u=C;return 1}else if((d|0)==18)Ga(10845,10695,118,10799);else if((d|0)==23)Ga(10912,9477,99,11e3);return 0}function yc(a,b,c,d,e,g){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;g=g|0;var h=0,i=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,v=0,w=0,x=0,y=0,z=0,A=0,B=0,C=0,D=0;C=u;u=u+32|0;w=C+28|0;x=C+16|0;y=C+8|0;v=C;z=a+8|0;d=f[a+12>>2]|0;if((d|0)<=1)Ga(9466,9477,60,9539);if((d|0)>=31)Ga(9559,9477,61,9539);f[a+68>>2]=d;t=1<>2]=t+-1;t=t+-2|0;s=a+76|0;f[s>>2]=t;r=a+80|0;f[r>>2]=(t|0)/2|0;t=a+44|0;f[a+48>>2]=g;if(!(Sa[f[(f[a>>2]|0)+16>>2]&255](a)|0))Ga(10673,10695,99,10799);if((e|0)!=2)Ga(10821,10695,102,10799);q=a+84|0;o=a+40|0;d=f[o>>2]|0;n=(f[d+4>>2]|0)-(f[d>>2]|0)|0;p=n>>2;f[x>>2]=0;f[x+4>>2]=0;f[x+8>>2]=0;if((n|0)<=0){u=C;return 1}m=x+4|0;n=x+8|0;l=y+4|0;g=0;while(1){e=f[d>>2]|0;if((f[d+4>>2]|0)-e>>2>>>0>g>>>0)d=e;else{Kp(d);d=f[d>>2]|0}f[v>>2]=f[d+(g<<2)>>2];f[w>>2]=f[v>>2];cc(t,w,x);d=f[x>>2]|0;h=(d|0)>-1?d:0-d|0;e=f[m>>2]|0;a=(e|0)>-1?e:0-e|0;h=Ho(a|0,((a|0)<0)<<31>>31|0,h|0,((h|0)<0)<<31>>31|0)|0;a=f[n>>2]|0;i=(a|0)>-1;a=i?a:0-a|0;a=Ho(h|0,I|0,a|0,((a|0)<0)<<31>>31|0)|0;h=I;j=f[r>>2]|0;if((a|0)==0&(h|0)==0){e=x;d=j}else{D=((j|0)<0)<<31>>31;k=kn(j|0,D|0,d|0,((d|0)<0)<<31>>31|0)|0;k=pk(k|0,I|0,a|0,h|0)|0;f[x>>2]=k;d=kn(j|0,D|0,e|0,((e|0)<0)<<31>>31|0)|0;d=pk(d|0,I|0,a|0,h|0)|0;f[m>>2]=d;d=j-((k|0)>-1?k:0-k|0)-((d|0)>-1?d:0-d|0)|0;e=n;d=i?d:0-d|0}f[e>>2]=d;k=f[x>>2]|0;i=f[m>>2]|0;D=f[n>>2]|0;if((((i|0)>-1?i:0-i|0)+((k|0)>-1?k:0-k|0)+((D|0)>-1?D:0-D|0)|0)!=(j|0)){d=18;break}D=Tk(q)|0;d=f[x>>2]|0;if(D){d=0-d|0;e=0-(f[m>>2]|0)|0;j=0-(f[n>>2]|0)|0;f[x>>2]=d;f[m>>2]=e;f[n>>2]=j}else{e=f[m>>2]|0;j=f[n>>2]|0}h=(d|0)>-1;i=(e|0)>-1?e:0-e|0;a=(j|0)>-1?j:0-j|0;k=i+(h?d:0-d|0)+a|0;if((k|0)!=(f[r>>2]|0)){d=23;break}if(!h){if((e|0)<0)d=a;else d=(f[s>>2]|0)-a|0;if((j|0)<0){e=d;d=i}else{e=d;d=(f[s>>2]|0)-i|0}}else{e=k+e|0;d=k+j|0}a=(e|0)==0;h=(d|0)==0;i=f[s>>2]|0;do if((d|e|0)!=0?(A=(i|0)==(d|0),B=(i|0)==(e|0),!(a&A|h&B)):0){if(a&(k|0)<(d|0)){e=0;d=(k<<1)-d|0;break}if((k|0)>(d|0)&B){d=(k<<1)-d|0;break}if((k|0)>(e|0)&A){e=(k<<1)-e|0;break}else{e=(k|0)<(e|0)&h?(k<<1)-e|0:e;break}}else{e=i;d=i}while(0);f[y>>2]=e;f[l>>2]=d;D=g<<1;ji(z,y,b+(D<<2)|0,c+(D<<2)|0);g=g+1|0;if((g|0)>=(p|0)){d=11;break}d=f[o>>2]|0}if((d|0)==11){u=C;return 1}else if((d|0)==18)Ga(10845,10695,118,10799);else if((d|0)==23)Ga(10912,9477,99,11e3);return 0}function zc(a,b,c,d,e,g){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;g=g|0;var h=0,i=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,v=0,w=0,x=0,y=0,z=0,A=0,B=0,C=0,D=0;C=u;u=u+32|0;w=C+28|0;x=C+16|0;y=C+8|0;v=C;z=a+8|0;d=f[a+12>>2]|0;if((d|0)<=1)Ga(9466,9477,60,9539);if((d|0)>=31)Ga(9559,9477,61,9539);f[a+68>>2]=d;t=1<>2]=t+-1;t=t+-2|0;s=a+76|0;f[s>>2]=t;r=a+80|0;f[r>>2]=(t|0)/2|0;t=a+44|0;f[a+48>>2]=g;if(!(Sa[f[(f[a>>2]|0)+16>>2]&255](a)|0))Ga(10673,10695,99,10799);if((e|0)!=2)Ga(10821,10695,102,10799);q=a+84|0;o=a+40|0;d=f[o>>2]|0;n=(f[d+4>>2]|0)-(f[d>>2]|0)|0;p=n>>2;f[x>>2]=0;f[x+4>>2]=0;f[x+8>>2]=0;if((n|0)<=0){u=C;return 1}m=x+4|0;n=x+8|0;l=y+4|0;g=0;while(1){e=f[d>>2]|0;if((f[d+4>>2]|0)-e>>2>>>0>g>>>0)d=e;else{Kp(d);d=f[d>>2]|0}f[v>>2]=f[d+(g<<2)>>2];f[w>>2]=f[v>>2];dc(t,w,x);d=f[x>>2]|0;h=(d|0)>-1?d:0-d|0;e=f[m>>2]|0;a=(e|0)>-1?e:0-e|0;h=Ho(a|0,((a|0)<0)<<31>>31|0,h|0,((h|0)<0)<<31>>31|0)|0;a=f[n>>2]|0;i=(a|0)>-1;a=i?a:0-a|0;a=Ho(h|0,I|0,a|0,((a|0)<0)<<31>>31|0)|0;h=I;j=f[r>>2]|0;if((a|0)==0&(h|0)==0){e=x;d=j}else{D=((j|0)<0)<<31>>31;k=kn(j|0,D|0,d|0,((d|0)<0)<<31>>31|0)|0;k=pk(k|0,I|0,a|0,h|0)|0;f[x>>2]=k;d=kn(j|0,D|0,e|0,((e|0)<0)<<31>>31|0)|0;d=pk(d|0,I|0,a|0,h|0)|0;f[m>>2]=d;d=j-((k|0)>-1?k:0-k|0)-((d|0)>-1?d:0-d|0)|0;e=n;d=i?d:0-d|0}f[e>>2]=d;k=f[x>>2]|0;i=f[m>>2]|0;D=f[n>>2]|0;if((((i|0)>-1?i:0-i|0)+((k|0)>-1?k:0-k|0)+((D|0)>-1?D:0-D|0)|0)!=(j|0)){d=18;break}D=Tk(q)|0;d=f[x>>2]|0;if(D){d=0-d|0;e=0-(f[m>>2]|0)|0;j=0-(f[n>>2]|0)|0;f[x>>2]=d;f[m>>2]=e;f[n>>2]=j}else{e=f[m>>2]|0;j=f[n>>2]|0}h=(d|0)>-1;i=(e|0)>-1?e:0-e|0;a=(j|0)>-1?j:0-j|0;k=i+(h?d:0-d|0)+a|0;if((k|0)!=(f[r>>2]|0)){d=23;break}if(!h){if((e|0)<0)d=a;else d=(f[s>>2]|0)-a|0;if((j|0)<0){e=d;d=i}else{e=d;d=(f[s>>2]|0)-i|0}}else{e=k+e|0;d=k+j|0}a=(e|0)==0;h=(d|0)==0;i=f[s>>2]|0;do if((d|e|0)!=0?(A=(i|0)==(d|0),B=(i|0)==(e|0),!(a&A|h&B)):0){if(a&(k|0)<(d|0)){e=0;d=(k<<1)-d|0;break}if((k|0)>(d|0)&B){d=(k<<1)-d|0;break}if((k|0)>(e|0)&A){e=(k<<1)-e|0;break}else{e=(k|0)<(e|0)&h?(k<<1)-e|0:e;break}}else{e=i;d=i}while(0);f[y>>2]=e;f[l>>2]=d;D=g<<1;mi(z,y,b+(D<<2)|0,c+(D<<2)|0);g=g+1|0;if((g|0)>=(p|0)){d=11;break}d=f[o>>2]|0}if((d|0)==11){u=C;return 1}else if((d|0)==18)Ga(10845,10695,118,10799);else if((d|0)==23)Ga(10912,9477,99,11e3);return 0}function Ac(a,b,c,d,e,g){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;g=g|0;var h=0,i=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,v=0,w=0,x=0,y=0,z=0,A=0,B=0,C=0,D=0;C=u;u=u+32|0;w=C+28|0;x=C+16|0;y=C+8|0;v=C;z=a+8|0;d=f[a+12>>2]|0;if((d|0)<=1)Ga(9466,9477,60,9539);if((d|0)>=31)Ga(9559,9477,61,9539);f[a+68>>2]=d;t=1<>2]=t+-1;t=t+-2|0;s=a+76|0;f[s>>2]=t;r=a+80|0;f[r>>2]=(t|0)/2|0;t=a+44|0;f[a+48>>2]=g;if(!(Sa[f[(f[a>>2]|0)+16>>2]&255](a)|0))Ga(10673,10695,99,10799);if((e|0)!=2)Ga(10821,10695,102,10799);q=a+84|0;o=a+40|0;d=f[o>>2]|0;n=(f[d+4>>2]|0)-(f[d>>2]|0)|0;p=n>>2;f[x>>2]=0;f[x+4>>2]=0;f[x+8>>2]=0;if((n|0)<=0){u=C;return 1}m=x+4|0;n=x+8|0;l=y+4|0;g=0;while(1){e=f[d>>2]|0;if((f[d+4>>2]|0)-e>>2>>>0>g>>>0)d=e;else{Kp(d);d=f[d>>2]|0}f[v>>2]=f[d+(g<<2)>>2];f[w>>2]=f[v>>2];cc(t,w,x);d=f[x>>2]|0;h=(d|0)>-1?d:0-d|0;e=f[m>>2]|0;a=(e|0)>-1?e:0-e|0;h=Ho(a|0,((a|0)<0)<<31>>31|0,h|0,((h|0)<0)<<31>>31|0)|0;a=f[n>>2]|0;i=(a|0)>-1;a=i?a:0-a|0;a=Ho(h|0,I|0,a|0,((a|0)<0)<<31>>31|0)|0;h=I;j=f[r>>2]|0;if((a|0)==0&(h|0)==0){e=x;d=j}else{D=((j|0)<0)<<31>>31;k=kn(j|0,D|0,d|0,((d|0)<0)<<31>>31|0)|0;k=pk(k|0,I|0,a|0,h|0)|0;f[x>>2]=k;d=kn(j|0,D|0,e|0,((e|0)<0)<<31>>31|0)|0;d=pk(d|0,I|0,a|0,h|0)|0;f[m>>2]=d;d=j-((k|0)>-1?k:0-k|0)-((d|0)>-1?d:0-d|0)|0;e=n;d=i?d:0-d|0}f[e>>2]=d;k=f[x>>2]|0;i=f[m>>2]|0;D=f[n>>2]|0;if((((i|0)>-1?i:0-i|0)+((k|0)>-1?k:0-k|0)+((D|0)>-1?D:0-D|0)|0)!=(j|0)){d=18;break}D=Tk(q)|0;d=f[x>>2]|0;if(D){d=0-d|0;e=0-(f[m>>2]|0)|0;j=0-(f[n>>2]|0)|0;f[x>>2]=d;f[m>>2]=e;f[n>>2]=j}else{e=f[m>>2]|0;j=f[n>>2]|0}h=(d|0)>-1;i=(e|0)>-1?e:0-e|0;a=(j|0)>-1?j:0-j|0;k=i+(h?d:0-d|0)+a|0;if((k|0)!=(f[r>>2]|0)){d=23;break}if(!h){if((e|0)<0)d=a;else d=(f[s>>2]|0)-a|0;if((j|0)<0){e=d;d=i}else{e=d;d=(f[s>>2]|0)-i|0}}else{e=k+e|0;d=k+j|0}a=(e|0)==0;h=(d|0)==0;i=f[s>>2]|0;do if((d|e|0)!=0?(A=(i|0)==(d|0),B=(i|0)==(e|0),!(a&A|h&B)):0){if(a&(k|0)<(d|0)){e=0;d=(k<<1)-d|0;break}if((k|0)>(d|0)&B){d=(k<<1)-d|0;break}if((k|0)>(e|0)&A){e=(k<<1)-e|0;break}else{e=(k|0)<(e|0)&h?(k<<1)-e|0:e;break}}else{e=i;d=i}while(0);f[y>>2]=e;f[l>>2]=d;D=g<<1;mi(z,y,b+(D<<2)|0,c+(D<<2)|0);g=g+1|0;if((g|0)>=(p|0)){d=11;break}d=f[o>>2]|0}if((d|0)==11){u=C;return 1}else if((d|0)==18)Ga(10845,10695,118,10799);else if((d|0)==23)Ga(10912,9477,99,11e3);return 0}function Bc(a,b,c,d,e,g,h){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;g=g|0;h=h|0;switch(c|0){case 1:{b=ln(44)|0;f[b+4>>2]=d;d=b+12|0;e=e+4|0;f[d>>2]=f[e>>2];f[d+4>>2]=f[e+4>>2];f[d+8>>2]=f[e+8>>2];f[d+12>>2]=f[e+12>>2];f[b+8>>2]=2764;e=b+28|0;f[e>>2]=f[g>>2];f[e+4>>2]=f[g+4>>2];f[e+8>>2]=f[g+8>>2];f[e+12>>2]=f[g+12>>2];f[b>>2]=3176;e=b;f[a>>2]=e;return}case 2:{b=ln(44)|0;f[b+4>>2]=d;d=b+12|0;e=e+4|0;f[d>>2]=f[e>>2];f[d+4>>2]=f[e+4>>2];f[d+8>>2]=f[e+8>>2];f[d+12>>2]=f[e+12>>2];f[b+8>>2]=2764;e=b+28|0;f[e>>2]=f[g>>2];f[e+4>>2]=f[g+4>>2];f[e+8>>2]=f[g+8>>2];f[e+12>>2]=f[g+12>>2];f[b>>2]=3232;e=b;f[a>>2]=e;return}case 4:{b=ln(96)|0;f[b+4>>2]=d;h=b+12|0;c=e+4|0;f[h>>2]=f[c>>2];f[h+4>>2]=f[c+4>>2];f[h+8>>2]=f[c+8>>2];f[h+12>>2]=f[c+12>>2];f[b+8>>2]=2764;h=b+28|0;f[h>>2]=f[g>>2];f[h+4>>2]=f[g+4>>2];f[h+8>>2]=f[g+8>>2];f[h+12>>2]=f[g+12>>2];f[b>>2]=3288;h=b+44|0;c=h+52|0;do{f[h>>2]=0;h=h+4|0}while((h|0)<(c|0));e=b;f[a>>2]=e;return}case 3:{b=ln(76)|0;f[b+4>>2]=d;d=b+12|0;e=e+4|0;f[d>>2]=f[e>>2];f[d+4>>2]=f[e+4>>2];f[d+8>>2]=f[e+8>>2];f[d+12>>2]=f[e+12>>2];f[b+8>>2]=2764;e=b+28|0;f[e>>2]=f[g>>2];f[e+4>>2]=f[g+4>>2];f[e+8>>2]=f[g+8>>2];f[e+12>>2]=f[g+12>>2];f[b>>2]=3344;e=b+44|0;f[e>>2]=0;f[e+4>>2]=0;f[e+8>>2]=0;f[e+12>>2]=0;f[e+16>>2]=0;f[e+20>>2]=0;f[e+24>>2]=0;f[b+72>>2]=h&65535;e=b;f[a>>2]=e;return}case 5:{b=ln(88)|0;f[b+4>>2]=d;d=b+12|0;e=e+4|0;f[d>>2]=f[e>>2];f[d+4>>2]=f[e+4>>2];f[d+8>>2]=f[e+8>>2];f[d+12>>2]=f[e+12>>2];f[b+8>>2]=2764;e=b+28|0;f[e>>2]=f[g>>2];f[e+4>>2]=f[g+4>>2];f[e+8>>2]=f[g+8>>2];f[e+12>>2]=f[g+12>>2];f[b>>2]=3400;f[b+44>>2]=0;f[b+48>>2]=0;f[b+60>>2]=0;f[b+64>>2]=0;f[b+68>>2]=0;e=b+72|0;f[e>>2]=f[g>>2];f[e+4>>2]=f[g+4>>2];f[e+8>>2]=f[g+8>>2];f[e+12>>2]=f[g+12>>2];e=b;f[a>>2]=e;return}case 6:{b=ln(100)|0;f[b+4>>2]=d;d=b+12|0;e=e+4|0;f[d>>2]=f[e>>2];f[d+4>>2]=f[e+4>>2];f[d+8>>2]=f[e+8>>2];f[d+12>>2]=f[e+12>>2];f[b+8>>2]=2764;e=b+28|0;f[e>>2]=f[g>>2];f[e+4>>2]=f[g+4>>2];f[e+8>>2]=f[g+8>>2];f[e+12>>2]=f[g+12>>2];f[b>>2]=3456;f[b+44>>2]=0;f[b+48>>2]=0;e=b+52|0;f[e>>2]=f[g>>2];f[e+4>>2]=f[g+4>>2];f[e+8>>2]=f[g+8>>2];f[e+12>>2]=f[g+12>>2];e=b+68|0;f[e>>2]=-1;f[e+4>>2]=-1;f[e+8>>2]=-1;f[e+12>>2]=-1;xq(b+84|0);e=b;f[a>>2]=e;return}default:{e=0;f[a>>2]=e;return}}}function Cc(a,b,c,d,e,g,h){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;g=g|0;h=h|0;switch(c|0){case 1:{b=ln(44)|0;f[b+4>>2]=d;d=b+12|0;e=e+4|0;f[d>>2]=f[e>>2];f[d+4>>2]=f[e+4>>2];f[d+8>>2]=f[e+8>>2];f[d+12>>2]=f[e+12>>2];f[b+8>>2]=2764;e=b+28|0;f[e>>2]=f[g>>2];f[e+4>>2]=f[g+4>>2];f[e+8>>2]=f[g+8>>2];f[e+12>>2]=f[g+12>>2];f[b>>2]=2840;e=b;f[a>>2]=e;return}case 2:{b=ln(44)|0;f[b+4>>2]=d;d=b+12|0;e=e+4|0;f[d>>2]=f[e>>2];f[d+4>>2]=f[e+4>>2];f[d+8>>2]=f[e+8>>2];f[d+12>>2]=f[e+12>>2];f[b+8>>2]=2764;e=b+28|0;f[e>>2]=f[g>>2];f[e+4>>2]=f[g+4>>2];f[e+8>>2]=f[g+8>>2];f[e+12>>2]=f[g+12>>2];f[b>>2]=2896;e=b;f[a>>2]=e;return}case 4:{b=ln(96)|0;f[b+4>>2]=d;h=b+12|0;c=e+4|0;f[h>>2]=f[c>>2];f[h+4>>2]=f[c+4>>2];f[h+8>>2]=f[c+8>>2];f[h+12>>2]=f[c+12>>2];f[b+8>>2]=2764;h=b+28|0;f[h>>2]=f[g>>2];f[h+4>>2]=f[g+4>>2];f[h+8>>2]=f[g+8>>2];f[h+12>>2]=f[g+12>>2];f[b>>2]=2952;h=b+44|0;c=h+52|0;do{f[h>>2]=0;h=h+4|0}while((h|0)<(c|0));e=b;f[a>>2]=e;return}case 3:{b=ln(76)|0;f[b+4>>2]=d;d=b+12|0;e=e+4|0;f[d>>2]=f[e>>2];f[d+4>>2]=f[e+4>>2];f[d+8>>2]=f[e+8>>2];f[d+12>>2]=f[e+12>>2];f[b+8>>2]=2764;e=b+28|0;f[e>>2]=f[g>>2];f[e+4>>2]=f[g+4>>2];f[e+8>>2]=f[g+8>>2];f[e+12>>2]=f[g+12>>2];f[b>>2]=3008;e=b+44|0;f[e>>2]=0;f[e+4>>2]=0;f[e+8>>2]=0;f[e+12>>2]=0;f[e+16>>2]=0;f[e+20>>2]=0;f[e+24>>2]=0;f[b+72>>2]=h&65535;e=b;f[a>>2]=e;return}case 5:{b=ln(88)|0;f[b+4>>2]=d;d=b+12|0;e=e+4|0;f[d>>2]=f[e>>2];f[d+4>>2]=f[e+4>>2];f[d+8>>2]=f[e+8>>2];f[d+12>>2]=f[e+12>>2];f[b+8>>2]=2764;e=b+28|0;f[e>>2]=f[g>>2];f[e+4>>2]=f[g+4>>2];f[e+8>>2]=f[g+8>>2];f[e+12>>2]=f[g+12>>2];f[b>>2]=3064;f[b+44>>2]=0;f[b+48>>2]=0;f[b+60>>2]=0;f[b+64>>2]=0;f[b+68>>2]=0;e=b+72|0;f[e>>2]=f[g>>2];f[e+4>>2]=f[g+4>>2];f[e+8>>2]=f[g+8>>2];f[e+12>>2]=f[g+12>>2];e=b;f[a>>2]=e;return}case 6:{b=ln(100)|0;f[b+4>>2]=d;d=b+12|0;e=e+4|0;f[d>>2]=f[e>>2];f[d+4>>2]=f[e+4>>2];f[d+8>>2]=f[e+8>>2];f[d+12>>2]=f[e+12>>2];f[b+8>>2]=2764;e=b+28|0;f[e>>2]=f[g>>2];f[e+4>>2]=f[g+4>>2];f[e+8>>2]=f[g+8>>2];f[e+12>>2]=f[g+12>>2];f[b>>2]=3120;f[b+44>>2]=0;f[b+48>>2]=0;e=b+52|0;f[e>>2]=f[g>>2];f[e+4>>2]=f[g+4>>2];f[e+8>>2]=f[g+8>>2];f[e+12>>2]=f[g+12>>2];e=b+68|0;f[e>>2]=-1;f[e+4>>2]=-1;f[e+8>>2]=-1;f[e+12>>2]=-1;xq(b+84|0);e=b;f[a>>2]=e;return}default:{e=0;f[a>>2]=e;return}}}function Dc(a,b,c,d,e,g,h){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;g=g|0;h=h|0;switch(c|0){case 1:{b=ln(44)|0;f[b+4>>2]=d;d=b+12|0;e=e+4|0;f[d>>2]=f[e>>2];f[d+4>>2]=f[e+4>>2];f[d+8>>2]=f[e+8>>2];f[d+12>>2]=f[e+12>>2];f[b+8>>2]=2744;e=b+28|0;f[e>>2]=f[g>>2];f[e+4>>2]=f[g+4>>2];f[e+8>>2]=f[g+8>>2];f[e+12>>2]=f[g+12>>2];f[b>>2]=3904;e=b;f[a>>2]=e;return}case 2:{b=ln(44)|0;f[b+4>>2]=d;d=b+12|0;e=e+4|0;f[d>>2]=f[e>>2];f[d+4>>2]=f[e+4>>2];f[d+8>>2]=f[e+8>>2];f[d+12>>2]=f[e+12>>2];f[b+8>>2]=2744;e=b+28|0;f[e>>2]=f[g>>2];f[e+4>>2]=f[g+4>>2];f[e+8>>2]=f[g+8>>2];f[e+12>>2]=f[g+12>>2];f[b>>2]=3960;e=b;f[a>>2]=e;return}case 4:{b=ln(96)|0;f[b+4>>2]=d;h=b+12|0;c=e+4|0;f[h>>2]=f[c>>2];f[h+4>>2]=f[c+4>>2];f[h+8>>2]=f[c+8>>2];f[h+12>>2]=f[c+12>>2];f[b+8>>2]=2744;h=b+28|0;f[h>>2]=f[g>>2];f[h+4>>2]=f[g+4>>2];f[h+8>>2]=f[g+8>>2];f[h+12>>2]=f[g+12>>2];f[b>>2]=4016;h=b+44|0;c=h+52|0;do{f[h>>2]=0;h=h+4|0}while((h|0)<(c|0));e=b;f[a>>2]=e;return}case 3:{b=ln(76)|0;f[b+4>>2]=d;d=b+12|0;e=e+4|0;f[d>>2]=f[e>>2];f[d+4>>2]=f[e+4>>2];f[d+8>>2]=f[e+8>>2];f[d+12>>2]=f[e+12>>2];f[b+8>>2]=2744;e=b+28|0;f[e>>2]=f[g>>2];f[e+4>>2]=f[g+4>>2];f[e+8>>2]=f[g+8>>2];f[e+12>>2]=f[g+12>>2];f[b>>2]=4072;e=b+44|0;f[e>>2]=0;f[e+4>>2]=0;f[e+8>>2]=0;f[e+12>>2]=0;f[e+16>>2]=0;f[e+20>>2]=0;f[e+24>>2]=0;f[b+72>>2]=h&65535;e=b;f[a>>2]=e;return}case 5:{b=ln(88)|0;f[b+4>>2]=d;d=b+12|0;e=e+4|0;f[d>>2]=f[e>>2];f[d+4>>2]=f[e+4>>2];f[d+8>>2]=f[e+8>>2];f[d+12>>2]=f[e+12>>2];f[b+8>>2]=2744;e=b+28|0;f[e>>2]=f[g>>2];f[e+4>>2]=f[g+4>>2];f[e+8>>2]=f[g+8>>2];f[e+12>>2]=f[g+12>>2];f[b>>2]=4128;f[b+44>>2]=0;f[b+48>>2]=0;f[b+60>>2]=0;f[b+64>>2]=0;f[b+68>>2]=0;e=b+72|0;f[e>>2]=f[g>>2];f[e+4>>2]=f[g+4>>2];f[e+8>>2]=f[g+8>>2];f[e+12>>2]=f[g+12>>2];e=b;f[a>>2]=e;return}case 6:{b=ln(100)|0;f[b+4>>2]=d;d=b+12|0;e=e+4|0;f[d>>2]=f[e>>2];f[d+4>>2]=f[e+4>>2];f[d+8>>2]=f[e+8>>2];f[d+12>>2]=f[e+12>>2];f[b+8>>2]=2744;e=b+28|0;f[e>>2]=f[g>>2];f[e+4>>2]=f[g+4>>2];f[e+8>>2]=f[g+8>>2];f[e+12>>2]=f[g+12>>2];f[b>>2]=4184;f[b+44>>2]=0;f[b+48>>2]=0;e=b+52|0;f[e>>2]=f[g>>2];f[e+4>>2]=f[g+4>>2];f[e+8>>2]=f[g+8>>2];f[e+12>>2]=f[g+12>>2];e=b+68|0;f[e>>2]=-1;f[e+4>>2]=-1;f[e+8>>2]=-1;f[e+12>>2]=-1;xq(b+84|0);e=b;f[a>>2]=e;return}default:{e=0;f[a>>2]=e;return}}}function Ec(a,b,c,d,e,g,h){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;g=g|0;h=h|0;switch(c|0){case 1:{b=ln(44)|0;f[b+4>>2]=d;d=b+12|0;e=e+4|0;f[d>>2]=f[e>>2];f[d+4>>2]=f[e+4>>2];f[d+8>>2]=f[e+8>>2];f[d+12>>2]=f[e+12>>2];f[b+8>>2]=2744;e=b+28|0;f[e>>2]=f[g>>2];f[e+4>>2]=f[g+4>>2];f[e+8>>2]=f[g+8>>2];f[e+12>>2]=f[g+12>>2];f[b>>2]=3568;e=b;f[a>>2]=e;return}case 2:{b=ln(44)|0;f[b+4>>2]=d;d=b+12|0;e=e+4|0;f[d>>2]=f[e>>2];f[d+4>>2]=f[e+4>>2];f[d+8>>2]=f[e+8>>2];f[d+12>>2]=f[e+12>>2];f[b+8>>2]=2744;e=b+28|0;f[e>>2]=f[g>>2];f[e+4>>2]=f[g+4>>2];f[e+8>>2]=f[g+8>>2];f[e+12>>2]=f[g+12>>2];f[b>>2]=3624;e=b;f[a>>2]=e;return}case 4:{b=ln(96)|0;f[b+4>>2]=d;h=b+12|0;c=e+4|0;f[h>>2]=f[c>>2];f[h+4>>2]=f[c+4>>2];f[h+8>>2]=f[c+8>>2];f[h+12>>2]=f[c+12>>2];f[b+8>>2]=2744;h=b+28|0;f[h>>2]=f[g>>2];f[h+4>>2]=f[g+4>>2];f[h+8>>2]=f[g+8>>2];f[h+12>>2]=f[g+12>>2];f[b>>2]=3680;h=b+44|0;c=h+52|0;do{f[h>>2]=0;h=h+4|0}while((h|0)<(c|0));e=b;f[a>>2]=e;return}case 3:{b=ln(76)|0;f[b+4>>2]=d;d=b+12|0;e=e+4|0;f[d>>2]=f[e>>2];f[d+4>>2]=f[e+4>>2];f[d+8>>2]=f[e+8>>2];f[d+12>>2]=f[e+12>>2];f[b+8>>2]=2744;e=b+28|0;f[e>>2]=f[g>>2];f[e+4>>2]=f[g+4>>2];f[e+8>>2]=f[g+8>>2];f[e+12>>2]=f[g+12>>2];f[b>>2]=3736;e=b+44|0;f[e>>2]=0;f[e+4>>2]=0;f[e+8>>2]=0;f[e+12>>2]=0;f[e+16>>2]=0;f[e+20>>2]=0;f[e+24>>2]=0;f[b+72>>2]=h&65535;e=b;f[a>>2]=e;return}case 5:{b=ln(88)|0;f[b+4>>2]=d;d=b+12|0;e=e+4|0;f[d>>2]=f[e>>2];f[d+4>>2]=f[e+4>>2];f[d+8>>2]=f[e+8>>2];f[d+12>>2]=f[e+12>>2];f[b+8>>2]=2744;e=b+28|0;f[e>>2]=f[g>>2];f[e+4>>2]=f[g+4>>2];f[e+8>>2]=f[g+8>>2];f[e+12>>2]=f[g+12>>2];f[b>>2]=3792;f[b+44>>2]=0;f[b+48>>2]=0;f[b+60>>2]=0;f[b+64>>2]=0;f[b+68>>2]=0;e=b+72|0;f[e>>2]=f[g>>2];f[e+4>>2]=f[g+4>>2];f[e+8>>2]=f[g+8>>2];f[e+12>>2]=f[g+12>>2];e=b;f[a>>2]=e;return}case 6:{b=ln(100)|0;f[b+4>>2]=d;d=b+12|0;e=e+4|0;f[d>>2]=f[e>>2];f[d+4>>2]=f[e+4>>2];f[d+8>>2]=f[e+8>>2];f[d+12>>2]=f[e+12>>2];f[b+8>>2]=2744;e=b+28|0;f[e>>2]=f[g>>2];f[e+4>>2]=f[g+4>>2];f[e+8>>2]=f[g+8>>2];f[e+12>>2]=f[g+12>>2];f[b>>2]=3848;f[b+44>>2]=0;f[b+48>>2]=0;e=b+52|0;f[e>>2]=f[g>>2];f[e+4>>2]=f[g+4>>2];f[e+8>>2]=f[g+8>>2];f[e+12>>2]=f[g+12>>2];e=b+68|0;f[e>>2]=-1;f[e+4>>2]=-1;f[e+8>>2]=-1;f[e+12>>2]=-1;xq(b+84|0);e=b;f[a>>2]=e;return}default:{e=0;f[a>>2]=e;return}}}function Fc(a,c,d){a=a|0;c=c|0;d=d|0;var e=La,g=0,i=0,j=0,k=La;switch(b[a+24>>0]|0){case 1:{i=f[c>>2]|0;c=a+48|0;g=f[c>>2]|0;c=f[c+4>>2]|0;j=a+40|0;a=(Ho(kn(f[j>>2]|0,f[j+4>>2]|0,i|0,((i|0)<0)<<31>>31|0)|0,I|0,g|0,c|0)|0)+(f[f[a>>2]>>2]|0)|0;b[s>>0]=b[a>>0];b[s+1>>0]=b[a+1>>0];b[s+2>>0]=b[a+2>>0];b[s+3>>0]=b[a+3>>0];e=$(n[s>>2]);a=+K(+e)>=1.0?(+e>0.0?~~+Y(+J(+e/4294967296.0),4294967295.0)>>>0:~~+W((+e-+(~~+e>>>0))/4294967296.0)>>>0):0;c=d;f[c>>2]=~~+e>>>0;f[c+4>>2]=a;c=0;a=0;break}case 2:{i=f[c>>2]|0;c=a+48|0;j=f[c>>2]|0;c=f[c+4>>2]|0;g=a+40|0;c=(Ho(kn(f[g>>2]|0,f[g+4>>2]|0,i|0,((i|0)<0)<<31>>31|0)|0,I|0,j|0,c|0)|0)+(f[f[a>>2]>>2]|0)|0;j=c;c=c+4|0;c=h[c>>0]|h[c+1>>0]<<8|h[c+2>>0]<<16|h[c+3>>0]<<24;e=(f[s>>2]=h[j>>0]|h[j+1>>0]<<8|h[j+2>>0]<<16|h[j+3>>0]<<24,$(n[s>>2]));j=+K(+e)>=1.0?(+e>0.0?~~+Y(+J(+e/4294967296.0),4294967295.0)>>>0:~~+W((+e-+(~~+e>>>0))/4294967296.0)>>>0):0;a=d;f[a>>2]=~~+e>>>0;f[a+4>>2]=j;e=(f[s>>2]=c,$(n[s>>2]));c=~~+e>>>0;a=+K(+e)>=1.0?(+e>0.0?~~+Y(+J(+e/4294967296.0),4294967295.0)>>>0:~~+W((+e-+(~~+e>>>0))/4294967296.0)>>>0):0;break}case 3:{i=f[c>>2]|0;c=a+48|0;j=f[c>>2]|0;c=f[c+4>>2]|0;g=a+40|0;a=(Ho(kn(f[g>>2]|0,f[g+4>>2]|0,i|0,((i|0)<0)<<31>>31|0)|0,I|0,j|0,c|0)|0)+(f[f[a>>2]>>2]|0)|0;b[s>>0]=b[a>>0];b[s+1>>0]=b[a+1>>0];b[s+2>>0]=b[a+2>>0];b[s+3>>0]=b[a+3>>0];k=$(n[s>>2]);a=a+4|0;b[s>>0]=b[a>>0];b[s+1>>0]=b[a+1>>0];b[s+2>>0]=b[a+2>>0];b[s+3>>0]=b[a+3>>0];e=$(n[s>>2]);a=+K(+k)>=1.0?(+k>0.0?~~+Y(+J(+k/4294967296.0),4294967295.0)>>>0:~~+W((+k-+(~~+k>>>0))/4294967296.0)>>>0):0;c=d;f[c>>2]=~~+k>>>0;f[c+4>>2]=a;c=~~+e>>>0;a=+K(+e)>=1.0?(+e>0.0?~~+Y(+J(+e/4294967296.0),4294967295.0)>>>0:~~+W((+e-+(~~+e>>>0))/4294967296.0)>>>0):0;break}case 4:{i=f[c>>2]|0;c=a+48|0;j=f[c>>2]|0;c=f[c+4>>2]|0;g=a+40|0;a=(Ho(kn(f[g>>2]|0,f[g+4>>2]|0,i|0,((i|0)<0)<<31>>31|0)|0,I|0,j|0,c|0)|0)+(f[f[a>>2]>>2]|0)|0;b[s>>0]=b[a>>0];b[s+1>>0]=b[a+1>>0];b[s+2>>0]=b[a+2>>0];b[s+3>>0]=b[a+3>>0];e=$(n[s>>2]);a=a+4|0;b[s>>0]=b[a>>0];b[s+1>>0]=b[a+1>>0];b[s+2>>0]=b[a+2>>0];b[s+3>>0]=b[a+3>>0];k=$(n[s>>2]);a=+K(+e)>=1.0?(+e>0.0?~~+Y(+J(+e/4294967296.0),4294967295.0)>>>0:~~+W((+e-+(~~+e>>>0))/4294967296.0)>>>0):0;c=d;f[c>>2]=~~+e>>>0;f[c+4>>2]=a;c=~~+k>>>0;a=+K(+k)>=1.0?(+k>0.0?~~+Y(+J(+k/4294967296.0),4294967295.0)>>>0:~~+W((+k-+(~~+k>>>0))/4294967296.0)>>>0):0;break}default:{j=0;return j|0}}j=d+8|0;f[j>>2]=c;f[j+4>>2]=a;j=1;return j|0}function Gc(a,c){a=a|0;c=c|0;var d=0,e=0,g=0,i=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0;t=u;u=u+16|0;i=t+4|0;s=t;if(!(Yd(a,c)|0)){s=0;u=t;return s|0}p=f[a+88>>2]|0;p=(Sa[f[(f[p>>2]|0)+32>>2]&255](p)|0)+36|0;if(((h[p>>0]|0)<<8&65535)<512){o=c+8|0;p=f[o>>2]|0;o=f[o+4>>2]|0;j=c+16|0;e=j;d=f[e>>2]|0;e=Ho(d|0,f[e+4>>2]|0,4,0)|0;g=I;if((o|0)<(g|0)|(o|0)==(g|0)&p>>>0>>0)d=0;else{d=(f[c>>2]|0)+d|0;d=h[d>>0]|h[d+1>>0]<<8|h[d+2>>0]<<16|h[d+3>>0]<<24;f[i>>2]=d;k=j;f[k>>2]=e;f[k+4>>2]=g;k=7}}else if(yj(i,c)|0){d=f[i>>2]|0;k=7}else d=0;if((k|0)==7){k=a+96|0;i=(f[k>>2]|0)+d|0;f[k>>2]=i;k=a+100|0;f[s>>2]=0;g=a+104|0;e=f[g>>2]|0;d=f[k>>2]|0;j=e-d>>2;if(i>>>0<=j>>>0){if(i>>>0>>0?(l=d+(i<<2)|0,(e|0)!=(l|0)):0)f[g>>2]=e+(~((e+-4-l|0)>>>2)<<2)}else ch(k,i-j|0,s);p=c+8|0;o=f[p+4>>2]|0;g=c+16|0;e=g;d=f[e>>2]|0;e=f[e+4>>2]|0;if((o|0)>(e|0)|((o|0)==(e|0)?(f[p>>2]|0)>>>0>d>>>0:0)?(p=b[(f[c>>2]|0)+d>>0]|0,n=Ho(d|0,e|0,1,0)|0,o=g,f[o>>2]=n,f[o+4>>2]=I,p<<24>>24==0):0){f[a+120>>2]=2;f[a+124>>2]=7;p=a+128|0;o=a+132|0;e=f[o>>2]|0;g=f[p>>2]|0;j=e-g|0;i=(j|0)/12|0;d=e;if(i>>>0>=6){if((j|0)!=72?(m=g+72|0,(d|0)!=(m|0)):0){do{e=d+-12|0;f[o>>2]=e;g=f[e>>2]|0;if(!g)d=e;else{e=d+-8|0;d=f[e>>2]|0;if((d|0)!=(g|0))f[e>>2]=d+(~((d+-4-g|0)>>>2)<<2);ar(g);d=f[o>>2]|0}}while((d|0)!=(m|0));e=d}}else{Gf(p,6-i|0);e=f[o>>2]|0}n=a+140|0;d=f[p>>2]|0;l=(e-d|0)/12|0;j=a+144|0;i=f[j>>2]|0;g=f[n>>2]|0;k=i-g>>2;if(l>>>0<=k>>>0){if(l>>>0>>0?(q=g+(l<<2)|0,(i|0)!=(q|0)):0)f[j>>2]=i+(~((i+-4-q|0)>>>2)<<2)}else{ui(n,l-k|0);e=f[o>>2]|0;d=f[p>>2]|0}if((e|0)==(d|0))d=1;else{m=0;do{yj(s,c)|0;d=f[s>>2]|0;if(d|0){e=f[p>>2]|0;k=e+(m*12|0)|0;j=e+(m*12|0)+4|0;i=f[j>>2]|0;g=f[k>>2]|0;l=i-g>>2;if(d>>>0<=l>>>0){if(d>>>0>>0?(r=g+(d<<2)|0,(i|0)!=(r|0)):0)f[j>>2]=i+(~((i+-4-r|0)>>>2)<<2)}else{ui(k,d-l|0);e=f[p>>2]|0;d=f[s>>2]|0}Xi(d,1,c,f[e+(m*12|0)>>2]|0)|0;f[(f[n>>2]|0)+(m<<2)>>2]=f[s>>2]}m=m+1|0}while(m>>>0<(((f[o>>2]|0)-(f[p>>2]|0)|0)/12|0)>>>0);d=1}}else d=0}s=d;u=t;return s|0}function Hc(a,b){a=a|0;b=b|0;var c=0,d=0,e=0,g=0,h=0,i=0,j=0,k=0,l=0,m=0;if((b|0)<0)return;m=a+12|0;l=f[m>>2]|0;c=f[a+8>>2]|0;j=l;if(l-c>>2>>>0<=b>>>0)return;d=c+(b<<2)|0;l=f[(f[d>>2]|0)+56>>2]|0;c=d+4|0;if((c|0)!=(j|0)){do{h=f[c>>2]|0;f[c>>2]=0;i=f[d>>2]|0;f[d>>2]=h;if(i|0){h=i+88|0;e=f[h>>2]|0;f[h>>2]=0;if(e|0){g=f[e+8>>2]|0;if(g|0){h=e+12|0;if((f[h>>2]|0)!=(g|0))f[h>>2]=g;ar(g)}ar(e)}e=f[i+68>>2]|0;if(e|0){h=i+72|0;g=f[h>>2]|0;if((g|0)!=(e|0))f[h>>2]=g+(~((g+-4-e|0)>>>2)<<2);ar(e)}h=i+64|0;e=f[h>>2]|0;f[h>>2]=0;if(e|0){g=f[e>>2]|0;if(g|0){h=e+4|0;if((f[h>>2]|0)!=(g|0))f[h>>2]=g;ar(g)}ar(e)}ar(i)}c=c+4|0;d=d+4|0}while((c|0)!=(j|0));c=f[m>>2]|0;if((c|0)!=(d|0)){h=d;k=24}}else{c=j;h=d;k=24}if((k|0)==24)do{k=c+-4|0;f[m>>2]=k;g=f[k>>2]|0;f[k>>2]=0;if(g|0){k=g+88|0;c=f[k>>2]|0;f[k>>2]=0;if(c|0){d=f[c+8>>2]|0;if(d|0){e=c+12|0;if((f[e>>2]|0)!=(d|0))f[e>>2]=d;ar(d)}ar(c)}c=f[g+68>>2]|0;if(c|0){e=g+72|0;d=f[e>>2]|0;if((d|0)!=(c|0))f[e>>2]=d+(~((d+-4-c|0)>>>2)<<2);ar(c)}k=g+64|0;c=f[k>>2]|0;f[k>>2]=0;if(c|0){d=f[c>>2]|0;if(d|0){e=c+4|0;if((f[e>>2]|0)!=(d|0))f[e>>2]=d;ar(d)}ar(c)}ar(g)}c=f[m>>2]|0}while((c|0)!=(h|0));a:do if((l|0)<4){c=f[a+20+(l*12|0)>>2]|0;i=a+20+(l*12|0)+4|0;d=f[i>>2]|0;e=d;b:do if((c|0)!=(d|0))while(1){if((f[c>>2]|0)==(b|0))break b;c=c+4|0;if((c|0)==(d|0))break a}while(0);if((c|0)!=(d|0)){g=c+4|0;e=e-g|0;h=e>>2;if(h){rm(c|0,g|0,e|0)|0;d=f[i>>2]|0}c=c+(h<<2)|0;if((d|0)!=(c|0))f[i>>2]=d+(~((d+-4-c|0)>>>2)<<2)}}while(0);c=f[a+24>>2]|0;d=f[a+20>>2]|0;h=d;if((c|0)!=(d|0)){g=c-d>>2;e=0;do{d=h+(e<<2)|0;c=f[d>>2]|0;if((c|0)>(b|0))f[d>>2]=c+-1;e=e+1|0}while(e>>>0>>0)}c=f[a+36>>2]|0;d=f[a+32>>2]|0;h=d;if((c|0)!=(d|0)){g=c-d>>2;e=0;do{d=h+(e<<2)|0;c=f[d>>2]|0;if((c|0)>(b|0))f[d>>2]=c+-1;e=e+1|0}while(e>>>0>>0)}c=f[a+48>>2]|0;d=f[a+44>>2]|0;h=d;if((c|0)!=(d|0)){g=c-d>>2;e=0;do{d=h+(e<<2)|0;c=f[d>>2]|0;if((c|0)>(b|0))f[d>>2]=c+-1;e=e+1|0}while(e>>>0>>0)}d=f[a+60>>2]|0;c=f[a+56>>2]|0;h=c;if((d|0)==(c|0))return;g=d-c>>2;e=0;do{d=h+(e<<2)|0;c=f[d>>2]|0;if((c|0)>(b|0))f[d>>2]=c+-1;e=e+1|0}while(e>>>0>>0);return}function Ic(a,c,d){a=a|0;c=c|0;d=d|0;var e=La,g=La,i=0,j=0,k=0;switch(b[a+24>>0]|0){case 1:{c=f[c>>2]|0;j=a+48|0;i=f[j>>2]|0;j=f[j+4>>2]|0;k=a+40|0;j=(Ho(kn(f[k>>2]|0,f[k+4>>2]|0,c|0,((c|0)<0)<<31>>31|0)|0,I|0,i|0,j|0)|0)+(f[f[a>>2]>>2]|0)|0;e=$((h[j>>0]|h[j+1>>0]<<8|h[j+2>>0]<<16|h[j+3>>0]<<24)>>>0);g=$(e*$(2.32830644e-10));n[d>>2]=(b[a+32>>0]|0)==0?e:g;d=d+4|0;f[d>>2]=0;f[d+4>>2]=0;f[d+8>>2]=0;d=1;return d|0}case 2:{j=f[c>>2]|0;c=a+48|0;k=f[c>>2]|0;c=f[c+4>>2]|0;i=a+40|0;c=(Ho(kn(f[i>>2]|0,f[i+4>>2]|0,j|0,((j|0)<0)<<31>>31|0)|0,I|0,k|0,c|0)|0)+(f[f[a>>2]>>2]|0)|0;k=c;c=c+4|0;c=h[c>>0]|h[c+1>>0]<<8|h[c+2>>0]<<16|h[c+3>>0]<<24;e=$((h[k>>0]|h[k+1>>0]<<8|h[k+2>>0]<<16|h[k+3>>0]<<24)>>>0);if(!(b[a+32>>0]|0)){n[d>>2]=e;e=$(c>>>0)}else{e=$(e*$(2.32830644e-10));n[d>>2]=e;e=$($(c>>>0)*$(2.32830644e-10))}n[d+4>>2]=e;k=d+8|0;f[k>>2]=0;f[k+4>>2]=0;k=1;return k|0}case 3:{i=f[c>>2]|0;k=a+48|0;c=f[k>>2]|0;k=f[k+4>>2]|0;j=a+40|0;k=(Ho(kn(f[j>>2]|0,f[j+4>>2]|0,i|0,((i|0)<0)<<31>>31|0)|0,I|0,c|0,k|0)|0)+(f[f[a>>2]>>2]|0)|0;c=k+4|0;c=h[c>>0]|h[c+1>>0]<<8|h[c+2>>0]<<16|h[c+3>>0]<<24;i=k+8|0;i=h[i>>0]|h[i+1>>0]<<8|h[i+2>>0]<<16|h[i+3>>0]<<24;e=$((h[k>>0]|h[k+1>>0]<<8|h[k+2>>0]<<16|h[k+3>>0]<<24)>>>0);if(!(b[a+32>>0]|0)){n[d>>2]=e;g=$(c>>>0);e=$(i>>>0)}else{g=$(e*$(2.32830644e-10));n[d>>2]=g;g=$($(c>>>0)*$(2.32830644e-10));e=$($(i>>>0)*$(2.32830644e-10))}n[d+4>>2]=g;n[d+8>>2]=e;n[d+12>>2]=$(0.0);k=1;return k|0}case 4:{i=f[c>>2]|0;k=a+48|0;c=f[k>>2]|0;k=f[k+4>>2]|0;j=a+40|0;k=(Ho(kn(f[j>>2]|0,f[j+4>>2]|0,i|0,((i|0)<0)<<31>>31|0)|0,I|0,c|0,k|0)|0)+(f[f[a>>2]>>2]|0)|0;c=k+4|0;c=h[c>>0]|h[c+1>>0]<<8|h[c+2>>0]<<16|h[c+3>>0]<<24;i=k+8|0;i=h[i>>0]|h[i+1>>0]<<8|h[i+2>>0]<<16|h[i+3>>0]<<24;j=k+12|0;j=h[j>>0]|h[j+1>>0]<<8|h[j+2>>0]<<16|h[j+3>>0]<<24;e=$((h[k>>0]|h[k+1>>0]<<8|h[k+2>>0]<<16|h[k+3>>0]<<24)>>>0);if(!(b[a+32>>0]|0)){n[d>>2]=e;g=$(c>>>0);n[d+4>>2]=g;g=$(i>>>0);n[d+8>>2]=g;g=$(j>>>0);n[d+12>>2]=g;k=1;return k|0}else{g=$(e*$(2.32830644e-10));n[d>>2]=g;g=$($(c>>>0)*$(2.32830644e-10));n[d+4>>2]=g;g=$($(i>>>0)*$(2.32830644e-10));n[d+8>>2]=g;g=$($(j>>>0)*$(2.32830644e-10));n[d+12>>2]=g;k=1;return k|0}}default:{k=0;return k|0}}return 0}function Jc(a,b){a=a|0;b=b|0;var c=0,e=0,g=0,h=0,i=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0;e=a+4|0;if(!b){c=f[a>>2]|0;f[a>>2]=0;if(c|0)ar(c);f[e>>2]=0;return}if(b>>>0>1073741823){a=Ia(4)|0;Eq(a);sa(a|0,1344,125)}q=ln(b<<2)|0;c=f[a>>2]|0;f[a>>2]=q;if(c|0)ar(c);f[e>>2]=b;c=0;do{f[(f[a>>2]|0)+(c<<2)>>2]=0;c=c+1|0}while((c|0)!=(b|0));e=a+8|0;h=f[e>>2]|0;if(!h)return;c=f[h+4>>2]|0;p=b+-1|0;q=(p&b|0)==0;if(q)g=c&p;else g=(c>>>0)%(b>>>0)|0;f[(f[a>>2]|0)+(g<<2)>>2]=e;c=f[h>>2]|0;if(!c)return;else{i=h;e=c;c=h}a:while(1){o=c;b:while(1){c:do if(q){c=e;while(1){n=f[c+4>>2]&p;if((n|0)==(g|0))break c;e=(f[a>>2]|0)+(n<<2)|0;if(!(f[e>>2]|0)){g=n;break b}m=c+10|0;k=c+12|0;l=c+14|0;e=f[c>>2]|0;d:do if(!e)e=c;else{j=d[c+8>>1]|0;h=c;while(1){if(j<<16>>16!=(d[e+8>>1]|0)){e=h;break d}if((d[m>>1]|0)!=(d[e+10>>1]|0)){e=h;break d}if((d[k>>1]|0)!=(d[e+12>>1]|0)){e=h;break d}if((d[l>>1]|0)!=(d[e+14>>1]|0)){e=h;break d}h=f[e>>2]|0;if(!h)break;else{r=e;e=h;h=r}}}while(0);f[o>>2]=f[e>>2];f[e>>2]=f[f[(f[a>>2]|0)+(n<<2)>>2]>>2];f[f[(f[a>>2]|0)+(n<<2)>>2]>>2]=c;c=f[i>>2]|0;if(!c){c=40;break a}}}else{c=e;while(1){n=((f[c+4>>2]|0)>>>0)%(b>>>0)|0;if((n|0)==(g|0))break c;e=(f[a>>2]|0)+(n<<2)|0;if(!(f[e>>2]|0)){g=n;break b}m=c+10|0;k=c+12|0;l=c+14|0;e=f[c>>2]|0;e:do if(!e)e=c;else{j=d[c+8>>1]|0;h=c;while(1){if(j<<16>>16!=(d[e+8>>1]|0)){e=h;break e}if((d[m>>1]|0)!=(d[e+10>>1]|0)){e=h;break e}if((d[k>>1]|0)!=(d[e+12>>1]|0)){e=h;break e}if((d[l>>1]|0)!=(d[e+14>>1]|0)){e=h;break e}h=f[e>>2]|0;if(!h)break;else{r=e;e=h;h=r}}}while(0);f[o>>2]=f[e>>2];f[e>>2]=f[f[(f[a>>2]|0)+(n<<2)>>2]>>2];f[f[(f[a>>2]|0)+(n<<2)>>2]>>2]=c;c=f[i>>2]|0;if(!c){c=40;break a}}}while(0);e=f[c>>2]|0;if(!e){c=40;break a}else{i=c;o=c}}f[e>>2]=o;e=f[c>>2]|0;if(!e){c=40;break}else i=c}if((c|0)==40)return}function Kc(a,b){a=a|0;b=b|0;var c=0,d=0,e=0,g=0,h=0,i=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0;d=a+4|0;if(!b){c=f[a>>2]|0;f[a>>2]=0;if(c|0)ar(c);f[d>>2]=0;return}if(b>>>0>1073741823){a=Ia(4)|0;Eq(a);sa(a|0,1344,125)}p=ln(b<<2)|0;c=f[a>>2]|0;f[a>>2]=p;if(c|0)ar(c);f[d>>2]=b;c=0;do{f[(f[a>>2]|0)+(c<<2)>>2]=0;c=c+1|0}while((c|0)!=(b|0));d=a+8|0;g=f[d>>2]|0;if(!g)return;c=f[g+4>>2]|0;o=b+-1|0;p=(o&b|0)==0;if(p)e=c&o;else e=(c>>>0)%(b>>>0)|0;f[(f[a>>2]|0)+(e<<2)>>2]=d;c=f[g>>2]|0;if(!c)return;else{h=g;d=c;c=g}a:while(1){n=c;b:while(1){c:do if(p){c=d;while(1){m=f[c+4>>2]&o;if((m|0)==(e|0))break c;d=(f[a>>2]|0)+(m<<2)|0;if(!(f[d>>2]|0)){e=m;break b}l=c+12|0;j=c+16|0;k=c+20|0;d=f[c>>2]|0;d:do if(!d)d=c;else{i=f[c+8>>2]|0;g=c;while(1){if((i|0)!=(f[d+8>>2]|0)){d=g;break d}if((f[l>>2]|0)!=(f[d+12>>2]|0)){d=g;break d}if((f[j>>2]|0)!=(f[d+16>>2]|0)){d=g;break d}if((f[k>>2]|0)!=(f[d+20>>2]|0)){d=g;break d}g=f[d>>2]|0;if(!g)break;else{q=d;d=g;g=q}}}while(0);f[n>>2]=f[d>>2];f[d>>2]=f[f[(f[a>>2]|0)+(m<<2)>>2]>>2];f[f[(f[a>>2]|0)+(m<<2)>>2]>>2]=c;c=f[h>>2]|0;if(!c){c=40;break a}}}else{c=d;while(1){m=((f[c+4>>2]|0)>>>0)%(b>>>0)|0;if((m|0)==(e|0))break c;d=(f[a>>2]|0)+(m<<2)|0;if(!(f[d>>2]|0)){e=m;break b}l=c+12|0;j=c+16|0;k=c+20|0;d=f[c>>2]|0;e:do if(!d)d=c;else{i=f[c+8>>2]|0;g=c;while(1){if((i|0)!=(f[d+8>>2]|0)){d=g;break e}if((f[l>>2]|0)!=(f[d+12>>2]|0)){d=g;break e}if((f[j>>2]|0)!=(f[d+16>>2]|0)){d=g;break e}if((f[k>>2]|0)!=(f[d+20>>2]|0)){d=g;break e}g=f[d>>2]|0;if(!g)break;else{q=d;d=g;g=q}}}while(0);f[n>>2]=f[d>>2];f[d>>2]=f[f[(f[a>>2]|0)+(m<<2)>>2]>>2];f[f[(f[a>>2]|0)+(m<<2)>>2]>>2]=c;c=f[h>>2]|0;if(!c){c=40;break a}}}while(0);d=f[c>>2]|0;if(!d){c=40;break a}else{h=c;n=c}}f[d>>2]=n;d=f[c>>2]|0;if(!d){c=40;break}else h=c}if((c|0)==40)return}function Lc(a,c,d){a=a|0;c=c|0;d=d|0;var e=La,g=La,i=0,j=0,k=0;switch(b[a+24>>0]|0){case 1:{c=f[c>>2]|0;j=a+48|0;i=f[j>>2]|0;j=f[j+4>>2]|0;k=a+40|0;j=(Ho(kn(f[k>>2]|0,f[k+4>>2]|0,c|0,((c|0)<0)<<31>>31|0)|0,I|0,i|0,j|0)|0)+(f[f[a>>2]>>2]|0)|0;e=$(h[j>>0]|h[j+1>>0]<<8|h[j+2>>0]<<16|h[j+3>>0]<<24|0);g=$(e*$(4.65661287e-10));n[d>>2]=(b[a+32>>0]|0)==0?e:g;d=d+4|0;f[d>>2]=0;f[d+4>>2]=0;f[d+8>>2]=0;d=1;return d|0}case 2:{j=f[c>>2]|0;c=a+48|0;k=f[c>>2]|0;c=f[c+4>>2]|0;i=a+40|0;c=(Ho(kn(f[i>>2]|0,f[i+4>>2]|0,j|0,((j|0)<0)<<31>>31|0)|0,I|0,k|0,c|0)|0)+(f[f[a>>2]>>2]|0)|0;k=c;c=c+4|0;c=h[c>>0]|h[c+1>>0]<<8|h[c+2>>0]<<16|h[c+3>>0]<<24;e=$(h[k>>0]|h[k+1>>0]<<8|h[k+2>>0]<<16|h[k+3>>0]<<24|0);if(!(b[a+32>>0]|0)){n[d>>2]=e;e=$(c|0)}else{e=$(e*$(4.65661287e-10));n[d>>2]=e;e=$($(c|0)*$(4.65661287e-10))}n[d+4>>2]=e;k=d+8|0;f[k>>2]=0;f[k+4>>2]=0;k=1;return k|0}case 3:{i=f[c>>2]|0;k=a+48|0;c=f[k>>2]|0;k=f[k+4>>2]|0;j=a+40|0;k=(Ho(kn(f[j>>2]|0,f[j+4>>2]|0,i|0,((i|0)<0)<<31>>31|0)|0,I|0,c|0,k|0)|0)+(f[f[a>>2]>>2]|0)|0;c=k+4|0;c=h[c>>0]|h[c+1>>0]<<8|h[c+2>>0]<<16|h[c+3>>0]<<24;i=k+8|0;i=h[i>>0]|h[i+1>>0]<<8|h[i+2>>0]<<16|h[i+3>>0]<<24;e=$(h[k>>0]|h[k+1>>0]<<8|h[k+2>>0]<<16|h[k+3>>0]<<24|0);if(!(b[a+32>>0]|0)){n[d>>2]=e;g=$(c|0);e=$(i|0)}else{g=$(e*$(4.65661287e-10));n[d>>2]=g;g=$($(c|0)*$(4.65661287e-10));e=$($(i|0)*$(4.65661287e-10))}n[d+4>>2]=g;n[d+8>>2]=e;n[d+12>>2]=$(0.0);k=1;return k|0}case 4:{i=f[c>>2]|0;k=a+48|0;c=f[k>>2]|0;k=f[k+4>>2]|0;j=a+40|0;k=(Ho(kn(f[j>>2]|0,f[j+4>>2]|0,i|0,((i|0)<0)<<31>>31|0)|0,I|0,c|0,k|0)|0)+(f[f[a>>2]>>2]|0)|0;c=k+4|0;c=h[c>>0]|h[c+1>>0]<<8|h[c+2>>0]<<16|h[c+3>>0]<<24;i=k+8|0;i=h[i>>0]|h[i+1>>0]<<8|h[i+2>>0]<<16|h[i+3>>0]<<24;j=k+12|0;j=h[j>>0]|h[j+1>>0]<<8|h[j+2>>0]<<16|h[j+3>>0]<<24;e=$(h[k>>0]|h[k+1>>0]<<8|h[k+2>>0]<<16|h[k+3>>0]<<24|0);if(!(b[a+32>>0]|0)){n[d>>2]=e;g=$(c|0);n[d+4>>2]=g;g=$(i|0);n[d+8>>2]=g;g=$(j|0);n[d+12>>2]=g;k=1;return k|0}else{g=$(e*$(4.65661287e-10));n[d>>2]=g;g=$($(c|0)*$(4.65661287e-10));n[d+4>>2]=g;g=$($(i|0)*$(4.65661287e-10));n[d+8>>2]=g;g=$($(j|0)*$(4.65661287e-10));n[d+12>>2]=g;k=1;return k|0}}default:{k=0;return k|0}}return 0}function Mc(a,c){a=a|0;c=c|0;var d=0,e=0,g=0,h=0,i=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0;e=a+4|0;if(!c){d=f[a>>2]|0;f[a>>2]=0;if(d|0)ar(d);f[e>>2]=0;return}if(c>>>0>1073741823){a=Ia(4)|0;Eq(a);sa(a|0,1344,125)}q=ln(c<<2)|0;d=f[a>>2]|0;f[a>>2]=q;if(d|0)ar(d);f[e>>2]=c;d=0;do{f[(f[a>>2]|0)+(d<<2)>>2]=0;d=d+1|0}while((d|0)!=(c|0));e=a+8|0;h=f[e>>2]|0;if(!h)return;d=f[h+4>>2]|0;p=c+-1|0;q=(p&c|0)==0;if(q)g=d&p;else g=(d>>>0)%(c>>>0)|0;f[(f[a>>2]|0)+(g<<2)>>2]=e;d=f[h>>2]|0;if(!d)return;else{i=h;e=d;d=h}a:while(1){o=d;b:while(1){c:do if(q){d=e;while(1){n=f[d+4>>2]&p;if((n|0)==(g|0))break c;e=(f[a>>2]|0)+(n<<2)|0;if(!(f[e>>2]|0)){g=n;break b}m=d+9|0;k=d+10|0;l=d+11|0;e=f[d>>2]|0;d:do if(!e)e=d;else{j=b[d+8>>0]|0;h=d;while(1){if(j<<24>>24!=(b[e+8>>0]|0)){e=h;break d}if((b[m>>0]|0)!=(b[e+9>>0]|0)){e=h;break d}if((b[k>>0]|0)!=(b[e+10>>0]|0)){e=h;break d}if((b[l>>0]|0)!=(b[e+11>>0]|0)){e=h;break d}h=f[e>>2]|0;if(!h)break;else{r=e;e=h;h=r}}}while(0);f[o>>2]=f[e>>2];f[e>>2]=f[f[(f[a>>2]|0)+(n<<2)>>2]>>2];f[f[(f[a>>2]|0)+(n<<2)>>2]>>2]=d;d=f[i>>2]|0;if(!d){d=40;break a}}}else{d=e;while(1){n=((f[d+4>>2]|0)>>>0)%(c>>>0)|0;if((n|0)==(g|0))break c;e=(f[a>>2]|0)+(n<<2)|0;if(!(f[e>>2]|0)){g=n;break b}m=d+9|0;k=d+10|0;l=d+11|0;e=f[d>>2]|0;e:do if(!e)e=d;else{j=b[d+8>>0]|0;h=d;while(1){if(j<<24>>24!=(b[e+8>>0]|0)){e=h;break e}if((b[m>>0]|0)!=(b[e+9>>0]|0)){e=h;break e}if((b[k>>0]|0)!=(b[e+10>>0]|0)){e=h;break e}if((b[l>>0]|0)!=(b[e+11>>0]|0)){e=h;break e}h=f[e>>2]|0;if(!h)break;else{r=e;e=h;h=r}}}while(0);f[o>>2]=f[e>>2];f[e>>2]=f[f[(f[a>>2]|0)+(n<<2)>>2]>>2];f[f[(f[a>>2]|0)+(n<<2)>>2]>>2]=d;d=f[i>>2]|0;if(!d){d=40;break a}}}while(0);e=f[d>>2]|0;if(!e){d=40;break a}else{i=d;o=d}}f[e>>2]=o;e=f[d>>2]|0;if(!e){d=40;break}else i=d}if((d|0)==40)return}function Nc(a,c,d){a=a|0;c=c|0;d=d|0;var e=0,g=0,i=0,j=0,k=0,l=0,m=0,o=0;o=u;u=u+32|0;j=o+24|0;k=o+20|0;l=o+16|0;m=o+12|0;e=o+8|0;g=o+4|0;i=o;if(!d){a=0;u=o;return a|0}switch(f[a+28>>2]|0){case 9:{e=f[c>>2]|0;switch(b[a+24>>0]|0){case 1:{c=a+48|0;m=f[c>>2]|0;c=f[c+4>>2]|0;l=a+40|0;a=(Ho(kn(f[l>>2]|0,f[l+4>>2]|0,e|0,((e|0)<0)<<31>>31|0)|0,I|0,m|0,c|0)|0)+(f[f[a>>2]>>2]|0)|0;f[d>>2]=h[a>>0]|h[a+1>>0]<<8|h[a+2>>0]<<16|h[a+3>>0]<<24;a=d+4|0;f[a>>2]=0;f[a+4>>2]=0;f[a+8>>2]=0;a=1;u=o;return a|0}case 2:{c=a+48|0;m=f[c>>2]|0;c=f[c+4>>2]|0;l=a+40|0;c=(Ho(kn(f[l>>2]|0,f[l+4>>2]|0,e|0,((e|0)<0)<<31>>31|0)|0,I|0,m|0,c|0)|0)+(f[f[a>>2]>>2]|0)|0;m=c;c=c+4|0;c=h[c>>0]|h[c+1>>0]<<8|h[c+2>>0]<<16|h[c+3>>0]<<24;a=d;f[a>>2]=h[m>>0]|h[m+1>>0]<<8|h[m+2>>0]<<16|h[m+3>>0]<<24;f[a+4>>2]=c;a=d+8|0;f[a>>2]=0;f[a+4>>2]=0;a=1;u=o;return a|0}case 3:{c=a+48|0;m=f[c>>2]|0;c=f[c+4>>2]|0;l=a+40|0;rm(d|0,(Ho(kn(f[l>>2]|0,f[l+4>>2]|0,e|0,((e|0)<0)<<31>>31|0)|0,I|0,m|0,c|0)|0)+(f[f[a>>2]>>2]|0)|0,12)|0;n[d+12>>2]=$(0.0);a=1;u=o;return a|0}case 4:{c=a+48|0;m=f[c>>2]|0;c=f[c+4>>2]|0;l=a+40|0;rm(d|0,(Ho(kn(f[l>>2]|0,f[l+4>>2]|0,e|0,((e|0)<0)<<31>>31|0)|0,I|0,m|0,c|0)|0)+(f[f[a>>2]>>2]|0)|0,16)|0;a=1;u=o;return a|0}default:{a=0;u=o;return a|0}}}case 2:{f[k>>2]=f[c>>2];f[j>>2]=f[k>>2];a=Ed(a,j,d)|0;u=o;return a|0}case 1:{f[l>>2]=f[c>>2];f[j>>2]=f[l>>2];a=yd(a,j,d)|0;u=o;return a|0}case 4:{f[m>>2]=f[c>>2];f[j>>2]=f[m>>2];a=jd(a,j,d)|0;u=o;return a|0}case 3:{f[e>>2]=f[c>>2];f[j>>2]=f[e>>2];a=gd(a,j,d)|0;u=o;return a|0}case 6:{f[g>>2]=f[c>>2];f[j>>2]=f[g>>2];a=Ic(a,j,d)|0;u=o;return a|0}case 5:{f[i>>2]=f[c>>2];f[j>>2]=f[i>>2];a=Lc(a,j,d)|0;u=o;return a|0}default:{a=0;u=o;return a|0}}return 0}function Oc(a,c,d){a=a|0;c=c|0;d=d|0;var e=0,g=0,i=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,v=0;v=u;u=u+64|0;t=v;e=t;g=e+40|0;do{f[e>>2]=0;e=e+4|0}while((e|0)<(g|0));a:do if(ne(t,c)|0){q=(a|0)>0;if(q?(f[t+12>>2]|0)==0:0){j=0;break}j=c+8|0;i=f[j>>2]|0;j=f[j+4>>2]|0;l=c+16|0;e=l;k=f[e>>2]|0;e=Ho(k|0,f[e+4>>2]|0,8,0)|0;g=I;if((!((j|0)<(g|0)|(j|0)==(g|0)&i>>>0>>0)?(m=f[c>>2]|0,n=m+k|0,o=n,o=h[o>>0]|h[o+1>>0]<<8|h[o+2>>0]<<16|h[o+3>>0]<<24,n=n+4|0,n=h[n>>0]|h[n+1>>0]<<8|h[n+2>>0]<<16|h[n+3>>0]<<24,c=l,f[c>>2]=e,f[c+4>>2]=g,c=Xn(i|0,j|0,e|0,g|0)|0,k=I,!(n>>>0>k>>>0|(n|0)==(k|0)&o>>>0>c>>>0)):0)?(s=m+e|0,n=Ho(o|0,n|0,e|0,g|0)|0,c=l,f[c>>2]=n,f[c+4>>2]=I,(o|0)>=1):0){f[t+40>>2]=s;g=o+-1|0;e=s+g|0;switch((h[e>>0]|0)>>>6&3){case 0:{f[t+44>>2]=g;r=g;p=b[e>>0]&63;break}case 1:{if((o|0)<2){j=0;break a}r=o+-2|0;f[t+44>>2]=r;p=s+o+-2|0;p=(h[p+1>>0]|0)<<8&16128|(h[p>>0]|0);break}case 2:{if((o|0)<3){j=0;break a}r=o+-3|0;f[t+44>>2]=r;p=s+o+-3|0;p=(h[p+1>>0]|0)<<8|(h[p>>0]|0)|(h[p+2>>0]|0)<<16&4128768;break}case 3:{r=o+-4|0;f[t+44>>2]=r;p=s+o+-4|0;p=(h[p+2>>0]|0)<<16|(h[p+3>>0]|0)<<24&1056964608|(h[p+1>>0]|0)<<8|(h[p>>0]|0);break}default:{}}m=t+48|0;g=p+4194304|0;f[m>>2]=g;e=g>>>0>1073741823;if(e|q^1)j=e^1;else{l=t+44|0;j=t+16|0;k=t+28|0;e=r;i=0;while(1){b:do if(g>>>0<4194304)do{if((e|0)<=0)break b;e=e+-1|0;f[l>>2]=e;g=h[s+e>>0]|0|g<<8;f[m>>2]=g}while(g>>>0<4194304);while(0);p=g&1048575;r=f[(f[j>>2]|0)+(p<<2)>>2]|0;q=f[k>>2]|0;g=(X(f[q+(r<<3)>>2]|0,g>>>20)|0)+p-(f[q+(r<<3)+4>>2]|0)|0;f[m>>2]=g;f[d+(i<<2)>>2]=r;i=i+1|0;if((i|0)==(a|0)){j=1;break}}}}else j=0}else j=0;while(0);e=f[t+28>>2]|0;if(e|0){i=t+32|0;g=f[i>>2]|0;if((g|0)!=(e|0))f[i>>2]=g+(~((g+-8-e|0)>>>3)<<3);ar(e)}e=f[t+16>>2]|0;if(e|0){i=t+20|0;g=f[i>>2]|0;if((g|0)!=(e|0))f[i>>2]=g+(~((g+-4-e|0)>>>2)<<2);ar(e)}i=f[t>>2]|0;if(!i){u=v;return j|0}g=t+4|0;e=f[g>>2]|0;if((e|0)!=(i|0))f[g>>2]=e+(~((e+-4-i|0)>>>2)<<2);ar(i);u=v;return j|0}function Pc(a,c,d){a=a|0;c=c|0;d=d|0;var e=0,g=0,h=0,i=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,v=0,w=0;w=u;u=u+48|0;s=w+32|0;o=w+28|0;p=w+24|0;q=w+20|0;r=w+16|0;v=w;t=c+24|0;k=b[t>>0]|0;m=k<<24>>24;n=f[a+68>>2]|0;h=X(n,m)|0;f[v>>2]=f[348];f[v+4>>2]=f[349];f[v+8>>2]=f[350];f[v+12>>2]=f[351];g=d+4|0;e=f[g>>2]|0;a=f[d>>2]|0;i=e-a>>2;if(h>>>0<=i>>>0){if(h>>>0>>0?(j=a+(h<<2)|0,(e|0)!=(j|0)):0)f[g>>2]=e+(~((e+-4-j|0)>>>2)<<2)}else ui(d,h-i|0);if((n|0)<=0){v=1;u=w;return v|0}l=c+84|0;j=c+68|0;a:do if(k<<24>>24>0){h=0;i=0;while(1){if(!(b[l>>0]|0))a=f[(f[j>>2]|0)+(i<<2)>>2]|0;else a=i;switch(b[t>>0]|0){case 1:{f[o>>2]=a;f[s>>2]=f[o>>2];a=od(c,s,v)|0;break}case 2:{f[p>>2]=a;f[s>>2]=f[p>>2];a=wc(c,s,v)|0;break}case 3:{f[q>>2]=a;f[s>>2]=f[q>>2];a=Vc(c,s,v)|0;break}case 4:{f[r>>2]=a;f[s>>2]=f[r>>2];a=Nc(c,s,v)|0;break}default:break a}if(!a){a=0;e=29;break}a=f[d>>2]|0;e=h;g=0;while(1){f[a+(e<<2)>>2]=f[v+(g<<2)>>2];g=g+1|0;if((g|0)==(m|0))break;else e=e+1|0}i=i+1|0;if((i|0)>=(n|0)){a=1;e=29;break}else h=m+h|0}if((e|0)==29){u=w;return a|0}}else{e=0;while(1){if(!(b[l>>0]|0))a=f[(f[j>>2]|0)+(e<<2)>>2]|0;else a=e;switch(b[t>>0]|0){case 1:{f[o>>2]=a;f[s>>2]=f[o>>2];a=od(c,s,v)|0;break}case 2:{f[p>>2]=a;f[s>>2]=f[p>>2];a=wc(c,s,v)|0;break}case 3:{f[q>>2]=a;f[s>>2]=f[q>>2];a=Vc(c,s,v)|0;break}case 4:{f[r>>2]=a;f[s>>2]=f[r>>2];a=Nc(c,s,v)|0;break}default:break a}if(!a){a=0;e=29;break}e=e+1|0;if((e|0)>=(n|0)){a=1;e=29;break}}if((e|0)==29){u=w;return a|0}}while(0);v=0;u=w;return v|0}function Qc(a,c,d){a=a|0;c=c|0;d=d|0;var e=0,g=0,i=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,v=0;v=u;u=u+64|0;t=v;e=t;g=e+40|0;do{f[e>>2]=0;e=e+4|0}while((e|0)<(g|0));a:do if(oe(t,c)|0){q=(a|0)>0;if(q?(f[t+12>>2]|0)==0:0){j=0;break}j=c+8|0;i=f[j>>2]|0;j=f[j+4>>2]|0;l=c+16|0;e=l;k=f[e>>2]|0;e=Ho(k|0,f[e+4>>2]|0,8,0)|0;g=I;if((!((j|0)<(g|0)|(j|0)==(g|0)&i>>>0>>0)?(m=f[c>>2]|0,n=m+k|0,o=n,o=h[o>>0]|h[o+1>>0]<<8|h[o+2>>0]<<16|h[o+3>>0]<<24,n=n+4|0,n=h[n>>0]|h[n+1>>0]<<8|h[n+2>>0]<<16|h[n+3>>0]<<24,c=l,f[c>>2]=e,f[c+4>>2]=g,c=Xn(i|0,j|0,e|0,g|0)|0,k=I,!(n>>>0>k>>>0|(n|0)==(k|0)&o>>>0>c>>>0)):0)?(s=m+e|0,n=Ho(o|0,n|0,e|0,g|0)|0,c=l,f[c>>2]=n,f[c+4>>2]=I,(o|0)>=1):0){f[t+40>>2]=s;g=o+-1|0;e=s+g|0;switch((h[e>>0]|0)>>>6&3){case 0:{f[t+44>>2]=g;r=g;p=b[e>>0]&63;break}case 1:{if((o|0)<2){j=0;break a}r=o+-2|0;f[t+44>>2]=r;p=s+o+-2|0;p=(h[p+1>>0]|0)<<8&16128|(h[p>>0]|0);break}case 2:{if((o|0)<3){j=0;break a}r=o+-3|0;f[t+44>>2]=r;p=s+o+-3|0;p=(h[p+1>>0]|0)<<8|(h[p>>0]|0)|(h[p+2>>0]|0)<<16&4128768;break}case 3:{r=o+-4|0;f[t+44>>2]=r;p=s+o+-4|0;p=(h[p+2>>0]|0)<<16|(h[p+3>>0]|0)<<24&1056964608|(h[p+1>>0]|0)<<8|(h[p>>0]|0);break}default:{}}m=t+48|0;g=p+2097152|0;f[m>>2]=g;e=g>>>0>536870911;if(e|q^1)j=e^1;else{l=t+44|0;j=t+16|0;k=t+28|0;e=r;i=0;while(1){b:do if(g>>>0<2097152)do{if((e|0)<=0)break b;e=e+-1|0;f[l>>2]=e;g=h[s+e>>0]|0|g<<8;f[m>>2]=g}while(g>>>0<2097152);while(0);p=g&524287;r=f[(f[j>>2]|0)+(p<<2)>>2]|0;q=f[k>>2]|0;g=(X(f[q+(r<<3)>>2]|0,g>>>19)|0)+p-(f[q+(r<<3)+4>>2]|0)|0;f[m>>2]=g;f[d+(i<<2)>>2]=r;i=i+1|0;if((i|0)==(a|0)){j=1;break}}}}else j=0}else j=0;while(0);e=f[t+28>>2]|0;if(e|0){i=t+32|0;g=f[i>>2]|0;if((g|0)!=(e|0))f[i>>2]=g+(~((g+-8-e|0)>>>3)<<3);ar(e)}e=f[t+16>>2]|0;if(e|0){i=t+20|0;g=f[i>>2]|0;if((g|0)!=(e|0))f[i>>2]=g+(~((g+-4-e|0)>>>2)<<2);ar(e)}i=f[t>>2]|0;if(!i){u=v;return j|0}g=t+4|0;e=f[g>>2]|0;if((e|0)!=(i|0))f[g>>2]=e+(~((e+-4-i|0)>>>2)<<2);ar(i);u=v;return j|0} +function Ya(a,c){a=a|0;c=c|0;var d=0,e=0,g=0,i=0,j=0,k=0,l=0,m=0,o=0,p=0,q=0,r=0,s=0,t=0,v=0,w=0,x=0,y=0,z=0,A=0,B=0,C=0,D=0,E=0,F=0,G=0,H=0,I=0,J=0,K=0,L=0,M=0,N=0,O=0,P=0,Q=0,R=0,S=0,T=0,U=0,V=0,W=0,X=0,Y=0,Z=0,_=0,aa=0,ba=0,ca=0,da=0,ea=0,fa=0,ga=0,ha=0,ia=0,ja=0,ka=0,la=0,ma=0,na=0,oa=0,pa=0,qa=0,ra=0,sa=0,ta=0,ua=0,va=0,wa=0,xa=0,ya=0,za=0;za=u;u=u+48|0;pa=za+40|0;wa=za+28|0;xa=za+8|0;Z=za+4|0;ra=za;f[wa>>2]=0;ya=wa+4|0;f[ya>>2]=0;f[wa+8>>2]=0;f[xa>>2]=0;f[xa+4>>2]=0;f[xa+8>>2]=0;f[xa+12>>2]=0;n[xa+16>>2]=$(1.0);qa=a+136|0;ka=f[a+140>>2]|0;a:do if((c|0)>0){ja=a+240|0;K=a+356|0;y=a+276|0;_=a+352|0;A=a+272|0;B=a+264|0;C=a+268|0;J=a+8|0;H=xa+4|0;D=a+340|0;I=wa+8|0;ia=a+36|0;G=a+40|0;ha=c+-1|0;E=a+368|0;F=a+380|0;x=0;w=0;while(1){d=x+1|0;e=f[K>>2]|0;b:do if((e|0)!=-1){v=f[E>>2]|0;t=(f[F>>2]|0)+(e<<2)|0;la=(f[t>>2]|0)+-1|0;f[t>>2]=la;la=f[(f[v+(e*12|0)>>2]|0)+(la<<2)>>2]|0;e=f[4840+(la<<2)>>2]|0;f[_>>2]=e;if(!la)la=15;else la=58}else{do if(!(b[y>>0]|0))e=1;else{g=f[A>>2]|0;j=f[B>>2]|0;k=f[C>>2]|0;e=j+(g>>>3)|0;if(e>>>0>>0?(la=h[e>>0]|0,L=g+1|0,f[A>>2]=L,la&1<<(g&7)|0):0){e=j+(L>>>3)|0;if(e>>>0>>0){i=(h[e>>0]|0)>>>(L&7)&1;g=g+2|0;f[A>>2]=g}else{g=L;i=0}e=j+(g>>>3)|0;if(e>>>0>>0){e=(h[e>>0]|0)>>>(g&7);f[A>>2]=g+1;e=e<<1&2}else e=0;e=(e|i)<<1|1;break}f[_>>2]=0;la=15;break b}while(0);f[_>>2]=e;la=58}while(0);c:do if((la|0)==15){la=0;e=f[ya>>2]|0;if((f[wa>>2]|0)==(e|0)){g=-1;break a}s=f[e+-4>>2]|0;r=(s|0)<0;d:do if(!r){e=s+(((s>>>0)%3|0|0)==0?2:-1)|0;if((e|0)<0)la=18;else{j=f[J>>2]|0;i=f[j+12>>2]|0;while(1){g=f[i+(e<<2)>>2]|0;if((g|0)<=-1){p=0;break d}e=g+(((g>>>0)%3|0|0)==0?2:-1)|0;if((e|0)<0){p=1;break}}}}else{e=s;la=18}while(0);if((la|0)==18){la=0;j=f[J>>2]|0;i=f[j+12>>2]|0;p=1}v=x*3|0;q=v+1|0;f[i+(s<<2)>>2]=q;f[i+(q<<2)>>2]=s;t=v+2|0;f[i+(e<<2)>>2]=t;f[i+(t<<2)>>2]=e;g=s+1|0;if(!r?(fa=((g|0)%3|0|0)==0?s+-2|0:g,(fa|0)>=0):0){m=f[j>>2]|0;o=f[m+(fa<<2)>>2]|0;f[m+(v<<2)>>2]=o;if((o|0)>-1){m=j+24|0;j=j+28|0;i=f[j>>2]|0;g=f[m>>2]|0;l=i-g>>2;do if(l>>>0<=o>>>0){k=o+1|0;if(k>>>0>l>>>0){ui(m,k-l|0);g=f[m>>2]|0;break}if(k>>>0>>0?(N=g+(k<<2)|0,(i|0)!=(N|0)):0)f[j>>2]=i+(~((i+-4-N|0)>>>2)<<2)}while(0);f[g+(o<<2)>>2]=v;j=f[J>>2]|0}}else{f[(f[j>>2]|0)+(v<<2)>>2]=-1073741824;o=-1073741824}g=e+1|0;if(!p?(ea=((g|0)%3|0|0)==0?e+-2|0:g,(ea|0)>=0):0){p=f[j>>2]|0;m=f[p+(ea<<2)>>2]|0;f[p+(q<<2)>>2]=m;if((m|0)>-1){l=j+24|0;i=j+28|0;g=f[i>>2]|0;e=f[l>>2]|0;k=g-e>>2;do if(k>>>0<=m>>>0){j=m+1|0;if(j>>>0>k>>>0){ui(l,j-k|0);e=f[l>>2]|0;break}if(j>>>0>>0?(R=e+(j<<2)|0,(g|0)!=(R|0)):0)f[i>>2]=g+(~((g+-4-R|0)>>>2)<<2)}while(0);f[e+(m<<2)>>2]=q;j=f[J>>2]|0}}else f[(f[j>>2]|0)+(q<<2)>>2]=-1073741824;if(!r?(ca=(((s>>>0)%3|0|0)==0?2:-1)+s|0,(ca|0)>=0):0){s=f[j>>2]|0;m=f[s+(ca<<2)>>2]|0;f[s+(t<<2)>>2]=m;if((m|0)>-1){l=j+24|0;i=j+28|0;g=f[i>>2]|0;e=f[l>>2]|0;k=g-e>>2;do if(k>>>0<=m>>>0){j=m+1|0;if(j>>>0>k>>>0){ui(l,j-k|0);e=f[l>>2]|0;break}if(j>>>0>>0?(Q=e+(j<<2)|0,(g|0)!=(Q|0)):0)f[i>>2]=g+(~((g+-4-Q|0)>>>2)<<2)}while(0);g=t;e=e+(m<<2)|0;la=55}}else{g=-1073741824;e=(f[j>>2]|0)+(t<<2)|0;la=55}if((la|0)==55){la=0;f[e>>2]=g}if((w|0)>(ka|0)){g=-1;break a}e=(f[qa>>2]|0)+(o>>>5<<2)|0;f[e>>2]=f[e>>2]&~(1<<(o&31));f[(f[ya>>2]|0)+-4>>2]=v;e=v;g=0;k=w}else if((la|0)==58){la=0;switch(e|0){case 3:case 5:{g=f[ya>>2]|0;if((f[wa>>2]|0)==(g|0)){g=-1;break a}s=f[g+-4>>2]|0;t=x*3|0;r=((e|0)==5?2:1)+t|0;e=f[J>>2]|0;v=f[e+12>>2]|0;f[v+(r<<2)>>2]=s;f[v+(s<<2)>>2]=r;v=w+1|0;f[(f[e>>2]|0)+(r<<2)>>2]=w;if((w|0)>-1){k=e+24|0;i=e+28|0;g=f[i>>2]|0;e=f[k>>2]|0;j=g-e>>2;do if(j>>>0<=w>>>0){if(v>>>0>j>>>0){ui(k,v-j|0);e=f[k>>2]|0;break}if(v>>>0>>0?(P=e+(v<<2)|0,(g|0)!=(P|0)):0)f[i>>2]=g+(~((g+-4-P|0)>>>2)<<2)}while(0);f[e+(w<<2)>>2]=r;e=f[J>>2]|0}p=(r|0)<0;g=r+1|0;if(p)m=r;else m=((g|0)%3|0|0)==0?r+-2|0:g;q=(s|0)<0;if(!q?(ba=(((s>>>0)%3|0|0)==0?2:-1)+s|0,(ba|0)>=0):0){w=f[e>>2]|0;o=f[w+(ba<<2)>>2]|0;f[w+(m<<2)>>2]=o;if((o|0)>-1){l=e+24|0;i=e+28|0;g=f[i>>2]|0;e=f[l>>2]|0;k=g-e>>2;do if(k>>>0<=o>>>0){j=o+1|0;if(j>>>0>k>>>0){ui(l,j-k|0);e=f[l>>2]|0;break}if(j>>>0>>0?(O=e+(j<<2)|0,(g|0)!=(O|0)):0)f[i>>2]=g+(~((g+-4-O|0)>>>2)<<2)}while(0);f[e+(o<<2)>>2]=m;e=f[J>>2]|0}}else f[(f[e>>2]|0)+(m<<2)>>2]=-1073741824;do if(!p)if(!((r>>>0)%3|0)){o=r+2|0;break}else{o=r+-1|0;break}else o=r;while(0);g=s+1|0;if(!q?(da=((g|0)%3|0|0)==0?s+-2|0:g,(da|0)>=0):0){w=f[e>>2]|0;m=f[w+(da<<2)>>2]|0;f[w+(o<<2)>>2]=m;if((m|0)>-1){l=e+24|0;i=e+28|0;g=f[i>>2]|0;e=f[l>>2]|0;k=g-e>>2;do if(k>>>0<=m>>>0){j=m+1|0;if(j>>>0>k>>>0){ui(l,j-k|0);e=f[l>>2]|0;break}if(j>>>0>>0?(M=e+(j<<2)|0,(g|0)!=(M|0)):0)f[i>>2]=g+(~((g+-4-M|0)>>>2)<<2)}while(0);g=o;e=e+(m<<2)|0;la=96}}else{g=-1073741824;e=(f[e>>2]|0)+(o<<2)|0;la=96}if((la|0)==96){la=0;f[e>>2]=g}f[(f[ya>>2]|0)+-4>>2]=t;e=t;g=1;k=v;break c}case 1:{g=f[wa>>2]|0;e=f[ya>>2]|0;if((g|0)==(e|0)){g=-1;break a}p=e+-4|0;m=f[p>>2]|0;f[ya>>2]=p;k=f[H>>2]|0;e:do if(k){l=k+-1|0;j=(l&k|0)==0;if(j)o=l&x;else o=(x>>>0)%(k>>>0)|0;i=f[(f[xa>>2]|0)+(o<<2)>>2]|0;if(i){if(j)do{i=f[i>>2]|0;if(!i){e=p;break e}if((f[i+4>>2]&l|0)!=(o|0)){e=p;break e}}while((f[i+8>>2]|0)!=(x|0));else do{i=f[i>>2]|0;if(!i){e=p;break e}if((((f[i+4>>2]|0)>>>0)%(k>>>0)|0|0)!=(o|0)){e=p;break e}}while((f[i+8>>2]|0)!=(x|0));i=i+12|0;if((p|0)==(f[I>>2]|0)){Ii(wa,i);g=f[wa>>2]|0;e=f[ya>>2]|0;break}else{f[p>>2]=f[i>>2];f[ya>>2]=e;break}}else e=p}else e=p;while(0);if((g|0)==(e|0)){g=-1;break a}p=f[e+-4>>2]|0;t=x*3|0;s=t+2|0;e=f[J>>2]|0;v=f[e+12>>2]|0;f[v+(p<<2)>>2]=s;f[v+(s<<2)>>2]=p;r=t+1|0;f[v+(m<<2)>>2]=r;f[v+(r<<2)>>2]=m;if((p|0)>=0){g=(((p>>>0)%3|0|0)==0?2:-1)+p|0;i=f[e>>2]|0;if((g|0)>=0){j=f[i+(g<<2)>>2]|0;f[i+(t<<2)>>2]=j;if((j|0)>-1){o=e+24|0;i=e+28|0;g=f[i>>2]|0;e=f[o>>2]|0;l=g-e>>2;do if(l>>>0<=j>>>0){k=j+1|0;if(k>>>0>l>>>0){ui(o,k-l|0);e=f[o>>2]|0;break}if(k>>>0>>0?(Y=e+(k<<2)|0,(g|0)!=(Y|0)):0)f[i>>2]=g+(~((g+-4-Y|0)>>>2)<<2)}while(0);f[e+(j<<2)>>2]=t;e=f[J>>2]|0;i=1}else i=0}else{f[i+(t<<2)>>2]=-1073741824;i=0;j=-1073741824}g=p+1|0;g=((g|0)%3|0|0)==0?p+-2|0:g;k=f[e>>2]|0;if((g|0)>=0){q=f[k+(g<<2)>>2]|0;f[k+(r<<2)>>2]=q;if((q|0)>-1){p=e+24|0;k=e+28|0;g=f[k>>2]|0;e=f[p>>2]|0;o=g-e>>2;do if(o>>>0<=q>>>0){l=q+1|0;if(l>>>0>o>>>0){ui(p,l-o|0);e=f[p>>2]|0;break}if(l>>>0>>0?(X=e+(l<<2)|0,(g|0)!=(X|0)):0)f[k>>2]=g+(~((g+-4-X|0)>>>2)<<2)}while(0);f[e+(q<<2)>>2]=r;e=f[J>>2]|0;q=i}else q=i}else{g=k;la=128}}else{g=f[e>>2]|0;f[g+(t<<2)>>2]=-1073741824;i=0;j=-1073741824;la=128}if((la|0)==128){la=0;f[g+(r<<2)>>2]=-1073741824;q=i}if((m|0)>=0){g=(((m>>>0)%3|0|0)==0?2:-1)+m|0;i=f[e>>2]|0;if((g|0)>=0){p=f[i+(g<<2)>>2]|0;f[i+(s<<2)>>2]=p;if((p|0)>-1){o=e+24|0;i=e+28|0;g=f[i>>2]|0;e=f[o>>2]|0;l=g-e>>2;do if(l>>>0<=p>>>0){k=p+1|0;if(k>>>0>l>>>0){ui(o,k-l|0);e=f[o>>2]|0;break}if(k>>>0>>0?(W=e+(k<<2)|0,(g|0)!=(W|0)):0)f[i>>2]=g+(~((g+-4-W|0)>>>2)<<2)}while(0);g=s;e=e+(p<<2)|0;la=149}}else{g=-1073741824;e=i+(s<<2)|0;la=149}if((la|0)==149){la=0;f[e>>2]=g}i=m+1|0;i=((i|0)%3|0|0)==0?m+-2|0:i;g=f[J>>2]|0;if((i|0)<0){e=g;m=i;p=-1073741824}else{e=g;m=i;p=f[(f[g>>2]|0)+(i<<2)>>2]|0}}else{f[(f[e>>2]|0)+(s<<2)>>2]=-1073741824;p=-1073741824}s=f[D>>2]|0;v=s+(j<<2)|0;f[v>>2]=(f[v>>2]|0)+(f[s+(p<<2)>>2]|0);f:do if((m|0)>-1){o=j+1|0;if(!q){k=f[e>>2]|0;l=e+12|0;g=m;while(1){f[k+(g<<2)>>2]=j;v=g+1|0;g=((v|0)%3|0|0)==0?g+-2|0:v;if((g|0)<0)break f;i=f[(f[l>>2]|0)+(g<<2)>>2]|0;g=i+1|0;if((i|0)<0)break f;g=((g|0)%3|0|0)==0?i+-2|0:g;if((g|0)<=-1)break f}}do{f[(f[e>>2]|0)+(m<<2)>>2]=j;l=e+24|0;i=e+28|0;g=f[i>>2]|0;e=f[l>>2]|0;k=g-e>>2;do if(k>>>0<=j>>>0){if(o>>>0>k>>>0){ui(l,o-k|0);e=f[l>>2]|0;break}if(o>>>0>>0?(V=e+(o<<2)|0,(g|0)!=(V|0)):0)f[i>>2]=g+(~((g+-4-V|0)>>>2)<<2)}while(0);f[e+(j<<2)>>2]=m;g=m+1|0;g=((g|0)%3|0|0)==0?m+-2|0:g;e=f[J>>2]|0;if((g|0)<0)break f;i=f[(f[e+12>>2]|0)+(g<<2)>>2]|0;g=i+1|0;if((i|0)<0)break f;m=((g|0)%3|0|0)==0?i+-2|0:g}while((m|0)>-1)}while(0);f[(f[e+24>>2]|0)+(p<<2)>>2]=-1073741824;f[(f[ya>>2]|0)+-4>>2]=t;e=t;g=0;k=w;break c}case 7:{l=x*3|0;f[pa>>2]=l;i=f[J>>2]|0;o=w+1|0;e=f[i>>2]|0;f[e+(l<<2)>>2]=w;if((w|0)<=-1){g=l+1|0;j=w+2|0;f[e+(g<<2)>>2]=o;if((w|0)==-1){e=i;m=j;la=177}else{g=l;m=j}}else{k=i+24|0;i=i+28|0;g=f[i>>2]|0;e=f[k>>2]|0;j=g-e>>2;do if(j>>>0<=w>>>0){if(o>>>0>j>>>0){ui(k,o-j|0);e=f[k>>2]|0;break}if(o>>>0>>0?(U=e+(o<<2)|0,(g|0)!=(U|0)):0)f[i>>2]=g+(~((g+-4-U|0)>>>2)<<2)}while(0);f[e+(w<<2)>>2]=l;e=f[J>>2]|0;g=(f[pa>>2]|0)+1|0;f[(f[e>>2]|0)+(g<<2)>>2]=o;m=w+2|0;la=177}if((la|0)==177){la=0;l=e+24|0;j=e+28|0;i=f[j>>2]|0;e=f[l>>2]|0;k=i-e>>2;do if(k>>>0<=o>>>0){if(m>>>0>k>>>0){ui(l,m-k|0);e=f[l>>2]|0;break}if(m>>>0>>0?(T=e+(m<<2)|0,(i|0)!=(T|0)):0)f[j>>2]=i+(~((i+-4-T|0)>>>2)<<2)}while(0);f[e+(o<<2)>>2]=g;i=f[J>>2]|0;g=f[pa>>2]|0;e=f[i>>2]|0}l=g+2|0;o=w+3|0;f[e+(l<<2)>>2]=m;if((m|0)>-1){k=i+24|0;i=i+28|0;g=f[i>>2]|0;e=f[k>>2]|0;j=g-e>>2;do if(j>>>0<=m>>>0){if(o>>>0>j>>>0){ui(k,o-j|0);e=f[k>>2]|0;break}if(o>>>0>>0?(S=e+(o<<2)|0,(g|0)!=(S|0)):0)f[i>>2]=g+(~((g+-4-S|0)>>>2)<<2)}while(0);f[e+(m<<2)>>2]=l}e=f[ya>>2]|0;if((e|0)==(f[I>>2]|0)){Ii(wa,pa);e=f[ya>>2]|0}else{f[e>>2]=f[pa>>2];e=e+4|0;f[ya>>2]=e}e=f[e+-4>>2]|0;g=1;k=o;break c}default:{g=-1;break a}}}while(0);f[Z>>2]=e;f[pa>>2]=f[Z>>2];Ud(ja,pa);g:do if(g?(aa=c-x|0,ga=aa+-1|0,z=f[G>>2]|0,(z|0)!=(f[ia>>2]|0)):0){e=z;do{g=f[e+-8>>2]|0;if((g|0)>=(aa|0)){g=-1;break a}if((g|0)!=(ga|0))break g;g=b[e+-4>>0]|0;j=f[e+-12>>2]|0;f[G>>2]=e+-12;if((j|0)<0){g=-1;break a}e=f[(f[ya>>2]|0)+-4>>2]|0;i=(e|0)<0;do if(!(g&1)){if(!i)if(!((e>>>0)%3|0)){e=e+2|0;break}else{e=e+-1|0;break}}else{g=e+1|0;if(!i)e=((g|0)%3|0|0)==0?e+-2|0:g}while(0);f[pa>>2]=ha-j;x=Ge(xa,pa)|0;f[x>>2]=e;e=f[G>>2]|0}while((e|0)!=(f[ia>>2]|0))}while(0);if((d|0)<(c|0)){x=d;w=k}else{D=k;la=210;break}}}else{d=0;D=0;la=210}while(0);do if((la|0)==210)if((D|0)<=(ka|0)){g=f[ya>>2]|0;if((g|0)==(f[wa>>2]|0))e=a+8|0;else{s=a+316|0;e=a+8|0;C=a+64|0;A=a+68|0;y=a+72|0;x=a+80|0;z=a+84|0;B=a+76|0;t=a+312|0;v=a+304|0;w=a+308|0;do{ka=g;o=f[ka+-4>>2]|0;f[pa>>2]=o;f[ya>>2]=ka+-4;do if(b[s>>0]|0){g=f[t>>2]|0;i=(f[v>>2]|0)+(g>>>3)|0;if(i>>>0<(f[w>>2]|0)>>>0?(ka=h[i>>0]|0,f[t>>2]=g+1,ka&1<<(g&7)|0):0){la=217;break}g=f[A>>2]|0;i=f[y>>2]|0;if((g|0)==(i<<5|0)){if((g+1|0)<0){Lp(C);i=f[y>>2]|0}ka=i<<6;g=g+32&-32;ri(C,i<<5>>>0<1073741823?(ka>>>0>>0?g:ka):2147483647);g=f[A>>2]|0}f[A>>2]=g+1;ka=(f[C>>2]|0)+(g>>>5<<2)|0;f[ka>>2]=f[ka>>2]&~(1<<(g&31));g=f[x>>2]|0;if((g|0)==(f[z>>2]|0)){Ii(B,pa);break}else{f[g>>2]=f[pa>>2];f[x>>2]=g+4;break}}else la=217;while(0);if((la|0)==217){la=0;k=(o|0)<0;h:do if(!k){g=o+(((o>>>0)%3|0|0)==0?2:-1)|0;if((g|0)>=0){i=f[(f[e>>2]|0)+12>>2]|0;j=g;while(1){g=f[i+(j<<2)>>2]|0;if((g|0)<=-1){i=0;g=j;break}g=g+(((g>>>0)%3|0|0)==0?2:-1)|0;if((g|0)<0){i=1;break}else j=g}if(k){k=o;la=224;break}}else i=1;k=o+1|0;k=((k|0)%3|0|0)==0?o+-2|0:k;if((k|0)<0)la=224;else{j=f[e>>2]|0;l=f[j+12>>2]|0;m=k;while(1){k=f[l+(m<<2)>>2]|0;if((k|0)<=-1){q=0;break h}ka=k+1|0;k=((ka|0)%3|0|0)==0?k+-2|0:ka;if((k|0)<0){q=1;m=k;break}else m=k}}}else{i=1;g=o;k=o;la=224}while(0);if((la|0)==224){la=0;j=f[e>>2]|0;l=f[j+12>>2]|0;q=1;m=k}r=d+1|0;d=d*3|0;f[ra>>2]=d;f[l+(d<<2)>>2]=o;f[l+(o<<2)>>2]=d;d=(f[ra>>2]|0)+1|0;f[l+(d<<2)>>2]=g;f[l+(g<<2)>>2]=d;d=(f[ra>>2]|0)+2|0;f[l+(d<<2)>>2]=m;f[l+(m<<2)>>2]=d;d=f[ra>>2]|0;k=g+1|0;if(!i?(ua=((k|0)%3|0|0)==0?g+-2|0:k,(ua|0)>=0):0){ka=f[j>>2]|0;p=f[ka+(ua<<2)>>2]|0;f[ka+(d<<2)>>2]=p;if((p|0)>-1){o=j+24|0;j=j+28|0;i=f[j>>2]|0;g=f[o>>2]|0;l=i-g>>2;do if(l>>>0<=p>>>0){k=p+1|0;if(k>>>0>l>>>0){ui(o,k-l|0);g=f[o>>2]|0;break}if(k>>>0>>0?(oa=g+(k<<2)|0,(i|0)!=(oa|0)):0)f[j>>2]=i+(~((i+-4-oa|0)>>>2)<<2)}while(0);f[g+(p<<2)>>2]=d;d=f[ra>>2]|0;j=f[e>>2]|0}}else f[(f[j>>2]|0)+(d<<2)>>2]=-1073741824;o=d+1|0;g=m+1|0;if(!q?(ta=((g|0)%3|0|0)==0?m+-2|0:g,(ta|0)>=0):0){ka=f[j>>2]|0;m=f[ka+(ta<<2)>>2]|0;f[ka+(o<<2)>>2]=m;if((m|0)>-1){l=j+24|0;i=j+28|0;g=f[i>>2]|0;d=f[l>>2]|0;k=g-d>>2;do if(k>>>0<=m>>>0){j=m+1|0;if(j>>>0>k>>>0){ui(l,j-k|0);d=f[l>>2]|0;break}if(j>>>0>>0?(na=d+(j<<2)|0,(g|0)!=(na|0)):0)f[i>>2]=g+(~((g+-4-na|0)>>>2)<<2)}while(0);f[d+(m<<2)>>2]=o;d=f[ra>>2]|0;j=f[e>>2]|0}}else f[(f[j>>2]|0)+(o<<2)>>2]=-1073741824;o=d+2|0;g=f[pa>>2]|0;i=g+1|0;if((g|0)>=0?(sa=((i|0)%3|0|0)==0?g+-2|0:i,(sa|0)>=0):0){ka=f[j>>2]|0;m=f[ka+(sa<<2)>>2]|0;f[ka+(o<<2)>>2]=m;if((m|0)>-1){l=j+24|0;i=j+28|0;g=f[i>>2]|0;d=f[l>>2]|0;k=g-d>>2;do if(k>>>0<=m>>>0){j=m+1|0;if(j>>>0>k>>>0){ui(l,j-k|0);d=f[l>>2]|0;break}if(j>>>0>>0?(ma=d+(j<<2)|0,(g|0)!=(ma|0)):0)f[i>>2]=g+(~((g+-4-ma|0)>>>2)<<2)}while(0);f[d+(m<<2)>>2]=o;d=f[ra>>2]|0}}else f[(f[j>>2]|0)+(o<<2)>>2]=-1073741824;if((d|0)<0)d=-1073741824;else d=f[(f[f[e>>2]>>2]|0)+(d<<2)>>2]|0;g=f[qa>>2]|0;ka=g+(d>>>5<<2)|0;f[ka>>2]=f[ka>>2]&~(1<<(d&31));d=f[ra>>2]|0;if((d|0)<-1)d=-1073741824;else d=f[(f[f[e>>2]>>2]|0)+(d+1<<2)>>2]|0;ka=g+(d>>>5<<2)|0;f[ka>>2]=f[ka>>2]&~(1<<(d&31));d=f[ra>>2]|0;if((d|0)<-2)d=-1073741824;else d=f[(f[f[e>>2]>>2]|0)+(d+2<<2)>>2]|0;g=g+(d>>>5<<2)|0;f[g>>2]=f[g>>2]&~(1<<(d&31));d=f[A>>2]|0;g=f[y>>2]|0;if((d|0)==(g<<5|0)){if((d+1|0)<0){Lp(C);g=f[y>>2]|0}ka=g<<6;d=d+32&-32;ri(C,g<<5>>>0<1073741823?(ka>>>0>>0?d:ka):2147483647);d=f[A>>2]|0}f[A>>2]=d+1;ka=(f[C>>2]|0)+(d>>>5<<2)|0;f[ka>>2]=f[ka>>2]|1<<(d&31);d=f[x>>2]|0;if((d|0)==(f[z>>2]|0))Ii(B,ra);else{f[d>>2]=f[ra>>2];f[x>>2]=d+4}d=r}g=f[ya>>2]|0}while((g|0)!=(f[wa>>2]|0))}ua=f[e>>2]|0;if((d|0)==(((f[ua+4>>2]|0)-(f[ua>>2]|0)>>2>>>0)/3|0|0)){j=a+88|0;g=a+92|0;e=f[g>>2]|0;d=f[j>>2]|0;i=e-d>>2;if(D>>>0>i>>>0){ui(j,D-i|0);g=D;break}if(D>>>0>>0?(va=d+(D<<2)|0,(e|0)!=(va|0)):0){f[g>>2]=e+(~((e+-4-va|0)>>>2)<<2);g=D}else g=D}else g=-1}else g=-1;while(0);d=f[xa+8>>2]|0;if(d|0)do{va=d;d=f[d>>2]|0;ar(va)}while((d|0)!=0);d=f[xa>>2]|0;f[xa>>2]=0;if(d|0)ar(d);d=f[wa>>2]|0;if(!d){u=za;return g|0}e=f[ya>>2]|0;if((e|0)!=(d|0))f[ya>>2]=e+(~((e+-4-d|0)>>>2)<<2);ar(d);u=za;return g|0}function Za(a,c){a=a|0;c=c|0;var d=0,e=0,g=0,i=0,j=0,k=0,l=0,m=0,o=0,p=0,q=0,r=0,s=0,t=0,v=0,w=0,x=0,y=0,z=0,A=0,B=0,C=0,D=0,E=0,F=0,G=0,H=0,I=0,J=0,K=0,L=0,M=0,N=0,O=0,P=0,Q=0,R=0,S=0,T=0,U=0,V=0,W=0,X=0,Y=0,Z=0,_=0,aa=0,ba=0,ca=0,da=0,ea=0,fa=0,ga=0,ha=0,ia=0,ja=0,ka=0,la=0,ma=0,na=0,oa=0,pa=0,qa=0,ra=0,sa=0,ta=0,ua=0,va=0,wa=0,xa=0,ya=0;ya=u;u=u+48|0;oa=ya+40|0;va=ya+28|0;wa=ya+8|0;W=ya+4|0;qa=ya;f[va>>2]=0;xa=va+4|0;f[xa>>2]=0;f[va+8>>2]=0;f[wa>>2]=0;f[wa+4>>2]=0;f[wa+8>>2]=0;f[wa+12>>2]=0;n[wa+16>>2]=$(1.0);pa=a+136|0;ja=f[a+140>>2]|0;a:do if((c|0)>0){ia=a+240|0;Y=a+372|0;y=a+276|0;X=a+368|0;A=a+272|0;B=a+264|0;C=a+268|0;H=a+8|0;F=wa+4|0;D=a+340|0;G=va+8|0;ha=a+36|0;E=a+40|0;ga=c+-1|0;Z=a+352|0;x=0;w=0;while(1){d=x+1|0;if((f[Y>>2]|0)!=-1?Tk(Z)|0:0){e=f[Y>>2]|0;f[X>>2]=e;if(!e)ka=16;else ka=59}else ka=5;b:do if((ka|0)==5){do if(!(b[y>>0]|0))e=1;else{g=f[A>>2]|0;j=f[B>>2]|0;k=f[C>>2]|0;e=j+(g>>>3)|0;if(e>>>0>>0?(ka=h[e>>0]|0,I=g+1|0,f[A>>2]=I,ka&1<<(g&7)|0):0){e=j+(I>>>3)|0;if(e>>>0>>0){i=(h[e>>0]|0)>>>(I&7)&1;g=g+2|0;f[A>>2]=g}else{g=I;i=0}e=j+(g>>>3)|0;if(e>>>0>>0){e=(h[e>>0]|0)>>>(g&7);f[A>>2]=g+1;e=e<<1&2}else e=0;e=(e|i)<<1|1;break}f[X>>2]=0;ka=16;break b}while(0);f[X>>2]=e;ka=59}while(0);c:do if((ka|0)==16){ka=0;e=f[xa>>2]|0;if((f[va>>2]|0)==(e|0)){g=-1;break a}s=f[e+-4>>2]|0;r=(s|0)<0;d:do if(!r){e=s+(((s>>>0)%3|0|0)==0?2:-1)|0;if((e|0)<0)ka=19;else{j=f[H>>2]|0;i=f[j+12>>2]|0;while(1){g=f[i+(e<<2)>>2]|0;if((g|0)<=-1){p=0;break d}e=g+(((g>>>0)%3|0|0)==0?2:-1)|0;if((e|0)<0){p=1;break}}}}else{e=s;ka=19}while(0);if((ka|0)==19){ka=0;j=f[H>>2]|0;i=f[j+12>>2]|0;p=1}v=x*3|0;q=v+1|0;f[i+(s<<2)>>2]=q;f[i+(q<<2)>>2]=s;t=v+2|0;f[i+(e<<2)>>2]=t;f[i+(t<<2)>>2]=e;g=s+1|0;if(!r?(ea=((g|0)%3|0|0)==0?s+-2|0:g,(ea|0)>=0):0){m=f[j>>2]|0;o=f[m+(ea<<2)>>2]|0;f[m+(v<<2)>>2]=o;if((o|0)>-1){m=j+24|0;j=j+28|0;i=f[j>>2]|0;g=f[m>>2]|0;l=i-g>>2;do if(l>>>0<=o>>>0){k=o+1|0;if(k>>>0>l>>>0){ui(m,k-l|0);g=f[m>>2]|0;break}if(k>>>0>>0?(J=g+(k<<2)|0,(i|0)!=(J|0)):0)f[j>>2]=i+(~((i+-4-J|0)>>>2)<<2)}while(0);f[g+(o<<2)>>2]=v;j=f[H>>2]|0}}else{f[(f[j>>2]|0)+(v<<2)>>2]=-1073741824;o=-1073741824}g=e+1|0;if(!p?(da=((g|0)%3|0|0)==0?e+-2|0:g,(da|0)>=0):0){p=f[j>>2]|0;m=f[p+(da<<2)>>2]|0;f[p+(q<<2)>>2]=m;if((m|0)>-1){l=j+24|0;i=j+28|0;g=f[i>>2]|0;e=f[l>>2]|0;k=g-e>>2;do if(k>>>0<=m>>>0){j=m+1|0;if(j>>>0>k>>>0){ui(l,j-k|0);e=f[l>>2]|0;break}if(j>>>0>>0?(O=e+(j<<2)|0,(g|0)!=(O|0)):0)f[i>>2]=g+(~((g+-4-O|0)>>>2)<<2)}while(0);f[e+(m<<2)>>2]=q;j=f[H>>2]|0}}else f[(f[j>>2]|0)+(q<<2)>>2]=-1073741824;if(!r?(ba=(((s>>>0)%3|0|0)==0?2:-1)+s|0,(ba|0)>=0):0){s=f[j>>2]|0;m=f[s+(ba<<2)>>2]|0;f[s+(t<<2)>>2]=m;if((m|0)>-1){l=j+24|0;i=j+28|0;g=f[i>>2]|0;e=f[l>>2]|0;k=g-e>>2;do if(k>>>0<=m>>>0){j=m+1|0;if(j>>>0>k>>>0){ui(l,j-k|0);e=f[l>>2]|0;break}if(j>>>0>>0?(N=e+(j<<2)|0,(g|0)!=(N|0)):0)f[i>>2]=g+(~((g+-4-N|0)>>>2)<<2)}while(0);g=t;e=e+(m<<2)|0;ka=56}}else{g=-1073741824;e=(f[j>>2]|0)+(t<<2)|0;ka=56}if((ka|0)==56){ka=0;f[e>>2]=g}if((w|0)>(ja|0)){g=-1;break a}e=(f[pa>>2]|0)+(o>>>5<<2)|0;f[e>>2]=f[e>>2]&~(1<<(o&31));f[(f[xa>>2]|0)+-4>>2]=v;e=v;g=0;k=w}else if((ka|0)==59){ka=0;switch(e|0){case 3:case 5:{g=f[xa>>2]|0;if((f[va>>2]|0)==(g|0)){g=-1;break a}s=f[g+-4>>2]|0;t=x*3|0;r=((e|0)==5?2:1)+t|0;e=f[H>>2]|0;v=f[e+12>>2]|0;f[v+(r<<2)>>2]=s;f[v+(s<<2)>>2]=r;v=w+1|0;f[(f[e>>2]|0)+(r<<2)>>2]=w;if((w|0)>-1){k=e+24|0;i=e+28|0;g=f[i>>2]|0;e=f[k>>2]|0;j=g-e>>2;do if(j>>>0<=w>>>0){if(v>>>0>j>>>0){ui(k,v-j|0);e=f[k>>2]|0;break}if(v>>>0>>0?(M=e+(v<<2)|0,(g|0)!=(M|0)):0)f[i>>2]=g+(~((g+-4-M|0)>>>2)<<2)}while(0);f[e+(w<<2)>>2]=r;e=f[H>>2]|0}p=(r|0)<0;g=r+1|0;if(p)m=r;else m=((g|0)%3|0|0)==0?r+-2|0:g;q=(s|0)<0;if(!q?(aa=(((s>>>0)%3|0|0)==0?2:-1)+s|0,(aa|0)>=0):0){w=f[e>>2]|0;o=f[w+(aa<<2)>>2]|0;f[w+(m<<2)>>2]=o;if((o|0)>-1){l=e+24|0;i=e+28|0;g=f[i>>2]|0;e=f[l>>2]|0;k=g-e>>2;do if(k>>>0<=o>>>0){j=o+1|0;if(j>>>0>k>>>0){ui(l,j-k|0);e=f[l>>2]|0;break}if(j>>>0>>0?(L=e+(j<<2)|0,(g|0)!=(L|0)):0)f[i>>2]=g+(~((g+-4-L|0)>>>2)<<2)}while(0);f[e+(o<<2)>>2]=m;e=f[H>>2]|0}}else f[(f[e>>2]|0)+(m<<2)>>2]=-1073741824;do if(!p)if(!((r>>>0)%3|0)){o=r+2|0;break}else{o=r+-1|0;break}else o=r;while(0);g=s+1|0;if(!q?(ca=((g|0)%3|0|0)==0?s+-2|0:g,(ca|0)>=0):0){w=f[e>>2]|0;m=f[w+(ca<<2)>>2]|0;f[w+(o<<2)>>2]=m;if((m|0)>-1){l=e+24|0;i=e+28|0;g=f[i>>2]|0;e=f[l>>2]|0;k=g-e>>2;do if(k>>>0<=m>>>0){j=m+1|0;if(j>>>0>k>>>0){ui(l,j-k|0);e=f[l>>2]|0;break}if(j>>>0>>0?(K=e+(j<<2)|0,(g|0)!=(K|0)):0)f[i>>2]=g+(~((g+-4-K|0)>>>2)<<2)}while(0);g=o;e=e+(m<<2)|0;ka=97}}else{g=-1073741824;e=(f[e>>2]|0)+(o<<2)|0;ka=97}if((ka|0)==97){ka=0;f[e>>2]=g}f[(f[xa>>2]|0)+-4>>2]=t;e=t;g=1;k=v;break c}case 1:{g=f[va>>2]|0;e=f[xa>>2]|0;if((g|0)==(e|0)){g=-1;break a}p=e+-4|0;m=f[p>>2]|0;f[xa>>2]=p;k=f[F>>2]|0;e:do if(k){l=k+-1|0;j=(l&k|0)==0;if(j)o=l&x;else o=(x>>>0)%(k>>>0)|0;i=f[(f[wa>>2]|0)+(o<<2)>>2]|0;if(i){if(j)do{i=f[i>>2]|0;if(!i){e=p;break e}if((f[i+4>>2]&l|0)!=(o|0)){e=p;break e}}while((f[i+8>>2]|0)!=(x|0));else do{i=f[i>>2]|0;if(!i){e=p;break e}if((((f[i+4>>2]|0)>>>0)%(k>>>0)|0|0)!=(o|0)){e=p;break e}}while((f[i+8>>2]|0)!=(x|0));i=i+12|0;if((p|0)==(f[G>>2]|0)){Ii(va,i);g=f[va>>2]|0;e=f[xa>>2]|0;break}else{f[p>>2]=f[i>>2];f[xa>>2]=e;break}}else e=p}else e=p;while(0);if((g|0)==(e|0)){g=-1;break a}p=f[e+-4>>2]|0;t=x*3|0;s=t+2|0;e=f[H>>2]|0;v=f[e+12>>2]|0;f[v+(p<<2)>>2]=s;f[v+(s<<2)>>2]=p;r=t+1|0;f[v+(m<<2)>>2]=r;f[v+(r<<2)>>2]=m;if((p|0)>=0){g=(((p>>>0)%3|0|0)==0?2:-1)+p|0;i=f[e>>2]|0;if((g|0)>=0){j=f[i+(g<<2)>>2]|0;f[i+(t<<2)>>2]=j;if((j|0)>-1){o=e+24|0;i=e+28|0;g=f[i>>2]|0;e=f[o>>2]|0;l=g-e>>2;do if(l>>>0<=j>>>0){k=j+1|0;if(k>>>0>l>>>0){ui(o,k-l|0);e=f[o>>2]|0;break}if(k>>>0>>0?(V=e+(k<<2)|0,(g|0)!=(V|0)):0)f[i>>2]=g+(~((g+-4-V|0)>>>2)<<2)}while(0);f[e+(j<<2)>>2]=t;e=f[H>>2]|0;i=1}else i=0}else{f[i+(t<<2)>>2]=-1073741824;i=0;j=-1073741824}g=p+1|0;g=((g|0)%3|0|0)==0?p+-2|0:g;k=f[e>>2]|0;if((g|0)>=0){q=f[k+(g<<2)>>2]|0;f[k+(r<<2)>>2]=q;if((q|0)>-1){p=e+24|0;k=e+28|0;g=f[k>>2]|0;e=f[p>>2]|0;o=g-e>>2;do if(o>>>0<=q>>>0){l=q+1|0;if(l>>>0>o>>>0){ui(p,l-o|0);e=f[p>>2]|0;break}if(l>>>0>>0?(U=e+(l<<2)|0,(g|0)!=(U|0)):0)f[k>>2]=g+(~((g+-4-U|0)>>>2)<<2)}while(0);f[e+(q<<2)>>2]=r;e=f[H>>2]|0;q=i}else q=i}else{g=k;ka=129}}else{g=f[e>>2]|0;f[g+(t<<2)>>2]=-1073741824;i=0;j=-1073741824;ka=129}if((ka|0)==129){ka=0;f[g+(r<<2)>>2]=-1073741824;q=i}if((m|0)>=0){g=(((m>>>0)%3|0|0)==0?2:-1)+m|0;i=f[e>>2]|0;if((g|0)>=0){p=f[i+(g<<2)>>2]|0;f[i+(s<<2)>>2]=p;if((p|0)>-1){o=e+24|0;i=e+28|0;g=f[i>>2]|0;e=f[o>>2]|0;l=g-e>>2;do if(l>>>0<=p>>>0){k=p+1|0;if(k>>>0>l>>>0){ui(o,k-l|0);e=f[o>>2]|0;break}if(k>>>0>>0?(T=e+(k<<2)|0,(g|0)!=(T|0)):0)f[i>>2]=g+(~((g+-4-T|0)>>>2)<<2)}while(0);g=s;e=e+(p<<2)|0;ka=150}}else{g=-1073741824;e=i+(s<<2)|0;ka=150}if((ka|0)==150){ka=0;f[e>>2]=g}i=m+1|0;i=((i|0)%3|0|0)==0?m+-2|0:i;g=f[H>>2]|0;if((i|0)<0){e=g;m=i;p=-1073741824}else{e=g;m=i;p=f[(f[g>>2]|0)+(i<<2)>>2]|0}}else{f[(f[e>>2]|0)+(s<<2)>>2]=-1073741824;p=-1073741824}s=f[D>>2]|0;v=s+(j<<2)|0;f[v>>2]=(f[v>>2]|0)+(f[s+(p<<2)>>2]|0);f:do if((m|0)>-1){o=j+1|0;if(!q){k=f[e>>2]|0;l=e+12|0;g=m;while(1){f[k+(g<<2)>>2]=j;v=g+1|0;g=((v|0)%3|0|0)==0?g+-2|0:v;if((g|0)<0)break f;i=f[(f[l>>2]|0)+(g<<2)>>2]|0;g=i+1|0;if((i|0)<0)break f;g=((g|0)%3|0|0)==0?i+-2|0:g;if((g|0)<=-1)break f}}do{f[(f[e>>2]|0)+(m<<2)>>2]=j;l=e+24|0;i=e+28|0;g=f[i>>2]|0;e=f[l>>2]|0;k=g-e>>2;do if(k>>>0<=j>>>0){if(o>>>0>k>>>0){ui(l,o-k|0);e=f[l>>2]|0;break}if(o>>>0>>0?(S=e+(o<<2)|0,(g|0)!=(S|0)):0)f[i>>2]=g+(~((g+-4-S|0)>>>2)<<2)}while(0);f[e+(j<<2)>>2]=m;g=m+1|0;g=((g|0)%3|0|0)==0?m+-2|0:g;e=f[H>>2]|0;if((g|0)<0)break f;i=f[(f[e+12>>2]|0)+(g<<2)>>2]|0;g=i+1|0;if((i|0)<0)break f;m=((g|0)%3|0|0)==0?i+-2|0:g}while((m|0)>-1)}while(0);f[(f[e+24>>2]|0)+(p<<2)>>2]=-1073741824;f[(f[xa>>2]|0)+-4>>2]=t;e=t;g=0;k=w;break c}case 7:{l=x*3|0;f[oa>>2]=l;i=f[H>>2]|0;o=w+1|0;e=f[i>>2]|0;f[e+(l<<2)>>2]=w;if((w|0)<=-1){g=l+1|0;j=w+2|0;f[e+(g<<2)>>2]=o;if((w|0)==-1){e=i;m=j;ka=178}else{g=l;m=j}}else{k=i+24|0;i=i+28|0;g=f[i>>2]|0;e=f[k>>2]|0;j=g-e>>2;do if(j>>>0<=w>>>0){if(o>>>0>j>>>0){ui(k,o-j|0);e=f[k>>2]|0;break}if(o>>>0>>0?(R=e+(o<<2)|0,(g|0)!=(R|0)):0)f[i>>2]=g+(~((g+-4-R|0)>>>2)<<2)}while(0);f[e+(w<<2)>>2]=l;e=f[H>>2]|0;g=(f[oa>>2]|0)+1|0;f[(f[e>>2]|0)+(g<<2)>>2]=o;m=w+2|0;ka=178}if((ka|0)==178){ka=0;l=e+24|0;j=e+28|0;i=f[j>>2]|0;e=f[l>>2]|0;k=i-e>>2;do if(k>>>0<=o>>>0){if(m>>>0>k>>>0){ui(l,m-k|0);e=f[l>>2]|0;break}if(m>>>0>>0?(Q=e+(m<<2)|0,(i|0)!=(Q|0)):0)f[j>>2]=i+(~((i+-4-Q|0)>>>2)<<2)}while(0);f[e+(o<<2)>>2]=g;i=f[H>>2]|0;g=f[oa>>2]|0;e=f[i>>2]|0}l=g+2|0;o=w+3|0;f[e+(l<<2)>>2]=m;if((m|0)>-1){k=i+24|0;i=i+28|0;g=f[i>>2]|0;e=f[k>>2]|0;j=g-e>>2;do if(j>>>0<=m>>>0){if(o>>>0>j>>>0){ui(k,o-j|0);e=f[k>>2]|0;break}if(o>>>0>>0?(P=e+(o<<2)|0,(g|0)!=(P|0)):0)f[i>>2]=g+(~((g+-4-P|0)>>>2)<<2)}while(0);f[e+(m<<2)>>2]=l}e=f[xa>>2]|0;if((e|0)==(f[G>>2]|0)){Ii(va,oa);e=f[xa>>2]|0}else{f[e>>2]=f[oa>>2];e=e+4|0;f[xa>>2]=e}e=f[e+-4>>2]|0;g=1;k=o;break c}default:{g=-1;break a}}}while(0);f[W>>2]=e;f[oa>>2]=f[W>>2];Od(ia,oa);g:do if(g?(_=c-x|0,fa=_+-1|0,z=f[E>>2]|0,(z|0)!=(f[ha>>2]|0)):0){e=z;do{g=f[e+-8>>2]|0;if((g|0)>=(_|0)){g=-1;break a}if((g|0)!=(fa|0))break g;g=b[e+-4>>0]|0;j=f[e+-12>>2]|0;f[E>>2]=e+-12;if((j|0)<0){g=-1;break a}e=f[(f[xa>>2]|0)+-4>>2]|0;i=(e|0)<0;do if(!(g&1)){if(!i)if(!((e>>>0)%3|0)){e=e+2|0;break}else{e=e+-1|0;break}}else{g=e+1|0;if(!i)e=((g|0)%3|0|0)==0?e+-2|0:g}while(0);f[oa>>2]=ga-j;x=Ge(wa,oa)|0;f[x>>2]=e;e=f[E>>2]|0}while((e|0)!=(f[ha>>2]|0))}while(0);if((d|0)<(c|0)){x=d;w=k}else{D=k;ka=211;break}}}else{d=0;D=0;ka=211}while(0);do if((ka|0)==211)if((D|0)<=(ja|0)){g=f[xa>>2]|0;if((g|0)==(f[va>>2]|0))e=a+8|0;else{s=a+316|0;e=a+8|0;C=a+64|0;A=a+68|0;y=a+72|0;x=a+80|0;z=a+84|0;B=a+76|0;t=a+312|0;v=a+304|0;w=a+308|0;do{ja=g;o=f[ja+-4>>2]|0;f[oa>>2]=o;f[xa>>2]=ja+-4;do if(b[s>>0]|0){g=f[t>>2]|0;i=(f[v>>2]|0)+(g>>>3)|0;if(i>>>0<(f[w>>2]|0)>>>0?(ja=h[i>>0]|0,f[t>>2]=g+1,ja&1<<(g&7)|0):0){ka=218;break}g=f[A>>2]|0;i=f[y>>2]|0;if((g|0)==(i<<5|0)){if((g+1|0)<0){Lp(C);i=f[y>>2]|0}ja=i<<6;g=g+32&-32;ri(C,i<<5>>>0<1073741823?(ja>>>0>>0?g:ja):2147483647);g=f[A>>2]|0}f[A>>2]=g+1;ja=(f[C>>2]|0)+(g>>>5<<2)|0;f[ja>>2]=f[ja>>2]&~(1<<(g&31));g=f[x>>2]|0;if((g|0)==(f[z>>2]|0)){Ii(B,oa);break}else{f[g>>2]=f[oa>>2];f[x>>2]=g+4;break}}else ka=218;while(0);if((ka|0)==218){ka=0;k=(o|0)<0;h:do if(!k){g=o+(((o>>>0)%3|0|0)==0?2:-1)|0;if((g|0)>=0){i=f[(f[e>>2]|0)+12>>2]|0;j=g;while(1){g=f[i+(j<<2)>>2]|0;if((g|0)<=-1){i=0;g=j;break}g=g+(((g>>>0)%3|0|0)==0?2:-1)|0;if((g|0)<0){i=1;break}else j=g}if(k){k=o;ka=225;break}}else i=1;k=o+1|0;k=((k|0)%3|0|0)==0?o+-2|0:k;if((k|0)<0)ka=225;else{j=f[e>>2]|0;l=f[j+12>>2]|0;m=k;while(1){k=f[l+(m<<2)>>2]|0;if((k|0)<=-1){q=0;break h}ja=k+1|0;k=((ja|0)%3|0|0)==0?k+-2|0:ja;if((k|0)<0){q=1;m=k;break}else m=k}}}else{i=1;g=o;k=o;ka=225}while(0);if((ka|0)==225){ka=0;j=f[e>>2]|0;l=f[j+12>>2]|0;q=1;m=k}r=d+1|0;d=d*3|0;f[qa>>2]=d;f[l+(d<<2)>>2]=o;f[l+(o<<2)>>2]=d;d=(f[qa>>2]|0)+1|0;f[l+(d<<2)>>2]=g;f[l+(g<<2)>>2]=d;d=(f[qa>>2]|0)+2|0;f[l+(d<<2)>>2]=m;f[l+(m<<2)>>2]=d;d=f[qa>>2]|0;k=g+1|0;if(!i?(ta=((k|0)%3|0|0)==0?g+-2|0:k,(ta|0)>=0):0){ja=f[j>>2]|0;p=f[ja+(ta<<2)>>2]|0;f[ja+(d<<2)>>2]=p;if((p|0)>-1){o=j+24|0;j=j+28|0;i=f[j>>2]|0;g=f[o>>2]|0;l=i-g>>2;do if(l>>>0<=p>>>0){k=p+1|0;if(k>>>0>l>>>0){ui(o,k-l|0);g=f[o>>2]|0;break}if(k>>>0>>0?(na=g+(k<<2)|0,(i|0)!=(na|0)):0)f[j>>2]=i+(~((i+-4-na|0)>>>2)<<2)}while(0);f[g+(p<<2)>>2]=d;d=f[qa>>2]|0;j=f[e>>2]|0}}else f[(f[j>>2]|0)+(d<<2)>>2]=-1073741824;o=d+1|0;g=m+1|0;if(!q?(sa=((g|0)%3|0|0)==0?m+-2|0:g,(sa|0)>=0):0){ja=f[j>>2]|0;m=f[ja+(sa<<2)>>2]|0;f[ja+(o<<2)>>2]=m;if((m|0)>-1){l=j+24|0;i=j+28|0;g=f[i>>2]|0;d=f[l>>2]|0;k=g-d>>2;do if(k>>>0<=m>>>0){j=m+1|0;if(j>>>0>k>>>0){ui(l,j-k|0);d=f[l>>2]|0;break}if(j>>>0>>0?(ma=d+(j<<2)|0,(g|0)!=(ma|0)):0)f[i>>2]=g+(~((g+-4-ma|0)>>>2)<<2)}while(0);f[d+(m<<2)>>2]=o;d=f[qa>>2]|0;j=f[e>>2]|0}}else f[(f[j>>2]|0)+(o<<2)>>2]=-1073741824;o=d+2|0;g=f[oa>>2]|0;i=g+1|0;if((g|0)>=0?(ra=((i|0)%3|0|0)==0?g+-2|0:i,(ra|0)>=0):0){ja=f[j>>2]|0;m=f[ja+(ra<<2)>>2]|0;f[ja+(o<<2)>>2]=m;if((m|0)>-1){l=j+24|0;i=j+28|0;g=f[i>>2]|0;d=f[l>>2]|0;k=g-d>>2;do if(k>>>0<=m>>>0){j=m+1|0;if(j>>>0>k>>>0){ui(l,j-k|0);d=f[l>>2]|0;break}if(j>>>0>>0?(la=d+(j<<2)|0,(g|0)!=(la|0)):0)f[i>>2]=g+(~((g+-4-la|0)>>>2)<<2)}while(0);f[d+(m<<2)>>2]=o;d=f[qa>>2]|0}}else f[(f[j>>2]|0)+(o<<2)>>2]=-1073741824;if((d|0)<0)d=-1073741824;else d=f[(f[f[e>>2]>>2]|0)+(d<<2)>>2]|0;g=f[pa>>2]|0;ja=g+(d>>>5<<2)|0;f[ja>>2]=f[ja>>2]&~(1<<(d&31));d=f[qa>>2]|0;if((d|0)<-1)d=-1073741824;else d=f[(f[f[e>>2]>>2]|0)+(d+1<<2)>>2]|0;ja=g+(d>>>5<<2)|0;f[ja>>2]=f[ja>>2]&~(1<<(d&31));d=f[qa>>2]|0;if((d|0)<-2)d=-1073741824;else d=f[(f[f[e>>2]>>2]|0)+(d+2<<2)>>2]|0;g=g+(d>>>5<<2)|0;f[g>>2]=f[g>>2]&~(1<<(d&31));d=f[A>>2]|0;g=f[y>>2]|0;if((d|0)==(g<<5|0)){if((d+1|0)<0){Lp(C);g=f[y>>2]|0}ja=g<<6;d=d+32&-32;ri(C,g<<5>>>0<1073741823?(ja>>>0>>0?d:ja):2147483647);d=f[A>>2]|0}f[A>>2]=d+1;ja=(f[C>>2]|0)+(d>>>5<<2)|0;f[ja>>2]=f[ja>>2]|1<<(d&31);d=f[x>>2]|0;if((d|0)==(f[z>>2]|0))Ii(B,qa);else{f[d>>2]=f[qa>>2];f[x>>2]=d+4}d=r}g=f[xa>>2]|0}while((g|0)!=(f[va>>2]|0))}ta=f[e>>2]|0;if((d|0)==(((f[ta+4>>2]|0)-(f[ta>>2]|0)>>2>>>0)/3|0|0)){j=a+88|0;g=a+92|0;e=f[g>>2]|0;d=f[j>>2]|0;i=e-d>>2;if(D>>>0>i>>>0){ui(j,D-i|0);g=D;break}if(D>>>0>>0?(ua=d+(D<<2)|0,(e|0)!=(ua|0)):0){f[g>>2]=e+(~((e+-4-ua|0)>>>2)<<2);g=D}else g=D}else g=-1}else g=-1;while(0);d=f[wa+8>>2]|0;if(d|0)do{ua=d;d=f[d>>2]|0;ar(ua)}while((d|0)!=0);d=f[wa>>2]|0;f[wa>>2]=0;if(d|0)ar(d);d=f[va>>2]|0;if(!d){u=ya;return g|0}e=f[xa>>2]|0;if((e|0)!=(d|0))f[xa>>2]=e+(~((e+-4-d|0)>>>2)<<2);ar(d);u=ya;return g|0}function _a(a,c){a=a|0;c=c|0;var d=0,e=0,g=0,i=0,j=0,k=0,l=0,m=0,o=0,p=0,q=0,r=0,s=0,t=0,v=0,w=0,x=0,y=0,z=0,A=0,B=0,C=0,D=0,E=0,F=0,G=0,H=0,I=0,J=0,K=0,L=0,M=0,N=0,O=0,P=0,Q=0,R=0,S=0,T=0,U=0,V=0,W=0,X=0,Y=0,Z=0,_=0,aa=0,ba=0,ca=0,da=0,ea=0,fa=0,ga=0,ha=0,ia=0,ja=0,ka=0,la=0,ma=0,na=0,oa=0,pa=0;pa=u;u=u+48|0;ma=pa+28|0;na=pa+8|0;fa=pa+4|0;ha=pa;f[ma>>2]=0;oa=ma+4|0;f[oa>>2]=0;f[ma+8>>2]=0;f[na>>2]=0;f[na+4>>2]=0;f[na+8>>2]=0;f[na+12>>2]=0;n[na+16>>2]=$(1.0);ga=a+136|0;aa=f[a+140>>2]|0;a:do if((c|0)>0){S=a+276|0;A=na+4|0;B=a+8|0;C=ma+8|0;T=a+272|0;Q=a+264|0;R=a+268|0;_=a+36|0;z=a+40|0;Z=c+-1|0;x=0;y=0;b:while(1){d=x+1|0;c:do if(!(b[S>>0]|0))ba=93;else{g=f[T>>2]|0;j=f[Q>>2]|0;k=f[R>>2]|0;e=j+(g>>>3)|0;if(e>>>0>>0?(w=h[e>>0]|0,E=g+1|0,f[T>>2]=E,w&1<<(g&7)|0):0){e=j+(E>>>3)|0;if(e>>>0>>0){i=(h[e>>0]|0)>>>(E&7)&1;g=g+2|0;f[T>>2]=g}else{g=E;i=0}e=j+(g>>>3)|0;if(e>>>0>>0){e=(h[e>>0]|0)>>>(g&7);f[T>>2]=g+1;e=e<<1&2}else e=0;g=(e|i)<<1|1;switch(g&7){case 1:{ba=93;break c}case 3:case 5:{e=f[oa>>2]|0;if((f[ma>>2]|0)==(e|0)){D=-1;break a}v=f[e+-4>>2]|0;w=x*3|0;t=((g|0)==5?2:1)+w|0;g=f[B>>2]|0;e=f[g+12>>2]|0;f[e+(t<<2)>>2]=v;f[e+(v<<2)>>2]=t;e=y+1|0;f[(f[g>>2]|0)+(t<<2)>>2]=y;if((y|0)>-1){l=g+24|0;j=g+28|0;i=f[j>>2]|0;g=f[l>>2]|0;k=i-g>>2;do if(k>>>0<=y>>>0){if(e>>>0>k>>>0){ui(l,e-k|0);g=f[l>>2]|0;break}if(e>>>0>>0?(G=g+(e<<2)|0,(i|0)!=(G|0)):0)f[j>>2]=i+(~((i+-4-G|0)>>>2)<<2)}while(0);f[g+(y<<2)>>2]=t;g=f[B>>2]|0}r=(t|0)<0;i=t+1|0;if(r)p=t;else p=((i|0)%3|0|0)==0?t+-2|0:i;s=(v|0)<0;if(!s?(U=(((v>>>0)%3|0|0)==0?2:-1)+v|0,(U|0)>=0):0){y=f[g>>2]|0;q=f[y+(U<<2)>>2]|0;f[y+(p<<2)>>2]=q;if((q|0)>-1){o=g+24|0;m=g+28|0;i=f[m>>2]|0;g=f[o>>2]|0;l=i-g>>2;do if(l>>>0<=q>>>0){k=q+1|0;j=i;if(k>>>0>l>>>0){ui(o,k-l|0);g=f[o>>2]|0;break}if(k>>>0>=l>>>0)break;i=g+(k<<2)|0;if((j|0)==(i|0))break;f[m>>2]=j+(~((j+-4-i|0)>>>2)<<2)}while(0);f[g+(q<<2)>>2]=p;g=f[B>>2]|0}}else f[(f[g>>2]|0)+(p<<2)>>2]=-1073741824;do if(!r)if(!((t>>>0)%3|0)){q=t+2|0;break}else{q=t+-1|0;break}else q=t;while(0);i=v+1|0;if(!s?(W=((i|0)%3|0|0)==0?v+-2|0:i,(W|0)>=0):0){y=f[g>>2]|0;p=f[y+(W<<2)>>2]|0;f[y+(q<<2)>>2]=p;if((p|0)>-1){o=g+24|0;m=g+28|0;i=f[m>>2]|0;g=f[o>>2]|0;l=i-g>>2;do if(l>>>0<=p>>>0){k=p+1|0;j=i;if(k>>>0>l>>>0){ui(o,k-l|0);g=f[o>>2]|0;break}if(k>>>0>=l>>>0)break;i=g+(k<<2)|0;if((j|0)==(i|0))break;f[m>>2]=j+(~((j+-4-i|0)>>>2)<<2)}while(0);i=q;g=g+(p<<2)|0;ba=91}}else{i=-1073741824;g=(f[g>>2]|0)+(q<<2)|0;ba=91}if((ba|0)==91){ba=0;f[g>>2]=i}f[(f[oa>>2]|0)+-4>>2]=w;break}case 7:{l=x*3|0;f[fa>>2]=l;i=f[B>>2]|0;m=y+1|0;e=f[i>>2]|0;f[e+(l<<2)>>2]=y;if((y|0)<=-1){g=l+1|0;j=y+2|0;f[e+(g<<2)>>2]=m;if((y|0)==-1){e=i;o=j;ba=170}else{g=l;o=j}}else{k=i+24|0;i=i+28|0;g=f[i>>2]|0;e=f[k>>2]|0;j=g-e>>2;do if(j>>>0<=y>>>0){if(m>>>0>j>>>0){ui(k,m-j|0);e=f[k>>2]|0;break}if(m>>>0>>0?(L=e+(m<<2)|0,(g|0)!=(L|0)):0)f[i>>2]=g+(~((g+-4-L|0)>>>2)<<2)}while(0);f[e+(y<<2)>>2]=l;e=f[B>>2]|0;g=(f[fa>>2]|0)+1|0;f[(f[e>>2]|0)+(g<<2)>>2]=m;o=y+2|0;ba=170}if((ba|0)==170){ba=0;l=e+24|0;j=e+28|0;i=f[j>>2]|0;e=f[l>>2]|0;k=i-e>>2;do if(k>>>0<=m>>>0){if(o>>>0>k>>>0){ui(l,o-k|0);e=f[l>>2]|0;break}if(o>>>0>>0?(K=e+(o<<2)|0,(i|0)!=(K|0)):0)f[j>>2]=i+(~((i+-4-K|0)>>>2)<<2)}while(0);f[e+(m<<2)>>2]=g;i=f[B>>2]|0;g=f[fa>>2]|0;e=f[i>>2]|0}l=g+2|0;m=y+3|0;f[e+(l<<2)>>2]=o;if((o|0)>-1){k=i+24|0;i=i+28|0;g=f[i>>2]|0;e=f[k>>2]|0;j=g-e>>2;do if(j>>>0<=o>>>0){if(m>>>0>j>>>0){ui(k,m-j|0);e=f[k>>2]|0;break}if(m>>>0>>0?(J=e+(m<<2)|0,(g|0)!=(J|0)):0)f[i>>2]=g+(~((g+-4-J|0)>>>2)<<2)}while(0);f[e+(o<<2)>>2]=l}e=f[oa>>2]|0;if((e|0)==(f[C>>2]|0))Ii(ma,fa);else{f[e>>2]=f[fa>>2];f[oa>>2]=e+4}e=m;break}default:break b}l=c-x|0;m=l+-1|0;g=f[z>>2]|0;if((g|0)==(f[_>>2]|0))break;while(1){i=f[g+-8>>2]|0;if((i|0)>=(l|0)){D=-1;break a}if((i|0)!=(m|0))break c;i=b[g+-4>>0]|0;k=f[g+-12>>2]|0;f[z>>2]=g+-12;if((k|0)<0){D=-1;break a}g=f[(f[oa>>2]|0)+-4>>2]|0;j=(g|0)<0;do if(!(i&1)){if(!j)if(!((g>>>0)%3|0)){g=g+2|0;break}else{g=g+-1|0;break}}else{i=g+1|0;if(!j)g=((i|0)%3|0|0)==0?g+-2|0:i}while(0);f[fa>>2]=Z-k;y=Ge(na,fa)|0;f[y>>2]=g;g=f[z>>2]|0;if((g|0)==(f[_>>2]|0))break c}}e=f[oa>>2]|0;if((f[ma>>2]|0)==(e|0)){D=-1;break a}v=f[e+-4>>2]|0;t=(v|0)<0;d:do if(!t){e=v+(((v>>>0)%3|0|0)==0?2:-1)|0;if((e|0)<0)ba=13;else{j=f[B>>2]|0;i=f[j+12>>2]|0;while(1){g=f[i+(e<<2)>>2]|0;if((g|0)<=-1){g=j;q=0;p=e;break d}e=g+(((g>>>0)%3|0|0)==0?2:-1)|0;if((e|0)<0){g=j;q=1;p=e;break}}}}else{e=v;ba=13}while(0);if((ba|0)==13){ba=0;g=f[B>>2]|0;i=f[g+12>>2]|0;q=1;p=e}e=x*3|0;r=e+1|0;f[i+(v<<2)>>2]=r;f[i+(r<<2)>>2]=v;w=e+2|0;f[i+(p<<2)>>2]=w;f[i+(w<<2)>>2]=p;i=v+1|0;if(!t?(Y=((i|0)%3|0|0)==0?v+-2|0:i,(Y|0)>=0):0){x=f[g>>2]|0;o=f[x+(Y<<2)>>2]|0;f[x+(e<<2)>>2]=o;if((o|0)>-1){m=g+24|0;j=g+28|0;i=f[j>>2]|0;g=f[m>>2]|0;l=i-g>>2;do if(l>>>0<=o>>>0){k=o+1|0;if(k>>>0>l>>>0){ui(m,k-l|0);g=f[m>>2]|0;break}if(k>>>0>>0?(F=g+(k<<2)|0,(i|0)!=(F|0)):0)f[j>>2]=i+(~((i+-4-F|0)>>>2)<<2)}while(0);f[g+(o<<2)>>2]=e;g=f[B>>2]|0;s=o}else s=o}else{f[(f[g>>2]|0)+(e<<2)>>2]=-1073741824;s=-1073741824}i=p+1|0;if(!q?(X=((i|0)%3|0|0)==0?p+-2|0:i,(X|0)>=0):0){x=f[g>>2]|0;o=f[x+(X<<2)>>2]|0;f[x+(r<<2)>>2]=o;if((o|0)>-1){m=g+24|0;j=g+28|0;i=f[j>>2]|0;g=f[m>>2]|0;l=i-g>>2;do if(l>>>0<=o>>>0){k=o+1|0;if(k>>>0>l>>>0){ui(m,k-l|0);g=f[m>>2]|0;break}if(k>>>0>>0?(I=g+(k<<2)|0,(i|0)!=(I|0)):0)f[j>>2]=i+(~((i+-4-I|0)>>>2)<<2)}while(0);f[g+(o<<2)>>2]=r;g=f[B>>2]|0}}else f[(f[g>>2]|0)+(r<<2)>>2]=-1073741824;if(!t?(V=(((v>>>0)%3|0|0)==0?2:-1)+v|0,(V|0)>=0):0){x=f[g>>2]|0;o=f[x+(V<<2)>>2]|0;f[x+(w<<2)>>2]=o;if((o|0)>-1){m=g+24|0;j=g+28|0;i=f[j>>2]|0;g=f[m>>2]|0;l=i-g>>2;do if(l>>>0<=o>>>0){k=o+1|0;if(k>>>0>l>>>0){ui(m,k-l|0);g=f[m>>2]|0;break}if(k>>>0>>0?(H=g+(k<<2)|0,(i|0)!=(H|0)):0)f[j>>2]=i+(~((i+-4-H|0)>>>2)<<2)}while(0);i=w;g=g+(o<<2)|0;ba=50}}else{i=-1073741824;g=(f[g>>2]|0)+(w<<2)|0;ba=50}if((ba|0)==50){ba=0;f[g>>2]=i}if((y|0)>(aa|0)){D=-1;break a}ba=(f[ga>>2]|0)+(s>>>5<<2)|0;f[ba>>2]=f[ba>>2]&~(1<<(s&31));ba=189}while(0);if((ba|0)==93){ba=0;g=f[ma>>2]|0;e=f[oa>>2]|0;if((g|0)==(e|0)){D=-1;break a}o=e+-4|0;t=f[o>>2]|0;f[oa>>2]=o;k=f[A>>2]|0;e:do if(k){l=k+-1|0;j=(l&k|0)==0;if(j)m=l&x;else m=(x>>>0)%(k>>>0)|0;i=f[(f[na>>2]|0)+(m<<2)>>2]|0;if(i){if(j)do{i=f[i>>2]|0;if(!i){e=o;break e}if((f[i+4>>2]&l|0)!=(m|0)){e=o;break e}}while((f[i+8>>2]|0)!=(x|0));else do{i=f[i>>2]|0;if(!i){e=o;break e}if((((f[i+4>>2]|0)>>>0)%(k>>>0)|0|0)!=(m|0)){e=o;break e}}while((f[i+8>>2]|0)!=(x|0));i=i+12|0;if((o|0)==(f[C>>2]|0)){Ii(ma,i);g=f[ma>>2]|0;e=f[oa>>2]|0;break}else{f[o>>2]=f[i>>2];f[oa>>2]=e;break}}else e=o}else e=o;while(0);if((g|0)==(e|0)){D=-1;break a}p=f[e+-4>>2]|0;e=x*3|0;s=e+2|0;i=f[B>>2]|0;x=f[i+12>>2]|0;f[x+(p<<2)>>2]=s;f[x+(s<<2)>>2]=p;r=e+1|0;f[x+(t<<2)>>2]=r;f[x+(r<<2)>>2]=t;if((p|0)>=0){g=(((p>>>0)%3|0|0)==0?2:-1)+p|0;j=f[i>>2]|0;if((g|0)>=0){k=f[j+(g<<2)>>2]|0;f[j+(e<<2)>>2]=k;if((k|0)>-1){o=i+24|0;j=i+28|0;i=f[j>>2]|0;g=f[o>>2]|0;m=i-g>>2;do if(m>>>0<=k>>>0){l=k+1|0;if(l>>>0>m>>>0){ui(o,l-m|0);g=f[o>>2]|0;break}if(l>>>0>>0?(P=g+(l<<2)|0,(i|0)!=(P|0)):0)f[j>>2]=i+(~((i+-4-P|0)>>>2)<<2)}while(0);f[g+(k<<2)>>2]=e;i=f[B>>2]|0;j=1}else j=0}else{f[j+(e<<2)>>2]=-1073741824;j=0;k=-1073741824}g=p+1|0;g=((g|0)%3|0|0)==0?p+-2|0:g;l=f[i>>2]|0;if((g|0)>=0){q=f[l+(g<<2)>>2]|0;f[l+(r<<2)>>2]=q;if((q|0)>-1){p=i+24|0;l=i+28|0;i=f[l>>2]|0;g=f[p>>2]|0;o=i-g>>2;do if(o>>>0<=q>>>0){m=q+1|0;if(m>>>0>o>>>0){ui(p,m-o|0);g=f[p>>2]|0;break}if(m>>>0>>0?(O=g+(m<<2)|0,(i|0)!=(O|0)):0)f[l>>2]=i+(~((i+-4-O|0)>>>2)<<2)}while(0);f[g+(q<<2)>>2]=r;i=f[B>>2]|0;q=j;r=k}else{q=j;r=k}}else{g=l;ba=123}}else{g=f[i>>2]|0;f[g+(e<<2)>>2]=-1073741824;j=0;k=-1073741824;ba=123}if((ba|0)==123){ba=0;f[g+(r<<2)>>2]=-1073741824;q=j;r=k}f:do if((t|0)>=0){g=(((t>>>0)%3|0|0)==0?2:-1)+t|0;j=f[i>>2]|0;if((g|0)>=0){o=f[j+(g<<2)>>2]|0;f[j+(s<<2)>>2]=o;if((o|0)>-1){m=i+24|0;j=i+28|0;i=f[j>>2]|0;g=f[m>>2]|0;l=i-g>>2;do if(l>>>0<=o>>>0){k=o+1|0;if(k>>>0>l>>>0){ui(m,k-l|0);g=f[m>>2]|0;break}if(k>>>0>>0?(N=g+(k<<2)|0,(i|0)!=(N|0)):0)f[j>>2]=i+(~((i+-4-N|0)>>>2)<<2)}while(0);i=s;g=g+(o<<2)|0;ba=144}}else{i=-1073741824;g=j+(s<<2)|0;ba=144}if((ba|0)==144)f[g>>2]=i;j=t+1|0;j=((j|0)%3|0|0)==0?t+-2|0:j;i=f[B>>2]|0;if((j|0)<0)g=-1073741824;else{g=f[(f[i>>2]|0)+(j<<2)>>2]|0;p=r+1|0;if(!q){l=f[i>>2]|0;m=i+12|0;while(1){f[l+(j<<2)>>2]=r;ba=j+1|0;j=((ba|0)%3|0|0)==0?j+-2|0:ba;if((j|0)<0)break f;k=f[(f[m>>2]|0)+(j<<2)>>2]|0;j=k+1|0;if((k|0)<0)break f;j=((j|0)%3|0|0)==0?k+-2|0:j;if((j|0)<=-1)break f}}do{f[(f[i>>2]|0)+(j<<2)>>2]=r;o=i+24|0;l=i+28|0;k=f[l>>2]|0;i=f[o>>2]|0;m=k-i>>2;do if(m>>>0<=r>>>0){if(p>>>0>m>>>0){ui(o,p-m|0);i=f[o>>2]|0;break}if(p>>>0>>0?(M=i+(p<<2)|0,(k|0)!=(M|0)):0)f[l>>2]=k+(~((k+-4-M|0)>>>2)<<2)}while(0);f[i+(r<<2)>>2]=j;i=j+1|0;j=((i|0)%3|0|0)==0?j+-2|0:i;i=f[B>>2]|0;if((j|0)<0)break f;k=f[(f[i+12>>2]|0)+(j<<2)>>2]|0;j=k+1|0;if((k|0)<0)break f;j=((j|0)%3|0|0)==0?k+-2|0:j}while((j|0)>-1)}}else{f[(f[i>>2]|0)+(s<<2)>>2]=-1073741824;g=-1073741824}while(0);f[(f[i+24>>2]|0)+(g<<2)>>2]=-1073741824;ba=189}if((ba|0)==189){ba=0;f[(f[oa>>2]|0)+-4>>2]=e;e=y}if((d|0)<(c|0)){x=d;y=e}else{D=e;ba=203;break a}}}else{d=0;D=0;ba=203}while(0);do if((ba|0)==203)if((D|0)<=(aa|0)){g=f[oa>>2]|0;if((g|0)==(f[ma>>2]|0))e=a+8|0;else{z=a+316|0;e=a+8|0;C=a+64|0;w=a+68|0;t=a+72|0;s=a+80|0;v=a+84|0;B=a+76|0;A=a+312|0;x=a+304|0;y=a+308|0;do{aa=g;o=f[aa+-4>>2]|0;f[fa>>2]=o;f[oa>>2]=aa+-4;do if(b[z>>0]|0){g=f[A>>2]|0;i=(f[x>>2]|0)+(g>>>3)|0;if(i>>>0<(f[y>>2]|0)>>>0?(aa=h[i>>0]|0,f[A>>2]=g+1,aa&1<<(g&7)|0):0){ba=210;break}g=f[w>>2]|0;i=f[t>>2]|0;if((g|0)==(i<<5|0)){if((g+1|0)<0){Lp(C);i=f[t>>2]|0}aa=i<<6;g=g+32&-32;ri(C,i<<5>>>0<1073741823?(aa>>>0>>0?g:aa):2147483647);g=f[w>>2]|0}f[w>>2]=g+1;aa=(f[C>>2]|0)+(g>>>5<<2)|0;f[aa>>2]=f[aa>>2]&~(1<<(g&31));g=f[s>>2]|0;if((g|0)==(f[v>>2]|0)){Ii(B,fa);break}else{f[g>>2]=f[fa>>2];f[s>>2]=g+4;break}}else ba=210;while(0);if((ba|0)==210){ba=0;k=(o|0)<0;g:do if(!k){g=o+(((o>>>0)%3|0|0)==0?2:-1)|0;if((g|0)>=0){i=f[(f[e>>2]|0)+12>>2]|0;j=g;while(1){g=f[i+(j<<2)>>2]|0;if((g|0)<=-1){i=0;g=j;break}g=g+(((g>>>0)%3|0|0)==0?2:-1)|0;if((g|0)<0){i=1;break}else j=g}if(k){k=o;ba=217;break}}else i=1;k=o+1|0;k=((k|0)%3|0|0)==0?o+-2|0:k;if((k|0)<0)ba=217;else{j=f[e>>2]|0;l=f[j+12>>2]|0;m=k;while(1){k=f[l+(m<<2)>>2]|0;if((k|0)<=-1){q=0;break g}aa=k+1|0;k=((aa|0)%3|0|0)==0?k+-2|0:aa;if((k|0)<0){q=1;m=k;break}else m=k}}}else{i=1;g=o;k=o;ba=217}while(0);if((ba|0)==217){ba=0;j=f[e>>2]|0;l=f[j+12>>2]|0;q=1;m=k}r=d+1|0;d=d*3|0;f[ha>>2]=d;f[l+(d<<2)>>2]=o;f[l+(o<<2)>>2]=d;d=(f[ha>>2]|0)+1|0;f[l+(d<<2)>>2]=g;f[l+(g<<2)>>2]=d;d=(f[ha>>2]|0)+2|0;f[l+(d<<2)>>2]=m;f[l+(m<<2)>>2]=d;d=f[ha>>2]|0;k=g+1|0;if(!i?(ka=((k|0)%3|0|0)==0?g+-2|0:k,(ka|0)>=0):0){aa=f[j>>2]|0;p=f[aa+(ka<<2)>>2]|0;f[aa+(d<<2)>>2]=p;if((p|0)>-1){o=j+24|0;j=j+28|0;i=f[j>>2]|0;g=f[o>>2]|0;l=i-g>>2;do if(l>>>0<=p>>>0){k=p+1|0;if(k>>>0>l>>>0){ui(o,k-l|0);g=f[o>>2]|0;break}if(k>>>0>>0?(ea=g+(k<<2)|0,(i|0)!=(ea|0)):0)f[j>>2]=i+(~((i+-4-ea|0)>>>2)<<2)}while(0);f[g+(p<<2)>>2]=d;d=f[ha>>2]|0;j=f[e>>2]|0}}else f[(f[j>>2]|0)+(d<<2)>>2]=-1073741824;o=d+1|0;g=m+1|0;if(!q?(ja=((g|0)%3|0|0)==0?m+-2|0:g,(ja|0)>=0):0){aa=f[j>>2]|0;m=f[aa+(ja<<2)>>2]|0;f[aa+(o<<2)>>2]=m;if((m|0)>-1){l=j+24|0;i=j+28|0;g=f[i>>2]|0;d=f[l>>2]|0;k=g-d>>2;do if(k>>>0<=m>>>0){j=m+1|0;if(j>>>0>k>>>0){ui(l,j-k|0);d=f[l>>2]|0;break}if(j>>>0>>0?(da=d+(j<<2)|0,(g|0)!=(da|0)):0)f[i>>2]=g+(~((g+-4-da|0)>>>2)<<2)}while(0);f[d+(m<<2)>>2]=o;d=f[ha>>2]|0;j=f[e>>2]|0}}else f[(f[j>>2]|0)+(o<<2)>>2]=-1073741824;o=d+2|0;g=f[fa>>2]|0;i=g+1|0;if((g|0)>=0?(ia=((i|0)%3|0|0)==0?g+-2|0:i,(ia|0)>=0):0){aa=f[j>>2]|0;m=f[aa+(ia<<2)>>2]|0;f[aa+(o<<2)>>2]=m;if((m|0)>-1){l=j+24|0;i=j+28|0;g=f[i>>2]|0;d=f[l>>2]|0;k=g-d>>2;do if(k>>>0<=m>>>0){j=m+1|0;if(j>>>0>k>>>0){ui(l,j-k|0);d=f[l>>2]|0;break}if(j>>>0>>0?(ca=d+(j<<2)|0,(g|0)!=(ca|0)):0)f[i>>2]=g+(~((g+-4-ca|0)>>>2)<<2)}while(0);f[d+(m<<2)>>2]=o;d=f[ha>>2]|0}}else f[(f[j>>2]|0)+(o<<2)>>2]=-1073741824;if((d|0)<0)d=-1073741824;else d=f[(f[f[e>>2]>>2]|0)+(d<<2)>>2]|0;g=f[ga>>2]|0;aa=g+(d>>>5<<2)|0;f[aa>>2]=f[aa>>2]&~(1<<(d&31));d=f[ha>>2]|0;if((d|0)<-1)d=-1073741824;else d=f[(f[f[e>>2]>>2]|0)+(d+1<<2)>>2]|0;aa=g+(d>>>5<<2)|0;f[aa>>2]=f[aa>>2]&~(1<<(d&31));d=f[ha>>2]|0;if((d|0)<-2)d=-1073741824;else d=f[(f[f[e>>2]>>2]|0)+(d+2<<2)>>2]|0;g=g+(d>>>5<<2)|0;f[g>>2]=f[g>>2]&~(1<<(d&31));d=f[w>>2]|0;g=f[t>>2]|0;if((d|0)==(g<<5|0)){if((d+1|0)<0){Lp(C);g=f[t>>2]|0}aa=g<<6;d=d+32&-32;ri(C,g<<5>>>0<1073741823?(aa>>>0>>0?d:aa):2147483647);d=f[w>>2]|0}f[w>>2]=d+1;aa=(f[C>>2]|0)+(d>>>5<<2)|0;f[aa>>2]=f[aa>>2]|1<<(d&31);d=f[s>>2]|0;if((d|0)==(f[v>>2]|0))Ii(B,ha);else{f[d>>2]=f[ha>>2];f[s>>2]=d+4}d=r}g=f[oa>>2]|0}while((g|0)!=(f[ma>>2]|0))}ka=f[e>>2]|0;if((d|0)==(((f[ka+4>>2]|0)-(f[ka>>2]|0)>>2>>>0)/3|0|0)){j=a+88|0;g=a+92|0;e=f[g>>2]|0;d=f[j>>2]|0;i=e-d>>2;if(D>>>0>i>>>0){ui(j,D-i|0);break}if(D>>>0>>0?(la=d+(D<<2)|0,(e|0)!=(la|0)):0)f[g>>2]=e+(~((e+-4-la|0)>>>2)<<2)}else D=-1}else D=-1;while(0);d=f[na+8>>2]|0;if(d|0)do{la=d;d=f[d>>2]|0;ar(la)}while((d|0)!=0);d=f[na>>2]|0;f[na>>2]=0;if(d|0)ar(d);d=f[ma>>2]|0;if(!d){u=pa;return D|0}e=f[oa>>2]|0;if((e|0)!=(d|0))f[oa>>2]=e+(~((e+-4-d|0)>>>2)<<2);ar(d);u=pa;return D|0}function $a(a){a=a|0;var b=0,c=0,d=0,e=0,g=0,h=0,i=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,v=0,w=0,x=0;x=u;u=u+16|0;n=x;do if(a>>>0<245){k=a>>>0<11?16:a+11&-8;a=k>>>3;m=f[5666]|0;c=m>>>a;if(c&3|0){d=(c&1^1)+a|0;e=22704+(d<<1<<2)|0;b=e+8|0;a=f[b>>2]|0;g=a+8|0;c=f[g>>2]|0;if((e|0)==(c|0))f[5666]=m&~(1<>2]=e;f[b>>2]=c}w=d<<3;f[a+4>>2]=w|3;w=a+w+4|0;f[w>>2]=f[w>>2]|1;w=g;u=x;return w|0}l=f[5668]|0;if(k>>>0>l>>>0){if(c|0){h=2<>>12&16;c=c>>>h;a=c>>>5&8;c=c>>>a;e=c>>>2&4;c=c>>>e;b=c>>>1&2;c=c>>>b;d=c>>>1&1;d=(a|h|e|b|d)+(c>>>d)|0;c=22704+(d<<1<<2)|0;b=c+8|0;e=f[b>>2]|0;h=e+8|0;a=f[h>>2]|0;if((c|0)==(a|0)){a=m&~(1<>2]=c;f[b>>2]=a;a=m}g=(d<<3)-k|0;f[e+4>>2]=k|3;e=e+k|0;f[e+4>>2]=g|1;f[e+g>>2]=g;if(l|0){d=f[5671]|0;b=l>>>3;c=22704+(b<<1<<2)|0;b=1<>2]|0}f[b>>2]=d;f[a+12>>2]=d;f[d+8>>2]=a;f[d+12>>2]=c}f[5668]=g;f[5671]=e;w=h;u=x;return w|0}i=f[5667]|0;if(i){c=(i&0-i)+-1|0;h=c>>>12&16;c=c>>>h;g=c>>>5&8;c=c>>>g;j=c>>>2&4;c=c>>>j;a=c>>>1&2;c=c>>>a;d=c>>>1&1;d=f[22968+((g|h|j|a|d)+(c>>>d)<<2)>>2]|0;c=(f[d+4>>2]&-8)-k|0;a=f[d+16+(((f[d+16>>2]|0)==0&1)<<2)>>2]|0;if(!a){j=c;h=d}else{do{h=(f[a+4>>2]&-8)-k|0;j=h>>>0>>0;c=j?h:c;d=j?a:d;a=f[a+16+(((f[a+16>>2]|0)==0&1)<<2)>>2]|0}while((a|0)!=0);j=c;h=d}g=h+k|0;if(h>>>0>>0){e=f[h+24>>2]|0;b=f[h+12>>2]|0;do if((b|0)==(h|0)){a=h+20|0;b=f[a>>2]|0;if(!b){a=h+16|0;b=f[a>>2]|0;if(!b){c=0;break}}while(1){d=b+20|0;c=f[d>>2]|0;if(c|0){b=c;a=d;continue}d=b+16|0;c=f[d>>2]|0;if(!c)break;else{b=c;a=d}}f[a>>2]=0;c=b}else{c=f[h+8>>2]|0;f[c+12>>2]=b;f[b+8>>2]=c;c=b}while(0);do if(e|0){b=f[h+28>>2]|0;a=22968+(b<<2)|0;if((h|0)==(f[a>>2]|0)){f[a>>2]=c;if(!c){f[5667]=i&~(1<>2]|0)!=(h|0)&1)<<2)>>2]=c;if(!c)break}f[c+24>>2]=e;b=f[h+16>>2]|0;if(b|0){f[c+16>>2]=b;f[b+24>>2]=c}b=f[h+20>>2]|0;if(b|0){f[c+20>>2]=b;f[b+24>>2]=c}}while(0);if(j>>>0<16){w=j+k|0;f[h+4>>2]=w|3;w=h+w+4|0;f[w>>2]=f[w>>2]|1}else{f[h+4>>2]=k|3;f[g+4>>2]=j|1;f[g+j>>2]=j;if(l|0){d=f[5671]|0;b=l>>>3;c=22704+(b<<1<<2)|0;b=1<>2]|0}f[b>>2]=d;f[a+12>>2]=d;f[d+8>>2]=a;f[d+12>>2]=c}f[5668]=j;f[5671]=g}w=h+8|0;u=x;return w|0}else m=k}else m=k}else m=k}else if(a>>>0<=4294967231){a=a+11|0;k=a&-8;d=f[5667]|0;if(d){c=0-k|0;a=a>>>8;if(a)if(k>>>0>16777215)j=31;else{m=(a+1048320|0)>>>16&8;v=a<>>16&4;v=v<>>16&2;j=14-(l|m|j)+(v<>>15)|0;j=k>>>(j+7|0)&1|j<<1}else j=0;a=f[22968+(j<<2)>>2]|0;a:do if(!a){e=0;a=0;v=57}else{e=0;h=k<<((j|0)==31?0:25-(j>>>1)|0);i=a;a=0;while(1){g=(f[i+4>>2]&-8)-k|0;if(g>>>0>>0)if(!g){c=0;e=i;a=i;v=61;break a}else{c=g;a=i}g=f[i+20>>2]|0;i=f[i+16+(h>>>31<<2)>>2]|0;e=(g|0)==0|(g|0)==(i|0)?e:g;g=(i|0)==0;if(g){v=57;break}else h=h<<((g^1)&1)}}while(0);if((v|0)==57){if((e|0)==0&(a|0)==0){a=2<>>12&16;a=a>>>j;i=a>>>5&8;a=a>>>i;l=a>>>2&4;a=a>>>l;m=a>>>1&2;a=a>>>m;e=a>>>1&1;e=f[22968+((i|j|l|m|e)+(a>>>e)<<2)>>2]|0;a=0}if(!e){i=c;j=a}else v=61}if((v|0)==61)while(1){v=0;l=(f[e+4>>2]&-8)-k|0;m=l>>>0>>0;c=m?l:c;a=m?e:a;e=f[e+16+(((f[e+16>>2]|0)==0&1)<<2)>>2]|0;if(!e){i=c;j=a;break}else v=61}if((j|0)!=0?i>>>0<((f[5668]|0)-k|0)>>>0:0){h=j+k|0;if(j>>>0>=h>>>0){w=0;u=x;return w|0}g=f[j+24>>2]|0;b=f[j+12>>2]|0;do if((b|0)==(j|0)){a=j+20|0;b=f[a>>2]|0;if(!b){a=j+16|0;b=f[a>>2]|0;if(!b){b=0;break}}while(1){e=b+20|0;c=f[e>>2]|0;if(c|0){b=c;a=e;continue}e=b+16|0;c=f[e>>2]|0;if(!c)break;else{b=c;a=e}}f[a>>2]=0}else{w=f[j+8>>2]|0;f[w+12>>2]=b;f[b+8>>2]=w}while(0);do if(g){a=f[j+28>>2]|0;c=22968+(a<<2)|0;if((j|0)==(f[c>>2]|0)){f[c>>2]=b;if(!b){d=d&~(1<>2]|0)!=(j|0)&1)<<2)>>2]=b;if(!b)break}f[b+24>>2]=g;a=f[j+16>>2]|0;if(a|0){f[b+16>>2]=a;f[a+24>>2]=b}a=f[j+20>>2]|0;if(a){f[b+20>>2]=a;f[a+24>>2]=b}}while(0);do if(i>>>0>=16){f[j+4>>2]=k|3;f[h+4>>2]=i|1;f[h+i>>2]=i;b=i>>>3;if(i>>>0<256){c=22704+(b<<1<<2)|0;a=f[5666]|0;b=1<>2]|0}f[b>>2]=h;f[a+12>>2]=h;f[h+8>>2]=a;f[h+12>>2]=c;break}b=i>>>8;if(b)if(i>>>0>16777215)b=31;else{v=(b+1048320|0)>>>16&8;w=b<>>16&4;w=w<>>16&2;b=14-(t|v|b)+(w<>>15)|0;b=i>>>(b+7|0)&1|b<<1}else b=0;c=22968+(b<<2)|0;f[h+28>>2]=b;a=h+16|0;f[a+4>>2]=0;f[a>>2]=0;a=1<>2]=h;f[h+24>>2]=c;f[h+12>>2]=h;f[h+8>>2]=h;break}a=i<<((b|0)==31?0:25-(b>>>1)|0);c=f[c>>2]|0;while(1){if((f[c+4>>2]&-8|0)==(i|0)){v=97;break}d=c+16+(a>>>31<<2)|0;b=f[d>>2]|0;if(!b){v=96;break}else{a=a<<1;c=b}}if((v|0)==96){f[d>>2]=h;f[h+24>>2]=c;f[h+12>>2]=h;f[h+8>>2]=h;break}else if((v|0)==97){v=c+8|0;w=f[v>>2]|0;f[w+12>>2]=h;f[v>>2]=h;f[h+8>>2]=w;f[h+12>>2]=c;f[h+24>>2]=0;break}}else{w=i+k|0;f[j+4>>2]=w|3;w=j+w+4|0;f[w>>2]=f[w>>2]|1}while(0);w=j+8|0;u=x;return w|0}else m=k}else m=k}else m=-1;while(0);c=f[5668]|0;if(c>>>0>=m>>>0){a=c-m|0;b=f[5671]|0;if(a>>>0>15){w=b+m|0;f[5671]=w;f[5668]=a;f[w+4>>2]=a|1;f[w+a>>2]=a;f[b+4>>2]=m|3}else{f[5668]=0;f[5671]=0;f[b+4>>2]=c|3;w=b+c+4|0;f[w>>2]=f[w>>2]|1}w=b+8|0;u=x;return w|0}h=f[5669]|0;if(h>>>0>m>>>0){t=h-m|0;f[5669]=t;w=f[5672]|0;v=w+m|0;f[5672]=v;f[v+4>>2]=t|1;f[w+4>>2]=m|3;w=w+8|0;u=x;return w|0}if(!(f[5784]|0)){f[5786]=4096;f[5785]=4096;f[5787]=-1;f[5788]=-1;f[5789]=0;f[5777]=0;a=n&-16^1431655768;f[n>>2]=a;f[5784]=a;a=4096}else a=f[5786]|0;i=m+48|0;j=m+47|0;g=a+j|0;d=0-a|0;k=g&d;if(k>>>0<=m>>>0){w=0;u=x;return w|0}a=f[5776]|0;if(a|0?(l=f[5774]|0,n=l+k|0,n>>>0<=l>>>0|n>>>0>a>>>0):0){w=0;u=x;return w|0}b:do if(!(f[5777]&4)){c=f[5672]|0;c:do if(c){e=23112;while(1){a=f[e>>2]|0;if(a>>>0<=c>>>0?(q=e+4|0,(a+(f[q>>2]|0)|0)>>>0>c>>>0):0)break;a=f[e+8>>2]|0;if(!a){v=118;break c}else e=a}b=g-h&d;if(b>>>0<2147483647){a=Il(b|0)|0;if((a|0)==((f[e>>2]|0)+(f[q>>2]|0)|0)){if((a|0)!=(-1|0)){h=a;g=b;v=135;break b}}else{d=a;v=126}}else b=0}else v=118;while(0);do if((v|0)==118){c=Il(0)|0;if((c|0)!=(-1|0)?(b=c,o=f[5785]|0,p=o+-1|0,b=((p&b|0)==0?0:(p+b&0-o)-b|0)+k|0,o=f[5774]|0,p=b+o|0,b>>>0>m>>>0&b>>>0<2147483647):0){q=f[5776]|0;if(q|0?p>>>0<=o>>>0|p>>>0>q>>>0:0){b=0;break}a=Il(b|0)|0;if((a|0)==(c|0)){h=c;g=b;v=135;break b}else{d=a;v=126}}else b=0}while(0);do if((v|0)==126){c=0-b|0;if(!(i>>>0>b>>>0&(b>>>0<2147483647&(d|0)!=(-1|0))))if((d|0)==(-1|0)){b=0;break}else{h=d;g=b;v=135;break b}a=f[5786]|0;a=j-b+a&0-a;if(a>>>0>=2147483647){h=d;g=b;v=135;break b}if((Il(a|0)|0)==(-1|0)){Il(c|0)|0;b=0;break}else{h=d;g=a+b|0;v=135;break b}}while(0);f[5777]=f[5777]|4;v=133}else{b=0;v=133}while(0);if(((v|0)==133?k>>>0<2147483647:0)?(r=Il(k|0)|0,q=Il(0)|0,t=q-r|0,s=t>>>0>(m+40|0)>>>0,!((r|0)==(-1|0)|s^1|r>>>0>>0&((r|0)!=(-1|0)&(q|0)!=(-1|0))^1)):0){h=r;g=s?t:b;v=135}if((v|0)==135){b=(f[5774]|0)+g|0;f[5774]=b;if(b>>>0>(f[5775]|0)>>>0)f[5775]=b;j=f[5672]|0;do if(j){e=23112;while(1){b=f[e>>2]|0;d=e+4|0;a=f[d>>2]|0;if((h|0)==(b+a|0)){v=145;break}c=f[e+8>>2]|0;if(!c)break;else e=c}if(((v|0)==145?(f[e+12>>2]&8|0)==0:0)?j>>>0>>0&j>>>0>=b>>>0:0){f[d>>2]=a+g;w=j+8|0;w=(w&7|0)==0?0:0-w&7;v=j+w|0;w=(f[5669]|0)+(g-w)|0;f[5672]=v;f[5669]=w;f[v+4>>2]=w|1;f[v+w+4>>2]=40;f[5673]=f[5788];break}if(h>>>0<(f[5670]|0)>>>0)f[5670]=h;c=h+g|0;a=23112;while(1){if((f[a>>2]|0)==(c|0)){v=153;break}b=f[a+8>>2]|0;if(!b)break;else a=b}if((v|0)==153?(f[a+12>>2]&8|0)==0:0){f[a>>2]=h;l=a+4|0;f[l>>2]=(f[l>>2]|0)+g;l=h+8|0;l=h+((l&7|0)==0?0:0-l&7)|0;b=c+8|0;b=c+((b&7|0)==0?0:0-b&7)|0;k=l+m|0;i=b-l-m|0;f[l+4>>2]=m|3;do if((b|0)!=(j|0)){if((b|0)==(f[5671]|0)){w=(f[5668]|0)+i|0;f[5668]=w;f[5671]=k;f[k+4>>2]=w|1;f[k+w>>2]=w;break}a=f[b+4>>2]|0;if((a&3|0)==1){h=a&-8;d=a>>>3;d:do if(a>>>0<256){a=f[b+8>>2]|0;c=f[b+12>>2]|0;if((c|0)==(a|0)){f[5666]=f[5666]&~(1<>2]=c;f[c+8>>2]=a;break}}else{g=f[b+24>>2]|0;a=f[b+12>>2]|0;do if((a|0)==(b|0)){d=b+16|0;c=d+4|0;a=f[c>>2]|0;if(!a){a=f[d>>2]|0;if(!a){a=0;break}else e=d}else e=c;while(1){d=a+20|0;c=f[d>>2]|0;if(c|0){a=c;e=d;continue}d=a+16|0;c=f[d>>2]|0;if(!c)break;else{a=c;e=d}}f[e>>2]=0}else{w=f[b+8>>2]|0;f[w+12>>2]=a;f[a+8>>2]=w}while(0);if(!g)break;c=f[b+28>>2]|0;d=22968+(c<<2)|0;do if((b|0)!=(f[d>>2]|0)){f[g+16+(((f[g+16>>2]|0)!=(b|0)&1)<<2)>>2]=a;if(!a)break d}else{f[d>>2]=a;if(a|0)break;f[5667]=f[5667]&~(1<>2]=g;d=b+16|0;c=f[d>>2]|0;if(c|0){f[a+16>>2]=c;f[c+24>>2]=a}c=f[d+4>>2]|0;if(!c)break;f[a+20>>2]=c;f[c+24>>2]=a}while(0);b=b+h|0;e=h+i|0}else e=i;b=b+4|0;f[b>>2]=f[b>>2]&-2;f[k+4>>2]=e|1;f[k+e>>2]=e;b=e>>>3;if(e>>>0<256){c=22704+(b<<1<<2)|0;a=f[5666]|0;b=1<>2]|0}f[b>>2]=k;f[a+12>>2]=k;f[k+8>>2]=a;f[k+12>>2]=c;break}b=e>>>8;do if(!b)a=0;else{if(e>>>0>16777215){a=31;break}v=(b+1048320|0)>>>16&8;w=b<>>16&4;w=w<>>16&2;a=14-(t|v|a)+(w<>>15)|0;a=e>>>(a+7|0)&1|a<<1}while(0);d=22968+(a<<2)|0;f[k+28>>2]=a;b=k+16|0;f[b+4>>2]=0;f[b>>2]=0;b=f[5667]|0;c=1<>2]=k;f[k+24>>2]=d;f[k+12>>2]=k;f[k+8>>2]=k;break}a=e<<((a|0)==31?0:25-(a>>>1)|0);c=f[d>>2]|0;while(1){if((f[c+4>>2]&-8|0)==(e|0)){v=194;break}d=c+16+(a>>>31<<2)|0;b=f[d>>2]|0;if(!b){v=193;break}else{a=a<<1;c=b}}if((v|0)==193){f[d>>2]=k;f[k+24>>2]=c;f[k+12>>2]=k;f[k+8>>2]=k;break}else if((v|0)==194){v=c+8|0;w=f[v>>2]|0;f[w+12>>2]=k;f[v>>2]=k;f[k+8>>2]=w;f[k+12>>2]=c;f[k+24>>2]=0;break}}else{w=(f[5669]|0)+i|0;f[5669]=w;f[5672]=k;f[k+4>>2]=w|1}while(0);w=l+8|0;u=x;return w|0}a=23112;while(1){b=f[a>>2]|0;if(b>>>0<=j>>>0?(w=b+(f[a+4>>2]|0)|0,w>>>0>j>>>0):0)break;a=f[a+8>>2]|0}e=w+-47|0;a=e+8|0;a=e+((a&7|0)==0?0:0-a&7)|0;e=j+16|0;a=a>>>0>>0?j:a;b=a+8|0;c=h+8|0;c=(c&7|0)==0?0:0-c&7;v=h+c|0;c=g+-40-c|0;f[5672]=v;f[5669]=c;f[v+4>>2]=c|1;f[v+c+4>>2]=40;f[5673]=f[5788];c=a+4|0;f[c>>2]=27;f[b>>2]=f[5778];f[b+4>>2]=f[5779];f[b+8>>2]=f[5780];f[b+12>>2]=f[5781];f[5778]=h;f[5779]=g;f[5781]=0;f[5780]=b;b=a+24|0;do{v=b;b=b+4|0;f[b>>2]=7}while((v+8|0)>>>0>>0);if((a|0)!=(j|0)){g=a-j|0;f[c>>2]=f[c>>2]&-2;f[j+4>>2]=g|1;f[a>>2]=g;b=g>>>3;if(g>>>0<256){c=22704+(b<<1<<2)|0;a=f[5666]|0;b=1<>2]|0}f[b>>2]=j;f[a+12>>2]=j;f[j+8>>2]=a;f[j+12>>2]=c;break}b=g>>>8;if(b)if(g>>>0>16777215)c=31;else{v=(b+1048320|0)>>>16&8;w=b<>>16&4;w=w<>>16&2;c=14-(t|v|c)+(w<>>15)|0;c=g>>>(c+7|0)&1|c<<1}else c=0;d=22968+(c<<2)|0;f[j+28>>2]=c;f[j+20>>2]=0;f[e>>2]=0;b=f[5667]|0;a=1<>2]=j;f[j+24>>2]=d;f[j+12>>2]=j;f[j+8>>2]=j;break}a=g<<((c|0)==31?0:25-(c>>>1)|0);c=f[d>>2]|0;while(1){if((f[c+4>>2]&-8|0)==(g|0)){v=216;break}d=c+16+(a>>>31<<2)|0;b=f[d>>2]|0;if(!b){v=215;break}else{a=a<<1;c=b}}if((v|0)==215){f[d>>2]=j;f[j+24>>2]=c;f[j+12>>2]=j;f[j+8>>2]=j;break}else if((v|0)==216){v=c+8|0;w=f[v>>2]|0;f[w+12>>2]=j;f[v>>2]=j;f[j+8>>2]=w;f[j+12>>2]=c;f[j+24>>2]=0;break}}}else{w=f[5670]|0;if((w|0)==0|h>>>0>>0)f[5670]=h;f[5778]=h;f[5779]=g;f[5781]=0;f[5675]=f[5784];f[5674]=-1;b=0;do{w=22704+(b<<1<<2)|0;f[w+12>>2]=w;f[w+8>>2]=w;b=b+1|0}while((b|0)!=32);w=h+8|0;w=(w&7|0)==0?0:0-w&7;v=h+w|0;w=g+-40-w|0;f[5672]=v;f[5669]=w;f[v+4>>2]=w|1;f[v+w+4>>2]=40;f[5673]=f[5788]}while(0);b=f[5669]|0;if(b>>>0>m>>>0){t=b-m|0;f[5669]=t;w=f[5672]|0;v=w+m|0;f[5672]=v;f[v+4>>2]=t|1;f[w+4>>2]=m|3;w=w+8|0;u=x;return w|0}}w=Oq()|0;f[w>>2]=12;w=0;u=x;return w|0}function ab(a){a=a|0;var b=0,c=0,d=0,e=0,g=0,h=0,i=0,j=0,k=0,l=0,m=0;l=u;u=u+16|0;b=l;j=l+8|0;c=l+4|0;f[j>>2]=a;do if(a>>>0>=212){i=(a>>>0)/210|0;e=i*210|0;f[c>>2]=a-e;h=(Kl(5676,5868,c,b)|0)-5676>>2;a=e;e=0;a:while(1){b=(f[5676+(h<<2)>>2]|0)+a|0;d=5;while(1){if(d>>>0>=47){g=211;c=e;k=8;break}a=f[5484+(d<<2)>>2]|0;c=(b>>>0)/(a>>>0)|0;if(c>>>0>>0){k=106;break a}if((b|0)==(X(c,a)|0)){b=e;break}else d=d+1|0}b:do if((k|0)==8){c:while(1){k=0;a=(b>>>0)/(g>>>0)|0;do if(a>>>0>=g>>>0)if((b|0)!=(X(a,g)|0)){d=g+10|0;a=(b>>>0)/(d>>>0)|0;if(a>>>0>=d>>>0)if((b|0)!=(X(a,d)|0)){d=g+12|0;a=(b>>>0)/(d>>>0)|0;if(a>>>0>=d>>>0)if((b|0)!=(X(a,d)|0)){d=g+16|0;a=(b>>>0)/(d>>>0)|0;if(a>>>0>=d>>>0)if((b|0)!=(X(a,d)|0)){d=g+18|0;a=(b>>>0)/(d>>>0)|0;if(a>>>0>=d>>>0)if((b|0)!=(X(a,d)|0)){d=g+22|0;a=(b>>>0)/(d>>>0)|0;if(a>>>0>=d>>>0)if((b|0)!=(X(a,d)|0)){d=g+28|0;a=(b>>>0)/(d>>>0)|0;if(a>>>0>=d>>>0)if((b|0)==(X(a,d)|0)){e=9;a=d}else{d=g+30|0;a=(b>>>0)/(d>>>0)|0;if(a>>>0>>0){e=1;a=d;c=b;break}if((b|0)==(X(a,d)|0)){e=9;a=d;break}d=g+36|0;a=(b>>>0)/(d>>>0)|0;if(a>>>0>>0){e=1;a=d;c=b;break}if((b|0)==(X(a,d)|0)){e=9;a=d;break}d=g+40|0;a=(b>>>0)/(d>>>0)|0;if(a>>>0>>0){e=1;a=d;c=b;break}if((b|0)==(X(a,d)|0)){e=9;a=d;break}d=g+42|0;a=(b>>>0)/(d>>>0)|0;if(a>>>0>>0){e=1;a=d;c=b;break}if((b|0)==(X(a,d)|0)){e=9;a=d;break}d=g+46|0;a=(b>>>0)/(d>>>0)|0;if(a>>>0>>0){e=1;a=d;c=b;break}if((b|0)==(X(a,d)|0)){e=9;a=d;break}d=g+52|0;a=(b>>>0)/(d>>>0)|0;if(a>>>0>>0){e=1;a=d;c=b;break}if((b|0)==(X(a,d)|0)){e=9;a=d;break}d=g+58|0;a=(b>>>0)/(d>>>0)|0;if(a>>>0>>0){e=1;a=d;c=b;break}if((b|0)==(X(a,d)|0)){e=9;a=d;break}d=g+60|0;a=(b>>>0)/(d>>>0)|0;if(a>>>0>>0){e=1;a=d;c=b;break}if((b|0)==(X(a,d)|0)){e=9;a=d;break}d=g+66|0;a=(b>>>0)/(d>>>0)|0;if(a>>>0>>0){e=1;a=d;c=b;break}if((b|0)==(X(a,d)|0)){e=9;a=d;break}d=g+70|0;a=(b>>>0)/(d>>>0)|0;if(a>>>0>>0){e=1;a=d;c=b;break}if((b|0)==(X(a,d)|0)){e=9;a=d;break}d=g+72|0;a=(b>>>0)/(d>>>0)|0;if(a>>>0>>0){e=1;a=d;c=b;break}if((b|0)==(X(a,d)|0)){e=9;a=d;break}d=g+78|0;a=(b>>>0)/(d>>>0)|0;if(a>>>0>>0){e=1;a=d;c=b;break}if((b|0)==(X(a,d)|0)){e=9;a=d;break}d=g+82|0;a=(b>>>0)/(d>>>0)|0;if(a>>>0>>0){e=1;a=d;c=b;break}if((b|0)==(X(a,d)|0)){e=9;a=d;break}d=g+88|0;a=(b>>>0)/(d>>>0)|0;if(a>>>0>>0){e=1;a=d;c=b;break}if((b|0)==(X(a,d)|0)){e=9;a=d;break}d=g+96|0;a=(b>>>0)/(d>>>0)|0;if(a>>>0>>0){e=1;a=d;c=b;break}if((b|0)==(X(a,d)|0)){e=9;a=d;break}d=g+100|0;a=(b>>>0)/(d>>>0)|0;if(a>>>0>>0){e=1;a=d;c=b;break}if((b|0)==(X(a,d)|0)){e=9;a=d;break}d=g+102|0;a=(b>>>0)/(d>>>0)|0;if(a>>>0>>0){e=1;a=d;c=b;break}if((b|0)==(X(a,d)|0)){e=9;a=d;break}d=g+106|0;a=(b>>>0)/(d>>>0)|0;if(a>>>0>>0){e=1;a=d;c=b;break}if((b|0)==(X(a,d)|0)){e=9;a=d;break}d=g+108|0;a=(b>>>0)/(d>>>0)|0;if(a>>>0>>0){e=1;a=d;c=b;break}if((b|0)==(X(a,d)|0)){e=9;a=d;break}d=g+112|0;a=(b>>>0)/(d>>>0)|0;if(a>>>0>>0){e=1;a=d;c=b;break}if((b|0)==(X(a,d)|0)){e=9;a=d;break}d=g+120|0;a=(b>>>0)/(d>>>0)|0;if(a>>>0>>0){e=1;a=d;c=b;break}if((b|0)==(X(a,d)|0)){e=9;a=d;break}d=g+126|0;a=(b>>>0)/(d>>>0)|0;if(a>>>0>>0){e=1;a=d;c=b;break}if((b|0)==(X(a,d)|0)){e=9;a=d;break}d=g+130|0;a=(b>>>0)/(d>>>0)|0;if(a>>>0>>0){e=1;a=d;c=b;break}if((b|0)==(X(a,d)|0)){e=9;a=d;break}d=g+136|0;a=(b>>>0)/(d>>>0)|0;if(a>>>0>>0){e=1;a=d;c=b;break}if((b|0)==(X(a,d)|0)){e=9;a=d;break}d=g+138|0;a=(b>>>0)/(d>>>0)|0;if(a>>>0>>0){e=1;a=d;c=b;break}if((b|0)==(X(a,d)|0)){e=9;a=d;break}d=g+142|0;a=(b>>>0)/(d>>>0)|0;if(a>>>0>>0){e=1;a=d;c=b;break}if((b|0)==(X(a,d)|0)){e=9;a=d;break}d=g+148|0;a=(b>>>0)/(d>>>0)|0;if(a>>>0>>0){e=1;a=d;c=b;break}if((b|0)==(X(a,d)|0)){e=9;a=d;break}d=g+150|0;a=(b>>>0)/(d>>>0)|0;if(a>>>0>>0){e=1;a=d;c=b;break}if((b|0)==(X(a,d)|0)){e=9;a=d;break}d=g+156|0;a=(b>>>0)/(d>>>0)|0;if(a>>>0>>0){e=1;a=d;c=b;break}if((b|0)==(X(a,d)|0)){e=9;a=d;break}d=g+162|0;a=(b>>>0)/(d>>>0)|0;if(a>>>0>>0){e=1;a=d;c=b;break}if((b|0)==(X(a,d)|0)){e=9;a=d;break}d=g+166|0;a=(b>>>0)/(d>>>0)|0;if(a>>>0>>0){e=1;a=d;c=b;break}if((b|0)==(X(a,d)|0)){e=9;a=d;break}d=g+168|0;a=(b>>>0)/(d>>>0)|0;if(a>>>0>>0){e=1;a=d;c=b;break}if((b|0)==(X(a,d)|0)){e=9;a=d;break}d=g+172|0;a=(b>>>0)/(d>>>0)|0;if(a>>>0>>0){e=1;a=d;c=b;break}if((b|0)==(X(a,d)|0)){e=9;a=d;break}d=g+178|0;a=(b>>>0)/(d>>>0)|0;if(a>>>0>>0){e=1;a=d;c=b;break}if((b|0)==(X(a,d)|0)){e=9;a=d;break}d=g+180|0;a=(b>>>0)/(d>>>0)|0;if(a>>>0>>0){e=1;a=d;c=b;break}if((b|0)==(X(a,d)|0)){e=9;a=d;break}d=g+186|0;a=(b>>>0)/(d>>>0)|0;if(a>>>0>>0){e=1;a=d;c=b;break}if((b|0)==(X(a,d)|0)){e=9;a=d;break}d=g+190|0;a=(b>>>0)/(d>>>0)|0;if(a>>>0>>0){e=1;a=d;c=b;break}if((b|0)==(X(a,d)|0)){e=9;a=d;break}d=g+192|0;a=(b>>>0)/(d>>>0)|0;if(a>>>0>>0){e=1;a=d;c=b;break}if((b|0)==(X(a,d)|0)){e=9;a=d;break}d=g+196|0;a=(b>>>0)/(d>>>0)|0;if(a>>>0>>0){e=1;a=d;c=b;break}if((b|0)==(X(a,d)|0)){e=9;a=d;break}d=g+198|0;a=(b>>>0)/(d>>>0)|0;if(a>>>0>>0){e=1;a=d;c=b;break}if((b|0)==(X(a,d)|0)){e=9;a=d;break}a=g+208|0;m=(b>>>0)/(a>>>0)|0;d=m>>>0>>0;m=(b|0)==(X(m,a)|0);e=d?1:m?9:0;a=d|m?a:g+210|0;c=d?b:c}else{e=1;a=d;c=b}}else{e=9;a=d}else{e=1;a=d;c=b}}else{e=9;a=d}else{e=1;a=d;c=b}}else{e=9;a=d}else{e=1;a=d;c=b}}else{e=9;a=d}else{e=1;a=d;c=b}}else{e=9;a=d}else{e=1;a=d;c=b}}else{e=9;a=g}else{e=1;a=g;c=b}while(0);switch(e&15){case 9:{b=c;break b}case 0:{g=a;k=8;break}default:break c}}if(!e)b=c;else{k=107;break a}}while(0);e=h+1|0;m=(e|0)==48;a=(m&1)+i|0;h=m?0:e;i=a;a=a*210|0;e=b}if((k|0)==106){f[j>>2]=b;break}else if((k|0)==107){f[j>>2]=b;b=c;break}}else{b=Kl(5484,5676,j,b)|0;b=f[b>>2]|0}while(0);u=l;return b|0}function bb(a){a=a|0;var c=0,d=0,e=0,g=0,i=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,v=0,w=0,x=0,y=0,z=0,A=0,B=0,C=0,D=0;D=u;u=u+128|0;A=D+112|0;k=D+108|0;m=D+104|0;o=D+100|0;s=D+96|0;p=D+92|0;r=D+88|0;C=D+40|0;B=D;t=D+84|0;z=D+80|0;l=a+148|0;f[l>>2]=0;g=a+164|0;if(f[g>>2]|0){d=a+160|0;c=f[d>>2]|0;if(c|0)do{y=c;c=f[c>>2]|0;ar(y)}while((c|0)!=0);f[d>>2]=0;c=f[a+156>>2]|0;if(c|0){d=a+152|0;e=0;do{f[(f[d>>2]|0)+(e<<2)>>2]=0;e=e+1|0}while((e|0)!=(c|0))}f[g>>2]=0}q=a+4|0;j=f[q>>2]|0;c=b[j+36>>0]|0;j=f[j+32>>2]|0;do if(((c&255)<<8&65535)<512){x=j+8|0;y=f[x>>2]|0;x=f[x+4>>2]|0;i=j+16|0;e=i;d=f[e>>2]|0;e=Ho(d|0,f[e+4>>2]|0,4,0)|0;g=I;if((x|0)<(g|0)|(x|0)==(g|0)&y>>>0>>0){C=0;u=D;return C|0}else{d=(f[j>>2]|0)+d|0;d=h[d>>0]|h[d+1>>0]<<8|h[d+2>>0]<<16|h[d+3>>0]<<24;f[k>>2]=d;y=i;f[y>>2]=e;f[y+4>>2]=g;break}}else if(yj(k,j)|0){j=f[q>>2]|0;d=f[k>>2]|0;c=b[j+36>>0]|0;j=f[j+32>>2]|0;break}else{C=0;u=D;return C|0}while(0);f[l>>2]=d;if(((c&255)<<8&65535)<512){x=j+8|0;y=f[x>>2]|0;x=f[x+4>>2]|0;i=j+16|0;e=i;d=f[e>>2]|0;e=Ho(d|0,f[e+4>>2]|0,4,0)|0;g=I;if((x|0)<(g|0)|(x|0)==(g|0)&y>>>0>>0)c=0;else{d=(f[j>>2]|0)+d|0;d=h[d>>0]|h[d+1>>0]<<8|h[d+2>>0]<<16|h[d+3>>0]<<24;f[m>>2]=d;f[i>>2]=e;f[i+4>>2]=g;i=j;v=18}}else if(yj(m,j)|0){i=f[q>>2]|0;d=f[m>>2]|0;c=b[i+36>>0]|0;i=f[i+32>>2]|0;v=18}else c=0;if((v|0)==18){l=a+172|0;f[l>>2]=d;if(((c&255)<<8&65535)<512){x=i+8|0;y=f[x>>2]|0;x=f[x+4>>2]|0;g=i+16|0;d=g;c=f[d>>2]|0;d=Ho(c|0,f[d+4>>2]|0,4,0)|0;e=I;if((x|0)<(e|0)|(x|0)==(e|0)&y>>>0>>0)c=0;else{v=(f[i>>2]|0)+c|0;f[o>>2]=h[v>>0]|h[v+1>>0]<<8|h[v+2>>0]<<16|h[v+3>>0]<<24;v=g;f[v>>2]=d;f[v+4>>2]=e;v=22}}else if(yj(o,i)|0)v=22;else c=0;do if((v|0)==22){c=f[a+24>>2]|0;e=a+28|0;d=f[e>>2]|0;if((d|0)!=(c|0))f[e>>2]=d+(~((d+-4-c|0)>>>2)<<2);c=ln(60)|0;Po(c);y=a+8|0;d=f[y>>2]|0;f[y>>2]=c;if(d){sj(d);ar(d);c=f[y>>2]|0;if(!c){c=0;break}}if(tl(c,f[o>>2]|0)|0){g=a+176|0;d=f[g>>2]|0;e=a+180|0;c=f[e>>2]|0;if((c|0)!=(d|0))f[e>>2]=c+(~((c+-4-d|0)>>>2)<<2);Sj(g,f[o>>2]|0);g=a+188|0;c=f[g>>2]|0;e=a+192|0;d=f[e>>2]|0;if((d|0)!=(c|0))f[e>>2]=d+(~((d+-4-c|0)>>>2)<<2);Sj(g,f[o>>2]|0);c=f[a+36>>2]|0;e=a+40|0;d=f[e>>2]|0;if((d|0)!=(c|0))f[e>>2]=d+(~(((d+-12-c|0)>>>0)/12|0)*12|0);c=f[a+48>>2]|0;e=a+52|0;d=f[e>>2]|0;if((d|0)!=(c|0))f[e>>2]=d+(~((d+-4-c|0)>>>2)<<2);f[a+68>>2]=0;c=f[a+76>>2]|0;e=a+80|0;d=f[e>>2]|0;if((d|0)!=(c|0))f[e>>2]=d+(~((d+-4-c|0)>>>2)<<2);f[a+60>>2]=0;f[a+100>>2]=-1;f[a+108>>2]=-1;f[a+104>>2]=-1;c=f[(f[q>>2]|0)+32>>2]|0;x=c+8|0;w=f[x+4>>2]|0;g=c+16|0;e=g;d=f[e>>2]|0;e=f[e+4>>2]|0;if((w|0)>(e|0)|((w|0)==(e|0)?(f[x>>2]|0)>>>0>d>>>0:0)?(n=b[(f[c>>2]|0)+d>>0]|0,w=Ho(d|0,e|0,1,0)|0,x=g,f[x>>2]=w,f[x+4>>2]=I,n<<24>>24>=0):0){x=a+228|0;i=f[x>>2]|0;w=a+232|0;c=f[w>>2]|0;if((c|0)!=(i|0))do{f[w>>2]=c+-116;d=f[c+-12>>2]|0;if(d|0){g=c+-8|0;e=f[g>>2]|0;if((e|0)!=(d|0))f[g>>2]=e+(~((e+-4-d|0)>>>2)<<2);ar(d)}d=f[c+-28>>2]|0;if(d|0){g=c+-24|0;e=f[g>>2]|0;if((e|0)!=(d|0))f[g>>2]=e+(~((e+-4-d|0)>>>2)<<2);ar(d)}d=f[c+-40>>2]|0;if(d|0){g=c+-36|0;e=f[g>>2]|0;if((e|0)!=(d|0))f[g>>2]=e+(~((e+-4-d|0)>>>2)<<2);ar(d)}Bj(c+-112|0);c=f[w>>2]|0}while((c|0)!=(i|0));k=n<<24>>24;_h(x,k);n=f[q>>2]|0;c=f[n+32>>2]|0;if(((h[n+36>>0]|0)<<8&65535)<512){m=c+8|0;n=f[m>>2]|0;m=f[m+4>>2]|0;i=c+16|0;e=i;d=f[e>>2]|0;e=Ho(d|0,f[e+4>>2]|0,4,0)|0;g=I;if((m|0)<(g|0)|(m|0)==(g|0)&n>>>0>>0)c=0;else{c=(f[c>>2]|0)+d|0;c=h[c>>0]|h[c+1>>0]<<8|h[c+2>>0]<<16|h[c+3>>0]<<24;f[s>>2]=c;v=i;f[v>>2]=e;f[v+4>>2]=g;v=58}}else if(yj(s,c)|0){c=f[s>>2]|0;v=58}else c=0;if((v|0)==58)if((f[o>>2]|0)>>>0>>0)c=0;else{o=f[q>>2]|0;c=f[o+32>>2]|0;do if(((h[o+36>>0]|0)<<8&65535)<512){n=c+8|0;o=f[n>>2]|0;n=f[n+4>>2]|0;i=c+16|0;e=i;d=f[e>>2]|0;e=Ho(d|0,f[e+4>>2]|0,4,0)|0;g=I;if((n|0)<(g|0)|(n|0)==(g|0)&o>>>0>>0){c=0;break}c=(f[c>>2]|0)+d|0;c=h[c>>0]|h[c+1>>0]<<8|h[c+2>>0]<<16|h[c+3>>0]<<24;f[p>>2]=c;v=i;f[v>>2]=e;f[v+4>>2]=g;v=64}else{if(!(yj(p,c)|0)){c=0;break}c=f[p>>2]|0;v=64}while(0);if((v|0)==64){j=a+136|0;p=c+(f[l>>2]|0)|0;b[A>>0]=1;Yg(j,p,A);p=f[q>>2]|0;c=f[p+32>>2]|0;do if(((h[p+36>>0]|0)<<8&65535)>=512)if(yj(r,c)|0)v=68;else c=0;else{o=c+8|0;p=f[o>>2]|0;o=f[o+4>>2]|0;i=c+16|0;e=i;d=f[e>>2]|0;e=Ho(d|0,f[e+4>>2]|0,4,0)|0;g=I;if((o|0)<(g|0)|(o|0)==(g|0)&p>>>0>>0){c=0;break}v=(f[c>>2]|0)+d|0;f[r>>2]=h[v>>0]|h[v+1>>0]<<8|h[v+2>>0]<<16|h[v+3>>0]<<24;v=i;f[v>>2]=e;f[v+4>>2]=g;v=68}while(0);if((v|0)==68){Ym(C);n=f[(f[q>>2]|0)+32>>2]|0;p=n+16|0;o=f[p>>2]|0;c=f[r>>2]|0;v=(f[n>>2]|0)+o+c|0;r=n+8|0;r=Xn(f[r>>2]|0,f[r+4>>2]|0,o|0,f[p+4>>2]|0)|0;c=Xn(r|0,I|0,c|0,0)|0;tn(C,v,c);c=Sb(a,C)|0;if((c|0)==-1)c=0;else{d=a+240|0;f[a+328>>2]=a;r=(Sa[f[(f[a>>2]|0)+32>>2]&255](a)|0)+32|0;r=f[r>>2]|0;p=f[r>>2]|0;r=f[r+16>>2]|0;v=(Sa[f[(f[a>>2]|0)+32>>2]&255](a)|0)+32|0;v=f[v>>2]|0;o=v+8|0;v=v+16|0;v=Xn(f[o>>2]|0,f[o+4>>2]|0,f[v>>2]|0,f[v+4>>2]|0)|0;tn(d,p+r|0,v);v=Sa[f[(f[a>>2]|0)+36>>2]&255](a)|0;f[a+332>>2]=v;f[a+336>>2]=f[l>>2];f[a+324>>2]=k;Ym(B);a:do if(sh(d,B)|0){if((Za(a,f[s>>2]|0)|0)==-1){c=0;break}r=f[(f[q>>2]|0)+32>>2]|0;v=B+16|0;p=f[v>>2]|0;s=(f[B>>2]|0)+p|0;o=B+8|0;v=Xn(f[o>>2]|0,f[o+4>>2]|0,p|0,f[v+4>>2]|0)|0;tn(r,s,v);v=(f[(f[q>>2]|0)+32>>2]|0)+16|0;s=v;s=Ho(f[s>>2]|0,f[s+4>>2]|0,c|0,((c|0)<0)<<31>>31|0)|0;f[v>>2]=s;f[v+4>>2]=I;do if((f[w>>2]|0)!=(f[x>>2]|0)){v=f[y>>2]|0;if(((f[v+4>>2]|0)-(f[v>>2]|0)|0)<=0)break;c=0;do{f[t>>2]=c;f[A>>2]=f[t>>2];c=c+3|0;if(!(kf(a,A)|0)){c=0;break a}v=f[y>>2]|0}while((c|0)<((f[v+4>>2]|0)-(f[v>>2]|0)>>2|0))}while(0);hm(d);hm(a+280|0);g=f[y>>2]|0;r=f[g+28>>2]|0;i=f[g+24>>2]|0;q=i;if((r-i|0)>0){l=f[j>>2]|0;p=r-i>>2;n=g+12|0;o=0;do{do if(f[l+(o>>>5<<2)>>2]&1<<(o&31)|0){m=q+(o<<2)|0;c=f[m>>2]|0;if((c|0)<0)break;d=c+1|0;d=((d|0)%3|0|0)==0?c+-2|0:d;if((d|0)>=0){k=f[n>>2]|0;e=f[k+(d<<2)>>2]|0;d=e+1|0;b:do if((e|0)<0)d=c;else{d=((d|0)%3|0|0)==0?e+-2|0:d;if(!((d|0)>-1&(d|0)!=(c|0))){e=d;d=c;break}while(1){e=d+1|0;e=((e|0)%3|0|0)==0?d+-2|0:e;if((e|0)<0)break b;e=f[k+(e<<2)>>2]|0;j=e+1|0;if((e|0)<0)break b;e=((j|0)%3|0|0)==0?e+-2|0:j;if((e|0)>-1&(e|0)!=(c|0))d=e;else break}}while(0);if((e|0)==(c|0))break;else c=d}f[m>>2]=c}while(0);o=o+1|0}while((o|0)<(p|0))}e=f[w>>2]|0;v=f[x>>2]|0;c=v;if((e|0)==(v|0)){g=r;d=e}else{i=0;do{Pi(c+(i*116|0)+4|0,g)|0;c=f[x>>2]|0;d=f[c+(i*116|0)+104>>2]|0;e=f[c+(i*116|0)+108>>2]|0;if((d|0)!=(e|0))do{f[z>>2]=f[d>>2];f[A>>2]=f[z>>2];zg(c+(i*116|0)+4|0,A);d=d+4|0;c=f[x>>2]|0}while((d|0)!=(e|0));Gl(c+(i*116|0)+4|0,0,0);i=i+1|0;e=f[w>>2]|0;d=f[x>>2]|0;c=d;g=f[y>>2]|0}while(i>>>0<((e-d|0)/116|0)>>>0);i=f[g+24>>2]|0;g=f[g+28>>2]|0}i=g-i>>2;k=a+212|0;m=a+216|0;l=f[m>>2]|0;g=f[k>>2]|0;j=l-g>>2;do if(i>>>0>j>>>0){ui(k,i-j|0);c=f[x>>2]|0;e=f[w>>2]|0;d=c}else{if(i>>>0>=j>>>0)break;g=g+(i<<2)|0;if((l|0)==(g|0))break;f[m>>2]=l+(~((l+-4-g|0)>>>2)<<2)}while(0);if((e|0)!=(d|0)){m=0;while(1){k=(f[c+(m*116|0)+60>>2]|0)-(f[c+(m*116|0)+56>>2]|0)>>2;l=f[y>>2]|0;l=(f[l+28>>2]|0)-(f[l+24>>2]|0)>>2;k=(k|0)<(l|0)?l:k;l=c+(m*116|0)+88|0;j=c+(m*116|0)+92|0;i=f[j>>2]|0;c=f[l>>2]|0;g=i-c>>2;do if(k>>>0>g>>>0){ui(l,k-g|0);d=f[x>>2]|0;e=f[w>>2]|0}else{if(k>>>0>=g>>>0)break;c=c+(k<<2)|0;if((i|0)==(c|0))break;f[j>>2]=i+(~((i+-4-c|0)>>>2)<<2)}while(0);m=m+1|0;if(m>>>0>=((e-d|0)/116|0)>>>0)break;else c=d}}c=wb(a)|0}else c=0;while(0);fr(B+24|0)}fr(C+24|0)}}}}else c=0}else c=0}while(0)}C=c;u=D;return C|0}function cb(a){a=a|0;var c=0,d=0,e=0,g=0,i=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,v=0,w=0,x=0,y=0,z=0,A=0,B=0,C=0,D=0;D=u;u=u+128|0;A=D+112|0;k=D+108|0;m=D+104|0;o=D+100|0;s=D+96|0;p=D+92|0;r=D+88|0;C=D+40|0;B=D;t=D+84|0;z=D+80|0;l=a+148|0;f[l>>2]=0;g=a+164|0;if(f[g>>2]|0){d=a+160|0;c=f[d>>2]|0;if(c|0)do{y=c;c=f[c>>2]|0;ar(y)}while((c|0)!=0);f[d>>2]=0;c=f[a+156>>2]|0;if(c|0){d=a+152|0;e=0;do{f[(f[d>>2]|0)+(e<<2)>>2]=0;e=e+1|0}while((e|0)!=(c|0))}f[g>>2]=0}q=a+4|0;j=f[q>>2]|0;c=b[j+36>>0]|0;j=f[j+32>>2]|0;do if(((c&255)<<8&65535)<512){x=j+8|0;y=f[x>>2]|0;x=f[x+4>>2]|0;i=j+16|0;e=i;d=f[e>>2]|0;e=Ho(d|0,f[e+4>>2]|0,4,0)|0;g=I;if((x|0)<(g|0)|(x|0)==(g|0)&y>>>0>>0){C=0;u=D;return C|0}else{d=(f[j>>2]|0)+d|0;d=h[d>>0]|h[d+1>>0]<<8|h[d+2>>0]<<16|h[d+3>>0]<<24;f[k>>2]=d;y=i;f[y>>2]=e;f[y+4>>2]=g;break}}else if(yj(k,j)|0){j=f[q>>2]|0;d=f[k>>2]|0;c=b[j+36>>0]|0;j=f[j+32>>2]|0;break}else{C=0;u=D;return C|0}while(0);f[l>>2]=d;if(((c&255)<<8&65535)<512){x=j+8|0;y=f[x>>2]|0;x=f[x+4>>2]|0;i=j+16|0;e=i;d=f[e>>2]|0;e=Ho(d|0,f[e+4>>2]|0,4,0)|0;g=I;if((x|0)<(g|0)|(x|0)==(g|0)&y>>>0>>0)c=0;else{d=(f[j>>2]|0)+d|0;d=h[d>>0]|h[d+1>>0]<<8|h[d+2>>0]<<16|h[d+3>>0]<<24;f[m>>2]=d;f[i>>2]=e;f[i+4>>2]=g;i=j;v=18}}else if(yj(m,j)|0){i=f[q>>2]|0;d=f[m>>2]|0;c=b[i+36>>0]|0;i=f[i+32>>2]|0;v=18}else c=0;if((v|0)==18){l=a+172|0;f[l>>2]=d;if(((c&255)<<8&65535)<512){x=i+8|0;y=f[x>>2]|0;x=f[x+4>>2]|0;g=i+16|0;d=g;c=f[d>>2]|0;d=Ho(c|0,f[d+4>>2]|0,4,0)|0;e=I;if((x|0)<(e|0)|(x|0)==(e|0)&y>>>0>>0)c=0;else{v=(f[i>>2]|0)+c|0;f[o>>2]=h[v>>0]|h[v+1>>0]<<8|h[v+2>>0]<<16|h[v+3>>0]<<24;v=g;f[v>>2]=d;f[v+4>>2]=e;v=22}}else if(yj(o,i)|0)v=22;else c=0;do if((v|0)==22){c=f[a+24>>2]|0;e=a+28|0;d=f[e>>2]|0;if((d|0)!=(c|0))f[e>>2]=d+(~((d+-4-c|0)>>>2)<<2);c=ln(60)|0;Po(c);y=a+8|0;d=f[y>>2]|0;f[y>>2]=c;if(d){sj(d);ar(d);c=f[y>>2]|0;if(!c){c=0;break}}if(tl(c,f[o>>2]|0)|0){g=a+176|0;d=f[g>>2]|0;e=a+180|0;c=f[e>>2]|0;if((c|0)!=(d|0))f[e>>2]=c+(~((c+-4-d|0)>>>2)<<2);Sj(g,f[o>>2]|0);g=a+188|0;c=f[g>>2]|0;e=a+192|0;d=f[e>>2]|0;if((d|0)!=(c|0))f[e>>2]=d+(~((d+-4-c|0)>>>2)<<2);Sj(g,f[o>>2]|0);c=f[a+36>>2]|0;e=a+40|0;d=f[e>>2]|0;if((d|0)!=(c|0))f[e>>2]=d+(~(((d+-12-c|0)>>>0)/12|0)*12|0);c=f[a+48>>2]|0;e=a+52|0;d=f[e>>2]|0;if((d|0)!=(c|0))f[e>>2]=d+(~((d+-4-c|0)>>>2)<<2);f[a+68>>2]=0;c=f[a+76>>2]|0;e=a+80|0;d=f[e>>2]|0;if((d|0)!=(c|0))f[e>>2]=d+(~((d+-4-c|0)>>>2)<<2);f[a+60>>2]=0;f[a+100>>2]=-1;f[a+108>>2]=-1;f[a+104>>2]=-1;c=f[(f[q>>2]|0)+32>>2]|0;x=c+8|0;w=f[x+4>>2]|0;g=c+16|0;e=g;d=f[e>>2]|0;e=f[e+4>>2]|0;if((w|0)>(e|0)|((w|0)==(e|0)?(f[x>>2]|0)>>>0>d>>>0:0)?(n=b[(f[c>>2]|0)+d>>0]|0,w=Ho(d|0,e|0,1,0)|0,x=g,f[x>>2]=w,f[x+4>>2]=I,n<<24>>24>=0):0){x=a+228|0;i=f[x>>2]|0;w=a+232|0;c=f[w>>2]|0;if((c|0)!=(i|0))do{f[w>>2]=c+-116;d=f[c+-12>>2]|0;if(d|0){g=c+-8|0;e=f[g>>2]|0;if((e|0)!=(d|0))f[g>>2]=e+(~((e+-4-d|0)>>>2)<<2);ar(d)}d=f[c+-28>>2]|0;if(d|0){g=c+-24|0;e=f[g>>2]|0;if((e|0)!=(d|0))f[g>>2]=e+(~((e+-4-d|0)>>>2)<<2);ar(d)}d=f[c+-40>>2]|0;if(d|0){g=c+-36|0;e=f[g>>2]|0;if((e|0)!=(d|0))f[g>>2]=e+(~((e+-4-d|0)>>>2)<<2);ar(d)}Bj(c+-112|0);c=f[w>>2]|0}while((c|0)!=(i|0));k=n<<24>>24;_h(x,k);n=f[q>>2]|0;c=f[n+32>>2]|0;if(((h[n+36>>0]|0)<<8&65535)<512){m=c+8|0;n=f[m>>2]|0;m=f[m+4>>2]|0;i=c+16|0;e=i;d=f[e>>2]|0;e=Ho(d|0,f[e+4>>2]|0,4,0)|0;g=I;if((m|0)<(g|0)|(m|0)==(g|0)&n>>>0>>0)c=0;else{c=(f[c>>2]|0)+d|0;c=h[c>>0]|h[c+1>>0]<<8|h[c+2>>0]<<16|h[c+3>>0]<<24;f[s>>2]=c;v=i;f[v>>2]=e;f[v+4>>2]=g;v=58}}else if(yj(s,c)|0){c=f[s>>2]|0;v=58}else c=0;if((v|0)==58)if((f[o>>2]|0)>>>0>>0)c=0;else{o=f[q>>2]|0;c=f[o+32>>2]|0;do if(((h[o+36>>0]|0)<<8&65535)<512){n=c+8|0;o=f[n>>2]|0;n=f[n+4>>2]|0;i=c+16|0;e=i;d=f[e>>2]|0;e=Ho(d|0,f[e+4>>2]|0,4,0)|0;g=I;if((n|0)<(g|0)|(n|0)==(g|0)&o>>>0>>0){c=0;break}c=(f[c>>2]|0)+d|0;c=h[c>>0]|h[c+1>>0]<<8|h[c+2>>0]<<16|h[c+3>>0]<<24;f[p>>2]=c;v=i;f[v>>2]=e;f[v+4>>2]=g;v=64}else{if(!(yj(p,c)|0)){c=0;break}c=f[p>>2]|0;v=64}while(0);if((v|0)==64){j=a+136|0;p=c+(f[l>>2]|0)|0;b[A>>0]=1;Yg(j,p,A);p=f[q>>2]|0;c=f[p+32>>2]|0;do if(((h[p+36>>0]|0)<<8&65535)>=512)if(yj(r,c)|0)v=68;else c=0;else{o=c+8|0;p=f[o>>2]|0;o=f[o+4>>2]|0;i=c+16|0;e=i;d=f[e>>2]|0;e=Ho(d|0,f[e+4>>2]|0,4,0)|0;g=I;if((o|0)<(g|0)|(o|0)==(g|0)&p>>>0>>0){c=0;break}v=(f[c>>2]|0)+d|0;f[r>>2]=h[v>>0]|h[v+1>>0]<<8|h[v+2>>0]<<16|h[v+3>>0]<<24;v=i;f[v>>2]=e;f[v+4>>2]=g;v=68}while(0);if((v|0)==68){Ym(C);n=f[(f[q>>2]|0)+32>>2]|0;p=n+16|0;o=f[p>>2]|0;c=f[r>>2]|0;v=(f[n>>2]|0)+o+c|0;r=n+8|0;r=Xn(f[r>>2]|0,f[r+4>>2]|0,o|0,f[p+4>>2]|0)|0;c=Xn(r|0,I|0,c|0,0)|0;tn(C,v,c);c=Sb(a,C)|0;if((c|0)==-1)c=0;else{d=a+240|0;f[a+328>>2]=a;r=(Sa[f[(f[a>>2]|0)+32>>2]&255](a)|0)+32|0;r=f[r>>2]|0;p=f[r>>2]|0;r=f[r+16>>2]|0;v=(Sa[f[(f[a>>2]|0)+32>>2]&255](a)|0)+32|0;v=f[v>>2]|0;o=v+8|0;v=v+16|0;v=Xn(f[o>>2]|0,f[o+4>>2]|0,f[v>>2]|0,f[v+4>>2]|0)|0;tn(d,p+r|0,v);v=Sa[f[(f[a>>2]|0)+36>>2]&255](a)|0;f[a+332>>2]=v;f[a+336>>2]=f[l>>2];f[a+324>>2]=k;Ym(B);a:do if(Gc(d,B)|0){if((Ya(a,f[s>>2]|0)|0)==-1){c=0;break}r=f[(f[q>>2]|0)+32>>2]|0;v=B+16|0;p=f[v>>2]|0;s=(f[B>>2]|0)+p|0;o=B+8|0;v=Xn(f[o>>2]|0,f[o+4>>2]|0,p|0,f[v+4>>2]|0)|0;tn(r,s,v);v=(f[(f[q>>2]|0)+32>>2]|0)+16|0;s=v;s=Ho(f[s>>2]|0,f[s+4>>2]|0,c|0,((c|0)<0)<<31>>31|0)|0;f[v>>2]=s;f[v+4>>2]=I;do if((f[w>>2]|0)!=(f[x>>2]|0)){v=f[y>>2]|0;if(((f[v+4>>2]|0)-(f[v>>2]|0)|0)<=0)break;c=0;do{f[t>>2]=c;f[A>>2]=f[t>>2];c=c+3|0;if(!(kf(a,A)|0)){c=0;break a}v=f[y>>2]|0}while((c|0)<((f[v+4>>2]|0)-(f[v>>2]|0)>>2|0))}while(0);hm(d);hm(a+280|0);g=f[y>>2]|0;r=f[g+28>>2]|0;i=f[g+24>>2]|0;q=i;if((r-i|0)>0){l=f[j>>2]|0;p=r-i>>2;n=g+12|0;o=0;do{do if(f[l+(o>>>5<<2)>>2]&1<<(o&31)|0){m=q+(o<<2)|0;c=f[m>>2]|0;if((c|0)<0)break;d=c+1|0;d=((d|0)%3|0|0)==0?c+-2|0:d;if((d|0)>=0){k=f[n>>2]|0;e=f[k+(d<<2)>>2]|0;d=e+1|0;b:do if((e|0)<0)d=c;else{d=((d|0)%3|0|0)==0?e+-2|0:d;if(!((d|0)>-1&(d|0)!=(c|0))){e=d;d=c;break}while(1){e=d+1|0;e=((e|0)%3|0|0)==0?d+-2|0:e;if((e|0)<0)break b;e=f[k+(e<<2)>>2]|0;j=e+1|0;if((e|0)<0)break b;e=((j|0)%3|0|0)==0?e+-2|0:j;if((e|0)>-1&(e|0)!=(c|0))d=e;else break}}while(0);if((e|0)==(c|0))break;else c=d}f[m>>2]=c}while(0);o=o+1|0}while((o|0)<(p|0))}e=f[w>>2]|0;v=f[x>>2]|0;c=v;if((e|0)==(v|0)){g=r;d=e}else{i=0;do{Pi(c+(i*116|0)+4|0,g)|0;c=f[x>>2]|0;d=f[c+(i*116|0)+104>>2]|0;e=f[c+(i*116|0)+108>>2]|0;if((d|0)!=(e|0))do{f[z>>2]=f[d>>2];f[A>>2]=f[z>>2];zg(c+(i*116|0)+4|0,A);d=d+4|0;c=f[x>>2]|0}while((d|0)!=(e|0));Gl(c+(i*116|0)+4|0,0,0);i=i+1|0;e=f[w>>2]|0;d=f[x>>2]|0;c=d;g=f[y>>2]|0}while(i>>>0<((e-d|0)/116|0)>>>0);i=f[g+24>>2]|0;g=f[g+28>>2]|0}i=g-i>>2;k=a+212|0;m=a+216|0;l=f[m>>2]|0;g=f[k>>2]|0;j=l-g>>2;do if(i>>>0>j>>>0){ui(k,i-j|0);c=f[x>>2]|0;e=f[w>>2]|0;d=c}else{if(i>>>0>=j>>>0)break;g=g+(i<<2)|0;if((l|0)==(g|0))break;f[m>>2]=l+(~((l+-4-g|0)>>>2)<<2)}while(0);if((e|0)!=(d|0)){m=0;while(1){k=(f[c+(m*116|0)+60>>2]|0)-(f[c+(m*116|0)+56>>2]|0)>>2;l=f[y>>2]|0;l=(f[l+28>>2]|0)-(f[l+24>>2]|0)>>2;k=(k|0)<(l|0)?l:k;l=c+(m*116|0)+88|0;j=c+(m*116|0)+92|0;i=f[j>>2]|0;c=f[l>>2]|0;g=i-c>>2;do if(k>>>0>g>>>0){ui(l,k-g|0);d=f[x>>2]|0;e=f[w>>2]|0}else{if(k>>>0>=g>>>0)break;c=c+(k<<2)|0;if((i|0)==(c|0))break;f[j>>2]=i+(~((i+-4-c|0)>>>2)<<2)}while(0);m=m+1|0;if(m>>>0>=((e-d|0)/116|0)>>>0)break;else c=d}}c=wb(a)|0}else c=0;while(0);fr(B+24|0)}fr(C+24|0)}}}}else c=0}else c=0}while(0)}C=c;u=D;return C|0}function db(a){a=a|0;var c=0,d=0,e=0,g=0,i=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,v=0,w=0,x=0,y=0,z=0,A=0,B=0,C=0,D=0;D=u;u=u+128|0;A=D+112|0;k=D+108|0;m=D+104|0;o=D+100|0;s=D+96|0;p=D+92|0;r=D+88|0;C=D+40|0;B=D;t=D+84|0;z=D+80|0;l=a+148|0;f[l>>2]=0;g=a+164|0;if(f[g>>2]|0){d=a+160|0;c=f[d>>2]|0;if(c|0)do{y=c;c=f[c>>2]|0;ar(y)}while((c|0)!=0);f[d>>2]=0;c=f[a+156>>2]|0;if(c|0){d=a+152|0;e=0;do{f[(f[d>>2]|0)+(e<<2)>>2]=0;e=e+1|0}while((e|0)!=(c|0))}f[g>>2]=0}q=a+4|0;j=f[q>>2]|0;c=b[j+36>>0]|0;j=f[j+32>>2]|0;do if(((c&255)<<8&65535)<512){x=j+8|0;y=f[x>>2]|0;x=f[x+4>>2]|0;i=j+16|0;e=i;d=f[e>>2]|0;e=Ho(d|0,f[e+4>>2]|0,4,0)|0;g=I;if((x|0)<(g|0)|(x|0)==(g|0)&y>>>0>>0){C=0;u=D;return C|0}else{d=(f[j>>2]|0)+d|0;d=h[d>>0]|h[d+1>>0]<<8|h[d+2>>0]<<16|h[d+3>>0]<<24;f[k>>2]=d;y=i;f[y>>2]=e;f[y+4>>2]=g;break}}else if(yj(k,j)|0){j=f[q>>2]|0;d=f[k>>2]|0;c=b[j+36>>0]|0;j=f[j+32>>2]|0;break}else{C=0;u=D;return C|0}while(0);f[l>>2]=d;if(((c&255)<<8&65535)<512){x=j+8|0;y=f[x>>2]|0;x=f[x+4>>2]|0;i=j+16|0;e=i;d=f[e>>2]|0;e=Ho(d|0,f[e+4>>2]|0,4,0)|0;g=I;if((x|0)<(g|0)|(x|0)==(g|0)&y>>>0>>0)c=0;else{d=(f[j>>2]|0)+d|0;d=h[d>>0]|h[d+1>>0]<<8|h[d+2>>0]<<16|h[d+3>>0]<<24;f[m>>2]=d;f[i>>2]=e;f[i+4>>2]=g;i=j;v=18}}else if(yj(m,j)|0){i=f[q>>2]|0;d=f[m>>2]|0;c=b[i+36>>0]|0;i=f[i+32>>2]|0;v=18}else c=0;if((v|0)==18){l=a+172|0;f[l>>2]=d;if(((c&255)<<8&65535)<512){x=i+8|0;y=f[x>>2]|0;x=f[x+4>>2]|0;g=i+16|0;d=g;c=f[d>>2]|0;d=Ho(c|0,f[d+4>>2]|0,4,0)|0;e=I;if((x|0)<(e|0)|(x|0)==(e|0)&y>>>0>>0)c=0;else{v=(f[i>>2]|0)+c|0;f[o>>2]=h[v>>0]|h[v+1>>0]<<8|h[v+2>>0]<<16|h[v+3>>0]<<24;v=g;f[v>>2]=d;f[v+4>>2]=e;v=22}}else if(yj(o,i)|0)v=22;else c=0;do if((v|0)==22){c=f[a+24>>2]|0;e=a+28|0;d=f[e>>2]|0;if((d|0)!=(c|0))f[e>>2]=d+(~((d+-4-c|0)>>>2)<<2);c=ln(60)|0;Po(c);y=a+8|0;d=f[y>>2]|0;f[y>>2]=c;if(d){sj(d);ar(d);c=f[y>>2]|0;if(!c){c=0;break}}if(tl(c,f[o>>2]|0)|0){g=a+176|0;d=f[g>>2]|0;e=a+180|0;c=f[e>>2]|0;if((c|0)!=(d|0))f[e>>2]=c+(~((c+-4-d|0)>>>2)<<2);Sj(g,f[o>>2]|0);g=a+188|0;c=f[g>>2]|0;e=a+192|0;d=f[e>>2]|0;if((d|0)!=(c|0))f[e>>2]=d+(~((d+-4-c|0)>>>2)<<2);Sj(g,f[o>>2]|0);c=f[a+36>>2]|0;e=a+40|0;d=f[e>>2]|0;if((d|0)!=(c|0))f[e>>2]=d+(~(((d+-12-c|0)>>>0)/12|0)*12|0);c=f[a+48>>2]|0;e=a+52|0;d=f[e>>2]|0;if((d|0)!=(c|0))f[e>>2]=d+(~((d+-4-c|0)>>>2)<<2);f[a+68>>2]=0;c=f[a+76>>2]|0;e=a+80|0;d=f[e>>2]|0;if((d|0)!=(c|0))f[e>>2]=d+(~((d+-4-c|0)>>>2)<<2);f[a+60>>2]=0;f[a+100>>2]=-1;f[a+108>>2]=-1;f[a+104>>2]=-1;c=f[(f[q>>2]|0)+32>>2]|0;x=c+8|0;w=f[x+4>>2]|0;g=c+16|0;e=g;d=f[e>>2]|0;e=f[e+4>>2]|0;if((w|0)>(e|0)|((w|0)==(e|0)?(f[x>>2]|0)>>>0>d>>>0:0)?(n=b[(f[c>>2]|0)+d>>0]|0,w=Ho(d|0,e|0,1,0)|0,x=g,f[x>>2]=w,f[x+4>>2]=I,n<<24>>24>=0):0){x=a+228|0;i=f[x>>2]|0;w=a+232|0;c=f[w>>2]|0;if((c|0)!=(i|0))do{f[w>>2]=c+-116;d=f[c+-12>>2]|0;if(d|0){g=c+-8|0;e=f[g>>2]|0;if((e|0)!=(d|0))f[g>>2]=e+(~((e+-4-d|0)>>>2)<<2);ar(d)}d=f[c+-28>>2]|0;if(d|0){g=c+-24|0;e=f[g>>2]|0;if((e|0)!=(d|0))f[g>>2]=e+(~((e+-4-d|0)>>>2)<<2);ar(d)}d=f[c+-40>>2]|0;if(d|0){g=c+-36|0;e=f[g>>2]|0;if((e|0)!=(d|0))f[g>>2]=e+(~((e+-4-d|0)>>>2)<<2);ar(d)}Bj(c+-112|0);c=f[w>>2]|0}while((c|0)!=(i|0));k=n<<24>>24;_h(x,k);n=f[q>>2]|0;c=f[n+32>>2]|0;if(((h[n+36>>0]|0)<<8&65535)<512){m=c+8|0;n=f[m>>2]|0;m=f[m+4>>2]|0;i=c+16|0;e=i;d=f[e>>2]|0;e=Ho(d|0,f[e+4>>2]|0,4,0)|0;g=I;if((m|0)<(g|0)|(m|0)==(g|0)&n>>>0>>0)c=0;else{c=(f[c>>2]|0)+d|0;c=h[c>>0]|h[c+1>>0]<<8|h[c+2>>0]<<16|h[c+3>>0]<<24;f[s>>2]=c;v=i;f[v>>2]=e;f[v+4>>2]=g;v=58}}else if(yj(s,c)|0){c=f[s>>2]|0;v=58}else c=0;if((v|0)==58)if((f[o>>2]|0)>>>0>>0)c=0;else{o=f[q>>2]|0;c=f[o+32>>2]|0;do if(((h[o+36>>0]|0)<<8&65535)<512){n=c+8|0;o=f[n>>2]|0;n=f[n+4>>2]|0;i=c+16|0;e=i;d=f[e>>2]|0;e=Ho(d|0,f[e+4>>2]|0,4,0)|0;g=I;if((n|0)<(g|0)|(n|0)==(g|0)&o>>>0>>0){c=0;break}c=(f[c>>2]|0)+d|0;c=h[c>>0]|h[c+1>>0]<<8|h[c+2>>0]<<16|h[c+3>>0]<<24;f[p>>2]=c;v=i;f[v>>2]=e;f[v+4>>2]=g;v=64}else{if(!(yj(p,c)|0)){c=0;break}c=f[p>>2]|0;v=64}while(0);if((v|0)==64){j=a+136|0;p=c+(f[l>>2]|0)|0;b[A>>0]=1;Yg(j,p,A);p=f[q>>2]|0;c=f[p+32>>2]|0;do if(((h[p+36>>0]|0)<<8&65535)>=512)if(yj(r,c)|0)v=68;else c=0;else{o=c+8|0;p=f[o>>2]|0;o=f[o+4>>2]|0;i=c+16|0;e=i;d=f[e>>2]|0;e=Ho(d|0,f[e+4>>2]|0,4,0)|0;g=I;if((o|0)<(g|0)|(o|0)==(g|0)&p>>>0>>0){c=0;break}v=(f[c>>2]|0)+d|0;f[r>>2]=h[v>>0]|h[v+1>>0]<<8|h[v+2>>0]<<16|h[v+3>>0]<<24;v=i;f[v>>2]=e;f[v+4>>2]=g;v=68}while(0);if((v|0)==68){Ym(C);n=f[(f[q>>2]|0)+32>>2]|0;p=n+16|0;o=f[p>>2]|0;c=f[r>>2]|0;v=(f[n>>2]|0)+o+c|0;r=n+8|0;r=Xn(f[r>>2]|0,f[r+4>>2]|0,o|0,f[p+4>>2]|0)|0;c=Xn(r|0,I|0,c|0,0)|0;tn(C,v,c);c=Sb(a,C)|0;if((c|0)==-1)c=0;else{d=a+240|0;f[a+328>>2]=a;r=(Sa[f[(f[a>>2]|0)+32>>2]&255](a)|0)+32|0;r=f[r>>2]|0;p=f[r>>2]|0;r=f[r+16>>2]|0;v=(Sa[f[(f[a>>2]|0)+32>>2]&255](a)|0)+32|0;v=f[v>>2]|0;o=v+8|0;v=v+16|0;v=Xn(f[o>>2]|0,f[o+4>>2]|0,f[v>>2]|0,f[v+4>>2]|0)|0;tn(d,p+r|0,v);f[a+324>>2]=k;Ym(B);a:do if(Yd(d,B)|0){if((_a(a,f[s>>2]|0)|0)==-1){c=0;break}r=f[(f[q>>2]|0)+32>>2]|0;v=B+16|0;p=f[v>>2]|0;s=(f[B>>2]|0)+p|0;o=B+8|0;v=Xn(f[o>>2]|0,f[o+4>>2]|0,p|0,f[v+4>>2]|0)|0;tn(r,s,v);v=(f[(f[q>>2]|0)+32>>2]|0)+16|0;s=v;s=Ho(f[s>>2]|0,f[s+4>>2]|0,c|0,((c|0)<0)<<31>>31|0)|0;f[v>>2]=s;f[v+4>>2]=I;do if((f[w>>2]|0)!=(f[x>>2]|0)){v=f[y>>2]|0;if(((f[v+4>>2]|0)-(f[v>>2]|0)|0)<=0)break;c=0;do{f[t>>2]=c;f[A>>2]=f[t>>2];c=c+3|0;if(!(kf(a,A)|0)){c=0;break a}v=f[y>>2]|0}while((c|0)<((f[v+4>>2]|0)-(f[v>>2]|0)>>2|0))}while(0);hm(d);hm(a+280|0);g=f[y>>2]|0;r=f[g+28>>2]|0;i=f[g+24>>2]|0;q=i;if((r-i|0)>0){l=f[j>>2]|0;p=r-i>>2;n=g+12|0;o=0;do{do if(f[l+(o>>>5<<2)>>2]&1<<(o&31)|0){m=q+(o<<2)|0;c=f[m>>2]|0;if((c|0)<0)break;d=c+1|0;d=((d|0)%3|0|0)==0?c+-2|0:d;if((d|0)>=0){k=f[n>>2]|0;e=f[k+(d<<2)>>2]|0;d=e+1|0;b:do if((e|0)<0)d=c;else{d=((d|0)%3|0|0)==0?e+-2|0:d;if(!((d|0)>-1&(d|0)!=(c|0))){e=d;d=c;break}while(1){e=d+1|0;e=((e|0)%3|0|0)==0?d+-2|0:e;if((e|0)<0)break b;e=f[k+(e<<2)>>2]|0;j=e+1|0;if((e|0)<0)break b;e=((j|0)%3|0|0)==0?e+-2|0:j;if((e|0)>-1&(e|0)!=(c|0))d=e;else break}}while(0);if((e|0)==(c|0))break;else c=d}f[m>>2]=c}while(0);o=o+1|0}while((o|0)<(p|0))}e=f[w>>2]|0;v=f[x>>2]|0;c=v;if((e|0)==(v|0)){g=r;d=e}else{i=0;do{Pi(c+(i*116|0)+4|0,g)|0;c=f[x>>2]|0;d=f[c+(i*116|0)+104>>2]|0;e=f[c+(i*116|0)+108>>2]|0;if((d|0)!=(e|0))do{f[z>>2]=f[d>>2];f[A>>2]=f[z>>2];zg(c+(i*116|0)+4|0,A);d=d+4|0;c=f[x>>2]|0}while((d|0)!=(e|0));Gl(c+(i*116|0)+4|0,0,0);i=i+1|0;e=f[w>>2]|0;d=f[x>>2]|0;c=d;g=f[y>>2]|0}while(i>>>0<((e-d|0)/116|0)>>>0);i=f[g+24>>2]|0;g=f[g+28>>2]|0}i=g-i>>2;k=a+212|0;m=a+216|0;l=f[m>>2]|0;g=f[k>>2]|0;j=l-g>>2;do if(i>>>0>j>>>0){ui(k,i-j|0);c=f[x>>2]|0;e=f[w>>2]|0;d=c}else{if(i>>>0>=j>>>0)break;g=g+(i<<2)|0;if((l|0)==(g|0))break;f[m>>2]=l+(~((l+-4-g|0)>>>2)<<2)}while(0);if((e|0)!=(d|0)){m=0;while(1){k=(f[c+(m*116|0)+60>>2]|0)-(f[c+(m*116|0)+56>>2]|0)>>2;l=f[y>>2]|0;l=(f[l+28>>2]|0)-(f[l+24>>2]|0)>>2;k=(k|0)<(l|0)?l:k;l=c+(m*116|0)+88|0;j=c+(m*116|0)+92|0;i=f[j>>2]|0;c=f[l>>2]|0;g=i-c>>2;do if(k>>>0>g>>>0){ui(l,k-g|0);d=f[x>>2]|0;e=f[w>>2]|0}else{if(k>>>0>=g>>>0)break;c=c+(k<<2)|0;if((i|0)==(c|0))break;f[j>>2]=i+(~((i+-4-c|0)>>>2)<<2)}while(0);m=m+1|0;if(m>>>0>=((e-d|0)/116|0)>>>0)break;else c=d}}c=wb(a)|0}else c=0;while(0);fr(B+24|0)}fr(C+24|0)}}}}else c=0}else c=0}while(0)}C=c;u=D;return C|0}function eb(a,c,d){a=a|0;c=c|0;d=d|0;var e=La,g=0,i=0,j=0;if(!d){d=0;return d|0}switch(f[a+28>>2]|0){case 9:{c=f[c>>2]|0;switch(b[a+24>>0]|0){case 1:{g=a+48|0;i=f[g>>2]|0;g=f[g+4>>2]|0;j=a+40|0;a=(Ho(kn(f[j>>2]|0,f[j+4>>2]|0,c|0,((c|0)<0)<<31>>31|0)|0,I|0,i|0,g|0)|0)+(f[f[a>>2]>>2]|0)|0;b[s>>0]=b[a>>0];b[s+1>>0]=b[a+1>>0];b[s+2>>0]=b[a+2>>0];b[s+3>>0]=b[a+3>>0];e=$(n[s>>2]);break}case 2:{j=a+48|0;i=f[j>>2]|0;j=f[j+4>>2]|0;g=a+40|0;j=(Ho(kn(f[g>>2]|0,f[g+4>>2]|0,c|0,((c|0)<0)<<31>>31|0)|0,I|0,i|0,j|0)|0)+(f[f[a>>2]>>2]|0)|0;e=(f[s>>2]=h[j>>0]|h[j+1>>0]<<8|h[j+2>>0]<<16|h[j+3>>0]<<24,$(n[s>>2]));break}case 3:{j=a+48|0;i=f[j>>2]|0;j=f[j+4>>2]|0;g=a+40|0;j=(Ho(kn(f[g>>2]|0,f[g+4>>2]|0,c|0,((c|0)<0)<<31>>31|0)|0,I|0,i|0,j|0)|0)+(f[f[a>>2]>>2]|0)|0;b[s>>0]=b[j>>0];b[s+1>>0]=b[j+1>>0];b[s+2>>0]=b[j+2>>0];b[s+3>>0]=b[j+3>>0];e=$(n[s>>2]);break}case 4:{j=a+48|0;i=f[j>>2]|0;j=f[j+4>>2]|0;g=a+40|0;j=(Ho(kn(f[g>>2]|0,f[g+4>>2]|0,c|0,((c|0)<0)<<31>>31|0)|0,I|0,i|0,j|0)|0)+(f[f[a>>2]>>2]|0)|0;b[s>>0]=b[j>>0];b[s+1>>0]=b[j+1>>0];b[s+2>>0]=b[j+2>>0];b[s+3>>0]=b[j+3>>0];e=$(n[s>>2]);break}default:{j=0;return j|0}}i=+K(+e)>=1.0?(+e>0.0?~~+Y(+J(+e/4294967296.0),4294967295.0)>>>0:~~+W((+e-+(~~+e>>>0))/4294967296.0)>>>0):0;j=d;f[j>>2]=~~+e>>>0;f[j+4>>2]=i;j=1;return j|0}case 2:{c=f[c>>2]|0;switch(b[a+24>>0]|0){case 1:{j=a+48|0;i=f[j>>2]|0;j=f[j+4>>2]|0;g=a+40|0;c=Ho(kn(f[g>>2]|0,f[g+4>>2]|0,c|0,((c|0)<0)<<31>>31|0)|0,I|0,i|0,j|0)|0;c=h[(f[f[a>>2]>>2]|0)+c>>0]|0;a=0;break}case 2:{j=a+48|0;i=f[j>>2]|0;j=f[j+4>>2]|0;g=a+40|0;c=(Ho(kn(f[g>>2]|0,f[g+4>>2]|0,c|0,((c|0)<0)<<31>>31|0)|0,I|0,i|0,j|0)|0)+(f[f[a>>2]>>2]|0)|0;c=(h[c>>0]|h[c+1>>0]<<8)&255;a=0;break}case 3:{j=a+48|0;i=f[j>>2]|0;j=f[j+4>>2]|0;g=a+40|0;c=Ho(kn(f[g>>2]|0,f[g+4>>2]|0,c|0,((c|0)<0)<<31>>31|0)|0,I|0,i|0,j|0)|0;c=h[(f[f[a>>2]>>2]|0)+c>>0]|0;a=0;break}case 4:{j=a+48|0;i=f[j>>2]|0;j=f[j+4>>2]|0;g=a+40|0;c=(Ho(kn(f[g>>2]|0,f[g+4>>2]|0,c|0,((c|0)<0)<<31>>31|0)|0,I|0,i|0,j|0)|0)+(f[f[a>>2]>>2]|0)|0;c=(h[c>>0]|h[c+1>>0]<<8|h[c+2>>0]<<16|h[c+3>>0]<<24)&255;a=0;break}default:{j=0;return j|0}}j=d;f[j>>2]=c;f[j+4>>2]=a;j=1;return j|0}case 1:{c=f[c>>2]|0;switch(b[a+24>>0]|0){case 1:{j=a+48|0;i=f[j>>2]|0;j=f[j+4>>2]|0;g=a+40|0;c=Ho(kn(f[g>>2]|0,f[g+4>>2]|0,c|0,((c|0)<0)<<31>>31|0)|0,I|0,i|0,j|0)|0;c=b[(f[f[a>>2]>>2]|0)+c>>0]|0;break}case 2:{j=a+48|0;i=f[j>>2]|0;j=f[j+4>>2]|0;g=a+40|0;c=(Ho(kn(f[g>>2]|0,f[g+4>>2]|0,c|0,((c|0)<0)<<31>>31|0)|0,I|0,i|0,j|0)|0)+(f[f[a>>2]>>2]|0)|0;c=(h[c>>0]|h[c+1>>0]<<8)&255;break}case 3:{j=a+48|0;i=f[j>>2]|0;j=f[j+4>>2]|0;g=a+40|0;c=Ho(kn(f[g>>2]|0,f[g+4>>2]|0,c|0,((c|0)<0)<<31>>31|0)|0,I|0,i|0,j|0)|0;c=b[(f[f[a>>2]>>2]|0)+c>>0]|0;break}case 4:{j=a+48|0;i=f[j>>2]|0;j=f[j+4>>2]|0;g=a+40|0;c=(Ho(kn(f[g>>2]|0,f[g+4>>2]|0,c|0,((c|0)<0)<<31>>31|0)|0,I|0,i|0,j|0)|0)+(f[f[a>>2]>>2]|0)|0;c=(h[c>>0]|h[c+1>>0]<<8|h[c+2>>0]<<16|h[c+3>>0]<<24)&255;break}default:{j=0;return j|0}}i=c<<24>>24;j=d;f[j>>2]=i;f[j+4>>2]=((i|0)<0)<<31>>31;j=1;return j|0}case 4:{c=f[c>>2]|0;switch(b[a+24>>0]|0){case 1:{j=a+48|0;i=f[j>>2]|0;j=f[j+4>>2]|0;g=a+40|0;c=(Ho(kn(f[g>>2]|0,f[g+4>>2]|0,c|0,((c|0)<0)<<31>>31|0)|0,I|0,i|0,j|0)|0)+(f[f[a>>2]>>2]|0)|0;c=(h[c>>0]|h[c+1>>0]<<8)&65535;a=0;break}case 2:{j=a+48|0;i=f[j>>2]|0;j=f[j+4>>2]|0;g=a+40|0;c=(Ho(kn(f[g>>2]|0,f[g+4>>2]|0,c|0,((c|0)<0)<<31>>31|0)|0,I|0,i|0,j|0)|0)+(f[f[a>>2]>>2]|0)|0;c=(h[c>>0]|h[c+1>>0]<<8|h[c+2>>0]<<16|h[c+3>>0]<<24)&65535;a=0;break}case 3:{j=a+48|0;i=f[j>>2]|0;j=f[j+4>>2]|0;g=a+40|0;c=(Ho(kn(f[g>>2]|0,f[g+4>>2]|0,c|0,((c|0)<0)<<31>>31|0)|0,I|0,i|0,j|0)|0)+(f[f[a>>2]>>2]|0)|0;c=(h[c>>0]|h[c+1>>0]<<8)&65535;a=0;break}case 4:{j=a+48|0;i=f[j>>2]|0;j=f[j+4>>2]|0;g=a+40|0;c=(Ho(kn(f[g>>2]|0,f[g+4>>2]|0,c|0,((c|0)<0)<<31>>31|0)|0,I|0,i|0,j|0)|0)+(f[f[a>>2]>>2]|0)|0;c=(h[c>>0]|h[c+1>>0]<<8|h[c+2>>0]<<16|h[c+3>>0]<<24)&65535;a=0;break}default:{j=0;return j|0}}j=d;f[j>>2]=c;f[j+4>>2]=a;j=1;return j|0}case 3:{c=f[c>>2]|0;switch(b[a+24>>0]|0){case 1:{j=a+48|0;i=f[j>>2]|0;j=f[j+4>>2]|0;g=a+40|0;a=(Ho(kn(f[g>>2]|0,f[g+4>>2]|0,c|0,((c|0)<0)<<31>>31|0)|0,I|0,i|0,j|0)|0)+(f[f[a>>2]>>2]|0)|0;a=(h[a>>0]|h[a+1>>0]<<8)<<16>>16;c=a;a=((a|0)<0)<<31>>31;break}case 2:{j=a+48|0;i=f[j>>2]|0;j=f[j+4>>2]|0;g=a+40|0;a=(Ho(kn(f[g>>2]|0,f[g+4>>2]|0,c|0,((c|0)<0)<<31>>31|0)|0,I|0,i|0,j|0)|0)+(f[f[a>>2]>>2]|0)|0;a=((h[a>>0]|h[a+1>>0]<<8|h[a+2>>0]<<16|h[a+3>>0]<<24)&65535)<<16>>16;c=a;a=((a|0)<0)<<31>>31;break}case 3:{j=a+48|0;i=f[j>>2]|0;j=f[j+4>>2]|0;g=a+40|0;a=(Ho(kn(f[g>>2]|0,f[g+4>>2]|0,c|0,((c|0)<0)<<31>>31|0)|0,I|0,i|0,j|0)|0)+(f[f[a>>2]>>2]|0)|0;a=(h[a>>0]|h[a+1>>0]<<8)<<16>>16;c=a;a=((a|0)<0)<<31>>31;break}case 4:{j=a+48|0;i=f[j>>2]|0;j=f[j+4>>2]|0;g=a+40|0;c=(Ho(kn(f[g>>2]|0,f[g+4>>2]|0,c|0,((c|0)<0)<<31>>31|0)|0,I|0,i|0,j|0)|0)+(f[f[a>>2]>>2]|0)|0;a=c;c=c+4|0;c=An(On(h[a>>0]|h[a+1>>0]<<8|h[a+2>>0]<<16|h[a+3>>0]<<24|0,h[c>>0]|h[c+1>>0]<<8|h[c+2>>0]<<16|h[c+3>>0]<<24|0,48)|0,I|0,48)|0;a=I;break}default:{j=0;return j|0}}j=d;f[j>>2]=c;f[j+4>>2]=a;j=1;return j|0}case 6:{c=f[c>>2]|0;switch(b[a+24>>0]|0){case 1:{j=a+48|0;i=f[j>>2]|0;j=f[j+4>>2]|0;g=a+40|0;c=(Ho(kn(f[g>>2]|0,f[g+4>>2]|0,c|0,((c|0)<0)<<31>>31|0)|0,I|0,i|0,j|0)|0)+(f[f[a>>2]>>2]|0)|0;c=h[c>>0]|h[c+1>>0]<<8|h[c+2>>0]<<16|h[c+3>>0]<<24;a=0;break}case 2:{j=a+48|0;i=f[j>>2]|0;j=f[j+4>>2]|0;g=a+40|0;c=(Ho(kn(f[g>>2]|0,f[g+4>>2]|0,c|0,((c|0)<0)<<31>>31|0)|0,I|0,i|0,j|0)|0)+(f[f[a>>2]>>2]|0)|0;c=h[c>>0]|h[c+1>>0]<<8|h[c+2>>0]<<16|h[c+3>>0]<<24;a=0;break}case 3:{j=a+48|0;i=f[j>>2]|0;j=f[j+4>>2]|0;g=a+40|0;c=(Ho(kn(f[g>>2]|0,f[g+4>>2]|0,c|0,((c|0)<0)<<31>>31|0)|0,I|0,i|0,j|0)|0)+(f[f[a>>2]>>2]|0)|0;c=h[c>>0]|h[c+1>>0]<<8|h[c+2>>0]<<16|h[c+3>>0]<<24;a=0;break}case 4:{j=a+48|0;i=f[j>>2]|0;j=f[j+4>>2]|0;g=a+40|0;c=(Ho(kn(f[g>>2]|0,f[g+4>>2]|0,c|0,((c|0)<0)<<31>>31|0)|0,I|0,i|0,j|0)|0)+(f[f[a>>2]>>2]|0)|0;c=h[c>>0]|h[c+1>>0]<<8|h[c+2>>0]<<16|h[c+3>>0]<<24;a=0;break}default:{j=0;return j|0}}j=d;f[j>>2]=c;f[j+4>>2]=a;j=1;return j|0}case 5:{c=f[c>>2]|0;switch(b[a+24>>0]|0){case 1:{j=a+48|0;i=f[j>>2]|0;j=f[j+4>>2]|0;g=a+40|0;a=(Ho(kn(f[g>>2]|0,f[g+4>>2]|0,c|0,((c|0)<0)<<31>>31|0)|0,I|0,i|0,j|0)|0)+(f[f[a>>2]>>2]|0)|0;a=h[a>>0]|h[a+1>>0]<<8|h[a+2>>0]<<16|h[a+3>>0]<<24;c=a;a=((a|0)<0)<<31>>31;break}case 2:{j=a+48|0;i=f[j>>2]|0;j=f[j+4>>2]|0;g=a+40|0;c=(Ho(kn(f[g>>2]|0,f[g+4>>2]|0,c|0,((c|0)<0)<<31>>31|0)|0,I|0,i|0,j|0)|0)+(f[f[a>>2]>>2]|0)|0;c=An(0,h[c>>0]|h[c+1>>0]<<8|h[c+2>>0]<<16|h[c+3>>0]<<24|0,32)|0;a=I;break}case 3:{j=a+48|0;i=f[j>>2]|0;j=f[j+4>>2]|0;g=a+40|0;a=(Ho(kn(f[g>>2]|0,f[g+4>>2]|0,c|0,((c|0)<0)<<31>>31|0)|0,I|0,i|0,j|0)|0)+(f[f[a>>2]>>2]|0)|0;a=h[a>>0]|h[a+1>>0]<<8|h[a+2>>0]<<16|h[a+3>>0]<<24;c=a;a=((a|0)<0)<<31>>31;break}case 4:{j=a+48|0;i=f[j>>2]|0;j=f[j+4>>2]|0;g=a+40|0;a=(Ho(kn(f[g>>2]|0,f[g+4>>2]|0,c|0,((c|0)<0)<<31>>31|0)|0,I|0,i|0,j|0)|0)+(f[f[a>>2]>>2]|0)|0;a=h[a>>0]|h[a+1>>0]<<8|h[a+2>>0]<<16|h[a+3>>0]<<24;c=a;a=((a|0)<0)<<31>>31;break}default:{j=0;return j|0}}j=d;f[j>>2]=c;f[j+4>>2]=a;j=1;return j|0}default:{j=0;return j|0}}return 0}function fb(a,c,d){a=a|0;c=c|0;d=d|0;var e=0,g=0,h=0,i=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,v=0,w=0,x=0,y=0,z=0,A=0,B=0,C=0,D=0,E=0,F=0,G=0,H=0,I=0,J=0,K=0,L=0,M=0;M=u;u=u+32|0;L=M+8|0;j=M;G=a+8|0;F=f[G>>2]|0;f[j>>2]=0;Oj(L,F,j);F=a+116|0;i=f[F>>2]|0;e=f[i>>2]|0;h=i+4|0;if(!e)e=i+8|0;else{g=f[h>>2]|0;if((g|0)!=(e|0))f[h>>2]=g+(~((g+-4-e|0)>>>2)<<2);ar(e);e=i+8|0;f[e>>2]=0;f[h>>2]=0;f[i>>2]=0}f[i>>2]=f[L>>2];f[h>>2]=f[L+4>>2];f[e>>2]=f[L+8>>2];E=f[G>>2]|0;f[j>>2]=0;Oj(L,E,j);E=a+128|0;i=f[E>>2]|0;e=f[i>>2]|0;h=i+4|0;if(!e)e=i+8|0;else{g=f[h>>2]|0;if((g|0)!=(e|0))f[h>>2]=g+(~((g+-4-e|0)>>>2)<<2);ar(e);e=i+8|0;f[e>>2]=0;f[h>>2]=0;f[i>>2]=0}f[i>>2]=f[L>>2];f[h>>2]=f[L+4>>2];f[e>>2]=f[L+8>>2];f[L>>2]=0;f[L+4>>2]=0;f[L+8>>2]=0;f[L+12>>2]=0;f[L+16>>2]=0;f[L+20>>2]=0;K=L+8|0;J=L+4|0;I=L+16|0;H=L+20|0;qc(L);e=f[J>>2]|0;g=(f[H>>2]|0)+(f[I>>2]|0)|0;if((f[K>>2]|0)==(e|0))e=0;else e=(f[e+(((g>>>0)/341|0)<<2)>>2]|0)+(((g>>>0)%341|0)*12|0)|0;f[e>>2]=c;f[e+4>>2]=0;f[e+8>>2]=0;e=(f[H>>2]|0)+1|0;f[H>>2]=e;a:do if(e|0){v=a+104|0;D=a+92|0;t=d+4|0;w=a+96|0;C=a+48|0;z=a+44|0;B=a+28|0;y=a+24|0;A=a+88|0;x=a+84|0;b:while(1){q=f[I>>2]|0;g=e+-1|0;m=q+g|0;r=f[J>>2]|0;p=f[r+(((m>>>0)/341|0)<<2)>>2]|0;m=(m>>>0)%341|0;s=f[p+(m*12|0)>>2]|0;h=f[p+(m*12|0)+4>>2]|0;m=f[p+(m*12|0)+8>>2]|0;f[H>>2]=g;g=f[K>>2]|0;r=g-r>>2;if((1-e-q+((r|0)==0?0:(r*341|0)+-1|0)|0)>>>0>681){ar(f[g+-4>>2]|0);f[K>>2]=(f[K>>2]|0)+-4}i=f[F>>2]|0;r=i+(m*12|0)|0;q=(f[E>>2]|0)+(m*12|0)|0;g=un(a,s,q,h)|0;e=(f[a>>2]|0)-(f[(f[q>>2]|0)+(g<<2)>>2]|0)|0;c:do if(!e)if((s|0)>0){j=i+(m*12|0)+4|0;c=f[d>>2]|0;m=c+84|0;i=c+68|0;k=c+40|0;c=c+64|0;g=f[t>>2]|0;l=0;while(1){e=g;g=g+1|0;f[t>>2]=g;h=f[r>>2]|0;if(((f[j>>2]|0)-h|0)!=12){o=23;break b}if(!(b[m>>0]|0))e=f[(f[i>>2]|0)+(e<<2)>>2]|0;p=k;q=f[p>>2]|0;p=kn(q|0,f[p+4>>2]|0,e|0,((e|0)<0)<<31>>31|0)|0;Mg((f[f[c>>2]>>2]|0)+p|0,h|0,q|0)|0;l=l+1|0;if((l|0)>=(s|0)){o=15;break}}}else o=15;else{if(!s){o=28;break b}if(s>>>0<3){i=f[v>>2]|0;f[i>>2]=g;e=f[G>>2]|0;if(e>>>0>1){h=1;do{g=(g|0)==(e+-1|0)?0:g+1|0;f[i+(h<<2)>>2]=g;h=h+1|0;e=f[G>>2]|0}while(h>>>0>>0)}g=0;while(1){if(!e)i=f[D>>2]|0;else{k=f[v>>2]|0;l=f[D>>2]|0;m=f[q>>2]|0;i=l;o=0;do{n=k+(o<<2)|0;f[l+(f[n>>2]<<2)>>2]=0;e=f[n>>2]|0;p=(f[a>>2]|0)-(f[m+(e<<2)>>2]|0)|0;do if(p|0){h=l+(e<<2)|0;if((p|0)>=33){o=42;break b}if((p|0)<=0){o=44;break b}j=f[C>>2]|0;c=32-j|0;e=f[z>>2]|0;j=f[e>>2]<(c|0)){p=p-c|0;f[C>>2]=p;e=e+4|0;f[z>>2]=e;p=32-p|0;f[h>>2]=(f[e>>2]|0)>>>p|j>>>(p-c|0);break}f[h>>2]=j>>>(32-p|0);p=(f[C>>2]|0)+p|0;f[C>>2]=p;if((p|0)!=32)break;f[z>>2]=e+4;f[C>>2]=0}while(0);n=f[n>>2]|0;p=l+(n<<2)|0;f[p>>2]=f[p>>2]|f[(f[r>>2]|0)+(n<<2)>>2];o=o+1|0}while(o>>>0<(f[G>>2]|0)>>>0)}h=f[d>>2]|0;e=f[t>>2]|0;f[t>>2]=e+1;if(((f[w>>2]|0)-i|0)!=12){o=37;break b}if(!(b[h+84>>0]|0))e=f[(f[h+68>>2]|0)+(e<<2)>>2]|0;o=h+40|0;p=f[o>>2]|0;o=kn(p|0,f[o+4>>2]|0,e|0,((e|0)<0)<<31>>31|0)|0;Mg((f[f[h+64>>2]>>2]|0)+o|0,i|0,p|0)|0;g=g+1|0;if(g>>>0>=s>>>0){o=15;break c}e=f[G>>2]|0}}c=1<>2]|0;e=f[r>>2]|0;j=e;i=f[(f[F>>2]|0)+(n*12|0)>>2]|0;if((h|0)!=(e|0)){h=h-e>>2;e=0;do{f[i+(e<<2)>>2]=f[j+(e<<2)>>2];e=e+1|0}while(e>>>0>>0)}r=i+(g<<2)|0;f[r>>2]=(f[r>>2]|0)+c;c=(_(s|0)|0)^31;if(c>>>0>=33){o=56;break b}if(!c){o=58;break b}i=f[B>>2]|0;h=32-i|0;j=f[y>>2]|0;e=f[j>>2]<>>(32-c|0);r=i+c|0;f[B>>2]=r;if((r|0)==32){f[y>>2]=j+4;f[B>>2]=0}}else{r=c-h|0;f[B>>2]=r;q=j+4|0;f[y>>2]=q;r=32-r|0;e=(f[q>>2]|0)>>>r|e>>>(r-h|0)}j=(s>>>1)-e|0;h=s-j|0;if((j|0)==(h|0)){k=j;l=j}else{s=f[A>>2]|0;e=f[x>>2]|0;i=(f[e>>2]&1<<31-s|0)!=0;s=s+1|0;f[A>>2]=s;if((s|0)==32){f[x>>2]=e+4;f[A>>2]=0}k=i?j:h;l=i?h:j}e=f[E>>2]|0;c=f[e+(m*12|0)>>2]|0;h=c+(g<<2)|0;f[h>>2]=(f[h>>2]|0)+1;h=f[e+(m*12|0)+4>>2]|0;i=c;if((h|0)!=(i|0)){j=f[e+(n*12|0)>>2]|0;h=h-i>>2;e=0;do{f[j+(e<<2)>>2]=f[c+(e<<2)>>2];e=e+1|0}while(e>>>0>>0)}if(k|0){j=f[K>>2]|0;i=f[J>>2]|0;s=j-i>>2;e=f[I>>2]|0;h=f[H>>2]|0;if((((s|0)==0?0:(s*341|0)+-1|0)|0)==(h+e|0)){qc(L);e=f[I>>2]|0;h=f[H>>2]|0;j=f[K>>2]|0;i=f[J>>2]|0}e=h+e|0;if((j|0)==(i|0))e=0;else e=(f[i+(((e>>>0)/341|0)<<2)>>2]|0)+(((e>>>0)%341|0)*12|0)|0;f[e>>2]=k;f[e+4>>2]=g;f[e+8>>2]=m;f[H>>2]=(f[H>>2]|0)+1}if(!l)o=15;else{j=f[K>>2]|0;i=f[J>>2]|0;s=j-i>>2;e=f[I>>2]|0;h=f[H>>2]|0;if((((s|0)==0?0:(s*341|0)+-1|0)|0)==(h+e|0)){qc(L);e=f[I>>2]|0;h=f[H>>2]|0;j=f[K>>2]|0;i=f[J>>2]|0}e=h+e|0;if((j|0)==(i|0))e=0;else e=(f[i+(((e>>>0)/341|0)<<2)>>2]|0)+(((e>>>0)%341|0)*12|0)|0;f[e>>2]=l;f[e+4>>2]=g;f[e+8>>2]=n;e=(f[H>>2]|0)+1|0;f[H>>2]=e}}while(0);if((o|0)==15){o=0;e=f[H>>2]|0}if(!e)break a}if((o|0)==23)Ga(17368,17398,51,17461);else if((o|0)==28)Ga(17720,17758,223,17846);else if((o|0)==37)Ga(17368,17398,51,17461);else if((o|0)==42)Ga(17861,17885,48,17934);else if((o|0)==44)Ga(17963,17885,49,17934);else if((o|0)==56)Ga(17861,17885,48,17934);else if((o|0)==58)Ga(17963,17885,49,17934)}while(0);e=f[J>>2]|0;g=f[I>>2]|0;i=e+(((g>>>0)/341|0)<<2)|0;h=f[K>>2]|0;c=h;k=e;if((h|0)==(e|0)){j=0;g=0}else{g=(f[i>>2]|0)+(((g>>>0)%341|0)*12|0)|0;j=g}d:while(1){do{if((g|0)==(j|0))break d;g=g+12|0}while((g-(f[i>>2]|0)|0)!=4092);g=i+4|0;i=g;g=f[g>>2]|0}f[H>>2]=0;g=c-k>>2;if(g>>>0>2)do{ar(f[e>>2]|0);e=(f[J>>2]|0)+4|0;f[J>>2]=e;h=f[K>>2]|0;g=h-e>>2}while(g>>>0>2);switch(g|0){case 1:{g=170;o=94;break}case 2:{g=341;o=94;break}default:{}}if((o|0)==94)f[I>>2]=g;if((e|0)!=(h|0)){do{ar(f[e>>2]|0);e=e+4|0}while((e|0)!=(h|0));e=f[J>>2]|0;g=f[K>>2]|0;if((g|0)!=(e|0))f[K>>2]=g+(~((g+-4-e|0)>>>2)<<2)}e=f[L>>2]|0;if(!e){u=M;return}ar(e);u=M;return}function gb(a,b,c){a=a|0;b=b|0;c=c|0;var d=0,e=0,g=0,h=0,i=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,v=0,w=0,x=0,y=0,z=0,A=0,B=0,C=0,D=0,E=0,F=0,G=0,H=0,I=0,J=0,K=0,L=0,M=0,N=0,O=0,P=0,Q=0;Q=u;u=u+48|0;K=Q+24|0;P=Q;J=a+8|0;I=f[J>>2]|0;f[P>>2]=0;Oj(K,I,P);I=a+116|0;h=f[I>>2]|0;d=f[h>>2]|0;g=h+4|0;if(!d)d=h+8|0;else{e=f[g>>2]|0;if((e|0)!=(d|0))f[g>>2]=e+(~((e+-4-d|0)>>>2)<<2);ar(d);d=h+8|0;f[d>>2]=0;f[g>>2]=0;f[h>>2]=0}f[h>>2]=f[K>>2];f[g>>2]=f[K+4>>2];f[d>>2]=f[K+8>>2];H=f[J>>2]|0;f[P>>2]=0;Oj(K,H,P);H=a+128|0;h=f[H>>2]|0;d=f[h>>2]|0;g=h+4|0;if(!d)d=h+8|0;else{e=f[g>>2]|0;if((e|0)!=(d|0))f[g>>2]=e+(~((e+-4-d|0)>>>2)<<2);ar(d);d=h+8|0;f[d>>2]=0;f[g>>2]=0;f[h>>2]=0}f[h>>2]=f[K>>2];f[g>>2]=f[K+4>>2];f[d>>2]=f[K+8>>2];f[P>>2]=0;f[P+4>>2]=0;f[P+8>>2]=0;f[P+12>>2]=0;f[P+16>>2]=0;f[P+20>>2]=0;O=P+8|0;N=P+4|0;M=P+16|0;L=P+20|0;qc(P);d=f[N>>2]|0;e=(f[L>>2]|0)+(f[M>>2]|0)|0;if((f[O>>2]|0)==(d|0))d=0;else d=(f[d+(((e>>>0)/341|0)<<2)>>2]|0)+(((e>>>0)%341|0)*12|0)|0;f[d>>2]=b;f[d+4>>2]=0;f[d+8>>2]=0;d=(f[L>>2]|0)+1|0;f[L>>2]=d;a:do if(d|0){w=a+104|0;v=a+92|0;A=K+4|0;C=K+8|0;G=a+48|0;z=a+44|0;F=a+28|0;y=a+24|0;E=a+88|0;x=a+84|0;B=K+4|0;D=K+8|0;b:while(1){r=f[M>>2]|0;e=d+-1|0;l=r+e|0;s=f[N>>2]|0;q=f[s+(((l>>>0)/341|0)<<2)>>2]|0;l=(l>>>0)%341|0;t=f[q+(l*12|0)>>2]|0;g=f[q+(l*12|0)+4>>2]|0;l=f[q+(l*12|0)+8>>2]|0;f[L>>2]=e;e=f[O>>2]|0;s=e-s>>2;if((1-d-r+((s|0)==0?0:(s*341|0)+-1|0)|0)>>>0>681){ar(f[e+-4>>2]|0);f[O>>2]=(f[O>>2]|0)+-4}h=f[I>>2]|0;s=h+(l*12|0)|0;r=(f[H>>2]|0)+(l*12|0)|0;e=un(a,t,r,g)|0;d=(f[a>>2]|0)-(f[(f[r>>2]|0)+(e<<2)>>2]|0)|0;c:do if(!d)if((t|0)>0){i=f[c>>2]|0;g=i+4|0;h=i+8|0;b=0;do{e=f[s>>2]|0;d=f[e>>2]|0;f[K>>2]=d;f[B>>2]=f[e+4>>2];f[D>>2]=f[e+8>>2];e=f[g>>2]|0;if(e>>>0<(f[h>>2]|0)>>>0){f[e>>2]=d;f[e+4>>2]=f[B>>2];f[e+8>>2]=f[D>>2];f[g>>2]=e+12}else mh(i,K);b=b+1|0}while((b|0)<(t|0));n=15}else n=15;else{if(!t){n=27;break b}if(t>>>0<3){h=f[w>>2]|0;f[h>>2]=e;d=f[J>>2]|0;if(d>>>0>1){g=1;do{e=(e|0)==(d+-1|0)?0:e+1|0;f[h+(g<<2)>>2]=e;g=g+1|0;d=f[J>>2]|0}while(g>>>0>>0)}q=f[c>>2]|0;o=q+4|0;p=q+8|0;e=0;while(1){if(d|0){i=f[w>>2]|0;j=f[v>>2]|0;k=f[r>>2]|0;m=0;do{l=i+(m<<2)|0;f[j+(f[l>>2]<<2)>>2]=0;d=f[l>>2]|0;n=(f[a>>2]|0)-(f[k+(d<<2)>>2]|0)|0;do if(n|0){g=j+(d<<2)|0;if((n|0)>=33){n=36;break b}if((n|0)<=0){n=38;break b}h=f[G>>2]|0;b=32-h|0;d=f[z>>2]|0;h=f[d>>2]<(b|0)){n=n-b|0;f[G>>2]=n;d=d+4|0;f[z>>2]=d;n=32-n|0;f[g>>2]=(f[d>>2]|0)>>>n|h>>>(n-b|0);break}f[g>>2]=h>>>(32-n|0);n=(f[G>>2]|0)+n|0;f[G>>2]=n;if((n|0)!=32)break;f[z>>2]=d+4;f[G>>2]=0}while(0);l=f[l>>2]|0;n=j+(l<<2)|0;f[n>>2]=f[n>>2]|f[(f[s>>2]|0)+(l<<2)>>2];m=m+1|0}while(m>>>0<(f[J>>2]|0)>>>0)}g=f[v>>2]|0;d=f[g>>2]|0;f[K>>2]=d;f[A>>2]=f[g+4>>2];f[C>>2]=f[g+8>>2];g=f[o>>2]|0;if(g>>>0<(f[p>>2]|0)>>>0){f[g>>2]=d;f[g+4>>2]=f[A>>2];f[g+8>>2]=f[C>>2];f[o>>2]=g+12}else mh(q,K);e=e+1|0;if(e>>>0>=t>>>0){n=15;break c}d=f[J>>2]|0}}i=1<>2]|0;d=f[s>>2]|0;b=d;h=f[(f[I>>2]|0)+(m*12|0)>>2]|0;if((g|0)!=(d|0)){g=g-d>>2;d=0;do{f[h+(d<<2)>>2]=f[b+(d<<2)>>2];d=d+1|0}while(d>>>0>>0)}s=h+(e<<2)|0;f[s>>2]=(f[s>>2]|0)+i;i=(_(t|0)|0)^31;if(i>>>0>=33){n=53;break b}if(!i){n=55;break b}h=f[F>>2]|0;g=32-h|0;b=f[y>>2]|0;d=f[b>>2]<>>(32-i|0);s=h+i|0;f[F>>2]=s;if((s|0)==32){f[y>>2]=b+4;f[F>>2]=0}}else{s=i-g|0;f[F>>2]=s;r=b+4|0;f[y>>2]=r;s=32-s|0;d=(f[r>>2]|0)>>>s|d>>>(s-g|0)}b=(t>>>1)-d|0;g=t-b|0;if((b|0)==(g|0)){j=b;k=b}else{t=f[E>>2]|0;d=f[x>>2]|0;h=(f[d>>2]&1<<31-t|0)!=0;t=t+1|0;f[E>>2]=t;if((t|0)==32){f[x>>2]=d+4;f[E>>2]=0}j=h?b:g;k=h?g:b}d=f[H>>2]|0;i=f[d+(l*12|0)>>2]|0;g=i+(e<<2)|0;f[g>>2]=(f[g>>2]|0)+1;g=f[d+(l*12|0)+4>>2]|0;h=i;if((g|0)!=(h|0)){b=f[d+(m*12|0)>>2]|0;g=g-h>>2;d=0;do{f[b+(d<<2)>>2]=f[i+(d<<2)>>2];d=d+1|0}while(d>>>0>>0)}if(j|0){b=f[O>>2]|0;h=f[N>>2]|0;t=b-h>>2;d=f[M>>2]|0;g=f[L>>2]|0;if((((t|0)==0?0:(t*341|0)+-1|0)|0)==(g+d|0)){qc(P);d=f[M>>2]|0;g=f[L>>2]|0;b=f[O>>2]|0;h=f[N>>2]|0}d=g+d|0;if((b|0)==(h|0))d=0;else d=(f[h+(((d>>>0)/341|0)<<2)>>2]|0)+(((d>>>0)%341|0)*12|0)|0;f[d>>2]=j;f[d+4>>2]=e;f[d+8>>2]=l;f[L>>2]=(f[L>>2]|0)+1}if(!k)n=15;else{b=f[O>>2]|0;h=f[N>>2]|0;t=b-h>>2;d=f[M>>2]|0;g=f[L>>2]|0;if((((t|0)==0?0:(t*341|0)+-1|0)|0)==(g+d|0)){qc(P);d=f[M>>2]|0;g=f[L>>2]|0;b=f[O>>2]|0;h=f[N>>2]|0}d=g+d|0;if((b|0)==(h|0))d=0;else d=(f[h+(((d>>>0)/341|0)<<2)>>2]|0)+(((d>>>0)%341|0)*12|0)|0;f[d>>2]=k;f[d+4>>2]=e;f[d+8>>2]=m;d=(f[L>>2]|0)+1|0;f[L>>2]=d}}while(0);if((n|0)==15){n=0;d=f[L>>2]|0}if(!d)break a}if((n|0)==27)Ga(17720,17758,223,17846);else if((n|0)==36)Ga(17861,17885,48,17934);else if((n|0)==38)Ga(17963,17885,49,17934);else if((n|0)==53)Ga(17861,17885,48,17934);else if((n|0)==55)Ga(17963,17885,49,17934)}while(0);d=f[N>>2]|0;e=f[M>>2]|0;h=d+(((e>>>0)/341|0)<<2)|0;g=f[O>>2]|0;i=g;j=d;if((g|0)==(d|0)){b=0;e=0}else{e=(f[h>>2]|0)+(((e>>>0)%341|0)*12|0)|0;b=e}d:while(1){do{if((e|0)==(b|0))break d;e=e+12|0}while((e-(f[h>>2]|0)|0)!=4092);e=h+4|0;h=e;e=f[e>>2]|0}f[L>>2]=0;e=i-j>>2;if(e>>>0>2)do{ar(f[d>>2]|0);d=(f[N>>2]|0)+4|0;f[N>>2]=d;g=f[O>>2]|0;e=g-d>>2}while(e>>>0>2);switch(e|0){case 1:{e=170;n=91;break}case 2:{e=341;n=91;break}default:{}}if((n|0)==91)f[M>>2]=e;if((d|0)!=(g|0)){do{ar(f[d>>2]|0);d=d+4|0}while((d|0)!=(g|0));d=f[N>>2]|0;e=f[O>>2]|0;if((e|0)!=(d|0))f[O>>2]=e+(~((e+-4-d|0)>>>2)<<2)}d=f[P>>2]|0;if(!d){u=Q;return}ar(d);u=Q;return}function hb(a,c,d){a=a|0;c=c|0;d=d|0;var e=0,g=0,h=0,i=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,v=0,w=0,x=0,y=0,z=0,A=0,B=0,C=0,D=0,E=0,F=0,G=0,H=0,I=0,J=0,K=0,L=0,M=0,N=0,O=0;O=u;u=u+32|0;N=O+8|0;j=O;I=a+8|0;H=f[I>>2]|0;f[j>>2]=0;Oj(N,H,j);H=a+116|0;i=f[H>>2]|0;e=f[i>>2]|0;h=i+4|0;if(!e)e=i+8|0;else{g=f[h>>2]|0;if((g|0)!=(e|0))f[h>>2]=g+(~((g+-4-e|0)>>>2)<<2);ar(e);e=i+8|0;f[e>>2]=0;f[h>>2]=0;f[i>>2]=0}f[i>>2]=f[N>>2];f[h>>2]=f[N+4>>2];f[e>>2]=f[N+8>>2];G=f[I>>2]|0;f[j>>2]=0;Oj(N,G,j);G=a+128|0;i=f[G>>2]|0;e=f[i>>2]|0;h=i+4|0;if(!e)e=i+8|0;else{g=f[h>>2]|0;if((g|0)!=(e|0))f[h>>2]=g+(~((g+-4-e|0)>>>2)<<2);ar(e);e=i+8|0;f[e>>2]=0;f[h>>2]=0;f[i>>2]=0}f[i>>2]=f[N>>2];f[h>>2]=f[N+4>>2];f[e>>2]=f[N+8>>2];f[N>>2]=0;f[N+4>>2]=0;f[N+8>>2]=0;f[N+12>>2]=0;f[N+16>>2]=0;f[N+20>>2]=0;M=N+8|0;L=N+4|0;K=N+16|0;J=N+20|0;qc(N);e=f[L>>2]|0;g=(f[J>>2]|0)+(f[K>>2]|0)|0;if((f[M>>2]|0)==(e|0))e=0;else e=(f[e+(((g>>>0)/341|0)<<2)>>2]|0)+(((g>>>0)%341|0)*12|0)|0;f[e>>2]=c;f[e+4>>2]=0;f[e+8>>2]=0;e=(f[J>>2]|0)+1|0;f[J>>2]=e;a:do if(e|0){x=a+104|0;F=a+92|0;w=d+4|0;y=a+96|0;E=a+48|0;B=a+44|0;D=a+28|0;A=a+24|0;C=a+88|0;z=a+84|0;b:while(1){r=f[K>>2]|0;g=e+-1|0;o=r+g|0;s=f[L>>2]|0;q=f[s+(((o>>>0)/341|0)<<2)>>2]|0;o=(o>>>0)%341|0;t=f[q+(o*12|0)>>2]|0;h=f[q+(o*12|0)+4>>2]|0;o=f[q+(o*12|0)+8>>2]|0;f[J>>2]=g;g=f[M>>2]|0;s=g-s>>2;if((1-e-r+((s|0)==0?0:(s*341|0)+-1|0)|0)>>>0>681){ar(f[g+-4>>2]|0);g=(f[M>>2]|0)+-4|0;f[M>>2]=g}i=f[H>>2]|0;r=i+(o*12|0)|0;l=f[G>>2]|0;s=((f[I>>2]|0)+-1|0)==(h|0)?0:h+1|0;q=l+(o*12|0)|0;n=f[q>>2]|0;k=n+(s<<2)|0;e=(f[a>>2]|0)-(f[k>>2]|0)|0;m=n;c:do if(!e)if((t|0)>0){j=i+(o*12|0)+4|0;c=f[d>>2]|0;m=c+84|0;i=c+68|0;k=c+40|0;c=c+64|0;g=f[w>>2]|0;l=0;while(1){e=g;g=g+1|0;f[w>>2]=g;h=f[r>>2]|0;if(((f[j>>2]|0)-h|0)!=12){v=23;break b}if(!(b[m>>0]|0))e=f[(f[i>>2]|0)+(e<<2)>>2]|0;s=k;v=f[s>>2]|0;s=kn(v|0,f[s+4>>2]|0,e|0,((e|0)<0)<<31>>31|0)|0;Mg((f[f[c>>2]>>2]|0)+s|0,h|0,v|0)|0;l=l+1|0;if((l|0)>=(t|0)){v=15;break}}}else v=15;else{if(!t){v=28;break b}if(t>>>0<3){i=f[x>>2]|0;f[i>>2]=s;e=f[I>>2]|0;if(e>>>0>1){g=s;h=1;do{g=(g|0)==(e+-1|0)?0:g+1|0;f[i+(h<<2)>>2]=g;h=h+1|0;e=f[I>>2]|0}while(h>>>0>>0)}g=0;while(1){if(!e)i=f[F>>2]|0;else{k=f[x>>2]|0;l=f[F>>2]|0;m=f[q>>2]|0;i=l;o=0;do{n=k+(o<<2)|0;f[l+(f[n>>2]<<2)>>2]=0;e=f[n>>2]|0;p=(f[a>>2]|0)-(f[m+(e<<2)>>2]|0)|0;do if(p|0){h=l+(e<<2)|0;if((p|0)>=33){v=42;break b}if((p|0)<=0){v=44;break b}j=f[E>>2]|0;c=32-j|0;e=f[B>>2]|0;j=f[e>>2]<(c|0)){v=p-c|0;f[E>>2]=v;s=e+4|0;f[B>>2]=s;v=32-v|0;f[h>>2]=(f[s>>2]|0)>>>v|j>>>(v-c|0);break}f[h>>2]=j>>>(32-p|0);v=(f[E>>2]|0)+p|0;f[E>>2]=v;if((v|0)!=32)break;f[B>>2]=e+4;f[E>>2]=0}while(0);s=f[n>>2]|0;v=l+(s<<2)|0;f[v>>2]=f[v>>2]|f[(f[r>>2]|0)+(s<<2)>>2];o=o+1|0}while(o>>>0<(f[I>>2]|0)>>>0)}h=f[d>>2]|0;e=f[w>>2]|0;f[w>>2]=e+1;if(((f[y>>2]|0)-i|0)!=12){v=37;break b}if(!(b[h+84>>0]|0))e=f[(f[h+68>>2]|0)+(e<<2)>>2]|0;s=h+40|0;v=f[s>>2]|0;s=kn(v|0,f[s+4>>2]|0,e|0,((e|0)<0)<<31>>31|0)|0;Mg((f[f[h+64>>2]>>2]|0)+s|0,i|0,v|0)|0;g=g+1|0;if(g>>>0>=t>>>0){v=15;break c}e=f[I>>2]|0}}c=1<>2]|0;e=f[r>>2]|0;j=e;i=f[i+(p*12|0)>>2]|0;if((h|0)!=(e|0)){h=h-e>>2;e=0;do{f[i+(e<<2)>>2]=f[j+(e<<2)>>2];e=e+1|0}while(e>>>0>>0)}r=i+(s<<2)|0;f[r>>2]=(f[r>>2]|0)+c;c=(_(t|0)|0)^31;if(c>>>0>=33){v=56;break b}if(!c){v=58;break b}i=f[D>>2]|0;h=32-i|0;j=f[A>>2]|0;e=f[j>>2]<>>(32-c|0);r=i+c|0;f[D>>2]=r;if((r|0)==32){f[A>>2]=j+4;f[D>>2]=0}}else{r=c-h|0;f[D>>2]=r;q=j+4|0;f[A>>2]=q;r=32-r|0;e=(f[q>>2]|0)>>>r|e>>>(r-h|0)}j=(t>>>1)-e|0;h=t-j|0;if((j|0)==(h|0))c=j;else{t=f[C>>2]|0;e=f[z>>2]|0;i=(f[e>>2]&1<<31-t|0)!=0;t=t+1|0;f[C>>2]=t;if((t|0)==32){f[z>>2]=e+4;f[C>>2]=0}c=i?j:h;j=i?h:j}f[k>>2]=(f[k>>2]|0)+1;e=f[l+(o*12|0)+4>>2]|0;if((e|0)!=(m|0)){i=f[l+(p*12|0)>>2]|0;h=e-m>>2;e=0;do{f[i+(e<<2)>>2]=f[n+(e<<2)>>2];e=e+1|0}while(e>>>0>>0)}if(c|0){i=f[L>>2]|0;t=g-i>>2;e=f[K>>2]|0;h=f[J>>2]|0;if((((t|0)==0?0:(t*341|0)+-1|0)|0)==(h+e|0)){qc(N);e=f[K>>2]|0;h=f[J>>2]|0;g=f[M>>2]|0;i=f[L>>2]|0}e=h+e|0;if((g|0)==(i|0))e=0;else e=(f[i+(((e>>>0)/341|0)<<2)>>2]|0)+(((e>>>0)%341|0)*12|0)|0;f[e>>2]=c;f[e+4>>2]=s;f[e+8>>2]=o;f[J>>2]=(f[J>>2]|0)+1}if(!j)v=15;else{i=f[M>>2]|0;h=f[L>>2]|0;t=i-h>>2;e=f[K>>2]|0;g=f[J>>2]|0;if((((t|0)==0?0:(t*341|0)+-1|0)|0)==(g+e|0)){qc(N);e=f[K>>2]|0;g=f[J>>2]|0;i=f[M>>2]|0;h=f[L>>2]|0}e=g+e|0;if((i|0)==(h|0))e=0;else e=(f[h+(((e>>>0)/341|0)<<2)>>2]|0)+(((e>>>0)%341|0)*12|0)|0;f[e>>2]=j;f[e+4>>2]=s;f[e+8>>2]=p;e=(f[J>>2]|0)+1|0;f[J>>2]=e}}while(0);if((v|0)==15){v=0;e=f[J>>2]|0}if(!e)break a}if((v|0)==23)Ga(17368,17398,51,17461);else if((v|0)==28)Ga(17720,17758,223,17846);else if((v|0)==37)Ga(17368,17398,51,17461);else if((v|0)==42)Ga(17861,17885,48,17934);else if((v|0)==44)Ga(17963,17885,49,17934);else if((v|0)==56)Ga(17861,17885,48,17934);else if((v|0)==58)Ga(17963,17885,49,17934)}while(0);e=f[L>>2]|0;g=f[K>>2]|0;i=e+(((g>>>0)/341|0)<<2)|0;h=f[M>>2]|0;c=h;k=e;if((h|0)==(e|0)){j=0;g=0}else{g=(f[i>>2]|0)+(((g>>>0)%341|0)*12|0)|0;j=g}d:while(1){do{if((g|0)==(j|0))break d;g=g+12|0}while((g-(f[i>>2]|0)|0)!=4092);g=i+4|0;i=g;g=f[g>>2]|0}f[J>>2]=0;g=c-k>>2;if(g>>>0>2)do{ar(f[e>>2]|0);e=(f[L>>2]|0)+4|0;f[L>>2]=e;h=f[M>>2]|0;g=h-e>>2}while(g>>>0>2);switch(g|0){case 1:{g=170;v=94;break}case 2:{g=341;v=94;break}default:{}}if((v|0)==94)f[K>>2]=g;if((e|0)!=(h|0)){do{ar(f[e>>2]|0);e=e+4|0}while((e|0)!=(h|0));e=f[L>>2]|0;g=f[M>>2]|0;if((g|0)!=(e|0))f[M>>2]=g+(~((g+-4-e|0)>>>2)<<2)}e=f[N>>2]|0;if(!e){u=O;return}ar(e);u=O;return}function ib(a,b,c){a=a|0;b=b|0;c=c|0;var d=0,e=0,g=0,h=0,i=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,v=0,w=0,x=0,y=0,z=0,A=0,B=0,C=0,D=0,E=0,F=0,G=0,H=0,I=0,J=0,K=0,L=0,M=0,N=0,O=0,P=0,Q=0;Q=u;u=u+48|0;K=Q+24|0;P=Q;J=a+8|0;I=f[J>>2]|0;f[P>>2]=0;Oj(K,I,P);I=a+116|0;h=f[I>>2]|0;d=f[h>>2]|0;g=h+4|0;if(!d)d=h+8|0;else{e=f[g>>2]|0;if((e|0)!=(d|0))f[g>>2]=e+(~((e+-4-d|0)>>>2)<<2);ar(d);d=h+8|0;f[d>>2]=0;f[g>>2]=0;f[h>>2]=0}f[h>>2]=f[K>>2];f[g>>2]=f[K+4>>2];f[d>>2]=f[K+8>>2];H=f[J>>2]|0;f[P>>2]=0;Oj(K,H,P);H=a+128|0;h=f[H>>2]|0;d=f[h>>2]|0;g=h+4|0;if(!d)d=h+8|0;else{e=f[g>>2]|0;if((e|0)!=(d|0))f[g>>2]=e+(~((e+-4-d|0)>>>2)<<2);ar(d);d=h+8|0;f[d>>2]=0;f[g>>2]=0;f[h>>2]=0}f[h>>2]=f[K>>2];f[g>>2]=f[K+4>>2];f[d>>2]=f[K+8>>2];f[P>>2]=0;f[P+4>>2]=0;f[P+8>>2]=0;f[P+12>>2]=0;f[P+16>>2]=0;f[P+20>>2]=0;O=P+8|0;N=P+4|0;M=P+16|0;L=P+20|0;qc(P);d=f[N>>2]|0;e=(f[L>>2]|0)+(f[M>>2]|0)|0;if((f[O>>2]|0)==(d|0))d=0;else d=(f[d+(((e>>>0)/341|0)<<2)>>2]|0)+(((e>>>0)%341|0)*12|0)|0;f[d>>2]=b;f[d+4>>2]=0;f[d+8>>2]=0;d=(f[L>>2]|0)+1|0;f[L>>2]=d;a:do if(d|0){w=a+104|0;v=a+92|0;A=K+4|0;C=K+8|0;G=a+48|0;z=a+44|0;F=a+28|0;y=a+24|0;E=a+88|0;x=a+84|0;B=K+4|0;D=K+8|0;b:while(1){r=f[M>>2]|0;e=d+-1|0;n=r+e|0;s=f[N>>2]|0;p=f[s+(((n>>>0)/341|0)<<2)>>2]|0;n=(n>>>0)%341|0;t=f[p+(n*12|0)>>2]|0;g=f[p+(n*12|0)+4>>2]|0;n=f[p+(n*12|0)+8>>2]|0;f[L>>2]=e;e=f[O>>2]|0;s=e-s>>2;if((1-d-r+((s|0)==0?0:(s*341|0)+-1|0)|0)>>>0>681){ar(f[e+-4>>2]|0);e=(f[O>>2]|0)+-4|0;f[O>>2]=e}h=f[I>>2]|0;s=h+(n*12|0)|0;k=f[H>>2]|0;p=((f[J>>2]|0)+-1|0)==(g|0)?0:g+1|0;r=k+(n*12|0)|0;m=f[r>>2]|0;j=m+(p<<2)|0;d=(f[a>>2]|0)-(f[j>>2]|0)|0;l=m;c:do if(!d)if((t|0)>0){i=f[c>>2]|0;g=i+4|0;h=i+8|0;b=0;do{e=f[s>>2]|0;d=f[e>>2]|0;f[K>>2]=d;f[B>>2]=f[e+4>>2];f[D>>2]=f[e+8>>2];e=f[g>>2]|0;if(e>>>0<(f[h>>2]|0)>>>0){f[e>>2]=d;f[e+4>>2]=f[B>>2];f[e+8>>2]=f[D>>2];f[g>>2]=e+12}else mh(i,K);b=b+1|0}while((b|0)<(t|0));q=15}else q=15;else{if(!t){q=27;break b}if(t>>>0<3){h=f[w>>2]|0;f[h>>2]=p;d=f[J>>2]|0;if(d>>>0>1){e=p;g=1;do{e=(e|0)==(d+-1|0)?0:e+1|0;f[h+(g<<2)>>2]=e;g=g+1|0;d=f[J>>2]|0}while(g>>>0>>0)}q=f[c>>2]|0;o=q+4|0;p=q+8|0;e=0;while(1){if(d|0){i=f[w>>2]|0;j=f[v>>2]|0;k=f[r>>2]|0;m=0;do{l=i+(m<<2)|0;f[j+(f[l>>2]<<2)>>2]=0;d=f[l>>2]|0;n=(f[a>>2]|0)-(f[k+(d<<2)>>2]|0)|0;do if(n|0){g=j+(d<<2)|0;if((n|0)>=33){q=36;break b}if((n|0)<=0){q=38;break b}h=f[G>>2]|0;b=32-h|0;d=f[z>>2]|0;h=f[d>>2]<(b|0)){n=n-b|0;f[G>>2]=n;d=d+4|0;f[z>>2]=d;n=32-n|0;f[g>>2]=(f[d>>2]|0)>>>n|h>>>(n-b|0);break}f[g>>2]=h>>>(32-n|0);n=(f[G>>2]|0)+n|0;f[G>>2]=n;if((n|0)!=32)break;f[z>>2]=d+4;f[G>>2]=0}while(0);l=f[l>>2]|0;n=j+(l<<2)|0;f[n>>2]=f[n>>2]|f[(f[s>>2]|0)+(l<<2)>>2];m=m+1|0}while(m>>>0<(f[J>>2]|0)>>>0)}g=f[v>>2]|0;d=f[g>>2]|0;f[K>>2]=d;f[A>>2]=f[g+4>>2];f[C>>2]=f[g+8>>2];g=f[o>>2]|0;if(g>>>0<(f[p>>2]|0)>>>0){f[g>>2]=d;f[g+4>>2]=f[A>>2];f[g+8>>2]=f[C>>2];f[o>>2]=g+12}else mh(q,K);e=e+1|0;if(e>>>0>=t>>>0){q=15;break c}d=f[J>>2]|0}}i=1<>2]|0;d=f[s>>2]|0;b=d;h=f[h+(o*12|0)>>2]|0;if((g|0)!=(d|0)){g=g-d>>2;d=0;do{f[h+(d<<2)>>2]=f[b+(d<<2)>>2];d=d+1|0}while(d>>>0>>0)}s=h+(p<<2)|0;f[s>>2]=(f[s>>2]|0)+i;i=(_(t|0)|0)^31;if(i>>>0>=33){q=53;break b}if(!i){q=55;break b}h=f[F>>2]|0;g=32-h|0;b=f[y>>2]|0;d=f[b>>2]<>>(32-i|0);s=h+i|0;f[F>>2]=s;if((s|0)==32){f[y>>2]=b+4;f[F>>2]=0}}else{s=i-g|0;f[F>>2]=s;r=b+4|0;f[y>>2]=r;s=32-s|0;d=(f[r>>2]|0)>>>s|d>>>(s-g|0)}b=(t>>>1)-d|0;g=t-b|0;if((b|0)==(g|0))i=b;else{t=f[E>>2]|0;d=f[x>>2]|0;h=(f[d>>2]&1<<31-t|0)!=0;t=t+1|0;f[E>>2]=t;if((t|0)==32){f[x>>2]=d+4;f[E>>2]=0}i=h?b:g;b=h?g:b}f[j>>2]=(f[j>>2]|0)+1;d=f[k+(n*12|0)+4>>2]|0;if((d|0)!=(l|0)){h=f[k+(o*12|0)>>2]|0;g=d-l>>2;d=0;do{f[h+(d<<2)>>2]=f[m+(d<<2)>>2];d=d+1|0}while(d>>>0>>0)}if(i|0){h=f[N>>2]|0;t=e-h>>2;d=f[M>>2]|0;g=f[L>>2]|0;if((((t|0)==0?0:(t*341|0)+-1|0)|0)==(g+d|0)){qc(P);d=f[M>>2]|0;g=f[L>>2]|0;e=f[O>>2]|0;h=f[N>>2]|0}d=g+d|0;if((e|0)==(h|0))d=0;else d=(f[h+(((d>>>0)/341|0)<<2)>>2]|0)+(((d>>>0)%341|0)*12|0)|0;f[d>>2]=i;f[d+4>>2]=p;f[d+8>>2]=n;f[L>>2]=(f[L>>2]|0)+1}if(!b)q=15;else{h=f[O>>2]|0;g=f[N>>2]|0;t=h-g>>2;d=f[M>>2]|0;e=f[L>>2]|0;if((((t|0)==0?0:(t*341|0)+-1|0)|0)==(e+d|0)){qc(P);d=f[M>>2]|0;e=f[L>>2]|0;h=f[O>>2]|0;g=f[N>>2]|0}d=e+d|0;if((h|0)==(g|0))d=0;else d=(f[g+(((d>>>0)/341|0)<<2)>>2]|0)+(((d>>>0)%341|0)*12|0)|0;f[d>>2]=b;f[d+4>>2]=p;f[d+8>>2]=o;d=(f[L>>2]|0)+1|0;f[L>>2]=d}}while(0);if((q|0)==15){q=0;d=f[L>>2]|0}if(!d)break a}if((q|0)==27)Ga(17720,17758,223,17846);else if((q|0)==36)Ga(17861,17885,48,17934);else if((q|0)==38)Ga(17963,17885,49,17934);else if((q|0)==53)Ga(17861,17885,48,17934);else if((q|0)==55)Ga(17963,17885,49,17934)}while(0);d=f[N>>2]|0;e=f[M>>2]|0;h=d+(((e>>>0)/341|0)<<2)|0;g=f[O>>2]|0;i=g;j=d;if((g|0)==(d|0)){b=0;e=0}else{e=(f[h>>2]|0)+(((e>>>0)%341|0)*12|0)|0;b=e}d:while(1){do{if((e|0)==(b|0))break d;e=e+12|0}while((e-(f[h>>2]|0)|0)!=4092);e=h+4|0;h=e;e=f[e>>2]|0}f[L>>2]=0;e=i-j>>2;if(e>>>0>2)do{ar(f[d>>2]|0);d=(f[N>>2]|0)+4|0;f[N>>2]=d;g=f[O>>2]|0;e=g-d>>2}while(e>>>0>2);switch(e|0){case 1:{e=170;q=91;break}case 2:{e=341;q=91;break}default:{}}if((q|0)==91)f[M>>2]=e;if((d|0)!=(g|0)){do{ar(f[d>>2]|0);d=d+4|0}while((d|0)!=(g|0));d=f[N>>2]|0;e=f[O>>2]|0;if((e|0)!=(d|0))f[O>>2]=e+(~((e+-4-d|0)>>>2)<<2)}d=f[P>>2]|0;if(!d){u=Q;return}ar(d);u=Q;return}function jb(a,b,c,d,e,g){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;g=g|0;var h=0,i=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,v=0,w=0,x=0,y=0,z=0,A=0,B=0,C=0,D=0,E=0,F=0,G=0,H=0,I=0,J=0,K=0,L=0,M=0,N=0,O=0,P=0,Q=0,R=0,S=0;S=u;u=u+64|0;R=S+16|0;P=S;H=a+8|0;f[H>>2]=e;i=a+32|0;h=a+36|0;g=f[h>>2]|0;d=f[i>>2]|0;j=g-d>>2;if(j>>>0>=e>>>0){if(j>>>0>e>>>0?(k=d+(e<<2)|0,(g|0)!=(k|0)):0)f[h>>2]=g+(~((g+-4-k|0)>>>2)<<2)}else ui(i,e-j|0);d=R;g=d+48|0;do{f[d>>2]=0;d=d+4|0}while((d|0)<(g|0));f[P>>2]=0;if(!e){d=0;g=0}else{ch(R,e,P);d=f[R+12>>2]|0;g=f[R+16>>2]|0}f[P>>2]=0;h=R+16|0;i=g-d>>2;if(i>>>0>=e>>>0){if(i>>>0>e>>>0?(l=d+(e<<2)|0,(g|0)!=(l|0)):0)f[h>>2]=g+(~((g+-4-l|0)>>>2)<<2)}else ch(R+12|0,e-i|0,P);i=R+24|0;f[P>>2]=0;h=R+28|0;g=f[h>>2]|0;d=f[i>>2]|0;j=g-d>>2;if(j>>>0>=e>>>0){if(j>>>0>e>>>0?(m=d+(e<<2)|0,(g|0)!=(m|0)):0)f[h>>2]=g+(~((g+-4-m|0)>>>2)<<2)}else ch(i,e-j|0,P);i=R+36|0;f[P>>2]=0;h=R+40|0;g=f[h>>2]|0;d=f[i>>2]|0;j=g-d>>2;if(j>>>0>=e>>>0){if(j>>>0>e>>>0?(n=d+(e<<2)|0,(g|0)!=(n|0)):0)f[h>>2]=g+(~((g+-4-n|0)>>>2)<<2)}else ch(i,e-j|0,P);h=f[R>>2]|0;if((f[H>>2]|0)>0){l=a+16|0;i=a+32|0;m=a+12|0;j=0;do{d=f[h+(j<<2)>>2]|0;g=f[l>>2]|0;if((d|0)>(g|0)){k=f[i>>2]|0;f[k+(j<<2)>>2]=g}else{G=f[m>>2]|0;k=f[i>>2]|0;f[k+(j<<2)>>2]=(d|0)<(G|0)?G:d}j=j+1|0;d=f[H>>2]|0}while((j|0)<(d|0));if((d|0)>0){i=a+20|0;h=0;do{d=(f[b+(h<<2)>>2]|0)+(f[k+(h<<2)>>2]|0)|0;g=c+(h<<2)|0;f[g>>2]=d;if((d|0)<=(f[l>>2]|0)){if((d|0)<(f[m>>2]|0)){d=(f[i>>2]|0)+d|0;o=18}}else{d=d-(f[i>>2]|0)|0;o=18}if((o|0)==18){o=0;f[g>>2]=d}h=h+1|0}while((h|0)<(f[H>>2]|0))}}t=f[a+48>>2]|0;v=f[a+52>>2]|0;G=ln(16)|0;f[G>>2]=0;f[G+4>>2]=0;f[G+8>>2]=0;f[G+12>>2]=0;Dk(P,e);B=a+56|0;h=f[B>>2]|0;g=f[h+4>>2]|0;d=f[h>>2]|0;E=g-d|0;F=E>>2;a:do if((E|0)>4){A=t+64|0;x=t+28|0;z=(e|0)>0;D=a+16|0;y=a+32|0;E=a+12|0;C=a+20|0;w=e<<2;i=h;h=1;while(1){if(g-d>>2>>>0<=h>>>0){Kp(i);d=f[i>>2]|0}o=f[d+(h<<2)>>2]|0;r=o+((o|0)<0?0:((o>>>0)%3|0|0)==0?2:-1)|0;q=r>>>5;s=1<<(r&31);p=(r|0)<0;g=o;n=1;d=0;b:while(1){do{if((g|0)<=-1){o=61;break b}i=f[R+(d*12|0)>>2]|0;if(((f[(f[t>>2]|0)+(g>>>5<<2)>>2]&1<<(g&31)|0)==0?(Q=f[(f[(f[A>>2]|0)+12>>2]|0)+(g<<2)>>2]|0,(Q|0)>=0):0)?(K=f[x>>2]|0,m=f[v>>2]|0,I=f[m+(f[K+(Q<<2)>>2]<<2)>>2]|0,J=Q+1|0,J=f[m+(f[K+((((J|0)%3|0|0)==0?Q+-2|0:J)<<2)>>2]<<2)>>2]|0,K=f[m+(f[K+((((Q>>>0)%3|0|0)==0?2:-1)+Q<<2)>>2]<<2)>>2]|0,(I|0)<(h|0)&(J|0)<(h|0)&(K|0)<(h|0)):0){k=X(I,e)|0;l=X(J,e)|0;m=X(K,e)|0;if(z){j=0;do{f[i+(j<<2)>>2]=(f[c+(j+m<<2)>>2]|0)+(f[c+(j+l<<2)>>2]|0)-(f[c+(j+k<<2)>>2]|0);j=j+1|0}while((j|0)!=(e|0))}d=d+1|0;if((d|0)==4){d=4;o=42;break b}}do if(n){i=g+1|0;g=((i|0)%3|0|0)==0?g+-2|0:i;i=f[t>>2]|0;if(!(f[i+(g>>>5<<2)>>2]&1<<(g&31))){if((g|0)>=0){g=f[(f[(f[A>>2]|0)+12>>2]|0)+(g<<2)>>2]|0;j=g+1|0;if((g|0)>=0)g=((j|0)%3|0|0)==0?g+-2|0:j}}else g=-1073741824}else{g=(((g>>>0)%3|0|0)==0?2:-1)+g|0;i=f[t>>2]|0;if(!(f[i+(g>>>5<<2)>>2]&1<<(g&31))){if((g|0)>=0){g=f[(f[(f[A>>2]|0)+12>>2]|0)+(g<<2)>>2]|0;if((g|0)>=0)if(!((g>>>0)%3|0)){g=g+2|0;break}else{g=g+-1|0;break}}}else g=-1073741824}while(0);if((g|0)==(o|0)){o=61;break b}}while(!(n&(g|0)<0));g=(s&f[i+(q<<2)>>2]|0)!=0;if(g|p){g=g?-1073741824:r;n=0;continue}g=f[(f[(f[A>>2]|0)+12>>2]|0)+(r<<2)>>2]|0;if((g|0)<0){n=0;continue}if(!((g>>>0)%3|0)){g=g+2|0;n=0;continue}else{g=g+-1|0;n=0;continue}}if((o|0)==61)if((d|0)>0)o=42;else{O=X(h,e)|0;o=73}if((o|0)==42){o=0;if(z){ej(f[P>>2]|0,0,w|0)|0;k=d+-1|0;m=G+(k<<2)|0;k=f[a+60+(k*12|0)>>2]|0;l=f[P>>2]|0;n=0;g=0;do{s=f[m>>2]|0;f[m>>2]=s+1;if(!(f[k+(s>>>5<<2)>>2]&1<<(s&31))){i=f[R+(n*12|0)>>2]|0;j=0;do{s=l+(j<<2)|0;f[s>>2]=(f[s>>2]|0)+(f[i+(j<<2)>>2]|0);j=j+1|0}while((j|0)!=(e|0));g=g+1|0}n=n+1|0}while((n|0)!=(d|0))}else{i=d+-1|0;k=G+(i<<2)|0;i=f[a+60+(i*12|0)>>2]|0;j=f[k>>2]|0;l=0;g=0;do{s=j;j=j+1|0;f[k>>2]=j;g=g+((f[i+(s>>>5<<2)>>2]&1<<(s&31)|0)==0&1)|0;l=l+1|0}while((l|0)!=(d|0))}i=X(h,e)|0;if(g){k=f[P>>2]|0;if(z){d=0;do{s=k+(d<<2)|0;f[s>>2]=(f[s>>2]|0)/(g|0)|0;d=d+1|0}while((d|0)!=(e|0))}m=b+(i<<2)|0;l=c+(i<<2)|0;if((f[H>>2]|0)>0){i=0;do{d=f[k+(i<<2)>>2]|0;g=f[D>>2]|0;if((d|0)>(g|0)){j=f[y>>2]|0;f[j+(i<<2)>>2]=g}else{s=f[E>>2]|0;j=f[y>>2]|0;f[j+(i<<2)>>2]=(d|0)<(s|0)?s:d}i=i+1|0;d=f[H>>2]|0}while((i|0)<(d|0));if((d|0)>0){i=0;do{d=(f[m+(i<<2)>>2]|0)+(f[j+(i<<2)>>2]|0)|0;g=l+(i<<2)|0;f[g>>2]=d;if((d|0)<=(f[D>>2]|0)){if((d|0)<(f[E>>2]|0)){d=(f[C>>2]|0)+d|0;o=95}}else{d=d-(f[C>>2]|0)|0;o=95}if((o|0)==95){o=0;f[g>>2]=d}i=i+1|0}while((i|0)<(f[H>>2]|0))}}}else{O=i;o=73}}if((o|0)==73?(o=0,L=c+((X(h+-1|0,e)|0)<<2)|0,M=b+(O<<2)|0,N=c+(O<<2)|0,(f[H>>2]|0)>0):0){i=0;do{d=f[L+(i<<2)>>2]|0;g=f[D>>2]|0;if((d|0)>(g|0)){j=f[y>>2]|0;f[j+(i<<2)>>2]=g}else{s=f[E>>2]|0;j=f[y>>2]|0;f[j+(i<<2)>>2]=(d|0)<(s|0)?s:d}i=i+1|0;d=f[H>>2]|0}while((i|0)<(d|0));if((d|0)>0){i=0;do{d=(f[M+(i<<2)>>2]|0)+(f[j+(i<<2)>>2]|0)|0;g=N+(i<<2)|0;f[g>>2]=d;if((d|0)<=(f[D>>2]|0)){if((d|0)<(f[E>>2]|0)){d=(f[C>>2]|0)+d|0;o=83}}else{d=d-(f[C>>2]|0)|0;o=83}if((o|0)==83){o=0;f[g>>2]=d}i=i+1|0}while((i|0)<(f[H>>2]|0))}}h=h+1|0;if((h|0)>=(F|0)){d=P;break a}i=f[B>>2]|0;d=f[i>>2]|0;g=f[i+4>>2]|0}}else d=P;while(0);h=f[d>>2]|0;if(h|0){g=P+4|0;d=f[g>>2]|0;if((d|0)!=(h|0))f[g>>2]=d+(~((d+-4-h|0)>>>2)<<2);ar(h)}ar(G);g=f[R+36>>2]|0;if(g|0){h=R+40|0;d=f[h>>2]|0;if((d|0)!=(g|0))f[h>>2]=d+(~((d+-4-g|0)>>>2)<<2);ar(g)}d=f[R+24>>2]|0;if(d|0){h=R+28|0;g=f[h>>2]|0;if((g|0)!=(d|0))f[h>>2]=g+(~((g+-4-d|0)>>>2)<<2);ar(d)}d=f[R+12>>2]|0;if(d|0){h=R+16|0;g=f[h>>2]|0;if((g|0)!=(d|0))f[h>>2]=g+(~((g+-4-d|0)>>>2)<<2);ar(d)}h=f[R>>2]|0;if(!h){u=S;return 1}g=R+4|0;d=f[g>>2]|0;if((d|0)!=(h|0))f[g>>2]=d+(~((d+-4-h|0)>>>2)<<2);ar(h);u=S;return 1}function kb(a,c,d){a=a|0;c=c|0;d=d|0;var e=0,g=0,h=0,i=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,v=0,w=0,x=0,y=0,z=0,A=0,B=0,C=0,D=0,E=0,F=0,G=0,H=0,I=0,J=0,K=0;K=u;u=u+32|0;J=K+8|0;j=K;E=a+8|0;D=f[E>>2]|0;f[j>>2]=0;Oj(J,D,j);D=a+624|0;i=f[D>>2]|0;e=f[i>>2]|0;h=i+4|0;if(!e)e=i+8|0;else{g=f[h>>2]|0;if((g|0)!=(e|0))f[h>>2]=g+(~((g+-4-e|0)>>>2)<<2);ar(e);e=i+8|0;f[e>>2]=0;f[h>>2]=0;f[i>>2]=0}f[i>>2]=f[J>>2];f[h>>2]=f[J+4>>2];f[e>>2]=f[J+8>>2];C=f[E>>2]|0;f[j>>2]=0;Oj(J,C,j);C=a+636|0;i=f[C>>2]|0;e=f[i>>2]|0;h=i+4|0;if(!e)e=i+8|0;else{g=f[h>>2]|0;if((g|0)!=(e|0))f[h>>2]=g+(~((g+-4-e|0)>>>2)<<2);ar(e);e=i+8|0;f[e>>2]=0;f[h>>2]=0;f[i>>2]=0}f[i>>2]=f[J>>2];f[h>>2]=f[J+4>>2];f[e>>2]=f[J+8>>2];f[J>>2]=0;f[J+4>>2]=0;f[J+8>>2]=0;f[J+12>>2]=0;f[J+16>>2]=0;f[J+20>>2]=0;I=J+8|0;H=J+4|0;G=J+16|0;F=J+20|0;qc(J);e=f[H>>2]|0;g=(f[F>>2]|0)+(f[G>>2]|0)|0;if((f[I>>2]|0)==(e|0))e=0;else e=(f[e+(((g>>>0)/341|0)<<2)>>2]|0)+(((g>>>0)%341|0)*12|0)|0;f[e>>2]=c;f[e+4>>2]=0;f[e+8>>2]=0;e=(f[F>>2]|0)+1|0;f[F>>2]=e;a:do if(e|0){v=a+612|0;B=a+600|0;t=d+4|0;w=a+604|0;A=a+556|0;y=a+552|0;z=a+596|0;x=a+592|0;b:while(1){q=f[G>>2]|0;g=e+-1|0;m=q+g|0;r=f[H>>2]|0;p=f[r+(((m>>>0)/341|0)<<2)>>2]|0;m=(m>>>0)%341|0;s=f[p+(m*12|0)>>2]|0;h=f[p+(m*12|0)+4>>2]|0;m=f[p+(m*12|0)+8>>2]|0;f[F>>2]=g;g=f[I>>2]|0;r=g-r>>2;if((1-e-q+((r|0)==0?0:(r*341|0)+-1|0)|0)>>>0>681){ar(f[g+-4>>2]|0);f[I>>2]=(f[I>>2]|0)+-4}i=f[D>>2]|0;r=i+(m*12|0)|0;q=(f[C>>2]|0)+(m*12|0)|0;g=Si(a,s,q,h)|0;e=(f[a>>2]|0)-(f[(f[q>>2]|0)+(g<<2)>>2]|0)|0;c:do if(!e)if((s|0)>0){j=i+(m*12|0)+4|0;c=f[d>>2]|0;m=c+84|0;i=c+68|0;k=c+40|0;c=c+64|0;g=f[t>>2]|0;l=0;while(1){e=g;g=g+1|0;f[t>>2]=g;h=f[r>>2]|0;if(((f[j>>2]|0)-h|0)!=12){o=23;break b}if(!(b[m>>0]|0))e=f[(f[i>>2]|0)+(e<<2)>>2]|0;p=k;q=f[p>>2]|0;p=kn(q|0,f[p+4>>2]|0,e|0,((e|0)<0)<<31>>31|0)|0;Mg((f[f[c>>2]>>2]|0)+p|0,h|0,q|0)|0;l=l+1|0;if((l|0)>=(s|0)){o=15;break}}}else o=15;else{if(!s){o=28;break b}if(s>>>0<3){i=f[v>>2]|0;f[i>>2]=g;e=f[E>>2]|0;if(e>>>0>1){h=1;do{g=(g|0)==(e+-1|0)?0:g+1|0;f[i+(h<<2)>>2]=g;h=h+1|0;e=f[E>>2]|0}while(h>>>0>>0)}g=0;while(1){if(!e)i=f[B>>2]|0;else{k=f[v>>2]|0;l=f[B>>2]|0;m=f[q>>2]|0;i=l;o=0;do{n=k+(o<<2)|0;f[l+(f[n>>2]<<2)>>2]=0;e=f[n>>2]|0;p=(f[a>>2]|0)-(f[m+(e<<2)>>2]|0)|0;do if(p|0){h=l+(e<<2)|0;if((p|0)>=33){o=42;break b}if((p|0)<=0){o=44;break b}j=f[A>>2]|0;c=32-j|0;e=f[y>>2]|0;j=f[e>>2]<(c|0)){p=p-c|0;f[A>>2]=p;e=e+4|0;f[y>>2]=e;p=32-p|0;f[h>>2]=(f[e>>2]|0)>>>p|j>>>(p-c|0);break}f[h>>2]=j>>>(32-p|0);p=(f[A>>2]|0)+p|0;f[A>>2]=p;if((p|0)!=32)break;f[y>>2]=e+4;f[A>>2]=0}while(0);n=f[n>>2]|0;p=l+(n<<2)|0;f[p>>2]=f[p>>2]|f[(f[r>>2]|0)+(n<<2)>>2];o=o+1|0}while(o>>>0<(f[E>>2]|0)>>>0)}h=f[d>>2]|0;e=f[t>>2]|0;f[t>>2]=e+1;if(((f[w>>2]|0)-i|0)!=12){o=37;break b}if(!(b[h+84>>0]|0))e=f[(f[h+68>>2]|0)+(e<<2)>>2]|0;o=h+40|0;p=f[o>>2]|0;o=kn(p|0,f[o+4>>2]|0,e|0,((e|0)<0)<<31>>31|0)|0;Mg((f[f[h+64>>2]>>2]|0)+o|0,i|0,p|0)|0;g=g+1|0;if(g>>>0>=s>>>0){o=15;break c}e=f[E>>2]|0}}c=1<>2]|0;e=f[r>>2]|0;j=e;i=f[(f[D>>2]|0)+(n*12|0)>>2]|0;if((h|0)!=(e|0)){h=h-e>>2;e=0;do{f[i+(e<<2)>>2]=f[j+(e<<2)>>2];e=e+1|0}while(e>>>0>>0)}i=i+(g<<2)|0;f[i>>2]=(f[i>>2]|0)+c;i=(_(s|0)|0)^31;if(!i)e=0;else{h=0;e=0;do{e=(Tk(a+12+(h<<4)|0)|0)&1|e<<1;h=h+1|0}while((h|0)!=(i|0))}j=(s>>>1)-e|0;h=s-j|0;if((j|0)==(h|0)){k=j;l=j}else{s=f[z>>2]|0;e=f[x>>2]|0;i=(f[e>>2]&1<<31-s|0)!=0;s=s+1|0;f[z>>2]=s;if((s|0)==32){f[x>>2]=e+4;f[z>>2]=0}k=i?j:h;l=i?h:j}e=f[C>>2]|0;c=f[e+(m*12|0)>>2]|0;h=c+(g<<2)|0;f[h>>2]=(f[h>>2]|0)+1;h=f[e+(m*12|0)+4>>2]|0;i=c;if((h|0)!=(i|0)){j=f[e+(n*12|0)>>2]|0;h=h-i>>2;e=0;do{f[j+(e<<2)>>2]=f[c+(e<<2)>>2];e=e+1|0}while(e>>>0>>0)}if(k|0){j=f[I>>2]|0;i=f[H>>2]|0;s=j-i>>2;e=f[G>>2]|0;h=f[F>>2]|0;if((((s|0)==0?0:(s*341|0)+-1|0)|0)==(h+e|0)){qc(J);e=f[G>>2]|0;h=f[F>>2]|0;j=f[I>>2]|0;i=f[H>>2]|0}e=h+e|0;if((j|0)==(i|0))e=0;else e=(f[i+(((e>>>0)/341|0)<<2)>>2]|0)+(((e>>>0)%341|0)*12|0)|0;f[e>>2]=k;f[e+4>>2]=g;f[e+8>>2]=m;f[F>>2]=(f[F>>2]|0)+1}if(!l)o=15;else{j=f[I>>2]|0;i=f[H>>2]|0;s=j-i>>2;e=f[G>>2]|0;h=f[F>>2]|0;if((((s|0)==0?0:(s*341|0)+-1|0)|0)==(h+e|0)){qc(J);e=f[G>>2]|0;h=f[F>>2]|0;j=f[I>>2]|0;i=f[H>>2]|0}e=h+e|0;if((j|0)==(i|0))e=0;else e=(f[i+(((e>>>0)/341|0)<<2)>>2]|0)+(((e>>>0)%341|0)*12|0)|0;f[e>>2]=l;f[e+4>>2]=g;f[e+8>>2]=n;e=(f[F>>2]|0)+1|0;f[F>>2]=e}}while(0);if((o|0)==15){o=0;e=f[F>>2]|0}if(!e)break a}if((o|0)==23)Ga(17368,17398,51,17461);else if((o|0)==28)Ga(17720,17758,223,17846);else if((o|0)==37)Ga(17368,17398,51,17461);else if((o|0)==42)Ga(17861,17885,48,17934);else if((o|0)==44)Ga(17963,17885,49,17934)}while(0);e=f[H>>2]|0;g=f[G>>2]|0;i=e+(((g>>>0)/341|0)<<2)|0;h=f[I>>2]|0;c=h;k=e;if((h|0)==(e|0)){j=0;g=0}else{g=(f[i>>2]|0)+(((g>>>0)%341|0)*12|0)|0;j=g}d:while(1){do{if((g|0)==(j|0))break d;g=g+12|0}while((g-(f[i>>2]|0)|0)!=4092);g=i+4|0;i=g;g=f[g>>2]|0}f[F>>2]=0;g=c-k>>2;if(g>>>0>2)do{ar(f[e>>2]|0);e=(f[H>>2]|0)+4|0;f[H>>2]=e;h=f[I>>2]|0;g=h-e>>2}while(g>>>0>2);switch(g|0){case 1:{g=170;o=88;break}case 2:{g=341;o=88;break}default:{}}if((o|0)==88)f[G>>2]=g;if((e|0)!=(h|0)){do{ar(f[e>>2]|0);e=e+4|0}while((e|0)!=(h|0));e=f[H>>2]|0;g=f[I>>2]|0;if((g|0)!=(e|0))f[I>>2]=g+(~((g+-4-e|0)>>>2)<<2)}e=f[J>>2]|0;if(!e){u=K;return}ar(e);u=K;return}function lb(a,c,d){a=a|0;c=c|0;d=d|0;var e=0,g=0,h=0,i=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,v=0,w=0,x=0,y=0,z=0,A=0,B=0,C=0,D=0,E=0,F=0,G=0,H=0,I=0,J=0,K=0;K=u;u=u+32|0;J=K+8|0;j=K;E=a+8|0;D=f[E>>2]|0;f[j>>2]=0;Oj(J,D,j);D=a+624|0;i=f[D>>2]|0;e=f[i>>2]|0;h=i+4|0;if(!e)e=i+8|0;else{g=f[h>>2]|0;if((g|0)!=(e|0))f[h>>2]=g+(~((g+-4-e|0)>>>2)<<2);ar(e);e=i+8|0;f[e>>2]=0;f[h>>2]=0;f[i>>2]=0}f[i>>2]=f[J>>2];f[h>>2]=f[J+4>>2];f[e>>2]=f[J+8>>2];C=f[E>>2]|0;f[j>>2]=0;Oj(J,C,j);C=a+636|0;i=f[C>>2]|0;e=f[i>>2]|0;h=i+4|0;if(!e)e=i+8|0;else{g=f[h>>2]|0;if((g|0)!=(e|0))f[h>>2]=g+(~((g+-4-e|0)>>>2)<<2);ar(e);e=i+8|0;f[e>>2]=0;f[h>>2]=0;f[i>>2]=0}f[i>>2]=f[J>>2];f[h>>2]=f[J+4>>2];f[e>>2]=f[J+8>>2];f[J>>2]=0;f[J+4>>2]=0;f[J+8>>2]=0;f[J+12>>2]=0;f[J+16>>2]=0;f[J+20>>2]=0;I=J+8|0;H=J+4|0;G=J+16|0;F=J+20|0;qc(J);e=f[H>>2]|0;g=(f[F>>2]|0)+(f[G>>2]|0)|0;if((f[I>>2]|0)==(e|0))e=0;else e=(f[e+(((g>>>0)/341|0)<<2)>>2]|0)+(((g>>>0)%341|0)*12|0)|0;f[e>>2]=c;f[e+4>>2]=0;f[e+8>>2]=0;e=(f[F>>2]|0)+1|0;f[F>>2]=e;a:do if(e|0){v=a+612|0;B=a+600|0;t=d+4|0;w=a+604|0;A=a+556|0;y=a+552|0;z=a+596|0;x=a+592|0;b:while(1){q=f[G>>2]|0;g=e+-1|0;m=q+g|0;r=f[H>>2]|0;p=f[r+(((m>>>0)/341|0)<<2)>>2]|0;m=(m>>>0)%341|0;s=f[p+(m*12|0)>>2]|0;h=f[p+(m*12|0)+4>>2]|0;m=f[p+(m*12|0)+8>>2]|0;f[F>>2]=g;g=f[I>>2]|0;r=g-r>>2;if((1-e-q+((r|0)==0?0:(r*341|0)+-1|0)|0)>>>0>681){ar(f[g+-4>>2]|0);f[I>>2]=(f[I>>2]|0)+-4}i=f[D>>2]|0;r=i+(m*12|0)|0;q=(f[C>>2]|0)+(m*12|0)|0;g=un(a,s,q,h)|0;e=(f[a>>2]|0)-(f[(f[q>>2]|0)+(g<<2)>>2]|0)|0;c:do if(!e)if((s|0)>0){j=i+(m*12|0)+4|0;c=f[d>>2]|0;m=c+84|0;i=c+68|0;k=c+40|0;c=c+64|0;g=f[t>>2]|0;l=0;while(1){e=g;g=g+1|0;f[t>>2]=g;h=f[r>>2]|0;if(((f[j>>2]|0)-h|0)!=12){o=23;break b}if(!(b[m>>0]|0))e=f[(f[i>>2]|0)+(e<<2)>>2]|0;p=k;q=f[p>>2]|0;p=kn(q|0,f[p+4>>2]|0,e|0,((e|0)<0)<<31>>31|0)|0;Mg((f[f[c>>2]>>2]|0)+p|0,h|0,q|0)|0;l=l+1|0;if((l|0)>=(s|0)){o=15;break}}}else o=15;else{if(!s){o=28;break b}if(s>>>0<3){i=f[v>>2]|0;f[i>>2]=g;e=f[E>>2]|0;if(e>>>0>1){h=1;do{g=(g|0)==(e+-1|0)?0:g+1|0;f[i+(h<<2)>>2]=g;h=h+1|0;e=f[E>>2]|0}while(h>>>0>>0)}g=0;while(1){if(!e)i=f[B>>2]|0;else{k=f[v>>2]|0;l=f[B>>2]|0;m=f[q>>2]|0;i=l;o=0;do{n=k+(o<<2)|0;f[l+(f[n>>2]<<2)>>2]=0;e=f[n>>2]|0;p=(f[a>>2]|0)-(f[m+(e<<2)>>2]|0)|0;do if(p|0){h=l+(e<<2)|0;if((p|0)>=33){o=42;break b}if((p|0)<=0){o=44;break b}j=f[A>>2]|0;c=32-j|0;e=f[y>>2]|0;j=f[e>>2]<(c|0)){p=p-c|0;f[A>>2]=p;e=e+4|0;f[y>>2]=e;p=32-p|0;f[h>>2]=(f[e>>2]|0)>>>p|j>>>(p-c|0);break}f[h>>2]=j>>>(32-p|0);p=(f[A>>2]|0)+p|0;f[A>>2]=p;if((p|0)!=32)break;f[y>>2]=e+4;f[A>>2]=0}while(0);n=f[n>>2]|0;p=l+(n<<2)|0;f[p>>2]=f[p>>2]|f[(f[r>>2]|0)+(n<<2)>>2];o=o+1|0}while(o>>>0<(f[E>>2]|0)>>>0)}h=f[d>>2]|0;e=f[t>>2]|0;f[t>>2]=e+1;if(((f[w>>2]|0)-i|0)!=12){o=37;break b}if(!(b[h+84>>0]|0))e=f[(f[h+68>>2]|0)+(e<<2)>>2]|0;o=h+40|0;p=f[o>>2]|0;o=kn(p|0,f[o+4>>2]|0,e|0,((e|0)<0)<<31>>31|0)|0;Mg((f[f[h+64>>2]>>2]|0)+o|0,i|0,p|0)|0;g=g+1|0;if(g>>>0>=s>>>0){o=15;break c}e=f[E>>2]|0}}c=1<>2]|0;e=f[r>>2]|0;j=e;i=f[(f[D>>2]|0)+(n*12|0)>>2]|0;if((h|0)!=(e|0)){h=h-e>>2;e=0;do{f[i+(e<<2)>>2]=f[j+(e<<2)>>2];e=e+1|0}while(e>>>0>>0)}i=i+(g<<2)|0;f[i>>2]=(f[i>>2]|0)+c;i=(_(s|0)|0)^31;if(!i)e=0;else{h=0;e=0;do{e=(Tk(a+12+(h<<4)|0)|0)&1|e<<1;h=h+1|0}while((h|0)!=(i|0))}j=(s>>>1)-e|0;h=s-j|0;if((j|0)==(h|0)){k=j;l=j}else{s=f[z>>2]|0;e=f[x>>2]|0;i=(f[e>>2]&1<<31-s|0)!=0;s=s+1|0;f[z>>2]=s;if((s|0)==32){f[x>>2]=e+4;f[z>>2]=0}k=i?j:h;l=i?h:j}e=f[C>>2]|0;c=f[e+(m*12|0)>>2]|0;h=c+(g<<2)|0;f[h>>2]=(f[h>>2]|0)+1;h=f[e+(m*12|0)+4>>2]|0;i=c;if((h|0)!=(i|0)){j=f[e+(n*12|0)>>2]|0;h=h-i>>2;e=0;do{f[j+(e<<2)>>2]=f[c+(e<<2)>>2];e=e+1|0}while(e>>>0>>0)}if(k|0){j=f[I>>2]|0;i=f[H>>2]|0;s=j-i>>2;e=f[G>>2]|0;h=f[F>>2]|0;if((((s|0)==0?0:(s*341|0)+-1|0)|0)==(h+e|0)){qc(J);e=f[G>>2]|0;h=f[F>>2]|0;j=f[I>>2]|0;i=f[H>>2]|0}e=h+e|0;if((j|0)==(i|0))e=0;else e=(f[i+(((e>>>0)/341|0)<<2)>>2]|0)+(((e>>>0)%341|0)*12|0)|0;f[e>>2]=k;f[e+4>>2]=g;f[e+8>>2]=m;f[F>>2]=(f[F>>2]|0)+1}if(!l)o=15;else{j=f[I>>2]|0;i=f[H>>2]|0;s=j-i>>2;e=f[G>>2]|0;h=f[F>>2]|0;if((((s|0)==0?0:(s*341|0)+-1|0)|0)==(h+e|0)){qc(J);e=f[G>>2]|0;h=f[F>>2]|0;j=f[I>>2]|0;i=f[H>>2]|0}e=h+e|0;if((j|0)==(i|0))e=0;else e=(f[i+(((e>>>0)/341|0)<<2)>>2]|0)+(((e>>>0)%341|0)*12|0)|0;f[e>>2]=l;f[e+4>>2]=g;f[e+8>>2]=n;e=(f[F>>2]|0)+1|0;f[F>>2]=e}}while(0);if((o|0)==15){o=0;e=f[F>>2]|0}if(!e)break a}if((o|0)==23)Ga(17368,17398,51,17461);else if((o|0)==28)Ga(17720,17758,223,17846);else if((o|0)==37)Ga(17368,17398,51,17461);else if((o|0)==42)Ga(17861,17885,48,17934);else if((o|0)==44)Ga(17963,17885,49,17934)}while(0);e=f[H>>2]|0;g=f[G>>2]|0;i=e+(((g>>>0)/341|0)<<2)|0;h=f[I>>2]|0;c=h;k=e;if((h|0)==(e|0)){j=0;g=0}else{g=(f[i>>2]|0)+(((g>>>0)%341|0)*12|0)|0;j=g}d:while(1){do{if((g|0)==(j|0))break d;g=g+12|0}while((g-(f[i>>2]|0)|0)!=4092);g=i+4|0;i=g;g=f[g>>2]|0}f[F>>2]=0;g=c-k>>2;if(g>>>0>2)do{ar(f[e>>2]|0);e=(f[H>>2]|0)+4|0;f[H>>2]=e;h=f[I>>2]|0;g=h-e>>2}while(g>>>0>2);switch(g|0){case 1:{g=170;o=88;break}case 2:{g=341;o=88;break}default:{}}if((o|0)==88)f[G>>2]=g;if((e|0)!=(h|0)){do{ar(f[e>>2]|0);e=e+4|0}while((e|0)!=(h|0));e=f[H>>2]|0;g=f[I>>2]|0;if((g|0)!=(e|0))f[I>>2]=g+(~((g+-4-e|0)>>>2)<<2)}e=f[J>>2]|0;if(!e){u=K;return}ar(e);u=K;return}function mb(a,b,c){a=a|0;b=b|0;c=c|0;var d=0,e=0,g=0,h=0,i=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,v=0,w=0,x=0,y=0,z=0,A=0,B=0,C=0,D=0,E=0,F=0,G=0,H=0,I=0,J=0,K=0,L=0,M=0,N=0,O=0;O=u;u=u+48|0;I=O+24|0;N=O;H=a+8|0;G=f[H>>2]|0;f[N>>2]=0;Oj(I,G,N);G=a+624|0;h=f[G>>2]|0;d=f[h>>2]|0;g=h+4|0;if(!d)d=h+8|0;else{e=f[g>>2]|0;if((e|0)!=(d|0))f[g>>2]=e+(~((e+-4-d|0)>>>2)<<2);ar(d);d=h+8|0;f[d>>2]=0;f[g>>2]=0;f[h>>2]=0}f[h>>2]=f[I>>2];f[g>>2]=f[I+4>>2];f[d>>2]=f[I+8>>2];F=f[H>>2]|0;f[N>>2]=0;Oj(I,F,N);F=a+636|0;h=f[F>>2]|0;d=f[h>>2]|0;g=h+4|0;if(!d)d=h+8|0;else{e=f[g>>2]|0;if((e|0)!=(d|0))f[g>>2]=e+(~((e+-4-d|0)>>>2)<<2);ar(d);d=h+8|0;f[d>>2]=0;f[g>>2]=0;f[h>>2]=0}f[h>>2]=f[I>>2];f[g>>2]=f[I+4>>2];f[d>>2]=f[I+8>>2];f[N>>2]=0;f[N+4>>2]=0;f[N+8>>2]=0;f[N+12>>2]=0;f[N+16>>2]=0;f[N+20>>2]=0;M=N+8|0;L=N+4|0;K=N+16|0;J=N+20|0;qc(N);d=f[L>>2]|0;e=(f[J>>2]|0)+(f[K>>2]|0)|0;if((f[M>>2]|0)==(d|0))d=0;else d=(f[d+(((e>>>0)/341|0)<<2)>>2]|0)+(((e>>>0)%341|0)*12|0)|0;f[d>>2]=b;f[d+4>>2]=0;f[d+8>>2]=0;d=(f[J>>2]|0)+1|0;f[J>>2]=d;a:do if(d|0){w=a+612|0;v=a+600|0;z=I+4|0;B=I+8|0;E=a+556|0;y=a+552|0;D=a+596|0;x=a+592|0;A=I+4|0;C=I+8|0;b:while(1){r=f[K>>2]|0;e=d+-1|0;l=r+e|0;s=f[L>>2]|0;q=f[s+(((l>>>0)/341|0)<<2)>>2]|0;l=(l>>>0)%341|0;t=f[q+(l*12|0)>>2]|0;g=f[q+(l*12|0)+4>>2]|0;l=f[q+(l*12|0)+8>>2]|0;f[J>>2]=e;e=f[M>>2]|0;s=e-s>>2;if((1-d-r+((s|0)==0?0:(s*341|0)+-1|0)|0)>>>0>681){ar(f[e+-4>>2]|0);f[M>>2]=(f[M>>2]|0)+-4}h=f[G>>2]|0;s=h+(l*12|0)|0;r=(f[F>>2]|0)+(l*12|0)|0;e=Si(a,t,r,g)|0;d=(f[a>>2]|0)-(f[(f[r>>2]|0)+(e<<2)>>2]|0)|0;c:do if(!d)if((t|0)>0){i=f[c>>2]|0;g=i+4|0;h=i+8|0;b=0;do{e=f[s>>2]|0;d=f[e>>2]|0;f[I>>2]=d;f[A>>2]=f[e+4>>2];f[C>>2]=f[e+8>>2];e=f[g>>2]|0;if(e>>>0<(f[h>>2]|0)>>>0){f[e>>2]=d;f[e+4>>2]=f[A>>2];f[e+8>>2]=f[C>>2];f[g>>2]=e+12}else mh(i,I);b=b+1|0}while((b|0)<(t|0));n=15}else n=15;else{if(!t){n=27;break b}if(t>>>0<3){h=f[w>>2]|0;f[h>>2]=e;d=f[H>>2]|0;if(d>>>0>1){g=1;do{e=(e|0)==(d+-1|0)?0:e+1|0;f[h+(g<<2)>>2]=e;g=g+1|0;d=f[H>>2]|0}while(g>>>0>>0)}q=f[c>>2]|0;o=q+4|0;p=q+8|0;e=0;while(1){if(d|0){i=f[w>>2]|0;j=f[v>>2]|0;k=f[r>>2]|0;m=0;do{l=i+(m<<2)|0;f[j+(f[l>>2]<<2)>>2]=0;d=f[l>>2]|0;n=(f[a>>2]|0)-(f[k+(d<<2)>>2]|0)|0;do if(n|0){g=j+(d<<2)|0;if((n|0)>=33){n=36;break b}if((n|0)<=0){n=38;break b}h=f[E>>2]|0;b=32-h|0;d=f[y>>2]|0;h=f[d>>2]<(b|0)){n=n-b|0;f[E>>2]=n;d=d+4|0;f[y>>2]=d;n=32-n|0;f[g>>2]=(f[d>>2]|0)>>>n|h>>>(n-b|0);break}f[g>>2]=h>>>(32-n|0);n=(f[E>>2]|0)+n|0;f[E>>2]=n;if((n|0)!=32)break;f[y>>2]=d+4;f[E>>2]=0}while(0);l=f[l>>2]|0;n=j+(l<<2)|0;f[n>>2]=f[n>>2]|f[(f[s>>2]|0)+(l<<2)>>2];m=m+1|0}while(m>>>0<(f[H>>2]|0)>>>0)}g=f[v>>2]|0;d=f[g>>2]|0;f[I>>2]=d;f[z>>2]=f[g+4>>2];f[B>>2]=f[g+8>>2];g=f[o>>2]|0;if(g>>>0<(f[p>>2]|0)>>>0){f[g>>2]=d;f[g+4>>2]=f[z>>2];f[g+8>>2]=f[B>>2];f[o>>2]=g+12}else mh(q,I);e=e+1|0;if(e>>>0>=t>>>0){n=15;break c}d=f[H>>2]|0}}i=1<>2]|0;d=f[s>>2]|0;b=d;h=f[(f[G>>2]|0)+(m*12|0)>>2]|0;if((g|0)!=(d|0)){g=g-d>>2;d=0;do{f[h+(d<<2)>>2]=f[b+(d<<2)>>2];d=d+1|0}while(d>>>0>>0)}h=h+(e<<2)|0;f[h>>2]=(f[h>>2]|0)+i;h=(_(t|0)|0)^31;if(!h)d=0;else{g=0;d=0;do{d=(Tk(a+12+(g<<4)|0)|0)&1|d<<1;g=g+1|0}while((g|0)!=(h|0))}b=(t>>>1)-d|0;g=t-b|0;if((b|0)==(g|0)){j=b;k=b}else{t=f[D>>2]|0;d=f[x>>2]|0;h=(f[d>>2]&1<<31-t|0)!=0;t=t+1|0;f[D>>2]=t;if((t|0)==32){f[x>>2]=d+4;f[D>>2]=0}j=h?b:g;k=h?g:b}d=f[F>>2]|0;i=f[d+(l*12|0)>>2]|0;g=i+(e<<2)|0;f[g>>2]=(f[g>>2]|0)+1;g=f[d+(l*12|0)+4>>2]|0;h=i;if((g|0)!=(h|0)){b=f[d+(m*12|0)>>2]|0;g=g-h>>2;d=0;do{f[b+(d<<2)>>2]=f[i+(d<<2)>>2];d=d+1|0}while(d>>>0>>0)}if(j|0){b=f[M>>2]|0;g=f[L>>2]|0;t=b-g>>2;d=f[K>>2]|0;h=f[J>>2]|0;if((((t|0)==0?0:(t*341|0)+-1|0)|0)==(h+d|0)){qc(N);d=f[K>>2]|0;h=f[J>>2]|0;b=f[M>>2]|0;g=f[L>>2]|0}d=h+d|0;if((b|0)==(g|0))d=0;else d=(f[g+(((d>>>0)/341|0)<<2)>>2]|0)+(((d>>>0)%341|0)*12|0)|0;f[d>>2]=j;f[d+4>>2]=e;f[d+8>>2]=l;f[J>>2]=(f[J>>2]|0)+1}if(!k)n=15;else{b=f[M>>2]|0;h=f[L>>2]|0;t=b-h>>2;d=f[K>>2]|0;g=f[J>>2]|0;if((((t|0)==0?0:(t*341|0)+-1|0)|0)==(g+d|0)){qc(N);d=f[K>>2]|0;g=f[J>>2]|0;b=f[M>>2]|0;h=f[L>>2]|0}d=g+d|0;if((b|0)==(h|0))d=0;else d=(f[h+(((d>>>0)/341|0)<<2)>>2]|0)+(((d>>>0)%341|0)*12|0)|0;f[d>>2]=k;f[d+4>>2]=e;f[d+8>>2]=m;d=(f[J>>2]|0)+1|0;f[J>>2]=d}}while(0);if((n|0)==15){n=0;d=f[J>>2]|0}if(!d)break a}if((n|0)==27)Ga(17720,17758,223,17846);else if((n|0)==36)Ga(17861,17885,48,17934);else if((n|0)==38)Ga(17963,17885,49,17934)}while(0);d=f[L>>2]|0;e=f[K>>2]|0;h=d+(((e>>>0)/341|0)<<2)|0;g=f[M>>2]|0;i=g;j=d;if((g|0)==(d|0)){b=0;e=0}else{e=(f[h>>2]|0)+(((e>>>0)%341|0)*12|0)|0;b=e}d:while(1){do{if((e|0)==(b|0))break d;e=e+12|0}while((e-(f[h>>2]|0)|0)!=4092);e=h+4|0;h=e;e=f[e>>2]|0}f[J>>2]=0;e=i-j>>2;if(e>>>0>2)do{ar(f[d>>2]|0);d=(f[L>>2]|0)+4|0;f[L>>2]=d;g=f[M>>2]|0;e=g-d>>2}while(e>>>0>2);switch(e|0){case 1:{e=170;n=85;break}case 2:{e=341;n=85;break}default:{}}if((n|0)==85)f[K>>2]=e;if((d|0)!=(g|0)){do{ar(f[d>>2]|0);d=d+4|0}while((d|0)!=(g|0));d=f[L>>2]|0;e=f[M>>2]|0;if((e|0)!=(d|0))f[M>>2]=e+(~((e+-4-d|0)>>>2)<<2)}d=f[N>>2]|0;if(!d){u=O;return}ar(d);u=O;return}function nb(a,c,d){a=a|0;c=c|0;d=d|0;var e=0,g=0,h=0,i=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,v=0,w=0,x=0,y=0,z=0,A=0,B=0,C=0,D=0,E=0,F=0,G=0,H=0,I=0,J=0,K=0;K=u;u=u+32|0;J=K+8|0;j=K;E=a+8|0;D=f[E>>2]|0;f[j>>2]=0;Oj(J,D,j);D=a+624|0;i=f[D>>2]|0;e=f[i>>2]|0;h=i+4|0;if(!e)e=i+8|0;else{g=f[h>>2]|0;if((g|0)!=(e|0))f[h>>2]=g+(~((g+-4-e|0)>>>2)<<2);ar(e);e=i+8|0;f[e>>2]=0;f[h>>2]=0;f[i>>2]=0}f[i>>2]=f[J>>2];f[h>>2]=f[J+4>>2];f[e>>2]=f[J+8>>2];C=f[E>>2]|0;f[j>>2]=0;Oj(J,C,j);C=a+636|0;i=f[C>>2]|0;e=f[i>>2]|0;h=i+4|0;if(!e)e=i+8|0;else{g=f[h>>2]|0;if((g|0)!=(e|0))f[h>>2]=g+(~((g+-4-e|0)>>>2)<<2);ar(e);e=i+8|0;f[e>>2]=0;f[h>>2]=0;f[i>>2]=0}f[i>>2]=f[J>>2];f[h>>2]=f[J+4>>2];f[e>>2]=f[J+8>>2];f[J>>2]=0;f[J+4>>2]=0;f[J+8>>2]=0;f[J+12>>2]=0;f[J+16>>2]=0;f[J+20>>2]=0;I=J+8|0;H=J+4|0;G=J+16|0;F=J+20|0;qc(J);e=f[H>>2]|0;g=(f[F>>2]|0)+(f[G>>2]|0)|0;if((f[I>>2]|0)==(e|0))e=0;else e=(f[e+(((g>>>0)/341|0)<<2)>>2]|0)+(((g>>>0)%341|0)*12|0)|0;f[e>>2]=c;f[e+4>>2]=0;f[e+8>>2]=0;e=(f[F>>2]|0)+1|0;f[F>>2]=e;a:do if(e|0){v=a+612|0;B=a+600|0;t=d+4|0;w=a+604|0;A=a+556|0;y=a+552|0;z=a+596|0;x=a+592|0;b:while(1){q=f[G>>2]|0;g=e+-1|0;m=q+g|0;r=f[H>>2]|0;p=f[r+(((m>>>0)/341|0)<<2)>>2]|0;m=(m>>>0)%341|0;s=f[p+(m*12|0)>>2]|0;h=f[p+(m*12|0)+4>>2]|0;m=f[p+(m*12|0)+8>>2]|0;f[F>>2]=g;g=f[I>>2]|0;r=g-r>>2;if((1-e-q+((r|0)==0?0:(r*341|0)+-1|0)|0)>>>0>681){ar(f[g+-4>>2]|0);f[I>>2]=(f[I>>2]|0)+-4}i=f[D>>2]|0;r=i+(m*12|0)|0;g=((f[E>>2]|0)+-1|0)==(h|0)?0:h+1|0;q=(f[C>>2]|0)+(m*12|0)|0;e=(f[a>>2]|0)-(f[(f[q>>2]|0)+(g<<2)>>2]|0)|0;c:do if(!e)if((s|0)>0){j=i+(m*12|0)+4|0;c=f[d>>2]|0;m=c+84|0;i=c+68|0;k=c+40|0;c=c+64|0;g=f[t>>2]|0;l=0;while(1){e=g;g=g+1|0;f[t>>2]=g;h=f[r>>2]|0;if(((f[j>>2]|0)-h|0)!=12){o=23;break b}if(!(b[m>>0]|0))e=f[(f[i>>2]|0)+(e<<2)>>2]|0;p=k;q=f[p>>2]|0;p=kn(q|0,f[p+4>>2]|0,e|0,((e|0)<0)<<31>>31|0)|0;Mg((f[f[c>>2]>>2]|0)+p|0,h|0,q|0)|0;l=l+1|0;if((l|0)>=(s|0)){o=15;break}}}else o=15;else{if(!s){o=28;break b}if(s>>>0<3){i=f[v>>2]|0;f[i>>2]=g;e=f[E>>2]|0;if(e>>>0>1){h=1;do{g=(g|0)==(e+-1|0)?0:g+1|0;f[i+(h<<2)>>2]=g;h=h+1|0;e=f[E>>2]|0}while(h>>>0>>0)}g=0;while(1){if(!e)i=f[B>>2]|0;else{k=f[v>>2]|0;l=f[B>>2]|0;m=f[q>>2]|0;i=l;o=0;do{n=k+(o<<2)|0;f[l+(f[n>>2]<<2)>>2]=0;e=f[n>>2]|0;p=(f[a>>2]|0)-(f[m+(e<<2)>>2]|0)|0;do if(p|0){h=l+(e<<2)|0;if((p|0)>=33){o=42;break b}if((p|0)<=0){o=44;break b}j=f[A>>2]|0;c=32-j|0;e=f[y>>2]|0;j=f[e>>2]<(c|0)){p=p-c|0;f[A>>2]=p;e=e+4|0;f[y>>2]=e;p=32-p|0;f[h>>2]=(f[e>>2]|0)>>>p|j>>>(p-c|0);break}f[h>>2]=j>>>(32-p|0);p=(f[A>>2]|0)+p|0;f[A>>2]=p;if((p|0)!=32)break;f[y>>2]=e+4;f[A>>2]=0}while(0);n=f[n>>2]|0;p=l+(n<<2)|0;f[p>>2]=f[p>>2]|f[(f[r>>2]|0)+(n<<2)>>2];o=o+1|0}while(o>>>0<(f[E>>2]|0)>>>0)}h=f[d>>2]|0;e=f[t>>2]|0;f[t>>2]=e+1;if(((f[w>>2]|0)-i|0)!=12){o=37;break b}if(!(b[h+84>>0]|0))e=f[(f[h+68>>2]|0)+(e<<2)>>2]|0;o=h+40|0;p=f[o>>2]|0;o=kn(p|0,f[o+4>>2]|0,e|0,((e|0)<0)<<31>>31|0)|0;Mg((f[f[h+64>>2]>>2]|0)+o|0,i|0,p|0)|0;g=g+1|0;if(g>>>0>=s>>>0){o=15;break c}e=f[E>>2]|0}}c=1<>2]|0;e=f[r>>2]|0;j=e;i=f[i+(n*12|0)>>2]|0;if((h|0)!=(e|0)){h=h-e>>2;e=0;do{f[i+(e<<2)>>2]=f[j+(e<<2)>>2];e=e+1|0}while(e>>>0>>0)}i=i+(g<<2)|0;f[i>>2]=(f[i>>2]|0)+c;i=(_(s|0)|0)^31;if(!i)e=0;else{h=0;e=0;do{e=(Tk(a+12+(h<<4)|0)|0)&1|e<<1;h=h+1|0}while((h|0)!=(i|0))}j=(s>>>1)-e|0;h=s-j|0;if((j|0)==(h|0)){k=j;l=j}else{s=f[z>>2]|0;e=f[x>>2]|0;i=(f[e>>2]&1<<31-s|0)!=0;s=s+1|0;f[z>>2]=s;if((s|0)==32){f[x>>2]=e+4;f[z>>2]=0}k=i?j:h;l=i?h:j}e=f[C>>2]|0;c=f[e+(m*12|0)>>2]|0;h=c+(g<<2)|0;f[h>>2]=(f[h>>2]|0)+1;h=f[e+(m*12|0)+4>>2]|0;i=c;if((h|0)!=(i|0)){j=f[e+(n*12|0)>>2]|0;h=h-i>>2;e=0;do{f[j+(e<<2)>>2]=f[c+(e<<2)>>2];e=e+1|0}while(e>>>0>>0)}if(k|0){j=f[I>>2]|0;i=f[H>>2]|0;s=j-i>>2;e=f[G>>2]|0;h=f[F>>2]|0;if((((s|0)==0?0:(s*341|0)+-1|0)|0)==(h+e|0)){qc(J);e=f[G>>2]|0;h=f[F>>2]|0;j=f[I>>2]|0;i=f[H>>2]|0}e=h+e|0;if((j|0)==(i|0))e=0;else e=(f[i+(((e>>>0)/341|0)<<2)>>2]|0)+(((e>>>0)%341|0)*12|0)|0;f[e>>2]=k;f[e+4>>2]=g;f[e+8>>2]=m;f[F>>2]=(f[F>>2]|0)+1}if(!l)o=15;else{j=f[I>>2]|0;i=f[H>>2]|0;s=j-i>>2;e=f[G>>2]|0;h=f[F>>2]|0;if((((s|0)==0?0:(s*341|0)+-1|0)|0)==(h+e|0)){qc(J);e=f[G>>2]|0;h=f[F>>2]|0;j=f[I>>2]|0;i=f[H>>2]|0}e=h+e|0;if((j|0)==(i|0))e=0;else e=(f[i+(((e>>>0)/341|0)<<2)>>2]|0)+(((e>>>0)%341|0)*12|0)|0;f[e>>2]=l;f[e+4>>2]=g;f[e+8>>2]=n;e=(f[F>>2]|0)+1|0;f[F>>2]=e}}while(0);if((o|0)==15){o=0;e=f[F>>2]|0}if(!e)break a}if((o|0)==23)Ga(17368,17398,51,17461);else if((o|0)==28)Ga(17720,17758,223,17846);else if((o|0)==37)Ga(17368,17398,51,17461);else if((o|0)==42)Ga(17861,17885,48,17934);else if((o|0)==44)Ga(17963,17885,49,17934)}while(0);e=f[H>>2]|0;g=f[G>>2]|0;i=e+(((g>>>0)/341|0)<<2)|0;h=f[I>>2]|0;c=h;k=e;if((h|0)==(e|0)){j=0;g=0}else{g=(f[i>>2]|0)+(((g>>>0)%341|0)*12|0)|0;j=g}d:while(1){do{if((g|0)==(j|0))break d;g=g+12|0}while((g-(f[i>>2]|0)|0)!=4092);g=i+4|0;i=g;g=f[g>>2]|0}f[F>>2]=0;g=c-k>>2;if(g>>>0>2)do{ar(f[e>>2]|0);e=(f[H>>2]|0)+4|0;f[H>>2]=e;h=f[I>>2]|0;g=h-e>>2}while(g>>>0>2);switch(g|0){case 1:{g=170;o=88;break}case 2:{g=341;o=88;break}default:{}}if((o|0)==88)f[G>>2]=g;if((e|0)!=(h|0)){do{ar(f[e>>2]|0);e=e+4|0}while((e|0)!=(h|0));e=f[H>>2]|0;g=f[I>>2]|0;if((g|0)!=(e|0))f[I>>2]=g+(~((g+-4-e|0)>>>2)<<2)}e=f[J>>2]|0;if(!e){u=K;return}ar(e);u=K;return}function ob(a,b,c){a=a|0;b=b|0;c=c|0;var d=0,e=0,g=0,h=0,i=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,v=0,w=0,x=0,y=0,z=0,A=0,B=0,C=0,D=0,E=0,F=0,G=0,H=0,I=0,J=0,K=0,L=0,M=0,N=0,O=0;O=u;u=u+48|0;I=O+24|0;N=O;H=a+8|0;G=f[H>>2]|0;f[N>>2]=0;Oj(I,G,N);G=a+624|0;h=f[G>>2]|0;d=f[h>>2]|0;g=h+4|0;if(!d)d=h+8|0;else{e=f[g>>2]|0;if((e|0)!=(d|0))f[g>>2]=e+(~((e+-4-d|0)>>>2)<<2);ar(d);d=h+8|0;f[d>>2]=0;f[g>>2]=0;f[h>>2]=0}f[h>>2]=f[I>>2];f[g>>2]=f[I+4>>2];f[d>>2]=f[I+8>>2];F=f[H>>2]|0;f[N>>2]=0;Oj(I,F,N);F=a+636|0;h=f[F>>2]|0;d=f[h>>2]|0;g=h+4|0;if(!d)d=h+8|0;else{e=f[g>>2]|0;if((e|0)!=(d|0))f[g>>2]=e+(~((e+-4-d|0)>>>2)<<2);ar(d);d=h+8|0;f[d>>2]=0;f[g>>2]=0;f[h>>2]=0}f[h>>2]=f[I>>2];f[g>>2]=f[I+4>>2];f[d>>2]=f[I+8>>2];f[N>>2]=0;f[N+4>>2]=0;f[N+8>>2]=0;f[N+12>>2]=0;f[N+16>>2]=0;f[N+20>>2]=0;M=N+8|0;L=N+4|0;K=N+16|0;J=N+20|0;qc(N);d=f[L>>2]|0;e=(f[J>>2]|0)+(f[K>>2]|0)|0;if((f[M>>2]|0)==(d|0))d=0;else d=(f[d+(((e>>>0)/341|0)<<2)>>2]|0)+(((e>>>0)%341|0)*12|0)|0;f[d>>2]=b;f[d+4>>2]=0;f[d+8>>2]=0;d=(f[J>>2]|0)+1|0;f[J>>2]=d;a:do if(d|0){w=a+612|0;v=a+600|0;z=I+4|0;B=I+8|0;E=a+556|0;y=a+552|0;D=a+596|0;x=a+592|0;A=I+4|0;C=I+8|0;b:while(1){r=f[K>>2]|0;e=d+-1|0;l=r+e|0;s=f[L>>2]|0;q=f[s+(((l>>>0)/341|0)<<2)>>2]|0;l=(l>>>0)%341|0;t=f[q+(l*12|0)>>2]|0;g=f[q+(l*12|0)+4>>2]|0;l=f[q+(l*12|0)+8>>2]|0;f[J>>2]=e;e=f[M>>2]|0;s=e-s>>2;if((1-d-r+((s|0)==0?0:(s*341|0)+-1|0)|0)>>>0>681){ar(f[e+-4>>2]|0);f[M>>2]=(f[M>>2]|0)+-4}h=f[G>>2]|0;s=h+(l*12|0)|0;r=(f[F>>2]|0)+(l*12|0)|0;e=un(a,t,r,g)|0;d=(f[a>>2]|0)-(f[(f[r>>2]|0)+(e<<2)>>2]|0)|0;c:do if(!d)if((t|0)>0){i=f[c>>2]|0;g=i+4|0;h=i+8|0;b=0;do{e=f[s>>2]|0;d=f[e>>2]|0;f[I>>2]=d;f[A>>2]=f[e+4>>2];f[C>>2]=f[e+8>>2];e=f[g>>2]|0;if(e>>>0<(f[h>>2]|0)>>>0){f[e>>2]=d;f[e+4>>2]=f[A>>2];f[e+8>>2]=f[C>>2];f[g>>2]=e+12}else mh(i,I);b=b+1|0}while((b|0)<(t|0));n=15}else n=15;else{if(!t){n=27;break b}if(t>>>0<3){h=f[w>>2]|0;f[h>>2]=e;d=f[H>>2]|0;if(d>>>0>1){g=1;do{e=(e|0)==(d+-1|0)?0:e+1|0;f[h+(g<<2)>>2]=e;g=g+1|0;d=f[H>>2]|0}while(g>>>0>>0)}q=f[c>>2]|0;o=q+4|0;p=q+8|0;e=0;while(1){if(d|0){i=f[w>>2]|0;j=f[v>>2]|0;k=f[r>>2]|0;m=0;do{l=i+(m<<2)|0;f[j+(f[l>>2]<<2)>>2]=0;d=f[l>>2]|0;n=(f[a>>2]|0)-(f[k+(d<<2)>>2]|0)|0;do if(n|0){g=j+(d<<2)|0;if((n|0)>=33){n=36;break b}if((n|0)<=0){n=38;break b}h=f[E>>2]|0;b=32-h|0;d=f[y>>2]|0;h=f[d>>2]<(b|0)){n=n-b|0;f[E>>2]=n;d=d+4|0;f[y>>2]=d;n=32-n|0;f[g>>2]=(f[d>>2]|0)>>>n|h>>>(n-b|0);break}f[g>>2]=h>>>(32-n|0);n=(f[E>>2]|0)+n|0;f[E>>2]=n;if((n|0)!=32)break;f[y>>2]=d+4;f[E>>2]=0}while(0);l=f[l>>2]|0;n=j+(l<<2)|0;f[n>>2]=f[n>>2]|f[(f[s>>2]|0)+(l<<2)>>2];m=m+1|0}while(m>>>0<(f[H>>2]|0)>>>0)}g=f[v>>2]|0;d=f[g>>2]|0;f[I>>2]=d;f[z>>2]=f[g+4>>2];f[B>>2]=f[g+8>>2];g=f[o>>2]|0;if(g>>>0<(f[p>>2]|0)>>>0){f[g>>2]=d;f[g+4>>2]=f[z>>2];f[g+8>>2]=f[B>>2];f[o>>2]=g+12}else mh(q,I);e=e+1|0;if(e>>>0>=t>>>0){n=15;break c}d=f[H>>2]|0}}i=1<>2]|0;d=f[s>>2]|0;b=d;h=f[(f[G>>2]|0)+(m*12|0)>>2]|0;if((g|0)!=(d|0)){g=g-d>>2;d=0;do{f[h+(d<<2)>>2]=f[b+(d<<2)>>2];d=d+1|0}while(d>>>0>>0)}h=h+(e<<2)|0;f[h>>2]=(f[h>>2]|0)+i;h=(_(t|0)|0)^31;if(!h)d=0;else{g=0;d=0;do{d=(Tk(a+12+(g<<4)|0)|0)&1|d<<1;g=g+1|0}while((g|0)!=(h|0))}b=(t>>>1)-d|0;g=t-b|0;if((b|0)==(g|0)){j=b;k=b}else{t=f[D>>2]|0;d=f[x>>2]|0;h=(f[d>>2]&1<<31-t|0)!=0;t=t+1|0;f[D>>2]=t;if((t|0)==32){f[x>>2]=d+4;f[D>>2]=0}j=h?b:g;k=h?g:b}d=f[F>>2]|0;i=f[d+(l*12|0)>>2]|0;g=i+(e<<2)|0;f[g>>2]=(f[g>>2]|0)+1;g=f[d+(l*12|0)+4>>2]|0;h=i;if((g|0)!=(h|0)){b=f[d+(m*12|0)>>2]|0;g=g-h>>2;d=0;do{f[b+(d<<2)>>2]=f[i+(d<<2)>>2];d=d+1|0}while(d>>>0>>0)}if(j|0){b=f[M>>2]|0;g=f[L>>2]|0;t=b-g>>2;d=f[K>>2]|0;h=f[J>>2]|0;if((((t|0)==0?0:(t*341|0)+-1|0)|0)==(h+d|0)){qc(N);d=f[K>>2]|0;h=f[J>>2]|0;b=f[M>>2]|0;g=f[L>>2]|0}d=h+d|0;if((b|0)==(g|0))d=0;else d=(f[g+(((d>>>0)/341|0)<<2)>>2]|0)+(((d>>>0)%341|0)*12|0)|0;f[d>>2]=j;f[d+4>>2]=e;f[d+8>>2]=l;f[J>>2]=(f[J>>2]|0)+1}if(!k)n=15;else{b=f[M>>2]|0;h=f[L>>2]|0;t=b-h>>2;d=f[K>>2]|0;g=f[J>>2]|0;if((((t|0)==0?0:(t*341|0)+-1|0)|0)==(g+d|0)){qc(N);d=f[K>>2]|0;g=f[J>>2]|0;b=f[M>>2]|0;h=f[L>>2]|0}d=g+d|0;if((b|0)==(h|0))d=0;else d=(f[h+(((d>>>0)/341|0)<<2)>>2]|0)+(((d>>>0)%341|0)*12|0)|0;f[d>>2]=k;f[d+4>>2]=e;f[d+8>>2]=m;d=(f[J>>2]|0)+1|0;f[J>>2]=d}}while(0);if((n|0)==15){n=0;d=f[J>>2]|0}if(!d)break a}if((n|0)==27)Ga(17720,17758,223,17846);else if((n|0)==36)Ga(17861,17885,48,17934);else if((n|0)==38)Ga(17963,17885,49,17934)}while(0);d=f[L>>2]|0;e=f[K>>2]|0;h=d+(((e>>>0)/341|0)<<2)|0;g=f[M>>2]|0;i=g;j=d;if((g|0)==(d|0)){b=0;e=0}else{e=(f[h>>2]|0)+(((e>>>0)%341|0)*12|0)|0;b=e}d:while(1){do{if((e|0)==(b|0))break d;e=e+12|0}while((e-(f[h>>2]|0)|0)!=4092);e=h+4|0;h=e;e=f[e>>2]|0}f[J>>2]=0;e=i-j>>2;if(e>>>0>2)do{ar(f[d>>2]|0);d=(f[L>>2]|0)+4|0;f[L>>2]=d;g=f[M>>2]|0;e=g-d>>2}while(e>>>0>2);switch(e|0){case 1:{e=170;n=85;break}case 2:{e=341;n=85;break}default:{}}if((n|0)==85)f[K>>2]=e;if((d|0)!=(g|0)){do{ar(f[d>>2]|0);d=d+4|0}while((d|0)!=(g|0));d=f[L>>2]|0;e=f[M>>2]|0;if((e|0)!=(d|0))f[M>>2]=e+(~((e+-4-d|0)>>>2)<<2)}d=f[N>>2]|0;if(!d){u=O;return}ar(d);u=O;return}function pb(a){a=a|0;var c=0,d=0,e=0,g=La,h=La,i=0,j=0,k=0,l=0,m=0,o=0,p=0,q=0,r=0,s=0,t=0,v=0,w=0,x=0,y=0,z=0,A=0,B=0,C=0,D=0,E=0,F=0,G=0,H=0,I=0,J=0,K=0,L=0,M=0,N=0,O=0,P=0,Q=0,R=0,S=0,T=0,U=La;T=u;u=u+64|0;S=T+28|0;Q=T+16|0;O=T+4|0;L=T;R=a;M=a+68|0;c=f[M>>2]|0;f[S>>2]=0;f[S+4>>2]=0;f[S+8>>2]=0;f[S+12>>2]=0;f[S+16>>2]=R;H=S+20|0;n[H>>2]=$(1.0);f[S+24>>2]=R;Gh(S,c);c=f[M>>2]|0;f[Q>>2]=0;R=Q+4|0;f[R>>2]=0;f[Q+8>>2]=0;do if(c|0)if(c>>>0>1073741823){Lp(Q);T=Ia(4)|0;Eq(T);sa(T|0,1344,125)}else{G=c<<2;F=ln(G)|0;f[Q>>2]=F;P=F+(c<<2)|0;f[Q+8>>2]=P;ej(F|0,0,G|0)|0;f[R>>2]=P;break}while(0);f[O>>2]=0;P=O+4|0;f[P>>2]=0;f[O+8>>2]=0;f[L>>2]=0;a:do if((c|0)>0){F=S+16|0;C=S+4|0;E=S+12|0;B=S+8|0;D=O+8|0;G=S+24|0;c=0;z=0;b:while(1){w=f[F>>2]|0;k=f[w+8>>2]|0;w=(f[w+12>>2]|0)-k|0;v=(w|0)>0;if(v){i=k;l=w>>>2;d=0;j=0;do{e=f[i+(j<<2)>>2]|0;if(!(b[e+84>>0]|0))e=f[(f[e+68>>2]|0)+(c<<2)>>2]|0;else e=c;d=e<<2^d<<1;j=j+1|0}while((j|0)<(l|0))}else d=0;x=f[C>>2]|0;y=(x|0)==0;c:do if(!y){q=x+-1|0;e=(q&x|0)==0;if(e)t=q&d;else t=(d>>>0)%(x>>>0)|0;d=f[(f[S>>2]|0)+(t<<2)>>2]|0;if((d|0)!=0?(K=f[d>>2]|0,(K|0)!=0):0){r=f[G>>2]|0;s=r+8|0;r=r+12|0;d:do if(e){d=K;while(1){if((f[d+4>>2]&q|0)!=(t|0)){A=45;break c}p=f[d+8>>2]|0;e=f[s>>2]|0;i=(f[r>>2]|0)-e|0;if((i|0)<=0)break d;o=i>>>2;m=0;while(1){i=f[e+(m<<2)>>2]|0;j=(b[i+84>>0]|0)==0;if(j)l=f[(f[i+68>>2]|0)+(p<<2)>>2]|0;else l=p;if((o|0)<=(m|0)){A=39;break b}if(j)i=f[(f[i+68>>2]|0)+(c<<2)>>2]|0;else i=c;m=m+1|0;if((l|0)!=(i|0))break;if((m|0)>=(o|0)){A=43;break d}}d=f[d>>2]|0;if(!d){A=45;break c}}}else{d=K;while(1){if((((f[d+4>>2]|0)>>>0)%(x>>>0)|0|0)!=(t|0)){A=45;break c}p=f[d+8>>2]|0;e=f[s>>2]|0;i=(f[r>>2]|0)-e|0;if((i|0)<=0)break d;o=i>>>2;m=0;while(1){i=f[e+(m<<2)>>2]|0;j=(b[i+84>>0]|0)==0;if(j)l=f[(f[i+68>>2]|0)+(p<<2)>>2]|0;else l=p;if((o|0)<=(m|0)){A=39;break b}if(j)i=f[(f[i+68>>2]|0)+(c<<2)>>2]|0;else i=c;m=m+1|0;if((l|0)!=(i|0))break;if((m|0)>=(o|0)){A=43;break d}}d=f[d>>2]|0;if(!d){A=45;break c}}}while(0);if((A|0)==43){A=0;if(!d){A=45;break}}f[(f[Q>>2]|0)+(c<<2)>>2]=f[d+12>>2];e=z}else A=45}else A=45;while(0);do if((A|0)==45){A=0;if(v){j=w>>>2;d=0;i=0;do{e=f[k+(i<<2)>>2]|0;if(!(b[e+84>>0]|0))e=f[(f[e+68>>2]|0)+(c<<2)>>2]|0;else e=c;d=e<<2^d<<1;i=i+1|0}while((i|0)<(j|0));t=d}else t=0;e:do if(!y){p=x+-1|0;e=(p&x|0)==0;if(e)s=p&t;else s=(t>>>0)%(x>>>0)|0;d=f[(f[S>>2]|0)+(s<<2)>>2]|0;if((d|0)!=0?(J=f[d>>2]|0,(J|0)!=0):0){q=f[G>>2]|0;r=q+8|0;q=q+12|0;if(e){m=J;while(1){if((f[m+4>>2]&p|0)!=(s|0)){d=s;A=80;break e}o=f[m+8>>2]|0;d=f[r>>2]|0;e=(f[q>>2]|0)-d|0;if((e|0)<=0)break e;l=e>>>2;k=0;while(1){e=f[d+(k<<2)>>2]|0;i=(b[e+84>>0]|0)==0;if(i)j=f[(f[e+68>>2]|0)+(o<<2)>>2]|0;else j=o;if((l|0)<=(k|0)){A=76;break b}if(i)e=f[(f[e+68>>2]|0)+(c<<2)>>2]|0;else e=c;k=k+1|0;if((j|0)!=(e|0))break;if((k|0)>=(l|0))break e}m=f[m>>2]|0;if(!m){d=s;A=80;break}}}else{m=J;while(1){if((((f[m+4>>2]|0)>>>0)%(x>>>0)|0|0)!=(s|0)){d=s;A=80;break e}o=f[m+8>>2]|0;d=f[r>>2]|0;e=(f[q>>2]|0)-d|0;if((e|0)<=0)break e;l=e>>>2;k=0;while(1){e=f[d+(k<<2)>>2]|0;i=(b[e+84>>0]|0)==0;if(i)j=f[(f[e+68>>2]|0)+(o<<2)>>2]|0;else j=o;if((l|0)<=(k|0)){A=76;break b}if(i)e=f[(f[e+68>>2]|0)+(c<<2)>>2]|0;else e=c;k=k+1|0;if((j|0)!=(e|0))break;if((k|0)>=(l|0))break e}m=f[m>>2]|0;if(!m){d=s;A=80;break}}}}else{d=s;A=80}}else{d=0;A=80}while(0);if((A|0)==80){A=0;i=ln(16)|0;f[i+8>>2]=c;f[i+12>>2]=z;f[i+4>>2]=t;f[i>>2]=0;h=$(((f[E>>2]|0)+1|0)>>>0);U=$(x>>>0);g=$(n[H>>2]);do if(y|h>$(U*g)){c=(x>>>0<3|(x+-1&x|0)!=0)&1|x<<1;d=~~$(W($(h/g)))>>>0;Gh(S,c>>>0>>0?d:c);c=f[C>>2]|0;d=c+-1|0;if(!(d&c)){e=c;c=d&t;break}else{e=c;c=(t>>>0)%(c>>>0)|0;break}}else{e=x;c=d}while(0);d=(f[S>>2]|0)+(c<<2)|0;c=f[d>>2]|0;if(!c){f[i>>2]=f[B>>2];f[B>>2]=i;f[d>>2]=B;c=f[i>>2]|0;if(c|0){c=f[c+4>>2]|0;d=e+-1|0;if(!(d&e))c=c&d;else c=(c>>>0)%(e>>>0)|0;c=(f[S>>2]|0)+(c<<2)|0;A=91}}else{f[i>>2]=f[c>>2];A=91}if((A|0)==91){A=0;f[c>>2]=i}f[E>>2]=(f[E>>2]|0)+1;c=f[L>>2]|0}e=z+1|0;f[(f[Q>>2]|0)+(c<<2)>>2]=z;c=f[P>>2]|0;if((c|0)==(f[D>>2]|0)){Ii(O,L);break}else{f[c>>2]=f[L>>2];f[P>>2]=c+4;break}}while(0);c=(f[L>>2]|0)+1|0;f[L>>2]=c;d=f[M>>2]|0;if((c|0)>=(d|0)){I=d;N=e;break a}else z=e}if((A|0)==39)Ga(17252,17204,72,17242);else if((A|0)==76)Ga(17252,17204,72,17242)}else{I=0;N=0}while(0);if((N|0)!=(I|0)){Ta[f[(f[a>>2]|0)+24>>2]&7](a,Q,O);f[M>>2]=N}c=f[O>>2]|0;if(c|0){d=f[P>>2]|0;if((d|0)!=(c|0))f[P>>2]=d+(~((d+-4-c|0)>>>2)<<2);ar(c)}c=f[Q>>2]|0;if(c|0){d=f[R>>2]|0;if((d|0)!=(c|0))f[R>>2]=d+(~((d+-4-c|0)>>>2)<<2);ar(c)}c=f[S+8>>2]|0;if(c|0)do{R=c;c=f[c>>2]|0;ar(R)}while((c|0)!=0);c=f[S>>2]|0;f[S>>2]=0;if(!c){u=T;return}ar(c);u=T;return}function qb(a,b,c){a=a|0;b=b|0;c=c|0;var d=0,e=0,g=0,h=0,i=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,v=0,w=0,x=0,y=0,z=0,A=0,B=0,C=0,D=0,E=0,F=0,G=0,H=0,I=0,J=0,K=0,L=0,M=0,N=0,O=0;O=u;u=u+48|0;I=O+24|0;N=O;H=a+8|0;G=f[H>>2]|0;f[N>>2]=0;Oj(I,G,N);G=a+624|0;h=f[G>>2]|0;d=f[h>>2]|0;g=h+4|0;if(!d)d=h+8|0;else{e=f[g>>2]|0;if((e|0)!=(d|0))f[g>>2]=e+(~((e+-4-d|0)>>>2)<<2);ar(d);d=h+8|0;f[d>>2]=0;f[g>>2]=0;f[h>>2]=0}f[h>>2]=f[I>>2];f[g>>2]=f[I+4>>2];f[d>>2]=f[I+8>>2];F=f[H>>2]|0;f[N>>2]=0;Oj(I,F,N);F=a+636|0;h=f[F>>2]|0;d=f[h>>2]|0;g=h+4|0;if(!d)d=h+8|0;else{e=f[g>>2]|0;if((e|0)!=(d|0))f[g>>2]=e+(~((e+-4-d|0)>>>2)<<2);ar(d);d=h+8|0;f[d>>2]=0;f[g>>2]=0;f[h>>2]=0}f[h>>2]=f[I>>2];f[g>>2]=f[I+4>>2];f[d>>2]=f[I+8>>2];f[N>>2]=0;f[N+4>>2]=0;f[N+8>>2]=0;f[N+12>>2]=0;f[N+16>>2]=0;f[N+20>>2]=0;M=N+8|0;L=N+4|0;K=N+16|0;J=N+20|0;qc(N);d=f[L>>2]|0;e=(f[J>>2]|0)+(f[K>>2]|0)|0;if((f[M>>2]|0)==(d|0))d=0;else d=(f[d+(((e>>>0)/341|0)<<2)>>2]|0)+(((e>>>0)%341|0)*12|0)|0;f[d>>2]=b;f[d+4>>2]=0;f[d+8>>2]=0;d=(f[J>>2]|0)+1|0;f[J>>2]=d;a:do if(d|0){w=a+612|0;v=a+600|0;z=I+4|0;B=I+8|0;E=a+556|0;y=a+552|0;D=a+596|0;x=a+592|0;A=I+4|0;C=I+8|0;b:while(1){r=f[K>>2]|0;e=d+-1|0;l=r+e|0;s=f[L>>2]|0;q=f[s+(((l>>>0)/341|0)<<2)>>2]|0;l=(l>>>0)%341|0;t=f[q+(l*12|0)>>2]|0;g=f[q+(l*12|0)+4>>2]|0;l=f[q+(l*12|0)+8>>2]|0;f[J>>2]=e;e=f[M>>2]|0;s=e-s>>2;if((1-d-r+((s|0)==0?0:(s*341|0)+-1|0)|0)>>>0>681){ar(f[e+-4>>2]|0);f[M>>2]=(f[M>>2]|0)+-4}h=f[G>>2]|0;s=h+(l*12|0)|0;e=((f[H>>2]|0)+-1|0)==(g|0)?0:g+1|0;r=(f[F>>2]|0)+(l*12|0)|0;d=(f[a>>2]|0)-(f[(f[r>>2]|0)+(e<<2)>>2]|0)|0;c:do if(!d)if((t|0)>0){i=f[c>>2]|0;g=i+4|0;h=i+8|0;b=0;do{e=f[s>>2]|0;d=f[e>>2]|0;f[I>>2]=d;f[A>>2]=f[e+4>>2];f[C>>2]=f[e+8>>2];e=f[g>>2]|0;if(e>>>0<(f[h>>2]|0)>>>0){f[e>>2]=d;f[e+4>>2]=f[A>>2];f[e+8>>2]=f[C>>2];f[g>>2]=e+12}else mh(i,I);b=b+1|0}while((b|0)<(t|0));n=15}else n=15;else{if(!t){n=27;break b}if(t>>>0<3){h=f[w>>2]|0;f[h>>2]=e;d=f[H>>2]|0;if(d>>>0>1){g=1;do{e=(e|0)==(d+-1|0)?0:e+1|0;f[h+(g<<2)>>2]=e;g=g+1|0;d=f[H>>2]|0}while(g>>>0>>0)}q=f[c>>2]|0;o=q+4|0;p=q+8|0;e=0;while(1){if(d|0){i=f[w>>2]|0;j=f[v>>2]|0;k=f[r>>2]|0;m=0;do{l=i+(m<<2)|0;f[j+(f[l>>2]<<2)>>2]=0;d=f[l>>2]|0;n=(f[a>>2]|0)-(f[k+(d<<2)>>2]|0)|0;do if(n|0){g=j+(d<<2)|0;if((n|0)>=33){n=36;break b}if((n|0)<=0){n=38;break b}h=f[E>>2]|0;b=32-h|0;d=f[y>>2]|0;h=f[d>>2]<(b|0)){n=n-b|0;f[E>>2]=n;d=d+4|0;f[y>>2]=d;n=32-n|0;f[g>>2]=(f[d>>2]|0)>>>n|h>>>(n-b|0);break}f[g>>2]=h>>>(32-n|0);n=(f[E>>2]|0)+n|0;f[E>>2]=n;if((n|0)!=32)break;f[y>>2]=d+4;f[E>>2]=0}while(0);l=f[l>>2]|0;n=j+(l<<2)|0;f[n>>2]=f[n>>2]|f[(f[s>>2]|0)+(l<<2)>>2];m=m+1|0}while(m>>>0<(f[H>>2]|0)>>>0)}g=f[v>>2]|0;d=f[g>>2]|0;f[I>>2]=d;f[z>>2]=f[g+4>>2];f[B>>2]=f[g+8>>2];g=f[o>>2]|0;if(g>>>0<(f[p>>2]|0)>>>0){f[g>>2]=d;f[g+4>>2]=f[z>>2];f[g+8>>2]=f[B>>2];f[o>>2]=g+12}else mh(q,I);e=e+1|0;if(e>>>0>=t>>>0){n=15;break c}d=f[H>>2]|0}}i=1<>2]|0;d=f[s>>2]|0;b=d;h=f[h+(m*12|0)>>2]|0;if((g|0)!=(d|0)){g=g-d>>2;d=0;do{f[h+(d<<2)>>2]=f[b+(d<<2)>>2];d=d+1|0}while(d>>>0>>0)}h=h+(e<<2)|0;f[h>>2]=(f[h>>2]|0)+i;h=(_(t|0)|0)^31;if(!h)d=0;else{g=0;d=0;do{d=(Tk(a+12+(g<<4)|0)|0)&1|d<<1;g=g+1|0}while((g|0)!=(h|0))}b=(t>>>1)-d|0;g=t-b|0;if((b|0)==(g|0)){j=b;k=b}else{t=f[D>>2]|0;d=f[x>>2]|0;h=(f[d>>2]&1<<31-t|0)!=0;t=t+1|0;f[D>>2]=t;if((t|0)==32){f[x>>2]=d+4;f[D>>2]=0}j=h?b:g;k=h?g:b}d=f[F>>2]|0;i=f[d+(l*12|0)>>2]|0;g=i+(e<<2)|0;f[g>>2]=(f[g>>2]|0)+1;g=f[d+(l*12|0)+4>>2]|0;h=i;if((g|0)!=(h|0)){b=f[d+(m*12|0)>>2]|0;g=g-h>>2;d=0;do{f[b+(d<<2)>>2]=f[i+(d<<2)>>2];d=d+1|0}while(d>>>0>>0)}if(j|0){b=f[M>>2]|0;g=f[L>>2]|0;t=b-g>>2;d=f[K>>2]|0;h=f[J>>2]|0;if((((t|0)==0?0:(t*341|0)+-1|0)|0)==(h+d|0)){qc(N);d=f[K>>2]|0;h=f[J>>2]|0;b=f[M>>2]|0;g=f[L>>2]|0}d=h+d|0;if((b|0)==(g|0))d=0;else d=(f[g+(((d>>>0)/341|0)<<2)>>2]|0)+(((d>>>0)%341|0)*12|0)|0;f[d>>2]=j;f[d+4>>2]=e;f[d+8>>2]=l;f[J>>2]=(f[J>>2]|0)+1}if(!k)n=15;else{b=f[M>>2]|0;h=f[L>>2]|0;t=b-h>>2;d=f[K>>2]|0;g=f[J>>2]|0;if((((t|0)==0?0:(t*341|0)+-1|0)|0)==(g+d|0)){qc(N);d=f[K>>2]|0;g=f[J>>2]|0;b=f[M>>2]|0;h=f[L>>2]|0}d=g+d|0;if((b|0)==(h|0))d=0;else d=(f[h+(((d>>>0)/341|0)<<2)>>2]|0)+(((d>>>0)%341|0)*12|0)|0;f[d>>2]=k;f[d+4>>2]=e;f[d+8>>2]=m;d=(f[J>>2]|0)+1|0;f[J>>2]=d}}while(0);if((n|0)==15){n=0;d=f[J>>2]|0}if(!d)break a}if((n|0)==27)Ga(17720,17758,223,17846);else if((n|0)==36)Ga(17861,17885,48,17934);else if((n|0)==38)Ga(17963,17885,49,17934)}while(0);d=f[L>>2]|0;e=f[K>>2]|0;h=d+(((e>>>0)/341|0)<<2)|0;g=f[M>>2]|0;i=g;j=d;if((g|0)==(d|0)){b=0;e=0}else{e=(f[h>>2]|0)+(((e>>>0)%341|0)*12|0)|0;b=e}d:while(1){do{if((e|0)==(b|0))break d;e=e+12|0}while((e-(f[h>>2]|0)|0)!=4092);e=h+4|0;h=e;e=f[e>>2]|0}f[J>>2]=0;e=i-j>>2;if(e>>>0>2)do{ar(f[d>>2]|0);d=(f[L>>2]|0)+4|0;f[L>>2]=d;g=f[M>>2]|0;e=g-d>>2}while(e>>>0>2);switch(e|0){case 1:{e=170;n=85;break}case 2:{e=341;n=85;break}default:{}}if((n|0)==85)f[K>>2]=e;if((d|0)!=(g|0)){do{ar(f[d>>2]|0);d=d+4|0}while((d|0)!=(g|0));d=f[L>>2]|0;e=f[M>>2]|0;if((e|0)!=(d|0))f[M>>2]=e+(~((e+-4-d|0)>>>2)<<2)}d=f[N>>2]|0;if(!d){u=O;return}ar(d);u=O;return}function rb(a,b,c,d,e,g){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;g=g|0;var h=0,i=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,v=0,w=0,x=0,y=0,z=0,A=0,B=0,C=0,D=0,E=0,F=0,G=0,H=0,I=0,J=0,K=0,L=0,M=0,N=0,O=0,P=0;P=u;u=u+64|0;O=P+16|0;N=P;I=a+8|0;f[I>>2]=e;i=a+32|0;h=a+36|0;g=f[h>>2]|0;d=f[i>>2]|0;j=g-d>>2;if(j>>>0>=e>>>0){if(j>>>0>e>>>0?(k=d+(e<<2)|0,(g|0)!=(k|0)):0)f[h>>2]=g+(~((g+-4-k|0)>>>2)<<2)}else ui(i,e-j|0);d=O;g=d+48|0;do{f[d>>2]=0;d=d+4|0}while((d|0)<(g|0));f[N>>2]=0;if(!e){d=0;g=0}else{ch(O,e,N);d=f[O+12>>2]|0;g=f[O+16>>2]|0}f[N>>2]=0;h=O+16|0;i=g-d>>2;if(i>>>0>=e>>>0){if(i>>>0>e>>>0?(l=d+(e<<2)|0,(g|0)!=(l|0)):0)f[h>>2]=g+(~((g+-4-l|0)>>>2)<<2)}else ch(O+12|0,e-i|0,N);i=O+24|0;f[N>>2]=0;h=O+28|0;g=f[h>>2]|0;d=f[i>>2]|0;j=g-d>>2;if(j>>>0>=e>>>0){if(j>>>0>e>>>0?(m=d+(e<<2)|0,(g|0)!=(m|0)):0)f[h>>2]=g+(~((g+-4-m|0)>>>2)<<2)}else ch(i,e-j|0,N);i=O+36|0;f[N>>2]=0;h=O+40|0;g=f[h>>2]|0;d=f[i>>2]|0;j=g-d>>2;if(j>>>0>=e>>>0){if(j>>>0>e>>>0?(n=d+(e<<2)|0,(g|0)!=(n|0)):0)f[h>>2]=g+(~((g+-4-n|0)>>>2)<<2)}else ch(i,e-j|0,N);h=f[O>>2]|0;if((f[I>>2]|0)>0){l=a+16|0;i=a+32|0;m=a+12|0;j=0;do{d=f[h+(j<<2)>>2]|0;g=f[l>>2]|0;if((d|0)>(g|0)){k=f[i>>2]|0;f[k+(j<<2)>>2]=g}else{H=f[m>>2]|0;k=f[i>>2]|0;f[k+(j<<2)>>2]=(d|0)<(H|0)?H:d}j=j+1|0;d=f[I>>2]|0}while((j|0)<(d|0));if((d|0)>0){i=a+20|0;h=0;do{d=(f[b+(h<<2)>>2]|0)+(f[k+(h<<2)>>2]|0)|0;g=c+(h<<2)|0;f[g>>2]=d;if((d|0)<=(f[l>>2]|0)){if((d|0)<(f[m>>2]|0)){d=(f[i>>2]|0)+d|0;o=18}}else{d=d-(f[i>>2]|0)|0;o=18}if((o|0)==18){o=0;f[g>>2]=d}h=h+1|0}while((h|0)<(f[I>>2]|0))}}w=f[a+48>>2]|0;x=f[a+52>>2]|0;H=ln(16)|0;f[H>>2]=0;f[H+4>>2]=0;f[H+8>>2]=0;f[H+12>>2]=0;Dk(N,e);C=a+56|0;h=f[C>>2]|0;g=f[h+4>>2]|0;d=f[h>>2]|0;F=g-d|0;G=F>>2;a:do if((F|0)>4){z=w+12|0;B=(e|0)>0;E=a+16|0;A=a+32|0;F=a+12|0;D=a+20|0;y=e<<2;i=h;h=1;while(1){if(g-d>>2>>>0<=h>>>0){Kp(i);d=f[i>>2]|0}s=f[d+(h<<2)>>2]|0;v=(((s>>>0)%3|0|0)==0?2:-1)+s|0;t=(s|v|0)<0;r=(s|0)<0?s:v;g=s;q=1;d=0;b:while(1){do{if((g|0)<=-1){o=62;break b}o=f[O+(d*12|0)>>2]|0;p=f[z>>2]|0;j=f[p+(g<<2)>>2]|0;if((j|0)>=0){k=f[w>>2]|0;l=f[x>>2]|0;n=f[l+(f[k+(j<<2)>>2]<<2)>>2]|0;i=j+1|0;i=((i|0)%3|0|0)==0?j+-2|0:i;if((i|0)<0)i=-1073741824;else i=f[k+(i<<2)>>2]|0;m=f[l+(i<<2)>>2]|0;i=(((j>>>0)%3|0|0)==0?2:-1)+j|0;if((i|0)<0)i=-1073741824;else i=f[k+(i<<2)>>2]|0;i=f[l+(i<<2)>>2]|0;if((n|0)<(h|0)&(m|0)<(h|0)&(i|0)<(h|0)){l=X(n,e)|0;k=X(m,e)|0;j=X(i,e)|0;if(B){i=0;do{f[o+(i<<2)>>2]=(f[c+(i+j<<2)>>2]|0)+(f[c+(i+k<<2)>>2]|0)-(f[c+(i+l<<2)>>2]|0);i=i+1|0}while((i|0)!=(e|0))}d=d+1|0;if((d|0)==4){d=4;o=45;break b}}}do if(q){o=g+1|0;g=((o|0)%3|0|0)==0?g+-2|0:o;if((g|0)>=0){g=f[p+(g<<2)>>2]|0;i=g+1|0;if((g|0)>=0)g=((i|0)%3|0|0)==0?g+-2|0:i}}else{g=(((g>>>0)%3|0|0)==0?2:-1)+g|0;if((g|0)>=0){g=f[p+(g<<2)>>2]|0;if((g|0)>=0)if(!((g>>>0)%3|0)){g=g+2|0;break}else{g=g+-1|0;break}}}while(0);if((g|0)==(s|0)){o=62;break b}}while(!(q&(g|0)<0));if(t){g=r;q=0;continue}g=f[p+(v<<2)>>2]|0;if((g|0)<0){q=0;continue}if(!((g>>>0)%3|0)){g=g+2|0;q=0;continue}else{g=g+-1|0;q=0;continue}}if((o|0)==62)if((d|0)>0)o=45;else{M=X(h,e)|0;o=74}if((o|0)==45){o=0;if(B){ej(f[N>>2]|0,0,y|0)|0;k=d+-1|0;m=H+(k<<2)|0;k=f[a+60+(k*12|0)>>2]|0;l=f[N>>2]|0;n=0;g=0;do{v=f[m>>2]|0;f[m>>2]=v+1;if(!(f[k+(v>>>5<<2)>>2]&1<<(v&31))){i=f[O+(n*12|0)>>2]|0;j=0;do{v=l+(j<<2)|0;f[v>>2]=(f[v>>2]|0)+(f[i+(j<<2)>>2]|0);j=j+1|0}while((j|0)!=(e|0));g=g+1|0}n=n+1|0}while((n|0)!=(d|0))}else{i=d+-1|0;k=H+(i<<2)|0;i=f[a+60+(i*12|0)>>2]|0;j=f[k>>2]|0;l=0;g=0;do{v=j;j=j+1|0;f[k>>2]=j;g=g+((f[i+(v>>>5<<2)>>2]&1<<(v&31)|0)==0&1)|0;l=l+1|0}while((l|0)!=(d|0))}i=X(h,e)|0;if(g){k=f[N>>2]|0;if(B){d=0;do{v=k+(d<<2)|0;f[v>>2]=(f[v>>2]|0)/(g|0)|0;d=d+1|0}while((d|0)!=(e|0))}m=b+(i<<2)|0;l=c+(i<<2)|0;if((f[I>>2]|0)>0){i=0;do{d=f[k+(i<<2)>>2]|0;g=f[E>>2]|0;if((d|0)>(g|0)){j=f[A>>2]|0;f[j+(i<<2)>>2]=g}else{v=f[F>>2]|0;j=f[A>>2]|0;f[j+(i<<2)>>2]=(d|0)<(v|0)?v:d}i=i+1|0;d=f[I>>2]|0}while((i|0)<(d|0));if((d|0)>0){i=0;do{d=(f[m+(i<<2)>>2]|0)+(f[j+(i<<2)>>2]|0)|0;g=l+(i<<2)|0;f[g>>2]=d;if((d|0)<=(f[E>>2]|0)){if((d|0)<(f[F>>2]|0)){d=(f[D>>2]|0)+d|0;o=96}}else{d=d-(f[D>>2]|0)|0;o=96}if((o|0)==96){o=0;f[g>>2]=d}i=i+1|0}while((i|0)<(f[I>>2]|0))}}}else{M=i;o=74}}if((o|0)==74?(o=0,J=c+((X(h+-1|0,e)|0)<<2)|0,K=b+(M<<2)|0,L=c+(M<<2)|0,(f[I>>2]|0)>0):0){i=0;do{d=f[J+(i<<2)>>2]|0;g=f[E>>2]|0;if((d|0)>(g|0)){j=f[A>>2]|0;f[j+(i<<2)>>2]=g}else{v=f[F>>2]|0;j=f[A>>2]|0;f[j+(i<<2)>>2]=(d|0)<(v|0)?v:d}i=i+1|0;d=f[I>>2]|0}while((i|0)<(d|0));if((d|0)>0){i=0;do{d=(f[K+(i<<2)>>2]|0)+(f[j+(i<<2)>>2]|0)|0;g=L+(i<<2)|0;f[g>>2]=d;if((d|0)<=(f[E>>2]|0)){if((d|0)<(f[F>>2]|0)){d=(f[D>>2]|0)+d|0;o=84}}else{d=d-(f[D>>2]|0)|0;o=84}if((o|0)==84){o=0;f[g>>2]=d}i=i+1|0}while((i|0)<(f[I>>2]|0))}}h=h+1|0;if((h|0)>=(G|0)){d=N;break a}i=f[C>>2]|0;d=f[i>>2]|0;g=f[i+4>>2]|0}}else d=N;while(0);h=f[d>>2]|0;if(h|0){g=N+4|0;d=f[g>>2]|0;if((d|0)!=(h|0))f[g>>2]=d+(~((d+-4-h|0)>>>2)<<2);ar(h)}ar(H);g=f[O+36>>2]|0;if(g|0){h=O+40|0;d=f[h>>2]|0;if((d|0)!=(g|0))f[h>>2]=d+(~((d+-4-g|0)>>>2)<<2);ar(g)}d=f[O+24>>2]|0;if(d|0){h=O+28|0;g=f[h>>2]|0;if((g|0)!=(d|0))f[h>>2]=g+(~((g+-4-d|0)>>>2)<<2);ar(d)}d=f[O+12>>2]|0;if(d|0){h=O+16|0;g=f[h>>2]|0;if((g|0)!=(d|0))f[h>>2]=g+(~((g+-4-d|0)>>>2)<<2);ar(d)}h=f[O>>2]|0;if(!h){u=P;return 1}g=O+4|0;d=f[g>>2]|0;if((d|0)!=(h|0))f[g>>2]=d+(~((d+-4-h|0)>>>2)<<2);ar(h);u=P;return 1}function sb(a,c,d){a=a|0;c=c|0;d=d|0;var e=0,g=0,h=0,i=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,v=0,w=0,x=0,y=0,z=0,A=0,B=0,C=0,D=0,E=0,F=0,G=0,H=0,I=0,J=0,K=0,L=0,M=0,N=0;N=u;u=u+32|0;M=N+8|0;G=N;F=a+8|0;E=f[F>>2]|0;f[G>>2]=0;Oj(M,E,G);E=a+112|0;i=f[E>>2]|0;e=f[i>>2]|0;h=i+4|0;if(!e)e=i+8|0;else{g=f[h>>2]|0;if((g|0)!=(e|0))f[h>>2]=g+(~((g+-4-e|0)>>>2)<<2);ar(e);e=i+8|0;f[e>>2]=0;f[h>>2]=0;f[i>>2]=0}f[i>>2]=f[M>>2];f[h>>2]=f[M+4>>2];f[e>>2]=f[M+8>>2];D=f[F>>2]|0;f[G>>2]=0;Oj(M,D,G);D=a+124|0;i=f[D>>2]|0;e=f[i>>2]|0;h=i+4|0;if(!e)e=i+8|0;else{g=f[h>>2]|0;if((g|0)!=(e|0))f[h>>2]=g+(~((g+-4-e|0)>>>2)<<2);ar(e);e=i+8|0;f[e>>2]=0;f[h>>2]=0;f[i>>2]=0}f[i>>2]=f[M>>2];f[h>>2]=f[M+4>>2];f[e>>2]=f[M+8>>2];f[M>>2]=0;f[M+4>>2]=0;f[M+8>>2]=0;f[M+12>>2]=0;f[M+16>>2]=0;f[M+20>>2]=0;K=M+8|0;J=M+4|0;I=M+16|0;H=M+20|0;qc(M);e=f[J>>2]|0;g=(f[H>>2]|0)+(f[I>>2]|0)|0;if((f[K>>2]|0)==(e|0))e=0;else e=(f[e+(((g>>>0)/341|0)<<2)>>2]|0)+(((g>>>0)%341|0)*12|0)|0;f[e>>2]=c;f[e+4>>2]=0;f[e+8>>2]=0;e=(f[H>>2]|0)+1|0;f[H>>2]=e;a:do if(e|0){v=a+100|0;C=a+88|0;t=d+4|0;w=a+92|0;A=a+44|0;y=a+40|0;B=a+12|0;z=a+84|0;x=a+80|0;b:while(1){q=f[I>>2]|0;g=e+-1|0;l=q+g|0;r=f[J>>2]|0;p=f[r+(((l>>>0)/341|0)<<2)>>2]|0;l=(l>>>0)%341|0;s=f[p+(l*12|0)>>2]|0;h=f[p+(l*12|0)+4>>2]|0;l=f[p+(l*12|0)+8>>2]|0;f[H>>2]=g;g=f[K>>2]|0;r=g-r>>2;if((1-e-q+((r|0)==0?0:(r*341|0)+-1|0)|0)>>>0>681){ar(f[g+-4>>2]|0);f[K>>2]=(f[K>>2]|0)+-4}g=f[E>>2]|0;r=g+(l*12|0)|0;q=(f[D>>2]|0)+(l*12|0)|0;n=un(a,s,q,h)|0;e=(f[a>>2]|0)-(f[(f[q>>2]|0)+(n<<2)>>2]|0)|0;c:do if(!e){if((s|0)>0){c=g+(l*12|0)+4|0;j=f[d>>2]|0;m=j+84|0;i=j+68|0;k=j+40|0;j=j+64|0;g=f[t>>2]|0;l=0;do{e=g;g=g+1|0;f[t>>2]=g;h=f[r>>2]|0;if(((f[c>>2]|0)-h|0)!=12){L=22;break b}if(!(b[m>>0]|0))e=f[(f[i>>2]|0)+(e<<2)>>2]|0;p=k;q=f[p>>2]|0;p=kn(q|0,f[p+4>>2]|0,e|0,((e|0)<0)<<31>>31|0)|0;Mg((f[f[j>>2]>>2]|0)+p|0,h|0,q|0)|0;l=l+1|0}while((l|0)<(s|0))}}else{if(!s){L=27;break b}if(s>>>0<3){i=f[v>>2]|0;f[i>>2]=n;e=f[F>>2]|0;if(e>>>0>1){g=n;h=1;do{g=(g|0)==(e+-1|0)?0:g+1|0;f[i+(h<<2)>>2]=g;h=h+1|0;e=f[F>>2]|0}while(h>>>0>>0)}g=0;while(1){if(!e)i=f[C>>2]|0;else{k=f[v>>2]|0;l=f[C>>2]|0;m=f[q>>2]|0;i=l;o=0;do{n=k+(o<<2)|0;f[l+(f[n>>2]<<2)>>2]=0;e=f[n>>2]|0;p=(f[a>>2]|0)-(f[m+(e<<2)>>2]|0)|0;do if(p|0){h=l+(e<<2)|0;if((p|0)>=33){L=41;break b}if((p|0)<=0){L=43;break b}c=f[A>>2]|0;j=32-c|0;e=f[y>>2]|0;c=f[e>>2]<(j|0)){p=p-j|0;f[A>>2]=p;e=e+4|0;f[y>>2]=e;p=32-p|0;f[h>>2]=(f[e>>2]|0)>>>p|c>>>(p-j|0);break}f[h>>2]=c>>>(32-p|0);p=(f[A>>2]|0)+p|0;f[A>>2]=p;if((p|0)!=32)break;f[y>>2]=e+4;f[A>>2]=0}while(0);n=f[n>>2]|0;p=l+(n<<2)|0;f[p>>2]=f[p>>2]|f[(f[r>>2]|0)+(n<<2)>>2];o=o+1|0}while(o>>>0<(f[F>>2]|0)>>>0)}h=f[d>>2]|0;e=f[t>>2]|0;f[t>>2]=e+1;if(((f[w>>2]|0)-i|0)!=12){L=36;break b}if(!(b[h+84>>0]|0))e=f[(f[h+68>>2]|0)+(e<<2)>>2]|0;o=h+40|0;p=f[o>>2]|0;o=kn(p|0,f[o+4>>2]|0,e|0,((e|0)<0)<<31>>31|0)|0;Mg((f[f[h+64>>2]>>2]|0)+o|0,i|0,p|0)|0;g=g+1|0;if(g>>>0>=s>>>0)break c;e=f[F>>2]|0}}c=1<>2]|0;e=f[r>>2]|0;i=e;h=f[(f[E>>2]|0)+(m*12|0)>>2]|0;if((g|0)!=(e|0)){g=g-e>>2;e=0;do{f[h+(e<<2)>>2]=f[i+(e<<2)>>2];e=e+1|0}while(e>>>0>>0)}i=h+(n<<2)|0;f[i>>2]=(f[i>>2]|0)+c;i=(_(s|0)|0)^31;f[G>>2]=0;uj(B,i,G);i=(s>>>1)-(f[G>>2]|0)|0;g=s-i|0;if((i|0)==(g|0)){j=i;k=i}else{s=f[z>>2]|0;e=f[x>>2]|0;h=(f[e>>2]&1<<31-s|0)!=0;s=s+1|0;f[z>>2]=s;if((s|0)==32){f[x>>2]=e+4;f[z>>2]=0}j=h?i:g;k=h?g:i}e=f[D>>2]|0;c=f[e+(l*12|0)>>2]|0;g=c+(n<<2)|0;f[g>>2]=(f[g>>2]|0)+1;g=f[e+(l*12|0)+4>>2]|0;h=c;if((g|0)!=(h|0)){i=f[e+(m*12|0)>>2]|0;g=g-h>>2;e=0;do{f[i+(e<<2)>>2]=f[c+(e<<2)>>2];e=e+1|0}while(e>>>0>>0)}if(j|0){i=f[K>>2]|0;h=f[J>>2]|0;s=i-h>>2;e=f[I>>2]|0;g=f[H>>2]|0;if((((s|0)==0?0:(s*341|0)+-1|0)|0)==(g+e|0)){qc(M);e=f[I>>2]|0;g=f[H>>2]|0;i=f[K>>2]|0;h=f[J>>2]|0}e=g+e|0;if((i|0)==(h|0))e=0;else e=(f[h+(((e>>>0)/341|0)<<2)>>2]|0)+(((e>>>0)%341|0)*12|0)|0;f[e>>2]=j;f[e+4>>2]=n;f[e+8>>2]=l;f[H>>2]=(f[H>>2]|0)+1}if(k|0){i=f[K>>2]|0;h=f[J>>2]|0;s=i-h>>2;e=f[I>>2]|0;g=f[H>>2]|0;if((((s|0)==0?0:(s*341|0)+-1|0)|0)==(g+e|0)){qc(M);e=f[I>>2]|0;g=f[H>>2]|0;i=f[K>>2]|0;h=f[J>>2]|0}e=g+e|0;if((i|0)==(h|0))e=0;else e=(f[h+(((e>>>0)/341|0)<<2)>>2]|0)+(((e>>>0)%341|0)*12|0)|0;f[e>>2]=k;f[e+4>>2]=n;f[e+8>>2]=m;f[H>>2]=(f[H>>2]|0)+1}}while(0);e=f[H>>2]|0;if(!e)break a}if((L|0)==22)Ga(17368,17398,51,17461);else if((L|0)==27)Ga(17720,17758,223,17846);else if((L|0)==36)Ga(17368,17398,51,17461);else if((L|0)==41)Ga(17861,17885,48,17934);else if((L|0)==43)Ga(17963,17885,49,17934)}while(0);e=f[J>>2]|0;g=f[I>>2]|0;i=e+(((g>>>0)/341|0)<<2)|0;h=f[K>>2]|0;j=h;k=e;if((h|0)==(e|0)){c=0;g=0}else{g=(f[i>>2]|0)+(((g>>>0)%341|0)*12|0)|0;c=g}d:while(1){do{if((g|0)==(c|0))break d;g=g+12|0}while((g-(f[i>>2]|0)|0)!=4092);g=i+4|0;i=g;g=f[g>>2]|0}f[H>>2]=0;g=j-k>>2;if(g>>>0>2)do{ar(f[e>>2]|0);e=(f[J>>2]|0)+4|0;f[J>>2]=e;h=f[K>>2]|0;g=h-e>>2}while(g>>>0>2);switch(g|0){case 1:{g=170;L=86;break}case 2:{g=341;L=86;break}default:{}}if((L|0)==86)f[I>>2]=g;if((e|0)!=(h|0)){do{ar(f[e>>2]|0);e=e+4|0}while((e|0)!=(h|0));e=f[J>>2]|0;g=f[K>>2]|0;if((g|0)!=(e|0))f[K>>2]=g+(~((g+-4-e|0)>>>2)<<2)}e=f[M>>2]|0;if(!e){u=N;return}ar(e);u=N;return}function tb(a,c,d){a=a|0;c=c|0;d=d|0;var e=0,g=0,h=0,i=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,v=0,w=0,x=0,y=0,z=0,A=0,B=0,C=0,D=0,E=0,F=0,G=0,H=0,I=0,J=0,K=0,L=0,M=0,N=0;N=u;u=u+32|0;M=N+8|0;G=N;F=a+8|0;E=f[F>>2]|0;f[G>>2]=0;Oj(M,E,G);E=a+112|0;i=f[E>>2]|0;e=f[i>>2]|0;h=i+4|0;if(!e)e=i+8|0;else{g=f[h>>2]|0;if((g|0)!=(e|0))f[h>>2]=g+(~((g+-4-e|0)>>>2)<<2);ar(e);e=i+8|0;f[e>>2]=0;f[h>>2]=0;f[i>>2]=0}f[i>>2]=f[M>>2];f[h>>2]=f[M+4>>2];f[e>>2]=f[M+8>>2];D=f[F>>2]|0;f[G>>2]=0;Oj(M,D,G);D=a+124|0;i=f[D>>2]|0;e=f[i>>2]|0;h=i+4|0;if(!e)e=i+8|0;else{g=f[h>>2]|0;if((g|0)!=(e|0))f[h>>2]=g+(~((g+-4-e|0)>>>2)<<2);ar(e);e=i+8|0;f[e>>2]=0;f[h>>2]=0;f[i>>2]=0}f[i>>2]=f[M>>2];f[h>>2]=f[M+4>>2];f[e>>2]=f[M+8>>2];f[M>>2]=0;f[M+4>>2]=0;f[M+8>>2]=0;f[M+12>>2]=0;f[M+16>>2]=0;f[M+20>>2]=0;K=M+8|0;J=M+4|0;I=M+16|0;H=M+20|0;qc(M);e=f[J>>2]|0;g=(f[H>>2]|0)+(f[I>>2]|0)|0;if((f[K>>2]|0)==(e|0))e=0;else e=(f[e+(((g>>>0)/341|0)<<2)>>2]|0)+(((g>>>0)%341|0)*12|0)|0;f[e>>2]=c;f[e+4>>2]=0;f[e+8>>2]=0;e=(f[H>>2]|0)+1|0;f[H>>2]=e;a:do if(e|0){v=a+100|0;C=a+88|0;t=d+4|0;w=a+92|0;A=a+44|0;y=a+40|0;B=a+12|0;z=a+84|0;x=a+80|0;b:while(1){q=f[I>>2]|0;g=e+-1|0;l=q+g|0;r=f[J>>2]|0;p=f[r+(((l>>>0)/341|0)<<2)>>2]|0;l=(l>>>0)%341|0;s=f[p+(l*12|0)>>2]|0;h=f[p+(l*12|0)+4>>2]|0;l=f[p+(l*12|0)+8>>2]|0;f[H>>2]=g;g=f[K>>2]|0;r=g-r>>2;if((1-e-q+((r|0)==0?0:(r*341|0)+-1|0)|0)>>>0>681){ar(f[g+-4>>2]|0);f[K>>2]=(f[K>>2]|0)+-4}c=f[E>>2]|0;r=c+(l*12|0)|0;n=((f[F>>2]|0)+-1|0)==(h|0)?0:h+1|0;q=(f[D>>2]|0)+(l*12|0)|0;e=(f[a>>2]|0)-(f[(f[q>>2]|0)+(n<<2)>>2]|0)|0;c:do if(!e){if((s|0)>0){c=c+(l*12|0)+4|0;j=f[d>>2]|0;m=j+84|0;i=j+68|0;k=j+40|0;j=j+64|0;g=f[t>>2]|0;l=0;do{e=g;g=g+1|0;f[t>>2]=g;h=f[r>>2]|0;if(((f[c>>2]|0)-h|0)!=12){L=22;break b}if(!(b[m>>0]|0))e=f[(f[i>>2]|0)+(e<<2)>>2]|0;p=k;q=f[p>>2]|0;p=kn(q|0,f[p+4>>2]|0,e|0,((e|0)<0)<<31>>31|0)|0;Mg((f[f[j>>2]>>2]|0)+p|0,h|0,q|0)|0;l=l+1|0}while((l|0)<(s|0))}}else{if(!s){L=27;break b}if(s>>>0<3){i=f[v>>2]|0;f[i>>2]=n;e=f[F>>2]|0;if(e>>>0>1){g=n;h=1;do{g=(g|0)==(e+-1|0)?0:g+1|0;f[i+(h<<2)>>2]=g;h=h+1|0;e=f[F>>2]|0}while(h>>>0>>0)}g=0;while(1){if(!e)i=f[C>>2]|0;else{k=f[v>>2]|0;l=f[C>>2]|0;m=f[q>>2]|0;i=l;o=0;do{n=k+(o<<2)|0;f[l+(f[n>>2]<<2)>>2]=0;e=f[n>>2]|0;p=(f[a>>2]|0)-(f[m+(e<<2)>>2]|0)|0;do if(p|0){h=l+(e<<2)|0;if((p|0)>=33){L=41;break b}if((p|0)<=0){L=43;break b}c=f[A>>2]|0;j=32-c|0;e=f[y>>2]|0;c=f[e>>2]<(j|0)){p=p-j|0;f[A>>2]=p;e=e+4|0;f[y>>2]=e;p=32-p|0;f[h>>2]=(f[e>>2]|0)>>>p|c>>>(p-j|0);break}f[h>>2]=c>>>(32-p|0);p=(f[A>>2]|0)+p|0;f[A>>2]=p;if((p|0)!=32)break;f[y>>2]=e+4;f[A>>2]=0}while(0);n=f[n>>2]|0;p=l+(n<<2)|0;f[p>>2]=f[p>>2]|f[(f[r>>2]|0)+(n<<2)>>2];o=o+1|0}while(o>>>0<(f[F>>2]|0)>>>0)}h=f[d>>2]|0;e=f[t>>2]|0;f[t>>2]=e+1;if(((f[w>>2]|0)-i|0)!=12){L=36;break b}if(!(b[h+84>>0]|0))e=f[(f[h+68>>2]|0)+(e<<2)>>2]|0;o=h+40|0;p=f[o>>2]|0;o=kn(p|0,f[o+4>>2]|0,e|0,((e|0)<0)<<31>>31|0)|0;Mg((f[f[h+64>>2]>>2]|0)+o|0,i|0,p|0)|0;g=g+1|0;if(g>>>0>=s>>>0)break c;e=f[F>>2]|0}}j=1<>2]|0;e=f[r>>2]|0;i=e;h=f[c+(m*12|0)>>2]|0;if((g|0)!=(e|0)){g=g-e>>2;e=0;do{f[h+(e<<2)>>2]=f[i+(e<<2)>>2];e=e+1|0}while(e>>>0>>0)}i=h+(n<<2)|0;f[i>>2]=(f[i>>2]|0)+j;i=(_(s|0)|0)^31;f[G>>2]=0;uj(B,i,G);i=(s>>>1)-(f[G>>2]|0)|0;g=s-i|0;if((i|0)==(g|0)){j=i;k=i}else{s=f[z>>2]|0;e=f[x>>2]|0;h=(f[e>>2]&1<<31-s|0)!=0;s=s+1|0;f[z>>2]=s;if((s|0)==32){f[x>>2]=e+4;f[z>>2]=0}j=h?i:g;k=h?g:i}e=f[D>>2]|0;c=f[e+(l*12|0)>>2]|0;g=c+(n<<2)|0;f[g>>2]=(f[g>>2]|0)+1;g=f[e+(l*12|0)+4>>2]|0;h=c;if((g|0)!=(h|0)){i=f[e+(m*12|0)>>2]|0;g=g-h>>2;e=0;do{f[i+(e<<2)>>2]=f[c+(e<<2)>>2];e=e+1|0}while(e>>>0>>0)}if(j|0){i=f[K>>2]|0;h=f[J>>2]|0;s=i-h>>2;e=f[I>>2]|0;g=f[H>>2]|0;if((((s|0)==0?0:(s*341|0)+-1|0)|0)==(g+e|0)){qc(M);e=f[I>>2]|0;g=f[H>>2]|0;i=f[K>>2]|0;h=f[J>>2]|0}e=g+e|0;if((i|0)==(h|0))e=0;else e=(f[h+(((e>>>0)/341|0)<<2)>>2]|0)+(((e>>>0)%341|0)*12|0)|0;f[e>>2]=j;f[e+4>>2]=n;f[e+8>>2]=l;f[H>>2]=(f[H>>2]|0)+1}if(k|0){i=f[K>>2]|0;h=f[J>>2]|0;s=i-h>>2;e=f[I>>2]|0;g=f[H>>2]|0;if((((s|0)==0?0:(s*341|0)+-1|0)|0)==(g+e|0)){qc(M);e=f[I>>2]|0;g=f[H>>2]|0;i=f[K>>2]|0;h=f[J>>2]|0}e=g+e|0;if((i|0)==(h|0))e=0;else e=(f[h+(((e>>>0)/341|0)<<2)>>2]|0)+(((e>>>0)%341|0)*12|0)|0;f[e>>2]=k;f[e+4>>2]=n;f[e+8>>2]=m;f[H>>2]=(f[H>>2]|0)+1}}while(0);e=f[H>>2]|0;if(!e)break a}if((L|0)==22)Ga(17368,17398,51,17461);else if((L|0)==27)Ga(17720,17758,223,17846);else if((L|0)==36)Ga(17368,17398,51,17461);else if((L|0)==41)Ga(17861,17885,48,17934);else if((L|0)==43)Ga(17963,17885,49,17934)}while(0);e=f[J>>2]|0;g=f[I>>2]|0;i=e+(((g>>>0)/341|0)<<2)|0;h=f[K>>2]|0;j=h;k=e;if((h|0)==(e|0)){c=0;g=0}else{g=(f[i>>2]|0)+(((g>>>0)%341|0)*12|0)|0;c=g}d:while(1){do{if((g|0)==(c|0))break d;g=g+12|0}while((g-(f[i>>2]|0)|0)!=4092);g=i+4|0;i=g;g=f[g>>2]|0}f[H>>2]=0;g=j-k>>2;if(g>>>0>2)do{ar(f[e>>2]|0);e=(f[J>>2]|0)+4|0;f[J>>2]=e;h=f[K>>2]|0;g=h-e>>2}while(g>>>0>2);switch(g|0){case 1:{g=170;L=86;break}case 2:{g=341;L=86;break}default:{}}if((L|0)==86)f[I>>2]=g;if((e|0)!=(h|0)){do{ar(f[e>>2]|0);e=e+4|0}while((e|0)!=(h|0));e=f[J>>2]|0;g=f[K>>2]|0;if((g|0)!=(e|0))f[K>>2]=g+(~((g+-4-e|0)>>>2)<<2)}e=f[M>>2]|0;if(!e){u=N;return}ar(e);u=N;return}function ub(a,b,c){a=a|0;b=b|0;c=c|0;var d=0,e=0,g=0,h=0,i=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,v=0,w=0,x=0,y=0,z=0,A=0,B=0,C=0,D=0,E=0,F=0,G=0,H=0,I=0,J=0,K=0,L=0,M=0,N=0,O=0,P=0,Q=0;Q=u;u=u+48|0;J=Q+24|0;P=Q;I=a+8|0;H=f[I>>2]|0;f[P>>2]=0;Oj(J,H,P);H=a+112|0;h=f[H>>2]|0;d=f[h>>2]|0;g=h+4|0;if(!d)d=h+8|0;else{e=f[g>>2]|0;if((e|0)!=(d|0))f[g>>2]=e+(~((e+-4-d|0)>>>2)<<2);ar(d);d=h+8|0;f[d>>2]=0;f[g>>2]=0;f[h>>2]=0}f[h>>2]=f[J>>2];f[g>>2]=f[J+4>>2];f[d>>2]=f[J+8>>2];G=f[I>>2]|0;f[P>>2]=0;Oj(J,G,P);G=a+124|0;h=f[G>>2]|0;d=f[h>>2]|0;g=h+4|0;if(!d)d=h+8|0;else{e=f[g>>2]|0;if((e|0)!=(d|0))f[g>>2]=e+(~((e+-4-d|0)>>>2)<<2);ar(d);d=h+8|0;f[d>>2]=0;f[g>>2]=0;f[h>>2]=0}f[h>>2]=f[J>>2];f[g>>2]=f[J+4>>2];f[d>>2]=f[J+8>>2];f[P>>2]=0;f[P+4>>2]=0;f[P+8>>2]=0;f[P+12>>2]=0;f[P+16>>2]=0;f[P+20>>2]=0;N=P+8|0;M=P+4|0;L=P+16|0;K=P+20|0;qc(P);d=f[M>>2]|0;e=(f[K>>2]|0)+(f[L>>2]|0)|0;if((f[N>>2]|0)==(d|0))d=0;else d=(f[d+(((e>>>0)/341|0)<<2)>>2]|0)+(((e>>>0)%341|0)*12|0)|0;f[d>>2]=b;f[d+4>>2]=0;f[d+8>>2]=0;d=(f[K>>2]|0)+1|0;f[K>>2]=d;a:do if(d|0){w=a+100|0;v=a+88|0;z=J+4|0;B=J+8|0;E=a+44|0;y=a+40|0;F=a+12|0;D=a+84|0;x=a+80|0;A=J+4|0;C=J+8|0;b:while(1){r=f[L>>2]|0;e=d+-1|0;k=r+e|0;s=f[M>>2]|0;q=f[s+(((k>>>0)/341|0)<<2)>>2]|0;k=(k>>>0)%341|0;t=f[q+(k*12|0)>>2]|0;g=f[q+(k*12|0)+4>>2]|0;k=f[q+(k*12|0)+8>>2]|0;f[K>>2]=e;e=f[N>>2]|0;s=e-s>>2;if((1-d-r+((s|0)==0?0:(s*341|0)+-1|0)|0)>>>0>681){ar(f[e+-4>>2]|0);f[N>>2]=(f[N>>2]|0)+-4}e=f[H>>2]|0;s=e+(k*12|0)|0;r=(f[G>>2]|0)+(k*12|0)|0;m=un(a,t,r,g)|0;d=(f[a>>2]|0)-(f[(f[r>>2]|0)+(m<<2)>>2]|0)|0;c:do if(!d){if((t|0)>0){i=f[c>>2]|0;g=i+4|0;h=i+8|0;b=0;do{e=f[s>>2]|0;d=f[e>>2]|0;f[J>>2]=d;f[A>>2]=f[e+4>>2];f[C>>2]=f[e+8>>2];e=f[g>>2]|0;if(e>>>0<(f[h>>2]|0)>>>0){f[e>>2]=d;f[e+4>>2]=f[A>>2];f[e+8>>2]=f[C>>2];f[g>>2]=e+12}else mh(i,J);b=b+1|0}while((b|0)<(t|0))}}else{if(!t){O=26;break b}if(t>>>0<3){h=f[w>>2]|0;f[h>>2]=m;d=f[I>>2]|0;if(d>>>0>1){e=m;g=1;do{e=(e|0)==(d+-1|0)?0:e+1|0;f[h+(g<<2)>>2]=e;g=g+1|0;d=f[I>>2]|0}while(g>>>0>>0)}q=f[c>>2]|0;o=q+4|0;p=q+8|0;e=0;while(1){if(d|0){i=f[w>>2]|0;j=f[v>>2]|0;k=f[r>>2]|0;m=0;do{l=i+(m<<2)|0;f[j+(f[l>>2]<<2)>>2]=0;d=f[l>>2]|0;n=(f[a>>2]|0)-(f[k+(d<<2)>>2]|0)|0;do if(n|0){g=j+(d<<2)|0;if((n|0)>=33){O=35;break b}if((n|0)<=0){O=37;break b}h=f[E>>2]|0;b=32-h|0;d=f[y>>2]|0;h=f[d>>2]<(b|0)){n=n-b|0;f[E>>2]=n;d=d+4|0;f[y>>2]=d;n=32-n|0;f[g>>2]=(f[d>>2]|0)>>>n|h>>>(n-b|0);break}f[g>>2]=h>>>(32-n|0);n=(f[E>>2]|0)+n|0;f[E>>2]=n;if((n|0)!=32)break;f[y>>2]=d+4;f[E>>2]=0}while(0);l=f[l>>2]|0;n=j+(l<<2)|0;f[n>>2]=f[n>>2]|f[(f[s>>2]|0)+(l<<2)>>2];m=m+1|0}while(m>>>0<(f[I>>2]|0)>>>0)}g=f[v>>2]|0;d=f[g>>2]|0;f[J>>2]=d;f[z>>2]=f[g+4>>2];f[B>>2]=f[g+8>>2];g=f[o>>2]|0;if(g>>>0<(f[p>>2]|0)>>>0){f[g>>2]=d;f[g+4>>2]=f[z>>2];f[g+8>>2]=f[B>>2];f[o>>2]=g+12}else mh(q,J);e=e+1|0;if(e>>>0>=t>>>0)break c;d=f[I>>2]|0}}b=1<>2]|0;d=f[s>>2]|0;h=d;g=f[(f[H>>2]|0)+(l*12|0)>>2]|0;if((e|0)!=(d|0)){e=e-d>>2;d=0;do{f[g+(d<<2)>>2]=f[h+(d<<2)>>2];d=d+1|0}while(d>>>0>>0)}h=g+(m<<2)|0;f[h>>2]=(f[h>>2]|0)+b;h=(_(t|0)|0)^31;f[J>>2]=0;uj(F,h,J);h=(t>>>1)-(f[J>>2]|0)|0;e=t-h|0;if((h|0)==(e|0)){i=h;j=h}else{t=f[D>>2]|0;d=f[x>>2]|0;g=(f[d>>2]&1<<31-t|0)!=0;t=t+1|0;f[D>>2]=t;if((t|0)==32){f[x>>2]=d+4;f[D>>2]=0}i=g?h:e;j=g?e:h}d=f[G>>2]|0;b=f[d+(k*12|0)>>2]|0;e=b+(m<<2)|0;f[e>>2]=(f[e>>2]|0)+1;e=f[d+(k*12|0)+4>>2]|0;g=b;if((e|0)!=(g|0)){h=f[d+(l*12|0)>>2]|0;e=e-g>>2;d=0;do{f[h+(d<<2)>>2]=f[b+(d<<2)>>2];d=d+1|0}while(d>>>0>>0)}if(i|0){h=f[N>>2]|0;e=f[M>>2]|0;t=h-e>>2;d=f[L>>2]|0;g=f[K>>2]|0;if((((t|0)==0?0:(t*341|0)+-1|0)|0)==(g+d|0)){qc(P);d=f[L>>2]|0;g=f[K>>2]|0;h=f[N>>2]|0;e=f[M>>2]|0}d=g+d|0;if((h|0)==(e|0))d=0;else d=(f[e+(((d>>>0)/341|0)<<2)>>2]|0)+(((d>>>0)%341|0)*12|0)|0;f[d>>2]=i;f[d+4>>2]=m;f[d+8>>2]=k;f[K>>2]=(f[K>>2]|0)+1}if(j|0){h=f[N>>2]|0;g=f[M>>2]|0;t=h-g>>2;d=f[L>>2]|0;e=f[K>>2]|0;if((((t|0)==0?0:(t*341|0)+-1|0)|0)==(e+d|0)){qc(P);d=f[L>>2]|0;e=f[K>>2]|0;h=f[N>>2]|0;g=f[M>>2]|0}d=e+d|0;if((h|0)==(g|0))d=0;else d=(f[g+(((d>>>0)/341|0)<<2)>>2]|0)+(((d>>>0)%341|0)*12|0)|0;f[d>>2]=j;f[d+4>>2]=m;f[d+8>>2]=l;f[K>>2]=(f[K>>2]|0)+1}}while(0);d=f[K>>2]|0;if(!d)break a}if((O|0)==26)Ga(17720,17758,223,17846);else if((O|0)==35)Ga(17861,17885,48,17934);else if((O|0)==37)Ga(17963,17885,49,17934)}while(0);d=f[M>>2]|0;e=f[L>>2]|0;h=d+(((e>>>0)/341|0)<<2)|0;g=f[N>>2]|0;i=g;j=d;if((g|0)==(d|0)){b=0;e=0}else{e=(f[h>>2]|0)+(((e>>>0)%341|0)*12|0)|0;b=e}d:while(1){do{if((e|0)==(b|0))break d;e=e+12|0}while((e-(f[h>>2]|0)|0)!=4092);e=h+4|0;h=e;e=f[e>>2]|0}f[K>>2]=0;e=i-j>>2;if(e>>>0>2)do{ar(f[d>>2]|0);d=(f[M>>2]|0)+4|0;f[M>>2]=d;g=f[N>>2]|0;e=g-d>>2}while(e>>>0>2);switch(e|0){case 1:{e=170;O=83;break}case 2:{e=341;O=83;break}default:{}}if((O|0)==83)f[L>>2]=e;if((d|0)!=(g|0)){do{ar(f[d>>2]|0);d=d+4|0}while((d|0)!=(g|0));d=f[M>>2]|0;e=f[N>>2]|0;if((e|0)!=(d|0))f[N>>2]=e+(~((e+-4-d|0)>>>2)<<2)}d=f[P>>2]|0;if(!d){u=Q;return}ar(d);u=Q;return}function vb(a,b,c){a=a|0;b=b|0;c=c|0;var d=0,e=0,g=0,h=0,i=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,v=0,w=0,x=0,y=0,z=0,A=0,B=0,C=0,D=0,E=0,F=0,G=0,H=0,I=0,J=0,K=0,L=0,M=0,N=0,O=0,P=0,Q=0;Q=u;u=u+48|0;J=Q+24|0;P=Q;I=a+8|0;H=f[I>>2]|0;f[P>>2]=0;Oj(J,H,P);H=a+112|0;h=f[H>>2]|0;d=f[h>>2]|0;g=h+4|0;if(!d)d=h+8|0;else{e=f[g>>2]|0;if((e|0)!=(d|0))f[g>>2]=e+(~((e+-4-d|0)>>>2)<<2);ar(d);d=h+8|0;f[d>>2]=0;f[g>>2]=0;f[h>>2]=0}f[h>>2]=f[J>>2];f[g>>2]=f[J+4>>2];f[d>>2]=f[J+8>>2];G=f[I>>2]|0;f[P>>2]=0;Oj(J,G,P);G=a+124|0;h=f[G>>2]|0;d=f[h>>2]|0;g=h+4|0;if(!d)d=h+8|0;else{e=f[g>>2]|0;if((e|0)!=(d|0))f[g>>2]=e+(~((e+-4-d|0)>>>2)<<2);ar(d);d=h+8|0;f[d>>2]=0;f[g>>2]=0;f[h>>2]=0}f[h>>2]=f[J>>2];f[g>>2]=f[J+4>>2];f[d>>2]=f[J+8>>2];f[P>>2]=0;f[P+4>>2]=0;f[P+8>>2]=0;f[P+12>>2]=0;f[P+16>>2]=0;f[P+20>>2]=0;N=P+8|0;M=P+4|0;L=P+16|0;K=P+20|0;qc(P);d=f[M>>2]|0;e=(f[K>>2]|0)+(f[L>>2]|0)|0;if((f[N>>2]|0)==(d|0))d=0;else d=(f[d+(((e>>>0)/341|0)<<2)>>2]|0)+(((e>>>0)%341|0)*12|0)|0;f[d>>2]=b;f[d+4>>2]=0;f[d+8>>2]=0;d=(f[K>>2]|0)+1|0;f[K>>2]=d;a:do if(d|0){w=a+100|0;v=a+88|0;z=J+4|0;B=J+8|0;E=a+44|0;y=a+40|0;F=a+12|0;D=a+84|0;x=a+80|0;A=J+4|0;C=J+8|0;b:while(1){r=f[L>>2]|0;e=d+-1|0;k=r+e|0;s=f[M>>2]|0;q=f[s+(((k>>>0)/341|0)<<2)>>2]|0;k=(k>>>0)%341|0;t=f[q+(k*12|0)>>2]|0;g=f[q+(k*12|0)+4>>2]|0;k=f[q+(k*12|0)+8>>2]|0;f[K>>2]=e;e=f[N>>2]|0;s=e-s>>2;if((1-d-r+((s|0)==0?0:(s*341|0)+-1|0)|0)>>>0>681){ar(f[e+-4>>2]|0);f[N>>2]=(f[N>>2]|0)+-4}b=f[H>>2]|0;s=b+(k*12|0)|0;m=((f[I>>2]|0)+-1|0)==(g|0)?0:g+1|0;r=(f[G>>2]|0)+(k*12|0)|0;d=(f[a>>2]|0)-(f[(f[r>>2]|0)+(m<<2)>>2]|0)|0;c:do if(!d){if((t|0)>0){i=f[c>>2]|0;g=i+4|0;h=i+8|0;b=0;do{e=f[s>>2]|0;d=f[e>>2]|0;f[J>>2]=d;f[A>>2]=f[e+4>>2];f[C>>2]=f[e+8>>2];e=f[g>>2]|0;if(e>>>0<(f[h>>2]|0)>>>0){f[e>>2]=d;f[e+4>>2]=f[A>>2];f[e+8>>2]=f[C>>2];f[g>>2]=e+12}else mh(i,J);b=b+1|0}while((b|0)<(t|0))}}else{if(!t){O=26;break b}if(t>>>0<3){h=f[w>>2]|0;f[h>>2]=m;d=f[I>>2]|0;if(d>>>0>1){e=m;g=1;do{e=(e|0)==(d+-1|0)?0:e+1|0;f[h+(g<<2)>>2]=e;g=g+1|0;d=f[I>>2]|0}while(g>>>0>>0)}q=f[c>>2]|0;o=q+4|0;p=q+8|0;e=0;while(1){if(d|0){i=f[w>>2]|0;j=f[v>>2]|0;k=f[r>>2]|0;m=0;do{l=i+(m<<2)|0;f[j+(f[l>>2]<<2)>>2]=0;d=f[l>>2]|0;n=(f[a>>2]|0)-(f[k+(d<<2)>>2]|0)|0;do if(n|0){g=j+(d<<2)|0;if((n|0)>=33){O=35;break b}if((n|0)<=0){O=37;break b}h=f[E>>2]|0;b=32-h|0;d=f[y>>2]|0;h=f[d>>2]<(b|0)){n=n-b|0;f[E>>2]=n;d=d+4|0;f[y>>2]=d;n=32-n|0;f[g>>2]=(f[d>>2]|0)>>>n|h>>>(n-b|0);break}f[g>>2]=h>>>(32-n|0);n=(f[E>>2]|0)+n|0;f[E>>2]=n;if((n|0)!=32)break;f[y>>2]=d+4;f[E>>2]=0}while(0);l=f[l>>2]|0;n=j+(l<<2)|0;f[n>>2]=f[n>>2]|f[(f[s>>2]|0)+(l<<2)>>2];m=m+1|0}while(m>>>0<(f[I>>2]|0)>>>0)}g=f[v>>2]|0;d=f[g>>2]|0;f[J>>2]=d;f[z>>2]=f[g+4>>2];f[B>>2]=f[g+8>>2];g=f[o>>2]|0;if(g>>>0<(f[p>>2]|0)>>>0){f[g>>2]=d;f[g+4>>2]=f[z>>2];f[g+8>>2]=f[B>>2];f[o>>2]=g+12}else mh(q,J);e=e+1|0;if(e>>>0>=t>>>0)break c;d=f[I>>2]|0}}i=1<>2]|0;d=f[s>>2]|0;h=d;g=f[b+(l*12|0)>>2]|0;if((e|0)!=(d|0)){e=e-d>>2;d=0;do{f[g+(d<<2)>>2]=f[h+(d<<2)>>2];d=d+1|0}while(d>>>0>>0)}h=g+(m<<2)|0;f[h>>2]=(f[h>>2]|0)+i;h=(_(t|0)|0)^31;f[J>>2]=0;uj(F,h,J);h=(t>>>1)-(f[J>>2]|0)|0;e=t-h|0;if((h|0)==(e|0)){i=h;j=h}else{t=f[D>>2]|0;d=f[x>>2]|0;g=(f[d>>2]&1<<31-t|0)!=0;t=t+1|0;f[D>>2]=t;if((t|0)==32){f[x>>2]=d+4;f[D>>2]=0}i=g?h:e;j=g?e:h}d=f[G>>2]|0;b=f[d+(k*12|0)>>2]|0;e=b+(m<<2)|0;f[e>>2]=(f[e>>2]|0)+1;e=f[d+(k*12|0)+4>>2]|0;g=b;if((e|0)!=(g|0)){h=f[d+(l*12|0)>>2]|0;e=e-g>>2;d=0;do{f[h+(d<<2)>>2]=f[b+(d<<2)>>2];d=d+1|0}while(d>>>0>>0)}if(i|0){h=f[N>>2]|0;g=f[M>>2]|0;t=h-g>>2;d=f[L>>2]|0;e=f[K>>2]|0;if((((t|0)==0?0:(t*341|0)+-1|0)|0)==(e+d|0)){qc(P);d=f[L>>2]|0;e=f[K>>2]|0;h=f[N>>2]|0;g=f[M>>2]|0}d=e+d|0;if((h|0)==(g|0))d=0;else d=(f[g+(((d>>>0)/341|0)<<2)>>2]|0)+(((d>>>0)%341|0)*12|0)|0;f[d>>2]=i;f[d+4>>2]=m;f[d+8>>2]=k;f[K>>2]=(f[K>>2]|0)+1}if(j|0){h=f[N>>2]|0;g=f[M>>2]|0;t=h-g>>2;d=f[L>>2]|0;e=f[K>>2]|0;if((((t|0)==0?0:(t*341|0)+-1|0)|0)==(e+d|0)){qc(P);d=f[L>>2]|0;e=f[K>>2]|0;h=f[N>>2]|0;g=f[M>>2]|0}d=e+d|0;if((h|0)==(g|0))d=0;else d=(f[g+(((d>>>0)/341|0)<<2)>>2]|0)+(((d>>>0)%341|0)*12|0)|0;f[d>>2]=j;f[d+4>>2]=m;f[d+8>>2]=l;f[K>>2]=(f[K>>2]|0)+1}}while(0);d=f[K>>2]|0;if(!d)break a}if((O|0)==26)Ga(17720,17758,223,17846);else if((O|0)==35)Ga(17861,17885,48,17934);else if((O|0)==37)Ga(17963,17885,49,17934)}while(0);d=f[M>>2]|0;e=f[L>>2]|0;h=d+(((e>>>0)/341|0)<<2)|0;g=f[N>>2]|0;i=g;j=d;if((g|0)==(d|0)){b=0;e=0}else{e=(f[h>>2]|0)+(((e>>>0)%341|0)*12|0)|0;b=e}d:while(1){do{if((e|0)==(b|0))break d;e=e+12|0}while((e-(f[h>>2]|0)|0)!=4092);e=h+4|0;h=e;e=f[e>>2]|0}f[K>>2]=0;e=i-j>>2;if(e>>>0>2)do{ar(f[d>>2]|0);d=(f[M>>2]|0)+4|0;f[M>>2]=d;g=f[N>>2]|0;e=g-d>>2}while(e>>>0>2);switch(e|0){case 1:{e=170;O=83;break}case 2:{e=341;O=83;break}default:{}}if((O|0)==83)f[L>>2]=e;if((d|0)!=(g|0)){do{ar(f[d>>2]|0);d=d+4|0}while((d|0)!=(g|0));d=f[M>>2]|0;e=f[N>>2]|0;if((e|0)!=(d|0))f[N>>2]=e+(~((e+-4-d|0)>>>2)<<2)}d=f[P>>2]|0;if(!d){u=Q;return}ar(d);u=Q;return}function wb(a){a=a|0;var b=0,c=0,d=0,e=0,g=0,h=0,i=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,v=0,w=0,x=0,y=0,z=0,A=0,B=0,C=0,D=0,E=0,F=0,G=0,H=0,I=0;I=u;u=u+48|0;F=I+36|0;H=I+24|0;G=I+12|0;C=I;E=a+4|0;d=f[(f[E>>2]|0)+44>>2]|0;D=a+8|0;g=f[D>>2]|0;g=((f[g+4>>2]|0)-(f[g>>2]|0)>>2>>>0)/3|0;h=d+84|0;d=d+88|0;f[F>>2]=0;f[F+4>>2]=0;f[F+8>>2]=0;c=f[d>>2]|0;b=f[h>>2]|0;i=(c-b|0)/12|0;if(g>>>0<=i>>>0){if(g>>>0>>0?(e=b+(g*12|0)|0,(c|0)!=(e|0)):0)f[d>>2]=c+(~(((c+-12-e|0)>>>0)/12|0)*12|0)}else og(h,g-i|0,F);r=a+228|0;q=a+232|0;if((f[q>>2]|0)==(f[r>>2]|0)){d=f[D>>2]|0;d=(f[d+28>>2]|0)-(f[d+24>>2]|0)>>2;f[F>>2]=-1;Oj(H,d,F);d=f[E>>2]|0;b=f[d+44>>2]|0;e=f[b+88>>2]|0;c=f[b+84>>2]|0;if((e-c|0)>0){o=G+4|0;p=G+8|0;l=b;m=c;c=d;h=d;n=0;b=0;while(1){f[G>>2]=0;f[G+4>>2]=0;f[G+8>>2]=0;i=n*3|0;if((n|0)<0)d=-1073741824;else d=f[(f[f[D>>2]>>2]|0)+(i<<2)>>2]|0;a=f[H>>2]|0;g=a+(d<<2)|0;d=f[g>>2]|0;if((d|0)==-1){f[g>>2]=b;k=b;b=b+1|0}else k=d;f[G>>2]=k;if((i|0)<-1)d=-1073741824;else d=f[(f[f[D>>2]>>2]|0)+(i+1<<2)>>2]|0;g=a+(d<<2)|0;d=f[g>>2]|0;if((d|0)==-1){f[g>>2]=b;d=b;b=b+1|0}f[o>>2]=d;if((i|0)<-2)d=-1073741824;else d=f[(f[f[D>>2]>>2]|0)+(i+2<<2)>>2]|0;g=a+(d<<2)|0;d=f[g>>2]|0;if((d|0)==-1){f[g>>2]=b;d=b;b=b+1|0}f[p>>2]=d;g=l+84|0;d=l+88|0;a=(e-m|0)/12|0;i=m;j=n;n=n+1|0;if((j|0)<(a|0)){d=l;g=m}else{c=e;f[F>>2]=0;f[F+4>>2]=0;f[F+8>>2]=0;if(n>>>0<=a>>>0)if(n>>>0>>0?(A=i+(n*12|0)|0,(c|0)!=(A|0)):0){e=c+(~(((c+-12-A|0)>>>0)/12|0)*12|0)|0;f[d>>2]=e;d=l;g=m}else{d=l;g=m}else{og(g,n-a|0,F);h=f[E>>2]|0;C=f[h+44>>2]|0;i=f[g>>2]|0;d=C;e=f[C+88>>2]|0;g=f[C+84>>2]|0}c=h}f[i+(j*12|0)>>2]=k;f[i+(j*12|0)+4>>2]=f[o>>2];f[i+(j*12|0)+8>>2]=f[p>>2];if((n|0)>=((e-g|0)/12|0|0)){d=H;break}else{l=d;m=g}}}else{c=d;d=H;b=0}f[(f[c+4>>2]|0)+68>>2]=b;d=f[d>>2]|0;if(d|0){c=H+4|0;b=f[c>>2]|0;if((b|0)!=(d|0))f[c>>2]=b+(~((b+-4-d|0)>>>2)<<2);ar(d)}u=I;return 1}f[H>>2]=0;A=H+4|0;f[A>>2]=0;f[H+8>>2]=0;b=f[D>>2]|0;Dk(G,(f[b+4>>2]|0)-(f[b>>2]|0)>>2);b=f[D>>2]|0;if(((f[b+28>>2]|0)-(f[b+24>>2]|0)|0)>0){o=a+136|0;p=H+8|0;n=0;do{h=f[(f[b+24>>2]|0)+(n<<2)>>2]|0;a:do if((h|0)>=0){b:do if((f[(f[o>>2]|0)+(n>>>5<<2)>>2]&1<<(n&31)|0)==0?(s=f[q>>2]|0,t=f[r>>2]|0,v=t,(s|0)!=(t|0)):0){a=(((h>>>0)%3|0|0)==0?2:-1)+h|0;j=(a|0)<0;l=(s-t|0)/116|0;i=b+12|0;g=b+12|0;k=0;c:while(1){m=f[(f[f[v+(k*116|0)+68>>2]>>2]|0)+(h<<2)>>2]|0;do if(1<<(m&31)&f[(f[v+(k*116|0)+16>>2]|0)+(m>>>5<<2)>>2]|0){e=f[v+(k*116|0)+32>>2]|0;m=f[e+(h<<2)>>2]|0;if(!j){c=f[(f[i>>2]|0)+(a<<2)>>2]|0;do if((c|0)>=0)if(!((c>>>0)%3|0)){c=c+2|0;break}else{c=c+-1|0;break}while(0);if((c|0)==(h|0))break;else d=c}else d=a;while(1){c=f[e+(d<<2)>>2]|0;if((d|0)<0)break c;if((c|0)!=(m|0)){h=d;break b}c=(((d>>>0)%3|0|0)==0?2:-1)+d|0;do if((c|0)>=0){c=f[(f[g>>2]|0)+(c<<2)>>2]|0;if((c|0)>=0)if(!((c>>>0)%3|0)){c=c+2|0;break}else{c=c+-1|0;break}}while(0);if((c|0)==(h|0))break;else d=c}}while(0);k=k+1|0;if(k>>>0>=l>>>0)break b}while(1)if((c|0)==(m|0))c=m;else{h=d;break}}while(0);c=f[A>>2]|0;f[(f[G>>2]|0)+(h<<2)>>2]=c-(f[H>>2]|0)>>2;f[F>>2]=h;if(c>>>0<(f[p>>2]|0)>>>0){f[c>>2]=h;f[A>>2]=c+4}else{Ii(H,F);b=f[D>>2]|0}if((((h|0)>=0?(w=(((h>>>0)%3|0|0)==0?2:-1)+h|0,(w|0)>=0):0)?(x=f[(f[b+12>>2]|0)+(w<<2)>>2]|0,(x|0)>=0):0)?(y=x+(((x>>>0)%3|0|0)==0?2:-1)|0,(y|0)>-1&(y|0)!=(h|0)):0){g=y;e=h;while(1){b=f[q>>2]|0;c=f[r>>2]|0;d=c;d:do if((b|0)!=(c|0)){c=(b-c|0)/116|0;b=0;while(1){m=f[d+(b*116|0)+32>>2]|0;b=b+1|0;if((f[m+(g<<2)>>2]|0)!=(f[m+(e<<2)>>2]|0))break;if(b>>>0>=c>>>0){z=67;break d}}b=f[A>>2]|0;f[(f[G>>2]|0)+(g<<2)>>2]=b-(f[H>>2]|0)>>2;f[F>>2]=g;if(b>>>0<(f[p>>2]|0)>>>0){f[b>>2]=g;f[A>>2]=b+4}else Ii(H,F)}else z=67;while(0);if((z|0)==67){z=0;m=f[G>>2]|0;f[m+(g<<2)>>2]=f[m+(e<<2)>>2]}b=(((g>>>0)%3|0|0)==0?2:-1)+g|0;if((b|0)<0)break a;b=f[(f[(f[D>>2]|0)+12>>2]|0)+(b<<2)>>2]|0;if((b|0)<0)break a;b=b+(((b>>>0)%3|0|0)==0?2:-1)|0;if((b|0)>-1&(b|0)!=(h|0)){e=g;g=b}else break}}}while(0);n=n+1|0;b=f[D>>2]|0}while((n|0)<((f[b+28>>2]|0)-(f[b+24>>2]|0)>>2|0))}e=f[E>>2]|0;b=f[e+44>>2]|0;d=f[b+88>>2]|0;c=f[b+84>>2]|0;if((d-c|0)>0){m=C+4|0;n=C+8|0;j=c;c=e;g=e;k=0;while(1){f[C>>2]=0;f[C+4>>2]=0;f[C+8>>2]=0;i=(f[G>>2]|0)+(k*3<<2)|0;f[C>>2]=f[i>>2];f[C+4>>2]=f[i+4>>2];f[C+8>>2]=f[i+8>>2];i=b+84|0;h=b+88|0;a=(d-j|0)/12|0;e=j;l=k;k=k+1|0;if((l|0)<(a|0))h=j;else{c=d;f[F>>2]=0;f[F+4>>2]=0;f[F+8>>2]=0;if(k>>>0<=a>>>0)if(k>>>0>>0?(B=e+(k*12|0)|0,(c|0)!=(B|0)):0){d=c+(~(((c+-12-B|0)>>>0)/12|0)*12|0)|0;f[h>>2]=d;c=j}else c=j;else{og(i,k-a|0,F);g=f[E>>2]|0;c=f[g+44>>2]|0;e=f[i>>2]|0;b=c;d=f[c+88>>2]|0;c=f[c+84>>2]|0}h=c;c=g}f[e+(l*12|0)>>2]=f[C>>2];f[e+(l*12|0)+4>>2]=f[m>>2];f[e+(l*12|0)+8>>2]=f[n>>2];if((k|0)>=((d-h|0)/12|0|0))break;else j=h}}else c=e;b=f[H>>2]|0;f[(f[c+4>>2]|0)+68>>2]=(f[A>>2]|0)-b>>2;d=f[G>>2]|0;if(d){c=G+4|0;b=f[c>>2]|0;if((b|0)!=(d|0))f[c>>2]=b+(~((b+-4-d|0)>>>2)<<2);ar(d);b=f[H>>2]|0}if(b|0){c=f[A>>2]|0;if((c|0)!=(b|0))f[A>>2]=c+(~((c+-4-b|0)>>>2)<<2);ar(b)}u=I;return 1}function xb(a,b){a=a|0;b=b|0;var c=0,d=0,e=0,g=0,h=0,i=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,v=0,w=0,x=0,y=0,z=0,A=0,B=0;B=u;u=u+32|0;A=B+16|0;z=B+4|0;x=B;f[a+36>>2]=b;y=a+24|0;w=a+28|0;d=f[w>>2]|0;c=f[y>>2]|0;g=d-c>>2;if(g>>>0>=b>>>0){if(g>>>0>b>>>0?(e=c+(b<<2)|0,(d|0)!=(e|0)):0)f[w>>2]=d+(~((d+-4-e|0)>>>2)<<2)}else ch(y,b-g|0,1408);f[A>>2]=0;v=A+4|0;f[v>>2]=0;t=A+8|0;f[t>>2]=0;if(b|0){if((b|0)<0)Lp(A);c=((b+-1|0)>>>5)+1|0;s=ln(c<<2)|0;f[A>>2]=s;f[t>>2]=c;f[v>>2]=b;c=b>>>5;ej(s|0,0,c<<2|0)|0;d=b-(c<<5)|0;c=s+(c<<2)|0;if(d|0)f[c>>2]=f[c>>2]&~(-1>>>(32-d|0))}s=a+4|0;c=(f[s>>2]|0)-(f[a>>2]|0)|0;g=c>>2;f[z>>2]=0;e=z+4|0;f[e>>2]=0;d=z+8|0;f[d>>2]=0;if(g){if((c|0)<0)Lp(z);c=((g+-1|0)>>>5)+1|0;h=ln(c<<2)|0;f[z>>2]=h;f[d>>2]=c;f[e>>2]=g;c=g>>>5;ej(h|0,0,c<<2|0)|0;d=g-(c<<5)|0;c=h+(c<<2)|0;if(d)f[c>>2]=f[c>>2]&~(-1>>>(32-d|0))}else h=0;c=f[a>>2]|0;a:do if((f[s>>2]|0)-c>>2>>>0>2){n=a+12|0;q=a+32|0;o=a+52|0;p=a+56|0;r=a+48|0;m=0;d=b;b:while(1){l=m*3|0;if((m|0)>=0){b=f[c+(l<<2)>>2]|0;e=l+1|0;e=((e|0)%3|0|0)==0?l+-2|0:e;if((e|0)<0)g=-1073741824;else g=f[c+(e<<2)>>2]|0;e=(((l>>>0)%3|0|0)==0?2:-1)+l|0;if((e|0)<0)c=-1073741824;else c=f[c+(e<<2)>>2]|0;if((b|0)!=(g|0)?!((b|0)==(c|0)|(g|0)==(c|0)):0){k=0;do{g=k+l|0;if(!(f[h+(g>>>5<<2)>>2]&1<<(g&31))){c=f[(f[a>>2]|0)+(g<<2)>>2]|0;f[x>>2]=c;e=f[A>>2]|0;if(!(f[e+(c>>>5<<2)>>2]&1<<(c&31)))b=0;else{c=f[w>>2]|0;if((c|0)==(f[q>>2]|0))Ii(y,1408);else{f[c>>2]=-1073741824;f[w>>2]=c+4}c=f[o>>2]|0;if((c|0)==(f[p>>2]|0))Ii(r,x);else{f[c>>2]=f[x>>2];f[o>>2]=c+4}c=f[v>>2]|0;e=f[t>>2]|0;if((c|0)==(e<<5|0)){if((c+1|0)<0){Lp(A);e=f[t>>2]|0}j=e<<6;c=c+32&-32;ri(A,e<<5>>>0<1073741823?(j>>>0>>0?c:j):2147483647);c=f[v>>2]|0}f[v>>2]=c+1;e=f[A>>2]|0;b=e+(c>>>5<<2)|0;f[b>>2]=f[b>>2]&~(1<<(c&31));f[x>>2]=d;c=d;b=1;d=d+1|0}j=e+(c>>>5<<2)|0;f[j>>2]=f[j>>2]|1<<(c&31);c:do if(b){c=g;while(1){if((c|0)==-1073741824){e=68;break c}h=f[z>>2]|0;e=h+(c>>>5<<2)|0;f[e>>2]=f[e>>2]|1<<(c&31);e=f[x>>2]|0;f[(f[y>>2]|0)+(e<<2)>>2]=c;f[(f[a>>2]|0)+(c<<2)>>2]=e;e=c+1|0;do if((c|0)>=0){c=((e|0)%3|0|0)==0?c+-2|0:e;if((c|0)<0)break;c=f[(f[n>>2]|0)+(c<<2)>>2]|0;e=c+1|0;if((c|0)<0)break;c=((e|0)%3|0|0)==0?c+-2|0:e}while(0);if((c|0)==(g|0)){e=67;break}}}else{c=g;while(1){if((c|0)==-1073741824){e=68;break c}h=f[z>>2]|0;e=h+(c>>>5<<2)|0;f[e>>2]=f[e>>2]|1<<(c&31);f[(f[y>>2]|0)+(f[x>>2]<<2)>>2]=c;e=c+1|0;do if((c|0)>=0){c=((e|0)%3|0|0)==0?c+-2|0:e;if((c|0)<0)break;c=f[(f[n>>2]|0)+(c<<2)>>2]|0;e=c+1|0;if((c|0)<0)break;c=((e|0)%3|0|0)==0?c+-2|0:e}while(0);if((c|0)==(g|0)){e=67;break}}}while(0);do if((e|0)==67){e=0;if((g|0)==-1073741824){c=-1073741824;e=74}}else if((e|0)==68)if((g|0)>=0){c=(((g>>>0)%3|0|0)==0?2:-1)+g|0;if((c|0)>=0){c=f[(f[n>>2]|0)+(c<<2)>>2]|0;if((c|0)<0){e=74;break}if(!((c>>>0)%3|0)){c=c+2|0;e=74;break}else{c=c+-1|0;e=74;break}}else e=74}else{c=g;e=74}while(0);d:do if((e|0)==74){h=f[z>>2]|0;g=h+(c>>>5<<2)|0;i=1<<(c&31);e=(c|0)<0;if((c|0)!=-1073741824){if(!b){b=c;c=i;while(1){if(e)break b;f[g>>2]=f[g>>2]|c;c=(((b>>>0)%3|0|0)==0?2:-1)+b|0;do if((c|0)>=0){c=f[(f[n>>2]|0)+(c<<2)>>2]|0;if((c|0)<0)break;if(!((c>>>0)%3|0)){c=c+2|0;break}else{c=c+-1|0;break}}while(0);h=f[z>>2]|0;if((c|0)==-1073741824)break d;else{b=c;g=h+(c>>>5<<2)|0;e=(c|0)<0;c=1<<(c&31)}}}j=f[a>>2]|0;b=g;h=e;e=i;while(1){g=j+(c<<2)|0;do{f[b>>2]=f[b>>2]|e;f[g>>2]=f[x>>2]}while(h);c=(((c>>>0)%3|0|0)==0?2:-1)+c|0;do if((c|0)>=0){c=f[(f[n>>2]|0)+(c<<2)>>2]|0;if((c|0)<0){e=c;break}if(!((c>>>0)%3|0)){e=c+2|0;break}else{e=c+-1|0;break}}else e=c;while(0);h=f[z>>2]|0;if((e|0)==-1073741824)break;else{c=e;b=h+(e>>>5<<2)|0;h=(e|0)<0;e=1<<(e&31)}}}}while(0)}k=k+1|0}while((k|0)<3)}}m=m+1|0;c=f[a>>2]|0;if((m|0)>=(((f[s>>2]|0)-c>>2>>>0)/3|0|0))break a}while(1){}}while(0);j=a+44|0;f[j>>2]=0;c=f[A>>2]|0;b=f[v>>2]|0;y=b>>>5;i=c+(y<<2)|0;b=b&31;e=(y|0)!=0;e:do if(y|b|0){if(!b){g=c;d=0;while(1){f:do if(e){e=0;while(1){if(!(f[g>>2]&1<>2]=d}if((e|0)==31)break;else e=e+1|0}}else{e=0;while(1){if(!(f[g>>2]&1<>2]=d}if((e|0)==31)break f;e=e+1|0;if(!e)break e}}while(0);g=g+4|0;if((g|0)==(i|0))break e;else e=1}}if(e){g=c;d=0;e=0;do{h=0;while(1){if(!(f[g>>2]&1<>2]=e;d=e}if((h|0)==31)break;else h=h+1|0}g=g+4|0}while((g|0)!=(i|0))}else{g=c;d=0}e=0;do{if(!(f[g>>2]&1<>2]=d}e=e+1|0}while((e|0)!=(b|0))}while(0);d=f[z>>2]|0;if(d){ar(d);c=f[A>>2]|0}if(!c){u=B;return 1}ar(c);u=B;return 1}function yb(a,c,d,e,g,i){a=a|0;c=+c;d=d|0;e=e|0;g=g|0;i=i|0;var j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0.0,r=0,s=0,t=0,v=0,w=0,x=0,y=0,z=0,A=0,B=0,C=0,D=0,E=0,F=0,G=0;G=u;u=u+560|0;l=G+8|0;t=G;F=G+524|0;E=F;m=G+512|0;f[t>>2]=0;D=m+12|0;Co(c)|0;if((I|0)<0){C=1;A=19801;c=-c}else{C=(g&2049|0)!=0&1;A=(g&2048|0)==0?((g&1|0)==0?19802:19807):19804}Co(c)|0;B=I&2146435072;do if(B>>>0<2146435072|(B|0)==2146435072&0<0){q=+Gq(c,t)*2.0;j=q!=0.0;if(j)f[t>>2]=(f[t>>2]|0)+-1;w=i|32;if((w|0)==97){r=i&32;p=(r|0)==0?A:A+9|0;o=C|2;j=12-e|0;do if(!(e>>>0>11|(j|0)==0)){c=8.0;do{j=j+-1|0;c=c*16.0}while((j|0)!=0);if((b[p>>0]|0)==45){c=-(c+(-q-c));break}else{c=q+c-c;break}}else c=q;while(0);k=f[t>>2]|0;j=(k|0)<0?0-k|0:k;j=tk(j,((j|0)<0)<<31>>31,D)|0;if((j|0)==(D|0)){j=m+11|0;b[j>>0]=48}b[j+-1>>0]=(k>>31&2)+43;n=j+-2|0;b[n>>0]=i+15;l=(e|0)<1;m=(g&8|0)==0;k=F;while(1){C=~~c;j=k+1|0;b[k>>0]=h[19836+C>>0]|r;c=(c-+(C|0))*16.0;if((j-E|0)==1?!(m&(l&c==0.0)):0){b[j>>0]=46;j=k+2|0}if(!(c!=0.0))break;else k=j}C=j-E|0;E=D-n|0;D=(e|0)!=0&(C+-2|0)<(e|0)?e+2|0:C;j=E+o+D|0;al(a,32,d,j,g);ip(a,p,o);al(a,48,d,j,g^65536);ip(a,F,C);al(a,48,D-C|0,0,0);ip(a,n,E);al(a,32,d,j,g^8192);break}k=(e|0)<0?6:e;if(j){j=(f[t>>2]|0)+-28|0;f[t>>2]=j;c=q*268435456.0}else{j=f[t>>2]|0;c=q}B=(j|0)<0?l:l+288|0;l=B;do{y=~~c>>>0;f[l>>2]=y;l=l+4|0;c=(c-+(y>>>0))*1.0e9}while(c!=0.0);if((j|0)>0){m=B;n=l;while(1){o=(j|0)<29?j:29;j=n+-4|0;if(j>>>0>=m>>>0){l=0;do{x=On(f[j>>2]|0,0,o|0)|0;x=Ho(x|0,I|0,l|0,0)|0;y=I;v=$m(x|0,y|0,1e9,0)|0;f[j>>2]=v;l=Dp(x|0,y|0,1e9,0)|0;j=j+-4|0}while(j>>>0>=m>>>0);if(l){m=m+-4|0;f[m>>2]=l}}l=n;while(1){if(l>>>0<=m>>>0)break;j=l+-4|0;if(!(f[j>>2]|0))l=j;else break}j=(f[t>>2]|0)-o|0;f[t>>2]=j;if((j|0)>0)n=l;else break}}else m=B;if((j|0)<0){e=((k+25|0)/9|0)+1|0;s=(w|0)==102;do{r=0-j|0;r=(r|0)<9?r:9;if(m>>>0>>0){o=(1<>>r;p=0;j=m;do{y=f[j>>2]|0;f[j>>2]=(y>>>r)+p;p=X(y&o,n)|0;j=j+4|0}while(j>>>0>>0);j=(f[m>>2]|0)==0?m+4|0:m;if(!p){m=j;j=l}else{f[l>>2]=p;m=j;j=l+4|0}}else{m=(f[m>>2]|0)==0?m+4|0:m;j=l}l=s?B:m;l=(j-l>>2|0)>(e|0)?l+(e<<2)|0:j;j=(f[t>>2]|0)+r|0;f[t>>2]=j}while((j|0)<0);j=m;e=l}else{j=m;e=l}y=B;if(j>>>0>>0){l=(y-j>>2)*9|0;n=f[j>>2]|0;if(n>>>0>=10){m=10;do{m=m*10|0;l=l+1|0}while(n>>>0>=m>>>0)}}else l=0;s=(w|0)==103;v=(k|0)!=0;m=k-((w|0)!=102?l:0)+((v&s)<<31>>31)|0;if((m|0)<(((e-y>>2)*9|0)+-9|0)){n=m+9216|0;m=B+4+(((n|0)/9|0)+-1024<<2)|0;n=((n|0)%9|0)+1|0;if((n|0)<9){o=10;do{o=o*10|0;n=n+1|0}while((n|0)!=9)}else o=10;p=f[m>>2]|0;r=(p>>>0)%(o>>>0)|0;n=(m+4|0)==(e|0);if(!(n&(r|0)==0)){q=(((p>>>0)/(o>>>0)|0)&1|0)==0?9007199254740992.0:9007199254740994.0;x=(o|0)/2|0;c=r>>>0>>0?.5:n&(r|0)==(x|0)?1.0:1.5;if(C){x=(b[A>>0]|0)==45;q=x?-q:q;c=x?-c:c}n=p-r|0;f[m>>2]=n;if(q+c!=q){x=n+o|0;f[m>>2]=x;if(x>>>0>999999999){l=m;while(1){m=l+-4|0;f[l>>2]=0;if(m>>>0>>0){j=j+-4|0;f[j>>2]=0}x=(f[m>>2]|0)+1|0;f[m>>2]=x;if(x>>>0>999999999)l=m;else break}}l=(y-j>>2)*9|0;o=f[j>>2]|0;if(o>>>0>=10){n=10;do{n=n*10|0;l=l+1|0}while(o>>>0>=n>>>0)}}}w=m+4|0;x=j;j=e>>>0>w>>>0?w:e}else{x=j;j=e}w=j;while(1){if(w>>>0<=x>>>0){t=0;break}j=w+-4|0;if(!(f[j>>2]|0))w=j;else{t=1;break}}e=0-l|0;do if(s){j=((v^1)&1)+k|0;if((j|0)>(l|0)&(l|0)>-5){k=j+-1-l|0;n=i+-1|0}else{k=j+-1|0;n=i+-2|0}j=g&8;if(!j){if(t?(z=f[w+-4>>2]|0,(z|0)!=0):0)if(!((z>>>0)%10|0)){j=10;m=0;do{j=j*10|0;m=m+1|0}while(!((z>>>0)%(j>>>0)|0|0))}else m=0;else m=9;j=((w-y>>2)*9|0)+-9|0;if((n|32|0)==102){i=j-m|0;i=(i|0)>0?i:0;r=0;k=(k|0)<(i|0)?k:i;break}else{i=j+l-m|0;i=(i|0)>0?i:0;r=0;k=(k|0)<(i|0)?k:i;break}}else r=j}else{r=g&8;n=i}while(0);s=k|r;o=(s|0)!=0&1;p=(n|32|0)==102;if(p){v=0;j=(l|0)>0?l:0}else{j=(l|0)<0?e:l;j=tk(j,((j|0)<0)<<31>>31,D)|0;m=D;if((m-j|0)<2)do{j=j+-1|0;b[j>>0]=48}while((m-j|0)<2);b[j+-1>>0]=(l>>31&2)+43;j=j+-2|0;b[j>>0]=n;v=j;j=m-j|0}j=C+1+k+o+j|0;al(a,32,d,j,g);ip(a,A,C);al(a,48,d,j,g^65536);if(p){o=x>>>0>B>>>0?B:x;r=F+9|0;p=r;n=F+8|0;m=o;do{l=tk(f[m>>2]|0,0,r)|0;if((m|0)==(o|0)){if((l|0)==(r|0)){b[n>>0]=48;l=n}}else if(l>>>0>F>>>0){ej(F|0,48,l-E|0)|0;do l=l+-1|0;while(l>>>0>F>>>0)}ip(a,l,p-l|0);m=m+4|0}while(m>>>0<=B>>>0);if(s|0)ip(a,19852,1);if(m>>>0>>0&(k|0)>0)while(1){l=tk(f[m>>2]|0,0,r)|0;if(l>>>0>F>>>0){ej(F|0,48,l-E|0)|0;do l=l+-1|0;while(l>>>0>F>>>0)}ip(a,l,(k|0)<9?k:9);m=m+4|0;l=k+-9|0;if(!(m>>>0>>0&(k|0)>9)){k=l;break}else k=l}al(a,48,k+9|0,9,0)}else{t=t?w:x+4|0;if((k|0)>-1){s=F+9|0;e=(r|0)==0;r=s;n=0-E|0;p=F+8|0;o=x;do{l=tk(f[o>>2]|0,0,s)|0;if((l|0)==(s|0)){b[p>>0]=48;l=p}do if((o|0)==(x|0)){m=l+1|0;ip(a,l,1);if(e&(k|0)<1){l=m;break}ip(a,19852,1);l=m}else{if(l>>>0<=F>>>0)break;ej(F|0,48,l+n|0)|0;do l=l+-1|0;while(l>>>0>F>>>0)}while(0);E=r-l|0;ip(a,l,(k|0)>(E|0)?E:k);k=k-E|0;o=o+4|0}while(o>>>0>>0&(k|0)>-1)}al(a,48,k+18|0,18,0);ip(a,v,D-v|0)}al(a,32,d,j,g^8192)}else{F=(i&32|0)!=0;j=C+3|0;al(a,32,d,j,g&-65537);ip(a,A,C);ip(a,c!=c|0.0!=0.0?(F?19828:19832):F?19820:19824,3);al(a,32,d,j,g^8192)}while(0);u=G;return ((j|0)<(d|0)?d:j)|0} +function Hf(a,b){a=a|0;b=b|0;var c=0,d=0,e=0,g=0,h=0,i=0,j=0,k=0,l=0,m=0,n=0,o=0;n=u;u=u+32|0;m=n+24|0;k=n+16|0;j=n+8|0;l=n;f[a>>2]=4660;f[a+4>>2]=f[b+4>>2];h=a+8|0;i=b+8|0;f[h>>2]=0;e=a+12|0;f[e>>2]=0;d=a+16|0;f[d>>2]=0;g=b+12|0;c=f[g>>2]|0;if(c|0){if((c|0)<0)Lp(h);c=((c+-1|0)>>>5)+1|0;o=ln(c<<2)|0;f[h>>2]=o;f[e>>2]=0;f[d>>2]=c;e=f[i>>2]|0;f[j>>2]=e;f[j+4>>2]=0;i=f[g>>2]|0;f[l>>2]=e+(i>>>5<<2);f[l+4>>2]=i&31;f[k>>2]=f[j>>2];f[k+4>>2]=f[j+4>>2];f[m>>2]=f[l>>2];f[m+4>>2]=f[l+4>>2];$f(h,k,m)}h=a+20|0;f[h>>2]=0;g=a+24|0;f[g>>2]=0;d=a+28|0;f[d>>2]=0;e=b+24|0;c=f[e>>2]|0;if(!c){u=n;return}if((c|0)<0)Lp(h);o=((c+-1|0)>>>5)+1|0;a=ln(o<<2)|0;f[h>>2]=a;f[g>>2]=0;f[d>>2]=o;b=f[b+20>>2]|0;f[j>>2]=b;f[j+4>>2]=0;o=f[e>>2]|0;f[l>>2]=b+(o>>>5<<2);f[l+4>>2]=o&31;f[k>>2]=f[j>>2];f[k+4>>2]=f[j+4>>2];f[m>>2]=f[l>>2];f[m+4>>2]=f[l+4>>2];$f(h,k,m);u=n;return}function If(a,b,c){a=a|0;b=b|0;c=c|0;var d=0,e=0,g=0,h=0,i=0,j=0;i=a+8|0;d=f[i>>2]|0;h=f[a>>2]|0;j=h;do if(d-h>>2>>>0>=b>>>0){a=a+4|0;i=f[a>>2]|0;h=i-h>>2;g=h>>>0>>0;d=g?h:b;if(d|0){e=j;while(1){f[e>>2]=f[c>>2];d=d+-1|0;if(!d)break;else e=e+4|0}}if(!g){d=j+(b<<2)|0;if((i|0)==(d|0))return;else{e=a;d=i+(~((i+-4-d|0)>>>2)<<2)|0;break}}else{g=b-h|0;d=i;e=g;while(1){f[d>>2]=f[c>>2];e=e+-1|0;if(!e)break;else d=d+4|0}e=a;d=i+(g<<2)|0;break}}else{g=h;if(h){e=a+4|0;d=f[e>>2]|0;if((d|0)!=(j|0))f[e>>2]=d+(~((d+-4-h|0)>>>2)<<2);ar(g);f[i>>2]=0;f[e>>2]=0;f[a>>2]=0;d=0}if(b>>>0>1073741823){Lp(a);e=f[a>>2]|0;d=f[i>>2]|0}else e=0;j=d-e|0;d=j>>1;d=j>>2>>>0<536870911?(d>>>0>>0?b:d):1073741823;if(d>>>0>1073741823){Lp(a);c=Ia(4)|0;Eq(c);sa(c|0,1344,125)}h=ln(d<<2)|0;g=a+4|0;f[g>>2]=h;f[a>>2]=h;f[i>>2]=h+(d<<2);d=h;e=b;while(1){f[d>>2]=f[c>>2];e=e+-1|0;if(!e)break;else d=d+4|0}e=g;d=h+(b<<2)|0}while(0);f[e>>2]=d;return}function Jf(a){a=a|0;var b=0,c=0,d=0,e=0,g=0,h=0;g=a+636|0;b=f[g>>2]|0;if(b|0){h=a+640|0;c=f[h>>2]|0;if((c|0)!=(b|0)){do{d=c+-12|0;f[h>>2]=d;e=f[d>>2]|0;if(!e)c=d;else{d=c+-8|0;c=f[d>>2]|0;if((c|0)!=(e|0))f[d>>2]=c+(~((c+-4-e|0)>>>2)<<2);ar(e);c=f[h>>2]|0}}while((c|0)!=(b|0));b=f[g>>2]|0}ar(b)}g=a+624|0;b=f[g>>2]|0;if(b|0){h=a+628|0;c=f[h>>2]|0;if((c|0)!=(b|0)){do{d=c+-12|0;f[h>>2]=d;e=f[d>>2]|0;if(!e)c=d;else{d=c+-8|0;c=f[d>>2]|0;if((c|0)!=(e|0))f[d>>2]=c+(~((c+-4-e|0)>>>2)<<2);ar(e);c=f[h>>2]|0}}while((c|0)!=(b|0));b=f[g>>2]|0}ar(b)}b=f[a+612>>2]|0;if(b|0){d=a+616|0;c=f[d>>2]|0;if((c|0)!=(b|0))f[d>>2]=c+(~((c+-4-b|0)>>>2)<<2);ar(b)}b=f[a+600>>2]|0;if(!b){h=a+580|0;jl(h);h=a+560|0;jl(h);h=a+540|0;jl(h);h=a+524|0;fr(h);a=a+12|0;dj(a);return}d=a+604|0;c=f[d>>2]|0;if((c|0)!=(b|0))f[d>>2]=c+(~((c+-4-b|0)>>>2)<<2);ar(b);h=a+580|0;jl(h);h=a+560|0;jl(h);h=a+540|0;jl(h);h=a+524|0;fr(h);a=a+12|0;dj(a);return}function Kf(a,c,d){a=a|0;c=c|0;d=d|0;var e=0,g=0,i=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0;p=u;u=u+16|0;n=p;o=(f[c+4>>2]|0)-(f[c>>2]|0)>>2;k=d+8|0;j=f[k>>2]|0;k=f[k+4>>2]|0;l=d+16|0;e=l;g=f[e>>2]|0;e=f[e+4>>2]|0;if((k|0)>(e|0)|(k|0)==(e|0)&j>>>0>g>>>0){i=b[(f[d>>2]|0)+g>>0]|0;g=Ho(g|0,e|0,1,0)|0;e=I;q=l;f[q>>2]=g;f[q+4>>2]=e;if(i<<24>>24!=-2)m=3}else{i=0;m=3}if((m|0)==3){if((k|0)>(e|0)|(k|0)==(e|0)&j>>>0>g>>>0){q=b[(f[d>>2]|0)+g>>0]|0;m=Ho(g|0,e|0,1,0)|0;e=l;f[e>>2]=m;f[e+4>>2]=I;e=q}else e=0;Xa[f[(f[a>>2]|0)+40>>2]&7](n,a,i<<24>>24,e<<24>>24);q=a+20|0;m=f[n>>2]|0;f[n>>2]=0;e=f[q>>2]|0;f[q>>2]=m;if(e){Pa[f[(f[e>>2]|0)+4>>2]&127](e);e=f[n>>2]|0;f[n>>2]=0;if(e|0)Pa[f[(f[e>>2]|0)+4>>2]&127](e)}else f[n>>2]=0}e=f[a+20>>2]|0;if(e|0?!(Wa[f[(f[a>>2]|0)+28>>2]&127](a,e)|0):0){q=0;u=p;return q|0}if(!(Na[f[(f[a>>2]|0)+36>>2]&31](a,c,d)|0)){q=0;u=p;return q|0}q=f[a+4>>2]|0;if((q|0?((h[q+36>>0]|0)<<8&65535)<512:0)?!(Wa[f[(f[a>>2]|0)+48>>2]&127](a,o)|0):0){q=0;u=p;return q|0}q=1;u=p;return q|0}function Lf(a,b){a=a|0;b=b|0;var c=0,d=0,e=0,g=0,h=0,i=0,j=0,k=0,l=0,m=0,n=0,o=0;n=u;u=u+32|0;m=n+24|0;k=n+16|0;j=n+8|0;l=n;f[a>>2]=4708;f[a+4>>2]=f[b+4>>2];h=a+8|0;i=b+8|0;f[h>>2]=0;e=a+12|0;f[e>>2]=0;d=a+16|0;f[d>>2]=0;g=b+12|0;c=f[g>>2]|0;if(c|0){if((c|0)<0)Lp(h);c=((c+-1|0)>>>5)+1|0;o=ln(c<<2)|0;f[h>>2]=o;f[e>>2]=0;f[d>>2]=c;e=f[i>>2]|0;f[j>>2]=e;f[j+4>>2]=0;i=f[g>>2]|0;f[l>>2]=e+(i>>>5<<2);f[l+4>>2]=i&31;f[k>>2]=f[j>>2];f[k+4>>2]=f[j+4>>2];f[m>>2]=f[l>>2];f[m+4>>2]=f[l+4>>2];$f(h,k,m)}h=a+20|0;f[h>>2]=0;g=a+24|0;f[g>>2]=0;d=a+28|0;f[d>>2]=0;e=b+24|0;c=f[e>>2]|0;if(!c){u=n;return}if((c|0)<0)Lp(h);o=((c+-1|0)>>>5)+1|0;a=ln(o<<2)|0;f[h>>2]=a;f[g>>2]=0;f[d>>2]=o;b=f[b+20>>2]|0;f[j>>2]=b;f[j+4>>2]=0;o=f[e>>2]|0;f[l>>2]=b+(o>>>5<<2);f[l+4>>2]=o&31;f[k>>2]=f[j>>2];f[k+4>>2]=f[j+4>>2];f[m>>2]=f[l>>2];f[m+4>>2]=f[l+4>>2];$f(h,k,m);u=n;return}function Mf(a,b,c){a=a|0;b=b|0;c=c|0;var d=0,e=0,g=0,h=0,i=0,j=0,k=0,l=0;k=c;e=b;j=k-e|0;h=j>>2;i=a+8|0;d=f[i>>2]|0;g=f[a>>2]|0;l=g;if(h>>>0>d-g>>2>>>0){e=g;if(g){c=a+4|0;d=f[c>>2]|0;if((d|0)!=(l|0))f[c>>2]=d+(~((d+-4-g|0)>>>2)<<2);ar(e);f[i>>2]=0;f[c>>2]=0;f[a>>2]=0;d=0}if(h>>>0>1073741823){Lp(a);c=f[a>>2]|0;d=f[i>>2]|0}else c=0;l=d-c|0;d=l>>1;d=l>>2>>>0<536870911?(d>>>0>>0?h:d):1073741823;if(d>>>0>1073741823){Lp(a);b=Ia(4)|0;Eq(b);sa(b|0,1344,125)}e=ln(d<<2)|0;c=a+4|0;f[c>>2]=e;f[a>>2]=e;f[i>>2]=e+(d<<2);if((j|0)<=0)return;Mg(e|0,b|0,j|0)|0;f[c>>2]=e+(j>>>2<<2);return}a=a+4|0;d=f[a>>2]|0;i=d-g>>2;j=h>>>0>i>>>0;i=j?b+(i<<2)|0:c;g=d;h=d;if((i|0)==(b|0))d=l;else{e=i+-4-e|0;d=b;c=l;while(1){f[c>>2]=f[d>>2];d=d+4|0;if((d|0)==(i|0))break;else c=c+4|0}d=l+((e>>>2)+1<<2)|0}if(j){d=k-i|0;if((d|0)<=0)return;Mg(h|0,i|0,d|0)|0;f[a>>2]=(f[a>>2]|0)+(d>>>2<<2);return}else{if((g|0)==(d|0))return;f[a>>2]=g+(~((g+-4-d|0)>>>2)<<2);return}}function Nf(a,b){a=a|0;b=b|0;var c=0,d=0,e=0,g=0,h=0,i=0,j=0,k=0,l=0,m=0,n=0;n=u;u=u+32|0;m=n;l=a+8|0;d=f[l>>2]|0;k=a+4|0;e=f[k>>2]|0;if(d-e>>2>>>0>=b>>>0){ej(e|0,0,b<<2|0)|0;f[k>>2]=e+(b<<2);u=n;return}c=f[a>>2]|0;g=(e-c>>2)+b|0;if(g>>>0>1073741823){Lp(a);c=f[a>>2]|0;d=f[l>>2]|0;e=f[k>>2]|0}i=d-c|0;j=i>>1;g=i>>2>>>0<536870911?(j>>>0>>0?g:j):1073741823;c=e-c>>2;f[m+12>>2]=0;f[m+16>>2]=a+8;do if(g)if(g>>>0>1073741823){n=Ia(4)|0;Eq(n);sa(n|0,1344,125)}else{d=ln(g<<2)|0;break}else d=0;while(0);f[m>>2]=d;c=d+(c<<2)|0;i=m+8|0;h=m+4|0;f[h>>2]=c;j=m+12|0;f[j>>2]=d+(g<<2);ej(c|0,0,b<<2|0)|0;f[i>>2]=c+(b<<2);d=f[a>>2]|0;c=f[k>>2]|0;if((c|0)==(d|0)){g=h;e=f[h>>2]|0}else{e=f[h>>2]|0;do{c=c+-4|0;b=f[c>>2]|0;f[c>>2]=0;f[e+-4>>2]=b;e=(f[h>>2]|0)+-4|0;f[h>>2]=e}while((c|0)!=(d|0));g=h;d=f[a>>2]|0;c=f[k>>2]|0}f[a>>2]=e;f[g>>2]=d;f[k>>2]=f[i>>2];f[i>>2]=c;a=f[l>>2]|0;f[l>>2]=f[j>>2];f[j>>2]=a;f[m>>2]=f[g>>2];ci(m);u=n;return}function Of(a,c){a=a|0;c=c|0;var d=0,e=0,g=0,i=0,j=0,k=0,l=0,m=0,n=0;g=c+8|0;e=f[g>>2]|0;g=f[g+4>>2]|0;l=c+16|0;i=l;d=f[i>>2]|0;i=Ho(d|0,f[i+4>>2]|0,8,0)|0;j=I;if((g|0)<(j|0)|(g|0)==(j|0)&e>>>0>>0){a=0;return a|0}c=f[c>>2]|0;d=c+d|0;k=d;k=h[k>>0]|h[k+1>>0]<<8|h[k+2>>0]<<16|h[k+3>>0]<<24;d=d+4|0;d=h[d>>0]|h[d+1>>0]<<8|h[d+2>>0]<<16|h[d+3>>0]<<24;n=l;f[n>>2]=i;f[n+4>>2]=j;g=Xn(e|0,g|0,i|0,j|0)|0;e=I;if(d>>>0>e>>>0|(d|0)==(e|0)&k>>>0>g>>>0){n=0;return n|0}e=c+i|0;j=Ho(k|0,d|0,i|0,j|0)|0;n=l;f[n>>2]=j;f[n+4>>2]=I;if((k|0)<1){n=0;return n|0}f[a+40>>2]=e;d=k+-1|0;c=e+d|0;a:do switch((h[c>>0]|0)>>>6&3){case 0:{f[a+44>>2]=d;m=b[c>>0]&63;break}case 1:if((k|0)<2){n=0;return n|0}else{f[a+44>>2]=k+-2;m=e+k+-2|0;m=(h[m+1>>0]|0)<<8&16128|(h[m>>0]|0);break a}case 2:if((k|0)<3){n=0;return n|0}else{f[a+44>>2]=k+-3;m=e+k+-3|0;m=(h[m+1>>0]|0)<<8|(h[m>>0]|0)|(h[m+2>>0]|0)<<16&4128768;break a}case 3:{f[a+44>>2]=k+-4;m=e+k+-4|0;m=(h[m+2>>0]|0)<<16|(h[m+3>>0]|0)<<24&1056964608|(h[m+1>>0]|0)<<8|(h[m>>0]|0);break}default:{}}while(0);n=m+16384|0;f[a+48>>2]=n;n=n>>>0<4194304;return n|0}function Pf(a){a=a|0;var c=0,d=0,e=0,g=0,h=0,i=0,j=0;i=a+12|0;h=f[a>>2]|0;j=a+8|0;c=f[j>>2]|0;d=(c|0)<0;if(!(b[i>>0]|0)){do if(!d)if(!((c>>>0)%3|0)){c=c+2|0;break}else{c=c+-1|0;break}while(0);do if(!(1<<(c&31)&f[(f[h>>2]|0)+(c>>>5<<2)>>2])){if((c|0)>=0){c=f[(f[(f[h+64>>2]|0)+12>>2]|0)+(c<<2)>>2]|0;if((c|0)>=0)if(!((c>>>0)%3|0)){c=c+2|0;break}else{c=c+-1|0;break}}}else c=-1073741824;while(0);f[j>>2]=c;return}e=c+1|0;if(!d)c=((e|0)%3|0|0)==0?c+-2|0:e;e=f[h>>2]|0;if(!(1<<(c&31)&f[e+(c>>>5<<2)>>2]))if((c|0)>=0){c=f[(f[(f[h+64>>2]|0)+12>>2]|0)+(c<<2)>>2]|0;d=c+1|0;if((c|0)>=0){c=((d|0)%3|0|0)==0?c+-2|0:d;f[j>>2]=c;if((c|0)>=0){if((c|0)!=(f[a+4>>2]|0))return;f[j>>2]=-1073741824;return}}else g=7}else g=7;else{c=-1073741824;g=7}if((g|0)==7)f[j>>2]=c;c=f[a+4>>2]|0;do if((c|0)>=0)if(!((c>>>0)%3|0)){c=c+2|0;break}else{c=c+-1|0;break}while(0);do if(!(1<<(c&31)&f[e+(c>>>5<<2)>>2])){if((c|0)>=0){c=f[(f[(f[h+64>>2]|0)+12>>2]|0)+(c<<2)>>2]|0;if((c|0)>=0)if(!((c>>>0)%3|0)){c=c+2|0;break}else{c=c+-1|0;break}}}else c=-1073741824;while(0);f[j>>2]=c;b[i>>0]=0;return}function Qf(a,b){a=a|0;b=b|0;var c=0,d=0,e=0,g=0,i=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0;m=f[a>>2]|0;p=a+4|0;c=f[p>>2]|0;l=m;d=c+(~((c+-4-l|0)>>>2)<<2)|0;if((c|0)==(m|0))d=m;else{f[p>>2]=d;c=d}s=a+16|0;f[s>>2]=0;t=a+12|0;f[t>>2]=d;k=b+8|0;d=k;n=f[d>>2]|0;d=f[d+4>>2]|0;r=b+16|0;g=r;i=f[g>>2]|0;g=Ho(i|0,f[g+4>>2]|0,4,0)|0;e=I;if((d|0)<(e|0)|(d|0)==(e|0)&n>>>0>>0){a=0;return a|0}o=(f[b>>2]|0)+i|0;o=h[o>>0]|h[o+1>>0]<<8|h[o+2>>0]<<16|h[o+3>>0]<<24;j=r;f[j>>2]=g;f[j+4>>2]=e;if(!((o|0)!=0&(o&3|0)==0)){a=0;return a|0}j=Xn(n|0,d|0,g|0,e|0)|0;i=I;if(0>(i|0)|0==(i|0)&o>>>0>j>>>0){a=0;return a|0}j=o>>>2;i=c-l>>2;if(j>>>0<=i>>>0)if(j>>>0>>0?(q=m+(j<<2)|0,(c|0)!=(q|0)):0){f[p>>2]=c+(~((c+-4-q|0)>>>2)<<2);c=n}else c=n;else{ui(a,j-i|0);c=k;e=r;g=f[e>>2]|0;e=f[e+4>>2]|0;d=f[c+4>>2]|0;c=f[c>>2]|0}q=Ho(g|0,e|0,o|0,0)|0;p=I;if((d|0)<(p|0)|(d|0)==(p|0)&c>>>0>>0){a=0;return a|0}Mg(f[a>>2]|0,(f[b>>2]|0)+g|0,o|0)|0;q=r;q=Ho(f[q>>2]|0,f[q+4>>2]|0,o|0,0)|0;b=r;f[b>>2]=q;f[b+4>>2]=I;f[t>>2]=f[a>>2];f[s>>2]=0;a=1;return a|0}function Rf(a,b,c,d){a=a|0;b=$(b);c=$(c);d=d|0;var e=La,f=La,g=0.0,h=La,i=La,j=0.0,k=0.0,l=0.0,m=0.0;if(!(b>=$(0.0)))Ga(9571,9477,191,9585);if(!(c>=$(0.0)))Ga(9614,9477,192,9585);if(!(b<=$(1.0)))Ga(9628,9477,193,9585);if(!(c<=$(1.0)))Ga(9642,9477,194,9585);f=$(b+c);e=$(b-c);if(!(e<=$(.5))|(!(e>=$(-.5))|(!(f>=$(.5))|!(f<=$(1.5))))){do if(!(f<=$(.5))){if(f>=$(1.5)){e=$($(1.5)-c);c=$($(1.5)-b);break}if(!(e<=$(-.5))){e=$(c+$(.5));c=$(b+$(-.5));break}else{e=$(c+$(-.5));c=$(b+$(.5));break}}else{e=$($(.5)-c);c=$($(.5)-b)}while(0);b=e;i=$(e-c);f=$(c+e);g=-1.0}else{i=e;g=1.0}h=$(+b*2.0+-1.0);b=$(+c*2.0+-1.0);l=+f*2.0;j=l+-1.0;l=3.0-l;m=+i*2.0;k=m+1.0;m=1.0-m;k=m>2]=$(0.0);h=$(0.0);i=$(0.0);a=d+4|0;n[a>>2]=h;d=d+8|0;n[d>>2]=i;return}else{i=$($(1.0)/$(L($(e))));f=$(c*i);n[d>>2]=f;h=$(h*i);i=$(b*i);a=d+4|0;n[a>>2]=h;d=d+8|0;n[d>>2]=i;return}}function Sf(a,c,d,e){a=a|0;c=c|0;d=d|0;e=e|0;var g=0,h=0,i=0,j=0,k=0,l=0,m=0;m=u;u=u+80|0;l=m;j=m+60|0;k=m+40|0;g=l;h=d;i=g+40|0;do{f[g>>2]=f[h>>2];g=g+4|0;h=h+4|0}while((g|0)<(i|0));pc(a,l,j);if(f[a>>2]|0){l=l+24|0;fr(l);u=m;return}h=a+4|0;Lo(h);if(b[j+7>>0]|0){f[k>>2]=0;f[k+4>>2]=0;f[k+8>>2]=0;Pj(k,19267,27);f[a>>2]=-1;ml(h,k);Lo(k);l=l+24|0;fr(l);u=m;return}gh(k,b[j+8>>0]|0);g=f[k>>2]|0;if(!g){j=k+16|0;g=f[j>>2]|0;f[j>>2]=0;Ad(a,g,c,d,e);if(!(f[a>>2]|0)){Lo(h);f[a>>2]=0;f[a+4>>2]=0;f[a+8>>2]=0;f[a+12>>2]=0}if(g|0)Pa[f[(f[g>>2]|0)+4>>2]&127](g)}else{f[a>>2]=g;ml(h,k+4|0)}c=k+16|0;g=f[c>>2]|0;f[c>>2]=0;if(g|0)Pa[f[(f[g>>2]|0)+4>>2]&127](g);Lo(k+4|0);l=l+24|0;fr(l);u=m;return}function Tf(a,c,d,e){a=a|0;c=c|0;d=d|0;e=e|0;var g=0,h=0,i=0,j=0,k=0,l=0,m=0;m=u;u=u+80|0;l=m;j=m+60|0;k=m+40|0;g=l;h=d;i=g+40|0;do{f[g>>2]=f[h>>2];g=g+4|0;h=h+4|0}while((g|0)<(i|0));pc(a,l,j);if(f[a>>2]|0){l=l+24|0;fr(l);u=m;return}h=a+4|0;Lo(h);if((b[j+7>>0]|0)!=1){f[k>>2]=0;f[k+4>>2]=0;f[k+8>>2]=0;Pj(k,19246,20);f[a>>2]=-1;ml(h,k);Lo(k);l=l+24|0;fr(l);u=m;return}qi(k,b[j+8>>0]|0);g=f[k>>2]|0;if(!g){j=k+16|0;g=f[j>>2]|0;f[j>>2]=0;lm(a,g,c,d,e);if(!(f[a>>2]|0)){Lo(h);f[a>>2]=0;f[a+4>>2]=0;f[a+8>>2]=0;f[a+12>>2]=0}if(g|0)Pa[f[(f[g>>2]|0)+4>>2]&127](g)}else{f[a>>2]=g;ml(h,k+4|0)}c=k+16|0;g=f[c>>2]|0;f[c>>2]=0;if(g|0)Pa[f[(f[g>>2]|0)+4>>2]&127](g);Lo(k+4|0);l=l+24|0;fr(l);u=m;return}function Uf(a){a=a|0;var b=0,c=0,d=0,e=0,g=0,h=0;g=a+128|0;b=f[g>>2]|0;if(b|0){h=a+132|0;c=f[h>>2]|0;if((c|0)!=(b|0)){do{d=c+-12|0;f[h>>2]=d;e=f[d>>2]|0;if(!e)c=d;else{d=c+-8|0;c=f[d>>2]|0;if((c|0)!=(e|0))f[d>>2]=c+(~((c+-4-e|0)>>>2)<<2);ar(e);c=f[h>>2]|0}}while((c|0)!=(b|0));b=f[g>>2]|0}ar(b)}g=a+116|0;b=f[g>>2]|0;if(b|0){h=a+120|0;c=f[h>>2]|0;if((c|0)!=(b|0)){do{d=c+-12|0;f[h>>2]=d;e=f[d>>2]|0;if(!e)c=d;else{d=c+-8|0;c=f[d>>2]|0;if((c|0)!=(e|0))f[d>>2]=c+(~((c+-4-e|0)>>>2)<<2);ar(e);c=f[h>>2]|0}}while((c|0)!=(b|0));b=f[g>>2]|0}ar(b)}b=f[a+104>>2]|0;if(b|0){d=a+108|0;c=f[d>>2]|0;if((c|0)!=(b|0))f[d>>2]=c+(~((c+-4-b|0)>>>2)<<2);ar(b)}b=f[a+92>>2]|0;if(!b){h=a+72|0;jl(h);h=a+52|0;jl(h);h=a+32|0;jl(h);a=a+12|0;jl(a);return}d=a+96|0;c=f[d>>2]|0;if((c|0)!=(b|0))f[d>>2]=c+(~((c+-4-b|0)>>>2)<<2);ar(b);h=a+72|0;jl(h);h=a+52|0;jl(h);h=a+32|0;jl(h);a=a+12|0;jl(a);return}function Vf(a,b){a=a|0;b=b|0;var c=0,d=0,e=0,g=0,h=0,i=0,j=0,k=0,l=0;k=f[b>>2]|0;l=f[k>>2]|0;e=f[a+4>>2]|0;b=f[k+4>>2]|0;h=e+-1|0;i=(h&e|0)==0;if(i)g=h&b;else g=(b>>>0)%(e>>>0)|0;c=(f[a>>2]|0)+(g<<2)|0;j=f[c>>2]|0;while(1){b=f[j>>2]|0;if((b|0)==(k|0))break;else j=b}if((j|0)!=(a+8|0)){b=f[j+4>>2]|0;if(i)b=b&h;else b=(b>>>0)%(e>>>0)|0;if((b|0)==(g|0)){c=l;d=18}else d=11}else d=11;do if((d|0)==11){if(l|0){b=f[l+4>>2]|0;if(i)b=b&h;else b=(b>>>0)%(e>>>0)|0;if((b|0)==(g|0)){c=l;b=l;d=19;break}}f[c>>2]=0;c=f[k>>2]|0;d=18}while(0);if((d|0)==18){b=c;if(c)d=19}if((d|0)==19){c=f[c+4>>2]|0;if(i)c=c&h;else c=(c>>>0)%(e>>>0)|0;if((c|0)!=(g|0)){f[(f[a>>2]|0)+(c<<2)>>2]=j;b=f[k>>2]|0}}f[j>>2]=b;f[k>>2]=0;a=a+12|0;f[a>>2]=(f[a>>2]|0)+-1;if(!k)return l|0;b=f[k+20>>2]|0;if(b|0){c=k+24|0;if((f[c>>2]|0)!=(b|0))f[c>>2]=b;ar(b)}Lo(k+8|0);ar(k);return l|0}function Wf(a){a=a|0;var b=0,c=0,d=0,e=0,g=0,h=0,i=0,j=0,k=0,l=0,m=0;m=u;u=u+16|0;j=m+4|0;k=m;l=a+8|0;g=a+100|0;h=f[l>>2]|0;h=(f[h+28>>2]|0)-(f[h+24>>2]|0)>>2;f[j>>2]=0;d=a+104|0;c=f[d>>2]|0;b=f[g>>2]|0;i=c-b>>2;if(h>>>0<=i>>>0){if(h>>>0>>0?(e=b+(h<<2)|0,(c|0)!=(e|0)):0)f[d>>2]=c+(~((c+-4-e|0)>>>2)<<2)}else ch(g,h-i|0,j);d=a+120|0;b=f[d>>2]|0;if(!b){a=f[l>>2]|0;a=(f[a+4>>2]|0)-(f[a>>2]|0)>>2;b=(a>>>0)/3|0;if(a>>>0<=2){u=m;return 1}c=0;do{f[k>>2]=c*3;f[j>>2]=f[k>>2];Ob(l,j);c=c+1|0}while((c|0)<(b|0));u=m;return 1}else{c=f[b>>2]|0;if((f[b+4>>2]|0)==(c|0)){u=m;return 1}b=0;do{f[k>>2]=f[c+(b<<2)>>2];f[j>>2]=f[k>>2];Ob(l,j);b=b+1|0;a=f[d>>2]|0;c=f[a>>2]|0}while(b>>>0<(f[a+4>>2]|0)-c>>2>>>0);u=m;return 1}return 0}function Xf(a){a=a|0;var b=0,c=0,d=0,e=0,g=0,h=0;g=a+124|0;b=f[g>>2]|0;if(b|0){h=a+128|0;c=f[h>>2]|0;if((c|0)!=(b|0)){do{d=c+-12|0;f[h>>2]=d;e=f[d>>2]|0;if(!e)c=d;else{d=c+-8|0;c=f[d>>2]|0;if((c|0)!=(e|0))f[d>>2]=c+(~((c+-4-e|0)>>>2)<<2);ar(e);c=f[h>>2]|0}}while((c|0)!=(b|0));b=f[g>>2]|0}ar(b)}g=a+112|0;b=f[g>>2]|0;if(b|0){h=a+116|0;c=f[h>>2]|0;if((c|0)!=(b|0)){do{d=c+-12|0;f[h>>2]=d;e=f[d>>2]|0;if(!e)c=d;else{d=c+-8|0;c=f[d>>2]|0;if((c|0)!=(e|0))f[d>>2]=c+(~((c+-4-e|0)>>>2)<<2);ar(e);c=f[h>>2]|0}}while((c|0)!=(b|0));b=f[g>>2]|0}ar(b)}b=f[a+100>>2]|0;if(b|0){d=a+104|0;c=f[d>>2]|0;if((c|0)!=(b|0))f[d>>2]=c+(~((c+-4-b|0)>>>2)<<2);ar(b)}b=f[a+88>>2]|0;if(!b){h=a+68|0;jl(h);h=a+48|0;jl(h);h=a+28|0;jl(h);a=a+12|0;fr(a);return}d=a+92|0;c=f[d>>2]|0;if((c|0)!=(b|0))f[d>>2]=c+(~((c+-4-b|0)>>>2)<<2);ar(b);h=a+68|0;jl(h);h=a+48|0;jl(h);h=a+28|0;jl(h);a=a+12|0;fr(a);return}function Yf(a,b){a=a|0;b=b|0;var c=0,d=0,e=0,g=0,h=0,i=0,j=0,k=0;k=u;u=u+112|0;h=k+96|0;j=k+16|0;i=k+4|0;g=k;c=j+76|0;d=j;e=d+76|0;do{f[d>>2]=0;d=d+4|0}while((d|0)<(e|0));f[c>>2]=-1073741824;f[i>>2]=0;e=i+4|0;f[e>>2]=0;f[i+8>>2]=0;f[g>>2]=i;f[h>>2]=f[g>>2];if(Jd(j,a,h)|0){g=f[i>>2]|0;Bf(b,g,g+((f[e>>2]|0)-g>>2<<2)|0);g=f[j+68>>2]|0}else g=0;c=f[i>>2]|0;if(c|0){d=f[e>>2]|0;if((d|0)!=(c|0))f[e>>2]=d+(~((d+-4-c|0)>>>2)<<2);ar(c)}c=f[j+56>>2]|0;if(c|0)ar(c);c=f[j+32>>2]|0;if(c|0){e=j+36|0;d=f[e>>2]|0;if((d|0)!=(c|0))f[e>>2]=d+(~((d+-4-c|0)>>>2)<<2);ar(c)}c=f[j+20>>2]|0;if(c|0){e=j+24|0;d=f[e>>2]|0;if((d|0)!=(c|0))f[e>>2]=d+(~((d+-4-c|0)>>>2)<<2);ar(c)}c=f[j+8>>2]|0;if(c|0){e=j+12|0;d=f[e>>2]|0;if((d|0)!=(c|0))f[e>>2]=d+(~((d+-4-c|0)>>>2)<<2);ar(c)}j=j+4|0;c=f[j>>2]|0;f[j>>2]=0;if(!c){u=k;return g|0}sj(c);ar(c);u=k;return g|0}function Zf(a,c){a=a|0;c=c|0;var d=0,e=0,g=0,i=0,j=0,k=0,l=0;f[c>>2]=1;e=a+4|0;l=c+8|0;k=c+12|0;c=f[l>>2]|0;d=(f[k>>2]|0)-c|0;if(d>>>0<4294967292){Gk(l,d+4|0,0);c=f[l>>2]|0}j=c+d|0;i=h[e>>0]|h[e+1>>0]<<8|h[e+2>>0]<<16|h[e+3>>0]<<24;b[j>>0]=i;b[j+1>>0]=i>>8;b[j+2>>0]=i>>16;b[j+3>>0]=i>>24;j=a+8|0;i=a+12|0;c=f[j>>2]|0;if((f[i>>2]|0)!=(c|0)){g=0;do{d=c+(g<<2)|0;c=f[l>>2]|0;e=(f[k>>2]|0)-c|0;if(e>>>0<4294967292){Gk(l,e+4|0,0);c=f[l>>2]|0}c=c+e|0;e=h[d>>0]|h[d+1>>0]<<8|h[d+2>>0]<<16|h[d+3>>0]<<24;b[c>>0]=e;b[c+1>>0]=e>>8;b[c+2>>0]=e>>16;b[c+3>>0]=e>>24;g=g+1|0;c=f[j>>2]|0}while(g>>>0<(f[i>>2]|0)-c>>2>>>0)}e=a+20|0;d=f[l>>2]|0;c=(f[k>>2]|0)-d|0;if(c>>>0<4294967292){Gk(l,c+4|0,0);l=f[l>>2]|0;l=l+c|0;k=h[e>>0]|h[e+1>>0]<<8|h[e+2>>0]<<16|h[e+3>>0]<<24;b[l>>0]=k;b[l+1>>0]=k>>8;b[l+2>>0]=k>>16;b[l+3>>0]=k>>24;return}else{l=d;l=l+c|0;k=h[e>>0]|h[e+1>>0]<<8|h[e+2>>0]<<16|h[e+3>>0]<<24;b[l>>0]=k;b[l+1>>0]=k>>8;b[l+2>>0]=k>>16;b[l+3>>0]=k>>24;return}}function _f(a,b,c){a=a|0;b=b|0;c=c|0;var d=0,e=0,g=0,h=0,i=0,j=0,k=0,l=0,m=0;k=c;i=b;j=k-i|0;g=j>>2;h=a+8|0;d=f[h>>2]|0;l=f[a>>2]|0;m=l;if(g>>>0<=d-l>>2>>>0){j=a+4|0;e=(f[j>>2]|0)-l>>2;h=g>>>0>e>>>0;g=h?b+(e<<2)|0:c;e=g;c=e-i|0;d=c>>2;if(d|0)rm(l|0,b|0,c|0)|0;c=m+(d<<2)|0;if(h){d=k-e|0;if((d|0)<=0)return;Mg(f[j>>2]|0,g|0,d|0)|0;f[j>>2]=(f[j>>2]|0)+(d>>>2<<2);return}else{d=f[j>>2]|0;if((d|0)==(c|0))return;f[j>>2]=d+(~((d+-4-c|0)>>>2)<<2);return}}e=l;if(l){c=a+4|0;d=f[c>>2]|0;if((d|0)!=(m|0))f[c>>2]=d+(~((d+-4-l|0)>>>2)<<2);ar(e);f[h>>2]=0;f[c>>2]=0;f[a>>2]=0;d=0}if(g>>>0>1073741823){Lp(a);c=f[a>>2]|0;d=f[h>>2]|0}else c=0;m=d-c|0;d=m>>1;d=m>>2>>>0<536870911?(d>>>0>>0?g:d):1073741823;if(d>>>0>1073741823){Lp(a);b=Ia(4)|0;Eq(b);sa(b|0,1344,125)}e=ln(d<<2)|0;c=a+4|0;f[c>>2]=e;f[a>>2]=e;f[h>>2]=e+(d<<2);if((j|0)<=0)return;Mg(e|0,b|0,j|0)|0;f[c>>2]=e+(j>>>2<<2);return}function $f(a,b,c){a=a|0;b=b|0;c=c|0;var d=0,e=0,g=0,h=0,i=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0;p=u;u=u+48|0;n=p+40|0;m=p+32|0;j=p+8|0;k=p;l=p+24|0;o=p+16|0;g=a+4|0;q=f[g>>2]|0;d=f[b>>2]|0;b=f[b+4>>2]|0;e=c;h=f[e>>2]|0;e=f[e+4>>2]|0;i=h-d<<3;f[g>>2]=q-b+e+i;g=(f[a>>2]|0)+(q>>>5<<2)|0;a=q&31;c=g;if((b|0)!=(a|0)){q=j;f[q>>2]=d;f[q+4>>2]=b;q=k;f[q>>2]=h;f[q+4>>2]=e;f[l>>2]=c;f[l+4>>2]=a;f[m>>2]=f[j>>2];f[m+4>>2]=f[j+4>>2];f[n>>2]=f[k>>2];f[n+4>>2]=f[k+4>>2];he(o,m,n,l);u=p;return}e=e-b+i|0;a=d;if((e|0)>0){if(!b){h=a;c=e;b=0}else{h=32-b|0;c=(e|0)<(h|0)?e:h;h=-1>>>(h-c|0)&-1<>2]=f[g>>2]&~h|f[a>>2]&h;b=c+b|0;h=a+4|0;g=g+(b>>>5<<2)|0;d=h;c=e-c|0;b=b&31}e=c>>>5;rm(g|0,d|0,e<<2|0)|0;d=c-(e<<5)|0;a=g+(e<<2)|0;c=a;if((d|0)>0){b=-1>>>(32-d|0);f[a>>2]=f[a>>2]&~b|f[h+(e<<2)>>2]&b;b=d}}f[o>>2]=c;f[o+4>>2]=b;u=p;return}function ag(a,c,d){a=a|0;c=c|0;d=d|0;var e=0,g=0,h=0,i=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,v=0;v=u;u=u+16|0;s=v;e=f[a+40>>2]|0;j=f[a+44>>2]|0;if((e|0)==(j|0)){t=0;u=v;return t|0}k=s+11|0;m=s+4|0;l=d+11|0;n=d+4|0;a=e;a:while(1){f[s>>2]=0;f[s+4>>2]=0;f[s+8>>2]=0;do if(fj(f[a>>2]|0,c,s)|0?(p=b[k>>0]|0,q=p<<24>>24<0,p=p&255,o=q?f[m>>2]|0:p,i=b[l>>0]|0,r=i<<24>>24<0,(o|0)==((r?f[n>>2]|0:i&255)|0)):0){g=f[s>>2]|0;i=q?g:s;e=r?f[d>>2]|0:d;h=(o|0)==0;if(q){if(h)break a;if(!(rl(i,e,o)|0))break a;else break}if(h)break a;if((g&255)<<24>>24==(b[e>>0]|0)){g=p;h=s;do{g=g+-1|0;h=h+1|0;if(!g)break a;e=e+1|0}while((b[h>>0]|0)==(b[e>>0]|0))}}while(0);Lo(s);a=a+4|0;if((a|0)==(j|0)){a=0;t=14;break}}if((t|0)==14){u=v;return a|0}t=f[a>>2]|0;Lo(s);u=v;return t|0}function bg(a,c,d){a=a|0;c=c|0;d=d|0;var e=0,g=0,h=0,i=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0;e=f[d>>2]|0;m=f[d+4>>2]|0;a:do if((e|0)==(m|0)){n=a+8|0;o=a+12|0;q=0}else{k=f[c>>2]|0;l=a+8|0;j=a+12|0;d=0;b:while(1){h=f[e>>2]|0;i=f[k+(h<<2)>>2]|0;if((i|0)>=(d|0)){d=f[l>>2]|0;c=(f[j>>2]|0)-d|0;if((c|0)>0){g=c>>2;a=0;do{c=f[d+(a<<2)>>2]|0;if(b[c+84>>0]|0)break b;c=f[c+68>>2]|0;f[c+(i<<2)>>2]=f[c+(h<<2)>>2];a=a+1|0}while((a|0)<(g|0))}d=i+1|0}e=e+4|0;if((e|0)==(m|0)){n=l;o=j;q=d;break a}}Ga(18230,18249,91,18290)}while(0);c=f[o>>2]|0;d=f[n>>2]|0;if((c-d|0)>0)j=0;else return;do{g=f[d+(j<<2)>>2]|0;b[g+84>>0]=0;h=g+68|0;g=g+72|0;e=f[g>>2]|0;a=f[h>>2]|0;i=e-a>>2;if(q>>>0<=i>>>0){if(q>>>0>>0?(p=a+(q<<2)|0,(e|0)!=(p|0)):0)f[g>>2]=e+(~((e+-4-p|0)>>>2)<<2)}else{ch(h,q-i|0,1512);d=f[n>>2]|0;c=f[o>>2]|0}j=j+1|0}while((j|0)<(c-d>>2|0));return}function cg(a,c){a=a|0;c=c|0;var d=0,e=La,g=La,h=0,i=0,j=0,k=0,l=0,m=0,o=0,p=0,q=0,r=0,s=0,t=0,v=0,w=La,x=La,y=0,z=0;v=u;u=u+16|0;p=v;m=f[a+24>>2]|0;r=a+8|0;d=b[(f[r>>2]|0)+24>>0]|0;o=d<<24>>24;t=o<<2;s=Zq(o>>>0>1073741823?-1:o<<2)|0;vp(p);En(p,$(n[a+32>>2]),(1<>2]|0;m=(f[f[m>>2]>>2]|0)+(f[m+48>>2]|0)|0;if(!c){_q(s);u=v;return 1}q=p+4|0;l=a+28|0;if(d<<24>>24>0){h=0;i=0;j=0}else{a=0;d=0;while(1){Mg((f[f[(f[r>>2]|0)+64>>2]>>2]|0)+d|0,s|0,t|0)|0;a=a+1|0;if((a|0)==(c|0))break;else d=d+t|0}_q(s);u=v;return 1}while(1){a=f[l>>2]|0;e=$(n[q>>2]);g=$(n[p>>2]);d=0;k=j;while(1){z=f[m+(k<<2)>>2]|0;y=(z|0)<0;w=$(e*$((y?0-z|0:z)|0));x=$(-w);w=$(g*(y?x:w));w=$($(n[a+(d<<2)>>2])+w);n[s+(d<<2)>>2]=w;d=d+1|0;if((d|0)==(o|0))break;else k=k+1|0}Mg((f[f[(f[r>>2]|0)+64>>2]>>2]|0)+i|0,s|0,t|0)|0;h=h+1|0;if((h|0)==(c|0))break;else{i=i+t|0;j=o+j|0}}_q(s);u=v;return 1}function dg(a,b){a=a|0;b=b|0;var c=0,e=0,g=0,h=0,i=0,j=0,k=0,l=0;j=d[b>>1]|0;k=d[b+2>>1]|0;l=d[b+4>>1]|0;i=d[b+6>>1]|0;b=((((j^318)&65535)+239^k&65535)+239^l&65535)+239^i&65535;e=f[a+4>>2]|0;if(!e){l=0;return l|0}h=e+-1|0;c=(h&e|0)==0;if(c)g=b&h;else g=(b>>>0)%(e>>>0)|0;b=f[(f[a>>2]|0)+(g<<2)>>2]|0;if(!b){l=0;return l|0}b=f[b>>2]|0;if(!b){l=0;return l|0}if(c){while(1){if((f[b+4>>2]&h|0)!=(g|0)){b=0;a=20;break}if((((d[b+8>>1]|0)==j<<16>>16?(d[b+10>>1]|0)==k<<16>>16:0)?(d[b+12>>1]|0)==l<<16>>16:0)?(d[b+14>>1]|0)==i<<16>>16:0){a=20;break}b=f[b>>2]|0;if(!b){b=0;a=20;break}}if((a|0)==20)return b|0}else{while(1){if((((f[b+4>>2]|0)>>>0)%(e>>>0)|0|0)!=(g|0)){b=0;a=20;break}if((((d[b+8>>1]|0)==j<<16>>16?(d[b+10>>1]|0)==k<<16>>16:0)?(d[b+12>>1]|0)==l<<16>>16:0)?(d[b+14>>1]|0)==i<<16>>16:0){a=20;break}b=f[b>>2]|0;if(!b){b=0;a=20;break}}if((a|0)==20)return b|0}return 0}function eg(a,b,c,d){a=a|0;b=b|0;c=c|0;d=d|0;var e=0,g=0,h=0,i=0,j=0,k=0,l=0;k=b+16|0;l=f[k>>2]|0;g=(f[c>>2]|0)-l|0;i=c+4|0;e=(f[i>>2]|0)-l|0;j=c;f[j>>2]=g;f[j+4>>2]=e;j=f[k>>2]|0;if((j|0)<(g|0))Ga(10070,9477,250,10093);if((j|0)<(e|0))Ga(10105,9477,251,10093);h=0-j|0;if((g|0)<(h|0))Ga(10128,9477,252,10093);if((e|0)<(h|0))Ga(10152,9477,253,10093);if((((e|0)>-1?e:0-e|0)+((g|0)>-1?g:0-g|0)|0)>(j|0)){Yh(b+4|0,c,i);g=f[c>>2]|0;e=f[i>>2]|0;h=f[k>>2]|0;i=0}else{h=j;i=1}c=(f[d>>2]|0)+g|0;f[a>>2]=c;e=(f[d+4>>2]|0)+e|0;g=a+4|0;f[g>>2]=e;if((h|0)>=(c|0)){if((c|0)<(0-h|0))c=(f[b+8>>2]|0)+c|0}else c=c-(f[b+8>>2]|0)|0;f[a>>2]=c;if((h|0)>=(e|0)){if((e|0)<(0-h|0))e=(f[b+8>>2]|0)+e|0}else e=e-(f[b+8>>2]|0)|0;f[g>>2]=e;if(i){d=c;b=e;d=d+l|0;l=b+l|0;b=a;a=b;f[a>>2]=d;b=b+4|0;f[b>>2]=l;return}Yh(b+4|0,a,g);d=f[a>>2]|0;b=f[g>>2]|0;d=d+l|0;l=b+l|0;b=a;a=b;f[a>>2]=d;b=b+4|0;f[b>>2]=l;return}function fg(a,c){a=a|0;c=c|0;var d=0,e=0,g=0,h=0,i=0,j=0,k=0,l=0;j=b[c>>0]|0;k=b[c+1>>0]|0;l=b[c+2>>0]|0;i=b[c+3>>0]|0;c=(((j&255^318)+239^k&255)+239^l&255)+239^i&255;e=f[a+4>>2]|0;if(!e){l=0;return l|0}h=e+-1|0;d=(h&e|0)==0;if(d)g=c&h;else g=(c>>>0)%(e>>>0)|0;c=f[(f[a>>2]|0)+(g<<2)>>2]|0;if(!c){l=0;return l|0}c=f[c>>2]|0;if(!c){l=0;return l|0}if(d){while(1){if((f[c+4>>2]&h|0)!=(g|0)){c=0;a=20;break}if((((b[c+8>>0]|0)==j<<24>>24?(b[c+9>>0]|0)==k<<24>>24:0)?(b[c+10>>0]|0)==l<<24>>24:0)?(b[c+11>>0]|0)==i<<24>>24:0){a=20;break}c=f[c>>2]|0;if(!c){c=0;a=20;break}}if((a|0)==20)return c|0}else{while(1){if((((f[c+4>>2]|0)>>>0)%(e>>>0)|0|0)!=(g|0)){c=0;a=20;break}if((((b[c+8>>0]|0)==j<<24>>24?(b[c+9>>0]|0)==k<<24>>24:0)?(b[c+10>>0]|0)==l<<24>>24:0)?(b[c+11>>0]|0)==i<<24>>24:0){a=20;break}c=f[c>>2]|0;if(!c){c=0;a=20;break}}if((a|0)==20)return c|0}return 0}function gg(a,b,c){a=a|0;b=b|0;c=c|0;var d=0,e=0,g=0,h=0,i=0,j=0;j=u;u=u+16|0;h=j;f[h>>2]=b;if((b|0)<=-1)Ga(6209,6221,107,6258);i=a+8|0;if(((f[a+12>>2]|0)-(f[i>>2]|0)>>2|0)<=(b|0))Ah(i,b+1|0);d=f[(f[c>>2]|0)+56>>2]|0;do if((d|0)<4){g=a+20+(d*12|0)+4|0;e=f[g>>2]|0;if((e|0)==(f[a+20+(d*12|0)+8>>2]|0)){Ii(a+20+(d*12|0)|0,h);break}else{f[e>>2]=b;f[g>>2]=e+4;break}}while(0);g=f[c>>2]|0;a=f[h>>2]|0;f[g+60>>2]=a;a=(f[i>>2]|0)+(a<<2)|0;f[c>>2]=0;b=f[a>>2]|0;f[a>>2]=g;if(!b){u=j;return}a=b+88|0;d=f[a>>2]|0;f[a>>2]=0;if(d|0){e=f[d+8>>2]|0;if(e|0){g=d+12|0;if((f[g>>2]|0)!=(e|0))f[g>>2]=e;ar(e)}ar(d)}d=f[b+68>>2]|0;if(d|0){g=b+72|0;e=f[g>>2]|0;if((e|0)!=(d|0))f[g>>2]=e+(~((e+-4-d|0)>>>2)<<2);ar(d)}a=b+64|0;d=f[a>>2]|0;f[a>>2]=0;if(d|0){e=f[d>>2]|0;if(e|0){g=d+4|0;if((f[g>>2]|0)!=(e|0))f[g>>2]=e;ar(e)}ar(d)}ar(b);u=j;return}function hg(a,c,d){a=a|0;c=c|0;d=d|0;var e=0,g=0,h=0,i=0,j=0,k=0;j=c;h=d-j|0;i=a+8|0;e=f[i>>2]|0;g=f[a>>2]|0;k=g;if(h>>>0>(e-g|0)>>>0){if(g){e=a+4|0;if((f[e>>2]|0)!=(k|0))f[e>>2]=k;ar(k);f[i>>2]=0;f[e>>2]=0;f[a>>2]=0;e=0}if((h|0)<0){Lp(a);e=f[i>>2]|0;g=f[a>>2]|0}else g=0;k=e-g|0;g=k<<1;g=k>>>0<1073741823?(g>>>0>>0?h:g):2147483647;if((g|0)<0)Lp(a);e=ln(g)|0;h=a+4|0;f[h>>2]=e;f[a>>2]=e;f[i>>2]=e+g;if((c|0)==(d|0))return;do{b[e>>0]=b[c>>0]|0;c=c+1|0;e=(f[h>>2]|0)+1|0;f[h>>2]=e}while((c|0)!=(d|0));return}else{a=a+4|0;i=(f[a>>2]|0)-g|0;h=h>>>0>i>>>0;i=c+i|0;g=h?i:d;e=g-j|0;if(e|0)rm(k|0,c|0,e|0)|0;c=k+e|0;if(!h){if((f[a>>2]|0)==(c|0))return;f[a>>2]=c;return}if((g|0)==(d|0))return;e=f[a>>2]|0;c=i;do{b[e>>0]=b[c>>0]|0;c=c+1|0;e=(f[a>>2]|0)+1|0;f[a>>2]=e}while((c|0)!=(d|0));return}}function ig(a,b){a=a|0;b=b|0;var c=0,d=0,e=0,g=0,h=0,i=0,j=0,k=0,l=0,m=0,n=0;n=a+8|0;e=f[n>>2]|0;m=a+4|0;d=f[m>>2]|0;if(e-d>>2>>>0>=b>>>0){ej(d|0,0,b<<2|0)|0;f[m>>2]=d+(b<<2);return}c=f[a>>2]|0;h=(d-c>>2)+b|0;if(h>>>0>1073741823){Lp(a);g=f[a>>2]|0;d=f[m>>2]|0;e=f[n>>2]|0}else g=c;c=d;l=g;k=e-g|0;j=k>>1;h=k>>2>>>0<536870911?(j>>>0>>0?h:j):1073741823;j=d-g>>2;do if(h)if(h>>>0>1073741823){a=Ia(4)|0;Eq(a);sa(a|0,1344,125)}else{i=ln(h<<2)|0;break}else i=0;while(0);e=i+(j<<2)|0;ej(e|0,0,b<<2|0)|0;d=e;k=i+(h<<2)|0;h=i+(j+b<<2)|0;if((c|0)!=(l|0)){do{c=c+-4|0;b=f[c>>2]|0;f[c>>2]=0;f[e+-4>>2]=b;e=d+-4|0;d=e}while((c|0)!=(l|0));g=f[a>>2]|0;c=f[m>>2]|0}f[a>>2]=d;f[m>>2]=h;f[n>>2]=k;e=g;if((c|0)!=(e|0))do{c=c+-4|0;d=f[c>>2]|0;f[c>>2]=0;if(d|0)Pa[f[(f[d>>2]|0)+4>>2]&127](d)}while((c|0)!=(e|0));if(!g)return;ar(g);return}function jg(a,b){a=a|0;b=b|0;var c=0,d=0,e=0,g=0,h=0,i=0,j=0,k=0;i=f[b>>2]|0;j=f[b+4>>2]|0;k=f[b+8>>2]|0;h=f[b+12>>2]|0;b=(((i^318)+239^j)+239^k)+239^h;d=f[a+4>>2]|0;if(!d){k=0;return k|0}g=d+-1|0;c=(g&d|0)==0;if(c)e=b&g;else e=(b>>>0)%(d>>>0)|0;b=f[(f[a>>2]|0)+(e<<2)>>2]|0;if(!b){k=0;return k|0}b=f[b>>2]|0;if(!b){k=0;return k|0}if(c){while(1){if((f[b+4>>2]&g|0)!=(e|0)){b=0;a=20;break}if((((f[b+8>>2]|0)==(i|0)?(f[b+12>>2]|0)==(j|0):0)?(f[b+16>>2]|0)==(k|0):0)?(f[b+20>>2]|0)==(h|0):0){a=20;break}b=f[b>>2]|0;if(!b){b=0;a=20;break}}if((a|0)==20)return b|0}else{while(1){if((((f[b+4>>2]|0)>>>0)%(d>>>0)|0|0)!=(e|0)){b=0;a=20;break}if((((f[b+8>>2]|0)==(i|0)?(f[b+12>>2]|0)==(j|0):0)?(f[b+16>>2]|0)==(k|0):0)?(f[b+20>>2]|0)==(h|0):0){a=20;break}b=f[b>>2]|0;if(!b){b=0;a=20;break}}if((a|0)==20)return b|0}return 0}function kg(a,c,d){a=a|0;c=c|0;d=d|0;var e=0,g=0,h=0,i=0,j=0,k=0,l=0;l=u;u=u+32|0;k=l+16|0;g=l+12|0;h=l+8|0;i=l+4|0;j=l;e=f[c>>2]|0;if(!e)Ga(10673,11041,55,11225);c=f[c+4>>2]|0;if(!c)Ga(10673,11041,55,11225);c=f[c+(d<<2)>>2]|0;if(!(b[e+84>>0]|0))c=f[(f[e+68>>2]|0)+(c<<2)>>2]|0;f[a>>2]=0;f[a+4>>2]=0;f[a+8>>2]=0;f[a+12>>2]=0;f[a+16>>2]=0;f[a+20>>2]=0;switch(b[e+24>>0]|0){case 1:{f[g>>2]=c;f[k>>2]=f[g>>2];eb(e,k,a)|0;u=l;return}case 2:{f[h>>2]=c;f[k>>2]=f[h>>2];sf(e,k,a)|0;u=l;return}case 3:{f[i>>2]=c;f[k>>2]=f[i>>2];rf(e,k,a)|0;u=l;return}case 4:{f[j>>2]=c;f[k>>2]=f[j>>2];qf(e,k,a)|0;u=l;return}default:{u=l;return}}}function lg(a){a=a|0;var c=0,d=0,e=0,g=0,h=0,i=0,j=0;c=f[a+32>>2]|0;h=c+8|0;j=f[h+4>>2]|0;g=c+16|0;d=g;e=f[d>>2]|0;d=f[d+4>>2]|0;if(!((j|0)>(d|0)|((j|0)==(d|0)?(f[h>>2]|0)>>>0>e>>>0:0))){j=0;return j|0}h=b[(f[c>>2]|0)+e>>0]|0;c=Ho(e|0,d|0,1,0)|0;e=g;f[e>>2]=c;f[e+4>>2]=I;e=a+48|0;c=f[e>>2]|0;f[e>>2]=0;if(c|0)Pa[f[(f[c>>2]|0)+4>>2]&127](c);switch(h<<24>>24){case 0:{c=ln(336)|0;Cj(c);d=f[e>>2]|0;f[e>>2]=c;if(d){Pa[f[(f[d>>2]|0)+4>>2]&127](d);i=11}break}case 1:{c=ln(376)|0;Nj(c);d=f[e>>2]|0;f[e>>2]=c;if(d){Pa[f[(f[d>>2]|0)+4>>2]&127](d);i=11}break}case 2:{c=ln(392)|0;Bi(c);d=f[e>>2]|0;f[e>>2]=c;if(d){Pa[f[(f[d>>2]|0)+4>>2]&127](d);i=11}break}default:i=11}if((i|0)==11){c=f[e>>2]|0;if(!c){j=0;return j|0}}j=Wa[f[(f[c>>2]|0)+8>>2]&127](c,a)|0;return j|0}function mg(a,b){a=a|0;b=b|0;var c=0,d=0,e=0,g=0,h=0,i=0;f[a+4>>2]=f[b+4>>2];g=a+8|0;i=b+8|0;if((a|0)==(b|0))return a|0;h=b+12|0;c=f[h>>2]|0;if(!c)c=0;else{e=a+16|0;if(c>>>0>f[e>>2]<<5>>>0){d=f[g>>2]|0;if(d){ar(d);f[g>>2]=0;f[e>>2]=0;f[a+12>>2]=0;c=f[h>>2]|0}if((c|0)<0)Lp(g);d=((c+-1|0)>>>5)+1|0;c=ln(d<<2)|0;f[g>>2]=c;f[a+12>>2]=0;f[e>>2]=d;d=f[h>>2]|0}else{d=c;c=f[g>>2]|0}rm(c|0,f[i>>2]|0,((d+-1|0)>>>5<<2)+4|0)|0;c=f[h>>2]|0}f[a+12>>2]=c;h=a+20|0;i=b+20|0;g=b+24|0;c=f[g>>2]|0;if(!c)c=0;else{e=a+28|0;if(c>>>0>f[e>>2]<<5>>>0){d=f[h>>2]|0;if(d){ar(d);f[h>>2]=0;f[e>>2]=0;f[a+24>>2]=0;c=f[g>>2]|0}if((c|0)<0)Lp(h);d=((c+-1|0)>>>5)+1|0;c=ln(d<<2)|0;f[h>>2]=c;f[a+24>>2]=0;f[e>>2]=d;d=f[g>>2]|0}else{d=c;c=f[h>>2]|0}rm(c|0,f[i>>2]|0,((d+-1|0)>>>5<<2)+4|0)|0;c=f[g>>2]|0}f[a+24>>2]=c;return a|0}function ng(a,c){a=a|0;c=c|0;var d=0,e=0,g=0,h=0,i=0,j=0,k=0,l=0,m=0,n=0;j=u;u=u+32|0;i=j+16|0;h=j;k=c+8|0;l=f[k+4>>2]|0;g=c+16|0;d=g;e=f[d>>2]|0;d=f[d+4>>2]|0;if(!((l|0)>(d|0)|((l|0)==(d|0)?(f[k>>2]|0)>>>0>e>>>0:0))){l=0;u=j;return l|0}l=b[(f[c>>2]|0)+e>>0]|0;e=Ho(e|0,d|0,1,0)|0;k=g;f[k>>2]=e;f[k+4>>2]=I;if(l<<24>>24){l=0;u=j;return l|0}g=0;do{yj(i,c)|0;d=f[i>>2]|0;if(d|0){e=a+44+(g*12|0)|0;Fe(e,d,0);xq(h);Ff(h,c)|0;if(f[i>>2]|0){d=0;do{n=Tk(h)|0;l=(f[e>>2]|0)+(d>>>5<<2)|0;k=1<<(d&31);m=f[l>>2]|0;f[l>>2]=n?m|k:m&~k;d=d+1|0}while(d>>>0<(f[i>>2]|0)>>>0)}fr(h)}g=g+1|0}while((g|0)<4);n=hi(a+8|0,c)|0;u=j;return n|0}function og(a,b,c){a=a|0;b=b|0;c=c|0;var d=0,e=0,g=0,h=0,i=0,j=0,k=0;j=a+8|0;g=f[j>>2]|0;k=a+4|0;d=f[k>>2]|0;if(((g-d|0)/12|0)>>>0>=b>>>0){do{f[d>>2]=f[c>>2];f[d+4>>2]=f[c+4>>2];f[d+8>>2]=f[c+8>>2];d=(f[k>>2]|0)+12|0;f[k>>2]=d;b=b+-1|0}while((b|0)!=0);return}e=f[a>>2]|0;h=((d-e|0)/12|0)+b|0;if(h>>>0>357913941){Lp(a);e=f[a>>2]|0;g=f[j>>2]|0;d=f[k>>2]|0}i=(g-e|0)/12|0;g=i<<1;g=i>>>0<178956970?(g>>>0>>0?h:g):357913941;d=(d-e|0)/12|0;do if(g)if(g>>>0>357913941){k=Ia(4)|0;Eq(k);sa(k|0,1344,125)}else{e=ln(g*12|0)|0;break}else e=0;while(0);i=e+(d*12|0)|0;h=e+(g*12|0)|0;d=i;g=i;do{f[d>>2]=f[c>>2];f[d+4>>2]=f[c+4>>2];f[d+8>>2]=f[c+8>>2];d=g+12|0;g=d;b=b+-1|0}while((b|0)!=0);d=f[a>>2]|0;e=(f[k>>2]|0)-d|0;b=i+(((e|0)/-12|0)*12|0)|0;if((e|0)>0)Mg(b|0,d|0,e|0)|0;f[a>>2]=b;f[k>>2]=g;f[j>>2]=h;if(!d)return;ar(d);return}function pg(a,b,c){a=a|0;b=b|0;c=c|0;var d=0,e=0;a=a+20|0;if(sd(a,b)|0){e=0;return e|0}d=hc(a,b)|0;b=f[c>>2]|0;f[c>>2]=0;e=f[d>>2]|0;f[d>>2]=b;if(!e){e=1;return e|0}a=f[e+28>>2]|0;if(a|0)do{d=a;a=f[a>>2]|0;oi(d+8|0);ar(d)}while((a|0)!=0);d=e+20|0;a=f[d>>2]|0;f[d>>2]=0;if(a|0)ar(a);a=f[e+8>>2]|0;if(a|0)do{d=a;a=f[a>>2]|0;b=f[d+20>>2]|0;if(b|0){c=d+24|0;if((f[c>>2]|0)!=(b|0))f[c>>2]=b;ar(b)}Lo(d+8|0);ar(d)}while((a|0)!=0);a=f[e>>2]|0;f[e>>2]=0;if(a|0)ar(a);ar(e);e=1;return e|0}function qg(a,b){a=a|0;b=b|0;var c=0,d=0,e=0;c=a+8|0;f[c>>2]=f[b>>2];mg(a+12|0,b+4|0)|0;d=a+44|0;e=b+36|0;f[d>>2]=f[e>>2];f[d+4>>2]=f[e+4>>2];f[d+8>>2]=f[e+8>>2];f[d+12>>2]=f[e+12>>2];if((c|0)==(b|0)){f[a+96>>2]=f[b+88>>2];return}else{Mf(a+60|0,f[b+52>>2]|0,f[b+56>>2]|0);Mf(a+72|0,f[b+64>>2]|0,f[b+68>>2]|0);Mf(a+84|0,f[b+76>>2]|0,f[b+80>>2]|0);f[a+96>>2]=f[b+88>>2];_f(a+100|0,f[b+92>>2]|0,f[b+96>>2]|0);return}}function rg(a,c){a=a|0;c=c|0;var d=0,e=0,g=0,h=0,i=0,j=0,k=0,l=0,m=0,n=0;j=u;u=u+32|0;i=j+16|0;h=j;k=c+8|0;l=f[k+4>>2]|0;g=c+16|0;d=g;e=f[d>>2]|0;d=f[d+4>>2]|0;if(!((l|0)>(d|0)|((l|0)==(d|0)?(f[k>>2]|0)>>>0>e>>>0:0))){l=0;u=j;return l|0}l=b[(f[c>>2]|0)+e>>0]|0;e=Ho(e|0,d|0,1,0)|0;k=g;f[k>>2]=e;f[k+4>>2]=I;if(l<<24>>24){l=0;u=j;return l|0}g=0;do{yj(i,c)|0;d=f[i>>2]|0;if(d|0){e=a+44+(g*12|0)|0;Fe(e,d,0);xq(h);Ff(h,c)|0;if(f[i>>2]|0){d=0;do{n=Tk(h)|0;l=(f[e>>2]|0)+(d>>>5<<2)|0;k=1<<(d&31);m=f[l>>2]|0;f[l>>2]=n?m|k:m&~k;d=d+1|0}while(d>>>0<(f[i>>2]|0)>>>0)}fr(h)}g=g+1|0}while((g|0)<4);n=ki(a+8|0,c)|0;u=j;return n|0}function sg(a,c,d){a=a|0;c=c|0;d=d|0;var e=0,g=0,h=0,i=0,j=0;j=u;u=u+80|0;g=j;i=j+64|0;Ol(g);e=f[(f[a+8>>2]|0)+56>>2]|0;h=X(cm(5)|0,d)|0;xj(g,e,0,d&255,5,0,h,((h|0)<0)<<31>>31,0,0);h=ln(96)|0;Bl(h,g);b[h+84>>0]=1;d=f[h+68>>2]|0;g=h+72|0;e=f[g>>2]|0;if((e|0)!=(d|0))f[g>>2]=e+(~((e+-4-d|0)>>>2)<<2);oj(h,c)|0;f[i>>2]=h;Ui(a,i);h=f[i>>2]|0;f[i>>2]=0;if(!h){u=j;return}i=h+88|0;d=f[i>>2]|0;f[i>>2]=0;if(d|0){e=f[d+8>>2]|0;if(e|0){g=d+12|0;if((f[g>>2]|0)!=(e|0))f[g>>2]=e;ar(e)}ar(d)}d=f[h+68>>2]|0;if(d|0){g=h+72|0;e=f[g>>2]|0;if((e|0)!=(d|0))f[g>>2]=e+(~((e+-4-d|0)>>>2)<<2);ar(d)}i=h+64|0;d=f[i>>2]|0;f[i>>2]=0;if(d|0){e=f[d>>2]|0;if(e|0){g=d+4|0;if((f[g>>2]|0)!=(e|0))f[g>>2]=e;ar(e)}ar(d)}ar(h);u=j;return}function tg(a,b,c){a=a|0;b=b|0;c=c|0;var d=0,e=0,g=0,h=0,i=0,j=0;j=u;u=u+16|0;i=j;d=f[a+8>>2]|0;e=f[c>>2]|0;h=(e|0)/3|0;if((e|0)<=-3)Ga(18122,18147,63,18171);g=f[d+84>>2]|0;if((h|0)>=(((f[d+88>>2]|0)-g|0)/12|0|0))Ga(18176,18147,64,18171);h=f[g+(h*12|0)+(((e|0)%3|0)<<2)>>2]|0;d=f[a+12>>2]|0;f[i>>2]=h;d=f[d+4>>2]|0;g=d+4|0;e=f[g>>2]|0;if((e|0)==(f[d+8>>2]|0))Ii(d,i);else{f[e>>2]=h;f[g>>2]=e+4}h=a+4|0;e=f[h>>2]|0;g=e+4|0;d=f[g>>2]|0;if((d|0)==(f[e+8>>2]|0)){Ii(e,c);i=f[h>>2]|0;c=i+24|0;a=f[c>>2]|0;b=f[b>>2]|0;i=i+12|0;i=f[i>>2]|0;b=i+(b<<2)|0;f[b>>2]=a;b=f[c>>2]|0;b=b+1|0;f[c>>2]=b;u=j;return}else{f[d>>2]=f[c>>2];f[g>>2]=d+4;i=e;c=i+24|0;a=f[c>>2]|0;b=f[b>>2]|0;i=i+12|0;i=f[i>>2]|0;b=i+(b<<2)|0;f[b>>2]=a;b=f[c>>2]|0;b=b+1|0;f[c>>2]=b;u=j;return}}function ug(a,b,c,d,e,g){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;g=g|0;var h=0,i=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0;p=u;u=u+16|0;o=p+4|0;n=p;f[a+56>>2]=e;f[a+48>>2]=g;l=Zq(e>>>0>1073741823?-1:e<<2)|0;m=a+52|0;d=f[m>>2]|0;f[m>>2]=l;if(d|0)_q(d);j=a+40|0;g=f[j>>2]|0;h=f[g+4>>2]|0;d=f[g>>2]|0;l=h-d|0;k=l>>2;if((l|0)<=0){u=p;return 1}l=a+8|0;i=h;h=0;while(1){if(i-d>>2>>>0<=h>>>0){Kp(g);d=f[g>>2]|0}f[n>>2]=f[d+(h<<2)>>2];f[o>>2]=f[n>>2];tc(a,o,c,h);i=X(h,e)|0;ji(l,f[m>>2]|0,b+(i<<2)|0,c+(i<<2)|0);h=h+1|0;if((h|0)>=(k|0))break;i=f[j>>2]|0;g=i;d=f[i>>2]|0;i=f[i+4>>2]|0}u=p;return 1}function vg(a,b,c){a=a|0;b=b|0;c=c|0;var d=0,e=0,g=0,h=0,i=0,j=0,k=0,l=0,m=0,n=0,o=0;n=u;u=u+32|0;i=n+24|0;j=n+16|0;k=n+8|0;m=n;l=a+4|0;o=f[l>>2]|0;e=f[b>>2]|0;b=f[b+4>>2]|0;h=f[c>>2]|0;d=f[c+4>>2]|0;g=h-e<<3;f[l>>2]=o-b+d+g;l=(f[a>>2]|0)+(o>>>5<<2)|0;a=o&31;c=l;if((b|0)!=(a|0)){f[i>>2]=e;f[i+4>>2]=b;f[j>>2]=h;f[j+4>>2]=d;f[k>>2]=c;f[k+4>>2]=a;ze(m,i,j,k);u=n;return}d=d-b+g|0;a=e;if((d|0)>0){if(!b){h=a;c=d;a=l;b=0}else{h=32-b|0;c=(d|0)<(h|0)?d:h;h=-1>>>(h-c|0)&-1<>2]=f[l>>2]&~h|f[a>>2]&h;b=c+b|0;h=a+4|0;e=h;c=d-c|0;a=l+(b>>>5<<2)|0;b=b&31}g=c>>>5;rm(a|0,e|0,g<<2|0)|0;d=c-(g<<5)|0;a=a+(g<<2)|0;c=a;if((d|0)>0){b=-1>>>(32-d|0);f[a>>2]=f[a>>2]&~b|f[h+(g<<2)>>2]&b;b=d}}f[m>>2]=c;f[m+4>>2]=b;u=n;return}function wg(a,b){a=a|0;b=b|0;var c=0,d=0,e=0,g=0,h=0,i=0,j=0,k=0,l=0;l=a+4|0;d=f[l>>2]|0;c=f[a>>2]|0;e=(d-c>>2)+1|0;if(e>>>0>1073741823){Lp(a);c=f[a>>2]|0;d=f[l>>2]|0}k=a+8|0;j=(f[k>>2]|0)-c|0;g=j>>1;g=j>>2>>>0<536870911?(g>>>0>>0?e:g):1073741823;c=d-c>>2;do if(g)if(g>>>0>1073741823){a=Ia(4)|0;Eq(a);sa(a|0,1344,125)}else{e=ln(g<<2)|0;break}else e=0;while(0);h=e+(c<<2)|0;d=h;j=e+(g<<2)|0;i=f[b>>2]|0;f[b>>2]=0;f[h>>2]=i;i=h+4|0;b=f[a>>2]|0;c=f[l>>2]|0;if((c|0)==(b|0)){g=b;c=b}else{e=h;do{c=c+-4|0;h=f[c>>2]|0;f[c>>2]=0;f[e+-4>>2]=h;e=d+-4|0;d=e}while((c|0)!=(b|0));g=f[a>>2]|0;c=f[l>>2]|0}f[a>>2]=d;f[l>>2]=i;f[k>>2]=j;e=g;if((c|0)!=(e|0))do{c=c+-4|0;d=f[c>>2]|0;f[c>>2]=0;if(d|0){Ri(d);ar(d)}}while((c|0)!=(e|0));if(!g)return;ar(g);return}function xg(a,b,c){a=a|0;b=b|0;c=c|0;var d=0,e=0,g=0,h=0,i=0,j=0;j=u;u=u+16|0;i=j;g=f[c>>2]|0;f[c>>2]=0;f[i>>2]=g;gg(a,b,i);g=f[i>>2]|0;f[i>>2]=0;if(g|0){i=g+88|0;c=f[i>>2]|0;f[i>>2]=0;if(c|0){d=f[c+8>>2]|0;if(d|0){e=c+12|0;if((f[e>>2]|0)!=(d|0))f[e>>2]=d;ar(d)}ar(c)}c=f[g+68>>2]|0;if(c|0){e=g+72|0;d=f[e>>2]|0;if((d|0)!=(c|0))f[e>>2]=d+(~((d+-4-c|0)>>>2)<<2);ar(c)}i=g+64|0;c=f[i>>2]|0;f[i>>2]=0;if(c|0){d=f[c>>2]|0;if(d|0){e=c+4|0;if((f[e>>2]|0)!=(d|0))f[e>>2]=d;ar(d)}ar(c)}ar(g)}i=a+72|0;h=a+76|0;c=f[h>>2]|0;g=f[i>>2]|0;a=c-g>>2;if((a|0)>(b|0)){u=j;return}e=b+1|0;d=c;if(e>>>0>a>>>0){ih(i,e-a|0);u=j;return}if(e>>>0>=a>>>0){u=j;return}c=g+(e<<2)|0;if((d|0)==(c|0)){u=j;return}f[h>>2]=d+(~((d+-4-c|0)>>>2)<<2);u=j;return}function yg(a,c,d){a=a|0;c=c|0;d=d|0;var e=0,g=0,h=0,i=0,j=0,k=0,l=0,m=0,n=0;a=a+4|0;e=f[a>>2]|0;if(!e){f[c>>2]=a;n=a;return n|0}l=b[d+11>>0]|0;k=l<<24>>24<0;l=k?f[d+4>>2]|0:l&255;k=k?f[d>>2]|0:d;while(1){g=e+16|0;d=b[g+11>>0]|0;i=d<<24>>24<0;d=i?f[e+20>>2]|0:d&255;h=d>>>0>>0;a=h?d:l;if((a|0)!=0?(n=rl(k,i?f[g>>2]|0:g,a)|0,(n|0)!=0):0)if((n|0)<0)j=7;else j=9;else if(l>>>0>>0)j=7;else j=9;if((j|0)==7){a=f[e>>2]|0;if(!a){j=8;break}}else if((j|0)==9){j=0;a=l>>>0>>0?l:d;if((a|0)!=0?(m=rl(i?f[g>>2]|0:g,k,a)|0,(m|0)!=0):0){if((m|0)>=0){j=16;break}}else j=11;if((j|0)==11?(0,!h):0){j=16;break}d=e+4|0;a=f[d>>2]|0;if(!a){j=15;break}}e=a}if((j|0)==8){f[c>>2]=e;n=e;return n|0}else if((j|0)==15){f[c>>2]=e;n=d;return n|0}else if((j|0)==16){f[c>>2]=e;n=c;return n|0}return 0}function zg(a,c){a=a|0;c=c|0;var d=0,e=0,g=0,h=0,i=0,j=0;e=f[c>>2]|0;h=f[a>>2]|0;j=h+(e>>>5<<2)|0;f[j>>2]=f[j>>2]|1<<(e&31);j=f[a+64>>2]|0;g=(e|0)<0;c=e+1|0;if(!g?(d=((c|0)%3|0|0)==0?e+-2|0:c,(d|0)>=0):0)c=f[(f[j>>2]|0)+(d<<2)>>2]|0;else c=-1073741824;i=a+12|0;d=(f[i>>2]|0)+(c>>>5<<2)|0;f[d>>2]=f[d>>2]|1<<(c&31);if(g){j=(f[i>>2]|0)+402653184|0;f[j>>2]=f[j>>2]|1;return}c=(((e>>>0)%3|0|0)==0?2:-1)+e|0;if((c|0)<0)c=-1073741824;else c=f[(f[j>>2]|0)+(c<<2)>>2]|0;d=(f[i>>2]|0)+(c>>>5<<2)|0;f[d>>2]=f[d>>2]|1<<(c&31);if(g)return;d=f[(f[j+12>>2]|0)+(e<<2)>>2]|0;if((d|0)<=-1)return;b[a+24>>0]=0;c=h+(d>>>5<<2)|0;f[c>>2]=f[c>>2]|1<<(d&31);c=d+1|0;c=((c|0)%3|0|0)==0?d+-2|0:c;if((c|0)<0)c=-1073741824;else c=f[(f[j>>2]|0)+(c<<2)>>2]|0;a=(f[i>>2]|0)+(c>>>5<<2)|0;f[a>>2]=f[a>>2]|1<<(c&31);c=(((d>>>0)%3|0|0)==0?2:-1)+d|0;if((c|0)<0)c=-1073741824;else c=f[(f[j>>2]|0)+(c<<2)>>2]|0;j=(f[i>>2]|0)+(c>>>5<<2)|0;f[j>>2]=f[j>>2]|1<<(c&31);return}function Ag(a,b){a=a|0;b=b|0;var c=0,d=0,e=0,g=0,h=0,i=0,j=0,k=0,l=0,m=0,n=0;n=a+4|0;c=f[n>>2]|0;m=f[a>>2]|0;g=m;do if((c|0)==(m|0)){m=a+8|0;d=f[m>>2]|0;l=a+12|0;k=f[l>>2]|0;e=k;if(d>>>0>>0){a=d;i=((e-a>>2)+1|0)/2|0;g=d+(i<<2)|0;e=a-c|0;a=e>>2;h=g+(0-a<<2)|0;if(!a)c=g;else{rm(h|0,c|0,e|0)|0;d=f[m>>2]|0;c=h}f[n>>2]=c;f[m>>2]=d+(i<<2);break}e=e-g>>1;e=(e|0)==0?1:e;if(e>>>0>1073741823){b=Ia(4)|0;Eq(b);sa(b|0,1344,125)}h=ln(e<<2)|0;i=h;k=h+((e+3|0)>>>2<<2)|0;j=k;h=h+(e<<2)|0;if((c|0)==(d|0))d=j;else{e=k;g=j;do{f[e>>2]=f[c>>2];e=g+4|0;g=e;c=c+4|0}while((c|0)!=(d|0));c=f[a>>2]|0;d=g}f[a>>2]=i;f[n>>2]=j;f[m>>2]=d;f[l>>2]=h;if(!c)c=k;else{ar(c);c=f[n>>2]|0}}while(0);f[c+-4>>2]=f[b>>2];f[n>>2]=(f[n>>2]|0)+-4;return}function Bg(a,b,c,d,e,g){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;g=g|0;var h=0,i=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0;p=u;u=u+16|0;o=p+4|0;n=p;f[a+56>>2]=e;f[a+48>>2]=g;l=Zq(e>>>0>1073741823?-1:e<<2)|0;m=a+52|0;d=f[m>>2]|0;f[m>>2]=l;if(d|0)_q(d);j=a+40|0;g=f[j>>2]|0;h=f[g+4>>2]|0;d=f[g>>2]|0;l=h-d|0;k=l>>2;if((l|0)<=0){u=p;return 1}l=a+8|0;i=h;h=0;while(1){if(i-d>>2>>>0<=h>>>0){Kp(g);d=f[g>>2]|0}f[n>>2]=f[d+(h<<2)>>2];f[o>>2]=f[n>>2];rc(a,o,c,h);i=X(h,e)|0;ji(l,f[m>>2]|0,b+(i<<2)|0,c+(i<<2)|0);h=h+1|0;if((h|0)>=(k|0))break;i=f[j>>2]|0;g=i;d=f[i>>2]|0;i=f[i+4>>2]|0}u=p;return 1}function Cg(a,b,c,d,e,g){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;g=g|0;var h=0,i=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0;p=u;u=u+16|0;o=p+4|0;n=p;f[a+56>>2]=e;f[a+48>>2]=g;l=Zq(e>>>0>1073741823?-1:e<<2)|0;m=a+52|0;d=f[m>>2]|0;f[m>>2]=l;if(d|0)_q(d);j=a+40|0;g=f[j>>2]|0;h=f[g+4>>2]|0;d=f[g>>2]|0;l=h-d|0;k=l>>2;if((l|0)<=0){u=p;return 1}l=a+8|0;i=h;h=0;while(1){if(i-d>>2>>>0<=h>>>0){Kp(g);d=f[g>>2]|0}f[n>>2]=f[d+(h<<2)>>2];f[o>>2]=f[n>>2];tc(a,o,c,h);i=X(h,e)|0;mi(l,f[m>>2]|0,b+(i<<2)|0,c+(i<<2)|0);h=h+1|0;if((h|0)>=(k|0))break;i=f[j>>2]|0;g=i;d=f[i>>2]|0;i=f[i+4>>2]|0}u=p;return 1}function Dg(a,c,d){a=a|0;c=c|0;d=d|0;var e=0,g=0,h=0,i=0,j=0,k=0,l=0,m=0;m=u;u=u+48|0;j=m+32|0;e=m+28|0;g=m+24|0;h=m+20|0;i=m+16|0;l=m;k=b[a+24>>0]|0;f[l>>2]=f[348];f[l+4>>2]=f[349];f[l+8>>2]=f[350];f[l+12>>2]=f[351];k=k<<24>>24;switch(k|0){case 1:{f[e>>2]=c;f[j>>2]=f[e>>2];e=od(a,j,l)|0;break}case 2:{f[g>>2]=c;f[j>>2]=f[g>>2];e=wc(a,j,l)|0;break}case 3:{f[h>>2]=c;f[j>>2]=f[h>>2];e=Vc(a,j,l)|0;break}case 4:{f[i>>2]=c;f[j>>2]=f[i>>2];e=Nc(a,j,l)|0;break}default:{l=0;u=m;return l|0}}if(!e){l=0;u=m;return l|0}zf(d,l,l+(k<<2)|0);l=1;u=m;return l|0}function Eg(a,c){a=a|0;c=c|0;var d=0,e=0,g=0,i=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0;n=c+8|0;m=f[n>>2]|0;n=f[n+4>>2]|0;p=c+16|0;k=p;o=f[k>>2]|0;k=f[k+4>>2]|0;e=Ho(o|0,k|0,4,0)|0;d=I;if((n|0)<(d|0)|(n|0)==(d|0)&m>>>0>>0){a=0;return a|0}l=f[c>>2]|0;g=l+o|0;g=h[g>>0]|h[g+1>>0]<<8|h[g+2>>0]<<16|h[g+3>>0]<<24;i=p;f[i>>2]=e;f[i+4>>2]=d;i=Ho(o|0,k|0,8,0)|0;j=I;if((n|0)<(j|0)|(n|0)==(j|0)&m>>>0>>0){a=0;return a|0}d=l+e|0;d=h[d>>0]|h[d+1>>0]<<8|h[d+2>>0]<<16|h[d+3>>0]<<24;e=p;f[e>>2]=i;f[e+4>>2]=j;f[a+12>>2]=g;f[a+16>>2]=d;g=d+(1-g)|0;f[a+20>>2]=g;d=(g|0)/2|0;e=a+24|0;f[e>>2]=d;f[a+28>>2]=0-d;if(!(g&1))f[e>>2]=d+-1;if((n|0)>(j|0)|(n|0)==(j|0)&m>>>0>i>>>0?(n=b[l+i>>0]|0,o=Ho(o|0,k|0,9,0)|0,p,f[p>>2]=o,f[p+4>>2]=I,n<<24>>24):0){a=0;return a|0}a=Ff(a+100|0,c)|0;return a|0}function Fg(a,b){a=a|0;b=b|0;var c=0,d=0,e=0,g=0,h=0,i=0,j=0,k=0;i=u;u=u+16|0;g=i+4|0;h=i;b=f[b>>2]|0;if((b|0)<0){a=-1073741824;u=i;return a|0}d=a+4|0;c=f[d>>2]|0;e=f[(f[c+12>>2]|0)+(b<<2)>>2]|0;if((e|0)<0){a=-1073741824;u=i;return a|0}k=b+1|0;f[h>>2]=((k|0)%3|0|0)==0?b+-2|0:k;k=f[a>>2]|0;f[g>>2]=f[h>>2];k=wk(g,c,k)|0;f[h>>2]=(((e>>>0)%3|0|0)==0?2:-1)+e;j=f[d>>2]|0;c=f[a>>2]|0;f[g>>2]=f[h>>2];if((k|0)!=(wk(g,j,c)|0)){k=-1073741824;u=i;return k|0}f[h>>2]=b+(((b>>>0)%3|0|0)==0?2:-1);j=f[d>>2]|0;c=f[a>>2]|0;f[g>>2]=f[h>>2];c=wk(g,j,c)|0;j=e+1|0;f[h>>2]=((j|0)%3|0|0)==0?e+-2|0:j;j=f[d>>2]|0;k=f[a>>2]|0;f[g>>2]=f[h>>2];k=(c|0)!=(wk(g,j,k)|0);k=k?-1073741824:e;u=i;return k|0}function Gg(a,b){a=a|0;b=b|0;var c=0,d=0,e=0,g=0,h=0,i=0,j=0,k=0,l=0,m=0,n=0;n=a+8|0;c=f[n>>2]|0;l=a+12|0;m=f[l>>2]|0;e=m;h=c;do if((c|0)==(m|0)){m=a+4|0;k=f[m>>2]|0;d=f[a>>2]|0;g=d;if(k>>>0>d>>>0){c=k;g=((c-g>>2)+1|0)/-2|0;e=k+(g<<2)|0;c=h-c|0;d=c>>2;if(!d)c=k;else{rm(e|0,k|0,c|0)|0;c=f[m>>2]|0}a=e+(d<<2)|0;f[n>>2]=a;f[m>>2]=c+(g<<2);c=a;break}e=e-g>>1;e=(e|0)==0?1:e;if(e>>>0>1073741823){b=Ia(4)|0;Eq(b);sa(b|0,1344,125)}h=ln(e<<2)|0;i=h;g=h+(e>>>2<<2)|0;j=g;h=h+(e<<2)|0;if((k|0)==(c|0))c=j;else{e=g;d=k;g=j;do{f[e>>2]=f[d>>2];e=g+4|0;g=e;d=d+4|0}while((d|0)!=(c|0));d=f[a>>2]|0;c=g}f[a>>2]=i;f[m>>2]=j;f[n>>2]=c;f[l>>2]=h;if(d){ar(d);c=f[n>>2]|0}}while(0);f[c>>2]=f[b>>2];f[n>>2]=(f[n>>2]|0)+4;return}function Hg(a,b,c,d,e,g){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;g=g|0;var h=0,i=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0;p=u;u=u+16|0;o=p+4|0;n=p;f[a+56>>2]=e;f[a+48>>2]=g;l=Zq(e>>>0>1073741823?-1:e<<2)|0;m=a+52|0;d=f[m>>2]|0;f[m>>2]=l;if(d|0)_q(d);j=a+40|0;g=f[j>>2]|0;h=f[g+4>>2]|0;d=f[g>>2]|0;l=h-d|0;k=l>>2;if((l|0)<=0){u=p;return 1}l=a+8|0;i=h;h=0;while(1){if(i-d>>2>>>0<=h>>>0){Kp(g);d=f[g>>2]|0}f[n>>2]=f[d+(h<<2)>>2];f[o>>2]=f[n>>2];rc(a,o,c,h);i=X(h,e)|0;mi(l,f[m>>2]|0,b+(i<<2)|0,c+(i<<2)|0);h=h+1|0;if((h|0)>=(k|0))break;i=f[j>>2]|0;g=i;d=f[i>>2]|0;i=f[i+4>>2]|0}u=p;return 1}function Ig(a,b,c){a=a|0;b=b|0;c=c|0;var d=0,e=0,g=0,h=0,i=0,j=0,k=0,l=0;j=u;u=u+16|0;h=j+8|0;g=j+4|0;e=j;if(!c){i=0;u=j;return i|0}f[a>>2]=b;f[h>>2]=0;yj(h,b)|0;a:do if(!(f[h>>2]|0))i=8;else{d=0;while(1){yj(g,f[a>>2]|0)|0;b=ln(44)|0;k=f[g>>2]|0;f[b>>2]=0;f[b+4>>2]=0;f[b+8>>2]=0;f[b+12>>2]=0;n[b+16>>2]=$(1.0);l=b+20|0;f[l>>2]=0;f[l+4>>2]=0;f[l+8>>2]=0;f[l+12>>2]=0;n[b+36>>2]=$(1.0);f[b+40>>2]=k;if(!(Td(a,b)|0))break;f[e>>2]=b;$j(c,e)|0;b=f[e>>2]|0;f[e>>2]=0;if(b|0){Ri(b);ar(b)}d=d+1|0;if(d>>>0>=(f[h>>2]|0)>>>0){i=8;break a}}Ri(b);ar(b);b=0}while(0);if((i|0)==8)b=Td(a,c)|0;l=b;u=j;return l|0}function Jg(a,b){a=a|0;b=b|0;var c=0,d=0,e=0,g=0,i=0,j=0,k=0,l=0,m=0;k=u;u=u+16|0;j=k;l=b+8|0;i=f[l>>2]|0;l=f[l+4>>2]|0;g=b+16|0;d=g;c=f[d>>2]|0;d=Ho(c|0,f[d+4>>2]|0,4,0)|0;e=I;if((l|0)<(e|0)|(l|0)==(e|0)&i>>>0>>0){l=0;u=k;return l|0}i=(f[b>>2]|0)+c|0;i=h[i>>0]|h[i+1>>0]<<8|h[i+2>>0]<<16|h[i+3>>0]<<24;l=g;f[l>>2]=d;f[l+4>>2]=e;if((i|0)<0){l=0;u=k;return l|0}Fe(a+60|0,i,0);xq(j);if(Ff(j,b)|0){if((i|0)>0){c=a+60|0;d=0;e=1;do{e=e^((Tk(j)|0)^1);l=(f[c>>2]|0)+(d>>>5<<2)|0;g=1<<(d&31);m=f[l>>2]|0;f[l>>2]=e?m|g:m&~g;d=d+1|0}while((d|0)<(i|0))}c=hi(a+8|0,b)|0}else c=0;fr(j);m=c;u=k;return m|0}function Kg(a,c){a=a|0;c=c|0;var d=0,e=0,g=0,h=0,i=0,j=0,k=0,l=0,m=0,n=0;l=a+4|0;d=f[l>>2]|0;do if(d|0){m=b[c+11>>0]|0;k=m<<24>>24<0;m=k?f[c+4>>2]|0:m&255;k=k?f[c>>2]|0:c;a=l;a:while(1){c=d;while(1){e=c+16|0;g=b[e+11>>0]|0;h=g<<24>>24<0;g=h?f[c+20>>2]|0:g&255;d=m>>>0>>0?m:g;if((d|0)!=0?(i=rl(h?f[e>>2]|0:e,k,d)|0,(i|0)!=0):0){if((i|0)>=0)break}else j=6;if((j|0)==6?(j=0,g>>>0>=m>>>0):0)break;c=f[c+4>>2]|0;if(!c)break a}d=f[c>>2]|0;if(!d){a=c;break}else a=c}if((a|0)!=(l|0)){d=a+16|0;e=b[d+11>>0]|0;g=e<<24>>24<0;e=g?f[a+20>>2]|0:e&255;c=e>>>0>>0?e:m;if(c|0?(n=rl(k,g?f[d>>2]|0:d,c)|0,n|0):0){if((n|0)<0)break;return a|0}if(m>>>0>=e>>>0){n=a;return n|0}}}while(0);n=l;return n|0}function Lg(a,b){a=a|0;b=b|0;var c=0,d=0,e=0,g=0,i=0,j=0,k=0,l=0,m=0;k=u;u=u+16|0;j=k;l=b+8|0;i=f[l>>2]|0;l=f[l+4>>2]|0;g=b+16|0;d=g;c=f[d>>2]|0;d=Ho(c|0,f[d+4>>2]|0,4,0)|0;e=I;if((l|0)<(e|0)|(l|0)==(e|0)&i>>>0>>0){l=0;u=k;return l|0}i=(f[b>>2]|0)+c|0;i=h[i>>0]|h[i+1>>0]<<8|h[i+2>>0]<<16|h[i+3>>0]<<24;l=g;f[l>>2]=d;f[l+4>>2]=e;if((i|0)<0){l=0;u=k;return l|0}e=a+60|0;Fe(e,i,0);xq(j);if(Ff(j,b)|0){if((i|0)>0){c=0;d=1;do{d=d^((Tk(j)|0)^1);l=(f[e>>2]|0)+(c>>>5<<2)|0;g=1<<(c&31);m=f[l>>2]|0;f[l>>2]=d?m|g:m&~g;c=c+1|0}while((c|0)<(i|0))}c=hi(a+8|0,b)|0}else c=0;fr(j);m=c;u=k;return m|0}function Mg(a,c,d){a=a|0;c=c|0;d=d|0;var e=0,g=0,h=0;if((d|0)>=8192)return Ba(a|0,c|0,d|0)|0;h=a|0;g=a+d|0;if((a&3)==(c&3)){while(a&3){if(!d)return h|0;b[a>>0]=b[c>>0]|0;a=a+1|0;c=c+1|0;d=d-1|0}d=g&-4|0;e=d-64|0;while((a|0)<=(e|0)){f[a>>2]=f[c>>2];f[a+4>>2]=f[c+4>>2];f[a+8>>2]=f[c+8>>2];f[a+12>>2]=f[c+12>>2];f[a+16>>2]=f[c+16>>2];f[a+20>>2]=f[c+20>>2];f[a+24>>2]=f[c+24>>2];f[a+28>>2]=f[c+28>>2];f[a+32>>2]=f[c+32>>2];f[a+36>>2]=f[c+36>>2];f[a+40>>2]=f[c+40>>2];f[a+44>>2]=f[c+44>>2];f[a+48>>2]=f[c+48>>2];f[a+52>>2]=f[c+52>>2];f[a+56>>2]=f[c+56>>2];f[a+60>>2]=f[c+60>>2];a=a+64|0;c=c+64|0}while((a|0)<(d|0)){f[a>>2]=f[c>>2];a=a+4|0;c=c+4|0}}else{d=g-4|0;while((a|0)<(d|0)){b[a>>0]=b[c>>0]|0;b[a+1>>0]=b[c+1>>0]|0;b[a+2>>0]=b[c+2>>0]|0;b[a+3>>0]=b[c+3>>0]|0;a=a+4|0;c=c+4|0}}while((a|0)<(g|0)){b[a>>0]=b[c>>0]|0;a=a+1|0;c=c+1|0}return h|0}function Ng(a){a=a|0;var b=0,c=0,d=0,e=0,g=0,h=0,i=0;h=u;u=u+16|0;d=h+4|0;e=h;g=a+8|0;c=a+84|0;a=f[c>>2]|0;if(!a){c=f[(f[g>>2]|0)+64>>2]|0;c=(f[c+4>>2]|0)-(f[c>>2]|0)>>2;a=(c>>>0)/3|0;if(c>>>0<=2){u=h;return 1}b=0;do{f[e>>2]=b*3;f[d>>2]=f[e>>2];bc(g,d);b=b+1|0}while((b|0)<(a|0));u=h;return 1}else{b=f[a>>2]|0;if((f[a+4>>2]|0)==(b|0)){u=h;return 1}a=0;do{f[e>>2]=f[b+(a<<2)>>2];f[d>>2]=f[e>>2];bc(g,d);a=a+1|0;i=f[c>>2]|0;b=f[i>>2]|0}while(a>>>0<(f[i+4>>2]|0)-b>>2>>>0);u=h;return 1}return 0}function Og(a,b){a=a|0;b=b|0;var c=0,d=0,e=0,g=0,i=0,j=0,k=0,l=0,m=0;k=u;u=u+16|0;j=k;l=b+8|0;i=f[l>>2]|0;l=f[l+4>>2]|0;g=b+16|0;d=g;c=f[d>>2]|0;d=Ho(c|0,f[d+4>>2]|0,4,0)|0;e=I;if((l|0)<(e|0)|(l|0)==(e|0)&i>>>0>>0){l=0;u=k;return l|0}i=(f[b>>2]|0)+c|0;i=h[i>>0]|h[i+1>>0]<<8|h[i+2>>0]<<16|h[i+3>>0]<<24;l=g;f[l>>2]=d;f[l+4>>2]=e;if((i|0)<0){l=0;u=k;return l|0}Fe(a+60|0,i,0);xq(j);if(Ff(j,b)|0){if((i|0)>0){c=a+60|0;d=0;e=1;do{e=e^((Tk(j)|0)^1);l=(f[c>>2]|0)+(d>>>5<<2)|0;g=1<<(d&31);m=f[l>>2]|0;f[l>>2]=e?m|g:m&~g;d=d+1|0}while((d|0)<(i|0))}c=ki(a+8|0,b)|0}else c=0;fr(j);m=c;u=k;return m|0}function Pg(a,b,c,d,e){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;var g=0,i=0;if((b|0)==-2)g=0;else{g=f[d+4>>2]|0;if((c|0)<=-1)Ga(17188,17204,63,17242);i=f[g+8>>2]|0;if(((f[g+12>>2]|0)-i>>2|0)<=(c|0))Ga(17252,17204,64,17242);g=f[i+(c<<2)>>2]|0;do if((Sa[f[(f[d>>2]|0)+8>>2]&255](d)|0)==1){of(a,d,b,c,e,((h[d+36>>0]|0)<<8|(h[d+37>>0]|0))&65535);if(!(f[a>>2]|0)){f[a>>2]=0;break}else return}while(0);b=ln(44)|0;f[b>>2]=1832;f[b+4>>2]=g;g=b+8|0;f[g>>2]=f[e>>2];f[g+4>>2]=f[e+4>>2];f[g+8>>2]=f[e+8>>2];f[g+12>>2]=f[e+12>>2];f[g+16>>2]=f[e+16>>2];f[g+20>>2]=f[e+20>>2];Fj(b+32|0,e+24|0);f[b>>2]=1888;g=b}f[a>>2]=g;return}function Qg(a,b){a=a|0;b=b|0;var c=0,d=0,e=0,g=0,h=0,i=0;i=a+60|0;c=f[i>>2]|0;if(!c){a=0;return a|0}f[c+4>>2]=a+48;if(!(Sa[f[(f[c>>2]|0)+12>>2]&255](c)|0)){a=0;return a|0}g=Sa[f[(f[a>>2]|0)+24>>2]&255](a)|0;a:do if((g|0)>0){h=0;while(1){c=(Sa[f[(f[a>>2]|0)+28>>2]&255](a)|0)+4|0;c=f[c>>2]|0;e=Wa[f[(f[a>>2]|0)+20>>2]&127](a,h)|0;if((e|0)<=-1){d=7;break}d=f[c+8>>2]|0;if(((f[c+12>>2]|0)-d>>2|0)<=(e|0)){d=9;break}c=f[i>>2]|0;h=h+1|0;if(!(Wa[f[(f[c>>2]|0)+8>>2]&127](c,f[d+(e<<2)>>2]|0)|0)){c=0;d=14;break}if((h|0)>=(g|0))break a}if((d|0)==7)Ga(17188,17204,71,17242);else if((d|0)==9)Ga(17252,17204,72,17242);else if((d|0)==14)return c|0}while(0);if(!(Wa[f[(f[a>>2]|0)+36>>2]&127](a,b)|0)){a=0;return a|0}if(!(Wa[f[(f[a>>2]|0)+40>>2]&127](a,b)|0)){a=0;return a|0}a=Sa[f[(f[a>>2]|0)+44>>2]&255](a)|0;return a|0}function Rg(a,b,c){a=a|0;b=b|0;c=c|0;var d=0,e=0,g=0,h=0,i=0,j=0,k=0,l=0,m=0,n=0,o=0;m=u;u=u+48|0;i=m+16|0;e=m;d=m+32|0;j=a+28|0;g=f[j>>2]|0;f[d>>2]=g;k=a+20|0;g=(f[k>>2]|0)-g|0;f[d+4>>2]=g;f[d+8>>2]=b;f[d+12>>2]=c;g=g+c|0;h=a+60|0;f[e>>2]=f[h>>2];f[e+4>>2]=d;f[e+8>>2]=2;b=Ro(za(146,e|0)|0)|0;a:do if((g|0)!=(b|0)){e=2;while(1){if((b|0)<0)break;g=g-b|0;o=f[d+4>>2]|0;n=b>>>0>o>>>0;d=n?d+8|0:d;e=(n<<31>>31)+e|0;o=b-(n?o:0)|0;f[d>>2]=(f[d>>2]|0)+o;n=d+4|0;f[n>>2]=(f[n>>2]|0)-o;f[i>>2]=f[h>>2];f[i+4>>2]=d;f[i+8>>2]=e;b=Ro(za(146,i|0)|0)|0;if((g|0)==(b|0)){l=3;break a}}f[a+16>>2]=0;f[j>>2]=0;f[k>>2]=0;f[a>>2]=f[a>>2]|32;if((e|0)==2)c=0;else c=c-(f[d+4>>2]|0)|0}else l=3;while(0);if((l|0)==3){o=f[a+44>>2]|0;f[a+16>>2]=o+(f[a+48>>2]|0);f[j>>2]=o;f[k>>2]=o}u=m;return c|0}function Sg(a,b){a=a|0;b=b|0;var c=0,d=0,e=0,g=0,i=0,j=0,k=0,l=0,m=0;k=u;u=u+16|0;j=k;l=b+8|0;i=f[l>>2]|0;l=f[l+4>>2]|0;g=b+16|0;d=g;c=f[d>>2]|0;d=Ho(c|0,f[d+4>>2]|0,4,0)|0;e=I;if((l|0)<(e|0)|(l|0)==(e|0)&i>>>0>>0){l=0;u=k;return l|0}i=(f[b>>2]|0)+c|0;i=h[i>>0]|h[i+1>>0]<<8|h[i+2>>0]<<16|h[i+3>>0]<<24;l=g;f[l>>2]=d;f[l+4>>2]=e;if((i|0)<0){l=0;u=k;return l|0}e=a+60|0;Fe(e,i,0);xq(j);if(Ff(j,b)|0){if((i|0)>0){c=0;d=1;do{d=d^((Tk(j)|0)^1);l=(f[e>>2]|0)+(c>>>5<<2)|0;g=1<<(c&31);m=f[l>>2]|0;f[l>>2]=d?m|g:m&~g;c=c+1|0}while((c|0)<(i|0))}c=ki(a+8|0,b)|0}else c=0;fr(j);m=c;u=k;return m|0}function Tg(a,c,d){a=a|0;c=c|0;d=d|0;var e=0,g=0,h=0,i=0,j=0,k=0;k=u;u=u+32|0;j=k+16|0;e=k+12|0;g=k+8|0;h=k+4|0;i=k;d=f[(f[c+4>>2]|0)+(d<<2)>>2]|0;f[a>>2]=0;f[a+4>>2]=0;f[a+8>>2]=0;f[a+12>>2]=0;f[a+16>>2]=0;f[a+20>>2]=0;c=f[c>>2]|0;if(!(b[c+84>>0]|0))d=f[(f[c+68>>2]|0)+(d<<2)>>2]|0;switch(b[c+24>>0]|0){case 1:{f[e>>2]=d;f[j>>2]=f[e>>2];eb(c,j,a)|0;u=k;return}case 2:{f[g>>2]=d;f[j>>2]=f[g>>2];sf(c,j,a)|0;u=k;return}case 3:{f[h>>2]=d;f[j>>2]=f[h>>2];rf(c,j,a)|0;u=k;return}case 4:{f[i>>2]=d;f[j>>2]=f[i>>2];qf(c,j,a)|0;u=k;return}default:{u=k;return}}}function Ug(a,c,d){a=a|0;c=c|0;d=d|0;var e=0,g=0,i=0,j=0,k=0,l=0;do if(c){i=a+8|0;l=i;j=f[l>>2]|0;l=f[l+4>>2]|0;e=a+16|0;g=e;c=f[g>>2]|0;g=Ho(c|0,f[g+4>>2]|0,8,0)|0;k=I;if((l|0)<(k|0)|(l|0)==(k|0)&j>>>0>>0){l=0;return l|0}else{c=(f[a>>2]|0)+c|0;l=c;l=h[l>>0]|h[l+1>>0]<<8|h[l+2>>0]<<16|h[l+3>>0]<<24;c=c+4|0;c=h[c>>0]|h[c+1>>0]<<8|h[c+2>>0]<<16|h[c+3>>0]<<24;g=d;d=g;b[d>>0]=l;b[d+1>>0]=l>>8;b[d+2>>0]=l>>16;b[d+3>>0]=l>>24;g=g+4|0;b[g>>0]=c;b[g+1>>0]=c>>8;b[g+2>>0]=c>>16;b[g+3>>0]=c>>24;g=e;g=Ho(f[g>>2]|0,f[g+4>>2]|0,8,0)|0;d=I;f[e>>2]=g;f[e+4>>2]=d;e=g;g=a;c=i;break}}else{d=a+16|0;e=f[d>>2]|0;d=f[d+4>>2]|0;g=a;c=a+8|0}while(0);b[a+36>>0]=1;k=(f[g>>2]|0)+e|0;l=c;l=Xn(f[l>>2]|0,f[l+4>>2]|0,e|0,d|0)|0;f[a+32>>2]=0;f[a+24>>2]=k;f[a+28>>2]=k+l;l=1;return l|0}function Vg(a,b){a=a|0;b=b|0;var c=0,d=0,e=0,g=0,h=0,i=0,j=0,k=0,l=0;l=u;u=u+16|0;k=l;j=ln(64)|0;i=ln(12)|0;g=f[(f[a+4>>2]|0)+68>>2]|0;f[i+4>>2]=0;f[i>>2]=4344;f[i+8>>2]=g;f[k>>2]=i;ql(j,k);i=a+8|0;g=a+12|0;a=f[g>>2]|0;c=f[i>>2]|0;e=a-c>>2;do if((e|0)<=(b|0)){d=b+1|0;if(d>>>0>e>>>0){ig(i,d-e|0);break}if(d>>>0>>0?(h=c+(d<<2)|0,(a|0)!=(h|0)):0)do{e=a+-4|0;f[g>>2]=e;a=f[e>>2]|0;f[e>>2]=0;if(a|0)Pa[f[(f[a>>2]|0)+4>>2]&127](a);a=f[g>>2]|0}while((a|0)!=(h|0))}while(0);i=(f[i>>2]|0)+(b<<2)|0;a=f[i>>2]|0;f[i>>2]=j;if(a|0)Pa[f[(f[a>>2]|0)+4>>2]&127](a);a=f[k>>2]|0;f[k>>2]=0;if(!a){u=l;return 1}Pa[f[(f[a>>2]|0)+4>>2]&127](a);u=l;return 1}function Wg(a){a=a|0;var b=0,c=0,d=0,e=0,g=0,h=0,i=0;h=u;u=u+16|0;d=h+4|0;e=h;g=a+8|0;c=a+84|0;a=f[c>>2]|0;if(!a){c=f[g>>2]|0;c=(f[c+4>>2]|0)-(f[c>>2]|0)>>2;a=(c>>>0)/3|0;if(c>>>0<=2){u=h;return 1}b=0;do{f[e>>2]=b*3;f[d>>2]=f[e>>2];ec(g,d);b=b+1|0}while((b|0)<(a|0));u=h;return 1}else{b=f[a>>2]|0;if((f[a+4>>2]|0)==(b|0)){u=h;return 1}a=0;do{f[e>>2]=f[b+(a<<2)>>2];f[d>>2]=f[e>>2];ec(g,d);a=a+1|0;i=f[c>>2]|0;b=f[i>>2]|0}while(a>>>0<(f[i+4>>2]|0)-b>>2>>>0);u=h;return 1}return 0}function Xg(a,c,d){a=a|0;c=c|0;d=d|0;var e=0,g=0,h=0,i=0,j=0,k=0;k=u;u=u+32|0;j=k+16|0;e=k+12|0;g=k+8|0;h=k+4|0;i=k;d=f[(f[c+48>>2]|0)+(d<<2)>>2]|0;f[a>>2]=0;f[a+4>>2]=0;f[a+8>>2]=0;c=f[c+44>>2]|0;if(!(b[c+84>>0]|0))d=f[(f[c+68>>2]|0)+(d<<2)>>2]|0;switch(b[c+24>>0]|0){case 1:{f[e>>2]=d;f[j>>2]=f[e>>2];od(c,j,a)|0;u=k;return}case 2:{f[g>>2]=d;f[j>>2]=f[g>>2];wc(c,j,a)|0;u=k;return}case 3:{f[h>>2]=d;f[j>>2]=f[h>>2];Vc(c,j,a)|0;u=k;return}case 4:{f[i>>2]=d;f[j>>2]=f[i>>2];Nc(c,j,a)|0;u=k;return}default:{u=k;return}}}function Yg(a,c,d){a=a|0;c=c|0;d=d|0;var e=0,g=0,h=0,i=0,j=0,k=0,l=0,m=0,n=0;l=u;u=u+16|0;k=l;i=a+4|0;f[i>>2]=0;if(!c){u=l;return}h=a+8|0;e=f[h>>2]|0;if(e<<5>>>0>>0){f[k>>2]=0;j=k+4|0;f[j>>2]=0;g=k+8|0;f[g>>2]=0;if((c|0)<0){Lp(a);e=f[h>>2]|0}m=e<<6;n=c+31&-32;ri(k,e<<5>>>0<1073741823?(m>>>0>>0?n:m):2147483647);e=f[a>>2]|0;f[a>>2]=f[k>>2];f[k>>2]=e;k=f[i>>2]|0;f[i>>2]=c;f[j>>2]=k;k=f[h>>2]|0;f[h>>2]=f[g>>2];f[g>>2]=k;if(e|0)ar(e)}else f[i>>2]=c;a=f[a>>2]|0;g=a;h=c>>>5;e=h<<2;if(!(b[d>>0]|0)){ej(a|0,0,e|0)|0;e=c-(h<<5)|0;a=g+(h<<2)|0;if(!e){u=l;return}f[a>>2]=f[a>>2]&~(-1>>>(32-e|0));u=l;return}else{ej(a|0,-1,e|0)|0;e=c-(h<<5)|0;a=g+(h<<2)|0;if(!e){u=l;return}f[a>>2]=f[a>>2]|-1>>>(32-e|0);u=l;return}}function Zg(a){a=a|0;var c=0,d=0,e=0,g=0,h=0,i=0,j=0;i=a+12|0;h=f[a>>2]|0;j=a+8|0;c=f[j>>2]|0;d=(c|0)<0;if(!(b[i>>0]|0)){do if(!d){c=(((c>>>0)%3|0|0)==0?2:-1)+c|0;if((c|0)>=0){c=f[(f[h+12>>2]|0)+(c<<2)>>2]|0;if((c|0)>=0)if(!((c>>>0)%3|0)){c=c+2|0;break}else{c=c+-1|0;break}}}while(0);f[j>>2]=c;return}e=c+1|0;if(!d){c=((e|0)%3|0|0)==0?c+-2|0:e;if((c|0)>=0){c=f[(f[h+12>>2]|0)+(c<<2)>>2]|0;d=c+1|0;if((c|0)>=0){c=((d|0)%3|0|0)==0?c+-2|0:d;f[j>>2]=c;if((c|0)>=0){if((c|0)!=(f[a+4>>2]|0))return;f[j>>2]=-1073741824;return}}else g=5}else g=5}else g=5;if((g|0)==5)f[j>>2]=c;c=f[a+4>>2]|0;do if((c|0)>=0){c=(((c>>>0)%3|0|0)==0?2:-1)+c|0;if((c|0)>=0){c=f[(f[h+12>>2]|0)+(c<<2)>>2]|0;if((c|0)>=0)if(!((c>>>0)%3|0)){c=c+2|0;break}else{c=c+-1|0;break}}}while(0);f[j>>2]=c;b[i>>0]=0;return}function _g(a,c,d){a=a|0;c=c|0;d=d|0;var e=0,g=0,h=0,i=0,j=0,k=0;k=u;u=u+32|0;j=k+16|0;e=k+12|0;g=k+8|0;h=k+4|0;i=k;d=f[(f[c+64>>2]|0)+(d<<2)>>2]|0;f[a>>2]=0;f[a+4>>2]=0;f[a+8>>2]=0;c=f[c+60>>2]|0;if(!(b[c+84>>0]|0))d=f[(f[c+68>>2]|0)+(d<<2)>>2]|0;switch(b[c+24>>0]|0){case 1:{f[e>>2]=d;f[j>>2]=f[e>>2];od(c,j,a)|0;u=k;return}case 2:{f[g>>2]=d;f[j>>2]=f[g>>2];wc(c,j,a)|0;u=k;return}case 3:{f[h>>2]=d;f[j>>2]=f[h>>2];Vc(c,j,a)|0;u=k;return}case 4:{f[i>>2]=d;f[j>>2]=f[i>>2];Nc(c,j,a)|0;u=k;return}default:{u=k;return}}}function $g(a){a=a|0;var b=0,c=0,d=0,e=0,g=0;f[a>>2]=1484;b=f[a+56>>2]|0;if(b|0){d=a+60|0;c=f[d>>2]|0;if((c|0)!=(b|0))f[d>>2]=c+(~((c+-4-b|0)>>>2)<<2);ar(b)}c=f[a+44>>2]|0;if(c|0){d=a+48|0;b=f[d>>2]|0;if((b|0)!=(c|0))f[d>>2]=b+(~((b+-4-c|0)>>>2)<<2);ar(c)}b=f[a+32>>2]|0;if(b|0){d=a+36|0;c=f[d>>2]|0;if((c|0)!=(b|0))f[d>>2]=c+(~((c+-4-b|0)>>>2)<<2);ar(b)}b=f[a+20>>2]|0;if(b|0){d=a+24|0;c=f[d>>2]|0;if((c|0)!=(b|0))f[d>>2]=c+(~((c+-4-b|0)>>>2)<<2);ar(b)}fi(a+8|0);a=a+4|0;e=f[a>>2]|0;f[a>>2]=0;if(!e)return;d=e+40|0;b=f[d>>2]|0;if(b|0){a=e+44|0;c=f[a>>2]|0;if((c|0)!=(b|0)){do{g=c+-4|0;f[a>>2]=g;c=f[g>>2]|0;f[g>>2]=0;if(c|0){Ri(c);ar(c)}c=f[a>>2]|0}while((c|0)!=(b|0));b=f[d>>2]|0}ar(b)}Ri(e);ar(e);return}function ah(a,c,d,e,g){a=a|0;c=c|0;d=d|0;e=e|0;g=g|0;var h=0,i=0,j=0,k=0;do if(!(wp(a,f[c+8>>2]|0,g)|0)){h=a+8|0;if(!(wp(a,f[c>>2]|0,g)|0)){j=f[h>>2]|0;Oa[f[(f[j>>2]|0)+24>>2]&3](j,c,d,e,g);break}a=c+32|0;if((f[c+16>>2]|0)!=(d|0)?(i=c+20|0,(f[i>>2]|0)!=(d|0)):0){f[a>>2]=e;e=c+44|0;if((f[e>>2]|0)==4)break;a=c+52|0;b[a>>0]=0;k=c+53|0;b[k>>0]=0;h=f[h>>2]|0;Va[f[(f[h>>2]|0)+20>>2]&3](h,c,d,d,1,g);if(b[k>>0]|0)if(!(b[a>>0]|0)){a=3;j=11}else a=3;else{a=4;j=11}if((j|0)==11){f[i>>2]=d;k=c+40|0;f[k>>2]=(f[k>>2]|0)+1;if((f[c+36>>2]|0)==1?(f[c+24>>2]|0)==2:0)b[c+54>>0]=1}f[e>>2]=a;break}if((e|0)==1)f[a>>2]=1}else Lm(0,c,d,e);while(0);return}function bh(a,b,c,d,e){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;var g=0,i=0;if((b|0)==-2)g=0;else{g=f[d+4>>2]|0;if((c|0)<=-1)Ga(17188,17204,63,17242);i=f[g+8>>2]|0;if(((f[g+12>>2]|0)-i>>2|0)<=(c|0))Ga(17252,17204,64,17242);g=f[i+(c<<2)>>2]|0;do if((Sa[f[(f[d>>2]|0)+8>>2]&255](d)|0)==1){jf(a,d,b,c,e,((h[d+36>>0]|0)<<8|(h[d+37>>0]|0))&65535);if(!(f[a>>2]|0)){f[a>>2]=0;break}else return}while(0);b=ln(28)|0;f[b+4>>2]=g;g=b+12|0;e=e+4|0;f[g>>2]=f[e>>2];f[g+4>>2]=f[e+4>>2];f[g+8>>2]=f[e+8>>2];f[g+12>>2]=f[e+12>>2];f[b+8>>2]=2764;f[b>>2]=2784;g=b}f[a>>2]=g;return}function ch(a,b,c){a=a|0;b=b|0;c=c|0;var d=0,e=0,g=0,h=0,i=0,j=0,k=0,l=0;k=a+8|0;e=f[k>>2]|0;l=a+4|0;h=f[l>>2]|0;g=h;if(e-h>>2>>>0>=b>>>0){d=g;e=b;while(1){f[d>>2]=f[c>>2];e=e+-1|0;if(!e)break;else d=d+4|0}f[l>>2]=g+(b<<2);return}d=f[a>>2]|0;g=(h-d>>2)+b|0;if(g>>>0>1073741823){Lp(a);d=f[a>>2]|0;e=f[k>>2]|0;j=f[l>>2]|0}else j=h;i=e-d|0;e=i>>1;g=i>>2>>>0<536870911?(e>>>0>>0?g:e):1073741823;e=j-d>>2;do if(g)if(g>>>0>1073741823){b=Ia(4)|0;Eq(b);sa(b|0,1344,125)}else{h=ln(g<<2)|0;break}else h=0;while(0);i=h+(e<<2)|0;h=h+(g<<2)|0;e=i;g=b;while(1){f[e>>2]=f[c>>2];g=g+-1|0;if(!g)break;else e=e+4|0}g=j-d|0;e=i+(0-(g>>2)<<2)|0;if((g|0)>0)Mg(e|0,d|0,g|0)|0;f[a>>2]=e;f[l>>2]=i+(b<<2);f[k>>2]=h;if(!d)return;ar(d);return}function dh(a,b,c,d,e,g){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;g=g|0;var h=0,i=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0;p=u;u=u+16|0;n=p+4|0;m=p;o=a+44|0;f[a+48>>2]=g;j=a+40|0;h=f[j>>2]|0;g=f[h+4>>2]|0;d=f[h>>2]|0;l=g-d|0;k=l>>2;if((l|0)<=0){u=p;return 1}l=a+8|0;i=a+52|0;a=g;g=0;while(1){if(a-d>>2>>>0<=g>>>0){Kp(h);d=f[h>>2]|0}f[m>>2]=f[d+(g<<2)>>2];f[n>>2]=f[m>>2];Pb(o,n,c,g);a=X(g,e)|0;ji(l,i,b+(a<<2)|0,c+(a<<2)|0);g=g+1|0;if((g|0)>=(k|0))break;h=f[j>>2]|0;d=f[h>>2]|0;a=f[h+4>>2]|0}u=p;return 1}function eh(a,b){a=a|0;b=b|0;var c=0,d=0,e=0,g=0,h=0,i=0,j=0;i=a+8|0;e=f[i>>2]|0;j=a+4|0;c=f[j>>2]|0;if(e-c>>3>>>0>=b>>>0){do{a=c;f[a>>2]=0;f[a+4>>2]=0;c=(f[j>>2]|0)+8|0;f[j>>2]=c;b=b+-1|0}while((b|0)!=0);return}d=f[a>>2]|0;g=(c-d>>3)+b|0;if(g>>>0>536870911){Lp(a);d=f[a>>2]|0;e=f[i>>2]|0;c=f[j>>2]|0}h=e-d|0;e=h>>2;e=h>>3>>>0<268435455?(e>>>0>>0?g:e):536870911;c=c-d>>3;do if(e)if(e>>>0>536870911){j=Ia(4)|0;Eq(j);sa(j|0,1344,125)}else{d=ln(e<<3)|0;break}else d=0;while(0);h=d+(c<<3)|0;g=d+(e<<3)|0;c=h;e=h;do{d=c;f[d>>2]=0;f[d+4>>2]=0;c=e+8|0;e=c;b=b+-1|0}while((b|0)!=0);c=f[a>>2]|0;d=(f[j>>2]|0)-c|0;b=h+(0-(d>>3)<<3)|0;if((d|0)>0)Mg(b|0,c|0,d|0)|0;f[a>>2]=b;f[j>>2]=e;f[i>>2]=g;if(!c)return;ar(c);return}function fh(a,b,c,d){a=a|0;b=b|0;c=c|0;d=d|0;var e=0,g=0,h=0,i=0;h=u;u=u+16|0;e=h+8|0;g=h+4|0;i=h;f[i>>2]=f[b>>2];f[e>>2]=f[i>>2];b=ld(a,e,g,c)|0;c=f[b>>2]|0;if(c|0){i=c;u=h;return i|0}e=ln(40)|0;ml(e+16|0,d);ml(e+28|0,d+12|0);c=f[g>>2]|0;f[e>>2]=0;f[e+4>>2]=0;f[e+8>>2]=c;f[b>>2]=e;c=f[f[a>>2]>>2]|0;if(!c)c=e;else{f[a>>2]=c;c=f[b>>2]|0}Me(f[a+4>>2]|0,c);i=a+8|0;f[i>>2]=(f[i>>2]|0)+1;i=e;u=h;return i|0}function gh(a,b){a=a|0;b=b|0;var c=0,d=0,e=0;e=u;u=u+32|0;c=e+16|0;d=e;switch(b<<24>>24){case 0:{b=ln(44)|0;c=b;d=c+44|0;do{f[c>>2]=0;c=c+4|0}while((c|0)<(d|0));qm(b);f[b>>2]=4300;f[a>>2]=0;f[a+4>>2]=0;f[a+8>>2]=0;f[a+12>>2]=0;f[a+16>>2]=b;u=e;return}case 1:{b=ln(44)|0;c=b;d=c+44|0;do{f[c>>2]=0;c=c+4|0}while((c|0)<(d|0));qm(b);f[b>>2]=4368;f[a>>2]=0;f[a+4>>2]=0;f[a+8>>2]=0;f[a+12>>2]=0;f[a+16>>2]=b;u=e;return}default:{f[d>>2]=0;f[d+4>>2]=0;f[d+8>>2]=0;Pj(d,19217,28);f[c>>2]=-1;b=c+4|0;ml(b,d);f[a>>2]=f[c>>2];ml(a+4|0,b);f[a+16>>2]=0;Lo(b);Lo(d);u=e;return}}}function hh(a,b,c,d,e){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;var g=0,i=0;if((b|0)==-2)g=0;else{g=f[d+4>>2]|0;if((c|0)<=-1)Ga(17188,17204,63,17242);i=f[g+8>>2]|0;if(((f[g+12>>2]|0)-i>>2|0)<=(c|0))Ga(17252,17204,64,17242);g=f[i+(c<<2)>>2]|0;do if((Sa[f[(f[d>>2]|0)+8>>2]&255](d)|0)==1){lf(a,d,b,c,e,((h[d+36>>0]|0)<<8|(h[d+37>>0]|0))&65535);if(!(f[a>>2]|0)){f[a>>2]=0;break}else return}while(0);b=ln(28)|0;f[b+4>>2]=g;g=b+12|0;e=e+4|0;f[g>>2]=f[e>>2];f[g+4>>2]=f[e+4>>2];f[g+8>>2]=f[e+8>>2];f[g+12>>2]=f[e+12>>2];f[b+8>>2]=2744;f[b>>2]=3512;g=b}f[a>>2]=g;return}function ih(a,b){a=a|0;b=b|0;var c=0,d=0,e=0,g=0,h=0,i=0,j=0,k=0;j=a+8|0;d=f[j>>2]|0;k=a+4|0;g=f[k>>2]|0;e=g;if(d-g>>2>>>0>=b>>>0){c=e;d=b;while(1){f[c>>2]=1;d=d+-1|0;if(!d)break;else c=c+4|0}f[k>>2]=e+(b<<2);return}c=f[a>>2]|0;e=(g-c>>2)+b|0;if(e>>>0>1073741823){Lp(a);c=f[a>>2]|0;d=f[j>>2]|0;i=f[k>>2]|0}else i=g;h=d-c|0;d=h>>1;e=h>>2>>>0<536870911?(d>>>0>>0?e:d):1073741823;d=i-c>>2;do if(e)if(e>>>0>1073741823){b=Ia(4)|0;Eq(b);sa(b|0,1344,125)}else{g=ln(e<<2)|0;break}else g=0;while(0);h=g+(d<<2)|0;g=g+(e<<2)|0;d=h;e=b;while(1){f[d>>2]=1;e=e+-1|0;if(!e)break;else d=d+4|0}e=i-c|0;d=h+(0-(e>>2)<<2)|0;if((e|0)>0)Mg(d|0,c|0,e|0)|0;f[a>>2]=d;f[k>>2]=h+(b<<2);f[j>>2]=g;if(!c)return;ar(c);return}function jh(a,b,c,d,e,g){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;g=g|0;var h=0,i=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0;p=u;u=u+16|0;n=p+4|0;m=p;o=a+44|0;f[a+48>>2]=g;j=a+40|0;h=f[j>>2]|0;g=f[h+4>>2]|0;d=f[h>>2]|0;l=g-d|0;k=l>>2;if((l|0)<=0){u=p;return 1}l=a+8|0;i=a+52|0;a=g;g=0;while(1){if(a-d>>2>>>0<=g>>>0){Kp(h);d=f[h>>2]|0}f[m>>2]=f[d+(g<<2)>>2];f[n>>2]=f[m>>2];Nb(o,n,c,g);a=X(g,e)|0;ji(l,i,b+(a<<2)|0,c+(a<<2)|0);g=g+1|0;if((g|0)>=(k|0))break;h=f[j>>2]|0;d=f[h>>2]|0;a=f[h+4>>2]|0}u=p;return 1}function kh(a,b,c,d,e,g){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;g=g|0;var h=0,i=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0;p=u;u=u+16|0;n=p+4|0;m=p;o=a+44|0;f[a+48>>2]=g;j=a+40|0;h=f[j>>2]|0;g=f[h+4>>2]|0;d=f[h>>2]|0;l=g-d|0;k=l>>2;if((l|0)<=0){u=p;return 1}l=a+8|0;i=a+52|0;a=g;g=0;while(1){if(a-d>>2>>>0<=g>>>0){Kp(h);d=f[h>>2]|0}f[m>>2]=f[d+(g<<2)>>2];f[n>>2]=f[m>>2];Pb(o,n,c,g);a=X(g,e)|0;mi(l,i,b+(a<<2)|0,c+(a<<2)|0);g=g+1|0;if((g|0)>=(k|0))break;h=f[j>>2]|0;d=f[h>>2]|0;a=f[h+4>>2]|0}u=p;return 1}function lh(a){a=a|0;var c=0,d=0,e=0,g=0,h=0,i=0,j=0,k=0,l=0;k=a+8|0;c=f[k>>2]|0;l=a+16|0;if(b[c+84>>0]|0){l=f[l>>2]|0;return l|0}d=f[l>>2]|0;a=d+84|0;if(!(b[a>>0]|0)){l=f[l>>2]|0;return l|0}i=(f[c+72>>2]|0)-(f[c+68>>2]|0)>>2;b[a>>0]=0;h=d+68|0;e=d+72|0;d=f[e>>2]|0;a=f[h>>2]|0;g=d-a>>2;if(i>>>0<=g>>>0){if(i>>>0>>0?(j=a+(i<<2)|0,(d|0)!=(j|0)):0)f[e>>2]=d+(~((d+-4-j|0)>>>2)<<2)}else{ch(h,i-g|0,1760);c=f[k>>2]|0}if(b[c+84>>0]|0){l=f[l>>2]|0;return l|0}k=f[c+68>>2]|0;g=k;k=(f[c+72>>2]|0)-k|0;d=k>>2;if((k|0)<=0){l=f[l>>2]|0;return l|0}c=f[l>>2]|0;e=(b[c+84>>0]|0)==0;c=c+68|0;a=0;while(1){if(!e){c=13;break}f[(f[c>>2]|0)+(a<<2)>>2]=f[g+(a<<2)>>2];a=a+1|0;if((a|0)>=(d|0)){c=14;break}}if((c|0)==13)Ga(18230,18249,91,18290);else if((c|0)==14){l=f[l>>2]|0;return l|0}return 0}function mh(a,b){a=a|0;b=b|0;var c=0,d=0,e=0,g=0,h=0,i=0,j=0,k=0,l=0,m=0;m=a+4|0;c=f[m>>2]|0;d=f[a>>2]|0;g=((c-d|0)/12|0)+1|0;if(g>>>0>357913941){Lp(a);c=f[m>>2]|0;d=f[a>>2]|0}k=d;e=c;l=a+8|0;j=((f[l>>2]|0)-d|0)/12|0;i=j<<1;g=j>>>0<178956970?(i>>>0>>0?g:i):357913941;i=(c-d|0)/12|0;do if(g)if(g>>>0>357913941){a=Ia(4)|0;Eq(a);sa(a|0,1344,125)}else{h=ln(g*12|0)|0;break}else h=0;while(0);c=h+(i*12|0)|0;j=h+(g*12|0)|0;f[c>>2]=f[b>>2];f[h+(i*12|0)+4>>2]=f[b+4>>2];f[h+(i*12|0)+8>>2]=f[b+8>>2];g=c+12|0;if((e|0)!=(k|0))do{b=e;e=e+-12|0;f[c+-12>>2]=f[e>>2];f[c+-8>>2]=f[b+-8>>2];f[c+-4>>2]=f[b+-4>>2];c=c+-12|0}while((e|0)!=(k|0));f[a>>2]=c;f[m>>2]=g;f[l>>2]=j;if(!d)return;ar(d);return}function nh(a){a=a|0;var b=0,c=0,d=0,e=0,g=0,h=0;b=f[a+140>>2]|0;if(b|0){d=a+144|0;c=f[d>>2]|0;if((c|0)!=(b|0))f[d>>2]=c+(~((c+-4-b|0)>>>2)<<2);ar(b)}g=a+128|0;b=f[g>>2]|0;if(b|0){h=a+132|0;c=f[h>>2]|0;if((c|0)!=(b|0)){do{d=c+-12|0;f[h>>2]=d;e=f[d>>2]|0;if(!e)c=d;else{d=c+-8|0;c=f[d>>2]|0;if((c|0)!=(e|0))f[d>>2]=c+(~((c+-4-e|0)>>>2)<<2);ar(e);c=f[h>>2]|0}}while((c|0)!=(b|0));b=f[g>>2]|0}ar(b)}b=f[a+100>>2]|0;if(b|0){d=a+104|0;c=f[d>>2]|0;if((c|0)!=(b|0))f[d>>2]=c+(~((c+-4-b|0)>>>2)<<2);ar(b)}h=a+80|0;c=f[h>>2]|0;f[h>>2]=0;if(!c){h=a+64|0;fr(h);a=a+24|0;fr(a);return}d=c+-4|0;b=f[d>>2]|0;if(b|0){b=c+(b<<4)|0;do{b=b+-16|0;fr(b)}while((b|0)!=(c|0))}_q(d);h=a+64|0;fr(h);a=a+24|0;fr(a);return}function oh(a,b,c,d,e,g){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;g=g|0;var h=0,i=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0;p=u;u=u+16|0;n=p+4|0;m=p;o=a+44|0;f[a+48>>2]=g;j=a+40|0;h=f[j>>2]|0;g=f[h+4>>2]|0;d=f[h>>2]|0;l=g-d|0;k=l>>2;if((l|0)<=0){u=p;return 1}l=a+8|0;i=a+52|0;a=g;g=0;while(1){if(a-d>>2>>>0<=g>>>0){Kp(h);d=f[h>>2]|0}f[m>>2]=f[d+(g<<2)>>2];f[n>>2]=f[m>>2];Nb(o,n,c,g);a=X(g,e)|0;mi(l,i,b+(a<<2)|0,c+(a<<2)|0);g=g+1|0;if((g|0)>=(k|0))break;h=f[j>>2]|0;d=f[h>>2]|0;a=f[h+4>>2]|0}u=p;return 1}function ph(a,b){a=a|0;b=b|0;var c=0,d=0,e=0,g=0,h=0,i=0,j=0;h=u;u=u+16|0;c=h;i=f[(f[a>>2]|0)+8>>2]|0;g=a+8|0;e=a+12|0;d=(f[e>>2]|0)-(f[g>>2]|0)>>2;j=f[b>>2]|0;f[b>>2]=0;f[c>>2]=j;Ta[i&7](a,d,c);d=f[c>>2]|0;f[c>>2]=0;if(!d){i=f[e>>2]|0;j=f[g>>2]|0;j=i-j|0;j=j>>2;j=j+-1|0;u=h;return j|0}j=d+88|0;b=f[j>>2]|0;f[j>>2]=0;if(b|0){a=f[b+8>>2]|0;if(a|0){c=b+12|0;if((f[c>>2]|0)!=(a|0))f[c>>2]=a;ar(a)}ar(b)}b=f[d+68>>2]|0;if(b|0){c=d+72|0;a=f[c>>2]|0;if((a|0)!=(b|0))f[c>>2]=a+(~((a+-4-b|0)>>>2)<<2);ar(b)}j=d+64|0;b=f[j>>2]|0;f[j>>2]=0;if(b|0){a=f[b>>2]|0;if(a|0){c=b+4|0;if((f[c>>2]|0)!=(a|0))f[c>>2]=a;ar(a)}ar(b)}ar(d);i=f[e>>2]|0;j=f[g>>2]|0;j=i-j|0;j=j>>2;j=j+-1|0;u=h;return j|0}function qh(a,b){a=a|0;b=b|0;var c=0,d=0,e=0,g=0,i=0;if((Sa[f[(f[b>>2]|0)+20>>2]&255](b)|0)<=0){b=1;return b|0}g=a+4|0;i=0;while(1){e=f[(f[g>>2]|0)+4>>2]|0;e=mm(e,Wa[f[(f[b>>2]|0)+24>>2]&127](b,i)|0)|0;if((e|0)==-1){a=0;c=12;break}a=f[g>>2]|0;d=f[(f[b>>2]|0)+28>>2]|0;if(((h[a+36>>0]|0)<<8&65535)<512){a=f[a+4>>2]|0;if((e|0)<=-1){c=6;break}c=f[a+8>>2]|0;if(((f[a+12>>2]|0)-c>>2|0)<=(e|0)){c=8;break}if(!(Wa[d&127](b,f[c+(e<<2)>>2]|0)|0)){a=0;c=12;break}}else{e=hl(a,e)|0;if(!(Wa[d&127](b,e)|0)){a=0;c=12;break}}i=i+1|0;if((i|0)>=(Sa[f[(f[b>>2]|0)+20>>2]&255](b)|0)){a=1;c=12;break}}if((c|0)==6)Ga(17188,17204,71,17242);else if((c|0)==8)Ga(17252,17204,72,17242);else if((c|0)==12)return a|0;return 0}function rh(a,c,d){a=a|0;c=c|0;d=d|0;var e=0,g=0,h=0,i=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0;r=u;u=u+224|0;m=r+120|0;q=r+80|0;p=r;o=r+136|0;e=q;g=e+40|0;do{f[e>>2]=0;e=e+4|0}while((e|0)<(g|0));f[m>>2]=f[d>>2];if((zb(0,c,m,p,q)|0)<0)d=-1;else{if((f[a+76>>2]|0)>-1)n=gr(a)|0;else n=0;d=f[a>>2]|0;l=d&32;if((b[a+74>>0]|0)<1)f[a>>2]=d&-33;h=a+48|0;if(!(f[h>>2]|0)){g=a+44|0;d=f[g>>2]|0;f[g>>2]=o;i=a+28|0;f[i>>2]=o;k=a+20|0;f[k>>2]=o;f[h>>2]=80;j=a+16|0;f[j>>2]=o+80;e=zb(a,c,m,p,q)|0;if(d){Na[f[a+36>>2]&31](a,0,0)|0;e=(f[k>>2]|0)==0?-1:e;f[g>>2]=d;f[h>>2]=0;f[j>>2]=0;f[i>>2]=0;f[k>>2]=0}}else e=zb(a,c,m,p,q)|0;d=f[a>>2]|0;f[a>>2]=d|l;if(n|0)fr(a);d=(d&32|0)==0?e:-1}u=r;return d|0}function sh(a,b){a=a|0;b=b|0;var c=0,d=0,e=0,g=0,i=0,j=0,k=0,l=0,m=0;m=u;u=u+16|0;l=m;if(!(Yd(a,b)|0)){a=0;u=m;return a|0}i=b+8|0;j=f[i>>2]|0;i=f[i+4>>2]|0;g=b+16|0;d=g;c=f[d>>2]|0;d=Ho(c|0,f[d+4>>2]|0,4,0)|0;e=I;if((i|0)<(e|0)|(i|0)==(e|0)&j>>>0>>0){a=0;u=m;return a|0}c=(f[b>>2]|0)+c|0;c=h[c>>0]|h[c+1>>0]<<8|h[c+2>>0]<<16|h[c+3>>0]<<24;j=g;f[j>>2]=d;f[j+4>>2]=e;if((c|0)<0){a=0;u=m;return a|0}j=a+96|0;g=(f[j>>2]|0)+c|0;f[j>>2]=g;j=a+100|0;f[l>>2]=0;e=a+104|0;d=f[e>>2]|0;c=f[j>>2]|0;i=d-c>>2;if(g>>>0<=i>>>0){if(g>>>0>>0?(k=c+(g<<2)|0,(d|0)!=(k|0)):0)f[e>>2]=d+(~((d+-4-k|0)>>>2)<<2)}else ch(j,g-i|0,l);a=Ff(a+112|0,b)|0;u=m;return a|0}function th(a,b,c){a=a|0;b=b|0;c=c|0;var d=0,e=0,g=0,h=0,i=0,j=0,k=0;g=a+4|0;e=f[g>>2]|0;d=f[a>>2]|0;i=e-d>>2;if(i>>>0>=1048576){if((i|0)!=1048576?(h=d+4194304|0,(e|0)!=(h|0)):0)f[g>>2]=e+(~((e+-4-h|0)>>>2)<<2)}else ui(a,1048576-i|0);h=a+12|0;g=a+16|0;e=f[g>>2]|0;d=f[h>>2]|0;i=e-d>>3;if(i>>>0>=c>>>0){if(i>>>0>c>>>0?(j=d+(c<<3)|0,(e|0)!=(j|0)):0)f[g>>2]=e+(~((e+-8-j|0)>>>3)<<3);if(!c){k=0;return k|0}}else eh(h,c-i|0);e=f[h>>2]|0;h=0;i=0;do{j=b+(i<<2)|0;f[e+(i<<3)>>2]=f[j>>2];f[e+(i<<3)+4>>2]=h;d=h;h=(f[j>>2]|0)+h|0;if(h>>>0>1048576){d=0;k=19;break}if(d>>>0>>0){g=f[a>>2]|0;do{f[g+(d<<2)>>2]=i;d=d+1|0}while((d|0)!=(h|0))}i=i+1|0}while(i>>>0>>0);if((k|0)==19)return d|0;k=(h|0)==1048576;return k|0}function uh(a,c,e,g){a=a|0;c=c|0;e=e|0;g=g|0;var h=0,i=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0;p=u;u=u+64|0;o=p;m=f[a>>2]|0;n=a+(f[m+-8>>2]|0)|0;m=f[m+-4>>2]|0;f[o>>2]=e;f[o+4>>2]=a;f[o+8>>2]=c;f[o+12>>2]=g;g=o+16|0;a=o+20|0;h=o+24|0;j=o+28|0;i=o+32|0;c=o+40|0;k=g;l=k+36|0;do{f[k>>2]=0;k=k+4|0}while((k|0)<(l|0));d[g+36>>1]=0;b[g+38>>0]=0;a:do if(wp(m,e,0)|0){f[o+48>>2]=1;Va[f[(f[m>>2]|0)+20>>2]&3](m,o,n,n,1,0);g=(f[h>>2]|0)==1?n:0}else{Oa[f[(f[m>>2]|0)+24>>2]&3](m,o,n,1,0);switch(f[o+36>>2]|0){case 0:{g=(f[c>>2]|0)==1&(f[j>>2]|0)==1&(f[i>>2]|0)==1?f[a>>2]|0:0;break a}case 1:break;default:{g=0;break a}}if((f[h>>2]|0)!=1?!((f[c>>2]|0)==0&(f[j>>2]|0)==1&(f[i>>2]|0)==1):0){g=0;break}g=f[g>>2]|0}while(0);u=p;return g|0}function vh(a,b){a=a|0;b=b|0;var c=0,d=0,e=0,g=0,h=0,i=0,j=0,k=0,l=0,m=0,n=0,o=0;o=u;u=u+16|0;n=o;m=b+4|0;c=f[m>>2]|0;d=f[b>>2]|0;k=((c-d|0)/12|0)*3|0;i=a+4|0;h=f[i>>2]|0;e=f[a>>2]|0;l=h-e>>2;g=d;if(k>>>0<=l>>>0){if(k>>>0>>0?(j=e+(k<<2)|0,(h|0)!=(j|0)):0)f[i>>2]=h+(~((h+-4-j|0)>>>2)<<2)}else{ui(a,k-l|0);g=f[b>>2]|0;d=g;c=f[m>>2]|0}if((c-d|0)>0){e=f[a>>2]|0;d=(c-g|0)/12|0;c=0;do{m=c*3|0;f[e+(m<<2)>>2]=f[g+(c*12|0)>>2];f[e+(m+1<<2)>>2]=f[g+(c*12|0)+4>>2];f[e+(m+2<<2)>>2]=f[g+(c*12|0)+8>>2];c=c+1|0}while((c|0)<(d|0))}f[n>>2]=-1;if(!(Ib(a,n)|0)){a=0;u=o;return a|0}xb(a,f[n>>2]|0)|0;a=1;u=o;return a|0}function wh(a,b,c){a=a|0;b=b|0;c=c|0;var d=0,e=0,g=0,h=0,i=0,j=0,k=0;g=a+4|0;e=f[g>>2]|0;d=f[a>>2]|0;i=e-d>>2;if(i>>>0>=524288){if((i|0)!=524288?(h=d+2097152|0,(e|0)!=(h|0)):0)f[g>>2]=e+(~((e+-4-h|0)>>>2)<<2)}else ui(a,524288-i|0);h=a+12|0;g=a+16|0;e=f[g>>2]|0;d=f[h>>2]|0;i=e-d>>3;if(i>>>0>=c>>>0){if(i>>>0>c>>>0?(j=d+(c<<3)|0,(e|0)!=(j|0)):0)f[g>>2]=e+(~((e+-8-j|0)>>>3)<<3);if(!c){k=0;return k|0}}else eh(h,c-i|0);e=f[h>>2]|0;h=0;i=0;do{j=b+(i<<2)|0;f[e+(i<<3)>>2]=f[j>>2];f[e+(i<<3)+4>>2]=h;d=h;h=(f[j>>2]|0)+h|0;if(h>>>0>524288){d=0;k=19;break}if(d>>>0>>0){g=f[a>>2]|0;do{f[g+(d<<2)>>2]=i;d=d+1|0}while((d|0)!=(h|0))}i=i+1|0}while(i>>>0>>0);if((k|0)==19)return d|0;k=(h|0)==524288;return k|0}function xh(a,b,c){a=a|0;b=b|0;c=c|0;var d=0,e=0,g=0,h=0,i=0,j=0,k=0;g=a+4|0;e=f[g>>2]|0;d=f[a>>2]|0;i=e-d>>2;if(i>>>0>=262144){if((i|0)!=262144?(h=d+1048576|0,(e|0)!=(h|0)):0)f[g>>2]=e+(~((e+-4-h|0)>>>2)<<2)}else ui(a,262144-i|0);h=a+12|0;g=a+16|0;e=f[g>>2]|0;d=f[h>>2]|0;i=e-d>>3;if(i>>>0>=c>>>0){if(i>>>0>c>>>0?(j=d+(c<<3)|0,(e|0)!=(j|0)):0)f[g>>2]=e+(~((e+-8-j|0)>>>3)<<3);if(!c){k=0;return k|0}}else eh(h,c-i|0);e=f[h>>2]|0;h=0;i=0;do{j=b+(i<<2)|0;f[e+(i<<3)>>2]=f[j>>2];f[e+(i<<3)+4>>2]=h;d=h;h=(f[j>>2]|0)+h|0;if(h>>>0>262144){d=0;k=19;break}if(d>>>0>>0){g=f[a>>2]|0;do{f[g+(d<<2)>>2]=i;d=d+1|0}while((d|0)!=(h|0))}i=i+1|0}while(i>>>0>>0);if((k|0)==19)return d|0;k=(h|0)==262144;return k|0}function yh(a,b,c){a=a|0;b=b|0;c=c|0;var d=0,e=0,g=0,h=0,i=0,j=0,k=0;g=a+4|0;e=f[g>>2]|0;d=f[a>>2]|0;i=e-d>>2;if(i>>>0>=65536){if((i|0)!=65536?(h=d+262144|0,(e|0)!=(h|0)):0)f[g>>2]=e+(~((e+-4-h|0)>>>2)<<2)}else ui(a,65536-i|0);h=a+12|0;g=a+16|0;e=f[g>>2]|0;d=f[h>>2]|0;i=e-d>>3;if(i>>>0>=c>>>0){if(i>>>0>c>>>0?(j=d+(c<<3)|0,(e|0)!=(j|0)):0)f[g>>2]=e+(~((e+-8-j|0)>>>3)<<3);if(!c){k=0;return k|0}}else eh(h,c-i|0);e=f[h>>2]|0;h=0;i=0;do{j=b+(i<<2)|0;f[e+(i<<3)>>2]=f[j>>2];f[e+(i<<3)+4>>2]=h;d=h;h=(f[j>>2]|0)+h|0;if(h>>>0>65536){d=0;k=19;break}if(d>>>0>>0){g=f[a>>2]|0;do{f[g+(d<<2)>>2]=i;d=d+1|0}while((d|0)!=(h|0))}i=i+1|0}while(i>>>0>>0);if((k|0)==19)return d|0;k=(h|0)==65536;return k|0}function zh(a,b,c){a=a|0;b=b|0;c=c|0;var d=0,e=0,g=0,h=0,i=0,j=0,k=0;g=a+4|0;e=f[g>>2]|0;d=f[a>>2]|0;i=e-d>>2;if(i>>>0>=32768){if((i|0)!=32768?(h=d+131072|0,(e|0)!=(h|0)):0)f[g>>2]=e+(~((e+-4-h|0)>>>2)<<2)}else ui(a,32768-i|0);h=a+12|0;g=a+16|0;e=f[g>>2]|0;d=f[h>>2]|0;i=e-d>>3;if(i>>>0>=c>>>0){if(i>>>0>c>>>0?(j=d+(c<<3)|0,(e|0)!=(j|0)):0)f[g>>2]=e+(~((e+-8-j|0)>>>3)<<3);if(!c){k=0;return k|0}}else eh(h,c-i|0);e=f[h>>2]|0;h=0;i=0;do{j=b+(i<<2)|0;f[e+(i<<3)>>2]=f[j>>2];f[e+(i<<3)+4>>2]=h;d=h;h=(f[j>>2]|0)+h|0;if(h>>>0>32768){d=0;k=19;break}if(d>>>0>>0){g=f[a>>2]|0;do{f[g+(d<<2)>>2]=i;d=d+1|0}while((d|0)!=(h|0))}i=i+1|0}while(i>>>0>>0);if((k|0)==19)return d|0;k=(h|0)==32768;return k|0}function Ah(a,b){a=a|0;b=b|0;var c=0,d=0,e=0,g=0;g=a+4|0;c=f[g>>2]|0;d=f[a>>2]|0;e=c-d>>2;if(e>>>0>>0){Nf(a,b-e|0);return}if(e>>>0<=b>>>0)return;a=d+(b<<2)|0;if((c|0)==(a|0))return;do{b=c+-4|0;f[g>>2]=b;e=f[b>>2]|0;f[b>>2]=0;if(e|0){b=e+88|0;c=f[b>>2]|0;f[b>>2]=0;if(c|0){d=f[c+8>>2]|0;if(d|0){b=c+12|0;if((f[b>>2]|0)!=(d|0))f[b>>2]=d;ar(d)}ar(c)}c=f[e+68>>2]|0;if(c|0){b=e+72|0;d=f[b>>2]|0;if((d|0)!=(c|0))f[b>>2]=d+(~((d+-4-c|0)>>>2)<<2);ar(c)}b=e+64|0;c=f[b>>2]|0;f[b>>2]=0;if(c|0){d=f[c>>2]|0;if(d|0){b=c+4|0;if((f[b>>2]|0)!=(d|0))f[b>>2]=d;ar(d)}ar(c)}ar(e)}c=f[g>>2]|0}while((c|0)!=(a|0));return}function Bh(a,b,c){a=a|0;b=b|0;c=c|0;var d=0,e=0,g=0,h=0,i=0,j=0,k=0;g=a+4|0;e=f[g>>2]|0;d=f[a>>2]|0;i=e-d>>2;if(i>>>0>=8192){if((i|0)!=8192?(h=d+32768|0,(e|0)!=(h|0)):0)f[g>>2]=e+(~((e+-4-h|0)>>>2)<<2)}else ui(a,8192-i|0);h=a+12|0;g=a+16|0;e=f[g>>2]|0;d=f[h>>2]|0;i=e-d>>3;if(i>>>0>=c>>>0){if(i>>>0>c>>>0?(j=d+(c<<3)|0,(e|0)!=(j|0)):0)f[g>>2]=e+(~((e+-8-j|0)>>>3)<<3);if(!c){k=0;return k|0}}else eh(h,c-i|0);e=f[h>>2]|0;h=0;i=0;do{j=b+(i<<2)|0;f[e+(i<<3)>>2]=f[j>>2];f[e+(i<<3)+4>>2]=h;d=h;h=(f[j>>2]|0)+h|0;if(h>>>0>8192){d=0;k=19;break}if(d>>>0>>0){g=f[a>>2]|0;do{f[g+(d<<2)>>2]=i;d=d+1|0}while((d|0)!=(h|0))}i=i+1|0}while(i>>>0>>0);if((k|0)==19)return d|0;k=(h|0)==8192;return k|0}function Ch(a,b,c){a=a|0;b=b|0;c=c|0;var d=0,e=0,g=0,h=0,i=0,j=0,k=0;g=a+4|0;e=f[g>>2]|0;d=f[a>>2]|0;i=e-d>>2;if(i>>>0>=4096){if((i|0)!=4096?(h=d+16384|0,(e|0)!=(h|0)):0)f[g>>2]=e+(~((e+-4-h|0)>>>2)<<2)}else ui(a,4096-i|0);h=a+12|0;g=a+16|0;e=f[g>>2]|0;d=f[h>>2]|0;i=e-d>>3;if(i>>>0>=c>>>0){if(i>>>0>c>>>0?(j=d+(c<<3)|0,(e|0)!=(j|0)):0)f[g>>2]=e+(~((e+-8-j|0)>>>3)<<3);if(!c){k=0;return k|0}}else eh(h,c-i|0);e=f[h>>2]|0;h=0;i=0;do{j=b+(i<<2)|0;f[e+(i<<3)>>2]=f[j>>2];f[e+(i<<3)+4>>2]=h;d=h;h=(f[j>>2]|0)+h|0;if(h>>>0>4096){d=0;k=19;break}if(d>>>0>>0){g=f[a>>2]|0;do{f[g+(d<<2)>>2]=i;d=d+1|0}while((d|0)!=(h|0))}i=i+1|0}while(i>>>0>>0);if((k|0)==19)return d|0;k=(h|0)==4096;return k|0}function Dh(a,b,c,d){a=a|0;b=b|0;c=c|0;d=d|0;var e=0,g=0,h=0,i=0;h=u;u=u+32|0;g=h+4|0;e=h;switch(d|0){case 2:{i=f[b+12>>2]|0;d=f[b+4>>2]|0;b=g+4|0;f[b>>2]=-1;f[b+4>>2]=-1;f[b+8>>2]=-1;f[b+12>>2]=-1;f[g>>2]=2744;hh(e,c,i,d,g);f[a>>2]=f[e>>2];u=h;return}case 3:{d=f[b+12>>2]|0;i=f[b+4>>2]|0;b=g+4|0;f[b>>2]=-1;f[b+4>>2]=-1;f[b+8>>2]=-1;f[b+12>>2]=-1;f[g>>2]=2764;bh(e,c,d,i,g);f[a>>2]=f[e>>2];u=h;return}default:{f[a>>2]=0;u=h;return}}}function Eh(a,c){a=a|0;c=c|0;var d=0,e=0,g=0,i=0,j=0,k=0,l=0,m=0,n=0,o=0;d=f[c+88>>2]|0;if(!d){a=0;return a|0}if((f[d>>2]|0)!=1){a=0;return a|0}m=d+8|0;j=f[m>>2]|0;f[a+4>>2]=h[j>>0]|h[j+1>>0]<<8|h[j+2>>0]<<16|h[j+3>>0]<<24;o=a+8|0;k=c+24|0;c=b[k>>0]|0;i=c<<24>>24;g=a+12|0;e=f[g>>2]|0;d=f[o>>2]|0;l=e-d>>2;if(i>>>0<=l>>>0){if(i>>>0>>0?(n=d+(i<<2)|0,(e|0)!=(n|0)):0)f[g>>2]=e+(~((e+-4-n|0)>>>2)<<2)}else{ui(o,i-l|0);c=b[k>>0]|0;j=f[m>>2]|0}d=j+4|0;d=h[d>>0]|h[d+1>>0]<<8|h[d+2>>0]<<16|h[d+3>>0]<<24;if(c<<24>>24>0){i=f[o>>2]|0;e=c<<24>>24;c=4;g=0;do{f[i+(g<<2)>>2]=d;c=c+4|0;g=g+1|0;d=j+c|0;d=h[d>>0]|h[d+1>>0]<<8|h[d+2>>0]<<16|h[d+3>>0]<<24}while((g|0)<(e|0))}f[a+20>>2]=d;a=1;return a|0}function Fh(a,c,d){a=a|0;c=c|0;d=d|0;a=sd(a,c)|0;if(!a){d=0;return d|0}c=f[a+20>>2]|0;if(((f[a+24>>2]|0)-c|0)!=8){d=0;return d|0}a=c;b[s>>0]=b[a>>0];b[s+1>>0]=b[a+1>>0];b[s+2>>0]=b[a+2>>0];b[s+3>>0]=b[a+3>>0];b[s+4>>0]=b[a+4>>0];b[s+5>>0]=b[a+5>>0];b[s+6>>0]=b[a+6>>0];b[s+7>>0]=b[a+7>>0];p[s>>3]=+p[s>>3];b[d>>0]=b[s>>0];b[d+1>>0]=b[s+1>>0];b[d+2>>0]=b[s+2>>0];b[d+3>>0]=b[s+3>>0];b[d+4>>0]=b[s+4>>0];b[d+5>>0]=b[s+5>>0];b[d+6>>0]=b[s+6>>0];b[d+7>>0]=b[s+7>>0];d=1;return d|0}function Gh(a,b){a=a|0;b=b|0;var c=0,d=0,e=La;if((b|0)!=1){if(b+-1&b)b=ab(b)|0}else b=2;d=f[a+4>>2]|0;if(b>>>0>d>>>0){Gd(a,b);return}if(b>>>0>=d>>>0)return;e=$((f[a+12>>2]|0)>>>0);c=~~$(W($(e/$(n[a+20>>2]))))>>>0;if(d>>>0>2&(d+-1&d|0)==0)c=1<<32-(_(c+-1|0)|0);else c=ab(c)|0;b=b>>>0>>0?c:b;if(b>>>0>=d>>>0)return;Gd(a,b);return}function Hh(a,c){a=a|0;c=c|0;var d=0,e=0,g=0,h=0,i=0,j=0;if(c>>>0>4294967279)Hp(a);i=a+11|0;e=b[i>>0]|0;g=e<<24>>24<0;if(g){j=f[a+4>>2]|0;d=(f[a+8>>2]&2147483647)+-1|0}else{j=e&255;d=10}h=j>>>0>c>>>0?j:c;c=h>>>0<11;h=c?10:(h+16&-16)+-1|0;do if((h|0)!=(d|0)){do if(c){d=f[a>>2]|0;if(g){c=a;e=0;g=13}else{So(a,d,(e&255)+1|0)|0;ar(d);g=15}}else{c=ln(h+1|0)|0;if(g){e=1;d=f[a>>2]|0;g=13;break}else{So(c,a,(e&255)+1|0)|0;g=14;break}}while(0);if((g|0)==13){So(c,d,(f[a+4>>2]|0)+1|0)|0;ar(d);if(e)g=14;else g=15}if((g|0)==14){f[a+8>>2]=h+1|-2147483648;f[a+4>>2]=j;f[a>>2]=c;break}else if((g|0)==15){b[i>>0]=j;break}}while(0);return}function Ih(a){a=a|0;xq(a);xq(a+16|0);xq(a+32|0);xq(a+48|0);xq(a+64|0);xq(a+80|0);xq(a+96|0);xq(a+112|0);xq(a+128|0);xq(a+144|0);xq(a+160|0);xq(a+176|0);xq(a+192|0);xq(a+208|0);xq(a+224|0);xq(a+240|0);xq(a+256|0);xq(a+272|0);xq(a+288|0);xq(a+304|0);xq(a+320|0);xq(a+336|0);xq(a+352|0);xq(a+368|0);xq(a+384|0);xq(a+400|0);xq(a+416|0);xq(a+432|0);xq(a+448|0);xq(a+464|0);xq(a+480|0);xq(a+496|0);return}function Jh(a,c,d){a=a|0;c=c|0;d=d|0;var e=0,g=0,h=0,i=0,j=0,k=0,l=0,m=0,n=0,o=0;o=(f[a>>2]|0)+1794895138|0;h=yp(f[a+8>>2]|0,o)|0;e=yp(f[a+12>>2]|0,o)|0;g=yp(f[a+16>>2]|0,o)|0;a:do if((h>>>0>>2>>>0?(n=c-(h<<2)|0,e>>>0>>0&g>>>0>>0):0)?((g|e)&3|0)==0:0){n=e>>>2;m=g>>>2;l=0;while(1){k=h>>>1;j=l+k|0;i=j<<1;g=i+n|0;e=yp(f[a+(g<<2)>>2]|0,o)|0;g=yp(f[a+(g+1<<2)>>2]|0,o)|0;if(!(g>>>0>>0&e>>>0<(c-g|0)>>>0)){e=0;break a}if(b[a+(g+e)>>0]|0){e=0;break a}e=Sl(d,a+g|0)|0;if(!e)break;e=(e|0)<0;if((h|0)==1){e=0;break a}else{l=e?l:j;h=e?k:h-k|0}}e=i+m|0;g=yp(f[a+(e<<2)>>2]|0,o)|0;e=yp(f[a+(e+1<<2)>>2]|0,o)|0;if(e>>>0>>0&g>>>0<(c-e|0)>>>0)e=(b[a+(e+g)>>0]|0)==0?a+e|0:0;else e=0}else e=0;while(0);return e|0}function Kh(a,b){a=a|0;b=b|0;var c=0,d=0,e=0,g=0,h=0,i=0,j=0;j=u;u=u+16|0;i=j+4|0;h=j;f[a>>2]=0;f[a+8>>2]=b;Ih(a+12|0);xq(a+524|0);to(a+540|0);to(a+560|0);to(a+580|0);f[i>>2]=0;Oj(a+600|0,b,i);f[i>>2]=0;Oj(a+612|0,b,i);g=b<<5|1;f[h>>2]=0;Oj(i,b,h);Jj(a+624|0,g,i);c=f[i>>2]|0;if(c|0){e=i+4|0;d=f[e>>2]|0;if((d|0)!=(c|0))f[e>>2]=d+(~((d+-4-c|0)>>>2)<<2);ar(c)}f[h>>2]=0;Oj(i,b,h);Jj(a+636|0,g,i);e=f[i>>2]|0;if(!e){u=j;return}d=i+4|0;c=f[d>>2]|0;if((c|0)!=(e|0))f[d>>2]=c+(~((c+-4-e|0)>>>2)<<2);ar(e);u=j;return}function Lh(a,b){a=a|0;b=b|0;var c=0,d=0,e=La;if((b|0)!=1){if(b+-1&b)b=ab(b)|0}else b=2;d=f[a+4>>2]|0;if(b>>>0>d>>>0){Jc(a,b);return}if(b>>>0>=d>>>0)return;e=$((f[a+12>>2]|0)>>>0);c=~~$(W($(e/$(n[a+16>>2]))))>>>0;if(d>>>0>2&(d+-1&d|0)==0)c=1<<32-(_(c+-1|0)|0);else c=ab(c)|0;b=b>>>0>>0?c:b;if(b>>>0>=d>>>0)return;Jc(a,b);return}function Mh(a,b){a=a|0;b=b|0;var c=0,d=0,e=La;if((b|0)!=1){if(b+-1&b)b=ab(b)|0}else b=2;d=f[a+4>>2]|0;if(b>>>0>d>>>0){ad(a,b);return}if(b>>>0>=d>>>0)return;e=$((f[a+12>>2]|0)>>>0);c=~~$(W($(e/$(n[a+16>>2]))))>>>0;if(d>>>0>2&(d+-1&d|0)==0)c=1<<32-(_(c+-1|0)|0);else c=ab(c)|0;b=b>>>0>>0?c:b;if(b>>>0>=d>>>0)return;ad(a,b);return}function Nh(a,b){a=a|0;b=b|0;var c=0,d=0,e=La;if((b|0)!=1){if(b+-1&b)b=ab(b)|0}else b=2;d=f[a+4>>2]|0;if(b>>>0>d>>>0){rd(a,b);return}if(b>>>0>=d>>>0)return;e=$((f[a+12>>2]|0)>>>0);c=~~$(W($(e/$(n[a+16>>2]))))>>>0;if(d>>>0>2&(d+-1&d|0)==0)c=1<<32-(_(c+-1|0)|0);else c=ab(c)|0;b=b>>>0>>0?c:b;if(b>>>0>=d>>>0)return;rd(a,b);return}function Oh(a,b){a=a|0;b=b|0;var c=0,d=0,e=La;if((b|0)!=1){if(b+-1&b)b=ab(b)|0}else b=2;d=f[a+4>>2]|0;if(b>>>0>d>>>0){Pd(a,b);return}if(b>>>0>=d>>>0)return;e=$((f[a+12>>2]|0)>>>0);c=~~$(W($(e/$(n[a+16>>2]))))>>>0;if(d>>>0>2&(d+-1&d|0)==0)c=1<<32-(_(c+-1|0)|0);else c=ab(c)|0;b=b>>>0>>0?c:b;if(b>>>0>=d>>>0)return;Pd(a,b);return}function Ph(a,b){a=a|0;b=b|0;var c=0,d=0,e=La;if((b|0)!=1){if(b+-1&b)b=ab(b)|0}else b=2;d=f[a+4>>2]|0;if(b>>>0>d>>>0){Kc(a,b);return}if(b>>>0>=d>>>0)return;e=$((f[a+12>>2]|0)>>>0);c=~~$(W($(e/$(n[a+16>>2]))))>>>0;if(d>>>0>2&(d+-1&d|0)==0)c=1<<32-(_(c+-1|0)|0);else c=ab(c)|0;b=b>>>0>>0?c:b;if(b>>>0>=d>>>0)return;Kc(a,b);return}function Qh(a,b){a=a|0;b=b|0;var c=0,d=0,e=La;if((b|0)!=1){if(b+-1&b)b=ab(b)|0}else b=2;d=f[a+4>>2]|0;if(b>>>0>d>>>0){cd(a,b);return}if(b>>>0>=d>>>0)return;e=$((f[a+12>>2]|0)>>>0);c=~~$(W($(e/$(n[a+16>>2]))))>>>0;if(d>>>0>2&(d+-1&d|0)==0)c=1<<32-(_(c+-1|0)|0);else c=ab(c)|0;b=b>>>0>>0?c:b;if(b>>>0>=d>>>0)return;cd(a,b);return}function Rh(a,b){a=a|0;b=b|0;var c=0,d=0,e=La;if((b|0)!=1){if(b+-1&b)b=ab(b)|0}else b=2;d=f[a+4>>2]|0;if(b>>>0>d>>>0){td(a,b);return}if(b>>>0>=d>>>0)return;e=$((f[a+12>>2]|0)>>>0);c=~~$(W($(e/$(n[a+16>>2]))))>>>0;if(d>>>0>2&(d+-1&d|0)==0)c=1<<32-(_(c+-1|0)|0);else c=ab(c)|0;b=b>>>0>>0?c:b;if(b>>>0>=d>>>0)return;td(a,b);return}function Sh(a,b){a=a|0;b=b|0;var c=0,d=0,e=La;if((b|0)!=1){if(b+-1&b)b=ab(b)|0}else b=2;d=f[a+4>>2]|0;if(b>>>0>d>>>0){Mc(a,b);return}if(b>>>0>=d>>>0)return;e=$((f[a+12>>2]|0)>>>0);c=~~$(W($(e/$(n[a+16>>2]))))>>>0;if(d>>>0>2&(d+-1&d|0)==0)c=1<<32-(_(c+-1|0)|0);else c=ab(c)|0;b=b>>>0>>0?c:b;if(b>>>0>=d>>>0)return;Mc(a,b);return}function Th(a,b){a=a|0;b=b|0;var c=0,d=0,e=La;if((b|0)!=1){if(b+-1&b)b=ab(b)|0}else b=2;d=f[a+4>>2]|0;if(b>>>0>d>>>0){dd(a,b);return}if(b>>>0>=d>>>0)return;e=$((f[a+12>>2]|0)>>>0);c=~~$(W($(e/$(n[a+16>>2]))))>>>0;if(d>>>0>2&(d+-1&d|0)==0)c=1<<32-(_(c+-1|0)|0);else c=ab(c)|0;b=b>>>0>>0?c:b;if(b>>>0>=d>>>0)return;dd(a,b);return}function Uh(a,b){a=a|0;b=b|0;var c=0,d=0,e=La;if((b|0)!=1){if(b+-1&b)b=ab(b)|0}else b=2;d=f[a+4>>2]|0;if(b>>>0>d>>>0){ud(a,b);return}if(b>>>0>=d>>>0)return;e=$((f[a+12>>2]|0)>>>0);c=~~$(W($(e/$(n[a+16>>2]))))>>>0;if(d>>>0>2&(d+-1&d|0)==0)c=1<<32-(_(c+-1|0)|0);else c=ab(c)|0;b=b>>>0>>0?c:b;if(b>>>0>=d>>>0)return;ud(a,b);return}function Vh(a,b){a=a|0;b=b|0;var c=0,d=0,e=La;if((b|0)!=1){if(b+-1&b)b=ab(b)|0}else b=2;d=f[a+4>>2]|0;if(b>>>0>d>>>0){Qd(a,b);return}if(b>>>0>=d>>>0)return;e=$((f[a+12>>2]|0)>>>0);c=~~$(W($(e/$(n[a+16>>2]))))>>>0;if(d>>>0>2&(d+-1&d|0)==0)c=1<<32-(_(c+-1|0)|0);else c=ab(c)|0;b=b>>>0>>0?c:b;if(b>>>0>=d>>>0)return;Qd(a,b);return}function Wh(a,c){a=a|0;c=c|0;var d=0,e=0,g=0,h=0,i=0,j=0,k=0,l=0,m=0;a=f[a+4>>2]|0;if(!a){m=0;return m|0}k=b[c+11>>0]|0;j=k<<24>>24<0;k=j?f[c+4>>2]|0:k&255;j=j?f[c>>2]|0:c;while(1){e=a+16|0;d=b[e+11>>0]|0;h=d<<24>>24<0;d=h?f[a+20>>2]|0:d&255;g=d>>>0>>0;c=g?d:k;if((c|0)!=0?(m=rl(j,h?f[e>>2]|0:e,c)|0,(m|0)!=0):0)if((m|0)<0)i=7;else i=8;else if(k>>>0>>0)i=7;else i=8;if((i|0)!=7)if((i|0)==8){i=0;c=k>>>0>>0?k:d;if((c|0)!=0?(l=rl(h?f[e>>2]|0:e,j,c)|0,(l|0)!=0):0){if((l|0)>=0){a=1;i=14;break}}else i=10;if((i|0)==10?(0,!g):0){a=1;i=14;break}a=a+4|0}a=f[a>>2]|0;if(!a){a=0;i=14;break}}if((i|0)==14)return a|0;return 0}function Xh(a,c,d,e){a=a|0;c=c|0;d=d|0;e=e|0;var g=0,h=0,i=0,j=0;h=ln(32)|0;f[a>>2]=h;f[a+4>>2]=c+8;g=a+8|0;b[g>>0]=0;i=h+8|0;f[i>>2]=f[e>>2];f[i+4>>2]=f[e+4>>2];f[i+8>>2]=f[e+8>>2];f[e>>2]=0;f[e+4>>2]=0;f[e+8>>2]=0;i=h+20|0;j=e+12|0;f[i>>2]=0;f[h+24>>2]=0;f[h+28>>2]=0;h=f[j>>2]|0;c=(f[e+16>>2]|0)-h|0;if(!c){i=0;j=h;Mg(i|0,j|0,c|0)|0;b[g>>0]=1;a=f[a>>2]|0;j=a+4|0;f[j>>2]=d;f[a>>2]=0;return}vi(i,c);i=f[i>>2]|0;j=f[j>>2]|0;Mg(i|0,j|0,c|0)|0;b[g>>0]=1;a=f[a>>2]|0;j=a+4|0;f[j>>2]=d;f[a>>2]=0;return}function Yh(a,b,c){a=a|0;b=b|0;c=c|0;var d=0,e=0,g=0,h=0,i=0;i=f[b>>2]|0;e=f[a+12>>2]|0;if((i|0)>(e|0))Ga(10176,9477,259,10200);d=f[c>>2]|0;if((d|0)>(e|0))Ga(10214,9477,260,10200);a=0-e|0;if((i|0)<(a|0))Ga(10238,9477,261,10200);if((d|0)<(a|0))Ga(10263,9477,262,10200);if((d|i|0)>-1){h=1;a=1}else{a=(i|0)<1&(d|0)<1;h=a?-1:(i|0)>0?1:-1;a=a?-1:(d|0)>0?1:-1}g=X(e,h)|0;e=X(e,a)|0;f[b>>2]=(i<<1)-g;d=(f[c>>2]<<1)-e|0;f[c>>2]=d;i=(X(h,a)|0)>-1;a=f[b>>2]|0;if(i){f[b>>2]=0-d;i=0-a|0;f[c>>2]=i;i=f[b>>2]|0;i=i+g|0;i=(i|0)/2|0;f[b>>2]=i;b=f[c>>2]|0;b=b+e|0;b=(b|0)/2|0;f[c>>2]=b;return}else{f[b>>2]=d;i=a;f[c>>2]=i;i=f[b>>2]|0;i=i+g|0;i=(i|0)/2|0;f[b>>2]=i;b=f[c>>2]|0;b=b+e|0;b=(b|0)/2|0;f[c>>2]=b;return}}function Zh(a,b){a=a|0;b=b|0;var c=0,d=0,e=La;if((b|0)!=1){if(b+-1&b)b=ab(b)|0}else b=2;d=f[a+4>>2]|0;if(b>>>0>d>>>0){$c(a,b);return}if(b>>>0>=d>>>0)return;e=$((f[a+12>>2]|0)>>>0);c=~~$(W($(e/$(n[a+16>>2]))))>>>0;if(d>>>0>2&(d+-1&d|0)==0)c=1<<32-(_(c+-1|0)|0);else c=ab(c)|0;b=b>>>0>>0?c:b;if(b>>>0>=d>>>0)return;$c(a,b);return}function _h(a,b){a=a|0;b=b|0;var c=0,d=0,e=0,g=0;g=a+4|0;e=f[g>>2]|0;c=f[a>>2]|0;d=(e-c|0)/116|0;if(d>>>0>>0){vf(a,b-d|0);return}if(d>>>0<=b>>>0)return;a=c+(b*116|0)|0;if((e|0)==(a|0))return;do{f[g>>2]=e+-116;c=f[e+-12>>2]|0;if(c|0){d=e+-8|0;b=f[d>>2]|0;if((b|0)!=(c|0))f[d>>2]=b+(~((b+-4-c|0)>>>2)<<2);ar(c)}c=f[e+-28>>2]|0;if(c|0){d=e+-24|0;b=f[d>>2]|0;if((b|0)!=(c|0))f[d>>2]=b+(~((b+-4-c|0)>>>2)<<2);ar(c)}c=f[e+-40>>2]|0;if(c|0){d=e+-36|0;b=f[d>>2]|0;if((b|0)!=(c|0))f[d>>2]=b+(~((b+-4-c|0)>>>2)<<2);ar(c)}Bj(e+-112|0);e=f[g>>2]|0}while((e|0)!=(a|0));return}function $h(a,b){a=a|0;b=b|0;var c=0,d=0,e=0,g=0,h=0,i=0,j=0;j=u;u=u+16|0;i=j+4|0;h=j;f[a>>2]=0;f[a+8>>2]=b;to(a+12|0);to(a+32|0);to(a+52|0);to(a+72|0);f[i>>2]=0;Oj(a+92|0,b,i);f[i>>2]=0;Oj(a+104|0,b,i);g=b<<5|1;f[h>>2]=0;Oj(i,b,h);Jj(a+116|0,g,i);c=f[i>>2]|0;if(c|0){e=i+4|0;d=f[e>>2]|0;if((d|0)!=(c|0))f[e>>2]=d+(~((d+-4-c|0)>>>2)<<2);ar(c)}f[h>>2]=0;Oj(i,b,h);Jj(a+128|0,g,i);e=f[i>>2]|0;if(!e){u=j;return}d=i+4|0;c=f[d>>2]|0;if((c|0)!=(e|0))f[d>>2]=c+(~((c+-4-e|0)>>>2)<<2);ar(e);u=j;return}function ai(a,b){a=a|0;b=b|0;var c=0,d=0,e=0,g=0,h=0,i=0,j=0;j=u;u=u+16|0;i=j+4|0;h=j;f[a>>2]=0;f[a+8>>2]=b;xq(a+12|0);to(a+28|0);to(a+48|0);to(a+68|0);f[i>>2]=0;Oj(a+88|0,b,i);f[i>>2]=0;Oj(a+100|0,b,i);g=b<<5|1;f[h>>2]=0;Oj(i,b,h);Jj(a+112|0,g,i);c=f[i>>2]|0;if(c|0){e=i+4|0;d=f[e>>2]|0;if((d|0)!=(c|0))f[e>>2]=d+(~((d+-4-c|0)>>>2)<<2);ar(c)}f[h>>2]=0;Oj(i,b,h);Jj(a+124|0,g,i);e=f[i>>2]|0;if(!e){u=j;return}d=i+4|0;c=f[d>>2]|0;if((c|0)!=(e|0))f[d>>2]=c+(~((c+-4-e|0)>>>2)<<2);ar(e);u=j;return}function bi(a){a=a|0;var b=0,c=0,d=0,e=0,g=0;f[a>>2]=4240;e=a+60|0;b=f[e>>2]|0;f[e>>2]=0;if(b|0)Pa[f[(f[b>>2]|0)+4>>2]&127](b);b=f[a+48>>2]|0;if(b|0){d=a+52|0;c=f[d>>2]|0;if((c|0)!=(b|0))f[d>>2]=c+(~((c+-4-b|0)>>>2)<<2);ar(b)}d=a+36|0;b=f[d>>2]|0;if(b|0){e=a+40|0;c=f[e>>2]|0;if((c|0)!=(b|0)){do{g=c+-4|0;f[e>>2]=g;c=f[g>>2]|0;f[g>>2]=0;if(c|0)Pa[f[(f[c>>2]|0)+4>>2]&127](c);c=f[e>>2]|0}while((c|0)!=(b|0));b=f[d>>2]|0}ar(b)}f[a>>2]=1564;b=f[a+16>>2]|0;if(b|0){d=a+20|0;c=f[d>>2]|0;if((c|0)!=(b|0))f[d>>2]=c+(~((c+-4-b|0)>>>2)<<2);ar(b)}d=f[a+4>>2]|0;if(!d)return;c=a+8|0;b=f[c>>2]|0;if((b|0)!=(d|0))f[c>>2]=b+(~((b+-4-d|0)>>>2)<<2);ar(d);return}function ci(a){a=a|0;var b=0,c=0,d=0,e=0,g=0,h=0;g=f[a+4>>2]|0;h=a+8|0;b=f[h>>2]|0;if((b|0)!=(g|0))do{d=b+-4|0;f[h>>2]=d;e=f[d>>2]|0;f[d>>2]=0;if(e|0){d=e+88|0;b=f[d>>2]|0;f[d>>2]=0;if(b|0){c=f[b+8>>2]|0;if(c|0){d=b+12|0;if((f[d>>2]|0)!=(c|0))f[d>>2]=c;ar(c)}ar(b)}b=f[e+68>>2]|0;if(b|0){d=e+72|0;c=f[d>>2]|0;if((c|0)!=(b|0))f[d>>2]=c+(~((c+-4-b|0)>>>2)<<2);ar(b)}d=e+64|0;b=f[d>>2]|0;f[d>>2]=0;if(b|0){c=f[b>>2]|0;if(c|0){d=b+4|0;if((f[d>>2]|0)!=(c|0))f[d>>2]=c;ar(c)}ar(b)}ar(e)}b=f[h>>2]|0}while((b|0)!=(g|0));b=f[a>>2]|0;if(!b)return;ar(b);return}function di(a,c){a=a|0;c=c|0;var e=0,g=0,h=0,i=0,j=0,k=0,l=0,m=0,n=0;l=a+8|0;e=f[l>>2]|0;g=b[e+24>>0]|0;k=g<<24>>24;n=k<<1;m=Zq(k>>>0>2147483647?-1:k<<1)|0;j=f[a+16>>2]|0;j=(f[f[j>>2]>>2]|0)+(f[j+48>>2]|0)|0;if(!c){_q(m);return}if(g<<24>>24>0){e=0;g=0;h=0;while(1){a=0;i=h;while(1){d[m+(a<<1)>>1]=f[j+(i<<2)>>2];a=a+1|0;if((a|0)==(k|0))break;else i=i+1|0}Mg((f[f[(f[l>>2]|0)+64>>2]>>2]|0)+g|0,m|0,n|0)|0;e=e+1|0;if((e|0)==(c|0))break;else{g=g+n|0;h=k+h|0}}_q(m);return}else{Mg(f[f[e+64>>2]>>2]|0,m|0,n|0)|0;if((c|0)==1){_q(m);return}else{a=1;e=0}do{e=e+n|0;Mg((f[f[(f[l>>2]|0)+64>>2]>>2]|0)+e|0,m|0,n|0)|0;a=a+1|0}while((a|0)!=(c|0));_q(m);return}}function ei(a,c){a=a|0;c=c|0;var d=0,e=0,g=0,h=0,i=0,j=0,k=0,l=0,m=0;k=a+8|0;d=f[k>>2]|0;e=b[d+24>>0]|0;j=e<<24>>24;m=j<<2;l=Zq(j>>>0>1073741823?-1:j<<2)|0;i=f[a+16>>2]|0;i=(f[f[i>>2]>>2]|0)+(f[i+48>>2]|0)|0;if(!c){_q(l);return}if(e<<24>>24>0){d=0;e=0;g=0;while(1){a=0;h=g;while(1){f[l+(a<<2)>>2]=f[i+(h<<2)>>2];a=a+1|0;if((a|0)==(j|0))break;else h=h+1|0}Mg((f[f[(f[k>>2]|0)+64>>2]>>2]|0)+e|0,l|0,m|0)|0;d=d+1|0;if((d|0)==(c|0))break;else{e=e+m|0;g=j+g|0}}_q(l);return}else{Mg(f[f[d+64>>2]>>2]|0,l|0,m|0)|0;if((c|0)==1){_q(l);return}else{a=1;d=0}do{d=d+m|0;Mg((f[f[(f[k>>2]|0)+64>>2]>>2]|0)+d|0,l|0,m|0)|0;a=a+1|0}while((a|0)!=(c|0));_q(l);return}}function fi(a){a=a|0;var b=0,c=0,d=0,e=0,g=0,h=0;b=f[a>>2]|0;if(!b)return;h=a+4|0;c=f[h>>2]|0;if((c|0)!=(b|0)){do{e=c+-4|0;f[h>>2]=e;g=f[e>>2]|0;f[e>>2]=0;if(g|0){e=g+88|0;c=f[e>>2]|0;f[e>>2]=0;if(c|0){d=f[c+8>>2]|0;if(d|0){e=c+12|0;if((f[e>>2]|0)!=(d|0))f[e>>2]=d;ar(d)}ar(c)}c=f[g+68>>2]|0;if(c|0){e=g+72|0;d=f[e>>2]|0;if((d|0)!=(c|0))f[e>>2]=d+(~((d+-4-c|0)>>>2)<<2);ar(c)}e=g+64|0;c=f[e>>2]|0;f[e>>2]=0;if(c|0){d=f[c>>2]|0;if(d|0){e=c+4|0;if((f[e>>2]|0)!=(d|0))f[e>>2]=d;ar(d)}ar(c)}ar(g)}c=f[h>>2]|0}while((c|0)!=(b|0));b=f[a>>2]|0}ar(b);return}function gi(a,b){a=a|0;b=b|0;var c=0,d=0,e=0,g=0,i=0,j=0,k=0,l=0,m=0;l=b+8|0;k=f[l>>2]|0;l=f[l+4>>2]|0;m=b+16|0;c=m;e=f[c>>2]|0;c=f[c+4>>2]|0;j=Ho(e|0,c|0,4,0)|0;d=I;if((l|0)<(d|0)|(l|0)==(d|0)&k>>>0>>0){a=0;return a|0}g=f[b>>2]|0;i=g+e|0;i=h[i>>0]|h[i+1>>0]<<8|h[i+2>>0]<<16|h[i+3>>0]<<24;b=m;f[b>>2]=j;f[b+4>>2]=d;b=Ho(e|0,c|0,8,0)|0;c=I;if((l|0)<(c|0)|(l|0)==(c|0)&k>>>0>>0){a=0;return a|0}l=g+j|0;l=h[l>>0]|h[l+1>>0]<<8|h[l+2>>0]<<16|h[l+3>>0]<<24;f[m>>2]=b;f[m+4>>2]=c;f[a+12>>2]=i;f[a+16>>2]=l;m=l+(1-i)|0;f[a+20>>2]=m;b=(m|0)/2|0;c=a+24|0;f[c>>2]=b;f[a+28>>2]=0-b;if(m&1|0){a=1;return a|0}f[c>>2]=b+-1;a=1;return a|0}function hi(a,b){a=a|0;b=b|0;var c=0,d=0,e=0,g=0,i=0,j=0,k=0,l=0;k=b+8|0;j=f[k>>2]|0;k=f[k+4>>2]|0;l=b+16|0;c=l;g=f[c>>2]|0;c=f[c+4>>2]|0;d=Ho(g|0,c|0,4,0)|0;e=I;if((k|0)<(e|0)|(k|0)==(e|0)&j>>>0>>0)return 0;i=(f[b>>2]|0)+g|0;i=h[i>>0]|h[i+1>>0]<<8|h[i+2>>0]<<16|h[i+3>>0]<<24;b=l;f[b>>2]=d;f[b+4>>2]=e;b=Ho(g|0,c|0,8,0)|0;c=I;if((k|0)<(c|0)|(k|0)==(c|0)&j>>>0>>0)return 0;f[l>>2]=b;f[l+4>>2]=c;if(((i|0)%2|0|0)!=1)Ga(10288,10321,69,10428);c=(_(i|0)|0)^31;b=c+1|0;if(!c)Ga(9466,9477,60,9539);if(b>>>0<31){f[a+4>>2]=b;l=2<>2]=l+-1;l=l+-2|0;f[a+12>>2]=l;f[a+16>>2]=(l|0)/2|0;return (c+-1|0)>>>0<29|0}else Ga(9559,9477,61,9539);return 0}function ii(a,c){a=a|0;c=c|0;var d=0,e=0,g=0,h=0,i=0,j=0,k=0,l=0,m=0,n=0,o=La;n=u;u=u+32|0;j=n+16|0;m=n;k=a+8|0;l=b[(f[k>>2]|0)+24>>0]<<2;i=f[a+16>>2]|0;i=(f[f[i>>2]>>2]|0)+(f[i+48>>2]|0)|0;a=f[a+24>>2]|0;if((a|0)<=1)Ga(9466,9477,60,9539);if((a|0)>=31)Ga(9559,9477,61,9539);f[m>>2]=a;a=1<>2]=a+-1;a=a+-2|0;h=m+8|0;f[h>>2]=a;f[m+12>>2]=(a|0)/2|0;if(!c){u=n;return 1}d=0;e=0;g=0;while(1){o=$($(1.0)/$(a|0));Rf(m,$($(f[i+(g<<2)>>2]|0)*o),$($(f[i+((g|1)<<2)>>2]|0)*o),j);Mg((f[f[(f[k>>2]|0)+64>>2]>>2]|0)+e|0,j|0,l|0)|0;d=d+1|0;if((d|0)==(c|0))break;a=f[h>>2]|0;e=e+l|0;g=g+2|0}u=n;return 1}function ji(a,b,c,d){a=a|0;b=b|0;c=c|0;d=d|0;var e=0,g=0,h=0,i=0,j=0,k=0,l=0,m=0;m=u;u=u+32|0;l=m+16|0;i=m+8|0;j=m;h=f[b>>2]|0;k=f[a+16>>2]<<1;if((h|0)>(k|0))Ga(9656,9701,69,9826);e=f[b+4>>2]|0;if((e|0)>(k|0))Ga(9847,9701,70,9826);g=f[c>>2]|0;if((g|0)>(k|0))Ga(9892,9701,71,9826);b=f[c+4>>2]|0;if((b|0)>(k|0))Ga(9937,9701,72,9826);if((h|0)<=-1)Ga(9982,9701,74,9826);if((e|0)<=-1)Ga(10004,9701,75,9826);if((g|0)<=-1)Ga(10026,9701,76,9826);if((b|0)>-1){f[i>>2]=h;f[i+4>>2]=e;f[j>>2]=g;f[j+4>>2]=b;Ce(l,a,i,j);f[d>>2]=f[l>>2];f[d+4>>2]=f[l+4>>2];u=m;return}else Ga(10048,9701,77,9826)}function ki(a,b){a=a|0;b=b|0;var c=0,d=0,e=0,g=0,i=0,j=0,k=0,l=0;k=b+8|0;j=f[k>>2]|0;k=f[k+4>>2]|0;l=b+16|0;c=l;g=f[c>>2]|0;c=f[c+4>>2]|0;d=Ho(g|0,c|0,4,0)|0;e=I;if((k|0)<(e|0)|(k|0)==(e|0)&j>>>0>>0){a=0;return a|0}i=(f[b>>2]|0)+g|0;i=h[i>>0]|h[i+1>>0]<<8|h[i+2>>0]<<16|h[i+3>>0]<<24;b=l;f[b>>2]=d;f[b+4>>2]=e;b=Ho(g|0,c|0,8,0)|0;c=I;if((k|0)<(c|0)|(k|0)==(c|0)&j>>>0>>0){a=0;return a|0}f[l>>2]=b;f[l+4>>2]=c;if(((i|0)%2|0|0)!=1)Ga(10288,10321,69,10428);c=(_(i|0)|0)^31;b=c+1|0;if(!c)Ga(9466,9477,60,9539);if(b>>>0>=31)Ga(9559,9477,61,9539);f[a+4>>2]=b;l=2<>2]=l+-1;l=l+-2|0;f[a+12>>2]=l;f[a+16>>2]=(l|0)/2|0;a=1;return a|0}function li(a,b){a=a|0;b=b|0;var c=0,d=0,e=La;if((b|0)!=1){if(b+-1&b)b=ab(b)|0}else b=2;d=f[a+4>>2]|0;if(b>>>0>d>>>0){Sd(a,b);return}if(b>>>0>=d>>>0)return;e=$((f[a+12>>2]|0)>>>0);c=~~$(W($(e/$(n[a+16>>2]))))>>>0;if(d>>>0>2&(d+-1&d|0)==0)c=1<<32-(_(c+-1|0)|0);else c=ab(c)|0;b=b>>>0>>0?c:b;if(b>>>0>=d>>>0)return;Sd(a,b);return}function mi(a,b,c,d){a=a|0;b=b|0;c=c|0;d=d|0;var e=0,g=0,h=0,i=0,j=0,k=0,l=0,m=0;m=u;u=u+32|0;j=m+16|0;l=m+8|0;i=m;h=f[b>>2]|0;k=f[a+16>>2]<<1;if((h|0)>(k|0))Ga(9656,14239,62,9826);e=f[b+4>>2]|0;if((e|0)>(k|0))Ga(9847,14239,63,9826);g=f[c>>2]|0;if((g|0)>(k|0))Ga(9892,14239,64,9826);b=f[c+4>>2]|0;if((b|0)>(k|0))Ga(9937,14239,65,9826);if((h|0)<=-1)Ga(9982,14239,67,9826);if((e|0)<=-1)Ga(10004,14239,68,9826);if((g|0)<=-1)Ga(10026,14239,69,9826);if((b|0)>-1){f[j>>2]=g;f[j+4>>2]=b;f[i>>2]=h;f[i+4>>2]=e;eg(l,a,i,j);f[d>>2]=f[l>>2];f[d+4>>2]=f[l+4>>2];u=m;return}else Ga(10048,14239,70,9826)}function ni(a,c,d){a=a|0;c=c|0;d=d|0;var e=0,g=0,h=0,i=0;h=c&255;e=(d|0)!=0;a:do if(e&(a&3|0)!=0){g=c&255;while(1){if((b[a>>0]|0)==g<<24>>24){i=6;break a}a=a+1|0;d=d+-1|0;e=(d|0)!=0;if(!(e&(a&3|0)!=0)){i=5;break}}}else i=5;while(0);if((i|0)==5)if(e)i=6;else d=0;b:do if((i|0)==6){g=c&255;if((b[a>>0]|0)!=g<<24>>24){e=X(h,16843009)|0;c:do if(d>>>0>3)while(1){h=f[a>>2]^e;if((h&-2139062144^-2139062144)&h+-16843009|0)break;a=a+4|0;d=d+-4|0;if(d>>>0<=3){i=11;break c}}else i=11;while(0);if((i|0)==11)if(!d){d=0;break}while(1){if((b[a>>0]|0)==g<<24>>24)break b;a=a+1|0;d=d+-1|0;if(!d){d=0;break}}}}while(0);return (d|0?a:0)|0}function oi(a){a=a|0;var b=0,c=0,d=0,e=0,g=0;e=a+12|0;g=f[e>>2]|0;f[e>>2]=0;if(!g){Lo(a);return}b=f[g+28>>2]|0;if(b|0)do{e=b;b=f[b>>2]|0;oi(e+8|0);ar(e)}while((b|0)!=0);e=g+20|0;b=f[e>>2]|0;f[e>>2]=0;if(b|0)ar(b);b=f[g+8>>2]|0;if(b|0)do{e=b;b=f[b>>2]|0;c=f[e+20>>2]|0;if(c|0){d=e+24|0;if((f[d>>2]|0)!=(c|0))f[d>>2]=c;ar(c)}Lo(e+8|0);ar(e)}while((b|0)!=0);b=f[g>>2]|0;f[g>>2]=0;if(b|0)ar(b);ar(g);Lo(a);return}function pi(a,b){a=a|0;b=b|0;var c=0,d=0,e=0,g=0,h=0,i=0,j=0,k=0;k=a+4|0;d=f[k>>2]|0;c=f[a>>2]|0;e=((d-c|0)/12|0)+1|0;if(e>>>0>357913941){Lp(a);c=f[a>>2]|0;d=f[k>>2]|0}j=a+8|0;i=((f[j>>2]|0)-c|0)/12|0;h=i<<1;h=i>>>0<178956970?(h>>>0>>0?e:h):357913941;e=(d-c|0)/12|0;do if(h)if(h>>>0>357913941){a=Ia(4)|0;Eq(a);sa(a|0,1344,125)}else{i=ln(h*12|0)|0;break}else i=0;while(0);g=i+(e*12|0)|0;f[g>>2]=f[b>>2];f[g+4>>2]=f[b+4>>2];f[g+8>>2]=f[b+8>>2];e=d-c|0;d=g+(((e|0)/-12|0)*12|0)|0;if((e|0)>0)Mg(d|0,c|0,e|0)|0;f[a>>2]=d;f[k>>2]=g+12;f[j>>2]=i+(h*12|0);if(!c)return;ar(c);return}function qi(a,b){a=a|0;b=b|0;var c=0,d=0,e=0;e=u;u=u+32|0;c=e+16|0;d=e;switch(b<<24>>24){case 0:{d=ln(48)|0;Op(d);f[a>>2]=0;f[a+4>>2]=0;f[a+8>>2]=0;f[a+12>>2]=0;f[a+16>>2]=d;u=e;return}case 1:{d=ln(52)|0;Xo(d);f[a>>2]=0;f[a+4>>2]=0;f[a+8>>2]=0;f[a+12>>2]=0;f[a+16>>2]=d;u=e;return}default:{f[d>>2]=0;f[d+4>>2]=0;f[d+8>>2]=0;Pj(d,19217,28);f[c>>2]=-1;b=c+4|0;ml(b,d);f[a>>2]=f[c>>2];ml(a+4|0,b);f[a+16>>2]=0;Lo(b);Lo(d);u=e;return}}}function ri(a,b){a=a|0;b=b|0;var c=0,d=0,e=0,g=0,h=0,i=0,j=0,k=0,l=0;j=u;u=u+32|0;i=j+16|0;c=j+8|0;d=j;g=a+8|0;if(f[g>>2]<<5>>>0>=b>>>0){u=j;return}f[i>>2]=0;h=i+4|0;f[h>>2]=0;e=i+8|0;f[e>>2]=0;if((b|0)<0)Lp(i);l=((b+-1|0)>>>5)+1|0;k=ln(l<<2)|0;f[i>>2]=k;f[h>>2]=0;f[e>>2]=l;l=f[a>>2]|0;f[c>>2]=l;f[c+4>>2]=0;k=a+4|0;b=f[k>>2]|0;f[d>>2]=l+(b>>>5<<2);f[d+4>>2]=b&31;vg(i,c,d);b=f[a>>2]|0;f[a>>2]=f[i>>2];f[i>>2]=b;a=f[k>>2]|0;f[k>>2]=f[h>>2];f[h>>2]=a;a=f[g>>2]|0;f[g>>2]=f[e>>2];f[e>>2]=a;if(b|0)ar(b);u=j;return}function si(a,c){a=a|0;c=c|0;var d=0,e=0,g=0,h=0,i=0,j=0,k=0,l=0;k=a+228|0;j=a+232|0;d=f[k>>2]|0;if((f[j>>2]|0)==(d|0)){l=0;return l|0}g=a+4|0;e=0;a:while(1){a=f[d+(e*116|0)>>2]|0;if(((a|0)>=0?(d=f[g>>2]|0,h=f[d+8>>2]|0,(a|0)<((f[d+12>>2]|0)-h>>2|0)):0)?(i=f[h+(a<<2)>>2]|0,(Sa[f[(f[i>>2]|0)+24>>2]&255](i)|0)>0):0){a=0;do{if((Wa[f[(f[i>>2]|0)+20>>2]&127](i,a)|0)==(c|0))break a;a=a+1|0}while((a|0)<(Sa[f[(f[i>>2]|0)+24>>2]&255](i)|0))}a=e+1|0;d=f[k>>2]|0;if(a>>>0>=(((f[j>>2]|0)-d|0)/116|0)>>>0){a=0;l=11;break}else e=a}if((l|0)==11)return a|0;l=f[k>>2]|0;l=(b[l+(e*116|0)+72>>0]|0)==0?0:l+(e*116|0)+4|0;return l|0}function ti(a,b,c){a=a|0;b=b|0;c=c|0;var d=0,e=0,g=0,h=0,i=0,j=0,k=0,l=0,m=0,n=0,o=0;k=(f[b+4>>2]|0)-(f[b>>2]|0)|0;l=k>>2;g=a+8|0;e=f[(f[g>>2]|0)+40>>2]|0;m=Zq((e|0)>-1?e:-1)|0;h=c+8|0;if((k|0)<=0){c=1;_q(m);return c|0}k=c+16|0;i=0;j=0;while(1){o=h;n=f[o>>2]|0;o=f[o+4>>2]|0;a=k;b=f[a>>2]|0;a=Ho(b|0,f[a+4>>2]|0,e|0,0)|0;d=I;if((o|0)<(d|0)|(o|0)==(d|0)&n>>>0>>0){b=0;a=5;break}Mg(m|0,(f[c>>2]|0)+b|0,e|0)|0;o=k;f[o>>2]=a;f[o+4>>2]=d;Mg((f[f[(f[g>>2]|0)+64>>2]>>2]|0)+j|0,m|0,e|0)|0;i=i+1|0;if((i|0)>=(l|0)){b=1;a=5;break}else j=j+e|0}if((a|0)==5){_q(m);return b|0}return 0}function ui(a,b){a=a|0;b=b|0;var c=0,d=0,e=0,g=0,h=0,i=0,j=0,k=0;k=a+8|0;d=f[k>>2]|0;j=a+4|0;e=f[j>>2]|0;if(d-e>>2>>>0>=b>>>0){ej(e|0,0,b<<2|0)|0;f[j>>2]=e+(b<<2);return}c=f[a>>2]|0;g=(e-c>>2)+b|0;if(g>>>0>1073741823){Lp(a);c=f[a>>2]|0;d=f[k>>2]|0;e=f[j>>2]|0}d=d-c|0;h=d>>1;h=d>>2>>>0<536870911?(h>>>0>>0?g:h):1073741823;d=e-c>>2;do if(h)if(h>>>0>1073741823){a=Ia(4)|0;Eq(a);sa(a|0,1344,125)}else{i=ln(h<<2)|0;break}else i=0;while(0);g=i+(d<<2)|0;ej(g|0,0,b<<2|0)|0;e=e-c|0;d=g+(0-(e>>2)<<2)|0;if((e|0)>0)Mg(d|0,c|0,e|0)|0;f[a>>2]=d;f[j>>2]=g+(b<<2);f[k>>2]=i+(h<<2);if(!c)return;ar(c);return}function vi(a,c){a=a|0;c=c|0;var d=0,e=0,g=0,h=0,i=0,j=0,k=0;j=a+8|0;g=f[j>>2]|0;k=a+4|0;d=f[k>>2]|0;if((g-d|0)>>>0>=c>>>0){do{b[d>>0]=0;d=(f[k>>2]|0)+1|0;f[k>>2]=d;c=c+-1|0}while((c|0)!=0);return}e=f[a>>2]|0;h=d-e+c|0;if((h|0)<0){Lp(a);e=f[a>>2]|0;g=f[j>>2]|0;d=f[k>>2]|0}i=g-e|0;g=i<<1;g=i>>>0<1073741823?(g>>>0>>0?h:g):2147483647;if(!g)h=0;else h=ln(g)|0;i=h+(d-e)|0;h=h+g|0;d=i;g=i;do{b[d>>0]=0;d=g+1|0;g=d;c=c+-1|0}while((c|0)!=0);d=f[a>>2]|0;e=(f[k>>2]|0)-d|0;c=i+(0-e)|0;if((e|0)>0)Mg(c|0,d|0,e|0)|0;f[a>>2]=c;f[k>>2]=g;f[j>>2]=h;if(!d)return;ar(d);return}function wi(a,c,d,e,g,h,i,j){a=a|0;c=c|0;d=d|0;e=e|0;g=g|0;h=h|0;i=i|0;j=j|0;var k=0,l=0,m=0,n=0,o=0;o=u;u=u+16|0;n=o;if((-18-c|0)>>>0>>0)Hp(a);if((b[a+11>>0]|0)<0)m=f[a>>2]|0;else m=a;if(c>>>0<2147483623){l=d+c|0;k=c<<1;l=l>>>0>>0?k:l;l=l>>>0<11?11:l+16&-16}else l=-17;k=ln(l)|0;if(g|0)So(k,m,g)|0;if(i|0)So(k+g|0,j,i)|0;d=e-h|0;e=d-g|0;if(e|0)So(k+g+i|0,m+g+h|0,e)|0;if((c|0)!=10)ar(m);f[a>>2]=k;f[a+8>>2]=l|-2147483648;m=d+i|0;f[a+4>>2]=m;b[n>>0]=0;Qp(k+m|0,n);u=o;return}function xi(a,c,d){a=a|0;c=c|0;d=d|0;var e=0,g=0,h=0,i=0,j=0;g=d+16|0;e=f[g>>2]|0;if(!e)if(!(Al(d)|0)){e=f[g>>2]|0;h=5}else e=0;else h=5;a:do if((h|0)==5){j=d+20|0;i=f[j>>2]|0;g=i;if((e-i|0)>>>0>>0){e=Na[f[d+36>>2]&31](d,a,c)|0;break}b:do if((b[d+75>>0]|0)>-1){i=c;while(1){if(!i){h=g;d=0;g=c;e=a;break b}e=i+-1|0;if((b[a+e>>0]|0)==10)break;else i=e}e=Na[f[d+36>>2]&31](d,a,i)|0;if(e>>>0>>0)break a;h=f[j>>2]|0;d=i;g=c-i|0;e=a+i|0}else{h=g;d=0;g=c;e=a}while(0);Mg(h|0,e|0,g|0)|0;f[j>>2]=(f[j>>2]|0)+g;e=d+g|0}while(0);return e|0}function yi(a,b){a=a|0;b=b|0;var c=0,d=0,e=0,g=0,h=0;h=u;u=u+16|0;d=h;e=yg(a,d,b)|0;c=f[e>>2]|0;if(c|0){a=c;a=a+28|0;u=h;return a|0}g=ln(40)|0;ml(g+16|0,b);c=g+28|0;f[c>>2]=0;f[c+4>>2]=0;f[c+8>>2]=0;c=f[d>>2]|0;f[g>>2]=0;f[g+4>>2]=0;f[g+8>>2]=c;f[e>>2]=g;c=f[f[a>>2]>>2]|0;if(!c)c=g;else{f[a>>2]=c;c=f[e>>2]|0}Me(f[a+4>>2]|0,c);a=a+8|0;f[a>>2]=(f[a>>2]|0)+1;a=g;a=a+28|0;u=h;return a|0}function zi(a,c,d){a=a|0;c=c|0;d=d|0;var e=0,g=0,i=0,j=0,k=0,l=0;j=u;u=u+16|0;i=j;do if(((h[(f[a+4>>2]|0)+36>>0]|0)<<8&65535)>511){k=d+8|0;l=f[k+4>>2]|0;g=d+16|0;e=g;c=f[e>>2]|0;e=f[e+4>>2]|0;if((l|0)>(e|0)|((l|0)==(e|0)?(f[k>>2]|0)>>>0>c>>>0:0)){l=b[(f[d>>2]|0)+c>>0]|0;k=Ho(c|0,e|0,1,0)|0;c=g;f[c>>2]=k;f[c+4>>2]=I;c=l&255;f[a+24>>2]=c;break}else{l=0;u=j;return l|0}}else c=f[a+24>>2]|0;while(0);f[i>>2]=1428;f[i+4>>2]=-1;Bp(i,c);l=Lk(i,f[a+16>>2]|0)|0;u=j;return l|0}function Ai(a,b){a=a|0;b=b|0;var c=0,d=0,e=0,g=0,h=0,i=0,j=0,k=0;i=a+228|0;h=a+232|0;c=f[i>>2]|0;a:do if((f[h>>2]|0)!=(c|0)){j=a+4|0;d=0;b:while(1){c=f[c+(d*116|0)>>2]|0;if(((c|0)>=0?(k=f[j>>2]|0,e=f[k+8>>2]|0,(c|0)<((f[k+12>>2]|0)-e>>2|0)):0)?(g=f[e+(c<<2)>>2]|0,(Sa[f[(f[g>>2]|0)+24>>2]&255](g)|0)>0):0){c=0;do{if((Wa[f[(f[g>>2]|0)+20>>2]&127](g,c)|0)==(b|0))break b;c=c+1|0}while((c|0)<(Sa[f[(f[g>>2]|0)+24>>2]&255](g)|0))}d=d+1|0;c=f[i>>2]|0;if(d>>>0>=(((f[h>>2]|0)-c|0)/116|0)>>>0)break a}k=(f[i>>2]|0)+(d*116|0)+76|0;return k|0}while(0);k=a+200|0;return k|0}function Bi(a){a=a|0;var b=0,c=0,d=0;f[a>>2]=4800;b=a+100|0;c=a+4|0;d=c+96|0;do{f[c>>2]=0;c=c+4|0}while((c|0)<(d|0));f[b>>2]=-1;f[a+104>>2]=-1;f[a+108>>2]=-1;b=a+168|0;c=a+112|0;d=c+56|0;do{f[c>>2]=0;c=c+4|0}while((c|0)<(d|0));n[b>>2]=$(1.0);b=a+240|0;c=a+172|0;d=c+68|0;do{f[c>>2]=0;c=c+4|0}while((c|0)<(d|0));Ym(b);Ym(a+280|0);d=a+320|0;f[d>>2]=0;f[d+4>>2]=0;f[d+8>>2]=0;f[d+12>>2]=0;f[d+16>>2]=0;f[d+20>>2]=0;f[d+24>>2]=0;f[d+28>>2]=0;f[a+352>>2]=-1;f[a+356>>2]=-1;f[a+360>>2]=2;f[a+364>>2]=7;d=a+368|0;f[d>>2]=0;f[d+4>>2]=0;f[d+8>>2]=0;f[d+12>>2]=0;f[d+16>>2]=0;f[d+20>>2]=0;return}function Ci(a){a=a|0;var b=0,c=0,d=0,e=0,g=0,h=0;g=f[a+4>>2]|0;h=a+8|0;b=f[h>>2]|0;if((b|0)!=(g|0))do{f[h>>2]=b+-116;c=f[b+-12>>2]|0;if(c|0){e=b+-8|0;d=f[e>>2]|0;if((d|0)!=(c|0))f[e>>2]=d+(~((d+-4-c|0)>>>2)<<2);ar(c)}c=f[b+-28>>2]|0;if(c|0){e=b+-24|0;d=f[e>>2]|0;if((d|0)!=(c|0))f[e>>2]=d+(~((d+-4-c|0)>>>2)<<2);ar(c)}c=f[b+-40>>2]|0;if(c|0){e=b+-36|0;d=f[e>>2]|0;if((d|0)!=(c|0))f[e>>2]=d+(~((d+-4-c|0)>>>2)<<2);ar(c)}Bj(b+-112|0);b=f[h>>2]|0}while((b|0)!=(g|0));b=f[a>>2]|0;if(!b)return;ar(b);return}function Di(a,c,d){a=a|0;c=c|0;d=d|0;var e=0,g=0;g=u;u=u+32|0;d=g;if((h[(f[a+4>>2]|0)+36>>0]<<8&65535)>511?!(Sa[f[(f[a>>2]|0)+52>>2]&255](a)|0):0){e=0;u=g;return e|0}f[d>>2]=1456;f[d+4>>2]=-1;c=d+8|0;f[c>>2]=0;f[c+4>>2]=0;f[c+8>>2]=0;f[c+12>>2]=0;Hl(d,f[a+24>>2]|0,f[a+28>>2]|0,b[(f[a+8>>2]|0)+24>>0]|0,$(n[a+32>>2]));e=Lk(d,f[a+16>>2]|0)|0;f[d>>2]=1456;a=f[c>>2]|0;if(a|0){c=d+12|0;d=f[c>>2]|0;if((d|0)!=(a|0))f[c>>2]=d+(~((d+-4-a|0)>>>2)<<2);ar(a)}u=g;return e|0}function Ei(a){a=a|0;var b=0,c=0,d=0,e=0,g=0,h=0;b=f[a>>2]|0;if(!b)return;h=a+4|0;c=f[h>>2]|0;if((c|0)!=(b|0)){do{f[h>>2]=c+-116;d=f[c+-12>>2]|0;if(d|0){g=c+-8|0;e=f[g>>2]|0;if((e|0)!=(d|0))f[g>>2]=e+(~((e+-4-d|0)>>>2)<<2);ar(d)}d=f[c+-28>>2]|0;if(d|0){g=c+-24|0;e=f[g>>2]|0;if((e|0)!=(d|0))f[g>>2]=e+(~((e+-4-d|0)>>>2)<<2);ar(d)}d=f[c+-40>>2]|0;if(d|0){g=c+-36|0;e=f[g>>2]|0;if((e|0)!=(d|0))f[g>>2]=e+(~((e+-4-d|0)>>>2)<<2);ar(d)}Bj(c+-112|0);c=f[h>>2]|0}while((c|0)!=(b|0));b=f[a>>2]|0}ar(b);return}function Fi(){var a=0,b=0,c=0,d=0,e=0,g=0,h=0,i=0;e=u;u=u+48|0;h=e+32|0;c=e+24|0;i=e+16|0;g=e;e=e+36|0;a=hn()|0;if(a|0?(d=f[a>>2]|0,d|0):0){b=d+48|0;a=f[b>>2]|0;b=f[b+4>>2]|0;if(!((a&-256|0)==1126902528&(b|0)==1129074247)){f[c>>2]=f[1468];Qn(22180,c)}if((a|0)==1126902529&(b|0)==1129074247)a=f[d+44>>2]|0;else a=d+80|0;f[e>>2]=a;d=f[d>>2]|0;a=f[d+4>>2]|0;d=Na[f[(f[320]|0)+16>>2]&31](1280,d,e)|0;b=f[1468]|0;if(d){i=f[e>>2]|0;i=Sa[f[(f[i>>2]|0)+8>>2]&255](i)|0;f[g>>2]=b;f[g+4>>2]=a;f[g+8>>2]=i;Qn(22094,g)}else{f[i>>2]=b;f[i+4>>2]=a;Qn(22139,i)}}Qn(22218,h)}function Gi(a,b){a=a|0;b=b|0;var c=0,d=0,e=0,g=0,h=0,i=0,j=0;j=ln(36)|0;xp(j);i=a+8|0;g=a+12|0;a=f[g>>2]|0;c=f[i>>2]|0;e=a-c>>2;do if((e|0)<=(b|0)){d=b+1|0;if(d>>>0>e>>>0){ig(i,d-e|0);break}if(d>>>0>>0?(h=c+(d<<2)|0,(a|0)!=(h|0)):0)do{e=a+-4|0;f[g>>2]=e;a=f[e>>2]|0;f[e>>2]=0;if(a|0)Pa[f[(f[a>>2]|0)+4>>2]&127](a);a=f[g>>2]|0}while((a|0)!=(h|0))}while(0);i=(f[i>>2]|0)+(b<<2)|0;a=f[i>>2]|0;f[i>>2]=j;if(!a)return 1;Pa[f[(f[a>>2]|0)+4>>2]&127](a);return 1}function Hi(a){a=a|0;var b=0,c=0,d=0;b=f[a+92>>2]|0;if(b|0){d=a+96|0;c=f[d>>2]|0;if((c|0)!=(b|0))f[d>>2]=c+(~((c+-4-b|0)>>>2)<<2);ar(b)}b=f[a+76>>2]|0;if(b|0){d=a+80|0;c=f[d>>2]|0;if((c|0)!=(b|0))f[d>>2]=c+(~((c+-4-b|0)>>>2)<<2);ar(b)}b=f[a+64>>2]|0;if(b|0){d=a+68|0;c=f[d>>2]|0;if((c|0)!=(b|0))f[d>>2]=c+(~((c+-4-b|0)>>>2)<<2);ar(b)}b=f[a+52>>2]|0;if(b|0){d=a+56|0;c=f[d>>2]|0;if((c|0)!=(b|0))f[d>>2]=c+(~((c+-4-b|0)>>>2)<<2);ar(b)}f[a+4>>2]=4708;b=f[a+24>>2]|0;if(b|0)ar(b);b=f[a+12>>2]|0;if(!b)return;ar(b);return}function Ii(a,b){a=a|0;b=b|0;var c=0,d=0,e=0,g=0,h=0,i=0,j=0,k=0;k=a+4|0;d=f[k>>2]|0;c=f[a>>2]|0;e=(d-c>>2)+1|0;if(e>>>0>1073741823){Lp(a);c=f[a>>2]|0;d=f[k>>2]|0}j=a+8|0;i=(f[j>>2]|0)-c|0;h=i>>1;h=i>>2>>>0<536870911?(h>>>0>>0?e:h):1073741823;e=d-c>>2;do if(h)if(h>>>0>1073741823){a=Ia(4)|0;Eq(a);sa(a|0,1344,125)}else{i=ln(h<<2)|0;break}else i=0;while(0);g=i+(e<<2)|0;f[g>>2]=f[b>>2];e=d-c|0;d=g+(0-(e>>2)<<2)|0;if((e|0)>0)Mg(d|0,c|0,e|0)|0;f[a>>2]=d;f[k>>2]=g+4;f[j>>2]=i+(h<<2);if(!c)return;ar(c);return}function Ji(a,c,d){a=a|0;c=c|0;d=d|0;var e=0,g=0,h=0,i=0;g=u;u=u+80|0;i=g;h=g+16|0;e=g+4|0;f[i>>2]=d&1;Dn(h,6306,i)|0;f[e>>2]=0;f[e+4>>2]=0;f[e+8>>2]=0;Pj(e,h,Xj(h)|0);a=yi(a,c)|0;c=a+11|0;if((b[c>>0]|0)<0){b[f[a>>2]>>0]=0;f[a+4>>2]=0}else{b[a>>0]=0;b[c>>0]=0}Hh(a,0);f[a>>2]=f[e>>2];f[a+4>>2]=f[e+4>>2];f[a+8>>2]=f[e+8>>2];f[e>>2]=0;f[e+4>>2]=0;f[e+8>>2]=0;Lo(e);u=g;return}function Ki(a,b,c){a=a|0;b=b|0;c=c|0;var d=0,e=0,g=0;g=u;u=u+32|0;d=g+12|0;e=g;f[d>>2]=0;f[d+4>>2]=0;f[d+8>>2]=0;Pj(d,b,Xj(b)|0);f[e>>2]=0;f[e+4>>2]=0;f[e+8>>2]=0;Pj(e,c,Xj(c)|0);b=ag(f[a+4>>2]|0,d,e)|0;if(!b){a=-1;Lo(e);Lo(d);u=g;return a|0}a=f[b+40>>2]|0;Lo(e);Lo(d);u=g;return a|0}function Li(a,c,d){a=a|0;c=c|0;d=d|0;do if(a){if(c>>>0<128){b[a>>0]=c;a=1;break}d=(Yq()|0)+188|0;if(!(f[f[d>>2]>>2]|0))if((c&-128|0)==57216){b[a>>0]=c;a=1;break}else{a=Oq()|0;f[a>>2]=84;a=-1;break}if(c>>>0<2048){b[a>>0]=c>>>6|192;b[a+1>>0]=c&63|128;a=2;break}if(c>>>0<55296|(c&-8192|0)==57344){b[a>>0]=c>>>12|224;b[a+1>>0]=c>>>6&63|128;b[a+2>>0]=c&63|128;a=3;break}if((c+-65536|0)>>>0<1048576){b[a>>0]=c>>>18|240;b[a+1>>0]=c>>>12&63|128;b[a+2>>0]=c>>>6&63|128;b[a+3>>0]=c&63|128;a=4;break}else{a=Oq()|0;f[a>>2]=84;a=-1;break}}else a=1;while(0);return a|0}function Mi(a){a=a|0;var b=0,c=0,d=0,e=0;e=f[a>>2]|0;f[a>>2]=0;if(!e)return;a=f[e+28>>2]|0;if(a|0)do{d=a;a=f[a>>2]|0;Mi(d+20|0);Lo(d+8|0);ar(d)}while((a|0)!=0);d=e+20|0;a=f[d>>2]|0;f[d>>2]=0;if(a|0)ar(a);a=f[e+8>>2]|0;if(a|0)do{d=a;a=f[a>>2]|0;b=f[d+20>>2]|0;if(b|0){c=d+24|0;if((f[c>>2]|0)!=(b|0))f[c>>2]=b;ar(b)}Lo(d+8|0);ar(d)}while((a|0)!=0);a=f[e>>2]|0;f[e>>2]=0;if(a|0)ar(a);ar(e);return}function Ni(a,b){a=a|0;b=b|0;var c=0,d=0,e=0;e=u;u=u+32|0;c=e+12|0;d=e;f[c>>2]=0;f[c+4>>2]=0;f[c+8>>2]=0;Pj(c,b,Xj(b)|0);f[d>>2]=0;f[d+4>>2]=0;f[d+8>>2]=0;Pj(d,5976,4);b=ag(f[a+4>>2]|0,d,c)|0;if(!b){a=-1;Lo(d);Lo(c);u=e;return a|0}a=f[b+40>>2]|0;Lo(d);Lo(c);u=e;return a|0}function Oi(a,b){a=a|0;b=b|0;var c=0,d=0,e=0,g=0,i=0,j=0;j=u;u=u+80|0;i=j;g=j+56|0;e=j+40|0;d=i;c=d+40|0;do{f[d>>2]=f[b>>2];d=d+4|0;b=b+4|0}while((d|0)<(c|0));pc(e,i,g);b=f[e>>2]|0;if(!b){Lo(e+4|0);g=h[g+7>>0]|0;f[a>>2]=0;f[a+4>>2]=0;f[a+8>>2]=0;f[a+12>>2]=0;f[a+16>>2]=g;i=i+24|0;fr(i);u=j;return}else{f[a>>2]=b;g=e+4|0;ml(a+4|0,g);Lo(g);i=i+24|0;fr(i);u=j;return}}function Pi(a,c){a=a|0;c=c|0;var d=0,e=0,g=0,h=0,i=0,j=0;e=u;u=u+16|0;d=e;if(!c){a=0;u=e;return a|0}i=c+4|0;g=(f[i>>2]|0)-(f[c>>2]|0)>>2;b[d>>0]=0;Yg(a,g,d);g=c+24|0;h=c+28|0;j=(f[h>>2]|0)-(f[g>>2]|0)>>2;b[d>>0]=0;Yg(a+12|0,j,d);If(a+28|0,(f[i>>2]|0)-(f[c>>2]|0)>>2,1552);Sj(a+52|0,(f[h>>2]|0)-(f[g>>2]|0)>>2);Sj(a+40|0,(f[h>>2]|0)-(f[g>>2]|0)>>2);f[a+64>>2]=c;b[a+24>>0]=1;a=1;u=e;return a|0}function Qi(a,b,c,d){a=a|0;b=b|0;c=c|0;d=d|0;var e=0,g=0,h=0,i=0,j=0;j=u;u=u+48|0;h=j+4|0;i=j;if((d|0)!=1){f[a>>2]=0;u=j;return}g=f[b+12>>2]|0;d=f[b+4>>2]|0;b=h;e=b+36|0;do{f[b>>2]=0;b=b+4|0}while((b|0)<(e|0));Pg(i,c,g,d,h);e=f[h+24>>2]|0;if(e|0){b=h+28|0;d=f[b>>2]|0;if((d|0)!=(e|0))f[b>>2]=d+(~((d+-4-e|0)>>>2)<<2);ar(e)}f[a>>2]=f[i>>2];u=j;return}function Ri(a){a=a|0;var b=0,c=0,d=0,e=0;b=f[a+28>>2]|0;if(b|0)do{c=b;b=f[b>>2]|0;e=c+20|0;d=f[e>>2]|0;f[e>>2]=0;if(d|0){Ri(d);ar(d)}Lo(c+8|0);ar(c)}while((b|0)!=0);e=a+20|0;b=f[e>>2]|0;f[e>>2]=0;if(b|0)ar(b);b=f[a+8>>2]|0;if(b|0)do{e=b;b=f[b>>2]|0;c=f[e+20>>2]|0;if(c|0){d=e+24|0;if((f[d>>2]|0)!=(c|0))f[d>>2]=c;ar(c)}Lo(e+8|0);ar(e)}while((b|0)!=0);b=f[a>>2]|0;f[a>>2]=0;if(!b)return;ar(b);return}function Si(a,b,c,d){a=a|0;b=b|0;c=c|0;d=d|0;var e=0,g=0,h=0;if(b>>>0<64){e=f[a+8>>2]|0;if(e>>>0<=1){h=0;return h|0}b=f[c>>2]|0;c=1;d=0;do{d=(f[b+(d<<2)>>2]|0)>>>0>(f[b+(c<<2)>>2]|0)>>>0?c:d;c=c+1|0}while(c>>>0>>0);return d|0}h=a+576|0;g=f[h>>2]|0;e=32-g|0;c=a+572|0;b=f[c>>2]|0;d=f[b>>2]<>2]=a;g=b+4|0;f[c>>2]=g;h=32-a|0;h=(f[g>>2]|0)>>>h|d>>>(h-e|0);return h|0}d=d>>>28;g=g+4|0;f[h>>2]=g;if((g|0)!=32){h=d;return h|0}f[c>>2]=b+4;f[h>>2]=0;h=d;return h|0}function Ti(a,c,d){a=a|0;c=c|0;d=d|0;var e=0,g=0,i=0,j=0,k=0;do if(((h[(f[a+4>>2]|0)+36>>0]|0)<<8&65535)<512){j=d+8|0;k=f[j+4>>2]|0;i=d+16|0;g=i;e=f[g>>2]|0;g=f[g+4>>2]|0;if((k|0)>(g|0)|((k|0)==(g|0)?(f[j>>2]|0)>>>0>e>>>0:0)){k=b[(f[d>>2]|0)+e>>0]|0;g=Ho(e|0,g|0,1,0)|0;j=i;f[j>>2]=g;f[j+4>>2]=I;f[a+24>>2]=k&255;break}else{k=0;return k|0}}while(0);k=xd(a,c,d)|0;return k|0}function Ui(a,b){a=a|0;b=b|0;var c=0,d=0;c=a+16|0;a=f[b>>2]|0;f[b>>2]=0;d=f[c>>2]|0;f[c>>2]=a;if(!d)return;c=d+88|0;b=f[c>>2]|0;f[c>>2]=0;if(b|0){a=f[b+8>>2]|0;if(a|0){c=b+12|0;if((f[c>>2]|0)!=(a|0))f[c>>2]=a;ar(a)}ar(b)}b=f[d+68>>2]|0;if(b|0){c=d+72|0;a=f[c>>2]|0;if((a|0)!=(b|0))f[c>>2]=a+(~((a+-4-b|0)>>>2)<<2);ar(b)}c=d+64|0;b=f[c>>2]|0;f[c>>2]=0;if(b|0){a=f[b>>2]|0;if(a|0){c=b+4|0;if((f[c>>2]|0)!=(a|0))f[c>>2]=a;ar(a)}ar(b)}ar(d);return}function Vi(a,b){a=a|0;b=b|0;var c=0,d=0,e=0,g=0,h=0,i=0,j=0,k=0;j=a+8|0;g=f[a>>2]|0;d=g;if((((f[j>>2]|0)-g|0)/12|0)>>>0>=b>>>0)return;i=a+4|0;if(b>>>0>357913941){a=Ia(4)|0;Eq(a);sa(a|0,1344,125)}k=f[i>>2]|0;e=ln(b*12|0)|0;c=e+(((k-g|0)/12|0)*12|0)|0;h=c;e=e+(b*12|0)|0;b=k;if((b|0)==(d|0))c=h;else do{k=b;b=b+-12|0;f[c+-12>>2]=f[b>>2];f[c+-8>>2]=f[k+-8>>2];f[c+-4>>2]=f[k+-4>>2];c=c+-12|0}while((b|0)!=(d|0));f[a>>2]=c;f[i>>2]=h;f[j>>2]=e;if(!g)return;ar(g);return}function Wi(a,c,d,e){a=a|0;c=c|0;d=d|0;e=e|0;var g=0,h=0,i=0,j=0,k=0,l=0,m=0;m=u;u=u+128|0;g=m+124|0;l=m;h=l;i=5360;j=h+124|0;do{f[h>>2]=f[i>>2];h=h+4|0;i=i+4|0}while((h|0)<(j|0));if((c+-1|0)>>>0>2147483646)if(!c){c=1;k=4}else{g=Oq()|0;f[g>>2]=75;g=-1}else{g=a;k=4}if((k|0)==4){k=-2-g|0;k=c>>>0>k>>>0?k:c;f[l+48>>2]=k;h=l+20|0;f[h>>2]=g;f[l+44>>2]=g;g=g+k|0;c=l+16|0;f[c>>2]=g;f[l+28>>2]=g;g=rh(l,d,e)|0;if(k){d=f[h>>2]|0;b[d+(((d|0)==(f[c>>2]|0))<<31>>31)>>0]=0}}u=m;return g|0}function Xi(a,c,d,e){a=a|0;c=c|0;d=d|0;e=e|0;var g=0,h=0,i=0,j=0,k=0;if((a|0)<0){d=0;return d|0}if(!a){d=1;return d|0}j=d+8|0;k=f[j+4>>2]|0;i=d+16|0;g=i;h=f[g>>2]|0;g=f[g+4>>2]|0;if(!((k|0)>(g|0)|((k|0)==(g|0)?(f[j>>2]|0)>>>0>h>>>0:0))){k=0;return k|0}k=b[(f[d>>2]|0)+h>>0]|0;h=Ho(h|0,g|0,1,0)|0;j=i;f[j>>2]=h;f[j+4>>2]=I;switch(k<<24>>24){case 0:{k=_c(a,c,d,e)|0;return k|0}case 1:{k=Zd(a,d,e)|0;return k|0}default:{k=0;return k|0}}return 0}function Yi(a,c,d){a=a|0;c=c|0;d=d|0;var e=0,g=0,h=0,i=0,j=0,k=0;k=u;u=u+16|0;j=k;h=a+11|0;e=b[h>>0]|0;g=e<<24>>24<0;if(g)i=(f[a+8>>2]&2147483647)+-1|0;else i=10;do if(i>>>0>=d>>>0){if(g)e=f[a>>2]|0;else e=a;Oo(e,c,d)|0;b[j>>0]=0;Qp(e+d|0,j);if((b[h>>0]|0)<0){f[a+4>>2]=d;break}else{b[h>>0]=d;break}}else{if(g)e=f[a+4>>2]|0;else e=e&255;wi(a,i,d-i|0,e,0,e,d,c)}while(0);u=k;return a|0}function Zi(a,c){a=a|0;c=c|0;var d=0,e=0,g=0;d=f[a>>2]|0;if(!d){a=0;return a|0}e=f[c>>2]|0;if(!e){a=0;return a|0}g=f[e>>2]|0;mj(d,g,(f[e+4>>2]|0)-g|0,0)|0;b[a+24>>0]=b[c+24>>0]|0;f[a+28>>2]=f[c+28>>2];b[a+32>>0]=b[c+32>>0]|0;e=c+40|0;d=f[e+4>>2]|0;g=a+40|0;f[g>>2]=f[e>>2];f[g+4>>2]=d;g=c+48|0;d=f[g+4>>2]|0;e=a+48|0;f[e>>2]=f[g>>2];f[e+4>>2]=d;f[a+56>>2]=f[c+56>>2];c=c+8|0;a=a+8|0;f[a>>2]=f[c>>2];f[a+4>>2]=f[c+4>>2];f[a+8>>2]=f[c+8>>2];f[a+12>>2]=f[c+12>>2];a=1;return a|0}function _i(a,c,d){a=a|0;c=c|0;d=d|0;var e=0,g=0,h=0,i=0,j=0,k=0,l=0;l=u;u=u+16|0;k=l;if(c|0){h=a+11|0;e=b[h>>0]|0;if(e<<24>>24<0){j=f[a+4>>2]|0;g=(f[a+8>>2]&2147483647)+-1|0}else{j=e&255;g=10}i=j+c|0;if((g-j|0)>>>0>>0){lj(a,g,i-g|0,j,j,0,0);e=b[h>>0]|0}if(e<<24>>24<0)e=f[a>>2]|0;else e=a;Mn(e+j|0,c,d)|0;if((b[h>>0]|0)<0)f[a+4>>2]=i;else b[h>>0]=i;b[k>>0]=0;Qp(e+i|0,k)}u=l;return a|0}function $i(a){a=a|0;var b=0,c=0,d=0,e=0,g=0,h=0,i=0,j=0;j=a+4|0;g=f[j>>2]|0;i=a+8|0;a=f[i>>2]|0;d=g+4|0;c=f[d>>2]|0;b=f[g>>2]|0;e=c-b>>2;if(a>>>0<=e>>>0){if(a>>>0>>0?(h=b+(a<<2)|0,(c|0)!=(h|0)):0)f[d>>2]=c+(~((c+-4-h|0)>>>2)<<2)}else{ui(g,a-e|0);a=f[i>>2]|0}if((a|0)>0)d=0;else return 1;do{b=f[j>>2]|0;c=f[b>>2]|0;if((f[b+4>>2]|0)-c>>2>>>0<=d>>>0){Kp(b);c=f[b>>2]|0;a=f[i>>2]|0}f[c+(d<<2)>>2]=d;d=d+1|0}while((d|0)<(a|0));return 1}function aj(a){a=a|0;var b=0,c=0,d=0,e=0,g=0;f[a>>2]=4528;e=a+48|0;b=f[e>>2]|0;f[e>>2]=0;if(b|0)Pa[f[(f[b>>2]|0)+4>>2]&127](b);f[a>>2]=1620;b=f[a+20>>2]|0;if(b|0){d=a+24|0;c=f[d>>2]|0;if((c|0)!=(b|0))f[d>>2]=c+(~((c+-4-b|0)>>>2)<<2);ar(b)}d=a+8|0;b=f[d>>2]|0;if(!b){ar(a);return}e=a+12|0;c=f[e>>2]|0;if((c|0)!=(b|0)){do{g=c+-4|0;f[e>>2]=g;c=f[g>>2]|0;f[g>>2]=0;if(c|0)Pa[f[(f[c>>2]|0)+4>>2]&127](c);c=f[e>>2]|0}while((c|0)!=(b|0));b=f[d>>2]|0}ar(b);ar(a);return}function bj(a,c){a=a|0;c=c|0;var d=0,e=0,g=0,h=0,i=0;if(!(hi(a+8|0,c)|0)){a=0;return a|0}h=c+8|0;i=f[h+4>>2]|0;g=c+16|0;d=g;e=f[d>>2]|0;d=f[d+4>>2]|0;if((i|0)>(d|0)|((i|0)==(d|0)?(f[h>>2]|0)>>>0>e>>>0:0)?(i=b[(f[c>>2]|0)+e>>0]|0,e=Ho(e|0,d|0,1,0)|0,h=g,f[h>>2]=e,f[h+4>>2]=I,i<<24>>24):0){i=0;return i|0}i=Ff(a+84|0,c)|0;return i|0}function cj(a,c,d,e,g){a=a|0;c=c|0;d=d|0;e=e|0;g=g|0;var h=0;do if(!(wp(a,f[c+8>>2]|0,g)|0)){if(wp(a,f[c>>2]|0,g)|0){a=c+32|0;if((f[c+16>>2]|0)!=(d|0)?(h=c+20|0,(f[h>>2]|0)!=(d|0)):0){f[a>>2]=e;f[h>>2]=d;e=c+40|0;f[e>>2]=(f[e>>2]|0)+1;if((f[c+36>>2]|0)==1?(f[c+24>>2]|0)==2:0)b[c+54>>0]=1;f[c+44>>2]=4;break}if((e|0)==1)f[a>>2]=1}}else Lm(0,c,d,e);while(0);return}function dj(a){a=a|0;fr(a+496|0);fr(a+480|0);fr(a+464|0);fr(a+448|0);fr(a+432|0);fr(a+416|0);fr(a+400|0);fr(a+384|0);fr(a+368|0);fr(a+352|0);fr(a+336|0);fr(a+320|0);fr(a+304|0);fr(a+288|0);fr(a+272|0);fr(a+256|0);fr(a+240|0);fr(a+224|0);fr(a+208|0);fr(a+192|0);fr(a+176|0);fr(a+160|0);fr(a+144|0);fr(a+128|0);fr(a+112|0);fr(a+96|0);fr(a+80|0);fr(a+64|0);fr(a+48|0);fr(a+32|0);fr(a+16|0);fr(a);return}function ej(a,c,d){a=a|0;c=c|0;d=d|0;var e=0,g=0,h=0,i=0;h=a+d|0;c=c&255;if((d|0)>=67){while(a&3){b[a>>0]=c;a=a+1|0}e=h&-4|0;g=e-64|0;i=c|c<<8|c<<16|c<<24;while((a|0)<=(g|0)){f[a>>2]=i;f[a+4>>2]=i;f[a+8>>2]=i;f[a+12>>2]=i;f[a+16>>2]=i;f[a+20>>2]=i;f[a+24>>2]=i;f[a+28>>2]=i;f[a+32>>2]=i;f[a+36>>2]=i;f[a+40>>2]=i;f[a+44>>2]=i;f[a+48>>2]=i;f[a+52>>2]=i;f[a+56>>2]=i;f[a+60>>2]=i;a=a+64|0}while((a|0)<(e|0)){f[a>>2]=i;a=a+4|0}}while((a|0)<(h|0)){b[a>>0]=c;a=a+1|0}return h-d|0}function fj(a,b,c){a=a|0;b=b|0;c=c|0;var d=0,e=0;b=sd(a,b)|0;if(!b){c=0;return c|0}e=b+20|0;d=f[e>>2]|0;a=b+24|0;b=f[a>>2]|0;if((d|0)==(b|0)){c=0;return c|0}Aj(c,b-d|0,0);d=wl(c,0)|0;c=f[e>>2]|0;Mg(d|0,c|0,(f[a>>2]|0)-c|0)|0;c=1;return c|0}function gj(a,c,d,e,g){a=a|0;c=c|0;d=d|0;e=e|0;g=g|0;var h=0,i=0,j=0,k=0;b[c+53>>0]=1;do if((f[c+4>>2]|0)==(e|0)){b[c+52>>0]=1;h=c+16|0;a=f[h>>2]|0;k=c+54|0;j=c+48|0;i=c+24|0;e=c+36|0;if(!a){f[h>>2]=d;f[i>>2]=g;f[e>>2]=1;if(!((f[j>>2]|0)==1&(g|0)==1))break;b[k>>0]=1;break}if((a|0)!=(d|0)){f[e>>2]=(f[e>>2]|0)+1;b[k>>0]=1;break}e=f[i>>2]|0;if((e|0)==2){f[i>>2]=g;e=g}if((f[j>>2]|0)==1&(e|0)==1)b[k>>0]=1}while(0);return}function hj(a){a=a|0;var b=0,c=0,d=0,e=0;f[a>>2]=4528;e=a+48|0;b=f[e>>2]|0;f[e>>2]=0;if(b|0)Pa[f[(f[b>>2]|0)+4>>2]&127](b);f[a>>2]=1620;b=f[a+20>>2]|0;if(b|0){d=a+24|0;c=f[d>>2]|0;if((c|0)!=(b|0))f[d>>2]=c+(~((c+-4-b|0)>>>2)<<2);ar(b)}e=a+8|0;b=f[e>>2]|0;if(!b)return;d=a+12|0;c=f[d>>2]|0;if((c|0)!=(b|0)){do{a=c+-4|0;f[d>>2]=a;c=f[a>>2]|0;f[a>>2]=0;if(c|0)Pa[f[(f[c>>2]|0)+4>>2]&127](c);c=f[d>>2]|0}while((c|0)!=(b|0));b=f[e>>2]|0}ar(b);return}function ij(a,c){a=a|0;c=c|0;var d=0,e=0,g=0,h=0,i=0;if(!(ki(a+8|0,c)|0)){a=0;return a|0}h=c+8|0;i=f[h+4>>2]|0;g=c+16|0;d=g;e=f[d>>2]|0;d=f[d+4>>2]|0;if((i|0)>(d|0)|((i|0)==(d|0)?(f[h>>2]|0)>>>0>e>>>0:0)?(i=b[(f[c>>2]|0)+e>>0]|0,e=Ho(e|0,d|0,1,0)|0,h=g,f[h>>2]=e,f[h+4>>2]=I,i<<24>>24):0){i=0;return i|0}i=Ff(a+84|0,c)|0;return i|0}function jj(a){a=a|0;var b=0,c=0,d=0;f[a>>2]=1724;c=a+16|0;d=f[c>>2]|0;f[c>>2]=0;if(!d)return;c=d+88|0;a=f[c>>2]|0;f[c>>2]=0;if(a|0){b=f[a+8>>2]|0;if(b|0){c=a+12|0;if((f[c>>2]|0)!=(b|0))f[c>>2]=b;ar(b)}ar(a)}a=f[d+68>>2]|0;if(a|0){c=d+72|0;b=f[c>>2]|0;if((b|0)!=(a|0))f[c>>2]=b+(~((b+-4-a|0)>>>2)<<2);ar(a)}c=d+64|0;a=f[c>>2]|0;f[c>>2]=0;if(a|0){b=f[a>>2]|0;if(b|0){c=a+4|0;if((f[c>>2]|0)!=(b|0))f[c>>2]=b;ar(b)}ar(a)}ar(d);return}function kj(a,b){a=a|0;b=b|0;if(!b)return;else{kj(a,f[b>>2]|0);kj(a,f[b+4>>2]|0);tj(b+20|0,f[b+24>>2]|0);ar(b);return}}function lj(a,c,d,e,g,h,i){a=a|0;c=c|0;d=d|0;e=e|0;g=g|0;h=h|0;i=i|0;var j=0,k=0,l=0;if((-17-c|0)>>>0>>0)Hp(a);if((b[a+11>>0]|0)<0)l=f[a>>2]|0;else l=a;if(c>>>0<2147483623){k=d+c|0;j=c<<1;k=k>>>0>>0?j:k;k=k>>>0<11?11:k+16&-16}else k=-17;j=ln(k)|0;if(g|0)So(j,l,g)|0;d=e-h-g|0;if(d|0)So(j+g+i|0,l+g+h|0,d)|0;if((c|0)!=10)ar(l);f[a>>2]=j;f[a+8>>2]=k|-2147483648;return}function mj(a,b,c,d){a=a|0;b=b|0;c=c|0;d=d|0;var e=0,g=0,h=0;if((d|0)<0){a=0;return a|0}do if(!b){e=a+4|0;d=f[e>>2]|0;b=f[a>>2]|0;g=d-b|0;if(c>>>0>g>>>0){vi(a,c-g|0);break}if(c>>>0>>0?(h=b+c|0,(d|0)!=(h|0)):0)f[e>>2]=h}else hg(a,b,b+c|0);while(0);a=a+24|0;h=a;h=Ho(f[h>>2]|0,f[h+4>>2]|0,1,0)|0;f[a>>2]=h;f[a+4>>2]=I;a=1;return a|0}function nj(a,b,c){a=a|0;b=b|0;c=c|0;var d=0,e=0;bg(a,b,c);d=f[a+84>>2]|0;a=(f[a+88>>2]|0)-d|0;if((a|0)<=0)return;b=f[b>>2]|0;c=(a>>>0)/12|0;a=0;do{e=d+(a*12|0)|0;f[e>>2]=f[b+(f[e>>2]<<2)>>2];e=d+(a*12|0)+4|0;f[e>>2]=f[b+(f[e>>2]<<2)>>2];e=d+(a*12|0)+8|0;f[e>>2]=f[b+(f[e>>2]<<2)>>2];a=a+1|0}while((a|0)<(c|0));return}function oj(a,c){a=a|0;c=c|0;var d=0,e=0,g=0,h=0,i=0;h=a+64|0;if((f[h>>2]|0)==0?(g=ln(32)|0,wn(g),d=f[h>>2]|0,f[h>>2]=g,d|0):0){e=f[d>>2]|0;if(e|0){g=d+4|0;if((f[g>>2]|0)!=(e|0))f[g>>2]=e;ar(e)}ar(d)}e=cm(f[a+28>>2]|0)|0;e=X(b[a+24>>0]|0,e)|0;d=((e|0)<0)<<31>>31;i=f[h>>2]|0;g=kn(e|0,d|0,c|0,0)|0;if(!(mj(i,0,g,I)|0)){i=0;return i|0}Ak(a,f[h>>2]|0,e,d,0,0);f[a+80>>2]=c;i=1;return i|0}function pj(a,c){a=a|0;c=c|0;var d=0,e=0,g=0,h=0,i=0;h=u;u=u+16|0;g=h;f[a>>2]=c;f[a+68>>2]=0;f[a+72>>2]=0;af(g,c);e=a+4|0;i=f[g>>2]|0;f[g>>2]=0;d=f[e>>2]|0;f[e>>2]=i;if(d){sj(d);ar(d);d=f[g>>2]|0;f[g>>2]=0;if(d|0){sj(d);ar(d)}}else f[g>>2]=0;if(!(f[e>>2]|0)){i=0;u=h;return i|0}i=((f[c+88>>2]|0)-(f[c+84>>2]|0)|0)/12|0;b[g>>0]=0;Yg(a+56|0,i,g);i=1;u=h;return i|0}function qj(a,b,c,d,e,f){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;f=f|0;var g=0,h=0,i=0;g=e>>>0>1073741823?-1:e<<2;h=Zq(g)|0;ej(h|0,0,g|0)|0;g=a+8|0;ji(g,h,b,c);if((e|0)>=(d|0)){_q(h);return 1}a=0-e|0;f=e;do{i=c+(f<<2)|0;ji(g,i+(a<<2)|0,b+(f<<2)|0,i);f=f+e|0}while((f|0)<(d|0));_q(h);return 1}function rj(a,b,c){a=a|0;b=b|0;c=c|0;var d=0,e=0,g=0,h=0;h=u;u=u+64|0;g=h;if(!(wp(a,b,0)|0))if((b|0)!=0?(e=uh(b,1304,1288,0)|0,(e|0)!=0):0){b=g+4|0;d=b+52|0;do{f[b>>2]=0;b=b+4|0}while((b|0)<(d|0));f[g>>2]=e;f[g+8>>2]=a;f[g+12>>2]=-1;f[g+48>>2]=1;Xa[f[(f[e>>2]|0)+28>>2]&7](e,g,f[c>>2]|0,1);if((f[g+24>>2]|0)==1){f[c>>2]=f[g+16>>2];b=1}else b=0}else b=0;else b=1;u=h;return b|0}function sj(a){a=a|0;var b=0,c=0,d=0;b=f[a+48>>2]|0;if(b|0){d=a+52|0;c=f[d>>2]|0;if((c|0)!=(b|0))f[d>>2]=c+(~((c+-4-b|0)>>>2)<<2);ar(b)}b=f[a+24>>2]|0;if(b|0){d=a+28|0;c=f[d>>2]|0;if((c|0)!=(b|0))f[d>>2]=c+(~((c+-4-b|0)>>>2)<<2);ar(b)}b=f[a+12>>2]|0;if(b|0){d=a+16|0;c=f[d>>2]|0;if((c|0)!=(b|0))f[d>>2]=c+(~((c+-4-b|0)>>>2)<<2);ar(b)}d=f[a>>2]|0;if(!d)return;c=a+4|0;b=f[c>>2]|0;if((b|0)!=(d|0))f[c>>2]=b+(~((b+-4-d|0)>>>2)<<2);ar(d);return}function tj(a,b){a=a|0;b=b|0;if(!b)return;else{tj(a,f[b>>2]|0);tj(a,f[b+4>>2]|0);Lo(b+28|0);Lo(b+16|0);ar(b);return}}function uj(a,b,c){a=a|0;b=b|0;c=c|0;var d=0,e=0,g=0,i=0,j=0,k=0,l=0,m=0;if((b|0)>=33)Ga(17861,5981,53,17934);if((b|0)<=0)Ga(17963,5981,54,17934);j=a+8|0;g=a+4|0;i=0-(h[a+12>>0]|0)&255;d=f[j>>2]|0;e=0;do{if(d>>>0<4096){l=f[a>>2]|0;k=(f[g>>2]|0)+-1|0;f[g>>2]=k;d=h[l+k>>0]|0|d<<8;f[j>>2]=d}m=d&255;k=X(d>>>8,i)|0;l=m>>>0>>0;d=l?k+m|0:d-i-k|0;f[j>>2]=d;e=l&1|e<<1;b=b+-1|0}while((b|0)!=0);f[c>>2]=e;return}function vj(a,b,c,d,e,f){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;f=f|0;var g=0,h=0,i=0;g=e>>>0>1073741823?-1:e<<2;h=Zq(g)|0;ej(h|0,0,g|0)|0;g=a+8|0;mi(g,h,b,c);if((e|0)>=(d|0)){_q(h);return 1}a=0-e|0;f=e;do{i=c+(f<<2)|0;mi(g,i+(a<<2)|0,b+(f<<2)|0,i);f=f+e|0}while((f|0)<(d|0));_q(h);return 1}function wj(a,c,d){a=a|0;c=c|0;d=d|0;a=sd(a,c)|0;if(!a){d=0;return d|0}c=f[a+20>>2]|0;if(((f[a+24>>2]|0)-c|0)!=4){d=0;return d|0}a=c;a=h[a>>0]|h[a+1>>0]<<8|h[a+2>>0]<<16|h[a+3>>0]<<24;b[d>>0]=a;b[d+1>>0]=a>>8;b[d+2>>0]=a>>16;b[d+3>>0]=a>>24;d=1;return d|0}function xj(a,c,d,e,g,h,i,j,k,l){a=a|0;c=c|0;d=d|0;e=e|0;g=g|0;h=h|0;i=i|0;j=j|0;k=k|0;l=l|0;var m=0,n=0,o=0;f[a>>2]=d;if(d|0){o=d+16|0;m=f[o+4>>2]|0;n=a+8|0;f[n>>2]=f[o>>2];f[n+4>>2]=m;n=d+24|0;m=f[n+4>>2]|0;d=a+16|0;f[d>>2]=f[n>>2];f[d+4>>2]=m}b[a+24>>0]=e;f[a+28>>2]=g;b[a+32>>0]=h&1;o=a+40|0;f[o>>2]=i;f[o+4>>2]=j;o=a+48|0;f[o>>2]=k;f[o+4>>2]=l;f[a+56>>2]=c;return}function yj(a,c){a=a|0;c=c|0;var d=0,e=0,g=0,h=0,i=0;h=c+8|0;i=f[h+4>>2]|0;g=c+16|0;d=g;e=f[d>>2]|0;d=f[d+4>>2]|0;if(!((i|0)>(d|0)|((i|0)==(d|0)?(f[h>>2]|0)>>>0>e>>>0:0))){i=0;return i|0}h=b[(f[c>>2]|0)+e>>0]|0;i=Ho(e|0,d|0,1,0)|0;d=g;f[d>>2]=i;f[d+4>>2]=I;d=h&255;do if(d&128)if(yj(a,c)|0){d=f[a>>2]<<7;f[a>>2]=d;d=d|h&127;break}else{i=0;return i|0}while(0);f[a>>2]=d;i=1;return i|0}function zj(a){a=a|0;var b=0,c=0,d=0;if(!a)return;d=a+88|0;b=f[d>>2]|0;f[d>>2]=0;if(b|0){c=f[b+8>>2]|0;if(c|0){d=b+12|0;if((f[d>>2]|0)!=(c|0))f[d>>2]=c;ar(c)}ar(b)}b=f[a+68>>2]|0;if(b|0){d=a+72|0;c=f[d>>2]|0;if((c|0)!=(b|0))f[d>>2]=c+(~((c+-4-b|0)>>>2)<<2);ar(b)}d=a+64|0;b=f[d>>2]|0;f[d>>2]=0;if(b|0){c=f[b>>2]|0;if(c|0){d=b+4|0;if((f[d>>2]|0)!=(c|0))f[d>>2]=c;ar(c)}ar(b)}ar(a);return}function Aj(a,c,d){a=a|0;c=c|0;d=d|0;var e=0,g=0,h=0,i=0,j=0;j=u;u=u+16|0;h=j;g=a+11|0;e=b[g>>0]|0;i=e<<24>>24<0;if(i)e=f[a+4>>2]|0;else e=e&255;do if(e>>>0>=c>>>0)if(i){i=(f[a>>2]|0)+c|0;b[h>>0]=0;Qp(i,h);f[a+4>>2]=c;break}else{b[h>>0]=0;Qp(a+c|0,h);b[g>>0]=c;break}else _i(a,c-e|0,d)|0;while(0);u=j;return}function Bj(a){a=a|0;var b=0,c=0,d=0;b=f[a+52>>2]|0;if(b|0){d=a+56|0;c=f[d>>2]|0;if((c|0)!=(b|0))f[d>>2]=c+(~((c+-4-b|0)>>>2)<<2);ar(b)}b=f[a+40>>2]|0;if(b|0){d=a+44|0;c=f[d>>2]|0;if((c|0)!=(b|0))f[d>>2]=c+(~((c+-4-b|0)>>>2)<<2);ar(b)}b=f[a+28>>2]|0;if(b|0){d=a+32|0;c=f[d>>2]|0;if((c|0)!=(b|0))f[d>>2]=c+(~((c+-4-b|0)>>>2)<<2);ar(b)}b=f[a+12>>2]|0;if(b|0)ar(b);b=f[a>>2]|0;if(!b)return;ar(b);return}function Cj(a){a=a|0;var b=0,c=0,d=0;f[a>>2]=4588;b=a+100|0;c=a+4|0;d=c+96|0;do{f[c>>2]=0;c=c+4|0}while((c|0)<(d|0));f[b>>2]=-1;f[a+104>>2]=-1;f[a+108>>2]=-1;b=a+168|0;c=a+112|0;d=c+56|0;do{f[c>>2]=0;c=c+4|0}while((c|0)<(d|0));n[b>>2]=$(1.0);b=a+240|0;c=a+172|0;d=c+68|0;do{f[c>>2]=0;c=c+4|0}while((c|0)<(d|0));Ym(b);Ym(a+280|0);f[a+320>>2]=0;f[a+324>>2]=0;f[a+328>>2]=0;return}function Dj(a){a=a|0;var b=0,c=0,d=0,e=0,g=0;f[a>>2]=1620;b=f[a+20>>2]|0;if(b|0){d=a+24|0;c=f[d>>2]|0;if((c|0)!=(b|0))f[d>>2]=c+(~((c+-4-b|0)>>>2)<<2);ar(b)}d=a+8|0;b=f[d>>2]|0;if(!b){ar(a);return}e=a+12|0;c=f[e>>2]|0;if((c|0)!=(b|0)){do{g=c+-4|0;f[e>>2]=g;c=f[g>>2]|0;f[g>>2]=0;if(c|0)Pa[f[(f[c>>2]|0)+4>>2]&127](c);c=f[e>>2]|0}while((c|0)!=(b|0));b=f[d>>2]|0}ar(b);ar(a);return}function Ej(a,c,d){a=a|0;c=c|0;d=d|0;var e=0,g=0,h=0;e=u;u=u+32|0;g=e+12|0;h=e;f[g>>2]=0;f[g+4>>2]=0;f[g+8>>2]=0;f[h>>2]=0;f[h+4>>2]=0;f[h+8>>2]=0;Pj(h,d,Xj(d)|0);fj(c,h,g)|0;a=(b[g+11>>0]|0)<0?f[g>>2]|0:g;Lo(h);Lo(g);u=e;return a|0}function Fj(a,b){a=a|0;b=b|0;var c=0,d=0,e=0,g=0,h=0;f[a>>2]=0;h=a+4|0;f[h>>2]=0;f[a+8>>2]=0;e=b+4|0;c=(f[e>>2]|0)-(f[b>>2]|0)|0;d=c>>2;if(!d)return;if(d>>>0>1073741823){Lp(a);h=Ia(4)|0;Eq(h);sa(h|0,1344,125)}g=ln(c)|0;f[h>>2]=g;f[a>>2]=g;f[a+8>>2]=g+(d<<2);b=f[b>>2]|0;c=(f[e>>2]|0)-b|0;if((c|0)<=0)return;Mg(g|0,b|0,c|0)|0;f[h>>2]=g+(c>>>2<<2);return}function Gj(a,c){a=a|0;c=c|0;var d=0,e=0,g=0,i=0,j=0,k=0,l=0;l=u;u=u+16|0;j=l;k=c&255;b[j>>0]=k;g=a+16|0;e=f[g>>2]|0;if(!e)if(!(Al(a)|0)){e=f[g>>2]|0;i=4}else d=-1;else i=4;do if((i|0)==4){i=a+20|0;g=f[i>>2]|0;if(g>>>0>>0?(d=c&255,(d|0)!=(b[a+75>>0]|0)):0){f[i>>2]=g+1;b[g>>0]=k;break}if((Na[f[a+36>>2]&31](a,j,1)|0)==1)d=h[j>>0]|0;else d=-1}while(0);u=l;return d|0}function Hj(a){a=a|0;var b=0,c=0,d=0,e=0;f[a>>2]=1620;b=f[a+20>>2]|0;if(b|0){d=a+24|0;c=f[d>>2]|0;if((c|0)!=(b|0))f[d>>2]=c+(~((c+-4-b|0)>>>2)<<2);ar(b)}e=a+8|0;b=f[e>>2]|0;if(!b)return;d=a+12|0;c=f[d>>2]|0;if((c|0)!=(b|0)){do{a=c+-4|0;f[d>>2]=a;c=f[a>>2]|0;f[a>>2]=0;if(c|0)Pa[f[(f[c>>2]|0)+4>>2]&127](c);c=f[d>>2]|0}while((c|0)!=(b|0));b=f[e>>2]|0}ar(b);return}function Ij(a,c){a=a|0;c=c|0;var d=0,e=0,g=0,h=0,i=0,j=0,k=0;h=a&255;d=a&255;if((f[c+76>>2]|0)>=0?(gr(c)|0)!=0:0){if((d|0)!=(b[c+75>>0]|0)?(j=c+20|0,g=f[j>>2]|0,g>>>0<(f[c+16>>2]|0)>>>0):0){f[j>>2]=g+1;b[g>>0]=h}else d=Gj(c,a)|0;fr(c)}else k=3;do if((k|0)==3){if((d|0)!=(b[c+75>>0]|0)?(i=c+20|0,e=f[i>>2]|0,e>>>0<(f[c+16>>2]|0)>>>0):0){f[i>>2]=e+1;b[e>>0]=h;break}d=Gj(c,a)|0}while(0);return d|0}function Jj(a,b,c){a=a|0;b=b|0;c=c|0;var d=0,e=0;f[a>>2]=0;d=a+4|0;f[d>>2]=0;f[a+8>>2]=0;if(!b)return;if(b>>>0>357913941){Lp(a);c=Ia(4)|0;Eq(c);sa(c|0,1344,125)}e=ln(b*12|0)|0;f[d>>2]=e;f[a>>2]=e;f[a+8>>2]=e+(b*12|0);a=e;do{Fj(a,c);a=(f[d>>2]|0)+12|0;f[d>>2]=a;b=b+-1|0}while((b|0)!=0);return}function Kj(a){a=a|0;var b=0,c=0,d=0;f[a>>2]=2392;b=f[a+96>>2]|0;if(b|0)ar(b);b=f[a+84>>2]|0;if(b|0)ar(b);b=f[a+72>>2]|0;if(b|0)ar(b);b=f[a+60>>2]|0;if(b|0)ar(b);f[a>>2]=1832;c=f[a+32>>2]|0;if(!c){ar(a);return}d=a+36|0;b=f[d>>2]|0;if((b|0)!=(c|0))f[d>>2]=b+(~((b+-4-c|0)>>>2)<<2);ar(c);ar(a);return}function Lj(a){a=a|0;var b=0,c=0,d=0;f[a>>2]=2056;b=f[a+96>>2]|0;if(b|0)ar(b);b=f[a+84>>2]|0;if(b|0)ar(b);b=f[a+72>>2]|0;if(b|0)ar(b);b=f[a+60>>2]|0;if(b|0)ar(b);f[a>>2]=1832;c=f[a+32>>2]|0;if(!c){ar(a);return}d=a+36|0;b=f[d>>2]|0;if((b|0)!=(c|0))f[d>>2]=b+(~((b+-4-c|0)>>>2)<<2);ar(c);ar(a);return}function Mj(a,b,c){a=a|0;b=b|0;c=c|0;var d=0,e=0,g=0;d=u;u=u+32|0;e=d+12|0;g=d;f[e>>2]=0;f[e+4>>2]=0;f[e+8>>2]=0;f[g>>2]=0;f[g+4>>2]=0;f[g+8>>2]=0;Pj(g,c,Xj(c)|0);a=fj(b,g,e)|0;Lo(g);Lo(e);u=d;return a|0}function Nj(a){a=a|0;var b=0,c=0,d=0;f[a>>2]=4752;b=a+100|0;c=a+4|0;d=c+96|0;do{f[c>>2]=0;c=c+4|0}while((c|0)<(d|0));f[b>>2]=-1;f[a+104>>2]=-1;f[a+108>>2]=-1;b=a+168|0;c=a+112|0;d=c+56|0;do{f[c>>2]=0;c=c+4|0}while((c|0)<(d|0));n[b>>2]=$(1.0);b=a+240|0;c=a+172|0;d=c+68|0;do{f[c>>2]=0;c=c+4|0}while((c|0)<(d|0));il(b);return}function Oj(a,b,c){a=a|0;b=b|0;c=c|0;var d=0,e=0,g=0;f[a>>2]=0;d=a+4|0;f[d>>2]=0;f[a+8>>2]=0;if(!b)return;if(b>>>0>1073741823){Lp(a);e=Ia(4)|0;Eq(e);sa(e|0,1344,125)}g=ln(b<<2)|0;f[d>>2]=g;f[a>>2]=g;e=g+(b<<2)|0;f[a+8>>2]=e;a=g;while(1){f[a>>2]=f[c>>2];b=b+-1|0;if(!b)break;else a=a+4|0}f[d>>2]=e;return}function Pj(a,c,d){a=a|0;c=c|0;d=d|0;var e=0,g=0,h=0,i=0;h=u;u=u+16|0;e=h;if(d>>>0<=4294967279)if(d>>>0<11)b[a+11>>0]=d;else g=5;else{Hp(a);g=5}if((g|0)==5){i=d+16&-16;g=ln(i)|0;f[a>>2]=g;f[a+8>>2]=i|-2147483648;f[a+4>>2]=d;a=g}So(a,c,d)|0;b[e>>0]=0;Qp(a+d|0,e);u=h;return}function Qj(a){a=a|0;var b=0,c=0;f[a>>2]=2392;b=f[a+96>>2]|0;if(b|0)ar(b);b=f[a+84>>2]|0;if(b|0)ar(b);b=f[a+72>>2]|0;if(b|0)ar(b);b=f[a+60>>2]|0;if(b|0)ar(b);f[a>>2]=1832;c=f[a+32>>2]|0;if(!c)return;a=a+36|0;b=f[a>>2]|0;if((b|0)!=(c|0))f[a>>2]=b+(~((b+-4-c|0)>>>2)<<2);ar(c);return}function Rj(a){a=a|0;var b=0,c=0,d=0,e=0,g=0,i=0,j=0;b=f[a+32>>2]|0;j=b+8|0;i=f[j>>2]|0;j=f[j+4>>2]|0;g=b+16|0;c=g;e=f[c>>2]|0;c=Ho(e|0,f[c+4>>2]|0,4,0)|0;d=I;if((j|0)<(d|0)|(j|0)==(d|0)&i>>>0>>0){j=0;return j|0}j=(f[b>>2]|0)+e|0;j=h[j>>0]|h[j+1>>0]<<8|h[j+2>>0]<<16|h[j+3>>0]<<24;i=g;f[i>>2]=c;f[i+4>>2]=d;f[(f[a+4>>2]|0)+68>>2]=j;j=1;return j|0}function Sj(a,b){a=a|0;b=b|0;var c=0,d=0,e=0,g=0,h=0,i=0,j=0;e=a+8|0;c=f[a>>2]|0;if((f[e>>2]|0)-c>>2>>>0>=b>>>0)return;d=a+4|0;if(b>>>0>1073741823){a=Ia(4)|0;Eq(a);sa(a|0,1344,125)}j=(f[d>>2]|0)-c|0;h=j>>2;i=ln(b<<2)|0;g=i+(h<<2)|0;h=g+(0-h<<2)|0;if((j|0)>0)Mg(h|0,c|0,j|0)|0;f[a>>2]=h;f[d>>2]=g;f[e>>2]=i+(b<<2);if(!c)return;ar(c);return}function Tj(a){a=a|0;var c=0,d=0,e=0,f=0,g=0;while(1){c=b[a>>0]|0;d=c<<24>>24;e=a+1|0;if(!(sq(d)|0))break;else a=e}switch(d|0){case 45:{a=1;f=5;break}case 43:{a=0;f=5;break}default:{g=0;e=a}}if((f|0)==5){c=b[e>>0]|0;g=a}a=(c<<24>>24)+-48|0;if(a>>>0<10){d=a;a=0;c=e;do{c=c+1|0;a=(a*10|0)-d|0;d=(b[c>>0]|0)+-48|0}while(d>>>0<10)}else a=0;return (g|0?a:0-a|0)|0}function Uj(a){a=a|0;var b=0,c=0;f[a>>2]=2056;b=f[a+96>>2]|0;if(b|0)ar(b);b=f[a+84>>2]|0;if(b|0)ar(b);b=f[a+72>>2]|0;if(b|0)ar(b);b=f[a+60>>2]|0;if(b|0)ar(b);f[a>>2]=1832;c=f[a+32>>2]|0;if(!c)return;a=a+36|0;b=f[a>>2]|0;if((b|0)!=(c|0))f[a>>2]=b+(~((b+-4-c|0)>>>2)<<2);ar(c);return}function Vj(a,c,d){a=a|0;c=c|0;d=d|0;c=Kg(a,c)|0;if((c|0)==(a+4|0)){a=-1;c=(a|0)==-1;a=(a|0)!=0;d=c?d:a;return d|0}c=c+28|0;if((b[c+11>>0]|0)<0)c=f[c>>2]|0;a=Tj(c)|0;c=(a|0)==-1;a=(a|0)!=0;d=c?d:a;return d|0}function Wj(a){a=a|0;var b=0,c=0,d=0;if(!(f[a+68>>2]|0)){d=0;return d|0}d=a+8|0;c=a+12|0;a=f[d>>2]|0;if(((f[c>>2]|0)-a|0)>0)b=0;else{d=1;return d|0}while(1){a=f[a+(b<<2)>>2]|0;b=b+1|0;if(!(Jl(a,a)|0)){a=0;b=5;break}a=f[d>>2]|0;if((b|0)>=((f[c>>2]|0)-a>>2|0)){a=1;b=5;break}}if((b|0)==5)return a|0;return 0}function Xj(a){a=a|0;var c=0,d=0,e=0;e=a;a:do if(!(e&3)){c=a;d=4}else{c=e;while(1){if(!(b[a>>0]|0))break a;a=a+1|0;c=a;if(!(c&3)){c=a;d=4;break}}}while(0);if((d|0)==4){while(1){a=f[c>>2]|0;if(!((a&-2139062144^-2139062144)&a+-16843009))c=c+4|0;else break}if((a&255)<<24>>24)do c=c+1|0;while((b[c>>0]|0)!=0)}return c-e|0}function Yj(a,b){a=a|0;b=b|0;var c=0,d=0,e=0;c=u;u=u+16|0;e=c;d=c+4|0;f[e>>2]=b;f[d>>2]=0;f[d+4>>2]=0;f[d+8>>2]=0;Pj(d,19295,24);Ji(id(a,e)|0,d,1);Lo(d);u=c;return}function Zj(a,b){a=a|0;b=b|0;var c=0,d=0,e=0,g=0;e=Sa[f[(f[a>>2]|0)+24>>2]&255](a)|0;if((e|0)<=0){b=1;return b|0}d=a+36|0;c=a+48|0;a=0;while(1){g=f[(f[d>>2]|0)+(a<<2)>>2]|0;a=a+1|0;if(!(Na[f[(f[g>>2]|0)+20>>2]&31](g,c,b)|0)){a=0;c=5;break}if((a|0)>=(e|0)){a=1;c=5;break}}if((c|0)==5)return a|0;return 0}function _j(a){a=a|0;var b=0,c=0,d=0;f[a>>2]=4636;b=f[a+64>>2]|0;if(b|0){d=a+68|0;c=f[d>>2]|0;if((c|0)!=(b|0))f[d>>2]=c+(~((c+-4-b|0)>>>2)<<2);ar(b)}f[a+12>>2]=4660;b=f[a+32>>2]|0;if(b|0)ar(b);b=f[a+20>>2]|0;if(!b){ar(a);return}ar(b);ar(a);return}function $j(a,b){a=a|0;b=b|0;var c=0,d=0,e=0;c=f[b>>2]|0;if(!c){a=0;return a|0}e=a+44|0;d=f[e>>2]|0;if(d>>>0<(f[a+48>>2]|0)>>>0){f[b>>2]=0;f[d>>2]=c;f[e>>2]=(f[e>>2]|0)+4;a=1;return a|0}else{wg(a+40|0,b);a=1;return a|0}return 0}function ak(a,b){a=a|0;b=b|0;var c=0,d=0,e=0,g=0;e=Sa[f[(f[a>>2]|0)+24>>2]&255](a)|0;if((e|0)<=0){b=1;return b|0}d=a+36|0;c=a+48|0;a=0;while(1){g=f[(f[d>>2]|0)+(a<<2)>>2]|0;a=a+1|0;if(!(Na[f[(f[g>>2]|0)+16>>2]&31](g,c,b)|0)){a=0;c=5;break}if((a|0)>=(e|0)){a=1;c=5;break}}if((c|0)==5)return a|0;return 0}function bk(a,b){a=+a;b=b|0;var c=0,d=0,e=0;p[s>>3]=a;c=f[s>>2]|0;d=f[s+4>>2]|0;e=Tn(c|0,d|0,52)|0;switch(e&2047){case 0:{if(a!=0.0){a=+bk(a*18446744073709551616.0,b);c=(f[b>>2]|0)+-64|0}else c=0;f[b>>2]=c;break}case 2047:break;default:{f[b>>2]=(e&2047)+-1022;f[s>>2]=c;f[s+4>>2]=d&-2146435073|1071644672;a=+p[s>>3]}}return +a}function ck(a){a=a|0;var b=0,c=0,d=0;f[a>>2]=4728;b=f[a+64>>2]|0;if(b|0){d=a+68|0;c=f[d>>2]|0;if((c|0)!=(b|0))f[d>>2]=c+(~((c+-4-b|0)>>>2)<<2);ar(b)}f[a+12>>2]=4708;b=f[a+32>>2]|0;if(b|0)ar(b);b=f[a+20>>2]|0;if(!b){ar(a);return}ar(b);ar(a);return}function dk(a){a=a|0;var b=0,c=0,d=0;f[a>>2]=2448;b=f[a+76>>2]|0;if(b|0)ar(b);d=a+68|0;b=f[d>>2]|0;f[d>>2]=0;if(b|0)_q(b);f[a>>2]=1832;b=f[a+32>>2]|0;if(!b){ar(a);return}d=a+36|0;c=f[d>>2]|0;if((c|0)!=(b|0))f[d>>2]=c+(~((c+-4-b|0)>>>2)<<2);ar(b);ar(a);return}function ek(a){a=a|0;if(!(f[a+44>>2]|0)){a=0;return a|0}if(!(f[a+48>>2]|0)){a=0;return a|0}if(!(f[a+28>>2]|0)){a=0;return a|0}if(!(f[a+32>>2]|0)){a=0;return a|0}if(!(f[a+36>>2]|0)){a=0;return a|0}if(!(f[a+40>>2]|0)){a=0;return a|0}a=(f[a+68>>2]|0)!=-1;return a|0}function fk(a,b,c){a=a|0;b=b|0;c=c|0;var d=0.0,e=0,g=0;a=u;u=u+32|0;g=a;e=a+8|0;p[g>>3]=0.0;f[e>>2]=0;f[e+4>>2]=0;f[e+8>>2]=0;Pj(e,c,Xj(c)|0);Fh(b,e,g)|0;d=+p[g>>3];Lo(e);u=a;return +d}function gk(a,c){a=a|0;c=c|0;var d=0,e=0;d=0;while(1){if((h[19854+d>>0]|0)==(a|0)){e=2;break}d=d+1|0;if((d|0)==87){d=87;a=19942;e=5;break}}if((e|0)==2)if(!d)d=19942;else{a=19942;e=5}if((e|0)==5)while(1){do{e=a;a=a+1|0}while((b[e>>0]|0)!=0);d=d+-1|0;if(!d){d=a;break}else e=5}return wq(d,f[c+20>>2]|0)|0}function hk(a){a=a|0;var b=0,c=0,d=0;f[a>>2]=4636;b=f[a+64>>2]|0;if(b|0){d=a+68|0;c=f[d>>2]|0;if((c|0)!=(b|0))f[d>>2]=c+(~((c+-4-b|0)>>>2)<<2);ar(b)}f[a+12>>2]=4660;b=f[a+32>>2]|0;if(b|0)ar(b);b=f[a+20>>2]|0;if(!b)return;ar(b);return}function ik(a){a=a|0;var b=0,c=0,d=0;f[a>>2]=2112;b=f[a+76>>2]|0;if(b|0)ar(b);d=a+68|0;b=f[d>>2]|0;f[d>>2]=0;if(b|0)_q(b);f[a>>2]=1832;b=f[a+32>>2]|0;if(!b){ar(a);return}d=a+36|0;c=f[d>>2]|0;if((c|0)!=(b|0))f[d>>2]=c+(~((c+-4-b|0)>>>2)<<2);ar(b);ar(a);return}function jk(a){a=a|0;if(!(f[a+60>>2]|0)){a=0;return a|0}if(!(f[a+64>>2]|0)){a=0;return a|0}if(!(f[a+44>>2]|0)){a=0;return a|0}if(!(f[a+48>>2]|0)){a=0;return a|0}if(!(f[a+52>>2]|0)){a=0;return a|0}if(!(f[a+56>>2]|0)){a=0;return a|0}a=(f[a+84>>2]|0)!=-1;return a|0}function kk(a,b,c){a=a|0;b=b|0;c=c|0;var d=0,e=0;d=u;u=u+16|0;a=d+12|0;e=d;f[a>>2]=0;f[e>>2]=0;f[e+4>>2]=0;f[e+8>>2]=0;Pj(e,c,Xj(c)|0);wj(b,e,a)|0;a=f[a>>2]|0;Lo(e);u=d;return a|0}function lk(a){a=a|0;var b=0,c=0,d=0;f[a>>2]=4728;b=f[a+64>>2]|0;if(b|0){d=a+68|0;c=f[d>>2]|0;if((c|0)!=(b|0))f[d>>2]=c+(~((c+-4-b|0)>>>2)<<2);ar(b)}f[a+12>>2]=4708;b=f[a+32>>2]|0;if(b|0)ar(b);b=f[a+20>>2]|0;if(!b)return;ar(b);return}function mk(a,b){a=a|0;b=b|0;var c=0,d=0,e=0;c=ln(60)|0;d=c;e=d+60|0;do{f[d>>2]=0;d=d+4|0}while((d|0)<(e|0));e=vh(c,b)|0;f[a>>2]=e?c:0;a=e?0:c;if(e)return;sj(a);ar(a);return}function nk(a){a=a|0;if(!a)return;Lo(a+28|0);kj(a+12|0,f[a+16>>2]|0);tj(a,f[a+4>>2]|0);ar(a);return}function ok(a,b,c){a=a|0;b=b|0;c=c|0;switch(c<<24>>24){case 0:{c=ln(20)|0;fo(c);break}case 1:{c=ln(24)|0;Go(c);break}case 2:{c=ln(36)|0;sn(c);break}case 3:{c=ln(28)|0;zo(c);break}default:c=0}f[a>>2]=c;return}function pk(a,b,c,d){a=a|0;b=b|0;c=c|0;d=d|0;var e=0,f=0,g=0,h=0,i=0,j=0;j=b>>31|((b|0)<0?-1:0)<<1;i=((b|0)<0?-1:0)>>31|((b|0)<0?-1:0)<<1;f=d>>31|((d|0)<0?-1:0)<<1;e=((d|0)<0?-1:0)>>31|((d|0)<0?-1:0)<<1;h=Xn(j^a|0,i^b|0,j|0,i|0)|0;g=I;a=f^j;b=e^i;return Xn((nd(h,g,Xn(f^c|0,e^d|0,f|0,e|0)|0,I,0)|0)^a|0,I^b|0,a|0,b|0)|0}function qk(a,c){a=a|0;c=c|0;var d=0,e=0;f[c>>2]=2;e=a+4|0;d=c+8|0;a=f[d>>2]|0;c=(f[c+12>>2]|0)-a|0;if(c>>>0<4294967292){Gk(d,c+4|0,0);a=f[d>>2]|0}c=a+c|0;e=h[e>>0]|h[e+1>>0]<<8|h[e+2>>0]<<16|h[e+3>>0]<<24;b[c>>0]=e;b[c+1>>0]=e>>8;b[c+2>>0]=e>>16;b[c+3>>0]=e>>24;return}function rk(a,b,c){a=a|0;b=b|0;c=c|0;var d=0,e=0;d=u;u=u+32|0;a=d;e=d+8|0;p[a>>3]=0.0;f[e>>2]=0;f[e+4>>2]=0;f[e+8>>2]=0;Pj(e,c,Xj(c)|0);a=Fh(b,e,a)|0;Lo(e);u=d;return a|0}function sk(a){a=a|0;var b=0,c=0;f[a>>2]=2448;b=f[a+76>>2]|0;if(b|0)ar(b);c=a+68|0;b=f[c>>2]|0;f[c>>2]=0;if(b|0)_q(b);f[a>>2]=1832;c=f[a+32>>2]|0;if(!c)return;a=a+36|0;b=f[a>>2]|0;if((b|0)!=(c|0))f[a>>2]=b+(~((b+-4-c|0)>>>2)<<2);ar(c);return}function tk(a,c,d){a=a|0;c=c|0;d=d|0;var e=0;if(c>>>0>0|(c|0)==0&a>>>0>4294967295)while(1){e=$m(a|0,c|0,10,0)|0;d=d+-1|0;b[d>>0]=e&255|48;e=a;a=Dp(a|0,c|0,10,0)|0;if(!(c>>>0>9|(c|0)==9&e>>>0>4294967295))break;else c=I}if(a)while(1){d=d+-1|0;b[d>>0]=(a>>>0)%10|0|48;if(a>>>0<10)break;else a=(a>>>0)/10|0}return d|0}function uk(a,b,c){a=a|0;b=b|0;c=c|0;var d=0,e=0;d=u;u=u+16|0;a=d+12|0;e=d;f[a>>2]=0;f[e>>2]=0;f[e+4>>2]=0;f[e+8>>2]=0;Pj(e,c,Xj(c)|0);a=wj(b,e,a)|0;Lo(e);u=d;return a|0}function vk(a){a=a|0;var b=0,c=0,d=0;f[a>>2]=1524;b=f[a+84>>2]|0;if(b|0){d=a+88|0;c=f[d>>2]|0;if((c|0)!=(b|0))f[d>>2]=c+(~(((c+-12-b|0)>>>0)/12|0)*12|0);ar(b)}b=f[a+72>>2]|0;if(!b){$g(a);ar(a);return}d=a+76|0;c=f[d>>2]|0;if((c|0)!=(b|0))f[d>>2]=c+(~((c+-4-b|0)>>>2)<<2);ar(b);$g(a);ar(a);return}function wk(a,b,c){a=a|0;b=b|0;c=c|0;var d=0;d=f[a>>2]|0;if((d|0)<0){c=-1073741824;return c|0}if((f[(f[b>>2]|0)+(d<<2)>>2]|0)==-1073741824){c=-1073741824;return c|0}b=(d>>>0)/3|0;a=f[c+84>>2]|0;if((b|0)>=(((f[c+88>>2]|0)-a|0)/12|0|0))Ga(18176,18147,64,18171);c=f[a+(b*12|0)+(((d>>>0)%3|0)<<2)>>2]|0;return c|0}function xk(a,c,d,e){a=a|0;c=c|0;d=d|0;e=e|0;var g=0,h=0,i=0;g=c+16|0;a=f[g>>2]|0;h=c+36|0;i=c+24|0;do if(a){if((a|0)!=(d|0)){f[h>>2]=(f[h>>2]|0)+1;f[i>>2]=2;b[c+54>>0]=1;break}if((f[i>>2]|0)==2)f[i>>2]=e}else{f[g>>2]=d;f[i>>2]=e;f[h>>2]=1}while(0);return}function yk(a,b){a=a|0;b=b|0;var c=0,d=0,e=0,g=0;Hc(a,b);if((b|0)<=-1)return;g=a+76|0;c=f[g>>2]|0;a=f[a+72>>2]|0;if((c-a>>2|0)<=(b|0))return;d=a+(b<<2)|0;a=d+4|0;b=c-a|0;e=b>>2;if(e){rm(d|0,a|0,b|0)|0;c=f[g>>2]|0}a=d+(e<<2)|0;if((c|0)==(a|0))return;f[g>>2]=c+(~((c+-4-a|0)>>>2)<<2);return}function zk(a){a=a|0;var b=0,c=0;f[a>>2]=2112;b=f[a+76>>2]|0;if(b|0)ar(b);c=a+68|0;b=f[c>>2]|0;f[c>>2]=0;if(b|0)_q(b);f[a>>2]=1832;c=f[a+32>>2]|0;if(!c)return;a=a+36|0;b=f[a>>2]|0;if((b|0)!=(c|0))f[a>>2]=b+(~((b+-4-c|0)>>>2)<<2);ar(c);return}function Ak(a,b,c,d,e,g){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;g=g|0;var h=0,i=0,j=0;f[a>>2]=b;j=b+16|0;h=f[j+4>>2]|0;i=a+8|0;f[i>>2]=f[j>>2];f[i+4>>2]=h;i=b+24|0;h=f[i+4>>2]|0;b=a+16|0;f[b>>2]=f[i>>2];f[b+4>>2]=h;b=a+40|0;f[b>>2]=c;f[b+4>>2]=d;a=a+48|0;f[a>>2]=e;f[a+4>>2]=g;return}function Bk(a,b,c){a=a|0;b=b|0;c=c|0;if(((h[(f[a+4>>2]|0)+36>>0]|0)<<8&65535)<512?!(Sa[f[(f[a>>2]|0)+52>>2]&255](a)|0):0){a=0;return a|0}a=xd(a,b,c)|0;return a|0}function Ck(a,b,c){a=a|0;b=b|0;c=c|0;var d=0;if((b|0)<=-1)Ga(18122,18147,63,18171);d=f[a+84>>2]|0;if((((f[a+88>>2]|0)-d|0)/12|0|0)>(b|0)){a=d+(b*12|0)|0;Bf(c,a,a+12|0);return 1}else Ga(18176,18147,64,18171);return 0}function Dk(a,b){a=a|0;b=b|0;var c=0,d=0,e=0;f[a>>2]=0;c=a+4|0;f[c>>2]=0;f[a+8>>2]=0;if(!b)return;if(b>>>0>1073741823){Lp(a);a=Ia(4)|0;Eq(a);sa(a|0,1344,125)}d=b<<2;e=ln(d)|0;f[a>>2]=e;b=e+(b<<2)|0;f[a+8>>2]=b;ej(e|0,0,d|0)|0;f[c>>2]=b;return}function Ek(a){a=a|0;var b=0,c=0,d=0;f[a>>2]=1524;b=f[a+84>>2]|0;if(b|0){d=a+88|0;c=f[d>>2]|0;if((c|0)!=(b|0))f[d>>2]=c+(~(((c+-12-b|0)>>>0)/12|0)*12|0);ar(b)}b=f[a+72>>2]|0;if(!b){$g(a);return}d=a+76|0;c=f[d>>2]|0;if((c|0)!=(b|0))f[d>>2]=c+(~((c+-4-b|0)>>>2)<<2);ar(b);$g(a);return}function Fk(a,b,c){a=a|0;b=b|0;c=c|0;if(!(yn(a,b,c)|0)){c=0;return c|0}b=f[b+4>>2]|0;if((c|0)<=-1)Ga(17188,17204,71,17242);a=f[b+8>>2]|0;if(((f[b+12>>2]|0)-a>>2|0)<=(c|0))Ga(17252,17204,72,17242);c=(f[(f[a+(c<<2)>>2]|0)+28>>2]|0)==9;return c|0}function Gk(a,b,c){a=a|0;b=b|0;c=c|0;var d=0,e=0,g=0,h=0;e=a+4|0;d=f[e>>2]|0;c=f[a>>2]|0;g=d-c|0;if(b>>>0<=g>>>0){if(b>>>0>>0?(h=c+b|0,(d|0)!=(h|0)):0)f[e>>2]=h}else vi(a,b-g|0);a=a+24|0;h=a;h=Ho(f[h>>2]|0,f[h+4>>2]|0,1,0)|0;f[a>>2]=h;f[a+4>>2]=I;return}function Hk(a){a=a|0;var b=0,c=0,d=0;f[a>>2]=2504;b=f[a+76>>2]|0;if(b|0)ar(b);f[a>>2]=1832;b=f[a+32>>2]|0;if(!b){ar(a);return}d=a+36|0;c=f[d>>2]|0;if((c|0)!=(b|0))f[d>>2]=c+(~((c+-4-b|0)>>>2)<<2);ar(b);ar(a);return}function Ik(a,b,c){a=a|0;b=b|0;c=c|0;var d=0,e=0;d=u;u=u+16|0;e=d;Sf(e,a,b,c);c=a+24|0;f[c>>2]=f[e>>2];b=e+4|0;em(a+28|0,b)|0;Lo(b);u=d;return c|0}function Jk(a,b,c){a=a|0;b=b|0;c=c|0;var d=0;b=f[b+4>>2]|0;if(!b){c=0;return c|0}a=f[b+40>>2]|0;d=f[b+44>>2]|0;a:do if((a|0)==(d|0))b=0;else while(1){b=f[a>>2]|0;a=a+4|0;if((f[b+40>>2]|0)==(c|0))break a;if((a|0)==(d|0)){b=0;break}}while(0);c=b;return c|0}function Kk(a){a=a|0;var b=0,c=0,d=0;f[a>>2]=2168;b=f[a+76>>2]|0;if(b|0)ar(b);f[a>>2]=1832;b=f[a+32>>2]|0;if(!b){ar(a);return}d=a+36|0;c=f[d>>2]|0;if((c|0)!=(b|0))f[d>>2]=c+(~((c+-4-b|0)>>>2)<<2);ar(b);ar(a);return}function Lk(a,b){a=a|0;b=b|0;var c=0,d=0;d=ln(40)|0;f[d>>2]=-1;wn(d+8|0);Qa[f[(f[a>>2]|0)+16>>2]&7](a,d);c=b+88|0;b=f[c>>2]|0;f[c>>2]=d;if(!b)return 1;a=f[b+8>>2]|0;if(a|0){c=b+12|0;if((f[c>>2]|0)!=(a|0))f[c>>2]=a;ar(a)}ar(b);return 1}function Mk(a){a=a|0;var b=0;f[a>>2]=3288;b=f[a+80>>2]|0;if(b|0)ar(b);b=f[a+68>>2]|0;if(b|0)ar(b);b=f[a+56>>2]|0;if(b|0)ar(b);b=f[a+44>>2]|0;if(!b){ar(a);return}ar(b);ar(a);return}function Nk(a){a=a|0;var b=0,c=0,d=0;f[a>>2]=1564;b=f[a+16>>2]|0;if(b|0){d=a+20|0;c=f[d>>2]|0;if((c|0)!=(b|0))f[d>>2]=c+(~((c+-4-b|0)>>>2)<<2);ar(b)}b=f[a+4>>2]|0;if(!b){ar(a);return}d=a+8|0;c=f[d>>2]|0;if((c|0)!=(b|0))f[d>>2]=c+(~((c+-4-b|0)>>>2)<<2);ar(b);ar(a);return}function Ok(a,b,c){a=a|0;b=b|0;c=c|0;var d=0,e=0;d=u;u=u+16|0;e=d;Tf(e,a,b,c);c=a+24|0;f[c>>2]=f[e>>2];b=e+4|0;em(a+28|0,b)|0;Lo(b);u=d;return c|0}function Pk(a){a=a|0;var b=0;f[a>>2]=2952;b=f[a+80>>2]|0;if(b|0)ar(b);b=f[a+68>>2]|0;if(b|0)ar(b);b=f[a+56>>2]|0;if(b|0)ar(b);b=f[a+44>>2]|0;if(!b){ar(a);return}ar(b);ar(a);return}function Qk(a){a=a|0;var b=0;f[a>>2]=4016;b=f[a+80>>2]|0;if(b|0)ar(b);b=f[a+68>>2]|0;if(b|0)ar(b);b=f[a+56>>2]|0;if(b|0)ar(b);b=f[a+44>>2]|0;if(!b){ar(a);return}ar(b);ar(a);return}function Rk(a){a=a|0;var b=0,c=0,d=0;b=f[a+8>>2]|0;c=f[a+12>>2]|0;if((b|0)==(c|0)){c=1;return c|0}a=a+32|0;while(1){d=f[b>>2]|0;b=b+4|0;if(!(Wa[f[(f[d>>2]|0)+16>>2]&127](d,f[a>>2]|0)|0)){b=0;a=5;break}if((b|0)==(c|0)){b=1;a=5;break}}if((a|0)==5)return b|0;return 0}function Sk(a,b,c,d,e,g){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;g=g|0;if(wp(a,f[b+8>>2]|0,g)|0)gj(0,b,c,d,e);else{a=f[a+8>>2]|0;Va[f[(f[a>>2]|0)+20>>2]&3](a,b,c,d,e,g)}return}function Tk(a){a=a|0;var b=0,c=0,d=0,e=0,g=0;c=h[a+12>>0]|0;d=a+8|0;b=f[d>>2]|0;if(b>>>0<4096){e=f[a>>2]|0;g=a+4|0;a=(f[g>>2]|0)+-1|0;f[g>>2]=a;b=h[e+a>>0]|0|b<<8;f[d>>2]=b}a=b&255;c=0-c&255;e=X(b>>>8,c)|0;g=a>>>0>>0;f[d>>2]=g?e+a|0:b-c-e|0;return g|0}function Uk(a){a=a|0;var b=0,c=0;f[a>>2]=2504;b=f[a+76>>2]|0;if(b|0)ar(b);f[a>>2]=1832;c=f[a+32>>2]|0;if(!c)return;a=a+36|0;b=f[a>>2]|0;if((b|0)!=(c|0))f[a>>2]=b+(~((b+-4-c|0)>>>2)<<2);ar(c);return}function Vk(a){a=a|0;var b=0,c=0,d=0;f[a>>2]=2560;fr(a+100|0);f[a>>2]=1832;b=f[a+32>>2]|0;if(!b){ar(a);return}d=a+36|0;c=f[d>>2]|0;if((c|0)!=(b|0))f[d>>2]=c+(~((c+-4-b|0)>>>2)<<2);ar(b);ar(a);return}function Wk(a){a=a|0;var b=0,c=0;f[a>>2]=2616;c=a+28|0;b=f[c>>2]|0;f[c>>2]=0;if(b|0)_q(b);f[a>>2]=1772;c=a+20|0;b=f[c>>2]|0;f[c>>2]=0;if(!b){jj(a);ar(a);return}Pa[f[(f[b>>2]|0)+4>>2]&127](b);jj(a);ar(a);return}function Xk(a){a=a|0;var b=0;f[a>>2]=3680;b=f[a+80>>2]|0;if(b|0)ar(b);b=f[a+68>>2]|0;if(b|0)ar(b);b=f[a+56>>2]|0;if(b|0)ar(b);b=f[a+44>>2]|0;if(!b){ar(a);return}ar(b);ar(a);return}function Yk(a){a=a|0;var b=0;f[a>>2]=3288;b=f[a+80>>2]|0;if(b|0)ar(b);b=f[a+68>>2]|0;if(b|0)ar(b);b=f[a+56>>2]|0;if(b|0)ar(b);b=f[a+44>>2]|0;if(!b)return;ar(b);return}function Zk(a){a=a|0;var b=0,c=0;f[a>>2]=2168;b=f[a+76>>2]|0;if(b|0)ar(b);f[a>>2]=1832;c=f[a+32>>2]|0;if(!c)return;a=a+36|0;b=f[a>>2]|0;if((b|0)!=(c|0))f[a>>2]=b+(~((b+-4-c|0)>>>2)<<2);ar(c);return}function _k(a){a=a|0;var b=0,c=0,d=0;f[a>>2]=2224;fr(a+100|0);f[a>>2]=1832;b=f[a+32>>2]|0;if(!b){ar(a);return}d=a+36|0;c=f[d>>2]|0;if((c|0)!=(b|0))f[d>>2]=c+(~((c+-4-b|0)>>>2)<<2);ar(b);ar(a);return}function $k(a){a=a|0;var b=0,c=0,d=0;f[a>>2]=1564;b=f[a+16>>2]|0;if(b|0){d=a+20|0;c=f[d>>2]|0;if((c|0)!=(b|0))f[d>>2]=c+(~((c+-4-b|0)>>>2)<<2);ar(b)}d=f[a+4>>2]|0;if(!d)return;c=a+8|0;b=f[c>>2]|0;if((b|0)!=(d|0))f[c>>2]=b+(~((b+-4-d|0)>>>2)<<2);ar(d);return}function al(a,b,c,d,e){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;var f=0,g=0;g=u;u=u+256|0;f=g;if((c|0)>(d|0)&(e&73728|0)==0){e=c-d|0;ej(f|0,b|0,(e>>>0<256?e:256)|0)|0;if(e>>>0>255){b=c-d|0;do{ip(a,f,256);e=e+-256|0}while(e>>>0>255);e=b&255}ip(a,f,e)}u=g;return}function bl(a){a=a|0;var b=0;f[a>>2]=2952;b=f[a+80>>2]|0;if(b|0)ar(b);b=f[a+68>>2]|0;if(b|0)ar(b);b=f[a+56>>2]|0;if(b|0)ar(b);b=f[a+44>>2]|0;if(!b)return;ar(b);return}function cl(a){a=a|0;var b=0;f[a>>2]=4016;b=f[a+80>>2]|0;if(b|0)ar(b);b=f[a+68>>2]|0;if(b|0)ar(b);b=f[a+56>>2]|0;if(b|0)ar(b);b=f[a+44>>2]|0;if(!b)return;ar(b);return}function dl(a){a=a|0;var b=0,c=0;f[a>>2]=2616;c=a+28|0;b=f[c>>2]|0;f[c>>2]=0;if(b|0)_q(b);f[a>>2]=1772;c=a+20|0;b=f[c>>2]|0;f[c>>2]=0;if(!b){jj(a);return}Pa[f[(f[b>>2]|0)+4>>2]&127](b);jj(a);return}function el(a,b,c){a=a|0;b=b|0;c=c|0;var d=0;f[a+4>>2]=b;b=f[b+4>>2]|0;if((c|0)<=-1)Ga(17188,17204,71,17242);d=f[b+8>>2]|0;if(((f[b+12>>2]|0)-d>>2|0)>(c|0)){f[a+8>>2]=f[d+(c<<2)>>2];f[a+12>>2]=c;return 1}else Ga(17252,17204,72,17242);return 0}function fl(a){a=a|0;var b=0;f[a>>2]=3680;b=f[a+80>>2]|0;if(b|0)ar(b);b=f[a+68>>2]|0;if(b|0)ar(b);b=f[a+56>>2]|0;if(b|0)ar(b);b=f[a+44>>2]|0;if(!b)return;ar(b);return}function gl(a){a=a|0;var b=0,c=0;f[a>>2]=2560;fr(a+100|0);f[a>>2]=1832;c=f[a+32>>2]|0;if(!c)return;b=a+36|0;a=f[b>>2]|0;if((a|0)!=(c|0))f[b>>2]=a+(~((a+-4-c|0)>>>2)<<2);ar(c);return}function hl(a,b){a=a|0;b=b|0;var c=0;if((b|0)<0){a=0;return a|0}c=f[a+4>>2]|0;if(((f[c+12>>2]|0)-(f[c+8>>2]|0)>>2|0)<=(b|0)){c=0;return c|0}c=f[(f[a+8>>2]|0)+(f[(f[a+20>>2]|0)+(b<<2)>>2]<<2)>>2]|0;c=Wa[f[(f[c>>2]|0)+32>>2]&127](c,b)|0;return c|0}function il(a){a=a|0;var b=0;Ym(a);Ym(a+40|0);b=a+80|0;f[b>>2]=0;f[b+4>>2]=0;f[b+8>>2]=0;f[b+12>>2]=0;f[b+16>>2]=0;f[b+20>>2]=0;f[b+24>>2]=0;f[b+28>>2]=0;xq(a+112|0);f[a+128>>2]=-1;f[a+132>>2]=-1;return}function jl(a){a=a|0;var b=0,c=0,d=0,e=0,g=0;c=f[a>>2]|0;d=a+4|0;g=f[d>>2]|0;e=c;b=g+(~((g+-4-e|0)>>>2)<<2)|0;if((g|0)==(c|0))b=c;else f[d>>2]=b;f[a+16>>2]=0;f[a+12>>2]=b;if(!c)return;if((b|0)!=(c|0))f[d>>2]=b+(~((b+-4-e|0)>>>2)<<2);ar(c);return}function kl(a,b,c,d){a=a|0;b=b|0;c=c|0;d=d|0;if(wp(a,f[b+8>>2]|0,0)|0)xk(0,b,c,d);else{a=f[a+8>>2]|0;Xa[f[(f[a>>2]|0)+28>>2]&7](a,b,c,d)}return}function ll(a){a=a|0;var b=0,c=0;f[a>>2]=2224;fr(a+100|0);f[a>>2]=1832;c=f[a+32>>2]|0;if(!c)return;b=a+36|0;a=f[b>>2]|0;if((a|0)!=(c|0))f[b>>2]=a+(~((a+-4-c|0)>>>2)<<2);ar(c);return}function ml(a,c){a=a|0;c=c|0;f[a>>2]=0;f[a+4>>2]=0;f[a+8>>2]=0;if((b[c+11>>0]|0)<0)Pj(a,f[c>>2]|0,f[c+4>>2]|0);else{f[a>>2]=f[c>>2];f[a+4>>2]=f[c+4>>2];f[a+8>>2]=f[c+8>>2]}return}function nl(a,b){a=a|0;b=b|0;var c=0;c=f[a+4>>2]|0;if(c|0?((h[c+36>>0]|0)<<8&65535)<512:0){c=1;return c|0}c=Wa[f[(f[a>>2]|0)+48>>2]&127](a,(f[b+4>>2]|0)-(f[b>>2]|0)>>2)|0;return c|0}function ol(a,b,c){a=a|0;b=b|0;c=c|0;var d=0,e=0,g=0;e=u;u=u+32|0;g=e;d=e+20|0;f[g>>2]=f[a+60>>2];f[g+4>>2]=0;f[g+8>>2]=b;f[g+12>>2]=d;f[g+16>>2]=c;if((Ro(Da(140,g|0)|0)|0)<0){f[d>>2]=-1;a=-1}else a=f[d>>2]|0;u=e;return a|0}function pl(a,b){a=a|0;b=b|0;var c=0;if((b|0)==-1|(b|0)>3){a=0;return a|0}c=f[a+20+(b*12|0)>>2]|0;if(((f[a+20+(b*12|0)+4>>2]|0)-c|0)<=0){a=0;return a|0}c=f[c>>2]|0;if((c|0)==-1){a=0;return a|0}a=f[(f[a+8>>2]|0)+(c<<2)>>2]|0;return a|0}function ql(a,b){a=a|0;b=b|0;var c=0;Sm(a);f[a>>2]=4240;c=a+36|0;f[c>>2]=0;f[c+4>>2]=0;f[c+8>>2]=0;f[c+12>>2]=0;f[c+16>>2]=0;f[c+20>>2]=0;c=f[b>>2]|0;f[b>>2]=0;f[a+60>>2]=c;return}function rl(a,c,d){a=a|0;c=c|0;d=d|0;var e=0,f=0;a:do if(!d)a=0;else{while(1){e=b[a>>0]|0;f=b[c>>0]|0;if(e<<24>>24!=f<<24>>24)break;d=d+-1|0;if(!d){a=0;break a}else{a=a+1|0;c=c+1|0}}a=(e&255)-(f&255)|0}while(0);return a|0}function sl(a,b,c){a=a|0;b=b|0;c=c|0;if(!(oj(f[a+8>>2]|0,(f[b+4>>2]|0)-(f[b>>2]|0)>>2)|0)){a=0;return a|0}a=Na[f[(f[a>>2]|0)+32>>2]&31](a,b,c)|0;return a|0}function tl(a,b){a=a|0;b=b|0;var c=0;c=b*3|0;if((b|0)<0){a=0;return a|0}If(a,c,1412);If(a+12|0,c,1408);Sj(a+24|0,c);a=1;return a|0}function ul(a,b){a=a|0;b=b|0;var c=0;c=f[a+16>>2]|0;if(((f[a+20>>2]|0)-c>>2|0)<=(b|0)){a=0;return a|0}c=f[c+(b<<2)>>2]|0;if((c|0)<0){a=0;return a|0}a=lh(f[(f[a+36>>2]|0)+(c<<2)>>2]|0)|0;return a|0}function vl(a){a=a|0;if(!(f[a+44>>2]|0))return 0;if(!(f[a+28>>2]|0))return 0;if(!(f[a+32>>2]|0))return 0;if(!(f[a+36>>2]|0))return 0;else return (f[a+40>>2]|0)!=0|0;return 0}function wl(a,c){a=a|0;c=c|0;var d=0,e=0,g=0;e=a+11|0;d=b[e>>0]|0;if(d<<24>>24<0)g=f[a+4>>2]|0;else g=d&255;if(g>>>0<=c>>>0){Gp(a);d=b[e>>0]|0}if(d<<24>>24<0)a=f[a>>2]|0;return a+c|0}function xl(a){a=a|0;var b=0,c=0;f[a>>2]=3344;b=f[a+60>>2]|0;if(b|0)ar(b);c=a+52|0;b=f[c>>2]|0;f[c>>2]=0;if(!b){ar(a);return}_q(b);ar(a);return}function yl(a){a=a|0;if(!(f[a+60>>2]|0))return 0;if(!(f[a+44>>2]|0))return 0;if(!(f[a+48>>2]|0))return 0;if(!(f[a+52>>2]|0))return 0;else return (f[a+56>>2]|0)!=0|0;return 0}function zl(a){a=a|0;if(!(f[a+28>>2]|0)){a=0;return a|0}if(!(f[a+32>>2]|0)){a=0;return a|0}if(!(f[a+36>>2]|0)){a=0;return a|0}a=(f[a+40>>2]|0)!=0;return a|0}function Al(a){a=a|0;var c=0,d=0;c=a+74|0;d=b[c>>0]|0;b[c>>0]=d+255|d;c=f[a>>2]|0;if(!(c&8)){f[a+8>>2]=0;f[a+4>>2]=0;c=f[a+44>>2]|0;f[a+28>>2]=c;f[a+20>>2]=c;f[a+16>>2]=c+(f[a+48>>2]|0);c=0}else{f[a>>2]=c|32;c=-1}return c|0}function Bl(a,c){a=a|0;c=c|0;var d=0,e=0;e=a;d=e+64|0;do{f[e>>2]=f[c>>2];e=e+4|0;c=c+4|0}while((e|0)<(d|0));e=a+64|0;f[a+88>>2]=0;f[e>>2]=0;f[e+4>>2]=0;f[e+8>>2]=0;f[e+12>>2]=0;f[e+16>>2]=0;b[e+20>>0]=0;return}function Cl(a){a=a|0;var b=0,c=0;f[a>>2]=3008;b=f[a+60>>2]|0;if(b|0)ar(b);c=a+52|0;b=f[c>>2]|0;f[c>>2]=0;if(!b){ar(a);return}_q(b);ar(a);return}function Dl(a){a=a|0;var b=0,c=0;f[a>>2]=4072;b=f[a+60>>2]|0;if(b|0)ar(b);c=a+52|0;b=f[c>>2]|0;f[c>>2]=0;if(!b){ar(a);return}_q(b);ar(a);return}function El(a,c,d){a=a|0;c=c|0;d=d|0;var e=0,g=0;g=u;u=u+32|0;e=g;f[a+36>>2]=15;if((f[a>>2]&64|0)==0?(f[e>>2]=f[a+60>>2],f[e+4>>2]=21523,f[e+8>>2]=g+16,Ca(54,e|0)|0):0)b[a+75>>0]=-1;e=Rg(a,c,d)|0;u=g;return e|0}function Fl(a){a=a|0;if(!(f[a+44>>2]|0)){a=0;return a|0}if(!(f[a+48>>2]|0)){a=0;return a|0}if(!(f[a+52>>2]|0)){a=0;return a|0}a=(f[a+56>>2]|0)!=0;return a|0}function Gl(a,b,c){a=a|0;b=b|0;c=c|0;if((b|0)!=0&(c|0)!=0){jc(a,b,c);return}else{uc(a,0,0);return}}function Hl(a,b,c,d,e){a=a|0;b=b|0;c=c|0;d=d|0;e=$(e);f[a+4>>2]=b;zf(a+8|0,c,c+(d<<2)|0);n[a+20>>2]=e;return}function Il(a){a=a|0;var b=0,c=0;c=a+15&-16|0;b=f[r>>2]|0;a=b+c|0;if((c|0)>0&(a|0)<(b|0)|(a|0)<0){ea()|0;va(12);return -1}f[r>>2]=a;if((a|0)>(da()|0)?(ca()|0)==0:0){f[r>>2]=b;va(12);return -1}return b|0}function Jl(a,b){a=a|0;b=b|0;var c=0,d=0,e=0;c=u;u=u+16|0;d=c+4|0;e=c;f[e>>2]=0;f[d>>2]=f[e>>2];a=Mb(a,b,d)|0;u=c;return a|0}function Kl(a,b,c,d){a=a|0;b=b|0;c=c|0;d=d|0;var e=0,g=0;c=f[c>>2]|0;e=a;d=b-a>>2;while(1){if(!d)break;b=(d|0)/2|0;g=e+(b<<2)|0;a=(f[g>>2]|0)>>>0>>0;e=a?g+4|0:e;d=a?d+-1-b|0:b}return e|0}function Ll(a){a=a|0;var b=0,c=0;f[a>>2]=3736;b=f[a+60>>2]|0;if(b|0)ar(b);c=a+52|0;b=f[c>>2]|0;f[c>>2]=0;if(!b){ar(a);return}_q(b);ar(a);return}function Ml(a,b){a=a|0;b=b|0;b=f[b+88>>2]|0;if(!b){a=0;return a|0}if((f[b>>2]|0)!=2){a=0;return a|0}b=f[b+8>>2]|0;f[a+4>>2]=h[b>>0]|h[b+1>>0]<<8|h[b+2>>0]<<16|h[b+3>>0]<<24;a=1;return a|0}function Nl(a,b,c,d){a=a|0;b=b|0;c=c|0;d=d|0;var e=0,g=0;e=X(c,b)|0;c=(b|0)==0?0:c;if((f[d+76>>2]|0)>-1){g=(gr(d)|0)==0;a=xi(a,e,d)|0;if(!g)fr(d)}else a=xi(a,e,d)|0;if((a|0)!=(e|0))c=(a>>>0)/(b>>>0)|0;return c|0}function Ol(a){a=a|0;var c=0;f[a>>2]=0;c=a+8|0;f[c>>2]=0;f[c+4>>2]=0;f[c+8>>2]=0;f[c+12>>2]=0;b[a+24>>0]=1;f[a+28>>2]=9;c=a+40|0;f[c>>2]=0;f[c+4>>2]=0;f[c+8>>2]=0;f[c+12>>2]=0;f[a+56>>2]=-1;f[a+60>>2]=0;return}function Pl(a,b){a=a|0;b=b|0;if(!(Wa[f[(f[a>>2]|0)+36>>2]&127](a,b)|0)){a=0;return a|0}if(!(Wa[f[(f[a>>2]|0)+40>>2]&127](a,b)|0)){a=0;return a|0}a=Sa[f[(f[a>>2]|0)+44>>2]&255](a)|0;return a|0}function Ql(a){a=a|0;var b=0;f[a>>2]=3344;b=f[a+60>>2]|0;if(b|0)ar(b);a=a+52|0;b=f[a>>2]|0;f[a>>2]=0;if(!b)return;_q(b);return}function Rl(a,c,d){a=a|0;c=c|0;d=d|0;if(!(yn(a,c,d)|0)){a=0;return a|0}d=f[a+8>>2]|0;if((b[d+24>>0]|0)!=3){a=0;return a|0}a=(f[d+28>>2]|0)==9;return a|0}function Sl(a,c){a=a|0;c=c|0;var d=0,e=0;d=b[a>>0]|0;e=b[c>>0]|0;if(!(d<<24>>24==0?1:d<<24>>24!=e<<24>>24))do{a=a+1|0;c=c+1|0;d=b[a>>0]|0;e=b[c>>0]|0}while(!(d<<24>>24==0?1:d<<24>>24!=e<<24>>24));return (d&255)-(e&255)|0}function Tl(a,b,c,d,e,g){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;g=g|0;if(wp(a,f[b+8>>2]|0,g)|0)gj(0,b,c,d,e);return}function Ul(a){a=a|0;var b=0;f[a>>2]=3008;b=f[a+60>>2]|0;if(b|0)ar(b);a=a+52|0;b=f[a>>2]|0;f[a>>2]=0;if(!b)return;_q(b);return}function Vl(a){a=a|0;var b=0;f[a>>2]=4072;b=f[a+60>>2]|0;if(b|0)ar(b);a=a+52|0;b=f[a>>2]|0;f[a>>2]=0;if(!b)return;_q(b);return}function Wl(a,c){a=a|0;c=c|0;if(f[c+56>>2]|0){a=0;return a|0}if((b[c+24>>0]|0)!=3){a=0;return a|0}f[a+44>>2]=c;a=1;return a|0}function Xl(a){a=a|0;var b=0,c=0;f[a>>2]=1772;c=a+20|0;b=f[c>>2]|0;f[c>>2]=0;if(!b){jj(a);ar(a);return}Pa[f[(f[b>>2]|0)+4>>2]&127](b);jj(a);ar(a);return}function Yl(a){a=a|0;var b=0,c=0,d=0;f[a>>2]=1832;b=f[a+32>>2]|0;if(!b){ar(a);return}d=a+36|0;c=f[d>>2]|0;if((c|0)!=(b|0))f[d>>2]=c+(~((c+-4-b|0)>>>2)<<2);ar(b);ar(a);return}function Zl(a){a=a|0;var c=0,d=0,e=0;c=u;u=u+16|0;d=c;e=f[a+4>>2]|0;e=(f[e+56>>2]|0)-(f[e+52>>2]|0)>>2;b[d>>0]=0;Yg(a+20|0,e,d);u=c;return}function _l(a,c){a=a|0;c=c|0;if(f[c+56>>2]|0){a=0;return a|0}if((b[c+24>>0]|0)!=3){a=0;return a|0}f[a+60>>2]=c;a=1;return a|0}function $l(a){a=a|0;var b=0;f[a>>2]=3736;b=f[a+60>>2]|0;if(b|0)ar(b);a=a+52|0;b=f[a>>2]|0;f[a>>2]=0;if(!b)return;_q(b);return}function am(){var a=0,b=0;a=ln(40)|0;f[a>>2]=0;f[a+4>>2]=0;f[a+8>>2]=0;f[a+12>>2]=0;n[a+16>>2]=$(1.0);b=a+20|0;f[b>>2]=0;f[b+4>>2]=0;f[b+8>>2]=0;f[b+12>>2]=0;n[a+36>>2]=$(1.0);return a|0}function bm(a){a=a|0;var c=0,d=0,e=0;c=u;u=u+16|0;d=c;e=f[a+4>>2]|0;e=(f[e+28>>2]|0)-(f[e+24>>2]|0)>>2;b[d>>0]=0;Yg(a+20|0,e,d);u=c;return}function cm(a){a=a|0;switch(a|0){case 11:case 2:case 1:{a=1;break}case 4:case 3:{a=2;break}case 6:case 5:{a=4;break}case 8:case 7:{a=8;break}case 9:{a=4;break}case 10:{a=8;break}default:a=-1}return a|0}function dm(a){a=a|0;f[a>>2]=4684;Hi(a+8|0);ar(a);return}function em(a,c){a=a|0;c=c|0;var d=0,e=0;if((a|0)!=(c|0)){d=b[c+11>>0]|0;e=d<<24>>24<0;Yi(a,e?f[c>>2]|0:c,e?f[c+4>>2]|0:d&255)|0}return a|0}function fm(a,b){a=a|0;b=b|0;var c=0,d=0;c=u;u=u+32|0;d=c;Oi(d,b);a=f[d+16>>2]|0;Lo(d+4|0);u=c;return a|0}function gm(a,b){a=a|0;b=b|0;var c=0,d=0,e=0,f=0;f=a&65535;e=b&65535;c=X(e,f)|0;d=a>>>16;a=(c>>>16)+(X(e,d)|0)|0;e=b>>>16;b=X(e,f)|0;return (I=(a>>>16)+(X(e,d)|0)+(((a&65535)+b|0)>>>16)|0,a+b<<16|c&65535|0)|0}function hm(a){a=a|0;var c=0,d=0;b[a+36>>0]=0;d=Ho(f[a+32>>2]|0,0,7,0)|0;d=Tn(d|0,I|0,3)|0;a=a+16|0;c=a;c=Ho(d|0,I|0,f[c>>2]|0,f[c+4>>2]|0)|0;f[a>>2]=c;f[a+4>>2]=I;return}function im(a){a=a|0;var b=0,c=0;f[a>>2]=1772;c=a+20|0;b=f[c>>2]|0;f[c>>2]=0;if(!b){jj(a);return}Pa[f[(f[b>>2]|0)+4>>2]&127](b);jj(a);return}function jm(a,b,c,d,e,f){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;f=f|0;Ga(7044,7050,76,7144);return 0}function km(a){a=a|0;f[a>>2]=4684;Hi(a+8|0);return}function lm(a,b,c,d,e){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;f[b+44>>2]=e;Ad(a,b,c,d,e);return}function mm(a,b){a=a|0;b=b|0;var c=0;if((b|0)==-1|(b|0)>3){b=-1;return b|0}c=f[a+20+(b*12|0)>>2]|0;if(((f[a+20+(b*12|0)+4>>2]|0)-c|0)<=0){b=-1;return b|0}b=f[c>>2]|0;return b|0}function nm(a){a=a|0;var b=0,c=0;f[a>>2]=1832;c=f[a+32>>2]|0;if(!c)return;b=a+36|0;a=f[b>>2]|0;if((a|0)!=(c|0))f[b>>2]=a+(~((a+-4-c|0)>>>2)<<2);ar(c);return}function om(a,b,c,d){a=a|0;b=b|0;c=c|0;d=d|0;if(wp(a,f[b+8>>2]|0,0)|0)xk(0,b,c,d);return}function pm(a){a=a|0;var c=0;f[a>>2]=0;f[a+4>>2]=0;f[a+8>>2]=0;f[a+12>>2]=0;f[a+16>>2]=0;f[a+20>>2]=0;b[a+24>>0]=1;a=a+28|0;c=a+40|0;do{f[a>>2]=0;a=a+4|0}while((a|0)<(c|0));return}function qm(a){a=a|0;var b=0;f[a>>2]=1620;b=a+4|0;f[a+40>>2]=0;f[b>>2]=0;f[b+4>>2]=0;f[b+8>>2]=0;f[b+12>>2]=0;f[b+16>>2]=0;f[b+20>>2]=0;f[b+24>>2]=0;f[b+28>>2]=0;d[b+32>>1]=0;return}function rm(a,c,d){a=a|0;c=c|0;d=d|0;var e=0;if((c|0)<(a|0)&(a|0)<(c+d|0)){e=a;c=c+d|0;a=a+d|0;while((d|0)>0){a=a-1|0;c=c-1|0;d=d-1|0;b[a>>0]=b[c>>0]|0}a=e}else Mg(a,c,d)|0;return a|0}function sm(a){a=a|0;var c=0,d=0,e=0;c=f[a>>2]|0;d=(b[c>>0]|0)+-48|0;if(d>>>0<10){e=c;c=0;do{c=d+(c*10|0)|0;e=e+1|0;f[a>>2]=e;d=(b[e>>0]|0)+-48|0}while(d>>>0<10)}else c=0;return c|0}function tm(a){a=a|0;var b=0,c=0,d=0;f[a>>2]=1456;b=f[a+8>>2]|0;if(!b){ar(a);return}d=a+12|0;c=f[d>>2]|0;if((c|0)!=(b|0))f[d>>2]=c+(~((c+-4-b|0)>>>2)<<2);ar(b);ar(a);return}function um(a){a=a|0;var b=0;f[a>>2]=3400;b=f[a+60>>2]|0;if(!b){ar(a);return}ar(b);ar(a);return}function vm(a,b){a=a|0;b=b|0;var c=0;if((b|0)<=-1)Ga(17188,17204,63,17242);c=f[a+8>>2]|0;if(((f[a+12>>2]|0)-c>>2|0)>(b|0))return f[c+(b<<2)>>2]|0;else Ga(17252,17204,64,17242);return 0}function wm(a,b,c){a=a|0;b=b|0;c=c|0;var d=0,e=0;if((b|0)>0)d=0;else return;do{e=f[a+(d<<2)>>2]|0;f[c+(d<<2)>>2]=e<<31>>31^e>>>1;d=d+1|0}while((d|0)!=(b|0));return}function xm(a,c,d,e){a=a|0;c=c|0;d=d|0;e=e|0;if(!((a|0)==0&(c|0)==0))do{d=d+-1|0;b[d>>0]=h[19836+(a&15)>>0]|0|e;a=Tn(a|0,c|0,4)|0;c=I}while(!((a|0)==0&(c|0)==0));return d|0}function ym(a,b,c){a=a|0;b=b|0;c=c|0;var d=0,e=0;e=u;u=u+16|0;d=e;f[d>>2]=f[c>>2];a=Na[f[(f[a>>2]|0)+16>>2]&31](a,b,d)|0;if(a)f[c>>2]=f[d>>2];u=e;return a&1|0}function zm(){var a=0,b=0;b=hn()|0;if((b|0?(a=f[b>>2]|0,a|0):0)?(b=a+48|0,(f[b>>2]&-256|0)==1126902528?(f[b+4>>2]|0)==1129074247:0):0)Vo(f[a+12>>2]|0);Vo(fq()|0)}function Am(a){a=a|0;var b=0;f[a>>2]=3064;b=f[a+60>>2]|0;if(!b){ar(a);return}ar(b);ar(a);return}function Bm(a){a=a|0;var b=0;f[a>>2]=4128;b=f[a+60>>2]|0;if(!b){ar(a);return}ar(b);ar(a);return}function Cm(a){a=a|0;var c=0;c=b[w+(a&255)>>0]|0;if((c|0)<8)return c|0;c=b[w+(a>>8&255)>>0]|0;if((c|0)<8)return c+8|0;c=b[w+(a>>16&255)>>0]|0;if((c|0)<8)return c+16|0;return (b[w+(a>>>24)>>0]|0)+24|0}function Dm(a){a=a|0;var b=0,c=0,d=0;if(!a)return;b=f[a>>2]|0;if(b|0){d=a+4|0;c=f[d>>2]|0;if((c|0)!=(b|0))f[d>>2]=c+(~((c+-4-b|0)>>>2)<<2);ar(b)}ar(a);return}function Em(a,c){a=a|0;c=c|0;var d=0;b[c+84>>0]=1;d=f[c+68>>2]|0;c=c+72|0;a=f[c>>2]|0;if((a|0)==(d|0))return 1;f[c>>2]=a+(~((a+-4-d|0)>>>2)<<2);return 1}function Fm(a){a=a|0;var b=0;f[a>>2]=3792;b=f[a+60>>2]|0;if(!b){ar(a);return}ar(b);ar(a);return}function Gm(a){a=a|0;var b=0,c=0;f[a>>2]=1456;c=f[a+8>>2]|0;if(!c)return;b=a+12|0;a=f[b>>2]|0;if((a|0)!=(c|0))f[b>>2]=a+(~((a+-4-c|0)>>>2)<<2);ar(c);return}function Hm(a,b){a=a|0;b=b|0;return hi(a+8|0,b)|0}function Im(a,b,c){a=a|0;b=b|0;c=c|0;Qb(a,b,c);return}function Jm(a){a=a|0;f[a>>2]=3400;a=f[a+60>>2]|0;if(!a)return;ar(a);return}function Km(a,b){a=a|0;b=b|0;if(!b)return 0;else Ga(11246,11617,62,11257);return 0}function Lm(a,b,c,d){a=a|0;b=b|0;c=c|0;d=d|0;var e=0;if((f[b+4>>2]|0)==(c|0)?(e=b+28|0,(f[e>>2]|0)!=1):0)f[e>>2]=d;return}function Mm(a,b){a=a|0;b=b|0;if(!b)return 0;else Ga(11246,10695,66,11257);return 0}function Nm(a){a=a|0;f[a>>2]=3064;a=f[a+60>>2]|0;if(!a)return;ar(a);return}function Om(a){a=a|0;f[a>>2]=4128;a=f[a+60>>2]|0;if(!a)return;ar(a);return}function Pm(a){a=a|0;var b=0;f[a>>2]=4660;b=f[a+20>>2]|0;if(b|0)ar(b);b=f[a+8>>2]|0;if(!b){ar(a);return}ar(b);ar(a);return}function Qm(a,c,d){a=a|0;c=c|0;d=d|0;if(!((a|0)==0&(c|0)==0))do{d=d+-1|0;b[d>>0]=a&7|48;a=Tn(a|0,c|0,3)|0;c=I}while(!((a|0)==0&(c|0)==0));return d|0}function Rm(){var a=0,b=0;a=ln(24)|0;f[a>>2]=1456;f[a+4>>2]=-1;b=a+8|0;f[b>>2]=0;f[b+4>>2]=0;f[b+8>>2]=0;f[b+12>>2]=0;return a|0}function Sm(a){a=a|0;f[a>>2]=1564;a=a+4|0;f[a>>2]=0;f[a+4>>2]=0;f[a+8>>2]=0;f[a+12>>2]=0;f[a+16>>2]=0;f[a+20>>2]=0;f[a+24>>2]=0;f[a+28>>2]=0;return}function Tm(a,b,c){a=a|0;b=b|0;c=c|0;var d=0,e=0;d=a+20|0;e=f[d>>2]|0;a=(f[a+16>>2]|0)-e|0;a=a>>>0>c>>>0?c:a;Mg(e|0,b|0,a|0)|0;f[d>>2]=(f[d>>2]|0)+a;return c|0}function Um(a,b){a=a|0;b=b|0;if(!b)return 0;else Ga(11246,11902,68,11257);return 0}function Vm(a,b){a=a|0;b=b|0;return ki(a+8|0,b)|0}function Wm(a){a=a|0;var c=0;Ol(a);c=a+64|0;f[a+88>>2]=0;f[c>>2]=0;f[c+4>>2]=0;f[c+8>>2]=0;f[c+12>>2]=0;f[c+16>>2]=0;b[c+20>>0]=0;return}function Xm(a){a=a|0;var b=0,c=0;if(!a)return;b=f[a+8>>2]|0;if(b|0){c=a+12|0;if((f[c>>2]|0)!=(b|0))f[c>>2]=b;ar(b)}ar(a);return}function Ym(a){a=a|0;f[a>>2]=0;a=a+8|0;f[a>>2]=0;f[a+4>>2]=0;f[a+8>>2]=0;f[a+12>>2]=0;f[a+16>>2]=0;f[a+20>>2]=0;f[a+24>>2]=0;b[a+28>>0]=0;return}function Zm(a){a=a|0;f[a>>2]=3792;a=f[a+60>>2]|0;if(!a)return;ar(a);return}function _m(a){a=a|0;var b=0;f[a>>2]=4708;b=f[a+20>>2]|0;if(b|0)ar(b);b=f[a+8>>2]|0;if(!b){ar(a);return}ar(b);ar(a);return}function $m(a,b,c,d){a=a|0;b=b|0;c=c|0;d=d|0;var e=0,g=0;g=u;u=u+16|0;e=g|0;nd(a,b,c,d,e)|0;u=g;return (I=f[e+4>>2]|0,f[e>>2]|0)|0}function an(a){a=a|0;f[a>>2]=3456;fr(a+84|0);ar(a);return}function bn(a){a=a|0;var b=0;f[a>>2]=4660;b=f[a+20>>2]|0;if(b|0)ar(b);b=f[a+8>>2]|0;if(!b)return;ar(b);return}function cn(a){a=a|0;Ep(a);f[a+16>>2]=0;f[a+20>>2]=0;f[a+12>>2]=a+16;a=a+24|0;f[a>>2]=0;f[a+4>>2]=0;f[a+8>>2]=0;f[a+12>>2]=0;return}function dn(a){a=a|0;Zn(a);f[a>>2]=1524;a=a+72|0;f[a>>2]=0;f[a+4>>2]=0;f[a+8>>2]=0;f[a+12>>2]=0;f[a+16>>2]=0;f[a+20>>2]=0;return}function en(a){a=a|0;f[a>>2]=3120;fr(a+84|0);ar(a);return}function fn(a){a=a|0;f[a>>2]=4184;fr(a+84|0);ar(a);return}function gn(a){a=a|0;f[a>>2]=3456;fr(a+84|0);return}function hn(){var a=0,b=0;a=u;u=u+16|0;if(!(Aa(23224,3)|0)){b=qa(f[5807]|0)|0;u=a;return b|0}else Qn(22369,a);return 0}function jn(a){a=a|0;var b=0;f[a>>2]=4708;b=f[a+20>>2]|0;if(b|0)ar(b);b=f[a+8>>2]|0;if(!b)return;ar(b);return}function kn(a,b,c,d){a=a|0;b=b|0;c=c|0;d=d|0;var e=0,f=0;e=a;f=c;c=gm(e,f)|0;a=I;return (I=(X(b,f)|0)+(X(d,e)|0)+a|a&0,c|0|0)|0}function ln(a){a=a|0;var b=0;b=(a|0)==0?1:a;while(1){a=$a(b)|0;if(a|0)break;a=dq()|0;if(!a){a=0;break}Ua[a&3]()}return a|0}function mn(a){a=a|0;var b=0,c=0;b=u;u=u+16|0;c=b;a=dr(f[a+60>>2]|0)|0;f[c>>2]=a;a=Ro(ua(6,c|0)|0)|0;u=b;return a|0}function nn(a,b,c,d){a=a|0;b=b|0;c=c|0;d=d|0;return Pc(b,c,d)|0}function on(a){a=a|0;f[a>>2]=3848;fr(a+84|0);ar(a);return}function pn(a){a=a|0;var b=0;b=u;u=u+16|0;ac(a);if(!(ra(f[5807]|0,0)|0)){u=b;return}else Qn(22468,b)}function qn(a){a=a|0;f[a>>2]=3120;fr(a+84|0);return}function rn(a){a=a|0;f[a>>2]=4184;fr(a+84|0);return}function sn(a){a=a|0;Go(a);f[a>>2]=2616;f[a+24>>2]=-1;f[a+28>>2]=0;n[a+32>>2]=$(0.0);return}function tn(a,b,c){a=a|0;b=b|0;c=c|0;f[a>>2]=b;b=a+8|0;f[b>>2]=c;f[b+4>>2]=0;a=a+16|0;f[a>>2]=0;f[a+4>>2]=0;return}function un(a,b,c,d){a=a|0;b=b|0;c=c|0;d=d|0;return (((f[a+8>>2]|0)+-1|0)==(d|0)?0:d+1|0)|0}function vn(a){a=a|0;f[a>>2]=3848;fr(a+84|0);return}function wn(a){a=a|0;f[a>>2]=0;f[a+4>>2]=0;f[a+8>>2]=0;a=a+16|0;f[a>>2]=0;f[a+4>>2]=0;f[a+8>>2]=0;f[a+12>>2]=0;return}function xn(a,b,c){a=a|0;b=b|0;c=c|0;return 1}function yn(a,b,c){a=a|0;b=b|0;c=c|0;return el(a,b,c)|0}function zn(a,b,c,d,e,f,g){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;f=f|0;g=g|0;return Ra[a&63](b|0,c|0,d|0,e|0,f|0,g|0)|0}function An(a,b,c){a=a|0;b=b|0;c=c|0;if((c|0)<32){I=b>>c;return a>>>c|(b&(1<>c-32|0}function Bn(a,b,c){a=a|0;b=b|0;c=c|0;return mm(b,c)|0}function Cn(a){a=a|0;Nd(a);ar(a);return}function Dn(a,b,c){a=a|0;b=b|0;c=c|0;var d=0,e=0;d=u;u=u+16|0;e=d;f[e>>2]=c;c=Yp(a,b,e)|0;u=d;return c|0}function En(a,b,c){a=a|0;b=$(b);c=c|0;var d=La;d=$($(1.0)/$(c|0));n[a+4>>2]=d;n[a>>2]=b;return}function Fn(a,b,c,d){a=a|0;b=b|0;c=c|0;d=d|0;return Ki(b,c,d)|0}function Gn(){var a=0;a=u;u=u+16|0;if(!(ya(23228,127)|0)){u=a;return}else Qn(22418,a)}function Hn(a){a=a|0;Ae(a);ar(a);return}function In(a,b){a=a|0;b=b|0;var c=0,d=0;c=u;u=u+16|0;d=c;f[d>>2]=b;b=rh(f[1308]|0,a,d)|0;u=c;return b|0}function Jn(a,b,c,d,e,f,g){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;f=f|0;g=g|0;Va[a&3](b|0,c|0,d|0,e|0,f|0,g|0)}function Kn(a){a=a|0;if(!(f[a+44>>2]|0))return 0;else return Sa[f[(f[a>>2]|0)+48>>2]&255](a)|0;return 0}function Ln(a,b,c,d){a=a|0;b=b|0;c=c|0;d=d|0;return Dg(b,c,d)|0}function Mn(a,b,c){a=a|0;b=b|0;c=c|0;if(b|0)ej(a|0,(zq(c)|0)&255|0,b|0)|0;return a|0}function Nn(a){a=a|0;return 4}function On(a,b,c){a=a|0;b=b|0;c=c|0;if((c|0)<32){I=b<>>32-c;return a<>2]|0;return Wa[f[(f[a>>2]|0)+16>>2]&127](a,b)|0}function Qn(a,b){a=a|0;b=b|0;var c=0;c=u;u=u+16|0;f[c>>2]=b;b=f[1215]|0;rh(b,a,c)|0;Ij(10,b)|0;wa()}function Rn(a,b){a=a|0;b=b|0;a=f[a+48>>2]|0;return Wa[f[(f[a>>2]|0)+12>>2]&127](a,b)|0}function Sn(a,b){a=a|0;b=b|0;a=f[a+48>>2]|0;return Wa[f[(f[a>>2]|0)+20>>2]&127](a,b)|0}function Tn(a,b,c){a=a|0;b=b|0;c=c|0;if((c|0)<32){I=b>>>c;return a>>>c|(b&(1<>>c-32|0}function Un(a,b,c){a=a|0;b=b|0;c=c|0;return Ik(a,b,c)|0}function Vn(a){a=a|0;_d(a);ar(a);return}function Wn(){}function Xn(a,b,c,d){a=a|0;b=b|0;c=c|0;d=d|0;d=b-d-(c>>>0>a>>>0|0)>>>0;return (I=d,a-c>>>0|0)|0}function Yn(a){a=a|0;return 5}function Zn(a){a=a|0;var b=0;f[a>>2]=1484;a=a+4|0;b=a+68|0;do{f[a>>2]=0;a=a+4|0}while((a|0)<(b|0));return}function _n(a){a=a|0;return 6}function $n(a,b,c,d){a=a|0;b=b|0;c=c|0;d=d|0;return Ck(b,c,d)|0}function ao(a,b,c){a=a|0;b=b|0;c=c|0;f[a+28>>2]=b;f[a+32>>2]=c;return 1}function bo(a,b){a=a|0;b=b|0;if(!b)b=0;else b=Jh(f[b>>2]|0,f[b+4>>2]|0,a)|0;return (b|0?b:a)|0}function co(a,b,c){a=a|0;b=b|0;c=c|0;return Bn(a,b,c)|0}function eo(a,b,c){a=a|0;b=b|0;c=c|0;return Yf(b,c)|0}function fo(a){a=a|0;f[a>>2]=1724;f[a+4>>2]=0;f[a+8>>2]=0;f[a+12>>2]=-1;f[a+16>>2]=0;return}function go(a,b){a=a|0;b=b|0;Yj(a,b);return}function ho(a){a=a|0;if(!a)return;Lo(a+4|0);ar(a);return}function io(a){a=a|0;a=a+4|0;if((b[a+11>>0]|0)<0){a=f[a>>2]|0;return a|0}else return a|0;return 0}function jo(a,b,c,d,e,f){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;f=f|0;Oa[a&3](b|0,c|0,d|0,e|0,f|0)}function ko(a,b,c){a=a|0;b=b|0;c=c|0;return Ok(a,b,c)|0}function lo(a,b,c){a=a|0;b=b|0;c=c|0;return Mj(a,b,c)|0}function mo(a,b,c){a=a|0;b=b|0;c=c|0;return rk(a,b,c)|0}function no(a,b,c){a=a|0;b=b|0;c=c|0;return Ej(a,b,c)|0}function oo(a,b,c){a=a|0;b=b|0;c=c|0;return +(+fk(a,b,c))}function po(a){a=a|0;a=f[a+48>>2]|0;return Sa[f[(f[a>>2]|0)+28>>2]&255](a)|0}function qo(a,b){a=a|0;b=b|0;return Wa[f[(f[a>>2]|0)+12>>2]&127](a,b)|0}function ro(a,b){a=a|0;b=b|0;return Wa[f[(f[a>>2]|0)+56>>2]&127](a,b)|0}function so(a){a=a|0;a=f[a+48>>2]|0;return Sa[f[(f[a>>2]|0)+24>>2]&255](a)|0}function to(a){a=a|0;f[a>>2]=0;f[a+4>>2]=0;f[a+8>>2]=0;f[a+12>>2]=0;f[a+16>>2]=0;return}function uo(a,b,c){a=a|0;b=b|0;c=c|0;return Jk(a,b,c)|0}function vo(a,b){a=a|0;b=b|0;f[a+4>>2]=b;return 1}function wo(a){a=a|0;a=f[a+48>>2]|0;return Sa[f[(f[a>>2]|0)+36>>2]&255](a)|0}function xo(a,b,c){a=a|0;b=b|0;c=c|0;return uk(a,b,c)|0}function yo(a,b,c){a=a|0;b=b|0;c=c|0;return kk(a,b,c)|0}function zo(a){a=a|0;Go(a);f[a>>2]=2684;f[a+24>>2]=-1;return}function Ao(a,b){a=a|0;b=b|0;f[a+8>>2]=b;f[a+12>>2]=-1;return 1}function Bo(a,b,c){a=a|0;b=b|0;c=c|0;return Ni(b,c)|0}function Co(a){a=+a;var b=0;p[s>>3]=a;b=f[s>>2]|0;I=f[s+4>>2]|0;return b|0}function Do(a){a=a|0;f[a+12>>2]=0;f[a+16>>2]=0;f[a>>2]=0;n[a+4>>2]=$(0.0);return}function Eo(){var a=0;a=ln(40)|0;f[a>>2]=-1;wn(a+8|0);return a|0}function Fo(){var a=0;a=ln(8)|0;f[a>>2]=1428;f[a+4>>2]=-1;return a|0}function Go(a){a=a|0;fo(a);f[a>>2]=1772;f[a+20>>2]=0;return}function Ho(a,b,c,d){a=a|0;b=b|0;c=c|0;d=d|0;c=a+c>>>0;return (I=b+d+(c>>>0>>0|0)>>>0,c|0)|0}function Io(a,b){a=a|0;b=b|0;go(a,b);return}function Jo(a,b){a=a|0;b=b|0;return $(n[(f[a+8>>2]|0)+(b<<2)>>2])}function Ko(a,b){a=a|0;b=b|0;return fm(a,b)|0}function Lo(a){a=a|0;if((b[a+11>>0]|0)<0)ar(f[a>>2]|0);return}function Mo(a){a=a|0;if(!a)return;Pa[f[(f[a>>2]|0)+4>>2]&127](a);return}function No(a,b,c,d,e){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;Xa[a&7](b|0,c|0,d|0,e|0)}function Oo(a,b,c){a=a|0;b=b|0;c=c|0;if(c|0)rm(a|0,b|0,c|0)|0;return a|0}function Po(a){a=a|0;var b=0;b=a+60|0;do{f[a>>2]=0;a=a+4|0}while((a|0)<(b|0));return}function Qo(a,b,c){a=a|0;b=b|0;c=c|0;return vm(b,c)|0}function Ro(a){a=a|0;var b=0;if(a>>>0>4294963200){b=Oq()|0;f[b>>2]=0-a;a=-1}return a|0}function So(a,b,c){a=a|0;b=b|0;c=c|0;if(c|0)Mg(a|0,b|0,c|0)|0;return a|0}function To(a,b){a=a|0;b=b|0;return -1}function Uo(a){a=a|0;if(!a)a=0;else a=(uh(a,1304,1376,0)|0)!=0;return a&1|0}function Vo(a){a=a|0;var b=0;b=u;u=u+16|0;Ua[a&3]();Qn(22521,b)}function Wo(a){a=a|0;bi(a);ar(a);return}function Xo(a){a=a|0;dp(a);f[a>>2]=4528;f[a+48>>2]=0;return}function Yo(a,b,c,d){a=a|0;b=b|0;c=c|0;d=d|0;return Na[a&31](b|0,c|0,d|0)|0}function Zo(a,b,c){a=a|0;b=b|0;c=c|0;tn(a,b,c);return}function _o(a){a=a|0;if(!a)return;fr(a+24|0);ar(a);return}function $o(a,b){a=a|0;b=b|0;return f[(f[a+4>>2]|0)+(b<<2)>>2]|0}function ap(){var a=0;a=ln(64)|0;Ol(a);return a|0}function bp(a,b){a=a|0;b=b|0;return $(hp(a,b))}function cp(a){a=a|0;return f[a+8>>2]|0}function dp(a){a=a|0;qm(a);f[a>>2]=1664;f[a+44>>2]=0;return}function ep(a){a=a|0;if(!a)return;Ri(a);ar(a);return}function fp(a,b){a=a|0;b=b|0;return Sp(a,b)|0}function gp(a){a=a|0;return b[(f[a+8>>2]|0)+24>>0]|0}function hp(a,b){a=a|0;b=b|0;return $(n[(f[a>>2]|0)+(b<<2)>>2])}function ip(a,b,c){a=a|0;b=b|0;c=c|0;if(!(f[a>>2]&32))xi(b,c,a)|0;return}function jp(a){a=a|0;return (f[a+8>>2]|0)-(f[a+4>>2]|0)>>2|0}function kp(a,b,c,d){a=a|0;b=b|0;c=c|0;d=d|0;Ta[a&7](b|0,c|0,d|0)}function lp(){var a=0;a=ln(96)|0;Wm(a);return a|0}function mp(a){a=a|0;var b=0;b=u;u=u+a|0;u=u+15&-16;return b|0}function np(a,b){a=a|0;b=b|0;if(!a)a=0;else a=Li(a,b,0)|0;return a|0}function op(a){a=a|0;var b=0;b=(Yq()|0)+188|0;return gk(a,f[b>>2]|0)|0}function pp(a){a=a|0;return ((f[a+88>>2]|0)-(f[a+84>>2]|0)|0)/12|0|0}function qp(){var a=0;a=ln(12)|0;Ip(a);return a|0}function rp(){var a=0;a=ln(40)|0;Ym(a);return a|0}function sp(a,b){a=a|0;b=b|0;return Ap(a,b)|0}function tp(a,b,c,d,e,f){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;f=f|0;aa(4);return 0}function up(a){a=a|0;jj(a);ar(a);return}function vp(a){a=a|0;n[a>>2]=$(1.0);n[a+4>>2]=$(1.0);return}function wp(a,b,c){a=a|0;b=b|0;c=c|0;return (a|0)==(b|0)|0}function xp(a){a=a|0;Sm(a);f[a>>2]=4412;return}function yp(a,b){a=a|0;b=b|0;var c=0;c=Np(a|0)|0;return ((b|0)==0?a:c)|0}function zp(a){a=a|0;return (f[a+12>>2]|0)-(f[a+8>>2]|0)>>2|0}function Ap(a,b){a=a|0;b=b|0;return f[(f[a>>2]|0)+(b<<2)>>2]|0}function Bp(a,b){a=a|0;b=b|0;f[a+4>>2]=b;return}function Cp(a,b){a=a|0;b=b|0;return 1}function Dp(a,b,c,d){a=a|0;b=b|0;c=c|0;d=d|0;return nd(a,b,c,d,0)|0}function Ep(a){a=a|0;f[a+4>>2]=0;f[a+8>>2]=0;f[a>>2]=a+4;return}function Fp(){var a=0;a=ln(72)|0;Zn(a);return a|0}function Gp(a){a=a|0;Ga(22044,21922,1194,22073)}function Hp(a){a=a|0;Ga(21893,21922,1183,22023)}function Ip(a){a=a|0;f[a>>2]=0;f[a+4>>2]=0;f[a+8>>2]=0;return}function Jp(a){a=a|0;return (f[a+4>>2]|0)-(f[a>>2]|0)>>2|0}function Kp(a){a=a|0;Ga(21870,21769,315,22073)}function Lp(a){a=a|0;Ga(21746,21769,304,22023)}function Mp(a,b,c){a=a|0;b=b|0;c=c|0;return Wa[a&127](b|0,c|0)|0}function Np(a){a=a|0;return (a&255)<<24|(a>>8&255)<<16|(a>>16&255)<<8|a>>>24|0}function Op(a){a=a|0;dp(a);f[a>>2]=4468;return}function Pp(){var a=0;a=ln(1)|0;fr(a);return a|0}function Qp(a,c){a=a|0;c=c|0;b[a>>0]=b[c>>0]|0;return}function Rp(a,b,c,d,e,f){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;f=f|0;aa(8)}function Sp(a,b){a=a|0;b=b|0;return f[b+4>>2]|0}function Tp(a){a=a|0;return $(n[a+20>>2])}function Up(a){a=a|0;return f[a+4>>2]|0}function Vp(a){a=a|0;if(!a)return;ar(a);return}function Wp(a,b){a=a|0;b=b|0;if(!x){x=a;y=b}}function Xp(a){a=a|0;return 3}function Yp(a,b,c){a=a|0;b=b|0;c=c|0;return Wi(a,2147483647,b,c)|0}function Zp(a){a=a|0;return f[a+88>>2]|0}function _p(a,b,c){a=a|0;b=b|0;c=c|0;Qa[a&7](b|0,c|0)}function $p(){var a=0;a=ln(40)|0;cn(a);return a|0}function aq(){var a=0;a=ln(96)|0;dn(a);return a|0}function bq(a){a=a|0;return (b[a+32>>0]|0)!=0|0}function cq(a,b,c,d,e){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;aa(1)}function dq(){var a=0;a=f[5808]|0;f[5808]=a+0;return a|0}function eq(a){a=a|0;return f[a+56>>2]|0}function fq(){var a=0;a=f[1467]|0;f[1467]=a+0;return a|0}function gq(a){a=a|0;$g(a);ar(a);return}function hq(a){a=a|0;return b[a+24>>0]|0}function iq(a,b){a=a|0;b=b|0;return 0}function jq(a){a=a|0;return f[a+40>>2]|0}function kq(a){a=a|0;return f[a+48>>2]|0}function lq(a,b){a=a|0;b=b|0;return Sa[a&255](b|0)|0}function mq(a){a=a|0;return f[a+60>>2]|0}function nq(a){a=a|0;return f[a+28>>2]|0}function oq(a){a=a|0;xa(a|0)|0;zm()}function pq(a){a=a|0;return f[a+80>>2]|0}function qq(a,b){a=a|0;b=b|0;u=a;v=b}function rq(a,b,c,d){a=a|0;b=b|0;c=c|0;d=d|0;aa(10)}function sq(a){a=a|0;return ((a|0)==32|(a+-9|0)>>>0<5)&1|0}function tq(a){a=a|0;return (f[a>>2]|0)==0|0}function uq(a){a=a|0;return f[a+68>>2]|0}function vq(a,b){a=a|0;b=b|0;Pa[a&127](b|0)}function wq(a,b){a=a|0;b=b|0;return bo(a,b)|0}function xq(a){a=a|0;b[a+12>>0]=0;return}function yq(a){a=a|0;fr(a);ar(a);return}function zq(a){a=a|0;return a&255|0}function Aq(a){a=a|0;f[a>>2]=0;return}function Bq(a,b,c){a=a|0;b=b|0;c=c|0;aa(0);return 0}function Cq(a){a=a|0;return f[a>>2]|0}function Dq(a){a=a|0;return 2}function Eq(a){a=a|0;f[a>>2]=5964;return}function Fq(a){a=a|0;return 1}function Gq(a,b){a=+a;b=b|0;return +(+bk(a,b))}function Hq(){return 3}function Iq(a,b,c){a=a|0;b=b|0;c=c|0;aa(6)}function Jq(){return -4}function Kq(){return 4}function Lq(){return -3}function Mq(){return 1}function Nq(){return 2}function Oq(){return (Yq()|0)+64|0}function Pq(){return -5}function Qq(a,b){a=a|0;b=b|0;aa(9);return 0}function Rq(a){a=a|0;return 22561}function Sq(a){a=a|0;Ua[a&3]()}function Tq(){return -2}function Uq(){Ha()}function Vq(){return -1}function Wq(a,b){a=a|0;b=b|0;aa(3)}function Xq(){return 0}function Yq(){return kr()|0}function Zq(a){a=a|0;return ln(a)|0}function _q(a){a=a|0;ar(a);return}function $q(a){a=a|0;u=a}function ar(a){a=a|0;ac(a);return}function br(a){a=a|0;I=a}function cr(){return 23160}function dr(a){a=a|0;return a|0}function er(a){a=a|0;aa(5);return 0}function fr(a){a=a|0;return}function gr(a){a=a|0;return 0}function hr(){return I|0}function ir(){return u|0}function jr(a){a=a|0;aa(2)}function kr(){return 4988}function lr(){aa(7)} + +// EMSCRIPTEN_END_FUNCS +var Na=[Bq,ao,el,sl,xn,ti,yn,Kf,xd,Fk,Di,Bk,Rl,zi,Ti,Rg,ol,El,Tm,rj,Bq,Bq,Bq,Bq,Bq,Bq,Bq,Bq,Bq,Bq,Bq,Bq];var Oa=[cq,cj,ah,cq];var Pa=[jr,fr,_q,Gm,tm,$g,gq,pb,Ek,vk,$k,Nk,Hj,Dj,Dj,jj,up,im,Xl,nm,Yl,Yl,Yl,Yl,Uj,Lj,zk,ik,Zk,Kk,ll,_k,Yl,Yl,Qj,Kj,sk,dk,Uk,Hk,gl,Vk,dl,Wk,Xl,fr,_q,_q,fr,_q,_q,_q,bl,Pk,Ul,Cl,Nm,Am,qn,en,_q,_q,Yk,Mk,Ql,xl,Jm,um,gn,an,fr,_q,_q,_q,fl,Xk,$l,Ll,Zm,Fm,vn,on,_q,_q,cl,Qk,Vl,Dl,Om,Bm,rn,fn,bi,Wo,Dj,fr,_q,Dj,Nk,Dj,hj,aj,_d,Vn,hk,_j,bn,Pm,Zl,km,dm,jn,_m,bm,lk,ck,Nd,Cn,Ae,Hn,fr,yq,fr,fr,yq,fr,yq,pn];var Qa=[Wq,qk,Zf,Hc,yk,Wq,Wq,Wq];var Ra=[tp,Xd,kc,Xb,rb,ce,Be,jm,lc,Yb,jb,be,me,jm,qj,Ee,Zc,Db,Bg,jh,yc,Le,Yc,Ab,ug,dh,xc,vj,Ie,fd,Fb,Hg,oh,Ac,Se,ed,Bb,Cg,kh,zc,tp,tp,tp,tp,tp,tp,tp,tp,tp,tp,tp,tp,tp,tp,tp,tp,tp,tp,tp,tp,tp,tp,tp,tp];var Sa=[er,Dq,Fq,Wj,jp,nq,Fq,gr,Fq,Fq,le,Rk,Fq,Fq,Kn,gr,gp,Up,gr,gr,Fq,gr,Fq,Fq,Fl,Dq,Fl,Nn,Fl,Xp,yl,Fq,Yn,yl,Fq,_n,jk,Fq,Fq,Fl,Dq,Fl,Nn,Fl,Xp,yl,Fq,Yn,yl,Fq,_n,jk,Fq,Df,Dq,Dq,Xp,gr,Up,Fq,gr,Fq,Xp,Fq,zl,Dq,zl,Nn,zl,Xp,vl,Fq,Yn,vl,Fq,_n,ek,Fq,Fq,zl,Dq,zl,Nn,zl,Xp,vl,Fq,Yn,vl,Fq,_n,ek,Fq,gr,Up,Fq,gr,Fq,Dq,Fq,zl,Dq,zl,Nn,zl,Xp,vl,Fq,Yn,vl,Fq,_n,ek,Fq,Fq,zl,Dq,zl,Nn,zl,Xp,vl,Fq,Yn,vl,Fq,_n,ek,Fq,Ke,Rj,$i,Rj,Cb,lg,po,wo,so,db,Fq,Up,cp,Ng,Wf,Wg,bb,Fq,Up,cp,cb,Fq,Up,cp,mn,Rq,er,er,er,er,er,er,er,er,er,er,er,er,er,er,er,er,er,er,er,er,er,er,er,er,er,er,er,er,er,er,er,er,er,er,er,er,er,er,er,er,er,er,er,er,er,er,er,er,er,er,er,er,er,er,er,er,er,er,er,er,er,er,er,er,er,er,er,er,er,er,er,er,er,er,er,er,er,er,er,er,er,er,er,er,er,er,er,er,er,er,er,er,er,er,er,er,er,er,er,er,er];var Ta=[Iq,gg,bg,xg,nj,ok,Iq,Iq];var Ua=[lr,Uq,Fi,Gn];var Va=[Rp,Tl,Sk,Rp];var Wa=[Qq,Ml,Eh,ic,Pl,$o,iq,Cp,iq,iq,Ao,Cp,qh,nl,de,To,iq,gi,He,Um,_l,Ye,Km,_l,Te,Mm,_l,Eg,He,Um,_l,Ye,Km,_l,Te,Mm,_l,Eg,ro,cg,ii,To,iq,Hm,ng,Um,Wl,Lg,Km,Wl,Jg,Mm,Wl,bj,ng,Um,Wl,Lg,Km,Wl,Jg,Mm,Wl,bj,To,iq,Vm,rg,Um,Wl,Sg,Km,Wl,Og,Mm,Wl,ij,rg,Um,Wl,Sg,Km,Wl,Og,Mm,Wl,ij,_e,Qg,ul,ak,Zj,Vg,Em,Gi,Cp,Vb,Vg,Sn,Rn,Pn,vo,si,Ai,Tb,uf,yf,wf,vo,si,Ai,Tb,vo,si,Ai,Tb,Qq,Qq,Qq,Qq,Qq,Qq,Qq,Qq,Qq,Qq,Qq,Qq];var Xa=[rq,Qi,Dh,om,kl,rq,rq,rq];return{_emscripten_bind_Decoder_GetAttributeFloat_3:Ln,_emscripten_bind_PointAttribute_normalized_0:bq,_bitshift64Lshr:Tn,_emscripten_bind_Decoder_GetAttributeFloatForAllPoints_3:nn,_emscripten_bind_DecoderBuffer_Init_2:Zo,_emscripten_bind_PointAttribute_size_0:pq,_bitshift64Ashr:An,_sbrk:Il,_memcpy:Mg,stackSave:ir,_emscripten_enum_draco_GeometryAttribute_Type_INVALID:Vq,_emscripten_bind_Decoder_GetAttributeIdByName_2:Bo,_emscripten_enum_draco_EncodedGeometryType_POINT_CLOUD:Xq,___udivmoddi4:nd,_emscripten_bind_Status_ok_0:tq,_emscripten_bind_Mesh_num_faces_0:pp,_emscripten_get_global_libc:cr,_emscripten_bind_Decoder_DecodeBufferToPointCloud_2:Un,_emscripten_enum_draco_AttributeTransformType_ATTRIBUTE_NO_TRANSFORM:Xq,runPostSets:Wn,_emscripten_bind_Decoder_GetEncodedGeometryType_1:Ko,___cxa_can_catch:ym,_free:ac,_emscripten_bind_GeometryAttribute___destroy___0:Vp,_emscripten_enum_draco_EncodedGeometryType_INVALID_GEOMETRY_TYPE:Vq,_emscripten_bind_PointAttribute_byte_stride_0:jq,_emscripten_bind_Metadata_Metadata_0:am,_emscripten_bind_AttributeQuantizationTransform_min_value_1:Jo,_emscripten_bind_Decoder_Decoder_0:$p,_emscripten_bind_MetadataQuerier_GetStringEntry_2:no,_emscripten_bind_MetadataQuerier_GetIntEntry_2:yo,_emscripten_bind_Decoder___destroy___0:nk,_emscripten_enum_draco_AttributeTransformType_ATTRIBUTE_OCTAHEDRON_TRANSFORM:Nq,getTempRet0:hr,setThrew:Wp,_emscripten_bind_MetadataQuerier_HasStringEntry_2:lo,_emscripten_bind_AttributeTransformData___destroy___0:Xm,_emscripten_bind_PointAttribute_num_components_0:hq,___cxa_is_pointer_type:Uo,_emscripten_bind_AttributeTransformData_AttributeTransformData_0:Eo,_llvm_cttz_i32:Cm,_emscripten_bind_AttributeQuantizationTransform___destroy___0:Mo,stackAlloc:mp,_emscripten_bind_DracoInt32Array___destroy___0:Dm,_emscripten_bind_Mesh_num_points_0:uq,___divdi3:pk,_emscripten_bind_Mesh_Mesh_0:aq,_emscripten_bind_MetadataQuerier_MetadataQuerier_0:Pp,_emscripten_bind_Decoder_GetAttributeIdByMetadataEntry_3:Fn,_emscripten_bind_MetadataQuerier_HasDoubleEntry_2:mo,_emscripten_bind_MetadataQuerier_GetDoubleEntry_2:oo,_emscripten_bind_Mesh_num_attributes_0:zp,_emscripten_bind_AttributeOctahedronTransform_quantization_bits_0:Up,_emscripten_bind_AttributeOctahedronTransform___destroy___0:Mo,_llvm_bswap_i32:Np,_emscripten_bind_Decoder_GetAttributeMetadata_2:uo,_emscripten_bind_PointAttribute_unique_id_0:mq,establishStackSpace:qq,_emscripten_enum_draco_StatusCode_IO_ERROR:Tq,_emscripten_bind_MetadataQuerier_HasIntEntry_2:xo,_emscripten_bind_Decoder_GetTriangleStripsFromMesh_2:eo,_emscripten_enum_draco_GeometryAttribute_Type_TEX_COORD:Hq,_emscripten_bind_PointCloud_num_attributes_0:zp,_emscripten_bind_DecoderBuffer_DecoderBuffer_0:rp,_emscripten_enum_draco_GeometryAttribute_Type_POSITION:Xq,_emscripten_bind_DracoInt32Array_size_0:Jp,_emscripten_bind_Decoder_SkipAttributeTransform_1:Io,_emscripten_enum_draco_AttributeTransformType_ATTRIBUTE_QUANTIZATION_TRANSFORM:Mq,_emscripten_enum_draco_StatusCode_ERROR:Vq,_emscripten_bind_AttributeQuantizationTransform_quantization_bits_0:Up,_emscripten_enum_draco_StatusCode_INVALID_PARAMETER:Lq,_emscripten_enum_draco_GeometryAttribute_Type_COLOR:Nq,_emscripten_bind_VoidPtr___destroy___0:Vp,_memset:ej,_emscripten_bind_PointAttribute_attribute_type_0:eq,_emscripten_bind_MetadataQuerier___destroy___0:Vp,_emscripten_bind_DracoInt32Array_GetValue_1:sp,_emscripten_bind_DecoderBuffer___destroy___0:_o,_emscripten_bind_Decoder_GetAttribute_2:Qo,_emscripten_enum_draco_EncodedGeometryType_TRIANGULAR_MESH:Mq,_i64Subtract:Xn,setTempRet0:br,_emscripten_bind_DracoInt32Array_DracoInt32Array_0:qp,_emscripten_enum_draco_StatusCode_UNKNOWN_VERSION:Pq,_emscripten_bind_DracoFloat32Array___destroy___0:Dm,_emscripten_bind_PointCloud_num_points_0:uq,_emscripten_bind_PointCloud___destroy___0:Mo,_emscripten_bind_GeometryAttribute_GeometryAttribute_0:ap,___muldsi3:gm,_emscripten_bind_Decoder_GetFaceFromMesh_3:$n,_emscripten_bind_PointAttribute_data_type_0:nq,_emscripten_bind_DracoFloat32Array_size_0:Jp,_emscripten_bind_AttributeOctahedronTransform_InitFromAttribute_1:qo,_malloc:$a,_emscripten_bind_PointAttribute_GetAttributeTransformData_0:Zp,_emscripten_bind_PointAttribute_byte_offset_0:kq,_emscripten_replace_memory:Ma,_memmove:rm,_emscripten_bind_PointCloud_PointCloud_0:Fp,_emscripten_bind_Status_error_msg_0:io,_emscripten_bind_Mesh___destroy___0:Mo,_emscripten_bind_Metadata___destroy___0:ep,_emscripten_bind_Status___destroy___0:ho,___udivdi3:Dp,_emscripten_enum_draco_AttributeTransformType_ATTRIBUTE_INVALID_TRANSFORM:Vq,_emscripten_bind_AttributeQuantizationTransform_AttributeQuantizationTransform_0:Rm,_emscripten_bind_AttributeQuantizationTransform_range_0:Tp,_bitshift64Shl:On,_emscripten_bind_Decoder_GetAttributeId_2:co,_emscripten_enum_draco_StatusCode_OK:Xq,_emscripten_bind_AttributeTransformData_transform_type_0:Cq,_emscripten_bind_Status_code_0:Cq,___muldi3:kn,_emscripten_bind_AttributeOctahedronTransform_AttributeOctahedronTransform_0:Fo,___uremdi3:$m,_emscripten_bind_DracoFloat32Array_DracoFloat32Array_0:qp,_emscripten_enum_draco_GeometryAttribute_Type_GENERIC:Kq,_i64Add:Ho,_emscripten_bind_Decoder_DecodeBufferToMesh_2:ko,_emscripten_bind_DracoFloat32Array_GetValue_1:bp,_emscripten_bind_PointAttribute_PointAttribute_0:lp,_emscripten_bind_Decoder_GetMetadata_1:fp,_emscripten_enum_draco_GeometryAttribute_Type_NORMAL:Mq,stackRestore:$q,_emscripten_bind_AttributeQuantizationTransform_InitFromAttribute_1:qo,_emscripten_bind_PointAttribute___destroy___0:zj,_emscripten_enum_draco_StatusCode_UNSUPPORTED_VERSION:Jq,stackAlloc:mp,stackSave:ir,stackRestore:$q,establishStackSpace:qq,setThrew:Wp,setTempRet0:br,getTempRet0:hr,dynCall_iiii:Yo,dynCall_viiiii:jo,dynCall_vi:vq,dynCall_vii:_p,dynCall_iiiiiii:zn,dynCall_ii:lq,dynCall_viii:kp,dynCall_v:Sq,dynCall_viiiiii:Jn,dynCall_iii:Mp,dynCall_viiii:No}}) + + +// EMSCRIPTEN_END_ASM +(Module.asmGlobalArg,Module.asmLibraryArg,buffer);var _emscripten_bind_Decoder_GetAttributeFloat_3=Module["_emscripten_bind_Decoder_GetAttributeFloat_3"]=asm["_emscripten_bind_Decoder_GetAttributeFloat_3"];var _emscripten_bind_PointAttribute_normalized_0=Module["_emscripten_bind_PointAttribute_normalized_0"]=asm["_emscripten_bind_PointAttribute_normalized_0"];var _bitshift64Lshr=Module["_bitshift64Lshr"]=asm["_bitshift64Lshr"];var _emscripten_bind_Decoder_GetAttributeFloatForAllPoints_3=Module["_emscripten_bind_Decoder_GetAttributeFloatForAllPoints_3"]=asm["_emscripten_bind_Decoder_GetAttributeFloatForAllPoints_3"];var _emscripten_bind_DecoderBuffer_Init_2=Module["_emscripten_bind_DecoderBuffer_Init_2"]=asm["_emscripten_bind_DecoderBuffer_Init_2"];var _emscripten_bind_PointAttribute_size_0=Module["_emscripten_bind_PointAttribute_size_0"]=asm["_emscripten_bind_PointAttribute_size_0"];var _bitshift64Ashr=Module["_bitshift64Ashr"]=asm["_bitshift64Ashr"];var _sbrk=Module["_sbrk"]=asm["_sbrk"];var _memcpy=Module["_memcpy"]=asm["_memcpy"];var stackSave=Module["stackSave"]=asm["stackSave"];var _emscripten_enum_draco_GeometryAttribute_Type_INVALID=Module["_emscripten_enum_draco_GeometryAttribute_Type_INVALID"]=asm["_emscripten_enum_draco_GeometryAttribute_Type_INVALID"];var _emscripten_bind_Decoder_GetAttributeIdByName_2=Module["_emscripten_bind_Decoder_GetAttributeIdByName_2"]=asm["_emscripten_bind_Decoder_GetAttributeIdByName_2"];var _emscripten_enum_draco_EncodedGeometryType_POINT_CLOUD=Module["_emscripten_enum_draco_EncodedGeometryType_POINT_CLOUD"]=asm["_emscripten_enum_draco_EncodedGeometryType_POINT_CLOUD"];var ___udivmoddi4=Module["___udivmoddi4"]=asm["___udivmoddi4"];var _emscripten_bind_Status_ok_0=Module["_emscripten_bind_Status_ok_0"]=asm["_emscripten_bind_Status_ok_0"];var _emscripten_bind_Mesh_num_faces_0=Module["_emscripten_bind_Mesh_num_faces_0"]=asm["_emscripten_bind_Mesh_num_faces_0"];var _emscripten_get_global_libc=Module["_emscripten_get_global_libc"]=asm["_emscripten_get_global_libc"];var _emscripten_bind_Decoder_DecodeBufferToPointCloud_2=Module["_emscripten_bind_Decoder_DecodeBufferToPointCloud_2"]=asm["_emscripten_bind_Decoder_DecodeBufferToPointCloud_2"];var _emscripten_enum_draco_AttributeTransformType_ATTRIBUTE_NO_TRANSFORM=Module["_emscripten_enum_draco_AttributeTransformType_ATTRIBUTE_NO_TRANSFORM"]=asm["_emscripten_enum_draco_AttributeTransformType_ATTRIBUTE_NO_TRANSFORM"];var runPostSets=Module["runPostSets"]=asm["runPostSets"];var _emscripten_bind_Decoder_GetEncodedGeometryType_1=Module["_emscripten_bind_Decoder_GetEncodedGeometryType_1"]=asm["_emscripten_bind_Decoder_GetEncodedGeometryType_1"];var ___cxa_can_catch=Module["___cxa_can_catch"]=asm["___cxa_can_catch"];var _free=Module["_free"]=asm["_free"];var _emscripten_bind_GeometryAttribute___destroy___0=Module["_emscripten_bind_GeometryAttribute___destroy___0"]=asm["_emscripten_bind_GeometryAttribute___destroy___0"];var _emscripten_enum_draco_EncodedGeometryType_INVALID_GEOMETRY_TYPE=Module["_emscripten_enum_draco_EncodedGeometryType_INVALID_GEOMETRY_TYPE"]=asm["_emscripten_enum_draco_EncodedGeometryType_INVALID_GEOMETRY_TYPE"];var _emscripten_bind_PointAttribute_byte_stride_0=Module["_emscripten_bind_PointAttribute_byte_stride_0"]=asm["_emscripten_bind_PointAttribute_byte_stride_0"];var _emscripten_bind_Metadata_Metadata_0=Module["_emscripten_bind_Metadata_Metadata_0"]=asm["_emscripten_bind_Metadata_Metadata_0"];var _emscripten_bind_AttributeQuantizationTransform_min_value_1=Module["_emscripten_bind_AttributeQuantizationTransform_min_value_1"]=asm["_emscripten_bind_AttributeQuantizationTransform_min_value_1"];var _emscripten_bind_Decoder_Decoder_0=Module["_emscripten_bind_Decoder_Decoder_0"]=asm["_emscripten_bind_Decoder_Decoder_0"];var _emscripten_bind_MetadataQuerier_GetStringEntry_2=Module["_emscripten_bind_MetadataQuerier_GetStringEntry_2"]=asm["_emscripten_bind_MetadataQuerier_GetStringEntry_2"];var _emscripten_bind_MetadataQuerier_GetIntEntry_2=Module["_emscripten_bind_MetadataQuerier_GetIntEntry_2"]=asm["_emscripten_bind_MetadataQuerier_GetIntEntry_2"];var _emscripten_bind_Decoder___destroy___0=Module["_emscripten_bind_Decoder___destroy___0"]=asm["_emscripten_bind_Decoder___destroy___0"];var _emscripten_enum_draco_AttributeTransformType_ATTRIBUTE_OCTAHEDRON_TRANSFORM=Module["_emscripten_enum_draco_AttributeTransformType_ATTRIBUTE_OCTAHEDRON_TRANSFORM"]=asm["_emscripten_enum_draco_AttributeTransformType_ATTRIBUTE_OCTAHEDRON_TRANSFORM"];var getTempRet0=Module["getTempRet0"]=asm["getTempRet0"];var setThrew=Module["setThrew"]=asm["setThrew"];var _emscripten_bind_MetadataQuerier_HasStringEntry_2=Module["_emscripten_bind_MetadataQuerier_HasStringEntry_2"]=asm["_emscripten_bind_MetadataQuerier_HasStringEntry_2"];var _emscripten_bind_AttributeTransformData___destroy___0=Module["_emscripten_bind_AttributeTransformData___destroy___0"]=asm["_emscripten_bind_AttributeTransformData___destroy___0"];var _emscripten_bind_PointAttribute_num_components_0=Module["_emscripten_bind_PointAttribute_num_components_0"]=asm["_emscripten_bind_PointAttribute_num_components_0"];var ___cxa_is_pointer_type=Module["___cxa_is_pointer_type"]=asm["___cxa_is_pointer_type"];var _emscripten_bind_AttributeTransformData_AttributeTransformData_0=Module["_emscripten_bind_AttributeTransformData_AttributeTransformData_0"]=asm["_emscripten_bind_AttributeTransformData_AttributeTransformData_0"];var _llvm_cttz_i32=Module["_llvm_cttz_i32"]=asm["_llvm_cttz_i32"];var _emscripten_bind_AttributeQuantizationTransform___destroy___0=Module["_emscripten_bind_AttributeQuantizationTransform___destroy___0"]=asm["_emscripten_bind_AttributeQuantizationTransform___destroy___0"];var stackAlloc=Module["stackAlloc"]=asm["stackAlloc"];var _emscripten_bind_DracoInt32Array___destroy___0=Module["_emscripten_bind_DracoInt32Array___destroy___0"]=asm["_emscripten_bind_DracoInt32Array___destroy___0"];var _emscripten_bind_Mesh_num_points_0=Module["_emscripten_bind_Mesh_num_points_0"]=asm["_emscripten_bind_Mesh_num_points_0"];var ___divdi3=Module["___divdi3"]=asm["___divdi3"];var _emscripten_bind_Mesh_Mesh_0=Module["_emscripten_bind_Mesh_Mesh_0"]=asm["_emscripten_bind_Mesh_Mesh_0"];var _emscripten_bind_MetadataQuerier_MetadataQuerier_0=Module["_emscripten_bind_MetadataQuerier_MetadataQuerier_0"]=asm["_emscripten_bind_MetadataQuerier_MetadataQuerier_0"];var _emscripten_bind_Decoder_GetAttributeIdByMetadataEntry_3=Module["_emscripten_bind_Decoder_GetAttributeIdByMetadataEntry_3"]=asm["_emscripten_bind_Decoder_GetAttributeIdByMetadataEntry_3"];var _emscripten_bind_MetadataQuerier_HasDoubleEntry_2=Module["_emscripten_bind_MetadataQuerier_HasDoubleEntry_2"]=asm["_emscripten_bind_MetadataQuerier_HasDoubleEntry_2"];var _emscripten_bind_MetadataQuerier_GetDoubleEntry_2=Module["_emscripten_bind_MetadataQuerier_GetDoubleEntry_2"]=asm["_emscripten_bind_MetadataQuerier_GetDoubleEntry_2"];var _emscripten_bind_Mesh_num_attributes_0=Module["_emscripten_bind_Mesh_num_attributes_0"]=asm["_emscripten_bind_Mesh_num_attributes_0"];var _emscripten_bind_AttributeOctahedronTransform_quantization_bits_0=Module["_emscripten_bind_AttributeOctahedronTransform_quantization_bits_0"]=asm["_emscripten_bind_AttributeOctahedronTransform_quantization_bits_0"];var _emscripten_bind_AttributeOctahedronTransform___destroy___0=Module["_emscripten_bind_AttributeOctahedronTransform___destroy___0"]=asm["_emscripten_bind_AttributeOctahedronTransform___destroy___0"];var _llvm_bswap_i32=Module["_llvm_bswap_i32"]=asm["_llvm_bswap_i32"];var _emscripten_bind_Decoder_GetAttributeMetadata_2=Module["_emscripten_bind_Decoder_GetAttributeMetadata_2"]=asm["_emscripten_bind_Decoder_GetAttributeMetadata_2"];var _emscripten_bind_PointAttribute_unique_id_0=Module["_emscripten_bind_PointAttribute_unique_id_0"]=asm["_emscripten_bind_PointAttribute_unique_id_0"];var establishStackSpace=Module["establishStackSpace"]=asm["establishStackSpace"];var _emscripten_enum_draco_StatusCode_IO_ERROR=Module["_emscripten_enum_draco_StatusCode_IO_ERROR"]=asm["_emscripten_enum_draco_StatusCode_IO_ERROR"];var _emscripten_bind_MetadataQuerier_HasIntEntry_2=Module["_emscripten_bind_MetadataQuerier_HasIntEntry_2"]=asm["_emscripten_bind_MetadataQuerier_HasIntEntry_2"];var _emscripten_bind_Decoder_GetTriangleStripsFromMesh_2=Module["_emscripten_bind_Decoder_GetTriangleStripsFromMesh_2"]=asm["_emscripten_bind_Decoder_GetTriangleStripsFromMesh_2"];var _emscripten_enum_draco_GeometryAttribute_Type_TEX_COORD=Module["_emscripten_enum_draco_GeometryAttribute_Type_TEX_COORD"]=asm["_emscripten_enum_draco_GeometryAttribute_Type_TEX_COORD"];var _emscripten_bind_PointCloud_num_attributes_0=Module["_emscripten_bind_PointCloud_num_attributes_0"]=asm["_emscripten_bind_PointCloud_num_attributes_0"];var _emscripten_bind_DecoderBuffer_DecoderBuffer_0=Module["_emscripten_bind_DecoderBuffer_DecoderBuffer_0"]=asm["_emscripten_bind_DecoderBuffer_DecoderBuffer_0"];var _emscripten_enum_draco_GeometryAttribute_Type_POSITION=Module["_emscripten_enum_draco_GeometryAttribute_Type_POSITION"]=asm["_emscripten_enum_draco_GeometryAttribute_Type_POSITION"];var _emscripten_bind_DracoInt32Array_size_0=Module["_emscripten_bind_DracoInt32Array_size_0"]=asm["_emscripten_bind_DracoInt32Array_size_0"];var _emscripten_bind_Decoder_SkipAttributeTransform_1=Module["_emscripten_bind_Decoder_SkipAttributeTransform_1"]=asm["_emscripten_bind_Decoder_SkipAttributeTransform_1"];var _emscripten_enum_draco_AttributeTransformType_ATTRIBUTE_QUANTIZATION_TRANSFORM=Module["_emscripten_enum_draco_AttributeTransformType_ATTRIBUTE_QUANTIZATION_TRANSFORM"]=asm["_emscripten_enum_draco_AttributeTransformType_ATTRIBUTE_QUANTIZATION_TRANSFORM"];var _emscripten_enum_draco_StatusCode_ERROR=Module["_emscripten_enum_draco_StatusCode_ERROR"]=asm["_emscripten_enum_draco_StatusCode_ERROR"];var _emscripten_bind_AttributeQuantizationTransform_quantization_bits_0=Module["_emscripten_bind_AttributeQuantizationTransform_quantization_bits_0"]=asm["_emscripten_bind_AttributeQuantizationTransform_quantization_bits_0"];var _emscripten_enum_draco_StatusCode_INVALID_PARAMETER=Module["_emscripten_enum_draco_StatusCode_INVALID_PARAMETER"]=asm["_emscripten_enum_draco_StatusCode_INVALID_PARAMETER"];var _emscripten_enum_draco_GeometryAttribute_Type_COLOR=Module["_emscripten_enum_draco_GeometryAttribute_Type_COLOR"]=asm["_emscripten_enum_draco_GeometryAttribute_Type_COLOR"];var _emscripten_bind_VoidPtr___destroy___0=Module["_emscripten_bind_VoidPtr___destroy___0"]=asm["_emscripten_bind_VoidPtr___destroy___0"];var _memset=Module["_memset"]=asm["_memset"];var _emscripten_bind_PointAttribute_attribute_type_0=Module["_emscripten_bind_PointAttribute_attribute_type_0"]=asm["_emscripten_bind_PointAttribute_attribute_type_0"];var _emscripten_bind_MetadataQuerier___destroy___0=Module["_emscripten_bind_MetadataQuerier___destroy___0"]=asm["_emscripten_bind_MetadataQuerier___destroy___0"];var _emscripten_bind_DracoInt32Array_GetValue_1=Module["_emscripten_bind_DracoInt32Array_GetValue_1"]=asm["_emscripten_bind_DracoInt32Array_GetValue_1"];var _emscripten_bind_DecoderBuffer___destroy___0=Module["_emscripten_bind_DecoderBuffer___destroy___0"]=asm["_emscripten_bind_DecoderBuffer___destroy___0"];var _emscripten_bind_Decoder_GetAttribute_2=Module["_emscripten_bind_Decoder_GetAttribute_2"]=asm["_emscripten_bind_Decoder_GetAttribute_2"];var _emscripten_enum_draco_EncodedGeometryType_TRIANGULAR_MESH=Module["_emscripten_enum_draco_EncodedGeometryType_TRIANGULAR_MESH"]=asm["_emscripten_enum_draco_EncodedGeometryType_TRIANGULAR_MESH"];var _i64Subtract=Module["_i64Subtract"]=asm["_i64Subtract"];var setTempRet0=Module["setTempRet0"]=asm["setTempRet0"];var _emscripten_bind_DracoInt32Array_DracoInt32Array_0=Module["_emscripten_bind_DracoInt32Array_DracoInt32Array_0"]=asm["_emscripten_bind_DracoInt32Array_DracoInt32Array_0"];var _emscripten_enum_draco_StatusCode_UNKNOWN_VERSION=Module["_emscripten_enum_draco_StatusCode_UNKNOWN_VERSION"]=asm["_emscripten_enum_draco_StatusCode_UNKNOWN_VERSION"];var _emscripten_bind_DracoFloat32Array___destroy___0=Module["_emscripten_bind_DracoFloat32Array___destroy___0"]=asm["_emscripten_bind_DracoFloat32Array___destroy___0"];var _emscripten_bind_PointCloud_num_points_0=Module["_emscripten_bind_PointCloud_num_points_0"]=asm["_emscripten_bind_PointCloud_num_points_0"];var _emscripten_bind_PointCloud___destroy___0=Module["_emscripten_bind_PointCloud___destroy___0"]=asm["_emscripten_bind_PointCloud___destroy___0"];var _emscripten_bind_GeometryAttribute_GeometryAttribute_0=Module["_emscripten_bind_GeometryAttribute_GeometryAttribute_0"]=asm["_emscripten_bind_GeometryAttribute_GeometryAttribute_0"];var ___muldsi3=Module["___muldsi3"]=asm["___muldsi3"];var _emscripten_bind_Decoder_GetFaceFromMesh_3=Module["_emscripten_bind_Decoder_GetFaceFromMesh_3"]=asm["_emscripten_bind_Decoder_GetFaceFromMesh_3"];var _emscripten_bind_PointAttribute_data_type_0=Module["_emscripten_bind_PointAttribute_data_type_0"]=asm["_emscripten_bind_PointAttribute_data_type_0"];var _emscripten_bind_DracoFloat32Array_size_0=Module["_emscripten_bind_DracoFloat32Array_size_0"]=asm["_emscripten_bind_DracoFloat32Array_size_0"];var _emscripten_bind_AttributeOctahedronTransform_InitFromAttribute_1=Module["_emscripten_bind_AttributeOctahedronTransform_InitFromAttribute_1"]=asm["_emscripten_bind_AttributeOctahedronTransform_InitFromAttribute_1"];var _malloc=Module["_malloc"]=asm["_malloc"];var _emscripten_bind_PointAttribute_GetAttributeTransformData_0=Module["_emscripten_bind_PointAttribute_GetAttributeTransformData_0"]=asm["_emscripten_bind_PointAttribute_GetAttributeTransformData_0"];var _emscripten_bind_PointAttribute_byte_offset_0=Module["_emscripten_bind_PointAttribute_byte_offset_0"]=asm["_emscripten_bind_PointAttribute_byte_offset_0"];var _emscripten_replace_memory=Module["_emscripten_replace_memory"]=asm["_emscripten_replace_memory"];var _memmove=Module["_memmove"]=asm["_memmove"];var _emscripten_bind_PointCloud_PointCloud_0=Module["_emscripten_bind_PointCloud_PointCloud_0"]=asm["_emscripten_bind_PointCloud_PointCloud_0"];var _emscripten_bind_Status_error_msg_0=Module["_emscripten_bind_Status_error_msg_0"]=asm["_emscripten_bind_Status_error_msg_0"];var _emscripten_bind_Mesh___destroy___0=Module["_emscripten_bind_Mesh___destroy___0"]=asm["_emscripten_bind_Mesh___destroy___0"];var _emscripten_bind_Metadata___destroy___0=Module["_emscripten_bind_Metadata___destroy___0"]=asm["_emscripten_bind_Metadata___destroy___0"];var _emscripten_bind_Status___destroy___0=Module["_emscripten_bind_Status___destroy___0"]=asm["_emscripten_bind_Status___destroy___0"];var ___udivdi3=Module["___udivdi3"]=asm["___udivdi3"];var _emscripten_enum_draco_AttributeTransformType_ATTRIBUTE_INVALID_TRANSFORM=Module["_emscripten_enum_draco_AttributeTransformType_ATTRIBUTE_INVALID_TRANSFORM"]=asm["_emscripten_enum_draco_AttributeTransformType_ATTRIBUTE_INVALID_TRANSFORM"];var _emscripten_bind_AttributeQuantizationTransform_AttributeQuantizationTransform_0=Module["_emscripten_bind_AttributeQuantizationTransform_AttributeQuantizationTransform_0"]=asm["_emscripten_bind_AttributeQuantizationTransform_AttributeQuantizationTransform_0"];var _emscripten_bind_AttributeQuantizationTransform_range_0=Module["_emscripten_bind_AttributeQuantizationTransform_range_0"]=asm["_emscripten_bind_AttributeQuantizationTransform_range_0"];var _bitshift64Shl=Module["_bitshift64Shl"]=asm["_bitshift64Shl"];var _emscripten_bind_Decoder_GetAttributeId_2=Module["_emscripten_bind_Decoder_GetAttributeId_2"]=asm["_emscripten_bind_Decoder_GetAttributeId_2"];var _emscripten_enum_draco_StatusCode_OK=Module["_emscripten_enum_draco_StatusCode_OK"]=asm["_emscripten_enum_draco_StatusCode_OK"];var _emscripten_bind_AttributeTransformData_transform_type_0=Module["_emscripten_bind_AttributeTransformData_transform_type_0"]=asm["_emscripten_bind_AttributeTransformData_transform_type_0"];var _emscripten_bind_Status_code_0=Module["_emscripten_bind_Status_code_0"]=asm["_emscripten_bind_Status_code_0"];var ___muldi3=Module["___muldi3"]=asm["___muldi3"];var _emscripten_bind_AttributeOctahedronTransform_AttributeOctahedronTransform_0=Module["_emscripten_bind_AttributeOctahedronTransform_AttributeOctahedronTransform_0"]=asm["_emscripten_bind_AttributeOctahedronTransform_AttributeOctahedronTransform_0"];var ___uremdi3=Module["___uremdi3"]=asm["___uremdi3"];var _emscripten_bind_DracoFloat32Array_DracoFloat32Array_0=Module["_emscripten_bind_DracoFloat32Array_DracoFloat32Array_0"]=asm["_emscripten_bind_DracoFloat32Array_DracoFloat32Array_0"];var _emscripten_enum_draco_GeometryAttribute_Type_GENERIC=Module["_emscripten_enum_draco_GeometryAttribute_Type_GENERIC"]=asm["_emscripten_enum_draco_GeometryAttribute_Type_GENERIC"];var _i64Add=Module["_i64Add"]=asm["_i64Add"];var _emscripten_bind_Decoder_DecodeBufferToMesh_2=Module["_emscripten_bind_Decoder_DecodeBufferToMesh_2"]=asm["_emscripten_bind_Decoder_DecodeBufferToMesh_2"];var _emscripten_bind_DracoFloat32Array_GetValue_1=Module["_emscripten_bind_DracoFloat32Array_GetValue_1"]=asm["_emscripten_bind_DracoFloat32Array_GetValue_1"];var _emscripten_bind_PointAttribute_PointAttribute_0=Module["_emscripten_bind_PointAttribute_PointAttribute_0"]=asm["_emscripten_bind_PointAttribute_PointAttribute_0"];var _emscripten_bind_Decoder_GetMetadata_1=Module["_emscripten_bind_Decoder_GetMetadata_1"]=asm["_emscripten_bind_Decoder_GetMetadata_1"];var _emscripten_enum_draco_GeometryAttribute_Type_NORMAL=Module["_emscripten_enum_draco_GeometryAttribute_Type_NORMAL"]=asm["_emscripten_enum_draco_GeometryAttribute_Type_NORMAL"];var stackRestore=Module["stackRestore"]=asm["stackRestore"];var _emscripten_bind_AttributeQuantizationTransform_InitFromAttribute_1=Module["_emscripten_bind_AttributeQuantizationTransform_InitFromAttribute_1"]=asm["_emscripten_bind_AttributeQuantizationTransform_InitFromAttribute_1"];var _emscripten_bind_PointAttribute___destroy___0=Module["_emscripten_bind_PointAttribute___destroy___0"]=asm["_emscripten_bind_PointAttribute___destroy___0"];var _emscripten_enum_draco_StatusCode_UNSUPPORTED_VERSION=Module["_emscripten_enum_draco_StatusCode_UNSUPPORTED_VERSION"]=asm["_emscripten_enum_draco_StatusCode_UNSUPPORTED_VERSION"];var dynCall_iiii=Module["dynCall_iiii"]=asm["dynCall_iiii"];var dynCall_viiiii=Module["dynCall_viiiii"]=asm["dynCall_viiiii"];var dynCall_vi=Module["dynCall_vi"]=asm["dynCall_vi"];var dynCall_vii=Module["dynCall_vii"]=asm["dynCall_vii"];var dynCall_iiiiiii=Module["dynCall_iiiiiii"]=asm["dynCall_iiiiiii"];var dynCall_ii=Module["dynCall_ii"]=asm["dynCall_ii"];var dynCall_viii=Module["dynCall_viii"]=asm["dynCall_viii"];var dynCall_v=Module["dynCall_v"]=asm["dynCall_v"];var dynCall_viiiiii=Module["dynCall_viiiiii"]=asm["dynCall_viiiiii"];var dynCall_iii=Module["dynCall_iii"]=asm["dynCall_iii"];var dynCall_viiii=Module["dynCall_viiii"]=asm["dynCall_viiii"];Runtime.stackAlloc=Module["stackAlloc"];Runtime.stackSave=Module["stackSave"];Runtime.stackRestore=Module["stackRestore"];Runtime.establishStackSpace=Module["establishStackSpace"];Runtime.setTempRet0=Module["setTempRet0"];Runtime.getTempRet0=Module["getTempRet0"];Module["asm"]=asm;Module["then"]=(function(func){if(Module["calledRun"]){func(Module)}else{var old=Module["onRuntimeInitialized"];Module["onRuntimeInitialized"]=(function(){if(old)old();func(Module)})}return Module});function ExitStatus(status){this.name="ExitStatus";this.message="Program terminated with exit("+status+")";this.status=status}ExitStatus.prototype=new Error;ExitStatus.prototype.constructor=ExitStatus;var initialStackTop;var preloadStartTime=null;var calledMain=false;dependenciesFulfilled=function runCaller(){if(!Module["calledRun"])run();if(!Module["calledRun"])dependenciesFulfilled=runCaller};Module["callMain"]=Module.callMain=function callMain(args){args=args||[];ensureInitRuntime();var argc=args.length+1;function pad(){for(var i=0;i<4-1;i++){argv.push(0)}}var argv=[allocate(intArrayFromString(Module["thisProgram"]),"i8",ALLOC_NORMAL)];pad();for(var i=0;i0){return}preRun();if(runDependencies>0)return;if(Module["calledRun"])return;function doRun(){if(Module["calledRun"])return;Module["calledRun"]=true;if(ABORT)return;ensureInitRuntime();preMain();if(Module["onRuntimeInitialized"])Module["onRuntimeInitialized"]();if(Module["_main"]&&shouldRunNow)Module["callMain"](args);postRun()}if(Module["setStatus"]){Module["setStatus"]("Running...");setTimeout((function(){setTimeout((function(){Module["setStatus"]("")}),1);doRun()}),1)}else{doRun()}}Module["run"]=Module.run=run;function exit(status,implicit){if(implicit&&Module["noExitRuntime"]){return}if(Module["noExitRuntime"]){}else{ABORT=true;EXITSTATUS=status;STACKTOP=initialStackTop;exitRuntime();if(Module["onExit"])Module["onExit"](status)}if(ENVIRONMENT_IS_NODE){process["exit"](status)}Module["quit"](status,new ExitStatus(status))}Module["exit"]=Module.exit=exit;var abortDecorators=[];function abort(what){if(Module["onAbort"]){Module["onAbort"](what)}if(what!==undefined){Module.print(what);Module.printErr(what);what=JSON.stringify(what)}else{what=""}ABORT=true;EXITSTATUS=1;var extra="\nIf this abort() is unexpected, build with -s ASSERTIONS=1 which can give more information.";var output="abort("+what+") at "+stackTrace()+extra;if(abortDecorators){abortDecorators.forEach((function(decorator){output=decorator(output,what)}))}throw output}Module["abort"]=Module.abort=abort;if(Module["preInit"]){if(typeof Module["preInit"]=="function")Module["preInit"]=[Module["preInit"]];while(Module["preInit"].length>0){Module["preInit"].pop()()}}var shouldRunNow=true;if(Module["noInitialRun"]){shouldRunNow=false}run();function WrapperObject(){}WrapperObject.prototype=Object.create(WrapperObject.prototype);WrapperObject.prototype.constructor=WrapperObject;WrapperObject.prototype.__class__=WrapperObject;WrapperObject.__cache__={};Module["WrapperObject"]=WrapperObject;function getCache(__class__){return(__class__||WrapperObject).__cache__}Module["getCache"]=getCache;function wrapPointer(ptr,__class__){var cache=getCache(__class__);var ret=cache[ptr];if(ret)return ret;ret=Object.create((__class__||WrapperObject).prototype);ret.ptr=ptr;return cache[ptr]=ret}Module["wrapPointer"]=wrapPointer;function castObject(obj,__class__){return wrapPointer(obj.ptr,__class__)}Module["castObject"]=castObject;Module["NULL"]=wrapPointer(0);function destroy(obj){if(!obj["__destroy__"])throw"Error: Cannot destroy object. (Did you create it yourself?)";obj["__destroy__"]();delete getCache(obj.__class__)[obj.ptr]}Module["destroy"]=destroy;function compare(obj1,obj2){return obj1.ptr===obj2.ptr}Module["compare"]=compare;function getPointer(obj){return obj.ptr}Module["getPointer"]=getPointer;function getClass(obj){return obj.__class__}Module["getClass"]=getClass;var ensureCache={buffer:0,size:0,pos:0,temps:[],needed:0,prepare:(function(){if(ensureCache.needed){for(var i=0;i=ensureCache.size){assert(len>0);ensureCache.needed+=len;ret=Module["_malloc"](len);ensureCache.temps.push(ret)}else{ret=ensureCache.buffer+ensureCache.pos;ensureCache.pos+=len}return ret}),copy:(function(array,view,offset){var offsetShifted=offset;var bytes=view.BYTES_PER_ELEMENT;switch(bytes){case 2:offsetShifted>>=1;break;case 4:offsetShifted>>=2;break;case 8:offsetShifted>>=3;break}for(var i=0;i3)return false;if(version[0]>0||version[1]>9)return false;return true}Module["isVersionSupported"]=isVersionSupported;var Module;if(!Module)Module=(typeof DracoEncoderModule!=="undefined"?DracoEncoderModule:null)||{};var moduleOverrides={};for(var key in Module){if(Module.hasOwnProperty(key)){moduleOverrides[key]=Module[key]}}var ENVIRONMENT_IS_WEB=false;var ENVIRONMENT_IS_WORKER=false;var ENVIRONMENT_IS_NODE=false;var ENVIRONMENT_IS_SHELL=false;if(Module["ENVIRONMENT"]){if(Module["ENVIRONMENT"]==="WEB"){ENVIRONMENT_IS_WEB=true}else if(Module["ENVIRONMENT"]==="WORKER"){ENVIRONMENT_IS_WORKER=true}else if(Module["ENVIRONMENT"]==="NODE"){ENVIRONMENT_IS_NODE=true}else if(Module["ENVIRONMENT"]==="SHELL"){ENVIRONMENT_IS_SHELL=true}else{throw new Error("The provided Module['ENVIRONMENT'] value is not valid. It must be one of: WEB|WORKER|NODE|SHELL.")}}else{ENVIRONMENT_IS_WEB=typeof window==="object";ENVIRONMENT_IS_WORKER=typeof importScripts==="function";ENVIRONMENT_IS_NODE=typeof process==="object"&&typeof require==="function"&&!ENVIRONMENT_IS_WEB&&!ENVIRONMENT_IS_WORKER;ENVIRONMENT_IS_SHELL=!ENVIRONMENT_IS_WEB&&!ENVIRONMENT_IS_NODE&&!ENVIRONMENT_IS_WORKER}if(ENVIRONMENT_IS_NODE){if(!Module["print"])Module["print"]=console.log;if(!Module["printErr"])Module["printErr"]=console.warn;var nodeFS;var nodePath;Module["read"]=function shell_read(filename,binary){if(!nodeFS)nodeFS=require("fs");if(!nodePath)nodePath=require("path");filename=nodePath["normalize"](filename);var ret=nodeFS["readFileSync"](filename);return binary?ret:ret.toString()};Module["readBinary"]=function readBinary(filename){var ret=Module["read"](filename,true);if(!ret.buffer){ret=new Uint8Array(ret)}assert(ret.buffer);return ret};Module["load"]=function load(f){globalEval(read(f))};if(!Module["thisProgram"]){if(process["argv"].length>1){Module["thisProgram"]=process["argv"][1].replace(/\\/g,"/")}else{Module["thisProgram"]="unknown-program"}}Module["arguments"]=process["argv"].slice(2);if(typeof module!=="undefined"){module["exports"]=Module}process["on"]("uncaughtException",(function(ex){if(!(ex instanceof ExitStatus)){throw ex}}));Module["inspect"]=(function(){return"[Emscripten Module object]"})}else if(ENVIRONMENT_IS_SHELL){if(!Module["print"])Module["print"]=print;if(typeof printErr!="undefined")Module["printErr"]=printErr;if(typeof read!="undefined"){Module["read"]=read}else{Module["read"]=function shell_read(){throw"no read() available"}}Module["readBinary"]=function readBinary(f){if(typeof readbuffer==="function"){return new Uint8Array(readbuffer(f))}var data=read(f,"binary");assert(typeof data==="object");return data};if(typeof scriptArgs!="undefined"){Module["arguments"]=scriptArgs}else if(typeof arguments!="undefined"){Module["arguments"]=arguments}if(typeof quit==="function"){Module["quit"]=(function(status,toThrow){quit(status)})}}else if(ENVIRONMENT_IS_WEB||ENVIRONMENT_IS_WORKER){Module["read"]=function shell_read(url){var xhr=new XMLHttpRequest;xhr.open("GET",url,false);xhr.send(null);return xhr.responseText};if(ENVIRONMENT_IS_WORKER){Module["readBinary"]=function readBinary(url){var xhr=new XMLHttpRequest;xhr.open("GET",url,false);xhr.responseType="arraybuffer";xhr.send(null);return new Uint8Array(xhr.response)}}Module["readAsync"]=function readAsync(url,onload,onerror){var xhr=new XMLHttpRequest;xhr.open("GET",url,true);xhr.responseType="arraybuffer";xhr.onload=function xhr_onload(){if(xhr.status==200||xhr.status==0&&xhr.response){onload(xhr.response)}else{onerror()}};xhr.onerror=onerror;xhr.send(null)};if(typeof arguments!="undefined"){Module["arguments"]=arguments}if(typeof console!=="undefined"){if(!Module["print"])Module["print"]=function shell_print(x){console.log(x)};if(!Module["printErr"])Module["printErr"]=function shell_printErr(x){console.warn(x)}}else{var TRY_USE_DUMP=false;if(!Module["print"])Module["print"]=TRY_USE_DUMP&&typeof dump!=="undefined"?(function(x){dump(x)}):(function(x){})}if(ENVIRONMENT_IS_WORKER){Module["load"]=importScripts}if(typeof Module["setWindowTitle"]==="undefined"){Module["setWindowTitle"]=(function(title){document.title=title})}}else{throw"Unknown runtime environment. Where are we?"}function globalEval(x){eval.call(null,x)}if(!Module["load"]&&Module["read"]){Module["load"]=function load(f){globalEval(Module["read"](f))}}if(!Module["print"]){Module["print"]=(function(){})}if(!Module["printErr"]){Module["printErr"]=Module["print"]}if(!Module["arguments"]){Module["arguments"]=[]}if(!Module["thisProgram"]){Module["thisProgram"]="./this.program"}if(!Module["quit"]){Module["quit"]=(function(status,toThrow){throw toThrow})}Module.print=Module["print"];Module.printErr=Module["printErr"];Module["preRun"]=[];Module["postRun"]=[];for(var key in moduleOverrides){if(moduleOverrides.hasOwnProperty(key)){Module[key]=moduleOverrides[key]}}moduleOverrides=undefined;var Runtime={setTempRet0:(function(value){tempRet0=value;return value}),getTempRet0:(function(){return tempRet0}),stackSave:(function(){return STACKTOP}),stackRestore:(function(stackTop){STACKTOP=stackTop}),getNativeTypeSize:(function(type){switch(type){case"i1":case"i8":return 1;case"i16":return 2;case"i32":return 4;case"i64":return 8;case"float":return 4;case"double":return 8;default:{if(type[type.length-1]==="*"){return Runtime.QUANTUM_SIZE}else if(type[0]==="i"){var bits=parseInt(type.substr(1));assert(bits%8===0);return bits/8}else{return 0}}}}),getNativeFieldSize:(function(type){return Math.max(Runtime.getNativeTypeSize(type),Runtime.QUANTUM_SIZE)}),STACK_ALIGN:16,prepVararg:(function(ptr,type){if(type==="double"||type==="i64"){if(ptr&7){assert((ptr&7)===4);ptr+=4}}else{assert((ptr&3)===0)}return ptr}),getAlignSize:(function(type,size,vararg){if(!vararg&&(type=="i64"||type=="double"))return 8;if(!type)return Math.min(size,8);return Math.min(size||(type?Runtime.getNativeFieldSize(type):0),Runtime.QUANTUM_SIZE)}),dynCall:(function(sig,ptr,args){if(args&&args.length){return Module["dynCall_"+sig].apply(null,[ptr].concat(args))}else{return Module["dynCall_"+sig].call(null,ptr)}}),functionPointers:[],addFunction:(function(func){for(var i=0;i>2];var end=(ret+size+15|0)&-16;HEAP32[DYNAMICTOP_PTR>>2]=end;if(end>=TOTAL_MEMORY){var success=enlargeMemory();if(!success){HEAP32[DYNAMICTOP_PTR>>2]=ret;return 0}}return ret}),alignMemory:(function(size,quantum){var ret=size=Math.ceil(size/(quantum?quantum:16))*(quantum?quantum:16);return ret}),makeBigInt:(function(low,high,unsigned){var ret=unsigned?+(low>>>0)+ +(high>>>0)*+4294967296:+(low>>>0)+ +(high|0)*+4294967296;return ret}),GLOBAL_BASE:8,QUANTUM_SIZE:4,__dummy__:0};var ABORT=0;var EXITSTATUS=0;function assert(condition,text){if(!condition){abort("Assertion failed: "+text)}}function getCFunc(ident){var func=Module["_"+ident];if(!func){try{func=eval("_"+ident)}catch(e){}}assert(func,"Cannot call unknown function "+ident+" (perhaps LLVM optimizations or closure removed it?)");return func}var ccall;((function(){var JSfuncs={"stackSave":(function(){Runtime.stackSave()}),"stackRestore":(function(){Runtime.stackRestore()}),"arrayToC":(function(arr){var ret=Runtime.stackAlloc(arr.length);writeArrayToMemory(arr,ret);return ret}),"stringToC":(function(str){var ret=0;if(str!==null&&str!==undefined&&str!==0){var len=(str.length<<2)+1;ret=Runtime.stackAlloc(len);stringToUTF8(str,ret,len)}return ret})};var toC={"string":JSfuncs["stringToC"],"array":JSfuncs["arrayToC"]};ccall=function ccallFunc(ident,returnType,argTypes,args,opts){var func=getCFunc(ident);var cArgs=[];var stack=0;if(args){for(var i=0;i>0]=value;break;case"i8":HEAP8[ptr>>0]=value;break;case"i16":HEAP16[ptr>>1]=value;break;case"i32":HEAP32[ptr>>2]=value;break;case"i64":tempI64=[value>>>0,(tempDouble=value,+Math_abs(tempDouble)>=+1?tempDouble>+0?(Math_min(+Math_floor(tempDouble/+4294967296),+4294967295)|0)>>>0:~~+Math_ceil((tempDouble- +(~~tempDouble>>>0))/+4294967296)>>>0:0)],HEAP32[ptr>>2]=tempI64[0],HEAP32[ptr+4>>2]=tempI64[1];break;case"float":HEAPF32[ptr>>2]=value;break;case"double":HEAPF64[ptr>>3]=value;break;default:abort("invalid type for setValue: "+type)}}function getValue(ptr,type,noSafe){type=type||"i8";if(type.charAt(type.length-1)==="*")type="i32";switch(type){case"i1":return HEAP8[ptr>>0];case"i8":return HEAP8[ptr>>0];case"i16":return HEAP16[ptr>>1];case"i32":return HEAP32[ptr>>2];case"i64":return HEAP32[ptr>>2];case"float":return HEAPF32[ptr>>2];case"double":return HEAPF64[ptr>>3];default:abort("invalid type for setValue: "+type)}return null}var ALLOC_NORMAL=0;var ALLOC_STATIC=2;var ALLOC_NONE=4;function allocate(slab,types,allocator,ptr){var zeroinit,size;if(typeof slab==="number"){zeroinit=true;size=slab}else{zeroinit=false;size=slab.length}var singleType=typeof types==="string"?types:null;var ret;if(allocator==ALLOC_NONE){ret=ptr}else{ret=[typeof _malloc==="function"?_malloc:Runtime.staticAlloc,Runtime.stackAlloc,Runtime.staticAlloc,Runtime.dynamicAlloc][allocator===undefined?ALLOC_STATIC:allocator](Math.max(size,singleType?1:types.length))}if(zeroinit){var ptr=ret,stop;assert((ret&3)==0);stop=ret+(size&~3);for(;ptr>2]=0}stop=ret+size;while(ptr>0]=0}return ret}if(singleType==="i8"){if(slab.subarray||slab.slice){HEAPU8.set(slab,ret)}else{HEAPU8.set(new Uint8Array(slab),ret)}return ret}var i=0,type,typeSize,previousType;while(i>0];hasUtf|=t;if(t==0&&!length)break;i++;if(length&&i==length)break}if(!length)length=i;var ret="";if(hasUtf<128){var MAX_CHUNK=1024;var curr;while(length>0){curr=String.fromCharCode.apply(String,HEAPU8.subarray(ptr,ptr+Math.min(length,MAX_CHUNK)));ret=ret?ret+curr:curr;ptr+=MAX_CHUNK;length-=MAX_CHUNK}return ret}return Module["UTF8ToString"](ptr)}var UTF8Decoder=typeof TextDecoder!=="undefined"?new TextDecoder("utf8"):undefined;function UTF8ArrayToString(u8Array,idx){var endPtr=idx;while(u8Array[endPtr])++endPtr;if(endPtr-idx>16&&u8Array.subarray&&UTF8Decoder){return UTF8Decoder.decode(u8Array.subarray(idx,endPtr))}else{var u0,u1,u2,u3,u4,u5;var str="";while(1){u0=u8Array[idx++];if(!u0)return str;if(!(u0&128)){str+=String.fromCharCode(u0);continue}u1=u8Array[idx++]&63;if((u0&224)==192){str+=String.fromCharCode((u0&31)<<6|u1);continue}u2=u8Array[idx++]&63;if((u0&240)==224){u0=(u0&15)<<12|u1<<6|u2}else{u3=u8Array[idx++]&63;if((u0&248)==240){u0=(u0&7)<<18|u1<<12|u2<<6|u3}else{u4=u8Array[idx++]&63;if((u0&252)==248){u0=(u0&3)<<24|u1<<18|u2<<12|u3<<6|u4}else{u5=u8Array[idx++]&63;u0=(u0&1)<<30|u1<<24|u2<<18|u3<<12|u4<<6|u5}}}if(u0<65536){str+=String.fromCharCode(u0)}else{var ch=u0-65536;str+=String.fromCharCode(55296|ch>>10,56320|ch&1023)}}}}function stringToUTF8Array(str,outU8Array,outIdx,maxBytesToWrite){if(!(maxBytesToWrite>0))return 0;var startIdx=outIdx;var endIdx=outIdx+maxBytesToWrite-1;for(var i=0;i=55296&&u<=57343)u=65536+((u&1023)<<10)|str.charCodeAt(++i)&1023;if(u<=127){if(outIdx>=endIdx)break;outU8Array[outIdx++]=u}else if(u<=2047){if(outIdx+1>=endIdx)break;outU8Array[outIdx++]=192|u>>6;outU8Array[outIdx++]=128|u&63}else if(u<=65535){if(outIdx+2>=endIdx)break;outU8Array[outIdx++]=224|u>>12;outU8Array[outIdx++]=128|u>>6&63;outU8Array[outIdx++]=128|u&63}else if(u<=2097151){if(outIdx+3>=endIdx)break;outU8Array[outIdx++]=240|u>>18;outU8Array[outIdx++]=128|u>>12&63;outU8Array[outIdx++]=128|u>>6&63;outU8Array[outIdx++]=128|u&63}else if(u<=67108863){if(outIdx+4>=endIdx)break;outU8Array[outIdx++]=248|u>>24;outU8Array[outIdx++]=128|u>>18&63;outU8Array[outIdx++]=128|u>>12&63;outU8Array[outIdx++]=128|u>>6&63;outU8Array[outIdx++]=128|u&63}else{if(outIdx+5>=endIdx)break;outU8Array[outIdx++]=252|u>>30;outU8Array[outIdx++]=128|u>>24&63;outU8Array[outIdx++]=128|u>>18&63;outU8Array[outIdx++]=128|u>>12&63;outU8Array[outIdx++]=128|u>>6&63;outU8Array[outIdx++]=128|u&63}}outU8Array[outIdx]=0;return outIdx-startIdx}function stringToUTF8(str,outPtr,maxBytesToWrite){return stringToUTF8Array(str,HEAPU8,outPtr,maxBytesToWrite)}function lengthBytesUTF8(str){var len=0;for(var i=0;i=55296&&u<=57343)u=65536+((u&1023)<<10)|str.charCodeAt(++i)&1023;if(u<=127){++len}else if(u<=2047){len+=2}else if(u<=65535){len+=3}else if(u<=2097151){len+=4}else if(u<=67108863){len+=5}else{len+=6}}return len}var UTF16Decoder=typeof TextDecoder!=="undefined"?new TextDecoder("utf-16le"):undefined;function demangle(func){var __cxa_demangle_func=Module["___cxa_demangle"]||Module["__cxa_demangle"];if(__cxa_demangle_func){try{var s=func.substr(1);var len=lengthBytesUTF8(s)+1;var buf=_malloc(len);stringToUTF8(s,buf,len);var status=_malloc(4);var ret=__cxa_demangle_func(buf,0,0,status);if(getValue(status,"i32")===0&&ret){return Pointer_stringify(ret)}}catch(e){}finally{if(buf)_free(buf);if(status)_free(status);if(ret)_free(ret)}return func}Runtime.warnOnce("warning: build with -s DEMANGLE_SUPPORT=1 to link in libcxxabi demangling");return func}function demangleAll(text){var regex=/__Z[\w\d_]+/g;return text.replace(regex,(function(x){var y=demangle(x);return x===y?x:x+" ["+y+"]"}))}function jsStackTrace(){var err=new Error;if(!err.stack){try{throw new Error(0)}catch(e){err=e}if(!err.stack){return"(no stack trace available)"}}return err.stack.toString()}function stackTrace(){var js=jsStackTrace();if(Module["extraStackTrace"])js+="\n"+Module["extraStackTrace"]();return demangleAll(js)}var WASM_PAGE_SIZE=65536;var ASMJS_PAGE_SIZE=16777216;var MIN_TOTAL_MEMORY=16777216;function alignUp(x,multiple){if(x%multiple>0){x+=multiple-x%multiple}return x}var HEAP,buffer,HEAP8,HEAPU8,HEAP16,HEAPU16,HEAP32,HEAPU32,HEAPF32,HEAPF64;function updateGlobalBuffer(buf){Module["buffer"]=buffer=buf}function updateGlobalBufferViews(){Module["HEAP8"]=HEAP8=new Int8Array(buffer);Module["HEAP16"]=HEAP16=new Int16Array(buffer);Module["HEAP32"]=HEAP32=new Int32Array(buffer);Module["HEAPU8"]=HEAPU8=new Uint8Array(buffer);Module["HEAPU16"]=HEAPU16=new Uint16Array(buffer);Module["HEAPU32"]=HEAPU32=new Uint32Array(buffer);Module["HEAPF32"]=HEAPF32=new Float32Array(buffer);Module["HEAPF64"]=HEAPF64=new Float64Array(buffer)}var STATIC_BASE,STATICTOP,staticSealed;var STACK_BASE,STACKTOP,STACK_MAX;var DYNAMIC_BASE,DYNAMICTOP_PTR;STATIC_BASE=STATICTOP=STACK_BASE=STACKTOP=STACK_MAX=DYNAMIC_BASE=DYNAMICTOP_PTR=0;staticSealed=false;function abortOnCannotGrowMemory(){abort("Cannot enlarge memory arrays. Either (1) compile with -s TOTAL_MEMORY=X with X higher than the current value "+TOTAL_MEMORY+", (2) compile with -s ALLOW_MEMORY_GROWTH=1 which allows increasing the size at runtime but prevents some optimizations, (3) set Module.TOTAL_MEMORY to a higher value before the program runs, or (4) if you want malloc to return NULL (0) instead of this abort, compile with -s ABORTING_MALLOC=0 ")}if(!Module["reallocBuffer"])Module["reallocBuffer"]=(function(size){var ret;try{if(ArrayBuffer.transfer){ret=ArrayBuffer.transfer(buffer,size)}else{var oldHEAP8=HEAP8;ret=new ArrayBuffer(size);var temp=new Int8Array(ret);temp.set(oldHEAP8)}}catch(e){return false}var success=_emscripten_replace_memory(ret);if(!success)return false;return ret});function enlargeMemory(){var PAGE_MULTIPLE=Module["usingWasm"]?WASM_PAGE_SIZE:ASMJS_PAGE_SIZE;var LIMIT=2147483648-PAGE_MULTIPLE;if(HEAP32[DYNAMICTOP_PTR>>2]>LIMIT){return false}var OLD_TOTAL_MEMORY=TOTAL_MEMORY;TOTAL_MEMORY=Math.max(TOTAL_MEMORY,MIN_TOTAL_MEMORY);while(TOTAL_MEMORY>2]){if(TOTAL_MEMORY<=536870912){TOTAL_MEMORY=alignUp(2*TOTAL_MEMORY,PAGE_MULTIPLE)}else{TOTAL_MEMORY=Math.min(alignUp((3*TOTAL_MEMORY+2147483648)/4,PAGE_MULTIPLE),LIMIT)}}var replacement=Module["reallocBuffer"](TOTAL_MEMORY);if(!replacement||replacement.byteLength!=TOTAL_MEMORY){TOTAL_MEMORY=OLD_TOTAL_MEMORY;return false}updateGlobalBuffer(replacement);updateGlobalBufferViews();return true}var byteLength;try{byteLength=Function.prototype.call.bind(Object.getOwnPropertyDescriptor(ArrayBuffer.prototype,"byteLength").get);byteLength(new ArrayBuffer(4))}catch(e){byteLength=(function(buffer){return buffer.byteLength})}var TOTAL_STACK=Module["TOTAL_STACK"]||5242880;var TOTAL_MEMORY=Module["TOTAL_MEMORY"]||16777216;if(TOTAL_MEMORY0){var callback=callbacks.shift();if(typeof callback=="function"){callback();continue}var func=callback.func;if(typeof func==="number"){if(callback.arg===undefined){Module["dynCall_v"](func)}else{Module["dynCall_vi"](func,callback.arg)}}else{func(callback.arg===undefined?null:callback.arg)}}}var __ATPRERUN__=[];var __ATINIT__=[];var __ATMAIN__=[];var __ATEXIT__=[];var __ATPOSTRUN__=[];var runtimeInitialized=false;var runtimeExited=false;function preRun(){if(Module["preRun"]){if(typeof Module["preRun"]=="function")Module["preRun"]=[Module["preRun"]];while(Module["preRun"].length){addOnPreRun(Module["preRun"].shift())}}callRuntimeCallbacks(__ATPRERUN__)}function ensureInitRuntime(){if(runtimeInitialized)return;runtimeInitialized=true;callRuntimeCallbacks(__ATINIT__)}function preMain(){callRuntimeCallbacks(__ATMAIN__)}function exitRuntime(){callRuntimeCallbacks(__ATEXIT__);runtimeExited=true}function postRun(){if(Module["postRun"]){if(typeof Module["postRun"]=="function")Module["postRun"]=[Module["postRun"]];while(Module["postRun"].length){addOnPostRun(Module["postRun"].shift())}}callRuntimeCallbacks(__ATPOSTRUN__)}function addOnPreRun(cb){__ATPRERUN__.unshift(cb)}function addOnPreMain(cb){__ATMAIN__.unshift(cb)}function addOnPostRun(cb){__ATPOSTRUN__.unshift(cb)}function intArrayFromString(stringy,dontAddNull,length){var len=length>0?length:lengthBytesUTF8(stringy)+1;var u8array=new Array(len);var numBytesWritten=stringToUTF8Array(stringy,u8array,0,u8array.length);if(dontAddNull)u8array.length=numBytesWritten;return u8array}function writeArrayToMemory(array,buffer){HEAP8.set(array,buffer)}function writeAsciiToMemory(str,buffer,dontAddNull){for(var i=0;i>0]=str.charCodeAt(i)}if(!dontAddNull)HEAP8[buffer>>0]=0}if(!Math["imul"]||Math["imul"](4294967295,5)!==-5)Math["imul"]=function imul(a,b){var ah=a>>>16;var al=a&65535;var bh=b>>>16;var bl=b&65535;return al*bl+(ah*bl+al*bh<<16)|0};Math.imul=Math["imul"];if(!Math["fround"]){var froundBuffer=new Float32Array(1);Math["fround"]=(function(x){froundBuffer[0]=x;return froundBuffer[0]})}Math.fround=Math["fround"];if(!Math["clz32"])Math["clz32"]=(function(x){x=x>>>0;for(var i=0;i<32;i++){if(x&1<<31-i)return i}return 32});Math.clz32=Math["clz32"];if(!Math["trunc"])Math["trunc"]=(function(x){return x<0?Math.ceil(x):Math.floor(x)});Math.trunc=Math["trunc"];var Math_abs=Math.abs;var Math_cos=Math.cos;var Math_sin=Math.sin;var Math_tan=Math.tan;var Math_acos=Math.acos;var Math_asin=Math.asin;var Math_atan=Math.atan;var Math_atan2=Math.atan2;var Math_exp=Math.exp;var Math_log=Math.log;var Math_sqrt=Math.sqrt;var Math_ceil=Math.ceil;var Math_floor=Math.floor;var Math_pow=Math.pow;var Math_imul=Math.imul;var Math_fround=Math.fround;var Math_round=Math.round;var Math_min=Math.min;var Math_clz32=Math.clz32;var Math_trunc=Math.trunc;var runDependencies=0;var runDependencyWatcher=null;var dependenciesFulfilled=null;Module["preloadedImages"]={};Module["preloadedAudios"]={};var ASM_CONSTS=[];STATIC_BASE=Runtime.GLOBAL_BASE;STATICTOP=STATIC_BASE+21680;__ATINIT__.push();allocate([252,26,0,0,88,28,0,0,24,0,0,0,0,0,0,0,212,26,0,0,127,28,0,0,252,26,0,0,211,28,0,0,24,0,0,0,0,0,0,0,212,26,0,0,158,29,0,0,252,26,0,0,179,29,0,0,48,0,0,0,0,0,0,0,212,26,0,0,196,29,0,0,212,26,0,0,224,29,0,0,252,26,0,0,158,30,0,0,80,0,0,0,0,0,0,0,212,26,0,0,180,30,0,0,252,26,0,0,45,41,0,0,104,0,0,0,0,0,0,0,252,26,0,0,217,30,0,0,144,0,0,0,0,0,0,0,252,26,0,0,50,31,0,0,160,0,0,0,0,0,0,0,252,26,0,0,134,31,0,0,176,0,0,0,0,0,0,0,252,26,0,0,186,31,0,0,192,0,0,0,0,0,0,0,212,26,0,0,229,31,0,0,252,26,0,0,103,32,0,0,216,0,0,0,0,0,0,0,252,26,0,0,255,32,0,0,144,0,0,0,0,0,0,0,252,26,0,0,136,33,0,0,216,0,0,0,0,0,0,0,252,26,0,0,34,34,0,0,216,0,0,0,0,0,0,0,252,26,0,0,180,34,0,0,216,0,0,0,0,0,0,0,252,26,0,0,90,35,0,0,216,0,0,0,0,0,0,0,252,26,0,0,245,35,0,0,216,0,0,0,0,0,0,0,252,26,0,0,139,36,0,0,72,1,0,0,0,0,0,0,252,26,0,0,48,37,0,0,144,0,0,0,0,0,0,0,252,26,0,0,198,37,0,0,72,1,0,0,0,0,0,0,252,26,0,0,109,38,0,0,72,1,0,0,0,0,0,0,252,26,0,0,12,39,0,0,72,1,0,0,0,0,0,0,252,26,0,0,191,39,0,0,72,1,0,0,0,0,0,0,252,26,0,0,103,40,0,0,72,1,0,0,0,0,0,0,252,26,0,0,107,41,0,0,112,0,0,0,0,0,0,0,252,26,0,0,131,60,0,0,112,0,0,0,0,0,0,0,252,26,0,0,182,45,0,0,216,1,0,0,0,0,0,0,252,26,0,0,39,46,0,0,160,0,0,0,0,0,0,0,252,26,0,0,244,48,0,0,248,1,0,0,0,0,0,0,252,26,0,0,164,49,0,0,216,1,0,0,0,0,0,0,252,26,0,0,176,50,0,0,248,1,0,0,0,0,0,0,252,26,0,0,196,51,0,0,248,1,0,0,0,0,0,0,252,26,0,0,110,52,0,0,248,1,0,0,0,0,0,0,252,26,0,0,44,53,0,0,248,1,0,0,0,0,0,0,252,26,0,0,223,53,0,0,248,1,0,0,0,0,0,0,252,26,0,0,141,54,0,0,104,2,0,0,0,0,0,0,252,26,0,0,74,55,0,0,216,1,0,0,0,0,0,0,252,26,0,0,248,55,0,0,104,2,0,0,0,0,0,0,252,26,0,0,183,56,0,0,104,2,0,0,0,0,0,0,252,26,0,0,110,57,0,0,104,2,0,0,0,0,0,0,252,26,0,0,57,58,0,0,104,2,0,0,0,0,0,0,252,26,0,0,249,58,0,0,104,2,0,0,0,0,0,0,252,26,0,0,180,59,0,0,216,2,0,0,0,0,0,0,252,26,0,0,0,60,0,0,232,2,0,0,0,0,0,0,212,26,0,0,72,60,0,0,252,26,0,0,174,60,0,0,72,0,0,0,0,0,0,0,252,26,0,0,18,61,0,0,80,0,0,0,0,0,0,0,252,26,0,0,222,60,0,0,32,3,0,0,0,0,0,0,212,26,0,0,248,60,0,0,252,26,0,0,56,61,0,0,80,0,0,0,0,0,0,0,252,26,0,0,23,63,0,0,72,0,0,0,0,0,0,0,252,26,0,0,235,63,0,0,88,0,0,0,0,0,0,0,252,26,0,0,11,64,0,0,88,0,0,0,0,0,0,0,252,26,0,0,152,67,0,0,184,3,0,0,0,0,0,0,212,26,0,0,44,64,0,0,252,26,0,0,45,65,0,0,32,3,0,0,0,0,0,0,212,26,0,0,247,65,0,0,252,26,0,0,50,66,0,0,32,3,0,0,0,0,0,0,252,26,0,0,239,66,0,0,32,3,0,0,0,0,0,0,212,26,0,0,228,67,0,0,252,26,0,0,18,68,0,0,184,3,0,0,0,0,0,0,212,26,0,0,194,80,0,0,252,26,0,0,34,81,0,0,232,3,0,0,0,0,0,0,252,26,0,0,207,80,0,0,248,3,0,0,0,0,0,0,212,26,0,0,240,80,0,0,252,26,0,0,253,80,0,0,216,3,0,0,0,0,0,0,252,26,0,0,19,82,0,0,208,3,0,0,0,0,0,0,252,26,0,0,68,82,0,0,232,3,0,0,0,0,0,0,252,26,0,0,32,82,0,0,32,4,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,0,0,0,86,85,85,85,2,0,0,0,0,0,0,0,2,0,0,0,154,153,153,153,3,0,0,0,86,85,85,85,3,0,0,0,37,73,146,36,3,0,0,0,0,0,0,0,3,0,0,0,200,113,28,199,4,0,0,0,154,153,153,153,4,0,0,0,70,23,93,116,4,0,0,0,86,85,85,85,4,0,0,0,60,177,19,59,4,0,0,0,37,73,146,36,4,0,0,0,18,17,17,17,4,0,0,0,0,0,0,0,4,0,0,0,226,225,225,225,5,0,0,0,200,113,28,199,5,0,0,0,203,107,40,175,5,0,0,0,154,153,153,153,5,0,0,0,135,97,24,134,5,0,0,0,70,23,93,116,5,0,0,0,145,133,44,100,5,0,0,0,86,85,85,85,5,0,0,0,123,20,174,71,5,0,0,0,60,177,19,59,5,0,0,0,219,75,104,47,5,0,0,0,37,73,146,36,5,0,0,0,18,150,123,26,5,0,0,0,18,17,17,17,5,0,0,0,133,16,66,8,5,0,0,0,0,0,0,0,5,0,0,0,8,31,124,240,6,0,0,0,226,225,225,225,6,0,0,0,213,65,29,212,6,0,0,0,200,113,28,199,6,0,0,0,77,145,207,186,6,0,0,0,203,107,40,175,6,0,0,0,165,65,26,164,6,0,0,0,154,153,153,153,6,0,0,0,250,24,156,143,6,0,0,0,135,97,24,134,6,0,0,0,24,244,5,125,6,0,0,0,70,23,93,116,6,0,0,0,109,193,22,108,6,0,0,0,145,133,44,100,6,0,0,0,186,130,152,92,6,0,0,0,86,85,85,85,6,0,0,0,115,10,94,78,6,0,0,0,123,20,174,71,6,0,0,0,66,65,65,65,6,0,0,0,60,177,19,59,6,0,0,0,179,207,33,53,6,0,0,0,219,75,104,47,6,0,0,0,159,18,228,41,6,0,0,0,37,73,146,36,6,0,0,0,221,71,112,31,6,0,0,0,18,150,123,26,6,0,0,0,248,229,177,21,6,0,0,0,18,17,17,17,6,0,0,0,252,20,151,12,6,0,0,0,133,16,66,8,6,0,0,0,5,65,16,4,6,0,0,0,0,0,0,0,6,0,0,0,249,129,31,248,7,0,0,0,8,31,124,240,7,0,0,0,192,26,19,233,7,0,0,0,226,225,225,225,7,0,0,0,108,7,230,218,7,0,0,0,213,65,29,212,7,0,0,0,145,104,133,205,7,0,0,0,200,113,28,199,7,0,0,0,57,112,224,192,7,0,0,0,77,145,207,186,7,0,0,0,79,27,232,180,7,0,0,0,203,107,40,175,7,0,0,0,7,246,142,169,7,0,0,0,165,65,26,164,7,0,0,0,82,233,200,158,7,0,0,0,154,153,153,153,7,0,0,0,206,15,139,148,7,0,0,0,250,24,156,143,7,0,0,0,247,144,203,138,7,0,0,0,135,97,24,134,7,0,0,0,130,129,129,129,7,0,0,0,24,244,5,125,7,0,0,0,24,200,164,120,7,0,0,0,70,23,93,116,7,0,0,0,193,5,46,112,7,0,0,0,109,193,22,108,7,0,0,0,105,129,22,104,7,0,0,0,145,133,44,100,7,0,0,0,6,22,88,96,7,0,0,0,186,130,152,92,7,0,0,0,9,35,237,88,7,0,0,0,86,85,85,85,7,0,0,0,175,126,208,81,7,0,0,0,115,10,94,78,7,0,0,0,6,106,253,74,7,0,0,0,123,20,174,71,7,0,0,0,87,134,111,68,7,0,0,0,66,65,65,65,7,0,0,0,207,203,34,62,7,0,0,0,60,177,19,59,7,0,0,0,57,129,19,56,7,0,0,0,179,207,33,53,7,0,0,0,163,52,62,50,7,0,0,0,219,75,104,47,7,0,0,0,217,180,159,44,7,0,0,0,159,18,228,41,7,0,0,0,137,11,53,39,7,0,0,0,37,73,146,36,7,0,0,0,19,120,251,33,7,0,0,0,221,71,112,31,7,0,0,0,219,106,240,28,7,0,0,0,18,150,123,26,7,0,0,0,25,129,17,24,7,0,0,0,248,229,177,21,7,0,0,0,20,129,92,19,7,0,0,0,18,17,17,17,7,0,0,0,191,86,207,14,7,0,0,0,252,20,151,12,7,0,0,0,167,16,104,10,7,0,0,0,133,16,66,8,7,0,0,0,48,221,36,6,7,0,0,0,5,65,16,4,7,0,0,0,17,8,4,2,7,0,0,0,0,0,0,0,7,0,0,0,32,240,7,252,8,0,0,0,249,129,31,248,8,0,0,0,229,89,70,244,8,0,0,0,8,31,124,240,8,0,0,0,49,123,192,236,8,0,0,0,192,26,19,233,8,0,0,0,145,172,115,229,8,0,0,0,226,225,225,225,8,0,0,0,64,110,93,222,8,0,0,0,108,7,230,218,8,0,0,0,76,101,123,215,8,0,0,0,213,65,29,212,8,0,0,0,247,88,203,208,8,0,0,0,145,104,133,205,8,0,0,0,86,48,75,202,8,0,0,0,200,113,28,199,8,0,0,0,29,240,248,195,8,0,0,0,57,112,224,192,8,0,0,0,154,184,210,189,8,0,0,0,77,145,207,186,8,0,0,0,222,195,214,183,8,0,0,0,79,27,232,180,8,0,0,0,7,100,3,178,8,0,0,0,203,107,40,175,8,0,0,0,173,1,87,172,8,0,0,0,7,246,142,169,8,0,0,0,110,26,208,166,8,0,0,0,165,65,26,164,8,0,0,0,152,63,109,161,8,0,0,0,82,233,200,158,8,0,0,0,239,20,45,156,8,0,0,0,154,153,153,153,8,0,0,0,129,79,14,151,8,0,0,0,206,15,139,148,8,0,0,0,158,180,15,146,8,0,0,0,250,24,156,143,8,0,0,0,212,24,48,141,8,0,0,0,247,144,203,138,8,0,0,0,11,95,110,136,8,0,0,0,135,97,24,134,8,0,0,0,172,119,201,131,8,0,0,0,130,129,129,129,8,0,0,0,209,95,64,127,8,0,0,0,24,244,5,125,8,0,0,0,143,32,210,122,8,0,0,0,24,200,164,120,8,0,0,0,68,206,125,118,8,0,0,0,70,23,93,116,8,0,0,0,245,135,66,114,8,0,0,0,193,5,46,112,8,0,0,0,181,118,31,110,8,0,0,0,109,193,22,108,8,0,0,0,22,205,19,106,8,0,0,0,105,129,22,104,8,0,0,0,166,198,30,102,8,0,0,0,145,133,44,100,8,0,0,0,113,167,63,98,8,0,0,0,6,22,88,96,8,0,0,0,142,187,117,94,8,0,0,0,186,130,152,92,8,0,0,0,177,86,192,90,8,0,0,0,9,35,237,88,8,0,0,0,198,211,30,87,8,0,0,0,86,85,85,85,8,0,0,0,144,148,144,83,8,0,0,0,175,126,208,81,8,0,0,0,81,1,21,80,8,0,0,0,115,10,94,78,8,0,0,0,115,136,171,76,8,0,0,0,6,106,253,74,8,0,0,0,60,158,83,73,8,0,0,0,123,20,174,71,8,0,0,0,128,188,12,70,8,0,0,0,87,134,111,68,8,0,0,0,94,98,214,66,8,0,0,0,66,65,65,65,8,0,0,0,252,19,176,63,8,0,0,0,207,203,34,62,8,0,0,0,72,90,153,60,8,0,0,0,60,177,19,59,8,0,0,0,194,194,145,57,8,0,0,0,57,129,19,56,8,0,0,0,62,223,152,54,8,0,0,0,179,207,33,53,8,0,0,0,182,69,174,51,8,0,0,0,163,52,62,50,8,0,0,0,20,144,209,48,8,0,0,0,219,75,104,47,8,0,0,0,5,92,2,46,8,0,0,0,217,180,159,44,8,0,0,0,209,74,64,43,8,0,0,0,159,18,228,41,8,0,0,0,41,1,139,40,8,0,0,0,137,11,53,39,8,0,0,0,9,39,226,37,8,0,0,0,37,73,146,36,8,0,0,0,138,103,69,35,8,0,0,0,19,120,251,33,8,0,0,0,199,112,180,32,8,0,0,0,221,71,112,31,8,0,0,0,180,243,46,30,8,0,0,0,219,106,240,28,8,0,0,0,5,164,180,27,8,0,0,0,18,150,123,26,8,0,0,0,9,56,69,25,8,0,0,0,25,129,17,24,8,0,0,0,149,104,224,22,8,0,0,0,248,229,177,21,8,0,0,0,225,240,133,20,8,0,0,0,20,129,92,19,8,0,0,0,118,142,53,18,8,0,0,0,18,17,17,17,8,0,0,0,16,1,239,15,8,0,0,0,191,86,207,14,8,0,0,0,137,10,178,13,8,0,0,0,252,20,151,12,8,0,0,0,195,110,126,11,8,0,0,0,167,16,104,10,8,0,0,0,145,243,83,9,8,0,0,0,133,16,66,8,8,0,0,0,165,96,50,7,8,0,0,0,48,221,36,6,8,0,0,0,126,127,25,5,8,0,0,0,5,65,16,4,8,0,0,0,82,27,9,3,8,0,0,0,17,8,4,2,8,0,0,0,2,1,1,1,8,0,0,0,0,0,0,192,0,0,0,192,0,0,0,0,8,0,0,0,1,0,0,0,2,0,0,0,1,0,0,0,1,0,0,0,1,0,0,0,0,0,0,0,32,0,0,0,3,0,0,0,4,0,0,0,2,0,0,0,2,0,0,0,2,0,0,0,0,0,0,192,0,0,0,0,48,0,0,0,5,0,0,0,6,0,0,0,1,0,0,0,3,0,0,0,3,0,0,0,7,0,0,0,2,0,0,0,0,0,0,192,0,0,0,0,56,0,0,0,8,0,0,0,9,0,0,0,3,0,0,0,4,0,0,0,3,0,0,0,7,0,0,0,4,0,0,0,0,0,0,192,0,0,0,0,72,0,0,0,10,0,0,0,11,0,0,0,1,0,0,0,3,0,0,0,1,0,0,0,4,0,0,0,5,0,0,0,2,0,0,0,6,0,0,0,7,0,0,0,4,0,0,0,1,0,0,0,8,0,0,0,0,0,0,0,80,0,0,0,12,0,0,0,13,0,0,0,5,0,0,0,1,0,0,0,6,0,0,0,7,0,0,0,8,0,0,0,9,0,0,0,10,0,0,0,1,0,0,0,9,0,0,0,11,0,0,0,0,0,0,0,88,0,0,0,12,0,0,0,14,0,0,0,12,0,0,0,1,0,0,0,6,0,0,0,7,0,0,0,13,0,0,0,9,0,0,0,10,0,0,0,1,0,0,0,9,0,0,0,11,0,0,0,14,0,0,0,10,0,0,0,11,0,0,0,1,0,0,0,0,0,0,0,104,0,0,0,15,0,0,0,16,0,0,0,3,0,0,0,12,0,0,0,13,0,0,0,4,0,0,0,14,0,0,0,15,0,0,0,16,0,0,0,15,0,0,0,16,0,0,0,5,0,0,0,0,0,0,0,112,0,0,0,17,0,0,0,18,0,0,0,6,0,0,0,12,0,0,0,17,0,0,0,4,0,0,0,14,0,0,0,15,0,0,0,17,0,0,0,15,0,0,0,16,0,0,0,7,0,0,0,5,0,0,0,8,0,0,0,0,0,0,192,0,0,0,0,144,0,0,0,19,0,0,0,20,0,0,0,1,0,0,0,18,0,0,0,1,0,0,0,19,0,0,0,18,0,0,0,19,0,0,0,20,0,0,0,21,0,0,0,20,0,0,0,1,0,0,0,0,0,0,0,128,0,0,0,19,0,0,0,21,0,0,0,22,0,0,0,18,0,0,0,23,0,0,0,19,0,0,0,18,0,0,0,19,0,0,0,20,0,0,0,21,0,0,0,20,0,0,0,1,0,0,0,0,0,0,0,40,1,0,0,19,0,0,0,22,0,0,0,24,0,0,0,18,0,0,0,25,0,0,0,19,0,0,0,18,0,0,0,19,0,0,0,20,0,0,0,21,0,0,0,20,0,0,0,2,0,0,0,0,0,0,0,24,1,0,0,19,0,0,0,23,0,0,0,26,0,0,0,18,0,0,0,27,0,0,0,19,0,0,0,18,0,0,0,19,0,0,0,20,0,0,0,21,0,0,0,20,0,0,0,3,0,0,0,0,0,0,0,8,1,0,0,24,0,0,0,25,0,0,0,28,0,0,0,18,0,0,0,29,0,0,0,19,0,0,0,18,0,0,0,19,0,0,0,20,0,0,0,21,0,0,0,21,0,0,0,4,0,0,0,0,0,0,0,248,0,0,0,26,0,0,0,27,0,0,0,30,0,0,0,18,0,0,0,31,0,0,0,32,0,0,0,22,0,0,0,23,0,0,0,20,0,0,0,21,0,0,0,24,0,0,0,5,0,0,0,0,0,0,0,232,0,0,0,28,0,0,0,29,0,0,0,33,0,0,0,18,0,0,0,34,0,0,0,35,0,0,0,25,0,0,0,26,0,0,0,20,0,0,0,21,0,0,0,27,0,0,0,6,0,0,0,0,0,0,0,200,0,0,0,30,0,0,0,31,0,0,0,36,0,0,0,18,0,0,0,37,0,0,0,38,0,0,0,28,0,0,0,29,0,0,0,20,0,0,0,21,0,0,0,30,0,0,0,7,0,0,0,0,0,0,0,152,1,0,0,19,0,0,0,32,0,0,0,39,0,0,0,18,0,0,0,40,0,0,0,19,0,0,0,18,0,0,0,19,0,0,0,20,0,0,0,21,0,0,0,20,0,0,0,8,0,0,0,0,0,0,0,136,1,0,0,19,0,0,0,33,0,0,0,41,0,0,0,18,0,0,0,42,0,0,0,19,0,0,0,18,0,0,0,19,0,0,0,20,0,0,0,21,0,0,0,20,0,0,0,9,0,0,0,0,0,0,0,120,1,0,0,34,0,0,0,35,0,0,0,43,0,0,0,18,0,0,0,44,0,0,0,19,0,0,0,18,0,0,0,19,0,0,0,20,0,0,0,21,0,0,0,31,0,0,0,10,0,0,0,0,0,0,0,104,1,0,0,36,0,0,0,37,0,0,0,45,0,0,0,18,0,0,0,46,0,0,0,47,0,0,0,32,0,0,0,33,0,0,0,20,0,0,0,21,0,0,0,34,0,0,0,11,0,0,0,0,0,0,0,88,1,0,0,38,0,0,0,39,0,0,0,48,0,0,0,18,0,0,0,49,0,0,0,50,0,0,0,35,0,0,0,36,0,0,0,20,0,0,0,21,0,0,0,37,0,0,0,12,0,0,0,0,0,0,0,56,1,0,0,40,0,0,0,41,0,0,0,51,0,0,0,18,0,0,0,52,0,0,0,53,0,0,0,38,0,0,0,39,0,0,0,20,0,0,0,21,0,0,0,40,0,0,0,13,0,0,0,0,0,0,0,168,1,0,0,42,0,0,0,43,0,0,0,9,0,0,0,12,0,0,0,17,0,0,0,4,0,0,0,41,0,0,0,54,0,0,0,55,0,0,0,15,0,0,0,16,0,0,0,7,0,0,0,5,0,0,0,10,0,0,0,0,0,0,0,184,1,0,0,44,0,0,0,45,0,0,0,11,0,0,0,12,0,0,0,17,0,0,0,4,0,0,0,42,0,0,0,56,0,0,0,57,0,0,0,15,0,0,0,16,0,0,0,7,0,0,0,6,0,0,0,12,0,0,0,0,0,0,0,232,2,0,0,46,0,0,0,47,0,0,0,58,0,0,0,0,0,0,0,200,2,0,0,46,0,0,0,48,0,0,0,59,0,0,0,0,0,0,0,200,1,0,0,49,0,0,0,50,0,0,0,60,0,0,0,61,0,0,0,62,0,0,0,63,0,0,0,43,0,0,0,44,0,0,0,64,0,0,0,65,0,0,0,45,0,0,0,14,0,0,0,0,0,0,0,72,2,0,0,49,0,0,0,51,0,0,0,66,0,0,0,61,0,0,0,67,0,0,0,63,0,0,0,43,0,0,0,44,0,0,0,64,0,0,0,65,0,0,0,45,0,0,0,15,0,0,0,0,0,0,0,56,2,0,0,49,0,0,0,52,0,0,0,68,0,0,0,61,0,0,0,69,0,0,0,63,0,0,0,43,0,0,0,44,0,0,0,64,0,0,0,65,0,0,0,45,0,0,0,16,0,0,0,0,0,0,0,40,2,0,0,53,0,0,0,54,0,0,0,70,0,0,0,61,0,0,0,71,0,0,0,63,0,0,0,43,0,0,0,44,0,0,0,64,0,0,0,65,0,0,0,46,0,0,0,17,0,0,0,0,0,0,0,24,2,0,0,55,0,0,0,56,0,0,0,72,0,0,0,61,0,0,0,73,0,0,0,74,0,0,0,47,0,0,0,48,0,0,0,64,0,0,0,65,0,0,0,49,0,0,0,18,0,0,0,0,0,0,0,8,2,0,0,57,0,0,0,58,0,0,0,75,0,0,0,61,0,0,0,76,0,0,0,77,0,0,0,50,0,0,0,51,0,0,0,64,0,0,0,65,0,0,0,52,0,0,0,19,0,0,0,0,0,0,0,232,1,0,0,59,0,0,0,60,0,0,0,78,0,0,0,61,0,0,0,79,0,0,0,80,0,0,0,53,0,0,0,54,0,0,0,64,0,0,0,65,0,0,0,55,0,0,0,20,0,0,0,0,0,0,0,184,2,0,0,49,0,0,0,61,0,0,0,81,0,0,0,61,0,0,0,82,0,0,0,63,0,0,0,43,0,0,0,44,0,0,0,64,0,0,0,65,0,0,0,45,0,0,0,21,0,0,0,0,0,0,0,168,2,0,0,49,0,0,0,62,0,0,0,83,0,0,0,61,0,0,0,84,0,0,0,63,0,0,0,43,0,0,0,44,0,0,0,64,0,0,0,65,0,0,0,45,0,0,0,22,0,0,0,0,0,0,0,152,2,0,0,63,0,0,0,64,0,0,0,85,0,0,0,61,0,0,0,86,0,0,0,63,0,0,0,43,0,0,0,44,0,0,0,64,0,0,0,65,0,0,0,56,0,0,0,23,0,0,0,0,0,0,0,136,2,0,0,65,0,0,0,66,0,0,0,87,0,0,0,61,0,0,0,88,0,0,0,89,0,0,0,57,0,0,0,58,0,0,0,64,0,0,0,65,0,0,0,59,0,0,0,24,0,0,0,0,0,0,0,120,2,0,0,67,0,0,0,68,0,0,0,90,0,0,0,61,0,0,0,91,0,0,0,92,0,0,0,60,0,0,0,61,0,0,0,64,0,0,0,65,0,0,0,62,0,0,0,25,0,0,0,0,0,0,0,88,2,0,0,69,0,0,0,70,0,0,0,93,0,0,0,61,0,0,0,94,0,0,0,95,0,0,0,63,0,0,0,64,0,0,0,64,0,0,0,65,0,0,0,65,0,0,0,26,0,0,0,0,0,0,0,240,2,0,0,71,0,0,0,72,0,0,0,13,0,0,0,66,0,0,0,96,0,0,0,67,0,0,0,68,0,0,0,14,0,0,0,69,0,0,0,70,0,0,0,97,0,0,0,71,0,0,0,72,0,0,0,98,0,0,0,7,0,0,0,0,0,0,0,0,3,0,0,12,0,0,0,73,0,0,0,5,0,0,0,99,0,0,0,6,0,0,0,7,0,0,0,100,0,0,0,9,0,0,0,10,0,0,0,73,0,0,0,9,0,0,0,11,0,0,0,0,0,0,0,16,3,0,0,74,0,0,0,75,0,0,0,74,0,0,0,101,0,0,0,0,0,0,0,40,3,0,0,12,0,0,0,76,0,0,0,5,0,0,0,102,0,0,0,6,0,0,0,7,0,0,0,103,0,0,0,9,0,0,0,10,0,0,0,75,0,0,0,9,0,0,0,11,0,0,0,0,0,0,0,56,3,0,0,10,0,0,0,77,0,0,0,1,0,0,0,3,0,0,0,104,0,0,0,4,0,0,0,5,0,0,0,2,0,0,0,6,0,0,0,7,0,0,0,4,0,0,0,76,0,0,0,77,0,0,0,3,0,0,0,0,0,0,0,72,3,0,0,12,0,0,0,78,0,0,0,12,0,0,0,105,0,0,0,6,0,0,0,7,0,0,0,13,0,0,0,9,0,0,0,10,0,0,0,78,0,0,0,9,0,0,0,11,0,0,0,14,0,0,0,10,0,0,0,11,0,0,0,106,0,0,0,0,0,0,0,88,3,0,0,79,0,0,0,80,0,0,0,12,0,0,0,107,0,0,0,108,0,0,0,7,0,0,0,13,0,0,0,9,0,0,0,10,0,0,0,79,0,0,0,80,0,0,0,11,0,0,0,109,0,0,0,81,0,0,0,82,0,0,0,110,0,0,0,0,0,0,0,104,3,0,0,81,0,0,0,82,0,0,0,83,0,0,0,84,0,0,0,85,0,0,0,86,0,0,0,87,0,0,0,111,0,0,0,112,0,0,0,88,0,0,0,113,0,0,0,1,0,0,0,3,0,0,0,0,0,0,0,3,0,0,0,0,0,0,0,3,0,0,0,0,0,0,0,3,0,0,0,0,0,0,0,128,3,0,0,83,0,0,0,84,0,0,0,89,0,0,0,114,0,0,0,0,0,0,0,120,3,0,0,85,0,0,0,86,0,0,0,87,0,0,0,0,0,0,192,0,0,0,0,152,3,0,0,88,0,0,0,89,0,0,0,90,0,0,0,115,0,0,0,0,0,0,0,144,3,0,0,90,0,0,0,91,0,0,0,92,0,0,0,0,0,0,0,168,3,0,0,93,0,0,0,94,0,0,0,91,0,0,0,116,0,0,0,0,0,0,0,192,3,0,0,95,0,0,0,96,0,0,0,92,0,0,0,93,0,0,0,94,0,0,0,95,0,0,0,96,0,0,0,117,0,0,0,118,0,0,0,97,0,0,0,119,0,0,0,0,0,0,0,1,0,0,0,5,0,0,0,2,0,0,0,5,0,0,0,3,0,0,0,5,0,0,0,4,0,0,0,88,23,0,0,5,0,0,0,0,0,0,0,0,0,0,0,120,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,15,0,0,0,16,0,0,0,172,84,0,0,0,0,0,0,0,0,0,0,0,0,0,0,2,0,0,0,0,0,0,0,0,0,0,0,0,0,0,255,255,255,255,255,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,128,84,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,17,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,255,255,255,255,255,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,2,0,0,0,3,0,0,0,5,0,0,0,7,0,0,0,11,0,0,0,13,0,0,0,17,0,0,0,19,0,0,0,23,0,0,0,29,0,0,0,31,0,0,0,37,0,0,0,41,0,0,0,43,0,0,0,47,0,0,0,53,0,0,0,59,0,0,0,61,0,0,0,67,0,0,0,71,0,0,0,73,0,0,0,79,0,0,0,83,0,0,0,89,0,0,0,97,0,0,0,101,0,0,0,103,0,0,0,107,0,0,0,109,0,0,0,113,0,0,0,127,0,0,0,131,0,0,0,137,0,0,0,139,0,0,0,149,0,0,0,151,0,0,0,157,0,0,0,163,0,0,0,167,0,0,0,173,0,0,0,179,0,0,0,181,0,0,0,191,0,0,0,193,0,0,0,197,0,0,0,199,0,0,0,211,0,0,0,1,0,0,0,11,0,0,0,13,0,0,0,17,0,0,0,19,0,0,0,23,0,0,0,29,0,0,0,31,0,0,0,37,0,0,0,41,0,0,0,43,0,0,0,47,0,0,0,53,0,0,0,59,0,0,0,61,0,0,0,67,0,0,0,71,0,0,0,73,0,0,0,79,0,0,0,83,0,0,0,89,0,0,0,97,0,0,0,101,0,0,0,103,0,0,0,107,0,0,0,109,0,0,0,113,0,0,0,121,0,0,0,127,0,0,0,131,0,0,0,137,0,0,0,139,0,0,0,143,0,0,0,149,0,0,0,151,0,0,0,157,0,0,0,163,0,0,0,167,0,0,0,169,0,0,0,173,0,0,0,179,0,0,0,181,0,0,0,187,0,0,0,191,0,0,0,193,0,0,0,197,0,0,0,199,0,0,0,209,0,0,0,2,0,0,0,185,80,0,0,0,0,0,0,216,3,0,0,97,0,0,0,98,0,0,0,99,0,0,0,100,0,0,0,18,0,0,0,1,0,0,0,1,0,0,0,1,0,0,0,0,0,0,0,0,4,0,0,97,0,0,0,101,0,0,0,99,0,0,0,100,0,0,0,18,0,0,0,2,0,0,0,2,0,0,0,2,0,0,0,0,0,0,0,16,4,0,0,102,0,0,0,103,0,0,0,121,0,0,0,115,114,99,47,100,114,97,99,111,47,99,111,114,101,47,98,105,116,95,99,111,100,101,114,115,47,114,97,110,115,95,98,105,116,95,101,110,99,111,100,101,114,46,99,99,0,40,97,110,115,45,62,115,116,97,116,101,41,32,62,61,32,40,40,49,48,50,52,117,32,42,32,52,41,41,0,97,110,115,95,119,114,105,116,101,95,101,110,100,0,40,97,110,115,45,62,115,116,97,116,101,41,32,60,32,40,40,49,48,50,52,117,32,42,32,52,41,32,42,32,50,53,54,41,0,40,97,110,115,95,46,115,116,97,116,101,41,32,62,61,32,40,108,95,114,97,110,115,95,98,97,115,101,41,0,46,47,115,114,99,47,100,114,97,99,111,47,99,111,114,101,47,97,110,115,46,104,0,119,114,105,116,101,95,101,110,100,0,40,97,110,115,95,46,115,116,97,116,101,41,32,60,32,40,108,95,114,97,110,115,95,98,97,115,101,32,42,32,50,53,54,41,0,40,110,98,105,116,115,41,32,62,61,32,40,48,41,0,46,47,115,114,99,47,100,114,97,99,111,47,99,111,114,101,47,101,110,99,111,100,101,114,95,98,117,102,102,101,114,46,104,0,80,117,116,66,105,116,115,0,40,110,98,105,116,115,41,32,60,61,32,40,51,50,41,0,78,53,100,114,97,99,111,50,56,65,116,116,114,105,98,117,116,101,79,99,116,97,104,101,100,114,111,110,84,114,97,110,115,102,111,114,109,69,0,78,53,100,114,97,99,111,49,56,65,116,116,114,105,98,117,116,101,84,114,97,110,115,102,111,114,109,69,0,115,114,99,47,100,114,97,99,111,47,97,116,116,114,105,98,117,116,101,115,47,97,116,116,114,105,98,117,116,101,95,111,99,116,97,104,101,100,114,111,110,95,116,114,97,110,115,102,111,114,109,46,99,99,0,78,53,100,114,97,99,111,51,48,65,116,116,114,105,98,117,116,101,81,117,97,110,116,105,122,97,116,105,111,110,84,114,97,110,115,102,111,114,109,69,0,105,115,95,105,110,105,116,105,97,108,105,122,101,100,40,41,0,115,114,99,47,100,114,97,99,111,47,97,116,116,114,105,98,117,116,101,115,47,97,116,116,114,105,98,117,116,101,95,113,117,97,110,116,105,122,97,116,105,111,110,95,116,114,97,110,115,102,111,114,109,46,99,99,0,71,101,110,101,114,97,116,101,80,111,114,116,97,98,108,101,65,116,116,114,105,98,117,116,101,0,97,116,116,95,105,100,32,62,61,32,48,0,115,114,99,47,100,114,97,99,111,47,112,111,105,110,116,95,99,108,111,117,100,47,112,111,105,110,116,95,99,108,111,117,100,46,99,99,0,83,101,116,65,116,116,114,105,98,117,116,101,0,78,53,100,114,97,99,111,49,48,80,111,105,110,116,67,108,111,117,100,69,0,78,53,100,114,97,99,111,52,77,101,115,104,69,0,37,100,0,78,53,100,114,97,99,111,49,55,65,116,116,114,105,98,117,116,101,115,69,110,99,111,100,101,114,69,0,78,53,100,114,97,99,111,49,55,80,111,105,110,116,67,108,111,117,100,69,110,99,111,100,101,114,69,0,70,97,105,108,101,100,32,116,111,32,101,110,99,111,100,101,32,109,101,116,97,100,97,116,97,46,0,70,97,105,108,101,100,32,116,111,32,105,110,105,116,105,97,108,105,122,101,32,101,110,99,111,100,101,114,46,0,70,97,105,108,101,100,32,116,111,32,101,110,99,111,100,101,32,105,110,116,101,114,110,97,108,32,100,97,116,97,46,0,70,97,105,108,101,100,32,116,111,32,101,110,99,111,100,101,32,103,101,111,109,101,116,114,121,32,100,97,116,97,46,0,70,97,105,108,101,100,32,116,111,32,101,110,99,111,100,101,32,112,111,105,110,116,32,97,116,116,114,105,98,117,116,101,115,46,0,68,82,65,67,79,0,78,53,100,114,97,99,111,49,49,77,101,115,104,69,110,99,111,100,101,114,69,0,78,53,100,114,97,99,111,50,54,83,101,113,117,101,110,116,105,97,108,65,116,116,114,105,98,117,116,101,69,110,99,111,100,101,114,69,0,78,53,100,114,97,99,111,50,56,80,114,101,100,105,99,116,105,111,110,83,99,104,101,109,101,68,101,108,116,97,69,110,99,111,100,101,114,73,105,78,83,95,51,55,80,114,101,100,105,99,116,105,111,110,83,99,104,101,109,101,87,114,97,112,69,110,99,111,100,105,110,103,84,114,97,110,115,102,111,114,109,73,105,105,69,69,69,69,0,78,53,100,114,97,99,111,50,51,80,114,101,100,105,99,116,105,111,110,83,99,104,101,109,101,69,110,99,111,100,101,114,73,105,78,83,95,51,55,80,114,101,100,105,99,116,105,111,110,83,99,104,101,109,101,87,114,97,112,69,110,99,111,100,105,110,103,84,114,97,110,115,102,111,114,109,73,105,105,69,69,69,69,0,78,53,100,114,97,99,111,51,55,80,114,101,100,105,99,116,105,111,110,83,99,104,101,109,101,84,121,112,101,100,69,110,99,111,100,101,114,73,110,116,101,114,102,97,99,101,73,105,105,69,69,0,78,53,100,114,97,99,111,51,50,80,114,101,100,105,99,116,105,111,110,83,99,104,101,109,101,69,110,99,111,100,101,114,73,110,116,101,114,102,97,99,101,69,0,78,53,100,114,97,99,111,50,53,80,114,101,100,105,99,116,105,111,110,83,99,104,101,109,101,73,110,116,101,114,102,97,99,101,69,0,46,47,115,114,99,47,100,114,97,99,111,47,99,111,109,112,114,101,115,115,105,111,110,47,97,116,116,114,105,98,117,116,101,115,47,112,114,101,100,105,99,116,105,111,110,95,115,99,104,101,109,101,115,47,112,114,101,100,105,99,116,105,111,110,95,115,99,104,101,109,101,95,119,114,97,112,95,116,114,97,110,115,102,111,114,109,95,98,97,115,101,46,104,0,78,53,100,114,97,99,111,52,50,77,101,115,104,80,114,101,100,105,99,116,105,111,110,83,99,104,101,109,101,71,101,111,109,101,116,114,105,99,78,111,114,109,97,108,69,110,99,111,100,101,114,73,105,78,83,95,51,55,80,114,101,100,105,99,116,105,111,110,83,99,104,101,109,101,87,114,97,112,69,110,99,111,100,105,110,103,84,114,97,110,115,102,111,114,109,73,105,105,69,69,78,83,95,50,52,77,101,115,104,80,114,101,100,105,99,116,105,111,110,83,99,104,101,109,101,68,97,116,97,73,78,83,95,49,49,67,111,114,110,101,114,84,97,98,108,101,69,69,69,69,69,0,78,53,100,114,97,99,111,50,55,77,101,115,104,80,114,101,100,105,99,116,105,111,110,83,99,104,101,109,101,69,110,99,111,100,101,114,73,105,78,83,95,51,55,80,114,101,100,105,99,116,105,111,110,83,99,104,101,109,101,87,114,97,112,69,110,99,111,100,105,110,103,84,114,97,110,115,102,111,114,109,73,105,105,69,69,78,83,95,50,52,77,101,115,104,80,114,101,100,105,99,116,105,111,110,83,99,104,101,109,101,68,97,116,97,73,78,83,95,49,49,67,111,114,110,101,114,84,97,98,108,101,69,69,69,69,69,0,78,53,100,114,97,99,111,52,52,77,101,115,104,80,114,101,100,105,99,116,105,111,110,83,99,104,101,109,101,84,101,120,67,111,111,114,100,115,80,111,114,116,97,98,108,101,69,110,99,111,100,101,114,73,105,78,83,95,51,55,80,114,101,100,105,99,116,105,111,110,83,99,104,101,109,101,87,114,97,112,69,110,99,111,100,105,110,103,84,114,97,110,115,102,111,114,109,73,105,105,69,69,78,83,95,50,52,77,101,115,104,80,114,101,100,105,99,116,105,111,110,83,99,104,101,109,101,68,97,116,97,73,78,83,95,49,49,67,111,114,110,101,114,84,97,98,108,101,69,69,69,69,69,0,78,53,100,114,97,99,111,51,54,77,101,115,104,80,114,101,100,105,99,116,105,111,110,83,99,104,101,109,101,84,101,120,67,111,111,114,100,115,69,110,99,111,100,101,114,73,105,78,83,95,51,55,80,114,101,100,105,99,116,105,111,110,83,99,104,101,109,101,87,114,97,112,69,110,99,111,100,105,110,103,84,114,97,110,115,102,111,114,109,73,105,105,69,69,78,83,95,50,52,77,101,115,104,80,114,101,100,105,99,116,105,111,110,83,99,104,101,109,101,68,97,116,97,73,78,83,95,49,49,67,111,114,110,101,114,84,97,98,108,101,69,69,69,69,69,0,78,53,100,114,97,99,111,53,54,77,101,115,104,80,114,101,100,105,99,116,105,111,110,83,99,104,101,109,101,67,111,110,115,116,114,97,105,110,101,100,77,117,108,116,105,80,97,114,97,108,108,101,108,111,103,114,97,109,69,110,99,111,100,101,114,73,105,78,83,95,51,55,80,114,101,100,105,99,116,105,111,110,83,99,104,101,109,101,87,114,97,112,69,110,99,111,100,105,110,103,84,114,97,110,115,102,111,114,109,73,105,105,69,69,78,83,95,50,52,77,101,115,104,80,114,101,100,105,99,116,105,111,110,83,99,104,101,109,101,68,97,116,97,73,78,83,95,49,49,67,111,114,110,101,114,84,97,98,108,101,69,69,69,69,69,0,78,53,100,114,97,99,111,52,53,77,101,115,104,80,114,101,100,105,99,116,105,111,110,83,99,104,101,109,101,77,117,108,116,105,80,97,114,97,108,108,101,108,111,103,114,97,109,69,110,99,111,100,101,114,73,105,78,83,95,51,55,80,114,101,100,105,99,116,105,111,110,83,99,104,101,109,101,87,114,97,112,69,110,99,111,100,105,110,103,84,114,97,110,115,102,111,114,109,73,105,105,69,69,78,83,95,50,52,77,101,115,104,80,114,101,100,105,99,116,105,111,110,83,99,104,101,109,101,68,97,116,97,73,78,83,95,49,49,67,111,114,110,101,114,84,97,98,108,101,69,69,69,69,69,0,78,53,100,114,97,99,111,52,48,77,101,115,104,80,114,101,100,105,99,116,105,111,110,83,99,104,101,109,101,80,97,114,97,108,108,101,108,111,103,114,97,109,69,110,99,111,100,101,114,73,105,78,83,95,51,55,80,114,101,100,105,99,116,105,111,110,83,99,104,101,109,101,87,114,97,112,69,110,99,111,100,105,110,103,84,114,97,110,115,102,111,114,109,73,105,105,69,69,78,83,95,50,52,77,101,115,104,80,114,101,100,105,99,116,105,111,110,83,99,104,101,109,101,68,97,116,97,73,78,83,95,49,49,67,111,114,110,101,114,84,97,98,108,101,69,69,69,69,69,0,78,53,100,114,97,99,111,52,50,77,101,115,104,80,114,101,100,105,99,116,105,111,110,83,99,104,101,109,101,71,101,111,109,101,116,114,105,99,78,111,114,109,97,108,69,110,99,111,100,101,114,73,105,78,83,95,51,55,80,114,101,100,105,99,116,105,111,110,83,99,104,101,109,101,87,114,97,112,69,110,99,111,100,105,110,103,84,114,97,110,115,102,111,114,109,73,105,105,69,69,78,83,95,50,52,77,101,115,104,80,114,101,100,105,99,116,105,111,110,83,99,104,101,109,101,68,97,116,97,73,78,83,95,50,52,77,101,115,104,65,116,116,114,105,98,117,116,101,67,111,114,110,101,114,84,97,98,108,101,69,69,69,69,69,0,78,53,100,114,97,99,111,50,55,77,101,115,104,80,114,101,100,105,99,116,105,111,110,83,99,104,101,109,101,69,110,99,111,100,101,114,73,105,78,83,95,51,55,80,114,101,100,105,99,116,105,111,110,83,99,104,101,109,101,87,114,97,112,69,110,99,111,100,105,110,103,84,114,97,110,115,102,111,114,109,73,105,105,69,69,78,83,95,50,52,77,101,115,104,80,114,101,100,105,99,116,105,111,110,83,99,104,101,109,101,68,97,116,97,73,78,83,95,50,52,77,101,115,104,65,116,116,114,105,98,117,116,101,67,111,114,110,101,114,84,97,98,108,101,69,69,69,69,69,0,78,53,100,114,97,99,111,52,52,77,101,115,104,80,114,101,100,105,99,116,105,111,110,83,99,104,101,109,101,84,101,120,67,111,111,114,100,115,80,111,114,116,97,98,108,101,69,110,99,111,100,101,114,73,105,78,83,95,51,55,80,114,101,100,105,99,116,105,111,110,83,99,104,101,109,101,87,114,97,112,69,110,99,111,100,105,110,103,84,114,97,110,115,102,111,114,109,73,105,105,69,69,78,83,95,50,52,77,101,115,104,80,114,101,100,105,99,116,105,111,110,83,99,104,101,109,101,68,97,116,97,73,78,83,95,50,52,77,101,115,104,65,116,116,114,105,98,117,116,101,67,111,114,110,101,114,84,97,98,108,101,69,69,69,69,69,0,78,53,100,114,97,99,111,51,54,77,101,115,104,80,114,101,100,105,99,116,105,111,110,83,99,104,101,109,101,84,101,120,67,111,111,114,100,115,69,110,99,111,100,101,114,73,105,78,83,95,51,55,80,114,101,100,105,99,116,105,111,110,83,99,104,101,109,101,87,114,97,112,69,110,99,111,100,105,110,103,84,114,97,110,115,102,111,114,109,73,105,105,69,69,78,83,95,50,52,77,101,115,104,80,114,101,100,105,99,116,105,111,110,83,99,104,101,109,101,68,97,116,97,73,78,83,95,50,52,77,101,115,104,65,116,116,114,105,98,117,116,101,67,111,114,110,101,114,84,97,98,108,101,69,69,69,69,69,0,78,53,100,114,97,99,111,53,54,77,101,115,104,80,114,101,100,105,99,116,105,111,110,83,99,104,101,109,101,67,111,110,115,116,114,97,105,110,101,100,77,117,108,116,105,80,97,114,97,108,108,101,108,111,103,114,97,109,69,110,99,111,100,101,114,73,105,78,83,95,51,55,80,114,101,100,105,99,116,105,111,110,83,99,104,101,109,101,87,114,97,112,69,110,99,111,100,105,110,103,84,114,97,110,115,102,111,114,109,73,105,105,69,69,78,83,95,50,52,77,101,115,104,80,114,101,100,105,99,116,105,111,110,83,99,104,101,109,101,68,97,116,97,73,78,83,95,50,52,77,101,115,104,65,116,116,114,105,98,117,116,101,67,111,114,110,101,114,84,97,98,108,101,69,69,69,69,69,0,78,53,100,114,97,99,111,52,53,77,101,115,104,80,114,101,100,105,99,116,105,111,110,83,99,104,101,109,101,77,117,108,116,105,80,97,114,97,108,108,101,108,111,103,114,97,109,69,110,99,111,100,101,114,73,105,78,83,95,51,55,80,114,101,100,105,99,116,105,111,110,83,99],"i8",ALLOC_NONE,Runtime.GLOBAL_BASE);allocate([104,101,109,101,87,114,97,112,69,110,99,111,100,105,110,103,84,114,97,110,115,102,111,114,109,73,105,105,69,69,78,83,95,50,52,77,101,115,104,80,114,101,100,105,99,116,105,111,110,83,99,104,101,109,101,68,97,116,97,73,78,83,95,50,52,77,101,115,104,65,116,116,114,105,98,117,116,101,67,111,114,110,101,114,84,97,98,108,101,69,69,69,69,69,0,78,53,100,114,97,99,111,52,48,77,101,115,104,80,114,101,100,105,99,116,105,111,110,83,99,104,101,109,101,80,97,114,97,108,108,101,108,111,103,114,97,109,69,110,99,111,100,101,114,73,105,78,83,95,51,55,80,114,101,100,105,99,116,105,111,110,83,99,104,101,109,101,87,114,97,112,69,110,99,111,100,105,110,103,84,114,97,110,115,102,111,114,109,73,105,105,69,69,78,83,95,50,52,77,101,115,104,80,114,101,100,105,99,116,105,111,110,83,99,104,101,109,101,68,97,116,97,73,78,83,95,50,52,77,101,115,104,65,116,116,114,105,98,117,116,101,67,111,114,110,101,114,84,97,98,108,101,69,69,69,69,69,0,117,115,101,95,98,117,105,108,116,95,105,110,95,97,116,116,114,105,98,117,116,101,95,99,111,109,112,114,101,115,115,105,111,110,0,78,53,100,114,97,99,111,51,51,83,101,113,117,101,110,116,105,97,108,73,110,116,101,103,101,114,65,116,116,114,105,98,117,116,101,69,110,99,111,100,101,114,69,0,112,114,101,100,105,99,116,105,111,110,95,115,99,104,101,109,101,0,78,53,100,114,97,99,111,51,56,83,101,113,117,101,110,116,105,97,108,81,117,97,110,116,105,122,97,116,105,111,110,65,116,116,114,105,98,117,116,101,69,110,99,111,100,101,114,69,0,40,109,97,120,95,113,117,97,110,116,105,122,101,100,95,118,97,108,117,101,32,37,32,50,41,32,61,61,32,40,49,41,0,46,47,115,114,99,47,100,114,97,99,111,47,99,111,109,112,114,101,115,115,105,111,110,47,97,116,116,114,105,98,117,116,101,115,47,112,114,101,100,105,99,116,105,111,110,95,115,99,104,101,109,101,115,47,112,114,101,100,105,99,116,105,111,110,95,115,99,104,101,109,101,95,110,111,114,109,97,108,95,111,99,116,97,104,101,100,114,111,110,95,116,114,97,110,115,102,111,114,109,95,98,97,115,101,46,104,0,115,101,116,95,109,97,120,95,113,117,97,110,116,105,122,101,100,95,118,97,108,117,101,0,40,113,41,32,62,61,32,40,50,41,0,46,47,115,114,99,47,100,114,97,99,111,47,99,111,109,112,114,101,115,115,105,111,110,47,97,116,116,114,105,98,117,116,101,115,47,110,111,114,109,97,108,95,99,111,109,112,114,101,115,115,105,111,110,95,117,116,105,108,115,46,104,0,83,101,116,81,117,97,110,116,105,122,97,116,105,111,110,66,105,116,115,0,40,113,41,32,60,61,32,40,51,48,41,0,102,97,108,115,101,0,46,47,115,114,99,47,100,114,97,99,111,47,99,111,109,112,114,101,115,115,105,111,110,47,97,116,116,114,105,98,117,116,101,115,47,115,101,113,117,101,110,116,105,97,108,95,110,111,114,109,97,108,95,97,116,116,114,105,98,117,116,101,95,101,110,99,111,100,101,114,46,104,0,67,114,101,97,116,101,73,110,116,80,114,101,100,105,99,116,105,111,110,83,99,104,101,109,101,0,40,112,114,101,100,95,118,97,108,115,91,48,93,41,32,60,61,32,40,116,104,105,115,45,62,99,101,110,116,101,114,95,118,97,108,117,101,40,41,32,42,32,50,41,0,46,47,115,114,99,47,100,114,97,99,111,47,99,111,109,112,114,101,115,115,105,111,110,47,97,116,116,114,105,98,117,116,101,115,47,112,114,101,100,105,99,116,105,111,110,95,115,99,104,101,109,101,115,47,112,114,101,100,105,99,116,105,111,110,95,115,99,104,101,109,101,95,110,111,114,109,97,108,95,111,99,116,97,104,101,100,114,111,110,95,99,97,110,111,110,105,99,97,108,105,122,101,100,95,101,110,99,111,100,105,110,103,95,116,114,97,110,115,102,111,114,109,46,104,0,67,111,109,112,117,116,101,67,111,114,114,101,99,116,105,111,110,0,40,112,114,101,100,95,118,97,108,115,91,49,93,41,32,60,61,32,40,116,104,105,115,45,62,99,101,110,116,101,114,95,118,97,108,117,101,40,41,32,42,32,50,41,0,40,111,114,105,103,95,118,97,108,115,91,48,93,41,32,60,61,32,40,116,104,105,115,45,62,99,101,110,116,101,114,95,118,97,108,117,101,40,41,32,42,32,50,41,0,40,111,114,105,103,95,118,97,108,115,91,49,93,41,32,60,61,32,40,116,104,105,115,45,62,99,101,110,116,101,114,95,118,97,108,117,101,40,41,32,42,32,50,41,0,40,48,41,32,60,61,32,40,112,114,101,100,95,118,97,108,115,91,48,93,41,0,40,48,41,32,60,61,32,40,112,114,101,100,95,118,97,108,115,91,49,93,41,0,40,48,41,32,60,61,32,40,111,114,105,103,95,118,97,108,115,91,48,93,41,0,40,48,41,32,60,61,32,40,111,114,105,103,95,118,97,108,115,91,49,93,41,0,40,115,41,32,60,61,32,40,99,101,110,116,101,114,95,118,97,108,117,101,95,41,0,73,115,73,110,68,105,97,109,111,110,100,0,40,116,41,32,60,61,32,40,99,101,110,116,101,114,95,118,97,108,117,101,95,41,0,40,115,41,32,62,61,32,40,45,99,101,110,116,101,114,95,118,97,108,117,101,95,41,0,40,116,41,32,62,61,32,40,45,99,101,110,116,101,114,95,118,97,108,117,101,95,41,0,40,120,41,32,60,61,32,40,116,104,105,115,45,62,99,101,110,116,101,114,95,118,97,108,117,101,40,41,32,42,32,50,41,0,77,97,107,101,80,111,115,105,116,105,118,101,0,40,42,115,41,32,60,61,32,40,99,101,110,116,101,114,95,118,97,108,117,101,95,41,0,73,110,118,101,114,116,68,105,97,109,111,110,100,0,40,42,116,41,32,60,61,32,40,99,101,110,116,101,114,95,118,97,108,117,101,95,41,0,40,42,115,41,32,62,61,32,40,45,99,101,110,116,101,114,95,118,97,108,117,101,95,41,0,40,42,116,41,32,62,61,32,40,45,99,101,110,116,101,114,95,118,97,108,117,101,95,41,0,78,53,100,114,97,99,111,50,56,80,114,101,100,105,99,116,105,111,110,83,99,104,101,109,101,68,101,108,116,97,69,110,99,111,100,101,114,73,105,78,83,95,54,50,80,114,101,100,105,99,116,105,111,110,83,99,104,101,109,101,78,111,114,109,97,108,79,99,116,97,104,101,100,114,111,110,67,97,110,111,110,105,99,97,108,105,122,101,100,69,110,99,111,100,105,110,103,84,114,97,110,115,102,111,114,109,73,105,69,69,69,69,0,78,53,100,114,97,99,111,50,51,80,114,101,100,105,99,116,105,111,110,83,99,104,101,109,101,69,110,99,111,100,101,114,73,105,78,83,95,54,50,80,114,101,100,105,99,116,105,111,110,83,99,104,101,109,101,78,111,114,109,97,108,79,99,116,97,104,101,100,114,111,110,67,97,110,111,110,105,99,97,108,105,122,101,100,69,110,99,111,100,105,110,103,84,114,97,110,115,102,111,114,109,73,105,69,69,69,69,0,46,47,115,114,99,47,100,114,97,99,111,47,99,111,109,112,114,101,115,115,105,111,110,47,97,116,116,114,105,98,117,116,101,115,47,112,114,101,100,105,99,116,105,111,110,95,115,99,104,101,109,101,115,47,109,101,115,104,95,112,114,101,100,105,99,116,105,111,110,95,115,99,104,101,109,101,95,103,101,111,109,101,116,114,105,99,95,110,111,114,109,97,108,95,101,110,99,111,100,101,114,46,104,0,116,104,105,115,45,62,73,115,73,110,105,116,105,97,108,105,122,101,100,40,41,0,67,111,109,112,117,116,101,67,111,114,114,101,99,116,105,111,110,86,97,108,117,101,115,0,40,110,117,109,95,99,111,109,112,111,110,101,110,116,115,41,32,61,61,32,40,50,41,0,40,112,114,101,100,95,110,111,114,109,97,108,95,51,100,46,65,98,115,83,117,109,40,41,41,32,61,61,32,40,111,99,116,97,104,101,100,114,111,110,95,116,111,111,108,95,98,111,120,95,46,99,101,110,116,101,114,95,118,97,108,117,101,40,41,41,0,40,115,116,100,58,58,97,98,115,40,105,110,116,95,118,101,99,91,48,93,41,32,43,32,115,116,100,58,58,97,98,115,40,105,110,116,95,118,101,99,91,49,93,41,32,43,32,115,116,100,58,58,97,98,115,40,105,110,116,95,118,101,99,91,50,93,41,41,32,61,61,32,40,99,101,110,116,101,114,95,118,97,108,117,101,95,41,0,73,110,116,101,103,101,114,86,101,99,116,111,114,84,111,81,117,97,110,116,105,122,101,100,79,99,116,97,104,101,100,114,97,108,67,111,111,114,100,115,0,46,47,115,114,99,47,100,114,97,99,111,47,99,111,109,112,114,101,115,115,105,111,110,47,97,116,116,114,105,98,117,116,101,115,47,112,114,101,100,105,99,116,105,111,110,95,115,99,104,101,109,101,115,47,109,101,115,104,95,112,114,101,100,105,99,116,105,111,110,95,115,99,104,101,109,101,95,103,101,111,109,101,116,114,105,99,95,110,111,114,109,97,108,95,112,114,101,100,105,99,116,111,114,46,104,0,67,111,109,112,117,116,101,80,114,101,100,105,99,116,101,100,86,97,108,117,101,0,71,101,116,80,111,115,105,116,105,111,110,70,111,114,67,111,114,110,101,114,0,40,110,111,114,109,97,108,46,65,98,115,83,117,109,40,41,41,32,60,61,32,40,117,112,112,101,114,95,98,111,117,110,100,41,0,71,101,116,80,111,115,105,116,105,111,110,70,111,114,68,97,116,97,73,100,0,40,105,41,32,61,61,32,40,48,41,0,71,101,116,80,97,114,101,110,116,65,116,116,114,105,98,117,116,101,84,121,112,101,0,78,53,100,114,97,99,111,52,50,77,101,115,104,80,114,101,100,105,99,116,105,111,110,83,99,104,101,109,101,71,101,111,109,101,116,114,105,99,78,111,114,109,97,108,69,110,99,111,100,101,114,73,105,78,83,95,54,50,80,114,101,100,105,99,116,105,111,110,83,99,104,101,109,101,78,111,114,109,97,108,79,99,116,97,104,101,100,114,111,110,67,97,110,111,110,105,99,97,108,105,122,101,100,69,110,99,111,100,105,110,103,84,114,97,110,115,102,111,114,109,73,105,69,69,78,83,95,50,52,77,101,115,104,80,114,101,100,105,99,116,105,111,110,83,99,104,101,109,101,68,97,116,97,73,78,83,95,49,49,67,111,114,110,101,114,84,97,98,108,101,69,69,69,69,69,0,78,53,100,114,97,99,111,50,55,77,101,115,104,80,114,101,100,105,99,116,105,111,110,83,99,104,101,109,101,69,110,99,111,100,101,114,73,105,78,83,95,54,50,80,114,101,100,105,99,116,105,111,110,83,99,104,101,109,101,78,111,114,109,97,108,79,99,116,97,104,101,100,114,111,110,67,97,110,111,110,105,99,97,108,105,122,101,100,69,110,99,111,100,105,110,103,84,114,97,110,115,102,111,114,109,73,105,69,69,78,83,95,50,52,77,101,115,104,80,114,101,100,105,99,116,105,111,110,83,99,104,101,109,101,68,97,116,97,73,78,83,95,49,49,67,111,114,110,101,114,84,97,98,108,101,69,69,69,69,69,0,46,47,115,114,99,47,100,114,97,99,111,47,99,111,109,112,114,101,115,115,105,111,110,47,97,116,116,114,105,98,117,116,101,115,47,112,114,101,100,105,99,116,105,111,110,95,115,99,104,101,109,101,115,47,109,101,115,104,95,112,114,101,100,105,99,116,105,111,110,95,115,99,104,101,109,101,95,116,101,120,95,99,111,111,114,100,115,95,112,111,114,116,97,98,108,101,95,101,110,99,111,100,101,114,46,104,0,78,53,100,114,97,99,111,52,52,77,101,115,104,80,114,101,100,105,99,116,105,111,110,83,99,104,101,109,101,84,101,120,67,111,111,114,100,115,80,111,114,116,97,98,108,101,69,110,99,111,100,101,114,73,105,78,83,95,54,50,80,114,101,100,105,99,116,105,111,110,83,99,104,101,109,101,78,111,114,109,97,108,79,99,116,97,104,101,100,114,111,110,67,97,110,111,110,105,99,97,108,105,122,101,100,69,110,99,111,100,105,110,103,84,114,97,110,115,102,111,114,109,73,105,69,69,78,83,95,50,52,77,101,115,104,80,114,101,100,105,99,116,105,111,110,83,99,104,101,109,101,68,97,116,97,73,78,83,95,49,49,67,111,114,110,101,114,84,97,98,108,101,69,69,69,69,69,0,46,47,115,114,99,47,100,114,97,99,111,47,99,111,109,112,114,101,115,115,105,111,110,47,97,116,116,114,105,98,117,116,101,115,47,112,114,101,100,105,99,116,105,111,110,95,115,99,104,101,109,101,115,47,109,101,115,104,95,112,114,101,100,105,99,116,105,111,110,95,115,99,104,101,109,101,95,116,101,120,95,99,111,111,114,100,115,95,101,110,99,111,100,101,114,46,104,0,78,53,100,114,97,99,111,51,54,77,101,115,104,80,114,101,100,105,99,116,105,111,110,83,99,104,101,109,101,84,101,120,67,111,111,114,100,115,69,110,99,111,100,101,114,73,105,78,83,95,54,50,80,114,101,100,105,99,116,105,111,110,83,99,104,101,109,101,78,111,114,109,97,108,79,99,116,97,104,101,100,114,111,110,67,97,110,111,110,105,99,97,108,105,122,101,100,69,110,99,111,100,105,110,103,84,114,97,110,115,102,111,114,109,73,105,69,69,78,83,95,50,52,77,101,115,104,80,114,101,100,105,99,116,105,111,110,83,99,104,101,109,101,68,97,116,97,73,78,83,95,49,49,67,111,114,110,101,114,84,97,98,108,101,69,69,69,69,69,0,78,53,100,114,97,99,111,53,54,77,101,115,104,80,114,101,100,105,99,116,105,111,110,83,99,104,101,109,101,67,111,110,115,116,114,97,105,110,101,100,77,117,108,116,105,80,97,114,97,108,108,101,108,111,103,114,97,109,69,110,99,111,100,101,114,73,105,78,83,95,54,50,80,114,101,100,105,99,116,105,111,110,83,99,104,101,109,101,78,111,114,109,97,108,79,99,116,97,104,101,100,114,111,110,67,97,110,111,110,105,99,97,108,105,122,101,100,69,110,99,111,100,105,110,103,84,114,97,110,115,102,111,114,109,73,105,69,69,78,83,95,50,52,77,101,115,104,80,114,101,100,105,99,116,105,111,110,83,99,104,101,109,101,68,97,116,97,73,78,83,95,49,49,67,111,114,110,101,114,84,97,98,108,101,69,69,69,69,69,0,78,53,100,114,97,99,111,52,53,77,101,115,104,80,114,101,100,105,99,116,105,111,110,83,99,104,101,109,101,77,117,108,116,105,80,97,114,97,108,108,101,108,111,103,114,97,109,69,110,99,111,100,101,114,73,105,78,83,95,54,50,80,114,101,100,105,99,116,105,111,110,83,99,104,101,109,101,78,111,114,109,97,108,79,99,116,97,104,101,100,114,111,110,67,97,110,111,110,105,99,97,108,105,122,101,100,69,110,99,111,100,105,110,103,84,114,97,110,115,102,111,114,109,73,105,69,69,78,83,95,50,52,77,101,115,104,80,114,101,100,105,99,116,105,111,110,83,99,104,101,109,101,68,97,116,97,73,78,83,95,49,49,67,111,114,110,101,114,84,97,98,108,101,69,69,69,69,69,0,78,53,100,114,97,99,111,52,48,77,101,115,104,80,114,101,100,105,99,116,105,111,110,83,99,104,101,109,101,80,97,114,97,108,108,101,108,111,103,114,97,109,69,110,99,111,100,101,114,73,105,78,83,95,54,50,80,114,101,100,105,99,116,105,111,110,83,99,104,101,109,101,78,111,114,109,97,108,79,99,116,97,104,101,100,114,111,110,67,97,110,111,110,105,99,97,108,105,122,101,100,69,110,99,111,100,105,110,103,84,114,97,110,115,102,111,114,109,73,105,69,69,78,83,95,50,52,77,101,115,104,80,114,101,100,105,99,116,105,111,110,83,99,104,101,109,101,68,97,116,97,73,78,83,95,49,49,67,111,114,110,101,114,84,97,98,108,101,69,69,69,69,69,0,78,53,100,114,97,99,111,52,50,77,101,115,104,80,114,101,100,105,99,116,105,111,110,83,99,104,101,109,101,71,101,111,109,101,116,114,105,99,78,111,114,109,97,108,69,110,99,111,100,101,114,73,105,78,83,95,54,50,80,114,101,100,105,99,116,105,111,110,83,99,104,101,109,101,78,111,114,109,97,108,79,99,116,97,104,101,100,114,111,110,67,97,110,111,110,105,99,97,108,105,122,101,100,69,110,99,111,100,105,110,103,84,114,97,110,115,102,111,114,109,73,105,69,69,78,83,95,50,52,77,101,115,104,80,114,101,100,105,99,116,105,111,110,83,99,104,101,109,101,68,97,116,97,73,78,83,95,50,52,77,101,115,104,65,116,116,114,105,98,117,116,101,67,111,114,110,101,114,84,97,98,108,101,69,69,69,69,69,0,78,53,100,114,97,99,111,50,55,77,101,115,104,80,114,101,100,105,99,116,105,111,110,83,99,104,101,109,101,69,110,99,111,100,101,114,73,105,78,83,95,54,50,80,114,101,100,105,99,116,105,111,110,83,99,104,101,109,101,78,111,114,109,97,108,79,99,116,97,104,101,100,114,111,110,67,97,110,111,110,105,99,97,108,105,122,101,100,69,110,99,111,100,105,110,103,84,114,97,110,115,102,111,114,109,73,105,69,69,78,83,95,50,52,77,101,115,104,80,114,101,100,105,99,116,105,111,110,83,99,104,101,109,101,68,97,116,97,73,78,83,95,50,52,77,101,115,104,65,116,116,114,105,98,117,116,101,67,111,114,110,101,114,84,97,98,108,101,69,69,69,69,69,0,78,53,100,114,97,99,111,52,52,77,101,115,104,80,114,101,100,105,99,116,105,111,110,83,99,104,101,109,101,84,101,120,67,111,111,114,100,115,80,111,114,116,97,98,108,101,69,110,99,111,100,101,114,73,105,78,83,95,54,50,80,114,101,100,105,99,116,105,111,110,83,99,104,101,109,101,78,111,114,109,97,108,79,99,116,97,104,101,100,114,111,110,67,97,110,111,110,105,99,97,108,105,122,101,100,69,110,99,111,100,105,110,103,84,114,97,110,115,102,111,114,109,73,105,69,69,78,83,95,50,52,77,101,115,104,80,114,101,100,105,99,116,105,111,110,83,99,104,101,109,101,68,97,116,97,73,78,83,95,50,52,77,101,115,104,65,116,116,114,105,98,117,116,101,67,111,114,110,101,114,84,97,98,108,101,69,69,69,69,69,0,78,53,100,114,97,99,111,51,54,77,101,115,104,80,114,101,100,105,99,116,105,111,110,83,99,104,101,109,101,84,101,120,67,111,111,114,100,115,69,110,99,111,100,101,114,73,105,78,83,95,54,50,80,114,101,100,105,99,116,105,111,110,83,99,104,101,109,101,78,111,114,109,97,108,79,99,116,97,104,101,100,114,111,110,67,97,110,111,110,105,99,97,108,105,122,101,100,69,110,99,111,100,105,110,103,84,114,97,110,115,102,111,114,109,73,105,69,69,78,83,95,50,52,77,101,115,104,80,114,101,100,105,99,116,105,111,110,83,99,104,101,109,101,68,97,116,97,73,78,83,95,50,52,77,101,115,104,65,116,116,114,105,98,117,116,101,67,111,114,110,101,114,84,97,98,108,101,69,69,69,69,69,0,78,53,100,114,97,99,111,53,54,77,101,115,104,80,114,101,100,105,99,116,105,111,110,83,99,104,101,109,101,67,111,110,115,116,114,97,105,110,101,100,77,117,108,116,105,80,97,114,97,108,108,101,108,111,103,114,97,109,69,110,99,111,100,101,114,73,105,78,83,95,54,50,80,114,101,100,105,99,116,105,111,110,83,99,104,101,109,101,78,111,114,109,97,108,79,99,116,97,104,101,100,114,111,110,67,97,110,111,110,105,99,97,108,105,122,101,100,69,110,99,111,100,105,110,103,84,114,97,110,115,102,111,114,109,73,105,69,69,78,83,95,50,52,77,101,115,104,80,114,101,100,105,99,116,105,111,110,83,99,104,101,109,101,68,97,116,97,73,78,83,95,50,52,77,101,115,104,65,116,116,114,105,98,117,116,101,67,111,114,110,101,114,84,97,98,108,101,69,69,69,69,69,0,78,53,100,114,97,99,111,52,53,77,101,115,104,80,114,101,100,105,99,116,105,111,110,83,99,104,101,109,101,77,117,108,116,105,80,97,114,97,108,108,101,108,111,103,114,97,109,69,110,99,111,100,101,114,73,105,78,83,95,54,50,80,114,101,100,105,99,116,105,111,110,83,99,104,101,109,101,78,111,114,109,97,108,79,99,116,97,104,101,100,114,111,110,67,97,110,111,110,105,99,97,108,105,122,101,100,69,110,99,111,100,105,110,103,84,114,97,110,115,102,111,114,109,73,105,69,69,78,83,95,50,52,77,101,115,104,80,114,101,100,105,99,116,105,111,110,83,99,104,101,109,101,68,97,116,97,73,78,83,95,50,52,77,101,115,104,65,116,116,114,105,98,117,116,101,67,111,114,110,101,114,84,97,98,108,101,69,69,69,69,69,0,78,53,100,114,97,99,111,52,48,77,101,115,104,80,114,101,100,105,99,116,105,111,110,83,99,104,101,109,101,80,97,114,97,108,108,101,108,111,103,114,97,109,69,110,99,111,100,101,114,73,105,78,83,95,54,50,80,114,101,100,105,99,116,105,111,110,83,99,104,101,109,101,78,111,114,109,97,108,79,99,116,97,104,101,100,114,111,110,67,97,110,111,110,105,99,97,108,105,122,101,100,69,110,99,111,100,105,110,103,84,114,97,110,115,102,111,114,109,73,105,69,69,78,83,95,50,52,77,101,115,104,80,114,101,100,105,99,116,105,111,110,83,99,104,101,109,101,68,97,116,97,73,78,83,95,50,52,77,101,115,104,65,116,116,114,105,98,117,116,101,67,111,114,110,101,114,84,97,98,108,101,69,69,69,69,69,0,78,53,100,114,97,99,111,54,50,80,114,101,100,105,99,116,105,111,110,83,99,104,101,109,101,78,111,114,109,97,108,79,99,116,97,104,101,100,114,111,110,67,97,110,111,110,105,99,97,108,105,122,101,100,69,110,99,111,100,105,110,103,84,114,97,110,115,102,111,114,109,73,105,69,69,0,78,53,100,114,97,99,111,53,56,80,114,101,100,105,99,116,105,111,110,83,99,104,101,109,101,78,111,114,109,97,108,79,99,116,97,104,101,100,114,111,110,67,97,110,111,110,105,99,97,108,105,122,101,100,84,114,97,110,115,102,111,114,109,66,97,115,101,73,105,69,69,0,78,53,100,114,97,99,111,52,53,80,114,101,100,105,99,116,105,111,110,83,99,104,101,109,101,78,111,114,109,97,108,79,99,116,97,104,101,100,114,111,110,84,114,97,110,115,102,111,114,109,66,97,115,101,73,105,69,69,0,78,53,100,114,97,99,111,51,50,83,101,113,117,101,110,116,105,97,108,78,111,114,109,97,108,65,116,116,114,105,98,117,116,101,69,110,99,111,100,101,114,69,0,78,53,100,114,97,99,111,51,55,83,101,113,117,101,110,116,105,97,108,65,116,116,114,105,98,117,116,101,69,110,99,111,100,101,114,115,67,111,110,116,114,111,108,108,101,114,69,0,78,53,100,114,97,99,111,49,53,76,105,110,101,97,114,83,101,113,117,101,110,99,101,114,69,0,78,53,100,114,97,99,111,49,53,80,111,105,110,116,115,83,101,113,117,101,110,99,101,114,69,0,78,53,100,114,97,99,111,50,55,80,111,105,110,116,67,108,111,117,100,83,101,113,117,101,110,116,105,97,108,69,110,99,111,100,101,114,69,0,78,53,100,114,97,99,111,50,51,80,111,105,110,116,67,108,111,117,100,75,100,84,114,101,101,69,110,99,111,100,101,114,69,0,40,99,111,109,112,114,101,115,115,105,111,110,95,108,101,118,101,108,41,32,60,61,32,40,54,41,0,115,114,99,47,100,114,97,99,111,47,99,111,109,112,114,101,115,115,105,111,110,47,97,116,116,114,105,98,117,116,101,115,47,107,100,95,116,114,101,101,95,97,116,116,114,105,98,117,116,101,115,95,101,110,99,111,100,101,114,46,99,99,0,69,110,99,111,100,101,68,97,116,97,78,101,101,100,101,100,66,121,80,111,114,116,97,98,108,101,84,114,97,110,115,102,111,114,109,115,0,40,116,114,117,101,41,32,61,61,32,40,40,101,110,100,32,45,32,98,101,103,105,110,41,32,62,32,48,41,0,46,47,115,114,99,47,100,114,97,99,111,47,99,111,109,112,114,101,115,115,105,111,110,47,112,111,105,110,116,95,99,108,111,117,100,47,97,108,103,111,114,105,116,104,109,115,47,100,121,110,97,109,105,99,95,105,110,116,101,103,101,114,95,112,111,105,110,116,115,95,107,100,95,116,114,101,101,95,101,110,99,111,100,101,114,46,104,0,69,110,99,111,100,101,73,110,116,101,114,110,97,108,0,40,116,114,117,101,41,32,61,61,32,40,110,98,105,116,115,32,60,61,32,51,50,41,0,46,47,115,114,99,47,100,114,97,99,111,47,99,111,114,101,47,98,105,116,95,99,111,100,101,114,115,47,100,105,114,101,99,116,95,98,105,116,95,101,110,99,111,100,101,114,46,104,0,69,110,99,111,100,101,76,101,97,115,116,83,105,103,110,105,102,105,99,97,110,116,66,105,116,115,51,50,0,40,116,114,117,101,41,32,61,61,32,40,110,98,105,116,115,32,62,32,48,41,0,40,116,114,117,101,41,32,61,61,32,40,101,110,100,32,45,32,98,101,103,105,110,32,33,61,32,48,41,0,71,101,116,65,120,105,115,0,77,101,116,104,111,100,32,110,111,116,32,115,117,112,112,111,114,116,101,100,46,32,10,0,78,53,100,114,97,99,111,50,51,75,100,84,114,101,101,65,116,116,114,105,98,117,116,101,115,69,110,99,111,100,101,114,69,0,40,99,111,109,112,114,101,115,115,105,111,110,95,108,101,118,101,108,95,41,32,60,61,32,40,54,41,0,115,114,99,47,100,114,97,99,111,47,99,111,109,112,114,101,115,115,105,111,110,47,112,111,105,110,116,95,99,108,111,117,100,47,97,108,103,111,114,105,116,104,109,115,47,102,108,111,97,116,95,112,111,105,110,116,115,95,116,114,101,101,95,101,110,99,111,100,101,114,46,99,99,0,70,108,111,97,116,80,111,105,110,116,115,84,114,101,101,69,110,99,111,100,101,114,0,69,110,99,111,100,101,80,111,105,110,116,67,108,111,117,100,75,100,84,114,101,101,73,110,116,101,114,110,97,108,0,99,111,109,112,114,101,115,115,95,99,111,110,110,101,99,116,105,118,105,116,121,0,78,53,100,114,97,99,111,50,49,77,101,115,104,83,101,113,117,101,110,116,105,97,108,69,110,99,111,100,101,114,69,0,78,53,100,114,97,99,111,50,50,77,101,115,104,69,100,103,101,66,114,101,97,107,101,114,69,110,99,111,100,101,114,69,0,78,53,100,114,97,99,111,50,57,67,111,114,110,101,114,84,97,98,108,101,84,114,97,118,101,114,115,97,108,80,114,111,99,101,115,115,111,114,73,78,83,95,50,52,77,101,115,104,65,116,116,114,105,98,117,116,101,67,111,114,110,101,114,84,97,98,108,101,69,69,69,0,40,48,41,32,60,61,32,40,102,97,99,101,95,105,100,46,118,97,108,117,101,40,41,41,0,46,47,115,114,99,47,100,114,97,99,111,47,109,101,115,104,47,109,101,115,104,46,104,0,102,97,99,101,0,40,102,97,99,101,95,105,100,46,118,97,108,117,101,40,41,41,32,60,32,40,115,116,97,116,105,99,95,99,97,115,116,60,105,110,116,62,40,102,97,99,101,115,95,46,115,105,122,101,40,41,41,41,0,33,105,100,101,110,116,105,116,121,95,109,97,112,112,105,110,103,95,0,46,47,115,114,99,47,100,114,97,99,111,47,97,116,116,114,105,98,117,116,101,115,47,112,111,105,110,116,95,97,116,116,114,105,98,117,116,101,46,104,0,83,101,116,80,111,105,110,116,77,97,112,69,110,116,114,121,0,78,53,100,114,97,99,111,50,50,77,101,115,104,84,114,97,118,101,114,115,97,108,83,101,113,117,101,110,99,101,114,73,78,83,95,50,48,69,100,103,101,66,114,101,97,107,101,114,84,114,97,118,101,114,115,101,114,73,78,83,95,50,57,67,111,114,110,101,114,84,97,98,108,101,84,114,97,118,101,114,115,97,108,80,114,111,99,101,115,115,111,114,73,78,83,95,50,52,77,101,115,104,65,116,116,114,105,98,117,116,101,67,111,114,110,101,114,84,97,98,108,101,69,69,69,78,83,95,51,54,77,101,115,104,65,116,116,114,105,98,117,116,101,73,110,100,105,99,101,115,69,110,99,111,100,105,110,103,79,98,115,101,114,118,101,114,73,83,51,95,69,69,78,83,95,49,57,69,100,103,101,66,114,101,97,107,101,114,79,98,115,101,114,118,101,114,69,69,69,69,69,0,78,53,100,114,97,99,111,50,57,67,111,114,110,101,114,84,97,98,108,101,84,114,97,118,101,114,115,97,108,80,114,111,99,101,115,115,111,114,73,78,83,95,49,49,67,111,114,110,101,114,84,97,98,108,101,69,69,69,0,78,53,100,114,97,99,111,50,50,77,101,115,104,84,114,97,118,101,114,115,97,108,83,101,113,117,101,110,99,101,114,73,78,83,95,50,48,69,100,103,101,66,114,101,97,107,101,114,84,114,97,118,101,114,115,101,114,73,78,83,95,50,57,67,111,114,110,101,114,84,97,98,108,101,84,114,97,118,101,114,115,97,108,80,114,111,99,101,115,115,111,114,73,78,83,95,49,49,67,111,114,110,101,114,84,97,98,108,101,69,69,69,78,83,95,51,54,77,101,115,104,65,116,116,114,105,98,117,116,101,73,110,100,105,99,101,115,69,110,99,111,100,105,110,103,79,98,115,101,114,118,101,114,73,83,51,95,69,69,78,83,95,49,57,69,100,103,101,66,114,101,97,107,101,114,79,98,115,101,114,118,101,114,69,69,69,69,69,0,78,53,100,114,97,99,111,50,50,77,101,115,104,84,114,97,118,101,114,115,97,108,83,101,113,117,101,110,99,101,114,73,78,83,95,50,53,80,114,101,100,105,99,116,105,111,110,68,101,103,114,101,101,84,114,97,118,101,114,115,101,114,73,78,83,95,50,57,67,111,114,110,101,114,84,97,98,108,101,84,114,97,118,101,114,115,97,108,80,114,111,99,101,115,115,111,114,73,78,83,95,49,49,67,111,114,110,101,114,84,97,98,108,101,69,69,69,78,83,95,51,54,77,101,115,104,65,116,116,114,105,98,117,116,101,73,110,100,105,99,101,115,69,110,99,111,100,105,110,103,79,98,115,101,114,118,101,114,73,83,51,95,69,69,69,69,69,69,0,78,53,100,114,97,99,111,50,54,77,101,115,104,69,100,103,101,66,114,101,97,107,101,114,69,110,99,111,100,101,114,73,109,112,108,73,78,83,95,51,49,77,101,115,104,69,100,103,101,66,114,101,97,107,101,114,84,114,97,118,101,114,115,97,108,69,110,99,111,100,101,114,69,69,69,0,78,53,100,114,97,99,111,51,53,77,101,115,104,69,100,103,101,66,114,101,97,107,101,114,69,110,99,111,100,101,114,73,109,112,108,73,110,116,101,114,102,97,99,101,69,0,78,53,100,114,97,99,111,50,54,77,101,115,104,69,100,103,101,66,114,101,97,107,101,114,69,110,99,111,100,101,114,73,109,112,108,73,78,83,95,51,56,77,101,115,104,69,100,103,101,66,114,101,97,107,101,114,84,114,97,118,101,114,115,97,108,86,97,108,101,110,99,101,69,110,99,111,100,101,114,69,69,69,0,40,48,41,32,60,61,32,40,97,116,116,95,105,100,41,0,101,110,99,111,100,105,110,103,95,115,112,101,101,100,0,100,101,99,111,100,105,110,103,95,115,112,101,101,100,0,115,116,97,110,100,97,114,100,95,101,100,103,101,98,114,101,97,107,101,114,0,112,114,101,100,105,99,116,105,118,101,95,101,100,103,101,98,114,101,97,107,101,114,0,73,110,118,97,108,105,100,32,105,110,112,117,116,32,103,101,111,109,101,116,114,121,46,0,101,110,99,111,100,105,110,103,95,109,101,116,104,111,100,0,40,97,116,116,95,105,100,41,32,60,32,40,115,116,97,116,105,99,95,99,97,115,116,60,105,110,116,51,50,95,116,62,40,97,116,116,114,105,98,117,116,101,115,95,46,115,105,122,101,40,41,41,41,0,46,47,115,114,99,47,100,114,97,99,111,47,112,111,105,110,116,95,99,108,111,117,100,47,112,111,105,110,116,95,99,108,111,117,100,46,104,0,97,116,116,114,105,98,117,116,101,0,113,117,97,110,116,105,122,97,116,105,111,110,95,98,105,116,115,0,73,110,118,97,108,105,100,32,101,110,99,111,100,105,110,103,32,109,101,116,104,111,100,46,0,17,0,10,0,17,17,17,0,0,0,0,5,0,0,0,0,0,0,9,0,0,0,0,11,0,0,0,0,0,0,0,0,17,0,15,10,17,17,17,3,10,7,0,1,19,9,11,11,0,0,9,6,11,0,0,11,0,6,17,0,0,0,17,17,17,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,11,0,0,0,0,0,0,0,0,17,0,10,10,17,17,17,0,10,0,0,2,0,9,11,0,0,0,9,0,11,0,0,11,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,12,0,0,0,0,0,0,0,0,0,0,0,12,0,0,0,0,12,0,0,0,0,9,12,0,0,0,0,0,12,0,0,12,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,14,0,0,0,0,0,0,0,0,0,0,0,13,0,0,0,4,13,0,0,0,0,9,14,0,0,0,0,0,14,0,0,14,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,16,0,0,0,0,0,0,0,0,0,0,0,15,0,0,0,0,15,0,0,0,0,9,16,0,0,0,0,0,16,0,0,16,0,0,18,0,0,0,18,18,18,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,18,0,0,0,18,18,18,0,0,0,0,0,0,9,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,11,0,0,0,0,0,0,0,0,0,0,0,10,0,0,0,0,10,0,0,0,0,9,11,0,0,0,0,0,11,0,0,11,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,12,0,0,0,0,0,0,0,0,0,0,0,12,0,0,0,0,12,0,0,0,0,9,12,0,0,0,0,0,12,0,0,12,0,0,45,43,32,32,32,48,88,48,120,0,40,110,117,108,108,41,0,45,48,88,43,48,88,32,48,88,45,48,120,43,48,120,32,48,120,0,105,110,102,0,73,78,70,0,110,97,110,0,78,65,78,0,48,49,50,51,52,53,54,55,56,57,65,66,67,68,69,70,46,0,84,33,34,25,13,1,2,3,17,75,28,12,16,4,11,29,18,30,39,104,110,111,112,113,98,32,5,6,15,19,20,21,26,8,22,7,40,36,23,24,9,10,14,27,31,37,35,131,130,125,38,42,43,60,61,62,63,67,71,74,77,88,89,90,91,92,93,94,95,96,97,99,100,101,102,103,105,106,107,108,114,115,116,121,122,123,124,0,73,108,108,101,103,97,108,32,98,121,116,101,32,115,101,113,117,101,110,99,101,0,68,111,109,97,105,110,32,101,114,114,111,114,0,82,101,115,117,108,116,32,110,111,116,32,114,101,112,114,101,115,101,110,116,97,98,108,101,0,78,111,116,32,97,32,116,116,121,0,80,101,114,109,105,115,115,105,111,110,32,100,101,110,105,101,100,0,79,112,101,114,97,116,105,111,110,32,110,111,116,32,112,101,114,109,105,116,116,101,100,0,78,111,32,115,117,99,104,32,102,105,108,101,32,111,114,32,100,105,114,101,99,116,111,114,121,0,78,111,32,115,117,99,104,32,112,114,111,99,101,115,115,0,70,105,108,101,32,101,120,105,115,116,115,0,86,97,108,117,101,32,116,111,111,32,108,97,114,103,101,32,102,111,114,32,100,97,116,97,32,116,121,112,101,0,78,111,32,115,112,97,99,101,32,108,101,102,116,32,111,110,32,100,101,118,105,99,101,0,79,117,116,32,111,102,32,109,101,109,111,114,121,0,82,101,115,111,117,114,99,101,32,98,117,115,121,0,73,110,116,101,114,114,117,112,116,101,100,32,115,121,115,116,101,109,32,99,97,108,108,0,82,101,115,111,117,114,99,101,32,116,101,109,112,111,114,97,114,105,108,121,32,117,110,97,118,97,105,108,97,98,108,101,0,73,110,118,97,108,105,100,32,115,101,101,107,0,67,114,111,115,115,45,100,101,118,105,99,101,32,108,105,110,107,0,82,101,97,100,45,111,110,108,121,32,102,105,108,101,32,115,121,115,116,101,109,0,68,105,114,101,99,116,111,114,121,32,110,111,116,32,101,109,112,116,121,0,67,111,110,110,101,99,116,105,111,110,32,114,101,115,101,116,32,98,121,32,112,101,101,114,0,79,112,101,114,97,116,105,111,110,32,116,105,109,101,100,32,111,117,116,0,67,111,110,110,101,99,116,105,111,110,32,114,101,102,117,115,101,100,0,72,111,115,116,32,105,115,32,100,111,119,110,0,72,111,115,116,32,105,115,32,117,110,114,101,97,99,104,97,98,108,101,0,65,100,100,114,101,115,115,32,105,110,32,117,115,101,0,66,114,111,107,101,110,32,112,105,112,101,0,73,47,79,32,101,114,114,111,114,0,78,111,32,115,117,99,104,32,100,101,118,105,99,101,32,111,114,32,97,100,100,114,101,115,115,0,66,108,111,99,107,32,100,101,118,105,99,101,32,114,101,113,117,105,114,101,100,0,78,111,32,115,117,99,104,32,100,101,118,105,99,101,0,78,111,116,32,97,32,100,105,114,101,99,116,111,114,121,0,73,115,32,97,32,100,105,114,101,99,116,111,114,121,0,84,101,120,116,32,102,105,108,101,32,98,117,115,121,0,69,120,101,99,32,102,111,114,109,97,116,32,101,114,114,111,114,0,73,110,118,97,108,105,100,32,97,114,103,117,109,101,110,116,0,65,114,103,117,109,101,110,116,32,108,105,115,116,32,116,111,111,32,108,111,110,103,0,83,121,109,98,111,108,105,99,32,108,105,110,107,32,108,111,111,112,0,70,105,108,101,110,97,109,101,32,116,111,111,32,108,111,110,103,0,84,111,111,32,109,97,110,121,32,111,112,101,110,32,102,105,108,101,115,32,105,110,32,115,121,115,116,101,109,0,78,111,32,102,105,108,101,32,100,101,115,99,114,105,112,116,111,114,115,32,97,118,97,105,108,97,98,108,101,0,66,97,100,32,102,105,108,101,32,100,101,115,99,114,105,112,116,111,114,0,78,111,32,99,104,105,108,100,32,112,114,111,99,101,115,115,0,66,97,100,32,97,100,100,114,101,115,115,0,70,105,108,101,32,116,111,111,32,108,97,114,103,101,0,84,111,111,32,109,97,110,121,32,108,105,110,107,115,0,78,111,32,108,111,99,107,115,32,97,118,97,105,108,97,98,108,101,0,82,101,115,111,117,114,99,101,32,100,101,97,100,108,111,99,107,32,119,111,117,108,100,32,111,99,99,117,114,0,83,116,97,116,101,32,110,111,116,32,114,101,99,111,118,101,114,97,98,108,101,0,80,114,101,118,105,111,117,115,32,111,119,110,101,114,32,100,105,101,100,0,79,112,101,114,97,116,105,111,110,32,99,97,110,99,101,108,101,100,0,70,117,110,99,116,105,111,110,32,110,111,116,32,105,109,112,108,101,109,101,110,116,101,100,0,78,111,32,109,101,115,115,97,103,101,32,111,102,32,100,101,115,105,114,101,100,32,116,121,112,101,0,73,100,101,110,116,105,102,105,101,114,32,114,101,109,111,118,101,100,0,68,101,118,105,99,101,32,110,111,116,32,97,32,115,116,114,101,97,109,0,78,111,32,100,97,116,97,32,97,118,97,105,108,97,98,108,101,0,68,101,118,105,99,101,32,116,105,109,101,111,117,116,0,79,117,116,32,111,102,32,115,116,114,101,97,109,115,32,114,101,115,111,117,114,99,101,115,0,76,105,110,107,32,104,97,115,32,98,101,101,110,32,115,101,118,101,114,101,100,0,80,114,111,116,111,99,111,108,32,101,114,114,111,114,0,66,97,100,32,109,101,115,115,97,103,101,0,70,105,108,101,32,100,101,115,99,114,105,112,116,111,114,32,105,110,32,98,97,100,32,115,116,97,116,101,0,78,111,116,32,97,32,115,111,99,107,101,116,0,68,101,115,116,105,110,97,116,105,111,110,32,97,100,100,114,101,115,115,32,114,101,113,117,105,114,101,100,0,77,101,115,115,97,103,101,32,116,111,111,32,108,97,114,103,101,0,80,114,111,116,111,99,111,108,32,119,114,111,110,103,32,116,121,112,101,32,102,111,114,32,115,111,99,107,101,116,0,80,114,111,116,111,99,111,108,32,110,111,116,32,97,118,97,105,108,97,98,108,101,0,80,114,111,116,111,99,111,108,32,110,111,116,32,115,117,112,112,111,114,116,101,100,0,83,111,99,107,101,116,32,116,121,112,101,32,110,111,116,32,115,117,112,112,111,114,116,101,100,0,78,111,116,32,115,117,112,112,111,114,116,101,100,0,80,114,111,116,111,99,111,108,32,102,97,109,105,108,121,32,110,111,116,32,115,117,112,112,111,114,116,101,100,0,65,100,100,114,101,115,115,32,102,97,109,105,108,121,32,110,111,116,32,115,117,112,112,111,114,116,101,100,32,98,121,32,112,114,111,116,111,99,111,108,0,65,100,100,114,101,115,115,32,110,111,116,32,97,118,97,105,108,97,98,108,101,0,78,101,116,119,111,114,107,32,105,115,32,100,111,119,110,0,78,101,116,119,111,114,107,32,117,110,114,101,97,99,104,97,98,108,101,0,67,111,110,110,101,99,116,105,111,110,32,114,101,115,101,116,32,98,121,32,110,101,116,119,111,114,107,0,67,111,110,110,101,99,116,105,111,110,32,97,98,111,114,116,101,100,0,78,111,32,98,117,102,102,101,114,32,115,112,97,99,101,32,97,118,97,105,108,97,98,108,101,0,83,111,99,107,101,116,32,105,115,32,99,111,110,110,101,99,116,101,100,0,83,111,99,107,101,116,32,110,111,116,32,99,111,110,110,101,99,116,101,100,0,67,97,110,110,111,116,32,115,101,110,100,32,97,102,116,101,114,32,115,111,99,107,101,116,32,115,104,117,116,100,111,119,110,0,79,112,101,114,97,116,105,111,110,32,97,108,114,101,97,100,121,32,105,110,32,112,114,111,103,114,101,115,115,0,79,112,101,114,97,116,105,111,110,32,105,110,32,112,114,111,103,114,101,115,115,0,83,116,97,108,101,32,102,105,108,101,32,104,97,110,100,108,101,0,82,101,109,111,116,101,32,73,47,79,32,101,114,114,111,114,0,81,117,111,116,97,32,101,120,99,101,101,100,101,100,0,78,111,32,109,101,100,105,117,109,32,102,111,117,110,100,0,87,114,111,110,103,32,109,101,100,105,117,109,32,116,121,112,101,0,78,111,32,101,114,114,111,114,32,105,110,102,111,114,109,97,116,105,111,110,0,0,33,34,118,101,99,116,111,114,32,108,101,110,103,116,104,95,101,114,114,111,114,34,0,47,117,115,114,47,108,111,99,97,108,47,103,111,111,103,108,101,47,104,111,109,101,47,111,115,116,97,118,97,47,100,101,118,101,47,101,109,115,100,107,95,119,97,115,109,47,101,109,115,100,107,47,101,109,115,99,114,105,112,116,101,110,47,105,110,99,111,109,105,110,103,47,115,121,115,116,101,109,47,105,110,99,108,117,100,101,47,108,105,98,99,120,120,47,118,101,99,116,111,114,0,33,34,118,101,99,116,111,114,32,111,117,116,95,111,102,95,114,97,110,103,101,34,0,95,95,116,104,114,111,119,95,111,117,116,95,111,102,95,114,97,110,103,101,0,33,34,98,97,115,105,99,95,115,116,114,105,110,103,32,108,101,110,103,116,104,95,101,114,114,111,114,34,0,47,117,115,114,47,108,111,99,97,108,47,103,111,111,103,108,101,47,104,111,109,101,47,111,115,116,97,118,97,47,100,101,118,101,47,101,109,115,100,107,95,119,97,115,109,47,101,109,115,100,107,47,101,109,115,99,114,105,112,116,101,110,47,105,110,99,111,109,105,110,103,47,115,121,115,116,101,109,47,105,110],"i8",ALLOC_NONE,Runtime.GLOBAL_BASE+10240);allocate([99,108,117,100,101,47,108,105,98,99,120,120,47,115,116,114,105,110,103,0,95,95,116,104,114,111,119,95,108,101,110,103,116,104,95,101,114,114,111,114,0,116,101,114,109,105,110,97,116,105,110,103,32,119,105,116,104,32,37,115,32,101,120,99,101,112,116,105,111,110,32,111,102,32,116,121,112,101,32,37,115,58,32,37,115,0,116,101,114,109,105,110,97,116,105,110,103,32,119,105,116,104,32,37,115,32,101,120,99,101,112,116,105,111,110,32,111,102,32,116,121,112,101,32,37,115,0,116,101,114,109,105,110,97,116,105,110,103,32,119,105,116,104,32,37,115,32,102,111,114,101,105,103,110,32,101,120,99,101,112,116,105,111,110,0,116,101,114,109,105,110,97,116,105,110,103,0,117,110,99,97,117,103,104,116,0,83,116,57,101,120,99,101,112,116,105,111,110,0,78,49,48,95,95,99,120,120,97,98,105,118,49,49,54,95,95,115,104,105,109,95,116,121,112,101,95,105,110,102,111,69,0,83,116,57,116,121,112,101,95,105,110,102,111,0,78,49,48,95,95,99,120,120,97,98,105,118,49,50,48,95,95,115,105,95,99,108,97,115,115,95,116,121,112,101,95,105,110,102,111,69,0,78,49,48,95,95,99,120,120,97,98,105,118,49,49,55,95,95,99,108,97,115,115,95,116,121,112,101,95,105,110,102,111,69,0,112,116,104,114,101,97,100,95,111,110,99,101,32,102,97,105,108,117,114,101,32,105,110,32,95,95,99,120,97,95,103,101,116,95,103,108,111,98,97,108,115,95,102,97,115,116,40,41,0,99,97,110,110,111,116,32,99,114,101,97,116,101,32,112,116,104,114,101,97,100,32,107,101,121,32,102,111,114,32,95,95,99,120,97,95,103,101,116,95,103,108,111,98,97,108,115,40,41,0,99,97,110,110,111,116,32,122,101,114,111,32,111,117,116,32,116,104,114,101,97,100,32,118,97,108,117,101,32,102,111,114,32,95,95,99,120,97,95,103,101,116,95,103,108,111,98,97,108,115,40,41,0,116,101,114,109,105,110,97,116,101,95,104,97,110,100,108,101,114,32,117,110,101,120,112,101,99,116,101,100,108,121,32,114,101,116,117,114,110,101,100,0,115,116,100,58,58,98,97,100,95,97,108,108,111,99,0,83,116,57,98,97,100,95,97,108,108,111,99,0,78,49,48,95,95,99,120,120,97,98,105,118,49,49,57,95,95,112,111,105,110,116,101,114,95,116,121,112,101,95,105,110,102,111,69,0,78,49,48,95,95,99,120,120,97,98,105,118,49,49,55,95,95,112,98,97,115,101,95,116,121,112,101,95,105,110,102,111,69,0],"i8",ALLOC_NONE,Runtime.GLOBAL_BASE+20480);var tempDoublePtr=STATICTOP;STATICTOP+=16;Module["_bitshift64Ashr"]=_bitshift64Ashr;function ___cxa_pure_virtual(){ABORT=true;throw"Pure virtual function called!"}Module["_i64Subtract"]=_i64Subtract;Module["_i64Add"]=_i64Add;function __ZSt18uncaught_exceptionv(){return!!__ZSt18uncaught_exceptionv.uncaught_exception}var EXCEPTIONS={last:0,caught:[],infos:{},deAdjust:(function(adjusted){if(!adjusted||EXCEPTIONS.infos[adjusted])return adjusted;for(var ptr in EXCEPTIONS.infos){var info=EXCEPTIONS.infos[ptr];if(info.adjusted===adjusted){return ptr}}return adjusted}),addRef:(function(ptr){if(!ptr)return;var info=EXCEPTIONS.infos[ptr];info.refcount++}),decRef:(function(ptr){if(!ptr)return;var info=EXCEPTIONS.infos[ptr];assert(info.refcount>0);info.refcount--;if(info.refcount===0&&!info.rethrown){if(info.destructor){Module["dynCall_vi"](info.destructor,ptr)}delete EXCEPTIONS.infos[ptr];___cxa_free_exception(ptr)}}),clearRef:(function(ptr){if(!ptr)return;var info=EXCEPTIONS.infos[ptr];info.refcount=0})};function ___resumeException(ptr){if(!EXCEPTIONS.last){EXCEPTIONS.last=ptr}throw ptr+" - Exception catching is disabled, this exception cannot be caught. Compile with -s DISABLE_EXCEPTION_CATCHING=0 or DISABLE_EXCEPTION_CATCHING=2 to catch."}function ___cxa_find_matching_catch(){var thrown=EXCEPTIONS.last;if(!thrown){return(Runtime.setTempRet0(0),0)|0}var info=EXCEPTIONS.infos[thrown];var throwntype=info.type;if(!throwntype){return(Runtime.setTempRet0(0),thrown)|0}var typeArray=Array.prototype.slice.call(arguments);var pointer=Module["___cxa_is_pointer_type"](throwntype);if(!___cxa_find_matching_catch.buffer)___cxa_find_matching_catch.buffer=_malloc(4);HEAP32[___cxa_find_matching_catch.buffer>>2]=thrown;thrown=___cxa_find_matching_catch.buffer;for(var i=0;i>2];info.adjusted=thrown;return(Runtime.setTempRet0(typeArray[i]),thrown)|0}}thrown=HEAP32[thrown>>2];return(Runtime.setTempRet0(throwntype),thrown)|0}function ___cxa_throw(ptr,type,destructor){EXCEPTIONS.infos[ptr]={ptr:ptr,adjusted:ptr,type:type,destructor:destructor,refcount:0,caught:false,rethrown:false};EXCEPTIONS.last=ptr;if(!("uncaught_exception"in __ZSt18uncaught_exceptionv)){__ZSt18uncaught_exceptionv.uncaught_exception=1}else{__ZSt18uncaught_exceptionv.uncaught_exception++}throw ptr+" - Exception catching is disabled, this exception cannot be caught. Compile with -s DISABLE_EXCEPTION_CATCHING=0 or DISABLE_EXCEPTION_CATCHING=2 to catch."}Module["_memset"]=_memset;Module["_bitshift64Lshr"]=_bitshift64Lshr;Module["_bitshift64Shl"]=_bitshift64Shl;function _abort(){Module["abort"]()}function ___cxa_begin_catch(ptr){var info=EXCEPTIONS.infos[ptr];if(info&&!info.caught){info.caught=true;__ZSt18uncaught_exceptionv.uncaught_exception--}if(info)info.rethrown=false;EXCEPTIONS.caught.push(ptr);EXCEPTIONS.addRef(EXCEPTIONS.deAdjust(ptr));return ptr}function _pthread_once(ptr,func){if(!_pthread_once.seen)_pthread_once.seen={};if(ptr in _pthread_once.seen)return;Module["dynCall_v"](func);_pthread_once.seen[ptr]=1}var cttz_i8=allocate([8,0,1,0,2,0,1,0,3,0,1,0,2,0,1,0,4,0,1,0,2,0,1,0,3,0,1,0,2,0,1,0,5,0,1,0,2,0,1,0,3,0,1,0,2,0,1,0,4,0,1,0,2,0,1,0,3,0,1,0,2,0,1,0,6,0,1,0,2,0,1,0,3,0,1,0,2,0,1,0,4,0,1,0,2,0,1,0,3,0,1,0,2,0,1,0,5,0,1,0,2,0,1,0,3,0,1,0,2,0,1,0,4,0,1,0,2,0,1,0,3,0,1,0,2,0,1,0,7,0,1,0,2,0,1,0,3,0,1,0,2,0,1,0,4,0,1,0,2,0,1,0,3,0,1,0,2,0,1,0,5,0,1,0,2,0,1,0,3,0,1,0,2,0,1,0,4,0,1,0,2,0,1,0,3,0,1,0,2,0,1,0,6,0,1,0,2,0,1,0,3,0,1,0,2,0,1,0,4,0,1,0,2,0,1,0,3,0,1,0,2,0,1,0,5,0,1,0,2,0,1,0,3,0,1,0,2,0,1,0,4,0,1,0,2,0,1,0,3,0,1,0,2,0,1,0],"i8",ALLOC_STATIC);Module["_llvm_cttz_i32"]=_llvm_cttz_i32;Module["___udivmoddi4"]=___udivmoddi4;Module["___divdi3"]=___divdi3;function _emscripten_memcpy_big(dest,src,num){HEAPU8.set(HEAPU8.subarray(src,src+num),dest);return dest}Module["_memcpy"]=_memcpy;var SYSCALLS={varargs:0,get:(function(varargs){SYSCALLS.varargs+=4;var ret=HEAP32[SYSCALLS.varargs-4>>2];return ret}),getStr:(function(){var ret=Pointer_stringify(SYSCALLS.get());return ret}),get64:(function(){var low=SYSCALLS.get(),high=SYSCALLS.get();if(low>=0)assert(high===0);else assert(high===-1);return low}),getZero:(function(){assert(SYSCALLS.get()===0)})};function ___syscall6(which,varargs){SYSCALLS.varargs=varargs;try{var stream=SYSCALLS.getStreamFromFD();FS.close(stream);return 0}catch(e){if(typeof FS==="undefined"||!(e instanceof FS.ErrnoError))abort(e);return-e.errno}}Module["___udivdi3"]=___udivdi3;var PTHREAD_SPECIFIC={};function _pthread_getspecific(key){return PTHREAD_SPECIFIC[key]||0}Module["___muldsi3"]=___muldsi3;Module["___muldi3"]=___muldi3;function ___assert_fail(condition,filename,line,func){ABORT=true;throw"Assertion failed: "+Pointer_stringify(condition)+", at: "+[filename?Pointer_stringify(filename):"unknown filename",line,func?Pointer_stringify(func):"unknown function"]+" at "+stackTrace()}function ___setErrNo(value){if(Module["___errno_location"])HEAP32[Module["___errno_location"]()>>2]=value;return value}Module["_sbrk"]=_sbrk;Module["_memmove"]=_memmove;var PTHREAD_SPECIFIC_NEXT_KEY=1;var ERRNO_CODES={EPERM:1,ENOENT:2,ESRCH:3,EINTR:4,EIO:5,ENXIO:6,E2BIG:7,ENOEXEC:8,EBADF:9,ECHILD:10,EAGAIN:11,EWOULDBLOCK:11,ENOMEM:12,EACCES:13,EFAULT:14,ENOTBLK:15,EBUSY:16,EEXIST:17,EXDEV:18,ENODEV:19,ENOTDIR:20,EISDIR:21,EINVAL:22,ENFILE:23,EMFILE:24,ENOTTY:25,ETXTBSY:26,EFBIG:27,ENOSPC:28,ESPIPE:29,EROFS:30,EMLINK:31,EPIPE:32,EDOM:33,ERANGE:34,ENOMSG:42,EIDRM:43,ECHRNG:44,EL2NSYNC:45,EL3HLT:46,EL3RST:47,ELNRNG:48,EUNATCH:49,ENOCSI:50,EL2HLT:51,EDEADLK:35,ENOLCK:37,EBADE:52,EBADR:53,EXFULL:54,ENOANO:55,EBADRQC:56,EBADSLT:57,EDEADLOCK:35,EBFONT:59,ENOSTR:60,ENODATA:61,ETIME:62,ENOSR:63,ENONET:64,ENOPKG:65,EREMOTE:66,ENOLINK:67,EADV:68,ESRMNT:69,ECOMM:70,EPROTO:71,EMULTIHOP:72,EDOTDOT:73,EBADMSG:74,ENOTUNIQ:76,EBADFD:77,EREMCHG:78,ELIBACC:79,ELIBBAD:80,ELIBSCN:81,ELIBMAX:82,ELIBEXEC:83,ENOSYS:38,ENOTEMPTY:39,ENAMETOOLONG:36,ELOOP:40,EOPNOTSUPP:95,EPFNOSUPPORT:96,ECONNRESET:104,ENOBUFS:105,EAFNOSUPPORT:97,EPROTOTYPE:91,ENOTSOCK:88,ENOPROTOOPT:92,ESHUTDOWN:108,ECONNREFUSED:111,EADDRINUSE:98,ECONNABORTED:103,ENETUNREACH:101,ENETDOWN:100,ETIMEDOUT:110,EHOSTDOWN:112,EHOSTUNREACH:113,EINPROGRESS:115,EALREADY:114,EDESTADDRREQ:89,EMSGSIZE:90,EPROTONOSUPPORT:93,ESOCKTNOSUPPORT:94,EADDRNOTAVAIL:99,ENETRESET:102,EISCONN:106,ENOTCONN:107,ETOOMANYREFS:109,EUSERS:87,EDQUOT:122,ESTALE:116,ENOTSUP:95,ENOMEDIUM:123,EILSEQ:84,EOVERFLOW:75,ECANCELED:125,ENOTRECOVERABLE:131,EOWNERDEAD:130,ESTRPIPE:86};function _pthread_key_create(key,destructor){if(key==0){return ERRNO_CODES.EINVAL}HEAP32[key>>2]=PTHREAD_SPECIFIC_NEXT_KEY;PTHREAD_SPECIFIC[PTHREAD_SPECIFIC_NEXT_KEY]=0;PTHREAD_SPECIFIC_NEXT_KEY++;return 0}function ___gxx_personality_v0(){}Module["___uremdi3"]=___uremdi3;Module["_llvm_bswap_i32"]=_llvm_bswap_i32;function ___syscall146(which,varargs){SYSCALLS.varargs=varargs;try{var stream=SYSCALLS.get(),iov=SYSCALLS.get(),iovcnt=SYSCALLS.get();var ret=0;if(!___syscall146.buffer){___syscall146.buffers=[null,[],[]];___syscall146.printChar=(function(stream,curr){var buffer=___syscall146.buffers[stream];assert(buffer);if(curr===0||curr===10){(stream===1?Module["print"]:Module["printErr"])(UTF8ArrayToString(buffer,0));buffer.length=0}else{buffer.push(curr)}})}for(var i=0;i>2];var len=HEAP32[iov+(i*8+4)>>2];for(var j=0;j>2]=stream.position;if(stream.getdents&&offset===0&&whence===0)stream.getdents=null;return 0}catch(e){if(typeof FS==="undefined"||!(e instanceof FS.ErrnoError))abort(e);return-e.errno}}function ___cxa_allocate_exception(size){return _malloc(size)}__ATEXIT__.push((function(){var fflush=Module["_fflush"];if(fflush)fflush(0);var printChar=___syscall146.printChar;if(!printChar)return;var buffers=___syscall146.buffers;if(buffers[1].length)printChar(1,10);if(buffers[2].length)printChar(2,10)}));DYNAMICTOP_PTR=allocate(1,"i32",ALLOC_STATIC);STACK_BASE=STACKTOP=Runtime.alignMemory(STATICTOP);STACK_MAX=STACK_BASE+TOTAL_STACK;DYNAMIC_BASE=Runtime.alignMemory(STACK_MAX);HEAP32[DYNAMICTOP_PTR>>2]=DYNAMIC_BASE;staticSealed=true;function invoke_iiii(index,a1,a2,a3){try{return Module["dynCall_iiii"](index,a1,a2,a3)}catch(e){if(typeof e!=="number"&&e!=="longjmp")throw e;Module["setThrew"](1,0)}}function invoke_viiiii(index,a1,a2,a3,a4,a5){try{Module["dynCall_viiiii"](index,a1,a2,a3,a4,a5)}catch(e){if(typeof e!=="number"&&e!=="longjmp")throw e;Module["setThrew"](1,0)}}function invoke_vi(index,a1){try{Module["dynCall_vi"](index,a1)}catch(e){if(typeof e!=="number"&&e!=="longjmp")throw e;Module["setThrew"](1,0)}}function invoke_vii(index,a1,a2){try{Module["dynCall_vii"](index,a1,a2)}catch(e){if(typeof e!=="number"&&e!=="longjmp")throw e;Module["setThrew"](1,0)}}function invoke_iiiiiii(index,a1,a2,a3,a4,a5,a6){try{return Module["dynCall_iiiiiii"](index,a1,a2,a3,a4,a5,a6)}catch(e){if(typeof e!=="number"&&e!=="longjmp")throw e;Module["setThrew"](1,0)}}function invoke_ii(index,a1){try{return Module["dynCall_ii"](index,a1)}catch(e){if(typeof e!=="number"&&e!=="longjmp")throw e;Module["setThrew"](1,0)}}function invoke_viii(index,a1,a2,a3){try{Module["dynCall_viii"](index,a1,a2,a3)}catch(e){if(typeof e!=="number"&&e!=="longjmp")throw e;Module["setThrew"](1,0)}}function invoke_v(index){try{Module["dynCall_v"](index)}catch(e){if(typeof e!=="number"&&e!=="longjmp")throw e;Module["setThrew"](1,0)}}function invoke_viiiiii(index,a1,a2,a3,a4,a5,a6){try{Module["dynCall_viiiiii"](index,a1,a2,a3,a4,a5,a6)}catch(e){if(typeof e!=="number"&&e!=="longjmp")throw e;Module["setThrew"](1,0)}}function invoke_iii(index,a1,a2){try{return Module["dynCall_iii"](index,a1,a2)}catch(e){if(typeof e!=="number"&&e!=="longjmp")throw e;Module["setThrew"](1,0)}}function invoke_viiii(index,a1,a2,a3,a4){try{Module["dynCall_viiii"](index,a1,a2,a3,a4)}catch(e){if(typeof e!=="number"&&e!=="longjmp")throw e;Module["setThrew"](1,0)}}Module.asmGlobalArg={"Math":Math,"Int8Array":Int8Array,"Int16Array":Int16Array,"Int32Array":Int32Array,"Uint8Array":Uint8Array,"Uint16Array":Uint16Array,"Uint32Array":Uint32Array,"Float32Array":Float32Array,"Float64Array":Float64Array,"NaN":NaN,"Infinity":Infinity,"byteLength":byteLength};Module.asmLibraryArg={"abort":abort,"assert":assert,"enlargeMemory":enlargeMemory,"getTotalMemory":getTotalMemory,"abortOnCannotGrowMemory":abortOnCannotGrowMemory,"invoke_iiii":invoke_iiii,"invoke_viiiii":invoke_viiiii,"invoke_vi":invoke_vi,"invoke_vii":invoke_vii,"invoke_iiiiiii":invoke_iiiiiii,"invoke_ii":invoke_ii,"invoke_viii":invoke_viii,"invoke_v":invoke_v,"invoke_viiiiii":invoke_viiiiii,"invoke_iii":invoke_iii,"invoke_viiii":invoke_viiii,"_pthread_getspecific":_pthread_getspecific,"_pthread_setspecific":_pthread_setspecific,"___cxa_throw":___cxa_throw,"_pthread_key_create":_pthread_key_create,"___syscall6":___syscall6,"___setErrNo":___setErrNo,"_abort":_abort,"___cxa_begin_catch":___cxa_begin_catch,"___syscall146":___syscall146,"_pthread_once":_pthread_once,"_emscripten_memcpy_big":_emscripten_memcpy_big,"___gxx_personality_v0":___gxx_personality_v0,"___syscall140":___syscall140,"___resumeException":___resumeException,"___cxa_find_matching_catch":___cxa_find_matching_catch,"___assert_fail":___assert_fail,"___cxa_pure_virtual":___cxa_pure_virtual,"___cxa_allocate_exception":___cxa_allocate_exception,"__ZSt18uncaught_exceptionv":__ZSt18uncaught_exceptionv,"DYNAMICTOP_PTR":DYNAMICTOP_PTR,"tempDoublePtr":tempDoublePtr,"ABORT":ABORT,"STACKTOP":STACKTOP,"STACK_MAX":STACK_MAX,"cttz_i8":cttz_i8};// EMSCRIPTEN_START_ASM +var asm=(function(global,env,buffer) { +"almost asm";var a=global.Int8Array;var b=new a(buffer);var c=global.Int16Array;var d=new c(buffer);var e=global.Int32Array;var f=new e(buffer);var g=global.Uint8Array;var h=new g(buffer);var i=global.Uint16Array;var j=new i(buffer);var k=global.Uint32Array;var l=new k(buffer);var m=global.Float32Array;var n=new m(buffer);var o=global.Float64Array;var p=new o(buffer);var q=global.byteLength;var r=env.DYNAMICTOP_PTR|0;var s=env.tempDoublePtr|0;var t=env.ABORT|0;var u=env.STACKTOP|0;var v=env.STACK_MAX|0;var w=env.cttz_i8|0;var x=0;var y=0;var z=0;var A=0;var B=global.NaN,C=global.Infinity;var D=0,E=0,F=0,G=0,H=0.0;var I=0;var J=global.Math.floor;var K=global.Math.abs;var L=global.Math.sqrt;var M=global.Math.pow;var N=global.Math.cos;var O=global.Math.sin;var P=global.Math.tan;var Q=global.Math.acos;var R=global.Math.asin;var S=global.Math.atan;var T=global.Math.atan2;var U=global.Math.exp;var V=global.Math.log;var W=global.Math.ceil;var X=global.Math.imul;var Y=global.Math.min;var Z=global.Math.max;var _=global.Math.clz32;var $=global.Math.fround;var aa=env.abort;var ba=env.assert;var ca=env.enlargeMemory;var da=env.getTotalMemory;var ea=env.abortOnCannotGrowMemory;var fa=env.invoke_iiii;var ga=env.invoke_viiiii;var ha=env.invoke_vi;var ia=env.invoke_vii;var ja=env.invoke_iiiiiii;var ka=env.invoke_ii;var la=env.invoke_viii;var ma=env.invoke_v;var na=env.invoke_viiiiii;var oa=env.invoke_iii;var pa=env.invoke_viiii;var qa=env._pthread_getspecific;var ra=env._pthread_setspecific;var sa=env.___cxa_throw;var ta=env._pthread_key_create;var ua=env.___syscall6;var va=env.___setErrNo;var wa=env._abort;var xa=env.___cxa_begin_catch;var ya=env.___syscall146;var za=env._pthread_once;var Aa=env._emscripten_memcpy_big;var Ba=env.___gxx_personality_v0;var Ca=env.___syscall140;var Da=env.___resumeException;var Ea=env.___cxa_find_matching_catch;var Fa=env.___assert_fail;var Ga=env.___cxa_pure_virtual;var Ha=env.___cxa_allocate_exception;var Ia=env.__ZSt18uncaught_exceptionv;var Ja=$(0);const Ka=$(0);function La(newBuffer){if(q(newBuffer)&16777215||q(newBuffer)<=16777215||q(newBuffer)>2147483648)return false;b=new a(newBuffer);d=new c(newBuffer);f=new e(newBuffer);h=new g(newBuffer);j=new i(newBuffer);l=new k(newBuffer);n=new m(newBuffer);p=new o(newBuffer);buffer=newBuffer;return true} +// EMSCRIPTEN_START_FUNCS +function Nc(a,c,d,e){a=a|0;c=c|0;d=d|0;e=e|0;var g=0,h=0,i=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,v=0;t=u;u=u+48|0;o=t+32|0;n=t+28|0;r=t+4|0;p=t;l=t+16|0;q=t+36|0;if((c|0)<0){s=0;u=t;return s|0}if(!c){s=1;u=t;return s|0}g=(d|0)>1;m=g?d:1;f[r>>2]=0;s=r+4|0;f[s>>2]=0;f[r+8>>2]=0;j=r+8|0;if(c>>>0>1073741823){t=Ha(4)|0;qq(t);sa(t|0,1040,102)}k=Fn(c<<2)|0;i=k;f[r>>2]=i;f[s>>2]=i;f[j>>2]=k+(c<<2);f[p>>2]=0;a:do if(g){h=0;do{d=1;g=f[a+(h<<2)>>2]|0;do{k=f[a+(d+h<<2)>>2]|0;g=g>>>0>>0?k:g;d=d+1|0}while((d|0)!=(m|0));d=(_(g|0)|0)^31;if(g>>>0>(f[p>>2]|0)>>>0)f[p>>2]=g;g=(g|0)==0?1:d+1|0;f[o>>2]=g;d=f[s>>2]|0;if(d>>>0<(f[j>>2]|0)>>>0){f[d>>2]=g;f[s>>2]=d+4}else Bj(r,o);h=h+m|0}while((h|0)<(c|0))}else{i=0;d=0;while(1){g=f[a+(d<<2)>>2]|0;h=(_(g|0)|0)^31;if(g>>>0>i>>>0)f[p>>2]=g;h=(g|0)==0?1:h+1|0;f[o>>2]=h;g=f[s>>2]|0;if(g>>>0<(f[j>>2]|0)>>>0){f[g>>2]=h;f[s>>2]=g+4}else Bj(r,o);d=d+m|0;if((d|0)>=(c|0))break a;i=f[p>>2]|0}}while(0);rk(l,r);k=l+4|0;g=f[k>>2]|0;h=f[l>>2]|0;j=h;i=g-h>>2;if((g|0)==(h|0)){g=0;d=0}else{g=0;d=0;h=0;do{g=Do(f[j+(h<<2)>>2]|0,0,g|0,d|0)|0;d=I;h=h+1|0}while(h>>>0>>0)}v=kh(j,i,32,o)|0;j=I;i=f[o>>2]<<3;i=Zn(i|0,((i|0)<0)<<31>>31|0,1)|0;h=I;d=En(g|0,d|0,m|0,0)|0;d=Do(v|0,j|0,d|0,I|0)|0;h=Do(d|0,I|0,i|0,h|0)|0;i=I;d=f[l>>2]|0;if(d|0){g=f[k>>2]|0;if((g|0)!=(d|0))f[k>>2]=g+(~((g+-4-d|0)>>>2)<<2);Lq(d)}v=f[p>>2]|0;k=kh(a,c,v,o)|0;j=f[o>>2]|0;l=((v-j|0)/64|0)+j<<3;j=j<<3;k=Do(j|0,((j|0)<0)<<31>>31|0,k|0,I|0)|0;l=Do(k|0,I|0,l|0,((l|0)<0)<<31>>31|0)|0;k=I;if((i|0)<(k|0)|(i|0)==(k|0)&h>>>0>>0|((_((v>>>0>1?v:1)|0)|0)^30)>>>0>17){b[q>>0]=0;v=e+16|0;p=f[v+4>>2]|0;if(!((p|0)>0|(p|0)==0&(f[v>>2]|0)>>>0>0)){f[n>>2]=f[e+4>>2];f[o>>2]=f[n>>2];vf(e,o,q,q+1|0)|0}h=Gc(a,c,m,r,e)|0}else{b[q>>0]=1;v=e+16|0;m=f[v+4>>2]|0;if(!((m|0)>0|(m|0)==0&(f[v>>2]|0)>>>0>0)){f[n>>2]=f[e+4>>2];f[o>>2]=f[n>>2];vf(e,o,q,q+1|0)|0}h=kd(a,c,p,e)|0}d=f[r>>2]|0;if(d|0){g=f[s>>2]|0;if((g|0)!=(d|0))f[s>>2]=g+(~((g+-4-d|0)>>>2)<<2);Lq(d)}v=h;u=t;return v|0}function Oc(a,b){a=a|0;b=b|0;var c=0,d=0,e=0,g=0,h=0,i=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,v=0,w=0;w=u;u=u+16|0;v=w+8|0;l=w+4|0;p=w;q=a+124|0;f[q>>2]=(f[q>>2]|0)+1;q=a+84|0;m=a+120|0;j=f[m>>2]|0;c=j+1|0;do if((j|0)>=0){c=((c|0)%3|0|0)==0?j+-2|0:c;if(!((j>>>0)%3|0)){h=j+2|0;break}else{h=j+-1|0;break}}else{c=j;h=j}while(0);r=a+100|0;o=a+88|0;e=f[o>>2]|0;i=e+(c<<2)|0;g=f[r>>2]|0;d=g+(f[i>>2]<<2)|0;t=f[d>>2]|0;switch(b|0){case 1:case 0:{f[d>>2]=t+-1;j=g+(f[e+(h<<2)>>2]<<2)|0;f[j>>2]=(f[j>>2]|0)+-1;if((b|0)==1){if((h|0)>=0?(k=f[(f[(f[q>>2]|0)+12>>2]|0)+(h<<2)>>2]|0,(k|0)>-1):0){g=a+64|0;e=k;d=1;do{k=f[g>>2]|0;j=f[(f[k>>2]|0)+36>>2]|0;f[l>>2]=(e>>>0)/3|0;f[v>>2]=f[l>>2];if(Va[j&127](k,v)|0)break;k=e+1|0;e=((k|0)%3|0|0)==0?e+-2|0:k;if((e|0)<0){s=12;break}e=f[(f[(f[q>>2]|0)+12>>2]|0)+(e<<2)>>2]|0;d=d+1|0}while((e|0)>-1);if((s|0)==12)d=d+1|0;g=f[r>>2]|0;e=f[o>>2]|0}else d=1;f[g+(f[e+(f[m>>2]<<2)>>2]<<2)>>2]=d;h=a+104|0;d=f[h>>2]|0;g=d-g>>2;if((c|0)>=0?(n=f[(f[(f[q>>2]|0)+12>>2]|0)+(c<<2)>>2]|0,(n|0)>-1):0){e=a+64|0;d=n;c=1;do{n=f[e>>2]|0;m=f[(f[n>>2]|0)+36>>2]|0;f[p>>2]=(d>>>0)/3|0;f[v>>2]=f[p>>2];if(Va[m&127](n,v)|0)break;n=d+1|0;f[(f[o>>2]|0)+((((n|0)%3|0|0)==0?d+-2|0:n)<<2)>>2]=g;d=(((d>>>0)%3|0|0)==0?2:-1)+d|0;if((d|0)<0){s=20;break}d=f[(f[(f[q>>2]|0)+12>>2]|0)+(d<<2)>>2]|0;c=c+1|0}while((d|0)>-1);if((s|0)==20)c=c+1|0;d=f[h>>2]|0}else c=1;f[v>>2]=c;if(d>>>0<(f[a+108>>2]|0)>>>0){f[d>>2]=c;f[h>>2]=d+4}else Bj(r,v);s=a+116|0;f[s>>2]=(f[s>>2]|0)+1}break}case 5:{s=g+(f[e+(j<<2)>>2]<<2)|0;f[s>>2]=(f[s>>2]|0)+-1;s=g+(f[i>>2]<<2)|0;f[s>>2]=(f[s>>2]|0)+-1;s=g+(f[e+(h<<2)>>2]<<2)|0;f[s>>2]=(f[s>>2]|0)+-2;break}case 3:{s=g+(f[e+(j<<2)>>2]<<2)|0;f[s>>2]=(f[s>>2]|0)+-1;s=g+(f[i>>2]<<2)|0;f[s>>2]=(f[s>>2]|0)+-2;s=g+(f[e+(h<<2)>>2]<<2)|0;f[s>>2]=(f[s>>2]|0)+-1;break}case 7:{s=g+(f[e+(j<<2)>>2]<<2)|0;f[s>>2]=(f[s>>2]|0)+-2;s=g+(f[i>>2]<<2)|0;f[s>>2]=(f[s>>2]|0)+-2;s=g+(f[e+(h<<2)>>2]<<2)|0;f[s>>2]=(f[s>>2]|0)+-2;break}default:{}}i=a+112|0;e=f[i>>2]|0;if((e|0)==-1){f[i>>2]=b;u=w;return}d=f[a+128>>2]|0;if((t|0)<(d|0))c=d;else{c=f[a+132>>2]|0;c=(t|0)>(c|0)?c:t}h=c-d|0;g=f[a+140>>2]|0;c=f[5940+(e<<2)>>2]|0;f[v>>2]=c;e=g+(h*12|0)+4|0;d=f[e>>2]|0;if(d>>>0<(f[g+(h*12|0)+8>>2]|0)>>>0){f[d>>2]=c;f[e>>2]=d+4}else Bj(g+(h*12|0)|0,v);f[i>>2]=b;u=w;return}function Pc(a,b,c,d,e,g,h){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;g=g|0;h=h|0;switch(c|0){case 1:{b=Fn(44)|0;f[b+4>>2]=d;d=b+12|0;e=e+4|0;f[d>>2]=f[e>>2];f[d+4>>2]=f[e+4>>2];f[d+8>>2]=f[e+8>>2];f[d+12>>2]=f[e+12>>2];f[b+8>>2]=4536;e=b+28|0;f[e>>2]=f[g>>2];f[e+4>>2]=f[g+4>>2];f[e+8>>2]=f[g+8>>2];f[e+12>>2]=f[g+12>>2];f[b>>2]=4948;e=b;f[a>>2]=e;return}case 2:{b=Fn(44)|0;f[b+4>>2]=d;d=b+12|0;e=e+4|0;f[d>>2]=f[e>>2];f[d+4>>2]=f[e+4>>2];f[d+8>>2]=f[e+8>>2];f[d+12>>2]=f[e+12>>2];f[b+8>>2]=4536;e=b+28|0;f[e>>2]=f[g>>2];f[e+4>>2]=f[g+4>>2];f[e+8>>2]=f[g+8>>2];f[e+12>>2]=f[g+12>>2];f[b>>2]=5004;e=b;f[a>>2]=e;return}case 4:{b=Fn(96)|0;f[b+4>>2]=d;h=b+12|0;c=e+4|0;f[h>>2]=f[c>>2];f[h+4>>2]=f[c+4>>2];f[h+8>>2]=f[c+8>>2];f[h+12>>2]=f[c+12>>2];f[b+8>>2]=4536;h=b+28|0;f[h>>2]=f[g>>2];f[h+4>>2]=f[g+4>>2];f[h+8>>2]=f[g+8>>2];f[h+12>>2]=f[g+12>>2];f[b>>2]=5060;h=b+44|0;c=h+52|0;do{f[h>>2]=0;h=h+4|0}while((h|0)<(c|0));e=b;f[a>>2]=e;return}case 3:{b=Fn(72)|0;f[b+4>>2]=d;d=b+12|0;e=e+4|0;f[d>>2]=f[e>>2];f[d+4>>2]=f[e+4>>2];f[d+8>>2]=f[e+8>>2];f[d+12>>2]=f[e+12>>2];f[b+8>>2]=4536;e=b+28|0;f[e>>2]=f[g>>2];f[e+4>>2]=f[g+4>>2];f[e+8>>2]=f[g+8>>2];f[e+12>>2]=f[g+12>>2];f[b>>2]=5116;e=b+44|0;f[e>>2]=0;f[e+4>>2]=0;f[e+8>>2]=0;f[e+12>>2]=0;f[e+16>>2]=0;f[e+20>>2]=0;f[e+24>>2]=0;e=b;f[a>>2]=e;return}case 5:{b=Fn(88)|0;f[b+4>>2]=d;d=b+12|0;e=e+4|0;f[d>>2]=f[e>>2];f[d+4>>2]=f[e+4>>2];f[d+8>>2]=f[e+8>>2];f[d+12>>2]=f[e+12>>2];f[b+8>>2]=4536;e=b+28|0;f[e>>2]=f[g>>2];f[e+4>>2]=f[g+4>>2];f[e+8>>2]=f[g+8>>2];f[e+12>>2]=f[g+12>>2];f[b>>2]=5172;f[b+44>>2]=0;f[b+48>>2]=0;f[b+60>>2]=0;f[b+64>>2]=0;f[b+68>>2]=0;e=b+72|0;f[e>>2]=f[g>>2];f[e+4>>2]=f[g+4>>2];f[e+8>>2]=f[g+8>>2];f[e+12>>2]=f[g+12>>2];e=b;f[a>>2]=e;return}case 6:{b=Fn(116)|0;f[b+4>>2]=d;d=b+12|0;e=e+4|0;f[d>>2]=f[e>>2];f[d+4>>2]=f[e+4>>2];f[d+8>>2]=f[e+8>>2];f[d+12>>2]=f[e+12>>2];f[b+8>>2]=4536;e=b+28|0;f[e>>2]=f[g>>2];f[e+4>>2]=f[g+4>>2];f[e+8>>2]=f[g+8>>2];f[e+12>>2]=f[g+12>>2];f[b>>2]=5228;f[b+44>>2]=0;f[b+48>>2]=0;e=b+52|0;f[e>>2]=f[g>>2];f[e+4>>2]=f[g+4>>2];f[e+8>>2]=f[g+8>>2];f[e+12>>2]=f[g+12>>2];e=b+68|0;f[e>>2]=-1;f[e+4>>2]=-1;f[e+8>>2]=-1;f[e+12>>2]=-1;Hn(b+84|0);e=b;f[a>>2]=e;return}default:{e=0;f[a>>2]=e;return}}}function Qc(a,b,c,d,e,g,h){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;g=g|0;h=h|0;switch(c|0){case 1:{b=Fn(44)|0;f[b+4>>2]=d;d=b+12|0;e=e+4|0;f[d>>2]=f[e>>2];f[d+4>>2]=f[e+4>>2];f[d+8>>2]=f[e+8>>2];f[d+12>>2]=f[e+12>>2];f[b+8>>2]=4536;e=b+28|0;f[e>>2]=f[g>>2];f[e+4>>2]=f[g+4>>2];f[e+8>>2]=f[g+8>>2];f[e+12>>2]=f[g+12>>2];f[b>>2]=4612;e=b;f[a>>2]=e;return}case 2:{b=Fn(44)|0;f[b+4>>2]=d;d=b+12|0;e=e+4|0;f[d>>2]=f[e>>2];f[d+4>>2]=f[e+4>>2];f[d+8>>2]=f[e+8>>2];f[d+12>>2]=f[e+12>>2];f[b+8>>2]=4536;e=b+28|0;f[e>>2]=f[g>>2];f[e+4>>2]=f[g+4>>2];f[e+8>>2]=f[g+8>>2];f[e+12>>2]=f[g+12>>2];f[b>>2]=4668;e=b;f[a>>2]=e;return}case 4:{b=Fn(96)|0;f[b+4>>2]=d;h=b+12|0;c=e+4|0;f[h>>2]=f[c>>2];f[h+4>>2]=f[c+4>>2];f[h+8>>2]=f[c+8>>2];f[h+12>>2]=f[c+12>>2];f[b+8>>2]=4536;h=b+28|0;f[h>>2]=f[g>>2];f[h+4>>2]=f[g+4>>2];f[h+8>>2]=f[g+8>>2];f[h+12>>2]=f[g+12>>2];f[b>>2]=4724;h=b+44|0;c=h+52|0;do{f[h>>2]=0;h=h+4|0}while((h|0)<(c|0));e=b;f[a>>2]=e;return}case 3:{b=Fn(72)|0;f[b+4>>2]=d;d=b+12|0;e=e+4|0;f[d>>2]=f[e>>2];f[d+4>>2]=f[e+4>>2];f[d+8>>2]=f[e+8>>2];f[d+12>>2]=f[e+12>>2];f[b+8>>2]=4536;e=b+28|0;f[e>>2]=f[g>>2];f[e+4>>2]=f[g+4>>2];f[e+8>>2]=f[g+8>>2];f[e+12>>2]=f[g+12>>2];f[b>>2]=4780;e=b+44|0;f[e>>2]=0;f[e+4>>2]=0;f[e+8>>2]=0;f[e+12>>2]=0;f[e+16>>2]=0;f[e+20>>2]=0;f[e+24>>2]=0;e=b;f[a>>2]=e;return}case 5:{b=Fn(88)|0;f[b+4>>2]=d;d=b+12|0;e=e+4|0;f[d>>2]=f[e>>2];f[d+4>>2]=f[e+4>>2];f[d+8>>2]=f[e+8>>2];f[d+12>>2]=f[e+12>>2];f[b+8>>2]=4536;e=b+28|0;f[e>>2]=f[g>>2];f[e+4>>2]=f[g+4>>2];f[e+8>>2]=f[g+8>>2];f[e+12>>2]=f[g+12>>2];f[b>>2]=4836;f[b+44>>2]=0;f[b+48>>2]=0;f[b+60>>2]=0;f[b+64>>2]=0;f[b+68>>2]=0;e=b+72|0;f[e>>2]=f[g>>2];f[e+4>>2]=f[g+4>>2];f[e+8>>2]=f[g+8>>2];f[e+12>>2]=f[g+12>>2];e=b;f[a>>2]=e;return}case 6:{b=Fn(116)|0;f[b+4>>2]=d;d=b+12|0;e=e+4|0;f[d>>2]=f[e>>2];f[d+4>>2]=f[e+4>>2];f[d+8>>2]=f[e+8>>2];f[d+12>>2]=f[e+12>>2];f[b+8>>2]=4536;e=b+28|0;f[e>>2]=f[g>>2];f[e+4>>2]=f[g+4>>2];f[e+8>>2]=f[g+8>>2];f[e+12>>2]=f[g+12>>2];f[b>>2]=4892;f[b+44>>2]=0;f[b+48>>2]=0;e=b+52|0;f[e>>2]=f[g>>2];f[e+4>>2]=f[g+4>>2];f[e+8>>2]=f[g+8>>2];f[e+12>>2]=f[g+12>>2];e=b+68|0;f[e>>2]=-1;f[e+4>>2]=-1;f[e+8>>2]=-1;f[e+12>>2]=-1;Hn(b+84|0);e=b;f[a>>2]=e;return}default:{e=0;f[a>>2]=e;return}}}function Rc(a,b,c,d){a=a|0;b=b|0;c=c|0;d=d|0;var e=0.0,g=0,h=0,i=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,v=0.0;t=u;u=u+16|0;n=t;r=t+4|0;if((c|0)>262144){a=0;u=t;return a|0}if((c|0)>0){h=0;g=0;j=0;i=0;do{s=b+(j<<3)|0;p=f[s>>2]|0;s=f[s+4>>2]|0;h=Do(p|0,s|0,h|0,g|0)|0;g=I;i=(p|0)==0&(s|0)==0?i:j;j=j+1|0}while((j|0)!=(c|0));p=i}else{g=0;h=0;p=0}s=p+1|0;f[a+12>>2]=s;c=a+4|0;j=f[c>>2]|0;i=f[a>>2]|0;k=j-i>>3;if(s>>>0<=k>>>0){if(s>>>0>>0?(l=i+(s<<3)|0,(j|0)!=(l|0)):0)f[c>>2]=j+(~((j+-8-l|0)>>>3)<<3)}else ai(a,s-k|0);e=+(h>>>0)+4294967296.0*+(g>>>0);o=(p|0)<0;if(!o){g=f[a>>2]|0;h=0;i=0;do{l=b+(h<<3)|0;k=f[l>>2]|0;l=f[l+4>>2]|0;m=~~((+(k>>>0)+4294967296.0*+(l>>>0))/e*1048576.0+.5)>>>0;m=((k|0)!=0|(l|0)!=0)&(m|0)==0?1:m;f[g+(h<<3)>>2]=m;i=m+i|0;h=h+1|0}while((h|0)!=(s|0));if((i|0)==1048576){if(o){a=0;u=t;return a|0}}else q=13}else{i=0;q=13}if((q|0)==13){ml(r,s);h=f[r>>2]|0;if(!o){g=0;do{f[h+(g<<2)>>2]=g;g=g+1|0}while((g|0)!=(s|0))}m=r+4|0;l=f[m>>2]|0;f[n>>2]=a;nb(h,l,n);a:do if((i|0)<1048576){q=(f[a>>2]|0)+(f[(f[m>>2]|0)+-4>>2]<<3)|0;f[q>>2]=1048576-i+(f[q>>2]|0);i=0}else{if((p|0)<=0){g=(i|0)>1048576;while(1)if(!g){i=0;break a}}k=f[r>>2]|0;l=f[a>>2]|0;g=i+-1048576|0;while(1){e=1048576.0/+(i|0);c=p;while(1){j=l+(f[k+(c<<2)>>2]<<3)|0;h=f[j>>2]|0;if(h>>>0<2){q=24;break}n=h-~~+J(+(e*+(h>>>0)))|0;n=(n|0)==0?1:n;n=(n|0)<(h|0)?n:h+-1|0;n=(n|0)>(g|0)?g:n;f[j>>2]=h-n;i=i-n|0;g=g-n|0;if((i|0)==1048576){i=1048576;break}if((c|0)>1)c=c+-1|0;else break}if((q|0)==24){q=0;if((c|0)==(p|0)){i=1;break a}}if((g|0)<=0){i=0;break}}}while(0);g=f[r>>2]|0;if(g|0){h=f[m>>2]|0;if((h|0)!=(g|0))f[m>>2]=h+(~((h+-4-g|0)>>>2)<<2);Lq(g)}if((i|0)!=0|o){a=0;u=t;return a|0}}g=f[a>>2]|0;h=0;i=0;do{f[g+(h<<3)+4>>2]=i;i=(f[g+(h<<3)>>2]|0)+i|0;h=h+1|0}while((h|0)!=(s|0));if((i|0)!=1048576){a=0;u=t;return a|0}if(o)e=0.0;else{h=f[a>>2]|0;i=0;e=0.0;do{g=f[h+(i<<3)>>2]|0;if(g){r=b+(i<<3)|0;v=+((f[r>>2]|0)>>>0)+4294967296.0*+((f[r+4>>2]|0)>>>0);e=e+v*+Xh(+(g>>>0)*9.5367431640625e-07)}i=i+1|0}while((i|0)!=(s|0))}v=+W(+-e);s=+K(v)>=1.0?(v>0.0?~~+Y(+J(v/4294967296.0),4294967295.0)>>>0:~~+W((v-+(~~v>>>0))/4294967296.0)>>>0):0;b=a+16|0;f[b>>2]=~~v>>>0;f[b+4>>2]=s;a=De(a,d)|0;u=t;return a|0}function Sc(a,b,c,d){a=a|0;b=b|0;c=c|0;d=d|0;var e=0.0,g=0,h=0,i=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,v=0.0;t=u;u=u+16|0;n=t;r=t+4|0;if((c|0)>131072){a=0;u=t;return a|0}if((c|0)>0){h=0;g=0;j=0;i=0;do{s=b+(j<<3)|0;p=f[s>>2]|0;s=f[s+4>>2]|0;h=Do(p|0,s|0,h|0,g|0)|0;g=I;i=(p|0)==0&(s|0)==0?i:j;j=j+1|0}while((j|0)!=(c|0));p=i}else{g=0;h=0;p=0}s=p+1|0;f[a+12>>2]=s;c=a+4|0;j=f[c>>2]|0;i=f[a>>2]|0;k=j-i>>3;if(s>>>0<=k>>>0){if(s>>>0>>0?(l=i+(s<<3)|0,(j|0)!=(l|0)):0)f[c>>2]=j+(~((j+-8-l|0)>>>3)<<3)}else ai(a,s-k|0);e=+(h>>>0)+4294967296.0*+(g>>>0);o=(p|0)<0;if(!o){g=f[a>>2]|0;h=0;i=0;do{l=b+(h<<3)|0;k=f[l>>2]|0;l=f[l+4>>2]|0;m=~~((+(k>>>0)+4294967296.0*+(l>>>0))/e*1048576.0+.5)>>>0;m=((k|0)!=0|(l|0)!=0)&(m|0)==0?1:m;f[g+(h<<3)>>2]=m;i=m+i|0;h=h+1|0}while((h|0)!=(s|0));if((i|0)==1048576){if(o){a=0;u=t;return a|0}}else q=13}else{i=0;q=13}if((q|0)==13){ml(r,s);h=f[r>>2]|0;if(!o){g=0;do{f[h+(g<<2)>>2]=g;g=g+1|0}while((g|0)!=(s|0))}m=r+4|0;l=f[m>>2]|0;f[n>>2]=a;ob(h,l,n);a:do if((i|0)<1048576){q=(f[a>>2]|0)+(f[(f[m>>2]|0)+-4>>2]<<3)|0;f[q>>2]=1048576-i+(f[q>>2]|0);i=0}else{if((p|0)<=0){g=(i|0)>1048576;while(1)if(!g){i=0;break a}}k=f[r>>2]|0;l=f[a>>2]|0;g=i+-1048576|0;while(1){e=1048576.0/+(i|0);c=p;while(1){j=l+(f[k+(c<<2)>>2]<<3)|0;h=f[j>>2]|0;if(h>>>0<2){q=24;break}n=h-~~+J(+(e*+(h>>>0)))|0;n=(n|0)==0?1:n;n=(n|0)<(h|0)?n:h+-1|0;n=(n|0)>(g|0)?g:n;f[j>>2]=h-n;i=i-n|0;g=g-n|0;if((i|0)==1048576){i=1048576;break}if((c|0)>1)c=c+-1|0;else break}if((q|0)==24){q=0;if((c|0)==(p|0)){i=1;break a}}if((g|0)<=0){i=0;break}}}while(0);g=f[r>>2]|0;if(g|0){h=f[m>>2]|0;if((h|0)!=(g|0))f[m>>2]=h+(~((h+-4-g|0)>>>2)<<2);Lq(g)}if((i|0)!=0|o){a=0;u=t;return a|0}}g=f[a>>2]|0;h=0;i=0;do{f[g+(h<<3)+4>>2]=i;i=(f[g+(h<<3)>>2]|0)+i|0;h=h+1|0}while((h|0)!=(s|0));if((i|0)!=1048576){a=0;u=t;return a|0}if(o)e=0.0;else{h=f[a>>2]|0;i=0;e=0.0;do{g=f[h+(i<<3)>>2]|0;if(g){r=b+(i<<3)|0;v=+((f[r>>2]|0)>>>0)+4294967296.0*+((f[r+4>>2]|0)>>>0);e=e+v*+Xh(+(g>>>0)*9.5367431640625e-07)}i=i+1|0}while((i|0)!=(s|0))}v=+W(+-e);s=+K(v)>=1.0?(v>0.0?~~+Y(+J(v/4294967296.0),4294967295.0)>>>0:~~+W((v-+(~~v>>>0))/4294967296.0)>>>0):0;b=a+16|0;f[b>>2]=~~v>>>0;f[b+4>>2]=s;a=De(a,d)|0;u=t;return a|0}function Tc(a,b,c,d){a=a|0;b=b|0;c=c|0;d=d|0;var e=0.0,g=0,h=0,i=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,v=0.0;t=u;u=u+16|0;n=t;r=t+4|0;if((c|0)>65536){a=0;u=t;return a|0}if((c|0)>0){h=0;g=0;j=0;i=0;do{s=b+(j<<3)|0;p=f[s>>2]|0;s=f[s+4>>2]|0;h=Do(p|0,s|0,h|0,g|0)|0;g=I;i=(p|0)==0&(s|0)==0?i:j;j=j+1|0}while((j|0)!=(c|0));p=i}else{g=0;h=0;p=0}s=p+1|0;f[a+12>>2]=s;c=a+4|0;j=f[c>>2]|0;i=f[a>>2]|0;k=j-i>>3;if(s>>>0<=k>>>0){if(s>>>0>>0?(l=i+(s<<3)|0,(j|0)!=(l|0)):0)f[c>>2]=j+(~((j+-8-l|0)>>>3)<<3)}else ai(a,s-k|0);e=+(h>>>0)+4294967296.0*+(g>>>0);o=(p|0)<0;if(!o){g=f[a>>2]|0;h=0;i=0;do{l=b+(h<<3)|0;k=f[l>>2]|0;l=f[l+4>>2]|0;m=~~((+(k>>>0)+4294967296.0*+(l>>>0))/e*1048576.0+.5)>>>0;m=((k|0)!=0|(l|0)!=0)&(m|0)==0?1:m;f[g+(h<<3)>>2]=m;i=m+i|0;h=h+1|0}while((h|0)!=(s|0));if((i|0)==1048576){if(o){a=0;u=t;return a|0}}else q=13}else{i=0;q=13}if((q|0)==13){ml(r,s);h=f[r>>2]|0;if(!o){g=0;do{f[h+(g<<2)>>2]=g;g=g+1|0}while((g|0)!=(s|0))}m=r+4|0;l=f[m>>2]|0;f[n>>2]=a;pb(h,l,n);a:do if((i|0)<1048576){q=(f[a>>2]|0)+(f[(f[m>>2]|0)+-4>>2]<<3)|0;f[q>>2]=1048576-i+(f[q>>2]|0);i=0}else{if((p|0)<=0){g=(i|0)>1048576;while(1)if(!g){i=0;break a}}k=f[r>>2]|0;l=f[a>>2]|0;g=i+-1048576|0;while(1){e=1048576.0/+(i|0);c=p;while(1){j=l+(f[k+(c<<2)>>2]<<3)|0;h=f[j>>2]|0;if(h>>>0<2){q=24;break}n=h-~~+J(+(e*+(h>>>0)))|0;n=(n|0)==0?1:n;n=(n|0)<(h|0)?n:h+-1|0;n=(n|0)>(g|0)?g:n;f[j>>2]=h-n;i=i-n|0;g=g-n|0;if((i|0)==1048576){i=1048576;break}if((c|0)>1)c=c+-1|0;else break}if((q|0)==24){q=0;if((c|0)==(p|0)){i=1;break a}}if((g|0)<=0){i=0;break}}}while(0);g=f[r>>2]|0;if(g|0){h=f[m>>2]|0;if((h|0)!=(g|0))f[m>>2]=h+(~((h+-4-g|0)>>>2)<<2);Lq(g)}if((i|0)!=0|o){a=0;u=t;return a|0}}g=f[a>>2]|0;h=0;i=0;do{f[g+(h<<3)+4>>2]=i;i=(f[g+(h<<3)>>2]|0)+i|0;h=h+1|0}while((h|0)!=(s|0));if((i|0)!=1048576){a=0;u=t;return a|0}if(o)e=0.0;else{h=f[a>>2]|0;i=0;e=0.0;do{g=f[h+(i<<3)>>2]|0;if(g){r=b+(i<<3)|0;v=+((f[r>>2]|0)>>>0)+4294967296.0*+((f[r+4>>2]|0)>>>0);e=e+v*+Xh(+(g>>>0)*9.5367431640625e-07)}i=i+1|0}while((i|0)!=(s|0))}v=+W(+-e);s=+K(v)>=1.0?(v>0.0?~~+Y(+J(v/4294967296.0),4294967295.0)>>>0:~~+W((v-+(~~v>>>0))/4294967296.0)>>>0):0;b=a+16|0;f[b>>2]=~~v>>>0;f[b+4>>2]=s;a=De(a,d)|0;u=t;return a|0}function Uc(a,b,c,d){a=a|0;b=b|0;c=c|0;d=d|0;var e=0.0,g=0,h=0,i=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,v=0.0;t=u;u=u+16|0;n=t;r=t+4|0;if((c|0)>32768){a=0;u=t;return a|0}if((c|0)>0){h=0;g=0;j=0;i=0;do{s=b+(j<<3)|0;p=f[s>>2]|0;s=f[s+4>>2]|0;h=Do(p|0,s|0,h|0,g|0)|0;g=I;i=(p|0)==0&(s|0)==0?i:j;j=j+1|0}while((j|0)!=(c|0));p=i}else{g=0;h=0;p=0}s=p+1|0;f[a+12>>2]=s;c=a+4|0;j=f[c>>2]|0;i=f[a>>2]|0;k=j-i>>3;if(s>>>0<=k>>>0){if(s>>>0>>0?(l=i+(s<<3)|0,(j|0)!=(l|0)):0)f[c>>2]=j+(~((j+-8-l|0)>>>3)<<3)}else ai(a,s-k|0);e=+(h>>>0)+4294967296.0*+(g>>>0);o=(p|0)<0;if(!o){g=f[a>>2]|0;h=0;i=0;do{l=b+(h<<3)|0;k=f[l>>2]|0;l=f[l+4>>2]|0;m=~~((+(k>>>0)+4294967296.0*+(l>>>0))/e*1048576.0+.5)>>>0;m=((k|0)!=0|(l|0)!=0)&(m|0)==0?1:m;f[g+(h<<3)>>2]=m;i=m+i|0;h=h+1|0}while((h|0)!=(s|0));if((i|0)==1048576){if(o){a=0;u=t;return a|0}}else q=13}else{i=0;q=13}if((q|0)==13){ml(r,s);h=f[r>>2]|0;if(!o){g=0;do{f[h+(g<<2)>>2]=g;g=g+1|0}while((g|0)!=(s|0))}m=r+4|0;l=f[m>>2]|0;f[n>>2]=a;qb(h,l,n);a:do if((i|0)<1048576){q=(f[a>>2]|0)+(f[(f[m>>2]|0)+-4>>2]<<3)|0;f[q>>2]=1048576-i+(f[q>>2]|0);i=0}else{if((p|0)<=0){g=(i|0)>1048576;while(1)if(!g){i=0;break a}}k=f[r>>2]|0;l=f[a>>2]|0;g=i+-1048576|0;while(1){e=1048576.0/+(i|0);c=p;while(1){j=l+(f[k+(c<<2)>>2]<<3)|0;h=f[j>>2]|0;if(h>>>0<2){q=24;break}n=h-~~+J(+(e*+(h>>>0)))|0;n=(n|0)==0?1:n;n=(n|0)<(h|0)?n:h+-1|0;n=(n|0)>(g|0)?g:n;f[j>>2]=h-n;i=i-n|0;g=g-n|0;if((i|0)==1048576){i=1048576;break}if((c|0)>1)c=c+-1|0;else break}if((q|0)==24){q=0;if((c|0)==(p|0)){i=1;break a}}if((g|0)<=0){i=0;break}}}while(0);g=f[r>>2]|0;if(g|0){h=f[m>>2]|0;if((h|0)!=(g|0))f[m>>2]=h+(~((h+-4-g|0)>>>2)<<2);Lq(g)}if((i|0)!=0|o){a=0;u=t;return a|0}}g=f[a>>2]|0;h=0;i=0;do{f[g+(h<<3)+4>>2]=i;i=(f[g+(h<<3)>>2]|0)+i|0;h=h+1|0}while((h|0)!=(s|0));if((i|0)!=1048576){a=0;u=t;return a|0}if(o)e=0.0;else{h=f[a>>2]|0;i=0;e=0.0;do{g=f[h+(i<<3)>>2]|0;if(g){r=b+(i<<3)|0;v=+((f[r>>2]|0)>>>0)+4294967296.0*+((f[r+4>>2]|0)>>>0);e=e+v*+Xh(+(g>>>0)*9.5367431640625e-07)}i=i+1|0}while((i|0)!=(s|0))}v=+W(+-e);s=+K(v)>=1.0?(v>0.0?~~+Y(+J(v/4294967296.0),4294967295.0)>>>0:~~+W((v-+(~~v>>>0))/4294967296.0)>>>0):0;b=a+16|0;f[b>>2]=~~v>>>0;f[b+4>>2]=s;a=De(a,d)|0;u=t;return a|0}function Vc(a,b,c,d){a=a|0;b=b|0;c=c|0;d=d|0;var e=0.0,g=0,h=0,i=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,v=0.0;t=u;u=u+16|0;n=t;r=t+4|0;if((c|0)>16384){a=0;u=t;return a|0}if((c|0)>0){h=0;g=0;j=0;i=0;do{s=b+(j<<3)|0;p=f[s>>2]|0;s=f[s+4>>2]|0;h=Do(p|0,s|0,h|0,g|0)|0;g=I;i=(p|0)==0&(s|0)==0?i:j;j=j+1|0}while((j|0)!=(c|0));p=i}else{g=0;h=0;p=0}s=p+1|0;f[a+12>>2]=s;c=a+4|0;j=f[c>>2]|0;i=f[a>>2]|0;k=j-i>>3;if(s>>>0<=k>>>0){if(s>>>0>>0?(l=i+(s<<3)|0,(j|0)!=(l|0)):0)f[c>>2]=j+(~((j+-8-l|0)>>>3)<<3)}else ai(a,s-k|0);e=+(h>>>0)+4294967296.0*+(g>>>0);o=(p|0)<0;if(!o){g=f[a>>2]|0;h=0;i=0;do{l=b+(h<<3)|0;k=f[l>>2]|0;l=f[l+4>>2]|0;m=~~((+(k>>>0)+4294967296.0*+(l>>>0))/e*1048576.0+.5)>>>0;m=((k|0)!=0|(l|0)!=0)&(m|0)==0?1:m;f[g+(h<<3)>>2]=m;i=m+i|0;h=h+1|0}while((h|0)!=(s|0));if((i|0)==1048576){if(o){a=0;u=t;return a|0}}else q=13}else{i=0;q=13}if((q|0)==13){ml(r,s);h=f[r>>2]|0;if(!o){g=0;do{f[h+(g<<2)>>2]=g;g=g+1|0}while((g|0)!=(s|0))}m=r+4|0;l=f[m>>2]|0;f[n>>2]=a;rb(h,l,n);a:do if((i|0)<1048576){q=(f[a>>2]|0)+(f[(f[m>>2]|0)+-4>>2]<<3)|0;f[q>>2]=1048576-i+(f[q>>2]|0);i=0}else{if((p|0)<=0){g=(i|0)>1048576;while(1)if(!g){i=0;break a}}k=f[r>>2]|0;l=f[a>>2]|0;g=i+-1048576|0;while(1){e=1048576.0/+(i|0);c=p;while(1){j=l+(f[k+(c<<2)>>2]<<3)|0;h=f[j>>2]|0;if(h>>>0<2){q=24;break}n=h-~~+J(+(e*+(h>>>0)))|0;n=(n|0)==0?1:n;n=(n|0)<(h|0)?n:h+-1|0;n=(n|0)>(g|0)?g:n;f[j>>2]=h-n;i=i-n|0;g=g-n|0;if((i|0)==1048576){i=1048576;break}if((c|0)>1)c=c+-1|0;else break}if((q|0)==24){q=0;if((c|0)==(p|0)){i=1;break a}}if((g|0)<=0){i=0;break}}}while(0);g=f[r>>2]|0;if(g|0){h=f[m>>2]|0;if((h|0)!=(g|0))f[m>>2]=h+(~((h+-4-g|0)>>>2)<<2);Lq(g)}if((i|0)!=0|o){a=0;u=t;return a|0}}g=f[a>>2]|0;h=0;i=0;do{f[g+(h<<3)+4>>2]=i;i=(f[g+(h<<3)>>2]|0)+i|0;h=h+1|0}while((h|0)!=(s|0));if((i|0)!=1048576){a=0;u=t;return a|0}if(o)e=0.0;else{h=f[a>>2]|0;i=0;e=0.0;do{g=f[h+(i<<3)>>2]|0;if(g){r=b+(i<<3)|0;v=+((f[r>>2]|0)>>>0)+4294967296.0*+((f[r+4>>2]|0)>>>0);e=e+v*+Xh(+(g>>>0)*9.5367431640625e-07)}i=i+1|0}while((i|0)!=(s|0))}v=+W(+-e);s=+K(v)>=1.0?(v>0.0?~~+Y(+J(v/4294967296.0),4294967295.0)>>>0:~~+W((v-+(~~v>>>0))/4294967296.0)>>>0):0;b=a+16|0;f[b>>2]=~~v>>>0;f[b+4>>2]=s;a=De(a,d)|0;u=t;return a|0}function Wc(a,b,c,d){a=a|0;b=b|0;c=c|0;d=d|0;var e=0.0,g=0,h=0,i=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,v=0.0;t=u;u=u+16|0;n=t;r=t+4|0;if((c|0)>8192){a=0;u=t;return a|0}if((c|0)>0){h=0;g=0;j=0;i=0;do{s=b+(j<<3)|0;p=f[s>>2]|0;s=f[s+4>>2]|0;h=Do(p|0,s|0,h|0,g|0)|0;g=I;i=(p|0)==0&(s|0)==0?i:j;j=j+1|0}while((j|0)!=(c|0));p=i}else{g=0;h=0;p=0}s=p+1|0;f[a+12>>2]=s;c=a+4|0;j=f[c>>2]|0;i=f[a>>2]|0;k=j-i>>3;if(s>>>0<=k>>>0){if(s>>>0>>0?(l=i+(s<<3)|0,(j|0)!=(l|0)):0)f[c>>2]=j+(~((j+-8-l|0)>>>3)<<3)}else ai(a,s-k|0);e=+(h>>>0)+4294967296.0*+(g>>>0);o=(p|0)<0;if(!o){g=f[a>>2]|0;h=0;i=0;do{l=b+(h<<3)|0;k=f[l>>2]|0;l=f[l+4>>2]|0;m=~~((+(k>>>0)+4294967296.0*+(l>>>0))/e*524288.0+.5)>>>0;m=((k|0)!=0|(l|0)!=0)&(m|0)==0?1:m;f[g+(h<<3)>>2]=m;i=m+i|0;h=h+1|0}while((h|0)!=(s|0));if((i|0)==524288){if(o){a=0;u=t;return a|0}}else q=13}else{i=0;q=13}if((q|0)==13){ml(r,s);h=f[r>>2]|0;if(!o){g=0;do{f[h+(g<<2)>>2]=g;g=g+1|0}while((g|0)!=(s|0))}m=r+4|0;l=f[m>>2]|0;f[n>>2]=a;sb(h,l,n);a:do if((i|0)<524288){q=(f[a>>2]|0)+(f[(f[m>>2]|0)+-4>>2]<<3)|0;f[q>>2]=524288-i+(f[q>>2]|0);i=0}else{if((p|0)<=0){g=(i|0)>524288;while(1)if(!g){i=0;break a}}k=f[r>>2]|0;l=f[a>>2]|0;g=i+-524288|0;while(1){e=524288.0/+(i|0);c=p;while(1){j=l+(f[k+(c<<2)>>2]<<3)|0;h=f[j>>2]|0;if(h>>>0<2){q=24;break}n=h-~~+J(+(e*+(h>>>0)))|0;n=(n|0)==0?1:n;n=(n|0)<(h|0)?n:h+-1|0;n=(n|0)>(g|0)?g:n;f[j>>2]=h-n;i=i-n|0;g=g-n|0;if((i|0)==524288){i=524288;break}if((c|0)>1)c=c+-1|0;else break}if((q|0)==24){q=0;if((c|0)==(p|0)){i=1;break a}}if((g|0)<=0){i=0;break}}}while(0);g=f[r>>2]|0;if(g|0){h=f[m>>2]|0;if((h|0)!=(g|0))f[m>>2]=h+(~((h+-4-g|0)>>>2)<<2);Lq(g)}if((i|0)!=0|o){a=0;u=t;return a|0}}g=f[a>>2]|0;h=0;i=0;do{f[g+(h<<3)+4>>2]=i;i=(f[g+(h<<3)>>2]|0)+i|0;h=h+1|0}while((h|0)!=(s|0));if((i|0)!=524288){a=0;u=t;return a|0}if(o)e=0.0;else{h=f[a>>2]|0;i=0;e=0.0;do{g=f[h+(i<<3)>>2]|0;if(g){r=b+(i<<3)|0;v=+((f[r>>2]|0)>>>0)+4294967296.0*+((f[r+4>>2]|0)>>>0);e=e+v*+Xh(+(g>>>0)*1.9073486328125e-06)}i=i+1|0}while((i|0)!=(s|0))}v=+W(+-e);s=+K(v)>=1.0?(v>0.0?~~+Y(+J(v/4294967296.0),4294967295.0)>>>0:~~+W((v-+(~~v>>>0))/4294967296.0)>>>0):0;b=a+16|0;f[b>>2]=~~v>>>0;f[b+4>>2]=s;a=De(a,d)|0;u=t;return a|0}function Xc(a,b,c,d){a=a|0;b=b|0;c=c|0;d=d|0;var e=0.0,g=0,h=0,i=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,v=0.0;t=u;u=u+16|0;n=t;r=t+4|0;if((c|0)>4096){a=0;u=t;return a|0}if((c|0)>0){h=0;g=0;j=0;i=0;do{s=b+(j<<3)|0;p=f[s>>2]|0;s=f[s+4>>2]|0;h=Do(p|0,s|0,h|0,g|0)|0;g=I;i=(p|0)==0&(s|0)==0?i:j;j=j+1|0}while((j|0)!=(c|0));p=i}else{g=0;h=0;p=0}s=p+1|0;f[a+12>>2]=s;c=a+4|0;j=f[c>>2]|0;i=f[a>>2]|0;k=j-i>>3;if(s>>>0<=k>>>0){if(s>>>0>>0?(l=i+(s<<3)|0,(j|0)!=(l|0)):0)f[c>>2]=j+(~((j+-8-l|0)>>>3)<<3)}else ai(a,s-k|0);e=+(h>>>0)+4294967296.0*+(g>>>0);o=(p|0)<0;if(!o){g=f[a>>2]|0;h=0;i=0;do{l=b+(h<<3)|0;k=f[l>>2]|0;l=f[l+4>>2]|0;m=~~((+(k>>>0)+4294967296.0*+(l>>>0))/e*262144.0+.5)>>>0;m=((k|0)!=0|(l|0)!=0)&(m|0)==0?1:m;f[g+(h<<3)>>2]=m;i=m+i|0;h=h+1|0}while((h|0)!=(s|0));if((i|0)==262144){if(o){a=0;u=t;return a|0}}else q=13}else{i=0;q=13}if((q|0)==13){ml(r,s);h=f[r>>2]|0;if(!o){g=0;do{f[h+(g<<2)>>2]=g;g=g+1|0}while((g|0)!=(s|0))}m=r+4|0;l=f[m>>2]|0;f[n>>2]=a;tb(h,l,n);a:do if((i|0)<262144){q=(f[a>>2]|0)+(f[(f[m>>2]|0)+-4>>2]<<3)|0;f[q>>2]=262144-i+(f[q>>2]|0);i=0}else{if((p|0)<=0){g=(i|0)>262144;while(1)if(!g){i=0;break a}}k=f[r>>2]|0;l=f[a>>2]|0;g=i+-262144|0;while(1){e=262144.0/+(i|0);c=p;while(1){j=l+(f[k+(c<<2)>>2]<<3)|0;h=f[j>>2]|0;if(h>>>0<2){q=24;break}n=h-~~+J(+(e*+(h>>>0)))|0;n=(n|0)==0?1:n;n=(n|0)<(h|0)?n:h+-1|0;n=(n|0)>(g|0)?g:n;f[j>>2]=h-n;i=i-n|0;g=g-n|0;if((i|0)==262144){i=262144;break}if((c|0)>1)c=c+-1|0;else break}if((q|0)==24){q=0;if((c|0)==(p|0)){i=1;break a}}if((g|0)<=0){i=0;break}}}while(0);g=f[r>>2]|0;if(g|0){h=f[m>>2]|0;if((h|0)!=(g|0))f[m>>2]=h+(~((h+-4-g|0)>>>2)<<2);Lq(g)}if((i|0)!=0|o){a=0;u=t;return a|0}}g=f[a>>2]|0;h=0;i=0;do{f[g+(h<<3)+4>>2]=i;i=(f[g+(h<<3)>>2]|0)+i|0;h=h+1|0}while((h|0)!=(s|0));if((i|0)!=262144){a=0;u=t;return a|0}if(o)e=0.0;else{h=f[a>>2]|0;i=0;e=0.0;do{g=f[h+(i<<3)>>2]|0;if(g){r=b+(i<<3)|0;v=+((f[r>>2]|0)>>>0)+4294967296.0*+((f[r+4>>2]|0)>>>0);e=e+v*+Xh(+(g>>>0)*3.814697265625e-06)}i=i+1|0}while((i|0)!=(s|0))}v=+W(+-e);s=+K(v)>=1.0?(v>0.0?~~+Y(+J(v/4294967296.0),4294967295.0)>>>0:~~+W((v-+(~~v>>>0))/4294967296.0)>>>0):0;b=a+16|0;f[b>>2]=~~v>>>0;f[b+4>>2]=s;a=De(a,d)|0;u=t;return a|0}function Yc(a,b,c,d){a=a|0;b=b|0;c=c|0;d=d|0;var e=0.0,g=0,h=0,i=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,v=0.0;t=u;u=u+16|0;n=t;r=t+4|0;if((c|0)>2048){a=0;u=t;return a|0}if((c|0)>0){h=0;g=0;j=0;i=0;do{s=b+(j<<3)|0;p=f[s>>2]|0;s=f[s+4>>2]|0;h=Do(p|0,s|0,h|0,g|0)|0;g=I;i=(p|0)==0&(s|0)==0?i:j;j=j+1|0}while((j|0)!=(c|0));p=i}else{g=0;h=0;p=0}s=p+1|0;f[a+12>>2]=s;c=a+4|0;j=f[c>>2]|0;i=f[a>>2]|0;k=j-i>>3;if(s>>>0<=k>>>0){if(s>>>0>>0?(l=i+(s<<3)|0,(j|0)!=(l|0)):0)f[c>>2]=j+(~((j+-8-l|0)>>>3)<<3)}else ai(a,s-k|0);e=+(h>>>0)+4294967296.0*+(g>>>0);o=(p|0)<0;if(!o){g=f[a>>2]|0;h=0;i=0;do{l=b+(h<<3)|0;k=f[l>>2]|0;l=f[l+4>>2]|0;m=~~((+(k>>>0)+4294967296.0*+(l>>>0))/e*65536.0+.5)>>>0;m=((k|0)!=0|(l|0)!=0)&(m|0)==0?1:m;f[g+(h<<3)>>2]=m;i=m+i|0;h=h+1|0}while((h|0)!=(s|0));if((i|0)==65536){if(o){a=0;u=t;return a|0}}else q=13}else{i=0;q=13}if((q|0)==13){ml(r,s);h=f[r>>2]|0;if(!o){g=0;do{f[h+(g<<2)>>2]=g;g=g+1|0}while((g|0)!=(s|0))}m=r+4|0;l=f[m>>2]|0;f[n>>2]=a;ub(h,l,n);a:do if((i|0)<65536){q=(f[a>>2]|0)+(f[(f[m>>2]|0)+-4>>2]<<3)|0;f[q>>2]=65536-i+(f[q>>2]|0);i=0}else{if((p|0)<=0){g=(i|0)>65536;while(1)if(!g){i=0;break a}}k=f[r>>2]|0;l=f[a>>2]|0;g=i+-65536|0;while(1){e=65536.0/+(i|0);c=p;while(1){j=l+(f[k+(c<<2)>>2]<<3)|0;h=f[j>>2]|0;if(h>>>0<2){q=24;break}n=h-~~+J(+(e*+(h>>>0)))|0;n=(n|0)==0?1:n;n=(n|0)<(h|0)?n:h+-1|0;n=(n|0)>(g|0)?g:n;f[j>>2]=h-n;i=i-n|0;g=g-n|0;if((i|0)==65536){i=65536;break}if((c|0)>1)c=c+-1|0;else break}if((q|0)==24){q=0;if((c|0)==(p|0)){i=1;break a}}if((g|0)<=0){i=0;break}}}while(0);g=f[r>>2]|0;if(g|0){h=f[m>>2]|0;if((h|0)!=(g|0))f[m>>2]=h+(~((h+-4-g|0)>>>2)<<2);Lq(g)}if((i|0)!=0|o){a=0;u=t;return a|0}}g=f[a>>2]|0;h=0;i=0;do{f[g+(h<<3)+4>>2]=i;i=(f[g+(h<<3)>>2]|0)+i|0;h=h+1|0}while((h|0)!=(s|0));if((i|0)!=65536){a=0;u=t;return a|0}if(o)e=0.0;else{h=f[a>>2]|0;i=0;e=0.0;do{g=f[h+(i<<3)>>2]|0;if(g){r=b+(i<<3)|0;v=+((f[r>>2]|0)>>>0)+4294967296.0*+((f[r+4>>2]|0)>>>0);e=e+v*+Xh(+(g>>>0)*.0000152587890625)}i=i+1|0}while((i|0)!=(s|0))}v=+W(+-e);s=+K(v)>=1.0?(v>0.0?~~+Y(+J(v/4294967296.0),4294967295.0)>>>0:~~+W((v-+(~~v>>>0))/4294967296.0)>>>0):0;b=a+16|0;f[b>>2]=~~v>>>0;f[b+4>>2]=s;a=De(a,d)|0;u=t;return a|0}function Zc(a,b,c,d){a=a|0;b=b|0;c=c|0;d=d|0;var e=0.0,g=0,h=0,i=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,v=0.0;t=u;u=u+16|0;n=t;r=t+4|0;if((c|0)>1024){a=0;u=t;return a|0}if((c|0)>0){h=0;g=0;j=0;i=0;do{s=b+(j<<3)|0;p=f[s>>2]|0;s=f[s+4>>2]|0;h=Do(p|0,s|0,h|0,g|0)|0;g=I;i=(p|0)==0&(s|0)==0?i:j;j=j+1|0}while((j|0)!=(c|0));p=i}else{g=0;h=0;p=0}s=p+1|0;f[a+12>>2]=s;c=a+4|0;j=f[c>>2]|0;i=f[a>>2]|0;k=j-i>>3;if(s>>>0<=k>>>0){if(s>>>0>>0?(l=i+(s<<3)|0,(j|0)!=(l|0)):0)f[c>>2]=j+(~((j+-8-l|0)>>>3)<<3)}else ai(a,s-k|0);e=+(h>>>0)+4294967296.0*+(g>>>0);o=(p|0)<0;if(!o){g=f[a>>2]|0;h=0;i=0;do{l=b+(h<<3)|0;k=f[l>>2]|0;l=f[l+4>>2]|0;m=~~((+(k>>>0)+4294967296.0*+(l>>>0))/e*32768.0+.5)>>>0;m=((k|0)!=0|(l|0)!=0)&(m|0)==0?1:m;f[g+(h<<3)>>2]=m;i=m+i|0;h=h+1|0}while((h|0)!=(s|0));if((i|0)==32768){if(o){a=0;u=t;return a|0}}else q=13}else{i=0;q=13}if((q|0)==13){ml(r,s);h=f[r>>2]|0;if(!o){g=0;do{f[h+(g<<2)>>2]=g;g=g+1|0}while((g|0)!=(s|0))}m=r+4|0;l=f[m>>2]|0;f[n>>2]=a;vb(h,l,n);a:do if((i|0)<32768){q=(f[a>>2]|0)+(f[(f[m>>2]|0)+-4>>2]<<3)|0;f[q>>2]=32768-i+(f[q>>2]|0);i=0}else{if((p|0)<=0){g=(i|0)>32768;while(1)if(!g){i=0;break a}}k=f[r>>2]|0;l=f[a>>2]|0;g=i+-32768|0;while(1){e=32768.0/+(i|0);c=p;while(1){j=l+(f[k+(c<<2)>>2]<<3)|0;h=f[j>>2]|0;if(h>>>0<2){q=24;break}n=h-~~+J(+(e*+(h>>>0)))|0;n=(n|0)==0?1:n;n=(n|0)<(h|0)?n:h+-1|0;n=(n|0)>(g|0)?g:n;f[j>>2]=h-n;i=i-n|0;g=g-n|0;if((i|0)==32768){i=32768;break}if((c|0)>1)c=c+-1|0;else break}if((q|0)==24){q=0;if((c|0)==(p|0)){i=1;break a}}if((g|0)<=0){i=0;break}}}while(0);g=f[r>>2]|0;if(g|0){h=f[m>>2]|0;if((h|0)!=(g|0))f[m>>2]=h+(~((h+-4-g|0)>>>2)<<2);Lq(g)}if((i|0)!=0|o){a=0;u=t;return a|0}}g=f[a>>2]|0;h=0;i=0;do{f[g+(h<<3)+4>>2]=i;i=(f[g+(h<<3)>>2]|0)+i|0;h=h+1|0}while((h|0)!=(s|0));if((i|0)!=32768){a=0;u=t;return a|0}if(o)e=0.0;else{h=f[a>>2]|0;i=0;e=0.0;do{g=f[h+(i<<3)>>2]|0;if(g){r=b+(i<<3)|0;v=+((f[r>>2]|0)>>>0)+4294967296.0*+((f[r+4>>2]|0)>>>0);e=e+v*+Xh(+(g>>>0)*.000030517578125)}i=i+1|0}while((i|0)!=(s|0))}v=+W(+-e);s=+K(v)>=1.0?(v>0.0?~~+Y(+J(v/4294967296.0),4294967295.0)>>>0:~~+W((v-+(~~v>>>0))/4294967296.0)>>>0):0;b=a+16|0;f[b>>2]=~~v>>>0;f[b+4>>2]=s;a=De(a,d)|0;u=t;return a|0}function _c(a,c,d){a=a|0;c=c|0;d=d|0;var e=Ka,g=0,i=0,j=0,k=Ka;switch(b[a+24>>0]|0){case 1:{i=f[c>>2]|0;c=a+48|0;g=f[c>>2]|0;c=f[c+4>>2]|0;j=a+40|0;a=(Do(En(f[j>>2]|0,f[j+4>>2]|0,i|0,((i|0)<0)<<31>>31|0)|0,I|0,g|0,c|0)|0)+(f[f[a>>2]>>2]|0)|0;b[s>>0]=b[a>>0];b[s+1>>0]=b[a+1>>0];b[s+2>>0]=b[a+2>>0];b[s+3>>0]=b[a+3>>0];e=$(n[s>>2]);a=+K(+e)>=1.0?(+e>0.0?~~+Y(+J(+e/4294967296.0),4294967295.0)>>>0:~~+W((+e-+(~~+e>>>0))/4294967296.0)>>>0):0;c=d;f[c>>2]=~~+e>>>0;f[c+4>>2]=a;c=0;a=0;break}case 2:{i=f[c>>2]|0;c=a+48|0;j=f[c>>2]|0;c=f[c+4>>2]|0;g=a+40|0;c=(Do(En(f[g>>2]|0,f[g+4>>2]|0,i|0,((i|0)<0)<<31>>31|0)|0,I|0,j|0,c|0)|0)+(f[f[a>>2]>>2]|0)|0;j=c;c=c+4|0;c=h[c>>0]|h[c+1>>0]<<8|h[c+2>>0]<<16|h[c+3>>0]<<24;e=(f[s>>2]=h[j>>0]|h[j+1>>0]<<8|h[j+2>>0]<<16|h[j+3>>0]<<24,$(n[s>>2]));j=+K(+e)>=1.0?(+e>0.0?~~+Y(+J(+e/4294967296.0),4294967295.0)>>>0:~~+W((+e-+(~~+e>>>0))/4294967296.0)>>>0):0;a=d;f[a>>2]=~~+e>>>0;f[a+4>>2]=j;e=(f[s>>2]=c,$(n[s>>2]));c=~~+e>>>0;a=+K(+e)>=1.0?(+e>0.0?~~+Y(+J(+e/4294967296.0),4294967295.0)>>>0:~~+W((+e-+(~~+e>>>0))/4294967296.0)>>>0):0;break}case 3:{i=f[c>>2]|0;c=a+48|0;j=f[c>>2]|0;c=f[c+4>>2]|0;g=a+40|0;a=(Do(En(f[g>>2]|0,f[g+4>>2]|0,i|0,((i|0)<0)<<31>>31|0)|0,I|0,j|0,c|0)|0)+(f[f[a>>2]>>2]|0)|0;b[s>>0]=b[a>>0];b[s+1>>0]=b[a+1>>0];b[s+2>>0]=b[a+2>>0];b[s+3>>0]=b[a+3>>0];k=$(n[s>>2]);a=a+4|0;b[s>>0]=b[a>>0];b[s+1>>0]=b[a+1>>0];b[s+2>>0]=b[a+2>>0];b[s+3>>0]=b[a+3>>0];e=$(n[s>>2]);a=+K(+k)>=1.0?(+k>0.0?~~+Y(+J(+k/4294967296.0),4294967295.0)>>>0:~~+W((+k-+(~~+k>>>0))/4294967296.0)>>>0):0;c=d;f[c>>2]=~~+k>>>0;f[c+4>>2]=a;c=~~+e>>>0;a=+K(+e)>=1.0?(+e>0.0?~~+Y(+J(+e/4294967296.0),4294967295.0)>>>0:~~+W((+e-+(~~+e>>>0))/4294967296.0)>>>0):0;break}case 4:{i=f[c>>2]|0;c=a+48|0;j=f[c>>2]|0;c=f[c+4>>2]|0;g=a+40|0;a=(Do(En(f[g>>2]|0,f[g+4>>2]|0,i|0,((i|0)<0)<<31>>31|0)|0,I|0,j|0,c|0)|0)+(f[f[a>>2]>>2]|0)|0;b[s>>0]=b[a>>0];b[s+1>>0]=b[a+1>>0];b[s+2>>0]=b[a+2>>0];b[s+3>>0]=b[a+3>>0];e=$(n[s>>2]);a=a+4|0;b[s>>0]=b[a>>0];b[s+1>>0]=b[a+1>>0];b[s+2>>0]=b[a+2>>0];b[s+3>>0]=b[a+3>>0];k=$(n[s>>2]);a=+K(+e)>=1.0?(+e>0.0?~~+Y(+J(+e/4294967296.0),4294967295.0)>>>0:~~+W((+e-+(~~+e>>>0))/4294967296.0)>>>0):0;c=d;f[c>>2]=~~+e>>>0;f[c+4>>2]=a;c=~~+k>>>0;a=+K(+k)>=1.0?(+k>0.0?~~+Y(+J(+k/4294967296.0),4294967295.0)>>>0:~~+W((+k-+(~~+k>>>0))/4294967296.0)>>>0):0;break}default:{j=0;return j|0}}j=d+8|0;f[j>>2]=c;f[j+4>>2]=a;j=1;return j|0}function $c(a,b,c,d){a=a|0;b=b|0;c=c|0;d=d|0;var e=0.0,g=0,h=0,i=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,v=0.0;t=u;u=u+16|0;n=t;r=t+4|0;if((c|0)>512){a=0;u=t;return a|0}if((c|0)>0){h=0;g=0;j=0;i=0;do{s=b+(j<<3)|0;p=f[s>>2]|0;s=f[s+4>>2]|0;h=Do(p|0,s|0,h|0,g|0)|0;g=I;i=(p|0)==0&(s|0)==0?i:j;j=j+1|0}while((j|0)!=(c|0));p=i}else{g=0;h=0;p=0}s=p+1|0;f[a+12>>2]=s;c=a+4|0;j=f[c>>2]|0;i=f[a>>2]|0;k=j-i>>3;if(s>>>0<=k>>>0){if(s>>>0>>0?(l=i+(s<<3)|0,(j|0)!=(l|0)):0)f[c>>2]=j+(~((j+-8-l|0)>>>3)<<3)}else ai(a,s-k|0);e=+(h>>>0)+4294967296.0*+(g>>>0);o=(p|0)<0;if(!o){g=f[a>>2]|0;h=0;i=0;do{l=b+(h<<3)|0;k=f[l>>2]|0;l=f[l+4>>2]|0;m=~~((+(k>>>0)+4294967296.0*+(l>>>0))/e*8192.0+.5)>>>0;m=((k|0)!=0|(l|0)!=0)&(m|0)==0?1:m;f[g+(h<<3)>>2]=m;i=m+i|0;h=h+1|0}while((h|0)!=(s|0));if((i|0)==8192){if(o){a=0;u=t;return a|0}}else q=13}else{i=0;q=13}if((q|0)==13){ml(r,s);h=f[r>>2]|0;if(!o){g=0;do{f[h+(g<<2)>>2]=g;g=g+1|0}while((g|0)!=(s|0))}m=r+4|0;l=f[m>>2]|0;f[n>>2]=a;wb(h,l,n);a:do if((i|0)<8192){q=(f[a>>2]|0)+(f[(f[m>>2]|0)+-4>>2]<<3)|0;f[q>>2]=8192-i+(f[q>>2]|0);i=0}else{if((p|0)<=0){g=(i|0)>8192;while(1)if(!g){i=0;break a}}k=f[r>>2]|0;l=f[a>>2]|0;g=i+-8192|0;while(1){e=8192.0/+(i|0);c=p;while(1){j=l+(f[k+(c<<2)>>2]<<3)|0;h=f[j>>2]|0;if(h>>>0<2){q=24;break}n=h-~~+J(+(e*+(h>>>0)))|0;n=(n|0)==0?1:n;n=(n|0)<(h|0)?n:h+-1|0;n=(n|0)>(g|0)?g:n;f[j>>2]=h-n;i=i-n|0;g=g-n|0;if((i|0)==8192){i=8192;break}if((c|0)>1)c=c+-1|0;else break}if((q|0)==24){q=0;if((c|0)==(p|0)){i=1;break a}}if((g|0)<=0){i=0;break}}}while(0);g=f[r>>2]|0;if(g|0){h=f[m>>2]|0;if((h|0)!=(g|0))f[m>>2]=h+(~((h+-4-g|0)>>>2)<<2);Lq(g)}if((i|0)!=0|o){a=0;u=t;return a|0}}g=f[a>>2]|0;h=0;i=0;do{f[g+(h<<3)+4>>2]=i;i=(f[g+(h<<3)>>2]|0)+i|0;h=h+1|0}while((h|0)!=(s|0));if((i|0)!=8192){a=0;u=t;return a|0}if(o)e=0.0;else{h=f[a>>2]|0;i=0;e=0.0;do{g=f[h+(i<<3)>>2]|0;if(g){r=b+(i<<3)|0;v=+((f[r>>2]|0)>>>0)+4294967296.0*+((f[r+4>>2]|0)>>>0);e=e+v*+Xh(+(g>>>0)*.0001220703125)}i=i+1|0}while((i|0)!=(s|0))}v=+W(+-e);s=+K(v)>=1.0?(v>0.0?~~+Y(+J(v/4294967296.0),4294967295.0)>>>0:~~+W((v-+(~~v>>>0))/4294967296.0)>>>0):0;b=a+16|0;f[b>>2]=~~v>>>0;f[b+4>>2]=s;a=De(a,d)|0;u=t;return a|0}function ad(a,b,c,d){a=a|0;b=b|0;c=c|0;d=d|0;var e=0.0,g=0,h=0,i=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,v=0.0;t=u;u=u+16|0;n=t;r=t+4|0;if((c|0)>256){a=0;u=t;return a|0}if((c|0)>0){h=0;g=0;j=0;i=0;do{s=b+(j<<3)|0;p=f[s>>2]|0;s=f[s+4>>2]|0;h=Do(p|0,s|0,h|0,g|0)|0;g=I;i=(p|0)==0&(s|0)==0?i:j;j=j+1|0}while((j|0)!=(c|0));p=i}else{g=0;h=0;p=0}s=p+1|0;f[a+12>>2]=s;c=a+4|0;j=f[c>>2]|0;i=f[a>>2]|0;k=j-i>>3;if(s>>>0<=k>>>0){if(s>>>0>>0?(l=i+(s<<3)|0,(j|0)!=(l|0)):0)f[c>>2]=j+(~((j+-8-l|0)>>>3)<<3)}else ai(a,s-k|0);e=+(h>>>0)+4294967296.0*+(g>>>0);o=(p|0)<0;if(!o){g=f[a>>2]|0;h=0;i=0;do{l=b+(h<<3)|0;k=f[l>>2]|0;l=f[l+4>>2]|0;m=~~((+(k>>>0)+4294967296.0*+(l>>>0))/e*4096.0+.5)>>>0;m=((k|0)!=0|(l|0)!=0)&(m|0)==0?1:m;f[g+(h<<3)>>2]=m;i=m+i|0;h=h+1|0}while((h|0)!=(s|0));if((i|0)==4096){if(o){a=0;u=t;return a|0}}else q=13}else{i=0;q=13}if((q|0)==13){ml(r,s);h=f[r>>2]|0;if(!o){g=0;do{f[h+(g<<2)>>2]=g;g=g+1|0}while((g|0)!=(s|0))}m=r+4|0;l=f[m>>2]|0;f[n>>2]=a;xb(h,l,n);a:do if((i|0)<4096){q=(f[a>>2]|0)+(f[(f[m>>2]|0)+-4>>2]<<3)|0;f[q>>2]=4096-i+(f[q>>2]|0);i=0}else{if((p|0)<=0){g=(i|0)>4096;while(1)if(!g){i=0;break a}}k=f[r>>2]|0;l=f[a>>2]|0;g=i+-4096|0;while(1){e=4096.0/+(i|0);c=p;while(1){j=l+(f[k+(c<<2)>>2]<<3)|0;h=f[j>>2]|0;if(h>>>0<2){q=24;break}n=h-~~+J(+(e*+(h>>>0)))|0;n=(n|0)==0?1:n;n=(n|0)<(h|0)?n:h+-1|0;n=(n|0)>(g|0)?g:n;f[j>>2]=h-n;i=i-n|0;g=g-n|0;if((i|0)==4096){i=4096;break}if((c|0)>1)c=c+-1|0;else break}if((q|0)==24){q=0;if((c|0)==(p|0)){i=1;break a}}if((g|0)<=0){i=0;break}}}while(0);g=f[r>>2]|0;if(g|0){h=f[m>>2]|0;if((h|0)!=(g|0))f[m>>2]=h+(~((h+-4-g|0)>>>2)<<2);Lq(g)}if((i|0)!=0|o){a=0;u=t;return a|0}}g=f[a>>2]|0;h=0;i=0;do{f[g+(h<<3)+4>>2]=i;i=(f[g+(h<<3)>>2]|0)+i|0;h=h+1|0}while((h|0)!=(s|0));if((i|0)!=4096){a=0;u=t;return a|0}if(o)e=0.0;else{h=f[a>>2]|0;i=0;e=0.0;do{g=f[h+(i<<3)>>2]|0;if(g){r=b+(i<<3)|0;v=+((f[r>>2]|0)>>>0)+4294967296.0*+((f[r+4>>2]|0)>>>0);e=e+v*+Xh(+(g>>>0)*.000244140625)}i=i+1|0}while((i|0)!=(s|0))}v=+W(+-e);s=+K(v)>=1.0?(v>0.0?~~+Y(+J(v/4294967296.0),4294967295.0)>>>0:~~+W((v-+(~~v>>>0))/4294967296.0)>>>0):0;b=a+16|0;f[b>>2]=~~v>>>0;f[b+4>>2]=s;a=De(a,d)|0;u=t;return a|0}function bd(a,b,c,d){a=a|0;b=b|0;c=c|0;d=d|0;var e=0.0,g=0,h=0,i=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,v=0.0;t=u;u=u+16|0;n=t;r=t+4|0;if((c|0)>128){a=0;u=t;return a|0}if((c|0)>0){h=0;g=0;j=0;i=0;do{s=b+(j<<3)|0;p=f[s>>2]|0;s=f[s+4>>2]|0;h=Do(p|0,s|0,h|0,g|0)|0;g=I;i=(p|0)==0&(s|0)==0?i:j;j=j+1|0}while((j|0)!=(c|0));p=i}else{g=0;h=0;p=0}s=p+1|0;f[a+12>>2]=s;c=a+4|0;j=f[c>>2]|0;i=f[a>>2]|0;k=j-i>>3;if(s>>>0<=k>>>0){if(s>>>0>>0?(l=i+(s<<3)|0,(j|0)!=(l|0)):0)f[c>>2]=j+(~((j+-8-l|0)>>>3)<<3)}else ai(a,s-k|0);e=+(h>>>0)+4294967296.0*+(g>>>0);o=(p|0)<0;if(!o){g=f[a>>2]|0;h=0;i=0;do{l=b+(h<<3)|0;k=f[l>>2]|0;l=f[l+4>>2]|0;m=~~((+(k>>>0)+4294967296.0*+(l>>>0))/e*4096.0+.5)>>>0;m=((k|0)!=0|(l|0)!=0)&(m|0)==0?1:m;f[g+(h<<3)>>2]=m;i=m+i|0;h=h+1|0}while((h|0)!=(s|0));if((i|0)==4096){if(o){a=0;u=t;return a|0}}else q=13}else{i=0;q=13}if((q|0)==13){ml(r,s);h=f[r>>2]|0;if(!o){g=0;do{f[h+(g<<2)>>2]=g;g=g+1|0}while((g|0)!=(s|0))}m=r+4|0;l=f[m>>2]|0;f[n>>2]=a;yb(h,l,n);a:do if((i|0)<4096){q=(f[a>>2]|0)+(f[(f[m>>2]|0)+-4>>2]<<3)|0;f[q>>2]=4096-i+(f[q>>2]|0);i=0}else{if((p|0)<=0){g=(i|0)>4096;while(1)if(!g){i=0;break a}}k=f[r>>2]|0;l=f[a>>2]|0;g=i+-4096|0;while(1){e=4096.0/+(i|0);c=p;while(1){j=l+(f[k+(c<<2)>>2]<<3)|0;h=f[j>>2]|0;if(h>>>0<2){q=24;break}n=h-~~+J(+(e*+(h>>>0)))|0;n=(n|0)==0?1:n;n=(n|0)<(h|0)?n:h+-1|0;n=(n|0)>(g|0)?g:n;f[j>>2]=h-n;i=i-n|0;g=g-n|0;if((i|0)==4096){i=4096;break}if((c|0)>1)c=c+-1|0;else break}if((q|0)==24){q=0;if((c|0)==(p|0)){i=1;break a}}if((g|0)<=0){i=0;break}}}while(0);g=f[r>>2]|0;if(g|0){h=f[m>>2]|0;if((h|0)!=(g|0))f[m>>2]=h+(~((h+-4-g|0)>>>2)<<2);Lq(g)}if((i|0)!=0|o){a=0;u=t;return a|0}}g=f[a>>2]|0;h=0;i=0;do{f[g+(h<<3)+4>>2]=i;i=(f[g+(h<<3)>>2]|0)+i|0;h=h+1|0}while((h|0)!=(s|0));if((i|0)!=4096){a=0;u=t;return a|0}if(o)e=0.0;else{h=f[a>>2]|0;i=0;e=0.0;do{g=f[h+(i<<3)>>2]|0;if(g){r=b+(i<<3)|0;v=+((f[r>>2]|0)>>>0)+4294967296.0*+((f[r+4>>2]|0)>>>0);e=e+v*+Xh(+(g>>>0)*.000244140625)}i=i+1|0}while((i|0)!=(s|0))}v=+W(+-e);s=+K(v)>=1.0?(v>0.0?~~+Y(+J(v/4294967296.0),4294967295.0)>>>0:~~+W((v-+(~~v>>>0))/4294967296.0)>>>0):0;b=a+16|0;f[b>>2]=~~v>>>0;f[b+4>>2]=s;a=De(a,d)|0;u=t;return a|0}function cd(a,b,c,d){a=a|0;b=b|0;c=c|0;d=d|0;var e=0.0,g=0,h=0,i=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,v=0.0;t=u;u=u+16|0;n=t;r=t+4|0;if((c|0)>64){a=0;u=t;return a|0}if((c|0)>0){h=0;g=0;j=0;i=0;do{s=b+(j<<3)|0;p=f[s>>2]|0;s=f[s+4>>2]|0;h=Do(p|0,s|0,h|0,g|0)|0;g=I;i=(p|0)==0&(s|0)==0?i:j;j=j+1|0}while((j|0)!=(c|0));p=i}else{g=0;h=0;p=0}s=p+1|0;f[a+12>>2]=s;c=a+4|0;j=f[c>>2]|0;i=f[a>>2]|0;k=j-i>>3;if(s>>>0<=k>>>0){if(s>>>0>>0?(l=i+(s<<3)|0,(j|0)!=(l|0)):0)f[c>>2]=j+(~((j+-8-l|0)>>>3)<<3)}else ai(a,s-k|0);e=+(h>>>0)+4294967296.0*+(g>>>0);o=(p|0)<0;if(!o){g=f[a>>2]|0;h=0;i=0;do{l=b+(h<<3)|0;k=f[l>>2]|0;l=f[l+4>>2]|0;m=~~((+(k>>>0)+4294967296.0*+(l>>>0))/e*4096.0+.5)>>>0;m=((k|0)!=0|(l|0)!=0)&(m|0)==0?1:m;f[g+(h<<3)>>2]=m;i=m+i|0;h=h+1|0}while((h|0)!=(s|0));if((i|0)==4096){if(o){a=0;u=t;return a|0}}else q=13}else{i=0;q=13}if((q|0)==13){ml(r,s);h=f[r>>2]|0;if(!o){g=0;do{f[h+(g<<2)>>2]=g;g=g+1|0}while((g|0)!=(s|0))}m=r+4|0;l=f[m>>2]|0;f[n>>2]=a;zb(h,l,n);a:do if((i|0)<4096){q=(f[a>>2]|0)+(f[(f[m>>2]|0)+-4>>2]<<3)|0;f[q>>2]=4096-i+(f[q>>2]|0);i=0}else{if((p|0)<=0){g=(i|0)>4096;while(1)if(!g){i=0;break a}}k=f[r>>2]|0;l=f[a>>2]|0;g=i+-4096|0;while(1){e=4096.0/+(i|0);c=p;while(1){j=l+(f[k+(c<<2)>>2]<<3)|0;h=f[j>>2]|0;if(h>>>0<2){q=24;break}n=h-~~+J(+(e*+(h>>>0)))|0;n=(n|0)==0?1:n;n=(n|0)<(h|0)?n:h+-1|0;n=(n|0)>(g|0)?g:n;f[j>>2]=h-n;i=i-n|0;g=g-n|0;if((i|0)==4096){i=4096;break}if((c|0)>1)c=c+-1|0;else break}if((q|0)==24){q=0;if((c|0)==(p|0)){i=1;break a}}if((g|0)<=0){i=0;break}}}while(0);g=f[r>>2]|0;if(g|0){h=f[m>>2]|0;if((h|0)!=(g|0))f[m>>2]=h+(~((h+-4-g|0)>>>2)<<2);Lq(g)}if((i|0)!=0|o){a=0;u=t;return a|0}}g=f[a>>2]|0;h=0;i=0;do{f[g+(h<<3)+4>>2]=i;i=(f[g+(h<<3)>>2]|0)+i|0;h=h+1|0}while((h|0)!=(s|0));if((i|0)!=4096){a=0;u=t;return a|0}if(o)e=0.0;else{h=f[a>>2]|0;i=0;e=0.0;do{g=f[h+(i<<3)>>2]|0;if(g){r=b+(i<<3)|0;v=+((f[r>>2]|0)>>>0)+4294967296.0*+((f[r+4>>2]|0)>>>0);e=e+v*+Xh(+(g>>>0)*.000244140625)}i=i+1|0}while((i|0)!=(s|0))}v=+W(+-e);s=+K(v)>=1.0?(v>0.0?~~+Y(+J(v/4294967296.0),4294967295.0)>>>0:~~+W((v-+(~~v>>>0))/4294967296.0)>>>0):0;b=a+16|0;f[b>>2]=~~v>>>0;f[b+4>>2]=s;a=De(a,d)|0;u=t;return a|0}function dd(a,b,c,d){a=a|0;b=b|0;c=c|0;d=d|0;var e=0.0,g=0,h=0,i=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,v=0.0;t=u;u=u+16|0;n=t;r=t+4|0;if((c|0)>32){a=0;u=t;return a|0}if((c|0)>0){h=0;g=0;j=0;i=0;do{s=b+(j<<3)|0;p=f[s>>2]|0;s=f[s+4>>2]|0;h=Do(p|0,s|0,h|0,g|0)|0;g=I;i=(p|0)==0&(s|0)==0?i:j;j=j+1|0}while((j|0)!=(c|0));p=i}else{g=0;h=0;p=0}s=p+1|0;f[a+12>>2]=s;c=a+4|0;j=f[c>>2]|0;i=f[a>>2]|0;k=j-i>>3;if(s>>>0<=k>>>0){if(s>>>0>>0?(l=i+(s<<3)|0,(j|0)!=(l|0)):0)f[c>>2]=j+(~((j+-8-l|0)>>>3)<<3)}else ai(a,s-k|0);e=+(h>>>0)+4294967296.0*+(g>>>0);o=(p|0)<0;if(!o){g=f[a>>2]|0;h=0;i=0;do{l=b+(h<<3)|0;k=f[l>>2]|0;l=f[l+4>>2]|0;m=~~((+(k>>>0)+4294967296.0*+(l>>>0))/e*4096.0+.5)>>>0;m=((k|0)!=0|(l|0)!=0)&(m|0)==0?1:m;f[g+(h<<3)>>2]=m;i=m+i|0;h=h+1|0}while((h|0)!=(s|0));if((i|0)==4096){if(o){a=0;u=t;return a|0}}else q=13}else{i=0;q=13}if((q|0)==13){ml(r,s);h=f[r>>2]|0;if(!o){g=0;do{f[h+(g<<2)>>2]=g;g=g+1|0}while((g|0)!=(s|0))}m=r+4|0;l=f[m>>2]|0;f[n>>2]=a;Ab(h,l,n);a:do if((i|0)<4096){q=(f[a>>2]|0)+(f[(f[m>>2]|0)+-4>>2]<<3)|0;f[q>>2]=4096-i+(f[q>>2]|0);i=0}else{if((p|0)<=0){g=(i|0)>4096;while(1)if(!g){i=0;break a}}k=f[r>>2]|0;l=f[a>>2]|0;g=i+-4096|0;while(1){e=4096.0/+(i|0);c=p;while(1){j=l+(f[k+(c<<2)>>2]<<3)|0;h=f[j>>2]|0;if(h>>>0<2){q=24;break}n=h-~~+J(+(e*+(h>>>0)))|0;n=(n|0)==0?1:n;n=(n|0)<(h|0)?n:h+-1|0;n=(n|0)>(g|0)?g:n;f[j>>2]=h-n;i=i-n|0;g=g-n|0;if((i|0)==4096){i=4096;break}if((c|0)>1)c=c+-1|0;else break}if((q|0)==24){q=0;if((c|0)==(p|0)){i=1;break a}}if((g|0)<=0){i=0;break}}}while(0);g=f[r>>2]|0;if(g|0){h=f[m>>2]|0;if((h|0)!=(g|0))f[m>>2]=h+(~((h+-4-g|0)>>>2)<<2);Lq(g)}if((i|0)!=0|o){a=0;u=t;return a|0}}g=f[a>>2]|0;h=0;i=0;do{f[g+(h<<3)+4>>2]=i;i=(f[g+(h<<3)>>2]|0)+i|0;h=h+1|0}while((h|0)!=(s|0));if((i|0)!=4096){a=0;u=t;return a|0}if(o)e=0.0;else{h=f[a>>2]|0;i=0;e=0.0;do{g=f[h+(i<<3)>>2]|0;if(g){r=b+(i<<3)|0;v=+((f[r>>2]|0)>>>0)+4294967296.0*+((f[r+4>>2]|0)>>>0);e=e+v*+Xh(+(g>>>0)*.000244140625)}i=i+1|0}while((i|0)!=(s|0))}v=+W(+-e);s=+K(v)>=1.0?(v>0.0?~~+Y(+J(v/4294967296.0),4294967295.0)>>>0:~~+W((v-+(~~v>>>0))/4294967296.0)>>>0):0;b=a+16|0;f[b>>2]=~~v>>>0;f[b+4>>2]=s;a=De(a,d)|0;u=t;return a|0}function ed(a,b,c,d){a=a|0;b=b|0;c=c|0;d=d|0;var e=0.0,g=0,h=0,i=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,v=0.0;t=u;u=u+16|0;n=t;r=t+4|0;if((c|0)>16){a=0;u=t;return a|0}if((c|0)>0){h=0;g=0;j=0;i=0;do{s=b+(j<<3)|0;p=f[s>>2]|0;s=f[s+4>>2]|0;h=Do(p|0,s|0,h|0,g|0)|0;g=I;i=(p|0)==0&(s|0)==0?i:j;j=j+1|0}while((j|0)!=(c|0));p=i}else{g=0;h=0;p=0}s=p+1|0;f[a+12>>2]=s;c=a+4|0;j=f[c>>2]|0;i=f[a>>2]|0;k=j-i>>3;if(s>>>0<=k>>>0){if(s>>>0>>0?(l=i+(s<<3)|0,(j|0)!=(l|0)):0)f[c>>2]=j+(~((j+-8-l|0)>>>3)<<3)}else ai(a,s-k|0);e=+(h>>>0)+4294967296.0*+(g>>>0);o=(p|0)<0;if(!o){g=f[a>>2]|0;h=0;i=0;do{l=b+(h<<3)|0;k=f[l>>2]|0;l=f[l+4>>2]|0;m=~~((+(k>>>0)+4294967296.0*+(l>>>0))/e*4096.0+.5)>>>0;m=((k|0)!=0|(l|0)!=0)&(m|0)==0?1:m;f[g+(h<<3)>>2]=m;i=m+i|0;h=h+1|0}while((h|0)!=(s|0));if((i|0)==4096){if(o){a=0;u=t;return a|0}}else q=13}else{i=0;q=13}if((q|0)==13){ml(r,s);h=f[r>>2]|0;if(!o){g=0;do{f[h+(g<<2)>>2]=g;g=g+1|0}while((g|0)!=(s|0))}m=r+4|0;l=f[m>>2]|0;f[n>>2]=a;Bb(h,l,n);a:do if((i|0)<4096){q=(f[a>>2]|0)+(f[(f[m>>2]|0)+-4>>2]<<3)|0;f[q>>2]=4096-i+(f[q>>2]|0);i=0}else{if((p|0)<=0){g=(i|0)>4096;while(1)if(!g){i=0;break a}}k=f[r>>2]|0;l=f[a>>2]|0;g=i+-4096|0;while(1){e=4096.0/+(i|0);c=p;while(1){j=l+(f[k+(c<<2)>>2]<<3)|0;h=f[j>>2]|0;if(h>>>0<2){q=24;break}n=h-~~+J(+(e*+(h>>>0)))|0;n=(n|0)==0?1:n;n=(n|0)<(h|0)?n:h+-1|0;n=(n|0)>(g|0)?g:n;f[j>>2]=h-n;i=i-n|0;g=g-n|0;if((i|0)==4096){i=4096;break}if((c|0)>1)c=c+-1|0;else break}if((q|0)==24){q=0;if((c|0)==(p|0)){i=1;break a}}if((g|0)<=0){i=0;break}}}while(0);g=f[r>>2]|0;if(g|0){h=f[m>>2]|0;if((h|0)!=(g|0))f[m>>2]=h+(~((h+-4-g|0)>>>2)<<2);Lq(g)}if((i|0)!=0|o){a=0;u=t;return a|0}}g=f[a>>2]|0;h=0;i=0;do{f[g+(h<<3)+4>>2]=i;i=(f[g+(h<<3)>>2]|0)+i|0;h=h+1|0}while((h|0)!=(s|0));if((i|0)!=4096){a=0;u=t;return a|0}if(o)e=0.0;else{h=f[a>>2]|0;i=0;e=0.0;do{g=f[h+(i<<3)>>2]|0;if(g){r=b+(i<<3)|0;v=+((f[r>>2]|0)>>>0)+4294967296.0*+((f[r+4>>2]|0)>>>0);e=e+v*+Xh(+(g>>>0)*.000244140625)}i=i+1|0}while((i|0)!=(s|0))}v=+W(+-e);s=+K(v)>=1.0?(v>0.0?~~+Y(+J(v/4294967296.0),4294967295.0)>>>0:~~+W((v-+(~~v>>>0))/4294967296.0)>>>0):0;b=a+16|0;f[b>>2]=~~v>>>0;f[b+4>>2]=s;a=De(a,d)|0;u=t;return a|0}function fd(a,b,c,d){a=a|0;b=b|0;c=c|0;d=d|0;var e=0.0,g=0,h=0,i=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,v=0.0;t=u;u=u+16|0;n=t;r=t+4|0;if((c|0)>8){a=0;u=t;return a|0}if((c|0)>0){h=0;g=0;j=0;i=0;do{s=b+(j<<3)|0;p=f[s>>2]|0;s=f[s+4>>2]|0;h=Do(p|0,s|0,h|0,g|0)|0;g=I;i=(p|0)==0&(s|0)==0?i:j;j=j+1|0}while((j|0)!=(c|0));p=i}else{g=0;h=0;p=0}s=p+1|0;f[a+12>>2]=s;c=a+4|0;j=f[c>>2]|0;i=f[a>>2]|0;k=j-i>>3;if(s>>>0<=k>>>0){if(s>>>0>>0?(l=i+(s<<3)|0,(j|0)!=(l|0)):0)f[c>>2]=j+(~((j+-8-l|0)>>>3)<<3)}else ai(a,s-k|0);e=+(h>>>0)+4294967296.0*+(g>>>0);o=(p|0)<0;if(!o){g=f[a>>2]|0;h=0;i=0;do{l=b+(h<<3)|0;k=f[l>>2]|0;l=f[l+4>>2]|0;m=~~((+(k>>>0)+4294967296.0*+(l>>>0))/e*4096.0+.5)>>>0;m=((k|0)!=0|(l|0)!=0)&(m|0)==0?1:m;f[g+(h<<3)>>2]=m;i=m+i|0;h=h+1|0}while((h|0)!=(s|0));if((i|0)==4096){if(o){a=0;u=t;return a|0}}else q=13}else{i=0;q=13}if((q|0)==13){ml(r,s);h=f[r>>2]|0;if(!o){g=0;do{f[h+(g<<2)>>2]=g;g=g+1|0}while((g|0)!=(s|0))}m=r+4|0;l=f[m>>2]|0;f[n>>2]=a;Eb(h,l,n);a:do if((i|0)<4096){q=(f[a>>2]|0)+(f[(f[m>>2]|0)+-4>>2]<<3)|0;f[q>>2]=4096-i+(f[q>>2]|0);i=0}else{if((p|0)<=0){g=(i|0)>4096;while(1)if(!g){i=0;break a}}k=f[r>>2]|0;l=f[a>>2]|0;g=i+-4096|0;while(1){e=4096.0/+(i|0);c=p;while(1){j=l+(f[k+(c<<2)>>2]<<3)|0;h=f[j>>2]|0;if(h>>>0<2){q=24;break}n=h-~~+J(+(e*+(h>>>0)))|0;n=(n|0)==0?1:n;n=(n|0)<(h|0)?n:h+-1|0;n=(n|0)>(g|0)?g:n;f[j>>2]=h-n;i=i-n|0;g=g-n|0;if((i|0)==4096){i=4096;break}if((c|0)>1)c=c+-1|0;else break}if((q|0)==24){q=0;if((c|0)==(p|0)){i=1;break a}}if((g|0)<=0){i=0;break}}}while(0);g=f[r>>2]|0;if(g|0){h=f[m>>2]|0;if((h|0)!=(g|0))f[m>>2]=h+(~((h+-4-g|0)>>>2)<<2);Lq(g)}if((i|0)!=0|o){a=0;u=t;return a|0}}g=f[a>>2]|0;h=0;i=0;do{f[g+(h<<3)+4>>2]=i;i=(f[g+(h<<3)>>2]|0)+i|0;h=h+1|0}while((h|0)!=(s|0));if((i|0)!=4096){a=0;u=t;return a|0}if(o)e=0.0;else{h=f[a>>2]|0;i=0;e=0.0;do{g=f[h+(i<<3)>>2]|0;if(g){r=b+(i<<3)|0;v=+((f[r>>2]|0)>>>0)+4294967296.0*+((f[r+4>>2]|0)>>>0);e=e+v*+Xh(+(g>>>0)*.000244140625)}i=i+1|0}while((i|0)!=(s|0))}v=+W(+-e);s=+K(v)>=1.0?(v>0.0?~~+Y(+J(v/4294967296.0),4294967295.0)>>>0:~~+W((v-+(~~v>>>0))/4294967296.0)>>>0):0;b=a+16|0;f[b>>2]=~~v>>>0;f[b+4>>2]=s;a=De(a,d)|0;u=t;return a|0}function gd(a,b,c,d){a=a|0;b=b|0;c=c|0;d=d|0;var e=0.0,g=0,h=0,i=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,v=0.0;t=u;u=u+16|0;n=t;r=t+4|0;if((c|0)>4){a=0;u=t;return a|0}if((c|0)>0){h=0;g=0;j=0;i=0;do{s=b+(j<<3)|0;p=f[s>>2]|0;s=f[s+4>>2]|0;h=Do(p|0,s|0,h|0,g|0)|0;g=I;i=(p|0)==0&(s|0)==0?i:j;j=j+1|0}while((j|0)!=(c|0));p=i}else{g=0;h=0;p=0}s=p+1|0;f[a+12>>2]=s;c=a+4|0;j=f[c>>2]|0;i=f[a>>2]|0;k=j-i>>3;if(s>>>0<=k>>>0){if(s>>>0>>0?(l=i+(s<<3)|0,(j|0)!=(l|0)):0)f[c>>2]=j+(~((j+-8-l|0)>>>3)<<3)}else ai(a,s-k|0);e=+(h>>>0)+4294967296.0*+(g>>>0);o=(p|0)<0;if(!o){g=f[a>>2]|0;h=0;i=0;do{l=b+(h<<3)|0;k=f[l>>2]|0;l=f[l+4>>2]|0;m=~~((+(k>>>0)+4294967296.0*+(l>>>0))/e*4096.0+.5)>>>0;m=((k|0)!=0|(l|0)!=0)&(m|0)==0?1:m;f[g+(h<<3)>>2]=m;i=m+i|0;h=h+1|0}while((h|0)!=(s|0));if((i|0)==4096){if(o){a=0;u=t;return a|0}}else q=13}else{i=0;q=13}if((q|0)==13){ml(r,s);h=f[r>>2]|0;if(!o){g=0;do{f[h+(g<<2)>>2]=g;g=g+1|0}while((g|0)!=(s|0))}m=r+4|0;l=f[m>>2]|0;f[n>>2]=a;Cb(h,l,n);a:do if((i|0)<4096){q=(f[a>>2]|0)+(f[(f[m>>2]|0)+-4>>2]<<3)|0;f[q>>2]=4096-i+(f[q>>2]|0);i=0}else{if((p|0)<=0){g=(i|0)>4096;while(1)if(!g){i=0;break a}}k=f[r>>2]|0;l=f[a>>2]|0;g=i+-4096|0;while(1){e=4096.0/+(i|0);c=p;while(1){j=l+(f[k+(c<<2)>>2]<<3)|0;h=f[j>>2]|0;if(h>>>0<2){q=24;break}n=h-~~+J(+(e*+(h>>>0)))|0;n=(n|0)==0?1:n;n=(n|0)<(h|0)?n:h+-1|0;n=(n|0)>(g|0)?g:n;f[j>>2]=h-n;i=i-n|0;g=g-n|0;if((i|0)==4096){i=4096;break}if((c|0)>1)c=c+-1|0;else break}if((q|0)==24){q=0;if((c|0)==(p|0)){i=1;break a}}if((g|0)<=0){i=0;break}}}while(0);g=f[r>>2]|0;if(g|0){h=f[m>>2]|0;if((h|0)!=(g|0))f[m>>2]=h+(~((h+-4-g|0)>>>2)<<2);Lq(g)}if((i|0)!=0|o){a=0;u=t;return a|0}}g=f[a>>2]|0;h=0;i=0;do{f[g+(h<<3)+4>>2]=i;i=(f[g+(h<<3)>>2]|0)+i|0;h=h+1|0}while((h|0)!=(s|0));if((i|0)!=4096){a=0;u=t;return a|0}if(o)e=0.0;else{h=f[a>>2]|0;i=0;e=0.0;do{g=f[h+(i<<3)>>2]|0;if(g){r=b+(i<<3)|0;v=+((f[r>>2]|0)>>>0)+4294967296.0*+((f[r+4>>2]|0)>>>0);e=e+v*+Xh(+(g>>>0)*.000244140625)}i=i+1|0}while((i|0)!=(s|0))}v=+W(+-e);s=+K(v)>=1.0?(v>0.0?~~+Y(+J(v/4294967296.0),4294967295.0)>>>0:~~+W((v-+(~~v>>>0))/4294967296.0)>>>0):0;b=a+16|0;f[b>>2]=~~v>>>0;f[b+4>>2]=s;a=De(a,d)|0;u=t;return a|0}function hd(a,b,c,d){a=a|0;b=b|0;c=c|0;d=d|0;var e=0.0,g=0,h=0,i=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,v=0.0;t=u;u=u+16|0;n=t;r=t+4|0;if((c|0)>2){a=0;u=t;return a|0}if((c|0)>0){h=0;g=0;j=0;i=0;do{s=b+(j<<3)|0;p=f[s>>2]|0;s=f[s+4>>2]|0;h=Do(p|0,s|0,h|0,g|0)|0;g=I;i=(p|0)==0&(s|0)==0?i:j;j=j+1|0}while((j|0)!=(c|0));p=i}else{g=0;h=0;p=0}s=p+1|0;f[a+12>>2]=s;c=a+4|0;j=f[c>>2]|0;i=f[a>>2]|0;k=j-i>>3;if(s>>>0<=k>>>0){if(s>>>0>>0?(l=i+(s<<3)|0,(j|0)!=(l|0)):0)f[c>>2]=j+(~((j+-8-l|0)>>>3)<<3)}else ai(a,s-k|0);e=+(h>>>0)+4294967296.0*+(g>>>0);o=(p|0)<0;if(!o){g=f[a>>2]|0;h=0;i=0;do{l=b+(h<<3)|0;k=f[l>>2]|0;l=f[l+4>>2]|0;m=~~((+(k>>>0)+4294967296.0*+(l>>>0))/e*4096.0+.5)>>>0;m=((k|0)!=0|(l|0)!=0)&(m|0)==0?1:m;f[g+(h<<3)>>2]=m;i=m+i|0;h=h+1|0}while((h|0)!=(s|0));if((i|0)==4096){if(o){a=0;u=t;return a|0}}else q=13}else{i=0;q=13}if((q|0)==13){ml(r,s);h=f[r>>2]|0;if(!o){g=0;do{f[h+(g<<2)>>2]=g;g=g+1|0}while((g|0)!=(s|0))}m=r+4|0;l=f[m>>2]|0;f[n>>2]=a;Db(h,l,n);a:do if((i|0)<4096){q=(f[a>>2]|0)+(f[(f[m>>2]|0)+-4>>2]<<3)|0;f[q>>2]=4096-i+(f[q>>2]|0);i=0}else{if((p|0)<=0){g=(i|0)>4096;while(1)if(!g){i=0;break a}}k=f[r>>2]|0;l=f[a>>2]|0;g=i+-4096|0;while(1){e=4096.0/+(i|0);c=p;while(1){j=l+(f[k+(c<<2)>>2]<<3)|0;h=f[j>>2]|0;if(h>>>0<2){q=24;break}n=h-~~+J(+(e*+(h>>>0)))|0;n=(n|0)==0?1:n;n=(n|0)<(h|0)?n:h+-1|0;n=(n|0)>(g|0)?g:n;f[j>>2]=h-n;i=i-n|0;g=g-n|0;if((i|0)==4096){i=4096;break}if((c|0)>1)c=c+-1|0;else break}if((q|0)==24){q=0;if((c|0)==(p|0)){i=1;break a}}if((g|0)<=0){i=0;break}}}while(0);g=f[r>>2]|0;if(g|0){h=f[m>>2]|0;if((h|0)!=(g|0))f[m>>2]=h+(~((h+-4-g|0)>>>2)<<2);Lq(g)}if((i|0)!=0|o){a=0;u=t;return a|0}}g=f[a>>2]|0;h=0;i=0;do{f[g+(h<<3)+4>>2]=i;i=(f[g+(h<<3)>>2]|0)+i|0;h=h+1|0}while((h|0)!=(s|0));if((i|0)!=4096){a=0;u=t;return a|0}if(o)e=0.0;else{h=f[a>>2]|0;i=0;e=0.0;do{g=f[h+(i<<3)>>2]|0;if(g){r=b+(i<<3)|0;v=+((f[r>>2]|0)>>>0)+4294967296.0*+((f[r+4>>2]|0)>>>0);e=e+v*+Xh(+(g>>>0)*.000244140625)}i=i+1|0}while((i|0)!=(s|0))}v=+W(+-e);s=+K(v)>=1.0?(v>0.0?~~+Y(+J(v/4294967296.0),4294967295.0)>>>0:~~+W((v-+(~~v>>>0))/4294967296.0)>>>0):0;b=a+16|0;f[b>>2]=~~v>>>0;f[b+4>>2]=s;a=De(a,d)|0;u=t;return a|0}function id(a,b,c,d,e,g){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;g=g|0;var h=0,i=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0;r=f[a+32>>2]|0;s=f[a+36>>2]|0;y=e>>>0>1073741823?-1:e<<2;v=Iq(y)|0;Xj(v|0,0,y|0)|0;w=Iq(y)|0;Xj(w|0,0,y|0)|0;y=a+40|0;h=f[y>>2]|0;d=f[h+4>>2]|0;g=f[h>>2]|0;i=d-g|0;a:do if((i|0)>4){x=(e|0)>0;z=a+8|0;u=r+12|0;t=e<<2;p=i>>2;while(1){q=p+-1|0;if(d-g>>2>>>0<=q>>>0){yp(h);g=f[h>>2]|0}o=f[g+(q<<2)>>2]|0;if(x)Xj(v|0,0,t|0)|0;if((o|0)>-1){n=f[u>>2]|0;m=o;l=0;while(1){d=f[n+(m<<2)>>2]|0;if((d|0)>=0){h=f[r>>2]|0;i=f[s>>2]|0;k=f[i+(f[h+(d<<2)>>2]<<2)>>2]|0;g=d+1|0;g=((g|0)%3|0|0)==0?d+-2|0:g;if((g|0)<0)g=-1073741824;else g=f[h+(g<<2)>>2]|0;j=f[i+(g<<2)>>2]|0;g=(((d>>>0)%3|0|0)==0?2:-1)+d|0;if((g|0)<0)g=-1073741824;else g=f[h+(g<<2)>>2]|0;g=f[i+(g<<2)>>2]|0;if((k|0)<(q|0)&(j|0)<(q|0)&(g|0)<(q|0)){i=X(k,e)|0;h=X(j,e)|0;d=X(g,e)|0;if(x){g=0;do{f[w+(g<<2)>>2]=(f[b+(g+d<<2)>>2]|0)+(f[b+(g+h<<2)>>2]|0)-(f[b+(g+i<<2)>>2]|0);g=g+1|0}while((g|0)!=(e|0));if(x){g=0;do{k=v+(g<<2)|0;f[k>>2]=(f[k>>2]|0)+(f[w+(g<<2)>>2]|0);g=g+1|0}while((g|0)!=(e|0))}}h=l+1|0}else h=l}else h=l;g=(((m>>>0)%3|0|0)==0?2:-1)+m|0;do if((g|0)>=0){g=f[n+(g<<2)>>2]|0;if((g|0)>=0)if(!((g>>>0)%3|0)){g=g+2|0;break}else{g=g+-1|0;break}}while(0);m=(g|0)==(o|0)?-1073741824:g;if((m|0)<=-1)break;else l=h}g=X(q,e)|0;if(!h)A=32;else{if(x){d=0;do{p=v+(d<<2)|0;f[p>>2]=(f[p>>2]|0)/(h|0)|0;d=d+1|0}while((d|0)!=(e|0))}aj(z,b+(g<<2)|0,v,c+(g<<2)|0)}}else{g=X(q,e)|0;A=32}if((A|0)==32){A=0;aj(z,b+(g<<2)|0,b+((X(p+-2|0,e)|0)<<2)|0,c+(g<<2)|0)}if((q|0)<=1)break a;g=f[y>>2]|0;d=f[g+4>>2]|0;h=g;g=f[g>>2]|0;p=q}}while(0);if((e|0)<=0){A=a+8|0;aj(A,b,v,c);Jq(w);Jq(v);return 1}Xj(v|0,0,e<<2|0)|0;A=a+8|0;aj(A,b,v,c);Jq(w);Jq(v);return 1}function jd(a,b,c,d,e,g){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;g=g|0;var h=0,i=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,B=0,C=0,D=0;p=f[a+32>>2]|0;q=f[a+36>>2]|0;x=e>>>0>1073741823?-1:e<<2;t=Iq(x)|0;Xj(t|0,0,x|0)|0;u=Iq(x)|0;Xj(u|0,0,x|0)|0;x=a+40|0;h=f[x>>2]|0;d=f[h+4>>2]|0;g=f[h>>2]|0;i=d-g|0;a:do if((i|0)>4){v=(e|0)>0;y=a+8|0;w=p+64|0;s=p+28|0;r=e<<2;n=i>>2;while(1){o=n+-1|0;if(d-g>>2>>>0<=o>>>0){yp(h);g=f[h>>2]|0}m=f[g+(o<<2)>>2]|0;if(v)Xj(t|0,0,r|0)|0;if((m|0)>-1){l=f[p>>2]|0;k=m;j=0;do{if(((f[l+(k>>>5<<2)>>2]&1<<(k&31)|0)==0?(C=f[(f[(f[w>>2]|0)+12>>2]|0)+(k<<2)>>2]|0,(C|0)>=0):0)?(B=f[s>>2]|0,i=f[q>>2]|0,z=f[i+(f[B+(C<<2)>>2]<<2)>>2]|0,A=C+1|0,A=f[i+(f[B+((((A|0)%3|0|0)==0?C+-2|0:A)<<2)>>2]<<2)>>2]|0,B=f[i+(f[B+((((C>>>0)%3|0|0)==0?2:-1)+C<<2)>>2]<<2)>>2]|0,(z|0)<(o|0)&(A|0)<(o|0)&(B|0)<(o|0)):0){d=X(z,e)|0;h=X(A,e)|0;i=X(B,e)|0;if(v){g=0;do{f[u+(g<<2)>>2]=(f[b+(g+i<<2)>>2]|0)+(f[b+(g+h<<2)>>2]|0)-(f[b+(g+d<<2)>>2]|0);g=g+1|0}while((g|0)!=(e|0));if(v){g=0;do{i=t+(g<<2)|0;f[i>>2]=(f[i>>2]|0)+(f[u+(g<<2)>>2]|0);g=g+1|0}while((g|0)!=(e|0))}}j=j+1|0}g=(((k>>>0)%3|0|0)==0?2:-1)+k|0;do if(!(f[l+(g>>>5<<2)>>2]&1<<(g&31))){if((g|0)>=0){g=f[(f[(f[w>>2]|0)+12>>2]|0)+(g<<2)>>2]|0;if((g|0)>=0)if(!((g>>>0)%3|0)){g=g+2|0;break}else{g=g+-1|0;break}}}else g=-1073741824;while(0);k=(g|0)==(m|0)?-1073741824:g}while((k|0)>-1);g=X(o,e)|0;if(!j)D=30;else{if(v){d=0;do{n=t+(d<<2)|0;f[n>>2]=(f[n>>2]|0)/(j|0)|0;d=d+1|0}while((d|0)!=(e|0))}aj(y,b+(g<<2)|0,t,c+(g<<2)|0)}}else{g=X(o,e)|0;D=30}if((D|0)==30){D=0;aj(y,b+(g<<2)|0,b+((X(n+-2|0,e)|0)<<2)|0,c+(g<<2)|0)}if((o|0)<=1)break a;g=f[x>>2]|0;d=f[g+4>>2]|0;h=g;g=f[g>>2]|0;n=o}}while(0);if((e|0)<=0){D=a+8|0;aj(D,b,t,c);Jq(u);Jq(t);return 1}Xj(t|0,0,e<<2|0)|0;D=a+8|0;aj(D,b,t,c);Jq(u);Jq(t);return 1}function kd(a,c,d,e){a=a|0;c=c|0;d=d|0;e=e|0;var g=0,h=0,i=0,j=0,k=0,l=0,m=0;m=u;u=u+16|0;j=m+8|0;i=m+4|0;k=m;l=m+12|0;f[k>>2]=0;if(!d)if((c|0)>0){g=0;h=0;while(1){d=f[a+(h<<2)>>2]|0;if(d>>>0>g>>>0)f[k>>2]=d;else d=g;h=h+1|0;if((h|0)==(c|0)){g=7;break}else g=d}}else d=1;else{d=f[d>>2]|0;f[k>>2]=d;g=7}if((g|0)==7){g=((_(d|0)|0)^31)+1|0;if(d)if(g>>>0>18){e=0;u=m;return e|0}else d=g;else d=1}b[l>>0]=d;h=e+16|0;g=f[h+4>>2]|0;if(!((g|0)>0|(g|0)==0&(f[h>>2]|0)>>>0>0)){f[i>>2]=f[e+4>>2];f[j>>2]=f[i>>2];vf(e,j,l,l+1|0)|0}do switch(d|0){case 1:case 0:{e=jf(a,c,k,e)|0;u=m;return e|0}case 2:{e=hf(a,c,k,e)|0;u=m;return e|0}case 3:{e=gf(a,c,k,e)|0;u=m;return e|0}case 4:{e=ff(a,c,k,e)|0;u=m;return e|0}case 5:{e=ef(a,c,k,e)|0;u=m;return e|0}case 6:{e=df(a,c,k,e)|0;u=m;return e|0}case 7:{e=cf(a,c,k,e)|0;u=m;return e|0}case 8:{e=bf(a,c,k,e)|0;u=m;return e|0}case 9:{e=af(a,c,k,e)|0;u=m;return e|0}case 10:{e=_e(a,c,k,e)|0;u=m;return e|0}case 11:{e=Ze(a,c,k,e)|0;u=m;return e|0}case 12:{e=Ye(a,c,k,e)|0;u=m;return e|0}case 13:{e=Xe(a,c,k,e)|0;u=m;return e|0}case 14:{e=We(a,c,k,e)|0;u=m;return e|0}case 15:{e=Ve(a,c,k,e)|0;u=m;return e|0}case 16:{e=Ue(a,c,k,e)|0;u=m;return e|0}case 17:{e=Te(a,c,k,e)|0;u=m;return e|0}case 18:{e=Se(a,c,k,e)|0;u=m;return e|0}default:{e=0;u=m;return e|0}}while(0);return 0}function ld(a,b){a=a|0;b=b|0;var c=0,d=0,e=0,g=0,h=0,i=0,j=0,k=0,l=0,m=0;if((b|0)<0)return;m=a+12|0;l=f[m>>2]|0;c=f[a+8>>2]|0;j=l;if(l-c>>2>>>0<=b>>>0)return;d=c+(b<<2)|0;l=f[(f[d>>2]|0)+56>>2]|0;c=d+4|0;if((c|0)!=(j|0)){do{h=f[c>>2]|0;f[c>>2]=0;i=f[d>>2]|0;f[d>>2]=h;if(i|0){h=i+88|0;e=f[h>>2]|0;f[h>>2]=0;if(e|0){g=f[e+8>>2]|0;if(g|0){h=e+12|0;if((f[h>>2]|0)!=(g|0))f[h>>2]=g;Lq(g)}Lq(e)}e=f[i+68>>2]|0;if(e|0){h=i+72|0;g=f[h>>2]|0;if((g|0)!=(e|0))f[h>>2]=g+(~((g+-4-e|0)>>>2)<<2);Lq(e)}h=i+64|0;e=f[h>>2]|0;f[h>>2]=0;if(e|0){g=f[e>>2]|0;if(g|0){h=e+4|0;if((f[h>>2]|0)!=(g|0))f[h>>2]=g;Lq(g)}Lq(e)}Lq(i)}c=c+4|0;d=d+4|0}while((c|0)!=(j|0));c=f[m>>2]|0;if((c|0)!=(d|0)){h=d;k=24}}else{c=j;h=d;k=24}if((k|0)==24)do{k=c+-4|0;f[m>>2]=k;g=f[k>>2]|0;f[k>>2]=0;if(g|0){k=g+88|0;c=f[k>>2]|0;f[k>>2]=0;if(c|0){d=f[c+8>>2]|0;if(d|0){e=c+12|0;if((f[e>>2]|0)!=(d|0))f[e>>2]=d;Lq(d)}Lq(c)}c=f[g+68>>2]|0;if(c|0){e=g+72|0;d=f[e>>2]|0;if((d|0)!=(c|0))f[e>>2]=d+(~((d+-4-c|0)>>>2)<<2);Lq(c)}k=g+64|0;c=f[k>>2]|0;f[k>>2]=0;if(c|0){d=f[c>>2]|0;if(d|0){e=c+4|0;if((f[e>>2]|0)!=(d|0))f[e>>2]=d;Lq(d)}Lq(c)}Lq(g)}c=f[m>>2]|0}while((c|0)!=(h|0));a:do if((l|0)<4){c=f[a+20+(l*12|0)>>2]|0;i=a+20+(l*12|0)+4|0;d=f[i>>2]|0;e=d;b:do if((c|0)!=(d|0))while(1){if((f[c>>2]|0)==(b|0))break b;c=c+4|0;if((c|0)==(d|0))break a}while(0);if((c|0)!=(d|0)){g=c+4|0;e=e-g|0;h=e>>2;if(h){Om(c|0,g|0,e|0)|0;d=f[i>>2]|0}c=c+(h<<2)|0;if((d|0)!=(c|0))f[i>>2]=d+(~((d+-4-c|0)>>>2)<<2)}}while(0);c=f[a+24>>2]|0;d=f[a+20>>2]|0;h=d;if((c|0)!=(d|0)){g=c-d>>2;e=0;do{d=h+(e<<2)|0;c=f[d>>2]|0;if((c|0)>(b|0))f[d>>2]=c+-1;e=e+1|0}while(e>>>0>>0)}c=f[a+36>>2]|0;d=f[a+32>>2]|0;h=d;if((c|0)!=(d|0)){g=c-d>>2;e=0;do{d=h+(e<<2)|0;c=f[d>>2]|0;if((c|0)>(b|0))f[d>>2]=c+-1;e=e+1|0}while(e>>>0>>0)}c=f[a+48>>2]|0;d=f[a+44>>2]|0;h=d;if((c|0)!=(d|0)){g=c-d>>2;e=0;do{d=h+(e<<2)|0;c=f[d>>2]|0;if((c|0)>(b|0))f[d>>2]=c+-1;e=e+1|0}while(e>>>0>>0)}d=f[a+60>>2]|0;c=f[a+56>>2]|0;h=c;if((d|0)==(c|0))return;g=d-c>>2;e=0;do{d=h+(e<<2)|0;c=f[d>>2]|0;if((c|0)>(b|0))f[d>>2]=c+-1;e=e+1|0}while(e>>>0>>0);return}function md(a,b){a=a|0;b=b|0;var c=0,d=0,e=0,g=0,h=0,i=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,v=0,w=0,x=0;x=u;u=u+1264|0;t=x+1252|0;q=x+1248|0;v=x+16|0;d=x+1244|0;i=x+1240|0;w=x+8|0;r=x+1236|0;e=x+1232|0;g=x+1228|0;h=x+1224|0;j=x+1220|0;k=x+1216|0;l=x+1212|0;m=x+1208|0;n=x+1204|0;o=x+12|0;p=x+4|0;s=x;c=f[a+48>>2]|0;if(c>>>0>=7)Fa(16185,16213,45,16310);switch(c|0){case 0:{yi(v,3);f[d>>2]=f[b>>2];f[i>>2]=f[b+4>>2];f[w>>2]=(f[a>>2]|0)+1;f[q>>2]=f[d>>2];f[t>>2]=f[i>>2];ug(v,q,t,w,a+16|0)|0;ng(v);u=x;return 1}case 1:{yi(v,3);f[r>>2]=f[b>>2];f[e>>2]=f[b+4>>2];f[w>>2]=(f[a>>2]|0)+1;f[q>>2]=f[r>>2];f[t>>2]=f[e>>2];ug(v,q,t,w,a+16|0)|0;ng(v);u=x;return 1}case 2:{zi(v,3);f[g>>2]=f[b>>2];f[h>>2]=f[b+4>>2];f[w>>2]=(f[a>>2]|0)+1;f[q>>2]=f[g>>2];f[t>>2]=f[h>>2];wg(v,q,t,w,a+16|0)|0;og(v);u=x;return 1}case 3:{zi(v,3);f[j>>2]=f[b>>2];f[k>>2]=f[b+4>>2];f[w>>2]=(f[a>>2]|0)+1;f[q>>2]=f[j>>2];f[t>>2]=f[k>>2];wg(v,q,t,w,a+16|0)|0;og(v);u=x;return 1}case 4:{ii(v,3);f[l>>2]=f[b>>2];f[m>>2]=f[b+4>>2];f[w>>2]=(f[a>>2]|0)+1;f[q>>2]=f[l>>2];f[t>>2]=f[m>>2];Wf(v,q,t,w,a+16|0)|0;Tf(v);u=x;return 1}case 5:{ii(v,3);f[n>>2]=f[b>>2];f[o>>2]=f[b+4>>2];f[w>>2]=(f[a>>2]|0)+1;f[q>>2]=f[n>>2];f[t>>2]=f[o>>2];Wf(v,q,t,w,a+16|0)|0;Tf(v);u=x;return 1}default:{ii(v,3);f[p>>2]=f[b>>2];f[s>>2]=f[b+4>>2];f[w>>2]=(f[a>>2]|0)+1;f[q>>2]=f[p>>2];f[t>>2]=f[s>>2];Vf(v,q,t,w,a+16|0)|0;Tf(v);u=x;return 1}}return 0}function nd(a,c,d){a=a|0;c=c|0;d=d|0;var e=0,g=0,i=0,j=Ka,k=Ka,l=Ka,m=Ka;switch(b[a+24>>0]|0){case 1:{g=f[c>>2]|0;c=a+48|0;e=f[c>>2]|0;c=f[c+4>>2]|0;i=a+40|0;a=(Do(En(f[i>>2]|0,f[i+4>>2]|0,g|0,((g|0)<0)<<31>>31|0)|0,I|0,e|0,c|0)|0)+(f[f[a>>2]>>2]|0)|0;b[s>>0]=b[a>>0];b[s+1>>0]=b[a+1>>0];b[s+2>>0]=b[a+2>>0];b[s+3>>0]=b[a+3>>0];a=~~$(n[s>>2]);f[d>>2]=a;a=d+4|0;f[a>>2]=0;f[a+4>>2]=0;f[a+8>>2]=0;a=1;return a|0}case 2:{e=f[c>>2]|0;i=a+48|0;g=f[i>>2]|0;i=f[i+4>>2]|0;c=a+40|0;i=(Do(En(f[c>>2]|0,f[c+4>>2]|0,e|0,((e|0)<0)<<31>>31|0)|0,I|0,g|0,i|0)|0)+(f[f[a>>2]>>2]|0)|0;g=i;i=i+4|0;i=h[i>>0]|h[i+1>>0]<<8|h[i+2>>0]<<16|h[i+3>>0]<<24;g=~~(f[s>>2]=h[g>>0]|h[g+1>>0]<<8|h[g+2>>0]<<16|h[g+3>>0]<<24,$(n[s>>2]));f[d>>2]=g;i=~~(f[s>>2]=i,$(n[s>>2]));f[d+4>>2]=i;i=d+8|0;f[i>>2]=0;f[i+4>>2]=0;i=1;return i|0}case 3:{e=f[c>>2]|0;i=a+48|0;g=f[i>>2]|0;i=f[i+4>>2]|0;c=a+40|0;i=(Do(En(f[c>>2]|0,f[c+4>>2]|0,e|0,((e|0)<0)<<31>>31|0)|0,I|0,g|0,i|0)|0)+(f[f[a>>2]>>2]|0)|0;b[s>>0]=b[i>>0];b[s+1>>0]=b[i+1>>0];b[s+2>>0]=b[i+2>>0];b[s+3>>0]=b[i+3>>0];l=$(n[s>>2]);g=i+4|0;b[s>>0]=b[g>>0];b[s+1>>0]=b[g+1>>0];b[s+2>>0]=b[g+2>>0];b[s+3>>0]=b[g+3>>0];k=$(n[s>>2]);i=i+8|0;b[s>>0]=b[i>>0];b[s+1>>0]=b[i+1>>0];b[s+2>>0]=b[i+2>>0];b[s+3>>0]=b[i+3>>0];j=$(n[s>>2]);f[d>>2]=~~l;f[d+4>>2]=~~k;f[d+8>>2]=~~j;f[d+12>>2]=0;i=1;return i|0}case 4:{e=f[c>>2]|0;i=a+48|0;g=f[i>>2]|0;i=f[i+4>>2]|0;c=a+40|0;i=(Do(En(f[c>>2]|0,f[c+4>>2]|0,e|0,((e|0)<0)<<31>>31|0)|0,I|0,g|0,i|0)|0)+(f[f[a>>2]>>2]|0)|0;b[s>>0]=b[i>>0];b[s+1>>0]=b[i+1>>0];b[s+2>>0]=b[i+2>>0];b[s+3>>0]=b[i+3>>0];m=$(n[s>>2]);g=i+4|0;b[s>>0]=b[g>>0];b[s+1>>0]=b[g+1>>0];b[s+2>>0]=b[g+2>>0];b[s+3>>0]=b[g+3>>0];j=$(n[s>>2]);g=i+8|0;b[s>>0]=b[g>>0];b[s+1>>0]=b[g+1>>0];b[s+2>>0]=b[g+2>>0];b[s+3>>0]=b[g+3>>0];k=$(n[s>>2]);i=i+12|0;b[s>>0]=b[i>>0];b[s+1>>0]=b[i+1>>0];b[s+2>>0]=b[i+2>>0];b[s+3>>0]=b[i+3>>0];l=$(n[s>>2]);f[d>>2]=~~m;f[d+4>>2]=~~j;f[d+8>>2]=~~k;f[d+12>>2]=~~l;i=1;return i|0}default:{i=0;return i|0}}return 0}function od(a,c,d){a=a|0;c=c|0;d=d|0;var e=Ka,g=Ka,i=0,j=0,k=0;switch(b[a+24>>0]|0){case 1:{c=f[c>>2]|0;j=a+48|0;i=f[j>>2]|0;j=f[j+4>>2]|0;k=a+40|0;j=(Do(En(f[k>>2]|0,f[k+4>>2]|0,c|0,((c|0)<0)<<31>>31|0)|0,I|0,i|0,j|0)|0)+(f[f[a>>2]>>2]|0)|0;e=$((h[j>>0]|h[j+1>>0]<<8|h[j+2>>0]<<16|h[j+3>>0]<<24)>>>0);g=$(e*$(2.32830644e-10));n[d>>2]=(b[a+32>>0]|0)==0?e:g;d=d+4|0;f[d>>2]=0;f[d+4>>2]=0;f[d+8>>2]=0;d=1;return d|0}case 2:{j=f[c>>2]|0;c=a+48|0;k=f[c>>2]|0;c=f[c+4>>2]|0;i=a+40|0;c=(Do(En(f[i>>2]|0,f[i+4>>2]|0,j|0,((j|0)<0)<<31>>31|0)|0,I|0,k|0,c|0)|0)+(f[f[a>>2]>>2]|0)|0;k=c;c=c+4|0;c=h[c>>0]|h[c+1>>0]<<8|h[c+2>>0]<<16|h[c+3>>0]<<24;e=$((h[k>>0]|h[k+1>>0]<<8|h[k+2>>0]<<16|h[k+3>>0]<<24)>>>0);if(!(b[a+32>>0]|0)){n[d>>2]=e;e=$(c>>>0)}else{e=$(e*$(2.32830644e-10));n[d>>2]=e;e=$($(c>>>0)*$(2.32830644e-10))}n[d+4>>2]=e;k=d+8|0;f[k>>2]=0;f[k+4>>2]=0;k=1;return k|0}case 3:{i=f[c>>2]|0;k=a+48|0;c=f[k>>2]|0;k=f[k+4>>2]|0;j=a+40|0;k=(Do(En(f[j>>2]|0,f[j+4>>2]|0,i|0,((i|0)<0)<<31>>31|0)|0,I|0,c|0,k|0)|0)+(f[f[a>>2]>>2]|0)|0;c=k+4|0;c=h[c>>0]|h[c+1>>0]<<8|h[c+2>>0]<<16|h[c+3>>0]<<24;i=k+8|0;i=h[i>>0]|h[i+1>>0]<<8|h[i+2>>0]<<16|h[i+3>>0]<<24;e=$((h[k>>0]|h[k+1>>0]<<8|h[k+2>>0]<<16|h[k+3>>0]<<24)>>>0);if(!(b[a+32>>0]|0)){n[d>>2]=e;g=$(c>>>0);e=$(i>>>0)}else{g=$(e*$(2.32830644e-10));n[d>>2]=g;g=$($(c>>>0)*$(2.32830644e-10));e=$($(i>>>0)*$(2.32830644e-10))}n[d+4>>2]=g;n[d+8>>2]=e;n[d+12>>2]=$(0.0);k=1;return k|0}case 4:{i=f[c>>2]|0;k=a+48|0;c=f[k>>2]|0;k=f[k+4>>2]|0;j=a+40|0;k=(Do(En(f[j>>2]|0,f[j+4>>2]|0,i|0,((i|0)<0)<<31>>31|0)|0,I|0,c|0,k|0)|0)+(f[f[a>>2]>>2]|0)|0;c=k+4|0;c=h[c>>0]|h[c+1>>0]<<8|h[c+2>>0]<<16|h[c+3>>0]<<24;i=k+8|0;i=h[i>>0]|h[i+1>>0]<<8|h[i+2>>0]<<16|h[i+3>>0]<<24;j=k+12|0;j=h[j>>0]|h[j+1>>0]<<8|h[j+2>>0]<<16|h[j+3>>0]<<24;e=$((h[k>>0]|h[k+1>>0]<<8|h[k+2>>0]<<16|h[k+3>>0]<<24)>>>0);if(!(b[a+32>>0]|0)){n[d>>2]=e;g=$(c>>>0);n[d+4>>2]=g;g=$(i>>>0);n[d+8>>2]=g;g=$(j>>>0);n[d+12>>2]=g;k=1;return k|0}else{g=$(e*$(2.32830644e-10));n[d>>2]=g;g=$($(c>>>0)*$(2.32830644e-10));n[d+4>>2]=g;g=$($(i>>>0)*$(2.32830644e-10));n[d+8>>2]=g;g=$($(j>>>0)*$(2.32830644e-10));n[d+12>>2]=g;k=1;return k|0}}default:{k=0;return k|0}}return 0}function pd(a,b){a=a|0;b=b|0;var c=0,e=0,g=0,h=0,i=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0;e=a+4|0;if(!b){c=f[a>>2]|0;f[a>>2]=0;if(c|0)Lq(c);f[e>>2]=0;return}if(b>>>0>1073741823){a=Ha(4)|0;qq(a);sa(a|0,1040,102)}q=Fn(b<<2)|0;c=f[a>>2]|0;f[a>>2]=q;if(c|0)Lq(c);f[e>>2]=b;c=0;do{f[(f[a>>2]|0)+(c<<2)>>2]=0;c=c+1|0}while((c|0)!=(b|0));e=a+8|0;h=f[e>>2]|0;if(!h)return;c=f[h+4>>2]|0;p=b+-1|0;q=(p&b|0)==0;if(q)g=c&p;else g=(c>>>0)%(b>>>0)|0;f[(f[a>>2]|0)+(g<<2)>>2]=e;c=f[h>>2]|0;if(!c)return;else{i=h;e=c;c=h}a:while(1){o=c;b:while(1){c:do if(q){c=e;while(1){n=f[c+4>>2]&p;if((n|0)==(g|0))break c;e=(f[a>>2]|0)+(n<<2)|0;if(!(f[e>>2]|0)){g=n;break b}m=c+10|0;k=c+12|0;l=c+14|0;e=f[c>>2]|0;d:do if(!e)e=c;else{j=d[c+8>>1]|0;h=c;while(1){if(j<<16>>16!=(d[e+8>>1]|0)){e=h;break d}if((d[m>>1]|0)!=(d[e+10>>1]|0)){e=h;break d}if((d[k>>1]|0)!=(d[e+12>>1]|0)){e=h;break d}if((d[l>>1]|0)!=(d[e+14>>1]|0)){e=h;break d}h=f[e>>2]|0;if(!h)break;else{r=e;e=h;h=r}}}while(0);f[o>>2]=f[e>>2];f[e>>2]=f[f[(f[a>>2]|0)+(n<<2)>>2]>>2];f[f[(f[a>>2]|0)+(n<<2)>>2]>>2]=c;c=f[i>>2]|0;if(!c){c=40;break a}}}else{c=e;while(1){n=((f[c+4>>2]|0)>>>0)%(b>>>0)|0;if((n|0)==(g|0))break c;e=(f[a>>2]|0)+(n<<2)|0;if(!(f[e>>2]|0)){g=n;break b}m=c+10|0;k=c+12|0;l=c+14|0;e=f[c>>2]|0;e:do if(!e)e=c;else{j=d[c+8>>1]|0;h=c;while(1){if(j<<16>>16!=(d[e+8>>1]|0)){e=h;break e}if((d[m>>1]|0)!=(d[e+10>>1]|0)){e=h;break e}if((d[k>>1]|0)!=(d[e+12>>1]|0)){e=h;break e}if((d[l>>1]|0)!=(d[e+14>>1]|0)){e=h;break e}h=f[e>>2]|0;if(!h)break;else{r=e;e=h;h=r}}}while(0);f[o>>2]=f[e>>2];f[e>>2]=f[f[(f[a>>2]|0)+(n<<2)>>2]>>2];f[f[(f[a>>2]|0)+(n<<2)>>2]>>2]=c;c=f[i>>2]|0;if(!c){c=40;break a}}}while(0);e=f[c>>2]|0;if(!e){c=40;break a}else{i=c;o=c}}f[e>>2]=o;e=f[c>>2]|0;if(!e){c=40;break}else i=c}if((c|0)==40)return}function qd(a,b){a=a|0;b=b|0;var c=0,d=0,e=0,g=0,h=0,i=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0;d=a+4|0;if(!b){c=f[a>>2]|0;f[a>>2]=0;if(c|0)Lq(c);f[d>>2]=0;return}if(b>>>0>1073741823){a=Ha(4)|0;qq(a);sa(a|0,1040,102)}p=Fn(b<<2)|0;c=f[a>>2]|0;f[a>>2]=p;if(c|0)Lq(c);f[d>>2]=b;c=0;do{f[(f[a>>2]|0)+(c<<2)>>2]=0;c=c+1|0}while((c|0)!=(b|0));d=a+8|0;g=f[d>>2]|0;if(!g)return;c=f[g+4>>2]|0;o=b+-1|0;p=(o&b|0)==0;if(p)e=c&o;else e=(c>>>0)%(b>>>0)|0;f[(f[a>>2]|0)+(e<<2)>>2]=d;c=f[g>>2]|0;if(!c)return;else{h=g;d=c;c=g}a:while(1){n=c;b:while(1){c:do if(p){c=d;while(1){m=f[c+4>>2]&o;if((m|0)==(e|0))break c;d=(f[a>>2]|0)+(m<<2)|0;if(!(f[d>>2]|0)){e=m;break b}l=c+12|0;j=c+16|0;k=c+20|0;d=f[c>>2]|0;d:do if(!d)d=c;else{i=f[c+8>>2]|0;g=c;while(1){if((i|0)!=(f[d+8>>2]|0)){d=g;break d}if((f[l>>2]|0)!=(f[d+12>>2]|0)){d=g;break d}if((f[j>>2]|0)!=(f[d+16>>2]|0)){d=g;break d}if((f[k>>2]|0)!=(f[d+20>>2]|0)){d=g;break d}g=f[d>>2]|0;if(!g)break;else{q=d;d=g;g=q}}}while(0);f[n>>2]=f[d>>2];f[d>>2]=f[f[(f[a>>2]|0)+(m<<2)>>2]>>2];f[f[(f[a>>2]|0)+(m<<2)>>2]>>2]=c;c=f[h>>2]|0;if(!c){c=40;break a}}}else{c=d;while(1){m=((f[c+4>>2]|0)>>>0)%(b>>>0)|0;if((m|0)==(e|0))break c;d=(f[a>>2]|0)+(m<<2)|0;if(!(f[d>>2]|0)){e=m;break b}l=c+12|0;j=c+16|0;k=c+20|0;d=f[c>>2]|0;e:do if(!d)d=c;else{i=f[c+8>>2]|0;g=c;while(1){if((i|0)!=(f[d+8>>2]|0)){d=g;break e}if((f[l>>2]|0)!=(f[d+12>>2]|0)){d=g;break e}if((f[j>>2]|0)!=(f[d+16>>2]|0)){d=g;break e}if((f[k>>2]|0)!=(f[d+20>>2]|0)){d=g;break e}g=f[d>>2]|0;if(!g)break;else{q=d;d=g;g=q}}}while(0);f[n>>2]=f[d>>2];f[d>>2]=f[f[(f[a>>2]|0)+(m<<2)>>2]>>2];f[f[(f[a>>2]|0)+(m<<2)>>2]>>2]=c;c=f[h>>2]|0;if(!c){c=40;break a}}}while(0);d=f[c>>2]|0;if(!d){c=40;break a}else{h=c;n=c}}f[d>>2]=n;d=f[c>>2]|0;if(!d){c=40;break}else h=c}if((c|0)==40)return}function rd(a,c,d){a=a|0;c=c|0;d=d|0;var e=Ka,g=Ka,i=0,j=0,k=0;switch(b[a+24>>0]|0){case 1:{c=f[c>>2]|0;j=a+48|0;i=f[j>>2]|0;j=f[j+4>>2]|0;k=a+40|0;j=(Do(En(f[k>>2]|0,f[k+4>>2]|0,c|0,((c|0)<0)<<31>>31|0)|0,I|0,i|0,j|0)|0)+(f[f[a>>2]>>2]|0)|0;e=$(h[j>>0]|h[j+1>>0]<<8|h[j+2>>0]<<16|h[j+3>>0]<<24|0);g=$(e*$(4.65661287e-10));n[d>>2]=(b[a+32>>0]|0)==0?e:g;d=d+4|0;f[d>>2]=0;f[d+4>>2]=0;f[d+8>>2]=0;d=1;return d|0}case 2:{j=f[c>>2]|0;c=a+48|0;k=f[c>>2]|0;c=f[c+4>>2]|0;i=a+40|0;c=(Do(En(f[i>>2]|0,f[i+4>>2]|0,j|0,((j|0)<0)<<31>>31|0)|0,I|0,k|0,c|0)|0)+(f[f[a>>2]>>2]|0)|0;k=c;c=c+4|0;c=h[c>>0]|h[c+1>>0]<<8|h[c+2>>0]<<16|h[c+3>>0]<<24;e=$(h[k>>0]|h[k+1>>0]<<8|h[k+2>>0]<<16|h[k+3>>0]<<24|0);if(!(b[a+32>>0]|0)){n[d>>2]=e;e=$(c|0)}else{e=$(e*$(4.65661287e-10));n[d>>2]=e;e=$($(c|0)*$(4.65661287e-10))}n[d+4>>2]=e;k=d+8|0;f[k>>2]=0;f[k+4>>2]=0;k=1;return k|0}case 3:{i=f[c>>2]|0;k=a+48|0;c=f[k>>2]|0;k=f[k+4>>2]|0;j=a+40|0;k=(Do(En(f[j>>2]|0,f[j+4>>2]|0,i|0,((i|0)<0)<<31>>31|0)|0,I|0,c|0,k|0)|0)+(f[f[a>>2]>>2]|0)|0;c=k+4|0;c=h[c>>0]|h[c+1>>0]<<8|h[c+2>>0]<<16|h[c+3>>0]<<24;i=k+8|0;i=h[i>>0]|h[i+1>>0]<<8|h[i+2>>0]<<16|h[i+3>>0]<<24;e=$(h[k>>0]|h[k+1>>0]<<8|h[k+2>>0]<<16|h[k+3>>0]<<24|0);if(!(b[a+32>>0]|0)){n[d>>2]=e;g=$(c|0);e=$(i|0)}else{g=$(e*$(4.65661287e-10));n[d>>2]=g;g=$($(c|0)*$(4.65661287e-10));e=$($(i|0)*$(4.65661287e-10))}n[d+4>>2]=g;n[d+8>>2]=e;n[d+12>>2]=$(0.0);k=1;return k|0}case 4:{i=f[c>>2]|0;k=a+48|0;c=f[k>>2]|0;k=f[k+4>>2]|0;j=a+40|0;k=(Do(En(f[j>>2]|0,f[j+4>>2]|0,i|0,((i|0)<0)<<31>>31|0)|0,I|0,c|0,k|0)|0)+(f[f[a>>2]>>2]|0)|0;c=k+4|0;c=h[c>>0]|h[c+1>>0]<<8|h[c+2>>0]<<16|h[c+3>>0]<<24;i=k+8|0;i=h[i>>0]|h[i+1>>0]<<8|h[i+2>>0]<<16|h[i+3>>0]<<24;j=k+12|0;j=h[j>>0]|h[j+1>>0]<<8|h[j+2>>0]<<16|h[j+3>>0]<<24;e=$(h[k>>0]|h[k+1>>0]<<8|h[k+2>>0]<<16|h[k+3>>0]<<24|0);if(!(b[a+32>>0]|0)){n[d>>2]=e;g=$(c|0);n[d+4>>2]=g;g=$(i|0);n[d+8>>2]=g;g=$(j|0);n[d+12>>2]=g;k=1;return k|0}else{g=$(e*$(4.65661287e-10));n[d>>2]=g;g=$($(c|0)*$(4.65661287e-10));n[d+4>>2]=g;g=$($(i|0)*$(4.65661287e-10));n[d+8>>2]=g;g=$($(j|0)*$(4.65661287e-10));n[d+12>>2]=g;k=1;return k|0}}default:{k=0;return k|0}}return 0}function sd(a,c){a=a|0;c=c|0;var d=0,e=0,g=0,h=0,i=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0;e=a+4|0;if(!c){d=f[a>>2]|0;f[a>>2]=0;if(d|0)Lq(d);f[e>>2]=0;return}if(c>>>0>1073741823){a=Ha(4)|0;qq(a);sa(a|0,1040,102)}q=Fn(c<<2)|0;d=f[a>>2]|0;f[a>>2]=q;if(d|0)Lq(d);f[e>>2]=c;d=0;do{f[(f[a>>2]|0)+(d<<2)>>2]=0;d=d+1|0}while((d|0)!=(c|0));e=a+8|0;h=f[e>>2]|0;if(!h)return;d=f[h+4>>2]|0;p=c+-1|0;q=(p&c|0)==0;if(q)g=d&p;else g=(d>>>0)%(c>>>0)|0;f[(f[a>>2]|0)+(g<<2)>>2]=e;d=f[h>>2]|0;if(!d)return;else{i=h;e=d;d=h}a:while(1){o=d;b:while(1){c:do if(q){d=e;while(1){n=f[d+4>>2]&p;if((n|0)==(g|0))break c;e=(f[a>>2]|0)+(n<<2)|0;if(!(f[e>>2]|0)){g=n;break b}m=d+9|0;k=d+10|0;l=d+11|0;e=f[d>>2]|0;d:do if(!e)e=d;else{j=b[d+8>>0]|0;h=d;while(1){if(j<<24>>24!=(b[e+8>>0]|0)){e=h;break d}if((b[m>>0]|0)!=(b[e+9>>0]|0)){e=h;break d}if((b[k>>0]|0)!=(b[e+10>>0]|0)){e=h;break d}if((b[l>>0]|0)!=(b[e+11>>0]|0)){e=h;break d}h=f[e>>2]|0;if(!h)break;else{r=e;e=h;h=r}}}while(0);f[o>>2]=f[e>>2];f[e>>2]=f[f[(f[a>>2]|0)+(n<<2)>>2]>>2];f[f[(f[a>>2]|0)+(n<<2)>>2]>>2]=d;d=f[i>>2]|0;if(!d){d=40;break a}}}else{d=e;while(1){n=((f[d+4>>2]|0)>>>0)%(c>>>0)|0;if((n|0)==(g|0))break c;e=(f[a>>2]|0)+(n<<2)|0;if(!(f[e>>2]|0)){g=n;break b}m=d+9|0;k=d+10|0;l=d+11|0;e=f[d>>2]|0;e:do if(!e)e=d;else{j=b[d+8>>0]|0;h=d;while(1){if(j<<24>>24!=(b[e+8>>0]|0)){e=h;break e}if((b[m>>0]|0)!=(b[e+9>>0]|0)){e=h;break e}if((b[k>>0]|0)!=(b[e+10>>0]|0)){e=h;break e}if((b[l>>0]|0)!=(b[e+11>>0]|0)){e=h;break e}h=f[e>>2]|0;if(!h)break;else{r=e;e=h;h=r}}}while(0);f[o>>2]=f[e>>2];f[e>>2]=f[f[(f[a>>2]|0)+(n<<2)>>2]>>2];f[f[(f[a>>2]|0)+(n<<2)>>2]>>2]=d;d=f[i>>2]|0;if(!d){d=40;break a}}}while(0);e=f[d>>2]|0;if(!e){d=40;break a}else{i=d;o=d}}f[e>>2]=o;e=f[d>>2]|0;if(!e){d=40;break}else i=d}if((d|0)==40)return}function td(a,b,c,d){a=a|0;b=b|0;c=c|0;d=d|0;var e=0,g=0,h=0,i=0,j=0,k=0;j=u;u=u+32|0;h=j+12|0;i=j;f[b+48>>2]=c;g=b+44|0;f[g>>2]=d;d=f[b+8>>2]|0;e=b+12|0;c=f[e>>2]|0;if((c|0)!=(d|0))do{k=c+-4|0;f[e>>2]=k;c=f[k>>2]|0;f[k>>2]=0;if(c|0)Oa[f[(f[c>>2]|0)+4>>2]&127](c);c=f[e>>2]|0}while((c|0)!=(d|0));c=f[b+20>>2]|0;e=b+24|0;d=f[e>>2]|0;if((d|0)!=(c|0))f[e>>2]=d+(~((d+-4-c|0)>>>2)<<2);c=f[b+32>>2]|0;e=b+36|0;d=f[e>>2]|0;if((d|0)!=(c|0))f[e>>2]=d+(~((d+-4-c|0)>>>2)<<2);c=b+4|0;if(!(f[c>>2]|0)){f[h>>2]=0;f[h+4>>2]=0;f[h+8>>2]=0;Ck(h,17599,23);f[a>>2]=-1;Rl(a+4|0,h);Eo(h);u=j;return}ke(a,b);if(f[a>>2]|0){u=j;return}d=a+4|0;Eo(d);c=f[(f[c>>2]|0)+4>>2]|0;do if(c){if(ik(h,f[g>>2]|0,c)|0){f[a>>2]=0;f[a+4>>2]=0;f[a+8>>2]=0;f[a+12>>2]=0;break}f[i>>2]=0;f[i+4>>2]=0;f[i+8>>2]=0;Ck(i,7676,26);f[a>>2]=-1;Rl(d,i);Eo(i);if(f[a>>2]|0){u=j;return}}else{f[a>>2]=0;f[a+4>>2]=0;f[a+8>>2]=0;f[a+12>>2]=0}while(0);Eo(d);if(!(Ra[f[(f[b>>2]|0)+16>>2]&127](b)|0)){f[h>>2]=0;f[h+4>>2]=0;f[h+8>>2]=0;Ck(h,7703,29);f[a>>2]=-1;Rl(d,h);Eo(h);u=j;return}if(!(Ra[f[(f[b>>2]|0)+20>>2]&127](b)|0)){f[h>>2]=0;f[h+4>>2]=0;f[h+8>>2]=0;Ck(h,7733,31);f[a>>2]=-1;Rl(d,h);Eo(h);u=j;return}if(!(Ra[f[(f[b>>2]|0)+24>>2]&127](b)|0)){f[h>>2]=0;f[h+4>>2]=0;f[h+8>>2]=0;Ck(h,7765,31);f[a>>2]=-1;Rl(d,h);Eo(h);u=j;return}if(Ra[f[(f[b>>2]|0)+28>>2]&127](b)|0){f[a>>2]=0;f[a+4>>2]=0;f[a+8>>2]=0;f[a+12>>2]=0;u=j;return}else{f[h>>2]=0;f[h+4>>2]=0;f[h+8>>2]=0;Ck(h,7797,34);f[a>>2]=-1;Rl(d,h);Eo(h);u=j;return}}function ud(a,c,d){a=a|0;c=c|0;d=d|0;var e=0,g=0,i=0,j=0,k=0,l=0,m=0,o=0;o=u;u=u+32|0;j=o+24|0;k=o+20|0;l=o+16|0;m=o+12|0;e=o+8|0;g=o+4|0;i=o;if(!d){a=0;u=o;return a|0}switch(f[a+28>>2]|0){case 9:{e=f[c>>2]|0;switch(b[a+24>>0]|0){case 1:{c=a+48|0;m=f[c>>2]|0;c=f[c+4>>2]|0;l=a+40|0;a=(Do(En(f[l>>2]|0,f[l+4>>2]|0,e|0,((e|0)<0)<<31>>31|0)|0,I|0,m|0,c|0)|0)+(f[f[a>>2]>>2]|0)|0;f[d>>2]=h[a>>0]|h[a+1>>0]<<8|h[a+2>>0]<<16|h[a+3>>0]<<24;a=d+4|0;f[a>>2]=0;f[a+4>>2]=0;f[a+8>>2]=0;a=1;u=o;return a|0}case 2:{c=a+48|0;m=f[c>>2]|0;c=f[c+4>>2]|0;l=a+40|0;c=(Do(En(f[l>>2]|0,f[l+4>>2]|0,e|0,((e|0)<0)<<31>>31|0)|0,I|0,m|0,c|0)|0)+(f[f[a>>2]>>2]|0)|0;m=c;c=c+4|0;c=h[c>>0]|h[c+1>>0]<<8|h[c+2>>0]<<16|h[c+3>>0]<<24;a=d;f[a>>2]=h[m>>0]|h[m+1>>0]<<8|h[m+2>>0]<<16|h[m+3>>0]<<24;f[a+4>>2]=c;a=d+8|0;f[a>>2]=0;f[a+4>>2]=0;a=1;u=o;return a|0}case 3:{c=a+48|0;m=f[c>>2]|0;c=f[c+4>>2]|0;l=a+40|0;Om(d|0,(Do(En(f[l>>2]|0,f[l+4>>2]|0,e|0,((e|0)<0)<<31>>31|0)|0,I|0,m|0,c|0)|0)+(f[f[a>>2]>>2]|0)|0,12)|0;n[d+12>>2]=$(0.0);a=1;u=o;return a|0}case 4:{c=a+48|0;m=f[c>>2]|0;c=f[c+4>>2]|0;l=a+40|0;Om(d|0,(Do(En(f[l>>2]|0,f[l+4>>2]|0,e|0,((e|0)<0)<<31>>31|0)|0,I|0,m|0,c|0)|0)+(f[f[a>>2]>>2]|0)|0,16)|0;a=1;u=o;return a|0}default:{a=0;u=o;return a|0}}}case 2:{f[k>>2]=f[c>>2];f[j>>2]=f[k>>2];a=ee(a,j,d)|0;u=o;return a|0}case 1:{f[l>>2]=f[c>>2];f[j>>2]=f[l>>2];a=Zd(a,j,d)|0;u=o;return a|0}case 4:{f[m>>2]=f[c>>2];f[j>>2]=f[m>>2];a=Id(a,j,d)|0;u=o;return a|0}case 3:{f[e>>2]=f[c>>2];f[j>>2]=f[e>>2];a=Fd(a,j,d)|0;u=o;return a|0}case 6:{f[g>>2]=f[c>>2];f[j>>2]=f[g>>2];a=od(a,j,d)|0;u=o;return a|0}case 5:{f[i>>2]=f[c>>2];f[j>>2]=f[i>>2];a=rd(a,j,d)|0;u=o;return a|0}default:{a=0;u=o;return a|0}}return 0}function vd(a,b,c,d,e,g){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;g=g|0;var h=0,i=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0,v=0,w=0;u=a+8|0;f[u>>2]=e;j=a+32|0;i=a+36|0;h=f[i>>2]|0;g=f[j>>2]|0;k=h-g>>2;if(k>>>0>=e>>>0){if(k>>>0>e>>>0?(l=g+(e<<2)|0,(h|0)!=(l|0)):0)f[i>>2]=h+(~((h+-4-l|0)>>>2)<<2)}else jj(j,e-k|0);if(d){g=f[b>>2]|0;if((d|0)>1){i=1;h=g;do{t=f[b+(i<<2)>>2]|0;s=(t|0)<(g|0);g=s?t:g;h=s?h:(t|0)>(h|0)?t:h;i=i+1|0}while((i|0)!=(d|0))}else h=g;f[a+12>>2]=g;f[a+16>>2]=h;t=1-g+h|0;f[a+20>>2]=t;g=(t|0)/2|0;h=a+24|0;f[h>>2]=g;f[a+28>>2]=0-g;if(!(t&1))f[h>>2]=g+-1}else d=0;g=d-e|0;if((g|0)>0){o=0-e|0;r=a+16|0;n=a+32|0;t=a+12|0;s=a+28|0;q=a+20|0;p=a+24|0;d=f[u>>2]|0;do{l=b+(g<<2)|0;m=c+(g<<2)|0;if((d|0)>0){k=0;j=l+(o<<2)|0;while(1){if((d|0)>0){i=0;do{d=f[j+(i<<2)>>2]|0;h=f[r>>2]|0;if((d|0)>(h|0)){d=f[n>>2]|0;f[d+(i<<2)>>2]=h}else{w=f[t>>2]|0;h=f[n>>2]|0;f[h+(i<<2)>>2]=(d|0)<(w|0)?w:d;d=h}i=i+1|0}while((i|0)<(f[u>>2]|0));i=d}else i=f[n>>2]|0;d=(f[l+(k<<2)>>2]|0)-(f[i+(k<<2)>>2]|0)|0;h=m+(k<<2)|0;f[h>>2]=d;if((d|0)>=(f[s>>2]|0)){if((d|0)>(f[p>>2]|0)){d=d-(f[q>>2]|0)|0;v=41}}else{d=(f[q>>2]|0)+d|0;v=41}if((v|0)==41){v=0;f[h>>2]=d}k=k+1|0;d=f[u>>2]|0;if((k|0)>=(d|0))break;else j=i}}g=g-e|0}while((g|0)>0)}else d=f[u>>2]|0;w=e>>>0>1073741823?-1:e<<2;m=Iq(w)|0;Xj(m|0,0,w|0)|0;if((d|0)<=0){Jq(m);return 1}o=a+16|0;l=a+32|0;q=a+12|0;p=a+28|0;n=a+20|0;k=a+24|0;j=0;h=m;do{if((d|0)>0){i=0;do{d=f[h+(i<<2)>>2]|0;g=f[o>>2]|0;if((d|0)>(g|0)){d=f[l>>2]|0;f[d+(i<<2)>>2]=g}else{a=f[q>>2]|0;w=f[l>>2]|0;f[w+(i<<2)>>2]=(d|0)<(a|0)?a:d;d=w}i=i+1|0}while((i|0)<(f[u>>2]|0));h=d}else h=f[l>>2]|0;d=(f[b+(j<<2)>>2]|0)-(f[h+(j<<2)>>2]|0)|0;g=c+(j<<2)|0;f[g>>2]=d;if((d|0)>=(f[p>>2]|0)){if((d|0)>(f[k>>2]|0)){d=d-(f[n>>2]|0)|0;v=26}}else{d=(f[n>>2]|0)+d|0;v=26}if((v|0)==26){v=0;f[g>>2]=d}j=j+1|0;d=f[u>>2]|0}while((j|0)<(d|0));Jq(m);return 1}function wd(a,c,d){a=a|0;c=c|0;d=d|0;var e=Ka,g=0,i=Ka,j=0,k=0;switch(b[a+24>>0]|0){case 1:{j=f[c>>2]|0;g=a+48|0;c=f[g>>2]|0;g=f[g+4>>2]|0;k=a+40|0;g=(Do(En(f[k>>2]|0,f[k+4>>2]|0,j|0,((j|0)<0)<<31>>31|0)|0,I|0,c|0,g|0)|0)+(f[f[a>>2]>>2]|0)|0;i=$((h[g>>0]|h[g+1>>0]<<8|h[g+2>>0]<<16|h[g+3>>0]<<24)>>>0);e=$(i*$(2.32830644e-10));n[d>>2]=(b[a+32>>0]|0)==0?i:e;d=d+4|0;f[d>>2]=0;f[d+4>>2]=0;d=1;return d|0}case 2:{j=f[c>>2]|0;c=a+48|0;k=f[c>>2]|0;c=f[c+4>>2]|0;g=a+40|0;c=(Do(En(f[g>>2]|0,f[g+4>>2]|0,j|0,((j|0)<0)<<31>>31|0)|0,I|0,k|0,c|0)|0)+(f[f[a>>2]>>2]|0)|0;k=c;c=c+4|0;c=h[c>>0]|h[c+1>>0]<<8|h[c+2>>0]<<16|h[c+3>>0]<<24;e=$((h[k>>0]|h[k+1>>0]<<8|h[k+2>>0]<<16|h[k+3>>0]<<24)>>>0);if(!(b[a+32>>0]|0)){n[d>>2]=e;e=$(c>>>0)}else{e=$(e*$(2.32830644e-10));n[d>>2]=e;e=$($(c>>>0)*$(2.32830644e-10))}n[d+4>>2]=e;n[d+8>>2]=$(0.0);k=1;return k|0}case 3:{g=f[c>>2]|0;k=a+48|0;c=f[k>>2]|0;k=f[k+4>>2]|0;j=a+40|0;k=(Do(En(f[j>>2]|0,f[j+4>>2]|0,g|0,((g|0)<0)<<31>>31|0)|0,I|0,c|0,k|0)|0)+(f[f[a>>2]>>2]|0)|0;c=k+4|0;c=h[c>>0]|h[c+1>>0]<<8|h[c+2>>0]<<16|h[c+3>>0]<<24;g=k+8|0;g=h[g>>0]|h[g+1>>0]<<8|h[g+2>>0]<<16|h[g+3>>0]<<24;e=$((h[k>>0]|h[k+1>>0]<<8|h[k+2>>0]<<16|h[k+3>>0]<<24)>>>0);if(!(b[a+32>>0]|0)){n[d>>2]=e;i=$(c>>>0);n[d+4>>2]=i;i=$(g>>>0);n[d+8>>2]=i;k=1;return k|0}else{i=$(e*$(2.32830644e-10));n[d>>2]=i;i=$($(c>>>0)*$(2.32830644e-10));n[d+4>>2]=i;i=$($(g>>>0)*$(2.32830644e-10));n[d+8>>2]=i;k=1;return k|0}}case 4:{g=f[c>>2]|0;k=a+48|0;c=f[k>>2]|0;k=f[k+4>>2]|0;j=a+40|0;k=(Do(En(f[j>>2]|0,f[j+4>>2]|0,g|0,((g|0)<0)<<31>>31|0)|0,I|0,c|0,k|0)|0)+(f[f[a>>2]>>2]|0)|0;c=k+4|0;c=h[c>>0]|h[c+1>>0]<<8|h[c+2>>0]<<16|h[c+3>>0]<<24;g=k+8|0;g=h[g>>0]|h[g+1>>0]<<8|h[g+2>>0]<<16|h[g+3>>0]<<24;e=$((h[k>>0]|h[k+1>>0]<<8|h[k+2>>0]<<16|h[k+3>>0]<<24)>>>0);if(!(b[a+32>>0]|0)){n[d>>2]=e;i=$(c>>>0);n[d+4>>2]=i;i=$(g>>>0);n[d+8>>2]=i;k=1;return k|0}else{i=$(e*$(2.32830644e-10));n[d>>2]=i;i=$($(c>>>0)*$(2.32830644e-10));n[d+4>>2]=i;i=$($(g>>>0)*$(2.32830644e-10));n[d+8>>2]=i;k=1;return k|0}}default:{k=0;return k|0}}return 0}function xd(a,c,d){a=a|0;c=c|0;d=d|0;var e=0,g=0,i=0,j=0,k=0,l=0,m=0,o=0;o=u;u=u+32|0;j=o+24|0;k=o+20|0;l=o+16|0;m=o+12|0;e=o+8|0;g=o+4|0;i=o;if(!d){a=0;u=o;return a|0}switch(f[a+28>>2]|0){case 9:{e=f[c>>2]|0;switch(b[a+24>>0]|0){case 1:{c=a+48|0;m=f[c>>2]|0;c=f[c+4>>2]|0;l=a+40|0;a=(Do(En(f[l>>2]|0,f[l+4>>2]|0,e|0,((e|0)<0)<<31>>31|0)|0,I|0,m|0,c|0)|0)+(f[f[a>>2]>>2]|0)|0;f[d>>2]=h[a>>0]|h[a+1>>0]<<8|h[a+2>>0]<<16|h[a+3>>0]<<24;a=d+4|0;f[a>>2]=0;f[a+4>>2]=0;a=1;u=o;return a|0}case 2:{c=a+48|0;m=f[c>>2]|0;c=f[c+4>>2]|0;l=a+40|0;c=(Do(En(f[l>>2]|0,f[l+4>>2]|0,e|0,((e|0)<0)<<31>>31|0)|0,I|0,m|0,c|0)|0)+(f[f[a>>2]>>2]|0)|0;m=c;c=c+4|0;c=h[c>>0]|h[c+1>>0]<<8|h[c+2>>0]<<16|h[c+3>>0]<<24;a=d;f[a>>2]=h[m>>0]|h[m+1>>0]<<8|h[m+2>>0]<<16|h[m+3>>0]<<24;f[a+4>>2]=c;n[d+8>>2]=$(0.0);a=1;u=o;return a|0}case 3:{c=a+48|0;m=f[c>>2]|0;c=f[c+4>>2]|0;l=a+40|0;Om(d|0,(Do(En(f[l>>2]|0,f[l+4>>2]|0,e|0,((e|0)<0)<<31>>31|0)|0,I|0,m|0,c|0)|0)+(f[f[a>>2]>>2]|0)|0,12)|0;a=1;u=o;return a|0}case 4:{c=a+48|0;m=f[c>>2]|0;c=f[c+4>>2]|0;l=a+40|0;Om(d|0,(Do(En(f[l>>2]|0,f[l+4>>2]|0,e|0,((e|0)<0)<<31>>31|0)|0,I|0,m|0,c|0)|0)+(f[f[a>>2]>>2]|0)|0,12)|0;a=1;u=o;return a|0}default:{a=0;u=o;return a|0}}}case 2:{f[k>>2]=f[c>>2];f[j>>2]=f[k>>2];a=ne(a,j,d)|0;u=o;return a|0}case 1:{f[l>>2]=f[c>>2];f[j>>2]=f[l>>2];a=le(a,j,d)|0;u=o;return a|0}case 4:{f[m>>2]=f[c>>2];f[j>>2]=f[m>>2];a=Vd(a,j,d)|0;u=o;return a|0}case 3:{f[e>>2]=f[c>>2];f[j>>2]=f[e>>2];a=Od(a,j,d)|0;u=o;return a|0}case 6:{f[g>>2]=f[c>>2];f[j>>2]=f[g>>2];a=wd(a,j,d)|0;u=o;return a|0}case 5:{f[i>>2]=f[c>>2];f[j>>2]=f[i>>2];a=Ad(a,j,d)|0;u=o;return a|0}default:{a=0;u=o;return a|0}}return 0}function yd(a,c){a=a|0;c=c|0;var d=0,e=0,g=0,h=0,i=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0;e=a+4|0;if(!c){d=f[a>>2]|0;f[a>>2]=0;if(d|0)Lq(d);f[e>>2]=0;return}if(c>>>0>1073741823){a=Ha(4)|0;qq(a);sa(a|0,1040,102)}s=Fn(c<<2)|0;d=f[a>>2]|0;f[a>>2]=s;if(d|0)Lq(d);f[e>>2]=c;d=0;do{f[(f[a>>2]|0)+(d<<2)>>2]=0;d=d+1|0}while((d|0)!=(c|0));e=a+8|0;h=f[e>>2]|0;if(!h)return;d=f[h+4>>2]|0;r=c+-1|0;s=(r&c|0)==0;if(s)g=d&r;else g=(d>>>0)%(c>>>0)|0;f[(f[a>>2]|0)+(g<<2)>>2]=e;d=f[h>>2]|0;if(!d)return;else{i=h;e=d;d=h}a:while(1){q=d;b:while(1){d=e;while(1){e=f[d+4>>2]|0;if(s)p=e&r;else p=(e>>>0)%(c>>>0)|0;if((p|0)==(g|0))break;e=(f[a>>2]|0)+(p<<2)|0;if(!(f[e>>2]|0))break b;e=f[d>>2]|0;c:do if(!e)e=d;else{n=d+8|0;m=b[n+11>>0]|0;k=m<<24>>24<0;m=m&255;o=k?f[d+12>>2]|0:m;l=(o|0)==0;if(k){h=d;while(1){j=e+8|0;m=b[j+11>>0]|0;k=m<<24>>24<0;if((o|0)!=((k?f[e+12>>2]|0:m&255)|0)){e=h;break c}if(!l?Wl(f[n>>2]|0,k?f[j>>2]|0:j,o)|0:0){e=h;break c}h=f[e>>2]|0;if(!h)break c;else{m=e;e=h;h=m}}}if(l){h=d;while(1){o=b[e+8+11>>0]|0;if((o<<24>>24<0?f[e+12>>2]|0:o&255)|0){e=h;break c}h=f[e>>2]|0;if(!h)break c;else{o=e;e=h;h=o}}}l=d;while(1){h=e+8|0;k=b[h+11>>0]|0;j=k<<24>>24<0;if((o|0)!=((j?f[e+12>>2]|0:k&255)|0)){e=l;break c}h=j?f[h>>2]|0:h;if((f[n>>2]&255)<<24>>24==(b[h>>0]|0)){j=m;k=n}else{e=l;break c}while(1){j=j+-1|0;k=k+1|0;if(!j)break;h=h+1|0;if((b[k>>0]|0)!=(b[h>>0]|0)){e=l;break c}}h=f[e>>2]|0;if(!h)break;else{l=e;e=h}}}while(0);f[q>>2]=f[e>>2];f[e>>2]=f[f[(f[a>>2]|0)+(p<<2)>>2]>>2];f[f[(f[a>>2]|0)+(p<<2)>>2]>>2]=d;d=f[i>>2]|0;if(!d){d=41;break a}}e=f[d>>2]|0;if(!e){d=41;break a}else{i=d;q=d}}f[e>>2]=q;e=f[d>>2]|0;if(!e){d=41;break}else{i=d;g=p}}if((d|0)==41)return}function zd(a,b){a=a|0;b=b|0;var c=0,e=0,g=0,h=0,i=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0;e=a+4|0;if(!b){c=f[a>>2]|0;f[a>>2]=0;if(c|0)Lq(c);f[e>>2]=0;return}if(b>>>0>1073741823){a=Ha(4)|0;qq(a);sa(a|0,1040,102)}p=Fn(b<<2)|0;c=f[a>>2]|0;f[a>>2]=p;if(c|0)Lq(c);f[e>>2]=b;c=0;do{f[(f[a>>2]|0)+(c<<2)>>2]=0;c=c+1|0}while((c|0)!=(b|0));e=a+8|0;h=f[e>>2]|0;if(!h)return;c=f[h+4>>2]|0;o=b+-1|0;p=(o&b|0)==0;if(p)g=c&o;else g=(c>>>0)%(b>>>0)|0;f[(f[a>>2]|0)+(g<<2)>>2]=e;c=f[h>>2]|0;if(!c)return;else{i=h;e=c;c=h}a:while(1){n=c;b:while(1){c:do if(p){c=e;while(1){m=f[c+4>>2]&o;if((m|0)==(g|0))break c;e=(f[a>>2]|0)+(m<<2)|0;if(!(f[e>>2]|0)){g=m;break b}l=c+10|0;k=c+12|0;e=f[c>>2]|0;d:do if(!e)e=c;else{j=d[c+8>>1]|0;h=c;while(1){if(j<<16>>16!=(d[e+8>>1]|0)){e=h;break d}if((d[l>>1]|0)!=(d[e+10>>1]|0)){e=h;break d}if((d[k>>1]|0)!=(d[e+12>>1]|0)){e=h;break d}h=f[e>>2]|0;if(!h)break;else{q=e;e=h;h=q}}}while(0);f[n>>2]=f[e>>2];f[e>>2]=f[f[(f[a>>2]|0)+(m<<2)>>2]>>2];f[f[(f[a>>2]|0)+(m<<2)>>2]>>2]=c;c=f[i>>2]|0;if(!c){c=38;break a}}}else{c=e;while(1){m=((f[c+4>>2]|0)>>>0)%(b>>>0)|0;if((m|0)==(g|0))break c;e=(f[a>>2]|0)+(m<<2)|0;if(!(f[e>>2]|0)){g=m;break b}l=c+10|0;k=c+12|0;e=f[c>>2]|0;e:do if(!e)e=c;else{j=d[c+8>>1]|0;h=c;while(1){if(j<<16>>16!=(d[e+8>>1]|0)){e=h;break e}if((d[l>>1]|0)!=(d[e+10>>1]|0)){e=h;break e}if((d[k>>1]|0)!=(d[e+12>>1]|0)){e=h;break e}h=f[e>>2]|0;if(!h)break;else{q=e;e=h;h=q}}}while(0);f[n>>2]=f[e>>2];f[e>>2]=f[f[(f[a>>2]|0)+(m<<2)>>2]>>2];f[f[(f[a>>2]|0)+(m<<2)>>2]>>2]=c;c=f[i>>2]|0;if(!c){c=38;break a}}}while(0);e=f[c>>2]|0;if(!e){c=38;break a}else{i=c;n=c}}f[e>>2]=n;e=f[c>>2]|0;if(!e){c=38;break}else i=c}if((c|0)==38)return}function Ad(a,c,d){a=a|0;c=c|0;d=d|0;var e=Ka,g=0,i=Ka,j=0,k=0;switch(b[a+24>>0]|0){case 1:{j=f[c>>2]|0;g=a+48|0;c=f[g>>2]|0;g=f[g+4>>2]|0;k=a+40|0;g=(Do(En(f[k>>2]|0,f[k+4>>2]|0,j|0,((j|0)<0)<<31>>31|0)|0,I|0,c|0,g|0)|0)+(f[f[a>>2]>>2]|0)|0;i=$(h[g>>0]|h[g+1>>0]<<8|h[g+2>>0]<<16|h[g+3>>0]<<24|0);e=$(i*$(4.65661287e-10));n[d>>2]=(b[a+32>>0]|0)==0?i:e;d=d+4|0;f[d>>2]=0;f[d+4>>2]=0;d=1;return d|0}case 2:{j=f[c>>2]|0;c=a+48|0;k=f[c>>2]|0;c=f[c+4>>2]|0;g=a+40|0;c=(Do(En(f[g>>2]|0,f[g+4>>2]|0,j|0,((j|0)<0)<<31>>31|0)|0,I|0,k|0,c|0)|0)+(f[f[a>>2]>>2]|0)|0;k=c;c=c+4|0;c=h[c>>0]|h[c+1>>0]<<8|h[c+2>>0]<<16|h[c+3>>0]<<24;e=$(h[k>>0]|h[k+1>>0]<<8|h[k+2>>0]<<16|h[k+3>>0]<<24|0);if(!(b[a+32>>0]|0)){n[d>>2]=e;e=$(c|0)}else{e=$(e*$(4.65661287e-10));n[d>>2]=e;e=$($(c|0)*$(4.65661287e-10))}n[d+4>>2]=e;n[d+8>>2]=$(0.0);k=1;return k|0}case 3:{g=f[c>>2]|0;k=a+48|0;c=f[k>>2]|0;k=f[k+4>>2]|0;j=a+40|0;k=(Do(En(f[j>>2]|0,f[j+4>>2]|0,g|0,((g|0)<0)<<31>>31|0)|0,I|0,c|0,k|0)|0)+(f[f[a>>2]>>2]|0)|0;c=k+4|0;c=h[c>>0]|h[c+1>>0]<<8|h[c+2>>0]<<16|h[c+3>>0]<<24;g=k+8|0;g=h[g>>0]|h[g+1>>0]<<8|h[g+2>>0]<<16|h[g+3>>0]<<24;e=$(h[k>>0]|h[k+1>>0]<<8|h[k+2>>0]<<16|h[k+3>>0]<<24|0);if(!(b[a+32>>0]|0)){n[d>>2]=e;i=$(c|0);n[d+4>>2]=i;i=$(g|0);n[d+8>>2]=i;k=1;return k|0}else{i=$(e*$(4.65661287e-10));n[d>>2]=i;i=$($(c|0)*$(4.65661287e-10));n[d+4>>2]=i;i=$($(g|0)*$(4.65661287e-10));n[d+8>>2]=i;k=1;return k|0}}case 4:{g=f[c>>2]|0;k=a+48|0;c=f[k>>2]|0;k=f[k+4>>2]|0;j=a+40|0;k=(Do(En(f[j>>2]|0,f[j+4>>2]|0,g|0,((g|0)<0)<<31>>31|0)|0,I|0,c|0,k|0)|0)+(f[f[a>>2]>>2]|0)|0;c=k+4|0;c=h[c>>0]|h[c+1>>0]<<8|h[c+2>>0]<<16|h[c+3>>0]<<24;g=k+8|0;g=h[g>>0]|h[g+1>>0]<<8|h[g+2>>0]<<16|h[g+3>>0]<<24;e=$(h[k>>0]|h[k+1>>0]<<8|h[k+2>>0]<<16|h[k+3>>0]<<24|0);if(!(b[a+32>>0]|0)){n[d>>2]=e;i=$(c|0);n[d+4>>2]=i;i=$(g|0);n[d+8>>2]=i;k=1;return k|0}else{i=$(e*$(4.65661287e-10));n[d>>2]=i;i=$($(c|0)*$(4.65661287e-10));n[d+4>>2]=i;i=$($(g|0)*$(4.65661287e-10));n[d+8>>2]=i;k=1;return k|0}}default:{k=0;return k|0}}return 0}function Bd(a,b){a=a|0;b=b|0;var c=0,d=0,e=0,g=0,h=0,i=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0;d=a+4|0;if(!b){c=f[a>>2]|0;f[a>>2]=0;if(c|0)Lq(c);f[d>>2]=0;return}if(b>>>0>1073741823){a=Ha(4)|0;qq(a);sa(a|0,1040,102)}o=Fn(b<<2)|0;c=f[a>>2]|0;f[a>>2]=o;if(c|0)Lq(c);f[d>>2]=b;c=0;do{f[(f[a>>2]|0)+(c<<2)>>2]=0;c=c+1|0}while((c|0)!=(b|0));d=a+8|0;g=f[d>>2]|0;if(!g)return;c=f[g+4>>2]|0;n=b+-1|0;o=(n&b|0)==0;if(o)e=c&n;else e=(c>>>0)%(b>>>0)|0;f[(f[a>>2]|0)+(e<<2)>>2]=d;c=f[g>>2]|0;if(!c)return;else{h=g;d=c;c=g}a:while(1){m=c;b:while(1){c:do if(o){c=d;while(1){l=f[c+4>>2]&n;if((l|0)==(e|0))break c;d=(f[a>>2]|0)+(l<<2)|0;if(!(f[d>>2]|0)){e=l;break b}k=c+12|0;j=c+16|0;d=f[c>>2]|0;d:do if(!d)d=c;else{i=f[c+8>>2]|0;g=c;while(1){if((i|0)!=(f[d+8>>2]|0)){d=g;break d}if((f[k>>2]|0)!=(f[d+12>>2]|0)){d=g;break d}if((f[j>>2]|0)!=(f[d+16>>2]|0)){d=g;break d}g=f[d>>2]|0;if(!g)break;else{p=d;d=g;g=p}}}while(0);f[m>>2]=f[d>>2];f[d>>2]=f[f[(f[a>>2]|0)+(l<<2)>>2]>>2];f[f[(f[a>>2]|0)+(l<<2)>>2]>>2]=c;c=f[h>>2]|0;if(!c){c=38;break a}}}else{c=d;while(1){l=((f[c+4>>2]|0)>>>0)%(b>>>0)|0;if((l|0)==(e|0))break c;d=(f[a>>2]|0)+(l<<2)|0;if(!(f[d>>2]|0)){e=l;break b}k=c+12|0;j=c+16|0;d=f[c>>2]|0;e:do if(!d)d=c;else{i=f[c+8>>2]|0;g=c;while(1){if((i|0)!=(f[d+8>>2]|0)){d=g;break e}if((f[k>>2]|0)!=(f[d+12>>2]|0)){d=g;break e}if((f[j>>2]|0)!=(f[d+16>>2]|0)){d=g;break e}g=f[d>>2]|0;if(!g)break;else{p=d;d=g;g=p}}}while(0);f[m>>2]=f[d>>2];f[d>>2]=f[f[(f[a>>2]|0)+(l<<2)>>2]>>2];f[f[(f[a>>2]|0)+(l<<2)>>2]>>2]=c;c=f[h>>2]|0;if(!c){c=38;break a}}}while(0);d=f[c>>2]|0;if(!d){c=38;break a}else{h=c;m=c}}f[d>>2]=m;d=f[c>>2]|0;if(!d){c=38;break}else h=c}if((c|0)==38)return}function Cd(a,c){a=a|0;c=c|0;var d=0,e=0,g=0,h=0,i=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0;e=a+4|0;if(!c){d=f[a>>2]|0;f[a>>2]=0;if(d|0)Lq(d);f[e>>2]=0;return}if(c>>>0>1073741823){a=Ha(4)|0;qq(a);sa(a|0,1040,102)}p=Fn(c<<2)|0;d=f[a>>2]|0;f[a>>2]=p;if(d|0)Lq(d);f[e>>2]=c;d=0;do{f[(f[a>>2]|0)+(d<<2)>>2]=0;d=d+1|0}while((d|0)!=(c|0));e=a+8|0;h=f[e>>2]|0;if(!h)return;d=f[h+4>>2]|0;o=c+-1|0;p=(o&c|0)==0;if(p)g=d&o;else g=(d>>>0)%(c>>>0)|0;f[(f[a>>2]|0)+(g<<2)>>2]=e;d=f[h>>2]|0;if(!d)return;else{i=h;e=d;d=h}a:while(1){n=d;b:while(1){c:do if(p){d=e;while(1){m=f[d+4>>2]&o;if((m|0)==(g|0))break c;e=(f[a>>2]|0)+(m<<2)|0;if(!(f[e>>2]|0)){g=m;break b}l=d+9|0;k=d+10|0;e=f[d>>2]|0;d:do if(!e)e=d;else{j=b[d+8>>0]|0;h=d;while(1){if(j<<24>>24!=(b[e+8>>0]|0)){e=h;break d}if((b[l>>0]|0)!=(b[e+9>>0]|0)){e=h;break d}if((b[k>>0]|0)!=(b[e+10>>0]|0)){e=h;break d}h=f[e>>2]|0;if(!h)break;else{q=e;e=h;h=q}}}while(0);f[n>>2]=f[e>>2];f[e>>2]=f[f[(f[a>>2]|0)+(m<<2)>>2]>>2];f[f[(f[a>>2]|0)+(m<<2)>>2]>>2]=d;d=f[i>>2]|0;if(!d){d=38;break a}}}else{d=e;while(1){m=((f[d+4>>2]|0)>>>0)%(c>>>0)|0;if((m|0)==(g|0))break c;e=(f[a>>2]|0)+(m<<2)|0;if(!(f[e>>2]|0)){g=m;break b}l=d+9|0;k=d+10|0;e=f[d>>2]|0;e:do if(!e)e=d;else{j=b[d+8>>0]|0;h=d;while(1){if(j<<24>>24!=(b[e+8>>0]|0)){e=h;break e}if((b[l>>0]|0)!=(b[e+9>>0]|0)){e=h;break e}if((b[k>>0]|0)!=(b[e+10>>0]|0)){e=h;break e}h=f[e>>2]|0;if(!h)break;else{q=e;e=h;h=q}}}while(0);f[n>>2]=f[e>>2];f[e>>2]=f[f[(f[a>>2]|0)+(m<<2)>>2]>>2];f[f[(f[a>>2]|0)+(m<<2)>>2]>>2]=d;d=f[i>>2]|0;if(!d){d=38;break a}}}while(0);e=f[d>>2]|0;if(!e){d=38;break a}else{i=d;n=d}}f[e>>2]=n;e=f[d>>2]|0;if(!e){d=38;break}else i=d}if((d|0)==38)return}function Dd(a,c,d){a=a|0;c=c|0;d=d|0;var e=0,g=0,i=0,j=Ka,k=Ka,l=Ka;switch(b[a+24>>0]|0){case 1:{g=f[c>>2]|0;c=a+48|0;e=f[c>>2]|0;c=f[c+4>>2]|0;i=a+40|0;a=(Do(En(f[i>>2]|0,f[i+4>>2]|0,g|0,((g|0)<0)<<31>>31|0)|0,I|0,e|0,c|0)|0)+(f[f[a>>2]>>2]|0)|0;b[s>>0]=b[a>>0];b[s+1>>0]=b[a+1>>0];b[s+2>>0]=b[a+2>>0];b[s+3>>0]=b[a+3>>0];a=~~$(n[s>>2])>>>0;f[d>>2]=a;a=d+4|0;f[a>>2]=0;f[a+4>>2]=0;a=1;return a|0}case 2:{e=f[c>>2]|0;i=a+48|0;g=f[i>>2]|0;i=f[i+4>>2]|0;c=a+40|0;i=(Do(En(f[c>>2]|0,f[c+4>>2]|0,e|0,((e|0)<0)<<31>>31|0)|0,I|0,g|0,i|0)|0)+(f[f[a>>2]>>2]|0)|0;g=i;i=i+4|0;i=h[i>>0]|h[i+1>>0]<<8|h[i+2>>0]<<16|h[i+3>>0]<<24;g=~~(f[s>>2]=h[g>>0]|h[g+1>>0]<<8|h[g+2>>0]<<16|h[g+3>>0]<<24,$(n[s>>2]))>>>0;f[d>>2]=g;i=~~(f[s>>2]=i,$(n[s>>2]))>>>0;f[d+4>>2]=i;f[d+8>>2]=0;i=1;return i|0}case 3:{e=f[c>>2]|0;i=a+48|0;g=f[i>>2]|0;i=f[i+4>>2]|0;c=a+40|0;i=(Do(En(f[c>>2]|0,f[c+4>>2]|0,e|0,((e|0)<0)<<31>>31|0)|0,I|0,g|0,i|0)|0)+(f[f[a>>2]>>2]|0)|0;b[s>>0]=b[i>>0];b[s+1>>0]=b[i+1>>0];b[s+2>>0]=b[i+2>>0];b[s+3>>0]=b[i+3>>0];l=$(n[s>>2]);g=i+4|0;b[s>>0]=b[g>>0];b[s+1>>0]=b[g+1>>0];b[s+2>>0]=b[g+2>>0];b[s+3>>0]=b[g+3>>0];k=$(n[s>>2]);i=i+8|0;b[s>>0]=b[i>>0];b[s+1>>0]=b[i+1>>0];b[s+2>>0]=b[i+2>>0];b[s+3>>0]=b[i+3>>0];j=$(n[s>>2]);f[d>>2]=~~l>>>0;f[d+4>>2]=~~k>>>0;f[d+8>>2]=~~j>>>0;i=1;return i|0}case 4:{e=f[c>>2]|0;i=a+48|0;g=f[i>>2]|0;i=f[i+4>>2]|0;c=a+40|0;i=(Do(En(f[c>>2]|0,f[c+4>>2]|0,e|0,((e|0)<0)<<31>>31|0)|0,I|0,g|0,i|0)|0)+(f[f[a>>2]>>2]|0)|0;b[s>>0]=b[i>>0];b[s+1>>0]=b[i+1>>0];b[s+2>>0]=b[i+2>>0];b[s+3>>0]=b[i+3>>0];j=$(n[s>>2]);g=i+4|0;b[s>>0]=b[g>>0];b[s+1>>0]=b[g+1>>0];b[s+2>>0]=b[g+2>>0];b[s+3>>0]=b[g+3>>0];k=$(n[s>>2]);i=i+8|0;b[s>>0]=b[i>>0];b[s+1>>0]=b[i+1>>0];b[s+2>>0]=b[i+2>>0];b[s+3>>0]=b[i+3>>0];l=$(n[s>>2]);f[d>>2]=~~j>>>0;f[d+4>>2]=~~k>>>0;f[d+8>>2]=~~l>>>0;i=1;return i|0}default:{i=0;return i|0}}return 0}function Ed(a,c,d){a=a|0;c=c|0;d=d|0;var e=0,g=0,h=0,i=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0;r=u;u=u+32|0;i=r+20|0;j=r+12|0;p=r;g=r+16|0;h=r+24|0;k=a+16|0;Jn(k);e=(f[d+4>>2]|0)-(f[c+4>>2]|0)|0;m=a+12|0;f[m>>2]=e;f[p>>2]=0;q=p+4|0;f[q>>2]=0;f[p+8>>2]=0;Kj(p,e);f[g>>2]=p;f[i>>2]=f[g>>2];Ec(c,d,a,i)|0;g=a+32|0;c=g;d=f[c>>2]|0;c=f[c+4>>2]|0;if(!((c|0)>0|(c|0)==0&d>>>0>0)){f[j>>2]=f[a+20>>2];f[i>>2]=f[j>>2];vf(k,i,5540,5544)|0;d=g;c=f[d+4>>2]|0;d=f[d>>2]|0}e=a+8|0;b[h>>0]=f[e>>2];if(!((c|0)>0|(c|0)==0&d>>>0>0)){f[j>>2]=f[a+20>>2];f[i>>2]=f[j>>2];vf(k,i,h,h+1|0)|0;d=g;c=f[d+4>>2]|0;d=f[d>>2]|0}if(!((c|0)>0|(c|0)==0&d>>>0>0)?(f[j>>2]=f[a+20>>2],f[i>>2]=f[j>>2],vf(k,i,a,a+4|0)|0,h=g,d=f[h+4>>2]|0,n=a+4|0,!((d|0)>0|(d|0)==0&(f[h>>2]|0)>>>0>0)):0){f[j>>2]=f[a+20>>2];f[i>>2]=f[j>>2];vf(k,i,n,n+4|0)|0;n=g;h=f[n+4>>2]|0;if(!((h|0)>0|(h|0)==0&(f[n>>2]|0)>>>0>0)){f[j>>2]=f[a+20>>2];f[i>>2]=f[j>>2];vf(k,i,m,m+4|0)|0}}else o=9;if((f[e>>2]|0)==1?(l=a+48|0,o=g,n=f[o+4>>2]|0,!((n|0)>0|(n|0)==0&(f[o>>2]|0)>>>0>0)):0){f[j>>2]=f[a+20>>2];f[i>>2]=f[j>>2];vf(k,i,l,l+4|0)|0}do if(f[m>>2]|0)if((f[e>>2]|0)==1){e=md(a,p)|0;break}else{km(16127,23,1,f[1493]|0)|0;e=0;break}else e=1;while(0);c=f[p>>2]|0;if(!c){u=r;return e|0}d=f[q>>2]|0;if((d|0)!=(c|0))f[q>>2]=d+(~(((d+-12-c|0)>>>0)/12|0)*12|0);Lq(c);u=r;return e|0}function Fd(a,c,d){a=a|0;c=c|0;d=d|0;var e=Ka,g=Ka,i=0,j=0,k=0,l=0;switch(b[a+24>>0]|0){case 1:{j=f[c>>2]|0;i=a+48|0;c=f[i>>2]|0;i=f[i+4>>2]|0;k=a+40|0;i=(Do(En(f[k>>2]|0,f[k+4>>2]|0,j|0,((j|0)<0)<<31>>31|0)|0,I|0,c|0,i|0)|0)+(f[f[a>>2]>>2]|0)|0;e=$((h[i>>0]|h[i+1>>0]<<8)<<16>>16);g=$(e/$(32767.0));n[d>>2]=(b[a+32>>0]|0)==0?e:g;d=d+4|0;f[d>>2]=0;f[d+4>>2]=0;f[d+8>>2]=0;d=1;return d|0}case 2:{j=f[c>>2]|0;k=a+48|0;c=f[k>>2]|0;k=f[k+4>>2]|0;i=a+40|0;k=(Do(En(f[i>>2]|0,f[i+4>>2]|0,j|0,((j|0)<0)<<31>>31|0)|0,I|0,c|0,k|0)|0)+(f[f[a>>2]>>2]|0)|0;k=h[k>>0]|h[k+1>>0]<<8|h[k+2>>0]<<16|h[k+3>>0]<<24;c=k>>>16&65535;e=$((k&65535)<<16>>16);if(!(b[a+32>>0]|0)){n[d>>2]=e;e=$(c<<16>>16)}else{e=$(e/$(32767.0));n[d>>2]=e;e=$($(c<<16>>16)/$(32767.0))}n[d+4>>2]=e;k=d+8|0;f[k>>2]=0;f[k+4>>2]=0;k=1;return k|0}case 3:{i=f[c>>2]|0;k=a+48|0;c=f[k>>2]|0;k=f[k+4>>2]|0;j=a+40|0;k=(Do(En(f[j>>2]|0,f[j+4>>2]|0,i|0,((i|0)<0)<<31>>31|0)|0,I|0,c|0,k|0)|0)+(f[f[a>>2]>>2]|0)|0;c=k+2|0;c=h[c>>0]|h[c+1>>0]<<8;i=k+4|0;i=h[i>>0]|h[i+1>>0]<<8;e=$((h[k>>0]|h[k+1>>0]<<8)<<16>>16);if(!(b[a+32>>0]|0)){n[d>>2]=e;g=$(c<<16>>16);e=$(i<<16>>16)}else{g=$(e/$(32767.0));n[d>>2]=g;g=$($(c<<16>>16)/$(32767.0));e=$($(i<<16>>16)/$(32767.0))}n[d+4>>2]=g;n[d+8>>2]=e;n[d+12>>2]=$(0.0);k=1;return k|0}case 4:{k=f[c>>2]|0;l=a+48|0;j=f[l>>2]|0;l=f[l+4>>2]|0;c=a+40|0;l=(Do(En(f[c>>2]|0,f[c+4>>2]|0,k|0,((k|0)<0)<<31>>31|0)|0,I|0,j|0,l|0)|0)+(f[f[a>>2]>>2]|0)|0;j=l;j=h[j>>0]|h[j+1>>0]<<8|h[j+2>>0]<<16|h[j+3>>0]<<24;l=l+4|0;l=h[l>>0]|h[l+1>>0]<<8|h[l+2>>0]<<16|h[l+3>>0]<<24;k=(b[a+32>>0]|0)==0;c=(co(j|0,l|0,16)|0)&65535;i=l&65535;a=(co(j|0,l|0,48)|0)&65535;e=$((j&65535)<<16>>16);if(k){n[d>>2]=e;g=$(c<<16>>16);n[d+4>>2]=g;g=$(i<<16>>16);n[d+8>>2]=g;g=$(a<<16>>16);n[d+12>>2]=g;l=1;return l|0}else{g=$(e/$(32767.0));n[d>>2]=g;g=$($(c<<16>>16)/$(32767.0));n[d+4>>2]=g;g=$($(i<<16>>16)/$(32767.0));n[d+8>>2]=g;g=$($(a<<16>>16)/$(32767.0));n[d+12>>2]=g;l=1;return l|0}}default:{l=0;return l|0}}return 0}function Gd(a,c,d){a=a|0;c=c|0;d=d|0;var e=0,g=0,i=0,j=Ka,k=Ka,l=Ka;switch(b[a+24>>0]|0){case 1:{g=f[c>>2]|0;c=a+48|0;e=f[c>>2]|0;c=f[c+4>>2]|0;i=a+40|0;a=(Do(En(f[i>>2]|0,f[i+4>>2]|0,g|0,((g|0)<0)<<31>>31|0)|0,I|0,e|0,c|0)|0)+(f[f[a>>2]>>2]|0)|0;b[s>>0]=b[a>>0];b[s+1>>0]=b[a+1>>0];b[s+2>>0]=b[a+2>>0];b[s+3>>0]=b[a+3>>0];a=~~$(n[s>>2]);f[d>>2]=a;a=d+4|0;f[a>>2]=0;f[a+4>>2]=0;a=1;return a|0}case 2:{e=f[c>>2]|0;i=a+48|0;g=f[i>>2]|0;i=f[i+4>>2]|0;c=a+40|0;i=(Do(En(f[c>>2]|0,f[c+4>>2]|0,e|0,((e|0)<0)<<31>>31|0)|0,I|0,g|0,i|0)|0)+(f[f[a>>2]>>2]|0)|0;g=i;i=i+4|0;i=h[i>>0]|h[i+1>>0]<<8|h[i+2>>0]<<16|h[i+3>>0]<<24;g=~~(f[s>>2]=h[g>>0]|h[g+1>>0]<<8|h[g+2>>0]<<16|h[g+3>>0]<<24,$(n[s>>2]));f[d>>2]=g;i=~~(f[s>>2]=i,$(n[s>>2]));f[d+4>>2]=i;f[d+8>>2]=0;i=1;return i|0}case 3:{e=f[c>>2]|0;i=a+48|0;g=f[i>>2]|0;i=f[i+4>>2]|0;c=a+40|0;i=(Do(En(f[c>>2]|0,f[c+4>>2]|0,e|0,((e|0)<0)<<31>>31|0)|0,I|0,g|0,i|0)|0)+(f[f[a>>2]>>2]|0)|0;b[s>>0]=b[i>>0];b[s+1>>0]=b[i+1>>0];b[s+2>>0]=b[i+2>>0];b[s+3>>0]=b[i+3>>0];l=$(n[s>>2]);g=i+4|0;b[s>>0]=b[g>>0];b[s+1>>0]=b[g+1>>0];b[s+2>>0]=b[g+2>>0];b[s+3>>0]=b[g+3>>0];k=$(n[s>>2]);i=i+8|0;b[s>>0]=b[i>>0];b[s+1>>0]=b[i+1>>0];b[s+2>>0]=b[i+2>>0];b[s+3>>0]=b[i+3>>0];j=$(n[s>>2]);f[d>>2]=~~l;f[d+4>>2]=~~k;f[d+8>>2]=~~j;i=1;return i|0}case 4:{e=f[c>>2]|0;i=a+48|0;g=f[i>>2]|0;i=f[i+4>>2]|0;c=a+40|0;i=(Do(En(f[c>>2]|0,f[c+4>>2]|0,e|0,((e|0)<0)<<31>>31|0)|0,I|0,g|0,i|0)|0)+(f[f[a>>2]>>2]|0)|0;b[s>>0]=b[i>>0];b[s+1>>0]=b[i+1>>0];b[s+2>>0]=b[i+2>>0];b[s+3>>0]=b[i+3>>0];j=$(n[s>>2]);g=i+4|0;b[s>>0]=b[g>>0];b[s+1>>0]=b[g+1>>0];b[s+2>>0]=b[g+2>>0];b[s+3>>0]=b[g+3>>0];k=$(n[s>>2]);i=i+8|0;b[s>>0]=b[i>>0];b[s+1>>0]=b[i+1>>0];b[s+2>>0]=b[i+2>>0];b[s+3>>0]=b[i+3>>0];l=$(n[s>>2]);f[d>>2]=~~j;f[d+4>>2]=~~k;f[d+8>>2]=~~l;i=1;return i|0}default:{i=0;return i|0}}return 0}function Hd(a,b){a=a|0;b=b|0;var c=0,d=0,e=0,g=0,h=0,i=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0;r=u;u=u+48|0;m=r+32|0;h=r+28|0;p=r+16|0;q=r;j=a+16|0;d=f[j>>2]|0;if(d|0){g=f[b>>2]|0;c=j;a:while(1){e=d;while(1){if((f[e+16>>2]|0)>=(g|0))break;d=f[e+4>>2]|0;if(!d)break a;else e=d}d=f[e>>2]|0;if(!d){c=e;break}else c=e}if((c|0)!=(j|0)?(g|0)>=(f[c+16>>2]|0):0){q=c;q=q+20|0;u=r;return q|0}}tp(p);f[q>>2]=f[b>>2];l=q+4|0;f[q+8>>2]=0;k=q+12|0;f[k>>2]=0;n=q+8|0;f[l>>2]=n;c=f[p>>2]|0;o=p+4|0;if((c|0)!=(o|0)){g=n;e=c;d=c;while(1){c=e+16|0;f[h>>2]=g;f[m>>2]=f[h>>2];bi(l,m,c,c)|0;c=f[d+4>>2]|0;if(!c)while(1){c=f[d+8>>2]|0;if((f[c>>2]|0)==(d|0))break;else d=c}else while(1){d=f[c>>2]|0;if(!d)break;else c=d}if((c|0)==(o|0))break;else{e=c;d=c}}}i=a+12|0;c=f[j>>2]|0;do if(c){e=f[q>>2]|0;g=c;while(1){c=f[g+16>>2]|0;if((e|0)<(c|0)){c=f[g>>2]|0;if(!c){c=19;break}}else{if((c|0)>=(e|0)){c=24;break}d=g+4|0;c=f[d>>2]|0;if(!c){c=23;break}}g=c}if((c|0)==19){f[m>>2]=g;h=g;b=g;break}else if((c|0)==23){f[m>>2]=g;h=g;b=d;break}else if((c|0)==24){f[m>>2]=g;h=g;b=m;break}}else{f[m>>2]=j;h=j;b=j}while(0);c=f[b>>2]|0;if(!c){c=Fn(32)|0;f[c+16>>2]=f[q>>2];g=c+20|0;f[g>>2]=f[l>>2];e=c+24|0;d=f[q+8>>2]|0;f[e>>2]=d;m=f[k>>2]|0;f[c+28>>2]=m;if(!m)f[g>>2]=e;else{f[d+8>>2]=e;f[l>>2]=n;f[n>>2]=0;f[k>>2]=0}f[c>>2]=0;f[c+4>>2]=0;f[c+8>>2]=h;f[b>>2]=c;d=f[f[i>>2]>>2]|0;if(!d)d=c;else{f[i>>2]=d;d=f[b>>2]|0}xf(f[a+16>>2]|0,d);a=a+20|0;f[a>>2]=(f[a>>2]|0)+1}hk(q+4|0,f[n>>2]|0);hk(p,f[o>>2]|0);q=c;q=q+20|0;u=r;return q|0}function Id(a,c,d){a=a|0;c=c|0;d=d|0;var e=Ka,g=Ka,i=0,j=0,k=0,l=0;switch(b[a+24>>0]|0){case 1:{j=f[c>>2]|0;i=a+48|0;c=f[i>>2]|0;i=f[i+4>>2]|0;k=a+40|0;i=(Do(En(f[k>>2]|0,f[k+4>>2]|0,j|0,((j|0)<0)<<31>>31|0)|0,I|0,c|0,i|0)|0)+(f[f[a>>2]>>2]|0)|0;e=$((h[i>>0]|h[i+1>>0]<<8)&65535);g=$(e/$(65535.0));n[d>>2]=(b[a+32>>0]|0)==0?e:g;d=d+4|0;f[d>>2]=0;f[d+4>>2]=0;f[d+8>>2]=0;d=1;return d|0}case 2:{j=f[c>>2]|0;k=a+48|0;c=f[k>>2]|0;k=f[k+4>>2]|0;i=a+40|0;k=(Do(En(f[i>>2]|0,f[i+4>>2]|0,j|0,((j|0)<0)<<31>>31|0)|0,I|0,c|0,k|0)|0)+(f[f[a>>2]>>2]|0)|0;k=h[k>>0]|h[k+1>>0]<<8|h[k+2>>0]<<16|h[k+3>>0]<<24;c=k>>>16&65535;e=$(k&65535);if(!(b[a+32>>0]|0)){n[d>>2]=e;e=$(c&65535)}else{e=$(e/$(65535.0));n[d>>2]=e;e=$($(c&65535)/$(65535.0))}n[d+4>>2]=e;k=d+8|0;f[k>>2]=0;f[k+4>>2]=0;k=1;return k|0}case 3:{i=f[c>>2]|0;k=a+48|0;c=f[k>>2]|0;k=f[k+4>>2]|0;j=a+40|0;k=(Do(En(f[j>>2]|0,f[j+4>>2]|0,i|0,((i|0)<0)<<31>>31|0)|0,I|0,c|0,k|0)|0)+(f[f[a>>2]>>2]|0)|0;c=k+2|0;c=h[c>>0]|h[c+1>>0]<<8;i=k+4|0;i=h[i>>0]|h[i+1>>0]<<8;e=$((h[k>>0]|h[k+1>>0]<<8)&65535);if(!(b[a+32>>0]|0)){n[d>>2]=e;g=$(c&65535);e=$(i&65535)}else{g=$(e/$(65535.0));n[d>>2]=g;g=$($(c&65535)/$(65535.0));e=$($(i&65535)/$(65535.0))}n[d+4>>2]=g;n[d+8>>2]=e;n[d+12>>2]=$(0.0);k=1;return k|0}case 4:{k=f[c>>2]|0;l=a+48|0;j=f[l>>2]|0;l=f[l+4>>2]|0;c=a+40|0;l=(Do(En(f[c>>2]|0,f[c+4>>2]|0,k|0,((k|0)<0)<<31>>31|0)|0,I|0,j|0,l|0)|0)+(f[f[a>>2]>>2]|0)|0;j=l;j=h[j>>0]|h[j+1>>0]<<8|h[j+2>>0]<<16|h[j+3>>0]<<24;l=l+4|0;l=h[l>>0]|h[l+1>>0]<<8|h[l+2>>0]<<16|h[l+3>>0]<<24;k=(b[a+32>>0]|0)==0;c=(co(j|0,l|0,16)|0)&65535;i=l&65535;a=(co(j|0,l|0,48)|0)&65535;e=$(j&65535);if(k){n[d>>2]=e;g=$(c&65535);n[d+4>>2]=g;g=$(i&65535);n[d+8>>2]=g;g=$(a&65535);n[d+12>>2]=g;l=1;return l|0}else{g=$(e/$(65535.0));n[d>>2]=g;g=$($(c&65535)/$(65535.0));n[d+4>>2]=g;g=$($(i&65535)/$(65535.0));n[d+8>>2]=g;g=$($(a&65535)/$(65535.0));n[d+12>>2]=g;l=1;return l|0}}default:{l=0;return l|0}}return 0}function Jd(a,b,c){a=a|0;b=b|0;c=c|0;var d=0,e=0,g=0,h=0,i=0,j=0,k=0,l=0,m=0,n=0,o=0;switch(b-a>>2|0){case 2:{l=b+-4|0;i=f[l>>2]|0;k=f[a>>2]|0;d=f[c>>2]|0;g=f[d+4>>2]|0;e=f[d>>2]|0;if(g-e>>3>>>0>i>>>0){j=d;h=e;d=e}else{yp(d);g=f[c>>2]|0;j=g;h=f[d>>2]|0;d=f[g>>2]|0;g=f[g+4>>2]|0}e=f[h+(i<<3)>>2]|0;if(g-d>>3>>>0<=k>>>0){yp(j);d=f[j>>2]|0}if(e>>>0>=(f[d+(k<<3)>>2]|0)>>>0){a=1;return a|0}c=f[a>>2]|0;f[a>>2]=f[l>>2];f[l>>2]=c;a=1;return a|0}case 3:{Ae(a,a+4|0,b+-4|0,c)|0;a=1;return a|0}case 4:{Jf(a,a+4|0,a+8|0,b+-4|0,c)|0;a=1;return a|0}case 5:{ze(a,a+4|0,a+8|0,a+12|0,b+-4|0,c)|0;a=1;return a|0}case 1:case 0:{a=1;return a|0}default:{g=a+8|0;Ae(a,a+4|0,g,c)|0;e=a+12|0;a:do if((e|0)==(b|0)){e=1;d=0}else{d=0;n=e;e=g;while(1){k=f[n>>2]|0;m=f[e>>2]|0;i=f[c>>2]|0;h=f[i+4>>2]|0;g=f[i>>2]|0;if(h-g>>3>>>0>k>>>0){l=g;j=h}else{yp(i);h=f[c>>2]|0;l=f[i>>2]|0;g=f[h>>2]|0;j=f[h+4>>2]|0;i=h}h=f[l+(k<<3)>>2]|0;if(j-g>>3>>>0<=m>>>0){yp(i);g=f[i>>2]|0}if(h>>>0<(f[g+(m<<3)>>2]|0)>>>0){m=f[n>>2]|0;g=n;while(1){f[g>>2]=f[e>>2];if((e|0)==(a|0)){e=a;break}l=e+-4|0;k=f[l>>2]|0;j=f[c>>2]|0;h=f[j+4>>2]|0;g=f[j>>2]|0;if(h-g>>3>>>0>m>>>0)i=g;else{yp(j);o=f[c>>2]|0;i=f[j>>2]|0;g=f[o>>2]|0;h=f[o+4>>2]|0;j=o}i=f[i+(m<<3)>>2]|0;if(h-g>>3>>>0<=k>>>0){yp(j);g=f[j>>2]|0}if(i>>>0<(f[g+(k<<3)>>2]|0)>>>0){g=e;e=l}else break}f[e>>2]=m;d=d+1|0;if((d|0)==8){e=0;d=(n+4|0)==(b|0);break a}}e=n+4|0;if((e|0)==(b|0)){e=1;d=0;break}else{o=n;n=e;e=o}}}while(0);o=d|e;return o|0}}return 0}function Kd(a,c,d,e){a=a|0;c=c|0;d=d|0;e=e|0;var g=0,h=0,i=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0;n=a+4|0;s=f[c>>2]|0;c=s;do if((s|0)!=(n|0)){i=s+16|0;o=b[e+11>>0]|0;p=o<<24>>24<0;o=p?f[e+4>>2]|0:o&255;h=b[i+11>>0]|0;l=h<<24>>24<0;h=l?f[s+20>>2]|0:h&255;k=h>>>0>>0;g=k?h:o;if((g|0)!=0?(j=Wl(p?f[e>>2]|0:e,l?f[i>>2]|0:i,g)|0,(j|0)!=0):0){if((j|0)<0)break}else t=4;if((t|0)==4?o>>>0>>0:0)break;g=o>>>0>>0?o:h;if((g|0)!=0?(m=Wl(l?f[i>>2]|0:i,p?f[e>>2]|0:e,g)|0,(m|0)!=0):0){if((m|0)>=0)t=34}else t=20;if((t|0)==20?!k:0)t=34;if((t|0)==34){f[d>>2]=c;return d|0}k=s+4|0;c=f[k>>2]|0;l=(c|0)==0;if(l){g=s;while(1){c=f[g+8>>2]|0;if((f[c>>2]|0)==(g|0))break;else g=c}}else while(1){g=f[c>>2]|0;if(!g)break;else c=g}do if((c|0)!=(n|0)){h=c+16|0;i=b[h+11>>0]|0;j=i<<24>>24<0;i=j?f[c+20>>2]|0:i&255;g=i>>>0>>0?i:o;if((g|0)!=0?(q=Wl(p?f[e>>2]|0:e,j?f[h>>2]|0:h,g)|0,(q|0)!=0):0){if((q|0)<0)break}else t=28;if((t|0)==28?o>>>0>>0:0)break;d=Hh(a,d,e)|0;return d|0}while(0);if(l){f[d>>2]=s;d=k;return d|0}else{f[d>>2]=c;d=c;return d|0}}while(0);do if((s|0)!=(f[a>>2]|0)){c=f[s>>2]|0;if(!c){g=s;while(1){c=f[g+8>>2]|0;if((f[c>>2]|0)==(g|0))g=c;else{g=c;break}}}else while(1){g=f[c+4>>2]|0;if(!g){g=c;break}else c=g}c=g;k=g+16|0;h=b[k+11>>0]|0;l=h<<24>>24<0;h=l?f[g+20>>2]|0:h&255;i=b[e+11>>0]|0;j=i<<24>>24<0;i=j?f[e+4>>2]|0:i&255;g=i>>>0>>0?i:h;if((g|0)!=0?(r=Wl(l?f[k>>2]|0:k,j?f[e>>2]|0:e,g)|0,(r|0)!=0):0){if((r|0)<0)break}else t=12;if((t|0)==12?h>>>0>>0:0)break;d=Hh(a,d,e)|0;return d|0}while(0);if(!(f[s>>2]|0)){f[d>>2]=s;d=s;return d|0}else{t=c;f[d>>2]=t;d=t+4|0;return d|0}return 0}function Ld(a,c,d){a=a|0;c=c|0;d=d|0;var e=0,g=0,i=0;switch(b[a+24>>0]|0){case 1:{g=f[c>>2]|0;c=a+48|0;e=f[c>>2]|0;c=f[c+4>>2]|0;i=a+40|0;c=(Do(En(f[i>>2]|0,f[i+4>>2]|0,g|0,((g|0)<0)<<31>>31|0)|0,I|0,e|0,c|0)|0)+(f[f[a>>2]>>2]|0)|0;c=h[c>>0]|h[c+1>>0]<<8|h[c+2>>0]<<16|h[c+3>>0]<<24;a=d;f[a>>2]=c;f[a+4>>2]=((c|0)<0)<<31>>31;a=d+8|0;f[a>>2]=0;f[a+4>>2]=0;f[a+8>>2]=0;f[a+12>>2]=0;f[a+16>>2]=0;f[a+20>>2]=0;a=1;return a|0}case 2:{e=f[c>>2]|0;g=a+48|0;i=f[g>>2]|0;g=f[g+4>>2]|0;c=a+40|0;g=(Do(En(f[c>>2]|0,f[c+4>>2]|0,e|0,((e|0)<0)<<31>>31|0)|0,I|0,i|0,g|0)|0)+(f[f[a>>2]>>2]|0)|0;i=g;i=h[i>>0]|h[i+1>>0]<<8|h[i+2>>0]<<16|h[i+3>>0]<<24;g=g+4|0;g=h[g>>0]|h[g+1>>0]<<8|h[g+2>>0]<<16|h[g+3>>0]<<24;a=Ln(0,i|0,32)|0;e=d;f[e>>2]=a;f[e+4>>2]=I;g=Ln(i|0,g|0,32)|0;i=d+8|0;f[i>>2]=g;f[i+4>>2]=I;i=d+16|0;f[i>>2]=0;f[i+4>>2]=0;f[i+8>>2]=0;f[i+12>>2]=0;i=1;return i|0}case 3:{i=f[c>>2]|0;g=a+48|0;e=f[g>>2]|0;g=f[g+4>>2]|0;c=a+40|0;g=(Do(En(f[c>>2]|0,f[c+4>>2]|0,i|0,((i|0)<0)<<31>>31|0)|0,I|0,e|0,g|0)|0)+(f[f[a>>2]>>2]|0)|0;a=h[g>>0]|h[g+1>>0]<<8|h[g+2>>0]<<16|h[g+3>>0]<<24;e=g+4|0;e=h[e>>0]|h[e+1>>0]<<8|h[e+2>>0]<<16|h[e+3>>0]<<24;g=g+8|0;g=h[g>>0]|h[g+1>>0]<<8|h[g+2>>0]<<16|h[g+3>>0]<<24;i=d;f[i>>2]=a;f[i+4>>2]=((a|0)<0)<<31>>31;i=d+8|0;f[i>>2]=e;f[i+4>>2]=((e|0)<0)<<31>>31;i=d+16|0;f[i>>2]=g;f[i+4>>2]=((g|0)<0)<<31>>31;i=d+24|0;f[i>>2]=0;f[i+4>>2]=0;i=1;return i|0}case 4:{e=f[c>>2]|0;g=a+48|0;c=f[g>>2]|0;g=f[g+4>>2]|0;i=a+40|0;g=(Do(En(f[i>>2]|0,f[i+4>>2]|0,e|0,((e|0)<0)<<31>>31|0)|0,I|0,c|0,g|0)|0)+(f[f[a>>2]>>2]|0)|0;c=h[g>>0]|h[g+1>>0]<<8|h[g+2>>0]<<16|h[g+3>>0]<<24;a=g+4|0;a=h[a>>0]|h[a+1>>0]<<8|h[a+2>>0]<<16|h[a+3>>0]<<24;e=g+8|0;e=h[e>>0]|h[e+1>>0]<<8|h[e+2>>0]<<16|h[e+3>>0]<<24;g=g+12|0;g=h[g>>0]|h[g+1>>0]<<8|h[g+2>>0]<<16|h[g+3>>0]<<24;i=d;f[i>>2]=c;f[i+4>>2]=((c|0)<0)<<31>>31;i=d+8|0;f[i>>2]=a;f[i+4>>2]=((a|0)<0)<<31>>31;i=d+16|0;f[i>>2]=e;f[i+4>>2]=((e|0)<0)<<31>>31;i=d+24|0;f[i>>2]=g;f[i+4>>2]=((g|0)<0)<<31>>31;i=1;return i|0}default:{i=0;return i|0}}return 0}function Md(a,b,c,d,e){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;var g=0,h=0,i=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0;l=a;j=b;k=j;h=c;n=d;i=n;if(!k){g=(e|0)!=0;if(!i){if(g){f[e>>2]=(l>>>0)%(h>>>0);f[e+4>>2]=0}n=0;e=(l>>>0)/(h>>>0)>>>0;return (I=n,e)|0}else{if(!g){n=0;e=0;return (I=n,e)|0}f[e>>2]=a|0;f[e+4>>2]=b&0;n=0;e=0;return (I=n,e)|0}}g=(i|0)==0;do if(h){if(!g){g=(_(i|0)|0)-(_(k|0)|0)|0;if(g>>>0<=31){m=g+1|0;i=31-g|0;b=g-31>>31;h=m;a=l>>>(m>>>0)&b|k<>>(m>>>0)&b;g=0;i=l<>2]=a|0;f[e+4>>2]=j|b&0;n=0;e=0;return (I=n,e)|0}g=h-1|0;if(g&h|0){i=(_(h|0)|0)+33-(_(k|0)|0)|0;p=64-i|0;m=32-i|0;j=m>>31;o=i-32|0;b=o>>31;h=i;a=m-1>>31&k>>>(o>>>0)|(k<>>(i>>>0))&b;b=b&k>>>(i>>>0);g=l<>>(o>>>0))&j|l<>31;break}if(e|0){f[e>>2]=g&l;f[e+4>>2]=0}if((h|0)==1){o=j|b&0;p=a|0|0;return (I=o,p)|0}else{p=Xm(h|0)|0;o=k>>>(p>>>0)|0;p=k<<32-p|l>>>(p>>>0)|0;return (I=o,p)|0}}else{if(g){if(e|0){f[e>>2]=(k>>>0)%(h>>>0);f[e+4>>2]=0}o=0;p=(k>>>0)/(h>>>0)>>>0;return (I=o,p)|0}if(!l){if(e|0){f[e>>2]=0;f[e+4>>2]=(k>>>0)%(i>>>0)}o=0;p=(k>>>0)/(i>>>0)>>>0;return (I=o,p)|0}g=i-1|0;if(!(g&i)){if(e|0){f[e>>2]=a|0;f[e+4>>2]=g&k|b&0}o=0;p=k>>>((Xm(i|0)|0)>>>0);return (I=o,p)|0}g=(_(i|0)|0)-(_(k|0)|0)|0;if(g>>>0<=30){b=g+1|0;i=31-g|0;h=b;a=k<>>(b>>>0);b=k>>>(b>>>0);g=0;i=l<>2]=a|0;f[e+4>>2]=j|b&0;o=0;p=0;return (I=o,p)|0}while(0);if(!h){k=i;j=0;i=0}else{m=c|0|0;l=n|d&0;k=Do(m|0,l|0,-1,-1)|0;c=I;j=i;i=0;do{d=j;j=g>>>31|j<<1;g=i|g<<1;d=a<<1|d>>>31|0;n=a>>>31|b<<1|0;Bo(k|0,c|0,d|0,n|0)|0;p=I;o=p>>31|((p|0)<0?-1:0)<<1;i=o&1;a=Bo(d|0,n|0,o&m|0,(((p|0)<0?-1:0)>>31|((p|0)<0?-1:0)<<1)&l|0)|0;b=I;h=h-1|0}while((h|0)!=0);k=j;j=0}h=0;if(e|0){f[e>>2]=a;f[e+4>>2]=b}o=(g|0)>>>31|(k|h)<<1|(h<<1|g>>>31)&0|j;p=(g<<1|0>>>31)&-2|i;return (I=o,p)|0}function Nd(a,c,d){a=a|0;c=c|0;d=d|0;var e=0,g=0,i=0,j=0,k=0,l=0,m=0,n=0;n=u;u=u+32|0;j=n+24|0;k=n+20|0;l=n+16|0;m=n+12|0;e=n+8|0;g=n+4|0;i=n;if(!d){d=0;u=n;return d|0}switch(f[a+28>>2]|0){case 9:{e=f[c>>2]|0;switch(b[a+24>>0]|0){case 1:{c=a+48|0;m=f[c>>2]|0;c=f[c+4>>2]|0;l=a+40|0;e=(Do(En(f[l>>2]|0,f[l+4>>2]|0,e|0,((e|0)<0)<<31>>31|0)|0,I|0,m|0,c|0)|0)+(f[f[a>>2]>>2]|0)|0;e=h[e>>0]|h[e+1>>0]<<8|h[e+2>>0]<<16|h[e+3>>0]<<24;break}case 2:{c=a+48|0;m=f[c>>2]|0;c=f[c+4>>2]|0;l=a+40|0;e=(Do(En(f[l>>2]|0,f[l+4>>2]|0,e|0,((e|0)<0)<<31>>31|0)|0,I|0,m|0,c|0)|0)+(f[f[a>>2]>>2]|0)|0;e=h[e>>0]|h[e+1>>0]<<8|h[e+2>>0]<<16|h[e+3>>0]<<24;break}case 3:{c=a+48|0;m=f[c>>2]|0;c=f[c+4>>2]|0;l=a+40|0;e=(Do(En(f[l>>2]|0,f[l+4>>2]|0,e|0,((e|0)<0)<<31>>31|0)|0,I|0,m|0,c|0)|0)+(f[f[a>>2]>>2]|0)|0;e=h[e>>0]|h[e+1>>0]<<8|h[e+2>>0]<<16|h[e+3>>0]<<24;break}case 4:{c=a+48|0;m=f[c>>2]|0;c=f[c+4>>2]|0;l=a+40|0;e=(Do(En(f[l>>2]|0,f[l+4>>2]|0,e|0,((e|0)<0)<<31>>31|0)|0,I|0,m|0,c|0)|0)+(f[f[a>>2]>>2]|0)|0;e=h[e>>0]|h[e+1>>0]<<8|h[e+2>>0]<<16|h[e+3>>0]<<24;break}default:{d=0;u=n;return d|0}}f[d>>2]=e;d=1;u=n;return d|0}case 2:{f[k>>2]=f[c>>2];f[j>>2]=f[k>>2];d=tg(a,j,d)|0;u=n;return d|0}case 1:{f[l>>2]=f[c>>2];f[j>>2]=f[l>>2];d=qg(a,j,d)|0;u=n;return d|0}case 4:{f[m>>2]=f[c>>2];f[j>>2]=f[m>>2];d=bg(a,j,d)|0;u=n;return d|0}case 3:{f[e>>2]=f[c>>2];f[j>>2]=f[e>>2];d=Yf(a,j,d)|0;u=n;return d|0}case 6:{f[g>>2]=f[c>>2];f[j>>2]=f[g>>2];d=Mf(a,j,d)|0;u=n;return d|0}case 5:{f[i>>2]=f[c>>2];f[j>>2]=f[i>>2];d=Of(a,j,d)|0;u=n;return d|0}default:{d=0;u=n;return d|0}}return 0}function Od(a,c,d){a=a|0;c=c|0;d=d|0;var e=Ka,g=0,i=Ka,j=0,k=0;switch(b[a+24>>0]|0){case 1:{j=f[c>>2]|0;g=a+48|0;c=f[g>>2]|0;g=f[g+4>>2]|0;k=a+40|0;g=(Do(En(f[k>>2]|0,f[k+4>>2]|0,j|0,((j|0)<0)<<31>>31|0)|0,I|0,c|0,g|0)|0)+(f[f[a>>2]>>2]|0)|0;i=$((h[g>>0]|h[g+1>>0]<<8)<<16>>16);e=$(i/$(32767.0));n[d>>2]=(b[a+32>>0]|0)==0?i:e;d=d+4|0;f[d>>2]=0;f[d+4>>2]=0;d=1;return d|0}case 2:{j=f[c>>2]|0;k=a+48|0;c=f[k>>2]|0;k=f[k+4>>2]|0;g=a+40|0;k=(Do(En(f[g>>2]|0,f[g+4>>2]|0,j|0,((j|0)<0)<<31>>31|0)|0,I|0,c|0,k|0)|0)+(f[f[a>>2]>>2]|0)|0;k=h[k>>0]|h[k+1>>0]<<8|h[k+2>>0]<<16|h[k+3>>0]<<24;c=k>>>16&65535;e=$((k&65535)<<16>>16);if(!(b[a+32>>0]|0)){n[d>>2]=e;e=$(c<<16>>16)}else{e=$(e/$(32767.0));n[d>>2]=e;e=$($(c<<16>>16)/$(32767.0))}n[d+4>>2]=e;n[d+8>>2]=$(0.0);k=1;return k|0}case 3:{g=f[c>>2]|0;k=a+48|0;c=f[k>>2]|0;k=f[k+4>>2]|0;j=a+40|0;k=(Do(En(f[j>>2]|0,f[j+4>>2]|0,g|0,((g|0)<0)<<31>>31|0)|0,I|0,c|0,k|0)|0)+(f[f[a>>2]>>2]|0)|0;c=k+2|0;c=h[c>>0]|h[c+1>>0]<<8;g=k+4|0;g=h[g>>0]|h[g+1>>0]<<8;e=$((h[k>>0]|h[k+1>>0]<<8)<<16>>16);if(!(b[a+32>>0]|0)){n[d>>2]=e;i=$(c<<16>>16);n[d+4>>2]=i;i=$(g<<16>>16);n[d+8>>2]=i;k=1;return k|0}else{i=$(e/$(32767.0));n[d>>2]=i;i=$($(c<<16>>16)/$(32767.0));n[d+4>>2]=i;i=$($(g<<16>>16)/$(32767.0));n[d+8>>2]=i;k=1;return k|0}}case 4:{k=f[c>>2]|0;g=a+48|0;j=f[g>>2]|0;g=f[g+4>>2]|0;c=a+40|0;g=(Do(En(f[c>>2]|0,f[c+4>>2]|0,k|0,((k|0)<0)<<31>>31|0)|0,I|0,j|0,g|0)|0)+(f[f[a>>2]>>2]|0)|0;j=g;j=h[j>>0]|h[j+1>>0]<<8|h[j+2>>0]<<16|h[j+3>>0]<<24;g=g+4|0;g=h[g>>0]|h[g+1>>0]<<8|h[g+2>>0]<<16|h[g+3>>0]<<24;k=(b[a+32>>0]|0)==0;c=(co(j|0,g|0,16)|0)&65535;g=g&65535;e=$((j&65535)<<16>>16);if(k){n[d>>2]=e;i=$(c<<16>>16);n[d+4>>2]=i;i=$(g<<16>>16);n[d+8>>2]=i;k=1;return k|0}else{i=$(e/$(32767.0));n[d>>2]=i;i=$($(c<<16>>16)/$(32767.0));n[d+4>>2]=i;i=$($(g<<16>>16)/$(32767.0));n[d+8>>2]=i;k=1;return k|0}}default:{k=0;return k|0}}return 0}function Pd(a,b){a=a|0;b=b|0;var c=0,e=0,g=0,h=0,i=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0;e=a+4|0;if(!b){c=f[a>>2]|0;f[a>>2]=0;if(c|0)Lq(c);f[e>>2]=0;return}if(b>>>0>1073741823){a=Ha(4)|0;qq(a);sa(a|0,1040,102)}o=Fn(b<<2)|0;c=f[a>>2]|0;f[a>>2]=o;if(c|0)Lq(c);f[e>>2]=b;c=0;do{f[(f[a>>2]|0)+(c<<2)>>2]=0;c=c+1|0}while((c|0)!=(b|0));e=a+8|0;h=f[e>>2]|0;if(!h)return;c=f[h+4>>2]|0;n=b+-1|0;o=(n&b|0)==0;if(o)g=c&n;else g=(c>>>0)%(b>>>0)|0;f[(f[a>>2]|0)+(g<<2)>>2]=e;c=f[h>>2]|0;if(!c)return;else{i=h;e=c;c=h}a:while(1){m=c;b:while(1){c:do if(o){c=e;while(1){l=f[c+4>>2]&n;if((l|0)==(g|0))break c;e=(f[a>>2]|0)+(l<<2)|0;if(!(f[e>>2]|0)){g=l;break b}k=c+10|0;e=f[c>>2]|0;d:do if(!e)e=c;else{j=d[c+8>>1]|0;h=c;while(1){if(j<<16>>16!=(d[e+8>>1]|0)){e=h;break d}if((d[k>>1]|0)!=(d[e+10>>1]|0)){e=h;break d}h=f[e>>2]|0;if(!h)break;else{p=e;e=h;h=p}}}while(0);f[m>>2]=f[e>>2];f[e>>2]=f[f[(f[a>>2]|0)+(l<<2)>>2]>>2];f[f[(f[a>>2]|0)+(l<<2)>>2]>>2]=c;c=f[i>>2]|0;if(!c){c=36;break a}}}else{c=e;while(1){l=((f[c+4>>2]|0)>>>0)%(b>>>0)|0;if((l|0)==(g|0))break c;e=(f[a>>2]|0)+(l<<2)|0;if(!(f[e>>2]|0)){g=l;break b}k=c+10|0;e=f[c>>2]|0;e:do if(!e)e=c;else{j=d[c+8>>1]|0;h=c;while(1){if(j<<16>>16!=(d[e+8>>1]|0)){e=h;break e}if((d[k>>1]|0)!=(d[e+10>>1]|0)){e=h;break e}h=f[e>>2]|0;if(!h)break;else{p=e;e=h;h=p}}}while(0);f[m>>2]=f[e>>2];f[e>>2]=f[f[(f[a>>2]|0)+(l<<2)>>2]>>2];f[f[(f[a>>2]|0)+(l<<2)>>2]>>2]=c;c=f[i>>2]|0;if(!c){c=36;break a}}}while(0);e=f[c>>2]|0;if(!e){c=36;break a}else{i=c;m=c}}f[e>>2]=m;e=f[c>>2]|0;if(!e){c=36;break}else i=c}if((c|0)==36)return}function Qd(a,b,c,d,e,g){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;g=g|0;var h=0,i=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,v=0,w=0,x=0,y=0,z=0,A=0,B=0;A=u;u=u+16|0;y=A+4|0;x=A;f[a+72>>2]=e;f[a+64>>2]=g;v=Iq(e>>>0>1073741823?-1:e<<2)|0;w=a+68|0;g=f[w>>2]|0;f[w>>2]=v;if(g|0)Jq(g);v=a+8|0;f[v>>2]=e;j=a+32|0;i=a+36|0;h=f[i>>2]|0;g=f[j>>2]|0;k=h-g>>2;if(k>>>0>=e>>>0){if(k>>>0>e>>>0?(l=g+(e<<2)|0,(h|0)!=(l|0)):0)f[i>>2]=h+(~((h+-4-l|0)>>>2)<<2)}else jj(j,e-k|0);if(d|0){g=f[b>>2]|0;if((d|0)>1){i=1;h=g;do{t=f[b+(i<<2)>>2]|0;s=(t|0)<(g|0);g=s?t:g;h=s?h:(t|0)>(h|0)?t:h;i=i+1|0}while((i|0)!=(d|0))}else h=g;f[a+12>>2]=g;f[a+16>>2]=h;t=1-g+h|0;f[a+20>>2]=t;g=(t|0)/2|0;h=a+24|0;f[h>>2]=g;f[a+28>>2]=0-g;if(!(t&1))f[h>>2]=g+-1}o=a+56|0;i=f[o>>2]|0;h=f[i+4>>2]|0;g=f[i>>2]|0;k=h-g|0;if((k|0)<=0){u=A;return 1}r=a+16|0;n=a+32|0;t=a+12|0;s=a+28|0;q=a+20|0;p=a+24|0;j=h;h=(k>>>2)+-1|0;while(1){if(j-g>>2>>>0<=h>>>0){yp(i);g=f[i>>2]|0}f[x>>2]=f[g+(h<<2)>>2];f[y>>2]=f[x>>2];wc(a,y,b,h);m=X(h,e)|0;d=b+(m<<2)|0;m=c+(m<<2)|0;g=f[v>>2]|0;if((g|0)>0){l=0;j=f[w>>2]|0;do{if((g|0)>0){k=0;do{g=f[j+(k<<2)>>2]|0;i=f[r>>2]|0;if((g|0)>(i|0)){g=f[n>>2]|0;f[g+(k<<2)>>2]=i}else{B=f[t>>2]|0;i=f[n>>2]|0;f[i+(k<<2)>>2]=(g|0)<(B|0)?B:g;g=i}k=k+1|0}while((k|0)<(f[v>>2]|0));j=g}else j=f[n>>2]|0;g=(f[d+(l<<2)>>2]|0)-(f[j+(l<<2)>>2]|0)|0;i=m+(l<<2)|0;f[i>>2]=g;if((g|0)>=(f[s>>2]|0)){if((g|0)>(f[p>>2]|0)){g=g-(f[q>>2]|0)|0;z=33}}else{g=(f[q>>2]|0)+g|0;z=33}if((z|0)==33){z=0;f[i>>2]=g}l=l+1|0;g=f[v>>2]|0}while((l|0)<(g|0))}h=h+-1|0;if((h|0)<=-1)break;i=f[o>>2]|0;g=f[i>>2]|0;j=f[i+4>>2]|0}u=A;return 1}function Rd(a,c){a=a|0;c=c|0;var d=0,e=0,g=0,i=0,j=0,k=0,l=0,m=0,n=0,o=0;n=b[c+11>>0]|0;m=n<<24>>24<0;o=m?f[c>>2]|0:c;n=m?f[c+4>>2]|0:n&255;if(n>>>0>3){c=o;g=n;d=n;while(1){m=X(h[c>>0]|h[c+1>>0]<<8|h[c+2>>0]<<16|h[c+3>>0]<<24,1540483477)|0;g=(X(m>>>24^m,1540483477)|0)^(X(g,1540483477)|0);d=d+-4|0;if(d>>>0<=3)break;else c=c+4|0}m=n+-4|0;d=m&-4;e=o+(d+4)|0;c=g;d=m-d|0}else{e=o;c=n;d=n}switch(d|0){case 3:{i=h[e+2>>0]<<16^c;l=6;break}case 2:{i=c;l=6;break}case 1:{j=c;l=7;break}default:k=c}if((l|0)==6){j=h[e+1>>0]<<8^i;l=7}if((l|0)==7)k=X(h[e>>0]^j,1540483477)|0;c=X(k>>>13^k,1540483477)|0;c=c>>>15^c;k=f[a+4>>2]|0;if(!k){o=0;return o|0}l=k+-1|0;d=(l&k|0)==0;if(d)m=c&l;else m=(c>>>0)%(k>>>0)|0;c=f[(f[a>>2]|0)+(m<<2)>>2]|0;if(!c){o=0;return o|0}c=f[c>>2]|0;if(!c){o=0;return o|0}a=(n|0)==0;if(d){a:while(1){if((f[c+4>>2]&l|0)!=(m|0)){c=0;l=35;break}d=c+8|0;g=b[d+11>>0]|0;j=g<<24>>24<0;g=g&255;do if(((j?f[c+12>>2]|0:g)|0)==(n|0)){e=f[d>>2]|0;i=j?e:d;if(j){if(a){l=35;break a}if(!(Wl(i,o,n)|0)){l=35;break a}else break}if(a){l=35;break a}if((e&255)<<24>>24==(b[o>>0]|0)){e=o;do{g=g+-1|0;d=d+1|0;if(!g){l=35;break a}e=e+1|0}while((b[d>>0]|0)==(b[e>>0]|0))}}while(0);c=f[c>>2]|0;if(!c){c=0;l=35;break}}if((l|0)==35)return c|0}else{b:while(1){if((((f[c+4>>2]|0)>>>0)%(k>>>0)|0|0)!=(m|0)){c=0;l=35;break}d=c+8|0;g=b[d+11>>0]|0;j=g<<24>>24<0;g=g&255;do if(((j?f[c+12>>2]|0:g)|0)==(n|0)){e=f[d>>2]|0;i=j?e:d;if(j){if(a){l=35;break b}if(!(Wl(i,o,n)|0)){l=35;break b}else break}if(a){l=35;break b}if((e&255)<<24>>24==(b[o>>0]|0)){e=o;do{g=g+-1|0;d=d+1|0;if(!g){l=35;break b}e=e+1|0}while((b[d>>0]|0)==(b[e>>0]|0))}}while(0);c=f[c>>2]|0;if(!c){c=0;l=35;break}}if((l|0)==35)return c|0}return 0}function Sd(a,b){a=a|0;b=b|0;var c=0,d=0,e=0,g=0,h=0,i=0,j=0,k=0,l=0,m=0,n=0,o=0;d=a+4|0;if(!b){c=f[a>>2]|0;f[a>>2]=0;if(c|0)Lq(c);f[d>>2]=0;return}if(b>>>0>1073741823){a=Ha(4)|0;qq(a);sa(a|0,1040,102)}n=Fn(b<<2)|0;c=f[a>>2]|0;f[a>>2]=n;if(c|0)Lq(c);f[d>>2]=b;c=0;do{f[(f[a>>2]|0)+(c<<2)>>2]=0;c=c+1|0}while((c|0)!=(b|0));d=a+8|0;g=f[d>>2]|0;if(!g)return;c=f[g+4>>2]|0;m=b+-1|0;n=(m&b|0)==0;if(n)e=c&m;else e=(c>>>0)%(b>>>0)|0;f[(f[a>>2]|0)+(e<<2)>>2]=d;c=f[g>>2]|0;if(!c)return;else{h=g;d=c;c=g}a:while(1){l=c;b:while(1){c:do if(n){c=d;while(1){k=f[c+4>>2]&m;if((k|0)==(e|0))break c;d=(f[a>>2]|0)+(k<<2)|0;if(!(f[d>>2]|0)){e=k;break b}j=c+12|0;d=f[c>>2]|0;d:do if(!d)d=c;else{i=f[c+8>>2]|0;g=c;while(1){if((i|0)!=(f[d+8>>2]|0)){d=g;break d}if((f[j>>2]|0)!=(f[d+12>>2]|0)){d=g;break d}g=f[d>>2]|0;if(!g)break;else{o=d;d=g;g=o}}}while(0);f[l>>2]=f[d>>2];f[d>>2]=f[f[(f[a>>2]|0)+(k<<2)>>2]>>2];f[f[(f[a>>2]|0)+(k<<2)>>2]>>2]=c;c=f[h>>2]|0;if(!c){c=36;break a}}}else{c=d;while(1){k=((f[c+4>>2]|0)>>>0)%(b>>>0)|0;if((k|0)==(e|0))break c;d=(f[a>>2]|0)+(k<<2)|0;if(!(f[d>>2]|0)){e=k;break b}j=c+12|0;d=f[c>>2]|0;e:do if(!d)d=c;else{i=f[c+8>>2]|0;g=c;while(1){if((i|0)!=(f[d+8>>2]|0)){d=g;break e}if((f[j>>2]|0)!=(f[d+12>>2]|0)){d=g;break e}g=f[d>>2]|0;if(!g)break;else{o=d;d=g;g=o}}}while(0);f[l>>2]=f[d>>2];f[d>>2]=f[f[(f[a>>2]|0)+(k<<2)>>2]>>2];f[f[(f[a>>2]|0)+(k<<2)>>2]>>2]=c;c=f[h>>2]|0;if(!c){c=36;break a}}}while(0);d=f[c>>2]|0;if(!d){c=36;break a}else{h=c;l=c}}f[d>>2]=l;d=f[c>>2]|0;if(!d){c=36;break}else h=c}if((c|0)==36)return}function Td(a,c){a=a|0;c=c|0;var d=0,e=0,g=0,h=0,i=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0;e=a+4|0;if(!c){d=f[a>>2]|0;f[a>>2]=0;if(d|0)Lq(d);f[e>>2]=0;return}if(c>>>0>1073741823){a=Ha(4)|0;qq(a);sa(a|0,1040,102)}o=Fn(c<<2)|0;d=f[a>>2]|0;f[a>>2]=o;if(d|0)Lq(d);f[e>>2]=c;d=0;do{f[(f[a>>2]|0)+(d<<2)>>2]=0;d=d+1|0}while((d|0)!=(c|0));e=a+8|0;h=f[e>>2]|0;if(!h)return;d=f[h+4>>2]|0;n=c+-1|0;o=(n&c|0)==0;if(o)g=d&n;else g=(d>>>0)%(c>>>0)|0;f[(f[a>>2]|0)+(g<<2)>>2]=e;d=f[h>>2]|0;if(!d)return;else{i=h;e=d;d=h}a:while(1){m=d;b:while(1){c:do if(o){d=e;while(1){l=f[d+4>>2]&n;if((l|0)==(g|0))break c;e=(f[a>>2]|0)+(l<<2)|0;if(!(f[e>>2]|0)){g=l;break b}k=d+9|0;e=f[d>>2]|0;d:do if(!e)e=d;else{j=b[d+8>>0]|0;h=d;while(1){if(j<<24>>24!=(b[e+8>>0]|0)){e=h;break d}if((b[k>>0]|0)!=(b[e+9>>0]|0)){e=h;break d}h=f[e>>2]|0;if(!h)break;else{p=e;e=h;h=p}}}while(0);f[m>>2]=f[e>>2];f[e>>2]=f[f[(f[a>>2]|0)+(l<<2)>>2]>>2];f[f[(f[a>>2]|0)+(l<<2)>>2]>>2]=d;d=f[i>>2]|0;if(!d){d=36;break a}}}else{d=e;while(1){l=((f[d+4>>2]|0)>>>0)%(c>>>0)|0;if((l|0)==(g|0))break c;e=(f[a>>2]|0)+(l<<2)|0;if(!(f[e>>2]|0)){g=l;break b}k=d+9|0;e=f[d>>2]|0;e:do if(!e)e=d;else{j=b[d+8>>0]|0;h=d;while(1){if(j<<24>>24!=(b[e+8>>0]|0)){e=h;break e}if((b[k>>0]|0)!=(b[e+9>>0]|0)){e=h;break e}h=f[e>>2]|0;if(!h)break;else{p=e;e=h;h=p}}}while(0);f[m>>2]=f[e>>2];f[e>>2]=f[f[(f[a>>2]|0)+(l<<2)>>2]>>2];f[f[(f[a>>2]|0)+(l<<2)>>2]>>2]=d;d=f[i>>2]|0;if(!d){d=36;break a}}}while(0);e=f[d>>2]|0;if(!e){d=36;break a}else{i=d;m=d}}f[e>>2]=m;e=f[d>>2]|0;if(!e){d=36;break}else i=d}if((d|0)==36)return}function Ud(a,b,c,d,e,g){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;g=g|0;var h=0,i=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,v=0,w=0,x=0,y=0,z=0,A=0,B=0;A=u;u=u+16|0;y=A+4|0;x=A;f[a+72>>2]=e;f[a+64>>2]=g;v=Iq(e>>>0>1073741823?-1:e<<2)|0;w=a+68|0;g=f[w>>2]|0;f[w>>2]=v;if(g|0)Jq(g);v=a+8|0;f[v>>2]=e;j=a+32|0;i=a+36|0;h=f[i>>2]|0;g=f[j>>2]|0;k=h-g>>2;if(k>>>0>=e>>>0){if(k>>>0>e>>>0?(l=g+(e<<2)|0,(h|0)!=(l|0)):0)f[i>>2]=h+(~((h+-4-l|0)>>>2)<<2)}else jj(j,e-k|0);if(d|0){g=f[b>>2]|0;if((d|0)>1){i=1;h=g;do{t=f[b+(i<<2)>>2]|0;s=(t|0)<(g|0);g=s?t:g;h=s?h:(t|0)>(h|0)?t:h;i=i+1|0}while((i|0)!=(d|0))}else h=g;f[a+12>>2]=g;f[a+16>>2]=h;t=1-g+h|0;f[a+20>>2]=t;g=(t|0)/2|0;h=a+24|0;f[h>>2]=g;f[a+28>>2]=0-g;if(!(t&1))f[h>>2]=g+-1}o=a+56|0;i=f[o>>2]|0;h=f[i+4>>2]|0;g=f[i>>2]|0;k=h-g|0;if((k|0)<=0){u=A;return 1}r=a+16|0;n=a+32|0;t=a+12|0;s=a+28|0;q=a+20|0;p=a+24|0;j=h;h=(k>>>2)+-1|0;while(1){if(j-g>>2>>>0<=h>>>0){yp(i);g=f[i>>2]|0}f[x>>2]=f[g+(h<<2)>>2];f[y>>2]=f[x>>2];uc(a,y,b,h);m=X(h,e)|0;d=b+(m<<2)|0;m=c+(m<<2)|0;g=f[v>>2]|0;if((g|0)>0){l=0;j=f[w>>2]|0;do{if((g|0)>0){k=0;do{g=f[j+(k<<2)>>2]|0;i=f[r>>2]|0;if((g|0)>(i|0)){g=f[n>>2]|0;f[g+(k<<2)>>2]=i}else{B=f[t>>2]|0;i=f[n>>2]|0;f[i+(k<<2)>>2]=(g|0)<(B|0)?B:g;g=i}k=k+1|0}while((k|0)<(f[v>>2]|0));j=g}else j=f[n>>2]|0;g=(f[d+(l<<2)>>2]|0)-(f[j+(l<<2)>>2]|0)|0;i=m+(l<<2)|0;f[i>>2]=g;if((g|0)>=(f[s>>2]|0)){if((g|0)>(f[p>>2]|0)){g=g-(f[q>>2]|0)|0;z=33}}else{g=(f[q>>2]|0)+g|0;z=33}if((z|0)==33){z=0;f[i>>2]=g}l=l+1|0;g=f[v>>2]|0}while((l|0)<(g|0))}h=h+-1|0;if((h|0)<=-1)break;i=f[o>>2]|0;g=f[i>>2]|0;j=f[i+4>>2]|0}u=A;return 1}function Vd(a,c,d){a=a|0;c=c|0;d=d|0;var e=Ka,g=0,i=Ka,j=0,k=0;switch(b[a+24>>0]|0){case 1:{j=f[c>>2]|0;g=a+48|0;c=f[g>>2]|0;g=f[g+4>>2]|0;k=a+40|0;g=(Do(En(f[k>>2]|0,f[k+4>>2]|0,j|0,((j|0)<0)<<31>>31|0)|0,I|0,c|0,g|0)|0)+(f[f[a>>2]>>2]|0)|0;i=$((h[g>>0]|h[g+1>>0]<<8)&65535);e=$(i/$(65535.0));n[d>>2]=(b[a+32>>0]|0)==0?i:e;d=d+4|0;f[d>>2]=0;f[d+4>>2]=0;d=1;return d|0}case 2:{j=f[c>>2]|0;k=a+48|0;c=f[k>>2]|0;k=f[k+4>>2]|0;g=a+40|0;k=(Do(En(f[g>>2]|0,f[g+4>>2]|0,j|0,((j|0)<0)<<31>>31|0)|0,I|0,c|0,k|0)|0)+(f[f[a>>2]>>2]|0)|0;k=h[k>>0]|h[k+1>>0]<<8|h[k+2>>0]<<16|h[k+3>>0]<<24;c=k>>>16&65535;e=$(k&65535);if(!(b[a+32>>0]|0)){n[d>>2]=e;e=$(c&65535)}else{e=$(e/$(65535.0));n[d>>2]=e;e=$($(c&65535)/$(65535.0))}n[d+4>>2]=e;n[d+8>>2]=$(0.0);k=1;return k|0}case 3:{g=f[c>>2]|0;k=a+48|0;c=f[k>>2]|0;k=f[k+4>>2]|0;j=a+40|0;k=(Do(En(f[j>>2]|0,f[j+4>>2]|0,g|0,((g|0)<0)<<31>>31|0)|0,I|0,c|0,k|0)|0)+(f[f[a>>2]>>2]|0)|0;c=k+2|0;c=h[c>>0]|h[c+1>>0]<<8;g=k+4|0;g=h[g>>0]|h[g+1>>0]<<8;e=$((h[k>>0]|h[k+1>>0]<<8)&65535);if(!(b[a+32>>0]|0)){n[d>>2]=e;i=$(c&65535);n[d+4>>2]=i;i=$(g&65535);n[d+8>>2]=i;k=1;return k|0}else{i=$(e/$(65535.0));n[d>>2]=i;i=$($(c&65535)/$(65535.0));n[d+4>>2]=i;i=$($(g&65535)/$(65535.0));n[d+8>>2]=i;k=1;return k|0}}case 4:{k=f[c>>2]|0;g=a+48|0;j=f[g>>2]|0;g=f[g+4>>2]|0;c=a+40|0;g=(Do(En(f[c>>2]|0,f[c+4>>2]|0,k|0,((k|0)<0)<<31>>31|0)|0,I|0,j|0,g|0)|0)+(f[f[a>>2]>>2]|0)|0;j=g;j=h[j>>0]|h[j+1>>0]<<8|h[j+2>>0]<<16|h[j+3>>0]<<24;g=g+4|0;g=h[g>>0]|h[g+1>>0]<<8|h[g+2>>0]<<16|h[g+3>>0]<<24;k=(b[a+32>>0]|0)==0;c=(co(j|0,g|0,16)|0)&65535;g=g&65535;e=$(j&65535);if(k){n[d>>2]=e;i=$(c&65535);n[d+4>>2]=i;i=$(g&65535);n[d+8>>2]=i;k=1;return k|0}else{i=$(e/$(65535.0));n[d>>2]=i;i=$($(c&65535)/$(65535.0));n[d+4>>2]=i;i=$($(g&65535)/$(65535.0));n[d+8>>2]=i;k=1;return k|0}}default:{k=0;return k|0}}return 0}function Wd(a,c,d,e){a=a|0;c=c|0;d=d|0;e=e|0;var g=0,h=0,i=0,j=0,k=0,l=0,m=0,n=0,o=0;o=u;u=u+16|0;m=o;f[m>>2]=0;f[m+4>>2]=0;f[m+8>>2]=0;Ck(m,17623,15);l=ql(c,m,-1)|0;Eo(m);l=(l|0)==1;if(!l)if(($j(c)|0)<10?(h=f[d+12>>2]|0,g=f[d+8>>2]|0,(h-g|0)==4):0)n=5;else n=24;else{g=f[d+8>>2]|0;h=f[d+12>>2]|0;n=5}a:do if((n|0)==5){if((h-g|0)<=0)Fa(17639,17693,64,17731);g=f[g>>2]|0;b:do if((f[g+56>>2]|0)==0?(b[g+24>>0]|0)==3:0){switch(f[g+28>>2]|0){case 9:{f[m>>2]=0;f[m+4>>2]=0;f[m+8>>2]=0;Ck(m,17741,17);j=c+16|0;h=f[j>>2]|0;if(h){g=j;i=h;c:while(1){h=i;while(1){if((f[h+16>>2]|0)>=0)break;h=f[h+4>>2]|0;if(!h)break c}i=f[h>>2]|0;if(!i){g=h;break}else g=h}if(((g|0)!=(j|0)?(k=g+20|0,(f[g+16>>2]|0)<=0):0)?(Pi(k,m)|0)!=0:0)g=ql(k,m,-1)|0;else n=19}else n=19;if((n|0)==19)g=ql(c,m,-1)|0;Eo(m);if((g|0)<1)break b;break}case 6:break;default:break b}g=Fn(52)|0;h=g;i=h+52|0;do{f[h>>2]=0;h=h+4|0}while((h|0)<(i|0));eo(g);h=5432;break a}while(0);if(l){f[m>>2]=0;f[m+4>>2]=0;f[m+8>>2]=0;Ck(m,17759,24);f[a>>2]=-1;Rl(a+4|0,m);Eo(m);u=o;return}else n=24}while(0);if((n|0)==24){g=Fn(52)|0;h=g;i=h+52|0;do{f[h>>2]=0;h=h+4|0}while((h|0)<(i|0));eo(g);h=5352}f[g>>2]=h;qp(g,d);td(a,g,c,e);Oa[f[(f[g>>2]|0)+4>>2]&127](g);u=o;return}function Xd(a,c){a=a|0;c=c|0;var d=0,e=0,g=0,h=0,i=0,j=0,k=0,l=0,m=0;e=f[a>>2]|0;i=a+4|0;d=f[i>>2]|0;h=c+4|0;if((d|0)==(e|0)){g=h;d=a;j=f[h>>2]|0;h=e;f[d>>2]=j;f[g>>2]=h;h=c+8|0;e=f[i>>2]|0;d=f[h>>2]|0;f[i>>2]=d;f[h>>2]=e;h=a+8|0;a=c+12|0;i=f[h>>2]|0;e=f[a>>2]|0;f[h>>2]=e;f[a>>2]=i;a=f[g>>2]|0;f[c>>2]=a;return}g=f[h>>2]|0;do{j=d;d=d+-108|0;f[g+-108>>2]=f[d>>2];l=j+-104|0;f[g+-104>>2]=f[l>>2];k=j+-100|0;f[g+-100>>2]=f[k>>2];m=j+-96|0;f[g+-96>>2]=f[m>>2];f[l>>2]=0;f[k>>2]=0;f[m>>2]=0;m=j+-92|0;f[g+-92>>2]=f[m>>2];k=j+-88|0;f[g+-88>>2]=f[k>>2];l=j+-84|0;f[g+-84>>2]=f[l>>2];f[m>>2]=0;f[k>>2]=0;f[l>>2]=0;b[g+-80>>0]=b[j+-80>>0]|0;l=g+-76|0;k=j+-76|0;f[l>>2]=0;m=g+-72|0;f[m>>2]=0;f[g+-68>>2]=0;f[l>>2]=f[k>>2];l=j+-72|0;f[m>>2]=f[l>>2];m=j+-68|0;f[g+-68>>2]=f[m>>2];f[m>>2]=0;f[l>>2]=0;f[k>>2]=0;k=g+-64|0;l=j+-64|0;f[k>>2]=0;m=g+-60|0;f[m>>2]=0;f[g+-56>>2]=0;f[k>>2]=f[l>>2];k=j+-60|0;f[m>>2]=f[k>>2];m=j+-56|0;f[g+-56>>2]=f[m>>2];f[m>>2]=0;f[k>>2]=0;f[l>>2]=0;l=g+-52|0;k=j+-52|0;f[l>>2]=0;m=g+-48|0;f[m>>2]=0;f[g+-44>>2]=0;f[l>>2]=f[k>>2];l=j+-48|0;f[m>>2]=f[l>>2];m=j+-44|0;f[g+-44>>2]=f[m>>2];f[m>>2]=0;f[l>>2]=0;f[k>>2]=0;f[g+-40>>2]=f[j+-40>>2];b[g+-36>>0]=b[j+-36>>0]|0;k=g+-32|0;l=j+-32|0;f[k>>2]=0;m=g+-28|0;f[m>>2]=0;f[g+-24>>2]=0;f[k>>2]=f[l>>2];k=j+-28|0;f[m>>2]=f[k>>2];m=j+-24|0;f[g+-24>>2]=f[m>>2];f[m>>2]=0;f[k>>2]=0;f[l>>2]=0;l=g+-20|0;k=j+-20|0;f[l>>2]=0;m=g+-16|0;f[m>>2]=0;f[g+-12>>2]=0;f[l>>2]=f[k>>2];l=j+-16|0;f[m>>2]=f[l>>2];m=j+-12|0;f[g+-12>>2]=f[m>>2];f[m>>2]=0;f[l>>2]=0;f[k>>2]=0;f[g+-8>>2]=f[j+-8>>2];f[g+-4>>2]=f[j+-4>>2];g=(f[h>>2]|0)+-108|0;f[h>>2]=g}while((d|0)!=(e|0));m=h;l=a;k=g;j=f[a>>2]|0;f[l>>2]=k;f[m>>2]=j;j=c+8|0;l=f[i>>2]|0;k=f[j>>2]|0;f[i>>2]=k;f[j>>2]=l;j=a+8|0;l=c+12|0;k=f[j>>2]|0;a=f[l>>2]|0;f[j>>2]=a;f[l>>2]=k;m=f[m>>2]|0;f[c>>2]=m;return}function Yd(a,c,d){a=a|0;c=c|0;d=d|0;var e=0,g=0,i=0;switch(b[a+24>>0]|0){case 1:{g=f[c>>2]|0;c=a+48|0;e=f[c>>2]|0;c=f[c+4>>2]|0;i=a+40|0;c=(Do(En(f[i>>2]|0,f[i+4>>2]|0,g|0,((g|0)<0)<<31>>31|0)|0,I|0,e|0,c|0)|0)+(f[f[a>>2]>>2]|0)|0;c=(h[c>>0]|h[c+1>>0]<<8)<<16>>16;a=d;f[a>>2]=c;f[a+4>>2]=((c|0)<0)<<31>>31;a=d+8|0;f[a>>2]=0;f[a+4>>2]=0;f[a+8>>2]=0;f[a+12>>2]=0;f[a+16>>2]=0;f[a+20>>2]=0;a=1;return a|0}case 2:{i=f[c>>2]|0;g=a+48|0;e=f[g>>2]|0;g=f[g+4>>2]|0;c=a+40|0;g=(Do(En(f[c>>2]|0,f[c+4>>2]|0,i|0,((i|0)<0)<<31>>31|0)|0,I|0,e|0,g|0)|0)+(f[f[a>>2]>>2]|0)|0;g=h[g>>0]|h[g+1>>0]<<8|h[g+2>>0]<<16|h[g+3>>0]<<24;e=(g&65535)<<16>>16;i=d;f[i>>2]=e;f[i+4>>2]=((e|0)<0)<<31>>31;g=(g>>>16&65535)<<16>>16;i=d+8|0;f[i>>2]=g;f[i+4>>2]=((g|0)<0)<<31>>31;i=d+16|0;f[i>>2]=0;f[i+4>>2]=0;f[i+8>>2]=0;f[i+12>>2]=0;i=1;return i|0}case 3:{i=f[c>>2]|0;e=a+48|0;g=f[e>>2]|0;e=f[e+4>>2]|0;c=a+40|0;a=(Do(En(f[c>>2]|0,f[c+4>>2]|0,i|0,((i|0)<0)<<31>>31|0)|0,I|0,g|0,e|0)|0)+(f[f[a>>2]>>2]|0)|0;e=a+2|0;e=h[e>>0]|h[e+1>>0]<<8;g=a+4|0;g=h[g>>0]|h[g+1>>0]<<8;a=(h[a>>0]|h[a+1>>0]<<8)<<16>>16;i=d;f[i>>2]=a;f[i+4>>2]=((a|0)<0)<<31>>31;e=e<<16>>16;i=d+8|0;f[i>>2]=e;f[i+4>>2]=((e|0)<0)<<31>>31;g=g<<16>>16;i=d+16|0;f[i>>2]=g;f[i+4>>2]=((g|0)<0)<<31>>31;i=d+24|0;f[i>>2]=0;f[i+4>>2]=0;i=1;return i|0}case 4:{e=f[c>>2]|0;g=a+48|0;i=f[g>>2]|0;g=f[g+4>>2]|0;c=a+40|0;g=(Do(En(f[c>>2]|0,f[c+4>>2]|0,e|0,((e|0)<0)<<31>>31|0)|0,I|0,i|0,g|0)|0)+(f[f[a>>2]>>2]|0)|0;i=g;i=h[i>>0]|h[i+1>>0]<<8|h[i+2>>0]<<16|h[i+3>>0]<<24;g=g+4|0;g=h[g>>0]|h[g+1>>0]<<8|h[g+2>>0]<<16|h[g+3>>0]<<24;a=Ln(Zn(i|0,g|0,48)|0,I|0,48)|0;e=d;f[e>>2]=a;f[e+4>>2]=I;e=Ln(0,i|0,48)|0;a=d+8|0;f[a>>2]=e;f[a+4>>2]=I;a=Ln(Zn(i|0,g|0,16)|0,I|0,48)|0;e=d+16|0;f[e>>2]=a;f[e+4>>2]=I;g=Ln(i|0,g|0,48)|0;i=d+24|0;f[i>>2]=g;f[i+4>>2]=I;i=1;return i|0}default:{i=0;return i|0}}return 0}function Zd(a,c,d){a=a|0;c=c|0;d=d|0;var e=Ka,g=Ka,i=0,j=0,k=0;switch(b[a+24>>0]|0){case 1:{c=f[c>>2]|0;j=a+48|0;i=f[j>>2]|0;j=f[j+4>>2]|0;k=a+40|0;j=Do(En(f[k>>2]|0,f[k+4>>2]|0,c|0,((c|0)<0)<<31>>31|0)|0,I|0,i|0,j|0)|0;e=$(b[(f[f[a>>2]>>2]|0)+j>>0]|0);g=$(e/$(127.0));n[d>>2]=(b[a+32>>0]|0)==0?e:g;d=d+4|0;f[d>>2]=0;f[d+4>>2]=0;f[d+8>>2]=0;d=1;return d|0}case 2:{j=f[c>>2]|0;k=a+48|0;c=f[k>>2]|0;k=f[k+4>>2]|0;i=a+40|0;k=(Do(En(f[i>>2]|0,f[i+4>>2]|0,j|0,((j|0)<0)<<31>>31|0)|0,I|0,c|0,k|0)|0)+(f[f[a>>2]>>2]|0)|0;k=h[k>>0]|h[k+1>>0]<<8;c=(k&65535)>>>8&255;e=$((k&255)<<24>>24);if(!(b[a+32>>0]|0)){n[d>>2]=e;e=$(c<<24>>24)}else{e=$(e/$(127.0));n[d>>2]=e;e=$($(c<<24>>24)/$(127.0))}n[d+4>>2]=e;k=d+8|0;f[k>>2]=0;f[k+4>>2]=0;k=1;return k|0}case 3:{i=f[c>>2]|0;k=a+48|0;c=f[k>>2]|0;k=f[k+4>>2]|0;j=a+40|0;k=(Do(En(f[j>>2]|0,f[j+4>>2]|0,i|0,((i|0)<0)<<31>>31|0)|0,I|0,c|0,k|0)|0)+(f[f[a>>2]>>2]|0)|0;c=b[k+1>>0]|0;i=b[k+2>>0]|0;e=$(b[k>>0]|0);if(!(b[a+32>>0]|0)){n[d>>2]=e;g=$(c<<24>>24);e=$(i<<24>>24)}else{g=$(e/$(127.0));n[d>>2]=g;g=$($(c<<24>>24)/$(127.0));e=$($(i<<24>>24)/$(127.0))}n[d+4>>2]=g;n[d+8>>2]=e;n[d+12>>2]=$(0.0);k=1;return k|0}case 4:{i=f[c>>2]|0;k=a+48|0;c=f[k>>2]|0;k=f[k+4>>2]|0;j=a+40|0;k=(Do(En(f[j>>2]|0,f[j+4>>2]|0,i|0,((i|0)<0)<<31>>31|0)|0,I|0,c|0,k|0)|0)+(f[f[a>>2]>>2]|0)|0;k=h[k>>0]|h[k+1>>0]<<8|h[k+2>>0]<<16|h[k+3>>0]<<24;c=k>>>8&255;i=k>>>16&255;j=k>>>24&255;e=$((k&255)<<24>>24);if(!(b[a+32>>0]|0)){n[d>>2]=e;g=$(c<<24>>24);n[d+4>>2]=g;g=$(i<<24>>24);n[d+8>>2]=g;g=$(j<<24>>24);n[d+12>>2]=g;k=1;return k|0}else{g=$(e/$(127.0));n[d>>2]=g;g=$($(c<<24>>24)/$(127.0));n[d+4>>2]=g;g=$($(i<<24>>24)/$(127.0));n[d+8>>2]=g;g=$($(j<<24>>24)/$(127.0));n[d+12>>2]=g;k=1;return k|0}}default:{k=0;return k|0}}return 0}function _d(a,b,c,d,e,g){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;g=g|0;var h=0,i=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,v=0,w=0,x=0,y=0,z=0,A=0,B=0;A=u;u=u+16|0;x=A+4|0;w=A;y=a+60|0;f[a+64>>2]=g;v=a+8|0;f[v>>2]=e;j=a+32|0;i=a+36|0;h=f[i>>2]|0;g=f[j>>2]|0;k=h-g>>2;if(k>>>0>=e>>>0){if(k>>>0>e>>>0?(l=g+(e<<2)|0,(h|0)!=(l|0)):0)f[i>>2]=h+(~((h+-4-l|0)>>>2)<<2)}else jj(j,e-k|0);if(d|0){g=f[b>>2]|0;if((d|0)>1){i=1;h=g;do{t=f[b+(i<<2)>>2]|0;s=(t|0)<(g|0);g=s?t:g;h=s?h:(t|0)>(h|0)?t:h;i=i+1|0}while((i|0)!=(d|0))}else h=g;f[a+12>>2]=g;f[a+16>>2]=h;t=1-g+h|0;f[a+20>>2]=t;g=(t|0)/2|0;h=a+24|0;f[h>>2]=g;f[a+28>>2]=0-g;if(!(t&1))f[h>>2]=g+-1}p=a+56|0;i=f[p>>2]|0;h=f[i+4>>2]|0;g=f[i>>2]|0;k=h-g|0;if((k|0)<=0){u=A;return 1}o=a+68|0;r=a+16|0;n=a+32|0;t=a+12|0;s=a+28|0;q=a+20|0;m=a+24|0;j=h;h=(k>>>2)+-1|0;while(1){if(j-g>>2>>>0<=h>>>0){yp(i);g=f[i>>2]|0}f[w>>2]=f[g+(h<<2)>>2];f[x>>2]=f[w>>2];Jb(y,x,b,h);a=X(h,e)|0;d=b+(a<<2)|0;a=c+(a<<2)|0;g=f[v>>2]|0;if((g|0)>0){l=0;j=o;do{if((g|0)>0){k=0;do{g=f[j+(k<<2)>>2]|0;i=f[r>>2]|0;if((g|0)>(i|0)){g=f[n>>2]|0;f[g+(k<<2)>>2]=i}else{B=f[t>>2]|0;i=f[n>>2]|0;f[i+(k<<2)>>2]=(g|0)<(B|0)?B:g;g=i}k=k+1|0}while((k|0)<(f[v>>2]|0));j=g}else j=f[n>>2]|0;g=(f[d+(l<<2)>>2]|0)-(f[j+(l<<2)>>2]|0)|0;i=a+(l<<2)|0;f[i>>2]=g;if((g|0)>=(f[s>>2]|0)){if((g|0)>(f[m>>2]|0)){g=g-(f[q>>2]|0)|0;z=30}}else{g=(f[q>>2]|0)+g|0;z=30}if((z|0)==30){z=0;f[i>>2]=g}l=l+1|0;g=f[v>>2]|0}while((l|0)<(g|0))}h=h+-1|0;if((h|0)<=-1)break;i=f[p>>2]|0;g=f[i>>2]|0;j=f[i+4>>2]|0}u=A;return 1}function $d(a,c,d){a=a|0;c=c|0;d=d|0;var e=0,g=0,i=0;switch(b[a+24>>0]|0){case 1:{g=f[c>>2]|0;c=a+48|0;e=f[c>>2]|0;c=f[c+4>>2]|0;i=a+40|0;c=(Do(En(f[i>>2]|0,f[i+4>>2]|0,g|0,((g|0)<0)<<31>>31|0)|0,I|0,e|0,c|0)|0)+(f[f[a>>2]>>2]|0)|0;a=d;f[a>>2]=h[c>>0]|h[c+1>>0]<<8|h[c+2>>0]<<16|h[c+3>>0]<<24;f[a+4>>2]=0;a=d+8|0;f[a>>2]=0;f[a+4>>2]=0;f[a+8>>2]=0;f[a+12>>2]=0;f[a+16>>2]=0;f[a+20>>2]=0;a=1;return a|0}case 2:{i=f[c>>2]|0;g=a+48|0;e=f[g>>2]|0;g=f[g+4>>2]|0;c=a+40|0;g=(Do(En(f[c>>2]|0,f[c+4>>2]|0,i|0,((i|0)<0)<<31>>31|0)|0,I|0,e|0,g|0)|0)+(f[f[a>>2]>>2]|0)|0;e=g;g=g+4|0;g=h[g>>0]|h[g+1>>0]<<8|h[g+2>>0]<<16|h[g+3>>0]<<24;i=d;f[i>>2]=h[e>>0]|h[e+1>>0]<<8|h[e+2>>0]<<16|h[e+3>>0]<<24;f[i+4>>2]=0;i=d+8|0;f[i>>2]=g;f[i+4>>2]=0;i=d+16|0;f[i>>2]=0;f[i+4>>2]=0;f[i+8>>2]=0;f[i+12>>2]=0;i=1;return i|0}case 3:{i=f[c>>2]|0;e=a+48|0;g=f[e>>2]|0;e=f[e+4>>2]|0;c=a+40|0;a=(Do(En(f[c>>2]|0,f[c+4>>2]|0,i|0,((i|0)<0)<<31>>31|0)|0,I|0,g|0,e|0)|0)+(f[f[a>>2]>>2]|0)|0;e=a+4|0;e=h[e>>0]|h[e+1>>0]<<8|h[e+2>>0]<<16|h[e+3>>0]<<24;g=a+8|0;g=h[g>>0]|h[g+1>>0]<<8|h[g+2>>0]<<16|h[g+3>>0]<<24;i=d;f[i>>2]=h[a>>0]|h[a+1>>0]<<8|h[a+2>>0]<<16|h[a+3>>0]<<24;f[i+4>>2]=0;i=d+8|0;f[i>>2]=e;f[i+4>>2]=0;i=d+16|0;f[i>>2]=g;f[i+4>>2]=0;i=d+24|0;f[i>>2]=0;f[i+4>>2]=0;i=1;return i|0}case 4:{g=f[c>>2]|0;c=a+48|0;e=f[c>>2]|0;c=f[c+4>>2]|0;i=a+40|0;c=(Do(En(f[i>>2]|0,f[i+4>>2]|0,g|0,((g|0)<0)<<31>>31|0)|0,I|0,e|0,c|0)|0)+(f[f[a>>2]>>2]|0)|0;a=c+4|0;a=h[a>>0]|h[a+1>>0]<<8|h[a+2>>0]<<16|h[a+3>>0]<<24;e=c+8|0;e=h[e>>0]|h[e+1>>0]<<8|h[e+2>>0]<<16|h[e+3>>0]<<24;g=c+12|0;g=h[g>>0]|h[g+1>>0]<<8|h[g+2>>0]<<16|h[g+3>>0]<<24;i=d;f[i>>2]=h[c>>0]|h[c+1>>0]<<8|h[c+2>>0]<<16|h[c+3>>0]<<24;f[i+4>>2]=0;i=d+8|0;f[i>>2]=a;f[i+4>>2]=0;i=d+16|0;f[i>>2]=e;f[i+4>>2]=0;i=d+24|0;f[i>>2]=g;f[i+4>>2]=0;i=1;return i|0}default:{i=0;return i|0}}return 0}function ae(a,b,c,d,e,g){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;g=g|0;var h=0,i=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,v=0,w=0,x=0,y=0,z=0,A=0,B=0;A=u;u=u+16|0;x=A+4|0;w=A;y=a+60|0;f[a+64>>2]=g;v=a+8|0;f[v>>2]=e;j=a+32|0;i=a+36|0;h=f[i>>2]|0;g=f[j>>2]|0;k=h-g>>2;if(k>>>0>=e>>>0){if(k>>>0>e>>>0?(l=g+(e<<2)|0,(h|0)!=(l|0)):0)f[i>>2]=h+(~((h+-4-l|0)>>>2)<<2)}else jj(j,e-k|0);if(d|0){g=f[b>>2]|0;if((d|0)>1){i=1;h=g;do{t=f[b+(i<<2)>>2]|0;s=(t|0)<(g|0);g=s?t:g;h=s?h:(t|0)>(h|0)?t:h;i=i+1|0}while((i|0)!=(d|0))}else h=g;f[a+12>>2]=g;f[a+16>>2]=h;t=1-g+h|0;f[a+20>>2]=t;g=(t|0)/2|0;h=a+24|0;f[h>>2]=g;f[a+28>>2]=0-g;if(!(t&1))f[h>>2]=g+-1}p=a+56|0;i=f[p>>2]|0;h=f[i+4>>2]|0;g=f[i>>2]|0;k=h-g|0;if((k|0)<=0){u=A;return 1}o=a+68|0;r=a+16|0;n=a+32|0;t=a+12|0;s=a+28|0;q=a+20|0;m=a+24|0;j=h;h=(k>>>2)+-1|0;while(1){if(j-g>>2>>>0<=h>>>0){yp(i);g=f[i>>2]|0}f[w>>2]=f[g+(h<<2)>>2];f[x>>2]=f[w>>2];Ib(y,x,b,h);a=X(h,e)|0;d=b+(a<<2)|0;a=c+(a<<2)|0;g=f[v>>2]|0;if((g|0)>0){l=0;j=o;do{if((g|0)>0){k=0;do{g=f[j+(k<<2)>>2]|0;i=f[r>>2]|0;if((g|0)>(i|0)){g=f[n>>2]|0;f[g+(k<<2)>>2]=i}else{B=f[t>>2]|0;i=f[n>>2]|0;f[i+(k<<2)>>2]=(g|0)<(B|0)?B:g;g=i}k=k+1|0}while((k|0)<(f[v>>2]|0));j=g}else j=f[n>>2]|0;g=(f[d+(l<<2)>>2]|0)-(f[j+(l<<2)>>2]|0)|0;i=a+(l<<2)|0;f[i>>2]=g;if((g|0)>=(f[s>>2]|0)){if((g|0)>(f[m>>2]|0)){g=g-(f[q>>2]|0)|0;z=30}}else{g=(f[q>>2]|0)+g|0;z=30}if((z|0)==30){z=0;f[i>>2]=g}l=l+1|0;g=f[v>>2]|0}while((l|0)<(g|0))}h=h+-1|0;if((h|0)<=-1)break;i=f[p>>2]|0;g=f[i>>2]|0;j=f[i+4>>2]|0}u=A;return 1}function be(a,c,d){a=a|0;c=c|0;d=d|0;var e=0,g=0,h=0,i=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,v=0,w=0,x=0;x=u;u=u+176|0;i=x+136|0;w=x+104|0;v=x;l=x+72|0;q=Fn(88)|0;j=f[c+8>>2]|0;f[q+4>>2]=0;f[q>>2]=5828;m=q+12|0;f[m>>2]=5852;o=q+64|0;f[o>>2]=0;f[q+68>>2]=0;f[q+72>>2]=0;g=q+16|0;h=g+44|0;do{f[g>>2]=0;g=g+4|0}while((g|0)<(h|0));f[q+76>>2]=j;f[q+80>>2]=d;r=q+84|0;f[r>>2]=0;n=q;f[w>>2]=5852;e=w+4|0;k=e+4|0;f[k>>2]=0;f[k+4>>2]=0;f[k+8>>2]=0;f[k+12>>2]=0;f[k+16>>2]=0;f[k+20>>2]=0;k=f[c+12>>2]|0;s=v+4|0;f[s>>2]=5852;p=v+56|0;f[p>>2]=0;t=v+60|0;f[t>>2]=0;f[v+64>>2]=0;g=v+8|0;h=g+44|0;do{f[g>>2]=0;g=g+4|0}while((g|0)<(h|0));g=k;f[e>>2]=g;g=((f[g+4>>2]|0)-(f[k>>2]|0)>>2>>>0)/3|0;b[i>>0]=0;Th(w+8|0,g,i);Oa[f[(f[w>>2]|0)+8>>2]&127](w);Ag(l,w);Ag(i,l);f[v>>2]=f[i+4>>2];g=v+4|0;jh(g,i)|0;f[i>>2]=5852;e=f[i+20>>2]|0;if(e|0)Lq(e);e=f[i+8>>2]|0;if(e|0)Lq(e);f[v+36>>2]=k;f[v+40>>2]=d;f[v+44>>2]=j;f[v+48>>2]=q;f[l>>2]=5852;e=f[l+20>>2]|0;if(e|0)Lq(e);e=f[l+8>>2]|0;if(e|0)Lq(e);f[r>>2]=c+72;f[q+8>>2]=f[v>>2];jh(m,g)|0;e=q+44|0;c=v+36|0;f[e>>2]=f[c>>2];f[e+4>>2]=f[c+4>>2];f[e+8>>2]=f[c+8>>2];f[e+12>>2]=f[c+12>>2];b[e+16>>0]=b[c+16>>0]|0;Cg(o,f[p>>2]|0,f[t>>2]|0);f[a>>2]=n;e=f[p>>2]|0;if(e|0){g=f[t>>2]|0;if((g|0)!=(e|0))f[t>>2]=g+(~((g+-4-e|0)>>>2)<<2);Lq(e)}f[s>>2]=5852;e=f[v+24>>2]|0;if(e|0)Lq(e);e=f[v+12>>2]|0;if(e|0)Lq(e);f[w>>2]=5852;e=f[w+20>>2]|0;if(e|0)Lq(e);e=f[w+8>>2]|0;if(!e){u=x;return}Lq(e);u=x;return}function ce(a,c,d){a=a|0;c=c|0;d=d|0;var e=Ka,g=Ka,i=0,j=0,k=0;switch(b[a+24>>0]|0){case 1:{j=f[c>>2]|0;c=a+48|0;i=f[c>>2]|0;c=f[c+4>>2]|0;k=a+40|0;c=(Do(En(f[k>>2]|0,f[k+4>>2]|0,j|0,((j|0)<0)<<31>>31|0)|0,I|0,i|0,c|0)|0)+(f[f[a>>2]>>2]|0)|0;g=$((h[c>>0]|h[c+1>>0]<<8|h[c+2>>0]<<16|h[c+3>>0]<<24)>>>0);e=$(g*$(2.32830644e-10));n[d>>2]=(b[a+32>>0]|0)==0?g:e;n[d+4>>2]=$(0.0);a=1;return a|0}case 2:{j=f[c>>2]|0;c=a+48|0;k=f[c>>2]|0;c=f[c+4>>2]|0;i=a+40|0;c=(Do(En(f[i>>2]|0,f[i+4>>2]|0,j|0,((j|0)<0)<<31>>31|0)|0,I|0,k|0,c|0)|0)+(f[f[a>>2]>>2]|0)|0;k=c;c=c+4|0;c=h[c>>0]|h[c+1>>0]<<8|h[c+2>>0]<<16|h[c+3>>0]<<24;e=$((h[k>>0]|h[k+1>>0]<<8|h[k+2>>0]<<16|h[k+3>>0]<<24)>>>0);if(!(b[a+32>>0]|0)){n[d>>2]=e;g=$(c>>>0);n[d+4>>2]=g;k=1;return k|0}else{g=$(e*$(2.32830644e-10));n[d>>2]=g;g=$($(c>>>0)*$(2.32830644e-10));n[d+4>>2]=g;k=1;return k|0}}case 3:{j=f[c>>2]|0;k=a+48|0;c=f[k>>2]|0;k=f[k+4>>2]|0;i=a+40|0;k=(Do(En(f[i>>2]|0,f[i+4>>2]|0,j|0,((j|0)<0)<<31>>31|0)|0,I|0,c|0,k|0)|0)+(f[f[a>>2]>>2]|0)|0;c=k+4|0;c=h[c>>0]|h[c+1>>0]<<8|h[c+2>>0]<<16|h[c+3>>0]<<24;e=$((h[k>>0]|h[k+1>>0]<<8|h[k+2>>0]<<16|h[k+3>>0]<<24)>>>0);if(!(b[a+32>>0]|0)){n[d>>2]=e;g=$(c>>>0);n[d+4>>2]=g;k=1;return k|0}else{g=$(e*$(2.32830644e-10));n[d>>2]=g;g=$($(c>>>0)*$(2.32830644e-10));n[d+4>>2]=g;k=1;return k|0}}case 4:{j=f[c>>2]|0;k=a+48|0;c=f[k>>2]|0;k=f[k+4>>2]|0;i=a+40|0;k=(Do(En(f[i>>2]|0,f[i+4>>2]|0,j|0,((j|0)<0)<<31>>31|0)|0,I|0,c|0,k|0)|0)+(f[f[a>>2]>>2]|0)|0;c=k+4|0;c=h[c>>0]|h[c+1>>0]<<8|h[c+2>>0]<<16|h[c+3>>0]<<24;e=$((h[k>>0]|h[k+1>>0]<<8|h[k+2>>0]<<16|h[k+3>>0]<<24)>>>0);if(!(b[a+32>>0]|0)){n[d>>2]=e;g=$(c>>>0);n[d+4>>2]=g;k=1;return k|0}else{g=$(e*$(2.32830644e-10));n[d>>2]=g;g=$($(c>>>0)*$(2.32830644e-10));n[d+4>>2]=g;k=1;return k|0}}default:{k=0;return k|0}}return 0}function de(a,c,d){a=a|0;c=c|0;d=d|0;var e=0,g=0,i=0;switch(b[a+24>>0]|0){case 1:{g=f[c>>2]|0;c=a+48|0;e=f[c>>2]|0;c=f[c+4>>2]|0;i=a+40|0;c=(Do(En(f[i>>2]|0,f[i+4>>2]|0,g|0,((g|0)<0)<<31>>31|0)|0,I|0,e|0,c|0)|0)+(f[f[a>>2]>>2]|0)|0;c=h[c>>0]|h[c+1>>0]<<8|h[c+2>>0]<<16|h[c+3>>0]<<24;a=d;f[a>>2]=c;f[a+4>>2]=((c|0)<0)<<31>>31;a=d+8|0;f[a>>2]=0;f[a+4>>2]=0;f[a+8>>2]=0;f[a+12>>2]=0;a=1;return a|0}case 2:{e=f[c>>2]|0;g=a+48|0;i=f[g>>2]|0;g=f[g+4>>2]|0;c=a+40|0;g=(Do(En(f[c>>2]|0,f[c+4>>2]|0,e|0,((e|0)<0)<<31>>31|0)|0,I|0,i|0,g|0)|0)+(f[f[a>>2]>>2]|0)|0;i=g;i=h[i>>0]|h[i+1>>0]<<8|h[i+2>>0]<<16|h[i+3>>0]<<24;g=g+4|0;g=h[g>>0]|h[g+1>>0]<<8|h[g+2>>0]<<16|h[g+3>>0]<<24;a=Ln(0,i|0,32)|0;e=d;f[e>>2]=a;f[e+4>>2]=I;g=Ln(i|0,g|0,32)|0;i=d+8|0;f[i>>2]=g;f[i+4>>2]=I;i=d+16|0;f[i>>2]=0;f[i+4>>2]=0;i=1;return i|0}case 3:{i=f[c>>2]|0;g=a+48|0;e=f[g>>2]|0;g=f[g+4>>2]|0;c=a+40|0;g=(Do(En(f[c>>2]|0,f[c+4>>2]|0,i|0,((i|0)<0)<<31>>31|0)|0,I|0,e|0,g|0)|0)+(f[f[a>>2]>>2]|0)|0;a=h[g>>0]|h[g+1>>0]<<8|h[g+2>>0]<<16|h[g+3>>0]<<24;e=g+4|0;e=h[e>>0]|h[e+1>>0]<<8|h[e+2>>0]<<16|h[e+3>>0]<<24;g=g+8|0;g=h[g>>0]|h[g+1>>0]<<8|h[g+2>>0]<<16|h[g+3>>0]<<24;i=d;f[i>>2]=a;f[i+4>>2]=((a|0)<0)<<31>>31;i=d+8|0;f[i>>2]=e;f[i+4>>2]=((e|0)<0)<<31>>31;i=d+16|0;f[i>>2]=g;f[i+4>>2]=((g|0)<0)<<31>>31;i=1;return i|0}case 4:{i=f[c>>2]|0;g=a+48|0;e=f[g>>2]|0;g=f[g+4>>2]|0;c=a+40|0;g=(Do(En(f[c>>2]|0,f[c+4>>2]|0,i|0,((i|0)<0)<<31>>31|0)|0,I|0,e|0,g|0)|0)+(f[f[a>>2]>>2]|0)|0;a=h[g>>0]|h[g+1>>0]<<8|h[g+2>>0]<<16|h[g+3>>0]<<24;e=g+4|0;e=h[e>>0]|h[e+1>>0]<<8|h[e+2>>0]<<16|h[e+3>>0]<<24;g=g+8|0;g=h[g>>0]|h[g+1>>0]<<8|h[g+2>>0]<<16|h[g+3>>0]<<24;i=d;f[i>>2]=a;f[i+4>>2]=((a|0)<0)<<31>>31;i=d+8|0;f[i>>2]=e;f[i+4>>2]=((e|0)<0)<<31>>31;i=d+16|0;f[i>>2]=g;f[i+4>>2]=((g|0)<0)<<31>>31;i=1;return i|0}default:{i=0;return i|0}}return 0}function ee(a,c,d){a=a|0;c=c|0;d=d|0;var e=Ka,g=Ka,i=0,j=0,k=0;switch(b[a+24>>0]|0){case 1:{c=f[c>>2]|0;j=a+48|0;i=f[j>>2]|0;j=f[j+4>>2]|0;k=a+40|0;j=Do(En(f[k>>2]|0,f[k+4>>2]|0,c|0,((c|0)<0)<<31>>31|0)|0,I|0,i|0,j|0)|0;e=$(h[(f[f[a>>2]>>2]|0)+j>>0]|0);g=$(e/$(255.0));n[d>>2]=(b[a+32>>0]|0)==0?e:g;d=d+4|0;f[d>>2]=0;f[d+4>>2]=0;f[d+8>>2]=0;d=1;return d|0}case 2:{j=f[c>>2]|0;k=a+48|0;c=f[k>>2]|0;k=f[k+4>>2]|0;i=a+40|0;k=(Do(En(f[i>>2]|0,f[i+4>>2]|0,j|0,((j|0)<0)<<31>>31|0)|0,I|0,c|0,k|0)|0)+(f[f[a>>2]>>2]|0)|0;k=h[k>>0]|h[k+1>>0]<<8;c=(k&65535)>>>8&255;e=$(k&255);if(!(b[a+32>>0]|0)){n[d>>2]=e;e=$(c&255)}else{e=$(e/$(255.0));n[d>>2]=e;e=$($(c&255)/$(255.0))}n[d+4>>2]=e;k=d+8|0;f[k>>2]=0;f[k+4>>2]=0;k=1;return k|0}case 3:{i=f[c>>2]|0;k=a+48|0;c=f[k>>2]|0;k=f[k+4>>2]|0;j=a+40|0;k=(Do(En(f[j>>2]|0,f[j+4>>2]|0,i|0,((i|0)<0)<<31>>31|0)|0,I|0,c|0,k|0)|0)+(f[f[a>>2]>>2]|0)|0;c=b[k+1>>0]|0;i=b[k+2>>0]|0;e=$(h[k>>0]|0);if(!(b[a+32>>0]|0)){n[d>>2]=e;g=$(c&255);e=$(i&255)}else{g=$(e/$(255.0));n[d>>2]=g;g=$($(c&255)/$(255.0));e=$($(i&255)/$(255.0))}n[d+4>>2]=g;n[d+8>>2]=e;n[d+12>>2]=$(0.0);k=1;return k|0}case 4:{i=f[c>>2]|0;k=a+48|0;c=f[k>>2]|0;k=f[k+4>>2]|0;j=a+40|0;k=(Do(En(f[j>>2]|0,f[j+4>>2]|0,i|0,((i|0)<0)<<31>>31|0)|0,I|0,c|0,k|0)|0)+(f[f[a>>2]>>2]|0)|0;k=h[k>>0]|h[k+1>>0]<<8|h[k+2>>0]<<16|h[k+3>>0]<<24;c=k>>>8&255;i=k>>>16&255;j=k>>>24&255;e=$(k&255);if(!(b[a+32>>0]|0)){n[d>>2]=e;g=$(c&255);n[d+4>>2]=g;g=$(i&255);n[d+8>>2]=g;g=$(j&255);n[d+12>>2]=g;k=1;return k|0}else{g=$(e/$(255.0));n[d>>2]=g;g=$($(c&255)/$(255.0));n[d+4>>2]=g;g=$($(i&255)/$(255.0));n[d+8>>2]=g;g=$($(j&255)/$(255.0));n[d+12>>2]=g;k=1;return k|0}}default:{k=0;return k|0}}return 0}function fe(a,c,d){a=a|0;c=c|0;d=d|0;var e=Ka,g=Ka,i=0,j=0,k=0;switch(b[a+24>>0]|0){case 1:{j=f[c>>2]|0;c=a+48|0;i=f[c>>2]|0;c=f[c+4>>2]|0;k=a+40|0;c=(Do(En(f[k>>2]|0,f[k+4>>2]|0,j|0,((j|0)<0)<<31>>31|0)|0,I|0,i|0,c|0)|0)+(f[f[a>>2]>>2]|0)|0;g=$(h[c>>0]|h[c+1>>0]<<8|h[c+2>>0]<<16|h[c+3>>0]<<24|0);e=$(g*$(4.65661287e-10));n[d>>2]=(b[a+32>>0]|0)==0?g:e;n[d+4>>2]=$(0.0);a=1;return a|0}case 2:{j=f[c>>2]|0;c=a+48|0;k=f[c>>2]|0;c=f[c+4>>2]|0;i=a+40|0;c=(Do(En(f[i>>2]|0,f[i+4>>2]|0,j|0,((j|0)<0)<<31>>31|0)|0,I|0,k|0,c|0)|0)+(f[f[a>>2]>>2]|0)|0;k=c;c=c+4|0;c=h[c>>0]|h[c+1>>0]<<8|h[c+2>>0]<<16|h[c+3>>0]<<24;e=$(h[k>>0]|h[k+1>>0]<<8|h[k+2>>0]<<16|h[k+3>>0]<<24|0);if(!(b[a+32>>0]|0)){n[d>>2]=e;g=$(c|0);n[d+4>>2]=g;k=1;return k|0}else{g=$(e*$(4.65661287e-10));n[d>>2]=g;g=$($(c|0)*$(4.65661287e-10));n[d+4>>2]=g;k=1;return k|0}}case 3:{j=f[c>>2]|0;k=a+48|0;c=f[k>>2]|0;k=f[k+4>>2]|0;i=a+40|0;k=(Do(En(f[i>>2]|0,f[i+4>>2]|0,j|0,((j|0)<0)<<31>>31|0)|0,I|0,c|0,k|0)|0)+(f[f[a>>2]>>2]|0)|0;c=k+4|0;c=h[c>>0]|h[c+1>>0]<<8|h[c+2>>0]<<16|h[c+3>>0]<<24;e=$(h[k>>0]|h[k+1>>0]<<8|h[k+2>>0]<<16|h[k+3>>0]<<24|0);if(!(b[a+32>>0]|0)){n[d>>2]=e;g=$(c|0);n[d+4>>2]=g;k=1;return k|0}else{g=$(e*$(4.65661287e-10));n[d>>2]=g;g=$($(c|0)*$(4.65661287e-10));n[d+4>>2]=g;k=1;return k|0}}case 4:{j=f[c>>2]|0;k=a+48|0;c=f[k>>2]|0;k=f[k+4>>2]|0;i=a+40|0;k=(Do(En(f[i>>2]|0,f[i+4>>2]|0,j|0,((j|0)<0)<<31>>31|0)|0,I|0,c|0,k|0)|0)+(f[f[a>>2]>>2]|0)|0;c=k+4|0;c=h[c>>0]|h[c+1>>0]<<8|h[c+2>>0]<<16|h[c+3>>0]<<24;e=$(h[k>>0]|h[k+1>>0]<<8|h[k+2>>0]<<16|h[k+3>>0]<<24|0);if(!(b[a+32>>0]|0)){n[d>>2]=e;g=$(c|0);n[d+4>>2]=g;k=1;return k|0}else{g=$(e*$(4.65661287e-10));n[d>>2]=g;g=$($(c|0)*$(4.65661287e-10));n[d+4>>2]=g;k=1;return k|0}}default:{k=0;return k|0}}return 0}function ge(a,c,d){a=a|0;c=c|0;d=d|0;var e=0,g=Ka,h=Ka,i=0,j=0,k=0,l=0,m=0,o=0,p=0,q=0,r=0,s=0,t=0,v=0,w=0,x=0,y=0;y=u;u=u+16|0;k=y;e=a+4|0;if((f[e>>2]|0)!=-1){x=0;u=y;return x|0}f[e>>2]=d;v=b[c+24>>0]|0;w=v<<24>>24;x=a+20|0;n[x>>2]=$(0.0);f[k>>2]=0;d=k+4|0;f[d>>2]=0;f[k+8>>2]=0;do if(v<<24>>24)if(v<<24>>24<0){zp(k);y=Ha(4)|0;qq(y);sa(y|0,1040,102)}else{t=w<<2;j=Fn(t)|0;f[k>>2]=j;f[k+8>>2]=j+(w<<2);Xj(j|0,0,t|0)|0;j=j+(w<<2)|0;f[d>>2]=j;break}else j=0;while(0);t=a+8|0;d=f[t>>2]|0;i=a+12|0;if(!d)d=a+16|0;else{e=f[i>>2]|0;if((e|0)!=(d|0))f[i>>2]=e+(~((e+-4-d|0)>>>2)<<2);Lq(d);d=a+16|0;f[d>>2]=0;f[i>>2]=0;f[t>>2]=0}f[t>>2]=f[k>>2];f[i>>2]=j;f[d>>2]=f[k+8>>2];s=w>>>0>1073741823?-1:w<<2;r=Iq(s)|0;s=Iq(s)|0;m=c+48|0;o=f[m>>2]|0;p=c+40|0;l=f[p>>2]|0;q=f[c>>2]|0;Mh(s|0,(f[q>>2]|0)+o|0,l|0)|0;Mh(f[t>>2]|0,(f[q>>2]|0)+o|0,l|0)|0;l=f[m>>2]|0;m=f[m+4>>2]|0;o=f[p>>2]|0;p=f[p+4>>2]|0;q=f[c>>2]|0;Mh(r|0,(f[q>>2]|0)+l|0,o|0)|0;k=f[c+80>>2]|0;a:do if((k|0)>1){if(v<<24>>24<=0){d=1;while(1){c=En(o|0,p|0,d|0,((d|0)<0)<<31>>31|0)|0;c=Do(c|0,I|0,l|0,m|0)|0;Mh(s|0,(f[q>>2]|0)+c|0,o|0)|0;d=d+1|0;if((d|0)>=(k|0))break a}}i=f[t>>2]|0;a=1;do{j=En(o|0,p|0,a|0,((a|0)<0)<<31>>31|0)|0;j=Do(j|0,I|0,l|0,m|0)|0;Mh(s|0,(f[q>>2]|0)+j|0,o|0)|0;j=0;do{e=i+(j<<2)|0;h=$(n[e>>2]);d=s+(j<<2)|0;g=$(n[d>>2]);if(h>g){n[e>>2]=g;g=$(n[d>>2])}d=r+(j<<2)|0;if($(n[d>>2])>2]=g;j=j+1|0}while((j|0)!=(w|0));a=a+1|0}while((a|0)<(k|0))}while(0);if(v<<24>>24>0){d=f[t>>2]|0;g=$(n[x>>2]);e=0;do{h=$(n[r+(e<<2)>>2]);h=$(h-$(n[d+(e<<2)>>2]));if(h>g){n[x>>2]=h;g=h}e=e+1|0}while((e|0)!=(w|0))}Jq(s);Jq(r);x=1;u=y;return x|0}function he(a,c){a=a|0;c=c|0;var d=0,e=0,g=0,h=0,i=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0,v=0;e=a+4|0;if(!c){d=f[a>>2]|0;f[a>>2]=0;if(d|0)Lq(d);f[e>>2]=0;return}if(c>>>0>1073741823){a=Ha(4)|0;qq(a);sa(a|0,1040,102)}v=Fn(c<<2)|0;d=f[a>>2]|0;f[a>>2]=v;if(d|0)Lq(d);f[e>>2]=c;d=0;do{f[(f[a>>2]|0)+(d<<2)>>2]=0;d=d+1|0}while((d|0)!=(c|0));e=a+8|0;h=f[e>>2]|0;if(!h)return;d=f[h+4>>2]|0;u=c+-1|0;v=(u&c|0)==0;if(v)g=d&u;else g=(d>>>0)%(c>>>0)|0;f[(f[a>>2]|0)+(g<<2)>>2]=e;d=f[h>>2]|0;if(!d)return;t=a+24|0;i=h;e=d;d=h;a:while(1){s=d;b:while(1){d=e;while(1){e=f[d+4>>2]|0;if(v)r=e&u;else r=(e>>>0)%(c>>>0)|0;if((r|0)==(g|0))break;e=(f[a>>2]|0)+(r<<2)|0;if(!(f[e>>2]|0))break b;e=f[d>>2]|0;c:do if(!e)e=d;else{p=f[d+8>>2]|0;n=f[t>>2]|0;o=f[n+8>>2]|0;n=(f[n+12>>2]|0)-o|0;q=n>>>2;if((n|0)>0)l=d;else while(1){h=f[e>>2]|0;if(!h)break c;else e=h}while(1){m=f[e+8>>2]|0;n=0;do{h=f[o+(n<<2)>>2]|0;j=(b[h+84>>0]|0)==0;if(j)k=f[(f[h+68>>2]|0)+(p<<2)>>2]|0;else k=p;if((q|0)<=(n|0)){d=35;break a}if(j)h=f[(f[h+68>>2]|0)+(m<<2)>>2]|0;else h=m;n=n+1|0;if((k|0)!=(h|0)){e=l;break c}}while((n|0)<(q|0));h=f[e>>2]|0;if(!h)break;else{l=e;e=h}}}while(0);f[s>>2]=f[e>>2];f[e>>2]=f[f[(f[a>>2]|0)+(r<<2)>>2]>>2];f[f[(f[a>>2]|0)+(r<<2)>>2]>>2]=d;d=f[i>>2]|0;if(!d){d=40;break a}}e=f[d>>2]|0;if(!e){d=40;break a}else{i=d;s=d}}f[e>>2]=s;e=f[d>>2]|0;if(!e){d=40;break}else{i=d;g=r}}if((d|0)==35)Fa(17639,17693,72,17731);else if((d|0)==40)return}function ie(a,b){a=a|0;b=b|0;var c=0,d=0,e=0,g=0,h=0,i=0,j=0,k=0,l=0,m=0,n=0,o=0;n=u;u=u+48|0;k=n+44|0;j=n+40|0;m=n+36|0;c=n+32|0;l=n;d=a+64|0;f[c>>2]=f[d>>2];i=b+16|0;h=i;g=f[h+4>>2]|0;if(!((g|0)>0|(g|0)==0&(f[h>>2]|0)>>>0>0)){f[j>>2]=f[b+4>>2];f[k>>2]=f[j>>2];vf(b,k,c,c+4|0)|0}Hn(l);Jl(l);c=f[a+60>>2]|0;g=f[d>>2]|0;e=g>>>5;h=c+(e<<2)|0;g=g&31;d=(e|0)!=0;a:do if(e|g|0){if(!g){e=d;d=1;while(1){if(e){g=0;while(1){e=(f[c>>2]&1<>2]&1<>2]&1<>2]&1<>2]=f[a+16>>2];d=i;c=f[d>>2]|0;d=f[d+4>>2]|0;if(!((d|0)>0|(d|0)==0&c>>>0>0)){f[j>>2]=f[b+4>>2];f[k>>2]=f[j>>2];vf(b,k,m,m+4|0)|0;c=i;d=f[c+4>>2]|0;c=f[c>>2]|0}f[m>>2]=f[a+24>>2];if((d|0)>0|(d|0)==0&c>>>0>0){jk(l);u=n;return 1}f[j>>2]=f[b+4>>2];f[k>>2]=f[j>>2];vf(b,k,m,m+4|0)|0;jk(l);u=n;return 1}function je(a,b){a=a|0;b=b|0;var c=0,d=0,e=0,g=0,h=0,i=0,j=0,k=0,l=0,m=0,n=0,o=0;n=u;u=u+48|0;k=n+44|0;j=n+40|0;m=n+36|0;c=n+32|0;l=n;d=a+80|0;f[c>>2]=f[d>>2];i=b+16|0;h=i;g=f[h+4>>2]|0;if(!((g|0)>0|(g|0)==0&(f[h>>2]|0)>>>0>0)){f[j>>2]=f[b+4>>2];f[k>>2]=f[j>>2];vf(b,k,c,c+4|0)|0}Hn(l);Jl(l);c=f[a+76>>2]|0;g=f[d>>2]|0;e=g>>>5;h=c+(e<<2)|0;g=g&31;d=(e|0)!=0;a:do if(e|g|0){if(!g){e=d;d=1;while(1){if(e){g=0;while(1){e=(f[c>>2]&1<>2]&1<>2]&1<>2]&1<>2]=f[a+12>>2];d=i;c=f[d>>2]|0;d=f[d+4>>2]|0;if(!((d|0)>0|(d|0)==0&c>>>0>0)){f[j>>2]=f[b+4>>2];f[k>>2]=f[j>>2];vf(b,k,m,m+4|0)|0;c=i;d=f[c+4>>2]|0;c=f[c>>2]|0}f[m>>2]=f[a+16>>2];if((d|0)>0|(d|0)==0&c>>>0>0){jk(l);u=n;return 1}f[j>>2]=f[b+4>>2];f[k>>2]=f[j>>2];vf(b,k,m,m+4|0)|0;jk(l);u=n;return 1}function ke(a,c){a=a|0;c=c|0;var e=0,g=0,h=0,i=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0;q=u;u=u+16|0;o=q+4|0;n=q;j=q+12|0;k=q+11|0;l=q+10|0;p=q+8|0;m=c+44|0;e=f[m>>2]|0;g=e+16|0;h=f[g>>2]|0;g=f[g+4>>2]|0;if(!((g|0)>0|(g|0)==0&h>>>0>0)){f[n>>2]=f[e+4>>2];f[o>>2]=f[n>>2];vf(e,o,7832,7837)|0;e=f[m>>2]|0;h=e+16|0;g=f[h+4>>2]|0;h=f[h>>2]|0}b[j>>0]=2;b[k>>0]=0;if(!((g|0)>0|(g|0)==0&h>>>0>0)?(f[n>>2]=f[e+4>>2],f[o>>2]=f[n>>2],vf(e,o,j,j+1|0)|0,i=f[m>>2]|0,j=i+16|0,h=f[j+4>>2]|0,!((h|0)>0|(h|0)==0&(f[j>>2]|0)>>>0>0)):0){f[n>>2]=f[i+4>>2];f[o>>2]=f[n>>2];vf(i,o,k,k+1|0)|0}e=(Ra[f[(f[c>>2]|0)+8>>2]&127](c)|0)&255;b[l>>0]=e;e=f[m>>2]|0;k=e+16|0;j=f[k+4>>2]|0;if(!((j|0)>0|(j|0)==0&(f[k>>2]|0)>>>0>0)){f[n>>2]=f[e+4>>2];f[o>>2]=f[n>>2];vf(e,o,l,l+1|0)|0;e=f[m>>2]|0}l=Ra[f[(f[c>>2]|0)+12>>2]&127](c)|0;b[p>>0]=l;l=e+16|0;k=f[l+4>>2]|0;if(!((k|0)>0|(k|0)==0&(f[l>>2]|0)>>>0>0)){f[n>>2]=f[e+4>>2];f[o>>2]=f[n>>2];vf(e,o,p,p+1|0)|0}d[p>>1]=(f[(f[c+4>>2]|0)+4>>2]|0)==0?0:-32768;e=f[m>>2]|0;c=e+16|0;m=f[c+4>>2]|0;if((m|0)>0|(m|0)==0&(f[c>>2]|0)>>>0>0){f[a>>2]=0;f[a+4>>2]=0;f[a+8>>2]=0;f[a+12>>2]=0;u=q;return}f[n>>2]=f[e+4>>2];f[o>>2]=f[n>>2];vf(e,o,p,p+2|0)|0;f[a>>2]=0;f[a+4>>2]=0;f[a+8>>2]=0;f[a+12>>2]=0;u=q;return}function le(a,c,d){a=a|0;c=c|0;d=d|0;var e=Ka,g=0,i=Ka,j=0,k=0;switch(b[a+24>>0]|0){case 1:{j=f[c>>2]|0;g=a+48|0;c=f[g>>2]|0;g=f[g+4>>2]|0;k=a+40|0;g=Do(En(f[k>>2]|0,f[k+4>>2]|0,j|0,((j|0)<0)<<31>>31|0)|0,I|0,c|0,g|0)|0;i=$(b[(f[f[a>>2]>>2]|0)+g>>0]|0);e=$(i/$(127.0));n[d>>2]=(b[a+32>>0]|0)==0?i:e;d=d+4|0;f[d>>2]=0;f[d+4>>2]=0;d=1;return d|0}case 2:{j=f[c>>2]|0;k=a+48|0;c=f[k>>2]|0;k=f[k+4>>2]|0;g=a+40|0;k=(Do(En(f[g>>2]|0,f[g+4>>2]|0,j|0,((j|0)<0)<<31>>31|0)|0,I|0,c|0,k|0)|0)+(f[f[a>>2]>>2]|0)|0;k=h[k>>0]|h[k+1>>0]<<8;c=(k&65535)>>>8&255;e=$((k&255)<<24>>24);if(!(b[a+32>>0]|0)){n[d>>2]=e;e=$(c<<24>>24)}else{e=$(e/$(127.0));n[d>>2]=e;e=$($(c<<24>>24)/$(127.0))}n[d+4>>2]=e;n[d+8>>2]=$(0.0);k=1;return k|0}case 3:{g=f[c>>2]|0;k=a+48|0;c=f[k>>2]|0;k=f[k+4>>2]|0;j=a+40|0;k=(Do(En(f[j>>2]|0,f[j+4>>2]|0,g|0,((g|0)<0)<<31>>31|0)|0,I|0,c|0,k|0)|0)+(f[f[a>>2]>>2]|0)|0;c=b[k+1>>0]|0;g=b[k+2>>0]|0;e=$(b[k>>0]|0);if(!(b[a+32>>0]|0)){n[d>>2]=e;i=$(c<<24>>24);n[d+4>>2]=i;i=$(g<<24>>24);n[d+8>>2]=i;k=1;return k|0}else{i=$(e/$(127.0));n[d>>2]=i;i=$($(c<<24>>24)/$(127.0));n[d+4>>2]=i;i=$($(g<<24>>24)/$(127.0));n[d+8>>2]=i;k=1;return k|0}}case 4:{g=f[c>>2]|0;k=a+48|0;c=f[k>>2]|0;k=f[k+4>>2]|0;j=a+40|0;k=(Do(En(f[j>>2]|0,f[j+4>>2]|0,g|0,((g|0)<0)<<31>>31|0)|0,I|0,c|0,k|0)|0)+(f[f[a>>2]>>2]|0)|0;k=h[k>>0]|h[k+1>>0]<<8|h[k+2>>0]<<16|h[k+3>>0]<<24;c=k>>>8&255;g=k>>>16&255;e=$((k&255)<<24>>24);if(!(b[a+32>>0]|0)){n[d>>2]=e;i=$(c<<24>>24);n[d+4>>2]=i;i=$(g<<24>>24);n[d+8>>2]=i;k=1;return k|0}else{i=$(e/$(127.0));n[d>>2]=i;i=$($(c<<24>>24)/$(127.0));n[d+4>>2]=i;i=$($(g<<24>>24)/$(127.0));n[d+8>>2]=i;k=1;return k|0}}default:{k=0;return k|0}}return 0}function me(a,c,d){a=a|0;c=c|0;d=d|0;var e=Ka,g=Ka,i=0,j=0,k=0;switch(b[a+24>>0]|0){case 1:{j=f[c>>2]|0;c=a+48|0;i=f[c>>2]|0;c=f[c+4>>2]|0;k=a+40|0;c=(Do(En(f[k>>2]|0,f[k+4>>2]|0,j|0,((j|0)<0)<<31>>31|0)|0,I|0,i|0,c|0)|0)+(f[f[a>>2]>>2]|0)|0;g=$((h[c>>0]|h[c+1>>0]<<8)<<16>>16);e=$(g/$(32767.0));n[d>>2]=(b[a+32>>0]|0)==0?g:e;n[d+4>>2]=$(0.0);d=1;return d|0}case 2:{j=f[c>>2]|0;k=a+48|0;c=f[k>>2]|0;k=f[k+4>>2]|0;i=a+40|0;k=(Do(En(f[i>>2]|0,f[i+4>>2]|0,j|0,((j|0)<0)<<31>>31|0)|0,I|0,c|0,k|0)|0)+(f[f[a>>2]>>2]|0)|0;k=h[k>>0]|h[k+1>>0]<<8|h[k+2>>0]<<16|h[k+3>>0]<<24;c=k>>>16&65535;e=$((k&65535)<<16>>16);if(!(b[a+32>>0]|0)){n[d>>2]=e;g=$(c<<16>>16);n[d+4>>2]=g;k=1;return k|0}else{g=$(e/$(32767.0));n[d>>2]=g;g=$($(c<<16>>16)/$(32767.0));n[d+4>>2]=g;k=1;return k|0}}case 3:{j=f[c>>2]|0;k=a+48|0;c=f[k>>2]|0;k=f[k+4>>2]|0;i=a+40|0;k=(Do(En(f[i>>2]|0,f[i+4>>2]|0,j|0,((j|0)<0)<<31>>31|0)|0,I|0,c|0,k|0)|0)+(f[f[a>>2]>>2]|0)|0;c=k+2|0;c=h[c>>0]|h[c+1>>0]<<8;e=$((h[k>>0]|h[k+1>>0]<<8)<<16>>16);if(!(b[a+32>>0]|0)){n[d>>2]=e;g=$(c<<16>>16);n[d+4>>2]=g;k=1;return k|0}else{g=$(e/$(32767.0));n[d>>2]=g;g=$($(c<<16>>16)/$(32767.0));n[d+4>>2]=g;k=1;return k|0}}case 4:{k=f[c>>2]|0;c=a+48|0;j=f[c>>2]|0;c=f[c+4>>2]|0;i=a+40|0;c=(Do(En(f[i>>2]|0,f[i+4>>2]|0,k|0,((k|0)<0)<<31>>31|0)|0,I|0,j|0,c|0)|0)+(f[f[a>>2]>>2]|0)|0;j=c;j=h[j>>0]|h[j+1>>0]<<8|h[j+2>>0]<<16|h[j+3>>0]<<24;c=c+4|0;k=(b[a+32>>0]|0)==0;c=(co(j|0,h[c>>0]|h[c+1>>0]<<8|h[c+2>>0]<<16|h[c+3>>0]<<24|0,16)|0)&65535;e=$((j&65535)<<16>>16);if(k){n[d>>2]=e;g=$(c<<16>>16);n[d+4>>2]=g;k=1;return k|0}else{g=$(e/$(32767.0));n[d>>2]=g;g=$($(c<<16>>16)/$(32767.0));n[d+4>>2]=g;k=1;return k|0}}default:{k=0;return k|0}}return 0}function ne(a,c,d){a=a|0;c=c|0;d=d|0;var e=Ka,g=0,i=Ka,j=0,k=0;switch(b[a+24>>0]|0){case 1:{j=f[c>>2]|0;g=a+48|0;c=f[g>>2]|0;g=f[g+4>>2]|0;k=a+40|0;g=Do(En(f[k>>2]|0,f[k+4>>2]|0,j|0,((j|0)<0)<<31>>31|0)|0,I|0,c|0,g|0)|0;i=$(h[(f[f[a>>2]>>2]|0)+g>>0]|0);e=$(i/$(255.0));n[d>>2]=(b[a+32>>0]|0)==0?i:e;d=d+4|0;f[d>>2]=0;f[d+4>>2]=0;d=1;return d|0}case 2:{j=f[c>>2]|0;k=a+48|0;c=f[k>>2]|0;k=f[k+4>>2]|0;g=a+40|0;k=(Do(En(f[g>>2]|0,f[g+4>>2]|0,j|0,((j|0)<0)<<31>>31|0)|0,I|0,c|0,k|0)|0)+(f[f[a>>2]>>2]|0)|0;k=h[k>>0]|h[k+1>>0]<<8;c=(k&65535)>>>8&255;e=$(k&255);if(!(b[a+32>>0]|0)){n[d>>2]=e;e=$(c&255)}else{e=$(e/$(255.0));n[d>>2]=e;e=$($(c&255)/$(255.0))}n[d+4>>2]=e;n[d+8>>2]=$(0.0);k=1;return k|0}case 3:{g=f[c>>2]|0;k=a+48|0;c=f[k>>2]|0;k=f[k+4>>2]|0;j=a+40|0;k=(Do(En(f[j>>2]|0,f[j+4>>2]|0,g|0,((g|0)<0)<<31>>31|0)|0,I|0,c|0,k|0)|0)+(f[f[a>>2]>>2]|0)|0;c=b[k+1>>0]|0;g=b[k+2>>0]|0;e=$(h[k>>0]|0);if(!(b[a+32>>0]|0)){n[d>>2]=e;i=$(c&255);n[d+4>>2]=i;i=$(g&255);n[d+8>>2]=i;k=1;return k|0}else{i=$(e/$(255.0));n[d>>2]=i;i=$($(c&255)/$(255.0));n[d+4>>2]=i;i=$($(g&255)/$(255.0));n[d+8>>2]=i;k=1;return k|0}}case 4:{g=f[c>>2]|0;k=a+48|0;c=f[k>>2]|0;k=f[k+4>>2]|0;j=a+40|0;k=(Do(En(f[j>>2]|0,f[j+4>>2]|0,g|0,((g|0)<0)<<31>>31|0)|0,I|0,c|0,k|0)|0)+(f[f[a>>2]>>2]|0)|0;k=h[k>>0]|h[k+1>>0]<<8|h[k+2>>0]<<16|h[k+3>>0]<<24;c=k>>>8&255;g=k>>>16&255;e=$(k&255);if(!(b[a+32>>0]|0)){n[d>>2]=e;i=$(c&255);n[d+4>>2]=i;i=$(g&255);n[d+8>>2]=i;k=1;return k|0}else{i=$(e/$(255.0));n[d>>2]=i;i=$($(c&255)/$(255.0));n[d+4>>2]=i;i=$($(g&255)/$(255.0));n[d+8>>2]=i;k=1;return k|0}}default:{k=0;return k|0}}return 0}function oe(a,c,d){a=a|0;c=c|0;d=d|0;var e=Ka,g=Ka,i=0,j=0,k=0;switch(b[a+24>>0]|0){case 1:{j=f[c>>2]|0;c=a+48|0;i=f[c>>2]|0;c=f[c+4>>2]|0;k=a+40|0;c=(Do(En(f[k>>2]|0,f[k+4>>2]|0,j|0,((j|0)<0)<<31>>31|0)|0,I|0,i|0,c|0)|0)+(f[f[a>>2]>>2]|0)|0;g=$((h[c>>0]|h[c+1>>0]<<8)&65535);e=$(g/$(65535.0));n[d>>2]=(b[a+32>>0]|0)==0?g:e;n[d+4>>2]=$(0.0);d=1;return d|0}case 2:{j=f[c>>2]|0;k=a+48|0;c=f[k>>2]|0;k=f[k+4>>2]|0;i=a+40|0;k=(Do(En(f[i>>2]|0,f[i+4>>2]|0,j|0,((j|0)<0)<<31>>31|0)|0,I|0,c|0,k|0)|0)+(f[f[a>>2]>>2]|0)|0;k=h[k>>0]|h[k+1>>0]<<8|h[k+2>>0]<<16|h[k+3>>0]<<24;c=k>>>16&65535;e=$(k&65535);if(!(b[a+32>>0]|0)){n[d>>2]=e;g=$(c&65535);n[d+4>>2]=g;k=1;return k|0}else{g=$(e/$(65535.0));n[d>>2]=g;g=$($(c&65535)/$(65535.0));n[d+4>>2]=g;k=1;return k|0}}case 3:{j=f[c>>2]|0;k=a+48|0;c=f[k>>2]|0;k=f[k+4>>2]|0;i=a+40|0;k=(Do(En(f[i>>2]|0,f[i+4>>2]|0,j|0,((j|0)<0)<<31>>31|0)|0,I|0,c|0,k|0)|0)+(f[f[a>>2]>>2]|0)|0;c=k+2|0;c=h[c>>0]|h[c+1>>0]<<8;e=$((h[k>>0]|h[k+1>>0]<<8)&65535);if(!(b[a+32>>0]|0)){n[d>>2]=e;g=$(c&65535);n[d+4>>2]=g;k=1;return k|0}else{g=$(e/$(65535.0));n[d>>2]=g;g=$($(c&65535)/$(65535.0));n[d+4>>2]=g;k=1;return k|0}}case 4:{k=f[c>>2]|0;c=a+48|0;j=f[c>>2]|0;c=f[c+4>>2]|0;i=a+40|0;c=(Do(En(f[i>>2]|0,f[i+4>>2]|0,k|0,((k|0)<0)<<31>>31|0)|0,I|0,j|0,c|0)|0)+(f[f[a>>2]>>2]|0)|0;j=c;j=h[j>>0]|h[j+1>>0]<<8|h[j+2>>0]<<16|h[j+3>>0]<<24;c=c+4|0;k=(b[a+32>>0]|0)==0;c=(co(j|0,h[c>>0]|h[c+1>>0]<<8|h[c+2>>0]<<16|h[c+3>>0]<<24|0,16)|0)&65535;e=$(j&65535);if(k){n[d>>2]=e;g=$(c&65535);n[d+4>>2]=g;k=1;return k|0}else{g=$(e/$(65535.0));n[d>>2]=g;g=$($(c&65535)/$(65535.0));n[d+4>>2]=g;k=1;return k|0}}default:{k=0;return k|0}}return 0}function pe(a,c,d){a=a|0;c=c|0;d=d|0;var e=0,g=0,i=0;switch(b[a+24>>0]|0){case 1:{g=f[c>>2]|0;c=a+48|0;e=f[c>>2]|0;c=f[c+4>>2]|0;i=a+40|0;c=(Do(En(f[i>>2]|0,f[i+4>>2]|0,g|0,((g|0)<0)<<31>>31|0)|0,I|0,e|0,c|0)|0)+(f[f[a>>2]>>2]|0)|0;c=(h[c>>0]|h[c+1>>0]<<8)<<16>>16;a=d;f[a>>2]=c;f[a+4>>2]=((c|0)<0)<<31>>31;a=d+8|0;f[a>>2]=0;f[a+4>>2]=0;f[a+8>>2]=0;f[a+12>>2]=0;a=1;return a|0}case 2:{i=f[c>>2]|0;g=a+48|0;e=f[g>>2]|0;g=f[g+4>>2]|0;c=a+40|0;g=(Do(En(f[c>>2]|0,f[c+4>>2]|0,i|0,((i|0)<0)<<31>>31|0)|0,I|0,e|0,g|0)|0)+(f[f[a>>2]>>2]|0)|0;g=h[g>>0]|h[g+1>>0]<<8|h[g+2>>0]<<16|h[g+3>>0]<<24;e=(g&65535)<<16>>16;i=d;f[i>>2]=e;f[i+4>>2]=((e|0)<0)<<31>>31;g=(g>>>16&65535)<<16>>16;i=d+8|0;f[i>>2]=g;f[i+4>>2]=((g|0)<0)<<31>>31;i=d+16|0;f[i>>2]=0;f[i+4>>2]=0;i=1;return i|0}case 3:{i=f[c>>2]|0;e=a+48|0;g=f[e>>2]|0;e=f[e+4>>2]|0;c=a+40|0;a=(Do(En(f[c>>2]|0,f[c+4>>2]|0,i|0,((i|0)<0)<<31>>31|0)|0,I|0,g|0,e|0)|0)+(f[f[a>>2]>>2]|0)|0;e=a+2|0;e=h[e>>0]|h[e+1>>0]<<8;g=a+4|0;g=h[g>>0]|h[g+1>>0]<<8;a=(h[a>>0]|h[a+1>>0]<<8)<<16>>16;i=d;f[i>>2]=a;f[i+4>>2]=((a|0)<0)<<31>>31;e=e<<16>>16;i=d+8|0;f[i>>2]=e;f[i+4>>2]=((e|0)<0)<<31>>31;g=g<<16>>16;i=d+16|0;f[i>>2]=g;f[i+4>>2]=((g|0)<0)<<31>>31;i=1;return i|0}case 4:{e=f[c>>2]|0;g=a+48|0;i=f[g>>2]|0;g=f[g+4>>2]|0;c=a+40|0;g=(Do(En(f[c>>2]|0,f[c+4>>2]|0,e|0,((e|0)<0)<<31>>31|0)|0,I|0,i|0,g|0)|0)+(f[f[a>>2]>>2]|0)|0;i=g;i=h[i>>0]|h[i+1>>0]<<8|h[i+2>>0]<<16|h[i+3>>0]<<24;g=g+4|0;g=h[g>>0]|h[g+1>>0]<<8|h[g+2>>0]<<16|h[g+3>>0]<<24;e=Ln(Zn(i|0,g|0,48)|0,I|0,48)|0;a=d;f[a>>2]=e;f[a+4>>2]=I;a=Ln(0,i|0,48)|0;e=d+8|0;f[e>>2]=a;f[e+4>>2]=I;g=Ln(Zn(i|0,g|0,16)|0,I|0,48)|0;i=d+16|0;f[i>>2]=g;f[i+4>>2]=I;i=1;return i|0}default:{i=0;return i|0}}return 0}function qe(a,b){a=a|0;b=b|0;var c=0,e=0,g=0,h=0,i=0,j=0,k=0,l=0,m=0,n=0;e=a+4|0;if(!b){c=f[a>>2]|0;f[a>>2]=0;if(c|0)Lq(c);f[e>>2]=0;return}if(b>>>0>1073741823){a=Ha(4)|0;qq(a);sa(a|0,1040,102)}n=Fn(b<<2)|0;c=f[a>>2]|0;f[a>>2]=n;if(c|0)Lq(c);f[e>>2]=b;c=0;do{f[(f[a>>2]|0)+(c<<2)>>2]=0;c=c+1|0}while((c|0)!=(b|0));e=a+8|0;h=f[e>>2]|0;if(!h)return;c=f[h+4>>2]|0;m=b+-1|0;n=(m&b|0)==0;if(n)g=c&m;else g=(c>>>0)%(b>>>0)|0;f[(f[a>>2]|0)+(g<<2)>>2]=e;c=f[h>>2]|0;if(!c)return;else{i=h;e=c;c=h}a:while(1){b:do if(n){l=i;j=c;while(1){c=e;while(1){k=f[c+4>>2]&m;if((k|0)==(g|0))break;e=(f[a>>2]|0)+(k<<2)|0;if(!(f[e>>2]|0)){h=j;g=k;break b}i=c+8|0;h=c;while(1){e=f[h>>2]|0;if(!e)break;if((d[i>>1]|0)==(d[e+8>>1]|0))h=e;else break}f[j>>2]=e;f[h>>2]=f[f[(f[a>>2]|0)+(k<<2)>>2]>>2];f[f[(f[a>>2]|0)+(k<<2)>>2]>>2]=c;c=f[l>>2]|0;if(!c){c=34;break a}}e=f[c>>2]|0;if(!e){c=34;break a}else{l=c;j=c}}}else{l=i;j=c;while(1){c=e;while(1){k=((f[c+4>>2]|0)>>>0)%(b>>>0)|0;if((k|0)==(g|0))break;e=(f[a>>2]|0)+(k<<2)|0;if(!(f[e>>2]|0)){h=j;g=k;break b}i=c+8|0;h=c;while(1){e=f[h>>2]|0;if(!e)break;if((d[i>>1]|0)==(d[e+8>>1]|0))h=e;else break}f[j>>2]=e;f[h>>2]=f[f[(f[a>>2]|0)+(k<<2)>>2]>>2];f[f[(f[a>>2]|0)+(k<<2)>>2]>>2]=c;c=f[l>>2]|0;if(!c){c=34;break a}}e=f[c>>2]|0;if(!e){c=34;break a}else{l=c;j=c}}}while(0);f[e>>2]=h;e=f[c>>2]|0;if(!e){c=34;break}else i=c}if((c|0)==34)return}function re(a,c){a=a|0;c=c|0;var d=0,e=0,g=0,h=0,i=0,j=0,k=0,l=0,m=0,n=0;e=a+4|0;if(!c){d=f[a>>2]|0;f[a>>2]=0;if(d|0)Lq(d);f[e>>2]=0;return}if(c>>>0>1073741823){a=Ha(4)|0;qq(a);sa(a|0,1040,102)}n=Fn(c<<2)|0;d=f[a>>2]|0;f[a>>2]=n;if(d|0)Lq(d);f[e>>2]=c;d=0;do{f[(f[a>>2]|0)+(d<<2)>>2]=0;d=d+1|0}while((d|0)!=(c|0));e=a+8|0;h=f[e>>2]|0;if(!h)return;d=f[h+4>>2]|0;m=c+-1|0;n=(m&c|0)==0;if(n)g=d&m;else g=(d>>>0)%(c>>>0)|0;f[(f[a>>2]|0)+(g<<2)>>2]=e;d=f[h>>2]|0;if(!d)return;else{i=h;e=d;d=h}a:while(1){b:do if(n){l=i;j=d;while(1){d=e;while(1){k=f[d+4>>2]&m;if((k|0)==(g|0))break;e=(f[a>>2]|0)+(k<<2)|0;if(!(f[e>>2]|0)){h=j;g=k;break b}i=d+8|0;h=d;while(1){e=f[h>>2]|0;if(!e)break;if((b[i>>0]|0)==(b[e+8>>0]|0))h=e;else break}f[j>>2]=e;f[h>>2]=f[f[(f[a>>2]|0)+(k<<2)>>2]>>2];f[f[(f[a>>2]|0)+(k<<2)>>2]>>2]=d;d=f[l>>2]|0;if(!d){d=34;break a}}e=f[d>>2]|0;if(!e){d=34;break a}else{l=d;j=d}}}else{l=i;j=d;while(1){d=e;while(1){k=((f[d+4>>2]|0)>>>0)%(c>>>0)|0;if((k|0)==(g|0))break;e=(f[a>>2]|0)+(k<<2)|0;if(!(f[e>>2]|0)){h=j;g=k;break b}i=d+8|0;h=d;while(1){e=f[h>>2]|0;if(!e)break;if((b[i>>0]|0)==(b[e+8>>0]|0))h=e;else break}f[j>>2]=e;f[h>>2]=f[f[(f[a>>2]|0)+(k<<2)>>2]>>2];f[f[(f[a>>2]|0)+(k<<2)>>2]>>2]=d;d=f[l>>2]|0;if(!d){d=34;break a}}e=f[d>>2]|0;if(!e){d=34;break a}else{l=d;j=d}}}while(0);f[e>>2]=h;e=f[d>>2]|0;if(!e){d=34;break}else i=d}if((d|0)==34)return}function se(a,c,d){a=a|0;c=c|0;d=d|0;var e=0,g=0,i=0;switch(b[a+24>>0]|0){case 1:{g=f[c>>2]|0;c=a+48|0;e=f[c>>2]|0;c=f[c+4>>2]|0;i=a+40|0;c=Do(En(f[i>>2]|0,f[i+4>>2]|0,g|0,((g|0)<0)<<31>>31|0)|0,I|0,e|0,c|0)|0;c=b[(f[f[a>>2]>>2]|0)+c>>0]|0;a=d;f[a>>2]=c;f[a+4>>2]=((c|0)<0)<<31>>31;a=d+8|0;f[a>>2]=0;f[a+4>>2]=0;f[a+8>>2]=0;f[a+12>>2]=0;f[a+16>>2]=0;f[a+20>>2]=0;a=1;return a|0}case 2:{i=f[c>>2]|0;g=a+48|0;e=f[g>>2]|0;g=f[g+4>>2]|0;c=a+40|0;g=(Do(En(f[c>>2]|0,f[c+4>>2]|0,i|0,((i|0)<0)<<31>>31|0)|0,I|0,e|0,g|0)|0)+(f[f[a>>2]>>2]|0)|0;g=h[g>>0]|h[g+1>>0]<<8;e=(g&255)<<24>>24;i=d;f[i>>2]=e;f[i+4>>2]=((e|0)<0)<<31>>31;g=((g&65535)>>>8&255)<<24>>24;i=d+8|0;f[i>>2]=g;f[i+4>>2]=((g|0)<0)<<31>>31;i=d+16|0;f[i>>2]=0;f[i+4>>2]=0;f[i+8>>2]=0;f[i+12>>2]=0;i=1;return i|0}case 3:{i=f[c>>2]|0;e=a+48|0;g=f[e>>2]|0;e=f[e+4>>2]|0;c=a+40|0;a=(Do(En(f[c>>2]|0,f[c+4>>2]|0,i|0,((i|0)<0)<<31>>31|0)|0,I|0,g|0,e|0)|0)+(f[f[a>>2]>>2]|0)|0;e=b[a+1>>0]|0;g=b[a+2>>0]|0;a=b[a>>0]|0;i=d;f[i>>2]=a;f[i+4>>2]=((a|0)<0)<<31>>31;e=e<<24>>24;i=d+8|0;f[i>>2]=e;f[i+4>>2]=((e|0)<0)<<31>>31;g=g<<24>>24;i=d+16|0;f[i>>2]=g;f[i+4>>2]=((g|0)<0)<<31>>31;i=d+24|0;f[i>>2]=0;f[i+4>>2]=0;i=1;return i|0}case 4:{i=f[c>>2]|0;g=a+48|0;e=f[g>>2]|0;g=f[g+4>>2]|0;c=a+40|0;g=(Do(En(f[c>>2]|0,f[c+4>>2]|0,i|0,((i|0)<0)<<31>>31|0)|0,I|0,e|0,g|0)|0)+(f[f[a>>2]>>2]|0)|0;g=h[g>>0]|h[g+1>>0]<<8|h[g+2>>0]<<16|h[g+3>>0]<<24;e=(g&255)<<24>>24;i=d;f[i>>2]=e;f[i+4>>2]=((e|0)<0)<<31>>31;i=(g>>>8&255)<<24>>24;e=d+8|0;f[e>>2]=i;f[e+4>>2]=((i|0)<0)<<31>>31;e=(g>>>16&255)<<24>>24;i=d+16|0;f[i>>2]=e;f[i+4>>2]=((e|0)<0)<<31>>31;g=(g>>>24&255)<<24>>24;i=d+24|0;f[i>>2]=g;f[i+4>>2]=((g|0)<0)<<31>>31;i=1;return i|0}default:{i=0;return i|0}}return 0}function te(a,c,d){a=a|0;c=c|0;d=d|0;var e=0,g=0,i=0,j=Ka,k=Ka;switch(b[a+24>>0]|0){case 1:{g=f[c>>2]|0;c=a+48|0;e=f[c>>2]|0;c=f[c+4>>2]|0;i=a+40|0;c=(Do(En(f[i>>2]|0,f[i+4>>2]|0,g|0,((g|0)<0)<<31>>31|0)|0,I|0,e|0,c|0)|0)+(f[f[a>>2]>>2]|0)|0;b[s>>0]=b[c>>0];b[s+1>>0]=b[c+1>>0];b[s+2>>0]=b[c+2>>0];b[s+3>>0]=b[c+3>>0];c=~~$(n[s>>2]);f[d>>2]=c;c=0;break}case 2:{g=f[c>>2]|0;c=a+48|0;i=f[c>>2]|0;c=f[c+4>>2]|0;e=a+40|0;c=(Do(En(f[e>>2]|0,f[e+4>>2]|0,g|0,((g|0)<0)<<31>>31|0)|0,I|0,i|0,c|0)|0)+(f[f[a>>2]>>2]|0)|0;i=c;c=c+4|0;c=h[c>>0]|h[c+1>>0]<<8|h[c+2>>0]<<16|h[c+3>>0]<<24;i=~~(f[s>>2]=h[i>>0]|h[i+1>>0]<<8|h[i+2>>0]<<16|h[i+3>>0]<<24,$(n[s>>2]));f[d>>2]=i;c=~~(f[s>>2]=c,$(n[s>>2]));break}case 3:{g=f[c>>2]|0;c=a+48|0;i=f[c>>2]|0;c=f[c+4>>2]|0;e=a+40|0;c=(Do(En(f[e>>2]|0,f[e+4>>2]|0,g|0,((g|0)<0)<<31>>31|0)|0,I|0,i|0,c|0)|0)+(f[f[a>>2]>>2]|0)|0;b[s>>0]=b[c>>0];b[s+1>>0]=b[c+1>>0];b[s+2>>0]=b[c+2>>0];b[s+3>>0]=b[c+3>>0];k=$(n[s>>2]);c=c+4|0;b[s>>0]=b[c>>0];b[s+1>>0]=b[c+1>>0];b[s+2>>0]=b[c+2>>0];b[s+3>>0]=b[c+3>>0];j=$(n[s>>2]);f[d>>2]=~~k;c=~~j;break}case 4:{g=f[c>>2]|0;c=a+48|0;i=f[c>>2]|0;c=f[c+4>>2]|0;e=a+40|0;c=(Do(En(f[e>>2]|0,f[e+4>>2]|0,g|0,((g|0)<0)<<31>>31|0)|0,I|0,i|0,c|0)|0)+(f[f[a>>2]>>2]|0)|0;b[s>>0]=b[c>>0];b[s+1>>0]=b[c+1>>0];b[s+2>>0]=b[c+2>>0];b[s+3>>0]=b[c+3>>0];j=$(n[s>>2]);c=c+4|0;b[s>>0]=b[c>>0];b[s+1>>0]=b[c+1>>0];b[s+2>>0]=b[c+2>>0];b[s+3>>0]=b[c+3>>0];k=$(n[s>>2]);f[d>>2]=~~j;c=~~k;break}default:{i=0;return i|0}}f[d+4>>2]=c;i=1;return i|0}function ue(a,b,c,d,e,g){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;g=g|0;var h=0,i=0,j=0,k=0,l=0,m=0,n=0,o=0;m=f[c>>2]|0;l=f[b>>2]|0;b=m-l|0;o=(b|0)/12|0;if(!b)Fa(16090,15863,232,16119);n=a+8|0;h=f[n>>2]|0;if((b|0)<768){if(h>>>0<=1){a=0;return a|0}c=f[e>>2]|0;g=1;b=0;do{b=(f[c+(b<<2)>>2]|0)>>>0>(f[c+(g<<2)>>2]|0)>>>0?g:b;g=g+1|0}while(g>>>0>>0);return b|0}if(h){j=f[e>>2]|0;k=f[a+1140>>2]|0;h=f[d>>2]|0;i=f[a+1128>>2]|0;if((l|0)==(m|0)){c=0;do{f[k+(c<<2)>>2]=(f[a>>2]|0)-(f[j+(c<<2)>>2]|0);b=i+(c<<2)|0;l=f[b>>2]|0;m=o-l|0;f[b>>2]=m>>>0>>0?l:m;c=c+1|0;b=f[n>>2]|0}while(c>>>0>>0)}else{d=0;do{g=(f[a>>2]|0)-(f[j+(d<<2)>>2]|0)|0;f[k+(d<<2)>>2]=g;g=(1<>2]|0)|0;e=i+(d<<2)|0;b=l;c=f[e>>2]|0;do{c=c+((f[b+(d<<2)>>2]|0)>>>0>>0&1)|0;f[e>>2]=c;b=b+12|0}while((b|0)!=(m|0));b=o-c|0;f[e>>2]=b>>>0>>0?c:b;d=d+1|0;b=f[n>>2]|0}while(d>>>0>>0)}if(b){e=f[a+1140>>2]|0;h=a+1128|0;c=0;d=0;g=0;do{if(f[e+(d<<2)>>2]|0){o=f[(f[h>>2]|0)+(d<<2)>>2]|0;n=g>>>0>>0;c=n?d:c;g=n?o:g}d=d+1|0}while(d>>>0>>0);i=c}else i=0}else i=0;d=a+1088|0;j=a+1104|0;b=f[j>>2]|0;g=32-b|0;h=a+1100|0;c=f[h>>2]|0;if((g|0)<4){e=i&15;g=4-g|0;f[j>>2]=g;g=e>>>g|c;f[h>>2]=g;c=a+1092|0;b=f[c>>2]|0;if((b|0)==(f[a+1096>>2]|0))Bj(d,h);else{f[b>>2]=g;f[c>>2]=b+4}f[h>>2]=e<<32-(f[j>>2]|0);a=i;return a|0}g=c|i<<28>>>b;f[h>>2]=g;o=b+4|0;f[j>>2]=o;if((o|0)!=32){a=i;return a|0}c=a+1092|0;b=f[c>>2]|0;if((b|0)==(f[a+1096>>2]|0))Bj(d,h);else{f[b>>2]=g;f[c>>2]=b+4}f[h>>2]=0;f[j>>2]=0;a=i;return a|0}function ve(a,c,d){a=a|0;c=c|0;d=d|0;var e=0,g=0,i=0;switch(b[a+24>>0]|0){case 1:{g=f[c>>2]|0;c=a+48|0;e=f[c>>2]|0;c=f[c+4>>2]|0;i=a+40|0;c=(Do(En(f[i>>2]|0,f[i+4>>2]|0,g|0,((g|0)<0)<<31>>31|0)|0,I|0,e|0,c|0)|0)+(f[f[a>>2]>>2]|0)|0;a=d;f[a>>2]=h[c>>0]|h[c+1>>0]<<8|h[c+2>>0]<<16|h[c+3>>0]<<24;f[a+4>>2]=0;a=d+8|0;f[a>>2]=0;f[a+4>>2]=0;f[a+8>>2]=0;f[a+12>>2]=0;a=1;return a|0}case 2:{i=f[c>>2]|0;g=a+48|0;e=f[g>>2]|0;g=f[g+4>>2]|0;c=a+40|0;g=(Do(En(f[c>>2]|0,f[c+4>>2]|0,i|0,((i|0)<0)<<31>>31|0)|0,I|0,e|0,g|0)|0)+(f[f[a>>2]>>2]|0)|0;e=g;g=g+4|0;g=h[g>>0]|h[g+1>>0]<<8|h[g+2>>0]<<16|h[g+3>>0]<<24;i=d;f[i>>2]=h[e>>0]|h[e+1>>0]<<8|h[e+2>>0]<<16|h[e+3>>0]<<24;f[i+4>>2]=0;i=d+8|0;f[i>>2]=g;f[i+4>>2]=0;i=d+16|0;f[i>>2]=0;f[i+4>>2]=0;i=1;return i|0}case 3:{i=f[c>>2]|0;e=a+48|0;g=f[e>>2]|0;e=f[e+4>>2]|0;c=a+40|0;a=(Do(En(f[c>>2]|0,f[c+4>>2]|0,i|0,((i|0)<0)<<31>>31|0)|0,I|0,g|0,e|0)|0)+(f[f[a>>2]>>2]|0)|0;e=a+4|0;e=h[e>>0]|h[e+1>>0]<<8|h[e+2>>0]<<16|h[e+3>>0]<<24;g=a+8|0;g=h[g>>0]|h[g+1>>0]<<8|h[g+2>>0]<<16|h[g+3>>0]<<24;i=d;f[i>>2]=h[a>>0]|h[a+1>>0]<<8|h[a+2>>0]<<16|h[a+3>>0]<<24;f[i+4>>2]=0;i=d+8|0;f[i>>2]=e;f[i+4>>2]=0;i=d+16|0;f[i>>2]=g;f[i+4>>2]=0;i=1;return i|0}case 4:{i=f[c>>2]|0;e=a+48|0;g=f[e>>2]|0;e=f[e+4>>2]|0;c=a+40|0;a=(Do(En(f[c>>2]|0,f[c+4>>2]|0,i|0,((i|0)<0)<<31>>31|0)|0,I|0,g|0,e|0)|0)+(f[f[a>>2]>>2]|0)|0;e=a+4|0;e=h[e>>0]|h[e+1>>0]<<8|h[e+2>>0]<<16|h[e+3>>0]<<24;g=a+8|0;g=h[g>>0]|h[g+1>>0]<<8|h[g+2>>0]<<16|h[g+3>>0]<<24;i=d;f[i>>2]=h[a>>0]|h[a+1>>0]<<8|h[a+2>>0]<<16|h[a+3>>0]<<24;f[i+4>>2]=0;i=d+8|0;f[i>>2]=e;f[i+4>>2]=0;i=d+16|0;f[i>>2]=g;f[i+4>>2]=0;i=1;return i|0}default:{i=0;return i|0}}return 0}function we(a,c,d){a=a|0;c=c|0;d=d|0;var e=0,g=0,i=0;switch(b[a+24>>0]|0){case 1:{g=f[c>>2]|0;c=a+48|0;e=f[c>>2]|0;c=f[c+4>>2]|0;i=a+40|0;c=(Do(En(f[i>>2]|0,f[i+4>>2]|0,g|0,((g|0)<0)<<31>>31|0)|0,I|0,e|0,c|0)|0)+(f[f[a>>2]>>2]|0)|0;a=d;f[a>>2]=(h[c>>0]|h[c+1>>0]<<8)&65535;f[a+4>>2]=0;a=d+8|0;f[a>>2]=0;f[a+4>>2]=0;f[a+8>>2]=0;f[a+12>>2]=0;f[a+16>>2]=0;f[a+20>>2]=0;a=1;return a|0}case 2:{e=f[c>>2]|0;g=a+48|0;i=f[g>>2]|0;g=f[g+4>>2]|0;c=a+40|0;g=(Do(En(f[c>>2]|0,f[c+4>>2]|0,e|0,((e|0)<0)<<31>>31|0)|0,I|0,i|0,g|0)|0)+(f[f[a>>2]>>2]|0)|0;g=h[g>>0]|h[g+1>>0]<<8|h[g+2>>0]<<16|h[g+3>>0]<<24;i=d;f[i>>2]=g&65535;f[i+4>>2]=0;i=d+8|0;f[i>>2]=g>>>16;f[i+4>>2]=0;i=d+16|0;f[i>>2]=0;f[i+4>>2]=0;f[i+8>>2]=0;f[i+12>>2]=0;i=1;return i|0}case 3:{i=f[c>>2]|0;e=a+48|0;g=f[e>>2]|0;e=f[e+4>>2]|0;c=a+40|0;a=(Do(En(f[c>>2]|0,f[c+4>>2]|0,i|0,((i|0)<0)<<31>>31|0)|0,I|0,g|0,e|0)|0)+(f[f[a>>2]>>2]|0)|0;e=a+2|0;e=h[e>>0]|h[e+1>>0]<<8;g=a+4|0;g=h[g>>0]|h[g+1>>0]<<8;i=d;f[i>>2]=(h[a>>0]|h[a+1>>0]<<8)&65535;f[i+4>>2]=0;i=d+8|0;f[i>>2]=e&65535;f[i+4>>2]=0;i=d+16|0;f[i>>2]=g&65535;f[i+4>>2]=0;i=d+24|0;f[i>>2]=0;f[i+4>>2]=0;i=1;return i|0}case 4:{e=f[c>>2]|0;g=a+48|0;i=f[g>>2]|0;g=f[g+4>>2]|0;c=a+40|0;g=(Do(En(f[c>>2]|0,f[c+4>>2]|0,e|0,((e|0)<0)<<31>>31|0)|0,I|0,i|0,g|0)|0)+(f[f[a>>2]>>2]|0)|0;i=g;i=h[i>>0]|h[i+1>>0]<<8|h[i+2>>0]<<16|h[i+3>>0]<<24;g=g+4|0;g=h[g>>0]|h[g+1>>0]<<8|h[g+2>>0]<<16|h[g+3>>0]<<24;a=d;f[a>>2]=i&65535;f[a+4>>2]=0;a=co(i|0,g|0,16)|0;e=d+8|0;f[e>>2]=a&65535;f[e+4>>2]=0;e=d+16|0;f[e>>2]=g&65535;f[e+4>>2]=0;g=co(i|0,g|0,48)|0;i=d+24|0;f[i>>2]=g;f[i+4>>2]=I;i=1;return i|0}default:{i=0;return i|0}}return 0}function xe(a,b,c,d){a=a|0;b=b|0;c=c|0;d=d|0;var e=0,g=0,h=0,i=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0;i=f[a>>2]|0;h=i;b=i+((f[b>>2]|0)-h>>2<<2)|0;k=f[c>>2]|0;e=f[d>>2]|0;p=e-k|0;l=p>>2;c=k;o=e;if((p|0)<=0){p=b;return p|0}n=a+8|0;d=f[n>>2]|0;p=a+4|0;m=f[p>>2]|0;g=m;if((l|0)<=(d-g>>2|0)){j=b;i=g-j|0;d=i>>2;if((l|0)>(d|0)){d=c+(d<<2)|0;e=d;if((d|0)==(o|0))d=m;else{h=o+-4-e|0;g=m;while(1){f[g>>2]=f[d>>2];d=d+4|0;if((d|0)==(o|0))break;else g=g+4|0}d=m+((h>>>2)+1<<2)|0;f[p>>2]=d}if((i|0)<=0){p=b;return p|0}}else d=m;k=d-(b+(l<<2))>>2;g=b+(k<<2)|0;if(g>>>0>>0){h=(m+(0-k<<2)+~j|0)>>>2;i=d;j=g;while(1){f[i>>2]=f[j>>2];j=j+4|0;if(j>>>0>=m>>>0)break;else i=i+4|0}f[p>>2]=d+(h+1<<2)}if(k|0)do{g=g+-4|0;d=d+-4|0;f[d>>2]=f[g>>2]}while((g|0)!=(b|0));if((c|0)==(e|0)){p=b;return p|0}else d=b;while(1){f[d>>2]=f[c>>2];c=c+4|0;if((c|0)==(e|0))break;else d=d+4|0}return b|0}e=(g-h>>2)+l|0;if(e>>>0>1073741823){zp(a);i=f[a>>2]|0;h=i;d=f[n>>2]|0}j=d-h|0;g=j>>1;g=j>>2>>>0<536870911?(g>>>0>>0?e:g):1073741823;j=b;d=j-h>>2;do if(g)if(g>>>0>1073741823){p=Ha(4)|0;qq(p);sa(p|0,1040,102)}else{e=Fn(g<<2)|0;break}else e=0;while(0);h=e+(d<<2)|0;g=e+(g<<2)|0;if((c|0)==(o|0))d=h;else{e=((o+-4-k|0)>>>2)+1|0;d=h;while(1){f[d>>2]=f[c>>2];c=c+4|0;if((c|0)==(o|0))break;else d=d+4|0}d=h+(e<<2)|0}c=j-i|0;e=h+(0-(c>>2)<<2)|0;if((c|0)>0)Mh(e|0,i|0,c|0)|0;c=(f[p>>2]|0)-j|0;if((c|0)>0){Mh(d|0,b|0,c|0)|0;b=d+(c>>>2<<2)|0}else b=d;f[a>>2]=e;f[p>>2]=b;f[n>>2]=g;if(!i){p=h;return p|0}Lq(i);p=h;return p|0}function ye(a,b){a=a|0;b=b|0;var c=0,d=0,e=0,g=0,h=0,i=0,j=0,k=0,l=0,m=0;d=a+4|0;if(!b){c=f[a>>2]|0;f[a>>2]=0;if(c|0)Lq(c);f[d>>2]=0;return}if(b>>>0>1073741823){a=Ha(4)|0;qq(a);sa(a|0,1040,102)}m=Fn(b<<2)|0;c=f[a>>2]|0;f[a>>2]=m;if(c|0)Lq(c);f[d>>2]=b;c=0;do{f[(f[a>>2]|0)+(c<<2)>>2]=0;c=c+1|0}while((c|0)!=(b|0));d=a+8|0;g=f[d>>2]|0;if(!g)return;c=f[g+4>>2]|0;l=b+-1|0;m=(l&b|0)==0;if(m)e=c&l;else e=(c>>>0)%(b>>>0)|0;f[(f[a>>2]|0)+(e<<2)>>2]=d;c=f[g>>2]|0;if(!c)return;else{h=g;d=c;c=g}a:while(1){b:do if(m){k=h;i=c;while(1){c=d;while(1){j=f[c+4>>2]&l;if((j|0)==(e|0))break;d=(f[a>>2]|0)+(j<<2)|0;if(!(f[d>>2]|0)){g=i;e=j;break b}h=c+8|0;g=c;while(1){d=f[g>>2]|0;if(!d)break;if((f[h>>2]|0)==(f[d+8>>2]|0))g=d;else break}f[i>>2]=d;f[g>>2]=f[f[(f[a>>2]|0)+(j<<2)>>2]>>2];f[f[(f[a>>2]|0)+(j<<2)>>2]>>2]=c;c=f[k>>2]|0;if(!c){c=34;break a}}d=f[c>>2]|0;if(!d){c=34;break a}else{k=c;i=c}}}else{k=h;i=c;while(1){c=d;while(1){j=((f[c+4>>2]|0)>>>0)%(b>>>0)|0;if((j|0)==(e|0))break;d=(f[a>>2]|0)+(j<<2)|0;if(!(f[d>>2]|0)){g=i;e=j;break b}h=c+8|0;g=c;while(1){d=f[g>>2]|0;if(!d)break;if((f[h>>2]|0)==(f[d+8>>2]|0))g=d;else break}f[i>>2]=d;f[g>>2]=f[f[(f[a>>2]|0)+(j<<2)>>2]>>2];f[f[(f[a>>2]|0)+(j<<2)>>2]>>2]=c;c=f[k>>2]|0;if(!c){c=34;break a}}d=f[c>>2]|0;if(!d){c=34;break a}else{k=c;i=c}}}while(0);f[d>>2]=g;d=f[c>>2]|0;if(!d){c=34;break}else h=c}if((c|0)==34)return}function ze(a,b,c,d,e,g){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;g=g|0;var h=0,i=0,j=0,k=0,l=0,m=0,n=0,o=0;o=Jf(a,b,c,d,g)|0;l=f[e>>2]|0;n=f[d>>2]|0;h=f[g>>2]|0;j=f[h+4>>2]|0;i=f[h>>2]|0;if(j-i>>3>>>0>l>>>0){m=h;k=i;h=i}else{yp(h);j=f[g>>2]|0;m=j;k=f[h>>2]|0;h=f[j>>2]|0;j=f[j+4>>2]|0}i=f[k+(l<<3)>>2]|0;if(j-h>>3>>>0<=n>>>0){yp(m);h=f[m>>2]|0}if(i>>>0>=(f[h+(n<<3)>>2]|0)>>>0)return o|0;l=f[d>>2]|0;f[d>>2]=f[e>>2];f[e>>2]=l;l=f[d>>2]|0;n=f[c>>2]|0;j=f[g>>2]|0;i=f[j+4>>2]|0;h=f[j>>2]|0;if(i-h>>3>>>0>l>>>0){m=h;k=i}else{yp(j);e=f[g>>2]|0;m=f[j>>2]|0;h=f[e>>2]|0;k=f[e+4>>2]|0;j=e}i=f[m+(l<<3)>>2]|0;if(k-h>>3>>>0<=n>>>0){yp(j);h=f[j>>2]|0}if(i>>>0>=(f[h+(n<<3)>>2]|0)>>>0){o=o+1|0;return o|0}l=f[c>>2]|0;f[c>>2]=f[d>>2];f[d>>2]=l;l=f[c>>2]|0;n=f[b>>2]|0;j=f[g>>2]|0;i=f[j+4>>2]|0;h=f[j>>2]|0;if(i-h>>3>>>0>l>>>0){m=h;k=i}else{yp(j);d=f[g>>2]|0;m=f[j>>2]|0;h=f[d>>2]|0;k=f[d+4>>2]|0;j=d}i=f[m+(l<<3)>>2]|0;if(k-h>>3>>>0<=n>>>0){yp(j);h=f[j>>2]|0}if(i>>>0>=(f[h+(n<<3)>>2]|0)>>>0){o=o+2|0;return o|0}m=f[b>>2]|0;f[b>>2]=f[c>>2];f[c>>2]=m;m=f[b>>2]|0;n=f[a>>2]|0;j=f[g>>2]|0;i=f[j+4>>2]|0;h=f[j>>2]|0;if(i-h>>3>>>0>m>>>0){l=h;k=i}else{yp(j);g=f[g>>2]|0;l=f[j>>2]|0;h=f[g>>2]|0;k=f[g+4>>2]|0;j=g}i=f[l+(m<<3)>>2]|0;if(k-h>>3>>>0<=n>>>0){yp(j);h=f[j>>2]|0}if(i>>>0>=(f[h+(n<<3)>>2]|0)>>>0){o=o+3|0;return o|0}g=f[a>>2]|0;f[a>>2]=f[b>>2];f[b>>2]=g;o=o+4|0;return o|0}function Ae(a,b,c,d){a=a|0;b=b|0;c=c|0;d=d|0;var e=0,g=0,h=0,i=0,j=0,k=0,l=0,m=0;j=f[b>>2]|0;l=f[a>>2]|0;e=f[d>>2]|0;h=f[e+4>>2]|0;g=f[e>>2]|0;if(h-g>>3>>>0>j>>>0){k=e;i=g;e=g}else{yp(e);h=f[d>>2]|0;k=h;i=f[e>>2]|0;e=f[h>>2]|0;h=f[h+4>>2]|0}g=f[i+(j<<3)>>2]|0;if(h-e>>3>>>0>l>>>0)h=k;else{yp(k);e=f[k>>2]|0;h=f[d>>2]|0}m=g>>>0<(f[e+(l<<3)>>2]|0)>>>0;j=f[c>>2]|0;l=f[b>>2]|0;g=f[h+4>>2]|0;e=f[h>>2]|0;if(g-e>>3>>>0>j>>>0){k=e;i=g}else{yp(h);g=f[d>>2]|0;k=f[h>>2]|0;e=f[g>>2]|0;i=f[g+4>>2]|0;h=g}g=f[k+(j<<3)>>2]|0;if(i-e>>3>>>0<=l>>>0){yp(h);e=f[h>>2]|0}e=g>>>0<(f[e+(l<<3)>>2]|0)>>>0;if(!m){if(!e){b=0;return b|0}k=f[b>>2]|0;f[b>>2]=f[c>>2];f[c>>2]=k;k=f[b>>2]|0;l=f[a>>2]|0;h=f[d>>2]|0;g=f[h+4>>2]|0;e=f[h>>2]|0;if(g-e>>3>>>0>k>>>0){j=e;i=g}else{yp(h);c=f[d>>2]|0;j=f[h>>2]|0;e=f[c>>2]|0;i=f[c+4>>2]|0;h=c}g=f[j+(k<<3)>>2]|0;if(i-e>>3>>>0<=l>>>0){yp(h);e=f[h>>2]|0}if(g>>>0>=(f[e+(l<<3)>>2]|0)>>>0){b=1;return b|0}c=f[a>>2]|0;f[a>>2]=f[b>>2];f[b>>2]=c;b=2;return b|0}l=f[a>>2]|0;if(e){f[a>>2]=f[c>>2];f[c>>2]=l;b=1;return b|0}f[a>>2]=f[b>>2];f[b>>2]=l;k=f[c>>2]|0;h=f[d>>2]|0;g=f[h+4>>2]|0;e=f[h>>2]|0;if(g-e>>3>>>0>k>>>0){j=e;i=g}else{yp(h);a=f[d>>2]|0;j=f[h>>2]|0;e=f[a>>2]|0;i=f[a+4>>2]|0;h=a}g=f[j+(k<<3)>>2]|0;if(i-e>>3>>>0<=l>>>0){yp(h);e=f[h>>2]|0}if(g>>>0>=(f[e+(l<<3)>>2]|0)>>>0){b=1;return b|0}a=f[b>>2]|0;f[b>>2]=f[c>>2];f[c>>2]=a;b=2;return b|0}function Be(a,b,c,d,e,g){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;g=g|0;var h=0,i=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0,v=0;n=e>>>0>1073741823?-1:e<<2;q=Iq(n)|0;Xj(q|0,0,n|0)|0;n=f[a+32>>2]|0;s=a+40|0;d=f[s>>2]|0;h=f[d+4>>2]|0;g=f[d>>2]|0;i=h-g|0;a:do if((i|0)>4){o=f[a+36>>2]|0;t=a+8|0;p=n+12|0;r=(e|0)>0;l=i>>2;while(1){m=l+-1|0;if(h-g>>2>>>0<=m>>>0){yp(d);g=f[d>>2]|0}g=f[g+(m<<2)>>2]|0;k=X(m,e)|0;if((g|0)>=0?(u=f[(f[p>>2]|0)+(g<<2)>>2]|0,(u|0)>=0):0){d=f[n>>2]|0;h=f[o>>2]|0;i=f[h+(f[d+(u<<2)>>2]<<2)>>2]|0;g=u+1|0;g=((g|0)%3|0|0)==0?u+-2|0:g;if((g|0)<0)g=-1073741824;else g=f[d+(g<<2)>>2]|0;j=f[h+(g<<2)>>2]|0;g=(((u>>>0)%3|0|0)==0?2:-1)+u|0;if((g|0)<0)g=-1073741824;else g=f[d+(g<<2)>>2]|0;g=f[h+(g<<2)>>2]|0;if((i|0)<(m|0)&(j|0)<(m|0)&(g|0)<(m|0)){i=X(i,e)|0;h=X(j,e)|0;d=X(g,e)|0;if(r){g=0;do{f[q+(g<<2)>>2]=(f[b+(g+d<<2)>>2]|0)+(f[b+(g+h<<2)>>2]|0)-(f[b+(g+i<<2)>>2]|0);g=g+1|0}while((g|0)!=(e|0))}aj(t,b+(k<<2)|0,q,c+(k<<2)|0)}else v=17}else v=17;if((v|0)==17){v=0;aj(t,b+(k<<2)|0,b+((X(l+-2|0,e)|0)<<2)|0,c+(k<<2)|0)}if((m|0)<=1)break a;h=f[s>>2]|0;d=h;g=f[h>>2]|0;h=f[h+4>>2]|0;l=m}}while(0);if((e|0)<=0){v=a+8|0;aj(v,b,q,c);Jq(q);return 1}Xj(q|0,0,e<<2|0)|0;v=a+8|0;aj(v,b,q,c);Jq(q);return 1}function Ce(a,c){a=a|0;c=c|0;var d=0,e=0,g=0,h=0,i=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0;t=u;u=u+16|0;p=t+4|0;q=t;s=t+8|0;r=a+4|0;o=a+8|0;Ri((f[o>>2]|0)-(f[r>>2]|0)>>2,c)|0;d=f[r>>2]|0;if((f[o>>2]|0)==(d|0)){u=t;return 1}n=a+32|0;m=c+16|0;h=c+4|0;i=s+1|0;j=s+1|0;l=s+1|0;k=s+1|0;a=d;g=0;while(1){a=f[a+(g<<2)>>2]|0;d=f[n>>2]|0;if((a|0)<=-1){a=5;break}e=f[d+8>>2]|0;if(((f[d+12>>2]|0)-e>>2|0)<=(a|0)){a=7;break}e=f[e+(a<<2)>>2]|0;b[s>>0]=f[e+56>>2];a=m;d=f[a>>2]|0;a=f[a+4>>2]|0;if(!((a|0)>0|(a|0)==0&d>>>0>0)){f[q>>2]=f[h>>2];f[p>>2]=f[q>>2];vf(c,p,s,k)|0;d=m;a=f[d+4>>2]|0;d=f[d>>2]|0}b[s>>0]=f[e+28>>2];if(!((a|0)>0|(a|0)==0&d>>>0>0)){f[q>>2]=f[h>>2];f[p>>2]=f[q>>2];vf(c,p,s,l)|0;d=m;a=f[d+4>>2]|0;d=f[d>>2]|0}b[s>>0]=b[e+24>>0]|0;if(!((a|0)>0|(a|0)==0&d>>>0>0)){f[q>>2]=f[h>>2];f[p>>2]=f[q>>2];vf(c,p,s,j)|0;d=m;a=f[d+4>>2]|0;d=f[d>>2]|0}b[s>>0]=b[e+32>>0]|0;if(!((a|0)>0|(a|0)==0&d>>>0>0)){f[q>>2]=f[h>>2];f[p>>2]=f[q>>2];vf(c,p,s,i)|0}Ri(f[e+60>>2]|0,c)|0;g=g+1|0;a=f[r>>2]|0;if(g>>>0>=(f[o>>2]|0)-a>>2>>>0){a=3;break}}if((a|0)==3){u=t;return 1}else if((a|0)==5)Fa(17509,17693,63,17731);else if((a|0)==7)Fa(17639,17693,64,17731);return 0}function De(a,c){a=a|0;c=c|0;var d=0,e=0,g=0,h=0,i=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,v=0;t=u;u=u+16|0;n=t+4|0;o=t;r=t+8|0;q=a+12|0;p=c+16|0;m=p;l=f[m+4>>2]|0;if(!((l|0)>0|(l|0)==0&(f[m>>2]|0)>>>0>0)){f[o>>2]=f[c+4>>2];f[n>>2]=f[o>>2];vf(c,n,q,q+4|0)|0}if(!(f[q>>2]|0)){s=1;u=t;return s|0}j=c+4|0;k=r+1|0;l=r+1|0;m=r+1|0;d=0;while(1){i=f[a>>2]|0;h=f[i+(d<<3)>>2]|0;if(h>>>0>63)if(h>>>0>16383)if(h>>>0>4194303){d=0;s=22;break}else{g=2;s=15}else{g=1;s=15}else if(!h){g=d+1|0;e=0;do{if(f[i+(g+e<<3)>>2]|0)break;e=e+1|0}while(e>>>0<63);b[r>>0]=e<<2|3;i=p;h=f[i+4>>2]|0;if(!((h|0)>0|(h|0)==0&(f[i>>2]|0)>>>0>0)){f[o>>2]=f[j>>2];f[n>>2]=f[o>>2];vf(c,n,r,m)|0}d=e+d|0}else{g=0;s=15}if((s|0)==15){s=0;b[r>>0]=g|h<<2;i=p;e=f[i+4>>2]|0;if(!((e|0)>0|(e|0)==0&(f[i>>2]|0)>>>0>0)){f[o>>2]=f[j>>2];f[n>>2]=f[o>>2];vf(c,n,r,l)|0}if(g){e=0;do{e=e+1|0;b[r>>0]=h>>>((e<<3)+-2|0);i=p;v=f[i+4>>2]|0;if(!((v|0)>0|(v|0)==0&(f[i>>2]|0)>>>0>0)){f[o>>2]=f[j>>2];f[n>>2]=f[o>>2];vf(c,n,r,k)|0}}while((e|0)<(g|0))}}d=d+1|0;if(d>>>0>=(f[q>>2]|0)>>>0){d=1;s=22;break}}if((s|0)==22){u=t;return d|0}return 0}function Ee(a,c,d){a=a|0;c=c|0;d=d|0;var e=Ka,g=Ka,i=0,j=0,k=0;switch(b[a+24>>0]|0){case 1:{j=f[c>>2]|0;c=a+48|0;i=f[c>>2]|0;c=f[c+4>>2]|0;k=a+40|0;c=Do(En(f[k>>2]|0,f[k+4>>2]|0,j|0,((j|0)<0)<<31>>31|0)|0,I|0,i|0,c|0)|0;g=$(b[(f[f[a>>2]>>2]|0)+c>>0]|0);e=$(g/$(127.0));n[d>>2]=(b[a+32>>0]|0)==0?g:e;n[d+4>>2]=$(0.0);a=1;return a|0}case 2:{j=f[c>>2]|0;k=a+48|0;c=f[k>>2]|0;k=f[k+4>>2]|0;i=a+40|0;k=(Do(En(f[i>>2]|0,f[i+4>>2]|0,j|0,((j|0)<0)<<31>>31|0)|0,I|0,c|0,k|0)|0)+(f[f[a>>2]>>2]|0)|0;k=h[k>>0]|h[k+1>>0]<<8;c=(k&65535)>>>8&255;e=$((k&255)<<24>>24);if(!(b[a+32>>0]|0)){n[d>>2]=e;g=$(c<<24>>24);n[d+4>>2]=g;k=1;return k|0}else{g=$(e/$(127.0));n[d>>2]=g;g=$($(c<<24>>24)/$(127.0));n[d+4>>2]=g;k=1;return k|0}}case 3:{j=f[c>>2]|0;k=a+48|0;c=f[k>>2]|0;k=f[k+4>>2]|0;i=a+40|0;k=(Do(En(f[i>>2]|0,f[i+4>>2]|0,j|0,((j|0)<0)<<31>>31|0)|0,I|0,c|0,k|0)|0)+(f[f[a>>2]>>2]|0)|0;c=b[k+1>>0]|0;e=$(b[k>>0]|0);if(!(b[a+32>>0]|0)){n[d>>2]=e;g=$(c<<24>>24);n[d+4>>2]=g;k=1;return k|0}else{g=$(e/$(127.0));n[d>>2]=g;g=$($(c<<24>>24)/$(127.0));n[d+4>>2]=g;k=1;return k|0}}case 4:{j=f[c>>2]|0;k=a+48|0;c=f[k>>2]|0;k=f[k+4>>2]|0;i=a+40|0;k=(Do(En(f[i>>2]|0,f[i+4>>2]|0,j|0,((j|0)<0)<<31>>31|0)|0,I|0,c|0,k|0)|0)+(f[f[a>>2]>>2]|0)|0;k=h[k>>0]|h[k+1>>0]<<8|h[k+2>>0]<<16|h[k+3>>0]<<24;c=k>>>8&255;e=$((k&255)<<24>>24);if(!(b[a+32>>0]|0)){n[d>>2]=e;g=$(c<<24>>24);n[d+4>>2]=g;k=1;return k|0}else{g=$(e/$(127.0));n[d>>2]=g;g=$($(c<<24>>24)/$(127.0));n[d+4>>2]=g;k=1;return k|0}}default:{k=0;return k|0}}return 0}function Fe(a){a=a|0;var b=0,c=0,d=0,e=0,g=0,h=0,i=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0;r=u;u=u+16|0;n=r+4|0;m=r;k=a+12|0;b=f[k>>2]|0;p=(f[b+4>>2]|0)-(f[b>>2]|0)|0;o=p>>2;if((p|0)<=0){u=r;return 1}j=a+152|0;p=a+140|0;l=a+144|0;i=a+148|0;a=0;while(1){f[m>>2]=(a>>>0)/3|0;f[n>>2]=f[m>>2];if(!(uk(b,n)|0)?(f[(f[(f[k>>2]|0)+12>>2]|0)+(a<<2)>>2]|0)==-1073741824:0){b=a+1|0;b=((b|0)%3|0|0)==0?a+-2|0:b;if((b|0)<0)d=-1073741824;else d=f[(f[f[k>>2]>>2]|0)+(b<<2)>>2]|0;c=f[j>>2]|0;if((f[c+(d<<2)>>2]|0)==-1){h=f[l>>2]|0;b=f[i>>2]|0;if((h|0)==(b<<5|0)){if((h+1|0)<0){zp(p);b=f[i>>2]|0}c=b<<6;g=h+32&-32;fj(p,b<<5>>>0<1073741823?(c>>>0>>0?g:c):2147483647);b=f[l>>2]|0;c=f[j>>2]|0}else b=h;f[l>>2]=b+1;g=(f[p>>2]|0)+(b>>>5<<2)|0;f[g>>2]=f[g>>2]&~(1<<(b&31));b=c+(d<<2)|0;if((f[b>>2]|0)==-1){d=a;while(1){f[b>>2]=h;b=d+1|0;if((d|0)<0)b=d;else b=((b|0)%3|0|0)==0?d+-2|0:b;a:do if((b|0)>=0){g=f[k>>2]|0;e=f[g+12>>2]|0;while(1){d=f[e+(b<<2)>>2]|0;if((d|0)==-1073741824)break;b=d+1|0;if((d|0)<0)b=d;else b=((b|0)%3|0|0)==0?d+-2|0:b;if((b|0)<0){q=18;break a}}d=b+1|0;d=((d|0)%3|0|0)==0?b+-2|0:d;if((d|0)<0){d=-1073741824;e=b}else{d=f[(f[g>>2]|0)+(d<<2)>>2]|0;e=b}}else q=18;while(0);if((q|0)==18){q=0;b=(b|0)==-1073741824;do{}while(!b);d=-1073741824;e=-1073741824}b=c+(d<<2)|0;if((f[b>>2]|0)!=-1)break;else d=e}}}}a=a+1|0;if((a|0)>=(o|0))break;b=f[k>>2]|0}u=r;return 1}function Ge(a,b){a=a|0;b=b|0;var c=0,d=0,e=0,g=0,h=0,i=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0;r=u;u=u+16|0;m=r+4|0;l=r;f[a+64>>2]=b;if(f[a+136>>2]|0){a=0;u=r;return a|0}q=a+128|0;f[q>>2]=2;p=a+132|0;f[p>>2]=7;g=Ra[f[(f[b>>2]|0)+32>>2]&127](b)|0;n=a+84|0;f[n>>2]=g;k=a+100|0;g=(f[g+28>>2]|0)-(f[g+24>>2]|0)>>2;j=a+104|0;b=f[j>>2]|0;c=f[k>>2]|0;h=b-c>>2;d=c;e=b;if(g>>>0<=h>>>0){if(g>>>0>>0?(i=d+(g<<2)|0,(e|0)!=(i|0)):0){b=e+(~((e+-4-i|0)>>>2)<<2)|0;f[j>>2]=b}}else{jj(k,g-h|0);c=f[k>>2]|0;b=f[j>>2]|0}if((b-c|0)>0){b=0;do{h=f[n>>2]|0;f[l>>2]=b;f[m>>2]=f[l>>2];h=Ti(h,m)|0;i=f[k>>2]|0;f[i+(b<<2)>>2]=h;b=b+1|0}while((b|0)<((f[j>>2]|0)-i>>2|0))}j=a+88|0;d=f[n>>2]|0;b=f[d>>2]|0;i=(f[d+4>>2]|0)-b>>2;g=a+92|0;e=f[g>>2]|0;c=f[j>>2]|0;h=e-c>>2;if(i>>>0<=h>>>0){if(i>>>0>>0?(o=c+(i<<2)|0,(e|0)!=(o|0)):0)f[g>>2]=e+(~((e+-4-o|0)>>>2)<<2)}else{jj(j,i-h|0);b=f[n>>2]|0;d=b;b=f[b>>2]|0}c=f[d+4>>2]|0;if((c-b|0)>0){b=0;do{o=f[d>>2]|0;f[(f[j>>2]|0)+(b<<2)>>2]=f[o+(b<<2)>>2];b=b+1|0}while((b|0)<(c-o>>2|0))}e=(f[p>>2]|0)-(f[q>>2]|0)+1|0;g=a+140|0;h=a+144|0;b=f[h>>2]|0;c=f[g>>2]|0;d=(b-c|0)/12|0;if(e>>>0>d>>>0){yg(g,e-d|0);a=1;u=r;return a|0}if(e>>>0>=d>>>0){a=1;u=r;return a|0}e=c+(e*12|0)|0;if((b|0)==(e|0)){a=1;u=r;return a|0}do{c=b+-12|0;f[h>>2]=c;d=f[c>>2]|0;if(!d)b=c;else{c=b+-8|0;b=f[c>>2]|0;if((b|0)!=(d|0))f[c>>2]=b+(~((b+-4-d|0)>>>2)<<2);Lq(d);b=f[h>>2]|0}}while((b|0)!=(e|0));b=1;u=r;return b|0}function He(a,c,d){a=a|0;c=c|0;d=d|0;var e=Ka,g=Ka,i=0,j=0,k=0;switch(b[a+24>>0]|0){case 1:{j=f[c>>2]|0;c=a+48|0;i=f[c>>2]|0;c=f[c+4>>2]|0;k=a+40|0;c=Do(En(f[k>>2]|0,f[k+4>>2]|0,j|0,((j|0)<0)<<31>>31|0)|0,I|0,i|0,c|0)|0;g=$(h[(f[f[a>>2]>>2]|0)+c>>0]|0);e=$(g/$(255.0));n[d>>2]=(b[a+32>>0]|0)==0?g:e;n[d+4>>2]=$(0.0);a=1;return a|0}case 2:{j=f[c>>2]|0;k=a+48|0;c=f[k>>2]|0;k=f[k+4>>2]|0;i=a+40|0;k=(Do(En(f[i>>2]|0,f[i+4>>2]|0,j|0,((j|0)<0)<<31>>31|0)|0,I|0,c|0,k|0)|0)+(f[f[a>>2]>>2]|0)|0;k=h[k>>0]|h[k+1>>0]<<8;c=(k&65535)>>>8&255;e=$(k&255);if(!(b[a+32>>0]|0)){n[d>>2]=e;g=$(c&255);n[d+4>>2]=g;k=1;return k|0}else{g=$(e/$(255.0));n[d>>2]=g;g=$($(c&255)/$(255.0));n[d+4>>2]=g;k=1;return k|0}}case 3:{j=f[c>>2]|0;k=a+48|0;c=f[k>>2]|0;k=f[k+4>>2]|0;i=a+40|0;k=(Do(En(f[i>>2]|0,f[i+4>>2]|0,j|0,((j|0)<0)<<31>>31|0)|0,I|0,c|0,k|0)|0)+(f[f[a>>2]>>2]|0)|0;c=b[k+1>>0]|0;e=$(h[k>>0]|0);if(!(b[a+32>>0]|0)){n[d>>2]=e;g=$(c&255);n[d+4>>2]=g;k=1;return k|0}else{g=$(e/$(255.0));n[d>>2]=g;g=$($(c&255)/$(255.0));n[d+4>>2]=g;k=1;return k|0}}case 4:{j=f[c>>2]|0;k=a+48|0;c=f[k>>2]|0;k=f[k+4>>2]|0;i=a+40|0;k=(Do(En(f[i>>2]|0,f[i+4>>2]|0,j|0,((j|0)<0)<<31>>31|0)|0,I|0,c|0,k|0)|0)+(f[f[a>>2]>>2]|0)|0;k=h[k>>0]|h[k+1>>0]<<8|h[k+2>>0]<<16|h[k+3>>0]<<24;c=k>>>8&255;e=$(k&255);if(!(b[a+32>>0]|0)){n[d>>2]=e;g=$(c&255);n[d+4>>2]=g;k=1;return k|0}else{g=$(e/$(255.0));n[d>>2]=g;g=$($(c&255)/$(255.0));n[d+4>>2]=g;k=1;return k|0}}default:{k=0;return k|0}}return 0}function Ie(a,c){a=a|0;c=c|0;var d=0,e=0,g=0,h=0,i=0,j=0,k=0,l=0,m=0,n=0;l=u;u=u+16|0;i=l+4|0;j=l;e=l+9|0;k=l+8|0;c=f[(f[a+196>>2]|0)+(c<<2)>>2]&255;b[e>>0]=c;g=a+4|0;d=f[(f[g>>2]|0)+44>>2]|0;m=d+16|0;n=f[m+4>>2]|0;if(!((n|0)>0|(n|0)==0&(f[m>>2]|0)>>>0>0)){f[j>>2]=f[d+4>>2];f[i>>2]=f[j>>2];vf(d,i,e,e+1|0)|0;c=b[e>>0]|0}a:do if(c<<24>>24>-1){d=a+184|0;n=f[(f[d>>2]|0)+((c<<24>>24)*108|0)>>2]|0;m=(Ra[f[(f[a>>2]|0)+40>>2]&127](a)|0)+52|0;e=b[e>>0]|0;c=f[d>>2]|0;d=f[c+(e*108|0)+104>>2]|0;switch(f[(f[(f[m>>2]|0)+72>>2]|0)+(n<<2)>>2]|0){case 0:{h=7;break a}case 1:{if(b[c+(e*108|0)+28>>0]|0){h=7;break a}break}default:{}}c=f[(f[g>>2]|0)+44>>2]|0;b[k>>0]=1;n=c+16|0;m=f[n+4>>2]|0;if(!((m|0)>0|(m|0)==0&(f[n>>2]|0)>>>0>0)){f[j>>2]=f[c+4>>2];f[i>>2]=f[j>>2];vf(c,i,k,k+1|0)|0}}else{d=f[a+68>>2]|0;h=7}while(0);if((h|0)==7){c=f[(f[g>>2]|0)+44>>2]|0;b[k>>0]=0;n=c+16|0;m=f[n+4>>2]|0;if(!((m|0)>0|(m|0)==0&(f[n>>2]|0)>>>0>0)){f[j>>2]=f[c+4>>2];f[i>>2]=f[j>>2];vf(c,i,k,k+1|0)|0}}c=f[(f[g>>2]|0)+44>>2]|0;b[k>>0]=d;n=c+16|0;m=f[n+4>>2]|0;if((m|0)>0|(m|0)==0&(f[n>>2]|0)>>>0>0){u=l;return 1}f[j>>2]=f[c+4>>2];f[i>>2]=f[j>>2];vf(c,i,k,k+1|0)|0;u=l;return 1}function Je(a,b,c){a=a|0;b=b|0;c=c|0;var d=0,e=0,g=0,h=0,i=0,j=0,k=0,l=0,m=0,n=0,o=0;o=u;u=u+32|0;n=o+4|0;m=o;l=b+4|0;h=f[(f[l>>2]|0)+48>>2]|0;k=b+12|0;e=f[k>>2]|0;f[n>>2]=0;f[n+4>>2]=0;f[n+8>>2]=0;Ck(n,17741,17);g=h+16|0;b=f[g>>2]|0;if(b){c=g;a:while(1){d=b;while(1){if((f[d+16>>2]|0)>=(e|0))break;b=f[d+4>>2]|0;if(!b)break a;else d=b}b=f[d>>2]|0;if(!b){c=d;break}else c=d}if(((c|0)!=(g|0)?(i=c+20|0,(e|0)>=(f[c+16>>2]|0)):0)?(Pi(i,n)|0)!=0:0)c=ql(i,n,-1)|0;else j=10}else j=10;if((j|0)==10)c=ql(h,n,-1)|0;Eo(n);c=(1<>2]=4516;j=n+4|0;f[j>>2]=-1;f[j+4>>2]=-1;f[j+8>>2]=-1;f[j+12>>2]=-1;if(((c|0)%2|0|0)!=1)Fa(10652,10685,69,10792);b=(_(c|0)|0)^31;c=b+1|0;if(!b)Fa(10816,10827,60,10889);if(c>>>0>=31)Fa(10909,10827,61,10889);f[n+4>>2]=c;j=2<>2]=j+-1;j=j+-2|0;f[n+12>>2]=j;f[n+16>>2]=(j|0)/2|0;f[n>>2]=4536;switch(kj(f[k>>2]|0,f[l>>2]|0)|0){case 6:{Wh(m,6,f[k>>2]|0,f[l>>2]|0,n);f[a>>2]=f[m>>2];u=o;return}case 0:{Wh(m,0,f[k>>2]|0,f[l>>2]|0,n);f[a>>2]=f[m>>2];u=o;return}default:Fa(10921,10927,71,11e3)}}function Ke(a,c,d,e,g){a=a|0;c=c|0;d=d|0;e=e|0;g=g|0;var h=0,i=Ka,j=0,k=0,l=0,m=0,o=0,p=0,q=0,r=0,s=0,t=0,v=0,w=0,x=0,y=0,z=0,A=Ka,B=Ka;y=u;u=u+16|0;x=y;h=c+4|0;if((f[h>>2]|0)==-1)Fa(7420,7437,115,7494);q=e+4|0;j=b[d+24>>0]|0;w=j<<24>>24;uj(a,c,(f[q>>2]|0)-(f[e>>2]|0)>>2,w,g,d);o=f[a>>2]|0;o=(f[f[o>>2]>>2]|0)+(f[o+48>>2]|0)|0;v=f[h>>2]|0;Ip(x);So(x,$(n[c+20>>2]),(1<>>0>1073741823?-1:w<<2)|0;g=f[q>>2]|0;a=f[e>>2]|0;q=a;if((g|0)==(a|0)){Jq(v);u=y;return}r=d+68|0;s=d+48|0;t=d+40|0;k=c+8|0;l=x+4|0;p=(b[d+84>>0]|0)==0;m=g-a>>2;if(j<<24>>24>0){e=0;c=0}else{g=0;do{a=f[q+(g<<2)>>2]|0;if(p)a=f[(f[r>>2]|0)+(a<<2)>>2]|0;w=s;o=f[w>>2]|0;w=f[w+4>>2]|0;l=t;x=f[l>>2]|0;l=En(x|0,f[l+4>>2]|0,a|0,((a|0)<0)<<31>>31|0)|0;w=Do(l|0,I|0,o|0,w|0)|0;Mh(v|0,(f[f[d>>2]>>2]|0)+w|0,x|0)|0;g=g+1|0}while(g>>>0>>0);Jq(v);u=y;return}while(1){a=f[q+(c<<2)>>2]|0;if(p)a=f[(f[r>>2]|0)+(a<<2)>>2]|0;h=s;j=f[h>>2]|0;h=f[h+4>>2]|0;z=t;g=f[z>>2]|0;a=En(g|0,f[z+4>>2]|0,a|0,((a|0)<0)<<31>>31|0)|0;a=Do(a|0,I|0,j|0,h|0)|0;Mh(v|0,(f[f[d>>2]>>2]|0)+a|0,g|0)|0;a=f[k>>2]|0;i=$(n[x>>2]);g=0;h=e;while(1){A=$(n[v+(g<<2)>>2]);A=$(A-$(n[a+(g<<2)>>2]));j=A<$(0.0);B=$(-A);A=$((j?B:A)/i);z=~~$(J($($($(f[l>>2]|0)*A)+$(.5))));f[o+(h<<2)>>2]=j?0-z|0:z;g=g+1|0;if((g|0)==(w|0))break;else h=h+1|0}c=c+1|0;if(c>>>0>=m>>>0)break;else e=w+e|0}Jq(v);u=y;return}function Le(a){a=a|0;var c=0,d=0,e=0,g=0,h=0,i=0,j=0,k=0,l=0,m=0;m=u;u=u+32|0;h=m+4|0;i=m;j=m+16|0;g=a+48|0;d=f[g>>2]|0;f[h>>2]=0;f[h+4>>2]=0;f[h+8>>2]=0;Ck(h,17555,20);d=ol(d+24|0,h)|0;Eo(h);e=f[g>>2]|0;f[h>>2]=0;f[h+4>>2]=0;f[h+8>>2]=0;Ck(h,17576,22);e=ol(e+24|0,h)|0;Eo(h);k=a+56|0;c=f[k>>2]|0;f[k>>2]=0;if(c|0)Oa[f[(f[c>>2]|0)+4>>2]&127](c);c=f[a+52>>2]|0;if(d?(d=((f[c+88>>2]|0)-(f[c+84>>2]|0)|0)<12e3,d|(($j(f[g>>2]|0)|0)>4|e^1)):0){c=f[a+44>>2]|0;b[j>>0]=0;g=c+16|0;e=f[g+4>>2]|0;if(!((e|0)>0|(e|0)==0&(f[g>>2]|0)>>>0>0)){f[i>>2]=f[c+4>>2];f[h>>2]=f[i>>2];vf(c,h,j,j+1|0)|0}c=Fn(296)|0;Lj(c);d=f[k>>2]|0;f[k>>2]=c;if(d){Oa[f[(f[d>>2]|0)+4>>2]&127](d);l=14}}else if(e){c=f[a+44>>2]|0;b[j>>0]=2;g=c+16|0;e=f[g+4>>2]|0;if(!((e|0)>0|(e|0)==0&(f[g>>2]|0)>>>0>0)){f[i>>2]=f[c+4>>2];f[h>>2]=f[i>>2];vf(c,h,j,j+1|0)|0}c=Fn(360)|0;hj(c);d=f[k>>2]|0;f[k>>2]=c;if(d){Oa[f[(f[d>>2]|0)+4>>2]&127](d);l=14}}else l=14;if((l|0)==14){c=f[k>>2]|0;if(!c){a=0;u=m;return a|0}}a=Va[f[(f[c>>2]|0)+8>>2]&127](c,a)|0;u=m;return a|0}function Me(a,c,d){a=a|0;c=c|0;d=d|0;var e=0,g=0,i=0;switch(b[a+24>>0]|0){case 1:{g=f[c>>2]|0;c=a+48|0;e=f[c>>2]|0;c=f[c+4>>2]|0;i=a+40|0;c=Do(En(f[i>>2]|0,f[i+4>>2]|0,g|0,((g|0)<0)<<31>>31|0)|0,I|0,e|0,c|0)|0;c=b[(f[f[a>>2]>>2]|0)+c>>0]|0;a=d;f[a>>2]=c;f[a+4>>2]=((c|0)<0)<<31>>31;a=d+8|0;f[a>>2]=0;f[a+4>>2]=0;f[a+8>>2]=0;f[a+12>>2]=0;a=1;return a|0}case 2:{i=f[c>>2]|0;g=a+48|0;e=f[g>>2]|0;g=f[g+4>>2]|0;c=a+40|0;g=(Do(En(f[c>>2]|0,f[c+4>>2]|0,i|0,((i|0)<0)<<31>>31|0)|0,I|0,e|0,g|0)|0)+(f[f[a>>2]>>2]|0)|0;g=h[g>>0]|h[g+1>>0]<<8;e=(g&255)<<24>>24;i=d;f[i>>2]=e;f[i+4>>2]=((e|0)<0)<<31>>31;g=((g&65535)>>>8&255)<<24>>24;i=d+8|0;f[i>>2]=g;f[i+4>>2]=((g|0)<0)<<31>>31;i=d+16|0;f[i>>2]=0;f[i+4>>2]=0;i=1;return i|0}case 3:{i=f[c>>2]|0;e=a+48|0;g=f[e>>2]|0;e=f[e+4>>2]|0;c=a+40|0;a=(Do(En(f[c>>2]|0,f[c+4>>2]|0,i|0,((i|0)<0)<<31>>31|0)|0,I|0,g|0,e|0)|0)+(f[f[a>>2]>>2]|0)|0;e=b[a+1>>0]|0;g=b[a+2>>0]|0;a=b[a>>0]|0;i=d;f[i>>2]=a;f[i+4>>2]=((a|0)<0)<<31>>31;e=e<<24>>24;i=d+8|0;f[i>>2]=e;f[i+4>>2]=((e|0)<0)<<31>>31;g=g<<24>>24;i=d+16|0;f[i>>2]=g;f[i+4>>2]=((g|0)<0)<<31>>31;i=1;return i|0}case 4:{e=f[c>>2]|0;g=a+48|0;i=f[g>>2]|0;g=f[g+4>>2]|0;c=a+40|0;g=(Do(En(f[c>>2]|0,f[c+4>>2]|0,e|0,((e|0)<0)<<31>>31|0)|0,I|0,i|0,g|0)|0)+(f[f[a>>2]>>2]|0)|0;g=h[g>>0]|h[g+1>>0]<<8|h[g+2>>0]<<16|h[g+3>>0]<<24;i=(g&255)<<24>>24;e=d;f[e>>2]=i;f[e+4>>2]=((i|0)<0)<<31>>31;e=(g>>>8&255)<<24>>24;i=d+8|0;f[i>>2]=e;f[i+4>>2]=((e|0)<0)<<31>>31;g=(g>>>16&255)<<24>>24;i=d+16|0;f[i>>2]=g;f[i+4>>2]=((g|0)<0)<<31>>31;i=1;return i|0}default:{i=0;return i|0}}return 0}function Ne(a,c){a=a|0;c=c|0;var d=0,e=0,g=0,h=0,i=0,j=0,k=0,l=0;l=u;u=u+32|0;k=l;h=a+8|0;g=f[h>>2]|0;j=a+4|0;d=f[j>>2]|0;if(((g-d|0)/108|0)>>>0>=c>>>0){do{f[d>>2]=-1;Nm(d+4|0);b[d+72>>0]=1;k=d+76|0;f[k>>2]=0;f[k+4>>2]=0;f[k+8>>2]=0;f[k+12>>2]=0;f[k+16>>2]=0;f[k+20>>2]=0;f[k+24>>2]=0;d=(f[j>>2]|0)+108|0;f[j>>2]=d;c=c+-1|0}while((c|0)!=0);u=l;return}e=f[a>>2]|0;i=((d-e|0)/108|0)+c|0;if(i>>>0>39768215){zp(a);e=f[a>>2]|0;g=f[h>>2]|0;d=f[j>>2]|0}j=(g-e|0)/108|0;h=j<<1;h=j>>>0<19884107?(h>>>0>>0?i:h):39768215;d=(d-e|0)/108|0;f[k+12>>2]=0;f[k+16>>2]=a+8;do if(h)if(h>>>0>39768215){l=Ha(4)|0;qq(l);sa(l|0,1040,102)}else{e=Fn(h*108|0)|0;break}else e=0;while(0);f[k>>2]=e;d=e+(d*108|0)|0;i=k+8|0;f[i>>2]=d;g=k+4|0;f[g>>2]=d;f[k+12>>2]=e+(h*108|0);do{f[d>>2]=-1;Nm(d+4|0);b[d+72>>0]=1;j=d+76|0;f[j>>2]=0;f[j+4>>2]=0;f[j+8>>2]=0;f[j+12>>2]=0;f[j+16>>2]=0;f[j+20>>2]=0;f[j+24>>2]=0;d=(f[i>>2]|0)+108|0;f[i>>2]=d;c=c+-1|0}while((c|0)!=0);Xd(a,k);h=f[g>>2]|0;c=f[i>>2]|0;if((c|0)!=(h|0))do{f[i>>2]=c+-108;d=f[c+-20>>2]|0;if(d|0){g=c+-16|0;e=f[g>>2]|0;if((e|0)!=(d|0))f[g>>2]=e+(~((e+-4-d|0)>>>2)<<2);Lq(d)}d=f[c+-32>>2]|0;if(d|0){g=c+-28|0;e=f[g>>2]|0;if((e|0)!=(d|0))f[g>>2]=e+(~((e+-4-d|0)>>>2)<<2);Lq(d)}qk(c+-104|0);c=f[i>>2]|0}while((c|0)!=(h|0));c=f[k>>2]|0;if(c|0)Lq(c);u=l;return}function Oe(a,c,d){a=a|0;c=c|0;d=d|0;var e=0,g=0,i=0;switch(b[a+24>>0]|0){case 1:{g=f[c>>2]|0;c=a+48|0;e=f[c>>2]|0;c=f[c+4>>2]|0;i=a+40|0;c=(Do(En(f[i>>2]|0,f[i+4>>2]|0,g|0,((g|0)<0)<<31>>31|0)|0,I|0,e|0,c|0)|0)+(f[f[a>>2]>>2]|0)|0;a=d;f[a>>2]=(h[c>>0]|h[c+1>>0]<<8)&65535;f[a+4>>2]=0;a=d+8|0;f[a>>2]=0;f[a+4>>2]=0;f[a+8>>2]=0;f[a+12>>2]=0;a=1;return a|0}case 2:{e=f[c>>2]|0;g=a+48|0;i=f[g>>2]|0;g=f[g+4>>2]|0;c=a+40|0;g=(Do(En(f[c>>2]|0,f[c+4>>2]|0,e|0,((e|0)<0)<<31>>31|0)|0,I|0,i|0,g|0)|0)+(f[f[a>>2]>>2]|0)|0;g=h[g>>0]|h[g+1>>0]<<8|h[g+2>>0]<<16|h[g+3>>0]<<24;i=d;f[i>>2]=g&65535;f[i+4>>2]=0;i=d+8|0;f[i>>2]=g>>>16;f[i+4>>2]=0;i=d+16|0;f[i>>2]=0;f[i+4>>2]=0;i=1;return i|0}case 3:{i=f[c>>2]|0;e=a+48|0;g=f[e>>2]|0;e=f[e+4>>2]|0;c=a+40|0;a=(Do(En(f[c>>2]|0,f[c+4>>2]|0,i|0,((i|0)<0)<<31>>31|0)|0,I|0,g|0,e|0)|0)+(f[f[a>>2]>>2]|0)|0;e=a+2|0;e=h[e>>0]|h[e+1>>0]<<8;g=a+4|0;g=h[g>>0]|h[g+1>>0]<<8;i=d;f[i>>2]=(h[a>>0]|h[a+1>>0]<<8)&65535;f[i+4>>2]=0;i=d+8|0;f[i>>2]=e&65535;f[i+4>>2]=0;i=d+16|0;f[i>>2]=g&65535;f[i+4>>2]=0;i=1;return i|0}case 4:{i=f[c>>2]|0;g=a+48|0;e=f[g>>2]|0;g=f[g+4>>2]|0;c=a+40|0;g=(Do(En(f[c>>2]|0,f[c+4>>2]|0,i|0,((i|0)<0)<<31>>31|0)|0,I|0,e|0,g|0)|0)+(f[f[a>>2]>>2]|0)|0;e=g;e=h[e>>0]|h[e+1>>0]<<8|h[e+2>>0]<<16|h[e+3>>0]<<24;g=g+4|0;g=h[g>>0]|h[g+1>>0]<<8|h[g+2>>0]<<16|h[g+3>>0]<<24;i=d;f[i>>2]=e&65535;f[i+4>>2]=0;e=co(e|0,g|0,16)|0;i=d+8|0;f[i>>2]=e&65535;f[i+4>>2]=0;i=d+16|0;f[i>>2]=g&65535;f[i+4>>2]=0;i=1;return i|0}default:{i=0;return i|0}}return 0}function Pe(a,b,c,d,e,g){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;g=g|0;var h=0,i=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0,v=0,w=0;l=e>>>0>1073741823?-1:e<<2;o=Iq(l)|0;Xj(o|0,0,l|0)|0;l=f[a+32>>2]|0;r=a+40|0;d=f[r>>2]|0;h=f[d+4>>2]|0;g=f[d>>2]|0;i=h-g|0;a:do if((i|0)>4){m=f[a+36>>2]|0;s=a+8|0;q=l+64|0;n=l+28|0;p=(e|0)>0;i=i>>2;while(1){k=i+-1|0;if(h-g>>2>>>0<=k>>>0){yp(d);g=f[d>>2]|0}g=f[g+(k<<2)>>2]|0;j=X(k,e)|0;if((!((g|0)<0?1:(1<<(g&31)&f[(f[l>>2]|0)+(g>>>5<<2)>>2]|0)!=0)?(w=f[(f[(f[q>>2]|0)+12>>2]|0)+(g<<2)>>2]|0,(w|0)>=0):0)?(v=f[n>>2]|0,h=f[m>>2]|0,t=f[h+(f[v+(w<<2)>>2]<<2)>>2]|0,u=w+1|0,u=f[h+(f[v+((((u|0)%3|0|0)==0?w+-2|0:u)<<2)>>2]<<2)>>2]|0,v=f[h+(f[v+((((w>>>0)%3|0|0)==0?2:-1)+w<<2)>>2]<<2)>>2]|0,(t|0)<(k|0)&(u|0)<(k|0)&(v|0)<(k|0)):0){d=X(t,e)|0;h=X(u,e)|0;i=X(v,e)|0;if(p){g=0;do{f[o+(g<<2)>>2]=(f[b+(g+i<<2)>>2]|0)+(f[b+(g+h<<2)>>2]|0)-(f[b+(g+d<<2)>>2]|0);g=g+1|0}while((g|0)!=(e|0))}aj(s,b+(j<<2)|0,o,c+(j<<2)|0)}else aj(s,b+(j<<2)|0,b+((X(i+-2|0,e)|0)<<2)|0,c+(j<<2)|0);if((k|0)<=1)break a;h=f[r>>2]|0;d=h;g=f[h>>2]|0;h=f[h+4>>2]|0;i=k}}while(0);if((e|0)<=0){a=a+8|0;aj(a,b,o,c);Jq(o);return 1}Xj(o|0,0,e<<2|0)|0;a=a+8|0;aj(a,b,o,c);Jq(o);return 1}function Qe(a,b,c,d){a=a|0;b=b|0;c=c|0;d=d|0;var e=0,g=0,h=0,i=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0;p=f[b>>2]|0;k=f[b+4>>2]|0;n=((f[c>>2]|0)-p<<3)+(f[c+4>>2]|0)-k|0;c=p;if((n|0)<=0){b=d+4|0;d=f[d>>2]|0;f[a>>2]=d;a=a+4|0;d=f[b>>2]|0;f[a>>2]=d;return}if(!k){l=d+4|0;e=f[l>>2]|0;g=n}else{i=32-k|0;m=(n|0)<(i|0)?n:i;i=-1>>>(i-m|0)&-1<>2];l=d+4|0;e=f[l>>2]|0;j=32-e|0;g=j>>>0>>0?j:m;h=f[d>>2]|0;e=f[h>>2]&~(-1>>>(j-g|0)&-1<>2]=e;j=f[l>>2]|0;f[h>>2]=(j>>>0>k>>>0?i<>>(k-j|0))|e;e=(f[l>>2]|0)+g|0;h=h+(e>>>5<<2)|0;f[d>>2]=h;e=e&31;f[l>>2]=e;j=m-g|0;if((j|0)>0){f[h>>2]=i>>>(k+g|0)|f[h>>2]&~(-1>>>(32-j|0));f[l>>2]=j;e=j}c=c+4|0;f[b>>2]=c;g=n-m|0}p=32-e|0;o=-1<>>0>31){n=~o;m=f[d>>2]|0;j=g+-32|0;h=j>>>5;i=h+1|0;h=j-(h<<5)|0;j=f[m>>2]|0;k=m;e=g;g=c;while(1){q=f[g>>2]|0;r=j&n;f[k>>2]=r;f[k>>2]=q<>2]|r;k=k+4|0;j=f[k>>2]&o|q>>>p;f[k>>2]=j;e=e+-32|0;if(e>>>0<=31)break;else g=g+4|0}c=c+(i<<2)|0;f[b>>2]=c;f[d>>2]=m+(i<<2)}else h=g;if(!h){q=l;r=f[d>>2]|0;f[a>>2]=r;r=a+4|0;q=f[q>>2]|0;f[r>>2]=q;return}i=f[c>>2]&-1>>>(32-h|0);g=(p|0)<(h|0)?p:h;e=f[d>>2]|0;c=f[e>>2]&~(-1<>2]&-1>>>(p-g|0));f[e>>2]=c;f[e>>2]=c|i<>2];c=(f[l>>2]|0)+g|0;e=e+(c>>>5<<2)|0;f[d>>2]=e;f[l>>2]=c&31;c=h-g|0;if((c|0)<=0){q=l;r=f[d>>2]|0;f[a>>2]=r;r=a+4|0;q=f[q>>2]|0;f[r>>2]=q;return}f[e>>2]=f[e>>2]&~(-1>>>(32-c|0))|i>>>g;f[l>>2]=c;q=l;r=f[d>>2]|0;f[a>>2]=r;r=a+4|0;q=f[q>>2]|0;f[r>>2]=q;return}function Re(a,c,d){a=a|0;c=c|0;d=d|0;var e=0,g=0,i=0;switch(b[a+24>>0]|0){case 1:{g=f[c>>2]|0;e=a+48|0;c=f[e>>2]|0;e=f[e+4>>2]|0;i=a+40|0;e=Do(En(f[i>>2]|0,f[i+4>>2]|0,g|0,((g|0)<0)<<31>>31|0)|0,I|0,c|0,e|0)|0;c=d;f[c>>2]=h[(f[f[a>>2]>>2]|0)+e>>0];f[c+4>>2]=0;a=d+8|0;f[a>>2]=0;f[a+4>>2]=0;f[a+8>>2]=0;f[a+12>>2]=0;f[a+16>>2]=0;f[a+20>>2]=0;a=1;return a|0}case 2:{e=f[c>>2]|0;g=a+48|0;i=f[g>>2]|0;g=f[g+4>>2]|0;c=a+40|0;g=(Do(En(f[c>>2]|0,f[c+4>>2]|0,e|0,((e|0)<0)<<31>>31|0)|0,I|0,i|0,g|0)|0)+(f[f[a>>2]>>2]|0)|0;g=h[g>>0]|h[g+1>>0]<<8;i=d;f[i>>2]=g&255;f[i+4>>2]=0;i=d+8|0;f[i>>2]=(g&65535)>>>8&65535;f[i+4>>2]=0;i=d+16|0;f[i>>2]=0;f[i+4>>2]=0;f[i+8>>2]=0;f[i+12>>2]=0;i=1;return i|0}case 3:{i=f[c>>2]|0;e=a+48|0;g=f[e>>2]|0;e=f[e+4>>2]|0;c=a+40|0;a=(Do(En(f[c>>2]|0,f[c+4>>2]|0,i|0,((i|0)<0)<<31>>31|0)|0,I|0,g|0,e|0)|0)+(f[f[a>>2]>>2]|0)|0;e=b[a+1>>0]|0;g=b[a+2>>0]|0;i=d;f[i>>2]=h[a>>0];f[i+4>>2]=0;i=d+8|0;f[i>>2]=e&255;f[i+4>>2]=0;i=d+16|0;f[i>>2]=g&255;f[i+4>>2]=0;i=d+24|0;f[i>>2]=0;f[i+4>>2]=0;i=1;return i|0}case 4:{e=f[c>>2]|0;g=a+48|0;i=f[g>>2]|0;g=f[g+4>>2]|0;c=a+40|0;g=(Do(En(f[c>>2]|0,f[c+4>>2]|0,e|0,((e|0)<0)<<31>>31|0)|0,I|0,i|0,g|0)|0)+(f[f[a>>2]>>2]|0)|0;g=h[g>>0]|h[g+1>>0]<<8|h[g+2>>0]<<16|h[g+3>>0]<<24;i=d;f[i>>2]=g&255;f[i+4>>2]=0;i=d+8|0;f[i>>2]=g>>>8&255;f[i+4>>2]=0;i=d+16|0;f[i>>2]=g>>>16&255;f[i+4>>2]=0;i=d+24|0;f[i>>2]=g>>>24;f[i+4>>2]=0;i=1;return i|0}default:{i=0;return i|0}}return 0}function Se(a,c,d,e){a=a|0;c=c|0;d=d|0;e=e|0;var g=0,h=0,i=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0;r=u;u=u+64|0;q=r+48|0;o=r;h=(f[d>>2]|0)+1|0;g=o;f[g>>2]=0;f[g+4>>2]=0;pk(q,h,o);h=(c|0)>0;g=f[q>>2]|0;if(h){d=0;do{p=g+(f[a+(d<<2)>>2]<<3)|0;n=p;n=Do(f[n>>2]|0,f[n+4>>2]|0,1,0)|0;f[p>>2]=n;f[p+4>>2]=I;d=d+1|0}while((d|0)!=(c|0))}m=o+40|0;p=m;f[p>>2]=0;f[p+4>>2]=0;f[o>>2]=0;f[o+4>>2]=0;f[o+8>>2]=0;f[o+12>>2]=0;f[o+16>>2]=0;f[o+20>>2]=0;p=q+4|0;Rc(o,g,(f[p>>2]|0)-g>>3,e)|0;n=o+16|0;n=Zn(f[n>>2]|0,f[n+4>>2]|0,1)|0;l=(f[e+4>>2]|0)-(f[e>>2]|0)|0;k=m;f[k>>2]=l;f[k+4>>2]=0;n=Do(n|0,I|0,39,0)|0;n=co(n|0,I|0,3)|0;n=Do(n|0,I|0,8,0)|0;l=Do(n|0,I|0,l|0,0)|0;em(e,l,I);l=o+24|0;f[l>>2]=(f[e>>2]|0)+(f[m>>2]|0)+8;m=o+28|0;f[m>>2]=0;n=o+32|0;f[n>>2]=4194304;if(h){d=4194304;do{k=c;c=c+-1|0;h=f[a+(c<<2)>>2]|0;i=f[o>>2]|0;j=f[i+(h<<3)>>2]|0;g=j<<10;if(d>>>0>=g>>>0)do{t=f[l>>2]|0;s=f[m>>2]|0;f[m>>2]=s+1;b[t+s>>0]=d;d=(f[n>>2]|0)>>>8;f[n>>2]=d}while(d>>>0>=g>>>0);d=(((d>>>0)/(j>>>0)|0)<<20)+((d>>>0)%(j>>>0)|0)+(f[i+(h<<3)+4>>2]|0)|0;f[n>>2]=d}while((k|0)>1)}vh(o,e);h=f[o>>2]|0;if(h|0){g=o+4|0;d=f[g>>2]|0;if((d|0)!=(h|0))f[g>>2]=d+(~((d+-8-h|0)>>>3)<<3);Lq(h)}d=f[q>>2]|0;if(!d){u=r;return 1}g=f[p>>2]|0;if((g|0)!=(d|0))f[p>>2]=g+(~((g+-8-d|0)>>>3)<<3);Lq(d);u=r;return 1}function Te(a,c,d,e){a=a|0;c=c|0;d=d|0;e=e|0;var g=0,h=0,i=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0;r=u;u=u+64|0;q=r+48|0;o=r;h=(f[d>>2]|0)+1|0;g=o;f[g>>2]=0;f[g+4>>2]=0;pk(q,h,o);h=(c|0)>0;g=f[q>>2]|0;if(h){d=0;do{p=g+(f[a+(d<<2)>>2]<<3)|0;n=p;n=Do(f[n>>2]|0,f[n+4>>2]|0,1,0)|0;f[p>>2]=n;f[p+4>>2]=I;d=d+1|0}while((d|0)!=(c|0))}m=o+40|0;p=m;f[p>>2]=0;f[p+4>>2]=0;f[o>>2]=0;f[o+4>>2]=0;f[o+8>>2]=0;f[o+12>>2]=0;f[o+16>>2]=0;f[o+20>>2]=0;p=q+4|0;Sc(o,g,(f[p>>2]|0)-g>>3,e)|0;n=o+16|0;n=Zn(f[n>>2]|0,f[n+4>>2]|0,1)|0;l=(f[e+4>>2]|0)-(f[e>>2]|0)|0;k=m;f[k>>2]=l;f[k+4>>2]=0;n=Do(n|0,I|0,39,0)|0;n=co(n|0,I|0,3)|0;n=Do(n|0,I|0,8,0)|0;l=Do(n|0,I|0,l|0,0)|0;em(e,l,I);l=o+24|0;f[l>>2]=(f[e>>2]|0)+(f[m>>2]|0)+8;m=o+28|0;f[m>>2]=0;n=o+32|0;f[n>>2]=4194304;if(h){d=4194304;do{k=c;c=c+-1|0;h=f[a+(c<<2)>>2]|0;i=f[o>>2]|0;j=f[i+(h<<3)>>2]|0;g=j<<10;if(d>>>0>=g>>>0)do{t=f[l>>2]|0;s=f[m>>2]|0;f[m>>2]=s+1;b[t+s>>0]=d;d=(f[n>>2]|0)>>>8;f[n>>2]=d}while(d>>>0>=g>>>0);d=(((d>>>0)/(j>>>0)|0)<<20)+((d>>>0)%(j>>>0)|0)+(f[i+(h<<3)+4>>2]|0)|0;f[n>>2]=d}while((k|0)>1)}vh(o,e);h=f[o>>2]|0;if(h|0){g=o+4|0;d=f[g>>2]|0;if((d|0)!=(h|0))f[g>>2]=d+(~((d+-8-h|0)>>>3)<<3);Lq(h)}d=f[q>>2]|0;if(!d){u=r;return 1}g=f[p>>2]|0;if((g|0)!=(d|0))f[p>>2]=g+(~((g+-8-d|0)>>>3)<<3);Lq(d);u=r;return 1}function Ue(a,c,d,e){a=a|0;c=c|0;d=d|0;e=e|0;var g=0,h=0,i=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0;r=u;u=u+64|0;q=r+48|0;o=r;h=(f[d>>2]|0)+1|0;g=o;f[g>>2]=0;f[g+4>>2]=0;pk(q,h,o);h=(c|0)>0;g=f[q>>2]|0;if(h){d=0;do{p=g+(f[a+(d<<2)>>2]<<3)|0;n=p;n=Do(f[n>>2]|0,f[n+4>>2]|0,1,0)|0;f[p>>2]=n;f[p+4>>2]=I;d=d+1|0}while((d|0)!=(c|0))}m=o+40|0;p=m;f[p>>2]=0;f[p+4>>2]=0;f[o>>2]=0;f[o+4>>2]=0;f[o+8>>2]=0;f[o+12>>2]=0;f[o+16>>2]=0;f[o+20>>2]=0;p=q+4|0;Tc(o,g,(f[p>>2]|0)-g>>3,e)|0;n=o+16|0;n=Zn(f[n>>2]|0,f[n+4>>2]|0,1)|0;l=(f[e+4>>2]|0)-(f[e>>2]|0)|0;k=m;f[k>>2]=l;f[k+4>>2]=0;n=Do(n|0,I|0,39,0)|0;n=co(n|0,I|0,3)|0;n=Do(n|0,I|0,8,0)|0;l=Do(n|0,I|0,l|0,0)|0;em(e,l,I);l=o+24|0;f[l>>2]=(f[e>>2]|0)+(f[m>>2]|0)+8;m=o+28|0;f[m>>2]=0;n=o+32|0;f[n>>2]=4194304;if(h){d=4194304;do{k=c;c=c+-1|0;h=f[a+(c<<2)>>2]|0;i=f[o>>2]|0;j=f[i+(h<<3)>>2]|0;g=j<<10;if(d>>>0>=g>>>0)do{t=f[l>>2]|0;s=f[m>>2]|0;f[m>>2]=s+1;b[t+s>>0]=d;d=(f[n>>2]|0)>>>8;f[n>>2]=d}while(d>>>0>=g>>>0);d=(((d>>>0)/(j>>>0)|0)<<20)+((d>>>0)%(j>>>0)|0)+(f[i+(h<<3)+4>>2]|0)|0;f[n>>2]=d}while((k|0)>1)}vh(o,e);h=f[o>>2]|0;if(h|0){g=o+4|0;d=f[g>>2]|0;if((d|0)!=(h|0))f[g>>2]=d+(~((d+-8-h|0)>>>3)<<3);Lq(h)}d=f[q>>2]|0;if(!d){u=r;return 1}g=f[p>>2]|0;if((g|0)!=(d|0))f[p>>2]=g+(~((g+-8-d|0)>>>3)<<3);Lq(d);u=r;return 1}function Ve(a,c,d,e){a=a|0;c=c|0;d=d|0;e=e|0;var g=0,h=0,i=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0;r=u;u=u+64|0;q=r+48|0;o=r;h=(f[d>>2]|0)+1|0;g=o;f[g>>2]=0;f[g+4>>2]=0;pk(q,h,o);h=(c|0)>0;g=f[q>>2]|0;if(h){d=0;do{p=g+(f[a+(d<<2)>>2]<<3)|0;n=p;n=Do(f[n>>2]|0,f[n+4>>2]|0,1,0)|0;f[p>>2]=n;f[p+4>>2]=I;d=d+1|0}while((d|0)!=(c|0))}m=o+40|0;p=m;f[p>>2]=0;f[p+4>>2]=0;f[o>>2]=0;f[o+4>>2]=0;f[o+8>>2]=0;f[o+12>>2]=0;f[o+16>>2]=0;f[o+20>>2]=0;p=q+4|0;Uc(o,g,(f[p>>2]|0)-g>>3,e)|0;n=o+16|0;n=Zn(f[n>>2]|0,f[n+4>>2]|0,1)|0;l=(f[e+4>>2]|0)-(f[e>>2]|0)|0;k=m;f[k>>2]=l;f[k+4>>2]=0;n=Do(n|0,I|0,39,0)|0;n=co(n|0,I|0,3)|0;n=Do(n|0,I|0,8,0)|0;l=Do(n|0,I|0,l|0,0)|0;em(e,l,I);l=o+24|0;f[l>>2]=(f[e>>2]|0)+(f[m>>2]|0)+8;m=o+28|0;f[m>>2]=0;n=o+32|0;f[n>>2]=4194304;if(h){d=4194304;do{k=c;c=c+-1|0;h=f[a+(c<<2)>>2]|0;i=f[o>>2]|0;j=f[i+(h<<3)>>2]|0;g=j<<10;if(d>>>0>=g>>>0)do{t=f[l>>2]|0;s=f[m>>2]|0;f[m>>2]=s+1;b[t+s>>0]=d;d=(f[n>>2]|0)>>>8;f[n>>2]=d}while(d>>>0>=g>>>0);d=(((d>>>0)/(j>>>0)|0)<<20)+((d>>>0)%(j>>>0)|0)+(f[i+(h<<3)+4>>2]|0)|0;f[n>>2]=d}while((k|0)>1)}vh(o,e);h=f[o>>2]|0;if(h|0){g=o+4|0;d=f[g>>2]|0;if((d|0)!=(h|0))f[g>>2]=d+(~((d+-8-h|0)>>>3)<<3);Lq(h)}d=f[q>>2]|0;if(!d){u=r;return 1}g=f[p>>2]|0;if((g|0)!=(d|0))f[p>>2]=g+(~((g+-8-d|0)>>>3)<<3);Lq(d);u=r;return 1}function We(a,c,d,e){a=a|0;c=c|0;d=d|0;e=e|0;var g=0,h=0,i=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0;r=u;u=u+64|0;q=r+48|0;o=r;h=(f[d>>2]|0)+1|0;g=o;f[g>>2]=0;f[g+4>>2]=0;pk(q,h,o);h=(c|0)>0;g=f[q>>2]|0;if(h){d=0;do{p=g+(f[a+(d<<2)>>2]<<3)|0;n=p;n=Do(f[n>>2]|0,f[n+4>>2]|0,1,0)|0;f[p>>2]=n;f[p+4>>2]=I;d=d+1|0}while((d|0)!=(c|0))}m=o+40|0;p=m;f[p>>2]=0;f[p+4>>2]=0;f[o>>2]=0;f[o+4>>2]=0;f[o+8>>2]=0;f[o+12>>2]=0;f[o+16>>2]=0;f[o+20>>2]=0;p=q+4|0;Vc(o,g,(f[p>>2]|0)-g>>3,e)|0;n=o+16|0;n=Zn(f[n>>2]|0,f[n+4>>2]|0,1)|0;l=(f[e+4>>2]|0)-(f[e>>2]|0)|0;k=m;f[k>>2]=l;f[k+4>>2]=0;n=Do(n|0,I|0,39,0)|0;n=co(n|0,I|0,3)|0;n=Do(n|0,I|0,8,0)|0;l=Do(n|0,I|0,l|0,0)|0;em(e,l,I);l=o+24|0;f[l>>2]=(f[e>>2]|0)+(f[m>>2]|0)+8;m=o+28|0;f[m>>2]=0;n=o+32|0;f[n>>2]=4194304;if(h){d=4194304;do{k=c;c=c+-1|0;h=f[a+(c<<2)>>2]|0;i=f[o>>2]|0;j=f[i+(h<<3)>>2]|0;g=j<<10;if(d>>>0>=g>>>0)do{t=f[l>>2]|0;s=f[m>>2]|0;f[m>>2]=s+1;b[t+s>>0]=d;d=(f[n>>2]|0)>>>8;f[n>>2]=d}while(d>>>0>=g>>>0);d=(((d>>>0)/(j>>>0)|0)<<20)+((d>>>0)%(j>>>0)|0)+(f[i+(h<<3)+4>>2]|0)|0;f[n>>2]=d}while((k|0)>1)}vh(o,e);h=f[o>>2]|0;if(h|0){g=o+4|0;d=f[g>>2]|0;if((d|0)!=(h|0))f[g>>2]=d+(~((d+-8-h|0)>>>3)<<3);Lq(h)}d=f[q>>2]|0;if(!d){u=r;return 1}g=f[p>>2]|0;if((g|0)!=(d|0))f[p>>2]=g+(~((g+-8-d|0)>>>3)<<3);Lq(d);u=r;return 1}function Xe(a,c,d,e){a=a|0;c=c|0;d=d|0;e=e|0;var g=0,h=0,i=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0;r=u;u=u+64|0;q=r+48|0;o=r;h=(f[d>>2]|0)+1|0;g=o;f[g>>2]=0;f[g+4>>2]=0;pk(q,h,o);h=(c|0)>0;g=f[q>>2]|0;if(h){d=0;do{p=g+(f[a+(d<<2)>>2]<<3)|0;n=p;n=Do(f[n>>2]|0,f[n+4>>2]|0,1,0)|0;f[p>>2]=n;f[p+4>>2]=I;d=d+1|0}while((d|0)!=(c|0))}m=o+40|0;p=m;f[p>>2]=0;f[p+4>>2]=0;f[o>>2]=0;f[o+4>>2]=0;f[o+8>>2]=0;f[o+12>>2]=0;f[o+16>>2]=0;f[o+20>>2]=0;p=q+4|0;Wc(o,g,(f[p>>2]|0)-g>>3,e)|0;n=o+16|0;n=Zn(f[n>>2]|0,f[n+4>>2]|0,1)|0;l=(f[e+4>>2]|0)-(f[e>>2]|0)|0;k=m;f[k>>2]=l;f[k+4>>2]=0;n=Do(n|0,I|0,39,0)|0;n=co(n|0,I|0,3)|0;n=Do(n|0,I|0,8,0)|0;l=Do(n|0,I|0,l|0,0)|0;em(e,l,I);l=o+24|0;f[l>>2]=(f[e>>2]|0)+(f[m>>2]|0)+8;m=o+28|0;f[m>>2]=0;n=o+32|0;f[n>>2]=2097152;if(h){d=2097152;do{k=c;c=c+-1|0;h=f[a+(c<<2)>>2]|0;i=f[o>>2]|0;j=f[i+(h<<3)>>2]|0;g=j<<10;if(d>>>0>=g>>>0)do{t=f[l>>2]|0;s=f[m>>2]|0;f[m>>2]=s+1;b[t+s>>0]=d;d=(f[n>>2]|0)>>>8;f[n>>2]=d}while(d>>>0>=g>>>0);d=(((d>>>0)/(j>>>0)|0)<<19)+((d>>>0)%(j>>>0)|0)+(f[i+(h<<3)+4>>2]|0)|0;f[n>>2]=d}while((k|0)>1)}wh(o,e);h=f[o>>2]|0;if(h|0){g=o+4|0;d=f[g>>2]|0;if((d|0)!=(h|0))f[g>>2]=d+(~((d+-8-h|0)>>>3)<<3);Lq(h)}d=f[q>>2]|0;if(!d){u=r;return 1}g=f[p>>2]|0;if((g|0)!=(d|0))f[p>>2]=g+(~((g+-8-d|0)>>>3)<<3);Lq(d);u=r;return 1}function Ye(a,c,d,e){a=a|0;c=c|0;d=d|0;e=e|0;var g=0,h=0,i=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0;r=u;u=u+64|0;q=r+48|0;o=r;h=(f[d>>2]|0)+1|0;g=o;f[g>>2]=0;f[g+4>>2]=0;pk(q,h,o);h=(c|0)>0;g=f[q>>2]|0;if(h){d=0;do{p=g+(f[a+(d<<2)>>2]<<3)|0;n=p;n=Do(f[n>>2]|0,f[n+4>>2]|0,1,0)|0;f[p>>2]=n;f[p+4>>2]=I;d=d+1|0}while((d|0)!=(c|0))}m=o+40|0;p=m;f[p>>2]=0;f[p+4>>2]=0;f[o>>2]=0;f[o+4>>2]=0;f[o+8>>2]=0;f[o+12>>2]=0;f[o+16>>2]=0;f[o+20>>2]=0;p=q+4|0;Xc(o,g,(f[p>>2]|0)-g>>3,e)|0;n=o+16|0;n=Zn(f[n>>2]|0,f[n+4>>2]|0,1)|0;l=(f[e+4>>2]|0)-(f[e>>2]|0)|0;k=m;f[k>>2]=l;f[k+4>>2]=0;n=Do(n|0,I|0,39,0)|0;n=co(n|0,I|0,3)|0;n=Do(n|0,I|0,8,0)|0;l=Do(n|0,I|0,l|0,0)|0;em(e,l,I);l=o+24|0;f[l>>2]=(f[e>>2]|0)+(f[m>>2]|0)+8;m=o+28|0;f[m>>2]=0;n=o+32|0;f[n>>2]=1048576;if(h){d=1048576;do{k=c;c=c+-1|0;h=f[a+(c<<2)>>2]|0;i=f[o>>2]|0;j=f[i+(h<<3)>>2]|0;g=j<<10;if(d>>>0>=g>>>0)do{t=f[l>>2]|0;s=f[m>>2]|0;f[m>>2]=s+1;b[t+s>>0]=d;d=(f[n>>2]|0)>>>8;f[n>>2]=d}while(d>>>0>=g>>>0);d=(((d>>>0)/(j>>>0)|0)<<18)+((d>>>0)%(j>>>0)|0)+(f[i+(h<<3)+4>>2]|0)|0;f[n>>2]=d}while((k|0)>1)}xh(o,e);h=f[o>>2]|0;if(h|0){g=o+4|0;d=f[g>>2]|0;if((d|0)!=(h|0))f[g>>2]=d+(~((d+-8-h|0)>>>3)<<3);Lq(h)}d=f[q>>2]|0;if(!d){u=r;return 1}g=f[p>>2]|0;if((g|0)!=(d|0))f[p>>2]=g+(~((g+-8-d|0)>>>3)<<3);Lq(d);u=r;return 1}function Ze(a,c,d,e){a=a|0;c=c|0;d=d|0;e=e|0;var g=0,h=0,i=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0;r=u;u=u+64|0;q=r+48|0;o=r;h=(f[d>>2]|0)+1|0;g=o;f[g>>2]=0;f[g+4>>2]=0;pk(q,h,o);h=(c|0)>0;g=f[q>>2]|0;if(h){d=0;do{p=g+(f[a+(d<<2)>>2]<<3)|0;n=p;n=Do(f[n>>2]|0,f[n+4>>2]|0,1,0)|0;f[p>>2]=n;f[p+4>>2]=I;d=d+1|0}while((d|0)!=(c|0))}m=o+40|0;p=m;f[p>>2]=0;f[p+4>>2]=0;f[o>>2]=0;f[o+4>>2]=0;f[o+8>>2]=0;f[o+12>>2]=0;f[o+16>>2]=0;f[o+20>>2]=0;p=q+4|0;Yc(o,g,(f[p>>2]|0)-g>>3,e)|0;n=o+16|0;n=Zn(f[n>>2]|0,f[n+4>>2]|0,1)|0;l=(f[e+4>>2]|0)-(f[e>>2]|0)|0;k=m;f[k>>2]=l;f[k+4>>2]=0;n=Do(n|0,I|0,39,0)|0;n=co(n|0,I|0,3)|0;n=Do(n|0,I|0,8,0)|0;l=Do(n|0,I|0,l|0,0)|0;em(e,l,I);l=o+24|0;f[l>>2]=(f[e>>2]|0)+(f[m>>2]|0)+8;m=o+28|0;f[m>>2]=0;n=o+32|0;f[n>>2]=262144;if(h){d=262144;do{k=c;c=c+-1|0;h=f[a+(c<<2)>>2]|0;i=f[o>>2]|0;j=f[i+(h<<3)>>2]|0;g=j<<10;if(d>>>0>=g>>>0)do{t=f[l>>2]|0;s=f[m>>2]|0;f[m>>2]=s+1;b[t+s>>0]=d;d=(f[n>>2]|0)>>>8;f[n>>2]=d}while(d>>>0>=g>>>0);d=(((d>>>0)/(j>>>0)|0)<<16)+((d>>>0)%(j>>>0)|0)+(f[i+(h<<3)+4>>2]|0)|0;f[n>>2]=d}while((k|0)>1)}zh(o,e);h=f[o>>2]|0;if(h|0){g=o+4|0;d=f[g>>2]|0;if((d|0)!=(h|0))f[g>>2]=d+(~((d+-8-h|0)>>>3)<<3);Lq(h)}d=f[q>>2]|0;if(!d){u=r;return 1}g=f[p>>2]|0;if((g|0)!=(d|0))f[p>>2]=g+(~((g+-8-d|0)>>>3)<<3);Lq(d);u=r;return 1}function _e(a,c,d,e){a=a|0;c=c|0;d=d|0;e=e|0;var g=0,h=0,i=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0;r=u;u=u+64|0;q=r+48|0;o=r;h=(f[d>>2]|0)+1|0;g=o;f[g>>2]=0;f[g+4>>2]=0;pk(q,h,o);h=(c|0)>0;g=f[q>>2]|0;if(h){d=0;do{p=g+(f[a+(d<<2)>>2]<<3)|0;n=p;n=Do(f[n>>2]|0,f[n+4>>2]|0,1,0)|0;f[p>>2]=n;f[p+4>>2]=I;d=d+1|0}while((d|0)!=(c|0))}m=o+40|0;p=m;f[p>>2]=0;f[p+4>>2]=0;f[o>>2]=0;f[o+4>>2]=0;f[o+8>>2]=0;f[o+12>>2]=0;f[o+16>>2]=0;f[o+20>>2]=0;p=q+4|0;Zc(o,g,(f[p>>2]|0)-g>>3,e)|0;n=o+16|0;n=Zn(f[n>>2]|0,f[n+4>>2]|0,1)|0;l=(f[e+4>>2]|0)-(f[e>>2]|0)|0;k=m;f[k>>2]=l;f[k+4>>2]=0;n=Do(n|0,I|0,39,0)|0;n=co(n|0,I|0,3)|0;n=Do(n|0,I|0,8,0)|0;l=Do(n|0,I|0,l|0,0)|0;em(e,l,I);l=o+24|0;f[l>>2]=(f[e>>2]|0)+(f[m>>2]|0)+8;m=o+28|0;f[m>>2]=0;n=o+32|0;f[n>>2]=131072;if(h){d=131072;do{k=c;c=c+-1|0;h=f[a+(c<<2)>>2]|0;i=f[o>>2]|0;j=f[i+(h<<3)>>2]|0;g=j<<10;if(d>>>0>=g>>>0)do{t=f[l>>2]|0;s=f[m>>2]|0;f[m>>2]=s+1;b[t+s>>0]=d;d=(f[n>>2]|0)>>>8;f[n>>2]=d}while(d>>>0>=g>>>0);d=(((d>>>0)/(j>>>0)|0)<<15)+((d>>>0)%(j>>>0)|0)+(f[i+(h<<3)+4>>2]|0)|0;f[n>>2]=d}while((k|0)>1)}Ah(o,e);h=f[o>>2]|0;if(h|0){g=o+4|0;d=f[g>>2]|0;if((d|0)!=(h|0))f[g>>2]=d+(~((d+-8-h|0)>>>3)<<3);Lq(h)}d=f[q>>2]|0;if(!d){u=r;return 1}g=f[p>>2]|0;if((g|0)!=(d|0))f[p>>2]=g+(~((g+-8-d|0)>>>3)<<3);Lq(d);u=r;return 1}function $e(a,c,d){a=a|0;c=c|0;d=d|0;var e=0,g=0,i=0;switch(b[a+24>>0]|0){case 1:{g=f[c>>2]|0;c=a+48|0;e=f[c>>2]|0;c=f[c+4>>2]|0;i=a+40|0;a=(Do(En(f[i>>2]|0,f[i+4>>2]|0,g|0,((g|0)<0)<<31>>31|0)|0,I|0,e|0,c|0)|0)+(f[f[a>>2]>>2]|0)|0;a=h[a>>0]|h[a+1>>0]<<8|h[a+2>>0]<<16|h[a+3>>0]<<24;c=d;f[c>>2]=a;f[c+4>>2]=((a|0)<0)<<31>>31;c=0;a=0;break}case 2:{i=f[c>>2]|0;c=a+48|0;g=f[c>>2]|0;c=f[c+4>>2]|0;e=a+40|0;c=(Do(En(f[e>>2]|0,f[e+4>>2]|0,i|0,((i|0)<0)<<31>>31|0)|0,I|0,g|0,c|0)|0)+(f[f[a>>2]>>2]|0)|0;a=c;a=h[a>>0]|h[a+1>>0]<<8|h[a+2>>0]<<16|h[a+3>>0]<<24;c=c+4|0;c=h[c>>0]|h[c+1>>0]<<8|h[c+2>>0]<<16|h[c+3>>0]<<24;g=Ln(0,a|0,32)|0;i=d;f[i>>2]=g;f[i+4>>2]=I;c=Ln(a|0,c|0,32)|0;a=I;break}case 3:{g=f[c>>2]|0;i=a+48|0;c=f[i>>2]|0;i=f[i+4>>2]|0;e=a+40|0;a=(Do(En(f[e>>2]|0,f[e+4>>2]|0,g|0,((g|0)<0)<<31>>31|0)|0,I|0,c|0,i|0)|0)+(f[f[a>>2]>>2]|0)|0;i=h[a>>0]|h[a+1>>0]<<8|h[a+2>>0]<<16|h[a+3>>0]<<24;a=a+4|0;a=h[a>>0]|h[a+1>>0]<<8|h[a+2>>0]<<16|h[a+3>>0]<<24;c=d;f[c>>2]=i;f[c+4>>2]=((i|0)<0)<<31>>31;c=a;a=((a|0)<0)<<31>>31;break}case 4:{g=f[c>>2]|0;i=a+48|0;c=f[i>>2]|0;i=f[i+4>>2]|0;e=a+40|0;a=(Do(En(f[e>>2]|0,f[e+4>>2]|0,g|0,((g|0)<0)<<31>>31|0)|0,I|0,c|0,i|0)|0)+(f[f[a>>2]>>2]|0)|0;i=h[a>>0]|h[a+1>>0]<<8|h[a+2>>0]<<16|h[a+3>>0]<<24;a=a+4|0;a=h[a>>0]|h[a+1>>0]<<8|h[a+2>>0]<<16|h[a+3>>0]<<24;c=d;f[c>>2]=i;f[c+4>>2]=((i|0)<0)<<31>>31;c=a;a=((a|0)<0)<<31>>31;break}default:{i=0;return i|0}}i=d+8|0;f[i>>2]=c;f[i+4>>2]=a;i=1;return i|0} +function af(a,c,d,e){a=a|0;c=c|0;d=d|0;e=e|0;var g=0,h=0,i=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0;r=u;u=u+64|0;q=r+48|0;o=r;h=(f[d>>2]|0)+1|0;g=o;f[g>>2]=0;f[g+4>>2]=0;pk(q,h,o);h=(c|0)>0;g=f[q>>2]|0;if(h){d=0;do{p=g+(f[a+(d<<2)>>2]<<3)|0;n=p;n=Do(f[n>>2]|0,f[n+4>>2]|0,1,0)|0;f[p>>2]=n;f[p+4>>2]=I;d=d+1|0}while((d|0)!=(c|0))}m=o+40|0;p=m;f[p>>2]=0;f[p+4>>2]=0;f[o>>2]=0;f[o+4>>2]=0;f[o+8>>2]=0;f[o+12>>2]=0;f[o+16>>2]=0;f[o+20>>2]=0;p=q+4|0;$c(o,g,(f[p>>2]|0)-g>>3,e)|0;n=o+16|0;n=Zn(f[n>>2]|0,f[n+4>>2]|0,1)|0;l=(f[e+4>>2]|0)-(f[e>>2]|0)|0;k=m;f[k>>2]=l;f[k+4>>2]=0;n=Do(n|0,I|0,39,0)|0;n=co(n|0,I|0,3)|0;n=Do(n|0,I|0,8,0)|0;l=Do(n|0,I|0,l|0,0)|0;em(e,l,I);l=o+24|0;f[l>>2]=(f[e>>2]|0)+(f[m>>2]|0)+8;m=o+28|0;f[m>>2]=0;n=o+32|0;f[n>>2]=32768;if(h){d=32768;do{k=c;c=c+-1|0;h=f[a+(c<<2)>>2]|0;i=f[o>>2]|0;j=f[i+(h<<3)>>2]|0;g=j<<10;if(d>>>0>=g>>>0)do{t=f[l>>2]|0;s=f[m>>2]|0;f[m>>2]=s+1;b[t+s>>0]=d;d=(f[n>>2]|0)>>>8;f[n>>2]=d}while(d>>>0>=g>>>0);d=(((d>>>0)/(j>>>0)|0)<<13)+((d>>>0)%(j>>>0)|0)+(f[i+(h<<3)+4>>2]|0)|0;f[n>>2]=d}while((k|0)>1)}Dh(o,e);h=f[o>>2]|0;if(h|0){g=o+4|0;d=f[g>>2]|0;if((d|0)!=(h|0))f[g>>2]=d+(~((d+-8-h|0)>>>3)<<3);Lq(h)}d=f[q>>2]|0;if(!d){u=r;return 1}g=f[p>>2]|0;if((g|0)!=(d|0))f[p>>2]=g+(~((g+-8-d|0)>>>3)<<3);Lq(d);u=r;return 1}function bf(a,c,d,e){a=a|0;c=c|0;d=d|0;e=e|0;var g=0,h=0,i=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0;r=u;u=u+64|0;q=r+48|0;o=r;h=(f[d>>2]|0)+1|0;g=o;f[g>>2]=0;f[g+4>>2]=0;pk(q,h,o);h=(c|0)>0;g=f[q>>2]|0;if(h){d=0;do{p=g+(f[a+(d<<2)>>2]<<3)|0;n=p;n=Do(f[n>>2]|0,f[n+4>>2]|0,1,0)|0;f[p>>2]=n;f[p+4>>2]=I;d=d+1|0}while((d|0)!=(c|0))}m=o+40|0;p=m;f[p>>2]=0;f[p+4>>2]=0;f[o>>2]=0;f[o+4>>2]=0;f[o+8>>2]=0;f[o+12>>2]=0;f[o+16>>2]=0;f[o+20>>2]=0;p=q+4|0;ad(o,g,(f[p>>2]|0)-g>>3,e)|0;n=o+16|0;n=Zn(f[n>>2]|0,f[n+4>>2]|0,1)|0;l=(f[e+4>>2]|0)-(f[e>>2]|0)|0;k=m;f[k>>2]=l;f[k+4>>2]=0;n=Do(n|0,I|0,39,0)|0;n=co(n|0,I|0,3)|0;n=Do(n|0,I|0,8,0)|0;l=Do(n|0,I|0,l|0,0)|0;em(e,l,I);l=o+24|0;f[l>>2]=(f[e>>2]|0)+(f[m>>2]|0)+8;m=o+28|0;f[m>>2]=0;n=o+32|0;f[n>>2]=16384;if(h){d=16384;do{k=c;c=c+-1|0;h=f[a+(c<<2)>>2]|0;i=f[o>>2]|0;j=f[i+(h<<3)>>2]|0;g=j<<10;if(d>>>0>=g>>>0)do{t=f[l>>2]|0;s=f[m>>2]|0;f[m>>2]=s+1;b[t+s>>0]=d;d=(f[n>>2]|0)>>>8;f[n>>2]=d}while(d>>>0>=g>>>0);d=(((d>>>0)/(j>>>0)|0)<<12)+((d>>>0)%(j>>>0)|0)+(f[i+(h<<3)+4>>2]|0)|0;f[n>>2]=d}while((k|0)>1)}si(o,e);h=f[o>>2]|0;if(h|0){g=o+4|0;d=f[g>>2]|0;if((d|0)!=(h|0))f[g>>2]=d+(~((d+-8-h|0)>>>3)<<3);Lq(h)}d=f[q>>2]|0;if(!d){u=r;return 1}g=f[p>>2]|0;if((g|0)!=(d|0))f[p>>2]=g+(~((g+-8-d|0)>>>3)<<3);Lq(d);u=r;return 1}function cf(a,c,d,e){a=a|0;c=c|0;d=d|0;e=e|0;var g=0,h=0,i=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0;r=u;u=u+64|0;q=r+48|0;o=r;h=(f[d>>2]|0)+1|0;g=o;f[g>>2]=0;f[g+4>>2]=0;pk(q,h,o);h=(c|0)>0;g=f[q>>2]|0;if(h){d=0;do{p=g+(f[a+(d<<2)>>2]<<3)|0;n=p;n=Do(f[n>>2]|0,f[n+4>>2]|0,1,0)|0;f[p>>2]=n;f[p+4>>2]=I;d=d+1|0}while((d|0)!=(c|0))}m=o+40|0;p=m;f[p>>2]=0;f[p+4>>2]=0;f[o>>2]=0;f[o+4>>2]=0;f[o+8>>2]=0;f[o+12>>2]=0;f[o+16>>2]=0;f[o+20>>2]=0;p=q+4|0;bd(o,g,(f[p>>2]|0)-g>>3,e)|0;n=o+16|0;n=Zn(f[n>>2]|0,f[n+4>>2]|0,1)|0;l=(f[e+4>>2]|0)-(f[e>>2]|0)|0;k=m;f[k>>2]=l;f[k+4>>2]=0;n=Do(n|0,I|0,39,0)|0;n=co(n|0,I|0,3)|0;n=Do(n|0,I|0,8,0)|0;l=Do(n|0,I|0,l|0,0)|0;em(e,l,I);l=o+24|0;f[l>>2]=(f[e>>2]|0)+(f[m>>2]|0)+8;m=o+28|0;f[m>>2]=0;n=o+32|0;f[n>>2]=16384;if(h){d=16384;do{k=c;c=c+-1|0;h=f[a+(c<<2)>>2]|0;i=f[o>>2]|0;j=f[i+(h<<3)>>2]|0;g=j<<10;if(d>>>0>=g>>>0)do{t=f[l>>2]|0;s=f[m>>2]|0;f[m>>2]=s+1;b[t+s>>0]=d;d=(f[n>>2]|0)>>>8;f[n>>2]=d}while(d>>>0>=g>>>0);d=(((d>>>0)/(j>>>0)|0)<<12)+((d>>>0)%(j>>>0)|0)+(f[i+(h<<3)+4>>2]|0)|0;f[n>>2]=d}while((k|0)>1)}si(o,e);h=f[o>>2]|0;if(h|0){g=o+4|0;d=f[g>>2]|0;if((d|0)!=(h|0))f[g>>2]=d+(~((d+-8-h|0)>>>3)<<3);Lq(h)}d=f[q>>2]|0;if(!d){u=r;return 1}g=f[p>>2]|0;if((g|0)!=(d|0))f[p>>2]=g+(~((g+-8-d|0)>>>3)<<3);Lq(d);u=r;return 1}function df(a,c,d,e){a=a|0;c=c|0;d=d|0;e=e|0;var g=0,h=0,i=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0;r=u;u=u+64|0;q=r+48|0;o=r;h=(f[d>>2]|0)+1|0;g=o;f[g>>2]=0;f[g+4>>2]=0;pk(q,h,o);h=(c|0)>0;g=f[q>>2]|0;if(h){d=0;do{p=g+(f[a+(d<<2)>>2]<<3)|0;n=p;n=Do(f[n>>2]|0,f[n+4>>2]|0,1,0)|0;f[p>>2]=n;f[p+4>>2]=I;d=d+1|0}while((d|0)!=(c|0))}m=o+40|0;p=m;f[p>>2]=0;f[p+4>>2]=0;f[o>>2]=0;f[o+4>>2]=0;f[o+8>>2]=0;f[o+12>>2]=0;f[o+16>>2]=0;f[o+20>>2]=0;p=q+4|0;cd(o,g,(f[p>>2]|0)-g>>3,e)|0;n=o+16|0;n=Zn(f[n>>2]|0,f[n+4>>2]|0,1)|0;l=(f[e+4>>2]|0)-(f[e>>2]|0)|0;k=m;f[k>>2]=l;f[k+4>>2]=0;n=Do(n|0,I|0,39,0)|0;n=co(n|0,I|0,3)|0;n=Do(n|0,I|0,8,0)|0;l=Do(n|0,I|0,l|0,0)|0;em(e,l,I);l=o+24|0;f[l>>2]=(f[e>>2]|0)+(f[m>>2]|0)+8;m=o+28|0;f[m>>2]=0;n=o+32|0;f[n>>2]=16384;if(h){d=16384;do{k=c;c=c+-1|0;h=f[a+(c<<2)>>2]|0;i=f[o>>2]|0;j=f[i+(h<<3)>>2]|0;g=j<<10;if(d>>>0>=g>>>0)do{t=f[l>>2]|0;s=f[m>>2]|0;f[m>>2]=s+1;b[t+s>>0]=d;d=(f[n>>2]|0)>>>8;f[n>>2]=d}while(d>>>0>=g>>>0);d=(((d>>>0)/(j>>>0)|0)<<12)+((d>>>0)%(j>>>0)|0)+(f[i+(h<<3)+4>>2]|0)|0;f[n>>2]=d}while((k|0)>1)}si(o,e);h=f[o>>2]|0;if(h|0){g=o+4|0;d=f[g>>2]|0;if((d|0)!=(h|0))f[g>>2]=d+(~((d+-8-h|0)>>>3)<<3);Lq(h)}d=f[q>>2]|0;if(!d){u=r;return 1}g=f[p>>2]|0;if((g|0)!=(d|0))f[p>>2]=g+(~((g+-8-d|0)>>>3)<<3);Lq(d);u=r;return 1}function ef(a,c,d,e){a=a|0;c=c|0;d=d|0;e=e|0;var g=0,h=0,i=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0;r=u;u=u+64|0;q=r+48|0;o=r;h=(f[d>>2]|0)+1|0;g=o;f[g>>2]=0;f[g+4>>2]=0;pk(q,h,o);h=(c|0)>0;g=f[q>>2]|0;if(h){d=0;do{p=g+(f[a+(d<<2)>>2]<<3)|0;n=p;n=Do(f[n>>2]|0,f[n+4>>2]|0,1,0)|0;f[p>>2]=n;f[p+4>>2]=I;d=d+1|0}while((d|0)!=(c|0))}m=o+40|0;p=m;f[p>>2]=0;f[p+4>>2]=0;f[o>>2]=0;f[o+4>>2]=0;f[o+8>>2]=0;f[o+12>>2]=0;f[o+16>>2]=0;f[o+20>>2]=0;p=q+4|0;dd(o,g,(f[p>>2]|0)-g>>3,e)|0;n=o+16|0;n=Zn(f[n>>2]|0,f[n+4>>2]|0,1)|0;l=(f[e+4>>2]|0)-(f[e>>2]|0)|0;k=m;f[k>>2]=l;f[k+4>>2]=0;n=Do(n|0,I|0,39,0)|0;n=co(n|0,I|0,3)|0;n=Do(n|0,I|0,8,0)|0;l=Do(n|0,I|0,l|0,0)|0;em(e,l,I);l=o+24|0;f[l>>2]=(f[e>>2]|0)+(f[m>>2]|0)+8;m=o+28|0;f[m>>2]=0;n=o+32|0;f[n>>2]=16384;if(h){d=16384;do{k=c;c=c+-1|0;h=f[a+(c<<2)>>2]|0;i=f[o>>2]|0;j=f[i+(h<<3)>>2]|0;g=j<<10;if(d>>>0>=g>>>0)do{t=f[l>>2]|0;s=f[m>>2]|0;f[m>>2]=s+1;b[t+s>>0]=d;d=(f[n>>2]|0)>>>8;f[n>>2]=d}while(d>>>0>=g>>>0);d=(((d>>>0)/(j>>>0)|0)<<12)+((d>>>0)%(j>>>0)|0)+(f[i+(h<<3)+4>>2]|0)|0;f[n>>2]=d}while((k|0)>1)}si(o,e);h=f[o>>2]|0;if(h|0){g=o+4|0;d=f[g>>2]|0;if((d|0)!=(h|0))f[g>>2]=d+(~((d+-8-h|0)>>>3)<<3);Lq(h)}d=f[q>>2]|0;if(!d){u=r;return 1}g=f[p>>2]|0;if((g|0)!=(d|0))f[p>>2]=g+(~((g+-8-d|0)>>>3)<<3);Lq(d);u=r;return 1}function ff(a,c,d,e){a=a|0;c=c|0;d=d|0;e=e|0;var g=0,h=0,i=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0;r=u;u=u+64|0;q=r+48|0;o=r;h=(f[d>>2]|0)+1|0;g=o;f[g>>2]=0;f[g+4>>2]=0;pk(q,h,o);h=(c|0)>0;g=f[q>>2]|0;if(h){d=0;do{p=g+(f[a+(d<<2)>>2]<<3)|0;n=p;n=Do(f[n>>2]|0,f[n+4>>2]|0,1,0)|0;f[p>>2]=n;f[p+4>>2]=I;d=d+1|0}while((d|0)!=(c|0))}m=o+40|0;p=m;f[p>>2]=0;f[p+4>>2]=0;f[o>>2]=0;f[o+4>>2]=0;f[o+8>>2]=0;f[o+12>>2]=0;f[o+16>>2]=0;f[o+20>>2]=0;p=q+4|0;ed(o,g,(f[p>>2]|0)-g>>3,e)|0;n=o+16|0;n=Zn(f[n>>2]|0,f[n+4>>2]|0,1)|0;l=(f[e+4>>2]|0)-(f[e>>2]|0)|0;k=m;f[k>>2]=l;f[k+4>>2]=0;n=Do(n|0,I|0,39,0)|0;n=co(n|0,I|0,3)|0;n=Do(n|0,I|0,8,0)|0;l=Do(n|0,I|0,l|0,0)|0;em(e,l,I);l=o+24|0;f[l>>2]=(f[e>>2]|0)+(f[m>>2]|0)+8;m=o+28|0;f[m>>2]=0;n=o+32|0;f[n>>2]=16384;if(h){d=16384;do{k=c;c=c+-1|0;h=f[a+(c<<2)>>2]|0;i=f[o>>2]|0;j=f[i+(h<<3)>>2]|0;g=j<<10;if(d>>>0>=g>>>0)do{t=f[l>>2]|0;s=f[m>>2]|0;f[m>>2]=s+1;b[t+s>>0]=d;d=(f[n>>2]|0)>>>8;f[n>>2]=d}while(d>>>0>=g>>>0);d=(((d>>>0)/(j>>>0)|0)<<12)+((d>>>0)%(j>>>0)|0)+(f[i+(h<<3)+4>>2]|0)|0;f[n>>2]=d}while((k|0)>1)}si(o,e);h=f[o>>2]|0;if(h|0){g=o+4|0;d=f[g>>2]|0;if((d|0)!=(h|0))f[g>>2]=d+(~((d+-8-h|0)>>>3)<<3);Lq(h)}d=f[q>>2]|0;if(!d){u=r;return 1}g=f[p>>2]|0;if((g|0)!=(d|0))f[p>>2]=g+(~((g+-8-d|0)>>>3)<<3);Lq(d);u=r;return 1}function gf(a,c,d,e){a=a|0;c=c|0;d=d|0;e=e|0;var g=0,h=0,i=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0;r=u;u=u+64|0;q=r+48|0;o=r;h=(f[d>>2]|0)+1|0;g=o;f[g>>2]=0;f[g+4>>2]=0;pk(q,h,o);h=(c|0)>0;g=f[q>>2]|0;if(h){d=0;do{p=g+(f[a+(d<<2)>>2]<<3)|0;n=p;n=Do(f[n>>2]|0,f[n+4>>2]|0,1,0)|0;f[p>>2]=n;f[p+4>>2]=I;d=d+1|0}while((d|0)!=(c|0))}m=o+40|0;p=m;f[p>>2]=0;f[p+4>>2]=0;f[o>>2]=0;f[o+4>>2]=0;f[o+8>>2]=0;f[o+12>>2]=0;f[o+16>>2]=0;f[o+20>>2]=0;p=q+4|0;fd(o,g,(f[p>>2]|0)-g>>3,e)|0;n=o+16|0;n=Zn(f[n>>2]|0,f[n+4>>2]|0,1)|0;l=(f[e+4>>2]|0)-(f[e>>2]|0)|0;k=m;f[k>>2]=l;f[k+4>>2]=0;n=Do(n|0,I|0,39,0)|0;n=co(n|0,I|0,3)|0;n=Do(n|0,I|0,8,0)|0;l=Do(n|0,I|0,l|0,0)|0;em(e,l,I);l=o+24|0;f[l>>2]=(f[e>>2]|0)+(f[m>>2]|0)+8;m=o+28|0;f[m>>2]=0;n=o+32|0;f[n>>2]=16384;if(h){d=16384;do{k=c;c=c+-1|0;h=f[a+(c<<2)>>2]|0;i=f[o>>2]|0;j=f[i+(h<<3)>>2]|0;g=j<<10;if(d>>>0>=g>>>0)do{t=f[l>>2]|0;s=f[m>>2]|0;f[m>>2]=s+1;b[t+s>>0]=d;d=(f[n>>2]|0)>>>8;f[n>>2]=d}while(d>>>0>=g>>>0);d=(((d>>>0)/(j>>>0)|0)<<12)+((d>>>0)%(j>>>0)|0)+(f[i+(h<<3)+4>>2]|0)|0;f[n>>2]=d}while((k|0)>1)}si(o,e);h=f[o>>2]|0;if(h|0){g=o+4|0;d=f[g>>2]|0;if((d|0)!=(h|0))f[g>>2]=d+(~((d+-8-h|0)>>>3)<<3);Lq(h)}d=f[q>>2]|0;if(!d){u=r;return 1}g=f[p>>2]|0;if((g|0)!=(d|0))f[p>>2]=g+(~((g+-8-d|0)>>>3)<<3);Lq(d);u=r;return 1}function hf(a,c,d,e){a=a|0;c=c|0;d=d|0;e=e|0;var g=0,h=0,i=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0;r=u;u=u+64|0;q=r+48|0;o=r;h=(f[d>>2]|0)+1|0;g=o;f[g>>2]=0;f[g+4>>2]=0;pk(q,h,o);h=(c|0)>0;g=f[q>>2]|0;if(h){d=0;do{p=g+(f[a+(d<<2)>>2]<<3)|0;n=p;n=Do(f[n>>2]|0,f[n+4>>2]|0,1,0)|0;f[p>>2]=n;f[p+4>>2]=I;d=d+1|0}while((d|0)!=(c|0))}m=o+40|0;p=m;f[p>>2]=0;f[p+4>>2]=0;f[o>>2]=0;f[o+4>>2]=0;f[o+8>>2]=0;f[o+12>>2]=0;f[o+16>>2]=0;f[o+20>>2]=0;p=q+4|0;gd(o,g,(f[p>>2]|0)-g>>3,e)|0;n=o+16|0;n=Zn(f[n>>2]|0,f[n+4>>2]|0,1)|0;l=(f[e+4>>2]|0)-(f[e>>2]|0)|0;k=m;f[k>>2]=l;f[k+4>>2]=0;n=Do(n|0,I|0,39,0)|0;n=co(n|0,I|0,3)|0;n=Do(n|0,I|0,8,0)|0;l=Do(n|0,I|0,l|0,0)|0;em(e,l,I);l=o+24|0;f[l>>2]=(f[e>>2]|0)+(f[m>>2]|0)+8;m=o+28|0;f[m>>2]=0;n=o+32|0;f[n>>2]=16384;if(h){d=16384;do{k=c;c=c+-1|0;h=f[a+(c<<2)>>2]|0;i=f[o>>2]|0;j=f[i+(h<<3)>>2]|0;g=j<<10;if(d>>>0>=g>>>0)do{t=f[l>>2]|0;s=f[m>>2]|0;f[m>>2]=s+1;b[t+s>>0]=d;d=(f[n>>2]|0)>>>8;f[n>>2]=d}while(d>>>0>=g>>>0);d=(((d>>>0)/(j>>>0)|0)<<12)+((d>>>0)%(j>>>0)|0)+(f[i+(h<<3)+4>>2]|0)|0;f[n>>2]=d}while((k|0)>1)}si(o,e);h=f[o>>2]|0;if(h|0){g=o+4|0;d=f[g>>2]|0;if((d|0)!=(h|0))f[g>>2]=d+(~((d+-8-h|0)>>>3)<<3);Lq(h)}d=f[q>>2]|0;if(!d){u=r;return 1}g=f[p>>2]|0;if((g|0)!=(d|0))f[p>>2]=g+(~((g+-8-d|0)>>>3)<<3);Lq(d);u=r;return 1}function jf(a,c,d,e){a=a|0;c=c|0;d=d|0;e=e|0;var g=0,h=0,i=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0;r=u;u=u+64|0;q=r+48|0;o=r;h=(f[d>>2]|0)+1|0;g=o;f[g>>2]=0;f[g+4>>2]=0;pk(q,h,o);h=(c|0)>0;g=f[q>>2]|0;if(h){d=0;do{p=g+(f[a+(d<<2)>>2]<<3)|0;n=p;n=Do(f[n>>2]|0,f[n+4>>2]|0,1,0)|0;f[p>>2]=n;f[p+4>>2]=I;d=d+1|0}while((d|0)!=(c|0))}m=o+40|0;p=m;f[p>>2]=0;f[p+4>>2]=0;f[o>>2]=0;f[o+4>>2]=0;f[o+8>>2]=0;f[o+12>>2]=0;f[o+16>>2]=0;f[o+20>>2]=0;p=q+4|0;hd(o,g,(f[p>>2]|0)-g>>3,e)|0;n=o+16|0;n=Zn(f[n>>2]|0,f[n+4>>2]|0,1)|0;l=(f[e+4>>2]|0)-(f[e>>2]|0)|0;k=m;f[k>>2]=l;f[k+4>>2]=0;n=Do(n|0,I|0,39,0)|0;n=co(n|0,I|0,3)|0;n=Do(n|0,I|0,8,0)|0;l=Do(n|0,I|0,l|0,0)|0;em(e,l,I);l=o+24|0;f[l>>2]=(f[e>>2]|0)+(f[m>>2]|0)+8;m=o+28|0;f[m>>2]=0;n=o+32|0;f[n>>2]=16384;if(h){d=16384;do{k=c;c=c+-1|0;h=f[a+(c<<2)>>2]|0;i=f[o>>2]|0;j=f[i+(h<<3)>>2]|0;g=j<<10;if(d>>>0>=g>>>0)do{t=f[l>>2]|0;s=f[m>>2]|0;f[m>>2]=s+1;b[t+s>>0]=d;d=(f[n>>2]|0)>>>8;f[n>>2]=d}while(d>>>0>=g>>>0);d=(((d>>>0)/(j>>>0)|0)<<12)+((d>>>0)%(j>>>0)|0)+(f[i+(h<<3)+4>>2]|0)|0;f[n>>2]=d}while((k|0)>1)}si(o,e);h=f[o>>2]|0;if(h|0){g=o+4|0;d=f[g>>2]|0;if((d|0)!=(h|0))f[g>>2]=d+(~((d+-8-h|0)>>>3)<<3);Lq(h)}d=f[q>>2]|0;if(!d){u=r;return 1}g=f[p>>2]|0;if((g|0)!=(d|0))f[p>>2]=g+(~((g+-8-d|0)>>>3)<<3);Lq(d);u=r;return 1}function kf(a,b,c,d){a=a|0;b=b|0;c=c|0;d=d|0;var e=0,g=0,h=0,i=0,j=0,k=0,l=0,m=0,n=0;m=f[b>>2]|0;k=b+4|0;e=f[k>>2]|0;h=((f[c>>2]|0)-m<<3)+(f[c+4>>2]|0)-e|0;c=m;if((h|0)<=0){b=d+4|0;d=f[d>>2]|0;f[a>>2]=d;a=a+4|0;d=f[b>>2]|0;f[a>>2]=d;return}if(!e){l=d+4|0;e=f[l>>2]|0}else{i=32-e|0;m=(h|0)<(i|0)?h:i;i=-1>>>(i-m|0)&-1<>2];l=d+4|0;c=f[l>>2]|0;j=32-c|0;e=j>>>0>>0?j:m;g=f[d>>2]|0;c=f[g>>2]&~(-1>>>(j-e|0)&-1<>2]=c;j=f[l>>2]|0;n=f[k>>2]|0;f[g>>2]=(j>>>0>n>>>0?i<>>(n-j|0))|c;c=(f[l>>2]|0)+e|0;g=g+(c>>>5<<2)|0;f[d>>2]=g;c=c&31;f[l>>2]=c;j=m-e|0;if((j|0)>0){c=f[g>>2]&~(-1>>>(32-j|0));f[g>>2]=c;f[g>>2]=i>>>((f[k>>2]|0)+e|0)|c;f[l>>2]=j;c=j}n=(f[b>>2]|0)+4|0;f[b>>2]=n;e=c;c=n;h=h-m|0}j=32-e|0;i=-1<>>0>31){g=~i;e=h;do{m=f[c>>2]|0;n=f[d>>2]|0;k=f[n>>2]&g;f[n>>2]=k;f[n>>2]=m<>2]|k;n=n+4|0;f[d>>2]=n;f[n>>2]=f[n>>2]&i|m>>>j;e=e+-32|0;c=(f[b>>2]|0)+4|0;f[b>>2]=c}while(e>>>0>31);h=h&31}if(!h){b=l;n=f[d>>2]|0;f[a>>2]=n;n=a+4|0;a=f[b>>2]|0;f[n>>2]=a;return}i=f[c>>2]&-1>>>(32-h|0);g=(j|0)<(h|0)?j:h;e=f[d>>2]|0;c=f[e>>2]&~(-1<>2]&-1>>>(j-g|0));f[e>>2]=c;f[e>>2]=c|i<>2];c=(f[l>>2]|0)+g|0;e=e+(c>>>5<<2)|0;f[d>>2]=e;f[l>>2]=c&31;c=h-g|0;if((c|0)<=0){b=l;n=f[d>>2]|0;f[a>>2]=n;n=a+4|0;a=f[b>>2]|0;f[n>>2]=a;return}f[e>>2]=f[e>>2]&~(-1>>>(32-c|0))|i>>>g;f[l>>2]=c;b=l;n=f[d>>2]|0;f[a>>2]=n;n=a+4|0;a=f[b>>2]|0;f[n>>2]=a;return}function lf(a,b,c){a=a|0;b=b|0;c=c|0;var d=0,e=0,g=0,h=0,i=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0;s=u;u=u+32|0;p=s+16|0;n=s+12|0;m=s+8|0;o=s+4|0;q=s;tp(a);f[a+16>>2]=0;f[a+20>>2]=0;f[a+12>>2]=a+16;e=a+24|0;tp(e);if((a|0)!=(b|0)){f[m>>2]=f[b>>2];f[o>>2]=b+4;f[n>>2]=f[m>>2];f[p>>2]=f[o>>2];Jc(a,n,p)}d=b+24|0;if((e|0)!=(d|0)){f[m>>2]=f[d>>2];f[o>>2]=b+28;f[n>>2]=f[m>>2];f[p>>2]=f[o>>2];Jc(e,n,p)}f[q>>2]=0;l=c+8|0;k=c+12|0;d=f[k>>2]|0;e=f[l>>2]|0;if((d-e|0)<=0){u=s;return}j=b+16|0;c=0;while(1){if((c|0)<=-1){d=9;break}i=f[(f[e+(c<<2)>>2]|0)+56>>2]|0;b=f[j>>2]|0;if(b){h=j;g=b;a:while(1){b=g;while(1){if((f[b+16>>2]|0)>=(i|0))break;b=f[b+4>>2]|0;if(!b){b=h;break a}}g=f[b>>2]|0;if(!g)break;else h=b}if((b|0)!=(j|0)?(r=b+20|0,(i|0)>=(f[b+16>>2]|0)):0){d=Hd(a,q)|0;if((d|0)!=(r|0)){f[m>>2]=f[r>>2];f[o>>2]=b+24;f[n>>2]=f[m>>2];f[p>>2]=f[o>>2];Jc(d,n,p)}c=f[q>>2]|0;e=f[l>>2]|0;d=f[k>>2]|0}}c=c+1|0;f[q>>2]=c;if((c|0)>=(d-e>>2|0)){d=7;break}}if((d|0)==7){u=s;return}else if((d|0)==9)Fa(17509,17693,63,17731)}function mf(a,c){a=a|0;c=c|0;var d=0,e=0,g=0,h=0,i=0,j=0,k=0,l=0,m=0,n=0;n=u;u=u+16|0;m=n;h=a+4|0;d=f[h>>2]|0;e=f[(f[a>>2]|0)+52>>2]|0;if(!d){if(!(Ma[e&31](a,c,0)|0)){m=0;u=n;return m|0}}else if(!(Ma[e&31](a,c,f[(f[d+4>>2]|0)+68>>2]|0)|0)){m=0;u=n;return m|0}if(!(b[a+28>>0]|0)){m=1;u=n;return m|0}j=f[a+8>>2]|0;i=f[a+32>>2]|0;d=f[j+80>>2]|0;f[m>>2]=0;l=m+4|0;f[l>>2]=0;f[m+8>>2]=0;do if(d)if(d>>>0>1073741823){zp(m);n=Ha(4)|0;qq(n);sa(n|0,1040,102)}else{a=d<<2;g=Fn(a)|0;f[m>>2]=g;k=g+(d<<2)|0;f[m+8>>2]=k;Xj(g|0,0,a|0)|0;f[l>>2]=k;break}else{g=0;k=0}while(0);e=f[c+4>>2]|0;d=f[c>>2]|0;c=d;a:do if((e|0)!=(d|0)){a=e-d>>2;if(b[j+84>>0]|0){d=0;while(1){f[g+(f[c+(d<<2)>>2]<<2)>>2]=d;d=d+1|0;if(d>>>0>=a>>>0)break a}}d=f[j+68>>2]|0;e=0;do{f[g+(f[d+(f[c+(e<<2)>>2]<<2)>>2]<<2)>>2]=e;e=e+1|0}while(e>>>0>>0)}while(0);c=f[(f[(f[h>>2]|0)+4>>2]|0)+68>>2]|0;if((c|0)>0){e=j+68|0;a=(b[i+84>>0]|0)==0;g=f[m>>2]|0;d=i+68|0;if(!(b[j+84>>0]|0)){if(!a)Fa(16608,16627,91,16668);a=f[e>>2]|0;d=f[d>>2]|0;e=0;do{f[d+(e<<2)>>2]=f[g+(f[a+(e<<2)>>2]<<2)>>2];e=e+1|0}while((e|0)<(c|0))}else{if(!a)Fa(16608,16627,91,16668);d=f[d>>2]|0;e=0;do{f[d+(e<<2)>>2]=f[g+(e<<2)>>2];e=e+1|0}while((e|0)<(c|0))}}d=f[m>>2]|0;if(d|0){if((k|0)!=(d|0))f[l>>2]=k+(~((k+-4-d|0)>>>2)<<2);Lq(d)}m=1;u=n;return m|0}function nf(a){a=a|0;var c=0,d=0,e=0,g=0,i=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,v=0,w=0;s=u;u=u+16|0;p=s+4|0;o=s;Bi(a);r=a+32|0;q=a+64|0;n=f[q>>2]|0;n=(Ra[f[(f[n>>2]|0)+40>>2]&127](n)|0)+52|0;n=f[n>>2]|0;n=(((f[n+88>>2]|0)-(f[n+84>>2]|0)|0)/12|0)*3|0;tj(r,n,((n|0)<0)<<31>>31,1)|0;n=a+68|0;c=f[n>>2]|0;e=(f[a+72>>2]|0)-c|0;a:do if((e|0)>0){d=a+48|0;m=a+44|0;e=(e>>>2)+-1|0;while(1){c=f[c+(e<<2)>>2]|0;g=f[5740+(c<<2)>>2]|0;k=d;j=f[k+4>>2]|0;if((j|0)>0|(j|0)==0&(f[k>>2]|0)>>>0>0?(l=f[m>>2]|0,171>>>c&1|0):0){k=l+4|0;i=f[k>>2]|0;j=0;do{t=i>>>3;v=i&7;w=(f[l>>2]|0)+t|0;b[w>>0]=(h[w>>0]|0)&(1<>2]|0)+t|0;b[t>>0]=h[t>>0]|0|(c>>>j&1)<>2]|0)+1|0;f[k>>2]=i;j=j+1|0}while((j|0)!=(g|0))}e=e+-1|0;if((e|0)<=-1)break a;c=f[n>>2]|0}}else d=a+48|0;while(0);Bi(r);c=f[a>>2]|0;w=d;v=f[w+4>>2]|0;if(!((v|0)>0|(v|0)==0&(f[w>>2]|0)>>>0>0)){w=(f[a+4>>2]|0)-c|0;f[o>>2]=f[a+36>>2];f[p>>2]=f[o>>2];vf(r,p,c,c+w|0)|0}g=a+80|0;if(!(f[g>>2]|0)){u=s;return}c=f[q>>2]|0;c=(Ra[f[(f[c>>2]|0)+40>>2]&127](c)|0)+52|0;c=f[c>>2]|0;d=c+8|0;c=c+12|0;if(((f[c>>2]|0)-(f[d>>2]|0)|0)>4)e=0;else{u=s;return}do{Kc((f[g>>2]|0)+(e<<5)|0,r);e=e+1|0}while((e|0)<(((f[c>>2]|0)-(f[d>>2]|0)>>2)+-1|0));u=s;return}function of(a,c,d){a=a|0;c=c|0;d=d|0;var e=0,g=0,i=0;switch(b[a+24>>0]|0){case 1:{g=f[c>>2]|0;c=a+48|0;e=f[c>>2]|0;c=f[c+4>>2]|0;i=a+40|0;a=(Do(En(f[i>>2]|0,f[i+4>>2]|0,g|0,((g|0)<0)<<31>>31|0)|0,I|0,e|0,c|0)|0)+(f[f[a>>2]>>2]|0)|0;f[d>>2]=(h[a>>0]|h[a+1>>0]<<8)<<16>>16;a=d+4|0;f[a>>2]=0;f[a+4>>2]=0;f[a+8>>2]=0;a=1;return a|0}case 2:{e=f[c>>2]|0;i=a+48|0;g=f[i>>2]|0;i=f[i+4>>2]|0;c=a+40|0;i=(Do(En(f[c>>2]|0,f[c+4>>2]|0,e|0,((e|0)<0)<<31>>31|0)|0,I|0,g|0,i|0)|0)+(f[f[a>>2]>>2]|0)|0;i=h[i>>0]|h[i+1>>0]<<8|h[i+2>>0]<<16|h[i+3>>0]<<24;f[d>>2]=i<<16>>16;f[d+4>>2]=i>>16;i=d+8|0;f[i>>2]=0;f[i+4>>2]=0;i=1;return i|0}case 3:{i=f[c>>2]|0;e=a+48|0;g=f[e>>2]|0;e=f[e+4>>2]|0;c=a+40|0;e=(Do(En(f[c>>2]|0,f[c+4>>2]|0,i|0,((i|0)<0)<<31>>31|0)|0,I|0,g|0,e|0)|0)+(f[f[a>>2]>>2]|0)|0;g=e+2|0;g=h[g>>0]|h[g+1>>0]<<8;i=e+4|0;i=h[i>>0]|h[i+1>>0]<<8;f[d>>2]=(h[e>>0]|h[e+1>>0]<<8)<<16>>16;f[d+4>>2]=g<<16>>16;f[d+8>>2]=i<<16>>16;f[d+12>>2]=0;i=1;return i|0}case 4:{e=f[c>>2]|0;i=a+48|0;g=f[i>>2]|0;i=f[i+4>>2]|0;c=a+40|0;i=(Do(En(f[c>>2]|0,f[c+4>>2]|0,e|0,((e|0)<0)<<31>>31|0)|0,I|0,g|0,i|0)|0)+(f[f[a>>2]>>2]|0)|0;g=i;g=h[g>>0]|h[g+1>>0]<<8|h[g+2>>0]<<16|h[g+3>>0]<<24;i=i+4|0;i=h[i>>0]|h[i+1>>0]<<8|h[i+2>>0]<<16|h[i+3>>0]<<24;f[d>>2]=g<<16>>16;f[d+4>>2]=g>>16;e=Zn(i|0,0,16)|0;f[d+8>>2]=e>>16;i=Zn(co(g|0,i|0,48)|0,I|0,16)|0;f[d+12>>2]=i>>16;i=1;return i|0}default:{i=0;return i|0}}return 0}function pf(a,b,c){a=a|0;b=b|0;c=c|0;var d=0,e=0,g=0,h=0,i=0,j=0,k=0,l=0,m=0;m=u;u=u+16|0;k=m;i=f[(f[b+4>>2]|0)+(c<<2)>>2]|0;d=f[b+28>>2]|0;c=f[d+4>>2]|0;if((i|0)<=-1)Fa(17509,17693,63,17731);b=f[c+8>>2]|0;if(((f[c+12>>2]|0)-b>>2|0)<=(i|0))Fa(17639,17693,64,17731);h=f[b+(i<<2)>>2]|0;switch(f[h+28>>2]|0){case 5:case 6:case 3:case 4:case 1:case 2:{l=Fn(40)|0;Co(l);f[a>>2]=l;u=m;return}case 9:{l=7;break}default:{}}if((l|0)==7){e=f[d+48>>2]|0;f[k>>2]=0;f[k+4>>2]=0;f[k+8>>2]=0;Ck(k,17741,17);g=e+16|0;b=f[g>>2]|0;if(b){c=g;a:while(1){d=b;while(1){if((f[d+16>>2]|0)>=(i|0))break;b=f[d+4>>2]|0;if(!b)break a;else d=b}b=f[d>>2]|0;if(!b){c=d;break}else c=d}if(((c|0)!=(g|0)?(j=c+20|0,(i|0)>=(f[c+16>>2]|0)):0)?(Pi(j,k)|0)!=0:0)c=ql(j,k,-1)|0;else l=16}else l=16;if((l|0)==16)c=ql(e,k,-1)|0;Eo(k);if((c|0)>0)if((f[h+56>>2]|0)==1){c=Fn(48)|0;b=c;d=b+48|0;do{f[b>>2]=0;b=b+4|0}while((b|0)<(d|0));Co(c);f[c>>2]=4452;f[c+40>>2]=3152;f[c+44>>2]=-1;l=c;f[a>>2]=l;u=m;return}else{l=Fn(64)|0;$m(l);f[a>>2]=l;u=m;return}}l=Fn(36)|0;bn(l);f[a>>2]=l;u=m;return}function qf(a,c,d){a=a|0;c=c|0;d=d|0;var e=0,g=0,i=0;switch(b[a+24>>0]|0){case 1:{g=f[c>>2]|0;c=a+48|0;e=f[c>>2]|0;c=f[c+4>>2]|0;i=a+40|0;a=(Do(En(f[i>>2]|0,f[i+4>>2]|0,g|0,((g|0)<0)<<31>>31|0)|0,I|0,e|0,c|0)|0)+(f[f[a>>2]>>2]|0)|0;a=(h[a>>0]|h[a+1>>0]<<8)<<16>>16;c=d;f[c>>2]=a;f[c+4>>2]=((a|0)<0)<<31>>31;c=0;a=0;break}case 2:{g=f[c>>2]|0;i=a+48|0;c=f[i>>2]|0;i=f[i+4>>2]|0;e=a+40|0;a=(Do(En(f[e>>2]|0,f[e+4>>2]|0,g|0,((g|0)<0)<<31>>31|0)|0,I|0,c|0,i|0)|0)+(f[f[a>>2]>>2]|0)|0;a=h[a>>0]|h[a+1>>0]<<8|h[a+2>>0]<<16|h[a+3>>0]<<24;i=(a&65535)<<16>>16;c=d;f[c>>2]=i;f[c+4>>2]=((i|0)<0)<<31>>31;a=(a>>>16&65535)<<16>>16;c=a;a=((a|0)<0)<<31>>31;break}case 3:{g=f[c>>2]|0;i=a+48|0;c=f[i>>2]|0;i=f[i+4>>2]|0;e=a+40|0;i=(Do(En(f[e>>2]|0,f[e+4>>2]|0,g|0,((g|0)<0)<<31>>31|0)|0,I|0,c|0,i|0)|0)+(f[f[a>>2]>>2]|0)|0;a=i+2|0;a=h[a>>0]|h[a+1>>0]<<8;i=(h[i>>0]|h[i+1>>0]<<8)<<16>>16;c=d;f[c>>2]=i;f[c+4>>2]=((i|0)<0)<<31>>31;a=a<<16>>16;c=a;a=((a|0)<0)<<31>>31;break}case 4:{g=f[c>>2]|0;i=a+48|0;c=f[i>>2]|0;i=f[i+4>>2]|0;e=a+40|0;i=(Do(En(f[e>>2]|0,f[e+4>>2]|0,g|0,((g|0)<0)<<31>>31|0)|0,I|0,c|0,i|0)|0)+(f[f[a>>2]>>2]|0)|0;c=i;c=h[c>>0]|h[c+1>>0]<<8|h[c+2>>0]<<16|h[c+3>>0]<<24;i=i+4|0;i=Ln(Zn(c|0,h[i>>0]|h[i+1>>0]<<8|h[i+2>>0]<<16|h[i+3>>0]<<24|0,48)|0,I|0,48)|0;a=d;f[a>>2]=i;f[a+4>>2]=I;c=Ln(0,c|0,48)|0;a=I;break}default:{i=0;return i|0}}i=d+8|0;f[i>>2]=c;f[i+4>>2]=a;i=1;return i|0}function rf(a,c,d){a=a|0;c=c|0;d=d|0;var e=0,g=0,i=0;switch(b[a+24>>0]|0){case 1:{g=f[c>>2]|0;c=a+48|0;e=f[c>>2]|0;c=f[c+4>>2]|0;i=a+40|0;a=(Do(En(f[i>>2]|0,f[i+4>>2]|0,g|0,((g|0)<0)<<31>>31|0)|0,I|0,e|0,c|0)|0)+(f[f[a>>2]>>2]|0)|0;f[d>>2]=(h[a>>0]|h[a+1>>0]<<8)&65535;a=d+4|0;f[a>>2]=0;f[a+4>>2]=0;f[a+8>>2]=0;a=1;return a|0}case 2:{e=f[c>>2]|0;i=a+48|0;g=f[i>>2]|0;i=f[i+4>>2]|0;c=a+40|0;i=(Do(En(f[c>>2]|0,f[c+4>>2]|0,e|0,((e|0)<0)<<31>>31|0)|0,I|0,g|0,i|0)|0)+(f[f[a>>2]>>2]|0)|0;i=h[i>>0]|h[i+1>>0]<<8|h[i+2>>0]<<16|h[i+3>>0]<<24;f[d>>2]=i&65535;f[d+4>>2]=i>>>16;i=d+8|0;f[i>>2]=0;f[i+4>>2]=0;i=1;return i|0}case 3:{i=f[c>>2]|0;e=a+48|0;g=f[e>>2]|0;e=f[e+4>>2]|0;c=a+40|0;e=(Do(En(f[c>>2]|0,f[c+4>>2]|0,i|0,((i|0)<0)<<31>>31|0)|0,I|0,g|0,e|0)|0)+(f[f[a>>2]>>2]|0)|0;g=e+2|0;g=h[g>>0]|h[g+1>>0]<<8;i=e+4|0;i=h[i>>0]|h[i+1>>0]<<8;f[d>>2]=(h[e>>0]|h[e+1>>0]<<8)&65535;f[d+4>>2]=g&65535;f[d+8>>2]=i&65535;f[d+12>>2]=0;i=1;return i|0}case 4:{e=f[c>>2]|0;i=a+48|0;g=f[i>>2]|0;i=f[i+4>>2]|0;c=a+40|0;i=(Do(En(f[c>>2]|0,f[c+4>>2]|0,e|0,((e|0)<0)<<31>>31|0)|0,I|0,g|0,i|0)|0)+(f[f[a>>2]>>2]|0)|0;g=i;g=h[g>>0]|h[g+1>>0]<<8|h[g+2>>0]<<16|h[g+3>>0]<<24;i=i+4|0;i=h[i>>0]|h[i+1>>0]<<8|h[i+2>>0]<<16|h[i+3>>0]<<24;f[d>>2]=g&65535;e=co(g|0,i|0,16)|0;f[d+4>>2]=e&65535;f[d+8>>2]=i&65535;i=co(g|0,i|0,48)|0;f[d+12>>2]=i;i=1;return i|0}default:{i=0;return i|0}}return 0}function sf(a,b,c,d){a=a|0;b=b|0;c=c|0;d=d|0;var e=0,g=0,h=0,i=0,j=0,k=0,l=0,m=0;m=b+16|0;h=f[m>>2]|0;l=c+4|0;k=(f[l>>2]|0)-h|0;e=c;f[e>>2]=(f[c>>2]|0)-h;f[e+4>>2]=k;e=(f[d>>2]|0)-h|0;k=d+4|0;h=(f[k>>2]|0)-h|0;g=d;f[g>>2]=e;f[g+4>>2]=h;g=f[m>>2]|0;if((g|0)<(e|0))Fa(11437,10827,250,11460);if((g|0)<(h|0))Fa(11472,10827,251,11460);i=0-g|0;if((e|0)<(i|0))Fa(11495,10827,252,11460);if((h|0)<(i|0))Fa(11519,10827,253,11460);if((((h|0)>-1?h:0-h|0)+((e|0)>-1?e:0-e|0)|0)>(g|0)){e=b+4|0;Qi(e,c,l);Qi(e,d,k);e=f[d>>2]|0}if(!e){g=f[k>>2]|0;if(!g)g=0;else j=14}else{g=f[k>>2]|0;if(!((e|0)<0&(g|0)<1))j=14}if((j|0)==14){if(!e)h=(g|0)==0?0:(g|0)>0?3:1;else h=(e|0)>0?(g>>31)+2|0:(g|0)<1?0:3;e=f[c>>2]|0;g=f[l>>2]|0;switch(h|0){case 1:{j=c;f[j>>2]=g;f[j+4>>2]=0-e;e=f[k>>2]|0;g=0-(f[d>>2]|0)|0;break}case 2:{j=c;f[j>>2]=0-e;f[j+4>>2]=0-g;e=0-(f[d>>2]|0)|0;g=0-(f[k>>2]|0)|0;break}case 3:{j=c;f[j>>2]=0-g;f[j+4>>2]=e;e=0-(f[k>>2]|0)|0;g=f[d>>2]|0;break}default:{j=c;f[j>>2]=e;f[j+4>>2]=g;e=f[d>>2]|0;g=f[k>>2]|0}}f[d>>2]=e;f[d+4>>2]=g}e=(f[c>>2]|0)-e|0;f[a>>2]=e;i=(f[l>>2]|0)-g|0;h=a+4|0;f[h>>2]=i;g=f[m>>2]<<1;if((g|0)<(e|0))Fa(11543,10827,313,11577);if((e|0)<0)e=(f[b+8>>2]|0)+e|0;f[a>>2]=e;if((g|0)<(i|0))Fa(11543,10827,313,11577);if((i|0)>=0){b=i;f[h>>2]=b;return}b=(f[b+8>>2]|0)+i|0;f[h>>2]=b;return}function tf(a,b){a=a|0;b=b|0;var c=0,d=Ka,e=Ka,g=0,h=0,i=0,j=0,k=0,l=0,m=0,o=0,p=Ka;l=f[b>>2]|0;j=a+4|0;i=f[j>>2]|0;k=(i|0)==0;a:do if(!k){g=i+-1|0;c=(g&i|0)==0;if(c)h=g&l;else h=(l>>>0)%(i>>>0)|0;b=f[(f[a>>2]|0)+(h<<2)>>2]|0;if(b)if(c){do{b=f[b>>2]|0;if(!b){b=h;break a}if((f[b+4>>2]&g|0)!=(h|0)){b=h;break a}}while((f[b+8>>2]|0)!=(l|0));a=b+12|0;return a|0}else{do{b=f[b>>2]|0;if(!b){b=h;break a}if((((f[b+4>>2]|0)>>>0)%(i>>>0)|0|0)!=(h|0)){b=h;break a}}while((f[b+8>>2]|0)!=(l|0));a=b+12|0;return a|0}else b=h}else b=0;while(0);m=Fn(16)|0;f[m+8>>2]=l;f[m+12>>2]=0;f[m+4>>2]=l;f[m>>2]=0;h=a+12|0;e=$(((f[h>>2]|0)+1|0)>>>0);p=$(i>>>0);d=$(n[a+16>>2]);do if(k|e>$(p*d)){b=(i>>>0<3|(i+-1&i|0)!=0)&1|i<<1;c=~~$(W($(e/d)))>>>0;vj(a,b>>>0>>0?c:b);b=f[j>>2]|0;c=b+-1|0;if(!(c&b)){g=b;b=c&l;break}else{g=b;b=(l>>>0)%(b>>>0)|0;break}}else g=i;while(0);c=(f[a>>2]|0)+(b<<2)|0;b=f[c>>2]|0;if(!b){b=a+8|0;f[m>>2]=f[b>>2];f[b>>2]=m;f[c>>2]=b;b=f[m>>2]|0;if(b|0){b=f[b+4>>2]|0;c=g+-1|0;if(!(c&g))b=b&c;else b=(b>>>0)%(g>>>0)|0;b=(f[a>>2]|0)+(b<<2)|0;o=24}}else{f[m>>2]=f[b>>2];o=24}if((o|0)==24)f[b>>2]=m;f[h>>2]=(f[h>>2]|0)+1;a=m;a=a+12|0;return a|0}function uf(a,b,c){a=a|0;b=b|0;c=c|0;var d=0,e=0,g=0,h=0,i=0,j=0,k=0,l=0,m=0;h=f[b>>2]|0;l=a+12|0;i=(h|0)<0;do if(!i)if(!((h>>>0)%3|0)){d=h+2|0;break}else{d=h+-1|0;break}else d=h;while(0);a:do if((d|0)<0)m=7;else{g=f[(f[l>>2]|0)+12>>2]|0;while(1){e=f[g+(d<<2)>>2]|0;if((e|0)==-1073741824){e=0;break a}b=e+1|0;if((e|0)<0)d=e;else d=((b|0)%3|0|0)==0?e+-2|0:b;if((d|0)<0){m=7;break}}}while(0);if((m|0)==7){b=(d|0)==-1073741824;do{}while(!b);e=1;d=-1073741824}if(i)k=-1073741824;else k=f[(f[f[l>>2]>>2]|0)+(h<<2)>>2]|0;if(c){b=(f[a+84>>2]|0)+(k>>>5<<2)|0;f[b>>2]=f[b>>2]|1<<(k&31);b=1}else b=0;i=f[(f[a+152>>2]|0)+(k<<2)>>2]|0;c=(f[a+140>>2]|0)+(i>>>5<<2)|0;f[c>>2]=f[c>>2]|1<<(i&31);if(!e?(j=(((d>>>0)%3|0|0)==0?2:-1)+d|0,(j|0)>=0):0)e=f[(f[f[l>>2]>>2]|0)+(j<<2)>>2]|0;else e=-1073741824;if((e|0)==(k|0)){m=b;return m|0}i=a+84|0;do{a=(f[i>>2]|0)+(e>>>5<<2)|0;f[a>>2]=f[a>>2]|1<<(e&31);b=b+1|0;e=d+1|0;if((d|0)>=0)d=((e|0)%3|0|0)==0?d+-2|0:e;b:do if((d|0)>=0){h=f[l>>2]|0;g=f[h+12>>2]|0;while(1){e=f[g+(d<<2)>>2]|0;if((e|0)==-1073741824)break;d=e+1|0;if((e|0)<0)d=e;else d=((d|0)%3|0|0)==0?e+-2|0:d;if((d|0)<0){m=26;break b}}e=(((d>>>0)%3|0|0)==0?2:-1)+d|0;if((e|0)<0)e=-1073741824;else e=f[(f[h>>2]|0)+(e<<2)>>2]|0}else m=26;while(0);if((m|0)==26){m=0;d=(d|0)==-1073741824;do{}while(!d);e=-1073741824;d=-1073741824}}while((e|0)!=(k|0));return b|0}function vf(a,c,d,e){a=a|0;c=c|0;d=d|0;e=e|0;var g=0,h=0,i=0,j=0,k=0,l=0,m=0,n=0,o=0;k=f[a>>2]|0;i=k;c=k+((f[c>>2]|0)-i)|0;l=e-d|0;if((l|0)<=0){o=c;return o|0}n=a+8|0;g=f[n>>2]|0;o=a+4|0;m=f[o>>2]|0;h=m;if((l|0)<=(g-h|0)){i=h-c|0;if((l|0)>(i|0)){j=d+i|0;if((j|0)==(e|0))g=m;else{g=m;h=j;do{b[g>>0]=b[h>>0]|0;h=h+1|0;g=(f[o>>2]|0)+1|0;f[o>>2]=g}while((h|0)!=(e|0))}if((i|0)>0)e=j;else{o=c;return o|0}}else g=m;j=g-(c+l)|0;h=c+j|0;if(h>>>0>>0){i=g;do{b[i>>0]=b[h>>0]|0;h=h+1|0;i=(f[o>>2]|0)+1|0;f[o>>2]=i}while((h|0)!=(m|0))}if(j|0)Om(g+(0-j)|0,c|0,j|0)|0;if((e|0)==(d|0)){o=c;return o|0}else g=c;while(1){b[g>>0]=b[d>>0]|0;d=d+1|0;if((d|0)==(e|0))break;else g=g+1|0}return c|0}h=h-i+l|0;if((h|0)<0){zp(a);k=f[a>>2]|0;j=k;g=f[n>>2]|0}else j=i;m=g-j|0;l=m<<1;h=m>>>0<1073741823?(l>>>0>>0?h:l):2147483647;l=c;if(!h)i=0;else i=Fn(h)|0;m=i+(l-j)|0;g=m;j=i+h|0;if((d|0)==(e|0)){d=k;h=g}else{h=m;do{b[h>>0]=b[d>>0]|0;h=g+1|0;g=h;d=d+1|0}while((d|0)!=(e|0));d=f[a>>2]|0;h=g}g=l-d|0;i=m+(0-g)|0;if((g|0)>0)Mh(i|0,d|0,g|0)|0;g=(f[o>>2]|0)-l|0;if((g|0)>0){l=h;Mh(l|0,c|0,g|0)|0;d=f[a>>2]|0;c=l+g|0}else c=h;f[a>>2]=i;f[o>>2]=c;f[n>>2]=j;if(!d){o=m;return o|0}Lq(d);o=m;return o|0}function wf(a,c){a=a|0;c=c|0;var d=0,e=0,g=0,h=0,i=0,j=0,k=0,l=0,m=0,n=0,o=0;n=u;u=u+48|0;k=n+8|0;l=n+4|0;m=n;b[m>>0]=f[a+92>>2];j=c+16|0;i=j;h=f[i+4>>2]|0;if(!((h|0)>0|(h|0)==0&(f[i>>2]|0)>>>0>0)){f[l>>2]=f[c+4>>2];f[k>>2]=f[l>>2];vf(c,k,m,m+1|0)|0}h=0;do{i=h;h=h+1|0;d=a+44+(i*12|0)+4|0;Ri(f[d>>2]|0,c)|0;if(f[d>>2]|0){Hn(k);Jl(k);d=(f[d>>2]|0)-h|0;if((d|0)>-1){g=a+44+(i*12|0)|0;do{e=0;while(1){o=e+d|0;Uj(k,(f[(f[g>>2]|0)+(o>>>5<<2)>>2]&1<<(o&31)|0)!=0);if((e|0)<(i|0))e=e+1|0;else break}d=d-h|0}while((d|0)>-1)}Kc(k,c);jk(k)}}while((h|0)<4);f[m>>2]=f[a+16>>2];e=j;d=f[e>>2]|0;e=f[e+4>>2]|0;if(!((e|0)>0|(e|0)==0&d>>>0>0)){f[l>>2]=f[c+4>>2];f[k>>2]=f[l>>2];vf(c,k,m,m+4|0)|0;d=j;e=f[d+4>>2]|0;d=f[d>>2]|0}f[m>>2]=f[a+24>>2];if((e|0)>0|(e|0)==0&d>>>0>0){u=n;return 1}f[l>>2]=f[c+4>>2];f[k>>2]=f[l>>2];vf(c,k,m,m+4|0)|0;u=n;return 1}function xf(a,c){a=a|0;c=c|0;var d=0,e=0,g=0,h=0,i=0;i=(c|0)==(a|0);b[c+12>>0]=i&1;if(i)return;while(1){h=f[c+8>>2]|0;g=h+12|0;if(b[g>>0]|0){e=23;break}i=h+8|0;d=f[i>>2]|0;e=f[d>>2]|0;if((e|0)==(h|0)){e=f[d+4>>2]|0;if(!e){e=7;break}e=e+12|0;if(!(b[e>>0]|0))c=e;else{e=7;break}}else{if(!e){e=16;break}e=e+12|0;if(!(b[e>>0]|0))c=e;else{e=16;break}}b[g>>0]=1;i=(d|0)==(a|0);b[d+12>>0]=i&1;b[c>>0]=1;if(i){e=23;break}else c=d}if((e|0)==7){if((f[h>>2]|0)==(c|0))c=h;else{a=h+4|0;c=f[a>>2]|0;e=f[c>>2]|0;f[a>>2]=e;if(e){f[e+8>>2]=h;d=f[i>>2]|0}a=c+8|0;f[a>>2]=d;d=f[i>>2]|0;f[((f[d>>2]|0)==(h|0)?d:d+4|0)>>2]=c;f[c>>2]=h;f[i>>2]=c;d=f[a>>2]|0}b[c+12>>0]=1;b[d+12>>0]=0;c=f[d>>2]|0;g=c+4|0;e=f[g>>2]|0;f[d>>2]=e;if(e|0)f[e+8>>2]=d;i=d+8|0;f[c+8>>2]=f[i>>2];h=f[i>>2]|0;f[((f[h>>2]|0)==(d|0)?h:h+4|0)>>2]=c;f[g>>2]=d;f[i>>2]=c;return}else if((e|0)==16){if((f[h>>2]|0)==(c|0)){c=f[h>>2]|0;g=c+4|0;e=f[g>>2]|0;f[h>>2]=e;if(e){f[e+8>>2]=h;d=f[i>>2]|0}e=c+8|0;f[e>>2]=d;a=f[i>>2]|0;f[((f[a>>2]|0)==(h|0)?a:a+4|0)>>2]=c;f[g>>2]=h;f[i>>2]=c;e=f[e>>2]|0}else{c=h;e=d}b[c+12>>0]=1;b[e+12>>0]=0;i=e+4|0;c=f[i>>2]|0;d=f[c>>2]|0;f[i>>2]=d;if(d|0)f[d+8>>2]=e;i=e+8|0;f[c+8>>2]=f[i>>2];h=f[i>>2]|0;f[((f[h>>2]|0)==(e|0)?h:h+4|0)>>2]=c;f[c>>2]=e;f[i>>2]=c;return}else if((e|0)==23)return}function yf(a,c,d){a=a|0;c=c|0;d=d|0;var e=0,g=0,i=0;switch(b[a+24>>0]|0){case 1:{g=f[c>>2]|0;e=a+48|0;c=f[e>>2]|0;e=f[e+4>>2]|0;i=a+40|0;e=Do(En(f[i>>2]|0,f[i+4>>2]|0,g|0,((g|0)<0)<<31>>31|0)|0,I|0,c|0,e|0)|0;c=d;f[c>>2]=h[(f[f[a>>2]>>2]|0)+e>>0];f[c+4>>2]=0;a=d+8|0;f[a>>2]=0;f[a+4>>2]=0;f[a+8>>2]=0;f[a+12>>2]=0;a=1;return a|0}case 2:{e=f[c>>2]|0;g=a+48|0;i=f[g>>2]|0;g=f[g+4>>2]|0;c=a+40|0;g=(Do(En(f[c>>2]|0,f[c+4>>2]|0,e|0,((e|0)<0)<<31>>31|0)|0,I|0,i|0,g|0)|0)+(f[f[a>>2]>>2]|0)|0;g=h[g>>0]|h[g+1>>0]<<8;i=d;f[i>>2]=g&255;f[i+4>>2]=0;i=d+8|0;f[i>>2]=(g&65535)>>>8&65535;f[i+4>>2]=0;i=d+16|0;f[i>>2]=0;f[i+4>>2]=0;i=1;return i|0}case 3:{i=f[c>>2]|0;e=a+48|0;g=f[e>>2]|0;e=f[e+4>>2]|0;c=a+40|0;a=(Do(En(f[c>>2]|0,f[c+4>>2]|0,i|0,((i|0)<0)<<31>>31|0)|0,I|0,g|0,e|0)|0)+(f[f[a>>2]>>2]|0)|0;e=b[a+1>>0]|0;g=b[a+2>>0]|0;i=d;f[i>>2]=h[a>>0];f[i+4>>2]=0;i=d+8|0;f[i>>2]=e&255;f[i+4>>2]=0;i=d+16|0;f[i>>2]=g&255;f[i+4>>2]=0;i=1;return i|0}case 4:{e=f[c>>2]|0;g=a+48|0;i=f[g>>2]|0;g=f[g+4>>2]|0;c=a+40|0;g=(Do(En(f[c>>2]|0,f[c+4>>2]|0,e|0,((e|0)<0)<<31>>31|0)|0,I|0,i|0,g|0)|0)+(f[f[a>>2]>>2]|0)|0;g=h[g>>0]|h[g+1>>0]<<8|h[g+2>>0]<<16|h[g+3>>0]<<24;i=d;f[i>>2]=g&255;f[i+4>>2]=0;i=d+8|0;f[i>>2]=g>>>8&255;f[i+4>>2]=0;i=d+16|0;f[i>>2]=g>>>16&255;f[i+4>>2]=0;i=1;return i|0}default:{i=0;return i|0}}return 0}function zf(a,c){a=a|0;c=c|0;var d=0,e=0,g=0,h=0,i=0,j=0,k=0,l=0,m=0,n=0,o=0;n=u;u=u+48|0;k=n+8|0;l=n+4|0;m=n;b[m>>0]=f[a+108>>2];j=c+16|0;i=j;h=f[i+4>>2]|0;if(!((h|0)>0|(h|0)==0&(f[i>>2]|0)>>>0>0)){f[l>>2]=f[c+4>>2];f[k>>2]=f[l>>2];vf(c,k,m,m+1|0)|0}h=0;do{i=h;h=h+1|0;d=a+60+(i*12|0)+4|0;Ri(f[d>>2]|0,c)|0;if(f[d>>2]|0){Hn(k);Jl(k);d=(f[d>>2]|0)-h|0;if((d|0)>-1){g=a+60+(i*12|0)|0;do{e=0;while(1){o=e+d|0;Uj(k,(f[(f[g>>2]|0)+(o>>>5<<2)>>2]&1<<(o&31)|0)!=0);if((e|0)<(i|0))e=e+1|0;else break}d=d-h|0}while((d|0)>-1)}Kc(k,c);jk(k)}}while((h|0)<4);f[m>>2]=f[a+12>>2];e=j;d=f[e>>2]|0;e=f[e+4>>2]|0;if(!((e|0)>0|(e|0)==0&d>>>0>0)){f[l>>2]=f[c+4>>2];f[k>>2]=f[l>>2];vf(c,k,m,m+4|0)|0;d=j;e=f[d+4>>2]|0;d=f[d>>2]|0}f[m>>2]=f[a+16>>2];if((e|0)>0|(e|0)==0&d>>>0>0){u=n;return 1}f[l>>2]=f[c+4>>2];f[k>>2]=f[l>>2];vf(c,k,m,m+4|0)|0;u=n;return 1}function Af(a){a=a|0;var b=0,c=0,d=0,e=0,g=0,h=0,i=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0;s=u;u=u+16|0;q=s+4|0;k=s;f[q>>2]=0;r=q+4|0;f[r>>2]=0;f[q+8>>2]=0;m=a+52|0;b=f[m>>2]|0;j=(f[b+88>>2]|0)-(f[b+84>>2]|0)|0;n=(j|0)/12|0;do if((j|0)>0){j=q+8|0;c=f[b+84>>2]|0;if(((f[b+88>>2]|0)-c|0)>0){d=c;l=0;i=0}else Fa(16554,16525,64,16549);while(1){g=f[d+(l*12|0)>>2]|0;c=g-i|0;c=((c|0)>-1?c:0-c|0)<<1|c>>>31;f[k>>2]=c;b=f[r>>2]|0;e=f[j>>2]|0;if((b|0)==(e|0)){Bj(q,k);c=f[r>>2]|0;e=f[j>>2]|0}else{f[b>>2]=c;c=b+4|0;f[r>>2]=c}h=f[d+(l*12|0)+4>>2]|0;b=h-g|0;b=((b|0)>-1?b:0-b|0)<<1|b>>>31;f[k>>2]=b;if((c|0)==(e|0)){Bj(q,k);c=f[r>>2]|0;e=f[j>>2]|0}else{f[c>>2]=b;c=c+4|0;f[r>>2]=c}i=f[d+(l*12|0)+8>>2]|0;b=i-h|0;b=((b|0)>-1?b:0-b|0)<<1|b>>>31;f[k>>2]=b;if((c|0)==(e|0))Bj(q,k);else{f[c>>2]=b;f[r>>2]=c+4}l=l+1|0;if((l|0)>=(n|0)){b=3;break}h=f[m>>2]|0;d=f[h+84>>2]|0;if((l|0)>=(((f[h+88>>2]|0)-d|0)/12|0|0)){b=5;break}}if((b|0)==3){o=f[q>>2]|0;p=f[r>>2]|0;break}else if((b|0)==5)Fa(16554,16525,64,16549)}else{o=0;p=0}while(0);Nc(o,p-o>>2,1,f[a+44>>2]|0)|0;c=f[q>>2]|0;if(!c){u=s;return 1}b=f[r>>2]|0;if((b|0)!=(c|0))f[r>>2]=b+(~((b+-4-c|0)>>>2)<<2);Lq(c);u=s;return 1}function Bf(a,b,c){a=a|0;b=b|0;c=c|0;var d=0,e=0,g=0,h=0,i=0;e=f[b>>2]|0;b=e*3|0;h=a+12|0;e=(e|0)<0;if(e)d=b;else d=f[(f[(f[h>>2]|0)+12>>2]|0)+(b<<2)>>2]|0;if((d|0)==-1073741824){i=0;h=b;f[c>>2]=h;return i|0}if(e)d=-1073741824;else d=f[(f[f[h>>2]>>2]|0)+(b<<2)>>2]|0;g=f[a+152>>2]|0;if((f[g+(d<<2)>>2]|0)==-1){d=b+1|0;if(!e)b=((d|0)%3|0|0)==0?b+-2|0:d;a=(b|0)<0;if(a)d=b;else d=f[(f[(f[h>>2]|0)+12>>2]|0)+(b<<2)>>2]|0;if((d|0)==-1073741824){i=0;h=b;f[c>>2]=h;return i|0}if(a)d=-1073741824;else d=f[(f[f[h>>2]>>2]|0)+(b<<2)>>2]|0;if((f[g+(d<<2)>>2]|0)==-1){d=b+1|0;if(!a){b=((d|0)%3|0|0)==0?b+-2|0:d;if((b|0)<0){d=b;a=1}else{d=b;a=0;b=f[(f[(f[h>>2]|0)+12>>2]|0)+(b<<2)>>2]|0}}else{d=b;a=1}if((b|0)==-1073741824){i=0;h=d;f[c>>2]=h;return i|0}if(a)b=-1073741824;else b=f[(f[f[h>>2]>>2]|0)+(d<<2)>>2]|0;if((f[g+(b<<2)>>2]|0)==-1){b=d+1|0;if(a){i=1;h=d;f[c>>2]=h;return i|0}i=1;h=((b|0)%3|0|0)==0?d+-2|0:b;f[c>>2]=h;return i|0}else b=d}}if((b|0)<=-1){i=0;h=b;f[c>>2]=h;return i|0}while(1){d=(((b>>>0)%3|0|0)==0?2:-1)+b|0;if((d|0)<0)break;d=f[(f[(f[h>>2]|0)+12>>2]|0)+(d<<2)>>2]|0;if((d|0)<0){i=11;break}d=d+(((d>>>0)%3|0|0)==0?2:-1)|0;if((d|0)>-1)b=d;else{i=11;break}}if((i|0)==11?(b|0)<0:0){i=0;h=b;f[c>>2]=h;return i|0}if(!((b>>>0)%3|0)){i=0;h=b+2|0;f[c>>2]=h;return i|0}else{i=0;h=b+-1|0;f[c>>2]=h;return i|0}return 0}function Cf(a){a=a|0;var b=0,c=0,d=0;f[a>>2]=5896;sj(a+208|0);b=f[a+196>>2]|0;if(b|0){d=a+200|0;c=f[d>>2]|0;if((c|0)!=(b|0))f[d>>2]=c+(~((c+-4-b|0)>>>2)<<2);Lq(b)}Rj(a+184|0);b=f[a+164>>2]|0;if(b|0){d=a+168|0;c=f[d>>2]|0;if((c|0)!=(b|0))f[d>>2]=c+(~((c+-4-b|0)>>>2)<<2);Lq(b)}b=f[a+152>>2]|0;if(b|0){d=a+156|0;c=f[d>>2]|0;if((c|0)!=(b|0))f[d>>2]=c+(~((c+-4-b|0)>>>2)<<2);Lq(b)}b=f[a+140>>2]|0;if(b|0)Lq(b);b=f[a+128>>2]|0;if(b|0)do{d=b;b=f[b>>2]|0;Lq(d)}while((b|0)!=0);d=a+120|0;b=f[d>>2]|0;f[d>>2]=0;if(b|0)Lq(b);b=f[a+108>>2]|0;if(b|0){d=a+112|0;c=f[d>>2]|0;if((c|0)!=(b|0))f[d>>2]=c+(~(((c+-12-b|0)>>>0)/12|0)*12|0);Lq(b)}b=f[a+96>>2]|0;if(b|0){d=a+100|0;c=f[d>>2]|0;if((c|0)!=(b|0))f[d>>2]=c+(~((c+-4-b|0)>>>2)<<2);Lq(b)}b=f[a+84>>2]|0;if(b|0)Lq(b);b=f[a+72>>2]|0;if(b|0){d=a+76|0;c=f[d>>2]|0;if((c|0)!=(b|0))f[d>>2]=c+(~((c+-4-b|0)>>>2)<<2);Lq(b)}b=f[a+52>>2]|0;if(b|0){d=a+56|0;c=f[d>>2]|0;if((c|0)!=(b|0))f[d>>2]=c+(~((c+-4-b|0)>>>2)<<2);Lq(b)}b=f[a+40>>2]|0;if(b|0){d=a+44|0;c=f[d>>2]|0;if((c|0)!=(b|0))f[d>>2]=c+(~((c+-4-b|0)>>>2)<<2);Lq(b)}b=f[a+28>>2]|0;if(b|0)Lq(b);b=f[a+16>>2]|0;if(b|0){d=a+20|0;c=f[d>>2]|0;if((c|0)!=(b|0))f[d>>2]=c+(~((c+-4-b|0)>>>2)<<2);Lq(b)}a=a+12|0;b=f[a>>2]|0;f[a>>2]=0;if(!b)return;gk(b);Lq(b);return}function Df(a){a=a|0;var b=0,c=0,d=0;f[a>>2]=5696;Gj(a+208|0);b=f[a+196>>2]|0;if(b|0){d=a+200|0;c=f[d>>2]|0;if((c|0)!=(b|0))f[d>>2]=c+(~((c+-4-b|0)>>>2)<<2);Lq(b)}Rj(a+184|0);b=f[a+164>>2]|0;if(b|0){d=a+168|0;c=f[d>>2]|0;if((c|0)!=(b|0))f[d>>2]=c+(~((c+-4-b|0)>>>2)<<2);Lq(b)}b=f[a+152>>2]|0;if(b|0){d=a+156|0;c=f[d>>2]|0;if((c|0)!=(b|0))f[d>>2]=c+(~((c+-4-b|0)>>>2)<<2);Lq(b)}b=f[a+140>>2]|0;if(b|0)Lq(b);b=f[a+128>>2]|0;if(b|0)do{d=b;b=f[b>>2]|0;Lq(d)}while((b|0)!=0);d=a+120|0;b=f[d>>2]|0;f[d>>2]=0;if(b|0)Lq(b);b=f[a+108>>2]|0;if(b|0){d=a+112|0;c=f[d>>2]|0;if((c|0)!=(b|0))f[d>>2]=c+(~(((c+-12-b|0)>>>0)/12|0)*12|0);Lq(b)}b=f[a+96>>2]|0;if(b|0){d=a+100|0;c=f[d>>2]|0;if((c|0)!=(b|0))f[d>>2]=c+(~((c+-4-b|0)>>>2)<<2);Lq(b)}b=f[a+84>>2]|0;if(b|0)Lq(b);b=f[a+72>>2]|0;if(b|0){d=a+76|0;c=f[d>>2]|0;if((c|0)!=(b|0))f[d>>2]=c+(~((c+-4-b|0)>>>2)<<2);Lq(b)}b=f[a+52>>2]|0;if(b|0){d=a+56|0;c=f[d>>2]|0;if((c|0)!=(b|0))f[d>>2]=c+(~((c+-4-b|0)>>>2)<<2);Lq(b)}b=f[a+40>>2]|0;if(b|0){d=a+44|0;c=f[d>>2]|0;if((c|0)!=(b|0))f[d>>2]=c+(~((c+-4-b|0)>>>2)<<2);Lq(b)}b=f[a+28>>2]|0;if(b|0)Lq(b);b=f[a+16>>2]|0;if(b|0){d=a+20|0;c=f[d>>2]|0;if((c|0)!=(b|0))f[d>>2]=c+(~((c+-4-b|0)>>>2)<<2);Lq(b)}a=a+12|0;b=f[a>>2]|0;f[a>>2]=0;if(!b)return;gk(b);Lq(b);return}function Ef(a,c,d){a=a|0;c=c|0;d=d|0;var e=0,g=0,i=0;switch(b[a+24>>0]|0){case 1:{g=f[c>>2]|0;c=a+48|0;e=f[c>>2]|0;c=f[c+4>>2]|0;i=a+40|0;a=(Do(En(f[i>>2]|0,f[i+4>>2]|0,g|0,((g|0)<0)<<31>>31|0)|0,I|0,e|0,c|0)|0)+(f[f[a>>2]>>2]|0)|0;c=d;f[c>>2]=h[a>>0]|h[a+1>>0]<<8|h[a+2>>0]<<16|h[a+3>>0]<<24;f[c+4>>2]=0;c=0;a=0;break}case 2:{g=f[c>>2]|0;c=a+48|0;i=f[c>>2]|0;c=f[c+4>>2]|0;e=a+40|0;c=(Do(En(f[e>>2]|0,f[e+4>>2]|0,g|0,((g|0)<0)<<31>>31|0)|0,I|0,i|0,c|0)|0)+(f[f[a>>2]>>2]|0)|0;i=c;c=c+4|0;c=h[c>>0]|h[c+1>>0]<<8|h[c+2>>0]<<16|h[c+3>>0]<<24;a=d;f[a>>2]=h[i>>0]|h[i+1>>0]<<8|h[i+2>>0]<<16|h[i+3>>0]<<24;f[a+4>>2]=0;a=0;break}case 3:{g=f[c>>2]|0;i=a+48|0;c=f[i>>2]|0;i=f[i+4>>2]|0;e=a+40|0;i=(Do(En(f[e>>2]|0,f[e+4>>2]|0,g|0,((g|0)<0)<<31>>31|0)|0,I|0,c|0,i|0)|0)+(f[f[a>>2]>>2]|0)|0;c=i+4|0;c=h[c>>0]|h[c+1>>0]<<8|h[c+2>>0]<<16|h[c+3>>0]<<24;a=d;f[a>>2]=h[i>>0]|h[i+1>>0]<<8|h[i+2>>0]<<16|h[i+3>>0]<<24;f[a+4>>2]=0;a=0;break}case 4:{g=f[c>>2]|0;i=a+48|0;c=f[i>>2]|0;i=f[i+4>>2]|0;e=a+40|0;i=(Do(En(f[e>>2]|0,f[e+4>>2]|0,g|0,((g|0)<0)<<31>>31|0)|0,I|0,c|0,i|0)|0)+(f[f[a>>2]>>2]|0)|0;c=i+4|0;c=h[c>>0]|h[c+1>>0]<<8|h[c+2>>0]<<16|h[c+3>>0]<<24;a=d;f[a>>2]=h[i>>0]|h[i+1>>0]<<8|h[i+2>>0]<<16|h[i+3>>0]<<24;f[a+4>>2]=0;a=0;break}default:{i=0;return i|0}}i=d+8|0;f[i>>2]=c;f[i+4>>2]=a;i=1;return i|0}function Ff(a,c,d,e){a=a|0;c=c|0;d=d|0;e=e|0;var g=0,h=0,i=0,j=0,k=0,l=0,m=0,n=0;n=u;u=u+16|0;g=n;if((f[c+56>>2]|0)==-1){e=-1;u=n;return e|0}m=Fn(96)|0;cm(m,c);f[g>>2]=m;m=ji(a,g)|0;i=f[g>>2]|0;f[g>>2]=0;if(i|0){k=i+88|0;c=f[k>>2]|0;f[k>>2]=0;if(c|0){g=f[c+8>>2]|0;if(g|0){h=c+12|0;if((f[h>>2]|0)!=(g|0))f[h>>2]=g;Lq(g)}Lq(c)}c=f[i+68>>2]|0;if(c|0){h=i+72|0;g=f[h>>2]|0;if((g|0)!=(c|0))f[h>>2]=g+(~((g+-4-c|0)>>>2)<<2);Lq(c)}k=i+64|0;c=f[k>>2]|0;f[k>>2]=0;if(c|0){g=f[c>>2]|0;if(g|0){h=c+4|0;if((f[h>>2]|0)!=(g|0))f[h>>2]=g;Lq(g)}Lq(c)}Lq(i)}if((m|0)<=-1)Fa(17509,17693,71,17731);j=a+8|0;k=a+12|0;c=f[j>>2]|0;if(((f[k>>2]|0)-c>>2|0)<=(m|0))Fa(17639,17693,72,17731);i=c+(m<<2)|0;c=f[i>>2]|0;do if(!d){d=f[a+68>>2]|0;b[c+84>>0]=0;a=c+68|0;h=c+72|0;g=f[h>>2]|0;c=f[a>>2]|0;i=g-c>>2;if(d>>>0>i>>>0){_h(a,d-i|0,3240);break}if(d>>>0>>0?(l=c+(d<<2)|0,(g|0)!=(l|0)):0)f[h>>2]=g+(~((g+-4-l|0)>>>2)<<2)}else{b[c+84>>0]=1;h=f[c+68>>2]|0;g=c+72|0;c=f[g>>2]|0;if((c|0)!=(h|0))f[g>>2]=c+(~((c+-4-h|0)>>>2)<<2);f[(f[i>>2]|0)+80>>2]=f[a+68>>2]}while(0);if((e|0)<=0){e=m;u=n;return e|0}c=f[j>>2]|0;if(((f[k>>2]|0)-c>>2|0)<=(m|0))Fa(17639,17693,72,17731);ck(f[c+(m<<2)>>2]|0,e)|0;e=m;u=n;return e|0}function Gf(a,c,d){a=a|0;c=c|0;d=d|0;var e=0,g=0,i=0;switch(b[a+24>>0]|0){case 1:{g=f[c>>2]|0;c=a+48|0;e=f[c>>2]|0;c=f[c+4>>2]|0;i=a+40|0;a=(Do(En(f[i>>2]|0,f[i+4>>2]|0,g|0,((g|0)<0)<<31>>31|0)|0,I|0,e|0,c|0)|0)+(f[f[a>>2]>>2]|0)|0;f[d>>2]=(h[a>>0]|h[a+1>>0]<<8)<<16>>16;a=d+4|0;f[a>>2]=0;f[a+4>>2]=0;a=1;return a|0}case 2:{e=f[c>>2]|0;i=a+48|0;g=f[i>>2]|0;i=f[i+4>>2]|0;c=a+40|0;i=(Do(En(f[c>>2]|0,f[c+4>>2]|0,e|0,((e|0)<0)<<31>>31|0)|0,I|0,g|0,i|0)|0)+(f[f[a>>2]>>2]|0)|0;i=h[i>>0]|h[i+1>>0]<<8|h[i+2>>0]<<16|h[i+3>>0]<<24;f[d>>2]=i<<16>>16;f[d+4>>2]=i>>16;f[d+8>>2]=0;i=1;return i|0}case 3:{i=f[c>>2]|0;e=a+48|0;g=f[e>>2]|0;e=f[e+4>>2]|0;c=a+40|0;e=(Do(En(f[c>>2]|0,f[c+4>>2]|0,i|0,((i|0)<0)<<31>>31|0)|0,I|0,g|0,e|0)|0)+(f[f[a>>2]>>2]|0)|0;g=e+2|0;g=h[g>>0]|h[g+1>>0]<<8;i=e+4|0;i=h[i>>0]|h[i+1>>0]<<8;f[d>>2]=(h[e>>0]|h[e+1>>0]<<8)<<16>>16;f[d+4>>2]=g<<16>>16;f[d+8>>2]=i<<16>>16;i=1;return i|0}case 4:{e=f[c>>2]|0;i=a+48|0;g=f[i>>2]|0;i=f[i+4>>2]|0;c=a+40|0;i=(Do(En(f[c>>2]|0,f[c+4>>2]|0,e|0,((e|0)<0)<<31>>31|0)|0,I|0,g|0,i|0)|0)+(f[f[a>>2]>>2]|0)|0;g=i;g=h[g>>0]|h[g+1>>0]<<8|h[g+2>>0]<<16|h[g+3>>0]<<24;i=i+4|0;i=h[i>>0]|h[i+1>>0]<<8|h[i+2>>0]<<16|h[i+3>>0]<<24;f[d>>2]=g<<16>>16;f[d+4>>2]=g>>16;i=Zn(i|0,0,16)|0;f[d+8>>2]=i>>16;i=1;return i|0}default:{i=0;return i|0}}return 0}function Hf(a,c,d){a=a|0;c=c|0;d=d|0;var e=0,g=0,i=0;switch(b[a+24>>0]|0){case 1:{g=f[c>>2]|0;c=a+48|0;e=f[c>>2]|0;c=f[c+4>>2]|0;i=a+40|0;a=(Do(En(f[i>>2]|0,f[i+4>>2]|0,g|0,((g|0)<0)<<31>>31|0)|0,I|0,e|0,c|0)|0)+(f[f[a>>2]>>2]|0)|0;f[d>>2]=(h[a>>0]|h[a+1>>0]<<8)&65535;a=d+4|0;f[a>>2]=0;f[a+4>>2]=0;a=1;return a|0}case 2:{e=f[c>>2]|0;i=a+48|0;g=f[i>>2]|0;i=f[i+4>>2]|0;c=a+40|0;i=(Do(En(f[c>>2]|0,f[c+4>>2]|0,e|0,((e|0)<0)<<31>>31|0)|0,I|0,g|0,i|0)|0)+(f[f[a>>2]>>2]|0)|0;i=h[i>>0]|h[i+1>>0]<<8|h[i+2>>0]<<16|h[i+3>>0]<<24;f[d>>2]=i&65535;f[d+4>>2]=i>>>16;f[d+8>>2]=0;i=1;return i|0}case 3:{i=f[c>>2]|0;e=a+48|0;g=f[e>>2]|0;e=f[e+4>>2]|0;c=a+40|0;e=(Do(En(f[c>>2]|0,f[c+4>>2]|0,i|0,((i|0)<0)<<31>>31|0)|0,I|0,g|0,e|0)|0)+(f[f[a>>2]>>2]|0)|0;g=e+2|0;g=h[g>>0]|h[g+1>>0]<<8;i=e+4|0;i=h[i>>0]|h[i+1>>0]<<8;f[d>>2]=(h[e>>0]|h[e+1>>0]<<8)&65535;f[d+4>>2]=g&65535;f[d+8>>2]=i&65535;i=1;return i|0}case 4:{e=f[c>>2]|0;i=a+48|0;g=f[i>>2]|0;i=f[i+4>>2]|0;c=a+40|0;i=(Do(En(f[c>>2]|0,f[c+4>>2]|0,e|0,((e|0)<0)<<31>>31|0)|0,I|0,g|0,i|0)|0)+(f[f[a>>2]>>2]|0)|0;g=i;g=h[g>>0]|h[g+1>>0]<<8|h[g+2>>0]<<16|h[g+3>>0]<<24;i=i+4|0;i=h[i>>0]|h[i+1>>0]<<8|h[i+2>>0]<<16|h[i+3>>0]<<24;f[d>>2]=g&65535;g=co(g|0,i|0,16)|0;f[d+4>>2]=g&65535;f[d+8>>2]=i&65535;i=1;return i|0}default:{i=0;return i|0}}return 0}function If(a,c){a=a|0;c=c|0;var d=0,e=0,g=0,h=0,i=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0;r=u;u=u+32|0;o=r+12|0;p=r;n=Tl(c,0)|0;if(!n){f[a>>2]=0;u=r;return}j=c+84|0;i=c+88|0;c=f[i>>2]|0;e=f[j>>2]|0;d=c-e|0;h=(d|0)/12|0;f[o>>2]=0;q=o+4|0;f[q>>2]=0;f[o+8>>2]=0;if(!d)g=0;else{if(h>>>0>357913941){zp(o);r=Ha(4)|0;qq(r);sa(r|0,1040,102)}g=Fn(d)|0;f[q>>2]=g;f[o>>2]=g;f[o+8>>2]=g+(h*12|0);e=g;d=g;c=h;while(1){f[e>>2]=0;f[e+4>>2]=0;f[e+8>>2]=0;d=d+12|0;c=c+-1|0;if(!c)break;else e=d}f[q>>2]=d;e=f[j>>2]|0;c=f[i>>2]|0}f[p>>2]=0;f[p+4>>2]=0;f[p+8>>2]=0;c=c-e|0;if((c|0)>0){k=n+68|0;l=p+4|0;m=p+8|0;j=(b[n+84>>0]|0)==0;i=(c|0)/12|0;h=0;do{c=f[e+(h*12|0)>>2]|0;if(j){d=f[k>>2]|0;c=f[d+(c<<2)>>2]|0;f[p>>2]=c;f[l>>2]=f[d+(f[e+(h*12|0)+4>>2]<<2)>>2];d=d+(f[e+(h*12|0)+8>>2]<<2)|0}else{f[p>>2]=c;f[l>>2]=f[e+(h*12|0)+4>>2];d=e+(h*12|0)+8|0}n=f[d>>2]|0;f[m>>2]=n;f[g+(h*12|0)>>2]=c;f[g+(h*12|0)+4>>2]=f[l>>2];f[g+(h*12|0)+8>>2]=n;h=h+1|0}while((h|0)<(i|0))}al(a,o);d=f[o>>2]|0;if(d|0){c=f[q>>2]|0;if((c|0)!=(d|0))f[q>>2]=c+(~(((c+-12-d|0)>>>0)/12|0)*12|0);Lq(d)}u=r;return}function Jf(a,b,c,d,e){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;var g=0,h=0,i=0,j=0,k=0,l=0,m=0,n=0;n=Ae(a,b,c,e)|0;k=f[d>>2]|0;m=f[c>>2]|0;g=f[e>>2]|0;i=f[g+4>>2]|0;h=f[g>>2]|0;if(i-h>>3>>>0>k>>>0){l=g;j=h;g=h}else{yp(g);i=f[e>>2]|0;l=i;j=f[g>>2]|0;g=f[i>>2]|0;i=f[i+4>>2]|0}h=f[j+(k<<3)>>2]|0;if(i-g>>3>>>0<=m>>>0){yp(l);g=f[l>>2]|0}if(h>>>0>=(f[g+(m<<3)>>2]|0)>>>0)return n|0;k=f[c>>2]|0;f[c>>2]=f[d>>2];f[d>>2]=k;k=f[c>>2]|0;m=f[b>>2]|0;i=f[e>>2]|0;h=f[i+4>>2]|0;g=f[i>>2]|0;if(h-g>>3>>>0>k>>>0){l=g;j=h}else{yp(i);d=f[e>>2]|0;l=f[i>>2]|0;g=f[d>>2]|0;j=f[d+4>>2]|0;i=d}h=f[l+(k<<3)>>2]|0;if(j-g>>3>>>0<=m>>>0){yp(i);g=f[i>>2]|0}if(h>>>0>=(f[g+(m<<3)>>2]|0)>>>0){n=n+1|0;return n|0}l=f[b>>2]|0;f[b>>2]=f[c>>2];f[c>>2]=l;l=f[b>>2]|0;m=f[a>>2]|0;i=f[e>>2]|0;h=f[i+4>>2]|0;g=f[i>>2]|0;if(h-g>>3>>>0>l>>>0){k=g;j=h}else{yp(i);e=f[e>>2]|0;k=f[i>>2]|0;g=f[e>>2]|0;j=f[e+4>>2]|0;i=e}h=f[k+(l<<3)>>2]|0;if(j-g>>3>>>0<=m>>>0){yp(i);g=f[i>>2]|0}if(h>>>0>=(f[g+(m<<3)>>2]|0)>>>0){n=n+2|0;return n|0}e=f[a>>2]|0;f[a>>2]=f[b>>2];f[b>>2]=e;n=n+3|0;return n|0}function Kf(a,c,d){a=a|0;c=c|0;d=d|0;var e=0,g=0,i=0;switch(b[a+24>>0]|0){case 1:{g=f[c>>2]|0;c=a+48|0;e=f[c>>2]|0;c=f[c+4>>2]|0;i=a+40|0;a=(Do(En(f[i>>2]|0,f[i+4>>2]|0,g|0,((g|0)<0)<<31>>31|0)|0,I|0,e|0,c|0)|0)+(f[f[a>>2]>>2]|0)|0;c=d;f[c>>2]=(h[a>>0]|h[a+1>>0]<<8)&65535;f[c+4>>2]=0;c=0;a=0;break}case 2:{g=f[c>>2]|0;c=a+48|0;i=f[c>>2]|0;c=f[c+4>>2]|0;e=a+40|0;c=(Do(En(f[e>>2]|0,f[e+4>>2]|0,g|0,((g|0)<0)<<31>>31|0)|0,I|0,i|0,c|0)|0)+(f[f[a>>2]>>2]|0)|0;c=h[c>>0]|h[c+1>>0]<<8|h[c+2>>0]<<16|h[c+3>>0]<<24;a=d;f[a>>2]=c&65535;f[a+4>>2]=0;c=c>>>16;a=0;break}case 3:{g=f[c>>2]|0;i=a+48|0;c=f[i>>2]|0;i=f[i+4>>2]|0;e=a+40|0;i=(Do(En(f[e>>2]|0,f[e+4>>2]|0,g|0,((g|0)<0)<<31>>31|0)|0,I|0,c|0,i|0)|0)+(f[f[a>>2]>>2]|0)|0;c=i+2|0;c=h[c>>0]|h[c+1>>0]<<8;a=d;f[a>>2]=(h[i>>0]|h[i+1>>0]<<8)&65535;f[a+4>>2]=0;c=c&65535;a=0;break}case 4:{g=f[c>>2]|0;c=a+48|0;i=f[c>>2]|0;c=f[c+4>>2]|0;e=a+40|0;c=(Do(En(f[e>>2]|0,f[e+4>>2]|0,g|0,((g|0)<0)<<31>>31|0)|0,I|0,i|0,c|0)|0)+(f[f[a>>2]>>2]|0)|0;a=c;a=h[a>>0]|h[a+1>>0]<<8|h[a+2>>0]<<16|h[a+3>>0]<<24;c=c+4|0;c=h[c>>0]|h[c+1>>0]<<8|h[c+2>>0]<<16|h[c+3>>0]<<24;i=d;f[i>>2]=a&65535;f[i+4>>2]=0;c=(co(a|0,c|0,16)|0)&65535;a=0;break}default:{i=0;return i|0}}i=d+8|0;f[i>>2]=c;f[i+4>>2]=a;i=1;return i|0}function Lf(a,c,d){a=a|0;c=c|0;d=d|0;var e=0,g=0,i=0;switch(b[a+24>>0]|0){case 1:{g=f[c>>2]|0;c=a+48|0;e=f[c>>2]|0;c=f[c+4>>2]|0;i=a+40|0;c=Do(En(f[i>>2]|0,f[i+4>>2]|0,g|0,((g|0)<0)<<31>>31|0)|0,I|0,e|0,c|0)|0;a=b[(f[f[a>>2]>>2]|0)+c>>0]|0;c=d;f[c>>2]=a;f[c+4>>2]=((a|0)<0)<<31>>31;c=0;a=0;break}case 2:{g=f[c>>2]|0;i=a+48|0;c=f[i>>2]|0;i=f[i+4>>2]|0;e=a+40|0;a=(Do(En(f[e>>2]|0,f[e+4>>2]|0,g|0,((g|0)<0)<<31>>31|0)|0,I|0,c|0,i|0)|0)+(f[f[a>>2]>>2]|0)|0;a=h[a>>0]|h[a+1>>0]<<8;i=(a&255)<<24>>24;c=d;f[c>>2]=i;f[c+4>>2]=((i|0)<0)<<31>>31;a=((a&65535)>>>8&255)<<24>>24;c=a;a=((a|0)<0)<<31>>31;break}case 3:{g=f[c>>2]|0;i=a+48|0;c=f[i>>2]|0;i=f[i+4>>2]|0;e=a+40|0;i=(Do(En(f[e>>2]|0,f[e+4>>2]|0,g|0,((g|0)<0)<<31>>31|0)|0,I|0,c|0,i|0)|0)+(f[f[a>>2]>>2]|0)|0;a=b[i+1>>0]|0;i=b[i>>0]|0;c=d;f[c>>2]=i;f[c+4>>2]=((i|0)<0)<<31>>31;a=a<<24>>24;c=a;a=((a|0)<0)<<31>>31;break}case 4:{g=f[c>>2]|0;i=a+48|0;c=f[i>>2]|0;i=f[i+4>>2]|0;e=a+40|0;a=(Do(En(f[e>>2]|0,f[e+4>>2]|0,g|0,((g|0)<0)<<31>>31|0)|0,I|0,c|0,i|0)|0)+(f[f[a>>2]>>2]|0)|0;a=h[a>>0]|h[a+1>>0]<<8|h[a+2>>0]<<16|h[a+3>>0]<<24;i=(a&255)<<24>>24;c=d;f[c>>2]=i;f[c+4>>2]=((i|0)<0)<<31>>31;a=(a>>>8&255)<<24>>24;c=a;a=((a|0)<0)<<31>>31;break}default:{i=0;return i|0}}i=d+8|0;f[i>>2]=c;f[i+4>>2]=a;i=1;return i|0}function Mf(a,c,d){a=a|0;c=c|0;d=d|0;var e=Ka,g=Ka,i=0,j=0,k=0;switch(b[a+24>>0]|0){case 1:{j=f[c>>2]|0;c=a+48|0;i=f[c>>2]|0;c=f[c+4>>2]|0;k=a+40|0;c=(Do(En(f[k>>2]|0,f[k+4>>2]|0,j|0,((j|0)<0)<<31>>31|0)|0,I|0,i|0,c|0)|0)+(f[f[a>>2]>>2]|0)|0;g=$((h[c>>0]|h[c+1>>0]<<8|h[c+2>>0]<<16|h[c+3>>0]<<24)>>>0);e=$(g*$(2.32830644e-10));e=(b[a+32>>0]|0)==0?g:e;break}case 2:{i=f[c>>2]|0;k=a+48|0;j=f[k>>2]|0;k=f[k+4>>2]|0;c=a+40|0;k=(Do(En(f[c>>2]|0,f[c+4>>2]|0,i|0,((i|0)<0)<<31>>31|0)|0,I|0,j|0,k|0)|0)+(f[f[a>>2]>>2]|0)|0;g=$((h[k>>0]|h[k+1>>0]<<8|h[k+2>>0]<<16|h[k+3>>0]<<24)>>>0);e=$(g*$(2.32830644e-10));e=(b[a+32>>0]|0)==0?g:e;break}case 3:{i=f[c>>2]|0;k=a+48|0;j=f[k>>2]|0;k=f[k+4>>2]|0;c=a+40|0;k=(Do(En(f[c>>2]|0,f[c+4>>2]|0,i|0,((i|0)<0)<<31>>31|0)|0,I|0,j|0,k|0)|0)+(f[f[a>>2]>>2]|0)|0;g=$((h[k>>0]|h[k+1>>0]<<8|h[k+2>>0]<<16|h[k+3>>0]<<24)>>>0);e=$(g*$(2.32830644e-10));e=(b[a+32>>0]|0)==0?g:e;break}case 4:{i=f[c>>2]|0;k=a+48|0;j=f[k>>2]|0;k=f[k+4>>2]|0;c=a+40|0;k=(Do(En(f[c>>2]|0,f[c+4>>2]|0,i|0,((i|0)<0)<<31>>31|0)|0,I|0,j|0,k|0)|0)+(f[f[a>>2]>>2]|0)|0;g=$((h[k>>0]|h[k+1>>0]<<8|h[k+2>>0]<<16|h[k+3>>0]<<24)>>>0);e=$(g*$(2.32830644e-10));e=(b[a+32>>0]|0)==0?g:e;break}default:{k=0;return k|0}}n[d>>2]=e;k=1;return k|0}function Nf(a,c,d){a=a|0;c=c|0;d=d|0;var e=0,g=0,h=0,i=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0;q=u;u=u+144|0;m=q+136|0;p=q+104|0;i=q;j=Fn(124)|0;e=f[c+8>>2]|0;f[j+4>>2]=0;f[j>>2]=5872;f[j+12>>2]=5852;f[j+100>>2]=0;f[j+104>>2]=0;f[j+108>>2]=0;n=j+16|0;o=n+80|0;do{f[n>>2]=0;n=n+4|0}while((n|0)<(o|0));f[j+112>>2]=e;f[j+116>>2]=d;k=j+120|0;f[k>>2]=0;g=j;f[p>>2]=5852;l=p+4|0;h=l+4|0;f[h>>2]=0;f[h+4>>2]=0;f[h+8>>2]=0;f[h+12>>2]=0;f[h+16>>2]=0;f[h+20>>2]=0;h=f[c+12>>2]|0;f[i+4>>2]=5852;f[i+92>>2]=0;f[i+96>>2]=0;f[i+100>>2]=0;n=i+8|0;o=n+80|0;do{f[n>>2]=0;n=n+4|0}while((n|0)<(o|0));o=h;f[l>>2]=o;o=((f[o+4>>2]|0)-(f[h>>2]|0)>>2>>>0)/3|0;b[m>>0]=0;Th(p+8|0,o,m);Oa[f[(f[p>>2]|0)+8>>2]&127](p);f[i>>2]=f[l>>2];jh(i+4|0,p)|0;f[i+36>>2]=h;f[i+40>>2]=d;f[i+44>>2]=e;f[i+48>>2]=j;f[k>>2]=c+72;qh(j,i);f[a>>2]=g;Aj(i);f[p>>2]=5852;e=f[p+20>>2]|0;if(e|0)Lq(e);e=f[p+8>>2]|0;if(!e){u=q;return}Lq(e);u=q;return}function Of(a,c,d){a=a|0;c=c|0;d=d|0;var e=Ka,g=Ka,i=0,j=0,k=0;switch(b[a+24>>0]|0){case 1:{j=f[c>>2]|0;c=a+48|0;i=f[c>>2]|0;c=f[c+4>>2]|0;k=a+40|0;c=(Do(En(f[k>>2]|0,f[k+4>>2]|0,j|0,((j|0)<0)<<31>>31|0)|0,I|0,i|0,c|0)|0)+(f[f[a>>2]>>2]|0)|0;g=$(h[c>>0]|h[c+1>>0]<<8|h[c+2>>0]<<16|h[c+3>>0]<<24|0);e=$(g*$(4.65661287e-10));e=(b[a+32>>0]|0)==0?g:e;break}case 2:{i=f[c>>2]|0;k=a+48|0;j=f[k>>2]|0;k=f[k+4>>2]|0;c=a+40|0;k=(Do(En(f[c>>2]|0,f[c+4>>2]|0,i|0,((i|0)<0)<<31>>31|0)|0,I|0,j|0,k|0)|0)+(f[f[a>>2]>>2]|0)|0;g=$(h[k>>0]|h[k+1>>0]<<8|h[k+2>>0]<<16|h[k+3>>0]<<24|0);e=$(g*$(4.65661287e-10));e=(b[a+32>>0]|0)==0?g:e;break}case 3:{i=f[c>>2]|0;k=a+48|0;j=f[k>>2]|0;k=f[k+4>>2]|0;c=a+40|0;k=(Do(En(f[c>>2]|0,f[c+4>>2]|0,i|0,((i|0)<0)<<31>>31|0)|0,I|0,j|0,k|0)|0)+(f[f[a>>2]>>2]|0)|0;g=$(h[k>>0]|h[k+1>>0]<<8|h[k+2>>0]<<16|h[k+3>>0]<<24|0);e=$(g*$(4.65661287e-10));e=(b[a+32>>0]|0)==0?g:e;break}case 4:{i=f[c>>2]|0;k=a+48|0;j=f[k>>2]|0;k=f[k+4>>2]|0;c=a+40|0;k=(Do(En(f[c>>2]|0,f[c+4>>2]|0,i|0,((i|0)<0)<<31>>31|0)|0,I|0,j|0,k|0)|0)+(f[f[a>>2]>>2]|0)|0;g=$(h[k>>0]|h[k+1>>0]<<8|h[k+2>>0]<<16|h[k+3>>0]<<24|0);e=$(g*$(4.65661287e-10));e=(b[a+32>>0]|0)==0?g:e;break}default:{k=0;return k|0}}n[d>>2]=e;k=1;return k|0}function Pf(a,b,c){a=a|0;b=b|0;c=c|0;var d=0,e=0,g=0.0;a:do if(b>>>0<=20)do switch(b|0){case 9:{d=(f[c>>2]|0)+(4-1)&~(4-1);b=f[d>>2]|0;f[c>>2]=d+4;f[a>>2]=b;break a}case 10:{d=(f[c>>2]|0)+(4-1)&~(4-1);b=f[d>>2]|0;f[c>>2]=d+4;d=a;f[d>>2]=b;f[d+4>>2]=((b|0)<0)<<31>>31;break a}case 11:{d=(f[c>>2]|0)+(4-1)&~(4-1);b=f[d>>2]|0;f[c>>2]=d+4;d=a;f[d>>2]=b;f[d+4>>2]=0;break a}case 12:{d=(f[c>>2]|0)+(8-1)&~(8-1);b=d;e=f[b>>2]|0;b=f[b+4>>2]|0;f[c>>2]=d+8;d=a;f[d>>2]=e;f[d+4>>2]=b;break a}case 13:{e=(f[c>>2]|0)+(4-1)&~(4-1);d=f[e>>2]|0;f[c>>2]=e+4;d=(d&65535)<<16>>16;e=a;f[e>>2]=d;f[e+4>>2]=((d|0)<0)<<31>>31;break a}case 14:{e=(f[c>>2]|0)+(4-1)&~(4-1);d=f[e>>2]|0;f[c>>2]=e+4;e=a;f[e>>2]=d&65535;f[e+4>>2]=0;break a}case 15:{e=(f[c>>2]|0)+(4-1)&~(4-1);d=f[e>>2]|0;f[c>>2]=e+4;d=(d&255)<<24>>24;e=a;f[e>>2]=d;f[e+4>>2]=((d|0)<0)<<31>>31;break a}case 16:{e=(f[c>>2]|0)+(4-1)&~(4-1);d=f[e>>2]|0;f[c>>2]=e+4;e=a;f[e>>2]=d&255;f[e+4>>2]=0;break a}case 17:{e=(f[c>>2]|0)+(8-1)&~(8-1);g=+p[e>>3];f[c>>2]=e+8;p[a>>3]=g;break a}case 18:{e=(f[c>>2]|0)+(8-1)&~(8-1);g=+p[e>>3];f[c>>2]=e+8;p[a>>3]=g;break a}default:break a}while(0);while(0);return}function Qf(a){a=a|0;var c=0,d=0,e=0,g=0,h=0,i=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0;n=u;u=u+16|0;h=n+4|0;g=n;i=n+8|0;if(!(Ra[f[(f[a>>2]|0)+32>>2]&127](a)|0)){a=0;u=n;return a|0}m=a+44|0;d=f[m>>2]|0;k=a+8|0;j=a+12|0;e=f[j>>2]|0;c=f[k>>2]|0;b[i>>0]=(e-c|0)>>>2;o=d+16|0;p=f[o+4>>2]|0;if(!((p|0)>0|(p|0)==0&(f[o>>2]|0)>>>0>0)){f[g>>2]=f[d+4>>2];f[h>>2]=f[g>>2];vf(d,h,i,i+1|0)|0;c=f[k>>2]|0;e=f[j>>2]|0}a:do if((c|0)!=(e|0)){d=a+4|0;while(1){p=f[c>>2]|0;c=c+4|0;if(!(Ma[f[(f[p>>2]|0)+8>>2]&31](p,a,f[d>>2]|0)|0)){c=0;break}if((c|0)==(e|0))break a}u=n;return c|0}while(0);if(!(pc(a)|0)){p=0;u=n;return p|0}e=a+32|0;c=f[e>>2]|0;g=a+36|0;d=f[g>>2]|0;b:do if((c|0)!=(d|0)){do{if(!(Va[f[(f[a>>2]|0)+40>>2]&127](a,f[c>>2]|0)|0)){c=0;l=18;break}c=c+4|0}while((c|0)!=(d|0));if((l|0)==18){u=n;return c|0}c=f[e>>2]|0;d=f[g>>2]|0;if((c|0)!=(d|0)){while(1){p=f[(f[k>>2]|0)+(f[c>>2]<<2)>>2]|0;c=c+4|0;if(!(Va[f[(f[p>>2]|0)+12>>2]&127](p,f[m>>2]|0)|0)){c=0;break}if((c|0)==(d|0))break b}u=n;return c|0}}while(0);p=Ra[f[(f[a>>2]|0)+44>>2]&127](a)|0;u=n;return p|0}function Rf(a,b,c){a=a|0;b=b|0;c=c|0;var d=0,e=0,g=0,h=0,i=0,j=0,k=0,l=0,m=0;i=a+8|0;d=f[i>>2]|0;h=f[a>>2]|0;j=h;do if(d-h>>3>>>0>=b>>>0){a=a+4|0;i=f[a>>2]|0;h=i-h>>3;g=h>>>0>>0;d=g?h:b;if(d|0){e=j;while(1){m=c;l=f[m+4>>2]|0;k=e;f[k>>2]=f[m>>2];f[k+4>>2]=l;d=d+-1|0;if(!d)break;else e=e+8|0}}if(!g){d=j+(b<<3)|0;if((i|0)==(d|0))return;else{e=a;d=i+(~((i+-8-d|0)>>>3)<<3)|0;break}}else{g=b-h|0;d=i;e=g;while(1){k=c;l=f[k+4>>2]|0;m=d;f[m>>2]=f[k>>2];f[m+4>>2]=l;e=e+-1|0;if(!e)break;else d=d+8|0}e=a;d=i+(g<<3)|0;break}}else{g=h;if(h){e=a+4|0;d=f[e>>2]|0;if((d|0)!=(j|0))f[e>>2]=d+(~((d+-8-h|0)>>>3)<<3);Lq(g);f[i>>2]=0;f[e>>2]=0;f[a>>2]=0;d=0}if(b>>>0>536870911){zp(a);e=f[a>>2]|0;d=f[i>>2]|0}else e=0;m=d-e|0;d=m>>2;d=m>>3>>>0<268435455?(d>>>0>>0?b:d):536870911;if(d>>>0>536870911){zp(a);m=Ha(4)|0;qq(m);sa(m|0,1040,102)}h=Fn(d<<3)|0;g=a+4|0;f[g>>2]=h;f[a>>2]=h;f[i>>2]=h+(d<<3);d=h;e=b;while(1){k=c;l=f[k+4>>2]|0;m=d;f[m>>2]=f[k>>2];f[m+4>>2]=l;e=e+-1|0;if(!e)break;else d=d+8|0}e=g;d=h+(b<<3)|0}while(0);f[e>>2]=d;return}function Sf(a,b,c,d,e,g){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;g=g|0;var h=0,i=0,j=0,k=0,l=0,m=0,n=0;n=u;u=u+32|0;m=n;l=n+16|0;h=f[b+4>>2]|0;if((d|0)<=-1)Fa(17509,17693,63,17731);i=f[h+8>>2]|0;if(((f[h+12>>2]|0)-i>>2|0)<=(d|0))Fa(17639,17693,64,17731);i=f[i+(d<<2)>>2]|0;do if((c+-1|0)>>>0<6&(Ra[f[(f[b>>2]|0)+8>>2]&127](b)|0)==1){j=Ra[f[(f[b>>2]|0)+48>>2]&127](b)|0;k=Va[f[(f[b>>2]|0)+56>>2]&127](b,d)|0;if((j|0)==0|(k|0)==0){f[a>>2]=0;u=n;return}h=Va[f[(f[b>>2]|0)+52>>2]&127](b,d)|0;if(!h){f[m>>2]=f[b+52>>2];f[m+4>>2]=j;f[m+12>>2]=k;f[m+8>>2]=k+12;Qc(a,l,c,i,e,m,g);if(!(f[a>>2]|0)){f[a>>2]=0;break}u=n;return}else{f[m>>2]=f[b+52>>2];f[m+4>>2]=h;f[m+12>>2]=k;f[m+8>>2]=k+12;Pc(a,l,c,i,e,m,g);if(!(f[a>>2]|0)){f[a>>2]=0;break}u=n;return}}while(0);f[a>>2]=0;u=n;return}function Tf(a){a=a|0;var b=0,c=0,d=0,e=0,g=0,h=0;g=a+1176|0;b=f[g>>2]|0;if(b|0){h=a+1180|0;c=f[h>>2]|0;if((c|0)!=(b|0)){do{d=c+-12|0;f[h>>2]=d;e=f[d>>2]|0;if(!e)c=d;else{d=c+-8|0;c=f[d>>2]|0;if((c|0)!=(e|0))f[d>>2]=c+(~((c+-4-e|0)>>>2)<<2);Lq(e);c=f[h>>2]|0}}while((c|0)!=(b|0));b=f[g>>2]|0}Lq(b)}g=a+1164|0;b=f[g>>2]|0;if(b|0){h=a+1168|0;c=f[h>>2]|0;if((c|0)!=(b|0)){do{d=c+-12|0;f[h>>2]=d;e=f[d>>2]|0;if(!e)c=d;else{d=c+-8|0;c=f[d>>2]|0;if((c|0)!=(e|0))f[d>>2]=c+(~((c+-4-e|0)>>>2)<<2);Lq(e);c=f[h>>2]|0}}while((c|0)!=(b|0));b=f[g>>2]|0}Lq(b)}b=f[a+1152>>2]|0;if(b|0){d=a+1156|0;c=f[d>>2]|0;if((c|0)!=(b|0))f[d>>2]=c+(~((c+-4-b|0)>>>2)<<2);Lq(b)}b=f[a+1140>>2]|0;if(b|0){d=a+1144|0;c=f[d>>2]|0;if((c|0)!=(b|0))f[d>>2]=c+(~((c+-4-b|0)>>>2)<<2);Lq(b)}b=f[a+1128>>2]|0;if(!b){h=a+1108|0;Xl(h);h=a+1088|0;Xl(h);h=a+1068|0;Xl(h);h=a+1036|0;jk(h);a=a+12|0;ui(a);return}d=a+1132|0;c=f[d>>2]|0;if((c|0)!=(b|0))f[d>>2]=c+(~((c+-4-b|0)>>>2)<<2);Lq(b);h=a+1108|0;Xl(h);h=a+1088|0;Xl(h);h=a+1068|0;Xl(h);h=a+1036|0;jk(h);a=a+12|0;ui(a);return}function Uf(a,c,d){a=a|0;c=c|0;d=d|0;var e=0,g=0,i=0;switch(b[a+24>>0]|0){case 1:{g=f[c>>2]|0;c=a+48|0;e=f[c>>2]|0;c=f[c+4>>2]|0;i=a+40|0;c=Do(En(f[i>>2]|0,f[i+4>>2]|0,g|0,((g|0)<0)<<31>>31|0)|0,I|0,e|0,c|0)|0;f[d>>2]=b[(f[f[a>>2]>>2]|0)+c>>0];a=d+4|0;f[a>>2]=0;f[a+4>>2]=0;f[a+8>>2]=0;a=1;return a|0}case 2:{e=f[c>>2]|0;i=a+48|0;g=f[i>>2]|0;i=f[i+4>>2]|0;c=a+40|0;i=(Do(En(f[c>>2]|0,f[c+4>>2]|0,e|0,((e|0)<0)<<31>>31|0)|0,I|0,g|0,i|0)|0)+(f[f[a>>2]>>2]|0)|0;i=h[i>>0]|h[i+1>>0]<<8;f[d>>2]=(i&65535)<<24>>24;f[d+4>>2]=((i&65535)>>>8&65535)<<24>>24;i=d+8|0;f[i>>2]=0;f[i+4>>2]=0;i=1;return i|0}case 3:{i=f[c>>2]|0;e=a+48|0;g=f[e>>2]|0;e=f[e+4>>2]|0;c=a+40|0;e=(Do(En(f[c>>2]|0,f[c+4>>2]|0,i|0,((i|0)<0)<<31>>31|0)|0,I|0,g|0,e|0)|0)+(f[f[a>>2]>>2]|0)|0;g=b[e+1>>0]|0;i=b[e+2>>0]|0;f[d>>2]=b[e>>0];f[d+4>>2]=g<<24>>24;f[d+8>>2]=i<<24>>24;f[d+12>>2]=0;i=1;return i|0}case 4:{e=f[c>>2]|0;i=a+48|0;g=f[i>>2]|0;i=f[i+4>>2]|0;c=a+40|0;i=(Do(En(f[c>>2]|0,f[c+4>>2]|0,e|0,((e|0)<0)<<31>>31|0)|0,I|0,g|0,i|0)|0)+(f[f[a>>2]>>2]|0)|0;i=h[i>>0]|h[i+1>>0]<<8|h[i+2>>0]<<16|h[i+3>>0]<<24;f[d>>2]=i<<24>>24;f[d+4>>2]=i<<16>>24;f[d+8>>2]=i<<8>>24;f[d+12>>2]=i>>24;i=1;return i|0}default:{i=0;return i|0}}return 0}function Vf(a,b,c,d,e){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;var g=0,h=0,i=0,j=0,k=0,l=0,m=0,n=0;n=u;u=u+16|0;m=n+12|0;k=n+8|0;j=n+4|0;l=n;f[a>>2]=f[d>>2];i=f[c>>2]|0;h=f[b>>2]|0;c=a+4|0;f[c>>2]=(i-h|0)/12|0;d=e+16|0;g=d;b=f[g+4>>2]|0;if(!((b|0)>0|(b|0)==0&(f[g>>2]|0)>>>0>0)?(f[k>>2]=f[e+4>>2],f[m>>2]=f[k>>2],vf(e,m,a,a+4|0)|0,g=d,b=f[g+4>>2]|0,!((b|0)>0|(b|0)==0&(f[g>>2]|0)>>>0>0)):0){f[k>>2]=f[e+4>>2];f[m>>2]=f[k>>2];vf(e,m,c,c+4|0)|0}if(!(f[c>>2]|0)){u=n;return 1}ah(a+12|0);g=a+1068|0;dn(g);c=a+1088|0;dn(c);b=a+1108|0;dn(b);f[j>>2]=h;f[l>>2]=i;f[k>>2]=f[j>>2];f[m>>2]=f[l>>2];ib(a,k,m);d=0;do{Kc(a+12+(d<<5)|0,e);d=d+1|0}while((d|0)!=32);Kc(a+1036|0,e);lh(g,e);lh(c,e);lh(b,e);u=n;return 1}function Wf(a,b,c,d,e){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;var g=0,h=0,i=0,j=0,k=0,l=0,m=0,n=0;n=u;u=u+16|0;m=n+12|0;k=n+8|0;j=n+4|0;l=n;f[a>>2]=f[d>>2];i=f[c>>2]|0;h=f[b>>2]|0;c=a+4|0;f[c>>2]=(i-h|0)/12|0;d=e+16|0;g=d;b=f[g+4>>2]|0;if(!((b|0)>0|(b|0)==0&(f[g>>2]|0)>>>0>0)?(f[k>>2]=f[e+4>>2],f[m>>2]=f[k>>2],vf(e,m,a,a+4|0)|0,g=d,b=f[g+4>>2]|0,!((b|0)>0|(b|0)==0&(f[g>>2]|0)>>>0>0)):0){f[k>>2]=f[e+4>>2];f[m>>2]=f[k>>2];vf(e,m,c,c+4|0)|0}if(!(f[c>>2]|0)){u=n;return 1}ah(a+12|0);g=a+1068|0;dn(g);c=a+1088|0;dn(c);b=a+1108|0;dn(b);f[j>>2]=h;f[l>>2]=i;f[k>>2]=f[j>>2];f[m>>2]=f[l>>2];kb(a,k,m);d=0;do{Kc(a+12+(d<<5)|0,e);d=d+1|0}while((d|0)!=32);Kc(a+1036|0,e);lh(g,e);lh(c,e);lh(b,e);u=n;return 1}function Xf(a,b){a=a|0;b=b|0;var c=0,d=0,e=0,g=0,h=0,i=0,j=0,k=0,l=0,m=0,n=0;m=u;u=u+48|0;j=m+44|0;i=m+40|0;l=m+36|0;g=m+32|0;k=m;f[g>>2]=f[a+64>>2];h=b+16|0;e=h;d=f[e+4>>2]|0;if(!((d|0)>0|(d|0)==0&(f[e>>2]|0)>>>0>0)){f[i>>2]=f[b+4>>2];f[j>>2]=f[i>>2];vf(b,j,g,g+4|0)|0}Hn(k);Jl(k);if((f[g>>2]|0)>0){c=a+60|0;d=0;e=1;do{n=e;e=(f[(f[c>>2]|0)+(d>>>5<<2)>>2]&1<<(d&31)|0)!=0;Uj(k,n^e^1);d=d+1|0}while((d|0)<(f[g>>2]|0))}Kc(k,b);f[l>>2]=f[a+16>>2];d=h;c=f[d>>2]|0;d=f[d+4>>2]|0;if(!((d|0)>0|(d|0)==0&c>>>0>0)){f[i>>2]=f[b+4>>2];f[j>>2]=f[i>>2];vf(b,j,l,l+4|0)|0;c=h;d=f[c+4>>2]|0;c=f[c>>2]|0}f[l>>2]=f[a+24>>2];if((d|0)>0|(d|0)==0&c>>>0>0){jk(k);u=m;return 1}f[i>>2]=f[b+4>>2];f[j>>2]=f[i>>2];vf(b,j,l,l+4|0)|0;jk(k);u=m;return 1}function Yf(a,c,d){a=a|0;c=c|0;d=d|0;var e=Ka,g=Ka,i=0,j=0,k=0;switch(b[a+24>>0]|0){case 1:{j=f[c>>2]|0;c=a+48|0;i=f[c>>2]|0;c=f[c+4>>2]|0;k=a+40|0;c=(Do(En(f[k>>2]|0,f[k+4>>2]|0,j|0,((j|0)<0)<<31>>31|0)|0,I|0,i|0,c|0)|0)+(f[f[a>>2]>>2]|0)|0;g=$((h[c>>0]|h[c+1>>0]<<8)<<16>>16);e=$(g/$(32767.0));e=(b[a+32>>0]|0)==0?g:e;break}case 2:{i=f[c>>2]|0;k=a+48|0;j=f[k>>2]|0;k=f[k+4>>2]|0;c=a+40|0;k=(Do(En(f[c>>2]|0,f[c+4>>2]|0,i|0,((i|0)<0)<<31>>31|0)|0,I|0,j|0,k|0)|0)+(f[f[a>>2]>>2]|0)|0;g=$(((h[k>>0]|h[k+1>>0]<<8|h[k+2>>0]<<16|h[k+3>>0]<<24)&65535)<<16>>16);e=$(g/$(32767.0));e=(b[a+32>>0]|0)==0?g:e;break}case 3:{i=f[c>>2]|0;k=a+48|0;j=f[k>>2]|0;k=f[k+4>>2]|0;c=a+40|0;k=(Do(En(f[c>>2]|0,f[c+4>>2]|0,i|0,((i|0)<0)<<31>>31|0)|0,I|0,j|0,k|0)|0)+(f[f[a>>2]>>2]|0)|0;g=$((h[k>>0]|h[k+1>>0]<<8)<<16>>16);e=$(g/$(32767.0));e=(b[a+32>>0]|0)==0?g:e;break}case 4:{i=f[c>>2]|0;k=a+48|0;j=f[k>>2]|0;k=f[k+4>>2]|0;c=a+40|0;k=(Do(En(f[c>>2]|0,f[c+4>>2]|0,i|0,((i|0)<0)<<31>>31|0)|0,I|0,j|0,k|0)|0)+(f[f[a>>2]>>2]|0)|0;g=$(((h[k>>0]|h[k+1>>0]<<8|h[k+2>>0]<<16|h[k+3>>0]<<24)&65535)<<16>>16);e=$(g/$(32767.0));e=(b[a+32>>0]|0)==0?g:e;break}default:{k=0;return k|0}}n[d>>2]=e;k=1;return k|0}function Zf(a,b,c,d,e,g){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;g=g|0;var h=0,i=0,j=0,k=0,l=0,m=0,n=0;n=u;u=u+32|0;m=n;l=n+16|0;h=f[b+4>>2]|0;if((d|0)<=-1)Fa(17509,17693,63,17731);i=f[h+8>>2]|0;if(((f[h+12>>2]|0)-i>>2|0)<=(d|0))Fa(17639,17693,64,17731);i=f[i+(d<<2)>>2]|0;do if((c+-1|0)>>>0<6&(Ra[f[(f[b>>2]|0)+8>>2]&127](b)|0)==1){j=Ra[f[(f[b>>2]|0)+48>>2]&127](b)|0;k=Va[f[(f[b>>2]|0)+56>>2]&127](b,d)|0;if((j|0)==0|(k|0)==0){f[a>>2]=0;u=n;return}h=Va[f[(f[b>>2]|0)+52>>2]&127](b,d)|0;if(!h){f[m>>2]=f[b+52>>2];f[m+4>>2]=j;f[m+12>>2]=k;f[m+8>>2]=k+12;Ic(a,l,c,i,e,m,g);if(!(f[a>>2]|0)){f[a>>2]=0;break}u=n;return}else{f[m>>2]=f[b+52>>2];f[m+4>>2]=h;f[m+12>>2]=k;f[m+8>>2]=k+12;Hc(a,l,c,i,e,m,g);if(!(f[a>>2]|0)){f[a>>2]=0;break}u=n;return}}while(0);f[a>>2]=0;u=n;return}function _f(a,b){a=a|0;b=b|0;var c=0,d=0,e=0,g=0,h=0,i=0,j=0,k=0,l=0,m=0,n=0;m=u;u=u+48|0;j=m+44|0;i=m+40|0;l=m+36|0;g=m+32|0;k=m;f[g>>2]=f[a+80>>2];h=b+16|0;e=h;d=f[e+4>>2]|0;if(!((d|0)>0|(d|0)==0&(f[e>>2]|0)>>>0>0)){f[i>>2]=f[b+4>>2];f[j>>2]=f[i>>2];vf(b,j,g,g+4|0)|0}Hn(k);Jl(k);if((f[g>>2]|0)>0){c=a+76|0;d=0;e=1;do{n=e;e=(f[(f[c>>2]|0)+(d>>>5<<2)>>2]&1<<(d&31)|0)!=0;Uj(k,n^e^1);d=d+1|0}while((d|0)<(f[g>>2]|0))}Kc(k,b);f[l>>2]=f[a+12>>2];d=h;c=f[d>>2]|0;d=f[d+4>>2]|0;if(!((d|0)>0|(d|0)==0&c>>>0>0)){f[i>>2]=f[b+4>>2];f[j>>2]=f[i>>2];vf(b,j,l,l+4|0)|0;c=h;d=f[c+4>>2]|0;c=f[c>>2]|0}f[l>>2]=f[a+16>>2];if((d|0)>0|(d|0)==0&c>>>0>0){jk(k);u=m;return 1}f[i>>2]=f[b+4>>2];f[j>>2]=f[i>>2];vf(b,j,l,l+4|0)|0;jk(k);u=m;return 1}function $f(a,c,d){a=a|0;c=c|0;d=d|0;var e=0,g=0,i=0;switch(b[a+24>>0]|0){case 1:{g=f[c>>2]|0;c=a+48|0;e=f[c>>2]|0;c=f[c+4>>2]|0;i=a+40|0;c=Do(En(f[i>>2]|0,f[i+4>>2]|0,g|0,((g|0)<0)<<31>>31|0)|0,I|0,e|0,c|0)|0;f[d>>2]=h[(f[f[a>>2]>>2]|0)+c>>0];a=d+4|0;f[a>>2]=0;f[a+4>>2]=0;f[a+8>>2]=0;a=1;return a|0}case 2:{e=f[c>>2]|0;i=a+48|0;g=f[i>>2]|0;i=f[i+4>>2]|0;c=a+40|0;i=(Do(En(f[c>>2]|0,f[c+4>>2]|0,e|0,((e|0)<0)<<31>>31|0)|0,I|0,g|0,i|0)|0)+(f[f[a>>2]>>2]|0)|0;i=h[i>>0]|h[i+1>>0]<<8;f[d>>2]=i&255;f[d+4>>2]=(i&65535)>>>8&65535;i=d+8|0;f[i>>2]=0;f[i+4>>2]=0;i=1;return i|0}case 3:{i=f[c>>2]|0;e=a+48|0;g=f[e>>2]|0;e=f[e+4>>2]|0;c=a+40|0;e=(Do(En(f[c>>2]|0,f[c+4>>2]|0,i|0,((i|0)<0)<<31>>31|0)|0,I|0,g|0,e|0)|0)+(f[f[a>>2]>>2]|0)|0;g=b[e+1>>0]|0;i=b[e+2>>0]|0;f[d>>2]=h[e>>0];f[d+4>>2]=g&255;f[d+8>>2]=i&255;f[d+12>>2]=0;i=1;return i|0}case 4:{e=f[c>>2]|0;i=a+48|0;g=f[i>>2]|0;i=f[i+4>>2]|0;c=a+40|0;i=(Do(En(f[c>>2]|0,f[c+4>>2]|0,e|0,((e|0)<0)<<31>>31|0)|0,I|0,g|0,i|0)|0)+(f[f[a>>2]>>2]|0)|0;i=h[i>>0]|h[i+1>>0]<<8|h[i+2>>0]<<16|h[i+3>>0]<<24;f[d>>2]=i&255;f[d+4>>2]=i>>>8&255;f[d+8>>2]=i>>>16&255;f[d+12>>2]=i>>>24;i=1;return i|0}default:{i=0;return i|0}}return 0}function ag(a,b){a=a|0;b=b|0;var c=0,d=0,e=0,g=0,h=0,i=0,j=0,k=0,l=0,m=0,n=0;c=f[b>>2]|0;j=a+12|0;b=c+1|0;if((c|0)<0)return 1;h=((b|0)%3|0|0)==0?c+-2|0:b;k=c+(((c>>>0)%3|0|0)==0?2:-1)|0;n=a+184|0;m=a+188|0;l=a+288|0;if((f[(f[(f[j>>2]|0)+12>>2]|0)+(c<<2)>>2]|0)>=0?(e=f[n>>2]|0,(f[m>>2]|0)!=(e|0)):0){g=c>>>5;d=1<<(c&31);b=e;c=0;do{a=(f[l>>2]|0)+(c<<5)|0;if(!(d&f[(f[b+(c*108|0)+4>>2]|0)+(g<<2)>>2]))Uj(a,0);else Uj(a,1);c=c+1|0;b=f[n>>2]|0}while(c>>>0<(((f[m>>2]|0)-b|0)/108|0)>>>0)}if(((h|0)>=0?(f[(f[(f[j>>2]|0)+12>>2]|0)+(h<<2)>>2]|0)>=0:0)?(i=f[n>>2]|0,(f[m>>2]|0)!=(i|0)):0){e=h>>>5;d=1<<(h&31);b=i;c=0;do{a=(f[l>>2]|0)+(c<<5)|0;if(!(d&f[(f[b+(c*108|0)+4>>2]|0)+(e<<2)>>2]))Uj(a,0);else Uj(a,1);c=c+1|0;b=f[n>>2]|0}while(c>>>0<(((f[m>>2]|0)-b|0)/108|0)>>>0)}if((k|0)<0)return 1;if((f[(f[(f[j>>2]|0)+12>>2]|0)+(k<<2)>>2]|0)<0)return 1;b=f[n>>2]|0;if((f[m>>2]|0)==(b|0))return 1;e=k>>>5;d=1<<(k&31);c=0;do{a=(f[l>>2]|0)+(c<<5)|0;if(!(d&f[(f[b+(c*108|0)+4>>2]|0)+(e<<2)>>2]))Uj(a,0);else Uj(a,1);c=c+1|0;b=f[n>>2]|0}while(c>>>0<(((f[m>>2]|0)-b|0)/108|0)>>>0);return 1}function bg(a,c,d){a=a|0;c=c|0;d=d|0;var e=Ka,g=Ka,i=0,j=0,k=0;switch(b[a+24>>0]|0){case 1:{j=f[c>>2]|0;c=a+48|0;i=f[c>>2]|0;c=f[c+4>>2]|0;k=a+40|0;c=(Do(En(f[k>>2]|0,f[k+4>>2]|0,j|0,((j|0)<0)<<31>>31|0)|0,I|0,i|0,c|0)|0)+(f[f[a>>2]>>2]|0)|0;g=$((h[c>>0]|h[c+1>>0]<<8)&65535);e=$(g/$(65535.0));e=(b[a+32>>0]|0)==0?g:e;break}case 2:{i=f[c>>2]|0;k=a+48|0;j=f[k>>2]|0;k=f[k+4>>2]|0;c=a+40|0;k=(Do(En(f[c>>2]|0,f[c+4>>2]|0,i|0,((i|0)<0)<<31>>31|0)|0,I|0,j|0,k|0)|0)+(f[f[a>>2]>>2]|0)|0;g=$((h[k>>0]|h[k+1>>0]<<8|h[k+2>>0]<<16|h[k+3>>0]<<24)&65535);e=$(g/$(65535.0));e=(b[a+32>>0]|0)==0?g:e;break}case 3:{i=f[c>>2]|0;k=a+48|0;j=f[k>>2]|0;k=f[k+4>>2]|0;c=a+40|0;k=(Do(En(f[c>>2]|0,f[c+4>>2]|0,i|0,((i|0)<0)<<31>>31|0)|0,I|0,j|0,k|0)|0)+(f[f[a>>2]>>2]|0)|0;g=$((h[k>>0]|h[k+1>>0]<<8)&65535);e=$(g/$(65535.0));e=(b[a+32>>0]|0)==0?g:e;break}case 4:{i=f[c>>2]|0;k=a+48|0;j=f[k>>2]|0;k=f[k+4>>2]|0;c=a+40|0;k=(Do(En(f[c>>2]|0,f[c+4>>2]|0,i|0,((i|0)<0)<<31>>31|0)|0,I|0,j|0,k|0)|0)+(f[f[a>>2]>>2]|0)|0;g=$((h[k>>0]|h[k+1>>0]<<8|h[k+2>>0]<<16|h[k+3>>0]<<24)&65535);e=$(g/$(65535.0));e=(b[a+32>>0]|0)==0?g:e;break}default:{k=0;return k|0}}n[d>>2]=e;k=1;return k|0}function cg(a,b,c){a=a|0;b=b|0;c=c|0;var d=0,e=0,g=0,h=0,i=0,j=0,k=0,l=0,m=0;m=u;u=u+32|0;i=m+28|0;d=m+24|0;j=m+20|0;k=m+16|0;l=m+12|0;e=m+8|0;g=m+4|0;h=m;if(!c){a=0;u=m;return a|0}switch(f[a+28>>2]|0){case 9:{f[d>>2]=f[b>>2];f[i>>2]=f[d>>2];a=rc(a,i,c)|0;u=m;return a|0}case 2:{f[j>>2]=f[b>>2];f[i>>2]=f[j>>2];a=Re(a,i,c)|0;u=m;return a|0}case 1:{f[k>>2]=f[b>>2];f[i>>2]=f[k>>2];a=se(a,i,c)|0;u=m;return a|0}case 4:{f[l>>2]=f[b>>2];f[i>>2]=f[l>>2];a=we(a,i,c)|0;u=m;return a|0}case 3:{f[e>>2]=f[b>>2];f[i>>2]=f[e>>2];a=Yd(a,i,c)|0;u=m;return a|0}case 6:{f[g>>2]=f[b>>2];f[i>>2]=f[g>>2];a=$d(a,i,c)|0;u=m;return a|0}case 5:{f[h>>2]=f[b>>2];f[i>>2]=f[h>>2];a=Ld(a,i,c)|0;u=m;return a|0}default:{a=0;u=m;return a|0}}return 0}function dg(a,b,c){a=a|0;b=b|0;c=c|0;var d=0,e=0,g=0,h=0,i=0,j=0,k=0,l=0,m=0;m=u;u=u+32|0;i=m+28|0;d=m+24|0;j=m+20|0;k=m+16|0;l=m+12|0;e=m+8|0;g=m+4|0;h=m;if(!c){a=0;u=m;return a|0}switch(f[a+28>>2]|0){case 9:{f[d>>2]=f[b>>2];f[i>>2]=f[d>>2];a=Bc(a,i,c)|0;u=m;return a|0}case 2:{f[j>>2]=f[b>>2];f[i>>2]=f[j>>2];a=yf(a,i,c)|0;u=m;return a|0}case 1:{f[k>>2]=f[b>>2];f[i>>2]=f[k>>2];a=Me(a,i,c)|0;u=m;return a|0}case 4:{f[l>>2]=f[b>>2];f[i>>2]=f[l>>2];a=Oe(a,i,c)|0;u=m;return a|0}case 3:{f[e>>2]=f[b>>2];f[i>>2]=f[e>>2];a=pe(a,i,c)|0;u=m;return a|0}case 6:{f[g>>2]=f[b>>2];f[i>>2]=f[g>>2];a=ve(a,i,c)|0;u=m;return a|0}case 5:{f[h>>2]=f[b>>2];f[i>>2]=f[h>>2];a=de(a,i,c)|0;u=m;return a|0}default:{a=0;u=m;return a|0}}return 0}function eg(a,b,c){a=a|0;b=b|0;c=c|0;var d=0,e=0,g=0,h=0,i=0,j=0,k=0,l=0,m=0;m=u;u=u+32|0;i=m+28|0;d=m+24|0;j=m+20|0;k=m+16|0;l=m+12|0;e=m+8|0;g=m+4|0;h=m;if(!c){a=0;u=m;return a|0}switch(f[a+28>>2]|0){case 9:{f[d>>2]=f[b>>2];f[i>>2]=f[d>>2];a=_c(a,i,c)|0;u=m;return a|0}case 2:{f[j>>2]=f[b>>2];f[i>>2]=f[j>>2];a=vg(a,i,c)|0;u=m;return a|0}case 1:{f[k>>2]=f[b>>2];f[i>>2]=f[k>>2];a=Lf(a,i,c)|0;u=m;return a|0}case 4:{f[l>>2]=f[b>>2];f[i>>2]=f[l>>2];a=Kf(a,i,c)|0;u=m;return a|0}case 3:{f[e>>2]=f[b>>2];f[i>>2]=f[e>>2];a=qf(a,i,c)|0;u=m;return a|0}case 6:{f[g>>2]=f[b>>2];f[i>>2]=f[g>>2];a=Ef(a,i,c)|0;u=m;return a|0}case 5:{f[h>>2]=f[b>>2];f[i>>2]=f[h>>2];a=$e(a,i,c)|0;u=m;return a|0}default:{a=0;u=m;return a|0}}return 0}function fg(a,c,d,e,g,h){a=a|0;c=c|0;d=d|0;e=e|0;g=g|0;h=h|0;var i=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0;p=u;u=u+96|0;o=p;if(!c){o=-1;u=p;return o|0}qn(o);lk(o,d,0,g&255,9,0,g<<2,0,0,0);j=Ff(c,o,1,e)|0;if((j|0)<=-1)Fa(17509,17693,71,17731);a=f[c+8>>2]|0;if(((f[c+12>>2]|0)-a>>2|0)<=(j|0))Fa(17639,17693,72,17731);a=f[a+(j<<2)>>2]|0;if((e|0)>0){m=a+84|0;k=a+68|0;l=a+40|0;d=a+64|0;i=0;do{if(!(b[m>>0]|0))a=f[(f[k>>2]|0)+(i<<2)>>2]|0;else a=i;r=h+((X(i,g)|0)<<2)|0;s=l;q=f[s>>2]|0;a=En(a|0,((a|0)<0)<<31>>31|0,q|0,f[s+4>>2]|0)|0;Mh((f[f[d>>2]>>2]|0)+a|0,r|0,q|0)|0;i=i+1|0}while((i|0)!=(e|0))}d=c+68|0;a=f[d>>2]|0;if(a)if((a|0)==(e|0))n=14;else j=-1;else{f[d>>2]=e;n=14}s=o+88|0;a=f[s>>2]|0;f[s>>2]=0;if(a|0){d=f[a+8>>2]|0;if(d|0){i=a+12|0;if((f[i>>2]|0)!=(d|0))f[i>>2]=d;Lq(d)}Lq(a)}a=f[o+68>>2]|0;if(a|0){i=o+72|0;d=f[i>>2]|0;if((d|0)!=(a|0))f[i>>2]=d+(~((d+-4-a|0)>>>2)<<2);Lq(a)}s=o+64|0;a=f[s>>2]|0;f[s>>2]=0;if(a|0){d=f[a>>2]|0;if(d|0){i=a+4|0;if((f[i>>2]|0)!=(d|0))f[i>>2]=d;Lq(d)}Lq(a)}s=j;u=p;return s|0}function gg(a,b,c){a=a|0;b=b|0;c=c|0;var d=0,e=0,g=0,h=0,i=0,j=0,k=0,l=0;l=f[b>>2]|0;d=f[c>>2]|0;g=d-l>>2;h=a+8|0;b=f[h>>2]|0;i=f[a>>2]|0;j=i;k=d;if(g>>>0<=b-i>>2>>>0){a=a+4|0;h=(f[a>>2]|0)-i>>2;e=g>>>0>h>>>0;h=e?l+(h<<2)|0:d;d=h-l|0;b=d>>2;if(b|0)Om(i|0,l|0,d|0)|0;d=j+(b<<2)|0;if(!e){b=f[a>>2]|0;if((b|0)==(d|0))return;f[a>>2]=b+(~((b+-4-d|0)>>>2)<<2);return}c=f[c>>2]|0;b=h;if((b|0)==(c|0))return;g=f[a>>2]|0;e=c+-4-h|0;d=g;while(1){f[d>>2]=f[b>>2];b=b+4|0;if((b|0)==(c|0))break;else d=d+4|0}f[a>>2]=g+((e>>>2)+1<<2);return}e=i;if(i){d=a+4|0;b=f[d>>2]|0;if((b|0)!=(j|0))f[d>>2]=b+(~((b+-4-i|0)>>>2)<<2);Lq(e);f[h>>2]=0;f[d>>2]=0;f[a>>2]=0;b=0}if(g>>>0>1073741823){zp(a);d=f[a>>2]|0;b=f[h>>2]|0}else d=0;j=b-d|0;b=j>>1;b=j>>2>>>0<536870911?(b>>>0>>0?g:b):1073741823;if(b>>>0>1073741823){zp(a);l=Ha(4)|0;qq(l);sa(l|0,1040,102)}g=Fn(b<<2)|0;c=a+4|0;f[c>>2]=g;f[a>>2]=g;f[h>>2]=g+(b<<2);b=l;if((b|0)==(k|0))return;e=k+-4-l|0;d=g;while(1){f[d>>2]=f[b>>2];b=b+4|0;if((b|0)==(k|0))break;else d=d+4|0}f[c>>2]=g+((e>>>2)+1<<2);return}function hg(a,c){a=a|0;c=c|0;var d=0,e=0,g=0,h=0,i=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0;n=f[a+8>>2]|0;k=a+76|0;d=f[k>>2]|0;m=f[d+68>>2]|0;r=c+84|0;b[r>>0]=0;j=c+68|0;h=c+72|0;g=f[h>>2]|0;e=f[j>>2]|0;l=g-e>>2;if(m>>>0<=l>>>0){if(m>>>0>>0?(i=e+(m<<2)|0,(g|0)!=(i|0)):0)f[h>>2]=g+(~((g+-4-i|0)>>>2)<<2)}else{_h(j,m-l|0,5816);m=f[k>>2]|0;d=m;m=f[m+68>>2]|0}p=(f[d+88>>2]|0)-(f[d+84>>2]|0)|0;q=(p|0)/12|0;if((p|0)<=0){r=1;return r|0}p=n+28|0;o=a+80|0;n=c+68|0;a=d+84|0;k=d+88|0;l=0;while(1){d=f[a>>2]|0;if((l|0)>=(((f[k>>2]|0)-d|0)/12|0|0)){e=9;break}i=l*3|0;g=f[p>>2]|0;h=f[(f[o>>2]|0)+12>>2]|0;e=f[h+(f[g+(i<<2)>>2]<<2)>>2]|0;if(e>>>0>=m>>>0){d=0;e=14;break}if(b[r>>0]|0){e=12;break}j=f[n>>2]|0;f[j+(f[d+(l*12|0)>>2]<<2)>>2]=e;e=f[h+(f[g+(i+1<<2)>>2]<<2)>>2]|0;if(e>>>0>=m>>>0){d=0;e=14;break}f[j+(f[d+(l*12|0)+4>>2]<<2)>>2]=e;e=f[h+(f[g+(i+2<<2)>>2]<<2)>>2]|0;if(e>>>0>=m>>>0){d=0;e=14;break}f[j+(f[d+(l*12|0)+8>>2]<<2)>>2]=e;l=l+1|0;if((l|0)>=(q|0)){d=1;e=14;break}}if((e|0)==9)Fa(16554,16525,64,16549);else if((e|0)==12)Fa(16608,16627,91,16668);else if((e|0)==14)return d|0;return 0}function ig(a,c,d){a=a|0;c=c|0;d=d|0;var e=0,g=0,i=0;switch(b[a+24>>0]|0){case 1:{g=f[c>>2]|0;c=a+48|0;e=f[c>>2]|0;c=f[c+4>>2]|0;i=a+40|0;c=(Do(En(f[i>>2]|0,f[i+4>>2]|0,g|0,((g|0)<0)<<31>>31|0)|0,I|0,e|0,c|0)|0)+(f[f[a>>2]>>2]|0)|0;f[d>>2]=(h[c>>0]|h[c+1>>0]<<8)&65535;c=0;break}case 2:{g=f[c>>2]|0;c=a+48|0;i=f[c>>2]|0;c=f[c+4>>2]|0;e=a+40|0;c=(Do(En(f[e>>2]|0,f[e+4>>2]|0,g|0,((g|0)<0)<<31>>31|0)|0,I|0,i|0,c|0)|0)+(f[f[a>>2]>>2]|0)|0;c=h[c>>0]|h[c+1>>0]<<8|h[c+2>>0]<<16|h[c+3>>0]<<24;f[d>>2]=c&65535;c=c>>>16;break}case 3:{g=f[c>>2]|0;i=a+48|0;c=f[i>>2]|0;i=f[i+4>>2]|0;e=a+40|0;i=(Do(En(f[e>>2]|0,f[e+4>>2]|0,g|0,((g|0)<0)<<31>>31|0)|0,I|0,c|0,i|0)|0)+(f[f[a>>2]>>2]|0)|0;c=i+2|0;c=h[c>>0]|h[c+1>>0]<<8;f[d>>2]=(h[i>>0]|h[i+1>>0]<<8)&65535;c=c&65535;break}case 4:{g=f[c>>2]|0;c=a+48|0;i=f[c>>2]|0;c=f[c+4>>2]|0;e=a+40|0;c=(Do(En(f[e>>2]|0,f[e+4>>2]|0,g|0,((g|0)<0)<<31>>31|0)|0,I|0,i|0,c|0)|0)+(f[f[a>>2]>>2]|0)|0;i=c;i=h[i>>0]|h[i+1>>0]<<8|h[i+2>>0]<<16|h[i+3>>0]<<24;c=c+4|0;c=h[c>>0]|h[c+1>>0]<<8|h[c+2>>0]<<16|h[c+3>>0]<<24;f[d>>2]=i&65535;c=(co(i|0,c|0,16)|0)&65535;break}default:{i=0;return i|0}}f[d+4>>2]=c;i=1;return i|0}function jg(a,c){a=a|0;c=c|0;var d=0,e=0,g=0,h=0,i=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0;p=f[a+8>>2]|0;k=a+76|0;d=f[k>>2]|0;m=f[d+68>>2]|0;q=c+84|0;b[q>>0]=0;j=c+68|0;h=c+72|0;g=f[h>>2]|0;e=f[j>>2]|0;l=g-e>>2;if(m>>>0<=l>>>0){if(m>>>0>>0?(i=e+(m<<2)|0,(g|0)!=(i|0)):0)f[h>>2]=g+(~((g+-4-i|0)>>>2)<<2)}else{_h(j,m-l|0,5816);m=f[k>>2]|0;d=m;m=f[m+68>>2]|0}n=(f[d+88>>2]|0)-(f[d+84>>2]|0)|0;o=(n|0)/12|0;if((n|0)<=0){q=1;return q|0}n=a+80|0;l=c+68|0;a=d+84|0;j=d+88|0;k=0;while(1){d=f[a>>2]|0;if((k|0)>=(((f[j>>2]|0)-d|0)/12|0|0)){e=9;break}h=k*3|0;g=f[(f[n>>2]|0)+12>>2]|0;e=f[g+(f[(f[p>>2]|0)+(h<<2)>>2]<<2)>>2]|0;if(e>>>0>=m>>>0){d=0;e=13;break}if(b[q>>0]|0){e=12;break}i=f[l>>2]|0;f[i+(f[d+(k*12|0)>>2]<<2)>>2]=e;e=f[g+(f[(f[p>>2]|0)+(h+1<<2)>>2]<<2)>>2]|0;if(e>>>0>=m>>>0){d=0;e=13;break}f[i+(f[d+(k*12|0)+4>>2]<<2)>>2]=e;e=f[g+(f[(f[p>>2]|0)+(h+2<<2)>>2]<<2)>>2]|0;if(e>>>0>=m>>>0){d=0;e=13;break}f[i+(f[d+(k*12|0)+8>>2]<<2)>>2]=e;k=k+1|0;if((k|0)>=(o|0)){d=1;e=13;break}}if((e|0)==9)Fa(16554,16525,64,16549);else if((e|0)==12)Fa(16608,16627,91,16668);else if((e|0)==13)return d|0;return 0}function kg(a,c,d){a=a|0;c=c|0;d=d|0;var e=0,g=0,i=0;switch(b[a+24>>0]|0){case 1:{g=f[c>>2]|0;c=a+48|0;e=f[c>>2]|0;c=f[c+4>>2]|0;i=a+40|0;c=Do(En(f[i>>2]|0,f[i+4>>2]|0,g|0,((g|0)<0)<<31>>31|0)|0,I|0,e|0,c|0)|0;f[d>>2]=b[(f[f[a>>2]>>2]|0)+c>>0];a=d+4|0;f[a>>2]=0;f[a+4>>2]=0;a=1;return a|0}case 2:{e=f[c>>2]|0;i=a+48|0;g=f[i>>2]|0;i=f[i+4>>2]|0;c=a+40|0;i=(Do(En(f[c>>2]|0,f[c+4>>2]|0,e|0,((e|0)<0)<<31>>31|0)|0,I|0,g|0,i|0)|0)+(f[f[a>>2]>>2]|0)|0;i=h[i>>0]|h[i+1>>0]<<8;f[d>>2]=(i&65535)<<24>>24;f[d+4>>2]=((i&65535)>>>8&65535)<<24>>24;f[d+8>>2]=0;i=1;return i|0}case 3:{i=f[c>>2]|0;e=a+48|0;g=f[e>>2]|0;e=f[e+4>>2]|0;c=a+40|0;e=(Do(En(f[c>>2]|0,f[c+4>>2]|0,i|0,((i|0)<0)<<31>>31|0)|0,I|0,g|0,e|0)|0)+(f[f[a>>2]>>2]|0)|0;g=b[e+1>>0]|0;i=b[e+2>>0]|0;f[d>>2]=b[e>>0];f[d+4>>2]=g<<24>>24;f[d+8>>2]=i<<24>>24;i=1;return i|0}case 4:{e=f[c>>2]|0;i=a+48|0;g=f[i>>2]|0;i=f[i+4>>2]|0;c=a+40|0;i=(Do(En(f[c>>2]|0,f[c+4>>2]|0,e|0,((e|0)<0)<<31>>31|0)|0,I|0,g|0,i|0)|0)+(f[f[a>>2]>>2]|0)|0;i=h[i>>0]|h[i+1>>0]<<8|h[i+2>>0]<<16|h[i+3>>0]<<24;f[d>>2]=i<<24>>24;f[d+4>>2]=i<<16>>24;f[d+8>>2]=i<<8>>24;i=1;return i|0}default:{i=0;return i|0}}return 0}function lg(a,c){a=a|0;c=c|0;var d=0,e=0,g=0,h=0,i=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0;p=f[a+8>>2]|0;k=a+112|0;d=f[k>>2]|0;m=f[d+68>>2]|0;q=c+84|0;b[q>>0]=0;j=c+68|0;h=c+72|0;g=f[h>>2]|0;e=f[j>>2]|0;l=g-e>>2;if(m>>>0<=l>>>0){if(m>>>0>>0?(i=e+(m<<2)|0,(g|0)!=(i|0)):0)f[h>>2]=g+(~((g+-4-i|0)>>>2)<<2)}else{_h(j,m-l|0,5816);m=f[k>>2]|0;d=m;m=f[m+68>>2]|0}n=(f[d+88>>2]|0)-(f[d+84>>2]|0)|0;o=(n|0)/12|0;if((n|0)<=0){q=1;return q|0}n=a+116|0;l=c+68|0;a=d+84|0;j=d+88|0;k=0;while(1){d=f[a>>2]|0;if((k|0)>=(((f[j>>2]|0)-d|0)/12|0|0)){e=9;break}h=k*3|0;g=f[(f[n>>2]|0)+12>>2]|0;e=f[g+(f[(f[p>>2]|0)+(h<<2)>>2]<<2)>>2]|0;if(e>>>0>=m>>>0){d=0;e=13;break}if(b[q>>0]|0){e=12;break}i=f[l>>2]|0;f[i+(f[d+(k*12|0)>>2]<<2)>>2]=e;e=f[g+(f[(f[p>>2]|0)+(h+1<<2)>>2]<<2)>>2]|0;if(e>>>0>=m>>>0){d=0;e=13;break}f[i+(f[d+(k*12|0)+4>>2]<<2)>>2]=e;e=f[g+(f[(f[p>>2]|0)+(h+2<<2)>>2]<<2)>>2]|0;if(e>>>0>=m>>>0){d=0;e=13;break}f[i+(f[d+(k*12|0)+8>>2]<<2)>>2]=e;k=k+1|0;if((k|0)>=(o|0)){d=1;e=13;break}}if((e|0)==9)Fa(16554,16525,64,16549);else if((e|0)==12)Fa(16608,16627,91,16668);else if((e|0)==13)return d|0;return 0}function mg(a,c){a=a|0;c=c|0;var d=0,e=0,g=0,h=0,i=0,j=0,k=0,l=0;l=Fn(40)|0;e=l+16|0;Rl(e,c);Rl(l+28|0,c+12|0);c=a+4|0;d=f[c>>2]|0;do if(d){j=b[l+27>>0]|0;i=j<<24>>24<0;j=i?f[l+20>>2]|0:j&255;i=i?f[e>>2]|0:e;h=d;while(1){d=h+16|0;e=b[d+11>>0]|0;g=e<<24>>24<0;e=g?f[h+20>>2]|0:e&255;c=e>>>0>>0?e:j;if((c|0)!=0?(k=Wl(i,g?f[d>>2]|0:d,c)|0,(k|0)!=0):0)if((k|0)<0)g=7;else g=9;else if(j>>>0>>0)g=7;else g=9;if((g|0)==7){c=f[h>>2]|0;if(!c){g=8;break}}else if((g|0)==9){d=h+4|0;c=f[d>>2]|0;if(!c){g=11;break}}h=c}if((g|0)==8){e=h;d=h;break}else if((g|0)==11){e=h;break}}else{e=c;d=c}while(0);f[l>>2]=0;f[l+4>>2]=0;f[l+8>>2]=e;f[d>>2]=l;c=f[f[a>>2]>>2]|0;if(!c){k=l;j=a+4|0;j=f[j>>2]|0;xf(j,k);a=a+8|0;k=f[a>>2]|0;k=k+1|0;f[a>>2]=k;return l|0}f[a>>2]=c;k=f[d>>2]|0;j=a+4|0;j=f[j>>2]|0;xf(j,k);a=a+8|0;k=f[a>>2]|0;k=k+1|0;f[a>>2]=k;return l|0}function ng(a){a=a|0;var b=0,c=0,d=0,e=0,g=0,h=0;g=a+140|0;b=f[g>>2]|0;if(b|0){h=a+144|0;c=f[h>>2]|0;if((c|0)!=(b|0)){do{d=c+-12|0;f[h>>2]=d;e=f[d>>2]|0;if(!e)c=d;else{d=c+-8|0;c=f[d>>2]|0;if((c|0)!=(e|0))f[d>>2]=c+(~((c+-4-e|0)>>>2)<<2);Lq(e);c=f[h>>2]|0}}while((c|0)!=(b|0));b=f[g>>2]|0}Lq(b)}g=a+128|0;b=f[g>>2]|0;if(b|0){h=a+132|0;c=f[h>>2]|0;if((c|0)!=(b|0)){do{d=c+-12|0;f[h>>2]=d;e=f[d>>2]|0;if(!e)c=d;else{d=c+-8|0;c=f[d>>2]|0;if((c|0)!=(e|0))f[d>>2]=c+(~((c+-4-e|0)>>>2)<<2);Lq(e);c=f[h>>2]|0}}while((c|0)!=(b|0));b=f[g>>2]|0}Lq(b)}b=f[a+116>>2]|0;if(b|0){d=a+120|0;c=f[d>>2]|0;if((c|0)!=(b|0))f[d>>2]=c+(~((c+-4-b|0)>>>2)<<2);Lq(b)}b=f[a+104>>2]|0;if(b|0){d=a+108|0;c=f[d>>2]|0;if((c|0)!=(b|0))f[d>>2]=c+(~((c+-4-b|0)>>>2)<<2);Lq(b)}b=f[a+92>>2]|0;if(!b){h=a+72|0;Xl(h);h=a+52|0;Xl(h);h=a+32|0;Xl(h);a=a+12|0;Xl(a);return}d=a+96|0;c=f[d>>2]|0;if((c|0)!=(b|0))f[d>>2]=c+(~((c+-4-b|0)>>>2)<<2);Lq(b);h=a+72|0;Xl(h);h=a+52|0;Xl(h);h=a+32|0;Xl(h);a=a+12|0;Xl(a);return}function og(a){a=a|0;var b=0,c=0,d=0,e=0,g=0,h=0;g=a+152|0;b=f[g>>2]|0;if(b|0){h=a+156|0;c=f[h>>2]|0;if((c|0)!=(b|0)){do{d=c+-12|0;f[h>>2]=d;e=f[d>>2]|0;if(!e)c=d;else{d=c+-8|0;c=f[d>>2]|0;if((c|0)!=(e|0))f[d>>2]=c+(~((c+-4-e|0)>>>2)<<2);Lq(e);c=f[h>>2]|0}}while((c|0)!=(b|0));b=f[g>>2]|0}Lq(b)}g=a+140|0;b=f[g>>2]|0;if(b|0){h=a+144|0;c=f[h>>2]|0;if((c|0)!=(b|0)){do{d=c+-12|0;f[h>>2]=d;e=f[d>>2]|0;if(!e)c=d;else{d=c+-8|0;c=f[d>>2]|0;if((c|0)!=(e|0))f[d>>2]=c+(~((c+-4-e|0)>>>2)<<2);Lq(e);c=f[h>>2]|0}}while((c|0)!=(b|0));b=f[g>>2]|0}Lq(b)}b=f[a+128>>2]|0;if(b|0){d=a+132|0;c=f[d>>2]|0;if((c|0)!=(b|0))f[d>>2]=c+(~((c+-4-b|0)>>>2)<<2);Lq(b)}b=f[a+116>>2]|0;if(b|0){d=a+120|0;c=f[d>>2]|0;if((c|0)!=(b|0))f[d>>2]=c+(~((c+-4-b|0)>>>2)<<2);Lq(b)}b=f[a+104>>2]|0;if(!b){h=a+84|0;Xl(h);h=a+64|0;Xl(h);h=a+44|0;Xl(h);a=a+12|0;jk(a);return}d=a+108|0;c=f[d>>2]|0;if((c|0)!=(b|0))f[d>>2]=c+(~((c+-4-b|0)>>>2)<<2);Lq(b);h=a+84|0;Xl(h);h=a+64|0;Xl(h);h=a+44|0;Xl(h);a=a+12|0;jk(a);return}function pg(a,c,d){a=a|0;c=c|0;d=d|0;var e=0,g=0,i=0;switch(b[a+24>>0]|0){case 1:{g=f[c>>2]|0;c=a+48|0;e=f[c>>2]|0;c=f[c+4>>2]|0;i=a+40|0;c=Do(En(f[i>>2]|0,f[i+4>>2]|0,g|0,((g|0)<0)<<31>>31|0)|0,I|0,e|0,c|0)|0;f[d>>2]=h[(f[f[a>>2]>>2]|0)+c>>0];a=d+4|0;f[a>>2]=0;f[a+4>>2]=0;a=1;return a|0}case 2:{e=f[c>>2]|0;i=a+48|0;g=f[i>>2]|0;i=f[i+4>>2]|0;c=a+40|0;i=(Do(En(f[c>>2]|0,f[c+4>>2]|0,e|0,((e|0)<0)<<31>>31|0)|0,I|0,g|0,i|0)|0)+(f[f[a>>2]>>2]|0)|0;i=h[i>>0]|h[i+1>>0]<<8;f[d>>2]=i&255;f[d+4>>2]=(i&65535)>>>8&65535;f[d+8>>2]=0;i=1;return i|0}case 3:{i=f[c>>2]|0;e=a+48|0;g=f[e>>2]|0;e=f[e+4>>2]|0;c=a+40|0;e=(Do(En(f[c>>2]|0,f[c+4>>2]|0,i|0,((i|0)<0)<<31>>31|0)|0,I|0,g|0,e|0)|0)+(f[f[a>>2]>>2]|0)|0;g=b[e+1>>0]|0;i=b[e+2>>0]|0;f[d>>2]=h[e>>0];f[d+4>>2]=g&255;f[d+8>>2]=i&255;i=1;return i|0}case 4:{e=f[c>>2]|0;i=a+48|0;g=f[i>>2]|0;i=f[i+4>>2]|0;c=a+40|0;i=(Do(En(f[c>>2]|0,f[c+4>>2]|0,e|0,((e|0)<0)<<31>>31|0)|0,I|0,g|0,i|0)|0)+(f[f[a>>2]>>2]|0)|0;i=h[i>>0]|h[i+1>>0]<<8|h[i+2>>0]<<16|h[i+3>>0]<<24;f[d>>2]=i&255;f[d+4>>2]=i>>>8&255;f[d+8>>2]=i>>>16&255;i=1;return i|0}default:{i=0;return i|0}}return 0}function qg(a,c,d){a=a|0;c=c|0;d=d|0;var e=Ka,g=Ka,i=0,j=0,k=0;switch(b[a+24>>0]|0){case 1:{j=f[c>>2]|0;c=a+48|0;i=f[c>>2]|0;c=f[c+4>>2]|0;k=a+40|0;c=Do(En(f[k>>2]|0,f[k+4>>2]|0,j|0,((j|0)<0)<<31>>31|0)|0,I|0,i|0,c|0)|0;g=$(b[(f[f[a>>2]>>2]|0)+c>>0]|0);e=$(g/$(127.0));e=(b[a+32>>0]|0)==0?g:e;break}case 2:{i=f[c>>2]|0;k=a+48|0;j=f[k>>2]|0;k=f[k+4>>2]|0;c=a+40|0;k=(Do(En(f[c>>2]|0,f[c+4>>2]|0,i|0,((i|0)<0)<<31>>31|0)|0,I|0,j|0,k|0)|0)+(f[f[a>>2]>>2]|0)|0;g=$(((h[k>>0]|h[k+1>>0]<<8)&255)<<24>>24);e=$(g/$(127.0));e=(b[a+32>>0]|0)==0?g:e;break}case 3:{i=f[c>>2]|0;k=a+48|0;j=f[k>>2]|0;k=f[k+4>>2]|0;c=a+40|0;k=Do(En(f[c>>2]|0,f[c+4>>2]|0,i|0,((i|0)<0)<<31>>31|0)|0,I|0,j|0,k|0)|0;g=$(b[(f[f[a>>2]>>2]|0)+k>>0]|0);e=$(g/$(127.0));e=(b[a+32>>0]|0)==0?g:e;break}case 4:{i=f[c>>2]|0;k=a+48|0;j=f[k>>2]|0;k=f[k+4>>2]|0;c=a+40|0;k=(Do(En(f[c>>2]|0,f[c+4>>2]|0,i|0,((i|0)<0)<<31>>31|0)|0,I|0,j|0,k|0)|0)+(f[f[a>>2]>>2]|0)|0;g=$(((h[k>>0]|h[k+1>>0]<<8|h[k+2>>0]<<16|h[k+3>>0]<<24)&255)<<24>>24);e=$(g/$(127.0));e=(b[a+32>>0]|0)==0?g:e;break}default:{k=0;return k|0}}n[d>>2]=e;k=1;return k|0}function rg(a,b,c){a=a|0;b=b|0;c=c|0;var d=0,e=0,g=0,h=0,i=0,j=0,k=0,l=0,m=0;m=b;h=c-m>>2;i=a+8|0;d=f[i>>2]|0;j=f[a>>2]|0;k=j;if(h>>>0<=d-j>>2>>>0){l=a+4|0;a=(f[l>>2]|0)-j>>2;h=h>>>0>a>>>0;a=b+(a<<2)|0;g=h?a:c;i=g;e=i-m|0;d=e>>2;if(d|0)Om(j|0,b|0,e|0)|0;d=k+(d<<2)|0;if(!h){b=f[l>>2]|0;if((b|0)==(d|0))return;f[l>>2]=b+(~((b+-4-d|0)>>>2)<<2);return}if((g|0)==(c|0))return;g=f[l>>2]|0;d=c+-4-i|0;e=g;b=a;while(1){f[e>>2]=f[b>>2];b=b+4|0;if((b|0)==(c|0))break;else e=e+4|0}f[l>>2]=g+((d>>>2)+1<<2);return}g=j;if(j){e=a+4|0;d=f[e>>2]|0;if((d|0)!=(k|0))f[e>>2]=d+(~((d+-4-j|0)>>>2)<<2);Lq(g);f[i>>2]=0;f[e>>2]=0;f[a>>2]=0;d=0}if(h>>>0>1073741823){zp(a);e=f[a>>2]|0;d=f[i>>2]|0}else e=0;l=d-e|0;d=l>>1;d=l>>2>>>0<536870911?(d>>>0>>0?h:d):1073741823;if(d>>>0>1073741823){zp(a);c=Ha(4)|0;qq(c);sa(c|0,1040,102)}h=Fn(d<<2)|0;g=a+4|0;f[g>>2]=h;f[a>>2]=h;f[i>>2]=h+(d<<2);if((b|0)==(c|0))return;d=c+-4-m|0;e=h;while(1){f[e>>2]=f[b>>2];b=b+4|0;if((b|0)==(c|0))break;else e=e+4|0}f[g>>2]=h+((d>>>2)+1<<2);return}function sg(a,c,d){a=a|0;c=c|0;d=d|0;var e=0,g=0,h=0,i=0,j=0,k=0,l=0,m=0;l=c;j=d-l|0;k=a+8|0;e=f[k>>2]|0;i=f[a>>2]|0;m=i;if(j>>>0>e-i>>2>>>0){h=i;if(i){g=a+4|0;e=f[g>>2]|0;if((e|0)!=(m|0))f[g>>2]=e+(~((e+-4-i|0)>>>2)<<2);Lq(h);f[k>>2]=0;f[g>>2]=0;f[a>>2]=0;e=0}if(j>>>0>1073741823){zp(a);g=f[a>>2]|0;e=f[k>>2]|0}else g=0;m=e-g|0;g=m>>1;g=m>>2>>>0<536870911?(g>>>0>>0?j:g):1073741823;if(g>>>0>1073741823){zp(a);d=Ha(4)|0;qq(d);sa(d|0,1040,102)}e=Fn(g<<2)|0;h=a+4|0;f[h>>2]=e;f[a>>2]=e;f[k>>2]=e+(g<<2);if((c|0)==(d|0))return;do{f[e>>2]=b[c>>0];c=c+1|0;e=e+4|0;f[h>>2]=e}while((c|0)!=(d|0));return}else{k=a+4|0;g=f[k>>2]|0;h=g-i>>2;i=j>>>0>h>>>0;j=c+h|0;h=i?j:d;if((h|0)==(c|0))c=m;else{e=m;while(1){f[e>>2]=b[c>>0];c=c+1|0;if((c|0)==(h|0))break;else e=e+4|0}c=m+(h-l<<2)|0}if(!i){if((g|0)==(c|0))return;f[k>>2]=g+(~((g+-4-c|0)>>>2)<<2);return}if((h|0)==(d|0))return;e=f[k>>2]|0;c=j;do{f[e>>2]=b[c>>0];c=c+1|0;e=e+4|0;f[k>>2]=e}while((c|0)!=(d|0));return}}function tg(a,c,d){a=a|0;c=c|0;d=d|0;var e=Ka,g=Ka,i=0,j=0,k=0;switch(b[a+24>>0]|0){case 1:{j=f[c>>2]|0;c=a+48|0;i=f[c>>2]|0;c=f[c+4>>2]|0;k=a+40|0;c=Do(En(f[k>>2]|0,f[k+4>>2]|0,j|0,((j|0)<0)<<31>>31|0)|0,I|0,i|0,c|0)|0;g=$(h[(f[f[a>>2]>>2]|0)+c>>0]|0);e=$(g/$(255.0));e=(b[a+32>>0]|0)==0?g:e;break}case 2:{i=f[c>>2]|0;k=a+48|0;j=f[k>>2]|0;k=f[k+4>>2]|0;c=a+40|0;k=(Do(En(f[c>>2]|0,f[c+4>>2]|0,i|0,((i|0)<0)<<31>>31|0)|0,I|0,j|0,k|0)|0)+(f[f[a>>2]>>2]|0)|0;g=$((h[k>>0]|h[k+1>>0]<<8)&255);e=$(g/$(255.0));e=(b[a+32>>0]|0)==0?g:e;break}case 3:{i=f[c>>2]|0;k=a+48|0;j=f[k>>2]|0;k=f[k+4>>2]|0;c=a+40|0;k=Do(En(f[c>>2]|0,f[c+4>>2]|0,i|0,((i|0)<0)<<31>>31|0)|0,I|0,j|0,k|0)|0;g=$(h[(f[f[a>>2]>>2]|0)+k>>0]|0);e=$(g/$(255.0));e=(b[a+32>>0]|0)==0?g:e;break}case 4:{i=f[c>>2]|0;k=a+48|0;j=f[k>>2]|0;k=f[k+4>>2]|0;c=a+40|0;k=(Do(En(f[c>>2]|0,f[c+4>>2]|0,i|0,((i|0)<0)<<31>>31|0)|0,I|0,j|0,k|0)|0)+(f[f[a>>2]>>2]|0)|0;g=$((h[k>>0]|h[k+1>>0]<<8|h[k+2>>0]<<16|h[k+3>>0]<<24)&255);e=$(g/$(255.0));e=(b[a+32>>0]|0)==0?g:e;break}default:{k=0;return k|0}}n[d>>2]=e;k=1;return k|0}function ug(a,b,c,d,e){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;var g=0,h=0,i=0,j=0,k=0,l=0,m=0,n=0;l=u;u=u+16|0;k=l+12|0;i=l+8|0;h=l+4|0;j=l;f[a>>2]=f[d>>2];g=f[c>>2]|0;d=f[b>>2]|0;b=a+4|0;f[b>>2]=(g-d|0)/12|0;c=e+16|0;m=c;n=f[m+4>>2]|0;if(!((n|0)>0|(n|0)==0&(f[m>>2]|0)>>>0>0)?(f[i>>2]=f[e+4>>2],f[k>>2]=f[i>>2],vf(e,k,a,a+4|0)|0,n=c,m=f[n+4>>2]|0,!((m|0)>0|(m|0)==0&(f[n>>2]|0)>>>0>0)):0){f[i>>2]=f[e+4>>2];f[k>>2]=f[i>>2];vf(e,k,b,b+4|0)|0}if(!(f[b>>2]|0)){u=l;return 1}c=a+12|0;dn(c);b=a+32|0;dn(b);m=a+52|0;dn(m);n=a+72|0;dn(n);f[h>>2]=d;f[j>>2]=g;f[i>>2]=f[h>>2];f[k>>2]=f[j>>2];lb(a,i,k);lh(c,e);lh(b,e);lh(m,e);lh(n,e);u=l;return 1}function vg(a,c,d){a=a|0;c=c|0;d=d|0;var e=0,g=0,i=0;switch(b[a+24>>0]|0){case 1:{g=f[c>>2]|0;e=a+48|0;c=f[e>>2]|0;e=f[e+4>>2]|0;i=a+40|0;e=Do(En(f[i>>2]|0,f[i+4>>2]|0,g|0,((g|0)<0)<<31>>31|0)|0,I|0,c|0,e|0)|0;c=d;f[c>>2]=h[(f[f[a>>2]>>2]|0)+e>>0];f[c+4>>2]=0;c=0;a=0;break}case 2:{g=f[c>>2]|0;c=a+48|0;i=f[c>>2]|0;c=f[c+4>>2]|0;e=a+40|0;c=(Do(En(f[e>>2]|0,f[e+4>>2]|0,g|0,((g|0)<0)<<31>>31|0)|0,I|0,i|0,c|0)|0)+(f[f[a>>2]>>2]|0)|0;c=h[c>>0]|h[c+1>>0]<<8;a=d;f[a>>2]=c&255;f[a+4>>2]=0;c=(c&65535)>>>8&65535;a=0;break}case 3:{g=f[c>>2]|0;i=a+48|0;c=f[i>>2]|0;i=f[i+4>>2]|0;e=a+40|0;i=(Do(En(f[e>>2]|0,f[e+4>>2]|0,g|0,((g|0)<0)<<31>>31|0)|0,I|0,c|0,i|0)|0)+(f[f[a>>2]>>2]|0)|0;c=b[i+1>>0]|0;a=d;f[a>>2]=h[i>>0];f[a+4>>2]=0;c=c&255;a=0;break}case 4:{g=f[c>>2]|0;c=a+48|0;i=f[c>>2]|0;c=f[c+4>>2]|0;e=a+40|0;c=(Do(En(f[e>>2]|0,f[e+4>>2]|0,g|0,((g|0)<0)<<31>>31|0)|0,I|0,i|0,c|0)|0)+(f[f[a>>2]>>2]|0)|0;c=h[c>>0]|h[c+1>>0]<<8|h[c+2>>0]<<16|h[c+3>>0]<<24;a=d;f[a>>2]=c&255;f[a+4>>2]=0;c=c>>>8&255;a=0;break}default:{i=0;return i|0}}i=d+8|0;f[i>>2]=c;f[i+4>>2]=a;i=1;return i|0}function wg(a,b,c,d,e){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;var g=0,h=0,i=0,j=0,k=0,l=0,m=0,n=0;l=u;u=u+16|0;k=l+12|0;i=l+8|0;h=l+4|0;j=l;f[a>>2]=f[d>>2];g=f[c>>2]|0;d=f[b>>2]|0;b=a+4|0;f[b>>2]=(g-d|0)/12|0;c=e+16|0;m=c;n=f[m+4>>2]|0;if(!((n|0)>0|(n|0)==0&(f[m>>2]|0)>>>0>0)?(f[i>>2]=f[e+4>>2],f[k>>2]=f[i>>2],vf(e,k,a,a+4|0)|0,n=c,m=f[n+4>>2]|0,!((m|0)>0|(m|0)==0&(f[n>>2]|0)>>>0>0)):0){f[i>>2]=f[e+4>>2];f[k>>2]=f[i>>2];vf(e,k,b,b+4|0)|0}if(!(f[b>>2]|0)){u=l;return 1}c=a+12|0;Jl(c);b=a+44|0;dn(b);m=a+64|0;dn(m);n=a+84|0;dn(n);f[h>>2]=d;f[j>>2]=g;f[i>>2]=f[h>>2];f[k>>2]=f[j>>2];mb(a,i,k);Kc(c,e);lh(b,e);lh(m,e);lh(n,e);u=l;return 1}function xg(a,b){a=a|0;b=b|0;var c=0,d=0,e=0,g=0,h=0,i=0,j=0,k=0,l=0,m=0,n=0;n=u;u=u+16|0;j=n+12|0;k=n+8|0;d=n+4|0;g=n;if(!b){c=Fn(64)|0;b=Fn(12)|0;e=f[(f[a+4>>2]|0)+68>>2]|0;f[b+4>>2]=0;f[b>>2]=5408;f[b+8>>2]=e;f[g>>2]=b;Ql(c,g,0);f[d>>2]=c;b=a+12|0;e=f[b>>2]|0;if(e>>>0<(f[a+16>>2]|0)>>>0){f[d>>2]=0;f[e>>2]=c;f[b>>2]=e+4}else uh(a+8|0,d);c=f[d>>2]|0;f[d>>2]=0;if(c|0)Oa[f[(f[c>>2]|0)+4>>2]&127](c);c=f[g>>2]|0;f[g>>2]=0;if(!c){u=n;return 1}Oa[f[(f[c>>2]|0)+4>>2]&127](c);u=n;return 1}e=f[f[a+8>>2]>>2]|0;f[j>>2]=b;m=e+4|0;l=e+8|0;c=f[l>>2]|0;if((c|0)==(f[e+12>>2]|0))Bj(m,j);else{f[c>>2]=b;f[l>>2]=c+4}d=f[j>>2]|0;h=e+16|0;b=e+20|0;e=f[b>>2]|0;c=f[h>>2]|0;g=e-c>>2;if((d|0)>=(g|0)){a=d+1|0;f[k>>2]=-1;if(a>>>0<=g>>>0){if(a>>>0>>0?(i=c+(a<<2)|0,(e|0)!=(i|0)):0)f[b>>2]=e+(~((e+-4-i|0)>>>2)<<2)}else{_h(h,a-g|0,k);d=f[j>>2]|0;c=f[h>>2]|0}}f[c+(d<<2)>>2]=((f[l>>2]|0)-(f[m>>2]|0)>>2)+-1;u=n;return 1}function yg(a,b){a=a|0;b=b|0;var c=0,d=0,e=0,g=0,h=0,i=0,j=0,k=0,l=0,m=0;m=a+8|0;d=f[m>>2]|0;l=a+4|0;g=f[l>>2]|0;e=g;if(((d-g|0)/12|0)>>>0>=b>>>0){Xj(g|0,0,b*12|0)|0;f[l>>2]=e+(b*12|0);return}c=f[a>>2]|0;h=((g-c|0)/12|0)+b|0;if(h>>>0>357913941){zp(a);g=f[l>>2]|0;c=f[a>>2]|0;e=g;d=f[m>>2]|0}k=c;d=(d-c|0)/12|0;i=d<<1;i=d>>>0<178956970?(i>>>0>>0?h:i):357913941;d=(g-c|0)/12|0;do if(i)if(i>>>0>357913941){a=Ha(4)|0;qq(a);sa(a|0,1040,102)}else{h=Fn(i*12|0)|0;break}else h=0;while(0);g=h+(d*12|0)|0;d=g;j=h+(i*12|0)|0;Xj(g|0,0,b*12|0)|0;h=g+(b*12|0)|0;if((e|0)==(k|0))i=c;else{c=d;do{b=g+-12|0;i=e;e=e+-12|0;f[b>>2]=0;d=g+-8|0;f[d>>2]=0;f[g+-4>>2]=0;f[b>>2]=f[e>>2];b=i+-8|0;f[d>>2]=f[b>>2];i=i+-4|0;f[g+-4>>2]=f[i>>2];f[i>>2]=0;f[b>>2]=0;f[e>>2]=0;g=c+-12|0;c=g}while((e|0)!=(k|0));d=c;i=f[a>>2]|0;e=f[l>>2]|0}f[a>>2]=d;f[l>>2]=h;f[m>>2]=j;h=i;if((e|0)!=(h|0))do{c=e;e=e+-12|0;g=f[e>>2]|0;if(g|0){d=c+-8|0;c=f[d>>2]|0;if((c|0)!=(g|0))f[d>>2]=c+(~((c+-4-g|0)>>>2)<<2);Lq(g)}}while((e|0)!=(h|0));if(!i)return;Lq(i);return}function zg(a,b){a=a|0;b=b|0;var c=0,d=0,e=0,g=0,h=0,i=0,j=0,k=0,l=0,m=0,n=0,o=0;n=u;u=u+32|0;m=n+24|0;k=n+16|0;j=n+8|0;l=n;f[a>>2]=5804;f[a+4>>2]=f[b+4>>2];h=a+8|0;i=b+8|0;f[h>>2]=0;e=a+12|0;f[e>>2]=0;d=a+16|0;f[d>>2]=0;g=b+12|0;c=f[g>>2]|0;if(c|0){if((c|0)<0)zp(h);c=((c+-1|0)>>>5)+1|0;o=Fn(c<<2)|0;f[h>>2]=o;f[e>>2]=0;f[d>>2]=c;e=f[i>>2]|0;f[j>>2]=e;f[j+4>>2]=0;i=f[g>>2]|0;f[l>>2]=e+(i>>>5<<2);f[l+4>>2]=i&31;f[k>>2]=f[j>>2];f[k+4>>2]=f[j+4>>2];f[m>>2]=f[l>>2];f[m+4>>2]=f[l+4>>2];Wg(h,k,m)}h=a+20|0;f[h>>2]=0;g=a+24|0;f[g>>2]=0;d=a+28|0;f[d>>2]=0;e=b+24|0;c=f[e>>2]|0;if(!c){u=n;return}if((c|0)<0)zp(h);o=((c+-1|0)>>>5)+1|0;a=Fn(o<<2)|0;f[h>>2]=a;f[g>>2]=0;f[d>>2]=o;b=f[b+20>>2]|0;f[j>>2]=b;f[j+4>>2]=0;o=f[e>>2]|0;f[l>>2]=b+(o>>>5<<2);f[l+4>>2]=o&31;f[k>>2]=f[j>>2];f[k+4>>2]=f[j+4>>2];f[m>>2]=f[l>>2];f[m+4>>2]=f[l+4>>2];Wg(h,k,m);u=n;return}function Ag(a,b){a=a|0;b=b|0;var c=0,d=0,e=0,g=0,h=0,i=0,j=0,k=0,l=0,m=0,n=0,o=0;n=u;u=u+32|0;m=n+24|0;k=n+16|0;j=n+8|0;l=n;f[a>>2]=5852;f[a+4>>2]=f[b+4>>2];h=a+8|0;i=b+8|0;f[h>>2]=0;e=a+12|0;f[e>>2]=0;d=a+16|0;f[d>>2]=0;g=b+12|0;c=f[g>>2]|0;if(c|0){if((c|0)<0)zp(h);c=((c+-1|0)>>>5)+1|0;o=Fn(c<<2)|0;f[h>>2]=o;f[e>>2]=0;f[d>>2]=c;e=f[i>>2]|0;f[j>>2]=e;f[j+4>>2]=0;i=f[g>>2]|0;f[l>>2]=e+(i>>>5<<2);f[l+4>>2]=i&31;f[k>>2]=f[j>>2];f[k+4>>2]=f[j+4>>2];f[m>>2]=f[l>>2];f[m+4>>2]=f[l+4>>2];Wg(h,k,m)}h=a+20|0;f[h>>2]=0;g=a+24|0;f[g>>2]=0;d=a+28|0;f[d>>2]=0;e=b+24|0;c=f[e>>2]|0;if(!c){u=n;return}if((c|0)<0)zp(h);o=((c+-1|0)>>>5)+1|0;a=Fn(o<<2)|0;f[h>>2]=a;f[g>>2]=0;f[d>>2]=o;b=f[b+20>>2]|0;f[j>>2]=b;f[j+4>>2]=0;o=f[e>>2]|0;f[l>>2]=b+(o>>>5<<2);f[l+4>>2]=o&31;f[k>>2]=f[j>>2];f[k+4>>2]=f[j+4>>2];f[m>>2]=f[l>>2];f[m+4>>2]=f[l+4>>2];Wg(h,k,m);u=n;return}function Bg(a,c,d){a=a|0;c=c|0;d=d|0;var e=0,g=0,h=0,i=0,j=0,k=0,l=0,m=0,n=0,o=0;o=u;u=u+16|0;m=o+4|0;n=o;k=o+8|0;i=d+11|0;j=b[i>>0]|0;g=j<<24>>24<0;if(g){a=f[d+4>>2]|0;if(a>>>0>255){c=0;u=o;return c|0}}else a=j&255;if(!a){b[k>>0]=0;d=c+16|0;l=f[d+4>>2]|0;if(!((l|0)>0|(l|0)==0&(f[d>>2]|0)>>>0>0)){f[n>>2]=f[c+4>>2];f[m>>2]=f[n>>2];vf(c,m,k,k+1|0)|0}c=1;u=o;return c|0}l=d+4|0;e=f[l>>2]|0;b[k>>0]=g?e:j&255;a=c+16|0;g=a;h=f[g>>2]|0;g=f[g+4>>2]|0;if((g|0)>0|(g|0)==0&h>>>0>0)i=g;else{f[n>>2]=f[c+4>>2];f[m>>2]=f[n>>2];vf(c,m,k,k+1|0)|0;h=a;j=b[i>>0]|0;i=f[h+4>>2]|0;h=f[h>>2]|0;e=f[l>>2]|0}g=j<<24>>24<0;a=g?f[d>>2]|0:d;if(!((i|0)>0|(i|0)==0&h>>>0>0)){f[n>>2]=f[c+4>>2];f[m>>2]=f[n>>2];vf(c,m,a,a+(g?e:j&255)|0)|0}c=1;u=o;return c|0}function Cg(a,b,c){a=a|0;b=b|0;c=c|0;var d=0,e=0,g=0,h=0,i=0,j=0,k=0,l=0;k=c;e=b;j=k-e|0;h=j>>2;i=a+8|0;d=f[i>>2]|0;g=f[a>>2]|0;l=g;if(h>>>0>d-g>>2>>>0){e=g;if(g){c=a+4|0;d=f[c>>2]|0;if((d|0)!=(l|0))f[c>>2]=d+(~((d+-4-g|0)>>>2)<<2);Lq(e);f[i>>2]=0;f[c>>2]=0;f[a>>2]=0;d=0}if(h>>>0>1073741823){zp(a);c=f[a>>2]|0;d=f[i>>2]|0}else c=0;l=d-c|0;d=l>>1;d=l>>2>>>0<536870911?(d>>>0>>0?h:d):1073741823;if(d>>>0>1073741823){zp(a);b=Ha(4)|0;qq(b);sa(b|0,1040,102)}e=Fn(d<<2)|0;c=a+4|0;f[c>>2]=e;f[a>>2]=e;f[i>>2]=e+(d<<2);if((j|0)<=0)return;Mh(e|0,b|0,j|0)|0;f[c>>2]=e+(j>>>2<<2);return}a=a+4|0;d=f[a>>2]|0;i=d-g>>2;j=h>>>0>i>>>0;i=j?b+(i<<2)|0:c;g=d;h=d;if((i|0)==(b|0))d=l;else{e=i+-4-e|0;d=b;c=l;while(1){f[c>>2]=f[d>>2];d=d+4|0;if((d|0)==(i|0))break;else c=c+4|0}d=l+((e>>>2)+1<<2)|0}if(j){d=k-i|0;if((d|0)<=0)return;Mh(h|0,i|0,d|0)|0;f[a>>2]=(f[a>>2]|0)+(d>>>2<<2);return}else{if((g|0)==(d|0))return;f[a>>2]=g+(~((g+-4-d|0)>>>2)<<2);return}}function Dg(a,b){a=a|0;b=b|0;var c=0,d=0,e=0,g=0,h=0,i=0,j=0,k=0,l=0,m=0,n=0;n=u;u=u+32|0;m=n;l=a+8|0;d=f[l>>2]|0;k=a+4|0;e=f[k>>2]|0;if(d-e>>2>>>0>=b>>>0){Xj(e|0,0,b<<2|0)|0;f[k>>2]=e+(b<<2);u=n;return}c=f[a>>2]|0;g=(e-c>>2)+b|0;if(g>>>0>1073741823){zp(a);c=f[a>>2]|0;d=f[l>>2]|0;e=f[k>>2]|0}i=d-c|0;j=i>>1;g=i>>2>>>0<536870911?(j>>>0>>0?g:j):1073741823;c=e-c>>2;f[m+12>>2]=0;f[m+16>>2]=a+8;do if(g)if(g>>>0>1073741823){n=Ha(4)|0;qq(n);sa(n|0,1040,102)}else{d=Fn(g<<2)|0;break}else d=0;while(0);f[m>>2]=d;c=d+(c<<2)|0;i=m+8|0;h=m+4|0;f[h>>2]=c;j=m+12|0;f[j>>2]=d+(g<<2);Xj(c|0,0,b<<2|0)|0;f[i>>2]=c+(b<<2);d=f[a>>2]|0;c=f[k>>2]|0;if((c|0)==(d|0)){g=h;e=f[h>>2]|0}else{e=f[h>>2]|0;do{c=c+-4|0;b=f[c>>2]|0;f[c>>2]=0;f[e+-4>>2]=b;e=(f[h>>2]|0)+-4|0;f[h>>2]=e}while((c|0)!=(d|0));g=h;d=f[a>>2]|0;c=f[k>>2]|0}f[a>>2]=e;f[g>>2]=d;f[k>>2]=f[i>>2];f[i>>2]=c;a=f[l>>2]|0;f[l>>2]=f[j>>2];f[j>>2]=a;f[m>>2]=f[g>>2];Zi(m);u=n;return}function Eg(a,b,c){a=a|0;b=b|0;c=c|0;var d=0,e=0,g=0,h=0,i=0,j=0,k=0,l=0,m=0;m=u;u=u+16|0;k=m;if(!(hi(a,b,c)|0)){l=0;u=m;return l|0}d=f[b+4>>2]|0;if((c|0)<=-1)Fa(17509,17693,63,17731);e=f[d+8>>2]|0;if(((f[d+12>>2]|0)-e>>2|0)<=(c|0))Fa(17639,17693,64,17731);i=f[e+(c<<2)>>2]|0;if((f[i+28>>2]|0)!=9){l=0;u=m;return l|0}g=f[b+48>>2]|0;f[k>>2]=0;f[k+4>>2]=0;f[k+8>>2]=0;Ck(k,17741,17);h=g+16|0;e=f[h>>2]|0;if(e){d=h;b=e;a:while(1){e=b;while(1){if((f[e+16>>2]|0)>=(c|0))break;e=f[e+4>>2]|0;if(!e)break a}b=f[e>>2]|0;if(!b){d=e;break}else d=e}if(((d|0)!=(h|0)?(j=d+20|0,(f[d+16>>2]|0)<=(c|0)):0)?(Pi(j,k)|0)!=0:0)d=ql(j,k,-1)|0;else l=16}else l=16;if((l|0)==16)d=ql(g,k,-1)|0;Eo(k);if((d|0)<1){l=0;u=m;return l|0}ge(a+40|0,i,d)|0;l=1;u=m;return l|0}function Fg(a,c,d){a=a|0;c=c|0;d=d|0;var e=0,g=0,i=0;switch(b[a+24>>0]|0){case 1:{g=f[c>>2]|0;c=a+48|0;e=f[c>>2]|0;c=f[c+4>>2]|0;i=a+40|0;c=(Do(En(f[i>>2]|0,f[i+4>>2]|0,g|0,((g|0)<0)<<31>>31|0)|0,I|0,e|0,c|0)|0)+(f[f[a>>2]>>2]|0)|0;f[d>>2]=(h[c>>0]|h[c+1>>0]<<8)<<16>>16;c=0;break}case 2:{g=f[c>>2]|0;c=a+48|0;i=f[c>>2]|0;c=f[c+4>>2]|0;e=a+40|0;c=(Do(En(f[e>>2]|0,f[e+4>>2]|0,g|0,((g|0)<0)<<31>>31|0)|0,I|0,i|0,c|0)|0)+(f[f[a>>2]>>2]|0)|0;c=h[c>>0]|h[c+1>>0]<<8|h[c+2>>0]<<16|h[c+3>>0]<<24;f[d>>2]=c<<16>>16;c=c>>16;break}case 3:{g=f[c>>2]|0;i=a+48|0;c=f[i>>2]|0;i=f[i+4>>2]|0;e=a+40|0;i=(Do(En(f[e>>2]|0,f[e+4>>2]|0,g|0,((g|0)<0)<<31>>31|0)|0,I|0,c|0,i|0)|0)+(f[f[a>>2]>>2]|0)|0;c=i+2|0;c=h[c>>0]|h[c+1>>0]<<8;f[d>>2]=(h[i>>0]|h[i+1>>0]<<8)<<16>>16;c=c<<16>>16;break}case 4:{g=f[c>>2]|0;c=a+48|0;i=f[c>>2]|0;c=f[c+4>>2]|0;e=a+40|0;c=(Do(En(f[e>>2]|0,f[e+4>>2]|0,g|0,((g|0)<0)<<31>>31|0)|0,I|0,i|0,c|0)|0)+(f[f[a>>2]>>2]|0)|0;c=h[c>>0]|h[c+1>>0]<<8|h[c+2>>0]<<16|h[c+3>>0]<<24;f[d>>2]=c<<16>>16;c=c>>16;break}default:{i=0;return i|0}}f[d+4>>2]=c;i=1;return i|0}function Gg(a){a=a|0;var c=0,d=0,e=0,g=0,h=0,i=0,j=0;i=a+12|0;h=f[a>>2]|0;j=a+8|0;c=f[j>>2]|0;d=(c|0)<0;if(!(b[i>>0]|0)){do if(!d)if(!((c>>>0)%3|0)){c=c+2|0;break}else{c=c+-1|0;break}while(0);do if(!(1<<(c&31)&f[(f[h>>2]|0)+(c>>>5<<2)>>2])){if((c|0)>=0){c=f[(f[(f[h+64>>2]|0)+12>>2]|0)+(c<<2)>>2]|0;if((c|0)>=0)if(!((c>>>0)%3|0)){c=c+2|0;break}else{c=c+-1|0;break}}}else c=-1073741824;while(0);f[j>>2]=c;return}e=c+1|0;if(!d)c=((e|0)%3|0|0)==0?c+-2|0:e;e=f[h>>2]|0;if(!(1<<(c&31)&f[e+(c>>>5<<2)>>2]))if((c|0)>=0){c=f[(f[(f[h+64>>2]|0)+12>>2]|0)+(c<<2)>>2]|0;d=c+1|0;if((c|0)>=0){c=((d|0)%3|0|0)==0?c+-2|0:d;f[j>>2]=c;if((c|0)>=0){if((c|0)!=(f[a+4>>2]|0))return;f[j>>2]=-1073741824;return}}else g=7}else g=7;else{c=-1073741824;g=7}if((g|0)==7)f[j>>2]=c;c=f[a+4>>2]|0;do if((c|0)>=0)if(!((c>>>0)%3|0)){c=c+2|0;break}else{c=c+-1|0;break}while(0);do if(!(1<<(c&31)&f[e+(c>>>5<<2)>>2])){if((c|0)>=0){c=f[(f[(f[h+64>>2]|0)+12>>2]|0)+(c<<2)>>2]|0;if((c|0)>=0)if(!((c>>>0)%3|0)){c=c+2|0;break}else{c=c+-1|0;break}}}else c=-1073741824;while(0);f[j>>2]=c;b[i>>0]=0;return}function Hg(a,b,c){a=a|0;b=b|0;c=c|0;var d=0,e=0,g=0,h=0,i=0,j=0;i=a+8|0;d=f[i>>2]|0;h=f[a>>2]|0;j=h;do if(d-h>>2>>>0>=b>>>0){a=a+4|0;i=f[a>>2]|0;h=i-h>>2;g=h>>>0>>0;d=g?h:b;if(d|0){e=j;while(1){f[e>>2]=f[c>>2];d=d+-1|0;if(!d)break;else e=e+4|0}}if(!g){d=j+(b<<2)|0;if((i|0)==(d|0))return;else{e=a;d=i+(~((i+-4-d|0)>>>2)<<2)|0;break}}else{g=b-h|0;d=i;e=g;while(1){f[d>>2]=f[c>>2];e=e+-1|0;if(!e)break;else d=d+4|0}e=a;d=i+(g<<2)|0;break}}else{g=h;if(h){e=a+4|0;d=f[e>>2]|0;if((d|0)!=(j|0))f[e>>2]=d+(~((d+-4-h|0)>>>2)<<2);Lq(g);f[i>>2]=0;f[e>>2]=0;f[a>>2]=0;d=0}if(b>>>0>1073741823){zp(a);e=f[a>>2]|0;d=f[i>>2]|0}else e=0;j=d-e|0;d=j>>1;d=j>>2>>>0<536870911?(d>>>0>>0?b:d):1073741823;if(d>>>0>1073741823){zp(a);c=Ha(4)|0;qq(c);sa(c|0,1040,102)}h=Fn(d<<2)|0;g=a+4|0;f[g>>2]=h;f[a>>2]=h;f[i>>2]=h+(d<<2);d=h;e=b;while(1){f[d>>2]=f[c>>2];e=e+-1|0;if(!e)break;else d=d+4|0}e=g;d=h+(b<<2)|0}while(0);f[e>>2]=d;return}function Ig(a,c,d,e,g){a=a|0;c=c|0;d=d|0;e=e|0;g=g|0;var h=0,i=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,v=0,w=0;r=u;u=u+48|0;n=r+24|0;o=r+8|0;p=r+4|0;q=r;h=c+4|0;if((f[h>>2]|0)==-1)Fa(7420,7324,59,7494);m=e+4|0;uj(a,c,(f[m>>2]|0)-(f[e>>2]|0)>>2,2,g,d);l=f[a>>2]|0;l=(f[f[l>>2]>>2]|0)+(f[l+48>>2]|0)|0;a=f[h>>2]|0;if((a|0)<=1)Fa(10816,10827,60,10889);if((a|0)>=31)Fa(10909,10827,61,10889);f[o>>2]=a;a=1<>2]=a+-1;a=a+-2|0;f[o+8>>2]=a;f[o+12>>2]=(a|0)/2|0;a=f[e>>2]|0;if((f[m>>2]|0)==(a|0)){u=r;return}k=d+84|0;h=d+68|0;i=d+48|0;j=d+40|0;g=0;c=0;while(1){a=f[a+(c<<2)>>2]|0;if(!(b[k>>0]|0))a=f[(f[h>>2]|0)+(a<<2)>>2]|0;t=i;v=f[t>>2]|0;t=f[t+4>>2]|0;w=j;s=f[w>>2]|0;a=En(s|0,f[w+4>>2]|0,a|0,((a|0)<0)<<31>>31|0)|0;a=Do(a|0,I|0,v|0,t|0)|0;Mh(n|0,(f[f[d>>2]>>2]|0)+a|0,s|0)|0;Kg(o,n,p,q);f[l+(g<<2)>>2]=f[p>>2];f[l+((g|1)<<2)>>2]=f[q>>2];c=c+1|0;a=f[e>>2]|0;if(c>>>0>=(f[m>>2]|0)-a>>2>>>0)break;else g=g+2|0}u=r;return}function Jg(a,c,d,e){a=a|0;c=c|0;d=d|0;e=e|0;var g=0,h=0,i=0,j=0,k=0;i=u;u=u+80|0;j=i;g=i+64|0;lm(j);k=f[(f[a+8>>2]|0)+56>>2]|0;h=X(Am(5)|0,d)|0;lk(j,k,0,d&255,5,0,h,((h|0)<0)<<31>>31,0,0);h=Fn(96)|0;cm(h,j);ck(h,c)|0;f[g>>2]=h;Ij(a,g);h=f[g>>2]|0;f[g>>2]=0;if(h|0){k=h+88|0;d=f[k>>2]|0;f[k>>2]=0;if(d|0){c=f[d+8>>2]|0;if(c|0){g=d+12|0;if((f[g>>2]|0)!=(c|0))f[g>>2]=c;Lq(c)}Lq(d)}c=f[h+68>>2]|0;if(c|0){g=h+72|0;d=f[g>>2]|0;if((d|0)!=(c|0))f[g>>2]=d+(~((d+-4-c|0)>>>2)<<2);Lq(c)}k=h+64|0;d=f[k>>2]|0;f[k>>2]=0;if(d|0){c=f[d>>2]|0;if(c|0){g=d+4|0;if((f[g>>2]|0)!=(c|0))f[g>>2]=c;Lq(c)}Lq(d)}Lq(h)}if(!e){u=i;return}a=f[a+32>>2]|0;b[a+84>>0]=0;c=a+68|0;a=a+72|0;h=f[a>>2]|0;d=f[c>>2]|0;g=h-d>>2;if(g>>>0>>0){_h(c,e-g|0,3592);u=i;return}if(g>>>0<=e>>>0){u=i;return}d=d+(e<<2)|0;if((h|0)==(d|0)){u=i;return}f[a>>2]=h+(~((h+-4-d|0)>>>2)<<2);u=i;return}function Kg(a,b,c,d){a=a|0;b=b|0;c=c|0;d=d|0;var e=0,g=0,h=0,i=0,j=0,k=0,l=0,m=0.0,o=Ka,p=Ka,q=0.0,r=Ka;r=$(n[b>>2]);m=+$(K($(r)));p=$(n[b+4>>2]);m=m+ +$(K($(p)));o=$(n[b+8>>2]);m=m+ +$(K($(o)));h=m>1.0e-06;m=1.0/m;l=f[a+12>>2]|0;q=+(l|0);k=~~+J(+(q*(h?+r*m:1.0)+.5));g=~~+J(+(q*(h?+p*m:0.0)+.5));e=(k|0)>-1;k=e?k:0-k|0;i=l-k-((g|0)>-1?g:0-g|0)|0;b=(i|0)<0;g=(b?((g|0)>0?i:0-i|0):0)+g|0;i=b?0:i;i=(h?+o*m:0.0)<0.0?0-i|0:i;h=(g|0)>-1?g:0-g|0;b=(i|0)>-1?i:0-i|0;if((h+k+b|0)!=(l|0))Fa(12164,10827,99,12252);if(!e){if((g|0)>=0)b=(f[a+8>>2]|0)-b|0;if((i|0)<0)k=h;else k=(f[a+8>>2]|0)-h|0}else{b=l+g|0;k=l+i|0}i=(b|0)==0;j=(k|0)==0;e=f[a+8>>2]|0;if(!(k|b)){a=e;l=e;f[c>>2]=a;f[d>>2]=l;return}g=(e|0)==(k|0);h=(e|0)==(b|0);if(i&g|j&h){a=e;l=e;f[c>>2]=a;f[d>>2]=l;return}if(i&(l|0)<(k|0)){a=0;l=(l<<1)-k|0;f[c>>2]=a;f[d>>2]=l;return}if((l|0)>(k|0)&h){a=b;l=(l<<1)-k|0;f[c>>2]=a;f[d>>2]=l;return}if((l|0)>(b|0)&g){a=(l<<1)-b|0;l=k;f[c>>2]=a;f[d>>2]=l;return}else{a=(l|0)<(b|0)&j?(l<<1)-b|0:b;l=k;f[c>>2]=a;f[d>>2]=l;return}}function Lg(a,b,c){a=a|0;b=b|0;c=c|0;var d=0,e=0,g=0,h=0,i=0,j=0;if((b|0)>=33)Fa(15966,6960,45,16039);if((b|0)<=0)Fa(16068,6960,46,16039);g=c>>>1&1431655765|c<<1&-1431655766;g=g>>>2&858993459|g<<2&-858993460;g=g>>>4&252645135|g<<4&-252645136;g=g>>>8&16711935|g<<8&-16711936;c=32-b|0;g=(g>>>16|g<<16)>>>c;d=g-(g>>>1&1431655765)|0;d=(d>>>2&858993459)+(d&858993459)|0;d=(X((d>>>4)+d&252645135,16843009)|0)>>>24;i=b-d|0;j=f[a>>2]|0;h=j;i=Do(f[h>>2]|0,f[h+4>>2]|0,i|0,((i|0)<0)<<31>>31|0)|0;h=j;f[h>>2]=i;f[h+4>>2]=I;j=j+8|0;h=j;d=Do(f[h>>2]|0,f[h+4>>2]|0,d|0,0)|0;f[j>>2]=d;f[j+4>>2]=I;j=a+28|0;d=f[j>>2]|0;h=32-d|0;i=a+24|0;do if((h|0)>=(b|0)){e=-1>>>c<>2]&~e|e&g<>2]=e;b=d+b|0;f[j>>2]=b;if((b|0)!=32)return;d=a+16|0;c=f[d>>2]|0;if((c|0)==(f[a+20>>2]|0)){Bj(a+12|0,i);d=0;c=0;break}else{f[c>>2]=e;f[d>>2]=c+4;d=0;c=0;break}}else{e=-1>>>d<>2]&~e|e&g<>2]=e;d=a+16|0;c=f[d>>2]|0;if((c|0)==(f[a+20>>2]|0))Bj(a+12|0,i);else{f[c>>2]=e;f[d>>2]=c+4}c=b-h|0;d=c;c=-1>>>(32-c|0)&g>>>h}while(0);f[i>>2]=c;f[j>>2]=d;return}function Mg(a,c,d){a=a|0;c=c|0;d=d|0;var e=0,g=0,h=0,i=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0;s=u;u=u+32|0;p=s+16|0;l=s+12|0;m=s+8|0;n=s+4|0;o=s;k=f[a+8>>2]|0;r=k+24|0;q=b[r>>0]|0;g=c+4|0;Jg(a,(f[g>>2]|0)-(f[c>>2]|0)>>2,q,d);j=f[a+32>>2]|0;j=(f[f[j>>2]>>2]|0)+(f[j+48>>2]|0)|0;d=f[c>>2]|0;g=f[g>>2]|0;if((d|0)==(g|0)){u=s;return 1}i=k+84|0;h=k+68|0;e=0;while(1){a=f[d>>2]|0;if(!(b[i>>0]|0))a=f[(f[h>>2]|0)+(a<<2)>>2]|0;c=j+(e<<2)|0;switch(b[r>>0]|0){case 1:{f[l>>2]=a;f[p>>2]=f[l>>2];gb(k,p,c)|0;break}case 2:{f[m>>2]=a;f[p>>2]=f[m>>2];$b(k,p,c)|0;break}case 3:{f[n>>2]=a;f[p>>2]=f[n>>2];Dc(k,p,c)|0;break}case 4:{f[o>>2]=a;f[p>>2]=f[o>>2];zc(k,p,c)|0;break}default:{}}d=d+4|0;if((d|0)==(g|0))break;else e=e+q|0}u=s;return 1}function Ng(a,b){a=a|0;b=b|0;var c=0,d=0,e=0,g=0,h=0,i=0,j=0,k=0,l=0;k=f[b>>2]|0;l=f[k>>2]|0;e=f[a+4>>2]|0;b=f[k+4>>2]|0;h=e+-1|0;i=(h&e|0)==0;if(i)g=h&b;else g=(b>>>0)%(e>>>0)|0;c=(f[a>>2]|0)+(g<<2)|0;j=f[c>>2]|0;while(1){b=f[j>>2]|0;if((b|0)==(k|0))break;else j=b}if((j|0)!=(a+8|0)){b=f[j+4>>2]|0;if(i)b=b&h;else b=(b>>>0)%(e>>>0)|0;if((b|0)==(g|0)){c=l;d=18}else d=11}else d=11;do if((d|0)==11){if(l|0){b=f[l+4>>2]|0;if(i)b=b&h;else b=(b>>>0)%(e>>>0)|0;if((b|0)==(g|0)){c=l;b=l;d=19;break}}f[c>>2]=0;c=f[k>>2]|0;d=18}while(0);if((d|0)==18){b=c;if(c)d=19}if((d|0)==19){c=f[c+4>>2]|0;if(i)c=c&h;else c=(c>>>0)%(e>>>0)|0;if((c|0)!=(g|0)){f[(f[a>>2]|0)+(c<<2)>>2]=j;b=f[k>>2]|0}}f[j>>2]=b;f[k>>2]=0;a=a+12|0;f[a>>2]=(f[a>>2]|0)+-1;if(!k)return l|0;b=f[k+20>>2]|0;if(b|0){c=k+24|0;if((f[c>>2]|0)!=(b|0))f[c>>2]=b;Lq(b)}Eo(k+8|0);Lq(k);return l|0}function Og(a){a=a|0;var b=0,c=0,d=0,e=0,g=0,h=0,i=0,j=0,k=0,l=0,m=0;m=u;u=u+16|0;j=m+4|0;k=m;l=a+8|0;g=a+100|0;h=f[l>>2]|0;h=(f[h+28>>2]|0)-(f[h+24>>2]|0)>>2;f[j>>2]=0;d=a+104|0;c=f[d>>2]|0;b=f[g>>2]|0;i=c-b>>2;if(h>>>0<=i>>>0){if(h>>>0>>0?(e=b+(h<<2)|0,(c|0)!=(e|0)):0)f[d>>2]=c+(~((c+-4-e|0)>>>2)<<2)}else _h(g,h-i|0,j);d=a+120|0;b=f[d>>2]|0;if(!b){a=f[l>>2]|0;a=(f[a+4>>2]|0)-(f[a>>2]|0)>>2;b=(a>>>0)/3|0;if(a>>>0<=2){u=m;return 1}c=0;do{f[k>>2]=c*3;f[j>>2]=f[k>>2];Wb(l,j);c=c+1|0}while((c|0)<(b|0));u=m;return 1}else{c=f[b>>2]|0;if((f[b+4>>2]|0)==(c|0)){u=m;return 1}b=0;do{f[k>>2]=f[c+(b<<2)>>2];f[j>>2]=f[k>>2];Wb(l,j);b=b+1|0;a=f[d>>2]|0;c=f[a>>2]|0}while(b>>>0<(f[a+4>>2]|0)-c>>2>>>0);u=m;return 1}return 0}function Pg(a,b,c){a=a|0;b=b|0;c=c|0;var d=0,e=0,g=0,h=0,i=0,j=0,k=0,l=0,m=0,n=0;e=a+8|0;Ae(a,a+4|0,e,c)|0;d=a+12|0;if((d|0)==(b|0))return;while(1){k=f[d>>2]|0;m=f[e>>2]|0;g=f[c>>2]|0;i=f[g+4>>2]|0;h=f[g>>2]|0;if(i-h>>3>>>0>k>>>0){l=g;j=h;g=h}else{yp(g);i=f[c>>2]|0;l=i;j=f[g>>2]|0;g=f[i>>2]|0;i=f[i+4>>2]|0}h=f[j+(k<<3)>>2]|0;if(i-g>>3>>>0<=m>>>0){yp(l);g=f[l>>2]|0}if(h>>>0<(f[g+(m<<3)>>2]|0)>>>0){m=f[d>>2]|0;g=d;while(1){f[g>>2]=f[e>>2];if((e|0)==(a|0)){e=a;break}l=e+-4|0;k=f[l>>2]|0;j=f[c>>2]|0;h=f[j+4>>2]|0;g=f[j>>2]|0;if(h-g>>3>>>0>m>>>0)i=g;else{yp(j);n=f[c>>2]|0;i=f[j>>2]|0;g=f[n>>2]|0;h=f[n+4>>2]|0;j=n}i=f[i+(m<<3)>>2]|0;if(h-g>>3>>>0<=k>>>0){yp(j);g=f[j>>2]|0}if(i>>>0<(f[g+(k<<3)>>2]|0)>>>0){g=e;e=l}else break}f[e>>2]=m}e=d+4|0;if((e|0)==(b|0))break;else{n=d;d=e;e=n}}return}function Qg(a,c,d){a=a|0;c=c|0;d=d|0;var e=0,g=0,i=0;switch(b[a+24>>0]|0){case 1:{g=f[c>>2]|0;c=a+48|0;e=f[c>>2]|0;c=f[c+4>>2]|0;i=a+40|0;c=Do(En(f[i>>2]|0,f[i+4>>2]|0,g|0,((g|0)<0)<<31>>31|0)|0,I|0,e|0,c|0)|0;f[d>>2]=b[(f[f[a>>2]>>2]|0)+c>>0];c=0;break}case 2:{g=f[c>>2]|0;c=a+48|0;i=f[c>>2]|0;c=f[c+4>>2]|0;e=a+40|0;c=(Do(En(f[e>>2]|0,f[e+4>>2]|0,g|0,((g|0)<0)<<31>>31|0)|0,I|0,i|0,c|0)|0)+(f[f[a>>2]>>2]|0)|0;c=h[c>>0]|h[c+1>>0]<<8;f[d>>2]=(c&65535)<<24>>24;c=((c&65535)>>>8&65535)<<24>>24;break}case 3:{g=f[c>>2]|0;i=a+48|0;c=f[i>>2]|0;i=f[i+4>>2]|0;e=a+40|0;i=(Do(En(f[e>>2]|0,f[e+4>>2]|0,g|0,((g|0)<0)<<31>>31|0)|0,I|0,c|0,i|0)|0)+(f[f[a>>2]>>2]|0)|0;c=b[i+1>>0]|0;f[d>>2]=b[i>>0];c=c<<24>>24;break}case 4:{g=f[c>>2]|0;c=a+48|0;i=f[c>>2]|0;c=f[c+4>>2]|0;e=a+40|0;c=(Do(En(f[e>>2]|0,f[e+4>>2]|0,g|0,((g|0)<0)<<31>>31|0)|0,I|0,i|0,c|0)|0)+(f[f[a>>2]>>2]|0)|0;c=h[c>>0]|h[c+1>>0]<<8|h[c+2>>0]<<16|h[c+3>>0]<<24;f[d>>2]=c<<24>>24;c=c<<16>>24;break}default:{i=0;return i|0}}f[d+4>>2]=c;i=1;return i|0}function Rg(a,b,c){a=a|0;b=b|0;c=c|0;var d=0,e=0,g=0,h=0,i=0,j=0,k=0,l=0,m=0,n=0;l=u;u=u+16|0;j=l+4|0;i=l;Ri(f[c+12>>2]|0,b)|0;d=f[c+8>>2]|0;a:do if(d|0){k=b+16|0;h=b+4|0;while(1){e=d;if(!(Bg(0,b,e+8|0)|0)){d=0;break}m=e+20|0;g=(f[e+24>>2]|0)-(f[m>>2]|0)|0;Ri(g,b)|0;e=f[m>>2]|0;m=k;n=f[m+4>>2]|0;if(!((n|0)>0|(n|0)==0&(f[m>>2]|0)>>>0>0)){f[i>>2]=f[h>>2];f[j>>2]=f[i>>2];vf(b,j,e,e+g|0)|0}d=f[d>>2]|0;if(!d)break a}u=l;return d|0}while(0);Ri(f[c+32>>2]|0,b)|0;d=f[c+28>>2]|0;if(!d){n=1;u=l;return n|0}while(1){e=d;if(!(Bg(0,b,e+8|0)|0)){d=0;e=10;break}Rg(a,b,f[e+20>>2]|0)|0;d=f[d>>2]|0;if(!d){d=1;e=10;break}}if((e|0)==10){u=l;return d|0}return 0}function Sg(a){a=a|0;var b=0,c=0,d=0,e=0,g=0,h=0,i=0,j=0,k=0,l=0,m=0,n=0;n=u;u=u+16|0;l=n;k=a+8|0;i=f[k>>2]|0;i=(f[i+12>>2]|0)-(f[i+8>>2]|0)|0;m=i>>2;j=a+184|0;xj(j,m+-1|0);if(!((m|0)!=1&(i|0)>0)){u=n;return 1}h=a+12|0;a=0;i=0;while(1){g=f[k>>2]|0;b=f[g+8>>2]|0;if(((f[g+12>>2]|0)-b>>2|0)<=(i|0)){a=4;break}d=f[b+(i<<2)>>2]|0;if(f[d+56>>2]|0){e=f[j>>2]|0;f[e+(a*108|0)>>2]=i;b=f[e+(a*108|0)+76>>2]|0;g=e+(a*108|0)+80|0;c=f[g>>2]|0;if((c|0)!=(b|0))f[g>>2]=c+(~((c+-4-b|0)>>>2)<<2);g=f[h>>2]|0;xk(e+(a*108|0)+76|0,(f[g+4>>2]|0)-(f[g>>2]|0)>>2);e=(f[j>>2]|0)+(a*108|0)+88|0;g=f[h>>2]|0;g=(f[g+4>>2]|0)-(f[g>>2]|0)>>2;f[l>>2]=-1;Hg(e,g,l);g=f[j>>2]|0;f[g+(a*108|0)+100>>2]=0;yc(g+(a*108|0)+4|0,f[k>>2]|0,f[h>>2]|0,d)|0;a=a+1|0}i=i+1|0;if((i|0)>=(m|0)){a=10;break}}if((a|0)==4)Fa(17639,17693,64,17731);else if((a|0)==10){u=n;return 1}return 0}function Tg(a,c){a=a|0;c=c|0;var d=0,e=0,g=0,i=0,j=0,k=0,l=0;f[c>>2]=1;e=a+4|0;l=c+8|0;k=c+12|0;c=f[l>>2]|0;d=(f[k>>2]|0)-c|0;if(d>>>0<4294967292){pl(l,d+4|0,0);c=f[l>>2]|0}j=c+d|0;i=h[e>>0]|h[e+1>>0]<<8|h[e+2>>0]<<16|h[e+3>>0]<<24;b[j>>0]=i;b[j+1>>0]=i>>8;b[j+2>>0]=i>>16;b[j+3>>0]=i>>24;j=a+8|0;i=a+12|0;c=f[j>>2]|0;if((f[i>>2]|0)!=(c|0)){g=0;do{d=c+(g<<2)|0;c=f[l>>2]|0;e=(f[k>>2]|0)-c|0;if(e>>>0<4294967292){pl(l,e+4|0,0);c=f[l>>2]|0}c=c+e|0;e=h[d>>0]|h[d+1>>0]<<8|h[d+2>>0]<<16|h[d+3>>0]<<24;b[c>>0]=e;b[c+1>>0]=e>>8;b[c+2>>0]=e>>16;b[c+3>>0]=e>>24;g=g+1|0;c=f[j>>2]|0}while(g>>>0<(f[i>>2]|0)-c>>2>>>0)}e=a+20|0;d=f[l>>2]|0;c=(f[k>>2]|0)-d|0;if(c>>>0<4294967292){pl(l,c+4|0,0);l=f[l>>2]|0;l=l+c|0;k=h[e>>0]|h[e+1>>0]<<8|h[e+2>>0]<<16|h[e+3>>0]<<24;b[l>>0]=k;b[l+1>>0]=k>>8;b[l+2>>0]=k>>16;b[l+3>>0]=k>>24;return}else{l=d;l=l+c|0;k=h[e>>0]|h[e+1>>0]<<8|h[e+2>>0]<<16|h[e+3>>0]<<24;b[l>>0]=k;b[l+1>>0]=k>>8;b[l+2>>0]=k>>16;b[l+3>>0]=k>>24;return}}function Ug(a,b,c){a=a|0;b=b|0;c=c|0;var d=0,e=0,g=0,h=0,i=0,j=0,k=0,l=0,m=0;k=c;i=b;j=k-i|0;g=j>>2;h=a+8|0;d=f[h>>2]|0;l=f[a>>2]|0;m=l;if(g>>>0<=d-l>>2>>>0){j=a+4|0;e=(f[j>>2]|0)-l>>2;h=g>>>0>e>>>0;g=h?b+(e<<2)|0:c;e=g;c=e-i|0;d=c>>2;if(d|0)Om(l|0,b|0,c|0)|0;c=m+(d<<2)|0;if(h){d=k-e|0;if((d|0)<=0)return;Mh(f[j>>2]|0,g|0,d|0)|0;f[j>>2]=(f[j>>2]|0)+(d>>>2<<2);return}else{d=f[j>>2]|0;if((d|0)==(c|0))return;f[j>>2]=d+(~((d+-4-c|0)>>>2)<<2);return}}e=l;if(l){c=a+4|0;d=f[c>>2]|0;if((d|0)!=(m|0))f[c>>2]=d+(~((d+-4-l|0)>>>2)<<2);Lq(e);f[h>>2]=0;f[c>>2]=0;f[a>>2]=0;d=0}if(g>>>0>1073741823){zp(a);c=f[a>>2]|0;d=f[h>>2]|0}else c=0;m=d-c|0;d=m>>1;d=m>>2>>>0<536870911?(d>>>0>>0?g:d):1073741823;if(d>>>0>1073741823){zp(a);b=Ha(4)|0;qq(b);sa(b|0,1040,102)}e=Fn(d<<2)|0;c=a+4|0;f[c>>2]=e;f[a>>2]=e;f[h>>2]=e+(d<<2);if((j|0)<=0)return;Mh(e|0,b|0,j|0)|0;f[c>>2]=e+(j>>>2<<2);return}function Vg(a,c,d){a=a|0;c=c|0;d=d|0;var e=0,g=0,i=0;switch(b[a+24>>0]|0){case 1:{g=f[c>>2]|0;c=a+48|0;e=f[c>>2]|0;c=f[c+4>>2]|0;i=a+40|0;c=Do(En(f[i>>2]|0,f[i+4>>2]|0,g|0,((g|0)<0)<<31>>31|0)|0,I|0,e|0,c|0)|0;f[d>>2]=h[(f[f[a>>2]>>2]|0)+c>>0];c=0;break}case 2:{g=f[c>>2]|0;c=a+48|0;i=f[c>>2]|0;c=f[c+4>>2]|0;e=a+40|0;c=(Do(En(f[e>>2]|0,f[e+4>>2]|0,g|0,((g|0)<0)<<31>>31|0)|0,I|0,i|0,c|0)|0)+(f[f[a>>2]>>2]|0)|0;c=h[c>>0]|h[c+1>>0]<<8;f[d>>2]=c&255;c=(c&65535)>>>8&65535;break}case 3:{g=f[c>>2]|0;i=a+48|0;c=f[i>>2]|0;i=f[i+4>>2]|0;e=a+40|0;i=(Do(En(f[e>>2]|0,f[e+4>>2]|0,g|0,((g|0)<0)<<31>>31|0)|0,I|0,c|0,i|0)|0)+(f[f[a>>2]>>2]|0)|0;c=b[i+1>>0]|0;f[d>>2]=h[i>>0];c=c&255;break}case 4:{g=f[c>>2]|0;c=a+48|0;i=f[c>>2]|0;c=f[c+4>>2]|0;e=a+40|0;c=(Do(En(f[e>>2]|0,f[e+4>>2]|0,g|0,((g|0)<0)<<31>>31|0)|0,I|0,i|0,c|0)|0)+(f[f[a>>2]>>2]|0)|0;c=h[c>>0]|h[c+1>>0]<<8|h[c+2>>0]<<16|h[c+3>>0]<<24;f[d>>2]=c&255;c=c>>>8&255;break}default:{i=0;return i|0}}f[d+4>>2]=c;i=1;return i|0}function Wg(a,b,c){a=a|0;b=b|0;c=c|0;var d=0,e=0,g=0,h=0,i=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0;p=u;u=u+48|0;n=p+40|0;m=p+32|0;j=p+8|0;k=p;l=p+24|0;o=p+16|0;g=a+4|0;q=f[g>>2]|0;d=f[b>>2]|0;b=f[b+4>>2]|0;e=c;h=f[e>>2]|0;e=f[e+4>>2]|0;i=h-d<<3;f[g>>2]=q-b+e+i;g=(f[a>>2]|0)+(q>>>5<<2)|0;a=q&31;c=g;if((b|0)!=(a|0)){q=j;f[q>>2]=d;f[q+4>>2]=b;q=k;f[q>>2]=h;f[q+4>>2]=e;f[l>>2]=c;f[l+4>>2]=a;f[m>>2]=f[j>>2];f[m+4>>2]=f[j+4>>2];f[n>>2]=f[k>>2];f[n+4>>2]=f[k+4>>2];Qe(o,m,n,l);u=p;return}e=e-b+i|0;a=d;if((e|0)>0){if(!b){h=a;c=e;b=0}else{h=32-b|0;c=(e|0)<(h|0)?e:h;h=-1>>>(h-c|0)&-1<>2]=f[g>>2]&~h|f[a>>2]&h;b=c+b|0;h=a+4|0;g=g+(b>>>5<<2)|0;d=h;c=e-c|0;b=b&31}e=c>>>5;Om(g|0,d|0,e<<2|0)|0;d=c-(e<<5)|0;a=g+(e<<2)|0;c=a;if((d|0)>0){b=-1>>>(32-d|0);f[a>>2]=f[a>>2]&~b|f[h+(e<<2)>>2]&b;b=d}}f[o>>2]=c;f[o+4>>2]=b;u=p;return}function Xg(a,c,d){a=a|0;c=c|0;d=d|0;var e=0,g=0,h=0,i=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0;e=f[d>>2]|0;m=f[d+4>>2]|0;a:do if((e|0)==(m|0)){n=a+8|0;o=a+12|0;q=0}else{k=f[c>>2]|0;l=a+8|0;j=a+12|0;d=0;b:while(1){h=f[e>>2]|0;i=f[k+(h<<2)>>2]|0;if((i|0)>=(d|0)){d=f[l>>2]|0;c=(f[j>>2]|0)-d|0;if((c|0)>0){g=c>>2;a=0;do{c=f[d+(a<<2)>>2]|0;if(b[c+84>>0]|0)break b;c=f[c+68>>2]|0;f[c+(i<<2)>>2]=f[c+(h<<2)>>2];a=a+1|0}while((a|0)<(g|0))}d=i+1|0}e=e+4|0;if((e|0)==(m|0)){n=l;o=j;q=d;break a}}Fa(16608,16627,91,16668)}while(0);c=f[o>>2]|0;d=f[n>>2]|0;if((c-d|0)>0)j=0;else return;do{g=f[d+(j<<2)>>2]|0;b[g+84>>0]=0;h=g+68|0;g=g+72|0;e=f[g>>2]|0;a=f[h>>2]|0;i=e-a>>2;if(q>>>0<=i>>>0){if(q>>>0>>0?(p=a+(q<<2)|0,(e|0)!=(p|0)):0)f[g>>2]=e+(~((e+-4-p|0)>>>2)<<2)}else{_h(h,q-i|0,3240);d=f[n>>2]|0;c=f[o>>2]|0}j=j+1|0}while((j|0)<(c-d>>2|0));return}function Yg(a,b){a=a|0;b=b|0;var c=0,e=0,g=0,h=0,i=0,j=0,k=0,l=0;j=d[b>>1]|0;k=d[b+2>>1]|0;l=d[b+4>>1]|0;i=d[b+6>>1]|0;b=((((j^318)&65535)+239^k&65535)+239^l&65535)+239^i&65535;e=f[a+4>>2]|0;if(!e){l=0;return l|0}h=e+-1|0;c=(h&e|0)==0;if(c)g=b&h;else g=(b>>>0)%(e>>>0)|0;b=f[(f[a>>2]|0)+(g<<2)>>2]|0;if(!b){l=0;return l|0}b=f[b>>2]|0;if(!b){l=0;return l|0}if(c){while(1){if((f[b+4>>2]&h|0)!=(g|0)){b=0;a=20;break}if((((d[b+8>>1]|0)==j<<16>>16?(d[b+10>>1]|0)==k<<16>>16:0)?(d[b+12>>1]|0)==l<<16>>16:0)?(d[b+14>>1]|0)==i<<16>>16:0){a=20;break}b=f[b>>2]|0;if(!b){b=0;a=20;break}}if((a|0)==20)return b|0}else{while(1){if((((f[b+4>>2]|0)>>>0)%(e>>>0)|0|0)!=(g|0)){b=0;a=20;break}if((((d[b+8>>1]|0)==j<<16>>16?(d[b+10>>1]|0)==k<<16>>16:0)?(d[b+12>>1]|0)==l<<16>>16:0)?(d[b+14>>1]|0)==i<<16>>16:0){a=20;break}b=f[b>>2]|0;if(!b){b=0;a=20;break}}if((a|0)==20)return b|0}return 0}function Zg(a,c){a=a|0;c=c|0;var d=0,e=0,g=0,h=0,i=0,j=0,k=0;k=u;u=u+16|0;h=k+8|0;i=k+4|0;j=k;f[j>>2]=f[a+16>>2];g=c+16|0;e=g;d=f[e>>2]|0;e=f[e+4>>2]|0;if(!((e|0)>0|(e|0)==0&d>>>0>0)){f[i>>2]=f[c+4>>2];f[h>>2]=f[i>>2];vf(c,h,j,j+4|0)|0;d=g;e=f[d+4>>2]|0;d=f[d>>2]|0}f[j>>2]=f[a+24>>2];if(!((e|0)>0|(e|0)==0&d>>>0>0)){f[i>>2]=f[c+4>>2];f[h>>2]=f[i>>2];vf(c,h,j,j+4|0)|0;d=g;e=f[d+4>>2]|0;d=f[d>>2]|0}b[j>>0]=0;if((e|0)>0|(e|0)==0&d>>>0>0){a=0;u=k;return a|0}else{f[i>>2]=f[c+4>>2];f[h>>2]=f[i>>2];vf(c,h,j,j+1|0)|0;Kc(a+84|0,c);a=1;u=k;return a|0}return 0}function _g(a,b,c,d){a=a|0;b=b|0;c=c|0;d=d|0;var e=0,g=0,h=0,i=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0;q=u;u=u+16|0;o=q;if(!b){c=0;u=q;return c|0}n=b+84|0;m=b+88|0;f[o>>2]=0;f[o+4>>2]=0;f[o+8>>2]=0;b=f[m>>2]|0;a=f[n>>2]|0;e=(b-a|0)/12|0;if(e>>>0>=c>>>0){if(e>>>0>c>>>0?(g=a+(c*12|0)|0,(b|0)!=(g|0)):0)f[m>>2]=b+(~(((b+-12-g|0)>>>0)/12|0)*12|0)}else mh(n,c-e|0,o);if((c|0)<=0){c=1;u=q;return c|0}a=f[n>>2]|0;k=0;do{h=k*3|0;i=f[d+(h<<2)>>2]|0;j=f[d+(h+1<<2)>>2]|0;h=f[d+(h+2<<2)>>2]|0;e=f[m>>2]|0;g=(e-a|0)/12|0;b=a;l=k;k=k+1|0;if((l|0)>=(g|0)){f[o>>2]=0;f[o+4>>2]=0;f[o+8>>2]=0;if(k>>>0<=g>>>0){if(k>>>0>>0?(p=b+(k*12|0)|0,(e|0)!=(p|0)):0)f[m>>2]=e+(~(((e+-12-p|0)>>>0)/12|0)*12|0)}else{mh(n,k-g|0,o);a=f[n>>2]|0;b=a}}f[b+(l*12|0)>>2]=i;f[b+(l*12|0)+4>>2]=j;f[b+(l*12|0)+8>>2]=h}while((k|0)!=(c|0));a=1;u=q;return a|0}function $g(a,c){a=a|0;c=c|0;var d=0,e=0,g=0,h=0,i=0,j=0,k=0,l=0;j=b[c>>0]|0;k=b[c+1>>0]|0;l=b[c+2>>0]|0;i=b[c+3>>0]|0;c=(((j&255^318)+239^k&255)+239^l&255)+239^i&255;e=f[a+4>>2]|0;if(!e){l=0;return l|0}h=e+-1|0;d=(h&e|0)==0;if(d)g=c&h;else g=(c>>>0)%(e>>>0)|0;c=f[(f[a>>2]|0)+(g<<2)>>2]|0;if(!c){l=0;return l|0}c=f[c>>2]|0;if(!c){l=0;return l|0}if(d){while(1){if((f[c+4>>2]&h|0)!=(g|0)){c=0;a=20;break}if((((b[c+8>>0]|0)==j<<24>>24?(b[c+9>>0]|0)==k<<24>>24:0)?(b[c+10>>0]|0)==l<<24>>24:0)?(b[c+11>>0]|0)==i<<24>>24:0){a=20;break}c=f[c>>2]|0;if(!c){c=0;a=20;break}}if((a|0)==20)return c|0}else{while(1){if((((f[c+4>>2]|0)>>>0)%(e>>>0)|0|0)!=(g|0)){c=0;a=20;break}if((((b[c+8>>0]|0)==j<<24>>24?(b[c+9>>0]|0)==k<<24>>24:0)?(b[c+10>>0]|0)==l<<24>>24:0)?(b[c+11>>0]|0)==i<<24>>24:0){a=20;break}c=f[c>>2]|0;if(!c){c=0;a=20;break}}if((a|0)==20)return c|0}return 0}function ah(a){a=a|0;Jl(a);Jl(a+32|0);Jl(a+64|0);Jl(a+96|0);Jl(a+128|0);Jl(a+160|0);Jl(a+192|0);Jl(a+224|0);Jl(a+256|0);Jl(a+288|0);Jl(a+320|0);Jl(a+352|0);Jl(a+384|0);Jl(a+416|0);Jl(a+448|0);Jl(a+480|0);Jl(a+512|0);Jl(a+544|0);Jl(a+576|0);Jl(a+608|0);Jl(a+640|0);Jl(a+672|0);Jl(a+704|0);Jl(a+736|0);Jl(a+768|0);Jl(a+800|0);Jl(a+832|0);Jl(a+864|0);Jl(a+896|0);Jl(a+928|0);Jl(a+960|0);Jl(a+992|0);Jl(a+1024|0);return}function bh(a,b,c){a=a|0;b=b|0;c=c|0;var d=0,e=0,g=0,h=0,i=0,j=0;j=u;u=u+16|0;h=j;f[h>>2]=b;if((b|0)<=-1)Fa(7520,7532,107,7569);i=a+8|0;if(((f[a+12>>2]|0)-(f[i>>2]|0)>>2|0)<=(b|0))oi(i,b+1|0);d=f[(f[c>>2]|0)+56>>2]|0;do if((d|0)<4){g=a+20+(d*12|0)+4|0;e=f[g>>2]|0;if((e|0)==(f[a+20+(d*12|0)+8>>2]|0)){Bj(a+20+(d*12|0)|0,h);break}else{f[e>>2]=b;f[g>>2]=e+4;break}}while(0);g=f[c>>2]|0;a=f[h>>2]|0;f[g+60>>2]=a;a=(f[i>>2]|0)+(a<<2)|0;f[c>>2]=0;b=f[a>>2]|0;f[a>>2]=g;if(!b){u=j;return}a=b+88|0;d=f[a>>2]|0;f[a>>2]=0;if(d|0){e=f[d+8>>2]|0;if(e|0){g=d+12|0;if((f[g>>2]|0)!=(e|0))f[g>>2]=e;Lq(e)}Lq(d)}d=f[b+68>>2]|0;if(d|0){g=b+72|0;e=f[g>>2]|0;if((e|0)!=(d|0))f[g>>2]=e+(~((e+-4-d|0)>>>2)<<2);Lq(d)}a=b+64|0;d=f[a>>2]|0;f[a>>2]=0;if(d|0){e=f[d>>2]|0;if(e|0){g=d+4|0;if((f[g>>2]|0)!=(e|0))f[g>>2]=e;Lq(e)}Lq(d)}Lq(b);u=j;return}function ch(a,c,d){a=a|0;c=c|0;d=d|0;var e=0,g=0,h=0,i=0,j=0,k=0;j=c;h=d-j|0;i=a+8|0;e=f[i>>2]|0;g=f[a>>2]|0;k=g;if(h>>>0>(e-g|0)>>>0){if(g){e=a+4|0;if((f[e>>2]|0)!=(k|0))f[e>>2]=k;Lq(k);f[i>>2]=0;f[e>>2]=0;f[a>>2]=0;e=0}if((h|0)<0){zp(a);e=f[i>>2]|0;g=f[a>>2]|0}else g=0;k=e-g|0;g=k<<1;g=k>>>0<1073741823?(g>>>0>>0?h:g):2147483647;if((g|0)<0)zp(a);e=Fn(g)|0;h=a+4|0;f[h>>2]=e;f[a>>2]=e;f[i>>2]=e+g;if((c|0)==(d|0))return;do{b[e>>0]=b[c>>0]|0;c=c+1|0;e=(f[h>>2]|0)+1|0;f[h>>2]=e}while((c|0)!=(d|0));return}else{a=a+4|0;i=(f[a>>2]|0)-g|0;h=h>>>0>i>>>0;i=c+i|0;g=h?i:d;e=g-j|0;if(e|0)Om(k|0,c|0,e|0)|0;c=k+e|0;if(!h){if((f[a>>2]|0)==(c|0))return;f[a>>2]=c;return}if((g|0)==(d|0))return;e=f[a>>2]|0;c=i;do{b[e>>0]=b[c>>0]|0;c=c+1|0;e=(f[a>>2]|0)+1|0;f[a>>2]=e}while((c|0)!=(d|0));return}}function dh(a,c,d){a=a|0;c=c|0;d=d|0;var e=0,g=0,h=0,i=0,j=0,k=0,l=0,m=0;m=u;u=u+16|0;k=m;if(!(hi(a,c,d)|0)){l=0;u=m;return l|0}if((b[(f[a+8>>2]|0)+24>>0]|0)!=3){l=0;u=m;return l|0}h=f[c+48>>2]|0;f[k>>2]=0;f[k+4>>2]=0;f[k+8>>2]=0;Ck(k,17741,17);i=h+16|0;e=f[i>>2]|0;if(e){c=i;a:while(1){g=e;while(1){if((f[g+16>>2]|0)>=(d|0))break;e=f[g+4>>2]|0;if(!e)break a;else g=e}e=f[g>>2]|0;if(!e){c=g;break}else c=g}if(((c|0)!=(i|0)?(j=c+20|0,(f[c+16>>2]|0)<=(d|0)):0)?(Pi(j,k)|0)!=0:0)c=ql(j,k,-1)|0;else l=12}else l=12;if((l|0)==12)c=ql(h,k,-1)|0;Eo(k);if((c|0)<1){l=0;u=m;return l|0}qp(a+40|0,c);l=1;u=m;return l|0}function eh(a,c){a=a|0;c=c|0;var d=0,e=0,g=0,h=0,i=0,j=0,k=0;k=u;u=u+16|0;h=k+8|0;i=k+4|0;j=k;f[j>>2]=f[a+12>>2];g=c+16|0;e=g;d=f[e>>2]|0;e=f[e+4>>2]|0;if(!((e|0)>0|(e|0)==0&d>>>0>0)){f[i>>2]=f[c+4>>2];f[h>>2]=f[i>>2];vf(c,h,j,j+4|0)|0;d=g;e=f[d+4>>2]|0;d=f[d>>2]|0}f[j>>2]=f[a+16>>2];if(!((e|0)>0|(e|0)==0&d>>>0>0)){f[i>>2]=f[c+4>>2];f[h>>2]=f[i>>2];vf(c,h,j,j+4|0)|0;d=g;e=f[d+4>>2]|0;d=f[d>>2]|0}b[j>>0]=0;if((e|0)>0|(e|0)==0&d>>>0>0){a=0;u=k;return a|0}else{f[i>>2]=f[c+4>>2];f[h>>2]=f[i>>2];vf(c,h,j,j+1|0)|0;Kc(a+100|0,c);a=1;u=k;return a|0}return 0}function fh(a,c,d){a=a|0;c=c|0;d=d|0;var e=0,g=0,h=0,i=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,v=0,w=0;s=u;u=u+16|0;r=s+4|0;q=s;n=a+8|0;g=f[n>>2]|0;a=f[g+40>>2]|0;p=Iq((a|0)>-1?a:-1)|0;l=c+4|0;h=f[l>>2]|0;e=f[c>>2]|0;if((h|0)==(e|0)){Jq(p);u=s;return 1}o=d+16|0;m=d+4|0;k=p+a|0;i=g;j=g;g=0;while(1){a=f[e+(g<<2)>>2]|0;if(!(b[i+84>>0]|0))a=f[(f[i+68>>2]|0)+(a<<2)>>2]|0;t=j+48|0;v=f[t>>2]|0;t=f[t+4>>2]|0;w=j+40|0;i=f[w>>2]|0;a=En(i|0,f[w+4>>2]|0,a|0,((a|0)<0)<<31>>31|0)|0;a=Do(a|0,I|0,v|0,t|0)|0;Mh(p|0,(f[f[j>>2]>>2]|0)+a|0,i|0)|0;j=o;i=f[j+4>>2]|0;if((i|0)>0|(i|0)==0&(f[j>>2]|0)>>>0>0)a=h;else{f[q>>2]=f[m>>2];f[r>>2]=f[q>>2];vf(d,r,p,k)|0;e=f[c>>2]|0;a=f[l>>2]|0}g=g+1|0;if(g>>>0>=a-e>>2>>>0)break;j=f[n>>2]|0;i=j;h=a}Jq(p);u=s;return 1}function gh(a,b){a=a|0;b=b|0;var c=0,d=0,e=0,g=0,h=0,i=0,j=0,k=0,l=0,m=0,n=0;n=a+8|0;e=f[n>>2]|0;m=a+4|0;d=f[m>>2]|0;if(e-d>>2>>>0>=b>>>0){Xj(d|0,0,b<<2|0)|0;f[m>>2]=d+(b<<2);return}c=f[a>>2]|0;h=(d-c>>2)+b|0;if(h>>>0>1073741823){zp(a);g=f[a>>2]|0;d=f[m>>2]|0;e=f[n>>2]|0}else g=c;c=d;l=g;k=e-g|0;j=k>>1;h=k>>2>>>0<536870911?(j>>>0>>0?h:j):1073741823;j=d-g>>2;do if(h)if(h>>>0>1073741823){a=Ha(4)|0;qq(a);sa(a|0,1040,102)}else{i=Fn(h<<2)|0;break}else i=0;while(0);e=i+(j<<2)|0;Xj(e|0,0,b<<2|0)|0;d=e;k=i+(h<<2)|0;h=i+(j+b<<2)|0;if((c|0)!=(l|0)){do{c=c+-4|0;b=f[c>>2]|0;f[c>>2]=0;f[e+-4>>2]=b;e=d+-4|0;d=e}while((c|0)!=(l|0));g=f[a>>2]|0;c=f[m>>2]|0}f[a>>2]=d;f[m>>2]=h;f[n>>2]=k;e=g;if((c|0)!=(e|0))do{c=c+-4|0;d=f[c>>2]|0;f[c>>2]=0;if(d|0)Oa[f[(f[d>>2]|0)+4>>2]&127](d)}while((c|0)!=(e|0));if(!g)return;Lq(g);return}function hh(a,b){a=a|0;b=b|0;var c=0,d=0,e=0,g=0,h=0,i=0,j=0,k=0;i=f[b>>2]|0;j=f[b+4>>2]|0;k=f[b+8>>2]|0;h=f[b+12>>2]|0;b=(((i^318)+239^j)+239^k)+239^h;d=f[a+4>>2]|0;if(!d){k=0;return k|0}g=d+-1|0;c=(g&d|0)==0;if(c)e=b&g;else e=(b>>>0)%(d>>>0)|0;b=f[(f[a>>2]|0)+(e<<2)>>2]|0;if(!b){k=0;return k|0}b=f[b>>2]|0;if(!b){k=0;return k|0}if(c){while(1){if((f[b+4>>2]&g|0)!=(e|0)){b=0;a=20;break}if((((f[b+8>>2]|0)==(i|0)?(f[b+12>>2]|0)==(j|0):0)?(f[b+16>>2]|0)==(k|0):0)?(f[b+20>>2]|0)==(h|0):0){a=20;break}b=f[b>>2]|0;if(!b){b=0;a=20;break}}if((a|0)==20)return b|0}else{while(1){if((((f[b+4>>2]|0)>>>0)%(d>>>0)|0|0)!=(e|0)){b=0;a=20;break}if((((f[b+8>>2]|0)==(i|0)?(f[b+12>>2]|0)==(j|0):0)?(f[b+16>>2]|0)==(k|0):0)?(f[b+20>>2]|0)==(h|0):0){a=20;break}b=f[b>>2]|0;if(!b){b=0;a=20;break}}if((a|0)==20)return b|0}return 0}function ih(a,c,d){a=a|0;c=c|0;d=d|0;var e=0,g=0,h=0,i=0,j=0,k=0,l=0;l=u;u=u+32|0;k=l+16|0;g=l+12|0;h=l+8|0;i=l+4|0;j=l;e=f[c>>2]|0;if(!e)Fa(12027,12293,55,12477);c=f[c+4>>2]|0;if(!c)Fa(12027,12293,55,12477);c=f[c+(d<<2)>>2]|0;if(!(b[e+84>>0]|0))c=f[(f[e+68>>2]|0)+(c<<2)>>2]|0;f[a>>2]=0;f[a+4>>2]=0;f[a+8>>2]=0;f[a+12>>2]=0;f[a+16>>2]=0;f[a+20>>2]=0;switch(b[e+24>>0]|0){case 1:{f[g>>2]=c;f[k>>2]=f[g>>2];cb(e,k,a)|0;u=l;return}case 2:{f[h>>2]=c;f[k>>2]=f[h>>2];eg(e,k,a)|0;u=l;return}case 3:{f[i>>2]=c;f[k>>2]=f[i>>2];dg(e,k,a)|0;u=l;return}case 4:{f[j>>2]=c;f[k>>2]=f[j>>2];cg(e,k,a)|0;u=l;return}default:{u=l;return}}}function jh(a,b){a=a|0;b=b|0;var c=0,d=0,e=0,g=0,h=0,i=0;f[a+4>>2]=f[b+4>>2];g=a+8|0;i=b+8|0;if((a|0)==(b|0))return a|0;h=b+12|0;c=f[h>>2]|0;if(!c)c=0;else{e=a+16|0;if(c>>>0>f[e>>2]<<5>>>0){d=f[g>>2]|0;if(d){Lq(d);f[g>>2]=0;f[e>>2]=0;f[a+12>>2]=0;c=f[h>>2]|0}if((c|0)<0)zp(g);d=((c+-1|0)>>>5)+1|0;c=Fn(d<<2)|0;f[g>>2]=c;f[a+12>>2]=0;f[e>>2]=d;d=f[h>>2]|0}else{d=c;c=f[g>>2]|0}Om(c|0,f[i>>2]|0,((d+-1|0)>>>5<<2)+4|0)|0;c=f[h>>2]|0}f[a+12>>2]=c;h=a+20|0;i=b+20|0;g=b+24|0;c=f[g>>2]|0;if(!c)c=0;else{e=a+28|0;if(c>>>0>f[e>>2]<<5>>>0){d=f[h>>2]|0;if(d){Lq(d);f[h>>2]=0;f[e>>2]=0;f[a+24>>2]=0;c=f[g>>2]|0}if((c|0)<0)zp(h);d=((c+-1|0)>>>5)+1|0;c=Fn(d<<2)|0;f[h>>2]=c;f[a+24>>2]=0;f[e>>2]=d;d=f[g>>2]|0}else{d=c;c=f[h>>2]|0}Om(c|0,f[i>>2]|0,((d+-1|0)>>>5<<2)+4|0)|0;c=f[g>>2]|0}f[a+24>>2]=c;return a|0}function kh(a,b,c,d){a=a|0;b=b|0;c=c|0;d=d|0;var e=0,g=0.0,h=0.0,i=0.0,j=0,k=0,l=0,m=0,n=0,o=0,p=0;o=u;u=u+16|0;e=o;j=c+1|0;f[e>>2]=0;n=e+4|0;f[n>>2]=0;f[e+8>>2]=0;do if(j)if(j>>>0>1073741823){zp(e);o=Ha(4)|0;qq(o);sa(o|0,1040,102)}else{l=Fn(j<<2)|0;f[e>>2]=l;m=l+(j<<2)|0;f[e+8>>2]=m;Xj(l|0,0,(c<<2)+4|0)|0;f[n>>2]=m;k=l;break}else{k=0;l=0;m=0}while(0);if((b|0)>0){e=0;do{p=l+(f[a+(e<<2)>>2]<<2)|0;f[p>>2]=(f[p>>2]|0)+1;e=e+1|0}while((e|0)!=(b|0))}i=+(b|0);if((c|0)<0){e=0;g=0.0}else{b=0;e=0;g=0.0;do{p=f[l+(b<<2)>>2]|0;h=+(p|0);if((p|0)>0){e=e+1|0;g=g+h*+Xh(h/i)}b=b+1|0}while((b|0)!=(j|0))}if(d|0)f[d>>2]=e;i=-g;e=~~i>>>0;b=+K(i)>=1.0?(i>0.0?~~+Y(+J(i/4294967296.0),4294967295.0)>>>0:~~+W((i-+(~~i>>>0))/4294967296.0)>>>0):0;if(!l){I=b;u=o;return e|0}if((m|0)!=(l|0))f[n>>2]=m+(~((m+-4-l|0)>>>2)<<2);Lq(k);I=b;u=o;return e|0}function lh(a,b){a=a|0;b=b|0;var c=0,d=0,e=0,g=0,h=0,i=0,j=0,k=0,l=0,m=0;l=u;u=u+16|0;h=l+8|0;i=l+4|0;g=l;k=a+12|0;j=a+4|0;c=f[j>>2]|0;if((c|0)==(f[a+8>>2]|0)){Bj(a,k);c=f[j>>2]|0}else{f[c>>2]=f[k>>2];c=c+4|0;f[j>>2]=c}d=f[a>>2]|0;f[g>>2]=c-d;e=b+16|0;c=e;m=f[c+4>>2]|0;if(!((m|0)>0|(m|0)==0&(f[c>>2]|0)>>>0>0)){f[i>>2]=f[b+4>>2];f[h>>2]=f[i>>2];vf(b,h,g,g+4|0)|0;d=f[a>>2]|0;c=f[g>>2]|0;m=e;g=f[m+4>>2]|0;if(!((g|0)>0|(g|0)==0&(f[m>>2]|0)>>>0>0)){f[i>>2]=f[b+4>>2];f[h>>2]=f[i>>2];vf(b,h,d,d+c|0)|0;d=f[a>>2]|0}}c=f[j>>2]|0;if((c|0)==(d|0)){f[k>>2]=0;m=a+16|0;f[m>>2]=0;u=l;return}f[j>>2]=c+(~((c+-4-d|0)>>>2)<<2);f[k>>2]=0;m=a+16|0;f[m>>2]=0;u=l;return}function mh(a,b,c){a=a|0;b=b|0;c=c|0;var d=0,e=0,g=0,h=0,i=0,j=0,k=0;j=a+8|0;g=f[j>>2]|0;k=a+4|0;d=f[k>>2]|0;if(((g-d|0)/12|0)>>>0>=b>>>0){do{f[d>>2]=f[c>>2];f[d+4>>2]=f[c+4>>2];f[d+8>>2]=f[c+8>>2];d=(f[k>>2]|0)+12|0;f[k>>2]=d;b=b+-1|0}while((b|0)!=0);return}e=f[a>>2]|0;h=((d-e|0)/12|0)+b|0;if(h>>>0>357913941){zp(a);e=f[a>>2]|0;g=f[j>>2]|0;d=f[k>>2]|0}i=(g-e|0)/12|0;g=i<<1;g=i>>>0<178956970?(g>>>0>>0?h:g):357913941;d=(d-e|0)/12|0;do if(g)if(g>>>0>357913941){k=Ha(4)|0;qq(k);sa(k|0,1040,102)}else{e=Fn(g*12|0)|0;break}else e=0;while(0);i=e+(d*12|0)|0;h=e+(g*12|0)|0;d=i;g=i;do{f[d>>2]=f[c>>2];f[d+4>>2]=f[c+4>>2];f[d+8>>2]=f[c+8>>2];d=g+12|0;g=d;b=b+-1|0}while((b|0)!=0);d=f[a>>2]|0;e=(f[k>>2]|0)-d|0;b=i+(((e|0)/-12|0)*12|0)|0;if((e|0)>0)Mh(b|0,d|0,e|0)|0;f[a>>2]=b;f[k>>2]=g;f[j>>2]=h;if(!d)return;Lq(d);return}function nh(a,c){a=a|0;c=c|0;var d=0,e=0,g=0,h=0,i=0,j=0,k=0,l=0,m=0;m=u;u=u+16|0;i=m+4|0;j=m;l=m+8|0;k=a+4|0;if((f[k>>2]|0)==-1){l=0;u=m;return l|0}g=f[a+8>>2]|0;h=c+16|0;e=h;d=f[e>>2]|0;e=f[e+4>>2]|0;if(!((e|0)>0|(e|0)==0&d>>>0>0)){e=(f[a+12>>2]|0)-g|0;f[j>>2]=f[c+4>>2];f[i>>2]=f[j>>2];vf(c,i,g,g+e|0)|0;e=h;d=f[e>>2]|0;e=f[e+4>>2]|0;g=a+20|0;if(!((e|0)>0|(e|0)==0&d>>>0>0)){f[j>>2]=f[c+4>>2];f[i>>2]=f[j>>2];vf(c,i,g,g+4|0)|0;d=h;e=f[d+4>>2]|0;d=f[d>>2]|0}}b[l>>0]=f[k>>2];if(!((e|0)>0|(e|0)==0&d>>>0>0)){f[j>>2]=f[c+4>>2];f[i>>2]=f[j>>2];vf(c,i,l,l+1|0)|0}l=1;u=m;return l|0}function oh(a){a=a|0;var b=0,c=0,d=0,e=0,g=0,h=0,i=0,j=0,k=0,l=0,m=0;m=u;u=u+16|0;k=m;l=a+36|0;j=a+4|0;i=a+8|0;d=(f[i>>2]|0)-(f[j>>2]|0)>>2;g=a+40|0;b=f[g>>2]|0;c=f[l>>2]|0;e=b-c>>2;if(d>>>0<=e>>>0){if(d>>>0>>0?(h=c+(d<<2)|0,(b|0)!=(h|0)):0)do{e=b+-4|0;f[g>>2]=e;b=f[e>>2]|0;f[e>>2]=0;if(b|0)Oa[f[(f[b>>2]|0)+4>>2]&127](b);b=f[g>>2]|0}while((b|0)!=(h|0))}else gh(l,d-e|0);if((f[i>>2]|0)==(f[j>>2]|0)){a=1;u=m;return a|0}c=0;while(1){Sa[f[(f[a>>2]|0)+56>>2]&7](k,a,c);h=(f[l>>2]|0)+(c<<2)|0;g=f[k>>2]|0;f[k>>2]=0;b=f[h>>2]|0;f[h>>2]=g;if(b|0)Oa[f[(f[b>>2]|0)+4>>2]&127](b);b=f[k>>2]|0;f[k>>2]=0;if(b|0)Oa[f[(f[b>>2]|0)+4>>2]&127](b);if(!(f[(f[l>>2]|0)+(c<<2)>>2]|0)){b=0;c=16;break}c=c+1|0;if(c>>>0>=(f[i>>2]|0)-(f[j>>2]|0)>>2>>>0){b=1;c=16;break}}if((c|0)==16){u=m;return b|0}return 0}function ph(a){a=a|0;var c=0,d=0,e=0,g=0,h=0,i=0,j=0,k=0;k=u;u=u+16|0;h=k+4|0;g=k;i=k+8|0;c=f[a+112>>2]|0;if((c|0)!=-1){f[h>>2]=c;d=a+72|0;e=f[d>>2]|0;if((e|0)==(f[a+76>>2]|0))Bj(a+68|0,h);else{f[e>>2]=c;f[d>>2]=e+4}}nf(a);j=a+32|0;Ri(f[a+116>>2]|0,j)|0;b[i>>0]=f[a+136>>2];e=a+48|0;d=f[e+4>>2]|0;if(!((d|0)>0|(d|0)==0&(f[e>>2]|0)>>>0>0)){f[g>>2]=f[a+36>>2];f[h>>2]=f[g>>2];vf(j,h,i,i+1|0)|0}i=a+140|0;h=a+144|0;c=f[i>>2]|0;if((f[h>>2]|0)==(c|0)){u=k;return}g=0;do{Ri((f[c+(g*12|0)+4>>2]|0)-(f[c+(g*12|0)>>2]|0)>>2,j)|0;c=f[i>>2]|0;d=f[c+(g*12|0)>>2]|0;e=(f[c+(g*12|0)+4>>2]|0)-d>>2;if(e){Nc(d,e,1,j)|0;c=f[i>>2]|0}g=g+1|0}while(g>>>0<(((f[h>>2]|0)-c|0)/12|0)>>>0);u=k;return}function qh(a,b){a=a|0;b=b|0;var c=0,d=0,e=0;c=a+8|0;f[c>>2]=f[b>>2];jh(a+12|0,b+4|0)|0;d=a+44|0;e=b+36|0;f[d>>2]=f[e>>2];f[d+4>>2]=f[e+4>>2];f[d+8>>2]=f[e+8>>2];f[d+12>>2]=f[e+12>>2];if((c|0)==(b|0)){f[a+96>>2]=f[b+88>>2];return}else{Cg(a+60|0,f[b+52>>2]|0,f[b+56>>2]|0);Cg(a+72|0,f[b+64>>2]|0,f[b+68>>2]|0);Cg(a+84|0,f[b+76>>2]|0,f[b+80>>2]|0);f[a+96>>2]=f[b+88>>2];Ug(a+100|0,f[b+92>>2]|0,f[b+96>>2]|0);return}}function rh(a,b){a=a|0;b=b|0;var c=0,d=0,e=0,g=0,h=0,i=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0;r=u;u=u+16|0;o=r+4|0;q=r;p=a+4|0;c=f[p>>2]|0;m=a+8|0;d=f[m>>2]|0;if((d|0)!=(c|0)){c=d+(~((d+-4-c|0)>>>2)<<2)|0;f[m>>2]=c}l=a+16|0;j=f[l>>2]|0;k=a+20|0;d=f[k>>2]|0;e=j;if((d|0)!=(j|0))f[k>>2]=d+(~((d+-4-e|0)>>>2)<<2);d=f[b>>2]|0;j=f[b+4>>2]|0;if((d|0)==(j|0)){u=r;return}i=a+12|0;h=d;do{d=f[h>>2]|0;f[o>>2]=d;if((c|0)==(f[i>>2]|0)){Bj(p,o);e=f[l>>2]|0}else{f[c>>2]=d;f[m>>2]=c+4}d=f[o>>2]|0;b=f[k>>2]|0;g=b-e>>2;c=e;if((d|0)<(g|0))b=c;else{a=d+1|0;f[q>>2]=-1;if(a>>>0<=g>>>0){if(a>>>0>>0?(n=c+(a<<2)|0,(b|0)!=(n|0)):0)f[k>>2]=b+(~((b+-4-n|0)>>>2)<<2)}else{_h(l,a-g|0,q);e=f[l>>2]|0;d=f[o>>2]|0;c=e}b=c}c=f[m>>2]|0;f[b+(d<<2)>>2]=(c-(f[p>>2]|0)>>2)+-1;h=h+4|0}while((h|0)!=(j|0));u=r;return}function sh(a,c,d){a=a|0;c=c|0;d=d|0;var e=0,g=0,h=0,i=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0;q=u;u=u+32|0;o=q+16|0;n=q+12|0;p=q;f[a>>2]=0;m=a+4|0;f[m>>2]=0;f[a+8>>2]=0;k=c;e=f[k>>2]|0;k=f[k+4>>2]|0;l=f[d+4>>2]|0;c=l-k|0;if(!c){u=q;return}if(c>>>0>357913941){zp(a);q=Ha(4)|0;qq(q);sa(q|0,1040,102)}d=Fn(c*12|0)|0;f[m>>2]=d;f[a>>2]=d;f[a+8>>2]=d+(c*12|0);if((l|0)==(k|0)){u=q;return}j=e+84|0;g=e+68|0;h=p+4|0;i=p+8|0;a=k;do{f[p>>2]=0;f[p+4>>2]=0;f[p+8>>2]=0;if(!(b[j>>0]|0))c=f[(f[g>>2]|0)+(a<<2)>>2]|0;else c=a;f[n>>2]=c;f[o>>2]=f[n>>2];Cc(e,o,p)|0;f[d>>2]=f[p>>2];f[d+4>>2]=f[h>>2];f[d+8>>2]=f[i>>2];a=a+1|0;d=(f[m>>2]|0)+12|0;f[m>>2]=d}while((a|0)!=(l|0));u=q;return}function th(a,b){a=a|0;b=b|0;var c=0,d=0,e=0,g=0,h=0,i=0,j=0,k=0,l=0,m=0,n=0;n=a+4|0;c=f[n>>2]|0;m=f[a>>2]|0;g=m;do if((c|0)==(m|0)){m=a+8|0;d=f[m>>2]|0;l=a+12|0;k=f[l>>2]|0;e=k;if(d>>>0>>0){a=d;i=((e-a>>2)+1|0)/2|0;g=d+(i<<2)|0;e=a-c|0;a=e>>2;h=g+(0-a<<2)|0;if(!a)c=g;else{Om(h|0,c|0,e|0)|0;d=f[m>>2]|0;c=h}f[n>>2]=c;f[m>>2]=d+(i<<2);break}e=e-g>>1;e=(e|0)==0?1:e;if(e>>>0>1073741823){b=Ha(4)|0;qq(b);sa(b|0,1040,102)}h=Fn(e<<2)|0;i=h;k=h+((e+3|0)>>>2<<2)|0;j=k;h=h+(e<<2)|0;if((c|0)==(d|0))d=j;else{e=k;g=j;do{f[e>>2]=f[c>>2];e=g+4|0;g=e;c=c+4|0}while((c|0)!=(d|0));c=f[a>>2]|0;d=g}f[a>>2]=i;f[n>>2]=j;f[m>>2]=d;f[l>>2]=h;if(!c)c=k;else{Lq(c);c=f[n>>2]|0}}while(0);f[c+-4>>2]=f[b>>2];f[n>>2]=(f[n>>2]|0)+-4;return}function uh(a,b){a=a|0;b=b|0;var c=0,d=0,e=0,g=0,h=0,i=0,j=0,k=0,l=0;l=a+4|0;d=f[l>>2]|0;c=f[a>>2]|0;e=(d-c>>2)+1|0;if(e>>>0>1073741823){zp(a);c=f[a>>2]|0;d=f[l>>2]|0}k=a+8|0;j=(f[k>>2]|0)-c|0;g=j>>1;g=j>>2>>>0<536870911?(g>>>0>>0?e:g):1073741823;c=d-c>>2;do if(g)if(g>>>0>1073741823){a=Ha(4)|0;qq(a);sa(a|0,1040,102)}else{e=Fn(g<<2)|0;break}else e=0;while(0);h=e+(c<<2)|0;d=h;j=e+(g<<2)|0;i=f[b>>2]|0;f[b>>2]=0;f[h>>2]=i;i=h+4|0;b=f[a>>2]|0;c=f[l>>2]|0;if((c|0)==(b|0)){g=b;c=b}else{e=h;do{c=c+-4|0;h=f[c>>2]|0;f[c>>2]=0;f[e+-4>>2]=h;e=d+-4|0;d=e}while((c|0)!=(b|0));g=f[a>>2]|0;c=f[l>>2]|0}f[a>>2]=d;f[l>>2]=i;f[k>>2]=j;e=g;if((c|0)!=(e|0))do{c=c+-4|0;d=f[c>>2]|0;f[c>>2]=0;if(d|0)Oa[f[(f[d>>2]|0)+4>>2]&127](d)}while((c|0)!=(e|0));if(!g)return;Lq(g);return}function vh(a,c){a=a|0;c=c|0;var d=0,e=0,g=0,h=0,i=0;g=a+24|0;e=f[a+32>>2]|0;if(e>>>0<=4194303)Fa(7085,7115,357,7138);if(e>>>0>=1073741824)Fa(7148,7115,358,7138);d=e+-4194304|0;do if(d>>>0>=64){if(d>>>0<16384){h=a+28|0;g=(f[g>>2]|0)+(f[h>>2]|0)|0;d=e+-4177920|0;b[g>>0]=d;i=2;g=g+1|0;e=h;d=d>>>8;break}h=a+28|0;g=(f[g>>2]|0)+(f[h>>2]|0)|0;if(d>>>0<4194304){d=e+4194304|0;b[g>>0]=d;b[g+1>>0]=d>>>8;i=3;g=g+2|0;e=h;d=d>>>16;break}else{d=e+-1077936128|0;b[g>>0]=d;b[g+1>>0]=d>>>8;b[g+2>>0]=d>>>16;i=4;g=g+3|0;e=h;d=d>>>24;break}}else{e=a+28|0;i=1;g=(f[g>>2]|0)+(f[e>>2]|0)|0}while(0);b[g>>0]=d;g=(f[e>>2]|0)+i|0;h=((g|0)<0)<<31>>31;a=a+40|0;i=(f[c>>2]|0)+(f[a>>2]|0)|0;e=i;b[e>>0]=g;b[e+1>>0]=g>>8;b[e+2>>0]=g>>16;b[e+3>>0]=g>>24;i=i+4|0;b[i>>0]=h;b[i+1>>0]=h>>8;b[i+2>>0]=h>>16;b[i+3>>0]=h>>24;i=f[a>>2]|0;a=f[a+4>>2]|0;h=Do(g|0,h|0,8,0)|0;a=Do(h|0,I|0,i|0,a|0)|0;em(c,a,I);return}function wh(a,c){a=a|0;c=c|0;var d=0,e=0,g=0,h=0,i=0;g=a+24|0;e=f[a+32>>2]|0;if(e>>>0<=2097151)Fa(7085,7115,357,7138);if(e>>>0>=536870912)Fa(7148,7115,358,7138);d=e+-2097152|0;do if(d>>>0>=64){if(d>>>0<16384){h=a+28|0;g=(f[g>>2]|0)+(f[h>>2]|0)|0;d=e+-2080768|0;b[g>>0]=d;i=2;g=g+1|0;e=h;d=d>>>8;break}h=a+28|0;g=(f[g>>2]|0)+(f[h>>2]|0)|0;if(d>>>0<4194304){d=e+6291456|0;b[g>>0]=d;b[g+1>>0]=d>>>8;i=3;g=g+2|0;e=h;d=d>>>16;break}else{d=e+-1075838976|0;b[g>>0]=d;b[g+1>>0]=d>>>8;b[g+2>>0]=d>>>16;i=4;g=g+3|0;e=h;d=d>>>24;break}}else{e=a+28|0;i=1;g=(f[g>>2]|0)+(f[e>>2]|0)|0}while(0);b[g>>0]=d;g=(f[e>>2]|0)+i|0;h=((g|0)<0)<<31>>31;a=a+40|0;i=(f[c>>2]|0)+(f[a>>2]|0)|0;e=i;b[e>>0]=g;b[e+1>>0]=g>>8;b[e+2>>0]=g>>16;b[e+3>>0]=g>>24;i=i+4|0;b[i>>0]=h;b[i+1>>0]=h>>8;b[i+2>>0]=h>>16;b[i+3>>0]=h>>24;i=f[a>>2]|0;a=f[a+4>>2]|0;h=Do(g|0,h|0,8,0)|0;a=Do(h|0,I|0,i|0,a|0)|0;em(c,a,I);return}function xh(a,c){a=a|0;c=c|0;var d=0,e=0,g=0,h=0,i=0;g=a+24|0;e=f[a+32>>2]|0;if(e>>>0<=1048575)Fa(7085,7115,357,7138);if(e>>>0>=268435456)Fa(7148,7115,358,7138);d=e+-1048576|0;do if(d>>>0>=64){if(d>>>0<16384){h=a+28|0;g=(f[g>>2]|0)+(f[h>>2]|0)|0;d=e+-1032192|0;b[g>>0]=d;i=2;g=g+1|0;e=h;d=d>>>8;break}h=a+28|0;g=(f[g>>2]|0)+(f[h>>2]|0)|0;if(d>>>0<4194304){d=e+7340032|0;b[g>>0]=d;b[g+1>>0]=d>>>8;i=3;g=g+2|0;e=h;d=d>>>16;break}else{d=e+-1074790400|0;b[g>>0]=d;b[g+1>>0]=d>>>8;b[g+2>>0]=d>>>16;i=4;g=g+3|0;e=h;d=d>>>24;break}}else{e=a+28|0;i=1;g=(f[g>>2]|0)+(f[e>>2]|0)|0}while(0);b[g>>0]=d;g=(f[e>>2]|0)+i|0;h=((g|0)<0)<<31>>31;a=a+40|0;i=(f[c>>2]|0)+(f[a>>2]|0)|0;e=i;b[e>>0]=g;b[e+1>>0]=g>>8;b[e+2>>0]=g>>16;b[e+3>>0]=g>>24;i=i+4|0;b[i>>0]=h;b[i+1>>0]=h>>8;b[i+2>>0]=h>>16;b[i+3>>0]=h>>24;i=f[a>>2]|0;a=f[a+4>>2]|0;h=Do(g|0,h|0,8,0)|0;a=Do(h|0,I|0,i|0,a|0)|0;em(c,a,I);return}function yh(a,b,c){a=a|0;b=b|0;c=c|0;var d=0,e=0,g=0,h=0,i=0,j=0;j=u;u=u+16|0;i=j;d=f[a+8>>2]|0;e=f[c>>2]|0;h=(e|0)/3|0;if((e|0)<=-3)Fa(16500,16525,63,16549);g=f[d+84>>2]|0;if((h|0)>=(((f[d+88>>2]|0)-g|0)/12|0|0))Fa(16554,16525,64,16549);h=f[g+(h*12|0)+(((e|0)%3|0)<<2)>>2]|0;d=f[a+12>>2]|0;f[i>>2]=h;d=f[d+4>>2]|0;g=d+4|0;e=f[g>>2]|0;if((e|0)==(f[d+8>>2]|0))Bj(d,i);else{f[e>>2]=h;f[g>>2]=e+4}h=a+4|0;e=f[h>>2]|0;g=e+4|0;d=f[g>>2]|0;if((d|0)==(f[e+8>>2]|0)){Bj(e,c);i=f[h>>2]|0;c=i+24|0;a=f[c>>2]|0;b=f[b>>2]|0;i=i+12|0;i=f[i>>2]|0;b=i+(b<<2)|0;f[b>>2]=a;b=f[c>>2]|0;b=b+1|0;f[c>>2]=b;u=j;return}else{f[d>>2]=f[c>>2];f[g>>2]=d+4;i=e;c=i+24|0;a=f[c>>2]|0;b=f[b>>2]|0;i=i+12|0;i=f[i>>2]|0;b=i+(b<<2)|0;f[b>>2]=a;b=f[c>>2]|0;b=b+1|0;f[c>>2]=b;u=j;return}}function zh(a,c){a=a|0;c=c|0;var d=0,e=0,g=0,h=0,i=0;g=a+24|0;e=f[a+32>>2]|0;if(e>>>0<=262143)Fa(7085,7115,357,7138);if(e>>>0>=67108864)Fa(7148,7115,358,7138);d=e+-262144|0;do if(d>>>0>=64){if(d>>>0<16384){h=a+28|0;g=(f[g>>2]|0)+(f[h>>2]|0)|0;d=e+-245760|0;b[g>>0]=d;i=2;g=g+1|0;e=h;d=d>>>8;break}h=a+28|0;g=(f[g>>2]|0)+(f[h>>2]|0)|0;if(d>>>0<4194304){d=e+8126464|0;b[g>>0]=d;b[g+1>>0]=d>>>8;i=3;g=g+2|0;e=h;d=d>>>16;break}else{d=e+-1074003968|0;b[g>>0]=d;b[g+1>>0]=d>>>8;b[g+2>>0]=d>>>16;i=4;g=g+3|0;e=h;d=d>>>24;break}}else{e=a+28|0;i=1;g=(f[g>>2]|0)+(f[e>>2]|0)|0}while(0);b[g>>0]=d;g=(f[e>>2]|0)+i|0;h=((g|0)<0)<<31>>31;a=a+40|0;i=(f[c>>2]|0)+(f[a>>2]|0)|0;e=i;b[e>>0]=g;b[e+1>>0]=g>>8;b[e+2>>0]=g>>16;b[e+3>>0]=g>>24;i=i+4|0;b[i>>0]=h;b[i+1>>0]=h>>8;b[i+2>>0]=h>>16;b[i+3>>0]=h>>24;i=f[a>>2]|0;a=f[a+4>>2]|0;h=Do(g|0,h|0,8,0)|0;a=Do(h|0,I|0,i|0,a|0)|0;em(c,a,I);return}function Ah(a,c){a=a|0;c=c|0;var d=0,e=0,g=0,h=0,i=0;g=a+24|0;e=f[a+32>>2]|0;if(e>>>0<=131071)Fa(7085,7115,357,7138);if(e>>>0>=33554432)Fa(7148,7115,358,7138);d=e+-131072|0;do if(d>>>0>=64){if(d>>>0<16384){h=a+28|0;g=(f[g>>2]|0)+(f[h>>2]|0)|0;d=e+-114688|0;b[g>>0]=d;i=2;g=g+1|0;e=h;d=d>>>8;break}h=a+28|0;g=(f[g>>2]|0)+(f[h>>2]|0)|0;if(d>>>0<4194304){d=e+8257536|0;b[g>>0]=d;b[g+1>>0]=d>>>8;i=3;g=g+2|0;e=h;d=d>>>16;break}else{d=e+-1073872896|0;b[g>>0]=d;b[g+1>>0]=d>>>8;b[g+2>>0]=d>>>16;i=4;g=g+3|0;e=h;d=d>>>24;break}}else{e=a+28|0;i=1;g=(f[g>>2]|0)+(f[e>>2]|0)|0}while(0);b[g>>0]=d;g=(f[e>>2]|0)+i|0;h=((g|0)<0)<<31>>31;a=a+40|0;i=(f[c>>2]|0)+(f[a>>2]|0)|0;e=i;b[e>>0]=g;b[e+1>>0]=g>>8;b[e+2>>0]=g>>16;b[e+3>>0]=g>>24;i=i+4|0;b[i>>0]=h;b[i+1>>0]=h>>8;b[i+2>>0]=h>>16;b[i+3>>0]=h>>24;i=f[a>>2]|0;a=f[a+4>>2]|0;h=Do(g|0,h|0,8,0)|0;a=Do(h|0,I|0,i|0,a|0)|0;em(c,a,I);return}function Bh(a,b,c,d,e,g){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;g=g|0;var h=0,i=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0;p=u;u=u+16|0;o=p+4|0;n=p;f[a+56>>2]=e;f[a+48>>2]=g;l=Iq(e>>>0>1073741823?-1:e<<2)|0;m=a+52|0;d=f[m>>2]|0;f[m>>2]=l;if(d|0)Jq(d);k=a+40|0;h=f[k>>2]|0;g=f[h+4>>2]|0;d=f[h>>2]|0;j=g-d|0;if((j|0)<=0){u=p;return 1}l=a+8|0;i=g;g=(j>>>2)+-1|0;while(1){if(i-d>>2>>>0<=g>>>0){yp(h);d=f[h>>2]|0}f[n>>2]=f[d+(g<<2)>>2];f[o>>2]=f[n>>2];tc(a,o,b,g);j=X(g,e)|0;aj(l,b+(j<<2)|0,f[m>>2]|0,c+(j<<2)|0);g=g+-1|0;if((g|0)<=-1)break;h=f[k>>2]|0;d=f[h>>2]|0;i=f[h+4>>2]|0}u=p;return 1}function Ch(a,b){a=a|0;b=b|0;var c=0,d=0,e=0,g=0,h=0,i=0,j=0,k=0,l=0,m=0,n=0;n=a+8|0;c=f[n>>2]|0;l=a+12|0;m=f[l>>2]|0;e=m;h=c;do if((c|0)==(m|0)){m=a+4|0;k=f[m>>2]|0;d=f[a>>2]|0;g=d;if(k>>>0>d>>>0){c=k;g=((c-g>>2)+1|0)/-2|0;e=k+(g<<2)|0;c=h-c|0;d=c>>2;if(!d)c=k;else{Om(e|0,k|0,c|0)|0;c=f[m>>2]|0}a=e+(d<<2)|0;f[n>>2]=a;f[m>>2]=c+(g<<2);c=a;break}e=e-g>>1;e=(e|0)==0?1:e;if(e>>>0>1073741823){b=Ha(4)|0;qq(b);sa(b|0,1040,102)}h=Fn(e<<2)|0;i=h;g=h+(e>>>2<<2)|0;j=g;h=h+(e<<2)|0;if((k|0)==(c|0))c=j;else{e=g;d=k;g=j;do{f[e>>2]=f[d>>2];e=g+4|0;g=e;d=d+4|0}while((d|0)!=(c|0));d=f[a>>2]|0;c=g}f[a>>2]=i;f[m>>2]=j;f[n>>2]=c;f[l>>2]=h;if(d){Lq(d);c=f[n>>2]|0}}while(0);f[c>>2]=f[b>>2];f[n>>2]=(f[n>>2]|0)+4;return}function Dh(a,c){a=a|0;c=c|0;var d=0,e=0,g=0,h=0,i=0;g=a+24|0;e=f[a+32>>2]|0;if(e>>>0<=32767)Fa(7085,7115,357,7138);if(e>>>0>=8388608)Fa(7148,7115,358,7138);d=e+-32768|0;do if(d>>>0>=64){if(d>>>0<16384){h=a+28|0;g=(f[g>>2]|0)+(f[h>>2]|0)|0;d=e+-16384|0;b[g>>0]=d;i=2;g=g+1|0;e=h;d=d>>>8;break}h=a+28|0;g=(f[g>>2]|0)+(f[h>>2]|0)|0;if(d>>>0<4194304){d=e+8355840|0;b[g>>0]=d;b[g+1>>0]=d>>>8;i=3;g=g+2|0;e=h;d=d>>>16;break}else{i=e+-1073774592|0;b[g>>0]=i;b[g+1>>0]=i>>>8;b[g+2>>0]=i>>>16;i=4;g=g+3|0;e=h;d=192;break}}else{e=a+28|0;i=1;g=(f[g>>2]|0)+(f[e>>2]|0)|0}while(0);b[g>>0]=d;g=(f[e>>2]|0)+i|0;h=((g|0)<0)<<31>>31;a=a+40|0;i=(f[c>>2]|0)+(f[a>>2]|0)|0;e=i;b[e>>0]=g;b[e+1>>0]=g>>8;b[e+2>>0]=g>>16;b[e+3>>0]=g>>24;i=i+4|0;b[i>>0]=h;b[i+1>>0]=h>>8;b[i+2>>0]=h>>16;b[i+3>>0]=h>>24;i=f[a>>2]|0;a=f[a+4>>2]|0;h=Do(g|0,h|0,8,0)|0;a=Do(h|0,I|0,i|0,a|0)|0;em(c,a,I);return}function Eh(a,b,c){a=a|0;b=b|0;c=c|0;var d=0,e=0,g=0,h=0,i=0,j=0,k=0,l=0,m=0,n=0,o=0;n=u;u=u+32|0;i=n+24|0;j=n+16|0;k=n+8|0;m=n;l=a+4|0;o=f[l>>2]|0;e=f[b>>2]|0;b=f[b+4>>2]|0;h=f[c>>2]|0;d=f[c+4>>2]|0;g=h-e<<3;f[l>>2]=o-b+d+g;l=(f[a>>2]|0)+(o>>>5<<2)|0;a=o&31;c=l;if((b|0)!=(a|0)){f[i>>2]=e;f[i+4>>2]=b;f[j>>2]=h;f[j+4>>2]=d;f[k>>2]=c;f[k+4>>2]=a;kf(m,i,j,k);u=n;return}d=d-b+g|0;a=e;if((d|0)>0){if(!b){h=a;c=d;a=l;b=0}else{h=32-b|0;c=(d|0)<(h|0)?d:h;h=-1>>>(h-c|0)&-1<>2]=f[l>>2]&~h|f[a>>2]&h;b=c+b|0;h=a+4|0;e=h;c=d-c|0;a=l+(b>>>5<<2)|0;b=b&31}g=c>>>5;Om(a|0,e|0,g<<2|0)|0;d=c-(g<<5)|0;a=a+(g<<2)|0;c=a;if((d|0)>0){b=-1>>>(32-d|0);f[a>>2]=f[a>>2]&~b|f[h+(g<<2)>>2]&b;b=d}}f[m>>2]=c;f[m+4>>2]=b;u=n;return}function Fh(a,b){a=a|0;b=b|0;var c=0,d=0,e=0,g=0,h=0,i=0,j=0,k=0,l=0;l=a+4|0;d=f[l>>2]|0;c=f[a>>2]|0;e=(d-c>>2)+1|0;if(e>>>0>1073741823){zp(a);c=f[a>>2]|0;d=f[l>>2]|0}k=a+8|0;j=(f[k>>2]|0)-c|0;g=j>>1;g=j>>2>>>0<536870911?(g>>>0>>0?e:g):1073741823;c=d-c>>2;do if(g)if(g>>>0>1073741823){a=Ha(4)|0;qq(a);sa(a|0,1040,102)}else{e=Fn(g<<2)|0;break}else e=0;while(0);h=e+(c<<2)|0;d=h;j=e+(g<<2)|0;i=f[b>>2]|0;f[b>>2]=0;f[h>>2]=i;i=h+4|0;b=f[a>>2]|0;c=f[l>>2]|0;if((c|0)==(b|0)){g=b;c=b}else{e=h;do{c=c+-4|0;h=f[c>>2]|0;f[c>>2]=0;f[e+-4>>2]=h;e=d+-4|0;d=e}while((c|0)!=(b|0));g=f[a>>2]|0;c=f[l>>2]|0}f[a>>2]=d;f[l>>2]=i;f[k>>2]=j;e=g;if((c|0)!=(e|0))do{c=c+-4|0;d=f[c>>2]|0;f[c>>2]=0;if(d|0){Hj(d);Lq(d)}}while((c|0)!=(e|0));if(!g)return;Lq(g);return}function Gh(a,b,c){a=a|0;b=b|0;c=c|0;var d=0,e=0,g=0,h=0,i=0,j=0;j=u;u=u+16|0;i=j;g=f[c>>2]|0;f[c>>2]=0;f[i>>2]=g;bh(a,b,i);g=f[i>>2]|0;f[i>>2]=0;if(g|0){i=g+88|0;c=f[i>>2]|0;f[i>>2]=0;if(c|0){d=f[c+8>>2]|0;if(d|0){e=c+12|0;if((f[e>>2]|0)!=(d|0))f[e>>2]=d;Lq(d)}Lq(c)}c=f[g+68>>2]|0;if(c|0){e=g+72|0;d=f[e>>2]|0;if((d|0)!=(c|0))f[e>>2]=d+(~((d+-4-c|0)>>>2)<<2);Lq(c)}i=g+64|0;c=f[i>>2]|0;f[i>>2]=0;if(c|0){d=f[c>>2]|0;if(d|0){e=c+4|0;if((f[e>>2]|0)!=(d|0))f[e>>2]=d;Lq(d)}Lq(c)}Lq(g)}i=a+72|0;h=a+76|0;c=f[h>>2]|0;g=f[i>>2]|0;a=c-g>>2;if((a|0)>(b|0)){u=j;return}e=b+1|0;d=c;if(e>>>0>a>>>0){ci(i,e-a|0);u=j;return}if(e>>>0>=a>>>0){u=j;return}c=g+(e<<2)|0;if((d|0)==(c|0)){u=j;return}f[h>>2]=d+(~((d+-4-c|0)>>>2)<<2);u=j;return}function Hh(a,c,d){a=a|0;c=c|0;d=d|0;var e=0,g=0,h=0,i=0,j=0,k=0,l=0,m=0,n=0;a=a+4|0;e=f[a>>2]|0;if(!e){f[c>>2]=a;n=a;return n|0}l=b[d+11>>0]|0;k=l<<24>>24<0;l=k?f[d+4>>2]|0:l&255;k=k?f[d>>2]|0:d;while(1){g=e+16|0;d=b[g+11>>0]|0;i=d<<24>>24<0;d=i?f[e+20>>2]|0:d&255;h=d>>>0>>0;a=h?d:l;if((a|0)!=0?(n=Wl(k,i?f[g>>2]|0:g,a)|0,(n|0)!=0):0)if((n|0)<0)j=7;else j=9;else if(l>>>0>>0)j=7;else j=9;if((j|0)==7){a=f[e>>2]|0;if(!a){j=8;break}}else if((j|0)==9){j=0;a=l>>>0>>0?l:d;if((a|0)!=0?(m=Wl(i?f[g>>2]|0:g,k,a)|0,(m|0)!=0):0){if((m|0)>=0){j=16;break}}else j=11;if((j|0)==11?(0,!h):0){j=16;break}d=e+4|0;a=f[d>>2]|0;if(!a){j=15;break}}e=a}if((j|0)==8){f[c>>2]=e;n=e;return n|0}else if((j|0)==15){f[c>>2]=e;n=d;return n|0}else if((j|0)==16){f[c>>2]=e;n=c;return n|0}return 0}function Ih(a,b,c,d,e,g){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;g=g|0;var h=0,i=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0;p=u;u=u+16|0;o=p+4|0;n=p;f[a+56>>2]=e;f[a+48>>2]=g;l=Iq(e>>>0>1073741823?-1:e<<2)|0;m=a+52|0;d=f[m>>2]|0;f[m>>2]=l;if(d|0)Jq(d);k=a+40|0;h=f[k>>2]|0;g=f[h+4>>2]|0;d=f[h>>2]|0;j=g-d|0;if((j|0)<=0){u=p;return 1}l=a+8|0;i=g;g=(j>>>2)+-1|0;while(1){if(i-d>>2>>>0<=g>>>0){yp(h);d=f[h>>2]|0}f[n>>2]=f[d+(g<<2)>>2];f[o>>2]=f[n>>2];sc(a,o,b,g);j=X(g,e)|0;aj(l,b+(j<<2)|0,f[m>>2]|0,c+(j<<2)|0);g=g+-1|0;if((g|0)<=-1)break;h=f[k>>2]|0;d=f[h>>2]|0;i=f[h+4>>2]|0}u=p;return 1}function Jh(a,b,c,d){a=a|0;b=b|0;c=c|0;d=d|0;var e=0,g=0,h=0;e=u;u=u+80|0;g=e+36|0;h=e;no(g,c);lf(h,b,c);wi(g,h);hk(h+24|0,f[h+28>>2]|0);nk(h+12|0,f[h+16>>2]|0);hk(h,f[h+4>>2]|0);Zj(a,g,d);hk(g+24|0,f[g+28>>2]|0);nk(g+12|0,f[g+16>>2]|0);hk(g,f[g+4>>2]|0);u=e;return}function Kh(a,b,c,d,e){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;var g=0,h=0;g=f[d+4>>2]|0;if((c|0)<=-1)Fa(17509,17693,63,17731);h=f[g+8>>2]|0;if(((f[g+12>>2]|0)-h>>2|0)<=(c|0))Fa(17639,17693,64,17731);g=f[h+(c<<2)>>2]|0;if((b|0)==-1)b=kj(c,d)|0;if((b|0)==-2)b=0;else{do if((Ra[f[(f[d>>2]|0)+8>>2]&127](d)|0)==1){Zf(a,d,b,c,e,512);if(!(f[a>>2]|0)){f[a>>2]=0;break}else return}while(0);b=Fn(44)|0;f[b>>2]=3604;f[b+4>>2]=g;d=b+8|0;f[d>>2]=f[e>>2];f[d+4>>2]=f[e+4>>2];f[d+8>>2]=f[e+8>>2];f[d+12>>2]=f[e+12>>2];f[d+16>>2]=f[e+16>>2];f[d+20>>2]=f[e+20>>2];rk(b+32|0,e+24|0);f[b>>2]=3660}f[a>>2]=b;return}function Lh(a,c){a=a|0;c=c|0;var d=0,e=0,g=0,h=0,i=0,j=0,k=0,l=0,m=0,n=0;l=a+4|0;d=f[l>>2]|0;do if(d|0){m=b[c+11>>0]|0;k=m<<24>>24<0;m=k?f[c+4>>2]|0:m&255;k=k?f[c>>2]|0:c;a=l;a:while(1){c=d;while(1){e=c+16|0;g=b[e+11>>0]|0;h=g<<24>>24<0;g=h?f[c+20>>2]|0:g&255;d=m>>>0>>0?m:g;if((d|0)!=0?(i=Wl(h?f[e>>2]|0:e,k,d)|0,(i|0)!=0):0){if((i|0)>=0)break}else j=6;if((j|0)==6?(j=0,g>>>0>=m>>>0):0)break;c=f[c+4>>2]|0;if(!c)break a}d=f[c>>2]|0;if(!d){a=c;break}else a=c}if((a|0)!=(l|0)){d=a+16|0;e=b[d+11>>0]|0;g=e<<24>>24<0;e=g?f[a+20>>2]|0:e&255;c=e>>>0>>0?e:m;if(c|0?(n=Wl(k,g?f[d>>2]|0:d,c)|0,n|0):0){if((n|0)<0)break;return a|0}if(m>>>0>=e>>>0){n=a;return n|0}}}while(0);n=l;return n|0}function Mh(a,c,d){a=a|0;c=c|0;d=d|0;var e=0,g=0,h=0;if((d|0)>=8192)return Aa(a|0,c|0,d|0)|0;h=a|0;g=a+d|0;if((a&3)==(c&3)){while(a&3){if(!d)return h|0;b[a>>0]=b[c>>0]|0;a=a+1|0;c=c+1|0;d=d-1|0}d=g&-4|0;e=d-64|0;while((a|0)<=(e|0)){f[a>>2]=f[c>>2];f[a+4>>2]=f[c+4>>2];f[a+8>>2]=f[c+8>>2];f[a+12>>2]=f[c+12>>2];f[a+16>>2]=f[c+16>>2];f[a+20>>2]=f[c+20>>2];f[a+24>>2]=f[c+24>>2];f[a+28>>2]=f[c+28>>2];f[a+32>>2]=f[c+32>>2];f[a+36>>2]=f[c+36>>2];f[a+40>>2]=f[c+40>>2];f[a+44>>2]=f[c+44>>2];f[a+48>>2]=f[c+48>>2];f[a+52>>2]=f[c+52>>2];f[a+56>>2]=f[c+56>>2];f[a+60>>2]=f[c+60>>2];a=a+64|0;c=c+64|0}while((a|0)<(d|0)){f[a>>2]=f[c>>2];a=a+4|0;c=c+4|0}}else{d=g-4|0;while((a|0)<(d|0)){b[a>>0]=b[c>>0]|0;b[a+1>>0]=b[c+1>>0]|0;b[a+2>>0]=b[c+2>>0]|0;b[a+3>>0]=b[c+3>>0]|0;a=a+4|0;c=c+4|0}}while((a|0)<(g|0)){b[a>>0]=b[c>>0]|0;a=a+1|0;c=c+1|0}return h|0}function Nh(a){a=a|0;var b=0,c=0,d=0,e=0,g=0,h=0,i=0;h=u;u=u+16|0;d=h+4|0;e=h;g=a+8|0;c=a+84|0;a=f[c>>2]|0;if(!a){c=f[(f[g>>2]|0)+64>>2]|0;c=(f[c+4>>2]|0)-(f[c>>2]|0)>>2;a=(c>>>0)/3|0;if(c>>>0<=2){u=h;return 1}b=0;do{f[e>>2]=b*3;f[d>>2]=f[e>>2];mc(g,d);b=b+1|0}while((b|0)<(a|0));u=h;return 1}else{b=f[a>>2]|0;if((f[a+4>>2]|0)==(b|0)){u=h;return 1}a=0;do{f[e>>2]=f[b+(a<<2)>>2];f[d>>2]=f[e>>2];mc(g,d);a=a+1|0;i=f[c>>2]|0;b=f[i>>2]|0}while(a>>>0<(f[i+4>>2]|0)-b>>2>>>0);u=h;return 1}return 0}function Oh(a,b,c){a=a|0;b=b|0;c=c|0;var d=0,e=0,g=0,h=0,i=0,j=0,k=0,l=0,m=0,n=0,o=0;m=u;u=u+48|0;i=m+16|0;e=m;d=m+32|0;j=a+28|0;g=f[j>>2]|0;f[d>>2]=g;k=a+20|0;g=(f[k>>2]|0)-g|0;f[d+4>>2]=g;f[d+8>>2]=b;f[d+12>>2]=c;g=g+c|0;h=a+60|0;f[e>>2]=f[h>>2];f[e+4>>2]=d;f[e+8>>2]=2;b=Io(ya(146,e|0)|0)|0;a:do if((g|0)!=(b|0)){e=2;while(1){if((b|0)<0)break;g=g-b|0;o=f[d+4>>2]|0;n=b>>>0>o>>>0;d=n?d+8|0:d;e=(n<<31>>31)+e|0;o=b-(n?o:0)|0;f[d>>2]=(f[d>>2]|0)+o;n=d+4|0;f[n>>2]=(f[n>>2]|0)-o;f[i>>2]=f[h>>2];f[i+4>>2]=d;f[i+8>>2]=e;b=Io(ya(146,i|0)|0)|0;if((g|0)==(b|0)){l=3;break a}}f[a+16>>2]=0;f[j>>2]=0;f[k>>2]=0;f[a>>2]=f[a>>2]|32;if((e|0)==2)c=0;else c=c-(f[d+4>>2]|0)|0}else l=3;while(0);if((l|0)==3){o=f[a+44>>2]|0;f[a+16>>2]=o+(f[a+48>>2]|0);f[j>>2]=o;f[k>>2]=o}u=m;return c|0}function Ph(a,c,d){a=a|0;c=c|0;d=d|0;var e=0,g=0,h=0,i=0,j=0,k=0,l=0;l=u;u=u+16|0;k=l+4|0;j=l;g=Fn(32)|0;f[a>>2]=g;f[a+4>>2]=c+4;h=a+8|0;b[h>>0]=0;f[g+16>>2]=f[d>>2];i=g+20|0;f[g+24>>2]=0;f[g+28>>2]=0;a=g+24|0;f[i>>2]=a;c=f[d+4>>2]|0;g=d+8|0;if((c|0)==(g|0)){b[h>>0]=1;u=l;return}e=a;d=c;while(1){a=d+16|0;f[j>>2]=e;f[k>>2]=f[j>>2];bi(i,k,a,a)|0;a=f[c+4>>2]|0;if(!a)while(1){a=f[c+8>>2]|0;if((f[a>>2]|0)==(c|0))break;else c=a}else while(1){c=f[a>>2]|0;if(!c)break;else a=c}if((a|0)==(g|0))break;else{d=a;c=a}}b[h>>0]=1;u=l;return}function Qh(a,c,d){a=a|0;c=c|0;d=d|0;var e=0,g=0,h=0,i=0,j=0,k=0;k=u;u=u+32|0;j=k+16|0;e=k+12|0;g=k+8|0;h=k+4|0;i=k;d=f[(f[c+4>>2]|0)+(d<<2)>>2]|0;f[a>>2]=0;f[a+4>>2]=0;f[a+8>>2]=0;f[a+12>>2]=0;f[a+16>>2]=0;f[a+20>>2]=0;c=f[c>>2]|0;if(!(b[c+84>>0]|0))d=f[(f[c+68>>2]|0)+(d<<2)>>2]|0;switch(b[c+24>>0]|0){case 1:{f[e>>2]=d;f[j>>2]=f[e>>2];cb(c,j,a)|0;u=k;return}case 2:{f[g>>2]=d;f[j>>2]=f[g>>2];eg(c,j,a)|0;u=k;return}case 3:{f[h>>2]=d;f[j>>2]=f[h>>2];dg(c,j,a)|0;u=k;return}case 4:{f[i>>2]=d;f[j>>2]=f[i>>2];cg(c,j,a)|0;u=k;return}default:{u=k;return}}}function Rh(a,c,d){a=a|0;c=c|0;d=d|0;var e=0,g=0,h=0,i=0,j=0,k=0;k=u;u=u+32|0;j=k+16|0;e=k+12|0;g=k+8|0;h=k+4|0;i=k;d=f[(f[c+48>>2]|0)+(d<<2)>>2]|0;f[a>>2]=0;f[a+4>>2]=0;f[a+8>>2]=0;c=f[c+44>>2]|0;if(!(b[c+84>>0]|0))d=f[(f[c+68>>2]|0)+(d<<2)>>2]|0;switch(b[c+24>>0]|0){case 1:{f[e>>2]=d;f[j>>2]=f[e>>2];Nd(c,j,a)|0;u=k;return}case 2:{f[g>>2]=d;f[j>>2]=f[g>>2];Mc(c,j,a)|0;u=k;return}case 3:{f[h>>2]=d;f[j>>2]=f[h>>2];xd(c,j,a)|0;u=k;return}case 4:{f[i>>2]=d;f[j>>2]=f[i>>2];ud(c,j,a)|0;u=k;return}default:{u=k;return}}}function Sh(a){a=a|0;var b=0,c=0,d=0,e=0,g=0,h=0,i=0;h=u;u=u+16|0;d=h+4|0;e=h;g=a+8|0;c=a+84|0;a=f[c>>2]|0;if(!a){c=f[g>>2]|0;c=(f[c+4>>2]|0)-(f[c>>2]|0)>>2;a=(c>>>0)/3|0;if(c>>>0<=2){u=h;return 1}b=0;do{f[e>>2]=b*3;f[d>>2]=f[e>>2];oc(g,d);b=b+1|0}while((b|0)<(a|0));u=h;return 1}else{b=f[a>>2]|0;if((f[a+4>>2]|0)==(b|0)){u=h;return 1}a=0;do{f[e>>2]=f[b+(a<<2)>>2];f[d>>2]=f[e>>2];oc(g,d);a=a+1|0;i=f[c>>2]|0;b=f[i>>2]|0}while(a>>>0<(f[i+4>>2]|0)-b>>2>>>0);u=h;return 1}return 0}function Th(a,c,d){a=a|0;c=c|0;d=d|0;var e=0,g=0,h=0,i=0,j=0,k=0,l=0,m=0,n=0;l=u;u=u+16|0;k=l;i=a+4|0;f[i>>2]=0;if(!c){u=l;return}h=a+8|0;e=f[h>>2]|0;if(e<<5>>>0>>0){f[k>>2]=0;j=k+4|0;f[j>>2]=0;g=k+8|0;f[g>>2]=0;if((c|0)<0){zp(a);e=f[h>>2]|0}m=e<<6;n=c+31&-32;fj(k,e<<5>>>0<1073741823?(m>>>0>>0?n:m):2147483647);e=f[a>>2]|0;f[a>>2]=f[k>>2];f[k>>2]=e;k=f[i>>2]|0;f[i>>2]=c;f[j>>2]=k;k=f[h>>2]|0;f[h>>2]=f[g>>2];f[g>>2]=k;if(e|0)Lq(e)}else f[i>>2]=c;a=f[a>>2]|0;g=a;h=c>>>5;e=h<<2;if(!(b[d>>0]|0)){Xj(a|0,0,e|0)|0;e=c-(h<<5)|0;a=g+(h<<2)|0;if(!e){u=l;return}f[a>>2]=f[a>>2]&~(-1>>>(32-e|0));u=l;return}else{Xj(a|0,-1,e|0)|0;e=c-(h<<5)|0;a=g+(h<<2)|0;if(!e){u=l;return}f[a>>2]=f[a>>2]|-1>>>(32-e|0);u=l;return}}function Uh(a){a=a|0;var c=0,d=0,e=0,g=0,h=0,i=0,j=0;i=a+12|0;h=f[a>>2]|0;j=a+8|0;c=f[j>>2]|0;d=(c|0)<0;if(!(b[i>>0]|0)){do if(!d){c=(((c>>>0)%3|0|0)==0?2:-1)+c|0;if((c|0)>=0){c=f[(f[h+12>>2]|0)+(c<<2)>>2]|0;if((c|0)>=0)if(!((c>>>0)%3|0)){c=c+2|0;break}else{c=c+-1|0;break}}}while(0);f[j>>2]=c;return}e=c+1|0;if(!d){c=((e|0)%3|0|0)==0?c+-2|0:e;if((c|0)>=0){c=f[(f[h+12>>2]|0)+(c<<2)>>2]|0;d=c+1|0;if((c|0)>=0){c=((d|0)%3|0|0)==0?c+-2|0:d;f[j>>2]=c;if((c|0)>=0){if((c|0)!=(f[a+4>>2]|0))return;f[j>>2]=-1073741824;return}}else g=5}else g=5}else g=5;if((g|0)==5)f[j>>2]=c;c=f[a+4>>2]|0;do if((c|0)>=0){c=(((c>>>0)%3|0|0)==0?2:-1)+c|0;if((c|0)>=0){c=f[(f[h+12>>2]|0)+(c<<2)>>2]|0;if((c|0)>=0)if(!((c>>>0)%3|0)){c=c+2|0;break}else{c=c+-1|0;break}}}while(0);f[j>>2]=c;b[i>>0]=0;return}function Vh(a,c,d){a=a|0;c=c|0;d=d|0;var e=0,g=0,h=0,i=0,j=0,k=0;k=u;u=u+32|0;j=k+16|0;e=k+12|0;g=k+8|0;h=k+4|0;i=k;d=f[(f[c+64>>2]|0)+(d<<2)>>2]|0;f[a>>2]=0;f[a+4>>2]=0;f[a+8>>2]=0;c=f[c+60>>2]|0;if(!(b[c+84>>0]|0))d=f[(f[c+68>>2]|0)+(d<<2)>>2]|0;switch(b[c+24>>0]|0){case 1:{f[e>>2]=d;f[j>>2]=f[e>>2];Nd(c,j,a)|0;u=k;return}case 2:{f[g>>2]=d;f[j>>2]=f[g>>2];Mc(c,j,a)|0;u=k;return}case 3:{f[h>>2]=d;f[j>>2]=f[h>>2];xd(c,j,a)|0;u=k;return}case 4:{f[i>>2]=d;f[j>>2]=f[i>>2];ud(c,j,a)|0;u=k;return}default:{u=k;return}}}function Wh(a,b,c,d,e){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;var g=0,h=0;g=f[d+4>>2]|0;if((c|0)<=-1)Fa(17509,17693,63,17731);h=f[g+8>>2]|0;if(((f[g+12>>2]|0)-h>>2|0)<=(c|0))Fa(17639,17693,64,17731);g=f[h+(c<<2)>>2]|0;if((b|0)==-1)b=kj(c,d)|0;if((b|0)==-2)b=0;else{do if((Ra[f[(f[d>>2]|0)+8>>2]&127](d)|0)==1){Sf(a,d,b,c,e,512);if(!(f[a>>2]|0)){f[a>>2]=0;break}else return}while(0);b=Fn(28)|0;f[b+4>>2]=g;d=b+12|0;e=e+4|0;f[d>>2]=f[e>>2];f[d+4>>2]=f[e+4>>2];f[d+8>>2]=f[e+8>>2];f[d+12>>2]=f[e+12>>2];f[b+8>>2]=4536;f[b>>2]=4556}f[a>>2]=b;return}function Xh(a){a=+a;var b=0,c=0,d=0,e=0,g=0.0,h=0.0,i=0.0,j=0.0,k=0.0;p[s>>3]=a;c=f[s>>2]|0;b=f[s+4>>2]|0;d=(b|0)<0;do if(d|b>>>0<1048576){if((c|0)==0&(b&2147483647|0)==0){a=-1.0/(a*a);break}if(d){a=(a-a)/0.0;break}else{p[s>>3]=a*18014398509481984.0;b=f[s+4>>2]|0;d=f[s>>2]|0;c=-1077;e=9;break}}else if(b>>>0<=2146435071)if((c|0)==0&0==0&(b|0)==1072693248)a=0.0;else{d=c;c=-1023;e=9}while(0);if((e|0)==9){e=b+614242|0;f[s>>2]=d;f[s+4>>2]=(e&1048575)+1072079006;k=+p[s>>3]+-1.0;i=k*k*.5;h=k/(k+2.0);j=h*h;a=j*j;p[s>>3]=k-i;d=f[s+4>>2]|0;f[s>>2]=0;f[s+4>>2]=d;g=+p[s>>3];a=k-g-i+h*(i+(a*(a*(a*.15313837699209373+.22222198432149784)+.3999999999940942)+j*(a*(a*(a*.14798198605116586+.1818357216161805)+.2857142874366239)+.6666666666666735)));j=g*1.4426950407214463;i=+(c+(e>>>20)|0);h=i+j;a=h+(j+(i-h)+(a*1.4426950407214463+(g+a)*1.6751713164886512e-10))}return +a}function Yh(a){a=a|0;var b=0,c=0,d=0,e=0,g=0;f[a>>2]=3212;b=f[a+56>>2]|0;if(b|0){d=a+60|0;c=f[d>>2]|0;if((c|0)!=(b|0))f[d>>2]=c+(~((c+-4-b|0)>>>2)<<2);Lq(b)}c=f[a+44>>2]|0;if(c|0){d=a+48|0;b=f[d>>2]|0;if((b|0)!=(c|0))f[d>>2]=b+(~((b+-4-c|0)>>>2)<<2);Lq(c)}b=f[a+32>>2]|0;if(b|0){d=a+36|0;c=f[d>>2]|0;if((c|0)!=(b|0))f[d>>2]=c+(~((c+-4-b|0)>>>2)<<2);Lq(b)}b=f[a+20>>2]|0;if(b|0){d=a+24|0;c=f[d>>2]|0;if((c|0)!=(b|0))f[d>>2]=c+(~((c+-4-b|0)>>>2)<<2);Lq(b)}_i(a+8|0);a=a+4|0;e=f[a>>2]|0;f[a>>2]=0;if(!e)return;d=e+40|0;b=f[d>>2]|0;if(b|0){a=e+44|0;c=f[a>>2]|0;if((c|0)!=(b|0)){do{g=c+-4|0;f[a>>2]=g;c=f[g>>2]|0;f[g>>2]=0;if(c|0){Hj(c);Lq(c)}c=f[a>>2]|0}while((c|0)!=(b|0));b=f[d>>2]|0}Lq(b)}Hj(e);Lq(e);return}function Zh(a,c,d,e,g){a=a|0;c=c|0;d=d|0;e=e|0;g=g|0;var h=0,i=0,j=0,k=0;do if(!(np(a,f[c+8>>2]|0,g)|0)){h=a+8|0;if(!(np(a,f[c>>2]|0,g)|0)){j=f[h>>2]|0;Na[f[(f[j>>2]|0)+24>>2]&3](j,c,d,e,g);break}a=c+32|0;if((f[c+16>>2]|0)!=(d|0)?(i=c+20|0,(f[i>>2]|0)!=(d|0)):0){f[a>>2]=e;e=c+44|0;if((f[e>>2]|0)==4)break;a=c+52|0;b[a>>0]=0;k=c+53|0;b[k>>0]=0;h=f[h>>2]|0;Ua[f[(f[h>>2]|0)+20>>2]&3](h,c,d,d,1,g);if(b[k>>0]|0)if(!(b[a>>0]|0)){a=3;j=11}else a=3;else{a=4;j=11}if((j|0)==11){f[i>>2]=d;k=c+40|0;f[k>>2]=(f[k>>2]|0)+1;if((f[c+36>>2]|0)==1?(f[c+24>>2]|0)==2:0)b[c+54>>0]=1}f[e>>2]=a;break}if((e|0)==1)f[a>>2]=1}else fn(0,c,d,e);while(0);return}function _h(a,b,c){a=a|0;b=b|0;c=c|0;var d=0,e=0,g=0,h=0,i=0,j=0,k=0,l=0;k=a+8|0;e=f[k>>2]|0;l=a+4|0;h=f[l>>2]|0;g=h;if(e-h>>2>>>0>=b>>>0){d=g;e=b;while(1){f[d>>2]=f[c>>2];e=e+-1|0;if(!e)break;else d=d+4|0}f[l>>2]=g+(b<<2);return}d=f[a>>2]|0;g=(h-d>>2)+b|0;if(g>>>0>1073741823){zp(a);d=f[a>>2]|0;e=f[k>>2]|0;j=f[l>>2]|0}else j=h;i=e-d|0;e=i>>1;g=i>>2>>>0<536870911?(e>>>0>>0?g:e):1073741823;e=j-d>>2;do if(g)if(g>>>0>1073741823){b=Ha(4)|0;qq(b);sa(b|0,1040,102)}else{h=Fn(g<<2)|0;break}else h=0;while(0);i=h+(e<<2)|0;h=h+(g<<2)|0;e=i;g=b;while(1){f[e>>2]=f[c>>2];g=g+-1|0;if(!g)break;else e=e+4|0}g=j-d|0;e=i+(0-(g>>2)<<2)|0;if((g|0)>0)Mh(e|0,d|0,g|0)|0;f[a>>2]=e;f[l>>2]=i+(b<<2);f[k>>2]=h;if(!d)return;Lq(d);return}function $h(a,b,c,d,e,g){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;g=g|0;var h=0,i=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0;p=u;u=u+16|0;n=p+4|0;m=p;o=a+44|0;f[a+48>>2]=g;k=a+40|0;h=f[k>>2]|0;g=f[h+4>>2]|0;d=f[h>>2]|0;i=g-d|0;if((i|0)<=0){u=p;return 1}l=a+8|0;j=a+52|0;a=g;g=(i>>>2)+-1|0;while(1){if(a-d>>2>>>0<=g>>>0){yp(h);d=f[h>>2]|0}f[m>>2]=f[d+(g<<2)>>2];f[n>>2]=f[m>>2];Jb(o,n,b,g);i=X(g,e)|0;aj(l,b+(i<<2)|0,j,c+(i<<2)|0);g=g+-1|0;if((g|0)<=-1)break;h=f[k>>2]|0;d=f[h>>2]|0;a=f[h+4>>2]|0}u=p;return 1}function ai(a,b){a=a|0;b=b|0;var c=0,d=0,e=0,g=0,h=0,i=0,j=0;i=a+8|0;e=f[i>>2]|0;j=a+4|0;c=f[j>>2]|0;if(e-c>>3>>>0>=b>>>0){do{a=c;f[a>>2]=0;f[a+4>>2]=0;c=(f[j>>2]|0)+8|0;f[j>>2]=c;b=b+-1|0}while((b|0)!=0);return}d=f[a>>2]|0;g=(c-d>>3)+b|0;if(g>>>0>536870911){zp(a);d=f[a>>2]|0;e=f[i>>2]|0;c=f[j>>2]|0}h=e-d|0;e=h>>2;e=h>>3>>>0<268435455?(e>>>0>>0?g:e):536870911;c=c-d>>3;do if(e)if(e>>>0>536870911){j=Ha(4)|0;qq(j);sa(j|0,1040,102)}else{d=Fn(e<<3)|0;break}else d=0;while(0);h=d+(c<<3)|0;g=d+(e<<3)|0;c=h;e=h;do{d=c;f[d>>2]=0;f[d+4>>2]=0;c=e+8|0;e=c;b=b+-1|0}while((b|0)!=0);c=f[a>>2]|0;d=(f[j>>2]|0)-c|0;b=h+(0-(d>>3)<<3)|0;if((d|0)>0)Mh(b|0,c|0,d|0)|0;f[a>>2]=b;f[j>>2]=e;f[i>>2]=g;if(!c)return;Lq(c);return}function bi(a,b,c,d){a=a|0;b=b|0;c=c|0;d=d|0;var e=0,g=0,h=0,i=0;h=u;u=u+16|0;e=h+8|0;g=h+4|0;i=h;f[i>>2]=f[b>>2];f[e>>2]=f[i>>2];b=Kd(a,e,g,c)|0;c=f[b>>2]|0;if(c|0){i=c;u=h;return i|0}e=Fn(40)|0;Rl(e+16|0,d);Rl(e+28|0,d+12|0);c=f[g>>2]|0;f[e>>2]=0;f[e+4>>2]=0;f[e+8>>2]=c;f[b>>2]=e;c=f[f[a>>2]>>2]|0;if(!c)c=e;else{f[a>>2]=c;c=f[b>>2]|0}xf(f[a+4>>2]|0,c);i=a+8|0;f[i>>2]=(f[i>>2]|0)+1;i=e;u=h;return i|0}function ci(a,b){a=a|0;b=b|0;var c=0,d=0,e=0,g=0,h=0,i=0,j=0,k=0;j=a+8|0;d=f[j>>2]|0;k=a+4|0;g=f[k>>2]|0;e=g;if(d-g>>2>>>0>=b>>>0){c=e;d=b;while(1){f[c>>2]=1;d=d+-1|0;if(!d)break;else c=c+4|0}f[k>>2]=e+(b<<2);return}c=f[a>>2]|0;e=(g-c>>2)+b|0;if(e>>>0>1073741823){zp(a);c=f[a>>2]|0;d=f[j>>2]|0;i=f[k>>2]|0}else i=g;h=d-c|0;d=h>>1;e=h>>2>>>0<536870911?(d>>>0>>0?e:d):1073741823;d=i-c>>2;do if(e)if(e>>>0>1073741823){b=Ha(4)|0;qq(b);sa(b|0,1040,102)}else{g=Fn(e<<2)|0;break}else g=0;while(0);h=g+(d<<2)|0;g=g+(e<<2)|0;d=h;e=b;while(1){f[d>>2]=1;e=e+-1|0;if(!e)break;else d=d+4|0}e=i-c|0;d=h+(0-(e>>2)<<2)|0;if((e|0)>0)Mh(d|0,c|0,e|0)|0;f[a>>2]=d;f[k>>2]=h+(b<<2);f[j>>2]=g;if(!c)return;Lq(c);return}function di(a){a=a|0;var b=0,c=0,d=0,e=0,g=0,h=0,i=0;d=a+4|0;i=f[d>>2]|0;i=(f[i+12>>2]|0)-(f[i+8>>2]|0)|0;b=i>>2;a:do if((i|0)>0){c=0;while(1){if(!(Va[f[(f[a>>2]|0)+36>>2]&127](a,c)|0)){b=0;break}c=c+1|0;b=f[d>>2]|0;b=(f[b+12>>2]|0)-(f[b+8>>2]|0)>>2;if((c|0)>=(b|0))break a}return b|0}while(0);i=a+20|0;e=a+24|0;c=f[e>>2]|0;d=f[i>>2]|0;g=c-d>>2;if(b>>>0<=g>>>0){if(b>>>0>>0?(h=d+(b<<2)|0,(c|0)!=(h|0)):0)f[e>>2]=c+(~((c+-4-h|0)>>>2)<<2)}else jj(i,b-g|0);c=f[a+12>>2]|0;b=f[a+8>>2]|0;a=b;if((c|0)==(b|0)){i=1;return i|0}h=c-b>>2;g=0;do{c=f[a+(g<<2)>>2]|0;b=f[c+8>>2]|0;c=f[c+4>>2]|0;d=c;if((b|0)!=(c|0)){e=f[i>>2]|0;c=b-c>>2;b=0;do{f[e+(f[d+(b<<2)>>2]<<2)>>2]=g;b=b+1|0}while(b>>>0>>0)}g=g+1|0}while(g>>>0>>0);b=1;return b|0}function ei(a,b,c,d,e,g){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;g=g|0;var h=0,i=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0;p=u;u=u+16|0;n=p+4|0;m=p;o=a+44|0;f[a+48>>2]=g;k=a+40|0;h=f[k>>2]|0;g=f[h+4>>2]|0;d=f[h>>2]|0;i=g-d|0;if((i|0)<=0){u=p;return 1}l=a+8|0;j=a+52|0;a=g;g=(i>>>2)+-1|0;while(1){if(a-d>>2>>>0<=g>>>0){yp(h);d=f[h>>2]|0}f[m>>2]=f[d+(g<<2)>>2];f[n>>2]=f[m>>2];Ib(o,n,b,g);i=X(g,e)|0;aj(l,b+(i<<2)|0,j,c+(i<<2)|0);g=g+-1|0;if((g|0)<=-1)break;h=f[k>>2]|0;d=f[h>>2]|0;a=f[h+4>>2]|0}u=p;return 1}function fi(a,b){a=a|0;b=b|0;var c=0,d=0,e=0,g=0,h=0,i=0,j=0,k=0,l=0,m=0,n=0,o=0;o=u;u=u+16|0;k=o+4|0;l=o;f[a>>2]=3292;n=a+4|0;f[n>>2]=0;f[n+4>>2]=0;f[n+8>>2]=0;f[n+12>>2]=0;f[n+16>>2]=0;f[n+20>>2]=0;f[n+24>>2]=0;f[n+28>>2]=0;f[k>>2]=b;n=a+4|0;m=a+8|0;Bj(n,k);c=f[k>>2]|0;h=a+20|0;d=f[h>>2]|0;i=a+16|0;b=f[i>>2]|0;g=d-b>>2;if((c|0)<(g|0)){k=b;l=c;j=f[m>>2]|0;m=f[n>>2]|0;m=j-m|0;m=m>>2;m=m+-1|0;n=k+(l<<2)|0;f[n>>2]=m;u=o;return}e=c+1|0;f[l>>2]=-1;a=d;if(e>>>0<=g>>>0){if(e>>>0>>0?(j=b+(e<<2)|0,(a|0)!=(j|0)):0)f[h>>2]=a+(~((a+-4-j|0)>>>2)<<2)}else{_h(i,e-g|0,l);c=f[k>>2]|0;b=f[i>>2]|0}k=b;l=c;j=f[m>>2]|0;m=f[n>>2]|0;m=j-m|0;m=m>>2;m=m+-1|0;n=k+(l<<2)|0;f[n>>2]=m;u=o;return}function gi(a,b){a=a|0;b=b|0;var c=0,d=0,e=0,g=0,h=0,i=0,j=0,k=0,l=0,m=0;m=a+4|0;c=f[m>>2]|0;d=f[a>>2]|0;g=((c-d|0)/12|0)+1|0;if(g>>>0>357913941){zp(a);c=f[m>>2]|0;d=f[a>>2]|0}k=d;e=c;l=a+8|0;j=((f[l>>2]|0)-d|0)/12|0;i=j<<1;g=j>>>0<178956970?(i>>>0>>0?g:i):357913941;i=(c-d|0)/12|0;do if(g)if(g>>>0>357913941){a=Ha(4)|0;qq(a);sa(a|0,1040,102)}else{h=Fn(g*12|0)|0;break}else h=0;while(0);c=h+(i*12|0)|0;j=h+(g*12|0)|0;f[c>>2]=f[b>>2];f[h+(i*12|0)+4>>2]=f[b+4>>2];f[h+(i*12|0)+8>>2]=f[b+8>>2];g=c+12|0;if((e|0)!=(k|0))do{b=e;e=e+-12|0;f[c+-12>>2]=f[e>>2];f[c+-8>>2]=f[b+-8>>2];f[c+-4>>2]=f[b+-4>>2];c=c+-12|0}while((e|0)!=(k|0));f[a>>2]=c;f[m>>2]=g;f[l>>2]=j;if(!d)return;Lq(d);return}function hi(a,b,c){a=a|0;b=b|0;c=c|0;var d=0,e=0,g=0;e=u;u=u+16|0;d=e;if(!(Ll(a,b,c)|0)){a=0;u=e;return a|0}if((Ra[f[(f[a>>2]|0)+32>>2]&127](a)|0)<<24>>24==1?((f[(f[a+8>>2]|0)+28>>2]|0)+-1|0)>>>0>=6:0){a=0;u=e;return a|0}b=Xi(c,f[b+48>>2]|0)|0;Sa[f[(f[a>>2]|0)+48>>2]&7](d,a,b);b=a+36|0;g=f[d>>2]|0;f[d>>2]=0;c=f[b>>2]|0;f[b>>2]=g;if(c){Oa[f[(f[c>>2]|0)+4>>2]&127](c);c=f[d>>2]|0;f[d>>2]=0;if(c|0)Oa[f[(f[c>>2]|0)+4>>2]&127](c)}else f[d>>2]=0;c=f[b>>2]|0;if(!c){g=1;u=e;return g|0}if(Va[f[(f[a>>2]|0)+36>>2]&127](a,c)|0){g=1;u=e;return g|0}c=f[b>>2]|0;f[b>>2]=0;if(!c){g=1;u=e;return g|0}Oa[f[(f[c>>2]|0)+4>>2]&127](c);g=1;u=e;return g|0}function ii(a,b){a=a|0;b=b|0;var c=0,d=0,e=0,g=0,h=0,i=0,j=0;j=u;u=u+16|0;i=j+4|0;h=j;f[a>>2]=0;f[a+8>>2]=b;vi(a+12|0);Hn(a+1036|0);wo(a+1068|0);wo(a+1088|0);wo(a+1108|0);f[i>>2]=0;Bk(a+1128|0,b,i);f[i>>2]=0;Bk(a+1140|0,b,i);f[i>>2]=0;Bk(a+1152|0,b,i);g=b<<5|1;f[h>>2]=0;Bk(i,b,h);yk(a+1164|0,g,i);c=f[i>>2]|0;if(c|0){e=i+4|0;d=f[e>>2]|0;if((d|0)!=(c|0))f[e>>2]=d+(~((d+-4-c|0)>>>2)<<2);Lq(c)}f[h>>2]=0;Bk(i,b,h);yk(a+1176|0,g,i);e=f[i>>2]|0;if(!e){u=j;return}d=i+4|0;c=f[d>>2]|0;if((c|0)!=(e|0))f[d>>2]=c+(~((c+-4-e|0)>>>2)<<2);Lq(e);u=j;return}function ji(a,b){a=a|0;b=b|0;var c=0,d=0,e=0,g=0,h=0,i=0,j=0;h=u;u=u+16|0;c=h;i=f[(f[a>>2]|0)+8>>2]|0;g=a+8|0;e=a+12|0;d=(f[e>>2]|0)-(f[g>>2]|0)>>2;j=f[b>>2]|0;f[b>>2]=0;f[c>>2]=j;Sa[i&7](a,d,c);d=f[c>>2]|0;f[c>>2]=0;if(!d){i=f[e>>2]|0;j=f[g>>2]|0;j=i-j|0;j=j>>2;j=j+-1|0;u=h;return j|0}j=d+88|0;b=f[j>>2]|0;f[j>>2]=0;if(b|0){a=f[b+8>>2]|0;if(a|0){c=b+12|0;if((f[c>>2]|0)!=(a|0))f[c>>2]=a;Lq(a)}Lq(b)}b=f[d+68>>2]|0;if(b|0){c=d+72|0;a=f[c>>2]|0;if((a|0)!=(b|0))f[c>>2]=a+(~((a+-4-b|0)>>>2)<<2);Lq(b)}j=d+64|0;b=f[j>>2]|0;f[j>>2]=0;if(b|0){a=f[b>>2]|0;if(a|0){c=b+4|0;if((f[c>>2]|0)!=(a|0))f[c>>2]=a;Lq(a)}Lq(b)}Lq(d);i=f[e>>2]|0;j=f[g>>2]|0;j=i-j|0;j=j>>2;j=j+-1|0;u=h;return j|0}function ki(a,c,d,e){a=a|0;c=c|0;d=d|0;e=e|0;var g=0,i=0,j=0;g=Fn(32)|0;f[a>>2]=g;f[a+4>>2]=c+8;c=a+8|0;b[c>>0]=0;i=g+8|0;f[i>>2]=f[e>>2];f[i+4>>2]=f[e+4>>2];f[i+8>>2]=f[e+8>>2];f[e>>2]=0;f[e+4>>2]=0;f[e+8>>2]=0;i=g+20|0;f[i>>2]=0;f[g+24>>2]=0;f[g+28>>2]=0;mj(i,8);g=e+16|0;j=g;j=h[j>>0]|h[j+1>>0]<<8|h[j+2>>0]<<16|h[j+3>>0]<<24;g=g+4|0;g=h[g>>0]|h[g+1>>0]<<8|h[g+2>>0]<<16|h[g+3>>0]<<24;e=f[i>>2]|0;i=e;b[i>>0]=j;b[i+1>>0]=j>>8;b[i+2>>0]=j>>16;b[i+3>>0]=j>>24;e=e+4|0;b[e>>0]=g;b[e+1>>0]=g>>8;b[e+2>>0]=g>>16;b[e+3>>0]=g>>24;b[c>>0]=1;c=f[a>>2]|0;f[c+4>>2]=d;f[c>>2]=0;return}function li(a,c,d){a=a|0;c=c|0;d=d|0;var e=0,g=0,h=0,i=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0;r=u;u=u+224|0;m=r+120|0;q=r+80|0;p=r;o=r+136|0;e=q;g=e+40|0;do{f[e>>2]=0;e=e+4|0}while((e|0)<(g|0));f[m>>2]=f[d>>2];if((Hb(0,c,m,p,q)|0)<0)d=-1;else{if((f[a+76>>2]|0)>-1)n=Rq(a)|0;else n=0;d=f[a>>2]|0;l=d&32;if((b[a+74>>0]|0)<1)f[a>>2]=d&-33;h=a+48|0;if(!(f[h>>2]|0)){g=a+44|0;d=f[g>>2]|0;f[g>>2]=o;i=a+28|0;f[i>>2]=o;k=a+20|0;f[k>>2]=o;f[h>>2]=80;j=a+16|0;f[j>>2]=o+80;e=Hb(a,c,m,p,q)|0;if(d){Ma[f[a+36>>2]&31](a,0,0)|0;e=(f[k>>2]|0)==0?-1:e;f[g>>2]=d;f[h>>2]=0;f[j>>2]=0;f[i>>2]=0;f[k>>2]=0}}else e=Hb(a,c,m,p,q)|0;d=f[a>>2]|0;f[a>>2]=d|l;if(n|0)Qq(a);d=(d&32|0)==0?e:-1}u=r;return d|0}function mi(a,c,e,g){a=a|0;c=c|0;e=e|0;g=g|0;var h=0,i=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0;p=u;u=u+64|0;o=p;m=f[a>>2]|0;n=a+(f[m+-8>>2]|0)|0;m=f[m+-4>>2]|0;f[o>>2]=e;f[o+4>>2]=a;f[o+8>>2]=c;f[o+12>>2]=g;g=o+16|0;a=o+20|0;h=o+24|0;j=o+28|0;i=o+32|0;c=o+40|0;k=g;l=k+36|0;do{f[k>>2]=0;k=k+4|0}while((k|0)<(l|0));d[g+36>>1]=0;b[g+38>>0]=0;a:do if(np(m,e,0)|0){f[o+48>>2]=1;Ua[f[(f[m>>2]|0)+20>>2]&3](m,o,n,n,1,0);g=(f[h>>2]|0)==1?n:0}else{Na[f[(f[m>>2]|0)+24>>2]&3](m,o,n,1,0);switch(f[o+36>>2]|0){case 0:{g=(f[c>>2]|0)==1&(f[j>>2]|0)==1&(f[i>>2]|0)==1?f[a>>2]|0:0;break a}case 1:break;default:{g=0;break a}}if((f[h>>2]|0)!=1?!((f[c>>2]|0)==0&(f[j>>2]|0)==1&(f[i>>2]|0)==1):0){g=0;break}g=f[g>>2]|0}while(0);u=p;return g|0}function ni(a,b){a=a|0;b=b|0;var c=0,d=0,e=0,g=0,h=0,i=0,j=0,k=0,l=0,m=0,n=0,o=0;o=u;u=u+16|0;n=o;m=b+4|0;c=f[m>>2]|0;d=f[b>>2]|0;k=((c-d|0)/12|0)*3|0;i=a+4|0;h=f[i>>2]|0;e=f[a>>2]|0;l=h-e>>2;g=d;if(k>>>0<=l>>>0){if(k>>>0>>0?(j=e+(k<<2)|0,(h|0)!=(j|0)):0)f[i>>2]=h+(~((h+-4-j|0)>>>2)<<2)}else{jj(a,k-l|0);g=f[b>>2]|0;d=g;c=f[m>>2]|0}if((c-d|0)>0){e=f[a>>2]|0;d=(c-g|0)/12|0;c=0;do{m=c*3|0;f[e+(m<<2)>>2]=f[g+(c*12|0)>>2];f[e+(m+1<<2)>>2]=f[g+(c*12|0)+4>>2];f[e+(m+2<<2)>>2]=f[g+(c*12|0)+8>>2];c=c+1|0}while((c|0)<(d|0))}f[n>>2]=-1;if(!(Qb(a,n)|0)){a=0;u=o;return a|0}Fb(a,f[n>>2]|0)|0;a=1;u=o;return a|0}function oi(a,b){a=a|0;b=b|0;var c=0,d=0,e=0,g=0;g=a+4|0;c=f[g>>2]|0;d=f[a>>2]|0;e=c-d>>2;if(e>>>0>>0){Dg(a,b-e|0);return}if(e>>>0<=b>>>0)return;a=d+(b<<2)|0;if((c|0)==(a|0))return;do{b=c+-4|0;f[g>>2]=b;e=f[b>>2]|0;f[b>>2]=0;if(e|0){b=e+88|0;c=f[b>>2]|0;f[b>>2]=0;if(c|0){d=f[c+8>>2]|0;if(d|0){b=c+12|0;if((f[b>>2]|0)!=(d|0))f[b>>2]=d;Lq(d)}Lq(c)}c=f[e+68>>2]|0;if(c|0){b=e+72|0;d=f[b>>2]|0;if((d|0)!=(c|0))f[b>>2]=d+(~((d+-4-c|0)>>>2)<<2);Lq(c)}b=e+64|0;c=f[b>>2]|0;f[b>>2]=0;if(c|0){d=f[c>>2]|0;if(d|0){b=c+4|0;if((f[b>>2]|0)!=(d|0))f[b>>2]=d;Lq(d)}Lq(c)}Lq(e)}c=f[g>>2]|0}while((c|0)!=(a|0));return}function pi(a,c){a=a|0;c=c|0;var d=0,e=0,g=0,i=0,j=0,k=0,l=0,m=0,n=0,o=0;d=f[c+88>>2]|0;if(!d){a=0;return a|0}if((f[d>>2]|0)!=1){a=0;return a|0}m=d+8|0;j=f[m>>2]|0;f[a+4>>2]=h[j>>0]|h[j+1>>0]<<8|h[j+2>>0]<<16|h[j+3>>0]<<24;o=a+8|0;k=c+24|0;c=b[k>>0]|0;i=c<<24>>24;g=a+12|0;e=f[g>>2]|0;d=f[o>>2]|0;l=e-d>>2;if(i>>>0<=l>>>0){if(i>>>0>>0?(n=d+(i<<2)|0,(e|0)!=(n|0)):0)f[g>>2]=e+(~((e+-4-n|0)>>>2)<<2)}else{jj(o,i-l|0);c=b[k>>0]|0;j=f[m>>2]|0}d=j+4|0;d=h[d>>0]|h[d+1>>0]<<8|h[d+2>>0]<<16|h[d+3>>0]<<24;if(c<<24>>24>0){i=f[o>>2]|0;e=c<<24>>24;c=4;g=0;do{f[i+(g<<2)>>2]=d;c=c+4|0;g=g+1|0;d=j+c|0;d=h[d>>0]|h[d+1>>0]<<8|h[d+2>>0]<<16|h[d+3>>0]<<24}while((g|0)<(e|0))}f[a+20>>2]=d;a=1;return a|0}function qi(a,b){a=a|0;b=b|0;var c=0,d=0,e=Ka;if((b|0)!=1){if(b+-1&b)b=Ya(b)|0}else b=2;d=f[a+4>>2]|0;if(b>>>0>d>>>0){he(a,b);return}if(b>>>0>=d>>>0)return;e=$((f[a+12>>2]|0)>>>0);c=~~$(W($(e/$(n[a+20>>2]))))>>>0;if(d>>>0>2&(d+-1&d|0)==0)c=1<<32-(_(c+-1|0)|0);else c=Ya(c)|0;b=b>>>0>>0?c:b;if(b>>>0>=d>>>0)return;he(a,b);return}function ri(a,c){a=a|0;c=c|0;var d=0,e=0,g=0,h=0,i=0,j=0;if(c>>>0>4294967279)vp(a);i=a+11|0;e=b[i>>0]|0;g=e<<24>>24<0;if(g){j=f[a+4>>2]|0;d=(f[a+8>>2]&2147483647)+-1|0}else{j=e&255;d=10}h=j>>>0>c>>>0?j:c;c=h>>>0<11;h=c?10:(h+16&-16)+-1|0;do if((h|0)!=(d|0)){do if(c){d=f[a>>2]|0;if(g){c=a;e=0;g=13}else{Jo(a,d,(e&255)+1|0)|0;Lq(d);g=15}}else{c=Fn(h+1|0)|0;if(g){e=1;d=f[a>>2]|0;g=13;break}else{Jo(c,a,(e&255)+1|0)|0;g=14;break}}while(0);if((g|0)==13){Jo(c,d,(f[a+4>>2]|0)+1|0)|0;Lq(d);if(e)g=14;else g=15}if((g|0)==14){f[a+8>>2]=h+1|-2147483648;f[a+4>>2]=j;f[a>>2]=c;break}else if((g|0)==15){b[i>>0]=j;break}}while(0);return}function si(a,c){a=a|0;c=c|0;var d=0,e=0,g=0,h=0,i=0,j=0;e=a+24|0;i=f[a+32>>2]|0;if(i>>>0<=16383)Fa(7085,7115,357,7138);if(i>>>0>=4194304)Fa(7148,7115,358,7138);d=i+-16384|0;do if(d>>>0>=64){h=a+28|0;e=(f[e>>2]|0)+(f[h>>2]|0)|0;if(d>>>0<16384){b[e>>0]=i;j=2;g=e+1|0;e=h;d=i>>>8;break}else{d=i+8372224|0;b[e>>0]=d;b[e+1>>0]=d>>>8;j=3;g=e+2|0;e=h;d=d>>>16;break}}else{i=a+28|0;j=1;g=(f[e>>2]|0)+(f[i>>2]|0)|0;e=i}while(0);b[g>>0]=d;h=(f[e>>2]|0)+j|0;i=((h|0)<0)<<31>>31;a=a+40|0;j=(f[c>>2]|0)+(f[a>>2]|0)|0;g=j;b[g>>0]=h;b[g+1>>0]=h>>8;b[g+2>>0]=h>>16;b[g+3>>0]=h>>24;j=j+4|0;b[j>>0]=i;b[j+1>>0]=i>>8;b[j+2>>0]=i>>16;b[j+3>>0]=i>>24;j=f[a>>2]|0;a=f[a+4>>2]|0;i=Do(h|0,i|0,8,0)|0;a=Do(i|0,I|0,j|0,a|0)|0;em(c,a,I);return}function ti(a){a=a|0;var b=0,c=0,d=0,e=0,g=0,h=0;g=f[a+64>>2]|0;g=(Ra[f[(f[g>>2]|0)+40>>2]&127](g)|0)+52|0;g=f[g>>2]|0;h=((f[g+88>>2]|0)-(f[g+84>>2]|0)|0)/12|0;tj(a,h,((h|0)<0)<<31>>31,1)|0;h=g+8|0;g=g+12|0;b=(f[g>>2]|0)-(f[h>>2]|0)|0;if((b|0)<=4)return;b=(b>>>2)+-1|0;d=b<<5;d=Iq(b>>>0>134217727|d>>>0>4294967291?-1:d+4|0)|0;f[d>>2]=b;d=d+4|0;if(b|0){c=d+(b<<5)|0;b=d;do{Hn(b);b=b+32|0}while((b|0)!=(c|0))}e=a+80|0;a=f[e>>2]|0;f[e>>2]=d;if(a|0){c=a+-4|0;b=f[c>>2]|0;if(b|0){b=a+(b<<5)|0;do{b=b+-32|0;jk(b)}while((b|0)!=(a|0))}Jq(c)}if(((f[g>>2]|0)-(f[h>>2]|0)|0)>4)b=0;else return;do{Jl((f[e>>2]|0)+(b<<5)|0);b=b+1|0}while((b|0)<(((f[g>>2]|0)-(f[h>>2]|0)>>2)+-1|0));return}function ui(a){a=a|0;jk(a+992|0);jk(a+960|0);jk(a+928|0);jk(a+896|0);jk(a+864|0);jk(a+832|0);jk(a+800|0);jk(a+768|0);jk(a+736|0);jk(a+704|0);jk(a+672|0);jk(a+640|0);jk(a+608|0);jk(a+576|0);jk(a+544|0);jk(a+512|0);jk(a+480|0);jk(a+448|0);jk(a+416|0);jk(a+384|0);jk(a+352|0);jk(a+320|0);jk(a+288|0);jk(a+256|0);jk(a+224|0);jk(a+192|0);jk(a+160|0);jk(a+128|0);jk(a+96|0);jk(a+64|0);jk(a+32|0);jk(a);return}function vi(a){a=a|0;Hn(a);Hn(a+32|0);Hn(a+64|0);Hn(a+96|0);Hn(a+128|0);Hn(a+160|0);Hn(a+192|0);Hn(a+224|0);Hn(a+256|0);Hn(a+288|0);Hn(a+320|0);Hn(a+352|0);Hn(a+384|0);Hn(a+416|0);Hn(a+448|0);Hn(a+480|0);Hn(a+512|0);Hn(a+544|0);Hn(a+576|0);Hn(a+608|0);Hn(a+640|0);Hn(a+672|0);Hn(a+704|0);Hn(a+736|0);Hn(a+768|0);Hn(a+800|0);Hn(a+832|0);Hn(a+864|0);Hn(a+896|0);Hn(a+928|0);Hn(a+960|0);Hn(a+992|0);return}function wi(a,b){a=a|0;b=b|0;var c=0,d=0,e=0,g=0,h=0,i=0;i=u;u=u+16|0;g=i+12|0;d=i+8|0;c=i+4|0;e=i;h=(a|0)==(b|0);if(!h){f[c>>2]=f[b>>2];f[e>>2]=b+4;f[d>>2]=f[c>>2];f[g>>2]=f[e>>2];Jc(a,d,g)}if(!h){f[c>>2]=f[b+12>>2];f[e>>2]=b+16;f[d>>2]=f[c>>2];f[g>>2]=f[e>>2];Ac(a+12|0,d,g)}if(h){u=i;return}f[c>>2]=f[b+24>>2];f[e>>2]=b+28;f[d>>2]=f[c>>2];f[g>>2]=f[e>>2];Jc(a+24|0,d,g);u=i;return}function xi(a,c,d){a=a|0;c=c|0;d=d|0;var e=0,g=0,h=0,i=0,j=0,k=0,l=0,m=0,n=0,o=0;o=(f[a>>2]|0)+1794895138|0;h=op(f[a+8>>2]|0,o)|0;e=op(f[a+12>>2]|0,o)|0;g=op(f[a+16>>2]|0,o)|0;a:do if((h>>>0>>2>>>0?(n=c-(h<<2)|0,e>>>0>>0&g>>>0>>0):0)?((g|e)&3|0)==0:0){n=e>>>2;m=g>>>2;l=0;while(1){k=h>>>1;j=l+k|0;i=j<<1;g=i+n|0;e=op(f[a+(g<<2)>>2]|0,o)|0;g=op(f[a+(g+1<<2)>>2]|0,o)|0;if(!(g>>>0>>0&e>>>0<(c-g|0)>>>0)){e=0;break a}if(b[a+(g+e)>>0]|0){e=0;break a}e=qm(d,a+g|0)|0;if(!e)break;e=(e|0)<0;if((h|0)==1){e=0;break a}else{l=e?l:j;h=e?k:h-k|0}}e=i+m|0;g=op(f[a+(e<<2)>>2]|0,o)|0;e=op(f[a+(e+1<<2)>>2]|0,o)|0;if(e>>>0>>0&g>>>0<(c-e|0)>>>0)e=(b[a+(e+g)>>0]|0)==0?a+e|0:0;else e=0}else e=0;while(0);return e|0}function yi(a,b){a=a|0;b=b|0;var c=0,d=0,e=0,g=0,h=0,i=0,j=0;j=u;u=u+16|0;i=j+4|0;h=j;f[a>>2]=0;f[a+8>>2]=b;wo(a+12|0);wo(a+32|0);wo(a+52|0);wo(a+72|0);f[i>>2]=0;Bk(a+92|0,b,i);f[i>>2]=0;Bk(a+104|0,b,i);f[i>>2]=0;Bk(a+116|0,b,i);g=b<<5|1;f[h>>2]=0;Bk(i,b,h);yk(a+128|0,g,i);c=f[i>>2]|0;if(c|0){e=i+4|0;d=f[e>>2]|0;if((d|0)!=(c|0))f[e>>2]=d+(~((d+-4-c|0)>>>2)<<2);Lq(c)}f[h>>2]=0;Bk(i,b,h);yk(a+140|0,g,i);e=f[i>>2]|0;if(!e){u=j;return}d=i+4|0;c=f[d>>2]|0;if((c|0)!=(e|0))f[d>>2]=c+(~((c+-4-e|0)>>>2)<<2);Lq(e);u=j;return}function zi(a,b){a=a|0;b=b|0;var c=0,d=0,e=0,g=0,h=0,i=0,j=0;j=u;u=u+16|0;i=j+4|0;h=j;f[a>>2]=0;f[a+8>>2]=b;Hn(a+12|0);wo(a+44|0);wo(a+64|0);wo(a+84|0);f[i>>2]=0;Bk(a+104|0,b,i);f[i>>2]=0;Bk(a+116|0,b,i);f[i>>2]=0;Bk(a+128|0,b,i);g=b<<5|1;f[h>>2]=0;Bk(i,b,h);yk(a+140|0,g,i);c=f[i>>2]|0;if(c|0){e=i+4|0;d=f[e>>2]|0;if((d|0)!=(c|0))f[e>>2]=d+(~((d+-4-c|0)>>>2)<<2);Lq(c)}f[h>>2]=0;Bk(i,b,h);yk(a+152|0,g,i);e=f[i>>2]|0;if(!e){u=j;return}d=i+4|0;c=f[d>>2]|0;if((c|0)!=(e|0))f[d>>2]=c+(~((c+-4-e|0)>>>2)<<2);Lq(e);u=j;return}function Ai(a,b,c){a=a|0;b=b|0;c=c|0;var d=0,e=0,g=0;e=u;u=u+16|0;g=e;Ke(g,a+40|0,f[a+8>>2]|0,b,c);Ij(a,g);d=f[g>>2]|0;f[g>>2]=0;if(!d){u=e;return 1}g=d+88|0;c=f[g>>2]|0;f[g>>2]=0;if(c|0){b=f[c+8>>2]|0;if(b|0){a=c+12|0;if((f[a>>2]|0)!=(b|0))f[a>>2]=b;Lq(b)}Lq(c)}c=f[d+68>>2]|0;if(c|0){a=d+72|0;b=f[a>>2]|0;if((b|0)!=(c|0))f[a>>2]=b+(~((b+-4-c|0)>>>2)<<2);Lq(c)}g=d+64|0;c=f[g>>2]|0;f[g>>2]=0;if(c|0){b=f[c>>2]|0;if(b|0){a=c+4|0;if((f[a>>2]|0)!=(b|0))f[a>>2]=b;Lq(b)}Lq(c)}Lq(d);u=e;return 1}function Bi(a){a=a|0;var c=0,d=0,e=0,g=0,h=0,i=0,j=0,k=0,l=0,m=0;l=a+16|0;d=l;c=f[d>>2]|0;d=f[d+4>>2]|0;if(!((d|0)>0|(d|0)==0&c>>>0>0))return;g=Do(f[(f[a+12>>2]|0)+4>>2]|0,0,7,0)|0;g=co(g|0,I|0,3)|0;h=I;if(!(b[a+24>>0]|0)){j=a+4|0;e=j}else{e=f[a>>2]|0;j=a+4|0;e=e+((f[j>>2]|0)-e)|0;d=Do(c|0,d|0,8,0)|0;d=e+(0-d)|0;e=d;b[e>>0]=g;b[e+1>>0]=g>>8;b[e+2>>0]=g>>16;b[e+3>>0]=g>>24;d=d+4|0;b[d>>0]=h;b[d+1>>0]=h>>8;b[d+2>>0]=h>>16;b[d+3>>0]=h>>24;d=l;e=j;c=f[d>>2]|0;d=f[d+4>>2]|0}e=f[e>>2]|0;m=f[a>>2]|0;i=e-m|0;c=Bo(g|0,h|0,c|0,d|0)|0;c=Do(c|0,I|0,i|0,0)|0;d=m;if(c>>>0<=i>>>0){if(c>>>0>>0?(k=d+c|0,(e|0)!=(k|0)):0)f[j>>2]=k}else mj(a,c-i|0);m=l;f[m>>2]=0;f[m+4>>2]=0;return}function Ci(a,b){a=a|0;b=b|0;var c=0,d=0,e=Ka;if((b|0)!=1){if(b+-1&b)b=Ya(b)|0}else b=2;d=f[a+4>>2]|0;if(b>>>0>d>>>0){pd(a,b);return}if(b>>>0>=d>>>0)return;e=$((f[a+12>>2]|0)>>>0);c=~~$(W($(e/$(n[a+16>>2]))))>>>0;if(d>>>0>2&(d+-1&d|0)==0)c=1<<32-(_(c+-1|0)|0);else c=Ya(c)|0;b=b>>>0>>0?c:b;if(b>>>0>=d>>>0)return;pd(a,b);return}function Di(a,b){a=a|0;b=b|0;var c=0,d=0,e=Ka;if((b|0)!=1){if(b+-1&b)b=Ya(b)|0}else b=2;d=f[a+4>>2]|0;if(b>>>0>d>>>0){zd(a,b);return}if(b>>>0>=d>>>0)return;e=$((f[a+12>>2]|0)>>>0);c=~~$(W($(e/$(n[a+16>>2]))))>>>0;if(d>>>0>2&(d+-1&d|0)==0)c=1<<32-(_(c+-1|0)|0);else c=Ya(c)|0;b=b>>>0>>0?c:b;if(b>>>0>=d>>>0)return;zd(a,b);return}function Ei(a,b){a=a|0;b=b|0;var c=0,d=0,e=Ka;if((b|0)!=1){if(b+-1&b)b=Ya(b)|0}else b=2;d=f[a+4>>2]|0;if(b>>>0>d>>>0){Pd(a,b);return}if(b>>>0>=d>>>0)return;e=$((f[a+12>>2]|0)>>>0);c=~~$(W($(e/$(n[a+16>>2]))))>>>0;if(d>>>0>2&(d+-1&d|0)==0)c=1<<32-(_(c+-1|0)|0);else c=Ya(c)|0;b=b>>>0>>0?c:b;if(b>>>0>=d>>>0)return;Pd(a,b);return}function Fi(a,b){a=a|0;b=b|0;var c=0,d=0,e=Ka;if((b|0)!=1){if(b+-1&b)b=Ya(b)|0}else b=2;d=f[a+4>>2]|0;if(b>>>0>d>>>0){qe(a,b);return}if(b>>>0>=d>>>0)return;e=$((f[a+12>>2]|0)>>>0);c=~~$(W($(e/$(n[a+16>>2]))))>>>0;if(d>>>0>2&(d+-1&d|0)==0)c=1<<32-(_(c+-1|0)|0);else c=Ya(c)|0;b=b>>>0>>0?c:b;if(b>>>0>=d>>>0)return;qe(a,b);return}function Gi(a,b){a=a|0;b=b|0;var c=0,d=0,e=Ka;if((b|0)!=1){if(b+-1&b)b=Ya(b)|0}else b=2;d=f[a+4>>2]|0;if(b>>>0>d>>>0){qd(a,b);return}if(b>>>0>=d>>>0)return;e=$((f[a+12>>2]|0)>>>0);c=~~$(W($(e/$(n[a+16>>2]))))>>>0;if(d>>>0>2&(d+-1&d|0)==0)c=1<<32-(_(c+-1|0)|0);else c=Ya(c)|0;b=b>>>0>>0?c:b;if(b>>>0>=d>>>0)return;qd(a,b);return}function Hi(a,b){a=a|0;b=b|0;var c=0,d=0,e=Ka;if((b|0)!=1){if(b+-1&b)b=Ya(b)|0}else b=2;d=f[a+4>>2]|0;if(b>>>0>d>>>0){Bd(a,b);return}if(b>>>0>=d>>>0)return;e=$((f[a+12>>2]|0)>>>0);c=~~$(W($(e/$(n[a+16>>2]))))>>>0;if(d>>>0>2&(d+-1&d|0)==0)c=1<<32-(_(c+-1|0)|0);else c=Ya(c)|0;b=b>>>0>>0?c:b;if(b>>>0>=d>>>0)return;Bd(a,b);return}function Ii(a,b){a=a|0;b=b|0;var c=0,d=0,e=Ka;if((b|0)!=1){if(b+-1&b)b=Ya(b)|0}else b=2;d=f[a+4>>2]|0;if(b>>>0>d>>>0){Sd(a,b);return}if(b>>>0>=d>>>0)return;e=$((f[a+12>>2]|0)>>>0);c=~~$(W($(e/$(n[a+16>>2]))))>>>0;if(d>>>0>2&(d+-1&d|0)==0)c=1<<32-(_(c+-1|0)|0);else c=Ya(c)|0;b=b>>>0>>0?c:b;if(b>>>0>=d>>>0)return;Sd(a,b);return}function Ji(a,b){a=a|0;b=b|0;var c=0,d=0,e=Ka;if((b|0)!=1){if(b+-1&b)b=Ya(b)|0}else b=2;d=f[a+4>>2]|0;if(b>>>0>d>>>0){sd(a,b);return}if(b>>>0>=d>>>0)return;e=$((f[a+12>>2]|0)>>>0);c=~~$(W($(e/$(n[a+16>>2]))))>>>0;if(d>>>0>2&(d+-1&d|0)==0)c=1<<32-(_(c+-1|0)|0);else c=Ya(c)|0;b=b>>>0>>0?c:b;if(b>>>0>=d>>>0)return;sd(a,b);return}function Ki(a,b){a=a|0;b=b|0;var c=0,d=0,e=Ka;if((b|0)!=1){if(b+-1&b)b=Ya(b)|0}else b=2;d=f[a+4>>2]|0;if(b>>>0>d>>>0){Cd(a,b);return}if(b>>>0>=d>>>0)return;e=$((f[a+12>>2]|0)>>>0);c=~~$(W($(e/$(n[a+16>>2]))))>>>0;if(d>>>0>2&(d+-1&d|0)==0)c=1<<32-(_(c+-1|0)|0);else c=Ya(c)|0;b=b>>>0>>0?c:b;if(b>>>0>=d>>>0)return;Cd(a,b);return}function Li(a,b){a=a|0;b=b|0;var c=0,d=0,e=Ka;if((b|0)!=1){if(b+-1&b)b=Ya(b)|0}else b=2;d=f[a+4>>2]|0;if(b>>>0>d>>>0){Td(a,b);return}if(b>>>0>=d>>>0)return;e=$((f[a+12>>2]|0)>>>0);c=~~$(W($(e/$(n[a+16>>2]))))>>>0;if(d>>>0>2&(d+-1&d|0)==0)c=1<<32-(_(c+-1|0)|0);else c=Ya(c)|0;b=b>>>0>>0?c:b;if(b>>>0>=d>>>0)return;Td(a,b);return}function Mi(a,b){a=a|0;b=b|0;var c=0,d=0,e=Ka;if((b|0)!=1){if(b+-1&b)b=Ya(b)|0}else b=2;d=f[a+4>>2]|0;if(b>>>0>d>>>0){re(a,b);return}if(b>>>0>=d>>>0)return;e=$((f[a+12>>2]|0)>>>0);c=~~$(W($(e/$(n[a+16>>2]))))>>>0;if(d>>>0>2&(d+-1&d|0)==0)c=1<<32-(_(c+-1|0)|0);else c=Ya(c)|0;b=b>>>0>>0?c:b;if(b>>>0>=d>>>0)return;re(a,b);return}function Ni(a,b,c){a=a|0;b=b|0;c=c|0;var d=0,e=0,g=0;e=u;u=u+16|0;g=e;Ig(g,a+40|0,f[a+8>>2]|0,b,c);Ij(a,g);d=f[g>>2]|0;f[g>>2]=0;if(!d){u=e;return 1}g=d+88|0;c=f[g>>2]|0;f[g>>2]=0;if(c|0){b=f[c+8>>2]|0;if(b|0){a=c+12|0;if((f[a>>2]|0)!=(b|0))f[a>>2]=b;Lq(b)}Lq(c)}c=f[d+68>>2]|0;if(c|0){a=d+72|0;b=f[a>>2]|0;if((b|0)!=(c|0))f[a>>2]=b+(~((b+-4-c|0)>>>2)<<2);Lq(c)}g=d+64|0;c=f[g>>2]|0;f[g>>2]=0;if(c|0){b=f[c>>2]|0;if(b|0){a=c+4|0;if((f[a>>2]|0)!=(b|0))f[a>>2]=b;Lq(b)}Lq(c)}Lq(d);u=e;return 1}function Oi(a,b,c,d){a=a|0;b=b|0;c=c|0;d=d|0;var e=0,g=0,h=0,i=0;i=u;u=u+48|0;a=i+36|0;h=i+24|0;e=i+12|0;g=i;if(!b){b=0;u=i;return b|0}f[a>>2]=0;f[a+4>>2]=0;f[a+8>>2]=0;Ck(a,c,Kk(c)|0);f[h>>2]=0;f[h+4>>2]=0;f[h+8>>2]=0;Ck(h,d,Kk(d)|0);f[e>>2]=0;f[e+4>>2]=0;f[e+8>>2]=0;Ck(e,c,Kk(c)|0);f[g>>2]=0;f[g+4>>2]=0;f[g+8>>2]=0;Ck(g,d,Kk(d)|0);yn(b,e,g);Eo(g);Eo(e);Eo(h);Eo(a);b=1;u=i;return b|0}function Pi(a,c){a=a|0;c=c|0;var d=0,e=0,g=0,h=0,i=0,j=0,k=0,l=0,m=0;a=f[a+4>>2]|0;if(!a){m=0;return m|0}k=b[c+11>>0]|0;j=k<<24>>24<0;k=j?f[c+4>>2]|0:k&255;j=j?f[c>>2]|0:c;while(1){e=a+16|0;d=b[e+11>>0]|0;h=d<<24>>24<0;d=h?f[a+20>>2]|0:d&255;g=d>>>0>>0;c=g?d:k;if((c|0)!=0?(m=Wl(j,h?f[e>>2]|0:e,c)|0,(m|0)!=0):0)if((m|0)<0)i=7;else i=8;else if(k>>>0>>0)i=7;else i=8;if((i|0)!=7)if((i|0)==8){i=0;c=k>>>0>>0?k:d;if((c|0)!=0?(l=Wl(h?f[e>>2]|0:e,j,c)|0,(l|0)!=0):0){if((l|0)>=0){a=1;i=14;break}}else i=10;if((i|0)==10?(0,!g):0){a=1;i=14;break}a=a+4|0}a=f[a>>2]|0;if(!a){a=0;i=14;break}}if((i|0)==14)return a|0;return 0}function Qi(a,b,c){a=a|0;b=b|0;c=c|0;var d=0,e=0,g=0,h=0,i=0;i=f[b>>2]|0;e=f[a+12>>2]|0;if((i|0)>(e|0))Fa(11590,10827,259,11614);d=f[c>>2]|0;if((d|0)>(e|0))Fa(11628,10827,260,11614);a=0-e|0;if((i|0)<(a|0))Fa(11652,10827,261,11614);if((d|0)<(a|0))Fa(11677,10827,262,11614);if((d|i|0)>-1){h=1;a=1}else{a=(i|0)<1&(d|0)<1;h=a?-1:(i|0)>0?1:-1;a=a?-1:(d|0)>0?1:-1}g=X(e,h)|0;e=X(e,a)|0;f[b>>2]=(i<<1)-g;d=(f[c>>2]<<1)-e|0;f[c>>2]=d;i=(X(h,a)|0)>-1;a=f[b>>2]|0;if(i){f[b>>2]=0-d;i=0-a|0;f[c>>2]=i;i=f[b>>2]|0;i=i+g|0;i=(i|0)/2|0;f[b>>2]=i;b=f[c>>2]|0;b=b+e|0;b=(b|0)/2|0;f[c>>2]=b;return}else{f[b>>2]=d;i=a;f[c>>2]=i;i=f[b>>2]|0;i=i+g|0;i=(i|0)/2|0;f[b>>2]=i;b=f[c>>2]|0;b=b+e|0;b=(b|0)/2|0;f[c>>2]=b;return}}function Ri(a,c){a=a|0;c=c|0;var d=0,e=0,g=0,h=0,i=0,j=0;h=u;u=u+16|0;e=h+4|0;d=h;g=h+8|0;b[g>>0]=a&127;do if(a>>>0>127){b[g>>0]=a|128;i=c+16|0;j=f[i+4>>2]|0;if((j|0)>0|(j|0)==0&(f[i>>2]|0)>>>0>0){d=0;break}else{f[d>>2]=f[c+4>>2];f[e>>2]=f[d>>2];vf(c,e,g,g+1|0)|0;d=Ri(a>>>7,c)|0;break}}else{j=c+16|0;i=f[j+4>>2]|0;if((i|0)>0|(i|0)==0&(f[j>>2]|0)>>>0>0){d=0;break}f[d>>2]=f[c+4>>2];f[e>>2]=f[d>>2];vf(c,e,g,g+1|0)|0;j=1;u=h;return j|0}while(0);j=d;u=h;return j|0}function Si(a,c,d,e){a=a|0;c=c|0;d=d|0;e=e|0;var g=0,h=0,i=0,j=0,k=0,l=0;h=Fn(32)|0;f[a>>2]=h;f[a+4>>2]=c+8;k=a+8|0;b[k>>0]=0;j=h+8|0;f[j>>2]=f[e>>2];f[j+4>>2]=f[e+4>>2];f[j+8>>2]=f[e+8>>2];f[e>>2]=0;f[e+4>>2]=0;f[e+8>>2]=0;j=h+20|0;l=e+12|0;f[j>>2]=0;f[h+24>>2]=0;f[h+28>>2]=0;h=l+11|0;g=b[h>>0]|0;i=e+16|0;e=f[i>>2]|0;c=g<<24>>24<0?e:g&255;if(!c)c=0;else{mj(j,c);g=b[h>>0]|0;e=f[i>>2]|0;c=f[j>>2]|0}j=g<<24>>24<0;Mh(c|0,(j?f[l>>2]|0:l)|0,(j?e:g&255)|0)|0;b[k>>0]=1;a=f[a>>2]|0;f[a+4>>2]=d;f[a>>2]=0;return}function Ti(a,b){a=a|0;b=b|0;var c=0,d=0,e=0,g=0,h=0;b=f[b>>2]|0;if((b|0)==-1073741824){h=-1;return h|0}g=f[(f[a+24>>2]|0)+(b<<2)>>2]|0;if((g|0)<0){h=0;return h|0}e=a+12|0;b=0;d=0;a=g;a:while(1){while(1){b=b+1|0;if(d){h=10;break}c=a+1|0;a=((c|0)%3|0|0)==0?a+-2|0:c;if((a|0)<0){a=g;break}c=f[(f[e>>2]|0)+(a<<2)>>2]|0;a=c+1|0;if((c|0)<0){a=g;break}a=((a|0)%3|0|0)==0?c+-2|0:a;if((a|0)<0){a=g;break}if((a|0)==(g|0)){h=16;break a}}do if((h|0)==10){h=0;a=(((a>>>0)%3|0|0)==0?2:-1)+a|0;if((a|0)<0){h=16;break a}a=f[(f[e>>2]|0)+(a<<2)>>2]|0;if((a|0)<0){h=16;break a}if(!((a>>>0)%3|0)){a=a+2|0;break}else{a=a+-1|0;break}}while(0);if((a|0)<0){h=16;break}else d=1}if((h|0)==16)return b|0;return 0}function Ui(a,c,d,e){a=a|0;c=c|0;d=d|0;e=e|0;var g=0,h=0,i=0,j=0,k=0;g=Fn(32)|0;f[a>>2]=g;f[a+4>>2]=c+8;i=a+8|0;b[i>>0]=0;Rl(g+8|0,e);j=g+20|0;k=e+12|0;f[j>>2]=0;f[g+24>>2]=0;f[g+28>>2]=0;g=e+16|0;c=f[g>>2]|0;e=f[k>>2]|0;h=c-e|0;if(!h){j=e;g=c;h=0;k=j;k=g-k|0;Mh(h|0,j|0,k|0)|0;b[i>>0]=1;a=f[a>>2]|0;k=a+4|0;f[k>>2]=d;f[a>>2]=0;return}mj(j,h);h=f[k>>2]|0;g=f[g>>2]|0;j=f[j>>2]|0;k=h;k=g-k|0;Mh(j|0,h|0,k|0)|0;b[i>>0]=1;a=f[a>>2]|0;k=a+4|0;f[k>>2]=d;f[a>>2]=0;return}function Vi(a,b){a=a|0;b=b|0;var c=0,d=0,e=Ka;if((b|0)!=1){if(b+-1&b)b=Ya(b)|0}else b=2;d=f[a+4>>2]|0;if(b>>>0>d>>>0){yd(a,b);return}if(b>>>0>=d>>>0)return;e=$((f[a+12>>2]|0)>>>0);c=~~$(W($(e/$(n[a+16>>2]))))>>>0;if(d>>>0>2&(d+-1&d|0)==0)c=1<<32-(_(c+-1|0)|0);else c=Ya(c)|0;b=b>>>0>>0?c:b;if(b>>>0>=d>>>0)return;yd(a,b);return}function Wi(a,c){a=a|0;c=c|0;var d=0,e=0,g=0,h=0,i=0,j=0,k=0,l=0,m=0,n=0,o=0;n=u;u=u+16|0;k=n+4|0;j=n;l=n+8|0;if(!(Ce(a,c)|0)){m=0;u=n;return m|0}m=a+36|0;e=a+40|0;a=f[m>>2]|0;if((f[e>>2]|0)==(a|0)){m=1;u=n;return m|0}i=c+16|0;g=c+4|0;h=l+1|0;d=0;do{a=f[a+(d<<2)>>2]|0;a=Ra[f[(f[a>>2]|0)+32>>2]&127](a)|0;b[l>>0]=a;a=i;o=f[a+4>>2]|0;if(!((o|0)>0|(o|0)==0&(f[a>>2]|0)>>>0>0)){f[j>>2]=f[g>>2];f[k>>2]=f[j>>2];vf(c,k,l,h)|0}d=d+1|0;a=f[m>>2]|0}while(d>>>0<(f[e>>2]|0)-a>>2>>>0);a=1;u=n;return a|0}function Xi(a,b){a=a|0;b=b|0;var c=0,d=0,e=0,g=0,h=0,i=0,j=0,k=0;k=u;u=u+16|0;i=k;f[i>>2]=0;f[i+4>>2]=0;f[i+8>>2]=0;Ck(i,10585,17);g=b+16|0;d=f[g>>2]|0;if(d){c=g;a:while(1){e=d;while(1){if((f[e+16>>2]|0)>=(a|0))break;d=f[e+4>>2]|0;if(!d)break a;else e=d}d=f[e>>2]|0;if(!d){c=e;break}else c=e}if(((c|0)!=(g|0)?(h=c+20|0,(f[c+16>>2]|0)<=(a|0)):0)?(Pi(h,i)|0)!=0:0)b=h;else j=9}else j=9;j=ql(b,i,-1)|0;Eo(i);u=k;return ((j|0)==-1?-1:j>>>0>6?-2:j)|0}function Yi(a){a=a|0;var b=0,c=0,d=0,e=0,g=0;f[a>>2]=5284;e=a+60|0;b=f[e>>2]|0;f[e>>2]=0;if(b|0)Oa[f[(f[b>>2]|0)+4>>2]&127](b);b=f[a+48>>2]|0;if(b|0){d=a+52|0;c=f[d>>2]|0;if((c|0)!=(b|0))f[d>>2]=c+(~((c+-4-b|0)>>>2)<<2);Lq(b)}d=a+36|0;b=f[d>>2]|0;if(b|0){e=a+40|0;c=f[e>>2]|0;if((c|0)!=(b|0)){do{g=c+-4|0;f[e>>2]=g;c=f[g>>2]|0;f[g>>2]=0;if(c|0)Oa[f[(f[c>>2]|0)+4>>2]&127](c);c=f[e>>2]|0}while((c|0)!=(b|0));b=f[d>>2]|0}Lq(b)}f[a>>2]=3292;b=f[a+16>>2]|0;if(b|0){d=a+20|0;c=f[d>>2]|0;if((c|0)!=(b|0))f[d>>2]=c+(~((c+-4-b|0)>>>2)<<2);Lq(b)}d=f[a+4>>2]|0;if(!d)return;c=a+8|0;b=f[c>>2]|0;if((b|0)!=(d|0))f[c>>2]=b+(~((b+-4-d|0)>>>2)<<2);Lq(d);return}function Zi(a){a=a|0;var b=0,c=0,d=0,e=0,g=0,h=0;g=f[a+4>>2]|0;h=a+8|0;b=f[h>>2]|0;if((b|0)!=(g|0))do{d=b+-4|0;f[h>>2]=d;e=f[d>>2]|0;f[d>>2]=0;if(e|0){d=e+88|0;b=f[d>>2]|0;f[d>>2]=0;if(b|0){c=f[b+8>>2]|0;if(c|0){d=b+12|0;if((f[d>>2]|0)!=(c|0))f[d>>2]=c;Lq(c)}Lq(b)}b=f[e+68>>2]|0;if(b|0){d=e+72|0;c=f[d>>2]|0;if((c|0)!=(b|0))f[d>>2]=c+(~((c+-4-b|0)>>>2)<<2);Lq(b)}d=e+64|0;b=f[d>>2]|0;f[d>>2]=0;if(b|0){c=f[b>>2]|0;if(c|0){d=b+4|0;if((f[d>>2]|0)!=(c|0))f[d>>2]=c;Lq(c)}Lq(b)}Lq(e)}b=f[h>>2]|0}while((b|0)!=(g|0));b=f[a>>2]|0;if(!b)return;Lq(b);return}function _i(a){a=a|0;var b=0,c=0,d=0,e=0,g=0,h=0;b=f[a>>2]|0;if(!b)return;h=a+4|0;c=f[h>>2]|0;if((c|0)!=(b|0)){do{e=c+-4|0;f[h>>2]=e;g=f[e>>2]|0;f[e>>2]=0;if(g|0){e=g+88|0;c=f[e>>2]|0;f[e>>2]=0;if(c|0){d=f[c+8>>2]|0;if(d|0){e=c+12|0;if((f[e>>2]|0)!=(d|0))f[e>>2]=d;Lq(d)}Lq(c)}c=f[g+68>>2]|0;if(c|0){e=g+72|0;d=f[e>>2]|0;if((d|0)!=(c|0))f[e>>2]=d+(~((d+-4-c|0)>>>2)<<2);Lq(c)}e=g+64|0;c=f[e>>2]|0;f[e>>2]=0;if(c|0){d=f[c>>2]|0;if(d|0){e=c+4|0;if((f[e>>2]|0)!=(d|0))f[e>>2]=d;Lq(d)}Lq(c)}Lq(g)}c=f[h>>2]|0}while((c|0)!=(b|0));b=f[a>>2]|0}Lq(b);return}function $i(a,b,c){a=a|0;b=b|0;c=c|0;var d=0,e=0,g=0;g=u;u=u+48|0;e=g;d=g+32|0;if(!b){e=0;u=g;return e|0}Pn(e);if(((Km(b,0)|0)!=-1?Ra[f[(f[b>>2]|0)+16>>2]&127](b)|0:0)?(Oa[f[(f[b>>2]|0)+20>>2]&127](b),Jh(d,a,b,e),a=(f[d>>2]|0)==0,Eo(d+4|0),a):0){a=f[e>>2]|0;d=e+4|0;sg(c,a,a+((f[d>>2]|0)-a)|0);d=(f[d>>2]|0)-(f[e>>2]|0)|0}else d=0;a=e+12|0;c=f[a>>2]|0;f[a>>2]=0;if(c|0)Lq(c);b=f[e>>2]|0;if(b|0){c=e+4|0;if((f[c>>2]|0)!=(b|0))f[c>>2]=b;Lq(b)}e=d;u=g;return e|0}function aj(a,b,c,d){a=a|0;b=b|0;c=c|0;d=d|0;var e=0,g=0,h=0,i=0,j=0,k=0,l=0,m=0;m=u;u=u+32|0;k=m+16|0;i=m+8|0;j=m;h=f[c>>2]|0;l=f[a+16>>2]<<1;if((h|0)>(l|0))Fa(11026,11071,81,11196);e=f[c+4>>2]|0;if((e|0)>(l|0))Fa(11214,11071,82,11196);g=f[b>>2]|0;if((g|0)>(l|0))Fa(11259,11071,83,11196);c=f[b+4>>2]|0;if((c|0)>(l|0))Fa(11304,11071,84,11196);if((h|0)<=-1)Fa(11349,11071,85,11196);if((e|0)<=-1)Fa(11371,11071,86,11196);if((g|0)<=-1)Fa(11393,11071,87,11196);if((c|0)>-1){f[i>>2]=g;f[i+4>>2]=c;f[j>>2]=h;f[j+4>>2]=e;sf(k,a,i,j);f[d>>2]=f[k>>2];f[d+4>>2]=f[k+4>>2];u=m;return}else Fa(11415,11071,88,11196)}function bj(a,c,d){a=a|0;c=c|0;d=d|0;var e=0,g=0,h=0,i=0;h=c&255;e=(d|0)!=0;a:do if(e&(a&3|0)!=0){g=c&255;while(1){if((b[a>>0]|0)==g<<24>>24){i=6;break a}a=a+1|0;d=d+-1|0;e=(d|0)!=0;if(!(e&(a&3|0)!=0)){i=5;break}}}else i=5;while(0);if((i|0)==5)if(e)i=6;else d=0;b:do if((i|0)==6){g=c&255;if((b[a>>0]|0)!=g<<24>>24){e=X(h,16843009)|0;c:do if(d>>>0>3)while(1){h=f[a>>2]^e;if((h&-2139062144^-2139062144)&h+-16843009|0)break;a=a+4|0;d=d+-4|0;if(d>>>0<=3){i=11;break c}}else i=11;while(0);if((i|0)==11)if(!d){d=0;break}while(1){if((b[a>>0]|0)==g<<24>>24)break b;a=a+1|0;d=d+-1|0;if(!d){d=0;break}}}}while(0);return (d|0?a:0)|0}function cj(a){a=a|0;var b=0,c=0,d=0,e=0,g=0;e=a+12|0;g=f[e>>2]|0;f[e>>2]=0;if(!g){Eo(a);return}b=f[g+28>>2]|0;if(b|0)do{e=b;b=f[b>>2]|0;cj(e+8|0);Lq(e)}while((b|0)!=0);e=g+20|0;b=f[e>>2]|0;f[e>>2]=0;if(b|0)Lq(b);b=f[g+8>>2]|0;if(b|0)do{e=b;b=f[b>>2]|0;c=f[e+20>>2]|0;if(c|0){d=e+24|0;if((f[d>>2]|0)!=(c|0))f[d>>2]=c;Lq(c)}Eo(e+8|0);Lq(e)}while((b|0)!=0);b=f[g>>2]|0;f[g>>2]=0;if(b|0)Lq(b);Lq(g);Eo(a);return}function dj(a,b){a=a|0;b=b|0;var c=0,d=0,e=0,g=0,h=0,i=0,j=0;j=u;u=u+16|0;g=j+8|0;h=j+4|0;i=j;f[i>>2]=f[a+16>>2];e=b+16|0;d=e;c=f[d>>2]|0;d=f[d+4>>2]|0;if(!((d|0)>0|(d|0)==0&c>>>0>0)){f[h>>2]=f[b+4>>2];f[g>>2]=f[h>>2];vf(b,g,i,i+4|0)|0;c=e;d=f[c+4>>2]|0;c=f[c>>2]|0}f[i>>2]=f[a+24>>2];if((d|0)>0|(d|0)==0&c>>>0>0){u=j;return 1}f[h>>2]=f[b+4>>2];f[g>>2]=f[h>>2];vf(b,g,i,i+4|0)|0;u=j;return 1}function ej(a,b){a=a|0;b=b|0;var c=0,d=0,e=0,g=0,h=0,i=0,j=0,k=0;k=a+4|0;d=f[k>>2]|0;c=f[a>>2]|0;e=((d-c|0)/12|0)+1|0;if(e>>>0>357913941){zp(a);c=f[a>>2]|0;d=f[k>>2]|0}j=a+8|0;i=((f[j>>2]|0)-c|0)/12|0;h=i<<1;h=i>>>0<178956970?(h>>>0>>0?e:h):357913941;e=(d-c|0)/12|0;do if(h)if(h>>>0>357913941){a=Ha(4)|0;qq(a);sa(a|0,1040,102)}else{i=Fn(h*12|0)|0;break}else i=0;while(0);g=i+(e*12|0)|0;f[g>>2]=f[b>>2];f[g+4>>2]=f[b+4>>2];f[g+8>>2]=f[b+8>>2];e=d-c|0;d=g+(((e|0)/-12|0)*12|0)|0;if((e|0)>0)Mh(d|0,c|0,e|0)|0;f[a>>2]=d;f[k>>2]=g+12;f[j>>2]=i+(h*12|0);if(!c)return;Lq(c);return}function fj(a,b){a=a|0;b=b|0;var c=0,d=0,e=0,g=0,h=0,i=0,j=0,k=0,l=0;j=u;u=u+32|0;i=j+16|0;c=j+8|0;d=j;g=a+8|0;if(f[g>>2]<<5>>>0>=b>>>0){u=j;return}f[i>>2]=0;h=i+4|0;f[h>>2]=0;e=i+8|0;f[e>>2]=0;if((b|0)<0)zp(i);l=((b+-1|0)>>>5)+1|0;k=Fn(l<<2)|0;f[i>>2]=k;f[h>>2]=0;f[e>>2]=l;l=f[a>>2]|0;f[c>>2]=l;f[c+4>>2]=0;k=a+4|0;b=f[k>>2]|0;f[d>>2]=l+(b>>>5<<2);f[d+4>>2]=b&31;Eh(i,c,d);b=f[a>>2]|0;f[a>>2]=f[i>>2];f[i>>2]=b;a=f[k>>2]|0;f[k>>2]=f[h>>2];f[h>>2]=a;a=f[g>>2]|0;f[g>>2]=f[e>>2];f[e>>2]=a;if(b|0)Lq(b);u=j;return}function gj(a,b){a=a|0;b=b|0;var c=0,d=0,e=0,g=0,h=0,i=0,j=0;j=u;u=u+16|0;g=j+8|0;h=j+4|0;i=j;f[i>>2]=f[a+12>>2];e=b+16|0;d=e;c=f[d>>2]|0;d=f[d+4>>2]|0;if(!((d|0)>0|(d|0)==0&c>>>0>0)){f[h>>2]=f[b+4>>2];f[g>>2]=f[h>>2];vf(b,g,i,i+4|0)|0;c=e;d=f[c+4>>2]|0;c=f[c>>2]|0}f[i>>2]=f[a+16>>2];if((d|0)>0|(d|0)==0&c>>>0>0){u=j;return 1}f[h>>2]=f[b+4>>2];f[g>>2]=f[h>>2];vf(b,g,i,i+4|0)|0;u=j;return 1}function hj(a){a=a|0;var b=0,c=0,d=0,e=0;f[a>>2]=5896;c=a+72|0;b=a+136|0;d=a+4|0;e=d+64|0;do{f[d>>2]=0;d=d+4|0}while((d|0)<(e|0));d=c;e=d+64|0;do{f[d>>2]=0;d=d+4|0}while((d|0)<(e|0));n[b>>2]=$(1.0);b=a+176|0;d=a+140|0;e=d+36|0;do{f[d>>2]=0;d=d+4|0}while((d|0)<(e|0));f[b>>2]=-1;b=a+180|0;f[b>>2]=0;f[b+4>>2]=0;f[b+8>>2]=0;f[b+12>>2]=0;f[b+16>>2]=0;f[b+20>>2]=0;f[b+24>>2]=0;Pn(a+208|0);Pn(a+240|0);b=a+320|0;d=a+272|0;e=d+48|0;do{f[d>>2]=0;d=d+4|0}while((d|0)<(e|0));f[b>>2]=-1;f[a+324>>2]=0;f[a+328>>2]=-1073741824;f[a+332>>2]=0;f[a+336>>2]=2;f[a+340>>2]=7;e=a+344|0;f[e>>2]=0;f[e+4>>2]=0;f[e+8>>2]=0;f[e+12>>2]=0;return}function ij(a,b){a=a|0;b=b|0;var c=0,d=0,e=0,g=0,h=0,i=0,j=0,k=0,l=0;l=u;u=u+16|0;i=l;if((Ra[f[(f[b>>2]|0)+20>>2]&127](b)|0)<=0){k=1;u=l;return k|0}j=a+4|0;g=a+20|0;h=a+24|0;e=a+16|0;d=0;while(1){c=f[(f[j>>2]|0)+4>>2]|0;c=Km(c,Va[f[(f[b>>2]|0)+24>>2]&127](b,d)|0)|0;f[i>>2]=c;if((c|0)==-1)break;a=f[g>>2]|0;if((a|0)==(f[h>>2]|0))Bj(e,i);else{f[a>>2]=c;f[g>>2]=a+4}Ol(f[j>>2]|0,f[i>>2]|0)|0;d=d+1|0;if((d|0)>=(Ra[f[(f[b>>2]|0)+20>>2]&127](b)|0)){a=1;k=9;break}}if((k|0)==9){u=l;return a|0}k=0;u=l;return k|0}function jj(a,b){a=a|0;b=b|0;var c=0,d=0,e=0,g=0,h=0,i=0,j=0,k=0;k=a+8|0;d=f[k>>2]|0;j=a+4|0;e=f[j>>2]|0;if(d-e>>2>>>0>=b>>>0){Xj(e|0,0,b<<2|0)|0;f[j>>2]=e+(b<<2);return}c=f[a>>2]|0;g=(e-c>>2)+b|0;if(g>>>0>1073741823){zp(a);c=f[a>>2]|0;d=f[k>>2]|0;e=f[j>>2]|0}d=d-c|0;h=d>>1;h=d>>2>>>0<536870911?(h>>>0>>0?g:h):1073741823;d=e-c>>2;do if(h)if(h>>>0>1073741823){a=Ha(4)|0;qq(a);sa(a|0,1040,102)}else{i=Fn(h<<2)|0;break}else i=0;while(0);g=i+(d<<2)|0;Xj(g|0,0,b<<2|0)|0;e=e-c|0;d=g+(0-(e>>2)<<2)|0;if((e|0)>0)Mh(d|0,c|0,e|0)|0;f[a>>2]=d;f[j>>2]=g+(b<<2);f[k>>2]=i+(h<<2);if(!c)return;Lq(c);return}function kj(a,b){a=a|0;b=b|0;var c=0,d=0,e=0;e=b+48|0;if(($j(f[e>>2]|0)|0)>9){e=0;return e|0}if((Ra[f[(f[b>>2]|0)+8>>2]&127](b)|0)!=1){e=0;return e|0}d=b+4|0;b=f[d>>2]|0;if((a|0)<=-1)Fa(17509,17693,63,17731);c=f[b+8>>2]|0;if(((f[b+12>>2]|0)-c>>2|0)<=(a|0))Fa(17639,17693,64,17731);c=(f[c+(a<<2)>>2]|0)+56|0;b=f[c>>2]|0;do if((b|0)==3)if(($j(f[e>>2]|0)|0)<4){e=5;return e|0}else{b=f[c>>2]|0;break}while(0);c=$j(f[e>>2]|0)|0;if((b|0)==1){e=(c|0)<4?6:0;return e|0}if((c|0)>7){e=0;return e|0}if(($j(f[e>>2]|0)|0)>1){e=1;return e|0}else return ((f[(f[d>>2]|0)+68>>2]|0)<40?1:4)|0;return 0}function lj(a,c,d,e){a=a|0;c=c|0;d=d|0;e=e|0;var g=0,i=0;g=Fn(32)|0;f[a>>2]=g;f[a+4>>2]=c+8;c=a+8|0;b[c>>0]=0;i=g+8|0;f[i>>2]=f[e>>2];f[i+4>>2]=f[e+4>>2];f[i+8>>2]=f[e+8>>2];f[e>>2]=0;f[e+4>>2]=0;f[e+8>>2]=0;i=g+20|0;f[i>>2]=0;f[g+24>>2]=0;f[g+28>>2]=0;mj(i,4);g=e+12|0;e=f[i>>2]|0;g=h[g>>0]|h[g+1>>0]<<8|h[g+2>>0]<<16|h[g+3>>0]<<24;b[e>>0]=g;b[e+1>>0]=g>>8;b[e+2>>0]=g>>16;b[e+3>>0]=g>>24;b[c>>0]=1;c=f[a>>2]|0;f[c+4>>2]=d;f[c>>2]=0;return}function mj(a,c){a=a|0;c=c|0;var d=0,e=0,g=0,h=0,i=0,j=0,k=0;j=a+8|0;g=f[j>>2]|0;k=a+4|0;d=f[k>>2]|0;if((g-d|0)>>>0>=c>>>0){do{b[d>>0]=0;d=(f[k>>2]|0)+1|0;f[k>>2]=d;c=c+-1|0}while((c|0)!=0);return}e=f[a>>2]|0;h=d-e+c|0;if((h|0)<0){zp(a);e=f[a>>2]|0;g=f[j>>2]|0;d=f[k>>2]|0}i=g-e|0;g=i<<1;g=i>>>0<1073741823?(g>>>0>>0?h:g):2147483647;if(!g)h=0;else h=Fn(g)|0;i=h+(d-e)|0;h=h+g|0;d=i;g=i;do{b[d>>0]=0;d=g+1|0;g=d;c=c+-1|0}while((c|0)!=0);d=f[a>>2]|0;e=(f[k>>2]|0)-d|0;c=i+(0-e)|0;if((e|0)>0)Mh(c|0,d|0,e|0)|0;f[a>>2]=c;f[k>>2]=g;f[j>>2]=h;if(!d)return;Lq(d);return}function nj(a,c,d,e,g,h,i,j){a=a|0;c=c|0;d=d|0;e=e|0;g=g|0;h=h|0;i=i|0;j=j|0;var k=0,l=0,m=0,n=0,o=0;o=u;u=u+16|0;n=o;if((-18-c|0)>>>0>>0)vp(a);if((b[a+11>>0]|0)<0)m=f[a>>2]|0;else m=a;if(c>>>0<2147483623){l=d+c|0;k=c<<1;l=l>>>0>>0?k:l;l=l>>>0<11?11:l+16&-16}else l=-17;k=Fn(l)|0;if(g|0)Jo(k,m,g)|0;if(i|0)Jo(k+g|0,j,i)|0;d=e-h|0;e=d-g|0;if(e|0)Jo(k+g+i|0,m+g+h|0,e)|0;if((c|0)!=10)Lq(m);f[a>>2]=k;f[a+8>>2]=l|-2147483648;m=d+i|0;f[a+4>>2]=m;b[n>>0]=0;Dp(k+m|0,n);u=o;return}function oj(a,b,c,d){a=a|0;b=b|0;c=c|0;d=d|0;var e=0,g=0,h=0,i=0;g=u;u=u+16|0;e=g;if((c|0)<0|((b|0)==0|(d|0)==0)){d=0;u=g;return d|0}a=b+4|0;if(!(f[a>>2]|0)){h=Fn(52)|0;f[h>>2]=0;f[h+4>>2]=0;f[h+8>>2]=0;f[h+12>>2]=0;n[h+16>>2]=$(1.0);i=h+20|0;f[i>>2]=0;f[i+4>>2]=0;f[i+8>>2]=0;f[i+12>>2]=0;n[h+36>>2]=$(1.0);f[h+40>>2]=0;f[h+44>>2]=0;f[h+48>>2]=0;f[b+4>>2]=h}i=Fn(44)|0;Kb(i,d);f[i+40>>2]=c;a=f[a>>2]|0;f[e>>2]=i;Pk(a,e)|0;a=f[e>>2]|0;f[e>>2]=0;if(!a){i=1;u=g;return i|0}Hj(a);Lq(a);i=1;u=g;return i|0}function pj(a,c,d){a=a|0;c=c|0;d=d|0;var e=0,g=0,h=0,i=0,j=0;g=d+16|0;e=f[g>>2]|0;if(!e)if(!(bm(d)|0)){e=f[g>>2]|0;h=5}else e=0;else h=5;a:do if((h|0)==5){j=d+20|0;i=f[j>>2]|0;g=i;if((e-i|0)>>>0>>0){e=Ma[f[d+36>>2]&31](d,a,c)|0;break}b:do if((b[d+75>>0]|0)>-1){i=c;while(1){if(!i){h=g;d=0;g=c;e=a;break b}e=i+-1|0;if((b[a+e>>0]|0)==10)break;else i=e}e=Ma[f[d+36>>2]&31](d,a,i)|0;if(e>>>0>>0)break a;h=f[j>>2]|0;d=i;g=c-i|0;e=a+i|0}else{h=g;d=0;g=c;e=a}while(0);Mh(h|0,e|0,g|0)|0;f[j>>2]=(f[j>>2]|0)+g;e=d+g|0}while(0);return e|0}function qj(a,b){a=a|0;b=b|0;var c=0,d=0,e=0,g=0,h=0;h=u;u=u+16|0;d=h;e=Hh(a,d,b)|0;c=f[e>>2]|0;if(c|0){a=c;a=a+28|0;u=h;return a|0}g=Fn(40)|0;Rl(g+16|0,b);c=g+28|0;f[c>>2]=0;f[c+4>>2]=0;f[c+8>>2]=0;c=f[d>>2]|0;f[g>>2]=0;f[g+4>>2]=0;f[g+8>>2]=c;f[e>>2]=g;c=f[f[a>>2]>>2]|0;if(!c)c=g;else{f[a>>2]=c;c=f[e>>2]|0}xf(f[a+4>>2]|0,c);a=a+8|0;f[a>>2]=(f[a>>2]|0)+1;a=g;a=a+28|0;u=h;return a|0}function rj(a,b,c){a=a|0;b=b|0;c=c|0;var d=0,e=0,g=0,h=0,i=0,j=0;if((b|0)>=33)Fa(15966,15990,49,16039);if((b|0)<=0)Fa(16068,15990,50,16039);j=a+16|0;g=f[j>>2]|0;h=32-g|0;e=32-b|0;c=c<>2]|0;if((h|0)<(b|0)){g=c>>>e;e=b-h|0;f[j>>2]=e;e=g>>>e|d;f[i>>2]=e;d=a+4|0;c=f[d>>2]|0;if((c|0)==(f[a+8>>2]|0))Bj(a,i);else{f[c>>2]=e;f[d>>2]=c+4}f[i>>2]=g<<32-(f[j>>2]|0);return}e=d|c>>>g;f[i>>2]=e;b=g+b|0;f[j>>2]=b;if((b|0)!=32)return;d=a+4|0;c=f[d>>2]|0;if((c|0)==(f[a+8>>2]|0))Bj(a,i);else{f[c>>2]=e;f[d>>2]=c+4}f[i>>2]=0;f[j>>2]=0;return}function sj(a){a=a|0;var b=0,c=0,d=0,e=0,g=0,h=0;g=a+140|0;b=f[g>>2]|0;if(b|0){h=a+144|0;c=f[h>>2]|0;if((c|0)!=(b|0)){do{d=c+-12|0;f[h>>2]=d;e=f[d>>2]|0;if(!e)c=d;else{d=c+-8|0;c=f[d>>2]|0;if((c|0)!=(e|0))f[d>>2]=c+(~((c+-4-e|0)>>>2)<<2);Lq(e);c=f[h>>2]|0}}while((c|0)!=(b|0));b=f[g>>2]|0}Lq(b)}b=f[a+100>>2]|0;if(b|0){d=a+104|0;c=f[d>>2]|0;if((c|0)!=(b|0))f[d>>2]=c+(~((c+-4-b|0)>>>2)<<2);Lq(b)}b=f[a+88>>2]|0;if(!b){Gj(a);return}d=a+92|0;c=f[d>>2]|0;if((c|0)!=(b|0))f[d>>2]=c+(~((c+-4-b|0)>>>2)<<2);Lq(b);Gj(a);return}function tj(a,c,d,e){a=a|0;c=c|0;d=d|0;e=e|0;var g=0,h=0,i=0,j=0,k=0,l=0;g=a+16|0;j=g;i=f[j+4>>2]|0;if((d|0)<0|(d|0)==0&c>>>0<1|((i|0)>0|(i|0)==0&(f[j>>2]|0)>>>0>0)){a=0;return a|0}b[a+24>>0]=e&1;l=Do(c|0,d|0,7,0)|0;l=bl(l|0,I|0,8,0)|0;d=I;h=g;f[h>>2]=l;f[h+4>>2]=d;h=a+4|0;g=f[h>>2]|0;c=f[a>>2]|0;i=g-c|0;j=Do(i|0,0,8,0)|0;j=e?j:i;d=Do(j|0,(e?I:0)|0,l|0,d|0)|0;if(d>>>0<=i>>>0){if(d>>>0>>0?(k=c+d|0,(g|0)!=(k|0)):0)f[h>>2]=k}else{mj(a,d-i|0);c=f[a>>2]|0}k=Fn(8)|0;f[k>>2]=c+j;f[k+4>>2]=0;l=a+12|0;c=f[l>>2]|0;f[l>>2]=k;if(!c){l=1;return l|0}Lq(c);l=1;return l|0}function uj(a,c,d,e,g,h){a=a|0;c=c|0;d=d|0;e=e|0;g=g|0;h=h|0;var i=0,j=0;i=u;u=u+64|0;j=i;lm(j);h=f[h+56>>2]|0;c=X(Am(5)|0,e)|0;lk(j,h,0,e&255,5,0,c,((c|0)<0)<<31>>31,0,0);c=Fn(96)|0;cm(c,j);f[a>>2]=c;ck(c,d)|0;if(!g){u=i;return}b[c+84>>0]=0;d=c+68|0;a=c+72|0;e=f[a>>2]|0;c=f[d>>2]|0;h=e-c>>2;if(h>>>0>>0){_h(d,g-h|0,3200);u=i;return}if(h>>>0<=g>>>0){u=i;return}c=c+(g<<2)|0;if((e|0)==(c|0)){u=i;return}f[a>>2]=e+(~((e+-4-c|0)>>>2)<<2);u=i;return}function vj(a,b){a=a|0;b=b|0;var c=0,d=0,e=Ka;if((b|0)!=1){if(b+-1&b)b=Ya(b)|0}else b=2;d=f[a+4>>2]|0;if(b>>>0>d>>>0){ye(a,b);return}if(b>>>0>=d>>>0)return;e=$((f[a+12>>2]|0)>>>0);c=~~$(W($(e/$(n[a+16>>2]))))>>>0;if(d>>>0>2&(d+-1&d|0)==0)c=1<<32-(_(c+-1|0)|0);else c=Ya(c)|0;b=b>>>0>>0?c:b;if(b>>>0>=d>>>0)return;ye(a,b);return}function wj(a,b,c,d){a=a|0;b=b|0;c=c|0;d=d|0;var e=0,g=0,h=0;h=u;u=u+16|0;e=h;f[e>>2]=0;f[e+4>>2]=0;f[e+8>>2]=0;Ck(e,17623,15);g=ql(b,e,-1)|0;Eo(e);switch(g|0){case -1:{if(($j(b)|0)==10)g=4;else g=3;break}case 1:{g=3;break}default:g=4}if((g|0)==3){e=Fn(60)|0;To(e)}else if((g|0)==4){e=Fn(56)|0;Cp(e)}zo(e,c);td(a,e,b,d);Oa[f[(f[e>>2]|0)+4>>2]&127](e);u=h;return}function xj(a,b){a=a|0;b=b|0;var c=0,d=0,e=0,g=0;g=a+4|0;e=f[g>>2]|0;c=f[a>>2]|0;d=(e-c|0)/108|0;if(d>>>0>>0){Ne(a,b-d|0);return}if(d>>>0<=b>>>0)return;a=c+(b*108|0)|0;if((e|0)==(a|0))return;do{f[g>>2]=e+-108;c=f[e+-20>>2]|0;if(c|0){d=e+-16|0;b=f[d>>2]|0;if((b|0)!=(c|0))f[d>>2]=b+(~((b+-4-c|0)>>>2)<<2);Lq(c)}c=f[e+-32>>2]|0;if(c|0){d=e+-28|0;b=f[d>>2]|0;if((b|0)!=(c|0))f[d>>2]=b+(~((b+-4-c|0)>>>2)<<2);Lq(c)}qk(e+-104|0);e=f[g>>2]|0}while((e|0)!=(a|0));return}function yj(){var a=0,b=0,c=0,d=0,e=0,g=0,h=0,i=0;e=u;u=u+48|0;h=e+32|0;c=e+24|0;i=e+16|0;g=e;e=e+36|0;a=Cn()|0;if(a|0?(d=f[a>>2]|0,d|0):0){b=d+48|0;a=f[b>>2]|0;b=f[b+4>>2]|0;if(!((a&-256|0)==1126902528&(b|0)==1129074247)){f[c>>2]=f[1714];ao(20615,c)}if((a|0)==1126902529&(b|0)==1129074247)a=f[d+44>>2]|0;else a=d+80|0;f[e>>2]=a;d=f[d>>2]|0;a=f[d+4>>2]|0;d=Ma[f[(f[244]|0)+16>>2]&31](976,d,e)|0;b=f[1714]|0;if(d){i=f[e>>2]|0;i=Ra[f[(f[i>>2]|0)+8>>2]&127](i)|0;f[g>>2]=b;f[g+4>>2]=a;f[g+8>>2]=i;ao(20529,g)}else{f[i>>2]=b;f[i+4>>2]=a;ao(20574,i)}}ao(20653,h)}function zj(a){a=a|0;var b=0,c=0,d=0,e=0;f[a>>2]=3480;d=a+32|0;e=f[d>>2]|0;f[d>>2]=0;if(e|0){d=e+88|0;b=f[d>>2]|0;f[d>>2]=0;if(b|0){c=f[b+8>>2]|0;if(c|0){d=b+12|0;if((f[d>>2]|0)!=(c|0))f[d>>2]=c;Lq(c)}Lq(b)}b=f[e+68>>2]|0;if(b|0){d=e+72|0;c=f[d>>2]|0;if((c|0)!=(b|0))f[d>>2]=c+(~((c+-4-b|0)>>>2)<<2);Lq(b)}d=e+64|0;b=f[d>>2]|0;f[d>>2]=0;if(b|0){c=f[b>>2]|0;if(c|0){d=b+4|0;if((f[d>>2]|0)!=(c|0))f[d>>2]=c;Lq(c)}Lq(b)}Lq(e)}d=f[a+16>>2]|0;if(!d)return;c=a+20|0;b=f[c>>2]|0;if((b|0)!=(d|0))f[c>>2]=b+(~((b+-4-d|0)>>>2)<<2);Lq(d);return}function Aj(a){a=a|0;var b=0,c=0,d=0;b=f[a+92>>2]|0;if(b|0){d=a+96|0;c=f[d>>2]|0;if((c|0)!=(b|0))f[d>>2]=c+(~((c+-4-b|0)>>>2)<<2);Lq(b)}b=f[a+76>>2]|0;if(b|0){d=a+80|0;c=f[d>>2]|0;if((c|0)!=(b|0))f[d>>2]=c+(~((c+-4-b|0)>>>2)<<2);Lq(b)}b=f[a+64>>2]|0;if(b|0){d=a+68|0;c=f[d>>2]|0;if((c|0)!=(b|0))f[d>>2]=c+(~((c+-4-b|0)>>>2)<<2);Lq(b)}b=f[a+52>>2]|0;if(b|0){d=a+56|0;c=f[d>>2]|0;if((c|0)!=(b|0))f[d>>2]=c+(~((c+-4-b|0)>>>2)<<2);Lq(b)}f[a+4>>2]=5852;b=f[a+24>>2]|0;if(b|0)Lq(b);b=f[a+12>>2]|0;if(!b)return;Lq(b);return}function Bj(a,b){a=a|0;b=b|0;var c=0,d=0,e=0,g=0,h=0,i=0,j=0,k=0;k=a+4|0;d=f[k>>2]|0;c=f[a>>2]|0;e=(d-c>>2)+1|0;if(e>>>0>1073741823){zp(a);c=f[a>>2]|0;d=f[k>>2]|0}j=a+8|0;i=(f[j>>2]|0)-c|0;h=i>>1;h=i>>2>>>0<536870911?(h>>>0>>0?e:h):1073741823;e=d-c>>2;do if(h)if(h>>>0>1073741823){a=Ha(4)|0;qq(a);sa(a|0,1040,102)}else{i=Fn(h<<2)|0;break}else i=0;while(0);g=i+(e<<2)|0;f[g>>2]=f[b>>2];e=d-c|0;d=g+(0-(e>>2)<<2)|0;if((e|0)>0)Mh(d|0,c|0,e|0)|0;f[a>>2]=d;f[k>>2]=g+4;f[j>>2]=i+(h<<2);if(!c)return;Lq(c);return}function Cj(a,c,d){a=a|0;c=c|0;d=d|0;var e=0,g=0,h=0,i=0;g=u;u=u+80|0;i=g;h=g+16|0;e=g+4|0;f[i>>2]=d&1;Sn(h,7617,i)|0;f[e>>2]=0;f[e+4>>2]=0;f[e+8>>2]=0;Ck(e,h,Kk(h)|0);a=qj(a,c)|0;c=a+11|0;if((b[c>>0]|0)<0){b[f[a>>2]>>0]=0;f[a+4>>2]=0}else{b[a>>0]=0;b[c>>0]=0}ri(a,0);f[a>>2]=f[e>>2];f[a+4>>2]=f[e+4>>2];f[a+8>>2]=f[e+8>>2];f[e>>2]=0;f[e+4>>2]=0;f[e+8>>2]=0;Eo(e);u=g;return}function Dj(a,c,d){a=a|0;c=c|0;d=d|0;var e=0,g=0,h=0,i=0;g=u;u=u+80|0;i=g;h=g+16|0;e=g+4|0;f[i>>2]=d;Sn(h,7617,i)|0;f[e>>2]=0;f[e+4>>2]=0;f[e+8>>2]=0;Ck(e,h,Kk(h)|0);a=qj(a,c)|0;c=a+11|0;if((b[c>>0]|0)<0){b[f[a>>2]>>0]=0;f[a+4>>2]=0}else{b[a>>0]=0;b[c>>0]=0}ri(a,0);f[a>>2]=f[e>>2];f[a+4>>2]=f[e+4>>2];f[a+8>>2]=f[e+8>>2];f[e>>2]=0;f[e+4>>2]=0;f[e+8>>2]=0;Eo(e);u=g;return}function Ej(a,c,d){a=a|0;c=c|0;d=d|0;do if(a){if(c>>>0<128){b[a>>0]=c;a=1;break}d=(Hq()|0)+188|0;if(!(f[f[d>>2]>>2]|0))if((c&-128|0)==57216){b[a>>0]=c;a=1;break}else{a=Bq()|0;f[a>>2]=84;a=-1;break}if(c>>>0<2048){b[a>>0]=c>>>6|192;b[a+1>>0]=c&63|128;a=2;break}if(c>>>0<55296|(c&-8192|0)==57344){b[a>>0]=c>>>12|224;b[a+1>>0]=c>>>6&63|128;b[a+2>>0]=c&63|128;a=3;break}if((c+-65536|0)>>>0<1048576){b[a>>0]=c>>>18|240;b[a+1>>0]=c>>>12&63|128;b[a+2>>0]=c>>>6&63|128;b[a+3>>0]=c&63|128;a=4;break}else{a=Bq()|0;f[a>>2]=84;a=-1;break}}else a=1;while(0);return a|0}function Fj(a,c){a=a|0;c=c|0;var d=0,e=0,g=0,h=0,i=0,j=0;e=u;u=u+16|0;d=e;if(!c){a=0;u=e;return a|0}i=c+4|0;g=(f[i>>2]|0)-(f[c>>2]|0)>>2;b[d>>0]=0;Th(a,g,d);g=c+24|0;h=c+28|0;j=(f[h>>2]|0)-(f[g>>2]|0)>>2;b[d>>0]=0;Th(a+12|0,j,d);Hg(a+28|0,(f[i>>2]|0)-(f[c>>2]|0)>>2,3280);xk(a+52|0,(f[h>>2]|0)-(f[g>>2]|0)>>2);xk(a+40|0,(f[h>>2]|0)-(f[g>>2]|0)>>2);f[a+64>>2]=c;b[a+24>>0]=1;a=1;u=e;return a|0}function Gj(a){a=a|0;var b=0,c=0,d=0;d=a+80|0;c=f[d>>2]|0;f[d>>2]=0;if(c|0){d=c+-4|0;b=f[d>>2]|0;if(b|0){b=c+(b<<5)|0;do{b=b+-32|0;jk(b)}while((b|0)!=(c|0))}Jq(d)}b=f[a+68>>2]|0;if(b|0){d=a+72|0;c=f[d>>2]|0;if((c|0)!=(b|0))f[d>>2]=c+(~((c+-4-b|0)>>>2)<<2);Lq(b)}d=a+44|0;b=f[d>>2]|0;f[d>>2]=0;if(b|0)Lq(b);b=f[a+32>>2]|0;if(b|0){c=a+36|0;if((f[c>>2]|0)!=(b|0))f[c>>2]=b;Lq(b)}d=a+12|0;b=f[d>>2]|0;f[d>>2]=0;if(b|0)Lq(b);c=f[a>>2]|0;if(!c)return;b=a+4|0;if((f[b>>2]|0)!=(c|0))f[b>>2]=c;Lq(c);return}function Hj(a){a=a|0;var b=0,c=0,d=0,e=0;b=f[a+28>>2]|0;if(b|0)do{c=b;b=f[b>>2]|0;e=c+20|0;d=f[e>>2]|0;f[e>>2]=0;if(d|0){Hj(d);Lq(d)}Eo(c+8|0);Lq(c)}while((b|0)!=0);e=a+20|0;b=f[e>>2]|0;f[e>>2]=0;if(b|0)Lq(b);b=f[a+8>>2]|0;if(b|0)do{e=b;b=f[b>>2]|0;c=f[e+20>>2]|0;if(c|0){d=e+24|0;if((f[d>>2]|0)!=(c|0))f[d>>2]=c;Lq(c)}Eo(e+8|0);Lq(e)}while((b|0)!=0);b=f[a>>2]|0;f[a>>2]=0;if(!b)return;Lq(b);return}function Ij(a,b){a=a|0;b=b|0;var c=0,d=0;c=a+32|0;a=f[b>>2]|0;f[b>>2]=0;d=f[c>>2]|0;f[c>>2]=a;if(!d)return;c=d+88|0;b=f[c>>2]|0;f[c>>2]=0;if(b|0){a=f[b+8>>2]|0;if(a|0){c=b+12|0;if((f[c>>2]|0)!=(a|0))f[c>>2]=a;Lq(a)}Lq(b)}b=f[d+68>>2]|0;if(b|0){c=d+72|0;a=f[c>>2]|0;if((a|0)!=(b|0))f[c>>2]=a+(~((a+-4-b|0)>>>2)<<2);Lq(b)}c=d+64|0;b=f[c>>2]|0;f[c>>2]=0;if(b|0){a=f[b>>2]|0;if(a|0){c=b+4|0;if((f[c>>2]|0)!=(a|0))f[c>>2]=a;Lq(a)}Lq(b)}Lq(d);return}function Jj(a,b,c){a=a|0;b=b|0;c=c|0;var d=0,e=0,g=0,h=0,i=0,j=0;j=u;u=u+48|0;h=j+4|0;i=j;g=f[b+12>>2]|0;b=f[b+4>>2]|0;d=h;e=d+36|0;do{f[d>>2]=0;d=d+4|0}while((d|0)<(e|0));Kh(i,c,g,b,h);e=f[h+24>>2]|0;if(!e){i=f[i>>2]|0;f[a>>2]=i;u=j;return}d=h+28|0;b=f[d>>2]|0;if((b|0)!=(e|0))f[d>>2]=b+(~((b+-4-e|0)>>>2)<<2);Lq(e);i=f[i>>2]|0;f[a>>2]=i;u=j;return}function Kj(a,b){a=a|0;b=b|0;var c=0,d=0,e=0,g=0,h=0,i=0,j=0,k=0;j=a+8|0;g=f[a>>2]|0;d=g;if((((f[j>>2]|0)-g|0)/12|0)>>>0>=b>>>0)return;i=a+4|0;if(b>>>0>357913941){a=Ha(4)|0;qq(a);sa(a|0,1040,102)}k=f[i>>2]|0;e=Fn(b*12|0)|0;c=e+(((k-g|0)/12|0)*12|0)|0;h=c;e=e+(b*12|0)|0;b=k;if((b|0)==(d|0))c=h;else do{k=b;b=b+-12|0;f[c+-12>>2]=f[b>>2];f[c+-8>>2]=f[k+-8>>2];f[c+-4>>2]=f[k+-4>>2];c=c+-12|0}while((b|0)!=(d|0));f[a>>2]=c;f[i>>2]=h;f[j>>2]=e;if(!g)return;Lq(g);return}function Lj(a){a=a|0;var b=0,c=0,d=0,e=0;f[a>>2]=5696;c=a+72|0;b=a+136|0;d=a+4|0;e=d+64|0;do{f[d>>2]=0;d=d+4|0}while((d|0)<(e|0));d=c;e=d+64|0;do{f[d>>2]=0;d=d+4|0}while((d|0)<(e|0));n[b>>2]=$(1.0);b=a+176|0;d=a+140|0;e=d+36|0;do{f[d>>2]=0;d=d+4|0}while((d|0)<(e|0));f[b>>2]=-1;e=a+180|0;f[e>>2]=0;f[e+4>>2]=0;f[e+8>>2]=0;f[e+12>>2]=0;f[e+16>>2]=0;f[e+20>>2]=0;f[e+24>>2]=0;Pn(a+208|0);Pn(a+240|0);e=a+272|0;f[e>>2]=0;f[e+4>>2]=0;f[e+8>>2]=0;f[e+12>>2]=0;f[e+16>>2]=0;return}function Mj(a,c,d,e){a=a|0;c=c|0;d=d|0;e=e|0;var g=0,h=0,i=0,j=0,k=0,l=0,m=0;m=u;u=u+128|0;g=m+124|0;l=m;h=l;i=6344;j=h+124|0;do{f[h>>2]=f[i>>2];h=h+4|0;i=i+4|0}while((h|0)<(j|0));if((c+-1|0)>>>0>2147483646)if(!c){c=1;k=4}else{g=Bq()|0;f[g>>2]=75;g=-1}else{g=a;k=4}if((k|0)==4){k=-2-g|0;k=c>>>0>k>>>0?k:c;f[l+48>>2]=k;h=l+20|0;f[h>>2]=g;f[l+44>>2]=g;g=g+k|0;c=l+16|0;f[c>>2]=g;f[l+28>>2]=g;g=li(l,d,e)|0;if(k){d=f[h>>2]|0;b[d+(((d|0)==(f[c>>2]|0))<<31>>31)>>0]=0}}u=m;return g|0}function Nj(a,b,c){a=a|0;b=b|0;c=c|0;var d=0,e=0,g=0;if(!b){e=0;return e|0}if(f[b+4>>2]|0){e=0;return e|0}a=Fn(52)|0;Kb(a,c);f[a+40>>2]=0;f[a+44>>2]=0;f[a+48>>2]=0;d=b+4|0;e=f[d>>2]|0;f[d>>2]=a;if(!e){e=1;return e|0}a=e+40|0;b=f[a>>2]|0;if(b|0){d=e+44|0;c=f[d>>2]|0;if((c|0)!=(b|0)){do{g=c+-4|0;f[d>>2]=g;c=f[g>>2]|0;f[g>>2]=0;if(c|0){Hj(c);Lq(c)}c=f[d>>2]|0}while((c|0)!=(b|0));b=f[a>>2]|0}Lq(b)}Hj(e);Lq(e);g=1;return g|0}function Oj(a,c,d){a=a|0;c=c|0;d=d|0;var e=0,g=0,h=0,i=0,j=0,k=0;k=u;u=u+16|0;j=k;h=a+11|0;e=b[h>>0]|0;g=e<<24>>24<0;if(g)i=(f[a+8>>2]&2147483647)+-1|0;else i=10;do if(i>>>0>=d>>>0){if(g)e=f[a>>2]|0;else e=a;Ho(e,c,d)|0;b[j>>0]=0;Dp(e+d|0,j);if((b[h>>0]|0)<0){f[a+4>>2]=d;break}else{b[h>>0]=d;break}}else{if(g)e=f[a+4>>2]|0;else e=e&255;nj(a,i,d-i|0,e,0,e,d,c)}while(0);u=k;return a|0}function Pj(a,b){a=a|0;b=b|0;var c=0,d=0,e=0;c=a+4|0;if((Ra[f[(f[b>>2]|0)+20>>2]&127](b)|0)<=0){b=1;return b|0}d=0;while(1){a=f[(f[c>>2]|0)+4>>2]|0;a=Km(a,Va[f[(f[b>>2]|0)+24>>2]&127](b,d)|0)|0;if((a|0)==-1){a=0;c=6;break}e=f[(f[b>>2]|0)+28>>2]|0;a=Nl(f[c>>2]|0,a)|0;d=d+1|0;if(!(Va[e&127](b,a)|0)){a=0;c=6;break}if((d|0)>=(Ra[f[(f[b>>2]|0)+20>>2]&127](b)|0)){a=1;c=6;break}}if((c|0)==6)return a|0;return 0} +function Eb(a,b,c){a=a|0;b=b|0;c=c|0;var d=0,e=0,g=0,h=0,i=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0;a:while(1){r=b;t=b+-4|0;while(1){b:while(1){q=a;e=r-q|0;d=e>>2;switch(d|0){case 2:{s=5;break a}case 3:{s=13;break a}case 4:{s=14;break a}case 5:{s=15;break a}case 1:case 0:{s=106;break a}default:{}}if((e|0)<124){s=17;break a}p=a+(((d|0)/2|0)<<2)|0;if((e|0)>3996){d=(d|0)/4|0;d=ze(a,a+(d<<2)|0,p,p+(d<<2)|0,t,c)|0}else d=Ae(a,p,t,c)|0;j=f[a>>2]|0;l=f[p>>2]|0;h=f[c>>2]|0;g=f[h+4>>2]|0;e=f[h>>2]|0;if(g-e>>3>>>0>j>>>0){k=e;i=g}else{yp(h);o=f[c>>2]|0;k=f[h>>2]|0;e=f[o>>2]|0;i=f[o+4>>2]|0;h=o}g=f[k+(j<<3)>>2]|0;if(i-e>>3>>>0<=l>>>0){yp(h);e=f[h>>2]|0}if(g>>>0<(f[e+(l<<3)>>2]|0)>>>0){g=t;break}else g=t;while(1){g=g+-4|0;if((a|0)==(g|0))break;k=f[g>>2]|0;m=f[p>>2]|0;e=f[c>>2]|0;i=f[e+4>>2]|0;h=f[e>>2]|0;if(i-h>>3>>>0>k>>>0){l=e;j=h;e=h}else{yp(e);i=f[c>>2]|0;l=i;j=f[e>>2]|0;e=f[i>>2]|0;i=f[i+4>>2]|0}h=f[j+(k<<3)>>2]|0;if(i-e>>3>>>0<=m>>>0){yp(l);e=f[l>>2]|0}if(h>>>0<(f[e+(m<<3)>>2]|0)>>>0){s=71;break b}}d=a+4|0;j=f[a>>2]|0;l=f[t>>2]|0;h=f[c>>2]|0;g=f[h+4>>2]|0;e=f[h>>2]|0;if(g-e>>3>>>0>j>>>0){k=e;i=g}else{yp(h);q=f[c>>2]|0;k=f[h>>2]|0;e=f[q>>2]|0;i=f[q+4>>2]|0;h=q}g=f[k+(j<<3)>>2]|0;if(i-e>>3>>>0<=l>>>0){yp(h);e=f[h>>2]|0}if(g>>>0>=(f[e+(l<<3)>>2]|0)>>>0){if((d|0)==(t|0)){s=106;break a}while(1){j=f[a>>2]|0;l=f[d>>2]|0;h=f[c>>2]|0;g=f[h+4>>2]|0;e=f[h>>2]|0;if(g-e>>3>>>0>j>>>0){k=e;i=g}else{yp(h);q=f[c>>2]|0;k=f[h>>2]|0;e=f[q>>2]|0;i=f[q+4>>2]|0;h=q}g=f[k+(j<<3)>>2]|0;if(i-e>>3>>>0<=l>>>0){yp(h);e=f[h>>2]|0}if(g>>>0<(f[e+(l<<3)>>2]|0)>>>0)break;d=d+4|0;if((d|0)==(t|0)){s=106;break a}}q=f[d>>2]|0;f[d>>2]=f[t>>2];f[t>>2]=q;d=d+4|0}if((d|0)==(t|0)){s=106;break a}else l=t;while(1){while(1){h=f[a>>2]|0;k=f[d>>2]|0;i=f[c>>2]|0;g=f[i+4>>2]|0;e=f[i>>2]|0;if(g-e>>3>>>0>h>>>0)j=e;else{yp(i);q=f[c>>2]|0;j=f[i>>2]|0;e=f[q>>2]|0;g=f[q+4>>2]|0;i=q}h=f[j+(h<<3)>>2]|0;if(g-e>>3>>>0<=k>>>0){yp(i);e=f[i>>2]|0}n=d+4|0;if(h>>>0<(f[e+(k<<3)>>2]|0)>>>0){m=l;break}else d=n}do{j=f[a>>2]|0;m=m+-4|0;l=f[m>>2]|0;h=f[c>>2]|0;g=f[h+4>>2]|0;e=f[h>>2]|0;if(g-e>>3>>>0>j>>>0){k=e;i=g}else{yp(h);q=f[c>>2]|0;k=f[h>>2]|0;e=f[q>>2]|0;i=f[q+4>>2]|0;h=q}g=f[k+(j<<3)>>2]|0;if(i-e>>3>>>0<=l>>>0){yp(h);e=f[h>>2]|0}}while(g>>>0<(f[e+(l<<3)>>2]|0)>>>0);if(d>>>0>=m>>>0){a=d;continue b}l=f[d>>2]|0;f[d>>2]=f[m>>2];f[m>>2]=l;d=n;l=m}}if((s|0)==71){s=0;o=f[a>>2]|0;f[a>>2]=f[g>>2];f[g>>2]=o;d=d+1|0}e=a+4|0;c:do if(e>>>0>>0)while(1){o=e;while(1){k=f[o>>2]|0;m=f[p>>2]|0;j=f[c>>2]|0;i=f[j+4>>2]|0;e=f[j>>2]|0;if(i-e>>3>>>0>k>>>0){l=e;h=e;e=j}else{yp(j);e=f[c>>2]|0;l=f[j>>2]|0;h=f[e>>2]|0;i=f[e+4>>2]|0}j=f[l+(k<<3)>>2]|0;if(i-h>>3>>>0<=m>>>0){yp(e);h=f[e>>2]|0}e=o+4|0;if(j>>>0<(f[h+(m<<3)>>2]|0)>>>0)o=e;else{n=g;break}}do{n=n+-4|0;k=f[n>>2]|0;m=f[p>>2]|0;i=f[c>>2]|0;h=f[i+4>>2]|0;g=f[i>>2]|0;if(h-g>>3>>>0>k>>>0){l=g;j=h}else{yp(i);h=f[c>>2]|0;l=f[i>>2]|0;g=f[h>>2]|0;j=f[h+4>>2]|0;i=h}h=f[l+(k<<3)>>2]|0;if(j-g>>3>>>0<=m>>>0){yp(i);g=f[i>>2]|0}}while(h>>>0>=(f[g+(m<<3)>>2]|0)>>>0);if(o>>>0>n>>>0){n=o;m=p;break c}g=f[o>>2]|0;f[o>>2]=f[n>>2];f[n>>2]=g;g=n;p=(p|0)==(o|0)?n:p;d=d+1|0}else{n=e;m=p}while(0);if((n|0)!=(m|0)){j=f[m>>2]|0;l=f[n>>2]|0;h=f[c>>2]|0;g=f[h+4>>2]|0;e=f[h>>2]|0;if(g-e>>3>>>0>j>>>0){k=e;i=g}else{yp(h);p=f[c>>2]|0;k=f[h>>2]|0;e=f[p>>2]|0;i=f[p+4>>2]|0;h=p}g=f[k+(j<<3)>>2]|0;if(i-e>>3>>>0<=l>>>0){yp(h);e=f[h>>2]|0}if(g>>>0<(f[e+(l<<3)>>2]|0)>>>0){p=f[n>>2]|0;f[n>>2]=f[m>>2];f[m>>2]=p;d=d+1|0}}if(!d){e=Jd(a,n,c)|0;d=n+4|0;if(Jd(d,b,c)|0){s=105;break}if(e){a=d;continue}}p=n;if((p-q|0)>=(r-p|0)){s=104;break}Eb(a,n,c);a=n+4|0}if((s|0)==104){s=0;Eb(n+4|0,b,c);b=n;continue}else if((s|0)==105){s=0;if(e){s=106;break}else{b=n;continue}}}if((s|0)==5){h=f[t>>2]|0;j=f[a>>2]|0;b=f[c>>2]|0;e=f[b+4>>2]|0;d=f[b>>2]|0;if(e-d>>3>>>0>h>>>0){i=b;g=d;b=d}else{yp(b);e=f[c>>2]|0;i=e;g=f[b>>2]|0;b=f[e>>2]|0;e=f[e+4>>2]|0}d=f[g+(h<<3)>>2]|0;if(e-b>>3>>>0<=j>>>0){yp(i);b=f[i>>2]|0}if(d>>>0>=(f[b+(j<<3)>>2]|0)>>>0)return;c=f[a>>2]|0;f[a>>2]=f[t>>2];f[t>>2]=c;return}else if((s|0)==13){Ae(a,a+4|0,t,c)|0;return}else if((s|0)==14){Jf(a,a+4|0,a+8|0,t,c)|0;return}else if((s|0)==15){ze(a,a+4|0,a+8|0,a+12|0,t,c)|0;return}else if((s|0)==17){Pg(a,b,c);return}else if((s|0)==106)return}function Fb(a,b){a=a|0;b=b|0;var c=0,d=0,e=0,g=0,h=0,i=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,v=0,w=0,x=0,y=0,z=0,A=0,B=0;B=u;u=u+32|0;A=B+16|0;z=B+4|0;x=B;f[a+36>>2]=b;y=a+24|0;w=a+28|0;d=f[w>>2]|0;c=f[y>>2]|0;g=d-c>>2;if(g>>>0>=b>>>0){if(g>>>0>b>>>0?(e=c+(b<<2)|0,(d|0)!=(e|0)):0)f[w>>2]=d+(~((d+-4-e|0)>>>2)<<2)}else _h(y,b-g|0,3136);f[A>>2]=0;v=A+4|0;f[v>>2]=0;t=A+8|0;f[t>>2]=0;if(b|0){if((b|0)<0)zp(A);c=((b+-1|0)>>>5)+1|0;s=Fn(c<<2)|0;f[A>>2]=s;f[t>>2]=c;f[v>>2]=b;c=b>>>5;Xj(s|0,0,c<<2|0)|0;d=b-(c<<5)|0;c=s+(c<<2)|0;if(d|0)f[c>>2]=f[c>>2]&~(-1>>>(32-d|0))}s=a+4|0;c=(f[s>>2]|0)-(f[a>>2]|0)|0;g=c>>2;f[z>>2]=0;e=z+4|0;f[e>>2]=0;d=z+8|0;f[d>>2]=0;if(g){if((c|0)<0)zp(z);c=((g+-1|0)>>>5)+1|0;h=Fn(c<<2)|0;f[z>>2]=h;f[d>>2]=c;f[e>>2]=g;c=g>>>5;Xj(h|0,0,c<<2|0)|0;d=g-(c<<5)|0;c=h+(c<<2)|0;if(d)f[c>>2]=f[c>>2]&~(-1>>>(32-d|0))}else h=0;c=f[a>>2]|0;a:do if((f[s>>2]|0)-c>>2>>>0>2){n=a+12|0;q=a+32|0;o=a+52|0;p=a+56|0;r=a+48|0;m=0;d=b;b:while(1){l=m*3|0;if((m|0)>=0){b=f[c+(l<<2)>>2]|0;e=l+1|0;e=((e|0)%3|0|0)==0?l+-2|0:e;if((e|0)<0)g=-1073741824;else g=f[c+(e<<2)>>2]|0;e=(((l>>>0)%3|0|0)==0?2:-1)+l|0;if((e|0)<0)c=-1073741824;else c=f[c+(e<<2)>>2]|0;if((b|0)!=(g|0)?!((b|0)==(c|0)|(g|0)==(c|0)):0){k=0;do{g=k+l|0;if(!(f[h+(g>>>5<<2)>>2]&1<<(g&31))){c=f[(f[a>>2]|0)+(g<<2)>>2]|0;f[x>>2]=c;e=f[A>>2]|0;if(!(f[e+(c>>>5<<2)>>2]&1<<(c&31)))b=0;else{c=f[w>>2]|0;if((c|0)==(f[q>>2]|0))Bj(y,3136);else{f[c>>2]=-1073741824;f[w>>2]=c+4}c=f[o>>2]|0;if((c|0)==(f[p>>2]|0))Bj(r,x);else{f[c>>2]=f[x>>2];f[o>>2]=c+4}c=f[v>>2]|0;e=f[t>>2]|0;if((c|0)==(e<<5|0)){if((c+1|0)<0){zp(A);e=f[t>>2]|0}j=e<<6;c=c+32&-32;fj(A,e<<5>>>0<1073741823?(j>>>0>>0?c:j):2147483647);c=f[v>>2]|0}f[v>>2]=c+1;e=f[A>>2]|0;b=e+(c>>>5<<2)|0;f[b>>2]=f[b>>2]&~(1<<(c&31));f[x>>2]=d;c=d;b=1;d=d+1|0}j=e+(c>>>5<<2)|0;f[j>>2]=f[j>>2]|1<<(c&31);c:do if(b){c=g;while(1){if((c|0)==-1073741824){e=68;break c}h=f[z>>2]|0;e=h+(c>>>5<<2)|0;f[e>>2]=f[e>>2]|1<<(c&31);e=f[x>>2]|0;f[(f[y>>2]|0)+(e<<2)>>2]=c;f[(f[a>>2]|0)+(c<<2)>>2]=e;e=c+1|0;do if((c|0)>=0){c=((e|0)%3|0|0)==0?c+-2|0:e;if((c|0)<0)break;c=f[(f[n>>2]|0)+(c<<2)>>2]|0;e=c+1|0;if((c|0)<0)break;c=((e|0)%3|0|0)==0?c+-2|0:e}while(0);if((c|0)==(g|0)){e=67;break}}}else{c=g;while(1){if((c|0)==-1073741824){e=68;break c}h=f[z>>2]|0;e=h+(c>>>5<<2)|0;f[e>>2]=f[e>>2]|1<<(c&31);f[(f[y>>2]|0)+(f[x>>2]<<2)>>2]=c;e=c+1|0;do if((c|0)>=0){c=((e|0)%3|0|0)==0?c+-2|0:e;if((c|0)<0)break;c=f[(f[n>>2]|0)+(c<<2)>>2]|0;e=c+1|0;if((c|0)<0)break;c=((e|0)%3|0|0)==0?c+-2|0:e}while(0);if((c|0)==(g|0)){e=67;break}}}while(0);do if((e|0)==67){e=0;if((g|0)==-1073741824){c=-1073741824;e=74}}else if((e|0)==68)if((g|0)>=0){c=(((g>>>0)%3|0|0)==0?2:-1)+g|0;if((c|0)>=0){c=f[(f[n>>2]|0)+(c<<2)>>2]|0;if((c|0)<0){e=74;break}if(!((c>>>0)%3|0)){c=c+2|0;e=74;break}else{c=c+-1|0;e=74;break}}else e=74}else{c=g;e=74}while(0);d:do if((e|0)==74){h=f[z>>2]|0;g=h+(c>>>5<<2)|0;i=1<<(c&31);e=(c|0)<0;if((c|0)!=-1073741824){if(!b){b=c;c=i;while(1){if(e)break b;f[g>>2]=f[g>>2]|c;c=(((b>>>0)%3|0|0)==0?2:-1)+b|0;do if((c|0)>=0){c=f[(f[n>>2]|0)+(c<<2)>>2]|0;if((c|0)<0)break;if(!((c>>>0)%3|0)){c=c+2|0;break}else{c=c+-1|0;break}}while(0);h=f[z>>2]|0;if((c|0)==-1073741824)break d;else{b=c;g=h+(c>>>5<<2)|0;e=(c|0)<0;c=1<<(c&31)}}}j=f[a>>2]|0;b=g;h=e;e=i;while(1){g=j+(c<<2)|0;do{f[b>>2]=f[b>>2]|e;f[g>>2]=f[x>>2]}while(h);c=(((c>>>0)%3|0|0)==0?2:-1)+c|0;do if((c|0)>=0){c=f[(f[n>>2]|0)+(c<<2)>>2]|0;if((c|0)<0){e=c;break}if(!((c>>>0)%3|0)){e=c+2|0;break}else{e=c+-1|0;break}}else e=c;while(0);h=f[z>>2]|0;if((e|0)==-1073741824)break;else{c=e;b=h+(e>>>5<<2)|0;h=(e|0)<0;e=1<<(e&31)}}}}while(0)}k=k+1|0}while((k|0)<3)}}m=m+1|0;c=f[a>>2]|0;if((m|0)>=(((f[s>>2]|0)-c>>2>>>0)/3|0|0))break a}while(1){}}while(0);j=a+44|0;f[j>>2]=0;c=f[A>>2]|0;b=f[v>>2]|0;y=b>>>5;i=c+(y<<2)|0;b=b&31;e=(y|0)!=0;e:do if(y|b|0){if(!b){g=c;d=0;while(1){f:do if(e){e=0;while(1){if(!(f[g>>2]&1<>2]=d}if((e|0)==31)break;else e=e+1|0}}else{e=0;while(1){if(!(f[g>>2]&1<>2]=d}if((e|0)==31)break f;e=e+1|0;if(!e)break e}}while(0);g=g+4|0;if((g|0)==(i|0))break e;else e=1}}if(e){g=c;d=0;e=0;do{h=0;while(1){if(!(f[g>>2]&1<>2]=e;d=e}if((h|0)==31)break;else h=h+1|0}g=g+4|0}while((g|0)!=(i|0))}else{g=c;d=0}e=0;do{if(!(f[g>>2]&1<>2]=d}e=e+1|0}while((e|0)!=(b|0))}while(0);d=f[z>>2]|0;if(d){Lq(d);c=f[A>>2]|0}if(!c){u=B;return 1}Lq(c);u=B;return 1}function Gb(a,c,d,e,g,i){a=a|0;c=+c;d=d|0;e=e|0;g=g|0;i=i|0;var j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0.0,r=0,s=0,t=0,v=0,w=0,x=0,y=0,z=0,A=0,B=0,C=0,D=0,E=0,F=0,G=0;G=u;u=u+560|0;l=G+8|0;t=G;F=G+524|0;E=F;m=G+512|0;f[t>>2]=0;D=m+12|0;Ao(c)|0;if((I|0)<0){C=1;A=18265;c=-c}else{C=(g&2049|0)!=0&1;A=(g&2048|0)==0?((g&1|0)==0?18266:18271):18268}Ao(c)|0;B=I&2146435072;do if(B>>>0<2146435072|(B|0)==2146435072&0<0){q=+tq(c,t)*2.0;j=q!=0.0;if(j)f[t>>2]=(f[t>>2]|0)+-1;w=i|32;if((w|0)==97){r=i&32;p=(r|0)==0?A:A+9|0;o=C|2;j=12-e|0;do if(!(e>>>0>11|(j|0)==0)){c=8.0;do{j=j+-1|0;c=c*16.0}while((j|0)!=0);if((b[p>>0]|0)==45){c=-(c+(-q-c));break}else{c=q+c-c;break}}else c=q;while(0);k=f[t>>2]|0;j=(k|0)<0?0-k|0:k;j=el(j,((j|0)<0)<<31>>31,D)|0;if((j|0)==(D|0)){j=m+11|0;b[j>>0]=48}b[j+-1>>0]=(k>>31&2)+43;n=j+-2|0;b[n>>0]=i+15;l=(e|0)<1;m=(g&8|0)==0;k=F;while(1){C=~~c;j=k+1|0;b[k>>0]=h[18300+C>>0]|r;c=(c-+(C|0))*16.0;if((j-E|0)==1?!(m&(l&c==0.0)):0){b[j>>0]=46;j=k+2|0}if(!(c!=0.0))break;else k=j}C=j-E|0;E=D-n|0;D=(e|0)!=0&(C+-2|0)<(e|0)?e+2|0:C;j=E+o+D|0;El(a,32,d,j,g);cp(a,p,o);El(a,48,d,j,g^65536);cp(a,F,C);El(a,48,D-C|0,0,0);cp(a,n,E);El(a,32,d,j,g^8192);break}k=(e|0)<0?6:e;if(j){j=(f[t>>2]|0)+-28|0;f[t>>2]=j;c=q*268435456.0}else{j=f[t>>2]|0;c=q}B=(j|0)<0?l:l+288|0;l=B;do{y=~~c>>>0;f[l>>2]=y;l=l+4|0;c=(c-+(y>>>0))*1.0e9}while(c!=0.0);if((j|0)>0){m=B;n=l;while(1){o=(j|0)<29?j:29;j=n+-4|0;if(j>>>0>=m>>>0){l=0;do{x=Zn(f[j>>2]|0,0,o|0)|0;x=Do(x|0,I|0,l|0,0)|0;y=I;v=xn(x|0,y|0,1e9,0)|0;f[j>>2]=v;l=rp(x|0,y|0,1e9,0)|0;j=j+-4|0}while(j>>>0>=m>>>0);if(l){m=m+-4|0;f[m>>2]=l}}l=n;while(1){if(l>>>0<=m>>>0)break;j=l+-4|0;if(!(f[j>>2]|0))l=j;else break}j=(f[t>>2]|0)-o|0;f[t>>2]=j;if((j|0)>0)n=l;else break}}else m=B;if((j|0)<0){e=((k+25|0)/9|0)+1|0;s=(w|0)==102;do{r=0-j|0;r=(r|0)<9?r:9;if(m>>>0>>0){o=(1<>>r;p=0;j=m;do{y=f[j>>2]|0;f[j>>2]=(y>>>r)+p;p=X(y&o,n)|0;j=j+4|0}while(j>>>0>>0);j=(f[m>>2]|0)==0?m+4|0:m;if(!p){m=j;j=l}else{f[l>>2]=p;m=j;j=l+4|0}}else{m=(f[m>>2]|0)==0?m+4|0:m;j=l}l=s?B:m;l=(j-l>>2|0)>(e|0)?l+(e<<2)|0:j;j=(f[t>>2]|0)+r|0;f[t>>2]=j}while((j|0)<0);j=m;e=l}else{j=m;e=l}y=B;if(j>>>0>>0){l=(y-j>>2)*9|0;n=f[j>>2]|0;if(n>>>0>=10){m=10;do{m=m*10|0;l=l+1|0}while(n>>>0>=m>>>0)}}else l=0;s=(w|0)==103;v=(k|0)!=0;m=k-((w|0)!=102?l:0)+((v&s)<<31>>31)|0;if((m|0)<(((e-y>>2)*9|0)+-9|0)){n=m+9216|0;m=B+4+(((n|0)/9|0)+-1024<<2)|0;n=((n|0)%9|0)+1|0;if((n|0)<9){o=10;do{o=o*10|0;n=n+1|0}while((n|0)!=9)}else o=10;p=f[m>>2]|0;r=(p>>>0)%(o>>>0)|0;n=(m+4|0)==(e|0);if(!(n&(r|0)==0)){q=(((p>>>0)/(o>>>0)|0)&1|0)==0?9007199254740992.0:9007199254740994.0;x=(o|0)/2|0;c=r>>>0>>0?.5:n&(r|0)==(x|0)?1.0:1.5;if(C){x=(b[A>>0]|0)==45;q=x?-q:q;c=x?-c:c}n=p-r|0;f[m>>2]=n;if(q+c!=q){x=n+o|0;f[m>>2]=x;if(x>>>0>999999999){l=m;while(1){m=l+-4|0;f[l>>2]=0;if(m>>>0>>0){j=j+-4|0;f[j>>2]=0}x=(f[m>>2]|0)+1|0;f[m>>2]=x;if(x>>>0>999999999)l=m;else break}}l=(y-j>>2)*9|0;o=f[j>>2]|0;if(o>>>0>=10){n=10;do{n=n*10|0;l=l+1|0}while(o>>>0>=n>>>0)}}}w=m+4|0;x=j;j=e>>>0>w>>>0?w:e}else{x=j;j=e}w=j;while(1){if(w>>>0<=x>>>0){t=0;break}j=w+-4|0;if(!(f[j>>2]|0))w=j;else{t=1;break}}e=0-l|0;do if(s){j=((v^1)&1)+k|0;if((j|0)>(l|0)&(l|0)>-5){k=j+-1-l|0;n=i+-1|0}else{k=j+-1|0;n=i+-2|0}j=g&8;if(!j){if(t?(z=f[w+-4>>2]|0,(z|0)!=0):0)if(!((z>>>0)%10|0)){j=10;m=0;do{j=j*10|0;m=m+1|0}while(!((z>>>0)%(j>>>0)|0|0))}else m=0;else m=9;j=((w-y>>2)*9|0)+-9|0;if((n|32|0)==102){i=j-m|0;i=(i|0)>0?i:0;r=0;k=(k|0)<(i|0)?k:i;break}else{i=j+l-m|0;i=(i|0)>0?i:0;r=0;k=(k|0)<(i|0)?k:i;break}}else r=j}else{r=g&8;n=i}while(0);s=k|r;o=(s|0)!=0&1;p=(n|32|0)==102;if(p){v=0;j=(l|0)>0?l:0}else{j=(l|0)<0?e:l;j=el(j,((j|0)<0)<<31>>31,D)|0;m=D;if((m-j|0)<2)do{j=j+-1|0;b[j>>0]=48}while((m-j|0)<2);b[j+-1>>0]=(l>>31&2)+43;j=j+-2|0;b[j>>0]=n;v=j;j=m-j|0}j=C+1+k+o+j|0;El(a,32,d,j,g);cp(a,A,C);El(a,48,d,j,g^65536);if(p){o=x>>>0>B>>>0?B:x;r=F+9|0;p=r;n=F+8|0;m=o;do{l=el(f[m>>2]|0,0,r)|0;if((m|0)==(o|0)){if((l|0)==(r|0)){b[n>>0]=48;l=n}}else if(l>>>0>F>>>0){Xj(F|0,48,l-E|0)|0;do l=l+-1|0;while(l>>>0>F>>>0)}cp(a,l,p-l|0);m=m+4|0}while(m>>>0<=B>>>0);if(s|0)cp(a,18316,1);if(m>>>0>>0&(k|0)>0)while(1){l=el(f[m>>2]|0,0,r)|0;if(l>>>0>F>>>0){Xj(F|0,48,l-E|0)|0;do l=l+-1|0;while(l>>>0>F>>>0)}cp(a,l,(k|0)<9?k:9);m=m+4|0;l=k+-9|0;if(!(m>>>0>>0&(k|0)>9)){k=l;break}else k=l}El(a,48,k+9|0,9,0)}else{t=t?w:x+4|0;if((k|0)>-1){s=F+9|0;e=(r|0)==0;r=s;n=0-E|0;p=F+8|0;o=x;do{l=el(f[o>>2]|0,0,s)|0;if((l|0)==(s|0)){b[p>>0]=48;l=p}do if((o|0)==(x|0)){m=l+1|0;cp(a,l,1);if(e&(k|0)<1){l=m;break}cp(a,18316,1);l=m}else{if(l>>>0<=F>>>0)break;Xj(F|0,48,l+n|0)|0;do l=l+-1|0;while(l>>>0>F>>>0)}while(0);E=r-l|0;cp(a,l,(k|0)>(E|0)?E:k);k=k-E|0;o=o+4|0}while(o>>>0>>0&(k|0)>-1)}El(a,48,k+18|0,18,0);cp(a,v,D-v|0)}El(a,32,d,j,g^8192)}else{F=(i&32|0)!=0;j=C+3|0;El(a,32,d,j,g&-65537);cp(a,A,C);cp(a,c!=c|0.0!=0.0?(F?18292:18296):F?18284:18288,3);El(a,32,d,j,g^8192)}while(0);u=G;return ((j|0)<(d|0)?d:j)|0}function Hb(a,c,e,g,h){a=a|0;c=c|0;e=e|0;g=g|0;h=h|0;var i=0,j=0,k=0,l=0,m=0,n=0,o=0,q=0,r=0,s=0,t=0,v=0,w=0,x=0,y=0,z=0,A=0,B=0,C=0,D=0,E=0,F=0,G=0;G=u;u=u+64|0;C=G+16|0;z=G;y=G+24|0;F=G+8|0;B=G+20|0;f[C>>2]=c;E=(a|0)!=0;x=y+40|0;D=x;y=y+39|0;A=F+4|0;o=c;c=0;i=0;l=0;a:while(1){do if((c|0)>-1)if((i|0)>(2147483647-c|0)){c=Bq()|0;f[c>>2]=75;c=-1;break}else{c=i+c|0;break}while(0);i=b[o>>0]|0;if(!(i<<24>>24)){w=87;break}else j=o;b:while(1){switch(i<<24>>24){case 37:{i=j;w=9;break b}case 0:{i=j;break b}default:{}}v=j+1|0;f[C>>2]=v;i=b[v>>0]|0;j=v}c:do if((w|0)==9)while(1){w=0;if((b[i+1>>0]|0)!=37)break c;j=j+1|0;i=i+2|0;f[C>>2]=i;if((b[i>>0]|0)==37)w=9;else break}while(0);j=j-o|0;if(E)cp(a,o,j);if(j|0){o=i;i=j;continue}k=i+1|0;j=(b[k>>0]|0)+-48|0;if(j>>>0<10){v=(b[i+2>>0]|0)==36;r=v?j:-1;n=v?1:l;k=v?i+3|0:k}else{r=-1;n=l}f[C>>2]=k;i=b[k>>0]|0;j=(i<<24>>24)+-32|0;d:do if(j>>>0<32){l=0;while(1){j=1<>2]=k;i=b[k>>0]|0;j=(i<<24>>24)+-32|0;if(j>>>0>=32){m=l;break}}}else m=0;while(0);if(i<<24>>24==42){j=k+1|0;i=(b[j>>0]|0)+-48|0;if(i>>>0<10?(b[k+2>>0]|0)==36:0){f[h+(i<<2)>>2]=10;l=1;i=k+3|0;j=f[g+((b[j>>0]|0)+-48<<3)>>2]|0}else{if(n|0){c=-1;break}if(E){l=(f[e>>2]|0)+(4-1)&~(4-1);v=f[l>>2]|0;f[e>>2]=l+4;l=0;i=j;j=v}else{l=0;i=j;j=0}}f[C>>2]=i;t=(j|0)<0;q=t?m|8192:m;v=l;t=t?0-j|0:j}else{j=Pm(C)|0;if((j|0)<0){c=-1;break}i=f[C>>2]|0;q=m;v=n;t=j}do if((b[i>>0]|0)==46){if((b[i+1>>0]|0)!=42){f[C>>2]=i+1;m=Pm(C)|0;i=f[C>>2]|0;break}k=i+2|0;j=(b[k>>0]|0)+-48|0;if(j>>>0<10?(b[i+3>>0]|0)==36:0){f[h+(j<<2)>>2]=10;m=f[g+((b[k>>0]|0)+-48<<3)>>2]|0;i=i+4|0;f[C>>2]=i;break}if(v|0){c=-1;break a}if(E){s=(f[e>>2]|0)+(4-1)&~(4-1);j=f[s>>2]|0;f[e>>2]=s+4}else j=0;f[C>>2]=k;i=k;m=j}else m=-1;while(0);n=0;while(1){if(((b[i>>0]|0)+-65|0)>>>0>57){c=-1;break a}s=i+1|0;f[C>>2]=s;j=b[(b[i>>0]|0)+-65+(17784+(n*58|0))>>0]|0;l=j&255;if((l+-1|0)>>>0<8){i=s;n=l}else break}if(!(j<<24>>24)){c=-1;break}k=(r|0)>-1;do if(j<<24>>24==19)if(k){c=-1;break a}else w=49;else{if(k){f[h+(r<<2)>>2]=l;l=g+(r<<3)|0;r=f[l+4>>2]|0;w=z;f[w>>2]=f[l>>2];f[w+4>>2]=r;w=49;break}if(!E){c=0;break a}Pf(z,l,e)}while(0);if((w|0)==49?(w=0,!E):0){o=s;i=0;l=v;continue}l=b[i>>0]|0;l=(n|0)!=0&(l&15|0)==3?l&-33:l;j=q&-65537;r=(q&8192|0)==0?q:j;e:do switch(l|0){case 110:switch((n&255)<<24>>24){case 0:{f[f[z>>2]>>2]=c;o=s;i=0;l=v;continue a}case 1:{f[f[z>>2]>>2]=c;o=s;i=0;l=v;continue a}case 2:{o=f[z>>2]|0;f[o>>2]=c;f[o+4>>2]=((c|0)<0)<<31>>31;o=s;i=0;l=v;continue a}case 3:{d[f[z>>2]>>1]=c;o=s;i=0;l=v;continue a}case 4:{b[f[z>>2]>>0]=c;o=s;i=0;l=v;continue a}case 6:{f[f[z>>2]>>2]=c;o=s;i=0;l=v;continue a}case 7:{o=f[z>>2]|0;f[o>>2]=c;f[o+4>>2]=((c|0)<0)<<31>>31;o=s;i=0;l=v;continue a}default:{o=s;i=0;l=v;continue a}}case 112:{i=r|8;j=m>>>0>8?m:8;l=120;w=61;break}case 88:case 120:{i=r;j=m;w=61;break}case 111:{q=z;o=f[q>>2]|0;q=f[q+4>>2]|0;n=kn(o,q,x)|0;j=D-n|0;i=r;j=(r&8|0)==0|(m|0)>(j|0)?m:j+1|0;k=0;m=18248;w=67;break}case 105:case 100:{j=z;i=f[j>>2]|0;j=f[j+4>>2]|0;if((j|0)<0){i=Bo(0,0,i|0,j|0)|0;j=I;k=z;f[k>>2]=i;f[k+4>>2]=j;k=1;l=18248;w=66;break e}else{k=(r&2049|0)!=0&1;l=(r&2048|0)==0?((r&1|0)==0?18248:18250):18249;w=66;break e}}case 117:{j=z;i=f[j>>2]|0;j=f[j+4>>2]|0;k=0;l=18248;w=66;break}case 99:{b[y>>0]=f[z>>2];o=y;n=j;l=1;k=0;j=18248;i=x;break}case 109:{i=Bq()|0;i=hp(f[i>>2]|0)|0;w=71;break}case 115:{i=f[z>>2]|0;i=i|0?i:18258;w=71;break}case 67:{f[F>>2]=f[z>>2];f[A>>2]=0;f[z>>2]=F;i=F;m=-1;w=75;break}case 83:{i=f[z>>2]|0;if(!m){El(a,32,t,0,r);i=0;w=84}else w=75;break}case 65:case 71:case 70:case 69:case 97:case 103:case 102:case 101:{o=s;i=Gb(a,+p[z>>3],t,m,r,l)|0;l=v;continue a}default:{n=r;l=m;k=0;j=18248;i=x}}while(0);f:do if((w|0)==61){q=z;o=f[q>>2]|0;q=f[q+4>>2]|0;n=Tm(o,q,x,l&32)|0;m=(i&8|0)==0|(o|0)==0&(q|0)==0;k=m?0:2;m=m?18248:18248+(l>>4)|0;w=67}else if((w|0)==66){o=i;q=j;n=el(i,j,x)|0;i=r;j=m;m=l;w=67}else if((w|0)==71){w=0;r=bj(i,0,m)|0;q=(r|0)==0;o=i;n=j;l=q?m:r-i|0;k=0;j=18248;i=q?i+m|0:r}else if((w|0)==75){w=0;k=0;j=0;n=i;while(1){l=f[n>>2]|0;if(!l)break;j=gp(B,l)|0;if((j|0)<0|j>>>0>(m-k|0)>>>0)break;k=j+k|0;if(m>>>0>k>>>0)n=n+4|0;else break}if((j|0)<0){c=-1;break a}El(a,32,t,k,r);if(!k){i=0;w=84}else{l=0;while(1){j=f[i>>2]|0;if(!j){i=k;w=84;break f}j=gp(B,j)|0;l=j+l|0;if((l|0)>(k|0)){i=k;w=84;break f}cp(a,B,j);if(l>>>0>=k>>>0){i=k;w=84;break}else i=i+4|0}}}while(0);if((w|0)==67){w=0;l=(o|0)!=0|(q|0)!=0;r=(j|0)!=0|l;l=((l^1)&1)+(D-n)|0;o=r?n:x;n=(j|0)>-1?i&-65537:i;l=r?((j|0)>(l|0)?j:l):j;j=m;i=x}else if((w|0)==84){w=0;El(a,32,t,i,r^8192);o=s;i=(t|0)>(i|0)?t:i;l=v;continue}r=i-o|0;q=(l|0)<(r|0)?r:l;l=q+k|0;i=(t|0)<(l|0)?l:t;El(a,32,i,l,n);cp(a,j,k);El(a,48,i,l,n^65536);El(a,48,q,r,0);cp(a,o,r);El(a,32,i,l,n^8192);o=s;l=v}g:do if((w|0)==87)if(!a)if(!l)c=0;else{c=1;while(1){i=f[h+(c<<2)>>2]|0;if(!i)break;Pf(g+(c<<3)|0,i,e);c=c+1|0;if((c|0)>=10){c=1;break g}}while(1){if(f[h+(c<<2)>>2]|0){c=-1;break g}c=c+1|0;if((c|0)>=10){c=1;break}}}while(0);u=G;return c|0}function Ib(a,b,c,d){a=a|0;b=b|0;c=c|0;d=d|0;var e=0,g=0,h=0,i=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,v=0,w=0,x=0,y=0,z=0,A=0,B=0,C=0,D=0,E=0,F=0,G=0,H=0,J=0;D=u;u=u+80|0;z=D+48|0;r=D+24|0;s=D;g=a+32|0;e=f[b>>2]|0;b=e+1|0;if((e|0)>=0){b=((b|0)%3|0|0)==0?e+-2|0:b;e=(((e>>>0)%3|0|0)==0?2:-1)+e|0;if((b|0)<0)b=-1073741824;else b=f[(f[f[g>>2]>>2]|0)+(b<<2)>>2]|0;if((e|0)<0){k=b;l=-1073741824}else{k=b;l=f[(f[f[g>>2]>>2]|0)+(e<<2)>>2]|0}}else{k=-1073741824;l=-1073741824}b=a+36|0;i=f[b>>2]|0;e=f[i+4>>2]|0;j=f[i>>2]|0;if(e-j>>2>>>0>k>>>0){b=j;g=e;h=i;e=j}else{yp(i);h=f[b>>2]|0;b=f[h>>2]|0;g=f[h+4>>2]|0;e=f[i>>2]|0}t=f[e+(k<<2)>>2]|0;if(g-b>>2>>>0<=l>>>0){yp(h);b=f[h>>2]|0}b=f[b+(l<<2)>>2]|0;m=(t|0)<(d|0);do if(m&(b|0)<(d|0)){p=t<<1;n=f[c+(p<<2)>>2]|0;o=((n|0)<0)<<31>>31;p=f[c+((p|1)<<2)>>2]|0;q=((p|0)<0)<<31>>31;l=b<<1;k=f[c+(l<<2)>>2]|0;l=f[c+((l|1)<<2)>>2]|0;if(!((k|0)!=(n|0)|(l|0)!=(p|0))){f[a+8>>2]=n;f[a+12>>2]=p;u=D;return}Qh(z,a,d);Qh(r,a,t);Qh(s,a,b);v=s;h=r;g=f[h>>2]|0;h=f[h+4>>2]|0;v=Bo(f[v>>2]|0,f[v+4>>2]|0,g|0,h|0)|0;w=I;x=s+8|0;j=r+8|0;i=f[j>>2]|0;j=f[j+4>>2]|0;x=Bo(f[x>>2]|0,f[x+4>>2]|0,i|0,j|0)|0;y=I;s=s+16|0;e=r+16|0;b=f[e>>2]|0;e=f[e+4>>2]|0;r=Bo(f[s>>2]|0,f[s+4>>2]|0,b|0,e|0)|0;s=I;B=En(v|0,w|0,v|0,w|0)|0;E=I;A=En(x|0,y|0,x|0,y|0)|0;E=Do(A|0,I|0,B|0,E|0)|0;B=I;A=En(r|0,s|0,r|0,s|0)|0;A=Do(E|0,B|0,A|0,I|0)|0;B=I;if((A|0)==0&(B|0)==0)break;J=z;J=Bo(f[J>>2]|0,f[J+4>>2]|0,g|0,h|0)|0;H=I;G=z+8|0;G=Bo(f[G>>2]|0,f[G+4>>2]|0,i|0,j|0)|0;F=I;g=z+16|0;g=Bo(f[g>>2]|0,f[g+4>>2]|0,b|0,e|0)|0;h=I;E=En(J|0,H|0,v|0,w|0)|0;b=I;j=En(G|0,F|0,x|0,y|0)|0;b=Do(j|0,I|0,E|0,b|0)|0;E=I;j=En(g|0,h|0,r|0,s|0)|0;j=Do(b|0,E|0,j|0,I|0)|0;E=I;b=Bo(k|0,((k|0)<0)<<31>>31|0,n|0,o|0)|0;k=I;t=Bo(l|0,((l|0)<0)<<31>>31|0,p|0,q|0)|0;z=I;n=En(A|0,B|0,n|0,o|0)|0;m=I;p=En(A|0,B|0,p|0,q|0)|0;o=I;e=En(j|0,E|0,b|0,k|0)|0;q=I;i=En(j|0,E|0,t|0,z|0)|0;l=I;m=Do(e|0,q|0,n|0,m|0)|0;n=I;o=Do(i|0,l|0,p|0,o|0)|0;p=I;l=En(j|0,E|0,v|0,w|0)|0;i=I;x=En(j|0,E|0,x|0,y|0)|0;y=I;E=En(j|0,E|0,r|0,s|0)|0;j=I;i=bl(l|0,i|0,A|0,B|0)|0;l=I;y=bl(x|0,y|0,A|0,B|0)|0;x=I;j=bl(E|0,j|0,A|0,B|0)|0;E=I;l=Bo(J|0,H|0,i|0,l|0)|0;i=I;x=Bo(G|0,F|0,y|0,x|0)|0;y=I;E=Bo(g|0,h|0,j|0,E|0)|0;j=I;i=En(l|0,i|0,l|0,i|0)|0;l=I;y=En(x|0,y|0,x|0,y|0)|0;l=Do(y|0,I|0,i|0,l|0)|0;i=I;j=En(E|0,j|0,E|0,j|0)|0;j=Do(l|0,i|0,j|0,I|0)|0;i=I;k=Bo(0,0,b|0,k|0)|0;l=I;i=En(j|0,i|0,A|0,B|0)|0;j=I;b=j&2147483647;switch(i|0){case 0:{if(!b){e=0;b=0}else{e=1;b=0;g=i;h=j;C=19}break}case 1:{if(!b){e=1;b=0;C=20}else{e=1;b=0;g=i;h=j;C=19}break}default:{e=1;b=0;g=i;h=j;C=19}}if((C|0)==19)while(1){e=Zn(e|0,b|0,1)|0;b=I;J=g;g=co(g|0,h|0,2)|0;if(!(h>>>0>0|(h|0)==0&J>>>0>7)){C=20;break}else{h=I;C=19}}if((C|0)==20)while(1){J=rp(i|0,j|0,e|0,b|0)|0;e=Do(J|0,I|0,e|0,b|0)|0;e=co(e|0,I|0,1)|0;b=I;J=En(e|0,b|0,e|0,b|0)|0;H=I;if(H>>>0>j>>>0|(H|0)==(j|0)&J>>>0>i>>>0)C=20;else break}i=En(e|0,b|0,t|0,z|0)|0;J=I;g=En(e|0,b|0,k|0,l|0)|0;k=I;H=Do(i|0,J|0,m|0,n|0)|0;e=I;j=Do(g|0,k|0,o|0,p|0)|0;b=I;e=bl(H|0,e|0,A|0,B|0)|0;H=I;b=bl(j|0,b|0,A|0,B|0)|0;j=I;J=Bo(m|0,n|0,i|0,J|0)|0;n=I;k=Bo(o|0,p|0,g|0,k|0)|0;m=I;n=bl(J|0,n|0,A|0,B|0)|0;J=I;m=bl(k|0,m|0,A|0,B|0)|0;k=I;g=d<<1;i=f[c+(g<<2)>>2]|0;G=((i|0)<0)<<31>>31;g=f[c+((g|1)<<2)>>2]|0;l=((g|0)<0)<<31>>31;H=Bo(i|0,G|0,e|0,H|0)|0;F=I;j=Bo(g|0,l|0,b|0,j|0)|0;h=I;F=En(H|0,F|0,H|0,F|0)|0;H=I;h=En(j|0,h|0,j|0,h|0)|0;H=Do(h|0,I|0,F|0,H|0)|0;F=I;J=Bo(i|0,G|0,n|0,J|0)|0;G=I;k=Bo(g|0,l|0,m|0,k|0)|0;l=I;G=En(J|0,G|0,J|0,G|0)|0;J=I;l=En(k|0,l|0,k|0,l|0)|0;J=Do(l|0,I|0,G|0,J|0)|0;G=I;l=a+16|0;k=a+20|0;g=f[k>>2]|0;i=a+24|0;h=f[i>>2]|0;j=(g|0)==(h<<5|0);if(F>>>0>>0|(F|0)==(G|0)&H>>>0>>0){if(j){if((g+1|0)<0){zp(l);h=f[i>>2]|0}J=h<<6;g=g+32&-32;fj(l,h<<5>>>0<1073741823?(J>>>0>>0?g:J):2147483647);g=f[k>>2]|0}f[k>>2]=g+1;J=(f[l>>2]|0)+(g>>>5<<2)|0;f[J>>2]=f[J>>2]|1<<(g&31)}else{if(j){if((g+1|0)<0){zp(l);h=f[i>>2]|0}J=h<<6;g=g+32&-32;fj(l,h<<5>>>0<1073741823?(J>>>0>>0?g:J):2147483647);g=f[k>>2]|0}f[k>>2]=g+1;e=(f[l>>2]|0)+(g>>>5<<2)|0;f[e>>2]=f[e>>2]&~(1<<(g&31));e=n;b=m}f[a+8>>2]=e;f[a+12>>2]=b;u=D;return}while(0);do if(m)b=t<<1;else{if((d|0)>0){b=(d<<1)+-2|0;break}J=a+8|0;f[J>>2]=0;f[J+4>>2]=0;u=D;return}while(0);f[a+8>>2]=f[c+(b<<2)>>2];f[a+12>>2]=f[c+(b+1<<2)>>2];u=D;return}function Jb(a,b,c,d){a=a|0;b=b|0;c=c|0;d=d|0;var e=0,g=0,h=0,i=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,v=0,w=0,x=0,y=0,z=0,A=0,B=0,C=0,D=0,E=0,F=0,G=0,H=0,J=0;D=u;u=u+80|0;z=D+48|0;r=D+24|0;s=D;g=a+32|0;e=f[b>>2]|0;b=e+1|0;do if((e|0)>=0){b=((b|0)%3|0|0)==0?e+-2|0:b;if(!((e>>>0)%3|0)){e=e+2|0;break}else{e=e+-1|0;break}}else b=e;while(0);l=f[(f[g>>2]|0)+28>>2]|0;k=f[l+(b<<2)>>2]|0;l=f[l+(e<<2)>>2]|0;e=a+36|0;g=f[e>>2]|0;b=f[g+4>>2]|0;j=f[g>>2]|0;if(b-j>>2>>>0>k>>>0){h=b;i=g;e=j;b=j}else{yp(g);b=f[e>>2]|0;h=f[b+4>>2]|0;i=b;e=f[g>>2]|0;b=f[b>>2]|0}y=f[e+(k<<2)>>2]|0;if(h-b>>2>>>0<=l>>>0){yp(i);b=f[i>>2]|0}b=f[b+(l<<2)>>2]|0;m=(y|0)<(d|0);do if(m&(b|0)<(d|0)){p=y<<1;n=f[c+(p<<2)>>2]|0;o=((n|0)<0)<<31>>31;p=f[c+((p|1)<<2)>>2]|0;q=((p|0)<0)<<31>>31;l=b<<1;k=f[c+(l<<2)>>2]|0;l=f[c+((l|1)<<2)>>2]|0;if(!((k|0)!=(n|0)|(l|0)!=(p|0))){f[a+8>>2]=n;f[a+12>>2]=p;u=D;return}Qh(z,a,d);Qh(r,a,y);Qh(s,a,b);t=s;h=r;g=f[h>>2]|0;h=f[h+4>>2]|0;t=Bo(f[t>>2]|0,f[t+4>>2]|0,g|0,h|0)|0;v=I;w=s+8|0;j=r+8|0;i=f[j>>2]|0;j=f[j+4>>2]|0;w=Bo(f[w>>2]|0,f[w+4>>2]|0,i|0,j|0)|0;x=I;s=s+16|0;e=r+16|0;b=f[e>>2]|0;e=f[e+4>>2]|0;r=Bo(f[s>>2]|0,f[s+4>>2]|0,b|0,e|0)|0;s=I;B=En(t|0,v|0,t|0,v|0)|0;E=I;A=En(w|0,x|0,w|0,x|0)|0;E=Do(A|0,I|0,B|0,E|0)|0;B=I;A=En(r|0,s|0,r|0,s|0)|0;A=Do(E|0,B|0,A|0,I|0)|0;B=I;if((A|0)==0&(B|0)==0)break;J=z;J=Bo(f[J>>2]|0,f[J+4>>2]|0,g|0,h|0)|0;H=I;G=z+8|0;G=Bo(f[G>>2]|0,f[G+4>>2]|0,i|0,j|0)|0;F=I;g=z+16|0;g=Bo(f[g>>2]|0,f[g+4>>2]|0,b|0,e|0)|0;h=I;E=En(J|0,H|0,t|0,v|0)|0;b=I;j=En(G|0,F|0,w|0,x|0)|0;b=Do(j|0,I|0,E|0,b|0)|0;E=I;j=En(g|0,h|0,r|0,s|0)|0;j=Do(b|0,E|0,j|0,I|0)|0;E=I;b=Bo(k|0,((k|0)<0)<<31>>31|0,n|0,o|0)|0;k=I;y=Bo(l|0,((l|0)<0)<<31>>31|0,p|0,q|0)|0;z=I;n=En(A|0,B|0,n|0,o|0)|0;m=I;p=En(A|0,B|0,p|0,q|0)|0;o=I;e=En(j|0,E|0,b|0,k|0)|0;q=I;i=En(j|0,E|0,y|0,z|0)|0;l=I;m=Do(e|0,q|0,n|0,m|0)|0;n=I;o=Do(i|0,l|0,p|0,o|0)|0;p=I;l=En(j|0,E|0,t|0,v|0)|0;i=I;w=En(j|0,E|0,w|0,x|0)|0;x=I;E=En(j|0,E|0,r|0,s|0)|0;j=I;i=bl(l|0,i|0,A|0,B|0)|0;l=I;x=bl(w|0,x|0,A|0,B|0)|0;w=I;j=bl(E|0,j|0,A|0,B|0)|0;E=I;l=Bo(J|0,H|0,i|0,l|0)|0;i=I;w=Bo(G|0,F|0,x|0,w|0)|0;x=I;E=Bo(g|0,h|0,j|0,E|0)|0;j=I;i=En(l|0,i|0,l|0,i|0)|0;l=I;x=En(w|0,x|0,w|0,x|0)|0;l=Do(x|0,I|0,i|0,l|0)|0;i=I;j=En(E|0,j|0,E|0,j|0)|0;j=Do(l|0,i|0,j|0,I|0)|0;i=I;k=Bo(0,0,b|0,k|0)|0;l=I;i=En(j|0,i|0,A|0,B|0)|0;j=I;b=j&2147483647;switch(i|0){case 0:{if(!b){e=0;b=0}else{e=1;b=0;g=i;h=j;C=18}break}case 1:{if(!b){e=1;b=0;C=19}else{e=1;b=0;g=i;h=j;C=18}break}default:{e=1;b=0;g=i;h=j;C=18}}if((C|0)==18)while(1){e=Zn(e|0,b|0,1)|0;b=I;J=g;g=co(g|0,h|0,2)|0;if(!(h>>>0>0|(h|0)==0&J>>>0>7)){C=19;break}else{h=I;C=18}}if((C|0)==19)while(1){J=rp(i|0,j|0,e|0,b|0)|0;e=Do(J|0,I|0,e|0,b|0)|0;e=co(e|0,I|0,1)|0;b=I;J=En(e|0,b|0,e|0,b|0)|0;H=I;if(H>>>0>j>>>0|(H|0)==(j|0)&J>>>0>i>>>0)C=19;else break}i=En(e|0,b|0,y|0,z|0)|0;J=I;g=En(e|0,b|0,k|0,l|0)|0;k=I;H=Do(i|0,J|0,m|0,n|0)|0;e=I;j=Do(g|0,k|0,o|0,p|0)|0;b=I;e=bl(H|0,e|0,A|0,B|0)|0;H=I;b=bl(j|0,b|0,A|0,B|0)|0;j=I;J=Bo(m|0,n|0,i|0,J|0)|0;n=I;k=Bo(o|0,p|0,g|0,k|0)|0;m=I;n=bl(J|0,n|0,A|0,B|0)|0;J=I;m=bl(k|0,m|0,A|0,B|0)|0;k=I;g=d<<1;i=f[c+(g<<2)>>2]|0;G=((i|0)<0)<<31>>31;g=f[c+((g|1)<<2)>>2]|0;l=((g|0)<0)<<31>>31;H=Bo(i|0,G|0,e|0,H|0)|0;F=I;j=Bo(g|0,l|0,b|0,j|0)|0;h=I;F=En(H|0,F|0,H|0,F|0)|0;H=I;h=En(j|0,h|0,j|0,h|0)|0;H=Do(h|0,I|0,F|0,H|0)|0;F=I;J=Bo(i|0,G|0,n|0,J|0)|0;G=I;k=Bo(g|0,l|0,m|0,k|0)|0;l=I;G=En(J|0,G|0,J|0,G|0)|0;J=I;l=En(k|0,l|0,k|0,l|0)|0;J=Do(l|0,I|0,G|0,J|0)|0;G=I;l=a+16|0;k=a+20|0;g=f[k>>2]|0;i=a+24|0;h=f[i>>2]|0;j=(g|0)==(h<<5|0);if(F>>>0>>0|(F|0)==(G|0)&H>>>0>>0){if(j){if((g+1|0)<0){zp(l);h=f[i>>2]|0}J=h<<6;g=g+32&-32;fj(l,h<<5>>>0<1073741823?(J>>>0>>0?g:J):2147483647);g=f[k>>2]|0}f[k>>2]=g+1;J=(f[l>>2]|0)+(g>>>5<<2)|0;f[J>>2]=f[J>>2]|1<<(g&31)}else{if(j){if((g+1|0)<0){zp(l);h=f[i>>2]|0}J=h<<6;g=g+32&-32;fj(l,h<<5>>>0<1073741823?(J>>>0>>0?g:J):2147483647);g=f[k>>2]|0}f[k>>2]=g+1;e=(f[l>>2]|0)+(g>>>5<<2)|0;f[e>>2]=f[e>>2]&~(1<<(g&31));e=n;b=m}f[a+8>>2]=e;f[a+12>>2]=b;u=D;return}while(0);do if(m)b=y<<1;else{if((d|0)>0){b=(d<<1)+-2|0;break}J=a+8|0;f[J>>2]=0;f[J+4>>2]=0;u=D;return}while(0);f[a+8>>2]=f[c+(b<<2)>>2];f[a+12>>2]=f[c+(b+1<<2)>>2];u=D;return}function Kb(a,c){a=a|0;c=c|0;var d=0,e=0,g=0,i=0,j=0,k=0,l=Ka,m=Ka,o=0,p=0,q=0,r=0,s=0,t=0,v=0,w=0,x=0,y=0,z=0,A=0,B=0,C=0,D=0,E=0,F=0,G=Ka;F=u;u=u+16|0;B=F;x=a+16|0;f[a>>2]=0;f[a+4>>2]=0;f[a+8>>2]=0;f[a+12>>2]=0;n[x>>2]=$(1.0);E=a+20|0;f[E>>2]=0;f[E+4>>2]=0;f[E+8>>2]=0;f[E+12>>2]=0;n[a+36>>2]=$(1.0);d=f[c+8>>2]|0;a:do if(d|0){z=a+4|0;A=a+12|0;y=a+8|0;e=d;w=d;while(1){v=e+8|0;s=b[v+11>>0]|0;r=s<<24>>24<0;t=r?f[v>>2]|0:v;s=r?f[e+12>>2]|0:s&255;if(s>>>0>3){e=t;d=s;g=s;while(1){r=X(h[e>>0]|h[e+1>>0]<<8|h[e+2>>0]<<16|h[e+3>>0]<<24,1540483477)|0;d=(X(r>>>24^r,1540483477)|0)^(X(d,1540483477)|0);g=g+-4|0;if(g>>>0<=3)break;else e=e+4|0}r=s+-4|0;e=r&-4;g=t+(e+4)|0;e=r-e|0}else{g=t;d=s;e=s}switch(e|0){case 3:{d=h[g+2>>0]<<16^d;D=8;break}case 2:{D=8;break}case 1:{D=9;break}default:{}}if((D|0)==8){d=h[g+1>>0]<<8^d;D=9}if((D|0)==9){D=0;d=X(h[g>>0]^d,1540483477)|0}r=X(d>>>13^d,1540483477)|0;r=r>>>15^r;i=f[z>>2]|0;q=(i|0)==0;b:do if(!q){p=i+-1|0;g=(p&i|0)==0;if(g)e=r&p;else e=(r>>>0)%(i>>>0)|0;d=f[(f[a>>2]|0)+(e<<2)>>2]|0;if((d|0)!=0?(C=f[d>>2]|0,(C|0)!=0):0){d=(s|0)==0;if(g){if(d){d=C;while(1){if((f[d+4>>2]&p|0)!=(e|0)){D=43;break b}t=b[d+8+11>>0]|0;if(!((t<<24>>24<0?f[d+12>>2]|0:t&255)|0))break b;d=f[d>>2]|0;if(!d){D=43;break b}}}else o=C;while(1){if((f[o+4>>2]&p|0)!=(e|0)){D=43;break b}d=o+8|0;j=b[d+11>>0]|0;k=j<<24>>24<0;j=j&255;do if(((k?f[o+12>>2]|0:j)|0)==(s|0)){g=f[d>>2]|0;if(k)if(!(Wl(g,t,s)|0))break b;else break;if((g&255)<<24>>24==(b[t>>0]|0)){g=t;do{j=j+-1|0;d=d+1|0;if(!j)break b;g=g+1|0}while((b[d>>0]|0)==(b[g>>0]|0))}}while(0);o=f[o>>2]|0;if(!o){D=43;break}}}else{if(d){d=C;while(1){if((((f[d+4>>2]|0)>>>0)%(i>>>0)|0|0)!=(e|0)){D=43;break b}t=b[d+8+11>>0]|0;if(!((t<<24>>24<0?f[d+12>>2]|0:t&255)|0))break b;d=f[d>>2]|0;if(!d){D=43;break b}}}else o=C;while(1){if((((f[o+4>>2]|0)>>>0)%(i>>>0)|0|0)!=(e|0)){D=43;break b}d=o+8|0;j=b[d+11>>0]|0;k=j<<24>>24<0;j=j&255;do if(((k?f[o+12>>2]|0:j)|0)==(s|0)){g=f[d>>2]|0;if(k)if(!(Wl(g,t,s)|0))break b;else break;if((g&255)<<24>>24==(b[t>>0]|0)){g=t;do{j=j+-1|0;d=d+1|0;if(!j)break b;g=g+1|0}while((b[d>>0]|0)==(b[g>>0]|0))}}while(0);o=f[o>>2]|0;if(!o){D=43;break}}}}else D=43}else{e=0;D=43}while(0);if((D|0)==43){D=0;Ui(B,a,r,v);m=$(((f[A>>2]|0)+1|0)>>>0);G=$(i>>>0);l=$(n[x>>2]);do if(q|m>$(G*l)){d=(i>>>0<3|(i+-1&i|0)!=0)&1|i<<1;e=~~$(W($(m/l)))>>>0;Vi(a,d>>>0>>0?e:d);d=f[z>>2]|0;e=d+-1|0;if(!(e&d)){i=d;e=e&r;break}else{i=d;e=(r>>>0)%(d>>>0)|0;break}}while(0);d=f[(f[a>>2]|0)+(e<<2)>>2]|0;if(!d){f[f[B>>2]>>2]=f[y>>2];f[y>>2]=f[B>>2];f[(f[a>>2]|0)+(e<<2)>>2]=y;g=f[B>>2]|0;d=f[g>>2]|0;if(d|0){d=f[d+4>>2]|0;e=i+-1|0;if(!(e&i))d=d&e;else d=(d>>>0)%(i>>>0)|0;f[(f[a>>2]|0)+(d<<2)>>2]=g}}else{f[f[B>>2]>>2]=f[d>>2];f[d>>2]=f[B>>2]}f[A>>2]=(f[A>>2]|0)+1}d=f[w>>2]|0;if(!d)break a;else{e=d;w=d}}}while(0);d=f[c+28>>2]|0;if(!d){u=F;return}do{D=d;a=Fn(40)|0;Kb(a,f[D+20>>2]|0);D=vc(E,D+8|0)|0;k=f[D>>2]|0;f[D>>2]=a;if(k|0){e=f[k+28>>2]|0;if(e|0)do{D=e;e=f[e>>2]|0;cj(D+8|0);Lq(D)}while((e|0)!=0);D=k+20|0;e=f[D>>2]|0;f[D>>2]=0;if(e|0)Lq(e);e=f[k+8>>2]|0;if(e|0)do{j=e;e=f[e>>2]|0;g=f[j+20>>2]|0;if(g|0){i=j+24|0;if((f[i>>2]|0)!=(g|0))f[i>>2]=g;Lq(g)}Eo(j+8|0);Lq(j)}while((e|0)!=0);e=f[k>>2]|0;f[k>>2]=0;if(e|0)Lq(e);Lq(k)}d=f[d>>2]|0}while((d|0)!=0);u=F;return}function Lb(a,b,c,d,e,g){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;g=g|0;var h=0,i=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,B=0,C=0,D=0,E=0,F=0,G=0,H=0,I=0,J=0,K=0;J=a+8|0;f[J>>2]=e;j=a+32|0;i=a+36|0;h=f[i>>2]|0;g=f[j>>2]|0;k=h-g>>2;if(k>>>0>=e>>>0){if(k>>>0>e>>>0?(l=g+(e<<2)|0,(h|0)!=(l|0)):0)f[i>>2]=h+(~((h+-4-l|0)>>>2)<<2)}else jj(j,e-k|0);if(d|0){g=f[b>>2]|0;if((d|0)>1){i=1;h=g;do{H=f[b+(i<<2)>>2]|0;G=(H|0)<(g|0);g=G?H:g;h=G?h:(H|0)>(h|0)?H:h;i=i+1|0}while((i|0)!=(d|0))}else h=g;f[a+12>>2]=g;f[a+16>>2]=h;H=1-g+h|0;f[a+20>>2]=H;g=(H|0)/2|0;h=a+24|0;f[h>>2]=g;f[a+28>>2]=0-g;if(!(H&1))f[h>>2]=g+-1}r=f[a+48>>2]|0;s=f[a+52>>2]|0;x=e>>>0>1073741823?-1:e<<2;G=Iq(x)|0;Xj(G|0,0,x|0)|0;H=Iq(x)|0;Xj(H|0,0,x|0)|0;x=a+56|0;i=f[x>>2]|0;h=f[i+4>>2]|0;g=f[i>>2]|0;j=h-g|0;a:do if((j|0)>4){w=(e|0)>0;A=a+16|0;v=a+32|0;C=a+12|0;B=a+28|0;z=a+20|0;y=a+24|0;u=r+12|0;t=e<<2;p=j>>2;while(1){q=p+-1|0;if(h-g>>2>>>0<=q>>>0){yp(i);g=f[i>>2]|0}o=f[g+(q<<2)>>2]|0;if(w)Xj(G|0,0,t|0)|0;if((o|0)>-1){n=f[u>>2]|0;m=o;d=0;while(1){h=f[n+(m<<2)>>2]|0;if((h|0)>=0){i=f[r>>2]|0;j=f[s>>2]|0;l=f[j+(f[i+(h<<2)>>2]<<2)>>2]|0;g=h+1|0;g=((g|0)%3|0|0)==0?h+-2|0:g;if((g|0)<0)g=-1073741824;else g=f[i+(g<<2)>>2]|0;k=f[j+(g<<2)>>2]|0;g=(((h>>>0)%3|0|0)==0?2:-1)+h|0;if((g|0)<0)g=-1073741824;else g=f[i+(g<<2)>>2]|0;g=f[j+(g<<2)>>2]|0;if((l|0)<(q|0)&(k|0)<(q|0)&(g|0)<(q|0)){j=X(l,e)|0;i=X(k,e)|0;h=X(g,e)|0;if(w){g=0;do{f[H+(g<<2)>>2]=(f[b+(g+h<<2)>>2]|0)+(f[b+(g+i<<2)>>2]|0)-(f[b+(g+j<<2)>>2]|0);g=g+1|0}while((g|0)!=(e|0));if(w){g=0;do{l=G+(g<<2)|0;f[l>>2]=(f[l>>2]|0)+(f[H+(g<<2)>>2]|0);g=g+1|0}while((g|0)!=(e|0))}}i=d+1|0}else i=d}else i=d;g=(((m>>>0)%3|0|0)==0?2:-1)+m|0;do if((g|0)>=0){g=f[n+(g<<2)>>2]|0;if((g|0)>=0)if(!((g>>>0)%3|0)){g=g+2|0;break}else{g=g+-1|0;break}}while(0);m=(g|0)==(o|0)?-1073741824:g;if((m|0)<=-1)break;else d=i}h=X(q,e)|0;if(i){if(w){g=0;do{o=G+(g<<2)|0;f[o>>2]=(f[o>>2]|0)/(i|0)|0;g=g+1|0}while((g|0)!=(e|0))}d=b+(h<<2)|0;l=c+(h<<2)|0;g=f[J>>2]|0;if((g|0)>0){k=0;i=G;do{if((g|0)>0){j=0;do{g=f[i+(j<<2)>>2]|0;h=f[A>>2]|0;if((g|0)>(h|0)){g=f[v>>2]|0;f[g+(j<<2)>>2]=h}else{n=f[C>>2]|0;o=f[v>>2]|0;f[o+(j<<2)>>2]=(g|0)<(n|0)?n:g;g=o}j=j+1|0}while((j|0)<(f[J>>2]|0));i=g}else i=f[v>>2]|0;g=(f[d+(k<<2)>>2]|0)-(f[i+(k<<2)>>2]|0)|0;h=l+(k<<2)|0;f[h>>2]=g;if((g|0)>=(f[B>>2]|0)){if((g|0)>(f[y>>2]|0)){g=g-(f[z>>2]|0)|0;K=69}}else{g=(f[z>>2]|0)+g|0;K=69}if((K|0)==69){K=0;f[h>>2]=g}k=k+1|0;g=f[J>>2]|0}while((k|0)<(g|0))}}else{I=h;K=42}}else{I=X(q,e)|0;K=42}if((K|0)==42?(K=0,E=b+(I<<2)|0,F=c+(I<<2)|0,D=f[J>>2]|0,(D|0)>0):0){h=D;k=0;j=b+((X(p+-2|0,e)|0)<<2)|0;while(1){if((h|0)>0){i=0;do{g=f[j+(i<<2)>>2]|0;h=f[A>>2]|0;if((g|0)>(h|0)){g=f[v>>2]|0;f[g+(i<<2)>>2]=h}else{o=f[C>>2]|0;p=f[v>>2]|0;f[p+(i<<2)>>2]=(g|0)<(o|0)?o:g;g=p}i=i+1|0}while((i|0)<(f[J>>2]|0))}else g=f[v>>2]|0;h=(f[E+(k<<2)>>2]|0)-(f[g+(k<<2)>>2]|0)|0;i=F+(k<<2)|0;f[i>>2]=h;if((h|0)>=(f[B>>2]|0)){if((h|0)>(f[y>>2]|0)){h=h-(f[z>>2]|0)|0;K=54}}else{h=(f[z>>2]|0)+h|0;K=54}if((K|0)==54){K=0;f[i>>2]=h}k=k+1|0;h=f[J>>2]|0;if((k|0)>=(h|0))break;else j=g}}if((q|0)<=1)break a;i=f[x>>2]|0;g=f[i>>2]|0;h=f[i+4>>2]|0;p=q}}while(0);if((e|0)>0)Xj(G|0,0,e<<2|0)|0;g=f[J>>2]|0;if((g|0)<=0){Jq(H);Jq(G);return 1}n=a+16|0;d=a+32|0;p=a+12|0;o=a+28|0;m=a+20|0;l=a+24|0;k=0;i=G;do{if((g|0)>0){j=0;do{g=f[i+(j<<2)>>2]|0;h=f[n>>2]|0;if((g|0)>(h|0)){g=f[d>>2]|0;f[g+(j<<2)>>2]=h}else{e=f[p>>2]|0;a=f[d>>2]|0;f[a+(j<<2)>>2]=(g|0)<(e|0)?e:g;g=a}j=j+1|0}while((j|0)<(f[J>>2]|0));i=g}else i=f[d>>2]|0;g=(f[b+(k<<2)>>2]|0)-(f[i+(k<<2)>>2]|0)|0;h=c+(k<<2)|0;f[h>>2]=g;if((g|0)>=(f[o>>2]|0)){if((g|0)>(f[l>>2]|0)){g=g-(f[m>>2]|0)|0;K=84}}else{g=(f[m>>2]|0)+g|0;K=84}if((K|0)==84){K=0;f[h>>2]=g}k=k+1|0;g=f[J>>2]|0}while((k|0)<(g|0));Jq(H);Jq(G);return 1}function Mb(a,b,c,d,e,g){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;g=g|0;var h=0,i=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,B=0,C=0,D=0,E=0,F=0,G=0,H=0,I=0,J=0,K=0,L=0,M=0,N=0;M=a+8|0;f[M>>2]=e;j=a+32|0;i=a+36|0;h=f[i>>2]|0;g=f[j>>2]|0;k=h-g>>2;if(k>>>0>=e>>>0){if(k>>>0>e>>>0?(l=g+(e<<2)|0,(h|0)!=(l|0)):0)f[i>>2]=h+(~((h+-4-l|0)>>>2)<<2)}else jj(j,e-k|0);if(d|0){g=f[b>>2]|0;if((d|0)>1){i=1;h=g;do{J=f[b+(i<<2)>>2]|0;I=(J|0)<(g|0);g=I?J:g;h=I?h:(J|0)>(h|0)?J:h;i=i+1|0}while((i|0)!=(d|0))}else h=g;f[a+12>>2]=g;f[a+16>>2]=h;J=1-g+h|0;f[a+20>>2]=J;g=(J|0)/2|0;h=a+24|0;f[h>>2]=g;f[a+28>>2]=0-g;if(!(J&1))f[h>>2]=g+-1}p=f[a+48>>2]|0;q=f[a+52>>2]|0;w=e>>>0>1073741823?-1:e<<2;I=Iq(w)|0;Xj(I|0,0,w|0)|0;J=Iq(w)|0;Xj(J|0,0,w|0)|0;w=a+56|0;i=f[w>>2]|0;h=f[i+4>>2]|0;g=f[i>>2]|0;j=h-g|0;a:do if((j|0)>4){u=(e|0)>0;z=a+16|0;t=a+32|0;B=a+12|0;A=a+28|0;y=a+20|0;x=a+24|0;v=p+64|0;s=p+28|0;r=e<<2;n=j>>2;while(1){o=n+-1|0;if(h-g>>2>>>0<=o>>>0){yp(i);g=f[i>>2]|0}m=f[g+(o<<2)>>2]|0;if(u)Xj(I|0,0,r|0)|0;if((m|0)>-1){d=f[p>>2]|0;l=m;k=0;do{if(((f[d+(l>>>5<<2)>>2]&1<<(l&31)|0)==0?(L=f[(f[(f[v>>2]|0)+12>>2]|0)+(l<<2)>>2]|0,(L|0)>=0):0)?(E=f[s>>2]|0,j=f[q>>2]|0,C=f[j+(f[E+(L<<2)>>2]<<2)>>2]|0,D=L+1|0,D=f[j+(f[E+((((D|0)%3|0|0)==0?L+-2|0:D)<<2)>>2]<<2)>>2]|0,E=f[j+(f[E+((((L>>>0)%3|0|0)==0?2:-1)+L<<2)>>2]<<2)>>2]|0,(C|0)<(o|0)&(D|0)<(o|0)&(E|0)<(o|0)):0){h=X(C,e)|0;i=X(D,e)|0;j=X(E,e)|0;if(u){g=0;do{f[J+(g<<2)>>2]=(f[b+(g+j<<2)>>2]|0)+(f[b+(g+i<<2)>>2]|0)-(f[b+(g+h<<2)>>2]|0);g=g+1|0}while((g|0)!=(e|0));if(u){g=0;do{j=I+(g<<2)|0;f[j>>2]=(f[j>>2]|0)+(f[J+(g<<2)>>2]|0);g=g+1|0}while((g|0)!=(e|0))}}k=k+1|0}g=(((l>>>0)%3|0|0)==0?2:-1)+l|0;do if(!(f[d+(g>>>5<<2)>>2]&1<<(g&31))){if((g|0)>=0){g=f[(f[(f[v>>2]|0)+12>>2]|0)+(g<<2)>>2]|0;if((g|0)>=0)if(!((g>>>0)%3|0)){g=g+2|0;break}else{g=g+-1|0;break}}}else g=-1073741824;while(0);l=(g|0)==(m|0)?-1073741824:g}while((l|0)>-1);h=X(o,e)|0;if(k){if(u){g=0;do{m=I+(g<<2)|0;f[m>>2]=(f[m>>2]|0)/(k|0)|0;g=g+1|0}while((g|0)!=(e|0))}d=b+(h<<2)|0;l=c+(h<<2)|0;g=f[M>>2]|0;if((g|0)>0){k=0;i=I;do{if((g|0)>0){j=0;do{g=f[i+(j<<2)>>2]|0;h=f[z>>2]|0;if((g|0)>(h|0)){g=f[t>>2]|0;f[g+(j<<2)>>2]=h}else{h=f[B>>2]|0;m=f[t>>2]|0;f[m+(j<<2)>>2]=(g|0)<(h|0)?h:g;g=m}j=j+1|0}while((j|0)<(f[M>>2]|0));i=g}else i=f[t>>2]|0;g=(f[d+(k<<2)>>2]|0)-(f[i+(k<<2)>>2]|0)|0;h=l+(k<<2)|0;f[h>>2]=g;if((g|0)>=(f[A>>2]|0)){if((g|0)>(f[x>>2]|0)){g=g-(f[y>>2]|0)|0;N=67}}else{g=(f[y>>2]|0)+g|0;N=67}if((N|0)==67){N=0;f[h>>2]=g}k=k+1|0;g=f[M>>2]|0}while((k|0)<(g|0))}}else{K=h;N=40}}else{K=X(o,e)|0;N=40}if((N|0)==40?(N=0,G=b+(K<<2)|0,H=c+(K<<2)|0,F=f[M>>2]|0,(F|0)>0):0){h=F;k=0;j=b+((X(n+-2|0,e)|0)<<2)|0;while(1){if((h|0)>0){i=0;do{g=f[j+(i<<2)>>2]|0;h=f[z>>2]|0;if((g|0)>(h|0)){g=f[t>>2]|0;f[g+(i<<2)>>2]=h}else{m=f[B>>2]|0;n=f[t>>2]|0;f[n+(i<<2)>>2]=(g|0)<(m|0)?m:g;g=n}i=i+1|0}while((i|0)<(f[M>>2]|0))}else g=f[t>>2]|0;h=(f[G+(k<<2)>>2]|0)-(f[g+(k<<2)>>2]|0)|0;i=H+(k<<2)|0;f[i>>2]=h;if((h|0)>=(f[A>>2]|0)){if((h|0)>(f[x>>2]|0)){h=h-(f[y>>2]|0)|0;N=52}}else{h=(f[y>>2]|0)+h|0;N=52}if((N|0)==52){N=0;f[i>>2]=h}k=k+1|0;h=f[M>>2]|0;if((k|0)>=(h|0))break;else j=g}}if((o|0)<=1)break a;i=f[w>>2]|0;g=f[i>>2]|0;h=f[i+4>>2]|0;n=o}}while(0);if((e|0)>0)Xj(I|0,0,e<<2|0)|0;g=f[M>>2]|0;if((g|0)<=0){Jq(J);Jq(I);return 1}n=a+16|0;d=a+32|0;p=a+12|0;o=a+28|0;m=a+20|0;l=a+24|0;k=0;i=I;do{if((g|0)>0){j=0;do{g=f[i+(j<<2)>>2]|0;h=f[n>>2]|0;if((g|0)>(h|0)){g=f[d>>2]|0;f[g+(j<<2)>>2]=h}else{L=f[p>>2]|0;a=f[d>>2]|0;f[a+(j<<2)>>2]=(g|0)<(L|0)?L:g;g=a}j=j+1|0}while((j|0)<(f[M>>2]|0));i=g}else i=f[d>>2]|0;g=(f[b+(k<<2)>>2]|0)-(f[i+(k<<2)>>2]|0)|0;h=c+(k<<2)|0;f[h>>2]=g;if((g|0)>=(f[o>>2]|0)){if((g|0)>(f[l>>2]|0)){g=g-(f[m>>2]|0)|0;N=82}}else{g=(f[m>>2]|0)+g|0;N=82}if((N|0)==82){N=0;f[h>>2]=g}k=k+1|0;g=f[M>>2]|0}while((k|0)<(g|0));Jq(J);Jq(I);return 1}function Nb(a,c,e){a=a|0;c=c|0;e=e|0;var g=0,h=0,i=0,j=0,k=0,l=0,m=0,o=Ka,p=Ka,q=0,r=0,s=0,t=0,v=0,w=0,x=0,y=0,z=0,A=0,B=0,C=0,D=0,E=0,F=0,G=0,H=0,J=0,K=0,L=0,M=0,N=0,O=0,P=0,Q=Ka;P=u;u=u+48|0;O=P+12|0;K=P+32|0;N=P;G=O+16|0;f[O>>2]=0;f[O+4>>2]=0;f[O+8>>2]=0;f[O+12>>2]=0;n[G>>2]=$(1.0);M=a+80|0;ml(N,f[M>>2]|0);h=f[M>>2]|0;a:do if((h|0)>0){D=c+48|0;E=c+40|0;B=K+2|0;C=K+4|0;x=O+4|0;A=O+12|0;y=O+8|0;F=a+40|0;z=a+64|0;w=f[e>>2]|0;r=0;v=0;t=0;while(1){l=w+v|0;j=D;k=f[j>>2]|0;j=f[j+4>>2]|0;s=E;l=En(f[s>>2]|0,f[s+4>>2]|0,l|0,((l|0)<0)<<31>>31|0)|0;j=Do(l|0,I|0,k|0,j|0)|0;j=(f[f[c>>2]>>2]|0)+j|0;b[K>>0]=b[j>>0]|0;b[K+1>>0]=b[j+1>>0]|0;b[K+2>>0]=b[j+2>>0]|0;b[K+3>>0]=b[j+3>>0]|0;b[K+4>>0]=b[j+4>>0]|0;b[K+5>>0]=b[j+5>>0]|0;j=d[K>>1]|0;k=d[B>>1]|0;l=d[C>>1]|0;s=(((j^318)&65535)+239^k&65535)+239^l&65535;q=(r|0)==0;b:do if(!q){h=r+-1|0;g=(h&r|0)==0;if(g)i=s&h;else i=(s>>>0)%(r>>>0)|0;e=f[(f[O>>2]|0)+(i<<2)>>2]|0;do if(e|0?(J=f[e>>2]|0,J|0):0){c:do if(g){e=J;while(1){if((f[e+4>>2]&h|0)!=(i|0)){i=22;break c}if(((d[e+8>>1]|0)==j<<16>>16?(d[e+10>>1]|0)==k<<16>>16:0)?(d[e+12>>1]|0)==l<<16>>16:0){i=21;break c}e=f[e>>2]|0;if(!e){i=22;break}}}else{e=J;while(1){if((((f[e+4>>2]|0)>>>0)%(r>>>0)|0|0)!=(i|0)){i=22;break c}if(((d[e+8>>1]|0)==j<<16>>16?(d[e+10>>1]|0)==k<<16>>16:0)?(d[e+12>>1]|0)==l<<16>>16:0){i=21;break c}e=f[e>>2]|0;if(!e){i=22;break}}}while(0);if((i|0)==21){i=0;f[(f[N>>2]|0)+(v<<2)>>2]=f[e+16>>2];g=t;break b}else if((i|0)==22)if(q){e=0;i=39;break b}else break}while(0);i=r+-1|0;h=(i&r|0)==0;if(h)e=i&s;else e=(s>>>0)%(r>>>0)|0;g=f[(f[O>>2]|0)+(e<<2)>>2]|0;if((g|0)!=0?(H=f[g>>2]|0,(H|0)!=0):0)if(h){g=H;while(1){if((f[g+4>>2]&i|0)!=(e|0)){i=39;break b}if(((d[g+8>>1]|0)==j<<16>>16?(d[g+10>>1]|0)==k<<16>>16:0)?(d[g+12>>1]|0)==l<<16>>16:0){i=52;break b}g=f[g>>2]|0;if(!g){i=39;break}}}else{g=H;while(1){if((((f[g+4>>2]|0)>>>0)%(r>>>0)|0|0)!=(e|0)){i=39;break b}if(((d[g+8>>1]|0)==j<<16>>16?(d[g+10>>1]|0)==k<<16>>16:0)?(d[g+12>>1]|0)==l<<16>>16:0){i=52;break b}g=f[g>>2]|0;if(!g){i=39;break}}}else i=39}else{e=0;i=39}while(0);if((i|0)==39){i=0;m=Fn(20)|0;d[m+8>>1]=j;d[m+10>>1]=k;d[m+12>>1]=l;f[m+16>>2]=t;f[m+4>>2]=s;f[m>>2]=0;p=$(((f[A>>2]|0)+1|0)>>>0);Q=$(r>>>0);o=$(n[G>>2]);do if(q|p>$(Q*o)){e=(r>>>0<3|(r+-1&r|0)!=0)&1|r<<1;g=~~$(W($(p/o)))>>>0;Di(O,e>>>0>>0?g:e);e=f[x>>2]|0;g=e+-1|0;if(!(g&e)){h=e;e=g&s;break}else{h=e;e=(s>>>0)%(e>>>0)|0;break}}else h=r;while(0);g=(f[O>>2]|0)+(e<<2)|0;e=f[g>>2]|0;if(!e){f[m>>2]=f[y>>2];f[y>>2]=m;f[g>>2]=y;e=f[m>>2]|0;if(e|0){e=f[e+4>>2]|0;g=h+-1|0;if(!(g&h))e=e&g;else e=(e>>>0)%(h>>>0)|0;e=(f[O>>2]|0)+(e<<2)|0;i=50}}else{f[m>>2]=f[e>>2];i=50}if((i|0)==50)f[e>>2]=m;f[A>>2]=(f[A>>2]|0)+1;i=52}if((i|0)==52){s=F;g=f[s>>2]|0;s=En(g|0,f[s+4>>2]|0,t|0,((t|0)<0)<<31>>31|0)|0;Mh((f[f[z>>2]>>2]|0)+s|0,K|0,g|0)|0;f[(f[N>>2]|0)+(v<<2)>>2]=t;g=t+1|0}e=v+1|0;h=f[M>>2]|0;if((e|0)>=(h|0)){m=g;break a}r=f[x>>2]|0;v=e;t=g}}else m=0;while(0);if((m|0)!=(h|0)){l=a+84|0;if(!(b[l>>0]|0)){h=f[a+68>>2]|0;e=(f[a+72>>2]|0)-h|0;if((e|0)>0){i=f[N>>2]|0;g=e>>2;e=0;do{a=h+(e<<2)|0;f[a>>2]=f[i+(f[a>>2]<<2)>>2];e=e+1|0}while((e|0)<(g|0))}}else{b[l>>0]=0;j=a+68|0;i=a+72|0;g=f[i>>2]|0;e=f[j>>2]|0;k=g-e>>2;if(h>>>0<=k>>>0){if(h>>>0>>0?(L=e+(h<<2)|0,(g|0)!=(L|0)):0)f[i>>2]=g+(~((g+-4-L|0)>>>2)<<2)}else{_h(j,h-k|0,3140);h=f[M>>2]|0}if((h|0)>0){i=f[N>>2]|0;if(b[l>>0]|0)Fa(16608,16627,91,16668);e=f[a+68>>2]|0;g=0;do{f[e+(g<<2)>>2]=f[i+(g<<2)>>2];g=g+1|0}while((g|0)<(h|0))}}f[M>>2]=m}h=f[N>>2]|0;if(h|0){g=N+4|0;e=f[g>>2]|0;if((e|0)!=(h|0))f[g>>2]=e+(~((e+-4-h|0)>>>2)<<2);Lq(h)}e=f[O+8>>2]|0;if(e|0)do{N=e;e=f[e>>2]|0;Lq(N)}while((e|0)!=0);e=f[O>>2]|0;f[O>>2]=0;if(!e){u=P;return m|0}Lq(e);u=P;return m|0}function Ob(a,c,d){a=a|0;c=c|0;d=d|0;var e=0,g=0,h=0,i=0,j=0,k=0,l=0,m=Ka,o=Ka,p=0,q=0,r=0,s=0,t=0,v=0,w=0,x=0,y=0,z=0,A=0,B=0,C=0,D=0,E=0,F=0,G=0,H=0,J=0,K=0,L=0,M=0,N=0,O=0,P=Ka;O=u;u=u+48|0;N=O+12|0;J=O+32|0;M=O;F=N+16|0;f[N>>2]=0;f[N+4>>2]=0;f[N+8>>2]=0;f[N+12>>2]=0;n[F>>2]=$(1.0);L=a+80|0;ml(M,f[L>>2]|0);g=f[L>>2]|0;a:do if((g|0)>0){C=c+48|0;D=c+40|0;A=J+1|0;B=J+2|0;w=N+4|0;z=N+12|0;x=N+8|0;E=a+40|0;y=a+64|0;v=f[d>>2]|0;q=0;t=0;s=0;while(1){k=v+t|0;i=C;j=f[i>>2]|0;i=f[i+4>>2]|0;r=D;k=En(f[r>>2]|0,f[r+4>>2]|0,k|0,((k|0)<0)<<31>>31|0)|0;i=Do(k|0,I|0,j|0,i|0)|0;i=(f[f[c>>2]>>2]|0)+i|0;b[J>>0]=b[i>>0]|0;b[J+1>>0]=b[i+1>>0]|0;b[J+2>>0]=b[i+2>>0]|0;i=b[J>>0]|0;j=b[A>>0]|0;k=b[B>>0]|0;r=((i&255^318)+239^j&255)+239^k&255;p=(q|0)==0;b:do if(!p){g=q+-1|0;e=(g&q|0)==0;if(e)h=r&g;else h=(r>>>0)%(q>>>0)|0;d=f[(f[N>>2]|0)+(h<<2)>>2]|0;do if(d|0?(H=f[d>>2]|0,H|0):0){c:do if(e){d=H;while(1){if((f[d+4>>2]&g|0)!=(h|0)){h=22;break c}if(((b[d+8>>0]|0)==i<<24>>24?(b[d+9>>0]|0)==j<<24>>24:0)?(b[d+10>>0]|0)==k<<24>>24:0){h=21;break c}d=f[d>>2]|0;if(!d){h=22;break}}}else{d=H;while(1){if((((f[d+4>>2]|0)>>>0)%(q>>>0)|0|0)!=(h|0)){h=22;break c}if(((b[d+8>>0]|0)==i<<24>>24?(b[d+9>>0]|0)==j<<24>>24:0)?(b[d+10>>0]|0)==k<<24>>24:0){h=21;break c}d=f[d>>2]|0;if(!d){h=22;break}}}while(0);if((h|0)==21){h=0;f[(f[M>>2]|0)+(t<<2)>>2]=f[d+12>>2];e=s;break b}else if((h|0)==22)if(p){d=0;h=39;break b}else break}while(0);h=q+-1|0;g=(h&q|0)==0;if(g)d=h&r;else d=(r>>>0)%(q>>>0)|0;e=f[(f[N>>2]|0)+(d<<2)>>2]|0;if((e|0)!=0?(G=f[e>>2]|0,(G|0)!=0):0)if(g){e=G;while(1){if((f[e+4>>2]&h|0)!=(d|0)){h=39;break b}if(((b[e+8>>0]|0)==i<<24>>24?(b[e+9>>0]|0)==j<<24>>24:0)?(b[e+10>>0]|0)==k<<24>>24:0){h=52;break b}e=f[e>>2]|0;if(!e){h=39;break}}}else{e=G;while(1){if((((f[e+4>>2]|0)>>>0)%(q>>>0)|0|0)!=(d|0)){h=39;break b}if(((b[e+8>>0]|0)==i<<24>>24?(b[e+9>>0]|0)==j<<24>>24:0)?(b[e+10>>0]|0)==k<<24>>24:0){h=52;break b}e=f[e>>2]|0;if(!e){h=39;break}}}else h=39}else{d=0;h=39}while(0);if((h|0)==39){h=0;l=Fn(16)|0;b[l+8>>0]=i;b[l+9>>0]=j;b[l+10>>0]=k;f[l+12>>2]=s;f[l+4>>2]=r;f[l>>2]=0;o=$(((f[z>>2]|0)+1|0)>>>0);P=$(q>>>0);m=$(n[F>>2]);do if(p|o>$(P*m)){d=(q>>>0<3|(q+-1&q|0)!=0)&1|q<<1;e=~~$(W($(o/m)))>>>0;Ki(N,d>>>0>>0?e:d);d=f[w>>2]|0;e=d+-1|0;if(!(e&d)){g=d;d=e&r;break}else{g=d;d=(r>>>0)%(d>>>0)|0;break}}else g=q;while(0);e=(f[N>>2]|0)+(d<<2)|0;d=f[e>>2]|0;if(!d){f[l>>2]=f[x>>2];f[x>>2]=l;f[e>>2]=x;d=f[l>>2]|0;if(d|0){d=f[d+4>>2]|0;e=g+-1|0;if(!(e&g))d=d&e;else d=(d>>>0)%(g>>>0)|0;d=(f[N>>2]|0)+(d<<2)|0;h=50}}else{f[l>>2]=f[d>>2];h=50}if((h|0)==50)f[d>>2]=l;f[z>>2]=(f[z>>2]|0)+1;h=52}if((h|0)==52){r=E;e=f[r>>2]|0;r=En(e|0,f[r+4>>2]|0,s|0,((s|0)<0)<<31>>31|0)|0;Mh((f[f[y>>2]>>2]|0)+r|0,J|0,e|0)|0;f[(f[M>>2]|0)+(t<<2)>>2]=s;e=s+1|0}d=t+1|0;g=f[L>>2]|0;if((d|0)>=(g|0)){l=e;break a}q=f[w>>2]|0;t=d;s=e}}else l=0;while(0);if((l|0)!=(g|0)){k=a+84|0;if(!(b[k>>0]|0)){g=f[a+68>>2]|0;d=(f[a+72>>2]|0)-g|0;if((d|0)>0){h=f[M>>2]|0;e=d>>2;d=0;do{a=g+(d<<2)|0;f[a>>2]=f[h+(f[a>>2]<<2)>>2];d=d+1|0}while((d|0)<(e|0))}}else{b[k>>0]=0;i=a+68|0;h=a+72|0;e=f[h>>2]|0;d=f[i>>2]|0;j=e-d>>2;if(g>>>0<=j>>>0){if(g>>>0>>0?(K=d+(g<<2)|0,(e|0)!=(K|0)):0)f[h>>2]=e+(~((e+-4-K|0)>>>2)<<2)}else{_h(i,g-j|0,3140);g=f[L>>2]|0}if((g|0)>0){h=f[M>>2]|0;if(b[k>>0]|0)Fa(16608,16627,91,16668);d=f[a+68>>2]|0;e=0;do{f[d+(e<<2)>>2]=f[h+(e<<2)>>2];e=e+1|0}while((e|0)<(g|0))}}f[L>>2]=l}g=f[M>>2]|0;if(g|0){e=M+4|0;d=f[e>>2]|0;if((d|0)!=(g|0))f[e>>2]=d+(~((d+-4-g|0)>>>2)<<2);Lq(g)}d=f[N+8>>2]|0;if(d|0)do{M=d;d=f[d>>2]|0;Lq(M)}while((d|0)!=0);d=f[N>>2]|0;f[N>>2]=0;if(!d){u=O;return l|0}Lq(d);u=O;return l|0}function Pb(a,c,d){a=a|0;c=c|0;d=d|0;var e=0,g=0,h=0,i=0,j=0,k=0,l=0,m=Ka,o=Ka,p=0,q=0,r=0,s=0,t=0,v=0,w=0,x=0,y=0,z=0,A=0,B=0,C=0,D=0,E=0,F=0,G=0,H=0,J=0,K=0,L=0,M=0,N=0,O=0,P=Ka;O=u;u=u+48|0;N=O+24|0;J=O+12|0;M=O;F=N+16|0;f[N>>2]=0;f[N+4>>2]=0;f[N+8>>2]=0;f[N+12>>2]=0;n[F>>2]=$(1.0);L=a+80|0;ml(M,f[L>>2]|0);g=f[L>>2]|0;a:do if((g|0)>0){C=c+48|0;D=c+40|0;A=J+4|0;B=J+8|0;w=N+4|0;z=N+12|0;x=N+8|0;E=a+40|0;y=a+64|0;v=f[d>>2]|0;r=0;t=0;s=0;while(1){g=v+t|0;e=C;d=f[e>>2]|0;e=f[e+4>>2]|0;q=D;g=En(f[q>>2]|0,f[q+4>>2]|0,g|0,((g|0)<0)<<31>>31|0)|0;e=Do(g|0,I|0,d|0,e|0)|0;d=J;e=(f[f[c>>2]>>2]|0)+e|0;g=d+12|0;do{b[d>>0]=b[e>>0]|0;d=d+1|0;e=e+1|0}while((d|0)<(g|0));i=f[J>>2]|0;j=f[A>>2]|0;k=f[B>>2]|0;q=((i^318)+239^j)+239^k;p=(r|0)==0;b:do if(!p){g=r+-1|0;e=(g&r|0)==0;if(e)h=q&g;else h=(q>>>0)%(r>>>0)|0;d=f[(f[N>>2]|0)+(h<<2)>>2]|0;do if(d|0?(H=f[d>>2]|0,H|0):0){c:do if(e){d=H;while(1){if((f[d+4>>2]&g|0)!=(h|0)){h=22;break c}if(((f[d+8>>2]|0)==(i|0)?(f[d+12>>2]|0)==(j|0):0)?(f[d+16>>2]|0)==(k|0):0){h=21;break c}d=f[d>>2]|0;if(!d){h=22;break}}}else{d=H;while(1){if((((f[d+4>>2]|0)>>>0)%(r>>>0)|0|0)!=(h|0)){h=22;break c}if(((f[d+8>>2]|0)==(i|0)?(f[d+12>>2]|0)==(j|0):0)?(f[d+16>>2]|0)==(k|0):0){h=21;break c}d=f[d>>2]|0;if(!d){h=22;break}}}while(0);if((h|0)==21){h=0;f[(f[M>>2]|0)+(t<<2)>>2]=f[d+20>>2];e=s;break b}else if((h|0)==22)if(p){d=0;h=39;break b}else break}while(0);h=r+-1|0;g=(h&r|0)==0;if(g)d=h&q;else d=(q>>>0)%(r>>>0)|0;e=f[(f[N>>2]|0)+(d<<2)>>2]|0;if((e|0)!=0?(G=f[e>>2]|0,(G|0)!=0):0)if(g){e=G;while(1){if((f[e+4>>2]&h|0)!=(d|0)){h=39;break b}if(((f[e+8>>2]|0)==(i|0)?(f[e+12>>2]|0)==(j|0):0)?(f[e+16>>2]|0)==(k|0):0){h=52;break b}e=f[e>>2]|0;if(!e){h=39;break}}}else{e=G;while(1){if((((f[e+4>>2]|0)>>>0)%(r>>>0)|0|0)!=(d|0)){h=39;break b}if(((f[e+8>>2]|0)==(i|0)?(f[e+12>>2]|0)==(j|0):0)?(f[e+16>>2]|0)==(k|0):0){h=52;break b}e=f[e>>2]|0;if(!e){h=39;break}}}else h=39}else{d=0;h=39}while(0);if((h|0)==39){h=0;l=Fn(24)|0;f[l+8>>2]=i;f[l+12>>2]=j;f[l+16>>2]=k;f[l+20>>2]=s;f[l+4>>2]=q;f[l>>2]=0;o=$(((f[z>>2]|0)+1|0)>>>0);P=$(r>>>0);m=$(n[F>>2]);do if(p|o>$(P*m)){d=(r>>>0<3|(r+-1&r|0)!=0)&1|r<<1;e=~~$(W($(o/m)))>>>0;Hi(N,d>>>0>>0?e:d);d=f[w>>2]|0;e=d+-1|0;if(!(e&d)){g=d;d=e&q;break}else{g=d;d=(q>>>0)%(d>>>0)|0;break}}else g=r;while(0);e=(f[N>>2]|0)+(d<<2)|0;d=f[e>>2]|0;if(!d){f[l>>2]=f[x>>2];f[x>>2]=l;f[e>>2]=x;d=f[l>>2]|0;if(d|0){d=f[d+4>>2]|0;e=g+-1|0;if(!(e&g))d=d&e;else d=(d>>>0)%(g>>>0)|0;d=(f[N>>2]|0)+(d<<2)|0;h=50}}else{f[l>>2]=f[d>>2];h=50}if((h|0)==50)f[d>>2]=l;f[z>>2]=(f[z>>2]|0)+1;h=52}if((h|0)==52){r=E;e=f[r>>2]|0;r=En(e|0,f[r+4>>2]|0,s|0,((s|0)<0)<<31>>31|0)|0;Mh((f[f[y>>2]>>2]|0)+r|0,J|0,e|0)|0;f[(f[M>>2]|0)+(t<<2)>>2]=s;e=s+1|0}d=t+1|0;g=f[L>>2]|0;if((d|0)>=(g|0)){l=e;break a}r=f[w>>2]|0;t=d;s=e}}else l=0;while(0);if((l|0)!=(g|0)){k=a+84|0;if(!(b[k>>0]|0)){g=f[a+68>>2]|0;d=(f[a+72>>2]|0)-g|0;if((d|0)>0){h=f[M>>2]|0;e=d>>2;d=0;do{a=g+(d<<2)|0;f[a>>2]=f[h+(f[a>>2]<<2)>>2];d=d+1|0}while((d|0)<(e|0))}}else{b[k>>0]=0;i=a+68|0;h=a+72|0;e=f[h>>2]|0;d=f[i>>2]|0;j=e-d>>2;if(g>>>0<=j>>>0){if(g>>>0>>0?(K=d+(g<<2)|0,(e|0)!=(K|0)):0)f[h>>2]=e+(~((e+-4-K|0)>>>2)<<2)}else{_h(i,g-j|0,3140);g=f[L>>2]|0}if((g|0)>0){h=f[M>>2]|0;if(b[k>>0]|0)Fa(16608,16627,91,16668);d=f[a+68>>2]|0;e=0;do{f[d+(e<<2)>>2]=f[h+(e<<2)>>2];e=e+1|0}while((e|0)<(g|0))}}f[L>>2]=l}g=f[M>>2]|0;if(g|0){e=M+4|0;d=f[e>>2]|0;if((d|0)!=(g|0))f[e>>2]=d+(~((d+-4-g|0)>>>2)<<2);Lq(g)}d=f[N+8>>2]|0;if(d|0)do{M=d;d=f[d>>2]|0;Lq(M)}while((d|0)!=0);d=f[N>>2]|0;f[N>>2]=0;if(!d){u=O;return l|0}Lq(d);u=O;return l|0}function Qb(a,b){a=a|0;b=b|0;var c=0,d=0,e=0,g=0,h=0,i=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,v=0,w=0,x=0,y=0,z=0,A=0,B=0,C=0,D=0,E=0,F=0,G=0,H=0,I=0,J=0,K=0,L=0,M=0;M=u;u=u+48|0;L=M+24|0;J=M+12|0;z=M;if(!b){L=0;u=M;return L|0}I=a+12|0;A=a+4|0;k=f[A>>2]|0;c=f[a>>2]|0;i=k-c>>2;g=a+16|0;e=f[g>>2]|0;d=f[I>>2]|0;j=e-d>>2;l=c;if(i>>>0<=j>>>0)if(i>>>0>>0?(h=d+(i<<2)|0,(e|0)!=(h|0)):0){f[g>>2]=e+(~((e+-4-h|0)>>>2)<<2);g=c}else g=c;else{_h(I,i-j|0,3136);l=f[a>>2]|0;g=l;k=f[A>>2]|0}f[L>>2]=0;H=L+4|0;f[H>>2]=0;f[L+8>>2]=0;e=k-g|0;d=e>>2;c=L+8|0;do if(d)if(d>>>0>1073741823){M=Ha(4)|0;qq(M);sa(M|0,1040,102)}else{i=Fn(e)|0;h=i;f[L>>2]=h;f[H>>2]=h;f[c>>2]=i+(d<<2);break}else{i=0;h=0}while(0);if((e|0)>0){v=i;w=k;x=g;d=h;o=h;p=i;q=i;r=i;s=h;j=h;n=g;e=i;t=0;while(1){l=f[l+(t<<2)>>2]|0;c=f[H>>2]|0;if((l|0)<(c-d>>2|0)){g=v;h=w;i=x;m=e;c=n}else{e=l+1|0;f[J>>2]=0;g=c-d>>2;if(e>>>0<=g>>>0)if(e>>>0>>0?(y=d+(e<<2)|0,(c|0)!=(y|0)):0){f[H>>2]=c+(~((c+-4-y|0)>>>2)<<2);d=v;e=w;c=x}else{d=v;e=w;c=x}else{_h(L,e-g|0,J);d=f[L>>2]|0;e=f[A>>2]|0;c=f[a>>2]|0}j=d;g=d;h=e;i=c;o=j;p=d;q=d;r=d;s=j;m=d;k=e}G=m+(l<<2)|0;f[G>>2]=(f[G>>2]|0)+1;t=t+1|0;if((t|0)>=(k-c>>2|0)){l=s;i=q;break}else{v=g;w=h;x=i;l=c;d=m;n=c;e=m}}}else{c=g;j=h;l=h;r=i;o=h;p=i}c=k-c|0;h=c>>2;f[J>>2]=0;G=J+4|0;f[G>>2]=0;f[J+8>>2]=0;if(!h){d=0;e=0}else{if(h>>>0>536870911){zp(J);M=Ha(4)|0;qq(M);sa(M|0,1040,102)}g=Fn(c<<1)|0;f[G>>2]=g;f[J>>2]=g;f[J+8>>2]=g+(h<<3);e=g;c=h;d=g;while(1){F=e;f[F>>2]=-1;f[F+4>>2]=-1;d=d+8|0;c=c+-1|0;if(!c)break;else e=d}f[G>>2]=g+(h<<3);d=g;e=g}F=f[H>>2]|0;g=F-j|0;c=g>>2;f[z>>2]=0;E=z+4|0;f[E>>2]=0;f[z+8>>2]=0;do if(c)if(c>>>0>1073741823){zp(z);M=Ha(4)|0;qq(M);sa(M|0,1040,102)}else{D=Fn(g)|0;f[z>>2]=D;C=D+(c<<2)|0;f[z+8>>2]=C;Xj(D|0,0,g|0)|0;f[E>>2]=C;B=D;break}else{B=0;C=0;D=0}while(0);if((F|0)!=(l|0)){h=F-r>>2;c=0;g=0;do{f[B+(c<<2)>>2]=g;g=(f[r+(c<<2)>>2]|0)+g|0;c=c+1|0}while(c>>>0>>0)}z=f[a>>2]|0;c=(f[A>>2]|0)-z|0;A=z;if((c|0)>0){z=a+40|0;y=c>>2;k=i;m=B;j=0;v=e;t=e;w=e;s=e;x=e;while(1){i=(j|0)<0;c=j+1|0;if(!i){c=((c|0)%3|0|0)==0?j+-2|0:c;if((c|0)<0)h=-1073741824;else h=f[A+(c<<2)>>2]|0;c=(j>>>0)%3|0;g=((c|0)==0?2:-1)+j|0;if((g|0)<0){r=-1073741824;q=h}else{r=f[A+(g<<2)>>2]|0;q=h}}else{c=(j>>>0)%3|0;r=-1073741824;q=-1073741824}if((j|0)==((i?-1073741824:j-c|0)|0)){if(i)c=-1073741824;else c=f[A+(j<<2)>>2]|0;if((q|0)==(r|0)|((c|0)==(q|0)|(c|0)==(r|0))){f[z>>2]=(f[z>>2]|0)+1;j=j+2|0;c=v;g=t;l=w;h=s;i=x}else K=60}else K=60;a:do if((K|0)==60){K=0;n=f[k+(r<<2)>>2]|0;b:do if((n|0)>0){c=0;i=f[m+(r<<2)>>2]|0;while(1){g=f[s+(i<<3)>>2]|0;if((g|0)<0){c=v;g=t;h=s;break b}if((g|0)==(q|0))break;c=c+1|0;if((c|0)<(n|0))i=i+1|0;else{c=v;g=t;h=s;break b}}l=f[s+(i<<3)+4>>2]|0;h=t;while(1){c=c+1|0;if((c|0)>=(n|0))break;g=i+1|0;f[h+(i<<3)>>2]=f[h+(g<<3)>>2];f[h+(i<<3)+4>>2]=f[h+(g<<3)+4>>2];if((f[v+(i<<3)>>2]|0)<0)break;else{i=g;h=v}}f[w+(i<<3)>>2]=-1;if((l|0)<0){c=w;g=w;h=w}else{c=f[I>>2]|0;f[c+(j<<2)>>2]=l;f[c+(l<<2)>>2]=j;c=w;g=w;l=w;h=w;i=x;break a}}else{c=v;g=t;h=s}while(0);i=f[p+(q<<2)>>2]|0;if((i|0)>0){h=0;c=f[B+(q<<2)>>2]|0;while(1){g=x+(c<<3)|0;if((f[g>>2]|0)<0)break;h=h+1|0;if((h|0)>=(i|0)){m=B;k=p;c=x;g=x;l=x;h=x;i=x;break a}else c=c+1|0}f[g>>2]=r;f[e+(c<<3)+4>>2]=j;m=B;k=p;c=e;g=e;l=e;h=e;i=e}else{k=p;l=w;i=x}}while(0);j=j+1|0;if((j|0)>=(y|0))break;else{v=c;t=g;w=l;s=h;x=i}}}f[b>>2]=F-o>>2;if(B){if((C|0)!=(B|0))f[E>>2]=C+(~((C+-4-B|0)>>>2)<<2);Lq(D);d=f[J>>2]|0;e=d}if(e|0){c=f[G>>2]|0;if((c|0)!=(e|0))f[G>>2]=c+(~((c+-8-e|0)>>>3)<<3);Lq(d)}c=f[L>>2]|0;if(c|0){d=f[H>>2]|0;if((d|0)!=(c|0))f[H>>2]=d+(~((d+-4-c|0)>>>2)<<2);Lq(c)}L=1;u=M;return L|0}function Rb(a){a=a|0;var c=0,e=0,g=0,h=0,i=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,v=0,w=0,x=0,y=0,z=0,A=0;A=u;u=u+32|0;s=A+12|0;t=A+8|0;y=A+4|0;z=A;x=a+52|0;e=f[x>>2]|0;f[y>>2]=((f[e+88>>2]|0)-(f[e+84>>2]|0)|0)/12|0;v=a+44|0;g=f[v>>2]|0;i=g+16|0;h=f[i>>2]|0;i=f[i+4>>2]|0;if(!((i|0)>0|(i|0)==0&h>>>0>0)){f[t>>2]=f[g+4>>2];f[s>>2]=f[t>>2];vf(g,s,y,y+4|0)|0;g=f[v>>2]|0;h=g+16|0;e=f[x>>2]|0;i=f[h+4>>2]|0;h=f[h>>2]|0}f[z>>2]=f[e+68>>2];if(!((i|0)>0|(i|0)==0&h>>>0>0)){f[t>>2]=f[g+4>>2];f[s>>2]=f[t>>2];vf(g,s,z,z+4|0)|0}o=f[a+48>>2]|0;f[s>>2]=0;f[s+4>>2]=0;f[s+8>>2]=0;Ck(s,16341,21);o=Hk(o,s,0)|0;Eo(s);e=f[v>>2]|0;if(o){b[z>>0]=0;y=e+16|0;x=f[y+4>>2]|0;if(!((x|0)>0|(x|0)==0&(f[y>>2]|0)>>>0>0)){f[t>>2]=f[e+4>>2];f[s>>2]=f[t>>2];vf(e,s,z,z+1|0)|0}Af(a)|0;u=A;return 1}b[z>>0]=1;o=e+16|0;m=f[o+4>>2]|0;if(!((m|0)>0|(m|0)==0&(f[o>>2]|0)>>>0>0)){f[t>>2]=f[e+4>>2];f[s>>2]=f[t>>2];vf(e,s,z,z+1|0)|0}o=f[x>>2]|0;m=f[o+68>>2]|0;if((m|0)<256){if((f[y>>2]|0)<=0){u=A;return 1}a=z+1|0;k=z+1|0;l=z+1|0;e=f[o+84>>2]|0;if(((f[o+88>>2]|0)-e|0)>0){j=e;n=0}else Fa(16554,16525,64,16549);while(1){i=j;e=f[v>>2]|0;b[z>>0]=f[i+(n*12|0)>>2];g=e+16|0;h=f[g>>2]|0;g=f[g+4>>2]|0;if(!((g|0)>0|(g|0)==0&h>>>0>0)){f[t>>2]=f[e+4>>2];f[s>>2]=f[t>>2];vf(e,s,z,l)|0;e=f[v>>2]|0;h=e+16|0;g=f[h+4>>2]|0;h=f[h>>2]|0}b[z>>0]=f[i+(n*12|0)+4>>2];if(!((g|0)>0|(g|0)==0&h>>>0>0)){f[t>>2]=f[e+4>>2];f[s>>2]=f[t>>2];vf(e,s,z,k)|0;e=f[v>>2]|0;h=e+16|0;g=f[h+4>>2]|0;h=f[h>>2]|0}b[z>>0]=f[i+(n*12|0)+8>>2];if(!((g|0)>0|(g|0)==0&h>>>0>0)){f[t>>2]=f[e+4>>2];f[s>>2]=f[t>>2];vf(e,s,z,a)|0}n=n+1|0;if((n|0)>=(f[y>>2]|0)){e=42;break}i=f[x>>2]|0;j=f[i+84>>2]|0;if((n|0)>=(((f[i+88>>2]|0)-j|0)/12|0|0)){e=14;break}}if((e|0)==14)Fa(16554,16525,64,16549);else if((e|0)==42){u=A;return 1}}g=f[y>>2]|0;h=(g|0)>0;if((m|0)>=65536){if(!h){u=A;return 1}e=f[o+84>>2]|0;if(((f[o+88>>2]|0)-e|0)>0){p=e;c=g;q=0}else Fa(16554,16525,64,16549);while(1){g=p+(q*12|0)|0;e=f[v>>2]|0;p=e+16|0;n=f[p+4>>2]|0;if(!((n|0)>0|(n|0)==0&(f[p>>2]|0)>>>0>0)){f[t>>2]=f[e+4>>2];f[s>>2]=f[t>>2];vf(e,s,g,g+12|0)|0;c=f[y>>2]|0}q=q+1|0;if((q|0)>=(c|0)){e=42;break}n=f[x>>2]|0;p=f[n+84>>2]|0;if((q|0)>=(((f[n+88>>2]|0)-p|0)/12|0|0)){e=37;break}}if((e|0)==37)Fa(16554,16525,64,16549);else if((e|0)==42){u=A;return 1}}if(!h){u=A;return 1}i=z+2|0;a=z+2|0;j=z+2|0;c=f[o+84>>2]|0;if(((f[o+88>>2]|0)-c|0)>0){r=c;w=0}else Fa(16554,16525,64,16549);while(1){h=r;e=f[v>>2]|0;d[z>>1]=f[h+(w*12|0)>>2];c=e+16|0;g=f[c>>2]|0;c=f[c+4>>2]|0;if(!((c|0)>0|(c|0)==0&g>>>0>0)){f[t>>2]=f[e+4>>2];f[s>>2]=f[t>>2];vf(e,s,z,j)|0;e=f[v>>2]|0;g=e+16|0;c=f[g+4>>2]|0;g=f[g>>2]|0}d[z>>1]=f[h+(w*12|0)+4>>2];if(!((c|0)>0|(c|0)==0&g>>>0>0)){f[t>>2]=f[e+4>>2];f[s>>2]=f[t>>2];vf(e,s,z,a)|0;e=f[v>>2]|0;g=e+16|0;c=f[g+4>>2]|0;g=f[g>>2]|0}d[z>>1]=f[h+(w*12|0)+8>>2];if(!((c|0)>0|(c|0)==0&g>>>0>0)){f[t>>2]=f[e+4>>2];f[s>>2]=f[t>>2];vf(e,s,z,i)|0}w=w+1|0;if((w|0)>=(f[y>>2]|0)){e=42;break}q=f[x>>2]|0;r=f[q+84>>2]|0;if((w|0)>=(((f[q+88>>2]|0)-r|0)/12|0|0)){e=28;break}}if((e|0)==28)Fa(16554,16525,64,16549);else if((e|0)==42){u=A;return 1}return 0}function Sb(a,c,d){a=a|0;c=c|0;d=d|0;var e=0,g=0,i=0,j=0,k=0,l=0,m=Ka,o=Ka,p=0,q=0,r=0,s=0,t=0,v=0,w=0,x=0,y=0,z=0,A=0,B=0,C=0,D=0,E=0,F=0,G=0,H=0,J=0,K=0,L=0,M=0,N=Ka;M=u;u=u+48|0;L=M+20|0;G=M;K=M+8|0;D=L+16|0;f[L>>2]=0;f[L+4>>2]=0;f[L+8>>2]=0;f[L+12>>2]=0;n[D>>2]=$(1.0);J=a+80|0;ml(K,f[J>>2]|0);g=f[J>>2]|0;a:do if((g|0)>0){A=c+48|0;B=c+40|0;x=L+4|0;z=L+12|0;w=L+8|0;C=a+40|0;y=a+64|0;v=f[d>>2]|0;q=0;t=0;s=0;while(1){p=v+t|0;k=A;j=f[k>>2]|0;k=f[k+4>>2]|0;r=B;r=En(p|0,((p|0)<0)<<31>>31|0,f[r>>2]|0,f[r+4>>2]|0)|0;k=Do(r|0,I|0,j|0,k|0)|0;k=(f[f[c>>2]>>2]|0)+k|0;j=k;j=h[j>>0]|h[j+1>>0]<<8|h[j+2>>0]<<16|h[j+3>>0]<<24;k=k+4|0;k=h[k>>0]|h[k+1>>0]<<8|h[k+2>>0]<<16|h[k+3>>0]<<24;r=G;f[r>>2]=j;f[r+4>>2]=k;r=(j^318)+239^k;p=(q|0)==0;b:do if(!p){g=q+-1|0;e=(g&q|0)==0;if(e)i=r&g;else i=(r>>>0)%(q>>>0)|0;d=f[(f[L>>2]|0)+(i<<2)>>2]|0;do if(d|0?(F=f[d>>2]|0,F|0):0){c:do if(e){d=F;while(1){if((f[d+4>>2]&g|0)!=(i|0)){i=20;break c}if((f[d+8>>2]|0)==(j|0)?(f[d+12>>2]|0)==(k|0):0){i=19;break c}d=f[d>>2]|0;if(!d){i=20;break}}}else{d=F;while(1){if((((f[d+4>>2]|0)>>>0)%(q>>>0)|0|0)!=(i|0)){i=20;break c}if((f[d+8>>2]|0)==(j|0)?(f[d+12>>2]|0)==(k|0):0){i=19;break c}d=f[d>>2]|0;if(!d){i=20;break}}}while(0);if((i|0)==19){i=0;f[(f[K>>2]|0)+(t<<2)>>2]=f[d+16>>2];e=s;break b}else if((i|0)==20)if(p){d=0;i=35;break b}else break}while(0);i=q+-1|0;g=(i&q|0)==0;if(g)d=i&r;else d=(r>>>0)%(q>>>0)|0;e=f[(f[L>>2]|0)+(d<<2)>>2]|0;if((e|0)!=0?(E=f[e>>2]|0,(E|0)!=0):0)if(g){e=E;while(1){if((f[e+4>>2]&i|0)!=(d|0)){i=35;break b}if((f[e+8>>2]|0)==(j|0)?(f[e+12>>2]|0)==(k|0):0){i=48;break b}e=f[e>>2]|0;if(!e){i=35;break}}}else{e=E;while(1){if((((f[e+4>>2]|0)>>>0)%(q>>>0)|0|0)!=(d|0)){i=35;break b}if((f[e+8>>2]|0)==(j|0)?(f[e+12>>2]|0)==(k|0):0){i=48;break b}e=f[e>>2]|0;if(!e){i=35;break}}}else i=35}else{d=0;i=35}while(0);if((i|0)==35){i=0;l=Fn(20)|0;g=l+8|0;f[g>>2]=j;f[g+4>>2]=k;f[l+16>>2]=s;f[l+4>>2]=r;f[l>>2]=0;o=$(((f[z>>2]|0)+1|0)>>>0);N=$(q>>>0);m=$(n[D>>2]);do if(p|o>$(N*m)){d=(q>>>0<3|(q+-1&q|0)!=0)&1|q<<1;e=~~$(W($(o/m)))>>>0;Ii(L,d>>>0>>0?e:d);d=f[x>>2]|0;e=d+-1|0;if(!(e&d)){g=d;d=e&r;break}else{g=d;d=(r>>>0)%(d>>>0)|0;break}}else g=q;while(0);e=(f[L>>2]|0)+(d<<2)|0;d=f[e>>2]|0;if(!d){f[l>>2]=f[w>>2];f[w>>2]=l;f[e>>2]=w;d=f[l>>2]|0;if(d|0){d=f[d+4>>2]|0;e=g+-1|0;if(!(e&g))d=d&e;else d=(d>>>0)%(g>>>0)|0;d=(f[L>>2]|0)+(d<<2)|0;i=46}}else{f[l>>2]=f[d>>2];i=46}if((i|0)==46)f[d>>2]=l;f[z>>2]=(f[z>>2]|0)+1;i=48}if((i|0)==48){r=C;e=f[r>>2]|0;r=En(e|0,f[r+4>>2]|0,s|0,((s|0)<0)<<31>>31|0)|0;Mh((f[f[y>>2]>>2]|0)+r|0,G|0,e|0)|0;f[(f[K>>2]|0)+(t<<2)>>2]=s;e=s+1|0}d=t+1|0;g=f[J>>2]|0;if((d|0)>=(g|0)){p=e;break a}q=f[x>>2]|0;t=d;s=e}}else p=0;while(0);if((p|0)!=(g|0)){l=a+84|0;if(!(b[l>>0]|0)){g=f[a+68>>2]|0;d=(f[a+72>>2]|0)-g|0;if((d|0)>0){i=f[K>>2]|0;e=d>>2;d=0;do{a=g+(d<<2)|0;f[a>>2]=f[i+(f[a>>2]<<2)>>2];d=d+1|0}while((d|0)<(e|0))}}else{b[l>>0]=0;j=a+68|0;i=a+72|0;e=f[i>>2]|0;d=f[j>>2]|0;k=e-d>>2;if(g>>>0<=k>>>0){if(g>>>0>>0?(H=d+(g<<2)|0,(e|0)!=(H|0)):0)f[i>>2]=e+(~((e+-4-H|0)>>>2)<<2)}else{_h(j,g-k|0,3140);g=f[J>>2]|0}if((g|0)>0){i=f[K>>2]|0;if(b[l>>0]|0)Fa(16608,16627,91,16668);d=f[a+68>>2]|0;e=0;do{f[d+(e<<2)>>2]=f[i+(e<<2)>>2];e=e+1|0}while((e|0)<(g|0))}}f[J>>2]=p}g=f[K>>2]|0;if(g|0){e=K+4|0;d=f[e>>2]|0;if((d|0)!=(g|0))f[e>>2]=d+(~((d+-4-g|0)>>>2)<<2);Lq(g)}d=f[L+8>>2]|0;if(d|0)do{K=d;d=f[d>>2]|0;Lq(K)}while((d|0)!=0);d=f[L>>2]|0;f[L>>2]=0;if(!d){u=M;return p|0}Lq(d);u=M;return p|0}function Tb(a,c,e){a=a|0;c=c|0;e=e|0;var g=0,i=0,j=0,k=0,l=0,m=0,o=Ka,p=Ka,q=0,r=0,s=0,t=0,v=0,w=0,x=0,y=0,z=0,A=0,B=0,C=0,D=0,E=0,F=0,G=0,H=0,J=0,K=0,L=0,M=0,N=0,O=0,P=Ka;O=u;u=u+48|0;N=O+16|0;J=O+12|0;M=O;F=N+16|0;f[N>>2]=0;f[N+4>>2]=0;f[N+8>>2]=0;f[N+12>>2]=0;n[F>>2]=$(1.0);L=a+80|0;ml(M,f[L>>2]|0);i=f[L>>2]|0;a:do if((i|0)>0){C=c+48|0;D=c+40|0;z=N+4|0;B=N+12|0;y=N+8|0;E=a+40|0;A=a+64|0;x=f[e>>2]|0;s=0;w=0;v=0;while(1){l=x+w|0;m=C;k=f[m>>2]|0;m=f[m+4>>2]|0;t=D;t=En(l|0,((l|0)<0)<<31>>31|0,f[t>>2]|0,f[t+4>>2]|0)|0;m=Do(t|0,I|0,k|0,m|0)|0;m=(f[f[c>>2]>>2]|0)+m|0;m=h[m>>0]|h[m+1>>0]<<8|h[m+2>>0]<<16|h[m+3>>0]<<24;f[J>>2]=m;k=m&65535;t=m>>>16;l=t&65535;t=(m&65535^318)+239^t;r=(s|0)==0;b:do if(!r){i=s+-1|0;g=(i&s|0)==0;if(g)j=t&i;else j=(t>>>0)%(s>>>0)|0;e=f[(f[N>>2]|0)+(j<<2)>>2]|0;do if(e|0?(H=f[e>>2]|0,H|0):0){c:do if(g){e=H;while(1){if((f[e+4>>2]&i|0)!=(j|0)){q=20;break c}if((d[e+8>>1]|0)==k<<16>>16?(d[e+10>>1]|0)==l<<16>>16:0){q=19;break c}e=f[e>>2]|0;if(!e){q=20;break}}}else{e=H;while(1){if((((f[e+4>>2]|0)>>>0)%(s>>>0)|0|0)!=(j|0)){q=20;break c}if((d[e+8>>1]|0)==k<<16>>16?(d[e+10>>1]|0)==l<<16>>16:0){q=19;break c}e=f[e>>2]|0;if(!e){q=20;break}}}while(0);if((q|0)==19){q=0;f[(f[M>>2]|0)+(w<<2)>>2]=f[e+12>>2];g=v;break b}else if((q|0)==20)if(r){e=0;q=35;break b}else break}while(0);j=s+-1|0;i=(j&s|0)==0;if(i)e=j&t;else e=(t>>>0)%(s>>>0)|0;g=f[(f[N>>2]|0)+(e<<2)>>2]|0;if((g|0)!=0?(G=f[g>>2]|0,(G|0)!=0):0)if(i){g=G;while(1){if((f[g+4>>2]&j|0)!=(e|0)){q=35;break b}if((d[g+8>>1]|0)==k<<16>>16?(d[g+10>>1]|0)==l<<16>>16:0){q=48;break b}g=f[g>>2]|0;if(!g){q=35;break}}}else{g=G;while(1){if((((f[g+4>>2]|0)>>>0)%(s>>>0)|0|0)!=(e|0)){q=35;break b}if((d[g+8>>1]|0)==k<<16>>16?(d[g+10>>1]|0)==l<<16>>16:0){q=48;break b}g=f[g>>2]|0;if(!g){q=35;break}}}else q=35}else{e=0;q=35}while(0);if((q|0)==35){q=0;j=Fn(16)|0;l=j+8|0;d[l>>1]=m;d[l+2>>1]=m>>>16;f[j+12>>2]=v;f[j+4>>2]=t;f[j>>2]=0;p=$(((f[B>>2]|0)+1|0)>>>0);P=$(s>>>0);o=$(n[F>>2]);do if(r|p>$(P*o)){e=(s>>>0<3|(s+-1&s|0)!=0)&1|s<<1;g=~~$(W($(p/o)))>>>0;Ei(N,e>>>0>>0?g:e);e=f[z>>2]|0;g=e+-1|0;if(!(g&e)){i=e;e=g&t;break}else{i=e;e=(t>>>0)%(e>>>0)|0;break}}else i=s;while(0);g=(f[N>>2]|0)+(e<<2)|0;e=f[g>>2]|0;if(!e){f[j>>2]=f[y>>2];f[y>>2]=j;f[g>>2]=y;e=f[j>>2]|0;if(e|0){e=f[e+4>>2]|0;g=i+-1|0;if(!(g&i))e=e&g;else e=(e>>>0)%(i>>>0)|0;e=(f[N>>2]|0)+(e<<2)|0;q=46}}else{f[j>>2]=f[e>>2];q=46}if((q|0)==46)f[e>>2]=j;f[B>>2]=(f[B>>2]|0)+1;q=48}if((q|0)==48){t=E;g=f[t>>2]|0;t=En(g|0,f[t+4>>2]|0,v|0,((v|0)<0)<<31>>31|0)|0;Mh((f[f[A>>2]>>2]|0)+t|0,J|0,g|0)|0;f[(f[M>>2]|0)+(w<<2)>>2]=v;g=v+1|0}e=w+1|0;i=f[L>>2]|0;if((e|0)>=(i|0)){q=g;break a}s=f[z>>2]|0;w=e;v=g}}else q=0;while(0);if((q|0)!=(i|0)){m=a+84|0;if(!(b[m>>0]|0)){i=f[a+68>>2]|0;e=(f[a+72>>2]|0)-i|0;if((e|0)>0){j=f[M>>2]|0;g=e>>2;e=0;do{a=i+(e<<2)|0;f[a>>2]=f[j+(f[a>>2]<<2)>>2];e=e+1|0}while((e|0)<(g|0))}}else{b[m>>0]=0;k=a+68|0;j=a+72|0;g=f[j>>2]|0;e=f[k>>2]|0;l=g-e>>2;if(i>>>0<=l>>>0){if(i>>>0>>0?(K=e+(i<<2)|0,(g|0)!=(K|0)):0)f[j>>2]=g+(~((g+-4-K|0)>>>2)<<2)}else{_h(k,i-l|0,3140);i=f[L>>2]|0}if((i|0)>0){j=f[M>>2]|0;if(b[m>>0]|0)Fa(16608,16627,91,16668);e=f[a+68>>2]|0;g=0;do{f[e+(g<<2)>>2]=f[j+(g<<2)>>2];g=g+1|0}while((g|0)<(i|0))}}f[L>>2]=q}i=f[M>>2]|0;if(i|0){g=M+4|0;e=f[g>>2]|0;if((e|0)!=(i|0))f[g>>2]=e+(~((e+-4-i|0)>>>2)<<2);Lq(i)}e=f[N+8>>2]|0;if(e|0)do{M=e;e=f[e>>2]|0;Lq(M)}while((e|0)!=0);e=f[N>>2]|0;f[N>>2]=0;if(!e){u=O;return q|0}Lq(e);u=O;return q|0}function Ub(a,c,e){a=a|0;c=c|0;e=e|0;var g=0,i=0,j=0,k=0,l=0,m=0,o=Ka,p=Ka,q=0,r=0,s=0,t=0,v=0,w=0,x=0,y=0,z=0,A=0,B=0,C=0,D=0,E=0,F=0,G=0,H=0,J=0,K=0,L=0,M=0,N=0,O=0,P=Ka;O=u;u=u+48|0;N=O+12|0;J=O+32|0;M=O;F=N+16|0;f[N>>2]=0;f[N+4>>2]=0;f[N+8>>2]=0;f[N+12>>2]=0;n[F>>2]=$(1.0);L=a+80|0;ml(M,f[L>>2]|0);i=f[L>>2]|0;a:do if((i|0)>0){C=c+48|0;D=c+40|0;z=N+4|0;B=N+12|0;y=N+8|0;E=a+40|0;A=a+64|0;x=f[e>>2]|0;s=0;w=0;v=0;while(1){l=x+w|0;m=C;k=f[m>>2]|0;m=f[m+4>>2]|0;t=D;t=En(l|0,((l|0)<0)<<31>>31|0,f[t>>2]|0,f[t+4>>2]|0)|0;m=Do(t|0,I|0,k|0,m|0)|0;m=(f[f[c>>2]>>2]|0)+m|0;m=h[m>>0]|h[m+1>>0]<<8;d[J>>1]=m;k=m&255;t=(m&65535)>>>8;l=t&255;t=((m&255^318)+239<<16>>16^t)&65535;r=(s|0)==0;b:do if(!r){i=s+-1|0;g=(i&s|0)==0;if(g)j=t&i;else j=(t>>>0)%(s>>>0)|0;e=f[(f[N>>2]|0)+(j<<2)>>2]|0;do if(e|0?(H=f[e>>2]|0,H|0):0){c:do if(g){e=H;while(1){if((f[e+4>>2]&i|0)!=(j|0)){q=20;break c}if((b[e+8>>0]|0)==k<<24>>24?(b[e+9>>0]|0)==l<<24>>24:0){q=19;break c}e=f[e>>2]|0;if(!e){q=20;break}}}else{e=H;while(1){if((((f[e+4>>2]|0)>>>0)%(s>>>0)|0|0)!=(j|0)){q=20;break c}if((b[e+8>>0]|0)==k<<24>>24?(b[e+9>>0]|0)==l<<24>>24:0){q=19;break c}e=f[e>>2]|0;if(!e){q=20;break}}}while(0);if((q|0)==19){q=0;f[(f[M>>2]|0)+(w<<2)>>2]=f[e+12>>2];g=v;break b}else if((q|0)==20)if(r){e=0;q=35;break b}else break}while(0);j=s+-1|0;i=(j&s|0)==0;if(i)e=j&t;else e=(t>>>0)%(s>>>0)|0;g=f[(f[N>>2]|0)+(e<<2)>>2]|0;if((g|0)!=0?(G=f[g>>2]|0,(G|0)!=0):0)if(i){g=G;while(1){if((f[g+4>>2]&j|0)!=(e|0)){q=35;break b}if((b[g+8>>0]|0)==k<<24>>24?(b[g+9>>0]|0)==l<<24>>24:0){q=48;break b}g=f[g>>2]|0;if(!g){q=35;break}}}else{g=G;while(1){if((((f[g+4>>2]|0)>>>0)%(s>>>0)|0|0)!=(e|0)){q=35;break b}if((b[g+8>>0]|0)==k<<24>>24?(b[g+9>>0]|0)==l<<24>>24:0){q=48;break b}g=f[g>>2]|0;if(!g){q=35;break}}}else q=35}else{e=0;q=35}while(0);if((q|0)==35){q=0;j=Fn(16)|0;l=j+8|0;b[l>>0]=m;b[l+1>>0]=m>>8;f[j+12>>2]=v;f[j+4>>2]=t;f[j>>2]=0;p=$(((f[B>>2]|0)+1|0)>>>0);P=$(s>>>0);o=$(n[F>>2]);do if(r|p>$(P*o)){e=(s>>>0<3|(s+-1&s|0)!=0)&1|s<<1;g=~~$(W($(p/o)))>>>0;Li(N,e>>>0>>0?g:e);e=f[z>>2]|0;g=e+-1|0;if(!(g&e)){i=e;e=g&t;break}else{i=e;e=(t>>>0)%(e>>>0)|0;break}}else i=s;while(0);g=(f[N>>2]|0)+(e<<2)|0;e=f[g>>2]|0;if(!e){f[j>>2]=f[y>>2];f[y>>2]=j;f[g>>2]=y;e=f[j>>2]|0;if(e|0){e=f[e+4>>2]|0;g=i+-1|0;if(!(g&i))e=e&g;else e=(e>>>0)%(i>>>0)|0;e=(f[N>>2]|0)+(e<<2)|0;q=46}}else{f[j>>2]=f[e>>2];q=46}if((q|0)==46)f[e>>2]=j;f[B>>2]=(f[B>>2]|0)+1;q=48}if((q|0)==48){t=E;g=f[t>>2]|0;t=En(g|0,f[t+4>>2]|0,v|0,((v|0)<0)<<31>>31|0)|0;Mh((f[f[A>>2]>>2]|0)+t|0,J|0,g|0)|0;f[(f[M>>2]|0)+(w<<2)>>2]=v;g=v+1|0}e=w+1|0;i=f[L>>2]|0;if((e|0)>=(i|0)){q=g;break a}s=f[z>>2]|0;w=e;v=g}}else q=0;while(0);if((q|0)!=(i|0)){m=a+84|0;if(!(b[m>>0]|0)){i=f[a+68>>2]|0;e=(f[a+72>>2]|0)-i|0;if((e|0)>0){j=f[M>>2]|0;g=e>>2;e=0;do{a=i+(e<<2)|0;f[a>>2]=f[j+(f[a>>2]<<2)>>2];e=e+1|0}while((e|0)<(g|0))}}else{b[m>>0]=0;k=a+68|0;j=a+72|0;g=f[j>>2]|0;e=f[k>>2]|0;l=g-e>>2;if(i>>>0<=l>>>0){if(i>>>0>>0?(K=e+(i<<2)|0,(g|0)!=(K|0)):0)f[j>>2]=g+(~((g+-4-K|0)>>>2)<<2)}else{_h(k,i-l|0,3140);i=f[L>>2]|0}if((i|0)>0){j=f[M>>2]|0;if(b[m>>0]|0)Fa(16608,16627,91,16668);e=f[a+68>>2]|0;g=0;do{f[e+(g<<2)>>2]=f[j+(g<<2)>>2];g=g+1|0}while((g|0)<(i|0))}}f[L>>2]=q}i=f[M>>2]|0;if(i|0){g=M+4|0;e=f[g>>2]|0;if((e|0)!=(i|0))f[g>>2]=e+(~((e+-4-i|0)>>>2)<<2);Lq(i)}e=f[N+8>>2]|0;if(e|0)do{M=e;e=f[e>>2]|0;Lq(M)}while((e|0)!=0);e=f[N>>2]|0;f[N>>2]=0;if(!e){u=O;return q|0}Lq(e);u=O;return q|0}function Vb(a,c,d){a=a|0;c=c|0;d=d|0;var e=0,g=0,h=0,i=0,j=0,k=0;k=u;u=u+32|0;g=k+16|0;e=k+12|0;i=k+8|0;j=k+4|0;h=k;switch(f[c+28>>2]|0){case 9:{d=f[d>>2]|0;switch(b[c+24>>0]|0){case 1:{f[e>>2]=d;f[g>>2]=f[e>>2];d=jc(a,c,g)|0;break}case 2:{f[i>>2]=d;f[g>>2]=f[i>>2];d=Sb(a,c,g)|0;break}case 3:{f[j>>2]=d;f[g>>2]=f[j>>2];d=Pb(a,c,g)|0;break}case 4:{f[h>>2]=d;f[g>>2]=f[h>>2];d=ec(a,c,g)|0;break}default:d=0}break}case 1:{d=f[d>>2]|0;switch(b[c+24>>0]|0){case 1:{f[e>>2]=d;f[g>>2]=f[e>>2];d=ic(a,c,g)|0;break}case 2:{f[i>>2]=d;f[g>>2]=f[i>>2];d=Ub(a,c,g)|0;break}case 3:{f[j>>2]=d;f[g>>2]=f[j>>2];d=Ob(a,c,g)|0;break}case 4:{f[h>>2]=d;f[g>>2]=f[h>>2];d=cc(a,c,g)|0;break}default:d=0}break}case 11:case 2:{d=f[d>>2]|0;switch(b[c+24>>0]|0){case 1:{f[e>>2]=d;f[g>>2]=f[e>>2];d=ic(a,c,g)|0;break}case 2:{f[i>>2]=d;f[g>>2]=f[i>>2];d=Ub(a,c,g)|0;break}case 3:{f[j>>2]=d;f[g>>2]=f[j>>2];d=Ob(a,c,g)|0;break}case 4:{f[h>>2]=d;f[g>>2]=f[h>>2];d=cc(a,c,g)|0;break}default:d=0}break}case 4:{d=f[d>>2]|0;switch(b[c+24>>0]|0){case 1:{f[e>>2]=d;f[g>>2]=f[e>>2];d=fc(a,c,g)|0;break}case 2:{f[i>>2]=d;f[g>>2]=f[i>>2];d=Tb(a,c,g)|0;break}case 3:{f[j>>2]=d;f[g>>2]=f[j>>2];d=Nb(a,c,g)|0;break}case 4:{f[h>>2]=d;f[g>>2]=f[h>>2];d=Yb(a,c,g)|0;break}default:d=0}break}case 3:{d=f[d>>2]|0;switch(b[c+24>>0]|0){case 1:{f[e>>2]=d;f[g>>2]=f[e>>2];d=fc(a,c,g)|0;break}case 2:{f[i>>2]=d;f[g>>2]=f[i>>2];d=Tb(a,c,g)|0;break}case 3:{f[j>>2]=d;f[g>>2]=f[j>>2];d=Nb(a,c,g)|0;break}case 4:{f[h>>2]=d;f[g>>2]=f[h>>2];d=Yb(a,c,g)|0;break}default:d=0}break}case 6:{d=f[d>>2]|0;switch(b[c+24>>0]|0){case 1:{f[e>>2]=d;f[g>>2]=f[e>>2];d=jc(a,c,g)|0;break}case 2:{f[i>>2]=d;f[g>>2]=f[i>>2];d=Sb(a,c,g)|0;break}case 3:{f[j>>2]=d;f[g>>2]=f[j>>2];d=Pb(a,c,g)|0;break}case 4:{f[h>>2]=d;f[g>>2]=f[h>>2];d=ec(a,c,g)|0;break}default:d=0}break}case 5:{d=f[d>>2]|0;switch(b[c+24>>0]|0){case 1:{f[e>>2]=d;f[g>>2]=f[e>>2];d=jc(a,c,g)|0;break}case 2:{f[i>>2]=d;f[g>>2]=f[i>>2];d=Sb(a,c,g)|0;break}case 3:{f[j>>2]=d;f[g>>2]=f[j>>2];d=Pb(a,c,g)|0;break}case 4:{f[h>>2]=d;f[g>>2]=f[h>>2];d=ec(a,c,g)|0;break}default:d=0}break}default:{a=-1;u=k;return a|0}}a=(d|0)==0?-1:d;u=k;return a|0}function Wb(a,b){a=a|0;b=b|0;var c=0,d=0,e=0,g=0,h=0,i=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,v=0,w=0,x=0;x=u;u=u+48|0;w=x;t=x+36|0;j=x+32|0;k=x+28|0;l=x+24|0;m=x+20|0;n=x+16|0;o=x+12|0;s=x+8|0;v=x+4|0;if((f[a+96>>2]|0)==(f[a+92>>2]|0)){u=x;return}d=a+56|0;c=f[d>>2]|0;if((c|0)==(f[a+60>>2]|0))Bj(a+52|0,b);else{f[c>>2]=f[b>>2];f[d>>2]=c+4}q=a+88|0;f[q>>2]=0;g=f[a>>2]|0;d=f[b>>2]|0;c=d+1|0;if((d|0)>=0){c=((c|0)%3|0|0)==0?d+-2|0:c;if((c|0)<0)e=-1073741824;else e=f[(f[g>>2]|0)+(c<<2)>>2]|0;c=(((d>>>0)%3|0|0)==0?2:-1)+d|0;if((c|0)<0)i=-1073741824;else i=f[(f[g>>2]|0)+(c<<2)>>2]|0}else{i=-1073741824;e=-1073741824}p=a+24|0;c=f[p>>2]|0;g=c+(e>>>5<<2)|0;h=1<<(e&31);d=f[g>>2]|0;if(!(d&h)){f[g>>2]=d|h;f[j>>2]=e;c=f[b>>2]|0;d=c+1|0;if((c|0)>=0)c=((d|0)%3|0|0)==0?c+-2|0:d;f[k>>2]=c;f[t>>2]=f[j>>2];f[w>>2]=f[k>>2];yh(a+36|0,t,w);c=f[p>>2]|0}d=c+(i>>>5<<2)|0;e=1<<(i&31);c=f[d>>2]|0;if(!(c&e)){f[d>>2]=c|e;d=a+36|0;f[l>>2]=i;c=f[b>>2]|0;do if((c|0)>=0)if(!((c>>>0)%3|0)){c=c+2|0;break}else{c=c+-1|0;break}while(0);f[m>>2]=c;f[t>>2]=f[l>>2];f[w>>2]=f[m>>2];yh(d,t,w)}c=f[b>>2]|0;if((c|0)<0)e=-1073741824;else e=f[(f[f[a>>2]>>2]|0)+(c<<2)>>2]|0;d=(f[p>>2]|0)+(e>>>5<<2)|0;g=1<<(e&31);c=f[d>>2]|0;if(!(g&c)){f[d>>2]=c|g;f[n>>2]=e;f[o>>2]=f[b>>2];f[t>>2]=f[n>>2];f[w>>2]=f[o>>2];yh(a+36|0,t,w)}c=f[q>>2]|0;a:do if((c|0)<3){m=a+12|0;n=a+36|0;l=a+92|0;while(1){while(1){e=a+52+(c*12|0)+4|0;d=f[e>>2]|0;if((f[a+52+(c*12|0)>>2]|0)!=(d|0))break;c=c+1|0;if((c|0)>=3)break a}o=d+-4|0;g=f[o>>2]|0;f[e>>2]=o;f[q>>2]=c;f[b>>2]=g;if((g|0)<=-1)break;o=(g>>>0)/3|0;d=f[m>>2]|0;do if(!(f[d+(o>>>5<<2)>>2]&1<<(o&31))){c=g;b:while(1){o=(c|0)/3|0;d=d+(o>>>5<<2)|0;f[d>>2]=1<<(o&31)|f[d>>2];d=f[b>>2]|0;if((d|0)<0)g=-1073741824;else g=f[(f[f[a>>2]>>2]|0)+(d<<2)>>2]|0;e=(f[p>>2]|0)+(g>>>5<<2)|0;h=1<<(g&31);c=f[e>>2]|0;if(!(h&c)){f[e>>2]=c|h;f[s>>2]=g;f[v>>2]=f[b>>2];f[t>>2]=f[s>>2];f[w>>2]=f[v>>2];yh(n,t,w);d=f[b>>2]|0}h=f[a>>2]|0;if((d|0)<0){r=69;break}c=d+1|0;c=((c|0)%3|0|0)==0?d+-2|0:c;if((c|0)<0)k=c;else k=f[(f[h+12>>2]|0)+(c<<2)>>2]|0;c=(((d>>>0)%3|0|0)==0?2:-1)+d|0;if((c|0)>=0)c=f[(f[h+12>>2]|0)+(c<<2)>>2]|0;j=(k|0)<0;d=j?-1:(k>>>0)/3|0;e=(c|0)<0;g=e?-1:(c>>>0)/3|0;if(j)i=1;else i=(f[(f[m>>2]|0)+(d>>>5<<2)>>2]&1<<(d&31)|0)!=0;do if(e)if(i){r=69;break b}else r=58;else{if(f[(f[m>>2]|0)+(g>>>5<<2)>>2]&1<<(g&31)|0)if(i){r=69;break b}else{r=58;break}d=f[(f[h>>2]|0)+(c<<2)>>2]|0;if(!(1<<(d&31)&f[(f[p>>2]|0)+(d>>>5<<2)>>2])){o=(f[l>>2]|0)+(d<<2)|0;g=f[o>>2]|0;f[o>>2]=g+1;g=(g|0)>0?1:2}else g=0;if(i?(g|0)<=(f[q>>2]|0):0)break;f[w>>2]=c;e=a+52+(g*12|0)+4|0;d=f[e>>2]|0;if((d|0)==(f[a+52+(g*12|0)+8>>2]|0))Bj(a+52+(g*12|0)|0,w);else{f[d>>2]=c;f[e>>2]=d+4}if((f[q>>2]|0)>(g|0))f[q>>2]=g;if(i){r=69;break b}else r=58}while(0);if((r|0)==58){r=0;if(j)c=-1073741824;else c=f[(f[f[a>>2]>>2]|0)+(k<<2)>>2]|0;if(!(1<<(c&31)&f[(f[p>>2]|0)+(c>>>5<<2)>>2])){o=(f[l>>2]|0)+(c<<2)|0;e=f[o>>2]|0;f[o>>2]=e+1;e=(e|0)>0?1:2}else e=0;if((e|0)>(f[q>>2]|0))break;else c=k}f[b>>2]=c;d=f[m>>2]|0}if((r|0)==69){r=0;c=f[q>>2]|0;break}f[w>>2]=k;d=a+52+(e*12|0)+4|0;c=f[d>>2]|0;if((c|0)==(f[a+52+(e*12|0)+8>>2]|0))Bj(a+52+(e*12|0)|0,w);else{f[c>>2]=k;f[d>>2]=c+4}c=f[q>>2]|0;if((c|0)>(e|0)){f[q>>2]=e;c=e}}while(0);if((c|0)>=3)break a}u=x;return}while(0);f[b>>2]=-1073741824;u=x;return}function Xb(a,c,d){a=a|0;c=c|0;d=d|0;var e=0,g=0,i=0,j=0,k=Ka,l=Ka,m=0,o=0,p=0,q=0,r=0,s=0,t=0,v=0,w=0,x=0,y=0,z=0,A=0,B=Ka;A=u;u=u+48|0;e=A+24|0;z=A;j=Rd(a,c)|0;if(j|0){f[z>>2]=j;f[e>>2]=f[z>>2];Ng(a,e)|0}Rl(z,c);y=z+12|0;Rl(y,d);w=b[z+11>>0]|0;v=w<<24>>24<0;x=v?f[z>>2]|0:z;w=v?f[z+4>>2]|0:w&255;if(w>>>0>3){j=x;m=w;c=w;while(1){v=X(h[j>>0]|h[j+1>>0]<<8|h[j+2>>0]<<16|h[j+3>>0]<<24,1540483477)|0;m=(X(v>>>24^v,1540483477)|0)^(X(m,1540483477)|0);c=c+-4|0;if(c>>>0<=3)break;else j=j+4|0}v=w+-4|0;c=v&-4;d=x+(c+4)|0;j=m;c=v-c|0}else{d=x;j=w;c=w}switch(c|0){case 3:{o=h[d+2>>0]<<16^j;r=8;break}case 2:{o=j;r=8;break}case 1:{p=j;r=9;break}default:q=j}if((r|0)==8){p=h[d+1>>0]<<8^o;r=9}if((r|0)==9)q=X(h[d>>0]^p,1540483477)|0;v=X(q>>>13^q,1540483477)|0;v=v>>>15^v;s=a+4|0;c=f[s>>2]|0;t=(c|0)==0;a:do if(!t){p=c+-1|0;d=(p&c|0)==0;if(d)q=v&p;else q=(v>>>0)%(c>>>0)|0;j=f[(f[a>>2]|0)+(q<<2)>>2]|0;if((j|0)!=0?(g=f[j>>2]|0,(g|0)!=0):0){j=(w|0)==0;if(d){if(j){while(1){if((f[g+4>>2]&p|0)!=(q|0)){i=q;break a}x=b[g+8+11>>0]|0;if(!((x<<24>>24<0?f[g+12>>2]|0:x&255)|0))break;g=f[g>>2]|0;if(!g){i=q;break a}}Eo(y);Eo(z);u=A;return}b:while(1){if((f[g+4>>2]&p|0)!=(q|0)){i=q;break a}j=g+8|0;m=b[j+11>>0]|0;o=m<<24>>24<0;m=m&255;do if(((o?f[g+12>>2]|0:m)|0)==(w|0)){d=f[j>>2]|0;if(o)if(!(Wl(d,x,w)|0)){r=55;break b}else break;if((d&255)<<24>>24==(b[x>>0]|0)){d=x;do{m=m+-1|0;j=j+1|0;if(!m){r=55;break b}d=d+1|0}while((b[j>>0]|0)==(b[d>>0]|0))}}while(0);g=f[g>>2]|0;if(!g){i=q;break a}}if((r|0)==55){Eo(y);Eo(z);u=A;return}}else{if(j){while(1){if((((f[g+4>>2]|0)>>>0)%(c>>>0)|0|0)!=(q|0)){i=q;break a}x=b[g+8+11>>0]|0;if(!((x<<24>>24<0?f[g+12>>2]|0:x&255)|0))break;g=f[g>>2]|0;if(!g){i=q;break a}}Eo(y);Eo(z);u=A;return}c:while(1){if((((f[g+4>>2]|0)>>>0)%(c>>>0)|0|0)!=(q|0)){i=q;break a}j=g+8|0;m=b[j+11>>0]|0;o=m<<24>>24<0;m=m&255;do if(((o?f[g+12>>2]|0:m)|0)==(w|0)){d=f[j>>2]|0;if(o)if(!(Wl(d,x,w)|0)){r=55;break c}else break;if((d&255)<<24>>24==(b[x>>0]|0)){d=x;do{m=m+-1|0;j=j+1|0;if(!m){r=55;break c}d=d+1|0}while((b[j>>0]|0)==(b[d>>0]|0))}}while(0);g=f[g>>2]|0;if(!g){i=q;break a}}if((r|0)==55){Eo(y);Eo(z);u=A;return}}}else i=q}else i=0;while(0);Si(e,a,v,z);d=a+12|0;l=$(((f[d>>2]|0)+1|0)>>>0);B=$(c>>>0);k=$(n[a+16>>2]);do if(t|l>$(B*k)){g=(c>>>0<3|(c+-1&c|0)!=0)&1|c<<1;i=~~$(W($(l/k)))>>>0;Vi(a,g>>>0>>0?i:g);g=f[s>>2]|0;i=g+-1|0;if(!(i&g)){c=g;i=i&v;break}else{c=g;i=(v>>>0)%(g>>>0)|0;break}}while(0);g=f[(f[a>>2]|0)+(i<<2)>>2]|0;if(!g){j=a+8|0;f[f[e>>2]>>2]=f[j>>2];f[j>>2]=f[e>>2];f[(f[a>>2]|0)+(i<<2)>>2]=j;j=f[e>>2]|0;g=f[j>>2]|0;if(g){g=f[g+4>>2]|0;i=c+-1|0;if(!(i&c))g=g&i;else g=(g>>>0)%(c>>>0)|0;f[(f[a>>2]|0)+(g<<2)>>2]=j}}else{f[f[e>>2]>>2]=f[g>>2];f[g>>2]=f[e>>2]}f[d>>2]=(f[d>>2]|0)+1;f[e>>2]=0;Eo(y);Eo(z);u=A;return}function Yb(a,c,e){a=a|0;c=c|0;e=e|0;var g=0,i=0,j=0,k=0,l=0,m=0,o=Ka,p=Ka,q=0,r=0,s=0,t=0,v=0,w=0,x=0,y=0,z=0,A=0,B=0,C=0,D=0,E=0,F=0,G=0,H=0,J=0,K=0,L=0,M=0,N=0,O=0,P=0,Q=0,R=0,S=0,T=0,U=Ka;T=u;u=u+48|0;S=T+28|0;N=T+8|0;O=T;R=T+16|0;L=S+16|0;f[S>>2]=0;f[S+4>>2]=0;f[S+8>>2]=0;f[S+12>>2]=0;n[L>>2]=$(1.0);Q=a+80|0;ml(R,f[Q>>2]|0);i=f[Q>>2]|0;if((i|0)>0){B=f[e>>2]|0;G=c+48|0;H=c+40|0;E=S+4|0;F=S+12|0;D=S+8|0;J=a+40|0;C=a+64|0;K=0;z=0;while(1){w=B+K|0;y=G;x=f[y>>2]|0;y=f[y+4>>2]|0;e=H;e=En(w|0,((w|0)<0)<<31>>31|0,f[e>>2]|0,f[e+4>>2]|0)|0;y=Do(e|0,I|0,x|0,y|0)|0;y=(f[f[c>>2]>>2]|0)+y|0;x=y;x=h[x>>0]|h[x+1>>0]<<8|h[x+2>>0]<<16|h[x+3>>0]<<24;y=y+4|0;y=h[y>>0]|h[y+1>>0]<<8|h[y+2>>0]<<16|h[y+3>>0]<<24;e=N;f[e>>2]=x;f[e+4>>2]=y;e=O;f[e>>2]=x;f[e+4>>2]=y;e=Yg(S,O)|0;if(!e){t=O;s=f[t>>2]|0;t=f[t+4>>2]|0;l=s&65535;y=co(s|0,t|0,16)|0;m=y&65535;q=t&65535;v=co(s|0,t|0,48)|0;w=I;r=v&65535;y=((((l^318)&65535)+239^y&65535)+239^t&65535)+239^v;i=f[E>>2]|0;x=(i|0)==0;a:do if(!x){k=i+-1|0;j=(k&i|0)==0;if(j)e=y&k;else e=(y>>>0)%(i>>>0)|0;g=f[(f[S>>2]|0)+(e<<2)>>2]|0;if((g|0)!=0?(M=f[g>>2]|0,(M|0)!=0):0)if(j){g=M;while(1){if((f[g+4>>2]&k|0)!=(e|0)){A=25;break a}if((((d[g+8>>1]|0)==l<<16>>16?(d[g+10>>1]|0)==m<<16>>16:0)?(d[g+12>>1]|0)==q<<16>>16:0)?(d[g+14>>1]|0)==r<<16>>16:0)break a;g=f[g>>2]|0;if(!g){A=25;break}}}else{g=M;while(1){if((((f[g+4>>2]|0)>>>0)%(i>>>0)|0|0)!=(e|0)){A=25;break a}if((((d[g+8>>1]|0)==l<<16>>16?(d[g+10>>1]|0)==m<<16>>16:0)?(d[g+12>>1]|0)==q<<16>>16:0)?(d[g+14>>1]|0)==r<<16>>16:0)break a;g=f[g>>2]|0;if(!g){A=25;break}}}else A=25}else{e=0;A=25}while(0);if((A|0)==25){A=0;j=Fn(20)|0;v=Zn(v|0,w|0,48)|0;s=s|v;v=t&65535|I;w=j+8|0;t=w;d[t>>1]=s;d[t+2>>1]=s>>>16;w=w+4|0;d[w>>1]=v;d[w+2>>1]=v>>>16;f[j+16>>2]=z;f[j+4>>2]=y;f[j>>2]=0;p=$(((f[F>>2]|0)+1|0)>>>0);U=$(i>>>0);o=$(n[L>>2]);do if(x|p>$(U*o)){e=(i>>>0<3|(i+-1&i|0)!=0)&1|i<<1;g=~~$(W($(p/o)))>>>0;Ci(S,e>>>0>>0?g:e);e=f[E>>2]|0;g=e+-1|0;if(!(g&e)){i=e;e=g&y;break}else{i=e;e=(y>>>0)%(e>>>0)|0;break}}while(0);g=(f[S>>2]|0)+(e<<2)|0;e=f[g>>2]|0;if(!e){f[j>>2]=f[D>>2];f[D>>2]=j;f[g>>2]=D;e=f[j>>2]|0;if(e|0){e=f[e+4>>2]|0;g=i+-1|0;if(!(g&i))e=e&g;else e=(e>>>0)%(i>>>0)|0;e=(f[S>>2]|0)+(e<<2)|0;A=36}}else{f[j>>2]=f[e>>2];A=36}if((A|0)==36){A=0;f[e>>2]=j}f[F>>2]=(f[F>>2]|0)+1}y=J;e=f[y>>2]|0;y=En(e|0,f[y+4>>2]|0,z|0,((z|0)<0)<<31>>31|0)|0;Mh((f[f[C>>2]>>2]|0)+y|0,N|0,e|0)|0;f[(f[R>>2]|0)+(K<<2)>>2]=z;e=z+1|0}else{f[(f[R>>2]|0)+(K<<2)>>2]=f[e+16>>2];e=z}K=K+1|0;i=f[Q>>2]|0;if((K|0)>=(i|0)){q=e;break}else z=e}}else q=0;if((q|0)!=(i|0)){m=a+84|0;if(!(b[m>>0]|0)){i=f[a+68>>2]|0;e=(f[a+72>>2]|0)-i|0;if((e|0)>0){j=f[R>>2]|0;g=e>>2;e=0;do{a=i+(e<<2)|0;f[a>>2]=f[j+(f[a>>2]<<2)>>2];e=e+1|0}while((e|0)<(g|0))}}else{b[m>>0]=0;k=a+68|0;j=a+72|0;g=f[j>>2]|0;e=f[k>>2]|0;l=g-e>>2;if(i>>>0<=l>>>0){if(i>>>0>>0?(P=e+(i<<2)|0,(g|0)!=(P|0)):0)f[j>>2]=g+(~((g+-4-P|0)>>>2)<<2)}else{_h(k,i-l|0,3140);i=f[Q>>2]|0}if((i|0)>0){j=f[R>>2]|0;if(b[m>>0]|0)Fa(16608,16627,91,16668);e=f[a+68>>2]|0;g=0;do{f[e+(g<<2)>>2]=f[j+(g<<2)>>2];g=g+1|0}while((g|0)<(i|0))}}f[Q>>2]=q}i=f[R>>2]|0;if(i|0){g=R+4|0;e=f[g>>2]|0;if((e|0)!=(i|0))f[g>>2]=e+(~((e+-4-i|0)>>>2)<<2);Lq(i)}e=f[S+8>>2]|0;if(e|0)do{R=e;e=f[e>>2]|0;Lq(R)}while((e|0)!=0);e=f[S>>2]|0;f[S>>2]=0;if(!e){u=T;return q|0}Lq(e);u=T;return q|0}function Zb(a,b,c,d,e,g){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;g=g|0;var h=0,i=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,v=0,w=0,x=0,y=0,z=0,A=0,B=0,C=0,D=0,E=0,F=0,G=0,H=0,J=0,K=0,L=0,M=0,N=0,O=0,P=0,Q=0,R=0;R=u;u=u+64|0;F=R+48|0;L=R+36|0;K=R+24|0;H=R+16|0;J=R+8|0;G=R;E=R+32|0;M=a+8|0;d=f[a+12>>2]|0;if((d|0)<=1)Fa(10816,11923,80,10889);if((d|0)>=31)Fa(10909,11923,81,10889);f[a+68>>2]=d;D=1<>2]=D+-1;D=D+-2|0;C=a+76|0;f[C>>2]=D;A=a+80|0;f[A>>2]=(D|0)/2|0;D=a+44|0;f[a+48>>2]=g;if(!(Ra[f[(f[a>>2]|0)+16>>2]&127](a)|0))Fa(12027,11923,99,12049);if((e|0)!=2)Fa(12073,11923,101,12049);z=a+84|0;Jl(z);x=a+40|0;d=f[x>>2]|0;w=(f[d+4>>2]|0)-(f[d>>2]|0)|0;y=w>>2;f[L>>2]=0;f[L+4>>2]=0;f[L+8>>2]=0;v=K;f[v>>2]=0;f[v+4>>2]=0;v=H;f[v>>2]=0;f[v+4>>2]=0;v=J;f[v>>2]=0;f[v+4>>2]=0;v=G;f[v>>2]=0;f[v+4>>2]=0;if((w|0)<=0){u=R;return 1}v=L+4|0;w=L+8|0;q=K+4|0;r=H+4|0;t=J+4|0;s=G+4|0;g=0;while(1){e=f[d>>2]|0;if((f[d+4>>2]|0)-e>>2>>>0>g>>>0)d=e;else{yp(d);d=f[d>>2]|0}f[E>>2]=f[d+(g<<2)>>2];f[F>>2]=f[E>>2];nc(D,F,L);d=f[L>>2]|0;h=(d|0)>-1?d:0-d|0;e=f[v>>2]|0;a=(e|0)>-1?e:0-e|0;h=Do(a|0,((a|0)<0)<<31>>31|0,h|0,((h|0)<0)<<31>>31|0)|0;a=f[w>>2]|0;i=(a|0)>-1;a=i?a:0-a|0;a=Do(h|0,I|0,a|0,((a|0)<0)<<31>>31|0)|0;h=I;p=f[A>>2]|0;if((a|0)==0&(h|0)==0){e=L;d=p}else{n=((p|0)<0)<<31>>31;o=En(p|0,n|0,d|0,((d|0)<0)<<31>>31|0)|0;o=bl(o|0,I|0,a|0,h|0)|0;f[L>>2]=o;d=En(p|0,n|0,e|0,((e|0)<0)<<31>>31|0)|0;d=bl(d|0,I|0,a|0,h|0)|0;f[v>>2]=d;d=p-((o|0)>-1?o:0-o|0)-((d|0)>-1?d:0-d|0)|0;e=w;d=i?d:0-d|0}f[e>>2]=d;l=f[L>>2]|0;e=(l|0)>-1;n=0-l|0;m=f[v>>2]|0;j=0-m|0;h=(m|0)>-1?m:j;o=f[w>>2]|0;k=0-o|0;d=(o|0)>-1?o:k;if((h+(e?l:n)+d|0)!=(p|0)){d=18;break}if(!e){if((m|0)>=0)d=(f[C>>2]|0)-d|0;if((o|0)<0){a=d;e=h}else{a=d;e=(f[C>>2]|0)-h|0}}else{a=p+m|0;e=p+o|0}h=(a|0)==0;i=(e|0)==0;d=f[C>>2]|0;do if((e|a|0)!=0?(O=(d|0)==(e|0),Q=(d|0)==(a|0),!(h&O|i&Q)):0){if(h&(p|0)<(e|0)){a=0;e=(p<<1)-e|0;break}if((p|0)>(e|0)&Q){e=(p<<1)-e|0;break}if((p|0)>(a|0)&O){a=(p<<1)-a|0;break}else{a=(p|0)<(a|0)&i?(p<<1)-a|0:a;break}}else{a=d;e=d}while(0);f[K>>2]=a;f[q>>2]=e;f[L>>2]=n;f[v>>2]=j;f[w>>2]=k;h=(l|0)<1;a=(m|0)<1?j:m;e=(o|0)<1?k:o;if((a+(h?n:l)+e|0)!=(p|0)){d=35;break}if(h){i=p-m|0;h=p-o|0}else{i=(m|0)>0?e:d-e|0;h=(o|0)>0?a:d-a|0}e=(i|0)==0;a=(h|0)==0;do if((h|i|0)!=0?(N=(d|0)==(h|0),P=(d|0)==(i|0),!(e&N|a&P)):0){if(e&(p|0)<(h|0)){e=0;d=(p<<1)-h|0;break}if((p|0)>(h|0)&P){e=d;d=(p<<1)-h|0;break}if((p|0)>(i|0)&N){e=(p<<1)-i|0;break}else{e=(p|0)<(i|0)&a?(p<<1)-i|0:i;d=h;break}}else e=d;while(0);f[H>>2]=e;f[r>>2]=d;j=g<<1;d=b+(j<<2)|0;aj(M,d,K,J);aj(M,d,H,G);d=f[J>>2]|0;i=f[A>>2]|0;if((i|0)>=(d|0)){if((d|0)<(0-i|0))d=(f[B>>2]|0)+d|0}else d=d-(f[B>>2]|0)|0;f[J>>2]=d;e=f[t>>2]|0;if((i|0)>=(e|0)){if((e|0)<(0-i|0))e=(f[B>>2]|0)+e|0}else e=e-(f[B>>2]|0)|0;f[t>>2]=e;a=f[G>>2]|0;if((i|0)>=(a|0)){if((a|0)<(0-i|0))a=(f[B>>2]|0)+a|0}else a=a-(f[B>>2]|0)|0;f[G>>2]=a;h=f[s>>2]|0;if((i|0)>=(h|0)){if((h|0)<(0-i|0))h=(f[B>>2]|0)+h|0}else h=h-(f[B>>2]|0)|0;f[s>>2]=h;if((((e|0)>-1?e:0-e|0)+((d|0)>-1?d:0-d|0)|0)<(((a|0)>-1?a:0-a|0)+((h|0)>-1?h:0-h|0)|0)){Uj(z,0);a=J}else{Uj(z,1);a=G}d=f[a>>2]|0;if((f[A>>2]<<1|0)<(d|0)){d=68;break}if((d|0)<0)d=(f[B>>2]|0)+d|0;e=c+(j<<2)|0;f[e>>2]=d;d=f[a+4>>2]|0;if((f[A>>2]<<1|0)<(d|0)){d=72;break}if((d|0)<0)d=(f[B>>2]|0)+d|0;f[e+4>>2]=d;g=g+1|0;if((g|0)>=(y|0)){d=11;break}d=f[x>>2]|0}if((d|0)==11){u=R;return 1}else if((d|0)==18)Fa(12097,11923,119,12049);else if((d|0)==35)Fa(12164,10827,99,12252);else if((d|0)==68)Fa(11543,10827,313,11577);else if((d|0)==72)Fa(11543,10827,313,11577);return 0}function _b(a,b,c,d,e,g){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;g=g|0;var h=0,i=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,v=0,w=0,x=0,y=0,z=0,A=0,B=0,C=0,D=0,E=0,F=0,G=0,H=0,J=0,K=0,L=0,M=0,N=0,O=0,P=0,Q=0,R=0;R=u;u=u+64|0;F=R+48|0;L=R+36|0;K=R+24|0;H=R+16|0;J=R+8|0;G=R;E=R+32|0;M=a+8|0;d=f[a+12>>2]|0;if((d|0)<=1)Fa(10816,11923,80,10889);if((d|0)>=31)Fa(10909,11923,81,10889);f[a+68>>2]=d;D=1<>2]=D+-1;D=D+-2|0;C=a+76|0;f[C>>2]=D;A=a+80|0;f[A>>2]=(D|0)/2|0;D=a+44|0;f[a+48>>2]=g;if(!(Ra[f[(f[a>>2]|0)+16>>2]&127](a)|0))Fa(12027,11923,99,12049);if((e|0)!=2)Fa(12073,11923,101,12049);z=a+84|0;Jl(z);x=a+40|0;d=f[x>>2]|0;w=(f[d+4>>2]|0)-(f[d>>2]|0)|0;y=w>>2;f[L>>2]=0;f[L+4>>2]=0;f[L+8>>2]=0;v=K;f[v>>2]=0;f[v+4>>2]=0;v=H;f[v>>2]=0;f[v+4>>2]=0;v=J;f[v>>2]=0;f[v+4>>2]=0;v=G;f[v>>2]=0;f[v+4>>2]=0;if((w|0)<=0){u=R;return 1}v=L+4|0;w=L+8|0;q=K+4|0;r=H+4|0;t=J+4|0;s=G+4|0;g=0;while(1){e=f[d>>2]|0;if((f[d+4>>2]|0)-e>>2>>>0>g>>>0)d=e;else{yp(d);d=f[d>>2]|0}f[E>>2]=f[d+(g<<2)>>2];f[F>>2]=f[E>>2];lc(D,F,L);d=f[L>>2]|0;h=(d|0)>-1?d:0-d|0;e=f[v>>2]|0;a=(e|0)>-1?e:0-e|0;h=Do(a|0,((a|0)<0)<<31>>31|0,h|0,((h|0)<0)<<31>>31|0)|0;a=f[w>>2]|0;i=(a|0)>-1;a=i?a:0-a|0;a=Do(h|0,I|0,a|0,((a|0)<0)<<31>>31|0)|0;h=I;p=f[A>>2]|0;if((a|0)==0&(h|0)==0){e=L;d=p}else{n=((p|0)<0)<<31>>31;o=En(p|0,n|0,d|0,((d|0)<0)<<31>>31|0)|0;o=bl(o|0,I|0,a|0,h|0)|0;f[L>>2]=o;d=En(p|0,n|0,e|0,((e|0)<0)<<31>>31|0)|0;d=bl(d|0,I|0,a|0,h|0)|0;f[v>>2]=d;d=p-((o|0)>-1?o:0-o|0)-((d|0)>-1?d:0-d|0)|0;e=w;d=i?d:0-d|0}f[e>>2]=d;l=f[L>>2]|0;e=(l|0)>-1;n=0-l|0;m=f[v>>2]|0;j=0-m|0;h=(m|0)>-1?m:j;o=f[w>>2]|0;k=0-o|0;d=(o|0)>-1?o:k;if((h+(e?l:n)+d|0)!=(p|0)){d=18;break}if(!e){if((m|0)>=0)d=(f[C>>2]|0)-d|0;if((o|0)<0){a=d;e=h}else{a=d;e=(f[C>>2]|0)-h|0}}else{a=p+m|0;e=p+o|0}h=(a|0)==0;i=(e|0)==0;d=f[C>>2]|0;do if((e|a|0)!=0?(O=(d|0)==(e|0),Q=(d|0)==(a|0),!(h&O|i&Q)):0){if(h&(p|0)<(e|0)){a=0;e=(p<<1)-e|0;break}if((p|0)>(e|0)&Q){e=(p<<1)-e|0;break}if((p|0)>(a|0)&O){a=(p<<1)-a|0;break}else{a=(p|0)<(a|0)&i?(p<<1)-a|0:a;break}}else{a=d;e=d}while(0);f[K>>2]=a;f[q>>2]=e;f[L>>2]=n;f[v>>2]=j;f[w>>2]=k;h=(l|0)<1;a=(m|0)<1?j:m;e=(o|0)<1?k:o;if((a+(h?n:l)+e|0)!=(p|0)){d=35;break}if(h){i=p-m|0;h=p-o|0}else{i=(m|0)>0?e:d-e|0;h=(o|0)>0?a:d-a|0}e=(i|0)==0;a=(h|0)==0;do if((h|i|0)!=0?(N=(d|0)==(h|0),P=(d|0)==(i|0),!(e&N|a&P)):0){if(e&(p|0)<(h|0)){e=0;d=(p<<1)-h|0;break}if((p|0)>(h|0)&P){e=d;d=(p<<1)-h|0;break}if((p|0)>(i|0)&N){e=(p<<1)-i|0;break}else{e=(p|0)<(i|0)&a?(p<<1)-i|0:i;d=h;break}}else e=d;while(0);f[H>>2]=e;f[r>>2]=d;j=g<<1;d=b+(j<<2)|0;aj(M,d,K,J);aj(M,d,H,G);d=f[J>>2]|0;i=f[A>>2]|0;if((i|0)>=(d|0)){if((d|0)<(0-i|0))d=(f[B>>2]|0)+d|0}else d=d-(f[B>>2]|0)|0;f[J>>2]=d;e=f[t>>2]|0;if((i|0)>=(e|0)){if((e|0)<(0-i|0))e=(f[B>>2]|0)+e|0}else e=e-(f[B>>2]|0)|0;f[t>>2]=e;a=f[G>>2]|0;if((i|0)>=(a|0)){if((a|0)<(0-i|0))a=(f[B>>2]|0)+a|0}else a=a-(f[B>>2]|0)|0;f[G>>2]=a;h=f[s>>2]|0;if((i|0)>=(h|0)){if((h|0)<(0-i|0))h=(f[B>>2]|0)+h|0}else h=h-(f[B>>2]|0)|0;f[s>>2]=h;if((((e|0)>-1?e:0-e|0)+((d|0)>-1?d:0-d|0)|0)<(((a|0)>-1?a:0-a|0)+((h|0)>-1?h:0-h|0)|0)){Uj(z,0);a=J}else{Uj(z,1);a=G}d=f[a>>2]|0;if((f[A>>2]<<1|0)<(d|0)){d=68;break}if((d|0)<0)d=(f[B>>2]|0)+d|0;e=c+(j<<2)|0;f[e>>2]=d;d=f[a+4>>2]|0;if((f[A>>2]<<1|0)<(d|0)){d=72;break}if((d|0)<0)d=(f[B>>2]|0)+d|0;f[e+4>>2]=d;g=g+1|0;if((g|0)>=(y|0)){d=11;break}d=f[x>>2]|0}if((d|0)==11){u=R;return 1}else if((d|0)==18)Fa(12097,11923,119,12049);else if((d|0)==35)Fa(12164,10827,99,12252);else if((d|0)==68)Fa(11543,10827,313,11577);else if((d|0)==72)Fa(11543,10827,313,11577);return 0}function $b(a,c,d){a=a|0;c=c|0;d=d|0;var e=0,g=0,i=0,j=0,k=0,l=0,m=0;m=u;u=u+32|0;i=m+20|0;e=m+16|0;j=m+12|0;k=m+8|0;l=m+4|0;g=m;if(!d){a=0;u=m;return a|0}switch(f[a+28>>2]|0){case 9:{f[e>>2]=f[c>>2];f[i>>2]=f[e>>2];a=te(a,i,d)|0;u=m;return a|0}case 2:{f[j>>2]=f[c>>2];f[i>>2]=f[j>>2];a=Vg(a,i,d)|0;u=m;return a|0}case 1:{f[k>>2]=f[c>>2];f[i>>2]=f[k>>2];a=Qg(a,i,d)|0;u=m;return a|0}case 4:{f[l>>2]=f[c>>2];f[i>>2]=f[l>>2];a=ig(a,i,d)|0;u=m;return a|0}case 3:{f[g>>2]=f[c>>2];f[i>>2]=f[g>>2];a=Fg(a,i,d)|0;u=m;return a|0}case 6:{e=f[c>>2]|0;switch(b[a+24>>0]|0){case 1:{c=a+48|0;l=f[c>>2]|0;c=f[c+4>>2]|0;k=a+40|0;a=(Do(En(f[k>>2]|0,f[k+4>>2]|0,e|0,((e|0)<0)<<31>>31|0)|0,I|0,l|0,c|0)|0)+(f[f[a>>2]>>2]|0)|0;f[d>>2]=h[a>>0]|h[a+1>>0]<<8|h[a+2>>0]<<16|h[a+3>>0]<<24;f[d+4>>2]=0;a=1;u=m;return a|0}case 2:{c=a+48|0;l=f[c>>2]|0;c=f[c+4>>2]|0;k=a+40|0;c=(Do(En(f[k>>2]|0,f[k+4>>2]|0,e|0,((e|0)<0)<<31>>31|0)|0,I|0,l|0,c|0)|0)+(f[f[a>>2]>>2]|0)|0;l=c;c=c+4|0;c=h[c>>0]|h[c+1>>0]<<8|h[c+2>>0]<<16|h[c+3>>0]<<24;a=d;f[a>>2]=h[l>>0]|h[l+1>>0]<<8|h[l+2>>0]<<16|h[l+3>>0]<<24;f[a+4>>2]=c;a=1;u=m;return a|0}case 3:{c=a+48|0;l=f[c>>2]|0;c=f[c+4>>2]|0;k=a+40|0;c=(Do(En(f[k>>2]|0,f[k+4>>2]|0,e|0,((e|0)<0)<<31>>31|0)|0,I|0,l|0,c|0)|0)+(f[f[a>>2]>>2]|0)|0;l=c;l=h[l>>0]|h[l+1>>0]<<8|h[l+2>>0]<<16|h[l+3>>0]<<24;c=c+4|0;c=h[c>>0]|h[c+1>>0]<<8|h[c+2>>0]<<16|h[c+3>>0]<<24;a=d;d=a;b[d>>0]=l;b[d+1>>0]=l>>8;b[d+2>>0]=l>>16;b[d+3>>0]=l>>24;a=a+4|0;b[a>>0]=c;b[a+1>>0]=c>>8;b[a+2>>0]=c>>16;b[a+3>>0]=c>>24;a=1;u=m;return a|0}case 4:{c=a+48|0;l=f[c>>2]|0;c=f[c+4>>2]|0;k=a+40|0;c=(Do(En(f[k>>2]|0,f[k+4>>2]|0,e|0,((e|0)<0)<<31>>31|0)|0,I|0,l|0,c|0)|0)+(f[f[a>>2]>>2]|0)|0;l=c;l=h[l>>0]|h[l+1>>0]<<8|h[l+2>>0]<<16|h[l+3>>0]<<24;c=c+4|0;c=h[c>>0]|h[c+1>>0]<<8|h[c+2>>0]<<16|h[c+3>>0]<<24;a=d;d=a;b[d>>0]=l;b[d+1>>0]=l>>8;b[d+2>>0]=l>>16;b[d+3>>0]=l>>24;a=a+4|0;b[a>>0]=c;b[a+1>>0]=c>>8;b[a+2>>0]=c>>16;b[a+3>>0]=c>>24;a=1;u=m;return a|0}default:{a=0;u=m;return a|0}}}case 5:{e=f[c>>2]|0;switch(b[a+24>>0]|0){case 1:{c=a+48|0;l=f[c>>2]|0;c=f[c+4>>2]|0;k=a+40|0;a=(Do(En(f[k>>2]|0,f[k+4>>2]|0,e|0,((e|0)<0)<<31>>31|0)|0,I|0,l|0,c|0)|0)+(f[f[a>>2]>>2]|0)|0;f[d>>2]=h[a>>0]|h[a+1>>0]<<8|h[a+2>>0]<<16|h[a+3>>0]<<24;f[d+4>>2]=0;a=1;u=m;return a|0}case 2:{c=a+48|0;l=f[c>>2]|0;c=f[c+4>>2]|0;k=a+40|0;c=(Do(En(f[k>>2]|0,f[k+4>>2]|0,e|0,((e|0)<0)<<31>>31|0)|0,I|0,l|0,c|0)|0)+(f[f[a>>2]>>2]|0)|0;l=c;c=c+4|0;c=h[c>>0]|h[c+1>>0]<<8|h[c+2>>0]<<16|h[c+3>>0]<<24;a=d;f[a>>2]=h[l>>0]|h[l+1>>0]<<8|h[l+2>>0]<<16|h[l+3>>0]<<24;f[a+4>>2]=c;a=1;u=m;return a|0}case 3:{c=a+48|0;l=f[c>>2]|0;c=f[c+4>>2]|0;k=a+40|0;c=(Do(En(f[k>>2]|0,f[k+4>>2]|0,e|0,((e|0)<0)<<31>>31|0)|0,I|0,l|0,c|0)|0)+(f[f[a>>2]>>2]|0)|0;l=c;l=h[l>>0]|h[l+1>>0]<<8|h[l+2>>0]<<16|h[l+3>>0]<<24;c=c+4|0;c=h[c>>0]|h[c+1>>0]<<8|h[c+2>>0]<<16|h[c+3>>0]<<24;a=d;d=a;b[d>>0]=l;b[d+1>>0]=l>>8;b[d+2>>0]=l>>16;b[d+3>>0]=l>>24;a=a+4|0;b[a>>0]=c;b[a+1>>0]=c>>8;b[a+2>>0]=c>>16;b[a+3>>0]=c>>24;a=1;u=m;return a|0}case 4:{c=a+48|0;l=f[c>>2]|0;c=f[c+4>>2]|0;k=a+40|0;c=(Do(En(f[k>>2]|0,f[k+4>>2]|0,e|0,((e|0)<0)<<31>>31|0)|0,I|0,l|0,c|0)|0)+(f[f[a>>2]>>2]|0)|0;l=c;l=h[l>>0]|h[l+1>>0]<<8|h[l+2>>0]<<16|h[l+3>>0]<<24;c=c+4|0;c=h[c>>0]|h[c+1>>0]<<8|h[c+2>>0]<<16|h[c+3>>0]<<24;a=d;d=a;b[d>>0]=l;b[d+1>>0]=l>>8;b[d+2>>0]=l>>16;b[d+3>>0]=l>>24;a=a+4|0;b[a>>0]=c;b[a+1>>0]=c>>8;b[a+2>>0]=c>>16;b[a+3>>0]=c>>24;a=1;u=m;return a|0}default:{a=0;u=m;return a|0}}}default:{a=0;u=m;return a|0}}return 0}function ac(a,c,d){a=a|0;c=c|0;d=d|0;var e=0,g=0,i=0,j=0,k=Ka,l=Ka,m=0,o=0,q=0,r=0,s=0,t=0,v=0,w=0,x=0,y=0,z=0,A=0,B=Ka;A=u;u=u+48|0;e=A+24|0;z=A;j=Rd(a,c)|0;if(j|0){f[z>>2]=j;f[e>>2]=f[z>>2];Ng(a,e)|0}Rl(z,c);p[z+16>>3]=+p[d>>3];x=b[z+11>>0]|0;w=x<<24>>24<0;y=w?f[z>>2]|0:z;x=w?f[z+4>>2]|0:x&255;if(x>>>0>3){j=y;m=x;c=x;while(1){w=X(h[j>>0]|h[j+1>>0]<<8|h[j+2>>0]<<16|h[j+3>>0]<<24,1540483477)|0;m=(X(w>>>24^w,1540483477)|0)^(X(m,1540483477)|0);c=c+-4|0;if(c>>>0<=3)break;else j=j+4|0}w=x+-4|0;c=w&-4;d=y+(c+4)|0;j=m;c=w-c|0}else{d=y;j=x;c=x}switch(c|0){case 3:{o=h[d+2>>0]<<16^j;s=8;break}case 2:{o=j;s=8;break}case 1:{q=j;s=9;break}default:r=j}if((s|0)==8){q=h[d+1>>0]<<8^o;s=9}if((s|0)==9)r=X(h[d>>0]^q,1540483477)|0;w=X(r>>>13^r,1540483477)|0;w=w>>>15^w;t=a+4|0;c=f[t>>2]|0;v=(c|0)==0;a:do if(!v){q=c+-1|0;d=(q&c|0)==0;if(d)r=w&q;else r=(w>>>0)%(c>>>0)|0;j=f[(f[a>>2]|0)+(r<<2)>>2]|0;if((j|0)!=0?(g=f[j>>2]|0,(g|0)!=0):0){j=(x|0)==0;if(d){if(j){while(1){if((f[g+4>>2]&q|0)!=(r|0)){i=r;break a}y=b[g+8+11>>0]|0;if(!((y<<24>>24<0?f[g+12>>2]|0:y&255)|0))break;g=f[g>>2]|0;if(!g){i=r;break a}}Eo(z);u=A;return}b:while(1){if((f[g+4>>2]&q|0)!=(r|0)){i=r;break a}j=g+8|0;m=b[j+11>>0]|0;o=m<<24>>24<0;m=m&255;do if(((o?f[g+12>>2]|0:m)|0)==(x|0)){d=f[j>>2]|0;if(o)if(!(Wl(d,y,x)|0)){s=55;break b}else break;if((d&255)<<24>>24==(b[y>>0]|0)){d=y;do{m=m+-1|0;j=j+1|0;if(!m){s=55;break b}d=d+1|0}while((b[j>>0]|0)==(b[d>>0]|0))}}while(0);g=f[g>>2]|0;if(!g){i=r;break a}}if((s|0)==55){Eo(z);u=A;return}}else{if(j){while(1){if((((f[g+4>>2]|0)>>>0)%(c>>>0)|0|0)!=(r|0)){i=r;break a}y=b[g+8+11>>0]|0;if(!((y<<24>>24<0?f[g+12>>2]|0:y&255)|0))break;g=f[g>>2]|0;if(!g){i=r;break a}}Eo(z);u=A;return}c:while(1){if((((f[g+4>>2]|0)>>>0)%(c>>>0)|0|0)!=(r|0)){i=r;break a}j=g+8|0;m=b[j+11>>0]|0;o=m<<24>>24<0;m=m&255;do if(((o?f[g+12>>2]|0:m)|0)==(x|0)){d=f[j>>2]|0;if(o)if(!(Wl(d,y,x)|0)){s=55;break c}else break;if((d&255)<<24>>24==(b[y>>0]|0)){d=y;do{m=m+-1|0;j=j+1|0;if(!m){s=55;break c}d=d+1|0}while((b[j>>0]|0)==(b[d>>0]|0))}}while(0);g=f[g>>2]|0;if(!g){i=r;break a}}if((s|0)==55){Eo(z);u=A;return}}}else i=r}else i=0;while(0);ki(e,a,w,z);d=a+12|0;l=$(((f[d>>2]|0)+1|0)>>>0);B=$(c>>>0);k=$(n[a+16>>2]);do if(v|l>$(B*k)){g=(c>>>0<3|(c+-1&c|0)!=0)&1|c<<1;i=~~$(W($(l/k)))>>>0;Vi(a,g>>>0>>0?i:g);g=f[t>>2]|0;i=g+-1|0;if(!(i&g)){c=g;i=i&w;break}else{c=g;i=(w>>>0)%(g>>>0)|0;break}}while(0);g=f[(f[a>>2]|0)+(i<<2)>>2]|0;if(!g){j=a+8|0;f[f[e>>2]>>2]=f[j>>2];f[j>>2]=f[e>>2];f[(f[a>>2]|0)+(i<<2)>>2]=j;j=f[e>>2]|0;g=f[j>>2]|0;if(g){g=f[g+4>>2]|0;i=c+-1|0;if(!(i&c))g=g&i;else g=(g>>>0)%(c>>>0)|0;f[(f[a>>2]|0)+(g<<2)>>2]=j}}else{f[f[e>>2]>>2]=f[g>>2];f[g>>2]=f[e>>2]}f[d>>2]=(f[d>>2]|0)+1;f[e>>2]=0;Eo(z);u=A;return}function bc(a,c,d){a=a|0;c=c|0;d=d|0;var e=0,g=0,i=0,j=0,k=Ka,l=Ka,m=0,o=0,p=0,q=0,r=0,s=0,t=0,v=0,w=0,x=0,y=0,z=0,A=Ka;z=u;u=u+32|0;e=z+16|0;y=z;j=Rd(a,c)|0;if(j|0){f[y>>2]=j;f[e>>2]=f[y>>2];Ng(a,e)|0}Rl(y,c);f[y+12>>2]=f[d>>2];w=b[y+11>>0]|0;v=w<<24>>24<0;x=v?f[y>>2]|0:y;w=v?f[y+4>>2]|0:w&255;if(w>>>0>3){j=x;m=w;c=w;while(1){v=X(h[j>>0]|h[j+1>>0]<<8|h[j+2>>0]<<16|h[j+3>>0]<<24,1540483477)|0;m=(X(v>>>24^v,1540483477)|0)^(X(m,1540483477)|0);c=c+-4|0;if(c>>>0<=3)break;else j=j+4|0}v=w+-4|0;c=v&-4;d=x+(c+4)|0;j=m;c=v-c|0}else{d=x;j=w;c=w}switch(c|0){case 3:{o=h[d+2>>0]<<16^j;r=8;break}case 2:{o=j;r=8;break}case 1:{p=j;r=9;break}default:q=j}if((r|0)==8){p=h[d+1>>0]<<8^o;r=9}if((r|0)==9)q=X(h[d>>0]^p,1540483477)|0;v=X(q>>>13^q,1540483477)|0;v=v>>>15^v;s=a+4|0;c=f[s>>2]|0;t=(c|0)==0;a:do if(!t){p=c+-1|0;d=(p&c|0)==0;if(d)q=v&p;else q=(v>>>0)%(c>>>0)|0;j=f[(f[a>>2]|0)+(q<<2)>>2]|0;if((j|0)!=0?(g=f[j>>2]|0,(g|0)!=0):0){j=(w|0)==0;if(d){if(j){while(1){if((f[g+4>>2]&p|0)!=(q|0)){i=q;break a}x=b[g+8+11>>0]|0;if(!((x<<24>>24<0?f[g+12>>2]|0:x&255)|0))break;g=f[g>>2]|0;if(!g){i=q;break a}}Eo(y);u=z;return}b:while(1){if((f[g+4>>2]&p|0)!=(q|0)){i=q;break a}j=g+8|0;m=b[j+11>>0]|0;o=m<<24>>24<0;m=m&255;do if(((o?f[g+12>>2]|0:m)|0)==(w|0)){d=f[j>>2]|0;if(o)if(!(Wl(d,x,w)|0)){r=55;break b}else break;if((d&255)<<24>>24==(b[x>>0]|0)){d=x;do{m=m+-1|0;j=j+1|0;if(!m){r=55;break b}d=d+1|0}while((b[j>>0]|0)==(b[d>>0]|0))}}while(0);g=f[g>>2]|0;if(!g){i=q;break a}}if((r|0)==55){Eo(y);u=z;return}}else{if(j){while(1){if((((f[g+4>>2]|0)>>>0)%(c>>>0)|0|0)!=(q|0)){i=q;break a}x=b[g+8+11>>0]|0;if(!((x<<24>>24<0?f[g+12>>2]|0:x&255)|0))break;g=f[g>>2]|0;if(!g){i=q;break a}}Eo(y);u=z;return}c:while(1){if((((f[g+4>>2]|0)>>>0)%(c>>>0)|0|0)!=(q|0)){i=q;break a}j=g+8|0;m=b[j+11>>0]|0;o=m<<24>>24<0;m=m&255;do if(((o?f[g+12>>2]|0:m)|0)==(w|0)){d=f[j>>2]|0;if(o)if(!(Wl(d,x,w)|0)){r=55;break c}else break;if((d&255)<<24>>24==(b[x>>0]|0)){d=x;do{m=m+-1|0;j=j+1|0;if(!m){r=55;break c}d=d+1|0}while((b[j>>0]|0)==(b[d>>0]|0))}}while(0);g=f[g>>2]|0;if(!g){i=q;break a}}if((r|0)==55){Eo(y);u=z;return}}}else i=q}else i=0;while(0);lj(e,a,v,y);d=a+12|0;l=$(((f[d>>2]|0)+1|0)>>>0);A=$(c>>>0);k=$(n[a+16>>2]);do if(t|l>$(A*k)){g=(c>>>0<3|(c+-1&c|0)!=0)&1|c<<1;i=~~$(W($(l/k)))>>>0;Vi(a,g>>>0>>0?i:g);g=f[s>>2]|0;i=g+-1|0;if(!(i&g)){c=g;i=i&v;break}else{c=g;i=(v>>>0)%(g>>>0)|0;break}}while(0);g=f[(f[a>>2]|0)+(i<<2)>>2]|0;if(!g){j=a+8|0;f[f[e>>2]>>2]=f[j>>2];f[j>>2]=f[e>>2];f[(f[a>>2]|0)+(i<<2)>>2]=j;j=f[e>>2]|0;g=f[j>>2]|0;if(g){g=f[g+4>>2]|0;i=c+-1|0;if(!(i&c))g=g&i;else g=(g>>>0)%(c>>>0)|0;f[(f[a>>2]|0)+(g<<2)>>2]=j}}else{f[f[e>>2]>>2]=f[g>>2];f[g>>2]=f[e>>2]}f[d>>2]=(f[d>>2]|0)+1;f[e>>2]=0;Eo(y);u=z;return}function cc(a,c,d){a=a|0;c=c|0;d=d|0;var e=0,g=0,i=0,j=0,k=0,l=0,m=Ka,o=Ka,p=0,q=0,r=0,s=0,t=0,v=0,w=0,x=0,y=0,z=0,A=0,B=0,C=0,D=0,E=0,F=0,G=0,H=0,J=0,K=0,L=0,M=0,N=0,O=0,P=0,Q=0,R=0,S=0,T=Ka;S=u;u=u+48|0;R=S+20|0;M=S+16|0;N=S+12|0;Q=S;K=R+16|0;f[R>>2]=0;f[R+4>>2]=0;f[R+8>>2]=0;f[R+12>>2]=0;n[K>>2]=$(1.0);P=a+80|0;ml(Q,f[P>>2]|0);g=f[P>>2]|0;if((g|0)>0){A=f[d>>2]|0;F=c+48|0;G=c+40|0;D=R+4|0;E=R+12|0;C=R+8|0;H=a+40|0;B=a+64|0;J=0;y=0;while(1){v=A+J|0;d=F;x=f[d>>2]|0;d=f[d+4>>2]|0;w=G;w=En(v|0,((v|0)<0)<<31>>31|0,f[w>>2]|0,f[w+4>>2]|0)|0;d=Do(w|0,I|0,x|0,d|0)|0;d=(f[f[c>>2]>>2]|0)+d|0;d=h[d>>0]|h[d+1>>0]<<8|h[d+2>>0]<<16|h[d+3>>0]<<24;f[M>>2]=d;f[N>>2]=d;d=$g(R,N)|0;if(!d){t=f[N>>2]|0;k=t&255;r=t>>>8;l=r&255;s=t>>>16;p=s&255;v=t>>>24;q=v&255;t=t&255;r=r&255;s=s&255;x=(((t^318)+239^r)+239^s)+239^v;g=f[D>>2]|0;w=(g|0)==0;a:do if(!w){j=g+-1|0;i=(j&g|0)==0;if(i)d=x&j;else d=(x>>>0)%(g>>>0)|0;e=f[(f[R>>2]|0)+(d<<2)>>2]|0;if((e|0)!=0?(L=f[e>>2]|0,(L|0)!=0):0)if(i){e=L;while(1){if((f[e+4>>2]&j|0)!=(d|0)){z=25;break a}if((((b[e+8>>0]|0)==k<<24>>24?(b[e+9>>0]|0)==l<<24>>24:0)?(b[e+10>>0]|0)==p<<24>>24:0)?(b[e+11>>0]|0)==q<<24>>24:0)break a;e=f[e>>2]|0;if(!e){z=25;break}}}else{e=L;while(1){if((((f[e+4>>2]|0)>>>0)%(g>>>0)|0|0)!=(d|0)){z=25;break a}if((((b[e+8>>0]|0)==k<<24>>24?(b[e+9>>0]|0)==l<<24>>24:0)?(b[e+10>>0]|0)==p<<24>>24:0)?(b[e+11>>0]|0)==q<<24>>24:0)break a;e=f[e>>2]|0;if(!e){z=25;break}}}else z=25}else{d=0;z=25}while(0);if((z|0)==25){z=0;i=Fn(16)|0;q=i+8|0;v=v<<24|t|s<<16|r<<8;b[q>>0]=v;b[q+1>>0]=v>>8;b[q+2>>0]=v>>16;b[q+3>>0]=v>>24;f[i+12>>2]=y;f[i+4>>2]=x;f[i>>2]=0;o=$(((f[E>>2]|0)+1|0)>>>0);T=$(g>>>0);m=$(n[K>>2]);do if(w|o>$(T*m)){d=(g>>>0<3|(g+-1&g|0)!=0)&1|g<<1;e=~~$(W($(o/m)))>>>0;Ji(R,d>>>0>>0?e:d);d=f[D>>2]|0;e=d+-1|0;if(!(e&d)){g=d;d=e&x;break}else{g=d;d=(x>>>0)%(d>>>0)|0;break}}while(0);e=(f[R>>2]|0)+(d<<2)|0;d=f[e>>2]|0;if(!d){f[i>>2]=f[C>>2];f[C>>2]=i;f[e>>2]=C;d=f[i>>2]|0;if(d|0){d=f[d+4>>2]|0;e=g+-1|0;if(!(e&g))d=d&e;else d=(d>>>0)%(g>>>0)|0;d=(f[R>>2]|0)+(d<<2)|0;z=36}}else{f[i>>2]=f[d>>2];z=36}if((z|0)==36){z=0;f[d>>2]=i}f[E>>2]=(f[E>>2]|0)+1}x=H;d=f[x>>2]|0;x=En(d|0,f[x+4>>2]|0,y|0,((y|0)<0)<<31>>31|0)|0;Mh((f[f[B>>2]>>2]|0)+x|0,M|0,d|0)|0;f[(f[Q>>2]|0)+(J<<2)>>2]=y;d=y+1|0}else{f[(f[Q>>2]|0)+(J<<2)>>2]=f[d+12>>2];d=y}J=J+1|0;g=f[P>>2]|0;if((J|0)>=(g|0)){p=d;break}else y=d}}else p=0;if((p|0)!=(g|0)){l=a+84|0;if(!(b[l>>0]|0)){g=f[a+68>>2]|0;d=(f[a+72>>2]|0)-g|0;if((d|0)>0){i=f[Q>>2]|0;e=d>>2;d=0;do{a=g+(d<<2)|0;f[a>>2]=f[i+(f[a>>2]<<2)>>2];d=d+1|0}while((d|0)<(e|0))}}else{b[l>>0]=0;j=a+68|0;i=a+72|0;e=f[i>>2]|0;d=f[j>>2]|0;k=e-d>>2;if(g>>>0<=k>>>0){if(g>>>0>>0?(O=d+(g<<2)|0,(e|0)!=(O|0)):0)f[i>>2]=e+(~((e+-4-O|0)>>>2)<<2)}else{_h(j,g-k|0,3140);g=f[P>>2]|0}if((g|0)>0){i=f[Q>>2]|0;if(b[l>>0]|0)Fa(16608,16627,91,16668);d=f[a+68>>2]|0;e=0;do{f[d+(e<<2)>>2]=f[i+(e<<2)>>2];e=e+1|0}while((e|0)<(g|0))}}f[P>>2]=p}g=f[Q>>2]|0;if(g|0){e=Q+4|0;d=f[e>>2]|0;if((d|0)!=(g|0))f[e>>2]=d+(~((d+-4-g|0)>>>2)<<2);Lq(g)}d=f[R+8>>2]|0;if(d|0)do{Q=d;d=f[d>>2]|0;Lq(Q)}while((d|0)!=0);d=f[R>>2]|0;f[R>>2]=0;if(!d){u=S;return p|0}Lq(d);u=S;return p|0}function dc(a,b,c,d,e,g){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;g=g|0;var h=0,i=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,B=0,C=0,D=0,E=0,F=0,G=0,H=0;F=a+8|0;f[F>>2]=e;j=a+32|0;i=a+36|0;h=f[i>>2]|0;g=f[j>>2]|0;k=h-g>>2;if(k>>>0>=e>>>0){if(k>>>0>e>>>0?(l=g+(e<<2)|0,(h|0)!=(l|0)):0)f[i>>2]=h+(~((h+-4-l|0)>>>2)<<2)}else jj(j,e-k|0);if(d|0){g=f[b>>2]|0;if((d|0)>1){i=1;h=g;do{D=f[b+(i<<2)>>2]|0;z=(D|0)<(g|0);g=z?D:g;h=z?h:(D|0)>(h|0)?D:h;i=i+1|0}while((i|0)!=(d|0))}else h=g;f[a+12>>2]=g;f[a+16>>2]=h;D=1-g+h|0;f[a+20>>2]=D;g=(D|0)/2|0;h=a+24|0;f[h>>2]=g;f[a+28>>2]=0-g;if(!(D&1))f[h>>2]=g+-1}p=e>>>0>1073741823?-1:e<<2;D=Iq(p)|0;Xj(D|0,0,p|0)|0;p=f[a+48>>2]|0;u=a+56|0;i=f[u>>2]|0;h=f[i+4>>2]|0;g=f[i>>2]|0;j=h-g|0;a:do if((j|0)>4){q=f[a+52>>2]|0;x=a+16|0;s=a+32|0;z=a+12|0;y=a+28|0;w=a+20|0;v=a+24|0;r=p+12|0;t=(e|0)>0;n=j>>2;while(1){o=n+-1|0;if(h-g>>2>>>0<=o>>>0){yp(i);g=f[i>>2]|0}g=f[g+(o<<2)>>2]|0;m=X(o,e)|0;if((g|0)>=0?(E=f[(f[r>>2]|0)+(g<<2)>>2]|0,(E|0)>=0):0){h=f[p>>2]|0;i=f[q>>2]|0;j=f[i+(f[h+(E<<2)>>2]<<2)>>2]|0;g=E+1|0;g=((g|0)%3|0|0)==0?E+-2|0:g;if((g|0)<0)g=-1073741824;else g=f[h+(g<<2)>>2]|0;k=f[i+(g<<2)>>2]|0;g=(((E>>>0)%3|0|0)==0?2:-1)+E|0;if((g|0)<0)g=-1073741824;else g=f[h+(g<<2)>>2]|0;g=f[i+(g<<2)>>2]|0;if((j|0)<(o|0)&(k|0)<(o|0)&(g|0)<(o|0)){j=X(j,e)|0;i=X(k,e)|0;h=X(g,e)|0;if(t){g=0;do{f[D+(g<<2)>>2]=(f[b+(g+h<<2)>>2]|0)+(f[b+(g+i<<2)>>2]|0)-(f[b+(g+j<<2)>>2]|0);g=g+1|0}while((g|0)!=(e|0))}l=b+(m<<2)|0;d=c+(m<<2)|0;g=f[F>>2]|0;if((g|0)>0){k=0;i=D;do{if((g|0)>0){j=0;do{g=f[i+(j<<2)>>2]|0;h=f[x>>2]|0;if((g|0)>(h|0)){g=f[s>>2]|0;f[g+(j<<2)>>2]=h}else{H=f[z>>2]|0;h=f[s>>2]|0;f[h+(j<<2)>>2]=(g|0)<(H|0)?H:g;g=h}j=j+1|0}while((j|0)<(f[F>>2]|0));i=g}else i=f[s>>2]|0;g=(f[l+(k<<2)>>2]|0)-(f[i+(k<<2)>>2]|0)|0;h=d+(k<<2)|0;f[h>>2]=g;if((g|0)>=(f[y>>2]|0)){if((g|0)>(f[v>>2]|0)){g=g-(f[w>>2]|0)|0;G=54}}else{g=(f[w>>2]|0)+g|0;G=54}if((G|0)==54){G=0;f[h>>2]=g}k=k+1|0;g=f[F>>2]|0}while((k|0)<(g|0))}}else G=27}else G=27;if((G|0)==27?(G=0,B=b+(m<<2)|0,C=c+(m<<2)|0,A=f[F>>2]|0,(A|0)>0):0){h=A;k=0;j=b+((X(n+-2|0,e)|0)<<2)|0;while(1){if((h|0)>0){i=0;do{g=f[j+(i<<2)>>2]|0;h=f[x>>2]|0;if((g|0)>(h|0)){g=f[s>>2]|0;f[g+(i<<2)>>2]=h}else{n=f[z>>2]|0;H=f[s>>2]|0;f[H+(i<<2)>>2]=(g|0)<(n|0)?n:g;g=H}i=i+1|0}while((i|0)<(f[F>>2]|0))}else g=f[s>>2]|0;h=(f[B+(k<<2)>>2]|0)-(f[g+(k<<2)>>2]|0)|0;i=C+(k<<2)|0;f[i>>2]=h;if((h|0)>=(f[y>>2]|0)){if((h|0)>(f[v>>2]|0)){h=h-(f[w>>2]|0)|0;G=41}}else{h=(f[w>>2]|0)+h|0;G=41}if((G|0)==41){G=0;f[i>>2]=h}k=k+1|0;h=f[F>>2]|0;if((k|0)>=(h|0))break;else j=g}}if((o|0)<=1)break a;i=f[u>>2]|0;g=f[i>>2]|0;h=f[i+4>>2]|0;n=o}}while(0);if((e|0)>0)Xj(D|0,0,e<<2|0)|0;g=f[F>>2]|0;if((g|0)<=0){Jq(D);return 1}n=a+16|0;d=a+32|0;p=a+12|0;o=a+28|0;m=a+20|0;l=a+24|0;k=0;i=D;do{if((g|0)>0){j=0;do{g=f[i+(j<<2)>>2]|0;h=f[n>>2]|0;if((g|0)>(h|0)){g=f[d>>2]|0;f[g+(j<<2)>>2]=h}else{a=f[p>>2]|0;H=f[d>>2]|0;f[H+(j<<2)>>2]=(g|0)<(a|0)?a:g;g=H}j=j+1|0}while((j|0)<(f[F>>2]|0));i=g}else i=f[d>>2]|0;g=(f[b+(k<<2)>>2]|0)-(f[i+(k<<2)>>2]|0)|0;h=c+(k<<2)|0;f[h>>2]=g;if((g|0)>=(f[o>>2]|0)){if((g|0)>(f[l>>2]|0)){g=g-(f[m>>2]|0)|0;G=68}}else{g=(f[m>>2]|0)+g|0;G=68}if((G|0)==68){G=0;f[h>>2]=g}k=k+1|0;g=f[F>>2]|0}while((k|0)<(g|0));Jq(D);return 1}function ec(a,c,d){a=a|0;c=c|0;d=d|0;var e=0,g=0,h=0,i=0,j=0,k=0,l=0,m=Ka,o=Ka,p=0,q=0,r=0,s=0,t=0,v=0,w=0,x=0,y=0,z=0,A=0,B=0,C=0,D=0,E=0,F=0,G=0,H=0,J=0,K=0,L=0,M=0,N=0,O=0,P=0,Q=0,R=Ka;Q=u;u=u+80|0;P=Q+48|0;K=Q+32|0;L=Q+16|0;O=Q;H=P+16|0;f[P>>2]=0;f[P+4>>2]=0;f[P+8>>2]=0;f[P+12>>2]=0;n[H>>2]=$(1.0);N=a+80|0;ml(O,f[N>>2]|0);g=f[N>>2]|0;if((g|0)>0){v=f[d>>2]|0;A=c+48|0;B=c+40|0;E=L+4|0;F=L+8|0;G=L+12|0;y=P+4|0;z=P+12|0;x=P+8|0;C=a+40|0;w=a+64|0;D=0;s=0;while(1){g=v+D|0;d=A;e=f[d>>2]|0;d=f[d+4>>2]|0;h=B;g=En(f[h>>2]|0,f[h+4>>2]|0,g|0,((g|0)<0)<<31>>31|0)|0;d=Do(g|0,I|0,e|0,d|0)|0;d=(f[f[c>>2]>>2]|0)+d|0;e=K;g=d;h=e+16|0;do{b[e>>0]=b[g>>0]|0;e=e+1|0;g=g+1|0}while((e|0)<(h|0));Om(L|0,d|0,16)|0;d=hh(P,L)|0;if(!d){i=f[L>>2]|0;j=f[E>>2]|0;k=f[F>>2]|0;l=f[G>>2]|0;r=(((i^318)+239^j)+239^k)+239^l;p=f[y>>2]|0;q=(p|0)==0;a:do if(!q){h=p+-1|0;g=(h&p|0)==0;if(g)d=r&h;else d=(r>>>0)%(p>>>0)|0;e=f[(f[P>>2]|0)+(d<<2)>>2]|0;if((e|0)!=0?(J=f[e>>2]|0,(J|0)!=0):0)if(g){e=J;while(1){if((f[e+4>>2]&h|0)!=(d|0)){t=25;break a}if((((f[e+8>>2]|0)==(i|0)?(f[e+12>>2]|0)==(j|0):0)?(f[e+16>>2]|0)==(k|0):0)?(f[e+20>>2]|0)==(l|0):0)break a;e=f[e>>2]|0;if(!e){t=25;break}}}else{e=J;while(1){if((((f[e+4>>2]|0)>>>0)%(p>>>0)|0|0)!=(d|0)){t=25;break a}if((((f[e+8>>2]|0)==(i|0)?(f[e+12>>2]|0)==(j|0):0)?(f[e+16>>2]|0)==(k|0):0)?(f[e+20>>2]|0)==(l|0):0)break a;e=f[e>>2]|0;if(!e){t=25;break}}}else t=25}else{d=0;t=25}while(0);if((t|0)==25){t=0;h=Fn(28)|0;f[h+8>>2]=i;f[h+12>>2]=j;f[h+16>>2]=k;f[h+20>>2]=l;f[h+24>>2]=s;f[h+4>>2]=r;f[h>>2]=0;o=$(((f[z>>2]|0)+1|0)>>>0);R=$(p>>>0);m=$(n[H>>2]);do if(q|o>$(R*m)){d=(p>>>0<3|(p+-1&p|0)!=0)&1|p<<1;e=~~$(W($(o/m)))>>>0;Gi(P,d>>>0>>0?e:d);d=f[y>>2]|0;e=d+-1|0;if(!(e&d)){g=d;d=e&r;break}else{g=d;d=(r>>>0)%(d>>>0)|0;break}}else g=p;while(0);e=(f[P>>2]|0)+(d<<2)|0;d=f[e>>2]|0;if(!d){f[h>>2]=f[x>>2];f[x>>2]=h;f[e>>2]=x;d=f[h>>2]|0;if(d|0){d=f[d+4>>2]|0;e=g+-1|0;if(!(e&g))d=d&e;else d=(d>>>0)%(g>>>0)|0;d=(f[P>>2]|0)+(d<<2)|0;t=36}}else{f[h>>2]=f[d>>2];t=36}if((t|0)==36){t=0;f[d>>2]=h}f[z>>2]=(f[z>>2]|0)+1}r=C;d=f[r>>2]|0;r=En(d|0,f[r+4>>2]|0,s|0,((s|0)<0)<<31>>31|0)|0;Mh((f[f[w>>2]>>2]|0)+r|0,K|0,d|0)|0;f[(f[O>>2]|0)+(D<<2)>>2]=s;d=s+1|0}else{f[(f[O>>2]|0)+(D<<2)>>2]=f[d+24>>2];d=s}D=D+1|0;g=f[N>>2]|0;if((D|0)>=(g|0)){l=d;break}else s=d}}else l=0;if((l|0)!=(g|0)){k=a+84|0;if(!(b[k>>0]|0)){g=f[a+68>>2]|0;d=(f[a+72>>2]|0)-g|0;if((d|0)>0){h=f[O>>2]|0;e=d>>2;d=0;do{a=g+(d<<2)|0;f[a>>2]=f[h+(f[a>>2]<<2)>>2];d=d+1|0}while((d|0)<(e|0))}}else{b[k>>0]=0;i=a+68|0;h=a+72|0;e=f[h>>2]|0;d=f[i>>2]|0;j=e-d>>2;if(g>>>0<=j>>>0){if(g>>>0>>0?(M=d+(g<<2)|0,(e|0)!=(M|0)):0)f[h>>2]=e+(~((e+-4-M|0)>>>2)<<2)}else{_h(i,g-j|0,3140);g=f[N>>2]|0}if((g|0)>0){h=f[O>>2]|0;if(b[k>>0]|0)Fa(16608,16627,91,16668);d=f[a+68>>2]|0;e=0;do{f[d+(e<<2)>>2]=f[h+(e<<2)>>2];e=e+1|0}while((e|0)<(g|0))}}f[N>>2]=l}g=f[O>>2]|0;if(g|0){e=O+4|0;d=f[e>>2]|0;if((d|0)!=(g|0))f[e>>2]=d+(~((d+-4-g|0)>>>2)<<2);Lq(g)}d=f[P+8>>2]|0;if(d|0)do{O=d;d=f[d>>2]|0;Lq(O)}while((d|0)!=0);d=f[P>>2]|0;f[P>>2]=0;if(!d){u=Q;return l|0}Lq(d);u=Q;return l|0}function fc(a,c,e){a=a|0;c=c|0;e=e|0;var g=0,i=0,j=0,k=0,l=0,m=0,o=Ka,p=Ka,q=0,r=0,s=0,t=0,v=0,w=0,x=0,y=0,z=0,A=0,B=0,C=0,D=0,E=0,F=0,G=0,H=0,J=0,K=0,L=Ka;K=u;u=u+48|0;J=K+12|0;E=K+32|0;H=K;D=J+16|0;f[J>>2]=0;f[J+4>>2]=0;f[J+8>>2]=0;f[J+12>>2]=0;n[D>>2]=$(1.0);G=a+80|0;ml(H,f[G>>2]|0);i=f[G>>2]|0;a:do if((i|0)>0){A=c+48|0;B=c+40|0;x=J+4|0;z=J+12|0;w=J+8|0;C=a+40|0;y=a+64|0;v=f[e>>2]|0;i=0;t=0;s=0;while(1){k=v+t|0;m=A;q=f[m>>2]|0;m=f[m+4>>2]|0;l=B;l=En(k|0,((k|0)<0)<<31>>31|0,f[l>>2]|0,f[l+4>>2]|0)|0;m=Do(l|0,I|0,q|0,m|0)|0;m=(f[f[c>>2]>>2]|0)+m|0;m=h[m>>0]|h[m+1>>0]<<8;d[E>>1]=m;q=(m^318)&65535;b:do if(i){l=i+-1|0;k=(l&i|0)==0;if(k)g=l&q;else g=(q>>>0)%(i>>>0)|0;j=f[J>>2]|0;e=f[j+(g<<2)>>2]|0;c:do if(e|0){if(k)do{e=f[e>>2]|0;if(!e)break c;if((f[e+4>>2]&l|0)!=(g|0))break c}while((d[e+8>>1]|0)!=m<<16>>16);else do{e=f[e>>2]|0;if(!e)break c;if((((f[e+4>>2]|0)>>>0)%(i>>>0)|0|0)!=(g|0))break c}while((d[e+8>>1]|0)!=m<<16>>16);f[(f[H>>2]|0)+(t<<2)>>2]=f[e+12>>2];g=s;break b}while(0);if(k)e=l&q;else e=(q>>>0)%(i>>>0)|0;g=f[j+(e<<2)>>2]|0;if(g)if(k)while(1){g=f[g>>2]|0;if(!g){g=0;r=28;break b}if((f[g+4>>2]&l|0)!=(e|0)){g=0;r=28;break b}if((d[g+8>>1]|0)==m<<16>>16){r=41;break}}else while(1){g=f[g>>2]|0;if(!g){g=0;r=28;break b}if((((f[g+4>>2]|0)>>>0)%(i>>>0)|0|0)!=(e|0)){g=0;r=28;break b}if((d[g+8>>1]|0)==m<<16>>16){r=41;break}}else{g=0;r=28}}else{i=0;e=0;g=1;r=28}while(0);if((r|0)==28){r=0;j=Fn(16)|0;d[j+8>>1]=m;f[j+12>>2]=s;f[j+4>>2]=q;f[j>>2]=0;p=$(((f[z>>2]|0)+1|0)>>>0);L=$(i>>>0);o=$(n[D>>2]);do if(g|p>$(L*o)){e=(i>>>0<3|(i+-1&i|0)!=0)&1|i<<1;g=~~$(W($(p/o)))>>>0;Fi(J,e>>>0>>0?g:e);e=f[x>>2]|0;g=e+-1|0;if(!(g&e)){i=e;e=g&q;break}else{i=e;e=(q>>>0)%(e>>>0)|0;break}}while(0);g=(f[J>>2]|0)+(e<<2)|0;e=f[g>>2]|0;if(!e){f[j>>2]=f[w>>2];f[w>>2]=j;f[g>>2]=w;e=f[j>>2]|0;if(e|0){e=f[e+4>>2]|0;g=i+-1|0;if(!(g&i))e=e&g;else e=(e>>>0)%(i>>>0)|0;e=(f[J>>2]|0)+(e<<2)|0;r=39}}else{f[j>>2]=f[e>>2];r=39}if((r|0)==39)f[e>>2]=j;f[z>>2]=(f[z>>2]|0)+1;r=41}if((r|0)==41){r=0;q=C;g=f[q>>2]|0;q=En(g|0,f[q+4>>2]|0,s|0,((s|0)<0)<<31>>31|0)|0;Mh((f[f[y>>2]>>2]|0)+q|0,E|0,g|0)|0;f[(f[H>>2]|0)+(t<<2)>>2]=s;g=s+1|0}e=t+1|0;i=f[G>>2]|0;if((e|0)>=(i|0)){q=g;break a}i=f[x>>2]|0;t=e;s=g}}else q=0;while(0);if((q|0)!=(i|0)){m=a+84|0;if(!(b[m>>0]|0)){i=f[a+68>>2]|0;e=(f[a+72>>2]|0)-i|0;if((e|0)>0){j=f[H>>2]|0;g=e>>2;e=0;do{a=i+(e<<2)|0;f[a>>2]=f[j+(f[a>>2]<<2)>>2];e=e+1|0}while((e|0)<(g|0))}}else{b[m>>0]=0;k=a+68|0;j=a+72|0;g=f[j>>2]|0;e=f[k>>2]|0;l=g-e>>2;if(i>>>0<=l>>>0){if(i>>>0>>0?(F=e+(i<<2)|0,(g|0)!=(F|0)):0)f[j>>2]=g+(~((g+-4-F|0)>>>2)<<2)}else{_h(k,i-l|0,3140);i=f[G>>2]|0}if((i|0)>0){j=f[H>>2]|0;if(b[m>>0]|0)Fa(16608,16627,91,16668);e=f[a+68>>2]|0;g=0;do{f[e+(g<<2)>>2]=f[j+(g<<2)>>2];g=g+1|0}while((g|0)<(i|0))}}f[G>>2]=q}i=f[H>>2]|0;if(i|0){g=H+4|0;e=f[g>>2]|0;if((e|0)!=(i|0))f[g>>2]=e+(~((e+-4-i|0)>>>2)<<2);Lq(i)}e=f[J+8>>2]|0;if(e|0)do{H=e;e=f[e>>2]|0;Lq(H)}while((e|0)!=0);e=f[J>>2]|0;f[J>>2]=0;if(!e){u=K;return q|0}Lq(e);u=K;return q|0}function gc(a,c){a=a|0;c=c|0;var d=0,e=0,g=0,h=0,i=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,v=0,w=0,x=0,y=0,z=0,A=0,B=0,C=0,D=0;D=u;u=u+192|0;w=D+152|0;C=D+144|0;y=D+72|0;x=D;v=D+112|0;B=D+104|0;e=D+68|0;i=(Ra[f[(f[a>>2]|0)+40>>2]&127](a)|0)+52|0;i=f[(f[(f[i>>2]|0)+72>>2]|0)+(c<<2)>>2]|0;d=(Ra[f[(f[a>>2]|0)+40>>2]&127](a)|0)+4|0;d=f[d>>2]|0;if((c|0)<=-1)Fa(17509,17693,63,17731);g=f[d+8>>2]|0;if(((f[d+12>>2]|0)-g>>2|0)<=(c|0))Fa(17639,17693,64,17731);h=f[g+(c<<2)>>2]|0;f[C>>2]=-1;z=a+184|0;d=f[a+188>>2]|0;g=f[z>>2]|0;r=g;a:do if((d|0)==(g|0))j=-1;else{g=(d-g|0)/108|0;d=0;while(1){if((f[r+(d*108|0)>>2]|0)==(c|0))break;d=d+1|0;if(d>>>0>=g>>>0){j=-1;break a}}f[C>>2]=d;j=d}while(0);d=(f[h+56>>2]|0)==0;do if((i|0)==0|d)A=13;else{if((i|0)==1?b[r+(j*108|0)+28>>0]|0:0){A=13;break}h=Fn(88)|0;k=f[a+8>>2]|0;m=r+(j*108|0)+76|0;f[h+4>>2]=0;f[h>>2]=5780;n=h+12|0;f[n>>2]=5804;o=h+64|0;f[o>>2]=0;f[h+68>>2]=0;f[h+72>>2]=0;g=h+16|0;i=g+44|0;do{f[g>>2]=0;g=g+4|0}while((g|0)<(i|0));f[h+76>>2]=k;f[h+80>>2]=m;p=h+84|0;f[p>>2]=0;f[y>>2]=5804;d=y+4|0;l=d+4|0;f[l>>2]=0;f[l+4>>2]=0;f[l+8>>2]=0;f[l+12>>2]=0;f[l+16>>2]=0;f[l+20>>2]=0;l=r+(j*108|0)+4|0;s=x+4|0;f[s>>2]=5804;q=x+56|0;f[q>>2]=0;t=x+60|0;f[t>>2]=0;f[x+64>>2]=0;g=x+8|0;i=g+44|0;do{f[g>>2]=0;g=g+4|0}while((g|0)<(i|0));f[d>>2]=l;g=f[r+(j*108|0)+68>>2]|0;g=((f[g+4>>2]|0)-(f[g>>2]|0)>>2>>>0)/3|0;b[w>>0]=0;Th(y+8|0,g,w);Oa[f[(f[y>>2]|0)+8>>2]&127](y);zg(v,y);zg(w,v);f[x>>2]=f[w+4>>2];g=x+4|0;jh(g,w)|0;f[w>>2]=5804;d=f[w+20>>2]|0;if(d|0)Lq(d);d=f[w+8>>2]|0;if(d|0)Lq(d);f[x+36>>2]=l;f[x+40>>2]=m;f[x+44>>2]=k;f[x+48>>2]=h;f[v>>2]=5804;d=f[v+20>>2]|0;if(d|0)Lq(d);d=f[v+8>>2]|0;if(d|0)Lq(d);f[p>>2]=a+72;f[h+8>>2]=f[x>>2];jh(n,g)|0;d=h+44|0;w=x+36|0;f[d>>2]=f[w>>2];f[d+4>>2]=f[w+4>>2];f[d+8>>2]=f[w+8>>2];f[d+12>>2]=f[w+12>>2];b[d+16>>0]=b[w+16>>0]|0;Cg(o,f[q>>2]|0,f[t>>2]|0);d=f[q>>2]|0;if(d|0){g=f[t>>2]|0;if((g|0)!=(d|0))f[t>>2]=g+(~((g+-4-d|0)>>>2)<<2);Lq(d)}f[s>>2]=5804;d=f[x+24>>2]|0;if(d|0)Lq(d);d=f[x+12>>2]|0;if(d|0)Lq(d);f[y>>2]=5804;d=f[y+20>>2]|0;if(d|0)Lq(d);d=f[y+8>>2]|0;if(d|0)Lq(d);g=0}while(0);if((A|0)==13){if(d){d=a+40|0;y=(Ra[f[(f[a>>2]|0)+40>>2]&127](a)|0)+48|0;if(!($j(f[y>>2]|0)|0)){Nf(w,a,d);d=f[w>>2]|0;g=1}else A=17}else{b[r+(j*108|0)+72>>0]=0;d=r+(j*108|0)+76|0;A=17}if((A|0)==17){be(w,a,d);d=f[w>>2]|0;g=0}if(!d){a=0;u=D;return a|0}else h=d}d=f[C>>2]|0;if((d|0)==-1)d=a+68|0;else d=(f[z>>2]|0)+(d*108|0)+104|0;f[d>>2]=g;i=Fn(64)|0;f[B>>2]=h;Ql(i,B,c);d=f[B>>2]|0;f[B>>2]=0;if(d|0)Oa[f[(f[d>>2]|0)+4>>2]&127](d);g=a+200|0;d=f[g>>2]|0;if((d|0)==(f[a+204>>2]|0))Bj(a+196|0,C);else{f[d>>2]=f[C>>2];f[g>>2]=d+4}h=Ra[f[(f[a>>2]|0)+40>>2]&127](a)|0;f[e>>2]=i;g=h+12|0;d=f[g>>2]|0;if(d>>>0<(f[h+16>>2]|0)>>>0){f[e>>2]=0;f[d>>2]=i;f[g>>2]=d+4}else uh(h+8|0,e);d=f[e>>2]|0;f[e>>2]=0;if(!d){a=1;u=D;return a|0}Oa[f[(f[d>>2]|0)+4>>2]&127](d);a=1;u=D;return a|0}function hc(a,b,c,d,e,g){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;g=g|0;var h=0,i=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z=0,A=0,B=0,C=0,D=0,E=0,F=0,G=0,H=0,I=0,J=0,K=0,L=0;J=a+8|0;f[J>>2]=e;j=a+32|0;i=a+36|0;h=f[i>>2]|0;g=f[j>>2]|0;k=h-g>>2;if(k>>>0>=e>>>0){if(k>>>0>e>>>0?(l=g+(e<<2)|0,(h|0)!=(l|0)):0)f[i>>2]=h+(~((h+-4-l|0)>>>2)<<2)}else jj(j,e-k|0);if(d|0){g=f[b>>2]|0;if((d|0)>1){i=1;h=g;do{H=f[b+(i<<2)>>2]|0;A=(H|0)<(g|0);g=A?H:g;h=A?h:(H|0)>(h|0)?H:h;i=i+1|0}while((i|0)!=(d|0))}else h=g;f[a+12>>2]=g;f[a+16>>2]=h;H=1-g+h|0;f[a+20>>2]=H;g=(H|0)/2|0;h=a+24|0;f[h>>2]=g;f[a+28>>2]=0-g;if(!(H&1))f[h>>2]=g+-1}p=e>>>0>1073741823?-1:e<<2;H=Iq(p)|0;Xj(H|0,0,p|0)|0;p=f[a+48>>2]|0;v=a+56|0;i=f[v>>2]|0;h=f[i+4>>2]|0;g=f[i>>2]|0;j=h-g|0;a:do if((j|0)>4){q=f[a+52>>2]|0;y=a+16|0;s=a+32|0;A=a+12|0;z=a+28|0;x=a+20|0;w=a+24|0;u=p+64|0;r=p+28|0;t=(e|0)>0;n=j>>2;while(1){o=n+-1|0;if(h-g>>2>>>0<=o>>>0){yp(i);g=f[i>>2]|0}g=f[g+(o<<2)>>2]|0;m=X(o,e)|0;if((!((g|0)<0?1:(1<<(g&31)&f[(f[p>>2]|0)+(g>>>5<<2)>>2]|0)!=0)?(I=f[(f[(f[u>>2]|0)+12>>2]|0)+(g<<2)>>2]|0,(I|0)>=0):0)?(D=f[r>>2]|0,d=f[q>>2]|0,B=f[d+(f[D+(I<<2)>>2]<<2)>>2]|0,C=I+1|0,C=f[d+(f[D+((((C|0)%3|0|0)==0?I+-2|0:C)<<2)>>2]<<2)>>2]|0,D=f[d+(f[D+((((I>>>0)%3|0|0)==0?2:-1)+I<<2)>>2]<<2)>>2]|0,(B|0)<(o|0)&(C|0)<(o|0)&(D|0)<(o|0)):0){h=X(B,e)|0;i=X(C,e)|0;j=X(D,e)|0;if(t){g=0;do{f[H+(g<<2)>>2]=(f[b+(g+j<<2)>>2]|0)+(f[b+(g+i<<2)>>2]|0)-(f[b+(g+h<<2)>>2]|0);g=g+1|0}while((g|0)!=(e|0))}l=b+(m<<2)|0;d=c+(m<<2)|0;g=f[J>>2]|0;if((g|0)>0){k=0;i=H;do{if((g|0)>0){j=0;do{g=f[i+(j<<2)>>2]|0;h=f[y>>2]|0;if((g|0)>(h|0)){g=f[s>>2]|0;f[g+(j<<2)>>2]=h}else{L=f[A>>2]|0;h=f[s>>2]|0;f[h+(j<<2)>>2]=(g|0)<(L|0)?L:g;g=h}j=j+1|0}while((j|0)<(f[J>>2]|0));i=g}else i=f[s>>2]|0;g=(f[l+(k<<2)>>2]|0)-(f[i+(k<<2)>>2]|0)|0;h=d+(k<<2)|0;f[h>>2]=g;if((g|0)>=(f[z>>2]|0)){if((g|0)>(f[w>>2]|0)){g=g-(f[x>>2]|0)|0;K=50}}else{g=(f[x>>2]|0)+g|0;K=50}if((K|0)==50){K=0;f[h>>2]=g}k=k+1|0;g=f[J>>2]|0}while((k|0)<(g|0))}}else K=23;if((K|0)==23?(K=0,F=b+(m<<2)|0,G=c+(m<<2)|0,E=f[J>>2]|0,(E|0)>0):0){h=E;k=0;j=b+((X(n+-2|0,e)|0)<<2)|0;while(1){if((h|0)>0){i=0;do{g=f[j+(i<<2)>>2]|0;h=f[y>>2]|0;if((g|0)>(h|0)){g=f[s>>2]|0;f[g+(i<<2)>>2]=h}else{n=f[A>>2]|0;L=f[s>>2]|0;f[L+(i<<2)>>2]=(g|0)<(n|0)?n:g;g=L}i=i+1|0}while((i|0)<(f[J>>2]|0))}else g=f[s>>2]|0;h=(f[F+(k<<2)>>2]|0)-(f[g+(k<<2)>>2]|0)|0;i=G+(k<<2)|0;f[i>>2]=h;if((h|0)>=(f[z>>2]|0)){if((h|0)>(f[w>>2]|0)){h=h-(f[x>>2]|0)|0;K=37}}else{h=(f[x>>2]|0)+h|0;K=37}if((K|0)==37){K=0;f[i>>2]=h}k=k+1|0;h=f[J>>2]|0;if((k|0)>=(h|0))break;else j=g}}if((o|0)<=1)break a;i=f[v>>2]|0;g=f[i>>2]|0;h=f[i+4>>2]|0;n=o}}while(0);if((e|0)>0)Xj(H|0,0,e<<2|0)|0;g=f[J>>2]|0;if((g|0)<=0){Jq(H);return 1}n=a+16|0;d=a+32|0;p=a+12|0;o=a+28|0;m=a+20|0;l=a+24|0;k=0;i=H;do{if((g|0)>0){j=0;do{g=f[i+(j<<2)>>2]|0;h=f[n>>2]|0;if((g|0)>(h|0)){g=f[d>>2]|0;f[g+(j<<2)>>2]=h}else{a=f[p>>2]|0;L=f[d>>2]|0;f[L+(j<<2)>>2]=(g|0)<(a|0)?a:g;g=L}j=j+1|0}while((j|0)<(f[J>>2]|0));i=g}else i=f[d>>2]|0;g=(f[b+(k<<2)>>2]|0)-(f[i+(k<<2)>>2]|0)|0;h=c+(k<<2)|0;f[h>>2]=g;if((g|0)>=(f[o>>2]|0)){if((g|0)>(f[l>>2]|0)){g=g-(f[m>>2]|0)|0;K=64}}else{g=(f[m>>2]|0)+g|0;K=64}if((K|0)==64){K=0;f[h>>2]=g}k=k+1|0;g=f[J>>2]|0}while((k|0)<(g|0));Jq(H);return 1}function ic(a,c,d){a=a|0;c=c|0;d=d|0;var e=0,g=0,h=0,i=0,j=0,k=0,l=Ka,m=Ka,o=0,p=0,q=0,r=0,s=0,t=0,v=0,w=0,x=0,y=0,z=0,A=0,B=0,C=0,D=0,E=0,F=0,G=0,H=0,J=Ka;H=u;u=u+48|0;G=H+12|0;C=H+32|0;F=H;B=G+16|0;f[G>>2]=0;f[G+4>>2]=0;f[G+8>>2]=0;f[G+12>>2]=0;n[B>>2]=$(1.0);E=a+80|0;ml(F,f[E>>2]|0);g=f[E>>2]|0;a:do if((g|0)>0){y=c+48|0;z=c+40|0;v=G+4|0;x=G+12|0;t=G+8|0;A=a+40|0;w=a+64|0;s=f[d>>2]|0;g=0;r=0;q=0;while(1){i=s+r|0;k=y;o=f[k>>2]|0;k=f[k+4>>2]|0;j=z;j=En(i|0,((i|0)<0)<<31>>31|0,f[j>>2]|0,f[j+4>>2]|0)|0;k=Do(j|0,I|0,o|0,k|0)|0;k=b[(f[f[c>>2]>>2]|0)+k>>0]|0;b[C>>0]=k;o=k&255^318;b:do if(g){j=g+-1|0;i=(j&g|0)==0;if(i)e=j&o;else e=(o>>>0)%(g>>>0)|0;h=f[G>>2]|0;d=f[h+(e<<2)>>2]|0;c:do if(d|0){if(i)do{d=f[d>>2]|0;if(!d)break c;if((f[d+4>>2]&j|0)!=(e|0))break c}while((b[d+8>>0]|0)!=k<<24>>24);else do{d=f[d>>2]|0;if(!d)break c;if((((f[d+4>>2]|0)>>>0)%(g>>>0)|0|0)!=(e|0))break c}while((b[d+8>>0]|0)!=k<<24>>24);f[(f[F>>2]|0)+(r<<2)>>2]=f[d+12>>2];e=q;break b}while(0);if(i)d=j&o;else d=(o>>>0)%(g>>>0)|0;e=f[h+(d<<2)>>2]|0;if(e)if(i)while(1){e=f[e>>2]|0;if(!e){e=0;p=28;break b}if((f[e+4>>2]&j|0)!=(d|0)){e=0;p=28;break b}if((b[e+8>>0]|0)==k<<24>>24){p=41;break}}else while(1){e=f[e>>2]|0;if(!e){e=0;p=28;break b}if((((f[e+4>>2]|0)>>>0)%(g>>>0)|0|0)!=(d|0)){e=0;p=28;break b}if((b[e+8>>0]|0)==k<<24>>24){p=41;break}}else{e=0;p=28}}else{g=0;d=0;e=1;p=28}while(0);if((p|0)==28){p=0;h=Fn(16)|0;b[h+8>>0]=k;f[h+12>>2]=q;f[h+4>>2]=o;f[h>>2]=0;m=$(((f[x>>2]|0)+1|0)>>>0);J=$(g>>>0);l=$(n[B>>2]);do if(e|m>$(J*l)){d=(g>>>0<3|(g+-1&g|0)!=0)&1|g<<1;e=~~$(W($(m/l)))>>>0;Mi(G,d>>>0>>0?e:d);d=f[v>>2]|0;e=d+-1|0;if(!(e&d)){g=d;d=e&o;break}else{g=d;d=(o>>>0)%(d>>>0)|0;break}}while(0);e=(f[G>>2]|0)+(d<<2)|0;d=f[e>>2]|0;if(!d){f[h>>2]=f[t>>2];f[t>>2]=h;f[e>>2]=t;d=f[h>>2]|0;if(d|0){d=f[d+4>>2]|0;e=g+-1|0;if(!(e&g))d=d&e;else d=(d>>>0)%(g>>>0)|0;d=(f[G>>2]|0)+(d<<2)|0;p=39}}else{f[h>>2]=f[d>>2];p=39}if((p|0)==39)f[d>>2]=h;f[x>>2]=(f[x>>2]|0)+1;p=41}if((p|0)==41){p=0;o=A;e=f[o>>2]|0;o=En(e|0,f[o+4>>2]|0,q|0,((q|0)<0)<<31>>31|0)|0;Mh((f[f[w>>2]>>2]|0)+o|0,C|0,e|0)|0;f[(f[F>>2]|0)+(r<<2)>>2]=q;e=q+1|0}d=r+1|0;g=f[E>>2]|0;if((d|0)>=(g|0)){o=e;break a}g=f[v>>2]|0;r=d;q=e}}else o=0;while(0);if((o|0)!=(g|0)){k=a+84|0;if(!(b[k>>0]|0)){g=f[a+68>>2]|0;d=(f[a+72>>2]|0)-g|0;if((d|0)>0){h=f[F>>2]|0;e=d>>2;d=0;do{a=g+(d<<2)|0;f[a>>2]=f[h+(f[a>>2]<<2)>>2];d=d+1|0}while((d|0)<(e|0))}}else{b[k>>0]=0;i=a+68|0;h=a+72|0;e=f[h>>2]|0;d=f[i>>2]|0;j=e-d>>2;if(g>>>0<=j>>>0){if(g>>>0>>0?(D=d+(g<<2)|0,(e|0)!=(D|0)):0)f[h>>2]=e+(~((e+-4-D|0)>>>2)<<2)}else{_h(i,g-j|0,3140);g=f[E>>2]|0}if((g|0)>0){h=f[F>>2]|0;if(b[k>>0]|0)Fa(16608,16627,91,16668);d=f[a+68>>2]|0;e=0;do{f[d+(e<<2)>>2]=f[h+(e<<2)>>2];e=e+1|0}while((e|0)<(g|0))}}f[E>>2]=o}g=f[F>>2]|0;if(g|0){e=F+4|0;d=f[e>>2]|0;if((d|0)!=(g|0))f[e>>2]=d+(~((d+-4-g|0)>>>2)<<2);Lq(g)}d=f[G+8>>2]|0;if(d|0)do{F=d;d=f[d>>2]|0;Lq(F)}while((d|0)!=0);d=f[G>>2]|0;f[G>>2]=0;if(!d){u=H;return o|0}Lq(d);u=H;return o|0}function jc(a,c,d){a=a|0;c=c|0;d=d|0;var e=0,g=0,i=0,j=0,k=0,l=0,m=Ka,o=Ka,p=0,q=0,r=0,s=0,t=0,v=0,w=0,x=0,y=0,z=0,A=0,B=0,C=0,D=0,E=0,F=0,G=0,H=0,J=0,K=Ka;J=u;u=u+48|0;H=J+16|0;D=J+12|0;G=J;C=H+16|0;f[H>>2]=0;f[H+4>>2]=0;f[H+8>>2]=0;f[H+12>>2]=0;n[C>>2]=$(1.0);F=a+80|0;ml(G,f[F>>2]|0);g=f[F>>2]|0;a:do if((g|0)>0){z=c+48|0;A=c+40|0;w=H+4|0;y=H+12|0;v=H+8|0;B=a+40|0;x=a+64|0;t=f[d>>2]|0;g=0;s=0;r=0;while(1){j=t+s|0;l=z;p=f[l>>2]|0;l=f[l+4>>2]|0;k=A;k=En(j|0,((j|0)<0)<<31>>31|0,f[k>>2]|0,f[k+4>>2]|0)|0;l=Do(k|0,I|0,p|0,l|0)|0;l=(f[f[c>>2]>>2]|0)+l|0;l=h[l>>0]|h[l+1>>0]<<8|h[l+2>>0]<<16|h[l+3>>0]<<24;f[D>>2]=l;p=l^318;b:do if(g){k=g+-1|0;j=(k&g|0)==0;if(j)e=k&p;else e=(p>>>0)%(g>>>0)|0;i=f[H>>2]|0;d=f[i+(e<<2)>>2]|0;c:do if(d|0){if(j)do{d=f[d>>2]|0;if(!d)break c;if((f[d+4>>2]&k|0)!=(e|0))break c}while((f[d+8>>2]|0)!=(l|0));else do{d=f[d>>2]|0;if(!d)break c;if((((f[d+4>>2]|0)>>>0)%(g>>>0)|0|0)!=(e|0))break c}while((f[d+8>>2]|0)!=(l|0));f[(f[G>>2]|0)+(s<<2)>>2]=f[d+12>>2];e=r;break b}while(0);if(j)d=k&p;else d=(p>>>0)%(g>>>0)|0;e=f[i+(d<<2)>>2]|0;if(e)if(j)while(1){e=f[e>>2]|0;if(!e){e=0;q=28;break b}if((f[e+4>>2]&k|0)!=(d|0)){e=0;q=28;break b}if((f[e+8>>2]|0)==(l|0)){q=41;break}}else while(1){e=f[e>>2]|0;if(!e){e=0;q=28;break b}if((((f[e+4>>2]|0)>>>0)%(g>>>0)|0|0)!=(d|0)){e=0;q=28;break b}if((f[e+8>>2]|0)==(l|0)){q=41;break}}else{e=0;q=28}}else{g=0;d=0;e=1;q=28}while(0);if((q|0)==28){q=0;i=Fn(16)|0;f[i+8>>2]=l;f[i+12>>2]=r;f[i+4>>2]=p;f[i>>2]=0;o=$(((f[y>>2]|0)+1|0)>>>0);K=$(g>>>0);m=$(n[C>>2]);do if(e|o>$(K*m)){d=(g>>>0<3|(g+-1&g|0)!=0)&1|g<<1;e=~~$(W($(o/m)))>>>0;vj(H,d>>>0>>0?e:d);d=f[w>>2]|0;e=d+-1|0;if(!(e&d)){g=d;d=e&p;break}else{g=d;d=(p>>>0)%(d>>>0)|0;break}}while(0);e=(f[H>>2]|0)+(d<<2)|0;d=f[e>>2]|0;if(!d){f[i>>2]=f[v>>2];f[v>>2]=i;f[e>>2]=v;d=f[i>>2]|0;if(d|0){d=f[d+4>>2]|0;e=g+-1|0;if(!(e&g))d=d&e;else d=(d>>>0)%(g>>>0)|0;d=(f[H>>2]|0)+(d<<2)|0;q=39}}else{f[i>>2]=f[d>>2];q=39}if((q|0)==39)f[d>>2]=i;f[y>>2]=(f[y>>2]|0)+1;q=41}if((q|0)==41){q=0;p=B;e=f[p>>2]|0;p=En(e|0,f[p+4>>2]|0,r|0,((r|0)<0)<<31>>31|0)|0;Mh((f[f[x>>2]>>2]|0)+p|0,D|0,e|0)|0;f[(f[G>>2]|0)+(s<<2)>>2]=r;e=r+1|0}d=s+1|0;g=f[F>>2]|0;if((d|0)>=(g|0)){p=e;break a}g=f[w>>2]|0;s=d;r=e}}else p=0;while(0);if((p|0)!=(g|0)){l=a+84|0;if(!(b[l>>0]|0)){g=f[a+68>>2]|0;d=(f[a+72>>2]|0)-g|0;if((d|0)>0){i=f[G>>2]|0;e=d>>2;d=0;do{a=g+(d<<2)|0;f[a>>2]=f[i+(f[a>>2]<<2)>>2];d=d+1|0}while((d|0)<(e|0))}}else{b[l>>0]=0;j=a+68|0;i=a+72|0;e=f[i>>2]|0;d=f[j>>2]|0;k=e-d>>2;if(g>>>0<=k>>>0){if(g>>>0>>0?(E=d+(g<<2)|0,(e|0)!=(E|0)):0)f[i>>2]=e+(~((e+-4-E|0)>>>2)<<2)}else{_h(j,g-k|0,3140);g=f[F>>2]|0}if((g|0)>0){i=f[G>>2]|0;if(b[l>>0]|0)Fa(16608,16627,91,16668);d=f[a+68>>2]|0;e=0;do{f[d+(e<<2)>>2]=f[i+(e<<2)>>2];e=e+1|0}while((e|0)<(g|0))}}f[F>>2]=p}g=f[G>>2]|0;if(g|0){e=G+4|0;d=f[e>>2]|0;if((d|0)!=(g|0))f[e>>2]=d+(~((d+-4-g|0)>>>2)<<2);Lq(g)}d=f[H+8>>2]|0;if(d|0)do{G=d;d=f[d>>2]|0;Lq(G)}while((d|0)!=0);d=f[H>>2]|0;f[H>>2]=0;if(!d){u=J;return p|0}Lq(d);u=J;return p|0}function kc(a){a=a|0;var b=0,c=0,d=0,e=0,g=0,h=0,i=0,j=0,k=0;if(!a)return;c=a+-8|0;d=f[5278]|0;a=f[a+-4>>2]|0;b=a&-8;k=c+b|0;do if(!(a&1)){e=f[c>>2]|0;if(!(a&3))return;g=c+(0-e)|0;h=e+b|0;if(g>>>0>>0)return;if((g|0)==(f[5279]|0)){b=k+4|0;a=f[b>>2]|0;if((a&3|0)!=3){i=g;j=g;b=h;break}f[5276]=h;f[b>>2]=a&-2;f[g+4>>2]=h|1;f[g+h>>2]=h;return}c=e>>>3;if(e>>>0<256){a=f[g+8>>2]|0;b=f[g+12>>2]|0;if((b|0)==(a|0)){f[5274]=f[5274]&~(1<>2]=b;f[b+8>>2]=a;i=g;j=g;b=h;break}}e=f[g+24>>2]|0;a=f[g+12>>2]|0;do if((a|0)==(g|0)){c=g+16|0;b=c+4|0;a=f[b>>2]|0;if(!a){a=f[c>>2]|0;if(!a){c=0;break}else d=c}else d=b;while(1){c=a+20|0;b=f[c>>2]|0;if(b|0){a=b;d=c;continue}c=a+16|0;b=f[c>>2]|0;if(!b)break;else{a=b;d=c}}f[d>>2]=0;c=a}else{c=f[g+8>>2]|0;f[c+12>>2]=a;f[a+8>>2]=c;c=a}while(0);if(e){a=f[g+28>>2]|0;b=21400+(a<<2)|0;if((g|0)==(f[b>>2]|0)){f[b>>2]=c;if(!c){f[5275]=f[5275]&~(1<>2]|0)!=(g|0)&1)<<2)>>2]=c;if(!c){i=g;j=g;b=h;break}}f[c+24>>2]=e;b=g+16|0;a=f[b>>2]|0;if(a|0){f[c+16>>2]=a;f[a+24>>2]=c}a=f[b+4>>2]|0;if(a){f[c+20>>2]=a;f[a+24>>2]=c;i=g;j=g;b=h}else{i=g;j=g;b=h}}else{i=g;j=g;b=h}}else{i=c;j=c}while(0);if(i>>>0>=k>>>0)return;a=k+4|0;d=f[a>>2]|0;if(!(d&1))return;if(!(d&2)){a=f[5279]|0;if((k|0)==(f[5280]|0)){k=(f[5277]|0)+b|0;f[5277]=k;f[5280]=j;f[j+4>>2]=k|1;if((j|0)!=(a|0))return;f[5279]=0;f[5276]=0;return}if((k|0)==(a|0)){k=(f[5276]|0)+b|0;f[5276]=k;f[5279]=i;f[j+4>>2]=k|1;f[i+k>>2]=k;return}e=(d&-8)+b|0;c=d>>>3;do if(d>>>0<256){b=f[k+8>>2]|0;a=f[k+12>>2]|0;if((a|0)==(b|0)){f[5274]=f[5274]&~(1<>2]=a;f[a+8>>2]=b;break}}else{g=f[k+24>>2]|0;a=f[k+12>>2]|0;do if((a|0)==(k|0)){c=k+16|0;b=c+4|0;a=f[b>>2]|0;if(!a){a=f[c>>2]|0;if(!a){c=0;break}else d=c}else d=b;while(1){c=a+20|0;b=f[c>>2]|0;if(b|0){a=b;d=c;continue}c=a+16|0;b=f[c>>2]|0;if(!b)break;else{a=b;d=c}}f[d>>2]=0;c=a}else{c=f[k+8>>2]|0;f[c+12>>2]=a;f[a+8>>2]=c;c=a}while(0);if(g|0){a=f[k+28>>2]|0;b=21400+(a<<2)|0;if((k|0)==(f[b>>2]|0)){f[b>>2]=c;if(!c){f[5275]=f[5275]&~(1<>2]|0)!=(k|0)&1)<<2)>>2]=c;if(!c)break}f[c+24>>2]=g;b=k+16|0;a=f[b>>2]|0;if(a|0){f[c+16>>2]=a;f[a+24>>2]=c}a=f[b+4>>2]|0;if(a|0){f[c+20>>2]=a;f[a+24>>2]=c}}}while(0);f[j+4>>2]=e|1;f[i+e>>2]=e;if((j|0)==(f[5279]|0)){f[5276]=e;return}}else{f[a>>2]=d&-2;f[j+4>>2]=b|1;f[i+b>>2]=b;e=b}a=e>>>3;if(e>>>0<256){c=21136+(a<<1<<2)|0;b=f[5274]|0;a=1<>2]|0}f[a>>2]=j;f[b+12>>2]=j;f[j+8>>2]=b;f[j+12>>2]=c;return}a=e>>>8;if(a)if(e>>>0>16777215)b=31;else{i=(a+1048320|0)>>>16&8;k=a<>>16&4;k=k<>>16&2;b=14-(h|i|b)+(k<>>15)|0;b=e>>>(b+7|0)&1|b<<1}else b=0;d=21400+(b<<2)|0;f[j+28>>2]=b;f[j+20>>2]=0;f[j+16>>2]=0;a=f[5275]|0;c=1<>>1)|0);c=f[d>>2]|0;while(1){if((f[c+4>>2]&-8|0)==(e|0)){a=73;break}d=c+16+(b>>>31<<2)|0;a=f[d>>2]|0;if(!a){a=72;break}else{b=b<<1;c=a}}if((a|0)==72){f[d>>2]=j;f[j+24>>2]=c;f[j+12>>2]=j;f[j+8>>2]=j;break}else if((a|0)==73){i=c+8|0;k=f[i>>2]|0;f[k+12>>2]=j;f[i>>2]=j;f[j+8>>2]=k;f[j+12>>2]=c;f[j+24>>2]=0;break}}else{f[5275]=a|c;f[d>>2]=j;f[j+24>>2]=d;f[j+12>>2]=j;f[j+8>>2]=j}while(0);k=(f[5282]|0)+-1|0;f[5282]=k;if(!k)a=21552;else return;while(1){a=f[a>>2]|0;if(!a)break;else a=a+8|0}f[5282]=-1;return}function lc(a,c,d){a=a|0;c=c|0;d=d|0;var e=0,g=0,h=0,i=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,v=0,w=0,x=0,y=0,z=0,A=0,B=0,C=0,D=0,E=0,F=0,G=0,H=0,J=0,K=0,L=0,M=0,N=0,O=0,P=0,Q=0,R=0,S=0,T=0,U=0,V=0,W=0,X=0,Y=0,Z=0,_=0;N=u;u=u+96|0;F=N+72|0;J=N+48|0;K=N+24|0;L=N;if(!(f[a>>2]|0))Fa(12027,12293,79,12399);H=a+4|0;if(!(f[H>>2]|0))Fa(12027,12293,79,12399);G=a+12|0;k=f[G>>2]|0;n=f[c>>2]|0;f[F>>2]=k;f[F+4>>2]=n;E=F+8|0;f[E>>2]=n;b[F+12>>0]=1;m=(n|0)<0;if(m)l=-1073741824;else l=f[(f[k>>2]|0)+(n<<2)>>2]|0;D=a+16|0;k=f[D>>2]|0;c=f[k>>2]|0;if((f[k+4>>2]|0)-c>>2>>>0<=l>>>0){yp(k);c=f[k>>2]|0}ih(J,a,f[c+(l<<2)>>2]|0);a:do if(!m){y=K+8|0;v=J+8|0;A=K+16|0;w=J+16|0;x=L+8|0;z=L+16|0;C=n+1|0;C=((C|0)%3|0|0)==0?n+-2|0:C;B=(C|0)<0;s=n+(((n>>>0)%3|0|0)==0?2:-1)|0;t=(s|0)<0;q=0;p=0;r=0;n=0;l=0;o=0;while(1){if(!(f[a>>2]|0)){c=13;break}if(!(f[H>>2]|0)){c=13;break}if(B)m=-1073741824;else m=f[(f[f[G>>2]>>2]|0)+(C<<2)>>2]|0;k=f[D>>2]|0;c=f[k>>2]|0;if((f[k+4>>2]|0)-c>>2>>>0<=m>>>0){yp(k);c=f[k>>2]|0}ih(K,a,f[c+(m<<2)>>2]|0);if(!(f[a>>2]|0)){c=21;break}if(!(f[H>>2]|0)){c=21;break}if(t)m=-1073741824;else m=f[(f[f[G>>2]>>2]|0)+(s<<2)>>2]|0;k=f[D>>2]|0;c=f[k>>2]|0;if((f[k+4>>2]|0)-c>>2>>>0<=m>>>0){yp(k);c=f[k>>2]|0}ih(L,a,f[c+(m<<2)>>2]|0);O=K;Y=J;X=f[Y>>2]|0;Y=f[Y+4>>2]|0;O=Bo(f[O>>2]|0,f[O+4>>2]|0,X|0,Y|0)|0;P=I;Q=y;_=v;Z=f[_>>2]|0;_=f[_+4>>2]|0;Q=Bo(f[Q>>2]|0,f[Q+4>>2]|0,Z|0,_|0)|0;R=I;T=A;k=w;S=f[k>>2]|0;k=f[k+4>>2]|0;T=Bo(f[T>>2]|0,f[T+4>>2]|0,S|0,k|0)|0;U=I;m=L;Y=Bo(f[m>>2]|0,f[m+4>>2]|0,X|0,Y|0)|0;X=I;m=x;_=Bo(f[m>>2]|0,f[m+4>>2]|0,Z|0,_|0)|0;Z=I;m=z;k=Bo(f[m>>2]|0,f[m+4>>2]|0,S|0,k|0)|0;S=I;m=En(k|0,S|0,Q|0,R|0)|0;c=I;W=En(_|0,Z|0,T|0,U|0)|0;V=I;U=En(Y|0,X|0,T|0,U|0)|0;T=I;S=En(k|0,S|0,O|0,P|0)|0;k=I;P=En(_|0,Z|0,O|0,P|0)|0;O=I;R=En(Y|0,X|0,Q|0,R|0)|0;Q=I;q=Bo(q|0,p|0,W|0,V|0)|0;c=Do(q|0,I|0,m|0,c|0)|0;m=I;n=Do(U|0,T|0,r|0,n|0)|0;k=Bo(n|0,I|0,S|0,k|0)|0;n=I;l=Bo(l|0,o|0,R|0,Q|0)|0;l=Do(l|0,I|0,P|0,O|0)|0;o=I;Uh(F);if((f[E>>2]|0)<0){j=m;i=c;h=n;g=k;M=o;e=l;break a}else{q=c;p=m;r=k}}if((c|0)==13)Fa(12027,12293,63,12421);else if((c|0)==21)Fa(12027,12293,63,12421)}else{j=0;i=0;h=0;g=0;M=0;e=0}while(0);Z=(j|0)>-1|(j|0)==-1&i>>>0>4294967295;_=Bo(0,0,i|0,j|0)|0;c=Z?j:I;U=(h|0)>-1|(h|0)==-1&g>>>0>4294967295;V=Bo(0,0,g|0,h|0)|0;W=U?h:I;Y=(M|0)>-1|(M|0)==-1&e>>>0>4294967295;X=Bo(0,0,e|0,M|0)|0;Y=Do((U?g:V)|0,W|0,(Y?e:X)|0,(Y?M:I)|0)|0;c=Do(Y|0,I|0,(Z?i:_)|0,c|0)|0;if((c|0)>536870912){c=co(c|0,I|0,29)|0;c=c&7;i=bl(i|0,j|0,c|0,0)|0;j=I;g=bl(g|0,h|0,c|0,0)|0;h=I;e=bl(e|0,M|0,c|0,0)|0;c=I}else c=M;Y=(j|0)>-1|(j|0)==-1&i>>>0>4294967295;Z=Bo(0,0,i|0,j|0)|0;_=Y?j:I;T=(h|0)>-1|(h|0)==-1&g>>>0>4294967295;U=Bo(0,0,g|0,h|0)|0;V=T?h:I;X=(c|0)>-1|(c|0)==-1&e>>>0>4294967295;W=Bo(0,0,e|0,c|0)|0;X=Do((T?g:U)|0,V|0,(X?e:W)|0,(X?c:I)|0)|0;_=Do(X|0,I|0,(Y?i:Z)|0,_|0)|0;Z=I;if((Z|0)<0|(Z|0)==0&_>>>0<536870913){f[d>>2]=i;f[d+4>>2]=g;f[d+8>>2]=e;u=N;return}else Fa(12442,12293,117,12399)}function mc(a,b){a=a|0;b=b|0;var c=0,d=0,e=0,g=0,h=0,i=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,v=0,w=0,x=0,y=0,z=0;z=u;u=u+32|0;w=z+28|0;t=z+24|0;j=z+20|0;k=z+16|0;l=z+12|0;m=z+8|0;s=z+4|0;v=z;e=f[b>>2]|0;if((e|0)<0){u=z;return}x=(e>>>0)/3|0;q=a+12|0;if(f[(f[q>>2]|0)+(x>>>5<<2)>>2]&1<<(x&31)|0){u=z;return}x=a+56|0;c=f[x>>2]|0;r=a+60|0;d=f[r>>2]|0;if((d|0)!=(c|0)){c=d+(~((d+-4-c|0)>>>2)<<2)|0;f[r>>2]=c}o=a+64|0;if((c|0)==(f[o>>2]|0))Bj(x,b);else{f[c>>2]=e;f[r>>2]=c+4}c=f[a>>2]|0;g=f[b>>2]|0;d=g+1|0;do if((g|0)>=0){c=f[c+28>>2]|0;d=f[c+((((d|0)%3|0|0)==0?g+-2|0:d)<<2)>>2]|0;if(!((g>>>0)%3|0)){e=c;c=g+2|0;break}else{e=c;c=g+-1|0;break}}else{d=f[c+28>>2]|0;e=d;d=f[d+(g<<2)>>2]|0;c=g}while(0);i=f[e+(c<<2)>>2]|0;n=a+24|0;c=f[n>>2]|0;g=c+(d>>>5<<2)|0;h=1<<(d&31);e=f[g>>2]|0;if(!(e&h)){f[g>>2]=e|h;f[j>>2]=d;c=f[b>>2]|0;d=c+1|0;if((c|0)>=0)c=((d|0)%3|0|0)==0?c+-2|0:d;f[k>>2]=c;f[t>>2]=f[j>>2];f[w>>2]=f[k>>2];yh(a+36|0,t,w);c=f[n>>2]|0}d=c+(i>>>5<<2)|0;e=1<<(i&31);c=f[d>>2]|0;if(!(c&e)){f[d>>2]=c|e;d=a+36|0;f[l>>2]=i;c=f[b>>2]|0;do if((c|0)>=0)if(!((c>>>0)%3|0)){c=c+2|0;break}else{c=c+-1|0;break}while(0);f[m>>2]=c;f[t>>2]=f[l>>2];f[w>>2]=f[m>>2];yh(d,t,w)}d=f[x>>2]|0;c=f[r>>2]|0;if((d|0)==(c|0)){u=z;return}k=a+36|0;do{e=f[c+-4>>2]|0;f[b>>2]=e;g=(e|0)/3|0;if((e|0)>=0?(p=f[q>>2]|0,(f[p+(g>>>5<<2)>>2]&1<<(g&31)|0)==0):0){c=e;d=p;e=f[a>>2]|0;a:while(1){i=(c|0)/3|0;d=d+(i>>>5<<2)|0;f[d>>2]=1<<(i&31)|f[d>>2];d=f[b>>2]|0;i=f[(f[e+28>>2]|0)+(d<<2)>>2]|0;c=f[(f[e+40>>2]|0)+(i<<2)>>2]|0;if((c|0)<0)j=1;else{j=f[(f[f[e+64>>2]>>2]|0)+(c<<2)>>2]|0;j=(1<<(j&31)&f[(f[e+12>>2]|0)+(j>>>5<<2)>>2]|0)!=0}g=(f[n>>2]|0)+(i>>>5<<2)|0;h=1<<(i&31);c=f[g>>2]|0;if(!(c&h)){f[g>>2]=c|h;f[s>>2]=i;f[v>>2]=f[b>>2];f[t>>2]=f[s>>2];f[w>>2]=f[v>>2];yh(k,t,w);e=f[a>>2]|0;c=f[b>>2]|0;if(j){d=c;y=40}else{d=c+1|0;if((c|0)>=0)c=((d|0)%3|0|0)==0?c+-2|0:d;do if(!(1<<(c&31)&f[(f[e>>2]|0)+(c>>>5<<2)>>2])){if((c|0)<0)break;c=f[(f[(f[e+64>>2]|0)+12>>2]|0)+(c<<2)>>2]|0}else c=-1073741824;while(0);f[b>>2]=c}}else y=40;if((y|0)==40){y=0;g=(d|0)<0;c=d+1|0;if(g)c=d;else c=((c|0)%3|0|0)==0?d+-2|0:c;if(!(1<<(c&31)&f[(f[e>>2]|0)+(c>>>5<<2)>>2])){if((c|0)>=0)c=f[(f[(f[e+64>>2]|0)+12>>2]|0)+(c<<2)>>2]|0}else c=-1073741824;f[w>>2]=c;do if(!g)if(!((d>>>0)%3|0)){d=d+2|0;break}else{d=d+-1|0;break}while(0);do if(!(1<<(d&31)&f[(f[e>>2]|0)+(d>>>5<<2)>>2])){if((d|0)<0)break;d=f[(f[(f[e+64>>2]|0)+12>>2]|0)+(d<<2)>>2]|0}else d=-1073741824;while(0);m=(c|0)<0;i=m?-1:(c>>>0)/3|0;h=(d|0)<0;j=h?-1:(d>>>0)/3|0;do if(!m){g=f[q>>2]|0;if(f[g+(i>>>5<<2)>>2]&1<<(i&31)|0){y=54;break}if(h)break;if(!(f[g+(j>>>5<<2)>>2]&1<<(j&31))){y=59;break a}}else y=54;while(0);if((y|0)==54){y=0;if(h){y=56;break}if(!(f[(f[q>>2]|0)+(j>>>5<<2)>>2]&1<<(j&31)))c=d;else{y=56;break}}f[b>>2]=c}d=f[q>>2]|0}do if((y|0)==56){y=0;c=(f[r>>2]|0)+-4|0;f[r>>2]=c}else if((y|0)==59){y=0;c=f[r>>2]|0;f[c+-4>>2]=d;if((c|0)==(f[o>>2]|0)){Bj(x,w);c=f[r>>2]|0;break}else{f[c>>2]=f[w>>2];c=c+4|0;f[r>>2]=c;break}}while(0);d=f[x>>2]|0}else{c=c+-4|0;f[r>>2]=c}}while((d|0)!=(c|0));u=z;return}function nc(a,c,d){a=a|0;c=c|0;d=d|0;var e=0,g=0,h=0,i=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,v=0,w=0,x=0,y=0,z=0,A=0,B=0,C=0,D=0,E=0,F=0,G=0,H=0,J=0,K=0,L=0,M=0,N=0,O=0,P=0,Q=0,R=0,S=0,T=0,U=0,V=0,W=0,X=0,Y=0;L=u;u=u+96|0;D=L+72|0;G=L+48|0;H=L+24|0;J=L;if(!(f[a>>2]|0))Fa(12027,12293,79,12399);F=a+4|0;if(!(f[F>>2]|0))Fa(12027,12293,79,12399);E=a+12|0;l=f[E>>2]|0;m=f[c>>2]|0;f[D>>2]=l;f[D+4>>2]=m;B=D+8|0;f[B>>2]=m;b[D+12>>0]=1;l=f[(f[l+28>>2]|0)+(m<<2)>>2]|0;C=a+16|0;k=f[C>>2]|0;c=f[k>>2]|0;if((f[k+4>>2]|0)-c>>2>>>0<=l>>>0){yp(k);c=f[k>>2]|0}ih(G,a,f[c+(l<<2)>>2]|0);a:do if((m|0)>=0){x=H+8|0;t=G+8|0;z=H+16|0;v=G+16|0;w=J+8|0;y=J+16|0;A=m+1|0;A=((A|0)%3|0|0)==0?m+-2|0:A;s=m+(((m>>>0)%3|0|0)==0?2:-1)|0;q=0;p=0;r=0;n=0;l=0;o=0;while(1){if(!(f[a>>2]|0)){c=11;break}if(!(f[F>>2]|0)){c=11;break}m=f[(f[(f[E>>2]|0)+28>>2]|0)+(A<<2)>>2]|0;k=f[C>>2]|0;c=f[k>>2]|0;if((f[k+4>>2]|0)-c>>2>>>0<=m>>>0){yp(k);c=f[k>>2]|0}ih(H,a,f[c+(m<<2)>>2]|0);if(!(f[a>>2]|0)){c=17;break}if(!(f[F>>2]|0)){c=17;break}m=f[(f[(f[E>>2]|0)+28>>2]|0)+(s<<2)>>2]|0;k=f[C>>2]|0;c=f[k>>2]|0;if((f[k+4>>2]|0)-c>>2>>>0<=m>>>0){yp(k);c=f[k>>2]|0}ih(J,a,f[c+(m<<2)>>2]|0);M=H;W=G;V=f[W>>2]|0;W=f[W+4>>2]|0;M=Bo(f[M>>2]|0,f[M+4>>2]|0,V|0,W|0)|0;N=I;O=x;Y=t;X=f[Y>>2]|0;Y=f[Y+4>>2]|0;O=Bo(f[O>>2]|0,f[O+4>>2]|0,X|0,Y|0)|0;P=I;R=z;k=v;Q=f[k>>2]|0;k=f[k+4>>2]|0;R=Bo(f[R>>2]|0,f[R+4>>2]|0,Q|0,k|0)|0;S=I;m=J;W=Bo(f[m>>2]|0,f[m+4>>2]|0,V|0,W|0)|0;V=I;m=w;Y=Bo(f[m>>2]|0,f[m+4>>2]|0,X|0,Y|0)|0;X=I;m=y;k=Bo(f[m>>2]|0,f[m+4>>2]|0,Q|0,k|0)|0;Q=I;m=En(k|0,Q|0,O|0,P|0)|0;c=I;U=En(Y|0,X|0,R|0,S|0)|0;T=I;S=En(W|0,V|0,R|0,S|0)|0;R=I;Q=En(k|0,Q|0,M|0,N|0)|0;k=I;N=En(Y|0,X|0,M|0,N|0)|0;M=I;P=En(W|0,V|0,O|0,P|0)|0;O=I;q=Bo(q|0,p|0,U|0,T|0)|0;c=Do(q|0,I|0,m|0,c|0)|0;m=I;n=Do(S|0,R|0,r|0,n|0)|0;k=Bo(n|0,I|0,Q|0,k|0)|0;n=I;l=Bo(l|0,o|0,P|0,O|0)|0;l=Do(l|0,I|0,N|0,M|0)|0;o=I;Gg(D);if((f[B>>2]|0)<0){j=m;i=c;h=n;g=k;K=o;e=l;break a}else{q=c;p=m;r=k}}if((c|0)==11)Fa(12027,12293,63,12421);else if((c|0)==17)Fa(12027,12293,63,12421)}else{j=0;i=0;h=0;g=0;K=0;e=0}while(0);X=(j|0)>-1|(j|0)==-1&i>>>0>4294967295;Y=Bo(0,0,i|0,j|0)|0;c=X?j:I;S=(h|0)>-1|(h|0)==-1&g>>>0>4294967295;T=Bo(0,0,g|0,h|0)|0;U=S?h:I;W=(K|0)>-1|(K|0)==-1&e>>>0>4294967295;V=Bo(0,0,e|0,K|0)|0;W=Do((S?g:T)|0,U|0,(W?e:V)|0,(W?K:I)|0)|0;c=Do(W|0,I|0,(X?i:Y)|0,c|0)|0;if((c|0)>536870912){c=co(c|0,I|0,29)|0;c=c&7;i=bl(i|0,j|0,c|0,0)|0;j=I;g=bl(g|0,h|0,c|0,0)|0;h=I;e=bl(e|0,K|0,c|0,0)|0;c=I}else c=K;W=(j|0)>-1|(j|0)==-1&i>>>0>4294967295;X=Bo(0,0,i|0,j|0)|0;Y=W?j:I;R=(h|0)>-1|(h|0)==-1&g>>>0>4294967295;S=Bo(0,0,g|0,h|0)|0;T=R?h:I;V=(c|0)>-1|(c|0)==-1&e>>>0>4294967295;U=Bo(0,0,e|0,c|0)|0;V=Do((R?g:S)|0,T|0,(V?e:U)|0,(V?c:I)|0)|0;Y=Do(V|0,I|0,(W?i:X)|0,Y|0)|0;X=I;if((X|0)<0|(X|0)==0&Y>>>0<536870913){f[d>>2]=i;f[d+4>>2]=g;f[d+8>>2]=e;u=L;return}else Fa(12442,12293,117,12399)}function oc(a,b){a=a|0;b=b|0;var c=0,d=0,e=0,g=0,h=0,i=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,v=0,w=0,x=0,y=0,z=0;z=u;u=u+32|0;w=z+28|0;t=z+24|0;j=z+20|0;k=z+16|0;l=z+12|0;m=z+8|0;s=z+4|0;v=z;e=f[b>>2]|0;if((e|0)<0){u=z;return}x=(e>>>0)/3|0;q=a+12|0;if(f[(f[q>>2]|0)+(x>>>5<<2)>>2]&1<<(x&31)|0){u=z;return}x=a+56|0;c=f[x>>2]|0;r=a+60|0;d=f[r>>2]|0;if((d|0)!=(c|0)){c=d+(~((d+-4-c|0)>>>2)<<2)|0;f[r>>2]=c}o=a+64|0;if((c|0)==(f[o>>2]|0))Bj(x,b);else{f[c>>2]=e;f[r>>2]=c+4}g=f[a>>2]|0;e=f[b>>2]|0;c=e+1|0;if((e|0)>=0){c=((c|0)%3|0|0)==0?e+-2|0:c;if((c|0)<0)d=-1073741824;else d=f[(f[g>>2]|0)+(c<<2)>>2]|0;c=(((e>>>0)%3|0|0)==0?2:-1)+e|0;if((c|0)<0)i=-1073741824;else i=f[(f[g>>2]|0)+(c<<2)>>2]|0}else{d=-1073741824;i=-1073741824}n=a+24|0;c=f[n>>2]|0;g=c+(d>>>5<<2)|0;h=1<<(d&31);e=f[g>>2]|0;if(!(e&h)){f[g>>2]=e|h;f[j>>2]=d;c=f[b>>2]|0;d=c+1|0;if((c|0)>=0)c=((d|0)%3|0|0)==0?c+-2|0:d;f[k>>2]=c;f[t>>2]=f[j>>2];f[w>>2]=f[k>>2];yh(a+36|0,t,w);c=f[n>>2]|0}d=c+(i>>>5<<2)|0;e=1<<(i&31);c=f[d>>2]|0;if(!(c&e)){f[d>>2]=c|e;d=a+36|0;f[l>>2]=i;c=f[b>>2]|0;do if((c|0)>=0)if(!((c>>>0)%3|0)){c=c+2|0;break}else{c=c+-1|0;break}while(0);f[m>>2]=c;f[t>>2]=f[l>>2];f[w>>2]=f[m>>2];yh(d,t,w)}d=f[x>>2]|0;c=f[r>>2]|0;if((d|0)==(c|0)){u=z;return}k=a+36|0;g=c;while(1){c=f[g+-4>>2]|0;f[b>>2]=c;e=(c|0)/3|0;if((c|0)>=0?(p=f[q>>2]|0,(f[p+(e>>>5<<2)>>2]&1<<(e&31)|0)==0):0){d=p;a:while(1){e=(c|0)/3|0;g=d+(e>>>5<<2)|0;f[g>>2]=1<<(e&31)|f[g>>2];g=f[b>>2]|0;e=f[a>>2]|0;if((g|0)<0)j=-1073741824;else j=f[(f[e>>2]|0)+(g<<2)>>2]|0;d=f[(f[e+24>>2]|0)+(j<<2)>>2]|0;c=d+1|0;if((d|0)>=0){c=((c|0)%3|0|0)==0?d+-2|0:c;if((c|0)>=0){d=f[(f[e+12>>2]|0)+(c<<2)>>2]|0;c=d+1|0;if((d|0)<0)i=d;else i=((c|0)%3|0|0)==0?d+-2|0:c}else i=c}else i=d;d=(f[n>>2]|0)+(j>>>5<<2)|0;h=1<<(j&31);c=f[d>>2]|0;if(!(c&h)){f[d>>2]=c|h;f[s>>2]=j;f[v>>2]=f[b>>2];f[t>>2]=f[s>>2];f[w>>2]=f[v>>2];yh(k,t,w);d=f[a>>2]|0;c=f[b>>2]|0;if((i|0)<0){g=c;e=d;y=41}else{do if((c|0)<0)c=-1073741824;else{m=c+1|0;c=((m|0)%3|0|0)==0?c+-2|0:m;if((c|0)<0)break;c=f[(f[d+12>>2]|0)+(c<<2)>>2]|0}while(0);f[b>>2]=c}}else y=41;if((y|0)==41){y=0;if((g|0)<0){y=44;break}c=g+1|0;c=((c|0)%3|0|0)==0?g+-2|0:c;if((c|0)>=0)c=f[(f[e+12>>2]|0)+(c<<2)>>2]|0;f[w>>2]=c;d=(((g>>>0)%3|0|0)==0?2:-1)+g|0;if((d|0)>=0)d=f[(f[e+12>>2]|0)+(d<<2)>>2]|0;m=(c|0)<0;h=m?-1:(c>>>0)/3|0;g=(d|0)<0;i=g?-1:(d>>>0)/3|0;do if(!m){e=f[q>>2]|0;if(f[e+(h>>>5<<2)>>2]&1<<(h&31)|0){y=49;break}if(g)break;if(!(f[e+(i>>>5<<2)>>2]&1<<(i&31))){y=54;break a}}else y=49;while(0);if((y|0)==49){y=0;if(g){y=51;break}if(!(f[(f[q>>2]|0)+(i>>>5<<2)>>2]&1<<(i&31)))c=d;else{y=51;break}}f[b>>2]=c}d=f[q>>2]|0}do if((y|0)==44){f[w>>2]=-1073741824;y=51}else if((y|0)==54){y=0;c=f[r>>2]|0;f[c+-4>>2]=d;if((c|0)==(f[o>>2]|0)){Bj(x,w);c=f[r>>2]|0;break}else{f[c>>2]=f[w>>2];c=c+4|0;f[r>>2]=c;break}}while(0);if((y|0)==51){y=0;c=(f[r>>2]|0)+-4|0;f[r>>2]=c}d=f[x>>2]|0}else{c=g+-4|0;f[r>>2]=c}if((d|0)==(c|0))break;else g=c}u=z;return}function pc(a){a=a|0;var b=0,c=0,d=0,e=0,g=0,h=0,i=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,v=0,w=0;w=u;u=u+48|0;v=w+24|0;t=w+12|0;s=w;q=a+32|0;r=a+8|0;o=a+12|0;b=f[o>>2]|0;c=f[r>>2]|0;i=b-c>>2;g=a+36|0;e=f[g>>2]|0;d=f[q>>2]|0;j=e-d>>2;if(i>>>0<=j>>>0){if(i>>>0>>0?(h=d+(i<<2)|0,(e|0)!=(h|0)):0)f[g>>2]=e+(~((e+-4-h|0)>>>2)<<2)}else{jj(q,i-j|0);c=f[r>>2]|0;b=f[o>>2]|0}e=b-c|0;d=e>>2;f[v>>2]=0;c=v+4|0;f[c>>2]=0;b=v+8|0;f[b>>2]=0;if(d|0){if((e|0)<0)zp(v);l=((d+-1|0)>>>5)+1|0;m=Fn(l<<2)|0;f[v>>2]=m;f[b>>2]=l;f[c>>2]=d;b=d>>>5;Xj(m|0,0,b<<2|0)|0;c=d-(b<<5)|0;b=m+(b<<2)|0;if(c|0)f[b>>2]=f[b>>2]&~(-1>>>(32-c|0))}m=a+20|0;b=f[r>>2]|0;d=b;c=f[o>>2]|0;e=0;while(1){if(e>>>0>2>>>0){g=0;l=0}else{n=25;break}while(1){j=l>>>5;k=1<<(l&31);do if(!(f[(f[v>>2]|0)+(j<<2)>>2]&k)){c=f[b+(l<<2)>>2]|0;if((f[c+8>>2]|0)!=(f[c+4>>2]|0)){d=1;i=0;do{h=f[(f[c+4>>2]|0)+(i<<2)>>2]|0;c=0;while(1){b=f[b+(l<<2)>>2]|0;if((c|0)>=(Va[f[(f[b>>2]|0)+24>>2]&127](b,h)|0))break;b=f[(f[r>>2]|0)+(l<<2)>>2]|0;b=Ma[f[(f[b>>2]|0)+28>>2]&31](b,h,c)|0;if((b|0)!=(l|0)?(b=f[(f[m>>2]|0)+(b<<2)>>2]|0,(1<<(b&31)&f[(f[v>>2]|0)+(b>>>5<<2)>>2]|0)==0):0){d=0;break}b=f[r>>2]|0;c=c+1|0}i=i+1|0;b=f[r>>2]|0;c=f[b+(l<<2)>>2]|0}while(i>>>0<(f[c+8>>2]|0)-(f[c+4>>2]|0)>>2>>>0);if(!d){d=b;h=e;break}}else b=d;f[(f[q>>2]|0)+(e<<2)>>2]=l;d=(f[v>>2]|0)+(j<<2)|0;f[d>>2]=f[d>>2]|k;d=b;g=1;h=e+1|0}else h=e;while(0);l=l+1|0;c=f[o>>2]|0;e=c-d>>2;b=d;if(l>>>0>=e>>>0)break;else e=h}if(h>>>0>>0&(g^1)){c=0;break}else e=h}if((n|0)==25){f[t>>2]=0;n=t+4|0;f[n>>2]=0;f[t+8>>2]=0;e=f[a+4>>2]|0;e=(f[e+12>>2]|0)-(f[e+8>>2]|0)|0;d=e>>2;f[s>>2]=0;c=s+4|0;f[c>>2]=0;b=s+8|0;f[b>>2]=0;if(d|0){if((e|0)<0)zp(s);m=((d+-1|0)>>>5)+1|0;a=Fn(m<<2)|0;f[s>>2]=a;f[b>>2]=m;f[c>>2]=d;b=d>>>5;Xj(a|0,0,b<<2|0)|0;c=d-(b<<5)|0;b=a+(b<<2)|0;if(c|0)f[b>>2]=f[b>>2]&~(-1>>>(32-c|0))}b=f[o>>2]|0;c=f[r>>2]|0;a:do if((b|0)==(c|0))c=1;else{a=0;while(1){l=f[(f[q>>2]|0)+(a<<2)>>2]|0;k=f[c+(l<<2)>>2]|0;k=(f[k+8>>2]|0)-(f[k+4>>2]|0)|0;m=k>>2;if((k|0)>=8){c=f[n>>2]|0;b=f[t>>2]|0;d=c-b>>2;if(m>>>0<=d>>>0)if(m>>>0>>0?(p=b+(m<<2)|0,(c|0)!=(p|0)):0){f[n>>2]=c+(~((c+-4-p|0)>>>2)<<2);b=0}else b=0;else{jj(t,m-d|0);b=0}while(1){if((b|0)<(m|0)){c=0;k=0}else break;do{d=f[(f[r>>2]|0)+(l<<2)>>2]|0;h=f[(f[d+4>>2]|0)+(k<<2)>>2]|0;i=k>>>5;j=1<<(k&31);if(!(f[(f[s>>2]|0)+(i<<2)>>2]&j)){e=d;d=1;g=0;while(1){if((g|0)>=(Va[f[(f[e>>2]|0)+24>>2]&127](e,h)|0))break;e=f[(f[r>>2]|0)+(l<<2)>>2]|0;e=Ma[f[(f[e>>2]|0)+28>>2]&31](e,h,g)|0;e=(f[(f[s>>2]|0)+(e>>>5<<2)>>2]&1<<(e&31)|0)!=0;d=d&e;if(!e)break;e=f[(f[r>>2]|0)+(l<<2)>>2]|0;g=g+1|0}if(d){f[(f[t>>2]|0)+(b<<2)>>2]=k;c=(f[s>>2]|0)+(i<<2)|0;f[c>>2]=f[c>>2]|j;c=1;b=b+1|0}}k=k+1|0}while((k|0)<(m|0));if(!(c|(b|0)>=(m|0))){c=0;break a}}rh(f[(f[r>>2]|0)+(l<<2)>>2]|0,t);c=f[r>>2]|0;b=f[o>>2]|0}a=a+1|0;if(a>>>0>=b-c>>2>>>0){c=1;break}}}while(0);b=f[s>>2]|0;if(b|0)Lq(b);b=f[t>>2]|0;if(b|0){d=f[n>>2]|0;if((d|0)!=(b|0))f[n>>2]=d+(~((d+-4-b|0)>>>2)<<2);Lq(b)}}b=f[v>>2]|0;if(!b){u=w;return c|0}Lq(b);u=w;return c|0}function qc(a,c,d){a=a|0;c=c|0;d=d|0;var e=0,g=0,h=0,i=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0;r=u;u=u+32|0;o=r+16|0;p=r+12|0;g=r+29|0;q=r;k=r+28|0;if(!(f[(f[a+8>>2]|0)+80>>2]|0)){q=1;u=r;return q|0}b[g>>0]=-2;n=a+36|0;e=f[n>>2]|0;if(e)if(Va[f[(f[a>>2]|0)+40>>2]&127](a,e)|0){j=f[n>>2]|0;j=(Ra[f[(f[j>>2]|0)+8>>2]&127](j)|0)&255;b[g>>0]=j;j=5}else e=0;else j=5;if((j|0)==5){m=d+16|0;l=m;i=f[l+4>>2]|0;if(!((i|0)>0|(i|0)==0&(f[l>>2]|0)>>>0>0)){f[p>>2]=f[d+4>>2];f[o>>2]=f[p>>2];vf(d,o,g,g+1|0)|0}e=f[n>>2]|0;if(e|0?(l=(Ra[f[(f[e>>2]|0)+36>>2]&127](e)|0)&255,b[q>>0]=l,l=m,i=f[l+4>>2]|0,!((i|0)>0|(i|0)==0&(f[l>>2]|0)>>>0>0)):0){f[p>>2]=f[d+4>>2];f[o>>2]=f[p>>2];vf(d,o,q,q+1|0)|0}e=f[a+32>>2]|0;i=b[e+24>>0]|0;l=X(i,f[e+80>>2]|0)|0;e=(f[f[e>>2]>>2]|0)+(f[e+48>>2]|0)|0;ml(q,l);g=f[n>>2]|0;if((g|0)!=0?(Qa[f[(f[g>>2]|0)+44>>2]&31](g,e,f[q>>2]|0,l,i,f[c>>2]|0)|0,h=f[n>>2]|0,(h|0)!=0):0){if(!(Ra[f[(f[h>>2]|0)+32>>2]&127](h)|0)){g=q;e=(f[n>>2]|0)==0?e:f[q>>2]|0;j=16}}else{g=q;j=16}if((j|0)==16)Ym(e,l,f[g>>2]|0);e=f[a+4>>2]|0;do if((e|0)!=0?(j=f[e+48>>2]|0,f[o>>2]=0,f[o+4>>2]=0,f[o+8>>2]=0,Ck(o,10506,34),j=Hk(j,o,1)|0,Eo(o),!j):0){i=(l|0)==0;if(!i){e=f[q>>2]|0;g=0;h=0;do{h=f[e+(g<<2)>>2]|h;g=g+1|0}while((g|0)!=(l|0));if(h)a=((_(h|0)|0)>>>3^3)+1|0;else a=1}else a=1;b[k>>0]=0;e=m;g=f[e>>2]|0;e=f[e+4>>2]|0;if(!((e|0)>0|(e|0)==0&g>>>0>0)){f[p>>2]=f[d+4>>2];f[o>>2]=f[p>>2];vf(d,o,k,k+1|0)|0;g=m;e=f[g+4>>2]|0;g=f[g>>2]|0}b[k>>0]=a;if(!((e|0)>0|(e|0)==0&g>>>0>0)){f[p>>2]=f[d+4>>2];f[o>>2]=f[p>>2];vf(d,o,k,k+1|0)|0}if((a|0)==(Am(5)|0)){e=f[q>>2]|0;k=f[m+4>>2]|0;if(!((k|0)>0|(k|0)==0&(f[m>>2]|0)>>>0>0)){f[p>>2]=f[d+4>>2];f[o>>2]=f[p>>2];vf(d,o,e,e+(l<<2)|0)|0}j=40;break}if(i)j=40;else{e=d+4|0;h=0;do{g=(f[q>>2]|0)+(h<<2)|0;k=m;j=f[k+4>>2]|0;if(!((j|0)>0|(j|0)==0&(f[k>>2]|0)>>>0>0)){f[p>>2]=f[e>>2];f[o>>2]=f[p>>2];vf(d,o,g,g+a|0)|0}h=h+1|0}while(h>>>0>>0);j=40}}else j=21;while(0);if((j|0)==21){b[k>>0]=1;l=f[m+4>>2]|0;if(!((l|0)>0|(l|0)==0&(f[m>>2]|0)>>>0>0)){f[p>>2]=f[d+4>>2];f[o>>2]=f[p>>2];vf(d,o,k,k+1|0)|0}if(Nc(f[q>>2]|0,X((f[c+4>>2]|0)-(f[c>>2]|0)>>2,i)|0,i,d)|0)j=40;else e=0}if((j|0)==40){e=f[n>>2]|0;if(!e)e=1;else{Va[f[(f[e>>2]|0)+40>>2]&127](e,d)|0;e=1}}i=f[q>>2]|0;if(i|0){h=q+4|0;g=f[h>>2]|0;if((g|0)!=(i|0))f[h>>2]=g+(~((g+-4-i|0)>>>2)<<2);Lq(i)}}q=e;u=r;return q|0}function rc(a,c,d){a=a|0;c=c|0;d=d|0;var e=Ka,g=0,i=0,j=0,k=Ka,l=Ka,m=Ka;switch(b[a+24>>0]|0){case 1:{i=f[c>>2]|0;c=a+48|0;g=f[c>>2]|0;c=f[c+4>>2]|0;j=a+40|0;c=(Do(En(f[j>>2]|0,f[j+4>>2]|0,i|0,((i|0)<0)<<31>>31|0)|0,I|0,g|0,c|0)|0)+(f[f[a>>2]>>2]|0)|0;b[s>>0]=b[c>>0];b[s+1>>0]=b[c+1>>0];b[s+2>>0]=b[c+2>>0];b[s+3>>0]=b[c+3>>0];e=$(n[s>>2]);c=+K(+e)>=1.0?(+e>0.0?~~+Y(+J(+e/4294967296.0),4294967295.0)>>>0:~~+W((+e-+(~~+e>>>0))/4294967296.0)>>>0):0;a=d;f[a>>2]=~~+e>>>0;f[a+4>>2]=c;a=d+8|0;f[a>>2]=0;f[a+4>>2]=0;f[a+8>>2]=0;f[a+12>>2]=0;f[a+16>>2]=0;f[a+20>>2]=0;a=1;return a|0}case 2:{j=f[c>>2]|0;i=a+48|0;g=f[i>>2]|0;i=f[i+4>>2]|0;c=a+40|0;i=(Do(En(f[c>>2]|0,f[c+4>>2]|0,j|0,((j|0)<0)<<31>>31|0)|0,I|0,g|0,i|0)|0)+(f[f[a>>2]>>2]|0)|0;g=i;i=i+4|0;i=h[i>>0]|h[i+1>>0]<<8|h[i+2>>0]<<16|h[i+3>>0]<<24;e=(f[s>>2]=h[g>>0]|h[g+1>>0]<<8|h[g+2>>0]<<16|h[g+3>>0]<<24,$(n[s>>2]));g=+K(+e)>=1.0?(+e>0.0?~~+Y(+J(+e/4294967296.0),4294967295.0)>>>0:~~+W((+e-+(~~+e>>>0))/4294967296.0)>>>0):0;j=d;f[j>>2]=~~+e>>>0;f[j+4>>2]=g;e=(f[s>>2]=i,$(n[s>>2]));i=+K(+e)>=1.0?(+e>0.0?~~+Y(+J(+e/4294967296.0),4294967295.0)>>>0:~~+W((+e-+(~~+e>>>0))/4294967296.0)>>>0):0;j=d+8|0;f[j>>2]=~~+e>>>0;f[j+4>>2]=i;j=d+16|0;f[j>>2]=0;f[j+4>>2]=0;f[j+8>>2]=0;f[j+12>>2]=0;j=1;return j|0}case 3:{g=f[c>>2]|0;i=a+48|0;j=f[i>>2]|0;i=f[i+4>>2]|0;c=a+40|0;i=(Do(En(f[c>>2]|0,f[c+4>>2]|0,g|0,((g|0)<0)<<31>>31|0)|0,I|0,j|0,i|0)|0)+(f[f[a>>2]>>2]|0)|0;b[s>>0]=b[i>>0];b[s+1>>0]=b[i+1>>0];b[s+2>>0]=b[i+2>>0];b[s+3>>0]=b[i+3>>0];l=$(n[s>>2]);j=i+4|0;b[s>>0]=b[j>>0];b[s+1>>0]=b[j+1>>0];b[s+2>>0]=b[j+2>>0];b[s+3>>0]=b[j+3>>0];k=$(n[s>>2]);i=i+8|0;b[s>>0]=b[i>>0];b[s+1>>0]=b[i+1>>0];b[s+2>>0]=b[i+2>>0];b[s+3>>0]=b[i+3>>0];e=$(n[s>>2]);i=+K(+l)>=1.0?(+l>0.0?~~+Y(+J(+l/4294967296.0),4294967295.0)>>>0:~~+W((+l-+(~~+l>>>0))/4294967296.0)>>>0):0;j=d;f[j>>2]=~~+l>>>0;f[j+4>>2]=i;j=+K(+k)>=1.0?(+k>0.0?~~+Y(+J(+k/4294967296.0),4294967295.0)>>>0:~~+W((+k-+(~~+k>>>0))/4294967296.0)>>>0):0;i=d+8|0;f[i>>2]=~~+k>>>0;f[i+4>>2]=j;i=+K(+e)>=1.0?(+e>0.0?~~+Y(+J(+e/4294967296.0),4294967295.0)>>>0:~~+W((+e-+(~~+e>>>0))/4294967296.0)>>>0):0;j=d+16|0;f[j>>2]=~~+e>>>0;f[j+4>>2]=i;j=d+24|0;f[j>>2]=0;f[j+4>>2]=0;j=1;return j|0}case 4:{g=f[c>>2]|0;j=a+48|0;i=f[j>>2]|0;j=f[j+4>>2]|0;c=a+40|0;j=(Do(En(f[c>>2]|0,f[c+4>>2]|0,g|0,((g|0)<0)<<31>>31|0)|0,I|0,i|0,j|0)|0)+(f[f[a>>2]>>2]|0)|0;b[s>>0]=b[j>>0];b[s+1>>0]=b[j+1>>0];b[s+2>>0]=b[j+2>>0];b[s+3>>0]=b[j+3>>0];m=$(n[s>>2]);i=j+4|0;b[s>>0]=b[i>>0];b[s+1>>0]=b[i+1>>0];b[s+2>>0]=b[i+2>>0];b[s+3>>0]=b[i+3>>0];e=$(n[s>>2]);i=j+8|0;b[s>>0]=b[i>>0];b[s+1>>0]=b[i+1>>0];b[s+2>>0]=b[i+2>>0];b[s+3>>0]=b[i+3>>0];k=$(n[s>>2]);j=j+12|0;b[s>>0]=b[j>>0];b[s+1>>0]=b[j+1>>0];b[s+2>>0]=b[j+2>>0];b[s+3>>0]=b[j+3>>0];l=$(n[s>>2]);j=+K(+m)>=1.0?(+m>0.0?~~+Y(+J(+m/4294967296.0),4294967295.0)>>>0:~~+W((+m-+(~~+m>>>0))/4294967296.0)>>>0):0;i=d;f[i>>2]=~~+m>>>0;f[i+4>>2]=j;i=+K(+e)>=1.0?(+e>0.0?~~+Y(+J(+e/4294967296.0),4294967295.0)>>>0:~~+W((+e-+(~~+e>>>0))/4294967296.0)>>>0):0;j=d+8|0;f[j>>2]=~~+e>>>0;f[j+4>>2]=i;j=+K(+k)>=1.0?(+k>0.0?~~+Y(+J(+k/4294967296.0),4294967295.0)>>>0:~~+W((+k-+(~~+k>>>0))/4294967296.0)>>>0):0;i=d+16|0;f[i>>2]=~~+k>>>0;f[i+4>>2]=j;i=+K(+l)>=1.0?(+l>0.0?~~+Y(+J(+l/4294967296.0),4294967295.0)>>>0:~~+W((+l-+(~~+l>>>0))/4294967296.0)>>>0):0;j=d+24|0;f[j>>2]=~~+l>>>0;f[j+4>>2]=i;j=1;return j|0}default:{j=0;return j|0}}return 0}function sc(a,b,c,d){a=a|0;b=b|0;c=c|0;d=d|0;var e=0,g=Ka,h=0,i=Ka,j=0,k=0,l=0,m=0,o=Ka,p=Ka,q=Ka,r=0,s=Ka,t=Ka,v=Ka,w=Ka,x=Ka,y=Ka,z=0,A=0,B=0,C=0,D=Ka;C=u;u=u+48|0;B=C+24|0;z=C+12|0;A=C;h=a+32|0;e=f[b>>2]|0;b=e+1|0;if((e|0)>=0){b=((b|0)%3|0|0)==0?e+-2|0:b;e=e+(((e>>>0)%3|0|0)==0?2:-1)|0;if((b|0)<0)b=-1073741824;else b=f[(f[f[h>>2]>>2]|0)+(b<<2)>>2]|0;if((e|0)<0)r=-1073741824;else r=f[(f[f[h>>2]>>2]|0)+(e<<2)>>2]|0}else{b=-1073741824;r=-1073741824}e=a+36|0;l=f[e>>2]|0;h=f[l+4>>2]|0;m=f[l>>2]|0;if(h-m>>2>>>0>b>>>0){e=m;j=h;k=l;h=m}else{yp(l);k=f[e>>2]|0;e=f[k>>2]|0;j=f[k+4>>2]|0;h=f[l>>2]|0}b=f[h+(b<<2)>>2]|0;if(j-e>>2>>>0<=r>>>0){yp(k);e=f[k>>2]|0}h=f[e+(r<<2)>>2]|0;e=(b|0)<(d|0);if(!(e&(h|0)<(d|0))){do if(!e){if((d|0)>0){b=d+-1|0;break}h=a+56|0;if((f[h>>2]|0)<=0){u=C;return}b=f[a+52>>2]|0;e=0;do{f[b+(e<<2)>>2]=0;e=e+1|0}while((e|0)<(f[h>>2]|0));u=C;return}while(0);j=a+56|0;d=f[j>>2]|0;h=X(d,b)|0;if((d|0)<=0){u=C;return}b=f[a+52>>2]|0;e=0;do{f[b+(e<<2)>>2]=f[c+(e+h<<2)>>2];e=e+1|0}while((e|0)<(f[j>>2]|0));u=C;return}e=a+56|0;r=f[e>>2]|0;m=X(r,b)|0;w=$(f[c+(m<<2)>>2]|0);y=$(f[c+(m+1<<2)>>2]|0);r=X(r,h)|0;v=$(f[c+(r<<2)>>2]|0);x=$(f[c+(r+1<<2)>>2]|0);if(!(v!=w|x!=y)){a=f[a+52>>2]|0;f[a>>2]=~~v;f[a+4>>2]=~~x;u=C;return}Rh(B,a,d);Rh(z,a,b);Rh(A,a,h);t=$(n[A>>2]);q=$(n[z>>2]);t=$(t-q);s=$(n[A+4>>2]);i=$(n[z+4>>2]);s=$(s-i);p=$(n[A+8>>2]);g=$(n[z+8>>2]);p=$(p-g);q=$($(n[B>>2])-q);i=$($(n[B+4>>2])-i);g=$($(n[B+8>>2])-g);o=$($($($(t*t)+$(0.0))+$(s*s))+$(p*p));if(o>$(0.0)){D=$($($($($(t*q)+$(0.0))+$(s*i))+$(p*g))/o);t=$(q-$(t*D));s=$(i-$(s*D));g=$(g-$(p*D));i=D;g=$(L($($($(g*g)+$($(s*s)+$($(t*t)+$(0.0))))/o)))}else{i=$(0.0);g=$(0.0)}p=$(v-w);o=$(x-y);D=$(w+$(p*i));p=$(p*g);y=$(y+$(o*i));i=$(o*g);o=$(D-i);g=$(y+p);i=$(D+i);p=$(y-p);l=X(f[e>>2]|0,d)|0;y=$(f[c+(l<<2)>>2]|0);D=$(f[c+(l+1<<2)>>2]|0);w=$(y-o);x=$(D-g);y=$(y-i);D=$(D-p);c=$($($(w*w)+$(0.0))+$(x*x))<$($($(y*y)+$(0.0))+$(D*D));l=a+60|0;k=a+64|0;b=f[k>>2]|0;h=a+68|0;e=f[h>>2]|0;j=(b|0)==(e<<5|0);if(c){if(j){if((b+1|0)<0){zp(l);e=f[h>>2]|0}c=e<<6;b=b+32&-32;fj(l,e<<5>>>0<1073741823?(c>>>0>>0?b:c):2147483647);b=f[k>>2]|0}f[k>>2]=b+1;c=(f[l>>2]|0)+(b>>>5<<2)|0;f[c>>2]=f[c>>2]|1<<(b&31);i=o}else{if(j){if((b+1|0)<0){zp(l);e=f[h>>2]|0}c=e<<6;b=b+32&-32;fj(l,e<<5>>>0<1073741823?(c>>>0>>0?b:c):2147483647);b=f[k>>2]|0}f[k>>2]=b+1;c=(f[l>>2]|0)+(b>>>5<<2)|0;f[c>>2]=f[c>>2]&~(1<<(b&31));g=p}c=~~+J(+(+i+.5));a=f[a+52>>2]|0;f[a>>2]=c;c=~~+J(+(+g+.5));f[a+4>>2]=c;u=C;return}function tc(a,b,c,d){a=a|0;b=b|0;c=c|0;d=d|0;var e=0,g=Ka,h=0,i=Ka,j=0,k=0,l=0,m=Ka,o=Ka,p=Ka,q=0,r=0,s=Ka,t=Ka,v=Ka,w=Ka,x=Ka,y=Ka,z=0,A=0,B=0,C=0,D=Ka;C=u;u=u+48|0;B=C+24|0;z=C+12|0;A=C;h=a+32|0;e=f[b>>2]|0;b=e+1|0;do if((e|0)>=0){b=((b|0)%3|0|0)==0?e+-2|0:b;if(!((e>>>0)%3|0)){e=e+2|0;break}else{e=e+-1|0;break}}else b=e;while(0);r=f[(f[h>>2]|0)+28>>2]|0;q=f[r+(b<<2)>>2]|0;r=f[r+(e<<2)>>2]|0;e=a+36|0;h=f[e>>2]|0;b=f[h+4>>2]|0;l=f[h>>2]|0;if(b-l>>2>>>0>q>>>0){j=b;k=h;b=l;e=l}else{yp(h);e=f[e>>2]|0;j=f[e+4>>2]|0;k=e;b=f[h>>2]|0;e=f[e>>2]|0}b=f[b+(q<<2)>>2]|0;if(j-e>>2>>>0<=r>>>0){yp(k);e=f[k>>2]|0}h=f[e+(r<<2)>>2]|0;e=(b|0)<(d|0);if(!(e&(h|0)<(d|0))){do if(!e){if((d|0)>0){b=d+-1|0;break}h=a+56|0;if((f[h>>2]|0)<=0){u=C;return}b=f[a+52>>2]|0;e=0;do{f[b+(e<<2)>>2]=0;e=e+1|0}while((e|0)<(f[h>>2]|0));u=C;return}while(0);j=a+56|0;d=f[j>>2]|0;h=X(d,b)|0;if((d|0)<=0){u=C;return}b=f[a+52>>2]|0;e=0;do{f[b+(e<<2)>>2]=f[c+(e+h<<2)>>2];e=e+1|0}while((e|0)<(f[j>>2]|0));u=C;return}e=a+56|0;r=f[e>>2]|0;q=X(r,b)|0;w=$(f[c+(q<<2)>>2]|0);y=$(f[c+(q+1<<2)>>2]|0);r=X(r,h)|0;v=$(f[c+(r<<2)>>2]|0);x=$(f[c+(r+1<<2)>>2]|0);if(!(v!=w|x!=y)){a=f[a+52>>2]|0;f[a>>2]=~~v;f[a+4>>2]=~~x;u=C;return}Rh(B,a,d);Rh(z,a,b);Rh(A,a,h);t=$(n[A>>2]);p=$(n[z>>2]);t=$(t-p);s=$(n[A+4>>2]);i=$(n[z+4>>2]);s=$(s-i);o=$(n[A+8>>2]);g=$(n[z+8>>2]);o=$(o-g);p=$($(n[B>>2])-p);i=$($(n[B+4>>2])-i);g=$($(n[B+8>>2])-g);m=$($($($(t*t)+$(0.0))+$(s*s))+$(o*o));if(m>$(0.0)){D=$($($($($(t*p)+$(0.0))+$(s*i))+$(o*g))/m);t=$(p-$(t*D));s=$(i-$(s*D));g=$(g-$(o*D));i=D;g=$(L($($($(g*g)+$($(s*s)+$($(t*t)+$(0.0))))/m)))}else{i=$(0.0);g=$(0.0)}o=$(v-w);m=$(x-y);D=$(w+$(o*i));o=$(o*g);y=$(y+$(m*i));i=$(m*g);m=$(D-i);g=$(y+o);i=$(D+i);o=$(y-o);l=X(f[e>>2]|0,d)|0;y=$(f[c+(l<<2)>>2]|0);D=$(f[c+(l+1<<2)>>2]|0);w=$(y-m);x=$(D-g);y=$(y-i);D=$(D-o);c=$($($(w*w)+$(0.0))+$(x*x))<$($($(y*y)+$(0.0))+$(D*D));l=a+60|0;k=a+64|0;b=f[k>>2]|0;h=a+68|0;e=f[h>>2]|0;j=(b|0)==(e<<5|0);if(c){if(j){if((b+1|0)<0){zp(l);e=f[h>>2]|0}c=e<<6;b=b+32&-32;fj(l,e<<5>>>0<1073741823?(c>>>0>>0?b:c):2147483647);b=f[k>>2]|0}f[k>>2]=b+1;c=(f[l>>2]|0)+(b>>>5<<2)|0;f[c>>2]=f[c>>2]|1<<(b&31);i=m}else{if(j){if((b+1|0)<0){zp(l);e=f[h>>2]|0}c=e<<6;b=b+32&-32;fj(l,e<<5>>>0<1073741823?(c>>>0>>0?b:c):2147483647);b=f[k>>2]|0}f[k>>2]=b+1;c=(f[l>>2]|0)+(b>>>5<<2)|0;f[c>>2]=f[c>>2]&~(1<<(b&31));g=o}c=~~+J(+(+i+.5));a=f[a+52>>2]|0;f[a>>2]=c;c=~~+J(+(+g+.5));f[a+4>>2]=c;u=C;return}function uc(a,b,c,d){a=a|0;b=b|0;c=c|0;d=d|0;var e=0,g=Ka,h=0,i=Ka,j=0,k=0,l=0,m=0,o=Ka,p=Ka,q=Ka,r=0,s=Ka,t=Ka,v=Ka,w=Ka,x=Ka,y=Ka,z=0,A=0,B=0,C=0,D=Ka;C=u;u=u+48|0;B=C+24|0;z=C+12|0;A=C;h=a+48|0;e=f[b>>2]|0;b=e+1|0;if((e|0)>=0){b=((b|0)%3|0|0)==0?e+-2|0:b;e=e+(((e>>>0)%3|0|0)==0?2:-1)|0;if((b|0)<0)b=-1073741824;else b=f[(f[f[h>>2]>>2]|0)+(b<<2)>>2]|0;if((e|0)<0)r=-1073741824;else r=f[(f[f[h>>2]>>2]|0)+(e<<2)>>2]|0}else{b=-1073741824;r=-1073741824}e=a+52|0;l=f[e>>2]|0;h=f[l+4>>2]|0;m=f[l>>2]|0;if(h-m>>2>>>0>b>>>0){e=m;j=h;k=l;h=m}else{yp(l);k=f[e>>2]|0;e=f[k>>2]|0;j=f[k+4>>2]|0;h=f[l>>2]|0}b=f[h+(b<<2)>>2]|0;if(j-e>>2>>>0<=r>>>0){yp(k);e=f[k>>2]|0}h=f[e+(r<<2)>>2]|0;e=(b|0)<(d|0);if(!(e&(h|0)<(d|0))){do if(!e){if((d|0)>0){b=d+-1|0;break}h=a+72|0;if((f[h>>2]|0)<=0){u=C;return}b=f[a+68>>2]|0;e=0;do{f[b+(e<<2)>>2]=0;e=e+1|0}while((e|0)<(f[h>>2]|0));u=C;return}while(0);j=a+72|0;d=f[j>>2]|0;h=X(d,b)|0;if((d|0)<=0){u=C;return}b=f[a+68>>2]|0;e=0;do{f[b+(e<<2)>>2]=f[c+(e+h<<2)>>2];e=e+1|0}while((e|0)<(f[j>>2]|0));u=C;return}e=a+72|0;r=f[e>>2]|0;m=X(r,b)|0;w=$(f[c+(m<<2)>>2]|0);y=$(f[c+(m+1<<2)>>2]|0);r=X(r,h)|0;v=$(f[c+(r<<2)>>2]|0);x=$(f[c+(r+1<<2)>>2]|0);if(!(v!=w|x!=y)){a=f[a+68>>2]|0;f[a>>2]=~~v;f[a+4>>2]=~~x;u=C;return}Vh(B,a,d);Vh(z,a,b);Vh(A,a,h);t=$(n[A>>2]);q=$(n[z>>2]);t=$(t-q);s=$(n[A+4>>2]);i=$(n[z+4>>2]);s=$(s-i);p=$(n[A+8>>2]);g=$(n[z+8>>2]);p=$(p-g);q=$($(n[B>>2])-q);i=$($(n[B+4>>2])-i);g=$($(n[B+8>>2])-g);o=$($($($(t*t)+$(0.0))+$(s*s))+$(p*p));if(o>$(0.0)){D=$($($($($(t*q)+$(0.0))+$(s*i))+$(p*g))/o);t=$(q-$(t*D));s=$(i-$(s*D));g=$(g-$(p*D));i=D;g=$(L($($($(g*g)+$($(s*s)+$($(t*t)+$(0.0))))/o)))}else{i=$(0.0);g=$(0.0)}p=$(v-w);o=$(x-y);D=$(w+$(p*i));p=$(p*g);y=$(y+$(o*i));i=$(o*g);o=$(D-i);g=$(y+p);i=$(D+i);p=$(y-p);l=X(f[e>>2]|0,d)|0;y=$(f[c+(l<<2)>>2]|0);D=$(f[c+(l+1<<2)>>2]|0);w=$(y-o);x=$(D-g);y=$(y-i);D=$(D-p);c=$($($(w*w)+$(0.0))+$(x*x))<$($($(y*y)+$(0.0))+$(D*D));l=a+76|0;k=a+80|0;b=f[k>>2]|0;h=a+84|0;e=f[h>>2]|0;j=(b|0)==(e<<5|0);if(c){if(j){if((b+1|0)<0){zp(l);e=f[h>>2]|0}c=e<<6;b=b+32&-32;fj(l,e<<5>>>0<1073741823?(c>>>0>>0?b:c):2147483647);b=f[k>>2]|0}f[k>>2]=b+1;c=(f[l>>2]|0)+(b>>>5<<2)|0;f[c>>2]=f[c>>2]|1<<(b&31);i=o}else{if(j){if((b+1|0)<0){zp(l);e=f[h>>2]|0}c=e<<6;b=b+32&-32;fj(l,e<<5>>>0<1073741823?(c>>>0>>0?b:c):2147483647);b=f[k>>2]|0}f[k>>2]=b+1;c=(f[l>>2]|0)+(b>>>5<<2)|0;f[c>>2]=f[c>>2]&~(1<<(b&31));g=p}c=~~+J(+(+i+.5));a=f[a+68>>2]|0;f[a>>2]=c;c=~~+J(+(+g+.5));f[a+4>>2]=c;u=C;return}function vc(a,c){a=a|0;c=c|0;var d=0,e=0,g=Ka,i=Ka,j=0,k=0,l=0,m=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0,v=0,w=0,x=0,y=Ka;t=b[c+11>>0]|0;v=t<<24>>24<0;u=v?f[c>>2]|0:c;t=v?f[c+4>>2]|0:t&255;if(t>>>0>3){j=u;m=t;k=t;while(1){v=X(h[j>>0]|h[j+1>>0]<<8|h[j+2>>0]<<16|h[j+3>>0]<<24,1540483477)|0;m=(X(v>>>24^v,1540483477)|0)^(X(m,1540483477)|0);k=k+-4|0;if(k>>>0<=3)break;else j=j+4|0}v=t+-4|0;k=v&-4;l=u+(k+4)|0;j=m;k=v-k|0}else{l=u;j=t;k=t}switch(k|0){case 3:{o=h[l+2>>0]<<16^j;x=6;break}case 2:{o=j;x=6;break}case 1:{p=j;x=7;break}default:q=j}if((x|0)==6){p=h[l+1>>0]<<8^o;x=7}if((x|0)==7)q=X(h[l>>0]^p,1540483477)|0;v=X(q>>>13^q,1540483477)|0;v=v>>>15^v;r=a+4|0;q=f[r>>2]|0;s=(q|0)==0;a:do if(!s){o=q+-1|0;k=(o&q|0)==0;if(k)p=v&o;else p=(v>>>0)%(q>>>0)|0;j=f[(f[a>>2]|0)+(p<<2)>>2]|0;if((j|0)!=0?(e=f[j>>2]|0,(e|0)!=0):0){j=(t|0)==0;if(k){if(j){while(1){if((f[e+4>>2]&o|0)!=(p|0)){d=p;break a}u=b[e+8+11>>0]|0;if(!((u<<24>>24<0?f[e+12>>2]|0:u&255)|0))break;e=f[e>>2]|0;if(!e){d=p;break a}}a=e+20|0;return a|0}b:while(1){if((f[e+4>>2]&o|0)!=(p|0)){d=p;break a}j=e+8|0;l=b[j+11>>0]|0;m=l<<24>>24<0;l=l&255;do if(((m?f[e+12>>2]|0:l)|0)==(t|0)){k=f[j>>2]|0;if(m)if(!(Wl(k,u,t)|0)){x=54;break b}else break;if((k&255)<<24>>24==(b[u>>0]|0)){k=u;do{l=l+-1|0;j=j+1|0;if(!l){x=54;break b}k=k+1|0}while((b[j>>0]|0)==(b[k>>0]|0))}}while(0);e=f[e>>2]|0;if(!e){d=p;break a}}if((x|0)==54){a=e+20|0;return a|0}}else{if(j){d=e;while(1){if((((f[d+4>>2]|0)>>>0)%(q>>>0)|0|0)!=(p|0)){d=p;break a}u=b[d+8+11>>0]|0;if(!((u<<24>>24<0?f[d+12>>2]|0:u&255)|0)){e=d;break}d=f[d>>2]|0;if(!d){d=p;break a}}a=e+20|0;return a|0}c:while(1){if((((f[e+4>>2]|0)>>>0)%(q>>>0)|0|0)!=(p|0)){d=p;break a}j=e+8|0;l=b[j+11>>0]|0;m=l<<24>>24<0;l=l&255;do if(((m?f[e+12>>2]|0:l)|0)==(t|0)){k=f[j>>2]|0;if(m)if(!(Wl(k,u,t)|0)){x=54;break c}else break;if((k&255)<<24>>24==(b[u>>0]|0)){k=u;do{l=l+-1|0;j=j+1|0;if(!l){x=54;break c}k=k+1|0}while((b[j>>0]|0)==(b[k>>0]|0))}}while(0);e=f[e>>2]|0;if(!e){d=p;break a}}if((x|0)==54){a=e+20|0;return a|0}}}else d=p}else d=0;while(0);l=Fn(24)|0;Rl(l+8|0,c);f[l+20>>2]=0;f[l+4>>2]=v;f[l>>2]=0;k=a+12|0;i=$(((f[k>>2]|0)+1|0)>>>0);y=$(q>>>0);g=$(n[a+16>>2]);do if(s|i>$(y*g)){d=(q>>>0<3|(q+-1&q|0)!=0)&1|q<<1;e=~~$(W($(i/g)))>>>0;Vi(a,d>>>0>>0?e:d);d=f[r>>2]|0;e=d+-1|0;if(!(e&d)){j=d;d=e&v;break}else{j=d;d=(v>>>0)%(d>>>0)|0;break}}else j=q;while(0);e=(f[a>>2]|0)+(d<<2)|0;d=f[e>>2]|0;if(!d){d=a+8|0;f[l>>2]=f[d>>2];f[d>>2]=l;f[e>>2]=d;d=f[l>>2]|0;if(d|0){d=f[d+4>>2]|0;e=j+-1|0;if(!(e&j))d=d&e;else d=(d>>>0)%(j>>>0)|0;w=(f[a>>2]|0)+(d<<2)|0;x=52}}else{f[l>>2]=f[d>>2];w=d;x=52}if((x|0)==52)f[w>>2]=l;f[k>>2]=(f[k>>2]|0)+1;a=l;a=a+20|0;return a|0}function wc(a,b,c,d){a=a|0;b=b|0;c=c|0;d=d|0;var e=0,g=Ka,h=0,i=Ka,j=0,k=0,l=0,m=Ka,o=Ka,p=Ka,q=0,r=0,s=Ka,t=Ka,v=Ka,w=Ka,x=Ka,y=Ka,z=0,A=0,B=0,C=0,D=Ka;C=u;u=u+48|0;B=C+24|0;z=C+12|0;A=C;h=a+48|0;e=f[b>>2]|0;b=e+1|0;do if((e|0)>=0){b=((b|0)%3|0|0)==0?e+-2|0:b;if(!((e>>>0)%3|0)){e=e+2|0;break}else{e=e+-1|0;break}}else b=e;while(0);r=f[(f[h>>2]|0)+28>>2]|0;q=f[r+(b<<2)>>2]|0;r=f[r+(e<<2)>>2]|0;e=a+52|0;h=f[e>>2]|0;b=f[h+4>>2]|0;l=f[h>>2]|0;if(b-l>>2>>>0>q>>>0){j=b;k=h;b=l;e=l}else{yp(h);e=f[e>>2]|0;j=f[e+4>>2]|0;k=e;b=f[h>>2]|0;e=f[e>>2]|0}b=f[b+(q<<2)>>2]|0;if(j-e>>2>>>0<=r>>>0){yp(k);e=f[k>>2]|0}h=f[e+(r<<2)>>2]|0;e=(b|0)<(d|0);if(!(e&(h|0)<(d|0))){do if(!e){if((d|0)>0){b=d+-1|0;break}h=a+72|0;if((f[h>>2]|0)<=0){u=C;return}b=f[a+68>>2]|0;e=0;do{f[b+(e<<2)>>2]=0;e=e+1|0}while((e|0)<(f[h>>2]|0));u=C;return}while(0);j=a+72|0;d=f[j>>2]|0;h=X(d,b)|0;if((d|0)<=0){u=C;return}b=f[a+68>>2]|0;e=0;do{f[b+(e<<2)>>2]=f[c+(e+h<<2)>>2];e=e+1|0}while((e|0)<(f[j>>2]|0));u=C;return}e=a+72|0;r=f[e>>2]|0;q=X(r,b)|0;w=$(f[c+(q<<2)>>2]|0);y=$(f[c+(q+1<<2)>>2]|0);r=X(r,h)|0;v=$(f[c+(r<<2)>>2]|0);x=$(f[c+(r+1<<2)>>2]|0);if(!(v!=w|x!=y)){a=f[a+68>>2]|0;f[a>>2]=~~v;f[a+4>>2]=~~x;u=C;return}Vh(B,a,d);Vh(z,a,b);Vh(A,a,h);t=$(n[A>>2]);p=$(n[z>>2]);t=$(t-p);s=$(n[A+4>>2]);i=$(n[z+4>>2]);s=$(s-i);o=$(n[A+8>>2]);g=$(n[z+8>>2]);o=$(o-g);p=$($(n[B>>2])-p);i=$($(n[B+4>>2])-i);g=$($(n[B+8>>2])-g);m=$($($($(t*t)+$(0.0))+$(s*s))+$(o*o));if(m>$(0.0)){D=$($($($($(t*p)+$(0.0))+$(s*i))+$(o*g))/m);t=$(p-$(t*D));s=$(i-$(s*D));g=$(g-$(o*D));i=D;g=$(L($($($(g*g)+$($(s*s)+$($(t*t)+$(0.0))))/m)))}else{i=$(0.0);g=$(0.0)}o=$(v-w);m=$(x-y);D=$(w+$(o*i));o=$(o*g);y=$(y+$(m*i));i=$(m*g);m=$(D-i);g=$(y+o);i=$(D+i);o=$(y-o);l=X(f[e>>2]|0,d)|0;y=$(f[c+(l<<2)>>2]|0);D=$(f[c+(l+1<<2)>>2]|0);w=$(y-m);x=$(D-g);y=$(y-i);D=$(D-o);c=$($($(w*w)+$(0.0))+$(x*x))<$($($(y*y)+$(0.0))+$(D*D));l=a+76|0;k=a+80|0;b=f[k>>2]|0;h=a+84|0;e=f[h>>2]|0;j=(b|0)==(e<<5|0);if(c){if(j){if((b+1|0)<0){zp(l);e=f[h>>2]|0}c=e<<6;b=b+32&-32;fj(l,e<<5>>>0<1073741823?(c>>>0>>0?b:c):2147483647);b=f[k>>2]|0}f[k>>2]=b+1;c=(f[l>>2]|0)+(b>>>5<<2)|0;f[c>>2]=f[c>>2]|1<<(b&31);i=m}else{if(j){if((b+1|0)<0){zp(l);e=f[h>>2]|0}c=e<<6;b=b+32&-32;fj(l,e<<5>>>0<1073741823?(c>>>0>>0?b:c):2147483647);b=f[k>>2]|0}f[k>>2]=b+1;c=(f[l>>2]|0)+(b>>>5<<2)|0;f[c>>2]=f[c>>2]&~(1<<(b&31));g=o}c=~~+J(+(+i+.5));a=f[a+68>>2]|0;f[a>>2]=c;c=~~+J(+(+g+.5));f[a+4>>2]=c;u=C;return}function xc(a,c,d){a=a|0;c=c|0;d=d|0;var e=0,g=0,h=0,i=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,v=0,w=0,x=0,y=0,z=0,A=0,B=0,C=0,D=0;D=u;u=u+16|0;A=D+8|0;x=D+4|0;B=D;y=a+64|0;e=f[y>>2]|0;if(((f[e+28>>2]|0)-(f[e+24>>2]|0)|0)<=0){u=D;return}z=c+84|0;t=c+88|0;w=a+52|0;v=d+84|0;m=d+68|0;o=a+56|0;q=a+60|0;l=a+12|0;n=a+28|0;s=a+40|0;p=a+44|0;r=a+48|0;j=0;k=0;a:while(1){h=f[(f[e+24>>2]|0)+(k<<2)>>2]|0;if((h|0)<0)c=j;else{i=j+1|0;d=(h>>>0)/3|0;c=f[z>>2]|0;if((d|0)>=(((f[t>>2]|0)-c|0)/12|0|0)){C=6;break}c=f[c+(d*12|0)+(((h>>>0)%3|0)<<2)>>2]|0;if(!(b[v>>0]|0))c=f[(f[m>>2]|0)+(c<<2)>>2]|0;f[A>>2]=c;d=f[o>>2]|0;if(d>>>0<(f[q>>2]|0)>>>0){f[d>>2]=c;f[o>>2]=d+4}else Bj(w,A);f[A>>2]=h;f[x>>2]=0;b:do if(!(f[(f[l>>2]|0)+(k>>>5<<2)>>2]&1<<(k&31)))c=h;else{c=h+1|0;c=((c|0)%3|0|0)==0?h+-2|0:c;g=f[a>>2]|0;if(!(1<<(c&31)&f[g+(c>>>5<<2)>>2])){if((c|0)>=0){c=f[(f[(f[y>>2]|0)+12>>2]|0)+(c<<2)>>2]|0;d=c+1|0;if((c|0)>=0){c=((d|0)%3|0|0)==0?c+-2|0:d;f[x>>2]=c;if((c|0)<=-1){c=h;break}while(1){f[A>>2]=c;d=c+1|0;d=((d|0)%3|0|0)==0?c+-2|0:d;if(1<<(d&31)&f[g+(d>>>5<<2)>>2]|0){d=-1073741824;break}if((d|0)<0)break;d=f[(f[(f[y>>2]|0)+12>>2]|0)+(d<<2)>>2]|0;e=d+1|0;if((d|0)<0)break;d=((e|0)%3|0|0)==0?d+-2|0:e;f[x>>2]=d;if((d|0)>-1)c=d;else break b}f[x>>2]=d;break}}}else c=-1073741824;f[x>>2]=c;c=h}while(0);f[(f[n>>2]|0)+(c<<2)>>2]=j;c=f[p>>2]|0;if((c|0)==(f[r>>2]|0))Bj(s,A);else{f[c>>2]=f[A>>2];f[p>>2]=c+4}e=f[y>>2]|0;c=f[A>>2]|0;c:do if((c|0)>=0){d=(((c>>>0)%3|0|0)==0?2:-1)+c|0;if((d|0)>=0){d=f[(f[e+12>>2]|0)+(d<<2)>>2]|0;if((d|0)>=0){d=d+(((d>>>0)%3|0|0)==0?2:-1)|0;f[x>>2]=d;if((d|0)>-1&(d|0)!=(c|0)){e=j;while(1){j=d+1|0;j=((j|0)%3|0|0)==0?d+-2|0:j;do if(f[(f[a>>2]|0)+(j>>>5<<2)>>2]&1<<(j&31)){h=i+1|0;e=(d>>>0)/3|0;c=f[z>>2]|0;if((e|0)>=(((f[t>>2]|0)-c|0)/12|0|0)){C=33;break a}c=f[c+(e*12|0)+(((d>>>0)%3|0)<<2)>>2]|0;if(!(b[v>>0]|0))c=f[(f[m>>2]|0)+(c<<2)>>2]|0;f[B>>2]=c;d=f[o>>2]|0;if(d>>>0<(f[q>>2]|0)>>>0){f[d>>2]=c;f[o>>2]=d+4}else Bj(w,B);c=f[p>>2]|0;if((c|0)==(f[r>>2]|0)){Bj(s,x);g=i;c=h;break}else{f[c>>2]=f[x>>2];f[p>>2]=c+4;g=i;c=h;break}}else{g=e;c=i}while(0);f[(f[n>>2]|0)+(f[x>>2]<<2)>>2]=g;e=f[y>>2]|0;d=f[x>>2]|0;if((d|0)<0)break;d=(((d>>>0)%3|0|0)==0?2:-1)+d|0;if((d|0)<0)break;d=f[(f[e+12>>2]|0)+(d<<2)>>2]|0;if((d|0)<0)break;d=d+(((d>>>0)%3|0|0)==0?2:-1)|0;f[x>>2]=d;if(!((d|0)>-1?(d|0)!=(f[A>>2]|0):0))break c;else{e=g;i=c}}f[x>>2]=d}else c=i}else{c=d;C=30}}else{c=d;C=30}}else C=30;while(0);if((C|0)==30){C=0;f[x>>2]=c;c=i}}k=k+1|0;if((k|0)>=((f[e+28>>2]|0)-(f[e+24>>2]|0)>>2|0)){C=3;break}else j=c}if((C|0)==3){u=D;return}else if((C|0)==6)Fa(16554,16525,64,16549);else if((C|0)==33)Fa(16554,16525,64,16549)}function yc(a,c,d,e){a=a|0;c=c|0;d=d|0;e=e|0;var g=0,h=0,i=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,v=0,w=0,x=0,y=0,z=0,A=0,B=0,C=0;B=u;u=u+16|0;A=B+4|0;z=B;if(!(Fj(a,d)|0)){a=0;u=B;return a|0}v=a+64|0;d=f[v>>2]|0;a:do if(((f[d+4>>2]|0)-(f[d>>2]|0)|0)>0){s=a+12|0;w=c+84|0;t=c+88|0;x=e+84|0;r=e+68|0;y=a+24|0;q=0;b:while(1){f[z>>2]=(q>>>0)/3|0;f[A>>2]=f[z>>2];p=uk(d,A)|0;d=f[v>>2]|0;do if(!p){p=f[(f[d+12>>2]|0)+(q<<2)>>2]|0;if((p|0)<0){g=(f[a>>2]|0)+(q>>>5<<2)|0;f[g>>2]=f[g>>2]|1<<(q&31);g=q+1|0;g=((g|0)%3|0|0)==0?q+-2|0:g;if((g|0)<0)g=-1073741824;else g=f[(f[d>>2]|0)+(g<<2)>>2]|0;p=(f[s>>2]|0)+(g>>>5<<2)|0;f[p>>2]=f[p>>2]|1<<(g&31);g=(((q>>>0)%3|0|0)==0?2:-1)+q|0;if((g|0)<0)g=-1073741824;else g=f[(f[d>>2]|0)+(g<<2)>>2]|0;p=(f[s>>2]|0)+(g>>>5<<2)|0;f[p>>2]=f[p>>2]|1<<(g&31);break}if((p|0)>=(q|0)){o=q+1|0;k=((o|0)%3|0|0)==0?q+-2|0:o;i=p+(((p>>>0)%3|0|0)==0?2:-1)|0;h=(k|0)/3|0;if((k|0)<=-3){d=17;break b}g=f[w>>2]|0;n=((f[t>>2]|0)-g|0)/12|0;if((h|0)>=(n|0)){d=19;break b}m=g;j=f[m+(h*12|0)+(((k|0)%3|0)<<2)>>2]|0;g=(i|0)/3|0;if((i|0)<=-3){d=21;break b}if((g|0)>=(n|0)){d=23;break b}g=f[m+(g*12|0)+(((i|0)%3|0)<<2)>>2]|0;l=(b[x>>0]|0)==0;if(l){C=f[r>>2]|0;h=f[C+(g<<2)>>2]|0;g=f[C+(j<<2)>>2]|0}else{h=g;g=j}if((g|0)==(h|0)){g=k+1|0;if((k|0)<0)h=k;else h=((g|0)%3|0|0)==0?k+-2|0:g;do if((i|0)>=0)if(!((i>>>0)%3|0)){i=i+2|0;break}else{i=i+-1|0;break}while(0);g=(h|0)/3|0;if((h|0)<=-3){d=17;break b}if((g|0)>=(n|0)){d=19;break b}g=f[m+(g*12|0)+(((h|0)%3|0)<<2)>>2]|0;h=(i|0)/3|0;if((i|0)<=-3){d=21;break b}if((h|0)>=(n|0)){d=23;break b}h=f[m+(h*12|0)+(((i|0)%3|0)<<2)>>2]|0;if(l){C=f[r>>2]|0;h=f[C+(h<<2)>>2]|0;g=f[C+(g<<2)>>2]|0}if((g|0)==(h|0))break}b[y>>0]=0;g=f[a>>2]|0;C=g+(q>>>5<<2)|0;f[C>>2]=f[C>>2]|1<<(q&31);g=g+(p>>>5<<2)|0;f[g>>2]=f[g>>2]|1<<(p&31);g=((o|0)%3|0|0)==0?q+-2|0:o;if((g|0)<0)g=-1073741824;else g=f[(f[d>>2]|0)+(g<<2)>>2]|0;C=(f[s>>2]|0)+(g>>>5<<2)|0;f[C>>2]=f[C>>2]|1<<(g&31);g=(((q>>>0)%3|0|0)==0?2:-1)+q|0;if((g|0)<0)g=-1073741824;else g=f[(f[d>>2]|0)+(g<<2)>>2]|0;C=(f[s>>2]|0)+(g>>>5<<2)|0;f[C>>2]=f[C>>2]|1<<(g&31);g=p+1|0;g=((g|0)%3|0|0)==0?p+-2|0:g;if((g|0)<0)g=-1073741824;else g=f[(f[d>>2]|0)+(g<<2)>>2]|0;C=(f[s>>2]|0)+(g>>>5<<2)|0;f[C>>2]=f[C>>2]|1<<(g&31);g=(((p>>>0)%3|0|0)==0?2:-1)+p|0;if((g|0)<0)g=-1073741824;else g=f[(f[d>>2]|0)+(g<<2)>>2]|0;C=(f[s>>2]|0)+(g>>>5<<2)|0;f[C>>2]=f[C>>2]|1<<(g&31)}}while(0);q=q+1|0;if((q|0)>=((f[d+4>>2]|0)-(f[d>>2]|0)>>2|0))break a}if((d|0)==17)Fa(16500,16525,63,16549);else if((d|0)==19)Fa(16554,16525,64,16549);else if((d|0)==21)Fa(16500,16525,63,16549);else if((d|0)==23)Fa(16554,16525,64,16549)}while(0);if((c|0)!=0&(e|0)!=0){xc(a,c,e);C=1;u=B;return C|0}else{Lc(a,0,0);C=1;u=B;return C|0}return 0}function zc(a,c,d){a=a|0;c=c|0;d=d|0;var e=0,g=0,i=0,j=0,k=0,l=0,m=0;m=u;u=u+32|0;i=m+20|0;e=m+16|0;j=m+12|0;k=m+8|0;l=m+4|0;g=m;if(!d){a=0;u=m;return a|0}switch(f[a+28>>2]|0){case 9:{f[e>>2]=f[c>>2];f[i>>2]=f[e>>2];a=nd(a,i,d)|0;u=m;return a|0}case 2:{f[j>>2]=f[c>>2];f[i>>2]=f[j>>2];a=$f(a,i,d)|0;u=m;return a|0}case 1:{f[k>>2]=f[c>>2];f[i>>2]=f[k>>2];a=Uf(a,i,d)|0;u=m;return a|0}case 4:{f[l>>2]=f[c>>2];f[i>>2]=f[l>>2];a=rf(a,i,d)|0;u=m;return a|0}case 3:{f[g>>2]=f[c>>2];f[i>>2]=f[g>>2];a=of(a,i,d)|0;u=m;return a|0}case 6:{e=f[c>>2]|0;switch(b[a+24>>0]|0){case 1:{c=a+48|0;l=f[c>>2]|0;c=f[c+4>>2]|0;k=a+40|0;a=(Do(En(f[k>>2]|0,f[k+4>>2]|0,e|0,((e|0)<0)<<31>>31|0)|0,I|0,l|0,c|0)|0)+(f[f[a>>2]>>2]|0)|0;f[d>>2]=h[a>>0]|h[a+1>>0]<<8|h[a+2>>0]<<16|h[a+3>>0]<<24;a=d+4|0;f[a>>2]=0;f[a+4>>2]=0;f[a+8>>2]=0;a=1;u=m;return a|0}case 2:{c=a+48|0;l=f[c>>2]|0;c=f[c+4>>2]|0;k=a+40|0;c=(Do(En(f[k>>2]|0,f[k+4>>2]|0,e|0,((e|0)<0)<<31>>31|0)|0,I|0,l|0,c|0)|0)+(f[f[a>>2]>>2]|0)|0;l=c;c=c+4|0;c=h[c>>0]|h[c+1>>0]<<8|h[c+2>>0]<<16|h[c+3>>0]<<24;a=d;f[a>>2]=h[l>>0]|h[l+1>>0]<<8|h[l+2>>0]<<16|h[l+3>>0]<<24;f[a+4>>2]=c;a=d+8|0;f[a>>2]=0;f[a+4>>2]=0;a=1;u=m;return a|0}case 3:{c=a+48|0;l=f[c>>2]|0;c=f[c+4>>2]|0;k=a+40|0;Om(d|0,(Do(En(f[k>>2]|0,f[k+4>>2]|0,e|0,((e|0)<0)<<31>>31|0)|0,I|0,l|0,c|0)|0)+(f[f[a>>2]>>2]|0)|0,12)|0;f[d+12>>2]=0;a=1;u=m;return a|0}case 4:{c=a+48|0;l=f[c>>2]|0;c=f[c+4>>2]|0;k=a+40|0;Om(d|0,(Do(En(f[k>>2]|0,f[k+4>>2]|0,e|0,((e|0)<0)<<31>>31|0)|0,I|0,l|0,c|0)|0)+(f[f[a>>2]>>2]|0)|0,16)|0;a=1;u=m;return a|0}default:{a=0;u=m;return a|0}}}case 5:{e=f[c>>2]|0;switch(b[a+24>>0]|0){case 1:{c=a+48|0;l=f[c>>2]|0;c=f[c+4>>2]|0;k=a+40|0;a=(Do(En(f[k>>2]|0,f[k+4>>2]|0,e|0,((e|0)<0)<<31>>31|0)|0,I|0,l|0,c|0)|0)+(f[f[a>>2]>>2]|0)|0;f[d>>2]=h[a>>0]|h[a+1>>0]<<8|h[a+2>>0]<<16|h[a+3>>0]<<24;a=d+4|0;f[a>>2]=0;f[a+4>>2]=0;f[a+8>>2]=0;a=1;u=m;return a|0}case 2:{c=a+48|0;l=f[c>>2]|0;c=f[c+4>>2]|0;k=a+40|0;c=(Do(En(f[k>>2]|0,f[k+4>>2]|0,e|0,((e|0)<0)<<31>>31|0)|0,I|0,l|0,c|0)|0)+(f[f[a>>2]>>2]|0)|0;l=c;c=c+4|0;c=h[c>>0]|h[c+1>>0]<<8|h[c+2>>0]<<16|h[c+3>>0]<<24;a=d;f[a>>2]=h[l>>0]|h[l+1>>0]<<8|h[l+2>>0]<<16|h[l+3>>0]<<24;f[a+4>>2]=c;a=d+8|0;f[a>>2]=0;f[a+4>>2]=0;a=1;u=m;return a|0}case 3:{c=a+48|0;l=f[c>>2]|0;c=f[c+4>>2]|0;k=a+40|0;Om(d|0,(Do(En(f[k>>2]|0,f[k+4>>2]|0,e|0,((e|0)<0)<<31>>31|0)|0,I|0,l|0,c|0)|0)+(f[f[a>>2]>>2]|0)|0,12)|0;f[d+12>>2]=0;a=1;u=m;return a|0}case 4:{c=a+48|0;l=f[c>>2]|0;c=f[c+4>>2]|0;k=a+40|0;Om(d|0,(Do(En(f[k>>2]|0,f[k+4>>2]|0,e|0,((e|0)<0)<<31>>31|0)|0,I|0,l|0,c|0)|0)+(f[f[a>>2]>>2]|0)|0,16)|0;a=1;u=m;return a|0}default:{a=0;u=m;return a|0}}}default:{a=0;u=m;return a|0}}return 0}function Ac(a,b,c){a=a|0;b=b|0;c=c|0;var d=0,e=0,g=0,h=0,i=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,v=0;v=u;u=u+32|0;t=v+12|0;q=v+8|0;p=v+4|0;r=v;s=a+8|0;a:do if(f[s>>2]|0?(o=f[a>>2]|0,n=a+4|0,f[a>>2]=n,f[(f[n>>2]|0)+8>>2]=0,f[n>>2]=0,f[s>>2]=0,d=f[o+4>>2]|0,d=(d|0)==0?o:d,d|0):0){o=a+4|0;g=f[b>>2]|0;e=g;m=d;while(1){if((g|0)==(f[c>>2]|0))break;h=m+16|0;f[h>>2]=f[g+16>>2];if((m|0)!=(g|0)){f[p>>2]=f[g+20>>2];f[r>>2]=g+24;f[q>>2]=f[p>>2];f[t>>2]=f[r>>2];Jc(m+20|0,q,t)}j=m+8|0;g=f[j>>2]|0;do if(g){d=f[g>>2]|0;if((d|0)==(m|0)){f[g>>2]=0;d=f[g+4>>2]|0;if(!d){l=g;break}while(1){g=f[d>>2]|0;if(g|0){d=g;continue}g=f[d+4>>2]|0;if(!g)break;else d=g}l=d;break}else{f[g+4>>2]=0;if(!d){l=g;break}while(1){g=f[d>>2]|0;if(g|0){d=g;continue}g=f[d+4>>2]|0;if(!g)break;else d=g}l=d;break}}else l=0;while(0);d=f[n>>2]|0;do if(d){h=f[h>>2]|0;i=d;while(1){if((h|0)<(f[i+16>>2]|0)){d=f[i>>2]|0;if(!d){k=22;break}}else{g=i+4|0;d=f[g>>2]|0;if(!d){k=25;break}}i=d}if((k|0)==22){d=i;g=i;break}else if((k|0)==25){d=i;break}}else{d=n;g=n}while(0);f[m>>2]=0;f[m+4>>2]=0;f[j>>2]=d;f[g>>2]=m;d=f[f[a>>2]>>2]|0;if(!d)d=m;else{f[a>>2]=d;d=f[g>>2]|0}xf(f[o>>2]|0,d);f[s>>2]=(f[s>>2]|0)+1;d=f[e+4>>2]|0;if(!d)while(1){d=f[e+8>>2]|0;if((f[d>>2]|0)==(e|0))break;else e=d}else while(1){e=f[d>>2]|0;if(!e)break;else d=e}f[b>>2]=d;if(!l)break a;else{e=d;g=d;m=l}}d=f[m+8>>2]|0;if(!d)d=m;else while(1){e=f[d+8>>2]|0;if(!e)break;else d=e}nk(a,d)}while(0);d=f[b>>2]|0;l=f[c>>2]|0;if((d|0)==(l|0)){u=v;return}m=a+4|0;n=a+4|0;g=d;e=d;while(1){Ph(t,a,g+16|0);g=f[m>>2]|0;do if(g){d=f[t>>2]|0;i=f[d+16>>2]|0;j=g;while(1){if((i|0)<(f[j+16>>2]|0)){g=f[j>>2]|0;if(!g){k=41;break}}else{h=j+4|0;g=f[h>>2]|0;if(!g){k=44;break}}j=g}if((k|0)==41){g=j;h=j;break}else if((k|0)==44){g=j;break}}else{d=f[t>>2]|0;g=m;h=m}while(0);f[d>>2]=0;f[d+4>>2]=0;f[d+8>>2]=g;f[h>>2]=d;g=f[f[a>>2]>>2]|0;if(g){f[a>>2]=g;d=f[h>>2]|0}xf(f[n>>2]|0,d);f[s>>2]=(f[s>>2]|0)+1;d=f[e+4>>2]|0;if(!d)while(1){d=f[e+8>>2]|0;if((f[d>>2]|0)==(e|0))break;else e=d}else while(1){e=f[d>>2]|0;if(!e)break;else d=e}f[b>>2]=d;if((d|0)==(l|0))break;else{g=d;e=d}}u=v;return}function Bc(a,c,d){a=a|0;c=c|0;d=d|0;var e=Ka,g=0,i=0,j=0,k=Ka,l=Ka;switch(b[a+24>>0]|0){case 1:{i=f[c>>2]|0;c=a+48|0;g=f[c>>2]|0;c=f[c+4>>2]|0;j=a+40|0;c=(Do(En(f[j>>2]|0,f[j+4>>2]|0,i|0,((i|0)<0)<<31>>31|0)|0,I|0,g|0,c|0)|0)+(f[f[a>>2]>>2]|0)|0;b[s>>0]=b[c>>0];b[s+1>>0]=b[c+1>>0];b[s+2>>0]=b[c+2>>0];b[s+3>>0]=b[c+3>>0];e=$(n[s>>2]);c=+K(+e)>=1.0?(+e>0.0?~~+Y(+J(+e/4294967296.0),4294967295.0)>>>0:~~+W((+e-+(~~+e>>>0))/4294967296.0)>>>0):0;a=d;f[a>>2]=~~+e>>>0;f[a+4>>2]=c;a=d+8|0;f[a>>2]=0;f[a+4>>2]=0;f[a+8>>2]=0;f[a+12>>2]=0;a=1;return a|0}case 2:{j=f[c>>2]|0;i=a+48|0;g=f[i>>2]|0;i=f[i+4>>2]|0;c=a+40|0;i=(Do(En(f[c>>2]|0,f[c+4>>2]|0,j|0,((j|0)<0)<<31>>31|0)|0,I|0,g|0,i|0)|0)+(f[f[a>>2]>>2]|0)|0;g=i;i=i+4|0;i=h[i>>0]|h[i+1>>0]<<8|h[i+2>>0]<<16|h[i+3>>0]<<24;e=(f[s>>2]=h[g>>0]|h[g+1>>0]<<8|h[g+2>>0]<<16|h[g+3>>0]<<24,$(n[s>>2]));g=+K(+e)>=1.0?(+e>0.0?~~+Y(+J(+e/4294967296.0),4294967295.0)>>>0:~~+W((+e-+(~~+e>>>0))/4294967296.0)>>>0):0;j=d;f[j>>2]=~~+e>>>0;f[j+4>>2]=g;e=(f[s>>2]=i,$(n[s>>2]));i=+K(+e)>=1.0?(+e>0.0?~~+Y(+J(+e/4294967296.0),4294967295.0)>>>0:~~+W((+e-+(~~+e>>>0))/4294967296.0)>>>0):0;j=d+8|0;f[j>>2]=~~+e>>>0;f[j+4>>2]=i;j=d+16|0;f[j>>2]=0;f[j+4>>2]=0;j=1;return j|0}case 3:{g=f[c>>2]|0;i=a+48|0;j=f[i>>2]|0;i=f[i+4>>2]|0;c=a+40|0;i=(Do(En(f[c>>2]|0,f[c+4>>2]|0,g|0,((g|0)<0)<<31>>31|0)|0,I|0,j|0,i|0)|0)+(f[f[a>>2]>>2]|0)|0;b[s>>0]=b[i>>0];b[s+1>>0]=b[i+1>>0];b[s+2>>0]=b[i+2>>0];b[s+3>>0]=b[i+3>>0];l=$(n[s>>2]);j=i+4|0;b[s>>0]=b[j>>0];b[s+1>>0]=b[j+1>>0];b[s+2>>0]=b[j+2>>0];b[s+3>>0]=b[j+3>>0];k=$(n[s>>2]);i=i+8|0;b[s>>0]=b[i>>0];b[s+1>>0]=b[i+1>>0];b[s+2>>0]=b[i+2>>0];b[s+3>>0]=b[i+3>>0];e=$(n[s>>2]);i=+K(+l)>=1.0?(+l>0.0?~~+Y(+J(+l/4294967296.0),4294967295.0)>>>0:~~+W((+l-+(~~+l>>>0))/4294967296.0)>>>0):0;j=d;f[j>>2]=~~+l>>>0;f[j+4>>2]=i;j=+K(+k)>=1.0?(+k>0.0?~~+Y(+J(+k/4294967296.0),4294967295.0)>>>0:~~+W((+k-+(~~+k>>>0))/4294967296.0)>>>0):0;i=d+8|0;f[i>>2]=~~+k>>>0;f[i+4>>2]=j;i=+K(+e)>=1.0?(+e>0.0?~~+Y(+J(+e/4294967296.0),4294967295.0)>>>0:~~+W((+e-+(~~+e>>>0))/4294967296.0)>>>0):0;j=d+16|0;f[j>>2]=~~+e>>>0;f[j+4>>2]=i;j=1;return j|0}case 4:{g=f[c>>2]|0;i=a+48|0;j=f[i>>2]|0;i=f[i+4>>2]|0;c=a+40|0;i=(Do(En(f[c>>2]|0,f[c+4>>2]|0,g|0,((g|0)<0)<<31>>31|0)|0,I|0,j|0,i|0)|0)+(f[f[a>>2]>>2]|0)|0;b[s>>0]=b[i>>0];b[s+1>>0]=b[i+1>>0];b[s+2>>0]=b[i+2>>0];b[s+3>>0]=b[i+3>>0];e=$(n[s>>2]);j=i+4|0;b[s>>0]=b[j>>0];b[s+1>>0]=b[j+1>>0];b[s+2>>0]=b[j+2>>0];b[s+3>>0]=b[j+3>>0];k=$(n[s>>2]);i=i+8|0;b[s>>0]=b[i>>0];b[s+1>>0]=b[i+1>>0];b[s+2>>0]=b[i+2>>0];b[s+3>>0]=b[i+3>>0];l=$(n[s>>2]);i=+K(+e)>=1.0?(+e>0.0?~~+Y(+J(+e/4294967296.0),4294967295.0)>>>0:~~+W((+e-+(~~+e>>>0))/4294967296.0)>>>0):0;j=d;f[j>>2]=~~+e>>>0;f[j+4>>2]=i;j=+K(+k)>=1.0?(+k>0.0?~~+Y(+J(+k/4294967296.0),4294967295.0)>>>0:~~+W((+k-+(~~+k>>>0))/4294967296.0)>>>0):0;i=d+8|0;f[i>>2]=~~+k>>>0;f[i+4>>2]=j;i=+K(+l)>=1.0?(+l>0.0?~~+Y(+J(+l/4294967296.0),4294967295.0)>>>0:~~+W((+l-+(~~+l>>>0))/4294967296.0)>>>0):0;j=d+16|0;f[j>>2]=~~+l>>>0;f[j+4>>2]=i;j=1;return j|0}default:{j=0;return j|0}}return 0}function Cc(a,c,d){a=a|0;c=c|0;d=d|0;var e=0,g=0,i=0,j=0,k=0,l=0,m=0;m=u;u=u+32|0;i=m+20|0;e=m+16|0;j=m+12|0;k=m+8|0;l=m+4|0;g=m;if(!d){a=0;u=m;return a|0}switch(f[a+28>>2]|0){case 9:{f[e>>2]=f[c>>2];f[i>>2]=f[e>>2];a=Dd(a,i,d)|0;u=m;return a|0}case 2:{f[j>>2]=f[c>>2];f[i>>2]=f[j>>2];a=pg(a,i,d)|0;u=m;return a|0}case 1:{f[k>>2]=f[c>>2];f[i>>2]=f[k>>2];a=kg(a,i,d)|0;u=m;return a|0}case 4:{f[l>>2]=f[c>>2];f[i>>2]=f[l>>2];a=Hf(a,i,d)|0;u=m;return a|0}case 3:{f[g>>2]=f[c>>2];f[i>>2]=f[g>>2];a=Gf(a,i,d)|0;u=m;return a|0}case 6:{e=f[c>>2]|0;switch(b[a+24>>0]|0){case 1:{c=a+48|0;l=f[c>>2]|0;c=f[c+4>>2]|0;k=a+40|0;a=(Do(En(f[k>>2]|0,f[k+4>>2]|0,e|0,((e|0)<0)<<31>>31|0)|0,I|0,l|0,c|0)|0)+(f[f[a>>2]>>2]|0)|0;f[d>>2]=h[a>>0]|h[a+1>>0]<<8|h[a+2>>0]<<16|h[a+3>>0]<<24;a=d+4|0;f[a>>2]=0;f[a+4>>2]=0;a=1;u=m;return a|0}case 2:{c=a+48|0;l=f[c>>2]|0;c=f[c+4>>2]|0;k=a+40|0;c=(Do(En(f[k>>2]|0,f[k+4>>2]|0,e|0,((e|0)<0)<<31>>31|0)|0,I|0,l|0,c|0)|0)+(f[f[a>>2]>>2]|0)|0;l=c;c=c+4|0;c=h[c>>0]|h[c+1>>0]<<8|h[c+2>>0]<<16|h[c+3>>0]<<24;a=d;f[a>>2]=h[l>>0]|h[l+1>>0]<<8|h[l+2>>0]<<16|h[l+3>>0]<<24;f[a+4>>2]=c;f[d+8>>2]=0;a=1;u=m;return a|0}case 3:{c=a+48|0;l=f[c>>2]|0;c=f[c+4>>2]|0;k=a+40|0;Om(d|0,(Do(En(f[k>>2]|0,f[k+4>>2]|0,e|0,((e|0)<0)<<31>>31|0)|0,I|0,l|0,c|0)|0)+(f[f[a>>2]>>2]|0)|0,12)|0;a=1;u=m;return a|0}case 4:{c=a+48|0;l=f[c>>2]|0;c=f[c+4>>2]|0;k=a+40|0;Om(d|0,(Do(En(f[k>>2]|0,f[k+4>>2]|0,e|0,((e|0)<0)<<31>>31|0)|0,I|0,l|0,c|0)|0)+(f[f[a>>2]>>2]|0)|0,12)|0;a=1;u=m;return a|0}default:{a=0;u=m;return a|0}}}case 5:{e=f[c>>2]|0;switch(b[a+24>>0]|0){case 1:{c=a+48|0;l=f[c>>2]|0;c=f[c+4>>2]|0;k=a+40|0;a=(Do(En(f[k>>2]|0,f[k+4>>2]|0,e|0,((e|0)<0)<<31>>31|0)|0,I|0,l|0,c|0)|0)+(f[f[a>>2]>>2]|0)|0;f[d>>2]=h[a>>0]|h[a+1>>0]<<8|h[a+2>>0]<<16|h[a+3>>0]<<24;a=d+4|0;f[a>>2]=0;f[a+4>>2]=0;a=1;u=m;return a|0}case 2:{c=a+48|0;l=f[c>>2]|0;c=f[c+4>>2]|0;k=a+40|0;c=(Do(En(f[k>>2]|0,f[k+4>>2]|0,e|0,((e|0)<0)<<31>>31|0)|0,I|0,l|0,c|0)|0)+(f[f[a>>2]>>2]|0)|0;l=c;c=c+4|0;c=h[c>>0]|h[c+1>>0]<<8|h[c+2>>0]<<16|h[c+3>>0]<<24;a=d;f[a>>2]=h[l>>0]|h[l+1>>0]<<8|h[l+2>>0]<<16|h[l+3>>0]<<24;f[a+4>>2]=c;f[d+8>>2]=0;a=1;u=m;return a|0}case 3:{c=a+48|0;l=f[c>>2]|0;c=f[c+4>>2]|0;k=a+40|0;Om(d|0,(Do(En(f[k>>2]|0,f[k+4>>2]|0,e|0,((e|0)<0)<<31>>31|0)|0,I|0,l|0,c|0)|0)+(f[f[a>>2]>>2]|0)|0,12)|0;a=1;u=m;return a|0}case 4:{c=a+48|0;l=f[c>>2]|0;c=f[c+4>>2]|0;k=a+40|0;Om(d|0,(Do(En(f[k>>2]|0,f[k+4>>2]|0,e|0,((e|0)<0)<<31>>31|0)|0,I|0,l|0,c|0)|0)+(f[f[a>>2]>>2]|0)|0,12)|0;a=1;u=m;return a|0}default:{a=0;u=m;return a|0}}}default:{a=0;u=m;return a|0}}return 0}function Dc(a,c,d){a=a|0;c=c|0;d=d|0;var e=0,g=0,i=0,j=0,k=0,l=0,m=0;m=u;u=u+32|0;i=m+20|0;e=m+16|0;j=m+12|0;k=m+8|0;l=m+4|0;g=m;if(!d){a=0;u=m;return a|0}switch(f[a+28>>2]|0){case 9:{f[e>>2]=f[c>>2];f[i>>2]=f[e>>2];a=Gd(a,i,d)|0;u=m;return a|0}case 2:{f[j>>2]=f[c>>2];f[i>>2]=f[j>>2];a=pg(a,i,d)|0;u=m;return a|0}case 1:{f[k>>2]=f[c>>2];f[i>>2]=f[k>>2];a=kg(a,i,d)|0;u=m;return a|0}case 4:{f[l>>2]=f[c>>2];f[i>>2]=f[l>>2];a=Hf(a,i,d)|0;u=m;return a|0}case 3:{f[g>>2]=f[c>>2];f[i>>2]=f[g>>2];a=Gf(a,i,d)|0;u=m;return a|0}case 6:{e=f[c>>2]|0;switch(b[a+24>>0]|0){case 1:{c=a+48|0;l=f[c>>2]|0;c=f[c+4>>2]|0;k=a+40|0;a=(Do(En(f[k>>2]|0,f[k+4>>2]|0,e|0,((e|0)<0)<<31>>31|0)|0,I|0,l|0,c|0)|0)+(f[f[a>>2]>>2]|0)|0;f[d>>2]=h[a>>0]|h[a+1>>0]<<8|h[a+2>>0]<<16|h[a+3>>0]<<24;a=d+4|0;f[a>>2]=0;f[a+4>>2]=0;a=1;u=m;return a|0}case 2:{c=a+48|0;l=f[c>>2]|0;c=f[c+4>>2]|0;k=a+40|0;c=(Do(En(f[k>>2]|0,f[k+4>>2]|0,e|0,((e|0)<0)<<31>>31|0)|0,I|0,l|0,c|0)|0)+(f[f[a>>2]>>2]|0)|0;l=c;c=c+4|0;c=h[c>>0]|h[c+1>>0]<<8|h[c+2>>0]<<16|h[c+3>>0]<<24;a=d;f[a>>2]=h[l>>0]|h[l+1>>0]<<8|h[l+2>>0]<<16|h[l+3>>0]<<24;f[a+4>>2]=c;f[d+8>>2]=0;a=1;u=m;return a|0}case 3:{c=a+48|0;l=f[c>>2]|0;c=f[c+4>>2]|0;k=a+40|0;Om(d|0,(Do(En(f[k>>2]|0,f[k+4>>2]|0,e|0,((e|0)<0)<<31>>31|0)|0,I|0,l|0,c|0)|0)+(f[f[a>>2]>>2]|0)|0,12)|0;a=1;u=m;return a|0}case 4:{c=a+48|0;l=f[c>>2]|0;c=f[c+4>>2]|0;k=a+40|0;Om(d|0,(Do(En(f[k>>2]|0,f[k+4>>2]|0,e|0,((e|0)<0)<<31>>31|0)|0,I|0,l|0,c|0)|0)+(f[f[a>>2]>>2]|0)|0,12)|0;a=1;u=m;return a|0}default:{a=0;u=m;return a|0}}}case 5:{e=f[c>>2]|0;switch(b[a+24>>0]|0){case 1:{c=a+48|0;l=f[c>>2]|0;c=f[c+4>>2]|0;k=a+40|0;a=(Do(En(f[k>>2]|0,f[k+4>>2]|0,e|0,((e|0)<0)<<31>>31|0)|0,I|0,l|0,c|0)|0)+(f[f[a>>2]>>2]|0)|0;f[d>>2]=h[a>>0]|h[a+1>>0]<<8|h[a+2>>0]<<16|h[a+3>>0]<<24;a=d+4|0;f[a>>2]=0;f[a+4>>2]=0;a=1;u=m;return a|0}case 2:{c=a+48|0;l=f[c>>2]|0;c=f[c+4>>2]|0;k=a+40|0;c=(Do(En(f[k>>2]|0,f[k+4>>2]|0,e|0,((e|0)<0)<<31>>31|0)|0,I|0,l|0,c|0)|0)+(f[f[a>>2]>>2]|0)|0;l=c;c=c+4|0;c=h[c>>0]|h[c+1>>0]<<8|h[c+2>>0]<<16|h[c+3>>0]<<24;a=d;f[a>>2]=h[l>>0]|h[l+1>>0]<<8|h[l+2>>0]<<16|h[l+3>>0]<<24;f[a+4>>2]=c;f[d+8>>2]=0;a=1;u=m;return a|0}case 3:{c=a+48|0;l=f[c>>2]|0;c=f[c+4>>2]|0;k=a+40|0;Om(d|0,(Do(En(f[k>>2]|0,f[k+4>>2]|0,e|0,((e|0)<0)<<31>>31|0)|0,I|0,l|0,c|0)|0)+(f[f[a>>2]>>2]|0)|0,12)|0;a=1;u=m;return a|0}case 4:{c=a+48|0;l=f[c>>2]|0;c=f[c+4>>2]|0;k=a+40|0;Om(d|0,(Do(En(f[k>>2]|0,f[k+4>>2]|0,e|0,((e|0)<0)<<31>>31|0)|0,I|0,l|0,c|0)|0)+(f[f[a>>2]>>2]|0)|0,12)|0;a=1;u=m;return a|0}default:{a=0;u=m;return a|0}}}default:{a=0;u=m;return a|0}}return 0}function Ec(a,c,d,e){a=a|0;c=c|0;d=d|0;e=e|0;var g=Ka,h=0,i=0,j=0,k=0,l=0,m=0,o=0,p=0,q=0,r=0,t=0,v=0,w=0,x=0,y=0,z=0,A=0,B=0,C=0,D=0,E=0,F=Ka;E=u;u=u+112|0;y=E+104|0;x=E+64|0;o=E+24|0;A=E+16|0;p=E+92|0;r=E+80|0;q=E+68|0;z=E;B=E+52|0;C=E+40|0;D=E+28|0;f[o>>2]=0;m=f[a>>2]|0;v=a+4|0;h=f[v>>2]|0;w=c+4|0;if((h|0)==(f[w>>2]|0))g=$(0.0);else{l=m+84|0;i=m+68|0;k=r+4|0;j=q+8|0;g=$(0.0);do{f[p>>2]=0;f[p+4>>2]=0;f[p+8>>2]=0;if(!(b[l>>0]|0))c=f[(f[i>>2]|0)+(h<<2)>>2]|0;else c=h;f[x>>2]=c;f[y>>2]=f[x>>2];xd(m,y,p)|0;F=$(K($(n[p>>2])));n[A>>2]=F;t=f[(F>2]|0;f[o>>2]=t;f[r>>2]=0;f[r+4>>2]=0;f[r+8>>2]=0;g=(f[s>>2]=t,$(n[s>>2]));if(!(b[l>>0]|0))c=f[(f[i>>2]|0)+(h<<2)>>2]|0;else c=h;f[x>>2]=c;f[y>>2]=f[x>>2];xd(m,y,r)|0;F=$(K($(n[k>>2])));n[A>>2]=F;t=f[(F>2]|0;f[o>>2]=t;f[q>>2]=0;f[q+4>>2]=0;f[q+8>>2]=0;g=(f[s>>2]=t,$(n[s>>2]));if(!(b[l>>0]|0))c=f[(f[i>>2]|0)+(h<<2)>>2]|0;else c=h;f[x>>2]=c;f[y>>2]=f[x>>2];xd(m,y,q)|0;F=$(K($(n[j>>2])));n[A>>2]=F;t=f[(F>2]|0;f[o>>2]=t;h=h+1|0;g=(f[s>>2]=t,$(n[s>>2]))}while((h|0)!=(f[w>>2]|0))}t=(1<>2])+-1|0;Ip(A);So(A,g,t);n[d+4>>2]=g;f[z>>2]=0;f[z+4>>2]=0;f[z+8>>2]=0;d=f[a>>2]|0;h=f[v>>2]|0;if((h|0)==(f[w>>2]|0)){D=f[e>>2]|0;u=E;return D|0}r=d+84|0;l=d+68|0;a=A+4|0;q=C+4|0;p=z+4|0;o=D+8|0;m=z+8|0;c=f[e>>2]|0;j=c+4|0;k=c+8|0;i=h;do{f[B>>2]=0;f[B+4>>2]=0;f[B+8>>2]=0;if(!(b[r>>0]|0))h=f[(f[l>>2]|0)+(i<<2)>>2]|0;else h=i;f[x>>2]=h;f[y>>2]=f[x>>2];xd(d,y,B)|0;F=$(n[B>>2]);v=F<$(0.0);g=$(-F);F=$((v?g:F)/$(n[A>>2]));e=~~$(J($($(F*$(f[a>>2]|0))+$(.5))));f[z>>2]=(v?0-e|0:e)+t;f[C>>2]=0;f[C+4>>2]=0;f[C+8>>2]=0;if(!(b[r>>0]|0))h=f[(f[l>>2]|0)+(i<<2)>>2]|0;else h=i;f[x>>2]=h;f[y>>2]=f[x>>2];xd(d,y,C)|0;F=$(n[q>>2]);v=F<$(0.0);g=$(-F);F=$((v?g:F)/$(n[A>>2]));e=~~$(J($($(F*$(f[a>>2]|0))+$(.5))));f[p>>2]=(v?0-e|0:e)+t;f[D>>2]=0;f[D+4>>2]=0;f[D+8>>2]=0;if(!(b[r>>0]|0))h=f[(f[l>>2]|0)+(i<<2)>>2]|0;else h=i;f[x>>2]=h;f[y>>2]=f[x>>2];xd(d,y,D)|0;F=$(n[o>>2]);e=F<$(0.0);g=$(-F);F=$((e?g:F)/$(n[A>>2]));h=~~$(J($($(F*$(f[a>>2]|0))+$(.5))));f[m>>2]=(e?0-h|0:h)+t;h=f[j>>2]|0;if((h|0)==(f[k>>2]|0))gi(c,z);else{f[h>>2]=f[z>>2];f[h+4>>2]=f[p>>2];f[h+8>>2]=f[m>>2];f[j>>2]=h+12}i=i+1|0}while((i|0)!=(f[w>>2]|0));u=E;return c|0}function Fc(a){a=a|0;var b=0,c=0,d=0,e=0,g=0,h=0,i=0,j=0,k=0,l=0,m=0,n=0,o=0;o=u;u=u+32|0;k=o+4|0;j=o;c=a+16|0;b=f[c>>2]|0;if(b>>>0>203){f[c>>2]=b+-204;l=a+4|0;k=f[l>>2]|0;m=f[k>>2]|0;k=k+4|0;f[l>>2]=k;n=a+8|0;b=f[n>>2]|0;j=a+12|0;i=f[j>>2]|0;d=i;g=b;do if((b|0)==(i|0)){c=f[a>>2]|0;e=c;if(k>>>0>c>>>0){b=k;e=((b-e>>2)+1|0)/-2|0;d=k+(e<<2)|0;b=g-b|0;c=b>>2;if(!c)b=k;else{Om(d|0,k|0,b|0)|0;b=f[l>>2]|0}a=d+(c<<2)|0;f[n>>2]=a;f[l>>2]=b+(e<<2);b=a;break}d=d-e>>1;d=(d|0)==0?1:d;if(d>>>0>1073741823){o=Ha(4)|0;qq(o);sa(o|0,1040,102)}g=Fn(d<<2)|0;h=g;e=g+(d>>>2<<2)|0;i=e;g=g+(d<<2)|0;if((k|0)==(b|0))b=i;else{d=e;c=k;e=i;do{f[d>>2]=f[c>>2];d=e+4|0;e=d;c=c+4|0}while((c|0)!=(b|0));c=f[a>>2]|0;b=e}f[a>>2]=h;f[l>>2]=i;f[n>>2]=b;f[j>>2]=g;if(c){Lq(c);b=f[n>>2]|0}}while(0);f[b>>2]=m;f[n>>2]=(f[n>>2]|0)+4;u=o;return}n=a+8|0;b=f[n>>2]|0;m=a+4|0;e=b-(f[m>>2]|0)|0;l=a+12|0;c=f[l>>2]|0;d=c-(f[a>>2]|0)|0;if(e>>>0>=d>>>0){b=d>>1;b=(b|0)==0?1:b;f[k+12>>2]=0;f[k+16>>2]=a+12;if(b>>>0>1073741823){o=Ha(4)|0;qq(o);sa(o|0,1040,102)}d=Fn(b<<2)|0;f[k>>2]=d;h=d+(e>>2<<2)|0;i=k+8|0;f[i>>2]=h;g=k+4|0;f[g>>2]=h;h=k+12|0;f[h>>2]=d+(b<<2);e=Fn(4080)|0;f[j>>2]=e;Ch(k,j);e=f[n>>2]|0;while(1){b=f[m>>2]|0;if((e|0)==(b|0))break;j=e+-4|0;th(k,j);e=j}c=b;d=f[a>>2]|0;f[a>>2]=f[k>>2];f[k>>2]=d;f[m>>2]=f[g>>2];f[g>>2]=c;b=f[n>>2]|0;f[n>>2]=f[i>>2];f[i>>2]=b;a=f[l>>2]|0;f[l>>2]=f[h>>2];f[h>>2]=a;if((b|0)!=(e|0))f[i>>2]=b+(~((b+-4-c|0)>>>2)<<2);if(d|0)Lq(d);u=o;return}if((c|0)!=(b|0)){n=Fn(4080)|0;f[k>>2]=n;Ch(a,k);u=o;return}j=Fn(4080)|0;f[k>>2]=j;th(a,k);j=f[m>>2]|0;k=f[j>>2]|0;j=j+4|0;f[m>>2]=j;b=f[n>>2]|0;i=f[l>>2]|0;c=i;g=b;do if((b|0)==(i|0)){e=f[a>>2]|0;d=e;if(j>>>0>e>>>0){b=j;e=((b-d>>2)+1|0)/-2|0;d=j+(e<<2)|0;b=g-b|0;c=b>>2;if(!c)b=j;else{Om(d|0,j|0,b|0)|0;b=f[m>>2]|0}a=d+(c<<2)|0;f[n>>2]=a;f[m>>2]=b+(e<<2);b=a;break}c=c-d>>1;c=(c|0)==0?1:c;if(c>>>0>1073741823){o=Ha(4)|0;qq(o);sa(o|0,1040,102)}g=Fn(c<<2)|0;h=g;d=g+(c>>>2<<2)|0;i=d;g=g+(c<<2)|0;if((j|0)==(b|0)){c=e;b=i}else{c=j;e=i;do{f[d>>2]=f[c>>2];d=e+4|0;e=d;c=c+4|0}while((c|0)!=(b|0));c=f[a>>2]|0;b=e}f[a>>2]=h;f[m>>2]=i;f[n>>2]=b;f[l>>2]=g;if(c){Lq(c);b=f[n>>2]|0}}while(0);f[b>>2]=k;f[n>>2]=(f[n>>2]|0)+4;u=o;return}function Gc(a,c,d,e,g){a=a|0;c=c|0;d=d|0;e=e|0;g=g|0;var i=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,v=0,w=0,x=0,y=0,z=0,A=0,B=0,C=0,D=0,E=0,F=0,G=0,H=0,J=0;F=u;u=u+352|0;C=F+340|0;B=F+336|0;l=F+80|0;E=F+48|0;D=F;Xj(l|0,0,256)|0;i=f[e+4>>2]|0;j=f[e>>2]|0;k=j;if((i|0)!=(j|0)){j=i-j>>2;i=0;do{A=l+(f[k+(i<<2)>>2]<<3)|0;z=A;z=Do(f[z>>2]|0,f[z+4>>2]|0,1,0)|0;f[A>>2]=z;f[A+4>>2]=I;i=i+1|0}while(i>>>0>>0)}Pn(E);w=c<<5;y=D+40|0;z=y;f[z>>2]=0;f[z+4>>2]=0;f[D>>2]=0;f[D+4>>2]=0;f[D+8>>2]=0;f[D+12>>2]=0;f[D+16>>2]=0;f[D+20>>2]=0;dd(D,l,32,g)|0;z=D+16|0;z=Zn(f[z>>2]|0,f[z+4>>2]|0,1)|0;A=g+4|0;x=(f[A>>2]|0)-(f[g>>2]|0)|0;v=y;f[v>>2]=x;f[v+4>>2]=0;z=Do(z|0,I|0,39,0)|0;z=co(z|0,I|0,3)|0;z=Do(z|0,I|0,8,0)|0;x=Do(z|0,I|0,x|0,0)|0;em(g,x,I);x=D+24|0;f[x>>2]=(f[g>>2]|0)+(f[y>>2]|0)+8;y=D+28|0;f[y>>2]=0;z=D+32|0;f[z>>2]=16384;tj(E,w,((w|0)<0)<<31>>31,0)|0;w=c-d|0;a:do if((w|0)>-1){t=(d|0)>0;s=E+16|0;r=E+12|0;v=w;b:while(1){j=f[e>>2]|0;l=f[j+(((v|0)/(d|0)|0)<<2)>>2]|0;c=f[D>>2]|0;m=f[c+(l<<3)>>2]|0;i=f[z>>2]|0;k=m<<10;if(i>>>0>=k>>>0){do{p=f[x>>2]|0;q=f[y>>2]|0;f[y>>2]=q+1;b[p+q>>0]=i;i=(f[z>>2]|0)>>>8;f[z>>2]=i}while(i>>>0>=k>>>0);j=f[e>>2]|0}f[z>>2]=(((i>>>0)/(m>>>0)|0)<<12)+((i>>>0)%(m>>>0)|0)+(f[c+(l<<3)+4>>2]|0);q=w-v|0;j=f[j+(((q|0)/(d|0)|0)<<2)>>2]|0;c:do if(t){o=(j|0)<33;p=(j|0)>0;if((j|0)>-1)n=0;else{i=s;j=f[i+4>>2]|0;i=(j|0)>0|(j|0)==0&(f[i>>2]|0)>>>0>0;j=0;while(1){if(i){i=21;break b}j=j+1|0;if((j|0)>=(d|0))break c}}do{k=f[a+(n+q<<2)>>2]|0;m=s;c=f[m+4>>2]|0;if((c|0)>0|(c|0)==0&(f[m>>2]|0)>>>0>0){l=f[r>>2]|0;if(!o){i=22;break b}if(p){m=l+4|0;i=f[m>>2]|0;c=0;do{G=i>>>3;H=i&7;J=(f[l>>2]|0)+G|0;b[J>>0]=(h[J>>0]|0)&(1<>2]|0)+G|0;b[G>>0]=h[G>>0]|0|(k>>>c&1)<>2]|0)+1|0;f[m>>2]=i;c=c+1|0}while((c|0)!=(j|0))}}n=n+1|0}while((n|0)<(d|0))}while(0);v=v-d|0;if((v|0)<=-1)break a}if((i|0)==21)Fa(7183,7198,88,7232);else if((i|0)==22)Fa(7240,7198,89,7232)}while(0);si(D,g);Bi(E);i=f[E>>2]|0;l=E+4|0;J=g+16|0;H=f[J+4>>2]|0;if(!((H|0)>0|(H|0)==0&(f[J>>2]|0)>>>0>0)){J=(f[l>>2]|0)-i|0;f[B>>2]=f[A>>2];f[C>>2]=f[B>>2];vf(g,C,i,i+J|0)|0}k=f[D>>2]|0;if(k|0){j=D+4|0;i=f[j>>2]|0;if((i|0)!=(k|0))f[j>>2]=i+(~((i+-8-k|0)>>>3)<<3);Lq(k)}J=E+12|0;i=f[J>>2]|0;f[J>>2]=0;if(i|0)Lq(i);i=f[E>>2]|0;if(!i){u=F;return 1}if((f[l>>2]|0)!=(i|0))f[l>>2]=i;Lq(i);u=F;return 1}function Hc(a,b,c,d,e,g,h){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;g=g|0;h=h|0;switch(c|0){case 1:{b=Fn(60)|0;f[b>>2]=3604;f[b+4>>2]=d;d=b+8|0;f[d>>2]=f[e>>2];f[d+4>>2]=f[e+4>>2];f[d+8>>2]=f[e+8>>2];f[d+12>>2]=f[e+12>>2];f[d+16>>2]=f[e+16>>2];f[d+20>>2]=f[e+20>>2];rk(b+32|0,e+24|0);e=b+44|0;f[e>>2]=f[g>>2];f[e+4>>2]=f[g+4>>2];f[e+8>>2]=f[g+8>>2];f[e+12>>2]=f[g+12>>2];f[b>>2]=4052;e=b;f[a>>2]=e;return}case 2:{b=Fn(60)|0;f[b>>2]=3604;f[b+4>>2]=d;d=b+8|0;f[d>>2]=f[e>>2];f[d+4>>2]=f[e+4>>2];f[d+8>>2]=f[e+8>>2];f[d+12>>2]=f[e+12>>2];f[d+16>>2]=f[e+16>>2];f[d+20>>2]=f[e+20>>2];rk(b+32|0,e+24|0);e=b+44|0;f[e>>2]=f[g>>2];f[e+4>>2]=f[g+4>>2];f[e+8>>2]=f[g+8>>2];f[e+12>>2]=f[g+12>>2];f[b>>2]=4108;e=b;f[a>>2]=e;return}case 4:{b=Fn(112)|0;f[b>>2]=3604;f[b+4>>2]=d;h=b+8|0;f[h>>2]=f[e>>2];f[h+4>>2]=f[e+4>>2];f[h+8>>2]=f[e+8>>2];f[h+12>>2]=f[e+12>>2];f[h+16>>2]=f[e+16>>2];f[h+20>>2]=f[e+20>>2];rk(b+32|0,e+24|0);h=b+44|0;f[h>>2]=f[g>>2];f[h+4>>2]=f[g+4>>2];f[h+8>>2]=f[g+8>>2];f[h+12>>2]=f[g+12>>2];f[b>>2]=4164;h=b+60|0;c=h+52|0;do{f[h>>2]=0;h=h+4|0}while((h|0)<(c|0));e=b;f[a>>2]=e;return}case 3:{b=Fn(88)|0;f[b>>2]=3604;f[b+4>>2]=d;d=b+8|0;f[d>>2]=f[e>>2];f[d+4>>2]=f[e+4>>2];f[d+8>>2]=f[e+8>>2];f[d+12>>2]=f[e+12>>2];f[d+16>>2]=f[e+16>>2];f[d+20>>2]=f[e+20>>2];rk(b+32|0,e+24|0);e=b+44|0;f[e>>2]=f[g>>2];f[e+4>>2]=f[g+4>>2];f[e+8>>2]=f[g+8>>2];f[e+12>>2]=f[g+12>>2];f[b>>2]=4220;e=b+60|0;f[e>>2]=0;f[e+4>>2]=0;f[e+8>>2]=0;f[e+12>>2]=0;f[e+16>>2]=0;f[e+20>>2]=0;f[e+24>>2]=0;e=b;f[a>>2]=e;return}case 5:{b=Fn(104)|0;f[b>>2]=3604;f[b+4>>2]=d;d=b+8|0;f[d>>2]=f[e>>2];f[d+4>>2]=f[e+4>>2];f[d+8>>2]=f[e+8>>2];f[d+12>>2]=f[e+12>>2];f[d+16>>2]=f[e+16>>2];f[d+20>>2]=f[e+20>>2];rk(b+32|0,e+24|0);e=b+44|0;f[e>>2]=f[g>>2];f[e+4>>2]=f[g+4>>2];f[e+8>>2]=f[g+8>>2];f[e+12>>2]=f[g+12>>2];f[b>>2]=4276;f[b+60>>2]=0;f[b+64>>2]=0;f[b+76>>2]=0;f[b+80>>2]=0;f[b+84>>2]=0;e=b+88|0;f[e>>2]=f[g>>2];f[e+4>>2]=f[g+4>>2];f[e+8>>2]=f[g+8>>2];f[e+12>>2]=f[g+12>>2];e=b;f[a>>2]=e;return}case 6:{b=Fn(132)|0;f[b>>2]=3604;f[b+4>>2]=d;d=b+8|0;f[d>>2]=f[e>>2];f[d+4>>2]=f[e+4>>2];f[d+8>>2]=f[e+8>>2];f[d+12>>2]=f[e+12>>2];f[d+16>>2]=f[e+16>>2];f[d+20>>2]=f[e+20>>2];rk(b+32|0,e+24|0);e=b+44|0;f[e>>2]=f[g>>2];f[e+4>>2]=f[g+4>>2];f[e+8>>2]=f[g+8>>2];f[e+12>>2]=f[g+12>>2];f[b>>2]=4332;f[b+60>>2]=0;f[b+64>>2]=0;e=b+68|0;f[e>>2]=f[g>>2];f[e+4>>2]=f[g+4>>2];f[e+8>>2]=f[g+8>>2];f[e+12>>2]=f[g+12>>2];e=b+84|0;f[e>>2]=-1;f[e+4>>2]=-1;f[e+8>>2]=-1;f[e+12>>2]=-1;Hn(b+100|0);e=b;f[a>>2]=e;return}default:{e=0;f[a>>2]=e;return}}}function Ic(a,b,c,d,e,g,h){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;g=g|0;h=h|0;switch(c|0){case 1:{b=Fn(60)|0;f[b>>2]=3604;f[b+4>>2]=d;d=b+8|0;f[d>>2]=f[e>>2];f[d+4>>2]=f[e+4>>2];f[d+8>>2]=f[e+8>>2];f[d+12>>2]=f[e+12>>2];f[d+16>>2]=f[e+16>>2];f[d+20>>2]=f[e+20>>2];rk(b+32|0,e+24|0);e=b+44|0;f[e>>2]=f[g>>2];f[e+4>>2]=f[g+4>>2];f[e+8>>2]=f[g+8>>2];f[e+12>>2]=f[g+12>>2];f[b>>2]=3716;e=b;f[a>>2]=e;return}case 2:{b=Fn(60)|0;f[b>>2]=3604;f[b+4>>2]=d;d=b+8|0;f[d>>2]=f[e>>2];f[d+4>>2]=f[e+4>>2];f[d+8>>2]=f[e+8>>2];f[d+12>>2]=f[e+12>>2];f[d+16>>2]=f[e+16>>2];f[d+20>>2]=f[e+20>>2];rk(b+32|0,e+24|0);e=b+44|0;f[e>>2]=f[g>>2];f[e+4>>2]=f[g+4>>2];f[e+8>>2]=f[g+8>>2];f[e+12>>2]=f[g+12>>2];f[b>>2]=3772;e=b;f[a>>2]=e;return}case 4:{b=Fn(112)|0;f[b>>2]=3604;f[b+4>>2]=d;h=b+8|0;f[h>>2]=f[e>>2];f[h+4>>2]=f[e+4>>2];f[h+8>>2]=f[e+8>>2];f[h+12>>2]=f[e+12>>2];f[h+16>>2]=f[e+16>>2];f[h+20>>2]=f[e+20>>2];rk(b+32|0,e+24|0);h=b+44|0;f[h>>2]=f[g>>2];f[h+4>>2]=f[g+4>>2];f[h+8>>2]=f[g+8>>2];f[h+12>>2]=f[g+12>>2];f[b>>2]=3828;h=b+60|0;c=h+52|0;do{f[h>>2]=0;h=h+4|0}while((h|0)<(c|0));e=b;f[a>>2]=e;return}case 3:{b=Fn(88)|0;f[b>>2]=3604;f[b+4>>2]=d;d=b+8|0;f[d>>2]=f[e>>2];f[d+4>>2]=f[e+4>>2];f[d+8>>2]=f[e+8>>2];f[d+12>>2]=f[e+12>>2];f[d+16>>2]=f[e+16>>2];f[d+20>>2]=f[e+20>>2];rk(b+32|0,e+24|0);e=b+44|0;f[e>>2]=f[g>>2];f[e+4>>2]=f[g+4>>2];f[e+8>>2]=f[g+8>>2];f[e+12>>2]=f[g+12>>2];f[b>>2]=3884;e=b+60|0;f[e>>2]=0;f[e+4>>2]=0;f[e+8>>2]=0;f[e+12>>2]=0;f[e+16>>2]=0;f[e+20>>2]=0;f[e+24>>2]=0;e=b;f[a>>2]=e;return}case 5:{b=Fn(104)|0;f[b>>2]=3604;f[b+4>>2]=d;d=b+8|0;f[d>>2]=f[e>>2];f[d+4>>2]=f[e+4>>2];f[d+8>>2]=f[e+8>>2];f[d+12>>2]=f[e+12>>2];f[d+16>>2]=f[e+16>>2];f[d+20>>2]=f[e+20>>2];rk(b+32|0,e+24|0);e=b+44|0;f[e>>2]=f[g>>2];f[e+4>>2]=f[g+4>>2];f[e+8>>2]=f[g+8>>2];f[e+12>>2]=f[g+12>>2];f[b>>2]=3940;f[b+60>>2]=0;f[b+64>>2]=0;f[b+76>>2]=0;f[b+80>>2]=0;f[b+84>>2]=0;e=b+88|0;f[e>>2]=f[g>>2];f[e+4>>2]=f[g+4>>2];f[e+8>>2]=f[g+8>>2];f[e+12>>2]=f[g+12>>2];e=b;f[a>>2]=e;return}case 6:{b=Fn(132)|0;f[b>>2]=3604;f[b+4>>2]=d;d=b+8|0;f[d>>2]=f[e>>2];f[d+4>>2]=f[e+4>>2];f[d+8>>2]=f[e+8>>2];f[d+12>>2]=f[e+12>>2];f[d+16>>2]=f[e+16>>2];f[d+20>>2]=f[e+20>>2];rk(b+32|0,e+24|0);e=b+44|0;f[e>>2]=f[g>>2];f[e+4>>2]=f[g+4>>2];f[e+8>>2]=f[g+8>>2];f[e+12>>2]=f[g+12>>2];f[b>>2]=3996;f[b+60>>2]=0;f[b+64>>2]=0;e=b+68|0;f[e>>2]=f[g>>2];f[e+4>>2]=f[g+4>>2];f[e+8>>2]=f[g+8>>2];f[e+12>>2]=f[g+12>>2];e=b+84|0;f[e>>2]=-1;f[e+4>>2]=-1;f[e+8>>2]=-1;f[e+12>>2]=-1;Hn(b+100|0);e=b;f[a>>2]=e;return}default:{e=0;f[a>>2]=e;return}}}function Jc(a,c,d){a=a|0;c=c|0;d=d|0;var e=0,g=0,h=0,i=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0;r=a+8|0;a:do if(f[r>>2]|0?(t=f[a>>2]|0,s=a+4|0,f[a>>2]=s,f[(f[s>>2]|0)+8>>2]=0,f[s>>2]=0,f[r>>2]=0,e=f[t+4>>2]|0,e=(e|0)==0?t:e,e|0):0){q=s;t=a+4|0;h=f[c>>2]|0;g=h;p=e;while(1){if((h|0)==(f[d>>2]|0))break;i=p+16|0;Em(i,h+16|0)|0;Em(p+28|0,h+28|0)|0;n=p+8|0;h=f[n>>2]|0;do if(h){e=f[h>>2]|0;if((e|0)==(p|0)){f[h>>2]=0;e=f[h+4>>2]|0;if(!e){o=h;break}while(1){h=f[e>>2]|0;if(h|0){e=h;continue}h=f[e+4>>2]|0;if(!h)break;else e=h}o=e;break}else{f[h+4>>2]=0;if(!e){o=h;break}while(1){h=f[e>>2]|0;if(h|0){e=h;continue}h=f[e+4>>2]|0;if(!h)break;else e=h}o=e;break}}else o=0;while(0);e=f[s>>2]|0;do if(e){m=b[i+11>>0]|0;l=m<<24>>24<0;m=l?f[p+20>>2]|0:m&255;l=l?f[i>>2]|0:i;k=e;while(1){h=k+16|0;i=b[h+11>>0]|0;j=i<<24>>24<0;i=j?f[k+20>>2]|0:i&255;e=i>>>0>>0?i:m;if((e|0)!=0?(u=Wl(l,j?f[h>>2]|0:h,e)|0,(u|0)!=0):0)if((u|0)<0)i=22;else i=24;else if(m>>>0>>0)i=22;else i=24;if((i|0)==22){e=f[k>>2]|0;if(!e){i=23;break}}else if((i|0)==24){h=k+4|0;e=f[h>>2]|0;if(!e){i=26;break}}k=e}if((i|0)==23){e=k;h=k;break}else if((i|0)==26){e=k;break}}else{e=q;h=s}while(0);f[p>>2]=0;f[p+4>>2]=0;f[n>>2]=e;f[h>>2]=p;e=f[f[a>>2]>>2]|0;if(!e)e=p;else{f[a>>2]=e;e=f[h>>2]|0}xf(f[t>>2]|0,e);f[r>>2]=(f[r>>2]|0)+1;e=f[g+4>>2]|0;if(!e)while(1){e=f[g+8>>2]|0;if((f[e>>2]|0)==(g|0))break;else g=e}else while(1){g=f[e>>2]|0;if(!g)break;else e=g}f[c>>2]=e;if(!o)break a;else{g=e;h=e;p=o}}e=f[p+8>>2]|0;if(!e)e=p;else while(1){g=f[e+8>>2]|0;if(!g)break;else e=g}hk(a,e)}while(0);e=f[c>>2]|0;i=f[d>>2]|0;if((e|0)==(i|0))return;h=e;g=e;while(1){mg(a,h+16|0)|0;e=f[g+4>>2]|0;if(!e)while(1){e=f[g+8>>2]|0;if((f[e>>2]|0)==(g|0))break;else g=e}else while(1){g=f[e>>2]|0;if(!g)break;else e=g}f[c>>2]=e;if((e|0)==(i|0))break;else{h=e;g=e}}return}function Kc(a,c){a=a|0;c=c|0;var d=0,e=0,g=0,h=0,i=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,v=0,w=0,x=0,y=0;y=u;u=u+32|0;s=y;t=y+24|0;p=y+28|0;w=y+12|0;q=y+8|0;v=f[a>>2]|0;x=v+8|0;d=f[v>>2]|0;v=f[v+4>>2]|0;x=Do(d|0,v|0,f[x>>2]|0,f[x+4>>2]|0)|0;n=I;n=Do((x|0)==0&(n|0)==0&1|0,0,x|0,n|0)|0;n=~~((+(d>>>0)+4294967296.0*+(v>>>0))/(+(n>>>0)+4294967296.0*+(I>>>0))*256.0+.5)>>>0;n=n>>>0<255?n:255;b[p>>0]=((n|0)==0&1)+n;n=a+12|0;v=a+16|0;d=((f[v>>2]|0)-(f[n>>2]|0)<<1)+64|0;f[w>>2]=0;x=w+4|0;f[x>>2]=0;f[w+8>>2]=0;if(!d)o=0;else{if((d|0)<0)zp(w);e=Fn(d)|0;f[x>>2]=e;f[w>>2]=e;f[w+8>>2]=e+d;do{b[e>>0]=0;e=(f[x>>2]|0)+1|0;f[x>>2]=e;d=d+-1|0}while((d|0)!=0);o=f[w>>2]|0}r=a+28|0;e=(f[r>>2]|0)+-1|0;if((e|0)>-1){k=a+24|0;d=4096;h=0;do{g=b[p>>0]|0;i=256-(g&255)|0;j=(f[k>>2]&1<>>0>=g<<12>>>0){b[o+h>>0]=d;d=d>>>8;h=h+1|0}En(f[1088+(g<<3)>>2]|0,0,d|0,0)|0;d=d+(j?0:i&255)+(X((I+d|0)>>>(f[1088+(g<<3)+4>>2]|0),256-g|0)|0)|0;e=e+-1|0}while((e|0)>-1);e=d}else{e=4096;h=0}d=f[v>>2]|0;if((d|0)==(f[n>>2]|0))g=e;else{g=h;while(1){d=d+-4|0;m=f[d>>2]|0;j=31;while(1){i=b[p>>0]|0;k=256-(i&255)|0;l=(1<>>0>>0)h=g;else{b[o+g>>0]=e;e=e>>>8;h=g+1|0}En(f[1088+(i<<3)>>2]|0,0,e|0,0)|0;e=e+(l?0:k&255)+(X((I+e|0)>>>(f[1088+(i<<3)+4>>2]|0),256-i|0)|0)|0;if((j|0)<=0)break;else{g=h;j=j+-1|0}}if((d|0)==(f[n>>2]|0)){g=e;break}else g=h}}if(g>>>0<=4095)Fa(7006,7115,132,7036);if(g>>>0>=1048576)Fa(7050,7115,133,7036);d=g+-4096|0;do if(d>>>0>=64){e=o+h|0;if(d>>>0<16384){d=g+12288|0;b[e>>0]=d;g=2;e=e+1|0;d=d>>>8;break}else{d=g+8384512|0;b[e>>0]=d;b[e+1>>0]=d>>>8;g=3;e=e+2|0;d=d>>>16;break}}else{g=1;e=o+h|0}while(0);b[e>>0]=d;h=g+h|0;d=c+16|0;g=d;e=f[g>>2]|0;g=f[g+4>>2]|0;if(!((g|0)>0|(g|0)==0&e>>>0>0)){f[t>>2]=f[c+4>>2];f[s>>2]=f[t>>2];vf(c,s,p,p+1|0)|0;e=d;g=f[e+4>>2]|0;e=f[e>>2]|0}f[q>>2]=h;if(!((g|0)>0|(g|0)==0&e>>>0>0)){f[t>>2]=f[c+4>>2];f[s>>2]=f[t>>2];vf(c,s,q,q+4|0)|0;e=d;g=f[e+4>>2]|0;e=f[e>>2]|0}d=f[w>>2]|0;if(!((g|0)>0|(g|0)==0&e>>>0>0)){f[t>>2]=f[c+4>>2];f[s>>2]=f[t>>2];vf(c,s,d,d+h|0)|0}d=s;f[d>>2]=0;f[d+4>>2]=0;Rf(a,2,s);d=f[a+12>>2]|0;e=f[v>>2]|0;if((e|0)!=(d|0))f[v>>2]=e+(~((e+-4-d|0)>>>2)<<2);f[a+24>>2]=0;f[r>>2]=0;d=f[w>>2]|0;if(!d){u=y;return}if((f[x>>2]|0)!=(d|0))f[x>>2]=d;Lq(d);u=y;return}function Lc(a,b,c){a=a|0;b=b|0;c=c|0;var d=0,e=0,g=0,h=0,i=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,v=0,w=0;v=u;u=u+16|0;r=v+8|0;q=v+4|0;o=v;p=a+64|0;c=f[p>>2]|0;if(((f[c+28>>2]|0)-(f[c+24>>2]|0)|0)<=0){u=v;return}s=a+52|0;k=a+56|0;m=a+60|0;i=a+12|0;j=a+28|0;t=a+40|0;l=a+44|0;n=a+48|0;b=0;h=0;do{d=f[(f[c+24>>2]|0)+(h<<2)>>2]|0;if((d|0)>=0){e=b+1|0;f[r>>2]=b;c=f[k>>2]|0;if((c|0)==(f[m>>2]|0))Bj(s,r);else{f[c>>2]=b;f[k>>2]=c+4}f[q>>2]=d;f[o>>2]=0;a:do if(!(f[(f[i>>2]|0)+(h>>>5<<2)>>2]&1<<(h&31)))c=d;else{c=d+1|0;c=((c|0)%3|0|0)==0?d+-2|0:c;g=f[a>>2]|0;if(!(1<<(c&31)&f[g+(c>>>5<<2)>>2])){if((c|0)>=0){c=f[(f[(f[p>>2]|0)+12>>2]|0)+(c<<2)>>2]|0;b=c+1|0;if((c|0)>=0){c=((b|0)%3|0|0)==0?c+-2|0:b;f[o>>2]=c;if((c|0)<=-1){c=d;break}while(1){f[q>>2]=c;b=c+1|0;b=((b|0)%3|0|0)==0?c+-2|0:b;if(1<<(b&31)&f[g+(b>>>5<<2)>>2]|0){b=-1073741824;break}if((b|0)<0)break;b=f[(f[(f[p>>2]|0)+12>>2]|0)+(b<<2)>>2]|0;d=b+1|0;if((b|0)<0)break;b=((d|0)%3|0|0)==0?b+-2|0:d;f[o>>2]=b;if((b|0)>-1)c=b;else break a}f[o>>2]=b;break}}}else c=-1073741824;f[o>>2]=c;c=d}while(0);f[(f[j>>2]|0)+(c<<2)>>2]=f[r>>2];c=f[l>>2]|0;if((c|0)==(f[n>>2]|0))Bj(t,q);else{f[c>>2]=f[q>>2];f[l>>2]=c+4}c=f[p>>2]|0;b=f[q>>2]|0;b:do if((b|0)>=0){d=(((b>>>0)%3|0|0)==0?2:-1)+b|0;if((d|0)>=0){d=f[(f[c+12>>2]|0)+(d<<2)>>2]|0;if((d|0)>=0){d=d+(((d>>>0)%3|0|0)==0?2:-1)|0;f[o>>2]=d;if((d|0)>-1&(d|0)!=(b|0)){b=d;while(1){g=b+1|0;g=((g|0)%3|0|0)==0?b+-2|0:g;do if(f[(f[a>>2]|0)+(g>>>5<<2)>>2]&1<<(g&31)){b=e+1|0;f[r>>2]=e;c=f[k>>2]|0;if((c|0)==(f[m>>2]|0))Bj(s,r);else{f[c>>2]=e;f[k>>2]=c+4}c=f[l>>2]|0;if((c|0)==(f[n>>2]|0)){Bj(t,o);e=b;break}else{f[c>>2]=f[o>>2];f[l>>2]=c+4;e=b;break}}while(0);f[(f[j>>2]|0)+(f[o>>2]<<2)>>2]=f[r>>2];c=f[p>>2]|0;b=f[o>>2]|0;if((b|0)<0)break;b=(((b>>>0)%3|0|0)==0?2:-1)+b|0;if((b|0)<0)break;b=f[(f[c+12>>2]|0)+(b<<2)>>2]|0;if((b|0)<0)break;b=b+(((b>>>0)%3|0|0)==0?2:-1)|0;f[o>>2]=b;if(!((b|0)>-1?(b|0)!=(f[q>>2]|0):0)){b=e;break b}}f[o>>2]=b;b=e}else b=e}else{b=d;w=26}}else{b=d;w=26}}else w=26;while(0);if((w|0)==26){w=0;f[o>>2]=b;b=e}}h=h+1|0}while((h|0)<((f[c+28>>2]|0)-(f[c+24>>2]|0)>>2|0));u=v;return}function Mc(a,c,d){a=a|0;c=c|0;d=d|0;var e=0,g=0,i=0,j=0,k=0,l=0,m=0,o=0;o=u;u=u+32|0;j=o+24|0;k=o+20|0;l=o+16|0;m=o+12|0;e=o+8|0;g=o+4|0;i=o;if(!d){a=0;u=o;return a|0}switch(f[a+28>>2]|0){case 9:{e=f[c>>2]|0;switch(b[a+24>>0]|0){case 1:{c=a+48|0;m=f[c>>2]|0;c=f[c+4>>2]|0;l=a+40|0;a=(Do(En(f[l>>2]|0,f[l+4>>2]|0,e|0,((e|0)<0)<<31>>31|0)|0,I|0,m|0,c|0)|0)+(f[f[a>>2]>>2]|0)|0;f[d>>2]=h[a>>0]|h[a+1>>0]<<8|h[a+2>>0]<<16|h[a+3>>0]<<24;n[d+4>>2]=$(0.0);a=1;u=o;return a|0}case 2:{c=a+48|0;m=f[c>>2]|0;c=f[c+4>>2]|0;l=a+40|0;c=(Do(En(f[l>>2]|0,f[l+4>>2]|0,e|0,((e|0)<0)<<31>>31|0)|0,I|0,m|0,c|0)|0)+(f[f[a>>2]>>2]|0)|0;m=c;c=c+4|0;c=h[c>>0]|h[c+1>>0]<<8|h[c+2>>0]<<16|h[c+3>>0]<<24;a=d;f[a>>2]=h[m>>0]|h[m+1>>0]<<8|h[m+2>>0]<<16|h[m+3>>0]<<24;f[a+4>>2]=c;a=1;u=o;return a|0}case 3:{c=a+48|0;m=f[c>>2]|0;c=f[c+4>>2]|0;l=a+40|0;c=(Do(En(f[l>>2]|0,f[l+4>>2]|0,e|0,((e|0)<0)<<31>>31|0)|0,I|0,m|0,c|0)|0)+(f[f[a>>2]>>2]|0)|0;m=c;m=h[m>>0]|h[m+1>>0]<<8|h[m+2>>0]<<16|h[m+3>>0]<<24;c=c+4|0;c=h[c>>0]|h[c+1>>0]<<8|h[c+2>>0]<<16|h[c+3>>0]<<24;a=d;d=a;b[d>>0]=m;b[d+1>>0]=m>>8;b[d+2>>0]=m>>16;b[d+3>>0]=m>>24;a=a+4|0;b[a>>0]=c;b[a+1>>0]=c>>8;b[a+2>>0]=c>>16;b[a+3>>0]=c>>24;a=1;u=o;return a|0}case 4:{c=a+48|0;m=f[c>>2]|0;c=f[c+4>>2]|0;l=a+40|0;c=(Do(En(f[l>>2]|0,f[l+4>>2]|0,e|0,((e|0)<0)<<31>>31|0)|0,I|0,m|0,c|0)|0)+(f[f[a>>2]>>2]|0)|0;m=c;m=h[m>>0]|h[m+1>>0]<<8|h[m+2>>0]<<16|h[m+3>>0]<<24;c=c+4|0;c=h[c>>0]|h[c+1>>0]<<8|h[c+2>>0]<<16|h[c+3>>0]<<24;a=d;d=a;b[d>>0]=m;b[d+1>>0]=m>>8;b[d+2>>0]=m>>16;b[d+3>>0]=m>>24;a=a+4|0;b[a>>0]=c;b[a+1>>0]=c>>8;b[a+2>>0]=c>>16;b[a+3>>0]=c>>24;a=1;u=o;return a|0}default:{a=0;u=o;return a|0}}}case 2:{f[k>>2]=f[c>>2];f[j>>2]=f[k>>2];a=He(a,j,d)|0;u=o;return a|0}case 1:{f[l>>2]=f[c>>2];f[j>>2]=f[l>>2];a=Ee(a,j,d)|0;u=o;return a|0}case 4:{f[m>>2]=f[c>>2];f[j>>2]=f[m>>2];a=oe(a,j,d)|0;u=o;return a|0}case 3:{f[e>>2]=f[c>>2];f[j>>2]=f[e>>2];a=me(a,j,d)|0;u=o;return a|0}case 6:{f[g>>2]=f[c>>2];f[j>>2]=f[g>>2];a=ce(a,j,d)|0;u=o;return a|0}case 5:{f[i>>2]=f[c>>2];f[j>>2]=f[i>>2];a=fe(a,j,d)|0;u=o;return a|0}default:{a=0;u=o;return a|0}}return 0} +function Xa(a){a=a|0;var b=0,c=0,d=0,e=0,g=0,h=0,i=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,v=0,w=0,x=0;x=u;u=u+16|0;n=x;do if(a>>>0<245){k=a>>>0<11?16:a+11&-8;a=k>>>3;m=f[5274]|0;c=m>>>a;if(c&3|0){d=(c&1^1)+a|0;e=21136+(d<<1<<2)|0;b=e+8|0;a=f[b>>2]|0;g=a+8|0;c=f[g>>2]|0;if((e|0)==(c|0))f[5274]=m&~(1<>2]=e;f[b>>2]=c}w=d<<3;f[a+4>>2]=w|3;w=a+w+4|0;f[w>>2]=f[w>>2]|1;w=g;u=x;return w|0}l=f[5276]|0;if(k>>>0>l>>>0){if(c|0){h=2<>>12&16;c=c>>>h;a=c>>>5&8;c=c>>>a;e=c>>>2&4;c=c>>>e;b=c>>>1&2;c=c>>>b;d=c>>>1&1;d=(a|h|e|b|d)+(c>>>d)|0;c=21136+(d<<1<<2)|0;b=c+8|0;e=f[b>>2]|0;h=e+8|0;a=f[h>>2]|0;if((c|0)==(a|0)){a=m&~(1<>2]=c;f[b>>2]=a;a=m}g=(d<<3)-k|0;f[e+4>>2]=k|3;e=e+k|0;f[e+4>>2]=g|1;f[e+g>>2]=g;if(l|0){d=f[5279]|0;b=l>>>3;c=21136+(b<<1<<2)|0;b=1<>2]|0}f[b>>2]=d;f[a+12>>2]=d;f[d+8>>2]=a;f[d+12>>2]=c}f[5276]=g;f[5279]=e;w=h;u=x;return w|0}i=f[5275]|0;if(i){c=(i&0-i)+-1|0;h=c>>>12&16;c=c>>>h;g=c>>>5&8;c=c>>>g;j=c>>>2&4;c=c>>>j;a=c>>>1&2;c=c>>>a;d=c>>>1&1;d=f[21400+((g|h|j|a|d)+(c>>>d)<<2)>>2]|0;c=(f[d+4>>2]&-8)-k|0;a=f[d+16+(((f[d+16>>2]|0)==0&1)<<2)>>2]|0;if(!a){j=c;h=d}else{do{h=(f[a+4>>2]&-8)-k|0;j=h>>>0>>0;c=j?h:c;d=j?a:d;a=f[a+16+(((f[a+16>>2]|0)==0&1)<<2)>>2]|0}while((a|0)!=0);j=c;h=d}g=h+k|0;if(h>>>0>>0){e=f[h+24>>2]|0;b=f[h+12>>2]|0;do if((b|0)==(h|0)){a=h+20|0;b=f[a>>2]|0;if(!b){a=h+16|0;b=f[a>>2]|0;if(!b){c=0;break}}while(1){d=b+20|0;c=f[d>>2]|0;if(c|0){b=c;a=d;continue}d=b+16|0;c=f[d>>2]|0;if(!c)break;else{b=c;a=d}}f[a>>2]=0;c=b}else{c=f[h+8>>2]|0;f[c+12>>2]=b;f[b+8>>2]=c;c=b}while(0);do if(e|0){b=f[h+28>>2]|0;a=21400+(b<<2)|0;if((h|0)==(f[a>>2]|0)){f[a>>2]=c;if(!c){f[5275]=i&~(1<>2]|0)!=(h|0)&1)<<2)>>2]=c;if(!c)break}f[c+24>>2]=e;b=f[h+16>>2]|0;if(b|0){f[c+16>>2]=b;f[b+24>>2]=c}b=f[h+20>>2]|0;if(b|0){f[c+20>>2]=b;f[b+24>>2]=c}}while(0);if(j>>>0<16){w=j+k|0;f[h+4>>2]=w|3;w=h+w+4|0;f[w>>2]=f[w>>2]|1}else{f[h+4>>2]=k|3;f[g+4>>2]=j|1;f[g+j>>2]=j;if(l|0){d=f[5279]|0;b=l>>>3;c=21136+(b<<1<<2)|0;b=1<>2]|0}f[b>>2]=d;f[a+12>>2]=d;f[d+8>>2]=a;f[d+12>>2]=c}f[5276]=j;f[5279]=g}w=h+8|0;u=x;return w|0}else m=k}else m=k}else m=k}else if(a>>>0<=4294967231){a=a+11|0;k=a&-8;d=f[5275]|0;if(d){c=0-k|0;a=a>>>8;if(a)if(k>>>0>16777215)j=31;else{m=(a+1048320|0)>>>16&8;v=a<>>16&4;v=v<>>16&2;j=14-(l|m|j)+(v<>>15)|0;j=k>>>(j+7|0)&1|j<<1}else j=0;a=f[21400+(j<<2)>>2]|0;a:do if(!a){e=0;a=0;v=57}else{e=0;h=k<<((j|0)==31?0:25-(j>>>1)|0);i=a;a=0;while(1){g=(f[i+4>>2]&-8)-k|0;if(g>>>0>>0)if(!g){c=0;e=i;a=i;v=61;break a}else{c=g;a=i}g=f[i+20>>2]|0;i=f[i+16+(h>>>31<<2)>>2]|0;e=(g|0)==0|(g|0)==(i|0)?e:g;g=(i|0)==0;if(g){v=57;break}else h=h<<((g^1)&1)}}while(0);if((v|0)==57){if((e|0)==0&(a|0)==0){a=2<>>12&16;a=a>>>j;i=a>>>5&8;a=a>>>i;l=a>>>2&4;a=a>>>l;m=a>>>1&2;a=a>>>m;e=a>>>1&1;e=f[21400+((i|j|l|m|e)+(a>>>e)<<2)>>2]|0;a=0}if(!e){i=c;j=a}else v=61}if((v|0)==61)while(1){v=0;l=(f[e+4>>2]&-8)-k|0;m=l>>>0>>0;c=m?l:c;a=m?e:a;e=f[e+16+(((f[e+16>>2]|0)==0&1)<<2)>>2]|0;if(!e){i=c;j=a;break}else v=61}if((j|0)!=0?i>>>0<((f[5276]|0)-k|0)>>>0:0){h=j+k|0;if(j>>>0>=h>>>0){w=0;u=x;return w|0}g=f[j+24>>2]|0;b=f[j+12>>2]|0;do if((b|0)==(j|0)){a=j+20|0;b=f[a>>2]|0;if(!b){a=j+16|0;b=f[a>>2]|0;if(!b){b=0;break}}while(1){e=b+20|0;c=f[e>>2]|0;if(c|0){b=c;a=e;continue}e=b+16|0;c=f[e>>2]|0;if(!c)break;else{b=c;a=e}}f[a>>2]=0}else{w=f[j+8>>2]|0;f[w+12>>2]=b;f[b+8>>2]=w}while(0);do if(g){a=f[j+28>>2]|0;c=21400+(a<<2)|0;if((j|0)==(f[c>>2]|0)){f[c>>2]=b;if(!b){d=d&~(1<>2]|0)!=(j|0)&1)<<2)>>2]=b;if(!b)break}f[b+24>>2]=g;a=f[j+16>>2]|0;if(a|0){f[b+16>>2]=a;f[a+24>>2]=b}a=f[j+20>>2]|0;if(a){f[b+20>>2]=a;f[a+24>>2]=b}}while(0);do if(i>>>0>=16){f[j+4>>2]=k|3;f[h+4>>2]=i|1;f[h+i>>2]=i;b=i>>>3;if(i>>>0<256){c=21136+(b<<1<<2)|0;a=f[5274]|0;b=1<>2]|0}f[b>>2]=h;f[a+12>>2]=h;f[h+8>>2]=a;f[h+12>>2]=c;break}b=i>>>8;if(b)if(i>>>0>16777215)b=31;else{v=(b+1048320|0)>>>16&8;w=b<>>16&4;w=w<>>16&2;b=14-(t|v|b)+(w<>>15)|0;b=i>>>(b+7|0)&1|b<<1}else b=0;c=21400+(b<<2)|0;f[h+28>>2]=b;a=h+16|0;f[a+4>>2]=0;f[a>>2]=0;a=1<>2]=h;f[h+24>>2]=c;f[h+12>>2]=h;f[h+8>>2]=h;break}a=i<<((b|0)==31?0:25-(b>>>1)|0);c=f[c>>2]|0;while(1){if((f[c+4>>2]&-8|0)==(i|0)){v=97;break}d=c+16+(a>>>31<<2)|0;b=f[d>>2]|0;if(!b){v=96;break}else{a=a<<1;c=b}}if((v|0)==96){f[d>>2]=h;f[h+24>>2]=c;f[h+12>>2]=h;f[h+8>>2]=h;break}else if((v|0)==97){v=c+8|0;w=f[v>>2]|0;f[w+12>>2]=h;f[v>>2]=h;f[h+8>>2]=w;f[h+12>>2]=c;f[h+24>>2]=0;break}}else{w=i+k|0;f[j+4>>2]=w|3;w=j+w+4|0;f[w>>2]=f[w>>2]|1}while(0);w=j+8|0;u=x;return w|0}else m=k}else m=k}else m=-1;while(0);c=f[5276]|0;if(c>>>0>=m>>>0){a=c-m|0;b=f[5279]|0;if(a>>>0>15){w=b+m|0;f[5279]=w;f[5276]=a;f[w+4>>2]=a|1;f[w+a>>2]=a;f[b+4>>2]=m|3}else{f[5276]=0;f[5279]=0;f[b+4>>2]=c|3;w=b+c+4|0;f[w>>2]=f[w>>2]|1}w=b+8|0;u=x;return w|0}h=f[5277]|0;if(h>>>0>m>>>0){t=h-m|0;f[5277]=t;w=f[5280]|0;v=w+m|0;f[5280]=v;f[v+4>>2]=t|1;f[w+4>>2]=m|3;w=w+8|0;u=x;return w|0}if(!(f[5392]|0)){f[5394]=4096;f[5393]=4096;f[5395]=-1;f[5396]=-1;f[5397]=0;f[5385]=0;a=n&-16^1431655768;f[n>>2]=a;f[5392]=a;a=4096}else a=f[5394]|0;i=m+48|0;j=m+47|0;g=a+j|0;d=0-a|0;k=g&d;if(k>>>0<=m>>>0){w=0;u=x;return w|0}a=f[5384]|0;if(a|0?(l=f[5382]|0,n=l+k|0,n>>>0<=l>>>0|n>>>0>a>>>0):0){w=0;u=x;return w|0}b:do if(!(f[5385]&4)){c=f[5280]|0;c:do if(c){e=21544;while(1){a=f[e>>2]|0;if(a>>>0<=c>>>0?(q=e+4|0,(a+(f[q>>2]|0)|0)>>>0>c>>>0):0)break;a=f[e+8>>2]|0;if(!a){v=118;break c}else e=a}b=g-h&d;if(b>>>0<2147483647){a=gm(b|0)|0;if((a|0)==((f[e>>2]|0)+(f[q>>2]|0)|0)){if((a|0)!=(-1|0)){h=a;g=b;v=135;break b}}else{d=a;v=126}}else b=0}else v=118;while(0);do if((v|0)==118){c=gm(0)|0;if((c|0)!=(-1|0)?(b=c,o=f[5393]|0,p=o+-1|0,b=((p&b|0)==0?0:(p+b&0-o)-b|0)+k|0,o=f[5382]|0,p=b+o|0,b>>>0>m>>>0&b>>>0<2147483647):0){q=f[5384]|0;if(q|0?p>>>0<=o>>>0|p>>>0>q>>>0:0){b=0;break}a=gm(b|0)|0;if((a|0)==(c|0)){h=c;g=b;v=135;break b}else{d=a;v=126}}else b=0}while(0);do if((v|0)==126){c=0-b|0;if(!(i>>>0>b>>>0&(b>>>0<2147483647&(d|0)!=(-1|0))))if((d|0)==(-1|0)){b=0;break}else{h=d;g=b;v=135;break b}a=f[5394]|0;a=j-b+a&0-a;if(a>>>0>=2147483647){h=d;g=b;v=135;break b}if((gm(a|0)|0)==(-1|0)){gm(c|0)|0;b=0;break}else{h=d;g=a+b|0;v=135;break b}}while(0);f[5385]=f[5385]|4;v=133}else{b=0;v=133}while(0);if(((v|0)==133?k>>>0<2147483647:0)?(r=gm(k|0)|0,q=gm(0)|0,t=q-r|0,s=t>>>0>(m+40|0)>>>0,!((r|0)==(-1|0)|s^1|r>>>0>>0&((r|0)!=(-1|0)&(q|0)!=(-1|0))^1)):0){h=r;g=s?t:b;v=135}if((v|0)==135){b=(f[5382]|0)+g|0;f[5382]=b;if(b>>>0>(f[5383]|0)>>>0)f[5383]=b;j=f[5280]|0;do if(j){e=21544;while(1){b=f[e>>2]|0;d=e+4|0;a=f[d>>2]|0;if((h|0)==(b+a|0)){v=145;break}c=f[e+8>>2]|0;if(!c)break;else e=c}if(((v|0)==145?(f[e+12>>2]&8|0)==0:0)?j>>>0>>0&j>>>0>=b>>>0:0){f[d>>2]=a+g;w=j+8|0;w=(w&7|0)==0?0:0-w&7;v=j+w|0;w=(f[5277]|0)+(g-w)|0;f[5280]=v;f[5277]=w;f[v+4>>2]=w|1;f[v+w+4>>2]=40;f[5281]=f[5396];break}if(h>>>0<(f[5278]|0)>>>0)f[5278]=h;c=h+g|0;a=21544;while(1){if((f[a>>2]|0)==(c|0)){v=153;break}b=f[a+8>>2]|0;if(!b)break;else a=b}if((v|0)==153?(f[a+12>>2]&8|0)==0:0){f[a>>2]=h;l=a+4|0;f[l>>2]=(f[l>>2]|0)+g;l=h+8|0;l=h+((l&7|0)==0?0:0-l&7)|0;b=c+8|0;b=c+((b&7|0)==0?0:0-b&7)|0;k=l+m|0;i=b-l-m|0;f[l+4>>2]=m|3;do if((b|0)!=(j|0)){if((b|0)==(f[5279]|0)){w=(f[5276]|0)+i|0;f[5276]=w;f[5279]=k;f[k+4>>2]=w|1;f[k+w>>2]=w;break}a=f[b+4>>2]|0;if((a&3|0)==1){h=a&-8;d=a>>>3;d:do if(a>>>0<256){a=f[b+8>>2]|0;c=f[b+12>>2]|0;if((c|0)==(a|0)){f[5274]=f[5274]&~(1<>2]=c;f[c+8>>2]=a;break}}else{g=f[b+24>>2]|0;a=f[b+12>>2]|0;do if((a|0)==(b|0)){d=b+16|0;c=d+4|0;a=f[c>>2]|0;if(!a){a=f[d>>2]|0;if(!a){a=0;break}else e=d}else e=c;while(1){d=a+20|0;c=f[d>>2]|0;if(c|0){a=c;e=d;continue}d=a+16|0;c=f[d>>2]|0;if(!c)break;else{a=c;e=d}}f[e>>2]=0}else{w=f[b+8>>2]|0;f[w+12>>2]=a;f[a+8>>2]=w}while(0);if(!g)break;c=f[b+28>>2]|0;d=21400+(c<<2)|0;do if((b|0)!=(f[d>>2]|0)){f[g+16+(((f[g+16>>2]|0)!=(b|0)&1)<<2)>>2]=a;if(!a)break d}else{f[d>>2]=a;if(a|0)break;f[5275]=f[5275]&~(1<>2]=g;d=b+16|0;c=f[d>>2]|0;if(c|0){f[a+16>>2]=c;f[c+24>>2]=a}c=f[d+4>>2]|0;if(!c)break;f[a+20>>2]=c;f[c+24>>2]=a}while(0);b=b+h|0;e=h+i|0}else e=i;b=b+4|0;f[b>>2]=f[b>>2]&-2;f[k+4>>2]=e|1;f[k+e>>2]=e;b=e>>>3;if(e>>>0<256){c=21136+(b<<1<<2)|0;a=f[5274]|0;b=1<>2]|0}f[b>>2]=k;f[a+12>>2]=k;f[k+8>>2]=a;f[k+12>>2]=c;break}b=e>>>8;do if(!b)a=0;else{if(e>>>0>16777215){a=31;break}v=(b+1048320|0)>>>16&8;w=b<>>16&4;w=w<>>16&2;a=14-(t|v|a)+(w<>>15)|0;a=e>>>(a+7|0)&1|a<<1}while(0);d=21400+(a<<2)|0;f[k+28>>2]=a;b=k+16|0;f[b+4>>2]=0;f[b>>2]=0;b=f[5275]|0;c=1<>2]=k;f[k+24>>2]=d;f[k+12>>2]=k;f[k+8>>2]=k;break}a=e<<((a|0)==31?0:25-(a>>>1)|0);c=f[d>>2]|0;while(1){if((f[c+4>>2]&-8|0)==(e|0)){v=194;break}d=c+16+(a>>>31<<2)|0;b=f[d>>2]|0;if(!b){v=193;break}else{a=a<<1;c=b}}if((v|0)==193){f[d>>2]=k;f[k+24>>2]=c;f[k+12>>2]=k;f[k+8>>2]=k;break}else if((v|0)==194){v=c+8|0;w=f[v>>2]|0;f[w+12>>2]=k;f[v>>2]=k;f[k+8>>2]=w;f[k+12>>2]=c;f[k+24>>2]=0;break}}else{w=(f[5277]|0)+i|0;f[5277]=w;f[5280]=k;f[k+4>>2]=w|1}while(0);w=l+8|0;u=x;return w|0}a=21544;while(1){b=f[a>>2]|0;if(b>>>0<=j>>>0?(w=b+(f[a+4>>2]|0)|0,w>>>0>j>>>0):0)break;a=f[a+8>>2]|0}e=w+-47|0;a=e+8|0;a=e+((a&7|0)==0?0:0-a&7)|0;e=j+16|0;a=a>>>0>>0?j:a;b=a+8|0;c=h+8|0;c=(c&7|0)==0?0:0-c&7;v=h+c|0;c=g+-40-c|0;f[5280]=v;f[5277]=c;f[v+4>>2]=c|1;f[v+c+4>>2]=40;f[5281]=f[5396];c=a+4|0;f[c>>2]=27;f[b>>2]=f[5386];f[b+4>>2]=f[5387];f[b+8>>2]=f[5388];f[b+12>>2]=f[5389];f[5386]=h;f[5387]=g;f[5389]=0;f[5388]=b;b=a+24|0;do{v=b;b=b+4|0;f[b>>2]=7}while((v+8|0)>>>0>>0);if((a|0)!=(j|0)){g=a-j|0;f[c>>2]=f[c>>2]&-2;f[j+4>>2]=g|1;f[a>>2]=g;b=g>>>3;if(g>>>0<256){c=21136+(b<<1<<2)|0;a=f[5274]|0;b=1<>2]|0}f[b>>2]=j;f[a+12>>2]=j;f[j+8>>2]=a;f[j+12>>2]=c;break}b=g>>>8;if(b)if(g>>>0>16777215)c=31;else{v=(b+1048320|0)>>>16&8;w=b<>>16&4;w=w<>>16&2;c=14-(t|v|c)+(w<>>15)|0;c=g>>>(c+7|0)&1|c<<1}else c=0;d=21400+(c<<2)|0;f[j+28>>2]=c;f[j+20>>2]=0;f[e>>2]=0;b=f[5275]|0;a=1<>2]=j;f[j+24>>2]=d;f[j+12>>2]=j;f[j+8>>2]=j;break}a=g<<((c|0)==31?0:25-(c>>>1)|0);c=f[d>>2]|0;while(1){if((f[c+4>>2]&-8|0)==(g|0)){v=216;break}d=c+16+(a>>>31<<2)|0;b=f[d>>2]|0;if(!b){v=215;break}else{a=a<<1;c=b}}if((v|0)==215){f[d>>2]=j;f[j+24>>2]=c;f[j+12>>2]=j;f[j+8>>2]=j;break}else if((v|0)==216){v=c+8|0;w=f[v>>2]|0;f[w+12>>2]=j;f[v>>2]=j;f[j+8>>2]=w;f[j+12>>2]=c;f[j+24>>2]=0;break}}}else{w=f[5278]|0;if((w|0)==0|h>>>0>>0)f[5278]=h;f[5386]=h;f[5387]=g;f[5389]=0;f[5283]=f[5392];f[5282]=-1;b=0;do{w=21136+(b<<1<<2)|0;f[w+12>>2]=w;f[w+8>>2]=w;b=b+1|0}while((b|0)!=32);w=h+8|0;w=(w&7|0)==0?0:0-w&7;v=h+w|0;w=g+-40-w|0;f[5280]=v;f[5277]=w;f[v+4>>2]=w|1;f[v+w+4>>2]=40;f[5281]=f[5396]}while(0);b=f[5277]|0;if(b>>>0>m>>>0){t=b-m|0;f[5277]=t;w=f[5280]|0;v=w+m|0;f[5280]=v;f[v+4>>2]=t|1;f[w+4>>2]=m|3;w=w+8|0;u=x;return w|0}}w=Bq()|0;f[w>>2]=12;w=0;u=x;return w|0}function Ya(a){a=a|0;var b=0,c=0,d=0,e=0,g=0,h=0,i=0,j=0,k=0,l=0,m=0;l=u;u=u+16|0;b=l;j=l+8|0;c=l+4|0;f[j>>2]=a;do if(a>>>0>=212){i=(a>>>0)/210|0;e=i*210|0;f[c>>2]=a-e;h=(im(6660,6852,c,b)|0)-6660>>2;a=e;e=0;a:while(1){b=(f[6660+(h<<2)>>2]|0)+a|0;d=5;while(1){if(d>>>0>=47){g=211;c=e;k=8;break}a=f[6468+(d<<2)>>2]|0;c=(b>>>0)/(a>>>0)|0;if(c>>>0>>0){k=106;break a}if((b|0)==(X(c,a)|0)){b=e;break}else d=d+1|0}b:do if((k|0)==8){c:while(1){k=0;a=(b>>>0)/(g>>>0)|0;do if(a>>>0>=g>>>0)if((b|0)!=(X(a,g)|0)){d=g+10|0;a=(b>>>0)/(d>>>0)|0;if(a>>>0>=d>>>0)if((b|0)!=(X(a,d)|0)){d=g+12|0;a=(b>>>0)/(d>>>0)|0;if(a>>>0>=d>>>0)if((b|0)!=(X(a,d)|0)){d=g+16|0;a=(b>>>0)/(d>>>0)|0;if(a>>>0>=d>>>0)if((b|0)!=(X(a,d)|0)){d=g+18|0;a=(b>>>0)/(d>>>0)|0;if(a>>>0>=d>>>0)if((b|0)!=(X(a,d)|0)){d=g+22|0;a=(b>>>0)/(d>>>0)|0;if(a>>>0>=d>>>0)if((b|0)!=(X(a,d)|0)){d=g+28|0;a=(b>>>0)/(d>>>0)|0;if(a>>>0>=d>>>0)if((b|0)==(X(a,d)|0)){e=9;a=d}else{d=g+30|0;a=(b>>>0)/(d>>>0)|0;if(a>>>0>>0){e=1;a=d;c=b;break}if((b|0)==(X(a,d)|0)){e=9;a=d;break}d=g+36|0;a=(b>>>0)/(d>>>0)|0;if(a>>>0>>0){e=1;a=d;c=b;break}if((b|0)==(X(a,d)|0)){e=9;a=d;break}d=g+40|0;a=(b>>>0)/(d>>>0)|0;if(a>>>0>>0){e=1;a=d;c=b;break}if((b|0)==(X(a,d)|0)){e=9;a=d;break}d=g+42|0;a=(b>>>0)/(d>>>0)|0;if(a>>>0>>0){e=1;a=d;c=b;break}if((b|0)==(X(a,d)|0)){e=9;a=d;break}d=g+46|0;a=(b>>>0)/(d>>>0)|0;if(a>>>0>>0){e=1;a=d;c=b;break}if((b|0)==(X(a,d)|0)){e=9;a=d;break}d=g+52|0;a=(b>>>0)/(d>>>0)|0;if(a>>>0>>0){e=1;a=d;c=b;break}if((b|0)==(X(a,d)|0)){e=9;a=d;break}d=g+58|0;a=(b>>>0)/(d>>>0)|0;if(a>>>0>>0){e=1;a=d;c=b;break}if((b|0)==(X(a,d)|0)){e=9;a=d;break}d=g+60|0;a=(b>>>0)/(d>>>0)|0;if(a>>>0>>0){e=1;a=d;c=b;break}if((b|0)==(X(a,d)|0)){e=9;a=d;break}d=g+66|0;a=(b>>>0)/(d>>>0)|0;if(a>>>0>>0){e=1;a=d;c=b;break}if((b|0)==(X(a,d)|0)){e=9;a=d;break}d=g+70|0;a=(b>>>0)/(d>>>0)|0;if(a>>>0>>0){e=1;a=d;c=b;break}if((b|0)==(X(a,d)|0)){e=9;a=d;break}d=g+72|0;a=(b>>>0)/(d>>>0)|0;if(a>>>0>>0){e=1;a=d;c=b;break}if((b|0)==(X(a,d)|0)){e=9;a=d;break}d=g+78|0;a=(b>>>0)/(d>>>0)|0;if(a>>>0>>0){e=1;a=d;c=b;break}if((b|0)==(X(a,d)|0)){e=9;a=d;break}d=g+82|0;a=(b>>>0)/(d>>>0)|0;if(a>>>0>>0){e=1;a=d;c=b;break}if((b|0)==(X(a,d)|0)){e=9;a=d;break}d=g+88|0;a=(b>>>0)/(d>>>0)|0;if(a>>>0>>0){e=1;a=d;c=b;break}if((b|0)==(X(a,d)|0)){e=9;a=d;break}d=g+96|0;a=(b>>>0)/(d>>>0)|0;if(a>>>0>>0){e=1;a=d;c=b;break}if((b|0)==(X(a,d)|0)){e=9;a=d;break}d=g+100|0;a=(b>>>0)/(d>>>0)|0;if(a>>>0>>0){e=1;a=d;c=b;break}if((b|0)==(X(a,d)|0)){e=9;a=d;break}d=g+102|0;a=(b>>>0)/(d>>>0)|0;if(a>>>0>>0){e=1;a=d;c=b;break}if((b|0)==(X(a,d)|0)){e=9;a=d;break}d=g+106|0;a=(b>>>0)/(d>>>0)|0;if(a>>>0>>0){e=1;a=d;c=b;break}if((b|0)==(X(a,d)|0)){e=9;a=d;break}d=g+108|0;a=(b>>>0)/(d>>>0)|0;if(a>>>0>>0){e=1;a=d;c=b;break}if((b|0)==(X(a,d)|0)){e=9;a=d;break}d=g+112|0;a=(b>>>0)/(d>>>0)|0;if(a>>>0>>0){e=1;a=d;c=b;break}if((b|0)==(X(a,d)|0)){e=9;a=d;break}d=g+120|0;a=(b>>>0)/(d>>>0)|0;if(a>>>0>>0){e=1;a=d;c=b;break}if((b|0)==(X(a,d)|0)){e=9;a=d;break}d=g+126|0;a=(b>>>0)/(d>>>0)|0;if(a>>>0>>0){e=1;a=d;c=b;break}if((b|0)==(X(a,d)|0)){e=9;a=d;break}d=g+130|0;a=(b>>>0)/(d>>>0)|0;if(a>>>0>>0){e=1;a=d;c=b;break}if((b|0)==(X(a,d)|0)){e=9;a=d;break}d=g+136|0;a=(b>>>0)/(d>>>0)|0;if(a>>>0>>0){e=1;a=d;c=b;break}if((b|0)==(X(a,d)|0)){e=9;a=d;break}d=g+138|0;a=(b>>>0)/(d>>>0)|0;if(a>>>0>>0){e=1;a=d;c=b;break}if((b|0)==(X(a,d)|0)){e=9;a=d;break}d=g+142|0;a=(b>>>0)/(d>>>0)|0;if(a>>>0>>0){e=1;a=d;c=b;break}if((b|0)==(X(a,d)|0)){e=9;a=d;break}d=g+148|0;a=(b>>>0)/(d>>>0)|0;if(a>>>0>>0){e=1;a=d;c=b;break}if((b|0)==(X(a,d)|0)){e=9;a=d;break}d=g+150|0;a=(b>>>0)/(d>>>0)|0;if(a>>>0>>0){e=1;a=d;c=b;break}if((b|0)==(X(a,d)|0)){e=9;a=d;break}d=g+156|0;a=(b>>>0)/(d>>>0)|0;if(a>>>0>>0){e=1;a=d;c=b;break}if((b|0)==(X(a,d)|0)){e=9;a=d;break}d=g+162|0;a=(b>>>0)/(d>>>0)|0;if(a>>>0>>0){e=1;a=d;c=b;break}if((b|0)==(X(a,d)|0)){e=9;a=d;break}d=g+166|0;a=(b>>>0)/(d>>>0)|0;if(a>>>0>>0){e=1;a=d;c=b;break}if((b|0)==(X(a,d)|0)){e=9;a=d;break}d=g+168|0;a=(b>>>0)/(d>>>0)|0;if(a>>>0>>0){e=1;a=d;c=b;break}if((b|0)==(X(a,d)|0)){e=9;a=d;break}d=g+172|0;a=(b>>>0)/(d>>>0)|0;if(a>>>0>>0){e=1;a=d;c=b;break}if((b|0)==(X(a,d)|0)){e=9;a=d;break}d=g+178|0;a=(b>>>0)/(d>>>0)|0;if(a>>>0>>0){e=1;a=d;c=b;break}if((b|0)==(X(a,d)|0)){e=9;a=d;break}d=g+180|0;a=(b>>>0)/(d>>>0)|0;if(a>>>0>>0){e=1;a=d;c=b;break}if((b|0)==(X(a,d)|0)){e=9;a=d;break}d=g+186|0;a=(b>>>0)/(d>>>0)|0;if(a>>>0>>0){e=1;a=d;c=b;break}if((b|0)==(X(a,d)|0)){e=9;a=d;break}d=g+190|0;a=(b>>>0)/(d>>>0)|0;if(a>>>0>>0){e=1;a=d;c=b;break}if((b|0)==(X(a,d)|0)){e=9;a=d;break}d=g+192|0;a=(b>>>0)/(d>>>0)|0;if(a>>>0>>0){e=1;a=d;c=b;break}if((b|0)==(X(a,d)|0)){e=9;a=d;break}d=g+196|0;a=(b>>>0)/(d>>>0)|0;if(a>>>0>>0){e=1;a=d;c=b;break}if((b|0)==(X(a,d)|0)){e=9;a=d;break}d=g+198|0;a=(b>>>0)/(d>>>0)|0;if(a>>>0>>0){e=1;a=d;c=b;break}if((b|0)==(X(a,d)|0)){e=9;a=d;break}a=g+208|0;m=(b>>>0)/(a>>>0)|0;d=m>>>0>>0;m=(b|0)==(X(m,a)|0);e=d?1:m?9:0;a=d|m?a:g+210|0;c=d?b:c}else{e=1;a=d;c=b}}else{e=9;a=d}else{e=1;a=d;c=b}}else{e=9;a=d}else{e=1;a=d;c=b}}else{e=9;a=d}else{e=1;a=d;c=b}}else{e=9;a=d}else{e=1;a=d;c=b}}else{e=9;a=d}else{e=1;a=d;c=b}}else{e=9;a=g}else{e=1;a=g;c=b}while(0);switch(e&15){case 9:{b=c;break b}case 0:{g=a;k=8;break}default:break c}}if(!e)b=c;else{k=107;break a}}while(0);e=h+1|0;m=(e|0)==48;a=(m&1)+i|0;h=m?0:e;i=a;a=a*210|0;e=b}if((k|0)==106){f[j>>2]=b;break}else if((k|0)==107){f[j>>2]=b;b=c;break}}else{b=im(6468,6660,j,b)|0;b=f[b>>2]|0}while(0);u=l;return b|0}function Za(a,c,d,e,g,i){a=a|0;c=c|0;d=d|0;e=e|0;g=g|0;i=i|0;var j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,v=0,w=0,x=0,y=0,z=0,A=0,B=0,C=0,D=0,E=0,F=0,G=0,H=0,I=0,J=0,K=0,L=0,M=0,N=0,O=0,P=0,Q=0,R=0,S=0,T=0,U=0,V=0,W=0,Y=0,Z=0,_=0,$=0,aa=0,ba=0,ca=0,da=0,ea=0,fa=0,ga=0,ha=0,ia=0,ja=0;ja=u;u=u+112|0;Z=ja+100|0;W=ja+96|0;ia=ja+48|0;ga=ja+32|0;$=ja+104|0;_=ja+8|0;V=ja+4|0;Y=ja;fa=a+8|0;f[fa>>2]=g;l=a+32|0;k=a+36|0;j=f[k>>2]|0;i=f[l>>2]|0;m=j-i>>2;if(m>>>0>=g>>>0){if(m>>>0>g>>>0?(n=i+(g<<2)|0,(j|0)!=(n|0)):0)f[k>>2]=j+(~((j+-4-n|0)>>>2)<<2)}else jj(l,g-m|0);if(e|0){i=f[c>>2]|0;if((e|0)>1){k=1;j=i;do{U=f[c+(k<<2)>>2]|0;T=(U|0)<(i|0);i=T?U:i;j=T?j:(U|0)>(j|0)?U:j;k=k+1|0}while((k|0)!=(e|0))}else j=i;f[a+12>>2]=i;f[a+16>>2]=j;U=1-i+j|0;f[a+20>>2]=U;i=(U|0)/2|0;j=a+24|0;f[j>>2]=i;f[a+28>>2]=0-i;if(!(U&1))f[j>>2]=i+-1}T=f[a+48>>2]|0;U=f[a+52>>2]|0;i=ia;j=i+48|0;do{f[i>>2]=0;i=i+4|0}while((i|0)<(j|0));if(!g){i=0;j=0}else{jj(ia,g);i=f[ia+12>>2]|0;j=f[ia+16>>2]|0}k=ia+16|0;l=j-i>>2;if(l>>>0>=g>>>0){if(l>>>0>g>>>0?(o=i+(g<<2)|0,(j|0)!=(o|0)):0)f[k>>2]=j+(~((j+-4-o|0)>>>2)<<2)}else jj(ia+12|0,g-l|0);l=ia+24|0;k=ia+28|0;j=f[k>>2]|0;i=f[l>>2]|0;m=j-i>>2;if(m>>>0>=g>>>0){if(m>>>0>g>>>0?(p=i+(g<<2)|0,(j|0)!=(p|0)):0)f[k>>2]=j+(~((j+-4-p|0)>>>2)<<2)}else jj(l,g-m|0);l=ia+36|0;k=ia+40|0;j=f[k>>2]|0;i=f[l>>2]|0;m=j-i>>2;if(m>>>0>=g>>>0){if(m>>>0>g>>>0?(q=i+(g<<2)|0,(j|0)!=(q|0)):0)f[k>>2]=j+(~((j+-4-q|0)>>>2)<<2)}else jj(l,g-m|0);ml(ga,g);K=a+56|0;k=f[K>>2]|0;j=f[k+4>>2]|0;i=f[k>>2]|0;l=j-i|0;a:do if((l|0)>4){J=T+64|0;C=T+28|0;H=(g|0)>0;I=_+4|0;R=_+8|0;S=_+12|0;O=a+16|0;E=a+32|0;Q=a+12|0;P=a+28|0;N=a+20|0;M=a+24|0;D=_+12|0;F=_+16|0;G=ga+4|0;L=$+1|0;B=g<<2;v=l>>2;while(1){A=v+-1|0;if(j-i>>2>>>0<=A>>>0){yp(k);i=f[k>>2]|0}p=f[i+(A<<2)>>2]|0;s=p+((p|0)<0?0:((p>>>0)%3|0|0)==0?2:-1)|0;r=s>>>5;t=1<<(s&31);q=(s|0)<0;i=p;o=1;j=0;b:while(1){do{if((i|0)<=-1){y=j;break b}k=f[ia+(j*12|0)>>2]|0;if(((f[(f[T>>2]|0)+(i>>>5<<2)>>2]&1<<(i&31)|0)==0?(ea=f[(f[(f[J>>2]|0)+12>>2]|0)+(i<<2)>>2]|0,(ea|0)>=0):0)?(da=f[C>>2]|0,z=f[U>>2]|0,ba=f[z+(f[da+(ea<<2)>>2]<<2)>>2]|0,ca=ea+1|0,ca=f[z+(f[da+((((ca|0)%3|0|0)==0?ea+-2|0:ca)<<2)>>2]<<2)>>2]|0,da=f[z+(f[da+((((ea>>>0)%3|0|0)==0?2:-1)+ea<<2)>>2]<<2)>>2]|0,(ba|0)<(A|0)&(ca|0)<(A|0)&(da|0)<(A|0)):0){m=X(ba,g)|0;n=X(ca,g)|0;e=X(da,g)|0;if(H){l=0;do{f[k+(l<<2)>>2]=(f[c+(l+e<<2)>>2]|0)+(f[c+(l+n<<2)>>2]|0)-(f[c+(l+m<<2)>>2]|0);l=l+1|0}while((l|0)!=(g|0))}j=j+1|0;if((j|0)==4){y=4;break b}}do if(o){k=i+1|0;i=((k|0)%3|0|0)==0?i+-2|0:k;k=f[T>>2]|0;if(!(f[k+(i>>>5<<2)>>2]&1<<(i&31))){if((i|0)>=0){i=f[(f[(f[J>>2]|0)+12>>2]|0)+(i<<2)>>2]|0;l=i+1|0;if((i|0)>=0)i=((l|0)%3|0|0)==0?i+-2|0:l}}else i=-1073741824}else{i=(((i>>>0)%3|0|0)==0?2:-1)+i|0;k=f[T>>2]|0;if(!(f[k+(i>>>5<<2)>>2]&1<<(i&31))){if((i|0)>=0){i=f[(f[(f[J>>2]|0)+12>>2]|0)+(i<<2)>>2]|0;if((i|0)>=0)if(!((i>>>0)%3|0)){i=i+2|0;break}else{i=i+-1|0;break}}}else i=-1073741824}while(0);if((i|0)==(p|0)){y=j;break b}}while(!(o&(i|0)<0));i=(t&f[k+(r<<2)>>2]|0)!=0;if(i|q){i=i?-1073741824:s;o=0;continue}i=f[(f[(f[J>>2]|0)+12>>2]|0)+(s<<2)>>2]|0;if((i|0)<0){o=0;continue}if(!((i>>>0)%3|0)){i=i+2|0;o=0;continue}else{i=i+-1|0;o=0;continue}}z=X(A,g)|0;f[_>>2]=2147483647;b[I>>0]=0;f[R>>2]=0;f[R+4>>2]=0;f[R+8>>2]=0;f[R+12>>2]=0;k=X(v+-2|0,g)|0;if(H){i=0;j=0;do{x=(f[c+(j+z<<2)>>2]|0)-(f[c+(j+k<<2)>>2]|0)|0;i=((x|0)>-1?x:0-x|0)+i|0;j=j+1|0}while((j|0)!=(g|0))}else i=0;f[_>>2]=i;b[I>>0]=0;f[R>>2]=0;x=c+(k<<2)|0;rg(S,x,x+(g<<2)|0);if((y|0)>=1){p=$+y|0;v=p+-1|0;r=(v|0)==($|0);t=p+-2|0;q=L>>>0>>0;o=~y;o=y+2+((o|0)>-2?o:-2)|0;s=v>>>0>$>>>0;w=0;x=1;while(1){w=w+1|0;Xj($|0,1,o|0)|0;Xj($|0,0,w|0)|0;c:while(1){if(H){Xj(f[ga>>2]|0,0,B|0)|0;l=f[ga>>2]|0;i=0;m=0;do{if(!(b[$+m>>0]|0)){j=f[ia+(m*12|0)>>2]|0;k=0;do{e=l+(k<<2)|0;f[e>>2]=(f[e>>2]|0)+(f[j+(k<<2)>>2]|0);k=k+1|0}while((k|0)!=(g|0));i=(1<>0]|0))i=(1<>2]|0;j=0;l=0;do{n=k+(l<<2)|0;e=(f[n>>2]|0)/(x|0)|0;f[n>>2]=e;e=e-(f[c+(l+z<<2)>>2]|0)|0;j=((e|0)>-1?e:0-e|0)+j|0;l=l+1|0}while((l|0)!=(g|0))}else j=0;if((j|0)<(f[_>>2]|0)){f[_>>2]=j;b[I>>0]=i;f[R>>2]=x;f[V>>2]=f[ga>>2];f[Y>>2]=f[G>>2];f[W>>2]=f[V>>2];f[Z>>2]=f[Y>>2];gg(S,W,Z)}if(r)break;aa=b[v>>0]|0;m=aa;n=-1;while(1){i=n+-1|0;e=p+i|0;l=m;m=b[e>>0]|0;if((m&255)<(l&255))break;if((e|0)==($|0)){ha=76;break c}else n=i}i=p+n|0;if((m&255)<(aa&255)){k=aa;j=v}else{k=p;l=v;while(1){j=l+-1|0;if((m&255)<(h[k+-2>>0]|0)){k=1;break}else{k=l;l=j}}}b[e>>0]=k;b[j>>0]=m;if((n|0)<-1)j=v;else continue;while(1){e=b[i>>0]|0;b[i>>0]=b[j>>0]|0;b[j>>0]=e;i=i+1|0;j=j+-1|0;if(i>>>0>=j>>>0)continue c}}if(((ha|0)==76?(ha=0,s):0)?(e=b[$>>0]|0,b[$>>0]=aa,b[v>>0]=e,q):0){i=t;j=L;do{e=b[j>>0]|0;b[j>>0]=b[i>>0]|0;b[i>>0]=e;j=j+1|0;i=i+-1|0}while(j>>>0>>0)}if((x|0)>=(y|0))break;else x=x+1|0}if((y|0)>0){l=y+-1|0;n=a+60+(l*12|0)|0;m=a+60+(l*12|0)+4|0;l=a+60+(l*12|0)+8|0;e=0;do{i=f[m>>2]|0;j=f[l>>2]|0;k=(i|0)==(j<<5|0);if(!(h[I>>0]&1<>2]|0}x=j<<6;i=i+32&-32;fj(n,j<<5>>>0<1073741823?(x>>>0>>0?i:x):2147483647);i=f[m>>2]|0}f[m>>2]=i+1;x=(f[n>>2]|0)+(i>>>5<<2)|0;f[x>>2]=f[x>>2]|1<<(i&31)}else{if(k){if((i+1|0)<0){zp(n);j=f[l>>2]|0}x=j<<6;i=i+32&-32;fj(n,j<<5>>>0<1073741823?(x>>>0>>0?i:x):2147483647);i=f[m>>2]|0}f[m>>2]=i+1;x=(f[n>>2]|0)+(i>>>5<<2)|0;f[x>>2]=f[x>>2]&~(1<<(i&31))}e=e+1|0}while((e|0)<(y|0))}}o=c+(z<<2)|0;e=d+(z<<2)|0;j=f[fa>>2]|0;if((j|0)>0){i=f[S>>2]|0;n=0;l=i;do{if((j|0)>0){m=0;do{j=f[l+(m<<2)>>2]|0;k=f[O>>2]|0;if((j|0)>(k|0)){j=f[E>>2]|0;f[j+(m<<2)>>2]=k}else{y=f[Q>>2]|0;z=f[E>>2]|0;f[z+(m<<2)>>2]=(j|0)<(y|0)?y:j;j=z}m=m+1|0}while((m|0)<(f[fa>>2]|0));l=j}else l=f[E>>2]|0;j=(f[o+(n<<2)>>2]|0)-(f[l+(n<<2)>>2]|0)|0;k=e+(n<<2)|0;f[k>>2]=j;if((j|0)>=(f[P>>2]|0)){if((j|0)>(f[M>>2]|0)){j=j-(f[N>>2]|0)|0;ha=93}}else{j=(f[N>>2]|0)+j|0;ha=93}if((ha|0)==93){ha=0;f[k>>2]=j}n=n+1|0;j=f[fa>>2]|0}while((n|0)<(j|0))}else i=f[D>>2]|0;if(i|0){j=f[F>>2]|0;if((j|0)!=(i|0))f[F>>2]=j+(~((j+-4-i|0)>>>2)<<2);Lq(i)}if((A|0)<=1)break a;k=f[K>>2]|0;i=f[k>>2]|0;j=f[k+4>>2]|0;v=A}}while(0);k=f[ia>>2]|0;if((g|0)>0){i=0;do{f[k+(i<<2)>>2]=0;i=i+1|0}while((i|0)!=(g|0))}i=f[fa>>2]|0;if((i|0)>0){p=a+16|0;e=a+32|0;r=a+12|0;q=a+28|0;o=a+20|0;n=a+24|0;m=0;do{if((i|0)>0){l=0;do{i=f[k+(l<<2)>>2]|0;j=f[p>>2]|0;if((i|0)>(j|0)){i=f[e>>2]|0;f[i+(l<<2)>>2]=j}else{g=f[r>>2]|0;a=f[e>>2]|0;f[a+(l<<2)>>2]=(i|0)<(g|0)?g:i;i=a}l=l+1|0}while((l|0)<(f[fa>>2]|0));k=i}else k=f[e>>2]|0;i=(f[c+(m<<2)>>2]|0)-(f[k+(m<<2)>>2]|0)|0;j=d+(m<<2)|0;f[j>>2]=i;if((i|0)>=(f[q>>2]|0)){if((i|0)>(f[n>>2]|0)){i=i-(f[o>>2]|0)|0;ha=125}}else{i=(f[o>>2]|0)+i|0;ha=125}if((ha|0)==125){ha=0;f[j>>2]=i}m=m+1|0;i=f[fa>>2]|0}while((m|0)<(i|0))}k=f[ga>>2]|0;if(k|0){j=ga+4|0;i=f[j>>2]|0;if((i|0)!=(k|0))f[j>>2]=i+(~((i+-4-k|0)>>>2)<<2);Lq(k)}i=f[ia+36>>2]|0;if(i|0){k=ia+40|0;j=f[k>>2]|0;if((j|0)!=(i|0))f[k>>2]=j+(~((j+-4-i|0)>>>2)<<2);Lq(i)}i=f[ia+24>>2]|0;if(i|0){k=ia+28|0;j=f[k>>2]|0;if((j|0)!=(i|0))f[k>>2]=j+(~((j+-4-i|0)>>>2)<<2);Lq(i)}i=f[ia+12>>2]|0;if(i|0){k=ia+16|0;j=f[k>>2]|0;if((j|0)!=(i|0))f[k>>2]=j+(~((j+-4-i|0)>>>2)<<2);Lq(i)}k=f[ia>>2]|0;if(!k){u=ja;return 1}j=ia+4|0;i=f[j>>2]|0;if((i|0)!=(k|0))f[j>>2]=i+(~((i+-4-k|0)>>>2)<<2);Lq(k);u=ja;return 1}function _a(a,c,d,e,g,i){a=a|0;c=c|0;d=d|0;e=e|0;g=g|0;i=i|0;var j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,v=0,w=0,x=0,y=0,z=0,A=0,B=0,C=0,D=0,E=0,F=0,G=0,H=0,I=0,J=0,K=0,L=0,M=0,N=0,O=0,P=0,Q=0,R=0,S=0,T=0,U=0,V=0,W=0,Y=0,Z=0,_=0,$=0,aa=0,ba=0,ca=0,da=0,ea=0;ea=u;u=u+112|0;Y=ea+100|0;V=ea+96|0;da=ea+48|0;ba=ea+32|0;_=ea+104|0;Z=ea+8|0;U=ea+4|0;W=ea;aa=a+8|0;f[aa>>2]=g;l=a+32|0;k=a+36|0;j=f[k>>2]|0;i=f[l>>2]|0;m=j-i>>2;if(m>>>0>=g>>>0){if(m>>>0>g>>>0?(n=i+(g<<2)|0,(j|0)!=(n|0)):0)f[k>>2]=j+(~((j+-4-n|0)>>>2)<<2)}else jj(l,g-m|0);if(e|0){i=f[c>>2]|0;if((e|0)>1){k=1;j=i;do{T=f[c+(k<<2)>>2]|0;S=(T|0)<(i|0);i=S?T:i;j=S?j:(T|0)>(j|0)?T:j;k=k+1|0}while((k|0)!=(e|0))}else j=i;f[a+12>>2]=i;f[a+16>>2]=j;T=1-i+j|0;f[a+20>>2]=T;i=(T|0)/2|0;j=a+24|0;f[j>>2]=i;f[a+28>>2]=0-i;if(!(T&1))f[j>>2]=i+-1}S=f[a+48>>2]|0;T=f[a+52>>2]|0;i=da;j=i+48|0;do{f[i>>2]=0;i=i+4|0}while((i|0)<(j|0));if(!g){i=0;j=0}else{jj(da,g);i=f[da+12>>2]|0;j=f[da+16>>2]|0}k=da+16|0;l=j-i>>2;if(l>>>0>=g>>>0){if(l>>>0>g>>>0?(o=i+(g<<2)|0,(j|0)!=(o|0)):0)f[k>>2]=j+(~((j+-4-o|0)>>>2)<<2)}else jj(da+12|0,g-l|0);l=da+24|0;k=da+28|0;j=f[k>>2]|0;i=f[l>>2]|0;m=j-i>>2;if(m>>>0>=g>>>0){if(m>>>0>g>>>0?(p=i+(g<<2)|0,(j|0)!=(p|0)):0)f[k>>2]=j+(~((j+-4-p|0)>>>2)<<2)}else jj(l,g-m|0);l=da+36|0;k=da+40|0;j=f[k>>2]|0;i=f[l>>2]|0;m=j-i>>2;if(m>>>0>=g>>>0){if(m>>>0>g>>>0?(q=i+(g<<2)|0,(j|0)!=(q|0)):0)f[k>>2]=j+(~((j+-4-q|0)>>>2)<<2)}else jj(l,g-m|0);ml(ba,g);J=a+56|0;k=f[J>>2]|0;j=f[k+4>>2]|0;i=f[k>>2]|0;l=j-i|0;a:do if((l|0)>4){C=S+12|0;H=(g|0)>0;I=Z+4|0;Q=Z+8|0;R=Z+12|0;N=a+16|0;E=a+32|0;P=a+12|0;O=a+28|0;M=a+20|0;L=a+24|0;D=Z+12|0;F=Z+16|0;G=ba+4|0;K=_+1|0;B=g<<2;x=l>>2;while(1){A=x+-1|0;if(j-i>>2>>>0<=A>>>0){yp(k);i=f[k>>2]|0}t=f[i+(A<<2)>>2]|0;w=(((t>>>0)%3|0|0)==0?2:-1)+t|0;v=(t|w|0)<0;s=(t|0)<0?t:w;i=t;r=1;j=0;b:while(1){do{if((i|0)<=-1){y=j;break b}p=f[da+(j*12|0)>>2]|0;q=f[C>>2]|0;l=f[q+(i<<2)>>2]|0;if((l|0)>=0){m=f[S>>2]|0;n=f[T>>2]|0;o=f[n+(f[m+(l<<2)>>2]<<2)>>2]|0;k=l+1|0;k=((k|0)%3|0|0)==0?l+-2|0:k;if((k|0)<0)k=-1073741824;else k=f[m+(k<<2)>>2]|0;e=f[n+(k<<2)>>2]|0;k=(((l>>>0)%3|0|0)==0?2:-1)+l|0;if((k|0)<0)k=-1073741824;else k=f[m+(k<<2)>>2]|0;k=f[n+(k<<2)>>2]|0;if((o|0)<(A|0)&(e|0)<(A|0)&(k|0)<(A|0)){n=X(o,g)|0;m=X(e,g)|0;l=X(k,g)|0;if(H){k=0;do{f[p+(k<<2)>>2]=(f[c+(k+l<<2)>>2]|0)+(f[c+(k+m<<2)>>2]|0)-(f[c+(k+n<<2)>>2]|0);k=k+1|0}while((k|0)!=(g|0))}j=j+1|0;if((j|0)==4){y=4;break b}}}do if(r){z=i+1|0;i=((z|0)%3|0|0)==0?i+-2|0:z;if((i|0)>=0){i=f[q+(i<<2)>>2]|0;k=i+1|0;if((i|0)>=0)i=((k|0)%3|0|0)==0?i+-2|0:k}}else{i=(((i>>>0)%3|0|0)==0?2:-1)+i|0;if((i|0)>=0){i=f[q+(i<<2)>>2]|0;if((i|0)>=0)if(!((i>>>0)%3|0)){i=i+2|0;break}else{i=i+-1|0;break}}}while(0);if((i|0)==(t|0)){y=j;break b}}while(!(r&(i|0)<0));if(v){i=s;r=0;continue}i=f[q+(w<<2)>>2]|0;if((i|0)<0){r=0;continue}if(!((i>>>0)%3|0)){i=i+2|0;r=0;continue}else{i=i+-1|0;r=0;continue}}z=X(A,g)|0;f[Z>>2]=2147483647;b[I>>0]=0;f[Q>>2]=0;f[Q+4>>2]=0;f[Q+8>>2]=0;f[Q+12>>2]=0;k=X(x+-2|0,g)|0;if(H){i=0;j=0;do{x=(f[c+(j+z<<2)>>2]|0)-(f[c+(j+k<<2)>>2]|0)|0;i=((x|0)>-1?x:0-x|0)+i|0;j=j+1|0}while((j|0)!=(g|0))}else i=0;f[Z>>2]=i;b[I>>0]=0;f[Q>>2]=0;x=c+(k<<2)|0;rg(R,x,x+(g<<2)|0);if((y|0)>=1){p=_+y|0;v=p+-1|0;r=(v|0)==(_|0);t=p+-2|0;q=K>>>0>>0;o=~y;o=y+2+((o|0)>-2?o:-2)|0;s=v>>>0>_>>>0;w=0;x=1;while(1){w=w+1|0;Xj(_|0,1,o|0)|0;Xj(_|0,0,w|0)|0;c:while(1){if(H){Xj(f[ba>>2]|0,0,B|0)|0;l=f[ba>>2]|0;i=0;m=0;do{if(!(b[_+m>>0]|0)){j=f[da+(m*12|0)>>2]|0;k=0;do{e=l+(k<<2)|0;f[e>>2]=(f[e>>2]|0)+(f[j+(k<<2)>>2]|0);k=k+1|0}while((k|0)!=(g|0));i=(1<>0]|0))i=(1<>2]|0;j=0;l=0;do{n=k+(l<<2)|0;e=(f[n>>2]|0)/(x|0)|0;f[n>>2]=e;e=e-(f[c+(l+z<<2)>>2]|0)|0;j=((e|0)>-1?e:0-e|0)+j|0;l=l+1|0}while((l|0)!=(g|0))}else j=0;if((j|0)<(f[Z>>2]|0)){f[Z>>2]=j;b[I>>0]=i;f[Q>>2]=x;f[U>>2]=f[ba>>2];f[W>>2]=f[G>>2];f[V>>2]=f[U>>2];f[Y>>2]=f[W>>2];gg(R,V,Y)}if(r)break;$=b[v>>0]|0;m=$;n=-1;while(1){i=n+-1|0;e=p+i|0;l=m;m=b[e>>0]|0;if((m&255)<(l&255))break;if((e|0)==(_|0)){ca=77;break c}else n=i}i=p+n|0;if((m&255)<($&255)){k=$;j=v}else{k=p;l=v;while(1){j=l+-1|0;if((m&255)<(h[k+-2>>0]|0)){k=1;break}else{k=l;l=j}}}b[e>>0]=k;b[j>>0]=m;if((n|0)<-1)j=v;else continue;while(1){e=b[i>>0]|0;b[i>>0]=b[j>>0]|0;b[j>>0]=e;i=i+1|0;j=j+-1|0;if(i>>>0>=j>>>0)continue c}}if(((ca|0)==77?(ca=0,s):0)?(e=b[_>>0]|0,b[_>>0]=$,b[v>>0]=e,q):0){i=t;j=K;do{e=b[j>>0]|0;b[j>>0]=b[i>>0]|0;b[i>>0]=e;j=j+1|0;i=i+-1|0}while(j>>>0>>0)}if((x|0)>=(y|0))break;else x=x+1|0}if((y|0)>0){l=y+-1|0;n=a+60+(l*12|0)|0;m=a+60+(l*12|0)+4|0;l=a+60+(l*12|0)+8|0;e=0;do{i=f[m>>2]|0;j=f[l>>2]|0;k=(i|0)==(j<<5|0);if(!(h[I>>0]&1<>2]|0}x=j<<6;i=i+32&-32;fj(n,j<<5>>>0<1073741823?(x>>>0>>0?i:x):2147483647);i=f[m>>2]|0}f[m>>2]=i+1;x=(f[n>>2]|0)+(i>>>5<<2)|0;f[x>>2]=f[x>>2]|1<<(i&31)}else{if(k){if((i+1|0)<0){zp(n);j=f[l>>2]|0}x=j<<6;i=i+32&-32;fj(n,j<<5>>>0<1073741823?(x>>>0>>0?i:x):2147483647);i=f[m>>2]|0}f[m>>2]=i+1;x=(f[n>>2]|0)+(i>>>5<<2)|0;f[x>>2]=f[x>>2]&~(1<<(i&31))}e=e+1|0}while((e|0)<(y|0))}}o=c+(z<<2)|0;e=d+(z<<2)|0;j=f[aa>>2]|0;if((j|0)>0){i=f[R>>2]|0;n=0;l=i;do{if((j|0)>0){m=0;do{j=f[l+(m<<2)>>2]|0;k=f[N>>2]|0;if((j|0)>(k|0)){j=f[E>>2]|0;f[j+(m<<2)>>2]=k}else{y=f[P>>2]|0;z=f[E>>2]|0;f[z+(m<<2)>>2]=(j|0)<(y|0)?y:j;j=z}m=m+1|0}while((m|0)<(f[aa>>2]|0));l=j}else l=f[E>>2]|0;j=(f[o+(n<<2)>>2]|0)-(f[l+(n<<2)>>2]|0)|0;k=e+(n<<2)|0;f[k>>2]=j;if((j|0)>=(f[O>>2]|0)){if((j|0)>(f[L>>2]|0)){j=j-(f[M>>2]|0)|0;ca=94}}else{j=(f[M>>2]|0)+j|0;ca=94}if((ca|0)==94){ca=0;f[k>>2]=j}n=n+1|0;j=f[aa>>2]|0}while((n|0)<(j|0))}else i=f[D>>2]|0;if(i|0){j=f[F>>2]|0;if((j|0)!=(i|0))f[F>>2]=j+(~((j+-4-i|0)>>>2)<<2);Lq(i)}if((A|0)<=1)break a;k=f[J>>2]|0;i=f[k>>2]|0;j=f[k+4>>2]|0;x=A}}while(0);k=f[da>>2]|0;if((g|0)>0){i=0;do{f[k+(i<<2)>>2]=0;i=i+1|0}while((i|0)!=(g|0))}i=f[aa>>2]|0;if((i|0)>0){p=a+16|0;e=a+32|0;r=a+12|0;q=a+28|0;o=a+20|0;n=a+24|0;m=0;do{if((i|0)>0){l=0;do{i=f[k+(l<<2)>>2]|0;j=f[p>>2]|0;if((i|0)>(j|0)){i=f[e>>2]|0;f[i+(l<<2)>>2]=j}else{g=f[r>>2]|0;a=f[e>>2]|0;f[a+(l<<2)>>2]=(i|0)<(g|0)?g:i;i=a}l=l+1|0}while((l|0)<(f[aa>>2]|0));k=i}else k=f[e>>2]|0;i=(f[c+(m<<2)>>2]|0)-(f[k+(m<<2)>>2]|0)|0;j=d+(m<<2)|0;f[j>>2]=i;if((i|0)>=(f[q>>2]|0)){if((i|0)>(f[n>>2]|0)){i=i-(f[o>>2]|0)|0;ca=126}}else{i=(f[o>>2]|0)+i|0;ca=126}if((ca|0)==126){ca=0;f[j>>2]=i}m=m+1|0;i=f[aa>>2]|0}while((m|0)<(i|0))}k=f[ba>>2]|0;if(k|0){j=ba+4|0;i=f[j>>2]|0;if((i|0)!=(k|0))f[j>>2]=i+(~((i+-4-k|0)>>>2)<<2);Lq(k)}i=f[da+36>>2]|0;if(i|0){k=da+40|0;j=f[k>>2]|0;if((j|0)!=(i|0))f[k>>2]=j+(~((j+-4-i|0)>>>2)<<2);Lq(i)}i=f[da+24>>2]|0;if(i|0){k=da+28|0;j=f[k>>2]|0;if((j|0)!=(i|0))f[k>>2]=j+(~((j+-4-i|0)>>>2)<<2);Lq(i)}i=f[da+12>>2]|0;if(i|0){k=da+16|0;j=f[k>>2]|0;if((j|0)!=(i|0))f[k>>2]=j+(~((j+-4-i|0)>>>2)<<2);Lq(i)}k=f[da>>2]|0;if(!k){u=ea;return 1}j=da+4|0;i=f[j>>2]|0;if((i|0)!=(k|0))f[j>>2]=i+(~((i+-4-k|0)>>>2)<<2);Lq(k);u=ea;return 1}function $a(a){a=a|0;var c=0,d=0,e=0,g=0,i=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,v=0,w=0,x=0,y=0,z=0,A=0,B=0,C=0,D=0,E=0,F=0,G=0,H=0,I=0,J=0,K=0,L=0,M=0,N=0,O=0,P=0,Q=0,R=0,S=0,T=0,U=0,V=0,W=0,X=0,Y=0,Z=0,_=0,$=0,aa=0;$=u;u=u+64|0;X=$+56|0;Y=$+52|0;R=$+48|0;j=$+60|0;_=$;I=$+44|0;J=$+40|0;F=$+36|0;G=$+32|0;H=$+28|0;Q=$+24|0;S=$+20|0;T=$+16|0;V=$+12|0;e=a+8|0;If(X,f[e>>2]|0);K=a+12|0;Z=f[X>>2]|0;f[X>>2]=0;d=f[K>>2]|0;f[K>>2]=Z;if(d){gk(d);Lq(d);d=f[X>>2]|0;f[X>>2]=0;if(d|0){gk(d);Lq(d)}}else f[X>>2]=0;if(!(f[K>>2]|0)){_=0;u=$;return _|0}P=a+208|0;Ge(P,a)|0;C=f[K>>2]|0;Z=a+4|0;Ri(((f[C+28>>2]|0)-(f[C+24>>2]|0)>>2)-(f[C+36>>2]|0)|0,f[(f[Z>>2]|0)+44>>2]|0)|0;C=f[K>>2]|0;Ri(((f[C+28>>2]|0)-(f[C+24>>2]|0)>>2)-(f[C+44>>2]|0)|0,f[(f[Z>>2]|0)+44>>2]|0)|0;C=f[K>>2]|0;Ri((((f[C+4>>2]|0)-(f[C>>2]|0)>>2>>>0)/3|0)-(f[C+40>>2]|0)|0,f[(f[Z>>2]|0)+44>>2]|0)|0;C=a+28|0;i=f[e>>2]|0;i=((f[i+88>>2]|0)-(f[i+84>>2]|0)|0)/12|0;b[X>>0]=0;Th(C,i,X);i=f[K>>2]|0;i=(f[i+28>>2]|0)-(f[i+24>>2]|0)>>2;f[X>>2]=-1;Hg(a+52|0,i,X);i=a+40|0;d=f[i>>2]|0;g=a+44|0;e=f[g>>2]|0;if((e|0)!=(d|0))f[g>>2]=e+(~((e+-4-d|0)>>>2)<<2);A=f[K>>2]|0;A=(f[A+4>>2]|0)-(f[A>>2]|0)>>2;xk(i,A-((A>>>0)%3|0)|0);A=a+84|0;z=f[K>>2]|0;z=(f[z+28>>2]|0)-(f[z+24>>2]|0)>>2;b[X>>0]=0;Th(A,z,X);z=a+96|0;d=f[z>>2]|0;y=a+100|0;e=f[y>>2]|0;if((e|0)!=(d|0))f[y>>2]=e+(~((e+-4-d|0)>>>2)<<2);f[a+176>>2]=-1;B=a+180|0;f[B>>2]=0;W=a+108|0;d=f[W>>2]|0;L=a+112|0;e=f[L>>2]|0;if((e|0)!=(d|0))f[L>>2]=e+(~(((e+-12-d|0)>>>0)/12|0)*12|0);i=a+132|0;if(f[i>>2]|0){e=a+128|0;d=f[e>>2]|0;if(d|0)do{N=d;d=f[d>>2]|0;Lq(N)}while((d|0)!=0);f[e>>2]=0;d=f[a+124>>2]|0;if(d|0){e=a+120|0;g=0;do{f[(f[e>>2]|0)+(g<<2)>>2]=0;g=g+1|0}while((g|0)!=(d|0))}f[i>>2]=0}f[a+144>>2]=0;N=f[K>>2]|0;N=(f[N+28>>2]|0)-(f[N+24>>2]|0)>>2;f[X>>2]=-1;Hg(a+152|0,N,X);N=a+164|0;d=f[N>>2]|0;D=a+168|0;e=f[D>>2]|0;if((e|0)!=(d|0))f[D>>2]=e+(~((e+-4-d|0)>>>2)<<2);x=a+72|0;d=f[x>>2]|0;w=a+76|0;e=f[w>>2]|0;if((e|0)!=(d|0))f[w>>2]=e+(~((e+-4-d|0)>>>2)<<2);E=f[K>>2]|0;xk(x,((f[E+4>>2]|0)-(f[E>>2]|0)>>2>>>0)/3|0);f[a+64>>2]=0;if(!(Fe(a)|0)){_=0;u=$;return _|0}if(!(Sg(a)|0)){_=0;u=$;return _|0}v=a+184|0;t=a+188|0;b[j>>0]=((f[t>>2]|0)-(f[v>>2]|0)|0)/108|0;d=f[(f[Z>>2]|0)+44>>2]|0;E=d+16|0;s=f[E+4>>2]|0;if(!((s|0)>0|(s|0)==0&(f[E>>2]|0)>>>0>0)){f[Y>>2]=f[d+4>>2];f[X>>2]=f[Y>>2];vf(d,X,j,j+1|0)|0}r=f[K>>2]|0;r=(f[r+4>>2]|0)-(f[r>>2]|0)|0;s=r>>2;ti(P);f[_>>2]=0;E=_+4|0;f[E>>2]=0;f[_+8>>2]=0;a:do if((r|0)>0){n=a+224|0;o=a+220|0;q=a+104|0;p=_+8|0;r=0;b:while(1){d=(r>>>0)/3|0;k=d>>>5;l=1<<(d&31);if((f[(f[C>>2]|0)+(k<<2)>>2]&l|0)==0?(m=f[K>>2]|0,f[I>>2]=d,f[X>>2]=f[I>>2],!(uk(m,X)|0)):0){f[Y>>2]=0;f[J>>2]=d;f[X>>2]=f[J>>2];e=Bf(a,X,Y)|0;m=n;j=f[m+4>>2]|0;if((j|0)>0|(j|0)==0&(f[m>>2]|0)>>>0>0){g=f[o>>2]|0;m=g+4|0;i=f[m>>2]|0;j=i>>>3;i=i&7;d=(f[g>>2]|0)+j|0;b[d>>0]=(h[d>>0]|0)&(1<>2]|0)+j|0;b[j>>0]=h[j>>0]|0|(e&1)<>2]=(f[m>>2]|0)+1}d=f[Y>>2]|0;m=(d|0)<0;do if(e){do if(m){i=-1073741824;g=-1073741824;e=-1073741824}else{j=f[f[K>>2]>>2]|0;e=f[j+(d<<2)>>2]|0;g=d+1|0;g=((g|0)%3|0|0)==0?d+-2|0:g;if((g|0)<0)g=-1073741824;else g=f[j+(g<<2)>>2]|0;i=(((d>>>0)%3|0|0)==0?2:-1)+d|0;if((i|0)<0){i=-1073741824;break}i=f[j+(i<<2)>>2]|0}while(0);j=f[A>>2]|0;aa=j+(e>>>5<<2)|0;f[aa>>2]=f[aa>>2]|1<<(e&31);e=j+(g>>>5<<2)|0;f[e>>2]=f[e>>2]|1<<(g&31);e=j+(i>>>5<<2)|0;f[e>>2]=f[e>>2]|1<<(i&31);f[X>>2]=1;e=f[y>>2]|0;if(e>>>0<(f[q>>2]|0)>>>0){f[e>>2]=1;f[y>>2]=e+4}else Bj(z,X);i=(f[C>>2]|0)+(k<<2)|0;f[i>>2]=f[i>>2]|l;i=d+1|0;if(m)g=d;else g=((i|0)%3|0|0)==0?d+-2|0:i;f[X>>2]=g;e=f[E>>2]|0;if(e>>>0<(f[p>>2]|0)>>>0){f[e>>2]=g;f[E>>2]=e+4}else Bj(_,X);if(m)break;d=((i|0)%3|0|0)==0?d+-2|0:i;if((d|0)<0)break;e=f[(f[(f[K>>2]|0)+12>>2]|0)+(d<<2)>>2]|0;aa=(e|0)<0;d=aa?-1073741824:(e>>>0)/3|0;if(aa)break;if(f[(f[C>>2]|0)+(d>>>5<<2)>>2]&1<<(d&31)|0)break;f[F>>2]=e;f[X>>2]=f[F>>2];if(!(bb(a,X)|0))break b}else{e=d+1|0;if(!m)d=((e|0)%3|0|0)==0?d+-2|0:e;f[G>>2]=d;f[X>>2]=f[G>>2];uf(a,X,1)|0;f[H>>2]=f[Y>>2];f[X>>2]=f[H>>2];if(!(bb(a,X)|0))break b}while(0)}r=r+1|0;if((r|0)>=(s|0)){M=58;break a}}e=0}else M=58;while(0);if((M|0)==58){d=f[x>>2]|0;e=f[w>>2]|0;g=e;if((d|0)!=(e|0)?(O=e+-4|0,d>>>0>>0):0){e=d;d=O;do{aa=f[e>>2]|0;f[e>>2]=f[d>>2];f[d>>2]=aa;e=e+4|0;d=d+-4|0}while(e>>>0>>0)}f[Q>>2]=g;f[S>>2]=f[_>>2];f[T>>2]=f[E>>2];f[R>>2]=f[Q>>2];f[Y>>2]=f[S>>2];f[X>>2]=f[T>>2];xe(x,R,Y,X)|0;if((f[t>>2]|0)!=(f[v>>2]|0)?(c=f[x>>2]|0,U=f[w>>2]|0,(c|0)!=(U|0)):0)do{f[V>>2]=f[c>>2];f[X>>2]=f[V>>2];ag(a,X)|0;c=c+4|0}while((c|0)!=(U|0));ph(P);Ri(f[a+332>>2]|0,f[(f[Z>>2]|0)+44>>2]|0)|0;Ri(f[B>>2]|0,f[(f[Z>>2]|0)+44>>2]|0)|0;d=a+240|0;e=a+244|0;Ri((f[e>>2]|0)-(f[d>>2]|0)|0,f[(f[Z>>2]|0)+44>>2]|0)|0;c=f[(f[Z>>2]|0)+44>>2]|0;d=f[d>>2]|0;aa=c+16|0;a=f[aa+4>>2]|0;if(!((a|0)>0|(a|0)==0&(f[aa>>2]|0)>>>0>0)){aa=(f[e>>2]|0)-d|0;f[Y>>2]=f[c+4>>2];f[X>>2]=f[Y>>2];vf(c,X,d,d+aa|0)|0;c=f[(f[Z>>2]|0)+44>>2]|0}aa=(f[L>>2]|0)-(f[W>>2]|0)|0;g=(aa|0)/12|0;Ri(g,c)|0;if(aa|0){c=0;d=0;while(1){aa=f[W>>2]|0;e=aa+(c*12|0)+4|0;Ri((f[e>>2]|0)-d|0,f[(f[Z>>2]|0)+44>>2]|0)|0;Ri((f[e>>2]|0)-(f[aa+(c*12|0)>>2]|0)|0,f[(f[Z>>2]|0)+44>>2]|0)|0;c=c+1|0;if(c>>>0>=g>>>0)break;else d=f[e>>2]|0}tj(f[(f[Z>>2]|0)+44>>2]|0,g<<1,0,0)|0;d=0;do{c=f[(f[Z>>2]|0)+44>>2]|0;e=b[(f[W>>2]|0)+(d*12|0)+8>>0]&3;aa=c+16|0;Y=f[aa+4>>2]|0;if((Y|0)>0|(Y|0)==0&(f[aa>>2]|0)>>>0>0){a=f[c+12>>2]|0;aa=a+4|0;Y=f[aa>>2]|0;X=Y>>>3;Y=Y&7;V=(f[a>>2]|0)+X|0;b[V>>0]=(h[V>>0]|0)&(1<>2]|0)+X|0;b[X>>0]=h[X>>0]|0|(e&1)<>2]|0)+1|0;f[aa>>2]=X;Y=X>>>3;X=X&7;V=(f[a>>2]|0)+Y|0;b[V>>0]=(h[V>>0]|0)&(1<>2]|0)+Y|0;b[Y>>0]=h[Y>>0]|0|e>>>1<>2]=(f[aa>>2]|0)+1}d=d+1|0}while(d>>>0>>0);Bi(f[(f[Z>>2]|0)+44>>2]|0)}g=(f[D>>2]|0)-(f[N>>2]|0)>>2;Ri(g,f[(f[Z>>2]|0)+44>>2]|0)|0;if(!g)e=1;else{c=f[N>>2]|0;d=0;e=0;do{Ri((f[c+(d<<2)>>2]|0)-e|0,f[(f[Z>>2]|0)+44>>2]|0)|0;c=f[N>>2]|0;e=f[c+(d<<2)>>2]|0;d=d+1|0}while(d>>>0>>0);e=1}}c=f[_>>2]|0;if(c|0){d=f[E>>2]|0;if((d|0)!=(c|0))f[E>>2]=d+(~((d+-4-c|0)>>>2)<<2);Lq(c)}aa=e;u=$;return aa|0}function ab(a){a=a|0;var c=0,d=0,e=0,g=0,i=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,v=0,w=0,x=0,y=0,z=0,A=0,B=0,C=0,D=0,E=0,F=0,G=0,H=0,I=0,J=0,K=0,L=0,M=0,N=0,O=0,P=0,Q=0,R=0,S=0,T=0,U=0,V=0,W=0,X=0,Y=0,Z=0,_=0,$=0,aa=0;$=u;u=u+64|0;X=$+56|0;Y=$+52|0;R=$+48|0;j=$+60|0;_=$;J=$+44|0;K=$+40|0;G=$+36|0;H=$+32|0;I=$+28|0;Q=$+24|0;S=$+20|0;T=$+16|0;V=$+12|0;e=a+8|0;If(X,f[e>>2]|0);L=a+12|0;Z=f[X>>2]|0;f[X>>2]=0;d=f[L>>2]|0;f[L>>2]=Z;if(d){gk(d);Lq(d);d=f[X>>2]|0;f[X>>2]=0;if(d|0){gk(d);Lq(d)}}else f[X>>2]=0;d=f[L>>2]|0;if(!d){_=0;u=$;return _|0}P=a+208|0;f[a+272>>2]=a;Z=a+4|0;Ri(((f[d+28>>2]|0)-(f[d+24>>2]|0)>>2)-(f[d+36>>2]|0)|0,f[(f[Z>>2]|0)+44>>2]|0)|0;C=f[L>>2]|0;Ri(((f[C+28>>2]|0)-(f[C+24>>2]|0)>>2)-(f[C+44>>2]|0)|0,f[(f[Z>>2]|0)+44>>2]|0)|0;C=f[L>>2]|0;Ri((((f[C+4>>2]|0)-(f[C>>2]|0)>>2>>>0)/3|0)-(f[C+40>>2]|0)|0,f[(f[Z>>2]|0)+44>>2]|0)|0;C=a+28|0;i=f[e>>2]|0;i=((f[i+88>>2]|0)-(f[i+84>>2]|0)|0)/12|0;b[X>>0]=0;Th(C,i,X);i=f[L>>2]|0;i=(f[i+28>>2]|0)-(f[i+24>>2]|0)>>2;f[X>>2]=-1;Hg(a+52|0,i,X);i=a+40|0;d=f[i>>2]|0;g=a+44|0;e=f[g>>2]|0;if((e|0)!=(d|0))f[g>>2]=e+(~((e+-4-d|0)>>>2)<<2);A=f[L>>2]|0;A=(f[A+4>>2]|0)-(f[A>>2]|0)>>2;xk(i,A-((A>>>0)%3|0)|0);A=a+84|0;z=f[L>>2]|0;z=(f[z+28>>2]|0)-(f[z+24>>2]|0)>>2;b[X>>0]=0;Th(A,z,X);z=a+96|0;d=f[z>>2]|0;y=a+100|0;e=f[y>>2]|0;if((e|0)!=(d|0))f[y>>2]=e+(~((e+-4-d|0)>>>2)<<2);f[a+176>>2]=-1;B=a+180|0;f[B>>2]=0;W=a+108|0;d=f[W>>2]|0;F=a+112|0;e=f[F>>2]|0;if((e|0)!=(d|0))f[F>>2]=e+(~(((e+-12-d|0)>>>0)/12|0)*12|0);i=a+132|0;if(f[i>>2]|0){e=a+128|0;d=f[e>>2]|0;if(d|0)do{N=d;d=f[d>>2]|0;Lq(N)}while((d|0)!=0);f[e>>2]=0;d=f[a+124>>2]|0;if(d|0){e=a+120|0;g=0;do{f[(f[e>>2]|0)+(g<<2)>>2]=0;g=g+1|0}while((g|0)!=(d|0))}f[i>>2]=0}f[a+144>>2]=0;N=f[L>>2]|0;N=(f[N+28>>2]|0)-(f[N+24>>2]|0)>>2;f[X>>2]=-1;Hg(a+152|0,N,X);N=a+164|0;d=f[N>>2]|0;D=a+168|0;e=f[D>>2]|0;if((e|0)!=(d|0))f[D>>2]=e+(~((e+-4-d|0)>>>2)<<2);x=a+72|0;d=f[x>>2]|0;w=a+76|0;e=f[w>>2]|0;if((e|0)!=(d|0))f[w>>2]=e+(~((e+-4-d|0)>>>2)<<2);E=f[L>>2]|0;xk(x,((f[E+4>>2]|0)-(f[E>>2]|0)>>2>>>0)/3|0);f[a+64>>2]=0;if(!(Fe(a)|0)){_=0;u=$;return _|0}if(!(Sg(a)|0)){_=0;u=$;return _|0}v=a+184|0;t=a+188|0;b[j>>0]=((f[t>>2]|0)-(f[v>>2]|0)|0)/108|0;d=f[(f[Z>>2]|0)+44>>2]|0;E=d+16|0;s=f[E+4>>2]|0;if(!((s|0)>0|(s|0)==0&(f[E>>2]|0)>>>0>0)){f[Y>>2]=f[d+4>>2];f[X>>2]=f[Y>>2];vf(d,X,j,j+1|0)|0}r=f[L>>2]|0;r=(f[r+4>>2]|0)-(f[r>>2]|0)|0;s=r>>2;ti(P);f[_>>2]=0;E=_+4|0;f[E>>2]=0;f[_+8>>2]=0;a:do if((r|0)>0){q=a+224|0;n=a+220|0;p=a+104|0;o=_+8|0;r=0;b:while(1){d=(r>>>0)/3|0;k=d>>>5;l=1<<(d&31);if((f[(f[C>>2]|0)+(k<<2)>>2]&l|0)==0?(m=f[L>>2]|0,f[J>>2]=d,f[X>>2]=f[J>>2],!(uk(m,X)|0)):0){f[Y>>2]=0;f[K>>2]=d;f[X>>2]=f[K>>2];e=Bf(a,X,Y)|0;m=q;j=f[m+4>>2]|0;if((j|0)>0|(j|0)==0&(f[m>>2]|0)>>>0>0){g=f[n>>2]|0;m=g+4|0;i=f[m>>2]|0;j=i>>>3;i=i&7;d=(f[g>>2]|0)+j|0;b[d>>0]=(h[d>>0]|0)&(1<>2]|0)+j|0;b[j>>0]=h[j>>0]|0|(e&1)<>2]=(f[m>>2]|0)+1}d=f[Y>>2]|0;m=(d|0)<0;do if(e){do if(m){i=-1073741824;g=-1073741824;e=-1073741824}else{j=f[f[L>>2]>>2]|0;e=f[j+(d<<2)>>2]|0;g=d+1|0;g=((g|0)%3|0|0)==0?d+-2|0:g;if((g|0)<0)g=-1073741824;else g=f[j+(g<<2)>>2]|0;i=(((d>>>0)%3|0|0)==0?2:-1)+d|0;if((i|0)<0){i=-1073741824;break}i=f[j+(i<<2)>>2]|0}while(0);j=f[A>>2]|0;aa=j+(e>>>5<<2)|0;f[aa>>2]=f[aa>>2]|1<<(e&31);e=j+(g>>>5<<2)|0;f[e>>2]=f[e>>2]|1<<(g&31);e=j+(i>>>5<<2)|0;f[e>>2]=f[e>>2]|1<<(i&31);f[X>>2]=1;e=f[y>>2]|0;if(e>>>0<(f[p>>2]|0)>>>0){f[e>>2]=1;f[y>>2]=e+4}else Bj(z,X);i=(f[C>>2]|0)+(k<<2)|0;f[i>>2]=f[i>>2]|l;i=d+1|0;if(m)g=d;else g=((i|0)%3|0|0)==0?d+-2|0:i;f[X>>2]=g;e=f[E>>2]|0;if(e>>>0<(f[o>>2]|0)>>>0){f[e>>2]=g;f[E>>2]=e+4}else Bj(_,X);if(m)break;d=((i|0)%3|0|0)==0?d+-2|0:i;if((d|0)<0)break;e=f[(f[(f[L>>2]|0)+12>>2]|0)+(d<<2)>>2]|0;aa=(e|0)<0;d=aa?-1073741824:(e>>>0)/3|0;if(aa)break;if(f[(f[C>>2]|0)+(d>>>5<<2)>>2]&1<<(d&31)|0)break;f[G>>2]=e;f[X>>2]=f[G>>2];if(!(db(a,X)|0))break b}else{e=d+1|0;if(!m)d=((e|0)%3|0|0)==0?d+-2|0:e;f[H>>2]=d;f[X>>2]=f[H>>2];uf(a,X,1)|0;f[I>>2]=f[Y>>2];f[X>>2]=f[I>>2];if(!(db(a,X)|0))break b}while(0)}r=r+1|0;if((r|0)>=(s|0)){M=58;break a}}e=0}else M=58;while(0);if((M|0)==58){d=f[x>>2]|0;e=f[w>>2]|0;g=e;if((d|0)!=(e|0)?(O=e+-4|0,d>>>0>>0):0){e=d;d=O;do{aa=f[e>>2]|0;f[e>>2]=f[d>>2];f[d>>2]=aa;e=e+4|0;d=d+-4|0}while(e>>>0>>0)}f[Q>>2]=g;f[S>>2]=f[_>>2];f[T>>2]=f[E>>2];f[R>>2]=f[Q>>2];f[Y>>2]=f[S>>2];f[X>>2]=f[T>>2];xe(x,R,Y,X)|0;if((f[t>>2]|0)!=(f[v>>2]|0)?(c=f[x>>2]|0,U=f[w>>2]|0,(c|0)!=(U|0)):0)do{f[V>>2]=f[c>>2];f[X>>2]=f[V>>2];ag(a,X)|0;c=c+4|0}while((c|0)!=(U|0));nf(P);Ri((f[a+280>>2]|0)-(f[a+276>>2]|0)>>2,f[(f[Z>>2]|0)+44>>2]|0)|0;Ri(f[B>>2]|0,f[(f[Z>>2]|0)+44>>2]|0)|0;d=a+240|0;e=a+244|0;Ri((f[e>>2]|0)-(f[d>>2]|0)|0,f[(f[Z>>2]|0)+44>>2]|0)|0;c=f[(f[Z>>2]|0)+44>>2]|0;d=f[d>>2]|0;aa=c+16|0;a=f[aa+4>>2]|0;if(!((a|0)>0|(a|0)==0&(f[aa>>2]|0)>>>0>0)){aa=(f[e>>2]|0)-d|0;f[Y>>2]=f[c+4>>2];f[X>>2]=f[Y>>2];vf(c,X,d,d+aa|0)|0;c=f[(f[Z>>2]|0)+44>>2]|0}aa=(f[F>>2]|0)-(f[W>>2]|0)|0;g=(aa|0)/12|0;Ri(g,c)|0;if(aa|0){c=0;d=0;while(1){aa=f[W>>2]|0;e=aa+(c*12|0)+4|0;Ri((f[e>>2]|0)-d|0,f[(f[Z>>2]|0)+44>>2]|0)|0;Ri((f[e>>2]|0)-(f[aa+(c*12|0)>>2]|0)|0,f[(f[Z>>2]|0)+44>>2]|0)|0;c=c+1|0;if(c>>>0>=g>>>0)break;else d=f[e>>2]|0}tj(f[(f[Z>>2]|0)+44>>2]|0,g<<1,0,0)|0;d=0;do{c=f[(f[Z>>2]|0)+44>>2]|0;e=b[(f[W>>2]|0)+(d*12|0)+8>>0]&3;aa=c+16|0;Y=f[aa+4>>2]|0;if((Y|0)>0|(Y|0)==0&(f[aa>>2]|0)>>>0>0){a=f[c+12>>2]|0;aa=a+4|0;Y=f[aa>>2]|0;X=Y>>>3;Y=Y&7;V=(f[a>>2]|0)+X|0;b[V>>0]=(h[V>>0]|0)&(1<>2]|0)+X|0;b[X>>0]=h[X>>0]|0|(e&1)<>2]|0)+1|0;f[aa>>2]=X;Y=X>>>3;X=X&7;V=(f[a>>2]|0)+Y|0;b[V>>0]=(h[V>>0]|0)&(1<>2]|0)+Y|0;b[Y>>0]=h[Y>>0]|0|e>>>1<>2]=(f[aa>>2]|0)+1}d=d+1|0}while(d>>>0>>0);Bi(f[(f[Z>>2]|0)+44>>2]|0)}g=(f[D>>2]|0)-(f[N>>2]|0)>>2;Ri(g,f[(f[Z>>2]|0)+44>>2]|0)|0;if(!g)e=1;else{c=f[N>>2]|0;d=0;e=0;do{Ri((f[c+(d<<2)>>2]|0)-e|0,f[(f[Z>>2]|0)+44>>2]|0)|0;c=f[N>>2]|0;e=f[c+(d<<2)>>2]|0;d=d+1|0}while(d>>>0>>0);e=1}}c=f[_>>2]|0;if(c|0){d=f[E>>2]|0;if((d|0)!=(c|0))f[E>>2]=d+(~((d+-4-c|0)>>>2)<<2);Lq(c)}aa=e;u=$;return aa|0}function bb(a,c){a=a|0;c=c|0;var d=0,e=0,g=0,h=0,i=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,v=0,w=0,x=0,y=0,z=0,A=0,B=0,C=0,D=0,E=0,F=0,G=0,H=0,I=0,J=0,K=0,L=0,M=0,N=0,O=0,P=0,Q=0,R=0,S=0,T=0,U=0,V=0,W=0,X=0,Y=0,Z=0,_=0,$=0,aa=0,ba=0,ca=0,da=0,ea=0,fa=0,ga=0,ha=0,ia=0,ja=0,ka=0,la=0,ma=0,na=0,oa=0;oa=u;u=u+32|0;ka=oa+8|0;ma=oa;ja=oa+4|0;la=a+16|0;e=f[la>>2]|0;ia=a+20|0;d=f[ia>>2]|0;if((d|0)==(e|0))d=e;else{d=d+(~((d+-4-e|0)>>>2)<<2)|0;f[ia>>2]=d}ba=a+24|0;if((d|0)==(f[ba>>2]|0)){Bj(la,c);e=f[la>>2]|0;g=f[ia>>2]|0}else{f[d>>2]=f[c>>2];g=d+4|0;f[ia>>2]=g}d=f[a+8>>2]|0;d=(f[d+88>>2]|0)-(f[d+84>>2]|0)|0;aa=(d|0)/12|0;if((e|0)==(g|0)){u=oa;return 1}$=a+28|0;I=(d|0)>0;L=a+176|0;H=a+12|0;B=a+76|0;G=a+80|0;R=a+72|0;Z=a+208|0;_=a+328|0;y=a+152|0;s=a+84|0;P=a+332|0;x=a+296|0;t=a+308|0;Q=a+320|0;N=a+336|0;w=a+348|0;M=a+340|0;C=a+124|0;D=a+120|0;X=ka+8|0;U=ka+4|0;z=a+112|0;E=a+116|0;Y=a+108|0;V=ka+8|0;S=ka+4|0;W=ka+8|0;T=ka+4|0;O=a+180|0;v=a+140|0;A=a+168|0;F=a+172|0;K=a+164|0;J=a+120|0;d=g;do{e=f[d+-4>>2]|0;f[c>>2]=e;a:do if((e|0)>=0?(r=(e>>>0)/3|0,ca=f[$>>2]|0,(f[ca+(r>>>5<<2)>>2]&1<<(r&31)|0)==0):0){if(I){e=ca;d=0;while(1){r=d+1|0;f[L>>2]=(f[L>>2]|0)+1;p=f[c>>2]|0;p=(p|0)<0?-1073741824:(p>>>0)/3|0;d=e+(p>>>5<<2)|0;f[d>>2]=1<<(p&31)|f[d>>2];d=f[B>>2]|0;if((d|0)==(f[G>>2]|0))Bj(R,c);else{f[d>>2]=f[c>>2];f[B>>2]=d+4}f[_>>2]=f[c>>2];e=f[c>>2]|0;if((e|0)<0)o=-1073741824;else o=f[(f[f[H>>2]>>2]|0)+(e<<2)>>2]|0;n=(f[(f[y>>2]|0)+(o<<2)>>2]|0)!=-1;g=(f[s>>2]|0)+(o>>>5<<2)|0;h=1<<(o&31);d=f[g>>2]|0;do if(!(d&h)){f[g>>2]=d|h;if(n){e=f[c>>2]|0;na=38;break}f[P>>2]=(f[P>>2]|0)+1;e=f[_>>2]|0;d=e+1|0;do if((e|0)>=0){d=((d|0)%3|0|0)==0?e+-2|0:d;if(!((e>>>0)%3|0)){e=e+2|0;break}else{e=e+-1|0;break}}else d=e;while(0);g=f[x>>2]|0;q=f[t>>2]|0;p=q+(f[g+(d<<2)>>2]<<2)|0;d=f[p>>2]|0;f[p>>2]=d+-1;g=q+(f[g+(e<<2)>>2]<<2)|0;f[g>>2]=(f[g>>2]|0)+-1;g=f[Q>>2]|0;if((g|0)!=-1){e=f[N>>2]|0;if((d|0)<(e|0))d=e;else{q=f[M>>2]|0;d=(d|0)>(q|0)?q:d}i=d-e|0;h=f[w>>2]|0;d=f[5940+(g<<2)>>2]|0;f[ka>>2]=d;g=h+(i*12|0)+4|0;e=f[g>>2]|0;if(e>>>0<(f[h+(i*12|0)+8>>2]|0)>>>0){f[e>>2]=d;f[g>>2]=e+4}else Bj(h+(i*12|0)|0,ka)}f[Q>>2]=0;d=f[c>>2]|0;e=d+1|0;if((d|0)>=0){d=((e|0)%3|0|0)==0?d+-2|0:e;if((d|0)>=0)d=f[(f[(f[H>>2]|0)+12>>2]|0)+(d<<2)>>2]|0}f[c>>2]=d}else na=38;while(0);if((na|0)==38){na=0;m=(e|0)<0;j=e+1|0;if(!m){d=((j|0)%3|0|0)==0?e+-2|0:j;if((d|0)<0)g=d;else g=f[(f[(f[H>>2]|0)+12>>2]|0)+(d<<2)>>2]|0;f[ma>>2]=g;d=(((e>>>0)%3|0|0)==0?2:-1)+e|0;if((d|0)>=0)d=f[(f[(f[H>>2]|0)+12>>2]|0)+(d<<2)>>2]|0;i=(g|0)<0;l=i?-1073741824:(g>>>0)/3|0;h=(d|0)<0;k=h?-1073741824:(d>>>0)/3|0;g=((j|0)%3|0|0)==0?e+-2|0:j;if((g|0)<0)q=h;else{q=h;g=f[(f[(f[H>>2]|0)+12>>2]|0)+(g<<2)>>2]|0}}else{f[ma>>2]=e;q=1;i=1;d=e;k=-1073741824;l=-1073741824;g=e}if((g|0)!=-1073741824?(j=(g|0)<0?-1073741824:(g>>>0)/3|0,da=f[$>>2]|0,(f[da+(j>>>5<<2)>>2]&1<<(j&31)|0)==0):0){if(!m){e=(((e>>>0)%3|0|0)==0?2:-1)+e|0;if((e|0)>=0)e=f[(f[(f[H>>2]|0)+12>>2]|0)+(e<<2)>>2]|0}if((e|0)!=-1073741824?(m=(e|0)<0?-1073741824:(e>>>0)/3|0,(f[da+(m>>>5<<2)>>2]&1<<(m&31)|0)==0):0){na=115;break}b:do if(!q){j=f[L>>2]|0;g=f[C>>2]|0;if(!g)break;h=g+-1|0;e=(h&g|0)==0;if(e)i=h&k;else i=(k>>>0)%(g>>>0)|0;d=f[(f[D>>2]|0)+(i<<2)>>2]|0;if(!d)break;if(e)do{d=f[d>>2]|0;if(!d)break b;if((f[d+4>>2]&h|0)!=(i|0))break b}while((f[d+8>>2]|0)!=(k|0));else do{d=f[d>>2]|0;if(!d)break b;if((((f[d+4>>2]|0)>>>0)%(g>>>0)|0|0)!=(i|0))break b}while((f[d+8>>2]|0)!=(k|0));d=f[d+12>>2]|0;if((d|0)==-1)break;f[ka>>2]=d;f[S>>2]=j;b[V>>0]=0;d=f[z>>2]|0;if((d|0)==(f[E>>2]|0))ej(Y,ka);else{f[d>>2]=f[ka>>2];f[d+4>>2]=f[ka+4>>2];f[d+8>>2]=f[ka+8>>2];f[z>>2]=(f[z>>2]|0)+12}}while(0);Oc(Z,3);d=f[ma>>2]|0}else{c:do if(!i?(ea=f[L>>2]|0,fa=f[C>>2]|0,(fa|0)!=0):0){i=fa+-1|0;h=(i&fa|0)==0;if(h)j=i&l;else j=(l>>>0)%(fa>>>0)|0;g=f[(f[D>>2]|0)+(j<<2)>>2]|0;if(!g)break;if(h)do{g=f[g>>2]|0;if(!g)break c;if((f[g+4>>2]&i|0)!=(j|0))break c}while((f[g+8>>2]|0)!=(l|0));else do{g=f[g>>2]|0;if(!g)break c;if((((f[g+4>>2]|0)>>>0)%(fa>>>0)|0|0)!=(j|0))break c}while((f[g+8>>2]|0)!=(l|0));g=f[g+12>>2]|0;if((g|0)==-1)break;f[ka>>2]=g;f[U>>2]=ea;b[X>>0]=1;g=f[z>>2]|0;if((g|0)==(f[E>>2]|0)){ej(Y,ka);e=f[c>>2]|0}else{f[g>>2]=f[ka>>2];f[g+4>>2]=f[ka+4>>2];f[g+8>>2]=f[ka+8>>2];f[z>>2]=(f[z>>2]|0)+12}}while(0);if((e|0)>=0){e=(((e>>>0)%3|0|0)==0?2:-1)+e|0;if((e|0)>=0)e=f[(f[(f[H>>2]|0)+12>>2]|0)+(e<<2)>>2]|0}if((e|0)==-1073741824){na=71;break}p=(e|0)<0?-1073741824:(e>>>0)/3|0;if(f[(f[$>>2]|0)+(p>>>5<<2)>>2]&1<<(p&31)|0){na=71;break}Oc(Z,5)}f[c>>2]=d}if((r|0)>=(aa|0))break a;e=f[$>>2]|0;d=r}do if((na|0)==71){na=0;d:do if(!q?(ga=f[L>>2]|0,ha=f[C>>2]|0,ha|0):0){g=ha+-1|0;e=(g&ha|0)==0;if(e)h=g&k;else h=(k>>>0)%(ha>>>0)|0;d=f[(f[D>>2]|0)+(h<<2)>>2]|0;if(d|0){if(e)do{d=f[d>>2]|0;if(!d)break d;if((f[d+4>>2]&g|0)!=(h|0))break d}while((f[d+8>>2]|0)!=(k|0));else do{d=f[d>>2]|0;if(!d)break d;if((((f[d+4>>2]|0)>>>0)%(ha>>>0)|0|0)!=(h|0))break d}while((f[d+8>>2]|0)!=(k|0));d=f[d+12>>2]|0;if((d|0)!=-1){f[ka>>2]=d;f[T>>2]=ga;b[W>>0]=0;d=f[z>>2]|0;if((d|0)==(f[E>>2]|0))ej(Y,ka);else{f[d>>2]=f[ka>>2];f[d+4>>2]=f[ka+4>>2];f[d+8>>2]=f[ka+8>>2];f[z>>2]=(f[z>>2]|0)+12}}}}while(0);Oc(Z,7);f[ia>>2]=(f[ia>>2]|0)+-4}else if((na|0)==115){na=0;Oc(Z,1);f[O>>2]=(f[O>>2]|0)+1;if(n?(r=f[(f[y>>2]|0)+(o<<2)>>2]|0,(1<<(r&31)&f[(f[v>>2]|0)+(r>>>5<<2)>>2]|0)==0):0){f[ja>>2]=f[c>>2];f[ka>>2]=f[ja>>2];uf(a,ka,0)|0;e=f[L>>2]|0;f[ka>>2]=e;g=f[A>>2]|0;if(g>>>0<(f[F>>2]|0)>>>0){f[g>>2]=e;f[A>>2]=g+4}else Bj(K,ka)}r=f[L>>2]|0;f[ka>>2]=p;e=tf(J,ka)|0;f[e>>2]=r;e=f[ia>>2]|0;f[e+-4>>2]=d;if((e|0)==(f[ba>>2]|0)){Bj(la,ma);break}else{f[e>>2]=f[ma>>2];f[ia>>2]=e+4;break}}while(0)}}else na=11;while(0);if((na|0)==11){na=0;f[ia>>2]=d+-4}d=f[ia>>2]|0}while((f[la>>2]|0)!=(d|0));u=oa;return 1}function cb(a,c,d){a=a|0;c=c|0;d=d|0;var e=Ka,g=0,i=0,j=0;if(!d){d=0;return d|0}switch(f[a+28>>2]|0){case 9:{c=f[c>>2]|0;switch(b[a+24>>0]|0){case 1:{g=a+48|0;i=f[g>>2]|0;g=f[g+4>>2]|0;j=a+40|0;a=(Do(En(f[j>>2]|0,f[j+4>>2]|0,c|0,((c|0)<0)<<31>>31|0)|0,I|0,i|0,g|0)|0)+(f[f[a>>2]>>2]|0)|0;b[s>>0]=b[a>>0];b[s+1>>0]=b[a+1>>0];b[s+2>>0]=b[a+2>>0];b[s+3>>0]=b[a+3>>0];e=$(n[s>>2]);break}case 2:{j=a+48|0;i=f[j>>2]|0;j=f[j+4>>2]|0;g=a+40|0;j=(Do(En(f[g>>2]|0,f[g+4>>2]|0,c|0,((c|0)<0)<<31>>31|0)|0,I|0,i|0,j|0)|0)+(f[f[a>>2]>>2]|0)|0;e=(f[s>>2]=h[j>>0]|h[j+1>>0]<<8|h[j+2>>0]<<16|h[j+3>>0]<<24,$(n[s>>2]));break}case 3:{j=a+48|0;i=f[j>>2]|0;j=f[j+4>>2]|0;g=a+40|0;j=(Do(En(f[g>>2]|0,f[g+4>>2]|0,c|0,((c|0)<0)<<31>>31|0)|0,I|0,i|0,j|0)|0)+(f[f[a>>2]>>2]|0)|0;b[s>>0]=b[j>>0];b[s+1>>0]=b[j+1>>0];b[s+2>>0]=b[j+2>>0];b[s+3>>0]=b[j+3>>0];e=$(n[s>>2]);break}case 4:{j=a+48|0;i=f[j>>2]|0;j=f[j+4>>2]|0;g=a+40|0;j=(Do(En(f[g>>2]|0,f[g+4>>2]|0,c|0,((c|0)<0)<<31>>31|0)|0,I|0,i|0,j|0)|0)+(f[f[a>>2]>>2]|0)|0;b[s>>0]=b[j>>0];b[s+1>>0]=b[j+1>>0];b[s+2>>0]=b[j+2>>0];b[s+3>>0]=b[j+3>>0];e=$(n[s>>2]);break}default:{j=0;return j|0}}i=+K(+e)>=1.0?(+e>0.0?~~+Y(+J(+e/4294967296.0),4294967295.0)>>>0:~~+W((+e-+(~~+e>>>0))/4294967296.0)>>>0):0;j=d;f[j>>2]=~~+e>>>0;f[j+4>>2]=i;j=1;return j|0}case 2:{c=f[c>>2]|0;switch(b[a+24>>0]|0){case 1:{j=a+48|0;i=f[j>>2]|0;j=f[j+4>>2]|0;g=a+40|0;c=Do(En(f[g>>2]|0,f[g+4>>2]|0,c|0,((c|0)<0)<<31>>31|0)|0,I|0,i|0,j|0)|0;c=h[(f[f[a>>2]>>2]|0)+c>>0]|0;a=0;break}case 2:{j=a+48|0;i=f[j>>2]|0;j=f[j+4>>2]|0;g=a+40|0;c=(Do(En(f[g>>2]|0,f[g+4>>2]|0,c|0,((c|0)<0)<<31>>31|0)|0,I|0,i|0,j|0)|0)+(f[f[a>>2]>>2]|0)|0;c=(h[c>>0]|h[c+1>>0]<<8)&255;a=0;break}case 3:{j=a+48|0;i=f[j>>2]|0;j=f[j+4>>2]|0;g=a+40|0;c=Do(En(f[g>>2]|0,f[g+4>>2]|0,c|0,((c|0)<0)<<31>>31|0)|0,I|0,i|0,j|0)|0;c=h[(f[f[a>>2]>>2]|0)+c>>0]|0;a=0;break}case 4:{j=a+48|0;i=f[j>>2]|0;j=f[j+4>>2]|0;g=a+40|0;c=(Do(En(f[g>>2]|0,f[g+4>>2]|0,c|0,((c|0)<0)<<31>>31|0)|0,I|0,i|0,j|0)|0)+(f[f[a>>2]>>2]|0)|0;c=(h[c>>0]|h[c+1>>0]<<8|h[c+2>>0]<<16|h[c+3>>0]<<24)&255;a=0;break}default:{j=0;return j|0}}j=d;f[j>>2]=c;f[j+4>>2]=a;j=1;return j|0}case 1:{c=f[c>>2]|0;switch(b[a+24>>0]|0){case 1:{j=a+48|0;i=f[j>>2]|0;j=f[j+4>>2]|0;g=a+40|0;c=Do(En(f[g>>2]|0,f[g+4>>2]|0,c|0,((c|0)<0)<<31>>31|0)|0,I|0,i|0,j|0)|0;c=b[(f[f[a>>2]>>2]|0)+c>>0]|0;break}case 2:{j=a+48|0;i=f[j>>2]|0;j=f[j+4>>2]|0;g=a+40|0;c=(Do(En(f[g>>2]|0,f[g+4>>2]|0,c|0,((c|0)<0)<<31>>31|0)|0,I|0,i|0,j|0)|0)+(f[f[a>>2]>>2]|0)|0;c=(h[c>>0]|h[c+1>>0]<<8)&255;break}case 3:{j=a+48|0;i=f[j>>2]|0;j=f[j+4>>2]|0;g=a+40|0;c=Do(En(f[g>>2]|0,f[g+4>>2]|0,c|0,((c|0)<0)<<31>>31|0)|0,I|0,i|0,j|0)|0;c=b[(f[f[a>>2]>>2]|0)+c>>0]|0;break}case 4:{j=a+48|0;i=f[j>>2]|0;j=f[j+4>>2]|0;g=a+40|0;c=(Do(En(f[g>>2]|0,f[g+4>>2]|0,c|0,((c|0)<0)<<31>>31|0)|0,I|0,i|0,j|0)|0)+(f[f[a>>2]>>2]|0)|0;c=(h[c>>0]|h[c+1>>0]<<8|h[c+2>>0]<<16|h[c+3>>0]<<24)&255;break}default:{j=0;return j|0}}i=c<<24>>24;j=d;f[j>>2]=i;f[j+4>>2]=((i|0)<0)<<31>>31;j=1;return j|0}case 4:{c=f[c>>2]|0;switch(b[a+24>>0]|0){case 1:{j=a+48|0;i=f[j>>2]|0;j=f[j+4>>2]|0;g=a+40|0;c=(Do(En(f[g>>2]|0,f[g+4>>2]|0,c|0,((c|0)<0)<<31>>31|0)|0,I|0,i|0,j|0)|0)+(f[f[a>>2]>>2]|0)|0;c=(h[c>>0]|h[c+1>>0]<<8)&65535;a=0;break}case 2:{j=a+48|0;i=f[j>>2]|0;j=f[j+4>>2]|0;g=a+40|0;c=(Do(En(f[g>>2]|0,f[g+4>>2]|0,c|0,((c|0)<0)<<31>>31|0)|0,I|0,i|0,j|0)|0)+(f[f[a>>2]>>2]|0)|0;c=(h[c>>0]|h[c+1>>0]<<8|h[c+2>>0]<<16|h[c+3>>0]<<24)&65535;a=0;break}case 3:{j=a+48|0;i=f[j>>2]|0;j=f[j+4>>2]|0;g=a+40|0;c=(Do(En(f[g>>2]|0,f[g+4>>2]|0,c|0,((c|0)<0)<<31>>31|0)|0,I|0,i|0,j|0)|0)+(f[f[a>>2]>>2]|0)|0;c=(h[c>>0]|h[c+1>>0]<<8)&65535;a=0;break}case 4:{j=a+48|0;i=f[j>>2]|0;j=f[j+4>>2]|0;g=a+40|0;c=(Do(En(f[g>>2]|0,f[g+4>>2]|0,c|0,((c|0)<0)<<31>>31|0)|0,I|0,i|0,j|0)|0)+(f[f[a>>2]>>2]|0)|0;c=(h[c>>0]|h[c+1>>0]<<8|h[c+2>>0]<<16|h[c+3>>0]<<24)&65535;a=0;break}default:{j=0;return j|0}}j=d;f[j>>2]=c;f[j+4>>2]=a;j=1;return j|0}case 3:{c=f[c>>2]|0;switch(b[a+24>>0]|0){case 1:{j=a+48|0;i=f[j>>2]|0;j=f[j+4>>2]|0;g=a+40|0;a=(Do(En(f[g>>2]|0,f[g+4>>2]|0,c|0,((c|0)<0)<<31>>31|0)|0,I|0,i|0,j|0)|0)+(f[f[a>>2]>>2]|0)|0;a=(h[a>>0]|h[a+1>>0]<<8)<<16>>16;c=a;a=((a|0)<0)<<31>>31;break}case 2:{j=a+48|0;i=f[j>>2]|0;j=f[j+4>>2]|0;g=a+40|0;a=(Do(En(f[g>>2]|0,f[g+4>>2]|0,c|0,((c|0)<0)<<31>>31|0)|0,I|0,i|0,j|0)|0)+(f[f[a>>2]>>2]|0)|0;a=((h[a>>0]|h[a+1>>0]<<8|h[a+2>>0]<<16|h[a+3>>0]<<24)&65535)<<16>>16;c=a;a=((a|0)<0)<<31>>31;break}case 3:{j=a+48|0;i=f[j>>2]|0;j=f[j+4>>2]|0;g=a+40|0;a=(Do(En(f[g>>2]|0,f[g+4>>2]|0,c|0,((c|0)<0)<<31>>31|0)|0,I|0,i|0,j|0)|0)+(f[f[a>>2]>>2]|0)|0;a=(h[a>>0]|h[a+1>>0]<<8)<<16>>16;c=a;a=((a|0)<0)<<31>>31;break}case 4:{j=a+48|0;i=f[j>>2]|0;j=f[j+4>>2]|0;g=a+40|0;c=(Do(En(f[g>>2]|0,f[g+4>>2]|0,c|0,((c|0)<0)<<31>>31|0)|0,I|0,i|0,j|0)|0)+(f[f[a>>2]>>2]|0)|0;a=c;c=c+4|0;c=Ln(Zn(h[a>>0]|h[a+1>>0]<<8|h[a+2>>0]<<16|h[a+3>>0]<<24|0,h[c>>0]|h[c+1>>0]<<8|h[c+2>>0]<<16|h[c+3>>0]<<24|0,48)|0,I|0,48)|0;a=I;break}default:{j=0;return j|0}}j=d;f[j>>2]=c;f[j+4>>2]=a;j=1;return j|0}case 6:{c=f[c>>2]|0;switch(b[a+24>>0]|0){case 1:{j=a+48|0;i=f[j>>2]|0;j=f[j+4>>2]|0;g=a+40|0;c=(Do(En(f[g>>2]|0,f[g+4>>2]|0,c|0,((c|0)<0)<<31>>31|0)|0,I|0,i|0,j|0)|0)+(f[f[a>>2]>>2]|0)|0;c=h[c>>0]|h[c+1>>0]<<8|h[c+2>>0]<<16|h[c+3>>0]<<24;a=0;break}case 2:{j=a+48|0;i=f[j>>2]|0;j=f[j+4>>2]|0;g=a+40|0;c=(Do(En(f[g>>2]|0,f[g+4>>2]|0,c|0,((c|0)<0)<<31>>31|0)|0,I|0,i|0,j|0)|0)+(f[f[a>>2]>>2]|0)|0;c=h[c>>0]|h[c+1>>0]<<8|h[c+2>>0]<<16|h[c+3>>0]<<24;a=0;break}case 3:{j=a+48|0;i=f[j>>2]|0;j=f[j+4>>2]|0;g=a+40|0;c=(Do(En(f[g>>2]|0,f[g+4>>2]|0,c|0,((c|0)<0)<<31>>31|0)|0,I|0,i|0,j|0)|0)+(f[f[a>>2]>>2]|0)|0;c=h[c>>0]|h[c+1>>0]<<8|h[c+2>>0]<<16|h[c+3>>0]<<24;a=0;break}case 4:{j=a+48|0;i=f[j>>2]|0;j=f[j+4>>2]|0;g=a+40|0;c=(Do(En(f[g>>2]|0,f[g+4>>2]|0,c|0,((c|0)<0)<<31>>31|0)|0,I|0,i|0,j|0)|0)+(f[f[a>>2]>>2]|0)|0;c=h[c>>0]|h[c+1>>0]<<8|h[c+2>>0]<<16|h[c+3>>0]<<24;a=0;break}default:{j=0;return j|0}}j=d;f[j>>2]=c;f[j+4>>2]=a;j=1;return j|0}case 5:{c=f[c>>2]|0;switch(b[a+24>>0]|0){case 1:{j=a+48|0;i=f[j>>2]|0;j=f[j+4>>2]|0;g=a+40|0;a=(Do(En(f[g>>2]|0,f[g+4>>2]|0,c|0,((c|0)<0)<<31>>31|0)|0,I|0,i|0,j|0)|0)+(f[f[a>>2]>>2]|0)|0;a=h[a>>0]|h[a+1>>0]<<8|h[a+2>>0]<<16|h[a+3>>0]<<24;c=a;a=((a|0)<0)<<31>>31;break}case 2:{j=a+48|0;i=f[j>>2]|0;j=f[j+4>>2]|0;g=a+40|0;c=(Do(En(f[g>>2]|0,f[g+4>>2]|0,c|0,((c|0)<0)<<31>>31|0)|0,I|0,i|0,j|0)|0)+(f[f[a>>2]>>2]|0)|0;c=Ln(0,h[c>>0]|h[c+1>>0]<<8|h[c+2>>0]<<16|h[c+3>>0]<<24|0,32)|0;a=I;break}case 3:{j=a+48|0;i=f[j>>2]|0;j=f[j+4>>2]|0;g=a+40|0;a=(Do(En(f[g>>2]|0,f[g+4>>2]|0,c|0,((c|0)<0)<<31>>31|0)|0,I|0,i|0,j|0)|0)+(f[f[a>>2]>>2]|0)|0;a=h[a>>0]|h[a+1>>0]<<8|h[a+2>>0]<<16|h[a+3>>0]<<24;c=a;a=((a|0)<0)<<31>>31;break}case 4:{j=a+48|0;i=f[j>>2]|0;j=f[j+4>>2]|0;g=a+40|0;a=(Do(En(f[g>>2]|0,f[g+4>>2]|0,c|0,((c|0)<0)<<31>>31|0)|0,I|0,i|0,j|0)|0)+(f[f[a>>2]>>2]|0)|0;a=h[a>>0]|h[a+1>>0]<<8|h[a+2>>0]<<16|h[a+3>>0]<<24;c=a;a=((a|0)<0)<<31>>31;break}default:{j=0;return j|0}}j=d;f[j>>2]=c;f[j+4>>2]=a;j=1;return j|0}default:{j=0;return j|0}}return 0}function db(a,c){a=a|0;c=c|0;var d=0,e=0,g=0,h=0,i=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,v=0,w=0,x=0,y=0,z=0,A=0,B=0,C=0,D=0,E=0,F=0,G=0,H=0,I=0,J=0,K=0,L=0,M=0,N=0,O=0,P=0,Q=0,R=0,S=0,T=0,U=0,V=0,W=0,X=0,Y=0,Z=0,_=0,$=0,aa=0,ba=0,ca=0,da=0,ea=0,fa=0,ga=0,ha=0,ia=0;ia=u;u=u+32|0;ea=ia+8|0;ga=ia;da=ia+4|0;fa=a+16|0;e=f[fa>>2]|0;ca=a+20|0;d=f[ca>>2]|0;if((d|0)==(e|0))d=e;else{d=d+(~((d+-4-e|0)>>>2)<<2)|0;f[ca>>2]=d}X=a+24|0;if((d|0)==(f[X>>2]|0)){Bj(fa,c);e=f[fa>>2]|0;g=f[ca>>2]|0}else{f[d>>2]=f[c>>2];g=d+4|0;f[ca>>2]=g}d=f[a+8>>2]|0;d=(f[d+88>>2]|0)-(f[d+84>>2]|0)|0;W=(d|0)/12|0;if((e|0)==(g|0)){u=ia;return 1}V=a+28|0;H=(d|0)>0;K=a+176|0;G=a+12|0;z=a+76|0;F=a+80|0;M=a+72|0;v=a+152|0;s=a+84|0;x=a+280|0;D=a+284|0;T=a+276|0;A=a+124|0;B=a+120|0;S=ea+8|0;P=ea+4|0;w=a+112|0;C=a+116|0;U=a+108|0;Q=ea+8|0;N=ea+4|0;R=ea+8|0;O=ea+4|0;L=a+180|0;t=a+140|0;y=a+168|0;E=a+172|0;J=a+164|0;I=a+120|0;d=g;do{e=f[d+-4>>2]|0;f[c>>2]=e;a:do if((e|0)>=0?(r=(e>>>0)/3|0,Y=f[V>>2]|0,(f[Y+(r>>>5<<2)>>2]&1<<(r&31)|0)==0):0){if(H){e=Y;d=0;while(1){r=d+1|0;f[K>>2]=(f[K>>2]|0)+1;p=f[c>>2]|0;p=(p|0)<0?-1073741824:(p>>>0)/3|0;d=e+(p>>>5<<2)|0;f[d>>2]=1<<(p&31)|f[d>>2];d=f[z>>2]|0;if((d|0)==(f[F>>2]|0))Bj(M,c);else{f[d>>2]=f[c>>2];f[z>>2]=d+4}e=f[c>>2]|0;if((e|0)<0)o=-1073741824;else o=f[(f[f[G>>2]>>2]|0)+(e<<2)>>2]|0;n=(f[(f[v>>2]|0)+(o<<2)>>2]|0)!=-1;g=(f[s>>2]|0)+(o>>>5<<2)|0;h=1<<(o&31);d=f[g>>2]|0;do if(!(d&h)){f[g>>2]=d|h;if(n){e=f[c>>2]|0;ha=30;break}f[ea>>2]=0;d=f[x>>2]|0;if((d|0)==(f[D>>2]|0))Bj(T,ea);else{f[d>>2]=0;f[x>>2]=d+4}d=f[c>>2]|0;e=d+1|0;if((d|0)>=0){d=((e|0)%3|0|0)==0?d+-2|0:e;if((d|0)>=0)d=f[(f[(f[G>>2]|0)+12>>2]|0)+(d<<2)>>2]|0}f[c>>2]=d}else ha=30;while(0);if((ha|0)==30){ha=0;m=(e|0)<0;j=e+1|0;if(!m){d=((j|0)%3|0|0)==0?e+-2|0:j;if((d|0)<0)g=d;else g=f[(f[(f[G>>2]|0)+12>>2]|0)+(d<<2)>>2]|0;f[ga>>2]=g;d=(((e>>>0)%3|0|0)==0?2:-1)+e|0;if((d|0)>=0)d=f[(f[(f[G>>2]|0)+12>>2]|0)+(d<<2)>>2]|0;i=(g|0)<0;l=i?-1073741824:(g>>>0)/3|0;h=(d|0)<0;k=h?-1073741824:(d>>>0)/3|0;g=((j|0)%3|0|0)==0?e+-2|0:j;if((g|0)<0)q=h;else{q=h;g=f[(f[(f[G>>2]|0)+12>>2]|0)+(g<<2)>>2]|0}}else{f[ga>>2]=e;q=1;i=1;d=e;k=-1073741824;l=-1073741824;g=e}if((g|0)!=-1073741824?(j=(g|0)<0?-1073741824:(g>>>0)/3|0,Z=f[V>>2]|0,(f[Z+(j>>>5<<2)>>2]&1<<(j&31)|0)==0):0){if(!m){e=(((e>>>0)%3|0|0)==0?2:-1)+e|0;if((e|0)>=0)e=f[(f[(f[G>>2]|0)+12>>2]|0)+(e<<2)>>2]|0}if((e|0)!=-1073741824?(m=(e|0)<0?-1073741824:(e>>>0)/3|0,(f[Z+(m>>>5<<2)>>2]&1<<(m&31)|0)==0):0){ha=116;break}b:do if(!q){j=f[K>>2]|0;g=f[A>>2]|0;if(!g)break;h=g+-1|0;e=(h&g|0)==0;if(e)i=h&k;else i=(k>>>0)%(g>>>0)|0;d=f[(f[B>>2]|0)+(i<<2)>>2]|0;if(!d)break;if(e)do{d=f[d>>2]|0;if(!d)break b;if((f[d+4>>2]&h|0)!=(i|0))break b}while((f[d+8>>2]|0)!=(k|0));else do{d=f[d>>2]|0;if(!d)break b;if((((f[d+4>>2]|0)>>>0)%(g>>>0)|0|0)!=(i|0))break b}while((f[d+8>>2]|0)!=(k|0));d=f[d+12>>2]|0;if((d|0)==-1)break;f[ea>>2]=d;f[N>>2]=j;b[Q>>0]=0;d=f[w>>2]|0;if((d|0)==(f[C>>2]|0))ej(U,ea);else{f[d>>2]=f[ea>>2];f[d+4>>2]=f[ea+4>>2];f[d+8>>2]=f[ea+8>>2];f[w>>2]=(f[w>>2]|0)+12}}while(0);f[ea>>2]=3;d=f[x>>2]|0;if((d|0)==(f[D>>2]|0))Bj(T,ea);else{f[d>>2]=3;f[x>>2]=d+4}d=f[ga>>2]|0}else{c:do if(!i?(_=f[K>>2]|0,$=f[A>>2]|0,($|0)!=0):0){i=$+-1|0;h=(i&$|0)==0;if(h)j=i&l;else j=(l>>>0)%($>>>0)|0;g=f[(f[B>>2]|0)+(j<<2)>>2]|0;if(!g)break;if(h)do{g=f[g>>2]|0;if(!g)break c;if((f[g+4>>2]&i|0)!=(j|0))break c}while((f[g+8>>2]|0)!=(l|0));else do{g=f[g>>2]|0;if(!g)break c;if((((f[g+4>>2]|0)>>>0)%($>>>0)|0|0)!=(j|0))break c}while((f[g+8>>2]|0)!=(l|0));g=f[g+12>>2]|0;if((g|0)==-1)break;f[ea>>2]=g;f[P>>2]=_;b[S>>0]=1;g=f[w>>2]|0;if((g|0)==(f[C>>2]|0)){ej(U,ea);e=f[c>>2]|0}else{f[g>>2]=f[ea>>2];f[g+4>>2]=f[ea+4>>2];f[g+8>>2]=f[ea+8>>2];f[w>>2]=(f[w>>2]|0)+12}}while(0);if((e|0)>=0){e=(((e>>>0)%3|0|0)==0?2:-1)+e|0;if((e|0)>=0)e=f[(f[(f[G>>2]|0)+12>>2]|0)+(e<<2)>>2]|0}if((e|0)==-1073741824){ha=63;break}p=(e|0)<0?-1073741824:(e>>>0)/3|0;if(f[(f[V>>2]|0)+(p>>>5<<2)>>2]&1<<(p&31)|0){ha=63;break}f[ea>>2]=5;e=f[x>>2]|0;if((e|0)==(f[D>>2]|0))Bj(T,ea);else{f[e>>2]=5;f[x>>2]=e+4}}f[c>>2]=d}if((r|0)>=(W|0))break a;e=f[V>>2]|0;d=r}do if((ha|0)==63){ha=0;d:do if(!q?(aa=f[K>>2]|0,ba=f[A>>2]|0,ba|0):0){g=ba+-1|0;e=(g&ba|0)==0;if(e)h=g&k;else h=(k>>>0)%(ba>>>0)|0;d=f[(f[B>>2]|0)+(h<<2)>>2]|0;if(d|0){if(e)do{d=f[d>>2]|0;if(!d)break d;if((f[d+4>>2]&g|0)!=(h|0))break d}while((f[d+8>>2]|0)!=(k|0));else do{d=f[d>>2]|0;if(!d)break d;if((((f[d+4>>2]|0)>>>0)%(ba>>>0)|0|0)!=(h|0))break d}while((f[d+8>>2]|0)!=(k|0));d=f[d+12>>2]|0;if((d|0)!=-1){f[ea>>2]=d;f[O>>2]=aa;b[R>>0]=0;d=f[w>>2]|0;if((d|0)==(f[C>>2]|0))ej(U,ea);else{f[d>>2]=f[ea>>2];f[d+4>>2]=f[ea+4>>2];f[d+8>>2]=f[ea+8>>2];f[w>>2]=(f[w>>2]|0)+12}}}}while(0);f[ea>>2]=7;d=f[x>>2]|0;if((d|0)==(f[D>>2]|0))Bj(T,ea);else{f[d>>2]=7;f[x>>2]=d+4}f[ca>>2]=(f[ca>>2]|0)+-4}else if((ha|0)==116){ha=0;f[ea>>2]=1;e=f[x>>2]|0;if((e|0)==(f[D>>2]|0))Bj(T,ea);else{f[e>>2]=1;f[x>>2]=e+4}f[L>>2]=(f[L>>2]|0)+1;if(n?(r=f[(f[v>>2]|0)+(o<<2)>>2]|0,(1<<(r&31)&f[(f[t>>2]|0)+(r>>>5<<2)>>2]|0)==0):0){f[da>>2]=f[c>>2];f[ea>>2]=f[da>>2];uf(a,ea,0)|0;e=f[K>>2]|0;f[ea>>2]=e;g=f[y>>2]|0;if(g>>>0<(f[E>>2]|0)>>>0){f[g>>2]=e;f[y>>2]=g+4}else Bj(J,ea)}r=f[K>>2]|0;f[ea>>2]=p;e=tf(I,ea)|0;f[e>>2]=r;e=f[ca>>2]|0;f[e+-4>>2]=d;if((e|0)==(f[X>>2]|0)){Bj(fa,ga);break}else{f[e>>2]=f[ga>>2];f[ca>>2]=e+4;break}}while(0)}}else ha=11;while(0);if((ha|0)==11){ha=0;f[ca>>2]=d+-4}d=f[ca>>2]|0}while((f[fa>>2]|0)!=(d|0));u=ia;return 1}function eb(a,c,d,e,g,i){a=a|0;c=c|0;d=d|0;e=e|0;g=g|0;i=i|0;var j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,v=0,w=0,x=0,y=0,z=0,A=0,B=0,C=0,D=0,E=0,F=0,G=0,H=0,I=0,J=0,K=0,L=0,M=0,N=0,O=0,P=0,Q=0,R=0,S=0,T=0,U=0,V=0,W=0,Y=0,Z=0,_=0,$=0,aa=0,ba=0,ca=0,da=0;da=u;u=u+112|0;T=da+100|0;R=da+96|0;ca=da+48|0;W=da+32|0;V=da+104|0;U=da+8|0;Q=da+4|0;S=da;O=f[a+32>>2]|0;P=f[a+36>>2]|0;i=ca;e=i+48|0;do{f[i>>2]=0;i=i+4|0}while((i|0)<(e|0));if(!g){i=0;e=0}else{jj(ca,g);i=f[ca+12>>2]|0;e=f[ca+16>>2]|0}j=ca+16|0;k=e-i>>2;if(k>>>0>=g>>>0){if(k>>>0>g>>>0?(l=i+(g<<2)|0,(e|0)!=(l|0)):0)f[j>>2]=e+(~((e+-4-l|0)>>>2)<<2)}else jj(ca+12|0,g-k|0);k=ca+24|0;j=ca+28|0;e=f[j>>2]|0;i=f[k>>2]|0;l=e-i>>2;if(l>>>0>=g>>>0){if(l>>>0>g>>>0?(m=i+(g<<2)|0,(e|0)!=(m|0)):0)f[j>>2]=e+(~((e+-4-m|0)>>>2)<<2)}else jj(k,g-l|0);k=ca+36|0;j=ca+40|0;e=f[j>>2]|0;i=f[k>>2]|0;l=e-i>>2;if(l>>>0>=g>>>0){if(l>>>0>g>>>0?(n=i+(g<<2)|0,(e|0)!=(n|0)):0)f[j>>2]=e+(~((e+-4-n|0)>>>2)<<2)}else jj(k,g-l|0);ml(W,g);J=a+40|0;j=f[J>>2]|0;e=f[j+4>>2]|0;i=f[j>>2]|0;k=e-i|0;a:do if((k|0)>4){I=O+64|0;C=O+28|0;G=(g|0)>0;H=U+4|0;L=U+8|0;M=U+12|0;N=a+8|0;D=U+12|0;E=U+16|0;F=W+4|0;K=V+1|0;B=g<<2;v=k>>2;while(1){A=v+-1|0;if(e-i>>2>>>0<=A>>>0){yp(j);i=f[j>>2]|0}p=f[i+(A<<2)>>2]|0;s=p+((p|0)<0?0:((p>>>0)%3|0|0)==0?2:-1)|0;r=s>>>5;t=1<<(s&31);q=(s|0)<0;i=p;o=1;e=0;b:while(1){do{if((i|0)<=-1){z=e;break b}j=f[ca+(e*12|0)>>2]|0;if(((f[(f[O>>2]|0)+(i>>>5<<2)>>2]&1<<(i&31)|0)==0?(aa=f[(f[(f[I>>2]|0)+12>>2]|0)+(i<<2)>>2]|0,(aa|0)>=0):0)?($=f[C>>2]|0,z=f[P>>2]|0,Z=f[z+(f[$+(aa<<2)>>2]<<2)>>2]|0,_=aa+1|0,_=f[z+(f[$+((((_|0)%3|0|0)==0?aa+-2|0:_)<<2)>>2]<<2)>>2]|0,$=f[z+(f[$+((((aa>>>0)%3|0|0)==0?2:-1)+aa<<2)>>2]<<2)>>2]|0,(Z|0)<(A|0)&(_|0)<(A|0)&($|0)<(A|0)):0){l=X(Z,g)|0;m=X(_,g)|0;n=X($,g)|0;if(G){k=0;do{f[j+(k<<2)>>2]=(f[c+(k+n<<2)>>2]|0)+(f[c+(k+m<<2)>>2]|0)-(f[c+(k+l<<2)>>2]|0);k=k+1|0}while((k|0)!=(g|0))}e=e+1|0;if((e|0)==4){z=4;break b}}do if(o){j=i+1|0;i=((j|0)%3|0|0)==0?i+-2|0:j;j=f[O>>2]|0;if(!(f[j+(i>>>5<<2)>>2]&1<<(i&31))){if((i|0)>=0){i=f[(f[(f[I>>2]|0)+12>>2]|0)+(i<<2)>>2]|0;k=i+1|0;if((i|0)>=0)i=((k|0)%3|0|0)==0?i+-2|0:k}}else i=-1073741824}else{i=(((i>>>0)%3|0|0)==0?2:-1)+i|0;j=f[O>>2]|0;if(!(f[j+(i>>>5<<2)>>2]&1<<(i&31))){if((i|0)>=0){i=f[(f[(f[I>>2]|0)+12>>2]|0)+(i<<2)>>2]|0;if((i|0)>=0)if(!((i>>>0)%3|0)){i=i+2|0;break}else{i=i+-1|0;break}}}else i=-1073741824}while(0);if((i|0)==(p|0)){z=e;break b}}while(!(o&(i|0)<0));i=(t&f[j+(r<<2)>>2]|0)!=0;if(i|q){i=i?-1073741824:s;o=0;continue}i=f[(f[(f[I>>2]|0)+12>>2]|0)+(s<<2)>>2]|0;if((i|0)<0){o=0;continue}if(!((i>>>0)%3|0)){i=i+2|0;o=0;continue}else{i=i+-1|0;o=0;continue}}y=X(A,g)|0;f[U>>2]=2147483647;b[H>>0]=0;f[L>>2]=0;f[L+4>>2]=0;f[L+8>>2]=0;f[L+12>>2]=0;j=X(v+-2|0,g)|0;if(G){i=0;e=0;do{x=(f[c+(e+y<<2)>>2]|0)-(f[c+(e+j<<2)>>2]|0)|0;i=((x|0)>-1?x:0-x|0)+i|0;e=e+1|0}while((e|0)!=(g|0))}else i=0;f[U>>2]=i;b[H>>0]=0;f[L>>2]=0;x=c+(j<<2)|0;rg(M,x,x+(g<<2)|0);if((z|0)>=1){p=V+z|0;v=p+-1|0;r=(v|0)==(V|0);t=p+-2|0;q=K>>>0>>0;o=~z;o=z+2+((o|0)>-2?o:-2)|0;s=v>>>0>V>>>0;w=0;x=1;while(1){w=w+1|0;Xj(V|0,1,o|0)|0;Xj(V|0,0,w|0)|0;c:while(1){if(G){Xj(f[W>>2]|0,0,B|0)|0;k=f[W>>2]|0;i=0;l=0;do{if(!(b[V+l>>0]|0)){e=f[ca+(l*12|0)>>2]|0;j=0;do{n=k+(j<<2)|0;f[n>>2]=(f[n>>2]|0)+(f[e+(j<<2)>>2]|0);j=j+1|0}while((j|0)!=(g|0));i=(1<>0]|0))i=(1<>2]|0;e=0;k=0;do{m=j+(k<<2)|0;n=(f[m>>2]|0)/(x|0)|0;f[m>>2]=n;n=n-(f[c+(k+y<<2)>>2]|0)|0;e=((n|0)>-1?n:0-n|0)+e|0;k=k+1|0}while((k|0)!=(g|0))}else e=0;if((e|0)<(f[U>>2]|0)){f[U>>2]=e;b[H>>0]=i;f[L>>2]=x;f[Q>>2]=f[W>>2];f[S>>2]=f[F>>2];f[R>>2]=f[Q>>2];f[T>>2]=f[S>>2];gg(M,R,T)}if(r)break;Y=b[v>>0]|0;l=Y;m=-1;while(1){i=m+-1|0;n=p+i|0;k=l;l=b[n>>0]|0;if((l&255)<(k&255))break;if((n|0)==(V|0)){ba=67;break c}else m=i}i=p+m|0;if((l&255)<(Y&255)){j=Y;e=v}else{j=p;k=v;while(1){e=k+-1|0;if((l&255)<(h[j+-2>>0]|0)){j=1;break}else{j=k;k=e}}}b[n>>0]=j;b[e>>0]=l;if((m|0)<-1)e=v;else continue;while(1){n=b[i>>0]|0;b[i>>0]=b[e>>0]|0;b[e>>0]=n;i=i+1|0;e=e+-1|0;if(i>>>0>=e>>>0)continue c}}if(((ba|0)==67?(ba=0,s):0)?(n=b[V>>0]|0,b[V>>0]=Y,b[v>>0]=n,q):0){i=t;e=K;do{n=b[e>>0]|0;b[e>>0]=b[i>>0]|0;b[i>>0]=n;e=e+1|0;i=i+-1|0}while(e>>>0>>0)}if((x|0)>=(z|0))break;else x=x+1|0}if((z|0)>0){k=z+-1|0;m=a+44+(k*12|0)|0;l=a+44+(k*12|0)+4|0;k=a+44+(k*12|0)+8|0;n=0;do{i=f[l>>2]|0;e=f[k>>2]|0;j=(i|0)==(e<<5|0);if(!(h[H>>0]&1<>2]|0}x=e<<6;i=i+32&-32;fj(m,e<<5>>>0<1073741823?(x>>>0>>0?i:x):2147483647);i=f[l>>2]|0}f[l>>2]=i+1;x=(f[m>>2]|0)+(i>>>5<<2)|0;f[x>>2]=f[x>>2]|1<<(i&31)}else{if(j){if((i+1|0)<0){zp(m);e=f[k>>2]|0}x=e<<6;i=i+32&-32;fj(m,e<<5>>>0<1073741823?(x>>>0>>0?i:x):2147483647);i=f[l>>2]|0}f[l>>2]=i+1;x=(f[m>>2]|0)+(i>>>5<<2)|0;f[x>>2]=f[x>>2]&~(1<<(i&31))}n=n+1|0}while((n|0)<(z|0))}}aj(N,c+(y<<2)|0,f[M>>2]|0,d+(y<<2)|0);i=f[D>>2]|0;if(i|0){e=f[E>>2]|0;if((e|0)!=(i|0))f[E>>2]=e+(~((e+-4-i|0)>>>2)<<2);Lq(i)}if((A|0)<=1)break a;j=f[J>>2]|0;i=f[j>>2]|0;e=f[j+4>>2]|0;v=A}}while(0);if((g|0)>0)Xj(f[ca>>2]|0,0,g<<2|0)|0;aj(a+8|0,c,f[ca>>2]|0,d);j=f[W>>2]|0;if(j|0){e=W+4|0;i=f[e>>2]|0;if((i|0)!=(j|0))f[e>>2]=i+(~((i+-4-j|0)>>>2)<<2);Lq(j)}i=f[ca+36>>2]|0;if(i|0){j=ca+40|0;e=f[j>>2]|0;if((e|0)!=(i|0))f[j>>2]=e+(~((e+-4-i|0)>>>2)<<2);Lq(i)}i=f[ca+24>>2]|0;if(i|0){j=ca+28|0;e=f[j>>2]|0;if((e|0)!=(i|0))f[j>>2]=e+(~((e+-4-i|0)>>>2)<<2);Lq(i)}i=f[ca+12>>2]|0;if(i|0){j=ca+16|0;e=f[j>>2]|0;if((e|0)!=(i|0))f[j>>2]=e+(~((e+-4-i|0)>>>2)<<2);Lq(i)}j=f[ca>>2]|0;if(!j){u=da;return 1}e=ca+4|0;i=f[e>>2]|0;if((i|0)!=(j|0))f[e>>2]=i+(~((i+-4-j|0)>>>2)<<2);Lq(j);u=da;return 1}function fb(a,c,d,e,g,i){a=a|0;c=c|0;d=d|0;e=e|0;g=g|0;i=i|0;var j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,v=0,w=0,x=0,y=0,z=0,A=0,B=0,C=0,D=0,E=0,F=0,G=0,H=0,I=0,J=0,K=0,L=0,M=0,N=0,O=0,P=0,Q=0,R=0,S=0,T=0,U=0,V=0,W=0,Y=0,Z=0,_=0;_=u;u=u+112|0;S=_+100|0;Q=_+96|0;Z=_+48|0;V=_+32|0;U=_+104|0;T=_+8|0;P=_+4|0;R=_;N=f[a+32>>2]|0;O=f[a+36>>2]|0;i=Z;e=i+48|0;do{f[i>>2]=0;i=i+4|0}while((i|0)<(e|0));if(!g){i=0;e=0}else{jj(Z,g);i=f[Z+12>>2]|0;e=f[Z+16>>2]|0}j=Z+16|0;k=e-i>>2;if(k>>>0>=g>>>0){if(k>>>0>g>>>0?(l=i+(g<<2)|0,(e|0)!=(l|0)):0)f[j>>2]=e+(~((e+-4-l|0)>>>2)<<2)}else jj(Z+12|0,g-k|0);k=Z+24|0;j=Z+28|0;e=f[j>>2]|0;i=f[k>>2]|0;l=e-i>>2;if(l>>>0>=g>>>0){if(l>>>0>g>>>0?(m=i+(g<<2)|0,(e|0)!=(m|0)):0)f[j>>2]=e+(~((e+-4-m|0)>>>2)<<2)}else jj(k,g-l|0);k=Z+36|0;j=Z+40|0;e=f[j>>2]|0;i=f[k>>2]|0;l=e-i>>2;if(l>>>0>=g>>>0){if(l>>>0>g>>>0?(n=i+(g<<2)|0,(e|0)!=(n|0)):0)f[j>>2]=e+(~((e+-4-n|0)>>>2)<<2)}else jj(k,g-l|0);ml(V,g);I=a+40|0;j=f[I>>2]|0;e=f[j+4>>2]|0;i=f[j>>2]|0;k=e-i|0;a:do if((k|0)>4){C=N+12|0;G=(g|0)>0;H=T+4|0;K=T+8|0;L=T+12|0;M=a+8|0;D=T+12|0;E=T+16|0;F=V+4|0;J=U+1|0;B=g<<2;x=k>>2;while(1){A=x+-1|0;if(e-i>>2>>>0<=A>>>0){yp(j);i=f[j>>2]|0}t=f[i+(A<<2)>>2]|0;w=(((t>>>0)%3|0|0)==0?2:-1)+t|0;v=(t|w|0)<0;s=(t|0)<0?t:w;i=t;r=1;e=0;b:while(1){do{if((i|0)<=-1){z=e;break b}p=f[Z+(e*12|0)>>2]|0;q=f[C>>2]|0;k=f[q+(i<<2)>>2]|0;if((k|0)>=0){l=f[N>>2]|0;m=f[O>>2]|0;o=f[m+(f[l+(k<<2)>>2]<<2)>>2]|0;j=k+1|0;j=((j|0)%3|0|0)==0?k+-2|0:j;if((j|0)<0)j=-1073741824;else j=f[l+(j<<2)>>2]|0;n=f[m+(j<<2)>>2]|0;j=(((k>>>0)%3|0|0)==0?2:-1)+k|0;if((j|0)<0)j=-1073741824;else j=f[l+(j<<2)>>2]|0;j=f[m+(j<<2)>>2]|0;if((o|0)<(A|0)&(n|0)<(A|0)&(j|0)<(A|0)){m=X(o,g)|0;l=X(n,g)|0;k=X(j,g)|0;if(G){j=0;do{f[p+(j<<2)>>2]=(f[c+(j+k<<2)>>2]|0)+(f[c+(j+l<<2)>>2]|0)-(f[c+(j+m<<2)>>2]|0);j=j+1|0}while((j|0)!=(g|0))}e=e+1|0;if((e|0)==4){z=4;break b}}}do if(r){z=i+1|0;i=((z|0)%3|0|0)==0?i+-2|0:z;if((i|0)>=0){i=f[q+(i<<2)>>2]|0;j=i+1|0;if((i|0)>=0)i=((j|0)%3|0|0)==0?i+-2|0:j}}else{i=(((i>>>0)%3|0|0)==0?2:-1)+i|0;if((i|0)>=0){i=f[q+(i<<2)>>2]|0;if((i|0)>=0)if(!((i>>>0)%3|0)){i=i+2|0;break}else{i=i+-1|0;break}}}while(0);if((i|0)==(t|0)){z=e;break b}}while(!(r&(i|0)<0));if(v){i=s;r=0;continue}i=f[q+(w<<2)>>2]|0;if((i|0)<0){r=0;continue}if(!((i>>>0)%3|0)){i=i+2|0;r=0;continue}else{i=i+-1|0;r=0;continue}}y=X(A,g)|0;f[T>>2]=2147483647;b[H>>0]=0;f[K>>2]=0;f[K+4>>2]=0;f[K+8>>2]=0;f[K+12>>2]=0;j=X(x+-2|0,g)|0;if(G){i=0;e=0;do{x=(f[c+(e+y<<2)>>2]|0)-(f[c+(e+j<<2)>>2]|0)|0;i=((x|0)>-1?x:0-x|0)+i|0;e=e+1|0}while((e|0)!=(g|0))}else i=0;f[T>>2]=i;b[H>>0]=0;f[K>>2]=0;x=c+(j<<2)|0;rg(L,x,x+(g<<2)|0);if((z|0)>=1){p=U+z|0;v=p+-1|0;r=(v|0)==(U|0);t=p+-2|0;q=J>>>0>>0;o=~z;o=z+2+((o|0)>-2?o:-2)|0;s=v>>>0>U>>>0;w=0;x=1;while(1){w=w+1|0;Xj(U|0,1,o|0)|0;Xj(U|0,0,w|0)|0;c:while(1){if(G){Xj(f[V>>2]|0,0,B|0)|0;k=f[V>>2]|0;i=0;l=0;do{if(!(b[U+l>>0]|0)){e=f[Z+(l*12|0)>>2]|0;j=0;do{n=k+(j<<2)|0;f[n>>2]=(f[n>>2]|0)+(f[e+(j<<2)>>2]|0);j=j+1|0}while((j|0)!=(g|0));i=(1<>0]|0))i=(1<>2]|0;e=0;k=0;do{m=j+(k<<2)|0;n=(f[m>>2]|0)/(x|0)|0;f[m>>2]=n;n=n-(f[c+(k+y<<2)>>2]|0)|0;e=((n|0)>-1?n:0-n|0)+e|0;k=k+1|0}while((k|0)!=(g|0))}else e=0;if((e|0)<(f[T>>2]|0)){f[T>>2]=e;b[H>>0]=i;f[K>>2]=x;f[P>>2]=f[V>>2];f[R>>2]=f[F>>2];f[Q>>2]=f[P>>2];f[S>>2]=f[R>>2];gg(L,Q,S)}if(r)break;W=b[v>>0]|0;l=W;m=-1;while(1){i=m+-1|0;n=p+i|0;k=l;l=b[n>>0]|0;if((l&255)<(k&255))break;if((n|0)==(U|0)){Y=68;break c}else m=i}i=p+m|0;if((l&255)<(W&255)){j=W;e=v}else{j=p;k=v;while(1){e=k+-1|0;if((l&255)<(h[j+-2>>0]|0)){j=1;break}else{j=k;k=e}}}b[n>>0]=j;b[e>>0]=l;if((m|0)<-1)e=v;else continue;while(1){n=b[i>>0]|0;b[i>>0]=b[e>>0]|0;b[e>>0]=n;i=i+1|0;e=e+-1|0;if(i>>>0>=e>>>0)continue c}}if(((Y|0)==68?(Y=0,s):0)?(n=b[U>>0]|0,b[U>>0]=W,b[v>>0]=n,q):0){i=t;e=J;do{n=b[e>>0]|0;b[e>>0]=b[i>>0]|0;b[i>>0]=n;e=e+1|0;i=i+-1|0}while(e>>>0>>0)}if((x|0)>=(z|0))break;else x=x+1|0}if((z|0)>0){k=z+-1|0;m=a+44+(k*12|0)|0;l=a+44+(k*12|0)+4|0;k=a+44+(k*12|0)+8|0;n=0;do{i=f[l>>2]|0;e=f[k>>2]|0;j=(i|0)==(e<<5|0);if(!(h[H>>0]&1<>2]|0}x=e<<6;i=i+32&-32;fj(m,e<<5>>>0<1073741823?(x>>>0>>0?i:x):2147483647);i=f[l>>2]|0}f[l>>2]=i+1;x=(f[m>>2]|0)+(i>>>5<<2)|0;f[x>>2]=f[x>>2]|1<<(i&31)}else{if(j){if((i+1|0)<0){zp(m);e=f[k>>2]|0}x=e<<6;i=i+32&-32;fj(m,e<<5>>>0<1073741823?(x>>>0>>0?i:x):2147483647);i=f[l>>2]|0}f[l>>2]=i+1;x=(f[m>>2]|0)+(i>>>5<<2)|0;f[x>>2]=f[x>>2]&~(1<<(i&31))}n=n+1|0}while((n|0)<(z|0))}}aj(M,c+(y<<2)|0,f[L>>2]|0,d+(y<<2)|0);i=f[D>>2]|0;if(i|0){e=f[E>>2]|0;if((e|0)!=(i|0))f[E>>2]=e+(~((e+-4-i|0)>>>2)<<2);Lq(i)}if((A|0)<=1)break a;j=f[I>>2]|0;i=f[j>>2]|0;e=f[j+4>>2]|0;x=A}}while(0);if((g|0)>0)Xj(f[Z>>2]|0,0,g<<2|0)|0;aj(a+8|0,c,f[Z>>2]|0,d);j=f[V>>2]|0;if(j|0){e=V+4|0;i=f[e>>2]|0;if((i|0)!=(j|0))f[e>>2]=i+(~((i+-4-j|0)>>>2)<<2);Lq(j)}i=f[Z+36>>2]|0;if(i|0){j=Z+40|0;e=f[j>>2]|0;if((e|0)!=(i|0))f[j>>2]=e+(~((e+-4-i|0)>>>2)<<2);Lq(i)}i=f[Z+24>>2]|0;if(i|0){j=Z+28|0;e=f[j>>2]|0;if((e|0)!=(i|0))f[j>>2]=e+(~((e+-4-i|0)>>>2)<<2);Lq(i)}e=f[Z+12>>2]|0;if(e|0){j=Z+16|0;i=f[j>>2]|0;if((i|0)!=(e|0))f[j>>2]=i+(~((i+-4-e|0)>>>2)<<2);Lq(e)}j=f[Z>>2]|0;if(!j){u=_;return 1}e=Z+4|0;i=f[e>>2]|0;if((i|0)!=(j|0))f[e>>2]=i+(~((i+-4-j|0)>>>2)<<2);Lq(j);u=_;return 1}function gb(a,c,d){a=a|0;c=c|0;d=d|0;var e=Ka,g=0,i=0,j=0;if(!d){d=0;return d|0}switch(f[a+28>>2]|0){case 9:{c=f[c>>2]|0;switch(b[a+24>>0]|0){case 1:{g=a+48|0;i=f[g>>2]|0;g=f[g+4>>2]|0;j=a+40|0;a=(Do(En(f[j>>2]|0,f[j+4>>2]|0,c|0,((c|0)<0)<<31>>31|0)|0,I|0,i|0,g|0)|0)+(f[f[a>>2]>>2]|0)|0;b[s>>0]=b[a>>0];b[s+1>>0]=b[a+1>>0];b[s+2>>0]=b[a+2>>0];b[s+3>>0]=b[a+3>>0];e=$(n[s>>2]);break}case 2:{j=a+48|0;i=f[j>>2]|0;j=f[j+4>>2]|0;g=a+40|0;j=(Do(En(f[g>>2]|0,f[g+4>>2]|0,c|0,((c|0)<0)<<31>>31|0)|0,I|0,i|0,j|0)|0)+(f[f[a>>2]>>2]|0)|0;e=(f[s>>2]=h[j>>0]|h[j+1>>0]<<8|h[j+2>>0]<<16|h[j+3>>0]<<24,$(n[s>>2]));break}case 3:{j=a+48|0;i=f[j>>2]|0;j=f[j+4>>2]|0;g=a+40|0;j=(Do(En(f[g>>2]|0,f[g+4>>2]|0,c|0,((c|0)<0)<<31>>31|0)|0,I|0,i|0,j|0)|0)+(f[f[a>>2]>>2]|0)|0;b[s>>0]=b[j>>0];b[s+1>>0]=b[j+1>>0];b[s+2>>0]=b[j+2>>0];b[s+3>>0]=b[j+3>>0];e=$(n[s>>2]);break}case 4:{j=a+48|0;i=f[j>>2]|0;j=f[j+4>>2]|0;g=a+40|0;j=(Do(En(f[g>>2]|0,f[g+4>>2]|0,c|0,((c|0)<0)<<31>>31|0)|0,I|0,i|0,j|0)|0)+(f[f[a>>2]>>2]|0)|0;b[s>>0]=b[j>>0];b[s+1>>0]=b[j+1>>0];b[s+2>>0]=b[j+2>>0];b[s+3>>0]=b[j+3>>0];e=$(n[s>>2]);break}default:{j=0;return j|0}}f[d>>2]=~~e;j=1;return j|0}case 2:{c=f[c>>2]|0;switch(b[a+24>>0]|0){case 1:{j=a+48|0;i=f[j>>2]|0;j=f[j+4>>2]|0;g=a+40|0;c=Do(En(f[g>>2]|0,f[g+4>>2]|0,c|0,((c|0)<0)<<31>>31|0)|0,I|0,i|0,j|0)|0;c=h[(f[f[a>>2]>>2]|0)+c>>0]|0;break}case 2:{j=a+48|0;i=f[j>>2]|0;j=f[j+4>>2]|0;g=a+40|0;c=(Do(En(f[g>>2]|0,f[g+4>>2]|0,c|0,((c|0)<0)<<31>>31|0)|0,I|0,i|0,j|0)|0)+(f[f[a>>2]>>2]|0)|0;c=(h[c>>0]|h[c+1>>0]<<8)&255;break}case 3:{j=a+48|0;i=f[j>>2]|0;j=f[j+4>>2]|0;g=a+40|0;c=Do(En(f[g>>2]|0,f[g+4>>2]|0,c|0,((c|0)<0)<<31>>31|0)|0,I|0,i|0,j|0)|0;c=h[(f[f[a>>2]>>2]|0)+c>>0]|0;break}case 4:{j=a+48|0;i=f[j>>2]|0;j=f[j+4>>2]|0;g=a+40|0;c=(Do(En(f[g>>2]|0,f[g+4>>2]|0,c|0,((c|0)<0)<<31>>31|0)|0,I|0,i|0,j|0)|0)+(f[f[a>>2]>>2]|0)|0;c=(h[c>>0]|h[c+1>>0]<<8|h[c+2>>0]<<16|h[c+3>>0]<<24)&255;break}default:{j=0;return j|0}}f[d>>2]=c;j=1;return j|0}case 1:{c=f[c>>2]|0;switch(b[a+24>>0]|0){case 1:{j=a+48|0;i=f[j>>2]|0;j=f[j+4>>2]|0;g=a+40|0;c=Do(En(f[g>>2]|0,f[g+4>>2]|0,c|0,((c|0)<0)<<31>>31|0)|0,I|0,i|0,j|0)|0;c=b[(f[f[a>>2]>>2]|0)+c>>0]|0;break}case 2:{j=a+48|0;i=f[j>>2]|0;j=f[j+4>>2]|0;g=a+40|0;c=(Do(En(f[g>>2]|0,f[g+4>>2]|0,c|0,((c|0)<0)<<31>>31|0)|0,I|0,i|0,j|0)|0)+(f[f[a>>2]>>2]|0)|0;c=((h[c>>0]|h[c+1>>0]<<8)&65535)<<24>>24;break}case 3:{j=a+48|0;i=f[j>>2]|0;j=f[j+4>>2]|0;g=a+40|0;c=Do(En(f[g>>2]|0,f[g+4>>2]|0,c|0,((c|0)<0)<<31>>31|0)|0,I|0,i|0,j|0)|0;c=b[(f[f[a>>2]>>2]|0)+c>>0]|0;break}case 4:{j=a+48|0;i=f[j>>2]|0;j=f[j+4>>2]|0;g=a+40|0;c=(Do(En(f[g>>2]|0,f[g+4>>2]|0,c|0,((c|0)<0)<<31>>31|0)|0,I|0,i|0,j|0)|0)+(f[f[a>>2]>>2]|0)|0;c=(h[c>>0]|h[c+1>>0]<<8|h[c+2>>0]<<16|h[c+3>>0]<<24)<<24>>24;break}default:{j=0;return j|0}}f[d>>2]=c;j=1;return j|0}case 4:{c=f[c>>2]|0;switch(b[a+24>>0]|0){case 1:{j=a+48|0;i=f[j>>2]|0;j=f[j+4>>2]|0;g=a+40|0;c=(Do(En(f[g>>2]|0,f[g+4>>2]|0,c|0,((c|0)<0)<<31>>31|0)|0,I|0,i|0,j|0)|0)+(f[f[a>>2]>>2]|0)|0;c=(h[c>>0]|h[c+1>>0]<<8)&65535;break}case 2:{j=a+48|0;i=f[j>>2]|0;j=f[j+4>>2]|0;g=a+40|0;c=(Do(En(f[g>>2]|0,f[g+4>>2]|0,c|0,((c|0)<0)<<31>>31|0)|0,I|0,i|0,j|0)|0)+(f[f[a>>2]>>2]|0)|0;c=(h[c>>0]|h[c+1>>0]<<8|h[c+2>>0]<<16|h[c+3>>0]<<24)&65535;break}case 3:{j=a+48|0;i=f[j>>2]|0;j=f[j+4>>2]|0;g=a+40|0;c=(Do(En(f[g>>2]|0,f[g+4>>2]|0,c|0,((c|0)<0)<<31>>31|0)|0,I|0,i|0,j|0)|0)+(f[f[a>>2]>>2]|0)|0;c=(h[c>>0]|h[c+1>>0]<<8)&65535;break}case 4:{j=a+48|0;i=f[j>>2]|0;j=f[j+4>>2]|0;g=a+40|0;c=(Do(En(f[g>>2]|0,f[g+4>>2]|0,c|0,((c|0)<0)<<31>>31|0)|0,I|0,i|0,j|0)|0)+(f[f[a>>2]>>2]|0)|0;c=(h[c>>0]|h[c+1>>0]<<8|h[c+2>>0]<<16|h[c+3>>0]<<24)&65535;break}default:{j=0;return j|0}}f[d>>2]=c;j=1;return j|0}case 3:{c=f[c>>2]|0;switch(b[a+24>>0]|0){case 1:{j=a+48|0;i=f[j>>2]|0;j=f[j+4>>2]|0;g=a+40|0;c=(Do(En(f[g>>2]|0,f[g+4>>2]|0,c|0,((c|0)<0)<<31>>31|0)|0,I|0,i|0,j|0)|0)+(f[f[a>>2]>>2]|0)|0;c=(h[c>>0]|h[c+1>>0]<<8)<<16>>16;break}case 2:{j=a+48|0;i=f[j>>2]|0;j=f[j+4>>2]|0;g=a+40|0;c=(Do(En(f[g>>2]|0,f[g+4>>2]|0,c|0,((c|0)<0)<<31>>31|0)|0,I|0,i|0,j|0)|0)+(f[f[a>>2]>>2]|0)|0;c=(h[c>>0]|h[c+1>>0]<<8|h[c+2>>0]<<16|h[c+3>>0]<<24)<<16>>16;break}case 3:{j=a+48|0;i=f[j>>2]|0;j=f[j+4>>2]|0;g=a+40|0;c=(Do(En(f[g>>2]|0,f[g+4>>2]|0,c|0,((c|0)<0)<<31>>31|0)|0,I|0,i|0,j|0)|0)+(f[f[a>>2]>>2]|0)|0;c=(h[c>>0]|h[c+1>>0]<<8)<<16>>16;break}case 4:{j=a+48|0;i=f[j>>2]|0;j=f[j+4>>2]|0;g=a+40|0;c=(Do(En(f[g>>2]|0,f[g+4>>2]|0,c|0,((c|0)<0)<<31>>31|0)|0,I|0,i|0,j|0)|0)+(f[f[a>>2]>>2]|0)|0;c=(h[c>>0]|h[c+1>>0]<<8|h[c+2>>0]<<16|h[c+3>>0]<<24)<<16>>16;break}default:{j=0;return j|0}}f[d>>2]=c;j=1;return j|0}case 6:{c=f[c>>2]|0;switch(b[a+24>>0]|0){case 1:{j=a+48|0;i=f[j>>2]|0;j=f[j+4>>2]|0;g=a+40|0;c=(Do(En(f[g>>2]|0,f[g+4>>2]|0,c|0,((c|0)<0)<<31>>31|0)|0,I|0,i|0,j|0)|0)+(f[f[a>>2]>>2]|0)|0;c=h[c>>0]|h[c+1>>0]<<8|h[c+2>>0]<<16|h[c+3>>0]<<24;break}case 2:{j=a+48|0;i=f[j>>2]|0;j=f[j+4>>2]|0;g=a+40|0;c=(Do(En(f[g>>2]|0,f[g+4>>2]|0,c|0,((c|0)<0)<<31>>31|0)|0,I|0,i|0,j|0)|0)+(f[f[a>>2]>>2]|0)|0;c=h[c>>0]|h[c+1>>0]<<8|h[c+2>>0]<<16|h[c+3>>0]<<24;break}case 3:{j=a+48|0;i=f[j>>2]|0;j=f[j+4>>2]|0;g=a+40|0;c=(Do(En(f[g>>2]|0,f[g+4>>2]|0,c|0,((c|0)<0)<<31>>31|0)|0,I|0,i|0,j|0)|0)+(f[f[a>>2]>>2]|0)|0;c=h[c>>0]|h[c+1>>0]<<8|h[c+2>>0]<<16|h[c+3>>0]<<24;break}case 4:{j=a+48|0;i=f[j>>2]|0;j=f[j+4>>2]|0;g=a+40|0;c=(Do(En(f[g>>2]|0,f[g+4>>2]|0,c|0,((c|0)<0)<<31>>31|0)|0,I|0,i|0,j|0)|0)+(f[f[a>>2]>>2]|0)|0;c=h[c>>0]|h[c+1>>0]<<8|h[c+2>>0]<<16|h[c+3>>0]<<24;break}default:{j=0;return j|0}}f[d>>2]=c;j=1;return j|0}case 5:{c=f[c>>2]|0;switch(b[a+24>>0]|0){case 1:{j=a+48|0;i=f[j>>2]|0;j=f[j+4>>2]|0;g=a+40|0;c=(Do(En(f[g>>2]|0,f[g+4>>2]|0,c|0,((c|0)<0)<<31>>31|0)|0,I|0,i|0,j|0)|0)+(f[f[a>>2]>>2]|0)|0;c=h[c>>0]|h[c+1>>0]<<8|h[c+2>>0]<<16|h[c+3>>0]<<24;break}case 2:{j=a+48|0;i=f[j>>2]|0;j=f[j+4>>2]|0;g=a+40|0;c=(Do(En(f[g>>2]|0,f[g+4>>2]|0,c|0,((c|0)<0)<<31>>31|0)|0,I|0,i|0,j|0)|0)+(f[f[a>>2]>>2]|0)|0;c=h[c>>0]|h[c+1>>0]<<8|h[c+2>>0]<<16|h[c+3>>0]<<24;break}case 3:{j=a+48|0;i=f[j>>2]|0;j=f[j+4>>2]|0;g=a+40|0;c=(Do(En(f[g>>2]|0,f[g+4>>2]|0,c|0,((c|0)<0)<<31>>31|0)|0,I|0,i|0,j|0)|0)+(f[f[a>>2]>>2]|0)|0;c=h[c>>0]|h[c+1>>0]<<8|h[c+2>>0]<<16|h[c+3>>0]<<24;break}case 4:{j=a+48|0;i=f[j>>2]|0;j=f[j+4>>2]|0;g=a+40|0;c=(Do(En(f[g>>2]|0,f[g+4>>2]|0,c|0,((c|0)<0)<<31>>31|0)|0,I|0,i|0,j|0)|0)+(f[f[a>>2]>>2]|0)|0;c=h[c>>0]|h[c+1>>0]<<8|h[c+2>>0]<<16|h[c+3>>0]<<24;break}default:{j=0;return j|0}}f[d>>2]=c;j=1;return j|0}default:{j=0;return j|0}}return 0}function hb(a,c){a=a|0;c=c|0;var d=0,e=0,g=0,i=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,v=0,w=0,x=0,y=0,z=0;z=u;u=u+1328|0;x=z+1304|0;w=z+1296|0;y=z;g=z+1284|0;n=z+1280|0;t=z+1316|0;p=z+1288|0;q=z+72|0;o=z+1268|0;i=z+64|0;l=z+56|0;m=z+80|0;d=f[a+4>>2]|0;if(((f[a+8>>2]|0)-d|0)!=4){y=0;u=z;return y|0}j=f[d>>2]|0;s=a+28|0;e=f[s>>2]|0;d=f[e+4>>2]|0;if((j|0)<=-1)Fa(17509,17693,63,17731);a=f[d+8>>2]|0;if(((f[d+12>>2]|0)-a>>2|0)<=(j|0))Fa(17639,17693,64,17731);r=f[a+(j<<2)>>2]|0;if((b[r+24>>0]|0)!=3){y=0;u=z;return y|0}e=10-($j(f[e+48>>2]|0)|0)|0;e=(e|0)<6?e:6;b[t>>0]=e;if((e&255)>>>0>=7)Fa(15706,15733,96,15796);a:do switch(f[r+28>>2]|0){case 9:{g=f[(f[s>>2]|0)+48>>2]|0;f[x>>2]=0;f[x+4>>2]=0;f[x+8>>2]=0;Ck(x,17741,17);i=g+16|0;a=f[i>>2]|0;if(a){d=i;b:while(1){e=a;while(1){if((f[e+16>>2]|0)>=(j|0))break;a=f[e+4>>2]|0;if(!a)break b;else e=a}a=f[e>>2]|0;if(!a){d=e;break}else d=e}if(((d|0)!=(i|0)?(k=d+20|0,(j|0)>=(f[d+16>>2]|0)):0)?(Pi(k,x)|0)!=0:0)e=ql(k,x,-1)|0;else v=19}else v=19;if((v|0)==19)e=ql(g,x,-1)|0;Eo(x);if((e|0)>=1){b[y>>0]=0;g=c+16|0;d=g;a=f[d>>2]|0;d=f[d+4>>2]|0;if(!((d|0)>0|(d|0)==0&a>>>0>0)){f[w>>2]=f[c+4>>2];f[x>>2]=f[w>>2];vf(c,x,y,y+1|0)|0;a=g;d=f[a+4>>2]|0;a=f[a>>2]|0}if(!((d|0)>0|(d|0)==0&a>>>0>0)){f[w>>2]=f[c+4>>2];f[x>>2]=f[w>>2];vf(c,x,t,t+1|0)|0;a=g;d=f[a+4>>2]|0;a=f[a>>2]|0}f[y>>2]=f[(f[(f[s>>2]|0)+4>>2]|0)+68>>2];if(!((d|0)>0|(d|0)==0&a>>>0>0)){f[w>>2]=f[c+4>>2];f[x>>2]=f[w>>2];vf(c,x,y,y+4|0)|0}rm(y,1,e,h[t>>0]|0);f[p>>2]=r;f[p+4>>2]=0;t=f[(f[(f[s>>2]|0)+4>>2]|0)+68>>2]|0;s=q;f[s>>2]=r;f[s+4>>2]=0;f[q+4>>2]=t;f[w>>2]=f[p>>2];f[w+4>>2]=f[p+4>>2];f[x>>2]=f[q>>2];f[x+4>>2]=f[q+4>>2];if(Ed(y,w,x)|0){d=f[y+16>>2]|0;t=g;s=f[t+4>>2]|0;if(!((s|0)>0|(s|0)==0&(f[t>>2]|0)>>>0>0)){t=(f[y+20>>2]|0)-d|0;f[w>>2]=f[c+4>>2];f[x>>2]=f[w>>2];vf(c,x,d,d+t|0)|0}e=0}else e=1;c=y+28|0;d=f[c>>2]|0;f[c>>2]=0;if(d|0)Lq(d);a=f[y+16>>2]|0;if(a|0){d=y+20|0;if((f[d>>2]|0)!=(a|0))f[d>>2]=a;Lq(a)}if(!e)v=62;else d=0}else d=0;break}case 6:{b[y>>0]=1;e=c+16|0;d=e;a=f[d>>2]|0;d=f[d+4>>2]|0;if(!((d|0)>0|(d|0)==0&a>>>0>0)){f[w>>2]=f[c+4>>2];f[x>>2]=f[w>>2];vf(c,x,y,y+1|0)|0;a=e;d=f[a+4>>2]|0;a=f[a>>2]|0}if((d|0)>0|(d|0)==0&a>>>0>0)e=d;else{f[w>>2]=f[c+4>>2];f[x>>2]=f[w>>2];vf(c,x,t,t+1|0)|0;a=e;e=f[a+4>>2]|0;a=f[a>>2]|0}d=f[s>>2]|0;f[y>>2]=f[(f[d+4>>2]|0)+68>>2];if(!((e|0)>0|(e|0)==0&a>>>0>0)){f[w>>2]=f[c+4>>2];f[x>>2]=f[w>>2];vf(c,x,y,y+4|0)|0;d=f[s>>2]|0}f[i>>2]=r;f[i+4>>2]=0;v=f[(f[d+4>>2]|0)+68>>2]|0;s=l;f[s>>2]=r;f[s+4>>2]=0;f[l+4>>2]=v;f[w>>2]=f[i>>2];f[w+4>>2]=f[i+4>>2];f[x>>2]=f[l>>2];f[x+4>>2]=f[l+4>>2];sh(o,w,x);switch(b[t>>0]|0){case 6:{ii(m,3);v=f[o+4>>2]|0;f[y>>2]=f[o>>2];f[g>>2]=v;f[n>>2]=32;f[w>>2]=f[y>>2];f[x>>2]=f[g>>2];y=Vf(m,w,x,n,c)|0;Tf(m);if(y)v=52;else v=57;break}case 5:{ii(m,3);v=f[o+4>>2]|0;f[y>>2]=f[o>>2];f[g>>2]=v;f[n>>2]=32;f[w>>2]=f[y>>2];f[x>>2]=f[g>>2];y=Wf(m,w,x,n,c)|0;Tf(m);if(y)v=52;else v=57;break}case 4:{ii(m,3);v=f[o+4>>2]|0;f[y>>2]=f[o>>2];f[g>>2]=v;f[n>>2]=32;f[w>>2]=f[y>>2];f[x>>2]=f[g>>2];y=Wf(m,w,x,n,c)|0;Tf(m);if(y)v=52;else v=57;break}case 3:{zi(m,3);v=f[o+4>>2]|0;f[y>>2]=f[o>>2];f[g>>2]=v;f[n>>2]=32;f[w>>2]=f[y>>2];f[x>>2]=f[g>>2];y=wg(m,w,x,n,c)|0;og(m);if(y)v=52;else v=57;break}case 2:{zi(m,3);v=f[o+4>>2]|0;f[y>>2]=f[o>>2];f[g>>2]=v;f[n>>2]=32;f[w>>2]=f[y>>2];f[x>>2]=f[g>>2];y=wg(m,w,x,n,c)|0;og(m);if(y)v=52;else v=57;break}case 1:{yi(m,3);v=f[o+4>>2]|0;f[y>>2]=f[o>>2];f[g>>2]=v;f[n>>2]=32;f[w>>2]=f[y>>2];f[x>>2]=f[g>>2];y=ug(m,w,x,n,c)|0;ng(m);if(y)v=52;else v=57;break}case 0:{yi(m,3);v=f[o+4>>2]|0;f[y>>2]=f[o>>2];f[g>>2]=v;f[n>>2]=32;f[w>>2]=f[y>>2];f[x>>2]=f[g>>2];y=ug(m,w,x,n,c)|0;ng(m);if(y)v=52;else v=57;break}default:v=57}if((v|0)==52){e=f[o>>2]|0;if(e|0){a=o+4|0;d=f[a>>2]|0;if((d|0)!=(e|0))f[a>>2]=d+(~(((d+-12-e|0)>>>0)/12|0)*12|0);Lq(e)}v=62;break a}else if((v|0)==57){e=f[o>>2]|0;if(e|0){a=o+4|0;d=f[a>>2]|0;if((d|0)!=(e|0))f[a>>2]=d+(~(((d+-12-e|0)>>>0)/12|0)*12|0);Lq(e)}d=0;break a}break}default:d=0}while(0);if((v|0)==62)d=1;y=d;u=z;return y|0}function ib(a,b,c){a=a|0;b=b|0;c=c|0;var d=0,e=0,g=0,h=0,i=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,v=0,w=0,x=0,y=0,z=0,A=0,B=0,C=0,D=0,E=0,F=0,G=0,H=0,I=0,J=0,K=0,L=0,M=0,N=0,O=0,P=0,Q=0;Q=u;u=u+48|0;I=Q+36|0;G=Q+32|0;P=Q;F=Q+28|0;H=Q+24|0;J=a+8|0;E=f[J>>2]|0;f[G>>2]=0;Bk(I,E,G);E=a+1164|0;h=f[E>>2]|0;d=f[h>>2]|0;g=h+4|0;if(!d)d=h+8|0;else{e=f[g>>2]|0;if((e|0)!=(d|0))f[g>>2]=e+(~((e+-4-d|0)>>>2)<<2);Lq(d);d=h+8|0;f[d>>2]=0;f[g>>2]=0;f[h>>2]=0}f[h>>2]=f[I>>2];f[g>>2]=f[I+4>>2];f[d>>2]=f[I+8>>2];D=f[J>>2]|0;f[G>>2]=0;Bk(I,D,G);D=a+1176|0;h=f[D>>2]|0;d=f[h>>2]|0;g=h+4|0;if(!d)d=h+8|0;else{e=f[g>>2]|0;if((e|0)!=(d|0))f[g>>2]=e+(~((e+-4-d|0)>>>2)<<2);Lq(d);d=h+8|0;f[d>>2]=0;f[g>>2]=0;f[h>>2]=0}f[h>>2]=f[I>>2];f[g>>2]=f[I+4>>2];f[d>>2]=f[I+8>>2];g=f[b>>2]|0;h=f[c>>2]|0;f[P>>2]=0;f[P+4>>2]=0;f[P+8>>2]=0;f[P+12>>2]=0;f[P+16>>2]=0;f[P+20>>2]=0;O=P+8|0;N=P+4|0;M=P+16|0;K=P+20|0;Fc(P);d=f[N>>2]|0;e=(f[K>>2]|0)+(f[M>>2]|0)|0;if((f[O>>2]|0)==(d|0))d=0;else d=(f[d+(((e>>>0)/204|0)<<2)>>2]|0)+(((e>>>0)%204|0)*20|0)|0;f[d>>2]=g;f[d+4>>2]=h;f[d+8>>2]=0;f[d+12>>2]=(h-g|0)/12|0;f[d+16>>2]=0;d=(f[K>>2]|0)+1|0;f[K>>2]=d;a:do if(d|0){x=a+1152|0;C=a+1068|0;w=a+1124|0;B=a+1120|0;y=a+1112|0;z=a+1116|0;A=a+1108|0;b:while(1){s=f[M>>2]|0;e=d+-1|0;t=s+e|0;v=f[N>>2]|0;r=f[v+(((t>>>0)/204|0)<<2)>>2]|0;t=(t>>>0)%204|0;j=r+(t*20|0)|0;n=f[j>>2]|0;j=f[j+4>>2]|0;h=f[r+(t*20|0)+8>>2]|0;t=f[r+(t*20|0)+16>>2]|0;f[K>>2]=e;e=f[O>>2]|0;v=e-v>>2;if((1-d-s+((v|0)==0?0:(v*204|0)+-1|0)|0)>>>0>407){Lq(f[e+-4>>2]|0);f[O>>2]=(f[O>>2]|0)+-4}f[b>>2]=n;f[c>>2]=j;k=f[E>>2]|0;l=k+(t*12|0)|0;m=(f[D>>2]|0)+(t*12|0)|0;f[F>>2]=n;f[H>>2]=j;g=j;i=n;f[G>>2]=f[F>>2];f[I>>2]=f[H>>2];e=ue(a,G,I,l,m,h)|0;j=j-n|0;s=(j|0)/12|0;d=(f[a>>2]|0)-(f[(f[m>>2]|0)+(e<<2)>>2]|0)|0;c:do if(d){if(s>>>0<3){h=f[x>>2]|0;f[h>>2]=e;d=f[J>>2]|0;if(d>>>0>1){g=1;do{e=(e|0)==(d+-1|0)?0:e+1|0;f[h+(g<<2)>>2]=e;g=g+1|0;d=f[J>>2]|0}while(g>>>0>>0)}if(!j){L=69;break}else{e=d;j=0}while(1){if(!d)d=0;else{h=0;while(1){d=f[(f[x>>2]|0)+(h<<2)>>2]|0;g=(f[a>>2]|0)-(f[(f[m>>2]|0)+(d<<2)>>2]|0)|0;if(!g)d=e;else{rj(C,g,f[i+(j*12|0)+(d<<2)>>2]|0);d=f[J>>2]|0}h=h+1|0;if(h>>>0>=d>>>0){e=d;break}else e=d}}j=j+1|0;if(j>>>0>=s>>>0){L=69;break c}}}m=1<>2]|0;d=f[l>>2]|0;k=d;j=f[(f[E>>2]|0)+(v*12|0)>>2]|0;if((h|0)!=(d|0)){h=h-d>>2;d=0;do{f[j+(d<<2)>>2]=f[k+(d<<2)>>2];d=d+1|0}while(d>>>0>>0)}r=j+(e<<2)|0;j=(f[r>>2]|0)+m|0;f[r>>2]=j;d:do if((i|0)!=(g|0)){d=n;while(1){while(1){if((f[i+(e<<2)>>2]|0)>>>0>=j>>>0)break;d=i+12|0;if((d|0)==(g|0))break d;else i=d}while(1){h=g+-12|0;if((i|0)==(h|0)){g=i;break d}if((f[g+-12+(e<<2)>>2]|0)>>>0>>0)break;else g=h}p=f[i>>2]|0;q=f[i+4>>2]|0;r=f[i+8>>2]|0;f[i>>2]=f[h>>2];f[i+4>>2]=f[h+4>>2];f[i+8>>2]=f[h+8>>2];f[h>>2]=p;f[g+-8>>2]=q;f[g+-4>>2]=r;d=d+12|0;if((d|0)==(h|0)){g=h;break}else{i=d;g=h}}}while(0);p=g;q=f[c>>2]|0;m=f[b>>2]|0;l=m;n=q;if((q-m|0)<=0)break b;j=(_(s|0)|0)^31;o=(p-m|0)/12|0;r=(q-p|0)/12|0;h=o>>>0>>0;if((o|0)!=(r|0)){d=f[w>>2]|0;if(h)f[B>>2]=f[B>>2]|1<<31-d;k=d+1|0;f[w>>2]=k;if((k|0)==32){d=f[y>>2]|0;if((d|0)==(f[z>>2]|0))Bj(A,B);else{f[d>>2]=f[B>>2];f[y>>2]=d+4}f[w>>2]=0;f[B>>2]=0}}d=s>>>1;if(h){i=d-o|0;if(j|0){d=0;h=1<>>1}}}else{i=d-r|0;if(j|0){d=0;h=1<>>1}}}d=f[D>>2]|0;k=f[d+(t*12|0)>>2]|0;h=k+(e<<2)|0;f[h>>2]=(f[h>>2]|0)+1;h=f[d+(t*12|0)+4>>2]|0;i=k;if((h|0)!=(i|0)){j=f[d+(v*12|0)>>2]|0;h=h-i>>2;d=0;do{f[j+(d<<2)>>2]=f[k+(d<<2)>>2];d=d+1|0}while(d>>>0>>0)}if((g|0)!=(l|0)){j=f[O>>2]|0;i=f[N>>2]|0;s=j-i>>2;d=f[M>>2]|0;h=f[K>>2]|0;if((((s|0)==0?0:(s*204|0)+-1|0)|0)==(h+d|0)){Fc(P);d=f[M>>2]|0;h=f[K>>2]|0;j=f[O>>2]|0;i=f[N>>2]|0}d=h+d|0;if((j|0)==(i|0))d=0;else d=(f[i+(((d>>>0)/204|0)<<2)>>2]|0)+(((d>>>0)%204|0)*20|0)|0;f[d>>2]=m;f[d+4>>2]=p;f[d+8>>2]=e;f[d+12>>2]=o;f[d+16>>2]=t;f[K>>2]=(f[K>>2]|0)+1}if((g|0)!=(n|0)){i=f[O>>2]|0;h=f[N>>2]|0;t=i-h>>2;d=f[M>>2]|0;g=f[K>>2]|0;if((((t|0)==0?0:(t*204|0)+-1|0)|0)==(g+d|0)){Fc(P);d=f[M>>2]|0;g=f[K>>2]|0;i=f[O>>2]|0;h=f[N>>2]|0}d=g+d|0;if((i|0)==(h|0))d=0;else d=(f[h+(((d>>>0)/204|0)<<2)>>2]|0)+(((d>>>0)%204|0)*20|0)|0;f[d>>2]=p;f[d+4>>2]=q;f[d+8>>2]=e;f[d+12>>2]=r;f[d+16>>2]=v;d=(f[K>>2]|0)+1|0;f[K>>2]=d}else L=69}else L=69;while(0);if((L|0)==69){L=0;d=f[K>>2]|0}if(!d)break a}Fa(15833,15863,332,15951)}while(0);d=f[N>>2]|0;e=f[M>>2]|0;h=d+(((e>>>0)/204|0)<<2)|0;g=f[O>>2]|0;j=g;k=d;if((g|0)==(d|0)){i=0;e=0}else{e=(f[h>>2]|0)+(((e>>>0)%204|0)*20|0)|0;i=e}e:while(1){do{if((e|0)==(i|0))break e;e=e+20|0}while((e-(f[h>>2]|0)|0)!=4080);e=h+4|0;h=e;e=f[e>>2]|0}f[K>>2]=0;e=j-k>>2;if(e>>>0>2)do{Lq(f[d>>2]|0);d=(f[N>>2]|0)+4|0;f[N>>2]=d;g=f[O>>2]|0;e=g-d>>2}while(e>>>0>2);switch(e|0){case 1:{e=102;L=83;break}case 2:{e=204;L=83;break}default:{}}if((L|0)==83)f[M>>2]=e;if((d|0)!=(g|0)){do{Lq(f[d>>2]|0);d=d+4|0}while((d|0)!=(g|0));d=f[N>>2]|0;e=f[O>>2]|0;if((e|0)!=(d|0))f[O>>2]=e+(~((e+-4-d|0)>>>2)<<2)}d=f[P>>2]|0;if(!d){u=Q;return}Lq(d);u=Q;return}function jb(a){a=a|0;var c=0,d=0,e=0,g=Ka,h=Ka,i=0,j=0,k=0,l=0,m=0,o=0,p=0,q=0,r=0,s=0,t=0,v=0,w=0,x=0,y=0,z=0,A=0,B=0,C=0,D=0,E=0,F=0,G=0,H=0,I=0,J=0,K=0,L=0,M=0,N=0,O=0,P=0,Q=0,R=0,S=0,T=0,U=Ka;T=u;u=u+64|0;S=T+28|0;Q=T+16|0;O=T+4|0;L=T;R=a;M=a+68|0;c=f[M>>2]|0;f[S>>2]=0;f[S+4>>2]=0;f[S+8>>2]=0;f[S+12>>2]=0;f[S+16>>2]=R;H=S+20|0;n[H>>2]=$(1.0);f[S+24>>2]=R;qi(S,c);c=f[M>>2]|0;f[Q>>2]=0;R=Q+4|0;f[R>>2]=0;f[Q+8>>2]=0;do if(c|0)if(c>>>0>1073741823){zp(Q);T=Ha(4)|0;qq(T);sa(T|0,1040,102)}else{G=c<<2;F=Fn(G)|0;f[Q>>2]=F;P=F+(c<<2)|0;f[Q+8>>2]=P;Xj(F|0,0,G|0)|0;f[R>>2]=P;break}while(0);f[O>>2]=0;P=O+4|0;f[P>>2]=0;f[O+8>>2]=0;f[L>>2]=0;a:do if((c|0)>0){F=S+16|0;C=S+4|0;E=S+12|0;B=S+8|0;D=O+8|0;G=S+24|0;c=0;z=0;b:while(1){w=f[F>>2]|0;k=f[w+8>>2]|0;w=(f[w+12>>2]|0)-k|0;v=(w|0)>0;if(v){i=k;l=w>>>2;d=0;j=0;do{e=f[i+(j<<2)>>2]|0;if(!(b[e+84>>0]|0))e=f[(f[e+68>>2]|0)+(c<<2)>>2]|0;else e=c;d=e<<2^d<<1;j=j+1|0}while((j|0)<(l|0))}else d=0;x=f[C>>2]|0;y=(x|0)==0;c:do if(!y){q=x+-1|0;e=(q&x|0)==0;if(e)t=q&d;else t=(d>>>0)%(x>>>0)|0;d=f[(f[S>>2]|0)+(t<<2)>>2]|0;if((d|0)!=0?(K=f[d>>2]|0,(K|0)!=0):0){r=f[G>>2]|0;s=r+8|0;r=r+12|0;d:do if(e){d=K;while(1){if((f[d+4>>2]&q|0)!=(t|0)){A=45;break c}p=f[d+8>>2]|0;e=f[s>>2]|0;i=(f[r>>2]|0)-e|0;if((i|0)<=0)break d;o=i>>>2;m=0;while(1){i=f[e+(m<<2)>>2]|0;j=(b[i+84>>0]|0)==0;if(j)l=f[(f[i+68>>2]|0)+(p<<2)>>2]|0;else l=p;if((o|0)<=(m|0)){A=39;break b}if(j)i=f[(f[i+68>>2]|0)+(c<<2)>>2]|0;else i=c;m=m+1|0;if((l|0)!=(i|0))break;if((m|0)>=(o|0)){A=43;break d}}d=f[d>>2]|0;if(!d){A=45;break c}}}else{d=K;while(1){if((((f[d+4>>2]|0)>>>0)%(x>>>0)|0|0)!=(t|0)){A=45;break c}p=f[d+8>>2]|0;e=f[s>>2]|0;i=(f[r>>2]|0)-e|0;if((i|0)<=0)break d;o=i>>>2;m=0;while(1){i=f[e+(m<<2)>>2]|0;j=(b[i+84>>0]|0)==0;if(j)l=f[(f[i+68>>2]|0)+(p<<2)>>2]|0;else l=p;if((o|0)<=(m|0)){A=39;break b}if(j)i=f[(f[i+68>>2]|0)+(c<<2)>>2]|0;else i=c;m=m+1|0;if((l|0)!=(i|0))break;if((m|0)>=(o|0)){A=43;break d}}d=f[d>>2]|0;if(!d){A=45;break c}}}while(0);if((A|0)==43){A=0;if(!d){A=45;break}}f[(f[Q>>2]|0)+(c<<2)>>2]=f[d+12>>2];e=z}else A=45}else A=45;while(0);do if((A|0)==45){A=0;if(v){j=w>>>2;d=0;i=0;do{e=f[k+(i<<2)>>2]|0;if(!(b[e+84>>0]|0))e=f[(f[e+68>>2]|0)+(c<<2)>>2]|0;else e=c;d=e<<2^d<<1;i=i+1|0}while((i|0)<(j|0));t=d}else t=0;e:do if(!y){p=x+-1|0;e=(p&x|0)==0;if(e)s=p&t;else s=(t>>>0)%(x>>>0)|0;d=f[(f[S>>2]|0)+(s<<2)>>2]|0;if((d|0)!=0?(J=f[d>>2]|0,(J|0)!=0):0){q=f[G>>2]|0;r=q+8|0;q=q+12|0;if(e){m=J;while(1){if((f[m+4>>2]&p|0)!=(s|0)){d=s;A=80;break e}o=f[m+8>>2]|0;d=f[r>>2]|0;e=(f[q>>2]|0)-d|0;if((e|0)<=0)break e;l=e>>>2;k=0;while(1){e=f[d+(k<<2)>>2]|0;i=(b[e+84>>0]|0)==0;if(i)j=f[(f[e+68>>2]|0)+(o<<2)>>2]|0;else j=o;if((l|0)<=(k|0)){A=76;break b}if(i)e=f[(f[e+68>>2]|0)+(c<<2)>>2]|0;else e=c;k=k+1|0;if((j|0)!=(e|0))break;if((k|0)>=(l|0))break e}m=f[m>>2]|0;if(!m){d=s;A=80;break}}}else{m=J;while(1){if((((f[m+4>>2]|0)>>>0)%(x>>>0)|0|0)!=(s|0)){d=s;A=80;break e}o=f[m+8>>2]|0;d=f[r>>2]|0;e=(f[q>>2]|0)-d|0;if((e|0)<=0)break e;l=e>>>2;k=0;while(1){e=f[d+(k<<2)>>2]|0;i=(b[e+84>>0]|0)==0;if(i)j=f[(f[e+68>>2]|0)+(o<<2)>>2]|0;else j=o;if((l|0)<=(k|0)){A=76;break b}if(i)e=f[(f[e+68>>2]|0)+(c<<2)>>2]|0;else e=c;k=k+1|0;if((j|0)!=(e|0))break;if((k|0)>=(l|0))break e}m=f[m>>2]|0;if(!m){d=s;A=80;break}}}}else{d=s;A=80}}else{d=0;A=80}while(0);if((A|0)==80){A=0;i=Fn(16)|0;f[i+8>>2]=c;f[i+12>>2]=z;f[i+4>>2]=t;f[i>>2]=0;h=$(((f[E>>2]|0)+1|0)>>>0);U=$(x>>>0);g=$(n[H>>2]);do if(y|h>$(U*g)){c=(x>>>0<3|(x+-1&x|0)!=0)&1|x<<1;d=~~$(W($(h/g)))>>>0;qi(S,c>>>0>>0?d:c);c=f[C>>2]|0;d=c+-1|0;if(!(d&c)){e=c;c=d&t;break}else{e=c;c=(t>>>0)%(c>>>0)|0;break}}else{e=x;c=d}while(0);d=(f[S>>2]|0)+(c<<2)|0;c=f[d>>2]|0;if(!c){f[i>>2]=f[B>>2];f[B>>2]=i;f[d>>2]=B;c=f[i>>2]|0;if(c|0){c=f[c+4>>2]|0;d=e+-1|0;if(!(d&e))c=c&d;else c=(c>>>0)%(e>>>0)|0;c=(f[S>>2]|0)+(c<<2)|0;A=91}}else{f[i>>2]=f[c>>2];A=91}if((A|0)==91){A=0;f[c>>2]=i}f[E>>2]=(f[E>>2]|0)+1;c=f[L>>2]|0}e=z+1|0;f[(f[Q>>2]|0)+(c<<2)>>2]=z;c=f[P>>2]|0;if((c|0)==(f[D>>2]|0)){Bj(O,L);break}else{f[c>>2]=f[L>>2];f[P>>2]=c+4;break}}while(0);c=(f[L>>2]|0)+1|0;f[L>>2]=c;d=f[M>>2]|0;if((c|0)>=(d|0)){I=d;N=e;break a}else z=e}if((A|0)==39)Fa(17639,17693,72,17731);else if((A|0)==76)Fa(17639,17693,72,17731)}else{I=0;N=0}while(0);if((N|0)!=(I|0)){Sa[f[(f[a>>2]|0)+24>>2]&7](a,Q,O);f[M>>2]=N}c=f[O>>2]|0;if(c|0){d=f[P>>2]|0;if((d|0)!=(c|0))f[P>>2]=d+(~((d+-4-c|0)>>>2)<<2);Lq(c)}c=f[Q>>2]|0;if(c|0){d=f[R>>2]|0;if((d|0)!=(c|0))f[R>>2]=d+(~((d+-4-c|0)>>>2)<<2);Lq(c)}c=f[S+8>>2]|0;if(c|0)do{R=c;c=f[c>>2]|0;Lq(R)}while((c|0)!=0);c=f[S>>2]|0;f[S>>2]=0;if(!c){u=T;return}Lq(c);u=T;return}function kb(a,b,c){a=a|0;b=b|0;c=c|0;var d=0,e=0,g=0,h=0,i=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,v=0,w=0,x=0,y=0,z=0,A=0,B=0,C=0,D=0,E=0,F=0,G=0,H=0,I=0,J=0,K=0,L=0,M=0;M=u;u=u+32|0;L=M+8|0;i=M;F=a+8|0;E=f[F>>2]|0;f[i>>2]=0;Bk(L,E,i);E=a+1164|0;h=f[E>>2]|0;d=f[h>>2]|0;g=h+4|0;if(!d)d=h+8|0;else{e=f[g>>2]|0;if((e|0)!=(d|0))f[g>>2]=e+(~((e+-4-d|0)>>>2)<<2);Lq(d);d=h+8|0;f[d>>2]=0;f[g>>2]=0;f[h>>2]=0}f[h>>2]=f[L>>2];f[g>>2]=f[L+4>>2];f[d>>2]=f[L+8>>2];D=f[F>>2]|0;f[i>>2]=0;Bk(L,D,i);D=a+1176|0;h=f[D>>2]|0;d=f[h>>2]|0;g=h+4|0;if(!d)d=h+8|0;else{e=f[g>>2]|0;if((e|0)!=(d|0))f[g>>2]=e+(~((e+-4-d|0)>>>2)<<2);Lq(d);d=h+8|0;f[d>>2]=0;f[g>>2]=0;f[h>>2]=0}f[h>>2]=f[L>>2];f[g>>2]=f[L+4>>2];f[d>>2]=f[L+8>>2];g=f[b>>2]|0;h=f[c>>2]|0;f[L>>2]=0;f[L+4>>2]=0;f[L+8>>2]=0;f[L+12>>2]=0;f[L+16>>2]=0;f[L+20>>2]=0;K=L+8|0;J=L+4|0;I=L+16|0;G=L+20|0;Fc(L);d=f[J>>2]|0;e=(f[G>>2]|0)+(f[I>>2]|0)|0;if((f[K>>2]|0)==(d|0))d=0;else d=(f[d+(((e>>>0)/204|0)<<2)>>2]|0)+(((e>>>0)%204|0)*20|0)|0;f[d>>2]=g;f[d+4>>2]=h;f[d+8>>2]=0;f[d+12>>2]=(h-g|0)/12|0;f[d+16>>2]=0;d=(f[G>>2]|0)+1|0;f[G>>2]=d;a:do if(d|0){x=a+1152|0;C=a+1068|0;w=a+1124|0;B=a+1120|0;y=a+1112|0;z=a+1116|0;A=a+1108|0;b:while(1){s=f[I>>2]|0;e=d+-1|0;t=s+e|0;v=f[J>>2]|0;r=f[v+(((t>>>0)/204|0)<<2)>>2]|0;t=(t>>>0)%204|0;h=r+(t*20|0)|0;n=f[h>>2]|0;h=f[h+4>>2]|0;g=f[r+(t*20|0)+8>>2]|0;t=f[r+(t*20|0)+16>>2]|0;f[G>>2]=e;e=f[K>>2]|0;v=e-v>>2;if((1-d-s+((v|0)==0?0:(v*204|0)+-1|0)|0)>>>0>407){Lq(f[e+-4>>2]|0);f[K>>2]=(f[K>>2]|0)+-4}f[b>>2]=n;f[c>>2]=h;m=f[E>>2]|0;j=m+(t*12|0)|0;e=((f[F>>2]|0)+-1|0)==(g|0)?0:g+1|0;l=(f[D>>2]|0)+(t*12|0)|0;k=h-n|0;s=(k|0)/12|0;d=(f[a>>2]|0)-(f[(f[l>>2]|0)+(e<<2)>>2]|0)|0;g=h;i=n;c:do if(d){if(s>>>0<3){h=f[x>>2]|0;f[h>>2]=e;d=f[F>>2]|0;if(d>>>0>1){g=1;do{e=(e|0)==(d+-1|0)?0:e+1|0;f[h+(g<<2)>>2]=e;g=g+1|0;d=f[F>>2]|0}while(g>>>0>>0)}if(!k){H=69;break}else{e=d;j=0}while(1){if(!d)d=0;else{h=0;while(1){d=f[(f[x>>2]|0)+(h<<2)>>2]|0;g=(f[a>>2]|0)-(f[(f[l>>2]|0)+(d<<2)>>2]|0)|0;if(!g)d=e;else{rj(C,g,f[i+(j*12|0)+(d<<2)>>2]|0);d=f[F>>2]|0}h=h+1|0;if(h>>>0>=d>>>0){e=d;break}else e=d}}j=j+1|0;if(j>>>0>=s>>>0){H=69;break c}}}l=1<>2]|0;d=f[j>>2]|0;k=d;j=f[m+(v*12|0)>>2]|0;if((h|0)!=(d|0)){h=h-d>>2;d=0;do{f[j+(d<<2)>>2]=f[k+(d<<2)>>2];d=d+1|0}while(d>>>0>>0)}r=j+(e<<2)|0;j=(f[r>>2]|0)+l|0;f[r>>2]=j;d:do if((i|0)!=(g|0)){d=n;while(1){while(1){if((f[i+(e<<2)>>2]|0)>>>0>=j>>>0)break;d=i+12|0;if((d|0)==(g|0))break d;else i=d}while(1){h=g+-12|0;if((i|0)==(h|0)){g=i;break d}if((f[g+-12+(e<<2)>>2]|0)>>>0>>0)break;else g=h}p=f[i>>2]|0;q=f[i+4>>2]|0;r=f[i+8>>2]|0;f[i>>2]=f[h>>2];f[i+4>>2]=f[h+4>>2];f[i+8>>2]=f[h+8>>2];f[h>>2]=p;f[g+-8>>2]=q;f[g+-4>>2]=r;d=d+12|0;if((d|0)==(h|0)){g=h;break}else{i=d;g=h}}}while(0);p=g;q=f[c>>2]|0;m=f[b>>2]|0;l=m;n=q;if((q-m|0)<=0)break b;j=(_(s|0)|0)^31;o=(p-m|0)/12|0;r=(q-p|0)/12|0;h=o>>>0>>0;if((o|0)!=(r|0)){d=f[w>>2]|0;if(h)f[B>>2]=f[B>>2]|1<<31-d;k=d+1|0;f[w>>2]=k;if((k|0)==32){d=f[y>>2]|0;if((d|0)==(f[z>>2]|0))Bj(A,B);else{f[d>>2]=f[B>>2];f[y>>2]=d+4}f[w>>2]=0;f[B>>2]=0}}d=s>>>1;if(h){i=d-o|0;if(j|0){d=0;h=1<>>1}}}else{i=d-r|0;if(j|0){d=0;h=1<>>1}}}d=f[D>>2]|0;k=f[d+(t*12|0)>>2]|0;h=k+(e<<2)|0;f[h>>2]=(f[h>>2]|0)+1;h=f[d+(t*12|0)+4>>2]|0;i=k;if((h|0)!=(i|0)){j=f[d+(v*12|0)>>2]|0;h=h-i>>2;d=0;do{f[j+(d<<2)>>2]=f[k+(d<<2)>>2];d=d+1|0}while(d>>>0>>0)}if((g|0)!=(l|0)){j=f[K>>2]|0;i=f[J>>2]|0;s=j-i>>2;d=f[I>>2]|0;h=f[G>>2]|0;if((((s|0)==0?0:(s*204|0)+-1|0)|0)==(h+d|0)){Fc(L);d=f[I>>2]|0;h=f[G>>2]|0;j=f[K>>2]|0;i=f[J>>2]|0}d=h+d|0;if((j|0)==(i|0))d=0;else d=(f[i+(((d>>>0)/204|0)<<2)>>2]|0)+(((d>>>0)%204|0)*20|0)|0;f[d>>2]=m;f[d+4>>2]=p;f[d+8>>2]=e;f[d+12>>2]=o;f[d+16>>2]=t;f[G>>2]=(f[G>>2]|0)+1}if((g|0)!=(n|0)){i=f[K>>2]|0;h=f[J>>2]|0;t=i-h>>2;d=f[I>>2]|0;g=f[G>>2]|0;if((((t|0)==0?0:(t*204|0)+-1|0)|0)==(g+d|0)){Fc(L);d=f[I>>2]|0;g=f[G>>2]|0;i=f[K>>2]|0;h=f[J>>2]|0}d=g+d|0;if((i|0)==(h|0))d=0;else d=(f[h+(((d>>>0)/204|0)<<2)>>2]|0)+(((d>>>0)%204|0)*20|0)|0;f[d>>2]=p;f[d+4>>2]=q;f[d+8>>2]=e;f[d+12>>2]=r;f[d+16>>2]=v;d=(f[G>>2]|0)+1|0;f[G>>2]=d}else H=69}else H=69;while(0);if((H|0)==69){H=0;d=f[G>>2]|0}if(!d)break a}Fa(15833,15863,332,15951)}while(0);d=f[J>>2]|0;e=f[I>>2]|0;h=d+(((e>>>0)/204|0)<<2)|0;g=f[K>>2]|0;j=g;k=d;if((g|0)==(d|0)){i=0;e=0}else{e=(f[h>>2]|0)+(((e>>>0)%204|0)*20|0)|0;i=e}e:while(1){do{if((e|0)==(i|0))break e;e=e+20|0}while((e-(f[h>>2]|0)|0)!=4080);e=h+4|0;h=e;e=f[e>>2]|0}f[G>>2]=0;e=j-k>>2;if(e>>>0>2)do{Lq(f[d>>2]|0);d=(f[J>>2]|0)+4|0;f[J>>2]=d;g=f[K>>2]|0;e=g-d>>2}while(e>>>0>2);switch(e|0){case 1:{e=102;H=83;break}case 2:{e=204;H=83;break}default:{}}if((H|0)==83)f[I>>2]=e;if((d|0)!=(g|0)){do{Lq(f[d>>2]|0);d=d+4|0}while((d|0)!=(g|0));d=f[J>>2]|0;e=f[K>>2]|0;if((e|0)!=(d|0))f[K>>2]=e+(~((e+-4-d|0)>>>2)<<2)}d=f[L>>2]|0;if(!d){u=M;return}Lq(d);u=M;return}function lb(a,b,c){a=a|0;b=b|0;c=c|0;var d=0,e=0,g=0,h=0,i=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,v=0,w=0,x=0,y=0,z=0,A=0,B=0,C=0,D=0,E=0,F=0,G=0,H=0,I=0,J=0,K=0,L=0,M=0,N=0;N=u;u=u+32|0;M=N+8|0;i=N;G=a+8|0;F=f[G>>2]|0;f[i>>2]=0;Bk(M,F,i);F=a+128|0;h=f[F>>2]|0;d=f[h>>2]|0;g=h+4|0;if(!d)d=h+8|0;else{e=f[g>>2]|0;if((e|0)!=(d|0))f[g>>2]=e+(~((e+-4-d|0)>>>2)<<2);Lq(d);d=h+8|0;f[d>>2]=0;f[g>>2]=0;f[h>>2]=0}f[h>>2]=f[M>>2];f[g>>2]=f[M+4>>2];f[d>>2]=f[M+8>>2];E=f[G>>2]|0;f[i>>2]=0;Bk(M,E,i);E=a+140|0;h=f[E>>2]|0;d=f[h>>2]|0;g=h+4|0;if(!d)d=h+8|0;else{e=f[g>>2]|0;if((e|0)!=(d|0))f[g>>2]=e+(~((e+-4-d|0)>>>2)<<2);Lq(d);d=h+8|0;f[d>>2]=0;f[g>>2]=0;f[h>>2]=0}f[h>>2]=f[M>>2];f[g>>2]=f[M+4>>2];f[d>>2]=f[M+8>>2];g=f[b>>2]|0;h=f[c>>2]|0;f[M>>2]=0;f[M+4>>2]=0;f[M+8>>2]=0;f[M+12>>2]=0;f[M+16>>2]=0;f[M+20>>2]=0;L=M+8|0;K=M+4|0;J=M+16|0;H=M+20|0;Fc(M);d=f[K>>2]|0;e=(f[H>>2]|0)+(f[J>>2]|0)|0;if((f[L>>2]|0)==(d|0))d=0;else d=(f[d+(((e>>>0)/204|0)<<2)>>2]|0)+(((e>>>0)%204|0)*20|0)|0;f[d>>2]=g;f[d+4>>2]=h;f[d+8>>2]=0;f[d+12>>2]=(h-g|0)/12|0;f[d+16>>2]=0;d=(f[H>>2]|0)+1|0;f[H>>2]=d;a:do if(d|0){x=a+116|0;D=a+32|0;C=a+12|0;w=a+88|0;B=a+84|0;y=a+76|0;z=a+80|0;A=a+72|0;b:while(1){s=f[J>>2]|0;e=d+-1|0;t=s+e|0;v=f[K>>2]|0;r=f[v+(((t>>>0)/204|0)<<2)>>2]|0;t=(t>>>0)%204|0;h=r+(t*20|0)|0;n=f[h>>2]|0;h=f[h+4>>2]|0;g=f[r+(t*20|0)+8>>2]|0;t=f[r+(t*20|0)+16>>2]|0;f[H>>2]=e;e=f[L>>2]|0;v=e-v>>2;if((1-d-s+((v|0)==0?0:(v*204|0)+-1|0)|0)>>>0>407){Lq(f[e+-4>>2]|0);f[L>>2]=(f[L>>2]|0)+-4}f[b>>2]=n;f[c>>2]=h;m=f[F>>2]|0;j=m+(t*12|0)|0;e=((f[G>>2]|0)+-1|0)==(g|0)?0:g+1|0;l=(f[E>>2]|0)+(t*12|0)|0;k=h-n|0;s=(k|0)/12|0;d=(f[a>>2]|0)-(f[(f[l>>2]|0)+(e<<2)>>2]|0)|0;g=h;i=n;c:do if(d){if(s>>>0<3){h=f[x>>2]|0;f[h>>2]=e;d=f[G>>2]|0;if(d>>>0>1){g=1;do{e=(e|0)==(d+-1|0)?0:e+1|0;f[h+(g<<2)>>2]=e;g=g+1|0;d=f[G>>2]|0}while(g>>>0>>0)}if(!k){I=65;break}else{e=d;j=0}while(1){if(!d)d=0;else{h=0;while(1){d=f[(f[x>>2]|0)+(h<<2)>>2]|0;g=(f[a>>2]|0)-(f[(f[l>>2]|0)+(d<<2)>>2]|0)|0;if(!g)d=e;else{rj(D,g,f[i+(j*12|0)+(d<<2)>>2]|0);d=f[G>>2]|0}h=h+1|0;if(h>>>0>=d>>>0){e=d;break}else e=d}}j=j+1|0;if(j>>>0>=s>>>0){I=65;break c}}}l=1<>2]|0;d=f[j>>2]|0;k=d;j=f[m+(v*12|0)>>2]|0;if((h|0)!=(d|0)){h=h-d>>2;d=0;do{f[j+(d<<2)>>2]=f[k+(d<<2)>>2];d=d+1|0}while(d>>>0>>0)}r=j+(e<<2)|0;j=(f[r>>2]|0)+l|0;f[r>>2]=j;d:do if((i|0)!=(g|0)){d=n;while(1){while(1){if((f[i+(e<<2)>>2]|0)>>>0>=j>>>0)break;d=i+12|0;if((d|0)==(g|0))break d;else i=d}while(1){h=g+-12|0;if((i|0)==(h|0)){g=i;break d}if((f[g+-12+(e<<2)>>2]|0)>>>0>>0)break;else g=h}p=f[i>>2]|0;q=f[i+4>>2]|0;r=f[i+8>>2]|0;f[i>>2]=f[h>>2];f[i+4>>2]=f[h+4>>2];f[i+8>>2]=f[h+8>>2];f[h>>2]=p;f[g+-8>>2]=q;f[g+-4>>2]=r;d=d+12|0;if((d|0)==(h|0)){g=h;break}else{i=d;g=h}}}while(0);p=g;q=f[c>>2]|0;m=f[b>>2]|0;l=m;n=q;if((q-m|0)<=0)break b;i=(_(s|0)|0)^31;o=(p-m|0)/12|0;r=(q-p|0)/12|0;h=o>>>0>>0;if((o|0)!=(r|0)){d=f[w>>2]|0;if(h)f[B>>2]=f[B>>2]|1<<31-d;k=d+1|0;f[w>>2]=k;if((k|0)==32){d=f[y>>2]|0;if((d|0)==(f[z>>2]|0))Bj(A,B);else{f[d>>2]=f[B>>2];f[y>>2]=d+4}f[w>>2]=0;f[B>>2]=0}}d=s>>>1;if(h)rj(C,i,d-o|0);else rj(C,i,d-r|0);d=f[E>>2]|0;k=f[d+(t*12|0)>>2]|0;h=k+(e<<2)|0;f[h>>2]=(f[h>>2]|0)+1;h=f[d+(t*12|0)+4>>2]|0;i=k;if((h|0)!=(i|0)){j=f[d+(v*12|0)>>2]|0;h=h-i>>2;d=0;do{f[j+(d<<2)>>2]=f[k+(d<<2)>>2];d=d+1|0}while(d>>>0>>0)}if((g|0)!=(l|0)){j=f[L>>2]|0;i=f[K>>2]|0;s=j-i>>2;d=f[J>>2]|0;h=f[H>>2]|0;if((((s|0)==0?0:(s*204|0)+-1|0)|0)==(h+d|0)){Fc(M);d=f[J>>2]|0;h=f[H>>2]|0;j=f[L>>2]|0;i=f[K>>2]|0}d=h+d|0;if((j|0)==(i|0))d=0;else d=(f[i+(((d>>>0)/204|0)<<2)>>2]|0)+(((d>>>0)%204|0)*20|0)|0;f[d>>2]=m;f[d+4>>2]=p;f[d+8>>2]=e;f[d+12>>2]=o;f[d+16>>2]=t;f[H>>2]=(f[H>>2]|0)+1}if((g|0)!=(n|0)){i=f[L>>2]|0;h=f[K>>2]|0;t=i-h>>2;d=f[J>>2]|0;g=f[H>>2]|0;if((((t|0)==0?0:(t*204|0)+-1|0)|0)==(g+d|0)){Fc(M);d=f[J>>2]|0;g=f[H>>2]|0;i=f[L>>2]|0;h=f[K>>2]|0}d=g+d|0;if((i|0)==(h|0))d=0;else d=(f[h+(((d>>>0)/204|0)<<2)>>2]|0)+(((d>>>0)%204|0)*20|0)|0;f[d>>2]=p;f[d+4>>2]=q;f[d+8>>2]=e;f[d+12>>2]=r;f[d+16>>2]=v;d=(f[H>>2]|0)+1|0;f[H>>2]=d}else I=65}else I=65;while(0);if((I|0)==65){I=0;d=f[H>>2]|0}if(!d)break a}Fa(15833,15863,332,15951)}while(0);d=f[K>>2]|0;e=f[J>>2]|0;h=d+(((e>>>0)/204|0)<<2)|0;g=f[L>>2]|0;j=g;k=d;if((g|0)==(d|0)){i=0;e=0}else{e=(f[h>>2]|0)+(((e>>>0)%204|0)*20|0)|0;i=e}e:while(1){do{if((e|0)==(i|0))break e;e=e+20|0}while((e-(f[h>>2]|0)|0)!=4080);e=h+4|0;h=e;e=f[e>>2]|0}f[H>>2]=0;e=j-k>>2;if(e>>>0>2)do{Lq(f[d>>2]|0);d=(f[K>>2]|0)+4|0;f[K>>2]=d;g=f[L>>2]|0;e=g-d>>2}while(e>>>0>2);switch(e|0){case 1:{e=102;I=79;break}case 2:{e=204;I=79;break}default:{}}if((I|0)==79)f[J>>2]=e;if((d|0)!=(g|0)){do{Lq(f[d>>2]|0);d=d+4|0}while((d|0)!=(g|0));d=f[K>>2]|0;e=f[L>>2]|0;if((e|0)!=(d|0))f[L>>2]=e+(~((e+-4-d|0)>>>2)<<2)}d=f[M>>2]|0;if(!d){u=N;return}Lq(d);u=N;return}function mb(a,b,c){a=a|0;b=b|0;c=c|0;var d=0,e=0,g=0,h=0,i=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,v=0,w=0,x=0,y=0,z=0,A=0,B=0,C=0,D=0,E=0,F=0,G=0,H=0,I=0,J=0,K=0,L=0,M=0,N=0;N=u;u=u+32|0;M=N+8|0;i=N;G=a+8|0;F=f[G>>2]|0;f[i>>2]=0;Bk(M,F,i);F=a+140|0;h=f[F>>2]|0;d=f[h>>2]|0;g=h+4|0;if(!d)d=h+8|0;else{e=f[g>>2]|0;if((e|0)!=(d|0))f[g>>2]=e+(~((e+-4-d|0)>>>2)<<2);Lq(d);d=h+8|0;f[d>>2]=0;f[g>>2]=0;f[h>>2]=0}f[h>>2]=f[M>>2];f[g>>2]=f[M+4>>2];f[d>>2]=f[M+8>>2];E=f[G>>2]|0;f[i>>2]=0;Bk(M,E,i);E=a+152|0;h=f[E>>2]|0;d=f[h>>2]|0;g=h+4|0;if(!d)d=h+8|0;else{e=f[g>>2]|0;if((e|0)!=(d|0))f[g>>2]=e+(~((e+-4-d|0)>>>2)<<2);Lq(d);d=h+8|0;f[d>>2]=0;f[g>>2]=0;f[h>>2]=0}f[h>>2]=f[M>>2];f[g>>2]=f[M+4>>2];f[d>>2]=f[M+8>>2];g=f[b>>2]|0;h=f[c>>2]|0;f[M>>2]=0;f[M+4>>2]=0;f[M+8>>2]=0;f[M+12>>2]=0;f[M+16>>2]=0;f[M+20>>2]=0;L=M+8|0;K=M+4|0;J=M+16|0;H=M+20|0;Fc(M);d=f[K>>2]|0;e=(f[H>>2]|0)+(f[J>>2]|0)|0;if((f[L>>2]|0)==(d|0))d=0;else d=(f[d+(((e>>>0)/204|0)<<2)>>2]|0)+(((e>>>0)%204|0)*20|0)|0;f[d>>2]=g;f[d+4>>2]=h;f[d+8>>2]=0;f[d+12>>2]=(h-g|0)/12|0;f[d+16>>2]=0;d=(f[H>>2]|0)+1|0;f[H>>2]=d;a:do if(d|0){x=a+128|0;D=a+44|0;C=a+12|0;w=a+100|0;B=a+96|0;y=a+88|0;z=a+92|0;A=a+84|0;b:while(1){s=f[J>>2]|0;e=d+-1|0;t=s+e|0;v=f[K>>2]|0;r=f[v+(((t>>>0)/204|0)<<2)>>2]|0;t=(t>>>0)%204|0;h=r+(t*20|0)|0;n=f[h>>2]|0;h=f[h+4>>2]|0;g=f[r+(t*20|0)+8>>2]|0;t=f[r+(t*20|0)+16>>2]|0;f[H>>2]=e;e=f[L>>2]|0;v=e-v>>2;if((1-d-s+((v|0)==0?0:(v*204|0)+-1|0)|0)>>>0>407){Lq(f[e+-4>>2]|0);f[L>>2]=(f[L>>2]|0)+-4}f[b>>2]=n;f[c>>2]=h;m=f[F>>2]|0;j=m+(t*12|0)|0;e=((f[G>>2]|0)+-1|0)==(g|0)?0:g+1|0;l=(f[E>>2]|0)+(t*12|0)|0;k=h-n|0;s=(k|0)/12|0;d=(f[a>>2]|0)-(f[(f[l>>2]|0)+(e<<2)>>2]|0)|0;g=h;i=n;c:do if(d){if(s>>>0<3){h=f[x>>2]|0;f[h>>2]=e;d=f[G>>2]|0;if(d>>>0>1){g=1;do{e=(e|0)==(d+-1|0)?0:e+1|0;f[h+(g<<2)>>2]=e;g=g+1|0;d=f[G>>2]|0}while(g>>>0>>0)}if(!k){I=65;break}else{e=d;j=0}while(1){if(!d)d=0;else{h=0;while(1){d=f[(f[x>>2]|0)+(h<<2)>>2]|0;g=(f[a>>2]|0)-(f[(f[l>>2]|0)+(d<<2)>>2]|0)|0;if(!g)d=e;else{rj(D,g,f[i+(j*12|0)+(d<<2)>>2]|0);d=f[G>>2]|0}h=h+1|0;if(h>>>0>=d>>>0){e=d;break}else e=d}}j=j+1|0;if(j>>>0>=s>>>0){I=65;break c}}}l=1<>2]|0;d=f[j>>2]|0;k=d;j=f[m+(v*12|0)>>2]|0;if((h|0)!=(d|0)){h=h-d>>2;d=0;do{f[j+(d<<2)>>2]=f[k+(d<<2)>>2];d=d+1|0}while(d>>>0>>0)}r=j+(e<<2)|0;j=(f[r>>2]|0)+l|0;f[r>>2]=j;d:do if((i|0)!=(g|0)){d=n;while(1){while(1){if((f[i+(e<<2)>>2]|0)>>>0>=j>>>0)break;d=i+12|0;if((d|0)==(g|0))break d;else i=d}while(1){h=g+-12|0;if((i|0)==(h|0)){g=i;break d}if((f[g+-12+(e<<2)>>2]|0)>>>0>>0)break;else g=h}p=f[i>>2]|0;q=f[i+4>>2]|0;r=f[i+8>>2]|0;f[i>>2]=f[h>>2];f[i+4>>2]=f[h+4>>2];f[i+8>>2]=f[h+8>>2];f[h>>2]=p;f[g+-8>>2]=q;f[g+-4>>2]=r;d=d+12|0;if((d|0)==(h|0)){g=h;break}else{i=d;g=h}}}while(0);p=g;q=f[c>>2]|0;m=f[b>>2]|0;l=m;n=q;if((q-m|0)<=0)break b;i=(_(s|0)|0)^31;o=(p-m|0)/12|0;r=(q-p|0)/12|0;h=o>>>0>>0;if((o|0)!=(r|0)){d=f[w>>2]|0;if(h)f[B>>2]=f[B>>2]|1<<31-d;k=d+1|0;f[w>>2]=k;if((k|0)==32){d=f[y>>2]|0;if((d|0)==(f[z>>2]|0))Bj(A,B);else{f[d>>2]=f[B>>2];f[y>>2]=d+4}f[w>>2]=0;f[B>>2]=0}}d=s>>>1;if(h)Lg(C,i,d-o|0);else Lg(C,i,d-r|0);d=f[E>>2]|0;k=f[d+(t*12|0)>>2]|0;h=k+(e<<2)|0;f[h>>2]=(f[h>>2]|0)+1;h=f[d+(t*12|0)+4>>2]|0;i=k;if((h|0)!=(i|0)){j=f[d+(v*12|0)>>2]|0;h=h-i>>2;d=0;do{f[j+(d<<2)>>2]=f[k+(d<<2)>>2];d=d+1|0}while(d>>>0>>0)}if((g|0)!=(l|0)){j=f[L>>2]|0;i=f[K>>2]|0;s=j-i>>2;d=f[J>>2]|0;h=f[H>>2]|0;if((((s|0)==0?0:(s*204|0)+-1|0)|0)==(h+d|0)){Fc(M);d=f[J>>2]|0;h=f[H>>2]|0;j=f[L>>2]|0;i=f[K>>2]|0}d=h+d|0;if((j|0)==(i|0))d=0;else d=(f[i+(((d>>>0)/204|0)<<2)>>2]|0)+(((d>>>0)%204|0)*20|0)|0;f[d>>2]=m;f[d+4>>2]=p;f[d+8>>2]=e;f[d+12>>2]=o;f[d+16>>2]=t;f[H>>2]=(f[H>>2]|0)+1}if((g|0)!=(n|0)){i=f[L>>2]|0;h=f[K>>2]|0;t=i-h>>2;d=f[J>>2]|0;g=f[H>>2]|0;if((((t|0)==0?0:(t*204|0)+-1|0)|0)==(g+d|0)){Fc(M);d=f[J>>2]|0;g=f[H>>2]|0;i=f[L>>2]|0;h=f[K>>2]|0}d=g+d|0;if((i|0)==(h|0))d=0;else d=(f[h+(((d>>>0)/204|0)<<2)>>2]|0)+(((d>>>0)%204|0)*20|0)|0;f[d>>2]=p;f[d+4>>2]=q;f[d+8>>2]=e;f[d+12>>2]=r;f[d+16>>2]=v;d=(f[H>>2]|0)+1|0;f[H>>2]=d}else I=65}else I=65;while(0);if((I|0)==65){I=0;d=f[H>>2]|0}if(!d)break a}Fa(15833,15863,332,15951)}while(0);d=f[K>>2]|0;e=f[J>>2]|0;h=d+(((e>>>0)/204|0)<<2)|0;g=f[L>>2]|0;j=g;k=d;if((g|0)==(d|0)){i=0;e=0}else{e=(f[h>>2]|0)+(((e>>>0)%204|0)*20|0)|0;i=e}e:while(1){do{if((e|0)==(i|0))break e;e=e+20|0}while((e-(f[h>>2]|0)|0)!=4080);e=h+4|0;h=e;e=f[e>>2]|0}f[H>>2]=0;e=j-k>>2;if(e>>>0>2)do{Lq(f[d>>2]|0);d=(f[K>>2]|0)+4|0;f[K>>2]=d;g=f[L>>2]|0;e=g-d>>2}while(e>>>0>2);switch(e|0){case 1:{e=102;I=79;break}case 2:{e=204;I=79;break}default:{}}if((I|0)==79)f[J>>2]=e;if((d|0)!=(g|0)){do{Lq(f[d>>2]|0);d=d+4|0}while((d|0)!=(g|0));d=f[K>>2]|0;e=f[L>>2]|0;if((e|0)!=(d|0))f[L>>2]=e+(~((e+-4-d|0)>>>2)<<2)}d=f[M>>2]|0;if(!d){u=N;return}Lq(d);u=N;return}function nb(a,b,c){a=a|0;b=b|0;c=c|0;var d=0,e=0,g=0,h=0,i=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0;a:while(1){r=b;t=b+-4|0;while(1){b:while(1){q=a;e=r-q|0;d=e>>2;switch(d|0){case 2:{s=5;break a}case 3:{s=13;break a}case 4:{s=14;break a}case 5:{s=15;break a}case 1:case 0:{s=106;break a}default:{}}if((e|0)<124){s=17;break a}p=a+(((d|0)/2|0)<<2)|0;if((e|0)>3996){d=(d|0)/4|0;d=ze(a,a+(d<<2)|0,p,p+(d<<2)|0,t,c)|0}else d=Ae(a,p,t,c)|0;j=f[a>>2]|0;l=f[p>>2]|0;h=f[c>>2]|0;g=f[h+4>>2]|0;e=f[h>>2]|0;if(g-e>>3>>>0>j>>>0){k=e;i=g}else{yp(h);o=f[c>>2]|0;k=f[h>>2]|0;e=f[o>>2]|0;i=f[o+4>>2]|0;h=o}g=f[k+(j<<3)>>2]|0;if(i-e>>3>>>0<=l>>>0){yp(h);e=f[h>>2]|0}if(g>>>0<(f[e+(l<<3)>>2]|0)>>>0){g=t;break}else g=t;while(1){g=g+-4|0;if((a|0)==(g|0))break;k=f[g>>2]|0;m=f[p>>2]|0;e=f[c>>2]|0;i=f[e+4>>2]|0;h=f[e>>2]|0;if(i-h>>3>>>0>k>>>0){l=e;j=h;e=h}else{yp(e);i=f[c>>2]|0;l=i;j=f[e>>2]|0;e=f[i>>2]|0;i=f[i+4>>2]|0}h=f[j+(k<<3)>>2]|0;if(i-e>>3>>>0<=m>>>0){yp(l);e=f[l>>2]|0}if(h>>>0<(f[e+(m<<3)>>2]|0)>>>0){s=71;break b}}d=a+4|0;j=f[a>>2]|0;l=f[t>>2]|0;h=f[c>>2]|0;g=f[h+4>>2]|0;e=f[h>>2]|0;if(g-e>>3>>>0>j>>>0){k=e;i=g}else{yp(h);q=f[c>>2]|0;k=f[h>>2]|0;e=f[q>>2]|0;i=f[q+4>>2]|0;h=q}g=f[k+(j<<3)>>2]|0;if(i-e>>3>>>0<=l>>>0){yp(h);e=f[h>>2]|0}if(g>>>0>=(f[e+(l<<3)>>2]|0)>>>0){if((d|0)==(t|0)){s=106;break a}while(1){j=f[a>>2]|0;l=f[d>>2]|0;h=f[c>>2]|0;g=f[h+4>>2]|0;e=f[h>>2]|0;if(g-e>>3>>>0>j>>>0){k=e;i=g}else{yp(h);q=f[c>>2]|0;k=f[h>>2]|0;e=f[q>>2]|0;i=f[q+4>>2]|0;h=q}g=f[k+(j<<3)>>2]|0;if(i-e>>3>>>0<=l>>>0){yp(h);e=f[h>>2]|0}if(g>>>0<(f[e+(l<<3)>>2]|0)>>>0)break;d=d+4|0;if((d|0)==(t|0)){s=106;break a}}q=f[d>>2]|0;f[d>>2]=f[t>>2];f[t>>2]=q;d=d+4|0}if((d|0)==(t|0)){s=106;break a}else l=t;while(1){while(1){h=f[a>>2]|0;k=f[d>>2]|0;i=f[c>>2]|0;g=f[i+4>>2]|0;e=f[i>>2]|0;if(g-e>>3>>>0>h>>>0)j=e;else{yp(i);q=f[c>>2]|0;j=f[i>>2]|0;e=f[q>>2]|0;g=f[q+4>>2]|0;i=q}h=f[j+(h<<3)>>2]|0;if(g-e>>3>>>0<=k>>>0){yp(i);e=f[i>>2]|0}n=d+4|0;if(h>>>0<(f[e+(k<<3)>>2]|0)>>>0){m=l;break}else d=n}do{j=f[a>>2]|0;m=m+-4|0;l=f[m>>2]|0;h=f[c>>2]|0;g=f[h+4>>2]|0;e=f[h>>2]|0;if(g-e>>3>>>0>j>>>0){k=e;i=g}else{yp(h);q=f[c>>2]|0;k=f[h>>2]|0;e=f[q>>2]|0;i=f[q+4>>2]|0;h=q}g=f[k+(j<<3)>>2]|0;if(i-e>>3>>>0<=l>>>0){yp(h);e=f[h>>2]|0}}while(g>>>0<(f[e+(l<<3)>>2]|0)>>>0);if(d>>>0>=m>>>0){a=d;continue b}l=f[d>>2]|0;f[d>>2]=f[m>>2];f[m>>2]=l;d=n;l=m}}if((s|0)==71){s=0;o=f[a>>2]|0;f[a>>2]=f[g>>2];f[g>>2]=o;d=d+1|0}e=a+4|0;c:do if(e>>>0>>0)while(1){o=e;while(1){k=f[o>>2]|0;m=f[p>>2]|0;j=f[c>>2]|0;i=f[j+4>>2]|0;e=f[j>>2]|0;if(i-e>>3>>>0>k>>>0){l=e;h=e;e=j}else{yp(j);e=f[c>>2]|0;l=f[j>>2]|0;h=f[e>>2]|0;i=f[e+4>>2]|0}j=f[l+(k<<3)>>2]|0;if(i-h>>3>>>0<=m>>>0){yp(e);h=f[e>>2]|0}e=o+4|0;if(j>>>0<(f[h+(m<<3)>>2]|0)>>>0)o=e;else{n=g;break}}do{n=n+-4|0;k=f[n>>2]|0;m=f[p>>2]|0;i=f[c>>2]|0;h=f[i+4>>2]|0;g=f[i>>2]|0;if(h-g>>3>>>0>k>>>0){l=g;j=h}else{yp(i);h=f[c>>2]|0;l=f[i>>2]|0;g=f[h>>2]|0;j=f[h+4>>2]|0;i=h}h=f[l+(k<<3)>>2]|0;if(j-g>>3>>>0<=m>>>0){yp(i);g=f[i>>2]|0}}while(h>>>0>=(f[g+(m<<3)>>2]|0)>>>0);if(o>>>0>n>>>0){n=o;m=p;break c}g=f[o>>2]|0;f[o>>2]=f[n>>2];f[n>>2]=g;g=n;p=(p|0)==(o|0)?n:p;d=d+1|0}else{n=e;m=p}while(0);if((n|0)!=(m|0)){j=f[m>>2]|0;l=f[n>>2]|0;h=f[c>>2]|0;g=f[h+4>>2]|0;e=f[h>>2]|0;if(g-e>>3>>>0>j>>>0){k=e;i=g}else{yp(h);p=f[c>>2]|0;k=f[h>>2]|0;e=f[p>>2]|0;i=f[p+4>>2]|0;h=p}g=f[k+(j<<3)>>2]|0;if(i-e>>3>>>0<=l>>>0){yp(h);e=f[h>>2]|0}if(g>>>0<(f[e+(l<<3)>>2]|0)>>>0){p=f[n>>2]|0;f[n>>2]=f[m>>2];f[m>>2]=p;d=d+1|0}}if(!d){e=Jd(a,n,c)|0;d=n+4|0;if(Jd(d,b,c)|0){s=105;break}if(e){a=d;continue}}p=n;if((p-q|0)>=(r-p|0)){s=104;break}nb(a,n,c);a=n+4|0}if((s|0)==104){s=0;nb(n+4|0,b,c);b=n;continue}else if((s|0)==105){s=0;if(e){s=106;break}else{b=n;continue}}}if((s|0)==5){h=f[t>>2]|0;j=f[a>>2]|0;b=f[c>>2]|0;e=f[b+4>>2]|0;d=f[b>>2]|0;if(e-d>>3>>>0>h>>>0){i=b;g=d;b=d}else{yp(b);e=f[c>>2]|0;i=e;g=f[b>>2]|0;b=f[e>>2]|0;e=f[e+4>>2]|0}d=f[g+(h<<3)>>2]|0;if(e-b>>3>>>0<=j>>>0){yp(i);b=f[i>>2]|0}if(d>>>0>=(f[b+(j<<3)>>2]|0)>>>0)return;c=f[a>>2]|0;f[a>>2]=f[t>>2];f[t>>2]=c;return}else if((s|0)==13){Ae(a,a+4|0,t,c)|0;return}else if((s|0)==14){Jf(a,a+4|0,a+8|0,t,c)|0;return}else if((s|0)==15){ze(a,a+4|0,a+8|0,a+12|0,t,c)|0;return}else if((s|0)==17){Pg(a,b,c);return}else if((s|0)==106)return}function ob(a,b,c){a=a|0;b=b|0;c=c|0;var d=0,e=0,g=0,h=0,i=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0;a:while(1){r=b;t=b+-4|0;while(1){b:while(1){q=a;e=r-q|0;d=e>>2;switch(d|0){case 2:{s=5;break a}case 3:{s=13;break a}case 4:{s=14;break a}case 5:{s=15;break a}case 1:case 0:{s=106;break a}default:{}}if((e|0)<124){s=17;break a}p=a+(((d|0)/2|0)<<2)|0;if((e|0)>3996){d=(d|0)/4|0;d=ze(a,a+(d<<2)|0,p,p+(d<<2)|0,t,c)|0}else d=Ae(a,p,t,c)|0;j=f[a>>2]|0;l=f[p>>2]|0;h=f[c>>2]|0;g=f[h+4>>2]|0;e=f[h>>2]|0;if(g-e>>3>>>0>j>>>0){k=e;i=g}else{yp(h);o=f[c>>2]|0;k=f[h>>2]|0;e=f[o>>2]|0;i=f[o+4>>2]|0;h=o}g=f[k+(j<<3)>>2]|0;if(i-e>>3>>>0<=l>>>0){yp(h);e=f[h>>2]|0}if(g>>>0<(f[e+(l<<3)>>2]|0)>>>0){g=t;break}else g=t;while(1){g=g+-4|0;if((a|0)==(g|0))break;k=f[g>>2]|0;m=f[p>>2]|0;e=f[c>>2]|0;i=f[e+4>>2]|0;h=f[e>>2]|0;if(i-h>>3>>>0>k>>>0){l=e;j=h;e=h}else{yp(e);i=f[c>>2]|0;l=i;j=f[e>>2]|0;e=f[i>>2]|0;i=f[i+4>>2]|0}h=f[j+(k<<3)>>2]|0;if(i-e>>3>>>0<=m>>>0){yp(l);e=f[l>>2]|0}if(h>>>0<(f[e+(m<<3)>>2]|0)>>>0){s=71;break b}}d=a+4|0;j=f[a>>2]|0;l=f[t>>2]|0;h=f[c>>2]|0;g=f[h+4>>2]|0;e=f[h>>2]|0;if(g-e>>3>>>0>j>>>0){k=e;i=g}else{yp(h);q=f[c>>2]|0;k=f[h>>2]|0;e=f[q>>2]|0;i=f[q+4>>2]|0;h=q}g=f[k+(j<<3)>>2]|0;if(i-e>>3>>>0<=l>>>0){yp(h);e=f[h>>2]|0}if(g>>>0>=(f[e+(l<<3)>>2]|0)>>>0){if((d|0)==(t|0)){s=106;break a}while(1){j=f[a>>2]|0;l=f[d>>2]|0;h=f[c>>2]|0;g=f[h+4>>2]|0;e=f[h>>2]|0;if(g-e>>3>>>0>j>>>0){k=e;i=g}else{yp(h);q=f[c>>2]|0;k=f[h>>2]|0;e=f[q>>2]|0;i=f[q+4>>2]|0;h=q}g=f[k+(j<<3)>>2]|0;if(i-e>>3>>>0<=l>>>0){yp(h);e=f[h>>2]|0}if(g>>>0<(f[e+(l<<3)>>2]|0)>>>0)break;d=d+4|0;if((d|0)==(t|0)){s=106;break a}}q=f[d>>2]|0;f[d>>2]=f[t>>2];f[t>>2]=q;d=d+4|0}if((d|0)==(t|0)){s=106;break a}else l=t;while(1){while(1){h=f[a>>2]|0;k=f[d>>2]|0;i=f[c>>2]|0;g=f[i+4>>2]|0;e=f[i>>2]|0;if(g-e>>3>>>0>h>>>0)j=e;else{yp(i);q=f[c>>2]|0;j=f[i>>2]|0;e=f[q>>2]|0;g=f[q+4>>2]|0;i=q}h=f[j+(h<<3)>>2]|0;if(g-e>>3>>>0<=k>>>0){yp(i);e=f[i>>2]|0}n=d+4|0;if(h>>>0<(f[e+(k<<3)>>2]|0)>>>0){m=l;break}else d=n}do{j=f[a>>2]|0;m=m+-4|0;l=f[m>>2]|0;h=f[c>>2]|0;g=f[h+4>>2]|0;e=f[h>>2]|0;if(g-e>>3>>>0>j>>>0){k=e;i=g}else{yp(h);q=f[c>>2]|0;k=f[h>>2]|0;e=f[q>>2]|0;i=f[q+4>>2]|0;h=q}g=f[k+(j<<3)>>2]|0;if(i-e>>3>>>0<=l>>>0){yp(h);e=f[h>>2]|0}}while(g>>>0<(f[e+(l<<3)>>2]|0)>>>0);if(d>>>0>=m>>>0){a=d;continue b}l=f[d>>2]|0;f[d>>2]=f[m>>2];f[m>>2]=l;d=n;l=m}}if((s|0)==71){s=0;o=f[a>>2]|0;f[a>>2]=f[g>>2];f[g>>2]=o;d=d+1|0}e=a+4|0;c:do if(e>>>0>>0)while(1){o=e;while(1){k=f[o>>2]|0;m=f[p>>2]|0;j=f[c>>2]|0;i=f[j+4>>2]|0;e=f[j>>2]|0;if(i-e>>3>>>0>k>>>0){l=e;h=e;e=j}else{yp(j);e=f[c>>2]|0;l=f[j>>2]|0;h=f[e>>2]|0;i=f[e+4>>2]|0}j=f[l+(k<<3)>>2]|0;if(i-h>>3>>>0<=m>>>0){yp(e);h=f[e>>2]|0}e=o+4|0;if(j>>>0<(f[h+(m<<3)>>2]|0)>>>0)o=e;else{n=g;break}}do{n=n+-4|0;k=f[n>>2]|0;m=f[p>>2]|0;i=f[c>>2]|0;h=f[i+4>>2]|0;g=f[i>>2]|0;if(h-g>>3>>>0>k>>>0){l=g;j=h}else{yp(i);h=f[c>>2]|0;l=f[i>>2]|0;g=f[h>>2]|0;j=f[h+4>>2]|0;i=h}h=f[l+(k<<3)>>2]|0;if(j-g>>3>>>0<=m>>>0){yp(i);g=f[i>>2]|0}}while(h>>>0>=(f[g+(m<<3)>>2]|0)>>>0);if(o>>>0>n>>>0){n=o;m=p;break c}g=f[o>>2]|0;f[o>>2]=f[n>>2];f[n>>2]=g;g=n;p=(p|0)==(o|0)?n:p;d=d+1|0}else{n=e;m=p}while(0);if((n|0)!=(m|0)){j=f[m>>2]|0;l=f[n>>2]|0;h=f[c>>2]|0;g=f[h+4>>2]|0;e=f[h>>2]|0;if(g-e>>3>>>0>j>>>0){k=e;i=g}else{yp(h);p=f[c>>2]|0;k=f[h>>2]|0;e=f[p>>2]|0;i=f[p+4>>2]|0;h=p}g=f[k+(j<<3)>>2]|0;if(i-e>>3>>>0<=l>>>0){yp(h);e=f[h>>2]|0}if(g>>>0<(f[e+(l<<3)>>2]|0)>>>0){p=f[n>>2]|0;f[n>>2]=f[m>>2];f[m>>2]=p;d=d+1|0}}if(!d){e=Jd(a,n,c)|0;d=n+4|0;if(Jd(d,b,c)|0){s=105;break}if(e){a=d;continue}}p=n;if((p-q|0)>=(r-p|0)){s=104;break}ob(a,n,c);a=n+4|0}if((s|0)==104){s=0;ob(n+4|0,b,c);b=n;continue}else if((s|0)==105){s=0;if(e){s=106;break}else{b=n;continue}}}if((s|0)==5){h=f[t>>2]|0;j=f[a>>2]|0;b=f[c>>2]|0;e=f[b+4>>2]|0;d=f[b>>2]|0;if(e-d>>3>>>0>h>>>0){i=b;g=d;b=d}else{yp(b);e=f[c>>2]|0;i=e;g=f[b>>2]|0;b=f[e>>2]|0;e=f[e+4>>2]|0}d=f[g+(h<<3)>>2]|0;if(e-b>>3>>>0<=j>>>0){yp(i);b=f[i>>2]|0}if(d>>>0>=(f[b+(j<<3)>>2]|0)>>>0)return;c=f[a>>2]|0;f[a>>2]=f[t>>2];f[t>>2]=c;return}else if((s|0)==13){Ae(a,a+4|0,t,c)|0;return}else if((s|0)==14){Jf(a,a+4|0,a+8|0,t,c)|0;return}else if((s|0)==15){ze(a,a+4|0,a+8|0,a+12|0,t,c)|0;return}else if((s|0)==17){Pg(a,b,c);return}else if((s|0)==106)return}function pb(a,b,c){a=a|0;b=b|0;c=c|0;var d=0,e=0,g=0,h=0,i=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0;a:while(1){r=b;t=b+-4|0;while(1){b:while(1){q=a;e=r-q|0;d=e>>2;switch(d|0){case 2:{s=5;break a}case 3:{s=13;break a}case 4:{s=14;break a}case 5:{s=15;break a}case 1:case 0:{s=106;break a}default:{}}if((e|0)<124){s=17;break a}p=a+(((d|0)/2|0)<<2)|0;if((e|0)>3996){d=(d|0)/4|0;d=ze(a,a+(d<<2)|0,p,p+(d<<2)|0,t,c)|0}else d=Ae(a,p,t,c)|0;j=f[a>>2]|0;l=f[p>>2]|0;h=f[c>>2]|0;g=f[h+4>>2]|0;e=f[h>>2]|0;if(g-e>>3>>>0>j>>>0){k=e;i=g}else{yp(h);o=f[c>>2]|0;k=f[h>>2]|0;e=f[o>>2]|0;i=f[o+4>>2]|0;h=o}g=f[k+(j<<3)>>2]|0;if(i-e>>3>>>0<=l>>>0){yp(h);e=f[h>>2]|0}if(g>>>0<(f[e+(l<<3)>>2]|0)>>>0){g=t;break}else g=t;while(1){g=g+-4|0;if((a|0)==(g|0))break;k=f[g>>2]|0;m=f[p>>2]|0;e=f[c>>2]|0;i=f[e+4>>2]|0;h=f[e>>2]|0;if(i-h>>3>>>0>k>>>0){l=e;j=h;e=h}else{yp(e);i=f[c>>2]|0;l=i;j=f[e>>2]|0;e=f[i>>2]|0;i=f[i+4>>2]|0}h=f[j+(k<<3)>>2]|0;if(i-e>>3>>>0<=m>>>0){yp(l);e=f[l>>2]|0}if(h>>>0<(f[e+(m<<3)>>2]|0)>>>0){s=71;break b}}d=a+4|0;j=f[a>>2]|0;l=f[t>>2]|0;h=f[c>>2]|0;g=f[h+4>>2]|0;e=f[h>>2]|0;if(g-e>>3>>>0>j>>>0){k=e;i=g}else{yp(h);q=f[c>>2]|0;k=f[h>>2]|0;e=f[q>>2]|0;i=f[q+4>>2]|0;h=q}g=f[k+(j<<3)>>2]|0;if(i-e>>3>>>0<=l>>>0){yp(h);e=f[h>>2]|0}if(g>>>0>=(f[e+(l<<3)>>2]|0)>>>0){if((d|0)==(t|0)){s=106;break a}while(1){j=f[a>>2]|0;l=f[d>>2]|0;h=f[c>>2]|0;g=f[h+4>>2]|0;e=f[h>>2]|0;if(g-e>>3>>>0>j>>>0){k=e;i=g}else{yp(h);q=f[c>>2]|0;k=f[h>>2]|0;e=f[q>>2]|0;i=f[q+4>>2]|0;h=q}g=f[k+(j<<3)>>2]|0;if(i-e>>3>>>0<=l>>>0){yp(h);e=f[h>>2]|0}if(g>>>0<(f[e+(l<<3)>>2]|0)>>>0)break;d=d+4|0;if((d|0)==(t|0)){s=106;break a}}q=f[d>>2]|0;f[d>>2]=f[t>>2];f[t>>2]=q;d=d+4|0}if((d|0)==(t|0)){s=106;break a}else l=t;while(1){while(1){h=f[a>>2]|0;k=f[d>>2]|0;i=f[c>>2]|0;g=f[i+4>>2]|0;e=f[i>>2]|0;if(g-e>>3>>>0>h>>>0)j=e;else{yp(i);q=f[c>>2]|0;j=f[i>>2]|0;e=f[q>>2]|0;g=f[q+4>>2]|0;i=q}h=f[j+(h<<3)>>2]|0;if(g-e>>3>>>0<=k>>>0){yp(i);e=f[i>>2]|0}n=d+4|0;if(h>>>0<(f[e+(k<<3)>>2]|0)>>>0){m=l;break}else d=n}do{j=f[a>>2]|0;m=m+-4|0;l=f[m>>2]|0;h=f[c>>2]|0;g=f[h+4>>2]|0;e=f[h>>2]|0;if(g-e>>3>>>0>j>>>0){k=e;i=g}else{yp(h);q=f[c>>2]|0;k=f[h>>2]|0;e=f[q>>2]|0;i=f[q+4>>2]|0;h=q}g=f[k+(j<<3)>>2]|0;if(i-e>>3>>>0<=l>>>0){yp(h);e=f[h>>2]|0}}while(g>>>0<(f[e+(l<<3)>>2]|0)>>>0);if(d>>>0>=m>>>0){a=d;continue b}l=f[d>>2]|0;f[d>>2]=f[m>>2];f[m>>2]=l;d=n;l=m}}if((s|0)==71){s=0;o=f[a>>2]|0;f[a>>2]=f[g>>2];f[g>>2]=o;d=d+1|0}e=a+4|0;c:do if(e>>>0>>0)while(1){o=e;while(1){k=f[o>>2]|0;m=f[p>>2]|0;j=f[c>>2]|0;i=f[j+4>>2]|0;e=f[j>>2]|0;if(i-e>>3>>>0>k>>>0){l=e;h=e;e=j}else{yp(j);e=f[c>>2]|0;l=f[j>>2]|0;h=f[e>>2]|0;i=f[e+4>>2]|0}j=f[l+(k<<3)>>2]|0;if(i-h>>3>>>0<=m>>>0){yp(e);h=f[e>>2]|0}e=o+4|0;if(j>>>0<(f[h+(m<<3)>>2]|0)>>>0)o=e;else{n=g;break}}do{n=n+-4|0;k=f[n>>2]|0;m=f[p>>2]|0;i=f[c>>2]|0;h=f[i+4>>2]|0;g=f[i>>2]|0;if(h-g>>3>>>0>k>>>0){l=g;j=h}else{yp(i);h=f[c>>2]|0;l=f[i>>2]|0;g=f[h>>2]|0;j=f[h+4>>2]|0;i=h}h=f[l+(k<<3)>>2]|0;if(j-g>>3>>>0<=m>>>0){yp(i);g=f[i>>2]|0}}while(h>>>0>=(f[g+(m<<3)>>2]|0)>>>0);if(o>>>0>n>>>0){n=o;m=p;break c}g=f[o>>2]|0;f[o>>2]=f[n>>2];f[n>>2]=g;g=n;p=(p|0)==(o|0)?n:p;d=d+1|0}else{n=e;m=p}while(0);if((n|0)!=(m|0)){j=f[m>>2]|0;l=f[n>>2]|0;h=f[c>>2]|0;g=f[h+4>>2]|0;e=f[h>>2]|0;if(g-e>>3>>>0>j>>>0){k=e;i=g}else{yp(h);p=f[c>>2]|0;k=f[h>>2]|0;e=f[p>>2]|0;i=f[p+4>>2]|0;h=p}g=f[k+(j<<3)>>2]|0;if(i-e>>3>>>0<=l>>>0){yp(h);e=f[h>>2]|0}if(g>>>0<(f[e+(l<<3)>>2]|0)>>>0){p=f[n>>2]|0;f[n>>2]=f[m>>2];f[m>>2]=p;d=d+1|0}}if(!d){e=Jd(a,n,c)|0;d=n+4|0;if(Jd(d,b,c)|0){s=105;break}if(e){a=d;continue}}p=n;if((p-q|0)>=(r-p|0)){s=104;break}pb(a,n,c);a=n+4|0}if((s|0)==104){s=0;pb(n+4|0,b,c);b=n;continue}else if((s|0)==105){s=0;if(e){s=106;break}else{b=n;continue}}}if((s|0)==5){h=f[t>>2]|0;j=f[a>>2]|0;b=f[c>>2]|0;e=f[b+4>>2]|0;d=f[b>>2]|0;if(e-d>>3>>>0>h>>>0){i=b;g=d;b=d}else{yp(b);e=f[c>>2]|0;i=e;g=f[b>>2]|0;b=f[e>>2]|0;e=f[e+4>>2]|0}d=f[g+(h<<3)>>2]|0;if(e-b>>3>>>0<=j>>>0){yp(i);b=f[i>>2]|0}if(d>>>0>=(f[b+(j<<3)>>2]|0)>>>0)return;c=f[a>>2]|0;f[a>>2]=f[t>>2];f[t>>2]=c;return}else if((s|0)==13){Ae(a,a+4|0,t,c)|0;return}else if((s|0)==14){Jf(a,a+4|0,a+8|0,t,c)|0;return}else if((s|0)==15){ze(a,a+4|0,a+8|0,a+12|0,t,c)|0;return}else if((s|0)==17){Pg(a,b,c);return}else if((s|0)==106)return}function qb(a,b,c){a=a|0;b=b|0;c=c|0;var d=0,e=0,g=0,h=0,i=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0;a:while(1){r=b;t=b+-4|0;while(1){b:while(1){q=a;e=r-q|0;d=e>>2;switch(d|0){case 2:{s=5;break a}case 3:{s=13;break a}case 4:{s=14;break a}case 5:{s=15;break a}case 1:case 0:{s=106;break a}default:{}}if((e|0)<124){s=17;break a}p=a+(((d|0)/2|0)<<2)|0;if((e|0)>3996){d=(d|0)/4|0;d=ze(a,a+(d<<2)|0,p,p+(d<<2)|0,t,c)|0}else d=Ae(a,p,t,c)|0;j=f[a>>2]|0;l=f[p>>2]|0;h=f[c>>2]|0;g=f[h+4>>2]|0;e=f[h>>2]|0;if(g-e>>3>>>0>j>>>0){k=e;i=g}else{yp(h);o=f[c>>2]|0;k=f[h>>2]|0;e=f[o>>2]|0;i=f[o+4>>2]|0;h=o}g=f[k+(j<<3)>>2]|0;if(i-e>>3>>>0<=l>>>0){yp(h);e=f[h>>2]|0}if(g>>>0<(f[e+(l<<3)>>2]|0)>>>0){g=t;break}else g=t;while(1){g=g+-4|0;if((a|0)==(g|0))break;k=f[g>>2]|0;m=f[p>>2]|0;e=f[c>>2]|0;i=f[e+4>>2]|0;h=f[e>>2]|0;if(i-h>>3>>>0>k>>>0){l=e;j=h;e=h}else{yp(e);i=f[c>>2]|0;l=i;j=f[e>>2]|0;e=f[i>>2]|0;i=f[i+4>>2]|0}h=f[j+(k<<3)>>2]|0;if(i-e>>3>>>0<=m>>>0){yp(l);e=f[l>>2]|0}if(h>>>0<(f[e+(m<<3)>>2]|0)>>>0){s=71;break b}}d=a+4|0;j=f[a>>2]|0;l=f[t>>2]|0;h=f[c>>2]|0;g=f[h+4>>2]|0;e=f[h>>2]|0;if(g-e>>3>>>0>j>>>0){k=e;i=g}else{yp(h);q=f[c>>2]|0;k=f[h>>2]|0;e=f[q>>2]|0;i=f[q+4>>2]|0;h=q}g=f[k+(j<<3)>>2]|0;if(i-e>>3>>>0<=l>>>0){yp(h);e=f[h>>2]|0}if(g>>>0>=(f[e+(l<<3)>>2]|0)>>>0){if((d|0)==(t|0)){s=106;break a}while(1){j=f[a>>2]|0;l=f[d>>2]|0;h=f[c>>2]|0;g=f[h+4>>2]|0;e=f[h>>2]|0;if(g-e>>3>>>0>j>>>0){k=e;i=g}else{yp(h);q=f[c>>2]|0;k=f[h>>2]|0;e=f[q>>2]|0;i=f[q+4>>2]|0;h=q}g=f[k+(j<<3)>>2]|0;if(i-e>>3>>>0<=l>>>0){yp(h);e=f[h>>2]|0}if(g>>>0<(f[e+(l<<3)>>2]|0)>>>0)break;d=d+4|0;if((d|0)==(t|0)){s=106;break a}}q=f[d>>2]|0;f[d>>2]=f[t>>2];f[t>>2]=q;d=d+4|0}if((d|0)==(t|0)){s=106;break a}else l=t;while(1){while(1){h=f[a>>2]|0;k=f[d>>2]|0;i=f[c>>2]|0;g=f[i+4>>2]|0;e=f[i>>2]|0;if(g-e>>3>>>0>h>>>0)j=e;else{yp(i);q=f[c>>2]|0;j=f[i>>2]|0;e=f[q>>2]|0;g=f[q+4>>2]|0;i=q}h=f[j+(h<<3)>>2]|0;if(g-e>>3>>>0<=k>>>0){yp(i);e=f[i>>2]|0}n=d+4|0;if(h>>>0<(f[e+(k<<3)>>2]|0)>>>0){m=l;break}else d=n}do{j=f[a>>2]|0;m=m+-4|0;l=f[m>>2]|0;h=f[c>>2]|0;g=f[h+4>>2]|0;e=f[h>>2]|0;if(g-e>>3>>>0>j>>>0){k=e;i=g}else{yp(h);q=f[c>>2]|0;k=f[h>>2]|0;e=f[q>>2]|0;i=f[q+4>>2]|0;h=q}g=f[k+(j<<3)>>2]|0;if(i-e>>3>>>0<=l>>>0){yp(h);e=f[h>>2]|0}}while(g>>>0<(f[e+(l<<3)>>2]|0)>>>0);if(d>>>0>=m>>>0){a=d;continue b}l=f[d>>2]|0;f[d>>2]=f[m>>2];f[m>>2]=l;d=n;l=m}}if((s|0)==71){s=0;o=f[a>>2]|0;f[a>>2]=f[g>>2];f[g>>2]=o;d=d+1|0}e=a+4|0;c:do if(e>>>0>>0)while(1){o=e;while(1){k=f[o>>2]|0;m=f[p>>2]|0;j=f[c>>2]|0;i=f[j+4>>2]|0;e=f[j>>2]|0;if(i-e>>3>>>0>k>>>0){l=e;h=e;e=j}else{yp(j);e=f[c>>2]|0;l=f[j>>2]|0;h=f[e>>2]|0;i=f[e+4>>2]|0}j=f[l+(k<<3)>>2]|0;if(i-h>>3>>>0<=m>>>0){yp(e);h=f[e>>2]|0}e=o+4|0;if(j>>>0<(f[h+(m<<3)>>2]|0)>>>0)o=e;else{n=g;break}}do{n=n+-4|0;k=f[n>>2]|0;m=f[p>>2]|0;i=f[c>>2]|0;h=f[i+4>>2]|0;g=f[i>>2]|0;if(h-g>>3>>>0>k>>>0){l=g;j=h}else{yp(i);h=f[c>>2]|0;l=f[i>>2]|0;g=f[h>>2]|0;j=f[h+4>>2]|0;i=h}h=f[l+(k<<3)>>2]|0;if(j-g>>3>>>0<=m>>>0){yp(i);g=f[i>>2]|0}}while(h>>>0>=(f[g+(m<<3)>>2]|0)>>>0);if(o>>>0>n>>>0){n=o;m=p;break c}g=f[o>>2]|0;f[o>>2]=f[n>>2];f[n>>2]=g;g=n;p=(p|0)==(o|0)?n:p;d=d+1|0}else{n=e;m=p}while(0);if((n|0)!=(m|0)){j=f[m>>2]|0;l=f[n>>2]|0;h=f[c>>2]|0;g=f[h+4>>2]|0;e=f[h>>2]|0;if(g-e>>3>>>0>j>>>0){k=e;i=g}else{yp(h);p=f[c>>2]|0;k=f[h>>2]|0;e=f[p>>2]|0;i=f[p+4>>2]|0;h=p}g=f[k+(j<<3)>>2]|0;if(i-e>>3>>>0<=l>>>0){yp(h);e=f[h>>2]|0}if(g>>>0<(f[e+(l<<3)>>2]|0)>>>0){p=f[n>>2]|0;f[n>>2]=f[m>>2];f[m>>2]=p;d=d+1|0}}if(!d){e=Jd(a,n,c)|0;d=n+4|0;if(Jd(d,b,c)|0){s=105;break}if(e){a=d;continue}}p=n;if((p-q|0)>=(r-p|0)){s=104;break}qb(a,n,c);a=n+4|0}if((s|0)==104){s=0;qb(n+4|0,b,c);b=n;continue}else if((s|0)==105){s=0;if(e){s=106;break}else{b=n;continue}}}if((s|0)==5){h=f[t>>2]|0;j=f[a>>2]|0;b=f[c>>2]|0;e=f[b+4>>2]|0;d=f[b>>2]|0;if(e-d>>3>>>0>h>>>0){i=b;g=d;b=d}else{yp(b);e=f[c>>2]|0;i=e;g=f[b>>2]|0;b=f[e>>2]|0;e=f[e+4>>2]|0}d=f[g+(h<<3)>>2]|0;if(e-b>>3>>>0<=j>>>0){yp(i);b=f[i>>2]|0}if(d>>>0>=(f[b+(j<<3)>>2]|0)>>>0)return;c=f[a>>2]|0;f[a>>2]=f[t>>2];f[t>>2]=c;return}else if((s|0)==13){Ae(a,a+4|0,t,c)|0;return}else if((s|0)==14){Jf(a,a+4|0,a+8|0,t,c)|0;return}else if((s|0)==15){ze(a,a+4|0,a+8|0,a+12|0,t,c)|0;return}else if((s|0)==17){Pg(a,b,c);return}else if((s|0)==106)return}function rb(a,b,c){a=a|0;b=b|0;c=c|0;var d=0,e=0,g=0,h=0,i=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0;a:while(1){r=b;t=b+-4|0;while(1){b:while(1){q=a;e=r-q|0;d=e>>2;switch(d|0){case 2:{s=5;break a}case 3:{s=13;break a}case 4:{s=14;break a}case 5:{s=15;break a}case 1:case 0:{s=106;break a}default:{}}if((e|0)<124){s=17;break a}p=a+(((d|0)/2|0)<<2)|0;if((e|0)>3996){d=(d|0)/4|0;d=ze(a,a+(d<<2)|0,p,p+(d<<2)|0,t,c)|0}else d=Ae(a,p,t,c)|0;j=f[a>>2]|0;l=f[p>>2]|0;h=f[c>>2]|0;g=f[h+4>>2]|0;e=f[h>>2]|0;if(g-e>>3>>>0>j>>>0){k=e;i=g}else{yp(h);o=f[c>>2]|0;k=f[h>>2]|0;e=f[o>>2]|0;i=f[o+4>>2]|0;h=o}g=f[k+(j<<3)>>2]|0;if(i-e>>3>>>0<=l>>>0){yp(h);e=f[h>>2]|0}if(g>>>0<(f[e+(l<<3)>>2]|0)>>>0){g=t;break}else g=t;while(1){g=g+-4|0;if((a|0)==(g|0))break;k=f[g>>2]|0;m=f[p>>2]|0;e=f[c>>2]|0;i=f[e+4>>2]|0;h=f[e>>2]|0;if(i-h>>3>>>0>k>>>0){l=e;j=h;e=h}else{yp(e);i=f[c>>2]|0;l=i;j=f[e>>2]|0;e=f[i>>2]|0;i=f[i+4>>2]|0}h=f[j+(k<<3)>>2]|0;if(i-e>>3>>>0<=m>>>0){yp(l);e=f[l>>2]|0}if(h>>>0<(f[e+(m<<3)>>2]|0)>>>0){s=71;break b}}d=a+4|0;j=f[a>>2]|0;l=f[t>>2]|0;h=f[c>>2]|0;g=f[h+4>>2]|0;e=f[h>>2]|0;if(g-e>>3>>>0>j>>>0){k=e;i=g}else{yp(h);q=f[c>>2]|0;k=f[h>>2]|0;e=f[q>>2]|0;i=f[q+4>>2]|0;h=q}g=f[k+(j<<3)>>2]|0;if(i-e>>3>>>0<=l>>>0){yp(h);e=f[h>>2]|0}if(g>>>0>=(f[e+(l<<3)>>2]|0)>>>0){if((d|0)==(t|0)){s=106;break a}while(1){j=f[a>>2]|0;l=f[d>>2]|0;h=f[c>>2]|0;g=f[h+4>>2]|0;e=f[h>>2]|0;if(g-e>>3>>>0>j>>>0){k=e;i=g}else{yp(h);q=f[c>>2]|0;k=f[h>>2]|0;e=f[q>>2]|0;i=f[q+4>>2]|0;h=q}g=f[k+(j<<3)>>2]|0;if(i-e>>3>>>0<=l>>>0){yp(h);e=f[h>>2]|0}if(g>>>0<(f[e+(l<<3)>>2]|0)>>>0)break;d=d+4|0;if((d|0)==(t|0)){s=106;break a}}q=f[d>>2]|0;f[d>>2]=f[t>>2];f[t>>2]=q;d=d+4|0}if((d|0)==(t|0)){s=106;break a}else l=t;while(1){while(1){h=f[a>>2]|0;k=f[d>>2]|0;i=f[c>>2]|0;g=f[i+4>>2]|0;e=f[i>>2]|0;if(g-e>>3>>>0>h>>>0)j=e;else{yp(i);q=f[c>>2]|0;j=f[i>>2]|0;e=f[q>>2]|0;g=f[q+4>>2]|0;i=q}h=f[j+(h<<3)>>2]|0;if(g-e>>3>>>0<=k>>>0){yp(i);e=f[i>>2]|0}n=d+4|0;if(h>>>0<(f[e+(k<<3)>>2]|0)>>>0){m=l;break}else d=n}do{j=f[a>>2]|0;m=m+-4|0;l=f[m>>2]|0;h=f[c>>2]|0;g=f[h+4>>2]|0;e=f[h>>2]|0;if(g-e>>3>>>0>j>>>0){k=e;i=g}else{yp(h);q=f[c>>2]|0;k=f[h>>2]|0;e=f[q>>2]|0;i=f[q+4>>2]|0;h=q}g=f[k+(j<<3)>>2]|0;if(i-e>>3>>>0<=l>>>0){yp(h);e=f[h>>2]|0}}while(g>>>0<(f[e+(l<<3)>>2]|0)>>>0);if(d>>>0>=m>>>0){a=d;continue b}l=f[d>>2]|0;f[d>>2]=f[m>>2];f[m>>2]=l;d=n;l=m}}if((s|0)==71){s=0;o=f[a>>2]|0;f[a>>2]=f[g>>2];f[g>>2]=o;d=d+1|0}e=a+4|0;c:do if(e>>>0>>0)while(1){o=e;while(1){k=f[o>>2]|0;m=f[p>>2]|0;j=f[c>>2]|0;i=f[j+4>>2]|0;e=f[j>>2]|0;if(i-e>>3>>>0>k>>>0){l=e;h=e;e=j}else{yp(j);e=f[c>>2]|0;l=f[j>>2]|0;h=f[e>>2]|0;i=f[e+4>>2]|0}j=f[l+(k<<3)>>2]|0;if(i-h>>3>>>0<=m>>>0){yp(e);h=f[e>>2]|0}e=o+4|0;if(j>>>0<(f[h+(m<<3)>>2]|0)>>>0)o=e;else{n=g;break}}do{n=n+-4|0;k=f[n>>2]|0;m=f[p>>2]|0;i=f[c>>2]|0;h=f[i+4>>2]|0;g=f[i>>2]|0;if(h-g>>3>>>0>k>>>0){l=g;j=h}else{yp(i);h=f[c>>2]|0;l=f[i>>2]|0;g=f[h>>2]|0;j=f[h+4>>2]|0;i=h}h=f[l+(k<<3)>>2]|0;if(j-g>>3>>>0<=m>>>0){yp(i);g=f[i>>2]|0}}while(h>>>0>=(f[g+(m<<3)>>2]|0)>>>0);if(o>>>0>n>>>0){n=o;m=p;break c}g=f[o>>2]|0;f[o>>2]=f[n>>2];f[n>>2]=g;g=n;p=(p|0)==(o|0)?n:p;d=d+1|0}else{n=e;m=p}while(0);if((n|0)!=(m|0)){j=f[m>>2]|0;l=f[n>>2]|0;h=f[c>>2]|0;g=f[h+4>>2]|0;e=f[h>>2]|0;if(g-e>>3>>>0>j>>>0){k=e;i=g}else{yp(h);p=f[c>>2]|0;k=f[h>>2]|0;e=f[p>>2]|0;i=f[p+4>>2]|0;h=p}g=f[k+(j<<3)>>2]|0;if(i-e>>3>>>0<=l>>>0){yp(h);e=f[h>>2]|0}if(g>>>0<(f[e+(l<<3)>>2]|0)>>>0){p=f[n>>2]|0;f[n>>2]=f[m>>2];f[m>>2]=p;d=d+1|0}}if(!d){e=Jd(a,n,c)|0;d=n+4|0;if(Jd(d,b,c)|0){s=105;break}if(e){a=d;continue}}p=n;if((p-q|0)>=(r-p|0)){s=104;break}rb(a,n,c);a=n+4|0}if((s|0)==104){s=0;rb(n+4|0,b,c);b=n;continue}else if((s|0)==105){s=0;if(e){s=106;break}else{b=n;continue}}}if((s|0)==5){h=f[t>>2]|0;j=f[a>>2]|0;b=f[c>>2]|0;e=f[b+4>>2]|0;d=f[b>>2]|0;if(e-d>>3>>>0>h>>>0){i=b;g=d;b=d}else{yp(b);e=f[c>>2]|0;i=e;g=f[b>>2]|0;b=f[e>>2]|0;e=f[e+4>>2]|0}d=f[g+(h<<3)>>2]|0;if(e-b>>3>>>0<=j>>>0){yp(i);b=f[i>>2]|0}if(d>>>0>=(f[b+(j<<3)>>2]|0)>>>0)return;c=f[a>>2]|0;f[a>>2]=f[t>>2];f[t>>2]=c;return}else if((s|0)==13){Ae(a,a+4|0,t,c)|0;return}else if((s|0)==14){Jf(a,a+4|0,a+8|0,t,c)|0;return}else if((s|0)==15){ze(a,a+4|0,a+8|0,a+12|0,t,c)|0;return}else if((s|0)==17){Pg(a,b,c);return}else if((s|0)==106)return}function sb(a,b,c){a=a|0;b=b|0;c=c|0;var d=0,e=0,g=0,h=0,i=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0;a:while(1){r=b;t=b+-4|0;while(1){b:while(1){q=a;e=r-q|0;d=e>>2;switch(d|0){case 2:{s=5;break a}case 3:{s=13;break a}case 4:{s=14;break a}case 5:{s=15;break a}case 1:case 0:{s=106;break a}default:{}}if((e|0)<124){s=17;break a}p=a+(((d|0)/2|0)<<2)|0;if((e|0)>3996){d=(d|0)/4|0;d=ze(a,a+(d<<2)|0,p,p+(d<<2)|0,t,c)|0}else d=Ae(a,p,t,c)|0;j=f[a>>2]|0;l=f[p>>2]|0;h=f[c>>2]|0;g=f[h+4>>2]|0;e=f[h>>2]|0;if(g-e>>3>>>0>j>>>0){k=e;i=g}else{yp(h);o=f[c>>2]|0;k=f[h>>2]|0;e=f[o>>2]|0;i=f[o+4>>2]|0;h=o}g=f[k+(j<<3)>>2]|0;if(i-e>>3>>>0<=l>>>0){yp(h);e=f[h>>2]|0}if(g>>>0<(f[e+(l<<3)>>2]|0)>>>0){g=t;break}else g=t;while(1){g=g+-4|0;if((a|0)==(g|0))break;k=f[g>>2]|0;m=f[p>>2]|0;e=f[c>>2]|0;i=f[e+4>>2]|0;h=f[e>>2]|0;if(i-h>>3>>>0>k>>>0){l=e;j=h;e=h}else{yp(e);i=f[c>>2]|0;l=i;j=f[e>>2]|0;e=f[i>>2]|0;i=f[i+4>>2]|0}h=f[j+(k<<3)>>2]|0;if(i-e>>3>>>0<=m>>>0){yp(l);e=f[l>>2]|0}if(h>>>0<(f[e+(m<<3)>>2]|0)>>>0){s=71;break b}}d=a+4|0;j=f[a>>2]|0;l=f[t>>2]|0;h=f[c>>2]|0;g=f[h+4>>2]|0;e=f[h>>2]|0;if(g-e>>3>>>0>j>>>0){k=e;i=g}else{yp(h);q=f[c>>2]|0;k=f[h>>2]|0;e=f[q>>2]|0;i=f[q+4>>2]|0;h=q}g=f[k+(j<<3)>>2]|0;if(i-e>>3>>>0<=l>>>0){yp(h);e=f[h>>2]|0}if(g>>>0>=(f[e+(l<<3)>>2]|0)>>>0){if((d|0)==(t|0)){s=106;break a}while(1){j=f[a>>2]|0;l=f[d>>2]|0;h=f[c>>2]|0;g=f[h+4>>2]|0;e=f[h>>2]|0;if(g-e>>3>>>0>j>>>0){k=e;i=g}else{yp(h);q=f[c>>2]|0;k=f[h>>2]|0;e=f[q>>2]|0;i=f[q+4>>2]|0;h=q}g=f[k+(j<<3)>>2]|0;if(i-e>>3>>>0<=l>>>0){yp(h);e=f[h>>2]|0}if(g>>>0<(f[e+(l<<3)>>2]|0)>>>0)break;d=d+4|0;if((d|0)==(t|0)){s=106;break a}}q=f[d>>2]|0;f[d>>2]=f[t>>2];f[t>>2]=q;d=d+4|0}if((d|0)==(t|0)){s=106;break a}else l=t;while(1){while(1){h=f[a>>2]|0;k=f[d>>2]|0;i=f[c>>2]|0;g=f[i+4>>2]|0;e=f[i>>2]|0;if(g-e>>3>>>0>h>>>0)j=e;else{yp(i);q=f[c>>2]|0;j=f[i>>2]|0;e=f[q>>2]|0;g=f[q+4>>2]|0;i=q}h=f[j+(h<<3)>>2]|0;if(g-e>>3>>>0<=k>>>0){yp(i);e=f[i>>2]|0}n=d+4|0;if(h>>>0<(f[e+(k<<3)>>2]|0)>>>0){m=l;break}else d=n}do{j=f[a>>2]|0;m=m+-4|0;l=f[m>>2]|0;h=f[c>>2]|0;g=f[h+4>>2]|0;e=f[h>>2]|0;if(g-e>>3>>>0>j>>>0){k=e;i=g}else{yp(h);q=f[c>>2]|0;k=f[h>>2]|0;e=f[q>>2]|0;i=f[q+4>>2]|0;h=q}g=f[k+(j<<3)>>2]|0;if(i-e>>3>>>0<=l>>>0){yp(h);e=f[h>>2]|0}}while(g>>>0<(f[e+(l<<3)>>2]|0)>>>0);if(d>>>0>=m>>>0){a=d;continue b}l=f[d>>2]|0;f[d>>2]=f[m>>2];f[m>>2]=l;d=n;l=m}}if((s|0)==71){s=0;o=f[a>>2]|0;f[a>>2]=f[g>>2];f[g>>2]=o;d=d+1|0}e=a+4|0;c:do if(e>>>0>>0)while(1){o=e;while(1){k=f[o>>2]|0;m=f[p>>2]|0;j=f[c>>2]|0;i=f[j+4>>2]|0;e=f[j>>2]|0;if(i-e>>3>>>0>k>>>0){l=e;h=e;e=j}else{yp(j);e=f[c>>2]|0;l=f[j>>2]|0;h=f[e>>2]|0;i=f[e+4>>2]|0}j=f[l+(k<<3)>>2]|0;if(i-h>>3>>>0<=m>>>0){yp(e);h=f[e>>2]|0}e=o+4|0;if(j>>>0<(f[h+(m<<3)>>2]|0)>>>0)o=e;else{n=g;break}}do{n=n+-4|0;k=f[n>>2]|0;m=f[p>>2]|0;i=f[c>>2]|0;h=f[i+4>>2]|0;g=f[i>>2]|0;if(h-g>>3>>>0>k>>>0){l=g;j=h}else{yp(i);h=f[c>>2]|0;l=f[i>>2]|0;g=f[h>>2]|0;j=f[h+4>>2]|0;i=h}h=f[l+(k<<3)>>2]|0;if(j-g>>3>>>0<=m>>>0){yp(i);g=f[i>>2]|0}}while(h>>>0>=(f[g+(m<<3)>>2]|0)>>>0);if(o>>>0>n>>>0){n=o;m=p;break c}g=f[o>>2]|0;f[o>>2]=f[n>>2];f[n>>2]=g;g=n;p=(p|0)==(o|0)?n:p;d=d+1|0}else{n=e;m=p}while(0);if((n|0)!=(m|0)){j=f[m>>2]|0;l=f[n>>2]|0;h=f[c>>2]|0;g=f[h+4>>2]|0;e=f[h>>2]|0;if(g-e>>3>>>0>j>>>0){k=e;i=g}else{yp(h);p=f[c>>2]|0;k=f[h>>2]|0;e=f[p>>2]|0;i=f[p+4>>2]|0;h=p}g=f[k+(j<<3)>>2]|0;if(i-e>>3>>>0<=l>>>0){yp(h);e=f[h>>2]|0}if(g>>>0<(f[e+(l<<3)>>2]|0)>>>0){p=f[n>>2]|0;f[n>>2]=f[m>>2];f[m>>2]=p;d=d+1|0}}if(!d){e=Jd(a,n,c)|0;d=n+4|0;if(Jd(d,b,c)|0){s=105;break}if(e){a=d;continue}}p=n;if((p-q|0)>=(r-p|0)){s=104;break}sb(a,n,c);a=n+4|0}if((s|0)==104){s=0;sb(n+4|0,b,c);b=n;continue}else if((s|0)==105){s=0;if(e){s=106;break}else{b=n;continue}}}if((s|0)==5){h=f[t>>2]|0;j=f[a>>2]|0;b=f[c>>2]|0;e=f[b+4>>2]|0;d=f[b>>2]|0;if(e-d>>3>>>0>h>>>0){i=b;g=d;b=d}else{yp(b);e=f[c>>2]|0;i=e;g=f[b>>2]|0;b=f[e>>2]|0;e=f[e+4>>2]|0}d=f[g+(h<<3)>>2]|0;if(e-b>>3>>>0<=j>>>0){yp(i);b=f[i>>2]|0}if(d>>>0>=(f[b+(j<<3)>>2]|0)>>>0)return;c=f[a>>2]|0;f[a>>2]=f[t>>2];f[t>>2]=c;return}else if((s|0)==13){Ae(a,a+4|0,t,c)|0;return}else if((s|0)==14){Jf(a,a+4|0,a+8|0,t,c)|0;return}else if((s|0)==15){ze(a,a+4|0,a+8|0,a+12|0,t,c)|0;return}else if((s|0)==17){Pg(a,b,c);return}else if((s|0)==106)return}function tb(a,b,c){a=a|0;b=b|0;c=c|0;var d=0,e=0,g=0,h=0,i=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0;a:while(1){r=b;t=b+-4|0;while(1){b:while(1){q=a;e=r-q|0;d=e>>2;switch(d|0){case 2:{s=5;break a}case 3:{s=13;break a}case 4:{s=14;break a}case 5:{s=15;break a}case 1:case 0:{s=106;break a}default:{}}if((e|0)<124){s=17;break a}p=a+(((d|0)/2|0)<<2)|0;if((e|0)>3996){d=(d|0)/4|0;d=ze(a,a+(d<<2)|0,p,p+(d<<2)|0,t,c)|0}else d=Ae(a,p,t,c)|0;j=f[a>>2]|0;l=f[p>>2]|0;h=f[c>>2]|0;g=f[h+4>>2]|0;e=f[h>>2]|0;if(g-e>>3>>>0>j>>>0){k=e;i=g}else{yp(h);o=f[c>>2]|0;k=f[h>>2]|0;e=f[o>>2]|0;i=f[o+4>>2]|0;h=o}g=f[k+(j<<3)>>2]|0;if(i-e>>3>>>0<=l>>>0){yp(h);e=f[h>>2]|0}if(g>>>0<(f[e+(l<<3)>>2]|0)>>>0){g=t;break}else g=t;while(1){g=g+-4|0;if((a|0)==(g|0))break;k=f[g>>2]|0;m=f[p>>2]|0;e=f[c>>2]|0;i=f[e+4>>2]|0;h=f[e>>2]|0;if(i-h>>3>>>0>k>>>0){l=e;j=h;e=h}else{yp(e);i=f[c>>2]|0;l=i;j=f[e>>2]|0;e=f[i>>2]|0;i=f[i+4>>2]|0}h=f[j+(k<<3)>>2]|0;if(i-e>>3>>>0<=m>>>0){yp(l);e=f[l>>2]|0}if(h>>>0<(f[e+(m<<3)>>2]|0)>>>0){s=71;break b}}d=a+4|0;j=f[a>>2]|0;l=f[t>>2]|0;h=f[c>>2]|0;g=f[h+4>>2]|0;e=f[h>>2]|0;if(g-e>>3>>>0>j>>>0){k=e;i=g}else{yp(h);q=f[c>>2]|0;k=f[h>>2]|0;e=f[q>>2]|0;i=f[q+4>>2]|0;h=q}g=f[k+(j<<3)>>2]|0;if(i-e>>3>>>0<=l>>>0){yp(h);e=f[h>>2]|0}if(g>>>0>=(f[e+(l<<3)>>2]|0)>>>0){if((d|0)==(t|0)){s=106;break a}while(1){j=f[a>>2]|0;l=f[d>>2]|0;h=f[c>>2]|0;g=f[h+4>>2]|0;e=f[h>>2]|0;if(g-e>>3>>>0>j>>>0){k=e;i=g}else{yp(h);q=f[c>>2]|0;k=f[h>>2]|0;e=f[q>>2]|0;i=f[q+4>>2]|0;h=q}g=f[k+(j<<3)>>2]|0;if(i-e>>3>>>0<=l>>>0){yp(h);e=f[h>>2]|0}if(g>>>0<(f[e+(l<<3)>>2]|0)>>>0)break;d=d+4|0;if((d|0)==(t|0)){s=106;break a}}q=f[d>>2]|0;f[d>>2]=f[t>>2];f[t>>2]=q;d=d+4|0}if((d|0)==(t|0)){s=106;break a}else l=t;while(1){while(1){h=f[a>>2]|0;k=f[d>>2]|0;i=f[c>>2]|0;g=f[i+4>>2]|0;e=f[i>>2]|0;if(g-e>>3>>>0>h>>>0)j=e;else{yp(i);q=f[c>>2]|0;j=f[i>>2]|0;e=f[q>>2]|0;g=f[q+4>>2]|0;i=q}h=f[j+(h<<3)>>2]|0;if(g-e>>3>>>0<=k>>>0){yp(i);e=f[i>>2]|0}n=d+4|0;if(h>>>0<(f[e+(k<<3)>>2]|0)>>>0){m=l;break}else d=n}do{j=f[a>>2]|0;m=m+-4|0;l=f[m>>2]|0;h=f[c>>2]|0;g=f[h+4>>2]|0;e=f[h>>2]|0;if(g-e>>3>>>0>j>>>0){k=e;i=g}else{yp(h);q=f[c>>2]|0;k=f[h>>2]|0;e=f[q>>2]|0;i=f[q+4>>2]|0;h=q}g=f[k+(j<<3)>>2]|0;if(i-e>>3>>>0<=l>>>0){yp(h);e=f[h>>2]|0}}while(g>>>0<(f[e+(l<<3)>>2]|0)>>>0);if(d>>>0>=m>>>0){a=d;continue b}l=f[d>>2]|0;f[d>>2]=f[m>>2];f[m>>2]=l;d=n;l=m}}if((s|0)==71){s=0;o=f[a>>2]|0;f[a>>2]=f[g>>2];f[g>>2]=o;d=d+1|0}e=a+4|0;c:do if(e>>>0>>0)while(1){o=e;while(1){k=f[o>>2]|0;m=f[p>>2]|0;j=f[c>>2]|0;i=f[j+4>>2]|0;e=f[j>>2]|0;if(i-e>>3>>>0>k>>>0){l=e;h=e;e=j}else{yp(j);e=f[c>>2]|0;l=f[j>>2]|0;h=f[e>>2]|0;i=f[e+4>>2]|0}j=f[l+(k<<3)>>2]|0;if(i-h>>3>>>0<=m>>>0){yp(e);h=f[e>>2]|0}e=o+4|0;if(j>>>0<(f[h+(m<<3)>>2]|0)>>>0)o=e;else{n=g;break}}do{n=n+-4|0;k=f[n>>2]|0;m=f[p>>2]|0;i=f[c>>2]|0;h=f[i+4>>2]|0;g=f[i>>2]|0;if(h-g>>3>>>0>k>>>0){l=g;j=h}else{yp(i);h=f[c>>2]|0;l=f[i>>2]|0;g=f[h>>2]|0;j=f[h+4>>2]|0;i=h}h=f[l+(k<<3)>>2]|0;if(j-g>>3>>>0<=m>>>0){yp(i);g=f[i>>2]|0}}while(h>>>0>=(f[g+(m<<3)>>2]|0)>>>0);if(o>>>0>n>>>0){n=o;m=p;break c}g=f[o>>2]|0;f[o>>2]=f[n>>2];f[n>>2]=g;g=n;p=(p|0)==(o|0)?n:p;d=d+1|0}else{n=e;m=p}while(0);if((n|0)!=(m|0)){j=f[m>>2]|0;l=f[n>>2]|0;h=f[c>>2]|0;g=f[h+4>>2]|0;e=f[h>>2]|0;if(g-e>>3>>>0>j>>>0){k=e;i=g}else{yp(h);p=f[c>>2]|0;k=f[h>>2]|0;e=f[p>>2]|0;i=f[p+4>>2]|0;h=p}g=f[k+(j<<3)>>2]|0;if(i-e>>3>>>0<=l>>>0){yp(h);e=f[h>>2]|0}if(g>>>0<(f[e+(l<<3)>>2]|0)>>>0){p=f[n>>2]|0;f[n>>2]=f[m>>2];f[m>>2]=p;d=d+1|0}}if(!d){e=Jd(a,n,c)|0;d=n+4|0;if(Jd(d,b,c)|0){s=105;break}if(e){a=d;continue}}p=n;if((p-q|0)>=(r-p|0)){s=104;break}tb(a,n,c);a=n+4|0}if((s|0)==104){s=0;tb(n+4|0,b,c);b=n;continue}else if((s|0)==105){s=0;if(e){s=106;break}else{b=n;continue}}}if((s|0)==5){h=f[t>>2]|0;j=f[a>>2]|0;b=f[c>>2]|0;e=f[b+4>>2]|0;d=f[b>>2]|0;if(e-d>>3>>>0>h>>>0){i=b;g=d;b=d}else{yp(b);e=f[c>>2]|0;i=e;g=f[b>>2]|0;b=f[e>>2]|0;e=f[e+4>>2]|0}d=f[g+(h<<3)>>2]|0;if(e-b>>3>>>0<=j>>>0){yp(i);b=f[i>>2]|0}if(d>>>0>=(f[b+(j<<3)>>2]|0)>>>0)return;c=f[a>>2]|0;f[a>>2]=f[t>>2];f[t>>2]=c;return}else if((s|0)==13){Ae(a,a+4|0,t,c)|0;return}else if((s|0)==14){Jf(a,a+4|0,a+8|0,t,c)|0;return}else if((s|0)==15){ze(a,a+4|0,a+8|0,a+12|0,t,c)|0;return}else if((s|0)==17){Pg(a,b,c);return}else if((s|0)==106)return}function ub(a,b,c){a=a|0;b=b|0;c=c|0;var d=0,e=0,g=0,h=0,i=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0;a:while(1){r=b;t=b+-4|0;while(1){b:while(1){q=a;e=r-q|0;d=e>>2;switch(d|0){case 2:{s=5;break a}case 3:{s=13;break a}case 4:{s=14;break a}case 5:{s=15;break a}case 1:case 0:{s=106;break a}default:{}}if((e|0)<124){s=17;break a}p=a+(((d|0)/2|0)<<2)|0;if((e|0)>3996){d=(d|0)/4|0;d=ze(a,a+(d<<2)|0,p,p+(d<<2)|0,t,c)|0}else d=Ae(a,p,t,c)|0;j=f[a>>2]|0;l=f[p>>2]|0;h=f[c>>2]|0;g=f[h+4>>2]|0;e=f[h>>2]|0;if(g-e>>3>>>0>j>>>0){k=e;i=g}else{yp(h);o=f[c>>2]|0;k=f[h>>2]|0;e=f[o>>2]|0;i=f[o+4>>2]|0;h=o}g=f[k+(j<<3)>>2]|0;if(i-e>>3>>>0<=l>>>0){yp(h);e=f[h>>2]|0}if(g>>>0<(f[e+(l<<3)>>2]|0)>>>0){g=t;break}else g=t;while(1){g=g+-4|0;if((a|0)==(g|0))break;k=f[g>>2]|0;m=f[p>>2]|0;e=f[c>>2]|0;i=f[e+4>>2]|0;h=f[e>>2]|0;if(i-h>>3>>>0>k>>>0){l=e;j=h;e=h}else{yp(e);i=f[c>>2]|0;l=i;j=f[e>>2]|0;e=f[i>>2]|0;i=f[i+4>>2]|0}h=f[j+(k<<3)>>2]|0;if(i-e>>3>>>0<=m>>>0){yp(l);e=f[l>>2]|0}if(h>>>0<(f[e+(m<<3)>>2]|0)>>>0){s=71;break b}}d=a+4|0;j=f[a>>2]|0;l=f[t>>2]|0;h=f[c>>2]|0;g=f[h+4>>2]|0;e=f[h>>2]|0;if(g-e>>3>>>0>j>>>0){k=e;i=g}else{yp(h);q=f[c>>2]|0;k=f[h>>2]|0;e=f[q>>2]|0;i=f[q+4>>2]|0;h=q}g=f[k+(j<<3)>>2]|0;if(i-e>>3>>>0<=l>>>0){yp(h);e=f[h>>2]|0}if(g>>>0>=(f[e+(l<<3)>>2]|0)>>>0){if((d|0)==(t|0)){s=106;break a}while(1){j=f[a>>2]|0;l=f[d>>2]|0;h=f[c>>2]|0;g=f[h+4>>2]|0;e=f[h>>2]|0;if(g-e>>3>>>0>j>>>0){k=e;i=g}else{yp(h);q=f[c>>2]|0;k=f[h>>2]|0;e=f[q>>2]|0;i=f[q+4>>2]|0;h=q}g=f[k+(j<<3)>>2]|0;if(i-e>>3>>>0<=l>>>0){yp(h);e=f[h>>2]|0}if(g>>>0<(f[e+(l<<3)>>2]|0)>>>0)break;d=d+4|0;if((d|0)==(t|0)){s=106;break a}}q=f[d>>2]|0;f[d>>2]=f[t>>2];f[t>>2]=q;d=d+4|0}if((d|0)==(t|0)){s=106;break a}else l=t;while(1){while(1){h=f[a>>2]|0;k=f[d>>2]|0;i=f[c>>2]|0;g=f[i+4>>2]|0;e=f[i>>2]|0;if(g-e>>3>>>0>h>>>0)j=e;else{yp(i);q=f[c>>2]|0;j=f[i>>2]|0;e=f[q>>2]|0;g=f[q+4>>2]|0;i=q}h=f[j+(h<<3)>>2]|0;if(g-e>>3>>>0<=k>>>0){yp(i);e=f[i>>2]|0}n=d+4|0;if(h>>>0<(f[e+(k<<3)>>2]|0)>>>0){m=l;break}else d=n}do{j=f[a>>2]|0;m=m+-4|0;l=f[m>>2]|0;h=f[c>>2]|0;g=f[h+4>>2]|0;e=f[h>>2]|0;if(g-e>>3>>>0>j>>>0){k=e;i=g}else{yp(h);q=f[c>>2]|0;k=f[h>>2]|0;e=f[q>>2]|0;i=f[q+4>>2]|0;h=q}g=f[k+(j<<3)>>2]|0;if(i-e>>3>>>0<=l>>>0){yp(h);e=f[h>>2]|0}}while(g>>>0<(f[e+(l<<3)>>2]|0)>>>0);if(d>>>0>=m>>>0){a=d;continue b}l=f[d>>2]|0;f[d>>2]=f[m>>2];f[m>>2]=l;d=n;l=m}}if((s|0)==71){s=0;o=f[a>>2]|0;f[a>>2]=f[g>>2];f[g>>2]=o;d=d+1|0}e=a+4|0;c:do if(e>>>0>>0)while(1){o=e;while(1){k=f[o>>2]|0;m=f[p>>2]|0;j=f[c>>2]|0;i=f[j+4>>2]|0;e=f[j>>2]|0;if(i-e>>3>>>0>k>>>0){l=e;h=e;e=j}else{yp(j);e=f[c>>2]|0;l=f[j>>2]|0;h=f[e>>2]|0;i=f[e+4>>2]|0}j=f[l+(k<<3)>>2]|0;if(i-h>>3>>>0<=m>>>0){yp(e);h=f[e>>2]|0}e=o+4|0;if(j>>>0<(f[h+(m<<3)>>2]|0)>>>0)o=e;else{n=g;break}}do{n=n+-4|0;k=f[n>>2]|0;m=f[p>>2]|0;i=f[c>>2]|0;h=f[i+4>>2]|0;g=f[i>>2]|0;if(h-g>>3>>>0>k>>>0){l=g;j=h}else{yp(i);h=f[c>>2]|0;l=f[i>>2]|0;g=f[h>>2]|0;j=f[h+4>>2]|0;i=h}h=f[l+(k<<3)>>2]|0;if(j-g>>3>>>0<=m>>>0){yp(i);g=f[i>>2]|0}}while(h>>>0>=(f[g+(m<<3)>>2]|0)>>>0);if(o>>>0>n>>>0){n=o;m=p;break c}g=f[o>>2]|0;f[o>>2]=f[n>>2];f[n>>2]=g;g=n;p=(p|0)==(o|0)?n:p;d=d+1|0}else{n=e;m=p}while(0);if((n|0)!=(m|0)){j=f[m>>2]|0;l=f[n>>2]|0;h=f[c>>2]|0;g=f[h+4>>2]|0;e=f[h>>2]|0;if(g-e>>3>>>0>j>>>0){k=e;i=g}else{yp(h);p=f[c>>2]|0;k=f[h>>2]|0;e=f[p>>2]|0;i=f[p+4>>2]|0;h=p}g=f[k+(j<<3)>>2]|0;if(i-e>>3>>>0<=l>>>0){yp(h);e=f[h>>2]|0}if(g>>>0<(f[e+(l<<3)>>2]|0)>>>0){p=f[n>>2]|0;f[n>>2]=f[m>>2];f[m>>2]=p;d=d+1|0}}if(!d){e=Jd(a,n,c)|0;d=n+4|0;if(Jd(d,b,c)|0){s=105;break}if(e){a=d;continue}}p=n;if((p-q|0)>=(r-p|0)){s=104;break}ub(a,n,c);a=n+4|0}if((s|0)==104){s=0;ub(n+4|0,b,c);b=n;continue}else if((s|0)==105){s=0;if(e){s=106;break}else{b=n;continue}}}if((s|0)==5){h=f[t>>2]|0;j=f[a>>2]|0;b=f[c>>2]|0;e=f[b+4>>2]|0;d=f[b>>2]|0;if(e-d>>3>>>0>h>>>0){i=b;g=d;b=d}else{yp(b);e=f[c>>2]|0;i=e;g=f[b>>2]|0;b=f[e>>2]|0;e=f[e+4>>2]|0}d=f[g+(h<<3)>>2]|0;if(e-b>>3>>>0<=j>>>0){yp(i);b=f[i>>2]|0}if(d>>>0>=(f[b+(j<<3)>>2]|0)>>>0)return;c=f[a>>2]|0;f[a>>2]=f[t>>2];f[t>>2]=c;return}else if((s|0)==13){Ae(a,a+4|0,t,c)|0;return}else if((s|0)==14){Jf(a,a+4|0,a+8|0,t,c)|0;return}else if((s|0)==15){ze(a,a+4|0,a+8|0,a+12|0,t,c)|0;return}else if((s|0)==17){Pg(a,b,c);return}else if((s|0)==106)return}function vb(a,b,c){a=a|0;b=b|0;c=c|0;var d=0,e=0,g=0,h=0,i=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0;a:while(1){r=b;t=b+-4|0;while(1){b:while(1){q=a;e=r-q|0;d=e>>2;switch(d|0){case 2:{s=5;break a}case 3:{s=13;break a}case 4:{s=14;break a}case 5:{s=15;break a}case 1:case 0:{s=106;break a}default:{}}if((e|0)<124){s=17;break a}p=a+(((d|0)/2|0)<<2)|0;if((e|0)>3996){d=(d|0)/4|0;d=ze(a,a+(d<<2)|0,p,p+(d<<2)|0,t,c)|0}else d=Ae(a,p,t,c)|0;j=f[a>>2]|0;l=f[p>>2]|0;h=f[c>>2]|0;g=f[h+4>>2]|0;e=f[h>>2]|0;if(g-e>>3>>>0>j>>>0){k=e;i=g}else{yp(h);o=f[c>>2]|0;k=f[h>>2]|0;e=f[o>>2]|0;i=f[o+4>>2]|0;h=o}g=f[k+(j<<3)>>2]|0;if(i-e>>3>>>0<=l>>>0){yp(h);e=f[h>>2]|0}if(g>>>0<(f[e+(l<<3)>>2]|0)>>>0){g=t;break}else g=t;while(1){g=g+-4|0;if((a|0)==(g|0))break;k=f[g>>2]|0;m=f[p>>2]|0;e=f[c>>2]|0;i=f[e+4>>2]|0;h=f[e>>2]|0;if(i-h>>3>>>0>k>>>0){l=e;j=h;e=h}else{yp(e);i=f[c>>2]|0;l=i;j=f[e>>2]|0;e=f[i>>2]|0;i=f[i+4>>2]|0}h=f[j+(k<<3)>>2]|0;if(i-e>>3>>>0<=m>>>0){yp(l);e=f[l>>2]|0}if(h>>>0<(f[e+(m<<3)>>2]|0)>>>0){s=71;break b}}d=a+4|0;j=f[a>>2]|0;l=f[t>>2]|0;h=f[c>>2]|0;g=f[h+4>>2]|0;e=f[h>>2]|0;if(g-e>>3>>>0>j>>>0){k=e;i=g}else{yp(h);q=f[c>>2]|0;k=f[h>>2]|0;e=f[q>>2]|0;i=f[q+4>>2]|0;h=q}g=f[k+(j<<3)>>2]|0;if(i-e>>3>>>0<=l>>>0){yp(h);e=f[h>>2]|0}if(g>>>0>=(f[e+(l<<3)>>2]|0)>>>0){if((d|0)==(t|0)){s=106;break a}while(1){j=f[a>>2]|0;l=f[d>>2]|0;h=f[c>>2]|0;g=f[h+4>>2]|0;e=f[h>>2]|0;if(g-e>>3>>>0>j>>>0){k=e;i=g}else{yp(h);q=f[c>>2]|0;k=f[h>>2]|0;e=f[q>>2]|0;i=f[q+4>>2]|0;h=q}g=f[k+(j<<3)>>2]|0;if(i-e>>3>>>0<=l>>>0){yp(h);e=f[h>>2]|0}if(g>>>0<(f[e+(l<<3)>>2]|0)>>>0)break;d=d+4|0;if((d|0)==(t|0)){s=106;break a}}q=f[d>>2]|0;f[d>>2]=f[t>>2];f[t>>2]=q;d=d+4|0}if((d|0)==(t|0)){s=106;break a}else l=t;while(1){while(1){h=f[a>>2]|0;k=f[d>>2]|0;i=f[c>>2]|0;g=f[i+4>>2]|0;e=f[i>>2]|0;if(g-e>>3>>>0>h>>>0)j=e;else{yp(i);q=f[c>>2]|0;j=f[i>>2]|0;e=f[q>>2]|0;g=f[q+4>>2]|0;i=q}h=f[j+(h<<3)>>2]|0;if(g-e>>3>>>0<=k>>>0){yp(i);e=f[i>>2]|0}n=d+4|0;if(h>>>0<(f[e+(k<<3)>>2]|0)>>>0){m=l;break}else d=n}do{j=f[a>>2]|0;m=m+-4|0;l=f[m>>2]|0;h=f[c>>2]|0;g=f[h+4>>2]|0;e=f[h>>2]|0;if(g-e>>3>>>0>j>>>0){k=e;i=g}else{yp(h);q=f[c>>2]|0;k=f[h>>2]|0;e=f[q>>2]|0;i=f[q+4>>2]|0;h=q}g=f[k+(j<<3)>>2]|0;if(i-e>>3>>>0<=l>>>0){yp(h);e=f[h>>2]|0}}while(g>>>0<(f[e+(l<<3)>>2]|0)>>>0);if(d>>>0>=m>>>0){a=d;continue b}l=f[d>>2]|0;f[d>>2]=f[m>>2];f[m>>2]=l;d=n;l=m}}if((s|0)==71){s=0;o=f[a>>2]|0;f[a>>2]=f[g>>2];f[g>>2]=o;d=d+1|0}e=a+4|0;c:do if(e>>>0>>0)while(1){o=e;while(1){k=f[o>>2]|0;m=f[p>>2]|0;j=f[c>>2]|0;i=f[j+4>>2]|0;e=f[j>>2]|0;if(i-e>>3>>>0>k>>>0){l=e;h=e;e=j}else{yp(j);e=f[c>>2]|0;l=f[j>>2]|0;h=f[e>>2]|0;i=f[e+4>>2]|0}j=f[l+(k<<3)>>2]|0;if(i-h>>3>>>0<=m>>>0){yp(e);h=f[e>>2]|0}e=o+4|0;if(j>>>0<(f[h+(m<<3)>>2]|0)>>>0)o=e;else{n=g;break}}do{n=n+-4|0;k=f[n>>2]|0;m=f[p>>2]|0;i=f[c>>2]|0;h=f[i+4>>2]|0;g=f[i>>2]|0;if(h-g>>3>>>0>k>>>0){l=g;j=h}else{yp(i);h=f[c>>2]|0;l=f[i>>2]|0;g=f[h>>2]|0;j=f[h+4>>2]|0;i=h}h=f[l+(k<<3)>>2]|0;if(j-g>>3>>>0<=m>>>0){yp(i);g=f[i>>2]|0}}while(h>>>0>=(f[g+(m<<3)>>2]|0)>>>0);if(o>>>0>n>>>0){n=o;m=p;break c}g=f[o>>2]|0;f[o>>2]=f[n>>2];f[n>>2]=g;g=n;p=(p|0)==(o|0)?n:p;d=d+1|0}else{n=e;m=p}while(0);if((n|0)!=(m|0)){j=f[m>>2]|0;l=f[n>>2]|0;h=f[c>>2]|0;g=f[h+4>>2]|0;e=f[h>>2]|0;if(g-e>>3>>>0>j>>>0){k=e;i=g}else{yp(h);p=f[c>>2]|0;k=f[h>>2]|0;e=f[p>>2]|0;i=f[p+4>>2]|0;h=p}g=f[k+(j<<3)>>2]|0;if(i-e>>3>>>0<=l>>>0){yp(h);e=f[h>>2]|0}if(g>>>0<(f[e+(l<<3)>>2]|0)>>>0){p=f[n>>2]|0;f[n>>2]=f[m>>2];f[m>>2]=p;d=d+1|0}}if(!d){e=Jd(a,n,c)|0;d=n+4|0;if(Jd(d,b,c)|0){s=105;break}if(e){a=d;continue}}p=n;if((p-q|0)>=(r-p|0)){s=104;break}vb(a,n,c);a=n+4|0}if((s|0)==104){s=0;vb(n+4|0,b,c);b=n;continue}else if((s|0)==105){s=0;if(e){s=106;break}else{b=n;continue}}}if((s|0)==5){h=f[t>>2]|0;j=f[a>>2]|0;b=f[c>>2]|0;e=f[b+4>>2]|0;d=f[b>>2]|0;if(e-d>>3>>>0>h>>>0){i=b;g=d;b=d}else{yp(b);e=f[c>>2]|0;i=e;g=f[b>>2]|0;b=f[e>>2]|0;e=f[e+4>>2]|0}d=f[g+(h<<3)>>2]|0;if(e-b>>3>>>0<=j>>>0){yp(i);b=f[i>>2]|0}if(d>>>0>=(f[b+(j<<3)>>2]|0)>>>0)return;c=f[a>>2]|0;f[a>>2]=f[t>>2];f[t>>2]=c;return}else if((s|0)==13){Ae(a,a+4|0,t,c)|0;return}else if((s|0)==14){Jf(a,a+4|0,a+8|0,t,c)|0;return}else if((s|0)==15){ze(a,a+4|0,a+8|0,a+12|0,t,c)|0;return}else if((s|0)==17){Pg(a,b,c);return}else if((s|0)==106)return}function wb(a,b,c){a=a|0;b=b|0;c=c|0;var d=0,e=0,g=0,h=0,i=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0;a:while(1){r=b;t=b+-4|0;while(1){b:while(1){q=a;e=r-q|0;d=e>>2;switch(d|0){case 2:{s=5;break a}case 3:{s=13;break a}case 4:{s=14;break a}case 5:{s=15;break a}case 1:case 0:{s=106;break a}default:{}}if((e|0)<124){s=17;break a}p=a+(((d|0)/2|0)<<2)|0;if((e|0)>3996){d=(d|0)/4|0;d=ze(a,a+(d<<2)|0,p,p+(d<<2)|0,t,c)|0}else d=Ae(a,p,t,c)|0;j=f[a>>2]|0;l=f[p>>2]|0;h=f[c>>2]|0;g=f[h+4>>2]|0;e=f[h>>2]|0;if(g-e>>3>>>0>j>>>0){k=e;i=g}else{yp(h);o=f[c>>2]|0;k=f[h>>2]|0;e=f[o>>2]|0;i=f[o+4>>2]|0;h=o}g=f[k+(j<<3)>>2]|0;if(i-e>>3>>>0<=l>>>0){yp(h);e=f[h>>2]|0}if(g>>>0<(f[e+(l<<3)>>2]|0)>>>0){g=t;break}else g=t;while(1){g=g+-4|0;if((a|0)==(g|0))break;k=f[g>>2]|0;m=f[p>>2]|0;e=f[c>>2]|0;i=f[e+4>>2]|0;h=f[e>>2]|0;if(i-h>>3>>>0>k>>>0){l=e;j=h;e=h}else{yp(e);i=f[c>>2]|0;l=i;j=f[e>>2]|0;e=f[i>>2]|0;i=f[i+4>>2]|0}h=f[j+(k<<3)>>2]|0;if(i-e>>3>>>0<=m>>>0){yp(l);e=f[l>>2]|0}if(h>>>0<(f[e+(m<<3)>>2]|0)>>>0){s=71;break b}}d=a+4|0;j=f[a>>2]|0;l=f[t>>2]|0;h=f[c>>2]|0;g=f[h+4>>2]|0;e=f[h>>2]|0;if(g-e>>3>>>0>j>>>0){k=e;i=g}else{yp(h);q=f[c>>2]|0;k=f[h>>2]|0;e=f[q>>2]|0;i=f[q+4>>2]|0;h=q}g=f[k+(j<<3)>>2]|0;if(i-e>>3>>>0<=l>>>0){yp(h);e=f[h>>2]|0}if(g>>>0>=(f[e+(l<<3)>>2]|0)>>>0){if((d|0)==(t|0)){s=106;break a}while(1){j=f[a>>2]|0;l=f[d>>2]|0;h=f[c>>2]|0;g=f[h+4>>2]|0;e=f[h>>2]|0;if(g-e>>3>>>0>j>>>0){k=e;i=g}else{yp(h);q=f[c>>2]|0;k=f[h>>2]|0;e=f[q>>2]|0;i=f[q+4>>2]|0;h=q}g=f[k+(j<<3)>>2]|0;if(i-e>>3>>>0<=l>>>0){yp(h);e=f[h>>2]|0}if(g>>>0<(f[e+(l<<3)>>2]|0)>>>0)break;d=d+4|0;if((d|0)==(t|0)){s=106;break a}}q=f[d>>2]|0;f[d>>2]=f[t>>2];f[t>>2]=q;d=d+4|0}if((d|0)==(t|0)){s=106;break a}else l=t;while(1){while(1){h=f[a>>2]|0;k=f[d>>2]|0;i=f[c>>2]|0;g=f[i+4>>2]|0;e=f[i>>2]|0;if(g-e>>3>>>0>h>>>0)j=e;else{yp(i);q=f[c>>2]|0;j=f[i>>2]|0;e=f[q>>2]|0;g=f[q+4>>2]|0;i=q}h=f[j+(h<<3)>>2]|0;if(g-e>>3>>>0<=k>>>0){yp(i);e=f[i>>2]|0}n=d+4|0;if(h>>>0<(f[e+(k<<3)>>2]|0)>>>0){m=l;break}else d=n}do{j=f[a>>2]|0;m=m+-4|0;l=f[m>>2]|0;h=f[c>>2]|0;g=f[h+4>>2]|0;e=f[h>>2]|0;if(g-e>>3>>>0>j>>>0){k=e;i=g}else{yp(h);q=f[c>>2]|0;k=f[h>>2]|0;e=f[q>>2]|0;i=f[q+4>>2]|0;h=q}g=f[k+(j<<3)>>2]|0;if(i-e>>3>>>0<=l>>>0){yp(h);e=f[h>>2]|0}}while(g>>>0<(f[e+(l<<3)>>2]|0)>>>0);if(d>>>0>=m>>>0){a=d;continue b}l=f[d>>2]|0;f[d>>2]=f[m>>2];f[m>>2]=l;d=n;l=m}}if((s|0)==71){s=0;o=f[a>>2]|0;f[a>>2]=f[g>>2];f[g>>2]=o;d=d+1|0}e=a+4|0;c:do if(e>>>0>>0)while(1){o=e;while(1){k=f[o>>2]|0;m=f[p>>2]|0;j=f[c>>2]|0;i=f[j+4>>2]|0;e=f[j>>2]|0;if(i-e>>3>>>0>k>>>0){l=e;h=e;e=j}else{yp(j);e=f[c>>2]|0;l=f[j>>2]|0;h=f[e>>2]|0;i=f[e+4>>2]|0}j=f[l+(k<<3)>>2]|0;if(i-h>>3>>>0<=m>>>0){yp(e);h=f[e>>2]|0}e=o+4|0;if(j>>>0<(f[h+(m<<3)>>2]|0)>>>0)o=e;else{n=g;break}}do{n=n+-4|0;k=f[n>>2]|0;m=f[p>>2]|0;i=f[c>>2]|0;h=f[i+4>>2]|0;g=f[i>>2]|0;if(h-g>>3>>>0>k>>>0){l=g;j=h}else{yp(i);h=f[c>>2]|0;l=f[i>>2]|0;g=f[h>>2]|0;j=f[h+4>>2]|0;i=h}h=f[l+(k<<3)>>2]|0;if(j-g>>3>>>0<=m>>>0){yp(i);g=f[i>>2]|0}}while(h>>>0>=(f[g+(m<<3)>>2]|0)>>>0);if(o>>>0>n>>>0){n=o;m=p;break c}g=f[o>>2]|0;f[o>>2]=f[n>>2];f[n>>2]=g;g=n;p=(p|0)==(o|0)?n:p;d=d+1|0}else{n=e;m=p}while(0);if((n|0)!=(m|0)){j=f[m>>2]|0;l=f[n>>2]|0;h=f[c>>2]|0;g=f[h+4>>2]|0;e=f[h>>2]|0;if(g-e>>3>>>0>j>>>0){k=e;i=g}else{yp(h);p=f[c>>2]|0;k=f[h>>2]|0;e=f[p>>2]|0;i=f[p+4>>2]|0;h=p}g=f[k+(j<<3)>>2]|0;if(i-e>>3>>>0<=l>>>0){yp(h);e=f[h>>2]|0}if(g>>>0<(f[e+(l<<3)>>2]|0)>>>0){p=f[n>>2]|0;f[n>>2]=f[m>>2];f[m>>2]=p;d=d+1|0}}if(!d){e=Jd(a,n,c)|0;d=n+4|0;if(Jd(d,b,c)|0){s=105;break}if(e){a=d;continue}}p=n;if((p-q|0)>=(r-p|0)){s=104;break}wb(a,n,c);a=n+4|0}if((s|0)==104){s=0;wb(n+4|0,b,c);b=n;continue}else if((s|0)==105){s=0;if(e){s=106;break}else{b=n;continue}}}if((s|0)==5){h=f[t>>2]|0;j=f[a>>2]|0;b=f[c>>2]|0;e=f[b+4>>2]|0;d=f[b>>2]|0;if(e-d>>3>>>0>h>>>0){i=b;g=d;b=d}else{yp(b);e=f[c>>2]|0;i=e;g=f[b>>2]|0;b=f[e>>2]|0;e=f[e+4>>2]|0}d=f[g+(h<<3)>>2]|0;if(e-b>>3>>>0<=j>>>0){yp(i);b=f[i>>2]|0}if(d>>>0>=(f[b+(j<<3)>>2]|0)>>>0)return;c=f[a>>2]|0;f[a>>2]=f[t>>2];f[t>>2]=c;return}else if((s|0)==13){Ae(a,a+4|0,t,c)|0;return}else if((s|0)==14){Jf(a,a+4|0,a+8|0,t,c)|0;return}else if((s|0)==15){ze(a,a+4|0,a+8|0,a+12|0,t,c)|0;return}else if((s|0)==17){Pg(a,b,c);return}else if((s|0)==106)return}function xb(a,b,c){a=a|0;b=b|0;c=c|0;var d=0,e=0,g=0,h=0,i=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0;a:while(1){r=b;t=b+-4|0;while(1){b:while(1){q=a;e=r-q|0;d=e>>2;switch(d|0){case 2:{s=5;break a}case 3:{s=13;break a}case 4:{s=14;break a}case 5:{s=15;break a}case 1:case 0:{s=106;break a}default:{}}if((e|0)<124){s=17;break a}p=a+(((d|0)/2|0)<<2)|0;if((e|0)>3996){d=(d|0)/4|0;d=ze(a,a+(d<<2)|0,p,p+(d<<2)|0,t,c)|0}else d=Ae(a,p,t,c)|0;j=f[a>>2]|0;l=f[p>>2]|0;h=f[c>>2]|0;g=f[h+4>>2]|0;e=f[h>>2]|0;if(g-e>>3>>>0>j>>>0){k=e;i=g}else{yp(h);o=f[c>>2]|0;k=f[h>>2]|0;e=f[o>>2]|0;i=f[o+4>>2]|0;h=o}g=f[k+(j<<3)>>2]|0;if(i-e>>3>>>0<=l>>>0){yp(h);e=f[h>>2]|0}if(g>>>0<(f[e+(l<<3)>>2]|0)>>>0){g=t;break}else g=t;while(1){g=g+-4|0;if((a|0)==(g|0))break;k=f[g>>2]|0;m=f[p>>2]|0;e=f[c>>2]|0;i=f[e+4>>2]|0;h=f[e>>2]|0;if(i-h>>3>>>0>k>>>0){l=e;j=h;e=h}else{yp(e);i=f[c>>2]|0;l=i;j=f[e>>2]|0;e=f[i>>2]|0;i=f[i+4>>2]|0}h=f[j+(k<<3)>>2]|0;if(i-e>>3>>>0<=m>>>0){yp(l);e=f[l>>2]|0}if(h>>>0<(f[e+(m<<3)>>2]|0)>>>0){s=71;break b}}d=a+4|0;j=f[a>>2]|0;l=f[t>>2]|0;h=f[c>>2]|0;g=f[h+4>>2]|0;e=f[h>>2]|0;if(g-e>>3>>>0>j>>>0){k=e;i=g}else{yp(h);q=f[c>>2]|0;k=f[h>>2]|0;e=f[q>>2]|0;i=f[q+4>>2]|0;h=q}g=f[k+(j<<3)>>2]|0;if(i-e>>3>>>0<=l>>>0){yp(h);e=f[h>>2]|0}if(g>>>0>=(f[e+(l<<3)>>2]|0)>>>0){if((d|0)==(t|0)){s=106;break a}while(1){j=f[a>>2]|0;l=f[d>>2]|0;h=f[c>>2]|0;g=f[h+4>>2]|0;e=f[h>>2]|0;if(g-e>>3>>>0>j>>>0){k=e;i=g}else{yp(h);q=f[c>>2]|0;k=f[h>>2]|0;e=f[q>>2]|0;i=f[q+4>>2]|0;h=q}g=f[k+(j<<3)>>2]|0;if(i-e>>3>>>0<=l>>>0){yp(h);e=f[h>>2]|0}if(g>>>0<(f[e+(l<<3)>>2]|0)>>>0)break;d=d+4|0;if((d|0)==(t|0)){s=106;break a}}q=f[d>>2]|0;f[d>>2]=f[t>>2];f[t>>2]=q;d=d+4|0}if((d|0)==(t|0)){s=106;break a}else l=t;while(1){while(1){h=f[a>>2]|0;k=f[d>>2]|0;i=f[c>>2]|0;g=f[i+4>>2]|0;e=f[i>>2]|0;if(g-e>>3>>>0>h>>>0)j=e;else{yp(i);q=f[c>>2]|0;j=f[i>>2]|0;e=f[q>>2]|0;g=f[q+4>>2]|0;i=q}h=f[j+(h<<3)>>2]|0;if(g-e>>3>>>0<=k>>>0){yp(i);e=f[i>>2]|0}n=d+4|0;if(h>>>0<(f[e+(k<<3)>>2]|0)>>>0){m=l;break}else d=n}do{j=f[a>>2]|0;m=m+-4|0;l=f[m>>2]|0;h=f[c>>2]|0;g=f[h+4>>2]|0;e=f[h>>2]|0;if(g-e>>3>>>0>j>>>0){k=e;i=g}else{yp(h);q=f[c>>2]|0;k=f[h>>2]|0;e=f[q>>2]|0;i=f[q+4>>2]|0;h=q}g=f[k+(j<<3)>>2]|0;if(i-e>>3>>>0<=l>>>0){yp(h);e=f[h>>2]|0}}while(g>>>0<(f[e+(l<<3)>>2]|0)>>>0);if(d>>>0>=m>>>0){a=d;continue b}l=f[d>>2]|0;f[d>>2]=f[m>>2];f[m>>2]=l;d=n;l=m}}if((s|0)==71){s=0;o=f[a>>2]|0;f[a>>2]=f[g>>2];f[g>>2]=o;d=d+1|0}e=a+4|0;c:do if(e>>>0>>0)while(1){o=e;while(1){k=f[o>>2]|0;m=f[p>>2]|0;j=f[c>>2]|0;i=f[j+4>>2]|0;e=f[j>>2]|0;if(i-e>>3>>>0>k>>>0){l=e;h=e;e=j}else{yp(j);e=f[c>>2]|0;l=f[j>>2]|0;h=f[e>>2]|0;i=f[e+4>>2]|0}j=f[l+(k<<3)>>2]|0;if(i-h>>3>>>0<=m>>>0){yp(e);h=f[e>>2]|0}e=o+4|0;if(j>>>0<(f[h+(m<<3)>>2]|0)>>>0)o=e;else{n=g;break}}do{n=n+-4|0;k=f[n>>2]|0;m=f[p>>2]|0;i=f[c>>2]|0;h=f[i+4>>2]|0;g=f[i>>2]|0;if(h-g>>3>>>0>k>>>0){l=g;j=h}else{yp(i);h=f[c>>2]|0;l=f[i>>2]|0;g=f[h>>2]|0;j=f[h+4>>2]|0;i=h}h=f[l+(k<<3)>>2]|0;if(j-g>>3>>>0<=m>>>0){yp(i);g=f[i>>2]|0}}while(h>>>0>=(f[g+(m<<3)>>2]|0)>>>0);if(o>>>0>n>>>0){n=o;m=p;break c}g=f[o>>2]|0;f[o>>2]=f[n>>2];f[n>>2]=g;g=n;p=(p|0)==(o|0)?n:p;d=d+1|0}else{n=e;m=p}while(0);if((n|0)!=(m|0)){j=f[m>>2]|0;l=f[n>>2]|0;h=f[c>>2]|0;g=f[h+4>>2]|0;e=f[h>>2]|0;if(g-e>>3>>>0>j>>>0){k=e;i=g}else{yp(h);p=f[c>>2]|0;k=f[h>>2]|0;e=f[p>>2]|0;i=f[p+4>>2]|0;h=p}g=f[k+(j<<3)>>2]|0;if(i-e>>3>>>0<=l>>>0){yp(h);e=f[h>>2]|0}if(g>>>0<(f[e+(l<<3)>>2]|0)>>>0){p=f[n>>2]|0;f[n>>2]=f[m>>2];f[m>>2]=p;d=d+1|0}}if(!d){e=Jd(a,n,c)|0;d=n+4|0;if(Jd(d,b,c)|0){s=105;break}if(e){a=d;continue}}p=n;if((p-q|0)>=(r-p|0)){s=104;break}xb(a,n,c);a=n+4|0}if((s|0)==104){s=0;xb(n+4|0,b,c);b=n;continue}else if((s|0)==105){s=0;if(e){s=106;break}else{b=n;continue}}}if((s|0)==5){h=f[t>>2]|0;j=f[a>>2]|0;b=f[c>>2]|0;e=f[b+4>>2]|0;d=f[b>>2]|0;if(e-d>>3>>>0>h>>>0){i=b;g=d;b=d}else{yp(b);e=f[c>>2]|0;i=e;g=f[b>>2]|0;b=f[e>>2]|0;e=f[e+4>>2]|0}d=f[g+(h<<3)>>2]|0;if(e-b>>3>>>0<=j>>>0){yp(i);b=f[i>>2]|0}if(d>>>0>=(f[b+(j<<3)>>2]|0)>>>0)return;c=f[a>>2]|0;f[a>>2]=f[t>>2];f[t>>2]=c;return}else if((s|0)==13){Ae(a,a+4|0,t,c)|0;return}else if((s|0)==14){Jf(a,a+4|0,a+8|0,t,c)|0;return}else if((s|0)==15){ze(a,a+4|0,a+8|0,a+12|0,t,c)|0;return}else if((s|0)==17){Pg(a,b,c);return}else if((s|0)==106)return}function yb(a,b,c){a=a|0;b=b|0;c=c|0;var d=0,e=0,g=0,h=0,i=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0;a:while(1){r=b;t=b+-4|0;while(1){b:while(1){q=a;e=r-q|0;d=e>>2;switch(d|0){case 2:{s=5;break a}case 3:{s=13;break a}case 4:{s=14;break a}case 5:{s=15;break a}case 1:case 0:{s=106;break a}default:{}}if((e|0)<124){s=17;break a}p=a+(((d|0)/2|0)<<2)|0;if((e|0)>3996){d=(d|0)/4|0;d=ze(a,a+(d<<2)|0,p,p+(d<<2)|0,t,c)|0}else d=Ae(a,p,t,c)|0;j=f[a>>2]|0;l=f[p>>2]|0;h=f[c>>2]|0;g=f[h+4>>2]|0;e=f[h>>2]|0;if(g-e>>3>>>0>j>>>0){k=e;i=g}else{yp(h);o=f[c>>2]|0;k=f[h>>2]|0;e=f[o>>2]|0;i=f[o+4>>2]|0;h=o}g=f[k+(j<<3)>>2]|0;if(i-e>>3>>>0<=l>>>0){yp(h);e=f[h>>2]|0}if(g>>>0<(f[e+(l<<3)>>2]|0)>>>0){g=t;break}else g=t;while(1){g=g+-4|0;if((a|0)==(g|0))break;k=f[g>>2]|0;m=f[p>>2]|0;e=f[c>>2]|0;i=f[e+4>>2]|0;h=f[e>>2]|0;if(i-h>>3>>>0>k>>>0){l=e;j=h;e=h}else{yp(e);i=f[c>>2]|0;l=i;j=f[e>>2]|0;e=f[i>>2]|0;i=f[i+4>>2]|0}h=f[j+(k<<3)>>2]|0;if(i-e>>3>>>0<=m>>>0){yp(l);e=f[l>>2]|0}if(h>>>0<(f[e+(m<<3)>>2]|0)>>>0){s=71;break b}}d=a+4|0;j=f[a>>2]|0;l=f[t>>2]|0;h=f[c>>2]|0;g=f[h+4>>2]|0;e=f[h>>2]|0;if(g-e>>3>>>0>j>>>0){k=e;i=g}else{yp(h);q=f[c>>2]|0;k=f[h>>2]|0;e=f[q>>2]|0;i=f[q+4>>2]|0;h=q}g=f[k+(j<<3)>>2]|0;if(i-e>>3>>>0<=l>>>0){yp(h);e=f[h>>2]|0}if(g>>>0>=(f[e+(l<<3)>>2]|0)>>>0){if((d|0)==(t|0)){s=106;break a}while(1){j=f[a>>2]|0;l=f[d>>2]|0;h=f[c>>2]|0;g=f[h+4>>2]|0;e=f[h>>2]|0;if(g-e>>3>>>0>j>>>0){k=e;i=g}else{yp(h);q=f[c>>2]|0;k=f[h>>2]|0;e=f[q>>2]|0;i=f[q+4>>2]|0;h=q}g=f[k+(j<<3)>>2]|0;if(i-e>>3>>>0<=l>>>0){yp(h);e=f[h>>2]|0}if(g>>>0<(f[e+(l<<3)>>2]|0)>>>0)break;d=d+4|0;if((d|0)==(t|0)){s=106;break a}}q=f[d>>2]|0;f[d>>2]=f[t>>2];f[t>>2]=q;d=d+4|0}if((d|0)==(t|0)){s=106;break a}else l=t;while(1){while(1){h=f[a>>2]|0;k=f[d>>2]|0;i=f[c>>2]|0;g=f[i+4>>2]|0;e=f[i>>2]|0;if(g-e>>3>>>0>h>>>0)j=e;else{yp(i);q=f[c>>2]|0;j=f[i>>2]|0;e=f[q>>2]|0;g=f[q+4>>2]|0;i=q}h=f[j+(h<<3)>>2]|0;if(g-e>>3>>>0<=k>>>0){yp(i);e=f[i>>2]|0}n=d+4|0;if(h>>>0<(f[e+(k<<3)>>2]|0)>>>0){m=l;break}else d=n}do{j=f[a>>2]|0;m=m+-4|0;l=f[m>>2]|0;h=f[c>>2]|0;g=f[h+4>>2]|0;e=f[h>>2]|0;if(g-e>>3>>>0>j>>>0){k=e;i=g}else{yp(h);q=f[c>>2]|0;k=f[h>>2]|0;e=f[q>>2]|0;i=f[q+4>>2]|0;h=q}g=f[k+(j<<3)>>2]|0;if(i-e>>3>>>0<=l>>>0){yp(h);e=f[h>>2]|0}}while(g>>>0<(f[e+(l<<3)>>2]|0)>>>0);if(d>>>0>=m>>>0){a=d;continue b}l=f[d>>2]|0;f[d>>2]=f[m>>2];f[m>>2]=l;d=n;l=m}}if((s|0)==71){s=0;o=f[a>>2]|0;f[a>>2]=f[g>>2];f[g>>2]=o;d=d+1|0}e=a+4|0;c:do if(e>>>0>>0)while(1){o=e;while(1){k=f[o>>2]|0;m=f[p>>2]|0;j=f[c>>2]|0;i=f[j+4>>2]|0;e=f[j>>2]|0;if(i-e>>3>>>0>k>>>0){l=e;h=e;e=j}else{yp(j);e=f[c>>2]|0;l=f[j>>2]|0;h=f[e>>2]|0;i=f[e+4>>2]|0}j=f[l+(k<<3)>>2]|0;if(i-h>>3>>>0<=m>>>0){yp(e);h=f[e>>2]|0}e=o+4|0;if(j>>>0<(f[h+(m<<3)>>2]|0)>>>0)o=e;else{n=g;break}}do{n=n+-4|0;k=f[n>>2]|0;m=f[p>>2]|0;i=f[c>>2]|0;h=f[i+4>>2]|0;g=f[i>>2]|0;if(h-g>>3>>>0>k>>>0){l=g;j=h}else{yp(i);h=f[c>>2]|0;l=f[i>>2]|0;g=f[h>>2]|0;j=f[h+4>>2]|0;i=h}h=f[l+(k<<3)>>2]|0;if(j-g>>3>>>0<=m>>>0){yp(i);g=f[i>>2]|0}}while(h>>>0>=(f[g+(m<<3)>>2]|0)>>>0);if(o>>>0>n>>>0){n=o;m=p;break c}g=f[o>>2]|0;f[o>>2]=f[n>>2];f[n>>2]=g;g=n;p=(p|0)==(o|0)?n:p;d=d+1|0}else{n=e;m=p}while(0);if((n|0)!=(m|0)){j=f[m>>2]|0;l=f[n>>2]|0;h=f[c>>2]|0;g=f[h+4>>2]|0;e=f[h>>2]|0;if(g-e>>3>>>0>j>>>0){k=e;i=g}else{yp(h);p=f[c>>2]|0;k=f[h>>2]|0;e=f[p>>2]|0;i=f[p+4>>2]|0;h=p}g=f[k+(j<<3)>>2]|0;if(i-e>>3>>>0<=l>>>0){yp(h);e=f[h>>2]|0}if(g>>>0<(f[e+(l<<3)>>2]|0)>>>0){p=f[n>>2]|0;f[n>>2]=f[m>>2];f[m>>2]=p;d=d+1|0}}if(!d){e=Jd(a,n,c)|0;d=n+4|0;if(Jd(d,b,c)|0){s=105;break}if(e){a=d;continue}}p=n;if((p-q|0)>=(r-p|0)){s=104;break}yb(a,n,c);a=n+4|0}if((s|0)==104){s=0;yb(n+4|0,b,c);b=n;continue}else if((s|0)==105){s=0;if(e){s=106;break}else{b=n;continue}}}if((s|0)==5){h=f[t>>2]|0;j=f[a>>2]|0;b=f[c>>2]|0;e=f[b+4>>2]|0;d=f[b>>2]|0;if(e-d>>3>>>0>h>>>0){i=b;g=d;b=d}else{yp(b);e=f[c>>2]|0;i=e;g=f[b>>2]|0;b=f[e>>2]|0;e=f[e+4>>2]|0}d=f[g+(h<<3)>>2]|0;if(e-b>>3>>>0<=j>>>0){yp(i);b=f[i>>2]|0}if(d>>>0>=(f[b+(j<<3)>>2]|0)>>>0)return;c=f[a>>2]|0;f[a>>2]=f[t>>2];f[t>>2]=c;return}else if((s|0)==13){Ae(a,a+4|0,t,c)|0;return}else if((s|0)==14){Jf(a,a+4|0,a+8|0,t,c)|0;return}else if((s|0)==15){ze(a,a+4|0,a+8|0,a+12|0,t,c)|0;return}else if((s|0)==17){Pg(a,b,c);return}else if((s|0)==106)return}function zb(a,b,c){a=a|0;b=b|0;c=c|0;var d=0,e=0,g=0,h=0,i=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0;a:while(1){r=b;t=b+-4|0;while(1){b:while(1){q=a;e=r-q|0;d=e>>2;switch(d|0){case 2:{s=5;break a}case 3:{s=13;break a}case 4:{s=14;break a}case 5:{s=15;break a}case 1:case 0:{s=106;break a}default:{}}if((e|0)<124){s=17;break a}p=a+(((d|0)/2|0)<<2)|0;if((e|0)>3996){d=(d|0)/4|0;d=ze(a,a+(d<<2)|0,p,p+(d<<2)|0,t,c)|0}else d=Ae(a,p,t,c)|0;j=f[a>>2]|0;l=f[p>>2]|0;h=f[c>>2]|0;g=f[h+4>>2]|0;e=f[h>>2]|0;if(g-e>>3>>>0>j>>>0){k=e;i=g}else{yp(h);o=f[c>>2]|0;k=f[h>>2]|0;e=f[o>>2]|0;i=f[o+4>>2]|0;h=o}g=f[k+(j<<3)>>2]|0;if(i-e>>3>>>0<=l>>>0){yp(h);e=f[h>>2]|0}if(g>>>0<(f[e+(l<<3)>>2]|0)>>>0){g=t;break}else g=t;while(1){g=g+-4|0;if((a|0)==(g|0))break;k=f[g>>2]|0;m=f[p>>2]|0;e=f[c>>2]|0;i=f[e+4>>2]|0;h=f[e>>2]|0;if(i-h>>3>>>0>k>>>0){l=e;j=h;e=h}else{yp(e);i=f[c>>2]|0;l=i;j=f[e>>2]|0;e=f[i>>2]|0;i=f[i+4>>2]|0}h=f[j+(k<<3)>>2]|0;if(i-e>>3>>>0<=m>>>0){yp(l);e=f[l>>2]|0}if(h>>>0<(f[e+(m<<3)>>2]|0)>>>0){s=71;break b}}d=a+4|0;j=f[a>>2]|0;l=f[t>>2]|0;h=f[c>>2]|0;g=f[h+4>>2]|0;e=f[h>>2]|0;if(g-e>>3>>>0>j>>>0){k=e;i=g}else{yp(h);q=f[c>>2]|0;k=f[h>>2]|0;e=f[q>>2]|0;i=f[q+4>>2]|0;h=q}g=f[k+(j<<3)>>2]|0;if(i-e>>3>>>0<=l>>>0){yp(h);e=f[h>>2]|0}if(g>>>0>=(f[e+(l<<3)>>2]|0)>>>0){if((d|0)==(t|0)){s=106;break a}while(1){j=f[a>>2]|0;l=f[d>>2]|0;h=f[c>>2]|0;g=f[h+4>>2]|0;e=f[h>>2]|0;if(g-e>>3>>>0>j>>>0){k=e;i=g}else{yp(h);q=f[c>>2]|0;k=f[h>>2]|0;e=f[q>>2]|0;i=f[q+4>>2]|0;h=q}g=f[k+(j<<3)>>2]|0;if(i-e>>3>>>0<=l>>>0){yp(h);e=f[h>>2]|0}if(g>>>0<(f[e+(l<<3)>>2]|0)>>>0)break;d=d+4|0;if((d|0)==(t|0)){s=106;break a}}q=f[d>>2]|0;f[d>>2]=f[t>>2];f[t>>2]=q;d=d+4|0}if((d|0)==(t|0)){s=106;break a}else l=t;while(1){while(1){h=f[a>>2]|0;k=f[d>>2]|0;i=f[c>>2]|0;g=f[i+4>>2]|0;e=f[i>>2]|0;if(g-e>>3>>>0>h>>>0)j=e;else{yp(i);q=f[c>>2]|0;j=f[i>>2]|0;e=f[q>>2]|0;g=f[q+4>>2]|0;i=q}h=f[j+(h<<3)>>2]|0;if(g-e>>3>>>0<=k>>>0){yp(i);e=f[i>>2]|0}n=d+4|0;if(h>>>0<(f[e+(k<<3)>>2]|0)>>>0){m=l;break}else d=n}do{j=f[a>>2]|0;m=m+-4|0;l=f[m>>2]|0;h=f[c>>2]|0;g=f[h+4>>2]|0;e=f[h>>2]|0;if(g-e>>3>>>0>j>>>0){k=e;i=g}else{yp(h);q=f[c>>2]|0;k=f[h>>2]|0;e=f[q>>2]|0;i=f[q+4>>2]|0;h=q}g=f[k+(j<<3)>>2]|0;if(i-e>>3>>>0<=l>>>0){yp(h);e=f[h>>2]|0}}while(g>>>0<(f[e+(l<<3)>>2]|0)>>>0);if(d>>>0>=m>>>0){a=d;continue b}l=f[d>>2]|0;f[d>>2]=f[m>>2];f[m>>2]=l;d=n;l=m}}if((s|0)==71){s=0;o=f[a>>2]|0;f[a>>2]=f[g>>2];f[g>>2]=o;d=d+1|0}e=a+4|0;c:do if(e>>>0>>0)while(1){o=e;while(1){k=f[o>>2]|0;m=f[p>>2]|0;j=f[c>>2]|0;i=f[j+4>>2]|0;e=f[j>>2]|0;if(i-e>>3>>>0>k>>>0){l=e;h=e;e=j}else{yp(j);e=f[c>>2]|0;l=f[j>>2]|0;h=f[e>>2]|0;i=f[e+4>>2]|0}j=f[l+(k<<3)>>2]|0;if(i-h>>3>>>0<=m>>>0){yp(e);h=f[e>>2]|0}e=o+4|0;if(j>>>0<(f[h+(m<<3)>>2]|0)>>>0)o=e;else{n=g;break}}do{n=n+-4|0;k=f[n>>2]|0;m=f[p>>2]|0;i=f[c>>2]|0;h=f[i+4>>2]|0;g=f[i>>2]|0;if(h-g>>3>>>0>k>>>0){l=g;j=h}else{yp(i);h=f[c>>2]|0;l=f[i>>2]|0;g=f[h>>2]|0;j=f[h+4>>2]|0;i=h}h=f[l+(k<<3)>>2]|0;if(j-g>>3>>>0<=m>>>0){yp(i);g=f[i>>2]|0}}while(h>>>0>=(f[g+(m<<3)>>2]|0)>>>0);if(o>>>0>n>>>0){n=o;m=p;break c}g=f[o>>2]|0;f[o>>2]=f[n>>2];f[n>>2]=g;g=n;p=(p|0)==(o|0)?n:p;d=d+1|0}else{n=e;m=p}while(0);if((n|0)!=(m|0)){j=f[m>>2]|0;l=f[n>>2]|0;h=f[c>>2]|0;g=f[h+4>>2]|0;e=f[h>>2]|0;if(g-e>>3>>>0>j>>>0){k=e;i=g}else{yp(h);p=f[c>>2]|0;k=f[h>>2]|0;e=f[p>>2]|0;i=f[p+4>>2]|0;h=p}g=f[k+(j<<3)>>2]|0;if(i-e>>3>>>0<=l>>>0){yp(h);e=f[h>>2]|0}if(g>>>0<(f[e+(l<<3)>>2]|0)>>>0){p=f[n>>2]|0;f[n>>2]=f[m>>2];f[m>>2]=p;d=d+1|0}}if(!d){e=Jd(a,n,c)|0;d=n+4|0;if(Jd(d,b,c)|0){s=105;break}if(e){a=d;continue}}p=n;if((p-q|0)>=(r-p|0)){s=104;break}zb(a,n,c);a=n+4|0}if((s|0)==104){s=0;zb(n+4|0,b,c);b=n;continue}else if((s|0)==105){s=0;if(e){s=106;break}else{b=n;continue}}}if((s|0)==5){h=f[t>>2]|0;j=f[a>>2]|0;b=f[c>>2]|0;e=f[b+4>>2]|0;d=f[b>>2]|0;if(e-d>>3>>>0>h>>>0){i=b;g=d;b=d}else{yp(b);e=f[c>>2]|0;i=e;g=f[b>>2]|0;b=f[e>>2]|0;e=f[e+4>>2]|0}d=f[g+(h<<3)>>2]|0;if(e-b>>3>>>0<=j>>>0){yp(i);b=f[i>>2]|0}if(d>>>0>=(f[b+(j<<3)>>2]|0)>>>0)return;c=f[a>>2]|0;f[a>>2]=f[t>>2];f[t>>2]=c;return}else if((s|0)==13){Ae(a,a+4|0,t,c)|0;return}else if((s|0)==14){Jf(a,a+4|0,a+8|0,t,c)|0;return}else if((s|0)==15){ze(a,a+4|0,a+8|0,a+12|0,t,c)|0;return}else if((s|0)==17){Pg(a,b,c);return}else if((s|0)==106)return}function Ab(a,b,c){a=a|0;b=b|0;c=c|0;var d=0,e=0,g=0,h=0,i=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0;a:while(1){r=b;t=b+-4|0;while(1){b:while(1){q=a;e=r-q|0;d=e>>2;switch(d|0){case 2:{s=5;break a}case 3:{s=13;break a}case 4:{s=14;break a}case 5:{s=15;break a}case 1:case 0:{s=106;break a}default:{}}if((e|0)<124){s=17;break a}p=a+(((d|0)/2|0)<<2)|0;if((e|0)>3996){d=(d|0)/4|0;d=ze(a,a+(d<<2)|0,p,p+(d<<2)|0,t,c)|0}else d=Ae(a,p,t,c)|0;j=f[a>>2]|0;l=f[p>>2]|0;h=f[c>>2]|0;g=f[h+4>>2]|0;e=f[h>>2]|0;if(g-e>>3>>>0>j>>>0){k=e;i=g}else{yp(h);o=f[c>>2]|0;k=f[h>>2]|0;e=f[o>>2]|0;i=f[o+4>>2]|0;h=o}g=f[k+(j<<3)>>2]|0;if(i-e>>3>>>0<=l>>>0){yp(h);e=f[h>>2]|0}if(g>>>0<(f[e+(l<<3)>>2]|0)>>>0){g=t;break}else g=t;while(1){g=g+-4|0;if((a|0)==(g|0))break;k=f[g>>2]|0;m=f[p>>2]|0;e=f[c>>2]|0;i=f[e+4>>2]|0;h=f[e>>2]|0;if(i-h>>3>>>0>k>>>0){l=e;j=h;e=h}else{yp(e);i=f[c>>2]|0;l=i;j=f[e>>2]|0;e=f[i>>2]|0;i=f[i+4>>2]|0}h=f[j+(k<<3)>>2]|0;if(i-e>>3>>>0<=m>>>0){yp(l);e=f[l>>2]|0}if(h>>>0<(f[e+(m<<3)>>2]|0)>>>0){s=71;break b}}d=a+4|0;j=f[a>>2]|0;l=f[t>>2]|0;h=f[c>>2]|0;g=f[h+4>>2]|0;e=f[h>>2]|0;if(g-e>>3>>>0>j>>>0){k=e;i=g}else{yp(h);q=f[c>>2]|0;k=f[h>>2]|0;e=f[q>>2]|0;i=f[q+4>>2]|0;h=q}g=f[k+(j<<3)>>2]|0;if(i-e>>3>>>0<=l>>>0){yp(h);e=f[h>>2]|0}if(g>>>0>=(f[e+(l<<3)>>2]|0)>>>0){if((d|0)==(t|0)){s=106;break a}while(1){j=f[a>>2]|0;l=f[d>>2]|0;h=f[c>>2]|0;g=f[h+4>>2]|0;e=f[h>>2]|0;if(g-e>>3>>>0>j>>>0){k=e;i=g}else{yp(h);q=f[c>>2]|0;k=f[h>>2]|0;e=f[q>>2]|0;i=f[q+4>>2]|0;h=q}g=f[k+(j<<3)>>2]|0;if(i-e>>3>>>0<=l>>>0){yp(h);e=f[h>>2]|0}if(g>>>0<(f[e+(l<<3)>>2]|0)>>>0)break;d=d+4|0;if((d|0)==(t|0)){s=106;break a}}q=f[d>>2]|0;f[d>>2]=f[t>>2];f[t>>2]=q;d=d+4|0}if((d|0)==(t|0)){s=106;break a}else l=t;while(1){while(1){h=f[a>>2]|0;k=f[d>>2]|0;i=f[c>>2]|0;g=f[i+4>>2]|0;e=f[i>>2]|0;if(g-e>>3>>>0>h>>>0)j=e;else{yp(i);q=f[c>>2]|0;j=f[i>>2]|0;e=f[q>>2]|0;g=f[q+4>>2]|0;i=q}h=f[j+(h<<3)>>2]|0;if(g-e>>3>>>0<=k>>>0){yp(i);e=f[i>>2]|0}n=d+4|0;if(h>>>0<(f[e+(k<<3)>>2]|0)>>>0){m=l;break}else d=n}do{j=f[a>>2]|0;m=m+-4|0;l=f[m>>2]|0;h=f[c>>2]|0;g=f[h+4>>2]|0;e=f[h>>2]|0;if(g-e>>3>>>0>j>>>0){k=e;i=g}else{yp(h);q=f[c>>2]|0;k=f[h>>2]|0;e=f[q>>2]|0;i=f[q+4>>2]|0;h=q}g=f[k+(j<<3)>>2]|0;if(i-e>>3>>>0<=l>>>0){yp(h);e=f[h>>2]|0}}while(g>>>0<(f[e+(l<<3)>>2]|0)>>>0);if(d>>>0>=m>>>0){a=d;continue b}l=f[d>>2]|0;f[d>>2]=f[m>>2];f[m>>2]=l;d=n;l=m}}if((s|0)==71){s=0;o=f[a>>2]|0;f[a>>2]=f[g>>2];f[g>>2]=o;d=d+1|0}e=a+4|0;c:do if(e>>>0>>0)while(1){o=e;while(1){k=f[o>>2]|0;m=f[p>>2]|0;j=f[c>>2]|0;i=f[j+4>>2]|0;e=f[j>>2]|0;if(i-e>>3>>>0>k>>>0){l=e;h=e;e=j}else{yp(j);e=f[c>>2]|0;l=f[j>>2]|0;h=f[e>>2]|0;i=f[e+4>>2]|0}j=f[l+(k<<3)>>2]|0;if(i-h>>3>>>0<=m>>>0){yp(e);h=f[e>>2]|0}e=o+4|0;if(j>>>0<(f[h+(m<<3)>>2]|0)>>>0)o=e;else{n=g;break}}do{n=n+-4|0;k=f[n>>2]|0;m=f[p>>2]|0;i=f[c>>2]|0;h=f[i+4>>2]|0;g=f[i>>2]|0;if(h-g>>3>>>0>k>>>0){l=g;j=h}else{yp(i);h=f[c>>2]|0;l=f[i>>2]|0;g=f[h>>2]|0;j=f[h+4>>2]|0;i=h}h=f[l+(k<<3)>>2]|0;if(j-g>>3>>>0<=m>>>0){yp(i);g=f[i>>2]|0}}while(h>>>0>=(f[g+(m<<3)>>2]|0)>>>0);if(o>>>0>n>>>0){n=o;m=p;break c}g=f[o>>2]|0;f[o>>2]=f[n>>2];f[n>>2]=g;g=n;p=(p|0)==(o|0)?n:p;d=d+1|0}else{n=e;m=p}while(0);if((n|0)!=(m|0)){j=f[m>>2]|0;l=f[n>>2]|0;h=f[c>>2]|0;g=f[h+4>>2]|0;e=f[h>>2]|0;if(g-e>>3>>>0>j>>>0){k=e;i=g}else{yp(h);p=f[c>>2]|0;k=f[h>>2]|0;e=f[p>>2]|0;i=f[p+4>>2]|0;h=p}g=f[k+(j<<3)>>2]|0;if(i-e>>3>>>0<=l>>>0){yp(h);e=f[h>>2]|0}if(g>>>0<(f[e+(l<<3)>>2]|0)>>>0){p=f[n>>2]|0;f[n>>2]=f[m>>2];f[m>>2]=p;d=d+1|0}}if(!d){e=Jd(a,n,c)|0;d=n+4|0;if(Jd(d,b,c)|0){s=105;break}if(e){a=d;continue}}p=n;if((p-q|0)>=(r-p|0)){s=104;break}Ab(a,n,c);a=n+4|0}if((s|0)==104){s=0;Ab(n+4|0,b,c);b=n;continue}else if((s|0)==105){s=0;if(e){s=106;break}else{b=n;continue}}}if((s|0)==5){h=f[t>>2]|0;j=f[a>>2]|0;b=f[c>>2]|0;e=f[b+4>>2]|0;d=f[b>>2]|0;if(e-d>>3>>>0>h>>>0){i=b;g=d;b=d}else{yp(b);e=f[c>>2]|0;i=e;g=f[b>>2]|0;b=f[e>>2]|0;e=f[e+4>>2]|0}d=f[g+(h<<3)>>2]|0;if(e-b>>3>>>0<=j>>>0){yp(i);b=f[i>>2]|0}if(d>>>0>=(f[b+(j<<3)>>2]|0)>>>0)return;c=f[a>>2]|0;f[a>>2]=f[t>>2];f[t>>2]=c;return}else if((s|0)==13){Ae(a,a+4|0,t,c)|0;return}else if((s|0)==14){Jf(a,a+4|0,a+8|0,t,c)|0;return}else if((s|0)==15){ze(a,a+4|0,a+8|0,a+12|0,t,c)|0;return}else if((s|0)==17){Pg(a,b,c);return}else if((s|0)==106)return}function Bb(a,b,c){a=a|0;b=b|0;c=c|0;var d=0,e=0,g=0,h=0,i=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0;a:while(1){r=b;t=b+-4|0;while(1){b:while(1){q=a;e=r-q|0;d=e>>2;switch(d|0){case 2:{s=5;break a}case 3:{s=13;break a}case 4:{s=14;break a}case 5:{s=15;break a}case 1:case 0:{s=106;break a}default:{}}if((e|0)<124){s=17;break a}p=a+(((d|0)/2|0)<<2)|0;if((e|0)>3996){d=(d|0)/4|0;d=ze(a,a+(d<<2)|0,p,p+(d<<2)|0,t,c)|0}else d=Ae(a,p,t,c)|0;j=f[a>>2]|0;l=f[p>>2]|0;h=f[c>>2]|0;g=f[h+4>>2]|0;e=f[h>>2]|0;if(g-e>>3>>>0>j>>>0){k=e;i=g}else{yp(h);o=f[c>>2]|0;k=f[h>>2]|0;e=f[o>>2]|0;i=f[o+4>>2]|0;h=o}g=f[k+(j<<3)>>2]|0;if(i-e>>3>>>0<=l>>>0){yp(h);e=f[h>>2]|0}if(g>>>0<(f[e+(l<<3)>>2]|0)>>>0){g=t;break}else g=t;while(1){g=g+-4|0;if((a|0)==(g|0))break;k=f[g>>2]|0;m=f[p>>2]|0;e=f[c>>2]|0;i=f[e+4>>2]|0;h=f[e>>2]|0;if(i-h>>3>>>0>k>>>0){l=e;j=h;e=h}else{yp(e);i=f[c>>2]|0;l=i;j=f[e>>2]|0;e=f[i>>2]|0;i=f[i+4>>2]|0}h=f[j+(k<<3)>>2]|0;if(i-e>>3>>>0<=m>>>0){yp(l);e=f[l>>2]|0}if(h>>>0<(f[e+(m<<3)>>2]|0)>>>0){s=71;break b}}d=a+4|0;j=f[a>>2]|0;l=f[t>>2]|0;h=f[c>>2]|0;g=f[h+4>>2]|0;e=f[h>>2]|0;if(g-e>>3>>>0>j>>>0){k=e;i=g}else{yp(h);q=f[c>>2]|0;k=f[h>>2]|0;e=f[q>>2]|0;i=f[q+4>>2]|0;h=q}g=f[k+(j<<3)>>2]|0;if(i-e>>3>>>0<=l>>>0){yp(h);e=f[h>>2]|0}if(g>>>0>=(f[e+(l<<3)>>2]|0)>>>0){if((d|0)==(t|0)){s=106;break a}while(1){j=f[a>>2]|0;l=f[d>>2]|0;h=f[c>>2]|0;g=f[h+4>>2]|0;e=f[h>>2]|0;if(g-e>>3>>>0>j>>>0){k=e;i=g}else{yp(h);q=f[c>>2]|0;k=f[h>>2]|0;e=f[q>>2]|0;i=f[q+4>>2]|0;h=q}g=f[k+(j<<3)>>2]|0;if(i-e>>3>>>0<=l>>>0){yp(h);e=f[h>>2]|0}if(g>>>0<(f[e+(l<<3)>>2]|0)>>>0)break;d=d+4|0;if((d|0)==(t|0)){s=106;break a}}q=f[d>>2]|0;f[d>>2]=f[t>>2];f[t>>2]=q;d=d+4|0}if((d|0)==(t|0)){s=106;break a}else l=t;while(1){while(1){h=f[a>>2]|0;k=f[d>>2]|0;i=f[c>>2]|0;g=f[i+4>>2]|0;e=f[i>>2]|0;if(g-e>>3>>>0>h>>>0)j=e;else{yp(i);q=f[c>>2]|0;j=f[i>>2]|0;e=f[q>>2]|0;g=f[q+4>>2]|0;i=q}h=f[j+(h<<3)>>2]|0;if(g-e>>3>>>0<=k>>>0){yp(i);e=f[i>>2]|0}n=d+4|0;if(h>>>0<(f[e+(k<<3)>>2]|0)>>>0){m=l;break}else d=n}do{j=f[a>>2]|0;m=m+-4|0;l=f[m>>2]|0;h=f[c>>2]|0;g=f[h+4>>2]|0;e=f[h>>2]|0;if(g-e>>3>>>0>j>>>0){k=e;i=g}else{yp(h);q=f[c>>2]|0;k=f[h>>2]|0;e=f[q>>2]|0;i=f[q+4>>2]|0;h=q}g=f[k+(j<<3)>>2]|0;if(i-e>>3>>>0<=l>>>0){yp(h);e=f[h>>2]|0}}while(g>>>0<(f[e+(l<<3)>>2]|0)>>>0);if(d>>>0>=m>>>0){a=d;continue b}l=f[d>>2]|0;f[d>>2]=f[m>>2];f[m>>2]=l;d=n;l=m}}if((s|0)==71){s=0;o=f[a>>2]|0;f[a>>2]=f[g>>2];f[g>>2]=o;d=d+1|0}e=a+4|0;c:do if(e>>>0>>0)while(1){o=e;while(1){k=f[o>>2]|0;m=f[p>>2]|0;j=f[c>>2]|0;i=f[j+4>>2]|0;e=f[j>>2]|0;if(i-e>>3>>>0>k>>>0){l=e;h=e;e=j}else{yp(j);e=f[c>>2]|0;l=f[j>>2]|0;h=f[e>>2]|0;i=f[e+4>>2]|0}j=f[l+(k<<3)>>2]|0;if(i-h>>3>>>0<=m>>>0){yp(e);h=f[e>>2]|0}e=o+4|0;if(j>>>0<(f[h+(m<<3)>>2]|0)>>>0)o=e;else{n=g;break}}do{n=n+-4|0;k=f[n>>2]|0;m=f[p>>2]|0;i=f[c>>2]|0;h=f[i+4>>2]|0;g=f[i>>2]|0;if(h-g>>3>>>0>k>>>0){l=g;j=h}else{yp(i);h=f[c>>2]|0;l=f[i>>2]|0;g=f[h>>2]|0;j=f[h+4>>2]|0;i=h}h=f[l+(k<<3)>>2]|0;if(j-g>>3>>>0<=m>>>0){yp(i);g=f[i>>2]|0}}while(h>>>0>=(f[g+(m<<3)>>2]|0)>>>0);if(o>>>0>n>>>0){n=o;m=p;break c}g=f[o>>2]|0;f[o>>2]=f[n>>2];f[n>>2]=g;g=n;p=(p|0)==(o|0)?n:p;d=d+1|0}else{n=e;m=p}while(0);if((n|0)!=(m|0)){j=f[m>>2]|0;l=f[n>>2]|0;h=f[c>>2]|0;g=f[h+4>>2]|0;e=f[h>>2]|0;if(g-e>>3>>>0>j>>>0){k=e;i=g}else{yp(h);p=f[c>>2]|0;k=f[h>>2]|0;e=f[p>>2]|0;i=f[p+4>>2]|0;h=p}g=f[k+(j<<3)>>2]|0;if(i-e>>3>>>0<=l>>>0){yp(h);e=f[h>>2]|0}if(g>>>0<(f[e+(l<<3)>>2]|0)>>>0){p=f[n>>2]|0;f[n>>2]=f[m>>2];f[m>>2]=p;d=d+1|0}}if(!d){e=Jd(a,n,c)|0;d=n+4|0;if(Jd(d,b,c)|0){s=105;break}if(e){a=d;continue}}p=n;if((p-q|0)>=(r-p|0)){s=104;break}Bb(a,n,c);a=n+4|0}if((s|0)==104){s=0;Bb(n+4|0,b,c);b=n;continue}else if((s|0)==105){s=0;if(e){s=106;break}else{b=n;continue}}}if((s|0)==5){h=f[t>>2]|0;j=f[a>>2]|0;b=f[c>>2]|0;e=f[b+4>>2]|0;d=f[b>>2]|0;if(e-d>>3>>>0>h>>>0){i=b;g=d;b=d}else{yp(b);e=f[c>>2]|0;i=e;g=f[b>>2]|0;b=f[e>>2]|0;e=f[e+4>>2]|0}d=f[g+(h<<3)>>2]|0;if(e-b>>3>>>0<=j>>>0){yp(i);b=f[i>>2]|0}if(d>>>0>=(f[b+(j<<3)>>2]|0)>>>0)return;c=f[a>>2]|0;f[a>>2]=f[t>>2];f[t>>2]=c;return}else if((s|0)==13){Ae(a,a+4|0,t,c)|0;return}else if((s|0)==14){Jf(a,a+4|0,a+8|0,t,c)|0;return}else if((s|0)==15){ze(a,a+4|0,a+8|0,a+12|0,t,c)|0;return}else if((s|0)==17){Pg(a,b,c);return}else if((s|0)==106)return}function Cb(a,b,c){a=a|0;b=b|0;c=c|0;var d=0,e=0,g=0,h=0,i=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0;a:while(1){r=b;t=b+-4|0;while(1){b:while(1){q=a;e=r-q|0;d=e>>2;switch(d|0){case 2:{s=5;break a}case 3:{s=13;break a}case 4:{s=14;break a}case 5:{s=15;break a}case 1:case 0:{s=106;break a}default:{}}if((e|0)<124){s=17;break a}p=a+(((d|0)/2|0)<<2)|0;if((e|0)>3996){d=(d|0)/4|0;d=ze(a,a+(d<<2)|0,p,p+(d<<2)|0,t,c)|0}else d=Ae(a,p,t,c)|0;j=f[a>>2]|0;l=f[p>>2]|0;h=f[c>>2]|0;g=f[h+4>>2]|0;e=f[h>>2]|0;if(g-e>>3>>>0>j>>>0){k=e;i=g}else{yp(h);o=f[c>>2]|0;k=f[h>>2]|0;e=f[o>>2]|0;i=f[o+4>>2]|0;h=o}g=f[k+(j<<3)>>2]|0;if(i-e>>3>>>0<=l>>>0){yp(h);e=f[h>>2]|0}if(g>>>0<(f[e+(l<<3)>>2]|0)>>>0){g=t;break}else g=t;while(1){g=g+-4|0;if((a|0)==(g|0))break;k=f[g>>2]|0;m=f[p>>2]|0;e=f[c>>2]|0;i=f[e+4>>2]|0;h=f[e>>2]|0;if(i-h>>3>>>0>k>>>0){l=e;j=h;e=h}else{yp(e);i=f[c>>2]|0;l=i;j=f[e>>2]|0;e=f[i>>2]|0;i=f[i+4>>2]|0}h=f[j+(k<<3)>>2]|0;if(i-e>>3>>>0<=m>>>0){yp(l);e=f[l>>2]|0}if(h>>>0<(f[e+(m<<3)>>2]|0)>>>0){s=71;break b}}d=a+4|0;j=f[a>>2]|0;l=f[t>>2]|0;h=f[c>>2]|0;g=f[h+4>>2]|0;e=f[h>>2]|0;if(g-e>>3>>>0>j>>>0){k=e;i=g}else{yp(h);q=f[c>>2]|0;k=f[h>>2]|0;e=f[q>>2]|0;i=f[q+4>>2]|0;h=q}g=f[k+(j<<3)>>2]|0;if(i-e>>3>>>0<=l>>>0){yp(h);e=f[h>>2]|0}if(g>>>0>=(f[e+(l<<3)>>2]|0)>>>0){if((d|0)==(t|0)){s=106;break a}while(1){j=f[a>>2]|0;l=f[d>>2]|0;h=f[c>>2]|0;g=f[h+4>>2]|0;e=f[h>>2]|0;if(g-e>>3>>>0>j>>>0){k=e;i=g}else{yp(h);q=f[c>>2]|0;k=f[h>>2]|0;e=f[q>>2]|0;i=f[q+4>>2]|0;h=q}g=f[k+(j<<3)>>2]|0;if(i-e>>3>>>0<=l>>>0){yp(h);e=f[h>>2]|0}if(g>>>0<(f[e+(l<<3)>>2]|0)>>>0)break;d=d+4|0;if((d|0)==(t|0)){s=106;break a}}q=f[d>>2]|0;f[d>>2]=f[t>>2];f[t>>2]=q;d=d+4|0}if((d|0)==(t|0)){s=106;break a}else l=t;while(1){while(1){h=f[a>>2]|0;k=f[d>>2]|0;i=f[c>>2]|0;g=f[i+4>>2]|0;e=f[i>>2]|0;if(g-e>>3>>>0>h>>>0)j=e;else{yp(i);q=f[c>>2]|0;j=f[i>>2]|0;e=f[q>>2]|0;g=f[q+4>>2]|0;i=q}h=f[j+(h<<3)>>2]|0;if(g-e>>3>>>0<=k>>>0){yp(i);e=f[i>>2]|0}n=d+4|0;if(h>>>0<(f[e+(k<<3)>>2]|0)>>>0){m=l;break}else d=n}do{j=f[a>>2]|0;m=m+-4|0;l=f[m>>2]|0;h=f[c>>2]|0;g=f[h+4>>2]|0;e=f[h>>2]|0;if(g-e>>3>>>0>j>>>0){k=e;i=g}else{yp(h);q=f[c>>2]|0;k=f[h>>2]|0;e=f[q>>2]|0;i=f[q+4>>2]|0;h=q}g=f[k+(j<<3)>>2]|0;if(i-e>>3>>>0<=l>>>0){yp(h);e=f[h>>2]|0}}while(g>>>0<(f[e+(l<<3)>>2]|0)>>>0);if(d>>>0>=m>>>0){a=d;continue b}l=f[d>>2]|0;f[d>>2]=f[m>>2];f[m>>2]=l;d=n;l=m}}if((s|0)==71){s=0;o=f[a>>2]|0;f[a>>2]=f[g>>2];f[g>>2]=o;d=d+1|0}e=a+4|0;c:do if(e>>>0>>0)while(1){o=e;while(1){k=f[o>>2]|0;m=f[p>>2]|0;j=f[c>>2]|0;i=f[j+4>>2]|0;e=f[j>>2]|0;if(i-e>>3>>>0>k>>>0){l=e;h=e;e=j}else{yp(j);e=f[c>>2]|0;l=f[j>>2]|0;h=f[e>>2]|0;i=f[e+4>>2]|0}j=f[l+(k<<3)>>2]|0;if(i-h>>3>>>0<=m>>>0){yp(e);h=f[e>>2]|0}e=o+4|0;if(j>>>0<(f[h+(m<<3)>>2]|0)>>>0)o=e;else{n=g;break}}do{n=n+-4|0;k=f[n>>2]|0;m=f[p>>2]|0;i=f[c>>2]|0;h=f[i+4>>2]|0;g=f[i>>2]|0;if(h-g>>3>>>0>k>>>0){l=g;j=h}else{yp(i);h=f[c>>2]|0;l=f[i>>2]|0;g=f[h>>2]|0;j=f[h+4>>2]|0;i=h}h=f[l+(k<<3)>>2]|0;if(j-g>>3>>>0<=m>>>0){yp(i);g=f[i>>2]|0}}while(h>>>0>=(f[g+(m<<3)>>2]|0)>>>0);if(o>>>0>n>>>0){n=o;m=p;break c}g=f[o>>2]|0;f[o>>2]=f[n>>2];f[n>>2]=g;g=n;p=(p|0)==(o|0)?n:p;d=d+1|0}else{n=e;m=p}while(0);if((n|0)!=(m|0)){j=f[m>>2]|0;l=f[n>>2]|0;h=f[c>>2]|0;g=f[h+4>>2]|0;e=f[h>>2]|0;if(g-e>>3>>>0>j>>>0){k=e;i=g}else{yp(h);p=f[c>>2]|0;k=f[h>>2]|0;e=f[p>>2]|0;i=f[p+4>>2]|0;h=p}g=f[k+(j<<3)>>2]|0;if(i-e>>3>>>0<=l>>>0){yp(h);e=f[h>>2]|0}if(g>>>0<(f[e+(l<<3)>>2]|0)>>>0){p=f[n>>2]|0;f[n>>2]=f[m>>2];f[m>>2]=p;d=d+1|0}}if(!d){e=Jd(a,n,c)|0;d=n+4|0;if(Jd(d,b,c)|0){s=105;break}if(e){a=d;continue}}p=n;if((p-q|0)>=(r-p|0)){s=104;break}Cb(a,n,c);a=n+4|0}if((s|0)==104){s=0;Cb(n+4|0,b,c);b=n;continue}else if((s|0)==105){s=0;if(e){s=106;break}else{b=n;continue}}}if((s|0)==5){h=f[t>>2]|0;j=f[a>>2]|0;b=f[c>>2]|0;e=f[b+4>>2]|0;d=f[b>>2]|0;if(e-d>>3>>>0>h>>>0){i=b;g=d;b=d}else{yp(b);e=f[c>>2]|0;i=e;g=f[b>>2]|0;b=f[e>>2]|0;e=f[e+4>>2]|0}d=f[g+(h<<3)>>2]|0;if(e-b>>3>>>0<=j>>>0){yp(i);b=f[i>>2]|0}if(d>>>0>=(f[b+(j<<3)>>2]|0)>>>0)return;c=f[a>>2]|0;f[a>>2]=f[t>>2];f[t>>2]=c;return}else if((s|0)==13){Ae(a,a+4|0,t,c)|0;return}else if((s|0)==14){Jf(a,a+4|0,a+8|0,t,c)|0;return}else if((s|0)==15){ze(a,a+4|0,a+8|0,a+12|0,t,c)|0;return}else if((s|0)==17){Pg(a,b,c);return}else if((s|0)==106)return}function Db(a,b,c){a=a|0;b=b|0;c=c|0;var d=0,e=0,g=0,h=0,i=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0;a:while(1){r=b;t=b+-4|0;while(1){b:while(1){q=a;e=r-q|0;d=e>>2;switch(d|0){case 2:{s=5;break a}case 3:{s=13;break a}case 4:{s=14;break a}case 5:{s=15;break a}case 1:case 0:{s=106;break a}default:{}}if((e|0)<124){s=17;break a}p=a+(((d|0)/2|0)<<2)|0;if((e|0)>3996){d=(d|0)/4|0;d=ze(a,a+(d<<2)|0,p,p+(d<<2)|0,t,c)|0}else d=Ae(a,p,t,c)|0;j=f[a>>2]|0;l=f[p>>2]|0;h=f[c>>2]|0;g=f[h+4>>2]|0;e=f[h>>2]|0;if(g-e>>3>>>0>j>>>0){k=e;i=g}else{yp(h);o=f[c>>2]|0;k=f[h>>2]|0;e=f[o>>2]|0;i=f[o+4>>2]|0;h=o}g=f[k+(j<<3)>>2]|0;if(i-e>>3>>>0<=l>>>0){yp(h);e=f[h>>2]|0}if(g>>>0<(f[e+(l<<3)>>2]|0)>>>0){g=t;break}else g=t;while(1){g=g+-4|0;if((a|0)==(g|0))break;k=f[g>>2]|0;m=f[p>>2]|0;e=f[c>>2]|0;i=f[e+4>>2]|0;h=f[e>>2]|0;if(i-h>>3>>>0>k>>>0){l=e;j=h;e=h}else{yp(e);i=f[c>>2]|0;l=i;j=f[e>>2]|0;e=f[i>>2]|0;i=f[i+4>>2]|0}h=f[j+(k<<3)>>2]|0;if(i-e>>3>>>0<=m>>>0){yp(l);e=f[l>>2]|0}if(h>>>0<(f[e+(m<<3)>>2]|0)>>>0){s=71;break b}}d=a+4|0;j=f[a>>2]|0;l=f[t>>2]|0;h=f[c>>2]|0;g=f[h+4>>2]|0;e=f[h>>2]|0;if(g-e>>3>>>0>j>>>0){k=e;i=g}else{yp(h);q=f[c>>2]|0;k=f[h>>2]|0;e=f[q>>2]|0;i=f[q+4>>2]|0;h=q}g=f[k+(j<<3)>>2]|0;if(i-e>>3>>>0<=l>>>0){yp(h);e=f[h>>2]|0}if(g>>>0>=(f[e+(l<<3)>>2]|0)>>>0){if((d|0)==(t|0)){s=106;break a}while(1){j=f[a>>2]|0;l=f[d>>2]|0;h=f[c>>2]|0;g=f[h+4>>2]|0;e=f[h>>2]|0;if(g-e>>3>>>0>j>>>0){k=e;i=g}else{yp(h);q=f[c>>2]|0;k=f[h>>2]|0;e=f[q>>2]|0;i=f[q+4>>2]|0;h=q}g=f[k+(j<<3)>>2]|0;if(i-e>>3>>>0<=l>>>0){yp(h);e=f[h>>2]|0}if(g>>>0<(f[e+(l<<3)>>2]|0)>>>0)break;d=d+4|0;if((d|0)==(t|0)){s=106;break a}}q=f[d>>2]|0;f[d>>2]=f[t>>2];f[t>>2]=q;d=d+4|0}if((d|0)==(t|0)){s=106;break a}else l=t;while(1){while(1){h=f[a>>2]|0;k=f[d>>2]|0;i=f[c>>2]|0;g=f[i+4>>2]|0;e=f[i>>2]|0;if(g-e>>3>>>0>h>>>0)j=e;else{yp(i);q=f[c>>2]|0;j=f[i>>2]|0;e=f[q>>2]|0;g=f[q+4>>2]|0;i=q}h=f[j+(h<<3)>>2]|0;if(g-e>>3>>>0<=k>>>0){yp(i);e=f[i>>2]|0}n=d+4|0;if(h>>>0<(f[e+(k<<3)>>2]|0)>>>0){m=l;break}else d=n}do{j=f[a>>2]|0;m=m+-4|0;l=f[m>>2]|0;h=f[c>>2]|0;g=f[h+4>>2]|0;e=f[h>>2]|0;if(g-e>>3>>>0>j>>>0){k=e;i=g}else{yp(h);q=f[c>>2]|0;k=f[h>>2]|0;e=f[q>>2]|0;i=f[q+4>>2]|0;h=q}g=f[k+(j<<3)>>2]|0;if(i-e>>3>>>0<=l>>>0){yp(h);e=f[h>>2]|0}}while(g>>>0<(f[e+(l<<3)>>2]|0)>>>0);if(d>>>0>=m>>>0){a=d;continue b}l=f[d>>2]|0;f[d>>2]=f[m>>2];f[m>>2]=l;d=n;l=m}}if((s|0)==71){s=0;o=f[a>>2]|0;f[a>>2]=f[g>>2];f[g>>2]=o;d=d+1|0}e=a+4|0;c:do if(e>>>0>>0)while(1){o=e;while(1){k=f[o>>2]|0;m=f[p>>2]|0;j=f[c>>2]|0;i=f[j+4>>2]|0;e=f[j>>2]|0;if(i-e>>3>>>0>k>>>0){l=e;h=e;e=j}else{yp(j);e=f[c>>2]|0;l=f[j>>2]|0;h=f[e>>2]|0;i=f[e+4>>2]|0}j=f[l+(k<<3)>>2]|0;if(i-h>>3>>>0<=m>>>0){yp(e);h=f[e>>2]|0}e=o+4|0;if(j>>>0<(f[h+(m<<3)>>2]|0)>>>0)o=e;else{n=g;break}}do{n=n+-4|0;k=f[n>>2]|0;m=f[p>>2]|0;i=f[c>>2]|0;h=f[i+4>>2]|0;g=f[i>>2]|0;if(h-g>>3>>>0>k>>>0){l=g;j=h}else{yp(i);h=f[c>>2]|0;l=f[i>>2]|0;g=f[h>>2]|0;j=f[h+4>>2]|0;i=h}h=f[l+(k<<3)>>2]|0;if(j-g>>3>>>0<=m>>>0){yp(i);g=f[i>>2]|0}}while(h>>>0>=(f[g+(m<<3)>>2]|0)>>>0);if(o>>>0>n>>>0){n=o;m=p;break c}g=f[o>>2]|0;f[o>>2]=f[n>>2];f[n>>2]=g;g=n;p=(p|0)==(o|0)?n:p;d=d+1|0}else{n=e;m=p}while(0);if((n|0)!=(m|0)){j=f[m>>2]|0;l=f[n>>2]|0;h=f[c>>2]|0;g=f[h+4>>2]|0;e=f[h>>2]|0;if(g-e>>3>>>0>j>>>0){k=e;i=g}else{yp(h);p=f[c>>2]|0;k=f[h>>2]|0;e=f[p>>2]|0;i=f[p+4>>2]|0;h=p}g=f[k+(j<<3)>>2]|0;if(i-e>>3>>>0<=l>>>0){yp(h);e=f[h>>2]|0}if(g>>>0<(f[e+(l<<3)>>2]|0)>>>0){p=f[n>>2]|0;f[n>>2]=f[m>>2];f[m>>2]=p;d=d+1|0}}if(!d){e=Jd(a,n,c)|0;d=n+4|0;if(Jd(d,b,c)|0){s=105;break}if(e){a=d;continue}}p=n;if((p-q|0)>=(r-p|0)){s=104;break}Db(a,n,c);a=n+4|0}if((s|0)==104){s=0;Db(n+4|0,b,c);b=n;continue}else if((s|0)==105){s=0;if(e){s=106;break}else{b=n;continue}}}if((s|0)==5){h=f[t>>2]|0;j=f[a>>2]|0;b=f[c>>2]|0;e=f[b+4>>2]|0;d=f[b>>2]|0;if(e-d>>3>>>0>h>>>0){i=b;g=d;b=d}else{yp(b);e=f[c>>2]|0;i=e;g=f[b>>2]|0;b=f[e>>2]|0;e=f[e+4>>2]|0}d=f[g+(h<<3)>>2]|0;if(e-b>>3>>>0<=j>>>0){yp(i);b=f[i>>2]|0}if(d>>>0>=(f[b+(j<<3)>>2]|0)>>>0)return;c=f[a>>2]|0;f[a>>2]=f[t>>2];f[t>>2]=c;return}else if((s|0)==13){Ae(a,a+4|0,t,c)|0;return}else if((s|0)==14){Jf(a,a+4|0,a+8|0,t,c)|0;return}else if((s|0)==15){ze(a,a+4|0,a+8|0,a+12|0,t,c)|0;return}else if((s|0)==17){Pg(a,b,c);return}else if((s|0)==106)return} +function Qj(a){a=a|0;var b=0,c=0,d=0,e=0,g=0,h=0,i=0,j=0;j=a+4|0;g=f[j>>2]|0;i=a+8|0;a=f[i>>2]|0;d=g+4|0;c=f[d>>2]|0;b=f[g>>2]|0;e=c-b>>2;if(a>>>0<=e>>>0){if(a>>>0>>0?(h=b+(a<<2)|0,(c|0)!=(h|0)):0)f[d>>2]=c+(~((c+-4-h|0)>>>2)<<2)}else{jj(g,a-e|0);a=f[i>>2]|0}if((a|0)>0)d=0;else return 1;do{b=f[j>>2]|0;c=f[b>>2]|0;if((f[b+4>>2]|0)-c>>2>>>0<=d>>>0){yp(b);c=f[b>>2]|0;a=f[i>>2]|0}f[c+(d<<2)>>2]=d;d=d+1|0}while((d|0)<(a|0));return 1}function Rj(a){a=a|0;var b=0,c=0,d=0,e=0,g=0,h=0;b=f[a>>2]|0;if(!b)return;h=a+4|0;c=f[h>>2]|0;if((c|0)!=(b|0)){do{f[h>>2]=c+-108;d=f[c+-20>>2]|0;if(d|0){g=c+-16|0;e=f[g>>2]|0;if((e|0)!=(d|0))f[g>>2]=e+(~((e+-4-d|0)>>>2)<<2);Lq(d)}d=f[c+-32>>2]|0;if(d|0){g=c+-28|0;e=f[g>>2]|0;if((e|0)!=(d|0))f[g>>2]=e+(~((e+-4-d|0)>>>2)<<2);Lq(d)}qk(c+-104|0);c=f[h>>2]|0}while((c|0)!=(b|0));b=f[a>>2]|0}Lq(b);return}function Sj(a){a=a|0;var b=0,c=0;b=u;u=u+16|0;c=b;tp(a);f[a+16>>2]=0;f[a+20>>2]=0;f[a+12>>2]=a+16;a=a+24|0;tp(a);f[c>>2]=0;f[c+4>>2]=0;f[c+8>>2]=0;Ck(c,17555,20);Cj(a,c,1);Eo(c);f[c>>2]=0;f[c+4>>2]=0;f[c+8>>2]=0;Ck(c,17576,22);Cj(a,c,1);Eo(c);u=b;return}function Tj(a,b,c){a=a|0;b=b|0;c=c|0;var d=0,e=0,g=0,h=0;if(!(mo(a,b,c)|0)){b=0;return b|0}if(!(Ra[f[(f[a>>2]|0)+52>>2]&127](a)|0)){b=0;return b|0}g=a+4|0;e=a+8|0;c=f[g>>2]|0;if((f[e>>2]|0)==(c|0)){b=1;return b|0}d=a+36|0;a=0;while(1){h=f[(f[d>>2]|0)+(a<<2)>>2]|0;if(!(Ma[f[(f[h>>2]|0)+8>>2]&31](h,b,f[c+(a<<2)>>2]|0)|0)){c=0;a=7;break}a=a+1|0;c=f[g>>2]|0;if(a>>>0>=(f[e>>2]|0)-c>>2>>>0){c=1;a=7;break}}if((a|0)==7)return c|0;return 0}function Uj(a,b){a=a|0;b=b|0;var c=0,d=0,e=0;c=f[a>>2]|0;if(b){e=c+8|0;c=e;c=Do(f[c>>2]|0,f[c+4>>2]|0,1,0)|0;f[e>>2]=c;f[e+4>>2]=I;e=a+28|0;c=f[e>>2]|0;d=a+24|0;f[d>>2]=f[d>>2]|1<>2]|0,f[d+4>>2]|0,1,0)|0;e=c;f[e>>2]=d;f[e+4>>2]=I;e=a+28|0;c=f[e>>2]|0}d=c+1|0;f[e>>2]=d;if((d|0)!=32)return;d=a+24|0;b=a+16|0;c=f[b>>2]|0;if((c|0)==(f[a+20>>2]|0))Bj(a+12|0,d);else{f[c>>2]=f[d>>2];f[b>>2]=c+4}f[e>>2]=0;f[d>>2]=0;return}function Vj(a){a=a|0;var b=0,c=0,d=0,e=0;f[a>>2]=3352;b=f[a+32>>2]|0;if(b|0){d=a+36|0;c=f[d>>2]|0;if((c|0)!=(b|0))f[d>>2]=c+(~((c+-4-b|0)>>>2)<<2);Lq(b)}b=f[a+20>>2]|0;if(b|0){d=a+24|0;c=f[d>>2]|0;if((c|0)!=(b|0))f[d>>2]=c+(~((c+-4-b|0)>>>2)<<2);Lq(b)}e=a+8|0;b=f[e>>2]|0;if(!b)return;d=a+12|0;c=f[d>>2]|0;if((c|0)!=(b|0)){do{a=c+-4|0;f[d>>2]=a;c=f[a>>2]|0;f[a>>2]=0;if(c|0)Oa[f[(f[c>>2]|0)+4>>2]&127](c);c=f[d>>2]|0}while((c|0)!=(b|0));b=f[e>>2]|0}Lq(b);return}function Wj(a,c,d,e,g){a=a|0;c=c|0;d=d|0;e=e|0;g=g|0;var h=0;do if(!(np(a,f[c+8>>2]|0,g)|0)){if(np(a,f[c>>2]|0,g)|0){a=c+32|0;if((f[c+16>>2]|0)!=(d|0)?(h=c+20|0,(f[h>>2]|0)!=(d|0)):0){f[a>>2]=e;f[h>>2]=d;e=c+40|0;f[e>>2]=(f[e>>2]|0)+1;if((f[c+36>>2]|0)==1?(f[c+24>>2]|0)==2:0)b[c+54>>0]=1;f[c+44>>2]=4;break}if((e|0)==1)f[a>>2]=1}}else fn(0,c,d,e);while(0);return}function Xj(a,c,d){a=a|0;c=c|0;d=d|0;var e=0,g=0,h=0,i=0;h=a+d|0;c=c&255;if((d|0)>=67){while(a&3){b[a>>0]=c;a=a+1|0}e=h&-4|0;g=e-64|0;i=c|c<<8|c<<16|c<<24;while((a|0)<=(g|0)){f[a>>2]=i;f[a+4>>2]=i;f[a+8>>2]=i;f[a+12>>2]=i;f[a+16>>2]=i;f[a+20>>2]=i;f[a+24>>2]=i;f[a+28>>2]=i;f[a+32>>2]=i;f[a+36>>2]=i;f[a+40>>2]=i;f[a+44>>2]=i;f[a+48>>2]=i;f[a+52>>2]=i;f[a+56>>2]=i;f[a+60>>2]=i;a=a+64|0}while((a|0)<(e|0)){f[a>>2]=i;a=a+4|0}}while((a|0)<(h|0)){b[a>>0]=c;a=a+1|0}return h-d|0}function Yj(a,c,d,e,g){a=a|0;c=c|0;d=d|0;e=e|0;g=g|0;var h=0,i=0,j=0,k=0;b[c+53>>0]=1;do if((f[c+4>>2]|0)==(e|0)){b[c+52>>0]=1;h=c+16|0;a=f[h>>2]|0;k=c+54|0;j=c+48|0;i=c+24|0;e=c+36|0;if(!a){f[h>>2]=d;f[i>>2]=g;f[e>>2]=1;if(!((f[j>>2]|0)==1&(g|0)==1))break;b[k>>0]=1;break}if((a|0)!=(d|0)){f[e>>2]=(f[e>>2]|0)+1;b[k>>0]=1;break}e=f[i>>2]|0;if((e|0)==2){f[i>>2]=g;e=g}if((f[j>>2]|0)==1&(e|0)==1)b[k>>0]=1}while(0);return}function Zj(a,b,c){a=a|0;b=b|0;c=c|0;var d=0,e=0,g=0;g=u;u=u+16|0;d=g;e=f[b+36>>2]|0;if(!e){f[d>>2]=0;f[d+4>>2]=0;f[d+8>>2]=0;Ck(d,17599,23);f[a>>2]=-1;Rl(a+4|0,d);Eo(d);u=g;return}d=f[b+40>>2]|0;if(!d){Wd(a,b,e,c);u=g;return}else{wj(a,b,d,c);u=g;return}}function _j(a,b){a=a|0;b=b|0;if(!b)return;else{_j(a,f[b>>2]|0);_j(a,f[b+4>>2]|0);hk(b+20|0,f[b+24>>2]|0);Lq(b);return}}function $j(a){a=a|0;var b=0,c=0,d=0;b=u;u=u+16|0;d=b;f[d>>2]=0;f[d+4>>2]=0;f[d+8>>2]=0;Ck(d,17525,14);c=ql(a,d,-1)|0;Eo(d);f[d>>2]=0;f[d+4>>2]=0;f[d+8>>2]=0;Ck(d,17540,14);a=ql(a,d,-1)|0;Eo(d);a=(c|0)<(a|0)?a:c;u=b;return ((a|0)==-1?5:a)|0}function ak(a,b,c,d){a=a|0;b=b|0;c=c|0;d=d|0;var e=0,g=0,h=0;if((d|0)<0){a=0;return a|0}do if(!b){e=a+4|0;d=f[e>>2]|0;b=f[a>>2]|0;g=d-b|0;if(c>>>0>g>>>0){mj(a,c-g|0);break}if(c>>>0>>0?(h=b+c|0,(d|0)!=(h|0)):0)f[e>>2]=h}else ch(a,b,b+c|0);while(0);a=a+24|0;h=a;h=Do(f[h>>2]|0,f[h+4>>2]|0,1,0)|0;f[a>>2]=h;f[a+4>>2]=I;a=1;return a|0}function bk(a,b,c){a=a|0;b=b|0;c=c|0;var d=0,e=0;Xg(a,b,c);d=f[a+84>>2]|0;a=(f[a+88>>2]|0)-d|0;if((a|0)<=0)return;b=f[b>>2]|0;c=(a>>>0)/12|0;a=0;do{e=d+(a*12|0)|0;f[e>>2]=f[b+(f[e>>2]<<2)>>2];e=d+(a*12|0)+4|0;f[e>>2]=f[b+(f[e>>2]<<2)>>2];e=d+(a*12|0)+8|0;f[e>>2]=f[b+(f[e>>2]<<2)>>2];a=a+1|0}while((a|0)<(c|0));return}function ck(a,c){a=a|0;c=c|0;var d=0,e=0,g=0,h=0,i=0;h=a+64|0;if((f[h>>2]|0)==0?(g=Fn(32)|0,On(g),d=f[h>>2]|0,f[h>>2]=g,d|0):0){e=f[d>>2]|0;if(e|0){g=d+4|0;if((f[g>>2]|0)!=(e|0))f[g>>2]=e;Lq(e)}Lq(d)}e=Am(f[a+28>>2]|0)|0;e=X(b[a+24>>0]|0,e)|0;d=((e|0)<0)<<31>>31;i=f[h>>2]|0;g=En(e|0,d|0,c|0,0)|0;if(!(ak(i,0,g,I)|0)){i=0;return i|0}kl(a,f[h>>2]|0,e,d,0,0);f[a+80>>2]=c;i=1;return i|0}function dk(a,b,c){a=a|0;b=b|0;c=c|0;var d=0,e=0,g=0,h=0;h=u;u=u+64|0;g=h;if(!(np(a,b,0)|0))if((b|0)!=0?(e=mi(b,1e3,984,0)|0,(e|0)!=0):0){b=g+4|0;d=b+52|0;do{f[b>>2]=0;b=b+4|0}while((b|0)<(d|0));f[g>>2]=e;f[g+8>>2]=a;f[g+12>>2]=-1;f[g+48>>2]=1;Wa[f[(f[e>>2]|0)+28>>2]&3](e,g,f[c>>2]|0,1);if((f[g+24>>2]|0)==1){f[c>>2]=f[g+16>>2];b=1}else b=0}else b=0;else b=1;u=h;return b|0}function ek(a,b,c){a=a|0;b=b|0;c=c|0;var d=0,e=0;d=u;u=u+16|0;e=d;f[e>>2]=0;f[e+4>>2]=0;f[e+8>>2]=0;Ck(e,17525,14);Dj(a,e,b);Eo(e);f[e>>2]=0;f[e+4>>2]=0;f[e+8>>2]=0;Ck(e,17540,14);Dj(a,e,c);Eo(e);u=d;return}function fk(a,b){a=a|0;b=b|0;var c=0,d=0,e=0,g=0;g=u;u=u+16|0;c=g;if(b|0){a=0;u=g;return a|0}b=Fn(36)|0;Qo(b,0);f[c>>2]=b;e=a+12|0;d=f[e>>2]|0;if(d>>>0<(f[a+16>>2]|0)>>>0){f[c>>2]=0;f[d>>2]=b;f[e>>2]=d+4}else uh(a+8|0,c);b=f[c>>2]|0;f[c>>2]=0;if(!b){a=1;u=g;return a|0}Oa[f[(f[b>>2]|0)+4>>2]&127](b);a=1;u=g;return a|0}function gk(a){a=a|0;var b=0,c=0,d=0;b=f[a+48>>2]|0;if(b|0){d=a+52|0;c=f[d>>2]|0;if((c|0)!=(b|0))f[d>>2]=c+(~((c+-4-b|0)>>>2)<<2);Lq(b)}b=f[a+24>>2]|0;if(b|0){d=a+28|0;c=f[d>>2]|0;if((c|0)!=(b|0))f[d>>2]=c+(~((c+-4-b|0)>>>2)<<2);Lq(b)}b=f[a+12>>2]|0;if(b|0){d=a+16|0;c=f[d>>2]|0;if((c|0)!=(b|0))f[d>>2]=c+(~((c+-4-b|0)>>>2)<<2);Lq(b)}d=f[a>>2]|0;if(!d)return;c=a+4|0;b=f[c>>2]|0;if((b|0)!=(d|0))f[c>>2]=b+(~((b+-4-d|0)>>>2)<<2);Lq(d);return}function hk(a,b){a=a|0;b=b|0;if(!b)return;else{hk(a,f[b>>2]|0);hk(a,f[b+4>>2]|0);Eo(b+28|0);Eo(b+16|0);Lq(b);return}}function ik(a,b,c){a=a|0;b=b|0;c=c|0;var d=0,e=0,g=0;if(!c){a=0;return a|0}d=c+40|0;g=c+44|0;Ri((f[g>>2]|0)-(f[d>>2]|0)>>2,b)|0;d=f[d>>2]|0;g=f[g>>2]|0;if((d|0)!=(g|0))do{e=f[d>>2]|0;if(e|0){Ri(f[e+40>>2]|0,b)|0;Rg(a,b,e)|0}d=d+4|0}while((d|0)!=(g|0));Rg(a,b,c)|0;a=1;return a|0}function jk(a){a=a|0;var b=0,c=0,d=0,e=0;e=u;u=u+16|0;c=e;d=c;f[d>>2]=0;f[d+4>>2]=0;Rf(a,2,c);c=f[a+12>>2]|0;d=a+16|0;b=f[d>>2]|0;if((b|0)==(c|0))b=c;else{b=b+(~((b+-4-c|0)>>>2)<<2)|0;f[d>>2]=b}f[a+24>>2]=0;f[a+28>>2]=0;if(c|0){if((b|0)!=(c|0))f[d>>2]=b+(~((b+-4-c|0)>>>2)<<2);Lq(c)}d=f[a>>2]|0;if(!d){u=e;return}c=a+4|0;b=f[c>>2]|0;if((b|0)!=(d|0))f[c>>2]=b+(~((b+-8-d|0)>>>3)<<3);Lq(d);u=e;return}function kk(a,b,c,d,e,f){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;f=f|0;var g=0;f=d-e|0;a=a+8|0;if((f|0)>0){d=0-e|0;do{g=b+(f<<2)|0;aj(a,g,g+(d<<2)|0,c+(f<<2)|0);f=f-e|0}while((f|0)>0)}e=e>>>0>1073741823?-1:e<<2;g=Iq(e)|0;Xj(g|0,0,e|0)|0;aj(a,b,g,c);Jq(g);return 1}function lk(a,c,d,e,g,h,i,j,k,l){a=a|0;c=c|0;d=d|0;e=e|0;g=g|0;h=h|0;i=i|0;j=j|0;k=k|0;l=l|0;var m=0,n=0,o=0;f[a>>2]=d;if(d|0){o=d+16|0;m=f[o+4>>2]|0;n=a+8|0;f[n>>2]=f[o>>2];f[n+4>>2]=m;n=d+24|0;m=f[n+4>>2]|0;d=a+16|0;f[d>>2]=f[n>>2];f[d+4>>2]=m}b[a+24>>0]=e;f[a+28>>2]=g;b[a+32>>0]=h&1;o=a+40|0;f[o>>2]=i;f[o+4>>2]=j;o=a+48|0;f[o>>2]=k;f[o+4>>2]=l;f[a+56>>2]=c;return}function mk(a){a=a|0;var b=0,c=0,d=0;if(!a)return;d=a+88|0;b=f[d>>2]|0;f[d>>2]=0;if(b|0){c=f[b+8>>2]|0;if(c|0){d=b+12|0;if((f[d>>2]|0)!=(c|0))f[d>>2]=c;Lq(c)}Lq(b)}b=f[a+68>>2]|0;if(b|0){d=a+72|0;c=f[d>>2]|0;if((c|0)!=(b|0))f[d>>2]=c+(~((c+-4-b|0)>>>2)<<2);Lq(b)}d=a+64|0;b=f[d>>2]|0;f[d>>2]=0;if(b|0){c=f[b>>2]|0;if(c|0){d=b+4|0;if((f[d>>2]|0)!=(c|0))f[d>>2]=c;Lq(c)}Lq(b)}Lq(a);return}function nk(a,b){a=a|0;b=b|0;if(!b)return;else{nk(a,f[b>>2]|0);nk(a,f[b+4>>2]|0);hk(b+20|0,f[b+24>>2]|0);Lq(b);return}}function ok(a,c){a=a|0;c=c|0;var d=0,e=0,g=0,h=0,i=0;h=u;u=u+16|0;e=h+4|0;d=h;g=h+8|0;a=f[a+4>>2]|0;if((a|0)==-1){g=0;u=h;return g|0}b[g>>0]=a;a=c+16|0;i=f[a+4>>2]|0;if(!((i|0)>0|(i|0)==0&(f[a>>2]|0)>>>0>0)){f[d>>2]=f[c+4>>2];f[e>>2]=f[d>>2];vf(c,e,g,g+1|0)|0}i=1;u=h;return i|0}function pk(a,b,c){a=a|0;b=b|0;c=c|0;var d=0,e=0,g=0,h=0,i=0;f[a>>2]=0;d=a+4|0;f[d>>2]=0;f[a+8>>2]=0;if(!b)return;if(b>>>0>536870911){zp(a);e=Ha(4)|0;qq(e);sa(e|0,1040,102)}g=Fn(b<<3)|0;f[d>>2]=g;f[a>>2]=g;e=g+(b<<3)|0;f[a+8>>2]=e;a=g;while(1){i=c;h=f[i+4>>2]|0;g=a;f[g>>2]=f[i>>2];f[g+4>>2]=h;b=b+-1|0;if(!b)break;else a=a+8|0}f[d>>2]=e;return}function qk(a){a=a|0;var b=0,c=0,d=0;b=f[a+52>>2]|0;if(b|0){d=a+56|0;c=f[d>>2]|0;if((c|0)!=(b|0))f[d>>2]=c+(~((c+-4-b|0)>>>2)<<2);Lq(b)}b=f[a+40>>2]|0;if(b|0){d=a+44|0;c=f[d>>2]|0;if((c|0)!=(b|0))f[d>>2]=c+(~((c+-4-b|0)>>>2)<<2);Lq(b)}b=f[a+28>>2]|0;if(b|0){d=a+32|0;c=f[d>>2]|0;if((c|0)!=(b|0))f[d>>2]=c+(~((c+-4-b|0)>>>2)<<2);Lq(b)}b=f[a+12>>2]|0;if(b|0)Lq(b);b=f[a>>2]|0;if(!b)return;Lq(b);return}function rk(a,b){a=a|0;b=b|0;var c=0,d=0,e=0,g=0,h=0;f[a>>2]=0;h=a+4|0;f[h>>2]=0;f[a+8>>2]=0;e=b+4|0;c=(f[e>>2]|0)-(f[b>>2]|0)|0;d=c>>2;if(!d)return;if(d>>>0>1073741823){zp(a);h=Ha(4)|0;qq(h);sa(h|0,1040,102)}g=Fn(c)|0;f[h>>2]=g;f[a>>2]=g;f[a+8>>2]=g+(d<<2);b=f[b>>2]|0;c=(f[e>>2]|0)-b|0;if((c|0)<=0)return;Mh(g|0,b|0,c|0)|0;f[h>>2]=g+(c>>>2<<2);return}function sk(a,c){a=a|0;c=c|0;var d=0,e=0,g=0,i=0,j=0,k=0,l=0;l=u;u=u+16|0;j=l;k=c&255;b[j>>0]=k;g=a+16|0;e=f[g>>2]|0;if(!e)if(!(bm(a)|0)){e=f[g>>2]|0;i=4}else d=-1;else i=4;do if((i|0)==4){i=a+20|0;g=f[i>>2]|0;if(g>>>0>>0?(d=c&255,(d|0)!=(b[a+75>>0]|0)):0){f[i>>2]=g+1;b[g>>0]=k;break}if((Ma[f[a+36>>2]&31](a,j,1)|0)==1)d=h[j>>0]|0;else d=-1}while(0);u=l;return d|0}function tk(a){a=a|0;var b=0,c=0,d=0,e=0,g=0,h=0;e=u;u=u+16|0;c=e+8|0;b=e+4|0;d=e;f[d>>2]=f[(f[a+4>>2]|0)+68>>2];a=f[a+44>>2]|0;g=a+16|0;h=f[g+4>>2]|0;if((h|0)>0|(h|0)==0&(f[g>>2]|0)>>>0>0){u=e;return 1}f[b>>2]=f[a+4>>2];f[c>>2]=f[b>>2];vf(a,c,d,d+4|0)|0;u=e;return 1}function uk(a,b){a=a|0;b=b|0;var c=0,d=0,e=0;b=f[b>>2]|0;if((b|0)==-1073741824)return 1;c=(b|0)<0?-1073741824:b*3|0;if((c|0)<0)return 1;a=f[a>>2]|0;e=f[a+(c<<2)>>2]|0;b=c+1|0;b=((b|0)%3|0|0)==0?c+-2|0:b;if((b|0)<0)d=-1073741824;else d=f[a+(b<<2)>>2]|0;b=(((c>>>0)%3|0|0)==0?2:-1)+c|0;if((b|0)<0)b=-1073741824;else b=f[a+(b<<2)>>2]|0;if((e|0)==(d|0))return 1;else return (e|0)==(b|0)|(d|0)==(b|0)|0;return 0}function vk(a){a=a|0;if(!a)return;hk(a+24|0,f[a+28>>2]|0);_j(a+12|0,f[a+16>>2]|0);hk(a,f[a+4>>2]|0);Lq(a);return}function wk(a,c){a=a|0;c=c|0;var d=0,e=0,g=0,h=0,i=0,j=0,k=0;h=a&255;d=a&255;if((f[c+76>>2]|0)>=0?(Rq(c)|0)!=0:0){if((d|0)!=(b[c+75>>0]|0)?(j=c+20|0,g=f[j>>2]|0,g>>>0<(f[c+16>>2]|0)>>>0):0){f[j>>2]=g+1;b[g>>0]=h}else d=sk(c,a)|0;Qq(c)}else k=3;do if((k|0)==3){if((d|0)!=(b[c+75>>0]|0)?(i=c+20|0,e=f[i>>2]|0,e>>>0<(f[c+16>>2]|0)>>>0):0){f[i>>2]=e+1;b[e>>0]=h;break}d=sk(c,a)|0}while(0);return d|0}function xk(a,b){a=a|0;b=b|0;var c=0,d=0,e=0,g=0,h=0,i=0,j=0;e=a+8|0;c=f[a>>2]|0;if((f[e>>2]|0)-c>>2>>>0>=b>>>0)return;d=a+4|0;if(b>>>0>1073741823){a=Ha(4)|0;qq(a);sa(a|0,1040,102)}j=(f[d>>2]|0)-c|0;h=j>>2;i=Fn(b<<2)|0;g=i+(h<<2)|0;h=g+(0-h<<2)|0;if((j|0)>0)Mh(h|0,c|0,j|0)|0;f[a>>2]=h;f[d>>2]=g;f[e>>2]=i+(b<<2);if(!c)return;Lq(c);return}function yk(a,b,c){a=a|0;b=b|0;c=c|0;var d=0,e=0;f[a>>2]=0;d=a+4|0;f[d>>2]=0;f[a+8>>2]=0;if(!b)return;if(b>>>0>357913941){zp(a);c=Ha(4)|0;qq(c);sa(c|0,1040,102)}e=Fn(b*12|0)|0;f[d>>2]=e;f[a>>2]=e;f[a+8>>2]=e+(b*12|0);a=e;do{rk(a,c);a=(f[d>>2]|0)+12|0;f[d>>2]=a;b=b+-1|0}while((b|0)!=0);return}function zk(a){a=a|0;var b=0,c=0,d=0;f[a>>2]=4164;b=f[a+96>>2]|0;if(b|0)Lq(b);b=f[a+84>>2]|0;if(b|0)Lq(b);b=f[a+72>>2]|0;if(b|0)Lq(b);b=f[a+60>>2]|0;if(b|0)Lq(b);f[a>>2]=3604;c=f[a+32>>2]|0;if(!c){Lq(a);return}d=a+36|0;b=f[d>>2]|0;if((b|0)!=(c|0))f[d>>2]=b+(~((b+-4-c|0)>>>2)<<2);Lq(c);Lq(a);return}function Ak(a){a=a|0;var b=0,c=0,d=0;f[a>>2]=3828;b=f[a+96>>2]|0;if(b|0)Lq(b);b=f[a+84>>2]|0;if(b|0)Lq(b);b=f[a+72>>2]|0;if(b|0)Lq(b);b=f[a+60>>2]|0;if(b|0)Lq(b);f[a>>2]=3604;c=f[a+32>>2]|0;if(!c){Lq(a);return}d=a+36|0;b=f[d>>2]|0;if((b|0)!=(c|0))f[d>>2]=b+(~((b+-4-c|0)>>>2)<<2);Lq(c);Lq(a);return}function Bk(a,b,c){a=a|0;b=b|0;c=c|0;var d=0,e=0,g=0;f[a>>2]=0;d=a+4|0;f[d>>2]=0;f[a+8>>2]=0;if(!b)return;if(b>>>0>1073741823){zp(a);e=Ha(4)|0;qq(e);sa(e|0,1040,102)}g=Fn(b<<2)|0;f[d>>2]=g;f[a>>2]=g;e=g+(b<<2)|0;f[a+8>>2]=e;a=g;while(1){f[a>>2]=f[c>>2];b=b+-1|0;if(!b)break;else a=a+4|0}f[d>>2]=e;return}function Ck(a,c,d){a=a|0;c=c|0;d=d|0;var e=0,g=0,h=0,i=0;h=u;u=u+16|0;e=h;if(d>>>0<=4294967279)if(d>>>0<11)b[a+11>>0]=d;else g=5;else{vp(a);g=5}if((g|0)==5){i=d+16&-16;g=Fn(i)|0;f[a>>2]=g;f[a+8>>2]=i|-2147483648;f[a+4>>2]=d;a=g}Jo(a,c,d)|0;b[e>>0]=0;Dp(a+d|0,e);u=h;return}function Dk(a){a=a|0;var b=0,c=0;f[a>>2]=4164;b=f[a+96>>2]|0;if(b|0)Lq(b);b=f[a+84>>2]|0;if(b|0)Lq(b);b=f[a+72>>2]|0;if(b|0)Lq(b);b=f[a+60>>2]|0;if(b|0)Lq(b);f[a>>2]=3604;c=f[a+32>>2]|0;if(!c)return;a=a+36|0;b=f[a>>2]|0;if((b|0)!=(c|0))f[a>>2]=b+(~((b+-4-c|0)>>>2)<<2);Lq(c);return}function Ek(a){a=a|0;var c=0,d=0,e=0,f=0,g=0;while(1){c=b[a>>0]|0;d=c<<24>>24;e=a+1|0;if(!(jq(d)|0))break;else a=e}switch(d|0){case 45:{a=1;f=5;break}case 43:{a=0;f=5;break}default:{g=0;e=a}}if((f|0)==5){c=b[e>>0]|0;g=a}a=(c<<24>>24)+-48|0;if(a>>>0<10){d=a;a=0;c=e;do{c=c+1|0;a=(a*10|0)-d|0;d=(b[c>>0]|0)+-48|0}while(d>>>0<10)}else a=0;return (g|0?a:0-a|0)|0}function Fk(a){a=a|0;var b=0,c=0;f[a>>2]=3828;b=f[a+96>>2]|0;if(b|0)Lq(b);b=f[a+84>>2]|0;if(b|0)Lq(b);b=f[a+72>>2]|0;if(b|0)Lq(b);b=f[a+60>>2]|0;if(b|0)Lq(b);f[a>>2]=3604;c=f[a+32>>2]|0;if(!c)return;a=a+36|0;b=f[a>>2]|0;if((b|0)!=(c|0))f[a>>2]=b+(~((b+-4-c|0)>>>2)<<2);Lq(c);return}function Gk(a,b){a=a|0;b=b|0;var c=0,d=0,e=0,g=0;g=a+36|0;e=a+40|0;c=f[g>>2]|0;if((f[e>>2]|0)==(c|0)){g=1;return g|0}d=a+48|0;a=c;c=0;while(1){a=f[a+(c<<2)>>2]|0;c=c+1|0;if(!(Ma[f[(f[a>>2]|0)+20>>2]&31](a,d,b)|0)){a=0;c=5;break}a=f[g>>2]|0;if(c>>>0>=(f[e>>2]|0)-a>>2>>>0){a=1;c=5;break}}if((c|0)==5)return a|0;return 0}function Hk(a,c,d){a=a|0;c=c|0;d=d|0;c=Lh(a,c)|0;if((c|0)==(a+4|0)){a=-1;c=(a|0)==-1;a=(a|0)!=0;d=c?d:a;return d|0}c=c+28|0;if((b[c+11>>0]|0)<0)c=f[c>>2]|0;a=Ek(c)|0;c=(a|0)==-1;a=(a|0)!=0;d=c?d:a;return d|0}function Ik(a){a=a|0;var b=0,c=0,d=0;if(!(f[a+68>>2]|0)){d=0;return d|0}d=a+8|0;c=a+12|0;a=f[d>>2]|0;if(((f[c>>2]|0)-a|0)>0)b=0;else{d=1;return d|0}while(1){a=f[a+(b<<2)>>2]|0;b=b+1|0;if(!(hm(a,a)|0)){a=0;b=5;break}a=f[d>>2]|0;if((b|0)>=((f[c>>2]|0)-a>>2|0)){a=1;b=5;break}}if((b|0)==5)return a|0;return 0}function Jk(a,b){a=a|0;b=b|0;var c=0,d=0,e=0;e=a+36|0;d=a+40|0;a=f[e>>2]|0;if((f[d>>2]|0)==(a|0)){e=1;return e|0}else c=0;while(1){a=f[a+(c<<2)>>2]|0;c=c+1|0;if(!(Va[f[(f[a>>2]|0)+24>>2]&127](a,b)|0)){a=0;c=4;break}a=f[e>>2]|0;if(c>>>0>=(f[d>>2]|0)-a>>2>>>0){a=1;c=4;break}}if((c|0)==4)return a|0;return 0}function Kk(a){a=a|0;var c=0,d=0,e=0;e=a;a:do if(!(e&3)){c=a;d=4}else{c=e;while(1){if(!(b[a>>0]|0))break a;a=a+1|0;c=a;if(!(c&3)){c=a;d=4;break}}}while(0);if((d|0)==4){while(1){a=f[c>>2]|0;if(!((a&-2139062144^-2139062144)&a+-16843009))c=c+4|0;else break}if((a&255)<<24>>24)do c=c+1|0;while((b[c>>0]|0)!=0)}return c-e|0}function Lk(a,c){a=a|0;c=c|0;var d=0,e=0,g=0;d=f[a+188>>2]|0;a=f[a+184>>2]|0;g=a;if((d|0)==(a|0))return 0;e=(d-a|0)/108|0;d=0;while(1){if((f[g+(d*108|0)>>2]|0)==(c|0)){a=4;break}a=d+1|0;if(a>>>0>>0)d=a;else{a=6;break}}if((a|0)==4)return ((b[g+(d*108|0)+72>>0]|0)==0?0:g+(d*108|0)+4|0)|0;else if((a|0)==6)return 0;return 0}function Mk(a){a=a|0;var b=0,c=0,d=0;f[a>>2]=5780;b=f[a+64>>2]|0;if(b|0){d=a+68|0;c=f[d>>2]|0;if((c|0)!=(b|0))f[d>>2]=c+(~((c+-4-b|0)>>>2)<<2);Lq(b)}f[a+12>>2]=5804;b=f[a+32>>2]|0;if(b|0)Lq(b);b=f[a+20>>2]|0;if(!b){Lq(a);return}Lq(b);Lq(a);return}function Nk(a,b){a=a|0;b=b|0;var c=0;c=f[a+60>>2]|0;if(!c){a=0;return a|0}f[c+4>>2]=a+48;if(!(Ra[f[(f[c>>2]|0)+12>>2]&127](c)|0)){a=0;return a|0}if(!(Ra[f[(f[a>>2]|0)+40>>2]&127](a)|0)){a=0;return a|0}if(!(Va[f[(f[a>>2]|0)+44>>2]&127](a,b)|0)){a=0;return a|0}a=Va[f[(f[a>>2]|0)+48>>2]&127](a,b)|0;return a|0}function Ok(a){a=a|0;var b=0,c=0,d=0;f[a>>2]=4388;f[a+40>>2]=3180;b=f[a+48>>2]|0;if(b|0){d=a+52|0;c=f[d>>2]|0;if((c|0)!=(b|0))f[d>>2]=c+(~((c+-4-b|0)>>>2)<<2);Lq(b)}f[a>>2]=3536;d=a+36|0;b=f[d>>2]|0;f[d>>2]=0;if(!b){zj(a);Lq(a);return}Oa[f[(f[b>>2]|0)+4>>2]&127](b);zj(a);Lq(a);return}function Pk(a,b){a=a|0;b=b|0;var c=0,d=0,e=0;c=f[b>>2]|0;if(!c){a=0;return a|0}e=a+44|0;d=f[e>>2]|0;if(d>>>0<(f[a+48>>2]|0)>>>0){f[b>>2]=0;f[d>>2]=c;f[e>>2]=(f[e>>2]|0)+4;a=1;return a|0}else{Fh(a+40|0,b);a=1;return a|0}return 0}function Qk(a){a=a|0;var b=0,c=0,d=0,e=0;e=a+36|0;d=a+40|0;b=f[e>>2]|0;if((f[d>>2]|0)==(b|0)){e=1;return e|0}c=a+48|0;a=b;b=0;while(1){a=f[a+(b<<2)>>2]|0;b=b+1|0;if(!(Va[f[(f[a>>2]|0)+16>>2]&127](a,c)|0)){a=0;b=5;break}a=f[e>>2]|0;if(b>>>0>=(f[d>>2]|0)-a>>2>>>0){a=1;b=5;break}}if((b|0)==5)return a|0;return 0}function Rk(a,b,c){a=a|0;b=b|0;c=c|0;var d=0,e=0,g=0;d=u;u=u+16|0;g=d;e=d+4|0;f[g>>2]=b;f[e>>2]=0;f[e+4>>2]=0;f[e+8>>2]=0;Ck(e,17741,17);Dj(Hd(a,g)|0,e,c);Eo(e);u=d;return}function Sk(a,b){a=+a;b=b|0;var c=0,d=0,e=0;p[s>>3]=a;c=f[s>>2]|0;d=f[s+4>>2]|0;e=co(c|0,d|0,52)|0;switch(e&2047){case 0:{if(a!=0.0){a=+Sk(a*18446744073709551616.0,b);c=(f[b>>2]|0)+-64|0}else c=0;f[b>>2]=c;break}case 2047:break;default:{f[b>>2]=(e&2047)+-1022;f[s>>2]=c;f[s+4>>2]=d&-2146435073|1071644672;a=+p[s>>3]}}return +a}function Tk(a){a=a|0;var b=0,c=0,d=0;f[a>>2]=5828;b=f[a+64>>2]|0;if(b|0){d=a+68|0;c=f[d>>2]|0;if((c|0)!=(b|0))f[d>>2]=c+(~((c+-4-b|0)>>>2)<<2);Lq(b)}f[a+12>>2]=5852;b=f[a+32>>2]|0;if(b|0)Lq(b);b=f[a+20>>2]|0;if(!b){Lq(a);return}Lq(b);Lq(a);return}function Uk(a){a=a|0;var b=0,c=0,d=0;f[a>>2]=4220;b=f[a+76>>2]|0;if(b|0)Lq(b);d=a+68|0;b=f[d>>2]|0;f[d>>2]=0;if(b|0)Jq(b);f[a>>2]=3604;b=f[a+32>>2]|0;if(!b){Lq(a);return}d=a+36|0;c=f[d>>2]|0;if((c|0)!=(b|0))f[d>>2]=c+(~((c+-4-b|0)>>>2)<<2);Lq(b);Lq(a);return}function Vk(a,b,c,d){a=a|0;b=b|0;c=c|0;d=+d;var e=0;e=u;u=u+16|0;a=e;if(!b){b=0;u=e;return b|0}f[a>>2]=0;f[a+4>>2]=0;f[a+8>>2]=0;Ck(a,c,Kk(c)|0);Bm(b,a,d);Eo(a);b=1;u=e;return b|0}function Wk(a,b,c,d){a=a|0;b=b|0;c=c|0;d=d|0;var e=0;e=u;u=u+16|0;a=e;if(!b){b=0;u=e;return b|0}f[a>>2]=0;f[a+4>>2]=0;f[a+8>>2]=0;Ck(a,c,Kk(c)|0);Dm(b,a,d);Eo(a);b=1;u=e;return b|0}function Xk(a,c){a=a|0;c=c|0;var d=0,e=0;d=0;while(1){if((h[18318+d>>0]|0)==(a|0)){e=2;break}d=d+1|0;if((d|0)==87){d=87;a=18406;e=5;break}}if((e|0)==2)if(!d)d=18406;else{a=18406;e=5}if((e|0)==5)while(1){do{e=a;a=a+1|0}while((b[e>>0]|0)!=0);d=d+-1|0;if(!d){d=a;break}else e=5}return mq(d,f[c+20>>2]|0)|0}function Yk(a){a=a|0;var b=0,c=0,d=0;f[a>>2]=5780;b=f[a+64>>2]|0;if(b|0){d=a+68|0;c=f[d>>2]|0;if((c|0)!=(b|0))f[d>>2]=c+(~((c+-4-b|0)>>>2)<<2);Lq(b)}f[a+12>>2]=5804;b=f[a+32>>2]|0;if(b|0)Lq(b);b=f[a+20>>2]|0;if(!b)return;Lq(b);return}function Zk(a){a=a|0;var b=0,c=0,d=0;f[a>>2]=3884;b=f[a+76>>2]|0;if(b|0)Lq(b);d=a+68|0;b=f[d>>2]|0;f[d>>2]=0;if(b|0)Jq(b);f[a>>2]=3604;b=f[a+32>>2]|0;if(!b){Lq(a);return}d=a+36|0;c=f[d>>2]|0;if((c|0)!=(b|0))f[d>>2]=c+(~((c+-4-b|0)>>>2)<<2);Lq(b);Lq(a);return}function _k(a){a=a|0;var b=0,c=0,d=0;f[a>>2]=4388;f[a+40>>2]=3180;b=f[a+48>>2]|0;if(b|0){d=a+52|0;c=f[d>>2]|0;if((c|0)!=(b|0))f[d>>2]=c+(~((c+-4-b|0)>>>2)<<2);Lq(b)}f[a>>2]=3536;d=a+36|0;b=f[d>>2]|0;f[d>>2]=0;if(!b){zj(a);return}Oa[f[(f[b>>2]|0)+4>>2]&127](b);zj(a);return}function $k(a){a=a|0;var b=0,c=0,d=0;f[a>>2]=5828;b=f[a+64>>2]|0;if(b|0){d=a+68|0;c=f[d>>2]|0;if((c|0)!=(b|0))f[d>>2]=c+(~((c+-4-b|0)>>>2)<<2);Lq(b)}f[a+12>>2]=5852;b=f[a+32>>2]|0;if(b|0)Lq(b);b=f[a+20>>2]|0;if(!b)return;Lq(b);return}function al(a,b){a=a|0;b=b|0;var c=0,d=0,e=0;c=Fn(60)|0;d=c;e=d+60|0;do{f[d>>2]=0;d=d+4|0}while((d|0)<(e|0));e=ni(c,b)|0;f[a>>2]=e?c:0;a=e?0:c;if(e)return;gk(a);Lq(a);return}function bl(a,b,c,d){a=a|0;b=b|0;c=c|0;d=d|0;var e=0,f=0,g=0,h=0,i=0,j=0;j=b>>31|((b|0)<0?-1:0)<<1;i=((b|0)<0?-1:0)>>31|((b|0)<0?-1:0)<<1;f=d>>31|((d|0)<0?-1:0)<<1;e=((d|0)<0?-1:0)>>31|((d|0)<0?-1:0)<<1;h=Bo(j^a|0,i^b|0,j|0,i|0)|0;g=I;a=f^j;b=e^i;return Bo((Md(h,g,Bo(f^c|0,e^d|0,f|0,e|0)|0,I,0)|0)^a|0,I^b|0,a|0,b|0)|0}function cl(a,c){a=a|0;c=c|0;var d=0,e=0;f[c>>2]=2;e=a+4|0;d=c+8|0;a=f[d>>2]|0;c=(f[c+12>>2]|0)-a|0;if(c>>>0<4294967292){pl(d,c+4|0,0);a=f[d>>2]|0}c=a+c|0;e=h[e>>0]|h[e+1>>0]<<8|h[e+2>>0]<<16|h[e+3>>0]<<24;b[c>>0]=e;b[c+1>>0]=e>>8;b[c+2>>0]=e>>16;b[c+3>>0]=e>>24;return}function dl(a){a=a|0;var b=0,c=0;f[a>>2]=4220;b=f[a+76>>2]|0;if(b|0)Lq(b);c=a+68|0;b=f[c>>2]|0;f[c>>2]=0;if(b|0)Jq(b);f[a>>2]=3604;c=f[a+32>>2]|0;if(!c)return;a=a+36|0;b=f[a>>2]|0;if((b|0)!=(c|0))f[a>>2]=b+(~((b+-4-c|0)>>>2)<<2);Lq(c);return}function el(a,c,d){a=a|0;c=c|0;d=d|0;var e=0;if(c>>>0>0|(c|0)==0&a>>>0>4294967295)while(1){e=xn(a|0,c|0,10,0)|0;d=d+-1|0;b[d>>0]=e&255|48;e=a;a=rp(a|0,c|0,10,0)|0;if(!(c>>>0>9|(c|0)==9&e>>>0>4294967295))break;else c=I}if(a)while(1){d=d+-1|0;b[d>>0]=(a>>>0)%10|0|48;if(a>>>0<10)break;else a=(a>>>0)/10|0}return d|0}function fl(a){a=a|0;var b=0,c=0,d=0;f[a>>2]=3252;b=f[a+84>>2]|0;if(b|0){d=a+88|0;c=f[d>>2]|0;if((c|0)!=(b|0))f[d>>2]=c+(~(((c+-12-b|0)>>>0)/12|0)*12|0);Lq(b)}b=f[a+72>>2]|0;if(!b){Yh(a);Lq(a);return}d=a+76|0;c=f[d>>2]|0;if((c|0)!=(b|0))f[d>>2]=c+(~((c+-4-b|0)>>>2)<<2);Lq(b);Yh(a);Lq(a);return}function gl(a,c,d,e){a=a|0;c=c|0;d=d|0;e=e|0;var g=0,h=0,i=0;g=c+16|0;a=f[g>>2]|0;h=c+36|0;i=c+24|0;do if(a){if((a|0)!=(d|0)){f[h>>2]=(f[h>>2]|0)+1;f[i>>2]=2;b[c+54>>0]=1;break}if((f[i>>2]|0)==2)f[i>>2]=e}else{f[g>>2]=d;f[i>>2]=e;f[h>>2]=1}while(0);return}function hl(a,b){a=a|0;b=b|0;var c=0,d=0,e=0,g=0;ld(a,b);if((b|0)<=-1)return;g=a+76|0;c=f[g>>2]|0;a=f[a+72>>2]|0;if((c-a>>2|0)<=(b|0))return;d=a+(b<<2)|0;a=d+4|0;b=c-a|0;e=b>>2;if(e){Om(d|0,a|0,b|0)|0;c=f[g>>2]|0}a=d+(e<<2)|0;if((c|0)==(a|0))return;f[g>>2]=c+(~((c+-4-a|0)>>>2)<<2);return}function il(a){a=a|0;var b=0,c=0,d=0,e=0;b=f[a+32>>2]|0;c=f[a+36>>2]|0;if((b|0)==(c|0)){d=1;return d|0}d=a+8|0;a=a+44|0;while(1){e=f[(f[d>>2]|0)+(f[b>>2]<<2)>>2]|0;b=b+4|0;if(!(Va[f[(f[e>>2]|0)+20>>2]&127](e,f[a>>2]|0)|0)){b=0;a=5;break}if((b|0)==(c|0)){b=1;a=5;break}}if((a|0)==5)return b|0;return 0}function jl(a){a=a|0;var b=0,c=0;f[a>>2]=3884;b=f[a+76>>2]|0;if(b|0)Lq(b);c=a+68|0;b=f[c>>2]|0;f[c>>2]=0;if(b|0)Jq(b);f[a>>2]=3604;c=f[a+32>>2]|0;if(!c)return;a=a+36|0;b=f[a>>2]|0;if((b|0)!=(c|0))f[a>>2]=b+(~((b+-4-c|0)>>>2)<<2);Lq(c);return}function kl(a,b,c,d,e,g){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;g=g|0;var h=0,i=0,j=0;f[a>>2]=b;j=b+16|0;h=f[j+4>>2]|0;i=a+8|0;f[i>>2]=f[j>>2];f[i+4>>2]=h;i=b+24|0;h=f[i+4>>2]|0;b=a+16|0;f[b>>2]=f[i>>2];f[b+4>>2]=h;b=a+40|0;f[b>>2]=c;f[b+4>>2]=d;a=a+48|0;f[a>>2]=e;f[a+4>>2]=g;return}function ll(a,b){a=a|0;b=b|0;var c=0,d=0,e=0;c=f[a+188>>2]|0;d=f[a+184>>2]|0;e=d;a:do if((c|0)!=(d|0)){d=(c-d|0)/108|0;c=0;while(1){if((f[e+(c*108|0)>>2]|0)==(b|0))break;c=c+1|0;if(c>>>0>=d>>>0)break a}a=e+(c*108|0)+76|0;return a|0}while(0);a=a+40|0;return a|0}function ml(a,b){a=a|0;b=b|0;var c=0,d=0,e=0;f[a>>2]=0;c=a+4|0;f[c>>2]=0;f[a+8>>2]=0;if(!b)return;if(b>>>0>1073741823){zp(a);a=Ha(4)|0;qq(a);sa(a|0,1040,102)}d=b<<2;e=Fn(d)|0;f[a>>2]=e;b=e+(b<<2)|0;f[a+8>>2]=b;Xj(e|0,0,d|0)|0;f[c>>2]=b;return}function nl(a){a=a|0;var b=0,c=0,d=0;f[a>>2]=3252;b=f[a+84>>2]|0;if(b|0){d=a+88|0;c=f[d>>2]|0;if((c|0)!=(b|0))f[d>>2]=c+(~(((c+-12-b|0)>>>0)/12|0)*12|0);Lq(b)}b=f[a+72>>2]|0;if(!b){Yh(a);return}d=a+76|0;c=f[d>>2]|0;if((c|0)!=(b|0))f[d>>2]=c+(~((c+-4-b|0)>>>2)<<2);Lq(b);Yh(a);return}function ol(a,c){a=a|0;c=c|0;c=Lh(a,c)|0;if((c|0)==(a+4|0)){a=0;return a|0}c=c+28|0;if((b[c+11>>0]|0)<0)c=f[c>>2]|0;a=((Ek(c)|0)+1|0)>>>0>1;return a|0}function pl(a,b,c){a=a|0;b=b|0;c=c|0;var d=0,e=0,g=0,h=0;e=a+4|0;d=f[e>>2]|0;c=f[a>>2]|0;g=d-c|0;if(b>>>0<=g>>>0){if(b>>>0>>0?(h=c+b|0,(d|0)!=(h|0)):0)f[e>>2]=h}else mj(a,b-g|0);a=a+24|0;h=a;h=Do(f[h>>2]|0,f[h+4>>2]|0,1,0)|0;f[a>>2]=h;f[a+4>>2]=I;return}function ql(a,c,d){a=a|0;c=c|0;d=d|0;c=Lh(a,c)|0;if((c|0)==(a+4|0)){a=d;return a|0}c=c+28|0;if((b[c+11>>0]|0)<0)c=f[c>>2]|0;a=Ek(c)|0;return a|0}function rl(a){a=a|0;var b=0,c=0,d=0;f[a>>2]=4276;b=f[a+76>>2]|0;if(b|0)Lq(b);f[a>>2]=3604;b=f[a+32>>2]|0;if(!b){Lq(a);return}d=a+36|0;c=f[d>>2]|0;if((c|0)!=(b|0))f[d>>2]=c+(~((c+-4-b|0)>>>2)<<2);Lq(b);Lq(a);return}function sl(a){a=a|0;var b=0,c=0,d=0;f[a>>2]=3940;b=f[a+76>>2]|0;if(b|0)Lq(b);f[a>>2]=3604;b=f[a+32>>2]|0;if(!b){Lq(a);return}d=a+36|0;c=f[d>>2]|0;if((c|0)!=(b|0))f[d>>2]=c+(~((c+-4-b|0)>>>2)<<2);Lq(b);Lq(a);return}function tl(a){a=a|0;var b=0;f[a>>2]=5060;b=f[a+80>>2]|0;if(b|0)Lq(b);b=f[a+68>>2]|0;if(b|0)Lq(b);b=f[a+56>>2]|0;if(b|0)Lq(b);b=f[a+44>>2]|0;if(!b){Lq(a);return}Lq(b);Lq(a);return}function ul(a){a=a|0;var b=0,c=0,d=0;f[a>>2]=4332;jk(a+100|0);f[a>>2]=3604;b=f[a+32>>2]|0;if(!b){Lq(a);return}d=a+36|0;c=f[d>>2]|0;if((c|0)!=(b|0))f[d>>2]=c+(~((c+-4-b|0)>>>2)<<2);Lq(b);Lq(a);return}function vl(a){a=a|0;var b=0,c=0,d=0;f[a>>2]=3292;b=f[a+16>>2]|0;if(b|0){d=a+20|0;c=f[d>>2]|0;if((c|0)!=(b|0))f[d>>2]=c+(~((c+-4-b|0)>>>2)<<2);Lq(b)}b=f[a+4>>2]|0;if(!b){Lq(a);return}d=a+8|0;c=f[d>>2]|0;if((c|0)!=(b|0))f[d>>2]=c+(~((c+-4-b|0)>>>2)<<2);Lq(b);Lq(a);return}function wl(a){a=a|0;var b=0;f[a>>2]=4724;b=f[a+80>>2]|0;if(b|0)Lq(b);b=f[a+68>>2]|0;if(b|0)Lq(b);b=f[a+56>>2]|0;if(b|0)Lq(b);b=f[a+44>>2]|0;if(!b){Lq(a);return}Lq(b);Lq(a);return}function xl(a,b,c,d,e,g){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;g=g|0;if(np(a,f[b+8>>2]|0,g)|0)Yj(0,b,c,d,e);else{a=f[a+8>>2]|0;Ua[f[(f[a>>2]|0)+20>>2]&3](a,b,c,d,e,g)}return}function yl(a){a=a|0;var b=0,c=0,d=0;f[a>>2]=3996;jk(a+100|0);f[a>>2]=3604;b=f[a+32>>2]|0;if(!b){Lq(a);return}d=a+36|0;c=f[d>>2]|0;if((c|0)!=(b|0))f[d>>2]=c+(~((c+-4-b|0)>>>2)<<2);Lq(b);Lq(a);return}function zl(a){a=a|0;if(!(f[a+44>>2]|0))return 0;if(!(f[a+48>>2]|0))return 0;if(!(f[a+28>>2]|0))return 0;if(!(f[a+32>>2]|0))return 0;if(!(f[a+36>>2]|0))return 0;else return (f[a+40>>2]|0)!=0|0;return 0}function Al(a){a=a|0;var b=0,c=0;f[a>>2]=4276;b=f[a+76>>2]|0;if(b|0)Lq(b);f[a>>2]=3604;c=f[a+32>>2]|0;if(!c)return;a=a+36|0;b=f[a>>2]|0;if((b|0)!=(c|0))f[a>>2]=b+(~((b+-4-c|0)>>>2)<<2);Lq(c);return}function Bl(a){a=a|0;var b=0;f[a>>2]=5060;b=f[a+80>>2]|0;if(b|0)Lq(b);b=f[a+68>>2]|0;if(b|0)Lq(b);b=f[a+56>>2]|0;if(b|0)Lq(b);b=f[a+44>>2]|0;if(!b)return;Lq(b);return}function Cl(a){a=a|0;var b=0,c=0;f[a>>2]=3940;b=f[a+76>>2]|0;if(b|0)Lq(b);f[a>>2]=3604;c=f[a+32>>2]|0;if(!c)return;a=a+36|0;b=f[a>>2]|0;if((b|0)!=(c|0))f[a>>2]=b+(~((b+-4-c|0)>>>2)<<2);Lq(c);return}function Dl(a){a=a|0;var b=0,c=0,d=0;f[a>>2]=3292;b=f[a+16>>2]|0;if(b|0){d=a+20|0;c=f[d>>2]|0;if((c|0)!=(b|0))f[d>>2]=c+(~((c+-4-b|0)>>>2)<<2);Lq(b)}d=f[a+4>>2]|0;if(!d)return;c=a+8|0;b=f[c>>2]|0;if((b|0)!=(d|0))f[c>>2]=b+(~((b+-4-d|0)>>>2)<<2);Lq(d);return}function El(a,b,c,d,e){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;var f=0,g=0;g=u;u=u+256|0;f=g;if((c|0)>(d|0)&(e&73728|0)==0){e=c-d|0;Xj(f|0,b|0,(e>>>0<256?e:256)|0)|0;if(e>>>0>255){b=c-d|0;do{cp(a,f,256);e=e+-256|0}while(e>>>0>255);e=b&255}cp(a,f,e)}u=g;return}function Fl(a){a=a|0;var b=0;f[a>>2]=4724;b=f[a+80>>2]|0;if(b|0)Lq(b);b=f[a+68>>2]|0;if(b|0)Lq(b);b=f[a+56>>2]|0;if(b|0)Lq(b);b=f[a+44>>2]|0;if(!b)return;Lq(b);return}function Gl(a){a=a|0;var b=0,c=0;f[a>>2]=4332;jk(a+100|0);f[a>>2]=3604;c=f[a+32>>2]|0;if(!c)return;b=a+36|0;a=f[b>>2]|0;if((a|0)!=(c|0))f[b>>2]=a+(~((a+-4-c|0)>>>2)<<2);Lq(c);return}function Hl(a){a=a|0;if(!(f[a+60>>2]|0))return 0;if(!(f[a+64>>2]|0))return 0;if(!(f[a+44>>2]|0))return 0;if(!(f[a+48>>2]|0))return 0;if(!(f[a+52>>2]|0))return 0;else return (f[a+56>>2]|0)!=0|0;return 0}function Il(a,b){a=a|0;b=b|0;var c=0,d=0;c=u;u=u+16|0;d=c;f[d>>2]=0;f[d+4>>2]=0;f[d+8>>2]=0;Ck(d,17623,15);Dj(a,d,b);Eo(d);u=c;return}function Jl(a){a=a|0;var b=0,c=0,d=0,e=0;e=u;u=u+16|0;b=e;d=b;f[d>>2]=0;f[d+4>>2]=0;Rf(a,2,b);b=f[a+12>>2]|0;d=a+16|0;c=f[d>>2]|0;if((c|0)!=(b|0))f[d>>2]=c+(~((c+-4-b|0)>>>2)<<2);f[a+24>>2]=0;f[a+28>>2]=0;u=e;return}function Kl(a,b){a=a|0;b=b|0;var c=0;c=f[a+16>>2]|0;if(((f[a+20>>2]|0)-c>>2|0)<=(b|0)){a=0;return a|0}c=f[c+(b<<2)>>2]|0;if((c|0)<0){a=0;return a|0}c=f[(f[a+36>>2]|0)+(c<<2)>>2]|0;b=f[c+32>>2]|0;if(b|0){a=b;return a|0}a=f[c+8>>2]|0;return a|0}function Ll(a,b,c){a=a|0;b=b|0;c=c|0;var d=0;f[a+4>>2]=b;b=f[b+4>>2]|0;if((c|0)<=-1)Fa(17509,17693,63,17731);d=f[b+8>>2]|0;if(((f[b+12>>2]|0)-d>>2|0)>(c|0)){f[a+8>>2]=f[d+(c<<2)>>2];f[a+12>>2]=c;return 1}else Fa(17639,17693,64,17731);return 0}function Ml(a){a=a|0;var b=0,c=0;f[a>>2]=3996;jk(a+100|0);f[a>>2]=3604;c=f[a+32>>2]|0;if(!c)return;b=a+36|0;a=f[b>>2]|0;if((a|0)!=(c|0))f[b>>2]=a+(~((a+-4-c|0)>>>2)<<2);Lq(c);return}function Nl(a,b){a=a|0;b=b|0;var c=0;if((b|0)<0){a=0;return a|0}c=f[a+4>>2]|0;if(((f[c+12>>2]|0)-(f[c+8>>2]|0)>>2|0)<=(b|0)){c=0;return c|0}c=f[(f[a+8>>2]|0)+(f[(f[a+20>>2]|0)+(b<<2)>>2]<<2)>>2]|0;c=Va[f[(f[c>>2]|0)+36>>2]&127](c,b)|0;return c|0}function Ol(a,b){a=a|0;b=b|0;var c=0;if((b|0)<0){a=0;return a|0}c=f[a+4>>2]|0;if(((f[c+12>>2]|0)-(f[c+8>>2]|0)>>2|0)<=(b|0)){c=0;return c|0}c=f[(f[a+8>>2]|0)+(f[(f[a+20>>2]|0)+(b<<2)>>2]<<2)>>2]|0;c=Va[f[(f[c>>2]|0)+32>>2]&127](c,b)|0;return c|0}function Pl(a,b,c,d){a=a|0;b=b|0;c=c|0;d=d|0;if(np(a,f[b+8>>2]|0,0)|0)gl(0,b,c,d);else{a=f[a+8>>2]|0;Wa[f[(f[a>>2]|0)+28>>2]&3](a,b,c,d)}return}function Ql(a,b,c){a=a|0;b=b|0;c=c|0;fi(a,c);f[a>>2]=5284;c=a+36|0;f[c>>2]=0;f[c+4>>2]=0;f[c+8>>2]=0;f[c+12>>2]=0;f[c+16>>2]=0;f[c+20>>2]=0;c=f[b>>2]|0;f[b>>2]=0;f[a+60>>2]=c;return}function Rl(a,c){a=a|0;c=c|0;f[a>>2]=0;f[a+4>>2]=0;f[a+8>>2]=0;if((b[c+11>>0]|0)<0)Ck(a,f[c>>2]|0,f[c+4>>2]|0);else{f[a>>2]=f[c>>2];f[a+4>>2]=f[c+4>>2];f[a+8>>2]=f[c+8>>2]}return}function Sl(a,b,c){a=a|0;b=b|0;c=c|0;var d=0,e=0,g=0;e=u;u=u+32|0;g=e;d=e+20|0;f[g>>2]=f[a+60>>2];f[g+4>>2]=0;f[g+8>>2]=b;f[g+12>>2]=d;f[g+16>>2]=c;if((Io(Ca(140,g|0)|0)|0)<0){f[d>>2]=-1;a=-1}else a=f[d>>2]|0;u=e;return a|0}function Tl(a,b){a=a|0;b=b|0;var c=0;if((b|0)==-1|(b|0)>3){a=0;return a|0}c=f[a+20+(b*12|0)>>2]|0;if(((f[a+20+(b*12|0)+4>>2]|0)-c|0)<=0){a=0;return a|0}c=f[c>>2]|0;if((c|0)==-1){a=0;return a|0}a=f[(f[a+8>>2]|0)+(c<<2)>>2]|0;return a|0}function Ul(a){a=a|0;if(!(f[a+44>>2]|0))return 0;if(!(f[a+28>>2]|0))return 0;if(!(f[a+32>>2]|0))return 0;if(!(f[a+36>>2]|0))return 0;else return (f[a+40>>2]|0)!=0|0;return 0}function Vl(a,b,c){a=a|0;b=b|0;c=c|0;var d=0;d=f[a+16>>2]|0;if(((f[a+20>>2]|0)-d>>2|0)<=(b|0)){a=-1;return a|0}d=f[d+(b<<2)>>2]|0;if((d|0)<0){a=-1;return a|0}a=f[(f[(f[(f[a+36>>2]|0)+(d<<2)>>2]|0)+16>>2]|0)+(c<<2)>>2]|0;return a|0}function Wl(a,c,d){a=a|0;c=c|0;d=d|0;var e=0,f=0;a:do if(!d)a=0;else{while(1){e=b[a>>0]|0;f=b[c>>0]|0;if(e<<24>>24!=f<<24>>24)break;d=d+-1|0;if(!d){a=0;break a}else{a=a+1|0;c=c+1|0}}a=(e&255)-(f&255)|0}while(0);return a|0}function Xl(a){a=a|0;var b=0,c=0,d=0;c=f[a>>2]|0;d=a+4|0;b=f[d>>2]|0;if((b|0)==(c|0))b=c;else{b=b+(~((b+-4-c|0)>>>2)<<2)|0;f[d>>2]=b}f[a+12>>2]=0;f[a+16>>2]=0;if(!c)return;if((b|0)!=(c|0))f[d>>2]=b+(~((b+-4-c|0)>>>2)<<2);Lq(c);return}function Yl(a,b){a=a|0;b=b|0;var c=0;c=f[a+16>>2]|0;if(((f[a+20>>2]|0)-c>>2|0)<=(b|0)){a=0;return a|0}c=f[c+(b<<2)>>2]|0;if((c|0)<0){a=0;return a|0}a=f[(f[a+36>>2]|0)+(c<<2)>>2]|0;a=(f[a+20>>2]|0)-(f[a+16>>2]|0)>>2;return a|0}function Zl(a,b){a=a|0;b=b|0;var c=0;c=f[a+16>>2]|0;if(((f[a+20>>2]|0)-c>>2|0)<=(b|0)){a=0;return a|0}c=f[c+(b<<2)>>2]|0;if((c|0)<0){a=0;return a|0}Jp(f[(f[a+36>>2]|0)+(c<<2)>>2]|0);a=1;return a|0}function _l(a){a=a|0;if(!(f[a+28>>2]|0)){a=0;return a|0}if(!(f[a+32>>2]|0)){a=0;return a|0}if(!(f[a+36>>2]|0)){a=0;return a|0}a=(f[a+40>>2]|0)!=0;return a|0}function $l(a){a=a|0;var b=0,c=0;f[a>>2]=5116;b=f[a+60>>2]|0;if(b|0)Lq(b);c=a+52|0;b=f[c>>2]|0;f[c>>2]=0;if(!b){Lq(a);return}Jq(b);Lq(a);return}function am(a){a=a|0;if(!(f[a+60>>2]|0))return 0;if(!(f[a+44>>2]|0))return 0;if(!(f[a+48>>2]|0))return 0;if(!(f[a+52>>2]|0))return 0;else return (f[a+56>>2]|0)!=0|0;return 0}function bm(a){a=a|0;var c=0,d=0;c=a+74|0;d=b[c>>0]|0;b[c>>0]=d+255|d;c=f[a>>2]|0;if(!(c&8)){f[a+8>>2]=0;f[a+4>>2]=0;c=f[a+44>>2]|0;f[a+28>>2]=c;f[a+20>>2]=c;f[a+16>>2]=c+(f[a+48>>2]|0);c=0}else{f[a>>2]=c|32;c=-1}return c|0}function cm(a,c){a=a|0;c=c|0;var d=0,e=0;e=a;d=e+64|0;do{f[e>>2]=f[c>>2];e=e+4|0;c=c+4|0}while((e|0)<(d|0));e=a+64|0;f[a+88>>2]=0;f[e>>2]=0;f[e+4>>2]=0;f[e+8>>2]=0;f[e+12>>2]=0;f[e+16>>2]=0;b[e+20>>0]=0;return}function dm(a){a=a|0;var b=0,c=0;f[a>>2]=4780;b=f[a+60>>2]|0;if(b|0)Lq(b);c=a+52|0;b=f[c>>2]|0;f[c>>2]=0;if(!b){Lq(a);return}Jq(b);Lq(a);return}function em(a,b,c){a=a|0;b=b|0;c=c|0;var d=0,e=0,g=0;g=a+4|0;e=f[g>>2]|0;c=f[a>>2]|0;d=e-c|0;if(b>>>0>d>>>0){mj(a,b-d|0);return}if(b>>>0>=d>>>0)return;c=c+b|0;if((e|0)==(c|0))return;f[g>>2]=c;return}function fm(a){a=a|0;if(!(f[a+44>>2]|0)){a=0;return a|0}if(!(f[a+48>>2]|0)){a=0;return a|0}if(!(f[a+52>>2]|0)){a=0;return a|0}a=(f[a+56>>2]|0)!=0;return a|0}function gm(a){a=a|0;var b=0,c=0;c=a+15&-16|0;b=f[r>>2]|0;a=b+c|0;if((c|0)>0&(a|0)<(b|0)|(a|0)<0){ea()|0;va(12);return -1}f[r>>2]=a;if((a|0)>(da()|0)?(ca()|0)==0:0){f[r>>2]=b;va(12);return -1}return b|0}function hm(a,b){a=a|0;b=b|0;var c=0,d=0,e=0;c=u;u=u+16|0;d=c+4|0;e=c;f[e>>2]=0;f[d>>2]=f[e>>2];a=Vb(a,b,d)|0;u=c;return a|0}function im(a,b,c,d){a=a|0;b=b|0;c=c|0;d=d|0;var e=0,g=0;c=f[c>>2]|0;e=a;d=b-a>>2;while(1){if(!d)break;b=(d|0)/2|0;g=e+(b<<2)|0;a=(f[g>>2]|0)>>>0>>0;e=a?g+4|0:e;d=a?d+-1-b|0:b}return e|0}function jm(a,b){a=a|0;b=b|0;b=f[b+88>>2]|0;if(!b){a=0;return a|0}if((f[b>>2]|0)!=2){a=0;return a|0}b=f[b+8>>2]|0;f[a+4>>2]=h[b>>0]|h[b+1>>0]<<8|h[b+2>>0]<<16|h[b+3>>0]<<24;a=1;return a|0}function km(a,b,c,d){a=a|0;b=b|0;c=c|0;d=d|0;var e=0,g=0;e=X(c,b)|0;c=(b|0)==0?0:c;if((f[d+76>>2]|0)>-1){g=(Rq(d)|0)==0;a=pj(a,e,d)|0;if(!g)Qq(d)}else a=pj(a,e,d)|0;if((a|0)!=(e|0))c=(a>>>0)/(b>>>0)|0;return c|0}function lm(a){a=a|0;var c=0;f[a>>2]=0;c=a+8|0;f[c>>2]=0;f[c+4>>2]=0;f[c+8>>2]=0;f[c+12>>2]=0;b[a+24>>0]=1;f[a+28>>2]=9;c=a+40|0;f[c>>2]=0;f[c+4>>2]=0;f[c+8>>2]=0;f[c+12>>2]=0;f[a+56>>2]=-1;f[a+60>>2]=0;return}function mm(a,b){a=a|0;b=b|0;if(!(Ra[f[(f[a>>2]|0)+40>>2]&127](a)|0)){a=0;return a|0}if(!(Va[f[(f[a>>2]|0)+44>>2]&127](a,b)|0)){a=0;return a|0}a=Va[f[(f[a>>2]|0)+48>>2]&127](a,b)|0;return a|0}function nm(a){a=a|0;var b=0;f[a>>2]=5116;b=f[a+60>>2]|0;if(b|0)Lq(b);a=a+52|0;b=f[a>>2]|0;f[a>>2]=0;if(!b)return;Jq(b);return}function om(a,c){a=a|0;c=c|0;if(f[c+56>>2]|0){a=0;return a|0}if((b[c+24>>0]|0)!=3){a=0;return a|0}f[a+44>>2]=c;a=1;return a|0}function pm(a,b){a=a|0;b=b|0;var c=0;f[a+4>>2]=b;f[a+8>>2]=f[b+52>>2];c=f[a+196>>2]|0;a=a+200|0;b=f[a>>2]|0;if((b|0)==(c|0))return 1;f[a>>2]=b+(~((b+-4-c|0)>>>2)<<2);return 1}function qm(a,c){a=a|0;c=c|0;var d=0,e=0;d=b[a>>0]|0;e=b[c>>0]|0;if(!(d<<24>>24==0?1:d<<24>>24!=e<<24>>24))do{a=a+1|0;c=c+1|0;d=b[a>>0]|0;e=b[c>>0]|0}while(!(d<<24>>24==0?1:d<<24>>24!=e<<24>>24));return (d&255)-(e&255)|0}function rm(a,b,c,d){a=a|0;b=b|0;c=c|0;d=d|0;f[a+8>>2]=b;f[a+12>>2]=0;Pn(a+16|0);f[a+48>>2]=d;if(d>>>0<7){f[a>>2]=c;n[a+4>>2]=$(0.0);return}else Fa(16185,16213,38,16287)}function sm(a,b,c,d,e,g){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;g=g|0;if(np(a,f[b+8>>2]|0,g)|0)Yj(0,b,c,d,e);return}function tm(a){a=a|0;var b=0;f[a>>2]=4780;b=f[a+60>>2]|0;if(b|0)Lq(b);a=a+52|0;b=f[a>>2]|0;f[a>>2]=0;if(!b)return;Jq(b);return}function um(a){a=a|0;var b=0,c=0;f[a>>2]=3536;c=a+36|0;b=f[c>>2]|0;f[c>>2]=0;if(!b){zj(a);Lq(a);return}Oa[f[(f[b>>2]|0)+4>>2]&127](b);zj(a);Lq(a);return}function vm(a){a=a|0;var b=0,c=0,d=0;f[a>>2]=3604;b=f[a+32>>2]|0;if(!b){Lq(a);return}d=a+36|0;c=f[d>>2]|0;if((c|0)!=(b|0))f[d>>2]=c+(~((c+-4-b|0)>>>2)<<2);Lq(b);Lq(a);return}function wm(a){a=a|0;var c=0,d=0,e=0;c=u;u=u+16|0;d=c;e=f[a+4>>2]|0;e=(f[e+56>>2]|0)-(f[e+52>>2]|0)>>2;b[d>>0]=0;Th(a+20|0,e,d);u=c;return}function xm(a,c){a=a|0;c=c|0;if(f[c+56>>2]|0){a=0;return a|0}if((b[c+24>>0]|0)!=3){a=0;return a|0}f[a+60>>2]=c;a=1;return a|0}function ym(){var a=0,b=0;a=Fn(40)|0;f[a>>2]=0;f[a+4>>2]=0;f[a+8>>2]=0;f[a+12>>2]=0;n[a+16>>2]=$(1.0);b=a+20|0;f[b>>2]=0;f[b+4>>2]=0;f[b+8>>2]=0;f[b+12>>2]=0;n[a+36>>2]=$(1.0);return a|0}function zm(a){a=a|0;var c=0,d=0,e=0;c=u;u=u+16|0;d=c;e=f[a+4>>2]|0;e=(f[e+28>>2]|0)-(f[e+24>>2]|0)>>2;b[d>>0]=0;Th(a+20|0,e,d);u=c;return}function Am(a){a=a|0;switch(a|0){case 11:case 2:case 1:{a=1;break}case 4:case 3:{a=2;break}case 6:case 5:{a=4;break}case 8:case 7:{a=8;break}case 9:{a=4;break}case 10:{a=8;break}default:a=-1}return a|0}function Bm(a,b,c){a=a|0;b=b|0;c=+c;var d=0,e=0;d=u;u=u+16|0;e=d;p[e>>3]=c;ac(a,b,e);u=d;return}function Cm(a){a=a|0;f[a>>2]=5872;Aj(a+8|0);Lq(a);return}function Dm(a,b,c){a=a|0;b=b|0;c=c|0;var d=0,e=0;d=u;u=u+16|0;e=d;f[e>>2]=c;bc(a,b,e);u=d;return}function Em(a,c){a=a|0;c=c|0;var d=0,e=0;if((a|0)!=(c|0)){d=b[c+11>>0]|0;e=d<<24>>24<0;Oj(a,e?f[c>>2]|0:c,e?f[c+4>>2]|0:d&255)|0}return a|0}function Fm(a,b){a=a|0;b=b|0;var c=0,d=0,e=0,f=0;f=a&65535;e=b&65535;c=X(e,f)|0;d=a>>>16;a=(c>>>16)+(X(e,d)|0)|0;e=b>>>16;b=X(e,f)|0;return (I=(a>>>16)+(X(e,d)|0)+(((a&65535)+b|0)>>>16)|0,a+b<<16|c&65535|0)|0}function Gm(a){a=a|0;var b=0,c=0;f[a>>2]=5624;c=a+56|0;b=f[c>>2]|0;f[c>>2]=0;if(!b){Vj(a);Lq(a);return}Oa[f[(f[b>>2]|0)+4>>2]&127](b);Vj(a);Lq(a);return}function Hm(a){a=a|0;var b=0,c=0;f[a>>2]=3536;c=a+36|0;b=f[c>>2]|0;f[c>>2]=0;if(!b){zj(a);return}Oa[f[(f[b>>2]|0)+4>>2]&127](b);zj(a);return}function Im(a,b,c,d,e,f){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;f=f|0;Fa(10921,8201,76,17741);return 0}function Jm(a){a=a|0;f[a>>2]=5872;Aj(a+8|0);return}function Km(a,b){a=a|0;b=b|0;var c=0;if((b|0)==-1|(b|0)>3){b=-1;return b|0}c=f[a+20+(b*12|0)>>2]|0;if(((f[a+20+(b*12|0)+4>>2]|0)-c|0)<=0){b=-1;return b|0}b=f[c>>2]|0;return b|0}function Lm(a){a=a|0;var b=0,c=0;f[a>>2]=3604;c=f[a+32>>2]|0;if(!c)return;b=a+36|0;a=f[b>>2]|0;if((a|0)!=(c|0))f[b>>2]=a+(~((a+-4-c|0)>>>2)<<2);Lq(c);return}function Mm(a,b,c,d){a=a|0;b=b|0;c=c|0;d=d|0;if(np(a,f[b+8>>2]|0,0)|0)gl(0,b,c,d);return}function Nm(a){a=a|0;var c=0;f[a>>2]=0;f[a+4>>2]=0;f[a+8>>2]=0;f[a+12>>2]=0;f[a+16>>2]=0;f[a+20>>2]=0;b[a+24>>0]=1;a=a+28|0;c=a+40|0;do{f[a>>2]=0;a=a+4|0}while((a|0)<(c|0));return}function Om(a,c,d){a=a|0;c=c|0;d=d|0;var e=0;if((c|0)<(a|0)&(a|0)<(c+d|0)){e=a;c=c+d|0;a=a+d|0;while((d|0)>0){a=a-1|0;c=c-1|0;d=d-1|0;b[a>>0]=b[c>>0]|0}a=e}else Mh(a,c,d)|0;return a|0}function Pm(a){a=a|0;var c=0,d=0,e=0;c=f[a>>2]|0;d=(b[c>>0]|0)+-48|0;if(d>>>0<10){e=c;c=0;do{c=d+(c*10|0)|0;e=e+1|0;f[a>>2]=e;d=(b[e>>0]|0)+-48|0}while(d>>>0<10)}else c=0;return c|0}function Qm(a){a=a|0;var b=0,c=0,d=0;f[a>>2]=3180;b=f[a+8>>2]|0;if(!b){Lq(a);return}d=a+12|0;c=f[d>>2]|0;if((c|0)!=(b|0))f[d>>2]=c+(~((c+-4-b|0)>>>2)<<2);Lq(b);Lq(a);return}function Rm(a){a=a|0;var b=0;f[a>>2]=5172;b=f[a+60>>2]|0;if(!b){Lq(a);return}Lq(b);Lq(a);return}function Sm(a){a=a|0;var b=0,c=0;f[a>>2]=5624;c=a+56|0;b=f[c>>2]|0;f[c>>2]=0;if(!b){Vj(a);return}Oa[f[(f[b>>2]|0)+4>>2]&127](b);Vj(a);return}function Tm(a,c,d,e){a=a|0;c=c|0;d=d|0;e=e|0;if(!((a|0)==0&(c|0)==0))do{d=d+-1|0;b[d>>0]=h[18300+(a&15)>>0]|0|e;a=co(a|0,c|0,4)|0;c=I}while(!((a|0)==0&(c|0)==0));return d|0}function Um(a,b,c){a=a|0;b=b|0;c=c|0;var d=0,e=0;e=u;u=u+16|0;d=e;f[d>>2]=f[c>>2];a=Ma[f[(f[a>>2]|0)+16>>2]&31](a,b,d)|0;if(a)f[c>>2]=f[d>>2];u=e;return a&1|0}function Vm(){var a=0,b=0;b=Cn()|0;if((b|0?(a=f[b>>2]|0,a|0):0)?(b=a+48|0,(f[b>>2]&-256|0)==1126902528?(f[b+4>>2]|0)==1129074247:0):0)No(f[a+12>>2]|0);No(Xp()|0)}function Wm(a){a=a|0;var b=0;f[a>>2]=4836;b=f[a+60>>2]|0;if(!b){Lq(a);return}Lq(b);Lq(a);return}function Xm(a){a=a|0;var c=0;c=b[w+(a&255)>>0]|0;if((c|0)<8)return c|0;c=b[w+(a>>8&255)>>0]|0;if((c|0)<8)return c+8|0;c=b[w+(a>>16&255)>>0]|0;if((c|0)<8)return c+16|0;return (b[w+(a>>>24)>>0]|0)+24|0}function Ym(a,b,c){a=a|0;b=b|0;c=c|0;var d=0,e=0;if((b|0)>0)d=0;else return;do{e=f[a+(d<<2)>>2]|0;f[c+(d<<2)>>2]=e<<1^e>>31;d=d+1|0}while((d|0)!=(b|0));return}function Zm(a){a=a|0;var b=0,c=0,d=0;if(!a)return;b=f[a>>2]|0;if(b|0){d=a+4|0;c=f[d>>2]|0;if((c|0)!=(b|0))f[d>>2]=c+(~((c+-4-b|0)>>>2)<<2);Lq(b)}Lq(a);return}function _m(a,c){a=a|0;c=c|0;var d=0;b[c+84>>0]=1;d=f[c+68>>2]|0;c=c+72|0;a=f[c>>2]|0;if((a|0)==(d|0))return 1;f[c>>2]=a+(~((a+-4-d|0)>>>2)<<2);return 1}function $m(a){a=a|0;Co(a);f[a>>2]=4388;f[a+40>>2]=3180;f[a+44>>2]=-1;a=a+48|0;f[a>>2]=0;f[a+4>>2]=0;f[a+8>>2]=0;f[a+12>>2]=0;return}function an(a){a=a|0;var b=0,c=0;f[a>>2]=3180;c=f[a+8>>2]|0;if(!c)return;b=a+12|0;a=f[b>>2]|0;if((a|0)!=(c|0))f[b>>2]=a+(~((a+-4-c|0)>>>2)<<2);Lq(c);return}function bn(a){a=a|0;var c=0;f[a>>2]=3480;f[a+4>>2]=0;f[a+8>>2]=0;f[a+12>>2]=-1;c=a+16|0;f[a+32>>2]=0;f[c>>2]=0;f[c+4>>2]=0;f[c+8>>2]=0;b[c+12>>0]=0;return}function cn(a){a=a|0;f[a>>2]=5172;a=f[a+60>>2]|0;if(!a)return;Lq(a);return}function dn(a){a=a|0;var b=0,c=0,d=0;b=f[a>>2]|0;d=a+4|0;c=f[d>>2]|0;if((c|0)!=(b|0))f[d>>2]=c+(~((c+-4-b|0)>>>2)<<2);f[a+12>>2]=0;f[a+16>>2]=0;return}function en(a,b){a=a|0;b=b|0;if(!b)return 0;else Fa(12498,12869,65,12509);return 0}function fn(a,b,c,d){a=a|0;b=b|0;c=c|0;d=d|0;var e=0;if((f[b+4>>2]|0)==(c|0)?(e=b+28|0,(f[e>>2]|0)!=1):0)f[e>>2]=d;return}function gn(a,b){a=a|0;b=b|0;if(!b)return 0;else Fa(12498,11923,64,12509);return 0}function hn(a){a=a|0;f[a>>2]=4836;a=f[a+60>>2]|0;if(!a)return;Lq(a);return}function jn(a){a=a|0;var b=0;f[a>>2]=5804;b=f[a+20>>2]|0;if(b|0)Lq(b);b=f[a+8>>2]|0;if(!b){Lq(a);return}Lq(b);Lq(a);return}function kn(a,c,d){a=a|0;c=c|0;d=d|0;if(!((a|0)==0&(c|0)==0))do{d=d+-1|0;b[d>>0]=a&7|48;a=co(a|0,c|0,3)|0;c=I}while(!((a|0)==0&(c|0)==0));return d|0}function ln(a,b,c){a=a|0;b=b|0;c=c|0;var d=0,e=0;d=a+20|0;e=f[d>>2]|0;a=(f[a+16>>2]|0)-e|0;a=a>>>0>c>>>0?c:a;Mh(e|0,b|0,a|0)|0;f[d>>2]=(f[d>>2]|0)+a;return c|0}function mn(a){a=a|0;var b=0,c=0;c=f[a>>2]|0;if(!c)return;b=a+4|0;a=f[b>>2]|0;if((a|0)!=(c|0))f[b>>2]=a+(~((a+-8-c|0)>>>3)<<3);Lq(c);return}function nn(a){a=a|0;var b=0,c=0;c=f[a>>2]|0;if(!c)return;b=a+4|0;a=f[b>>2]|0;if((a|0)!=(c|0))f[b>>2]=a+(~((a+-4-c|0)>>>2)<<2);Lq(c);return}function on(a,b){a=a|0;b=b|0;if(!b)return 0;else Fa(12498,13154,67,12509);return 0}function pn(a,b,c){a=a|0;b=b|0;c=c|0;return Ma[f[(f[a>>2]|0)+44>>2]&31](a,b,c)|0}function qn(a){a=a|0;var c=0;lm(a);c=a+64|0;f[a+88>>2]=0;f[c>>2]=0;f[c+4>>2]=0;f[c+8>>2]=0;f[c+12>>2]=0;f[c+16>>2]=0;b[c+20>>0]=0;return}function rn(a){a=a|0;f[a>>2]=5228;jk(a+84|0);Lq(a);return}function sn(a){a=a|0;var b=0;f[a>>2]=5852;b=f[a+20>>2]|0;if(b|0)Lq(b);b=f[a+8>>2]|0;if(!b){Lq(a);return}Lq(b);Lq(a);return}function tn(a,b){a=a|0;b=b|0;b=f[b>>2]|0;return (1<<(b&31)&f[(f[a+28>>2]|0)+(b>>>5<<2)>>2]|0)!=0|0}function un(a){a=a|0;f[a>>2]=4892;jk(a+84|0);Lq(a);return}function vn(a){a=a|0;f[a>>2]=5228;jk(a+84|0);return}function wn(a,b,c,d,e,f){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;f=f|0;return fg(a,b,c,d,e,f)|0}function xn(a,b,c,d){a=a|0;b=b|0;c=c|0;d=d|0;var e=0,g=0;g=u;u=u+16|0;e=g|0;Md(a,b,c,d,e)|0;u=g;return (I=f[e+4>>2]|0,f[e>>2]|0)|0}function yn(a,b,c){a=a|0;b=b|0;c=c|0;Xb(a,b,c);return}function zn(a){a=a|0;var b=0;f[a>>2]=5804;b=f[a+20>>2]|0;if(b|0)Lq(b);b=f[a+8>>2]|0;if(!b)return;Lq(b);return}function An(a){a=a|0;f[a>>2]=4892;jk(a+84|0);return}function Bn(a){a=a|0;jo(a);f[a>>2]=3252;a=a+72|0;f[a>>2]=0;f[a+4>>2]=0;f[a+8>>2]=0;f[a+12>>2]=0;f[a+16>>2]=0;f[a+20>>2]=0;return}function Cn(){var a=0,b=0;a=u;u=u+16|0;if(!(za(21656,3)|0)){b=qa(f[5415]|0)|0;u=a;return b|0}else ao(20804,a);return 0}function Dn(a){a=a|0;var b=0;f[a>>2]=5852;b=f[a+20>>2]|0;if(b|0)Lq(b);b=f[a+8>>2]|0;if(!b)return;Lq(b);return}function En(a,b,c,d){a=a|0;b=b|0;c=c|0;d=d|0;var e=0,f=0;e=a;f=c;c=Fm(e,f)|0;a=I;return (I=(X(b,f)|0)+(X(d,e)|0)+a|a&0,c|0|0)|0}function Fn(a){a=a|0;var b=0;b=(a|0)==0?1:a;while(1){a=Xa(b)|0;if(a|0)break;a=Vp()|0;if(!a){a=0;break}Ta[a&3]()}return a|0}function Gn(a){a=a|0;var b=0,c=0;b=u;u=u+16|0;c=b;a=Oq(f[a+60>>2]|0)|0;f[c>>2]=a;a=Io(ua(6,c|0)|0)|0;u=b;return a|0}function Hn(a){a=a|0;f[a>>2]=0;f[a+4>>2]=0;f[a+8>>2]=0;f[a+12>>2]=0;f[a+16>>2]=0;f[a+20>>2]=0;f[a+24>>2]=0;f[a+28>>2]=0;return}function In(a){a=a|0;var b=0;b=u;u=u+16|0;kc(a);if(!(ra(f[5415]|0,0)|0)){u=b;return}else ao(20903,b)}function Jn(a){a=a|0;var b=0,c=0;b=f[a>>2]|0;c=a+4|0;if((f[c>>2]|0)!=(b|0))f[c>>2]=b;a=a+16|0;f[a>>2]=0;f[a+4>>2]=0;return}function Kn(){}function Ln(a,b,c){a=a|0;b=b|0;c=c|0;if((c|0)<32){I=b>>c;return a>>>c|(b&(1<>c-32|0}function Mn(a,b){a=a|0;b=b|0;return nh(a+40|0,b)|0}function Nn(a,b){a=a|0;b=b|0;return ok(a+40|0,b)|0}function On(a){a=a|0;f[a>>2]=0;f[a+4>>2]=0;f[a+8>>2]=0;a=a+16|0;f[a>>2]=0;f[a+4>>2]=0;f[a+8>>2]=0;f[a+12>>2]=0;return}function Pn(a){a=a|0;f[a>>2]=0;f[a+4>>2]=0;f[a+8>>2]=0;f[a+12>>2]=0;f[a+16>>2]=0;f[a+20>>2]=0;b[a+24>>0]=0;return}function Qn(a,b,c,d,e,f,g){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;f=f|0;g=g|0;return Qa[a&31](b|0,c|0,d|0,e|0,f|0,g|0)|0}function Rn(a,b,c,d){a=a|0;b=b|0;c=c|0;d=d|0;return oj(a,b,c,d)|0}function Sn(a,b,c){a=a|0;b=b|0;c=c|0;var d=0,e=0;d=u;u=u+16|0;e=d;f[e>>2]=c;c=Np(a,b,e)|0;u=d;return c|0}function Tn(a,b){a=a|0;b=b|0;a=f[a+56>>2]|0;return Va[f[(f[a>>2]|0)+24>>2]&127](a,b)|0}function Un(){var a=0;a=u;u=u+16|0;if(!(ta(21660,104)|0)){u=a;return}else ao(20853,a)}function Vn(a,b,c){a=a|0;b=b|0;c=c|0;Rk(a,b,c);return}function Wn(a){a=a|0;Cf(a);Lq(a);return}function Xn(a,b,c,d,e,f,g){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;f=f|0;g=g|0;Ua[a&3](b|0,c|0,d|0,e|0,f|0,g|0)}function Yn(a){a=a|0;return 4}function Zn(a,b,c){a=a|0;b=b|0;c=c|0;if((c|0)<32){I=b<>>32-c;return a<>2]|0;return Va[f[(f[a>>2]|0)+16>>2]&127](a,b)|0}function $n(a,b){a=a|0;b=b|0;a=f[a+56>>2]|0;return Va[f[(f[a>>2]|0)+20>>2]&127](a,b)|0}function ao(a,b){a=a|0;b=b|0;var c=0;c=u;u=u+16|0;f[c>>2]=b;b=f[1493]|0;li(b,a,c)|0;wk(10,b)|0;wa()}function bo(a,b){a=a|0;b=b|0;a=f[a+56>>2]|0;return Va[f[(f[a>>2]|0)+12>>2]&127](a,b)|0}function co(a,b,c){a=a|0;b=b|0;c=c|0;if((c|0)<32){I=b>>>c;return a>>>c|(b&(1<>>c-32|0}function eo(a){a=a|0;var b=0;f[a>>2]=3352;a=a+4|0;b=a+44|0;do{f[a>>2]=0;a=a+4|0}while((a|0)<(b|0));return}function fo(a,b,c,d){a=a|0;b=b|0;c=c|0;d=d|0;return Oi(a,b,c,d)|0}function go(a){a=a|0;Df(a);Lq(a);return}function ho(a,b,c,d){a=a|0;b=b|0;c=c|0;d=+d;return Vk(a,b,c,d)|0}function io(a){a=a|0;return 5}function jo(a){a=a|0;var b=0;f[a>>2]=3212;a=a+4|0;b=a+68|0;do{f[a>>2]=0;a=a+4|0}while((a|0)<(b|0));return}function ko(a){a=a|0;return 6}function lo(a,b,c,d){a=a|0;b=b|0;c=c|0;d=d|0;return Wk(a,b,c,d)|0}function mo(a,b,c){a=a|0;b=b|0;c=c|0;f[a+28>>2]=b;f[a+32>>2]=c;return 1}function no(a,b){a=a|0;b=b|0;Sj(a);f[a+36>>2]=b;f[a+40>>2]=b;return}function oo(a,b){a=a|0;b=b|0;if(!b)b=0;else b=xi(f[b>>2]|0,f[b+4>>2]|0,a)|0;return (b|0?b:a)|0}function po(a,b,c){a=a|0;b=b|0;c=c|0;Vn(a,b,c);return}function qo(a,b,c,d){a=a|0;b=b|0;c=c|0;d=d|0;return _g(a,b,c,d)|0}function ro(a,b,c){a=a|0;b=b|0;c=c|0;return $i(a,b,c)|0}function so(a,b,c){a=a|0;b=b|0;c=c|0;return Nj(a,b,c)|0}function to(a,b,c,d,e,f){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;f=f|0;Na[a&3](b|0,c|0,d|0,e|0,f|0)}function uo(a,b,c){a=a|0;b=b|0;c=c|0;ek(a,b,c);return}function vo(a){a=a|0;a=f[a+56>>2]|0;return Ra[f[(f[a>>2]|0)+28>>2]&127](a)|0}function wo(a){a=a|0;f[a>>2]=0;f[a+4>>2]=0;f[a+8>>2]=0;f[a+12>>2]=0;f[a+16>>2]=0;return}function xo(a){a=a|0;a=f[a+56>>2]|0;return Ra[f[(f[a>>2]|0)+32>>2]&127](a)|0}function yo(a,b){a=a|0;b=b|0;f[a+8>>2]=b;f[a+12>>2]=-1;return 1}function zo(a,b){a=a|0;b=b|0;f[a+52>>2]=b;qp(a,b);return}function Ao(a){a=+a;var b=0;p[s>>3]=a;b=f[s>>2]|0;I=f[s+4>>2]|0;return b|0}function Bo(a,b,c,d){a=a|0;b=b|0;c=c|0;d=d|0;d=b-d-(c>>>0>a>>>0|0)>>>0;return (I=d,a-c>>>0|0)|0}function Co(a){a=a|0;bn(a);f[a>>2]=3536;f[a+36>>2]=0;return}function Do(a,b,c,d){a=a|0;b=b|0;c=c|0;d=d|0;c=a+c>>>0;return (I=b+d+(c>>>0>>0|0)>>>0,c|0)|0}function Eo(a){a=a|0;if((b[a+11>>0]|0)<0)Lq(f[a>>2]|0);return}function Fo(a){a=a|0;if(!a)return;Oa[f[(f[a>>2]|0)+4>>2]&127](a);return}function Go(a,b,c,d,e){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;Wa[a&3](b|0,c|0,d|0,e|0)}function Ho(a,b,c){a=a|0;b=b|0;c=c|0;if(c|0)Om(a|0,b|0,c|0)|0;return a|0}function Io(a){a=a|0;var b=0;if(a>>>0>4294963200){b=Bq()|0;f[b>>2]=0-a;a=-1}return a|0}function Jo(a,b,c){a=a|0;b=b|0;c=c|0;if(c|0)Mh(a|0,b|0,c|0)|0;return a|0}function Ko(a,b){a=a|0;b=b|0;return -1}function Lo(a,b){a=a|0;b=b|0;Oo(a,b);return}function Mo(a){a=a|0;if(!a)a=0;else a=(mi(a,1e3,1072,0)|0)!=0;return a&1|0}function No(a){a=a|0;var b=0;b=u;u=u+16|0;Ta[a&3]();ao(20956,b)}function Oo(a,b){a=a|0;b=b|0;Il(a,b);return}function Po(a){a=a|0;Yi(a);Lq(a);return}function Qo(a,b){a=a|0;b=b|0;fi(a,b);f[a>>2]=5488;return}function Ro(a,b,c){a=a|0;b=b|0;c=c|0;Wo(a,b,c);return}function So(a,b,c){a=a|0;b=$(b);c=c|0;f[a+4>>2]=c;n[a>>2]=b;return}function To(a){a=a|0;Zo(a);f[a>>2]=5624;f[a+56>>2]=0;return}function Uo(a,b,c,d){a=a|0;b=b|0;c=c|0;d=d|0;return Ma[a&31](b|0,c|0,d|0)|0}function Vo(a){a=a|0;return f[a+12>>2]|0}function Wo(a,b,c){a=a|0;b=b|0;c=c|0;uo(a,b,c);return}function Xo(){var a=0;a=Fn(64)|0;lm(a);return a|0}function Yo(a,b){a=a|0;b=b|0;return $(bp(a,b))}function Zo(a){a=a|0;eo(a);f[a>>2]=3408;f[a+52>>2]=0;return}function _o(a){a=a|0;if(!a)return;Hj(a);Lq(a);return}function $o(a){a=a|0;return Ra[f[(f[a>>2]|0)+60>>2]&127](a)|0}function ap(a){a=a|0;return f[a+4>>2]|0}function bp(a,b){a=a|0;b=b|0;return $(n[(f[a>>2]|0)+(b<<2)>>2])}function cp(a,b,c){a=a|0;b=b|0;c=c|0;if(!(f[a>>2]&32))pj(b,c,a)|0;return}function dp(a,b,c,d){a=a|0;b=b|0;c=c|0;d=d|0;Sa[a&7](b|0,c|0,d|0)}function ep(){var a=0;a=Fn(96)|0;qn(a);return a|0}function fp(a){a=a|0;var b=0;b=u;u=u+a|0;u=u+15&-16;return b|0}function gp(a,b){a=a|0;b=b|0;if(!a)a=0;else a=Ej(a,b,0)|0;return a|0}function hp(a){a=a|0;var b=0;b=(Hq()|0)+188|0;return Xk(a,f[b>>2]|0)|0}function ip(a){a=a|0;return ((f[a+88>>2]|0)-(f[a+84>>2]|0)|0)/12|0|0}function jp(a,b,c,d,e,f){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;f=f|0;aa(4);return 0}function kp(a,b){a=a|0;b=b|0;return sp(a,b)|0}function lp(){var a=0;a=Fn(12)|0;wp(a);return a|0}function mp(a){a=a|0;zj(a);Lq(a);return}function np(a,b,c){a=a|0;b=b|0;c=c|0;return (a|0)==(b|0)|0}function op(a,b){a=a|0;b=b|0;var c=0;c=Bp(a|0)|0;return ((b|0)==0?a:c)|0}function pp(a){a=a|0;return (f[a+12>>2]|0)-(f[a+8>>2]|0)>>2|0}function qp(a,b){a=a|0;b=b|0;f[a+4>>2]=b;return}function rp(a,b,c,d){a=a|0;b=b|0;c=c|0;d=d|0;return Md(a,b,c,d,0)|0}function sp(a,b){a=a|0;b=b|0;return f[(f[a>>2]|0)+(b<<2)>>2]|0}function tp(a){a=a|0;f[a+4>>2]=0;f[a+8>>2]=0;f[a>>2]=a+4;return}function up(){var a=0;a=Fn(72)|0;jo(a);return a|0}function vp(a){a=a|0;Fa(20378,20407,1183,20508)}function wp(a){a=a|0;f[a>>2]=0;f[a+4>>2]=0;f[a+8>>2]=0;return}function xp(a){a=a|0;return (f[a+4>>2]|0)-(f[a>>2]|0)>>2|0}function yp(a){a=a|0;Fa(20334,20233,315,20357)}function zp(a){a=a|0;Fa(20210,20233,304,20508)}function Ap(a,b,c){a=a|0;b=b|0;c=c|0;return Va[a&127](b|0,c|0)|0}function Bp(a){a=a|0;return (a&255)<<24|(a>>8&255)<<16|(a>>16&255)<<8|a>>>24|0}function Cp(a){a=a|0;Zo(a);f[a>>2]=5552;return}function Dp(a,c){a=a|0;c=c|0;b[a>>0]=b[c>>0]|0;return}function Ep(a,b,c,d,e,f){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;f=f|0;aa(8)}function Fp(a,b,c){a=a|0;b=b|0;c=c|0;return -1}function Gp(a){a=a|0;if(!a)return;Lq(a);return}function Hp(){var a=0;a=Fn(1)|0;Qq(a);return a|0}function Ip(a){a=a|0;n[a>>2]=$(1.0);f[a+4>>2]=1;return}function Jp(a){a=a|0;b[a+28>>0]=1;return}function Kp(a,b){a=a|0;b=b|0;if(!x){x=a;y=b}}function Lp(a){a=a|0;Sj(a);return}function Mp(a,b){a=a|0;b=b|0;return 1}function Np(a,b,c){a=a|0;b=b|0;c=c|0;return Mj(a,2147483647,b,c)|0}function Op(a,b){a=a|0;b=b|0;f[a+68>>2]=b;return}function Pp(a,b,c){a=a|0;b=b|0;c=c|0;Pa[a&7](b|0,c|0)}function Qp(){var a=0;a=Fn(36)|0;sq(a);return a|0}function Rp(a){a=a|0;Vj(a);Lq(a);return}function Sp(){var a=0;a=Fn(96)|0;Bn(a);return a|0}function Tp(a){a=a|0;return (b[a+32>>0]|0)!=0|0}function Up(a,b,c,d,e){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;aa(1)}function Vp(){var a=0;a=f[5416]|0;f[5416]=a+0;return a|0}function Wp(a){a=a|0;return f[a+56>>2]|0}function Xp(){var a=0;a=f[1713]|0;f[1713]=a+0;return a|0}function Yp(a){a=a|0;Yh(a);Lq(a);return}function Zp(a){a=a|0;return b[a+24>>0]|0}function _p(a,b){a=a|0;b=b|0;return 0}function $p(a){a=a|0;return f[a+40>>2]|0}function aq(a){a=a|0;return f[a+48>>2]|0}function bq(a,b){a=a|0;b=b|0;return Ra[a&127](b|0)|0}function cq(a){a=a|0;return f[a+60>>2]|0}function dq(a){a=a|0;return f[a+28>>2]|0}function eq(a){a=a|0;xa(a|0)|0;Vm()}function fq(a){a=a|0;return f[a+80>>2]|0}function gq(a){a=a|0;return 3}function hq(a,b){a=a|0;b=b|0;u=a;v=b}function iq(a,b,c,d){a=a|0;b=b|0;c=c|0;d=d|0;aa(10)}function jq(a){a=a|0;return ((a|0)==32|(a+-9|0)>>>0<5)&1|0}function kq(a){a=a|0;return f[a+68>>2]|0}function lq(a,b){a=a|0;b=b|0;Oa[a&127](b|0)}function mq(a,b){a=a|0;b=b|0;return oo(a,b)|0}function nq(a){a=a|0;Qq(a);Lq(a);return}function oq(a,b,c){a=a|0;b=b|0;c=c|0;aa(0);return 0}function pq(a){a=a|0;return 2}function qq(a){a=a|0;f[a>>2]=6948;return}function rq(a){a=a|0;return 1}function sq(a){a=a|0;Lp(a);return}function tq(a,b){a=+a;b=b|0;return +(+Sk(a,b))}function uq(){return 3}function vq(a,b,c){a=a|0;b=b|0;c=c|0;aa(6)}function wq(){return 0}function xq(){return -1}function yq(){return 4}function zq(){return 1}function Aq(){return 2}function Bq(){return (Hq()|0)+64|0}function Cq(a,b){a=a|0;b=b|0;aa(9);return 0}function Dq(a){a=a|0;return 20996}function Eq(a){a=a|0;Ta[a&3]()}function Fq(){Ga()}function Gq(a,b){a=a|0;b=b|0;aa(3)}function Hq(){return Vq()|0}function Iq(a){a=a|0;return Fn(a)|0}function Jq(a){a=a|0;Lq(a);return}function Kq(a){a=a|0;u=a}function Lq(a){a=a|0;kc(a);return}function Mq(a){a=a|0;I=a}function Nq(){return 21592}function Oq(a){a=a|0;return a|0}function Pq(a){a=a|0;aa(5);return 0}function Qq(a){a=a|0;return}function Rq(a){a=a|0;return 0}function Sq(){return I|0}function Tq(){return u|0}function Uq(a){a=a|0;aa(2)}function Vq(){return 6100}function Wq(){aa(7)} + +// EMSCRIPTEN_END_FUNCS +var Ma=[oq,mo,Fp,Ll,pn,fh,hi,qc,Mg,Eg,Ai,dh,Ni,Tj,Vl,Oh,Sl,ln,dk,oq,oq,oq,oq,oq,oq,oq,oq,oq,oq,oq,oq,oq];var Na=[Up,Wj,Zh,Up];var Oa=[Uq,Qq,Jq,an,Qm,Yh,Yp,jb,nl,fl,Dl,vl,Vj,Rp,Rp,zj,mp,Hm,um,Lm,vm,vm,vm,vm,Fk,Ak,jl,Zk,Cl,sl,Ml,yl,vm,vm,Dk,zk,dl,Uk,Al,rl,Gl,ul,_k,Ok,Hm,um,Qq,Jq,Jq,Qq,Jq,Jq,Jq,Fl,wl,tm,dm,hn,Wm,An,un,Jq,Jq,Bl,tl,nm,$l,cn,Rm,vn,rn,Yi,Po,Rp,Qq,Jq,Rp,vl,Rp,Sm,Gm,Df,go,Yk,Mk,zn,jn,wm,$k,Tk,Dn,sn,zm,Jm,Cm,Cf,Wn,Qq,nq,Qq,Qq,nq,Qq,nq,In,Uq,Uq,Uq,Uq,Uq,Uq,Uq,Uq,Uq,Uq,Uq,Uq,Uq,Uq,Uq,Uq,Uq,Uq,Uq,Uq,Uq,Uq,Uq];var Pa=[Gq,cl,Tg,ld,hl,Gq,Gq,Gq];var Qa=[jp,vd,dc,Lb,_a,Ud,ae,Im,hc,Mb,Za,Qd,_d,Im,kk,Be,id,fb,Ih,ei,_b,Pe,jd,eb,Bh,$h,Zb,jp,jp,jp,jp,jp];var Ra=[Pq,pq,rq,Ik,rq,Rq,rq,rq,rq,Qf,di,il,rq,$o,Rq,Rq,Rq,rq,ap,Rq,Rq,rq,Rq,rq,rq,fm,pq,fm,Yn,fm,gq,am,rq,io,am,rq,ko,Hl,rq,rq,fm,pq,fm,Yn,fm,gq,am,rq,io,am,rq,ko,Hl,rq,rq,pq,rq,gq,pq,gq,Rq,ap,rq,Rq,rq,gq,rq,_l,pq,_l,Yn,_l,gq,Ul,rq,io,Ul,rq,ko,zl,rq,rq,_l,pq,_l,Yn,_l,gq,Ul,rq,io,Ul,rq,ko,zl,rq,Rq,Qk,oh,Rq,tk,Qj,rq,tk,pq,Rq,Rb,rq,Le,xo,vo,ab,Vo,ap,Nh,Sh,Og,$a,Vo,ap,Gn,Dq,Pq,Pq,Pq,Pq,Pq,Pq];var Sa=[vq,bh,Xg,Gh,bk,Jj,Je,pf];var Ta=[Wq,Fq,yj,Un];var Ua=[Ep,sm,xl,Ep];var Va=[Cq,jm,pi,Ce,mm,_p,_p,_p,Mp,Mp,_p,_p,yo,Mp,Mp,ij,Pj,mf,Ko,_p,gj,zf,on,xm,je,en,xm,_f,gn,xm,eh,zf,on,xm,je,en,xm,_f,gn,xm,eh,Mn,Nn,Ko,_p,dj,wf,on,om,ie,en,om,Xf,gn,om,Zg,wf,on,om,ie,en,om,Xf,gn,om,Zg,Wi,Nk,Yl,Zl,Kl,Gk,Jk,xg,_m,fk,Mp,hb,xg,$n,Tn,bo,_n,pm,Lk,ll,gc,Ie,tn,hg,jg,lg,pm,Lk,ll,gc,Ie,tn,Cq,Cq,Cq,Cq,Cq,Cq,Cq,Cq,Cq,Cq,Cq,Cq,Cq,Cq,Cq,Cq,Cq,Cq,Cq,Cq,Cq,Cq,Cq,Cq,Cq,Cq,Cq,Cq,Cq,Cq];var Wa=[iq,Mm,Pl,iq];return{_emscripten_bind_PointAttribute_normalized_0:Tp,_bitshift64Lshr:co,_emscripten_bind_PointAttribute_size_0:fq,_emscripten_enum_draco_GeometryAttribute_Type_POSITION:wq,_sbrk:gm,_memcpy:Mh,_emscripten_enum_draco_GeometryAttribute_Type_INVALID:xq,_emscripten_enum_draco_EncodedGeometryType_POINT_CLOUD:wq,___udivmoddi4:Md,_emscripten_enum_draco_MeshEncoderMethod_MESH_EDGEBREAKER_ENCODING:zq,_emscripten_bind_Mesh_num_faces_0:ip,_emscripten_get_global_libc:Nq,stackSave:Tq,_emscripten_bind_MeshBuilder_AddMetadataToMesh_2:so,___cxa_can_catch:Um,_free:kc,runPostSets:Kn,_emscripten_enum_draco_EncodedGeometryType_INVALID_GEOMETRY_TYPE:xq,_emscripten_bind_DracoInt8Array___destroy___0:Zm,_emscripten_bind_PointAttribute_byte_stride_0:$p,_emscripten_bind_MeshBuilder_AddFloatAttributeToMesh_5:wn,_emscripten_bind_MeshBuilder_MeshBuilder_0:Hp,_emscripten_bind_Metadata_Metadata_0:ym,_emscripten_bind_PointCloud_num_attributes_0:pp,_emscripten_bind_MetadataBuilder_MetadataBuilder_0:Hp,_emscripten_bind_Mesh_Mesh_0:Sp,_emscripten_bind_MetadataBuilder_AddIntEntry_3:lo,_emscripten_bind_DracoInt8Array_GetValue_1:kp,setThrew:Kp,_emscripten_bind_PointAttribute_num_components_0:Zp,_emscripten_bind_MeshBuilder___destroy___0:Gp,___cxa_is_pointer_type:Mo,_llvm_cttz_i32:Xm,_i64Add:Do,stackAlloc:fp,_emscripten_bind_Mesh_num_points_0:kq,___divdi3:bl,_emscripten_bind_Encoder_SetAttributeQuantization_2:po,getTempRet0:Sq,_emscripten_enum_draco_MeshEncoderMethod_MESH_SEQUENTIAL_ENCODING:wq,_emscripten_bind_Mesh_num_attributes_0:pp,_llvm_bswap_i32:Bp,_emscripten_bind_PointAttribute_unique_id_0:cq,establishStackSpace:hq,_emscripten_bind_MeshBuilder_AddFacesToMesh_3:qo,_emscripten_enum_draco_GeometryAttribute_Type_TEX_COORD:uq,_bitshift64Ashr:Ln,_emscripten_bind_DracoInt8Array_size_0:xp,_emscripten_bind_MetadataBuilder_AddDoubleEntry_3:ho,_emscripten_bind_MetadataBuilder_AddStringEntry_3:fo,_emscripten_enum_draco_GeometryAttribute_Type_COLOR:Aq,_emscripten_bind_VoidPtr___destroy___0:Gp,_memset:Xj,_emscripten_bind_PointAttribute_attribute_type_0:Wp,_emscripten_bind_PointCloud___destroy___0:Fo,_i64Subtract:Bo,setTempRet0:Mq,_emscripten_bind_DracoInt8Array_DracoInt8Array_0:lp,_emscripten_bind_DracoFloat32Array___destroy___0:Zm,_emscripten_bind_Mesh_set_num_points_1:Op,_emscripten_bind_PointCloud_num_points_0:kq,_emscripten_enum_draco_EncodedGeometryType_TRIANGULAR_MESH:zq,_emscripten_bind_GeometryAttribute_GeometryAttribute_0:Xo,___muldsi3:Fm,_emscripten_bind_PointAttribute_data_type_0:dq,_emscripten_bind_DracoFloat32Array_size_0:xp,_emscripten_bind_GeometryAttribute___destroy___0:Gp,_emscripten_bind_MetadataBuilder___destroy___0:Gp,_malloc:Xa,_emscripten_replace_memory:La,_memmove:Om,_emscripten_bind_PointCloud_PointCloud_0:up,_emscripten_bind_Mesh___destroy___0:Fo,_emscripten_bind_Metadata___destroy___0:_o,___udivdi3:rp,_emscripten_bind_PointAttribute_byte_offset_0:aq,_bitshift64Shl:Zn,_emscripten_bind_Encoder_Encoder_0:Qp,_emscripten_bind_Encoder_SetSpeedOptions_2:Ro,___muldi3:En,___uremdi3:xn,_emscripten_bind_DracoFloat32Array_DracoFloat32Array_0:lp,_emscripten_enum_draco_GeometryAttribute_Type_GENERIC:yq,_emscripten_bind_Encoder___destroy___0:vk,_emscripten_bind_DracoFloat32Array_GetValue_1:Yo,_emscripten_bind_Encoder_EncodeMeshToDracoBuffer_2:ro,_emscripten_bind_Encoder_SetEncodingMethod_1:Lo,_emscripten_bind_PointAttribute_PointAttribute_0:ep,_emscripten_enum_draco_GeometryAttribute_Type_NORMAL:zq,stackRestore:Kq,_emscripten_bind_MeshBuilder_SetMetadataForAttribute_3:Rn,_emscripten_bind_PointAttribute___destroy___0:mk,stackAlloc:fp,stackSave:Tq,stackRestore:Kq,establishStackSpace:hq,setThrew:Kp,setTempRet0:Mq,getTempRet0:Sq,dynCall_iiii:Uo,dynCall_viiiii:to,dynCall_vi:lq,dynCall_vii:Pp,dynCall_iiiiiii:Qn,dynCall_ii:bq,dynCall_viii:dp,dynCall_v:Eq,dynCall_viiiiii:Xn,dynCall_iii:Ap,dynCall_viiii:Go}}) + + +// EMSCRIPTEN_END_ASM +(Module.asmGlobalArg,Module.asmLibraryArg,buffer);var _emscripten_bind_PointAttribute_normalized_0=Module["_emscripten_bind_PointAttribute_normalized_0"]=asm["_emscripten_bind_PointAttribute_normalized_0"];var _bitshift64Lshr=Module["_bitshift64Lshr"]=asm["_bitshift64Lshr"];var _emscripten_bind_PointAttribute_size_0=Module["_emscripten_bind_PointAttribute_size_0"]=asm["_emscripten_bind_PointAttribute_size_0"];var _emscripten_enum_draco_GeometryAttribute_Type_POSITION=Module["_emscripten_enum_draco_GeometryAttribute_Type_POSITION"]=asm["_emscripten_enum_draco_GeometryAttribute_Type_POSITION"];var _sbrk=Module["_sbrk"]=asm["_sbrk"];var _memcpy=Module["_memcpy"]=asm["_memcpy"];var _emscripten_enum_draco_GeometryAttribute_Type_INVALID=Module["_emscripten_enum_draco_GeometryAttribute_Type_INVALID"]=asm["_emscripten_enum_draco_GeometryAttribute_Type_INVALID"];var _emscripten_enum_draco_EncodedGeometryType_POINT_CLOUD=Module["_emscripten_enum_draco_EncodedGeometryType_POINT_CLOUD"]=asm["_emscripten_enum_draco_EncodedGeometryType_POINT_CLOUD"];var ___udivmoddi4=Module["___udivmoddi4"]=asm["___udivmoddi4"];var _emscripten_enum_draco_MeshEncoderMethod_MESH_EDGEBREAKER_ENCODING=Module["_emscripten_enum_draco_MeshEncoderMethod_MESH_EDGEBREAKER_ENCODING"]=asm["_emscripten_enum_draco_MeshEncoderMethod_MESH_EDGEBREAKER_ENCODING"];var _emscripten_bind_Mesh_num_faces_0=Module["_emscripten_bind_Mesh_num_faces_0"]=asm["_emscripten_bind_Mesh_num_faces_0"];var _emscripten_get_global_libc=Module["_emscripten_get_global_libc"]=asm["_emscripten_get_global_libc"];var stackSave=Module["stackSave"]=asm["stackSave"];var _emscripten_bind_MeshBuilder_AddMetadataToMesh_2=Module["_emscripten_bind_MeshBuilder_AddMetadataToMesh_2"]=asm["_emscripten_bind_MeshBuilder_AddMetadataToMesh_2"];var ___cxa_can_catch=Module["___cxa_can_catch"]=asm["___cxa_can_catch"];var _free=Module["_free"]=asm["_free"];var runPostSets=Module["runPostSets"]=asm["runPostSets"];var _emscripten_enum_draco_EncodedGeometryType_INVALID_GEOMETRY_TYPE=Module["_emscripten_enum_draco_EncodedGeometryType_INVALID_GEOMETRY_TYPE"]=asm["_emscripten_enum_draco_EncodedGeometryType_INVALID_GEOMETRY_TYPE"];var _emscripten_bind_DracoInt8Array___destroy___0=Module["_emscripten_bind_DracoInt8Array___destroy___0"]=asm["_emscripten_bind_DracoInt8Array___destroy___0"];var _emscripten_bind_PointAttribute_byte_stride_0=Module["_emscripten_bind_PointAttribute_byte_stride_0"]=asm["_emscripten_bind_PointAttribute_byte_stride_0"];var _emscripten_bind_MeshBuilder_AddFloatAttributeToMesh_5=Module["_emscripten_bind_MeshBuilder_AddFloatAttributeToMesh_5"]=asm["_emscripten_bind_MeshBuilder_AddFloatAttributeToMesh_5"];var _emscripten_bind_MeshBuilder_MeshBuilder_0=Module["_emscripten_bind_MeshBuilder_MeshBuilder_0"]=asm["_emscripten_bind_MeshBuilder_MeshBuilder_0"];var _emscripten_bind_Metadata_Metadata_0=Module["_emscripten_bind_Metadata_Metadata_0"]=asm["_emscripten_bind_Metadata_Metadata_0"];var _emscripten_bind_PointCloud_num_attributes_0=Module["_emscripten_bind_PointCloud_num_attributes_0"]=asm["_emscripten_bind_PointCloud_num_attributes_0"];var _emscripten_bind_MetadataBuilder_MetadataBuilder_0=Module["_emscripten_bind_MetadataBuilder_MetadataBuilder_0"]=asm["_emscripten_bind_MetadataBuilder_MetadataBuilder_0"];var _emscripten_bind_Mesh_Mesh_0=Module["_emscripten_bind_Mesh_Mesh_0"]=asm["_emscripten_bind_Mesh_Mesh_0"];var _emscripten_bind_MetadataBuilder_AddIntEntry_3=Module["_emscripten_bind_MetadataBuilder_AddIntEntry_3"]=asm["_emscripten_bind_MetadataBuilder_AddIntEntry_3"];var _emscripten_bind_DracoInt8Array_GetValue_1=Module["_emscripten_bind_DracoInt8Array_GetValue_1"]=asm["_emscripten_bind_DracoInt8Array_GetValue_1"];var setThrew=Module["setThrew"]=asm["setThrew"];var _emscripten_bind_PointAttribute_num_components_0=Module["_emscripten_bind_PointAttribute_num_components_0"]=asm["_emscripten_bind_PointAttribute_num_components_0"];var _emscripten_bind_MeshBuilder___destroy___0=Module["_emscripten_bind_MeshBuilder___destroy___0"]=asm["_emscripten_bind_MeshBuilder___destroy___0"];var ___cxa_is_pointer_type=Module["___cxa_is_pointer_type"]=asm["___cxa_is_pointer_type"];var _llvm_cttz_i32=Module["_llvm_cttz_i32"]=asm["_llvm_cttz_i32"];var _i64Add=Module["_i64Add"]=asm["_i64Add"];var stackAlloc=Module["stackAlloc"]=asm["stackAlloc"];var _emscripten_bind_Mesh_num_points_0=Module["_emscripten_bind_Mesh_num_points_0"]=asm["_emscripten_bind_Mesh_num_points_0"];var ___divdi3=Module["___divdi3"]=asm["___divdi3"];var _emscripten_bind_Encoder_SetAttributeQuantization_2=Module["_emscripten_bind_Encoder_SetAttributeQuantization_2"]=asm["_emscripten_bind_Encoder_SetAttributeQuantization_2"];var getTempRet0=Module["getTempRet0"]=asm["getTempRet0"];var _emscripten_enum_draco_MeshEncoderMethod_MESH_SEQUENTIAL_ENCODING=Module["_emscripten_enum_draco_MeshEncoderMethod_MESH_SEQUENTIAL_ENCODING"]=asm["_emscripten_enum_draco_MeshEncoderMethod_MESH_SEQUENTIAL_ENCODING"];var _emscripten_bind_Mesh_num_attributes_0=Module["_emscripten_bind_Mesh_num_attributes_0"]=asm["_emscripten_bind_Mesh_num_attributes_0"];var _llvm_bswap_i32=Module["_llvm_bswap_i32"]=asm["_llvm_bswap_i32"];var _emscripten_bind_PointAttribute_unique_id_0=Module["_emscripten_bind_PointAttribute_unique_id_0"]=asm["_emscripten_bind_PointAttribute_unique_id_0"];var establishStackSpace=Module["establishStackSpace"]=asm["establishStackSpace"];var _emscripten_bind_MeshBuilder_AddFacesToMesh_3=Module["_emscripten_bind_MeshBuilder_AddFacesToMesh_3"]=asm["_emscripten_bind_MeshBuilder_AddFacesToMesh_3"];var _emscripten_enum_draco_GeometryAttribute_Type_TEX_COORD=Module["_emscripten_enum_draco_GeometryAttribute_Type_TEX_COORD"]=asm["_emscripten_enum_draco_GeometryAttribute_Type_TEX_COORD"];var _bitshift64Ashr=Module["_bitshift64Ashr"]=asm["_bitshift64Ashr"];var _emscripten_bind_DracoInt8Array_size_0=Module["_emscripten_bind_DracoInt8Array_size_0"]=asm["_emscripten_bind_DracoInt8Array_size_0"];var _emscripten_bind_MetadataBuilder_AddDoubleEntry_3=Module["_emscripten_bind_MetadataBuilder_AddDoubleEntry_3"]=asm["_emscripten_bind_MetadataBuilder_AddDoubleEntry_3"];var _emscripten_bind_MetadataBuilder_AddStringEntry_3=Module["_emscripten_bind_MetadataBuilder_AddStringEntry_3"]=asm["_emscripten_bind_MetadataBuilder_AddStringEntry_3"];var _emscripten_enum_draco_GeometryAttribute_Type_COLOR=Module["_emscripten_enum_draco_GeometryAttribute_Type_COLOR"]=asm["_emscripten_enum_draco_GeometryAttribute_Type_COLOR"];var _emscripten_bind_VoidPtr___destroy___0=Module["_emscripten_bind_VoidPtr___destroy___0"]=asm["_emscripten_bind_VoidPtr___destroy___0"];var _memset=Module["_memset"]=asm["_memset"];var _emscripten_bind_PointAttribute_attribute_type_0=Module["_emscripten_bind_PointAttribute_attribute_type_0"]=asm["_emscripten_bind_PointAttribute_attribute_type_0"];var _emscripten_bind_PointCloud___destroy___0=Module["_emscripten_bind_PointCloud___destroy___0"]=asm["_emscripten_bind_PointCloud___destroy___0"];var _i64Subtract=Module["_i64Subtract"]=asm["_i64Subtract"];var setTempRet0=Module["setTempRet0"]=asm["setTempRet0"];var _emscripten_bind_DracoInt8Array_DracoInt8Array_0=Module["_emscripten_bind_DracoInt8Array_DracoInt8Array_0"]=asm["_emscripten_bind_DracoInt8Array_DracoInt8Array_0"];var _emscripten_bind_DracoFloat32Array___destroy___0=Module["_emscripten_bind_DracoFloat32Array___destroy___0"]=asm["_emscripten_bind_DracoFloat32Array___destroy___0"];var _emscripten_bind_Mesh_set_num_points_1=Module["_emscripten_bind_Mesh_set_num_points_1"]=asm["_emscripten_bind_Mesh_set_num_points_1"];var _emscripten_bind_PointCloud_num_points_0=Module["_emscripten_bind_PointCloud_num_points_0"]=asm["_emscripten_bind_PointCloud_num_points_0"];var _emscripten_enum_draco_EncodedGeometryType_TRIANGULAR_MESH=Module["_emscripten_enum_draco_EncodedGeometryType_TRIANGULAR_MESH"]=asm["_emscripten_enum_draco_EncodedGeometryType_TRIANGULAR_MESH"];var _emscripten_bind_GeometryAttribute_GeometryAttribute_0=Module["_emscripten_bind_GeometryAttribute_GeometryAttribute_0"]=asm["_emscripten_bind_GeometryAttribute_GeometryAttribute_0"];var ___muldsi3=Module["___muldsi3"]=asm["___muldsi3"];var _emscripten_bind_PointAttribute_data_type_0=Module["_emscripten_bind_PointAttribute_data_type_0"]=asm["_emscripten_bind_PointAttribute_data_type_0"];var _emscripten_bind_DracoFloat32Array_size_0=Module["_emscripten_bind_DracoFloat32Array_size_0"]=asm["_emscripten_bind_DracoFloat32Array_size_0"];var _emscripten_bind_GeometryAttribute___destroy___0=Module["_emscripten_bind_GeometryAttribute___destroy___0"]=asm["_emscripten_bind_GeometryAttribute___destroy___0"];var _emscripten_bind_MetadataBuilder___destroy___0=Module["_emscripten_bind_MetadataBuilder___destroy___0"]=asm["_emscripten_bind_MetadataBuilder___destroy___0"];var _malloc=Module["_malloc"]=asm["_malloc"];var _emscripten_replace_memory=Module["_emscripten_replace_memory"]=asm["_emscripten_replace_memory"];var _memmove=Module["_memmove"]=asm["_memmove"];var _emscripten_bind_PointCloud_PointCloud_0=Module["_emscripten_bind_PointCloud_PointCloud_0"]=asm["_emscripten_bind_PointCloud_PointCloud_0"];var _emscripten_bind_Mesh___destroy___0=Module["_emscripten_bind_Mesh___destroy___0"]=asm["_emscripten_bind_Mesh___destroy___0"];var _emscripten_bind_Metadata___destroy___0=Module["_emscripten_bind_Metadata___destroy___0"]=asm["_emscripten_bind_Metadata___destroy___0"];var ___udivdi3=Module["___udivdi3"]=asm["___udivdi3"];var _emscripten_bind_PointAttribute_byte_offset_0=Module["_emscripten_bind_PointAttribute_byte_offset_0"]=asm["_emscripten_bind_PointAttribute_byte_offset_0"];var _bitshift64Shl=Module["_bitshift64Shl"]=asm["_bitshift64Shl"];var _emscripten_bind_Encoder_Encoder_0=Module["_emscripten_bind_Encoder_Encoder_0"]=asm["_emscripten_bind_Encoder_Encoder_0"];var _emscripten_bind_Encoder_SetSpeedOptions_2=Module["_emscripten_bind_Encoder_SetSpeedOptions_2"]=asm["_emscripten_bind_Encoder_SetSpeedOptions_2"];var ___muldi3=Module["___muldi3"]=asm["___muldi3"];var ___uremdi3=Module["___uremdi3"]=asm["___uremdi3"];var _emscripten_bind_DracoFloat32Array_DracoFloat32Array_0=Module["_emscripten_bind_DracoFloat32Array_DracoFloat32Array_0"]=asm["_emscripten_bind_DracoFloat32Array_DracoFloat32Array_0"];var _emscripten_enum_draco_GeometryAttribute_Type_GENERIC=Module["_emscripten_enum_draco_GeometryAttribute_Type_GENERIC"]=asm["_emscripten_enum_draco_GeometryAttribute_Type_GENERIC"];var _emscripten_bind_Encoder___destroy___0=Module["_emscripten_bind_Encoder___destroy___0"]=asm["_emscripten_bind_Encoder___destroy___0"];var _emscripten_bind_DracoFloat32Array_GetValue_1=Module["_emscripten_bind_DracoFloat32Array_GetValue_1"]=asm["_emscripten_bind_DracoFloat32Array_GetValue_1"];var _emscripten_bind_Encoder_EncodeMeshToDracoBuffer_2=Module["_emscripten_bind_Encoder_EncodeMeshToDracoBuffer_2"]=asm["_emscripten_bind_Encoder_EncodeMeshToDracoBuffer_2"];var _emscripten_bind_Encoder_SetEncodingMethod_1=Module["_emscripten_bind_Encoder_SetEncodingMethod_1"]=asm["_emscripten_bind_Encoder_SetEncodingMethod_1"];var _emscripten_bind_PointAttribute_PointAttribute_0=Module["_emscripten_bind_PointAttribute_PointAttribute_0"]=asm["_emscripten_bind_PointAttribute_PointAttribute_0"];var _emscripten_enum_draco_GeometryAttribute_Type_NORMAL=Module["_emscripten_enum_draco_GeometryAttribute_Type_NORMAL"]=asm["_emscripten_enum_draco_GeometryAttribute_Type_NORMAL"];var stackRestore=Module["stackRestore"]=asm["stackRestore"];var _emscripten_bind_MeshBuilder_SetMetadataForAttribute_3=Module["_emscripten_bind_MeshBuilder_SetMetadataForAttribute_3"]=asm["_emscripten_bind_MeshBuilder_SetMetadataForAttribute_3"];var _emscripten_bind_PointAttribute___destroy___0=Module["_emscripten_bind_PointAttribute___destroy___0"]=asm["_emscripten_bind_PointAttribute___destroy___0"];var dynCall_iiii=Module["dynCall_iiii"]=asm["dynCall_iiii"];var dynCall_viiiii=Module["dynCall_viiiii"]=asm["dynCall_viiiii"];var dynCall_vi=Module["dynCall_vi"]=asm["dynCall_vi"];var dynCall_vii=Module["dynCall_vii"]=asm["dynCall_vii"];var dynCall_iiiiiii=Module["dynCall_iiiiiii"]=asm["dynCall_iiiiiii"];var dynCall_ii=Module["dynCall_ii"]=asm["dynCall_ii"];var dynCall_viii=Module["dynCall_viii"]=asm["dynCall_viii"];var dynCall_v=Module["dynCall_v"]=asm["dynCall_v"];var dynCall_viiiiii=Module["dynCall_viiiiii"]=asm["dynCall_viiiiii"];var dynCall_iii=Module["dynCall_iii"]=asm["dynCall_iii"];var dynCall_viiii=Module["dynCall_viiii"]=asm["dynCall_viiii"];Runtime.stackAlloc=Module["stackAlloc"];Runtime.stackSave=Module["stackSave"];Runtime.stackRestore=Module["stackRestore"];Runtime.establishStackSpace=Module["establishStackSpace"];Runtime.setTempRet0=Module["setTempRet0"];Runtime.getTempRet0=Module["getTempRet0"];Module["asm"]=asm;Module["then"]=(function(func){if(Module["calledRun"]){func(Module)}else{var old=Module["onRuntimeInitialized"];Module["onRuntimeInitialized"]=(function(){if(old)old();func(Module)})}return Module});function ExitStatus(status){this.name="ExitStatus";this.message="Program terminated with exit("+status+")";this.status=status}ExitStatus.prototype=new Error;ExitStatus.prototype.constructor=ExitStatus;var initialStackTop;var preloadStartTime=null;var calledMain=false;dependenciesFulfilled=function runCaller(){if(!Module["calledRun"])run();if(!Module["calledRun"])dependenciesFulfilled=runCaller};Module["callMain"]=Module.callMain=function callMain(args){args=args||[];ensureInitRuntime();var argc=args.length+1;function pad(){for(var i=0;i<4-1;i++){argv.push(0)}}var argv=[allocate(intArrayFromString(Module["thisProgram"]),"i8",ALLOC_NORMAL)];pad();for(var i=0;i0){return}preRun();if(runDependencies>0)return;if(Module["calledRun"])return;function doRun(){if(Module["calledRun"])return;Module["calledRun"]=true;if(ABORT)return;ensureInitRuntime();preMain();if(Module["onRuntimeInitialized"])Module["onRuntimeInitialized"]();if(Module["_main"]&&shouldRunNow)Module["callMain"](args);postRun()}if(Module["setStatus"]){Module["setStatus"]("Running...");setTimeout((function(){setTimeout((function(){Module["setStatus"]("")}),1);doRun()}),1)}else{doRun()}}Module["run"]=Module.run=run;function exit(status,implicit){if(implicit&&Module["noExitRuntime"]){return}if(Module["noExitRuntime"]){}else{ABORT=true;EXITSTATUS=status;STACKTOP=initialStackTop;exitRuntime();if(Module["onExit"])Module["onExit"](status)}if(ENVIRONMENT_IS_NODE){process["exit"](status)}Module["quit"](status,new ExitStatus(status))}Module["exit"]=Module.exit=exit;var abortDecorators=[];function abort(what){if(Module["onAbort"]){Module["onAbort"](what)}if(what!==undefined){Module.print(what);Module.printErr(what);what=JSON.stringify(what)}else{what=""}ABORT=true;EXITSTATUS=1;var extra="\nIf this abort() is unexpected, build with -s ASSERTIONS=1 which can give more information.";var output="abort("+what+") at "+stackTrace()+extra;if(abortDecorators){abortDecorators.forEach((function(decorator){output=decorator(output,what)}))}throw output}Module["abort"]=Module.abort=abort;if(Module["preInit"]){if(typeof Module["preInit"]=="function")Module["preInit"]=[Module["preInit"]];while(Module["preInit"].length>0){Module["preInit"].pop()()}}var shouldRunNow=true;if(Module["noInitialRun"]){shouldRunNow=false}run();function WrapperObject(){}WrapperObject.prototype=Object.create(WrapperObject.prototype);WrapperObject.prototype.constructor=WrapperObject;WrapperObject.prototype.__class__=WrapperObject;WrapperObject.__cache__={};Module["WrapperObject"]=WrapperObject;function getCache(__class__){return(__class__||WrapperObject).__cache__}Module["getCache"]=getCache;function wrapPointer(ptr,__class__){var cache=getCache(__class__);var ret=cache[ptr];if(ret)return ret;ret=Object.create((__class__||WrapperObject).prototype);ret.ptr=ptr;return cache[ptr]=ret}Module["wrapPointer"]=wrapPointer;function castObject(obj,__class__){return wrapPointer(obj.ptr,__class__)}Module["castObject"]=castObject;Module["NULL"]=wrapPointer(0);function destroy(obj){if(!obj["__destroy__"])throw"Error: Cannot destroy object. (Did you create it yourself?)";obj["__destroy__"]();delete getCache(obj.__class__)[obj.ptr]}Module["destroy"]=destroy;function compare(obj1,obj2){return obj1.ptr===obj2.ptr}Module["compare"]=compare;function getPointer(obj){return obj.ptr}Module["getPointer"]=getPointer;function getClass(obj){return obj.__class__}Module["getClass"]=getClass;var ensureCache={buffer:0,size:0,pos:0,temps:[],needed:0,prepare:(function(){if(ensureCache.needed){for(var i=0;i=ensureCache.size){assert(len>0);ensureCache.needed+=len;ret=Module["_malloc"](len);ensureCache.temps.push(ret)}else{ret=ensureCache.buffer+ensureCache.pos;ensureCache.pos+=len}return ret}),copy:(function(array,view,offset){var offsetShifted=offset;var bytes=view.BYTES_PER_ELEMENT;switch(bytes){case 2:offsetShifted>>=1;break;case 4:offsetShifted>>=2;break;case 8:offsetShifted>>=3;break}for(var i=0;i -1) { + console.log("Adding normal attribute."); + const norAttribute = decoder.GetAttribute(mesh, normalAttId); + const norAttributeData = new decoderModule.DracoFloat32Array(); + decoder.GetAttributeFloatForAllPoints(mesh, norAttribute, + norAttributeData); + const normals = new Float32Array(numVertexCoord); + for (let i = 0; i < numVertexCoord; i += 3) { + normals[i] = norAttributeData.GetValue(i); + normals[i + 1] = norAttributeData.GetValue(i + 1); + normals[i + 2] = norAttributeData.GetValue(i + 2); + } + decoderModule.destroy(norAttributeData); + meshBuilder.AddFloatAttributeToMesh(newMesh, encoderModule.NORMAL, + numPoints, 3, normals); + } + + const texAttId = decoder.GetAttributeId(mesh, decoderModule.TEX_COORD); + if (texAttId > -1) { + const texAttribute = decoder.GetAttribute(mesh, texAttId); + const texAttributeData = new decoderModule.DracoFloat32Array(); + decoder.GetAttributeFloatForAllPoints(mesh, texAttribute, + texAttributeData); + assertEquals(numVertexCoord, texAttributeData.size()); + const texcoords = new Float32Array(numVertexCoord); + for (let i = 0; i < numVertexCoord; i += 3) { + texcoords[i] = texAttributeData.GetValue(i); + texcoords[i + 1] = texAttributeData.GetValue(i + 1); + texcoords[i + 2] = texAttributeData.GetValue(i + 2); + } + decoderModule.destroy(texAttributeData); + meshBuilder.AddFloatAttributeToMesh(newMesh, encoderModule.TEX_COORD, + numPoints, 3, normals); + } + + const colorAttId = decoder.GetAttributeId(mesh, decoderModule.COLOR); + if (colorAttId > -1) { + const colAttribute = decoder.GetAttribute(mesh, colorAttId); + const colAttributeData = new decoderModule.DracoFloat32Array(); + decoder.GetAttributeFloatForAllPoints(mesh, colAttribute, + colAttributeData); + assertEquals(numVertexCoord, colAttributeData.size()); + const colors = new Float32Array(numVertexCoord); + for (let i = 0; i < numVertexCoord; i += 3) { + colors[i] = colAttributeData.GetValue(i); + colors[i + 1] = colAttributeData.GetValue(i + 1); + colors[i + 2] = colAttributeData.GetValue(i + 2); + } + decoderModule.destroy(colAttributeData); + meshBuilder.AddFloatAttributeToMesh(newMesh, encoderModule.COLOR, + numPoints, 3, normals); + } + + let encodedData = new encoderModule.DracoInt8Array(); + // Set encoding options. + encoder.SetSpeedOptions(5, 5); + encoder.SetAttributeQuantization(encoderModule.POSITION, 10); + encoder.SetEncodingMethod(encoderModule.MESH_EDGEBREAKER_ENCODING); + + // Encoding. + console.log("Encoding..."); + const encodedLen = encoder.EncodeMeshToDracoBuffer(newMesh, + encodedData); + encoderModule.destroy(newMesh); + + if (encodedLen > 0) { + console.log("Encoded size is " + encodedLen); + } else { + console.log("Error: Encoding failed."); + } + // Copy encoded data to buffer. + let outputBuffer = new ArrayBuffer(encodedLen); + let outputData = new Int8Array(outputBuffer); + for (let i = 0; i < encodedLen; ++i) { + outputData[i] = encodedData.GetValue(i); + } + encoderModule.destroy(encodedData); + encoderModule.destroy(encoder); + encoderModule.destroy(meshBuilder); + // Write to file. You can view the the file using webgl_loader_draco.html + // example. + fs.writeFile("bunny_10.drc", Buffer(outputBuffer), "binary", function(err) { + if(err) { + console.log(err); + } else { + console.log("The file was saved!"); + } + }); +} + diff --git a/javascript/npm/draco3d/package.json b/javascript/npm/draco3d/package.json new file mode 100644 index 00000000..7fb37541 --- /dev/null +++ b/javascript/npm/draco3d/package.json @@ -0,0 +1,17 @@ +{ + "name": "draco3d", + "version": "1.0.2", + "description": "Draco is a library for compressing and decompressing 3D geometric meshes and point clouds. It is intended to improve the storage and transmission of 3D graphics.", + "main": "draco3d.js", + "scripts": { + "test": "nodejs draco_nodejs_example.js" + }, + "keywords": [ + "geometry", + "compression", + "mesh", + "point cloud" + ], + "author": "Google Draco Team", + "license": "Apache-2.0" +} diff --git a/javascript/time_draco_decode.html b/javascript/time_draco_decode.html index ba25214f..deabba58 100644 --- a/javascript/time_draco_decode.html +++ b/javascript/time_draco_decode.html @@ -149,15 +149,15 @@ const buffer = new dracoDecoder.DecoderBuffer(); buffer.Init(byteArray, byteArray.length); - const wrapper = new dracoDecoder.WebIDLWrapper(); + const decoder = new dracoDecoder.Decoder(); const decode_t0 = performance.now(); - const geometryType = wrapper.GetEncodedGeometryType(buffer); + const geometryType = decoder.GetEncodedGeometryType(buffer); let outputGeometry; if (geometryType == dracoDecoder.TRIANGULAR_MESH) { - outputGeometry = wrapper.DecodeMeshFromBuffer(buffer); + outputGeometry = decoder.DecodeMeshFromBuffer(buffer); } else { - outputGeometry = wrapper.DecodePointCloudFromBuffer(buffer); + outputGeometry = decoder.DecodePointCloudFromBuffer(buffer); } const t1 = performance.now(); @@ -168,7 +168,7 @@ addCell('' + outputGeometry.num_points(), false); dracoDecoder.destroy(outputGeometry); - dracoDecoder.destroy(wrapper); + dracoDecoder.destroy(decoder); dracoDecoder.destroy(buffer); if (index < filenameList.length - 1) { diff --git a/src/draco/attributes/attribute_octahedron_transform.cc b/src/draco/attributes/attribute_octahedron_transform.cc new file mode 100644 index 00000000..885ffdbf --- /dev/null +++ b/src/draco/attributes/attribute_octahedron_transform.cc @@ -0,0 +1,84 @@ +// Copyright 2017 The Draco Authors. +// +// Licensed under the Apache License, Version 2.0 (the "License"); +// you may not use this file except in compliance with the License. +// You may obtain a copy of the License at +// +// http://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an "AS IS" BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// See the License for the specific language governing permissions and +// limitations under the License. +// + +#include "draco/attributes/attribute_octahedron_transform.h" + +#include "draco/attributes/attribute_transform_type.h" +#include "draco/compression/attributes/normal_compression_utils.h" + +namespace draco { + +bool AttributeOctahedronTransform::InitFromAttribute( + const PointAttribute &attribute) { + const AttributeTransformData *const transform_data = + attribute.GetAttributeTransformData(); + if (!transform_data || + transform_data->transform_type() != ATTRIBUTE_OCTAHEDRON_TRANSFORM) + return false; // Wrong transform type. + quantization_bits_ = transform_data->GetParameterValue(0); + return true; +} + +void AttributeOctahedronTransform::CopyToAttributeTransformData( + AttributeTransformData *out_data) const { + out_data->set_transform_type(ATTRIBUTE_OCTAHEDRON_TRANSFORM); + out_data->AppendParameterValue(quantization_bits_); +} + +void AttributeOctahedronTransform::SetParameters(int quantization_bits) { + quantization_bits_ = quantization_bits; +} + +bool AttributeOctahedronTransform::EncodeParameters( + EncoderBuffer *encoder_buffer) const { + if (is_initialized()) { + encoder_buffer->Encode(static_cast(quantization_bits_)); + return true; + } + return false; +} + +std::unique_ptr +AttributeOctahedronTransform::GeneratePortableAttribute( + const PointAttribute &attribute, const std::vector &point_ids, + int num_points) const { + DCHECK(is_initialized()); + + // Allocate portable attribute. + const int num_entries = point_ids.size(); + std::unique_ptr portable_attribute = + InitPortableAttribute(num_entries, 2, num_points, attribute); + + // Quantize all values in the order given by point_ids into portable + // attribute. + int32_t *const portable_attribute_data = reinterpret_cast( + portable_attribute->GetAddress(AttributeValueIndex(0))); + float att_val[3]; + int32_t dst_index = 0; + const OctahedronToolBox converter(quantization_bits_); + for (uint32_t i = 0; i < point_ids.size(); ++i) { + const AttributeValueIndex att_val_id = attribute.mapped_index(point_ids[i]); + attribute.GetValue(att_val_id, att_val); + // Encode the vector into a s and t octahedral coordinates. + int32_t s, t; + converter.FloatVectorToQuantizedOctahedralCoords(att_val, &s, &t); + portable_attribute_data[dst_index++] = s; + portable_attribute_data[dst_index++] = t; + } + + return portable_attribute; +} + +} // namespace draco diff --git a/src/draco/attributes/attribute_octahedron_transform.h b/src/draco/attributes/attribute_octahedron_transform.h new file mode 100644 index 00000000..6e4e7428 --- /dev/null +++ b/src/draco/attributes/attribute_octahedron_transform.h @@ -0,0 +1,60 @@ +// Copyright 2017 The Draco Authors. +// +// Licensed under the Apache License, Version 2.0 (the "License"); +// you may not use this file except in compliance with the License. +// You may obtain a copy of the License at +// +// http://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an "AS IS" BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// See the License for the specific language governing permissions and +// limitations under the License. +// + +#ifndef DRACO_ATTRIBUTES_ATTRIBUTE_OCTAHEDRON_TRANSFORM_H_ +#define DRACO_ATTRIBUTES_ATTRIBUTE_OCTAHEDRON_TRANSFORM_H_ + +#include "draco/attributes/attribute_transform.h" +#include "draco/attributes/point_attribute.h" +#include "draco/core/encoder_buffer.h" + +namespace draco { + +// Attribute transform for attributes transformed to octahedral coordinates. +class AttributeOctahedronTransform : public AttributeTransform { + public: + AttributeOctahedronTransform() : quantization_bits_(-1) {} + + // Return attribute transform type. + AttributeTransformType Type() const override { + return ATTRIBUTE_OCTAHEDRON_TRANSFORM; + } + // Try to init transform from attribute. + bool InitFromAttribute(const PointAttribute &attribute) override; + // Copy parameter values into the provided AttributeTransformData instance. + void CopyToAttributeTransformData( + AttributeTransformData *out_data) const override; + + // Set number of quantization bits. + void SetParameters(int quantization_bits); + + // Encode relevant parameters into buffer. + bool EncodeParameters(EncoderBuffer *encoder_buffer) const; + + bool is_initialized() const { return quantization_bits_ != -1; } + int32_t quantization_bits() const { return quantization_bits_; } + + // Create portable attribute. + std::unique_ptr GeneratePortableAttribute( + const PointAttribute &attribute, const std::vector &point_ids, + int num_points) const; + + private: + int32_t quantization_bits_; +}; + +} // namespace draco + +#endif // DRACO_ATTRIBUTES_ATTRIBUTE_OCTAHEDRON_TRANSFORM_H_ diff --git a/src/draco/attributes/attribute_quantization_transform.cc b/src/draco/attributes/attribute_quantization_transform.cc new file mode 100644 index 00000000..27ae88a4 --- /dev/null +++ b/src/draco/attributes/attribute_quantization_transform.cc @@ -0,0 +1,141 @@ + +// Copyright 2017 The Draco Authors. +// +// Licensed under the Apache License, Version 2.0 (the "License"); +// you may not use this file except in compliance with the License. +// You may obtain a copy of the License at +// +// http://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an "AS IS" BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// See the License for the specific language governing permissions and +// limitations under the License. +// +#include "draco/attributes/attribute_quantization_transform.h" + +#include "draco/attributes/attribute_transform_type.h" +#include "draco/core/quantization_utils.h" + +namespace draco { + +bool AttributeQuantizationTransform::InitFromAttribute( + const PointAttribute &attribute) { + const AttributeTransformData *const transform_data = + attribute.GetAttributeTransformData(); + if (!transform_data || + transform_data->transform_type() != ATTRIBUTE_QUANTIZATION_TRANSFORM) + return false; // Wrong transform type. + int32_t byte_offset = 0; + quantization_bits_ = transform_data->GetParameterValue(byte_offset); + byte_offset += 4; + min_values_.resize(attribute.num_components()); + for (int i = 0; i < attribute.num_components(); ++i) { + min_values_[i] = transform_data->GetParameterValue(byte_offset); + byte_offset += 4; + } + range_ = transform_data->GetParameterValue(byte_offset); + return true; +} + +// Copy parameter values into the provided AttributeTransformData instance. +void AttributeQuantizationTransform::CopyToAttributeTransformData( + AttributeTransformData *out_data) const { + out_data->set_transform_type(ATTRIBUTE_QUANTIZATION_TRANSFORM); + out_data->AppendParameterValue(quantization_bits_); + for (int i = 0; i < min_values_.size(); ++i) { + out_data->AppendParameterValue(min_values_[i]); + } + out_data->AppendParameterValue(range_); +} + +void AttributeQuantizationTransform::SetParameters(int quantization_bits, + const float *min_values, + int num_components, + float range) { + quantization_bits_ = quantization_bits; + min_values_.assign(min_values, min_values + num_components); + range_ = range; +} + +bool AttributeQuantizationTransform::ComputeParameters( + const PointAttribute &attribute, const int quantization_bits) { + if (quantization_bits_ != -1) { + return false; // already initialized. + } + quantization_bits_ = quantization_bits; + + const int num_components = attribute.num_components(); + range_ = 0.f; + min_values_ = std::vector(num_components, 0.f); + const std::unique_ptr max_values(new float[num_components]); + const std::unique_ptr att_val(new float[num_components]); + // Compute minimum values and max value difference. + attribute.GetValue(AttributeValueIndex(0), att_val.get()); + attribute.GetValue(AttributeValueIndex(0), min_values_.data()); + attribute.GetValue(AttributeValueIndex(0), max_values.get()); + + for (AttributeValueIndex i(1); i < attribute.size(); ++i) { + attribute.GetValue(i, att_val.get()); + for (int c = 0; c < num_components; ++c) { + if (min_values_[c] > att_val[c]) + min_values_[c] = att_val[c]; + if (max_values[c] < att_val[c]) + max_values[c] = att_val[c]; + } + } + for (int c = 0; c < num_components; ++c) { + const float dif = max_values[c] - min_values_[c]; + if (dif > range_) + range_ = dif; + } + + return true; +} + +bool AttributeQuantizationTransform::EncodeParameters( + EncoderBuffer *encoder_buffer) const { + if (is_initialized()) { + encoder_buffer->Encode(min_values_.data(), + sizeof(float) * min_values_.size()); + encoder_buffer->Encode(range_); + encoder_buffer->Encode(static_cast(quantization_bits_)); + return true; + } + return false; +} + +std::unique_ptr +AttributeQuantizationTransform::GeneratePortableAttribute( + const PointAttribute &attribute, const std::vector &point_ids, + int num_points) const { + DCHECK(is_initialized()); + + // Allocate portable attribute. + const int num_entries = point_ids.size(); + const int num_components = attribute.num_components(); + std::unique_ptr portable_attribute = + InitPortableAttribute(num_entries, num_components, num_points, attribute); + + // Quantize all values using the order given by point_ids. + int32_t *const portable_attribute_data = reinterpret_cast( + portable_attribute->GetAddress(AttributeValueIndex(0))); + const uint32_t max_quantized_value = (1 << (quantization_bits_)) - 1; + Quantizer quantizer; + quantizer.Init(range(), max_quantized_value); + int32_t dst_index = 0; + const std::unique_ptr att_val(new float[num_components]); + for (uint32_t i = 0; i < point_ids.size(); ++i) { + const AttributeValueIndex att_val_id = attribute.mapped_index(point_ids[i]); + attribute.GetValue(att_val_id, att_val.get()); + for (int c = 0; c < num_components; ++c) { + const float value = (att_val[c] - min_values()[c]); + const int32_t q_val = quantizer.QuantizeFloat(value); + portable_attribute_data[dst_index++] = q_val; + } + } + return portable_attribute; +} + +} // namespace draco diff --git a/src/draco/attributes/attribute_quantization_transform.h b/src/draco/attributes/attribute_quantization_transform.h new file mode 100644 index 00000000..81030525 --- /dev/null +++ b/src/draco/attributes/attribute_quantization_transform.h @@ -0,0 +1,72 @@ +// Copyright 2017 The Draco Authors. +// +// Licensed under the Apache License, Version 2.0 (the "License"); +// you may not use this file except in compliance with the License. +// You may obtain a copy of the License at +// +// http://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an "AS IS" BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// See the License for the specific language governing permissions and +// limitations under the License. +// +#ifndef DRACO_ATTRIBUTES_ATTRIBUTE_QUANTIZATION_TRANSFORM_H_ +#define DRACO_ATTRIBUTES_ATTRIBUTE_QUANTIZATION_TRANSFORM_H_ + +#include + +#include "draco/attributes/attribute_transform.h" +#include "draco/attributes/point_attribute.h" +#include "draco/core/encoder_buffer.h" + +namespace draco { + +// Attribute transform for quantized attributes. +class AttributeQuantizationTransform : public AttributeTransform { + public: + AttributeQuantizationTransform() : quantization_bits_(-1), range_(0.f) {} + // Return attribute transform type. + AttributeTransformType Type() const override { + return ATTRIBUTE_QUANTIZATION_TRANSFORM; + } + // Try to init transform from attribute. + bool InitFromAttribute(const PointAttribute &attribute) override; + // Copy parameter values into the provided AttributeTransformData instance. + void CopyToAttributeTransformData( + AttributeTransformData *out_data) const override; + + void SetParameters(int quantization_bits, const float *min_values, + int num_components, float range); + + bool ComputeParameters(const PointAttribute &attribute, + const int quantization_bits); + + // Encode relevant parameters into buffer. + bool EncodeParameters(EncoderBuffer *encoder_buffer) const; + + int32_t quantization_bits() const { return quantization_bits_; } + float min_value(int axis) const { return min_values_[axis]; } + const std::vector &min_values() const { return min_values_; } + float range() const { return range_; } + bool is_initialized() const { return quantization_bits_ != -1; } + + // Create portable attribute. + std::unique_ptr GeneratePortableAttribute( + const PointAttribute &attribute, const std::vector &point_ids, + int num_points) const; + + private: + int32_t quantization_bits_; + + // Minimal dequantized value for each component of the attribute. + std::vector min_values_; + + // Bounds of the dequantized attribute (max delta over all components). + float range_; +}; + +} // namespace draco + +#endif // DRACO_COMPRESSION_ATTRIBUTES_ATTRIBUTE_DEQUANTIZATION_TRANSFORM_H_ diff --git a/src/draco/attributes/attribute_transform.cc b/src/draco/attributes/attribute_transform.cc new file mode 100644 index 00000000..d2d4eaff --- /dev/null +++ b/src/draco/attributes/attribute_transform.cc @@ -0,0 +1,41 @@ +// Copyright 2017 The Draco Authors. +// +// Licensed under the Apache License, Version 2.0 (the "License"); +// you may not use this file except in compliance with the License. +// You may obtain a copy of the License at +// +// http://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an "AS IS" BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// See the License for the specific language governing permissions and +// limitations under the License. +// +#include "draco/attributes/attribute_transform.h" + +namespace draco { + +bool AttributeTransform::TransferToAttribute(PointAttribute *attribute) const { + std::unique_ptr transform_data( + new AttributeTransformData()); + this->CopyToAttributeTransformData(transform_data.get()); + attribute->SetAttributeTransformData(std::move(transform_data)); + return true; +} + +std::unique_ptr AttributeTransform::InitPortableAttribute( + int num_entries, int num_components, int num_points, + const PointAttribute &attribute) const { + GeometryAttribute va; + va.Init(attribute.attribute_type(), nullptr, num_components, DT_INT32, false, + num_components * DataTypeLength(DT_INT32), 0); + std::unique_ptr portable_attribute(new PointAttribute(va)); + portable_attribute->Reset(num_entries); + if (num_points) { + portable_attribute->SetExplicitMapping(num_points); + } + return portable_attribute; +} + +} // namespace draco diff --git a/src/draco/attributes/attribute_transform.h b/src/draco/attributes/attribute_transform.h new file mode 100644 index 00000000..0b4c3497 --- /dev/null +++ b/src/draco/attributes/attribute_transform.h @@ -0,0 +1,46 @@ +// Copyright 2017 The Draco Authors. +// +// Licensed under the Apache License, Version 2.0 (the "License"); +// you may not use this file except in compliance with the License. +// You may obtain a copy of the License at +// +// http://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an "AS IS" BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// See the License for the specific language governing permissions and +// limitations under the License. +// +#ifndef DRACO_ATTRIBUTES_ATTRIBUTE_TRANSFORM_H_ +#define DRACO_ATTRIBUTES_ATTRIBUTE_TRANSFORM_H_ + +#include "draco/attributes/attribute_transform_data.h" +#include "draco/attributes/point_attribute.h" + +namespace draco { + +// Virtual base class for various attribute transforms, enforcing common +// interface where possible. +class AttributeTransform { + public: + virtual ~AttributeTransform() = default; + + // Return attribute transform type. + virtual AttributeTransformType Type() const = 0; + // Try to init transform from attribute. + virtual bool InitFromAttribute(const PointAttribute &attribute) = 0; + // Copy parameter values into the provided AttributeTransformData instance. + virtual void CopyToAttributeTransformData( + AttributeTransformData *out_data) const = 0; + bool TransferToAttribute(PointAttribute *attribute) const; + + protected: + std::unique_ptr InitPortableAttribute( + int num_entries, int num_components, int num_points, + const PointAttribute &attribute) const; +}; + +} // namespace draco + +#endif // DRACO_ATTRIBUTES_ATTRIBUTE_OCTAHEDRON_TRANSFORM_H_ diff --git a/src/draco/attributes/attribute_transform_data.h b/src/draco/attributes/attribute_transform_data.h new file mode 100644 index 00000000..4e8fa652 --- /dev/null +++ b/src/draco/attributes/attribute_transform_data.h @@ -0,0 +1,71 @@ +// Copyright 2017 The Draco Authors. +// +// Licensed under the Apache License, Version 2.0 (the "License"); +// you may not use this file except in compliance with the License. +// You may obtain a copy of the License at +// +// http://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an "AS IS" BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// See the License for the specific language governing permissions and +// limitations under the License. +// +#ifndef DRACO_ATTRIBUTES_ATTRIBUTE_TRANSFORM_DATA_H_ +#define DRACO_ATTRIBUTES_ATTRIBUTE_TRANSFORM_DATA_H_ + +#include + +#include "draco/attributes/attribute_transform_type.h" +#include "draco/core/data_buffer.h" + +namespace draco { + +// Class for holding parameter values for an attribute transform of a +// PointAttribute. This can be for example quantization data for an attribute +// that holds quantized values. This class provides only a basic storage for +// attribute transform parameters and it should be accessed only through wrapper +// classes for a specific transform (e.g. AttributeQuantizationTransform). +class AttributeTransformData { + public: + AttributeTransformData() : transform_type_(ATTRIBUTE_INVALID_TRANSFORM) {} + AttributeTransformData(const AttributeTransformData &data) = default; + + // Returns the type of the attribute transform that is described by the class. + AttributeTransformType transform_type() const { return transform_type_; } + void set_transform_type(AttributeTransformType type) { + transform_type_ = type; + } + + // Returns a parameter value on a given |byte_offset|. + template + DataTypeT GetParameterValue(int byte_offset) const { + DataTypeT out_data; + buffer_.Read(byte_offset, &out_data, sizeof(DataTypeT)); + return out_data; + } + + // Sets a parameter value on a given |byte_offset|. + template + void SetParameterValue(int byte_offset, const DataTypeT &in_data) { + if (byte_offset + sizeof(DataTypeT) > buffer_.data_size()) { + buffer_.Resize(byte_offset + sizeof(DataTypeT)); + } + buffer_.Write(byte_offset, &in_data, sizeof(DataTypeT)); + } + + // Sets a parameter value at the end of the |buffer_|. + template + void AppendParameterValue(const DataTypeT &in_data) { + SetParameterValue(buffer_.data_size(), in_data); + } + + private: + AttributeTransformType transform_type_; + DataBuffer buffer_; +}; + +} // namespace draco + +#endif // DRACO_ATTRIBUTES_ATTRIBUTE_TRANSFORM_DATA_H_ diff --git a/src/draco/attributes/attribute_transform_type.h b/src/draco/attributes/attribute_transform_type.h new file mode 100644 index 00000000..51ce6f33 --- /dev/null +++ b/src/draco/attributes/attribute_transform_type.h @@ -0,0 +1,30 @@ +// Copyright 2017 The Draco Authors. +// +// Licensed under the Apache License, Version 2.0 (the "License"); +// you may not use this file except in compliance with the License. +// You may obtain a copy of the License at +// +// http://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an "AS IS" BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// See the License for the specific language governing permissions and +// limitations under the License. +// +#ifndef DRACO_ATTRIBUTES_ATTRIBUTE_TRANSFORM_TYPE_H_ +#define DRACO_ATTRIBUTES_ATTRIBUTE_TRANSFORM_TYPE_H_ + +namespace draco { + +// List of all currently supported attribute transforms. +enum AttributeTransformType { + ATTRIBUTE_INVALID_TRANSFORM = -1, + ATTRIBUTE_NO_TRANSFORM = 0, + ATTRIBUTE_QUANTIZATION_TRANSFORM = 1, + ATTRIBUTE_OCTAHEDRON_TRANSFORM = 2, +}; + +} // namespace draco + +#endif // DRACO_ATTRIBUTES_ATTRIBUTE_TRANSFORM_TYPE_H_ diff --git a/point_cloud/geometry_attribute.cc b/src/draco/attributes/geometry_attribute.cc similarity index 68% rename from point_cloud/geometry_attribute.cc rename to src/draco/attributes/geometry_attribute.cc index b8cc7abf..914a85d9 100644 --- a/point_cloud/geometry_attribute.cc +++ b/src/draco/attributes/geometry_attribute.cc @@ -12,7 +12,7 @@ // See the License for the specific language governing permissions and // limitations under the License. // -#include "point_cloud/geometry_attribute.h" +#include "draco/attributes/geometry_attribute.h" using std::array; @@ -20,15 +20,15 @@ namespace draco { GeometryAttribute::GeometryAttribute() : buffer_(nullptr), - components_count_(1), + num_components_(1), data_type_(DT_FLOAT32), byte_stride_(0), byte_offset_(0), attribute_type_(INVALID), - custom_id_(0) {} + unique_id_(0) {} void GeometryAttribute::Init(GeometryAttribute::Type attribute_type, - const DataBuffer *buffer, int8_t components_count, + DataBuffer *buffer, int8_t num_components, DataType data_type, bool normalized, int64_t byte_stride, int64_t byte_offset) { buffer_ = buffer; @@ -36,7 +36,7 @@ void GeometryAttribute::Init(GeometryAttribute::Type attribute_type, buffer_descriptor_.buffer_id = buffer->buffer_id(); buffer_descriptor_.buffer_update_count = buffer->update_count(); } - components_count_ = components_count; + num_components_ = num_components; data_type_ = data_type; normalized_ = normalized; byte_stride_ = byte_stride; @@ -44,17 +44,31 @@ void GeometryAttribute::Init(GeometryAttribute::Type attribute_type, attribute_type_ = attribute_type; } +bool GeometryAttribute::CopyFrom(const GeometryAttribute &src_att) { + if (buffer_ == nullptr || src_att.buffer_ == nullptr) + return false; + buffer_->Update(src_att.buffer_->data(), src_att.buffer_->data_size()); + num_components_ = src_att.num_components_; + data_type_ = src_att.data_type_; + normalized_ = src_att.normalized_; + byte_stride_ = src_att.byte_stride_; + byte_offset_ = src_att.byte_offset_; + attribute_type_ = src_att.attribute_type_; + buffer_descriptor_ = src_att.buffer_descriptor_; + return true; +} + bool GeometryAttribute::operator==(const GeometryAttribute &va) const { if (attribute_type_ != va.attribute_type_) return false; - // It's ok to compare just the buffer descriptors here. We don't need to + // It's OK to compare just the buffer descriptors here. We don't need to // compare the buffers themselves. if (buffer_descriptor_.buffer_id != va.buffer_descriptor_.buffer_id) return false; if (buffer_descriptor_.buffer_update_count != va.buffer_descriptor_.buffer_update_count) return false; - if (components_count_ != va.components_count_) + if (num_components_ != va.num_components_) return false; if (data_type_ != va.data_type_) return false; @@ -65,8 +79,8 @@ bool GeometryAttribute::operator==(const GeometryAttribute &va) const { return true; } -void GeometryAttribute::ResetBuffer(const DataBuffer *buffer, - int64_t byte_stride, int64_t byte_offset) { +void GeometryAttribute::ResetBuffer(DataBuffer *buffer, int64_t byte_stride, + int64_t byte_offset) { buffer_ = buffer; buffer_descriptor_.buffer_id = buffer->buffer_id(); buffer_descriptor_.buffer_update_count = buffer->update_count(); diff --git a/point_cloud/geometry_attribute.h b/src/draco/attributes/geometry_attribute.h similarity index 88% rename from point_cloud/geometry_attribute.h rename to src/draco/attributes/geometry_attribute.h index cb08a591..e4c8e872 100644 --- a/point_cloud/geometry_attribute.h +++ b/src/draco/attributes/geometry_attribute.h @@ -12,15 +12,15 @@ // See the License for the specific language governing permissions and // limitations under the License. // -#ifndef DRACO_POINT_CLOUD_GEOMETRY_ATTRIBUTE_H_ -#define DRACO_POINT_CLOUD_GEOMETRY_ATTRIBUTE_H_ +#ifndef DRACO_ATTRIBUTES_GEOMETRY_ATTRIBUTE_H_ +#define DRACO_ATTRIBUTES_GEOMETRY_ATTRIBUTE_H_ #include #include -#include "core/data_buffer.h" -#include "core/hash_utils.h" -#include "point_cloud/geometry_indices.h" +#include "draco/attributes/geometry_indices.h" +#include "draco/core/data_buffer.h" +#include "draco/core/hash_utils.h" namespace draco { @@ -58,11 +58,16 @@ class GeometryAttribute { GeometryAttribute(); // Initializes and enables the attribute. - void Init(Type attribute_type, const DataBuffer *buffer, - int8_t components_count, DataType data_type, bool normalized, - int64_t byte_stride, int64_t byte_offset); + void Init(Type attribute_type, DataBuffer *buffer, int8_t num_components, + DataType data_type, bool normalized, int64_t byte_stride, + int64_t byte_offset); bool IsValid() const { return buffer_ != nullptr; } + // Copies data from the source attribute to the this attribute. + // This attribute must have a valid buffer allocated otherwise the operation + // is going to fail and return false. + bool CopyFrom(const GeometryAttribute &src_att); + // Function for getting a attribute value with a specific format. // Unsafe. Caller must ensure the accessed memory is valid. // T is the attribute data type. @@ -86,6 +91,10 @@ class GeometryAttribute { const int64_t byte_pos = GetBytePos(att_index); return buffer_->data() + byte_pos; } + inline uint8_t *GetAddress(AttributeValueIndex att_index) { + const int64_t byte_pos = GetBytePos(att_index); + return buffer_->data() + byte_pos; + } // Fills out_data with the raw value of the requested attribute entry. // out_data must be at least byte_stride_ long. @@ -137,7 +146,7 @@ class GeometryAttribute { // Returns false when the conversion failed. template bool ConvertValue(AttributeValueIndex att_index, OutT *out_value) const { - switch (components_count_) { + switch (num_components_) { case 1: return ConvertValue(att_index, out_value); case 2: @@ -162,7 +171,7 @@ class GeometryAttribute { // Returns the number of components that are stored for each entry. // For position attribute this is usually three (x,y,z), // while texture coordinates have two components (u,v). - int8_t components_count() const { return components_count_; } + int8_t num_components() const { return num_components_; } // Indicates whether the data type should be normalized before interpretation, // that is, it should be divided by the max value of the data type. bool normalized() const { return normalized_; } @@ -175,12 +184,12 @@ class GeometryAttribute { int64_t byte_offset() const { return byte_offset_; } void set_byte_offset(int64_t byte_offset) { byte_offset_ = byte_offset; } DataBufferDescriptor buffer_descriptor() const { return buffer_descriptor_; } - uint16_t custom_id() const { return custom_id_; } - void set_custom_id(uint16_t id) { custom_id_ = id; } + uint32_t unique_id() const { return unique_id_; } + void set_unique_id(uint32_t id) { unique_id_ = id; } protected: // Sets a new internal storage for the attribute. - void ResetBuffer(const DataBuffer *buffer, int64_t byte_stride, + void ResetBuffer(DataBuffer *buffer, int64_t byte_stride, int64_t byte_offset); private: @@ -221,7 +230,7 @@ class GeometryAttribute { bool ConvertTypedValue(AttributeValueIndex att_index, OutT *out_value) const { // Select the right method to call based on the number of attribute // components. - switch (components_count_) { + switch (num_components_) { case 1: ConvertTypedValue(att_index, out_value); break; @@ -240,12 +249,12 @@ class GeometryAttribute { return true; } - const DataBuffer *buffer_; + DataBuffer *buffer_; // The buffer descriptor is stored at the time the buffer is attached to this // attribute. The purpose is to detect if any changes happened to the buffer // since the time it was attached. DataBufferDescriptor buffer_descriptor_; - int8_t components_count_; + int8_t num_components_; DataType data_type_; bool normalized_; int64_t byte_stride_; @@ -253,9 +262,10 @@ class GeometryAttribute { Type attribute_type_; - // User defined 16-bit id that can be for example used to identify generic - // attributes. By default |custom_id_| == 0. - uint16_t custom_id_; + // Unique id of this attribute. No two attributes could have the same unique + // id. It is used to identify each attribute, especially when there are + // multiple attribute of the same type in a point cloud. + uint32_t unique_id_; friend struct GeometryAttributeHasher; }; @@ -267,7 +277,7 @@ struct GeometryAttributeHasher { size_t operator()(const GeometryAttribute &va) const { size_t hash = HashCombine(va.buffer_descriptor_.buffer_id, va.buffer_descriptor_.buffer_update_count); - hash = HashCombine(va.components_count_, hash); + hash = HashCombine(va.num_components_, hash); hash = HashCombine((int8_t)va.data_type_, hash); hash = HashCombine((int8_t)va.attribute_type_, hash); hash = HashCombine(va.byte_stride_, hash); @@ -284,4 +294,4 @@ struct GeometryAttributeTypeHasher { } // namespace draco -#endif // DRACO_POINT_CLOUD_GEOMETRY_ATTRIBUTE_H_ +#endif // DRACO_ATTRIBUTES_GEOMETRY_ATTRIBUTE_H_ diff --git a/point_cloud/geometry_indices.h b/src/draco/attributes/geometry_indices.h similarity index 86% rename from point_cloud/geometry_indices.h rename to src/draco/attributes/geometry_indices.h index 03de73d7..8e93dde8 100644 --- a/point_cloud/geometry_indices.h +++ b/src/draco/attributes/geometry_indices.h @@ -12,14 +12,14 @@ // See the License for the specific language governing permissions and // limitations under the License. // -#ifndef DRACO_POINT_CLOUD_GEOMETRY_INDICES_H_ -#define DRACO_POINT_CLOUD_GEOMETRY_INDICES_H_ +#ifndef DRACO_ATTRIBUTES_GEOMETRY_INDICES_H_ +#define DRACO_ATTRIBUTES_GEOMETRY_INDICES_H_ #include #include -#include "core/draco_index_type.h" +#include "draco/core/draco_index_type.h" namespace draco { @@ -37,4 +37,4 @@ static constexpr PointIndex kInvalidPointIndex( } // namespace draco -#endif // DRACO_POINT_CLOUD_GEOMETRY_INDICES_H_ +#endif // DRACO_ATTRIBUTES_GEOMETRY_INDICES_H_ diff --git a/point_cloud/point_attribute.cc b/src/draco/attributes/point_attribute.cc similarity index 84% rename from point_cloud/point_attribute.cc rename to src/draco/attributes/point_attribute.cc index 31a1a2ae..e881f825 100644 --- a/point_cloud/point_attribute.cc +++ b/src/draco/attributes/point_attribute.cc @@ -12,7 +12,7 @@ // See the License for the specific language governing permissions and // limitations under the License. // -#include "point_cloud/point_attribute.h" +#include "draco/attributes/point_attribute.h" #include @@ -32,11 +32,30 @@ PointAttribute::PointAttribute(const GeometryAttribute &att) num_unique_entries_(0), identity_mapping_(false) {} +void PointAttribute::CopyFrom(const PointAttribute &src_att) { + if (buffer() == nullptr) { + // If the destination attribute doesn't have a valid buffer, create it. + attribute_buffer_ = std::unique_ptr(new DataBuffer()); + ResetBuffer(attribute_buffer_.get(), 0, 0); + } + if (!GeometryAttribute::CopyFrom(src_att)) + return; + identity_mapping_ = src_att.identity_mapping_; + num_unique_entries_ = src_att.num_unique_entries_; + indices_map_ = src_att.indices_map_; + if (src_att.attribute_transform_data_) { + attribute_transform_data_ = std::unique_ptr( + new AttributeTransformData(*src_att.attribute_transform_data_.get())); + } else { + attribute_transform_data_ = nullptr; + } +} + bool PointAttribute::Reset(size_t num_attribute_values) { if (attribute_buffer_ == nullptr) { attribute_buffer_ = std::unique_ptr(new DataBuffer()); } - const int64_t entry_size = DataTypeLength(data_type()) * components_count(); + const int64_t entry_size = DataTypeLength(data_type()) * num_components(); if (!attribute_buffer_->Update(nullptr, num_attribute_values * entry_size)) return false; // Assign the new buffer to the parent attribute. @@ -85,7 +104,7 @@ AttributeValueIndex::ValueType PointAttribute::DeduplicateValues( return unique_vals; } -// Helper function for calling UnifyDuplicateAttributes +// Helper function for calling UnifyDuplicateAttributes // with the correct template arguments. // Returns the number of unique attribute values. template @@ -93,7 +112,7 @@ AttributeValueIndex::ValueType PointAttribute::DeduplicateTypedValues( const GeometryAttribute &in_att, AttributeValueIndex in_att_offset) { // Select the correct method to call based on the number of attribute // components. - switch (in_att.components_count()) { + switch (in_att.num_components()) { case 1: return DeduplicateFormattedValues(in_att, in_att_offset); case 2: @@ -107,7 +126,7 @@ AttributeValueIndex::ValueType PointAttribute::DeduplicateTypedValues( } } -template +template AttributeValueIndex::ValueType PointAttribute::DeduplicateFormattedValues( const GeometryAttribute &in_att, AttributeValueIndex in_att_offset) { // We want to detect duplicates using a hash map but we cannot hash floating @@ -125,8 +144,8 @@ AttributeValueIndex::ValueType PointAttribute::DeduplicateFormattedValues( HashType; AttributeValueIndex unique_vals(0); - typedef std::array AttributeValue; - typedef std::array AttributeHashableValue; + typedef std::array AttributeValue; + typedef std::array AttributeHashableValue; // Hash map storing index of the first attribute with a given value. unordered_map> @@ -137,7 +156,7 @@ AttributeValueIndex::ValueType PointAttribute::DeduplicateFormattedValues( num_unique_entries_); for (AttributeValueIndex i(0); i < num_unique_entries_; ++i) { const AttributeValueIndex att_pos = i + in_att_offset; - att_value = in_att.GetValue(att_pos); + att_value = in_att.GetValue(att_pos); // Convert the value to hashable type. Bit-copy real attributes to integers. memcpy(&(hashable_value[0]), &(att_value[0]), sizeof(att_value)); diff --git a/point_cloud/point_attribute.h b/src/draco/attributes/point_attribute.h similarity index 81% rename from point_cloud/point_attribute.h rename to src/draco/attributes/point_attribute.h index d6035094..bfc1a3ea 100644 --- a/point_cloud/point_attribute.h +++ b/src/draco/attributes/point_attribute.h @@ -12,15 +12,16 @@ // See the License for the specific language governing permissions and // limitations under the License. // -#ifndef DRACO_POINT_CLOUD_POINT_ATTRIBUTE_H_ -#define DRACO_POINT_CLOUD_POINT_ATTRIBUTE_H_ +#ifndef DRACO_ATTRIBUTES_POINT_ATTRIBUTE_H_ +#define DRACO_ATTRIBUTES_POINT_ATTRIBUTE_H_ #include -#include "core/draco_index_type_vector.h" -#include "core/hash_utils.h" -#include "core/macros.h" -#include "point_cloud/geometry_attribute.h" +#include "draco/attributes/attribute_transform_data.h" +#include "draco/attributes/geometry_attribute.h" +#include "draco/core/draco_index_type_vector.h" +#include "draco/core/hash_utils.h" +#include "draco/core/macros.h" namespace draco { @@ -38,6 +39,9 @@ class PointAttribute : public GeometryAttribute { PointAttribute(PointAttribute &&attribute) = default; PointAttribute &operator=(PointAttribute &&attribute) = default; + // Copies attribute data from the provided |src_att| attribute. + void CopyFrom(const PointAttribute &src_att); + // Prepares the attribute storage for the specified number of entries. bool Reset(size_t num_attribute_values); @@ -49,6 +53,11 @@ class PointAttribute : public GeometryAttribute { } DataBuffer *buffer() const { return attribute_buffer_.get(); } bool is_mapping_identity() const { return identity_mapping_; } + size_t indices_map_size() const { + if (is_mapping_identity()) + return 0; + return indices_map_.size(); + } const uint8_t *GetAddressOfMappedIndex(PointIndex point_index) const { return GetAddress(mapped_index(point_index)); @@ -105,6 +114,17 @@ class PointAttribute : public GeometryAttribute { AttributeValueIndex::ValueType DeduplicateValues( const GeometryAttribute &in_att, AttributeValueIndex in_att_offset); + // Set attribute transform data for the attribute. The data is used to store + // the type and parameters of the transform that is applied on the attribute + // data (optional). + void SetAttributeTransformData( + std::unique_ptr transform_data) { + attribute_transform_data_ = std::move(transform_data); + } + const AttributeTransformData *GetAttributeTransformData() const { + return attribute_transform_data_.get(); + } + private: template AttributeValueIndex::ValueType DeduplicateTypedValues( @@ -123,10 +143,15 @@ class PointAttribute : public GeometryAttribute { // Flag when the mapping between point ids and attribute values is identity. bool identity_mapping_; + // If an attribute contains transformed data (e.g. quantized), we can specify + // the attribute transform here and use it to transform the attribute back to + // its original format. + std::unique_ptr attribute_transform_data_; + friend struct PointAttributeHasher; }; -// Hasher functor for the PointAttribute class. +// Hash functor for the PointAttribute class. struct PointAttributeHasher { size_t operator()(const PointAttribute &attribute) const { GeometryAttributeHasher base_hasher; @@ -152,4 +177,4 @@ struct PointAttributeHasher { } // namespace draco -#endif // DRACO_POINT_CLOUD_POINT_ATTRIBUTE_H_ +#endif // DRACO_ATTRIBUTES_POINT_ATTRIBUTE_H_ diff --git a/src/draco/attributes/point_attribute_test.cc b/src/draco/attributes/point_attribute_test.cc new file mode 100644 index 00000000..abc374ac --- /dev/null +++ b/src/draco/attributes/point_attribute_test.cc @@ -0,0 +1,54 @@ +// Copyright 2017 The Draco Authors. +// +// Licensed under the Apache License, Version 2.0 (the "License"); +// you may not use this file except in compliance with the License. +// You may obtain a copy of the License at +// +// http://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an "AS IS" BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// See the License for the specific language governing permissions and +// limitations under the License. +// +#include "draco/attributes/point_attribute.h" + +#include "draco/core/draco_test_base.h" + +namespace { + +class PointAttributeTest : public ::testing::Test { + protected: + PointAttributeTest() {} +}; + +TEST_F(PointAttributeTest, TestCopy) { + // This test verifies that PointAttribute can copy data from another point + // attribute. + draco::GeometryAttribute pos_att; + pos_att.Init(draco::GeometryAttribute::POSITION, nullptr, 1, draco::DT_INT32, + false, 4, 0); + draco::PointAttribute pa(pos_att); + pa.SetIdentityMapping(); + pa.Reset(10); + for (int32_t i = 0; i < 10; ++i) { + pa.SetAttributeValue(draco::AttributeValueIndex(i), &i); + } + + draco::PointAttribute other_pa; + other_pa.CopyFrom(pa); + + draco::PointAttributeHasher hasher; + ASSERT_EQ(hasher(pa), hasher(other_pa)); + + // The hash function does not actually compute the hash from attribute values, + // so ensure the data got copied correctly as well. + for (int32_t i = 0; i < 10; ++i) { + int32_t data; + other_pa.GetValue(draco::AttributeValueIndex(i), &data); + ASSERT_EQ(data, i); + } +} + +} // namespace diff --git a/compression/attributes/attributes_decoder.cc b/src/draco/compression/attributes/attributes_decoder.cc similarity index 55% rename from compression/attributes/attributes_decoder.cc rename to src/draco/compression/attributes/attributes_decoder.cc index 6e6c341f..2499233e 100644 --- a/compression/attributes/attributes_decoder.cc +++ b/src/draco/compression/attributes/attributes_decoder.cc @@ -12,7 +12,9 @@ // See the License for the specific language governing permissions and // limitations under the License. // -#include "compression/attributes/attributes_decoder.h" +#include "draco/compression/attributes/attributes_decoder.h" + +#include "draco/core/varint_decoding.h" namespace draco { @@ -27,36 +29,61 @@ bool AttributesDecoder::Initialize(PointCloudDecoder *decoder, PointCloud *pc) { bool AttributesDecoder::DecodeAttributesDecoderData(DecoderBuffer *in_buffer) { // Decode and create attributes. - int32_t num_attributes; - if (!in_buffer->Decode(&num_attributes) || num_attributes <= 0) + uint32_t num_attributes; + if (point_cloud_decoder_->bitstream_version() < + DRACO_BITSTREAM_VERSION(2, 0)) { + if (!in_buffer->Decode(&num_attributes)) + return false; + } else { + if (!DecodeVarint(&num_attributes, in_buffer)) + return false; + } + if (num_attributes == 0) return false; point_attribute_ids_.resize(num_attributes); PointCloud *pc = point_cloud_; for (int i = 0; i < num_attributes; ++i) { // Decode attribute descriptor data. - uint8_t att_type, data_type, components_count, normalized; - uint16_t custom_id; + uint8_t att_type, data_type, num_components, normalized; if (!in_buffer->Decode(&att_type)) return false; if (!in_buffer->Decode(&data_type)) return false; - if (!in_buffer->Decode(&components_count)) + if (!in_buffer->Decode(&num_components)) return false; if (!in_buffer->Decode(&normalized)) return false; - if (!in_buffer->Decode(&custom_id)) + if (data_type <= DT_INVALID || data_type >= DT_TYPES_COUNT) return false; const DataType draco_dt = static_cast(data_type); // Add the attribute to the point cloud GeometryAttribute ga; ga.Init(static_cast(att_type), nullptr, - components_count, draco_dt, normalized > 0, - DataTypeLength(draco_dt) * components_count, 0); - ga.set_custom_id(custom_id); + num_components, draco_dt, normalized > 0, + DataTypeLength(draco_dt) * num_components, 0); + uint32_t unique_id; + if (point_cloud_decoder_->bitstream_version() >= + DRACO_BITSTREAM_VERSION(1, 3)) { + DecodeVarint(&unique_id, in_buffer); + ga.set_unique_id(unique_id); + } else { + uint16_t custom_id; + if (!in_buffer->Decode(&custom_id)) + return false; + // TODO(zhafang): Add "custom_id" to attribute metadata. + unique_id = static_cast(custom_id); + ga.set_unique_id(unique_id); + } const int att_id = pc->AddAttribute( std::unique_ptr(new PointAttribute(ga))); + pc->attribute(att_id)->set_unique_id(unique_id); point_attribute_ids_[i] = att_id; + + // Update the inverse map. + if (att_id >= static_cast(point_attribute_to_local_id_map_.size())) + point_attribute_to_local_id_map_.resize(att_id + 1, -1); + point_attribute_to_local_id_map_[att_id] = point_attribute_ids_.size() - 1; } return true; } diff --git a/src/draco/compression/attributes/attributes_decoder.h b/src/draco/compression/attributes/attributes_decoder.h new file mode 100644 index 00000000..30594181 --- /dev/null +++ b/src/draco/compression/attributes/attributes_decoder.h @@ -0,0 +1,91 @@ +// Copyright 2016 The Draco Authors. +// +// Licensed under the Apache License, Version 2.0 (the "License"); +// you may not use this file except in compliance with the License. +// You may obtain a copy of the License at +// +// http://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an "AS IS" BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// See the License for the specific language governing permissions and +// limitations under the License. +// +#ifndef DRACO_COMPRESSION_ATTRIBUTES_ATTRIBUTES_DECODER_H_ +#define DRACO_COMPRESSION_ATTRIBUTES_ATTRIBUTES_DECODER_H_ + +#include + +#include "draco/compression/attributes/attributes_decoder_interface.h" +#include "draco/compression/point_cloud/point_cloud_decoder.h" +#include "draco/core/decoder_buffer.h" +#include "draco/point_cloud/point_cloud.h" + +namespace draco { + +// Base class for decoding one or more attributes that were encoded with a +// matching AttributesEncoder. It is a basic implementation of +// AttributesDecoderInterface that provides functionality that is shared between +// all AttributesDecoders. +class AttributesDecoder : public AttributesDecoderInterface { + public: + AttributesDecoder(); + virtual ~AttributesDecoder() = default; + + // Called after all attribute decoders are created. It can be used to perform + // any custom initialization. + bool Initialize(PointCloudDecoder *decoder, PointCloud *pc) override; + + // Decodes any attribute decoder specific data from the |in_buffer|. + bool DecodeAttributesDecoderData(DecoderBuffer *in_buffer) override; + + int32_t GetAttributeId(int i) const override { + return point_attribute_ids_[i]; + } + int32_t GetNumAttributes() const override { + return point_attribute_ids_.size(); + } + PointCloudDecoder *GetDecoder() const override { + return point_cloud_decoder_; + } + + // Decodes attribute data from the source buffer. + bool DecodeAttributes(DecoderBuffer *in_buffer) override { + if (!DecodePortableAttributes(in_buffer)) + return false; + if (!DecodeDataNeededByPortableTransforms(in_buffer)) + return false; + if (!TransformAttributesToOriginalFormat()) + return false; + return true; + } + + protected: + int32_t GetLocalIdForPointAttribute(int32_t point_attribute_id) const { + const int id_map_size = point_attribute_to_local_id_map_.size(); + if (point_attribute_id >= id_map_size) + return -1; + return point_attribute_to_local_id_map_[point_attribute_id]; + } + virtual bool DecodePortableAttributes(DecoderBuffer *in_buffer) = 0; + virtual bool DecodeDataNeededByPortableTransforms(DecoderBuffer *in_buffer) { + return true; + } + virtual bool TransformAttributesToOriginalFormat() { return true; } + + private: + // List of attribute ids that need to be decoded with this decoder. + std::vector point_attribute_ids_; + + // Map between point attribute id and the local id (i.e., the inverse of the + // |point_attribute_ids_|. + std::vector point_attribute_to_local_id_map_; + + PointCloudDecoder *point_cloud_decoder_; + PointCloud *point_cloud_; +}; + +} // namespace draco + +#endif // DRACO_COMPRESSION_ATTRIBUTES_ATTRIBUTES_DECODER_H_ diff --git a/src/draco/compression/attributes/attributes_decoder_interface.h b/src/draco/compression/attributes/attributes_decoder_interface.h new file mode 100644 index 00000000..f073dece --- /dev/null +++ b/src/draco/compression/attributes/attributes_decoder_interface.h @@ -0,0 +1,62 @@ +// Copyright 2017 The Draco Authors. +// +// Licensed under the Apache License, Version 2.0 (the "License"); +// you may not use this file except in compliance with the License. +// You may obtain a copy of the License at +// +// http://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an "AS IS" BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// See the License for the specific language governing permissions and +// limitations under the License. +// +#ifndef DRACO_COMPRESSION_ATTRIBUTES_ATTRIBUTES_DECODER_INTERFACE_H_ +#define DRACO_COMPRESSION_ATTRIBUTES_ATTRIBUTES_DECODER_INTERFACE_H_ + +#include + +#include "draco/core/decoder_buffer.h" +#include "draco/point_cloud/point_cloud.h" + +namespace draco { + +class PointCloudDecoder; + +// Interface class for decoding one or more attributes that were encoded with a +// matching AttributesEncoder. It provides only the basic interface +// that is used by the PointCloudDecoder. The actual decoding must be +// implemented in derived classes using the DecodeAttributes() method. +class AttributesDecoderInterface { + public: + AttributesDecoderInterface() = default; + virtual ~AttributesDecoderInterface() = default; + + // Called after all attribute decoders are created. It can be used to perform + // any custom initialization. + virtual bool Initialize(PointCloudDecoder *decoder, PointCloud *pc) = 0; + + // Decodes any attribute decoder specific data from the |in_buffer|. + virtual bool DecodeAttributesDecoderData(DecoderBuffer *in_buffer) = 0; + + // Decode attribute data from the source buffer. Needs to be implemented by + // the derived classes. + virtual bool DecodeAttributes(DecoderBuffer *in_buffer) = 0; + + virtual int32_t GetAttributeId(int i) const = 0; + virtual int32_t GetNumAttributes() const = 0; + virtual PointCloudDecoder *GetDecoder() const = 0; + + // Returns an attribute containing data processed by the attribute transform. + // (see TransformToPortableFormat() method). This data is guaranteed to be + // same for encoder and decoder and it can be used by predictors. + virtual const PointAttribute *GetPortableAttribute( + int32_t /* point_attribute_id */) { + return nullptr; + } +}; + +} // namespace draco + +#endif // DRACO_COMPRESSION_ATTRIBUTES_ATTRIBUTES_DECODER_INTERFACE_H_ diff --git a/compression/attributes/attributes_encoder.cc b/src/draco/compression/attributes/attributes_encoder.cc similarity index 85% rename from compression/attributes/attributes_encoder.cc rename to src/draco/compression/attributes/attributes_encoder.cc index 43516fd6..76c663c8 100644 --- a/compression/attributes/attributes_encoder.cc +++ b/src/draco/compression/attributes/attributes_encoder.cc @@ -12,7 +12,9 @@ // See the License for the specific language governing permissions and // limitations under the License. // -#include "compression/attributes/attributes_encoder.h" +#include "draco/compression/attributes/attributes_encoder.h" + +#include "draco/core/varint_encoding.h" namespace draco { @@ -32,15 +34,15 @@ bool AttributesEncoder::Initialize(PointCloudEncoder *encoder, bool AttributesEncoder::EncodeAttributesEncoderData(EncoderBuffer *out_buffer) { // Encode data about all attributes. - out_buffer->Encode(num_attributes()); + EncodeVarint(num_attributes(), out_buffer); for (int i = 0; i < num_attributes(); ++i) { const int32_t att_id = point_attribute_ids_[i]; const PointAttribute *const pa = point_cloud_->attribute(att_id); out_buffer->Encode(static_cast(pa->attribute_type())); out_buffer->Encode(static_cast(pa->data_type())); - out_buffer->Encode(static_cast(pa->components_count())); + out_buffer->Encode(static_cast(pa->num_components())); out_buffer->Encode(static_cast(pa->normalized())); - out_buffer->Encode(static_cast(pa->custom_id())); + EncodeVarint(pa->unique_id(), out_buffer); } return true; } diff --git a/compression/attributes/attributes_encoder.h b/src/draco/compression/attributes/attributes_encoder.h similarity index 67% rename from compression/attributes/attributes_encoder.h rename to src/draco/compression/attributes/attributes_encoder.h index 31ec3e60..12300b47 100644 --- a/compression/attributes/attributes_encoder.h +++ b/src/draco/compression/attributes/attributes_encoder.h @@ -15,9 +15,9 @@ #ifndef DRACO_COMPRESSION_ATTRIBUTES_ATTRIBUTES_ENCODER_H_ #define DRACO_COMPRESSION_ATTRIBUTES_ATTRIBUTES_ENCODER_H_ -#include "core/encoder_buffer.h" -#include "point_cloud/point_attribute.h" -#include "point_cloud/point_cloud.h" +#include "draco/attributes/point_attribute.h" +#include "draco/core/encoder_buffer.h" +#include "draco/point_cloud/point_cloud.h" namespace draco { @@ -25,12 +25,11 @@ class PointCloudEncoder; // Base class for encoding one or more attributes of a PointCloud (or other // geometry). This base class provides only the basic interface that is used -// by the PointCloudEncoder. The actual encoding must be implemented in derived -// classes using the EncodeAttributes() method. +// by the PointCloudEncoder. class AttributesEncoder { public: AttributesEncoder(); - // Constructs an attribute encoder assosciated with a given point attribute. + // Constructs an attribute encoder associated with a given point attribute. explicit AttributesEncoder(int point_attrib_id); virtual ~AttributesEncoder() = default; @@ -47,9 +46,19 @@ class AttributesEncoder { // decoding to construct the corresponding attribute decoder. virtual uint8_t GetUniqueId() const = 0; - // Encode attribute data to the target buffer. Needs to be implmented by the - // derived classes. - virtual bool EncodeAttributes(EncoderBuffer *out_buffer) = 0; + // Encode attribute data to the target buffer. + virtual bool EncodeAttributes(EncoderBuffer *out_buffer) { + if (!TransformAttributesToPortableFormat()) + return false; + if (!EncodePortableAttributes(out_buffer)) + return false; + // Encode data needed by portable transforms after the attribute is encoded. + // This corresponds to the order in which the data is going to be decoded by + // the decoder. + if (!EncodeDataNeededByPortableTransforms(out_buffer)) + return false; + return true; + } // Returns the number of attributes that need to be encoded before the // specified attribute is encoded. @@ -68,14 +77,10 @@ class AttributesEncoder { return false; } - // Returns an attribute containing the encoded version of the attribute data. - // I.e., the data that is going to be used by the decoder after the attribute - // is decoded. - // This is the same data as the original attribute for lossless encoders, but - // the data can be different for lossy encoders. This data can be used by any - // dependent attributes that require to use the same data that will be - // availalbe during decoding. - virtual const PointAttribute *GetLossyAttributeData( + // Returns an attribute containing data processed by the attribute transform. + // (see TransformToPortableFormat() method). This data is guaranteed to be + // encoded losslessly and it can be safely used for predictors. + virtual const PointAttribute *GetPortableAttribute( int32_t /* point_attribute_id */) { return nullptr; } @@ -97,10 +102,25 @@ class AttributesEncoder { } int32_t GetAttributeId(int i) const { return point_attribute_ids_[i]; } - int32_t num_attributes() const { return point_attribute_ids_.size(); } + uint32_t num_attributes() const { return point_attribute_ids_.size(); } PointCloudEncoder *encoder() const { return point_cloud_encoder_; } protected: + // Transforms the input attribute data into a form that should be losslessly + // encoded (transform itself can be lossy). + virtual bool TransformAttributesToPortableFormat() { return true; } + + // Losslessly encodes data of all portable attributes. + // Precondition: All attributes must have been transformed into portable + // format at this point (see TransformAttributesToPortableFormat() method). + virtual bool EncodePortableAttributes(EncoderBuffer *out_buffer) = 0; + + // Encodes any data needed to revert the transform to portable format for each + // attribute (e.g. data needed for dequantization of quantized values). + virtual bool EncodeDataNeededByPortableTransforms(EncoderBuffer *out_buffer) { + return true; + } + int32_t GetLocalIdForPointAttribute(int32_t point_attribute_id) const { const int id_map_size = point_attribute_to_local_id_map_.size(); if (point_attribute_id >= id_map_size) diff --git a/compression/attributes/kd_tree_attributes_decoder.cc b/src/draco/compression/attributes/kd_tree_attributes_decoder.cc similarity index 66% rename from compression/attributes/kd_tree_attributes_decoder.cc rename to src/draco/compression/attributes/kd_tree_attributes_decoder.cc index bbf8eb44..69484cc5 100644 --- a/compression/attributes/kd_tree_attributes_decoder.cc +++ b/src/draco/compression/attributes/kd_tree_attributes_decoder.cc @@ -12,11 +12,11 @@ // See the License for the specific language governing permissions and // limitations under the License. // -#include "compression/attributes/kd_tree_attributes_decoder.h" -#include "compression/attributes/kd_tree_attributes_shared.h" -#include "compression/point_cloud/algorithms/float_points_tree_decoder.h" -#include "compression/point_cloud/algorithms/integer_points_kd_tree_decoder.h" -#include "compression/point_cloud/point_cloud_decoder.h" +#include "draco/compression/attributes/kd_tree_attributes_decoder.h" +#include "draco/compression/attributes/kd_tree_attributes_shared.h" +#include "draco/compression/point_cloud/algorithms/dynamic_integer_points_kd_tree_decoder.h" +#include "draco/compression/point_cloud/algorithms/float_points_tree_decoder.h" +#include "draco/compression/point_cloud/point_cloud_decoder.h" namespace draco { @@ -40,10 +40,19 @@ class PointAttributeVectorOutputIterator { return copy; } Self &operator*() { return *this; } + // Still needed in some cases. + // TODO(hemmer): remove. const Self &operator=(const VectorD &val) { attribute_->SetAttributeValue(attribute_->mapped_index(point_id_), &val[0]); return *this; } + // Additional operator taking std::vector as argument. + const Self &operator=(const std::vector &val) { + DCHECK_EQ(val.size(), dimension_t); + attribute_->SetAttributeValue(attribute_->mapped_index(point_id_), + val.data()); + return *this; + } private: PointAttribute *attribute_; @@ -52,9 +61,18 @@ class PointAttributeVectorOutputIterator { KdTreeAttributesDecoder::KdTreeAttributesDecoder() {} -bool KdTreeAttributesDecoder::DecodeAttributes(DecoderBuffer *in_buffer) { +bool KdTreeAttributesDecoder::DecodePortableAttributes( + DecoderBuffer *in_buffer) { + // Everything is currently done in RevertTransform method, because it can + // perform lossy operation on floating point data. + // TODO(ostava): Refactor this to two separate steps (lossy + lossless). + return true; +} + +bool KdTreeAttributesDecoder::DecodeDataNeededByPortableTransforms( + DecoderBuffer *in_buffer) { const int att_id = GetAttributeId(0); - PointAttribute *const att = decoder()->point_cloud()->attribute(att_id); + PointAttribute *const att = GetDecoder()->point_cloud()->attribute(att_id); att->SetIdentityMapping(); // Decode method uint8_t method; @@ -76,74 +94,57 @@ bool KdTreeAttributesDecoder::DecodeAttributes(DecoderBuffer *in_buffer) { uint8_t compression_level = 0; if (!in_buffer->Decode(&compression_level)) return false; + if (6 < compression_level) { + LOGE("KdTreeAttributesDecoder: compression level %i not supported.\n", + compression_level); + return false; + } + uint32_t num_points; if (!in_buffer->Decode(&num_points)) return false; att->Reset(num_points); PointAttributeVectorOutputIterator out_it(att); + switch (compression_level) { case 0: { - IntegerPointsKdTreeDecoder decoder; + DynamicIntegerPointsKdTreeDecoder<0> decoder(3); if (!decoder.DecodePoints(in_buffer, out_it)) return false; break; } case 1: { - IntegerPointsKdTreeDecoder decoder; + DynamicIntegerPointsKdTreeDecoder<1> decoder(3); if (!decoder.DecodePoints(in_buffer, out_it)) return false; break; } case 2: { - IntegerPointsKdTreeDecoder decoder; + DynamicIntegerPointsKdTreeDecoder<2> decoder(3); if (!decoder.DecodePoints(in_buffer, out_it)) return false; break; } case 3: { - IntegerPointsKdTreeDecoder decoder; + DynamicIntegerPointsKdTreeDecoder<3> decoder(3); if (!decoder.DecodePoints(in_buffer, out_it)) return false; break; } case 4: { - IntegerPointsKdTreeDecoder decoder; + DynamicIntegerPointsKdTreeDecoder<4> decoder(3); if (!decoder.DecodePoints(in_buffer, out_it)) return false; break; } case 5: { - IntegerPointsKdTreeDecoder decoder; + DynamicIntegerPointsKdTreeDecoder<5> decoder(3); if (!decoder.DecodePoints(in_buffer, out_it)) return false; break; } case 6: { - IntegerPointsKdTreeDecoder decoder; - if (!decoder.DecodePoints(in_buffer, out_it)) - return false; - break; - } - case 7: { - IntegerPointsKdTreeDecoder decoder; - if (!decoder.DecodePoints(in_buffer, out_it)) - return false; - break; - } - case 8: { - IntegerPointsKdTreeDecoder decoder; - if (!decoder.DecodePoints(in_buffer, out_it)) - return false; - break; - } - case 9: { - IntegerPointsKdTreeDecoder decoder; - if (!decoder.DecodePoints(in_buffer, out_it)) - return false; - break; - } - case 10: { - IntegerPointsKdTreeDecoder decoder; + DynamicIntegerPointsKdTreeDecoder<6> decoder(3); if (!decoder.DecodePoints(in_buffer, out_it)) return false; break; diff --git a/compression/attributes/kd_tree_attributes_decoder.h b/src/draco/compression/attributes/kd_tree_attributes_decoder.h similarity index 82% rename from compression/attributes/kd_tree_attributes_decoder.h rename to src/draco/compression/attributes/kd_tree_attributes_decoder.h index 32709151..36a3c709 100644 --- a/compression/attributes/kd_tree_attributes_decoder.h +++ b/src/draco/compression/attributes/kd_tree_attributes_decoder.h @@ -15,7 +15,7 @@ #ifndef DRACO_COMPRESSION_ATTRIBUTES_KD_TREE_ATTRIBUTES_DECODER_H_ #define DRACO_COMPRESSION_ATTRIBUTES_KD_TREE_ATTRIBUTES_DECODER_H_ -#include "compression/attributes/attributes_decoder.h" +#include "draco/compression/attributes/attributes_decoder.h" namespace draco { @@ -23,7 +23,10 @@ namespace draco { class KdTreeAttributesDecoder : public AttributesDecoder { public: KdTreeAttributesDecoder(); - bool DecodeAttributes(DecoderBuffer *in_buffer) override; + + protected: + bool DecodePortableAttributes(DecoderBuffer *in_buffer) override; + bool DecodeDataNeededByPortableTransforms(DecoderBuffer *in_buffer) override; }; } // namespace draco diff --git a/compression/attributes/kd_tree_attributes_encoder.cc b/src/draco/compression/attributes/kd_tree_attributes_encoder.cc similarity index 74% rename from compression/attributes/kd_tree_attributes_encoder.cc rename to src/draco/compression/attributes/kd_tree_attributes_encoder.cc index b8473e9c..3188e7cb 100644 --- a/compression/attributes/kd_tree_attributes_encoder.cc +++ b/src/draco/compression/attributes/kd_tree_attributes_encoder.cc @@ -12,11 +12,11 @@ // See the License for the specific language governing permissions and // limitations under the License. // -#include "compression/attributes/kd_tree_attributes_encoder.h" -#include "compression/attributes/kd_tree_attributes_shared.h" -#include "compression/point_cloud/algorithms/float_points_tree_encoder.h" -#include "compression/point_cloud/algorithms/integer_points_kd_tree_encoder.h" -#include "compression/point_cloud/point_cloud_encoder.h" +#include "draco/compression/attributes/kd_tree_attributes_encoder.h" +#include "draco/compression/attributes/kd_tree_attributes_shared.h" +#include "draco/compression/point_cloud/algorithms/dynamic_integer_points_kd_tree_encoder.h" +#include "draco/compression/point_cloud/algorithms/float_points_tree_encoder.h" +#include "draco/compression/point_cloud/point_cloud_encoder.h" namespace draco { @@ -70,16 +70,26 @@ KdTreeAttributesEncoder::KdTreeAttributesEncoder() {} KdTreeAttributesEncoder::KdTreeAttributesEncoder(int att_id) : AttributesEncoder(att_id) {} -bool KdTreeAttributesEncoder::EncodeAttributes(EncoderBuffer *out_buffer) { +bool KdTreeAttributesEncoder::EncodePortableAttributes( + EncoderBuffer *out_buffer) { + // Everything is currently encoded in the EncodeTransformData method. + return true; +} + +bool KdTreeAttributesEncoder::EncodeDataNeededByPortableTransforms( + EncoderBuffer *out_buffer) { + // TODO(ostava): This should be separated into two parts, lossy and lossless. // At this point we support only one attribute for this attributes encoder. if (num_attributes() != 1) return false; // Get the first attribute (which should be position). const int att_id = GetAttributeId(0); const PointAttribute *const att = encoder()->point_cloud()->attribute(att_id); - if (att->components_count() != 3) + if (att->num_components() != 3) return false; - const uint8_t compression_level = 10 - encoder()->options()->GetSpeed(); + const uint8_t compression_level = + std::min(10 - encoder()->options()->GetSpeed(), 6); + DCHECK_LE(compression_level, 6); if (att->data_type() == DT_FLOAT32) { const int quantization_bits = encoder()->options()->GetAttributeInt(att_id, "quantization_bits", -1); @@ -109,85 +119,57 @@ bool KdTreeAttributesEncoder::EncodeAttributes(EncoderBuffer *out_buffer) { static_cast(encoder()->point_cloud()->num_points())); typedef PointAttributeVectorIterator AttributeIterator; // For the integer points encoder, we need to first store the attribute - // values in a vector because the encoder modifies the input contrainer, + // values in a vector because the encoder modifies the input container, // which is currently not acceptable for the input PointAttribute. AttributeIterator it(att); std::vector int_points( it, it + encoder()->point_cloud()->num_points()); switch (compression_level) { - case 10: { - IntegerPointsKdTreeEncoder points_encoder; - if (!points_encoder.EncodePoints(int_points.begin(), int_points.end(), - out_buffer)) - return false; - break; - } - case 9: { - IntegerPointsKdTreeEncoder points_encoder; - if (!points_encoder.EncodePoints(int_points.begin(), int_points.end(), - out_buffer)) - return false; - break; - } - case 8: { - IntegerPointsKdTreeEncoder points_encoder; - if (!points_encoder.EncodePoints(int_points.begin(), int_points.end(), - out_buffer)) - return false; - break; - } - case 7: { - IntegerPointsKdTreeEncoder points_encoder; - if (!points_encoder.EncodePoints(int_points.begin(), int_points.end(), - out_buffer)) - return false; - break; - } case 6: { - IntegerPointsKdTreeEncoder points_encoder; + DynamicIntegerPointsKdTreeEncoder<6> points_encoder(3); if (!points_encoder.EncodePoints(int_points.begin(), int_points.end(), out_buffer)) return false; break; } case 5: { - IntegerPointsKdTreeEncoder points_encoder; + DynamicIntegerPointsKdTreeEncoder<5> points_encoder(3); if (!points_encoder.EncodePoints(int_points.begin(), int_points.end(), out_buffer)) return false; break; } case 4: { - IntegerPointsKdTreeEncoder points_encoder; + DynamicIntegerPointsKdTreeEncoder<4> points_encoder(3); if (!points_encoder.EncodePoints(int_points.begin(), int_points.end(), out_buffer)) return false; break; } case 3: { - IntegerPointsKdTreeEncoder points_encoder; + DynamicIntegerPointsKdTreeEncoder<3> points_encoder(3); if (!points_encoder.EncodePoints(int_points.begin(), int_points.end(), out_buffer)) return false; break; } case 2: { - IntegerPointsKdTreeEncoder points_encoder; + DynamicIntegerPointsKdTreeEncoder<2> points_encoder(3); if (!points_encoder.EncodePoints(int_points.begin(), int_points.end(), out_buffer)) return false; break; } case 1: { - IntegerPointsKdTreeEncoder points_encoder; + DynamicIntegerPointsKdTreeEncoder<1> points_encoder(3); if (!points_encoder.EncodePoints(int_points.begin(), int_points.end(), out_buffer)) return false; break; } case 0: { - IntegerPointsKdTreeEncoder points_encoder; + DynamicIntegerPointsKdTreeEncoder<0> points_encoder(3); if (!points_encoder.EncodePoints(int_points.begin(), int_points.end(), out_buffer)) return false; diff --git a/compression/attributes/kd_tree_attributes_encoder.h b/src/draco/compression/attributes/kd_tree_attributes_encoder.h similarity index 82% rename from compression/attributes/kd_tree_attributes_encoder.h rename to src/draco/compression/attributes/kd_tree_attributes_encoder.h index e0c16390..f9d4febe 100644 --- a/compression/attributes/kd_tree_attributes_encoder.h +++ b/src/draco/compression/attributes/kd_tree_attributes_encoder.h @@ -15,8 +15,8 @@ #ifndef DRACO_COMPRESSION_ATTRIBUTES_POINT_CLOUD_KD_TREE_ATTRIBUTES_ENCODER_H_ #define DRACO_COMPRESSION_ATTRIBUTES_POINT_CLOUD_KD_TREE_ATTRIBUTES_ENCODER_H_ -#include "compression/attributes/attributes_encoder.h" -#include "compression/config/compression_shared.h" +#include "draco/compression/attributes/attributes_encoder.h" +#include "draco/compression/config/compression_shared.h" namespace draco { @@ -29,7 +29,10 @@ class KdTreeAttributesEncoder : public AttributesEncoder { explicit KdTreeAttributesEncoder(int att_id); uint8_t GetUniqueId() const override { return KD_TREE_ATTRIBUTE_ENCODER; } - bool EncodeAttributes(EncoderBuffer *out_buffer) override; + + protected: + bool EncodePortableAttributes(EncoderBuffer *out_buffer) override; + bool EncodeDataNeededByPortableTransforms(EncoderBuffer *out_buffer) override; }; } // namespace draco diff --git a/compression/attributes/kd_tree_attributes_shared.h b/src/draco/compression/attributes/kd_tree_attributes_shared.h similarity index 100% rename from compression/attributes/kd_tree_attributes_shared.h rename to src/draco/compression/attributes/kd_tree_attributes_shared.h diff --git a/compression/attributes/linear_sequencer.h b/src/draco/compression/attributes/linear_sequencer.h similarity index 96% rename from compression/attributes/linear_sequencer.h rename to src/draco/compression/attributes/linear_sequencer.h index b55c10db..2cda16f8 100644 --- a/compression/attributes/linear_sequencer.h +++ b/src/draco/compression/attributes/linear_sequencer.h @@ -15,7 +15,7 @@ #ifndef DRACO_COMPRESSION_ATTRIBUTES_LINEAR_SEQUENCER_H_ #define DRACO_COMPRESSION_ATTRIBUTES_LINEAR_SEQUENCER_H_ -#include "compression/attributes/points_sequencer.h" +#include "draco/compression/attributes/points_sequencer.h" namespace draco { diff --git a/compression/attributes/mesh_attribute_indices_encoding_data.h b/src/draco/compression/attributes/mesh_attribute_indices_encoding_data.h similarity index 94% rename from compression/attributes/mesh_attribute_indices_encoding_data.h rename to src/draco/compression/attributes/mesh_attribute_indices_encoding_data.h index d4c8ebb5..bbbedf4e 100644 --- a/compression/attributes/mesh_attribute_indices_encoding_data.h +++ b/src/draco/compression/attributes/mesh_attribute_indices_encoding_data.h @@ -19,7 +19,7 @@ #include -#include "mesh/corner_table_indices.h" +#include "draco/mesh/corner_table_indices.h" namespace draco { @@ -28,7 +28,7 @@ struct MeshAttributeIndicesEncodingData { MeshAttributeIndicesEncodingData() : num_values(0) {} // Array for storing the corner ids in the order their associated attribute - // entries were encoded/decoded. For every encoded attrbiute value entry we + // entries were encoded/decoded. For every encoded attribute value entry we // store exactly one corner. I.e., this is the mapping between an encoded // attribute entry ids and corner ids. This map is needed for example by // prediction schemes. Note that not all corners are included in this map, diff --git a/compression/attributes/mesh_attribute_indices_encoding_observer.h b/src/draco/compression/attributes/mesh_attribute_indices_encoding_observer.h similarity index 93% rename from compression/attributes/mesh_attribute_indices_encoding_observer.h rename to src/draco/compression/attributes/mesh_attribute_indices_encoding_observer.h index a8140d90..89cac2de 100644 --- a/compression/attributes/mesh_attribute_indices_encoding_observer.h +++ b/src/draco/compression/attributes/mesh_attribute_indices_encoding_observer.h @@ -15,9 +15,9 @@ #ifndef DRACO_COMPRESSION_ATTRIBUTES_MESH_ATTRIBUTE_INDICES_ENCODING_OBSERVER_H_ #define DRACO_COMPRESSION_ATTRIBUTES_MESH_ATTRIBUTE_INDICES_ENCODING_OBSERVER_H_ -#include "compression/attributes/mesh_attribute_indices_encoding_data.h" -#include "compression/attributes/points_sequencer.h" -#include "mesh/mesh.h" +#include "draco/compression/attributes/mesh_attribute_indices_encoding_data.h" +#include "draco/compression/attributes/points_sequencer.h" +#include "draco/mesh/mesh.h" namespace draco { diff --git a/compression/attributes/mesh_traversal_sequencer.h b/src/draco/compression/attributes/mesh_traversal_sequencer.h similarity index 94% rename from compression/attributes/mesh_traversal_sequencer.h rename to src/draco/compression/attributes/mesh_traversal_sequencer.h index 3fb1c222..f8a78af3 100644 --- a/compression/attributes/mesh_traversal_sequencer.h +++ b/src/draco/compression/attributes/mesh_traversal_sequencer.h @@ -15,10 +15,10 @@ #ifndef DRACO_COMPRESSION_ATTRIBUTES_MESH_TRAVERSAL_SEQUENCER_H_ #define DRACO_COMPRESSION_ATTRIBUTES_MESH_TRAVERSAL_SEQUENCER_H_ -#include "compression/attributes/mesh_attribute_indices_encoding_data.h" -#include "compression/attributes/points_sequencer.h" -#include "mesh/corner_table_indices.h" -#include "mesh/mesh.h" +#include "draco/compression/attributes/mesh_attribute_indices_encoding_data.h" +#include "draco/compression/attributes/points_sequencer.h" +#include "draco/mesh/corner_table_indices.h" +#include "draco/mesh/mesh.h" namespace draco { diff --git a/src/draco/compression/attributes/normal_compression_utils.h b/src/draco/compression/attributes/normal_compression_utils.h new file mode 100644 index 00000000..9a5c1e76 --- /dev/null +++ b/src/draco/compression/attributes/normal_compression_utils.h @@ -0,0 +1,332 @@ +// Copyright 2016 The Draco Authors. +// +// Licensed under the Apache License, Version 2.0 (the "License"); +// you may not use this file except in compliance with the License. +// You may obtain a copy of the License at +// +// http://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an "AS IS" BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// See the License for the specific language governing permissions and +// limitations under the License. +// +// Utilities for converting unit vectors to octahedral coordinates and back. +// For more details about octahedral coordinates, see for example Cigolle +// et al.'14 “A Survey of Efficient Representations for Independent Unit +// Vectors”. +// +// In short this is motivated by an octahedron inscribed into a sphere. The +// direction of the normal vector can be defined by a point on the octahedron. +// On the right hemisphere (x > 0) this point is projected onto the x = 0 plane, +// that is, the right side of the octahedron forms a diamond like shape. The +// left side of the octahedron is also projected onto the x = 0 plane, however, +// in this case we flap the triangles of the diamond outward. Afterwards we +// shift the resulting square such that all values are positive. +// +// Important values in this file: +// * q: number of quantization bits +// * max_quantized_value: the max value representable with q bits (odd) +// * max_value: max value of the diamond = max_quantized_value - 1 (even) +// * center_value: center of the diamond after shift +// +// Note that the parameter space is somewhat periodic, e.g. (0, 0) == +// (max_value, max_value), which is also why the diamond is one smaller than the +// maximal representable value in order to have an odd range of values. + +#ifndef DRACO_COMPRESSION_ATTRIBUTES_NORMAL_COMPRESSION_UTILS_H_ +#define DRACO_COMPRESSION_ATTRIBUTES_NORMAL_COMPRESSION_UTILS_H_ + +#include +#include +#include + +#include "draco/core/macros.h" + +namespace draco { + +class OctahedronToolBox { + public: + OctahedronToolBox() + : quantization_bits_(-1), + max_quantized_value_(-1), + max_value_(-1), + center_value_(-1) {} + + OctahedronToolBox(int32_t q) { this->SetQuantizationBits(q); } + + void SetQuantizationBits(int32_t q) { + DCHECK_GE(q, 2); + DCHECK_LE(q, 30); + quantization_bits_ = q; + max_quantized_value_ = (1 << quantization_bits_) - 1; + max_value_ = max_quantized_value_ - 1; + center_value_ = max_value_ / 2; + } + bool IsInitialized() const { return quantization_bits_ != -1; } + + // Convert all edge points in the top left and bottom right quadrants to + // their corresponding position in the bottom left and top right quadrants. + // Convert all corner edge points to the top right corner. + inline void CanonicalizeOctahedralCoords(int32_t s, int32_t t, int32_t *out_s, + int32_t *out_t) const { + if ((s == 0 && t == 0) || (s == 0 && t == max_value_) || + (s == max_value_ && t == 0)) { + s = max_value_; + t = max_value_; + } else if (s == 0 && t > center_value_) { + t = center_value_ - (t - center_value_); + } else if (s == max_value_ && t < center_value_) { + t = center_value_ + (center_value_ - t); + } else if (t == max_value_ && s < center_value_) { + s = center_value_ + (center_value_ - s); + } else if (t == 0 && s > center_value_) { + s = center_value_ - (s - center_value_); + } + + *out_s = s; + *out_t = t; + } + + // Converts an integer vector to octahedral coordinates. + // Precondition: |int_vec| abs sum must equal center value. + inline void IntegerVectorToQuantizedOctahedralCoords(const int32_t *int_vec, + int32_t *out_s, + int32_t *out_t) const { + DCHECK_EQ( + std::abs(int_vec[0]) + std::abs(int_vec[1]) + std::abs(int_vec[2]), + center_value_); + int32_t s, t; + if (int_vec[0] >= 0) { + // Right hemisphere. + s = (int_vec[1] + center_value_); + t = (int_vec[2] + center_value_); + } else { + // Left hemisphere. + if (int_vec[1] < 0) { + s = std::abs(int_vec[2]); + } else { + s = (max_value_ - std::abs(int_vec[2])); + } + if (int_vec[2] < 0) { + t = std::abs(int_vec[1]); + } else { + t = (max_value_ - std::abs(int_vec[1])); + } + } + CanonicalizeOctahedralCoords(s, t, out_s, out_t); + } + + template + void FloatVectorToQuantizedOctahedralCoords(const T *vector, int32_t *out_s, + int32_t *out_t) const { + const double abs_sum = std::abs(static_cast(vector[0])) + + std::abs(static_cast(vector[1])) + + std::abs(static_cast(vector[2])); + + // Adjust values such that abs sum equals 1. + double scaled_vector[3]; + if (abs_sum > 1e-6) { + // Scale needed to project the vector to the surface of an octahedron. + const double scale = 1.0 / abs_sum; + scaled_vector[0] = vector[0] * scale; + scaled_vector[1] = vector[1] * scale; + scaled_vector[2] = vector[2] * scale; + } else { + scaled_vector[0] = 1.0; + scaled_vector[1] = 0; + scaled_vector[2] = 0; + } + + // Scale vector such that the sum equals the center value. + int32_t int_vec[3]; + int_vec[0] = + static_cast(floor(scaled_vector[0] * center_value_ + 0.5)); + int_vec[1] = + static_cast(floor(scaled_vector[1] * center_value_ + 0.5)); + // Make sure the sum is exactly the center value. + int_vec[2] = center_value_ - std::abs(int_vec[0]) - std::abs(int_vec[1]); + if (int_vec[2] < 0) { + // If the sum of first two coordinates is too large, we need to decrease + // the length of one of the coordinates. + if (int_vec[1] > 0) { + int_vec[1] += int_vec[2]; + } else { + int_vec[1] -= int_vec[2]; + } + int_vec[2] = 0; + } + // Take care of the sign. + if (scaled_vector[2] < 0) + int_vec[2] *= -1; + + IntegerVectorToQuantizedOctahedralCoords(int_vec, out_s, out_t); + } + + // Normalize |vec| such that its abs sum is equal to the center value; + template + void CanonicalizeIntegerVector(T *vec) const { + static_assert(std::is_integral::value, "T must be an integral type."); + static_assert(std::is_signed::value, "T must be a signed type."); + const int64_t abs_sum = static_cast(std::abs(vec[0])) + + static_cast(std::abs(vec[1])) + + static_cast(std::abs(vec[2])); + + if (abs_sum == 0) { + vec[0] = center_value_; // vec[1] == v[2] == 0 + } else { + vec[0] = (static_cast(vec[0]) * center_value_) / abs_sum; + vec[1] = (static_cast(vec[1]) * center_value_) / abs_sum; + if (vec[2] >= 0) { + vec[2] = center_value_ - std::abs(vec[0]) - std::abs(vec[1]); + } else { + vec[2] = -(center_value_ - std::abs(vec[0]) - std::abs(vec[1])); + } + } + } + + template + void OctaherdalCoordsToUnitVector(T in_s, T in_t, T *out_vector) const { + DCHECK_GE(in_s, 0); + DCHECK_GE(in_t, 0); + DCHECK_LE(in_s, 1); + DCHECK_LE(in_t, 1); + T s = in_s; + T t = in_t; + T spt = s + t; + T smt = s - t; + T x_sign = 1.0; + if (spt >= 0.5 && spt <= 1.5 && smt >= -0.5 && smt <= 0.5) { + // Right hemisphere. Don't do anything. + } else { + // Left hemisphere. + x_sign = -1.0; + if (spt <= 0.5) { + s = 0.5 - in_t; + t = 0.5 - in_s; + } else if (spt >= 1.5) { + s = 1.5 - in_t; + t = 1.5 - in_s; + } else if (smt <= -0.5) { + s = in_t - 0.5; + t = in_s + 0.5; + } else { + s = in_t + 0.5; + t = in_s - 0.5; + } + spt = s + t; + smt = s - t; + } + const T y = 2.0 * s - 1.0; + const T z = 2.0 * t - 1.0; + const T x = std::min(std::min(2.0 * spt - 1.0, 3.0 - 2.0 * spt), + std::min(2.0 * smt + 1.0, 1.0 - 2.0 * smt)) * + x_sign; + // Normalize the computed vector. + const T normSquared = x * x + y * y + z * z; + if (normSquared < 1e-6) { + out_vector[0] = 0; + out_vector[1] = 0; + out_vector[2] = 0; + } else { + const T d = 1.0 / std::sqrt(normSquared); + out_vector[0] = x * d; + out_vector[1] = y * d; + out_vector[2] = z * d; + } + } + + template + void QuantizedOctaherdalCoordsToUnitVector(int32_t in_s, int32_t in_t, + T *out_vector) const { + T scale = 1.0 / static_cast(max_value_); + OctaherdalCoordsToUnitVector(in_s * scale, in_t * scale, out_vector); + } + + // |s| and |t| are expected to be signed values. + inline bool IsInDiamond(const int32_t &s, const int32_t &t) const { + // Expect center already at origin. + DCHECK_LE(s, center_value_); + DCHECK_LE(t, center_value_); + DCHECK_GE(s, -center_value_); + DCHECK_GE(t, -center_value_); + return std::abs(s) + std::abs(t) <= center_value_; + } + + void InvertDiamond(int32_t *s, int32_t *t) const { + // Expect center already at origin. + DCHECK_LE(*s, center_value_); + DCHECK_LE(*t, center_value_); + DCHECK_GE(*s, -center_value_); + DCHECK_GE(*t, -center_value_); + int32_t sign_s = 0; + int32_t sign_t = 0; + if (*s >= 0 && *t >= 0) { + sign_s = 1; + sign_t = 1; + } else if (*s <= 0 && *t <= 0) { + sign_s = -1; + sign_t = -1; + } else { + sign_s = (*s > 0) ? 1 : -1; + sign_t = (*t > 0) ? 1 : -1; + } + + const int32_t corner_point_s = sign_s * center_value_; + const int32_t corner_point_t = sign_t * center_value_; + *s = 2 * *s - corner_point_s; + *t = 2 * *t - corner_point_t; + if (sign_s * sign_t >= 0) { + int32_t temp = *s; + *s = -*t; + *t = -temp; + } else { + std::swap(*s, *t); + } + *s = (*s + corner_point_s) / 2; + *t = (*t + corner_point_t) / 2; + } + + void InvertDirection(int32_t *s, int32_t *t) const { + // Expect center already at origin. + DCHECK_LE(*s, center_value_); + DCHECK_LE(*t, center_value_); + DCHECK_GE(*s, -center_value_); + DCHECK_GE(*t, -center_value_); + *s *= -1; + *t *= -1; + this->InvertDiamond(s, t); + } + + // For correction values. + int32_t ModMax(int32_t x) const { + if (x > this->center_value()) + return x - this->max_quantized_value(); + if (x < -this->center_value()) + return x + this->max_quantized_value(); + return x; + } + + // For correction values. + int32_t MakePositive(int32_t x) const { + DCHECK_LE(x, this->center_value() * 2); + if (x < 0) + return x + this->max_quantized_value(); + return x; + } + + int32_t quantization_bits() const { return quantization_bits_; } + int32_t max_quantized_value() const { return max_quantized_value_; } + int32_t max_value() const { return max_value_; } + int32_t center_value() const { return center_value_; } + + private: + int32_t quantization_bits_; + int32_t max_quantized_value_; + int32_t max_value_; + int32_t center_value_; +}; +} // namespace draco + +#endif // DRACO_COMPRESSION_ATTRIBUTES_NORMAL_COMPRESSION_UTILS_H_ diff --git a/compression/attributes/points_sequencer.h b/src/draco/compression/attributes/points_sequencer.h similarity index 98% rename from compression/attributes/points_sequencer.h rename to src/draco/compression/attributes/points_sequencer.h index 14c6a35c..2f4f7e16 100644 --- a/compression/attributes/points_sequencer.h +++ b/src/draco/compression/attributes/points_sequencer.h @@ -17,7 +17,7 @@ #include -#include "point_cloud/point_attribute.h" +#include "draco/attributes/point_attribute.h" namespace draco { diff --git a/src/draco/compression/attributes/prediction_schemes/mesh_prediction_scheme_constrained_multi_parallelogram_decoder.h b/src/draco/compression/attributes/prediction_schemes/mesh_prediction_scheme_constrained_multi_parallelogram_decoder.h new file mode 100644 index 00000000..e2e08f83 --- /dev/null +++ b/src/draco/compression/attributes/prediction_schemes/mesh_prediction_scheme_constrained_multi_parallelogram_decoder.h @@ -0,0 +1,217 @@ +// Copyright 2016 The Draco Authors. +// +// Licensed under the Apache License, Version 2.0 (the "License"); +// you may not use this file except in compliance with the License. +// You may obtain a copy of the License at +// +// http://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an "AS IS" BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// See the License for the specific language governing permissions and +// limitations under the License. +// +#ifndef DRACO_COMPRESSION_ATTRIBUTES_PREDICTION_SCHEMES_MESH_PREDICTION_SCHEME_CONSTRAINED_MULTI_PARALLELOGRAM_DECODER_H_ +#define DRACO_COMPRESSION_ATTRIBUTES_PREDICTION_SCHEMES_MESH_PREDICTION_SCHEME_CONSTRAINED_MULTI_PARALLELOGRAM_DECODER_H_ + +#include +#include + +#include "draco/compression/attributes/prediction_schemes/mesh_prediction_scheme_constrained_multi_parallelogram_shared.h" +#include "draco/compression/attributes/prediction_schemes/mesh_prediction_scheme_decoder.h" +#include "draco/compression/attributes/prediction_schemes/mesh_prediction_scheme_parallelogram_shared.h" +#include "draco/core/bit_coders/rans_bit_decoder.h" +#include "draco/core/varint_decoding.h" + +namespace draco { + +// Decoder for predictions encoded with the constrained multi-parallelogram +// encoder. See the corresponding encoder for more details about the prediction +// method. +template +class MeshPredictionSchemeConstrainedMultiParallelogramDecoder + : public MeshPredictionSchemeDecoder { + public: + using CorrType = + typename PredictionSchemeDecoder::CorrType; + using CornerTable = typename MeshDataT::CornerTable; + + explicit MeshPredictionSchemeConstrainedMultiParallelogramDecoder( + const PointAttribute *attribute) + : MeshPredictionSchemeDecoder( + attribute), + selected_mode_(Mode::OPTIMAL_MULTI_PARALLELOGRAM) {} + MeshPredictionSchemeConstrainedMultiParallelogramDecoder( + const PointAttribute *attribute, const TransformT &transform, + const MeshDataT &mesh_data) + : MeshPredictionSchemeDecoder( + attribute, transform, mesh_data), + selected_mode_(Mode::OPTIMAL_MULTI_PARALLELOGRAM) {} + + bool ComputeOriginalValues(const CorrType *in_corr, DataTypeT *out_data, + int size, int num_components, + const PointIndex *entry_to_point_id_map) override; + + bool DecodePredictionData(DecoderBuffer *buffer) override; + + PredictionSchemeMethod GetPredictionMethod() const override { + return MESH_PREDICTION_CONSTRAINED_MULTI_PARALLELOGRAM; + } + + bool IsInitialized() const override { + return this->mesh_data().IsInitialized(); + } + + private: + typedef constrained_multi_parallelogram::Mode Mode; + static constexpr int kMaxNumParallelograms = + constrained_multi_parallelogram::kMaxNumParallelograms; + // Crease edges are used to store whether any given edge should be used for + // parallelogram prediction or not. New values are added in the order in which + // the edges are processed. For better compression, the flags are stored in + // in separate contexts based on the number of available parallelograms at a + // given vertex. + std::vector is_crease_edge_[kMaxNumParallelograms]; + Mode selected_mode_; +}; + +template +bool MeshPredictionSchemeConstrainedMultiParallelogramDecoder< + DataTypeT, TransformT, MeshDataT>:: + ComputeOriginalValues(const CorrType *in_corr, DataTypeT *out_data, + int /* size */, int num_components, + const PointIndex * /* entry_to_point_id_map */) { + this->transform().Initialize(num_components); + + // Predicted values for all simple parallelograms encountered at any given + // vertex. + std::vector pred_vals[kMaxNumParallelograms]; + for (int i = 0; i < kMaxNumParallelograms; ++i) { + pred_vals[i].resize(num_components, 0); + } + this->transform().ComputeOriginalValue(pred_vals[0].data(), in_corr, + out_data); + + const CornerTable *const table = this->mesh_data().corner_table(); + const std::vector *const vertex_to_data_map = + this->mesh_data().vertex_to_data_map(); + + // Current position in the |is_crease_edge_| array for each context. + std::vector is_crease_edge_pos(kMaxNumParallelograms, 0); + + // Used to store predicted value for multi-parallelogram prediction. + std::vector multi_pred_vals(num_components); + + const int corner_map_size = this->mesh_data().data_to_corner_map()->size(); + for (int p = 1; p < corner_map_size; ++p) { + const CornerIndex start_corner_id = + this->mesh_data().data_to_corner_map()->at(p); + + CornerIndex corner_id(start_corner_id); + int num_parallelograms = 0; + bool first_pass = true; + while (corner_id >= 0) { + if (ComputeParallelogramPrediction( + p, corner_id, table, *vertex_to_data_map, out_data, + num_components, &(pred_vals[num_parallelograms][0]))) { + // Parallelogram prediction applied and stored in + // |pred_vals[num_parallelograms]| + ++num_parallelograms; + // Stop processing when we reach the maximum number of allowed + // parallelograms. + if (num_parallelograms == kMaxNumParallelograms) + break; + } + + // Proceed to the next corner attached to the vertex. First swing left + // and if we reach a boundary, swing right from the start corner. + if (first_pass) { + corner_id = table->SwingLeft(corner_id); + } else { + corner_id = table->SwingRight(corner_id); + } + if (corner_id == start_corner_id) { + break; + } + if (corner_id < 0 && first_pass) { + first_pass = false; + corner_id = table->SwingRight(start_corner_id); + } + } + + // Check which of the available parallelograms are actually used and compute + // the final predicted value. + int num_used_parallelograms = 0; + if (num_parallelograms > 0) { + for (int i = 0; i < num_components; ++i) { + multi_pred_vals[i] = 0; + } + // Check which parallelograms are actually used. + for (int i = 0; i < num_parallelograms; ++i) { + const int context = num_parallelograms - 1; + const bool is_crease = + is_crease_edge_[context][is_crease_edge_pos[context]++]; + if (!is_crease) { + ++num_used_parallelograms; + for (int j = 0; j < num_components; ++j) { + multi_pred_vals[j] += pred_vals[i][j]; + } + } + } + } + const int dst_offset = p * num_components; + if (num_used_parallelograms == 0) { + // No parallelogram was valid. + // We use the last decoded point as a reference. + const int src_offset = (p - 1) * num_components; + this->transform().ComputeOriginalValue( + out_data + src_offset, in_corr + dst_offset, out_data + dst_offset); + } else { + // Compute the correction from the predicted value. + for (int c = 0; c < num_components; ++c) { + multi_pred_vals[c] /= num_used_parallelograms; + } + this->transform().ComputeOriginalValue( + multi_pred_vals.data(), in_corr + dst_offset, out_data + dst_offset); + } + } + return true; +} + +template +bool MeshPredictionSchemeConstrainedMultiParallelogramDecoder< + DataTypeT, TransformT, MeshDataT>::DecodePredictionData(DecoderBuffer + *buffer) { + // Decode prediction mode. + uint8_t mode; + if (!buffer->Decode(&mode)) { + return false; + } + + if (mode != Mode::OPTIMAL_MULTI_PARALLELOGRAM) { + // Unsupported mode. + return false; + } + + // Encode selected edges using separate rans bit coder for each context. + for (int i = 0; i < kMaxNumParallelograms; ++i) { + uint32_t num_flags; + DecodeVarint(&num_flags, buffer); + if (num_flags > 0) { + is_crease_edge_[i].resize(num_flags); + RAnsBitDecoder decoder; + decoder.StartDecoding(buffer); + for (int j = 0; j < num_flags; ++j) { + is_crease_edge_[i][j] = decoder.DecodeNextBit(); + } + decoder.EndDecoding(); + } + } + return MeshPredictionSchemeDecoder::DecodePredictionData(buffer); +} + +} // namespace draco + +#endif // DRACO_COMPRESSION_ATTRIBUTES_PREDICTION_SCHEMES_MESH_PREDICTION_SCHEME_CONSTRAINED_MULTI_PARALLELOGRAM_DECODER_H_ diff --git a/compression/attributes/prediction_schemes/mesh_prediction_scheme_constrained_multi_parallelogram.h b/src/draco/compression/attributes/prediction_schemes/mesh_prediction_scheme_constrained_multi_parallelogram_encoder.h similarity index 57% rename from compression/attributes/prediction_schemes/mesh_prediction_scheme_constrained_multi_parallelogram.h rename to src/draco/compression/attributes/prediction_schemes/mesh_prediction_scheme_constrained_multi_parallelogram_encoder.h index 1b1dd647..6a00a872 100644 --- a/compression/attributes/prediction_schemes/mesh_prediction_scheme_constrained_multi_parallelogram.h +++ b/src/draco/compression/attributes/prediction_schemes/mesh_prediction_scheme_constrained_multi_parallelogram_encoder.h @@ -12,22 +12,21 @@ // See the License for the specific language governing permissions and // limitations under the License. // -#ifndef DRACO_COMPRESSION_ATTRIBUTES_PREDICTION_SCHEMES_MESH_PREDICTION_SCHEME_CONSTRAINED_MULTI_PARALLELOGRAM_H_ -#define DRACO_COMPRESSION_ATTRIBUTES_PREDICTION_SCHEMES_MESH_PREDICTION_SCHEME_CONSTRAINED_MULTI_PARALLELOGRAM_H_ +#ifndef DRACO_COMPRESSION_ATTRIBUTES_PREDICTION_SCHEMES_MESH_PREDICTION_SCHEME_CONSTRAINED_MULTI_PARALLELOGRAM_ENCODER_H_ +#define DRACO_COMPRESSION_ATTRIBUTES_PREDICTION_SCHEMES_MESH_PREDICTION_SCHEME_CONSTRAINED_MULTI_PARALLELOGRAM_ENCODER_H_ #include #include -#include "compression/attributes/prediction_schemes/mesh_prediction_scheme.h" -#include "compression/attributes/prediction_schemes/mesh_prediction_scheme_parallelogram_shared.h" -#include "core/rans_bit_decoder.h" -#include "core/rans_bit_encoder.h" -#include "core/varint_decoding.h" -#include "core/varint_encoding.h" +#include "draco/compression/attributes/prediction_schemes/mesh_prediction_scheme_constrained_multi_parallelogram_shared.h" +#include "draco/compression/attributes/prediction_schemes/mesh_prediction_scheme_encoder.h" +#include "draco/compression/attributes/prediction_schemes/mesh_prediction_scheme_parallelogram_shared.h" +#include "draco/core/bit_coders/rans_bit_encoder.h" +#include "draco/core/varint_encoding.h" namespace draco { -// Compared to standard multi parallelogram, constrained multi parallelogram can +// Compared to standard multi-parallelogram, constrained multi-parallelogram can // explicitly select which of the available parallelograms are going to be used // for the prediction by marking crease edges between two triangles. This // requires storing extra data, but it allows the predictor to avoid using @@ -35,34 +34,31 @@ namespace draco { // our current implementation limits the maximum number of used parallelograms // to four, which covers >95% of the cases (on average, there are only two // parallelograms available for any given vertex). -// TODO(ostava): Split this into two classes (encoder x decoder). template -class MeshPredictionSchemeConstrainedMultiParallelogram - : public MeshPredictionScheme { +class MeshPredictionSchemeConstrainedMultiParallelogramEncoder + : public MeshPredictionSchemeEncoder { public: - using CorrType = typename PredictionScheme::CorrType; + using CorrType = + typename PredictionSchemeEncoder::CorrType; using CornerTable = typename MeshDataT::CornerTable; - explicit MeshPredictionSchemeConstrainedMultiParallelogram( + explicit MeshPredictionSchemeConstrainedMultiParallelogramEncoder( const PointAttribute *attribute) - : MeshPredictionScheme(attribute), - selected_mode_(OPTIMAL_MULTI_PARALLELOGRAM) {} - MeshPredictionSchemeConstrainedMultiParallelogram( + : MeshPredictionSchemeEncoder( + attribute), + selected_mode_(Mode::OPTIMAL_MULTI_PARALLELOGRAM) {} + MeshPredictionSchemeConstrainedMultiParallelogramEncoder( const PointAttribute *attribute, const TransformT &transform, const MeshDataT &mesh_data) - : MeshPredictionScheme( + : MeshPredictionSchemeEncoder( attribute, transform, mesh_data), - selected_mode_(OPTIMAL_MULTI_PARALLELOGRAM) {} + selected_mode_(Mode::OPTIMAL_MULTI_PARALLELOGRAM) {} - bool Encode(const DataTypeT *in_data, CorrType *out_corr, int size, - int num_components, - const PointIndex *entry_to_point_id_map) override; - bool Decode(const CorrType *in_corr, DataTypeT *out_data, int size, - int num_components, - const PointIndex *entry_to_point_id_map) override; + bool ComputeCorrectionValues( + const DataTypeT *in_data, CorrType *out_corr, int size, + int num_components, const PointIndex *entry_to_point_id_map) override; bool EncodePredictionData(EncoderBuffer *buffer) override; - bool DecodePredictionData(DecoderBuffer *buffer) override; PredictionSchemeMethod GetPredictionMethod() const override { return MESH_PREDICTION_CONSTRAINED_MULTI_PARALLELOGRAM; @@ -73,13 +69,9 @@ class MeshPredictionSchemeConstrainedMultiParallelogram } private: - enum Mode { - // Selects the optimal multi-parallelogram from up to 4 available - // parallelograms. - OPTIMAL_MULTI_PARALLELOGRAM = 0, - }; - - static constexpr int kMaxNumParallelograms = 4; + typedef constrained_multi_parallelogram::Mode Mode; + static constexpr int kMaxNumParallelograms = + constrained_multi_parallelogram::kMaxNumParallelograms; // Crease edges are used to store whether any given edge should be used for // parallelogram prediction or not. New values are added in the order in which // the edges are processed. For better compression, the flags are stored in @@ -90,12 +82,12 @@ class MeshPredictionSchemeConstrainedMultiParallelogram }; template -bool MeshPredictionSchemeConstrainedMultiParallelogram< - DataTypeT, TransformT, - MeshDataT>::Encode(const DataTypeT *in_data, CorrType *out_corr, int size, - int num_components, - const PointIndex * /* entry_to_point_id_map */) { - this->transform().InitializeEncoding(in_data, size, num_components); +bool MeshPredictionSchemeConstrainedMultiParallelogramEncoder< + DataTypeT, TransformT, MeshDataT>:: + ComputeCorrectionValues(const DataTypeT *in_data, CorrType *out_corr, + int size, int num_components, + const PointIndex * /* entry_to_point_id_map */) { + this->transform().Initialize(in_data, size, num_components); const CornerTable *const table = this->mesh_data().corner_table(); const std::vector *const vertex_to_data_map = this->mesh_data().vertex_to_data_map(); @@ -216,7 +208,7 @@ bool MeshPredictionSchemeConstrainedMultiParallelogram< for (int c = 0; c < num_components; ++c) { multi_pred_vals[c] += pred_vals[j][c]; } - // Set j'th bit of the configuration. + // Set jth bit of the configuration. configuration |= (1 << j); } error = 0; @@ -247,122 +239,18 @@ bool MeshPredictionSchemeConstrainedMultiParallelogram< } this->transform().ComputeCorrection(in_data + dst_offset, best_prediction.predicted_value.data(), - out_corr, dst_offset); + out_corr + dst_offset); } // First element is always fixed because it cannot be predicted. for (int i = 0; i < num_components; ++i) { pred_vals[0][i] = static_cast(0); } - this->transform().ComputeCorrection(in_data, pred_vals[0].data(), out_corr, - 0); + this->transform().ComputeCorrection(in_data, pred_vals[0].data(), out_corr); return true; } template -bool MeshPredictionSchemeConstrainedMultiParallelogram< - DataTypeT, TransformT, - MeshDataT>::Decode(const CorrType *in_corr, DataTypeT *out_data, - int /* size */, int num_components, - const PointIndex * /* entry_to_point_id_map */) { - this->transform().InitializeDecoding(num_components); - - // Predicted values for all simple parallelograms encountered at any given - // vertex. - std::vector pred_vals[kMaxNumParallelograms]; - for (int i = 0; i < kMaxNumParallelograms; ++i) { - pred_vals[i].resize(num_components, 0); - } - this->transform().ComputeOriginalValue(pred_vals[0].data(), in_corr, out_data, - 0); - - const CornerTable *const table = this->mesh_data().corner_table(); - const std::vector *const vertex_to_data_map = - this->mesh_data().vertex_to_data_map(); - - // Current position in the |is_crease_edge_| array for each context. - std::vector is_crease_edge_pos(kMaxNumParallelograms, 0); - - // Used to store predicted value for multi-parallelogram prediction. - std::vector multi_pred_vals(num_components); - - const int corner_map_size = this->mesh_data().data_to_corner_map()->size(); - for (int p = 1; p < corner_map_size; ++p) { - const CornerIndex start_corner_id = - this->mesh_data().data_to_corner_map()->at(p); - - CornerIndex corner_id(start_corner_id); - int num_parallelograms = 0; - bool first_pass = true; - while (corner_id >= 0) { - if (ComputeParallelogramPrediction( - p, corner_id, table, *vertex_to_data_map, out_data, - num_components, &(pred_vals[num_parallelograms][0]))) { - // Parallelogram prediction applied and stored in - // |pred_vals[num_parallelograms]| - ++num_parallelograms; - // Stop processing when we reach the maximum number of allowed - // parallelograms. - if (num_parallelograms == kMaxNumParallelograms) - break; - } - - // Proceed to the next corner attached to the vertex. First swing left - // and if we reach a boundary, swing right from the start corner. - if (first_pass) { - corner_id = table->SwingLeft(corner_id); - } else { - corner_id = table->SwingRight(corner_id); - } - if (corner_id == start_corner_id) { - break; - } - if (corner_id < 0 && first_pass) { - first_pass = false; - corner_id = table->SwingRight(start_corner_id); - } - } - - // Check which of the available parallelograms are actually used and compute - // the final predicted value. - int num_used_parallelograms = 0; - if (num_parallelograms > 0) { - for (int i = 0; i < num_components; ++i) { - multi_pred_vals[i] = 0; - } - // Check which parallelograms are actually used. - for (int i = 0; i < num_parallelograms; ++i) { - const int context = num_parallelograms - 1; - const bool is_crease = - is_crease_edge_[context][is_crease_edge_pos[context]++]; - if (!is_crease) { - ++num_used_parallelograms; - for (int j = 0; j < num_components; ++j) { - multi_pred_vals[j] += pred_vals[i][j]; - } - } - } - } - const int dst_offset = p * num_components; - if (num_used_parallelograms == 0) { - // No parallelogram was valid. - // We use the last decoded point as a reference. - const int src_offset = (p - 1) * num_components; - this->transform().ComputeOriginalValue(out_data + src_offset, in_corr, - out_data + dst_offset, dst_offset); - } else { - // Compute the correction from the predicted value. - for (int c = 0; c < num_components; ++c) { - multi_pred_vals[c] /= num_used_parallelograms; - } - this->transform().ComputeOriginalValue(multi_pred_vals.data(), in_corr, - out_data + dst_offset, dst_offset); - } - } - return true; -} - -template -bool MeshPredictionSchemeConstrainedMultiParallelogram< +bool MeshPredictionSchemeConstrainedMultiParallelogramEncoder< DataTypeT, TransformT, MeshDataT>::EncodePredictionData(EncoderBuffer *buffer) { // Encode prediction mode. @@ -390,43 +278,10 @@ bool MeshPredictionSchemeConstrainedMultiParallelogram< encoder.EndEncoding(buffer); } } - return MeshPredictionScheme::EncodePredictionData(buffer); -} - -template -bool MeshPredictionSchemeConstrainedMultiParallelogram< - DataTypeT, TransformT, MeshDataT>::DecodePredictionData(DecoderBuffer - *buffer) { - // Decode prediction mode. - uint8_t mode; - if (!buffer->Decode(&mode)) { - return false; - } - - if (mode != OPTIMAL_MULTI_PARALLELOGRAM) { - // Unsupported mode. - return false; - } - - // Encode selected edges using separate rans bit coder for each context. - for (int i = 0; i < kMaxNumParallelograms; ++i) { - uint32_t num_flags; - DecodeVarint(&num_flags, buffer); - if (num_flags > 0) { - is_crease_edge_[i].resize(num_flags); - RAnsBitDecoder decoder; - decoder.StartDecoding(buffer); - for (int j = 0; j < num_flags; ++j) { - is_crease_edge_[i][j] = decoder.DecodeNextBit(); - } - decoder.EndDecoding(); - } - } - return MeshPredictionScheme::DecodePredictionData(buffer); + return MeshPredictionSchemeEncoder::EncodePredictionData(buffer); } } // namespace draco -#endif // DRACO_COMPRESSION_ATTRIBUTES_PREDICTION_SCHEMES_MESH_PREDICTION_SCHEME_CONSTRAINED_MULTI_PARALLELOGRAM_H_ +#endif // DRACO_COMPRESSION_ATTRIBUTES_PREDICTION_SCHEMES_MESH_PREDICTION_SCHEME_CONSTRAINED_MULTI_PARALLELOGRAM_ENCODER_H_ diff --git a/src/draco/compression/attributes/prediction_schemes/mesh_prediction_scheme_constrained_multi_parallelogram_shared.h b/src/draco/compression/attributes/prediction_schemes/mesh_prediction_scheme_constrained_multi_parallelogram_shared.h new file mode 100644 index 00000000..c7a4e351 --- /dev/null +++ b/src/draco/compression/attributes/prediction_schemes/mesh_prediction_scheme_constrained_multi_parallelogram_shared.h @@ -0,0 +1,34 @@ +// Copyright 2016 The Draco Authors. +// +// Licensed under the Apache License, Version 2.0 (the "License"); +// you may not use this file except in compliance with the License. +// You may obtain a copy of the License at +// +// http://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an "AS IS" BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// See the License for the specific language governing permissions and +// limitations under the License. +// +#ifndef DRACO_COMPRESSION_ATTRIBUTES_PREDICTION_SCHEMES_MESH_PREDICTION_SCHEME_CONSTRAINED_MULTI_PARALLELOGRAM_SHARED_H_ +#define DRACO_COMPRESSION_ATTRIBUTES_PREDICTION_SCHEMES_MESH_PREDICTION_SCHEME_CONSTRAINED_MULTI_PARALLELOGRAM_SHARED_H_ + +namespace draco { + +// Data shared between constrained multi-parallelogram encoder and decoder. +namespace constrained_multi_parallelogram { + +enum Mode { + // Selects the optimal multi-parallelogram from up to 4 available + // parallelograms. + OPTIMAL_MULTI_PARALLELOGRAM = 0, +}; + +static constexpr int kMaxNumParallelograms = 4; + +} // namespace constrained_multi_parallelogram +} // namespace draco + +#endif // DRACO_COMPRESSION_ATTRIBUTES_PREDICTION_SCHEMES_MESH_PREDICTION_SCHEME_CONSTRAINED_MULTI_PARALLELOGRAM_SHARED_H_ diff --git a/compression/attributes/prediction_schemes/mesh_prediction_scheme_data.h b/src/draco/compression/attributes/prediction_schemes/mesh_prediction_scheme_data.h similarity index 97% rename from compression/attributes/prediction_schemes/mesh_prediction_scheme_data.h rename to src/draco/compression/attributes/prediction_schemes/mesh_prediction_scheme_data.h index 26f04ab5..f7129525 100644 --- a/compression/attributes/prediction_schemes/mesh_prediction_scheme_data.h +++ b/src/draco/compression/attributes/prediction_schemes/mesh_prediction_scheme_data.h @@ -15,8 +15,8 @@ #ifndef DRACO_COMPRESSION_ATTRIBUTES_MESH_PREDICTION_SCHEMES_PREDICTION_SCHEME_DATA_H_ #define DRACO_COMPRESSION_ATTRIBUTES_MESH_PREDICTION_SCHEMES_PREDICTION_SCHEME_DATA_H_ -#include "mesh/corner_table.h" -#include "mesh/mesh.h" +#include "draco/mesh/corner_table.h" +#include "draco/mesh/mesh.h" namespace draco { diff --git a/compression/attributes/prediction_schemes/mesh_prediction_scheme.h b/src/draco/compression/attributes/prediction_schemes/mesh_prediction_scheme_decoder.h similarity index 57% rename from compression/attributes/prediction_schemes/mesh_prediction_scheme.h rename to src/draco/compression/attributes/prediction_schemes/mesh_prediction_scheme_decoder.h index f881952c..6694a981 100644 --- a/compression/attributes/prediction_schemes/mesh_prediction_scheme.h +++ b/src/draco/compression/attributes/prediction_schemes/mesh_prediction_scheme_decoder.h @@ -12,24 +12,26 @@ // See the License for the specific language governing permissions and // limitations under the License. // -#ifndef DRACO_COMPRESSION_ATTRIBUTES_PREDICTION_SCHEMES_MESH_PREDICTION_SCHEME_H_ -#define DRACO_COMPRESSION_ATTRIBUTES_PREDICTION_SCHEMES_MESH_PREDICTION_SCHEME_H_ +#ifndef DRACO_COMPRESSION_ATTRIBUTES_PREDICTION_SCHEMES_MESH_PREDICTION_SCHEME_DECODER_H_ +#define DRACO_COMPRESSION_ATTRIBUTES_PREDICTION_SCHEMES_MESH_PREDICTION_SCHEME_DECODER_H_ -#include "compression/attributes/prediction_schemes/mesh_prediction_scheme_data.h" -#include "compression/attributes/prediction_schemes/prediction_scheme.h" +#include "draco/compression/attributes/prediction_schemes/mesh_prediction_scheme_data.h" +#include "draco/compression/attributes/prediction_schemes/prediction_scheme_decoder.h" namespace draco { -// Base class for all mesh prediction schemes that use the mesh connectivity -// data. |MeshDataT| can be any class that provides the same interface as the -// PredictionSchemeMeshData class. +// Base class for all mesh prediction scheme decoders that use the mesh +// connectivity data. |MeshDataT| can be any class that provides the same +// interface as the PredictionSchemeMeshData class. template -class MeshPredictionScheme : public PredictionScheme { +class MeshPredictionSchemeDecoder + : public PredictionSchemeDecoder { public: typedef MeshDataT MeshData; - MeshPredictionScheme(const PointAttribute *attribute, - const TransformT &transform, const MeshDataT &mesh_data) - : PredictionScheme(attribute, transform), + MeshPredictionSchemeDecoder(const PointAttribute *attribute, + const TransformT &transform, + const MeshDataT &mesh_data) + : PredictionSchemeDecoder(attribute, transform), mesh_data_(mesh_data) {} protected: @@ -41,4 +43,4 @@ class MeshPredictionScheme : public PredictionScheme { } // namespace draco -#endif // DRACO_COMPRESSION_ATTRIBUTES_PREDICTION_SCHEMES_MESH_PREDICTION_SCHEME_H_ +#endif // DRACO_COMPRESSION_ATTRIBUTES_PREDICTION_SCHEMES_MESH_PREDICTION_SCHEME_DECODER_H_ diff --git a/src/draco/compression/attributes/prediction_schemes/mesh_prediction_scheme_encoder.h b/src/draco/compression/attributes/prediction_schemes/mesh_prediction_scheme_encoder.h new file mode 100644 index 00000000..ab3c81a3 --- /dev/null +++ b/src/draco/compression/attributes/prediction_schemes/mesh_prediction_scheme_encoder.h @@ -0,0 +1,46 @@ +// Copyright 2016 The Draco Authors. +// +// Licensed under the Apache License, Version 2.0 (the "License"); +// you may not use this file except in compliance with the License. +// You may obtain a copy of the License at +// +// http://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an "AS IS" BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// See the License for the specific language governing permissions and +// limitations under the License. +// +#ifndef DRACO_COMPRESSION_ATTRIBUTES_PREDICTION_SCHEMES_MESH_PREDICTION_SCHEME_ENCODER_H_ +#define DRACO_COMPRESSION_ATTRIBUTES_PREDICTION_SCHEMES_MESH_PREDICTION_SCHEME_ENCODER_H_ + +#include "draco/compression/attributes/prediction_schemes/mesh_prediction_scheme_data.h" +#include "draco/compression/attributes/prediction_schemes/prediction_scheme_encoder.h" + +namespace draco { + +// Base class for all mesh prediction scheme encoders that use the mesh +// connectivity data. |MeshDataT| can be any class that provides the same +// interface as the PredictionSchemeMeshData class. +template +class MeshPredictionSchemeEncoder + : public PredictionSchemeEncoder { + public: + typedef MeshDataT MeshData; + MeshPredictionSchemeEncoder(const PointAttribute *attribute, + const TransformT &transform, + const MeshDataT &mesh_data) + : PredictionSchemeEncoder(attribute, transform), + mesh_data_(mesh_data) {} + + protected: + const MeshData &mesh_data() const { return mesh_data_; } + + private: + MeshData mesh_data_; +}; + +} // namespace draco + +#endif // DRACO_COMPRESSION_ATTRIBUTES_PREDICTION_SCHEMES_MESH_PREDICTION_SCHEME_ENCODER_H_ diff --git a/src/draco/compression/attributes/prediction_schemes/mesh_prediction_scheme_geometric_normal_decoder.h b/src/draco/compression/attributes/prediction_schemes/mesh_prediction_scheme_geometric_normal_decoder.h new file mode 100644 index 00000000..93263b87 --- /dev/null +++ b/src/draco/compression/attributes/prediction_schemes/mesh_prediction_scheme_geometric_normal_decoder.h @@ -0,0 +1,153 @@ +// Copyright 2017 The Draco Authors. +// +// Licensed under the Apache License, Version 2.0 (the "License"); +// you may not use this file except in compliance with the License. +// You may obtain a copy of the License at +// +// http://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an "AS IS" BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// See the License for the specific language governing permissions and +// limitations under the License. +// +#ifndef DRACO_COMPRESSION_ATTRIBUTES_PREDICTION_SCHEMES_MESH_PREDICTION_SCHEME_GEOMETRIC_NORMAL_DECODER_H_ +#define DRACO_COMPRESSION_ATTRIBUTES_PREDICTION_SCHEMES_MESH_PREDICTION_SCHEME_GEOMETRIC_NORMAL_DECODER_H_ + +#include "draco/compression/attributes/prediction_schemes/mesh_prediction_scheme_decoder.h" +#include "draco/compression/attributes/prediction_schemes/mesh_prediction_scheme_geometric_normal_predictor.h" +#include "draco/core/bit_coders/rans_bit_decoder.h" + +namespace draco { + +// See MeshPredictionSchemeGeometricNormalEncoder for documentation. +template +class MeshPredictionSchemeGeometricNormalDecoder + : public MeshPredictionSchemeDecoder { + public: + using CorrType = typename MeshPredictionSchemeDecoder::CorrType; + MeshPredictionSchemeGeometricNormalDecoder(const PointAttribute *attribute, + const TransformT &transform, + const MeshDataT &mesh_data) + : MeshPredictionSchemeDecoder( + attribute, transform, mesh_data), + predictor_(mesh_data) {} + + private: + MeshPredictionSchemeGeometricNormalDecoder() {} + + public: + bool ComputeOriginalValues(const CorrType *in_corr, DataTypeT *out_data, + int size, int num_components, + const PointIndex *entry_to_point_id_map) override; + + bool DecodePredictionData(DecoderBuffer *buffer) override; + + PredictionSchemeMethod GetPredictionMethod() const override { + return MESH_PREDICTION_GEOMETRIC_NORMAL; + } + + bool IsInitialized() const override { + if (!predictor_.IsInitialized()) + return false; + if (!this->mesh_data().IsInitialized()) + return false; + if (!octahedron_tool_box_.IsInitialized()) + return false; + return true; + } + + int GetNumParentAttributes() const override { return 1; } + + GeometryAttribute::Type GetParentAttributeType(int i) const override { + DCHECK_EQ(i, 0); + (void)i; + return GeometryAttribute::POSITION; + } + + bool SetParentAttribute(const PointAttribute *att) override { + if (att->attribute_type() != GeometryAttribute::POSITION) + return false; // Invalid attribute type. + if (att->num_components() != 3) + return false; // Currently works only for 3 component positions. + predictor_.SetPositionAttribute(*att); + return true; + } + void SetQuantizationBits(int q) { + octahedron_tool_box_.SetQuantizationBits(q); + } + + private: + MeshPredictionSchemeGeometricNormalPredictor + predictor_; + OctahedronToolBox octahedron_tool_box_; + RAnsBitDecoder flip_normal_bit_decoder_; +}; + +template +bool MeshPredictionSchemeGeometricNormalDecoder< + DataTypeT, TransformT, + MeshDataT>::ComputeOriginalValues(const CorrType *in_corr, + DataTypeT *out_data, int /* size */, + int num_components, + const PointIndex *entry_to_point_id_map) { + this->SetQuantizationBits(this->transform().quantization_bits()); + predictor_.SetEntryToPointIdMap(entry_to_point_id_map); + DCHECK(this->IsInitialized()); + + // Expecting in_data in octahedral coordinates, i.e., portable attribute. + DCHECK_EQ(num_components, 2); + + flip_normal_bit_decoder_.EndDecoding(); + + const int corner_map_size = this->mesh_data().data_to_corner_map()->size(); + + VectorD pred_normal_3d; + int32_t pred_normal_oct[2]; + + for (int data_id = 0; data_id < corner_map_size; ++data_id) { + const CornerIndex corner_id = + this->mesh_data().data_to_corner_map()->at(data_id); + predictor_.ComputePredictedValue(corner_id, pred_normal_3d.data()); + + // Compute predicted octahedral coordinates. + octahedron_tool_box_.CanonicalizeIntegerVector(pred_normal_3d.data()); + DCHECK_EQ(pred_normal_3d.AbsSum(), octahedron_tool_box_.center_value()); + if (flip_normal_bit_decoder_.DecodeNextBit()) { + pred_normal_3d = -pred_normal_3d; + } + octahedron_tool_box_.IntegerVectorToQuantizedOctahedralCoords( + pred_normal_3d.data(), pred_normal_oct, pred_normal_oct + 1); + + const int data_offset = data_id * 2; + this->transform().ComputeOriginalValue( + pred_normal_oct, in_corr + data_offset, out_data + data_offset); + } + return true; +} + +template +bool MeshPredictionSchemeGeometricNormalDecoder< + DataTypeT, TransformT, MeshDataT>::DecodePredictionData(DecoderBuffer + *buffer) { + // Get data needed for transform + if (!this->transform().DecodeTransformData(buffer)) + return false; + + uint8_t prediction_mode; + buffer->Decode(&prediction_mode); + if (prediction_mode) + return false; + + // Init normal flips. + if (!flip_normal_bit_decoder_.StartDecoding(buffer)) + return false; + + return true; +} + +} // namespace draco + +#endif // DRACO_COMPRESSION_ATTRIBUTES_PREDICTION_SCHEMES_MESH_PREDICTION_SCHEME_GEOMETRIC_NORMAL_DECODER_H_ diff --git a/src/draco/compression/attributes/prediction_schemes/mesh_prediction_scheme_geometric_normal_encoder.h b/src/draco/compression/attributes/prediction_schemes/mesh_prediction_scheme_geometric_normal_encoder.h new file mode 100644 index 00000000..956fdd5c --- /dev/null +++ b/src/draco/compression/attributes/prediction_schemes/mesh_prediction_scheme_geometric_normal_encoder.h @@ -0,0 +1,176 @@ +// Copyright 2017 The Draco Authors. +// +// Licensed under the Apache License, Version 2.0 (the "License"); +// you may not use this file except in compliance with the License. +// You may obtain a copy of the License at +// +// http://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an "AS IS" BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// See the License for the specific language governing permissions and +// limitations under the License. +// +#ifndef DRACO_COMPRESSION_ATTRIBUTES_PREDICTION_SCHEMES_MESH_PREDICTION_SCHEME_GEOMETRIC_NORMAL_ENCODER_H_ +#define DRACO_COMPRESSION_ATTRIBUTES_PREDICTION_SCHEMES_MESH_PREDICTION_SCHEME_GEOMETRIC_NORMAL_ENCODER_H_ + +#include "draco/compression/attributes/prediction_schemes/mesh_prediction_scheme_encoder.h" +#include "draco/compression/attributes/prediction_schemes/mesh_prediction_scheme_geometric_normal_predictor.h" +#include "draco/compression/config/compression_shared.h" +#include "draco/core/bit_coders/rans_bit_encoder.h" + +namespace draco { + +// Prediction scheme for normals based on the underlying geometry. +// At a smooth vertices normals are computed by weighting the normals of +// adjacent faces with the area of these faces. At seams, the same approach +// applies for seam corners. +template +class MeshPredictionSchemeGeometricNormalEncoder + : public MeshPredictionSchemeEncoder { + public: + using CorrType = typename MeshPredictionSchemeEncoder::CorrType; + MeshPredictionSchemeGeometricNormalEncoder(const PointAttribute *attribute, + const TransformT &transform, + const MeshDataT &mesh_data) + : MeshPredictionSchemeEncoder( + attribute, transform, mesh_data), + predictor_(mesh_data) {} + + bool ComputeCorrectionValues( + const DataTypeT *in_data, CorrType *out_corr, int size, + int num_components, const PointIndex *entry_to_point_id_map) override; + + bool EncodePredictionData(EncoderBuffer *buffer) override; + + PredictionSchemeMethod GetPredictionMethod() const override { + return MESH_PREDICTION_GEOMETRIC_NORMAL; + } + + bool IsInitialized() const override { + if (!predictor_.IsInitialized()) + return false; + if (!this->mesh_data().IsInitialized()) + return false; + return true; + } + + int GetNumParentAttributes() const override { return 1; } + + GeometryAttribute::Type GetParentAttributeType(int i) const override { + DCHECK_EQ(i, 0); + (void)i; + return GeometryAttribute::POSITION; + } + + bool SetParentAttribute(const PointAttribute *att) override { + if (att->attribute_type() != GeometryAttribute::POSITION) + return false; // Invalid attribute type. + if (att->num_components() != 3) + return false; // Currently works only for 3 component positions. + predictor_.SetPositionAttribute(*att); + return true; + } + + private: + void SetQuantizationBits(int q) { + DCHECK_GE(q, 2); + DCHECK_LE(q, 30); + octahedron_tool_box_.SetQuantizationBits(q); + } + MeshPredictionSchemeGeometricNormalPredictor + predictor_; + + OctahedronToolBox octahedron_tool_box_; + RAnsBitEncoder flip_normal_bit_encoder_; +}; + +template +bool MeshPredictionSchemeGeometricNormalEncoder:: + ComputeCorrectionValues(const DataTypeT *in_data, CorrType *out_corr, + int size, int num_components, + const PointIndex *entry_to_point_id_map) { + this->SetQuantizationBits(this->transform().quantization_bits()); + predictor_.SetEntryToPointIdMap(entry_to_point_id_map); + DCHECK(this->IsInitialized()); + // Expecting in_data in octahedral coordinates, i.e., portable attribute. + DCHECK_EQ(num_components, 2); + + flip_normal_bit_encoder_.StartEncoding(); + + const int corner_map_size = this->mesh_data().data_to_corner_map()->size(); + + VectorD pred_normal_3d; + VectorD pos_pred_normal_oct; + VectorD neg_pred_normal_oct; + VectorD pos_correction; + VectorD neg_correction; + for (int data_id = 0; data_id < corner_map_size; ++data_id) { + const CornerIndex corner_id = + this->mesh_data().data_to_corner_map()->at(data_id); + predictor_.ComputePredictedValue(corner_id, pred_normal_3d.data()); + + // Compute predicted octahedral coordinates. + octahedron_tool_box_.CanonicalizeIntegerVector(pred_normal_3d.data()); + DCHECK_EQ(pred_normal_3d.AbsSum(), octahedron_tool_box_.center_value()); + + // Compute octahedral coordinates for both possible directions. + octahedron_tool_box_.IntegerVectorToQuantizedOctahedralCoords( + pred_normal_3d.data(), pos_pred_normal_oct.data(), + pos_pred_normal_oct.data() + 1); + pred_normal_3d = -pred_normal_3d; + octahedron_tool_box_.IntegerVectorToQuantizedOctahedralCoords( + pred_normal_3d.data(), neg_pred_normal_oct.data(), + neg_pred_normal_oct.data() + 1); + + // Choose the one with the best correction value. + const int data_offset = data_id * 2; + this->transform().ComputeCorrection(in_data + data_offset, + pos_pred_normal_oct.data(), + pos_correction.data()); + this->transform().ComputeCorrection(in_data + data_offset, + neg_pred_normal_oct.data(), + neg_correction.data()); + pos_correction[0] = octahedron_tool_box_.ModMax(pos_correction[0]); + pos_correction[1] = octahedron_tool_box_.ModMax(pos_correction[1]); + neg_correction[0] = octahedron_tool_box_.ModMax(neg_correction[0]); + neg_correction[1] = octahedron_tool_box_.ModMax(neg_correction[1]); + if (pos_correction.AbsSum() < neg_correction.AbsSum()) { + flip_normal_bit_encoder_.EncodeBit(false); + (out_corr + data_offset)[0] = + octahedron_tool_box_.MakePositive(pos_correction[0]); + (out_corr + data_offset)[1] = + octahedron_tool_box_.MakePositive(pos_correction[1]); + } else { + flip_normal_bit_encoder_.EncodeBit(true); + (out_corr + data_offset)[0] = + octahedron_tool_box_.MakePositive(neg_correction[0]); + (out_corr + data_offset)[1] = + octahedron_tool_box_.MakePositive(neg_correction[1]); + } + } + return true; +} + +template +bool MeshPredictionSchemeGeometricNormalEncoder< + DataTypeT, TransformT, MeshDataT>::EncodePredictionData(EncoderBuffer + *buffer) { + if (!this->transform().EncodeTransformData(buffer)) + return false; + + const uint8_t prediction_mode = 0; + if (!buffer->Encode(prediction_mode)) + return false; + + // Encode normal flips. + flip_normal_bit_encoder_.EndEncoding(buffer); + return true; +} + +} // namespace draco + +#endif // DRACO_COMPRESSION_ATTRIBUTES_PREDICTION_SCHEMES_MESH_PREDICTION_SCHEME_GEOMETRIC_NORMAL_ENCODER_H_ diff --git a/src/draco/compression/attributes/prediction_schemes/mesh_prediction_scheme_geometric_normal_predictor.h b/src/draco/compression/attributes/prediction_schemes/mesh_prediction_scheme_geometric_normal_predictor.h new file mode 100644 index 00000000..09247970 --- /dev/null +++ b/src/draco/compression/attributes/prediction_schemes/mesh_prediction_scheme_geometric_normal_predictor.h @@ -0,0 +1,130 @@ +// Copyright 2017 The Draco Authors. +// +// Licensed under the Apache License, Version 2.0 (the "License"); +// you may not use this file except in compliance with the License. +// You may obtain a copy of the License at +// +// http://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an "AS IS" BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// See the License for the specific language governing permissions and +// limitations under the License. +// +#ifndef DRACO_COMPRESSION_ATTRIBUTES_PREDICTION_SCHEMES_MESH_PREDICTION_SCHEME_GEOMETRIC_NORMAL_PREDICTOR_H_ +#define DRACO_COMPRESSION_ATTRIBUTES_PREDICTION_SCHEMES_MESH_PREDICTION_SCHEME_GEOMETRIC_NORMAL_PREDICTOR_H_ + +#include + +#include "draco/attributes/point_attribute.h" +#include "draco/compression/attributes/normal_compression_utils.h" +#include "draco/core/math_utils.h" +#include "draco/core/vector_d.h" +#include "draco/mesh/corner_table.h" +#include "draco/mesh/corner_table_iterators.h" + +namespace draco { + +// This predictor estimates the normal via the surrounding triangles of the +// given corner. Triangles are weighted according to their area. +template +class MeshPredictionSchemeGeometricNormalPredictor { + public: + MeshPredictionSchemeGeometricNormalPredictor(const MeshDataT &md) + : pos_attribute_(nullptr), + entry_to_point_id_map_(nullptr), + mesh_data_(md) {} + void SetPositionAttribute(const PointAttribute &position_attribute) { + pos_attribute_ = &position_attribute; + } + void SetEntryToPointIdMap(const PointIndex *map) { + entry_to_point_id_map_ = map; + } + + bool IsInitialized() const { + if (pos_attribute_ == nullptr) + return false; + if (entry_to_point_id_map_ == nullptr) + return false; + return true; + } + + VectorD GetPositionForDataId(int data_id) const { + DCHECK(this->IsInitialized()); + const auto point_id = entry_to_point_id_map_[data_id]; + const auto pos_val_id = pos_attribute_->mapped_index(point_id); + VectorD pos; + pos_attribute_->ConvertValue(pos_val_id, &pos[0]); + return pos; + } + VectorD GetPositionForCorner(CornerIndex ci) const { + DCHECK(this->IsInitialized()); + const auto corner_table = mesh_data_.corner_table(); + const auto vert_id = corner_table->Vertex(ci).value(); + const auto data_id = mesh_data_.vertex_to_data_map()->at(vert_id); + return GetPositionForDataId(data_id); + } + + VectorD GetOctahedralCoordForDataId(int data_id, + const DataTypeT *data) const { + DCHECK(this->IsInitialized()); + const int data_offset = data_id * 2; + return VectorD(data[data_offset], data[data_offset + 1]); + } + + // Computes predicted octahedral coordinates on a given corner. + void ComputePredictedValue(CornerIndex corner_id, DataTypeT *prediction) { + DCHECK(this->IsInitialized()); + typedef typename MeshDataT::CornerTable CornerTable; + const CornerTable *const corner_table = mesh_data_.corner_table(); + // Going to compute the predicted normal from the surrounding triangles + // according to the connectivity of the given corner table. + VertexCornersIterator cit(corner_table, corner_id); + // Position of central vertex does not change in loop. + const VectorD pos_cent = GetPositionForCorner(corner_id); + // Computing normals for triangles and adding them up. + + VectorD normal; + while (!cit.End()) { + // Getting corners. + const CornerIndex c_next = corner_table->Next(corner_id); + const CornerIndex c_prev = corner_table->Previous(corner_id); + // Getting positions for next and previous. + const auto pos_next = GetPositionForCorner(c_next); + const auto pos_prev = GetPositionForCorner(c_prev); + + // Computing delta vectors to next and prev. + const auto delta_next = pos_next - pos_cent; + const auto delta_prev = pos_prev - pos_cent; + + // TODO(hemmer): Improve weight function. + + // Computing cross product. + const auto cross = CrossProduct(delta_next, delta_prev); + normal = normal + cross; + cit.Next(); + } + + // Convert to int32_t, make sure entries are not too large. + const int32_t abs_sum = normal.AbsSum(); + constexpr int64_t upper_bound = 1 << 29; + if (abs_sum > upper_bound) { + const int64_t quotient = abs_sum / upper_bound; + normal = normal / quotient; + } + DCHECK_LE(normal.AbsSum(), upper_bound); + prediction[0] = static_cast(normal[0]); + prediction[1] = static_cast(normal[1]); + prediction[2] = static_cast(normal[2]); + } + + private: + const PointAttribute *pos_attribute_; + const PointIndex *entry_to_point_id_map_; + MeshDataT mesh_data_; +}; + +} // namespace draco + +#endif // DRACO_COMPRESSION_ATTRIBUTES_PREDICTION_SCHEMES_MESH_PREDICTION_SCHEME_GEOMETRIC_NORMAL_PREDICTOR_H_ diff --git a/src/draco/compression/attributes/prediction_schemes/mesh_prediction_scheme_multi_parallelogram_decoder.h b/src/draco/compression/attributes/prediction_schemes/mesh_prediction_scheme_multi_parallelogram_decoder.h new file mode 100644 index 00000000..badf6e39 --- /dev/null +++ b/src/draco/compression/attributes/prediction_schemes/mesh_prediction_scheme_multi_parallelogram_decoder.h @@ -0,0 +1,120 @@ +// Copyright 2016 The Draco Authors. +// +// Licensed under the Apache License, Version 2.0 (the "License"); +// you may not use this file except in compliance with the License. +// You may obtain a copy of the License at +// +// http://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an "AS IS" BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// See the License for the specific language governing permissions and +// limitations under the License. +// +#ifndef DRACO_COMPRESSION_ATTRIBUTES_PREDICTION_SCHEMES_MESH_PREDICTION_SCHEME_MULTI_PARALLELOGRAM_DECODER_H_ +#define DRACO_COMPRESSION_ATTRIBUTES_PREDICTION_SCHEMES_MESH_PREDICTION_SCHEME_MULTI_PARALLELOGRAM_DECODER_H_ + +#include "draco/compression/attributes/prediction_schemes/mesh_prediction_scheme_decoder.h" +#include "draco/compression/attributes/prediction_schemes/mesh_prediction_scheme_parallelogram_shared.h" + +namespace draco { + +// Decoder for predictions encoded by multi-parallelogram encoding scheme. +// See the corresponding encoder for method description. +template +class MeshPredictionSchemeMultiParallelogramDecoder + : public MeshPredictionSchemeDecoder { + public: + using CorrType = + typename PredictionSchemeDecoder::CorrType; + using CornerTable = typename MeshDataT::CornerTable; + + explicit MeshPredictionSchemeMultiParallelogramDecoder( + const PointAttribute *attribute) + : MeshPredictionSchemeDecoder( + attribute) {} + MeshPredictionSchemeMultiParallelogramDecoder(const PointAttribute *attribute, + const TransformT &transform, + const MeshDataT &mesh_data) + : MeshPredictionSchemeDecoder( + attribute, transform, mesh_data) {} + + bool ComputeOriginalValues(const CorrType *in_corr, DataTypeT *out_data, + int size, int num_components, + const PointIndex *entry_to_point_id_map) override; + PredictionSchemeMethod GetPredictionMethod() const override { + return MESH_PREDICTION_MULTI_PARALLELOGRAM; + } + + bool IsInitialized() const override { + return this->mesh_data().IsInitialized(); + } +}; + +template +bool MeshPredictionSchemeMultiParallelogramDecoder:: + ComputeOriginalValues(const CorrType *in_corr, DataTypeT *out_data, + int /* size */, int num_components, + const PointIndex * /* entry_to_point_id_map */) { + this->transform().Initialize(num_components); + + std::unique_ptr pred_vals(new DataTypeT[num_components]()); + std::unique_ptr parallelogram_pred_vals( + new DataTypeT[num_components]()); + + this->transform().ComputeOriginalValue(pred_vals.get(), in_corr, out_data); + + const CornerTable *const table = this->mesh_data().corner_table(); + const std::vector *const vertex_to_data_map = + this->mesh_data().vertex_to_data_map(); + + const int corner_map_size = this->mesh_data().data_to_corner_map()->size(); + for (int p = 1; p < corner_map_size; ++p) { + const CornerIndex start_corner_id = + this->mesh_data().data_to_corner_map()->at(p); + + CornerIndex corner_id(start_corner_id); + int num_parallelograms = 0; + for (int i = 0; i < num_components; ++i) { + pred_vals[i] = static_cast(0); + } + while (corner_id >= 0) { + if (ComputeParallelogramPrediction( + p, corner_id, table, *vertex_to_data_map, out_data, + num_components, parallelogram_pred_vals.get())) { + for (int c = 0; c < num_components; ++c) { + pred_vals[c] += parallelogram_pred_vals[c]; + } + ++num_parallelograms; + } + + corner_id = table->SwingRight(corner_id); + if (corner_id == start_corner_id) { + corner_id = kInvalidCornerIndex; + } + } + + const int dst_offset = p * num_components; + if (num_parallelograms == 0) { + // No parallelogram was valid. + // We use the last decoded point as a reference. + const int src_offset = (p - 1) * num_components; + this->transform().ComputeOriginalValue( + out_data + src_offset, in_corr + dst_offset, out_data + dst_offset); + } else { + // Compute the correction from the predicted value. + for (int c = 0; c < num_components; ++c) { + pred_vals[c] /= num_parallelograms; + } + this->transform().ComputeOriginalValue( + pred_vals.get(), in_corr + dst_offset, out_data + dst_offset); + } + } + return true; +} + +} // namespace draco + +#endif // DRACO_COMPRESSION_ATTRIBUTES_PREDICTION_SCHEMES_MESH_PREDICTION_SCHEME_MULTI_PARALLELOGRAM_DECODER_H_ diff --git a/src/draco/compression/attributes/prediction_schemes/mesh_prediction_scheme_multi_parallelogram_encoder.h b/src/draco/compression/attributes/prediction_schemes/mesh_prediction_scheme_multi_parallelogram_encoder.h new file mode 100644 index 00000000..13daa181 --- /dev/null +++ b/src/draco/compression/attributes/prediction_schemes/mesh_prediction_scheme_multi_parallelogram_encoder.h @@ -0,0 +1,130 @@ +// Copyright 2016 The Draco Authors. +// +// Licensed under the Apache License, Version 2.0 (the "License"); +// you may not use this file except in compliance with the License. +// You may obtain a copy of the License at +// +// http://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an "AS IS" BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// See the License for the specific language governing permissions and +// limitations under the License. +// +#ifndef DRACO_COMPRESSION_ATTRIBUTES_PREDICTION_SCHEMES_MESH_PREDICTION_SCHEME_MULTI_PARALLELOGRAM_ENCODER_H_ +#define DRACO_COMPRESSION_ATTRIBUTES_PREDICTION_SCHEMES_MESH_PREDICTION_SCHEME_MULTI_PARALLELOGRAM_ENCODER_H_ + +#include "draco/compression/attributes/prediction_schemes/mesh_prediction_scheme_encoder.h" +#include "draco/compression/attributes/prediction_schemes/mesh_prediction_scheme_parallelogram_shared.h" + +namespace draco { + +// Multi parallelogram prediction predicts attribute values using information +// from all opposite faces to the predicted vertex, compared to the standard +// prediction scheme, where only one opposite face is used (see +// prediction_scheme_parallelogram.h). This approach is generally slower than +// the standard parallelogram prediction, but it usually results in better +// prediction (5 - 20% based on the quantization level. Better gains can be +// achieved when more aggressive quantization is used). +template +class MeshPredictionSchemeMultiParallelogramEncoder + : public MeshPredictionSchemeEncoder { + public: + using CorrType = + typename PredictionSchemeEncoder::CorrType; + using CornerTable = typename MeshDataT::CornerTable; + + explicit MeshPredictionSchemeMultiParallelogramEncoder( + const PointAttribute *attribute) + : MeshPredictionSchemeEncoder( + attribute) {} + MeshPredictionSchemeMultiParallelogramEncoder(const PointAttribute *attribute, + const TransformT &transform, + const MeshDataT &mesh_data) + : MeshPredictionSchemeEncoder( + attribute, transform, mesh_data) {} + + bool ComputeCorrectionValues( + const DataTypeT *in_data, CorrType *out_corr, int size, + int num_components, const PointIndex *entry_to_point_id_map) override; + PredictionSchemeMethod GetPredictionMethod() const override { + return MESH_PREDICTION_MULTI_PARALLELOGRAM; + } + + bool IsInitialized() const override { + return this->mesh_data().IsInitialized(); + } +}; + +template +bool MeshPredictionSchemeMultiParallelogramEncoder:: + ComputeCorrectionValues(const DataTypeT *in_data, CorrType *out_corr, + int size, int num_components, + const PointIndex * /* entry_to_point_id_map */) { + this->transform().Initialize(in_data, size, num_components); + const CornerTable *const table = this->mesh_data().corner_table(); + const std::vector *const vertex_to_data_map = + this->mesh_data().vertex_to_data_map(); + + std::unique_ptr pred_vals(new DataTypeT[num_components]()); + std::unique_ptr parallelogram_pred_vals( + new DataTypeT[num_components]()); + + // We start processing from the end because this prediction uses data from + // previous entries that could be overwritten when an entry is processed. + for (int p = this->mesh_data().data_to_corner_map()->size() - 1; p > 0; --p) { + const CornerIndex start_corner_id = + this->mesh_data().data_to_corner_map()->at(p); + + // Go over all corners attached to the vertex and compute the predicted + // value from the parallelograms defined by their opposite faces. + CornerIndex corner_id(start_corner_id); + int num_parallelograms = 0; + for (int i = 0; i < num_components; ++i) { + pred_vals[i] = static_cast(0); + } + while (corner_id >= 0) { + if (ComputeParallelogramPrediction( + p, corner_id, table, *vertex_to_data_map, in_data, num_components, + parallelogram_pred_vals.get())) { + for (int c = 0; c < num_components; ++c) { + pred_vals[c] += parallelogram_pred_vals[c]; + } + ++num_parallelograms; + } + + // Proceed to the next corner attached to the vertex. + corner_id = table->SwingRight(corner_id); + if (corner_id == start_corner_id) { + corner_id = kInvalidCornerIndex; + } + } + const int dst_offset = p * num_components; + if (num_parallelograms == 0) { + // No parallelogram was valid. + // We use the last encoded point as a reference. + const int src_offset = (p - 1) * num_components; + this->transform().ComputeCorrection( + in_data + dst_offset, in_data + src_offset, out_corr + dst_offset); + } else { + // Compute the correction from the predicted value. + for (int c = 0; c < num_components; ++c) { + pred_vals[c] /= num_parallelograms; + } + this->transform().ComputeCorrection(in_data + dst_offset, pred_vals.get(), + out_corr + dst_offset); + } + } + // First element is always fixed because it cannot be predicted. + for (int i = 0; i < num_components; ++i) { + pred_vals[i] = static_cast(0); + } + this->transform().ComputeCorrection(in_data, pred_vals.get(), out_corr); + return true; +} + +} // namespace draco + +#endif // DRACO_COMPRESSION_ATTRIBUTES_PREDICTION_SCHEMES_MESH_PREDICTION_SCHEME_MULTI_PARALLELOGRAM_ENCODER_H_ diff --git a/src/draco/compression/attributes/prediction_schemes/mesh_prediction_scheme_parallelogram_decoder.h b/src/draco/compression/attributes/prediction_schemes/mesh_prediction_scheme_parallelogram_decoder.h new file mode 100644 index 00000000..bc89a3b1 --- /dev/null +++ b/src/draco/compression/attributes/prediction_schemes/mesh_prediction_scheme_parallelogram_decoder.h @@ -0,0 +1,96 @@ +// Copyright 2016 The Draco Authors. +// +// Licensed under the Apache License, Version 2.0 (the "License"); +// you may not use this file except in compliance with the License. +// You may obtain a copy of the License at +// +// http://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an "AS IS" BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// See the License for the specific language governing permissions and +// limitations under the License. +// +#ifndef DRACO_COMPRESSION_ATTRIBUTES_PREDICTION_SCHEMES_MESH_PREDICTION_SCHEME_PARALLELOGRAM_DECODER_H_ +#define DRACO_COMPRESSION_ATTRIBUTES_PREDICTION_SCHEMES_MESH_PREDICTION_SCHEME_PARALLELOGRAM_DECODER_H_ + +#include "draco/compression/attributes/prediction_schemes/mesh_prediction_scheme_decoder.h" +#include "draco/compression/attributes/prediction_schemes/mesh_prediction_scheme_parallelogram_shared.h" + +namespace draco { + +// Decoder for attribute values encoded with the standard parallelogram +// prediction. See the description of the corresponding encoder for more +// details. +template +class MeshPredictionSchemeParallelogramDecoder + : public MeshPredictionSchemeDecoder { + public: + using CorrType = + typename PredictionSchemeDecoder::CorrType; + using CornerTable = typename MeshDataT::CornerTable; + explicit MeshPredictionSchemeParallelogramDecoder( + const PointAttribute *attribute) + : MeshPredictionSchemeDecoder( + attribute) {} + MeshPredictionSchemeParallelogramDecoder(const PointAttribute *attribute, + const TransformT &transform, + const MeshDataT &mesh_data) + : MeshPredictionSchemeDecoder( + attribute, transform, mesh_data) {} + + bool ComputeOriginalValues(const CorrType *in_corr, DataTypeT *out_data, + int size, int num_components, + const PointIndex *entry_to_point_id_map) override; + PredictionSchemeMethod GetPredictionMethod() const override { + return MESH_PREDICTION_PARALLELOGRAM; + } + + bool IsInitialized() const override { + return this->mesh_data().IsInitialized(); + } +}; + +template +bool MeshPredictionSchemeParallelogramDecoder:: + ComputeOriginalValues(const CorrType *in_corr, DataTypeT *out_data, + int /* size */, int num_components, + const PointIndex * /* entry_to_point_id_map */) { + this->transform().Initialize(num_components); + + const CornerTable *const table = this->mesh_data().corner_table(); + const std::vector *const vertex_to_data_map = + this->mesh_data().vertex_to_data_map(); + + std::unique_ptr pred_vals(new DataTypeT[num_components]()); + + // Restore the first value. + this->transform().ComputeOriginalValue(pred_vals.get(), in_corr, out_data); + + const int corner_map_size = this->mesh_data().data_to_corner_map()->size(); + for (int p = 1; p < corner_map_size; ++p) { + const CornerIndex corner_id = this->mesh_data().data_to_corner_map()->at(p); + const int dst_offset = p * num_components; + if (!ComputeParallelogramPrediction(p, corner_id, table, + *vertex_to_data_map, out_data, + num_components, pred_vals.get())) { + // Parallelogram could not be computed, Possible because some of the + // vertices are not valid (not encoded yet). + // We use the last encoded point as a reference (delta coding). + const int src_offset = (p - 1) * num_components; + this->transform().ComputeOriginalValue( + out_data + src_offset, in_corr + dst_offset, out_data + dst_offset); + } else { + // Apply the parallelogram prediction. + this->transform().ComputeOriginalValue( + pred_vals.get(), in_corr + dst_offset, out_data + dst_offset); + } + } + return true; +} + +} // namespace draco + +#endif // DRACO_COMPRESSION_ATTRIBUTES_PREDICTION_SCHEMES_MESH_PREDICTION_SCHEME_PARALLELOGRAM_DECODER_H_ diff --git a/src/draco/compression/attributes/prediction_schemes/mesh_prediction_scheme_parallelogram_encoder.h b/src/draco/compression/attributes/prediction_schemes/mesh_prediction_scheme_parallelogram_encoder.h new file mode 100644 index 00000000..4284384c --- /dev/null +++ b/src/draco/compression/attributes/prediction_schemes/mesh_prediction_scheme_parallelogram_encoder.h @@ -0,0 +1,108 @@ +// Copyright 2016 The Draco Authors. +// +// Licensed under the Apache License, Version 2.0 (the "License"); +// you may not use this file except in compliance with the License. +// You may obtain a copy of the License at +// +// http://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an "AS IS" BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// See the License for the specific language governing permissions and +// limitations under the License. +// +#ifndef DRACO_COMPRESSION_ATTRIBUTES_PREDICTION_SCHEMES_MESH_PREDICTION_SCHEME_PARALLELOGRAM_ENCODER_H_ +#define DRACO_COMPRESSION_ATTRIBUTES_PREDICTION_SCHEMES_MESH_PREDICTION_SCHEME_PARALLELOGRAM_ENCODER_H_ + +#include "draco/compression/attributes/prediction_schemes/mesh_prediction_scheme_encoder.h" +#include "draco/compression/attributes/prediction_schemes/mesh_prediction_scheme_parallelogram_shared.h" + +namespace draco { + +// Parallelogram prediction predicts an attribute value V from three vertices +// on the opposite face to the predicted vertex. The values on the three +// vertices are used to construct a parallelogram V' = O - A - B, where O is the +// value on the opposite vertex, and A, B are values on the shared vertices: +// V +// / \ +// / \ +// / \ +// A-------B +// \ / +// \ / +// \ / +// O +// +template +class MeshPredictionSchemeParallelogramEncoder + : public MeshPredictionSchemeEncoder { + public: + using CorrType = + typename PredictionSchemeEncoder::CorrType; + using CornerTable = typename MeshDataT::CornerTable; + explicit MeshPredictionSchemeParallelogramEncoder( + const PointAttribute *attribute) + : MeshPredictionSchemeEncoder( + attribute) {} + MeshPredictionSchemeParallelogramEncoder(const PointAttribute *attribute, + const TransformT &transform, + const MeshDataT &mesh_data) + : MeshPredictionSchemeEncoder( + attribute, transform, mesh_data) {} + + bool ComputeCorrectionValues( + const DataTypeT *in_data, CorrType *out_corr, int size, + int num_components, const PointIndex *entry_to_point_id_map) override; + PredictionSchemeMethod GetPredictionMethod() const override { + return MESH_PREDICTION_PARALLELOGRAM; + } + + bool IsInitialized() const override { + return this->mesh_data().IsInitialized(); + } +}; + +template +bool MeshPredictionSchemeParallelogramEncoder:: + ComputeCorrectionValues(const DataTypeT *in_data, CorrType *out_corr, + int size, int num_components, + const PointIndex * /* entry_to_point_id_map */) { + this->transform().Initialize(in_data, size, num_components); + std::unique_ptr pred_vals(new DataTypeT[num_components]()); + + // We start processing from the end because this prediction uses data from + // previous entries that could be overwritten when an entry is processed. + const CornerTable *const table = this->mesh_data().corner_table(); + const std::vector *const vertex_to_data_map = + this->mesh_data().vertex_to_data_map(); + for (int p = this->mesh_data().data_to_corner_map()->size() - 1; p > 0; --p) { + const CornerIndex corner_id = this->mesh_data().data_to_corner_map()->at(p); + const int dst_offset = p * num_components; + if (!ComputeParallelogramPrediction(p, corner_id, table, + *vertex_to_data_map, in_data, + num_components, pred_vals.get())) { + // Parallelogram could not be computed, Possible because some of the + // vertices are not valid (not encoded yet). + // We use the last encoded point as a reference (delta coding). + const int src_offset = (p - 1) * num_components; + this->transform().ComputeCorrection( + in_data + dst_offset, in_data + src_offset, out_corr + dst_offset); + } else { + // Apply the parallelogram prediction. + this->transform().ComputeCorrection(in_data + dst_offset, pred_vals.get(), + out_corr + dst_offset); + } + } + // First element is always fixed because it cannot be predicted. + for (int i = 0; i < num_components; ++i) { + pred_vals[i] = static_cast(0); + } + this->transform().ComputeCorrection(in_data, pred_vals.get(), out_corr); + return true; +} + +} // namespace draco + +#endif // DRACO_COMPRESSION_ATTRIBUTES_PREDICTION_SCHEMES_MESH_PREDICTION_SCHEME_PARALLELOGRAM_ENCODER_H_ diff --git a/compression/attributes/prediction_schemes/mesh_prediction_scheme_parallelogram_shared.h b/src/draco/compression/attributes/prediction_schemes/mesh_prediction_scheme_parallelogram_shared.h similarity index 95% rename from compression/attributes/prediction_schemes/mesh_prediction_scheme_parallelogram_shared.h rename to src/draco/compression/attributes/prediction_schemes/mesh_prediction_scheme_parallelogram_shared.h index e8610a9e..7bd5d73c 100644 --- a/compression/attributes/prediction_schemes/mesh_prediction_scheme_parallelogram_shared.h +++ b/src/draco/compression/attributes/prediction_schemes/mesh_prediction_scheme_parallelogram_shared.h @@ -12,13 +12,13 @@ // See the License for the specific language governing permissions and // limitations under the License. // -// Shared funcionality for different parallelogram prediction schemes. +// Shared functionality for different parallelogram prediction schemes. #ifndef DRACO_COMPRESSION_ATTRIBUTES_PREDICTION_SCHEMES_MESH_PREDICTION_SCHEME_PARALLELOGRAM_SHARED_H_ #define DRACO_COMPRESSION_ATTRIBUTES_PREDICTION_SCHEMES_MESH_PREDICTION_SCHEME_PARALLELOGRAM_SHARED_H_ -#include "mesh/corner_table.h" -#include "mesh/mesh.h" +#include "draco/mesh/corner_table.h" +#include "draco/mesh/mesh.h" namespace draco { diff --git a/src/draco/compression/attributes/prediction_schemes/mesh_prediction_scheme_tex_coords_decoder.h b/src/draco/compression/attributes/prediction_schemes/mesh_prediction_scheme_tex_coords_decoder.h new file mode 100644 index 00000000..33c8e90c --- /dev/null +++ b/src/draco/compression/attributes/prediction_schemes/mesh_prediction_scheme_tex_coords_decoder.h @@ -0,0 +1,310 @@ +// Copyright 2016 The Draco Authors. +// +// Licensed under the Apache License, Version 2.0 (the "License"); +// you may not use this file except in compliance with the License. +// You may obtain a copy of the License at +// +// http://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an "AS IS" BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// See the License for the specific language governing permissions and +// limitations under the License. +// +#ifndef DRACO_COMPRESSION_ATTRIBUTES_PREDICTION_SCHEMES_MESH_PREDICTION_SCHEME_TEX_COORDS_DECODER_H_ +#define DRACO_COMPRESSION_ATTRIBUTES_PREDICTION_SCHEMES_MESH_PREDICTION_SCHEME_TEX_COORDS_DECODER_H_ + +#include +#include "draco/compression/attributes/prediction_schemes/mesh_prediction_scheme_decoder.h" +#include "draco/core/bit_coders/rans_bit_decoder.h" +#include "draco/core/vector_d.h" +#include "draco/mesh/corner_table.h" + +namespace draco { + +// Decoder for predictions of UV coordinates encoded by our specialized texture +// coordinate predictor. See the corresponding encoder for more details. Note +// that this predictor is not portable and should not be used anymore. See +// MeshPredictionSchemeTexCoordsPortableEncoder/Decoder for a portable version +// of this prediction scheme. +template +class MeshPredictionSchemeTexCoordsDecoder + : public MeshPredictionSchemeDecoder { + public: + using CorrType = typename MeshPredictionSchemeDecoder::CorrType; + MeshPredictionSchemeTexCoordsDecoder(const PointAttribute *attribute, + const TransformT &transform, + const MeshDataT &mesh_data, int version) + : MeshPredictionSchemeDecoder( + attribute, transform, mesh_data), + pos_attribute_(nullptr), + entry_to_point_id_map_(nullptr), + num_components_(0), + version_(version) {} + + bool ComputeOriginalValues(const CorrType *in_corr, DataTypeT *out_data, + int size, int num_components, + const PointIndex *entry_to_point_id_map) override; + + bool DecodePredictionData(DecoderBuffer *buffer) override; + + PredictionSchemeMethod GetPredictionMethod() const override { + return MESH_PREDICTION_TEX_COORDS; + } + + bool IsInitialized() const override { + if (pos_attribute_ == nullptr) + return false; + if (!this->mesh_data().IsInitialized()) + return false; + return true; + } + + int GetNumParentAttributes() const override { return 1; } + + GeometryAttribute::Type GetParentAttributeType(int i) const override { + DCHECK_EQ(i, 0); + (void)i; + return GeometryAttribute::POSITION; + } + + bool SetParentAttribute(const PointAttribute *att) override { + if (att->attribute_type() != GeometryAttribute::POSITION) + return false; // Invalid attribute type. + if (att->num_components() != 3) + return false; // Currently works only for 3 component positions. + pos_attribute_ = att; + return true; + } + + protected: + Vector3f GetPositionForEntryId(int entry_id) const { + const PointIndex point_id = entry_to_point_id_map_[entry_id]; + Vector3f pos; + pos_attribute_->ConvertValue(pos_attribute_->mapped_index(point_id), + &pos[0]); + return pos; + } + + Vector2f GetTexCoordForEntryId(int entry_id, const DataTypeT *data) const { + const int data_offset = entry_id * num_components_; + return Vector2f(data[data_offset], data[data_offset + 1]); + } + + void ComputePredictedValue(CornerIndex corner_id, const DataTypeT *data, + int data_id); + + private: + const PointAttribute *pos_attribute_; + const PointIndex *entry_to_point_id_map_; + std::unique_ptr predicted_value_; + int num_components_; + // Encoded / decoded array of UV flips. + std::vector orientations_; + int version_; +}; + +template +bool MeshPredictionSchemeTexCoordsDecoder:: + ComputeOriginalValues(const CorrType *in_corr, DataTypeT *out_data, + int /* size */, int num_components, + const PointIndex *entry_to_point_id_map) { + num_components_ = num_components; + entry_to_point_id_map_ = entry_to_point_id_map; + predicted_value_ = + std::unique_ptr(new DataTypeT[num_components]); + this->transform().Initialize(num_components); + + const int corner_map_size = this->mesh_data().data_to_corner_map()->size(); + for (int p = 0; p < corner_map_size; ++p) { + const CornerIndex corner_id = this->mesh_data().data_to_corner_map()->at(p); + ComputePredictedValue(corner_id, out_data, p); + + const int dst_offset = p * num_components; + this->transform().ComputeOriginalValue( + predicted_value_.get(), in_corr + dst_offset, out_data + dst_offset); + } + return true; +} + +template +bool MeshPredictionSchemeTexCoordsDecoder:: + DecodePredictionData(DecoderBuffer *buffer) { + // Decode the delta coded orientations. + int32_t num_orientations = 0; + if (!buffer->Decode(&num_orientations) || num_orientations < 0) + return false; + orientations_.resize(num_orientations); + bool last_orientation = true; + RAnsBitDecoder decoder; + if (!decoder.StartDecoding(buffer)) + return false; + for (int i = 0; i < num_orientations; ++i) { + if (!decoder.DecodeNextBit()) + last_orientation = !last_orientation; + orientations_[i] = last_orientation; + } + decoder.EndDecoding(); + return MeshPredictionSchemeDecoder::DecodePredictionData(buffer); +} + +template +void MeshPredictionSchemeTexCoordsDecoder:: + ComputePredictedValue(CornerIndex corner_id, const DataTypeT *data, + int data_id) { + // Compute the predicted UV coordinate from the positions on all corners + // of the processed triangle. For the best prediction, the UV coordinates + // on the next/previous corners need to be already encoded/decoded. + const CornerIndex next_corner_id = + this->mesh_data().corner_table()->Next(corner_id); + const CornerIndex prev_corner_id = + this->mesh_data().corner_table()->Previous(corner_id); + // Get the encoded data ids from the next and previous corners. + // The data id is the encoding order of the UV coordinates. + int next_data_id, prev_data_id; + + int next_vert_id, prev_vert_id; + next_vert_id = + this->mesh_data().corner_table()->Vertex(next_corner_id).value(); + prev_vert_id = + this->mesh_data().corner_table()->Vertex(prev_corner_id).value(); + + next_data_id = this->mesh_data().vertex_to_data_map()->at(next_vert_id); + prev_data_id = this->mesh_data().vertex_to_data_map()->at(prev_vert_id); + + if (prev_data_id < data_id && next_data_id < data_id) { + // Both other corners have available UV coordinates for prediction. + const Vector2f n_uv = GetTexCoordForEntryId(next_data_id, data); + const Vector2f p_uv = GetTexCoordForEntryId(prev_data_id, data); + if (p_uv == n_uv) { + // We cannot do a reliable prediction on degenerated UV triangles. + predicted_value_[0] = static_cast(p_uv[0]); + predicted_value_[1] = static_cast(p_uv[1]); + return; + } + + // Get positions at all corners. + const Vector3f tip_pos = GetPositionForEntryId(data_id); + const Vector3f next_pos = GetPositionForEntryId(next_data_id); + const Vector3f prev_pos = GetPositionForEntryId(prev_data_id); + // Use the positions of the above triangle to predict the texture coordinate + // on the tip corner C. + // Convert the triangle into a new coordinate system defined by orthogonal + // bases vectors S, T, where S is vector prev_pos - next_pos and T is an + // perpendicular vector to S in the same plane as vector the + // tip_pos - next_pos. + // The transformed triangle in the new coordinate system is then going to + // be represented as: + // + // 1 ^ + // | + // | + // | C + // | / \ + // | / \ + // |/ \ + // N--------------P + // 0 1 + // + // Where next_pos point (N) is at position (0, 0), prev_pos point (P) is + // at (1, 0). Our goal is to compute the position of the tip_pos point (C) + // in this new coordinate space (s, t). + // + const Vector3f pn = prev_pos - next_pos; + const Vector3f cn = tip_pos - next_pos; + const float pn_norm2_squared = pn.SquaredNorm(); + // Coordinate s of the tip corner C is simply the dot product of the + // normalized vectors |pn| and |cn| (normalized by the length of |pn|). + // Since both of these vectors are normalized, we don't need to perform the + // normalization explicitly and instead we can just use the squared norm + // of |pn| as a denominator of the resulting dot product of non normalized + // vectors. + float s, t; + // |pn_norm2_squared| can be exactly 0 when the next_pos and prev_pos are + // the same positions (e.g. because they were quantized to the same + // location). + if (version_ < DRACO_BITSTREAM_VERSION(1, 2) || pn_norm2_squared > 0) { + s = pn.Dot(cn) / pn_norm2_squared; + // To get the coordinate t, we can use formula: + // t = |C-N - (P-N) * s| / |P-N| + // Do not use std::sqrt to avoid changes in the bitstream. + t = sqrt((cn - pn * s).SquaredNorm() / pn_norm2_squared); + } else { + s = 0; + t = 0; + } + + // Now we need to transform the point (s, t) to the texture coordinate space + // UV. We know the UV coordinates on points N and P (N_UV and P_UV). Lets + // denote P_UV - N_UV = PN_UV. PN_UV is then 2 dimensional vector that can + // be used to define transformation from the normalized coordinate system + // to the texture coordinate system using a 3x3 affine matrix M: + // + // M = | PN_UV[0] -PN_UV[1] N_UV[0] | + // | PN_UV[1] PN_UV[0] N_UV[1] | + // | 0 0 1 | + // + // The predicted point C_UV in the texture space is then equal to + // C_UV = M * (s, t, 1). Because the triangle in UV space may be flipped + // around the PN_UV axis, we also need to consider point C_UV' = M * (s, -t) + // as the prediction. + const Vector2f pn_uv = p_uv - n_uv; + const float pnus = pn_uv[0] * s + n_uv[0]; + const float pnut = pn_uv[0] * t; + const float pnvs = pn_uv[1] * s + n_uv[1]; + const float pnvt = pn_uv[1] * t; + Vector2f predicted_uv; + + // When decoding the data, we already know which orientation to use. + const bool orientation = orientations_.back(); + orientations_.pop_back(); + if (orientation) + predicted_uv = Vector2f(pnus - pnvt, pnvs + pnut); + else + predicted_uv = Vector2f(pnus + pnvt, pnvs - pnut); + + if (std::is_integral::value) { + // Round the predicted value for integer types. + predicted_value_[0] = static_cast(floor(predicted_uv[0] + 0.5)); + predicted_value_[1] = static_cast(floor(predicted_uv[1] + 0.5)); + } else { + predicted_value_[0] = static_cast(predicted_uv[0]); + predicted_value_[1] = static_cast(predicted_uv[1]); + } + return; + } + // Else we don't have available textures on both corners. For such case we + // can't use positions for predicting the uv value and we resort to delta + // coding. + int data_offset = 0; + if (prev_data_id < data_id) { + // Use the value on the previous corner as the prediction. + data_offset = prev_data_id * num_components_; + } + if (next_data_id < data_id) { + // Use the value on the next corner as the prediction. + data_offset = next_data_id * num_components_; + } else { + // None of the other corners have a valid value. Use the last encoded value + // as the prediction if possible. + if (data_id > 0) { + data_offset = (data_id - 1) * num_components_; + } else { + // We are encoding the first value. Predict 0. + for (int i = 0; i < num_components_; ++i) { + predicted_value_[i] = 0; + } + return; + } + } + for (int i = 0; i < num_components_; ++i) { + predicted_value_[i] = data[data_offset + i]; + } +} + +} // namespace draco + +#endif // DRACO_COMPRESSION_ATTRIBUTES_PREDICTION_SCHEMES_MESH_PREDICTION_SCHEME_TEX_COORDS_DECODER_H_ diff --git a/compression/attributes/prediction_schemes/mesh_prediction_scheme_tex_coords.h b/src/draco/compression/attributes/prediction_schemes/mesh_prediction_scheme_tex_coords_encoder.h similarity index 68% rename from compression/attributes/prediction_schemes/mesh_prediction_scheme_tex_coords.h rename to src/draco/compression/attributes/prediction_schemes/mesh_prediction_scheme_tex_coords_encoder.h index 5567ca8d..216e0ca1 100644 --- a/compression/attributes/prediction_schemes/mesh_prediction_scheme_tex_coords.h +++ b/src/draco/compression/attributes/prediction_schemes/mesh_prediction_scheme_tex_coords_encoder.h @@ -12,52 +12,42 @@ // See the License for the specific language governing permissions and // limitations under the License. // -#ifndef DRACO_COMPRESSION_ATTRIBUTES_PREDICTION_SCHEMES_MESH_PREDICTION_SCHEME_TEX_COORDS_H_ -#define DRACO_COMPRESSION_ATTRIBUTES_PREDICTION_SCHEMES_MESH_PREDICTION_SCHEME_TEX_COORDS_H_ +#ifndef DRACO_COMPRESSION_ATTRIBUTES_PREDICTION_SCHEMES_MESH_PREDICTION_SCHEME_TEX_COORDS_ENCODER_H_ +#define DRACO_COMPRESSION_ATTRIBUTES_PREDICTION_SCHEMES_MESH_PREDICTION_SCHEME_TEX_COORDS_ENCODER_H_ #include - -#include "compression/attributes/prediction_schemes/mesh_prediction_scheme.h" -#include "core/rans_bit_decoder.h" -#include "core/rans_bit_encoder.h" -#include "core/vector_d.h" -#include "mesh/corner_table.h" +#include "draco/compression/attributes/prediction_schemes/mesh_prediction_scheme_encoder.h" +#include "draco/core/bit_coders/rans_bit_encoder.h" +#include "draco/core/vector_d.h" +#include "draco/mesh/corner_table.h" namespace draco { -typedef RAnsBitDecoder BinaryDecoder; -typedef RAnsBitEncoder BinaryEncoder; - // Prediction scheme designed for predicting texture coordinates from known // spatial position of vertices. For good parametrization, the ratios between // triangle edge lengths should be about the same in both the spatial and UV // coordinate spaces, which makes the positions a good predictor for the UV // coordinates. template -class MeshPredictionSchemeTexCoords - : public MeshPredictionScheme { +class MeshPredictionSchemeTexCoordsEncoder + : public MeshPredictionSchemeEncoder { public: - using CorrType = - typename MeshPredictionScheme::CorrType; - MeshPredictionSchemeTexCoords(const PointAttribute *attribute, - const TransformT &transform, - const MeshDataT &mesh_data, int version) - : MeshPredictionScheme( + using CorrType = typename MeshPredictionSchemeEncoder::CorrType; + MeshPredictionSchemeTexCoordsEncoder(const PointAttribute *attribute, + const TransformT &transform, + const MeshDataT &mesh_data) + : MeshPredictionSchemeEncoder( attribute, transform, mesh_data), pos_attribute_(nullptr), entry_to_point_id_map_(nullptr), - num_components_(0), - version_(version) {} + num_components_(0) {} - bool Encode(const DataTypeT *in_data, CorrType *out_corr, int size, - int num_components, - const PointIndex *entry_to_point_id_map) override; - bool Decode(const CorrType *in_corr, DataTypeT *out_data, int size, - int num_components, - const PointIndex *entry_to_point_id_map) override; + bool ComputeCorrectionValues( + const DataTypeT *in_data, CorrType *out_corr, int size, + int num_components, const PointIndex *entry_to_point_id_map) override; bool EncodePredictionData(EncoderBuffer *buffer) override; - bool DecodePredictionData(DecoderBuffer *buffer) override; PredictionSchemeMethod GetPredictionMethod() const override { return MESH_PREDICTION_TEX_COORDS; @@ -82,7 +72,7 @@ class MeshPredictionSchemeTexCoords bool SetParentAttribute(const PointAttribute *att) override { if (att->attribute_type() != GeometryAttribute::POSITION) return false; // Invalid attribute type. - if (att->components_count() != 3) + if (att->num_components() != 3) return false; // Currently works only for 3 component positions. pos_attribute_ = att; return true; @@ -102,7 +92,6 @@ class MeshPredictionSchemeTexCoords return Vector2f(data[data_offset], data[data_offset + 1]); } - template void ComputePredictedValue(CornerIndex corner_id, const DataTypeT *data, int data_id); @@ -113,97 +102,52 @@ class MeshPredictionSchemeTexCoords int num_components_; // Encoded / decoded array of UV flips. std::vector orientations_; - int version_; }; template -bool MeshPredictionSchemeTexCoords::Encode( - const DataTypeT *in_data, CorrType *out_corr, int size, int num_components, - const PointIndex *entry_to_point_id_map) { +bool MeshPredictionSchemeTexCoordsEncoder:: + ComputeCorrectionValues(const DataTypeT *in_data, CorrType *out_corr, + int size, int num_components, + const PointIndex *entry_to_point_id_map) { num_components_ = num_components; entry_to_point_id_map_ = entry_to_point_id_map; predicted_value_ = std::unique_ptr(new DataTypeT[num_components]); - this->transform().InitializeEncoding(in_data, size, num_components); + this->transform().Initialize(in_data, size, num_components); // We start processing from the end because this prediction uses data from // previous entries that could be overwritten when an entry is processed. for (int p = this->mesh_data().data_to_corner_map()->size() - 1; p >= 0; --p) { const CornerIndex corner_id = this->mesh_data().data_to_corner_map()->at(p); - ComputePredictedValue(corner_id, in_data, p); + ComputePredictedValue(corner_id, in_data, p); const int dst_offset = p * num_components; this->transform().ComputeCorrection( - in_data + dst_offset, predicted_value_.get(), out_corr, dst_offset); - } - return true; -} - -template -bool MeshPredictionSchemeTexCoords::Decode( - const CorrType *in_corr, DataTypeT *out_data, int /* size */, - int num_components, const PointIndex *entry_to_point_id_map) { - num_components_ = num_components; - entry_to_point_id_map_ = entry_to_point_id_map; - predicted_value_ = - std::unique_ptr(new DataTypeT[num_components]); - this->transform().InitializeDecoding(num_components); - - const int corner_map_size = this->mesh_data().data_to_corner_map()->size(); - for (int p = 0; p < corner_map_size; ++p) { - const CornerIndex corner_id = this->mesh_data().data_to_corner_map()->at(p); - ComputePredictedValue(corner_id, out_data, p); - - const int dst_offset = p * num_components; - this->transform().ComputeOriginalValue(predicted_value_.get(), in_corr, - out_data + dst_offset, dst_offset); + in_data + dst_offset, predicted_value_.get(), out_corr + dst_offset); } return true; } template -bool MeshPredictionSchemeTexCoords:: +bool MeshPredictionSchemeTexCoordsEncoder:: EncodePredictionData(EncoderBuffer *buffer) { // Encode the delta-coded orientations using arithmetic coding. const int32_t num_orientations = orientations_.size(); buffer->Encode(num_orientations); bool last_orientation = true; - BinaryEncoder encoder; + RAnsBitEncoder encoder; encoder.StartEncoding(); for (bool orientation : orientations_) { encoder.EncodeBit(orientation == last_orientation); last_orientation = orientation; } encoder.EndEncoding(buffer); - return MeshPredictionScheme::EncodePredictionData(buffer); + return MeshPredictionSchemeEncoder::EncodePredictionData(buffer); } template -bool MeshPredictionSchemeTexCoords:: - DecodePredictionData(DecoderBuffer *buffer) { - // Decode the delta coded orientations. - int32_t num_orientations = 0; - if (!buffer->Decode(&num_orientations) || num_orientations < 0) - return false; - orientations_.resize(num_orientations); - bool last_orientation = true; - BinaryDecoder decoder; - if (!decoder.StartDecoding(buffer)) - return false; - for (int i = 0; i < num_orientations; ++i) { - if (!decoder.DecodeNextBit()) - last_orientation = !last_orientation; - orientations_[i] = last_orientation; - } - decoder.EndDecoding(); - return MeshPredictionScheme::DecodePredictionData(buffer); -} - -template -template -void MeshPredictionSchemeTexCoords:: +void MeshPredictionSchemeTexCoordsEncoder:: ComputePredictedValue(CornerIndex corner_id, const DataTypeT *data, int data_id) { // Compute the predicted UV coordinate from the positions on all corners @@ -277,10 +221,11 @@ void MeshPredictionSchemeTexCoords:: // |pn_norm2_squared| can be exactly 0 when the next_pos and prev_pos are // the same positions (e.g. because they were quantized to the same // location). - if (version_ < DRACO_BITSTREAM_VERSION(1, 2) || pn_norm2_squared > 0) { + if (pn_norm2_squared > 0) { s = pn.Dot(cn) / pn_norm2_squared; // To get the coordinate t, we can use formula: // t = |C-N - (P-N) * s| / |P-N| + // Do not use std::sqrt to avoid changes in the bitstream. t = sqrt((cn - pn * s).SquaredNorm() / pn_norm2_squared); } else { s = 0; @@ -307,28 +252,19 @@ void MeshPredictionSchemeTexCoords:: const float pnvs = pn_uv[1] * s + n_uv[1]; const float pnvt = pn_uv[1] * t; Vector2f predicted_uv; - if (IS_ENCODER) { - // When encoding compute both possible vectors and determine which one - // results in a better prediction. - const Vector2f predicted_uv_0(pnus - pnvt, pnvs + pnut); - const Vector2f predicted_uv_1(pnus + pnvt, pnvs - pnut); - const Vector2f c_uv = GetTexCoordForEntryId(data_id, data); - if ((c_uv - predicted_uv_0).SquaredNorm() < - (c_uv - predicted_uv_1).SquaredNorm()) { - predicted_uv = predicted_uv_0; - orientations_.push_back(true); - } else { - predicted_uv = predicted_uv_1; - orientations_.push_back(false); - } + + // When encoding compute both possible vectors and determine which one + // results in a better prediction. + const Vector2f predicted_uv_0(pnus - pnvt, pnvs + pnut); + const Vector2f predicted_uv_1(pnus + pnvt, pnvs - pnut); + const Vector2f c_uv = GetTexCoordForEntryId(data_id, data); + if ((c_uv - predicted_uv_0).SquaredNorm() < + (c_uv - predicted_uv_1).SquaredNorm()) { + predicted_uv = predicted_uv_0; + orientations_.push_back(true); } else { - // When decoding the data, we already know which orientation to use. - const bool orientation = orientations_.back(); - orientations_.pop_back(); - if (orientation) - predicted_uv = Vector2f(pnus - pnvt, pnvs + pnut); - else - predicted_uv = Vector2f(pnus + pnvt, pnvs - pnut); + predicted_uv = predicted_uv_1; + orientations_.push_back(false); } if (std::is_integral::value) { // Round the predicted value for integer types. diff --git a/src/draco/compression/attributes/prediction_schemes/mesh_prediction_scheme_tex_coords_portable_decoder.h b/src/draco/compression/attributes/prediction_schemes/mesh_prediction_scheme_tex_coords_portable_decoder.h new file mode 100644 index 00000000..e81d8533 --- /dev/null +++ b/src/draco/compression/attributes/prediction_schemes/mesh_prediction_scheme_tex_coords_portable_decoder.h @@ -0,0 +1,128 @@ +// Copyright 2017 The Draco Authors. +// +// Licensed under the Apache License, Version 2.0 (the "License"); +// you may not use this file except in compliance with the License. +// You may obtain a copy of the License at +// +// http://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an "AS IS" BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// See the License for the specific language governing permissions and +// limitations under the License. +// +#ifndef DRACO_COMPRESSION_ATTRIBUTES_PREDICTION_SCHEMES_MESH_PREDICTION_SCHEME_TEX_COORDS_PORTABLE_DECODER_H_ +#define DRACO_COMPRESSION_ATTRIBUTES_PREDICTION_SCHEMES_MESH_PREDICTION_SCHEME_TEX_COORDS_PORTABLE_DECODER_H_ + +#include "draco/compression/attributes/prediction_schemes/mesh_prediction_scheme_decoder.h" +#include "draco/compression/attributes/prediction_schemes/mesh_prediction_scheme_tex_coords_portable_predictor.h" +#include "draco/core/bit_coders/rans_bit_decoder.h" + +namespace draco { + +// Decoder for predictions of UV coordinates encoded by our specialized and +// portable texture coordinate predictor. See the corresponding encoder for more +// details. +template +class MeshPredictionSchemeTexCoordsPortableDecoder + : public MeshPredictionSchemeDecoder { + public: + using CorrType = typename MeshPredictionSchemeDecoder::CorrType; + MeshPredictionSchemeTexCoordsPortableDecoder(const PointAttribute *attribute, + const TransformT &transform, + const MeshDataT &mesh_data) + : MeshPredictionSchemeDecoder( + attribute, transform, mesh_data), + predictor_(mesh_data) {} + + bool ComputeOriginalValues(const CorrType *in_corr, DataTypeT *out_data, + int size, int num_components, + const PointIndex *entry_to_point_id_map) override; + + bool DecodePredictionData(DecoderBuffer *buffer) override; + + PredictionSchemeMethod GetPredictionMethod() const override { + return MESH_PREDICTION_TEX_COORDS_PORTABLE; + } + + bool IsInitialized() const override { + if (!predictor_.IsInitialized()) + return false; + if (!this->mesh_data().IsInitialized()) + return false; + return true; + } + + int GetNumParentAttributes() const override { return 1; } + + GeometryAttribute::Type GetParentAttributeType(int i) const override { + DCHECK_EQ(i, 0); + (void)i; + return GeometryAttribute::POSITION; + } + + bool SetParentAttribute(const PointAttribute *att) override { + if (att->attribute_type() != GeometryAttribute::POSITION) + return false; // Invalid attribute type. + if (att->num_components() != 3) + return false; // Currently works only for 3 component positions. + predictor_.SetPositionAttribute(*att); + return true; + } + + private: + MeshPredictionSchemeTexCoordsPortablePredictor + predictor_; +}; + +template +bool MeshPredictionSchemeTexCoordsPortableDecoder< + DataTypeT, TransformT, + MeshDataT>::ComputeOriginalValues(const CorrType *in_corr, + DataTypeT *out_data, int /* size */, + int num_components, + const PointIndex *entry_to_point_id_map) { + predictor_.SetEntryToPointIdMap(entry_to_point_id_map); + this->transform().Initialize(num_components); + + const int corner_map_size = this->mesh_data().data_to_corner_map()->size(); + for (int p = 0; p < corner_map_size; ++p) { + const CornerIndex corner_id = this->mesh_data().data_to_corner_map()->at(p); + predictor_.template ComputePredictedValue(corner_id, out_data, p); + + const int dst_offset = p * num_components; + this->transform().ComputeOriginalValue(predictor_.predicted_value(), + in_corr + dst_offset, + out_data + dst_offset); + } + return true; +} + +template +bool MeshPredictionSchemeTexCoordsPortableDecoder< + DataTypeT, TransformT, MeshDataT>::DecodePredictionData(DecoderBuffer + *buffer) { + // Decode the delta coded orientations. + int32_t num_orientations = 0; + if (!buffer->Decode(&num_orientations) || num_orientations < 0) + return false; + predictor_.ResizeOrientations(num_orientations); + bool last_orientation = true; + RAnsBitDecoder decoder; + if (!decoder.StartDecoding(buffer)) + return false; + for (int i = 0; i < num_orientations; ++i) { + if (!decoder.DecodeNextBit()) + last_orientation = !last_orientation; + predictor_.set_orientation(i, last_orientation); + } + decoder.EndDecoding(); + return MeshPredictionSchemeDecoder::DecodePredictionData(buffer); +} + +} // namespace draco + +#endif // DRACO_COMPRESSION_ATTRIBUTES_PREDICTION_SCHEMES_MESH_PREDICTION_SCHEME_TEX_COORDS_PORTABLE_DECODER_H_ diff --git a/src/draco/compression/attributes/prediction_schemes/mesh_prediction_scheme_tex_coords_portable_encoder.h b/src/draco/compression/attributes/prediction_schemes/mesh_prediction_scheme_tex_coords_portable_encoder.h new file mode 100644 index 00000000..4bec8075 --- /dev/null +++ b/src/draco/compression/attributes/prediction_schemes/mesh_prediction_scheme_tex_coords_portable_encoder.h @@ -0,0 +1,128 @@ +// Copyright 2017 The Draco Authors. +// +// Licensed under the Apache License, Version 2.0 (the "License"); +// you may not use this file except in compliance with the License. +// You may obtain a copy of the License at +// +// http://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an "AS IS" BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// See the License for the specific language governing permissions and +// limitations under the License. +// +#ifndef DRACO_COMPRESSION_ATTRIBUTES_PREDICTION_SCHEMES_MESH_PREDICTION_SCHEME_TEX_COORDS_PORTABLE_ENCODER_H_ +#define DRACO_COMPRESSION_ATTRIBUTES_PREDICTION_SCHEMES_MESH_PREDICTION_SCHEME_TEX_COORDS_PORTABLE_ENCODER_H_ + +#include "draco/compression/attributes/prediction_schemes/mesh_prediction_scheme_encoder.h" +#include "draco/compression/attributes/prediction_schemes/mesh_prediction_scheme_tex_coords_portable_predictor.h" +#include "draco/core/bit_coders/rans_bit_encoder.h" + +namespace draco { + +// Prediction scheme designed for predicting texture coordinates from known +// spatial position of vertices. For isometric parametrizations, the ratios +// between triangle edge lengths should be about the same in both the spatial +// and UV coordinate spaces, which makes the positions a good predictor for the +// UV coordinates. Note that this may not be the optimal approach for other +// parametrizations such as projective ones. +template +class MeshPredictionSchemeTexCoordsPortableEncoder + : public MeshPredictionSchemeEncoder { + public: + using CorrType = typename MeshPredictionSchemeEncoder::CorrType; + MeshPredictionSchemeTexCoordsPortableEncoder(const PointAttribute *attribute, + const TransformT &transform, + const MeshDataT &mesh_data) + : MeshPredictionSchemeEncoder( + attribute, transform, mesh_data), + predictor_(mesh_data) {} + + bool ComputeCorrectionValues( + const DataTypeT *in_data, CorrType *out_corr, int size, + int num_components, const PointIndex *entry_to_point_id_map) override; + + bool EncodePredictionData(EncoderBuffer *buffer) override; + + PredictionSchemeMethod GetPredictionMethod() const override { + return MESH_PREDICTION_TEX_COORDS_PORTABLE; + } + + bool IsInitialized() const override { + if (!predictor_.IsInitialized()) + return false; + if (!this->mesh_data().IsInitialized()) + return false; + return true; + } + + int GetNumParentAttributes() const override { return 1; } + + GeometryAttribute::Type GetParentAttributeType(int i) const override { + DCHECK_EQ(i, 0); + (void)i; + return GeometryAttribute::POSITION; + } + + bool SetParentAttribute(const PointAttribute *att) override { + if (att->attribute_type() != GeometryAttribute::POSITION) + return false; // Invalid attribute type. + if (att->num_components() != 3) + return false; // Currently works only for 3 component positions. + predictor_.SetPositionAttribute(*att); + return true; + } + + private: + MeshPredictionSchemeTexCoordsPortablePredictor + predictor_; +}; + +template +bool MeshPredictionSchemeTexCoordsPortableEncoder:: + ComputeCorrectionValues(const DataTypeT *in_data, CorrType *out_corr, + int size, int num_components, + const PointIndex *entry_to_point_id_map) { + predictor_.SetEntryToPointIdMap(entry_to_point_id_map); + this->transform().Initialize(in_data, size, num_components); + // We start processing from the end because this prediction uses data from + // previous entries that could be overwritten when an entry is processed. + for (int p = this->mesh_data().data_to_corner_map()->size() - 1; p >= 0; + --p) { + const CornerIndex corner_id = this->mesh_data().data_to_corner_map()->at(p); + predictor_.template ComputePredictedValue(corner_id, in_data, p); + + const int dst_offset = p * num_components; + this->transform().ComputeCorrection(in_data + dst_offset, + predictor_.predicted_value(), + out_corr + dst_offset); + } + return true; +} + +template +bool MeshPredictionSchemeTexCoordsPortableEncoder< + DataTypeT, TransformT, MeshDataT>::EncodePredictionData(EncoderBuffer + *buffer) { + // Encode the delta-coded orientations using arithmetic coding. + const int32_t num_orientations = predictor_.num_orientations(); + buffer->Encode(num_orientations); + bool last_orientation = true; + RAnsBitEncoder encoder; + encoder.StartEncoding(); + for (int i = 0; i < num_orientations; ++i) { + const bool orientation = predictor_.orientation(i); + encoder.EncodeBit(orientation == last_orientation); + last_orientation = orientation; + } + encoder.EndEncoding(buffer); + return MeshPredictionSchemeEncoder::EncodePredictionData(buffer); +} + +} // namespace draco + +#endif // DRACO_COMPRESSION_ATTRIBUTES_PREDICTION_SCHEMES_MESH_PREDICTION_SCHEME_TEX_COORDS_PORTABLE_ENCODER_H_ diff --git a/src/draco/compression/attributes/prediction_schemes/mesh_prediction_scheme_tex_coords_portable_predictor.h b/src/draco/compression/attributes/prediction_schemes/mesh_prediction_scheme_tex_coords_portable_predictor.h new file mode 100644 index 00000000..144a9a0a --- /dev/null +++ b/src/draco/compression/attributes/prediction_schemes/mesh_prediction_scheme_tex_coords_portable_predictor.h @@ -0,0 +1,248 @@ +// Copyright 2017 The Draco Authors. +// +// Licensed under the Apache License, Version 2.0 (the "License"); +// you may not use this file except in compliance with the License. +// You may obtain a copy of the License at +// +// http://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an "AS IS" BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// See the License for the specific language governing permissions and +// limitations under the License. +// +#ifndef DRACO_COMPRESSION_ATTRIBUTES_PREDICTION_SCHEMES_MESH_PREDICTION_SCHEME_TEX_COORDS_PORTABLE_PREDICTOR_H_ +#define DRACO_COMPRESSION_ATTRIBUTES_PREDICTION_SCHEMES_MESH_PREDICTION_SCHEME_TEX_COORDS_PORTABLE_PREDICTOR_H_ + +#include +#include "draco/attributes/point_attribute.h" +#include "draco/core/math_utils.h" +#include "draco/core/vector_d.h" +#include "draco/mesh/corner_table.h" + +namespace draco { + +// Predictor functionality used for portable UV prediction by both encoder and +// decoder. +template +class MeshPredictionSchemeTexCoordsPortablePredictor { + public: + MeshPredictionSchemeTexCoordsPortablePredictor(const MeshDataT &md) + : pos_attribute_(nullptr), + entry_to_point_id_map_(nullptr), + mesh_data_(md) {} + void SetPositionAttribute(const PointAttribute &position_attribute) { + pos_attribute_ = &position_attribute; + } + void SetEntryToPointIdMap(const PointIndex *map) { + entry_to_point_id_map_ = map; + } + bool IsInitialized() const { return pos_attribute_ != nullptr; } + + VectorD GetPositionForEntryId(int entry_id) const { + const PointIndex point_id = entry_to_point_id_map_[entry_id]; + VectorD pos; + pos_attribute_->ConvertValue(pos_attribute_->mapped_index(point_id), + &pos[0]); + return pos; + } + + VectorD GetTexCoordForEntryId(int entry_id, + const DataTypeT *data) const { + const int data_offset = entry_id * kNumComponents; + return VectorD(data[data_offset], data[data_offset + 1]); + } + + // Computes predicted UV coordinates on a given corner. The coordinates are + // stored in |predicted_value_| member. + template + void ComputePredictedValue(CornerIndex corner_id, const DataTypeT *data, + int data_id); + + const DataTypeT *predicted_value() const { return predicted_value_; } + bool orientation(int i) const { return orientations_[i]; } + void set_orientation(int i, bool v) { orientations_[i] = v; } + size_t num_orientations() const { return orientations_.size(); } + void ResizeOrientations(int num_orientations) { + orientations_.resize(num_orientations); + } + + private: + const PointAttribute *pos_attribute_; + const PointIndex *entry_to_point_id_map_; + static constexpr int kNumComponents = 2; + DataTypeT predicted_value_[kNumComponents]; + // Encoded / decoded array of UV flips. + // TODO(ostava): We should remove this and replace this with in-place encoding + // and decoding to avoid unnecessary copy. + std::vector orientations_; + MeshDataT mesh_data_; +}; + +template +template +void MeshPredictionSchemeTexCoordsPortablePredictor< + DataTypeT, MeshDataT>::ComputePredictedValue(CornerIndex corner_id, + const DataTypeT *data, + int data_id) { + // Compute the predicted UV coordinate from the positions on all corners + // of the processed triangle. For the best prediction, the UV coordinates + // on the next/previous corners need to be already encoded/decoded. + const CornerIndex next_corner_id = mesh_data_.corner_table()->Next(corner_id); + const CornerIndex prev_corner_id = + mesh_data_.corner_table()->Previous(corner_id); + // Get the encoded data ids from the next and previous corners. + // The data id is the encoding order of the UV coordinates. + int next_data_id, prev_data_id; + + int next_vert_id, prev_vert_id; + next_vert_id = mesh_data_.corner_table()->Vertex(next_corner_id).value(); + prev_vert_id = mesh_data_.corner_table()->Vertex(prev_corner_id).value(); + + next_data_id = mesh_data_.vertex_to_data_map()->at(next_vert_id); + prev_data_id = mesh_data_.vertex_to_data_map()->at(prev_vert_id); + + if (prev_data_id < data_id && next_data_id < data_id) { + // Both other corners have available UV coordinates for prediction. + const VectorD n_uv = GetTexCoordForEntryId(next_data_id, data); + const VectorD p_uv = GetTexCoordForEntryId(prev_data_id, data); + if (p_uv == n_uv) { + // We cannot do a reliable prediction on degenerated UV triangles. + predicted_value_[0] = p_uv[0]; + predicted_value_[1] = p_uv[1]; + return; + } + + // Get positions at all corners. + const VectorD tip_pos = GetPositionForEntryId(data_id); + const VectorD next_pos = GetPositionForEntryId(next_data_id); + const VectorD prev_pos = GetPositionForEntryId(prev_data_id); + // We use the positions of the above triangle to predict the texture + // coordinate on the tip corner C. + // To convert the triangle into the UV coordinate system we first compute + // position X on the vector |prev_pos - next_pos| that is the projection of + // point C onto vector |prev_pos - next_pos|: + // + // C + // /. \ + // / . \ + // / . \ + // N---X----------P + // + // Where next_pos is point (N), prev_pos is point (P) and tip_pos is the + // position of predicted coordinate (C). + // + const VectorD pn = prev_pos - next_pos; + const int64_t pn_norm2_squared = pn.SquaredNorm(); + if (pn_norm2_squared != 0) { + // Compute the projection of C onto PN by computing dot product of CN with + // PN and normalizing it by length of PN. This gives us a factor |s| where + // |s = PN.Dot(CN) / PN.SquaredNorm2()|. This factor can be used to + // compute X in UV space |X_UV| as |X_UV = N_UV + s * PN_UV|. + const VectorD cn = tip_pos - next_pos; + const int64_t cn_dot_pn = pn.Dot(cn); + + const VectorD pn_uv = p_uv - n_uv; + // Because we perform all computations with integers, we don't explicitly + // compute the normalized factor |s|, but rather we perform all operations + // over UV vectors in a non-normalized coordinate system scaled with a + // scaling factor |pn_norm2_squared|: + // + // x_uv = X_UV * PN.Norm2Squared() + // + const VectorD x_uv = + n_uv * pn_norm2_squared + (cn_dot_pn * pn_uv); + + // Compute squared length of vector CX in position coordinate system: + const VectorD x_pos = + next_pos + (cn_dot_pn * pn) / pn_norm2_squared; + const int64_t cx_norm2_squared = (tip_pos - x_pos).SquaredNorm(); + + // Compute vector CX_UV in the uv space by rotating vector PN_UV by 90 + // degrees and scaling it with factor CX.Norm2() / PN.Norm2(): + // + // CX_UV = (CX.Norm2() / PN.Norm2()) * Rot(PN_UV) + // + // To preserve precision, we perform all operations in scaled space as + // explained above, so we want the final vector to be: + // + // cx_uv = CX_UV * PN.Norm2Squared() + // + // We can then rewrite the formula as: + // + // cx_uv = CX.Norm2() * PN.Norm2() * Rot(PN_UV) + // + VectorD cx_uv(pn_uv[1], -pn_uv[0]); // Rotated PN_UV. + // Compute CX.Norm2() * PN.Norm2() + const int64_t norm_squared = IntSqrt(cx_norm2_squared * pn_norm2_squared); + // Final cx_uv in the scaled coordinate space. + cx_uv = norm_squared * cx_uv; + + // Predicted uv coordinate is then computed by either adding or + // subtracting CX_UV to/from X_UV. + VectorD predicted_uv; + if (is_encoder_t) { + // When encoding, compute both possible vectors and determine which one + // results in a better prediction. + // Both vectors need to be transformed back from the scaled space to + // the real UV coordinate space. + const VectorD predicted_uv_0((x_uv + cx_uv) / + pn_norm2_squared); + const VectorD predicted_uv_1((x_uv - cx_uv) / + pn_norm2_squared); + const VectorD c_uv = GetTexCoordForEntryId(data_id, data); + if ((c_uv - predicted_uv_0).SquaredNorm() < + (c_uv - predicted_uv_1).SquaredNorm()) { + predicted_uv = predicted_uv_0; + orientations_.push_back(true); + } else { + predicted_uv = predicted_uv_1; + orientations_.push_back(false); + } + } else { + // When decoding the data, we already know which orientation to use. + const bool orientation = orientations_.back(); + orientations_.pop_back(); + if (orientation) + predicted_uv = (x_uv + cx_uv) / pn_norm2_squared; + else + predicted_uv = (x_uv - cx_uv) / pn_norm2_squared; + } + predicted_value_[0] = static_cast(predicted_uv[0]); + predicted_value_[1] = static_cast(predicted_uv[1]); + return; + } + } + // Else we don't have available textures on both corners or the position data + // is invalid. For such cases we can't use positions for predicting the uv + // value and we resort to delta coding. + int data_offset = 0; + if (prev_data_id < data_id) { + // Use the value on the previous corner as the prediction. + data_offset = prev_data_id * kNumComponents; + } + if (next_data_id < data_id) { + // Use the value on the next corner as the prediction. + data_offset = next_data_id * kNumComponents; + } else { + // None of the other corners have a valid value. Use the last encoded value + // as the prediction if possible. + if (data_id > 0) { + data_offset = (data_id - 1) * kNumComponents; + } else { + // We are encoding the first value. Predict 0. + for (int i = 0; i < kNumComponents; ++i) { + predicted_value_[i] = 0; + } + return; + } + } + for (int i = 0; i < kNumComponents; ++i) { + predicted_value_[i] = data[data_offset + i]; + } +} + +} // namespace draco + +#endif // DRACO_COMPRESSION_ATTRIBUTES_PREDICTION_SCHEMES_MESH_PREDICTION_SCHEME_TEX_COORDS_PORTABLE_PREDICTOR_H_ diff --git a/compression/attributes/prediction_schemes/prediction_scheme.h b/src/draco/compression/attributes/prediction_schemes/prediction_scheme_decoder.h similarity index 77% rename from compression/attributes/prediction_schemes/prediction_scheme.h rename to src/draco/compression/attributes/prediction_schemes/prediction_scheme_decoder.h index d52733b4..9a14ff8d 100644 --- a/compression/attributes/prediction_schemes/prediction_scheme.h +++ b/src/draco/compression/attributes/prediction_schemes/prediction_scheme_decoder.h @@ -12,13 +12,13 @@ // See the License for the specific language governing permissions and // limitations under the License. // -#ifndef DRACO_COMPRESSION_ATTRIBUTES_PREDICTION_SCHEMES_PREDICTION_SCHEME_H_ -#define DRACO_COMPRESSION_ATTRIBUTES_PREDICTION_SCHEMES_PREDICTION_SCHEME_H_ +#ifndef DRACO_COMPRESSION_ATTRIBUTES_PREDICTION_SCHEMES_PREDICTION_SCHEME_DECODER_H_ +#define DRACO_COMPRESSION_ATTRIBUTES_PREDICTION_SCHEMES_PREDICTION_SCHEME_DECODER_H_ #include -#include "compression/attributes/prediction_schemes/prediction_scheme_interface.h" -#include "compression/attributes/prediction_schemes/prediction_scheme_transform.h" +#include "draco/compression/attributes/prediction_schemes/prediction_scheme_decoder_interface.h" +#include "draco/compression/attributes/prediction_schemes/prediction_scheme_decoding_transform.h" // Prediction schemes can be used during encoding and decoding of vertex // attributes to predict attribute values based on the previously @@ -30,24 +30,21 @@ namespace draco { // Abstract base class for typed prediction schemes. It provides basic access // to the encoded attribute and to the supplied prediction transform. template > -class PredictionScheme - : public PredictionSchemeTypedInterface { + class TransformT = + PredictionSchemeDecodingTransform> +class PredictionSchemeDecoder : public PredictionSchemeTypedDecoderInterface< + DataTypeT, typename TransformT::CorrType> { public: + typedef DataTypeT DataType; + typedef TransformT Transform; // Correction type needs to be defined in the prediction transform class. typedef typename Transform::CorrType CorrType; - explicit PredictionScheme(const PointAttribute *attribute) - : PredictionScheme(attribute, Transform()) {} - PredictionScheme(const PointAttribute *attribute, const Transform &transform) + explicit PredictionSchemeDecoder(const PointAttribute *attribute) + : PredictionSchemeDecoder(attribute, Transform()) {} + PredictionSchemeDecoder(const PointAttribute *attribute, + const Transform &transform) : attribute_(attribute), transform_(transform) {} - bool EncodePredictionData(EncoderBuffer *buffer) override { - if (!transform_.EncodeTransformData(buffer)) - return false; - return true; - } - bool DecodePredictionData(DecoderBuffer *buffer) override { if (!transform_.DecodeTransformData(buffer)) return false; @@ -89,4 +86,4 @@ class PredictionScheme } // namespace draco -#endif // DRACO_COMPRESSION_ATTRIBUTES_PREDICTION_SCHEMES_PREDICTION_SCHEME_H_ +#endif // DRACO_COMPRESSION_ATTRIBUTES_PREDICTION_SCHEMES_PREDICTION_SCHEME_DECODER_H_ diff --git a/src/draco/compression/attributes/prediction_schemes/prediction_scheme_decoder_factory.h b/src/draco/compression/attributes/prediction_schemes/prediction_scheme_decoder_factory.h new file mode 100644 index 00000000..70ec51f6 --- /dev/null +++ b/src/draco/compression/attributes/prediction_schemes/prediction_scheme_decoder_factory.h @@ -0,0 +1,121 @@ +// Copyright 2016 The Draco Authors. +// +// Licensed under the Apache License, Version 2.0 (the "License"); +// you may not use this file except in compliance with the License. +// You may obtain a copy of the License at +// +// http://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an "AS IS" BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// See the License for the specific language governing permissions and +// limitations under the License. +// +// Functions for creating prediction schemes for decoders using the provided +// prediction method id. + +#ifndef DRACO_COMPRESSION_ATTRIBUTES_PREDICTION_SCHEMES_PREDICTION_SCHEME_DECODER_FACTORY_H_ +#define DRACO_COMPRESSION_ATTRIBUTES_PREDICTION_SCHEMES_PREDICTION_SCHEME_DECODER_FACTORY_H_ + +#include "draco/compression/attributes/prediction_schemes/mesh_prediction_scheme_constrained_multi_parallelogram_decoder.h" +#include "draco/compression/attributes/prediction_schemes/mesh_prediction_scheme_geometric_normal_decoder.h" +#include "draco/compression/attributes/prediction_schemes/mesh_prediction_scheme_multi_parallelogram_decoder.h" +#include "draco/compression/attributes/prediction_schemes/mesh_prediction_scheme_parallelogram_decoder.h" +#include "draco/compression/attributes/prediction_schemes/mesh_prediction_scheme_tex_coords_decoder.h" +#include "draco/compression/attributes/prediction_schemes/mesh_prediction_scheme_tex_coords_portable_decoder.h" +#include "draco/compression/attributes/prediction_schemes/prediction_scheme_decoder.h" +#include "draco/compression/attributes/prediction_schemes/prediction_scheme_delta_decoder.h" +#include "draco/compression/attributes/prediction_schemes/prediction_scheme_factory.h" +#include "draco/compression/mesh/mesh_decoder.h" + +namespace draco { + +// Factory class for creating mesh prediction schemes. +template +struct MeshPredictionSchemeDecoderFactory { + template + std::unique_ptr> operator()( + PredictionSchemeMethod method, const PointAttribute *attribute, + const TransformT &transform, const MeshDataT &mesh_data, + uint16_t bitstream_version) { + if (method == MESH_PREDICTION_PARALLELOGRAM) { + return std::unique_ptr>( + new MeshPredictionSchemeParallelogramDecoder( + attribute, transform, mesh_data)); + } else if (method == MESH_PREDICTION_MULTI_PARALLELOGRAM) { + return std::unique_ptr>( + new MeshPredictionSchemeMultiParallelogramDecoder< + DataTypeT, TransformT, MeshDataT>(attribute, transform, + mesh_data)); + } else if (method == MESH_PREDICTION_CONSTRAINED_MULTI_PARALLELOGRAM) { + return std::unique_ptr>( + new MeshPredictionSchemeConstrainedMultiParallelogramDecoder< + DataTypeT, TransformT, MeshDataT>(attribute, transform, + mesh_data)); + } else if (method == MESH_PREDICTION_TEX_COORDS) { + return std::unique_ptr>( + new MeshPredictionSchemeTexCoordsDecoder( + attribute, transform, mesh_data, bitstream_version)); + } else if (method == MESH_PREDICTION_TEX_COORDS_PORTABLE) { + return std::unique_ptr>( + new MeshPredictionSchemeTexCoordsPortableDecoder< + DataTypeT, TransformT, MeshDataT>(attribute, transform, + mesh_data)); + } else if (method == MESH_PREDICTION_GEOMETRIC_NORMAL) { + return std::unique_ptr>( + new MeshPredictionSchemeGeometricNormalDecoder( + attribute, transform, mesh_data)); + } + return nullptr; + } +}; + +// Creates a prediction scheme for a given decoder and given prediction method. +// The prediction schemes are automatically initialized with decoder specific +// data if needed. +template +std::unique_ptr> +CreatePredictionSchemeForDecoder(PredictionSchemeMethod method, int att_id, + const PointCloudDecoder *decoder, + const TransformT &transform) { + if (method == PREDICTION_NONE) + return nullptr; + const PointAttribute *const att = decoder->point_cloud()->attribute(att_id); + if (decoder->GetGeometryType() == TRIANGULAR_MESH) { + // Cast the decoder to mesh decoder. This is not necessarily safe if there + // is some other decoder decides to use TRIANGULAR_MESH as the return type, + // but unfortunately there is not nice work around for this without using + // RTTI (double dispatch and similar concepts will not work because of the + // template nature of the prediction schemes). + const MeshDecoder *const mesh_decoder = + static_cast(decoder); + + auto ret = CreateMeshPredictionScheme< + MeshDecoder, PredictionSchemeDecoder, + MeshPredictionSchemeDecoderFactory>( + mesh_decoder, method, att_id, transform, decoder->bitstream_version()); + if (ret) + return ret; + // Otherwise try to create another prediction scheme. + } + // Create delta decoder. + return std::unique_ptr>( + new PredictionSchemeDeltaDecoder(att, transform)); +} + +// Create a prediction scheme using a default transform constructor. +template +std::unique_ptr> +CreatePredictionSchemeForDecoder(PredictionSchemeMethod method, int att_id, + const PointCloudDecoder *decoder) { + return CreatePredictionSchemeForDecoder( + method, att_id, decoder, TransformT()); +} + +} // namespace draco + +#endif // DRACO_COMPRESSION_ATTRIBUTES_PREDICTION_SCHEMES_PREDICTION_SCHEME_DECODER_FACTORY_H_ diff --git a/src/draco/compression/attributes/prediction_schemes/prediction_scheme_decoder_interface.h b/src/draco/compression/attributes/prediction_schemes/prediction_scheme_decoder_interface.h new file mode 100644 index 00000000..6f19f7fd --- /dev/null +++ b/src/draco/compression/attributes/prediction_schemes/prediction_scheme_decoder_interface.h @@ -0,0 +1,53 @@ +// Copyright 2016 The Draco Authors. +// +// Licensed under the Apache License, Version 2.0 (the "License"); +// you may not use this file except in compliance with the License. +// You may obtain a copy of the License at +// +// http://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an "AS IS" BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// See the License for the specific language governing permissions and +// limitations under the License. +// +#ifndef DRACO_COMPRESSION_ATTRIBUTES_PREDICTION_SCHEMES_PREDICTION_SCHEME_DECODER_INTERFACE_H_ +#define DRACO_COMPRESSION_ATTRIBUTES_PREDICTION_SCHEMES_PREDICTION_SCHEME_DECODER_INTERFACE_H_ + +#include "draco/compression/attributes/prediction_schemes/prediction_scheme_interface.h" +#include "draco/core/decoder_buffer.h" + +// Prediction schemes can be used during encoding and decoding of attributes +// to predict attribute values based on the previously encoded/decoded data. +// See prediction_scheme.h for more details. +namespace draco { + +// Abstract interface for all prediction schemes used during attribute encoding. +class PredictionSchemeDecoderInterface : public PredictionSchemeInterface { + public: + // Method that can be used to decode any prediction scheme specific data + // from the input buffer. + virtual bool DecodePredictionData(DecoderBuffer *buffer) = 0; +}; + +// A specialized version of the prediction scheme interface for specific +// input and output data types. +// |entry_to_point_id_map| is the mapping between value entries to point ids +// of the associated point cloud, where one entry is defined as |num_components| +// values of the |in_data|. +// DataTypeT is the data type of input and predicted values. +// CorrTypeT is the data type used for storing corrected values. +template +class PredictionSchemeTypedDecoderInterface + : public PredictionSchemeDecoderInterface { + public: + // Reverts changes made by the prediction scheme during encoding. + virtual bool ComputeOriginalValues( + const CorrTypeT *in_corr, DataTypeT *out_data, int size, + int num_components, const PointIndex *entry_to_point_id_map) = 0; +}; + +} // namespace draco + +#endif // DRACO_COMPRESSION_ATTRIBUTES_PREDICTION_SCHEMES_PREDICTION_SCHEME_DECODER_INTERFACE_H_ diff --git a/src/draco/compression/attributes/prediction_schemes/prediction_scheme_decoding_transform.h b/src/draco/compression/attributes/prediction_schemes/prediction_scheme_decoding_transform.h new file mode 100644 index 00000000..900b20bf --- /dev/null +++ b/src/draco/compression/attributes/prediction_schemes/prediction_scheme_decoding_transform.h @@ -0,0 +1,65 @@ +// Copyright 2016 The Draco Authors. +// +// Licensed under the Apache License, Version 2.0 (the "License"); +// you may not use this file except in compliance with the License. +// You may obtain a copy of the License at +// +// http://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an "AS IS" BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// See the License for the specific language governing permissions and +// limitations under the License. +// +#ifndef DRACO_COMPRESSION_ATTRIBUTES_PREDICTION_SCHEMES_PREDICTION_SCHEME_DECODING_TRANSFORM_H_ +#define DRACO_COMPRESSION_ATTRIBUTES_PREDICTION_SCHEMES_PREDICTION_SCHEME_DECODING_TRANSFORM_H_ + +#include "draco/compression/config/compression_shared.h" +#include "draco/core/decoder_buffer.h" + +namespace draco { + +// PredictionSchemeDecodingTransform is used to transform predicted values and +// correction values into the final original attribute values. +// DataTypeT is the data type of predicted values. +// CorrTypeT is the data type used for storing corrected values. It allows +// transforms to store corrections into a different type or format compared to +// the predicted data. +template +class PredictionSchemeDecodingTransform { + public: + typedef CorrTypeT CorrType; + PredictionSchemeDecodingTransform() : num_components_(0) {} + + void Initialize(int num_components) { num_components_ = num_components; } + + // Computes the original value from the input predicted value and the decoded + // corrections. The default implementation is equal to std:plus. + inline void ComputeOriginalValue(const DataTypeT *predicted_vals, + const CorrTypeT *corr_vals, + DataTypeT *out_original_vals) const { + static_assert(std::is_same::value, + "For the default prediction transform, correction and input " + "data must be of the same type."); + for (int i = 0; i < num_components_; ++i) { + out_original_vals[i] = predicted_vals[i] + corr_vals[i]; + } + } + + // Decodes any transform specific data. Called before Initialize() method. + bool DecodeTransformData(DecoderBuffer * /* buffer */) { return true; } + + // Should return true if all corrected values are guaranteed to be positive. + bool AreCorrectionsPositive() const { return false; } + + protected: + int num_components() const { return num_components_; } + + private: + int num_components_; +}; + +} // namespace draco + +#endif // DRACO_COMPRESSION_ATTRIBUTES_PREDICTION_SCHEMES_PREDICTION_SCHEME_DECODING_TRANSFORM_H_ diff --git a/src/draco/compression/attributes/prediction_schemes/prediction_scheme_delta_decoder.h b/src/draco/compression/attributes/prediction_schemes/prediction_scheme_delta_decoder.h new file mode 100644 index 00000000..cc1dea0f --- /dev/null +++ b/src/draco/compression/attributes/prediction_schemes/prediction_scheme_delta_decoder.h @@ -0,0 +1,65 @@ +// Copyright 2016 The Draco Authors. +// +// Licensed under the Apache License, Version 2.0 (the "License"); +// you may not use this file except in compliance with the License. +// You may obtain a copy of the License at +// +// http://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an "AS IS" BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// See the License for the specific language governing permissions and +// limitations under the License. +// +#ifndef DRACO_COMPRESSION_ATTRIBUTES_PREDICTION_SCHEMES_PREDICTION_SCHEME_DELTA_DECODER_H_ +#define DRACO_COMPRESSION_ATTRIBUTES_PREDICTION_SCHEMES_PREDICTION_SCHEME_DELTA_DECODER_H_ + +#include "draco/compression/attributes/prediction_schemes/prediction_scheme_decoder.h" + +namespace draco { + +// Decoder for values encoded with delta coding. See the corresponding encoder +// for more details. +template +class PredictionSchemeDeltaDecoder + : public PredictionSchemeDecoder { + public: + using CorrType = + typename PredictionSchemeDecoder::CorrType; + // Initialized the prediction scheme. + explicit PredictionSchemeDeltaDecoder(const PointAttribute *attribute) + : PredictionSchemeDecoder(attribute) {} + PredictionSchemeDeltaDecoder(const PointAttribute *attribute, + const TransformT &transform) + : PredictionSchemeDecoder(attribute, transform) {} + + bool ComputeOriginalValues(const CorrType *in_corr, DataTypeT *out_data, + int size, int num_components, + const PointIndex *entry_to_point_id_map) override; + PredictionSchemeMethod GetPredictionMethod() const override { + return PREDICTION_DIFFERENCE; + } + bool IsInitialized() const override { return true; } +}; + +template +bool PredictionSchemeDeltaDecoder::ComputeOriginalValues( + const CorrType *in_corr, DataTypeT *out_data, int size, int num_components, + const PointIndex *) { + this->transform().Initialize(num_components); + // Decode the original value for the first element. + std::unique_ptr zero_vals(new DataTypeT[num_components]()); + this->transform().ComputeOriginalValue(zero_vals.get(), in_corr, out_data); + + // Decode data from the front using D(i) = D(i) + D(i - 1). + for (int i = num_components; i < size; i += num_components) { + this->transform().ComputeOriginalValue(out_data + i - num_components, + in_corr + i, out_data + i); + } + return true; +} + +} // namespace draco + +#endif // DRACO_COMPRESSION_ATTRIBUTES_PREDICTION_SCHEMES_PREDICTION_SCHEME_DELTA_DECODER_H_ diff --git a/src/draco/compression/attributes/prediction_schemes/prediction_scheme_delta_encoder.h b/src/draco/compression/attributes/prediction_schemes/prediction_scheme_delta_encoder.h new file mode 100644 index 00000000..914de9c9 --- /dev/null +++ b/src/draco/compression/attributes/prediction_schemes/prediction_scheme_delta_encoder.h @@ -0,0 +1,69 @@ +// Copyright 2016 The Draco Authors. +// +// Licensed under the Apache License, Version 2.0 (the "License"); +// you may not use this file except in compliance with the License. +// You may obtain a copy of the License at +// +// http://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an "AS IS" BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// See the License for the specific language governing permissions and +// limitations under the License. +// +#ifndef DRACO_COMPRESSION_ATTRIBUTES_PREDICTION_SCHEMES_PREDICTION_SCHEME_DELTA_ENCODER_H_ +#define DRACO_COMPRESSION_ATTRIBUTES_PREDICTION_SCHEMES_PREDICTION_SCHEME_DELTA_ENCODER_H_ + +#include "draco/compression/attributes/prediction_schemes/prediction_scheme_encoder.h" + +namespace draco { + +// Basic prediction scheme based on computing backward differences between +// stored attribute values (also known as delta-coding). Usually works better +// than the reference point prediction scheme, because nearby values are often +// encoded next to each other. +template +class PredictionSchemeDeltaEncoder + : public PredictionSchemeEncoder { + public: + using CorrType = + typename PredictionSchemeEncoder::CorrType; + // Initialized the prediction scheme. + explicit PredictionSchemeDeltaEncoder(const PointAttribute *attribute) + : PredictionSchemeEncoder(attribute) {} + PredictionSchemeDeltaEncoder(const PointAttribute *attribute, + const TransformT &transform) + : PredictionSchemeEncoder(attribute, transform) {} + + bool ComputeCorrectionValues( + const DataTypeT *in_data, CorrType *out_corr, int size, + int num_components, const PointIndex *entry_to_point_id_map) override; + PredictionSchemeMethod GetPredictionMethod() const override { + return PREDICTION_DIFFERENCE; + } + bool IsInitialized() const override { return true; } +}; + +template +bool PredictionSchemeDeltaEncoder< + DataTypeT, TransformT>::ComputeCorrectionValues(const DataTypeT *in_data, + CorrType *out_corr, + int size, + int num_components, + const PointIndex *) { + this->transform().Initialize(in_data, size, num_components); + // Encode data from the back using D(i) = D(i) - D(i - 1). + for (int i = size - num_components; i > 0; i -= num_components) { + this->transform().ComputeCorrection( + in_data + i, in_data + i - num_components, out_corr + i); + } + // Encode correction for the first element. + std::unique_ptr zero_vals(new DataTypeT[num_components]()); + this->transform().ComputeCorrection(in_data, zero_vals.get(), out_corr); + return true; +} + +} // namespace draco + +#endif // DRACO_COMPRESSION_ATTRIBUTES_PREDICTION_SCHEMES_PREDICTION_SCHEME_DELTA_ENCODER_H_ diff --git a/src/draco/compression/attributes/prediction_schemes/prediction_scheme_encoder.h b/src/draco/compression/attributes/prediction_schemes/prediction_scheme_encoder.h new file mode 100644 index 00000000..548a54d4 --- /dev/null +++ b/src/draco/compression/attributes/prediction_schemes/prediction_scheme_encoder.h @@ -0,0 +1,89 @@ +// Copyright 2016 The Draco Authors. +// +// Licensed under the Apache License, Version 2.0 (the "License"); +// you may not use this file except in compliance with the License. +// You may obtain a copy of the License at +// +// http://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an "AS IS" BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// See the License for the specific language governing permissions and +// limitations under the License. +// +#ifndef DRACO_COMPRESSION_ATTRIBUTES_PREDICTION_SCHEMES_PREDICTION_SCHEME_ENCODER_H_ +#define DRACO_COMPRESSION_ATTRIBUTES_PREDICTION_SCHEMES_PREDICTION_SCHEME_ENCODER_H_ + +#include + +#include "draco/compression/attributes/prediction_schemes/prediction_scheme_encoder_interface.h" +#include "draco/compression/attributes/prediction_schemes/prediction_scheme_encoding_transform.h" + +// Prediction schemes can be used during encoding and decoding of vertex +// attributes to predict attribute values based on the previously +// encoded/decoded data. The differences between the original and predicted +// attribute values are used to compute correction values that can be usually +// encoded with fewer bits compared to the original data. +namespace draco { + +// Abstract base class for typed prediction schemes. It provides basic access +// to the encoded attribute and to the supplied prediction transform. +template > +class PredictionSchemeEncoder : public PredictionSchemeTypedEncoderInterface< + DataTypeT, typename TransformT::CorrType> { + public: + typedef DataTypeT DataType; + typedef TransformT Transform; + // Correction type needs to be defined in the prediction transform class. + typedef typename Transform::CorrType CorrType; + explicit PredictionSchemeEncoder(const PointAttribute *attribute) + : PredictionSchemeEncoder(attribute, Transform()) {} + PredictionSchemeEncoder(const PointAttribute *attribute, + const Transform &transform) + : attribute_(attribute), transform_(transform) {} + + bool EncodePredictionData(EncoderBuffer *buffer) override { + if (!transform_.EncodeTransformData(buffer)) + return false; + return true; + } + + const PointAttribute *GetAttribute() const override { return attribute(); } + + // Returns the number of parent attributes that are needed for the prediction. + int GetNumParentAttributes() const override { return 0; } + + // Returns the type of each of the parent attribute. + GeometryAttribute::Type GetParentAttributeType(int /* i */) const override { + return GeometryAttribute::INVALID; + } + + // Sets the required parent attribute. + bool SetParentAttribute(const PointAttribute * /* att */) override { + return false; + } + + bool AreCorrectionsPositive() override { + return transform_.AreCorrectionsPositive(); + } + + PredictionSchemeTransformType GetTransformType() const override { + return transform_.GetType(); + } + + protected: + inline const PointAttribute *attribute() const { return attribute_; } + inline const Transform &transform() const { return transform_; } + inline Transform &transform() { return transform_; } + + private: + const PointAttribute *attribute_; + Transform transform_; +}; + +} // namespace draco + +#endif // DRACO_COMPRESSION_ATTRIBUTES_PREDICTION_SCHEMES_PREDICTION_SCHEME_ENCODER_H_ diff --git a/compression/attributes/prediction_schemes/prediction_scheme_encoder_factory.cc b/src/draco/compression/attributes/prediction_schemes/prediction_scheme_encoder_factory.cc similarity index 78% rename from compression/attributes/prediction_schemes/prediction_scheme_encoder_factory.cc rename to src/draco/compression/attributes/prediction_schemes/prediction_scheme_encoder_factory.cc index c3e1f938..3144bdb9 100644 --- a/compression/attributes/prediction_schemes/prediction_scheme_encoder_factory.cc +++ b/src/draco/compression/attributes/prediction_schemes/prediction_scheme_encoder_factory.cc @@ -12,15 +12,15 @@ // See the License for the specific language governing permissions and // limitations under the License. // -#include "compression/attributes/prediction_schemes/prediction_scheme_encoder_factory.h" +#include "draco/compression/attributes/prediction_schemes/prediction_scheme_encoder_factory.h" namespace draco { PredictionSchemeMethod SelectPredictionMethod( int att_id, const PointCloudEncoder *encoder) { if (encoder->options()->GetSpeed() >= 10) { - return PREDICTION_NONE; // No prediction when the fastest speed is - // requested. + // Selected fastest, though still doing some compression. + return PREDICTION_DIFFERENCE; } if (encoder->GetGeometryType() == TRIANGULAR_MESH) { // Use speed setting to select the best encoding method. @@ -28,9 +28,16 @@ PredictionSchemeMethod SelectPredictionMethod( if (att->attribute_type() == GeometryAttribute::TEX_COORD) { if (encoder->options()->GetSpeed() < 4) { // Use texture coordinate prediction for speeds 0, 1, 2, 3. - return MESH_PREDICTION_TEX_COORDS; + return MESH_PREDICTION_TEX_COORDS_PORTABLE; } } + if (att->attribute_type() == GeometryAttribute::NORMAL) { + if (encoder->options()->GetSpeed() < 4) { + // Use geometric normal prediction for speeds 0, 1, 2, 3. + return MESH_PREDICTION_GEOMETRIC_NORMAL; + } + return PREDICTION_DIFFERENCE; // default + } // Handle other attribute types. if (encoder->options()->GetSpeed() >= 8) { return PREDICTION_DIFFERENCE; @@ -38,7 +45,7 @@ PredictionSchemeMethod SelectPredictionMethod( if (encoder->options()->GetSpeed() >= 2 || encoder->point_cloud()->num_points() < 40) { // Parallelogram prediction is used for speeds 2 - 7 or when the overhead - // of using constrained multi parallelogram would be too high. + // of using constrained multi-parallelogram would be too high. return MESH_PREDICTION_PARALLELOGRAM; } // Multi-parallelogram is used for speeds 0, 1. diff --git a/src/draco/compression/attributes/prediction_schemes/prediction_scheme_encoder_factory.h b/src/draco/compression/attributes/prediction_schemes/prediction_scheme_encoder_factory.h new file mode 100644 index 00000000..ea12b292 --- /dev/null +++ b/src/draco/compression/attributes/prediction_schemes/prediction_scheme_encoder_factory.h @@ -0,0 +1,132 @@ +// Copyright 2016 The Draco Authors. +// +// Licensed under the Apache License, Version 2.0 (the "License"); +// you may not use this file except in compliance with the License. +// You may obtain a copy of the License at +// +// http://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an "AS IS" BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// See the License for the specific language governing permissions and +// limitations under the License. +// +// Functions for creating prediction schemes for encoders using the provided +// prediction method id. + +#ifndef DRACO_COMPRESSION_ATTRIBUTES_PREDICTION_SCHEMES_PREDICTION_SCHEME_ENCODER_FACTORY_H_ +#define DRACO_COMPRESSION_ATTRIBUTES_PREDICTION_SCHEMES_PREDICTION_SCHEME_ENCODER_FACTORY_H_ + +#include "draco/compression/attributes/prediction_schemes/mesh_prediction_scheme_constrained_multi_parallelogram_encoder.h" +#include "draco/compression/attributes/prediction_schemes/mesh_prediction_scheme_geometric_normal_encoder.h" +#include "draco/compression/attributes/prediction_schemes/mesh_prediction_scheme_multi_parallelogram_encoder.h" +#include "draco/compression/attributes/prediction_schemes/mesh_prediction_scheme_parallelogram_encoder.h" +#include "draco/compression/attributes/prediction_schemes/mesh_prediction_scheme_tex_coords_encoder.h" +#include "draco/compression/attributes/prediction_schemes/mesh_prediction_scheme_tex_coords_portable_encoder.h" +#include "draco/compression/attributes/prediction_schemes/prediction_scheme_delta_encoder.h" +#include "draco/compression/attributes/prediction_schemes/prediction_scheme_encoder.h" +#include "draco/compression/attributes/prediction_schemes/prediction_scheme_factory.h" +#include "draco/compression/mesh/mesh_encoder.h" + +namespace draco { + +// Selects a prediction method based on the input geometry type and based on the +// encoder options. +PredictionSchemeMethod SelectPredictionMethod(int att_id, + const PointCloudEncoder *encoder); + +// Factory class for creating mesh prediction schemes. +template +struct MeshPredictionSchemeEncoderFactory { + template + std::unique_ptr> operator()( + PredictionSchemeMethod method, const PointAttribute *attribute, + const TransformT &transform, const MeshDataT &mesh_data, + uint16_t bitstream_version) { + if (method == MESH_PREDICTION_PARALLELOGRAM) { + return std::unique_ptr>( + new MeshPredictionSchemeParallelogramEncoder( + attribute, transform, mesh_data)); + } else if (method == MESH_PREDICTION_MULTI_PARALLELOGRAM) { + return std::unique_ptr>( + new MeshPredictionSchemeMultiParallelogramEncoder< + DataTypeT, TransformT, MeshDataT>(attribute, transform, + mesh_data)); + } else if (method == MESH_PREDICTION_CONSTRAINED_MULTI_PARALLELOGRAM) { + return std::unique_ptr>( + new MeshPredictionSchemeConstrainedMultiParallelogramEncoder< + DataTypeT, TransformT, MeshDataT>(attribute, transform, + mesh_data)); + } else if (method == MESH_PREDICTION_TEX_COORDS) { + return std::unique_ptr>( + new MeshPredictionSchemeTexCoordsEncoder( + attribute, transform, mesh_data)); + } else if (method == MESH_PREDICTION_TEX_COORDS_PORTABLE) { + return std::unique_ptr>( + new MeshPredictionSchemeTexCoordsPortableEncoder< + DataTypeT, TransformT, MeshDataT>(attribute, transform, + mesh_data)); + } else if (method == MESH_PREDICTION_GEOMETRIC_NORMAL) { + return std::unique_ptr>( + new MeshPredictionSchemeGeometricNormalEncoder( + attribute, transform, mesh_data)); + } + return nullptr; + } +}; + +// Creates a prediction scheme for a given encoder and given prediction method. +// The prediction schemes are automatically initialized with encoder specific +// data if needed. +template +std::unique_ptr> +CreatePredictionSchemeForEncoder(PredictionSchemeMethod method, int att_id, + const PointCloudEncoder *encoder, + const TransformT &transform) { + const PointAttribute *const att = encoder->point_cloud()->attribute(att_id); + if (method == PREDICTION_UNDEFINED) { + method = SelectPredictionMethod(att_id, encoder); + } + if (method == PREDICTION_NONE) + return nullptr; // No prediction is used. + if (encoder->GetGeometryType() == TRIANGULAR_MESH) { + // Cast the encoder to mesh encoder. This is not necessarily safe if there + // is some other encoder decides to use TRIANGULAR_MESH as the return type, + // but unfortunately there is not nice work around for this without using + // RTTI (double dispatch and similar concepts will not work because of the + // template nature of the prediction schemes). + const MeshEncoder *const mesh_encoder = + static_cast(encoder); + auto ret = CreateMeshPredictionScheme< + MeshEncoder, PredictionSchemeEncoder, + MeshPredictionSchemeEncoderFactory>( + mesh_encoder, method, att_id, transform, kDracoBitstreamVersion); + if (ret) + return ret; + // Otherwise try to create another prediction scheme. + } + // Create delta encoder. + return std::unique_ptr>( + new PredictionSchemeDeltaEncoder(att, transform)); +} + +// Create a prediction scheme using a default transform constructor. +template +std::unique_ptr> +CreatePredictionSchemeForEncoder(PredictionSchemeMethod method, int att_id, + const PointCloudEncoder *encoder) { + return CreatePredictionSchemeForEncoder( + method, att_id, encoder, TransformT()); +} + +// Returns the preferred prediction scheme based on the encoder options. +PredictionSchemeMethod GetPredictionMethodFromOptions( + int att_id, const EncoderOptions &options); + +} // namespace draco + +#endif // DRACO_COMPRESSION_ATTRIBUTES_PREDICTION_SCHEMES_PREDICTION_SCHEME_ENCODER_FACTORY_H_ diff --git a/src/draco/compression/attributes/prediction_schemes/prediction_scheme_encoder_interface.h b/src/draco/compression/attributes/prediction_schemes/prediction_scheme_encoder_interface.h new file mode 100644 index 00000000..ab64bce7 --- /dev/null +++ b/src/draco/compression/attributes/prediction_schemes/prediction_scheme_encoder_interface.h @@ -0,0 +1,55 @@ +// Copyright 2016 The Draco Authors. +// +// Licensed under the Apache License, Version 2.0 (the "License"); +// you may not use this file except in compliance with the License. +// You may obtain a copy of the License at +// +// http://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an "AS IS" BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// See the License for the specific language governing permissions and +// limitations under the License. +// +#ifndef DRACO_COMPRESSION_ATTRIBUTES_PREDICTION_SCHEMES_PREDICTION_SCHEME_ENCODING_INTERFACE_H_ +#define DRACO_COMPRESSION_ATTRIBUTES_PREDICTION_SCHEMES_PREDICTION_SCHEME_ENCODING_INTERFACE_H_ + +#include "draco/compression/attributes/prediction_schemes/prediction_scheme_interface.h" +#include "draco/core/encoder_buffer.h" + +// Prediction schemes can be used during encoding and decoding of attributes +// to predict attribute values based on the previously encoded/decoded data. +// See prediction_scheme.h for more details. +namespace draco { + +// Abstract interface for all prediction schemes used during attribute encoding. +class PredictionSchemeEncoderInterface : public PredictionSchemeInterface { + public: + // Method that can be used to encode any prediction scheme specific data + // into the output buffer. + virtual bool EncodePredictionData(EncoderBuffer *buffer) = 0; +}; + +// A specialized version of the prediction scheme interface for specific +// input and output data types. +// |entry_to_point_id_map| is the mapping between value entries to point ids +// of the associated point cloud, where one entry is defined as |num_components| +// values of the |in_data|. +// DataTypeT is the data type of input and predicted values. +// CorrTypeT is the data type used for storing corrected values. +template +class PredictionSchemeTypedEncoderInterface + : public PredictionSchemeEncoderInterface { + public: + // Applies the prediction scheme when encoding the attribute. + // |in_data| contains value entries to be encoded. + // |out_corr| is an output array containing the to be encoded corrections. + virtual bool ComputeCorrectionValues( + const DataTypeT *in_data, CorrTypeT *out_corr, int size, + int num_components, const PointIndex *entry_to_point_id_map) = 0; +}; + +} // namespace draco + +#endif // DRACO_COMPRESSION_ATTRIBUTES_PREDICTION_SCHEMES_PREDICTION_SCHEME_ENCODING_INTERFACE_H_ diff --git a/compression/attributes/prediction_schemes/prediction_scheme_transform.h b/src/draco/compression/attributes/prediction_schemes/prediction_scheme_encoding_transform.h similarity index 59% rename from compression/attributes/prediction_schemes/prediction_scheme_transform.h rename to src/draco/compression/attributes/prediction_schemes/prediction_scheme_encoding_transform.h index b9920876..69105889 100644 --- a/compression/attributes/prediction_schemes/prediction_scheme_transform.h +++ b/src/draco/compression/attributes/prediction_schemes/prediction_scheme_encoding_transform.h @@ -12,26 +12,24 @@ // See the License for the specific language governing permissions and // limitations under the License. // -#ifndef DRACO_COMPRESSION_ATTRIBUTES_PREDICTION_SCHEMES_PREDICTION_SCHEME_TRANSFORM_H_ -#define DRACO_COMPRESSION_ATTRIBUTES_PREDICTION_SCHEMES_PREDICTION_SCHEME_TRANSFORM_H_ +#ifndef DRACO_COMPRESSION_ATTRIBUTES_PREDICTION_SCHEMES_PREDICTION_SCHEME_ENCODING_TRANSFORM_H_ +#define DRACO_COMPRESSION_ATTRIBUTES_PREDICTION_SCHEMES_PREDICTION_SCHEME_ENCODING_TRANSFORM_H_ -#include "compression/config/compression_shared.h" -#include "core/decoder_buffer.h" -#include "core/encoder_buffer.h" +#include "draco/compression/config/compression_shared.h" +#include "draco/core/encoder_buffer.h" namespace draco { -// PredictionSchemeTransform is used to transform predicted values into -// correction values and vice versa. -// DataTypeT is the data type of predicted values. +// PredictionSchemeEncodingTransform is used to transform predicted values into +// correction values. // CorrTypeT is the data type used for storing corrected values. It allows // transforms to store corrections into a different type or format compared to // the predicted data. template -class PredictionSchemeTransform { +class PredictionSchemeEncodingTransform { public: typedef CorrTypeT CorrType; - PredictionSchemeTransform() : num_components_(0) {} + PredictionSchemeEncodingTransform() : num_components_(0) {} PredictionSchemeTransformType GetType() const { return PREDICTION_TRANSFORM_DELTA; @@ -40,11 +38,8 @@ class PredictionSchemeTransform { // Performs any custom initialization of the transform for the encoder. // |size| = total number of values in |orig_data| (i.e., number of entries * // number of components). - void InitializeEncoding(const DataTypeT * /* orig_data */, int /* size */, - int num_components) { - num_components_ = num_components; - } - void InitializeDecoding(int num_components) { + void Initialize(const DataTypeT * /* orig_data */, int /* size */, + int num_components) { num_components_ = num_components; } @@ -55,35 +50,18 @@ class PredictionSchemeTransform { // std::minus. inline void ComputeCorrection(const DataTypeT *original_vals, const DataTypeT *predicted_vals, - CorrTypeT *out_corr_vals, int val_id) { - static_assert(std::is_same::value, - "For the default prediction transform, correction and input " - "data must be of the same type."); - for (int i = 0; i < num_components_; ++i) { - out_corr_vals[val_id + i] = original_vals[i] - predicted_vals[i]; - } - } - - // Computes the original value from the input predicted value and the decoded - // corrections. The default implementation is equal to std:plus. - inline void ComputeOriginalValue(const DataTypeT *predicted_vals, - const CorrTypeT *corr_vals, - DataTypeT *out_original_vals, - int val_id) const { + CorrTypeT *out_corr_vals) { static_assert(std::is_same::value, "For the default prediction transform, correction and input " "data must be of the same type."); for (int i = 0; i < num_components_; ++i) { - out_original_vals[i] = predicted_vals[i] + corr_vals[val_id + i]; + out_corr_vals[i] = original_vals[i] - predicted_vals[i]; } } // Encode any transform specific data. bool EncodeTransformData(EncoderBuffer * /* buffer */) { return true; } - // Decodes any transform specific data. Called before Initialize() method. - bool DecodeTransformData(DecoderBuffer * /* buffer */) { return true; } - // Should return true if all corrected values are guaranteed to be positive. bool AreCorrectionsPositive() const { return false; } @@ -96,4 +74,4 @@ class PredictionSchemeTransform { } // namespace draco -#endif // DRACO_COMPRESSION_ATTRIBUTES_PREDICTION_SCHEMES_PREDICTION_SCHEME_TRANSFORM_H_ +#endif // DRACO_COMPRESSION_ATTRIBUTES_PREDICTION_SCHEMES_PREDICTION_SCHEME_ENCODING_TRANSFORM_H_ diff --git a/src/draco/compression/attributes/prediction_schemes/prediction_scheme_factory.h b/src/draco/compression/attributes/prediction_schemes/prediction_scheme_factory.h new file mode 100644 index 00000000..6483c5ca --- /dev/null +++ b/src/draco/compression/attributes/prediction_schemes/prediction_scheme_factory.h @@ -0,0 +1,83 @@ +// Copyright 2016 The Draco Authors. +// +// Licensed under the Apache License, Version 2.0 (the "License"); +// you may not use this file except in compliance with the License. +// You may obtain a copy of the License at +// +// http://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an "AS IS" BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// See the License for the specific language governing permissions and +// limitations under the License. +// +// Functions for creating prediction schemes from a provided prediction method +// name. The functions in this file can create only basic prediction schemes +// that don't require any encoder or decoder specific data. To create more +// sophisticated prediction schemes, use functions from either +// prediction_scheme_encoder_factory.h or, +// prediction_scheme_decoder_factory.h. + +#ifndef DRACO_COMPRESSION_ATTRIBUTES_PREDICTION_SCHEMES_PREDICTION_SCHEME_FACTORY_H_ +#define DRACO_COMPRESSION_ATTRIBUTES_PREDICTION_SCHEMES_PREDICTION_SCHEME_FACTORY_H_ + +#include "draco/compression/attributes/mesh_attribute_indices_encoding_data.h" +#include "draco/compression/attributes/prediction_schemes/mesh_prediction_scheme_data.h" +#include "draco/compression/config/compression_shared.h" +#include "draco/mesh/mesh_attribute_corner_table.h" + +namespace draco { + +template +std::unique_ptr CreateMeshPredictionScheme( + const EncodingDataSourceT *source, PredictionSchemeMethod method, + int att_id, const typename PredictionSchemeT::Transform &transform, + uint16_t bitstream_version) { + const PointAttribute *const att = source->point_cloud()->attribute(att_id); + if (source->GetGeometryType() == TRIANGULAR_MESH && + (method == MESH_PREDICTION_PARALLELOGRAM || + method == MESH_PREDICTION_MULTI_PARALLELOGRAM || + method == MESH_PREDICTION_CONSTRAINED_MULTI_PARALLELOGRAM || + method == MESH_PREDICTION_TEX_COORDS_PORTABLE || + method == MESH_PREDICTION_GEOMETRIC_NORMAL || + method == MESH_PREDICTION_TEX_COORDS)) { + const CornerTable *const ct = source->GetCornerTable(); + const MeshAttributeIndicesEncodingData *const encoding_data = + source->GetAttributeEncodingData(att_id); + if (ct == nullptr || encoding_data == nullptr) { + // No connectivity data found. + return nullptr; + } + // Connectivity data exists. + const MeshAttributeCornerTable *const att_ct = + source->GetAttributeCornerTable(att_id); + if (att_ct != nullptr) { + typedef MeshPredictionSchemeData MeshData; + MeshData md; + md.Set(source->mesh(), att_ct, + &encoding_data->encoded_attribute_value_index_to_corner_map, + &encoding_data->vertex_to_encoded_attribute_value_index_map); + MeshPredictionSchemeFactoryT factory; + auto ret = factory(method, att, transform, md, bitstream_version); + if (ret) + return ret; + } else { + typedef MeshPredictionSchemeData MeshData; + MeshData md; + md.Set(source->mesh(), ct, + &encoding_data->encoded_attribute_value_index_to_corner_map, + &encoding_data->vertex_to_encoded_attribute_value_index_map); + MeshPredictionSchemeFactoryT factory; + auto ret = factory(method, att, transform, md, bitstream_version); + if (ret) + return ret; + } + } + return nullptr; +} + +} // namespace draco + +#endif // DRACO_COMPRESSION_ATTRIBUTES_PREDICTION_SCHEMES_PREDICTION_SCHEME_FACTORY_H_ diff --git a/compression/attributes/prediction_schemes/prediction_scheme_interface.h b/src/draco/compression/attributes/prediction_schemes/prediction_scheme_interface.h similarity index 58% rename from compression/attributes/prediction_schemes/prediction_scheme_interface.h rename to src/draco/compression/attributes/prediction_schemes/prediction_scheme_interface.h index 522c29a5..c9b37069 100644 --- a/compression/attributes/prediction_schemes/prediction_scheme_interface.h +++ b/src/draco/compression/attributes/prediction_schemes/prediction_scheme_interface.h @@ -15,10 +15,8 @@ #ifndef DRACO_COMPRESSION_ATTRIBUTES_PREDICTION_SCHEMES_PREDICTION_SCHEME_INTERFACE_H_ #define DRACO_COMPRESSION_ATTRIBUTES_PREDICTION_SCHEMES_PREDICTION_SCHEME_INTERFACE_H_ -#include "compression/config/compression_shared.h" -#include "core/decoder_buffer.h" -#include "core/encoder_buffer.h" -#include "point_cloud/point_attribute.h" +#include "draco/attributes/point_attribute.h" +#include "draco/compression/config/compression_shared.h" // Prediction schemes can be used during encoding and decoding of attributes // to predict attribute values based on the previously encoded/decoded data. @@ -49,14 +47,6 @@ class PredictionSchemeInterface { // prediction scheme. virtual bool SetParentAttribute(const PointAttribute *att) = 0; - // Method that can be used to encode any prediction scheme specific data - // into the output buffer. - virtual bool EncodePredictionData(EncoderBuffer *buffer) = 0; - - // Method that can be used to decode any prediction scheme specific data - // from the input buffer. - virtual bool DecodePredictionData(DecoderBuffer *buffer) = 0; - // Method should return true if the prediction scheme guarantees that all // correction values are always positive (or at least non-negative). virtual bool AreCorrectionsPositive() = 0; @@ -65,29 +55,6 @@ class PredictionSchemeInterface { virtual PredictionSchemeTransformType GetTransformType() const = 0; }; -// A specialized version of the prediction scheme interface for specific -// input and output data types. -// |entry_to_point_id_map| is the mapping between value entries to point ids -// of the associated point cloud, where one entry is defined as |num_components| -// values of the |in_data|. -// DataTypeT is the data type of input and predicted values. -// CorrTypeT is the data type used for storing corrected values. -template -class PredictionSchemeTypedInterface : public PredictionSchemeInterface { - public: - // Applies the prediction scheme when encoding the attribute. - // |in_data| contains value entries to be encoded. - // |out_corr| is an output array containing encoded corrections. - virtual bool Encode(const DataTypeT *in_data, CorrTypeT *out_corr, int size, - int num_components, - const PointIndex *entry_to_point_id_map) = 0; - - // Reverts changes made by the prediction scheme during encoding. - virtual bool Decode(const CorrTypeT *in_corr, DataTypeT *out_data, int size, - int num_components, - const PointIndex *entry_to_point_id_map) = 0; -}; - } // namespace draco #endif // DRACO_COMPRESSION_ATTRIBUTES_PREDICTION_SCHEMES_PREDICTION_SCHEME_INTERFACE_H_ diff --git a/src/draco/compression/attributes/prediction_schemes/prediction_scheme_normal_octahedron_canonicalized_decoding_transform.h b/src/draco/compression/attributes/prediction_schemes/prediction_scheme_normal_octahedron_canonicalized_decoding_transform.h new file mode 100644 index 00000000..97244332 --- /dev/null +++ b/src/draco/compression/attributes/prediction_schemes/prediction_scheme_normal_octahedron_canonicalized_decoding_transform.h @@ -0,0 +1,112 @@ +// Copyright 2016 The Draco Authors. +// +// Licensed under the Apache License, Version 2.0 (the "License"); +// you may not use this file except in compliance with the License. +// You may obtain a copy of the License at +// +// http://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an "AS IS" BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// See the License for the specific language governing permissions and +// limitations under the License. +// +#ifndef DRACO_COMPRESSION_ATTRIBUTES_PREDICTION_SCHEMES_PREDICTION_SCHEME_NORMAL_OCTAHEDRON_CANONICALIZED_DECODING_TRANSFORM_H_ +#define DRACO_COMPRESSION_ATTRIBUTES_PREDICTION_SCHEMES_PREDICTION_SCHEME_NORMAL_OCTAHEDRON_CANONICALIZED_DECODING_TRANSFORM_H_ + +#include + +#include "draco/compression/attributes/normal_compression_utils.h" +#include "draco/compression/attributes/prediction_schemes/prediction_scheme_normal_octahedron_canonicalized_transform_base.h" +#include "draco/core/decoder_buffer.h" +#include "draco/core/macros.h" +#include "draco/core/vector_d.h" + +namespace draco { + +// Class for converting correction values transformed by the canonicalized +// normal octahedron transform back to the original values. See the +// corresponding encoder for more details. +template +class PredictionSchemeNormalOctahedronCanonicalizedDecodingTransform + : public PredictionSchemeNormalOctahedronCanonicalizedTransformBase< + DataTypeT> { + public: + typedef VectorD Point2; + typedef DataTypeT CorrType; + typedef DataTypeT DataType; + + PredictionSchemeNormalOctahedronCanonicalizedDecodingTransform() {} + + // Dummy to fulfill concept. + void Initialize(int num_components) {} + + bool DecodeTransformData(DecoderBuffer *buffer) { + DataTypeT max_quantized_value, center_value; + if (!buffer->Decode(&max_quantized_value)) + return false; + if (!buffer->Decode(¢er_value)) + return false; + this->set_max_quantized_value(max_quantized_value); + (void)center_value; + // Account for reading wrong values, e.g., due to fuzzing. + if (this->quantization_bits() < 2) + return false; + if (this->quantization_bits() > 30) + return false; + return true; + } + + inline void ComputeOriginalValue(const DataType *pred_vals, + const CorrType *corr_vals, + DataType *out_orig_vals) const { + DCHECK_LE(pred_vals[0], 2 * this->center_value()); + DCHECK_LE(pred_vals[1], 2 * this->center_value()); + DCHECK_LE(corr_vals[0], 2 * this->center_value()); + DCHECK_LE(corr_vals[1], 2 * this->center_value()); + + DCHECK_LE(0, pred_vals[0]); + DCHECK_LE(0, pred_vals[1]); + DCHECK_LE(0, corr_vals[0]); + DCHECK_LE(0, corr_vals[1]); + + const Point2 pred = Point2(pred_vals[0], pred_vals[1]); + const Point2 corr = Point2(corr_vals[0], corr_vals[1]); + const Point2 orig = ComputeOriginalValue(pred, corr); + + out_orig_vals[0] = orig[0]; + out_orig_vals[1] = orig[1]; + } + + private: + Point2 ComputeOriginalValue(Point2 pred, Point2 corr) const { + const Point2 t(this->center_value(), this->center_value()); + pred = pred - t; + const bool pred_is_in_diamond = this->IsInDiamond(pred[0], pred[1]); + if (!pred_is_in_diamond) { + this->InvertDiamond(&pred[0], &pred[1]); + } + const bool pred_is_in_bottom_left = this->IsInBottomLeft(pred); + const int32_t rotation_count = this->GetRotationCount(pred); + if (!pred_is_in_bottom_left) { + pred = this->RotatePoint(pred, rotation_count); + } + Point2 orig = pred + corr; + orig[0] = this->ModMax(orig[0]); + orig[1] = this->ModMax(orig[1]); + if (!pred_is_in_bottom_left) { + const int32_t reverse_rotation_count = (4 - rotation_count) % 4; + orig = this->RotatePoint(orig, reverse_rotation_count); + } + if (!pred_is_in_diamond) { + this->InvertDiamond(&orig[0], &orig[1]); + } + orig = orig + t; + return orig; + } +}; + +} // namespace draco + +#endif // DRACO_COMPRESSION_ATTRIBUTES_PREDICTION_SCHEMES_PREDICTION_SCHEME_NORMAL_OCTAHEDRON_CANONICALIZED_DECODING_TRANSFORM_H_ diff --git a/src/draco/compression/attributes/prediction_schemes/prediction_scheme_normal_octahedron_canonicalized_encoding_transform.h b/src/draco/compression/attributes/prediction_schemes/prediction_scheme_normal_octahedron_canonicalized_encoding_transform.h new file mode 100644 index 00000000..04a5414b --- /dev/null +++ b/src/draco/compression/attributes/prediction_schemes/prediction_scheme_normal_octahedron_canonicalized_encoding_transform.h @@ -0,0 +1,116 @@ +// Copyright 2016 The Draco Authors. +// +// Licensed under the Apache License, Version 2.0 (the "License"); +// you may not use this file except in compliance with the License. +// You may obtain a copy of the License at +// +// http://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an "AS IS" BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// See the License for the specific language governing permissions and +// limitations under the License. +// +#ifndef DRACO_COMPRESSION_ATTRIBUTES_PREDICTION_SCHEMES_PREDICTION_SCHEME_NORMAL_OCTAHEDRON_CANONICALIZED_ENCODING_TRANSFORM_H_ +#define DRACO_COMPRESSION_ATTRIBUTES_PREDICTION_SCHEMES_PREDICTION_SCHEME_NORMAL_OCTAHEDRON_CANONICALIZED_ENCODING_TRANSFORM_H_ + +#include + +#include "draco/compression/attributes/normal_compression_utils.h" +#include "draco/compression/attributes/prediction_schemes/prediction_scheme_normal_octahedron_canonicalized_transform_base.h" +#include "draco/core/encoder_buffer.h" +#include "draco/core/macros.h" +#include "draco/core/vector_d.h" + +namespace draco { + +// The transform works on octahedral coordinates for normals. The square is +// subdivided into four inner triangles (diamond) and four outer triangles. The +// inner triangles are associated with the upper part of the octahedron and the +// outer triangles are associated with the lower part. +// Given a prediction value P and the actual value Q that should be encoded, +// this transform first checks if P is outside the diamond. If so, the outer +// triangles are flipped towards the inside and vice versa. Then it checks if p +// is in the bottom left quadrant. If it is not, it rotates p and q accordingly. +// The actual correction value is then based on the mapped and rotated P and Q +// values. The inversion tends to result in shorter correction vectors and the +// rotation makes it so that all long correction values are positive, reducing +// the possible value range of the correction values and increasing the +// occurrences of positive large correction values, which helps the entropy +// encoder. This is possible since P is also known by the decoder, see also +// ComputeCorrection and ComputeOriginalValue functions. +// Note that the tile is not periodic, which implies that the outer edges can +// not be identified, which requires us to use an odd number of values on each +// axis. +// DataTypeT is expected to be some integral type. +// +template +class PredictionSchemeNormalOctahedronCanonicalizedEncodingTransform + : public PredictionSchemeNormalOctahedronCanonicalizedTransformBase< + DataTypeT> { + public: + typedef PredictionSchemeNormalOctahedronCanonicalizedTransformBase + Base; + typedef VectorD Point2; + typedef DataTypeT CorrType; + typedef DataTypeT DataType; + + // We expect the mod value to be of the form 2^b-1. + PredictionSchemeNormalOctahedronCanonicalizedEncodingTransform( + DataType max_quantized_value) + : Base(max_quantized_value) {} + + // Dummy function to fulfill concept. + void Initialize(const DataTypeT *orig_data, int size, int num_components) {} + + bool EncodeTransformData(EncoderBuffer *buffer) { + buffer->Encode(this->max_quantized_value()); + buffer->Encode(this->center_value()); + return true; + } + + inline void ComputeCorrection(const DataType *orig_vals, + const DataType *pred_vals, + CorrType *out_corr_vals) const { + DCHECK_LE(pred_vals[0], this->center_value() * 2); + DCHECK_LE(pred_vals[1], this->center_value() * 2); + DCHECK_LE(orig_vals[0], this->center_value() * 2); + DCHECK_LE(orig_vals[1], this->center_value() * 2); + DCHECK_LE(0, pred_vals[0]); + DCHECK_LE(0, pred_vals[1]); + DCHECK_LE(0, orig_vals[0]); + DCHECK_LE(0, orig_vals[1]); + + const Point2 orig = Point2(orig_vals[0], orig_vals[1]); + const Point2 pred = Point2(pred_vals[0], pred_vals[1]); + const Point2 corr = ComputeCorrection(orig, pred); + + out_corr_vals[0] = corr[0]; + out_corr_vals[1] = corr[1]; + } + + private: + Point2 ComputeCorrection(Point2 orig, Point2 pred) const { + const Point2 t(this->center_value(), this->center_value()); + orig = orig - t; + pred = pred - t; + if (!this->IsInDiamond(pred[0], pred[1])) { + this->InvertDiamond(&orig[0], &orig[1]); + this->InvertDiamond(&pred[0], &pred[1]); + } + if (!this->IsInBottomLeft(pred)) { + const int32_t rotation_count = this->GetRotationCount(pred); + orig = this->RotatePoint(orig, rotation_count); + pred = this->RotatePoint(pred, rotation_count); + } + Point2 corr = orig - pred; + corr[0] = this->MakePositive(corr[0]); + corr[1] = this->MakePositive(corr[1]); + return corr; + } +}; + +} // namespace draco + +#endif // DRACO_COMPRESSION_ATTRIBUTES_PREDICTION_SCHEMES_PREDICTION_SCHEME_NORMAL_OCTAHEDRON_CANONICALIZED_ENCODING_TRANSFORM_H_ diff --git a/src/draco/compression/attributes/prediction_schemes/prediction_scheme_normal_octahedron_canonicalized_transform_base.h b/src/draco/compression/attributes/prediction_schemes/prediction_scheme_normal_octahedron_canonicalized_transform_base.h new file mode 100644 index 00000000..b279a767 --- /dev/null +++ b/src/draco/compression/attributes/prediction_schemes/prediction_scheme_normal_octahedron_canonicalized_transform_base.h @@ -0,0 +1,100 @@ +// Copyright 2016 The Draco Authors. +// +// Licensed under the Apache License, Version 2.0 (the "License"); +// you may not use this file except in compliance with the License. +// You may obtain a copy of the License at +// +// http://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an "AS IS" BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// See the License for the specific language governing permissions and +// limitations under the License. +// +#ifndef DRACO_COMPRESSION_ATTRIBUTES_PREDICTION_SCHEMES_PREDICTION_SCHEME_NORMAL_OCTAHEDRON_CANONICALIZED_TRANSFORM_BASE_H_ +#define DRACO_COMPRESSION_ATTRIBUTES_PREDICTION_SCHEMES_PREDICTION_SCHEME_NORMAL_OCTAHEDRON_CANONICALIZED_TRANSFORM_BASE_H_ + +#include + +#include "draco/compression/attributes/normal_compression_utils.h" +#include "draco/compression/attributes/prediction_schemes/prediction_scheme_normal_octahedron_transform_base.h" +#include "draco/compression/config/compression_shared.h" +#include "draco/core/bit_utils.h" +#include "draco/core/macros.h" +#include "draco/core/vector_d.h" + +namespace draco { + +// Base class containing shared functionality used by both encoding and decoding +// canonicalized normal octahedron prediction scheme transforms. See the +// encoding transform for more details about the method. +template +class PredictionSchemeNormalOctahedronCanonicalizedTransformBase + : public PredictionSchemeNormalOctahedronTransformBase { + public: + typedef PredictionSchemeNormalOctahedronTransformBase Base; + typedef VectorD Point2; + typedef DataTypeT DataType; + + PredictionSchemeNormalOctahedronCanonicalizedTransformBase() : Base() {} + // We expect the mod value to be of the form 2^b-1. + PredictionSchemeNormalOctahedronCanonicalizedTransformBase(DataType mod_value) + : Base(mod_value) {} + + PredictionSchemeTransformType GetType() const override { + return PREDICTION_TRANSFORM_NORMAL_OCTAHEDRON_CANONICALIZED; + } + + int32_t GetRotationCount(Point2 pred) const { + const DataType sign_x = pred[0]; + const DataType sign_y = pred[1]; + + int32_t rotation_count = 0; + if (sign_x == 0) { + if (sign_y == 0) { + rotation_count = 0; + } else if (sign_y > 0) { + rotation_count = 3; + } else { + rotation_count = 1; + } + } else if (sign_x > 0) { + if (sign_y >= 0) { + rotation_count = 2; + } else { + rotation_count = 1; + } + } else { + if (sign_y <= 0) { + rotation_count = 0; + } else { + rotation_count = 3; + } + } + return rotation_count; + } + + Point2 RotatePoint(Point2 p, int32_t rotation_count) const { + switch (rotation_count) { + case 1: + return Point2(p[1], -p[0]); + case 2: + return Point2(-p[0], -p[1]); + case 3: + return Point2(-p[1], p[0]); + default: + return p; + } + } + + bool IsInBottomLeft(const Point2 &p) const { + if (p[0] == 0 && p[1] == 0) + return true; + return (p[0] < 0 && p[1] <= 0); + } +}; + +} // namespace draco + +#endif // DRACO_COMPRESSION_ATTRIBUTES_PREDICTION_SCHEMES_PREDICTION_SCHEME_NORMAL_OCTAHEDRON_CANONICALIZED_TRANSFORM_BASE_H_ diff --git a/compression/attributes/prediction_schemes/prediction_scheme_normal_octahedron_canonicalized_transform_test.cc b/src/draco/compression/attributes/prediction_schemes/prediction_scheme_normal_octahedron_canonicalized_transform_test.cc similarity index 94% rename from compression/attributes/prediction_schemes/prediction_scheme_normal_octahedron_canonicalized_transform_test.cc rename to src/draco/compression/attributes/prediction_schemes/prediction_scheme_normal_octahedron_canonicalized_transform_test.cc index 76194bcd..8c8932f7 100644 --- a/compression/attributes/prediction_schemes/prediction_scheme_normal_octahedron_canonicalized_transform_test.cc +++ b/src/draco/compression/attributes/prediction_schemes/prediction_scheme_normal_octahedron_canonicalized_transform_test.cc @@ -12,15 +12,16 @@ // See the License for the specific language governing permissions and // limitations under the License. // -#include "compression/attributes/prediction_schemes/prediction_scheme_normal_octahedron_canonicalized_transform.h" -#include "core/draco_test_base.h" +#include "draco/compression/attributes/prediction_schemes/prediction_scheme_normal_octahedron_canonicalized_encoding_transform.h" +#include "draco/core/draco_test_base.h" namespace { class PredictionSchemeNormalOctahedronCanonicalizedTransformTest : public ::testing::Test { protected: - typedef draco::PredictionSchemeNormalOctahedronCanonicalizedTransform + typedef draco::PredictionSchemeNormalOctahedronCanonicalizedEncodingTransform< + int32_t> Transform; typedef Transform::Point2 Point2; @@ -31,7 +32,7 @@ class PredictionSchemeNormalOctahedronCanonicalizedTransformTest const int32_t o[2] = {ox + 7, oy + 7}; const int32_t p[2] = {px + 7, py + 7}; int32_t corr[2] = {500, 500}; - transform.ComputeCorrection(o, p, corr, 0); + transform.ComputeCorrection(o, p, corr); ASSERT_EQ(corr[0], (cx + 15) % 15); ASSERT_EQ(corr[1], (cy + 15) % 15); } @@ -181,4 +182,11 @@ TEST_F(PredictionSchemeNormalOctahedronCanonicalizedTransformTest, TestComputeCorrection(transform, -1, -2, 0, -2, 0, 1); } +TEST_F(PredictionSchemeNormalOctahedronCanonicalizedTransformTest, Interface) { + const Transform transform(15); + ASSERT_EQ(transform.max_quantized_value(), 15); + ASSERT_EQ(transform.center_value(), 7); + ASSERT_EQ(transform.quantization_bits(), 4); +} + } // namespace diff --git a/src/draco/compression/attributes/prediction_schemes/prediction_scheme_normal_octahedron_decoding_transform.h b/src/draco/compression/attributes/prediction_schemes/prediction_scheme_normal_octahedron_decoding_transform.h new file mode 100644 index 00000000..3e4f4dd8 --- /dev/null +++ b/src/draco/compression/attributes/prediction_schemes/prediction_scheme_normal_octahedron_decoding_transform.h @@ -0,0 +1,97 @@ +// Copyright 2016 The Draco Authors. +// +// Licensed under the Apache License, Version 2.0 (the "License"); +// you may not use this file except in compliance with the License. +// You may obtain a copy of the License at +// +// http://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an "AS IS" BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// See the License for the specific language governing permissions and +// limitations under the License. +// +#ifndef DRACO_COMPRESSION_ATTRIBUTES_PREDICTION_SCHEMES_PREDICTION_SCHEME_NORMAL_OCTAHEDRON_DECODING_TRANSFORM_H_ +#define DRACO_COMPRESSION_ATTRIBUTES_PREDICTION_SCHEMES_PREDICTION_SCHEME_NORMAL_OCTAHEDRON_DECODING_TRANSFORM_H_ + +#include + +#include "draco/compression/attributes/normal_compression_utils.h" +#include "draco/compression/attributes/prediction_schemes/prediction_scheme_normal_octahedron_transform_base.h" +#include "draco/core/decoder_buffer.h" +#include "draco/core/macros.h" +#include "draco/core/vector_d.h" + +namespace draco { + +// Class for converting correction values transformed by the octahedral normal +// transform back to the original values. See the corresponding encoder for more +// details. +template +class PredictionSchemeNormalOctahedronDecodingTransform + : public PredictionSchemeNormalOctahedronTransformBase { + public: + typedef VectorD Point2; + typedef DataTypeT CorrType; + typedef DataTypeT DataType; + + PredictionSchemeNormalOctahedronDecodingTransform() {} + + // Dummy function to fulfill concept. + void Initialize(int num_components) {} + bool DecodeTransformData(DecoderBuffer *buffer) { + DataTypeT max_quantized_value, center_value; + if (!buffer->Decode(&max_quantized_value)) + return false; + if (!buffer->Decode(¢er_value)) + return false; + this->set_max_quantized_value(max_quantized_value); + (void)center_value; + return true; + } + + inline void ComputeOriginalValue(const DataType *pred_vals, + const CorrType *corr_vals, + DataType *out_orig_vals) const { + DCHECK_LE(pred_vals[0], 2 * this->center_value()); + DCHECK_LE(pred_vals[1], 2 * this->center_value()); + DCHECK_LE(corr_vals[0], 2 * this->center_value()); + DCHECK_LE(corr_vals[1], 2 * this->center_value()); + + DCHECK_LE(0, pred_vals[0]); + DCHECK_LE(0, pred_vals[1]); + DCHECK_LE(0, corr_vals[0]); + DCHECK_LE(0, corr_vals[1]); + + const Point2 pred = Point2(pred_vals[0], pred_vals[1]); + const Point2 corr = Point2(corr_vals[0], corr_vals[1]); + const Point2 orig = ComputeOriginalValue(pred, corr); + + out_orig_vals[0] = orig[0]; + out_orig_vals[1] = orig[1]; + } + + private: + Point2 ComputeOriginalValue(Point2 pred, const Point2 &corr) const { + const Point2 t(this->center_value(), this->center_value()); + pred = pred - t; + + const bool pred_is_in_diamond = this->IsInDiamond(pred[0], pred[1]); + if (!pred_is_in_diamond) { + this->InvertDiamond(&pred[0], &pred[1]); + } + Point2 orig = pred + corr; + orig[0] = this->ModMax(orig[0]); + orig[1] = this->ModMax(orig[1]); + if (!pred_is_in_diamond) { + this->InvertDiamond(&orig[0], &orig[1]); + } + orig = orig + t; + return orig; + } +}; + +} // namespace draco + +#endif // DRACO_COMPRESSION_ATTRIBUTES_PREDICTION_SCHEMES_PREDICTION_SCHEME_NORMAL_OCTAHEDRON_DECODING_TRANSFORM_H_ diff --git a/src/draco/compression/attributes/prediction_schemes/prediction_scheme_normal_octahedron_encoding_transform.h b/src/draco/compression/attributes/prediction_schemes/prediction_scheme_normal_octahedron_encoding_transform.h new file mode 100644 index 00000000..11fa26c0 --- /dev/null +++ b/src/draco/compression/attributes/prediction_schemes/prediction_scheme_normal_octahedron_encoding_transform.h @@ -0,0 +1,106 @@ +// Copyright 2016 The Draco Authors. +// +// Licensed under the Apache License, Version 2.0 (the "License"); +// you may not use this file except in compliance with the License. +// You may obtain a copy of the License at +// +// http://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an "AS IS" BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// See the License for the specific language governing permissions and +// limitations under the License. +// +#ifndef DRACO_COMPRESSION_ATTRIBUTES_PREDICTION_SCHEMES_PREDICTION_SCHEME_NORMAL_OCTAHEDRON_ENCODING_TRANSFORM_H_ +#define DRACO_COMPRESSION_ATTRIBUTES_PREDICTION_SCHEMES_PREDICTION_SCHEME_NORMAL_OCTAHEDRON_ENCODING_TRANSFORM_H_ + +#include + +#include "draco/compression/attributes/normal_compression_utils.h" +#include "draco/compression/attributes/prediction_schemes/prediction_scheme_normal_octahedron_transform_base.h" +#include "draco/core/encoder_buffer.h" +#include "draco/core/macros.h" +#include "draco/core/vector_d.h" + +namespace draco { + +// The transform works on octahedral coordinates for normals. The square is +// subdivided into four inner triangles (diamond) and four outer triangles. The +// inner triangles are associated with the upper part of the octahedron and the +// outer triangles are associated with the lower part. +// Given a prediction value P and the actual value Q that should be encoded, +// this transform first checks if P is outside the diamond. If so, the outer +// triangles are flipped towards the inside and vice versa. The actual +// correction value is then based on the mapped P and Q values. This tends to +// result in shorter correction vectors. +// This is possible since the P value is also known by the decoder, see also +// ComputeCorrection and ComputeOriginalValue functions. +// Note that the tile is not periodic, which implies that the outer edges can +// not be identified, which requires us to use an odd number of values on each +// axis. +// DataTypeT is expected to be some integral type. +// +template +class PredictionSchemeNormalOctahedronEncodingTransform + : public PredictionSchemeNormalOctahedronTransformBase { + public: + typedef PredictionSchemeNormalOctahedronTransformBase Base; + typedef VectorD Point2; + typedef DataTypeT CorrType; + typedef DataTypeT DataType; + + // We expect the mod value to be of the form 2^b-1. + PredictionSchemeNormalOctahedronEncodingTransform( + DataType max_quantized_value) + : Base(max_quantized_value) {} + + void Initialize(const DataTypeT *orig_data, int size, int num_components) {} + + bool EncodeTransformData(EncoderBuffer *buffer) { + buffer->Encode(this->max_quantized_value()); + buffer->Encode(this->center_value()); + return true; + } + + inline void ComputeCorrection(const DataType *orig_vals, + const DataType *pred_vals, + CorrType *out_corr_vals) const { + DCHECK_LE(pred_vals[0], this->center_value() * 2); + DCHECK_LE(pred_vals[1], this->center_value() * 2); + DCHECK_LE(orig_vals[0], this->center_value() * 2); + DCHECK_LE(orig_vals[1], this->center_value() * 2); + DCHECK_LE(0, pred_vals[0]); + DCHECK_LE(0, pred_vals[1]); + DCHECK_LE(0, orig_vals[0]); + DCHECK_LE(0, orig_vals[1]); + + const Point2 orig = Point2(orig_vals[0], orig_vals[1]); + const Point2 pred = Point2(pred_vals[0], pred_vals[1]); + const Point2 corr = ComputeCorrection(orig, pred); + + out_corr_vals[0] = corr[0]; + out_corr_vals[1] = corr[1]; + } + + private: + Point2 ComputeCorrection(Point2 orig, Point2 pred) const { + const Point2 t(this->center_value(), this->center_value()); + orig = orig - t; + pred = pred - t; + + if (!this->IsInDiamond(pred[0], pred[1])) { + this->InvertDiamond(&orig[0], &orig[1]); + this->InvertDiamond(&pred[0], &pred[1]); + } + + Point2 corr = orig - pred; + corr[0] = this->MakePositive(corr[0]); + corr[1] = this->MakePositive(corr[1]); + return corr; + } +}; + +} // namespace draco + +#endif // DRACO_COMPRESSION_ATTRIBUTES_PREDICTION_SCHEMES_PREDICTION_SCHEME_NORMAL_OCTAHEDRON_ENCODING_TRANSFORM_H_ diff --git a/src/draco/compression/attributes/prediction_schemes/prediction_scheme_normal_octahedron_transform_base.h b/src/draco/compression/attributes/prediction_schemes/prediction_scheme_normal_octahedron_transform_base.h new file mode 100644 index 00000000..b695e34a --- /dev/null +++ b/src/draco/compression/attributes/prediction_schemes/prediction_scheme_normal_octahedron_transform_base.h @@ -0,0 +1,89 @@ +// Copyright 2016 The Draco Authors. +// +// Licensed under the Apache License, Version 2.0 (the "License"); +// you may not use this file except in compliance with the License. +// You may obtain a copy of the License at +// +// http://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an "AS IS" BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// See the License for the specific language governing permissions and +// limitations under the License. +// +#ifndef DRACO_COMPRESSION_ATTRIBUTES_PREDICTION_SCHEMES_PREDICTION_SCHEME_NORMAL_OCTAHEDRON_TRANSFORM_BASE_H_ +#define DRACO_COMPRESSION_ATTRIBUTES_PREDICTION_SCHEMES_PREDICTION_SCHEME_NORMAL_OCTAHEDRON_TRANSFORM_BASE_H_ + +#include + +#include "draco/compression/attributes/normal_compression_utils.h" +#include "draco/compression/config/compression_shared.h" +#include "draco/core/bit_utils.h" +#include "draco/core/macros.h" +#include "draco/core/vector_d.h" + +namespace draco { + +// Base class containing shared functionality used by both encoding and decoding +// octahedral normal prediction scheme transforms. See the encoding transform +// for more details about the method. +template +class PredictionSchemeNormalOctahedronTransformBase { + public: + typedef VectorD Point2; + typedef DataTypeT DataType; + + PredictionSchemeNormalOctahedronTransformBase() {} + // We expect the mod value to be of the form 2^b-1. + PredictionSchemeNormalOctahedronTransformBase(DataType max_quantized_value) { + this->set_max_quantized_value(max_quantized_value); + } + + virtual ~PredictionSchemeNormalOctahedronTransformBase() {} + + virtual PredictionSchemeTransformType GetType() const { + return PREDICTION_TRANSFORM_NORMAL_OCTAHEDRON; + } + + // We can return true as we keep correction values positive. + bool AreCorrectionsPositive() const { return true; } + + inline DataTypeT max_quantized_value() const { + return octahedron_tool_box_.max_quantized_value(); + } + inline DataTypeT center_value() const { + return octahedron_tool_box_.center_value(); + } + inline int32_t quantization_bits() const { + return octahedron_tool_box_.quantization_bits(); + } + + protected: + inline void set_max_quantized_value(DataTypeT max_quantized_value) { + DCHECK_EQ(max_quantized_value % 2, 1); + int q = bits::MostSignificantBit(max_quantized_value) + 1; + octahedron_tool_box_.SetQuantizationBits(q); + } + + bool IsInDiamond(DataTypeT s, DataTypeT t) const { + return octahedron_tool_box_.IsInDiamond(s, t); + } + void InvertDiamond(DataTypeT *s, DataTypeT *t) const { + return octahedron_tool_box_.InvertDiamond(s, t); + } + + int32_t ModMax(int32_t x) const { return octahedron_tool_box_.ModMax(x); } + + // For correction values. + int32_t MakePositive(int32_t x) const { + return octahedron_tool_box_.MakePositive(x); + } + + private: + OctahedronToolBox octahedron_tool_box_; +}; + +} // namespace draco + +#endif // DRACO_COMPRESSION_ATTRIBUTES_PREDICTION_SCHEMES_PREDICTION_SCHEME_NORMAL_OCTAHEDRON_TRANSFORM_BASE_H_ diff --git a/compression/attributes/prediction_schemes/prediction_scheme_normal_octahedron_transform_test.cc b/src/draco/compression/attributes/prediction_schemes/prediction_scheme_normal_octahedron_transform_test.cc similarity index 81% rename from compression/attributes/prediction_schemes/prediction_scheme_normal_octahedron_transform_test.cc rename to src/draco/compression/attributes/prediction_schemes/prediction_scheme_normal_octahedron_transform_test.cc index 1466a762..1001b19f 100644 --- a/compression/attributes/prediction_schemes/prediction_scheme_normal_octahedron_transform_test.cc +++ b/src/draco/compression/attributes/prediction_schemes/prediction_scheme_normal_octahedron_transform_test.cc @@ -12,14 +12,15 @@ // See the License for the specific language governing permissions and // limitations under the License. // -#include "compression/attributes/prediction_schemes/prediction_scheme_normal_octahedron_transform.h" -#include "core/draco_test_base.h" +#include "draco/compression/attributes/prediction_schemes/prediction_scheme_normal_octahedron_encoding_transform.h" +#include "draco/core/draco_test_base.h" namespace { class PredictionSchemeNormalOctahedronTransformTest : public ::testing::Test { protected: - typedef draco::PredictionSchemeNormalOctahedronTransform Transform; + typedef draco::PredictionSchemeNormalOctahedronEncodingTransform + Transform; typedef Transform::Point2 Point2; void TestComputeCorrection(const Transform &transform, const int32_t &ox, @@ -29,7 +30,7 @@ class PredictionSchemeNormalOctahedronTransformTest : public ::testing::Test { const int32_t o[2] = {ox + 7, oy + 7}; const int32_t p[2] = {px + 7, py + 7}; int32_t corr[2] = {500, 500}; - transform.ComputeCorrection(o, p, corr, 0); + transform.ComputeCorrection(o, p, corr); ASSERT_EQ(corr[0], (cx + 15) % 15); ASSERT_EQ(corr[1], (cy + 15) % 15); } @@ -60,4 +61,11 @@ TEST_F(PredictionSchemeNormalOctahedronTransformTest, ComputeCorrections) { TestComputeCorrection(transform, 7, -6, 4, 4, -2, -3); } +TEST_F(PredictionSchemeNormalOctahedronTransformTest, Interface) { + const Transform transform(15); + ASSERT_EQ(transform.max_quantized_value(), 15); + ASSERT_EQ(transform.center_value(), 7); + ASSERT_EQ(transform.quantization_bits(), 4); +} + } // namespace diff --git a/src/draco/compression/attributes/prediction_schemes/prediction_scheme_wrap_decoding_transform.h b/src/draco/compression/attributes/prediction_schemes/prediction_scheme_wrap_decoding_transform.h new file mode 100644 index 00000000..087e8772 --- /dev/null +++ b/src/draco/compression/attributes/prediction_schemes/prediction_scheme_wrap_decoding_transform.h @@ -0,0 +1,64 @@ +// Copyright 2016 The Draco Authors. +// +// Licensed under the Apache License, Version 2.0 (the "License"); +// you may not use this file except in compliance with the License. +// You may obtain a copy of the License at +// +// http://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an "AS IS" BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// See the License for the specific language governing permissions and +// limitations under the License. +// +#ifndef DRACO_COMPRESSION_ATTRIBUTES_PREDICTION_SCHEMES_PREDICTION_SCHEME_WRAP_DECODING_TRANSFORM_H_ +#define DRACO_COMPRESSION_ATTRIBUTES_PREDICTION_SCHEMES_PREDICTION_SCHEME_WRAP_DECODING_TRANSFORM_H_ + +#include "draco/compression/attributes/prediction_schemes/prediction_scheme_wrap_transform_base.h" +#include "draco/core/decoder_buffer.h" + +namespace draco { + +// PredictionSchemeWrapDecodingTransform unwraps values encoded with the +// PredictionSchemeWrapEncodingTransform. +// See prediction_scheme_wrap_transform_base.h for more details about the +// method. +template +class PredictionSchemeWrapDecodingTransform + : public PredictionSchemeWrapTransformBase { + public: + typedef CorrTypeT CorrType; + PredictionSchemeWrapDecodingTransform() {} + + // Computes the original value from the input predicted value and the decoded + // corrections. Values out of the bounds of the input values are unwrapped. + inline void ComputeOriginalValue(const DataTypeT *predicted_vals, + const CorrTypeT *corr_vals, + DataTypeT *out_original_vals) const { + predicted_vals = this->ClampPredictedValue(predicted_vals); + for (int i = 0; i < this->num_components(); ++i) { + out_original_vals[i] = predicted_vals[i] + corr_vals[i]; + if (out_original_vals[i] > this->max_value()) + out_original_vals[i] -= this->max_dif(); + else if (out_original_vals[i] < this->min_value()) + out_original_vals[i] += this->max_dif(); + } + } + + bool DecodeTransformData(DecoderBuffer *buffer) { + DataTypeT min_value, max_value; + if (!buffer->Decode(&min_value)) + return false; + if (!buffer->Decode(&max_value)) + return false; + this->set_min_value(min_value); + this->set_max_value(max_value); + this->InitCorrectionBounds(); + return true; + } +}; + +} // namespace draco + +#endif // DRACO_COMPRESSION_ATTRIBUTES_PREDICTION_SCHEMES_PREDICTION_SCHEME_WRAP_DECODING_TRANSFORM_H_ diff --git a/src/draco/compression/attributes/prediction_schemes/prediction_scheme_wrap_encoding_transform.h b/src/draco/compression/attributes/prediction_schemes/prediction_scheme_wrap_encoding_transform.h new file mode 100644 index 00000000..779263ba --- /dev/null +++ b/src/draco/compression/attributes/prediction_schemes/prediction_scheme_wrap_encoding_transform.h @@ -0,0 +1,78 @@ +// Copyright 2016 The Draco Authors. +// +// Licensed under the Apache License, Version 2.0 (the "License"); +// you may not use this file except in compliance with the License. +// You may obtain a copy of the License at +// +// http://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an "AS IS" BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// See the License for the specific language governing permissions and +// limitations under the License. +// +#ifndef DRACO_COMPRESSION_ATTRIBUTES_PREDICTION_SCHEMES_PREDICTION_SCHEME_WRAP_ENCODING_TRANSFORM_H_ +#define DRACO_COMPRESSION_ATTRIBUTES_PREDICTION_SCHEMES_PREDICTION_SCHEME_WRAP_ENCODING_TRANSFORM_H_ + +#include "draco/compression/attributes/prediction_schemes/prediction_scheme_wrap_transform_base.h" +#include "draco/core/encoder_buffer.h" + +namespace draco { + +// PredictionSchemeWrapEncodingTransform wraps input values using the wrapping +// scheme described in: prediction_scheme_wrap_transform_base.h . +template +class PredictionSchemeWrapEncodingTransform + : public PredictionSchemeWrapTransformBase { + public: + typedef CorrTypeT CorrType; + PredictionSchemeWrapEncodingTransform() {} + + void Initialize(const DataTypeT *orig_data, int size, int num_components) { + PredictionSchemeWrapTransformBase::Initialize(num_components); + // Go over the original values and compute the bounds. + if (size == 0) + return; + DataTypeT min_value = orig_data[0]; + DataTypeT max_value = min_value; + for (int i = 1; i < size; ++i) { + if (orig_data[i] < min_value) + min_value = orig_data[i]; + else if (orig_data[i] > max_value) + max_value = orig_data[i]; + } + this->set_min_value(min_value); + this->set_max_value(max_value); + this->InitCorrectionBounds(); + } + + // Computes the corrections based on the input original value and the + // predicted value. Out of bound correction values are wrapped around the max + // range of input values. + inline void ComputeCorrection(const DataTypeT *original_vals, + const DataTypeT *predicted_vals, + CorrTypeT *out_corr_vals) const { + for (int i = 0; i < this->num_components(); ++i) { + predicted_vals = this->ClampPredictedValue(predicted_vals); + out_corr_vals[i] = original_vals[i] - predicted_vals[i]; + // Wrap around if needed. + DataTypeT &corr_val = out_corr_vals[i]; + if (corr_val < this->min_correction()) + corr_val += this->max_dif(); + else if (corr_val > this->max_correction()) + corr_val -= this->max_dif(); + } + } + + bool EncodeTransformData(EncoderBuffer *buffer) { + // Store the input value range as it is needed by the decoder. + buffer->Encode(this->min_value()); + buffer->Encode(this->max_value()); + return true; + } +}; + +} // namespace draco + +#endif // DRACO_COMPRESSION_ATTRIBUTES_PREDICTION_SCHEMES_PREDICTION_SCHEME_WRAP_ENCODING_TRANSFORM_H_ diff --git a/src/draco/compression/attributes/prediction_schemes/prediction_scheme_wrap_transform_base.h b/src/draco/compression/attributes/prediction_schemes/prediction_scheme_wrap_transform_base.h new file mode 100644 index 00000000..ccb25741 --- /dev/null +++ b/src/draco/compression/attributes/prediction_schemes/prediction_scheme_wrap_transform_base.h @@ -0,0 +1,111 @@ +// Copyright 2016 The Draco Authors. +// +// Licensed under the Apache License, Version 2.0 (the "License"); +// you may not use this file except in compliance with the License. +// You may obtain a copy of the License at +// +// http://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an "AS IS" BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// See the License for the specific language governing permissions and +// limitations under the License. +// +#ifndef DRACO_COMPRESSION_ATTRIBUTES_PREDICTION_SCHEMES_PREDICTION_SCHEME_WRAP_TRANSFORM_BASE_H_ +#define DRACO_COMPRESSION_ATTRIBUTES_PREDICTION_SCHEMES_PREDICTION_SCHEME_WRAP_TRANSFORM_BASE_H_ + +#include + +#include "draco/compression/config/compression_shared.h" +#include "draco/core/macros.h" + +namespace draco { + +// PredictionSchemeWrapTransform uses the min and max bounds of the original +// data to wrap stored correction values around these bounds centered at 0, +// i.e., when the range of the original values O is between and +// N = MAX-MIN, we can then store any correction X = O - P, as: +// X + N, if X < -N / 2 +// X - N, if X > N / 2 +// X otherwise +// To unwrap this value, the decoder then simply checks whether the final +// corrected value F = P + X is out of the bounds of the input values. +// All out of bounds values are unwrapped using +// F + N, if F < MIN +// F - N, if F > MAX +// This wrapping can reduce the number of unique values, which translates to a +// better entropy of the stored values and better compression rates. +template +class PredictionSchemeWrapTransformBase { + public: + PredictionSchemeWrapTransformBase() + : num_components_(0), + min_value_(0), + max_value_(0), + max_dif_(0), + max_correction_(0), + min_correction_(0) {} + + PredictionSchemeTransformType GetType() const { + return PREDICTION_TRANSFORM_WRAP; + } + + void Initialize(int num_components) { + num_components_ = num_components; + clamped_value_.resize(num_components); + } + + bool AreCorrectionsPositive() const { return false; } + + inline const DataTypeT *ClampPredictedValue( + const DataTypeT *predicted_val) const { + for (int i = 0; i < this->num_components(); ++i) { + if (predicted_val[i] > max_value_) + clamped_value_[i] = max_value_; + else if (predicted_val[i] < min_value_) + clamped_value_[i] = min_value_; + else + clamped_value_[i] = predicted_val[i]; + } + return &clamped_value_[0]; + } + + // TODO(hemmer): Consider refactoring to avoid this dummy. + int quantization_bits() const { + DCHECK(false); + return -1; + } + + protected: + void InitCorrectionBounds() { + max_dif_ = 1 + max_value_ - min_value_; + max_correction_ = max_dif_ / 2; + min_correction_ = -max_correction_; + if ((max_dif_ & 1) == 0) + max_correction_ -= 1; + } + + inline int num_components() const { return num_components_; } + inline DataTypeT min_value() const { return min_value_; } + inline void set_min_value(const DataTypeT &v) { min_value_ = v; } + inline DataTypeT max_value() const { return max_value_; } + inline void set_max_value(const DataTypeT &v) { max_value_ = v; } + inline DataTypeT max_dif() const { return max_dif_; } + inline DataTypeT min_correction() const { return min_correction_; } + inline DataTypeT max_correction() const { return max_correction_; } + + private: + int num_components_; + DataTypeT min_value_; + DataTypeT max_value_; + DataTypeT max_dif_; + DataTypeT max_correction_; + DataTypeT min_correction_; + // This is in fact just a tmp variable to avoid reallocation. + mutable std::vector clamped_value_; +}; + +} // namespace draco + +#endif // DRACO_COMPRESSION_ATTRIBUTES_PREDICTION_SCHEMES_PREDICTION_SCHEME_WRAP_TRANSFORM_BASE_H_ diff --git a/compression/attributes/sequential_attribute_decoder.cc b/src/draco/compression/attributes/sequential_attribute_decoder.cc similarity index 63% rename from compression/attributes/sequential_attribute_decoder.cc rename to src/draco/compression/attributes/sequential_attribute_decoder.cc index 59a79d05..1f99af7c 100644 --- a/compression/attributes/sequential_attribute_decoder.cc +++ b/src/draco/compression/attributes/sequential_attribute_decoder.cc @@ -12,7 +12,7 @@ // See the License for the specific language governing permissions and // limitations under the License. // -#include "compression/attributes/sequential_attribute_decoder.h" +#include "draco/compression/attributes/sequential_attribute_decoder.h" namespace draco { @@ -34,7 +34,7 @@ bool SequentialAttributeDecoder::InitializeStandalone( return true; } -bool SequentialAttributeDecoder::Decode( +bool SequentialAttributeDecoder::DecodePortableAttribute( const std::vector &point_ids, DecoderBuffer *in_buffer) { if (!attribute_->Reset(point_ids.size())) return false; @@ -43,6 +43,31 @@ bool SequentialAttributeDecoder::Decode( return true; } +bool SequentialAttributeDecoder::DecodeDataNeededByPortableTransform( + const std::vector &point_ids, DecoderBuffer *in_buffer) { + // Default implementation does not apply any transform. + return true; +} + +bool SequentialAttributeDecoder::TransformAttributeToOriginalFormat( + const std::vector &point_ids) { + // Default implementation does not apply any transform. + return true; +} + +const PointAttribute *SequentialAttributeDecoder::GetPortableAttribute() { + // If needed, copy point to attribute value index mapping from the final + // attribute to the portable attribute. + if (!attribute_->is_mapping_identity() && + portable_attribute_->is_mapping_identity()) { + portable_attribute_->SetExplicitMapping(attribute_->indices_map_size()); + for (PointIndex i(0); i < attribute_->indices_map_size(); ++i) { + portable_attribute_->SetPointMapEntry(i, attribute_->mapped_index(i)); + } + } + return portable_attribute_.get(); +} + bool SequentialAttributeDecoder::InitPredictionScheme( PredictionSchemeInterface *ps) { for (int i = 0; i < ps->GetNumParentAttributes(); ++i) { @@ -50,8 +75,15 @@ bool SequentialAttributeDecoder::InitPredictionScheme( ps->GetParentAttributeType(i)); if (att_id == -1) return false; // Requested attribute does not exist. - if (!ps->SetParentAttribute(decoder_->point_cloud()->attribute(att_id))) - return false; + if (decoder_->bitstream_version() < DRACO_BITSTREAM_VERSION(2, 0)) { + if (!ps->SetParentAttribute(decoder_->point_cloud()->attribute(att_id))) { + return false; + } + } else { + if (!ps->SetParentAttribute(decoder_->GetPortableAttribute(att_id))) { + return false; + } + } } return true; } diff --git a/compression/attributes/sequential_attribute_decoder.h b/src/draco/compression/attributes/sequential_attribute_decoder.h similarity index 60% rename from compression/attributes/sequential_attribute_decoder.h rename to src/draco/compression/attributes/sequential_attribute_decoder.h index 7df89a1b..7a89fbb8 100644 --- a/compression/attributes/sequential_attribute_decoder.h +++ b/src/draco/compression/attributes/sequential_attribute_decoder.h @@ -15,8 +15,8 @@ #ifndef DRACO_COMPRESSION_ATTRIBUTES_SEQUENTIAL_ATTRIBUTE_DECODER_H_ #define DRACO_COMPRESSION_ATTRIBUTES_SEQUENTIAL_ATTRIBUTE_DECODER_H_ -#include "compression/attributes/prediction_schemes/prediction_scheme_interface.h" -#include "compression/point_cloud/point_cloud_decoder.h" +#include "draco/compression/attributes/prediction_schemes/prediction_scheme_interface.h" +#include "draco/compression/point_cloud/point_cloud_decoder.h" namespace draco { @@ -29,14 +29,28 @@ class SequentialAttributeDecoder { virtual bool Initialize(PointCloudDecoder *decoder, int attribute_id); - // Intialization for a specific attribute. This can be used mostly for + // Initialization for a specific attribute. This can be used mostly for // standalone decoding of an attribute without an PointCloudDecoder. virtual bool InitializeStandalone(PointAttribute *attribute); - virtual bool Decode(const std::vector &point_ids, - DecoderBuffer *in_buffer); + // Performs lossless decoding of the portable attribute data. + virtual bool DecodePortableAttribute(const std::vector &point_ids, + DecoderBuffer *in_buffer); + + // Decodes any data needed to revert portable transform of the decoded + // attribute. + virtual bool DecodeDataNeededByPortableTransform( + const std::vector &point_ids, DecoderBuffer *in_buffer); + + // Reverts transformation performed by encoder in + // SequentialAttributeEncoder::TransformAttributeToPortableFormat() method. + virtual bool TransformAttributeToOriginalFormat( + const std::vector &point_ids); + + const PointAttribute *GetPortableAttribute(); const PointAttribute *attribute() const { return attribute_; } + PointAttribute *attribute() { return attribute_; } int attribute_id() const { return attribute_id_; } PointCloudDecoder *decoder() const { return decoder_; } @@ -46,15 +60,24 @@ class SequentialAttributeDecoder { // cannot be used). virtual bool InitPredictionScheme(PredictionSchemeInterface *ps); - // The actual implementation of the attribute decoding. Should be overriden + // The actual implementation of the attribute decoding. Should be overridden // for specialized decoders. virtual bool DecodeValues(const std::vector &point_ids, DecoderBuffer *in_buffer); + void SetPortableAttribute(std::unique_ptr att) { + portable_attribute_ = std::move(att); + } + + PointAttribute *portable_attribute() { return portable_attribute_.get(); } + private: PointCloudDecoder *decoder_; PointAttribute *attribute_; int attribute_id_; + + // Storage for decoded portable attribute (after lossless decoding). + std::unique_ptr portable_attribute_; }; } // namespace draco diff --git a/compression/attributes/sequential_attribute_decoders_controller.cc b/src/draco/compression/attributes/sequential_attribute_decoders_controller.cc similarity index 50% rename from compression/attributes/sequential_attribute_decoders_controller.cc rename to src/draco/compression/attributes/sequential_attribute_decoders_controller.cc index d1dc5cff..e653efa2 100644 --- a/compression/attributes/sequential_attribute_decoders_controller.cc +++ b/src/draco/compression/attributes/sequential_attribute_decoders_controller.cc @@ -12,10 +12,10 @@ // See the License for the specific language governing permissions and // limitations under the License. // -#include "compression/attributes/sequential_attribute_decoders_controller.h" -#include "compression/attributes/sequential_normal_attribute_decoder.h" -#include "compression/attributes/sequential_quantization_attribute_decoder.h" -#include "compression/config/compression_shared.h" +#include "draco/compression/attributes/sequential_attribute_decoders_controller.h" +#include "draco/compression/attributes/sequential_normal_attribute_decoder.h" +#include "draco/compression/attributes/sequential_quantization_attribute_decoder.h" +#include "draco/compression/config/compression_shared.h" namespace draco { @@ -28,8 +28,9 @@ bool SequentialAttributeDecodersController::DecodeAttributesDecoderData( if (!AttributesDecoder::DecodeAttributesDecoderData(buffer)) return false; // Decode unique ids of all sequential encoders and create them. - sequential_decoders_.resize(num_attributes()); - for (int i = 0; i < num_attributes(); ++i) { + const int32_t num_attributes = GetNumAttributes(); + sequential_decoders_.resize(num_attributes); + for (int i = 0; i < num_attributes; ++i) { uint8_t decoder_type; if (!buffer->Decode(&decoder_type)) return false; @@ -37,7 +38,7 @@ bool SequentialAttributeDecodersController::DecodeAttributesDecoderData( sequential_decoders_[i] = CreateSequentialDecoder(decoder_type); if (!sequential_decoders_[i]) return false; - if (!sequential_decoders_[i]->Initialize(decoder(), GetAttributeId(i))) + if (!sequential_decoders_[i]->Initialize(GetDecoder(), GetAttributeId(i))) return false; } return true; @@ -48,14 +49,60 @@ bool SequentialAttributeDecodersController::DecodeAttributes( if (!sequencer_ || !sequencer_->GenerateSequence(&point_ids_)) return false; // Initialize point to attribute value mapping for all decoded attributes. - for (int i = 0; i < num_attributes(); ++i) { + const int32_t num_attributes = GetNumAttributes(); + for (int i = 0; i < num_attributes; ++i) { PointAttribute *const pa = - decoder()->point_cloud()->attribute(GetAttributeId(i)); + GetDecoder()->point_cloud()->attribute(GetAttributeId(i)); if (!sequencer_->UpdatePointToAttributeIndexMapping(pa)) return false; } - for (int i = 0; i < num_attributes(); ++i) { - if (!sequential_decoders_[i]->Decode(point_ids_, buffer)) + return AttributesDecoder::DecodeAttributes(buffer); +} + +bool SequentialAttributeDecodersController::DecodePortableAttributes( + DecoderBuffer *in_buffer) { + const int32_t num_attributes = GetNumAttributes(); + for (int i = 0; i < num_attributes; ++i) { + if (!sequential_decoders_[i]->DecodePortableAttribute(point_ids_, + in_buffer)) + return false; + } + return true; +} + +bool SequentialAttributeDecodersController:: + DecodeDataNeededByPortableTransforms(DecoderBuffer *in_buffer) { + const int32_t num_attributes = GetNumAttributes(); + for (int i = 0; i < num_attributes; ++i) { + if (!sequential_decoders_[i]->DecodeDataNeededByPortableTransform( + point_ids_, in_buffer)) + return false; + } + return true; +} + +bool SequentialAttributeDecodersController:: + TransformAttributesToOriginalFormat() { + const int32_t num_attributes = GetNumAttributes(); + for (int i = 0; i < num_attributes; ++i) { + // Check whether the attribute transform should be skipped. + if (GetDecoder()->options()) { + const PointAttribute *const attribute = + sequential_decoders_[i]->attribute(); + if (GetDecoder()->options()->GetAttributeBool( + attribute->attribute_type(), "skip_attribute_transform", false)) { + // Attribute transform should not be performed. In this case, we replace + // the output geometry attribute with the portable attribute. + // TODO(ostava): We can potentially avoid this copy by introducing a new + // mechanism that would allow to use the final attributes as portable + // attributes for predictors that may need them. + sequential_decoders_[i]->attribute()->CopyFrom( + *sequential_decoders_[i]->GetPortableAttribute()); + return true; + } + } + if (!sequential_decoders_[i]->TransformAttributeToOriginalFormat( + point_ids_)) return false; } return true; diff --git a/compression/attributes/sequential_attribute_decoders_controller.h b/src/draco/compression/attributes/sequential_attribute_decoders_controller.h similarity index 73% rename from compression/attributes/sequential_attribute_decoders_controller.h rename to src/draco/compression/attributes/sequential_attribute_decoders_controller.h index f5e1b45e..14ad029d 100644 --- a/compression/attributes/sequential_attribute_decoders_controller.h +++ b/src/draco/compression/attributes/sequential_attribute_decoders_controller.h @@ -15,9 +15,9 @@ #ifndef DRACO_COMPRESSION_ATTRIBUTES_SEQUENTIAL_ATTRIBUTE_DECODERS_CONTROLLER_H_ #define DRACO_COMPRESSION_ATTRIBUTES_SEQUENTIAL_ATTRIBUTE_DECODERS_CONTROLLER_H_ -#include "compression/attributes/attributes_decoder.h" -#include "compression/attributes/points_sequencer.h" -#include "compression/attributes/sequential_attribute_decoder.h" +#include "draco/compression/attributes/attributes_decoder.h" +#include "draco/compression/attributes/points_sequencer.h" +#include "draco/compression/attributes/sequential_attribute_decoder.h" namespace draco { @@ -34,8 +34,18 @@ class SequentialAttributeDecodersController : public AttributesDecoder { bool DecodeAttributesDecoderData(DecoderBuffer *buffer) override; bool DecodeAttributes(DecoderBuffer *buffer) override; + const PointAttribute *GetPortableAttribute( + int32_t point_attribute_id) override { + const int32_t loc_id = GetLocalIdForPointAttribute(point_attribute_id); + if (loc_id < 0) + return nullptr; + return sequential_decoders_[loc_id]->GetPortableAttribute(); + } protected: + bool DecodePortableAttributes(DecoderBuffer *in_buffer) override; + bool DecodeDataNeededByPortableTransforms(DecoderBuffer *in_buffer) override; + bool TransformAttributesToOriginalFormat() override; virtual std::unique_ptr CreateSequentialDecoder( uint8_t decoder_type); diff --git a/compression/attributes/sequential_attribute_encoder.cc b/src/draco/compression/attributes/sequential_attribute_encoder.cc similarity index 59% rename from compression/attributes/sequential_attribute_encoder.cc rename to src/draco/compression/attributes/sequential_attribute_encoder.cc index 0fa0a300..158f0f43 100644 --- a/compression/attributes/sequential_attribute_encoder.cc +++ b/src/draco/compression/attributes/sequential_attribute_encoder.cc @@ -12,7 +12,7 @@ // See the License for the specific language governing permissions and // limitations under the License. // -#include "compression/attributes/sequential_attribute_encoder.h" +#include "draco/compression/attributes/sequential_attribute_encoder.h" namespace draco { @@ -37,14 +37,23 @@ bool SequentialAttributeEncoder::InitializeStandalone( return true; } -bool SequentialAttributeEncoder::Encode( +bool SequentialAttributeEncoder::TransformAttributeToPortableFormat( + const std::vector &point_ids) { + // Default implementation doesn't transform the input data. + return true; +} + +bool SequentialAttributeEncoder::EncodePortableAttribute( const std::vector &point_ids, EncoderBuffer *out_buffer) { + // Lossless encoding of the input values. if (!EncodeValues(point_ids, out_buffer)) return false; - if (is_parent_encoder_ && IsLossyEncoder()) { - if (!PrepareLossyAttributeData()) - return false; - } + return true; +} + +bool SequentialAttributeEncoder::EncodeDataNeededByPortableTransform( + EncoderBuffer *out_buffer) { + // Default implementation doesn't transform the input data. return true; } @@ -64,32 +73,6 @@ bool SequentialAttributeEncoder::EncodeValues( void SequentialAttributeEncoder::MarkParentAttribute() { is_parent_encoder_ = true; - if (IsLossyEncoder() && encoded_lossy_attribute_data_ == nullptr) { - // Prepare a new attribute that is going to store encoded lossy attribute - // data that can be used by other attribute encoders. The attribute type, - // size and other properties are equivalent to the original attribute, but - // the stored values will be different, representing the data that is - // going to be used by the decoder. - GeometryAttribute va; - va.Init(attribute_->attribute_type(), nullptr, - attribute_->components_count(), attribute_->data_type(), - attribute_->normalized(), attribute_->byte_stride(), - attribute_->byte_offset()); - encoded_lossy_attribute_data_ = - std::unique_ptr(new PointAttribute(va)); - encoded_lossy_attribute_data_->Reset(attribute_->size()); - // Set the correct point to value entry mapping. - if (attribute_->is_mapping_identity()) { - encoded_lossy_attribute_data_->SetIdentityMapping(); - } else { - const int32_t num_points = encoder_->point_cloud()->num_points(); - encoded_lossy_attribute_data_->SetExplicitMapping(num_points); - for (PointIndex i(0); i < num_points; ++i) { - encoded_lossy_attribute_data_->SetPointMapEntry( - i, attribute_->mapped_index(i)); - } - } - } } bool SequentialAttributeEncoder::InitPredictionScheme( @@ -101,15 +84,21 @@ bool SequentialAttributeEncoder::InitPredictionScheme( return false; // Requested attribute does not exist. parent_attributes_.push_back(att_id); encoder_->MarkParentAttribute(att_id); - if (!ps->SetParentAttribute(encoder_->GetLossyAttributeData(att_id))) - return false; } return true; } -bool SequentialAttributeEncoder::PrepareLossyAttributeData() { - DCHECK(false); // Method not implemented for a lossy encoder. - return false; +bool SequentialAttributeEncoder::SetPredictionSchemeParentAttributes( + PredictionSchemeInterface *ps) { + for (int i = 0; i < ps->GetNumParentAttributes(); ++i) { + const int att_id = encoder_->point_cloud()->GetNamedAttributeId( + ps->GetParentAttributeType(i)); + if (att_id == -1) + return false; // Requested attribute does not exist. + if (!ps->SetParentAttribute(encoder_->GetPortableAttribute(att_id))) + return false; + } + return true; } } // namespace draco diff --git a/compression/attributes/sequential_attribute_encoder.h b/src/draco/compression/attributes/sequential_attribute_encoder.h similarity index 65% rename from compression/attributes/sequential_attribute_encoder.h rename to src/draco/compression/attributes/sequential_attribute_encoder.h index 328b9563..325a7cda 100644 --- a/compression/attributes/sequential_attribute_encoder.h +++ b/src/draco/compression/attributes/sequential_attribute_encoder.h @@ -15,8 +15,8 @@ #ifndef DRACO_COMPRESSION_ATTRIBUTES_SEQUENTIAL_ATTRIBUTE_ENCODER_H_ #define DRACO_COMPRESSION_ATTRIBUTES_SEQUENTIAL_ATTRIBUTE_ENCODER_H_ -#include "compression/attributes/prediction_schemes/prediction_scheme_interface.h" -#include "compression/point_cloud/point_cloud_encoder.h" +#include "draco/compression/attributes/prediction_schemes/prediction_scheme_interface.h" +#include "draco/compression/point_cloud/point_cloud_encoder.h" namespace draco { @@ -40,24 +40,30 @@ class SequentialAttributeEncoder { // other places. virtual bool Initialize(PointCloudEncoder *encoder, int attribute_id); - // Intialization for a specific attribute. This can be used mostly for + // Initialization for a specific attribute. This can be used mostly for // standalone encoding of an attribute without an PointCloudEncoder. virtual bool InitializeStandalone(PointAttribute *attribute); - // Encode all attribute values in the order of the provided points. - // The actual implementation of the encoding is done in the EncodeValues() - // method. - bool Encode(const std::vector &point_ids, - EncoderBuffer *out_buffer); + // Transforms attribute data into format that is going to be encoded + // losslessly. The transform itself can be lossy. + virtual bool TransformAttributeToPortableFormat( + const std::vector &point_ids); + + // Performs lossless encoding of the transformed attribute data. + virtual bool EncodePortableAttribute(const std::vector &point_ids, + EncoderBuffer *out_buffer); + + // Encodes any data related to the portable attribute transform. + virtual bool EncodeDataNeededByPortableTransform(EncoderBuffer *out_buffer); virtual bool IsLossyEncoder() const { return false; } int NumParentAttributes() const { return parent_attributes_.size(); } int GetParentAttributeId(int i) const { return parent_attributes_[i]; } - const PointAttribute *GetLossyAttributeData() const { - if (IsLossyEncoder()) - return encoded_lossy_attribute_data_.get(); + const PointAttribute *GetPortableAttribute() const { + if (portable_attribute_ != nullptr) + return portable_attribute_.get(); return attribute(); } @@ -79,28 +85,28 @@ class SequentialAttributeEncoder { // cannot be used). virtual bool InitPredictionScheme(PredictionSchemeInterface *ps); - // Encodes all attribute values in the specified order. Should be overriden + // Sets parent attributes for a given prediction scheme. Must be called + // after all prediction schemes are initialized, but before the prediction + // scheme is used. + virtual bool SetPredictionSchemeParentAttributes( + PredictionSchemeInterface *ps); + + // Encodes all attribute values in the specified order. Should be overridden // for specialized encoders. virtual bool EncodeValues(const std::vector &point_ids, EncoderBuffer *out_buffer); - // Method that can be used by lossy encoders to compute encoded lossy - // attribute data. - // If the return value is true, the caller can call either - // GetLossyAttributeData() or encoded_lossy_attribute_data() to get a new - // attribute that is filled with lossy version of the original data (i.e., - // the same data that is going to be used by the decoder). - virtual bool PrepareLossyAttributeData(); - bool is_parent_encoder() const { return is_parent_encoder_; } - // Returns a mutable attribute that should be filled by derived lossy - // encoders with the lossy version of the attribute data. - // To get a public const version, use the GetLossyAttributeData() method. - PointAttribute *encoded_lossy_attribute_data() { - return encoded_lossy_attribute_data_.get(); + void SetPortableAttribute(std::unique_ptr att) { + portable_attribute_ = std::move(att); } + // Returns a mutable attribute that should be filled by derived encoders with + // the transformed version of the attribute data. To get a public const + // version, use the GetPortableAttribute() method. + PointAttribute *portable_attribute() { return portable_attribute_.get(); } + private: PointCloudEncoder *encoder_; const PointAttribute *attribute_; @@ -113,11 +119,11 @@ class SequentialAttributeEncoder { bool is_parent_encoder_; - // If this encoder is a parent of another encoder, we may need to create - // a new PointAttribute that is going to store attribute values used by - // the child encoder. These values need to correspond to the values that are - // going to be decoded by the attribute decoder. Used only for lossy encoders. - std::unique_ptr encoded_lossy_attribute_data_; + // Attribute that stores transformed data from the source attribute after it + // is processed through the ApplyTransform() method. Attribute data stored + // within this attribute is guaranteed to be encoded losslessly and it can be + // safely used for prediction of other attributes. + std::unique_ptr portable_attribute_; }; } // namespace draco diff --git a/compression/attributes/sequential_attribute_encoders_controller.cc b/src/draco/compression/attributes/sequential_attribute_encoders_controller.cc similarity index 75% rename from compression/attributes/sequential_attribute_encoders_controller.cc rename to src/draco/compression/attributes/sequential_attribute_encoders_controller.cc index b4c2ea77..7f2130bd 100644 --- a/compression/attributes/sequential_attribute_encoders_controller.cc +++ b/src/draco/compression/attributes/sequential_attribute_encoders_controller.cc @@ -12,10 +12,10 @@ // See the License for the specific language governing permissions and // limitations under the License. // -#include "compression/attributes/sequential_attribute_encoders_controller.h" -#include "compression/attributes/sequential_normal_attribute_encoder.h" -#include "compression/attributes/sequential_quantization_attribute_encoder.h" -#include "compression/point_cloud/point_cloud_encoder.h" +#include "draco/compression/attributes/sequential_attribute_encoders_controller.h" +#include "draco/compression/attributes/sequential_normal_attribute_encoder.h" +#include "draco/compression/attributes/sequential_quantization_attribute_encoder.h" +#include "draco/compression/point_cloud/point_cloud_encoder.h" namespace draco { @@ -57,8 +57,34 @@ bool SequentialAttributeEncodersController::EncodeAttributes( EncoderBuffer *buffer) { if (!sequencer_ || !sequencer_->GenerateSequence(&point_ids_)) return false; + return AttributesEncoder::EncodeAttributes(buffer); +} + +bool SequentialAttributeEncodersController:: + TransformAttributesToPortableFormat() { + for (uint32_t i = 0; i < sequential_encoders_.size(); ++i) { + if (!sequential_encoders_[i]->TransformAttributeToPortableFormat( + point_ids_)) + return false; + } + return true; +} + +bool SequentialAttributeEncodersController::EncodePortableAttributes( + EncoderBuffer *out_buffer) { + for (uint32_t i = 0; i < sequential_encoders_.size(); ++i) { + if (!sequential_encoders_[i]->EncodePortableAttribute(point_ids_, + out_buffer)) + return false; + } + return true; +} + +bool SequentialAttributeEncodersController:: + EncodeDataNeededByPortableTransforms(EncoderBuffer *out_buffer) { for (uint32_t i = 0; i < sequential_encoders_.size(); ++i) { - if (!sequential_encoders_[i]->Encode(point_ids_, buffer)) + if (!sequential_encoders_[i]->EncodeDataNeededByPortableTransform( + out_buffer)) return false; } return true; diff --git a/compression/attributes/sequential_attribute_encoders_controller.h b/src/draco/compression/attributes/sequential_attribute_encoders_controller.h similarity index 87% rename from compression/attributes/sequential_attribute_encoders_controller.h rename to src/draco/compression/attributes/sequential_attribute_encoders_controller.h index 6302dcfe..b156dbf3 100644 --- a/compression/attributes/sequential_attribute_encoders_controller.h +++ b/src/draco/compression/attributes/sequential_attribute_encoders_controller.h @@ -15,9 +15,9 @@ #ifndef DRACO_COMPRESSION_ATTRIBUTES_SEQUENTIAL_ATTRIBUTE_ENCODERS_CONTROLLER_H_ #define DRACO_COMPRESSION_ATTRIBUTES_SEQUENTIAL_ATTRIBUTE_ENCODERS_CONTROLLER_H_ -#include "compression/attributes/attributes_encoder.h" -#include "compression/attributes/points_sequencer.h" -#include "compression/attributes/sequential_attribute_encoder.h" +#include "draco/compression/attributes/attributes_encoder.h" +#include "draco/compression/attributes/points_sequencer.h" +#include "draco/compression/attributes/sequential_attribute_encoder.h" namespace draco { @@ -63,15 +63,19 @@ class SequentialAttributeEncodersController : public AttributesEncoder { return true; } - const PointAttribute *GetLossyAttributeData( + const PointAttribute *GetPortableAttribute( int32_t point_attribute_id) override { const int32_t loc_id = GetLocalIdForPointAttribute(point_attribute_id); if (loc_id < 0) return nullptr; - return sequential_encoders_[loc_id]->GetLossyAttributeData(); + return sequential_encoders_[loc_id]->GetPortableAttribute(); } protected: + bool TransformAttributesToPortableFormat() override; + bool EncodePortableAttributes(EncoderBuffer *out_buffer) override; + bool EncodeDataNeededByPortableTransforms(EncoderBuffer *out_buffer) override; + // Creates all sequential encoders (one for each attribute associated with the // encoder). virtual bool CreateSequentialEncoders(); diff --git a/compression/attributes/sequential_integer_attribute_decoder.cc b/src/draco/compression/attributes/sequential_integer_attribute_decoder.cc similarity index 60% rename from compression/attributes/sequential_integer_attribute_decoder.cc rename to src/draco/compression/attributes/sequential_integer_attribute_decoder.cc index 36daa17d..3b0b8110 100644 --- a/compression/attributes/sequential_integer_attribute_decoder.cc +++ b/src/draco/compression/attributes/sequential_integer_attribute_decoder.cc @@ -12,11 +12,11 @@ // See the License for the specific language governing permissions and // limitations under the License. // -#include "compression/attributes/sequential_integer_attribute_decoder.h" +#include "draco/compression/attributes/sequential_integer_attribute_decoder.h" -#include "compression/attributes/prediction_schemes/prediction_scheme_decoder_factory.h" -#include "compression/attributes/prediction_schemes/prediction_scheme_wrap_transform.h" -#include "core/symbol_decoding.h" +#include "draco/compression/attributes/prediction_schemes/prediction_scheme_decoder_factory.h" +#include "draco/compression/attributes/prediction_schemes/prediction_scheme_wrap_decoding_transform.h" +#include "draco/core/symbol_decoding.h" namespace draco { @@ -29,6 +29,14 @@ bool SequentialIntegerAttributeDecoder::Initialize(PointCloudDecoder *decoder, return true; } +bool SequentialIntegerAttributeDecoder::TransformAttributeToOriginalFormat( + const std::vector &point_ids) { + if (decoder() && + decoder()->bitstream_version() < DRACO_BITSTREAM_VERSION(2, 0)) + return true; // Don't revert the transform here for older files. + return StoreValues(point_ids.size()); +} + bool SequentialIntegerAttributeDecoder::DecodeValues( const std::vector &point_ids, DecoderBuffer *in_buffer) { const int32_t num_values = point_ids.size(); @@ -51,20 +59,24 @@ bool SequentialIntegerAttributeDecoder::DecodeValues( if (!DecodeIntegerValues(point_ids, in_buffer)) return false; - if (!StoreValues(num_values)) - return false; + if (decoder() && + decoder()->bitstream_version() < DRACO_BITSTREAM_VERSION(2, 0)) { + // For older files, revert the transform right after we decode the data. + if (!StoreValues(num_values)) + return false; + } return true; } -std::unique_ptr> +std::unique_ptr> SequentialIntegerAttributeDecoder::CreateIntPredictionScheme( PredictionSchemeMethod method, PredictionSchemeTransformType transform_type) { if (transform_type != PREDICTION_TRANSFORM_WRAP) return nullptr; // For now we support only wrap transform. return CreatePredictionSchemeForDecoder< - int32_t, PredictionSchemeWrapTransform>(method, attribute_id(), - decoder()); + int32_t, PredictionSchemeWrapDecodingTransform>( + method, attribute_id(), decoder()); } bool SequentialIntegerAttributeDecoder::DecodeIntegerValues( @@ -72,15 +84,17 @@ bool SequentialIntegerAttributeDecoder::DecodeIntegerValues( const int num_components = GetNumValueComponents(); if (num_components <= 0) return false; - const int32_t num_values = point_ids.size(); - values_.resize(num_values * num_components); + const int32_t num_entries = point_ids.size(); + const int32_t num_values = num_entries * num_components; + PreparePortableAttribute(num_entries, num_components); + int32_t *const portable_attribute_data = GetPortableAttributeData(); uint8_t compressed; if (!in_buffer->Decode(&compressed)) return false; if (compressed > 0) { // Decode compressed values. - if (!DecodeSymbols(num_values * num_components, num_components, in_buffer, - reinterpret_cast(values_.data()))) + if (!DecodeSymbols(num_values, num_components, in_buffer, + reinterpret_cast(portable_attribute_data))) return false; } else { // Decode the integer data directly. @@ -88,22 +102,23 @@ bool SequentialIntegerAttributeDecoder::DecodeIntegerValues( uint8_t num_bytes; if (!in_buffer->Decode(&num_bytes)) return false; - if (num_bytes == sizeof(decltype(values_)::value_type)) { - if (!in_buffer->Decode(values_.data(), sizeof(int32_t) * values_.size())) + if (num_bytes == DataTypeLength(DT_INT32)) { + if (!in_buffer->Decode(portable_attribute_data, + sizeof(int32_t) * num_values)) return false; } else { - for (uint32_t i = 0; i < values_.size(); ++i) { - in_buffer->Decode(&values_[i], num_bytes); + for (uint32_t i = 0; i < num_values; ++i) { + in_buffer->Decode(portable_attribute_data + i, num_bytes); } } } - if (!values_.empty() && (prediction_scheme_ == nullptr || - !prediction_scheme_->AreCorrectionsPositive())) { + if (num_values > 0 && (prediction_scheme_ == nullptr || + !prediction_scheme_->AreCorrectionsPositive())) { // Convert the values back to the original signed format. ConvertSymbolsToSignedInts( - reinterpret_cast(values_.data()), values_.size(), - &values_[0]); + reinterpret_cast(portable_attribute_data), num_values, + portable_attribute_data); } // If the data was encoded with a prediction scheme, we must revert it. @@ -111,10 +126,10 @@ bool SequentialIntegerAttributeDecoder::DecodeIntegerValues( if (!prediction_scheme_->DecodePredictionData(in_buffer)) return false; - if (!values_.empty()) { - if (!prediction_scheme_->Decode(values_.data(), &values_[0], - values_.size(), num_components, - point_ids.data())) { + if (num_values > 0) { + if (!prediction_scheme_->ComputeOriginalValues( + portable_attribute_data, portable_attribute_data, num_values, + num_components, point_ids.data())) { return false; } } @@ -150,16 +165,17 @@ bool SequentialIntegerAttributeDecoder::StoreValues(uint32_t num_values) { template void SequentialIntegerAttributeDecoder::StoreTypedValues(uint32_t num_values) { - const int num_components = attribute()->components_count(); + const int num_components = attribute()->num_components(); const int entry_size = sizeof(AttributeTypeT) * num_components; const std::unique_ptr att_val( new AttributeTypeT[num_components]); + const int32_t *const portable_attribute_data = GetPortableAttributeData(); int val_id = 0; int out_byte_pos = 0; for (uint32_t i = 0; i < num_values; ++i) { for (int c = 0; c < num_components; ++c) { const AttributeTypeT value = - static_cast(values_[val_id++]); + static_cast(portable_attribute_data[val_id++]); att_val[c] = value; } // Store the integer value into the attribute buffer. @@ -168,4 +184,15 @@ void SequentialIntegerAttributeDecoder::StoreTypedValues(uint32_t num_values) { } } +void SequentialIntegerAttributeDecoder::PreparePortableAttribute( + int num_entries, int num_components) { + GeometryAttribute va; + va.Init(attribute()->attribute_type(), nullptr, num_components, DT_INT32, + false, num_components * DataTypeLength(DT_INT32), 0); + std::unique_ptr port_att(new PointAttribute(va)); + port_att->SetIdentityMapping(); + port_att->Reset(num_entries); + SetPortableAttribute(std::move(port_att)); +} + } // namespace draco diff --git a/compression/attributes/sequential_integer_attribute_decoder.h b/src/draco/compression/attributes/sequential_integer_attribute_decoder.h similarity index 73% rename from compression/attributes/sequential_integer_attribute_decoder.h rename to src/draco/compression/attributes/sequential_integer_attribute_decoder.h index 8fc8e670..5c4bbd0f 100644 --- a/compression/attributes/sequential_integer_attribute_decoder.h +++ b/src/draco/compression/attributes/sequential_integer_attribute_decoder.h @@ -15,8 +15,8 @@ #ifndef DRACO_COMPRESSION_ATTRIBUTES_SEQUENTIAL_INTEGER_ATTRIBUTE_DECODER_H_ #define DRACO_COMPRESSION_ATTRIBUTES_SEQUENTIAL_INTEGER_ATTRIBUTE_DECODER_H_ -#include "compression/attributes/prediction_schemes/prediction_scheme.h" -#include "compression/attributes/sequential_attribute_decoder.h" +#include "draco/compression/attributes/prediction_schemes/prediction_scheme_decoder.h" +#include "draco/compression/attributes/sequential_attribute_decoder.h" namespace draco { @@ -26,6 +26,9 @@ class SequentialIntegerAttributeDecoder : public SequentialAttributeDecoder { SequentialIntegerAttributeDecoder(); bool Initialize(PointCloudDecoder *decoder, int attribute_id) override; + bool TransformAttributeToOriginalFormat( + const std::vector &point_ids) override; + protected: bool DecodeValues(const std::vector &point_ids, DecoderBuffer *in_buffer) override; @@ -34,31 +37,34 @@ class SequentialIntegerAttributeDecoder : public SequentialAttributeDecoder { // Returns a prediction scheme that should be used for decoding of the // integer values. - virtual std::unique_ptr> + virtual std::unique_ptr> CreateIntPredictionScheme(PredictionSchemeMethod method, PredictionSchemeTransformType transform_type); // Returns the number of integer attribute components. In general, this // can be different from the number of components of the input attribute. virtual int32_t GetNumValueComponents() const { - return attribute()->components_count(); + return attribute()->num_components(); } - // Called after all integer values are decoded. The implmentation should + // Called after all integer values are decoded. The implementation should // use this method to store the values into the attribute. virtual bool StoreValues(uint32_t num_values); - std::vector *values() { return &values_; } + void PreparePortableAttribute(int num_entries, int num_components); + + int32_t *GetPortableAttributeData() { + return reinterpret_cast( + portable_attribute()->GetAddress(AttributeValueIndex(0))); + } private: // Stores decoded values into the attribute with a data type AttributeTypeT. template void StoreTypedValues(uint32_t num_values); - // Storage for decoded integer values. - std::vector values_; - - std::unique_ptr> prediction_scheme_; + std::unique_ptr> + prediction_scheme_; }; } // namespace draco diff --git a/src/draco/compression/attributes/sequential_integer_attribute_encoder.cc b/src/draco/compression/attributes/sequential_integer_attribute_encoder.cc new file mode 100644 index 00000000..a5de6a81 --- /dev/null +++ b/src/draco/compression/attributes/sequential_integer_attribute_encoder.cc @@ -0,0 +1,217 @@ +// Copyright 2016 The Draco Authors. +// +// Licensed under the Apache License, Version 2.0 (the "License"); +// you may not use this file except in compliance with the License. +// You may obtain a copy of the License at +// +// http://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an "AS IS" BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// See the License for the specific language governing permissions and +// limitations under the License. +// +#include "draco/compression/attributes/sequential_integer_attribute_encoder.h" + +#include "draco/compression/attributes/prediction_schemes/prediction_scheme_encoder_factory.h" +#include "draco/compression/attributes/prediction_schemes/prediction_scheme_wrap_encoding_transform.h" +#include "draco/core/bit_utils.h" +#include "draco/core/symbol_encoding.h" + +namespace draco { + +SequentialIntegerAttributeEncoder::SequentialIntegerAttributeEncoder() {} + +bool SequentialIntegerAttributeEncoder::Initialize(PointCloudEncoder *encoder, + int attribute_id) { + if (!SequentialAttributeEncoder::Initialize(encoder, attribute_id)) + return false; + if (GetUniqueId() == SEQUENTIAL_ATTRIBUTE_ENCODER_INTEGER) { + // When encoding integers, this encoder currently works only for integer + // attributes up to 32 bits. + switch (attribute()->data_type()) { + case DT_INT8: + case DT_UINT8: + case DT_INT16: + case DT_UINT16: + case DT_INT32: + case DT_UINT32: + break; + default: + return false; + } + } + // Init prediction scheme. + const PredictionSchemeMethod prediction_scheme_method = + GetPredictionMethodFromOptions(attribute_id, *encoder->options()); + + prediction_scheme_ = CreateIntPredictionScheme(prediction_scheme_method); + + if (prediction_scheme_ && !InitPredictionScheme(prediction_scheme_.get())) { + prediction_scheme_ = nullptr; + } + + return true; +} + +bool SequentialIntegerAttributeEncoder::TransformAttributeToPortableFormat( + const std::vector &point_ids) { + if (encoder()) { + if (!PrepareValues(point_ids, encoder()->point_cloud()->num_points())) + return false; + } else { + if (!PrepareValues(point_ids, 0)) + return false; + } + + // Update point to attribute mapping with the portable attribute if the + // attribute is a parent attribute (for now, we can skip it otherwise). + if (is_parent_encoder()) { + // First create map between original attribute value indices and new ones + // (determined by the encoding order). + const PointAttribute *const orig_att = attribute(); + PointAttribute *const portable_att = portable_attribute(); + IndexTypeVector + value_to_value_map(orig_att->size()); + for (int i = 0; i < point_ids.size(); ++i) { + value_to_value_map[orig_att->mapped_index(point_ids[i])] = + AttributeValueIndex(i); + } + // Go over all points of the original attribute and update the mapping in + // the portable attribute. + for (PointIndex i(0); i < encoder()->point_cloud()->num_points(); ++i) { + portable_att->SetPointMapEntry( + i, value_to_value_map[orig_att->mapped_index(i)]); + } + } + return true; +} + +std::unique_ptr> +SequentialIntegerAttributeEncoder::CreateIntPredictionScheme( + PredictionSchemeMethod method) { + return CreatePredictionSchemeForEncoder< + int32_t, PredictionSchemeWrapEncodingTransform>( + method, attribute_id(), encoder()); +} + +bool SequentialIntegerAttributeEncoder::EncodeValues( + const std::vector &point_ids, EncoderBuffer *out_buffer) { + // Initialize general quantization data. + const PointAttribute *const attrib = attribute(); + if (attrib->size() == 0) + return true; + + int8_t prediction_scheme_method = PREDICTION_NONE; + if (prediction_scheme_) { + if (!SetPredictionSchemeParentAttributes(prediction_scheme_.get())) { + return false; + } + prediction_scheme_method = + static_cast(prediction_scheme_->GetPredictionMethod()); + } + out_buffer->Encode(prediction_scheme_method); + if (prediction_scheme_) { + out_buffer->Encode( + static_cast(prediction_scheme_->GetTransformType())); + } + + const int num_components = portable_attribute()->num_components(); + const int num_values = num_components * portable_attribute()->size(); + const int32_t *const portable_attribute_data = GetPortableAttributeData(); + + // We need to keep the portable data intact, but several encoding steps can + // result in changes of this data, e.g., by applying prediction schemes that + // change the data in place. To preserve the portable data we store and + // process all encoded data in a separate array. + std::vector encoded_data(num_values); + + // All integer values are initialized. Process them using the prediction + // scheme if we have one. + if (prediction_scheme_) { + prediction_scheme_->ComputeCorrectionValues( + portable_attribute_data, &encoded_data[0], num_values, num_components, + point_ids.data()); + } + + if (prediction_scheme_ == nullptr || + !prediction_scheme_->AreCorrectionsPositive()) { + const int32_t *const input = + prediction_scheme_ ? encoded_data.data() : portable_attribute_data; + ConvertSignedIntsToSymbols(input, num_values, + reinterpret_cast(&encoded_data[0])); + } + + if (encoder() == nullptr || encoder()->options()->GetGlobalBool( + "use_built_in_attribute_compression", true)) { + out_buffer->Encode(static_cast(1)); + if (!EncodeSymbols(reinterpret_cast(encoded_data.data()), + point_ids.size() * num_components, num_components, + out_buffer)) { + return false; + } + } else { + // No compression. Just store the raw integer values, using the number of + // bytes as needed. + + // To compute the maximum bit-length, first OR all values. + uint32_t masked_value = 0; + for (uint32_t i = 0; i < num_values; ++i) { + masked_value |= encoded_data[i]; + } + // Compute the msb of the ORed value. + int value_msb_pos = 0; + if (masked_value != 0) { + value_msb_pos = bits::MostSignificantBit(masked_value); + } + const int num_bytes = 1 + value_msb_pos / 8; + + out_buffer->Encode(static_cast(0)); + out_buffer->Encode(static_cast(num_bytes)); + + if (num_bytes == DataTypeLength(DT_INT32)) { + out_buffer->Encode(encoded_data.data(), sizeof(int32_t) * num_values); + } else { + for (uint32_t i = 0; i < num_values; ++i) { + out_buffer->Encode(encoded_data.data() + i, num_bytes); + } + } + } + if (prediction_scheme_) { + prediction_scheme_->EncodePredictionData(out_buffer); + } + return true; +} + +bool SequentialIntegerAttributeEncoder::PrepareValues( + const std::vector &point_ids, int num_points) { + // Convert all values to int32_t format. + const PointAttribute *const attrib = attribute(); + const int num_components = attrib->num_components(); + const int num_entries = point_ids.size(); + PreparePortableAttribute(num_entries, num_components, num_points); + int32_t dst_index = 0; + int32_t *const portable_attribute_data = GetPortableAttributeData(); + for (PointIndex pi : point_ids) { + const AttributeValueIndex att_id = attrib->mapped_index(pi); + attrib->ConvertValue(att_id, portable_attribute_data + dst_index); + dst_index += num_components; + } + return true; +} + +void SequentialIntegerAttributeEncoder::PreparePortableAttribute( + int num_entries, int num_components, int num_points) { + GeometryAttribute va; + va.Init(attribute()->attribute_type(), nullptr, num_components, DT_INT32, + false, num_components * DataTypeLength(DT_INT32), 0); + std::unique_ptr port_att(new PointAttribute(va)); + port_att->Reset(num_entries); + SetPortableAttribute(std::move(port_att)); + if (num_points) { + portable_attribute()->SetExplicitMapping(num_points); + } +} + +} // namespace draco diff --git a/compression/attributes/sequential_integer_attribute_encoder.h b/src/draco/compression/attributes/sequential_integer_attribute_encoder.h similarity index 71% rename from compression/attributes/sequential_integer_attribute_encoder.h rename to src/draco/compression/attributes/sequential_integer_attribute_encoder.h index 1720b078..3d954fd2 100644 --- a/compression/attributes/sequential_integer_attribute_encoder.h +++ b/src/draco/compression/attributes/sequential_integer_attribute_encoder.h @@ -15,8 +15,8 @@ #ifndef DRACO_COMPRESSION_ATTRIBUTES_SEQUENTIAL_INTEGER_ATTRIBUTE_ENCODER_H_ #define DRACO_COMPRESSION_ATTRIBUTES_SEQUENTIAL_INTEGER_ATTRIBUTE_ENCODER_H_ -#include "compression/attributes/prediction_schemes/prediction_scheme.h" -#include "compression/attributes/sequential_attribute_encoder.h" +#include "draco/compression/attributes/prediction_schemes/prediction_scheme_encoder.h" +#include "draco/compression/attributes/sequential_attribute_encoder.h" namespace draco { @@ -31,6 +31,8 @@ class SequentialIntegerAttributeEncoder : public SequentialAttributeEncoder { } bool Initialize(PointCloudEncoder *encoder, int attribute_id) override; + bool TransformAttributeToPortableFormat( + const std::vector &point_ids) override; protected: bool EncodeValues(const std::vector &point_ids, @@ -38,22 +40,26 @@ class SequentialIntegerAttributeEncoder : public SequentialAttributeEncoder { // Returns a prediction scheme that should be used for encoding of the // integer values. - virtual std::unique_ptr> + virtual std::unique_ptr> CreateIntPredictionScheme(PredictionSchemeMethod method); // Prepares the integer values that are going to be encoded. - virtual bool PrepareValues(const std::vector &point_ids); + virtual bool PrepareValues(const std::vector &point_ids, + int num_points); - std::vector *values() { return &values_; } + void PreparePortableAttribute(int num_entries, int num_components, + int num_points); - private: - // Attribute values converted to int32_t data type that can be used in - // prediction schemes and for entropy coding. - std::vector values_; + int32_t *GetPortableAttributeData() { + return reinterpret_cast( + portable_attribute()->GetAddress(AttributeValueIndex(0))); + } + private: // Optional prediction scheme can be used to modify the integer values in // order to make them easier to compress. - std::unique_ptr> prediction_scheme_; + std::unique_ptr> + prediction_scheme_; }; } // namespace draco diff --git a/compression/attributes/sequential_integer_attribute_encoding_test.cc b/src/draco/compression/attributes/sequential_integer_attribute_encoding_test.cc similarity index 72% rename from compression/attributes/sequential_integer_attribute_encoding_test.cc rename to src/draco/compression/attributes/sequential_integer_attribute_encoding_test.cc index 719d5e83..7fb00306 100644 --- a/compression/attributes/sequential_integer_attribute_encoding_test.cc +++ b/src/draco/compression/attributes/sequential_integer_attribute_encoding_test.cc @@ -14,9 +14,10 @@ // #include -#include "compression/attributes/sequential_integer_attribute_decoder.h" -#include "compression/attributes/sequential_integer_attribute_encoder.h" -#include "core/draco_test_base.h" +#include "draco/compression/attributes/sequential_integer_attribute_decoder.h" +#include "draco/compression/attributes/sequential_integer_attribute_encoder.h" +#include "draco/compression/config/compression_shared.h" +#include "draco/core/draco_test_base.h" namespace draco { @@ -43,13 +44,18 @@ TEST_F(SequentialIntegerAttributeEncodingTest, DoesCompress) { EncoderBuffer out_buf; SequentialIntegerAttributeEncoder ie; ASSERT_TRUE(ie.InitializeStandalone(&pa)); - ASSERT_TRUE(ie.Encode(point_ids, &out_buf)); + ASSERT_TRUE(ie.TransformAttributeToPortableFormat(point_ids)); + ASSERT_TRUE(ie.EncodePortableAttribute(point_ids, &out_buf)); + ASSERT_TRUE(ie.EncodeDataNeededByPortableTransform(&out_buf)); DecoderBuffer in_buf; in_buf.Init(out_buf.data(), out_buf.size()); + in_buf.set_bitstream_version(kDracoBitstreamVersion); SequentialIntegerAttributeDecoder id; ASSERT_TRUE(id.InitializeStandalone(&pa)); - ASSERT_TRUE(id.Decode(point_ids, &in_buf)); + ASSERT_TRUE(id.DecodePortableAttribute(point_ids, &in_buf)); + ASSERT_TRUE(id.DecodeDataNeededByPortableTransform(point_ids, &in_buf)); + ASSERT_TRUE(id.TransformAttributeToOriginalFormat(point_ids)); for (uint32_t i = 0; i < values.size(); ++i) { int32_t entry_val; diff --git a/compression/attributes/sequential_normal_attribute_decoder.cc b/src/draco/compression/attributes/sequential_normal_attribute_decoder.cc similarity index 55% rename from compression/attributes/sequential_normal_attribute_decoder.cc rename to src/draco/compression/attributes/sequential_normal_attribute_decoder.cc index c0df7682..4f132201 100644 --- a/compression/attributes/sequential_normal_attribute_decoder.cc +++ b/src/draco/compression/attributes/sequential_normal_attribute_decoder.cc @@ -12,8 +12,9 @@ // See the License for the specific language governing permissions and // limitations under the License. // -#include "compression/attributes/sequential_normal_attribute_decoder.h" -#include "compression/attributes/normal_compression_utils.h" +#include "draco/compression/attributes/sequential_normal_attribute_decoder.h" +#include "draco/attributes/attribute_octahedron_transform.h" +#include "draco/compression/attributes/normal_compression_utils.h" namespace draco { @@ -25,7 +26,7 @@ bool SequentialNormalAttributeDecoder::Initialize(PointCloudDecoder *decoder, if (!SequentialIntegerAttributeDecoder::Initialize(decoder, attribute_id)) return false; // Currently, this encoder works only for 3-component normal vectors. - if (attribute()->components_count() != 3) + if (attribute()->num_components() != 3) return false; // Also the data type must be DT_FLOAT32. if (attribute()->data_type() != DT_FLOAT32) @@ -35,28 +36,45 @@ bool SequentialNormalAttributeDecoder::Initialize(PointCloudDecoder *decoder, bool SequentialNormalAttributeDecoder::DecodeIntegerValues( const std::vector &point_ids, DecoderBuffer *in_buffer) { - uint8_t quantization_bits; - if (!in_buffer->Decode(&quantization_bits)) - return false; - quantization_bits_ = quantization_bits; + if (decoder()->bitstream_version() < DRACO_BITSTREAM_VERSION(2, 0)) { + uint8_t quantization_bits; + if (!in_buffer->Decode(&quantization_bits)) + return false; + quantization_bits_ = quantization_bits; + } return SequentialIntegerAttributeDecoder::DecodeIntegerValues(point_ids, in_buffer); } +bool SequentialNormalAttributeDecoder::DecodeDataNeededByPortableTransform( + const std::vector &point_ids, DecoderBuffer *in_buffer) { + if (decoder()->bitstream_version() >= DRACO_BITSTREAM_VERSION(2, 0)) { + // For newer file version, decode attribute transform data here. + uint8_t quantization_bits; + if (!in_buffer->Decode(&quantization_bits)) + return false; + quantization_bits_ = quantization_bits; + } + + // Store the decoded transform data in portable attribute. + AttributeOctahedronTransform octahedral_transform; + octahedral_transform.SetParameters(quantization_bits_); + return octahedral_transform.TransferToAttribute(portable_attribute()); +} + bool SequentialNormalAttributeDecoder::StoreValues(uint32_t num_points) { // Convert all quantized values back to floats. - const int32_t max_quantized_value = (1 << quantization_bits_) - 1; - const float max_quantized_value_f = static_cast(max_quantized_value); - - const int num_components = attribute()->components_count(); + const int num_components = attribute()->num_components(); const int entry_size = sizeof(float) * num_components; float att_val[3]; int quant_val_id = 0; int out_byte_pos = 0; + const int32_t *const portable_attribute_data = GetPortableAttributeData(); + const OctahedronToolBox octahedron_tool_box(quantization_bits_); for (uint32_t i = 0; i < num_points; ++i) { - const int32_t s = values()->at(quant_val_id++); - const int32_t t = values()->at(quant_val_id++); - QuantizedOctaherdalCoordsToUnitVector(s, t, max_quantized_value_f, att_val); + const int32_t s = portable_attribute_data[quant_val_id++]; + const int32_t t = portable_attribute_data[quant_val_id++]; + octahedron_tool_box.QuantizedOctaherdalCoordsToUnitVector(s, t, att_val); // Store the decoded floating point value into the attribute buffer. attribute()->buffer()->Write(out_byte_pos, att_val, entry_size); out_byte_pos += entry_size; diff --git a/compression/attributes/sequential_normal_attribute_decoder.h b/src/draco/compression/attributes/sequential_normal_attribute_decoder.h similarity index 76% rename from compression/attributes/sequential_normal_attribute_decoder.h rename to src/draco/compression/attributes/sequential_normal_attribute_decoder.h index ff7b304a..37ad43a6 100644 --- a/compression/attributes/sequential_normal_attribute_decoder.h +++ b/src/draco/compression/attributes/sequential_normal_attribute_decoder.h @@ -15,10 +15,10 @@ #ifndef DRACO_COMPRESSION_ATTRIBUTES_SEQUENTIAL_NORMAL_ATTRIBUTE_DECODER_H_ #define DRACO_COMPRESSION_ATTRIBUTES_SEQUENTIAL_NORMAL_ATTRIBUTE_DECODER_H_ -#include "compression/attributes/prediction_schemes/prediction_scheme_decoder_factory.h" -#include "compression/attributes/prediction_schemes/prediction_scheme_normal_octahedron_canonicalized_transform.h" -#include "compression/attributes/prediction_schemes/prediction_scheme_normal_octahedron_transform.h" -#include "compression/attributes/sequential_integer_attribute_decoder.h" +#include "draco/compression/attributes/prediction_schemes/prediction_scheme_decoder_factory.h" +#include "draco/compression/attributes/prediction_schemes/prediction_scheme_normal_octahedron_canonicalized_decoding_transform.h" +#include "draco/compression/attributes/prediction_schemes/prediction_scheme_normal_octahedron_decoding_transform.h" +#include "draco/compression/attributes/sequential_integer_attribute_decoder.h" namespace draco { @@ -35,18 +35,22 @@ class SequentialNormalAttributeDecoder } bool DecodeIntegerValues(const std::vector &point_ids, DecoderBuffer *in_buffer) override; + bool DecodeDataNeededByPortableTransform( + const std::vector &point_ids, + DecoderBuffer *in_buffer) override; bool StoreValues(uint32_t num_points) override; private: int32_t quantization_bits_; - std::unique_ptr> + std::unique_ptr> CreateIntPredictionScheme( PredictionSchemeMethod method, PredictionSchemeTransformType transform_type) override { switch (transform_type) { case PREDICTION_TRANSFORM_NORMAL_OCTAHEDRON: { - typedef PredictionSchemeNormalOctahedronTransform Transform; + typedef PredictionSchemeNormalOctahedronDecodingTransform + Transform; // At this point the decoder has not read the quantization bits, // which is why we must construct the transform by default. // See Transform.DecodeTransformData for more details. @@ -54,7 +58,8 @@ class SequentialNormalAttributeDecoder method, attribute_id(), decoder()); } case PREDICTION_TRANSFORM_NORMAL_OCTAHEDRON_CANONICALIZED: { - typedef PredictionSchemeNormalOctahedronCanonicalizedTransform + typedef PredictionSchemeNormalOctahedronCanonicalizedDecodingTransform< + int32_t> Transform; // At this point the decoder has not read the quantization bits, // which is why we must construct the transform by default. diff --git a/src/draco/compression/attributes/sequential_normal_attribute_encoder.cc b/src/draco/compression/attributes/sequential_normal_attribute_encoder.cc new file mode 100644 index 00000000..d31871cb --- /dev/null +++ b/src/draco/compression/attributes/sequential_normal_attribute_encoder.cc @@ -0,0 +1,50 @@ +// Copyright 2016 The Draco Authors. +// +// Licensed under the Apache License, Version 2.0 (the "License"); +// you may not use this file except in compliance with the License. +// You may obtain a copy of the License at +// +// http://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an "AS IS" BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// See the License for the specific language governing permissions and +// limitations under the License. +// +#include "draco/compression/attributes/sequential_normal_attribute_encoder.h" +#include "draco/compression/attributes/normal_compression_utils.h" + +namespace draco { + +bool SequentialNormalAttributeEncoder::Initialize(PointCloudEncoder *encoder, + int attribute_id) { + if (!SequentialIntegerAttributeEncoder::Initialize(encoder, attribute_id)) + return false; + // Currently this encoder works only for 3-component normal vectors. + if (attribute()->num_components() != 3) + return false; + + // Initialize AttributeOctahedronTransform. + const int quantization_bits = encoder->options()->GetAttributeInt( + attribute_id, "quantization_bits", -1); + if (quantization_bits < 1) + return false; + attribute_octahedron_transform_.SetParameters(quantization_bits); + return true; +} + +bool SequentialNormalAttributeEncoder::EncodeDataNeededByPortableTransform( + EncoderBuffer *out_buffer) { + return attribute_octahedron_transform_.EncodeParameters(out_buffer); +} + +bool SequentialNormalAttributeEncoder::PrepareValues( + const std::vector &point_ids, int num_points) { + SetPortableAttribute( + attribute_octahedron_transform_.GeneratePortableAttribute( + *(attribute()), point_ids, num_points)); + return true; +} + +} // namespace draco diff --git a/compression/attributes/sequential_normal_attribute_encoder.h b/src/draco/compression/attributes/sequential_normal_attribute_encoder.h similarity index 55% rename from compression/attributes/sequential_normal_attribute_encoder.h rename to src/draco/compression/attributes/sequential_normal_attribute_encoder.h index 9514564c..cb7cfc9e 100644 --- a/compression/attributes/sequential_normal_attribute_encoder.h +++ b/src/draco/compression/attributes/sequential_normal_attribute_encoder.h @@ -15,13 +15,15 @@ #ifndef DRACO_COMPRESSION_ATTRIBUTES_SEQUENTIAL_NORMAL_ATTRIBUTE_ENCODER_H_ #define DRACO_COMPRESSION_ATTRIBUTES_SEQUENTIAL_NORMAL_ATTRIBUTE_ENCODER_H_ -#include "compression/attributes/prediction_schemes/prediction_scheme_encoder_factory.h" -#include "compression/attributes/prediction_schemes/prediction_scheme_normal_octahedron_canonicalized_transform.h" -#include "compression/attributes/sequential_integer_attribute_encoder.h" +#include "draco/attributes/attribute_octahedron_transform.h" +#include "draco/compression/attributes/prediction_schemes/prediction_scheme_encoder_factory.h" +#include "draco/compression/attributes/prediction_schemes/prediction_scheme_normal_octahedron_canonicalized_encoding_transform.h" +#include "draco/compression/attributes/sequential_integer_attribute_encoder.h" +#include "draco/compression/config/compression_shared.h" namespace draco { -// Class for encoding normal vectors using an octahedral encoding (see Cigolle +// Class for encoding normal vectors using an octahedral encoding, see Cigolle // et al.'14 “A Survey of Efficient Representations for Independent Unit // Vectors”. Compared to the basic quantization encoder, this encoder results // in a better compression rate under the same accuracy settings. Note that this @@ -35,21 +37,41 @@ class SequentialNormalAttributeEncoder } bool IsLossyEncoder() const override { return true; } + bool EncodeDataNeededByPortableTransform(EncoderBuffer *out_buffer) override; + protected: bool Initialize(PointCloudEncoder *encoder, int attribute_id) override; - bool PrepareValues(const std::vector &point_ids) override; - std::unique_ptr> + // Put quantized values in portable attribute for sequential encoding. + bool PrepareValues(const std::vector &point_ids, + int num_points) override; + + std::unique_ptr> CreateIntPredictionScheme(PredictionSchemeMethod /* method */) override { - typedef PredictionSchemeNormalOctahedronCanonicalizedTransform + typedef PredictionSchemeNormalOctahedronCanonicalizedEncodingTransform< + int32_t> Transform; const int32_t quantization_bits = encoder()->options()->GetAttributeInt( attribute_id(), "quantization_bits", -1); const int32_t max_value = (1 << quantization_bits) - 1; const Transform transform(max_value); - return CreatePredictionSchemeForEncoder( - PREDICTION_DIFFERENCE, attribute_id(), encoder(), transform); + PredictionSchemeMethod prediction_method = + SelectPredictionMethod(attribute_id(), encoder()); + if (prediction_method == MESH_PREDICTION_GEOMETRIC_NORMAL) { + return CreatePredictionSchemeForEncoder( + MESH_PREDICTION_GEOMETRIC_NORMAL, attribute_id(), encoder(), + transform); + } + if (prediction_method == PREDICTION_DIFFERENCE) { + return CreatePredictionSchemeForEncoder( + PREDICTION_DIFFERENCE, attribute_id(), encoder(), transform); + } + DCHECK(false); // Should never be reached. + return nullptr; } + + // Used for the conversion to quantized normals in octahedral format. + AttributeOctahedronTransform attribute_octahedron_transform_; }; } // namespace draco diff --git a/compression/attributes/sequential_quantization_attribute_decoder.cc b/src/draco/compression/attributes/sequential_quantization_attribute_decoder.cc similarity index 70% rename from compression/attributes/sequential_quantization_attribute_decoder.cc rename to src/draco/compression/attributes/sequential_quantization_attribute_decoder.cc index b0382277..66a689c8 100644 --- a/compression/attributes/sequential_quantization_attribute_decoder.cc +++ b/src/draco/compression/attributes/sequential_quantization_attribute_decoder.cc @@ -12,9 +12,10 @@ // See the License for the specific language governing permissions and // limitations under the License. // -#include "compression/attributes/sequential_quantization_attribute_decoder.h" +#include "draco/compression/attributes/sequential_quantization_attribute_decoder.h" -#include "core/quantization_utils.h" +#include "draco/attributes/attribute_quantization_transform.h" +#include "draco/core/quantization_utils.h" namespace draco { @@ -35,18 +36,35 @@ bool SequentialQuantizationAttributeDecoder::Initialize( bool SequentialQuantizationAttributeDecoder::DecodeIntegerValues( const std::vector &point_ids, DecoderBuffer *in_buffer) { - if (!DecodeQuantizedDataInfo()) + if (decoder()->bitstream_version() < DRACO_BITSTREAM_VERSION(2, 0) && + !DecodeQuantizedDataInfo()) return false; return SequentialIntegerAttributeDecoder::DecodeIntegerValues(point_ids, in_buffer); } +bool SequentialQuantizationAttributeDecoder:: + DecodeDataNeededByPortableTransform( + const std::vector &point_ids, DecoderBuffer *in_buffer) { + if (decoder()->bitstream_version() >= DRACO_BITSTREAM_VERSION(2, 0)) { + // Decode quantization data here only for files with bitstream version 2.0+ + if (!DecodeQuantizedDataInfo()) + return false; + } + + // Store the decoded transform data in portable attribute; + AttributeQuantizationTransform transform; + transform.SetParameters(quantization_bits_, min_value_.get(), + attribute()->num_components(), max_value_dif_); + return transform.TransferToAttribute(portable_attribute()); +} + bool SequentialQuantizationAttributeDecoder::StoreValues(uint32_t num_values) { return DequantizeValues(num_values); } bool SequentialQuantizationAttributeDecoder::DecodeQuantizedDataInfo() { - const int num_components = attribute()->components_count(); + const int num_components = attribute()->num_components(); min_value_ = std::unique_ptr(new float[num_components]); if (!decoder()->buffer()->Decode(min_value_.get(), sizeof(float) * num_components)) @@ -65,16 +83,18 @@ bool SequentialQuantizationAttributeDecoder::DequantizeValues( uint32_t num_values) { // Convert all quantized values back to floats. const int32_t max_quantized_value = (1 << (quantization_bits_)) - 1; - const int num_components = attribute()->components_count(); + const int num_components = attribute()->num_components(); const int entry_size = sizeof(float) * num_components; const std::unique_ptr att_val(new float[num_components]); int quant_val_id = 0; int out_byte_pos = 0; Dequantizer dequantizer; dequantizer.Init(max_value_dif_, max_quantized_value); + const int32_t *const portable_attribute_data = GetPortableAttributeData(); for (uint32_t i = 0; i < num_values; ++i) { for (int c = 0; c < num_components; ++c) { - float value = dequantizer.DequantizeFloat(values()->at(quant_val_id++)); + float value = + dequantizer.DequantizeFloat(portable_attribute_data[quant_val_id++]); value = value + min_value_[c]; att_val[c] = value; } diff --git a/compression/attributes/sequential_quantization_attribute_decoder.h b/src/draco/compression/attributes/sequential_quantization_attribute_decoder.h similarity index 89% rename from compression/attributes/sequential_quantization_attribute_decoder.h rename to src/draco/compression/attributes/sequential_quantization_attribute_decoder.h index f4147ed1..b34da16c 100644 --- a/compression/attributes/sequential_quantization_attribute_decoder.h +++ b/src/draco/compression/attributes/sequential_quantization_attribute_decoder.h @@ -15,7 +15,7 @@ #ifndef DRACO_COMPRESSION_ATTRIBUTES_SEQUENTIAL_QUANTIZATION_ATTRIBUTE_DECODER_H_ #define DRACO_COMPRESSION_ATTRIBUTES_SEQUENTIAL_QUANTIZATION_ATTRIBUTE_DECODER_H_ -#include "compression/attributes/sequential_integer_attribute_decoder.h" +#include "draco/compression/attributes/sequential_integer_attribute_decoder.h" namespace draco { @@ -30,6 +30,9 @@ class SequentialQuantizationAttributeDecoder protected: bool DecodeIntegerValues(const std::vector &point_ids, DecoderBuffer *in_buffer) override; + bool DecodeDataNeededByPortableTransform( + const std::vector &point_ids, + DecoderBuffer *in_buffer) override; bool StoreValues(uint32_t num_points) override; // Decodes data necessary for dequantizing the encoded values. diff --git a/src/draco/compression/attributes/sequential_quantization_attribute_encoder.cc b/src/draco/compression/attributes/sequential_quantization_attribute_encoder.cc new file mode 100644 index 00000000..e21d1fec --- /dev/null +++ b/src/draco/compression/attributes/sequential_quantization_attribute_encoder.cc @@ -0,0 +1,57 @@ +// Copyright 2016 The Draco Authors. +// +// Licensed under the Apache License, Version 2.0 (the "License"); +// you may not use this file except in compliance with the License. +// You may obtain a copy of the License at +// +// http://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an "AS IS" BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// See the License for the specific language governing permissions and +// limitations under the License. +// +#include "draco/compression/attributes/sequential_quantization_attribute_encoder.h" + +#include "draco/core/quantization_utils.h" + +namespace draco { + +SequentialQuantizationAttributeEncoder:: + SequentialQuantizationAttributeEncoder() {} + +bool SequentialQuantizationAttributeEncoder::Initialize( + PointCloudEncoder *encoder, int attribute_id) { + if (!SequentialIntegerAttributeEncoder::Initialize(encoder, attribute_id)) + return false; + // This encoder currently works only for floating point attributes. + const PointAttribute *const attribute = + encoder->point_cloud()->attribute(attribute_id); + if (attribute->data_type() != DT_FLOAT32) + return false; + + // Initialize AttributeQuantizationTransform. + const int quantization_bits = encoder->options()->GetAttributeInt( + attribute_id, "quantization_bits", -1); + if (quantization_bits < 1) + return false; + attribute_quantization_transform_.ComputeParameters(*attribute, + quantization_bits); + return true; +} + +bool SequentialQuantizationAttributeEncoder:: + EncodeDataNeededByPortableTransform(EncoderBuffer *out_buffer) { + return attribute_quantization_transform_.EncodeParameters(out_buffer); +} + +bool SequentialQuantizationAttributeEncoder::PrepareValues( + const std::vector &point_ids, int num_points) { + SetPortableAttribute( + attribute_quantization_transform_.GeneratePortableAttribute( + *(attribute()), point_ids, num_points)); + return true; +} + +} // namespace draco diff --git a/compression/attributes/sequential_quantization_attribute_encoder.h b/src/draco/compression/attributes/sequential_quantization_attribute_encoder.h similarity index 66% rename from compression/attributes/sequential_quantization_attribute_encoder.h rename to src/draco/compression/attributes/sequential_quantization_attribute_encoder.h index f7ad507d..b70b4381 100644 --- a/compression/attributes/sequential_quantization_attribute_encoder.h +++ b/src/draco/compression/attributes/sequential_quantization_attribute_encoder.h @@ -15,7 +15,8 @@ #ifndef DRACO_COMPRESSION_ATTRIBUTES_SEQUENTIAL_QUANTIZATION_ATTRIBUTE_ENCODER_H_ #define DRACO_COMPRESSION_ATTRIBUTES_SEQUENTIAL_QUANTIZATION_ATTRIBUTE_ENCODER_H_ -#include "compression/attributes/sequential_integer_attribute_encoder.h" +#include "draco/attributes/attribute_quantization_transform.h" +#include "draco/compression/attributes/sequential_integer_attribute_encoder.h" namespace draco { @@ -34,23 +35,16 @@ class SequentialQuantizationAttributeEncoder bool IsLossyEncoder() const override { return true; } - protected: - bool PrepareValues(const std::vector &point_ids) override; - bool PrepareLossyAttributeData() override; + bool EncodeDataNeededByPortableTransform(EncoderBuffer *out_buffer) override; - // Quantizes all values of the input attribute. Quantization behavior can be - // changed by the derived classes. - virtual bool QuantizeValues(const std::vector &point_ids); + protected: + // Put quantized values in portable attribute for sequential encoding. + bool PrepareValues(const std::vector &point_ids, + int num_points) override; private: - // Computes quantization data when needed. The output is computed only once - // even if the function is called multiple times (this can be reset only - // by calling the Initialize() method). - void ComputeQuantizationData(); - - // Data that are needed by PrepareLossyAttributeData(). - float max_value_dif_; - std::unique_ptr min_value_; + // Used for the quantization. + AttributeQuantizationTransform attribute_quantization_transform_; }; } // namespace draco diff --git a/compression/config/compression_shared.h b/src/draco/compression/config/compression_shared.h similarity index 91% rename from compression/config/compression_shared.h rename to src/draco/compression/config/compression_shared.h index 67bbd25c..7103a5c6 100644 --- a/compression/config/compression_shared.h +++ b/src/draco/compression/config/compression_shared.h @@ -20,11 +20,11 @@ namespace draco { // Latest Draco bit-stream version. -static constexpr uint8_t kDracoBitstreamVersionMajor = 1; -static constexpr uint8_t kDracoBitstreamVersionMinor = 2; +static constexpr uint8_t kDracoBitstreamVersionMajor = 2; +static constexpr uint8_t kDracoBitstreamVersionMinor = 0; -// Macro that converts the Draco bit-stream into one uint16_t number. Useful -// mostly when checking version numbers. +// Macro that converts the Draco bit-stream into one uint16_t number. +// Useful mostly when checking version numbers. #define DRACO_BITSTREAM_VERSION(MAJOR, MINOR) \ ((static_cast(MAJOR) << 8) | MINOR) @@ -81,6 +81,8 @@ enum PredictionSchemeMethod { MESH_PREDICTION_MULTI_PARALLELOGRAM = 2, MESH_PREDICTION_TEX_COORDS = 3, MESH_PREDICTION_CONSTRAINED_MULTI_PARALLELOGRAM = 4, + MESH_PREDICTION_TEX_COORDS_PORTABLE = 5, + MESH_PREDICTION_GEOMETRIC_NORMAL = 6, NUM_PREDICTION_SCHEMES }; @@ -118,6 +120,9 @@ struct DracoHeader { uint16_t flags; }; +// Mask for setting and getting the bit for metadata in |flags| of header. +#define METADATA_FLAG_MASK 0x8000 + } // namespace draco #endif // DRACO_COMPRESSION_CONFIG_COMPRESSION_SHARED_H_ diff --git a/src/draco/compression/config/decoder_options.h b/src/draco/compression/config/decoder_options.h new file mode 100644 index 00000000..3b388999 --- /dev/null +++ b/src/draco/compression/config/decoder_options.h @@ -0,0 +1,34 @@ +// Copyright 2017 The Draco Authors. +// +// Licensed under the Apache License, Version 2.0 (the "License"); +// you may not use this file except in compliance with the License. +// You may obtain a copy of the License at +// +// http://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an "AS IS" BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// See the License for the specific language governing permissions and +// limitations under the License. +// +#ifndef DRACO_COMPRESSION_CONFIG_DECODER_OPTIONS_H_ +#define DRACO_COMPRESSION_CONFIG_DECODER_OPTIONS_H_ + +#include +#include + +#include "draco/attributes/geometry_attribute.h" +#include "draco/compression/config/draco_options.h" + +namespace draco { + +// Class containing options that can be passed to PointCloudDecoder to control +// decoding of the input geometry. The options can be specified either for the +// whole geometry or for a specific attribute type. Each option is identified +// by a unique name stored as an std::string. +typedef DracoOptions DecoderOptions; + +} // namespace draco + +#endif // DRACO_COMPRESSION_CONFIG_DECODER_OPTIONS_H_ diff --git a/src/draco/compression/config/decoder_options_test.cc b/src/draco/compression/config/decoder_options_test.cc new file mode 100644 index 00000000..a5cd7f10 --- /dev/null +++ b/src/draco/compression/config/decoder_options_test.cc @@ -0,0 +1,67 @@ +// Copyright 2017 The Draco Authors. +// +// Licensed under the Apache License, Version 2.0 (the "License"); +// you may not use this file except in compliance with the License. +// You may obtain a copy of the License at +// +// http://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an "AS IS" BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// See the License for the specific language governing permissions and +// limitations under the License. +// +#include "draco/compression/config/decoder_options.h" + +#include "draco/core/draco_test_base.h" + +namespace { + +class DecoderOptionsTest : public ::testing::Test { + protected: + DecoderOptionsTest() {} +}; + +TEST_F(DecoderOptionsTest, TestOptions) { + // This test verifies that we can update global and attribute options of the + // DecoderOptions class instance. + draco::DecoderOptions options; + options.SetGlobalInt("test", 3); + ASSERT_EQ(options.GetGlobalInt("test", -1), 3); + + options.SetAttributeInt(draco::GeometryAttribute::POSITION, "test", 1); + options.SetAttributeInt(draco::GeometryAttribute::GENERIC, "test", 2); + ASSERT_EQ( + options.GetAttributeInt(draco::GeometryAttribute::TEX_COORD, "test", -1), + 3); + ASSERT_EQ( + options.GetAttributeInt(draco::GeometryAttribute::POSITION, "test", -1), + 1); + ASSERT_EQ( + options.GetAttributeInt(draco::GeometryAttribute::GENERIC, "test", -1), + 2); +} + +TEST_F(DecoderOptionsTest, TestAttributeOptionsAccessors) { + // This test verifies that we can query options stored in DecoderOptions + // class instance. + draco::DecoderOptions options; + options.SetGlobalInt("test", 1); + options.SetAttributeInt(draco::GeometryAttribute::POSITION, "test", 2); + options.SetAttributeInt(draco::GeometryAttribute::TEX_COORD, "test", 3); + + ASSERT_EQ( + options.GetAttributeInt(draco::GeometryAttribute::POSITION, "test", -1), + 2); + ASSERT_EQ( + options.GetAttributeInt(draco::GeometryAttribute::POSITION, "test2", -1), + -1); + ASSERT_EQ( + options.GetAttributeInt(draco::GeometryAttribute::TEX_COORD, "test", -1), + 3); + ASSERT_EQ( + options.GetAttributeInt(draco::GeometryAttribute::NORMAL, "test", -1), 1); +} + +} // namespace diff --git a/src/draco/compression/config/draco_options.h b/src/draco/compression/config/draco_options.h new file mode 100644 index 00000000..cc6226ae --- /dev/null +++ b/src/draco/compression/config/draco_options.h @@ -0,0 +1,168 @@ +// Copyright 2017 The Draco Authors. +// +// Licensed under the Apache License, Version 2.0 (the "License"); +// you may not use this file except in compliance with the License. +// You may obtain a copy of the License at +// +// http://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an "AS IS" BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// See the License for the specific language governing permissions and +// limitations under the License. +// +#ifndef DRACO_SRC_DRACO_COMPRESSION_CONFIG_DRACO_OPTIONS_H_ +#define DRACO_SRC_DRACO_COMPRESSION_CONFIG_DRACO_OPTIONS_H_ + +#include +#include + +#include "draco/core/options.h" + +namespace draco { + +// Base option class used to control encoding and decoding. The geometry coding +// can be controlled through the following options: +// 1. Global options - Options specific to overall geometry or options common +// for all attributes +// 2. Per attribute options - Options specific to a given attribute. +// Each attribute is identified by the template +// argument AttributeKeyT that can be for example +// the attribute type or the attribute id. +// +// Example: +// +// DracoOptions options; +// +// // Set an option common for all attributes. +// options.SetGlobalInt("some_option_name", 2); +// +// // Geometry with two attributes. +// AttributeKey att_key0 = in_key0; +// AttributeKey att_key1 = in_key1; +// +// options.SetAttributeInt(att_key0, "some_option_name", 3); +// +// options.GetAttributeInt(att_key0, "some_option_name"); // Returns 3 +// options.GetAttributeInt(att_key1, "some_option_name"); // Returns 2 +// options.GetGlobalInt("some_option_name"); // Returns 2 +// +template +class DracoOptions { + public: + typedef AttributeKeyT AttributeKey; + + // Get an option for a specific attribute key. If the option is not found in + // an attribute specific storage, the implementation will return a global + // option of the given name (if available). If the option is not found, the + // provided default value |default_val| is returned instead. + int GetAttributeInt(const AttributeKey &att_key, const std::string &name, + int default_val) const; + + // Sets an option for a specific attribute key. + void SetAttributeInt(const AttributeKey &att_key, const std::string &name, + int val); + + bool GetAttributeBool(const AttributeKey &att_key, const std::string &name, + bool default_val) const; + void SetAttributeBool(const AttributeKey &att_key, const std::string &name, + bool val); + + // Gets/sets a global option that is not specific to any attribute. + int GetGlobalInt(const std::string &name, int default_val) const { + return global_options_.GetInt(name, default_val); + } + void SetGlobalInt(const std::string &name, int val) { + global_options_.SetInt(name, val); + } + bool GetGlobalBool(const std::string &name, bool default_val) const { + return global_options_.GetBool(name, default_val); + } + void SetGlobalBool(const std::string &name, bool val) { + global_options_.SetBool(name, val); + } + + // Sets or replaces attribute options with the provided |options|. + void SetAttributeOptions(const AttributeKey &att_key, const Options &options); + void SetGlobalOptions(const Options &options) { global_options_ = options; } + + // Returns |Options| instance for the specified options class if it exists. + const Options *FindAttributeOptions(const AttributeKeyT &att_key) const; + const Options &GetGlobalOptions() const { return global_options_; } + + private: + Options *GetAttributeOptions(const AttributeKeyT &att_key); + + Options global_options_; + + // Storage for options related to geometry attributes. + std::map attribute_options_; +}; + +template +const Options *DracoOptions::FindAttributeOptions( + const AttributeKeyT &att_key) const { + auto it = attribute_options_.find(att_key); + if (it == attribute_options_.end()) { + return nullptr; + } + return &it->second; +} + +template +Options *DracoOptions::GetAttributeOptions( + const AttributeKeyT &att_key) { + auto it = attribute_options_.find(att_key); + if (it != attribute_options_.end()) { + return &it->second; + } + Options new_options; + it = attribute_options_.insert(std::make_pair(att_key, new_options)).first; + return &it->second; +} + +template +int DracoOptions::GetAttributeInt(const AttributeKeyT &att_key, + const std::string &name, + int default_val) const { + const Options *const att_options = FindAttributeOptions(att_key); + if (att_options && att_options->IsOptionSet(name)) + return att_options->GetInt(name, default_val); + return global_options_.GetInt(name, default_val); +} + +template +void DracoOptions::SetAttributeInt(const AttributeKeyT &att_key, + const std::string &name, + int val) { + GetAttributeOptions(att_key)->SetInt(name, val); +} + +template +bool DracoOptions::GetAttributeBool(const AttributeKeyT &att_key, + const std::string &name, + bool default_val) const { + const Options *const att_options = FindAttributeOptions(att_key); + if (att_options && att_options->IsOptionSet(name)) + return att_options->GetBool(name, default_val); + return global_options_.GetBool(name, default_val); +} + +template +void DracoOptions::SetAttributeBool(const AttributeKeyT &att_key, + const std::string &name, + bool val) { + GetAttributeOptions(att_key)->SetBool(name, val); +} + +template +void DracoOptions::SetAttributeOptions( + const AttributeKey &att_key, const Options &options) { + Options *att_options = GetAttributeOptions(att_key); + *att_options = options; +} + +} // namespace draco + +#endif // DRACO_SRC_DRACO_COMPRESSION_CONFIG_DRACO_OPTIONS_H_ diff --git a/src/draco/compression/config/encoder_options.h b/src/draco/compression/config/encoder_options.h new file mode 100644 index 00000000..5367d6f3 --- /dev/null +++ b/src/draco/compression/config/encoder_options.h @@ -0,0 +1,95 @@ +// Copyright 2016 The Draco Authors. +// +// Licensed under the Apache License, Version 2.0 (the "License"); +// you may not use this file except in compliance with the License. +// You may obtain a copy of the License at +// +// http://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an "AS IS" BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// See the License for the specific language governing permissions and +// limitations under the License. +// +#ifndef DRACO_COMPRESSION_CONFIG_ENCODER_OPTIONS_H_ +#define DRACO_COMPRESSION_CONFIG_ENCODER_OPTIONS_H_ + +#include "draco/attributes/geometry_attribute.h" +#include "draco/compression/config/draco_options.h" +#include "draco/compression/config/encoding_features.h" + +namespace draco { + +// EncoderOptions allow users to specify so called feature options that are used +// to inform the encoder which encoding features can be used (i.e. which +// features are going to be available to the decoder). +template +class EncoderOptionsBase : public DracoOptions { + public: + static EncoderOptionsBase CreateDefaultOptions() { + EncoderOptionsBase options; +#ifdef DRACO_STANDARD_EDGEBREAKER_SUPPORTED + options.SetSupportedFeature(features::kEdgebreaker, true); +#endif +#ifdef DRACO_PREDICTIVE_EDGEBREAKER_SUPPORTED + options.SetSupportedFeature(features::kPredictiveEdgebreaker, true); +#endif + return options; + } + static EncoderOptionsBase CreateEmptyOptions() { + return EncoderOptionsBase(); + } + + // Returns speed options with default value of 5. + int GetEncodingSpeed() const { + return this->GetGlobalInt("encoding_speed", 5); + } + int GetDecodingSpeed() const { + return this->GetGlobalInt("decoding_speed", 5); + } + + // Returns the maximum speed for both encoding/decoding. + int GetSpeed() const { + const int encoding_speed = this->GetGlobalInt("encoding_speed", -1); + const int decoding_speed = this->GetGlobalInt("decoding_speed", -1); + const int max_speed = std::max(encoding_speed, decoding_speed); + if (max_speed == -1) + return 5; // Default value. + return max_speed; + } + + void SetSpeed(int encoding_speed, int decoding_speed) { + this->SetGlobalInt("encoding_speed", encoding_speed); + this->SetGlobalInt("decoding_speed", decoding_speed); + } + + // Sets a given feature as supported or unsupported by the target decoder. + // Encoder will always use only supported features when encoding the input + // geometry. + void SetSupportedFeature(const std::string &name, bool supported) { + feature_options_.SetBool(name, supported); + } + bool IsFeatureSupported(const std::string &name) const { + return feature_options_.GetBool(name); + } + + void SetFeatureOptions(const Options &options) { feature_options_ = options; } + const Options &GetFeaturelOptions() const { return feature_options_; } + + private: + // Use helper methods to construct the encoder options. + // See CreateDefaultOptions(); + EncoderOptionsBase() {} + + // List of supported/unsupported features that can be used by the encoder. + Options feature_options_; +}; + +// Encoder options where attributes are identified by their attribute id. +// Used to set options that are specific to a given geometry. +typedef EncoderOptionsBase EncoderOptions; + +} // namespace draco + +#endif // DRACO_COMPRESSION_CONFIG_ENCODER_OPTIONS_H_ diff --git a/compression/config/encoding_features.h b/src/draco/compression/config/encoding_features.h similarity index 100% rename from compression/config/encoding_features.h rename to src/draco/compression/config/encoding_features.h diff --git a/src/draco/compression/decode.cc b/src/draco/compression/decode.cc new file mode 100644 index 00000000..3d2ed855 --- /dev/null +++ b/src/draco/compression/decode.cc @@ -0,0 +1,132 @@ +// Copyright 2016 The Draco Authors. +// +// Licensed under the Apache License, Version 2.0 (the "License"); +// you may not use this file except in compliance with the License. +// You may obtain a copy of the License at +// +// http://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an "AS IS" BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// See the License for the specific language governing permissions and +// limitations under the License. +// +#include "draco/compression/decode.h" + +#include "draco/compression/config/compression_shared.h" + +#ifdef DRACO_MESH_COMPRESSION_SUPPORTED +#include "draco/compression/mesh/mesh_edgebreaker_decoder.h" +#include "draco/compression/mesh/mesh_sequential_decoder.h" +#endif + +#ifdef DRACO_POINT_CLOUD_COMPRESSION_SUPPORTED +#include "draco/compression/point_cloud/point_cloud_kd_tree_decoder.h" +#include "draco/compression/point_cloud/point_cloud_sequential_decoder.h" +#endif + +namespace draco { + +#ifdef DRACO_POINT_CLOUD_COMPRESSION_SUPPORTED +StatusOr> CreatePointCloudDecoder( + int8_t method) { + if (method == POINT_CLOUD_SEQUENTIAL_ENCODING) { + return std::unique_ptr( + new PointCloudSequentialDecoder()); + } else if (method == POINT_CLOUD_KD_TREE_ENCODING) { + return std::unique_ptr(new PointCloudKdTreeDecoder()); + } + return Status(Status::ERROR, "Unsupported encoding method."); +} +#endif + +#ifdef DRACO_MESH_COMPRESSION_SUPPORTED +StatusOr> CreateMeshDecoder(uint8_t method) { + if (method == MESH_SEQUENTIAL_ENCODING) { + return std::unique_ptr(new MeshSequentialDecoder()); + } else if (method == MESH_EDGEBREAKER_ENCODING) { + return std::unique_ptr(new MeshEdgeBreakerDecoder()); + } + return Status(Status::ERROR, "Unsupported encoding method."); +} +#endif + +StatusOr Decoder::GetEncodedGeometryType( + DecoderBuffer *in_buffer) { + DecoderBuffer temp_buffer(*in_buffer); + DracoHeader header; + DRACO_RETURN_IF_ERROR(PointCloudDecoder::DecodeHeader(&temp_buffer, &header)) + return static_cast(header.encoder_type); +} + +StatusOr> Decoder::DecodePointCloudFromBuffer( + DecoderBuffer *in_buffer) { + DRACO_ASSIGN_OR_RETURN(EncodedGeometryType type, + GetEncodedGeometryType(in_buffer)) + if (type == POINT_CLOUD) { +#ifdef DRACO_POINT_CLOUD_COMPRESSION_SUPPORTED + std::unique_ptr point_cloud(new PointCloud()); + DRACO_RETURN_IF_ERROR(DecodeBufferToGeometry(in_buffer, point_cloud.get())) + return std::move(point_cloud); +#endif + } else if (type == TRIANGULAR_MESH) { +#ifdef DRACO_MESH_COMPRESSION_SUPPORTED + std::unique_ptr mesh(new Mesh()); + DRACO_RETURN_IF_ERROR(DecodeBufferToGeometry(in_buffer, mesh.get())) + return static_cast>(std::move(mesh)); +#endif + } + return Status(Status::ERROR, "Unsupported geometry type."); +} + +StatusOr> Decoder::DecodeMeshFromBuffer( + DecoderBuffer *in_buffer) { + std::unique_ptr mesh(new Mesh()); + DRACO_RETURN_IF_ERROR(DecodeBufferToGeometry(in_buffer, mesh.get())) + return std::move(mesh); +} + +Status Decoder::DecodeBufferToGeometry(DecoderBuffer *in_buffer, + PointCloud *out_geometry) { +#ifdef DRACO_POINT_CLOUD_COMPRESSION_SUPPORTED + DecoderBuffer temp_buffer(*in_buffer); + DracoHeader header; + DRACO_RETURN_IF_ERROR(PointCloudDecoder::DecodeHeader(&temp_buffer, &header)) + if (header.encoder_type != POINT_CLOUD) { + return Status(Status::ERROR, "Input is not a point cloud."); + } + DRACO_ASSIGN_OR_RETURN(std::unique_ptr decoder, + CreatePointCloudDecoder(header.encoder_method)) + + DRACO_RETURN_IF_ERROR(decoder->Decode(options_, in_buffer, out_geometry)) + return OkStatus(); +#else + return Status(Status::ERROR, "Unsupported geometry type."); +#endif +} + +Status Decoder::DecodeBufferToGeometry(DecoderBuffer *in_buffer, + Mesh *out_geometry) { +#ifdef DRACO_MESH_COMPRESSION_SUPPORTED + DecoderBuffer temp_buffer(*in_buffer); + DracoHeader header; + DRACO_RETURN_IF_ERROR(PointCloudDecoder::DecodeHeader(&temp_buffer, &header)) + if (header.encoder_type != TRIANGULAR_MESH) { + return Status(Status::ERROR, "Input is not a mesh."); + } + DRACO_ASSIGN_OR_RETURN(std::unique_ptr decoder, + CreateMeshDecoder(header.encoder_method)) + + DRACO_RETURN_IF_ERROR(decoder->Decode(options_, in_buffer, out_geometry)) + return OkStatus(); +#else + return Status(Status::ERROR, "Unsupported geometry type."); +#endif +} + +void Decoder::SetSkipAttributeTransform(GeometryAttribute::Type att_type) { + options_.SetAttributeBool(att_type, "skip_attribute_transform", true); +} + +} // namespace draco diff --git a/src/draco/compression/decode.h b/src/draco/compression/decode.h new file mode 100644 index 00000000..d04c99ec --- /dev/null +++ b/src/draco/compression/decode.h @@ -0,0 +1,79 @@ +// Copyright 2016 The Draco Authors. +// +// Licensed under the Apache License, Version 2.0 (the "License"); +// you may not use this file except in compliance with the License. +// You may obtain a copy of the License at +// +// http://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an "AS IS" BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// See the License for the specific language governing permissions and +// limitations under the License. +// +#ifndef DRACO_COMPRESSION_DECODE_H_ +#define DRACO_COMPRESSION_DECODE_H_ + +#include "draco/compression/config/compression_shared.h" +#include "draco/compression/config/decoder_options.h" +#include "draco/core/decoder_buffer.h" +#include "draco/core/statusor.h" +#include "draco/mesh/mesh.h" + +namespace draco { + +// Class responsible for decoding of meshes and point clouds that were +// compressed by a Draco encoder. +class Decoder { + public: + // Returns the geometry type encoded in the input |in_buffer|. + // The return value is one of POINT_CLOUD, MESH or INVALID_GEOMETRY in case + // the input data is invalid. + // The decoded geometry type can be used to choose an appropriate decoding + // function for a given geometry type (see below). + static StatusOr GetEncodedGeometryType( + DecoderBuffer *in_buffer); + + // Decodes point cloud from the provided buffer. The buffer must be filled + // with data that was encoded with either the EncodePointCloudToBuffer or + // EncodeMeshToBuffer methods in encode.h. In case the input buffer contains + // mesh, the returned instance can be down-casted to Mesh. + StatusOr> DecodePointCloudFromBuffer( + DecoderBuffer *in_buffer); + + // Decodes a triangular mesh from the provided buffer. The mesh must be filled + // with data that was encoded using the EncodeMeshToBuffer method in encode.h. + // The function will return nullptr in case the input is invalid or if it was + // encoded with the EncodePointCloudToBuffer method. + StatusOr> DecodeMeshFromBuffer( + DecoderBuffer *in_buffer); + + // Decodes the buffer into a provided geometry. If the geometry is + // incompatible with the encoded data. For example, when |out_geometry| is + // draco::Mesh while the data contains a point cloud, the function will return + // an error status. + Status DecodeBufferToGeometry(DecoderBuffer *in_buffer, + PointCloud *out_geometry); + Status DecodeBufferToGeometry(DecoderBuffer *in_buffer, Mesh *out_geometry); + + // When set, the decoder is going to skip attribute transform for a given + // attribute type. For example for quantized attributes, the decoder would + // skip the dequantization step and the returned geometry would contain an + // attribute with quantized values. The attribute would also contain an + // instance of AttributeTransform class that is used to describe the skipped + // transform, including all parameters that are needed to perform the + // transform manually. + void SetSkipAttributeTransform(GeometryAttribute::Type att_type); + + // Returns the options instance used by the decoder that can be used by users + // to control the decoding process. + DecoderOptions *options() { return &options_; } + + private: + DecoderOptions options_; +}; + +} // namespace draco + +#endif // DRACO_COMPRESSION_DECODE_H_ diff --git a/src/draco/compression/decode_test.cc b/src/draco/compression/decode_test.cc new file mode 100644 index 00000000..0751b99f --- /dev/null +++ b/src/draco/compression/decode_test.cc @@ -0,0 +1,77 @@ +// Copyright 2017 The Draco Authors. +// +// Licensed under the Apache License, Version 2.0 (the "License"); +// you may not use this file except in compliance with the License. +// You may obtain a copy of the License at +// +// http://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an "AS IS" BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// See the License for the specific language governing permissions and +// limitations under the License. +// +#include "draco/compression/decode.h" + +#include +#include +#include + +#include "draco/core/draco_test_base.h" +#include "draco/core/draco_test_utils.h" + +namespace { + +class DecodeTest : public ::testing::Test { + protected: + DecodeTest() {} +}; + +TEST_F(DecodeTest, TestSkipAttributeTransform) { + const std::string file_name = "test_nm_quant.0.9.0.drc"; + // Tests that decoders can successfully skip attribute transform. + std::ifstream input_file(draco::GetTestFileFullPath(file_name), + std::ios::binary); + ASSERT_TRUE(input_file); + + // Read the file stream into a buffer. + std::streampos file_size = 0; + input_file.seekg(0, std::ios::end); + file_size = input_file.tellg() - file_size; + input_file.seekg(0, std::ios::beg); + std::vector data(file_size); + input_file.read(data.data(), file_size); + + ASSERT_FALSE(data.empty()); + + // Create a draco decoding buffer. Note that no data is copied in this step. + draco::DecoderBuffer buffer; + buffer.Init(data.data(), data.size()); + + draco::Decoder decoder; + // Make sure we skip dequantization for the position attribute. + decoder.SetSkipAttributeTransform(draco::GeometryAttribute::POSITION); + + // Decode the input data into a geometry. + std::unique_ptr pc = + decoder.DecodePointCloudFromBuffer(&buffer).value(); + ASSERT_NE(pc, nullptr); + + const draco::PointAttribute *const pos_att = + pc->GetNamedAttribute(draco::GeometryAttribute::POSITION); + ASSERT_NE(pos_att, nullptr); + + // Ensure the position attribute is of type int32_t and that it has a valid + // attribute transform. + ASSERT_EQ(pos_att->data_type(), draco::DT_INT32); + ASSERT_NE(pos_att->GetAttributeTransformData(), nullptr); + + // Normal attribute should be left transformed. + const draco::PointAttribute *const norm_att = + pc->GetNamedAttribute(draco::GeometryAttribute::NORMAL); + ASSERT_EQ(norm_att->data_type(), draco::DT_FLOAT32); + ASSERT_EQ(norm_att->GetAttributeTransformData(), nullptr); +} + +} // namespace diff --git a/src/draco/compression/encode.cc b/src/draco/compression/encode.cc new file mode 100644 index 00000000..0ad9d1cd --- /dev/null +++ b/src/draco/compression/encode.cc @@ -0,0 +1,78 @@ +// Copyright 2016 The Draco Authors. +// +// Licensed under the Apache License, Version 2.0 (the "License"); +// you may not use this file except in compliance with the License. +// You may obtain a copy of the License at +// +// http://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an "AS IS" BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// See the License for the specific language governing permissions and +// limitations under the License. +// +#include "draco/compression/encode.h" + +#include "draco/compression/expert_encode.h" + +namespace draco { + +Encoder::Encoder() {} + +Status Encoder::EncodePointCloudToBuffer(const PointCloud &pc, + EncoderBuffer *out_buffer) { + ExpertEncoder encoder(pc); + encoder.Reset(CreateExpertEncoderOptions(pc)); + return encoder.EncodeToBuffer(out_buffer); +} + +Status Encoder::EncodeMeshToBuffer(const Mesh &m, EncoderBuffer *out_buffer) { + ExpertEncoder encoder(m); + encoder.Reset(CreateExpertEncoderOptions(m)); + return encoder.EncodeToBuffer(out_buffer); +} + +EncoderOptions Encoder::CreateExpertEncoderOptions(const PointCloud &pc) { + EncoderOptions ret_options = EncoderOptions::CreateEmptyOptions(); + ret_options.SetGlobalOptions(options().GetGlobalOptions()); + ret_options.SetFeatureOptions(options().GetFeaturelOptions()); + // Convert type-based attribute options to specific attributes in the provided + // point cloud. + for (int i = 0; i < pc.num_attributes(); ++i) { + const Options *att_options = + options().FindAttributeOptions(pc.attribute(i)->attribute_type()); + if (att_options) { + ret_options.SetAttributeOptions(i, *att_options); + } + } + return ret_options; +} + +void Encoder::Reset( + const EncoderOptionsBase &options) { + Base::Reset(options); +} + +void Encoder::Reset() { Base::Reset(); } + +void Encoder::SetSpeedOptions(int encoding_speed, int decoding_speed) { + Base::SetSpeedOptions(encoding_speed, decoding_speed); +} + +void Encoder::SetAttributeQuantization(GeometryAttribute::Type type, + int quantization_bits) { + options().SetAttributeInt(type, "quantization_bits", quantization_bits); +} + +void Encoder::SetEncodingMethod(int encoding_method) { + Base::SetEncodingMethod(encoding_method); +} + +void Encoder::SetAttributePredictionScheme(GeometryAttribute::Type type, + int prediction_scheme_method) { + options().SetAttributeInt(type, "prediction_scheme", + prediction_scheme_method); +} + +} // namespace draco diff --git a/src/draco/compression/encode.h b/src/draco/compression/encode.h new file mode 100644 index 00000000..78cfa527 --- /dev/null +++ b/src/draco/compression/encode.h @@ -0,0 +1,131 @@ +// Copyright 2016 The Draco Authors. +// +// Licensed under the Apache License, Version 2.0 (the "License"); +// you may not use this file except in compliance with the License. +// You may obtain a copy of the License at +// +// http://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an "AS IS" BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// See the License for the specific language governing permissions and +// limitations under the License. +// +#ifndef DRACO_COMPRESSION_ENCODE_H_ +#define DRACO_COMPRESSION_ENCODE_H_ + +#include "draco/compression/config/compression_shared.h" +#include "draco/compression/config/encoder_options.h" +#include "draco/compression/encode_base.h" +#include "draco/core/encoder_buffer.h" +#include "draco/core/status.h" +#include "draco/mesh/mesh.h" + +namespace draco { + +// Basic helper class for encoding geometry using the Draco compression library. +// The class provides various methods that can be used to control several common +// options used during the encoding, such as the number of quantization bits for +// a given attribute. All these options are defined per attribute type, i.e., +// if there are more attributes of the same type (such as multiple texture +// coordinate attributes), the same options are going to be used for all of the +// attributes of this type. If different attributes of the same type need to +// use different options, use ExpertEncoder in expert_encode.h. +class Encoder + : public EncoderBase> { + public: + typedef EncoderBase> Base; + + Encoder(); + + // Encodes a point cloud to the provided buffer. + Status EncodePointCloudToBuffer(const PointCloud &pc, + EncoderBuffer *out_buffer); + + // Encodes a mesh to the provided buffer. + Status EncodeMeshToBuffer(const Mesh &m, EncoderBuffer *out_buffer); + + // Set encoder options used during the geometry encoding. Note that this call + // overwrites any modifications to the options done with the functions below, + // i.e., it resets the encoder. + void Reset(const EncoderOptionsBase &options); + void Reset(); + + // Sets the desired encoding and decoding speed for the given options. + // + // 0 = slowest speed, but the best compression. + // 10 = fastest, but the worst compression. + // -1 = undefined. + // + // Note that both speed options affect the encoder choice of used methods and + // algorithms. For example, a requirement for fast decoding may prevent the + // encoder from using the best compression methods even if the encoding speed + // is set to 0. In general, the faster of the two options limits the choice of + // features that can be used by the encoder. Additionally, setting + // |decoding_speed| to be faster than the |encoding_speed| may allow the + // encoder to choose the optimal method out of the available features for the + // given |decoding_speed|. + void SetSpeedOptions(int encoding_speed, int decoding_speed); + + // Sets the quantization compression options for a named attribute. The + // attribute values will be quantized in a box defined by the maximum extent + // of the attribute values. I.e., the actual precision of this option depends + // on the scale of the attribute values. + void SetAttributeQuantization(GeometryAttribute::Type type, + int quantization_bits); + + // Sets the desired prediction method for a given attribute. By default, + // prediction scheme is selected automatically by the encoder using other + // provided options (such as speed) and input geometry type (mesh, point + // cloud). This function should be called only when a specific prediction is + // preferred (e.g., when it is known that the encoder would select a less + // optimal prediction for the given input data). + // + // |prediction_scheme_method| should be one of the entries defined in + // compression/config/compression_shared.h : + // + // PREDICTION_NONE - use no prediction. + // PREDICTION_DIFFERENCE - delta coding + // MESH_PREDICTION_PARALLELOGRAM - parallelogram prediction for meshes. + // MESH_PREDICTION_CONSTRAINED_PARALLELOGRAM + // - better and more costly version of the parallelogram prediction. + // MESH_PREDICTION_TEX_COORDS_PORTABLE + // - specialized predictor for tex coordinates. + // MESH_PREDICTION_GEOMETRIC_NORMAL + // - specialized predictor for normal coordinates. + // + // Note that in case the desired prediction cannot be used, the default + // prediction will be automatically used instead. + void SetAttributePredictionScheme(GeometryAttribute::Type type, + int prediction_scheme_method); + + // Sets the desired encoding method for a given geometry. By default, encoding + // method is selected based on the properties of the input geometry and based + // on the other options selected in the used EncoderOptions (such as desired + // encoding and decoding speed). This function should be called only when a + // specific method is required. + // + // |encoding_method| can be one of the values defined in + // compression/config/compression_shared.h based on the type of the input + // geometry that is going to be encoded. For point clouds, allowed entries are + // POINT_CLOUD_SEQUENTIAL_ENCODING + // POINT_CLOUD_KD_TREE_ENCODING + // + // For meshes the input can be + // MESH_SEQUENTIAL_ENCODING + // MESH_EDGEBREAKER_ENCODING + // + // If the selected method cannot be used for the given input, the subsequent + // call of EncodePointCloudToBuffer or EncodeMeshToBuffer is going to fail. + void SetEncodingMethod(int encoding_method); + + private: + // Creates encoder options for the expert encoder used during the actual + // encoding. + EncoderOptions CreateExpertEncoderOptions(const PointCloud &pc); +}; + +} // namespace draco + +#endif // DRACO_COMPRESSION_ENCODE_H_ diff --git a/src/draco/compression/encode_base.h b/src/draco/compression/encode_base.h new file mode 100644 index 00000000..7e1fbf97 --- /dev/null +++ b/src/draco/compression/encode_base.h @@ -0,0 +1,53 @@ +// Copyright 2017 The Draco Authors. +// +// Licensed under the Apache License, Version 2.0 (the "License"); +// you may not use this file except in compliance with the License. +// You may obtain a copy of the License at +// +// http://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an "AS IS" BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// See the License for the specific language governing permissions and +// limitations under the License. +// +#ifndef DRACO_SRC_DRACO_COMPRESSION_ENCODE_BASE_H_ +#define DRACO_SRC_DRACO_COMPRESSION_ENCODE_BASE_H_ + +namespace draco { + +// Base class for our geometry encoder classes. |EncoderOptionsT| specifies +// options class used by the encoder. Please, see encode.h and expert_encode.h +// for more details and method descriptions. +template +class EncoderBase { + public: + typedef EncoderOptionsT OptionsType; + + EncoderBase() : options_(EncoderOptionsT::CreateDefaultOptions()) {} + + const EncoderOptionsT &options() const { return options_; } + + protected: + void Reset(const EncoderOptionsT &options) { options_ = options; } + + void Reset() { options_ = EncoderOptionsT::CreateDefaultOptions(); } + + void SetSpeedOptions(int encoding_speed, int decoding_speed) { + options_.SetSpeed(encoding_speed, decoding_speed); + } + + void SetEncodingMethod(int encoding_method) { + options_.SetGlobalInt("encoding_method", encoding_method); + } + + EncoderOptionsT &options() { return options_; } + + private: + EncoderOptionsT options_; +}; + +} // namespace draco + +#endif // DRACO_SRC_DRACO_COMPRESSION_ENCODE_BASE_H_ diff --git a/src/draco/compression/encode_test.cc b/src/draco/compression/encode_test.cc new file mode 100644 index 00000000..ec984c8e --- /dev/null +++ b/src/draco/compression/encode_test.cc @@ -0,0 +1,127 @@ +// Copyright 2017 The Draco Authors. +// +// Licensed under the Apache License, Version 2.0 (the "License"); +// you may not use this file except in compliance with the License. +// You may obtain a copy of the License at +// +// http://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an "AS IS" BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// See the License for the specific language governing permissions and +// limitations under the License. +// + +#include +#include +#include + +#include "draco/attributes/attribute_quantization_transform.h" +#include "draco/compression/decode.h" +#include "draco/compression/encode.h" +#include "draco/compression/expert_encode.h" +#include "draco/core/draco_test_base.h" +#include "draco/core/draco_test_utils.h" +#include "draco/core/vector_d.h" +#include "draco/mesh/triangle_soup_mesh_builder.h" + +namespace { + +class EncodeTest : public ::testing::Test { + protected: + EncodeTest() {} + std::unique_ptr CreateTestMesh() const { + draco::TriangleSoupMeshBuilder mesh_builder; + + // Create a simple mesh with one face. + mesh_builder.Start(1); + + // Add one position attribute and two texture coordinate attributes. + const int32_t pos_att_id = mesh_builder.AddAttribute( + draco::GeometryAttribute::POSITION, 3, draco::DT_FLOAT32); + const int32_t tex_att_id_0 = mesh_builder.AddAttribute( + draco::GeometryAttribute::TEX_COORD, 2, draco::DT_FLOAT32); + const int32_t tex_att_id_1 = mesh_builder.AddAttribute( + draco::GeometryAttribute::TEX_COORD, 2, draco::DT_FLOAT32); + + // Initialize the attribute values. + mesh_builder.SetAttributeValuesForFace( + pos_att_id, draco::FaceIndex(0), draco::Vector3f(0.f, 0.f, 0.f).data(), + draco::Vector3f(1.f, 0.f, 0.f).data(), + draco::Vector3f(1.f, 1.f, 0.f).data()); + mesh_builder.SetAttributeValuesForFace( + tex_att_id_0, draco::FaceIndex(0), draco::Vector2f(0.f, 0.f).data(), + draco::Vector2f(1.f, 0.f).data(), draco::Vector2f(1.f, 1.f).data()); + mesh_builder.SetAttributeValuesForFace( + tex_att_id_1, draco::FaceIndex(0), draco::Vector2f(0.f, 0.f).data(), + draco::Vector2f(1.f, 0.f).data(), draco::Vector2f(1.f, 1.f).data()); + + return mesh_builder.Finalize(); + } + + int GetQuantizationBitsFromAttribute(const draco::PointAttribute *att) const { + if (att == nullptr) + return -1; + draco::AttributeQuantizationTransform transform; + if (!transform.InitFromAttribute(*att)) + return -1; + return transform.quantization_bits(); + } + + void VerifyNumQuantizationBits(const draco::EncoderBuffer &buffer, + int pos_quantization, + int tex_coord_0_quantization, + int tex_coord_1_quantization) const { + draco::Decoder decoder; + + // Skip the dequantization for the attributes which will allow us to get + // the number of quantization bits used during encoding. + decoder.SetSkipAttributeTransform(draco::GeometryAttribute::POSITION); + decoder.SetSkipAttributeTransform(draco::GeometryAttribute::TEX_COORD); + + draco::DecoderBuffer in_buffer; + in_buffer.Init(buffer.data(), buffer.size()); + auto mesh = decoder.DecodeMeshFromBuffer(&in_buffer).value(); + ASSERT_NE(mesh, nullptr); + ASSERT_EQ(GetQuantizationBitsFromAttribute(mesh->attribute(0)), + pos_quantization); + ASSERT_EQ(GetQuantizationBitsFromAttribute(mesh->attribute(1)), + tex_coord_0_quantization); + ASSERT_EQ(GetQuantizationBitsFromAttribute(mesh->attribute(2)), + tex_coord_1_quantization); + } +}; + +TEST_F(EncodeTest, TestExpertEncoderQuantization) { + // This test verifies that the expert encoder can quantize individual + // attributes even if they have the same type. + auto mesh = CreateTestMesh(); + ASSERT_NE(mesh, nullptr); + + draco::ExpertEncoder encoder(*mesh.get()); + encoder.SetAttributeQuantization(0, 16); // Position quantization. + encoder.SetAttributeQuantization(1, 15); // Tex-coord 0 quantization. + encoder.SetAttributeQuantization(2, 14); // Tex-coord 1 quantization. + + draco::EncoderBuffer buffer; + encoder.EncodeToBuffer(&buffer); + VerifyNumQuantizationBits(buffer, 16, 15, 14); +} + +TEST_F(EncodeTest, TestEncoderQuantization) { + // This test verifies that Encoder applies the same quantization to all + // attributes of the same type. + auto mesh = CreateTestMesh(); + ASSERT_NE(mesh, nullptr); + + draco::Encoder encoder; + encoder.SetAttributeQuantization(draco::GeometryAttribute::POSITION, 16); + encoder.SetAttributeQuantization(draco::GeometryAttribute::TEX_COORD, 15); + + draco::EncoderBuffer buffer; + encoder.EncodeMeshToBuffer(*mesh.get(), &buffer); + VerifyNumQuantizationBits(buffer, 16, 15, 15); +} + +} // namespace diff --git a/src/draco/compression/expert_encode.cc b/src/draco/compression/expert_encode.cc new file mode 100644 index 00000000..87c472f8 --- /dev/null +++ b/src/draco/compression/expert_encode.cc @@ -0,0 +1,133 @@ +// Copyright 2017 The Draco Authors. +// +// Licensed under the Apache License, Version 2.0 (the "License"); +// you may not use this file except in compliance with the License. +// You may obtain a copy of the License at +// +// http://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an "AS IS" BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// See the License for the specific language governing permissions and +// limitations under the License. +// +#include "draco/compression/expert_encode.h" + +#include "draco/compression/mesh/mesh_edgebreaker_encoder.h" +#include "draco/compression/mesh/mesh_sequential_encoder.h" +#include "draco/compression/point_cloud/point_cloud_kd_tree_encoder.h" +#include "draco/compression/point_cloud/point_cloud_sequential_encoder.h" + +namespace draco { + +ExpertEncoder::ExpertEncoder(const PointCloud &point_cloud) + : point_cloud_(&point_cloud), mesh_(nullptr) {} + +ExpertEncoder::ExpertEncoder(const Mesh &mesh) + : point_cloud_(&mesh), mesh_(&mesh) {} + +Status ExpertEncoder::EncodeToBuffer(EncoderBuffer *out_buffer) { + if (point_cloud_ == nullptr) + return Status(Status::ERROR, "Invalid input geometry."); + if (mesh_ == nullptr) { + return EncodePointCloudToBuffer(*point_cloud_, out_buffer); + } + return EncodeMeshToBuffer(*mesh_, out_buffer); +} + +Status ExpertEncoder::EncodePointCloudToBuffer(const PointCloud &pc, + EncoderBuffer *out_buffer) { + std::unique_ptr encoder; + const int encoding_method = options().GetGlobalInt("encoding_method", -1); + if (encoding_method == POINT_CLOUD_KD_TREE_ENCODING || + (options().GetSpeed() < 10 && pc.num_attributes() == 1)) { + const PointAttribute *const att = pc.attribute(0); + bool create_kd_tree_encoder = true; + // Kd-Tree encoder can be currently used only under following conditions: + // - Point cloud has one attribute describing positions + // - Position is described by three components (x,y,z) + // - Position data type is one of the following: + // -float32 and quantization is enabled + // -uint32 + if (att->attribute_type() != GeometryAttribute::POSITION || + att->num_components() != 3) + create_kd_tree_encoder = false; + if (create_kd_tree_encoder && att->data_type() != DT_FLOAT32 && + att->data_type() != DT_UINT32) + create_kd_tree_encoder = false; + if (create_kd_tree_encoder && att->data_type() == DT_FLOAT32 && + options().GetAttributeInt(0, "quantization_bits", -1) <= 0) + create_kd_tree_encoder = false; // Quantization not enabled. + if (create_kd_tree_encoder) { + // Create kD-tree encoder (all checks passed). + encoder = + std::unique_ptr(new PointCloudKdTreeEncoder()); + } else if (encoding_method == POINT_CLOUD_KD_TREE_ENCODING) { + // Encoding method was explicitly specified but we cannot use it for the + // given input (some of the checks above failed). + return Status(Status::ERROR, "Invalid encoding method."); + } + } + if (!encoder) { + // Default choice. + encoder = + std::unique_ptr(new PointCloudSequentialEncoder()); + } + encoder->SetPointCloud(pc); + return encoder->Encode(options(), out_buffer); +} + +Status ExpertEncoder::EncodeMeshToBuffer(const Mesh &m, + EncoderBuffer *out_buffer) { + std::unique_ptr encoder; + // Select the encoding method only based on the provided options. + int encoding_method = options().GetGlobalInt("encoding_method", -1); + if (encoding_method == -1) { + // For now select the edgebreaker for all options expect of speed 10 + if (options().GetSpeed() == 10) { + encoding_method = MESH_SEQUENTIAL_ENCODING; + } else { + encoding_method = MESH_EDGEBREAKER_ENCODING; + } + } + if (encoding_method == MESH_EDGEBREAKER_ENCODING) { + encoder = std::unique_ptr(new MeshEdgeBreakerEncoder()); + } else { + encoder = std::unique_ptr(new MeshSequentialEncoder()); + } + encoder->SetMesh(m); + return encoder->Encode(options(), out_buffer); +} + +void ExpertEncoder::Reset(const EncoderOptions &options) { + Base::Reset(options); +} + +void ExpertEncoder::Reset() { Base::Reset(); } + +void ExpertEncoder::SetSpeedOptions(int encoding_speed, int decoding_speed) { + Base::SetSpeedOptions(encoding_speed, decoding_speed); +} + +void ExpertEncoder::SetAttributeQuantization(int32_t attribute_id, + int quantization_bits) { + options().SetAttributeInt(attribute_id, "quantization_bits", + quantization_bits); +} + +void ExpertEncoder::SetUseBuiltInAttributeCompression(bool enabled) { + options().SetGlobalBool("use_built_in_attribute_compression", enabled); +} + +void ExpertEncoder::SetEncodingMethod(int encoding_method) { + Base::SetEncodingMethod(encoding_method); +} + +void ExpertEncoder::SetAttributePredictionScheme(int32_t attribute_id, + int prediction_scheme_method) { + options().SetAttributeInt(attribute_id, "prediction_scheme", + prediction_scheme_method); +} + +} // namespace draco diff --git a/src/draco/compression/expert_encode.h b/src/draco/compression/expert_encode.h new file mode 100644 index 00000000..1b5c944d --- /dev/null +++ b/src/draco/compression/expert_encode.h @@ -0,0 +1,132 @@ +// Copyright 2017 The Draco Authors. +// +// Licensed under the Apache License, Version 2.0 (the "License"); +// you may not use this file except in compliance with the License. +// You may obtain a copy of the License at +// +// http://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an "AS IS" BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// See the License for the specific language governing permissions and +// limitations under the License. +// +#ifndef DRACO_SRC_DRACO_COMPRESSION_EXPERT_ENCODE_H_ +#define DRACO_SRC_DRACO_COMPRESSION_EXPERT_ENCODE_H_ + +#include "draco/compression/config/compression_shared.h" +#include "draco/compression/config/encoder_options.h" +#include "draco/compression/encode_base.h" +#include "draco/core/encoder_buffer.h" +#include "draco/core/status.h" +#include "draco/mesh/mesh.h" + +namespace draco { + +// Advanced helper class for encoding geometry using the Draco compression +// library. Unlike the basic Encoder (encode.h), this class allows users to +// specify options for each attribute individually using provided attribute ids. +// The drawback of this encoder is that it can be used to encode only one model +// at a time, and for each new model the options need to be set again, +class ExpertEncoder : public EncoderBase { + public: + typedef EncoderBase Base; + typedef EncoderOptions OptionsType; + + ExpertEncoder(const PointCloud &point_cloud); + ExpertEncoder(const Mesh &mesh); + + // Encodes the geometry provided in the constructor to the target buffer. + Status EncodeToBuffer(EncoderBuffer *out_buffer); + + // Set encoder options used during the geometry encoding. Note that this call + // overwrites any modifications to the options done with the functions below. + void Reset(const EncoderOptions &options); + void Reset(); + + // Sets the desired encoding and decoding speed for the given options. + // + // 0 = slowest speed, but the best compression. + // 10 = fastest, but the worst compression. + // -1 = undefined. + // + // Note that both speed options affect the encoder choice of used methods and + // algorithms. For example, a requirement for fast decoding may prevent the + // encoder from using the best compression methods even if the encoding speed + // is set to 0. In general, the faster of the two options limits the choice of + // features that can be used by the encoder. Additionally, setting + // |decoding_speed| to be faster than the |encoding_speed| may allow the + // encoder to choose the optimal method out of the available features for the + // given |decoding_speed|. + void SetSpeedOptions(int encoding_speed, int decoding_speed); + + // Sets the quantization compression options for a specific attribute. The + // attribute values will be quantized in a box defined by the maximum extent + // of the attribute values. I.e., the actual precision of this option depends + // on the scale of the attribute values. + void SetAttributeQuantization(int32_t attribute_id, int quantization_bits); + + // Enables/disables built in entropy coding of attribute values. Disabling + // this option may be useful to improve the performance when third party + // compression is used on top of the Draco compression. Default: [true]. + void SetUseBuiltInAttributeCompression(bool enabled); + + // Sets the desired encoding method for a given geometry. By default, encoding + // method is selected based on the properties of the input geometry and based + // on the other options selected in the used EncoderOptions (such as desired + // encoding and decoding speed). This function should be called only when a + // specific method is required. + // + // |encoding_method| can be one of the values defined in + // compression/config/compression_shared.h based on the type of the input + // geometry that is going to be encoded. For point clouds, allowed entries are + // POINT_CLOUD_SEQUENTIAL_ENCODING + // POINT_CLOUD_KD_TREE_ENCODING + // + // For meshes the input can be + // MESH_SEQUENTIAL_ENCODING + // MESH_EDGEBREAKER_ENCODING + // + // If the selected method cannot be used for the given input, the subsequent + // call of EncodePointCloudToBuffer or EncodeMeshToBuffer is going to fail. + void SetEncodingMethod(int encoding_method); + + // Sets the desired prediction method for a given attribute. By default, + // prediction scheme is selected automatically by the encoder using other + // provided options (such as speed) and input geometry type (mesh, point + // cloud). This function should be called only when a specific prediction is + // preferred (e.g., when it is known that the encoder would select a less + // optimal prediction for the given input data). + // + // |prediction_scheme_method| should be one of the entries defined in + // compression/config/compression_shared.h : + // + // PREDICTION_NONE - use no prediction. + // PREDICTION_DIFFERENCE - delta coding + // MESH_PREDICTION_PARALLELOGRAM - parallelogram prediction for meshes. + // MESH_PREDICTION_CONSTRAINED_PARALLELOGRAM + // - better and more costly version of the parallelogram prediction. + // MESH_PREDICTION_TEX_COORDS_PORTABLE + // - specialized predictor for tex coordinates. + // MESH_PREDICTION_GEOMETRIC_NORMAL + // - specialized predictor for normal coordinates. + // + // Note that in case the desired prediction cannot be used, the default + // prediction will be automatically used instead. + void SetAttributePredictionScheme(int32_t attribute_id, + int prediction_scheme_method); + + private: + Status EncodePointCloudToBuffer(const PointCloud &pc, + EncoderBuffer *out_buffer); + + Status EncodeMeshToBuffer(const Mesh &m, EncoderBuffer *out_buffer); + + const PointCloud *point_cloud_; + const Mesh *mesh_; +}; + +} // namespace draco + +#endif // DRACO_SRC_DRACO_COMPRESSION_EXPERT_ENCODE_H_ diff --git a/compression/mesh/mesh_decoder.cc b/src/draco/compression/mesh/mesh_decoder.cc similarity index 78% rename from compression/mesh/mesh_decoder.cc rename to src/draco/compression/mesh/mesh_decoder.cc index 82a77a77..01913dcd 100644 --- a/compression/mesh/mesh_decoder.cc +++ b/src/draco/compression/mesh/mesh_decoder.cc @@ -12,15 +12,16 @@ // See the License for the specific language governing permissions and // limitations under the License. // -#include "compression/mesh/mesh_decoder.h" +#include "draco/compression/mesh/mesh_decoder.h" namespace draco { MeshDecoder::MeshDecoder() : mesh_(nullptr) {} -bool MeshDecoder::Decode(DecoderBuffer *in_buffer, Mesh *out_mesh) { +Status MeshDecoder::Decode(const DecoderOptions &options, + DecoderBuffer *in_buffer, Mesh *out_mesh) { mesh_ = out_mesh; - return PointCloudDecoder::Decode(in_buffer, out_mesh); + return PointCloudDecoder::Decode(options, in_buffer, out_mesh); } bool MeshDecoder::DecodeGeometryData() { diff --git a/compression/mesh/mesh_decoder.h b/src/draco/compression/mesh/mesh_decoder.h similarity index 84% rename from compression/mesh/mesh_decoder.h rename to src/draco/compression/mesh/mesh_decoder.h index 6138bea7..397a679d 100644 --- a/compression/mesh/mesh_decoder.h +++ b/src/draco/compression/mesh/mesh_decoder.h @@ -15,10 +15,10 @@ #ifndef DRACO_COMPRESSION_MESH_MESH_DECODER_H_ #define DRACO_COMPRESSION_MESH_MESH_DECODER_H_ -#include "compression/attributes/mesh_attribute_indices_encoding_data.h" -#include "compression/point_cloud/point_cloud_decoder.h" -#include "mesh/mesh.h" -#include "mesh/mesh_attribute_corner_table.h" +#include "draco/compression/attributes/mesh_attribute_indices_encoding_data.h" +#include "draco/compression/point_cloud/point_cloud_decoder.h" +#include "draco/mesh/mesh.h" +#include "draco/mesh/mesh_attribute_corner_table.h" namespace draco { @@ -33,7 +33,8 @@ class MeshDecoder : public PointCloudDecoder { } // The main entry point for mesh decoding. - bool Decode(DecoderBuffer *in_buffer, Mesh *out_mesh); + Status Decode(const DecoderOptions &options, DecoderBuffer *in_buffer, + Mesh *out_mesh); // Returns the base connectivity of the decoded mesh (or nullptr if it is not // initialized). diff --git a/compression/mesh/mesh_decoder_helpers.h b/src/draco/compression/mesh/mesh_decoder_helpers.h similarity index 98% rename from compression/mesh/mesh_decoder_helpers.h rename to src/draco/compression/mesh/mesh_decoder_helpers.h index adcbf922..12ac46b3 100644 --- a/compression/mesh/mesh_decoder_helpers.h +++ b/src/draco/compression/mesh/mesh_decoder_helpers.h @@ -15,7 +15,7 @@ #ifndef DRACO_COMPRESSION_MESH_MESH_DECODER_HELPERS_H_ #define DRACO_COMPRESSION_MESH_MESH_DECODER_HELPERS_H_ -#include "compression/mesh/mesh_decoder.h" +#include "draco/compression/mesh/mesh_decoder.h" namespace draco { diff --git a/compression/mesh/mesh_edgebreaker_decoder.cc b/src/draco/compression/mesh/mesh_edgebreaker_decoder.cc similarity index 87% rename from compression/mesh/mesh_edgebreaker_decoder.cc rename to src/draco/compression/mesh/mesh_edgebreaker_decoder.cc index 16424d31..2350fd27 100644 --- a/compression/mesh/mesh_edgebreaker_decoder.cc +++ b/src/draco/compression/mesh/mesh_edgebreaker_decoder.cc @@ -12,10 +12,10 @@ // See the License for the specific language governing permissions and // limitations under the License. // -#include "compression/mesh/mesh_edgebreaker_decoder.h" -#include "compression/mesh/mesh_edgebreaker_decoder_impl.h" -#include "compression/mesh/mesh_edgebreaker_traversal_predictive_decoder.h" -#include "compression/mesh/mesh_edgebreaker_traversal_valence_decoder.h" +#include "draco/compression/mesh/mesh_edgebreaker_decoder.h" +#include "draco/compression/mesh/mesh_edgebreaker_decoder_impl.h" +#include "draco/compression/mesh/mesh_edgebreaker_traversal_predictive_decoder.h" +#include "draco/compression/mesh/mesh_edgebreaker_traversal_valence_decoder.h" namespace draco { diff --git a/compression/mesh/mesh_edgebreaker_decoder.h b/src/draco/compression/mesh/mesh_edgebreaker_decoder.h similarity index 92% rename from compression/mesh/mesh_edgebreaker_decoder.h rename to src/draco/compression/mesh/mesh_edgebreaker_decoder.h index 484e99e3..8e285983 100644 --- a/compression/mesh/mesh_edgebreaker_decoder.h +++ b/src/draco/compression/mesh/mesh_edgebreaker_decoder.h @@ -15,8 +15,8 @@ #ifndef DRACO_COMPRESSION_MESH_MESH_EDGEBREAKER_DECODER_H_ #define DRACO_COMPRESSION_MESH_MESH_EDGEBREAKER_DECODER_H_ -#include "compression/mesh/mesh_decoder.h" -#include "compression/mesh/mesh_edgebreaker_decoder_impl_interface.h" +#include "draco/compression/mesh/mesh_decoder.h" +#include "draco/compression/mesh/mesh_edgebreaker_decoder_impl_interface.h" namespace draco { diff --git a/compression/mesh/mesh_edgebreaker_decoder_impl.cc b/src/draco/compression/mesh/mesh_edgebreaker_decoder_impl.cc similarity index 91% rename from compression/mesh/mesh_edgebreaker_decoder_impl.cc rename to src/draco/compression/mesh/mesh_edgebreaker_decoder_impl.cc index 48b544fb..7e6a3cd4 100644 --- a/compression/mesh/mesh_edgebreaker_decoder_impl.cc +++ b/src/draco/compression/mesh/mesh_edgebreaker_decoder_impl.cc @@ -12,25 +12,25 @@ // See the License for the specific language governing permissions and // limitations under the License. // -#include "compression/mesh/mesh_edgebreaker_decoder_impl.h" +#include "draco/compression/mesh/mesh_edgebreaker_decoder_impl.h" #include -#include "compression/attributes/mesh_attribute_indices_encoding_observer.h" -#include "compression/attributes/sequential_attribute_decoders_controller.h" -#include "compression/mesh/mesh_edgebreaker_decoder.h" -#include "compression/mesh/mesh_edgebreaker_traversal_predictive_decoder.h" -#include "compression/mesh/mesh_edgebreaker_traversal_valence_decoder.h" -#include "mesh/corner_table_traversal_processor.h" -#include "mesh/edgebreaker_traverser.h" -#include "mesh/prediction_degree_traverser.h" +#include "draco/compression/attributes/mesh_attribute_indices_encoding_observer.h" +#include "draco/compression/attributes/sequential_attribute_decoders_controller.h" +#include "draco/compression/mesh/mesh_edgebreaker_decoder.h" +#include "draco/compression/mesh/mesh_edgebreaker_traversal_predictive_decoder.h" +#include "draco/compression/mesh/mesh_edgebreaker_traversal_valence_decoder.h" +#include "draco/mesh/corner_table_traversal_processor.h" +#include "draco/mesh/edgebreaker_traverser.h" +#include "draco/mesh/prediction_degree_traverser.h" namespace draco { // Types of "free" edges that are used during topology decoding. // A free edge is an edge that is connected to one face only. // All edge types are stored in the opposite_corner_id_ array, where each -// edge "e" is uniquely identified by the the opposite corner "C" in its parent +// edge "e" is uniquely identified by the opposite corner "C" in its parent // triangle: // * // /C\ @@ -65,9 +65,9 @@ MeshEdgeBreakerDecoderImpl::GetAttributeCornerTable( const int decoder_id = attribute_data_[i].decoder_id; if (decoder_id < 0 || decoder_id >= decoder_->num_attributes_decoders()) continue; - const AttributesDecoder *const dec = + const AttributesDecoderInterface *const dec = decoder_->attributes_decoder(decoder_id); - for (int j = 0; j < dec->num_attributes(); ++j) { + for (int j = 0; j < dec->GetNumAttributes(); ++j) { if (dec->GetAttributeId(j) == att_id) { if (attribute_data_[i].is_connectivity_used) return &attribute_data_[i].connectivity_data; @@ -86,9 +86,9 @@ MeshEdgeBreakerDecoderImpl::GetAttributeEncodingData( const int decoder_id = attribute_data_[i].decoder_id; if (decoder_id < 0 || decoder_id >= decoder_->num_attributes_decoders()) continue; - const AttributesDecoder *const dec = + const AttributesDecoderInterface *const dec = decoder_->attributes_decoder(decoder_id); - for (int j = 0; j < dec->num_attributes(); ++j) { + for (int j = 0; j < dec->GetNumAttributes(); ++j) { if (dec->GetAttributeId(j) == att_id) return &attribute_data_[i].encoding_data; } @@ -220,18 +220,33 @@ bool MeshEdgeBreakerDecoderImpl::DecodeConnectivity() { num_new_vertices_ = 0; new_to_parent_vertex_map_.clear(); uint32_t num_new_verts; - if (!decoder_->buffer()->Decode(&num_new_verts)) - return false; + if (decoder_->bitstream_version() < DRACO_BITSTREAM_VERSION(2, 0)) { + if (!decoder_->buffer()->Decode(&num_new_verts)) + return false; + } else { + if (!DecodeVarint(&num_new_verts, decoder_->buffer())) + return false; + } num_new_vertices_ = num_new_verts; uint32_t num_encoded_vertices; - if (!decoder_->buffer()->Decode(&num_encoded_vertices)) - return false; + if (decoder_->bitstream_version() < DRACO_BITSTREAM_VERSION(2, 0)) { + if (!decoder_->buffer()->Decode(&num_encoded_vertices)) + return false; + } else { + if (!DecodeVarint(&num_encoded_vertices, decoder_->buffer())) + return false; + } num_encoded_vertices_ = num_encoded_vertices; uint32_t num_faces; - if (!decoder_->buffer()->Decode(&num_faces)) - return false; + if (decoder_->bitstream_version() < DRACO_BITSTREAM_VERSION(2, 0)) { + if (!decoder_->buffer()->Decode(&num_faces)) + return false; + } else { + if (!DecodeVarint(&num_faces, decoder_->buffer())) + return false; + } // Decode topology (connectivity). vertex_traversal_length_.clear(); @@ -265,8 +280,13 @@ bool MeshEdgeBreakerDecoderImpl::DecodeConnectivity() { attribute_data_.resize(num_attribute_data); uint32_t num_encoded_symbols; - if (!decoder_->buffer()->Decode(&num_encoded_symbols)) - return false; + if (decoder_->bitstream_version() < DRACO_BITSTREAM_VERSION(2, 0)) { + if (!decoder_->buffer()->Decode(&num_encoded_symbols)) + return false; + } else { + if (!DecodeVarint(&num_encoded_symbols, decoder_->buffer())) + return false; + } if (num_faces < num_encoded_symbols) { // Number of faces needs to be the same or greater than the number of @@ -276,8 +296,13 @@ bool MeshEdgeBreakerDecoderImpl::DecodeConnectivity() { } uint32_t num_encoded_split_symbols; - if (!decoder_->buffer()->Decode(&num_encoded_split_symbols)) - return false; + if (decoder_->bitstream_version() < DRACO_BITSTREAM_VERSION(2, 0)) { + if (!decoder_->buffer()->Decode(&num_encoded_split_symbols)) + return false; + } else { + if (!DecodeVarint(&num_encoded_split_symbols, decoder_->buffer())) + return false; + } // Start with all vertices marked as holes (boundaries). // Only vertices decoded with TOPOLOGY_C symbol (and the initial face) will @@ -287,11 +312,18 @@ bool MeshEdgeBreakerDecoderImpl::DecodeConnectivity() { is_vert_hole_.assign(num_encoded_vertices_ + num_encoded_split_symbols, true); uint32_t encoded_connectivity_size; - decoder_->buffer()->Decode(&encoded_connectivity_size); + if (decoder_->bitstream_version() < DRACO_BITSTREAM_VERSION(2, 0)) { + if (!decoder_->buffer()->Decode(&encoded_connectivity_size)) + return false; + } else { + if (!DecodeVarint(&encoded_connectivity_size, decoder_->buffer())) + return false; + } DecoderBuffer event_buffer; event_buffer.Init( decoder_->buffer()->data_head() + encoded_connectivity_size, - decoder_->buffer()->remaining_size() - encoded_connectivity_size); + decoder_->buffer()->remaining_size() - encoded_connectivity_size, + decoder_->buffer()->bitstream_version()); // Decode hole and topology split events. int32_t topology_split_decoded_bytes = DecodeHoleAndTopologySplitEvents(&event_buffer); @@ -312,7 +344,8 @@ bool MeshEdgeBreakerDecoderImpl::DecodeConnectivity() { // Set the main buffer to the end of the traversal. decoder_->buffer()->Init(traversal_end_buffer.data_head(), - traversal_end_buffer.remaining_size()); + traversal_end_buffer.remaining_size(), + decoder_->buffer()->bitstream_version()); // Skip topology split data that was already decoded earlier. decoder_->buffer()->Advance(topology_split_decoded_bytes); @@ -335,7 +368,7 @@ bool MeshEdgeBreakerDecoderImpl::DecodeConnectivity() { } // Decode attribute connectivity. - // Prepare data structure for decoding non-position attribute connectivites. + // Prepare data structure for decoding non-position attribute connectivity. for (uint32_t i = 0; i < attribute_data_.size(); ++i) { attribute_data_[i].connectivity_data.InitEmpty(corner_table_.get()); // Add all seams. @@ -419,6 +452,8 @@ int MeshEdgeBreakerDecoderImpl::DecodeConnectivity( // Find the corner "b" from the corner "a" which is the corner on the // top of the active stack. + if (active_corner_stack.empty()) + return -1; const CornerIndex corner_a = active_corner_stack.back(); CornerIndex corner_b = corner_table_->Previous(corner_a); while (corner_table_->Opposite(corner_b) >= 0) { @@ -458,6 +493,8 @@ int MeshEdgeBreakerDecoderImpl::DecodeConnectivity( // . . // . . // * + if (active_corner_stack.empty()) + return -1; const CornerIndex corner_a = active_corner_stack.back(); // First corner on the new face is either corner "l" or "r". @@ -492,6 +529,8 @@ int MeshEdgeBreakerDecoderImpl::DecodeConnectivity( // \ / S \ / // *.......* // + if (active_corner_stack.empty()) + return -1; const CornerIndex corner_b = active_corner_stack.back(); active_corner_stack.pop_back(); @@ -502,6 +541,8 @@ int MeshEdgeBreakerDecoderImpl::DecodeConnectivity( // Topology split event. Move the retrieved edge to the stack. active_corner_stack.push_back(it->second); } + if (active_corner_stack.empty()) + return -1; const CornerIndex corner_a = active_corner_stack.back(); // First corner on the new face is corner "x" from the image above. const CornerIndex corner(3 * face.value()); @@ -671,8 +712,13 @@ MeshEdgeBreakerDecoderImpl::DecodeHoleAndTopologySplitEvents( DecoderBuffer *decoder_buffer) { // Prepare a new decoder from the provided buffer offset. uint32_t num_topology_splits; - if (!decoder_buffer->Decode(&num_topology_splits)) - return -1; + if (decoder_->bitstream_version() < DRACO_BITSTREAM_VERSION(2, 0)) { + if (!decoder_buffer->Decode(&num_topology_splits)) + return -1; + } else { + if (!DecodeVarint(&num_topology_splits, decoder_buffer)) + return -1; + } if (num_topology_splits > 0) { if (decoder_->bitstream_version() >= DRACO_BITSTREAM_VERSION(1, 2)) { // Decode source and split symbol ids using delta and varint coding. See @@ -716,8 +762,13 @@ MeshEdgeBreakerDecoderImpl::DecodeHoleAndTopologySplitEvents( } } uint32_t num_hole_events; - if (!decoder_buffer->Decode(&num_hole_events)) - return -1; + if (decoder_->bitstream_version() < DRACO_BITSTREAM_VERSION(2, 0)) { + if (!decoder_buffer->Decode(&num_hole_events)) + return -1; + } else { + if (!DecodeVarint(&num_hole_events, decoder_buffer)) + return -1; + } if (num_hole_events > 0) { if (decoder_->bitstream_version() >= DRACO_BITSTREAM_VERSION(1, 2)) { // Decode hole symbol ids using delta and varint coding. diff --git a/compression/mesh/mesh_edgebreaker_decoder_impl.h b/src/draco/compression/mesh/mesh_edgebreaker_decoder_impl.h similarity index 93% rename from compression/mesh/mesh_edgebreaker_decoder_impl.h rename to src/draco/compression/mesh/mesh_edgebreaker_decoder_impl.h index 08faeeff..72967891 100644 --- a/compression/mesh/mesh_edgebreaker_decoder_impl.h +++ b/src/draco/compression/mesh/mesh_edgebreaker_decoder_impl.h @@ -18,13 +18,13 @@ #include #include -#include "compression/attributes/mesh_attribute_indices_encoding_data.h" -#include "compression/attributes/mesh_traversal_sequencer.h" -#include "compression/mesh/mesh_edgebreaker_decoder_impl_interface.h" -#include "compression/mesh/mesh_edgebreaker_shared.h" -#include "core/decoder_buffer.h" -#include "mesh/corner_table.h" -#include "mesh/mesh_attribute_corner_table.h" +#include "draco/compression/attributes/mesh_attribute_indices_encoding_data.h" +#include "draco/compression/attributes/mesh_traversal_sequencer.h" +#include "draco/compression/mesh/mesh_edgebreaker_decoder_impl_interface.h" +#include "draco/compression/mesh/mesh_edgebreaker_shared.h" +#include "draco/core/decoder_buffer.h" +#include "draco/mesh/corner_table.h" +#include "draco/mesh/mesh_attribute_corner_table.h" namespace draco { @@ -72,7 +72,7 @@ class MeshEdgeBreakerDecoderImpl : public MeshEdgeBreakerDecoderImplInterface { std::unique_ptr CreateVertexTraversalSequencer( MeshAttributeIndicesEncodingData *encoding_data); - // Decodes connectivty between vertices (vertex indices). + // Decodes connectivity between vertices (vertex indices). // Returns the number of vertices created by the decoder or -1 on error. int DecodeConnectivity(int num_symbols); @@ -109,7 +109,7 @@ class MeshEdgeBreakerDecoderImpl : public MeshEdgeBreakerDecoderImplInterface { // Returns the number of parsed bytes, or -1 on error. int32_t DecodeHoleAndTopologySplitEvents(DecoderBuffer *decoder_buffer); - // Decodes all non-position attribute connectivities on the currently + // Decodes all non-position attribute connectivity on the currently // processed face. bool DecodeAttributeConnectivitiesOnFace(CornerIndex corner); @@ -118,7 +118,7 @@ class MeshEdgeBreakerDecoderImpl : public MeshEdgeBreakerDecoderImplInterface { bool IsFaceVisited(CornerIndex corner_id) const { if (corner_id < 0) - return true; // Invalid corner signalises that the face does not exist. + return true; // Invalid corner signalizes that the face does not exist. return visited_faces_[corner_table_->Face(corner_id).value()]; } diff --git a/compression/mesh/mesh_edgebreaker_decoder_impl_interface.h b/src/draco/compression/mesh/mesh_edgebreaker_decoder_impl_interface.h similarity index 93% rename from compression/mesh/mesh_edgebreaker_decoder_impl_interface.h rename to src/draco/compression/mesh/mesh_edgebreaker_decoder_impl_interface.h index 2845b594..b8dd7953 100644 --- a/compression/mesh/mesh_edgebreaker_decoder_impl_interface.h +++ b/src/draco/compression/mesh/mesh_edgebreaker_decoder_impl_interface.h @@ -15,8 +15,8 @@ #ifndef DRACO_COMPRESSION_MESH_MESH_EDGEBREAKER_DECODER_IMPL_INTERFACE_H_ #define DRACO_COMPRESSION_MESH_MESH_EDGEBREAKER_DECODER_IMPL_INTERFACE_H_ -#include "compression/attributes/mesh_attribute_indices_encoding_data.h" -#include "mesh/mesh_attribute_corner_table.h" +#include "draco/compression/attributes/mesh_attribute_indices_encoding_data.h" +#include "draco/mesh/mesh_attribute_corner_table.h" namespace draco { diff --git a/compression/mesh/mesh_edgebreaker_encoder.cc b/src/draco/compression/mesh/mesh_edgebreaker_encoder.cc similarity index 89% rename from compression/mesh/mesh_edgebreaker_encoder.cc rename to src/draco/compression/mesh/mesh_edgebreaker_encoder.cc index ca5c9e49..6f148004 100644 --- a/compression/mesh/mesh_edgebreaker_encoder.cc +++ b/src/draco/compression/mesh/mesh_edgebreaker_encoder.cc @@ -12,11 +12,11 @@ // See the License for the specific language governing permissions and // limitations under the License. // -#include "compression/mesh/mesh_edgebreaker_encoder.h" +#include "draco/compression/mesh/mesh_edgebreaker_encoder.h" -#include "compression/mesh/mesh_edgebreaker_encoder_impl.h" -#include "compression/mesh/mesh_edgebreaker_traversal_predictive_encoder.h" -#include "compression/mesh/mesh_edgebreaker_traversal_valence_encoder.h" +#include "draco/compression/mesh/mesh_edgebreaker_encoder_impl.h" +#include "draco/compression/mesh/mesh_edgebreaker_traversal_predictive_encoder.h" +#include "draco/compression/mesh/mesh_edgebreaker_traversal_valence_encoder.h" namespace draco { diff --git a/compression/mesh/mesh_edgebreaker_encoder.h b/src/draco/compression/mesh/mesh_edgebreaker_encoder.h similarity index 91% rename from compression/mesh/mesh_edgebreaker_encoder.h rename to src/draco/compression/mesh/mesh_edgebreaker_encoder.h index c4b5403e..50c79219 100644 --- a/compression/mesh/mesh_edgebreaker_encoder.h +++ b/src/draco/compression/mesh/mesh_edgebreaker_encoder.h @@ -17,10 +17,10 @@ #include -#include "compression/mesh/mesh_edgebreaker_encoder_impl_interface.h" -#include "compression/mesh/mesh_edgebreaker_shared.h" -#include "compression/mesh/mesh_encoder.h" -#include "mesh/corner_table.h" +#include "draco/compression/mesh/mesh_edgebreaker_encoder_impl_interface.h" +#include "draco/compression/mesh/mesh_edgebreaker_shared.h" +#include "draco/compression/mesh/mesh_encoder.h" +#include "draco/mesh/corner_table.h" namespace draco { diff --git a/compression/mesh/mesh_edgebreaker_encoder_impl.cc b/src/draco/compression/mesh/mesh_edgebreaker_encoder_impl.cc similarity index 95% rename from compression/mesh/mesh_edgebreaker_encoder_impl.cc rename to src/draco/compression/mesh/mesh_edgebreaker_encoder_impl.cc index e593b726..75e3978f 100644 --- a/compression/mesh/mesh_edgebreaker_encoder_impl.cc +++ b/src/draco/compression/mesh/mesh_edgebreaker_encoder_impl.cc @@ -12,20 +12,20 @@ // See the License for the specific language governing permissions and // limitations under the License. // -#include "compression/mesh/mesh_edgebreaker_encoder_impl.h" +#include "draco/compression/mesh/mesh_edgebreaker_encoder_impl.h" #include -#include "compression/attributes/mesh_attribute_indices_encoding_observer.h" -#include "compression/attributes/sequential_attribute_encoders_controller.h" -#include "compression/mesh/mesh_edgebreaker_encoder.h" -#include "compression/mesh/mesh_edgebreaker_traversal_predictive_encoder.h" -#include "compression/mesh/mesh_edgebreaker_traversal_valence_encoder.h" -#include "mesh/corner_table_iterators.h" -#include "mesh/corner_table_traversal_processor.h" -#include "mesh/edgebreaker_traverser.h" -#include "mesh/mesh_misc_functions.h" -#include "mesh/prediction_degree_traverser.h" +#include "draco/compression/attributes/mesh_attribute_indices_encoding_observer.h" +#include "draco/compression/attributes/sequential_attribute_encoders_controller.h" +#include "draco/compression/mesh/mesh_edgebreaker_encoder.h" +#include "draco/compression/mesh/mesh_edgebreaker_traversal_predictive_encoder.h" +#include "draco/compression/mesh/mesh_edgebreaker_traversal_valence_encoder.h" +#include "draco/mesh/corner_table_iterators.h" +#include "draco/mesh/corner_table_traversal_processor.h" +#include "draco/mesh/edgebreaker_traverser.h" +#include "draco/mesh/mesh_misc_functions.h" +#include "draco/mesh/prediction_degree_traverser.h" namespace draco { @@ -244,7 +244,7 @@ bool MeshEdgeBreakerEncoderImpl::EncodeConnectivity() { // new and original vertices later because their order (and ids) may change // during the encoding. const uint32_t num_new_vertices = corner_table_->NumNewVertices(); - encoder_->buffer()->Encode(num_new_vertices); + EncodeVarint(num_new_vertices, encoder_->buffer()); // Also encode the total number of vertices that is going to be encoded. // This can be different from the mesh_->num_points() + num_new_vertices, @@ -253,11 +253,11 @@ bool MeshEdgeBreakerEncoderImpl::EncodeConnectivity() { // face). const uint32_t num_vertices_to_be_encoded = corner_table_->num_vertices() - corner_table_->NumIsolatedVertices(); - encoder_->buffer()->Encode(num_vertices_to_be_encoded); + EncodeVarint(num_vertices_to_be_encoded, encoder_->buffer()); const uint32_t num_faces = corner_table_->num_faces() - corner_table_->NumDegeneratedFaces(); - encoder_->buffer()->Encode(num_faces); + EncodeVarint(num_faces, encoder_->buffer()); // Reset encoder data that may have been initialized in previous runs. visited_faces_.assign(mesh_->num_faces(), false); @@ -340,7 +340,7 @@ bool MeshEdgeBreakerEncoderImpl::EncodeConnectivity() { return false; } } else { - // Bounary configuration. We start on a boundary rather than on a face. + // Boundary configuration. We start on a boundary rather than on a face. // First encode the hole that's opposite to the start_corner. EncodeHole(corner_table_->Next(start_corner), true); // Start processing the face opposite to the boundary edge (the face @@ -358,7 +358,7 @@ bool MeshEdgeBreakerEncoderImpl::EncodeConnectivity() { processed_connectivity_corners_.insert(processed_connectivity_corners_.end(), init_face_connectivity_corners.begin(), init_face_connectivity_corners.end()); - // Emcode connectivity for all non-position attributes. + // Encode connectivity for all non-position attributes. if (attribute_data_.size() > 0) { // Use the same order of corner that will be used by the decoder. for (CornerIndex ci : processed_connectivity_corners_) { @@ -368,21 +368,23 @@ bool MeshEdgeBreakerEncoderImpl::EncodeConnectivity() { traversal_encoder_.Done(); // Encode the number of symbols. - encoder_->buffer()->Encode( - static_cast(traversal_encoder_.NumEncodedSymbols())); + const uint32_t num_encoded_symbols = + static_cast(traversal_encoder_.NumEncodedSymbols()); + EncodeVarint(num_encoded_symbols, encoder_->buffer()); // Encode the number of split symbols. - encoder_->buffer()->Encode(static_cast(num_split_symbols_)); + EncodeVarint(num_split_symbols_, encoder_->buffer()); // Append the traversal buffer. - encoder_->buffer()->Encode( - static_cast(traversal_encoder_.buffer().size())); + const uint32_t traversal_encoder_size = + static_cast(traversal_encoder_.buffer().size()); + EncodeVarint(traversal_encoder_size, encoder_->buffer()); encoder_->buffer()->Encode(traversal_encoder_.buffer().data(), traversal_encoder_.buffer().size()); // Encode topology split events. uint32_t num_events = topology_split_event_data_.size(); - encoder_->buffer()->Encode(num_events); + EncodeVarint(num_events, encoder_->buffer()); if (num_events > 0) { // Encode split symbols using delta and varint coding. Split edges are // encoded using direct bit coding. @@ -413,7 +415,7 @@ bool MeshEdgeBreakerEncoderImpl::EncodeConnectivity() { } // Encode hole events data. num_events = hole_event_data_.size(); - encoder_->buffer()->Encode(num_events); + EncodeVarint(num_events, encoder_->buffer()); if (num_events > 0) { // Encode hole symbol ids using delta and varint coding. The symbol ids are // always stored in increasing order so the deltas are going to be positive. @@ -488,7 +490,7 @@ bool MeshEdgeBreakerEncoderImpl::EncodeConnectivityFromCorner( const bool on_boundary = (vertex_hole_id_[vert_id.value()] != -1); if (!IsVertexVisited(vert_id)) { // A new unvisited vertex has been reached. We need to store its - // position difference using next,prev, and opposite vertices. + // position difference using next, prev, and opposite vertices. visited_vertex_ids_[vert_id.value()] = true; if (!on_boundary) { // If the vertex is on boundary it must correspond to an unvisited diff --git a/compression/mesh/mesh_edgebreaker_encoder_impl.h b/src/draco/compression/mesh/mesh_edgebreaker_encoder_impl.h similarity index 93% rename from compression/mesh/mesh_edgebreaker_encoder_impl.h rename to src/draco/compression/mesh/mesh_edgebreaker_encoder_impl.h index f232e1db..821a4364 100644 --- a/compression/mesh/mesh_edgebreaker_encoder_impl.h +++ b/src/draco/compression/mesh/mesh_edgebreaker_encoder_impl.h @@ -17,13 +17,13 @@ #include -#include "compression/attributes/mesh_attribute_indices_encoding_data.h" -#include "compression/attributes/mesh_traversal_sequencer.h" -#include "compression/config/compression_shared.h" -#include "compression/mesh/mesh_edgebreaker_encoder_impl_interface.h" -#include "compression/mesh/mesh_edgebreaker_shared.h" -#include "core/encoder_buffer.h" -#include "mesh/mesh_attribute_corner_table.h" +#include "draco/compression/attributes/mesh_attribute_indices_encoding_data.h" +#include "draco/compression/attributes/mesh_traversal_sequencer.h" +#include "draco/compression/config/compression_shared.h" +#include "draco/compression/mesh/mesh_edgebreaker_encoder_impl_interface.h" +#include "draco/compression/mesh/mesh_edgebreaker_shared.h" +#include "draco/core/encoder_buffer.h" +#include "draco/mesh/mesh_attribute_corner_table.h" namespace draco { @@ -49,7 +49,9 @@ class MeshEdgeBreakerEncoderImpl : public MeshEdgeBreakerEncoderImplInterface { const CornerTable *GetCornerTable() const override { return corner_table_.get(); } - bool IsFaceEncoded(FaceIndex fi) const { return visited_faces_[fi.value()]; } + bool IsFaceEncoded(FaceIndex fi) const override { + return visited_faces_[fi.value()]; + } MeshEdgeBreakerEncoder *GetEncoder() const override { return encoder_; } private: @@ -117,7 +119,7 @@ class MeshEdgeBreakerEncoderImpl : public MeshEdgeBreakerEncoderImplInterface { // Returns false when one or more attributes failed to be processed. bool GenerateEncodingOrderForAttributes(); - // The main encoder that own's this class. + // The main encoder that owns this class. MeshEdgeBreakerEncoder *encoder_; // Mesh that's being encoded. const Mesh *mesh_; diff --git a/compression/mesh/mesh_edgebreaker_encoder_impl_interface.h b/src/draco/compression/mesh/mesh_edgebreaker_encoder_impl_interface.h similarity index 93% rename from compression/mesh/mesh_edgebreaker_encoder_impl_interface.h rename to src/draco/compression/mesh/mesh_edgebreaker_encoder_impl_interface.h index cf2a9e26..6de953be 100644 --- a/compression/mesh/mesh_edgebreaker_encoder_impl_interface.h +++ b/src/draco/compression/mesh/mesh_edgebreaker_encoder_impl_interface.h @@ -15,9 +15,9 @@ #ifndef DRACO_COMPRESSION_MESH_MESH_EDGEBREAKER_ENCODER_IMPL_INTERFACE_H_ #define DRACO_COMPRESSION_MESH_MESH_EDGEBREAKER_ENCODER_IMPL_INTERFACE_H_ -#include "compression/attributes/mesh_attribute_indices_encoding_data.h" -#include "mesh/corner_table.h" -#include "mesh/mesh_attribute_corner_table.h" +#include "draco/compression/attributes/mesh_attribute_indices_encoding_data.h" +#include "draco/mesh/corner_table.h" +#include "draco/mesh/mesh_attribute_corner_table.h" namespace draco { diff --git a/compression/mesh/mesh_edgebreaker_encoding_test.cc b/src/draco/compression/mesh/mesh_edgebreaker_encoding_test.cc similarity index 76% rename from compression/mesh/mesh_edgebreaker_encoding_test.cc rename to src/draco/compression/mesh/mesh_edgebreaker_encoding_test.cc index 164839b9..8a7c8c7a 100644 --- a/compression/mesh/mesh_edgebreaker_encoding_test.cc +++ b/src/draco/compression/mesh/mesh_edgebreaker_encoding_test.cc @@ -14,15 +14,16 @@ // #include -#include "compression/mesh/mesh_edgebreaker_decoder.h" -#include "compression/mesh/mesh_edgebreaker_encoder.h" -#include "core/draco_test_base.h" -#include "core/draco_test_utils.h" -#include "io/mesh_io.h" -#include "io/obj_decoder.h" -#include "mesh/mesh_are_equivalent.h" -#include "mesh/mesh_cleanup.h" -#include "mesh/triangle_soup_mesh_builder.h" +#include "draco/compression/encode.h" +#include "draco/compression/mesh/mesh_edgebreaker_decoder.h" +#include "draco/compression/mesh/mesh_edgebreaker_encoder.h" +#include "draco/core/draco_test_base.h" +#include "draco/core/draco_test_utils.h" +#include "draco/io/mesh_io.h" +#include "draco/io/obj_decoder.h" +#include "draco/mesh/mesh_are_equivalent.h" +#include "draco/mesh/mesh_cleanup.h" +#include "draco/mesh/triangle_soup_mesh_builder.h" namespace draco { @@ -41,20 +42,19 @@ class MeshEdgebreakerEncodingTest : public ::testing::Test { void TestMesh(Mesh *mesh, int compression_level) { EncoderBuffer buffer; MeshEdgeBreakerEncoder encoder; - EncoderOptions encoder_options = CreateDefaultEncoderOptions(); - if (compression_level != -1) { - SetSpeedOptions(&encoder_options, 10 - compression_level, - 10 - compression_level); - } + EncoderOptions encoder_options = EncoderOptions::CreateDefaultOptions(); + encoder_options.SetSpeed(10 - compression_level, 10 - compression_level); encoder.SetMesh(*mesh); - ASSERT_TRUE(encoder.Encode(encoder_options, &buffer)); + ASSERT_TRUE(encoder.Encode(encoder_options, &buffer).ok()); DecoderBuffer dec_buffer; dec_buffer.Init(buffer.data(), buffer.size()); MeshEdgeBreakerDecoder decoder; std::unique_ptr decoded_mesh(new Mesh()); - ASSERT_TRUE(decoder.Decode(&dec_buffer, decoded_mesh.get())); + DecoderOptions dec_options; + ASSERT_TRUE( + decoder.Decode(dec_options, &dec_buffer, decoded_mesh.get()).ok()); // Cleanup the input mesh to make sure that input and output can be // compared (edgebreaker method discards degenerated triangles and isolated @@ -101,11 +101,11 @@ TEST_F(MeshEdgebreakerEncodingTest, TestEncoderReuse) { ASSERT_NE(mesh, nullptr) << "Failed to load test model " << file_name; MeshEdgeBreakerEncoder encoder; - EncoderOptions encoder_options = CreateDefaultEncoderOptions(); + EncoderOptions encoder_options = EncoderOptions::CreateDefaultOptions(); encoder.SetMesh(*mesh); EncoderBuffer buffer_0, buffer_1; - ASSERT_TRUE(encoder.Encode(encoder_options, &buffer_0)); - ASSERT_TRUE(encoder.Encode(encoder_options, &buffer_1)); + ASSERT_TRUE(encoder.Encode(encoder_options, &buffer_0).ok()); + ASSERT_TRUE(encoder.Encode(encoder_options, &buffer_1).ok()); // Make sure both buffer are identical. ASSERT_EQ(buffer_0.size(), buffer_1.size()); @@ -123,10 +123,10 @@ TEST_F(MeshEdgebreakerEncodingTest, TestDecoderReuse) { ASSERT_NE(mesh, nullptr) << "Failed to load test model " << file_name; MeshEdgeBreakerEncoder encoder; - EncoderOptions encoder_options = CreateDefaultEncoderOptions(); + EncoderOptions encoder_options = EncoderOptions::CreateDefaultOptions(); encoder.SetMesh(*mesh); EncoderBuffer buffer; - ASSERT_TRUE(encoder.Encode(encoder_options, &buffer)); + ASSERT_TRUE(encoder.Encode(encoder_options, &buffer).ok()); DecoderBuffer dec_buffer; dec_buffer.Init(buffer.data(), buffer.size()); @@ -135,11 +135,14 @@ TEST_F(MeshEdgebreakerEncodingTest, TestDecoderReuse) { // Decode the mesh two times. std::unique_ptr decoded_mesh_0(new Mesh()); - ASSERT_TRUE(decoder.Decode(&dec_buffer, decoded_mesh_0.get())); + DecoderOptions dec_options; + ASSERT_TRUE( + decoder.Decode(dec_options, &dec_buffer, decoded_mesh_0.get()).ok()); dec_buffer.Init(buffer.data(), buffer.size()); std::unique_ptr decoded_mesh_1(new Mesh()); - ASSERT_TRUE(decoder.Decode(&dec_buffer, decoded_mesh_1.get())); + ASSERT_TRUE( + decoder.Decode(dec_options, &dec_buffer, decoded_mesh_1.get()).ok()); // Make sure both of the meshes are identical. MeshAreEquivalent eq; @@ -147,5 +150,4 @@ TEST_F(MeshEdgebreakerEncodingTest, TestDecoderReuse) { << "Decoded meshes are not the same"; } - } // namespace draco diff --git a/compression/mesh/mesh_edgebreaker_shared.h b/src/draco/compression/mesh/mesh_edgebreaker_shared.h similarity index 93% rename from compression/mesh/mesh_edgebreaker_shared.h rename to src/draco/compression/mesh/mesh_edgebreaker_shared.h index 71e4f4eb..09894dcb 100644 --- a/compression/mesh/mesh_edgebreaker_shared.h +++ b/src/draco/compression/mesh/mesh_edgebreaker_shared.h @@ -15,7 +15,7 @@ #ifndef DRACO_COMPRESSION_MESH_MESH_EDGEBREAKER_SHARED_H_ #define DRACO_COMPRESSION_MESH_MESH_EDGEBREAKER_SHARED_H_ -#include +#include namespace draco { @@ -50,7 +50,7 @@ namespace draco { // \ / S \ / / E \ // *-------* *-------* // -// TODO(osava): Get rid of the topology bit pattern. It's important only for +// TODO(ostava): Get rid of the topology bit pattern. It's important only for // encoding but the algorithms should use EdgeBreakerSymbol instead. enum EdgeBreakerTopologyBitPattern { TOPOLOGY_C = 0x0, // 0 @@ -76,7 +76,7 @@ enum EdgeBreakerSymbol { }; // Bit-length of symbols in the EdgeBreakerTopologyBitPattern stored as a -// look up table for faster indexing. +// lookup table for faster indexing. constexpr int32_t edge_breaker_topology_bit_pattern_length[] = {1, 3, 0, 3, 0, 3, 0, 3}; @@ -100,10 +100,10 @@ enum EdgeFaceName : uint8_t { LEFT_FACE_EDGE = 0, RIGHT_FACE_EDGE = 1 }; // with either topology S (split) symbol. Such connection can be only caused by // topology changes on the traversed surface (if its genus != 0, i.e. when the // surface has topological handles or holes). -// For each occurrence of such event we always encode the split symbol id, source -// symbol id and source edge id (left, or right). There will be always exactly -// two occurrences of this event for every topological handle on the traversed -// mesh and one occurrence for a hole. +// For each occurrence of such event we always encode the split symbol id, +// source symbol id and source edge id (left, or right). There will be always +// exactly two occurrences of this event for every topological handle on the +// traversed mesh and one occurrence for a hole. struct TopologySplitEventData { int32_t split_symbol_id; int32_t source_symbol_id; diff --git a/compression/mesh/mesh_edgebreaker_traversal_decoder.h b/src/draco/compression/mesh/mesh_edgebreaker_traversal_decoder.h similarity index 88% rename from compression/mesh/mesh_edgebreaker_traversal_decoder.h rename to src/draco/compression/mesh/mesh_edgebreaker_traversal_decoder.h index 20f67257..91e73e9e 100644 --- a/compression/mesh/mesh_edgebreaker_traversal_decoder.h +++ b/src/draco/compression/mesh/mesh_edgebreaker_traversal_decoder.h @@ -15,10 +15,10 @@ #ifndef DRACO_COMPRESSION_MESH_MESH_EDGEBREAKER_TRAVERSAL_DECODER_H_ #define DRACO_COMPRESSION_MESH_MESH_EDGEBREAKER_TRAVERSAL_DECODER_H_ -#include "compression/mesh/mesh_edgebreaker_decoder.h" -#include "compression/mesh/mesh_edgebreaker_decoder_impl_interface.h" -#include "compression/mesh/mesh_edgebreaker_shared.h" -#include "core/rans_bit_decoder.h" +#include "draco/compression/mesh/mesh_edgebreaker_decoder.h" +#include "draco/compression/mesh/mesh_edgebreaker_decoder_impl_interface.h" +#include "draco/compression/mesh/mesh_edgebreaker_shared.h" +#include "draco/core/bit_coders/rans_bit_decoder.h" namespace draco { @@ -35,7 +35,13 @@ class MeshEdgeBreakerTraversalDecoder { void Init(MeshEdgeBreakerDecoderImplInterface *decoder) { decoder_impl_ = decoder; buffer_.Init(decoder->GetDecoder()->buffer()->data_head(), - decoder->GetDecoder()->buffer()->remaining_size()); + decoder->GetDecoder()->buffer()->remaining_size(), + decoder->GetDecoder()->buffer()->bitstream_version()); + } + + // Returns the Draco bitstream version. + uint16_t BitstreamVersion() const { + return decoder_impl_->GetDecoder()->bitstream_version(); } // Used to tell the decoder what is the number of expected decoded vertices. @@ -55,7 +61,8 @@ class MeshEdgeBreakerTraversalDecoder { uint64_t traversal_size; if (!buffer_.StartBitDecoding(true, &traversal_size)) return false; - start_face_buffer_.Init(buffer_.data_head(), buffer_.remaining_size()); + start_face_buffer_.Init(buffer_.data_head(), buffer_.remaining_size(), + buffer_.bitstream_version()); if (traversal_size > start_face_buffer_.remaining_size()) return false; start_face_buffer_.Advance(traversal_size); @@ -64,7 +71,7 @@ class MeshEdgeBreakerTraversalDecoder { // Create a decoder that is set to the end of the encoded traversal data. DecoderBuffer ret; ret.Init(start_face_buffer_.data_head(), - start_face_buffer_.remaining_size()); + start_face_buffer_.remaining_size(), buffer_.bitstream_version()); if (traversal_size > ret.remaining_size()) return false; ret.Advance(traversal_size); diff --git a/compression/mesh/mesh_edgebreaker_traversal_encoder.h b/src/draco/compression/mesh/mesh_edgebreaker_traversal_encoder.h similarity index 94% rename from compression/mesh/mesh_edgebreaker_traversal_encoder.h rename to src/draco/compression/mesh/mesh_edgebreaker_traversal_encoder.h index ae12e508..13be3988 100644 --- a/compression/mesh/mesh_edgebreaker_traversal_encoder.h +++ b/src/draco/compression/mesh/mesh_edgebreaker_traversal_encoder.h @@ -15,10 +15,10 @@ #ifndef DRACO_COMPRESSION_MESH_MESH_EDGEBREAKER_TRAVERSAL_ENCODER_H_ #define DRACO_COMPRESSION_MESH_MESH_EDGEBREAKER_TRAVERSAL_ENCODER_H_ -#include "compression/mesh/mesh_edgebreaker_encoder.h" -#include "compression/mesh/mesh_edgebreaker_encoder_impl_interface.h" -#include "core/macros.h" -#include "core/rans_bit_encoder.h" +#include "draco/compression/mesh/mesh_edgebreaker_encoder.h" +#include "draco/compression/mesh/mesh_edgebreaker_encoder_impl_interface.h" +#include "draco/core/bit_coders/rans_bit_encoder.h" +#include "draco/core/macros.h" namespace draco { @@ -44,7 +44,7 @@ class MeshEdgeBreakerTraversalEncoder { // consume at most 1 bit per face if all faces are isolated. start_face_buffer_.StartBitEncoding(mesh->num_faces(), true); if (mesh->num_attributes() > 1) { - // Init and start arithemtic encoders for storing configuration types + // Init and start arithmetic encoders for storing configuration types // of non-position attributes. attribute_connectivity_encoders_ = std::unique_ptr( new BinaryEncoder[mesh->num_attributes() - 1]); diff --git a/compression/mesh/mesh_edgebreaker_traversal_predictive_decoder.h b/src/draco/compression/mesh/mesh_edgebreaker_traversal_predictive_decoder.h similarity index 98% rename from compression/mesh/mesh_edgebreaker_traversal_predictive_decoder.h rename to src/draco/compression/mesh/mesh_edgebreaker_traversal_predictive_decoder.h index 7555fecb..7c91a23c 100644 --- a/compression/mesh/mesh_edgebreaker_traversal_predictive_decoder.h +++ b/src/draco/compression/mesh/mesh_edgebreaker_traversal_predictive_decoder.h @@ -15,7 +15,7 @@ #ifndef DRACO_COMPRESSION_MESH_MESH_EDGEBREAKER_TRAVERSAL_PREDICTIVE_DECODER_H_ #define DRACO_COMPRESSION_MESH_MESH_EDGEBREAKER_TRAVERSAL_PREDICTIVE_DECODER_H_ -#include "compression/mesh/mesh_edgebreaker_traversal_decoder.h" +#include "draco/compression/mesh/mesh_edgebreaker_traversal_decoder.h" namespace draco { diff --git a/compression/mesh/mesh_edgebreaker_traversal_predictive_encoder.h b/src/draco/compression/mesh/mesh_edgebreaker_traversal_predictive_encoder.h similarity index 98% rename from compression/mesh/mesh_edgebreaker_traversal_predictive_encoder.h rename to src/draco/compression/mesh/mesh_edgebreaker_traversal_predictive_encoder.h index 3fbb889b..5d0d3549 100644 --- a/compression/mesh/mesh_edgebreaker_traversal_predictive_encoder.h +++ b/src/draco/compression/mesh/mesh_edgebreaker_traversal_predictive_encoder.h @@ -15,7 +15,7 @@ #ifndef DRACO_COMPRESSION_MESH_MESH_EDGEBREAKER_TRAVERSAL_PREDICTIVE_ENCODER_H_ #define DRACO_COMPRESSION_MESH_MESH_EDGEBREAKER_TRAVERSAL_PREDICTIVE_ENCODER_H_ -#include "compression/mesh/mesh_edgebreaker_traversal_encoder.h" +#include "draco/compression/mesh/mesh_edgebreaker_traversal_encoder.h" namespace draco { @@ -77,7 +77,7 @@ class MeshEdgeBreakerTraversalPredictiveEncoder predicted_symbol = ComputePredictedSymbol(corner_table_->Vertex(next)); FALLTHROUGH_INTENDED; case TOPOLOGY_S: - // Update velences. + // Update valences. vertex_valences_[corner_table_->Vertex(next).value()] -= 1; vertex_valences_[corner_table_->Vertex(prev).value()] -= 1; if (symbol == TOPOLOGY_S) { diff --git a/compression/mesh/mesh_edgebreaker_traversal_valence_decoder.h b/src/draco/compression/mesh/mesh_edgebreaker_traversal_valence_decoder.h similarity index 93% rename from compression/mesh/mesh_edgebreaker_traversal_valence_decoder.h rename to src/draco/compression/mesh/mesh_edgebreaker_traversal_valence_decoder.h index 201e22e0..6fdd8b18 100644 --- a/compression/mesh/mesh_edgebreaker_traversal_valence_decoder.h +++ b/src/draco/compression/mesh/mesh_edgebreaker_traversal_valence_decoder.h @@ -15,9 +15,9 @@ #ifndef DRACO_COMPRESSION_MESH_MESH_EDGEBREAKER_TRAVERSAL_VALENCE_DECODER_H_ #define DRACO_COMPRESSION_MESH_MESH_EDGEBREAKER_TRAVERSAL_VALENCE_DECODER_H_ -#include "compression/mesh/mesh_edgebreaker_traversal_decoder.h" -#include "core/symbol_decoding.h" -#include "core/varint_decoding.h" +#include "draco/compression/mesh/mesh_edgebreaker_traversal_decoder.h" +#include "draco/core/symbol_decoding.h" +#include "draco/core/varint_decoding.h" namespace draco { @@ -44,9 +44,14 @@ class MeshEdgeBreakerTraversalValenceDecoder bool Start(DecoderBuffer *out_buffer) { if (!MeshEdgeBreakerTraversalDecoder::Start(out_buffer)) return false; - int32_t num_split_symbols; - if (!out_buffer->Decode(&num_split_symbols)) - return false; + uint32_t num_split_symbols; + if (BitstreamVersion() < DRACO_BITSTREAM_VERSION(2, 0)) { + if (!out_buffer->Decode(&num_split_symbols)) + return false; + } else { + if (!DecodeVarint(&num_split_symbols, out_buffer)) + return false; + } // Add one extra vertex for each split symbol. num_vertices_ += num_split_symbols; // Set the valences of all initial vertices to 0. diff --git a/compression/mesh/mesh_edgebreaker_traversal_valence_encoder.h b/src/draco/compression/mesh/mesh_edgebreaker_traversal_valence_encoder.h similarity index 97% rename from compression/mesh/mesh_edgebreaker_traversal_valence_encoder.h rename to src/draco/compression/mesh/mesh_edgebreaker_traversal_valence_encoder.h index 00b6e84a..eeaadd71 100644 --- a/compression/mesh/mesh_edgebreaker_traversal_valence_encoder.h +++ b/src/draco/compression/mesh/mesh_edgebreaker_traversal_valence_encoder.h @@ -15,9 +15,9 @@ #ifndef DRACO_COMPRESSION_MESH_MESH_EDGEBREAKER_TRAVERSAL_VALENCE_ENCODER_H_ #define DRACO_COMPRESSION_MESH_MESH_EDGEBREAKER_TRAVERSAL_VALENCE_ENCODER_H_ -#include "compression/mesh/mesh_edgebreaker_traversal_encoder.h" -#include "core/symbol_encoding.h" -#include "core/varint_encoding.h" +#include "draco/compression/mesh/mesh_edgebreaker_traversal_encoder.h" +#include "draco/core/symbol_encoding.h" +#include "draco/core/varint_encoding.h" namespace draco { @@ -96,7 +96,7 @@ class MeshEdgeBreakerTraversalValenceEncoder // Compute prediction. FALLTHROUGH_INTENDED; case TOPOLOGY_S: - // Update velences. + // Update valences. vertex_valences_[corner_to_vertex_map_[next]] -= 1; vertex_valences_[corner_to_vertex_map_[prev]] -= 1; if (symbol == TOPOLOGY_S) { @@ -198,7 +198,7 @@ class MeshEdgeBreakerTraversalValenceEncoder MeshEdgeBreakerTraversalEncoder::Done(); // Encode the number of split symbols (needed to set the correct number of // vertices on the decoder side). - GetOutputBuffer()->Encode(num_split_symbols_); + EncodeVarint(num_split_symbols_, GetOutputBuffer()); // Encode the valance encoder mode. GetOutputBuffer()->Encode(static_cast(mode_)); // Store the contexts. @@ -223,7 +223,7 @@ class MeshEdgeBreakerTraversalValenceEncoder // Previously encoded symbol. int32_t prev_symbol_; // The total number of encoded split symbols. - int32_t num_split_symbols_; + uint32_t num_split_symbols_; CornerIndex last_corner_; // Explicitly count the number of encoded symbols. int num_symbols_; diff --git a/compression/mesh/mesh_encoder.cc b/src/draco/compression/mesh/mesh_encoder.cc similarity index 94% rename from compression/mesh/mesh_encoder.cc rename to src/draco/compression/mesh/mesh_encoder.cc index 7276ff32..4089181a 100644 --- a/compression/mesh/mesh_encoder.cc +++ b/src/draco/compression/mesh/mesh_encoder.cc @@ -12,7 +12,7 @@ // See the License for the specific language governing permissions and // limitations under the License. // -#include "compression/mesh/mesh_encoder.h" +#include "draco/compression/mesh/mesh_encoder.h" namespace draco { diff --git a/compression/mesh/mesh_encoder.h b/src/draco/compression/mesh/mesh_encoder.h similarity index 87% rename from compression/mesh/mesh_encoder.h rename to src/draco/compression/mesh/mesh_encoder.h index 90f46368..522143fb 100644 --- a/compression/mesh/mesh_encoder.h +++ b/src/draco/compression/mesh/mesh_encoder.h @@ -15,15 +15,15 @@ #ifndef DRACO_COMPRESSION_MESH_MESH_ENCODER_H_ #define DRACO_COMPRESSION_MESH_MESH_ENCODER_H_ -#include "compression/attributes/mesh_attribute_indices_encoding_data.h" -#include "compression/point_cloud/point_cloud_encoder.h" -#include "mesh/mesh.h" -#include "mesh/mesh_attribute_corner_table.h" +#include "draco/compression/attributes/mesh_attribute_indices_encoding_data.h" +#include "draco/compression/point_cloud/point_cloud_encoder.h" +#include "draco/mesh/mesh.h" +#include "draco/mesh/mesh_attribute_corner_table.h" namespace draco { // Abstract base class for all mesh encoders. It provides some basic -// funcionality that's shared between different encoders. +// functionality that's shared between different encoders. class MeshEncoder : public PointCloudEncoder { public: MeshEncoder(); diff --git a/compression/mesh/mesh_encoder_helpers.h b/src/draco/compression/mesh/mesh_encoder_helpers.h similarity index 96% rename from compression/mesh/mesh_encoder_helpers.h rename to src/draco/compression/mesh/mesh_encoder_helpers.h index 9706eb19..d809a521 100644 --- a/compression/mesh/mesh_encoder_helpers.h +++ b/src/draco/compression/mesh/mesh_encoder_helpers.h @@ -15,8 +15,8 @@ #ifndef DRACO_COMPRESSION_MESH_MESH_ENCODER_HELPERS_H_ #define DRACO_COMPRESSION_MESH_MESH_ENCODER_HELPERS_H_ -#include "compression/mesh/mesh_encoder.h" -#include "mesh/triangle_soup_mesh_builder.h" +#include "draco/compression/mesh/mesh_encoder.h" +#include "draco/mesh/triangle_soup_mesh_builder.h" namespace draco { diff --git a/compression/mesh/mesh_encoder_test.cc b/src/draco/compression/mesh/mesh_encoder_test.cc similarity index 89% rename from compression/mesh/mesh_encoder_test.cc rename to src/draco/compression/mesh/mesh_encoder_test.cc index 79219489..132088ec 100644 --- a/compression/mesh/mesh_encoder_test.cc +++ b/src/draco/compression/mesh/mesh_encoder_test.cc @@ -12,13 +12,13 @@ // See the License for the specific language governing permissions and // limitations under the License. // -#include "compression/mesh/mesh_encoder.h" +#include "draco/compression/mesh/mesh_encoder.h" -#include "compression/encode.h" -#include "core/decoder_buffer.h" -#include "core/draco_test_base.h" -#include "core/draco_test_utils.h" -#include "io/obj_decoder.h" +#include "draco/compression/expert_encode.h" +#include "draco/core/decoder_buffer.h" +#include "draco/core/draco_test_base.h" +#include "draco/core/draco_test_utils.h" +#include "draco/io/obj_decoder.h" namespace draco { @@ -63,14 +63,14 @@ TEST_P(MeshEncoderTest, EncodeGoldenMesh) { std::string golden_file_name = file_name; golden_file_name += '.'; golden_file_name += GetParam(); - golden_file_name += ".0.10.0.drc"; + golden_file_name += ".1.0.0.drc"; const std::unique_ptr mesh(DecodeObj(file_name)); ASSERT_NE(mesh, nullptr) << "Failed to load test model " << file_name; - EncoderOptions options = CreateDefaultEncoderOptions(); - SetEncodingMethod(&options, method); + ExpertEncoder encoder(*mesh.get()); + encoder.SetEncodingMethod(method); EncoderBuffer buffer; - ASSERT_TRUE(EncodeMeshToBuffer(*mesh.get(), options, &buffer)) + ASSERT_TRUE(encoder.EncodeToBuffer(&buffer).ok()) << "Failed encoding test mesh " << file_name << " with method " << GetParam(); // Check that the encoded mesh was really encoded with the selected method. diff --git a/compression/mesh/mesh_sequential_decoder.cc b/src/draco/compression/mesh/mesh_sequential_decoder.cc similarity index 92% rename from compression/mesh/mesh_sequential_decoder.cc rename to src/draco/compression/mesh/mesh_sequential_decoder.cc index 79911bab..cc99be40 100644 --- a/compression/mesh/mesh_sequential_decoder.cc +++ b/src/draco/compression/mesh/mesh_sequential_decoder.cc @@ -12,11 +12,11 @@ // See the License for the specific language governing permissions and // limitations under the License. // -#include "compression/mesh/mesh_sequential_decoder.h" +#include "draco/compression/mesh/mesh_sequential_decoder.h" -#include "compression/attributes/linear_sequencer.h" -#include "compression/attributes/sequential_attribute_decoders_controller.h" -#include "core/symbol_decoding.h" +#include "draco/compression/attributes/linear_sequencer.h" +#include "draco/compression/attributes/sequential_attribute_decoders_controller.h" +#include "draco/core/symbol_decoding.h" namespace draco { @@ -27,7 +27,7 @@ bool MeshSequentialDecoder::DecodeConnectivity() { if (!buffer()->Decode(&num_faces) || num_faces < 0) return false; int32_t num_points; - if (!buffer()->Decode(&num_points)) + if (!buffer()->Decode(&num_points) || num_points < 0) return false; uint8_t connectivity_method; if (!buffer()->Decode(&connectivity_method)) diff --git a/compression/mesh/mesh_sequential_decoder.h b/src/draco/compression/mesh/mesh_sequential_decoder.h similarity index 96% rename from compression/mesh/mesh_sequential_decoder.h rename to src/draco/compression/mesh/mesh_sequential_decoder.h index 30e3997c..885c17ef 100644 --- a/compression/mesh/mesh_sequential_decoder.h +++ b/src/draco/compression/mesh/mesh_sequential_decoder.h @@ -15,7 +15,7 @@ #ifndef DRACO_COMPRESSION_MESH_MESH_SEQUENTIAL_DECODER_H_ #define DRACO_COMPRESSION_MESH_MESH_SEQUENTIAL_DECODER_H_ -#include "compression/mesh/mesh_decoder.h" +#include "draco/compression/mesh/mesh_decoder.h" namespace draco { diff --git a/compression/mesh/mesh_sequential_encoder.cc b/src/draco/compression/mesh/mesh_sequential_encoder.cc similarity index 91% rename from compression/mesh/mesh_sequential_encoder.cc rename to src/draco/compression/mesh/mesh_sequential_encoder.cc index 5cb1c5c8..48f73301 100644 --- a/compression/mesh/mesh_sequential_encoder.cc +++ b/src/draco/compression/mesh/mesh_sequential_encoder.cc @@ -12,13 +12,13 @@ // See the License for the specific language governing permissions and // limitations under the License. // -#include "compression/mesh/mesh_sequential_encoder.h" +#include "draco/compression/mesh/mesh_sequential_encoder.h" #include -#include "compression/attributes/linear_sequencer.h" -#include "compression/attributes/sequential_attribute_encoders_controller.h" -#include "core/symbol_encoding.h" +#include "draco/compression/attributes/linear_sequencer.h" +#include "draco/compression/attributes/sequential_attribute_encoders_controller.h" +#include "draco/core/symbol_encoding.h" namespace draco { @@ -41,7 +41,7 @@ bool MeshSequentialEncoder::EncodeConnectivity() { } else { // 1 = Encode indices directly. buffer()->Encode(static_cast(1)); - // Store vertex indices using a smallest datatype that fits their range. + // Store vertex indices using a smallest data type that fits their range. // TODO(ostava): This can be potentially improved by using a tighter // fit that is not bound by a bit-length of any particular data type. if (mesh()->num_points() < 256) { @@ -90,7 +90,7 @@ bool MeshSequentialEncoder::GenerateAttributesEncoder(int32_t att_id) { bool MeshSequentialEncoder::CompressAndEncodeIndices() { // Collect all indices to a buffer and encode them. - // Each new indice is a difference from the previous value. + // Each new index is a difference from the previous value. std::vector indices_buffer; int32_t last_index_value = 0; const int num_faces = mesh()->num_faces(); diff --git a/compression/mesh/mesh_sequential_encoder.h b/src/draco/compression/mesh/mesh_sequential_encoder.h similarity index 96% rename from compression/mesh/mesh_sequential_encoder.h rename to src/draco/compression/mesh/mesh_sequential_encoder.h index 96c1b92f..e6387305 100644 --- a/compression/mesh/mesh_sequential_encoder.h +++ b/src/draco/compression/mesh/mesh_sequential_encoder.h @@ -13,7 +13,7 @@ // limitations under the License. // // The encoder compresses all attribute values using an order preserving -// attribute encoder (that can still support quantization, prediction schems, +// attribute encoder (that can still support quantization, prediction schemes, // and other features). // The mesh connectivity data can be encoded using two modes that are controlled // using a global encoder options flag called "compress_connectivity" @@ -27,7 +27,7 @@ #ifndef DRACO_COMPRESSION_MESH_MESH_SEQUENTIAL_ENCODER_H_ #define DRACO_COMPRESSION_MESH_MESH_SEQUENTIAL_ENCODER_H_ -#include "compression/mesh/mesh_encoder.h" +#include "draco/compression/mesh/mesh_encoder.h" namespace draco { diff --git a/core/bit_coder.cc b/src/draco/compression/point_cloud/algorithms/dynamic_integer_points_kd_tree_decoder.cc similarity index 63% rename from core/bit_coder.cc rename to src/draco/compression/point_cloud/algorithms/dynamic_integer_points_kd_tree_decoder.cc index 1f118158..de46f05a 100644 --- a/core/bit_coder.cc +++ b/src/draco/compression/point_cloud/algorithms/dynamic_integer_points_kd_tree_decoder.cc @@ -12,16 +12,15 @@ // See the License for the specific language governing permissions and // limitations under the License. // -#include "core/bit_coder.h" +#include "draco/compression/point_cloud/algorithms/dynamic_integer_points_kd_tree_decoder.h" -// TODO(fgalligan): Remove this file. -namespace draco { - -BitEncoder::BitEncoder(char *data) : bit_buffer_(data), bit_offset_(0) {} +#include "draco/compression/point_cloud/algorithms/point_cloud_types.h" -BitDecoder::BitDecoder() - : bit_buffer_(nullptr), bit_buffer_end_(nullptr), bit_offset_(0) {} +namespace draco { -BitDecoder::~BitDecoder() {} +template class DynamicIntegerPointsKdTreeDecoder<0>; +template class DynamicIntegerPointsKdTreeDecoder<2>; +template class DynamicIntegerPointsKdTreeDecoder<4>; +template class DynamicIntegerPointsKdTreeDecoder<6>; } // namespace draco diff --git a/src/draco/compression/point_cloud/algorithms/dynamic_integer_points_kd_tree_decoder.h b/src/draco/compression/point_cloud/algorithms/dynamic_integer_points_kd_tree_decoder.h new file mode 100644 index 00000000..e6d82eab --- /dev/null +++ b/src/draco/compression/point_cloud/algorithms/dynamic_integer_points_kd_tree_decoder.h @@ -0,0 +1,278 @@ +// Copyright 2016 The Draco Authors. +// +// Licensed under the Apache License, Version 2.0 (the "License"); +// you may not use this file except in compliance with the License. +// You may obtain a copy of the License at +// +// http://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an "AS IS" BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// See the License for the specific language governing permissions and +// limitations under the License. +// +// See dynamic_integer_points_kd_tree_encoder.h for documentation. + +#ifndef DRACO_COMPRESSION_POINT_CLOUD_ALGORITHMS_DYNAMIC_INTEGER_POINTS_KD_TREE_DECODER_H_ +#define DRACO_COMPRESSION_POINT_CLOUD_ALGORITHMS_DYNAMIC_INTEGER_POINTS_KD_TREE_DECODER_H_ + +#include +#include +#include + +#include "draco/compression/point_cloud/algorithms/point_cloud_types.h" +#include "draco/core/bit_coders/adaptive_rans_bit_decoder.h" +#include "draco/core/bit_coders/direct_bit_decoder.h" +#include "draco/core/bit_coders/folded_integer_bit_decoder.h" +#include "draco/core/bit_coders/rans_bit_decoder.h" +#include "draco/core/bit_utils.h" +#include "draco/core/decoder_buffer.h" +#include "draco/core/math_utils.h" + +namespace draco { + +template +struct DynamicIntegerPointsKdTreeDecoderCompressionPolicy + : public DynamicIntegerPointsKdTreeDecoderCompressionPolicy< + compression_level_t - 1> {}; + +template <> +struct DynamicIntegerPointsKdTreeDecoderCompressionPolicy<0> { + typedef DirectBitDecoder NumbersDecoder; + typedef DirectBitDecoder AxisDecoder; + typedef DirectBitDecoder HalfDecoder; + typedef DirectBitDecoder RemainingBitsDecoder; + static constexpr bool select_axis = false; +}; + +template <> +struct DynamicIntegerPointsKdTreeDecoderCompressionPolicy<2> + : public DynamicIntegerPointsKdTreeDecoderCompressionPolicy<1> { + typedef RAnsBitDecoder NumbersDecoder; +}; + +template <> +struct DynamicIntegerPointsKdTreeDecoderCompressionPolicy<4> + : public DynamicIntegerPointsKdTreeDecoderCompressionPolicy<3> { + typedef FoldedBit32Decoder NumbersDecoder; +}; + +template <> +struct DynamicIntegerPointsKdTreeDecoderCompressionPolicy<6> + : public DynamicIntegerPointsKdTreeDecoderCompressionPolicy<5> { + static constexpr bool select_axis = true; +}; + +// Decodes a point cloud encoded by DynamicIntegerPointsKdTreeEncoder. +template +class DynamicIntegerPointsKdTreeDecoder { + static_assert(compression_level_t >= 0, "Compression level must in [0..6]."); + static_assert(compression_level_t <= 6, "Compression level must in [0..6]."); + typedef DynamicIntegerPointsKdTreeDecoderCompressionPolicy< + compression_level_t> + Policy; + + typedef typename Policy::NumbersDecoder NumbersDecoder; + typedef typename Policy::AxisDecoder AxisDecoder; + typedef typename Policy::HalfDecoder HalfDecoder; + typedef typename Policy::RemainingBitsDecoder RemainingBitsDecoder; + typedef std::vector VectorUint32; + + public: + DynamicIntegerPointsKdTreeDecoder(uint32_t dimension) + : bit_length_(0), + dimension_(dimension), + p_(dimension, 0), + axes_(dimension, 0), + // Init the stack with the maximum depth of the tree. + // +1 for a second leaf. + base_stack_(32 * dimension + 1, VectorUint32(dimension, 0)), + levels_stack_(32 * dimension + 1, VectorUint32(dimension, 0)) {} + + // Decodes a integer point cloud from |buffer|. + template + bool DecodePoints(DecoderBuffer *buffer, OutputIteratorT oit); + + const uint32_t dimension() const { return dimension_; } + + private: + void copy(const VectorUint32 &source, VectorUint32 *target) { + for (int i = 0; i < source.size(); ++i) { + (*target)[i] = source[i]; + } + } + uint32_t GetAxis(uint32_t num_remaining_points, const VectorUint32 &levels, + uint32_t last_axis); + + template + void DecodeInternal(uint32_t num_points, OutputIteratorT oit); + + void DecodeNumber(int nbits, uint32_t *value) { + numbers_decoder_.DecodeLeastSignificantBits32(nbits, value); + } + + struct DecodingStatus { + DecodingStatus(uint32_t num_remaining_points_, uint32_t last_axis_, + uint32_t stack_pos_) + : num_remaining_points(num_remaining_points_), + last_axis(last_axis_), + stack_pos(stack_pos_) {} + + uint32_t num_remaining_points; + uint32_t last_axis; + uint32_t stack_pos; // used to get base and levels + }; + + uint32_t bit_length_; + uint32_t num_points_; + uint32_t dimension_; + NumbersDecoder numbers_decoder_; + RemainingBitsDecoder remaining_bits_decoder_; + AxisDecoder axis_decoder_; + HalfDecoder half_decoder_; + VectorUint32 p_; + VectorUint32 axes_; + std::vector base_stack_; + std::vector levels_stack_; +}; + +// Decodes a point cloud from |buffer|. +template +template +bool DynamicIntegerPointsKdTreeDecoder::DecodePoints( + DecoderBuffer *buffer, OutputIteratorT oit) { + buffer->Decode(&bit_length_); + buffer->Decode(&num_points_); + if (num_points_ == 0) + return true; + + if (!numbers_decoder_.StartDecoding(buffer)) + return false; + if (!remaining_bits_decoder_.StartDecoding(buffer)) + return false; + if (!axis_decoder_.StartDecoding(buffer)) + return false; + if (!half_decoder_.StartDecoding(buffer)) + return false; + + DecodeInternal(num_points_, oit); + + numbers_decoder_.EndDecoding(); + remaining_bits_decoder_.EndDecoding(); + axis_decoder_.EndDecoding(); + half_decoder_.EndDecoding(); + + return true; +} + +template +uint32_t DynamicIntegerPointsKdTreeDecoder::GetAxis( + uint32_t num_remaining_points, const VectorUint32 &levels, + uint32_t last_axis) { + if (!Policy::select_axis) + return DRACO_INCREMENT_MOD(last_axis, dimension_); + + uint32_t best_axis = 0; + if (num_remaining_points < 64) { + for (uint32_t axis = 1; axis < dimension_; ++axis) { + if (levels[best_axis] > levels[axis]) { + best_axis = axis; + } + } + } else { + axis_decoder_.DecodeLeastSignificantBits32(4, &best_axis); + } + + return best_axis; +} + +template +template +void DynamicIntegerPointsKdTreeDecoder::DecodeInternal( + uint32_t num_points, OutputIteratorT oit) { + typedef DecodingStatus Status; + base_stack_[0] = VectorUint32(dimension_, 0); + levels_stack_[0] = VectorUint32(dimension_, 0); + DecodingStatus init_status(num_points, 0, 0); + std::stack status_stack; + status_stack.push(init_status); + + // TODO(hemmer): use preallocated vector instead of stack. + while (!status_stack.empty()) { + const DecodingStatus status = status_stack.top(); + status_stack.pop(); + + const uint32_t num_remaining_points = status.num_remaining_points; + const uint32_t last_axis = status.last_axis; + const uint32_t stack_pos = status.stack_pos; + const VectorUint32 &old_base = base_stack_[stack_pos]; + const VectorUint32 &levels = levels_stack_[stack_pos]; + + const uint32_t axis = GetAxis(num_remaining_points, levels, last_axis); + const uint32_t level = levels[axis]; + + // All axes have been fully subdivided, just output points. + if ((bit_length_ - level) == 0) { + for (int i = 0; i < static_cast(num_remaining_points); i++) { + *oit++ = old_base; + } + continue; + } + + DCHECK_EQ(true, num_remaining_points != 0); + + // Fast decoding of remaining bits if number of points is 1 or 2. + if (num_remaining_points <= 2) { + // TODO(hemmer): axes_ not necessary, remove would change bitstream! + axes_[0] = axis; + for (int i = 1; i < dimension_; i++) { + axes_[i] = DRACO_INCREMENT_MOD(axes_[i - 1], dimension_); + } + for (uint32_t i = 0; i < num_remaining_points; ++i) { + for (int j = 0; j < dimension_; j++) { + p_[axes_[j]] = 0; + const uint32_t num_remaining_bits = bit_length_ - levels[axes_[j]]; + if (num_remaining_bits) + remaining_bits_decoder_.DecodeLeastSignificantBits32( + num_remaining_bits, &p_[axes_[j]]); + p_[axes_[j]] = old_base[axes_[j]] | p_[axes_[j]]; + } + *oit++ = p_; + } + continue; + } + const int num_remaining_bits = bit_length_ - level; + const uint32_t modifier = 1 << (num_remaining_bits - 1); + copy(old_base, &base_stack_[stack_pos + 1]); + base_stack_[stack_pos + 1][axis] += modifier; // new base + + const int incoming_bits = bits::MostSignificantBit(num_remaining_points); + + uint32_t number = 0; + DecodeNumber(incoming_bits, &number); + + uint32_t first_half = num_remaining_points / 2 - number; + uint32_t second_half = num_remaining_points - first_half; + + if (first_half != second_half) + if (!half_decoder_.DecodeNextBit()) + std::swap(first_half, second_half); + + levels_stack_[stack_pos][axis] += 1; + copy(levels_stack_[stack_pos], &levels_stack_[stack_pos + 1]); + if (first_half) + status_stack.push(DecodingStatus(first_half, axis, stack_pos)); + if (second_half) + status_stack.push(DecodingStatus(second_half, axis, stack_pos + 1)); + } +} + +extern template class DynamicIntegerPointsKdTreeDecoder<0>; +extern template class DynamicIntegerPointsKdTreeDecoder<2>; +extern template class DynamicIntegerPointsKdTreeDecoder<4>; +extern template class DynamicIntegerPointsKdTreeDecoder<6>; + +} // namespace draco + +#endif // DRACO_COMPRESSION_POINT_CLOUD_ALGORITHMS_DYNAMIC_INTEGER_POINTS_KD_TREE_DECODER_H_ diff --git a/core/math_utils.h b/src/draco/compression/point_cloud/algorithms/dynamic_integer_points_kd_tree_encoder.cc similarity index 58% rename from core/math_utils.h rename to src/draco/compression/point_cloud/algorithms/dynamic_integer_points_kd_tree_encoder.cc index d35bf287..e7abf52c 100644 --- a/core/math_utils.h +++ b/src/draco/compression/point_cloud/algorithms/dynamic_integer_points_kd_tree_encoder.cc @@ -12,9 +12,15 @@ // See the License for the specific language governing permissions and // limitations under the License. // -#ifndef DRACO_CORE_MATH_UTILS_H_ -#define DRACO_CORE_MATH_UTILS_H_ +#include "draco/compression/point_cloud/algorithms/dynamic_integer_points_kd_tree_encoder.h" -#define DRACO_INCREMENT_MOD(I, M) (((I) == ((M)-1)) ? 0 : ((I) + 1)) +#include "draco/compression/point_cloud/algorithms/point_cloud_types.h" -#endif // DRACO_CORE_MATH_UTILS_H_ +namespace draco { + +template class DynamicIntegerPointsKdTreeEncoder<0>; +template class DynamicIntegerPointsKdTreeEncoder<2>; +template class DynamicIntegerPointsKdTreeEncoder<4>; +template class DynamicIntegerPointsKdTreeEncoder<6>; + +} // namespace draco diff --git a/src/draco/compression/point_cloud/algorithms/dynamic_integer_points_kd_tree_encoder.h b/src/draco/compression/point_cloud/algorithms/dynamic_integer_points_kd_tree_encoder.h new file mode 100644 index 00000000..22bf90ca --- /dev/null +++ b/src/draco/compression/point_cloud/algorithms/dynamic_integer_points_kd_tree_encoder.h @@ -0,0 +1,365 @@ +// Copyright 2016 The Draco Authors. +// +// Licensed under the Apache License, Version 2.0 (the "License"); +// you may not use this file except in compliance with the License. +// You may obtain a copy of the License at +// +// http://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an "AS IS" BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// See the License for the specific language governing permissions and +// limitations under the License. +// +#ifndef DRACO_COMPRESSION_POINT_CLOUD_ALGORITHMS_DYNAMIC_INTEGER_POINTS_KD_TREE_ENCODER_H_ +#define DRACO_COMPRESSION_POINT_CLOUD_ALGORITHMS_DYNAMIC_INTEGER_POINTS_KD_TREE_ENCODER_H_ + +#include +#include +#include +#include +#include + +#include "draco/compression/point_cloud/algorithms/point_cloud_types.h" +#include "draco/core/bit_coders/adaptive_rans_bit_encoder.h" +#include "draco/core/bit_coders/direct_bit_encoder.h" +#include "draco/core/bit_coders/folded_integer_bit_encoder.h" +#include "draco/core/bit_coders/rans_bit_encoder.h" +#include "draco/core/bit_utils.h" +#include "draco/core/encoder_buffer.h" +#include "draco/core/math_utils.h" + +namespace draco { + +// This policy class provides several configurations for the encoder that allow +// to trade speed vs compression rate. Level 0 is fastest while 6 is the best +// compression rate. The decoder must select the same level. +template +struct DynamicIntegerPointsKdTreeEncoderCompressionPolicy + : public DynamicIntegerPointsKdTreeEncoderCompressionPolicy< + compression_level_t - 1> {}; + +template <> +struct DynamicIntegerPointsKdTreeEncoderCompressionPolicy<0> { + typedef DirectBitEncoder NumbersEncoder; + typedef DirectBitEncoder AxisEncoder; + typedef DirectBitEncoder HalfEncoder; + typedef DirectBitEncoder RemainingBitsEncoder; + static constexpr bool select_axis = false; +}; + +template <> +struct DynamicIntegerPointsKdTreeEncoderCompressionPolicy<2> + : public DynamicIntegerPointsKdTreeEncoderCompressionPolicy<1> { + typedef RAnsBitEncoder NumbersEncoder; +}; + +template <> +struct DynamicIntegerPointsKdTreeEncoderCompressionPolicy<4> + : public DynamicIntegerPointsKdTreeEncoderCompressionPolicy<3> { + typedef FoldedBit32Encoder NumbersEncoder; +}; + +template <> +struct DynamicIntegerPointsKdTreeEncoderCompressionPolicy<6> + : public DynamicIntegerPointsKdTreeEncoderCompressionPolicy<5> { + static constexpr bool select_axis = true; +}; + +// This class encodes a given integer point cloud based on the point cloud +// compression algorithm in: +// Olivier Devillers and Pierre-Marie Gandoin +// "Geometric compression for interactive transmission" +// +// In principle the algorithm keeps on splitting the point cloud in the middle +// while alternating the axes. In 3D this results in an Octree like structure. +// In each step we encode the number of points in the first half. +// The algorithm does not preserve the order of points. +// +// However, the algorithm here differs from the original as follows: +// The algorithm keeps on splitting the point cloud in the middle of the axis +// that keeps the point cloud as clustered as possible, which gives a better +// compression rate. +// The number of points is encode by the deviation from the half of the points +// in the smaller half of the two. This results in a better compression rate as +// there are more leading zeros, which is then compressed better by the +// arithmetic encoding. +template +class DynamicIntegerPointsKdTreeEncoder { + static_assert(compression_level_t >= 0, "Compression level must in [0..6]."); + static_assert(compression_level_t <= 6, "Compression level must in [0..6]."); + typedef DynamicIntegerPointsKdTreeEncoderCompressionPolicy< + compression_level_t> + Policy; + typedef typename Policy::NumbersEncoder NumbersEncoder; + typedef typename Policy::AxisEncoder AxisEncoder; + typedef typename Policy::HalfEncoder HalfEncoder; + typedef typename Policy::RemainingBitsEncoder RemainingBitsEncoder; + typedef std::vector VectorUint32; + + public: + DynamicIntegerPointsKdTreeEncoder(uint32_t dimension) + : bit_length_(0), + dimension_(dimension), + deviations_(dimension, 0), + num_remaining_bits_(dimension, 0), + axes_(dimension, 0), + base_stack_(32 * dimension + 1, VectorUint32(dimension, 0)), + levels_stack_(32 * dimension + 1, VectorUint32(dimension, 0)) {} + + // Encodes an integer point cloud given by [begin,end) into buffer. + // |bit_length| gives the highest bit used for all coordinates. + template + bool EncodePoints(RandomAccessIteratorT begin, RandomAccessIteratorT end, + const uint32_t &bit_length, EncoderBuffer *buffer); + + // Encodes an integer point cloud given by [begin,end) into buffer. + template + bool EncodePoints(RandomAccessIteratorT begin, RandomAccessIteratorT end, + EncoderBuffer *buffer) { + return EncodePoints(begin, end, 32, buffer); + } + + const uint32_t dimension() const { return dimension_; } + + private: + void copy(const VectorUint32 &source, VectorUint32 *target) { + for (int i = 0; i < source.size(); ++i) { + (*target)[i] = source[i]; + } + } + + template + uint32_t GetAxis(RandomAccessIteratorT begin, RandomAccessIteratorT end, + const VectorUint32 &old_base, const VectorUint32 &levels, + uint32_t last_axis); + + template + void EncodeInternal(RandomAccessIteratorT begin, RandomAccessIteratorT end); + + class Splitter { + public: + Splitter(uint32_t axis, uint32_t value) : axis_(axis), value_(value) {} + template + bool operator()(const PointT &a) const { + return a[axis_] < value_; + } + + private: + uint32_t axis_; + uint32_t value_; + }; + + void EncodeNumber(int nbits, uint32_t value) { + numbers_encoder_.EncodeLeastSignificantBits32(nbits, value); + } + + template + struct EncodingStatus { + EncodingStatus(RandomAccessIteratorT begin_, RandomAccessIteratorT end_, + uint32_t last_axis_, uint32_t stack_pos_) + : begin(begin_), + end(end_), + last_axis(last_axis_), + stack_pos(stack_pos_) { + num_remaining_points = end - begin; + } + + RandomAccessIteratorT begin; + RandomAccessIteratorT end; + uint32_t last_axis; + uint32_t num_remaining_points; + uint32_t stack_pos; // used to get base and levels + }; + + uint32_t bit_length_; + uint32_t num_points_; + uint32_t dimension_; + NumbersEncoder numbers_encoder_; + RemainingBitsEncoder remaining_bits_encoder_; + AxisEncoder axis_encoder_; + HalfEncoder half_encoder_; + VectorUint32 deviations_; + VectorUint32 num_remaining_bits_; + VectorUint32 axes_; + std::vector base_stack_; + std::vector levels_stack_; +}; + +template +template +bool DynamicIntegerPointsKdTreeEncoder::EncodePoints( + RandomAccessIteratorT begin, RandomAccessIteratorT end, + const uint32_t &bit_length, EncoderBuffer *buffer) { + bit_length_ = bit_length; + num_points_ = end - begin; + + buffer->Encode(bit_length_); + buffer->Encode(num_points_); + if (num_points_ == 0) + return true; + + numbers_encoder_.StartEncoding(); + remaining_bits_encoder_.StartEncoding(); + axis_encoder_.StartEncoding(); + half_encoder_.StartEncoding(); + + EncodeInternal(begin, end); + + numbers_encoder_.EndEncoding(buffer); + remaining_bits_encoder_.EndEncoding(buffer); + axis_encoder_.EndEncoding(buffer); + half_encoder_.EndEncoding(buffer); + + return true; +} +template +template +uint32_t DynamicIntegerPointsKdTreeEncoder::GetAxis( + RandomAccessIteratorT begin, RandomAccessIteratorT end, + const VectorUint32 &old_base, const VectorUint32 &levels, + uint32_t last_axis) { + if (!Policy::select_axis) + return DRACO_INCREMENT_MOD(last_axis, dimension_); + + // For many points this function selects the axis that should be used + // for the split by keeping as many points as possible bundled. + // In the best case we do not split the point cloud at all. + // For lower number of points, we simply choose the axis that is refined the + // least so far. + + DCHECK_EQ(true, end - begin != 0); + + uint32_t best_axis = 0; + if (end - begin < 64) { + for (uint32_t axis = 1; axis < dimension_; ++axis) { + if (levels[best_axis] > levels[axis]) { + best_axis = axis; + } + } + } else { + const uint32_t size = (end - begin); + for (int i = 0; i < dimension_; i++) { + num_remaining_bits_[i] = bit_length_ - levels[i]; + const uint32_t split = old_base[i] + (1 << (num_remaining_bits_[i] - 1)); + for (auto it = begin; it != end; ++it) { + deviations_[i] += ((*it)[i] < split); + } + deviations_[i] = std::max(size - deviations_[i], deviations_[i]); + } + + uint32_t max_value = 0; + best_axis = 0; + for (int i = 0; i < dimension_; i++) { + // If axis can be subdivided. + if (num_remaining_bits_[i]) { + // Check if this is the better axis. + if (max_value < deviations_[i]) { + max_value = deviations_[i]; + best_axis = i; + } + } + } + axis_encoder_.EncodeLeastSignificantBits32(4, best_axis); + } + + return best_axis; +} + +template +template +void DynamicIntegerPointsKdTreeEncoder::EncodeInternal( + RandomAccessIteratorT begin, RandomAccessIteratorT end) { + typedef EncodingStatus Status; + + base_stack_[0] = VectorUint32(dimension_, 0); + levels_stack_[0] = VectorUint32(dimension_, 0); + Status init_status(begin, end, 0, 0); + std::stack status_stack; + status_stack.push(init_status); + + // TODO(hemmer): use preallocated vector instead of stack. + while (!status_stack.empty()) { + Status status = status_stack.top(); + status_stack.pop(); + + begin = status.begin; + end = status.end; + const uint32_t last_axis = status.last_axis; + const uint32_t stack_pos = status.stack_pos; + const VectorUint32 &old_base = base_stack_[stack_pos]; + const VectorUint32 &levels = levels_stack_[stack_pos]; + + const uint32_t axis = GetAxis(begin, end, old_base, levels, last_axis); + const uint32_t level = levels[axis]; + const uint32_t num_remaining_points = end - begin; + + // If this happens all axis are subdivided to the end. + if ((bit_length_ - level) == 0) + continue; + + // Fast encoding of remaining bits if number of points is 1 or 2. + // Doing this also for 2 gives a slight additional speed up. + if (num_remaining_points <= 2) { + // TODO(hemmer): axes_ not necessary, remove would change bitstream! + axes_[0] = axis; + for (int i = 1; i < dimension_; i++) { + axes_[i] = DRACO_INCREMENT_MOD(axes_[i - 1], dimension_); + } + for (uint32_t i = 0; i < num_remaining_points; ++i) { + const auto &p = *(begin + i); + for (int j = 0; j < dimension_; j++) { + const uint32_t num_remaining_bits = bit_length_ - levels[axes_[j]]; + if (num_remaining_bits) { + remaining_bits_encoder_.EncodeLeastSignificantBits32( + num_remaining_bits, p[axes_[j]]); + } + } + } + continue; + } + + const uint32_t num_remaining_bits = bit_length_ - level; + const uint32_t modifier = 1 << (num_remaining_bits - 1); + copy(old_base, &base_stack_[stack_pos + 1]); + base_stack_[stack_pos + 1][axis] += modifier; + const VectorUint32 &new_base = base_stack_[stack_pos + 1]; + + const RandomAccessIteratorT split = + std::partition(begin, end, Splitter(axis, new_base[axis])); + + DCHECK_EQ(true, (end - begin) > 0); + + // Encode number of points in first and second half. + const int required_bits = bits::MostSignificantBit(num_remaining_points); + + const uint32_t first_half = split - begin; + const uint32_t second_half = end - split; + const bool left = first_half < second_half; + + if (first_half != second_half) + half_encoder_.EncodeBit(left); + + if (left) { + EncodeNumber(required_bits, num_remaining_points / 2 - first_half); + } else { + EncodeNumber(required_bits, num_remaining_points / 2 - second_half); + } + + levels_stack_[stack_pos][axis] += 1; + copy(levels_stack_[stack_pos], &levels_stack_[stack_pos + 1]); + if (split != begin) + status_stack.push(Status(begin, split, axis, stack_pos)); + if (split != end) + status_stack.push(Status(split, end, axis, stack_pos + 1)); + } +} +extern template class DynamicIntegerPointsKdTreeEncoder<0>; +extern template class DynamicIntegerPointsKdTreeEncoder<2>; +extern template class DynamicIntegerPointsKdTreeEncoder<4>; +extern template class DynamicIntegerPointsKdTreeEncoder<6>; + +} // namespace draco + +#endif // DRACO_COMPRESSION_POINT_CLOUD_ALGORITHMS_DYNAMIC_INTEGER_POINTS_KD_TREE_ENCODER_H_ diff --git a/src/draco/compression/point_cloud/algorithms/float_points_tree_decoder.cc b/src/draco/compression/point_cloud/algorithms/float_points_tree_decoder.cc new file mode 100644 index 00000000..992fe864 --- /dev/null +++ b/src/draco/compression/point_cloud/algorithms/float_points_tree_decoder.cc @@ -0,0 +1,141 @@ +// Copyright 2016 The Draco Authors. +// +// Licensed under the Apache License, Version 2.0 (the "License"); +// you may not use this file except in compliance with the License. +// You may obtain a copy of the License at +// +// http://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an "AS IS" BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// See the License for the specific language governing permissions and +// limitations under the License. +// +#include "draco/compression/point_cloud/algorithms/float_points_tree_decoder.h" + +#include + +#include "draco/compression/point_cloud/algorithms/dynamic_integer_points_kd_tree_decoder.h" +#include "draco/compression/point_cloud/algorithms/quantize_points_3.h" +#include "draco/core/math_utils.h" +#include "draco/core/quantization_utils.h" + +namespace draco { + +struct Converter { + typedef std::vector SourceType; + typedef Point3ui TargetType; + Point3ui operator()(const std::vector &v) { + return Point3ui(v[0], v[1], v[2]); + } +}; + +// Output iterator that is used to decode values directly into the data buffer +// of the modified PointAttribute. +template +class ConversionOutputIterator { + typedef ConversionOutputIterator Self; + typedef typename Converter::SourceType SourceType; + typedef typename Converter::TargetType TargetType; + + public: + explicit ConversionOutputIterator(OutputIterator oit) : oit_(oit) {} + + const Self &operator++() { + ++oit_; + return *this; + } + Self operator++(int) { + Self copy = *this; + ++oit_; + return copy; + } + Self &operator*() { return *this; } + const Self &operator=(const SourceType &source) { + *oit_ = Converter()(source); + return *this; + } + + private: + OutputIterator oit_; +}; + +FloatPointsTreeDecoder::FloatPointsTreeDecoder() + : num_points_(0), compression_level_(0) { + qinfo_.quantization_bits = 0; + qinfo_.range = 0; +} + +bool FloatPointsTreeDecoder::DecodePointCloudKdTreeInternal( + DecoderBuffer *buffer, std::vector *qpoints) { + if (!buffer->Decode(&qinfo_.quantization_bits)) + return false; + if (!buffer->Decode(&qinfo_.range)) + return false; + if (!buffer->Decode(&num_points_)) + return false; + if (!buffer->Decode(&compression_level_)) + return false; + + // Only allow compression level in [0..6]. + if (6 < compression_level_) { + LOGE("FloatPointsTreeDecoder: compression level %i not supported.\n", + compression_level_); + return false; + } + + std::back_insert_iterator> oit_qpoints = + std::back_inserter(*qpoints); + ConversionOutputIterator>, + Converter> + oit(oit_qpoints); + if (num_points_ > 0) { + qpoints->reserve(num_points_); + switch (compression_level_) { + case 0: { + DynamicIntegerPointsKdTreeDecoder<0> qpoints_decoder(3); + qpoints_decoder.DecodePoints(buffer, oit); + break; + } + case 1: { + DynamicIntegerPointsKdTreeDecoder<1> qpoints_decoder(3); + qpoints_decoder.DecodePoints(buffer, oit); + break; + } + case 2: { + DynamicIntegerPointsKdTreeDecoder<2> qpoints_decoder(3); + qpoints_decoder.DecodePoints(buffer, oit); + break; + } + case 3: { + DynamicIntegerPointsKdTreeDecoder<3> qpoints_decoder(3); + qpoints_decoder.DecodePoints(buffer, oit); + break; + } + case 4: { + DynamicIntegerPointsKdTreeDecoder<4> qpoints_decoder(3); + qpoints_decoder.DecodePoints(buffer, oit); + break; + } + case 5: { + DynamicIntegerPointsKdTreeDecoder<5> qpoints_decoder(3); + qpoints_decoder.DecodePoints(buffer, oit); + break; + } + case 6: { + DynamicIntegerPointsKdTreeDecoder<6> qpoints_decoder(3); + qpoints_decoder.DecodePoints(buffer, oit); + break; + } + default: + return false; + } + } + + if (qpoints->size() != num_points_) + return false; + return true; +} + +} // namespace draco diff --git a/compression/point_cloud/algorithms/float_points_tree_decoder.h b/src/draco/compression/point_cloud/algorithms/float_points_tree_decoder.h similarity index 92% rename from compression/point_cloud/algorithms/float_points_tree_decoder.h rename to src/draco/compression/point_cloud/algorithms/float_points_tree_decoder.h index 1c500b4f..02135332 100644 --- a/compression/point_cloud/algorithms/float_points_tree_decoder.h +++ b/src/draco/compression/point_cloud/algorithms/float_points_tree_decoder.h @@ -17,10 +17,10 @@ #include -#include "compression/point_cloud/algorithms/point_cloud_compression_method.h" -#include "compression/point_cloud/algorithms/point_cloud_types.h" -#include "compression/point_cloud/algorithms/quantize_points_3.h" -#include "core/decoder_buffer.h" +#include "draco/compression/point_cloud/algorithms/point_cloud_compression_method.h" +#include "draco/compression/point_cloud/algorithms/point_cloud_types.h" +#include "draco/compression/point_cloud/algorithms/quantize_points_3.h" +#include "draco/core/decoder_buffer.h" namespace draco { diff --git a/compression/point_cloud/algorithms/float_points_tree_encoder.cc b/src/draco/compression/point_cloud/algorithms/float_points_tree_encoder.cc similarity index 59% rename from compression/point_cloud/algorithms/float_points_tree_encoder.cc rename to src/draco/compression/point_cloud/algorithms/float_points_tree_encoder.cc index 39f25390..a2053d3e 100644 --- a/compression/point_cloud/algorithms/float_points_tree_encoder.cc +++ b/src/draco/compression/point_cloud/algorithms/float_points_tree_encoder.cc @@ -12,13 +12,13 @@ // See the License for the specific language governing permissions and // limitations under the License. // -#include "compression/point_cloud/algorithms/float_points_tree_encoder.h" +#include "draco/compression/point_cloud/algorithms/float_points_tree_encoder.h" #include #include -#include "compression/point_cloud/algorithms/integer_points_kd_tree_encoder.h" -#include "core/math_utils.h" +#include "draco/compression/point_cloud/algorithms/dynamic_integer_points_kd_tree_encoder.h" +#include "draco/core/math_utils.h" namespace draco { @@ -26,7 +26,7 @@ const uint32_t FloatPointsTreeEncoder::version_ = 3; FloatPointsTreeEncoder::FloatPointsTreeEncoder( PointCloudCompressionMethod method) - : method_(method), num_points_(0), compression_level_(8) { + : method_(method), num_points_(0), compression_level_(6) { qinfo_.quantization_bits = 16; qinfo_.range = 0; } @@ -35,77 +35,53 @@ FloatPointsTreeEncoder::FloatPointsTreeEncoder( PointCloudCompressionMethod method, uint32_t quantization_bits, uint32_t compression_level) : method_(method), num_points_(0), compression_level_(compression_level) { - DCHECK_LE(compression_level_, 10); + DCHECK_LE(compression_level_, 6); qinfo_.quantization_bits = quantization_bits; qinfo_.range = 0; } bool FloatPointsTreeEncoder::EncodePointCloudKdTreeInternal( std::vector *qpoints) { - DCHECK_LE(compression_level_, 10); + DCHECK_LE(compression_level_, 6); switch (compression_level_) { case 0: { - IntegerPointsKdTreeEncoder qpoints_encoder; + DynamicIntegerPointsKdTreeEncoder<0> qpoints_encoder(3); qpoints_encoder.EncodePoints(qpoints->begin(), qpoints->end(), qinfo_.quantization_bits + 1, &buffer_); break; } case 1: { - IntegerPointsKdTreeEncoder qpoints_encoder; + DynamicIntegerPointsKdTreeEncoder<1> qpoints_encoder(3); qpoints_encoder.EncodePoints(qpoints->begin(), qpoints->end(), qinfo_.quantization_bits + 1, &buffer_); break; } case 2: { - IntegerPointsKdTreeEncoder qpoints_encoder; + DynamicIntegerPointsKdTreeEncoder<2> qpoints_encoder(3); qpoints_encoder.EncodePoints(qpoints->begin(), qpoints->end(), qinfo_.quantization_bits + 1, &buffer_); break; } case 3: { - IntegerPointsKdTreeEncoder qpoints_encoder; + DynamicIntegerPointsKdTreeEncoder<3> qpoints_encoder(3); qpoints_encoder.EncodePoints(qpoints->begin(), qpoints->end(), qinfo_.quantization_bits + 1, &buffer_); break; } case 4: { - IntegerPointsKdTreeEncoder qpoints_encoder; + DynamicIntegerPointsKdTreeEncoder<4> qpoints_encoder(3); qpoints_encoder.EncodePoints(qpoints->begin(), qpoints->end(), qinfo_.quantization_bits + 1, &buffer_); break; } case 5: { - IntegerPointsKdTreeEncoder qpoints_encoder; - qpoints_encoder.EncodePoints(qpoints->begin(), qpoints->end(), - qinfo_.quantization_bits + 1, &buffer_); - break; - } - case 6: { - IntegerPointsKdTreeEncoder qpoints_encoder; - qpoints_encoder.EncodePoints(qpoints->begin(), qpoints->end(), - qinfo_.quantization_bits + 1, &buffer_); - break; - } - case 7: { - IntegerPointsKdTreeEncoder qpoints_encoder; - qpoints_encoder.EncodePoints(qpoints->begin(), qpoints->end(), - qinfo_.quantization_bits + 1, &buffer_); - break; - } - case 8: { - IntegerPointsKdTreeEncoder qpoints_encoder; - qpoints_encoder.EncodePoints(qpoints->begin(), qpoints->end(), - qinfo_.quantization_bits + 1, &buffer_); - break; - } - case 9: { - IntegerPointsKdTreeEncoder qpoints_encoder; + DynamicIntegerPointsKdTreeEncoder<5> qpoints_encoder(3); qpoints_encoder.EncodePoints(qpoints->begin(), qpoints->end(), qinfo_.quantization_bits + 1, &buffer_); break; } default: { - IntegerPointsKdTreeEncoder qpoints_encoder; + DynamicIntegerPointsKdTreeEncoder<6> qpoints_encoder(3); qpoints_encoder.EncodePoints(qpoints->begin(), qpoints->end(), qinfo_.quantization_bits + 1, &buffer_); break; @@ -115,5 +91,4 @@ bool FloatPointsTreeEncoder::EncodePointCloudKdTreeInternal( return true; } - } // namespace draco diff --git a/compression/point_cloud/algorithms/float_points_tree_encoder.h b/src/draco/compression/point_cloud/algorithms/float_points_tree_encoder.h similarity index 94% rename from compression/point_cloud/algorithms/float_points_tree_encoder.h rename to src/draco/compression/point_cloud/algorithms/float_points_tree_encoder.h index 3767b9c1..f2cdb5a3 100644 --- a/compression/point_cloud/algorithms/float_points_tree_encoder.h +++ b/src/draco/compression/point_cloud/algorithms/float_points_tree_encoder.h @@ -18,10 +18,10 @@ #include #include -#include "compression/point_cloud/algorithms/point_cloud_compression_method.h" -#include "compression/point_cloud/algorithms/point_cloud_types.h" -#include "compression/point_cloud/algorithms/quantize_points_3.h" -#include "core/encoder_buffer.h" +#include "draco/compression/point_cloud/algorithms/point_cloud_compression_method.h" +#include "draco/compression/point_cloud/algorithms/point_cloud_types.h" +#include "draco/compression/point_cloud/algorithms/quantize_points_3.h" +#include "draco/core/encoder_buffer.h" namespace draco { diff --git a/compression/point_cloud/algorithms/integer_points_kd_tree_decoder.cc b/src/draco/compression/point_cloud/algorithms/integer_points_kd_tree_decoder.cc similarity index 92% rename from compression/point_cloud/algorithms/integer_points_kd_tree_decoder.cc rename to src/draco/compression/point_cloud/algorithms/integer_points_kd_tree_decoder.cc index d27417f3..d0428a28 100644 --- a/compression/point_cloud/algorithms/integer_points_kd_tree_decoder.cc +++ b/src/draco/compression/point_cloud/algorithms/integer_points_kd_tree_decoder.cc @@ -12,9 +12,9 @@ // See the License for the specific language governing permissions and // limitations under the License. // -#include "compression/point_cloud/algorithms/integer_points_kd_tree_decoder.h" +#include "draco/compression/point_cloud/algorithms/integer_points_kd_tree_decoder.h" -#include "compression/point_cloud/algorithms/point_cloud_types.h" +#include "draco/compression/point_cloud/algorithms/point_cloud_types.h" namespace draco { diff --git a/compression/point_cloud/algorithms/integer_points_kd_tree_decoder.h b/src/draco/compression/point_cloud/algorithms/integer_points_kd_tree_decoder.h similarity index 91% rename from compression/point_cloud/algorithms/integer_points_kd_tree_decoder.h rename to src/draco/compression/point_cloud/algorithms/integer_points_kd_tree_decoder.h index 41c4541e..4d120d16 100644 --- a/compression/point_cloud/algorithms/integer_points_kd_tree_decoder.h +++ b/src/draco/compression/point_cloud/algorithms/integer_points_kd_tree_decoder.h @@ -12,6 +12,8 @@ // See the License for the specific language governing permissions and // limitations under the License. // +// TODO(hemmer): Make this a wrapper using DynamicIntegerPointsKdTreeDecoder. +// // See integer_points_kd_tree_encoder.h for documentation. #ifndef DRACO_COMPRESSION_POINT_CLOUD_ALGORITHMS_INTEGER_POINTS_KD_TREE_DECODER_H_ @@ -20,15 +22,15 @@ #include #include -#include "compression/point_cloud/algorithms/point_cloud_types.h" -#include "compression/point_cloud/algorithms/queuing_policy.h" -#include "core/adaptive_rans_bit_decoder.h" -#include "core/bit_utils.h" -#include "core/decoder_buffer.h" -#include "core/direct_bit_decoder.h" -#include "core/folded_integer_bit_decoder.h" -#include "core/math_utils.h" -#include "core/rans_bit_decoder.h" +#include "draco/compression/point_cloud/algorithms/point_cloud_types.h" +#include "draco/compression/point_cloud/algorithms/queuing_policy.h" +#include "draco/core/bit_coders/adaptive_rans_bit_decoder.h" +#include "draco/core/bit_coders/direct_bit_decoder.h" +#include "draco/core/bit_coders/folded_integer_bit_decoder.h" +#include "draco/core/bit_coders/rans_bit_decoder.h" +#include "draco/core/bit_utils.h" +#include "draco/core/decoder_buffer.h" +#include "draco/core/math_utils.h" namespace draco { @@ -111,9 +113,9 @@ class IntegerPointsKdTreeDecoder { std::array levels, uint32_t last_axis); template - void OctreeDecode(uint32_t num_remaining_points, PointDiT base, - std::array levels, uint32_t last_axis, - OutputIteratorT oit); + void DecodeInternal(uint32_t num_remaining_points, PointDiT base, + std::array levels, uint32_t last_axis, + OutputIteratorT oit); void DecodeNumber(int nbits, uint32_t *value) { numbers_decoder_.DecodeLeastSignificantBits32(nbits, value); @@ -165,8 +167,8 @@ bool IntegerPointsKdTreeDecoder::DecodePoints( if (!half_decoder_.StartDecoding(buffer)) return false; - OctreeDecode(num_points_, PointTraits::Origin(), - PointTraits::ZeroArray(), 0, oit); + DecodeInternal(num_points_, PointTraits::Origin(), + PointTraits::ZeroArray(), 0, oit); numbers_decoder_.EndDecoding(); remaining_bits_decoder_.EndDecoding(); @@ -199,7 +201,7 @@ uint32_t IntegerPointsKdTreeDecoder::GetAxis( template template -void IntegerPointsKdTreeDecoder::OctreeDecode( +void IntegerPointsKdTreeDecoder::DecodeInternal( uint32_t num_remaining_points, PointDiT old_base, std::array levels, uint32_t last_axis, OutputIteratorT oit) { DecodingStatus init_status(num_remaining_points, old_base, levels, last_axis); diff --git a/compression/point_cloud/algorithms/integer_points_kd_tree_encoder.cc b/src/draco/compression/point_cloud/algorithms/integer_points_kd_tree_encoder.cc similarity index 92% rename from compression/point_cloud/algorithms/integer_points_kd_tree_encoder.cc rename to src/draco/compression/point_cloud/algorithms/integer_points_kd_tree_encoder.cc index bbcab6a6..ee105950 100644 --- a/compression/point_cloud/algorithms/integer_points_kd_tree_encoder.cc +++ b/src/draco/compression/point_cloud/algorithms/integer_points_kd_tree_encoder.cc @@ -12,9 +12,9 @@ // See the License for the specific language governing permissions and // limitations under the License. // -#include "compression/point_cloud/algorithms/integer_points_kd_tree_encoder.h" +#include "draco/compression/point_cloud/algorithms/integer_points_kd_tree_encoder.h" -#include "compression/point_cloud/algorithms/point_cloud_types.h" +#include "draco/compression/point_cloud/algorithms/point_cloud_types.h" namespace draco { diff --git a/compression/point_cloud/algorithms/integer_points_kd_tree_encoder.h b/src/draco/compression/point_cloud/algorithms/integer_points_kd_tree_encoder.h similarity index 92% rename from compression/point_cloud/algorithms/integer_points_kd_tree_encoder.h rename to src/draco/compression/point_cloud/algorithms/integer_points_kd_tree_encoder.h index b28eec75..3585084e 100644 --- a/compression/point_cloud/algorithms/integer_points_kd_tree_encoder.h +++ b/src/draco/compression/point_cloud/algorithms/integer_points_kd_tree_encoder.h @@ -12,6 +12,7 @@ // See the License for the specific language governing permissions and // limitations under the License. // +// TODO(hemmer): Make this a wrapper using DynamicIntegerPointsKdTreeEncoder. #ifndef DRACO_COMPRESSION_POINT_CLOUD_ALGORITHMS_INTEGER_POINTS_KD_TREE_ENCODER_H_ #define DRACO_COMPRESSION_POINT_CLOUD_ALGORITHMS_INTEGER_POINTS_KD_TREE_ENCODER_H_ @@ -20,15 +21,15 @@ #include #include -#include "compression/point_cloud/algorithms/point_cloud_types.h" -#include "compression/point_cloud/algorithms/queuing_policy.h" -#include "core/adaptive_rans_bit_encoder.h" -#include "core/bit_utils.h" -#include "core/direct_bit_encoder.h" -#include "core/encoder_buffer.h" -#include "core/folded_integer_bit_encoder.h" -#include "core/math_utils.h" -#include "core/rans_bit_encoder.h" +#include "draco/compression/point_cloud/algorithms/point_cloud_types.h" +#include "draco/compression/point_cloud/algorithms/queuing_policy.h" +#include "draco/core/bit_coders/adaptive_rans_bit_encoder.h" +#include "draco/core/bit_coders/direct_bit_encoder.h" +#include "draco/core/bit_coders/folded_integer_bit_encoder.h" +#include "draco/core/bit_coders/rans_bit_encoder.h" +#include "draco/core/bit_utils.h" +#include "draco/core/encoder_buffer.h" +#include "draco/core/math_utils.h" namespace draco { @@ -141,13 +142,13 @@ class IntegerPointsKdTreeEncoder { uint32_t last_axis); template - void OctreeEncode(RandomAccessIteratorT begin, RandomAccessIteratorT end, - PointDiT old_base, std::array levels, - uint32_t last_axis); + void EncodeInternal(RandomAccessIteratorT begin, RandomAccessIteratorT end, + PointDiT old_base, std::array levels, + uint32_t last_axis); - class OctreeLess { + class Splitter { public: - OctreeLess(int axis, uint32_t value) : axis_(axis), value_(value) {} + Splitter(int axis, uint32_t value) : axis_(axis), value_(value) {} bool operator()(const PointDiT &a) { return a[axis_] < value_; } private: @@ -211,8 +212,8 @@ bool IntegerPointsKdTreeEncoder::EncodePoints( axis_encoder_.StartEncoding(); half_encoder_.StartEncoding(); - OctreeEncode(begin, end, PointTraits::Origin(), - PointTraits::ZeroArray(), 0); + EncodeInternal(begin, end, PointTraits::Origin(), + PointTraits::ZeroArray(), 0); numbers_encoder_.EndEncoding(buffer); remaining_bits_encoder_.EndEncoding(buffer); @@ -231,7 +232,7 @@ uint32_t IntegerPointsKdTreeEncoder::GetAxis( return DRACO_INCREMENT_MOD(last_axis, D); // For many points this function selects the axis that should be used - // for the split by keeping as many points as possible bundeled. + // for the split by keeping as many points as possible bundled. // In the best case we do not split the point cloud at all. // For lower number of points, we simply choose the axis that is refined the // least so far. @@ -289,7 +290,7 @@ uint32_t IntegerPointsKdTreeEncoder::GetAxis( template template -void IntegerPointsKdTreeEncoder::OctreeEncode( +void IntegerPointsKdTreeEncoder::EncodeInternal( RandomAccessIteratorT begin, RandomAccessIteratorT end, PointDiT old_base, std::array levels, uint32_t last_axis) { EncodingStatus init_status(begin, end, old_base, @@ -349,7 +350,7 @@ void IntegerPointsKdTreeEncoder::OctreeEncode( PointDiT new_base(old_base); new_base[axis] += modifier; const RandomAccessIteratorT split = - std::partition(begin, end, OctreeLess(axis, new_base[axis])); + std::partition(begin, end, Splitter(axis, new_base[axis])); DCHECK_EQ(true, (end - begin) > 0); diff --git a/compression/point_cloud/algorithms/point_cloud_compression_method.h b/src/draco/compression/point_cloud/algorithms/point_cloud_compression_method.h similarity index 100% rename from compression/point_cloud/algorithms/point_cloud_compression_method.h rename to src/draco/compression/point_cloud/algorithms/point_cloud_compression_method.h diff --git a/compression/point_cloud/algorithms/point_cloud_types.h b/src/draco/compression/point_cloud/algorithms/point_cloud_types.h similarity index 97% rename from compression/point_cloud/algorithms/point_cloud_types.h rename to src/draco/compression/point_cloud/algorithms/point_cloud_types.h index c87c4924..bfa77ad5 100644 --- a/compression/point_cloud/algorithms/point_cloud_types.h +++ b/src/draco/compression/point_cloud/algorithms/point_cloud_types.h @@ -18,7 +18,7 @@ #include #include -#include "core/vector_d.h" +#include "draco/core/vector_d.h" namespace draco { @@ -27,6 +27,7 @@ typedef Vector3f Point3f; typedef Vector4f Point4f; typedef Vector3ui Point3ui; typedef Vector4ui Point4ui; +typedef Vector5ui Point5ui; typedef std::vector PointCloud3f; diff --git a/compression/point_cloud/algorithms/quantize_points_3.h b/src/draco/compression/point_cloud/algorithms/quantize_points_3.h similarity index 96% rename from compression/point_cloud/algorithms/quantize_points_3.h rename to src/draco/compression/point_cloud/algorithms/quantize_points_3.h index 62529341..f4c4e1e7 100644 --- a/compression/point_cloud/algorithms/quantize_points_3.h +++ b/src/draco/compression/point_cloud/algorithms/quantize_points_3.h @@ -16,8 +16,8 @@ #define DRACO_COMPRESSION_POINT_CLOUD_ALGORITHMS_QUANTIZE_POINTS_3_H_ #include -#include "compression/point_cloud/algorithms/point_cloud_types.h" -#include "core/quantization_utils.h" +#include "draco/compression/point_cloud/algorithms/point_cloud_types.h" +#include "draco/core/quantization_utils.h" namespace draco { diff --git a/compression/point_cloud/algorithms/queuing_policy.h b/src/draco/compression/point_cloud/algorithms/queuing_policy.h similarity index 96% rename from compression/point_cloud/algorithms/queuing_policy.h rename to src/draco/compression/point_cloud/algorithms/queuing_policy.h index bc34e7f7..e616499d 100644 --- a/compression/point_cloud/algorithms/queuing_policy.h +++ b/src/draco/compression/point_cloud/algorithms/queuing_policy.h @@ -12,7 +12,7 @@ // See the License for the specific language governing permissions and // limitations under the License. // -// File defining a coherent interface for different queing strategies. +// File defining a coherent interface for different queuing strategies. #ifndef DRACO_COMPRESSION_POINT_CLOUD_ALGORITHMS_QUEUING_POLICY_H_ #define DRACO_COMPRESSION_POINT_CLOUD_ALGORITHMS_QUEUING_POLICY_H_ diff --git a/compression/point_cloud/point_cloud_decoder.cc b/src/draco/compression/point_cloud/point_cloud_decoder.cc similarity index 51% rename from compression/point_cloud/point_cloud_decoder.cc rename to src/draco/compression/point_cloud/point_cloud_decoder.cc index f34f7b6a..9b03d5d3 100644 --- a/compression/point_cloud/point_cloud_decoder.cc +++ b/src/draco/compression/point_cloud/point_cloud_decoder.cc @@ -12,7 +12,9 @@ // See the License for the specific language governing permissions and // limitations under the License. // -#include "compression/point_cloud/point_cloud_decoder.h" +#include "draco/compression/point_cloud/point_cloud_decoder.h" + +#include "draco/metadata/metadata_decoder.h" namespace draco { @@ -20,39 +22,52 @@ PointCloudDecoder::PointCloudDecoder() : point_cloud_(nullptr), buffer_(nullptr), version_major_(0), - version_minor_(0) {} + version_minor_(0), + options_(nullptr) {} -bool PointCloudDecoder::DecodeHeader(DecoderBuffer *buffer, - DracoHeader *out_header) { - // TODO(ostava): Add error codes for better error reporting. +Status PointCloudDecoder::DecodeHeader(DecoderBuffer *buffer, + DracoHeader *out_header) { + constexpr char kIoErrorMsg[] = "Failed to parse Draco header."; if (!buffer->Decode(out_header->draco_string, 5)) - return false; + return Status(Status::IO_ERROR, kIoErrorMsg); if (memcmp(out_header->draco_string, "DRACO", 5) != 0) - return false; // Wrong file format? + return Status(Status::ERROR, "Not a Draco file."); if (!buffer->Decode(&(out_header->version_major))) - return false; + return Status(Status::IO_ERROR, kIoErrorMsg); if (!buffer->Decode(&(out_header->version_minor))) - return false; + return Status(Status::IO_ERROR, kIoErrorMsg); if (!buffer->Decode(&(out_header->encoder_type))) - return false; + return Status(Status::IO_ERROR, kIoErrorMsg); if (!buffer->Decode(&(out_header->encoder_method))) - return false; + return Status(Status::IO_ERROR, kIoErrorMsg); if (!buffer->Decode(&(out_header->flags))) - return false; - return true; + return Status(Status::IO_ERROR, kIoErrorMsg); + return OkStatus(); +} + +Status PointCloudDecoder::DecodeMetadata() { + std::unique_ptr metadata = + std::unique_ptr(new GeometryMetadata()); + MetadataDecoder metadata_decoder; + if (!metadata_decoder.DecodeGeometryMetadata(buffer_, metadata.get())) + return Status(Status::ERROR, "Failed to decode metadata."); + point_cloud_->AddMetadata(std::move(metadata)); + return OkStatus(); } -bool PointCloudDecoder::Decode(DecoderBuffer *in_buffer, - PointCloud *out_point_cloud) { +Status PointCloudDecoder::Decode(const DecoderOptions &options, + DecoderBuffer *in_buffer, + PointCloud *out_point_cloud) { + options_ = &options; buffer_ = in_buffer; point_cloud_ = out_point_cloud; DracoHeader header; - if (!DecodeHeader(buffer_, &header)) - return false; + DRACO_RETURN_IF_ERROR(DecodeHeader(buffer_, &header)) // Sanity check that we are really using the right decoder (mostly for cases // where the Decode method was called manually outside of our main API. if (header.encoder_type != GetGeometryType()) - return false; + return Status(Status::ERROR, + "Using incompatible decoder for the input geometry."); // TODO(ostava): We should check the method as well, but currently decoders // don't expose the decoding method id. version_major_ = header.version_major; @@ -60,18 +75,24 @@ bool PointCloudDecoder::Decode(DecoderBuffer *in_buffer, // Check for version compatibility. if (version_major_ < 1 || version_major_ > kDracoBitstreamVersionMajor) - return false; + return Status(Status::UNKNOWN_VERSION, "Unknown major version."); if (version_major_ == kDracoBitstreamVersionMajor && version_minor_ > kDracoBitstreamVersionMinor) - return false; + return Status(Status::UNKNOWN_VERSION, "Unknown minor version."); + buffer_->set_bitstream_version( + DRACO_BITSTREAM_VERSION(version_major_, version_minor_)); + if (bitstream_version() >= DRACO_BITSTREAM_VERSION(1, 3) && + (header.flags & METADATA_FLAG_MASK)) { + DRACO_RETURN_IF_ERROR(DecodeMetadata()) + } if (!InitializeDecoder()) - return false; + return Status(Status::ERROR, "Failed to initialize the decoder."); if (!DecodeGeometryData()) - return false; + return Status(Status::ERROR, "Failed to decode geometry data."); if (!DecodePointAttributes()) - return false; - return true; + return Status(Status::ERROR, "Failed to decode point attributes."); + return OkStatus(); } bool PointCloudDecoder::DecodePointAttributes() { @@ -98,6 +119,18 @@ bool PointCloudDecoder::DecodePointAttributes() { return false; } + // Create map between attribute and decoder ids. + for (int i = 0; i < num_attributes_decoders; ++i) { + const int32_t num_attributes = attributes_decoders_[i]->GetNumAttributes(); + for (int j = 0; j < num_attributes; ++j) { + int att_id = attributes_decoders_[i]->GetAttributeId(j); + if (att_id >= attribute_to_decoder_map_.size()) { + attribute_to_decoder_map_.resize(att_id + 1); + } + attribute_to_decoder_map_[att_id] = i; + } + } + // Decode the actual attributes using the created attribute decoders. if (!DecodeAllAttributes()) return false; @@ -115,4 +148,14 @@ bool PointCloudDecoder::DecodeAllAttributes() { return true; } +const PointAttribute *PointCloudDecoder::GetPortableAttribute( + int32_t parent_att_id) { + if (parent_att_id < 0 || parent_att_id >= point_cloud_->num_attributes()) + return nullptr; + const int32_t parent_att_decoder_id = + attribute_to_decoder_map_[parent_att_id]; + return attributes_decoders_[parent_att_decoder_id]->GetPortableAttribute( + parent_att_id); +} + } // namespace draco diff --git a/compression/point_cloud/point_cloud_decoder.h b/src/draco/compression/point_cloud/point_cloud_decoder.h similarity index 65% rename from compression/point_cloud/point_cloud_decoder.h rename to src/draco/compression/point_cloud/point_cloud_decoder.h index 24940c46..7ff30385 100644 --- a/compression/point_cloud/point_cloud_decoder.h +++ b/src/draco/compression/point_cloud/point_cloud_decoder.h @@ -15,9 +15,11 @@ #ifndef DRACO_COMPRESSION_POINT_CLOUD_POINT_CLOUD_DECODER_H_ #define DRACO_COMPRESSION_POINT_CLOUD_POINT_CLOUD_DECODER_H_ -#include "compression/attributes/attributes_decoder.h" -#include "compression/config/compression_shared.h" -#include "point_cloud/point_cloud.h" +#include "draco/compression/attributes/attributes_decoder_interface.h" +#include "draco/compression/config/compression_shared.h" +#include "draco/compression/config/decoder_options.h" +#include "draco/core/status.h" +#include "draco/point_cloud/point_cloud.h" namespace draco { @@ -32,23 +34,32 @@ class PointCloudDecoder { // Decodes a Draco header int other provided |out_header|. // Returns false on error. - static bool DecodeHeader(DecoderBuffer *buffer, DracoHeader *out_header); + static Status DecodeHeader(DecoderBuffer *buffer, DracoHeader *out_header); // The main entry point for point cloud decoding. - bool Decode(DecoderBuffer *in_buffer, PointCloud *out_point_cloud); + Status Decode(const DecoderOptions &options, DecoderBuffer *in_buffer, + PointCloud *out_point_cloud); - void SetAttributesDecoder(int att_decoder_id, - std::unique_ptr decoder) { + void SetAttributesDecoder( + int att_decoder_id, std::unique_ptr decoder) { if (att_decoder_id >= static_cast(attributes_decoders_.size())) attributes_decoders_.resize(att_decoder_id + 1); attributes_decoders_[att_decoder_id] = std::move(decoder); } + // Returns an attribute containing decoded data in their portable form that + // is guaranteed to be the same for both encoder and decoder. I.e., it returns + // an attribute before it was transformed back into its final form which may + // be slightly different (non-portable) across platforms. For example, for + // attributes encoded with quantization, this method returns an attribute + // that contains the quantized values (before the dequantization step). + const PointAttribute *GetPortableAttribute(int32_t point_attribute_id); + uint16_t bitstream_version() const { return DRACO_BITSTREAM_VERSION(version_major_, version_minor_); } - const AttributesDecoder *attributes_decoder(int dec_id) { + const AttributesDecoderInterface *attributes_decoder(int dec_id) { return attributes_decoders_[dec_id].get(); } int32_t num_attributes_decoders() const { @@ -61,6 +72,7 @@ class PointCloudDecoder { const PointCloud *point_cloud() const { return point_cloud_; } DecoderBuffer *buffer() { return buffer_; } + const DecoderOptions *options() const { return options_; } protected: // Can be implemented by derived classes to perform any custom initialization @@ -75,11 +87,16 @@ class PointCloudDecoder { virtual bool DecodeAllAttributes(); virtual bool OnAttributesDecoded() { return true; } + Status DecodeMetadata(); + private: // Point cloud that is being filled in by the decoder. PointCloud *point_cloud_; - std::vector> attributes_decoders_; + std::vector> attributes_decoders_; + + // Map between attribute id and decoder id. + std::vector attribute_to_decoder_map_; // Input buffer holding the encoded data. DecoderBuffer *buffer_; @@ -87,6 +104,8 @@ class PointCloudDecoder { // Bit-stream version of the encoder that encoded the input data. uint8_t version_major_; uint8_t version_minor_; + + const DecoderOptions *options_; }; } // namespace draco diff --git a/compression/point_cloud/point_cloud_encoder.cc b/src/draco/compression/point_cloud/point_cloud_encoder.cc similarity index 86% rename from compression/point_cloud/point_cloud_encoder.cc rename to src/draco/compression/point_cloud/point_cloud_encoder.cc index 5a5bcb01..e033c97c 100644 --- a/compression/point_cloud/point_cloud_encoder.cc +++ b/src/draco/compression/point_cloud/point_cloud_encoder.cc @@ -12,7 +12,9 @@ // See the License for the specific language governing permissions and // limitations under the License. // -#include "compression/point_cloud/point_cloud_encoder.h" +#include "draco/compression/point_cloud/point_cloud_encoder.h" + +#include "draco/metadata/metadata_encoder.h" namespace draco { @@ -23,8 +25,8 @@ void PointCloudEncoder::SetPointCloud(const PointCloud &pc) { point_cloud_ = &pc; } -bool PointCloudEncoder::Encode(const EncoderOptions &options, - EncoderBuffer *out_buffer) { +Status PointCloudEncoder::Encode(const EncoderOptions &options, + EncoderBuffer *out_buffer) { options_ = &options; buffer_ = out_buffer; @@ -34,21 +36,21 @@ bool PointCloudEncoder::Encode(const EncoderOptions &options, attributes_encoder_ids_order_.clear(); if (!point_cloud_) - return false; - if (!EncodeHeader()) - return false; + return Status(Status::ERROR, "Invalid input geometry."); + DRACO_RETURN_IF_ERROR(EncodeHeader()) + DRACO_RETURN_IF_ERROR(EncodeMetadata()) if (!InitializeEncoder()) - return false; + return Status(Status::ERROR, "Failed to initialize encoder."); if (!EncodeEncoderData()) - return false; + return Status(Status::ERROR, "Failed to encode internal data."); if (!EncodeGeometryData()) - return false; + return Status(Status::ERROR, "Failed to encode geometry data."); if (!EncodePointAttributes()) - return false; - return true; + return Status(Status::ERROR, "Failed to encode point attributes."); + return OkStatus(); } -bool PointCloudEncoder::EncodeHeader() { +Status PointCloudEncoder::EncodeHeader() { // Encode the header according to our v1 specification. // Five bytes for Draco format. buffer_->Encode("DRACO", 5); @@ -63,8 +65,25 @@ bool PointCloudEncoder::EncodeHeader() { // Unique identifier for the selected encoding method (edgebreaker, etc...). buffer_->Encode(GetEncodingMethod()); // Reserved for flags. - buffer_->Encode(static_cast(0)); - return true; + uint16_t flags = 0; + // First bit of |flags| is reserved for metadata. + if (point_cloud_->GetMetadata()) { + flags |= METADATA_FLAG_MASK; + } + buffer_->Encode(flags); + return OkStatus(); +} + +Status PointCloudEncoder::EncodeMetadata() { + if (!point_cloud_->GetMetadata()) { + return OkStatus(); + } + MetadataEncoder metadata_encoder; + if (!metadata_encoder.EncodeGeometryMetadata(buffer_, + point_cloud_->GetMetadata())) { + return Status(Status::ERROR, "Failed to encode metadata."); + } + return OkStatus(); } bool PointCloudEncoder::EncodePointAttributes() { @@ -139,13 +158,13 @@ bool PointCloudEncoder::MarkParentAttribute(int32_t parent_att_id) { return true; } -const PointAttribute *PointCloudEncoder::GetLossyAttributeData( +const PointAttribute *PointCloudEncoder::GetPortableAttribute( int32_t parent_att_id) { if (parent_att_id < 0 || parent_att_id >= point_cloud_->num_attributes()) return nullptr; const int32_t parent_att_encoder_id = attribute_to_encoder_map_[parent_att_id]; - return attributes_encoders_[parent_att_encoder_id]->GetLossyAttributeData( + return attributes_encoders_[parent_att_encoder_id]->GetPortableAttribute( parent_att_id); } diff --git a/compression/point_cloud/point_cloud_encoder.h b/src/draco/compression/point_cloud/point_cloud_encoder.h similarity index 87% rename from compression/point_cloud/point_cloud_encoder.h rename to src/draco/compression/point_cloud/point_cloud_encoder.h index 8a79fd1f..43bf6bd8 100644 --- a/compression/point_cloud/point_cloud_encoder.h +++ b/src/draco/compression/point_cloud/point_cloud_encoder.h @@ -15,11 +15,12 @@ #ifndef DRACO_COMPRESSION_POINT_CLOUD_POINT_CLOUD_ENCODER_H_ #define DRACO_COMPRESSION_POINT_CLOUD_POINT_CLOUD_ENCODER_H_ -#include "compression/attributes/attributes_encoder.h" -#include "compression/config/compression_shared.h" -#include "compression/config/encoder_options.h" -#include "core/encoder_buffer.h" -#include "point_cloud/point_cloud.h" +#include "draco/compression/attributes/attributes_encoder.h" +#include "draco/compression/config/compression_shared.h" +#include "draco/compression/config/encoder_options.h" +#include "draco/core/encoder_buffer.h" +#include "draco/core/status.h" +#include "draco/point_cloud/point_cloud.h" namespace draco { @@ -35,7 +36,7 @@ class PointCloudEncoder { void SetPointCloud(const PointCloud &pc); // The main entry point that encodes provided point cloud. - bool Encode(const EncoderOptions &options, EncoderBuffer *out_buffer); + Status Encode(const EncoderOptions &options, EncoderBuffer *out_buffer); virtual EncodedGeometryType GetGeometryType() const { return POINT_CLOUD; } @@ -59,11 +60,10 @@ class PointCloudEncoder { // AttributeEncoder::Initialize() method). bool MarkParentAttribute(int32_t parent_att_id); - // Returns an attribute containing the encoded version of the attribute data. - // This is the same data as the original attribute when the attribute is - // encoded with a lossless encoder, but the data can be different when it is - // encoded with a lossy encoder. - const PointAttribute *GetLossyAttributeData(int32_t point_attribute_id); + // Returns an attribute containing portable version of the attribute data that + // is guaranteed to be encoded losslessly. This attribute can be used safely + // as predictor for other attributes. + const PointAttribute *GetPortableAttribute(int32_t point_attribute_id); EncoderBuffer *buffer() { return buffer_; } const EncoderOptions *options() const { return options_; } @@ -110,7 +110,10 @@ class PointCloudEncoder { private: // Encodes Draco header that is the same for all encoders. - bool EncodeHeader(); + Status EncodeHeader(); + + // Encode metadata. + Status EncodeMetadata(); // Rearranges attribute encoders and their attributes to reflect the // underlying attribute dependencies. This ensures that the attributes are diff --git a/compression/point_cloud/point_cloud_kd_tree_decoder.cc b/src/draco/compression/point_cloud/point_cloud_kd_tree_decoder.cc similarity index 89% rename from compression/point_cloud/point_cloud_kd_tree_decoder.cc rename to src/draco/compression/point_cloud/point_cloud_kd_tree_decoder.cc index 6e0ca73c..a2200304 100644 --- a/compression/point_cloud/point_cloud_kd_tree_decoder.cc +++ b/src/draco/compression/point_cloud/point_cloud_kd_tree_decoder.cc @@ -12,9 +12,9 @@ // See the License for the specific language governing permissions and // limitations under the License. // -#include "compression/point_cloud/point_cloud_kd_tree_decoder.h" +#include "draco/compression/point_cloud/point_cloud_kd_tree_decoder.h" -#include "compression/attributes/kd_tree_attributes_decoder.h" +#include "draco/compression/attributes/kd_tree_attributes_decoder.h" namespace draco { diff --git a/compression/point_cloud/point_cloud_kd_tree_decoder.h b/src/draco/compression/point_cloud/point_cloud_kd_tree_decoder.h similarity index 94% rename from compression/point_cloud/point_cloud_kd_tree_decoder.h rename to src/draco/compression/point_cloud/point_cloud_kd_tree_decoder.h index 0535cacf..6e192f2a 100644 --- a/compression/point_cloud/point_cloud_kd_tree_decoder.h +++ b/src/draco/compression/point_cloud/point_cloud_kd_tree_decoder.h @@ -15,7 +15,7 @@ #ifndef DRACO_COMPRESSION_POINT_CLOUD_POINT_CLOUD_KD_TREE_DECODER_H_ #define DRACO_COMPRESSION_POINT_CLOUD_POINT_CLOUD_KD_TREE_DECODER_H_ -#include "compression/point_cloud/point_cloud_decoder.h" +#include "draco/compression/point_cloud/point_cloud_decoder.h" namespace draco { diff --git a/compression/point_cloud/point_cloud_kd_tree_encoder.cc b/src/draco/compression/point_cloud/point_cloud_kd_tree_encoder.cc similarity index 89% rename from compression/point_cloud/point_cloud_kd_tree_encoder.cc rename to src/draco/compression/point_cloud/point_cloud_kd_tree_encoder.cc index b97fafaa..d93c38bb 100644 --- a/compression/point_cloud/point_cloud_kd_tree_encoder.cc +++ b/src/draco/compression/point_cloud/point_cloud_kd_tree_encoder.cc @@ -12,8 +12,8 @@ // See the License for the specific language governing permissions and // limitations under the License. // -#include "compression/point_cloud/point_cloud_kd_tree_encoder.h" -#include "compression/attributes/kd_tree_attributes_encoder.h" +#include "draco/compression/point_cloud/point_cloud_kd_tree_encoder.h" +#include "draco/compression/attributes/kd_tree_attributes_encoder.h" namespace draco { diff --git a/compression/point_cloud/point_cloud_kd_tree_encoder.h b/src/draco/compression/point_cloud/point_cloud_kd_tree_encoder.h similarity index 86% rename from compression/point_cloud/point_cloud_kd_tree_encoder.h rename to src/draco/compression/point_cloud/point_cloud_kd_tree_encoder.h index d227ad9c..38243a57 100644 --- a/compression/point_cloud/point_cloud_kd_tree_encoder.h +++ b/src/draco/compression/point_cloud/point_cloud_kd_tree_encoder.h @@ -15,14 +15,14 @@ #ifndef DRACO_COMPRESSION_POINT_CLOUD_POINT_CLOUD_KD_TREE_ENCODER_H_ #define DRACO_COMPRESSION_POINT_CLOUD_POINT_CLOUD_KD_TREE_ENCODER_H_ -#include "compression/point_cloud/point_cloud_encoder.h" +#include "draco/compression/point_cloud/point_cloud_encoder.h" namespace draco { // Encodes a PointCloud using one of the available Kd-tree compression methods. -// See FloatPointsKdTreeEncoder and IntegerPointsKdTreeEncoder for more details. -// Currently, the input PointCloud must satisfy the following requirements to -// use this encoder: +// See FloatPointsKdTreeEncoder and DynamicIntegerPointsKdTreeEncoder for more +// details. Currently, the input PointCloud must satisfy the following +// requirements to use this encoder: // 1. PointCloud has only one attribute of type GeometryAttribute::POSITION. // 2. The position attribute has three components (x,y,z). // 3. The position values are stored as either DT_FLOAT32 or DT_UINT32. diff --git a/compression/point_cloud/point_cloud_kd_tree_encoding_test.cc b/src/draco/compression/point_cloud/point_cloud_kd_tree_encoding_test.cc similarity index 87% rename from compression/point_cloud/point_cloud_kd_tree_encoding_test.cc rename to src/draco/compression/point_cloud/point_cloud_kd_tree_encoding_test.cc index 7ae2a3b6..47c66a5c 100644 --- a/compression/point_cloud/point_cloud_kd_tree_encoding_test.cc +++ b/src/draco/compression/point_cloud/point_cloud_kd_tree_encoding_test.cc @@ -12,13 +12,13 @@ // See the License for the specific language governing permissions and // limitations under the License. // -#include "compression/point_cloud/point_cloud_kd_tree_decoder.h" -#include "compression/point_cloud/point_cloud_kd_tree_encoder.h" -#include "core/draco_test_base.h" -#include "core/draco_test_utils.h" -#include "core/vector_d.h" -#include "io/obj_decoder.h" -#include "point_cloud/point_cloud_builder.h" +#include "draco/compression/point_cloud/point_cloud_kd_tree_decoder.h" +#include "draco/compression/point_cloud/point_cloud_kd_tree_encoder.h" +#include "draco/core/draco_test_base.h" +#include "draco/core/draco_test_utils.h" +#include "draco/core/vector_d.h" +#include "draco/io/obj_decoder.h" +#include "draco/point_cloud/point_cloud_builder.h" namespace draco { @@ -38,7 +38,7 @@ class PointCloudKdTreeEncodingTest : public ::testing::Test { ASSERT_EQ(p0.num_attributes(), p1.num_attributes()); // Currently works only with one attribute. ASSERT_EQ(p0.num_attributes(), 1); - ASSERT_EQ(p0.attribute(0)->components_count(), 3); + ASSERT_EQ(p0.attribute(0)->num_components(), 3); std::vector> points0, points1; for (PointIndex i(0); i < p0.num_points(); ++i) { VectorD pos0, pos1; @@ -66,14 +66,15 @@ class PointCloudKdTreeEncodingTest : public ::testing::Test { EncoderOptions options = EncoderOptions::CreateDefaultOptions(); options.SetGlobalInt("quantization_bits", 12); encoder.SetPointCloud(pc); - ASSERT_TRUE(encoder.Encode(options, &buffer)); + ASSERT_TRUE(encoder.Encode(options, &buffer).ok()); DecoderBuffer dec_buffer; dec_buffer.Init(buffer.data(), buffer.size()); PointCloudKdTreeDecoder decoder; std::unique_ptr out_pc(new PointCloud()); - ASSERT_TRUE(decoder.Decode(&dec_buffer, out_pc.get())); + DecoderOptions dec_options; + ASSERT_TRUE(decoder.Decode(dec_options, &dec_buffer, out_pc.get()).ok()); ComparePointClouds(pc, *out_pc.get()); } diff --git a/compression/point_cloud/point_cloud_sequential_decoder.cc b/src/draco/compression/point_cloud/point_cloud_sequential_decoder.cc similarity index 85% rename from compression/point_cloud/point_cloud_sequential_decoder.cc rename to src/draco/compression/point_cloud/point_cloud_sequential_decoder.cc index def72433..d6f73590 100644 --- a/compression/point_cloud/point_cloud_sequential_decoder.cc +++ b/src/draco/compression/point_cloud/point_cloud_sequential_decoder.cc @@ -12,10 +12,10 @@ // See the License for the specific language governing permissions and // limitations under the License. // -#include "compression/point_cloud/point_cloud_sequential_decoder.h" +#include "draco/compression/point_cloud/point_cloud_sequential_decoder.h" -#include "compression/attributes/linear_sequencer.h" -#include "compression/attributes/sequential_attribute_decoders_controller.h" +#include "draco/compression/attributes/linear_sequencer.h" +#include "draco/compression/attributes/sequential_attribute_decoders_controller.h" namespace draco { diff --git a/compression/point_cloud/point_cloud_sequential_decoder.h b/src/draco/compression/point_cloud/point_cloud_sequential_decoder.h similarity index 95% rename from compression/point_cloud/point_cloud_sequential_decoder.h rename to src/draco/compression/point_cloud/point_cloud_sequential_decoder.h index 259d5e5f..9968dc27 100644 --- a/compression/point_cloud/point_cloud_sequential_decoder.h +++ b/src/draco/compression/point_cloud/point_cloud_sequential_decoder.h @@ -15,7 +15,7 @@ #ifndef DRACO_COMPRESSION_POINT_CLOUD_POINT_CLOUD_SEQUENTIAL_DECODER_H_ #define DRACO_COMPRESSION_POINT_CLOUD_POINT_CLOUD_SEQUENTIAL_DECODER_H_ -#include "compression/point_cloud/point_cloud_decoder.h" +#include "draco/compression/point_cloud/point_cloud_decoder.h" namespace draco { diff --git a/compression/point_cloud/point_cloud_sequential_encoder.cc b/src/draco/compression/point_cloud/point_cloud_sequential_encoder.cc similarity index 87% rename from compression/point_cloud/point_cloud_sequential_encoder.cc rename to src/draco/compression/point_cloud/point_cloud_sequential_encoder.cc index edba3cd5..166a1004 100644 --- a/compression/point_cloud/point_cloud_sequential_encoder.cc +++ b/src/draco/compression/point_cloud/point_cloud_sequential_encoder.cc @@ -12,10 +12,10 @@ // See the License for the specific language governing permissions and // limitations under the License. // -#include "compression/point_cloud/point_cloud_sequential_encoder.h" +#include "draco/compression/point_cloud/point_cloud_sequential_encoder.h" -#include "compression/attributes/linear_sequencer.h" -#include "compression/attributes/sequential_attribute_encoders_controller.h" +#include "draco/compression/attributes/linear_sequencer.h" +#include "draco/compression/attributes/sequential_attribute_encoders_controller.h" namespace draco { diff --git a/compression/point_cloud/point_cloud_sequential_encoder.h b/src/draco/compression/point_cloud/point_cloud_sequential_encoder.h similarity index 96% rename from compression/point_cloud/point_cloud_sequential_encoder.h rename to src/draco/compression/point_cloud/point_cloud_sequential_encoder.h index 0e28f0ab..99727cc7 100644 --- a/compression/point_cloud/point_cloud_sequential_encoder.h +++ b/src/draco/compression/point_cloud/point_cloud_sequential_encoder.h @@ -15,7 +15,7 @@ #ifndef DRACO_COMPRESSION_POINT_CLOUD_POINT_CLOUD_SEQUENTIAL_ENCODER_H_ #define DRACO_COMPRESSION_POINT_CLOUD_POINT_CLOUD_SEQUENTIAL_ENCODER_H_ -#include "compression/point_cloud/point_cloud_encoder.h" +#include "draco/compression/point_cloud/point_cloud_encoder.h" namespace draco { diff --git a/src/draco/compression/point_cloud/point_cloud_sequential_encoding_test.cc b/src/draco/compression/point_cloud/point_cloud_sequential_encoding_test.cc new file mode 100644 index 00000000..f8ead322 --- /dev/null +++ b/src/draco/compression/point_cloud/point_cloud_sequential_encoding_test.cc @@ -0,0 +1,99 @@ +// Copyright 2016 The Draco Authors. +// +// Licensed under the Apache License, Version 2.0 (the "License"); +// you may not use this file except in compliance with the License. +// You may obtain a copy of the License at +// +// http://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an "AS IS" BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// See the License for the specific language governing permissions and +// limitations under the License. +// +#include "draco/compression/point_cloud/point_cloud_sequential_decoder.h" +#include "draco/compression/point_cloud/point_cloud_sequential_encoder.h" +#include "draco/core/draco_test_base.h" +#include "draco/core/draco_test_utils.h" +#include "draco/io/obj_decoder.h" + +namespace draco { + +class PointCloudSequentialEncodingTest : public ::testing::Test { + protected: + std::unique_ptr DecodeObj(const std::string &file_name) const { + const std::string path = GetTestFileFullPath(file_name); + ObjDecoder decoder; + std::unique_ptr pc(new PointCloud()); + if (!decoder.DecodeFromFile(path, pc.get())) + return nullptr; + return pc; + } + + std::unique_ptr EncodeAndDecodePointCloud(const PointCloud *pc) { + EncoderBuffer buffer; + PointCloudSequentialEncoder encoder; + EncoderOptions options = EncoderOptions::CreateDefaultOptions(); + encoder.SetPointCloud(*pc); + if (!encoder.Encode(options, &buffer).ok()) + return nullptr; + + DecoderBuffer dec_buffer; + dec_buffer.Init(buffer.data(), buffer.size()); + PointCloudSequentialDecoder decoder; + + std::unique_ptr out_pc(new PointCloud()); + DecoderOptions dec_options; + if (!decoder.Decode(dec_options, &dec_buffer, out_pc.get()).ok()) + return nullptr; + return out_pc; + } + + void TestEncoding(const std::string &file_name) { + std::unique_ptr pc = DecodeObj(file_name); + ASSERT_NE(pc, nullptr); + + std::unique_ptr decoded_pc = + EncodeAndDecodePointCloud(pc.get()); + ASSERT_NE(decoded_pc.get(), nullptr); + ASSERT_EQ(decoded_pc->num_points(), pc->num_points()); + } +}; + +TEST_F(PointCloudSequentialEncodingTest, DoesEncodeAndDecode) { + TestEncoding("test_nm.obj"); +} + +TEST_F(PointCloudSequentialEncodingTest, EncodingPointCloudWithMetadata) { + std::unique_ptr pc = DecodeObj("test_nm.obj"); + ASSERT_NE(pc, nullptr); + // Add metadata to point cloud. + std::unique_ptr metadata = + std::unique_ptr(new GeometryMetadata()); + const uint32_t pos_att_id = + pc->GetNamedAttributeId(GeometryAttribute::POSITION); + std::unique_ptr pos_metadata = + std::unique_ptr(new AttributeMetadata(pos_att_id)); + pos_metadata->AddEntryString("name", "position"); + metadata->AddAttributeMetadata(std::move(pos_metadata)); + pc->AddMetadata(std::move(metadata)); + + std::unique_ptr decoded_pc = EncodeAndDecodePointCloud(pc.get()); + ASSERT_NE(decoded_pc.get(), nullptr); + + const GeometryMetadata *const pc_metadata = decoded_pc->GetMetadata(); + ASSERT_NE(pc_metadata, nullptr); + // Test getting attribute metadata by id. + ASSERT_NE(pc_metadata->GetAttributeMetadata(pos_att_id), nullptr); + // Test getting attribute metadata by entry name value pair. + const AttributeMetadata *const requested_att_metadata = + pc_metadata->GetAttributeMetadataByStringEntry("name", "position"); + ASSERT_NE(requested_att_metadata, nullptr); + ASSERT_EQ(requested_att_metadata->attribute_id(), pos_att_id); +} + +// TODO(ostava): Test the reusability of a single instance of the encoder and +// decoder class. + +} // namespace draco diff --git a/core/ans.h b/src/draco/core/ans.h similarity index 98% rename from core/ans.h rename to src/draco/core/ans.h index c02fb486..fcf0e17d 100644 --- a/core/ans.h +++ b/src/draco/core/ans.h @@ -15,16 +15,16 @@ #ifndef DRACO_CORE_ANS_H_ #define DRACO_CORE_ANS_H_ // An implementation of Asymmetric Numeral Systems (rANS). -// See http://arxiv.org/abs/1311.2540v2 for more informaiton on rANS. +// See http://arxiv.org/abs/1311.2540v2 for more information on rANS. // This file is based off libvpx's ans.h. #include #define ANS_DIVIDE_BY_MULTIPLY 1 #if ANS_DIVIDE_BY_MULTIPLY -#include "core/divide.h" +#include "draco/core/divide.h" #endif -#include "core/macros.h" +#include "draco/core/macros.h" namespace draco { @@ -313,7 +313,7 @@ static inline int ans_read_init(struct AnsDecoder *const ans, ans->buf_offset = offset - 3; ans->state = mem_get_le24(buf + offset - 3) & 0x3FFFFF; } else { - // x == 3 implies this byte is a superframe marker + // x == 3 implies this byte is a super frame marker return 1; } ans->state += l_base; @@ -465,7 +465,7 @@ class RAnsDecoder { return sym.val; } - // Construct a look up table with |rans_precision| number of entries. + // Construct a lookup table with |rans_precision| number of entries. // Returns false if the table couldn't be built (because of wrong input data). inline bool rans_build_look_up_table(const uint32_t token_probs[], uint32_t num_symbols) { diff --git a/core/adaptive_rans_bit_coding_shared.h b/src/draco/core/bit_coders/adaptive_rans_bit_coding_shared.h similarity index 84% rename from core/adaptive_rans_bit_coding_shared.h rename to src/draco/core/bit_coders/adaptive_rans_bit_coding_shared.h index da9bdf40..b8f73a05 100644 --- a/core/adaptive_rans_bit_coding_shared.h +++ b/src/draco/core/bit_coders/adaptive_rans_bit_coding_shared.h @@ -13,10 +13,10 @@ // limitations under the License. // // File provides shared functions for adaptive rANS bit coding. -#ifndef DRACO_CORE_ADAPTIVE_RANS_BIT_CODING_SHARED_H_ -#define DRACO_CORE_ADAPTIVE_RANS_BIT_CODING_SHARED_H_ +#ifndef DRACO_CORE_BIT_CODERS_ADAPTIVE_RANS_BIT_CODING_SHARED_H_ +#define DRACO_CORE_BIT_CODERS_ADAPTIVE_RANS_BIT_CODING_SHARED_H_ -#include "core/macros.h" +#include "draco/core/macros.h" namespace draco { @@ -40,4 +40,4 @@ inline double update_probability(double old_p, bool bit) { } // namespace draco -#endif // DRACO_CORE_ADAPTIVE_RANS_BIT_CODING_SHARED_H_ +#endif // DRACO_CORE_BIT_CODERS_ADAPTIVE_RANS_BIT_CODING_SHARED_H_ diff --git a/core/adaptive_rans_bit_decoder.cc b/src/draco/core/bit_coders/adaptive_rans_bit_decoder.cc similarity index 93% rename from core/adaptive_rans_bit_decoder.cc rename to src/draco/core/bit_coders/adaptive_rans_bit_decoder.cc index d06aa2b1..88b881e5 100644 --- a/core/adaptive_rans_bit_decoder.cc +++ b/src/draco/core/bit_coders/adaptive_rans_bit_decoder.cc @@ -12,9 +12,9 @@ // See the License for the specific language governing permissions and // limitations under the License. // -#include "core/adaptive_rans_bit_decoder.h" +#include "draco/core/bit_coders/adaptive_rans_bit_decoder.h" -#include "core/adaptive_rans_bit_coding_shared.h" +#include "draco/core/bit_coders/adaptive_rans_bit_coding_shared.h" namespace draco { diff --git a/core/adaptive_rans_bit_decoder.h b/src/draco/core/bit_coders/adaptive_rans_bit_decoder.h similarity index 84% rename from core/adaptive_rans_bit_decoder.h rename to src/draco/core/bit_coders/adaptive_rans_bit_decoder.h index de40bb22..cf192c0f 100644 --- a/core/adaptive_rans_bit_decoder.h +++ b/src/draco/core/bit_coders/adaptive_rans_bit_decoder.h @@ -13,13 +13,13 @@ // limitations under the License. // // File provides basic classes and functions for rANS bit decoding. -#ifndef DRACO_CORE_ADAPTIVE_RANS_BIT_DECODER_H_ -#define DRACO_CORE_ADAPTIVE_RANS_BIT_DECODER_H_ +#ifndef DRACO_CORE_BIT_CODERS_ADAPTIVE_RANS_BIT_DECODER_H_ +#define DRACO_CORE_BIT_CODERS_ADAPTIVE_RANS_BIT_DECODER_H_ #include -#include "core/ans.h" -#include "core/decoder_buffer.h" +#include "draco/core/ans.h" +#include "draco/core/decoder_buffer.h" namespace draco { @@ -51,4 +51,4 @@ class AdaptiveRAnsBitDecoder { } // namespace draco -#endif // DRACO_CORE_ADAPTIVE_RANS_BIT_DECODER_H_ +#endif // DRACO_CORE_BIT_CODERS_ADAPTIVE_RANS_BIT_DECODER_H_ diff --git a/core/adaptive_rans_bit_encoder.cc b/src/draco/core/bit_coders/adaptive_rans_bit_encoder.cc similarity index 93% rename from core/adaptive_rans_bit_encoder.cc rename to src/draco/core/bit_coders/adaptive_rans_bit_encoder.cc index ac16d24a..b8605eaf 100644 --- a/core/adaptive_rans_bit_encoder.cc +++ b/src/draco/core/bit_coders/adaptive_rans_bit_encoder.cc @@ -12,9 +12,9 @@ // See the License for the specific language governing permissions and // limitations under the License. // -#include "core/adaptive_rans_bit_encoder.h" +#include "draco/core/bit_coders/adaptive_rans_bit_encoder.h" -#include "core/adaptive_rans_bit_coding_shared.h" +#include "draco/core/bit_coders/adaptive_rans_bit_coding_shared.h" namespace draco { diff --git a/core/adaptive_rans_bit_encoder.h b/src/draco/core/bit_coders/adaptive_rans_bit_encoder.h similarity index 83% rename from core/adaptive_rans_bit_encoder.h rename to src/draco/core/bit_coders/adaptive_rans_bit_encoder.h index da0cc5a2..a5c329eb 100644 --- a/core/adaptive_rans_bit_encoder.h +++ b/src/draco/core/bit_coders/adaptive_rans_bit_encoder.h @@ -13,13 +13,13 @@ // limitations under the License. // // File provides basic classes and functions for rANS bit encoding. -#ifndef DRACO_CORE_ADAPTIVE_RANS_BIT_ENCODER_H_ -#define DRACO_CORE_ADAPTIVE_RANS_BIT_ENCODER_H_ +#ifndef DRACO_CORE_BIT_CODERS_ADAPTIVE_RANS_BIT_ENCODER_H_ +#define DRACO_CORE_BIT_CODERS_ADAPTIVE_RANS_BIT_ENCODER_H_ #include -#include "core/ans.h" -#include "core/encoder_buffer.h" +#include "draco/core/ans.h" +#include "draco/core/encoder_buffer.h" namespace draco { @@ -35,7 +35,7 @@ class AdaptiveRAnsBitEncoder { // Encode one bit. If |bit| is true encode a 1, otherwise encode a 0. void EncodeBit(bool bit) { bits_.push_back(bit); } - // Encode |nibts| of |value|, starting from the least significant bit. + // Encode |nbits| of |value|, starting from the least significant bit. // |nbits| must be > 0 and <= 32. void EncodeLeastSignificantBits32(int nbits, uint32_t value) { DCHECK_EQ(true, nbits <= 32); @@ -58,4 +58,4 @@ class AdaptiveRAnsBitEncoder { } // namespace draco -#endif // DRACO_CORE_ADAPTIVE_RANS_BIT_ENCODER_H_ +#endif // DRACO_CORE_BIT_CODERS_ADAPTIVE_RANS_BIT_ENCODER_H_ diff --git a/core/direct_bit_decoder.cc b/src/draco/core/bit_coders/direct_bit_decoder.cc similarity index 79% rename from core/direct_bit_decoder.cc rename to src/draco/core/bit_coders/direct_bit_decoder.cc index 9d20bbcf..e3338a77 100644 --- a/core/direct_bit_decoder.cc +++ b/src/draco/core/bit_coders/direct_bit_decoder.cc @@ -12,7 +12,7 @@ // See the License for the specific language governing permissions and // limitations under the License. // -#include "core/direct_bit_decoder.h" +#include "draco/core/bit_coders/direct_bit_decoder.h" namespace draco { @@ -25,9 +25,15 @@ bool DirectBitDecoder::StartDecoding(DecoderBuffer *source_buffer) { uint32_t size_in_bytes; if (!source_buffer->Decode(&size_in_bytes)) return false; + + // Check that size_in_bytes is > 0 and a multiple of 4 as the encoder always + // encodes 32 bit elements. + if (size_in_bytes == 0 || size_in_bytes & 0x3) + return false; if (size_in_bytes > source_buffer->remaining_size()) return false; - bits_.resize(size_in_bytes / 4); + const uint32_t num_32bit_elements = size_in_bytes / 4; + bits_.resize(num_32bit_elements); if (!source_buffer->Decode(bits_.data(), size_in_bytes)) return false; pos_ = bits_.begin(); diff --git a/core/direct_bit_decoder.h b/src/draco/core/bit_coders/direct_bit_decoder.h similarity index 88% rename from core/direct_bit_decoder.h rename to src/draco/core/bit_coders/direct_bit_decoder.h index 4653f22a..5b394525 100644 --- a/core/direct_bit_decoder.h +++ b/src/draco/core/bit_coders/direct_bit_decoder.h @@ -12,13 +12,13 @@ // See the License for the specific language governing permissions and // limitations under the License. // -// File provides direct encoding of bits with arthmetic encoder interface. -#ifndef DRACO_CORE_DIRECT_BIT_DECODER_H_ -#define DRACO_CORE_DIRECT_BIT_DECODER_H_ +// File provides direct encoding of bits with arithmetic encoder interface. +#ifndef DRACO_CORE_BIT_CODERS_DIRECT_BIT_DECODER_H_ +#define DRACO_CORE_BIT_CODERS_DIRECT_BIT_DECODER_H_ #include -#include "core/decoder_buffer.h" +#include "draco/core/decoder_buffer.h" namespace draco { @@ -76,4 +76,4 @@ class DirectBitDecoder { } // namespace draco -#endif // DRACO_CORE_DIRECT_BIT_DECODER_H_ +#endif // DRACO_CORE_BIT_CODERS_DIRECT_BIT_DECODER_H_ diff --git a/core/direct_bit_encoder.cc b/src/draco/core/bit_coders/direct_bit_encoder.cc similarity index 95% rename from core/direct_bit_encoder.cc rename to src/draco/core/bit_coders/direct_bit_encoder.cc index 10bb6fcb..c53b46c3 100644 --- a/core/direct_bit_encoder.cc +++ b/src/draco/core/bit_coders/direct_bit_encoder.cc @@ -12,7 +12,7 @@ // See the License for the specific language governing permissions and // limitations under the License. // -#include "core/direct_bit_encoder.h" +#include "draco/core/bit_coders/direct_bit_encoder.h" namespace draco { diff --git a/core/direct_bit_encoder.h b/src/draco/core/bit_coders/direct_bit_encoder.h similarity index 87% rename from core/direct_bit_encoder.h rename to src/draco/core/bit_coders/direct_bit_encoder.h index 41086fe2..b25344e8 100644 --- a/core/direct_bit_encoder.h +++ b/src/draco/core/bit_coders/direct_bit_encoder.h @@ -12,13 +12,13 @@ // See the License for the specific language governing permissions and // limitations under the License. // -// File provides direct encoding of bits with arthmetic encoder interface. -#ifndef DRACO_CORE_DIRECT_BIT_ENCODER_H_ -#define DRACO_CORE_DIRECT_BIT_ENCODER_H_ +// File provides direct encoding of bits with arithmetic encoder interface. +#ifndef DRACO_CORE_BIT_CODERS_DIRECT_BIT_ENCODER_H_ +#define DRACO_CORE_BIT_CODERS_DIRECT_BIT_ENCODER_H_ #include -#include "core/encoder_buffer.h" +#include "draco/core/encoder_buffer.h" namespace draco { @@ -43,7 +43,7 @@ class DirectBitEncoder { } } - // Encode |nibts| of |value|, starting from the least significant bit. + // Encode |nbits| of |value|, starting from the least significant bit. // |nbits| must be > 0 and <= 32. void EncodeLeastSignificantBits32(int nbits, uint32_t value) { DCHECK_EQ(true, nbits <= 32); @@ -86,4 +86,4 @@ class DirectBitEncoder { } // namespace draco -#endif // DRACO_CORE_DIRECT_BIT_ENCODER_H_ +#endif // DRACO_CORE_BIT_CODERS_DIRECT_BIT_ENCODER_H_ diff --git a/core/folded_integer_bit_decoder.h b/src/draco/core/bit_coders/folded_integer_bit_decoder.h similarity index 90% rename from core/folded_integer_bit_decoder.h rename to src/draco/core/bit_coders/folded_integer_bit_decoder.h index 6064b49d..8cc65616 100644 --- a/core/folded_integer_bit_decoder.h +++ b/src/draco/core/bit_coders/folded_integer_bit_decoder.h @@ -13,12 +13,12 @@ // limitations under the License. // // File provides direct encoding of bits with arithmetic encoder interface. -#ifndef DRACO_CORE_FOLDED_INTEGER_BIT_DECODER_H_ -#define DRACO_CORE_FOLDED_INTEGER_BIT_DECODER_H_ +#ifndef DRACO_CORE_BIT_CODERS_FOLDED_INTEGER_BIT_DECODER_H_ +#define DRACO_CORE_BIT_CODERS_FOLDED_INTEGER_BIT_DECODER_H_ #include -#include "core/decoder_buffer.h" +#include "draco/core/decoder_buffer.h" namespace draco { @@ -73,4 +73,4 @@ class FoldedBit32Decoder { } // namespace draco -#endif // DRACO_CORE_FOLDED_INTEGER_BIT_DECODER_H_ +#endif // DRACO_CORE_BIT_CODERS_FOLDED_INTEGER_BIT_DECODER_H_ diff --git a/core/folded_integer_bit_encoder.h b/src/draco/core/bit_coders/folded_integer_bit_encoder.h similarity index 92% rename from core/folded_integer_bit_encoder.h rename to src/draco/core/bit_coders/folded_integer_bit_encoder.h index fff36f27..b5d1bf03 100644 --- a/core/folded_integer_bit_encoder.h +++ b/src/draco/core/bit_coders/folded_integer_bit_encoder.h @@ -13,12 +13,12 @@ // limitations under the License. // // File provides direct encoding of bits with arithmetic encoder interface. -#ifndef DRACO_CORE_FOLDED_INTEGER_BIT_ENCODER_H_ -#define DRACO_CORE_FOLDED_INTEGER_BIT_ENCODER_H_ +#ifndef DRACO_CORE_BIT_CODERS_FOLDED_INTEGER_BIT_ENCODER_H_ +#define DRACO_CORE_BIT_CODERS_FOLDED_INTEGER_BIT_ENCODER_H_ #include -#include "core/encoder_buffer.h" +#include "draco/core/encoder_buffer.h" namespace draco { @@ -79,4 +79,4 @@ class FoldedBit32Encoder { } // namespace draco -#endif // DRACO_CORE_FOLDED_INTEGER_BIT_ENCODER_H_ +#endif // DRACO_CORE_BIT_CODERS_FOLDED_INTEGER_BIT_ENCODER_H_ diff --git a/core/rans_bit_decoder.cc b/src/draco/core/bit_coders/rans_bit_decoder.cc similarity index 95% rename from core/rans_bit_decoder.cc rename to src/draco/core/bit_coders/rans_bit_decoder.cc index 5ccf3d98..8550b7f3 100644 --- a/core/rans_bit_decoder.cc +++ b/src/draco/core/bit_coders/rans_bit_decoder.cc @@ -12,9 +12,9 @@ // See the License for the specific language governing permissions and // limitations under the License. // -#include "core/rans_bit_decoder.h" +#include "draco/core/bit_coders/rans_bit_decoder.h" -#include "core/bit_utils.h" +#include "draco/core/bit_utils.h" namespace draco { diff --git a/core/rans_bit_decoder.h b/src/draco/core/bit_coders/rans_bit_decoder.h similarity index 86% rename from core/rans_bit_decoder.h rename to src/draco/core/bit_coders/rans_bit_decoder.h index 497e1799..40e64ca3 100644 --- a/core/rans_bit_decoder.h +++ b/src/draco/core/bit_coders/rans_bit_decoder.h @@ -13,13 +13,13 @@ // limitations under the License. // // File provides basic classes and functions for rANS coding. -#ifndef DRACO_CORE_RANS_BIT_DECODER_H_ -#define DRACO_CORE_RANS_BIT_DECODER_H_ +#ifndef DRACO_CORE_BIT_CODERS_RANS_BIT_DECODER_H_ +#define DRACO_CORE_BIT_CODERS_RANS_BIT_DECODER_H_ #include -#include "core/ans.h" -#include "core/decoder_buffer.h" +#include "draco/core/ans.h" +#include "draco/core/decoder_buffer.h" namespace draco { @@ -51,4 +51,4 @@ class RAnsBitDecoder { } // namespace draco -#endif // DRACO_CORE_RANS_BIT_DECODER_H_ +#endif // DRACO_CORE_BIT_CODERS_RANS_BIT_DECODER_H_ diff --git a/core/rans_bit_encoder.cc b/src/draco/core/bit_coders/rans_bit_encoder.cc similarity index 96% rename from core/rans_bit_encoder.cc rename to src/draco/core/bit_coders/rans_bit_encoder.cc index 323343d1..2a019acd 100644 --- a/core/rans_bit_encoder.cc +++ b/src/draco/core/bit_coders/rans_bit_encoder.cc @@ -12,10 +12,10 @@ // See the License for the specific language governing permissions and // limitations under the License. // -#include "core/rans_bit_encoder.h" +#include "draco/core/bit_coders/rans_bit_encoder.h" -#include "core/ans.h" -#include "core/bit_utils.h" +#include "draco/core/ans.h" +#include "draco/core/bit_utils.h" namespace draco { diff --git a/core/rans_bit_encoder.h b/src/draco/core/bit_coders/rans_bit_encoder.h similarity index 86% rename from core/rans_bit_encoder.h rename to src/draco/core/bit_coders/rans_bit_encoder.h index b6752e11..2142c4e5 100644 --- a/core/rans_bit_encoder.h +++ b/src/draco/core/bit_coders/rans_bit_encoder.h @@ -13,12 +13,12 @@ // limitations under the License. // // File provides basic classes and functions for rANS coding. -#ifndef DRACO_CORE_RANS_BIT_ENCODER_H_ -#define DRACO_CORE_RANS_BIT_ENCODER_H_ +#ifndef DRACO_CORE_BIT_CODERS_RANS_BIT_ENCODER_H_ +#define DRACO_CORE_BIT_CODERS_RANS_BIT_ENCODER_H_ #include -#include "core/encoder_buffer.h" +#include "draco/core/encoder_buffer.h" namespace draco { @@ -36,7 +36,7 @@ class RAnsBitEncoder { // Encode one bit. If |bit| is true encode a 1, otherwise encode a 0. void EncodeBit(bool bit); - // Encode |nibts| of |value|, starting from the least significant bit. + // Encode |nbits| of |value|, starting from the least significant bit. // |nbits| must be > 0 and <= 32. void EncodeLeastSignificantBits32(int nbits, uint32_t value); @@ -54,4 +54,4 @@ class RAnsBitEncoder { } // namespace draco -#endif // DRACO_CORE_RANS_BIT_ENCODER_H_ +#endif // DRACO_CORE_BIT_CODERS_RANS_BIT_ENCODER_H_ diff --git a/src/draco/core/bit_coders/rans_coding_test.cc b/src/draco/core/bit_coders/rans_coding_test.cc new file mode 100644 index 00000000..b8c85b4e --- /dev/null +++ b/src/draco/core/bit_coders/rans_coding_test.cc @@ -0,0 +1,9 @@ +#include "draco/core/bit_coders/adaptive_rans_bit_decoder.h" +#include "draco/core/bit_coders/adaptive_rans_bit_encoder.h" +#include "draco/core/bit_coders/rans_bit_decoder.h" +#include "draco/core/bit_coders/rans_bit_encoder.h" +#include "draco/core/draco_test_base.h" + +// Just including rans_coding.h and adaptive_rans_coding.h gets an asan error +// when compiling (blaze test :rans_coding_test --config=asan) +TEST(RansCodingTest, LinkerTest) {} diff --git a/core/symbol_bit_decoder.cc b/src/draco/core/bit_coders/symbol_bit_decoder.cc similarity index 91% rename from core/symbol_bit_decoder.cc rename to src/draco/core/bit_coders/symbol_bit_decoder.cc index b5cb2f7f..1b20228a 100644 --- a/core/symbol_bit_decoder.cc +++ b/src/draco/core/bit_coders/symbol_bit_decoder.cc @@ -1,6 +1,6 @@ -#include "core/symbol_bit_decoder.h" +#include "draco/core/bit_coders/symbol_bit_decoder.h" -#include "core/symbol_decoding.h" +#include "draco/core/symbol_decoding.h" namespace draco { diff --git a/core/symbol_bit_decoder.h b/src/draco/core/bit_coders/symbol_bit_decoder.h similarity index 79% rename from core/symbol_bit_decoder.h rename to src/draco/core/bit_coders/symbol_bit_decoder.h index a6b8b843..0ef07c22 100644 --- a/core/symbol_bit_decoder.h +++ b/src/draco/core/bit_coders/symbol_bit_decoder.h @@ -1,10 +1,10 @@ -#ifndef DRACO_CORE_SYMBOL_BIT_DECODER_H_ -#define DRACO_CORE_SYMBOL_BIT_DECODER_H_ +#ifndef DRACO_CORE_BIT_CODERS_SYMBOL_BIT_DECODER_H_ +#define DRACO_CORE_BIT_CODERS_SYMBOL_BIT_DECODER_H_ #include #include -#include "core/decoder_buffer.h" +#include "draco/core/decoder_buffer.h" namespace draco { @@ -33,4 +33,4 @@ class SymbolBitDecoder { } // namespace draco -#endif // DRACO_CORE_SYMBOL_BIT_DECODER_H_ +#endif // DRACO_CORE_BIT_CODERS_SYMBOL_BIT_DECODER_H_ diff --git a/core/symbol_bit_encoder.cc b/src/draco/core/bit_coders/symbol_bit_encoder.cc similarity index 86% rename from core/symbol_bit_encoder.cc rename to src/draco/core/bit_coders/symbol_bit_encoder.cc index e0ea968e..c444aa5b 100644 --- a/core/symbol_bit_encoder.cc +++ b/src/draco/core/bit_coders/symbol_bit_encoder.cc @@ -1,6 +1,6 @@ -#include "core/symbol_bit_encoder.h" +#include "draco/core/bit_coders/symbol_bit_encoder.h" -#include "core/symbol_encoding.h" +#include "draco/core/symbol_encoding.h" namespace draco { diff --git a/core/symbol_bit_encoder.h b/src/draco/core/bit_coders/symbol_bit_encoder.h similarity index 75% rename from core/symbol_bit_encoder.h rename to src/draco/core/bit_coders/symbol_bit_encoder.h index 3eb625da..66dfd317 100644 --- a/core/symbol_bit_encoder.h +++ b/src/draco/core/bit_coders/symbol_bit_encoder.h @@ -1,10 +1,10 @@ -#ifndef DRACO_CORE_SYMBOL_BIT_ENCODER_H_ -#define DRACO_CORE_SYMBOL_BIT_ENCODER_H_ +#ifndef DRACO_CORE_BIT_CODERS_SYMBOL_BIT_ENCODER_H_ +#define DRACO_CORE_BIT_CODERS_SYMBOL_BIT_ENCODER_H_ #include #include -#include "core/encoder_buffer.h" +#include "draco/core/encoder_buffer.h" namespace draco { @@ -19,7 +19,7 @@ class SymbolBitEncoder { // Encode one bit. If |bit| is true encode a 1, otherwise encode a 0. void EncodeBit(bool bit) { EncodeLeastSignificantBits32(1, bit ? 1 : 0); } - // Encode |nibts| LSBs of |value| as a symbol. |nbits| must be > 0 and <= 32. + // Encode |nbits| LSBs of |value| as a symbol. |nbits| must be > 0 and <= 32. void EncodeLeastSignificantBits32(int nbits, uint32_t value); // Ends the bit encoding and stores the result into the target_buffer. @@ -33,4 +33,4 @@ class SymbolBitEncoder { } // namespace draco -#endif // DRACO_CORE_SYMBOL_BIT_ENCODER_H_ +#endif // DRACO_CORE_BIT_CODERS_SYMBOL_BIT_ENCODER_H_ diff --git a/core/bit_utils.h b/src/draco/core/bit_utils.h similarity index 95% rename from core/bit_utils.h rename to src/draco/core/bit_utils.h index 05c453a7..419aef3e 100644 --- a/core/bit_utils.h +++ b/src/draco/core/bit_utils.h @@ -19,7 +19,7 @@ #ifndef DRACO_CORE_BIT_UTILS_H_ #define DRACO_CORE_BIT_UTILS_H_ -#include +#include namespace draco { namespace bits { @@ -39,7 +39,7 @@ inline uint32_t ReverseBits32(uint32_t n) { return (n >> 16) | (n << 16); } -// Copies the |bnbits| from the src integer into the |dst| integer using the +// Copies the |nbits| from the src integer into the |dst| integer using the // provided bit offsets |dst_offset| and |src_offset|. inline void CopyBits32(uint32_t *dst, int dst_offset, uint32_t src, int src_offset, int nbits) { diff --git a/core/bit_coder_test.cc b/src/draco/core/buffer_bit_coding_test.cc similarity index 86% rename from core/bit_coder_test.cc rename to src/draco/core/buffer_bit_coding_test.cc index a2c48b5a..e761284e 100644 --- a/core/bit_coder_test.cc +++ b/src/draco/core/buffer_bit_coding_test.cc @@ -12,17 +12,20 @@ // See the License for the specific language governing permissions and // limitations under the License. // -#include "core/bit_coder.h" +#include "draco/core/decoder_buffer.h" +#include "draco/core/encoder_buffer.h" -#include "core/draco_test_base.h" +#include "draco/core/draco_test_base.h" namespace draco { -class BitDecoderTest : public ::testing::Test {}; +class BufferBitCodingTest : public ::testing::Test { + public: + typedef DecoderBuffer::BitDecoder BitDecoder; + typedef EncoderBuffer::BitEncoder BitEncoder; +}; -class BitEncoderTest : public ::testing::Test {}; - -TEST_F(BitDecoderTest, TestBitCodersByteAligned) { +TEST_F(BufferBitCodingTest, TestBitCodersByteAligned) { constexpr int buffer_size = 32; char buffer[buffer_size]; BitEncoder encoder(buffer); @@ -45,7 +48,7 @@ TEST_F(BitDecoderTest, TestBitCodersByteAligned) { ASSERT_EQ(bytes_to_encode * 8u, decoder.BitsDecoded()); } -TEST_F(BitDecoderTest, TestBitCodersNonByte) { +TEST_F(BufferBitCodingTest, TestBitCodersNonByte) { constexpr int buffer_size = 32; char buffer[buffer_size]; BitEncoder encoder(buffer); @@ -77,7 +80,7 @@ TEST_F(BitDecoderTest, TestBitCodersNonByte) { ASSERT_EQ(bits_to_encode, decoder.BitsDecoded()); } -TEST_F(BitDecoderTest, TestSingleBits) { +TEST_F(BufferBitCodingTest, TestSingleBits) { const int data = 0xaaaa; BitDecoder decoder; @@ -92,7 +95,7 @@ TEST_F(BitDecoderTest, TestSingleBits) { ASSERT_EQ(16u, decoder.BitsDecoded()); } -TEST_F(BitDecoderTest, TestMultipleBits) { +TEST_F(BufferBitCodingTest, TestMultipleBits) { const uint8_t data[] = {0x76, 0x54, 0x32, 0x10, 0x76, 0x54, 0x32, 0x10}; BitDecoder decoder; diff --git a/core/cycle_timer.cc b/src/draco/core/cycle_timer.cc similarity index 97% rename from core/cycle_timer.cc rename to src/draco/core/cycle_timer.cc index 46c92857..1eea9f59 100644 --- a/core/cycle_timer.cc +++ b/src/draco/core/cycle_timer.cc @@ -12,7 +12,7 @@ // See the License for the specific language governing permissions and // limitations under the License. // -#include "core/cycle_timer.h" +#include "draco/core/cycle_timer.h" namespace draco { void DracoTimer::Start() { diff --git a/core/cycle_timer.h b/src/draco/core/cycle_timer.h similarity index 100% rename from core/cycle_timer.h rename to src/draco/core/cycle_timer.h diff --git a/core/data_buffer.cc b/src/draco/core/data_buffer.cc similarity index 92% rename from core/data_buffer.cc rename to src/draco/core/data_buffer.cc index 1812bf86..c03bdde0 100644 --- a/core/data_buffer.cc +++ b/src/draco/core/data_buffer.cc @@ -12,7 +12,7 @@ // See the License for the specific language governing permissions and // limitations under the License. // -#include "core/data_buffer.h" +#include "draco/core/data_buffer.h" namespace draco { @@ -51,6 +51,11 @@ bool DataBuffer::Update(const void *data, int64_t size, int64_t offset) { return true; } +void DataBuffer::Resize(int64_t size) { + data_.resize(size); + descriptor_.buffer_update_count++; +} + void DataBuffer::WriteDataToStream(std::ostream &stream) { if (data_.size() == 0) return; diff --git a/core/data_buffer.h b/src/draco/core/data_buffer.h similarity index 93% rename from core/data_buffer.h rename to src/draco/core/data_buffer.h index 329060dd..314460b2 100644 --- a/core/data_buffer.h +++ b/src/draco/core/data_buffer.h @@ -19,7 +19,7 @@ #include #include -#include "core/draco_types.h" +#include "draco/core/draco_types.h" namespace draco { @@ -40,6 +40,9 @@ class DataBuffer { // TODO(zhafang): The two update functions should be combined. I will // leave for now in case it breaks any geometry compression tools. bool Update(const void *data, int64_t size, int64_t offset); + + // Reallocate the buffer storage to a new size keeping the data unchanged. + void Resize(int64_t new_size); void WriteDataToStream(std::ostream &stream); // Reads data from the buffer. Potentially unsafe, called needs to ensure // the accessed memory is valid. @@ -66,6 +69,7 @@ class DataBuffer { int64_t update_count() const { return descriptor_.buffer_update_count; } size_t data_size() const { return data_.size(); } const uint8_t *data() const { return data_.data(); } + uint8_t *data() { return &data_[0]; } int64_t buffer_id() const { return descriptor_.buffer_id; } void set_buffer_id(int64_t buffer_id) { descriptor_.buffer_id = buffer_id; } diff --git a/core/decoder_buffer.cc b/src/draco/core/decoder_buffer.cc similarity index 72% rename from core/decoder_buffer.cc rename to src/draco/core/decoder_buffer.cc index ec2bc458..f911af0d 100644 --- a/core/decoder_buffer.cc +++ b/src/draco/core/decoder_buffer.cc @@ -12,16 +12,25 @@ // See the License for the specific language governing permissions and // limitations under the License. // -#include "core/decoder_buffer.h" +#include "draco/core/decoder_buffer.h" namespace draco { DecoderBuffer::DecoderBuffer() - : data_(nullptr), data_size_(0), pos_(0), bit_mode_(false) {} + : data_(nullptr), + data_size_(0), + pos_(0), + bit_mode_(false), + bitstream_version_(0) {} void DecoderBuffer::Init(const char *data, size_t data_size) { + Init(data, data_size, bitstream_version_); +} + +void DecoderBuffer::Init(const char *data, size_t data_size, uint16_t version) { data_ = data; data_size_ = data_size; + bitstream_version_ = version; pos_ = 0; } @@ -42,4 +51,9 @@ void DecoderBuffer::EndBitDecoding() { pos_ += bytes_decoded; } +DecoderBuffer::BitDecoder::BitDecoder() + : bit_buffer_(nullptr), bit_buffer_end_(nullptr), bit_offset_(0) {} + +DecoderBuffer::BitDecoder::~BitDecoder() {} + } // namespace draco diff --git a/core/decoder_buffer.h b/src/draco/core/decoder_buffer.h similarity index 58% rename from core/decoder_buffer.h rename to src/draco/core/decoder_buffer.h index 8ed363c4..e9306029 100644 --- a/core/decoder_buffer.h +++ b/src/draco/core/decoder_buffer.h @@ -15,11 +15,11 @@ #ifndef DRACO_CORE_DECODER_BUFFER_H_ #define DRACO_CORE_DECODER_BUFFER_H_ -#include +#include #include #include -#include "core/bit_coder.h" +#include "draco/core/macros.h" namespace draco { @@ -37,6 +37,9 @@ class DecoderBuffer { // runtime of the decoder. void Init(const char *data, size_t data_size); + // Sets the buffer's internal data. |version| is the Draco bitstream version. + void Init(const char *data, size_t data_size, uint16_t version); + // Starts decoding a bit sequence. // decode_size must be true if the size of the encoded bit data was included, // during encoding. The size is then returned to out_size. @@ -99,14 +102,97 @@ class DecoderBuffer { // input data. void StartDecodingFrom(int64_t offset) { pos_ = offset; } + void set_bitstream_version(uint16_t version) { bitstream_version_ = version; } + // Returns the data array at the current decoder position. const char *data_head() const { return data_ + pos_; } int64_t remaining_size() const { return data_size_ - pos_; } int64_t decoded_size() const { return pos_; } - BitDecoder *bit_decoder() { return &bit_decoder_; } bool bit_decoder_active() const { return bit_mode_; } + // Returns the bitstream associated with the data. Returns 0 if unknown. + uint16_t bitstream_version() const { return bitstream_version_; } + private: + // Internal helper class to decode bits from a bit buffer. + class BitDecoder { + public: + BitDecoder(); + ~BitDecoder(); + + // Sets the bit buffer to |b|. |s| is the size of |b| in bytes. + inline void reset(const void *b, size_t s) { + bit_offset_ = 0; + bit_buffer_ = static_cast(b); + bit_buffer_end_ = bit_buffer_ + s; + } + + // Returns number of bits decoded so far. + inline uint64_t BitsDecoded() const { + return static_cast(bit_offset_); + } + + // Return number of bits available for decoding + inline uint64_t AvailBits() const { + return ((bit_buffer_end_ - bit_buffer_) * 8) - bit_offset_; + } + + inline uint32_t EnsureBits(int k) { + DCHECK_LE(k, 24); + DCHECK_LE(static_cast(k), AvailBits()); + + uint32_t buf = 0; + for (int i = 0; i < k; ++i) { + buf |= PeekBit(i) << i; + } + return buf; // Okay to return extra bits + } + + inline void ConsumeBits(int k) { bit_offset_ += k; } + + // Returns |nbits| bits in |x|. + inline bool GetBits(int32_t nbits, uint32_t *x) { + DCHECK_GE(nbits, 0); + DCHECK_LE(nbits, 32); + uint32_t value = 0; + for (int32_t bit = 0; bit < nbits; ++bit) + value |= GetBit() << bit; + *x = value; + return true; + } + + private: + // TODO(fgalligan): Add support for error reporting on range check. + // Returns one bit from the bit buffer. + inline int GetBit() { + const size_t off = bit_offset_; + const size_t byte_offset = off >> 3; + const int bit_shift = static_cast(off & 0x7); + if (bit_buffer_ + byte_offset < bit_buffer_end_) { + const int bit = (bit_buffer_[byte_offset] >> bit_shift) & 1; + bit_offset_ = off + 1; + return bit; + } + return 0; + } + + inline int PeekBit(int offset) { + const size_t off = bit_offset_ + offset; + const size_t byte_offset = off >> 3; + const int bit_shift = static_cast(off & 0x7); + if (bit_buffer_ + byte_offset < bit_buffer_end_) { + const int bit = (bit_buffer_[byte_offset] >> bit_shift) & 1; + return bit; + } + return 0; + } + + const uint8_t *bit_buffer_; + const uint8_t *bit_buffer_end_; + size_t bit_offset_; + }; + friend class BufferBitCodingTest; + const char *data_; int64_t data_size_; @@ -114,6 +200,7 @@ class DecoderBuffer { int64_t pos_; BitDecoder bit_decoder_; bool bit_mode_; + uint16_t bitstream_version_; }; } // namespace draco diff --git a/core/divide.cc b/src/draco/core/divide.cc similarity index 99% rename from core/divide.cc rename to src/draco/core/divide.cc index ab996c02..6d2e5712 100644 --- a/core/divide.cc +++ b/src/draco/core/divide.cc @@ -14,7 +14,7 @@ // // This file is based off libvpx's divide.c. -#include "core/divide.h" +#include "draco/core/divide.h" namespace draco { diff --git a/core/divide.h b/src/draco/core/divide.h similarity index 93% rename from core/divide.h rename to src/draco/core/divide.h index 6dcb8c97..2217c861 100644 --- a/core/divide.h +++ b/src/draco/core/divide.h @@ -14,12 +14,12 @@ // #ifndef DRACO_CORE_DIVIDE_H_ #define DRACO_CORE_DIVIDE_H_ -// An implemntation of the divide by multiply alogrithm +// An implementation of the divide by multiply algorithm // https://gmplib.org/~tege/divcnst-pldi94.pdf // This file is based off libvpx's divide.h. +#include #include -#include namespace draco { diff --git a/core/draco_index_type.h b/src/draco/core/draco_index_type.h similarity index 98% rename from core/draco_index_type.h rename to src/draco/core/draco_index_type.h index 71f32c4a..6dcac1d3 100644 --- a/core/draco_index_type.h +++ b/src/draco/core/draco_index_type.h @@ -38,10 +38,10 @@ // FaceIndex face_index; // face_index = point_index; // Compile error! // -// One can stil cast one type to another explicitly by accessing the index +// One can still cast one type to another explicitly by accessing the index // value directly using the .value() method: // -// face_index = FaceIndex(point_index.value()); // Compiles ok. +// face_index = FaceIndex(point_index.value()); // Compiles OK. // // Strongly typed indices support most of the common binary and unary // operators and support for additional operators can be added if diff --git a/core/draco_index_type_vector.h b/src/draco/core/draco_index_type_vector.h similarity index 98% rename from core/draco_index_type_vector.h rename to src/draco/core/draco_index_type_vector.h index bb9321c2..0bd34b93 100644 --- a/core/draco_index_type_vector.h +++ b/src/draco/core/draco_index_type_vector.h @@ -18,7 +18,7 @@ #include #include -#include "core/draco_index_type.h" +#include "draco/core/draco_index_type.h" namespace draco { diff --git a/core/draco_test_base.h b/src/draco/core/draco_test_base.h similarity index 100% rename from core/draco_test_base.h rename to src/draco/core/draco_test_base.h diff --git a/core/draco_test_utils.cc b/src/draco/core/draco_test_utils.cc similarity index 90% rename from core/draco_test_utils.cc rename to src/draco/core/draco_test_utils.cc index 52b65035..a2310a6b 100644 --- a/core/draco_test_utils.cc +++ b/src/draco/core/draco_test_utils.cc @@ -12,11 +12,11 @@ // See the License for the specific language governing permissions and // limitations under the License. // -#include "core/draco_test_utils.h" +#include "draco/core/draco_test_utils.h" #include -#include "core/macros.h" +#include "draco/core/macros.h" #include "draco_test_base.h" namespace draco { @@ -31,9 +31,6 @@ std::string GetTestFileFullPath(const std::string &file_name) { bool GenerateGoldenFile(const std::string &golden_file_name, const void *data, int data_size) { - // TODO(ostava): This will work only when the test is executed locally - // from blaze-bin/ folder. We should look for ways how to - // make it work when it's run using the "blaze test" command. const std::string path = GetTestFileFullPath(golden_file_name); std::ofstream file(path, std::ios::binary); if (!file) diff --git a/core/draco_test_utils.h b/src/draco/core/draco_test_utils.h similarity index 97% rename from core/draco_test_utils.h rename to src/draco/core/draco_test_utils.h index 51f4c3ff..02f27706 100644 --- a/core/draco_test_utils.h +++ b/src/draco/core/draco_test_utils.h @@ -15,11 +15,10 @@ #ifndef DRACO_CORE_DRACO_TEST_UTILS_H_ #define DRACO_CORE_DRACO_TEST_UTILS_H_ -#include "core/draco_test_base.h" +#include "draco/core/draco_test_base.h" namespace draco { - // Returns the full path to a given test file. std::string GetTestFileFullPath(const std::string &file_name); diff --git a/core/draco_tests.cc b/src/draco/core/draco_tests.cc similarity index 72% rename from core/draco_tests.cc rename to src/draco/core/draco_tests.cc index 730ec201..fdaa14da 100644 --- a/core/draco_tests.cc +++ b/src/draco/core/draco_tests.cc @@ -1,4 +1,4 @@ -#include "core/draco_test_base.h" +#include "draco/core/draco_test_base.h" int main(int argc, char *argv[]) { ::testing::InitGoogleTest(&argc, argv); diff --git a/src/draco/core/draco_types.cc b/src/draco/core/draco_types.cc new file mode 100644 index 00000000..45b22470 --- /dev/null +++ b/src/draco/core/draco_types.cc @@ -0,0 +1,44 @@ +// Copyright 2016 The Draco Authors. +// +// Licensed under the Apache License, Version 2.0 (the "License"); +// you may not use this file except in compliance with the License. +// You may obtain a copy of the License at +// +// http://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an "AS IS" BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// See the License for the specific language governing permissions and +// limitations under the License. +// +#include "draco/core/draco_types.h" + +namespace draco { + +int32_t DataTypeLength(DataType dt) { + switch (dt) { + case DT_INT8: + case DT_UINT8: + return 1; + case DT_INT16: + case DT_UINT16: + return 2; + case DT_INT32: + case DT_UINT32: + return 4; + case DT_INT64: + case DT_UINT64: + return 8; + case DT_FLOAT32: + return 4; + case DT_FLOAT64: + return 8; + case DT_BOOL: + return 1; + default: + return -1; + } +} + +} // namespace draco diff --git a/core/draco_types.h b/src/draco/core/draco_types.h similarity index 89% rename from core/draco_types.h rename to src/draco/core/draco_types.h index 41913958..ca814a08 100644 --- a/core/draco_types.h +++ b/src/draco/core/draco_types.h @@ -38,8 +38,6 @@ enum DataType { }; int32_t DataTypeLength(DataType dt); -DataType GetDataTypeFromGLTypeName(const std::string &data_type_name); -std::string GetDataTypeGLName(DataType data_type); } // namespace draco diff --git a/core/draco_version.h b/src/draco/core/draco_version.h similarity index 94% rename from core/draco_version.h rename to src/draco/core/draco_version.h index fe8f8663..fe4b9f42 100644 --- a/core/draco_version.h +++ b/src/draco/core/draco_version.h @@ -18,7 +18,7 @@ namespace draco { // Draco version is comprised of ... -static const char kDracoVersion[] = "0.10.1"; +static const char kDracoVersion[] = "1.0.0"; const char *Version() { return kDracoVersion; } diff --git a/core/encoder_buffer.cc b/src/draco/core/encoder_buffer.cc similarity index 97% rename from core/encoder_buffer.cc rename to src/draco/core/encoder_buffer.cc index 8675a2e6..3b732afb 100644 --- a/core/encoder_buffer.cc +++ b/src/draco/core/encoder_buffer.cc @@ -12,9 +12,9 @@ // See the License for the specific language governing permissions and // limitations under the License. // -#include "core/encoder_buffer.h" +#include "draco/core/encoder_buffer.h" -#include +#include // for memcpy namespace draco { diff --git a/core/encoder_buffer.h b/src/draco/core/encoder_buffer.h similarity index 66% rename from core/encoder_buffer.h rename to src/draco/core/encoder_buffer.h index d7d487ac..6390e588 100644 --- a/core/encoder_buffer.h +++ b/src/draco/core/encoder_buffer.h @@ -18,7 +18,8 @@ #include #include -#include "core/bit_coder.h" +#include "draco/core/bit_utils.h" +#include "draco/core/macros.h" namespace draco { @@ -51,8 +52,6 @@ class EncoderBuffer { bit_encoder_->PutBits(value, nbits); return true; } - - public: // Encode an arbitrary data type. // Can be used only when we are not encoding a bit-sequence. // Returns false when the value couldn't be encoded. @@ -76,9 +75,55 @@ class EncoderBuffer { const char *data() const { return buffer_.data(); } size_t size() const { return buffer_.size(); } std::vector *buffer() { return &buffer_; } - BitEncoder *bit_encoder() { return bit_encoder_.get(); } private: + // Internal helper class to encode bits to a bit buffer. + class BitEncoder { + public: + // |data| is the buffer to write the bits into. + explicit BitEncoder(char *data) : bit_buffer_(data), bit_offset_(0) {} + + // Write |nbits| of |data| into the bit buffer. + void PutBits(uint32_t data, int32_t nbits) { + DCHECK_GE(nbits, 0); + DCHECK_LE(nbits, 32); + for (int32_t bit = 0; bit < nbits; ++bit) + PutBit((data >> bit) & 1); + } + + // Return number of bits encoded so far. + uint64_t Bits() const { return static_cast(bit_offset_); } + + // TODO(fgalligan): Remove this function once we know we do not need the + // old API anymore. + // This is a function of an old API, that currently does nothing. + void Flush(int /* left_over_bit_value */) {} + + // Return the number of bits required to store the given number + static uint32_t BitsRequired(uint32_t x) { + return static_cast(bits::MostSignificantBit(x)); + } + + private: + void PutBit(uint8_t value) { + const int byte_size = 8; + const uint64_t off = static_cast(bit_offset_); + const uint64_t byte_offset = off / byte_size; + const int bit_shift = off % byte_size; + + // TODO(fgalligan): Check performance if we add a branch and only do one + // memory write if bit_shift is 7. Also try using a temporary variable to + // hold the bits before writing to the buffer. + + bit_buffer_[byte_offset] &= ~(1 << bit_shift); + bit_buffer_[byte_offset] |= value << bit_shift; + bit_offset_++; + } + + char *bit_buffer_; + size_t bit_offset_; + }; + friend class BufferBitCodingTest; // All data is stored in this vector. std::vector buffer_; diff --git a/core/hash_utils.cc b/src/draco/core/hash_utils.cc similarity index 98% rename from core/hash_utils.cc rename to src/draco/core/hash_utils.cc index 6f2b691c..faa0cbde 100644 --- a/core/hash_utils.cc +++ b/src/draco/core/hash_utils.cc @@ -12,7 +12,7 @@ // See the License for the specific language governing permissions and // limitations under the License. // -#include "core/hash_utils.h" +#include "draco/core/hash_utils.h" #include #include diff --git a/core/hash_utils.h b/src/draco/core/hash_utils.h similarity index 98% rename from core/hash_utils.h rename to src/draco/core/hash_utils.h index 3d7ad50f..0e8da60a 100644 --- a/core/hash_utils.h +++ b/src/draco/core/hash_utils.h @@ -15,7 +15,7 @@ #ifndef DRACO_CORE_HASH_UTILS_H_ #define DRACO_CORE_HASH_UTILS_H_ -#include +#include #include // TODO(fgalligan): Move this to core. diff --git a/core/macros.h b/src/draco/core/macros.h similarity index 73% rename from core/macros.h rename to src/draco/core/macros.h index 6d6c31f1..01c2989f 100644 --- a/core/macros.h +++ b/src/draco/core/macros.h @@ -66,5 +66,22 @@ namespace draco { } // namespace draco +// Helper macros for concatenating macro values. +#define DRACO_MACROS_IMPL_CONCAT_INNER_(x, y) x##y +#define DRACO_MACROS_IMPL_CONCAT_(x, y) DRACO_MACROS_IMPL_CONCAT_INNER_(x, y) + +// Expand the n-th argument of the macro. Used to select an argument based on +// the number of entries in a variadic macro argument. Example usage: +// +// #define FUNC_1(x) x +// #define FUNC_2(x, y) x + y +// #define FUNC_3(x, y, z) x + y + z +// +// #define VARIADIC_MACRO(...) \ +// DRACO_SELECT_NTH_FROM_3(__VA_ARGS__, FUNC_3, FUNC_2, FUNC_1) __VA_ARGS__ +// +#define DRACO_SELECT_NTH_FROM_2(_1, _2, NAME) NAME +#define DRACO_SELECT_NTH_FROM_3(_1, _2, _3, NAME) NAME +#define DRACO_SELECT_NTH_FROM_4(_1, _2, _3, _4, NAME) NAME #endif // DRACO_CORE_MACROS_H_ diff --git a/src/draco/core/math_utils.h b/src/draco/core/math_utils.h new file mode 100644 index 00000000..6bf237d4 --- /dev/null +++ b/src/draco/core/math_utils.h @@ -0,0 +1,52 @@ +// Copyright 2016 The Draco Authors. +// +// Licensed under the Apache License, Version 2.0 (the "License"); +// you may not use this file except in compliance with the License. +// You may obtain a copy of the License at +// +// http://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an "AS IS" BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// See the License for the specific language governing permissions and +// limitations under the License. +// +#ifndef DRACO_CORE_MATH_UTILS_H_ +#define DRACO_CORE_MATH_UTILS_H_ + +#include + +#define DRACO_INCREMENT_MOD(I, M) (((I) == ((M)-1)) ? 0 : ((I) + 1)) + +// Returns floor(sqrt(x)) where x is an integer number. The main intend of this +// function is to provide a cross platform and deterministic implementation of +// square root for integer numbers. This function is not intended to be a +// replacement for std::sqrt() for general cases. IntSqrt is in fact about 3X +// slower compared to most implementation of std::sqrt(). +inline uint64_t IntSqrt(uint64_t number) { + if (number == 0) + return 0; + // First estimate good initial value of the square root as log2(number). + uint64_t act_number = number; + uint64_t square_root = 1; + while (act_number >= 2) { + // Double the square root until |square_root * square_root > number|. + square_root *= 2; + act_number /= 4; + } + // Perform Newton's (or Babylonian) method to find the true floor(sqrt()). + do { + // New |square_root| estimate is computed as the average between + // |square_root| and |number / square_root|. + square_root = (square_root + number / square_root) / 2; + + // Note that after the first iteration, the estimate is always going to be + // larger or equal to the true square root value. Therefore to check + // convergence, we can simply detect condition when the square of the + // estimated square root is larger than the input. + } while (square_root * square_root > number); + return square_root; +} + +#endif // DRACO_CORE_MATH_UTILS_H_ diff --git a/src/draco/core/math_utils_test.cc b/src/draco/core/math_utils_test.cc new file mode 100644 index 00000000..b12b3431 --- /dev/null +++ b/src/draco/core/math_utils_test.cc @@ -0,0 +1,19 @@ +#include "draco/core/math_utils.h" + +#include + +#include "draco/core/draco_test_base.h" + +TEST(MathUtils, Mod) { EXPECT_EQ(DRACO_INCREMENT_MOD(1, 1 << 1), 0); } + +TEST(MathUtils, IntSqrt) { + ASSERT_EQ(IntSqrt(0), 0); + // 64-bit pseudo random number generator seeded with a predefined number. + std::mt19937_64 generator(109); + std::uniform_int_distribution distribution(0, 1ull << 60); + + for (int i = 0; i < 10000; ++i) { + const uint64_t number = distribution(generator); + ASSERT_EQ(IntSqrt(number), static_cast(floor(std::sqrt(number)))); + } +} diff --git a/core/options.cc b/src/draco/core/options.cc similarity index 98% rename from core/options.cc rename to src/draco/core/options.cc index e06a12b1..89d50060 100644 --- a/core/options.cc +++ b/src/draco/core/options.cc @@ -12,7 +12,7 @@ // See the License for the specific language governing permissions and // limitations under the License. // -#include "core/options.h" +#include "draco/core/options.h" #include #include diff --git a/core/options.h b/src/draco/core/options.h similarity index 100% rename from core/options.h rename to src/draco/core/options.h diff --git a/core/quantization_utils.cc b/src/draco/core/quantization_utils.cc similarity index 96% rename from core/quantization_utils.cc rename to src/draco/core/quantization_utils.cc index 890c47ce..0c00cd63 100644 --- a/core/quantization_utils.cc +++ b/src/draco/core/quantization_utils.cc @@ -12,7 +12,7 @@ // See the License for the specific language governing permissions and // limitations under the License. // -#include "core/quantization_utils.h" +#include "draco/core/quantization_utils.h" namespace draco { diff --git a/core/quantization_utils.h b/src/draco/core/quantization_utils.h similarity index 98% rename from core/quantization_utils.h rename to src/draco/core/quantization_utils.h index 323d9015..044a462d 100644 --- a/core/quantization_utils.h +++ b/src/draco/core/quantization_utils.h @@ -21,10 +21,10 @@ #ifndef DRACO_CORE_QUANTIZATION_UTILS_H_ #define DRACO_CORE_QUANTIZATION_UTILS_H_ +#include #include -#include -#include "core/macros.h" +#include "draco/core/macros.h" namespace draco { diff --git a/core/quantization_utils_test.cc b/src/draco/core/quantization_utils_test.cc similarity index 95% rename from core/quantization_utils_test.cc rename to src/draco/core/quantization_utils_test.cc index 0d04182b..d0818c85 100644 --- a/core/quantization_utils_test.cc +++ b/src/draco/core/quantization_utils_test.cc @@ -12,9 +12,9 @@ // See the License for the specific language governing permissions and // limitations under the License. // -#include "core/quantization_utils.h" +#include "draco/core/quantization_utils.h" -#include "core/draco_test_base.h" +#include "draco/core/draco_test_base.h" namespace draco { diff --git a/core/rans_symbol_coding.h b/src/draco/core/rans_symbol_coding.h similarity index 94% rename from core/rans_symbol_coding.h rename to src/draco/core/rans_symbol_coding.h index fe640419..899216a2 100644 --- a/core/rans_symbol_coding.h +++ b/src/draco/core/rans_symbol_coding.h @@ -12,12 +12,12 @@ // See the License for the specific language governing permissions and // limitations under the License. // -// File providing shared funcionality for RAnsSymbolEncoder and +// File providing shared functionality for RAnsSymbolEncoder and // RAnsSymbolDecoder (see rans_symbol_encoder.h / rans_symbol_decoder.h). #ifndef DRACO_CORE_RANS_SYMBOL_CODING_H_ #define DRACO_CORE_RANS_SYMBOL_CODING_H_ -#include "core/ans.h" +#include "draco/core/ans.h" namespace draco { @@ -27,7 +27,7 @@ constexpr int ComputeRAnsUnclampedPrecision(int max_bit_length) { return (3 * max_bit_length) / 2; } -// Computes the desired precision clamped to guarantee a valid funcionality of +// Computes the desired precision clamped to guarantee a valid functionality of // our rANS library (which is between 12 to 20 bits). constexpr int ComputeRAnsPrecisionFromMaxSymbolBitLength(int max_bit_length) { return ComputeRAnsUnclampedPrecision(max_bit_length) < 12 diff --git a/core/rans_symbol_decoder.h b/src/draco/core/rans_symbol_decoder.h similarity index 86% rename from core/rans_symbol_decoder.h rename to src/draco/core/rans_symbol_decoder.h index f713371e..23afc0a3 100644 --- a/core/rans_symbol_decoder.h +++ b/src/draco/core/rans_symbol_decoder.h @@ -15,8 +15,10 @@ #ifndef DRACO_CORE_RANS_SYMBOL_DECODER_H_ #define DRACO_CORE_RANS_SYMBOL_DECODER_H_ -#include "core/decoder_buffer.h" -#include "core/rans_symbol_coding.h" +#include "draco/compression/config/compression_shared.h" +#include "draco/core/decoder_buffer.h" +#include "draco/core/rans_symbol_coding.h" +#include "draco/core/varint_decoding.h" namespace draco { @@ -53,9 +55,17 @@ class RAnsSymbolDecoder { template bool RAnsSymbolDecoder::Create(DecoderBuffer *buffer) { - // Decode the number of alphabet symbols. - if (!buffer->Decode(&num_symbols_)) + // Check that the DecoderBuffer version is set. + if (buffer->bitstream_version() == 0) return false; + // Decode the number of alphabet symbols. + if (buffer->bitstream_version() < DRACO_BITSTREAM_VERSION(2, 0)) { + if (!buffer->Decode(&num_symbols_)) + return false; + } else { + if (!DecodeVarint(&num_symbols_, buffer)) + return false; + } probability_table_.resize(num_symbols_); if (num_symbols_ == 0) return true; @@ -104,8 +114,13 @@ bool RAnsSymbolDecoder::StartDecoding( DecoderBuffer *buffer) { uint64_t bytes_encoded; // Decode the number of bytes encoded by the encoder. - if (!buffer->Decode(&bytes_encoded)) - return false; + if (buffer->bitstream_version() < DRACO_BITSTREAM_VERSION(2, 0)) { + if (!buffer->Decode(&bytes_encoded)) + return false; + } else { + if (!DecodeVarint(&bytes_encoded, buffer)) + return false; + } if (bytes_encoded > buffer->remaining_size()) return false; const uint8_t *const data_head = diff --git a/core/rans_symbol_encoder.h b/src/draco/core/rans_symbol_encoder.h similarity index 92% rename from core/rans_symbol_encoder.h rename to src/draco/core/rans_symbol_encoder.h index fdc62654..f67fa030 100644 --- a/core/rans_symbol_encoder.h +++ b/src/draco/core/rans_symbol_encoder.h @@ -19,9 +19,10 @@ #include #include -#include "core/ans.h" -#include "core/encoder_buffer.h" -#include "core/rans_symbol_coding.h" +#include "draco/core/ans.h" +#include "draco/core/encoder_buffer.h" +#include "draco/core/rans_symbol_coding.h" +#include "draco/core/varint_encoding.h" namespace draco { @@ -196,7 +197,7 @@ bool RAnsSymbolEncoder::Create( template bool RAnsSymbolEncoder::EncodeTable( EncoderBuffer *buffer) { - buffer->Encode(num_symbols_); + EncodeVarint(num_symbols_, buffer); // Use varint encoding for the probabilities (first two bits represent the // number of bytes used - 1). for (uint32_t i = 0; i < num_symbols_; ++i) { @@ -252,20 +253,28 @@ void RAnsSymbolEncoder::StartEncoding( buffer->Resize(buffer_offset_ + required_bytes + sizeof(buffer_offset_)); uint8_t *const data = reinterpret_cast(const_cast(buffer->data())); - // Offset the encoding by sizeof(buffer_offset_). We will use this memory to - // store the number of encoded bytes. - ans_.write_init(data + buffer_offset_ + sizeof(buffer_offset_)); + ans_.write_init(data + buffer_offset_); } template void RAnsSymbolEncoder::EndEncoding( EncoderBuffer *buffer) { - const int64_t bytes_written = ans_.write_end(); + char *const src = const_cast(buffer->data()) + buffer_offset_; + + // TODO(fgalligan): Look into changing this to uint32_t as write_end() + // returns an int. + const uint64_t bytes_written = static_cast(ans_.write_end()); + EncoderBuffer var_size_buffer; + EncodeVarint(bytes_written, &var_size_buffer); + const uint32_t size_len = var_size_buffer.size(); + char *const dst = src + size_len; + memmove(dst, src, bytes_written); + // Store the size of the encoded data. - memcpy(const_cast(buffer->data()) + buffer_offset_, &bytes_written, - sizeof(bytes_written)); + memcpy(src, var_size_buffer.data(), size_len); + // Resize the buffer to match the number of encoded bytes. - buffer->Resize(buffer_offset_ + bytes_written + sizeof(buffer_offset_)); + buffer->Resize(buffer_offset_ + bytes_written + size_len); } } // namespace draco diff --git a/core/shannon_entropy.cc b/src/draco/core/shannon_entropy.cc similarity index 88% rename from core/shannon_entropy.cc rename to src/draco/core/shannon_entropy.cc index 6da7b7dd..29a30823 100644 --- a/core/shannon_entropy.cc +++ b/src/draco/core/shannon_entropy.cc @@ -1,4 +1,4 @@ -#include "core/shannon_entropy.h" +#include "draco/core/shannon_entropy.h" #include #include @@ -21,7 +21,7 @@ int64_t ComputeShannonEntropy(const uint32_t *symbols, int num_symbols, // Compute Shannon entropy for the symbol. total_bits += symbol_frequencies[i] * - log2(static_cast(symbol_frequencies[i]) / num_symbols_d); + std::log2(static_cast(symbol_frequencies[i]) / num_symbols_d); } } if (out_num_unique_symbols) diff --git a/core/shannon_entropy.h b/src/draco/core/shannon_entropy.h similarity index 100% rename from core/shannon_entropy.h rename to src/draco/core/shannon_entropy.h diff --git a/src/draco/core/status.h b/src/draco/core/status.h new file mode 100644 index 00000000..0d3a0223 --- /dev/null +++ b/src/draco/core/status.h @@ -0,0 +1,75 @@ +// Copyright 2017 The Draco Authors. +// +// Licensed under the Apache License, Version 2.0 (the "License"); +// you may not use this file except in compliance with the License. +// You may obtain a copy of the License at +// +// http://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an "AS IS" BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// See the License for the specific language governing permissions and +// limitations under the License. +// +#ifndef DRACO_CORE_STATUS_H_ +#define DRACO_CORE_STATUS_H_ + +#include + +namespace draco { + +// Class encapsulating a return status of an operation with an optional error +// message. Intended to be used as a return type for functions instead of bool. +class Status { + public: + enum Code { + OK = 0, + ERROR = -1, // Used for general errors. + IO_ERROR = -2, // Error when handling input or output stream. + INVALID_PARAMETER = -3, // Invalid parameter passed to a function. + UNSUPPORTED_VERSION = -4, // Input not compatible with the current version. + UNKNOWN_VERSION = -5, // Input was created with an unknown version of + // the library. + }; + + Status() : code_(OK) {} + Status(const Status &status) = default; + Status(Status &&status) = default; + Status(Code code) : code_(code) {} + Status(Code code, const std::string &error_msg) + : code_(code), error_msg_(error_msg) {} + + Code code() const { return code_; } + const std::string &error_msg_string() const { return error_msg_; } + const char *error_msg() const { return error_msg_.c_str(); } + + bool operator==(Code code) const { return code == code_; } + bool ok() const { return code_ == OK; } + + Status &operator=(const Status &) = default; + + private: + Code code_; + std::string error_msg_; +}; + +inline std::ostream &operator<<(std::ostream &os, const Status &status) { + os << status.error_msg_string(); + return os; +} + +inline Status OkStatus() { return Status(Status::OK); } + +// Evaluates an expression that returns draco::Status. If the status is not OK, +// the macro returns the status object. +#define DRACO_RETURN_IF_ERROR(expression) \ + { \ + const draco::Status _local_status = (expression); \ + if (!_local_status.ok()) \ + return _local_status; \ + } + +} // namespace draco + +#endif // DRACO_CORE_STATUS_H_ diff --git a/src/draco/core/status_test.cc b/src/draco/core/status_test.cc new file mode 100644 index 00000000..451ebe2b --- /dev/null +++ b/src/draco/core/status_test.cc @@ -0,0 +1,38 @@ +// Copyright 2017 The Draco Authors. +// +// Licensed under the Apache License, Version 2.0 (the "License"); +// you may not use this file except in compliance with the License. +// You may obtain a copy of the License at +// +// http://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an "AS IS" BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// See the License for the specific language governing permissions and +// limitations under the License. +// +#include "draco/core/status.h" + +#include + +#include "draco/core/draco_test_base.h" + +namespace { + +class StatusTest : public ::testing::Test { + protected: + StatusTest() {} +}; + +TEST_F(StatusTest, TestStatusOutput) { + // Tests that the Status can be stored in a provided std::ostream. + const draco::Status status(draco::Status::ERROR, "Error msg."); + ASSERT_EQ(status.code(), draco::Status::ERROR); + + std::stringstream str; + str << status; + ASSERT_EQ(str.str(), "Error msg."); +} + +} // namespace diff --git a/src/draco/core/statusor.h b/src/draco/core/statusor.h new file mode 100644 index 00000000..3ec540bb --- /dev/null +++ b/src/draco/core/statusor.h @@ -0,0 +1,90 @@ +// Copyright 2017 The Draco Authors. +// +// Licensed under the Apache License, Version 2.0 (the "License"); +// you may not use this file except in compliance with the License. +// You may obtain a copy of the License at +// +// http://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an "AS IS" BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// See the License for the specific language governing permissions and +// limitations under the License. +// +#ifndef DRACO_CORE_STATUSOR_H_ +#define DRACO_CORE_STATUSOR_H_ + +#include "draco/core/macros.h" +#include "draco/core/status.h" + +namespace draco { + +// Class StatusOr is used to wrap a Status along with a value of a specified +// type |T|. StatusOr is intended to be returned from functions in situations +// where it is desirable to carry over more information about the potential +// errors encountered during the function execution. If there are not errors, +// the caller can simply use the return value, otherwise the Status object +// provides more info about the encountered problem. +template +class StatusOr { + public: + StatusOr() {} + // Note: Constructors are intentionally not explicit to allow returning + // Status or the return value directly from functions. + StatusOr(const StatusOr &) = default; + StatusOr(StatusOr &&) = default; + StatusOr(const Status &status) : status_(status) {} + StatusOr(const T &value) : status_(OkStatus()), value_(value) {} + StatusOr(T &&value) : status_(OkStatus()), value_(std::move(value)) {} + StatusOr(const Status &status, const T &value) + : status_(status), value_(value) {} + + const Status &status() const { return status_; } + const T &value() const & { return value_; } + const T &&value() const && { return std::move(value_); } + T &&value() && { return std::move(value_); } + + // For consistency with existing Google StatusOr API we also include + // ValueOrDie() that currently returns the value(). + const T &ValueOrDie() const & { return value(); } + T &&ValueOrDie() && { return std::move(value()); } + + bool ok() const { return status_.ok(); } + + private: + Status status_; + T value_; +}; + +// In case StatusOr is ok(), this macro assigns value stored in StatusOr +// to |lhs|, otherwise it returns the error Status. |error_expression| can be +// used to provide custom return expressions. +// +// DRACO_ASSIGN_OR_RETURN(lhs, expression) +// DRACO_ASSIGN_OR_RETURN(lhs, expression, error_expression); +// +#define DRACO_ASSIGN_OR_RETURN(...) \ + DRACO_SELECT_NTH_FROM_3(__VA_ARGS__, DRACO_ASSIGN_OR_RETURN_3_, \ + DRACO_ASSIGN_OR_RETURN_2_) \ + (__VA_ARGS__) +#define DRACO_ASSIGN_OR_RETURN_2_(lhs, expression) \ + DRACO_ASSIGN_OR_RETURN_3_(lhs, expression, _status) + +#define DRACO_ASSIGN_OR_RETURN_3_(lhs, expression, error_expression) \ + DRACO_ASSIGN_OR_RETURN_IMPL_(DRACO_MACROS_IMPL_CONCAT_(_statusor, __LINE__), \ + lhs, expression, error_expression) + +// The actual implementation of the above macro. +#define DRACO_ASSIGN_OR_RETURN_IMPL_(statusor, lhs, expression, error_expr) \ + auto statusor = (expression); \ + if (!statusor.ok()) { \ + auto _status = std::move(statusor.status()); \ + (void)_status; /* error_expression may not use it */ \ + return error_expr; \ + } \ + lhs = std::move(statusor).value(); + +} // namespace draco + +#endif // DRACO_CORE_STATUSOR_H_ diff --git a/core/symbol_coding_test.cc b/src/draco/core/symbol_coding_test.cc similarity index 87% rename from core/symbol_coding_test.cc rename to src/draco/core/symbol_coding_test.cc index eb2d0980..c914d6ae 100644 --- a/core/symbol_coding_test.cc +++ b/src/draco/core/symbol_coding_test.cc @@ -12,17 +12,19 @@ // See the License for the specific language governing permissions and // limitations under the License. // -#include "core/decoder_buffer.h" -#include "core/draco_test_base.h" -#include "core/encoder_buffer.h" -#include "core/symbol_decoding.h" -#include "core/symbol_encoding.h" +#include "draco/compression/config/compression_shared.h" +#include "draco/core/decoder_buffer.h" +#include "draco/core/draco_test_base.h" +#include "draco/core/encoder_buffer.h" +#include "draco/core/symbol_coding_utils.h" +#include "draco/core/symbol_decoding.h" +#include "draco/core/symbol_encoding.h" namespace draco { class SymbolCodingTest : public ::testing::Test { protected: - SymbolCodingTest() {} + SymbolCodingTest() : bitstream_version_(kDracoBitstreamVersion) {} template void TestConvertToSymbolAndBack(SignedIntTypeT x) { @@ -31,6 +33,8 @@ class SymbolCodingTest : public ::testing::Test { SignedIntTypeT y = ConvertSymbolToSignedInt(symbol); ASSERT_EQ(x, y); } + + uint16_t bitstream_version_; }; TEST_F(SymbolCodingTest, TestLargeNumbers) { @@ -45,6 +49,7 @@ TEST_F(SymbolCodingTest, TestLargeNumbers) { out.resize(num_values); DecoderBuffer db; db.Init(eb.data(), eb.size()); + db.set_bitstream_version(bitstream_version_); ASSERT_TRUE(DecodeSymbols(num_values, 1, &db, &out[0])); for (int i = 0; i < num_values; ++i) { EXPECT_EQ(in[i], out[i]); @@ -71,6 +76,7 @@ TEST_F(SymbolCodingTest, TestManyNumbers) { out_values.resize(in_values.size()); DecoderBuffer db; db.Init(eb.data(), eb.size()); + db.set_bitstream_version(bitstream_version_); ASSERT_TRUE(DecodeSymbols(in_values.size(), 1, &db, &out_values[0])); for (uint32_t i = 0; i < in_values.size(); ++i) { ASSERT_EQ(in_values[i], out_values[i]); @@ -83,6 +89,7 @@ TEST_F(SymbolCodingTest, TestEmpty) { ASSERT_TRUE(EncodeSymbols(nullptr, 0, 1, &eb)); DecoderBuffer db; db.Init(eb.data(), eb.size()); + db.set_bitstream_version(bitstream_version_); ASSERT_TRUE(DecodeSymbols(0, 1, &db, nullptr)); } @@ -96,6 +103,7 @@ TEST_F(SymbolCodingTest, TestOneSymbol) { std::vector out(in.size()); DecoderBuffer db; db.Init(eb.data(), eb.size()); + db.set_bitstream_version(bitstream_version_); ASSERT_TRUE(DecodeSymbols(in.size(), 1, &db, &out[0])); for (uint32_t i = 0; i < in.size(); ++i) { ASSERT_EQ(in[i], out[i]); @@ -104,7 +112,7 @@ TEST_F(SymbolCodingTest, TestOneSymbol) { TEST_F(SymbolCodingTest, TestBitLengths) { // This test verifies that SymbolCoding successfully encodes symbols of - // various bitlengths + // various bit lengths EncoderBuffer eb; std::vector in; constexpr int bit_lengths = 18; @@ -117,6 +125,7 @@ TEST_F(SymbolCodingTest, TestBitLengths) { ASSERT_TRUE(EncodeSymbols(in.data(), i + 1, 1, &eb)); DecoderBuffer db; db.Init(eb.data(), eb.size()); + db.set_bitstream_version(bitstream_version_); ASSERT_TRUE(DecodeSymbols(i + 1, 1, &db, &out[0])); for (int j = 0; j < i + 1; ++j) { ASSERT_EQ(in[j], out[j]); @@ -135,6 +144,7 @@ TEST_F(SymbolCodingTest, TestLargeNumberCondition) { std::vector out(in.size()); DecoderBuffer db; db.Init(eb.data(), eb.size()); + db.set_bitstream_version(bitstream_version_); ASSERT_TRUE(DecodeSymbols(in.size(), 1, &db, &out[0])); for (uint32_t i = 0; i < in.size(); ++i) { ASSERT_EQ(in[i], out[i]); diff --git a/src/draco/core/symbol_coding_utils.cc b/src/draco/core/symbol_coding_utils.cc new file mode 100644 index 00000000..1620c627 --- /dev/null +++ b/src/draco/core/symbol_coding_utils.cc @@ -0,0 +1,36 @@ +// Copyright 2017 The Draco Authors. +// +// Licensed under the Apache License, Version 2.0 (the "License"); +// you may not use this file except in compliance with the License. +// You may obtain a copy of the License at +// +// http://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an "AS IS" BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// See the License for the specific language governing permissions and +// limitations under the License. +// +#include "draco/core/symbol_coding_utils.h" + +namespace draco { + +void ConvertSignedIntsToSymbols(const int32_t *in, int in_values, + uint32_t *out) { + // Convert the quantized values into a format more suitable for entropy + // encoding. + // Put the sign bit into LSB pos and shift the rest one bit left. + for (int i = 0; i < in_values; ++i) { + out[i] = ConvertSignedIntToSymbol(in[i]); + } +} + +void ConvertSymbolsToSignedInts(const uint32_t *in, int in_values, + int32_t *out) { + for (int i = 0; i < in_values; ++i) { + out[i] = ConvertSymbolToSignedInt(in[i]); + } +} + +} // namespace draco diff --git a/core/symbol_encoding.h b/src/draco/core/symbol_coding_utils.h similarity index 59% rename from core/symbol_encoding.h rename to src/draco/core/symbol_coding_utils.h index b246076e..9a951695 100644 --- a/core/symbol_encoding.h +++ b/src/draco/core/symbol_coding_utils.h @@ -1,4 +1,4 @@ -// Copyright 2016 The Draco Authors. +// Copyright 2017 The Draco Authors. // // Licensed under the Apache License, Version 2.0 (the "License"); // you may not use this file except in compliance with the License. @@ -12,12 +12,13 @@ // See the License for the specific language governing permissions and // limitations under the License. // -#ifndef DRACO_CORE_SYMBOL_ENCODING_H_ -#define DRACO_CORE_SYMBOL_ENCODING_H_ +#ifndef DRACO_CORE_SYMBOL_CODING_UTILS_H_ +#define DRACO_CORE_SYMBOL_CODING_UTILS_H_ #include -#include "core/encoder_buffer.h" +#include "draco/core/decoder_buffer.h" +#include "draco/core/encoder_buffer.h" namespace draco { @@ -26,6 +27,11 @@ namespace draco { void ConvertSignedIntsToSymbols(const int32_t *in, int in_values, uint32_t *out); +// Converts unsigned integer symbols encoded with an entropy encoder back to +// signed values. +void ConvertSymbolsToSignedInts(const uint32_t *in, int in_values, + int32_t *out); + // Helper function that converts a single signed integer value into an unsigned // integer symbol that can be encoded using an entropy encoder. template @@ -44,15 +50,23 @@ typename std::make_unsigned::type ConvertSignedIntToSymbol( return ret; } -// Encodes an array of symbols using an entropy coding. This function -// automatically decides whether to encode the symbol values using using bit -// length tags (see EncodeTaggedSymbols), or whether to encode them directly -// (see EncodeRawSymbols). The symbols can be grouped into separate components -// that can be used for better compression. -// Returns false on error. -bool EncodeSymbols(const uint32_t *symbols, int num_values, int num_components, - EncoderBuffer *target_buffer); +// Converts a single unsigned integer symbol encoded with an entropy encoder +// back to a signed value. +template +typename std::make_signed::type ConvertSymbolToSignedInt( + IntTypeT val) { + static_assert(std::is_integral::value, "IntTypeT is not integral."); + typedef typename std::make_signed::type SignedType; + const bool is_positive = !static_cast(val & 1); + val >>= 1; + if (is_positive) { + return static_cast(val); + } + SignedType ret = static_cast(val); + ret = -ret - 1; + return ret; +} } // namespace draco -#endif // DRACO_CORE_SYMBOL_ENCODING_H_ +#endif // DRACO_CORE_SYMBOL_CODING_UTILS_H_ diff --git a/core/symbol_decoding.cc b/src/draco/core/symbol_decoding.cc similarity index 95% rename from core/symbol_decoding.cc rename to src/draco/core/symbol_decoding.cc index fed2d938..ff2f0a04 100644 --- a/core/symbol_decoding.cc +++ b/src/draco/core/symbol_decoding.cc @@ -12,23 +12,15 @@ // See the License for the specific language governing permissions and // limitations under the License. // -#include "core/symbol_decoding.h" +#include "draco/core/symbol_decoding.h" #include #include -#include "core/bit_coder.h" -#include "core/rans_symbol_decoder.h" +#include "draco/core/rans_symbol_decoder.h" namespace draco { -void ConvertSymbolsToSignedInts(const uint32_t *in, int in_values, - int32_t *out) { - for (int i = 0; i < in_values; ++i) { - out[i] = ConvertSymbolToSignedInt(in[i]); - } -} - template